summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--CONTRIBUTING.md10
-rw-r--r--backend.php15
-rwxr-xr-xclasses/api.php240
-rwxr-xr-xclasses/article.php97
-rw-r--r--classes/auth/base.php22
-rw-r--r--classes/config.php336
-rw-r--r--classes/counters.php52
-rwxr-xr-xclasses/db.php13
-rw-r--r--classes/db/migrations.php44
-rw-r--r--classes/db/prefs.php10
-rw-r--r--classes/debug.php88
-rw-r--r--classes/digest.php7
-rw-r--r--classes/diskcache.php97
-rw-r--r--classes/errors.php29
-rw-r--r--classes/feedenclosure.php11
-rw-r--r--classes/feeditem.php30
-rwxr-xr-xclasses/feeditem/atom.php57
-rwxr-xr-xclasses/feeditem/common.php50
-rwxr-xr-xclasses/feeditem/rss.php41
-rw-r--r--classes/feedparser.php81
-rwxr-xr-xclasses/feeds.php444
-rw-r--r--classes/handler.php22
-rw-r--r--classes/handler/administrative.php4
-rw-r--r--classes/handler/protected.php2
-rwxr-xr-xclasses/handler/public.php75
-rw-r--r--classes/iauthmodule.php17
-rw-r--r--classes/ihandler.php6
-rw-r--r--classes/ivirtualfeed.php11
-rw-r--r--classes/labels.php41
-rwxr-xr-xclasses/logger.php13
-rw-r--r--classes/logger/adapter.php4
-rwxr-xr-xclasses/logger/sql.php4
-rw-r--r--classes/logger/stdout.php3
-rw-r--r--classes/logger/syslog.php3
-rw-r--r--classes/mailer.php18
-rw-r--r--classes/opml.php354
-rw-r--r--classes/plugin.php636
-rw-r--r--classes/pluginhandler.php4
-rwxr-xr-xclasses/pluginhost.php524
-rwxr-xr-xclasses/pref/feeds.php607
-rwxr-xr-xclasses/pref/filters.php132
-rw-r--r--classes/pref/labels.php25
-rw-r--r--classes/pref/prefs.php257
-rw-r--r--classes/pref/system.php23
-rw-r--r--classes/pref/users.php18
-rw-r--r--classes/prefs.php54
-rwxr-xr-xclasses/rpc.php104
-rwxr-xr-xclasses/rssutils.php196
-rw-r--r--classes/sanitizer.php26
-rw-r--r--classes/timehelper.php8
-rw-r--r--classes/urlhelper.php128
-rw-r--r--classes/userhelper.php57
-rw-r--r--composer.json4
-rw-r--r--composer.lock2233
-rw-r--r--include/colors.php204
-rwxr-xr-xinclude/controls.php70
-rw-r--r--include/controls_compat.php23
-rw-r--r--include/errorhandler.php13
-rw-r--r--include/functions.php178
-rw-r--r--include/sessions.php36
-rw-r--r--index.php142
-rw-r--r--js/App.js110
-rw-r--r--js/CommonDialogs.js30
-rw-r--r--js/CommonFilters.js5
-rwxr-xr-xjs/FeedTree.js9
-rw-r--r--js/Feeds.js19
-rwxr-xr-xjs/Headlines.js152
-rw-r--r--js/PluginHost.js12
-rw-r--r--js/PrefHelpers.js9
-rw-r--r--js/PrefUsers.js2
-rwxr-xr-xjs/common.js3
-rwxr-xr-xjs/form/Select.js64
-rw-r--r--lib/dijit/LICENSE2
-rw-r--r--lib/dijit/README.md6
-rw-r--r--lib/dijit/Tree.js2
-rw-r--r--lib/dijit/_editor/nls/FontChoice.js2
-rw-r--r--lib/dijit/_editor/nls/LinkDialog.js2
-rw-r--r--lib/dijit/_editor/nls/al/FontChoice.js2
-rw-r--r--lib/dijit/_editor/nls/al/LinkDialog.js2
-rw-r--r--lib/dijit/_editor/nls/al/commands.js2
-rw-r--r--lib/dijit/_editor/nls/commands.js2
-rw-r--r--lib/dijit/_editor/nls/it/FontChoice.js2
-rw-r--r--lib/dijit/_editor/nls/it/LinkDialog.js2
-rw-r--r--lib/dijit/_editor/nls/it/commands.js2
-rw-r--r--lib/dijit/_editor/plugins/LinkDialog.js2
-rw-r--r--lib/dijit/_editor/plugins/ViewSource.js2
-rw-r--r--lib/dijit/bower.json2
-rw-r--r--lib/dijit/form/_SearchMixin.js2
-rw-r--r--lib/dijit/form/nls/ComboBox.js2
-rw-r--r--lib/dijit/form/nls/Textarea.js2
-rw-r--r--lib/dijit/form/nls/al/ComboBox.js2
-rw-r--r--lib/dijit/form/nls/al/Textarea.js2
-rw-r--r--lib/dijit/form/nls/al/validate.js2
-rw-r--r--lib/dijit/form/nls/it/ComboBox.js2
-rw-r--r--lib/dijit/form/nls/it/Textarea.js2
-rw-r--r--lib/dijit/form/nls/it/validate.js2
-rw-r--r--lib/dijit/form/nls/validate.js2
-rw-r--r--lib/dijit/nls/al/common.js2
-rw-r--r--lib/dijit/nls/al/loading.js2
-rw-r--r--lib/dijit/nls/common.js2
-rw-r--r--lib/dijit/nls/loading.js2
-rw-r--r--lib/dijit/package.json4
-rw-r--r--lib/dijit/themes/claro/claro.css2
-rw-r--r--lib/dijit/themes/dijit.css2
-rw-r--r--lib/dijit/themes/nihilo/nihilo.css2
-rw-r--r--lib/dijit/themes/soria/soria.css2
-rw-r--r--lib/dijit/themes/tundra/tundra.css2
-rw-r--r--lib/dojo-src/.gitignore3
-rwxr-xr-xlib/dojo-src/rebuild-dojo.sh2
-rw-r--r--lib/dojo/LICENSE2
-rw-r--r--lib/dojo/README.md6
-rw-r--r--lib/dojo/_base/configNode.js2
-rw-r--r--lib/dojo/_base/kernel.js2
-rw-r--r--lib/dojo/cldr/monetary.js2
-rw-r--r--lib/dojo/cldr/nls/ar/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/ar/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/ar/currency.js2
-rw-r--r--lib/dojo/cldr/nls/ar/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/ar/generic.js2
-rw-r--r--lib/dojo/cldr/nls/ar/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/ar/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/ar/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/ar/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/ar/number.js2
-rw-r--r--lib/dojo/cldr/nls/ar/persian.js2
-rw-r--r--lib/dojo/cldr/nls/ar/roc.js2
-rw-r--r--lib/dojo/cldr/nls/bs/buddhist.js8
-rw-r--r--lib/dojo/cldr/nls/bs/chinese.js8
-rw-r--r--lib/dojo/cldr/nls/bs/currency.js2
-rw-r--r--lib/dojo/cldr/nls/bs/generic.js2
-rw-r--r--lib/dojo/cldr/nls/bs/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/bs/hebrew.js8
-rw-r--r--lib/dojo/cldr/nls/bs/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/bs/japanese.js8
-rw-r--r--lib/dojo/cldr/nls/bs/number.js2
-rw-r--r--lib/dojo/cldr/nls/bs/roc.js8
-rw-r--r--lib/dojo/cldr/nls/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/ca/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/ca/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/ca/currency.js2
-rw-r--r--lib/dojo/cldr/nls/ca/generic.js2
-rw-r--r--lib/dojo/cldr/nls/ca/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/ca/number.js2
-rw-r--r--lib/dojo/cldr/nls/ca/roc.js2
-rw-r--r--lib/dojo/cldr/nls/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/cs/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/cs/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/cs/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/cs/currency.js2
-rw-r--r--lib/dojo/cldr/nls/cs/dangi.js8
-rw-r--r--lib/dojo/cldr/nls/cs/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/cs/generic.js2
-rw-r--r--lib/dojo/cldr/nls/cs/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/cs/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/cs/indian.js8
-rw-r--r--lib/dojo/cldr/nls/cs/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/cs/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/cs/number.js2
-rw-r--r--lib/dojo/cldr/nls/cs/persian.js8
-rw-r--r--lib/dojo/cldr/nls/cs/roc.js2
-rw-r--r--lib/dojo/cldr/nls/currency.js2
-rw-r--r--lib/dojo/cldr/nls/da/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/da/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/da/currency.js2
-rw-r--r--lib/dojo/cldr/nls/da/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/da/generic.js2
-rw-r--r--lib/dojo/cldr/nls/da/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/da/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/da/indian.js8
-rw-r--r--lib/dojo/cldr/nls/da/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/da/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/da/number.js2
-rw-r--r--lib/dojo/cldr/nls/da/persian.js8
-rw-r--r--lib/dojo/cldr/nls/da/roc.js2
-rw-r--r--lib/dojo/cldr/nls/dangi.js2
-rw-r--r--lib/dojo/cldr/nls/de/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/de/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/de/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/de/currency.js2
-rw-r--r--lib/dojo/cldr/nls/de/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/de/generic.js2
-rw-r--r--lib/dojo/cldr/nls/de/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/de/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/de/indian.js8
-rw-r--r--lib/dojo/cldr/nls/de/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/de/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/de/number.js2
-rw-r--r--lib/dojo/cldr/nls/de/persian.js8
-rw-r--r--lib/dojo/cldr/nls/de/roc.js2
-rw-r--r--lib/dojo/cldr/nls/el/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/el/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/el/currency.js2
-rw-r--r--lib/dojo/cldr/nls/el/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/el/generic.js2
-rw-r--r--lib/dojo/cldr/nls/el/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/el/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/el/indian.js8
-rw-r--r--lib/dojo/cldr/nls/el/islamic.js8
-rw-r--r--lib/dojo/cldr/nls/el/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/el/number.js2
-rw-r--r--lib/dojo/cldr/nls/el/persian.js8
-rw-r--r--lib/dojo/cldr/nls/el/roc.js2
-rw-r--r--lib/dojo/cldr/nls/en-au/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/en-au/currency.js2
-rw-r--r--lib/dojo/cldr/nls/en-au/generic.js2
-rw-r--r--lib/dojo/cldr/nls/en-au/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/en-au/indian.js8
-rw-r--r--lib/dojo/cldr/nls/en-au/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/en-au/japanese.js8
-rw-r--r--lib/dojo/cldr/nls/en-au/number.js2
-rw-r--r--lib/dojo/cldr/nls/en-ca/chinese.js8
-rw-r--r--lib/dojo/cldr/nls/en-ca/currency.js2
-rw-r--r--lib/dojo/cldr/nls/en-ca/generic.js2
-rw-r--r--lib/dojo/cldr/nls/en-ca/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/en-ca/islamic.js8
-rw-r--r--lib/dojo/cldr/nls/en-ca/number.js8
-rw-r--r--lib/dojo/cldr/nls/en-gb/chinese.js8
-rw-r--r--lib/dojo/cldr/nls/en-gb/currency.js8
-rw-r--r--lib/dojo/cldr/nls/en-gb/generic.js2
-rw-r--r--lib/dojo/cldr/nls/en-gb/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/en-gb/indian.js8
-rw-r--r--lib/dojo/cldr/nls/en-gb/islamic.js8
-rw-r--r--lib/dojo/cldr/nls/en-gb/japanese.js8
-rw-r--r--lib/dojo/cldr/nls/en/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/en/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/en/generic.js2
-rw-r--r--lib/dojo/cldr/nls/en/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/en/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/en/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/en/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/en/number.js2
-rw-r--r--lib/dojo/cldr/nls/en/roc.js2
-rw-r--r--lib/dojo/cldr/nls/es/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/es/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/es/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/es/currency.js2
-rw-r--r--lib/dojo/cldr/nls/es/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/es/generic.js2
-rw-r--r--lib/dojo/cldr/nls/es/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/es/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/es/indian.js8
-rw-r--r--lib/dojo/cldr/nls/es/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/es/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/es/number.js2
-rw-r--r--lib/dojo/cldr/nls/es/persian.js8
-rw-r--r--lib/dojo/cldr/nls/es/roc.js2
-rw-r--r--lib/dojo/cldr/nls/ethiopic-amete-alem.js2
-rw-r--r--lib/dojo/cldr/nls/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/fi/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/fi/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/fi/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/fi/currency.js2
-rw-r--r--lib/dojo/cldr/nls/fi/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/fi/generic.js2
-rw-r--r--lib/dojo/cldr/nls/fi/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/fi/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/fi/indian.js8
-rw-r--r--lib/dojo/cldr/nls/fi/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/fi/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/fi/number.js2
-rw-r--r--lib/dojo/cldr/nls/fi/persian.js8
-rw-r--r--lib/dojo/cldr/nls/fi/roc.js2
-rw-r--r--lib/dojo/cldr/nls/fr-ch/currency.js8
-rw-r--r--lib/dojo/cldr/nls/fr-ch/generic.js2
-rw-r--r--lib/dojo/cldr/nls/fr-ch/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/fr-ch/number.js2
-rw-r--r--lib/dojo/cldr/nls/fr/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/fr/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/fr/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/fr/currency.js2
-rw-r--r--lib/dojo/cldr/nls/fr/dangi.js2
-rw-r--r--lib/dojo/cldr/nls/fr/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/fr/generic.js2
-rw-r--r--lib/dojo/cldr/nls/fr/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/fr/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/fr/indian.js2
-rw-r--r--lib/dojo/cldr/nls/fr/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/fr/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/fr/number.js2
-rw-r--r--lib/dojo/cldr/nls/fr/persian.js2
-rw-r--r--lib/dojo/cldr/nls/fr/roc.js2
-rw-r--r--lib/dojo/cldr/nls/generic.js2
-rw-r--r--lib/dojo/cldr/nls/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/he/buddhist.js8
-rw-r--r--lib/dojo/cldr/nls/he/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/he/currency.js2
-rw-r--r--lib/dojo/cldr/nls/he/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/he/generic.js2
-rw-r--r--lib/dojo/cldr/nls/he/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/he/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/he/indian.js8
-rw-r--r--lib/dojo/cldr/nls/he/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/he/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/he/number.js2
-rw-r--r--lib/dojo/cldr/nls/he/persian.js8
-rw-r--r--lib/dojo/cldr/nls/he/roc.js8
-rw-r--r--lib/dojo/cldr/nls/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/hr/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/hr/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/hr/currency.js2
-rw-r--r--lib/dojo/cldr/nls/hr/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/hr/generic.js2
-rw-r--r--lib/dojo/cldr/nls/hr/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/hr/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/hr/indian.js8
-rw-r--r--lib/dojo/cldr/nls/hr/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/hr/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/hr/number.js2
-rw-r--r--lib/dojo/cldr/nls/hr/persian.js8
-rw-r--r--lib/dojo/cldr/nls/hr/roc.js2
-rw-r--r--lib/dojo/cldr/nls/hu/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/hu/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/hu/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/hu/currency.js2
-rw-r--r--lib/dojo/cldr/nls/hu/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/hu/generic.js2
-rw-r--r--lib/dojo/cldr/nls/hu/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/hu/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/hu/indian.js2
-rw-r--r--lib/dojo/cldr/nls/hu/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/hu/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/hu/number.js2
-rw-r--r--lib/dojo/cldr/nls/hu/persian.js2
-rw-r--r--lib/dojo/cldr/nls/hu/roc.js2
-rw-r--r--lib/dojo/cldr/nls/id/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/id/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/id/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/id/currency.js2
-rw-r--r--lib/dojo/cldr/nls/id/dangi.js8
-rw-r--r--lib/dojo/cldr/nls/id/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/id/generic.js2
-rw-r--r--lib/dojo/cldr/nls/id/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/id/hebrew.js8
-rw-r--r--lib/dojo/cldr/nls/id/indian.js2
-rw-r--r--lib/dojo/cldr/nls/id/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/id/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/id/number.js2
-rw-r--r--lib/dojo/cldr/nls/id/persian.js8
-rw-r--r--lib/dojo/cldr/nls/id/roc.js2
-rw-r--r--lib/dojo/cldr/nls/indian.js2
-rw-r--r--lib/dojo/cldr/nls/islamic-civil.js2
-rw-r--r--lib/dojo/cldr/nls/islamic-rgsa.js2
-rw-r--r--lib/dojo/cldr/nls/islamic-tbla.js2
-rw-r--r--lib/dojo/cldr/nls/islamic-umalqura.js2
-rw-r--r--lib/dojo/cldr/nls/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/it/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/it/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/it/currency.js2
-rw-r--r--lib/dojo/cldr/nls/it/generic.js2
-rw-r--r--lib/dojo/cldr/nls/it/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/it/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/it/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/it/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/it/number.js2
-rw-r--r--lib/dojo/cldr/nls/it/roc.js2
-rw-r--r--lib/dojo/cldr/nls/ja/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/ja/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/ja/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/ja/currency.js2
-rw-r--r--lib/dojo/cldr/nls/ja/dangi.js2
-rw-r--r--lib/dojo/cldr/nls/ja/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/ja/generic.js2
-rw-r--r--lib/dojo/cldr/nls/ja/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/ja/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/ja/indian.js2
-rw-r--r--lib/dojo/cldr/nls/ja/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/ja/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/ja/number.js2
-rw-r--r--lib/dojo/cldr/nls/ja/persian.js2
-rw-r--r--lib/dojo/cldr/nls/ja/roc.js2
-rw-r--r--lib/dojo/cldr/nls/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/ko/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/ko/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/ko/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/ko/currency.js2
-rw-r--r--lib/dojo/cldr/nls/ko/dangi.js2
-rw-r--r--lib/dojo/cldr/nls/ko/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/ko/generic.js2
-rw-r--r--lib/dojo/cldr/nls/ko/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/ko/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/ko/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/ko/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/ko/number.js2
-rw-r--r--lib/dojo/cldr/nls/ko/persian.js8
-rw-r--r--lib/dojo/cldr/nls/ko/roc.js2
-rw-r--r--lib/dojo/cldr/nls/mk/buddhist.js8
-rw-r--r--lib/dojo/cldr/nls/mk/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/mk/currency.js2
-rw-r--r--lib/dojo/cldr/nls/mk/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/mk/generic.js2
-rw-r--r--lib/dojo/cldr/nls/mk/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/mk/hebrew.js8
-rw-r--r--lib/dojo/cldr/nls/mk/indian.js8
-rw-r--r--lib/dojo/cldr/nls/mk/islamic.js8
-rw-r--r--lib/dojo/cldr/nls/mk/number.js2
-rw-r--r--lib/dojo/cldr/nls/mk/persian.js8
-rw-r--r--lib/dojo/cldr/nls/mk/roc.js8
-rw-r--r--lib/dojo/cldr/nls/nb/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/nb/chinese.js8
-rw-r--r--lib/dojo/cldr/nls/nb/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/nb/currency.js2
-rw-r--r--lib/dojo/cldr/nls/nb/dangi.js8
-rw-r--r--lib/dojo/cldr/nls/nb/ethiopic-amete-alem.js8
-rw-r--r--lib/dojo/cldr/nls/nb/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/nb/generic.js2
-rw-r--r--lib/dojo/cldr/nls/nb/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/nb/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/nb/indian.js8
-rw-r--r--lib/dojo/cldr/nls/nb/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/nb/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/nb/number.js2
-rw-r--r--lib/dojo/cldr/nls/nb/persian.js8
-rw-r--r--lib/dojo/cldr/nls/nb/roc.js2
-rw-r--r--lib/dojo/cldr/nls/nl/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/nl/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/nl/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/nl/currency.js2
-rw-r--r--lib/dojo/cldr/nls/nl/dangi.js2
-rw-r--r--lib/dojo/cldr/nls/nl/ethiopic-amete-alem.js8
-rw-r--r--lib/dojo/cldr/nls/nl/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/nl/generic.js2
-rw-r--r--lib/dojo/cldr/nls/nl/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/nl/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/nl/indian.js2
-rw-r--r--lib/dojo/cldr/nls/nl/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/nl/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/nl/number.js2
-rw-r--r--lib/dojo/cldr/nls/nl/persian.js2
-rw-r--r--lib/dojo/cldr/nls/nl/roc.js2
-rw-r--r--lib/dojo/cldr/nls/number.js2
-rw-r--r--lib/dojo/cldr/nls/persian.js2
-rw-r--r--lib/dojo/cldr/nls/pl/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/pl/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/pl/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/pl/currency.js2
-rw-r--r--lib/dojo/cldr/nls/pl/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/pl/generic.js2
-rw-r--r--lib/dojo/cldr/nls/pl/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/pl/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/pl/indian.js2
-rw-r--r--lib/dojo/cldr/nls/pl/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/pl/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/pl/number.js2
-rw-r--r--lib/dojo/cldr/nls/pl/persian.js2
-rw-r--r--lib/dojo/cldr/nls/pl/roc.js2
-rw-r--r--lib/dojo/cldr/nls/pt-pt/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/pt-pt/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/pt-pt/currency.js2
-rw-r--r--lib/dojo/cldr/nls/pt-pt/generic.js2
-rw-r--r--lib/dojo/cldr/nls/pt-pt/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/pt-pt/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/pt-pt/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/pt-pt/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/pt-pt/number.js2
-rw-r--r--lib/dojo/cldr/nls/pt-pt/roc.js2
-rw-r--r--lib/dojo/cldr/nls/pt/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/pt/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/pt/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/pt/currency.js2
-rw-r--r--lib/dojo/cldr/nls/pt/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/pt/generic.js2
-rw-r--r--lib/dojo/cldr/nls/pt/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/pt/hebrew.js8
-rw-r--r--lib/dojo/cldr/nls/pt/indian.js8
-rw-r--r--lib/dojo/cldr/nls/pt/islamic.js8
-rw-r--r--lib/dojo/cldr/nls/pt/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/pt/number.js2
-rw-r--r--lib/dojo/cldr/nls/pt/persian.js8
-rw-r--r--lib/dojo/cldr/nls/pt/roc.js2
-rw-r--r--lib/dojo/cldr/nls/ro/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/ro/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/ro/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/ro/currency.js2
-rw-r--r--lib/dojo/cldr/nls/ro/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/ro/generic.js2
-rw-r--r--lib/dojo/cldr/nls/ro/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/ro/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/ro/indian.js8
-rw-r--r--lib/dojo/cldr/nls/ro/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/ro/number.js2
-rw-r--r--lib/dojo/cldr/nls/ro/persian.js8
-rw-r--r--lib/dojo/cldr/nls/ro/roc.js8
-rw-r--r--lib/dojo/cldr/nls/roc.js2
-rw-r--r--lib/dojo/cldr/nls/ru/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/ru/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/ru/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/ru/currency.js2
-rw-r--r--lib/dojo/cldr/nls/ru/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/ru/generic.js2
-rw-r--r--lib/dojo/cldr/nls/ru/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/ru/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/ru/indian.js2
-rw-r--r--lib/dojo/cldr/nls/ru/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/ru/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/ru/number.js2
-rw-r--r--lib/dojo/cldr/nls/ru/persian.js2
-rw-r--r--lib/dojo/cldr/nls/ru/roc.js2
-rw-r--r--lib/dojo/cldr/nls/sk/buddhist.js8
-rw-r--r--lib/dojo/cldr/nls/sk/coptic.js8
-rw-r--r--lib/dojo/cldr/nls/sk/currency.js2
-rw-r--r--lib/dojo/cldr/nls/sk/ethiopic.js8
-rw-r--r--lib/dojo/cldr/nls/sk/generic.js2
-rw-r--r--lib/dojo/cldr/nls/sk/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/sk/hebrew.js8
-rw-r--r--lib/dojo/cldr/nls/sk/indian.js8
-rw-r--r--lib/dojo/cldr/nls/sk/islamic.js8
-rw-r--r--lib/dojo/cldr/nls/sk/number.js2
-rw-r--r--lib/dojo/cldr/nls/sk/persian.js8
-rw-r--r--lib/dojo/cldr/nls/sk/roc.js8
-rw-r--r--lib/dojo/cldr/nls/sl/buddhist.js8
-rw-r--r--lib/dojo/cldr/nls/sl/currency.js2
-rw-r--r--lib/dojo/cldr/nls/sl/generic.js2
-rw-r--r--lib/dojo/cldr/nls/sl/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/sl/number.js2
-rw-r--r--lib/dojo/cldr/nls/sl/roc.js8
-rw-r--r--lib/dojo/cldr/nls/sr/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/sr/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/sr/currency.js2
-rw-r--r--lib/dojo/cldr/nls/sr/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/sr/generic.js2
-rw-r--r--lib/dojo/cldr/nls/sr/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/sr/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/sr/indian.js2
-rw-r--r--lib/dojo/cldr/nls/sr/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/sr/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/sr/number.js2
-rw-r--r--lib/dojo/cldr/nls/sr/persian.js2
-rw-r--r--lib/dojo/cldr/nls/sr/roc.js2
-rw-r--r--lib/dojo/cldr/nls/sv/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/sv/chinese.js8
-rw-r--r--lib/dojo/cldr/nls/sv/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/sv/currency.js2
-rw-r--r--lib/dojo/cldr/nls/sv/dangi.js2
-rw-r--r--lib/dojo/cldr/nls/sv/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/sv/generic.js2
-rw-r--r--lib/dojo/cldr/nls/sv/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/sv/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/sv/indian.js2
-rw-r--r--lib/dojo/cldr/nls/sv/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/sv/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/sv/number.js2
-rw-r--r--lib/dojo/cldr/nls/sv/persian.js2
-rw-r--r--lib/dojo/cldr/nls/sv/roc.js2
-rw-r--r--lib/dojo/cldr/nls/th/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/th/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/th/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/th/currency.js2
-rw-r--r--lib/dojo/cldr/nls/th/dangi.js2
-rw-r--r--lib/dojo/cldr/nls/th/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/th/generic.js2
-rw-r--r--lib/dojo/cldr/nls/th/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/th/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/th/indian.js2
-rw-r--r--lib/dojo/cldr/nls/th/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/th/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/th/number.js2
-rw-r--r--lib/dojo/cldr/nls/th/persian.js2
-rw-r--r--lib/dojo/cldr/nls/th/roc.js2
-rw-r--r--lib/dojo/cldr/nls/tr/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/tr/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/tr/currency.js2
-rw-r--r--lib/dojo/cldr/nls/tr/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/tr/generic.js2
-rw-r--r--lib/dojo/cldr/nls/tr/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/tr/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/tr/indian.js8
-rw-r--r--lib/dojo/cldr/nls/tr/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/tr/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/tr/number.js2
-rw-r--r--lib/dojo/cldr/nls/tr/persian.js2
-rw-r--r--lib/dojo/cldr/nls/tr/roc.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/currency.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/dangi.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/ethiopic-amete-alem.js8
-rw-r--r--lib/dojo/cldr/nls/zh-hant/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/generic.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/indian.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/number.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/persian.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hant/roc.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hk/currency.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hk/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/zh-hk/number.js2
-rw-r--r--lib/dojo/cldr/nls/zh-tw/currency.js2
-rw-r--r--lib/dojo/cldr/nls/zh-tw/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/zh-tw/number.js2
-rw-r--r--lib/dojo/cldr/nls/zh/buddhist.js2
-rw-r--r--lib/dojo/cldr/nls/zh/chinese.js2
-rw-r--r--lib/dojo/cldr/nls/zh/coptic.js2
-rw-r--r--lib/dojo/cldr/nls/zh/currency.js2
-rw-r--r--lib/dojo/cldr/nls/zh/dangi.js8
-rw-r--r--lib/dojo/cldr/nls/zh/ethiopic-amete-alem.js8
-rw-r--r--lib/dojo/cldr/nls/zh/ethiopic.js2
-rw-r--r--lib/dojo/cldr/nls/zh/generic.js2
-rw-r--r--lib/dojo/cldr/nls/zh/gregorian.js2
-rw-r--r--lib/dojo/cldr/nls/zh/hebrew.js2
-rw-r--r--lib/dojo/cldr/nls/zh/indian.js2
-rw-r--r--lib/dojo/cldr/nls/zh/islamic.js2
-rw-r--r--lib/dojo/cldr/nls/zh/japanese.js2
-rw-r--r--lib/dojo/cldr/nls/zh/number.js2
-rw-r--r--lib/dojo/cldr/nls/zh/persian.js2
-rw-r--r--lib/dojo/cldr/nls/zh/roc.js2
-rw-r--r--lib/dojo/dojo.js2
-rw-r--r--lib/dojo/dom-attr.js2
-rw-r--r--lib/dojo/dom-geometry.js2
-rw-r--r--lib/dojo/dom.js2
-rw-r--r--lib/dojo/i18n.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_ROOT.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_ar.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_ca.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_cs.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_da.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_de.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_el.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_en-gb.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_en-us.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_es-es.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_fi-fi.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_fr-fr.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_he-il.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_hu.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_it-it.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_ja-jp.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_ko-kr.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_nb.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_nl-nl.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_pl.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_pt-br.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_pt-pt.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_ru.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_sk.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_sl.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_sv.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_th.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_tr.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_zh-cn.js2
-rw-r--r--lib/dojo/nls/tt-rss-layer_zh-tw.js2
-rw-r--r--lib/dojo/number.js2
-rw-r--r--lib/dojo/package-lock.json1086
-rw-r--r--lib/dojo/package.json4
-rw-r--r--lib/dojo/promise/Promise.js2
-rw-r--r--lib/dojo/request/registry.js2
-rw-r--r--lib/dojo/request/util.js2
-rw-r--r--lib/dojo/request/xhr.js2
-rw-r--r--lib/dojo/tt-rss-layer.js2
-rw-r--r--lib/jimIcon.php2
-rw-r--r--phpstan.neon7
-rw-r--r--phpunit.xml10
-rw-r--r--plugins/af_comics/filter_base.php22
-rwxr-xr-xplugins/af_comics/filters/af_comics_comicpress.php7
-rw-r--r--plugins/af_comics/filters/af_comics_dilbert.php2
-rw-r--r--plugins/af_comics/filters/af_comics_explosm.php2
-rw-r--r--plugins/af_comics/filters/af_comics_gocomics.php1
-rw-r--r--plugins/af_comics/filters/af_comics_gocomics_farside.php16
-rw-r--r--plugins/af_comics/filters/af_comics_tfd.php2
-rwxr-xr-xplugins/af_comics/init.php6
-rw-r--r--plugins/af_psql_trgm/init.php43
-rw-r--r--plugins/af_readability/composer.json2
-rw-r--r--plugins/af_readability/composer.lock25
-rwxr-xr-xplugins/af_readability/init.php58
-rw-r--r--plugins/af_readability/vendor/andreskrey/readability.php/src/Readability.php1804
-rw-r--r--plugins/af_readability/vendor/composer/ClassLoader.php6
-rw-r--r--plugins/af_readability/vendor/composer/InstalledVersions.php526
-rw-r--r--plugins/af_readability/vendor/composer/LICENSE2
-rw-r--r--plugins/af_readability/vendor/composer/autoload_psr4.php2
-rw-r--r--plugins/af_readability/vendor/composer/autoload_static.php2
-rw-r--r--plugins/af_readability/vendor/composer/installed.json27
-rw-r--r--plugins/af_readability/vendor/composer/installed.php12
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/.coveralls.yml (renamed from plugins/af_readability/vendor/andreskrey/readability.php/.coveralls.yml)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/.gitattributes (renamed from plugins/af_readability/vendor/andreskrey/readability.php/.gitattributes)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/.gitignore (renamed from plugins/af_readability/vendor/andreskrey/readability.php/.gitignore)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/.styleci.yml (renamed from plugins/af_readability/vendor/andreskrey/readability.php/.styleci.yml)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/.travis.yml (renamed from plugins/af_readability/vendor/andreskrey/readability.php/.travis.yml)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/AUTHORS.md (renamed from plugins/af_readability/vendor/andreskrey/readability.php/AUTHORS.md)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/CHANGELOG.md (renamed from plugins/af_readability/vendor/andreskrey/readability.php/CHANGELOG.md)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/CONTRIBUTING.md (renamed from plugins/af_readability/vendor/andreskrey/readability.php/CONTRIBUTING.md)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/LICENSE (renamed from plugins/af_readability/vendor/andreskrey/readability.php/LICENSE)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/Makefile (renamed from plugins/af_readability/vendor/andreskrey/readability.php/Makefile)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/README.md (renamed from plugins/af_readability/vendor/andreskrey/readability.php/README.md)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/composer.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/composer.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/docker-compose.yml (renamed from plugins/af_readability/vendor/andreskrey/readability.php/docker-compose.yml)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/docker/php/Dockerfile (renamed from plugins/af_readability/vendor/andreskrey/readability.php/docker/php/Dockerfile)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/phpunit.xml (renamed from plugins/af_readability/vendor/andreskrey/readability.php/phpunit.xml)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Configuration.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Configuration.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMAttr.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMAttr.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMCdataSection.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMCdataSection.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMCharacterData.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMCharacterData.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMComment.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMComment.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMDocument.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMDocument.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMDocumentFragment.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMDocumentFragment.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMDocumentType.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMDocumentType.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMElement.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMElement.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMEntity.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMEntity.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMEntityReference.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMEntityReference.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMNode.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMNode.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMNodeList.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMNodeList.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMNotation.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMNotation.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMProcessingInstruction.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMProcessingInstruction.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMText.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMText.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/NodeTrait.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/NodeTrait.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/NodeUtility.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/NodeUtility.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/ParseException.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/src/ParseException.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/src/Readability.php1804
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/ConfigurationTest.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/ConfigurationTest.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/ReadabilityTest.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/ReadabilityTest.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/TestPage.php (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/TestPage.php)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/config.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/config.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/config.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/config.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/config.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/config.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/config.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/config.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/config.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/config.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/config.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/config.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/config.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/config.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/config.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/config.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/config.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/config.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/source.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/expected-images.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-images.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/expected-metadata.json (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-metadata.json)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/expected.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected.html)0
-rw-r--r--plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/source.html (renamed from plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/source.html)0
-rw-r--r--plugins/af_readability/vendor/psr/log/Psr/Log/AbstractLogger.php32
-rw-r--r--plugins/af_readability/vendor/psr/log/Psr/Log/LoggerAwareTrait.php2
-rw-r--r--plugins/af_readability/vendor/psr/log/composer.json2
-rwxr-xr-xplugins/af_redditimgur/init.php230
-rw-r--r--plugins/af_youtube_embed/init.php7
-rw-r--r--plugins/af_zz_vidmute/init.php5
-rw-r--r--plugins/auth_internal/init.php103
-rw-r--r--plugins/auth_remote/init.php26
-rwxr-xr-xplugins/auto_assign_labels/init.php12
-rw-r--r--plugins/bookmarklets/init.php7
-rwxr-xr-xplugins/cache_starred_images/init.php65
-rw-r--r--plugins/hotkeys_force_top/init.php3
-rw-r--r--plugins/hotkeys_noscroll/init.php4
-rw-r--r--plugins/hotkeys_swap_jk/init.php4
-rw-r--r--plugins/no_iframes/init.php5
-rw-r--r--plugins/note/init.php14
-rw-r--r--plugins/note/note.css3
-rw-r--r--plugins/note/note.js86
-rw-r--r--plugins/nsfw/init.php11
-rw-r--r--plugins/share/init.php26
-rw-r--r--plugins/shorten_expanded/init.php3
-rw-r--r--plugins/toggle_sidebar/init.php4
-rw-r--r--prefs.php2
-rw-r--r--sql/mysql/migrations/146.sql2
-rw-r--r--sql/mysql/schema.sql6
-rw-r--r--sql/pgsql/migrations/146.sql2
-rw-r--r--sql/pgsql/schema.sql6
-rw-r--r--tests/UrlHelperTest.php54
-rw-r--r--tests/autoload.php6
-rw-r--r--themes/Makefile9
-rw-r--r--themes/compact.css40
-rw-r--r--themes/compact_night.css40
-rw-r--r--themes/light-high-contrast.css40
-rw-r--r--themes/light.css40
-rw-r--r--themes/light/cdm.less41
-rw-r--r--themes/light/tt-rss.less7
-rw-r--r--themes/night.css40
-rw-r--r--themes/night_blue.css40
-rwxr-xr-xupdate.php119
-rwxr-xr-xupdate_daemon2.php32
-rw-r--r--vendor/beberlei/assert/composer.json29
-rw-r--r--vendor/beberlei/assert/lib/Assert/Assert.php41
-rw-r--r--vendor/beberlei/assert/lib/Assert/Assertion.php1087
-rw-r--r--vendor/beberlei/assert/lib/Assert/AssertionChain.php50
-rw-r--r--vendor/beberlei/assert/lib/Assert/AssertionFailedException.php11
-rw-r--r--vendor/beberlei/assert/lib/Assert/InvalidArgumentException.php17
-rw-r--r--vendor/beberlei/assert/lib/Assert/LazyAssertion.php208
-rw-r--r--vendor/beberlei/assert/lib/Assert/LazyAssertionException.php7
-rw-r--r--vendor/beberlei/assert/lib/Assert/functions.php34
-rw-r--r--vendor/beberlei/assert/phpstan-code.neon7
l---------vendor/bin/php-parse1
l---------vendor/bin/phpstan1
l---------vendor/bin/phpstan.phar1
l---------vendor/bin/phpunit1
-rw-r--r--vendor/chillerlan/php-qrcode/.github/workflows/tests.yml76
-rw-r--r--vendor/chillerlan/php-qrcode/.travis.yml5
-rw-r--r--vendor/chillerlan/php-qrcode/composer.json5
-rw-r--r--vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php12
-rw-r--r--vendor/chillerlan/php-qrcode/examples/imageWithLogo.php13
-rw-r--r--vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php6
-rw-r--r--vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php10
-rw-r--r--vendor/chillerlan/php-settings-container/.travis.yml4
-rw-r--r--vendor/chillerlan/php-settings-container/README.md13
-rw-r--r--vendor/chillerlan/php-settings-container/composer.json4
-rw-r--r--vendor/composer/ClassLoader.php117
-rw-r--r--vendor/composer/InstalledVersions.php692
-rw-r--r--vendor/composer/autoload_classmap.php623
-rw-r--r--vendor/composer/autoload_files.php4
-rw-r--r--vendor/composer/autoload_psr4.php7
-rw-r--r--vendor/composer/autoload_static.php673
-rw-r--r--vendor/composer/installed.json2373
-rw-r--r--vendor/composer/installed.php510
-rw-r--r--vendor/doctrine/instantiator/.doctrine-project.json47
-rw-r--r--vendor/doctrine/instantiator/CONTRIBUTING.md35
-rw-r--r--vendor/doctrine/instantiator/LICENSE19
-rw-r--r--vendor/doctrine/instantiator/README.md38
-rw-r--r--vendor/doctrine/instantiator/composer.json48
-rw-r--r--vendor/doctrine/instantiator/docs/en/index.rst68
-rw-r--r--vendor/doctrine/instantiator/docs/en/sidebar.rst4
-rw-r--r--vendor/doctrine/instantiator/psalm.xml16
-rw-r--r--vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php12
-rw-r--r--vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php50
-rw-r--r--vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php59
-rw-r--r--vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php260
-rw-r--r--vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php24
-rw-r--r--vendor/myclabs/deep-copy/.github/FUNDING.yml12
-rw-r--r--vendor/myclabs/deep-copy/.github/workflows/ci.yaml101
-rw-r--r--vendor/myclabs/deep-copy/LICENSE20
-rw-r--r--vendor/myclabs/deep-copy/README.md373
-rw-r--r--vendor/myclabs/deep-copy/composer.json42
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php303
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php9
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php9
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php33
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php28
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php22
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php18
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php16
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php39
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php24
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php22
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php14
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php39
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php32
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php52
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php78
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php33
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php30
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php17
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php36
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php10
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php51
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php13
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php29
-rw-r--r--vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php20
-rw-r--r--vendor/nikic/php-parser/LICENSE29
-rw-r--r--vendor/nikic/php-parser/README.md225
-rw-r--r--vendor/nikic/php-parser/bin/php-parse205
-rw-r--r--vendor/nikic/php-parser/composer.json41
-rw-r--r--vendor/nikic/php-parser/grammar/README.md30
-rw-r--r--vendor/nikic/php-parser/grammar/parser.template106
-rw-r--r--vendor/nikic/php-parser/grammar/php5.y1040
-rw-r--r--vendor/nikic/php-parser/grammar/php7.y1196
-rw-r--r--vendor/nikic/php-parser/grammar/phpyLang.php192
-rw-r--r--vendor/nikic/php-parser/grammar/rebuildParsers.php81
-rw-r--r--vendor/nikic/php-parser/grammar/tokens.template17
-rw-r--r--vendor/nikic/php-parser/grammar/tokens.y115
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder.php13
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php132
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php140
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php43
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php85
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php117
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php73
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php67
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php93
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php146
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php45
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php122
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php161
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php64
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php148
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php78
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php49
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php399
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php313
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Comment.php239
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php7
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php6
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php229
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Error.php180
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php13
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php46
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php18
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php27
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php164
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php61
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php281
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php103
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer.php560
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php248
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php56
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php47
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php44
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php76
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php23
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php62
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php23
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php67
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php105
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php23
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php36
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php25
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NameContext.php285
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node.php151
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php46
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php29
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php14
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php37
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php9
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php41
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php79
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php40
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php39
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php26
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php17
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php12
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php36
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php79
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php39
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php39
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php35
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php45
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php41
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php45
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php35
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php35
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php46
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php36
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php38
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php43
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php75
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Name.php242
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php50
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php50
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php28
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Param.php60
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php7
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php70
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php78
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php28
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php16
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php141
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php9
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php41
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php80
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php109
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php159
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php112
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php37
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php40
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php33
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php43
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php47
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php77
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php39
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php43
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php37
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php31
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php38
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php17
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php91
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php37
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php13
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php38
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php32
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php38
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php30
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php52
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php47
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php34
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php28
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php17
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php27
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php178
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php206
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php81
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php291
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php29
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php72
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php20
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php48
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php50
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php257
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php52
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php41
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php25
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Parser.php18
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.php55
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php2674
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php2804
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php148
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php1029
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php44
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php1105
-rw-r--r--vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php1506
-rw-r--r--vendor/phar-io/manifest/CHANGELOG.md36
-rw-r--r--vendor/phar-io/manifest/LICENSE31
-rw-r--r--vendor/phar-io/manifest/README.md30
-rw-r--r--vendor/phar-io/manifest/composer.json42
-rw-r--r--vendor/phar-io/manifest/composer.lock70
-rw-r--r--vendor/phar-io/manifest/src/ManifestDocumentMapper.php150
-rw-r--r--vendor/phar-io/manifest/src/ManifestLoader.php44
-rw-r--r--vendor/phar-io/manifest/src/ManifestSerializer.php168
-rw-r--r--vendor/phar-io/manifest/src/exceptions/ElementCollectionException.php13
-rw-r--r--vendor/phar-io/manifest/src/exceptions/Exception.php13
-rw-r--r--vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php14
-rw-r--r--vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php13
-rw-r--r--vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php13
-rw-r--r--vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php5
-rw-r--r--vendor/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php45
-rw-r--r--vendor/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php5
-rw-r--r--vendor/phar-io/manifest/src/exceptions/ManifestElementException.php5
-rw-r--r--vendor/phar-io/manifest/src/exceptions/ManifestLoaderException.php5
-rw-r--r--vendor/phar-io/manifest/src/values/Application.php16
-rw-r--r--vendor/phar-io/manifest/src/values/ApplicationName.php37
-rw-r--r--vendor/phar-io/manifest/src/values/Author.php39
-rw-r--r--vendor/phar-io/manifest/src/values/AuthorCollection.php34
-rw-r--r--vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php42
-rw-r--r--vendor/phar-io/manifest/src/values/BundledComponent.php33
-rw-r--r--vendor/phar-io/manifest/src/values/BundledComponentCollection.php34
-rw-r--r--vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php42
-rw-r--r--vendor/phar-io/manifest/src/values/CopyrightInformation.php31
-rw-r--r--vendor/phar-io/manifest/src/values/Email.php31
-rw-r--r--vendor/phar-io/manifest/src/values/Extension.php46
-rw-r--r--vendor/phar-io/manifest/src/values/Library.php16
-rw-r--r--vendor/phar-io/manifest/src/values/License.php31
-rw-r--r--vendor/phar-io/manifest/src/values/Manifest.php92
-rw-r--r--vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php23
-rw-r--r--vendor/phar-io/manifest/src/values/PhpVersionRequirement.php25
-rw-r--r--vendor/phar-io/manifest/src/values/Requirement.php13
-rw-r--r--vendor/phar-io/manifest/src/values/RequirementCollection.php34
-rw-r--r--vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php42
-rw-r--r--vendor/phar-io/manifest/src/values/Type.php41
-rw-r--r--vendor/phar-io/manifest/src/values/Url.php36
-rw-r--r--vendor/phar-io/manifest/src/xml/AuthorElement.php20
-rw-r--r--vendor/phar-io/manifest/src/xml/AuthorElementCollection.php18
-rw-r--r--vendor/phar-io/manifest/src/xml/BundlesElement.php18
-rw-r--r--vendor/phar-io/manifest/src/xml/ComponentElement.php20
-rw-r--r--vendor/phar-io/manifest/src/xml/ComponentElementCollection.php18
-rw-r--r--vendor/phar-io/manifest/src/xml/ContainsElement.php30
-rw-r--r--vendor/phar-io/manifest/src/xml/CopyrightElement.php24
-rw-r--r--vendor/phar-io/manifest/src/xml/ElementCollection.php61
-rw-r--r--vendor/phar-io/manifest/src/xml/ExtElement.php16
-rw-r--r--vendor/phar-io/manifest/src/xml/ExtElementCollection.php18
-rw-r--r--vendor/phar-io/manifest/src/xml/ExtensionElement.php20
-rw-r--r--vendor/phar-io/manifest/src/xml/LicenseElement.php20
-rw-r--r--vendor/phar-io/manifest/src/xml/ManifestDocument.php103
-rw-r--r--vendor/phar-io/manifest/src/xml/ManifestElement.php66
-rw-r--r--vendor/phar-io/manifest/src/xml/PhpElement.php26
-rw-r--r--vendor/phar-io/manifest/src/xml/RequiresElement.php18
-rw-r--r--vendor/phar-io/version/CHANGELOG.md142
-rw-r--r--vendor/phar-io/version/LICENSE29
-rw-r--r--vendor/phar-io/version/README.md61
-rw-r--r--vendor/phar-io/version/composer.json34
-rw-r--r--vendor/phar-io/version/src/BuildMetaData.php28
-rw-r--r--vendor/phar-io/version/src/PreReleaseSuffix.php82
-rw-r--r--vendor/phar-io/version/src/Version.php208
-rw-r--r--vendor/phar-io/version/src/VersionConstraintParser.php115
-rw-r--r--vendor/phar-io/version/src/VersionConstraintValue.php88
-rw-r--r--vendor/phar-io/version/src/VersionNumber.php28
-rw-r--r--vendor/phar-io/version/src/constraints/AbstractVersionConstraint.php23
-rw-r--r--vendor/phar-io/version/src/constraints/AndVersionConstraintGroup.php34
-rw-r--r--vendor/phar-io/version/src/constraints/AnyVersionConstraint.php20
-rw-r--r--vendor/phar-io/version/src/constraints/ExactVersionConstraint.php22
-rw-r--r--vendor/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php26
-rw-r--r--vendor/phar-io/version/src/constraints/OrVersionConstraintGroup.php35
-rw-r--r--vendor/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php33
-rw-r--r--vendor/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php25
-rw-r--r--vendor/phar-io/version/src/constraints/VersionConstraint.php16
-rw-r--r--vendor/phar-io/version/src/exceptions/Exception.php15
-rw-r--r--vendor/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php5
-rw-r--r--vendor/phar-io/version/src/exceptions/InvalidVersionException.php5
-rw-r--r--vendor/phar-io/version/src/exceptions/NoBuildMetaDataException.php5
-rw-r--r--vendor/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php5
-rw-r--r--vendor/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php13
-rw-r--r--vendor/phpdocumentor/reflection-common/.github/dependabot.yml7
-rw-r--r--vendor/phpdocumentor/reflection-common/.github/workflows/push.yml223
-rw-r--r--vendor/phpdocumentor/reflection-common/LICENSE22
-rw-r--r--vendor/phpdocumentor/reflection-common/README.md11
-rw-r--r--vendor/phpdocumentor/reflection-common/composer.json28
-rw-r--r--vendor/phpdocumentor/reflection-common/src/Element.php30
-rw-r--r--vendor/phpdocumentor/reflection-common/src/File.php35
-rw-r--r--vendor/phpdocumentor/reflection-common/src/Fqsen.php89
-rw-r--r--vendor/phpdocumentor/reflection-common/src/Location.php53
-rw-r--r--vendor/phpdocumentor/reflection-common/src/Project.php25
-rw-r--r--vendor/phpdocumentor/reflection-common/src/ProjectFactory.php28
-rw-r--r--vendor/phpdocumentor/reflection-docblock/LICENSE21
-rw-r--r--vendor/phpdocumentor/reflection-docblock/README.md75
-rw-r--r--vendor/phpdocumentor/reflection-docblock/composer.json42
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock.php228
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php115
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php178
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php159
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php157
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php348
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php31
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php84
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php102
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php53
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php101
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php109
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php200
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php25
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php24
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php50
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php30
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php89
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/InvalidTag.php145
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php78
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php279
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php174
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php121
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php121
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php121
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php38
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php22
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php36
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php64
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php106
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php103
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php116
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/TagWithType.php66
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php64
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php100
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php122
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php106
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php287
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php23
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/Exception/PcreException.php44
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/Utils.php62
-rw-r--r--vendor/phpdocumentor/type-resolver/LICENSE21
-rw-r--r--vendor/phpdocumentor/type-resolver/README.md177
-rw-r--r--vendor/phpdocumentor/type-resolver/composer.json35
-rw-r--r--vendor/phpdocumentor/type-resolver/src/FqsenResolver.php80
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoType.php19
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/CallableString.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/False_.php40
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/HtmlEscapedString.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/IntegerRange.php61
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/List_.php50
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/LiteralString.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/LowercaseString.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/NegativeInteger.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/NonEmptyLowercaseString.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/NonEmptyString.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/NumericString.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/Numeric_.php47
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/PositiveInteger.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/TraitString.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/PseudoTypes/True_.php40
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Type.php25
-rw-r--r--vendor/phpdocumentor/type-resolver/src/TypeResolver.php700
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/AbstractList.php83
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/AggregatedType.php125
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/ArrayKey.php42
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Array_.php29
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Boolean.php32
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Callable_.php32
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/ClassString.php62
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Collection.php68
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Compound.php38
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Context.php95
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php420
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Expression.php51
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Float_.php32
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Integer.php32
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/InterfaceString.php56
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Intersection.php37
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Iterable_.php38
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Mixed_.php32
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Never_.php35
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Null_.php32
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Nullable.php51
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Object_.php69
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Parent_.php34
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Resource_.php32
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Scalar.php32
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Self_.php34
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Static_.php39
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/String_.php32
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/This.php35
-rw-r--r--vendor/phpdocumentor/type-resolver/src/Types/Void_.php35
-rw-r--r--vendor/phpspec/prophecy/CHANGES.md302
-rw-r--r--vendor/phpspec/prophecy/LICENSE23
-rw-r--r--vendor/phpspec/prophecy/README.md411
-rw-r--r--vendor/phpspec/prophecy/composer.json50
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument.php239
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php101
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php52
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php52
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php55
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php86
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php143
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php82
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php75
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php118
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php74
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/InArrayToken.php74
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php80
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php73
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/NotInArrayToken.php75
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php104
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php67
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php43
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php76
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Call/Call.php162
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php240
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php44
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php47
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php31
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php66
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php48
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php76
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php63
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php68
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php105
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php113
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php57
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php123
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ThrowablePatch.php95
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php98
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php22
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php146
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php110
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php67
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php254
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php133
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentTypeNode.php10
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php169
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php210
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php45
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/TypeNodeAbstract.php97
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php22
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php43
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php127
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php52
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php40
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php31
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php31
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php33
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php18
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php18
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php20
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php41
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php60
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php41
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php22
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php16
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php51
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php24
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php18
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php18
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php31
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php32
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php34
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php34
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php18
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php69
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php60
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php35
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php30
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php86
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php107
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php66
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php68
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php37
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php67
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php35
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php61
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php55
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php100
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php573
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php286
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php27
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php34
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php44
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php29
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Prophet.php138
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php210
-rw-r--r--vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php99
-rw-r--r--vendor/phpstan/phpstan/LICENSE21
-rw-r--r--vendor/phpstan/phpstan/README.md93
-rw-r--r--vendor/phpstan/phpstan/bootstrap.php60
-rw-r--r--vendor/phpstan/phpstan/composer.json23
-rw-r--r--vendor/phpstan/phpstan/conf/bleedingEdge.neon2
-rw-r--r--vendor/phpstan/phpstan/phpstan8
-rw-r--r--vendor/phpstan/phpstan/phpstan.pharbin0 -> 19215905 bytes
-rw-r--r--vendor/phpstan/phpstan/phpstan.phar.asc16
-rw-r--r--vendor/phpunit/php-code-coverage/ChangeLog.md448
-rw-r--r--vendor/phpunit/php-code-coverage/LICENSE33
-rw-r--r--vendor/phpunit/php-code-coverage/README.md48
-rw-r--r--vendor/phpunit/php-code-coverage/composer.json68
-rw-r--r--vendor/phpunit/php-code-coverage/src/CodeCoverage.php676
-rw-r--r--vendor/phpunit/php-code-coverage/src/Driver/Driver.php167
-rw-r--r--vendor/phpunit/php-code-coverage/src/Driver/PcovDriver.php75
-rw-r--r--vendor/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php93
-rw-r--r--vendor/phpunit/php-code-coverage/src/Driver/Selector.php79
-rw-r--r--vendor/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php128
-rw-r--r--vendor/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php119
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php16
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php16
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php17
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/Exception.php16
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php14
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php20
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php20
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/ParserException.php16
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php22
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php21
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php21
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/ReflectionException.php16
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php20
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php16
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php20
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php43
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php22
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php17
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php21
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php21
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php21
-rw-r--r--vendor/phpunit/php-code-coverage/src/Exception/XmlException.php16
-rw-r--r--vendor/phpunit/php-code-coverage/src/Filter.php122
-rw-r--r--vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php253
-rw-r--r--vendor/phpunit/php-code-coverage/src/Node/Builder.php264
-rw-r--r--vendor/phpunit/php-code-coverage/src/Node/CrapIndex.php50
-rw-r--r--vendor/phpunit/php-code-coverage/src/Node/Directory.php440
-rw-r--r--vendor/phpunit/php-code-coverage/src/Node/File.php651
-rw-r--r--vendor/phpunit/php-code-coverage/src/Node/Iterator.php92
-rw-r--r--vendor/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php255
-rw-r--r--vendor/phpunit/php-code-coverage/src/RawCodeCoverageData.php234
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Clover.php255
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Cobertura.php304
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Crap4j.php153
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php147
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php314
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php288
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php113
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php1149
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/branches.html.dist9
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist5
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar_branch.html.dist5
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css7
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/custom.css0
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css1
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/octicons.css5
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css122
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist281
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard_branch.html.dist281
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist60
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_branch.html.dist62
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist13
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item_branch.html.dist19
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist65
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_branch.html.dist67
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist14
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item_branch.html.dist20
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/icons/file-code.svg1
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/icons/file-directory.svg1
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js7
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js5
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/file.js62
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/jquery.min.js2
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/nv.d3.min.js8
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/popper.min.js5
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/line.html.dist1
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/lines.html.dist5
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item.html.dist12
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item_branch.html.dist18
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/paths.html.dist9
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/PHP.php43
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Text.php341
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php88
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php74
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Directory.php17
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php315
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/File.php87
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Method.php61
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php93
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php90
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php99
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php42
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php51
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php146
-rw-r--r--vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php78
-rw-r--r--vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php30
-rw-r--r--vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php183
-rw-r--r--vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php323
-rw-r--r--vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php273
-rw-r--r--vendor/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php31
-rw-r--r--vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php106
-rw-r--r--vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php251
-rw-r--r--vendor/phpunit/php-code-coverage/src/Util/Filesystem.php37
-rw-r--r--vendor/phpunit/php-code-coverage/src/Util/Percentage.php66
-rw-r--r--vendor/phpunit/php-code-coverage/src/Version.php30
-rw-r--r--vendor/phpunit/php-file-iterator/.psalm/baseline.xml8
-rw-r--r--vendor/phpunit/php-file-iterator/.psalm/config.xml16
-rw-r--r--vendor/phpunit/php-file-iterator/ChangeLog.md144
-rw-r--r--vendor/phpunit/php-file-iterator/LICENSE33
-rw-r--r--vendor/phpunit/php-file-iterator/README.md14
-rw-r--r--vendor/phpunit/php-file-iterator/composer.json45
-rw-r--r--vendor/phpunit/php-file-iterator/src/Facade.php115
-rw-r--r--vendor/phpunit/php-file-iterator/src/Factory.php91
-rw-r--r--vendor/phpunit/php-file-iterator/src/Iterator.php119
-rw-r--r--vendor/phpunit/php-invoker/ChangeLog.md48
-rw-r--r--vendor/phpunit/php-invoker/LICENSE33
-rw-r--r--vendor/phpunit/php-invoker/README.md18
-rw-r--r--vendor/phpunit/php-invoker/composer.json54
-rw-r--r--vendor/phpunit/php-invoker/src/Invoker.php69
-rw-r--r--vendor/phpunit/php-invoker/src/exceptions/Exception.php16
-rw-r--r--vendor/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php16
-rw-r--r--vendor/phpunit/php-invoker/src/exceptions/TimeoutException.php16
-rw-r--r--vendor/phpunit/php-text-template/.psalm/baseline.xml2
-rw-r--r--vendor/phpunit/php-text-template/.psalm/config.xml16
-rw-r--r--vendor/phpunit/php-text-template/ChangeLog.md43
-rw-r--r--vendor/phpunit/php-text-template/LICENSE33
-rw-r--r--vendor/phpunit/php-text-template/README.md12
-rw-r--r--vendor/phpunit/php-text-template/composer.json43
-rw-r--r--vendor/phpunit/php-text-template/src/Template.php107
-rw-r--r--vendor/phpunit/php-text-template/src/exceptions/Exception.php16
-rw-r--r--vendor/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php14
-rw-r--r--vendor/phpunit/php-text-template/src/exceptions/RuntimeException.php16
-rw-r--r--vendor/phpunit/php-timer/.psalm/baseline.xml2
-rw-r--r--vendor/phpunit/php-timer/.psalm/config.xml16
-rw-r--r--vendor/phpunit/php-timer/ChangeLog.md138
-rw-r--r--vendor/phpunit/php-timer/LICENSE33
-rw-r--r--vendor/phpunit/php-timer/README.md104
-rw-r--r--vendor/phpunit/php-timer/composer.json45
-rw-r--r--vendor/phpunit/php-timer/src/Duration.php109
-rw-r--r--vendor/phpunit/php-timer/src/ResourceUsageFormatter.php73
-rw-r--r--vendor/phpunit/php-timer/src/Timer.php40
-rw-r--r--vendor/phpunit/php-timer/src/exceptions/Exception.php16
-rw-r--r--vendor/phpunit/php-timer/src/exceptions/NoActiveTimerException.php16
-rw-r--r--vendor/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php16
-rw-r--r--vendor/phpunit/phpunit/.phpstorm.meta.php33
-rw-r--r--vendor/phpunit/phpunit/.phpunit.result.cache1
-rw-r--r--vendor/phpunit/phpunit/ChangeLog-8.5.md234
-rw-r--r--vendor/phpunit/phpunit/ChangeLog-9.5.md153
-rw-r--r--vendor/phpunit/phpunit/LICENSE33
-rw-r--r--vendor/phpunit/phpunit/README.md43
-rw-r--r--vendor/phpunit/phpunit/composer.json94
-rw-r--r--vendor/phpunit/phpunit/phpunit98
-rw-r--r--vendor/phpunit/phpunit/phpunit.xsd328
-rw-r--r--vendor/phpunit/phpunit/schema/8.5.xsd317
-rw-r--r--vendor/phpunit/phpunit/schema/9.2.xsd317
-rw-r--r--vendor/phpunit/phpunit/src/Exception.php19
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Assert.php2854
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Assert/Functions.php3035
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php35
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php35
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php52
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php142
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php50
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php70
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php50
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php21
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php269
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php138
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php108
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php108
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php100
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php85
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php67
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php78
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php74
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php54
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php54
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php54
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php54
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php51
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php137
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php109
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php72
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php37
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php37
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php37
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php88
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php59
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php151
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php29
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php148
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php51
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php136
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php51
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php63
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php55
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php140
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php77
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php51
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php85
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php48
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php109
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php53
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php77
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php63
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php40
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php39
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php91
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php87
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php35
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php210
-rw-r--r--vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php75
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Error/Error.php26
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Error/Notice.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Error/Warning.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/ErrorTestCase.php66
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php32
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php24
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php38
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php37
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php37
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php37
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php37
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/Error.php24
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/Exception.php81
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php42
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/IncompleteTestError.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php46
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/MissingCoversAnnotationException.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/OutputError.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php32
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/SkippedTestError.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/SkippedTestSuiteError.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/SyntheticError.php61
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/SyntheticSkippedError.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/UnintentionallyCoveredCodeError.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Exception/Warning.php24
-rw-r--r--vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php122
-rw-r--r--vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php206
-rw-r--r--vendor/phpunit/phpunit/src/Framework/IncompleteTest.php19
-rw-r--r--vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php66
-rw-r--r--vendor/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Api/Api.php97
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Api/Method.php30
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Api/MockedCloneMethod.php21
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Api/UnmockedCloneMethod.php23
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php25
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php306
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php65
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php26
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php58
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php24
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php53
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php29
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php29
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php32
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php19
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php33
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php21
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php21
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php21
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php21
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php19
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php27
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php17
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php23
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php1004
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator/deprecation.tpl2
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_class.tpl6
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method.tpl22
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_void.tpl20
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_static_method.tpl5
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method.tpl22
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_void.tpl22
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator/trait_class.tpl6
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator/wsdl_class.tpl9
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Generator/wsdl_method.tpl4
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php254
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php186
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php272
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php48
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php516
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php69
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php398
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php45
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/MockObject.php27
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/MockTrait.php54
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/MockType.php21
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php36
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php31
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php130
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php47
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php75
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php64
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php50
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php64
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php102
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php68
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php160
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Stub.php26
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php57
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php46
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php41
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php59
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php45
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php32
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php45
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php53
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php27
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Verifiable.php26
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Reorderable.php28
-rw-r--r--vendor/phpunit/phpunit/src/Framework/SelfDescribing.php21
-rw-r--r--vendor/phpunit/phpunit/src/Framework/SkippedTest.php19
-rw-r--r--vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php66
-rw-r--r--vendor/phpunit/phpunit/src/Framework/Test.php23
-rw-r--r--vendor/phpunit/phpunit/src/Framework/TestBuilder.php239
-rw-r--r--vendor/phpunit/phpunit/src/Framework/TestCase.php2581
-rw-r--r--vendor/phpunit/phpunit/src/Framework/TestFailure.php155
-rw-r--r--vendor/phpunit/phpunit/src/Framework/TestListener.php45
-rw-r--r--vendor/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php59
-rw-r--r--vendor/phpunit/phpunit/src/Framework/TestResult.php1318
-rw-r--r--vendor/phpunit/phpunit/src/Framework/TestSuite.php914
-rw-r--r--vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php83
-rw-r--r--vendor/phpunit/phpunit/src/Framework/WarningTestCase.php66
-rw-r--r--vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php161
-rw-r--r--vendor/phpunit/phpunit/src/Runner/DefaultTestResultCache.php157
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Exception.php19
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php117
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php75
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php23
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Filter/Factory.php61
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php58
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php23
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php136
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php30
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/Hook.php23
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/TestHook.php23
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php141
-rw-r--r--vendor/phpunit/phpunit/src/Runner/NullTestResultCache.php42
-rw-r--r--vendor/phpunit/phpunit/src/Runner/PhptTestCase.php864
-rw-r--r--vendor/phpunit/phpunit/src/Runner/ResultCacheExtension.php110
-rw-r--r--vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php123
-rw-r--r--vendor/phpunit/phpunit/src/Runner/TestResultCache.php28
-rw-r--r--vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php24
-rw-r--r--vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php394
-rw-r--r--vendor/phpunit/phpunit/src/Runner/Version.php65
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/CliArguments/Builder.php887
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php2107
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/CliArguments/Exception.php19
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php365
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/Command.php903
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php592
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php19
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php19
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php17
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php29
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php29
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/Help.php265
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php23
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/TestRunner.php1272
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.php103
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php362
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php65
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php57
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php45
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php34
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php34
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php45
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php56
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php34
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php56
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php34
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php151
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php19
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php32
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php62
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php32
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php62
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php73
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php32
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php69
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php53
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php1264
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php34
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php146
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php34
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php34
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php34
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php34
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php34
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php73
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php19
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php19
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php53
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php31
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php33
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php33
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php31
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php33
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php31
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php28
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php79
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php20
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php51
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php47
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php49
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php70
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php27
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php54
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php37
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php27
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php57
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php43
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php57
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php43
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php57
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php142
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php121
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php54
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php57
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php71
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php50
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php714
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php78
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php62
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php56
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php62
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php65
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php62
-rw-r--r--vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php66
-rw-r--r--vendor/phpunit/phpunit/src/Util/Annotation/DocBlock.php551
-rw-r--r--vendor/phpunit/phpunit/src/Util/Annotation/Registry.php93
-rw-r--r--vendor/phpunit/phpunit/src/Util/Blacklist.php41
-rw-r--r--vendor/phpunit/phpunit/src/Util/Color.php159
-rw-r--r--vendor/phpunit/phpunit/src/Util/ErrorHandler.php156
-rw-r--r--vendor/phpunit/phpunit/src/Util/Exception.php19
-rw-r--r--vendor/phpunit/phpunit/src/Util/ExcludeList.php261
-rw-r--r--vendor/phpunit/phpunit/src/Util/FileLoader.php83
-rw-r--r--vendor/phpunit/phpunit/src/Util/Filesystem.php41
-rw-r--r--vendor/phpunit/phpunit/src/Util/Filter.php115
-rw-r--r--vendor/phpunit/phpunit/src/Util/GlobalState.php203
-rw-r--r--vendor/phpunit/phpunit/src/Util/InvalidDataSetException.php19
-rw-r--r--vendor/phpunit/phpunit/src/Util/Json.php98
-rw-r--r--vendor/phpunit/phpunit/src/Util/Log/JUnit.php424
-rw-r--r--vendor/phpunit/phpunit/src/Util/Log/TeamCity.php383
-rw-r--r--vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php416
-rw-r--r--vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php236
-rw-r--r--vendor/phpunit/phpunit/src/Util/PHP/Template/PhptTestCase.tpl57
-rw-r--r--vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl119
-rw-r--r--vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl122
-rw-r--r--vendor/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php52
-rw-r--r--vendor/phpunit/phpunit/src/Util/Printer.php116
-rw-r--r--vendor/phpunit/phpunit/src/Util/RegularExpression.php31
-rw-r--r--vendor/phpunit/phpunit/src/Util/Test.php784
-rw-r--r--vendor/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php381
-rw-r--r--vendor/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php140
-rw-r--r--vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php312
-rw-r--r--vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php343
-rw-r--r--vendor/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php388
-rw-r--r--vendor/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php52
-rw-r--r--vendor/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php261
-rw-r--r--vendor/phpunit/phpunit/src/Util/TextTestListRenderer.php54
-rw-r--r--vendor/phpunit/phpunit/src/Util/Type.php52
-rw-r--r--vendor/phpunit/phpunit/src/Util/VersionComparisonOperator.php57
-rw-r--r--vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php81
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml.php193
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml/Exception.php19
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php19
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml/Loader.php117
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php31
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml/SchemaDetector.php39
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml/SchemaFinder.php53
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php48
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php38
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml/ValidationResult.php69
-rw-r--r--vendor/phpunit/phpunit/src/Util/Xml/Validator.php35
-rw-r--r--vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php90
-rw-r--r--vendor/sebastian/cli-parser/ChangeLog.md15
-rw-r--r--vendor/sebastian/cli-parser/LICENSE33
-rw-r--r--vendor/sebastian/cli-parser/README.md17
-rw-r--r--vendor/sebastian/cli-parser/composer.json41
-rw-r--r--vendor/sebastian/cli-parser/infection.json12
-rw-r--r--vendor/sebastian/cli-parser/src/Parser.php204
-rw-r--r--vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php26
-rw-r--r--vendor/sebastian/cli-parser/src/exceptions/Exception.php16
-rw-r--r--vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php26
-rw-r--r--vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php26
-rw-r--r--vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php26
-rw-r--r--vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md38
-rw-r--r--vendor/sebastian/code-unit-reverse-lookup/LICENSE33
-rw-r--r--vendor/sebastian/code-unit-reverse-lookup/README.md20
-rw-r--r--vendor/sebastian/code-unit-reverse-lookup/composer.json36
-rw-r--r--vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php125
-rw-r--r--vendor/sebastian/code-unit/.psalm/baseline.xml23
-rw-r--r--vendor/sebastian/code-unit/.psalm/config.xml16
-rw-r--r--vendor/sebastian/code-unit/ChangeLog.md65
-rw-r--r--vendor/sebastian/code-unit/LICENSE33
-rw-r--r--vendor/sebastian/code-unit/README.md17
-rw-r--r--vendor/sebastian/code-unit/composer.json50
-rw-r--r--vendor/sebastian/code-unit/src/ClassMethodUnit.php24
-rw-r--r--vendor/sebastian/code-unit/src/ClassUnit.php24
-rw-r--r--vendor/sebastian/code-unit/src/CodeUnit.php445
-rw-r--r--vendor/sebastian/code-unit/src/CodeUnitCollection.php84
-rw-r--r--vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php55
-rw-r--r--vendor/sebastian/code-unit/src/FunctionUnit.php24
-rw-r--r--vendor/sebastian/code-unit/src/InterfaceMethodUnit.php24
-rw-r--r--vendor/sebastian/code-unit/src/InterfaceUnit.php24
-rw-r--r--vendor/sebastian/code-unit/src/Mapper.php414
-rw-r--r--vendor/sebastian/code-unit/src/TraitMethodUnit.php24
-rw-r--r--vendor/sebastian/code-unit/src/TraitUnit.php24
-rw-r--r--vendor/sebastian/code-unit/src/exceptions/Exception.php16
-rw-r--r--vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php16
-rw-r--r--vendor/sebastian/code-unit/src/exceptions/NoTraitException.php16
-rw-r--r--vendor/sebastian/code-unit/src/exceptions/ReflectionException.php16
-rw-r--r--vendor/sebastian/comparator/ChangeLog.md108
-rw-r--r--vendor/sebastian/comparator/LICENSE33
-rw-r--r--vendor/sebastian/comparator/README.md41
-rw-r--r--vendor/sebastian/comparator/composer.json57
-rw-r--r--vendor/sebastian/comparator/src/ArrayComparator.php141
-rw-r--r--vendor/sebastian/comparator/src/Comparator.php61
-rw-r--r--vendor/sebastian/comparator/src/ComparisonFailure.php129
-rw-r--r--vendor/sebastian/comparator/src/DOMNodeComparator.php93
-rw-r--r--vendor/sebastian/comparator/src/DateTimeComparator.php95
-rw-r--r--vendor/sebastian/comparator/src/DoubleComparator.php59
-rw-r--r--vendor/sebastian/comparator/src/ExceptionComparator.php54
-rw-r--r--vendor/sebastian/comparator/src/Factory.php142
-rw-r--r--vendor/sebastian/comparator/src/MockObjectComparator.php48
-rw-r--r--vendor/sebastian/comparator/src/NumericComparator.php86
-rw-r--r--vendor/sebastian/comparator/src/ObjectComparator.php112
-rw-r--r--vendor/sebastian/comparator/src/ResourceComparator.php54
-rw-r--r--vendor/sebastian/comparator/src/ScalarComparator.php98
-rw-r--r--vendor/sebastian/comparator/src/SplObjectStorageComparator.php71
-rw-r--r--vendor/sebastian/comparator/src/TypeComparator.php62
-rw-r--r--vendor/sebastian/comparator/src/exceptions/Exception.php16
-rw-r--r--vendor/sebastian/comparator/src/exceptions/RuntimeException.php14
-rw-r--r--vendor/sebastian/complexity/.psalm/baseline.xml2
-rw-r--r--vendor/sebastian/complexity/.psalm/config.xml16
-rw-r--r--vendor/sebastian/complexity/ChangeLog.md30
-rw-r--r--vendor/sebastian/complexity/LICENSE33
-rw-r--r--vendor/sebastian/complexity/README.md22
-rw-r--r--vendor/sebastian/complexity/composer.json41
-rw-r--r--vendor/sebastian/complexity/src/Calculator.php88
-rw-r--r--vendor/sebastian/complexity/src/Complexity/Complexity.php42
-rw-r--r--vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php72
-rw-r--r--vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php55
-rw-r--r--vendor/sebastian/complexity/src/Exception/Exception.php16
-rw-r--r--vendor/sebastian/complexity/src/Exception/RuntimeException.php14
-rw-r--r--vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php109
-rw-r--r--vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php59
-rw-r--r--vendor/sebastian/diff/ChangeLog.md88
-rw-r--r--vendor/sebastian/diff/LICENSE33
-rw-r--r--vendor/sebastian/diff/README.md202
-rw-r--r--vendor/sebastian/diff/composer.json47
-rw-r--r--vendor/sebastian/diff/src/Chunk.php89
-rw-r--r--vendor/sebastian/diff/src/Diff.php64
-rw-r--r--vendor/sebastian/diff/src/Differ.php327
-rw-r--r--vendor/sebastian/diff/src/Exception/ConfigurationException.php38
-rw-r--r--vendor/sebastian/diff/src/Exception/Exception.php16
-rw-r--r--vendor/sebastian/diff/src/Exception/InvalidArgumentException.php14
-rw-r--r--vendor/sebastian/diff/src/Line.php45
-rw-r--r--vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php18
-rw-r--r--vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php88
-rw-r--r--vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php52
-rw-r--r--vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php72
-rw-r--r--vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php19
-rw-r--r--vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php338
-rw-r--r--vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php272
-rw-r--r--vendor/sebastian/diff/src/Parser.php110
-rw-r--r--vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php70
-rw-r--r--vendor/sebastian/environment/ChangeLog.md169
-rw-r--r--vendor/sebastian/environment/LICENSE33
-rw-r--r--vendor/sebastian/environment/README.md22
-rw-r--r--vendor/sebastian/environment/composer.json40
-rw-r--r--vendor/sebastian/environment/src/Console.php189
-rw-r--r--vendor/sebastian/environment/src/OperatingSystem.php53
-rw-r--r--vendor/sebastian/environment/src/Runtime.php317
-rw-r--r--vendor/sebastian/exporter/ChangeLog.md64
-rw-r--r--vendor/sebastian/exporter/LICENSE33
-rw-r--r--vendor/sebastian/exporter/README.md174
-rw-r--r--vendor/sebastian/exporter/composer.json56
-rw-r--r--vendor/sebastian/exporter/src/Exporter.php330
-rw-r--r--vendor/sebastian/global-state/ChangeLog.md79
-rw-r--r--vendor/sebastian/global-state/LICENSE33
-rw-r--r--vendor/sebastian/global-state/README.md20
-rw-r--r--vendor/sebastian/global-state/composer.json51
-rw-r--r--vendor/sebastian/global-state/src/CodeExporter.php109
-rw-r--r--vendor/sebastian/global-state/src/ExcludeList.php119
-rw-r--r--vendor/sebastian/global-state/src/Restorer.php143
-rw-r--r--vendor/sebastian/global-state/src/Snapshot.php443
-rw-r--r--vendor/sebastian/global-state/src/exceptions/Exception.php16
-rw-r--r--vendor/sebastian/global-state/src/exceptions/RuntimeException.php14
-rw-r--r--vendor/sebastian/lines-of-code/.psalm/baseline.xml2
-rw-r--r--vendor/sebastian/lines-of-code/.psalm/config.xml16
-rw-r--r--vendor/sebastian/lines-of-code/ChangeLog.md34
-rw-r--r--vendor/sebastian/lines-of-code/LICENSE33
-rw-r--r--vendor/sebastian/lines-of-code/README.md22
-rw-r--r--vendor/sebastian/lines-of-code/composer.json42
-rw-r--r--vendor/sebastian/lines-of-code/src/Counter.php91
-rw-r--r--vendor/sebastian/lines-of-code/src/Exception/Exception.php16
-rw-r--r--vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php16
-rw-r--r--vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php16
-rw-r--r--vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php14
-rw-r--r--vendor/sebastian/lines-of-code/src/LineCountingVisitor.php82
-rw-r--r--vendor/sebastian/lines-of-code/src/LinesOfCode.php98
-rw-r--r--vendor/sebastian/object-enumerator/.psalm/baseline.xml9
-rw-r--r--vendor/sebastian/object-enumerator/.psalm/config.xml16
-rw-r--r--vendor/sebastian/object-enumerator/ChangeLog.md88
-rw-r--r--vendor/sebastian/object-enumerator/LICENSE33
-rw-r--r--vendor/sebastian/object-enumerator/README.md20
-rw-r--r--vendor/sebastian/object-enumerator/composer.json43
-rw-r--r--vendor/sebastian/object-enumerator/phpunit.xml24
-rw-r--r--vendor/sebastian/object-enumerator/src/Enumerator.php88
-rw-r--r--vendor/sebastian/object-enumerator/src/Exception.php16
-rw-r--r--vendor/sebastian/object-enumerator/src/InvalidArgumentException.php14
-rw-r--r--vendor/sebastian/object-reflector/.psalm/baseline.xml8
-rw-r--r--vendor/sebastian/object-reflector/.psalm/config.xml16
-rw-r--r--vendor/sebastian/object-reflector/ChangeLog.md55
-rw-r--r--vendor/sebastian/object-reflector/LICENSE33
-rw-r--r--vendor/sebastian/object-reflector/README.md20
-rw-r--r--vendor/sebastian/object-reflector/composer.json41
-rw-r--r--vendor/sebastian/object-reflector/src/Exception.php16
-rw-r--r--vendor/sebastian/object-reflector/src/InvalidArgumentException.php14
-rw-r--r--vendor/sebastian/object-reflector/src/ObjectReflector.php51
-rw-r--r--vendor/sebastian/recursion-context/.psalm/baseline.xml8
-rw-r--r--vendor/sebastian/recursion-context/.psalm/config.xml16
-rw-r--r--vendor/sebastian/recursion-context/ChangeLog.md33
-rw-r--r--vendor/sebastian/recursion-context/LICENSE33
-rw-r--r--vendor/sebastian/recursion-context/README.md18
-rw-r--r--vendor/sebastian/recursion-context/composer.json44
-rw-r--r--vendor/sebastian/recursion-context/src/Context.php186
-rw-r--r--vendor/sebastian/recursion-context/src/Exception.php16
-rw-r--r--vendor/sebastian/recursion-context/src/InvalidArgumentException.php14
-rw-r--r--vendor/sebastian/resource-operations/.gitattributes7
-rw-r--r--vendor/sebastian/resource-operations/.gitignore6
-rw-r--r--vendor/sebastian/resource-operations/ChangeLog.md54
-rw-r--r--vendor/sebastian/resource-operations/LICENSE33
-rw-r--r--vendor/sebastian/resource-operations/README.md14
-rw-r--r--vendor/sebastian/resource-operations/build/generate.php65
-rw-r--r--vendor/sebastian/resource-operations/composer.json37
-rw-r--r--vendor/sebastian/resource-operations/src/ResourceOperations.php2232
-rw-r--r--vendor/sebastian/type/ChangeLog.md123
-rw-r--r--vendor/sebastian/type/LICENSE33
-rw-r--r--vendor/sebastian/type/README.md20
-rw-r--r--vendor/sebastian/type/composer.json49
-rw-r--r--vendor/sebastian/type/src/CallableType.php197
-rw-r--r--vendor/sebastian/type/src/FalseType.php46
-rw-r--r--vendor/sebastian/type/src/GenericObjectType.php46
-rw-r--r--vendor/sebastian/type/src/IterableType.php76
-rw-r--r--vendor/sebastian/type/src/MixedType.php33
-rw-r--r--vendor/sebastian/type/src/NullType.php43
-rw-r--r--vendor/sebastian/type/src/ObjectType.php66
-rw-r--r--vendor/sebastian/type/src/ReflectionMapper.php123
-rw-r--r--vendor/sebastian/type/src/SimpleType.php92
-rw-r--r--vendor/sebastian/type/src/StaticType.php60
-rw-r--r--vendor/sebastian/type/src/Type.php101
-rw-r--r--vendor/sebastian/type/src/TypeName.php113
-rw-r--r--vendor/sebastian/type/src/UnionType.php115
-rw-r--r--vendor/sebastian/type/src/UnknownType.php43
-rw-r--r--vendor/sebastian/type/src/VoidType.php28
-rw-r--r--vendor/sebastian/type/src/exception/Exception.php16
-rw-r--r--vendor/sebastian/type/src/exception/LogicException.php14
-rw-r--r--vendor/sebastian/type/src/exception/RuntimeException.php14
-rw-r--r--vendor/sebastian/version/.gitattributes4
-rw-r--r--vendor/sebastian/version/.gitignore2
-rw-r--r--vendor/sebastian/version/ChangeLog.md25
-rw-r--r--vendor/sebastian/version/LICENSE33
-rw-r--r--vendor/sebastian/version/README.md43
-rw-r--r--vendor/sebastian/version/composer.json37
-rw-r--r--vendor/sebastian/version/src/Version.php97
-rw-r--r--vendor/symfony/polyfill-ctype/Ctype.php232
-rw-r--r--vendor/symfony/polyfill-ctype/LICENSE19
-rw-r--r--vendor/symfony/polyfill-ctype/README.md12
-rw-r--r--vendor/symfony/polyfill-ctype/bootstrap.php50
-rw-r--r--vendor/symfony/polyfill-ctype/bootstrap80.php46
-rw-r--r--vendor/symfony/polyfill-ctype/composer.json41
-rw-r--r--vendor/theseer/tokenizer/.php_cs.dist213
-rw-r--r--vendor/theseer/tokenizer/CHANGELOG.md71
-rw-r--r--vendor/theseer/tokenizer/LICENSE30
-rw-r--r--vendor/theseer/tokenizer/README.md50
-rw-r--r--vendor/theseer/tokenizer/composer.json27
-rw-r--r--vendor/theseer/tokenizer/composer.lock22
-rw-r--r--vendor/theseer/tokenizer/src/Exception.php5
-rw-r--r--vendor/theseer/tokenizer/src/NamespaceUri.php25
-rw-r--r--vendor/theseer/tokenizer/src/NamespaceUriException.php5
-rw-r--r--vendor/theseer/tokenizer/src/Token.php35
-rw-r--r--vendor/theseer/tokenizer/src/TokenCollection.php93
-rw-r--r--vendor/theseer/tokenizer/src/TokenCollectionException.php5
-rw-r--r--vendor/theseer/tokenizer/src/Tokenizer.php142
-rw-r--r--vendor/theseer/tokenizer/src/XMLSerializer.php79
-rw-r--r--vendor/webmozart/assert/.editorconfig12
-rw-r--r--vendor/webmozart/assert/.github/workflows/ci.yaml120
-rw-r--r--vendor/webmozart/assert/.php_cs24
-rw-r--r--vendor/webmozart/assert/CHANGELOG.md190
-rw-r--r--vendor/webmozart/assert/LICENSE20
-rw-r--r--vendor/webmozart/assert/README.md287
-rw-r--r--vendor/webmozart/assert/composer.json43
-rw-r--r--vendor/webmozart/assert/psalm.xml14
-rw-r--r--vendor/webmozart/assert/src/Assert.php2066
-rw-r--r--vendor/webmozart/assert/src/InvalidArgumentException.php16
-rw-r--r--vendor/webmozart/assert/src/Mixin.php2916
2489 files changed, 147302 insertions, 6623 deletions
diff --git a/.gitignore b/.gitignore
index f6c86fa35..f310f9dca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@ Thumbs.db
/lock/*
/.vscode/settings.json
/vendor/**/.git
+/.phpunit.result.cache
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 091e735a0..6d317b8c6 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,4 +1,6 @@
-## Contributing code the right way
+## Contributing code the right way
+
+*NOTE (March, 2022): Gitea registration is disabled until further notice. Please PM me on the forum or post in the Development subforum, I'll make an account for you ASAP. -fox*
TLDR: it works like Github.
@@ -9,7 +11,7 @@ TLDR: it works like Github.
If you have any other questions, see this [forum thread](https://discourse.tt-rss.org/t/how-to-contribute-code-via-pull-requests-on-git-tt-rss-org/1850).
-Please don't inline patches in forum posts, attach files instead (``.patch`` or ``.diff`` file
+Please don't inline patches in forum posts, attach files instead (``.patch`` or ``.diff`` file
extensions should work).
## Contributing translations
@@ -17,8 +19,8 @@ extensions should work).
Believe it or not, people also spam using Weblate. Therefore, some minor jumping through hoops is involved here:
1. Register on [Weblate](https://weblate.tt-rss.org/) / forums;
-2. Post in the [Weblate discussion thread](https://community.tt-rss.org/t/easier-translations-with-weblate/1680) on the forum, ask to be added to a project
+2. Post in the [Weblate discussion thread](https://community.tt-rss.org/t/easier-translations-with-weblate/1680) on the forum, ask to be added to a project
you're interested in;
-3. You'll be given proper access rights and will be able to edit translations.
+3. You'll be given proper access rights and will be able to edit translations.
That's it. If the language you're interested is not available yet, ask and we'll add it;
diff --git a/backend.php b/backend.php
index b2ff46dca..59f3982c5 100644
--- a/backend.php
+++ b/backend.php
@@ -86,10 +86,13 @@
1440 => __("Daily"),
10080 => __("Weekly"));
- $access_level_names = array(
- 0 => __("User"),
- 5 => __("Power User"),
- 10 => __("Administrator"));
+ $access_level_names = [
+ UserHelper::ACCESS_LEVEL_DISABLED => __("Disabled"),
+ UserHelper::ACCESS_LEVEL_READONLY => __("Read Only"),
+ UserHelper::ACCESS_LEVEL_USER => __("User"),
+ UserHelper::ACCESS_LEVEL_POWERUSER => __("Power User"),
+ UserHelper::ACCESS_LEVEL_ADMIN => __("Administrator")
+ ];
// shortcut syntax for plugin methods (?op=plugin--pmethod&...params)
/* if (strpos($op, PluginHost::PUBLIC_METHOD_DELIMITER) !== false) {
@@ -121,7 +124,7 @@
$handler = $reflection->newInstanceWithoutConstructor();
}
- if ($handler && implements_interface($handler, 'IHandler')) {
+ if (implements_interface($handler, 'IHandler')) {
$handler->__construct($_REQUEST);
if (validate_csrf($csrf_token) || $handler->csrf_ignore($method)) {
@@ -161,6 +164,6 @@
}
header("Content-Type: text/json");
- print Errors::to_json(Errors::E_UNKNOWN_METHOD, [ "info" => (isset($handler) ? get_class($handler) : "UNKNOWN:".$_REQUEST["op"]) . "->$method"]);
+ print Errors::to_json(Errors::E_UNKNOWN_METHOD, [ "info" => (isset($handler) ? get_class($handler) : "UNKNOWN:".$op) . "->$method"]);
?>
diff --git a/classes/api.php b/classes/api.php
index 5f825e551..b17114693 100755
--- a/classes/api.php
+++ b/classes/api.php
@@ -1,7 +1,7 @@
<?php
class API extends Handler {
- const API_LEVEL = 17;
+ const API_LEVEL = 18;
const STATUS_OK = 0;
const STATUS_ERR = 1;
@@ -13,21 +13,22 @@ class API extends Handler {
const E_UNKNOWN_METHOD = "UNKNOWN_METHOD";
const E_OPERATION_FAILED = "E_OPERATION_FAILED";
+ /** @var int|null */
private $seq;
- private static function _param_to_bool($p) {
- return $p && ($p !== "f" && $p !== "false");
- }
-
- private function _wrap($status, $reply) {
+ /**
+ * @param array<int|string, mixed> $reply
+ */
+ private function _wrap(int $status, array $reply): bool {
print json_encode([
"seq" => $this->seq,
"status" => $status,
"content" => $reply
]);
+ return true;
}
- function before($method) {
+ function before(string $method): bool {
if (parent::before($method)) {
header("Content-Type: text/json");
@@ -48,17 +49,17 @@ class API extends Handler {
return false;
}
- function getVersion() {
+ function getVersion(): bool {
$rv = array("version" => Config::get_version());
- $this->_wrap(self::STATUS_OK, $rv);
+ return $this->_wrap(self::STATUS_OK, $rv);
}
- function getApiLevel() {
+ function getApiLevel(): bool {
$rv = array("level" => self::API_LEVEL);
- $this->_wrap(self::STATUS_OK, $rv);
+ return $this->_wrap(self::STATUS_OK, $rv);
}
- function login() {
+ function login(): bool {
if (session_status() == PHP_SESSION_ACTIVE) {
session_destroy();
@@ -78,62 +79,60 @@ class API extends Handler {
// needed for _get_config()
UserHelper::load_user_plugins($_SESSION['uid']);
- $this->_wrap(self::STATUS_OK, array("session_id" => session_id(),
+ return $this->_wrap(self::STATUS_OK, array("session_id" => session_id(),
"config" => $this->_get_config(),
"api_level" => self::API_LEVEL));
} else {
- $this->_wrap(self::STATUS_ERR, array("error" => self::E_LOGIN_ERROR));
+ return $this->_wrap(self::STATUS_ERR, array("error" => self::E_LOGIN_ERROR));
}
} else {
- $this->_wrap(self::STATUS_ERR, array("error" => self::E_API_DISABLED));
+ return $this->_wrap(self::STATUS_ERR, array("error" => self::E_API_DISABLED));
}
- } else {
- $this->_wrap(self::STATUS_ERR, array("error" => self::E_LOGIN_ERROR));
- return;
}
+ return $this->_wrap(self::STATUS_ERR, array("error" => self::E_LOGIN_ERROR));
}
- function logout() {
+ function logout(): bool {
UserHelper::logout();
- $this->_wrap(self::STATUS_OK, array("status" => "OK"));
+ return $this->_wrap(self::STATUS_OK, array("status" => "OK"));
}
- function isLoggedIn() {
- $this->_wrap(self::STATUS_OK, array("status" => $_SESSION["uid"] != ''));
+ function isLoggedIn(): bool {
+ return $this->_wrap(self::STATUS_OK, array("status" => $_SESSION["uid"] != ''));
}
- function getUnread() {
+ function getUnread(): bool {
$feed_id = clean($_REQUEST["feed_id"] ?? "");
- $is_cat = clean($_REQUEST["is_cat"] ?? "");
+ $is_cat = self::_param_to_bool($_REQUEST["is_cat"] ?? false);
if ($feed_id) {
- $this->_wrap(self::STATUS_OK, array("unread" => getFeedUnread($feed_id, $is_cat)));
+ return $this->_wrap(self::STATUS_OK, array("unread" => Feeds::_get_counters($feed_id, $is_cat, true)));
} else {
- $this->_wrap(self::STATUS_OK, array("unread" => Feeds::_get_global_unread()));
+ return $this->_wrap(self::STATUS_OK, array("unread" => Feeds::_get_global_unread()));
}
}
/* Method added for ttrss-reader for Android */
- function getCounters() {
- $this->_wrap(self::STATUS_OK, Counters::get_all());
+ function getCounters(): bool {
+ return $this->_wrap(self::STATUS_OK, Counters::get_all());
}
- function getFeeds() {
- $cat_id = clean($_REQUEST["cat_id"]);
- $unread_only = self::_param_to_bool(clean($_REQUEST["unread_only"] ?? 0));
+ function getFeeds(): bool {
+ $cat_id = (int) clean($_REQUEST["cat_id"]);
+ $unread_only = self::_param_to_bool($_REQUEST["unread_only"] ?? false);
$limit = (int) clean($_REQUEST["limit"] ?? 0);
$offset = (int) clean($_REQUEST["offset"] ?? 0);
- $include_nested = self::_param_to_bool(clean($_REQUEST["include_nested"] ?? false));
+ $include_nested = self::_param_to_bool($_REQUEST["include_nested"] ?? false);
$feeds = $this->_api_get_feeds($cat_id, $unread_only, $limit, $offset, $include_nested);
- $this->_wrap(self::STATUS_OK, $feeds);
+ return $this->_wrap(self::STATUS_OK, $feeds);
}
- function getCategories() {
- $unread_only = self::_param_to_bool(clean($_REQUEST["unread_only"] ?? false));
- $enable_nested = self::_param_to_bool(clean($_REQUEST["enable_nested"] ?? false));
- $include_empty = self::_param_to_bool(clean($_REQUEST['include_empty'] ?? false));
+ function getCategories(): bool {
+ $unread_only = self::_param_to_bool($_REQUEST["unread_only"] ?? false);
+ $enable_nested = self::_param_to_bool($_REQUEST["enable_nested"] ?? false);
+ $include_empty = self::_param_to_bool($_REQUEST["include_empty"] ?? false);
// TODO do not return empty categories, return Uncategorized and standard virtual cats
@@ -153,7 +152,7 @@ class API extends Handler {
foreach ($categories->find_many() as $category) {
if ($include_empty || $category->num_feeds > 0 || $category->num_cats > 0) {
- $unread = getFeedUnread($category->id, true);
+ $unread = Feeds::_get_counters($category->id, true, true);
if ($enable_nested)
$unread += Feeds::_get_cat_children_unread($category->id);
@@ -171,7 +170,7 @@ class API extends Handler {
foreach ([-2,-1,0] as $cat_id) {
if ($include_empty || !$this->_is_cat_empty($cat_id)) {
- $unread = getFeedUnread($cat_id, true);
+ $unread = Feeds::_get_counters($cat_id, true, true);
if ($unread || !$unread_only) {
array_push($cats, [
@@ -183,40 +182,37 @@ class API extends Handler {
}
}
- $this->_wrap(self::STATUS_OK, $cats);
+ return $this->_wrap(self::STATUS_OK, $cats);
}
- function getHeadlines() {
- $feed_id = clean($_REQUEST["feed_id"]);
- if ($feed_id !== "") {
-
- if (is_numeric($feed_id)) $feed_id = (int) $feed_id;
+ function getHeadlines(): bool {
+ $feed_id = clean($_REQUEST["feed_id"] ?? "");
+ if (!empty($feed_id) || is_numeric($feed_id)) { // is_numeric for feed_id "0"
$limit = (int)clean($_REQUEST["limit"] ?? 0 );
if (!$limit || $limit >= 200) $limit = 200;
$offset = (int)clean($_REQUEST["skip"] ?? 0);
$filter = clean($_REQUEST["filter"] ?? "");
- $is_cat = self::_param_to_bool(clean($_REQUEST["is_cat"] ?? false));
- $show_excerpt = self::_param_to_bool(clean($_REQUEST["show_excerpt"] ?? false));
- $show_content = self::_param_to_bool(clean($_REQUEST["show_content"] ?? false));
+ $is_cat = self::_param_to_bool($_REQUEST["is_cat"] ?? false);
+ $show_excerpt = self::_param_to_bool($_REQUEST["show_excerpt"] ?? false);
+ $show_content = self::_param_to_bool($_REQUEST["show_content"] ?? false);
/* all_articles, unread, adaptive, marked, updated */
$view_mode = clean($_REQUEST["view_mode"] ?? null);
- $include_attachments = self::_param_to_bool(clean($_REQUEST["include_attachments"] ?? false));
+ $include_attachments = self::_param_to_bool($_REQUEST["include_attachments"] ?? false);
$since_id = (int)clean($_REQUEST["since_id"] ?? 0);
- $include_nested = self::_param_to_bool(clean($_REQUEST["include_nested"] ?? false));
- $sanitize_content = !isset($_REQUEST["sanitize"]) ||
- self::_param_to_bool($_REQUEST["sanitize"]);
- $force_update = self::_param_to_bool(clean($_REQUEST["force_update"] ?? false));
- $has_sandbox = self::_param_to_bool(clean($_REQUEST["has_sandbox"] ?? false));
+ $include_nested = self::_param_to_bool($_REQUEST["include_nested"] ?? false);
+ $sanitize_content = self::_param_to_bool($_REQUEST["sanitize"] ?? true);
+ $force_update = self::_param_to_bool($_REQUEST["force_update"] ?? false);
+ $has_sandbox = self::_param_to_bool($_REQUEST["has_sandbox"] ?? false);
$excerpt_length = (int)clean($_REQUEST["excerpt_length"] ?? 0);
$check_first_id = (int)clean($_REQUEST["check_first_id"] ?? 0);
- $include_header = self::_param_to_bool(clean($_REQUEST["include_header"] ?? false));
+ $include_header = self::_param_to_bool($_REQUEST["include_header"] ?? false);
$_SESSION['hasSandbox'] = $has_sandbox;
- list($override_order, $skip_first_id_check) = Feeds::_order_to_override_query(clean($_REQUEST["order_by"] ?? null));
+ list($override_order, $skip_first_id_check) = Feeds::_order_to_override_query(clean($_REQUEST["order_by"] ?? ""));
/* do not rely on params below */
@@ -228,16 +224,16 @@ class API extends Handler {
$include_nested, $sanitize_content, $force_update, $excerpt_length, $check_first_id, $skip_first_id_check);
if ($include_header) {
- $this->_wrap(self::STATUS_OK, array($headlines_header, $headlines));
+ return $this->_wrap(self::STATUS_OK, array($headlines_header, $headlines));
} else {
- $this->_wrap(self::STATUS_OK, $headlines);
+ return $this->_wrap(self::STATUS_OK, $headlines);
}
} else {
- $this->_wrap(self::STATUS_ERR, array("error" => self::E_INCORRECT_USAGE));
+ return $this->_wrap(self::STATUS_ERR, array("error" => self::E_INCORRECT_USAGE));
}
}
- function updateArticle() {
+ function updateArticle(): bool {
$article_ids = explode(",", clean($_REQUEST["article_ids"]));
$mode = (int) clean($_REQUEST["mode"]);
$data = clean($_REQUEST["data"] ?? "");
@@ -294,19 +290,19 @@ class API extends Handler {
$num_updated = $sth->rowCount();
- $this->_wrap(self::STATUS_OK, array("status" => "OK",
+ return $this->_wrap(self::STATUS_OK, array("status" => "OK",
"updated" => $num_updated));
} else {
- $this->_wrap(self::STATUS_ERR, array("error" => self::E_INCORRECT_USAGE));
+ return $this->_wrap(self::STATUS_ERR, array("error" => self::E_INCORRECT_USAGE));
}
-
}
- function getArticle() {
+ function getArticle(): bool {
$article_ids = explode(',', clean($_REQUEST['article_id'] ?? ''));
$sanitize_content = self::_param_to_bool($_REQUEST['sanitize'] ?? true);
+ // @phpstan-ignore-next-line
if (count($article_ids)) {
$entries = ORM::for_table('ttrss_entries')
->table_alias('e')
@@ -350,7 +346,7 @@ class API extends Handler {
$article['content'] = Sanitizer::sanitize(
$entry->content,
self::_param_to_bool($entry->hide_images),
- false, $entry->site_url, false, $entry->id);
+ null, $entry->site_url, null, $entry->id);
} else {
$article['content'] = $entry->content;
}
@@ -368,14 +364,16 @@ class API extends Handler {
array_push($articles, $article);
}
- $this->_wrap(self::STATUS_OK, $articles);
- // @phpstan-ignore-next-line
+ return $this->_wrap(self::STATUS_OK, $articles);
} else {
- $this->_wrap(self::STATUS_ERR, ['error' => self::E_INCORRECT_USAGE]);
+ return $this->_wrap(self::STATUS_ERR, ['error' => self::E_INCORRECT_USAGE]);
}
}
- private function _get_config() {
+ /**
+ * @return array<string, array<string, string>|bool|int|string>
+ */
+ private function _get_config(): array {
$config = [
"icons_dir" => Config::get(Config::ICONS_DIR),
"icons_url" => Config::get(Config::ICONS_URL)
@@ -391,42 +389,42 @@ class API extends Handler {
return $config;
}
- function getConfig() {
+ function getConfig(): bool {
$config = $this->_get_config();
- $this->_wrap(self::STATUS_OK, $config);
+ return $this->_wrap(self::STATUS_OK, $config);
}
- function updateFeed() {
+ function updateFeed(): bool {
$feed_id = (int) clean($_REQUEST["feed_id"]);
if (!ini_get("open_basedir")) {
RSSUtils::update_rss_feed($feed_id);
}
- $this->_wrap(self::STATUS_OK, array("status" => "OK"));
+ return $this->_wrap(self::STATUS_OK, array("status" => "OK"));
}
- function catchupFeed() {
+ function catchupFeed(): bool {
$feed_id = clean($_REQUEST["feed_id"]);
- $is_cat = clean($_REQUEST["is_cat"]);
- @$mode = clean($_REQUEST["mode"]);
+ $is_cat = self::_param_to_bool($_REQUEST["is_cat"] ?? false);
+ $mode = clean($_REQUEST["mode"] ?? "");
if (!in_array($mode, ["all", "1day", "1week", "2week"]))
$mode = "all";
Feeds::_catchup($feed_id, $is_cat, $_SESSION["uid"], $mode);
- $this->_wrap(self::STATUS_OK, array("status" => "OK"));
+ return $this->_wrap(self::STATUS_OK, array("status" => "OK"));
}
- function getPref() {
+ function getPref(): bool {
$pref_name = clean($_REQUEST["pref_name"]);
- $this->_wrap(self::STATUS_OK, array("value" => get_pref($pref_name)));
+ return $this->_wrap(self::STATUS_OK, array("value" => get_pref($pref_name)));
}
- function getLabels() {
+ function getLabels(): bool {
$article_id = (int)clean($_REQUEST['article_id'] ?? -1);
$rv = [];
@@ -459,10 +457,10 @@ class API extends Handler {
]);
}
- $this->_wrap(self::STATUS_OK, $rv);
+ return $this->_wrap(self::STATUS_OK, $rv);
}
- function setArticleLabel() {
+ function setArticleLabel(): bool {
$article_ids = explode(",", clean($_REQUEST["article_ids"]));
$label_id = (int) clean($_REQUEST['label_id']);
@@ -477,52 +475,51 @@ class API extends Handler {
foreach ($article_ids as $id) {
if ($assign)
- Labels::add_article($id, $label, $_SESSION["uid"]);
+ Labels::add_article((int)$id, $label, $_SESSION["uid"]);
else
- Labels::remove_article($id, $label, $_SESSION["uid"]);
+ Labels::remove_article((int)$id, $label, $_SESSION["uid"]);
++$num_updated;
}
}
- $this->_wrap(self::STATUS_OK, array("status" => "OK",
+ return $this->_wrap(self::STATUS_OK, array("status" => "OK",
"updated" => $num_updated));
}
- function index($method) {
+ function index(string $method): bool {
$plugin = PluginHost::getInstance()->get_api_method(strtolower($method));
if ($plugin && method_exists($plugin, $method)) {
$reply = $plugin->$method();
- $this->_wrap($reply[0], $reply[1]);
+ return $this->_wrap($reply[0], $reply[1]);
} else {
- $this->_wrap(self::STATUS_ERR, array("error" => self::E_UNKNOWN_METHOD, "method" => $method));
+ return $this->_wrap(self::STATUS_ERR, array("error" => self::E_UNKNOWN_METHOD, "method" => $method));
}
}
- function shareToPublished() {
+ function shareToPublished(): bool {
$title = strip_tags(clean($_REQUEST["title"]));
$url = strip_tags(clean($_REQUEST["url"]));
$content = strip_tags(clean($_REQUEST["content"]));
if (Article::_create_published_article($title, $url, $content, "", $_SESSION["uid"])) {
- $this->_wrap(self::STATUS_OK, array("status" => 'OK'));
+ return $this->_wrap(self::STATUS_OK, array("status" => 'OK'));
} else {
- $this->_wrap(self::STATUS_ERR, array("error" => self::E_OPERATION_FAILED));
+ return $this->_wrap(self::STATUS_ERR, array("error" => self::E_OPERATION_FAILED));
}
}
- private static function _api_get_feeds($cat_id, $unread_only, $limit, $offset, $include_nested = false) {
+ /**
+ * @return array<int, array{'id': int, 'title': string, 'unread': int, 'cat_id': int}>
+ */
+ private static function _api_get_feeds(int $cat_id, bool $unread_only, int $limit, int $offset, bool $include_nested = false): array {
$feeds = [];
- $limit = (int) $limit;
- $offset = (int) $offset;
- $cat_id = (int) $cat_id;
-
/* Labels */
/* API only: -4 All feeds, including virtual feeds */
@@ -549,7 +546,7 @@ class API extends Handler {
if ($cat_id == -4 || $cat_id == -1) {
foreach ([-1, -2, -3, -4, -6, 0] as $i) {
- $unread = getFeedUnread($i);
+ $unread = Feeds::_get_counters($i, false, true);
if ($unread || !$unread_only) {
$title = Feeds::_get_title($i);
@@ -576,7 +573,7 @@ class API extends Handler {
->find_many();
foreach ($categories as $category) {
- $unread = getFeedUnread($category->id, true) +
+ $unread = Feeds::_get_counters($category->id, true, true) +
Feeds::_get_cat_children_unread($category->id);
if ($unread || !$unread_only) {
@@ -610,7 +607,7 @@ class API extends Handler {
}
foreach ($feeds_obj->find_many() as $feed) {
- $unread = getFeedUnread($feed->id);
+ $unread = Feeds::_get_counters($feed->id, false, true);
$has_icon = Feeds::_has_icon($feed->id);
if ($unread || !$unread_only) {
@@ -632,13 +629,17 @@ class API extends Handler {
return $feeds;
}
- private static function _api_get_headlines($feed_id, $limit, $offset,
- $filter, $is_cat, $show_excerpt, $show_content, $view_mode, $order,
- $include_attachments, $since_id,
- $search = "", $include_nested = false, $sanitize_content = true,
- $force_update = false, $excerpt_length = 100, $check_first_id = false, $skip_first_id_check = false) {
-
- if ($force_update && $feed_id > 0 && is_numeric($feed_id)) {
+ /**
+ * @param string|int $feed_id
+ * @return array{0: array<int, array<string, mixed>>, 1: array<string, mixed>} $headlines, $headlines_header
+ */
+ private static function _api_get_headlines($feed_id, int $limit, int $offset,
+ string $filter, bool $is_cat, bool $show_excerpt, bool $show_content, ?string $view_mode, string $order,
+ bool $include_attachments, int $since_id, string $search = "", bool $include_nested = false,
+ bool $sanitize_content = true, bool $force_update = false, int $excerpt_length = 100, ?int $check_first_id = null,
+ bool $skip_first_id_check = false): array {
+
+ if ($force_update && is_numeric($feed_id) && $feed_id > 0) {
// Update the feed if required with some basic flood control
$feed = ORM::for_table('ttrss_feeds')
@@ -746,7 +747,7 @@ class API extends Handler {
$headline_row["content"] = Sanitizer::sanitize(
$line["content"],
self::_param_to_bool($line['hide_images']),
- false, $line["site_url"], false, $line["id"]);
+ null, $line["site_url"], null, $line["id"]);
} else {
$headline_row["content"] = $line["content"];
}
@@ -803,7 +804,7 @@ class API extends Handler {
return array($headlines, $headlines_header);
}
- function unsubscribeFeed() {
+ function unsubscribeFeed(): bool {
$feed_id = (int) clean($_REQUEST["feed_id"]);
$feed_exists = ORM::for_table('ttrss_feeds')
@@ -812,28 +813,28 @@ class API extends Handler {
if ($feed_exists) {
Pref_Feeds::remove_feed($feed_id, $_SESSION['uid']);
- $this->_wrap(self::STATUS_OK, ['status' => 'OK']);
+ return $this->_wrap(self::STATUS_OK, ['status' => 'OK']);
} else {
- $this->_wrap(self::STATUS_ERR, ['error' => self::E_OPERATION_FAILED]);
+ return $this->_wrap(self::STATUS_ERR, ['error' => self::E_OPERATION_FAILED]);
}
}
- function subscribeToFeed() {
+ function subscribeToFeed(): bool {
$feed_url = clean($_REQUEST["feed_url"]);
$category_id = (int) clean($_REQUEST["category_id"]);
- $login = clean($_REQUEST["login"]);
- $password = clean($_REQUEST["password"]);
+ $login = clean($_REQUEST["login"] ?? "");
+ $password = clean($_REQUEST["password"] ?? "");
if ($feed_url) {
$rc = Feeds::_subscribe($feed_url, $category_id, $login, $password);
- $this->_wrap(self::STATUS_OK, array("status" => $rc));
+ return $this->_wrap(self::STATUS_OK, array("status" => $rc));
} else {
- $this->_wrap(self::STATUS_ERR, array("error" => self::E_INCORRECT_USAGE));
+ return $this->_wrap(self::STATUS_ERR, array("error" => self::E_INCORRECT_USAGE));
}
}
- function getFeedTree() {
+ function getFeedTree(): bool {
$include_empty = self::_param_to_bool(clean($_REQUEST['include_empty']));
$pf = new Pref_Feeds($_REQUEST);
@@ -841,12 +842,12 @@ class API extends Handler {
$_REQUEST['mode'] = 2;
$_REQUEST['force_show_empty'] = $include_empty;
- $this->_wrap(self::STATUS_OK,
+ return $this->_wrap(self::STATUS_OK,
array("categories" => $pf->_makefeedtree()));
}
// only works for labels or uncategorized for the time being
- private function _is_cat_empty($id) {
+ private function _is_cat_empty(int $id): bool {
if ($id == -2) {
$label_count = ORM::for_table('ttrss_labels2')
->where('owner_uid', $_SESSION['uid'])
@@ -865,7 +866,8 @@ class API extends Handler {
return false;
}
- private function _get_custom_sort_types() {
+ /** @return array<string, string> */
+ private function _get_custom_sort_types(): array {
$ret = [];
PluginHost::getInstance()->run_hooks_callback(PluginHost::HOOK_HEADLINES_CUSTOM_SORT_MAP, function ($result) use (&$ret) {
diff --git a/classes/article.php b/classes/article.php
index 04855ac9d..e113ed219 100755
--- a/classes/article.php
+++ b/classes/article.php
@@ -4,7 +4,11 @@ class Article extends Handler_Protected {
const ARTICLE_KIND_VIDEO = 2;
const ARTICLE_KIND_YOUTUBE = 3;
- function redirect() {
+ const CATCHUP_MODE_MARK_AS_READ = 0;
+ const CATCHUP_MODE_MARK_AS_UNREAD = 1;
+ const CATCHUP_MODE_TOGGLE = 2;
+
+ function redirect(): void {
$article = ORM::for_table('ttrss_entries')
->table_alias('e')
->join('ttrss_user_entries', [ 'ref_id', '=', 'e.id'], 'ue')
@@ -24,8 +28,7 @@ class Article extends Handler_Protected {
print "Article not found or has an empty URL.";
}
- static function _create_published_article($title, $url, $content, $labels_str,
- $owner_uid) {
+ static function _create_published_article(string $title, string $url, string $content, string $labels_str, int $owner_uid): bool {
$guid = 'SHA1:' . sha1("ttshared:" . $url . $owner_uid); // include owner_uid to prevent global GUID clash
@@ -158,14 +161,14 @@ class Article extends Handler_Protected {
return $rc;
}
- function printArticleTags() {
+ function printArticleTags(): void {
$id = (int) clean($_REQUEST['id'] ?? 0);
print json_encode(["id" => $id,
"tags" => self::_get_tags($id)]);
}
- function setScore() {
+ function setScore(): void {
$ids = array_map("intval", clean($_REQUEST['ids'] ?? []));
$score = (int)clean($_REQUEST['score']);
@@ -179,14 +182,14 @@ class Article extends Handler_Protected {
print json_encode(["id" => $ids, "score" => $score]);
}
- function setArticleTags() {
+ function setArticleTags(): void {
$id = clean($_REQUEST["id"]);
//$tags_str = clean($_REQUEST["tags_str"]);
//$tags = array_unique(array_map('trim', explode(",", $tags_str)));
- $tags = FeedItem_Common::normalize_categories(explode(",", clean($_REQUEST["tags_str"])));
+ $tags = FeedItem_Common::normalize_categories(explode(",", clean($_REQUEST["tags_str"] ?? "")));
$this->pdo->beginTransaction();
@@ -254,18 +257,18 @@ class Article extends Handler_Protected {
print "</ul>";
}*/
- function assigntolabel() {
- return $this->_label_ops(true);
+ function assigntolabel(): void {
+ $this->_label_ops(true);
}
- function removefromlabel() {
- return $this->_label_ops(false);
+ function removefromlabel(): void {
+ $this->_label_ops(false);
}
- private function _label_ops($assign) {
+ private function _label_ops(bool $assign): void {
$reply = array();
- $ids = explode(",", clean($_REQUEST["ids"]));
+ $ids = array_map("intval", array_filter(explode(",", clean($_REQUEST["ids"] ?? "")), "strlen"));
$label_id = clean($_REQUEST["lid"]);
$label = Labels::find_caption($label_id, $_SESSION["uid"]);
@@ -289,11 +292,10 @@ class Article extends Handler_Protected {
print json_encode($reply);
}
- static function _format_enclosures($id,
- $always_display_enclosures,
- $article_content,
- $hide_images = false) {
-
+ /**
+ * @return array{'formatted': string, 'entries': array<int, array<string, mixed>>}
+ */
+ static function _format_enclosures(int $id, bool $always_display_enclosures, string $article_content, bool $hide_images = false): array {
$enclosures = self::_get_enclosures($id);
$enclosures_formatted = "";
@@ -366,7 +368,10 @@ class Article extends Handler_Protected {
return $rv;
}
- static function _get_tags($id, $owner_uid = 0, $tag_cache = false) {
+ /**
+ * @return array<int, string>
+ */
+ static function _get_tags(int $id, int $owner_uid = 0, ?string $tag_cache = null): array {
$a_id = $id;
@@ -383,12 +388,14 @@ class Article extends Handler_Protected {
/* check cache first */
- if ($tag_cache === false) {
+ if (!$tag_cache) {
$csth = $pdo->prepare("SELECT tag_cache FROM ttrss_user_entries
WHERE ref_id = ? AND owner_uid = ?");
$csth->execute([$id, $owner_uid]);
- if ($row = $csth->fetch()) $tag_cache = $row["tag_cache"];
+ if ($row = $csth->fetch()) {
+ $tag_cache = $row["tag_cache"];
+ }
}
if ($tag_cache) {
@@ -416,7 +423,7 @@ class Article extends Handler_Protected {
return $tags;
}
- function getmetadatabyid() {
+ function getmetadatabyid(): void {
$article = ORM::for_table('ttrss_entries')
->join('ttrss_user_entries', ['ref_id', '=', 'id'], 'ue')
->where('ue.owner_uid', $_SESSION['uid'])
@@ -429,7 +436,10 @@ class Article extends Handler_Protected {
}
}
- static function _get_enclosures($id) {
+ /**
+ * @return array<int, array<string, mixed>>
+ */
+ static function _get_enclosures(int $id): array {
$encs = ORM::for_table('ttrss_enclosures')
->where('post_id', $id)
->find_many();
@@ -452,7 +462,7 @@ class Article extends Handler_Protected {
}
- static function _purge_orphans() {
+ static function _purge_orphans(): void {
// purge orphaned posts in main content table
@@ -471,7 +481,11 @@ class Article extends Handler_Protected {
}
}
- static function _catchup_by_id($ids, $cmode, $owner_uid = false) {
+ /**
+ * @param array<int, int> $ids
+ * @param int $cmode Article::CATCHUP_MODE_*
+ */
+ static function _catchup_by_id($ids, int $cmode, ?int $owner_uid = null): void {
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
@@ -479,11 +493,11 @@ class Article extends Handler_Protected {
$ids_qmarks = arr_qmarks($ids);
- if ($cmode == 1) {
+ if ($cmode == Article::CATCHUP_MODE_MARK_AS_UNREAD) {
$sth = $pdo->prepare("UPDATE ttrss_user_entries SET
unread = true
WHERE ref_id IN ($ids_qmarks) AND owner_uid = ?");
- } else if ($cmode == 2) {
+ } else if ($cmode == Article::CATCHUP_MODE_TOGGLE) {
$sth = $pdo->prepare("UPDATE ttrss_user_entries SET
unread = NOT unread,last_read = NOW()
WHERE ref_id IN ($ids_qmarks) AND owner_uid = ?");
@@ -496,7 +510,10 @@ class Article extends Handler_Protected {
$sth->execute(array_merge($ids, [$owner_uid]));
}
- static function _get_labels($id, $owner_uid = false) {
+ /**
+ * @return array<int, array<int, int|string>>
+ */
+ static function _get_labels(int $id, ?int $owner_uid = null): array {
$rv = array();
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
@@ -536,6 +553,8 @@ class Article extends Handler_Protected {
}
if (count($rv) > 0)
+ // PHPStan has issues with the shape of $rv for some reason (array vs non-empty-array).
+ // @phpstan-ignore-next-line
Labels::update_cache($owner_uid, $id, $rv);
else
Labels::update_cache($owner_uid, $id, array("no-labels" => 1));
@@ -543,6 +562,12 @@ class Article extends Handler_Protected {
return $rv;
}
+ /**
+ * @param array<int, array<string, mixed>> $enclosures
+ * @param array<string, mixed> $headline
+ *
+ * @return array<int, Article::ARTICLE_KIND_*|string>
+ */
static function _get_image(array $enclosures, string $content, string $site_url, array $headline) {
$article_image = "";
@@ -577,6 +602,7 @@ class Article extends Handler_Protected {
} else if ($e->nodeName == "video") {
$article_image = $e->getAttribute("poster");
+ /** @var DOMElement|null $src */
$src = $tmpxpath->query("//source[@src]", $e)->item(0);
if ($src) {
@@ -603,14 +629,14 @@ class Article extends Handler_Protected {
}
if ($article_image) {
- $article_image = rewrite_relative_url($site_url, $article_image);
+ $article_image = UrlHelper::rewrite_relative($site_url, $article_image);
if (!$article_kind && (count($enclosures) > 1 || (isset($elems) && $elems->length > 1)))
$article_kind = Article::ARTICLE_KIND_ALBUM;
}
if ($article_stream)
- $article_stream = rewrite_relative_url($site_url, $article_stream);
+ $article_stream = UrlHelper::rewrite_relative($site_url, $article_stream);
}
$cache = new DiskCache("images");
@@ -624,7 +650,12 @@ class Article extends Handler_Protected {
return [$article_image, $article_stream, $article_kind];
}
- // only cached, returns label ids (not label feed ids)
+ /**
+ * only cached, returns label ids (not label feed ids)
+ *
+ * @param array<int, int> $article_ids
+ * @return array<int, int>
+ */
static function _labels_of(array $article_ids) {
if (count($article_ids) == 0)
return [];
@@ -651,6 +682,10 @@ class Article extends Handler_Protected {
return array_unique($rv);
}
+ /**
+ * @param array<int, int> $article_ids
+ * @return array<int, int>
+ */
static function _feeds_of(array $article_ids) {
if (count($article_ids) == 0)
return [];
diff --git a/classes/auth/base.php b/classes/auth/base.php
index 82ea06e1b..d8128400d 100644
--- a/classes/auth/base.php
+++ b/classes/auth/base.php
@@ -8,13 +8,18 @@ abstract class Auth_Base extends Plugin implements IAuthModule {
$this->pdo = Db::pdo();
}
- // compatibility wrapper, because of how pluginhost works (hook name == method name)
- function hook_auth_user(...$args) {
- return $this->authenticate(...$args);
+ function hook_auth_user($login, $password, $service = '') {
+ return $this->authenticate($login, $password, $service);
}
- // Auto-creates specified user if allowed by system configuration
- // Can be used instead of find_user_by_login() by external auth modules
+ /** Auto-creates specified user if allowed by system configuration.
+ * Can be used instead of find_user_by_login() by external auth modules
+ * @param string $login
+ * @param string|false $password
+ * @return null|int
+ * @throws Exception
+ * @throws PDOException
+ */
function auto_create_user(string $login, $password = false) {
if ($login && Config::get(Config::AUTH_AUTO_CREATE)) {
$user_id = UserHelper::find_user_by_login($login);
@@ -42,7 +47,12 @@ abstract class Auth_Base extends Plugin implements IAuthModule {
return UserHelper::find_user_by_login($login);
}
- // @deprecated
+
+ /** replaced with UserHelper::find_user_by_login()
+ * @param string $login
+ * @return null|int
+ * @deprecated
+ */
function find_user_by_login(string $login) {
return UserHelper::find_user_by_login($login);
}
diff --git a/classes/config.php b/classes/config.php
index 4ae4a2407..cc089b7ba 100644
--- a/classes/config.php
+++ b/classes/config.php
@@ -6,171 +6,190 @@ class Config {
const T_STRING = 2;
const T_INT = 3;
- const SCHEMA_VERSION = 145;
-
- /* override defaults, defined below in _DEFAULTS[], prefixing with _ENVVAR_PREFIX:
-
- DB_TYPE becomes:
-
- .env:
-
- TTRSS_DB_TYPE=pgsql
-
- or config.php:
-
- putenv('TTRSS_DB_TYPE=pgsql');
-
- etc, etc.
+ const SCHEMA_VERSION = 146;
+
+ /** override default values, defined below in _DEFAULTS[], prefixing with _ENVVAR_PREFIX:
+ *
+ * DB_TYPE becomes:
+ *
+ * .env (docker environment):
+ *
+ * TTRSS_DB_TYPE=pgsql
+ *
+ * or config.php:
+ *
+ * putenv('TTRSS_DB_TYPE=pgsql');
+ *
+ * note lack of quotes and spaces before and after "=".
+ *
*/
+ /** database type: pgsql or mysql */
const DB_TYPE = "DB_TYPE";
+
+ /** database server hostname */
const DB_HOST = "DB_HOST";
+
+ /** database user */
const DB_USER = "DB_USER";
+
+ /** database name */
const DB_NAME = "DB_NAME";
+
+ /** database password */
const DB_PASS = "DB_PASS";
+
+ /** database server port */
const DB_PORT = "DB_PORT";
- // database credentials
+ /** connection charset for MySQL. if you have a legacy database and/or experience
+ * garbage unicode characters with this option, try setting it to a blank string. */
const MYSQL_CHARSET = "MYSQL_CHARSET";
- // connection charset for MySQL. if you have a legacy database and/or experience
- // garbage unicode characters with this option, try setting it to a blank string.
+ /** this should be set to a fully qualified URL used to access
+ * your tt-rss instance over the net, such as: https://example.com/tt-rss/
+ * if your tt-rss instance is behind a reverse proxy, use external URL.
+ * tt-rss will likely help you pick correct value for this on startup */
const SELF_URL_PATH = "SELF_URL_PATH";
- // this should be set to a fully qualified URL used to access
- // your tt-rss instance over the net, such as: https://example.com/tt-rss/
- // if your tt-rss instance is behind a reverse proxy, use external URL.
- // tt-rss will likely help you pick correct value for this on startup
+ /** operate in single user mode, disables all functionality related to
+ * multiple users and authentication. enabling this assumes you have
+ * your tt-rss directory protected by other means (e.g. http auth). */
const SINGLE_USER_MODE = "SINGLE_USER_MODE";
- // operate in single user mode, disables all functionality related to
- // multiple users and authentication. enabling this assumes you have
- // your tt-rss directory protected by other means (e.g. http auth).
+ /** enables fallback update mode where tt-rss tries to update feeds in
+ * background while tt-rss is open in your browser.
+ * if you don't have a lot of feeds and don't want to or can't run
+ * background processes while not running tt-rss, this method is generally
+ * viable to keep your feeds up to date. */
const SIMPLE_UPDATE_MODE = "SIMPLE_UPDATE_MODE";
- // enables fallback update mode where tt-rss tries to update feeds in
- // background while tt-rss is open in your browser.
- // if you don't have a lot of feeds and don't want to or can't run
- // background processes while not running tt-rss, this method is generally
- // viable to keep your feeds up to date.
+ /** use this PHP CLI executable to start various tasks */
const PHP_EXECUTABLE = "PHP_EXECUTABLE";
- // use this PHP CLI executable to start various tasks
+ /** base directory for lockfiles (must be writable) */
const LOCK_DIRECTORY = "LOCK_DIRECTORY";
- // base directory for lockfiles (must be writable)
+ /** base directory for local cache (must be writable) */
const CACHE_DIR = "CACHE_DIR";
- // base directory for local cache (must be writable)
+ /** directory for feed favicons (directory must be writable) */
const ICONS_DIR = "ICONS_DIR";
+
+ /** URL for feed favicons */
const ICONS_URL = "ICONS_URL";
- // directory and URL for feed favicons (directory must be writable)
+ /** auto create users authenticated via external modules */
const AUTH_AUTO_CREATE = "AUTH_AUTO_CREATE";
- // auto create users authenticated via external modules
+ /** auto log in users authenticated via external modules i.e. auth_remote */
const AUTH_AUTO_LOGIN = "AUTH_AUTO_LOGIN";
- // auto log in users authenticated via external modules i.e. auth_remote
+ /** unconditinally purge all articles older than this amount, in days
+ * overrides user-controlled purge interval */
const FORCE_ARTICLE_PURGE = "FORCE_ARTICLE_PURGE";
- // unconditinally purge all articles older than this amount, in days
- // overrides user-controlled purge interval
+ /** default lifetime of a session (e.g. login) cookie. In seconds,
+ * 0 means cookie will be deleted when browser closes. */
const SESSION_COOKIE_LIFETIME = "SESSION_COOKIE_LIFETIME";
- // default lifetime of a session (e.g. login) cookie. In seconds,
- // 0 means cookie will be deleted when browser closes.
+ /** send email using this name */
const SMTP_FROM_NAME = "SMTP_FROM_NAME";
+
+ /** send email using this address */
const SMTP_FROM_ADDRESS = "SMTP_FROM_ADDRESS";
- // send email using this name and address
+ /** default subject for email digest */
const DIGEST_SUBJECT = "DIGEST_SUBJECT";
- // default subject for email digest
+ /** enable built-in update checker, both for core code and plugins (using git) */
const CHECK_FOR_UPDATES = "CHECK_FOR_UPDATES";
- // enable built-in update checker, both for core code and plugins (using git)
+ /** system plugins enabled for all users, comma separated list, no quotes
+ * keep at least one auth module in there (i.e. auth_internal) */
const PLUGINS = "PLUGINS";
- // system plugins enabled for all users, comma separated list, no quotes
- // keep at least one auth module in there (i.e. auth_internal)
+ /** available options: sql (default, event log), syslog, stdout (for debugging) */
const LOG_DESTINATION = "LOG_DESTINATION";
- // available options: sql (default, event log), syslog, stdout (for debugging)
+ /** link this stylesheet on all pages (if it exists), should be placed in themes.local */
const LOCAL_OVERRIDE_STYLESHEET = "LOCAL_OVERRIDE_STYLESHEET";
- // link this stylesheet on all pages (if it exists), should be placed in themes.local
+ /** same but this javascript file (you can use that for polyfills), should be placed in themes.local */
const LOCAL_OVERRIDE_JS = "LOCAL_OVERRIDE_JS";
- // same but this javascript file (you can use that for polyfills), should be placed in themes.local
+ /** in seconds, terminate update tasks that ran longer than this interval */
const DAEMON_MAX_CHILD_RUNTIME = "DAEMON_MAX_CHILD_RUNTIME";
- // in seconds, terminate update tasks that ran longer than this interval
+ /** max concurrent update jobs forking update daemon starts */
const DAEMON_MAX_JOBS = "DAEMON_MAX_JOBS";
- // max concurrent update jobs forking update daemon starts
+ /** How long to wait for response when requesting feed from a site (seconds) */
const FEED_FETCH_TIMEOUT = "FEED_FETCH_TIMEOUT";
- // How long to wait for response when requesting feed from a site (seconds)
+ /** How long to wait for response when requesting uncached feed from a site (seconds) */
const FEED_FETCH_NO_CACHE_TIMEOUT = "FEED_FETCH_NO_CACHE_TIMEOUT";
- // Same but not cached
+ /** Default timeout when fetching files from remote sites */
const FILE_FETCH_TIMEOUT = "FILE_FETCH_TIMEOUT";
- // Default timeout when fetching files from remote sites
+ /** How long to wait for initial response from website when fetching remote files */
const FILE_FETCH_CONNECT_TIMEOUT = "FILE_FETCH_CONNECT_TIMEOUT";
- // How long to wait for initial response from website when fetching files from remote sites
+ /** stop updating feeds if user haven't logged in for X days */
const DAEMON_UPDATE_LOGIN_LIMIT = "DAEMON_UPDATE_LOGIN_LIMIT";
- // stop updating feeds if user haven't logged in for X days
+ /** how many feeds to update in one batch */
const DAEMON_FEED_LIMIT = "DAEMON_FEED_LIMIT";
- // how many feeds to update in one batch
+ /** default sleep interval between feed updates (sec) */
const DAEMON_SLEEP_INTERVAL = "DAEMON_SLEEP_INTERVAL";
- // default sleep interval between feed updates (sec)
+ /** do not cache files larger than that (bytes) */
const MAX_CACHE_FILE_SIZE = "MAX_CACHE_FILE_SIZE";
- // do not cache files larger than that (bytes)
+ /** do not download files larger than that (bytes) */
const MAX_DOWNLOAD_FILE_SIZE = "MAX_DOWNLOAD_FILE_SIZE";
- // do not download files larger than that (bytes)
+ /** max file size for downloaded favicons (bytes) */
const MAX_FAVICON_FILE_SIZE = "MAX_FAVICON_FILE_SIZE";
- // max file size for downloaded favicons (bytes)
+ /** max age in days for various automatically cached (temporary) files */
const CACHE_MAX_DAYS = "CACHE_MAX_DAYS";
- // max age in days for various automatically cached (temporary) files
+ /** max interval between forced unconditional updates for servers
+ * not complying with http if-modified-since (seconds) */
const MAX_CONDITIONAL_INTERVAL = "MAX_CONDITIONAL_INTERVAL";
- // max interval between forced unconditional updates for servers not complying with http if-modified-since (seconds)
+ /** automatically disable updates for feeds which failed to
+ * update for this amount of days; 0 disables */
const DAEMON_UNSUCCESSFUL_DAYS_LIMIT = "DAEMON_UNSUCCESSFUL_DAYS_LIMIT";
- // automatically disable updates for feeds which failed to
- // update for this amount of days; 0 disables
+ /** log all sent emails in the event log */
const LOG_SENT_MAIL = "LOG_SENT_MAIL";
- // log all sent emails in the event log
+ /** use HTTP proxy for requests */
const HTTP_PROXY = "HTTP_PROXY";
- // use HTTP proxy for requests
+ /** prevent users from changing passwords */
const FORBID_PASSWORD_CHANGES = "FORBID_PASSWORD_CHANGES";
- // prevent users from changing passwords
+ /** default session cookie name */
const SESSION_NAME = "SESSION_NAME";
- // default session cookie name
+ /** enable plugin update checker (using git) */
const CHECK_FOR_PLUGIN_UPDATES = "CHECK_FOR_PLUGIN_UPDATES";
- // enable plugin update checker (using git)
+ /** allow installing first party plugins using plugin installer in prefs */
const ENABLE_PLUGIN_INSTALLER = "ENABLE_PLUGIN_INSTALLER";
- // allow installing first party plugins using plugin installer in prefs
+ /** minimum amount of seconds required between authentication attempts */
const AUTH_MIN_INTERVAL = "AUTH_MIN_INTERVAL";
- // minimum amount of seconds required between authentication attempts
- // default values for all of the above:
+ /** http user agent (changing this is not recommended) */
+ const HTTP_USER_AGENT = "HTTP_USER_AGENT";
+
+ /** default values for all global configuration options */
private const _DEFAULTS = [
Config::DB_TYPE => [ "pgsql", Config::T_STRING ],
Config::DB_HOST => [ "db", Config::T_STRING ],
@@ -224,15 +243,20 @@ class Config {
Config::CHECK_FOR_PLUGIN_UPDATES => [ "true", Config::T_BOOL ],
Config::ENABLE_PLUGIN_INSTALLER => [ "true", Config::T_BOOL ],
Config::AUTH_MIN_INTERVAL => [ 5, Config::T_INT ],
+ Config::HTTP_USER_AGENT => [ 'Tiny Tiny RSS/%s (https://tt-rss.org/)',
+ Config::T_STRING ],
];
+ /** @var Config|null */
private static $instance;
+ /** @var array<string, array<bool|int|string>> */
private $params = [];
- private $schema_version = null;
+
+ /** @var array<string, mixed> */
private $version = [];
- /** @var Db_Migrations $migrations */
+ /** @var Db_Migrations|null $migrations */
private $migrations;
public static function get_instance() : Config {
@@ -250,24 +274,30 @@ class Config {
$ref = new ReflectionClass(get_class($this));
foreach ($ref->getConstants() as $const => $cvalue) {
- if (isset($this::_DEFAULTS[$const])) {
- $override = getenv($this::_ENVVAR_PREFIX . $const);
+ if (isset(self::_DEFAULTS[$const])) {
+ $override = getenv(self::_ENVVAR_PREFIX . $const);
- list ($defval, $deftype) = $this::_DEFAULTS[$const];
+ list ($defval, $deftype) = self::_DEFAULTS[$const];
$this->params[$cvalue] = [ self::cast_to($override !== false ? $override : $defval, $deftype), $deftype ];
}
}
}
- /* package maintainers who don't use git: if version_static.txt exists in tt-rss root
- directory, its contents are displayed instead of git commit-based version, this could be generated
- based on source git tree commit used when creating the package */
-
+ /** determine tt-rss version (using git)
+ *
+ * package maintainers who don't use git: if version_static.txt exists in tt-rss root
+ * directory, its contents are displayed instead of git commit-based version, this could be generated
+ * based on source git tree commit used when creating the package
+ * @return array<string, mixed>|string
+ */
static function get_version(bool $as_string = true) {
return self::get_instance()->_get_version($as_string);
}
+ /**
+ * @return array<string, mixed>|string
+ */
private function _get_version(bool $as_string = true) {
$root_dir = dirname(__DIR__);
@@ -278,6 +308,8 @@ class Config {
$ttrss_version["version"] = "UNKNOWN (Unsupported, Darwin)";
} else if (file_exists("$root_dir/version_static.txt")) {
$this->version["version"] = trim(file_get_contents("$root_dir/version_static.txt")) . " (Unsupported)";
+ } else if (ini_get("open_basedir")) {
+ $this->version["version"] = "UNKNOWN (Unsupported, open_basedir)";
} else if (is_dir("$root_dir/.git")) {
$this->version = self::get_version_from_git($root_dir);
@@ -285,7 +317,10 @@ class Config {
user_error("Unable to determine version: " . $this->version["version"], E_USER_WARNING);
$this->version["version"] = "UNKNOWN (Unsupported, Git error)";
+ } else if (!getenv("SCRIPT_ROOT") || !file_exists("/.dockerenv")) {
+ $this->version["version"] .= " (Unsupported)";
}
+
} else {
$this->version["version"] = "UNKNOWN (Unsupported)";
}
@@ -294,7 +329,10 @@ class Config {
return $as_string ? $this->version["version"] : $this->version;
}
- static function get_version_from_git(string $dir) {
+ /**
+ * @return array<string, int|string>
+ */
+ static function get_version_from_git(string $dir): array {
$descriptorspec = [
1 => ["pipe", "w"], // STDOUT
2 => ["pipe", "w"], // STDERR
@@ -321,7 +359,7 @@ class Config {
if ($check == "version") {
- $rv["version"] = strftime("%y.%m", (int)$timestamp) . "-$commit";
+ $rv["version"] = date("y.m", (int)$timestamp) . "-$commit";
$rv["commit"] = $commit;
$rv["timestamp"] = $timestamp;
@@ -360,6 +398,9 @@ class Config {
return self::get_migrations()->get_version();
}
+ /**
+ * @return bool|int|string
+ */
static function cast_to(string $value, int $type_hint) {
switch ($type_hint) {
case self::T_BOOL:
@@ -371,24 +412,30 @@ class Config {
}
}
+ /**
+ * @return bool|int|string
+ */
private function _get(string $param) {
list ($value, $type_hint) = $this->params[$param];
return $this->cast_to($value, $type_hint);
}
- private function _add(string $param, string $default, int $type_hint) {
- $override = getenv($this::_ENVVAR_PREFIX . $param);
+ private function _add(string $param, string $default, int $type_hint): void {
+ $override = getenv(self::_ENVVAR_PREFIX . $param);
$this->params[$param] = [ self::cast_to($override !== false ? $override : $default, $type_hint), $type_hint ];
}
- static function add(string $param, string $default, int $type_hint = Config::T_STRING) {
+ static function add(string $param, string $default, int $type_hint = Config::T_STRING): void {
$instance = self::get_instance();
- return $instance->_add($param, $default, $type_hint);
+ $instance->_add($param, $default, $type_hint);
}
+ /**
+ * @return bool|int|string
+ */
static function get(string $param) {
$instance = self::get_instance();
@@ -427,6 +474,9 @@ class Config {
/* sanity check stuff */
+ /** checks for mysql tables not using InnoDB (tt-rss is incompatible with MyISAM)
+ * @return array<int, array<string, string>> A list of entries identifying tt-rss tables with bad config
+ */
private static function check_mysql_tables() {
$pdo = Db::pdo();
@@ -443,7 +493,7 @@ class Config {
return $bad_tables;
}
- static function sanity_check() {
+ static function sanity_check(): void {
/*
we don't actually need the DB object right now but some checks below might use ORM which won't be initialized
@@ -460,16 +510,53 @@ class Config {
array_push($errors, "Please enable at least one authentication module via PLUGINS");
}
- if (function_exists('posix_getuid') && posix_getuid() == 0) {
- array_push($errors, "Please don't run this script as root.");
- }
+ /* we assume our dependencies are sane under docker, so some sanity checks are skipped.
+ this also allows tt-rss process to run under root if requested (I'm using this for development
+ under podman because of uidmapping issues with rootless containers, don't use in production -fox) */
+ if (!getenv("container")) {
+ if (function_exists('posix_getuid') && posix_getuid() == 0) {
+ array_push($errors, "Please don't run this script as root.");
+ }
- if (version_compare(PHP_VERSION, '7.1.0', '<')) {
- array_push($errors, "PHP version 7.1.0 or newer required. You're using " . PHP_VERSION . ".");
- }
+ if (version_compare(PHP_VERSION, '7.1.0', '<')) {
+ array_push($errors, "PHP version 7.1.0 or newer required. You're using " . PHP_VERSION . ".");
+ }
+
+ if (!class_exists("UConverter")) {
+ array_push($errors, "PHP UConverter class is missing, it's provided by the Internationalization (intl) module.");
+ }
+
+ if (!function_exists("curl_init") && !ini_get("allow_url_fopen")) {
+ array_push($errors, "PHP configuration option allow_url_fopen is disabled, and CURL functions are not present. Either enable allow_url_fopen or install PHP extension for CURL.");
+ }
+
+ if (!function_exists("json_encode")) {
+ array_push($errors, "PHP support for JSON is required, but was not found.");
+ }
+
+ if (!class_exists("PDO")) {
+ array_push($errors, "PHP support for PDO is required but was not found.");
+ }
+
+ if (!function_exists("mb_strlen")) {
+ array_push($errors, "PHP support for mbstring functions is required but was not found.");
+ }
+
+ if (!function_exists("hash")) {
+ array_push($errors, "PHP support for hash() function is required but was not found.");
+ }
+
+ if (ini_get("safe_mode")) {
+ array_push($errors, "PHP safe mode setting is obsolete and not supported by tt-rss.");
+ }
- if (!class_exists("UConverter")) {
- array_push($errors, "PHP UConverter class is missing, it's provided by the Internationalization (intl) module.");
+ if (!function_exists("mime_content_type")) {
+ array_push($errors, "PHP function mime_content_type() is missing, try enabling fileinfo module.");
+ }
+
+ if (!class_exists("DOMDocument")) {
+ array_push($errors, "PHP support for DOMDocument is required, but was not found.");
+ }
}
if (!is_writable(self::get(Config::CACHE_DIR) . "/images")) {
@@ -484,6 +571,14 @@ class Config {
array_push($errors, "Data export cache is not writable (chmod -R 777 ".self::get(Config::CACHE_DIR)."/export)");
}
+ if (!is_writable(self::get(Config::ICONS_DIR))) {
+ array_push($errors, "ICONS_DIR defined in config.php is not writable (chmod -R 777 ".self::get(Config::ICONS_DIR).").\n");
+ }
+
+ if (!is_writable(self::get(Config::LOCK_DIRECTORY))) {
+ array_push($errors, "LOCK_DIRECTORY is not writable (chmod -R 777 ".self::get(Config::LOCK_DIRECTORY).").\n");
+ }
+
// ttrss_users won't be there on initial startup (before migrations are done)
if (!Config::is_migration_needed() && self::get(Config::SINGLE_USER_MODE)) {
if (UserHelper::get_login_by_id(1) != "admin") {
@@ -491,6 +586,7 @@ class Config {
}
}
+ // skip check for CLI scripts so that we could install database schema if it is missing.
if (php_sapi_name() != "cli") {
if (self::get_schema_version() < 0) {
@@ -515,46 +611,6 @@ class Config {
}
}
- if (!is_writable(self::get(Config::ICONS_DIR))) {
- array_push($errors, "ICONS_DIR defined in config.php is not writable (chmod -R 777 ".self::get(Config::ICONS_DIR).").\n");
- }
-
- if (!is_writable(self::get(Config::LOCK_DIRECTORY))) {
- array_push($errors, "LOCK_DIRECTORY is not writable (chmod -R 777 ".self::get(Config::LOCK_DIRECTORY).").\n");
- }
-
- if (!function_exists("curl_init") && !ini_get("allow_url_fopen")) {
- array_push($errors, "PHP configuration option allow_url_fopen is disabled, and CURL functions are not present. Either enable allow_url_fopen or install PHP extension for CURL.");
- }
-
- if (!function_exists("json_encode")) {
- array_push($errors, "PHP support for JSON is required, but was not found.");
- }
-
- if (!class_exists("PDO")) {
- array_push($errors, "PHP support for PDO is required but was not found.");
- }
-
- if (!function_exists("mb_strlen")) {
- array_push($errors, "PHP support for mbstring functions is required but was not found.");
- }
-
- if (!function_exists("hash")) {
- array_push($errors, "PHP support for hash() function is required but was not found.");
- }
-
- if (ini_get("safe_mode")) {
- array_push($errors, "PHP safe mode setting is obsolete and not supported by tt-rss.");
- }
-
- if (!function_exists("mime_content_type")) {
- array_push($errors, "PHP function mime_content_type() is missing, try enabling fileinfo module.");
- }
-
- if (!class_exists("DOMDocument")) {
- array_push($errors, "PHP support for DOMDocument is required, but was not found.");
- }
-
if (self::get(Config::DB_TYPE) == "mysql") {
$bad_tables = self::check_mysql_tables();
@@ -617,11 +673,11 @@ class Config {
}
}
- private static function format_error($msg) {
+ private static function format_error(string $msg): string {
return "<div class=\"alert alert-danger\">$msg</div>";
}
- static function get_override_links() {
+ static function get_override_links(): string {
$rv = "";
$local_css = get_theme_path(self::get(self::LOCAL_OVERRIDE_STYLESHEET));
@@ -632,4 +688,8 @@ class Config {
return $rv;
}
+
+ static function get_user_agent(): string {
+ return sprintf(self::get(self::HTTP_USER_AGENT), self::get_version());
+ }
}
diff --git a/classes/counters.php b/classes/counters.php
index 8a8b8bc71..8756b5acf 100644
--- a/classes/counters.php
+++ b/classes/counters.php
@@ -1,7 +1,10 @@
<?php
class Counters {
- static function get_all() {
+ /**
+ * @return array<int, array<string, int|string>>
+ */
+ static function get_all(): array {
return array_merge(
self::get_global(),
self::get_virt(),
@@ -11,7 +14,12 @@ class Counters {
);
}
- static function get_conditional(array $feed_ids = null, array $label_ids = null) {
+ /**
+ * @param array<int> $feed_ids
+ * @param array<int> $label_ids
+ * @return array<int, array<string, int|string>>
+ */
+ static function get_conditional(array $feed_ids = null, array $label_ids = null): array {
return array_merge(
self::get_global(),
self::get_virt(),
@@ -21,7 +29,10 @@ class Counters {
);
}
- static private function get_cat_children(int $cat_id, int $owner_uid) {
+ /**
+ * @return array<int, int>
+ */
+ static private function get_cat_children(int $cat_id, int $owner_uid): array {
$unread = 0;
$marked = 0;
@@ -40,7 +51,11 @@ class Counters {
return [$unread, $marked];
}
- private static function get_cats(array $cat_ids = null) {
+ /**
+ * @param array<int> $cat_ids
+ * @return array<int, array<string, int|string>>
+ */
+ private static function get_cats(array $cat_ids = null): array {
$ret = [];
/* Labels category */
@@ -129,7 +144,11 @@ class Counters {
return $ret;
}
- private static function get_feeds(array $feed_ids = null) {
+ /**
+ * @param array<int> $feed_ids
+ * @return array<int, array<string, int|string>>
+ */
+ private static function get_feeds(array $feed_ids = null): array {
$ret = [];
@@ -199,7 +218,10 @@ class Counters {
return $ret;
}
- private static function get_global() {
+ /**
+ * @return array<int, array<string, int|string>>
+ */
+ private static function get_global(): array {
$ret = [
[
"id" => "global-unread",
@@ -219,13 +241,16 @@ class Counters {
return $ret;
}
- private static function get_virt() {
+ /**
+ * @return array<int, array<string, int|string>>
+ */
+ private static function get_virt(): array {
$ret = [];
for ($i = 0; $i >= -4; $i--) {
- $count = getFeedUnread($i);
+ $count = Feeds::_get_counters($i, false, true);
if ($i == 0 || $i == -1 || $i == -2)
$auxctr = Feeds::_get_counters($i, false);
@@ -248,6 +273,11 @@ class Counters {
if (is_array($feeds)) {
foreach ($feeds as $feed) {
+ /** @var IVirtualFeed $feed['sender'] */
+
+ if (!implements_interface($feed['sender'], 'IVirtualFeed'))
+ continue;
+
$cv = [
"id" => PluginHost::pfeed_to_feed_id($feed['id']),
"counter" => $feed['sender']->get_unread($feed['id'])
@@ -263,7 +293,11 @@ class Counters {
return $ret;
}
- static function get_labels(array $label_ids = null) {
+ /**
+ * @param array<int> $label_ids
+ * @return array<int, array<string, int|string>>
+ */
+ static function get_labels(array $label_ids = null): array {
$ret = [];
diff --git a/classes/db.php b/classes/db.php
index a09c44628..2cc89f5ba 100755
--- a/classes/db.php
+++ b/classes/db.php
@@ -4,9 +4,7 @@ class Db
/** @var Db $instance */
private static $instance;
- private $link;
-
- /** @var PDO $pdo */
+ /** @var PDO|null $pdo */
private $pdo;
function __construct() {
@@ -19,7 +17,7 @@ class Db
}
}
- static function NOW() {
+ static function NOW(): string {
return date("Y-m-d H:i:s", time());
}
@@ -27,7 +25,7 @@ class Db
//
}
- public static function get_dsn() {
+ public static function get_dsn(): string {
$db_port = Config::get(Config::DB_PORT) ? ';port=' . Config::get(Config::DB_PORT) : '';
$db_host = Config::get(Config::DB_HOST) ? ';host=' . Config::get(Config::DB_HOST) : '';
if (Config::get(Config::DB_TYPE) == "mysql" && Config::get(Config::MYSQL_CHARSET)) {
@@ -90,12 +88,11 @@ class Db
return self::$instance->pdo;
}
- public static function sql_random_function() {
+ public static function sql_random_function(): string {
if (Config::get(Config::DB_TYPE) == "mysql") {
return "RAND()";
- } else {
- return "RANDOM()";
}
+ return "RANDOM()";
}
}
diff --git a/classes/db/migrations.php b/classes/db/migrations.php
index 3008af535..aecd9186c 100644
--- a/classes/db/migrations.php
+++ b/classes/db/migrations.php
@@ -1,29 +1,46 @@
<?php
class Db_Migrations {
+ // TODO: class properties can be switched to PHP typing if/when the minimum PHP_VERSION is raised to 7.4.0+
+ /** @var string */
private $base_filename = "schema.sql";
+
+ /** @var string */
private $base_path;
+
+ /** @var string */
private $migrations_path;
+
+ /** @var string */
private $migrations_table;
+
+ /** @var bool */
private $base_is_latest;
+
+ /** @var PDO */
private $pdo;
- private $cached_version;
- private $cached_max_version;
+ /** @var int */
+ private $cached_version = 0;
+
+ /** @var int */
+ private $cached_max_version = 0;
+
+ /** @var int */
private $max_version_override;
function __construct() {
$this->pdo = Db::pdo();
}
- function initialize_for_plugin(Plugin $plugin, bool $base_is_latest = true, string $schema_suffix = "sql") {
+ function initialize_for_plugin(Plugin $plugin, bool $base_is_latest = true, string $schema_suffix = "sql"): void {
$plugin_dir = PluginHost::getInstance()->get_plugin_dir($plugin);
$this->initialize($plugin_dir . "/${schema_suffix}",
strtolower("ttrss_migrations_plugin_" . get_class($plugin)),
$base_is_latest);
}
- function initialize(string $root_path, string $migrations_table, bool $base_is_latest = true, int $max_version_override = 0) {
+ function initialize(string $root_path, string $migrations_table, bool $base_is_latest = true, int $max_version_override = 0): void {
$this->base_path = "$root_path/" . Config::get(Config::DB_TYPE);
$this->migrations_path = $this->base_path . "/migrations";
$this->migrations_table = $migrations_table;
@@ -31,7 +48,7 @@ class Db_Migrations {
$this->max_version_override = $max_version_override;
}
- private function set_version(int $version) {
+ private function set_version(int $version): void {
Debug::log("Updating table {$this->migrations_table} with version ${version}...", Debug::LOG_EXTENDED);
$sth = $this->pdo->query("SELECT * FROM {$this->migrations_table}");
@@ -48,7 +65,7 @@ class Db_Migrations {
}
function get_version() : int {
- if (isset($this->cached_version))
+ if ($this->cached_version)
return $this->cached_version;
try {
@@ -66,11 +83,15 @@ class Db_Migrations {
}
}
- private function create_migrations_table() {
+ private function create_migrations_table(): void {
$this->pdo->query("CREATE TABLE IF NOT EXISTS {$this->migrations_table} (schema_version integer not null)");
}
- private function migrate_to(int $version) {
+ /**
+ * @throws PDOException
+ * @return bool false if the migration failed, otherwise true (or an exception)
+ */
+ private function migrate_to(int $version): bool {
try {
if ($version <= $this->get_version()) {
Debug::log("Refusing to apply version $version: current version is higher", Debug::LOG_VERBOSE);
@@ -110,8 +131,10 @@ class Db_Migrations {
Debug::log("Migration finished, current version: " . $this->get_version(), Debug::LOG_VERBOSE);
Logger::log(E_USER_NOTICE, "Applied migration to version $version for {$this->migrations_table}");
+ return true;
} else {
Debug::log("Migration failed: schema file is empty or missing.", Debug::LOG_VERBOSE);
+ return false;
}
} catch (PDOException $e) {
@@ -129,7 +152,7 @@ class Db_Migrations {
if ($this->max_version_override > 0)
return $this->max_version_override;
- if (isset($this->cached_max_version))
+ if ($this->cached_max_version)
return $this->cached_max_version;
$migrations = glob("{$this->migrations_path}/*.sql");
@@ -174,6 +197,9 @@ class Db_Migrations {
return !$this->is_migration_needed();
}
+ /**
+ * @return array<int, string>
+ */
private function get_lines(int $version) : array {
if ($version > 0)
$filename = "{$this->migrations_path}/${version}.sql";
diff --git a/classes/db/prefs.php b/classes/db/prefs.php
index 821216622..209ef58c1 100644
--- a/classes/db/prefs.php
+++ b/classes/db/prefs.php
@@ -2,11 +2,17 @@
class Db_Prefs {
// this class is a stub for the time being (to be removed)
- function read($pref_name, $user_id = false, $die_on_error = false) {
+ /**
+ * @return bool|int|null|string
+ */
+ function read(string $pref_name, ?int $user_id = null, bool $die_on_error = false) {
return get_pref($pref_name, $user_id);
}
- function write($pref_name, $value, $user_id = false, $strip_tags = true) {
+ /**
+ * @param mixed $value
+ */
+ function write(string $pref_name, $value, ?int $user_id = null, bool $strip_tags = true): bool {
return set_pref($pref_name, $value, $user_id, $strip_tags);
}
}
diff --git a/classes/debug.php b/classes/debug.php
index 2ae81e41a..fbdf260e0 100644
--- a/classes/debug.php
+++ b/classes/debug.php
@@ -1,56 +1,94 @@
<?php
class Debug {
const LOG_DISABLED = -1;
- const LOG_NORMAL = 0;
- const LOG_VERBOSE = 1;
- const LOG_EXTENDED = 2;
-
- /** @deprecated */
+ const LOG_NORMAL = 0;
+ const LOG_VERBOSE = 1;
+ const LOG_EXTENDED = 2;
+
+ const ALL_LOG_LEVELS = [
+ Debug::LOG_DISABLED,
+ Debug::LOG_NORMAL,
+ Debug::LOG_VERBOSE,
+ Debug::LOG_EXTENDED,
+ ];
+
+ // TODO: class properties can be switched to PHP typing if/when the minimum PHP_VERSION is raised to 7.4.0+
+ /**
+ * @deprecated
+ * @var int
+ */
public static $LOG_DISABLED = self::LOG_DISABLED;
- /** @deprecated */
- public static $LOG_NORMAL = self::LOG_NORMAL;
+ /**
+ * @deprecated
+ * @var int
+ */
+ public static $LOG_NORMAL = self::LOG_NORMAL;
+
+ /**
+ * @deprecated
+ * @var int
+ */
+ public static $LOG_VERBOSE = self::LOG_VERBOSE;
+
+ /**
+ * @deprecated
+ * @var int
+ */
+ public static $LOG_EXTENDED = self::LOG_EXTENDED;
- /** @deprecated */
- public static $LOG_VERBOSE = self::LOG_VERBOSE;
+ /** @var bool */
+ private static $enabled = false;
- /** @deprecated */
- public static $LOG_EXTENDED = self::LOG_EXTENDED;
+ /** @var bool */
+ private static $quiet = false;
- private static $enabled = false;
- private static $quiet = false;
- private static $logfile = false;
+ /** @var string|null */
+ private static $logfile = null;
+
+ /**
+ * @var int Debug::LOG_*
+ */
private static $loglevel = self::LOG_NORMAL;
- public static function set_logfile($logfile) {
+ public static function set_logfile(string $logfile): void {
self::$logfile = $logfile;
}
- public static function enabled() {
+ public static function enabled(): bool {
return self::$enabled;
}
- public static function set_enabled($enable) {
+ public static function set_enabled(bool $enable): void {
self::$enabled = $enable;
}
- public static function set_quiet($quiet) {
+ public static function set_quiet(bool $quiet): void {
self::$quiet = $quiet;
}
- public static function set_loglevel($level) {
+ /**
+ * @param int $level Debug::LOG_*
+ */
+ public static function set_loglevel(int $level): void {
self::$loglevel = $level;
}
- public static function get_loglevel() {
+ /**
+ * @return int Debug::LOG_*
+ */
+ public static function get_loglevel(): int {
return self::$loglevel;
}
- public static function log($message, int $level = 0) {
+ /**
+ * @param int $level Debug::LOG_*
+ */
+ public static function log(string $message, int $level = Debug::LOG_NORMAL): bool {
if (!self::$enabled || self::$loglevel < $level) return false;
- $ts = strftime("%H:%M:%S", time());
+ $ts = date("H:i:s", time());
if (function_exists('posix_getpid')) {
$ts = "$ts/" . posix_getpid();
}
@@ -73,7 +111,7 @@ class Debug {
if (!$locked) {
fclose($fp);
user_error("Unable to lock debugging log file: " . self::$logfile, E_USER_WARNING);
- return;
+ return false;
}
}
@@ -86,7 +124,7 @@ class Debug {
fclose($fp);
if (self::$quiet)
- return;
+ return false;
} else {
user_error("Unable to open debugging log file: " . self::$logfile, E_USER_WARNING);
@@ -94,5 +132,7 @@ class Debug {
}
print "[$ts] $message\n";
+
+ return true;
}
}
diff --git a/classes/digest.php b/classes/digest.php
index 94e5cd1fc..15203166b 100644
--- a/classes/digest.php
+++ b/classes/digest.php
@@ -1,7 +1,7 @@
<?php
class Digest
{
- static function send_headlines_digests() {
+ static function send_headlines_digests(): void {
$user_limit = 15; // amount of users to process (e.g. emails to send out)
$limit = 1000; // maximum amount of headlines to include
@@ -62,7 +62,7 @@ class Digest
if ($rc && $do_catchup) {
Debug::log("Marking affected articles as read...");
- Article::_catchup_by_id($affected_ids, 0, $line["id"]);
+ Article::_catchup_by_id($affected_ids, Article::CATCHUP_MODE_MARK_AS_READ, $line["id"]);
}
} else {
Debug::log("No headlines");
@@ -78,6 +78,9 @@ class Digest
Debug::log("All done.");
}
+ /**
+ * @return array{0: string, 1: int, 2: array<int>, 3: string}
+ */
static function prepare_headlines_digest(int $user_id, int $days = 1, int $limit = 1000) {
$tpl = new Templator();
diff --git a/classes/diskcache.php b/classes/diskcache.php
index d7ea26d3b..34bba25f1 100644
--- a/classes/diskcache.php
+++ b/classes/diskcache.php
@@ -1,8 +1,14 @@
<?php
class DiskCache {
+ // TODO: class properties can be switched to PHP typing if/when the minimum PHP_VERSION is raised to 7.4.0+
+ /** @var string */
private $dir;
- // https://stackoverflow.com/a/53662733
+ /**
+ * https://stackoverflow.com/a/53662733
+ *
+ * @var array<string, string>
+ */
private $mimeMap = [
'video/3gpp2' => '3g2',
'video/3gp' => '3gp',
@@ -190,21 +196,22 @@ class DiskCache {
'text/x-scriptzsh' => 'zsh'
];
- public function __construct($dir) {
+ public function __construct(string $dir) {
$this->dir = Config::get(Config::CACHE_DIR) . "/" . basename(clean($dir));
}
- public function get_dir() {
+ public function get_dir(): string {
return $this->dir;
}
- public function make_dir() {
+ public function make_dir(): bool {
if (!is_dir($this->dir)) {
return mkdir($this->dir);
}
+ return false;
}
- public function is_writable($filename = "") {
+ public function is_writable(?string $filename = null): bool {
if ($filename) {
if (file_exists($this->get_full_path($filename)))
return is_writable($this->get_full_path($filename));
@@ -215,44 +222,75 @@ class DiskCache {
}
}
- public function exists($filename) {
+ public function exists(string $filename): bool {
return file_exists($this->get_full_path($filename));
}
- public function get_size($filename) {
+ /**
+ * @return int|false -1 if the file doesn't exist, false if an error occurred, size in bytes otherwise
+ */
+ public function get_size(string $filename) {
if ($this->exists($filename))
return filesize($this->get_full_path($filename));
else
return -1;
}
- public function get_full_path($filename) {
+ public function get_full_path(string $filename): string {
return $this->dir . "/" . basename(clean($filename));
}
- public function put($filename, $data) {
+ /**
+ * @param mixed $data
+ *
+ * @return int|false Bytes written or false if an error occurred.
+ */
+ public function put(string $filename, $data) {
return file_put_contents($this->get_full_path($filename), $data);
}
- public function touch($filename) {
+ public function touch(string $filename): bool {
return touch($this->get_full_path($filename));
}
- public function get($filename) {
+ /** Downloads $url to cache as $local_filename if its missing (unless $force-ed)
+ * @param string $url
+ * @param string $local_filename
+ * @param array<string,string|int|false> $options (additional params to UrlHelper::fetch())
+ * @param bool $force
+ * @return bool
+ */
+ public function download(string $url, string $local_filename, array $options = [], bool $force = false) : bool {
+ if ($this->exists($local_filename) && !$force)
+ return true;
+
+ $data = UrlHelper::fetch(array_merge(["url" => $url,
+ "max_size" => Config::get(Config::MAX_CACHE_FILE_SIZE)], $options));
+
+ if ($data)
+ return $this->put($local_filename, $data) > 0;
+
+ return false;
+ }
+
+ public function get(string $filename): ?string {
if ($this->exists($filename))
return file_get_contents($this->get_full_path($filename));
else
return null;
}
- public function get_mime_type($filename) {
+ /**
+ * @return false|null|string false if detection failed, null if the file doesn't exist, string mime content type otherwise
+ */
+ public function get_mime_type(string $filename) {
if ($this->exists($filename))
return mime_content_type($this->get_full_path($filename));
else
return null;
}
- public function get_fake_extension($filename) {
+ public function get_fake_extension(string $filename): string {
$mimetype = $this->get_mime_type($filename);
if ($mimetype)
@@ -261,7 +299,10 @@ class DiskCache {
return "";
}
- public function send($filename) {
+ /**
+ * @return bool|int false if the file doesn't exist (or unreadable) or isn't audio/video, true if a plugin handled, otherwise int of bytes sent
+ */
+ public function send(string $filename) {
$fake_extension = $this->get_fake_extension($filename);
if ($fake_extension)
@@ -272,7 +313,7 @@ class DiskCache {
return $this->send_local_file($this->get_full_path($filename));
}
- public function get_url($filename) {
+ public function get_url(string $filename): string {
return Config::get_self_url() . "/public.php?op=cached&file=" . basename($this->dir) . "/" . basename($filename);
}
@@ -280,8 +321,7 @@ class DiskCache {
// this is called separately after sanitize() and plugin render article hooks to allow
// plugins work on original source URLs used before caching
// NOTE: URLs should be already absolutized because this is called after sanitize()
- static public function rewrite_urls($str)
- {
+ static public function rewrite_urls(string $str): string {
$res = trim($str);
if (!$res) return '';
@@ -338,7 +378,7 @@ class DiskCache {
return $res;
}
- static function expire() {
+ static function expire(): void {
$dirs = array_filter(glob(Config::get(Config::CACHE_DIR) . "/*"), "is_dir");
foreach ($dirs as $cache_dir) {
@@ -362,14 +402,19 @@ class DiskCache {
}
}
- /* this is essentially a wrapper for readfile() which allows plugins to hook
- output with httpd-specific "fast" implementation i.e. X-Sendfile or whatever else
-
- hook function should return true if request was handled (or at least attempted to)
-
- note that this can be called without user context so the plugin to handle this
- should be loaded systemwide in config.php */
- function send_local_file($filename) {
+ /* */
+ /**
+ * this is essentially a wrapper for readfile() which allows plugins to hook
+ * output with httpd-specific "fast" implementation i.e. X-Sendfile or whatever else
+ *
+ * hook function should return true if request was handled (or at least attempted to)
+ *
+ * note that this can be called without user context so the plugin to handle this
+ * should be loaded systemwide in config.php
+ *
+ * @return bool|int false if the file doesn't exist (or unreadable) or isn't audio/video, true if a plugin handled, otherwise int of bytes sent
+ */
+ function send_local_file(string $filename) {
if (file_exists($filename)) {
if (is_writable($filename)) touch($filename);
diff --git a/classes/errors.php b/classes/errors.php
index 3599c2639..aa626d017 100644
--- a/classes/errors.php
+++ b/classes/errors.php
@@ -7,7 +7,34 @@ class Errors {
const E_SCHEMA_MISMATCH = "E_SCHEMA_MISMATCH";
const E_URL_SCHEME_MISMATCH = "E_URL_SCHEME_MISMATCH";
- static function to_json(string $code, array $params = []) {
+ /**
+ * @param Errors::E_* $code
+ * @param array<string, string> $params
+ */
+ static function to_json(string $code, array $params = []): string {
return json_encode(["error" => ["code" => $code, "params" => $params]]);
}
+
+ static function libxml_last_error() : string {
+ $error = libxml_get_last_error();
+ $error_formatted = "";
+
+ if ($error) {
+ foreach (libxml_get_errors() as $error) {
+ if ($error->level == LIBXML_ERR_FATAL) {
+ // currently only the first error is reported
+ $error_formatted = self::format_libxml_error($error);
+ break;
+ }
+ }
+ }
+
+ return UConverter::transcode($error_formatted, 'UTF-8', 'UTF-8');
+ }
+
+ static function format_libxml_error(LibXMLError $error) : string {
+ return sprintf("LibXML error %s at line %d (column %d): %s",
+ $error->code, $error->line, $error->column,
+ $error->message);
+ }
}
diff --git a/classes/feedenclosure.php b/classes/feedenclosure.php
index 2435f6854..b5f5cc411 100644
--- a/classes/feedenclosure.php
+++ b/classes/feedenclosure.php
@@ -1,10 +1,21 @@
<?php
class FeedEnclosure {
+ /** @var string */
public $link;
+
+ /** @var string */
public $type;
+
+ /** @var string */
public $length;
+
+ /** @var string */
public $title;
+
+ /** @var string */
public $height;
+
+ /** @var string */
public $width;
}
diff --git a/classes/feeditem.php b/classes/feeditem.php
index 3a5e5dc09..fd7c54883 100644
--- a/classes/feeditem.php
+++ b/classes/feeditem.php
@@ -1,16 +1,24 @@
<?php
abstract class FeedItem {
- abstract function get_id();
+ abstract function get_id(): string;
+
+ /** @return int|false a timestamp on success, false otherwise */
abstract function get_date();
- abstract function get_link();
- abstract function get_title();
- abstract function get_description();
- abstract function get_content();
- abstract function get_comments_url();
- abstract function get_comments_count();
- abstract function get_categories();
- abstract function get_enclosures();
- abstract function get_author();
- abstract function get_language();
+
+ abstract function get_link(): string;
+ abstract function get_title(): string;
+ abstract function get_description(): string;
+ abstract function get_content(): string;
+ abstract function get_comments_url(): string;
+ abstract function get_comments_count(): int;
+
+ /** @return array<int, string> */
+ abstract function get_categories(): array;
+
+ /** @return array<int, FeedEnclosure> */
+ abstract function get_enclosures(): array;
+
+ abstract function get_author(): string;
+ abstract function get_language(): string;
}
diff --git a/classes/feeditem/atom.php b/classes/feeditem/atom.php
index 51358f36c..cac6d8c54 100755
--- a/classes/feeditem/atom.php
+++ b/classes/feeditem/atom.php
@@ -2,7 +2,7 @@
class FeedItem_Atom extends FeedItem_Common {
const NS_XML = "http://www.w3.org/XML/1998/namespace";
- function get_id() {
+ function get_id(): string {
$id = $this->elem->getElementsByTagName("id")->item(0);
if ($id) {
@@ -12,6 +12,9 @@ class FeedItem_Atom extends FeedItem_Common {
}
}
+ /**
+ * @return int|false a timestamp on success, false otherwise
+ */
function get_date() {
$updated = $this->elem->getElementsByTagName("updated")->item(0);
@@ -30,10 +33,13 @@ class FeedItem_Atom extends FeedItem_Common {
if ($date) {
return strtotime($date->nodeValue);
}
+
+ // consistent with strtotime failing to parse
+ return false;
}
- function get_link() {
+ function get_link(): string {
$links = $this->elem->getElementsByTagName("link");
foreach ($links as $link) {
@@ -44,24 +50,27 @@ class FeedItem_Atom extends FeedItem_Common {
$base = $this->xpath->evaluate("string(ancestor-or-self::*[@xml:base][1]/@xml:base)", $link);
if ($base)
- return rewrite_relative_url($base, clean(trim($link->getAttribute("href"))));
+ return UrlHelper::rewrite_relative($base, clean(trim($link->getAttribute("href"))));
else
return clean(trim($link->getAttribute("href")));
-
}
}
+
+ return '';
}
- function get_title() {
+ function get_title(): string {
$title = $this->elem->getElementsByTagName("title")->item(0);
-
- if ($title) {
- return clean(trim($title->nodeValue));
- }
+ return $title ? clean(trim($title->nodeValue)) : '';
}
- /** $base is optional (returns $content if $base is null), $content is an HTML string */
- private function rewrite_content_to_base($base, $content) {
+ /**
+ * @param string|null $base optional (returns $content if $base is null)
+ * @param string $content an HTML string
+ *
+ * @return string the rewritten XML or original $content
+ */
+ private function rewrite_content_to_base(?string $base = null, ?string $content = '') {
if (!empty($base) && !empty($content)) {
@@ -81,14 +90,17 @@ class FeedItem_Atom extends FeedItem_Common {
}
}
- return $tmpdoc->saveXML();
+ // Fall back to $content if saveXML somehow fails (i.e. returns false)
+ $modified_content = $tmpdoc->saveXML();
+ return $modified_content !== false ? $modified_content : $content;
}
}
return $content;
}
- function get_content() {
+ function get_content(): string {
+ /** @var DOMElement|null */
$content = $this->elem->getElementsByTagName("content")->item(0);
if ($content) {
@@ -108,10 +120,13 @@ class FeedItem_Atom extends FeedItem_Common {
return $this->rewrite_content_to_base($base, $this->subtree_or_text($content));
}
+
+ return '';
}
// TODO: duplicate code should be merged with get_content()
- function get_description() {
+ function get_description(): string {
+ /** @var DOMElement|null */
$content = $this->elem->getElementsByTagName("summary")->item(0);
if ($content) {
@@ -132,9 +147,13 @@ class FeedItem_Atom extends FeedItem_Common {
return $this->rewrite_content_to_base($base, $this->subtree_or_text($content));
}
+ return '';
}
- function get_categories() {
+ /**
+ * @return array<int, string>
+ */
+ function get_categories(): array {
$categories = $this->elem->getElementsByTagName("category");
$cats = [];
@@ -152,7 +171,10 @@ class FeedItem_Atom extends FeedItem_Common {
return $this->normalize_categories($cats);
}
- function get_enclosures() {
+ /**
+ * @return array<int, FeedEnclosure>
+ */
+ function get_enclosures(): array {
$links = $this->elem->getElementsByTagName("link");
$encs = [];
@@ -182,7 +204,7 @@ class FeedItem_Atom extends FeedItem_Common {
return $encs;
}
- function get_language() {
+ function get_language(): string {
$lang = $this->elem->getAttributeNS(self::NS_XML, "lang");
if (!empty($lang)) {
@@ -195,5 +217,6 @@ class FeedItem_Atom extends FeedItem_Common {
}
}
}
+ return '';
}
}
diff --git a/classes/feeditem/common.php b/classes/feeditem/common.php
index 18afeaa94..6a9be8aca 100755
--- a/classes/feeditem/common.php
+++ b/classes/feeditem/common.php
@@ -1,16 +1,20 @@
<?php
abstract class FeedItem_Common extends FeedItem {
+ /** @var DOMElement */
protected $elem;
- protected $xpath;
+
+ /** @var DOMDocument */
protected $doc;
- function __construct($elem, $doc, $xpath) {
+ /** @var DOMXPath */
+ protected $xpath;
+
+ function __construct(DOMElement $elem, DOMDocument $doc, DOMXPath $xpath) {
$this->elem = $elem;
$this->xpath = $xpath;
$this->doc = $doc;
try {
-
$source = $elem->getElementsByTagName("source")->item(0);
// we don't need <source> element
@@ -21,11 +25,12 @@ abstract class FeedItem_Common extends FeedItem {
}
}
- function get_element() {
+ function get_element(): DOMElement {
return $this->elem;
}
- function get_author() {
+ function get_author(): string {
+ /** @var DOMElement|null */
$author = $this->elem->getElementsByTagName("author")->item(0);
if ($author) {
@@ -51,7 +56,7 @@ abstract class FeedItem_Common extends FeedItem {
return implode(", ", $authors);
}
- function get_comments_url() {
+ function get_comments_url(): string {
//RSS only. Use a query here to avoid namespace clashes (e.g. with slash).
//might give a wrong result if a default namespace was declared (possible with XPath 2.0)
$com_url = $this->xpath->query("comments", $this->elem)->item(0);
@@ -65,20 +70,28 @@ abstract class FeedItem_Common extends FeedItem {
if ($com_url)
return clean($com_url->nodeValue);
+
+ return '';
}
- function get_comments_count() {
+ function get_comments_count(): int {
//also query for ATE stuff here
$query = "slash:comments|thread:total|atom:link[@rel='replies']/@thread:count";
$comments = $this->xpath->query($query, $this->elem)->item(0);
- if ($comments) {
- return clean($comments->nodeValue);
+ if ($comments && is_numeric($comments->nodeValue)) {
+ return (int) clean($comments->nodeValue);
}
+
+ return 0;
}
- // this is common for both Atom and RSS types and deals with various media: elements
- function get_enclosures() {
+ /**
+ * this is common for both Atom and RSS types and deals with various 'media:' elements
+ *
+ * @return array<int, FeedEnclosure>
+ */
+ function get_enclosures(): array {
$encs = [];
$enclosures = $this->xpath->query("media:content", $this->elem);
@@ -108,6 +121,7 @@ abstract class FeedItem_Common extends FeedItem {
foreach ($enclosures as $enclosure) {
$enc = new FeedEnclosure();
+ /** @var DOMElement|null */
$content = $this->xpath->query("media:content", $enclosure)->item(0);
if ($content) {
@@ -150,11 +164,14 @@ abstract class FeedItem_Common extends FeedItem {
return $encs;
}
- function count_children($node) {
+ function count_children(DOMElement $node): int {
return $node->getElementsByTagName("*")->length;
}
- function subtree_or_text($node) {
+ /**
+ * @return false|string false on failure, otherwise string contents
+ */
+ function subtree_or_text(DOMElement $node) {
if ($this->count_children($node) == 0) {
return $node->nodeValue;
} else {
@@ -162,7 +179,12 @@ abstract class FeedItem_Common extends FeedItem {
}
}
- static function normalize_categories($cats) {
+ /**
+ * @param array<int, string> $cats
+ *
+ * @return array<int, string>
+ */
+ static function normalize_categories(array $cats): array {
$tmp = [];
diff --git a/classes/feeditem/rss.php b/classes/feeditem/rss.php
index 1f7953c51..7017d04e9 100755
--- a/classes/feeditem/rss.php
+++ b/classes/feeditem/rss.php
@@ -1,6 +1,6 @@
<?php
class FeedItem_RSS extends FeedItem_Common {
- function get_id() {
+ function get_id(): string {
$id = $this->elem->getElementsByTagName("guid")->item(0);
if ($id) {
@@ -10,6 +10,9 @@ class FeedItem_RSS extends FeedItem_Common {
}
}
+ /**
+ * @return int|false a timestamp on success, false otherwise
+ */
function get_date() {
$pubDate = $this->elem->getElementsByTagName("pubDate")->item(0);
@@ -22,9 +25,12 @@ class FeedItem_RSS extends FeedItem_Common {
if ($date) {
return strtotime($date->nodeValue);
}
+
+ // consistent with strtotime failing to parse
+ return false;
}
- function get_link() {
+ function get_link(): string {
$links = $this->xpath->query("atom:link", $this->elem);
foreach ($links as $link) {
@@ -37,6 +43,7 @@ class FeedItem_RSS extends FeedItem_Common {
}
}
+ /** @var DOMElement|null */
$link = $this->elem->getElementsByTagName("guid")->item(0);
if ($link && $link->hasAttributes() && $link->getAttribute("isPermaLink") == "true") {
@@ -48,9 +55,11 @@ class FeedItem_RSS extends FeedItem_Common {
if ($link) {
return clean(trim($link->nodeValue));
}
+
+ return '';
}
- function get_title() {
+ function get_title(): string {
$title = $this->xpath->query("title", $this->elem)->item(0);
if ($title) {
@@ -64,10 +73,15 @@ class FeedItem_RSS extends FeedItem_Common {
if ($title) {
return clean(trim($title->nodeValue));
}
+
+ return '';
}
- function get_content() {
+ function get_content(): string {
+ /** @var DOMElement|null */
$contentA = $this->xpath->query("content:encoded", $this->elem)->item(0);
+
+ /** @var DOMElement|null */
$contentB = $this->elem->getElementsByTagName("description")->item(0);
if ($contentA && !$contentB) {
@@ -85,17 +99,24 @@ class FeedItem_RSS extends FeedItem_Common {
return mb_strlen($resultA) > mb_strlen($resultB) ? $resultA : $resultB;
}
+
+ return '';
}
- function get_description() {
+ function get_description(): string {
$summary = $this->elem->getElementsByTagName("description")->item(0);
if ($summary) {
return $summary->nodeValue;
}
+
+ return '';
}
- function get_categories() {
+ /**
+ * @return array<int, string>
+ */
+ function get_categories(): array {
$categories = $this->elem->getElementsByTagName("category");
$cats = [];
@@ -112,7 +133,10 @@ class FeedItem_RSS extends FeedItem_Common {
return $this->normalize_categories($cats);
}
- function get_enclosures() {
+ /**
+ * @return array<int, FeedEnclosure>
+ */
+ function get_enclosures(): array {
$enclosures = $this->elem->getElementsByTagName("enclosure");
$encs = array();
@@ -134,7 +158,7 @@ class FeedItem_RSS extends FeedItem_Common {
return $encs;
}
- function get_language() {
+ function get_language(): string {
$languages = $this->doc->getElementsByTagName('language');
if (count($languages) == 0) {
@@ -143,5 +167,4 @@ class FeedItem_RSS extends FeedItem_Common {
return clean($languages[0]->textContent);
}
-
}
diff --git a/classes/feedparser.php b/classes/feedparser.php
index daba271fb..fc2489e2d 100644
--- a/classes/feedparser.php
+++ b/classes/feedparser.php
@@ -1,19 +1,35 @@
<?php
class FeedParser {
+
+ /** @var DOMDocument */
private $doc;
- private $error;
- private $libxml_errors = array();
- private $items;
+
+ /** @var string|null */
+ private $error = null;
+
+ /** @var array<string> */
+ private $libxml_errors = [];
+
+ /** @var array<FeedItem> */
+ private $items = [];
+
+ /** @var string|null */
private $link;
+
+ /** @var string|null */
private $title;
+
+ /** @var FeedParser::FEED_*|null */
private $type;
+
+ /** @var DOMXPath|null */
private $xpath;
const FEED_RDF = 0;
const FEED_RSS = 1;
const FEED_ATOM = 2;
- function __construct($data) {
+ function __construct(string $data) {
libxml_use_internal_errors(true);
libxml_clear_errors();
$this->doc = new DOMDocument();
@@ -26,18 +42,18 @@ class FeedParser {
if ($error) {
foreach (libxml_get_errors() as $error) {
if ($error->level == LIBXML_ERR_FATAL) {
- if(!isset($this->error)) //currently only the first error is reported
+ // currently only the first error is reported
+ if (!isset($this->error)) {
$this->error = $this->format_error($error);
- $this->libxml_errors [] = $this->format_error($error);
+ }
+ $this->libxml_errors[] = $this->format_error($error);
}
}
}
libxml_clear_errors();
-
- $this->items = array();
}
- function init() {
+ function init() : void {
$root = $this->doc->firstChild;
$xpath = new DOMXPath($this->doc);
$xpath->registerNamespace('atom', 'http://www.w3.org/2005/Atom');
@@ -51,10 +67,12 @@ class FeedParser {
$this->xpath = $xpath;
- $root = $xpath->query("(//atom03:feed|//atom:feed|//channel|//rdf:rdf|//rdf:RDF)");
+ $root_list = $xpath->query("(//atom03:feed|//atom:feed|//channel|//rdf:rdf|//rdf:RDF)");
+
+ if (!empty($root_list) && $root_list->length > 0) {
- if (!empty($root) && $root->length > 0) {
- $root = $root->item(0);
+ /** @var DOMElement|null $root */
+ $root = $root_list->item(0);
if ($root) {
switch (mb_strtolower($root->tagName)) {
@@ -69,7 +87,7 @@ class FeedParser {
$this->type = $this::FEED_ATOM;
break;
default:
- if( !isset($this->error) ){
+ if (!isset($this->error)) {
$this->error = "Unknown/unsupported feed type";
}
return;
@@ -100,6 +118,7 @@ class FeedParser {
if (!$link)
$link = $xpath->query("//atom03:feed/atom03:link[@rel='alternate']")->item(0);
+ /** @var DOMElement|null $link */
if ($link && $link->hasAttributes()) {
$this->link = $link->getAttribute("href");
}
@@ -121,6 +140,7 @@ class FeedParser {
$this->title = $title->nodeValue;
}
+ /** @var DOMElement|null $link */
$link = $xpath->query("//channel/link")->item(0);
if ($link) {
@@ -166,46 +186,43 @@ class FeedParser {
if ($this->link) $this->link = trim($this->link);
} else {
- if( !isset($this->error) ){
+ if (!isset($this->error)) {
$this->error = "Unknown/unsupported feed type";
}
return;
}
}
- function format_error($error) {
- if ($error) {
- return sprintf("LibXML error %s at line %d (column %d): %s",
- $error->code, $error->line, $error->column,
- $error->message);
- } else {
- return "";
- }
+ /** @deprecated use Errors::format_libxml_error() instead */
+ function format_error(LibXMLError $error) : string {
+ return Errors::format_libxml_error($error);
}
// libxml may have invalid unicode data in error messages
- function error() {
- return UConverter::transcode($this->error, 'UTF-8', 'UTF-8');
+ function error() : string {
+ return UConverter::transcode($this->error ?? '', 'UTF-8', 'UTF-8');
}
- // WARNING: may return invalid unicode data
- function errors() {
+ /** @return array<string> - WARNING: may return invalid unicode data */
+ function errors() : array {
return $this->libxml_errors;
}
- function get_link() {
- return clean($this->link);
+ function get_link() : string {
+ return clean($this->link ?? '');
}
- function get_title() {
- return clean($this->title);
+ function get_title() : string {
+ return clean($this->title ?? '');
}
- function get_items() {
+ /** @return array<FeedItem> */
+ function get_items() : array {
return $this->items;
}
- function get_links($rel) {
+ /** @return array<string> */
+ function get_links(string $rel) : array {
$rv = array();
switch ($this->type) {
diff --git a/classes/feeds.php b/classes/feeds.php
index 42673ca95..a06486883 100755
--- a/classes/feeds.php
+++ b/classes/feeds.php
@@ -5,20 +5,25 @@ class Feeds extends Handler_Protected {
const NEVER_GROUP_FEEDS = [ -6, 0 ];
const NEVER_GROUP_BY_DATE = [ -2, -1, -3 ];
- private $params;
+ /** @var int|float int on 64-bit, float on 32-bit */
+ private $viewfeed_timestamp;
- private $viewfeed_timestamp;
- private $viewfeed_timestamp_last;
+ /** @var int|float int on 64-bit, float on 32-bit */
+ private $viewfeed_timestamp_last;
- function csrf_ignore($method) {
+ function csrf_ignore(string $method): bool {
$csrf_ignored = array("index");
return array_search($method, $csrf_ignored) !== false;
}
- private function _format_headlines_list($feed, $method, $view_mode, $limit, $cat_view,
- $offset, $override_order = false, $include_children = false, $check_first_id = false,
- $skip_first_id_check = false, $order_by = false) {
+ /**
+ * @param string|int $feed
+ * @return array{0: array<int, int>, 1: int, 2: int, 3: bool, 4: array<string, mixed>} $topmost_article_ids, $headlines_count, $feed, $disable_cache, $reply
+ */
+ private function _format_headlines_list($feed, string $method, string $view_mode, int $limit, bool $cat_view,
+ int $offset, string $override_order, bool $include_children, ?int $check_first_id = null,
+ ?bool $skip_first_id_check = false, ? string $order_by = ''): array {
$disable_cache = false;
@@ -65,6 +70,8 @@ class Feeds extends Handler_Protected {
$qfh_ret = [];
if (!$cat_view && is_numeric($feed) && $feed < PLUGIN_FEED_BASE_INDEX && $feed > LABEL_BASE_INDEX) {
+
+ /** @var IVirtualFeed|false $handler */
$handler = PluginHost::getInstance()->get_feed_handler(
PluginHost::feed_to_pfeed_id($feed));
@@ -126,7 +133,7 @@ class Feeds extends Handler_Protected {
$reply['vfeed_group_enabled'] = $vfeed_group_enabled;
$plugin_menu_items = "";
- PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM,
+ PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM2,
function ($result) use (&$plugin_menu_items) {
$plugin_menu_items .= $result;
},
@@ -188,7 +195,11 @@ class Feeds extends Handler_Protected {
// frontend doesn't expect pdo returning booleans as strings on mysql
if (Config::get(Config::DB_TYPE) == "mysql") {
foreach (["unread", "marked", "published"] as $k) {
- $line[$k] = $line[$k] === "1";
+ if (is_integer($line[$k])) {
+ $line[$k] = $line[$k] === 1;
+ } else {
+ $line[$k] = $line[$k] === "1";
+ }
}
}
@@ -230,24 +241,58 @@ class Feeds extends Handler_Protected {
$line["feed_title"] = $line["feed_title"] ?? "";
+ $button_doc = new DOMDocument();
+
$line["buttons_left"] = "";
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_ARTICLE_LEFT_BUTTON,
- function ($result) use (&$line) {
- $line["buttons_left"] .= $result;
+ function ($result, $plugin) use (&$line, &$button_doc) {
+ if ($result && $button_doc->loadXML($result)) {
+
+ /** @var DOMElement|null */
+ $child = $button_doc->firstChild;
+
+ if ($child) {
+ do {
+ $child->setAttribute('data-plugin-name', get_class($plugin));
+ } while ($child = $child->nextSibling);
+
+ $line["buttons_left"] .= $button_doc->saveXML($button_doc->firstChild);
+ }
+ } else if ($result) {
+ user_error(get_class($plugin) .
+ " plugin: content provided in HOOK_ARTICLE_LEFT_BUTTON is not valid XML: " .
+ Errors::libxml_last_error() . " $result", E_USER_WARNING);
+ }
},
$line);
$line["buttons"] = "";
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_ARTICLE_BUTTON,
- function ($result) use (&$line) {
- $line["buttons"] .= $result;
+ function ($result, $plugin) use (&$line, &$button_doc) {
+ if ($result && $button_doc->loadXML($result)) {
+
+ /** @var DOMElement|null */
+ $child = $button_doc->firstChild;
+
+ if ($child) {
+ do {
+ $child->setAttribute('data-plugin-name', get_class($plugin));
+ } while ($child = $child->nextSibling);
+
+ $line["buttons"] .= $button_doc->saveXML($button_doc->firstChild);
+ }
+ } else if ($result) {
+ user_error(get_class($plugin) .
+ " plugin: content provided in HOOK_ARTICLE_BUTTON is not valid XML: " .
+ Errors::libxml_last_error() . " $result", E_USER_WARNING);
+ }
},
$line);
$this->_mark_timestamp(" pre-sanitize");
$line["content"] = Sanitizer::sanitize($line["content"],
- $line['hide_images'], false, $line["site_url"], $highlight_words, $line["id"]);
+ $line['hide_images'], null, $line["site_url"], $highlight_words, $line["id"]);
$this->_mark_timestamp(" sanitize");
@@ -265,9 +310,9 @@ class Feeds extends Handler_Protected {
if ($line["num_enclosures"] > 0) {
$line["enclosures"] = Article::_format_enclosures($id,
- $line["always_display_enclosures"],
+ sql_bool_to_bool($line["always_display_enclosures"]),
$line["content"],
- $line["hide_images"]);
+ sql_bool_to_bool($line["hide_images"]));
} else {
$line["enclosures"] = [ 'formatted' => '', 'entries' => [] ];
}
@@ -275,7 +320,7 @@ class Feeds extends Handler_Protected {
$this->_mark_timestamp(" enclosures");
$line["updated_long"] = TimeHelper::make_local_datetime($line["updated"],true);
- $line["updated"] = TimeHelper::make_local_datetime($line["updated"], false, false, false, true);
+ $line["updated"] = TimeHelper::make_local_datetime($line["updated"], false, null, false, true);
$line['imported'] = T_sprintf("Imported at %s",
TimeHelper::make_local_datetime($line["date_entered"], false));
@@ -409,7 +454,7 @@ class Feeds extends Handler_Protected {
return array($topmost_article_ids, $headlines_count, $feed, $disable_cache, $reply);
}
- function catchupAll() {
+ function catchupAll(): void {
$sth = $this->pdo->prepare("UPDATE ttrss_user_entries SET
last_read = NOW(), unread = false WHERE unread = true AND owner_uid = ?");
$sth->execute([$_SESSION['uid']]);
@@ -417,16 +462,16 @@ class Feeds extends Handler_Protected {
print json_encode(array("message" => "UPDATE_COUNTERS"));
}
- function view() {
+ function view(): void {
$reply = array();
$feed = $_REQUEST["feed"];
$method = $_REQUEST["m"] ?? "";
$view_mode = $_REQUEST["view_mode"] ?? "";
$limit = 30;
- $cat_view = $_REQUEST["cat"] == "true";
+ $cat_view = self::_param_to_bool($_REQUEST["cat"] ?? false);
$next_unread_feed = $_REQUEST["nuf"] ?? 0;
- $offset = $_REQUEST["skip"] ?? 0;
+ $offset = (int) ($_REQUEST["skip"] ?? 0);
$order_by = $_REQUEST["order_by"] ?? "";
$check_first_id = $_REQUEST["fid"] ?? 0;
@@ -514,7 +559,10 @@ class Feeds extends Handler_Protected {
print json_encode($reply);
}
- private function _generate_dashboard_feed() {
+ /**
+ * @return array<string, array<string, mixed>>
+ */
+ private function _generate_dashboard_feed(): array {
$reply = array();
$reply['headlines']['id'] = -5;
@@ -556,7 +604,10 @@ class Feeds extends Handler_Protected {
return $reply;
}
- private function _generate_error_feed($error) {
+ /**
+ * @return array<string, mixed>
+ */
+ private function _generate_error_feed(string $error): array {
$reply = array();
$reply['headlines']['id'] = -7;
@@ -572,13 +623,13 @@ class Feeds extends Handler_Protected {
return $reply;
}
- function subscribeToFeed() {
+ function subscribeToFeed(): void {
print json_encode([
"cat_select" => \Controls\select_feeds_cats("cat")
]);
}
- function search() {
+ function search(): void {
print json_encode([
"show_language" => Config::get(Config::DB_TYPE) == "pgsql",
"show_syntax_help" => count(PluginHost::getInstance()->get_hooks(PluginHost::HOOK_SEARCH)) == 0,
@@ -587,10 +638,31 @@ class Feeds extends Handler_Protected {
]);
}
- function updatedebugger() {
+ function opensite(): void {
+ $feed = ORM::for_table('ttrss_feeds')
+ ->find_one((int)$_REQUEST['feed_id']);
+
+ if ($feed) {
+ $site_url = UrlHelper::validate($feed->site_url);
+
+ if ($site_url) {
+ header("Location: $site_url");
+ return;
+ }
+ }
+
+ header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
+ print "Feed not found or has an empty site URL.";
+ }
+
+ function updatedebugger(): void {
header("Content-type: text/html");
- $xdebug = isset($_REQUEST["xdebug"]) ? (int)$_REQUEST["xdebug"] : 1;
+ $xdebug = isset($_REQUEST["xdebug"]) ? (int)$_REQUEST["xdebug"] : Debug::LOG_VERBOSE;
+
+ if (!in_array($xdebug, Debug::ALL_LOG_LEVELS)) {
+ $xdebug = Debug::LOG_VERBOSE;
+ }
Debug::set_enabled(true);
Debug::set_loglevel($xdebug);
@@ -603,9 +675,9 @@ class Feeds extends Handler_Protected {
$sth->execute([$feed_id, $_SESSION['uid']]);
if (!$sth->fetch()) {
- print "Access denied.";
- return;
- }
+ print "Access denied.";
+ return;
+ }
?>
<!DOCTYPE html>
<html>
@@ -658,7 +730,7 @@ class Feeds extends Handler_Protected {
<fieldset>
<label>
<?= \Controls\select_hash("xdebug", $xdebug,
- [Debug::$LOG_VERBOSE => "LOG_VERBOSE", Debug::$LOG_EXTENDED => "LOG_EXTENDED"]);
+ [Debug::LOG_VERBOSE => "LOG_VERBOSE", Debug::LOG_EXTENDED => "LOG_EXTENDED"]);
?></label>
</fieldset>
@@ -690,7 +762,10 @@ class Feeds extends Handler_Protected {
}
- static function _catchup($feed, $cat_view, $owner_uid = false, $mode = 'all', $search = false) {
+ /**
+ * @param array<int, string> $search
+ */
+ static function _catchup(string $feed_id_or_tag_name, bool $cat_view, ?int $owner_uid = null, string $mode = 'all', ?array $search = null): void {
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
@@ -744,14 +819,16 @@ class Feeds extends Handler_Protected {
$date_qpart = "true";
}
- if (is_numeric($feed)) {
+ if (is_numeric($feed_id_or_tag_name)) {
+ $feed_id = (int) $feed_id_or_tag_name;
+
if ($cat_view) {
- if ($feed >= 0) {
+ if ($feed_id >= 0) {
- if ($feed > 0) {
- $children = self::_get_child_cats($feed, $owner_uid);
- array_push($children, $feed);
+ if ($feed_id > 0) {
+ $children = self::_get_child_cats($feed_id, $owner_uid);
+ array_push($children, $feed_id);
$children = array_map("intval", $children);
$children = join(",", $children);
@@ -769,7 +846,7 @@ class Feeds extends Handler_Protected {
(SELECT id FROM ttrss_feeds WHERE $cat_qpart) AND $date_qpart AND $search_qpart) as tmp)");
$sth->execute([$owner_uid]);
- } else if ($feed == -2) {
+ } else if ($feed_id == -2) {
$sth = $pdo->prepare("UPDATE ttrss_user_entries
SET unread = false,last_read = NOW() WHERE (SELECT COUNT(*)
@@ -778,18 +855,18 @@ class Feeds extends Handler_Protected {
$sth->execute([$owner_uid]);
}
- } else if ($feed > 0) {
+ } else if ($feed_id > 0) {
$sth = $pdo->prepare("UPDATE ttrss_user_entries
SET unread = false, last_read = NOW() WHERE ref_id IN
(SELECT id FROM
(SELECT DISTINCT id FROM ttrss_entries, ttrss_user_entries WHERE ref_id = id
AND owner_uid = ? AND unread = true AND feed_id = ? AND $date_qpart AND $search_qpart) as tmp)");
- $sth->execute([$owner_uid, $feed]);
+ $sth->execute([$owner_uid, $feed_id]);
- } else if ($feed < 0 && $feed > LABEL_BASE_INDEX) { // special, like starred
+ } else if ($feed_id < 0 && $feed_id > LABEL_BASE_INDEX) { // special, like starred
- if ($feed == -1) {
+ if ($feed_id == -1) {
$sth = $pdo->prepare("UPDATE ttrss_user_entries
SET unread = false, last_read = NOW() WHERE ref_id IN
(SELECT id FROM
@@ -798,7 +875,7 @@ class Feeds extends Handler_Protected {
$sth->execute([$owner_uid]);
}
- if ($feed == -2) {
+ if ($feed_id == -2) {
$sth = $pdo->prepare("UPDATE ttrss_user_entries
SET unread = false, last_read = NOW() WHERE ref_id IN
(SELECT id FROM
@@ -807,7 +884,7 @@ class Feeds extends Handler_Protected {
$sth->execute([$owner_uid]);
}
- if ($feed == -3) {
+ if ($feed_id == -3) {
$intl = (int) get_pref(Prefs::FRESH_ARTICLE_MAX_AGE);
@@ -826,7 +903,7 @@ class Feeds extends Handler_Protected {
$sth->execute([$owner_uid]);
}
- if ($feed == -4) {
+ if ($feed_id == -4) {
$sth = $pdo->prepare("UPDATE ttrss_user_entries
SET unread = false, last_read = NOW() WHERE ref_id IN
(SELECT id FROM
@@ -834,10 +911,9 @@ class Feeds extends Handler_Protected {
AND owner_uid = ? AND unread = true AND $date_qpart AND $search_qpart) as tmp)");
$sth->execute([$owner_uid]);
}
+ } else if ($feed_id < LABEL_BASE_INDEX) { // label
- } else if ($feed < LABEL_BASE_INDEX) { // label
-
- $label_id = Labels::feed_to_label_id($feed);
+ $label_id = Labels::feed_to_label_id($feed_id);
$sth = $pdo->prepare("UPDATE ttrss_user_entries
SET unread = false, last_read = NOW() WHERE ref_id IN
@@ -846,23 +922,29 @@ class Feeds extends Handler_Protected {
AND label_id = ? AND ref_id = article_id
AND owner_uid = ? AND unread = true AND $date_qpart AND $search_qpart) as tmp)");
$sth->execute([$label_id, $owner_uid]);
-
}
-
} else { // tag
+ $tag_name = $feed_id_or_tag_name;
+
$sth = $pdo->prepare("UPDATE ttrss_user_entries
SET unread = false, last_read = NOW() WHERE ref_id IN
(SELECT id FROM
(SELECT DISTINCT ttrss_entries.id FROM ttrss_entries, ttrss_user_entries, ttrss_tags WHERE ref_id = ttrss_entries.id
AND post_int_id = int_id AND tag_name = ?
AND ttrss_user_entries.owner_uid = ? AND unread = true AND $date_qpart AND $search_qpart) as tmp)");
- $sth->execute([$feed, $owner_uid]);
-
+ $sth->execute([$tag_name, $owner_uid]);
}
}
- static function _get_counters($feed, $is_cat = false, $unread_only = false,
- $owner_uid = false) {
+ /**
+ * @param int|string $feed feed id or tag name
+ * @param bool $is_cat
+ * @param bool $unread_only
+ * @param null|int $owner_uid
+ * @return int
+ * @throws PDOException
+ */
+ static function _get_counters($feed, bool $is_cat = false, bool $unread_only = false, ?int $owner_uid = null): int {
$n_feed = (int) $feed;
$need_entries = false;
@@ -883,6 +965,7 @@ class Feeds extends Handler_Protected {
return self::_get_cat_unread($n_feed, $owner_uid);
} else if ($n_feed == -6) {
return 0;
+ // tags
} else if ($feed != "0" && $n_feed == 0) {
$sth = $pdo->prepare("SELECT SUM((SELECT COUNT(int_id)
@@ -893,7 +976,8 @@ class Feeds extends Handler_Protected {
$sth->execute([$owner_uid, $feed]);
$row = $sth->fetch();
- return $row["count"];
+ // Handle 'SUM()' returning null if there are no results
+ return $row["count"] ?? 0;
} else if ($n_feed == -1) {
$match_part = "marked = true";
@@ -961,9 +1045,9 @@ class Feeds extends Handler_Protected {
}
}
- function add() {
+ function add(): void {
$feed = clean($_REQUEST['feed']);
- $cat = clean($_REQUEST['cat'] ?? '');
+ $cat = (int) clean($_REQUEST['cat'] ?? '');
$need_auth = isset($_REQUEST['need_auth']);
$login = $need_auth ? clean($_REQUEST['login']) : '';
$pass = $need_auth ? clean($_REQUEST['pass']) : '';
@@ -974,7 +1058,7 @@ class Feeds extends Handler_Protected {
}
/**
- * @return array (code => Status code, message => error message if available)
+ * @return array<string, mixed> (code => Status code, message => error message if available)
*
* 0 - OK, Feed already exists
* 1 - OK, Feed added
@@ -986,9 +1070,15 @@ class Feeds extends Handler_Protected {
* 5 - Couldn't download the URL content.
* 6 - Content is an invalid XML.
* 7 - Error while creating feed database entry.
+ * 8 - Permission denied (ACCESS_LEVEL_READONLY).
*/
- static function _subscribe($url, $cat_id = 0,
- $auth_login = '', $auth_pass = '') : array {
+ static function _subscribe(string $url, int $cat_id = 0, string $auth_login = '', string $auth_pass = ''): array {
+
+ $user = ORM::for_table("ttrss_users")->find_one($_SESSION['uid']);
+
+ if ($user && $user->access_level == UserHelper::ACCESS_LEVEL_READONLY) {
+ return ["code" => 8];
+ }
$pdo = Db::pdo();
@@ -996,6 +1086,13 @@ class Feeds extends Handler_Protected {
if (!$url) return ["code" => 2];
+ PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_PRE_SUBSCRIBE,
+ /** @phpstan-ignore-next-line */
+ function ($result) use (&$url, &$auth_login, &$auth_pass) {
+ // arguments are updated inside the hook (if needed)
+ },
+ $url, $auth_login, $auth_pass);
+
$contents = UrlHelper::fetch($url, false, $auth_login, $auth_pass);
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_SUBSCRIBE_FEED,
@@ -1054,15 +1151,18 @@ class Feeds extends Handler_Protected {
}
}
- static function _get_icon_file($feed_id) {
+ static function _get_icon_file(int $feed_id): string {
return Config::get(Config::ICONS_DIR) . "/$feed_id.ico";
}
- static function _has_icon($id) {
+ static function _has_icon(int $id): bool {
return is_file(Config::get(Config::ICONS_DIR) . "/$id.ico") && filesize(Config::get(Config::ICONS_DIR) . "/$id.ico") > 0;
}
- static function _get_icon($id) {
+ /**
+ * @return false|string false if the icon ID was unrecognized, otherwise, the icon identifier string
+ */
+ static function _get_icon(int $id) {
switch ($id) {
case 0:
return "archive";
@@ -1082,7 +1182,7 @@ class Feeds extends Handler_Protected {
} else {
$icon = self::_get_icon_file($id);
- if ($icon && file_exists($icon)) {
+ if ($icon && file_exists($icon)) {
return Config::get(Config::ICONS_URL) . "/" . basename($icon) . "?" . filemtime($icon);
}
}
@@ -1092,6 +1192,9 @@ class Feeds extends Handler_Protected {
return false;
}
+ /**
+ * @return false|int false if the feed couldn't be found by URL+owner, otherwise the feed ID
+ */
static function _find_by_url(string $feed_url, int $owner_uid) {
$feed = ORM::for_table('ttrss_feeds')
->where('owner_uid', $owner_uid)
@@ -1105,8 +1208,39 @@ class Feeds extends Handler_Protected {
}
}
- static function _get_title($id, bool $cat = false) {
- $pdo = Db::pdo();
+ /**
+ * $owner_uid defaults to $_SESSION['uid']
+ *
+ * @return false|int false if the category/feed couldn't be found by title, otherwise its ID
+ */
+ static function _find_by_title(string $title, bool $cat = false, int $owner_uid = 0) {
+
+ $res = false;
+
+ if ($cat) {
+ $res = ORM::for_table('ttrss_feed_categories')
+ ->where('owner_uid', $owner_uid ? $owner_uid : $_SESSION['uid'])
+ ->where('title', $title)
+ ->find_one();
+ } else {
+ $res = ORM::for_table('ttrss_feeds')
+ ->where('owner_uid', $owner_uid ? $owner_uid : $_SESSION['uid'])
+ ->where('title', $title)
+ ->find_one();
+ }
+
+ if ($res) {
+ return $res->id;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * @param string|int $id
+ */
+ static function _get_title($id, bool $cat = false): string {
+ $pdo = Db::pdo();
if ($cat) {
return self::_get_cat_title($id);
@@ -1118,7 +1252,7 @@ class Feeds extends Handler_Protected {
return __("Fresh articles");
} else if ($id == -4) {
return __("All articles");
- } else if ($id === 0 || $id === "0") {
+ } else if ($id === 0) {
return __("Archived articles");
} else if ($id == -6) {
return __("Recently read");
@@ -1147,12 +1281,12 @@ class Feeds extends Handler_Protected {
}
} else {
- return $id;
+ return "$id";
}
}
// only real cats
- static function _get_cat_marked(int $cat, int $owner_uid = 0) {
+ static function _get_cat_marked(int $cat, int $owner_uid = 0): int {
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
@@ -1166,16 +1300,17 @@ class Feeds extends Handler_Protected {
WHERE (cat_id = :cat OR (:cat IS NULL AND cat_id IS NULL))
AND owner_uid = :uid)
AND owner_uid = :uid");
+
$sth->execute(["cat" => $cat ? $cat : null, "uid" => $owner_uid]);
- $row = $sth->fetch();
- return $row["marked"];
- } else {
- return 0;
+ if ($row = $sth->fetch()) {
+ return (int) $row["marked"];
+ }
}
+ return 0;
}
- static function _get_cat_unread(int $cat, int $owner_uid = 0) {
+ static function _get_cat_unread(int $cat, int $owner_uid = 0): int {
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
@@ -1186,14 +1321,15 @@ class Feeds extends Handler_Protected {
$sth = $pdo->prepare("SELECT SUM(CASE WHEN unread THEN 1 ELSE 0 END) AS unread
FROM ttrss_user_entries
WHERE feed_id IN (SELECT id FROM ttrss_feeds
- WHERE (cat_id = :cat OR (:cat IS NULL AND cat_id IS NULL))
+ WHERE (cat_id = :cat OR (:cat IS NULL AND cat_id IS NULL))
AND owner_uid = :uid)
AND owner_uid = :uid");
- $sth->execute(["cat" => $cat ? $cat : null, "uid" => $owner_uid]);
- $row = $sth->fetch();
- return $row["unread"];
+ $sth->execute(["cat" => $cat ? $cat : null, "uid" => $owner_uid]);
+ if ($row = $sth->fetch()) {
+ return (int) $row["unread"];
+ }
} else if ($cat == -1) {
return 0;
} else if ($cat == -2) {
@@ -1201,15 +1337,19 @@ class Feeds extends Handler_Protected {
$sth = $pdo->prepare("SELECT COUNT(DISTINCT article_id) AS unread
FROM ttrss_user_entries ue, ttrss_user_labels2 l
WHERE article_id = ref_id AND unread IS true AND ue.owner_uid = :uid");
+
$sth->execute(["uid" => $owner_uid]);
- $row = $sth->fetch();
- return $row["unread"];
+ if ($row = $sth->fetch()) {
+ return (int) $row["unread"];
+ }
}
+
+ return 0;
}
// only accepts real cats (>= 0)
- static function _get_cat_children_unread(int $cat, int $owner_uid = 0) {
+ static function _get_cat_children_unread(int $cat, int $owner_uid = 0): int {
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
$pdo = Db::pdo();
@@ -1228,7 +1368,7 @@ class Feeds extends Handler_Protected {
return $unread;
}
- static function _get_global_unread(int $user_id = 0) {
+ static function _get_global_unread(int $user_id = 0): int {
if (!$user_id) $user_id = $_SESSION["uid"];
@@ -1241,10 +1381,11 @@ class Feeds extends Handler_Protected {
$sth->execute([$user_id]);
$row = $sth->fetch();
- return $row["count"];
+ // Handle 'SUM()' returning null if there are no articles/results (e.g. admin user with no feeds)
+ return $row["count"] ?? 0;
}
- static function _get_cat_title(int $cat_id) {
+ static function _get_cat_title(int $cat_id): string {
switch ($cat_id) {
case 0:
return __("Uncategorized");
@@ -1264,7 +1405,7 @@ class Feeds extends Handler_Protected {
}
}
- private static function _get_label_unread($label_id, int $owner_uid = 0) {
+ private static function _get_label_unread(int $label_id, ?int $owner_uid = null): int {
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
$pdo = Db::pdo();
@@ -1281,7 +1422,11 @@ class Feeds extends Handler_Protected {
}
}
- static function _get_headlines($params) {
+ /**
+ * @param array<string, mixed> $params
+ * @return array<int, mixed> $result, $feed_title, $feed_site_url, $last_error, $last_updated, $highlight_words, $first_id, $is_vfeed, $query_error_override
+ */
+ static function _get_headlines($params): array {
$pdo = Db::pdo();
@@ -1362,7 +1507,7 @@ class Feeds extends Handler_Protected {
$view_query_part = " ";
} else if ($feed != -1) {
- $unread = getFeedUnread($feed, $cat_view);
+ $unread = Feeds::_get_counters($feed, $cat_view, true);
if ($cat_view && $feed > 0 && $include_children)
$unread += self::_get_cat_children_unread($feed);
@@ -1498,7 +1643,7 @@ class Feeds extends Handler_Protected {
} else if ($feed <= LABEL_BASE_INDEX) { // labels
$label_id = Labels::feed_to_label_id($feed);
- $query_strategy_part = "label_id = ".$pdo->quote($label_id)." AND
+ $query_strategy_part = "label_id = $label_id AND
ttrss_labels2.id = ttrss_user_labels2.label_id AND
ttrss_user_labels2.article_id = ref_id";
@@ -1778,7 +1923,10 @@ class Feeds extends Handler_Protected {
}
- static function _get_parent_cats(int $cat, int $owner_uid) {
+ /**
+ * @return array<int, int>
+ */
+ static function _get_parent_cats(int $cat, int $owner_uid): array {
$rv = array();
$pdo = Db::pdo();
@@ -1795,7 +1943,10 @@ class Feeds extends Handler_Protected {
return $rv;
}
- static function _get_child_cats(int $cat, int $owner_uid) {
+ /**
+ * @return array<int, int>
+ */
+ static function _get_child_cats(int $cat, int $owner_uid): array {
$rv = array();
$pdo = Db::pdo();
@@ -1812,7 +1963,11 @@ class Feeds extends Handler_Protected {
return $rv;
}
- static function _cats_of(array $feeds, int $owner_uid, bool $with_parents = false) {
+ /**
+ * @param array<int, int> $feeds
+ * @return array<int, int>
+ */
+ static function _cats_of(array $feeds, int $owner_uid, bool $with_parents = false): array {
if (count($feeds) == 0)
return [];
@@ -1851,24 +2006,27 @@ class Feeds extends Handler_Protected {
}
}
- private function _color_of($name) {
- $colormap = [ "#1cd7d7","#d91111","#1212d7","#8e16e5","#7b7b7b",
- "#39f110","#0bbea6","#ec0e0e","#1534f2","#b9e416",
- "#479af2","#f36b14","#10c7e9","#1e8fe7","#e22727" ];
+ private function _color_of(string $name): string {
+ $colormap = [ "#1cd7d7","#d91111","#1212d7","#8e16e5","#7b7b7b",
+ "#39f110","#0bbea6","#ec0e0e","#1534f2","#b9e416",
+ "#479af2","#f36b14","#10c7e9","#1e8fe7","#e22727" ];
- $sum = 0;
+ $sum = 0;
- for ($i = 0; $i < strlen($name); $i++) {
- $sum += ord($name[$i]);
- }
+ for ($i = 0; $i < strlen($name); $i++) {
+ $sum += ord($name[$i]);
+ }
- $sum %= count($colormap);
+ $sum %= count($colormap);
- return $colormap[$sum];
+ return $colormap[$sum];
}
- private static function _get_feeds_from_html($url, $content) {
- $url = UrlHelper::validate($url);
+ /**
+ * @return array<string, string> array of feed URL -> feed title
+ */
+ private static function _get_feeds_from_html(string $url, string $content): array {
+ $url = UrlHelper::validate($url);
$baseUrl = substr($url, 0, strrpos($url, '/') + 1);
$feedUrls = [];
@@ -1885,9 +2043,7 @@ class Feeds extends Handler_Protected {
if ($title == '') {
$title = $entry->getAttribute('type');
}
- $feedUrl = rewrite_relative_url(
- $baseUrl, $entry->getAttribute('href')
- );
+ $feedUrl = UrlHelper::rewrite_relative($baseUrl, $entry->getAttribute('href'));
$feedUrls[$feedUrl] = $title;
}
}
@@ -1895,11 +2051,11 @@ class Feeds extends Handler_Protected {
return $feedUrls;
}
- static function _is_html($content) {
+ static function _is_html(string $content): bool {
return preg_match("/<html|DOCTYPE html/i", substr($content, 0, 8192)) !== 0;
}
- static function _remove_cat(int $id, int $owner_uid) {
+ static function _remove_cat(int $id, int $owner_uid): void {
$cat = ORM::for_table('ttrss_feed_categories')
->where('owner_uid', $owner_uid)
->find_one($id);
@@ -1908,7 +2064,7 @@ class Feeds extends Handler_Protected {
$cat->delete();
}
- static function _add_cat(string $title, int $owner_uid, int $parent_cat = null, int $order_id = 0) {
+ static function _add_cat(string $title, int $owner_uid, int $parent_cat = null, int $order_id = 0): bool {
$cat = ORM::for_table('ttrss_feed_categories')
->where('owner_uid', $owner_uid)
@@ -1932,13 +2088,18 @@ class Feeds extends Handler_Protected {
return false;
}
- static function _clear_access_keys(int $owner_uid) {
+ static function _clear_access_keys(int $owner_uid): void {
$key = ORM::for_table('ttrss_access_keys')
->where('owner_uid', $owner_uid)
->delete_many();
}
- static function _update_access_key(string $feed_id, bool $is_cat, int $owner_uid) {
+ /**
+ * @param string $feed_id may be a feed ID or tag
+ *
+ * @see Handler_Public#generate_syndicated_feed()
+ */
+ static function _update_access_key(string $feed_id, bool $is_cat, int $owner_uid): ?string {
$key = ORM::for_table('ttrss_access_keys')
->where('owner_uid', $owner_uid)
->where('feed_id', $feed_id)
@@ -1948,7 +2109,12 @@ class Feeds extends Handler_Protected {
return self::_get_access_key($feed_id, $is_cat, $owner_uid);
}
- static function _get_access_key(string $feed_id, bool $is_cat, int $owner_uid) {
+ /**
+ * @param string $feed_id may be a feed ID or tag
+ *
+ * @see Handler_Public#generate_syndicated_feed()
+ */
+ static function _get_access_key(string $feed_id, bool $is_cat, int $owner_uid): ?string {
$key = ORM::for_table('ttrss_access_keys')
->where('owner_uid', $owner_uid)
->where('feed_id', $feed_id)
@@ -1957,21 +2123,23 @@ class Feeds extends Handler_Protected {
if ($key) {
return $key->access_key;
- } else {
- $key = ORM::for_table('ttrss_access_keys')->create();
+ }
- $key->owner_uid = $owner_uid;
- $key->feed_id = $feed_id;
- $key->is_cat = $is_cat;
- $key->access_key = uniqid_short();
+ $key = ORM::for_table('ttrss_access_keys')->create();
- if ($key->save()) {
- return $key->access_key;
- }
+ $key->owner_uid = $owner_uid;
+ $key->feed_id = $feed_id;
+ $key->is_cat = $is_cat;
+ $key->access_key = uniqid_short();
+
+ if ($key->save()) {
+ return $key->access_key;
}
+
+ return null;
}
- static function _purge(int $feed_id, int $purge_interval) {
+ static function _purge(int $feed_id, int $purge_interval): ?int {
if (!$purge_interval) $purge_interval = self::_get_purge_interval($feed_id);
@@ -1987,7 +2155,7 @@ class Feeds extends Handler_Protected {
$owner_uid = $row["owner_uid"];
if (Config::get(Config::FORCE_ARTICLE_PURGE) != 0) {
- Debug::log("purge_feed: FORCE_ARTICLE_PURGE is set, overriding interval to " . Config::get(Config::FORCE_ARTICLE_PURGE), Debug::$LOG_VERBOSE);
+ Debug::log("purge_feed: FORCE_ARTICLE_PURGE is set, overriding interval to " . Config::get(Config::FORCE_ARTICLE_PURGE), Debug::LOG_VERBOSE);
$purge_unread = true;
$purge_interval = Config::get(Config::FORCE_ARTICLE_PURGE);
} else {
@@ -1996,11 +2164,11 @@ class Feeds extends Handler_Protected {
$purge_interval = (int) $purge_interval;
- Debug::log("purge_feed: interval $purge_interval days for feed $feed_id, owner: $owner_uid, purge unread: $purge_unread", Debug::$LOG_VERBOSE);
+ Debug::log("purge_feed: interval $purge_interval days for feed $feed_id, owner: $owner_uid, purge unread: $purge_unread", Debug::LOG_VERBOSE);
if ($purge_interval <= 0) {
- Debug::log("purge_feed: purging disabled for this feed, nothing to do.", Debug::$LOG_VERBOSE);
- return;
+ Debug::log("purge_feed: purging disabled for this feed, nothing to do.", Debug::LOG_VERBOSE);
+ return null;
}
if (!$purge_unread)
@@ -2032,16 +2200,16 @@ class Feeds extends Handler_Protected {
$rows_deleted = $sth->rowCount();
- Debug::log("purge_feed: deleted $rows_deleted articles.", Debug::$LOG_VERBOSE);
+ Debug::log("purge_feed: deleted $rows_deleted articles.", Debug::LOG_VERBOSE);
} else {
- Debug::log("purge_feed: owner of $feed_id not found", Debug::$LOG_VERBOSE);
+ Debug::log("purge_feed: owner of $feed_id not found", Debug::LOG_VERBOSE);
}
return $rows_deleted;
}
- private static function _get_purge_interval(int $feed_id) {
+ private static function _get_purge_interval(int $feed_id): int {
$feed = ORM::for_table('ttrss_feeds')->find_one($feed_id);
if ($feed) {
@@ -2054,7 +2222,10 @@ class Feeds extends Handler_Protected {
}
}
- private static function _search_to_sql($search, $search_language, $owner_uid) {
+ /**
+ * @return array{0: string, 1: array<int, string>} [$search_query_part, $search_words]
+ */
+ private static function _search_to_sql(string $search, string $search_language, int $owner_uid): array {
$keywords = str_getcsv(preg_replace('/(-?\w+)\:"(\w+)/', '"${1}:${2}', trim($search)), ' ');
$query_keywords = array();
$search_words = array();
@@ -2147,7 +2318,7 @@ class Feeds extends Handler_Protected {
array_push($query_keywords, "($not
(ttrss_entries.id IN (
SELECT article_id FROM ttrss_user_labels2 WHERE
- label_id = ".$pdo->quote($label_id).")))");
+ label_id = $label_id)))");
} else {
array_push($query_keywords, "(false)");
}
@@ -2221,7 +2392,10 @@ class Feeds extends Handler_Protected {
return array($search_query_part, $search_words);
}
- static function _order_to_override_query($order) {
+ /**
+ * @return array{0: string, 1: bool}
+ */
+ static function _order_to_override_query(string $order): array {
$query = "";
$skip_first_id = false;
@@ -2231,7 +2405,9 @@ class Feeds extends Handler_Protected {
},
$order);
- if ($query) return [$query, $skip_first_id];
+ if (is_string($query) && $query !== "") {
+ return [$query, $skip_first_id];
+ }
switch ($order) {
case "title":
@@ -2249,7 +2425,7 @@ class Feeds extends Handler_Protected {
return [$query, $skip_first_id];
}
- private function _mark_timestamp($label) {
+ private function _mark_timestamp(string $label): void {
if (empty($_REQUEST['timestamps']))
return;
diff --git a/classes/handler.php b/classes/handler.php
index 09557c284..806c9cfbe 100644
--- a/classes/handler.php
+++ b/classes/handler.php
@@ -1,23 +1,37 @@
<?php
class Handler implements IHandler {
+ // TODO: class properties can be switched to PHP typing if/when the minimum PHP_VERSION is raised to 7.4.0+
+ /** @var PDO */
protected $pdo;
+
+ /** @var array<int|string, mixed> */
protected $args;
- function __construct($args) {
+ /**
+ * @param array<int|string, mixed> $args
+ */
+ function __construct(array $args) {
$this->pdo = Db::pdo();
$this->args = $args;
}
- function csrf_ignore($method) {
+ function csrf_ignore(string $method): bool {
return false;
}
- function before($method) {
+ function before(string $method): bool {
return true;
}
- function after() {
+ function after(): bool {
return true;
}
+ /**
+ * @param mixed $p
+ */
+ protected static function _param_to_bool($p): bool {
+ $p = clean($p);
+ return $p && ($p !== "f" && $p !== "false");
+ }
}
diff --git a/classes/handler/administrative.php b/classes/handler/administrative.php
index 52dfed8b7..533cb3630 100644
--- a/classes/handler/administrative.php
+++ b/classes/handler/administrative.php
@@ -1,8 +1,8 @@
<?php
class Handler_Administrative extends Handler_Protected {
- function before($method) {
+ function before(string $method): bool {
if (parent::before($method)) {
- if (($_SESSION["access_level"] ?? 0) >= 10) {
+ if (($_SESSION["access_level"] ?? 0) >= UserHelper::ACCESS_LEVEL_ADMIN) {
return true;
}
}
diff --git a/classes/handler/protected.php b/classes/handler/protected.php
index 8e9e5ca1d..a15fc0956 100644
--- a/classes/handler/protected.php
+++ b/classes/handler/protected.php
@@ -1,7 +1,7 @@
<?php
class Handler_Protected extends Handler {
- function before($method) {
+ function before(string $method): bool {
return parent::before($method) && !empty($_SESSION['uid']);
}
}
diff --git a/classes/handler/public.php b/classes/handler/public.php
index 4da32e90d..3fef4c2b9 100755
--- a/classes/handler/public.php
+++ b/classes/handler/public.php
@@ -1,10 +1,12 @@
<?php
class Handler_Public extends Handler {
- // $feed may be a tag
+ /**
+ * @param string $feed may be a feed ID or tag
+ */
private function generate_syndicated_feed(int $owner_uid, string $feed, bool $is_cat,
int $limit, int $offset, string $search, string $view_mode = "",
- string $format = 'atom', string $order = "", string $orig_guid = "", string $start_ts = "") {
+ string $format = 'atom', string $order = "", string $orig_guid = "", string $start_ts = ""): void {
$note_style = "background-color : #fff7d5;
border-width : 1px; ".
@@ -52,7 +54,13 @@ class Handler_Public extends Handler {
PluginHost::feed_to_pfeed_id((int)$feed));
if ($handler) {
+ // 'get_headlines' is implemented by the plugin.
+ // @phpstan-ignore-next-line
$qfh_ret = $handler->get_headlines(PluginHost::feed_to_pfeed_id((int)$feed), $params);
+ } else {
+ user_error("Failed to find handler for plugin feed ID: $feed", E_USER_ERROR);
+
+ return;
}
} else {
@@ -85,11 +93,13 @@ class Handler_Public extends Handler {
$line["content_preview"] = Sanitizer::sanitize(truncate_string(strip_tags($line["content"]), 100, '...'));
$line["tags"] = Article::_get_tags($line["id"], $owner_uid);
+ $max_excerpt_length = 250;
+
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_QUERY_HEADLINES,
function ($result) use (&$line) {
$line = $result;
},
- $line);
+ $line, $max_excerpt_length);
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_ARTICLE_EXPORT_FEED,
function ($result) use (&$line) {
@@ -105,7 +115,7 @@ class Handler_Public extends Handler {
$tpl->setVariable('ARTICLE_EXCERPT', $line["content_preview"], true);
$content = Sanitizer::sanitize($line["content"], false, $owner_uid,
- $feed_site_url, false, $line["id"]);
+ $feed_site_url, null, $line["id"]);
$content = DiskCache::rewrite_urls($content);
@@ -203,7 +213,7 @@ class Handler_Public extends Handler {
$article['link'] = $line['link'];
$article['title'] = $line['title'];
$article['excerpt'] = $line["content_preview"];
- $article['content'] = Sanitizer::sanitize($line["content"], false, $owner_uid, $feed_site_url, false, $line["id"]);
+ $article['content'] = Sanitizer::sanitize($line["content"], false, $owner_uid, $feed_site_url, null, $line["id"]);
$article['updated'] = date('c', strtotime($line["updated"]));
if (!empty($line['note'])) $article['note'] = $line['note'];
@@ -243,7 +253,7 @@ class Handler_Public extends Handler {
}
}
- function getUnread() {
+ function getUnread(): void {
$login = clean($_REQUEST["login"]);
$fresh = clean($_REQUEST["fresh"]) == "1";
@@ -261,7 +271,7 @@ class Handler_Public extends Handler {
}
}
- function getProfiles() {
+ function getProfiles(): void {
$login = clean($_REQUEST["login"]);
$rv = [];
@@ -284,20 +294,37 @@ class Handler_Public extends Handler {
print json_encode($rv);
}
- function logout() {
+ function logout(): void {
if (validate_csrf($_POST["csrf_token"])) {
+
+ $login = $_SESSION["name"];
+ $user_id = $_SESSION["uid"];
+
UserHelper::logout();
- header("Location: index.php");
+
+ $redirect_url = "";
+
+ PluginHost::getInstance()->run_hooks_callback(PluginHost::HOOK_POST_LOGOUT,
+ function ($result) use (&$redirect_url) {
+ if (!empty($result[0]))
+ $redirect_url = UrlHelper::validate($result[0]);
+ },
+ $login, $user_id);
+
+ if (!$redirect_url)
+ $redirect_url = get_self_url_prefix() . "/index.php";
+
+ header("Location: " . $redirect_url);
} else {
header("Content-Type: text/json");
print Errors::to_json(Errors::E_UNAUTHORIZED);
}
}
- function rss() {
+ function rss(): void {
$feed = clean($_REQUEST["id"]);
$key = clean($_REQUEST["key"]);
- $is_cat = clean($_REQUEST["is_cat"] ?? false);
+ $is_cat = self::_param_to_bool($_REQUEST["is_cat"] ?? false);
$limit = (int)clean($_REQUEST["limit"] ?? 0);
$offset = (int)clean($_REQUEST["offset"] ?? 0);
@@ -307,7 +334,7 @@ class Handler_Public extends Handler {
$start_ts = clean($_REQUEST["ts"] ?? "");
$format = clean($_REQUEST['format'] ?? "atom");
- $orig_guid = clean($_REQUEST["orig_guid"] ?? false);
+ $orig_guid = clean($_REQUEST["orig_guid"] ?? "");
if (Config::get(Config::SINGLE_USER_MODE)) {
UserHelper::authenticate("admin", null);
@@ -329,21 +356,21 @@ class Handler_Public extends Handler {
header('HTTP/1.1 403 Forbidden');
}
- function updateTask() {
+ function updateTask(): void {
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK);
}
- function housekeepingTask() {
+ function housekeepingTask(): void {
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING);
}
- function globalUpdateFeeds() {
+ function globalUpdateFeeds(): void {
RPC::updaterandomfeed_real();
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK);
}
- function login() {
+ function login(): void {
if (!Config::get(Config::SINGLE_USER_MODE)) {
$login = clean($_POST["login"]);
@@ -399,12 +426,12 @@ class Handler_Public extends Handler {
}
}
- function index() {
+ function index(): void {
header("Content-Type: text/plain");
print Errors::to_json(Errors::E_UNKNOWN_METHOD);
}
- function forgotpass() {
+ function forgotpass(): void {
startup_gettext();
session_start();
@@ -448,7 +475,7 @@ class Handler_Public extends Handler {
if ($login) {
$user = ORM::for_table('ttrss_users')
- ->select('id', 'resetpass_token')
+ ->select_many('id', 'resetpass_token')
->where_raw('LOWER(login) = LOWER(?)', [$login])
->find_one();
@@ -583,7 +610,7 @@ class Handler_Public extends Handler {
print "</html>";
}
- function dbupdate() {
+ function dbupdate(): void {
startup_gettext();
if (!Config::get(Config::SINGLE_USER_MODE) && ($_SESSION["access_level"] ?? 0) < 10) {
@@ -726,7 +753,7 @@ class Handler_Public extends Handler {
<?php
}
- function cached() {
+ function cached(): void {
list ($cache_dir, $filename) = explode("/", $_GET["file"], 2);
// we do not allow files with extensions at the moment
@@ -742,7 +769,7 @@ class Handler_Public extends Handler {
}
}
- private function _make_article_tag_uri($id, $timestamp) {
+ private function _make_article_tag_uri(int $id, string $timestamp): string {
$timestamp = date("Y-m-d", strtotime($timestamp));
@@ -752,7 +779,7 @@ class Handler_Public extends Handler {
// this should be used very carefully because this endpoint is exposed to unauthenticated users
// plugin data is not loaded because there's no user context and owner_uid/session may or may not be available
// in general, don't do anything user-related in here and do not modify $_SESSION
- public function pluginhandler() {
+ public function pluginhandler(): void {
$host = new PluginHost();
$plugin_name = basename(clean($_REQUEST["plugin"]));
@@ -784,7 +811,7 @@ class Handler_Public extends Handler {
}
}
- static function _render_login_form(string $return_to = "") {
+ static function _render_login_form(string $return_to = ""): void {
header('Cache-Control: public');
if ($return_to)
diff --git a/classes/iauthmodule.php b/classes/iauthmodule.php
index e714cc6ca..dbf8c5587 100644
--- a/classes/iauthmodule.php
+++ b/classes/iauthmodule.php
@@ -1,5 +1,18 @@
<?php
interface IAuthModule {
- function authenticate($login, $password); // + optional third parameter: $service
- function hook_auth_user(...$args); // compatibility wrapper due to how hooks work
+ /**
+ * @param string $login
+ * @param string $password
+ * @param string $service
+ * @return int|false user_id
+ */
+ function authenticate($login, $password, $service = '');
+
+ /** this is a pluginhost compatibility wrapper that invokes $this->authenticate(...$args) (Auth_Base)
+ * @param string $login
+ * @param string $password
+ * @param string $service
+ * @return int|false user_id
+ */
+ function hook_auth_user($login, $password, $service = '');
}
diff --git a/classes/ihandler.php b/classes/ihandler.php
index 01c9e3109..215143370 100644
--- a/classes/ihandler.php
+++ b/classes/ihandler.php
@@ -1,6 +1,6 @@
<?php
interface IHandler {
- function csrf_ignore($method);
- function before($method);
- function after();
+ function csrf_ignore(string $method): bool;
+ function before(string $method): bool;
+ function after(): bool;
}
diff --git a/classes/ivirtualfeed.php b/classes/ivirtualfeed.php
new file mode 100644
index 000000000..ccd0680fc
--- /dev/null
+++ b/classes/ivirtualfeed.php
@@ -0,0 +1,11 @@
+<?php
+interface IVirtualFeed {
+ function get_unread(int $feed_id) : int;
+ function get_total(int $feed_id) : int;
+ /**
+ * @param int $feed_id
+ * @param array<string,int|string|bool> $options
+ * @return array<int,int|string>
+ */
+ function get_headlines(int $feed_id, array $options) : array;
+}
diff --git a/classes/labels.php b/classes/labels.php
index 570f24f4f..026e6621f 100644
--- a/classes/labels.php
+++ b/classes/labels.php
@@ -1,15 +1,15 @@
<?php
class Labels
{
- static function label_to_feed_id($label) {
+ static function label_to_feed_id(int $label): int {
return LABEL_BASE_INDEX - 1 - abs($label);
}
- static function feed_to_label_id($feed) {
+ static function feed_to_label_id(int $feed): int {
return LABEL_BASE_INDEX - 1 + abs($feed);
}
- static function find_id($label, $owner_uid) {
+ static function find_id(string $label, int $owner_uid): int {
$pdo = Db::pdo();
$sth = $pdo->prepare("SELECT id FROM ttrss_labels2 WHERE LOWER(caption) = LOWER(?)
@@ -23,7 +23,7 @@ class Labels
}
}
- static function find_caption($label, $owner_uid) {
+ static function find_caption(int $label, int $owner_uid): string {
$pdo = Db::pdo();
$sth = $pdo->prepare("SELECT caption FROM ttrss_labels2 WHERE id = ?
@@ -37,18 +37,24 @@ class Labels
}
}
- static function get_as_hash($owner_uid) {
+ /**
+ * @return array<int, array<string, string>>
+ */
+ static function get_as_hash(int $owner_uid): array {
$rv = [];
$labels = Labels::get_all($owner_uid);
foreach ($labels as $i => $label) {
- $rv[$label["id"]] = $labels[$i];
+ $rv[(int)$label["id"]] = $labels[$i];
}
return $rv;
}
- static function get_all($owner_uid) {
+ /**
+ * @return array<int, array<string, string>> An array of label detail arrays
+ */
+ static function get_all(int $owner_uid) {
$rv = array();
$pdo = Db::pdo();
@@ -64,7 +70,13 @@ class Labels
return $rv;
}
- static function update_cache($owner_uid, $id, $labels = false, $force = false) {
+ /**
+ * @param array{'no-labels': 1}|array<int, array<int, array{0: int, 1: string, 2: string, 3: string}>> $labels
+ * [label_id, caption, fg_color, bg_color]
+ *
+ * @see Article::_get_labels()
+ */
+ static function update_cache(int $owner_uid, int $id, array $labels, bool $force = false): void {
$pdo = Db::pdo();
if ($force)
@@ -81,7 +93,7 @@ class Labels
}
- static function clear_cache($id) {
+ static function clear_cache(int $id): void {
$pdo = Db::pdo();
@@ -91,7 +103,7 @@ class Labels
}
- static function remove_article($id, $label, $owner_uid) {
+ static function remove_article(int $id, string $label, int $owner_uid): void {
$label_id = self::find_id($label, $owner_uid);
@@ -109,7 +121,7 @@ class Labels
self::clear_cache($id);
}
- static function add_article($id, $label, $owner_uid) {
+ static function add_article(int $id, string $label, int $owner_uid): void {
$label_id = self::find_id($label, $owner_uid);
@@ -138,7 +150,7 @@ class Labels
}
- static function remove($id, $owner_uid) {
+ static function remove(int $id, int $owner_uid): void {
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
$pdo = Db::pdo();
@@ -182,7 +194,10 @@ class Labels
if (!$tr_in_progress) $pdo->commit();
}
- static function create($caption, $fg_color = '', $bg_color = '', $owner_uid = false) {
+ /**
+ * @return false|int false if the check for an existing label failed, otherwise the number of rows inserted (1 on success)
+ */
+ static function create(string $caption, ?string $fg_color = '', ?string $bg_color = '', ?int $owner_uid = null) {
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
diff --git a/classes/logger.php b/classes/logger.php
index 42ab4452c..ef6173a42 100755
--- a/classes/logger.php
+++ b/classes/logger.php
@@ -1,6 +1,9 @@
<?php
class Logger {
+ /** @var Logger|null */
private static $instance;
+
+ /** @var Logger_Adapter|null */
private $adapter;
const LOG_DEST_SQL = "sql";
@@ -25,11 +28,11 @@ class Logger {
16384 => 'E_USER_DEPRECATED',
32767 => 'E_ALL'];
- static function log_error(int $errno, string $errstr, string $file, int $line, $context) {
+ static function log_error(int $errno, string $errstr, string $file, int $line, string $context): bool {
return self::get_instance()->_log_error($errno, $errstr, $file, $line, $context);
}
- private function _log_error($errno, $errstr, $file, $line, $context) {
+ private function _log_error(int $errno, string $errstr, string $file, int $line, string $context): bool {
//if ($errno == E_NOTICE) return false;
if ($this->adapter)
@@ -38,11 +41,11 @@ class Logger {
return false;
}
- static function log(int $errno, string $errstr, $context = "") {
+ static function log(int $errno, string $errstr, string $context = ""): bool {
return self::get_instance()->_log($errno, $errstr, $context);
}
- private function _log(int $errno, string $errstr, $context = "") {
+ private function _log(int $errno, string $errstr, string $context = ""): bool {
if ($this->adapter)
return $this->adapter->log_error($errno, $errstr, '', 0, $context);
else
@@ -65,7 +68,7 @@ class Logger {
$this->adapter = new Logger_Stdout();
break;
default:
- $this->adapter = false;
+ $this->adapter = null;
}
if ($this->adapter && !implements_interface($this->adapter, "Logger_Adapter"))
diff --git a/classes/logger/adapter.php b/classes/logger/adapter.php
index 79f641441..b0287b5fa 100644
--- a/classes/logger/adapter.php
+++ b/classes/logger/adapter.php
@@ -1,4 +1,4 @@
<?php
interface Logger_Adapter {
- function log_error(int $errno, string $errstr, string $file, int $line, $context);
-} \ No newline at end of file
+ function log_error(int $errno, string $errstr, string $file, int $line, string $context): bool;
+}
diff --git a/classes/logger/sql.php b/classes/logger/sql.php
index 784ebef31..5f3c67852 100755
--- a/classes/logger/sql.php
+++ b/classes/logger/sql.php
@@ -1,8 +1,6 @@
<?php
class Logger_SQL implements Logger_Adapter {
- private $pdo;
-
function __construct() {
$conn = get_class($this);
@@ -12,7 +10,7 @@ class Logger_SQL implements Logger_Adapter {
ORM::configure('return_result_sets', true, $conn);
}
- function log_error(int $errno, string $errstr, string $file, int $line, $context) {
+ function log_error(int $errno, string $errstr, string $file, int $line, string $context): bool {
if (Config::get_schema_version() > 117) {
diff --git a/classes/logger/stdout.php b/classes/logger/stdout.php
index e906853ce..b15649028 100644
--- a/classes/logger/stdout.php
+++ b/classes/logger/stdout.php
@@ -1,7 +1,7 @@
<?php
class Logger_Stdout implements Logger_Adapter {
- function log_error(int $errno, string $errstr, string $file, int $line, $context) {
+ function log_error(int $errno, string $errstr, string $file, int $line, string $context): bool {
switch ($errno) {
case E_ERROR:
@@ -25,6 +25,7 @@ class Logger_Stdout implements Logger_Adapter {
print "[EEE] $priority $errname ($file:$line) $errstr\n";
+ return true;
}
}
diff --git a/classes/logger/syslog.php b/classes/logger/syslog.php
index 3ad9858f3..568398ee0 100644
--- a/classes/logger/syslog.php
+++ b/classes/logger/syslog.php
@@ -1,7 +1,7 @@
<?php
class Logger_Syslog implements Logger_Adapter {
- function log_error(int $errno, string $errstr, string $file, int $line, $context) {
+ function log_error(int $errno, string $errstr, string $file, int $line, string $context): bool {
switch ($errno) {
case E_ERROR:
@@ -25,6 +25,7 @@ class Logger_Syslog implements Logger_Adapter {
syslog($priority, "[tt-rss] $errname ($file:$line) $errstr");
+ return true;
}
}
diff --git a/classes/mailer.php b/classes/mailer.php
index 8238904ee..60b1ce4fd 100644
--- a/classes/mailer.php
+++ b/classes/mailer.php
@@ -1,8 +1,14 @@
<?php
class Mailer {
+ // TODO: class properties can be switched to PHP typing if/when the minimum PHP_VERSION is raised to 7.4.0+
+ /** @var string */
private $last_error = "";
- function mail($params) {
+ /**
+ * @param array<string, mixed> $params
+ * @return bool|int bool if the default mail function handled the request, otherwise an int as described in Mailer#mail()
+ */
+ function mail(array $params) {
$to_name = $params["to_name"] ?? "";
$to_address = $params["to_address"];
@@ -25,6 +31,8 @@ class Mailer {
// 3. any other return value will allow cycling to the next handler and, eventually, to default mail() function
// 4. set error message if needed via passed Mailer instance function set_error()
+ $hooks_tried = 0;
+
foreach (PluginHost::getInstance()->get_hooks(PluginHost::HOOK_SEND_MAIL) as $p) {
$rc = $p->hook_send_mail($this, $params);
@@ -33,6 +41,8 @@ class Mailer {
if ($rc == -1)
return 0;
+
+ ++$hooks_tried;
}
$headers = [ "From: $from_combined", "Content-Type: text/plain; charset=UTF-8" ];
@@ -40,18 +50,18 @@ class Mailer {
$rc = mail($to_combined, $subject, $message, implode("\r\n", array_merge($headers, $additional_headers)));
if (!$rc) {
- $this->set_error(error_get_last()['message']);
+ $this->set_error(error_get_last()['message'] ?? T_sprintf("Unknown error while sending mail. Hooks tried: %d.", $hooks_tried));
}
return $rc;
}
- function set_error($message) {
+ function set_error(string $message): void {
$this->last_error = $message;
user_error("Error sending mail: $message", E_USER_WARNING);
}
- function error() {
+ function error(): string {
return $this->last_error;
}
}
diff --git a/classes/opml.php b/classes/opml.php
index 2cfc890fa..b9f5f2eab 100644
--- a/classes/opml.php
+++ b/classes/opml.php
@@ -1,12 +1,15 @@
<?php
class OPML extends Handler_Protected {
- function csrf_ignore($method) {
+ function csrf_ignore(string $method): bool {
$csrf_ignored = array("export", "import");
return array_search($method, $csrf_ignored) !== false;
}
+ /**
+ * @return bool|int|void false if writing the file failed, true if printing succeeded, int if bytes were written to a file, or void if $owner_uid is missing
+ */
function export() {
$output_name = sprintf("tt-rss_%s_%s.opml", $_SESSION["name"], date("Y-m-d"));
$include_settings = $_REQUEST["include_settings"] == "1";
@@ -17,7 +20,7 @@ class OPML extends Handler_Protected {
return $rc;
}
- function import() {
+ function import(): void {
$owner_uid = $_SESSION["uid"];
header('Content-Type: text/html; charset=utf-8');
@@ -42,15 +45,11 @@ class OPML extends Handler_Protected {
</form>";
print "</div></body></html>";
-
-
}
// Export
- private function opml_export_category($owner_uid, $cat_id, $hide_private_feeds = false, $include_settings = true) {
-
- $cat_id = (int) $cat_id;
+ private function opml_export_category(int $owner_uid, int $cat_id, bool $hide_private_feeds = false, bool $include_settings = true): string {
if ($hide_private_feeds)
$hide_qpart = "(private IS false AND auth_login = '' AND auth_pass = '')";
@@ -126,7 +125,10 @@ class OPML extends Handler_Protected {
return $out;
}
- function opml_export($filename, $owner_uid, $hide_private_feeds = false, $include_settings = true, $file_output = false) {
+ /**
+ * @return bool|int|void false if writing the file failed, true if printing succeeded, int if bytes were written to a file, or void if $owner_uid is missing
+ */
+ function opml_export(string $filename, int $owner_uid, bool $hide_private_feeds = false, bool $include_settings = true, bool $file_output = false) {
if (!$owner_uid) return;
if (!$file_output)
@@ -189,7 +191,7 @@ class OPML extends Handler_Protected {
WHERE owner_uid = ? ORDER BY id");
$sth->execute([$owner_uid]);
- while ($line = $sth->fetch()) {
+ while ($line = $sth->fetch(PDO::FETCH_ASSOC)) {
$line["rules"] = array();
$line["actions"] = array();
@@ -204,36 +206,36 @@ class OPML extends Handler_Protected {
$cat_filter = $tmp_line["cat_filter"];
if (!$tmp_line["match_on"]) {
- if ($cat_filter && $tmp_line["cat_id"] || $tmp_line["feed_id"]) {
- $tmp_line["feed"] = Feeds::_get_title(
- $cat_filter ? $tmp_line["cat_id"] : $tmp_line["feed_id"],
- $cat_filter);
- } else {
- $tmp_line["feed"] = "";
- }
- } else {
- $match = [];
- foreach (json_decode($tmp_line["match_on"], true) as $feed_id) {
-
- if (strpos($feed_id, "CAT:") === 0) {
- $feed_id = (int)substr($feed_id, 4);
- if ($feed_id) {
- array_push($match, [Feeds::_get_cat_title($feed_id), true, false]);
- } else {
- array_push($match, [0, true, true]);
- }
- } else {
- if ($feed_id) {
- array_push($match, [Feeds::_get_title((int)$feed_id), false, false]);
- } else {
- array_push($match, [0, false, true]);
- }
- }
- }
-
- $tmp_line["match"] = $match;
- unset($tmp_line["match_on"]);
- }
+ if ($cat_filter && $tmp_line["cat_id"] || $tmp_line["feed_id"]) {
+ $tmp_line["feed"] = Feeds::_get_title(
+ $cat_filter ? $tmp_line["cat_id"] : $tmp_line["feed_id"],
+ $cat_filter);
+ } else {
+ $tmp_line["feed"] = "";
+ }
+ } else {
+ $match = [];
+ foreach (json_decode($tmp_line["match_on"], true) as $feed_id) {
+
+ if (strpos($feed_id, "CAT:") === 0) {
+ $feed_id = (int)substr($feed_id, 4);
+ if ($feed_id) {
+ array_push($match, [Feeds::_get_cat_title($feed_id), true, false]);
+ } else {
+ array_push($match, [0, true, true]);
+ }
+ } else {
+ if ($feed_id) {
+ array_push($match, [Feeds::_get_title((int)$feed_id), false, false]);
+ } else {
+ array_push($match, [0, false, true]);
+ }
+ }
+ }
+
+ $tmp_line["match"] = $match;
+ unset($tmp_line["match_on"]);
+ }
unset($tmp_line["feed_id"]);
unset($tmp_line["cat_id"]);
@@ -292,13 +294,14 @@ class OPML extends Handler_Protected {
if ($file_output)
return file_put_contents($filename, $res) > 0;
- else
- print $res;
+
+ print $res;
+ return true;
}
// Import
- private function opml_import_feed($node, $cat_id, $owner_uid) {
+ private function opml_import_feed(DOMNode $node, int $cat_id, int $owner_uid, int $nest): void {
$attrs = $node->attributes;
$feed_title = mb_substr($attrs->getNamedItem('text')->nodeValue, 0, 250);
@@ -318,7 +321,7 @@ class OPML extends Handler_Protected {
if (!$sth->fetch()) {
#$this->opml_notice("[FEED] [$feed_title/$feed_url] dst_CAT=$cat_id");
- $this->opml_notice(T_sprintf("Adding feed: %s", $feed_title == '[Unknown]' ? $feed_url : $feed_title));
+ $this->opml_notice(T_sprintf("Adding feed: %s", $feed_title == '[Unknown]' ? $feed_url : $feed_title), $nest);
if (!$cat_id) $cat_id = null;
@@ -338,12 +341,12 @@ class OPML extends Handler_Protected {
$sth->execute([$feed_title, $feed_url, $owner_uid, $cat_id, $site_url, $order_id, $update_interval, $purge_interval]);
} else {
- $this->opml_notice(T_sprintf("Duplicate feed: %s", $feed_title == '[Unknown]' ? $feed_url : $feed_title));
+ $this->opml_notice(T_sprintf("Duplicate feed: %s", $feed_title == '[Unknown]' ? $feed_url : $feed_title), $nest);
}
}
}
- private function opml_import_label($node, $owner_uid) {
+ private function opml_import_label(DOMNode $node, int $owner_uid, int $nest): void {
$attrs = $node->attributes;
$label_name = $attrs->getNamedItem('label-name')->nodeValue;
@@ -351,16 +354,16 @@ class OPML extends Handler_Protected {
$fg_color = $attrs->getNamedItem('label-fg-color')->nodeValue;
$bg_color = $attrs->getNamedItem('label-bg-color')->nodeValue;
- if (!Labels::find_id($label_name, $_SESSION['uid'])) {
- $this->opml_notice(T_sprintf("Adding label %s", htmlspecialchars($label_name)));
+ if (!Labels::find_id($label_name, $owner_uid)) {
+ $this->opml_notice(T_sprintf("Adding label %s", htmlspecialchars($label_name)), $nest);
Labels::create($label_name, $fg_color, $bg_color, $owner_uid);
} else {
- $this->opml_notice(T_sprintf("Duplicate label: %s", htmlspecialchars($label_name)));
+ $this->opml_notice(T_sprintf("Duplicate label: %s", htmlspecialchars($label_name)), $nest);
}
}
}
- private function opml_import_preference($node) {
+ private function opml_import_preference(DOMNode $node, int $owner_uid, int $nest): void {
$attrs = $node->attributes;
$pref_name = $attrs->getNamedItem('pref-name')->nodeValue;
@@ -368,13 +371,13 @@ class OPML extends Handler_Protected {
$pref_value = $attrs->getNamedItem('value')->nodeValue;
$this->opml_notice(T_sprintf("Setting preference key %s to %s",
- $pref_name, $pref_value));
+ $pref_name, $pref_value), $nest);
- set_pref($pref_name, $pref_value);
+ set_pref($pref_name, $pref_value, $owner_uid);
}
}
- private function opml_import_filter($node) {
+ private function opml_import_filter(DOMNode $node, int $owner_uid, int $nest): void {
$attrs = $node->attributes;
$filter_type = $attrs->getNamedItem('filter-type')->nodeValue;
@@ -393,47 +396,58 @@ class OPML extends Handler_Protected {
$sth = $this->pdo->prepare("INSERT INTO ttrss_filters2 (match_any_rule,enabled,inverse,title,owner_uid)
VALUES (?, ?, ?, ?, ?)");
- $sth->execute([$match_any_rule, $enabled, $inverse, $title, $_SESSION['uid']]);
+ $sth->execute([$match_any_rule, $enabled, $inverse, $title, $owner_uid]);
$sth = $this->pdo->prepare("SELECT MAX(id) AS id FROM ttrss_filters2 WHERE
owner_uid = ?");
- $sth->execute([$_SESSION['uid']]);
+ $sth->execute([$owner_uid]);
$row = $sth->fetch();
$filter_id = $row['id'];
if ($filter_id) {
- $this->opml_notice(T_sprintf("Adding filter %s...", $title));
+ $this->opml_notice(T_sprintf("Adding filter %s...", $title), $nest);
+ //$this->opml_notice(json_encode($filter));
foreach ($filter["rules"] as $rule) {
$feed_id = null;
$cat_id = null;
- if ($rule["match"]) {
+ if ($rule["match"] ?? false) {
- $match_on = [];
+ $match_on = [];
- foreach ($rule["match"] as $match) {
- list ($name, $is_cat, $is_id) = $match;
+ foreach ($rule["match"] as $match) {
+ list ($name, $is_cat, $is_id) = $match;
- if ($is_id) {
- array_push($match_on, ($is_cat ? "CAT:" : "") . $name);
- } else {
+ if ($is_id) {
+ array_push($match_on, ($is_cat ? "CAT:" : "") . $name);
+ } else {
- if (!$is_cat) {
- $tsth = $this->pdo->prepare("SELECT id FROM ttrss_feeds
- WHERE title = ? AND owner_uid = ?");
+ $match_id = Feeds::_find_by_title($name, $is_cat, $owner_uid);
- $tsth->execute([$name, $_SESSION['uid']]);
+ if ($match_id) {
+ if ($is_cat) {
+ array_push($match_on, "CAT:$match_id");
+ } else {
+ array_push($match_on, $match_id);
+ }
+ }
+
+ /*if (!$is_cat) {
+ $tsth = $this->pdo->prepare("SELECT id FROM ttrss_feeds
+ WHERE title = ? AND owner_uid = ?");
+
+ $tsth->execute([$name, $_SESSION['uid']]);
- if ($row = $tsth->fetch()) {
- $match_id = $row['id'];
+ if ($row = $tsth->fetch()) {
+ $match_id = $row['id'];
array_push($match_on, $match_id);
- }
- } else {
- $tsth = $this->pdo->prepare("SELECT id FROM ttrss_feed_categories
- WHERE title = ? AND owner_uid = ?");
+ }
+ } else {
+ $tsth = $this->pdo->prepare("SELECT id FROM ttrss_feed_categories
+ WHERE title = ? AND owner_uid = ?");
$tsth->execute([$name, $_SESSION['uid']]);
if ($row = $tsth->fetch()) {
@@ -441,54 +455,64 @@ class OPML extends Handler_Protected {
array_push($match_on, "CAT:$match_id");
}
- }
- }
- }
+ } */
+ }
+ }
- $reg_exp = $rule["reg_exp"];
- $filter_type = (int)$rule["filter_type"];
- $inverse = bool_to_sql_bool($rule["inverse"]);
- $match_on = json_encode($match_on);
+ $reg_exp = $rule["reg_exp"];
+ $filter_type = (int)$rule["filter_type"];
+ $inverse = bool_to_sql_bool($rule["inverse"]);
+ $match_on = json_encode($match_on);
- $usth = $this->pdo->prepare("INSERT INTO ttrss_filters2_rules
+ $usth = $this->pdo->prepare("INSERT INTO ttrss_filters2_rules
(feed_id,cat_id,match_on,filter_id,filter_type,reg_exp,cat_filter,inverse)
- VALUES
- (NULL, NULL, ?, ?, ?, ?, false, ?)");
- $usth->execute([$match_on, $filter_id, $filter_type, $reg_exp, $inverse]);
+ VALUES
+ (NULL, NULL, ?, ?, ?, ?, false, ?)");
+ $usth->execute([$match_on, $filter_id, $filter_type, $reg_exp, $inverse]);
+
+ } else {
- } else {
+ $match_id = Feeds::_find_by_title($rule['feed'] ?? "", $rule['cat_filter'], $owner_uid);
- if (!$rule["cat_filter"]) {
- $tsth = $this->pdo->prepare("SELECT id FROM ttrss_feeds
- WHERE title = ? AND owner_uid = ?");
+ if ($match_id) {
+ if ($rule['cat_filter']) {
+ $cat_id = $match_id;
+ } else {
+ $feed_id = $match_id;
+ }
+ }
+
+ /*if (!$rule["cat_filter"]) {
+ $tsth = $this->pdo->prepare("SELECT id FROM ttrss_feeds
+ WHERE title = ? AND owner_uid = ?");
- $tsth->execute([$rule['feed'], $_SESSION['uid']]);
+ $tsth->execute([$rule['feed'], $_SESSION['uid']]);
- if ($row = $tsth->fetch()) {
- $feed_id = $row['id'];
- }
- } else {
+ if ($row = $tsth->fetch()) {
+ $feed_id = $row['id'];
+ }
+ } else {
$tsth = $this->pdo->prepare("SELECT id FROM ttrss_feed_categories
- WHERE title = ? AND owner_uid = ?");
+ WHERE title = ? AND owner_uid = ?");
$tsth->execute([$rule['feed'], $_SESSION['uid']]);
if ($row = $tsth->fetch()) {
$feed_id = $row['id'];
}
- }
+ } */
- $cat_filter = bool_to_sql_bool($rule["cat_filter"]);
- $reg_exp = $rule["reg_exp"];
- $filter_type = (int)$rule["filter_type"];
- $inverse = bool_to_sql_bool($rule["inverse"]);
+ $cat_filter = bool_to_sql_bool($rule["cat_filter"]);
+ $reg_exp = $rule["reg_exp"];
+ $filter_type = (int)$rule["filter_type"];
+ $inverse = bool_to_sql_bool($rule["inverse"]);
- $usth = $this->pdo->prepare("INSERT INTO ttrss_filters2_rules
+ $usth = $this->pdo->prepare("INSERT INTO ttrss_filters2_rules
(feed_id,cat_id,filter_id,filter_type,reg_exp,cat_filter,inverse)
- VALUES
- (?, ?, ?, ?, ?, ?, ?)");
- $usth->execute([$feed_id, $cat_id, $filter_id, $filter_type, $reg_exp, $cat_filter, $inverse]);
- }
+ VALUES
+ (?, ?, ?, ?, ?, ?, ?)");
+ $usth->execute([$feed_id, $cat_id, $filter_id, $filter_type, $reg_exp, $cat_filter, $inverse]);
+ }
}
foreach ($filter["actions"] as $action) {
@@ -507,8 +531,8 @@ class OPML extends Handler_Protected {
}
}
- private function opml_import_category($doc, $root_node, $owner_uid, $parent_id) {
- $default_cat_id = (int) $this->get_feed_category('Imported feeds', false);
+ private function opml_import_category(DOMDocument $doc, ?DOMNode $root_node, int $owner_uid, int $parent_id, int $nest): void {
+ $default_cat_id = (int) $this->get_feed_category('Imported feeds', $owner_uid, 0);
if ($root_node) {
$cat_title = mb_substr($root_node->attributes->getNamedItem('text')->nodeValue, 0, 250);
@@ -517,13 +541,13 @@ class OPML extends Handler_Protected {
$cat_title = mb_substr($root_node->attributes->getNamedItem('title')->nodeValue, 0, 250);
if (!in_array($cat_title, array("tt-rss-filters", "tt-rss-labels", "tt-rss-prefs"))) {
- $cat_id = $this->get_feed_category($cat_title, $parent_id);
+ $cat_id = $this->get_feed_category($cat_title, $owner_uid, $parent_id);
- if ($cat_id === false) {
+ if ($cat_id === 0) {
$order_id = (int) $root_node->attributes->getNamedItem('ttrssSortOrder')->nodeValue;
- Feeds::_add_cat($cat_title, $_SESSION['uid'], $parent_id ? $parent_id : null, (int)$order_id);
- $cat_id = $this->get_feed_category($cat_title, $parent_id);
+ Feeds::_add_cat($cat_title, $owner_uid, $parent_id ? $parent_id : null, (int)$order_id);
+ $cat_id = $this->get_feed_category($cat_title, $owner_uid, $parent_id);
}
} else {
@@ -540,21 +564,21 @@ class OPML extends Handler_Protected {
$cat_title = false;
}
- #$this->opml_notice("[CAT] $cat_title id: $cat_id P_id: $parent_id");
- $this->opml_notice(T_sprintf("Processing category: %s", $cat_title ? $cat_title : __("Uncategorized")));
+ //$this->opml_notice("[CAT] $cat_title id: $cat_id P_id: $parent_id");
+ $this->opml_notice(T_sprintf("Processing category: %s", $cat_title ? $cat_title : __("Uncategorized")), $nest);
foreach ($outlines as $node) {
if ($node->hasAttributes() && strtolower($node->tagName) == "outline") {
$attrs = $node->attributes;
- $node_cat_title = $attrs->getNamedItem('text')->nodeValue;
+ $node_cat_title = $attrs->getNamedItem('text') ? $attrs->getNamedItem('text')->nodeValue : false;
if (!$node_cat_title)
- $node_cat_title = $attrs->getNamedItem('title')->nodeValue;
+ $node_cat_title = $attrs->getNamedItem('title') ? $attrs->getNamedItem('title')->nodeValue : false;
- $node_feed_url = $attrs->getNamedItem('xmlUrl')->nodeValue;
+ $node_feed_url = $attrs->getNamedItem('xmlUrl') ? $attrs->getNamedItem('xmlUrl')->nodeValue : false;
if ($node_cat_title && !$node_feed_url) {
- $this->opml_import_category($doc, $node, $owner_uid, $cat_id);
+ $this->opml_import_category($doc, $node, $owner_uid, $cat_id, $nest+1);
} else {
if (!$cat_id) {
@@ -565,91 +589,115 @@ class OPML extends Handler_Protected {
switch ($cat_title) {
case "tt-rss-prefs":
- $this->opml_import_preference($node);
+ $this->opml_import_preference($node, $owner_uid, $nest+1);
break;
case "tt-rss-labels":
- $this->opml_import_label($node, $owner_uid);
+ $this->opml_import_label($node, $owner_uid, $nest+1);
break;
case "tt-rss-filters":
- $this->opml_import_filter($node);
+ $this->opml_import_filter($node, $owner_uid, $nest+1);
break;
default:
- $this->opml_import_feed($node, $dst_cat_id, $owner_uid);
+ $this->opml_import_feed($node, $dst_cat_id, $owner_uid, $nest+1);
}
}
}
}
}
- function opml_import($owner_uid) {
+ /** $filename is optional; assumes HTTP upload with $_FILES otherwise */
+ /**
+ * @return bool|void false on failure, true if successful, void if $owner_uid is missing
+ */
+ function opml_import(int $owner_uid, string $filename = "") {
if (!$owner_uid) return;
$doc = false;
- if ($_FILES['opml_file']['error'] != 0) {
- print_error(T_sprintf("Upload failed with error code %d",
- $_FILES['opml_file']['error']));
- return;
- }
+ if (!$filename) {
+ if ($_FILES['opml_file']['error'] != 0) {
+ print_error(T_sprintf("Upload failed with error code %d",
+ $_FILES['opml_file']['error']));
+ return false;
+ }
- if (is_uploaded_file($_FILES['opml_file']['tmp_name'])) {
- $tmp_file = (string)tempnam(Config::get(Config::CACHE_DIR) . '/upload', 'opml');
+ if (is_uploaded_file($_FILES['opml_file']['tmp_name'])) {
+ $tmp_file = (string)tempnam(Config::get(Config::CACHE_DIR) . '/upload', 'opml');
- $result = move_uploaded_file($_FILES['opml_file']['tmp_name'],
- $tmp_file);
+ $result = move_uploaded_file($_FILES['opml_file']['tmp_name'],
+ $tmp_file);
- if (!$result) {
- print_error(__("Unable to move uploaded file."));
- return;
+ if (!$result) {
+ print_error(__("Unable to move uploaded file."));
+ return false;
+ }
+ } else {
+ print_error(__('Error: please upload OPML file.'));
+ return false;
}
} else {
- print_error(__('Error: please upload OPML file.'));
- return;
+ $tmp_file = $filename;
+ }
+
+ if (!is_readable($tmp_file)) {
+ $this->opml_notice(T_sprintf("Error: file is not readable: %s", $filename));
+ return false;
}
$loaded = false;
- if (is_file($tmp_file)) {
- $doc = new DOMDocument();
+ $doc = new DOMDocument();
+
+ if (version_compare(PHP_VERSION, '8.0.0', '<')) {
libxml_disable_entity_loader(false);
- $loaded = $doc->load($tmp_file);
+ }
+
+ $loaded = $doc->load($tmp_file);
+
+ if (version_compare(PHP_VERSION, '8.0.0', '<')) {
libxml_disable_entity_loader(true);
- unlink($tmp_file);
- } else if (empty($doc)) {
- print_error(__('Error: unable to find moved OPML file.'));
- return;
}
+ // only remove temporary i.e. HTTP uploaded files
+ if (!$filename)
+ unlink($tmp_file);
+
if ($loaded) {
- $this->pdo->beginTransaction();
- $this->opml_import_category($doc, false, $owner_uid, false);
- $this->pdo->commit();
+ // we're using ORM while importing so we can't transaction-lock things anymore
+ //$this->pdo->beginTransaction();
+ $this->opml_import_category($doc, null, $owner_uid, 0, 0);
+ //$this->pdo->commit();
} else {
- print_error(__('Error while parsing document.'));
+ $this->opml_notice(__('Error while parsing document.'));
+ return false;
}
- }
- private function opml_notice($msg) {
- print "$msg<br/>";
+ return true;
}
- function get_feed_category($feed_cat, $parent_cat_id = false) {
+ private function opml_notice(string $msg, int $prefix_length = 0): void {
+ if (php_sapi_name() == "cli") {
+ Debug::log(str_repeat(" ", $prefix_length) . $msg);
+ } else {
+ // TODO: use better separator i.e. CSS-defined span of certain width or something
+ print str_repeat("&nbsp;&nbsp;&nbsp;", $prefix_length) . $msg . "<br/>";
+ }
+ }
- $parent_cat_id = (int) $parent_cat_id;
+ function get_feed_category(string $feed_cat, int $owner_uid, int $parent_cat_id) : int {
$sth = $this->pdo->prepare("SELECT id FROM ttrss_feed_categories
WHERE title = :title
AND (parent_cat = :parent OR (:parent = 0 AND parent_cat IS NULL))
AND owner_uid = :uid");
- $sth->execute([':title' => $feed_cat, ':parent' => $parent_cat_id, ':uid' => $_SESSION['uid']]);
+ $sth->execute([':title' => $feed_cat, ':parent' => $parent_cat_id, ':uid' => $owner_uid]);
if ($row = $sth->fetch()) {
return $row['id'];
} else {
- return false;
+ return 0;
}
}
-
}
diff --git a/classes/plugin.php b/classes/plugin.php
index ecafa7888..39af6a9a1 100644
--- a/classes/plugin.php
+++ b/classes/plugin.php
@@ -5,8 +5,14 @@ abstract class Plugin {
/** @var PDO $pdo */
protected $pdo;
- abstract function init(PluginHost $host);
+ /**
+ * @param PluginHost $host
+ *
+ * @return void
+ * */
+ abstract function init($host);
+ /** @return array<null|float|string|bool> */
abstract function about();
// return array(1.0, "plugin", "No description", "No author", false);
@@ -14,6 +20,7 @@ abstract class Plugin {
$this->pdo = Db::pdo();
}
+ /** @return array<string,bool> */
function flags() {
/* associative array, possible keys:
needs_curl = boolean
@@ -21,36 +28,65 @@ abstract class Plugin {
return array();
}
+ /**
+ * @param string $method
+ *
+ * @return bool */
function is_public_method($method) {
return false;
}
+ /**
+ * @param string $method
+ *
+ * @return bool */
function csrf_ignore($method) {
return false;
}
+ /** @return string */
function get_js() {
return "";
}
+ /** @return string */
+ function get_css() {
+ return "";
+ }
+
+ /** @return string */
function get_prefs_js() {
return "";
}
+ /** @return int */
function api_version() {
return Plugin::API_VERSION_COMPAT;
}
/* gettext-related helpers */
+ /**
+ * @param string $msgid
+ *
+ * @return string */
function __($msgid) {
+ /** @var Plugin $this -- this is a strictly template-related hack */
return _dgettext(PluginHost::object_to_domain($this), $msgid);
}
+ /**
+ * @param string $singular
+ * @param string $plural
+ * @param int $number
+ *
+ * @return string */
function _ngettext($singular, $plural, $number) {
+ /** @var Plugin $this -- this is a strictly template-related hack */
return _dngettext(PluginHost::object_to_domain($this), $singular, $plural, $number);
}
+ /** @return string */
function T_sprintf() {
$args = func_get_args();
$msgid = array_shift($args);
@@ -58,4 +94,602 @@ abstract class Plugin {
return vsprintf($this->__($msgid), $args);
}
+ /* plugin hook methods */
+
+ /* GLOBAL hooks are invoked in global context, only available to system plugins (loaded via .env for all users) */
+
+ /** Adds buttons for article (on the right) - e.g. mail, share, add note. Generated markup must be valid XML.
+ * @param array<string,mixed> $line
+ * @return string
+ * @see PluginHost::HOOK_ARTICLE_BUTTON
+ * @see Plugin::hook_article_left_button()
+ */
+ function hook_article_button($line) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Allows plugins to alter article data as gathered from feed XML, i.e. embed images, get full text content, etc.
+ * @param array<string,mixed> $article
+ * @return array<string,mixed>
+ * @see PluginHost::HOOK_ARTICLE_FILTER
+ */
+ function hook_article_filter($article) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /** Allow adding new UI elements (e.g. accordion panes) to (top) tab contents in Preferences
+ * @param string $tab
+ * @return void
+ * @see PluginHost::HOOK_PREFS_TAB
+ */
+ function hook_prefs_tab($tab) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ }
+
+ /** Allow adding new content to various sections of preferences UI (i.e. OPML import/export pane)
+ * @param string $section
+ * @return void
+ * @see PluginHost::HOOK_PREFS_TAB_SECTION
+ */
+ function hook_prefs_tab_section($section) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ }
+
+ /** Allows adding new (top) tabs in preferences UI
+ * @return void
+ * @see PluginHost::HOOK_PREFS_TABS
+ */
+ function hook_prefs_tabs() {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ }
+
+ /** Invoked when feed XML is processed by FeedParser class
+ * @param FeedParser $parser
+ * @param int $feed_id
+ * @return void
+ * @see PluginHost::HOOK_FEED_PARSED
+ */
+ function hook_feed_parsed($parser, $feed_id) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ }
+
+ /** GLOBAL: Invoked when a feed update task finishes
+ * @param array<string,string> $cli_options
+ * @return void
+ * @see PluginHost::HOOK_UPDATE_TASK
+ */
+ function hook_update_task($cli_options) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ }
+
+ /** This is a pluginhost compatibility wrapper that invokes $this->authenticate(...$args) (Auth_Base)
+ * @param string $login
+ * @param string $password
+ * @param string $service
+ * @return int|false user_id
+ * @see PluginHost::HOOK_AUTH_USER
+ */
+ function hook_auth_user($login, $password, $service = '') {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ return false;
+ }
+
+ /** IAuthModule only
+ * @param string $login
+ * @param string $password
+ * @param string $service
+ * @return int|false user_id
+ */
+ function authenticate($login, $password, $service = '') {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ return false;
+ }
+
+ /** Allows plugins to modify global hotkey map (hotkey sequence -> action)
+ * @param array<string, string> $hotkeys
+ * @return array<string, string>
+ * @see PluginHost::HOOK_HOTKEY_MAP
+ * @see Plugin::hook_hotkey_info()
+ */
+ function hook_hotkey_map($hotkeys) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /** Invoked when article is rendered by backend (before it gets passed to frontent JS code) - three panel mode
+ * @param array<string, mixed> $article
+ * @return array<string, mixed>
+ * @see PluginHost::HOOK_RENDER_ARTICLE
+ */
+ function hook_render_article($article) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /** Invoked when article is rendered by backend (before it gets passed to frontent JS code) - combined mode
+ * @param array<string, mixed> $article
+ * @return array<string, mixed>
+ * @see PluginHost::HOOK_RENDER_ARTICLE_CDM
+ */
+ function hook_render_article_cdm($article) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /** Invoked when raw feed XML data has been successfully downloaded (but not parsed yet)
+ * @param string $feed_data
+ * @param string $fetch_url
+ * @param int $owner_uid
+ * @param int $feed
+ * @return string
+ * @see PluginHost::HOOK_FEED_FETCHED
+ */
+ function hook_feed_fetched($feed_data, $fetch_url, $owner_uid, $feed) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Invoked on article content when it is sanitized (i.e. potentially harmful tags removed)
+ * @param DOMDocument $doc
+ * @param string $site_url
+ * @param array<string> $allowed_elements
+ * @param array<string> $disallowed_attributes
+ * @param int $article_id
+ * @return DOMDocument|array<int,DOMDocument|array<string>>
+ * @see PluginHost::HOOK_SANITIZE
+ */
+ function hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes, $article_id) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return $doc;
+ }
+
+ /** Invoked when article is rendered by backend (before it gets passed to frontent JS code) - exclusive to API clients
+ * @param array{'article': array<string,mixed>|null, 'headline': array<string,mixed>|null} $params
+ * @return array<string, string>
+ * @see PluginHost::HOOK_RENDER_ARTICLE_API
+ */
+ function hook_render_article_api($params) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /** Allows adding new UI elements to tt-rss main toolbar (to the right, before Actions... dropdown)
+ * @return string
+ * @see PluginHost::HOOK_TOOLBAR_BUTTON
+ */
+ function hook_toolbar_button() {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Allows adding new items to tt-rss main Actions... dropdown menu
+ * @return string
+ * @see PluginHost::HOOK_ACTION_ITEM
+ */
+ function hook_action_item() {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Allows adding new UI elements to the toolbar area related to currently loaded feed headlines
+ * @param int $feed_id
+ * @param bool $is_cat
+ * @return string
+ * @see PluginHost::HOOK_HEADLINE_TOOLBAR_BUTTON
+ */
+ function hook_headline_toolbar_button($feed_id, $is_cat) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Allows adding new hotkey action names and descriptions
+ * @param array<string, array<string, string>> $hotkeys
+ * @return array<string, array<string, string>>
+ * @see PluginHost::HOOK_HOTKEY_INFO
+ * @see Plugin::hook_hotkey_map()
+ */
+ function hook_hotkey_info($hotkeys) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /** Adds per-article buttons on the left side. Generated markup must be valid XML.
+ * @param array<string,mixed> $row
+ * @return string
+ * @see PluginHost::HOOK_ARTICLE_LEFT_BUTTON
+ * @see Plugin::hook_article_button()
+ */
+ function hook_article_left_button($row) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Allows adding new UI elements to the "Plugins" tab of the feed editor UI
+ * @param int $feed_id
+ * @return void
+ * @see PluginHost::HOOK_PREFS_EDIT_FEED
+ */
+ function hook_prefs_edit_feed($feed_id) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ }
+
+ /** Invoked when data is saved in the feed editor
+ * @param int $feed_id
+ * @return void
+ * @see PluginHost::HOOK_PREFS_SAVE_FEED
+ */
+ function hook_prefs_save_feed($feed_id) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ }
+
+ /** Allows overriding built-in fetching mechanism for feeds, substituting received data if necessary
+ * (i.e. origin site doesn't actually provide any RSS feeds), or XML is invalid
+ * @param string $feed_data
+ * @param string $fetch_url
+ * @param int $owner_uid
+ * @param int $feed
+ * @param int $last_article_timestamp
+ * @param string $auth_login
+ * @param string $auth_pass
+ * @return string (possibly mangled feed data)
+ * @see PluginHost::HOOK_FETCH_FEED
+ */
+ function hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed, $last_article_timestamp, $auth_login, $auth_pass) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Invoked when headlines data ($row) has been retrieved from the database
+ * @param array<string,mixed> $row
+ * @param int $excerpt_length
+ * @return array<string,mixed>
+ * @see PluginHost::HOOK_QUERY_HEADLINES
+ */
+ function hook_query_headlines($row, $excerpt_length) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /** This is run periodically by the update daemon when idle (available both to user and system plugins)
+ * @return void
+ * @see PluginHost::HOOK_HOUSE_KEEPING */
+ function hook_house_keeping() {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ }
+
+ /** Allows overriding built-in article search
+ * @param string $query
+ * @return array<int, string|array<string>> - list(SQL search query, highlight keywords)
+ * @see PluginHost::HOOK_SEARCH
+ */
+ function hook_search($query) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /** Invoked when enclosures are rendered to HTML (when article itself is rendered)
+ * @param string $enclosures_formatted
+ * @param array<int, array<string, mixed>> $enclosures
+ * @param int $article_id
+ * @param bool $always_display_enclosures
+ * @param string $article_content
+ * @param bool $hide_images
+ * @return string|array<string,array<int, array<string, mixed>>> ($enclosures_formatted, $enclosures)
+ * @see PluginHost::HOOK_FORMAT_ENCLOSURES
+ */
+ function hook_format_enclosures($enclosures_formatted, $enclosures, $article_id, $always_display_enclosures, $article_content, $hide_images) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Invoked during feed subscription (after data has been fetched)
+ * @param string $contents
+ * @param string $url
+ * @param string $auth_login
+ * @param string $auth_pass
+ * @return string (possibly mangled feed data)
+ * @see PluginHost::HOOK_SUBSCRIBE_FEED
+ */
+ function hook_subscribe_feed($contents, $url, $auth_login, $auth_pass) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /**
+ * @param int $feed
+ * @param bool $is_cat
+ * @param array<string,mixed> $qfh_ret (headlines object)
+ * @return string
+ * @see PluginHost::HOOK_HEADLINES_BEFORE
+ */
+ function hook_headlines_before($feed, $is_cat, $qfh_ret) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /**
+ * @param array<string,mixed> $entry
+ * @param int $article_id
+ * @param array<string,mixed> $rv
+ * @return string
+ * @see PluginHost::HOOK_RENDER_ENCLOSURE
+ */
+ function hook_render_enclosure($entry, $article_id, $rv) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /**
+ * @param array<string,mixed> $article
+ * @param string $action
+ * @return array<string,mixed> ($article)
+ * @see PluginHost::HOOK_ARTICLE_FILTER_ACTION
+ */
+ function hook_article_filter_action($article, $action) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /**
+ * @param array<string,mixed> $line
+ * @param int $feed
+ * @param bool $is_cat
+ * @param int $owner_uid
+ * @return array<string,mixed> ($line)
+ * @see PluginHost::HOOK_ARTICLE_EXPORT_FEED
+ */
+ function hook_article_export_feed($line, $feed, $is_cat, $owner_uid) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /** Allows adding custom buttons to tt-rss main toolbar (left side)
+ * @return void
+ * @see PluginHost::HOOK_MAIN_TOOLBAR_BUTTON
+ */
+ function hook_main_toolbar_button() {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ }
+
+ /** Invoked for every enclosure entry as article is being rendered
+ * @param array<string,string> $entry
+ * @param int $id
+ * @param array{'formatted': string, 'entries': array<int, array<string, mixed>>} $rv
+ * @return array<string,string> ($entry)
+ * @see PluginHost::HOOK_ENCLOSURE_ENTRY
+ */
+ function hook_enclosure_entry($entry, $id, $rv) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return [];
+ }
+
+ /** Share plugins run this when article is being rendered as HTML for sharing
+ * @param string $html
+ * @param array<string,mixed> $row
+ * @return string ($html)
+ * @see PluginHost::HOOK_FORMAT_ARTICLE
+ */
+ function hook_format_article($html, $row) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Invoked when basic feed information (title, site_url) is being collected, useful to override default if feed doesn't provide anything (or feed itself is synthesized)
+ * @param array{"title": string, "site_url": string} $basic_info
+ * @param string $fetch_url
+ * @param int $owner_uid
+ * @param int $feed_id
+ * @param string $auth_login
+ * @param string $auth_pass
+ * @return array{"title": string, "site_url": string}
+ * @see PluginHost::HOOK_FEED_BASIC_INFO
+ */
+ function hook_feed_basic_info($basic_info, $fetch_url, $owner_uid, $feed_id, $auth_login, $auth_pass) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return $basic_info;
+ }
+
+ /** Invoked when file (e.g. cache entry, static data) is being sent to client, may override default mechanism
+ * using faster httpd-specific implementation (see nginx_xaccel)
+ * @param string $filename
+ * @return bool
+ * @see PluginHost::HOOK_SEND_LOCAL_FILE
+ */
+ function hook_send_local_file($filename) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return false;
+ }
+
+ /** Invoked when user tries to unsubscribe from a feed, returning true would prevent any further default actions
+ * @param int $feed_id
+ * @param int $owner_uid
+ * @return bool
+ * @see PluginHost::HOOK_UNSUBSCRIBE_FEED
+ */
+ function hook_unsubscribe_feed($feed_id, $owner_uid) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return false;
+ }
+
+ /** Invoked when mail is being sent (if no hooks are registered, tt-rss uses PHP mail() as a fallback)
+ * @param Mailer $mailer
+ * @param array<string,mixed> $params
+ * @return int
+ * @see PluginHost::HOOK_SEND_MAIL
+ */
+ function hook_send_mail($mailer, $params) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return -1;
+ }
+
+ /** Invoked when filter is triggered on an article, may be used to implement logging for filters
+ * NOTE: $article_filters should be renamed $filter_actions because that's what this is
+ * @param int $feed_id
+ * @param int $owner_uid
+ * @param array<string,mixed> $article
+ * @param array<string,mixed> $matched_filters
+ * @param array<string,string|bool|int> $matched_rules
+ * @param array<string,string> $article_filters
+ * @return void
+ * @see PluginHost::HOOK_FILTER_TRIGGERED
+ */
+ function hook_filter_triggered($feed_id, $owner_uid, $article, $matched_filters, $matched_rules, $article_filters) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+ }
+
+ /** Plugins may provide this to allow getting full article text (af_readbility implements this)
+ * @param string $url
+ * @return string|false
+ * @see PluginHost::HOOK_GET_FULL_TEXT
+ */
+ function hook_get_full_text($url) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Invoked when article flavor image is being determined, allows overriding default selection logic
+ * @param array<string,string> $enclosures
+ * @param string $content
+ * @param string $site_url
+ * @param array<string,mixed> $article
+ * @return string|array<int,string>
+ * @see PluginHost::HOOK_ARTICLE_IMAGE
+ */
+ function hook_article_image($enclosures, $content, $site_url, $article) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Allows adding arbitrary elements before feed tree
+ * @return string HTML
+ * @see PluginHost::HOOK_FEED_TREE
+ * */
+ function hook_feed_tree() {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Invoked for every iframe to determine if it is allowed to be displayed
+ * @param string $url
+ * @return bool
+ * @see PluginHost::HOOK_IFRAME_WHITELISTED
+ */
+ function hook_iframe_whitelisted($url) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return false;
+ }
+
+ /**
+ * @param object $enclosure
+ * @param int $feed
+ * @return object ($enclosure)
+ * @see PluginHost::HOOK_ENCLOSURE_IMPORTED
+ */
+ function hook_enclosure_imported($enclosure, $feed) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return $enclosure;
+ }
+
+ /** Allows adding custom elements to headline sort dropdown (name -> caption)
+ * @return array<string,string>
+ * @see PluginHost::HOOK_HEADLINES_CUSTOM_SORT_MAP
+ */
+ function hook_headlines_custom_sort_map() {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return ["" => ""];
+ }
+
+ /** Allows overriding headline sorting (or provide custom sort methods)
+ * @param string $order
+ * @return array<int, string|bool> -- (query, skip_first_id)
+ * @see PluginHost::HOOK_HEADLINES_CUSTOM_SORT_OVERRIDE
+ */
+ function hook_headlines_custom_sort_override($order) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return ["", false];
+ }
+
+ /** Allows adding custom elements to headlines Select... dropdown
+ * @deprecated removed, see Plugin::hook_headline_toolbar_select_menu_item2()
+ * @param int $feed_id
+ * @param int $is_cat
+ * @return string
+ * @see PluginHost::HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM
+ */
+ function hook_headline_toolbar_select_menu_item($feed_id, $is_cat) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Allows adding custom elements to headlines Select... select dropdown (<option> format)
+ * @param int $feed_id
+ * @param int $is_cat
+ * @return string
+ * @see PluginHost::HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM2
+ */
+ function hook_headline_toolbar_select_menu_item2($feed_id, $is_cat) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return "";
+ }
+
+ /** Invoked when user tries to subscribe to feed, may override information (i.e. feed URL) used afterwards
+ * @param string $url
+ * @param string $auth_login
+ * @param string $auth_pass
+ * @return bool
+ * @see PluginHost::HOOK_PRE_SUBSCRIBE
+ */
+ function hook_pre_subscribe(&$url, $auth_login, $auth_pass) {
+ user_error("Dummy method invoked.", E_USER_ERROR);
+
+ return false;
+ }
+
+ /** Invoked after user logout, may override built-in behavior (redirect back to login page)
+ * @param string $login
+ * @param int $user_id
+ * @return array<mixed> - [0] - if set, url to redirect to
+ */
+ function hook_post_logout($login, $user_id) {
+ return [""];
+ }
}
diff --git a/classes/pluginhandler.php b/classes/pluginhandler.php
index 75b823822..5c73920e5 100644
--- a/classes/pluginhandler.php
+++ b/classes/pluginhandler.php
@@ -1,10 +1,10 @@
<?php
class PluginHandler extends Handler_Protected {
- function csrf_ignore($method) {
+ function csrf_ignore(string $method): bool {
return true;
}
- function catchall($method) {
+ function catchall(string $method): void {
$plugin_name = clean($_REQUEST["plugin"]);
$plugin = PluginHost::getInstance()->get_plugin($plugin_name);
$csrf_token = ($_POST["csrf_token"] ?? "");
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index ee4107ae7..952d4df77 100755
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -1,90 +1,219 @@
<?php
class PluginHost {
- private $pdo;
- /* separate handle for plugin data so transaction while saving wouldn't clash with possible main
- tt-rss code transactions; only initialized when first needed */
- private $pdo_data;
- private $hooks = array();
- private $plugins = array();
- private $handlers = array();
- private $commands = array();
- private $storage = array();
- private $feeds = array();
- private $api_methods = array();
- private $plugin_actions = array();
- private $owner_uid;
- private $last_registered;
- private $data_loaded;
- private static $instance;
+ // TODO: class properties can be switched to PHP typing if/when the minimum PHP_VERSION is raised to 7.4.0+
+ /** @var PDO|null */
+ private $pdo = null;
+
+ /**
+ * separate handle for plugin data so transaction while saving wouldn't clash with possible main
+ * tt-rss code transactions; only initialized when first needed
+ *
+ * @var PDO|null
+ */
+ private $pdo_data = null;
+
+ /** @var array<string, array<int, array<int, Plugin>>> hook types -> priority levels -> Plugins */
+ private $hooks = [];
+
+ /** @var array<string, Plugin> */
+ private $plugins = [];
+
+ /** @var array<string, array<string, Plugin>> handler type -> method type -> Plugin */
+ private $handlers = [];
+
+ /** @var array<string, array{'description': string, 'suffix': string, 'arghelp': string, 'class': Plugin}> command type -> details array */
+ private $commands = [];
+
+ /** @var array<string, array<string, mixed>> plugin name -> (potential profile array) -> key -> value */
+ private $storage = [];
+
+ /** @var array<int, array<int, array{'id': int, 'title': string, 'sender': Plugin, 'icon': string}>> */
+ private $feeds = [];
+
+ /** @var array<string, Plugin> API method name, Plugin sender */
+ private $api_methods = [];
+
+ /** @var array<string, array<int, array{'action': string, 'description': string, 'sender': Plugin}>> */
+ private $plugin_actions = [];
+
+ /** @var int|null */
+ private $owner_uid = null;
+
+ /** @var bool */
+ private $data_loaded = false;
+
+ /** @var PluginHost|null */
+ private static $instance = null;
const API_VERSION = 2;
const PUBLIC_METHOD_DELIMITER = "--";
- // Hooks marked with *1 are run in global context and available
- // to plugins loaded in config.php only
-
- const HOOK_ARTICLE_BUTTON = "hook_article_button"; // hook_article_button($line)
- const HOOK_ARTICLE_FILTER = "hook_article_filter"; // hook_article_filter($article)
- const HOOK_PREFS_TAB = "hook_prefs_tab"; // hook_prefs_tab($tab)
- const HOOK_PREFS_TAB_SECTION = "hook_prefs_tab_section"; // hook_prefs_tab_section($section)
- const HOOK_PREFS_TABS = "hook_prefs_tabs"; // hook_prefs_tabs()
- const HOOK_FEED_PARSED = "hook_feed_parsed"; // hook_feed_parsed($parser, $feed_id)
- const HOOK_UPDATE_TASK = "hook_update_task"; //*1 // GLOBAL: hook_update_task($cli_options)
- const HOOK_AUTH_USER = "hook_auth_user"; // hook_auth_user($login, $password, $service) (byref)
- const HOOK_HOTKEY_MAP = "hook_hotkey_map"; // hook_hotkey_map($hotkeys) (byref)
- const HOOK_RENDER_ARTICLE = "hook_render_article"; // hook_render_article($article)
- const HOOK_RENDER_ARTICLE_CDM = "hook_render_article_cdm"; // hook_render_article_cdm($article)
- const HOOK_FEED_FETCHED = "hook_feed_fetched"; // hook_feed_fetched($feed_data, $fetch_url, $owner_uid, $feed) (byref)
- const HOOK_SANITIZE = "hook_sanitize"; // hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes, $article_id) (byref)
- const HOOK_RENDER_ARTICLE_API = "hook_render_article_api"; // hook_render_article_api($params)
- const HOOK_TOOLBAR_BUTTON = "hook_toolbar_button"; // hook_toolbar_button()
- const HOOK_ACTION_ITEM = "hook_action_item"; // hook_action_item()
- const HOOK_HEADLINE_TOOLBAR_BUTTON = "hook_headline_toolbar_button"; // hook_headline_toolbar_button($feed_id, $is_cat)
- const HOOK_HOTKEY_INFO = "hook_hotkey_info"; // hook_hotkey_info($hotkeys) (byref)
- const HOOK_ARTICLE_LEFT_BUTTON = "hook_article_left_button"; // hook_article_left_button($row)
- const HOOK_PREFS_EDIT_FEED = "hook_prefs_edit_feed"; // hook_prefs_edit_feed($feed_id)
- const HOOK_PREFS_SAVE_FEED = "hook_prefs_save_feed"; // hook_prefs_save_feed($feed_id)
- const HOOK_FETCH_FEED = "hook_fetch_feed"; // hook_fetch_feed($feed_data, $fetch_url, $owner_uid, $feed, $last_article_timestamp, $auth_login, $auth_pass) (byref)
- const HOOK_QUERY_HEADLINES = "hook_query_headlines"; // hook_query_headlines($row) (byref)
- const HOOK_HOUSE_KEEPING = "hook_house_keeping"; //*1 // GLOBAL: hook_house_keeping()
- const HOOK_SEARCH = "hook_search"; // hook_search($query)
- const HOOK_FORMAT_ENCLOSURES = "hook_format_enclosures"; // hook__format_enclosures($rv, $result, $id, $always_display_enclosures, $article_content, $hide_images) (byref)
- const HOOK_SUBSCRIBE_FEED = "hook_subscribe_feed"; // hook_subscribe_feed($contents, $url, $auth_login, $auth_pass) (byref)
- const HOOK_HEADLINES_BEFORE = "hook_headlines_before"; // hook_headlines_before($feed, $is_cat, $qfh_ret)
- const HOOK_RENDER_ENCLOSURE = "hook_render_enclosure"; // hook_render_enclosure($entry, $id, $rv)
- const HOOK_ARTICLE_FILTER_ACTION = "hook_article_filter_action"; // hook_article_filter_action($article, $action)
- const HOOK_ARTICLE_EXPORT_FEED = "hook_article_export_feed"; // hook_article_export_feed($line, $feed, $is_cat, $owner_uid) (byref)
- const HOOK_MAIN_TOOLBAR_BUTTON = "hook_main_toolbar_button"; // hook_main_toolbar_button()
- const HOOK_ENCLOSURE_ENTRY = "hook_enclosure_entry"; // hook_enclosure_entry($entry, $id, $rv) (byref)
- const HOOK_FORMAT_ARTICLE = "hook_format_article"; // hook_format_article($html, $row)
- const HOOK_FORMAT_ARTICLE_CDM = "hook_format_article_cdm"; /* RIP */
- const HOOK_FEED_BASIC_INFO = "hook_feed_basic_info"; // hook_feed_basic_info($basic_info, $fetch_url, $owner_uid, $feed_id, $auth_login, $auth_pass) (byref)
- const HOOK_SEND_LOCAL_FILE = "hook_send_local_file"; // hook_send_local_file($filename)
- const HOOK_UNSUBSCRIBE_FEED = "hook_unsubscribe_feed"; // hook_unsubscribe_feed($feed_id, $owner_uid)
- const HOOK_SEND_MAIL = "hook_send_mail"; // hook_send_mail(Mailer $mailer, $params)
- const HOOK_FILTER_TRIGGERED = "hook_filter_triggered"; // hook_filter_triggered($feed_id, $owner_uid, $article, $matched_filters, $matched_rules, $article_filters)
- const HOOK_GET_FULL_TEXT = "hook_get_full_text"; // hook_get_full_text($url)
- const HOOK_ARTICLE_IMAGE = "hook_article_image"; // hook_article_image($enclosures, $content, $site_url)
- const HOOK_FEED_TREE = "hook_feed_tree"; // hook_feed_tree()
- const HOOK_IFRAME_WHITELISTED = "hook_iframe_whitelisted"; // hook_iframe_whitelisted($url)
- const HOOK_ENCLOSURE_IMPORTED = "hook_enclosure_imported"; // hook_enclosure_imported($enclosure, $feed)
- const HOOK_HEADLINES_CUSTOM_SORT_MAP = "hook_headlines_custom_sort_map"; // hook_headlines_custom_sort_map()
+ /** @see Plugin::hook_article_button() */
+ const HOOK_ARTICLE_BUTTON = "hook_article_button";
+
+ /** @see Plugin::hook_article_filter() */
+ const HOOK_ARTICLE_FILTER = "hook_article_filter";
+
+ /** @see Plugin::hook_prefs_tab() */
+ const HOOK_PREFS_TAB = "hook_prefs_tab";
+
+ /** @see Plugin::hook_prefs_tab_section() */
+ const HOOK_PREFS_TAB_SECTION = "hook_prefs_tab_section";
+
+ /** @see Plugin::hook_prefs_tabs() */
+ const HOOK_PREFS_TABS = "hook_prefs_tabs";
+
+ /** @see Plugin::hook_feed_parsed() */
+ const HOOK_FEED_PARSED = "hook_feed_parsed";
+
+ /** @see Plugin::hook_update_task() */
+ const HOOK_UPDATE_TASK = "hook_update_task"; //*1
+
+ /** @see Plugin::hook_auth_user() */
+ const HOOK_AUTH_USER = "hook_auth_user";
+
+ /** @see Plugin::hook_hotkey_map() */
+ const HOOK_HOTKEY_MAP = "hook_hotkey_map";
+
+ /** @see Plugin::hook_render_article() */
+ const HOOK_RENDER_ARTICLE = "hook_render_article";
+
+ /** @see Plugin::hook_render_article_cdm() */
+ const HOOK_RENDER_ARTICLE_CDM = "hook_render_article_cdm";
+
+ /** @see Plugin::hook_feed_fetched() */
+ const HOOK_FEED_FETCHED = "hook_feed_fetched";
+
+ /** @see Plugin::hook_sanitize() */
+ const HOOK_SANITIZE = "hook_sanitize";
+
+ /** @see Plugin::hook_render_article_api() */
+ const HOOK_RENDER_ARTICLE_API = "hook_render_article_api";
+
+ /** @see Plugin::hook_toolbar_button() */
+ const HOOK_TOOLBAR_BUTTON = "hook_toolbar_button";
+
+ /** @see Plugin::hook_action_item() */
+ const HOOK_ACTION_ITEM = "hook_action_item";
+
+ /** @see Plugin::hook_headline_toolbar_button() */
+ const HOOK_HEADLINE_TOOLBAR_BUTTON = "hook_headline_toolbar_button";
+
+ /** @see Plugin::hook_hotkey_info() */
+ const HOOK_HOTKEY_INFO = "hook_hotkey_info";
+
+ /** @see Plugin::hook_article_left_button() */
+ const HOOK_ARTICLE_LEFT_BUTTON = "hook_article_left_button";
+
+ /** @see Plugin::hook_prefs_edit_feed() */
+ const HOOK_PREFS_EDIT_FEED = "hook_prefs_edit_feed";
+
+ /** @see Plugin::hook_prefs_save_feed() */
+ const HOOK_PREFS_SAVE_FEED = "hook_prefs_save_feed";
+
+ /** @see Plugin::hook_fetch_feed() */
+ const HOOK_FETCH_FEED = "hook_fetch_feed";
+
+ /** @see Plugin::hook_query_headlines() */
+ const HOOK_QUERY_HEADLINES = "hook_query_headlines";
+
+ /** @see Plugin::hook_house_keeping() */
+ const HOOK_HOUSE_KEEPING = "hook_house_keeping"; //*1
+
+ /** @see Plugin::hook_search() */
+ const HOOK_SEARCH = "hook_search";
+
+ /** @see Plugin::hook_format_enclosures() */
+ const HOOK_FORMAT_ENCLOSURES = "hook_format_enclosures";
+
+ /** @see Plugin::hook_subscribe_feed() */
+ const HOOK_SUBSCRIBE_FEED = "hook_subscribe_feed";
+
+ /** @see Plugin::hook_headlines_before() */
+ const HOOK_HEADLINES_BEFORE = "hook_headlines_before";
+
+ /** @see Plugin::hook_render_enclosure() */
+ const HOOK_RENDER_ENCLOSURE = "hook_render_enclosure";
+
+ /** @see Plugin::hook_article_filter_action() */
+ const HOOK_ARTICLE_FILTER_ACTION = "hook_article_filter_action";
+
+ /** @see Plugin::hook_article_export_feed() */
+ const HOOK_ARTICLE_EXPORT_FEED = "hook_article_export_feed";
+
+ /** @see Plugin::hook_main_toolbar_button() */
+ const HOOK_MAIN_TOOLBAR_BUTTON = "hook_main_toolbar_button";
+
+ /** @see Plugin::hook_enclosure_entry() */
+ const HOOK_ENCLOSURE_ENTRY = "hook_enclosure_entry";
+
+ /** @see Plugin::hook_format_article() */
+ const HOOK_FORMAT_ARTICLE = "hook_format_article";
+
+ /** @see Plugin::hook_format_article_cdm() */
+ const HOOK_FORMAT_ARTICLE_CDM = "hook_format_article_cdm";
+
+ /** @see Plugin::hook_feed_basic_info() */
+ const HOOK_FEED_BASIC_INFO = "hook_feed_basic_info";
+
+ /** @see Plugin::hook_send_local_file() */
+ const HOOK_SEND_LOCAL_FILE = "hook_send_local_file";
+
+ /** @see Plugin::hook_unsubscribe_feed() */
+ const HOOK_UNSUBSCRIBE_FEED = "hook_unsubscribe_feed";
+
+ /** @see Plugin::hook_send_mail() */
+ const HOOK_SEND_MAIL = "hook_send_mail";
+
+ /** @see Plugin::hook_filter_triggered() */
+ const HOOK_FILTER_TRIGGERED = "hook_filter_triggered";
+
+ /** @see Plugin::hook_get_full_text() */
+ const HOOK_GET_FULL_TEXT = "hook_get_full_text";
+
+ /** @see Plugin::hook_article_image() */
+ const HOOK_ARTICLE_IMAGE = "hook_article_image";
+
+ /** @see Plugin::hook_feed_tree() */
+ const HOOK_FEED_TREE = "hook_feed_tree";
+
+ /** @see Plugin::hook_iframe_whitelisted() */
+ const HOOK_IFRAME_WHITELISTED = "hook_iframe_whitelisted";
+
+ /** @see Plugin::hook_enclosure_imported() */
+ const HOOK_ENCLOSURE_IMPORTED = "hook_enclosure_imported";
+
+ /** @see Plugin::hook_headlines_custom_sort_map() */
+ const HOOK_HEADLINES_CUSTOM_SORT_MAP = "hook_headlines_custom_sort_map";
+
+ /** @see Plugin::hook_headlines_custom_sort_override() */
const HOOK_HEADLINES_CUSTOM_SORT_OVERRIDE = "hook_headlines_custom_sort_override";
- // hook_headlines_custom_sort_override($order)
+
+ /** @see Plugin::hook_headline_toolbar_select_menu_item()
+ * @deprecated removed, see PluginHost::HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM2
+ */
const HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM = "hook_headline_toolbar_select_menu_item";
- // hook_headline_toolbar_select_menu_item($feed_id, $is_cat)
+
+ /** @see Plugin::hook_headline_toolbar_select_menu_item() */
+ const HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM2 = "hook_headline_toolbar_select_menu_item2";
+
+ /** @see Plugin::hook_pre_subscribe() */
+ const HOOK_PRE_SUBSCRIBE = "hook_pre_subscribe";
+
+ /** @see Plugin::hook_post_logout() */
+ const HOOK_POST_LOGOUT = "hook_post_logout";
const KIND_ALL = 1;
const KIND_SYSTEM = 2;
const KIND_USER = 3;
- static function object_to_domain(Plugin $plugin) {
+ static function object_to_domain(Plugin $plugin): string {
return strtolower(get_class($plugin));
}
function __construct() {
$this->pdo = Db::pdo();
- $this->storage = array();
+ $this->storage = [];
}
private function __clone() {
@@ -98,18 +227,18 @@ class PluginHost {
return self::$instance;
}
- private function register_plugin(string $name, Plugin $plugin) {
+ private function register_plugin(string $name, Plugin $plugin): void {
//array_push($this->plugins, $plugin);
$this->plugins[$name] = $plugin;
}
- // needed for compatibility with API 1
- function get_link() {
+ /** needed for compatibility with API 1 */
+ function get_link(): bool {
return false;
}
- // needed for compatibility with API 2 (?)
- function get_dbh() {
+ /** needed for compatibility with API 2 (?) */
+ function get_dbh(): bool {
return false;
}
@@ -117,8 +246,11 @@ class PluginHost {
return $this->pdo;
}
- function get_plugin_names() {
- $names = array();
+ /**
+ * @return array<int, string>
+ */
+ function get_plugin_names(): array {
+ $names = [];
foreach ($this->plugins as $p) {
array_push($names, get_class($p));
@@ -127,18 +259,26 @@ class PluginHost {
return $names;
}
- function get_plugins() {
+ /**
+ * @return array<Plugin>
+ */
+ function get_plugins(): array {
return $this->plugins;
}
- function get_plugin(string $name) {
+ function get_plugin(string $name): ?Plugin {
return $this->plugins[strtolower($name)] ?? null;
}
- function run_hooks(string $hook, ...$args) {
- $method = strtolower($hook);
+ /**
+ * @param PluginHost::HOOK_* $hook
+ * @param mixed $args
+ */
+ function run_hooks(string $hook, ...$args): void {
- foreach ($this->get_hooks($hook) as $plugin) {
+ $method = strtolower((string)$hook);
+
+ foreach ($this->get_hooks((string)$hook) as $plugin) {
//Debug::log("invoking: " . get_class($plugin) . "->$hook()", Debug::$LOG_VERBOSE);
try {
@@ -151,10 +291,15 @@ class PluginHost {
}
}
- function run_hooks_until(string $hook, $check, ...$args) {
- $method = strtolower($hook);
+ /**
+ * @param PluginHost::HOOK_* $hook
+ * @param mixed $args
+ * @param mixed $check
+ */
+ function run_hooks_until(string $hook, $check, ...$args): bool {
+ $method = strtolower((string)$hook);
- foreach ($this->get_hooks($hook) as $plugin) {
+ foreach ($this->get_hooks((string)$hook) as $plugin) {
try {
$result = $plugin->$method(...$args);
@@ -171,10 +316,14 @@ class PluginHost {
return false;
}
- function run_hooks_callback(string $hook, Closure $callback, ...$args) {
- $method = strtolower($hook);
+ /**
+ * @param PluginHost::HOOK_* $hook
+ * @param mixed $args
+ */
+ function run_hooks_callback(string $hook, Closure $callback, ...$args): void {
+ $method = strtolower((string)$hook);
- foreach ($this->get_hooks($hook) as $plugin) {
+ foreach ($this->get_hooks((string)$hook) as $plugin) {
//Debug::log("invoking: " . get_class($plugin) . "->$hook()", Debug::$LOG_VERBOSE);
try {
@@ -188,10 +337,14 @@ class PluginHost {
}
}
- function chain_hooks_callback(string $hook, Closure $callback, &...$args) {
- $method = strtolower($hook);
+ /**
+ * @param PluginHost::HOOK_* $hook
+ * @param mixed $args
+ */
+ function chain_hooks_callback(string $hook, Closure $callback, &...$args): void {
+ $method = strtolower((string)$hook);
- foreach ($this->get_hooks($hook) as $plugin) {
+ foreach ($this->get_hooks((string)$hook) as $plugin) {
//Debug::log("invoking: " . get_class($plugin) . "->$hook()", Debug::$LOG_VERBOSE);
try {
@@ -205,10 +358,13 @@ class PluginHost {
}
}
- function add_hook(string $type, Plugin $sender, int $priority = 50) {
+ /**
+ * @param PluginHost::HOOK_* $type
+ */
+ function add_hook(string $type, Plugin $sender, int $priority = 50): void {
$priority = (int) $priority;
- if (!method_exists($sender, strtolower($type))) {
+ if (!method_exists($sender, strtolower((string)$type))) {
user_error(
sprintf("Plugin %s tried to register a hook without implementation: %s",
get_class($sender), $type),
@@ -229,7 +385,10 @@ class PluginHost {
ksort($this->hooks[$type]);
}
- function del_hook(string $type, Plugin $sender) {
+ /**
+ * @param PluginHost::HOOK_* $type
+ */
+ function del_hook(string $type, Plugin $sender): void {
if (is_array($this->hooks[$type])) {
foreach (array_keys($this->hooks[$type]) as $prio) {
$key = array_search($sender, $this->hooks[$type][$prio]);
@@ -241,6 +400,10 @@ class PluginHost {
}
}
+ /**
+ * @param PluginHost::HOOK_* $type
+ * @return array<int, Plugin>
+ */
function get_hooks(string $type) {
if (isset($this->hooks[$type])) {
$tmp = [];
@@ -250,11 +413,14 @@ class PluginHost {
}
return $tmp;
- } else {
- return [];
}
+ return [];
}
- function load_all(int $kind, int $owner_uid = null, bool $skip_init = false) {
+
+ /**
+ * @param PluginHost::KIND_* $kind
+ */
+ function load_all(int $kind, int $owner_uid = null, bool $skip_init = false): void {
$plugins = array_merge(glob("plugins/*"), glob("plugins.local/*"));
$plugins = array_filter($plugins, "is_dir");
@@ -262,10 +428,13 @@ class PluginHost {
asort($plugins);
- $this->load(join(",", $plugins), $kind, $owner_uid, $skip_init);
+ $this->load(join(",", $plugins), (int)$kind, $owner_uid, $skip_init);
}
- function load(string $classlist, int $kind, int $owner_uid = null, bool $skip_init = false) {
+ /**
+ * @param PluginHost::KIND_* $kind
+ */
+ function load(string $classlist, int $kind, int $owner_uid = null, bool $skip_init = false): void {
$plugins = explode(",", $classlist);
$this->owner_uid = (int) $owner_uid;
@@ -285,8 +454,28 @@ class PluginHost {
}
if (!isset($this->plugins[$class])) {
+
+ // WIP hack
+ // we can't catch incompatible method signatures via Throwable
+ // this also enables global tt-rss safe mode in case there are more plugins like this
+ if (($_SESSION["plugin_blacklist"][$class] ?? 0)) {
+
+ // only report once per-plugin per-session
+ if ($_SESSION["plugin_blacklist"][$class] < 2) {
+ user_error("Plugin $class has caused a PHP fatal error so it won't be loaded again in this session.", E_USER_WARNING);
+ $_SESSION["plugin_blacklist"][$class] = 2;
+ }
+
+ $_SESSION["safe_mode"] = 1;
+
+ continue;
+ }
+
try {
- if (file_exists($file)) require_once $file;
+ $_SESSION["plugin_blacklist"][$class] = 1;
+ require_once $file;
+ unset($_SESSION["plugin_blacklist"][$class]);
+
} catch (Error $err) {
user_error($err, E_USER_WARNING);
continue;
@@ -307,8 +496,6 @@ class PluginHost {
_bind_textdomain_codeset($class, "UTF-8");
}
- $this->last_registered = $class;
-
try {
switch ($kind) {
case $this::KIND_SYSTEM:
@@ -340,27 +527,27 @@ class PluginHost {
$this->load_data();
}
- function is_system(Plugin $plugin) {
+ function is_system(Plugin $plugin): bool {
$about = $plugin->about();
- return $about[3] ?? false;
+ return ($about[3] ?? false) === true;
}
// only system plugins are allowed to modify routing
- function add_handler(string $handler, $method, Plugin $sender) {
+ function add_handler(string $handler, string $method, Plugin $sender): void {
$handler = str_replace("-", "_", strtolower($handler));
$method = strtolower($method);
if ($this->is_system($sender)) {
if (!isset($this->handlers[$handler])) {
- $this->handlers[$handler] = array();
+ $this->handlers[$handler] = [];
}
$this->handlers[$handler][$method] = $sender;
}
}
- function del_handler(string $handler, $method, Plugin $sender) {
+ function del_handler(string $handler, string $method, Plugin $sender): void {
$handler = str_replace("-", "_", strtolower($handler));
$method = strtolower($method);
@@ -369,7 +556,10 @@ class PluginHost {
}
}
- function lookup_handler($handler, $method) {
+ /**
+ * @return false|Plugin false if the handler couldn't be found, otherwise the Plugin/handler
+ */
+ function lookup_handler(string $handler, string $method) {
$handler = str_replace("-", "_", strtolower($handler));
$method = strtolower($method);
@@ -384,7 +574,7 @@ class PluginHost {
return false;
}
- function add_command(string $command, string $description, Plugin $sender, string $suffix = "", string $arghelp = "") {
+ function add_command(string $command, string $description, Plugin $sender, string $suffix = "", string $arghelp = ""): void {
$command = str_replace("-", "_", strtolower($command));
$this->commands[$command] = array("description" => $description,
@@ -393,27 +583,34 @@ class PluginHost {
"class" => $sender);
}
- function del_command(string $command) {
+ function del_command(string $command): void {
$command = "-" . strtolower($command);
unset($this->commands[$command]);
}
- function lookup_command($command) {
+ /**
+ * @return false|Plugin false if the command couldn't be found, otherwise the registered Plugin
+ */
+ function lookup_command(string $command) {
$command = "-" . strtolower($command);
- if (is_array($this->commands[$command])) {
+ if (array_key_exists($command, $this->commands) && is_array($this->commands[$command])) {
return $this->commands[$command]["class"];
} else {
return false;
}
}
+ /** @return array<string, array{'description': string, 'suffix': string, 'arghelp': string, 'class': Plugin}>> command type -> details array */
function get_commands() {
return $this->commands;
}
- function run_commands(array $args) {
+ /**
+ * @param array<string, mixed> $args
+ */
+ function run_commands(array $args): void {
foreach ($this->get_commands() as $command => $data) {
if (isset($args[$command])) {
$command = str_replace("-", "", $command);
@@ -422,7 +619,7 @@ class PluginHost {
}
}
- private function load_data() {
+ private function load_data(): void {
if ($this->owner_uid && !$this->data_loaded && get_schema_version() > 100) {
$sth = $this->pdo->prepare("SELECT name, content FROM ttrss_plugin_storage
WHERE owner_uid = ?");
@@ -436,7 +633,7 @@ class PluginHost {
}
}
- private function save_data(string $plugin) {
+ private function save_data(string $plugin): void {
if ($this->owner_uid) {
if (!$this->pdo_data)
@@ -449,7 +646,7 @@ class PluginHost {
$sth->execute([$this->owner_uid, $plugin]);
if (!isset($this->storage[$plugin]))
- $this->storage[$plugin] = array();
+ $this->storage[$plugin] = [];
$content = serialize($this->storage[$plugin]);
@@ -469,8 +666,12 @@ class PluginHost {
}
}
- // same as set(), but sets data to current preference profile
- function profile_set(Plugin $sender, string $name, $value) {
+ /**
+ * same as set(), but sets data to current preference profile
+ *
+ * @param mixed $value
+ */
+ function profile_set(Plugin $sender, string $name, $value): void {
$profile_id = $_SESSION["profile"] ?? null;
if ($profile_id) {
@@ -488,26 +689,32 @@ class PluginHost {
$this->save_data(get_class($sender));
} else {
- return $this->set($sender, $name, $value);
+ $this->set($sender, $name, $value);
}
}
- function set(Plugin $sender, string $name, $value) {
+ /**
+ * @param mixed $value
+ */
+ function set(Plugin $sender, string $name, $value): void {
$idx = get_class($sender);
if (!isset($this->storage[$idx]))
- $this->storage[$idx] = array();
+ $this->storage[$idx] = [];
$this->storage[$idx][$name] = $value;
$this->save_data(get_class($sender));
}
- function set_array(Plugin $sender, array $params) {
+ /**
+ * @param array<int|string, mixed> $params
+ */
+ function set_array(Plugin $sender, array $params): void {
$idx = get_class($sender);
if (!isset($this->storage[$idx]))
- $this->storage[$idx] = array();
+ $this->storage[$idx] = [];
foreach ($params as $name => $value)
$this->storage[$idx][$name] = $value;
@@ -515,7 +722,12 @@ class PluginHost {
$this->save_data(get_class($sender));
}
- // same as get(), but sets data to current preference profile
+ /**
+ * same as get(), but sets data to current preference profile
+ *
+ * @param mixed $default_value
+ * @return mixed
+ */
function profile_get(Plugin $sender, string $name, $default_value = false) {
$profile_id = $_SESSION["profile"] ?? null;
@@ -535,6 +747,10 @@ class PluginHost {
}
}
+ /**
+ * @param mixed $default_value
+ * @return mixed
+ */
function get(Plugin $sender, string $name, $default_value = false) {
$idx = get_class($sender);
@@ -547,6 +763,10 @@ class PluginHost {
}
}
+ /**
+ * @param array<int|string, mixed> $default_value
+ * @return array<int|string, mixed>
+ */
function get_array(Plugin $sender, string $name, array $default_value = []) {
$tmp = $this->get($sender, $name);
@@ -555,13 +775,16 @@ class PluginHost {
return $tmp;
}
- function get_all($sender) {
+ /**
+ * @return array<string, mixed>
+ */
+ function get_all(Plugin $sender) {
$idx = get_class($sender);
return $this->storage[$idx] ?? [];
}
- function clear_data(Plugin $sender) {
+ function clear_data(Plugin $sender): void {
if ($this->owner_uid) {
$idx = get_class($sender);
@@ -576,7 +799,7 @@ class PluginHost {
// Plugin feed functions are *EXPERIMENTAL*!
// cat_id: only -1 is supported (Special)
- function add_feed(int $cat_id, string $title, string $icon, Plugin $sender) {
+ function add_feed(int $cat_id, string $title, string $icon, Plugin $sender): int {
if (empty($this->feeds[$cat_id]))
$this->feeds[$cat_id] = [];
@@ -589,12 +812,15 @@ class PluginHost {
return $id;
}
+ /**
+ * @return array<int, array{'id': int, 'title': string, 'sender': Plugin, 'icon': string}>
+ */
function get_feeds(int $cat_id) {
return $this->feeds[$cat_id] ?? [];
}
// convert feed_id (e.g. -129) to pfeed_id first
- function get_feed_handler(int $pfeed_id) {
+ function get_feed_handler(int $pfeed_id): ?Plugin {
foreach ($this->feeds as $cat) {
foreach ($cat as $feed) {
if ($feed['id'] == $pfeed_id) {
@@ -602,46 +828,54 @@ class PluginHost {
}
}
}
+ return null;
}
- static function pfeed_to_feed_id(int $pfeed) {
+ static function pfeed_to_feed_id(int $pfeed): int {
return PLUGIN_FEED_BASE_INDEX - 1 - abs($pfeed);
}
- static function feed_to_pfeed_id(int $feed) {
+ static function feed_to_pfeed_id(int $feed): int {
return PLUGIN_FEED_BASE_INDEX - 1 + abs($feed);
}
- function add_api_method(string $name, Plugin $sender) {
+ function add_api_method(string $name, Plugin $sender): void {
if ($this->is_system($sender)) {
$this->api_methods[strtolower($name)] = $sender;
}
}
- function get_api_method(string $name) {
- return $this->api_methods[$name];
+ function get_api_method(string $name): ?Plugin {
+ return $this->api_methods[$name] ?? null;
}
- function add_filter_action(Plugin $sender, string $action_name, string $action_desc) {
+ function add_filter_action(Plugin $sender, string $action_name, string $action_desc): void {
$sender_class = get_class($sender);
if (!isset($this->plugin_actions[$sender_class]))
- $this->plugin_actions[$sender_class] = array();
+ $this->plugin_actions[$sender_class] = [];
array_push($this->plugin_actions[$sender_class],
array("action" => $action_name, "description" => $action_desc, "sender" => $sender));
}
+ /**
+ * @return array<string, array<int, array{'action': string, 'description': string, 'sender': Plugin}>>
+ */
function get_filter_actions() {
return $this->plugin_actions;
}
- function get_owner_uid() {
+ function get_owner_uid(): ?int {
return $this->owner_uid;
}
- // handled by classes/pluginhandler.php, requires valid session
- function get_method_url(Plugin $sender, string $method, $params = []) {
+ /**
+ * handled by classes/pluginhandler.php, requires valid session
+ *
+ * @param array<int|string, mixed> $params
+ */
+ function get_method_url(Plugin $sender, string $method, array $params = []): string {
return Config::get_self_url() . "/backend.php?" .
http_build_query(
array_merge(
@@ -664,8 +898,12 @@ class PluginHost {
$params));
} */
- // WARNING: endpoint in public.php, exposed to unauthenticated users
- function get_public_method_url(Plugin $sender, string $method, $params = []) {
+ /**
+ * WARNING: endpoint in public.php, exposed to unauthenticated users
+ *
+ * @param array<int|string, mixed> $params
+ */
+ function get_public_method_url(Plugin $sender, string $method, array $params = []): ?string {
if ($sender->is_public_method($method)) {
return Config::get_self_url() . "/public.php?" .
http_build_query(
@@ -674,18 +912,18 @@ class PluginHost {
"op" => strtolower(get_class($sender) . self::PUBLIC_METHOD_DELIMITER . $method),
],
$params));
- } else {
- user_error("get_public_method_url: requested method '$method' of '" . get_class($sender) . "' is private.");
}
+ user_error("get_public_method_url: requested method '$method' of '" . get_class($sender) . "' is private.");
+ return null;
}
- function get_plugin_dir(Plugin $plugin) {
+ function get_plugin_dir(Plugin $plugin): string {
$ref = new ReflectionClass(get_class($plugin));
return dirname($ref->getFileName());
}
// TODO: use get_plugin_dir()
- function is_local(Plugin $plugin) {
+ function is_local(Plugin $plugin): bool {
$ref = new ReflectionClass(get_class($plugin));
return basename(dirname(dirname($ref->getFileName()))) == "plugins.local";
}
diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php
index 5f7635736..b90ce49b4 100755
--- a/classes/pref/feeds.php
+++ b/classes/pref/feeds.php
@@ -5,29 +5,25 @@ class Pref_Feeds extends Handler_Protected {
const E_ICON_UPLOAD_FAILED = 'E_ICON_UPLOAD_FAILED';
const E_ICON_UPLOAD_SUCCESS = 'E_ICON_UPLOAD_SUCCESS';
- function csrf_ignore($method) {
+ function csrf_ignore(string $method): bool {
$csrf_ignored = array("index", "getfeedtree", "savefeedorder");
return array_search($method, $csrf_ignored) !== false;
}
- public static function get_ts_languages() {
- $rv = [];
-
- if (Config::get(Config::DB_TYPE) == "pgsql") {
- $dbh = Db::pdo();
-
- $res = $dbh->query("SELECT cfgname FROM pg_ts_config");
-
- while ($row = $res->fetch()) {
- array_push($rv, ucfirst($row['cfgname']));
- }
+ /**
+ * @return array<int, string>
+ */
+ public static function get_ts_languages(): array {
+ if (Config::get(Config::DB_TYPE) == 'pgsql') {
+ return array_map('ucfirst',
+ array_column(ORM::for_table('pg_ts_config')->select('cfgname')->find_array(), 'cfgname'));
}
- return $rv;
+ return [];
}
- function renameCat() {
+ function renameCat(): void {
$cat = ORM::for_table("ttrss_feed_categories")
->where("owner_uid", $_SESSION["uid"])
->find_one($_REQUEST['id']);
@@ -40,7 +36,10 @@ class Pref_Feeds extends Handler_Protected {
}
}
- private function get_category_items($cat_id) {
+ /**
+ * @return array<int, array<string, bool|int|string>>
+ */
+ private function get_category_items(int $cat_id): array {
if (clean($_REQUEST['mode'] ?? 0) != 2)
$search = $_SESSION["prefs_feed_search"] ?? "";
@@ -48,74 +47,76 @@ class Pref_Feeds extends Handler_Protected {
$search = "";
// first one is set by API
- $show_empty_cats = clean($_REQUEST['force_show_empty'] ?? false) ||
+ $show_empty_cats = self::_param_to_bool($_REQUEST['force_show_empty'] ?? false) ||
(clean($_REQUEST['mode'] ?? 0) != 2 && !$search);
- $items = array();
-
- $sth = $this->pdo->prepare("SELECT id, title FROM ttrss_feed_categories
- WHERE owner_uid = ? AND parent_cat = ? ORDER BY order_id, title");
- $sth->execute([$_SESSION['uid'], $cat_id]);
-
- while ($line = $sth->fetch()) {
-
- $cat = array();
- $cat['id'] = 'CAT:' . $line['id'];
- $cat['bare_id'] = (int)$line['id'];
- $cat['name'] = $line['title'];
- $cat['items'] = array();
- $cat['checkbox'] = false;
- $cat['type'] = 'category';
- $cat['unread'] = -1;
- $cat['child_unread'] = -1;
- $cat['auxcounter'] = -1;
- $cat['parent_id'] = $cat_id;
-
- $cat['items'] = $this->get_category_items($line['id']);
+ $items = [];
+
+ $feed_categories = ORM::for_table('ttrss_feed_categories')
+ ->select_many('id', 'title')
+ ->where(['owner_uid' => $_SESSION['uid'], 'parent_cat' => $cat_id])
+ ->order_by_asc('order_id')
+ ->order_by_asc('title')
+ ->find_many();
+
+ foreach ($feed_categories as $feed_category) {
+ $cat = [
+ 'id' => 'CAT:' . $feed_category->id,
+ 'bare_id' => (int)$feed_category->id,
+ 'name' => $feed_category->title,
+ 'items' => $this->get_category_items($feed_category->id),
+ 'checkbox' => false,
+ 'type' => 'category',
+ 'unread' => -1,
+ 'child_unread' => -1,
+ 'auxcounter' => -1,
+ 'parent_id' => $cat_id,
+ ];
$num_children = $this->calculate_children_count($cat);
$cat['param'] = sprintf(_ngettext('(%d feed)', '(%d feeds)', (int) $num_children), $num_children);
if ($num_children > 0 || $show_empty_cats)
array_push($items, $cat);
+ }
+
+ $feeds_obj = ORM::for_table('ttrss_feeds')
+ ->select_many('id', 'title', 'last_error', 'update_interval')
+ ->select_expr(SUBSTRING_FOR_DATE.'(last_updated,1,19)', 'last_updated')
+ ->where(['cat_id' => $cat_id, 'owner_uid' => $_SESSION['uid']])
+ ->order_by_asc('order_id')
+ ->order_by_asc('title');
+ if ($search) {
+ $feeds_obj->where_raw('(LOWER(title) LIKE ? OR LOWER(feed_url) LIKE LOWER(?))', ["%$search%", "%$search%"]);
}
- $fsth = $this->pdo->prepare("SELECT id, title, last_error,
- ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated, update_interval
- FROM ttrss_feeds
- WHERE cat_id = :cat AND
- owner_uid = :uid AND
- (:search = '' OR (LOWER(title) LIKE :search OR LOWER(feed_url) LIKE :search))
- ORDER BY order_id, title");
-
- $fsth->execute([":cat" => $cat_id, ":uid" => $_SESSION['uid'], ":search" => $search ? "%$search%" : ""]);
-
- while ($feed_line = $fsth->fetch()) {
- $feed = array();
- $feed['id'] = 'FEED:' . $feed_line['id'];
- $feed['bare_id'] = (int)$feed_line['id'];
- $feed['auxcounter'] = -1;
- $feed['name'] = $feed_line['title'];
- $feed['checkbox'] = false;
- $feed['unread'] = -1;
- $feed['error'] = $feed_line['last_error'];
- $feed['icon'] = Feeds::_get_icon($feed_line['id']);
- $feed['param'] = TimeHelper::make_local_datetime(
- $feed_line['last_updated'], true);
- $feed['updates_disabled'] = (int)($feed_line['update_interval'] < 0);
-
- array_push($items, $feed);
+ foreach ($feeds_obj->find_many() as $feed) {
+ array_push($items, [
+ 'id' => 'FEED:' . $feed->id,
+ 'bare_id' => (int) $feed->id,
+ 'auxcounter' => -1,
+ 'name' => $feed->title,
+ 'checkbox' => false,
+ 'unread' => -1,
+ 'error' => $feed->last_error,
+ 'icon' => Feeds::_get_icon($feed->id),
+ 'param' => TimeHelper::make_local_datetime($feed->last_updated, true),
+ 'updates_disabled' => (int)($feed->update_interval < 0),
+ ]);
}
return $items;
}
- function getfeedtree() {
+ function getfeedtree(): void {
print json_encode($this->_makefeedtree());
}
- function _makefeedtree() {
+ /**
+ * @return array<string, array<int|string, mixed>|string>
+ */
+ function _makefeedtree(): array {
if (clean($_REQUEST['mode'] ?? 0) != 2)
$search = $_SESSION["prefs_feed_search"] ?? "";
@@ -181,24 +182,23 @@ class Pref_Feeds extends Handler_Protected {
if (get_pref(Prefs::ENABLE_FEED_CATS)) {
$cat = $this->feedlist_init_cat(-2);
} else {
- $cat['items'] = array();
+ $cat['items'] = [];
}
- $num_labels = 0;
- while ($line = $sth->fetch()) {
- ++$num_labels;
-
- $label_id = Labels::label_to_feed_id($line['id']);
-
- $feed = $this->feedlist_init_feed($label_id, false, 0);
-
- $feed['fg_color'] = $line['fg_color'];
- $feed['bg_color'] = $line['bg_color'];
-
- array_push($cat['items'], $feed);
- }
+ $labels = ORM::for_table('ttrss_labels2')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->order_by_asc('caption')
+ ->find_many();
+
+ if (count($labels)) {
+ foreach ($labels as $label) {
+ $label_id = Labels::label_to_feed_id($label->id);
+ $feed = $this->feedlist_init_feed($label_id, null, false);
+ $feed['fg_color'] = $label->fg_color;
+ $feed['bg_color'] = $label->bg_color;
+ array_push($cat['items'], $feed);
+ }
- if ($num_labels) {
if ($enable_cats) {
array_push($root['items'], $cat);
} else {
@@ -208,26 +208,29 @@ class Pref_Feeds extends Handler_Protected {
}
if ($enable_cats) {
- $show_empty_cats = clean($_REQUEST['force_show_empty'] ?? false) ||
+ $show_empty_cats = self::_param_to_bool($_REQUEST['force_show_empty'] ?? false) ||
(clean($_REQUEST['mode'] ?? 0) != 2 && !$search);
- $sth = $this->pdo->prepare("SELECT id, title FROM ttrss_feed_categories
- WHERE owner_uid = ? AND parent_cat IS NULL ORDER BY order_id, title");
- $sth->execute([$_SESSION['uid']]);
-
- while ($line = $sth->fetch()) {
- $cat = array();
- $cat['id'] = 'CAT:' . $line['id'];
- $cat['bare_id'] = (int)$line['id'];
- $cat['auxcounter'] = -1;
- $cat['name'] = $line['title'];
- $cat['items'] = array();
- $cat['checkbox'] = false;
- $cat['type'] = 'category';
- $cat['unread'] = -1;
- $cat['child_unread'] = -1;
-
- $cat['items'] = $this->get_category_items($line['id']);
+ $feed_categories = ORM::for_table('ttrss_feed_categories')
+ ->select_many('id', 'title')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->where_null('parent_cat')
+ ->order_by_asc('order_id')
+ ->order_by_asc('title')
+ ->find_many();
+
+ foreach ($feed_categories as $feed_category) {
+ $cat = [
+ 'id' => 'CAT:' . $feed_category->id,
+ 'bare_id' => (int) $feed_category->id,
+ 'auxcounter' => -1,
+ 'name' => $feed_category->title,
+ 'items' => $this->get_category_items($feed_category->id),
+ 'checkbox' => false,
+ 'type' => 'category',
+ 'unread' => -1,
+ 'child_unread' => -1,
+ ];
$num_children = $this->calculate_children_count($cat);
$cat['param'] = sprintf(_ngettext('(%d feed)', '(%d feeds)', (int) $num_children), $num_children);
@@ -235,47 +238,48 @@ class Pref_Feeds extends Handler_Protected {
if ($num_children > 0 || $show_empty_cats)
array_push($root['items'], $cat);
- $root['param'] += count($cat['items']);
+ //$root['param'] += count($cat['items']);
}
/* Uncategorized is a special case */
+ $cat = [
+ 'id' => 'CAT:0',
+ 'bare_id' => 0,
+ 'auxcounter' => -1,
+ 'name' => __('Uncategorized'),
+ 'items' => [],
+ 'type' => 'category',
+ 'checkbox' => false,
+ 'unread' => -1,
+ 'child_unread' => -1,
+ ];
+
+ $feeds_obj = ORM::for_table('ttrss_feeds')
+ ->select_many('id', 'title', 'last_error', 'update_interval')
+ ->select_expr(SUBSTRING_FOR_DATE.'(last_updated,1,19)', 'last_updated')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->where_null('cat_id')
+ ->order_by_asc('order_id')
+ ->order_by_asc('title');
- $cat = array();
- $cat['id'] = 'CAT:0';
- $cat['bare_id'] = 0;
- $cat['auxcounter'] = -1;
- $cat['name'] = __("Uncategorized");
- $cat['items'] = array();
- $cat['type'] = 'category';
- $cat['checkbox'] = false;
- $cat['unread'] = -1;
- $cat['child_unread'] = -1;
-
- $fsth = $this->pdo->prepare("SELECT id, title,last_error,
- ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated, update_interval
- FROM ttrss_feeds
- WHERE cat_id IS NULL AND
- owner_uid = :uid AND
- (:search = '' OR (LOWER(title) LIKE :search OR LOWER(feed_url) LIKE :search))
- ORDER BY order_id, title");
- $fsth->execute([":uid" => $_SESSION['uid'], ":search" => $search ? "%$search%" : ""]);
-
- while ($feed_line = $fsth->fetch()) {
- $feed = array();
- $feed['id'] = 'FEED:' . $feed_line['id'];
- $feed['bare_id'] = (int)$feed_line['id'];
- $feed['auxcounter'] = -1;
- $feed['name'] = $feed_line['title'];
- $feed['checkbox'] = false;
- $feed['error'] = $feed_line['last_error'];
- $feed['icon'] = Feeds::_get_icon($feed_line['id']);
- $feed['param'] = TimeHelper::make_local_datetime(
- $feed_line['last_updated'], true);
- $feed['unread'] = -1;
- $feed['type'] = 'feed';
- $feed['updates_disabled'] = (int)($feed_line['update_interval'] < 0);
-
- array_push($cat['items'], $feed);
+ if ($search) {
+ $feeds_obj->where_raw('(LOWER(title) LIKE ? OR LOWER(feed_url) LIKE LOWER(?))', ["%$search%", "%$search%"]);
+ }
+
+ foreach ($feeds_obj->find_many() as $feed) {
+ array_push($cat['items'], [
+ 'id' => 'FEED:' . $feed->id,
+ 'bare_id' => (int) $feed->id,
+ 'auxcounter' => -1,
+ 'name' => $feed->title,
+ 'checkbox' => false,
+ 'error' => $feed->last_error,
+ 'icon' => Feeds::_get_icon($feed->id),
+ 'param' => TimeHelper::make_local_datetime($feed->last_updated, true),
+ 'unread' => -1,
+ 'type' => 'feed',
+ 'updates_disabled' => (int)($feed->update_interval < 0),
+ ]);
}
$cat['param'] = sprintf(_ngettext('(%d feed)', '(%d feeds)', count($cat['items'])), count($cat['items']));
@@ -287,61 +291,59 @@ class Pref_Feeds extends Handler_Protected {
$root['param'] = sprintf(_ngettext('(%d feed)', '(%d feeds)', (int) $num_children), $num_children);
} else {
- $fsth = $this->pdo->prepare("SELECT id, title, last_error,
- ".SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated, update_interval
- FROM ttrss_feeds
- WHERE owner_uid = :uid AND
- (:search = '' OR (LOWER(title) LIKE :search OR LOWER(feed_url) LIKE :search))
- ORDER BY order_id, title");
- $fsth->execute([":uid" => $_SESSION['uid'], ":search" => $search ? "%$search%" : ""]);
-
- while ($feed_line = $fsth->fetch()) {
- $feed = array();
- $feed['id'] = 'FEED:' . $feed_line['id'];
- $feed['bare_id'] = (int)$feed_line['id'];
- $feed['auxcounter'] = -1;
- $feed['name'] = $feed_line['title'];
- $feed['checkbox'] = false;
- $feed['error'] = $feed_line['last_error'];
- $feed['icon'] = Feeds::_get_icon($feed_line['id']);
- $feed['param'] = TimeHelper::make_local_datetime(
- $feed_line['last_updated'], true);
- $feed['unread'] = -1;
- $feed['type'] = 'feed';
- $feed['updates_disabled'] = (int)($feed_line['update_interval'] < 0);
-
- array_push($root['items'], $feed);
- }
+ $feeds_obj = ORM::for_table('ttrss_feeds')
+ ->select_many('id', 'title', 'last_error', 'update_interval')
+ ->select_expr(SUBSTRING_FOR_DATE.'(last_updated,1,19)', 'last_updated')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->order_by_asc('order_id')
+ ->order_by_asc('title');
- $root['param'] = sprintf(_ngettext('(%d feed)', '(%d feeds)', count($root['items'])), count($root['items']));
- }
+ if ($search) {
+ $feeds_obj->where_raw('(LOWER(title) LIKE ? OR LOWER(feed_url) LIKE LOWER(?))', ["%$search%", "%$search%"]);
+ }
- $fl = array();
- $fl['identifier'] = 'id';
- $fl['label'] = 'name';
+ foreach ($feeds_obj->find_many() as $feed) {
+ array_push($root['items'], [
+ 'id' => 'FEED:' . $feed->id,
+ 'bare_id' => (int) $feed->id,
+ 'auxcounter' => -1,
+ 'name' => $feed->title,
+ 'checkbox' => false,
+ 'error' => $feed->last_error,
+ 'icon' => Feeds::_get_icon($feed->id),
+ 'param' => TimeHelper::make_local_datetime($feed->last_updated, true),
+ 'unread' => -1,
+ 'type' => 'feed',
+ 'updates_disabled' => (int)($feed->update_interval < 0),
+ ]);
+ }
- if (clean($_REQUEST['mode'] ?? 0) != 2) {
- $fl['items'] = array($root);
- } else {
- $fl['items'] = $root['items'];
+ $root['param'] = sprintf(_ngettext('(%d feed)', '(%d feeds)', count($root['items'])), count($root['items']));
}
- return $fl;
+ return [
+ 'identifier' => 'id',
+ 'label' => 'name',
+ 'items' => clean($_REQUEST['mode'] ?? 0) != 2 ? [$root] : $root['items'],
+ ];
}
- function catsortreset() {
+ function catsortreset(): void {
$sth = $this->pdo->prepare("UPDATE ttrss_feed_categories
SET order_id = 0 WHERE owner_uid = ?");
$sth->execute([$_SESSION['uid']]);
}
- function feedsortreset() {
+ function feedsortreset(): void {
$sth = $this->pdo->prepare("UPDATE ttrss_feeds
SET order_id = 0 WHERE owner_uid = ?");
$sth->execute([$_SESSION['uid']]);
}
- private function process_category_order(&$data_map, $item_id, $parent_id = false, $nest_level = 0) {
+ /**
+ * @param array<string, mixed> $data_map
+ */
+ private function process_category_order(array &$data_map, string $item_id = '', string $parent_id = '', int $nest_level = 0): void {
$prefix = "";
for ($i = 0; $i < $nest_level; $i++)
@@ -359,10 +361,14 @@ class Pref_Feeds extends Handler_Protected {
$parent_qpart = null;
}
- $sth = $this->pdo->prepare("UPDATE ttrss_feed_categories
- SET parent_cat = ? WHERE id = ? AND
- owner_uid = ?");
- $sth->execute([$parent_qpart, $bare_item_id, $_SESSION['uid']]);
+ $feed_category = ORM::for_table('ttrss_feed_categories')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->find_one($bare_item_id);
+
+ if ($feed_category) {
+ $feed_category->parent_cat = $parent_qpart;
+ $feed_category->save();
+ }
}
$order_id = 1;
@@ -380,22 +386,27 @@ class Pref_Feeds extends Handler_Protected {
if (strpos($id, "FEED") === 0) {
- $cat_id = ($item_id != "root") ? $bare_item_id : null;
-
- $sth = $this->pdo->prepare("UPDATE ttrss_feeds
- SET order_id = ?, cat_id = ?
- WHERE id = ? AND owner_uid = ?");
-
- $sth->execute([$order_id, $cat_id ? $cat_id : null, $bare_id, $_SESSION['uid']]);
+ $feed = ORM::for_table('ttrss_feeds')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->find_one($bare_id);
+ if ($feed) {
+ $feed->order_id = $order_id;
+ $feed->cat_id = ($item_id != "root" && $bare_item_id) ? $bare_item_id : null;
+ $feed->save();
+ }
} else if (strpos($id, "CAT:") === 0) {
$this->process_category_order($data_map, $item['_reference'], $item_id,
$nest_level+1);
- $sth = $this->pdo->prepare("UPDATE ttrss_feed_categories
- SET order_id = ? WHERE id = ? AND
- owner_uid = ?");
- $sth->execute([$order_id, $bare_id, $_SESSION['uid']]);
+ $feed_category = ORM::for_table('ttrss_feed_categories')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->find_one($bare_id);
+
+ if ($feed_category) {
+ $feed_category->order_id = $order_id;
+ $feed_category->save();
+ }
}
}
@@ -404,7 +415,7 @@ class Pref_Feeds extends Handler_Protected {
}
}
- function savefeedorder() {
+ function savefeedorder(): void {
$data = json_decode($_POST['payload'], true);
#file_put_contents("/tmp/saveorder.json", clean($_POST['payload']));
@@ -418,8 +429,9 @@ class Pref_Feeds extends Handler_Protected {
if (is_array($data) && is_array($data['items'])) {
# $cat_order_id = 0;
+ /** @var array<int, mixed> */
$data_map = array();
- $root_item = false;
+ $root_item = '';
foreach ($data['items'] as $item) {
@@ -440,7 +452,7 @@ class Pref_Feeds extends Handler_Protected {
}
}
- function removeIcon() {
+ function removeIcon(): void {
$feed_id = (int) $_REQUEST["feed_id"];
$icon_file = Config::get(Config::ICONS_DIR) . "/$feed_id.ico";
@@ -460,7 +472,7 @@ class Pref_Feeds extends Handler_Protected {
}
}
- function uploadIcon() {
+ function uploadIcon(): void {
$feed_id = (int) $_REQUEST['feed_id'];
$tmp_file = tempnam(Config::get(Config::CACHE_DIR) . '/upload', 'icon');
@@ -503,7 +515,7 @@ class Pref_Feeds extends Handler_Protected {
print json_encode(['rc' => $rc, 'icon_url' => Feeds::_get_icon($feed_id)]);
}
- function editfeed() {
+ function editfeed(): void {
global $purge_intervals;
global $update_intervals;
@@ -539,6 +551,8 @@ class Pref_Feeds extends Handler_Protected {
$local_purge_intervals = [ T_nsprintf('%d day', '%d days', $purge_interval, $purge_interval) ];
}
+ $user = ORM::for_table("ttrss_users")->find_one($_SESSION["uid"]);
+
print json_encode([
"feed" => $row,
"cats" => [
@@ -551,6 +565,9 @@ class Pref_Feeds extends Handler_Protected {
"update" => $local_update_intervals,
"purge" => $local_purge_intervals,
],
+ "user" => [
+ "access_level" => $user->access_level
+ ],
"lang" => [
"enabled" => Config::get(Config::DB_TYPE) == "pgsql",
"default" => get_pref(Prefs::DEFAULT_SEARCH_LANGUAGE),
@@ -560,12 +577,12 @@ class Pref_Feeds extends Handler_Protected {
}
}
- private function _batch_toggle_checkbox($name) {
+ private function _batch_toggle_checkbox(string $name): string {
return \Controls\checkbox_tag("", false, "",
["data-control-for" => $name, "title" => __("Check to enable field"), "onchange" => "App.dialogOf(this).toggleField(this)"]);
}
- function editfeeds() {
+ function editfeeds(): void {
global $purge_intervals;
global $update_intervals;
@@ -673,15 +690,15 @@ class Pref_Feeds extends Handler_Protected {
<?php
}
- function batchEditSave() {
- return $this->editsaveops(true);
+ function batchEditSave(): void {
+ $this->editsaveops(true);
}
- function editSave() {
- return $this->editsaveops(false);
+ function editSave(): void {
+ $this->editsaveops(false);
}
- private function editsaveops($batch) {
+ private function editsaveops(bool $batch): void {
$feed_title = clean($_POST["title"]);
$feed_url = clean($_POST["feed_url"]);
@@ -770,11 +787,11 @@ class Pref_Feeds extends Handler_Protected {
break;
case "update_interval":
- $qpart = "update_interval = " . $this->pdo->quote($upd_intl);
+ $qpart = "update_interval = " . $upd_intl; // made int above
break;
case "purge_interval":
- $qpart = "purge_interval =" . $this->pdo->quote($purge_intl);
+ $qpart = "purge_interval = " . $purge_intl; // made int above
break;
case "auth_login":
@@ -786,33 +803,33 @@ class Pref_Feeds extends Handler_Protected {
break;
case "private":
- $qpart = "private = " . $this->pdo->quote($private);
+ $qpart = "private = " . $private; // made int above
break;
case "include_in_digest":
- $qpart = "include_in_digest = " . $this->pdo->quote($include_in_digest);
+ $qpart = "include_in_digest = " . $include_in_digest; // made int above
break;
case "always_display_enclosures":
- $qpart = "always_display_enclosures = " . $this->pdo->quote($always_display_enclosures);
+ $qpart = "always_display_enclosures = " . $always_display_enclosures; // made int above
break;
case "mark_unread_on_update":
- $qpart = "mark_unread_on_update = " . $this->pdo->quote($mark_unread_on_update);
+ $qpart = "mark_unread_on_update = " . $mark_unread_on_update; // made int above
break;
case "cache_images":
- $qpart = "cache_images = " . $this->pdo->quote($cache_images);
+ $qpart = "cache_images = " . $cache_images; // made int above
break;
case "hide_images":
- $qpart = "hide_images = " . $this->pdo->quote($hide_images);
+ $qpart = "hide_images = " . $hide_images; // made int above
break;
case "cat_id":
if (get_pref(Prefs::ENABLE_FEED_CATS)) {
if ($cat_id) {
- $qpart = "cat_id = " . $this->pdo->quote($cat_id);
+ $qpart = "cat_id = " . $cat_id; // made int above
} else {
$qpart = 'cat_id = NULL';
}
@@ -837,39 +854,36 @@ class Pref_Feeds extends Handler_Protected {
$this->pdo->commit();
}
- return;
}
- function remove() {
-
- $ids = explode(",", clean($_REQUEST["ids"]));
+ function remove(): void {
+ /** @var array<int, int> */
+ $ids = array_map('intval', explode(",", clean($_REQUEST["ids"])));
foreach ($ids as $id) {
self::remove_feed($id, $_SESSION["uid"]);
}
-
- return;
}
- function removeCat() {
+ function removeCat(): void {
$ids = explode(",", clean($_REQUEST["ids"]));
foreach ($ids as $id) {
Feeds::_remove_cat((int)$id, $_SESSION["uid"]);
}
}
- function addCat() {
+ function addCat(): void {
$feed_cat = clean($_REQUEST["cat"]);
Feeds::_add_cat($feed_cat, $_SESSION['uid']);
}
- function importOpml() {
+ function importOpml(): void {
$opml = new OPML($_REQUEST);
$opml->opml_import($_SESSION["uid"]);
}
- private function index_feeds() {
+ private function index_feeds(): void {
$error_button = "<button dojoType='dijit.form.Button'
id='pref_feeds_errors_btn' style='display : none'
onclick='CommonDialogs.showFeedsWithErrors()'>".
@@ -980,7 +994,7 @@ class Pref_Feeds extends Handler_Protected {
}
- private function index_opml() {
+ private function index_opml(): void {
?>
<form id='opml_import_form' method='post' enctype='multipart/form-data'>
@@ -1016,7 +1030,7 @@ class Pref_Feeds extends Handler_Protected {
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION, "prefFeedsOPML");
}
- private function index_shared() {
+ private function index_shared(): void {
?>
<?= format_notice('Published articles can be subscribed by anyone who knows the following URL:') ?></h3>
@@ -1036,7 +1050,7 @@ class Pref_Feeds extends Handler_Protected {
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_PREFS_TAB_SECTION, "prefFeedsPublishedGenerated");
}
- function index() {
+ function index(): void {
?>
<div dojoType='dijit.layout.TabContainer' tabPosition='left-h'>
@@ -1075,44 +1089,44 @@ class Pref_Feeds extends Handler_Protected {
<?php
}
- private function feedlist_init_cat($cat_id) {
- $obj = array();
- $cat_id = (int) $cat_id;
-
- $obj['id'] = 'CAT:' . $cat_id;
- $obj['items'] = array();
- $obj['name'] = Feeds::_get_cat_title($cat_id);
- $obj['type'] = 'category';
- $obj['unread'] = -1; //(int) Feeds::_get_cat_unread($cat_id);
- $obj['bare_id'] = $cat_id;
-
- return $obj;
+ /**
+ * @return array<string, mixed>
+ */
+ private function feedlist_init_cat(int $cat_id): array {
+ return [
+ 'id' => 'CAT:' . $cat_id,
+ 'items' => array(),
+ 'name' => Feeds::_get_cat_title($cat_id),
+ 'type' => 'category',
+ 'unread' => -1, //(int) Feeds::_get_cat_unread($cat_id);
+ 'bare_id' => $cat_id,
+ ];
}
- private function feedlist_init_feed($feed_id, $title = false, $unread = false, $error = '', $updated = '') {
- $obj = array();
- $feed_id = (int) $feed_id;
-
+ /**
+ * @return array<string, mixed>
+ */
+ private function feedlist_init_feed(int $feed_id, ?string $title = null, bool $unread = false, string $error = '', string $updated = ''): array {
if (!$title)
$title = Feeds::_get_title($feed_id, false);
if ($unread === false)
- $unread = getFeedUnread($feed_id, false);
-
- $obj['id'] = 'FEED:' . $feed_id;
- $obj['name'] = $title;
- $obj['unread'] = (int) $unread;
- $obj['type'] = 'feed';
- $obj['error'] = $error;
- $obj['updated'] = $updated;
- $obj['icon'] = Feeds::_get_icon($feed_id);
- $obj['bare_id'] = $feed_id;
- $obj['auxcounter'] = 0;
-
- return $obj;
+ $unread = Feeds::_get_counters($feed_id, false, true);
+
+ return [
+ 'id' => 'FEED:' . $feed_id,
+ 'name' => $title,
+ 'unread' => (int) $unread,
+ 'type' => 'feed',
+ 'error' => $error,
+ 'updated' => $updated,
+ 'icon' => Feeds::_get_icon($feed_id),
+ 'bare_id' => $feed_id,
+ 'auxcounter' => 0,
+ ];
}
- function inactiveFeeds() {
+ function inactiveFeeds(): void {
if (Config::get(Config::DB_TYPE) == "pgsql") {
$interval_qpart = "NOW() - INTERVAL '3 months'";
@@ -1120,44 +1134,41 @@ class Pref_Feeds extends Handler_Protected {
$interval_qpart = "DATE_SUB(NOW(), INTERVAL 3 MONTH)";
}
- $sth = $this->pdo->prepare("SELECT ttrss_feeds.title, ttrss_feeds.site_url,
- ttrss_feeds.feed_url, ttrss_feeds.id, MAX(updated) AS last_article
- FROM ttrss_feeds, ttrss_entries, ttrss_user_entries WHERE
- (SELECT MAX(updated) FROM ttrss_entries, ttrss_user_entries WHERE
- ttrss_entries.id = ref_id AND
- ttrss_user_entries.feed_id = ttrss_feeds.id) < $interval_qpart
- AND ttrss_feeds.owner_uid = ? AND
- ttrss_user_entries.feed_id = ttrss_feeds.id AND
- ttrss_entries.id = ref_id
- GROUP BY ttrss_feeds.title, ttrss_feeds.id, ttrss_feeds.site_url, ttrss_feeds.feed_url
- ORDER BY last_article");
- $sth->execute([$_SESSION['uid']]);
-
- $rv = [];
-
- while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
- $row['last_article'] = TimeHelper::make_local_datetime($row['last_article'], false);
- array_push($rv, $row);
+ $inactive_feeds = ORM::for_table('ttrss_feeds')
+ ->table_alias('f')
+ ->select_many('f.id', 'f.title', 'f.site_url', 'f.feed_url')
+ ->select_expr('MAX(e.updated)', 'last_article')
+ ->join('ttrss_user_entries', [ 'ue.feed_id', '=', 'f.id'], 'ue')
+ ->join('ttrss_entries', ['e.id', '=', 'ue.ref_id'], 'e')
+ ->where('f.owner_uid', $_SESSION['uid'])
+ ->where_raw(
+ "(SELECT MAX(ttrss_entries.updated)
+ FROM ttrss_entries
+ JOIN ttrss_user_entries ON ttrss_entries.id = ttrss_user_entries.ref_id
+ WHERE ttrss_user_entries.feed_id = f.id) < $interval_qpart")
+ ->group_by('f.title')
+ ->group_by('f.id')
+ ->group_by('f.site_url')
+ ->group_by('f.feed_url')
+ ->order_by_asc('last_article')
+ ->find_array();
+
+ foreach ($inactive_feeds as $inactive_feed) {
+ $inactive_feed['last_article'] = TimeHelper::make_local_datetime($inactive_feed['last_article'], false);
}
- print json_encode($rv);
+ print json_encode($inactive_feeds);
}
- function feedsWithErrors() {
- $sth = $this->pdo->prepare("SELECT id,title,feed_url,last_error,site_url
- FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ?");
- $sth->execute([$_SESSION['uid']]);
-
- $rv = [];
-
- while ($row = $sth->fetch()) {
- array_push($rv, $row);
- }
-
- print json_encode($rv);
+ function feedsWithErrors(): void {
+ print json_encode(ORM::for_table('ttrss_feeds')
+ ->select_many('id', 'title', 'feed_url', 'last_error', 'site_url')
+ ->where_not_equal('last_error', '')
+ ->where('owner_uid', $_SESSION['uid'])
+ ->find_array());
}
- static function remove_feed($id, $owner_uid) {
+ static function remove_feed(int $id, int $owner_uid): void {
if (PluginHost::getInstance()->run_hooks_until(PluginHost::HOOK_UNSUBSCRIBE_FEED, true, $id, $owner_uid))
return;
@@ -1198,19 +1209,26 @@ class Pref_Feeds extends Handler_Protected {
}
}
- function batchSubscribe() {
+ function batchSubscribe(): void {
print json_encode([
"enable_cats" => (int)get_pref(Prefs::ENABLE_FEED_CATS),
"cat_select" => \Controls\select_feeds_cats("cat")
]);
}
- function batchAddFeeds() {
+ function batchAddFeeds(): void {
$cat_id = clean($_REQUEST['cat']);
$feeds = explode("\n", clean($_REQUEST['feeds']));
$login = clean($_REQUEST['login']);
$pass = clean($_REQUEST['pass']);
+ $user = ORM::for_table('ttrss_users')->find_one($_SESSION["uid"]);
+
+ // TODO: we should return some kind of error code to frontend here
+ if ($user->access_level == UserHelper::ACCESS_LEVEL_READONLY) {
+ return;
+ }
+
$csth = $this->pdo->prepare("SELECT id FROM ttrss_feeds
WHERE feed_url = ? AND owner_uid = ?");
@@ -1236,22 +1254,22 @@ class Pref_Feeds extends Handler_Protected {
}
}
- function clearKeys() {
- return Feeds::_clear_access_keys($_SESSION['uid']);
+ function clearKeys(): void {
+ Feeds::_clear_access_keys($_SESSION['uid']);
}
- function regenFeedKey() {
+ function regenFeedKey(): void {
$feed_id = clean($_REQUEST['id']);
- $is_cat = clean($_REQUEST['is_cat']);
+ $is_cat = self::_param_to_bool($_REQUEST['is_cat'] ?? false);
$new_key = Feeds::_update_access_key($feed_id, $is_cat, $_SESSION["uid"]);
print json_encode(["link" => $new_key]);
}
- function getSharedURL() {
+ function getSharedURL(): void {
$feed_id = clean($_REQUEST['id']);
- $is_cat = clean($_REQUEST['is_cat']) == "true";
+ $is_cat = self::_param_to_bool($_REQUEST['is_cat'] ?? false);
$search = clean($_REQUEST['search']);
$link = Config::get_self_url() . "/public.php?" . http_build_query([
@@ -1268,11 +1286,14 @@ class Pref_Feeds extends Handler_Protected {
]);
}
- private function calculate_children_count($cat) {
+ /**
+ * @param array<string, mixed> $cat
+ */
+ private function calculate_children_count(array $cat): int {
$c = 0;
foreach ($cat['items'] ?? [] as $child) {
- if ($child['type'] ?? '' == 'category') {
+ if (($child['type'] ?? '') == 'category') {
$c += $this->calculate_children_count($child);
} else {
$c += 1;
diff --git a/classes/pref/filters.php b/classes/pref/filters.php
index 29d309dbb..04178f1a6 100755
--- a/classes/pref/filters.php
+++ b/classes/pref/filters.php
@@ -1,20 +1,28 @@
<?php
class Pref_Filters extends Handler_Protected {
- function csrf_ignore($method) {
+ const ACTION_TAG = 4;
+ const ACTION_SCORE = 6;
+ const ACTION_LABEL = 7;
+ const ACTION_PLUGIN = 9;
+ const ACTION_REMOVE_TAG = 10;
+
+ const PARAM_ACTIONS = [self::ACTION_TAG, self::ACTION_SCORE,
+ self::ACTION_LABEL, self::ACTION_PLUGIN, self::ACTION_REMOVE_TAG];
+
+ function csrf_ignore(string $method): bool {
$csrf_ignored = array("index", "getfiltertree", "savefilterorder");
return array_search($method, $csrf_ignored) !== false;
}
- function filtersortreset() {
+ function filtersortreset(): void {
$sth = $this->pdo->prepare("UPDATE ttrss_filters2
SET order_id = 0 WHERE owner_uid = ?");
$sth->execute([$_SESSION['uid']]);
- return;
}
- function savefilterorder() {
+ function savefilterorder(): void {
$data = json_decode($_POST['payload'], true);
#file_put_contents("/tmp/saveorder.json", clean($_POST['payload']));
@@ -40,11 +48,9 @@ class Pref_Filters extends Handler_Protected {
}
}
}
-
- return;
}
- function testFilterDo() {
+ function testFilterDo(): void {
$offset = (int) clean($_REQUEST["offset"]);
$limit = (int) clean($_REQUEST["limit"]);
@@ -59,7 +65,9 @@ class Pref_Filters extends Handler_Protected {
$res = $this->pdo->query("SELECT id,name FROM ttrss_filter_types");
- $filter_types = array();
+ /** @var array<int, string> */
+ $filter_types = [];
+
while ($line = $res->fetch()) {
$filter_types[$line["id"]] = $line["name"];
}
@@ -67,7 +75,10 @@ class Pref_Filters extends Handler_Protected {
$scope_qparts = array();
$rctr = 0;
+
+ /** @var string $r */
foreach (clean($_REQUEST["rule"]) AS $r) {
+ /** @var array{'reg_exp': string, 'filter_type': int, 'feed_id': array<int, int|string>, 'name': string}|null */
$rule = json_decode($r, true);
if ($rule && $rctr < 5) {
@@ -75,19 +86,21 @@ class Pref_Filters extends Handler_Protected {
unset($rule["filter_type"]);
$scope_inner_qparts = [];
+
+ /** @var int|string $feed_id may be a category string (e.g. 'CAT:7') or feed ID int */
foreach ($rule["feed_id"] as $feed_id) {
- if (strpos($feed_id, "CAT:") === 0) {
- $cat_id = (int) substr($feed_id, 4);
- array_push($scope_inner_qparts, "cat_id = " . $this->pdo->quote($cat_id));
- } else if ($feed_id > 0) {
- array_push($scope_inner_qparts, "feed_id = " . $this->pdo->quote($feed_id));
- }
- }
+ if (strpos("$feed_id", "CAT:") === 0) {
+ $cat_id = (int) substr("$feed_id", 4);
+ array_push($scope_inner_qparts, "cat_id = " . $cat_id);
+ } else if (is_numeric($feed_id) && $feed_id > 0) {
+ array_push($scope_inner_qparts, "feed_id = " . (int)$feed_id);
+ }
+ }
- if (count($scope_inner_qparts) > 0) {
- array_push($scope_qparts, "(" . implode(" OR ", $scope_inner_qparts) . ")");
- }
+ if (count($scope_inner_qparts) > 0) {
+ array_push($scope_qparts, "(" . implode(" OR ", $scope_inner_qparts) . ")");
+ }
array_push($filter["rules"], $rule);
@@ -162,7 +175,7 @@ class Pref_Filters extends Handler_Protected {
print json_encode($rv);
}
- private function _get_rules_list($filter_id) {
+ private function _get_rules_list(int $filter_id): string {
$sth = $this->pdo->prepare("SELECT reg_exp,
inverse,
match_on,
@@ -203,7 +216,7 @@ class Pref_Filters extends Handler_Protected {
} else {
$where = $line["cat_filter"] ?
- Feeds::_get_cat_title($line["cat_id"]) :
+ Feeds::_get_cat_title($line["cat_id"] ?? 0) :
($line["feed_id"] ?
Feeds::_get_title($line["feed_id"]) : __("All feeds"));
}
@@ -222,7 +235,7 @@ class Pref_Filters extends Handler_Protected {
return $rv;
}
- function getfiltertree() {
+ function getfiltertree(): void {
$root = array();
$root['id'] = 'root';
$root['name'] = __('Filters');
@@ -270,7 +283,7 @@ class Pref_Filters extends Handler_Protected {
}
}
- if ($line['action_id'] == 7) {
+ if ($line['action_id'] == self::ACTION_LABEL) {
$label_sth = $this->pdo->prepare("SELECT fg_color, bg_color
FROM ttrss_labels2 WHERE caption = ? AND
owner_uid = ?");
@@ -307,10 +320,9 @@ class Pref_Filters extends Handler_Protected {
$fl['items'] = array($root);
print json_encode($fl);
- return;
}
- function edit() {
+ function edit(): void {
$filter_id = (int) clean($_REQUEST["id"] ?? 0);
@@ -406,7 +418,10 @@ class Pref_Filters extends Handler_Protected {
}
}
- private function _get_rule_name($rule) {
+ /**
+ * @param array<string, mixed>|null $rule
+ */
+ private function _get_rule_name(?array $rule = null): string {
if (!$rule) $rule = json_decode(clean($_REQUEST["rule"]), true);
$feeds = $rule["feed_id"];
@@ -446,11 +461,18 @@ class Pref_Filters extends Handler_Protected {
"<span class='field'>$filter_type</span>", "<span class='feed'>$feed</span>", isset($rule["inverse"]) ? __("(inverse)") : "") . "</span>";
}
- function printRuleName() {
+ function printRuleName(): void {
print $this->_get_rule_name(json_decode(clean($_REQUEST["rule"]), true));
}
- private function _get_action_name($action) {
+ /**
+ * @param array<string, mixed>|null $action
+ */
+ private function _get_action_name(?array $action = null): string {
+ if (!$action) {
+ return "";
+ }
+
$sth = $this->pdo->prepare("SELECT description FROM
ttrss_filter_actions WHERE id = ?");
$sth->execute([(int)$action["action_id"]]);
@@ -461,11 +483,7 @@ class Pref_Filters extends Handler_Protected {
$title = __($row["description"]);
- if ($action["action_id"] == 4 || $action["action_id"] == 6 ||
- $action["action_id"] == 7)
- $title .= ": " . $action["action_param"];
-
- if ($action["action_id"] == 9) {
+ if ($action["action_id"] == self::ACTION_PLUGIN) {
list ($pfclass, $pfaction) = explode(":", $action["action_param"]);
$filter_actions = PluginHost::getInstance()->get_filter_actions();
@@ -478,18 +496,20 @@ class Pref_Filters extends Handler_Protected {
}
}
}
+ } else if (in_array($action["action_id"], self::PARAM_ACTIONS)) {
+ $title .= ": " . $action["action_param"];
}
}
return $title;
}
- function printActionName() {
- print $this->_get_action_name(json_decode(clean($_REQUEST["action"]), true));
+ function printActionName(): void {
+ print $this->_get_action_name(json_decode(clean($_REQUEST["action"] ?? ""), true));
}
- function editSave() {
- $filter_id = clean($_REQUEST["id"]);
+ function editSave(): void {
+ $filter_id = (int) clean($_REQUEST["id"]);
$enabled = checkbox_to_sql_bool(clean($_REQUEST["enabled"] ?? false));
$match_any_rule = checkbox_to_sql_bool(clean($_REQUEST["match_any_rule"] ?? false));
$inverse = checkbox_to_sql_bool(clean($_REQUEST["inverse"] ?? false));
@@ -510,7 +530,7 @@ class Pref_Filters extends Handler_Protected {
$this->pdo->commit();
}
- function remove() {
+ function remove(): void {
$ids = explode(",", clean($_REQUEST["ids"]));
$ids_qmarks = arr_qmarks($ids);
@@ -520,7 +540,7 @@ class Pref_Filters extends Handler_Protected {
$sth->execute(array_merge($ids, [$_SESSION['uid']]));
}
- private function _save_rules_and_actions($filter_id) {
+ private function _save_rules_and_actions(int $filter_id): void {
$sth = $this->pdo->prepare("DELETE FROM ttrss_filters2_rules WHERE filter_id = ?");
$sth->execute([$filter_id]);
@@ -583,21 +603,26 @@ class Pref_Filters extends Handler_Protected {
$action_param = $action["action_param"];
$action_param_label = $action["action_param_label"];
- if ($action_id == 7) {
+ if ($action_id == self::ACTION_LABEL) {
$action_param = $action_param_label;
}
- if ($action_id == 6) {
+ if ($action_id == self::ACTION_SCORE) {
$action_param = (int)str_replace("+", "", $action_param);
}
+ if (in_array($action_id, [self::ACTION_TAG, self::ACTION_REMOVE_TAG])) {
+ $action_param = implode(", ", FeedItem_Common::normalize_categories(
+ explode(",", $action_param)));
+ }
+
$asth->execute([$filter_id, $action_id, $action_param]);
}
}
}
}
- function add () {
+ function add(): void {
$enabled = checkbox_to_sql_bool(clean($_REQUEST["enabled"] ?? false));
$match_any_rule = checkbox_to_sql_bool(clean($_REQUEST["match_any_rule"] ?? false));
$title = clean($_REQUEST["title"]);
@@ -625,7 +650,7 @@ class Pref_Filters extends Handler_Protected {
$this->pdo->commit();
}
- function index() {
+ function index(): void {
if (array_key_exists("search", $_REQUEST)) {
$filter_search = clean($_REQUEST["search"]);
$_SESSION["prefs_filter_search"] = $filter_search;
@@ -691,7 +716,8 @@ class Pref_Filters extends Handler_Protected {
<?php
}
- function editrule() {
+ function editrule(): void {
+ /** @var array<int, int|string> */
$feed_ids = explode(",", clean($_REQUEST["ids"]));
print json_encode([
@@ -699,7 +725,10 @@ class Pref_Filters extends Handler_Protected {
]);
}
- private function _get_name($id) {
+ /**
+ * @return array<int, string>
+ */
+ private function _get_name(int $id): array {
$sth = $this->pdo->prepare(
"SELECT title,match_any_rule,f.inverse AS inverse,COUNT(DISTINCT r.id) AS num_rules,COUNT(DISTINCT a.id) AS num_actions
@@ -745,8 +774,9 @@ class Pref_Filters extends Handler_Protected {
return [];
}
- function join() {
- $ids = explode(",", clean($_REQUEST["ids"]));
+ function join(): void {
+ /** @var array<int, int> */
+ $ids = array_map("intval", explode(",", clean($_REQUEST["ids"])));
if (count($ids) > 1) {
$base_id = array_shift($ids);
@@ -775,7 +805,7 @@ class Pref_Filters extends Handler_Protected {
}
}
- private function _optimize($id) {
+ private function _optimize(int $id): void {
$this->pdo->beginTransaction();
@@ -830,9 +860,11 @@ class Pref_Filters extends Handler_Protected {
$this->pdo->commit();
}
- private function _feed_multi_select($id, $default_ids = [],
- $attributes = "", $include_all_feeds = true,
- $root_id = null, $nest_level = 0) {
+ /**
+ * @param array<int, int|string> $default_ids
+ */
+ private function _feed_multi_select(string $id, array $default_ids = [], string $attributes = "",
+ bool $include_all_feeds = true, ?int $root_id = null, int $nest_level = 0): string {
$pdo = Db::pdo();
diff --git a/classes/pref/labels.php b/classes/pref/labels.php
index 2cdb919ce..a50a85a66 100644
--- a/classes/pref/labels.php
+++ b/classes/pref/labels.php
@@ -1,13 +1,13 @@
<?php
class Pref_Labels extends Handler_Protected {
- function csrf_ignore($method) {
+ function csrf_ignore(string $method): bool {
$csrf_ignored = array("index", "getlabeltree");
return array_search($method, $csrf_ignored) !== false;
}
- function edit() {
+ function edit(): void {
$label = ORM::for_table('ttrss_labels2')
->where('owner_uid', $_SESSION['uid'])
->find_one($_REQUEST['id']);
@@ -17,7 +17,7 @@ class Pref_Labels extends Handler_Protected {
}
}
- function getlabeltree() {
+ function getlabeltree(): void {
$root = array();
$root['id'] = 'root';
$root['name'] = __('Labels');
@@ -48,10 +48,9 @@ class Pref_Labels extends Handler_Protected {
$fl['items'] = array($root);
print json_encode($fl);
- return;
}
- function colorset() {
+ function colorset(): void {
$kind = clean($_REQUEST["kind"]);
$ids = explode(',', clean($_REQUEST["ids"]));
$color = clean($_REQUEST["color"]);
@@ -84,7 +83,7 @@ class Pref_Labels extends Handler_Protected {
}
}
- function colorreset() {
+ function colorreset(): void {
$ids = explode(',', clean($_REQUEST["ids"]));
foreach ($ids as $id) {
@@ -101,7 +100,7 @@ class Pref_Labels extends Handler_Protected {
}
}
- function save() {
+ function save(): void {
$id = clean($_REQUEST["id"]);
$caption = clean($_REQUEST["caption"]);
@@ -148,9 +147,9 @@ class Pref_Labels extends Handler_Protected {
}
- function remove() {
-
- $ids = explode(",", clean($_REQUEST["ids"]));
+ function remove(): void {
+ /** @var array<int, int> */
+ $ids = array_map("intval", explode(",", clean($_REQUEST["ids"])));
foreach ($ids as $id) {
Labels::remove($id, $_SESSION["uid"]);
@@ -158,9 +157,9 @@ class Pref_Labels extends Handler_Protected {
}
- function add() {
+ function add(): void {
$caption = clean($_REQUEST["caption"]);
- $output = clean($_REQUEST["output"]);
+ $output = clean($_REQUEST["output"] ?? false);
if ($caption) {
if (Labels::create($caption)) {
@@ -171,7 +170,7 @@ class Pref_Labels extends Handler_Protected {
}
}
- function index() {
+ function index(): void {
?>
<div dojoType='dijit.layout.BorderContainer' gutters='false'>
<div style='padding : 0px' dojoType='dijit.layout.ContentPane' region='top'>
diff --git a/classes/pref/prefs.php b/classes/pref/prefs.php
index cb666e945..2d72a7732 100644
--- a/classes/pref/prefs.php
+++ b/classes/pref/prefs.php
@@ -2,12 +2,21 @@
use chillerlan\QRCode;
class Pref_Prefs extends Handler_Protected {
-
+ // TODO: class properties can be switched to PHP typing if/when the minimum PHP_VERSION is raised to 7.4.0+
+ /** @var array<Prefs::*, array<int, string>> */
private $pref_help = [];
+
+ /** @var array<string, array<int, string>> pref items are Prefs::*|Pref_Prefs::BLOCK_SEPARATOR (PHPStan was complaining) */
private $pref_item_map = [];
+
+ /** @var array<string, string> */
private $pref_help_bottom = [];
+
+ /** @var array<int, string> */
private $pref_blacklist = [];
+ private const BLOCK_SEPARATOR = 'BLOCK_SEPARATOR';
+
const PI_RES_ALREADY_INSTALLED = "PI_RES_ALREADY_INSTALLED";
const PI_RES_SUCCESS = "PI_RES_SUCCESS";
const PI_ERR_NO_CLASS = "PI_ERR_NO_CLASS";
@@ -17,7 +26,8 @@ class Pref_Prefs extends Handler_Protected {
const PI_ERR_PLUGIN_NOT_FOUND = "PI_ERR_PLUGIN_NOT_FOUND";
const PI_ERR_NO_WORKDIR = "PI_ERR_NO_WORKDIR";
- function csrf_ignore($method) {
+ /** @param string $method */
+ function csrf_ignore(string $method) : bool {
$csrf_ignored = array("index", "updateself", "otpqrcode");
return array_search($method, $csrf_ignored) !== false;
@@ -30,35 +40,35 @@ class Pref_Prefs extends Handler_Protected {
__('General') => [
Prefs::USER_LANGUAGE,
Prefs::USER_TIMEZONE,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::USER_CSS_THEME,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::ENABLE_API_ACCESS,
],
__('Feeds') => [
Prefs::DEFAULT_UPDATE_INTERVAL,
Prefs::FRESH_ARTICLE_MAX_AGE,
Prefs::DEFAULT_SEARCH_LANGUAGE,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::ENABLE_FEED_CATS,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::CONFIRM_FEED_CATCHUP,
Prefs::ON_CATCHUP_SHOW_NEXT_FEED,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::HIDE_READ_FEEDS,
Prefs::HIDE_READ_SHOWS_SPECIAL,
],
__('Articles') => [
Prefs::PURGE_OLD_DAYS,
Prefs::PURGE_UNREAD_ARTICLES,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::COMBINED_DISPLAY_MODE,
Prefs::CDM_EXPANDED,
Prefs::CDM_ENABLE_GRID,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::CDM_AUTO_CATCHUP,
Prefs::VFEED_GROUP_BY_FEED,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::SHOW_CONTENT_PREVIEW,
Prefs::STRIP_IMAGES,
],
@@ -69,12 +79,12 @@ class Pref_Prefs extends Handler_Protected {
],
__('Advanced') => [
Prefs::BLACKLISTED_TAGS,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::LONG_DATE_FORMAT,
Prefs::SHORT_DATE_FORMAT,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::SSL_CERT_SERIAL,
- 'BLOCK_SEPARATOR',
+ self::BLOCK_SEPARATOR,
Prefs::DISABLE_CONDITIONAL_COUNTERS,
Prefs::HEADLINES_NO_DISTINCT,
],
@@ -127,7 +137,7 @@ class Pref_Prefs extends Handler_Protected {
];
}
- function changepassword() {
+ function changepassword(): void {
if (Config::get(Config::FORBID_PASSWORD_CHANGES)) {
print "ERROR: ".format_error("Access forbidden.");
@@ -173,7 +183,7 @@ class Pref_Prefs extends Handler_Protected {
}
}
- function saveconfig() {
+ function saveconfig(): void {
$boolean_prefs = explode(",", clean($_POST["boolean_prefs"]));
foreach ($boolean_prefs as $pref) {
@@ -223,7 +233,7 @@ class Pref_Prefs extends Handler_Protected {
}
}
- function changePersonalData() {
+ function changePersonalData(): void {
$user = ORM::for_table('ttrss_users')->find_one($_SESSION['uid']);
$new_email = clean($_POST['email']);
@@ -264,13 +274,13 @@ class Pref_Prefs extends Handler_Protected {
print __("Your personal data has been saved.");
}
- function resetconfig() {
+ function resetconfig(): void {
Prefs::reset($_SESSION["uid"], $_SESSION["profile"]);
print "PREFS_NEED_RELOAD";
}
- private function index_auth_personal() {
+ private function index_auth_personal(): void {
$user = ORM::for_table('ttrss_users')->find_one($_SESSION['uid']);
@@ -310,7 +320,7 @@ class Pref_Prefs extends Handler_Protected {
<?php
}
- private function index_auth_password() {
+ private function index_auth_password(): void {
if ($_SESSION["auth_module"]) {
$authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]);
} else {
@@ -385,7 +395,7 @@ class Pref_Prefs extends Handler_Protected {
}
}
- private function index_auth_app_passwords() {
+ private function index_auth_app_passwords(): void {
print_notice("Separate passwords used for API clients. Required if you enable OTP.");
?>
@@ -409,7 +419,7 @@ class Pref_Prefs extends Handler_Protected {
<?php
}
- private function index_auth_2fa() {
+ private function index_auth_2fa(): void {
$otp_enabled = UserHelper::is_otp_enabled($_SESSION["uid"]);
if ($_SESSION["auth_module"] == "auth_internal") {
@@ -515,7 +525,7 @@ class Pref_Prefs extends Handler_Protected {
}
}
- function index_auth() {
+ function index_auth(): void {
?>
<div dojoType='dijit.layout.TabContainer'>
<div dojoType='dijit.layout.ContentPane' title="<?= __('Personal data') ?>">
@@ -534,35 +544,38 @@ class Pref_Prefs extends Handler_Protected {
<?php
}
- private function index_prefs_list() {
+ private function index_prefs_list(): void {
$profile = $_SESSION["profile"] ?? null;
if ($profile) {
print_notice(__("Some preferences are only available in default profile."));
}
+ /** @var array<string, array{'type_hint': Config::T_*, 'value': bool|int|string, 'help_text': string, 'short_desc': string}> */
$prefs_available = [];
+
+ /** @var array<int, string> */
$listed_boolean_prefs = [];
- foreach (Prefs::get_all($_SESSION["uid"], $profile) as $line) {
+ foreach (Prefs::get_all($_SESSION["uid"], $profile) as $pref) {
- if (in_array($line["pref_name"], $this->pref_blacklist)) {
+ if (in_array($pref["pref_name"], $this->pref_blacklist)) {
continue;
}
- if ($profile && in_array($line["pref_name"], Prefs::_PROFILE_BLACKLIST)) {
+ if ($profile && in_array($pref["pref_name"], Prefs::_PROFILE_BLACKLIST)) {
continue;
}
- $pref_name = $line["pref_name"];
+ $pref_name = $pref["pref_name"];
$short_desc = $this->_get_short_desc($pref_name);
if (!$short_desc)
continue;
$prefs_available[$pref_name] = [
- 'type_hint' => $line['type_hint'],
- 'value' => $line['value'],
+ 'type_hint' => $pref['type_hint'],
+ 'value' => $pref['value'],
'help_text' => $this->_get_help_text($pref_name),
'short_desc' => $short_desc
];
@@ -574,12 +587,12 @@ class Pref_Prefs extends Handler_Protected {
foreach ($this->pref_item_map[$section] as $pref_name) {
- if ($pref_name == 'BLOCK_SEPARATOR' && !$profile) {
+ if ($pref_name == self::BLOCK_SEPARATOR && !$profile) {
print "<hr/>";
continue;
}
- if ($pref_name == "DEFAULT_SEARCH_LANGUAGE" && Config::get(Config::DB_TYPE) != "pgsql") {
+ if ($pref_name == Prefs::DEFAULT_SEARCH_LANGUAGE && Config::get(Config::DB_TYPE) != "pgsql") {
continue;
}
@@ -596,17 +609,17 @@ class Pref_Prefs extends Handler_Protected {
$value = $item['value'];
$type_hint = $item['type_hint'];
- if ($pref_name == "USER_LANGUAGE") {
+ if ($pref_name == Prefs::USER_LANGUAGE) {
print \Controls\select_hash($pref_name, $value, get_translations(),
["style" => 'width : 220px; margin : 0px']);
- } else if ($pref_name == "USER_TIMEZONE") {
+ } else if ($pref_name == Prefs::USER_TIMEZONE) {
$timezones = explode("\n", file_get_contents("lib/timezones.txt"));
print \Controls\select_tag($pref_name, $value, $timezones, ["dojoType" => "dijit.form.FilteringSelect"]);
- } else if ($pref_name == "BLACKLISTED_TAGS") { # TODO: other possible <textarea> prefs go here
+ } else if ($pref_name == Prefs::BLACKLISTED_TAGS) { # TODO: other possible <textarea> prefs go here
print "<div>";
@@ -618,7 +631,7 @@ class Pref_Prefs extends Handler_Protected {
print "</div>";
- } else if ($pref_name == "USER_CSS_THEME") {
+ } else if ($pref_name == Prefs::USER_CSS_THEME) {
$theme_files = array_map("basename",
array_merge(glob("themes/*.php"),
@@ -642,13 +655,13 @@ class Pref_Prefs extends Handler_Protected {
<?php
- } else if ($pref_name == "DEFAULT_UPDATE_INTERVAL") {
+ } else if ($pref_name == Prefs::DEFAULT_UPDATE_INTERVAL) {
global $update_intervals_nodefault;
print \Controls\select_hash($pref_name, $value, $update_intervals_nodefault);
- } else if ($pref_name == "DEFAULT_SEARCH_LANGUAGE") {
+ } else if ($pref_name == Prefs::DEFAULT_SEARCH_LANGUAGE) {
print \Controls\select_tag($pref_name, $value, Pref_Feeds::get_ts_languages());
@@ -656,7 +669,7 @@ class Pref_Prefs extends Handler_Protected {
array_push($listed_boolean_prefs, $pref_name);
- if ($pref_name == "PURGE_UNREAD_ARTICLES" && Config::get(Config::FORCE_ARTICLE_PURGE) != 0) {
+ if ($pref_name == Prefs::PURGE_UNREAD_ARTICLES && Config::get(Config::FORCE_ARTICLE_PURGE) != 0) {
$is_disabled = true;
$is_checked = true;
} else {
@@ -672,10 +685,10 @@ class Pref_Prefs extends Handler_Protected {
['onclick' => 'Helpers.Digest.preview()', 'style' => 'margin-left : 10px']);
}
- } else if (in_array($pref_name, ['FRESH_ARTICLE_MAX_AGE',
- 'PURGE_OLD_DAYS', 'LONG_DATE_FORMAT', 'SHORT_DATE_FORMAT'])) {
+ } else if (in_array($pref_name, [Prefs::FRESH_ARTICLE_MAX_AGE,
+ Prefs::PURGE_OLD_DAYS, Prefs::LONG_DATE_FORMAT, Prefs::SHORT_DATE_FORMAT])) {
- if ($pref_name == "PURGE_OLD_DAYS" && Config::get(Config::FORCE_ARTICLE_PURGE) != 0) {
+ if ($pref_name == Prefs::PURGE_OLD_DAYS && Config::get(Config::FORCE_ARTICLE_PURGE) != 0) {
$attributes = ["disabled" => true, "required" => true];
$value = Config::get(Config::FORCE_ARTICLE_PURGE);
} else {
@@ -687,7 +700,7 @@ class Pref_Prefs extends Handler_Protected {
else
print \Controls\input_tag($pref_name, $value, "text", $attributes);
- } else if ($pref_name == "SSL_CERT_SERIAL") {
+ } else if ($pref_name == Prefs::SSL_CERT_SERIAL) {
print \Controls\input_tag($pref_name, $value, "text", ["readonly" => true], "SSL_CERT_SERIAL");
@@ -727,7 +740,7 @@ class Pref_Prefs extends Handler_Protected {
print \Controls\hidden_tag("boolean_prefs", htmlspecialchars(join(",", $listed_boolean_prefs)));
}
- private function index_prefs() {
+ private function index_prefs(): void {
?>
<form dojoType='dijit.form.Form' id='changeSettingsForm'>
<?= \Controls\hidden_tag("op", "pref-prefs") ?>
@@ -783,7 +796,7 @@ class Pref_Prefs extends Handler_Protected {
<?php
}
- function getPluginsList() {
+ function getPluginsList(): void {
$system_enabled = array_map("trim", explode(",", (string)Config::get(Config::PLUGINS)));
$user_enabled = array_map("trim", explode(",", get_pref(Prefs::_ENABLED_PLUGINS)));
@@ -813,10 +826,10 @@ class Pref_Prefs extends Handler_Protected {
usort($rv, function($a, $b) { return strcmp($a["name"], $b["name"]); });
- print json_encode(['plugins' => $rv, 'is_admin' => $_SESSION['access_level'] >= 10]);
+ print json_encode(['plugins' => $rv, 'is_admin' => $_SESSION['access_level'] >= UserHelper::ACCESS_LEVEL_ADMIN]);
}
- function index_plugins() {
+ function index_plugins(): void {
?>
<form dojoType="dijit.form.Form" id="changePluginsForm">
@@ -890,7 +903,7 @@ class Pref_Prefs extends Handler_Protected {
<?= \Controls\button_tag(\Controls\icon("refresh"), "", ["title" => __("Reload"), "onclick" => "Helpers.Plugins.reload()"]) ?>
- <?php if ($_SESSION["access_level"] >= 10) { ?>
+ <?php if ($_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN) { ?>
<?php if (Config::get(Config::CHECK_FOR_UPDATES) && Config::get(Config::CHECK_FOR_PLUGIN_UPDATES)) { ?>
<button class='alt-warning' dojoType='dijit.form.Button' onclick="Helpers.Plugins.update()">
@@ -912,7 +925,7 @@ class Pref_Prefs extends Handler_Protected {
<?php
}
- function index() {
+ function index(): void {
?>
<div dojoType='dijit.layout.AccordionContainer' region='center'>
<div dojoType='dijit.layout.AccordionPane' title="<i class='material-icons'>person</i> <?= __('Personal data / Authentication')?>">
@@ -937,7 +950,7 @@ class Pref_Prefs extends Handler_Protected {
<?php
}
- function _get_otp_qrcode_img() {
+ function _get_otp_qrcode_img(): ?string {
$secret = UserHelper::get_otp_secret($_SESSION["uid"]);
$login = UserHelper::get_login_by_id($_SESSION["uid"]);
@@ -949,15 +962,16 @@ class Pref_Prefs extends Handler_Protected {
return $qrcode->render($otpurl);
}
- return false;
+ return null;
}
- function otpenable() {
+ function otpenable(): void {
$password = clean($_REQUEST["password"]);
$otp_check = clean($_REQUEST["otp"]);
$authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]);
+ /** @var Auth_Internal|false $authenticator -- this is only here to make check_password() visible to static analyzer */
if ($authenticator->check_password($_SESSION["uid"], $password)) {
if (UserHelper::enable_otp($_SESSION["uid"], $otp_check)) {
print "OK";
@@ -969,9 +983,10 @@ class Pref_Prefs extends Handler_Protected {
}
}
- function otpdisable() {
+ function otpdisable(): void {
$password = clean($_REQUEST["password"]);
+ /** @var Auth_Internal|false $authenticator -- this is only here to make check_password() visible to static analyzer */
$authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]);
if ($authenticator->check_password($_SESSION["uid"], $password)) {
@@ -1008,38 +1023,42 @@ class Pref_Prefs extends Handler_Protected {
}
- function setplugins() {
+ function setplugins(): void {
$plugins = array_filter($_REQUEST["plugins"], 'clean') ?? [];
set_pref(Prefs::_ENABLED_PLUGINS, implode(",", $plugins));
}
- function _get_plugin_version(Plugin $plugin) {
+ function _get_plugin_version(Plugin $plugin): string {
$about = $plugin->about();
if (!empty($about[0])) {
return T_sprintf("v%.2f, by %s", $about[0], $about[2]);
- } else {
- $ref = new ReflectionClass(get_class($plugin));
+ }
- $plugin_dir = dirname($ref->getFileName());
+ $ref = new ReflectionClass(get_class($plugin));
- if (basename($plugin_dir) == "plugins") {
- return "";
- }
+ $plugin_dir = dirname($ref->getFileName());
- if (is_dir("$plugin_dir/.git")) {
- $ver = Config::get_version_from_git($plugin_dir);
+ if (basename($plugin_dir) == "plugins") {
+ return "";
+ }
- return $ver["status"] == 0 ? T_sprintf("v%s, by %s", $ver["version"], $about[2]) : $ver["version"];
- }
+ if (is_dir("$plugin_dir/.git")) {
+ $ver = Config::get_version_from_git($plugin_dir);
+
+ return $ver["status"] == 0 ? T_sprintf("v%s, by %s", $ver["version"], $about[2]) : $ver["version"];
}
+
+ return "";
}
- static function _get_updated_plugins() {
+ /**
+ * @return array<int, array{'plugin': string, 'rv': array{'stdout': false|string, 'stderr': false|string, 'git_status': int, 'need_update': bool}|null}>
+ */
+ static function _get_updated_plugins(): array {
$root_dir = dirname(dirname(__DIR__)); # we're in classes/pref/
$plugin_dirs = array_filter(glob("$root_dir/plugins.local/*"), "is_dir");
-
$rv = [];
foreach ($plugin_dirs as $dir) {
@@ -1057,7 +1076,10 @@ class Pref_Prefs extends Handler_Protected {
return $rv;
}
- private static function _plugin_needs_update($root_dir, $plugin_name) {
+ /**
+ * @return array{'stdout': false|string, 'stderr': false|string, 'git_status': int, 'need_update': bool}|null
+ */
+ private static function _plugin_needs_update(string $root_dir, string $plugin_name): ?array {
$plugin_dir = "$root_dir/plugins.local/" . basename($plugin_name);
$rv = null;
@@ -1086,7 +1108,10 @@ class Pref_Prefs extends Handler_Protected {
}
- private function _update_plugin($root_dir, $plugin_name) {
+ /**
+ * @return array{'stdout': false|string, 'stderr': false|string, 'git_status': int}
+ */
+ private function _update_plugin(string $root_dir, string $plugin_name): array {
$plugin_dir = "$root_dir/plugins.local/" . basename($plugin_name);
$rv = [];
@@ -1112,7 +1137,7 @@ class Pref_Prefs extends Handler_Protected {
}
// https://gist.github.com/mindplay-dk/a4aad91f5a4f1283a5e2#gistcomment-2036828
- private function _recursive_rmdir(string $dir, bool $keep_root = false) {
+ private function _recursive_rmdir(string $dir, bool $keep_root = false): bool {
// Handle bad arguments.
if (empty($dir) || !file_exists($dir)) {
return true; // No such file/dir$dir exists.
@@ -1137,7 +1162,7 @@ class Pref_Prefs extends Handler_Protected {
}
// https://stackoverflow.com/questions/7153000/get-class-name-from-file
- private function _get_class_name_from_file($file) {
+ private function _get_class_name_from_file(string $file): string {
$tokens = token_get_all(file_get_contents($file));
for ($i = 0; $i < count($tokens); $i++) {
@@ -1149,10 +1174,12 @@ class Pref_Prefs extends Handler_Protected {
}
}
}
+
+ return "";
}
- function uninstallPlugin() {
- if ($_SESSION["access_level"] >= 10) {
+ function uninstallPlugin(): void {
+ if ($_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN) {
$plugin_name = basename(clean($_REQUEST['plugin']));
$status = 0;
@@ -1166,8 +1193,8 @@ class Pref_Prefs extends Handler_Protected {
}
}
- function installPlugin() {
- if ($_SESSION["access_level"] >= 10 && Config::get(Config::ENABLE_PLUGIN_INSTALLER)) {
+ function installPlugin(): void {
+ if ($_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN && Config::get(Config::ENABLE_PLUGIN_INSTALLER)) {
$plugin_name = basename(clean($_REQUEST['plugin']));
$all_plugins = $this->_get_available_plugins();
$plugin_dir = dirname(dirname(__DIR__)) . "/plugins.local";
@@ -1251,47 +1278,59 @@ class Pref_Prefs extends Handler_Protected {
}
}
- private function _get_available_plugins() {
- if ($_SESSION["access_level"] >= 10 && Config::get(Config::ENABLE_PLUGIN_INSTALLER)) {
- return json_decode(UrlHelper::fetch(['url' => 'https://tt-rss.org/plugins.json']), true);
+ /**
+ * @return array<int, array{'name': string, 'description': string, 'topics': array<int, string>, 'html_url': string, 'clone_url': string, 'last_update': string}>
+ */
+ private function _get_available_plugins(): array {
+ if ($_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN && Config::get(Config::ENABLE_PLUGIN_INSTALLER)) {
+ $content = json_decode(UrlHelper::fetch(['url' => 'https://tt-rss.org/plugins.json']), true);
+
+ if ($content) {
+ return $content;
+ }
}
+
+ return [];
}
- function getAvailablePlugins() {
- if ($_SESSION["access_level"] >= 10) {
+
+ function getAvailablePlugins(): void {
+ if ($_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN) {
print json_encode($this->_get_available_plugins());
+ } else {
+ print "[]";
}
}
- function checkForPluginUpdates() {
- if ($_SESSION["access_level"] >= 10 && Config::get(Config::CHECK_FOR_UPDATES) && Config::get(Config::CHECK_FOR_PLUGIN_UPDATES)) {
+ function checkForPluginUpdates(): void {
+ if ($_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN && Config::get(Config::CHECK_FOR_UPDATES) && Config::get(Config::CHECK_FOR_PLUGIN_UPDATES)) {
$plugin_name = $_REQUEST["name"] ?? "";
-
$root_dir = dirname(dirname(__DIR__)); # we're in classes/pref/
- if (!empty($plugin_name)) {
- $rv = [["plugin" => $plugin_name, "rv" => self::_plugin_needs_update($root_dir, $plugin_name)]];
- } else {
- $rv = self::_get_updated_plugins();
- }
+ $rv = empty($plugin_name) ? self::_get_updated_plugins() : [
+ ["plugin" => $plugin_name, "rv" => self::_plugin_needs_update($root_dir, $plugin_name)],
+ ];
print json_encode($rv);
}
}
- function updateLocalPlugins() {
- if ($_SESSION["access_level"] >= 10) {
+ function updateLocalPlugins(): void {
+ if ($_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN) {
$plugins = explode(",", $_REQUEST["plugins"] ?? "");
+ if ($plugins !== false) {
+ $plugins = array_filter($plugins, 'strlen');
+ }
+
# we're in classes/pref/
$root_dir = dirname(dirname(__DIR__));
$rv = [];
- if (count($plugins) > 0) {
+ if ($plugins) {
foreach ($plugins as $plugin_name) {
array_push($rv, ["plugin" => $plugin_name, "rv" => $this->_update_plugin($root_dir, $plugin_name)]);
}
- // @phpstan-ignore-next-line
} else {
$plugin_dirs = array_filter(glob("$root_dir/plugins.local/*"), "is_dir");
@@ -1301,7 +1340,7 @@ class Pref_Prefs extends Handler_Protected {
$test = self::_plugin_needs_update($root_dir, $plugin_name);
- if (!empty($test["o"]))
+ if (!empty($test["stdout"]))
array_push($rv, ["plugin" => $plugin_name, "rv" => $this->_update_plugin($root_dir, $plugin_name)]);
}
}
@@ -1311,21 +1350,21 @@ class Pref_Prefs extends Handler_Protected {
}
}
- function clearplugindata() {
+ function clearplugindata(): void {
$name = clean($_REQUEST["name"]);
PluginHost::getInstance()->clear_data(PluginHost::getInstance()->get_plugin($name));
}
- function customizeCSS() {
+ function customizeCSS(): void {
$value = get_pref(Prefs::USER_STYLESHEET);
$value = str_replace("<br/>", "\n", $value);
print json_encode(["value" => $value]);
}
- function activateprofile() {
- $id = (int) $_REQUEST['id'] ?? 0;
+ function activateprofile(): void {
+ $id = (int) ($_REQUEST['id'] ?? 0);
$profile = ORM::for_table('ttrss_settings_profiles')
->where('owner_uid', $_SESSION['uid'])
@@ -1338,7 +1377,7 @@ class Pref_Prefs extends Handler_Protected {
}
}
- function cloneprofile() {
+ function cloneprofile(): void {
$old_profile = $_REQUEST["old_profile"] ?? 0;
$new_title = clean($_REQUEST["new_title"]);
@@ -1367,7 +1406,7 @@ class Pref_Prefs extends Handler_Protected {
}
}
- function remprofiles() {
+ function remprofiles(): void {
$ids = $_REQUEST["ids"] ?? [];
ORM::for_table('ttrss_settings_profiles')
@@ -1377,7 +1416,7 @@ class Pref_Prefs extends Handler_Protected {
->delete_many();
}
- function addprofile() {
+ function addprofile(): void {
$title = clean($_REQUEST["title"]);
if ($title) {
@@ -1396,7 +1435,7 @@ class Pref_Prefs extends Handler_Protected {
}
}
- function saveprofile() {
+ function saveprofile(): void {
$id = (int)$_REQUEST["id"];
$title = clean($_REQUEST["value"]);
@@ -1413,7 +1452,7 @@ class Pref_Prefs extends Handler_Protected {
}
// TODO: this maybe needs to be unified with Public::getProfiles()
- function getProfiles() {
+ function getProfiles(): void {
$rv = [];
$profiles = ORM::for_table('ttrss_settings_profiles')
@@ -1442,21 +1481,21 @@ class Pref_Prefs extends Handler_Protected {
print json_encode($rv);
}
- private function _get_short_desc($pref_name) {
+ private function _get_short_desc(string $pref_name): string {
if (isset($this->pref_help[$pref_name][0])) {
return $this->pref_help[$pref_name][0];
}
return "";
}
- private function _get_help_text($pref_name) {
+ private function _get_help_text(string $pref_name): string {
if (isset($this->pref_help[$pref_name][1])) {
return $this->pref_help[$pref_name][1];
}
return "";
}
- private function appPasswordList() {
+ private function appPasswordList(): void {
?>
<div dojoType='fox.Toolbar'>
<div dojoType='fox.form.DropDownButton'>
@@ -1506,7 +1545,7 @@ class Pref_Prefs extends Handler_Protected {
<?php
}
- function deleteAppPasswords() {
+ function deleteAppPasswords(): void {
$passwords = ORM::for_table('ttrss_app_passwords')
->where('owner_uid', $_SESSION['uid'])
->where_in('id', $_REQUEST['ids'] ?? [])
@@ -1515,7 +1554,7 @@ class Pref_Prefs extends Handler_Protected {
$this->appPasswordList();
}
- function generateAppPassword() {
+ function generateAppPassword(): void {
$title = clean($_REQUEST['title']);
$new_password = make_password(16);
$new_salt = UserHelper::get_salt();
@@ -1536,11 +1575,11 @@ class Pref_Prefs extends Handler_Protected {
$this->appPasswordList();
}
- function previewDigest() {
+ function previewDigest(): void {
print json_encode(Digest::prepare_headlines_digest($_SESSION["uid"], 1, 16));
}
- static function _get_ssl_certificate_id() {
+ static function _get_ssl_certificate_id(): string {
if ($_SERVER["REDIRECT_SSL_CLIENT_M_SERIAL"] ?? false) {
return sha1($_SERVER["REDIRECT_SSL_CLIENT_M_SERIAL"] .
$_SERVER["REDIRECT_SSL_CLIENT_V_START"] .
@@ -1556,7 +1595,7 @@ class Pref_Prefs extends Handler_Protected {
return "";
}
- private function format_otp_secret($secret) {
+ private function format_otp_secret(string $secret): string {
return implode(" ", str_split($secret, 4));
}
}
diff --git a/classes/pref/system.php b/classes/pref/system.php
index 8bebcc7ce..806291c72 100644
--- a/classes/pref/system.php
+++ b/classes/pref/system.php
@@ -2,19 +2,19 @@
class Pref_System extends Handler_Administrative {
- private $log_page_limit = 15;
+ private const LOG_PAGE_LIMIT = 15;
- function csrf_ignore($method) {
+ function csrf_ignore(string $method): bool {
$csrf_ignored = array("index");
return array_search($method, $csrf_ignored) !== false;
}
- function clearLog() {
+ function clearLog(): void {
$this->pdo->query("DELETE FROM ttrss_error_log");
}
- function sendTestEmail() {
+ function sendTestEmail(): void {
$mail_address = clean($_REQUEST["mail_address"]);
$mailer = new Mailer();
@@ -28,7 +28,7 @@ class Pref_System extends Handler_Administrative {
print json_encode(['rc' => $rc, 'error' => $mailer->error()]);
}
- function getphpinfo() {
+ function getphpinfo(): void {
ob_start();
phpinfo();
$info = ob_get_contents();
@@ -37,7 +37,7 @@ class Pref_System extends Handler_Administrative {
print preg_replace( '%^.*<body>(.*)</body>.*$%ms','$1', (string)$info);
}
- private function _log_viewer(int $page, int $severity) {
+ private function _log_viewer(int $page, int $severity): void {
$errno_values = [];
switch ($severity) {
@@ -56,8 +56,7 @@ class Pref_System extends Handler_Administrative {
$errno_filter_qpart = "true";
}
- $limit = $this->log_page_limit;
- $offset = $limit * $page;
+ $offset = self::LOG_PAGE_LIMIT * $page;
$sth = $this->pdo->prepare("SELECT
COUNT(id) AS total_pages
@@ -69,7 +68,7 @@ class Pref_System extends Handler_Administrative {
$sth->execute($errno_values);
if ($res = $sth->fetch()) {
- $total_pages = (int)($res["total_pages"] / $limit);
+ $total_pages = (int)($res["total_pages"] / self::LOG_PAGE_LIMIT);
} else {
$total_pages = 0;
}
@@ -134,12 +133,12 @@ class Pref_System extends Handler_Administrative {
$errno_filter_qpart
ORDER BY
ttrss_error_log.id DESC
- LIMIT $limit OFFSET $offset");
+ LIMIT ". self::LOG_PAGE_LIMIT ." OFFSET $offset");
$sth->execute($errno_values);
while ($line = $sth->fetch()) {
- foreach ($line as $k => $v) { $line[$k] = htmlspecialchars($v); }
+ foreach ($line as $k => $v) { $line[$k] = htmlspecialchars($v ?? ''); }
?>
<tr>
<td class='errno'>
@@ -159,7 +158,7 @@ class Pref_System extends Handler_Administrative {
<?php
}
- function index() {
+ function index(): void {
$severity = (int) ($_REQUEST["severity"] ?? E_USER_WARNING);
$page = (int) ($_REQUEST["page"] ?? 0);
diff --git a/classes/pref/users.php b/classes/pref/users.php
index 76a879efd..c48619614 100644
--- a/classes/pref/users.php
+++ b/classes/pref/users.php
@@ -1,10 +1,10 @@
<?php
class Pref_Users extends Handler_Administrative {
- function csrf_ignore($method) {
+ function csrf_ignore(string $method): bool {
return $method == "index";
}
- function edit() {
+ function edit(): void {
$user = ORM::for_table('ttrss_users')
->select_expr("id,login,access_level,email,full_name,otp_enabled")
->find_one((int)$_REQUEST["id"])
@@ -20,7 +20,7 @@ class Pref_Users extends Handler_Administrative {
}
}
- function userdetails() {
+ function userdetails(): void {
$id = (int) clean($_REQUEST["id"]);
$sth = $this->pdo->prepare("SELECT login,
@@ -103,7 +103,7 @@ class Pref_Users extends Handler_Administrative {
}
- function editSave() {
+ function editSave(): void {
$id = (int)$_REQUEST['id'];
$password = clean($_REQUEST["password"]);
$user = ORM::for_table('ttrss_users')->find_one($id);
@@ -132,7 +132,7 @@ class Pref_Users extends Handler_Administrative {
}
}
- function remove() {
+ function remove(): void {
$ids = explode(",", clean($_REQUEST["ids"]));
foreach ($ids as $id) {
@@ -149,7 +149,7 @@ class Pref_Users extends Handler_Administrative {
}
}
- function add() {
+ function add(): void {
$login = clean($_REQUEST["login"]);
if (!$login) return; // no blank usernames
@@ -167,7 +167,7 @@ class Pref_Users extends Handler_Administrative {
$user->created = Db::NOW();
$user->save();
- if ($new_uid = UserHelper::find_user_by_login($login)) {
+ if (!is_null(UserHelper::find_user_by_login($login))) {
print T_sprintf("Added user %s with password %s",
$login, $new_password);
} else {
@@ -178,11 +178,11 @@ class Pref_Users extends Handler_Administrative {
}
}
- function resetPass() {
+ function resetPass(): void {
UserHelper::reset_password(clean($_REQUEST["id"]));
}
- function index() {
+ function index(): void {
global $access_level_names;
diff --git a/classes/prefs.php b/classes/prefs.php
index 85e7c34db..7e6033f4d 100644
--- a/classes/prefs.php
+++ b/classes/prefs.php
@@ -141,7 +141,10 @@ class Prefs {
Prefs::_PREFS_MIGRATED
];
+ /** @var Prefs|null */
private static $instance;
+
+ /** @var array<string, bool|int|string> */
private $cache = [];
/** @var PDO */
@@ -154,10 +157,13 @@ class Prefs {
return self::$instance;
}
- static function is_valid(string $pref_name) {
+ static function is_valid(string $pref_name): bool {
return isset(self::_DEFAULTS[$pref_name]);
}
+ /**
+ * @return bool|int|null|string
+ */
static function get_default(string $pref_name) {
if (self::is_valid($pref_name))
return self::_DEFAULTS[$pref_name][0];
@@ -181,10 +187,16 @@ class Prefs {
//
}
+ /**
+ * @return array<int, array<string, bool|int|null|string>>
+ */
static function get_all(int $owner_uid, int $profile_id = null) {
return self::get_instance()->_get_all($owner_uid, $profile_id);
}
+ /**
+ * @return array<int, array<string, bool|int|null|string>>
+ */
private function _get_all(int $owner_uid, int $profile_id = null) {
$rv = [];
@@ -205,7 +217,7 @@ class Prefs {
return $rv;
}
- private function cache_all(int $owner_uid, $profile_id = null) {
+ private function cache_all(int $owner_uid, ?int $profile_id): void {
if (!$profile_id) $profile_id = null;
// fill cache with defaults
@@ -232,11 +244,17 @@ class Prefs {
}
}
- static function get(string $pref_name, int $owner_uid, int $profile_id = null) {
+ /**
+ * @return bool|int|null|string
+ */
+ static function get(string $pref_name, int $owner_uid, ?int $profile_id) {
return self::get_instance()->_get($pref_name, $owner_uid, $profile_id);
}
- private function _get(string $pref_name, int $owner_uid, int $profile_id = null) {
+ /**
+ * @return bool|int|null|string
+ */
+ private function _get(string $pref_name, int $owner_uid, ?int $profile_id) {
if (isset(self::_DEFAULTS[$pref_name])) {
if (!$profile_id || in_array($pref_name, self::_PROFILE_BLACKLIST)) $profile_id = null;
@@ -274,12 +292,15 @@ class Prefs {
return null;
}
- private function _is_cached(string $pref_name, int $owner_uid, int $profile_id = null) {
+ private function _is_cached(string $pref_name, int $owner_uid, ?int $profile_id): bool {
$cache_key = sprintf("%d/%d/%s", $owner_uid, $profile_id, $pref_name);
return isset($this->cache[$cache_key]);
}
- private function _get_cache(string $pref_name, int $owner_uid, int $profile_id = null) {
+ /**
+ * @return bool|int|null|string
+ */
+ private function _get_cache(string $pref_name, int $owner_uid, ?int $profile_id) {
$cache_key = sprintf("%d/%d/%s", $owner_uid, $profile_id, $pref_name);
if (isset($this->cache[$cache_key]))
@@ -288,17 +309,23 @@ class Prefs {
return null;
}
- private function _set_cache(string $pref_name, $value, int $owner_uid, int $profile_id = null) {
+ /**
+ * @param bool|int|string $value
+ */
+ private function _set_cache(string $pref_name, $value, int $owner_uid, ?int $profile_id): void {
$cache_key = sprintf("%d/%d/%s", $owner_uid, $profile_id, $pref_name);
$this->cache[$cache_key] = $value;
}
- static function set(string $pref_name, $value, int $owner_uid, int $profile_id = null, bool $strip_tags = true) {
+ /**
+ * @param bool|int|string $value
+ */
+ static function set(string $pref_name, $value, int $owner_uid, ?int $profile_id, bool $strip_tags = true): bool {
return self::get_instance()->_set($pref_name, $value, $owner_uid, $profile_id);
}
- private function _delete(string $pref_name, int $owner_uid, int $profile_id = null) {
+ private function _delete(string $pref_name, int $owner_uid, ?int $profile_id): bool {
$sth = $this->pdo->prepare("DELETE FROM ttrss_user_prefs2
WHERE pref_name = :name AND owner_uid = :uid AND
(profile = :profile OR (:profile IS NULL AND profile IS NULL))");
@@ -306,7 +333,10 @@ class Prefs {
return $sth->execute(["uid" => $owner_uid, "profile" => $profile_id, "name" => $pref_name ]);
}
- private function _set(string $pref_name, $value, int $owner_uid, int $profile_id = null, bool $strip_tags = true) {
+ /**
+ * @param bool|int|string $value
+ */
+ private function _set(string $pref_name, $value, int $owner_uid, ?int $profile_id, bool $strip_tags = true): bool {
if (!$profile_id) $profile_id = null;
if ($profile_id && in_array($pref_name, self::_PROFILE_BLACKLIST))
@@ -359,7 +389,7 @@ class Prefs {
return false;
}
- function migrate(int $owner_uid, int $profile_id = null) {
+ function migrate(int $owner_uid, ?int $profile_id): void {
if (get_schema_version() < 141)
return;
@@ -401,7 +431,7 @@ class Prefs {
}
}
- static function reset(int $owner_uid, int $profile_id = null) {
+ static function reset(int $owner_uid, ?int $profile_id): void {
if (!$profile_id) $profile_id = null;
$sth = Db::pdo()->prepare("DELETE FROM ttrss_user_prefs2
diff --git a/classes/rpc.php b/classes/rpc.php
index 23a45d951..dbb54cec5 100755
--- a/classes/rpc.php
+++ b/classes/rpc.php
@@ -1,13 +1,16 @@
<?php
class RPC extends Handler_Protected {
- /*function csrf_ignore($method) {
+ /*function csrf_ignore(string $method): bool {
$csrf_ignored = array("completelabels");
return array_search($method, $csrf_ignored) !== false;
}*/
- private function _translations_as_array() {
+ /**
+ * @return array<string, string>
+ */
+ private function _translations_as_array(): array {
global $text_domains;
@@ -37,7 +40,7 @@ class RPC extends Handler_Protected {
}
- function togglepref() {
+ function togglepref(): void {
$key = clean($_REQUEST["key"]);
set_pref($key, !get_pref($key));
$value = get_pref($key);
@@ -45,7 +48,7 @@ class RPC extends Handler_Protected {
print json_encode(array("param" =>$key, "value" => $value));
}
- function setpref() {
+ function setpref(): void {
// set_pref escapes input, so no need to double escape it here
$key = clean($_REQUEST['key']);
$value = $_REQUEST['value'];
@@ -55,7 +58,7 @@ class RPC extends Handler_Protected {
print json_encode(array("param" =>$key, "value" => $value));
}
- function mark() {
+ function mark(): void {
$mark = clean($_REQUEST["mark"]);
$id = clean($_REQUEST["id"]);
@@ -68,7 +71,7 @@ class RPC extends Handler_Protected {
print json_encode(array("message" => "UPDATE_COUNTERS"));
}
- function delete() {
+ function delete(): void {
$ids = explode(",", clean($_REQUEST["ids"]));
$ids_qmarks = arr_qmarks($ids);
@@ -81,7 +84,7 @@ class RPC extends Handler_Protected {
print json_encode(array("message" => "UPDATE_COUNTERS"));
}
- function publ() {
+ function publ(): void {
$pub = clean($_REQUEST["pub"]);
$id = clean($_REQUEST["id"]);
@@ -94,7 +97,7 @@ class RPC extends Handler_Protected {
print json_encode(array("message" => "UPDATE_COUNTERS"));
}
- function getRuntimeInfo() {
+ function getRuntimeInfo(): void {
$reply = [
'runtime-info' => $this->_make_runtime_info()
];
@@ -102,11 +105,11 @@ class RPC extends Handler_Protected {
print json_encode($reply);
}
- function getAllCounters() {
+ function getAllCounters(): void {
@$seq = (int) $_REQUEST['seq'];
- $feed_id_count = (int)$_REQUEST["feed_id_count"];
- $label_id_count = (int)$_REQUEST["label_id_count"];
+ $feed_id_count = (int) ($_REQUEST["feed_id_count"] ?? -1);
+ $label_id_count = (int) ($_REQUEST["label_id_count"] ?? -1);
// it seems impossible to distinguish empty array [] from a null - both become unset in $_REQUEST
// so, count is >= 0 means we had an array, -1 means null
@@ -133,7 +136,7 @@ class RPC extends Handler_Protected {
}
/* GET["cmode"] = 0 - mark as read, 1 - as unread, 2 - toggle */
- function catchupSelected() {
+ function catchupSelected(): void {
$ids = array_map("intval", clean($_REQUEST["ids"] ?? []));
$cmode = (int)clean($_REQUEST["cmode"]);
@@ -145,7 +148,7 @@ class RPC extends Handler_Protected {
"feeds" => Article::_feeds_of($ids)]);
}
- function markSelected() {
+ function markSelected(): void {
$ids = array_map("intval", clean($_REQUEST["ids"] ?? []));
$cmode = (int)clean($_REQUEST["cmode"]);
@@ -157,7 +160,7 @@ class RPC extends Handler_Protected {
"feeds" => Article::_feeds_of($ids)]);
}
- function publishSelected() {
+ function publishSelected(): void {
$ids = array_map("intval", clean($_REQUEST["ids"] ?? []));
$cmode = (int)clean($_REQUEST["cmode"]);
@@ -169,8 +172,8 @@ class RPC extends Handler_Protected {
"feeds" => Article::_feeds_of($ids)]);
}
- function sanityCheck() {
- $_SESSION["hasSandbox"] = clean($_REQUEST["hasSandbox"]) === "true";
+ function sanityCheck(): void {
+ $_SESSION["hasSandbox"] = self::_param_to_bool($_REQUEST["hasSandbox"] ?? false);
$_SESSION["clientTzOffset"] = clean($_REQUEST["clientTzOffset"]);
$client_location = $_REQUEST["clientLocation"];
@@ -220,14 +223,14 @@ class RPC extends Handler_Protected {
print "</ul>";
}*/
- function catchupFeed() {
+ function catchupFeed(): void {
$feed_id = clean($_REQUEST['feed_id']);
- $is_cat = clean($_REQUEST['is_cat']) == "true";
+ $is_cat = self::_param_to_bool($_REQUEST['is_cat'] ?? false);
$mode = clean($_REQUEST['mode'] ?? '');
$search_query = clean($_REQUEST['search_query']);
$search_lang = clean($_REQUEST['search_lang']);
- Feeds::_catchup($feed_id, $is_cat, false, $mode, [$search_query, $search_lang]);
+ Feeds::_catchup($feed_id, $is_cat, null, $mode, [$search_query, $search_lang]);
// return counters here synchronously so that frontend can figure out next unread feed properly
print json_encode(['counters' => Counters::get_all()]);
@@ -235,7 +238,7 @@ class RPC extends Handler_Protected {
//print json_encode(array("message" => "UPDATE_COUNTERS"));
}
- function setWidescreen() {
+ function setWidescreen(): void {
$wide = (int) clean($_REQUEST["wide"]);
set_pref(Prefs::WIDESCREEN_MODE, $wide);
@@ -243,7 +246,7 @@ class RPC extends Handler_Protected {
print json_encode(["wide" => $wide]);
}
- static function updaterandomfeed_real() {
+ static function updaterandomfeed_real(): void {
$default_interval = (int) Prefs::get_default(Prefs::DEFAULT_UPDATE_INTERVAL);
@@ -299,7 +302,8 @@ class RPC extends Handler_Protected {
ttrss_feeds f, ttrss_users u LEFT JOIN ttrss_user_prefs2 p ON
(p.owner_uid = u.id AND profile IS NULL AND pref_name = 'DEFAULT_UPDATE_INTERVAL')
WHERE
- f.owner_uid = u.id
+ f.owner_uid = u.id AND
+ u.access_level NOT IN (".sprintf("%d, %d", UserHelper::ACCESS_LEVEL_DISABLED, UserHelper::ACCESS_LEVEL_READONLY).")
$owner_check_qpart
$update_limit_qpart
$updstart_thresh_qpart
@@ -335,19 +339,22 @@ class RPC extends Handler_Protected {
}
- function updaterandomfeed() {
+ function updaterandomfeed(): void {
self::updaterandomfeed_real();
}
- private function markArticlesById($ids, $cmode) {
+ /**
+ * @param array<int, int> $ids
+ */
+ private function markArticlesById(array $ids, int $cmode): void {
$ids_qmarks = arr_qmarks($ids);
- if ($cmode == 0) {
+ if ($cmode == Article::CATCHUP_MODE_MARK_AS_READ) {
$sth = $this->pdo->prepare("UPDATE ttrss_user_entries SET
marked = false, last_marked = NOW()
WHERE ref_id IN ($ids_qmarks) AND owner_uid = ?");
- } else if ($cmode == 1) {
+ } else if ($cmode == Article::CATCHUP_MODE_MARK_AS_UNREAD) {
$sth = $this->pdo->prepare("UPDATE ttrss_user_entries SET
marked = true, last_marked = NOW()
WHERE ref_id IN ($ids_qmarks) AND owner_uid = ?");
@@ -360,15 +367,18 @@ class RPC extends Handler_Protected {
$sth->execute(array_merge($ids, [$_SESSION['uid']]));
}
- private function publishArticlesById($ids, $cmode) {
+ /**
+ * @param array<int, int> $ids
+ */
+ private function publishArticlesById(array $ids, int $cmode): void {
$ids_qmarks = arr_qmarks($ids);
- if ($cmode == 0) {
+ if ($cmode == Article::CATCHUP_MODE_MARK_AS_READ) {
$sth = $this->pdo->prepare("UPDATE ttrss_user_entries SET
published = false, last_published = NOW()
WHERE ref_id IN ($ids_qmarks) AND owner_uid = ?");
- } else if ($cmode == 1) {
+ } else if ($cmode == Article::CATCHUP_MODE_MARK_AS_UNREAD) {
$sth = $this->pdo->prepare("UPDATE ttrss_user_entries SET
published = true, last_published = NOW()
WHERE ref_id IN ($ids_qmarks) AND owner_uid = ?");
@@ -381,7 +391,7 @@ class RPC extends Handler_Protected {
$sth->execute(array_merge($ids, [$_SESSION['uid']]));
}
- function log() {
+ function log(): void {
$msg = clean($_REQUEST['msg'] ?? "");
$file = basename(clean($_REQUEST['file'] ?? ""));
$line = (int) clean($_REQUEST['line'] ?? 0);
@@ -395,7 +405,7 @@ class RPC extends Handler_Protected {
}
}
- function checkforupdates() {
+ function checkforupdates(): void {
$rv = ["changeset" => [], "plugins" => []];
$version = Config::get_version(false);
@@ -403,7 +413,7 @@ class RPC extends Handler_Protected {
$git_timestamp = $version["timestamp"] ?? false;
$git_commit = $version["commit"] ?? false;
- if (Config::get(Config::CHECK_FOR_UPDATES) && $_SESSION["access_level"] >= 10 && $git_timestamp) {
+ if (Config::get(Config::CHECK_FOR_UPDATES) && $_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN && $git_timestamp) {
$content = @UrlHelper::fetch(["url" => "https://tt-rss.org/version.json"]);
if ($content) {
@@ -424,7 +434,10 @@ class RPC extends Handler_Protected {
print json_encode($rv);
}
- private function _make_init_params() {
+ /**
+ * @return array<string, mixed>
+ */
+ private function _make_init_params(): array {
$params = array();
foreach ([Prefs::ON_CATCHUP_SHOW_NEXT_FEED, Prefs::HIDE_READ_FEEDS,
@@ -480,7 +493,7 @@ class RPC extends Handler_Protected {
return $params;
}
- private function image_to_base64($filename) {
+ private function image_to_base64(string $filename): string {
if (file_exists($filename)) {
$ext = pathinfo($filename, PATHINFO_EXTENSION);
@@ -492,7 +505,10 @@ class RPC extends Handler_Protected {
}
}
- static function _make_runtime_info() {
+ /**
+ * @return array<string, mixed>
+ */
+ static function _make_runtime_info(): array {
$data = array();
$pdo = Db::pdo();
@@ -510,7 +526,7 @@ class RPC extends Handler_Protected {
$data['cdm_expanded'] = get_pref(Prefs::CDM_EXPANDED);
$data["labels"] = Labels::get_all($_SESSION["uid"]);
- if (Config::get(Config::LOG_DESTINATION) == 'sql' && $_SESSION['access_level'] >= 10) {
+ if (Config::get(Config::LOG_DESTINATION) == 'sql' && $_SESSION['access_level'] >= UserHelper::ACCESS_LEVEL_ADMIN) {
if (Config::get(Config::DB_TYPE) == 'pgsql') {
$log_interval = "created_at > NOW() - interval '1 hour'";
} else {
@@ -522,6 +538,7 @@ class RPC extends Handler_Protected {
WHERE
errno NOT IN (".E_USER_NOTICE.", ".E_USER_DEPRECATED.") AND
$log_interval AND
+ errstr NOT LIKE '%Returning bool from comparison function is deprecated%' AND
errstr NOT LIKE '%imagecreatefromstring(): Data is not in a recognized format%'");
$sth->execute();
@@ -560,7 +577,10 @@ class RPC extends Handler_Protected {
return $data;
}
- static function get_hotkeys_info() {
+ /**
+ * @return array<string, array<string, string>>
+ */
+ static function get_hotkeys_info(): array {
$hotkeys = array(
__("Navigation") => array(
"next_feed" => __("Open next feed"),
@@ -640,8 +660,12 @@ class RPC extends Handler_Protected {
return $hotkeys;
}
- // {3} - 3 panel mode only
- // {C} - combined mode only
+ /**
+ * {3} - 3 panel mode only
+ * {C} - combined mode only
+ *
+ * @return array{0: array<int, string>, 1: array<string, string>} $prefixes, $hotkeys
+ */
static function get_hotkeys_map() {
$hotkeys = array(
"k" => "next_feed",
@@ -726,7 +750,7 @@ class RPC extends Handler_Protected {
return array($prefixes, $hotkeys);
}
- function hotkeyHelp() {
+ function hotkeyHelp(): void {
$info = self::get_hotkeys_info();
$imap = self::get_hotkeys_map();
$omap = array();
diff --git a/classes/rssutils.php b/classes/rssutils.php
index 216792a0e..9995b0e43 100755
--- a/classes/rssutils.php
+++ b/classes/rssutils.php
@@ -1,6 +1,9 @@
<?php
class RSSUtils {
- static function calculate_article_hash($article, $pluginhost) {
+ /**
+ * @param array<string, mixed> $article
+ */
+ static function calculate_article_hash(array $article, PluginHost $pluginhost): string {
$tmp = "";
$ignored_fields = [ "feed", "guid", "guid_hashed", "owner_uid", "force_catchup" ];
@@ -21,16 +24,16 @@ class RSSUtils {
}
// Strips utf8mb4 characters (i.e. emoji) for mysql
- static function strip_utf8mb4(string $str) {
+ static function strip_utf8mb4(string $str): string {
return preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $str);
}
- static function cleanup_feed_browser() {
+ static function cleanup_feed_browser(): void {
$pdo = Db::pdo();
$pdo->query("DELETE FROM ttrss_feedbrowser_cache");
}
- static function cleanup_feed_icons() {
+ static function cleanup_feed_icons(): void {
$pdo = Db::pdo();
$sth = $pdo->prepare("SELECT id FROM ttrss_feeds WHERE id = ?");
@@ -52,7 +55,10 @@ class RSSUtils {
}
}
- static function update_daemon_common(int $limit = 0, array $options = []) {
+ /**
+ * @param array<string, false|string> $options
+ */
+ static function update_daemon_common(int $limit = 0, array $options = []): int {
if (!$limit) $limit = Config::get(Config::DAEMON_FEED_LIMIT);
if (Config::get_schema_version() != Config::SCHEMA_VERSION) {
@@ -123,7 +129,8 @@ class RSSUtils {
ttrss_feeds f, ttrss_users u LEFT JOIN ttrss_user_prefs2 p ON
(p.owner_uid = u.id AND profile IS NULL AND pref_name = 'DEFAULT_UPDATE_INTERVAL')
WHERE
- f.owner_uid = u.id
+ f.owner_uid = u.id AND
+ u.access_level NOT IN (".sprintf("%d, %d", UserHelper::ACCESS_LEVEL_DISABLED, UserHelper::ACCESS_LEVEL_READONLY).")
$login_thresh_qpart
$update_limit_qpart
$updstart_thresh_qpart
@@ -163,7 +170,8 @@ class RSSUtils {
FROM ttrss_feeds f, ttrss_users u LEFT JOIN ttrss_user_prefs2 p ON
(p.owner_uid = u.id AND profile IS NULL AND pref_name = 'DEFAULT_UPDATE_INTERVAL')
WHERE
- f.owner_uid = u.id
+ f.owner_uid = u.id AND
+ u.access_level NOT IN (".sprintf("%d, %d", UserHelper::ACCESS_LEVEL_DISABLED, UserHelper::ACCESS_LEVEL_READONLY).")
AND feed_url = :feed
$login_thresh_qpart
$update_limit_qpart
@@ -270,7 +278,7 @@ class RSSUtils {
}
/** this is used when subscribing */
- static function update_basic_info(int $feed_id) {
+ static function update_basic_info(int $feed_id): void {
$feed = ORM::for_table('ttrss_feeds')
->select_many('id', 'owner_uid', 'feed_url', 'auth_pass', 'auth_login', 'title', 'site_url')
->find_one($feed_id);
@@ -352,6 +360,19 @@ class RSSUtils {
if (!$feed_language) $feed_language = mb_strtolower(get_pref(Prefs::DEFAULT_SEARCH_LANGUAGE, $feed_obj->owner_uid));
if (!$feed_language) $feed_language = 'simple';
+ $user = ORM::for_table('ttrss_users')->find_one($feed_obj->owner_uid);
+
+ if ($user) {
+ if ($user->access_level == UserHelper::ACCESS_LEVEL_READONLY) {
+ Debug::log("error: denied update for $feed: permission denied by owner access level");
+ return false;
+ }
+ } else {
+ // this would indicate database corruption of some kind
+ Debug::log("error: owner not found for feed: $feed");
+ return false;
+ }
+
} else {
Debug::log("error: feeds table record not found for feed: $feed");
return false;
@@ -536,7 +557,7 @@ class RSSUtils {
Debug::log("language: $feed_language", Debug::LOG_VERBOSE);
Debug::log("processing feed data...", Debug::LOG_VERBOSE);
- $site_url = mb_substr(rewrite_relative_url($feed_obj->feed_url, clean($rss->get_link())), 0, 245);
+ $site_url = mb_substr(UrlHelper::rewrite_relative($feed_obj->feed_url, clean($rss->get_link())), 0, 245);
Debug::log("site_url: $site_url", Debug::LOG_VERBOSE);
Debug::log("feed_title: {$rss->get_title()}", Debug::LOG_VERBOSE);
@@ -646,7 +667,7 @@ class RSSUtils {
$entry_title = strip_tags($item->get_title());
- $entry_link = rewrite_relative_url($site_url, clean($item->get_link()));
+ $entry_link = UrlHelper::rewrite_relative($site_url, clean($item->get_link()), "a", "href");
$entry_language = mb_substr(trim($item->get_language()), 0, 2);
@@ -666,7 +687,7 @@ class RSSUtils {
}
$entry_comments = mb_substr(strip_tags($item->get_comments_url()), 0, 245);
- $num_comments = (int) $item->get_comments_count();
+ $num_comments = $item->get_comments_count();
$entry_author = strip_tags($item->get_author());
$entry_guid = mb_substr($entry_guid, 0, 245);
@@ -713,8 +734,9 @@ class RSSUtils {
},
$e, $feed);
+ // TODO: Just use FeedEnclosure (and modify it to cover whatever justified this)?
$e_item = array(
- rewrite_relative_url($site_url, $e->link),
+ UrlHelper::rewrite_relative($site_url, $e->link, "", "", $e->type),
$e->type, $e->length, $e->title, $e->width, $e->height);
// Yet another episode of "mysql utf8_general_ci is gimped"
@@ -764,13 +786,13 @@ class RSSUtils {
// dupes when the entry gets purged and reinserted again e.g.
// in the case of SLOW SLOW OMG SLOW updating feeds
+ $pdo->commit();
+
$entry_obj = ORM::for_table('ttrss_entries')
->find_one($base_entry_id)
->set('date_updated', Db::NOW())
->save();
- $pdo->commit();
-
continue;
}
@@ -825,7 +847,8 @@ class RSSUtils {
if (count($matched_filter_ids) > 0) {
$filter_objs = ORM::for_table('ttrss_filters2')
->where('owner_uid', $feed_obj->owner_uid)
- ->where_in('id', $matched_filter_ids);
+ ->where_in('id', $matched_filter_ids)
+ ->find_many();
foreach ($filter_objs as $filter_obj) {
$filter_obj->set('last_triggered', Db::NOW());
@@ -898,7 +921,7 @@ class RSSUtils {
$entry_timestamp = time();
}
- $entry_timestamp_fmt = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp);
+ $entry_timestamp_fmt = date("Y/m/d H:i:s", $entry_timestamp);
Debug::log("date: $entry_timestamp ($entry_timestamp_fmt)", Debug::LOG_VERBOSE);
Debug::log("num_comments: $num_comments", Debug::LOG_VERBOSE);
@@ -1142,32 +1165,30 @@ class RSSUtils {
}
// check for manual tags (we have to do it here since they're loaded from filters)
-
foreach ($article_filters as $f) {
if ($f["type"] == "tag") {
+ $entry_tags = array_merge($entry_tags,
+ FeedItem_Common::normalize_categories(explode(",", $f["param"])));
+ }
+ }
- $manual_tags = array_map('trim', explode(",", mb_strtolower($f["param"])));
-
- foreach ($manual_tags as $tag) {
- array_push($entry_tags, $tag);
- }
+ // like boring tags, but filter-based
+ foreach ($article_filters as $f) {
+ if ($f["type"] == "ignore-tag") {
+ $entry_tags = array_diff($entry_tags,
+ FeedItem_Common::normalize_categories(explode(",", $f["param"])));
}
}
// Skip boring tags
-
- $boring_tags = array_map('trim',
- explode(",", mb_strtolower(
- get_pref(Prefs::BLACKLISTED_TAGS, $feed_obj->owner_uid))));
-
$entry_tags = FeedItem_Common::normalize_categories(
- array_unique(
- array_diff($entry_tags, $boring_tags)));
+ array_diff($entry_tags,
+ FeedItem_Common::normalize_categories(explode(",",
+ get_pref(Prefs::BLACKLISTED_TAGS, $feed_obj->owner_uid)))));
- Debug::log("filtered tags: " . implode(", ", $entry_tags), Debug::LOG_VERBOSE);
+ Debug::log("resulting article tags: " . implode(", ", $entry_tags), Debug::LOG_VERBOSE);
// Save article tags in the database
-
if (count($entry_tags) > 0) {
$tsth = $pdo->prepare("SELECT id FROM ttrss_tags
@@ -1250,15 +1271,21 @@ class RSSUtils {
return true;
}
- /* TODO: move to DiskCache? */
- static function cache_enclosures($enclosures, $site_url) {
+ /**
+ * TODO: move to DiskCache?
+ *
+ * @param array<int, array<string>> $enclosures An array of "enclosure arrays" [string $link, string $type, string $length, string, $title, string $width, string $height]
+ * @see RSSUtils::update_rss_feed()
+ * @see FeedEnclosure
+ */
+ static function cache_enclosures(array $enclosures, string $site_url): void {
$cache = new DiskCache("images");
if ($cache->is_writable()) {
foreach ($enclosures as $enc) {
if (preg_match("/(image|audio|video)/", $enc[1])) {
- $src = rewrite_relative_url($site_url, $enc[0]);
+ $src = UrlHelper::rewrite_relative($site_url, $enc[0]);
$local_filename = sha1($src);
@@ -1283,8 +1310,8 @@ class RSSUtils {
}
/* TODO: move to DiskCache? */
- static function cache_media_url($cache, $url, $site_url) {
- $url = rewrite_relative_url($site_url, $url);
+ static function cache_media_url(DiskCache $cache, string $url, string $site_url): void {
+ $url = UrlHelper::rewrite_relative($site_url, $url);
$local_filename = sha1($url);
Debug::log("cache_media: checking $url", Debug::LOG_VERBOSE);
@@ -1307,7 +1334,7 @@ class RSSUtils {
}
/* TODO: move to DiskCache? */
- static function cache_media($html, $site_url) {
+ static function cache_media(string $html, string $site_url): void {
$cache = new DiskCache("images");
if ($html && $cache->is_writable()) {
@@ -1336,7 +1363,7 @@ class RSSUtils {
}
}
- static function expire_error_log() {
+ static function expire_error_log(): void {
Debug::log("Removing old error log entries...");
$pdo = Db::pdo();
@@ -1350,14 +1377,16 @@ class RSSUtils {
}
}
- // deprecated; table not used
- static function expire_feed_archive() {
+ /**
+ * @deprecated table not used
+ */
+ static function expire_feed_archive(): void {
$pdo = Db::pdo();
$pdo->query("DELETE FROM ttrss_archived_feeds");
}
- static function expire_lock_files() {
+ static function expire_lock_files(): void {
Debug::log("Removing old lock files...", Debug::LOG_VERBOSE);
$num_deleted = 0;
@@ -1398,7 +1427,15 @@ class RSSUtils {
return $params;
} */
- static function get_article_filters($filters, $title, $content, $link, $author, $tags, &$matched_rules = false, &$matched_filters = false) {
+ /**
+ * @param array<int, array<string, mixed>> $filters
+ * @param array<int, string> $tags
+ * @param array<int, array<string, mixed>>|null $matched_rules
+ * @param array<int, array<string, mixed>>|null $matched_filters
+ *
+ * @return array<int, array<string, string>> An array of filter action arrays with keys "type" and "param"
+ */
+ static function get_article_filters(array $filters, string $title, string $content, string $link, string $author, array $tags, array &$matched_rules = null, array &$matched_filters = null): array {
$matches = array();
foreach ($filters as $filter) {
@@ -1482,16 +1519,26 @@ class RSSUtils {
return $matches;
}
- static function find_article_filter($filters, $filter_name) {
+ /**
+ * @param array<int, array<string, string>> $filters An array of filter action arrays with keys "type" and "param"
+ *
+ * @return array<string, string>|null A filter action array with keys "type" and "param"
+ */
+ static function find_article_filter(array $filters, string $filter_name): ?array {
foreach ($filters as $f) {
if ($f["type"] == $filter_name) {
return $f;
};
}
- return false;
+ return null;
}
- static function find_article_filters($filters, $filter_name) {
+ /**
+ * @param array<int, array<string, string>> $filters An array of filter action arrays with keys "type" and "param"
+ *
+ * @return array<int, array<string, string>> An array of filter action arrays with keys "type" and "param"
+ */
+ static function find_article_filters(array $filters, string $filter_name): array {
$results = array();
foreach ($filters as $f) {
@@ -1502,7 +1549,10 @@ class RSSUtils {
return $results;
}
- static function calculate_article_score($filters) {
+ /**
+ * @param array<int, array<string, string>> $filters An array of filter action arrays with keys "type" and "param"
+ */
+ static function calculate_article_score(array $filters): int {
$score = 0;
foreach ($filters as $f) {
@@ -1513,7 +1563,12 @@ class RSSUtils {
return $score;
}
- static function labels_contains_caption($labels, $caption) {
+ /**
+ * @param array<int, array<int, int|string>> $labels An array of label arrays like [int $feed_id, string $caption, string $fg_color, string $bg_color]
+ *
+ * @see Article::_get_labels()
+ */
+ static function labels_contains_caption(array $labels, string $caption): bool {
foreach ($labels as $label) {
if ($label[1] == $caption) {
return true;
@@ -1523,7 +1578,11 @@ class RSSUtils {
return false;
}
- static function assign_article_to_label_filters($id, $filters, $owner_uid, $article_labels) {
+ /**
+ * @param array<int, array<string, string>> $filters An array of filter action arrays with keys "type" and "param"
+ * @param array<int, array<int, int|string>> $article_labels An array of label arrays like [int $feed_id, string $caption, string $fg_color, string $bg_color]
+ */
+ static function assign_article_to_label_filters(int $id, array $filters, int $owner_uid, $article_labels): void {
foreach ($filters as $f) {
if ($f["type"] == "label") {
if (!self::labels_contains_caption($article_labels, $f["param"])) {
@@ -1533,20 +1592,20 @@ class RSSUtils {
}
}
- static function make_guid_from_title($title) {
+ static function make_guid_from_title(string $title): ?string {
return preg_replace("/[ \"\',.:;]/", "-",
mb_strtolower(strip_tags($title), 'utf-8'));
}
/* counter cache is no longer used, if called truncate leftover data */
- static function cleanup_counters_cache() {
+ static function cleanup_counters_cache(): void {
$pdo = Db::pdo();
$pdo->query("DELETE FROM ttrss_counters_cache");
$pdo->query("DELETE FROM ttrss_cat_counters_cache");
}
- static function disable_failed_feeds() {
+ static function disable_failed_feeds(): void {
if (Config::get(Config::DAEMON_UNSUCCESSFUL_DAYS_LIMIT) > 0) {
$pdo = Db::pdo();
@@ -1584,7 +1643,7 @@ class RSSUtils {
}
}
- static function housekeeping_user($owner_uid) {
+ static function housekeeping_user(int $owner_uid): void {
$tmph = new PluginHost();
UserHelper::load_user_plugins($owner_uid, $tmph);
@@ -1592,7 +1651,7 @@ class RSSUtils {
$tmph->run_hooks(PluginHost::HOOK_HOUSE_KEEPING);
}
- static function housekeeping_common() {
+ static function housekeeping_common(): void {
DiskCache::expire();
self::expire_lock_files();
@@ -1608,6 +1667,9 @@ class RSSUtils {
PluginHost::getInstance()->run_hooks(PluginHost::HOOK_HOUSE_KEEPING);
}
+ /**
+ * @return false|string
+ */
static function update_favicon(string $site_url, int $feed) {
$icon_file = Config::get(Config::ICONS_DIR) . "/$feed.ico";
@@ -1672,11 +1734,14 @@ class RSSUtils {
return $icon_file;
}
- static function is_gzipped($feed_data) {
+ static function is_gzipped(string $feed_data): bool {
return strpos(substr($feed_data, 0, 3),
"\x1f" . "\x8b" . "\x08", 0) === 0;
}
+ /**
+ * @return array<int, array<string, mixed>> An array of filter arrays with keys "id", "match_any_rule", "inverse", "rules", and "actions"
+ */
static function load_filters(int $feed_id, int $owner_uid) {
$filters = array();
@@ -1794,7 +1859,7 @@ class RSSUtils {
*
* @param string $url A feed or page URL
* @access public
- * @return mixed The favicon URL, or false if none was found.
+ * @return false|string The favicon URL string, or false if none was found.
*/
static function get_favicon_url(string $url) {
@@ -1808,14 +1873,14 @@ class RSSUtils {
$base = $xpath->query('/html/head/base[@href]');
foreach ($base as $b) {
- $url = rewrite_relative_url($url, $b->getAttribute("href"));
+ $url = UrlHelper::rewrite_relative($url, $b->getAttribute("href"));
break;
}
$entries = $xpath->query('/html/head/link[@rel="shortcut icon" or @rel="icon"]');
if (count($entries) > 0) {
foreach ($entries as $entry) {
- $favicon_url = rewrite_relative_url($url, $entry->getAttribute("href"));
+ $favicon_url = UrlHelper::rewrite_relative($url, $entry->getAttribute("href"));
break;
}
}
@@ -1823,13 +1888,17 @@ class RSSUtils {
}
if (!$favicon_url)
- $favicon_url = rewrite_relative_url($url, "/favicon.ico");
+ $favicon_url = UrlHelper::rewrite_relative($url, "/favicon.ico");
return $favicon_url;
}
- // https://community.tt-rss.org/t/problem-with-img-srcset/3519
- static function decode_srcset($srcset) {
+ /**
+ * @see https://community.tt-rss.org/t/problem-with-img-srcset/3519
+ *
+ * @return array<int, array<string, string>> An array of srcset subitem arrays with keys "url" and "size"
+ */
+ static function decode_srcset(string $srcset): array {
$matches = [];
preg_match_all(
@@ -1847,7 +1916,10 @@ class RSSUtils {
return $matches;
}
- static function encode_srcset($matches) {
+ /**
+ * @param array<int, array<string, string>> $matches An array of srcset subitem arrays with keys "url" and "size"
+ */
+ static function encode_srcset(array $matches): string {
$tokens = [];
foreach ($matches as $m) {
@@ -1857,7 +1929,7 @@ class RSSUtils {
return implode(",", $tokens);
}
- static function function_enabled($func) {
+ static function function_enabled(string $func): bool {
return !in_array($func,
explode(',', str_replace(" ", "", ini_get('disable_functions'))));
}
diff --git a/classes/sanitizer.php b/classes/sanitizer.php
index 0a444a296..e2055930b 100644
--- a/classes/sanitizer.php
+++ b/classes/sanitizer.php
@@ -1,6 +1,10 @@
<?php
class Sanitizer {
- private static function strip_harmful_tags($doc, $allowed_elements, $disallowed_attributes) {
+ /**
+ * @param array<int, string> $allowed_elements
+ * @param array<int, string> $disallowed_attributes
+ */
+ private static function strip_harmful_tags(DOMDocument $doc, array $allowed_elements, $disallowed_attributes): DOMDocument {
$xpath = new DOMXPath($doc);
$entries = $xpath->query('//*');
@@ -40,7 +44,7 @@ class Sanitizer {
return $doc;
}
- public static function iframe_whitelisted($entry) {
+ public static function iframe_whitelisted(DOMElement $entry): bool {
$src = parse_url($entry->getAttribute("src"), PHP_URL_HOST);
if (!empty($src))
@@ -49,11 +53,16 @@ class Sanitizer {
return false;
}
- private static function is_prefix_https() {
+ private static function is_prefix_https(): bool {
return parse_url(Config::get(Config::SELF_URL_PATH), PHP_URL_SCHEME) == 'https';
}
- public static function sanitize($str, $force_remove_images = false, $owner = false, $site_url = false, $highlight_words = false, $article_id = false) {
+ /**
+ * @param array<int, string>|null $highlight_words Words to highlight in the HTML output.
+ *
+ * @return false|string The HTML, or false if an error occurred.
+ */
+ public static function sanitize(string $str, ?bool $force_remove_images = false, int $owner = null, string $site_url = null, array $highlight_words = null, int $article_id = null) {
if (!$owner && isset($_SESSION["uid"]))
$owner = $_SESSION["uid"];
@@ -68,7 +77,7 @@ class Sanitizer {
// $rewrite_base_url = $site_url ? $site_url : Config::get_self_url();
$rewrite_base_url = $site_url ? $site_url : "http://domain.invalid/";
- $entries = $xpath->query('(//a[@href]|//img[@src]|//source[@srcset|@src])');
+ $entries = $xpath->query('(//a[@href]|//img[@src]|//source[@srcset|@src]|//video[@poster])');
foreach ($entries as $entry) {
@@ -100,6 +109,11 @@ class Sanitizer {
$entry->setAttribute("srcset", RSSUtils::encode_srcset($matches));
}
+ if ($entry->hasAttribute('poster')) {
+ $entry->setAttribute('poster',
+ UrlHelper::rewrite_relative($rewrite_base_url, $entry->getAttribute('poster'), $entry->tagName, "poster"));
+ }
+
if ($entry->hasAttribute('src') &&
($owner && get_pref(Prefs::STRIP_IMAGES, $owner)) || $force_remove_images || ($_SESSION["bw_limit"] ?? false)) {
@@ -178,7 +192,7 @@ class Sanitizer {
$div->appendChild($entry);
}
- if ($highlight_words && is_array($highlight_words)) {
+ if (is_array($highlight_words)) {
foreach ($highlight_words as $word) {
// http://stackoverflow.com/questions/4081372/highlight-keywords-in-a-paragraph
diff --git a/classes/timehelper.php b/classes/timehelper.php
index 4317f343f..453ee0cee 100644
--- a/classes/timehelper.php
+++ b/classes/timehelper.php
@@ -1,7 +1,7 @@
<?php
class TimeHelper {
- static function smart_date_time($timestamp, $tz_offset = 0, $owner_uid = false, $eta_min = false) {
+ static function smart_date_time(int $timestamp, int $tz_offset = 0, int $owner_uid = null, bool $eta_min = false): string {
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
if ($eta_min && time() + $tz_offset - $timestamp < 3600) {
@@ -21,8 +21,8 @@ class TimeHelper {
}
}
- static function make_local_datetime($timestamp, $long, $owner_uid = false,
- $no_smart_dt = false, $eta_min = false) {
+ static function make_local_datetime(?string $timestamp, bool $long, int $owner_uid = null,
+ bool $no_smart_dt = false, bool $eta_min = false): string {
if (!$owner_uid) $owner_uid = $_SESSION['uid'];
if (!$timestamp) $timestamp = '1970-01-01 0:00';
@@ -67,7 +67,7 @@ class TimeHelper {
}
}
- static function convert_timestamp($timestamp, $source_tz, $dest_tz) {
+ static function convert_timestamp(int $timestamp, string $source_tz, string $dest_tz): int {
try {
$source_tz = new DateTimeZone($source_tz);
diff --git a/classes/urlhelper.php b/classes/urlhelper.php
index b2c1331b6..83f66a810 100644
--- a/classes/urlhelper.php
+++ b/classes/urlhelper.php
@@ -6,16 +6,40 @@ class UrlHelper {
"tel"
];
+ const EXTRA_SCHEMES_BY_CONTENT_TYPE = [
+ "application/x-bittorrent" => [ "magnet" ],
+ ];
+
+ // TODO: class properties can be switched to PHP typing if/when the minimum PHP_VERSION is raised to 7.4.0+
+ /** @var string */
static $fetch_last_error;
+
+ /** @var int */
static $fetch_last_error_code;
+
+ /** @var string */
static $fetch_last_error_content;
+
+ /** @var string */
static $fetch_last_content_type;
+
+ /** @var string */
static $fetch_last_modified;
+
+
+ /** @var string */
static $fetch_effective_url;
+
+ /** @var string */
static $fetch_effective_ip_addr;
+
+ /** @var bool */
static $fetch_curl_used;
- static function build_url($parts) {
+ /**
+ * @param array<string, string|int> $parts
+ */
+ static function build_url(array $parts): string {
$tmp = $parts['scheme'] . "://" . $parts['host'];
if (isset($parts['path'])) $tmp .= $parts['path'];
@@ -33,13 +57,31 @@ class UrlHelper {
* @param string $rel_url Possibly relative URL in the document
* @param string $owner_element Owner element tag name (i.e. "a") (optional)
* @param string $owner_attribute Owner attribute (i.e. "href") (optional)
+ * @param string $content_type URL content type as specified by enclosures, etc.
*
- * @return string Absolute URL
+ * @return false|string Absolute URL or false on failure (either during URL parsing or validation)
*/
- public static function rewrite_relative($base_url, $rel_url, string $owner_element = "", string $owner_attribute = "") {
+ public static function rewrite_relative($base_url,
+ $rel_url,
+ string $owner_element = "",
+ string $owner_attribute = "",
+ string $content_type = "") {
$rel_parts = parse_url($rel_url);
+ if (!$rel_url) return $base_url;
+
+ /**
+ * If parse_url failed to parse $rel_url return false to match the current "invalid thing" behavior
+ * of UrlHelper::validate().
+ *
+ * TODO: There are many places where a string return value is assumed. We should either update those
+ * to account for the possibility of failure, or look into updating this function's return values.
+ */
+ if ($rel_parts === false) {
+ return false;
+ }
+
if (!empty($rel_parts['host']) && !empty($rel_parts['scheme'])) {
return self::validate($rel_url);
@@ -51,8 +93,13 @@ class UrlHelper {
$owner_element == "a" &&
$owner_attribute == "href") {
return $rel_url;
+ // allow some extra schemes for links with feed-specified content type i.e. enclosures
+ } else if ($content_type &&
+ isset(self::EXTRA_SCHEMES_BY_CONTENT_TYPE[$content_type]) &&
+ in_array($rel_parts["scheme"], self::EXTRA_SCHEMES_BY_CONTENT_TYPE[$content_type])) {
+ return $rel_url;
// allow limited subset of inline base64-encoded images for IMG elements
- } else if ($rel_parts["scheme"] ?? "" == "data" &&
+ } else if (($rel_parts["scheme"] ?? "") == "data" &&
preg_match('%^image/(webp|gif|jpg|png|svg);base64,%', $rel_parts["path"]) &&
$owner_element == "img" &&
$owner_attribute == "src") {
@@ -60,28 +107,36 @@ class UrlHelper {
} else {
$base_parts = parse_url($base_url);
- $rel_parts['host'] = $base_parts['host'];
- $rel_parts['scheme'] = $base_parts['scheme'];
+ $rel_parts['host'] = $base_parts['host'] ?? "";
+ $rel_parts['scheme'] = $base_parts['scheme'] ?? "";
+
+ if ($rel_parts['path'] ?? "") {
- if (isset($rel_parts['path'])) {
+ // we append dirname() of base path to relative URL path as per RFC 3986 section 5.2.2
+ $base_path = with_trailing_slash(dirname($base_parts['path'] ?? ""));
- // experimental: if relative url path is not absolute (i.e. starting with /) concatenate it using base url path
- // (i'm not sure if it's a good idea)
+ // 1. absolute relative path (/test.html) = no-op, proceed as is
- if (strpos($rel_parts['path'], '/') !== 0) {
- $rel_parts['path'] = with_trailing_slash($base_parts['path'] ?? "") . $rel_parts['path'];
+ // 2. dotslash relative URI (./test.html) - strip "./", append base path
+ if (strpos($rel_parts['path'], './') === 0) {
+ $rel_parts['path'] = $base_path . substr($rel_parts['path'], 2);
+ // 3. anything else relative (test.html) - append dirname() of base path
+ } else if (strpos($rel_parts['path'], '/') !== 0) {
+ $rel_parts['path'] = $base_path . $rel_parts['path'];
}
- $rel_parts['path'] = str_replace("/./", "/", $rel_parts['path']);
- $rel_parts['path'] = str_replace("//", "/", $rel_parts['path']);
+ //$rel_parts['path'] = str_replace("/./", "/", $rel_parts['path']);
+ //$rel_parts['path'] = str_replace("//", "/", $rel_parts['path']);
}
return self::validate(self::build_url($rel_parts));
}
}
- // extended filtering involves validation for safe ports and loopback
- static function validate($url, $extended_filtering = false) {
+ /** extended filtering involves validation for safe ports and loopback
+ * @return false|string false if something went wrong, otherwise the URL string
+ */
+ static function validate(string $url, bool $extended_filtering = false) {
$url = clean($url);
@@ -107,6 +162,11 @@ class UrlHelper {
} else {
$tokens['host'] = idn_to_ascii($tokens['host']);
}
+
+ // if `idn_to_ascii` failed
+ if ($tokens['host'] === false) {
+ return false;
+ }
}
}
@@ -138,7 +198,10 @@ class UrlHelper {
return $url;
}
- static function resolve_redirects($url, $timeout, $nest = 0) {
+ /**
+ * @return false|string
+ */
+ static function resolve_redirects(string $url, int $timeout, int $nest = 0) {
// too many redirects
if ($nest > 10)
@@ -162,8 +225,12 @@ class UrlHelper {
$context = stream_context_create($context_options);
+ // PHP 8 changed the second param from int to bool, but we still support PHP >= 7.1.0
+ // @phpstan-ignore-next-line
$headers = get_headers($url, 0, $context);
} else {
+ // PHP 8 changed the second param from int to bool, but we still support PHP >= 7.1.0
+ // @phpstan-ignore-next-line
$headers = get_headers($url, 0);
}
@@ -185,12 +252,16 @@ class UrlHelper {
return false;
}
- // TODO: max_size currently only works for CURL transfers
+ /**
+ * @param array<string, bool|int|string>|string $options
+ * @return false|string false if something went wrong, otherwise string contents
+ */
+ // TODO: max_size currently only works for CURL transfers
// TODO: multiple-argument way is deprecated, first parameter is a hash now
public static function fetch($options /* previously: 0: $url , 1: $type = false, 2: $login = false, 3: $pass = false,
4: $post_query = false, 5: $timeout = false, 6: $timestamp = 0, 7: $useragent = false*/) {
- self::$fetch_last_error = false;
+ self::$fetch_last_error = "";
self::$fetch_last_error_code = -1;
self::$fetch_last_error_content = "";
self::$fetch_last_content_type = "";
@@ -239,6 +310,8 @@ class UrlHelper {
$url = ltrim($url, ' ');
$url = str_replace(' ', '%20', $url);
+ Debug::log("[UrlHelper] fetching: $url", Debug::LOG_EXTENDED);
+
$url = self::validate($url, true);
if (!$url) {
@@ -275,15 +348,15 @@ class UrlHelper {
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout ? $timeout : Config::get(Config::FILE_FETCH_CONNECT_TIMEOUT));
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout ? $timeout : Config::get(Config::FILE_FETCH_TIMEOUT));
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, !ini_get("open_basedir") && $followlocation);
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $followlocation);
curl_setopt($ch, CURLOPT_MAXREDIRS, 20);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
- curl_setopt($ch, CURLOPT_USERAGENT, $useragent ? $useragent :
- SELF_USER_AGENT);
+ curl_setopt($ch, CURLOPT_USERAGENT, $useragent ? $useragent : Config::get_user_agent());
curl_setopt($ch, CURLOPT_ENCODING, "");
+ curl_setopt($ch, CURLOPT_COOKIEJAR, "/dev/null");
if ($http_referrer)
curl_setopt($ch, CURLOPT_REFERER, $http_referrer);
@@ -298,7 +371,7 @@ class UrlHelper {
//Debug::log("[curl progressfunction] $downloaded $max_size", Debug::$LOG_EXTENDED);
if ($downloaded > $max_size) {
- Debug::log("curl: reached max size of $max_size bytes requesting $url, aborting.", Debug::LOG_VERBOSE);
+ Debug::log("[UrlHelper] fetch error: curl reached max size of $max_size bytes downloading $url, aborting.", Debug::LOG_VERBOSE);
return 1;
}
@@ -307,10 +380,6 @@ class UrlHelper {
}
- if (!ini_get("open_basedir")) {
- curl_setopt($ch, CURLOPT_COOKIEJAR, "/dev/null");
- }
-
if (Config::get(Config::HTTP_PROXY)) {
curl_setopt($ch, CURLOPT_PROXY, Config::get(Config::HTTP_PROXY));
}
@@ -374,6 +443,8 @@ class UrlHelper {
if (curl_errno($ch) != 0) {
self::$fetch_last_error .= "; " . curl_errno($ch) . " " . curl_error($ch);
+ } else {
+ self::$fetch_last_error = "HTTP Code: $http_code ";
}
self::$fetch_last_error_content = $contents;
@@ -510,7 +581,10 @@ class UrlHelper {
}
}
- public static function url_to_youtube_vid($url) {
+ /**
+ * @return false|string false if the provided URL didn't match expected patterns, otherwise the video ID string
+ */
+ public static function url_to_youtube_vid(string $url) {
$url = str_replace("youtube.com", "youtube-nocookie.com", $url);
$regexps = [
diff --git a/classes/userhelper.php b/classes/userhelper.php
index 1cdd320a1..91e40665d 100644
--- a/classes/userhelper.php
+++ b/classes/userhelper.php
@@ -17,7 +17,22 @@ class UserHelper {
self::HASH_ALGO_SHA1
];
- static function authenticate(string $login = null, string $password = null, bool $check_only = false, string $service = null) {
+ /** forbidden to login */
+ const ACCESS_LEVEL_DISABLED = -2;
+
+ /** can't subscribe to new feeds, feeds are not updated */
+ const ACCESS_LEVEL_READONLY = -1;
+
+ /** no restrictions, regular user */
+ const ACCESS_LEVEL_USER = 0;
+
+ /** not used, same as regular user */
+ const ACCESS_LEVEL_POWERUSER = 5;
+
+ /** has administrator permissions */
+ const ACCESS_LEVEL_ADMIN = 10;
+
+ static function authenticate(string $login = null, string $password = null, bool $check_only = false, string $service = null): bool {
if (!Config::get(Config::SINGLE_USER_MODE)) {
$user_id = false;
$auth_module = false;
@@ -41,7 +56,7 @@ class UserHelper {
$user = ORM::for_table('ttrss_users')->find_one($user_id);
- if ($user) {
+ if ($user && $user->access_level != self::ACCESS_LEVEL_DISABLED) {
$_SESSION["uid"] = $user_id;
$_SESSION["auth_module"] = $auth_module;
$_SESSION["name"] = $user->login;
@@ -53,6 +68,8 @@ class UserHelper {
$user->last_login = Db::NOW();
$user->save();
+ $_SESSION["last_login_update"] = time();
+
return true;
}
@@ -68,7 +85,7 @@ class UserHelper {
$_SESSION["uid"] = 1;
$_SESSION["name"] = "admin";
- $_SESSION["access_level"] = 10;
+ $_SESSION["access_level"] = self::ACCESS_LEVEL_ADMIN;
$_SESSION["hide_hello"] = true;
$_SESSION["hide_logout"] = true;
@@ -84,7 +101,7 @@ class UserHelper {
}
}
- static function load_user_plugins(int $owner_uid, PluginHost $pluginhost = null) {
+ static function load_user_plugins(int $owner_uid, PluginHost $pluginhost = null): void {
if (!$pluginhost) $pluginhost = PluginHost::getInstance();
@@ -99,7 +116,7 @@ class UserHelper {
}
}
- static function login_sequence() {
+ static function login_sequence(): void {
$pdo = Db::pdo();
if (Config::get(Config::SINGLE_USER_MODE)) {
@@ -144,7 +161,7 @@ class UserHelper {
}
}
- static function print_user_stylesheet() {
+ static function print_user_stylesheet(): void {
$value = get_pref(Prefs::USER_STYLESHEET);
if ($value) {
@@ -155,7 +172,7 @@ class UserHelper {
}
- static function get_user_ip() {
+ static function get_user_ip(): ?string {
foreach (["HTTP_X_REAL_IP", "REMOTE_ADDR"] as $hdr) {
if (isset($_SERVER[$hdr]))
return $_SERVER[$hdr];
@@ -164,7 +181,7 @@ class UserHelper {
return null;
}
- static function get_login_by_id(int $id) {
+ static function get_login_by_id(int $id): ?string {
$user = ORM::for_table('ttrss_users')
->find_one($id);
@@ -174,7 +191,7 @@ class UserHelper {
return null;
}
- static function find_user_by_login(string $login) {
+ static function find_user_by_login(string $login): ?int {
$user = ORM::for_table('ttrss_users')
->where('login', $login)
->find_one();
@@ -185,7 +202,7 @@ class UserHelper {
return null;
}
- static function logout() {
+ static function logout(): void {
if (session_status() === PHP_SESSION_ACTIVE)
session_destroy();
@@ -196,11 +213,11 @@ class UserHelper {
session_commit();
}
- static function get_salt() {
+ static function get_salt(): string {
return substr(bin2hex(get_random_bytes(125)), 0, 250);
}
- static function reset_password($uid, $format_output = false, $new_password = "") {
+ static function reset_password(int $uid, bool $format_output = false, string $new_password = ""): void {
$user = ORM::for_table('ttrss_users')->find_one($uid);
$message = "";
@@ -283,7 +300,7 @@ class UserHelper {
}
}
- static function get_otp_secret(int $owner_uid, bool $show_if_enabled = false) {
+ static function get_otp_secret(int $owner_uid, bool $show_if_enabled = false): ?string {
$user = ORM::for_table('ttrss_users')->find_one($owner_uid);
if ($user) {
@@ -318,7 +335,9 @@ class UserHelper {
return null;
}
- static function is_default_password() {
+ static function is_default_password(): bool {
+
+ /** @var Auth_Internal|false $authenticator -- this is only here to make check_password() visible to static analyzer */
$authenticator = PluginHost::getInstance()->get_plugin($_SESSION["auth_module"]);
if ($authenticator &&
@@ -330,10 +349,12 @@ class UserHelper {
return false;
}
- static function hash_password(string $pass, string $salt, string $algo = "") {
-
- if (!$algo) $algo = self::HASH_ALGOS[0];
-
+ /**
+ * @param string $algo should be one of UserHelper::HASH_ALGO_*
+ *
+ * @return false|string False if the password couldn't be hashed, otherwise the hash string.
+ */
+ static function hash_password(string $pass, string $salt, string $algo = self::HASH_ALGOS[0]) {
$pass_hash = "";
switch ($algo) {
diff --git a/composer.json b/composer.json
index 0c9ec0926..0e0d1d418 100644
--- a/composer.json
+++ b/composer.json
@@ -4,5 +4,9 @@
"chillerlan/php-qrcode": "^3.3",
"mervick/material-design-icons": "^2.2",
"j4mie/idiorm": "^1.5"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.",
+ "phpunit/phpunit": "9.5.16"
}
}
diff --git a/composer.lock b/composer.lock
index 40f171ada..1b8cf9f02 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,27 +4,23 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "e7f23b092328c903b06c8ae31bf13781",
+ "content-hash": "0c52fd6b8f33561f7c03f12df6f5480f",
"packages": [
{
"name": "beberlei/assert",
- "version": "v3.2.7",
+ "version": "v3.2.2",
"source": {
"type": "git",
"url": "https://github.com/beberlei/assert.git",
- "reference": "d63a6943fc4fd1a2aedb65994e3548715105abcf"
+ "reference": "5547e7d03f8c6be121b8b9db6d6ed5a22ffdcb01"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/beberlei/assert/zipball/d63a6943fc4fd1a2aedb65994e3548715105abcf",
- "reference": "d63a6943fc4fd1a2aedb65994e3548715105abcf",
+ "url": "https://api.github.com/repos/beberlei/assert/zipball/5547e7d03f8c6be121b8b9db6d6ed5a22ffdcb01",
+ "reference": "5547e7d03f8c6be121b8b9db6d6ed5a22ffdcb01",
"shasum": ""
},
"require": {
- "ext-ctype": "*",
- "ext-json": "*",
- "ext-mbstring": "*",
- "ext-simplexml": "*",
"php": "^7"
},
"require-dev": {
@@ -32,9 +28,6 @@
"phpstan/phpstan-shim": "*",
"phpunit/phpunit": ">=6.0.0 <8"
},
- "suggest": {
- "ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles"
- },
"type": "library",
"autoload": {
"psr-4": {
@@ -66,32 +59,29 @@
"assertion",
"validation"
],
- "support": {
- "issues": "https://github.com/beberlei/assert/issues",
- "source": "https://github.com/beberlei/assert/tree/v3"
- },
- "time": "2019-12-19T17:51:41+00:00"
+ "time": "2019-08-23T16:04:58+00:00"
},
{
"name": "chillerlan/php-qrcode",
- "version": "3.4.0",
+ "version": "3.4.1",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-qrcode.git",
- "reference": "d8bf297e6843a53aeaa8f3285ce04fc349d133d6"
+ "reference": "468603b687a5fe75c1ff33857a45f1726c7b95a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/d8bf297e6843a53aeaa8f3285ce04fc349d133d6",
- "reference": "d8bf297e6843a53aeaa8f3285ce04fc349d133d6",
+ "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/468603b687a5fe75c1ff33857a45f1726c7b95a9",
+ "reference": "468603b687a5fe75c1ff33857a45f1726c7b95a9",
"shasum": ""
},
"require": {
- "chillerlan/php-settings-container": "^1.2",
+ "chillerlan/php-settings-container": "^1.2.2",
"ext-mbstring": "*",
- "php": "^7.2"
+ "php": "^7.2 || ^8.0"
},
"require-dev": {
+ "phan/phan": "^3.2.2",
"phpunit/phpunit": "^8.5",
"setasign/fpdf": "^1.8.2"
},
@@ -133,10 +123,6 @@
"qrcode",
"qrcode-generator"
],
- "support": {
- "issues": "https://github.com/chillerlan/php-qrcode/issues",
- "source": "https://github.com/chillerlan/php-qrcode/tree/3.4.0"
- },
"funding": [
{
"url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4",
@@ -147,28 +133,28 @@
"type": "ko_fi"
}
],
- "time": "2020-11-18T20:51:41+00:00"
+ "time": "2021-09-03T17:54:45+00:00"
},
{
"name": "chillerlan/php-settings-container",
- "version": "1.2.1",
+ "version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-settings-container.git",
- "reference": "b9b0431dffd74102ee92348a63b4c33fc8ba639b"
+ "reference": "d1b5284d6eb3a767459738bb0b20073f0cb3eeaf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/b9b0431dffd74102ee92348a63b4c33fc8ba639b",
- "reference": "b9b0431dffd74102ee92348a63b4c33fc8ba639b",
+ "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/d1b5284d6eb3a767459738bb0b20073f0cb3eeaf",
+ "reference": "d1b5284d6eb3a767459738bb0b20073f0cb3eeaf",
"shasum": ""
},
"require": {
"ext-json": "*",
- "php": "^7.2"
+ "php": "^7.2 || ^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.3"
+ "phpunit/phpunit": "^8.4"
},
"type": "library",
"autoload": {
@@ -195,11 +181,17 @@
"container",
"helper"
],
- "support": {
- "issues": "https://github.com/chillerlan/php-settings-container/issues",
- "source": "https://github.com/chillerlan/php-settings-container"
- },
- "time": "2019-09-10T00:09:44+00:00"
+ "funding": [
+ {
+ "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4",
+ "type": "custom"
+ },
+ {
+ "url": "https://ko-fi.com/codemasher",
+ "type": "ko_fi"
+ }
+ ],
+ "time": "2021-09-03T17:33:25+00:00"
},
{
"name": "j4mie/idiorm",
@@ -592,7 +584,2166 @@
"time": "2020-10-28T17:51:34+00:00"
}
],
- "packages-dev": [],
+ "packages-dev": [
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.22"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "[email protected]",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-03-03T08:28:38+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-03-03T13:19:32+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
+ },
+ "time": "2021-11-30T19:35:32+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ },
+ "time": "2021-07-20T11:28:43+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
+ },
+ "time": "2022-02-21T01:04:05+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ },
+ "time": "2021-10-19T17:43:47+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0"
+ },
+ "time": "2022-01-04T19:58:01+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2 || ~8.0, <8.2",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^6.0 || ^7.0",
+ "phpunit/phpunit": "^8.0 || ^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "[email protected]",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
+ },
+ "time": "2021-12-08T12:19:24+00:00"
+ },
+ {
+ "name": "phpstan/phpstan",
+ "version": "1.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "bcea0ae85868a89d5789c75f012c93129f842934"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/bcea0ae85868a89d5789c75f012c93129f842934",
+ "reference": "bcea0ae85868a89d5789c75f012c93129f842934",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1|^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
+ },
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "funding": [
+ {
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/phpstan",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/phpstan",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-09T12:41:09+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "9.2.15",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+ "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.13.0",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-03-07T09:28:20+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-12-02T12:48:52+00:00"
+ },
+ {
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:58:55+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T05:33:50+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:16:10+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "9.5.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5ff8c545a50226c569310a35f4fa89d79f1ddfdc",
+ "reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.3",
+ "phar-io/version": "^3.0.2",
+ "php": ">=7.3",
+ "phpspec/prophecy": "^1.12.1",
+ "phpunit/php-code-coverage": "^9.2.13",
+ "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.3",
+ "phpunit/php-timer": "^5.0.2",
+ "sebastian/cli-parser": "^1.0.1",
+ "sebastian/code-unit": "^1.0.6",
+ "sebastian/comparator": "^4.0.5",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.3",
+ "sebastian/exporter": "^4.0.3",
+ "sebastian/global-state": "^5.0.1",
+ "sebastian/object-enumerator": "^4.0.3",
+ "sebastian/resource-operations": "^3.0.3",
+ "sebastian/type": "^2.3.4",
+ "sebastian/version": "^3.0.2"
+ },
+ "require-dev": {
+ "ext-pdo": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.5-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ],
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.16"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/sponsors.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-23T17:10:58+00:00"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for parsing CLI options",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:08:49+00:00"
+ },
+ {
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:08:54+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:49:45+00:00"
+ },
+ {
+ "name": "sebastian/complexity",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.7",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:52:27+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:10:38+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "5.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:52:38+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-11-11T14:18:36+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "5.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-14T08:28:10+00:00"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for counting the lines of code in PHP source code",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:42:11+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:12:34+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:17:30+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:45:17+00:00"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "2.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-06-15T12:49:02+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:39:44+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.25.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-20T20:35:02+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "[email protected]",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2021-07-28T10:34:58+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ },
+ "time": "2021-03-09T10:59:23+00:00"
+ }
+ ],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
@@ -600,5 +2751,5 @@
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
- "plugin-api-version": "2.0.0"
+ "plugin-api-version": "2.1.0"
}
diff --git a/include/colors.php b/include/colors.php
index 41158f96e..5682b55a1 100644
--- a/include/colors.php
+++ b/include/colors.php
@@ -5,7 +5,7 @@ if (file_exists("lib/floIcon.php")) {
require_once "lib/floIcon.php";
}
-function _resolve_htmlcolor($color) {
+function _resolve_htmlcolor(string $color): string {
$htmlcolors = array ("aliceblue" => "#f0f8ff",
"antiquewhite" => "#faebd7",
"aqua" => "#00ffff",
@@ -162,8 +162,14 @@ function _resolve_htmlcolor($color) {
return $color;
}
-### RGB >> HSL
-function _color_rgb2hsl($rgb) {
+/**
+ * RGB >> HSL
+ *
+ * @param array{0: int, 1: int, 2: int} $rgb
+ *
+ * @return array{0: float, 1: float, 2: float}
+ */
+function _color_rgb2hsl(array $rgb): array {
$r = $rgb[0]; $g = $rgb[1]; $b = $rgb[2];
$min = min($r, min($g, $b)); $max = max($r, max($g, $b));
$delta = $max - $min; $l = ($min + $max) / 2; $s = 0;
@@ -179,8 +185,14 @@ function _color_rgb2hsl($rgb) {
} return array($h, $s, $l);
}
-### HSL >> RGB
-function _color_hsl2rgb($hsl) {
+/**
+ * HSL >> RGB
+ *
+ * @param array{0: float, 1: float, 2: float} $hsl
+ *
+ * @return array{0: int, 1: int, 2: int}
+ */
+function _color_hsl2rgb($hsl): array {
$h = $hsl[0]; $s = $hsl[1]; $l = $hsl[2];
$m2 = ($l <= 0.5) ? $l * ($s + 1) : $l + $s - $l*$s;
$m1 = $l * 2 - $m2;
@@ -190,40 +202,65 @@ function _color_hsl2rgb($hsl) {
}
### Helper function for _color_hsl2rgb().
-function _color_hue2rgb($m1, $m2, $h) {
- $h = ($h < 0) ? $h + 1 : (($h > 1) ? $h - 1 : $h);
- if ($h * 6 < 1) return $m1 + ($m2 - $m1) * $h * 6;
- if ($h * 2 < 1) return $m2;
- if ($h * 3 < 2) return $m1 + ($m2 - $m1) * (0.66666 - $h) * 6;
- return $m1;
+function _color_hue2rgb(float $m1, float $m2, float $h): int {
+ $rv = $m1;
+
+ $h = ($h < 0) ? $h + 1 : (($h > 1) ? $h - 1 : $h);
+
+ if ($h * 6 < 1) {
+ $rv = $m1 + ($m2 - $m1) * $h * 6;
+ } else if ($h * 2 < 1) {
+ $rv = $m2;
+ } else if ($h * 3 < 2) {
+ $rv = $m1 + ($m2 - $m1) * (0.66666 - $h) * 6;
+ }
+
+ return (int) round($rv);
}
-### Convert a hex color into an RGB triplet.
-function _color_unpack($hex, $normalize = false) {
+/**
+ * Convert a hex color into an RGB triplet.
+ *
+ * @return array{0: int, 1: int, 2: int}
+ */
+function _color_unpack(string $hex, bool $normalize = false): array {
+ $hex = strpos($hex, '#') !== 0 ? _resolve_htmlcolor($hex) : substr($hex, 1);
- if (strpos($hex, '#') !== 0)
- $hex = _resolve_htmlcolor($hex);
- else
- $hex = substr($hex, 1);
+ if (strlen($hex) == 4) {
+ $hex = $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3];
+ }
- if (strlen($hex) == 4) {
- $hex = $hex[1] . $hex[1] . $hex[2] . $hex[2] . $hex[3] . $hex[3];
- }
- $c = hexdec($hex);
- for ($i = 16; $i >= 0; $i -= 8) {
- $out[] = (($c >> $i) & 0xFF) / ($normalize ? 255 : 1);
- } return $out;
+ $c = hexdec($hex);
+ $out = [];
+
+ for ($i = 16; $i >= 0; $i -= 8) {
+ $out[] = (($c >> $i) & 0xFF) / ($normalize ? 255 : 1);
+ }
+
+ return $out;
}
-### Convert an RGB triplet to a hex color.
-function _color_pack($rgb, $normalize = false) {
+/**
+ * Convert an RGB triplet to a hex color.
+ *
+ * @param array{0: int, 1: int, 2: int} $rgb
+ */
+function _color_pack(array $rgb, bool $normalize = false): string {
$out = 0;
- foreach ($rgb as $k => $v) {
- $out |= (($v * ($normalize ? 255 : 1)) << (16 - $k * 8));
- }return '#'. str_pad(dechex($out), 6, 0, STR_PAD_LEFT);
+
+ foreach ($rgb as $k => $v) {
+ $out |= (($v * ($normalize ? 255 : 1)) << (16 - $k * 8));
+ }
+
+ return '#'. str_pad(dechex($out), 6, '0', STR_PAD_LEFT);
}
-function rgb2hsl($arr) {
+/**
+ * @param array{0: int, 1: int, 2: int} $arr
+ *
+ * @return array{0: float, 1: float, 2: float}
+ */
+function rgb2hsl(array $arr): array {
$r = $arr[0];
$g = $arr[1];
$b = $arr[2];
@@ -248,9 +285,14 @@ function rgb2hsl($arr) {
$del_G = ((($var_Max - $var_G ) / 6 ) + ($del_Max / 2 ) ) / $del_Max;
$del_B = ((($var_Max - $var_B ) / 6 ) + ($del_Max / 2 ) ) / $del_Max;
- if ($var_R == $var_Max) $h = $del_B - $del_G;
- else if ($var_G == $var_Max) $h = (1 / 3 ) + $del_R - $del_B;
- else if ($var_B == $var_Max) $h = (2 / 3 ) + $del_G - $del_R;
+ if ($var_R == $var_Max) {
+ $h = $del_B - $del_G;
+ } else if ($var_G == $var_Max) {
+ $h = (1 / 3 ) + $del_R - $del_B;
+ } else {
+ // ($var_B == $var_Max)
+ $h = (2 / 3 ) + $del_G - $del_R;
+ }
if ($h < 0) $h++;
if ($h > 1) $h--;
@@ -259,7 +301,12 @@ function rgb2hsl($arr) {
return array($h, $s, $v);
}
-function hsl2rgb($arr) {
+/**
+ * @param array{0: float, 1: float, 2: float} $arr
+ *
+ * @return array{0: int, 1: int, 2: int}
+ */
+function hsl2rgb(array $arr): array {
$h = $arr[0];
$s = $arr[1];
$v = $arr[2];
@@ -280,63 +327,66 @@ function hsl2rgb($arr) {
else if ($var_i == 4) { $var_R = $var_3 ; $var_G = $var_1 ; $var_B = $v ; }
else { $var_R = $v ; $var_G = $var_1 ; $var_B = $var_2 ; }
- $r = $var_R * 255;
- $g = $var_G * 255;
- $B = $var_B * 255;
+ $r = (int) round($var_R * 255);
+ $g = (int) round($var_G * 255);
+ $B = (int) round($var_B * 255);
}
return array($r, $g, $B);
}
- function colorPalette($imageFile, $numColors, $granularity = 5) {
- $granularity = max(1, abs((int)$granularity));
- $colors = array();
-
- $size = @getimagesize($imageFile);
-
- // to enable .ico support place floIcon.php into lib/
- if (strtolower($size['mime']) == 'image/vnd.microsoft.icon') {
-
- if (class_exists("floIcon")) {
+/**
+ * @return array<int, string>|null
+*/
+function colorPalette(string $imageFile, int $numColors, int $granularity = 5): ?array {
+ $granularity = max(1, abs($granularity));
+ $colors = [];
- $ico = new \floIcon();
- @$ico->readICO($imageFile);
+ $size = @getimagesize($imageFile);
+ $img = null;
- if(count($ico->images)==0)
- return false;
- else
- $img = @$ico->images[count($ico->images)-1]->getImageResource();
+ // to enable .ico support place floIcon.php into lib/
+ if (strtolower($size['mime']) == 'image/vnd.microsoft.icon') {
+ if (class_exists("floIcon")) {
+ $ico = new \floIcon();
+ @$ico->readICO($imageFile);
+ if(count($ico->images) == 0) {
+ return null;
} else {
- return false;
+ $img = @$ico->images[count($ico->images)-1]->getImageResource();
}
-
- } else if ($size[0] > 0 && $size[1] > 0) {
- $img = @imagecreatefromstring(file_get_contents($imageFile));
}
+ return null;
+ } else if ($size[0] > 0 && $size[1] > 0) {
+ $img = @imagecreatefromstring(file_get_contents($imageFile));
+ }
- if (!$img) return false;
-
- for($x = 0; $x < $size[0]; $x += $granularity) {
- for($y = 0; $y < $size[1]; $y += $granularity) {
- $thisColor = imagecolorat($img, $x, $y);
- $rgb = imagecolorsforindex($img, $thisColor);
- $red = round(round(($rgb['red'] / 0x33)) * 0x33);
- $green = round(round(($rgb['green'] / 0x33)) * 0x33);
- $blue = round(round(($rgb['blue'] / 0x33)) * 0x33);
- $thisRGB = sprintf('%02X%02X%02X', $red, $green, $blue);
- if(array_key_exists($thisRGB, $colors)) {
- $colors[$thisRGB]++;
- } else{
- $colors[$thisRGB] = 1;
- }
- }
- }
+ if (!$img) {
+ return null;
+ }
- arsort($colors);
- return array_slice(array_keys($colors), 0, $numColors);
+ for($x = 0; $x < $size[0]; $x += $granularity) {
+ for($y = 0; $y < $size[1]; $y += $granularity) {
+ $thisColor = imagecolorat($img, $x, $y);
+ $rgb = imagecolorsforindex($img, $thisColor);
+ $red = round(round(($rgb['red'] / 0x33)) * 0x33);
+ $green = round(round(($rgb['green'] / 0x33)) * 0x33);
+ $blue = round(round(($rgb['blue'] / 0x33)) * 0x33);
+ $thisRGB = sprintf('%02X%02X%02X', $red, $green, $blue);
+
+ if(array_key_exists($thisRGB, $colors)) {
+ $colors[$thisRGB]++;
+ } else {
+ $colors[$thisRGB] = 1;
+ }
+ }
}
- function calculate_avg_color($iconFile) {
+ arsort($colors);
+ return array_slice(array_keys($colors), 0, $numColors);
+}
+
+ function calculate_avg_color(string $iconFile): string {
$palette = colorPalette($iconFile, 4, 4);
if (is_array($palette)) {
diff --git a/include/controls.php b/include/controls.php
index a1a1bc59b..1ea019769 100755
--- a/include/controls.php
+++ b/include/controls.php
@@ -1,7 +1,10 @@
<?php
namespace Controls;
- function attributes_to_string(array $attributes) {
+ /**
+ * @param array<string, mixed> $attributes
+ */
+ function attributes_to_string(array $attributes): string {
$rv = [];
foreach ($attributes as $k => $v) {
@@ -21,21 +24,27 @@
return hidden_tag("op", strtolower(get_class($plugin) . \PluginHost::PUBLIC_METHOD_DELIMITER . $method));
} */
- function public_method_tags(\Plugin $plugin, string $method) {
+ function public_method_tags(\Plugin $plugin, string $method): string {
return hidden_tag("op", strtolower(get_class($plugin) . \PluginHost::PUBLIC_METHOD_DELIMITER . $method));
}
- function pluginhandler_tags(\Plugin $plugin, string $method) {
+ function pluginhandler_tags(\Plugin $plugin, string $method): string {
return hidden_tag("op", "pluginhandler") .
hidden_tag("plugin", strtolower(get_class($plugin))) .
hidden_tag("method", $method);
}
- function button_tag(string $value, string $type, array $attributes = []) {
+ /**
+ * @param array<string, mixed> $attributes
+ */
+ function button_tag(string $value, string $type, array $attributes = []): string {
return "<button dojoType=\"dijit.form.Button\" ".attributes_to_string($attributes)." type=\"$type\">$value</button>";
}
- function input_tag(string $name, string $value, string $type = "text", array $attributes = [], string $id = "") {
+ /**
+ * @param array<string, mixed> $attributes
+ */
+ function input_tag(string $name, string $value, string $type = "text", array $attributes = [], string $id = ""): string {
$attributes_str = attributes_to_string($attributes);
$dojo_type = strpos($attributes_str, "dojoType") === false ? "dojoType='dijit.form.TextBox'" : "";
@@ -43,23 +52,40 @@
type=\"$type\" value=\"".htmlspecialchars($value)."\">";
}
- function number_spinner_tag(string $name, string $value, array $attributes = [], string $id = "") {
+ /**
+ * @param array<string, mixed> $attributes
+ */
+ function number_spinner_tag(string $name, string $value, array $attributes = [], string $id = ""): string {
return input_tag($name, $value, "text", array_merge(["dojoType" => "dijit.form.NumberSpinner"], $attributes), $id);
}
- function submit_tag(string $value, array $attributes = []) {
+ /**
+ * @param array<string, mixed> $attributes
+ */
+ function submit_tag(string $value, array $attributes = []): string {
return button_tag($value, "submit", array_merge(["class" => "alt-primary"], $attributes));
}
- function cancel_dialog_tag(string $value, array $attributes = []) {
+ /**
+ * @param array<string, mixed> $attributes
+ */
+ function cancel_dialog_tag(string $value, array $attributes = []): string {
return button_tag($value, "", array_merge(["onclick" => "App.dialogOf(this).hide()"], $attributes));
}
- function icon(string $icon, array $attributes = []) {
+ /**
+ * @param array<string, mixed> $attributes
+ */
+ function icon(string $icon, array $attributes = []): string {
return "<i class=\"material-icons\" ".attributes_to_string($attributes).">$icon</i>";
}
- function select_tag(string $name, $value, array $values, array $attributes = [], string $id = "") {
+ /**
+ * @param mixed $value
+ * @param array<int|string, string> $values
+ * @param array<string, mixed> $attributes
+ */
+ function select_tag(string $name, $value, array $values, array $attributes = [], string $id = ""): string {
$attributes_str = attributes_to_string($attributes);
$dojo_type = strpos($attributes_str, "dojoType") === false ? "dojoType='fox.form.Select'" : "";
@@ -83,7 +109,12 @@
return select_tag($name, $value, $values, $attributes, $id);
}*/
- function select_hash(string $name, $value, array $values, array $attributes = [], string $id = "") {
+ /**
+ * @param mixed $value
+ * @param array<int|string, string> $values
+ * @param array<string, mixed> $attributes
+ */
+ function select_hash(string $name, $value, array $values, array $attributes = [], string $id = ""): string {
$attributes_str = attributes_to_string($attributes);
$dojo_type = strpos($attributes_str, "dojoType") === false ? "dojoType='fox.form.Select'" : "";
@@ -93,7 +124,7 @@
foreach ($values as $k => $v) {
$is_sel = ($k == $value) ? "selected=\"selected\"" : "";
- $rv .= "<option value=\"".htmlspecialchars($k)."\" $is_sel>".htmlspecialchars($v)."</option>";
+ $rv .= "<option value=\"".htmlspecialchars("$k")."\" $is_sel>".htmlspecialchars($v)."</option>";
}
$rv .= "</select>";
@@ -101,13 +132,19 @@
return $rv;
}
- function hidden_tag(string $name, string $value, array $attributes = []) {
+ /**
+ * @param array<string, mixed> $attributes
+ */
+ function hidden_tag(string $name, string $value, array $attributes = []): string {
return "<input dojoType=\"dijit.form.TextBox\" style=\"display : none\"
".attributes_to_string($attributes)." name=\"".htmlspecialchars($name)."\"
value=\"".htmlspecialchars($value)."\">";
}
- function checkbox_tag(string $name, bool $checked = false, string $value = "", array $attributes = [], string $id = "") {
+ /**
+ * @param array<string, mixed> $attributes
+ */
+ function checkbox_tag(string $name, bool $checked = false, string $value = "", array $attributes = [], string $id = ""): string {
$is_checked = $checked ? "checked" : "";
$value_str = $value ? "value=\"".htmlspecialchars($value)."\"" : "";
@@ -115,8 +152,11 @@
$value_str $is_checked ".attributes_to_string($attributes)." id=\"".htmlspecialchars($id)."\">";
}
+ /**
+ * @param array<string, mixed> $attributes
+ */
function select_feeds_cats(string $name, int $default_id = null, array $attributes = [],
- bool $include_all_cats = true, string $root_id = null, int $nest_level = 0, string $id = "") {
+ bool $include_all_cats = true, string $root_id = null, int $nest_level = 0, string $id = ""): string {
$ret = "";
diff --git a/include/controls_compat.php b/include/controls_compat.php
index d1c2c12b5..5a2a9f2ba 100644
--- a/include/controls_compat.php
+++ b/include/controls_compat.php
@@ -1,7 +1,9 @@
<?php
-
-function stylesheet_tag($filename, $attributes = []) {
+/**
+ * @param array<string, mixed> $attributes
+ */
+function stylesheet_tag(string $filename, array $attributes = []): string {
$attributes_str = \Controls\attributes_to_string(
array_merge(
@@ -16,7 +18,10 @@ function stylesheet_tag($filename, $attributes = []) {
return "<link $attributes_str/>\n";
}
-function javascript_tag($filename, $attributes = []) {
+/**
+ * @param array<string, mixed> $attributes
+ */
+function javascript_tag(string $filename, array $attributes = []): string {
$attributes_str = \Controls\attributes_to_string(
array_merge(
[
@@ -29,26 +34,26 @@ function javascript_tag($filename, $attributes = []) {
return "<script $attributes_str></script>\n";
}
-function format_warning($msg, $id = "") {
+function format_warning(string $msg, string $id = ""): string {
return "<div class=\"alert\" id=\"$id\">$msg</div>";
}
-function format_notice($msg, $id = "") {
+function format_notice(string $msg, string $id = ""): string {
return "<div class=\"alert alert-info\" id=\"$id\">$msg</div>";
}
-function format_error($msg, $id = "") {
+function format_error(string $msg, string $id = ""): string {
return "<div class=\"alert alert-danger\" id=\"$id\">$msg</div>";
}
-function print_notice($msg) {
+function print_notice(string $msg): string {
return print format_notice($msg);
}
-function print_warning($msg) {
+function print_warning(string $msg): string {
return print format_warning($msg);
}
-function print_error($msg) {
+function print_error(string $msg): string {
return print format_error($msg);
}
diff --git a/include/errorhandler.php b/include/errorhandler.php
index 2ad0be062..30b6902b3 100644
--- a/include/errorhandler.php
+++ b/include/errorhandler.php
@@ -1,5 +1,8 @@
<?php
-function format_backtrace($trace) {
+/**
+ * @param array<int, array<string, mixed>> $trace
+ */
+function format_backtrace($trace): string {
$rv = "";
$idx = 1;
@@ -8,7 +11,7 @@ function format_backtrace($trace) {
if (isset($e["file"]) && isset($e["line"])) {
$fmt_args = [];
- if (is_array($e["args"])) {
+ if (is_array($e["args"] ?? false)) {
foreach ($e["args"] as $a) {
if (is_object($a)) {
array_push($fmt_args, "{" . get_class($a) . "}");
@@ -16,7 +19,7 @@ function format_backtrace($trace) {
array_push($fmt_args, "[" . truncate_string(json_encode($a), 256, "...")) . "]";
} else if (is_resource($a)) {
array_push($fmt_args, truncate_string(get_resource_type($a), 256, "..."));
- } else {
+ } else if (is_string($a)) {
array_push($fmt_args, truncate_string($a, 256, "..."));
}
}
@@ -39,7 +42,7 @@ function format_backtrace($trace) {
return $rv;
}
-function ttrss_error_handler($errno, $errstr, $file, $line) {
+function ttrss_error_handler(int $errno, string $errstr, string $file, int $line): bool {
/*if (version_compare(PHP_VERSION, '8.0.0', '<')) {
if (error_reporting() == 0 || !$errno) return false;
} else {
@@ -59,7 +62,7 @@ function ttrss_error_handler($errno, $errstr, $file, $line) {
return false;
}
-function ttrss_fatal_handler() {
+function ttrss_fatal_handler(): bool {
$error = error_get_last();
if ($error !== NULL) {
diff --git a/include/functions.php b/include/functions.php
index 922d3765c..91fb62ec5 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -2,7 +2,7 @@
define('LABEL_BASE_INDEX', -1024);
define('PLUGIN_FEED_BASE_INDEX', -128);
- /** constant is @deprecated, use Config::SCHEMA_VERSION instead */
+ /** @deprecated by Config::SCHEMA_VERSION */
define('SCHEMA_VERSION', Config::SCHEMA_VERSION);
if (version_compare(PHP_VERSION, '8.0.0', '<')) {
@@ -36,15 +36,24 @@
define('SUBSTRING_FOR_DATE', 'SUBSTRING');
}
+ /**
+ * @return bool|int|null|string
+ */
function get_pref(string $pref_name, int $owner_uid = null) {
return Prefs::get($pref_name, $owner_uid ? $owner_uid : $_SESSION["uid"], $_SESSION["profile"] ?? null);
}
- function set_pref(string $pref_name, $value, int $owner_uid = null, bool $strip_tags = true) {
+ /**
+ * @param bool|int|string $value
+ */
+ function set_pref(string $pref_name, $value, int $owner_uid = null, bool $strip_tags = true): bool {
return Prefs::set($pref_name, $value, $owner_uid ? $owner_uid : $_SESSION["uid"], $_SESSION["profile"] ?? null, $strip_tags);
}
- function get_translations() {
+ /**
+ * @return array<string, string>
+ */
+ function get_translations(): array {
$t = array(
"auto" => __("Detect automatically"),
"ar_SA" => "العربيّة (Arabic)",
@@ -81,7 +90,7 @@
require_once "lib/gettext/gettext.inc.php";
- function startup_gettext() {
+ function startup_gettext(): void {
$selected_locale = "";
@@ -157,75 +166,115 @@
require_once 'controls.php';
require_once 'controls_compat.php';
- define('SELF_USER_AGENT', 'Tiny Tiny RSS/' . Config::get_version() . ' (http://tt-rss.org/)');
- ini_set('user_agent', SELF_USER_AGENT);
+ ini_set('user_agent', Config::get_user_agent());
/* compat shims */
- /** function is @deprecated by Config::get_version() */
+ /**
+ * @deprecated by Config::get_version()
+ *
+ * @return array<string, mixed>|string
+ */
function get_version() {
return Config::get_version();
}
- /** function is @deprecated by Config::get_schema_version() */
- function get_schema_version() {
+ /** @deprecated by Config::get_schema_version() */
+ function get_schema_version(): int {
return Config::get_schema_version();
}
- /** function is @deprecated by Debug::log() */
- function _debug($msg) {
- Debug::log($msg);
+ /** @deprecated by Debug::log() */
+ function _debug(string $msg): void {
+ Debug::log($msg);
}
- /** function is @deprecated */
- function getFeedUnread($feed, $is_cat = false) {
+
+ /** @deprecated by Feeds::_get_counters()
+ * @param int|string $feed feed id or tag name
+ * @param bool $is_cat
+ * @return int
+ * @throws PDOException
+ */
+ function getFeedUnread($feed, bool $is_cat = false): int {
return Feeds::_get_counters($feed, $is_cat, true, $_SESSION["uid"]);
}
- /** function is @deprecated by Sanitizer::sanitize() */
- function sanitize($str, $force_remove_images = false, $owner = false, $site_url = false, $highlight_words = false, $article_id = false) {
+ /**
+ * @deprecated by Sanitizer::sanitize()
+ *
+ * @param array<int, string>|null $highlight_words Words to highlight in the HTML output.
+ *
+ * @return false|string The HTML, or false if an error occurred.
+ */
+ function sanitize(string $str, bool $force_remove_images = false, int $owner = null, string $site_url = null, array $highlight_words = null, int $article_id = null) {
return Sanitizer::sanitize($str, $force_remove_images, $owner, $site_url, $highlight_words, $article_id);
}
- /** function is @deprecated by UrlHelper::fetch() */
+ /**
+ * @deprecated by UrlHelper::fetch()
+ *
+ * @param array<string, bool|int|string>|string $params
+ * @return bool|string false if something went wrong, otherwise string contents
+ */
function fetch_file_contents($params) {
return UrlHelper::fetch($params);
}
- /** function is @deprecated by UrlHelper::rewrite_relative() */
+ /**
+ * @deprecated by UrlHelper::rewrite_relative()
+ *
+ * Converts a (possibly) relative URL to a absolute one, using provided base URL.
+ * Provides some exceptions for additional schemes like data: if called with owning element/attribute.
+ *
+ * @param string $base_url Base URL (i.e. from where the document is)
+ * @param string $rel_url Possibly relative URL in the document
+ *
+ * @return string Absolute URL
+ */
function rewrite_relative_url($base_url, $rel_url) {
return UrlHelper::rewrite_relative($base_url, $rel_url);
}
- /** function is @deprecated by UrlHelper::validate() */
- function validate_url($url) {
+ /**
+ * @deprecated by UrlHelper::validate()
+ *
+ * @return bool|string false if something went wrong, otherwise the URL string
+ */
+ function validate_url(string $url) {
return UrlHelper::validate($url);
}
- /** function is @deprecated by UserHelper::authenticate() */
- function authenticate_user($login, $password, $check_only = false, $service = false) {
+ /** @deprecated by UserHelper::authenticate() */
+ function authenticate_user(string $login = null, string $password = null, bool $check_only = false, string $service = null): bool {
return UserHelper::authenticate($login, $password, $check_only, $service);
}
- /** function is @deprecated by TimeHelper::smart_date_time() */
- function smart_date_time($timestamp, $tz_offset = 0, $owner_uid = false, $eta_min = false) {
+ /** @deprecated by TimeHelper::smart_date_time() */
+ function smart_date_time(int $timestamp, int $tz_offset = 0, int $owner_uid = null, bool $eta_min = false): string {
return TimeHelper::smart_date_time($timestamp, $tz_offset, $owner_uid, $eta_min);
}
- /** function is @deprecated by TimeHelper::make_local_datetime() */
- function make_local_datetime($timestamp, $long, $owner_uid = false, $no_smart_dt = false, $eta_min = false) {
+ /** @deprecated by TimeHelper::make_local_datetime() */
+ function make_local_datetime(string $timestamp, bool $long, int $owner_uid = null, bool $no_smart_dt = false, bool $eta_min = false): string {
return TimeHelper::make_local_datetime($timestamp, $long, $owner_uid, $no_smart_dt, $eta_min);
}
// this returns Config::SELF_URL_PATH sans ending slash
- /** function is @deprecated by Config::get_self_url() */
- function get_self_url_prefix() {
+ /** @deprecated by Config::get_self_url() */
+ function get_self_url_prefix(): string {
return Config::get_self_url();
}
/* end compat shims */
- // this is used for user http parameters unless HTML code is actually needed
+ /**
+ * This is used for user http parameters unless HTML code is actually needed.
+ *
+ * @param mixed $param
+ *
+ * @return mixed|null
+ */
function clean($param) {
if (is_array($param)) {
return array_map("trim", array_map("strip_tags", $param));
@@ -244,7 +293,7 @@
}
}
- function make_password($length = 12) {
+ function make_password(int $length = 12): string {
$password = "";
$possible = "0123456789abcdfghjkmnpqrstvwxyzABCDFGHJKMNPQRSTVWXYZ*%+^";
@@ -269,11 +318,11 @@
return $password;
}
- function validate_csrf($csrf_token) {
+ function validate_csrf(?string $csrf_token): bool {
return isset($csrf_token) && hash_equals($_SESSION['csrf_token'] ?? "", $csrf_token);
}
- function truncate_string($str, $max_len, $suffix = '&hellip;') {
+ function truncate_string(string $str, int $max_len, string $suffix = '&hellip;'): string {
if (mb_strlen($str, "utf-8") > $max_len) {
return mb_substr($str, 0, $max_len, "utf-8") . $suffix;
} else {
@@ -281,7 +330,7 @@
}
}
- function mb_substr_replace($original, $replacement, $position, $length) {
+ function mb_substr_replace(string $original, string $replacement, int $position, int $length): string {
$startString = mb_substr($original, 0, $position, "UTF-8");
$endString = mb_substr($original, $position + $length, mb_strlen($original), "UTF-8");
@@ -290,7 +339,7 @@
return $out;
}
- function truncate_middle($str, $max_len, $suffix = '&hellip;') {
+ function truncate_middle(string $str, int $max_len, string $suffix = '&hellip;'): string {
if (mb_strlen($str) > $max_len) {
return mb_substr_replace($str, $suffix, $max_len / 2, mb_strlen($str) - $max_len);
} else {
@@ -298,15 +347,20 @@
}
}
- function sql_bool_to_bool($s) {
+ /** Convert values accepted by tt-rss as true/false to PHP booleans
+ * @see https://tt-rss.org/wiki/ApiReference#boolean-values
+ * @param null|string $s null values are considered false
+ * @return bool
+ */
+ function sql_bool_to_bool(?string $s): bool {
return $s && ($s !== "f" && $s !== "false"); //no-op for PDO, backwards compat for legacy layer
}
- function bool_to_sql_bool($s) {
+ function bool_to_sql_bool(bool $s): int {
return $s ? 1 : 0;
}
- function file_is_locked($filename) {
+ function file_is_locked(string $filename): bool {
if (file_exists(Config::get(Config::LOCK_DIRECTORY) . "/$filename")) {
if (function_exists('flock')) {
$fp = @fopen(Config::get(Config::LOCK_DIRECTORY) . "/$filename", "r");
@@ -328,7 +382,10 @@
}
}
- function make_lockfile($filename) {
+ /**
+ * @return resource|false A file pointer resource on success, or false on error.
+ */
+ function make_lockfile(string $filename) {
$fp = fopen(Config::get(Config::LOCK_DIRECTORY) . "/$filename", "w");
if ($fp && flock($fp, LOCK_EX | LOCK_NB)) {
@@ -352,38 +409,44 @@
}
}
- function checkbox_to_sql_bool($val) {
+ /**
+ * @param mixed $val
+ */
+ function checkbox_to_sql_bool($val): int {
return ($val == "on") ? 1 : 0;
}
- function uniqid_short() {
+ function uniqid_short(): string {
return uniqid(base_convert((string)rand(), 10, 36));
}
- function T_sprintf() {
+ function T_sprintf(): string {
$args = func_get_args();
return vsprintf(__(array_shift($args)), $args);
}
- function T_nsprintf() {
+ function T_nsprintf(): string {
$args = func_get_args();
return vsprintf(_ngettext(array_shift($args), array_shift($args), array_shift($args)), $args);
}
- function init_plugins() {
+ function init_plugins(): bool {
PluginHost::getInstance()->load(Config::get(Config::PLUGINS), PluginHost::KIND_ALL);
return true;
}
if (!function_exists('gzdecode')) {
- function gzdecode($string) { // no support for 2nd argument
+ /**
+ * @return false|string The decoded string or false if an error occurred.
+ */
+ function gzdecode(string $string) { // no support for 2nd argument
return file_get_contents('compress.zlib://data:who/cares;base64,'.
base64_encode($string));
}
}
- function get_random_bytes($length) {
+ function get_random_bytes(int $length): string {
if (function_exists('random_bytes')) {
return random_bytes($length);
} else if (function_exists('openssl_random_pseudo_bytes')) {
@@ -398,7 +461,7 @@
}
}
- function read_stdin() {
+ function read_stdin(): ?string {
$fp = fopen("php://stdin", "r");
if ($fp) {
@@ -410,11 +473,19 @@
return null;
}
- function implements_interface($class, $interface) {
- return in_array($interface, class_implements($class));
+ /**
+ * @param object|string $class
+ */
+ function implements_interface($class, string $interface): bool {
+ $class_implemented_interfaces = class_implements($class);
+
+ if ($class_implemented_interfaces) {
+ return in_array($interface, $class_implemented_interfaces);
+ }
+ return false;
}
- function get_theme_path($theme) {
+ function get_theme_path(string $theme): string {
$check = "themes/$theme";
if (file_exists($check)) return $check;
@@ -424,15 +495,18 @@
return "";
}
- function theme_exists($theme) {
+ function theme_exists(string $theme): bool {
return file_exists("themes/$theme") || file_exists("themes.local/$theme");
}
- function arr_qmarks($arr) {
+ /**
+ * @param array<int, mixed> $arr
+ */
+ function arr_qmarks(array $arr): string {
return str_repeat('?,', count($arr) - 1) . '?';
}
- function get_scripts_timestamp() {
+ function get_scripts_timestamp(): int {
$files = glob("js/*.js");
$ts = 0;
diff --git a/include/sessions.php b/include/sessions.php
index 7f61f6dbe..48afd0a8b 100644
--- a/include/sessions.php
+++ b/include/sessions.php
@@ -1,6 +1,8 @@
<?php
namespace Sessions;
+ use UserHelper;
+
require_once "autoload.php";
require_once "functions.php";
require_once "errorhandler.php";
@@ -19,7 +21,17 @@
ini_set("session.gc_maxlifetime", $session_expire);
ini_set("session.cookie_lifetime", "0");
- function validate_session() {
+ // prolong PHP session cookie
+ if (isset($_COOKIE[$session_name]))
+ setcookie($session_name,
+ $_COOKIE[$session_name],
+ time() + $session_expire,
+ ini_get("session.cookie_path"),
+ ini_get("session.cookie_domain"),
+ ini_get("session.cookie_secure"),
+ ini_get("session.cookie_httponly"));
+
+ function validate_session(): bool {
if (\Config::get(\Config::SINGLE_USER_MODE)) return true;
$pdo = \Db::pdo();
@@ -32,6 +44,11 @@
$_SESSION["login_error_msg"] = __("Session failed to validate (password changed)");
return false;
}
+
+ if ($user->access_level == UserHelper::ACCESS_LEVEL_DISABLED) {
+ $_SESSION["login_error_msg"] = __("Session failed to validate (account is disabled)");
+ return false;
+ }
} else {
$_SESSION["login_error_msg"] = __("Session failed to validate (user not found)");
return false;
@@ -41,11 +58,11 @@
return true;
}
- function ttrss_open ($s, $n) {
+ function ttrss_open(string $savePath, string $sessionName): bool {
return true;
}
- function ttrss_read ($id){
+ function ttrss_read(string $id): string {
global $session_expire;
$sth = \Db::pdo()->prepare("SELECT data FROM ttrss_sessions WHERE id=?");
@@ -67,7 +84,7 @@
}
- function ttrss_write ($id, $data) {
+ function ttrss_write(string $id, string $data): bool {
global $session_expire;
$data = base64_encode($data);
@@ -88,18 +105,18 @@
return true;
}
- function ttrss_close () {
+ function ttrss_close(): bool {
return true;
}
- function ttrss_destroy($id) {
+ function ttrss_destroy(string $id): bool {
$sth = \Db::pdo()->prepare("DELETE FROM ttrss_sessions WHERE id = ?");
$sth->execute([$id]);
return true;
}
- function ttrss_gc ($expire) {
+ function ttrss_gc(int $lifetime): bool {
\Db::pdo()->query("DELETE FROM ttrss_sessions WHERE expire < " . time());
return true;
@@ -109,7 +126,10 @@
session_set_save_handler('\Sessions\ttrss_open',
'\Sessions\ttrss_close', '\Sessions\ttrss_read',
'\Sessions\ttrss_write', '\Sessions\ttrss_destroy',
- '\Sessions\ttrss_gc');
+ '\Sessions\ttrss_gc'); // @phpstan-ignore-line
+ // PHPStan complains about '\Sessions\ttrss_gc' if its $lifetime param isn't marked as string,
+ // but the docs say it's an int. If it is actually a string it'll get coerced to an int.
+
register_shutdown_function('session_write_close');
if (!defined('NO_SESSION_AUTOSTART')) {
diff --git a/index.php b/index.php
index b602042bd..b1f3274f3 100644
--- a/index.php
+++ b/index.php
@@ -159,74 +159,74 @@
<div id="toolbar-frame" dojoType="dijit.layout.ContentPane" region="top">
<div id="toolbar" dojoType="fox.Toolbar">
- <i class="material-icons net-alert" style="display : none"
+ <!-- order 0, default -->
+
+ <?php
+ PluginHost::getInstance()->run_hooks_callback(PluginHost::HOOK_MAIN_TOOLBAR_BUTTON, function ($result) {
+ echo $result;
+ });
+ ?>
+
+ <!-- order 5: alert icons -->
+
+ <i class="material-icons net-alert" style="display : none; order : 5"
title="<?= __("Communication problem with server.") ?>">error_outline</i>
- <i class="material-icons log-alert" style="display : none" onclick="App.openPreferences('system')"
+ <i class="material-icons log-alert" style="display : none; order : 5" onclick="App.openPreferences('system')"
title="<?= __("Recent entries found in event log.") ?>">warning</i>
- <i id="updates-available" class="material-icons icon-new-version" style="display : none"
+ <i id="updates-available" class="material-icons icon-new-version" style="display : none; order: 5"
title="<?= __('Updates are available from Git.') ?>">new_releases</i>
- <?php
+ <!-- order 10: headlines toolbar -->
- PluginHost::getInstance()->run_hooks_callback(PluginHost::HOOK_MAIN_TOOLBAR_BUTTON, function ($result) {
- echo $result;
- });
- ?>
+ <div id="toolbar-headlines" dojoType="fox.Toolbar" style="order : 10"> </div>
- <div id="toolbar-headlines" dojoType="fox.Toolbar" style="order : 10">
-
- </div>
+ <!-- order 20: main toolbar contents (dropdowns) -->
<form id="toolbar-main" dojoType="dijit.form.Form" action="" style="order : 20" onsubmit="return false">
- <select name="view_mode" title="<?= __('Show articles') ?>"
- onchange="Feeds.onViewModeChanged()"
- dojoType="fox.form.Select">
- <option selected="selected" value="adaptive"><?= __('Adaptive') ?></option>
- <option value="all_articles"><?= __('All Articles') ?></option>
- <option value="marked"><?= __('Starred') ?></option>
- <option value="published"><?= __('Published') ?></option>
- <option value="unread"><?= __('Unread') ?></option>
- <option value="has_note"><?= __('With Note') ?></option>
- </select>
-
- <select title="<?= __('Sort articles') ?>"
- onchange="Feeds.onViewModeChanged()"
- dojoType="fox.form.Select" name="order_by">
-
- <option selected="selected" value="default"><?= __('Default') ?></option>
- <option value="feed_dates"><?= __('Newest first') ?></option>
- <option value="date_reverse"><?= __('Oldest first') ?></option>
- <option value="title"><?= __('Title') ?></option>
-
- <?php
- PluginHost::getInstance()->run_hooks_callback(PluginHost::HOOK_HEADLINES_CUSTOM_SORT_MAP, function ($result) {
- foreach ($result as $sort_value => $sort_title) {
- print "<option value=\"" . htmlspecialchars($sort_value) . "\">$sort_title</option>";
- }
- });
- ?>
- </select>
-
- <div class="catchup-button" dojoType="fox.form.ComboButton" onclick="Feeds.catchupCurrent()">
- <span><?= __('Mark as read') ?></span>
- <div dojoType="dijit.DropDownMenu">
- <div dojoType="dijit.MenuItem" onclick="Feeds.catchupCurrent('1day')">
- <?= __('Older than one day') ?>
- </div>
- <div dojoType="dijit.MenuItem" onclick="Feeds.catchupCurrent('1week')">
- <?= __('Older than one week') ?>
- </div>
- <div dojoType="dijit.MenuItem" onclick="Feeds.catchupCurrent('2week')">
- <?= __('Older than two weeks') ?>
- </div>
- </div>
- </div>
+ <select name="view_mode" title="<?= __('Show articles') ?>"
+ onchange="Feeds.onViewModeChanged()"
+ dojoType="fox.form.Select">
+ <option selected="selected" value="adaptive"><?= __('Adaptive') ?></option>
+ <option value="all_articles"><?= __('All Articles') ?></option>
+ <option value="marked"><?= __('Starred') ?></option>
+ <option value="published"><?= __('Published') ?></option>
+ <option value="unread"><?= __('Unread') ?></option>
+ <option value="has_note"><?= __('With Note') ?></option>
+ </select>
+
+ <select title="<?= __('Sort articles') ?>"
+ onchange="Feeds.onViewModeChanged()"
+ dojoType="fox.form.Select" name="order_by">
+
+ <option selected="selected" value="default"><?= __('Default') ?></option>
+ <option value="feed_dates"><?= __('Newest first') ?></option>
+ <option value="date_reverse"><?= __('Oldest first') ?></option>
+ <option value="title"><?= __('Title') ?></option>
+
+ <?php
+ PluginHost::getInstance()->run_hooks_callback(PluginHost::HOOK_HEADLINES_CUSTOM_SORT_MAP, function ($result) {
+ foreach ($result as $sort_value => $sort_title) {
+ print "<option value=\"" . htmlspecialchars($sort_value) . "\">$sort_title</option>";
+ }
+ });
+ ?>
+ </select>
+
+ <select class="catchup-button" id="main-catchup-dropdown" dojoType="fox.form.Select"
+ data-prevent-value-change="true">
+ <option value=""><?= __('Mark as read') ?></option>
+ <option value="1day"><?= __('Older than one day') ?></option>
+ <option value="1week"><?= __('Older than one week') ?></option>
+ <option value="2week"><?= __('Older than two weeks') ?></option>
+ </select>
</form>
+ <!-- toolbar actions dropdown: order 30 -->
+
<div class="action-chooser" style="order : 30">
<?php
@@ -235,9 +235,32 @@
});
?>
- <div dojoType="fox.form.DropDownButton" class="action-button" title="<?= __('Actions...') ?>">
+ <div dojoType="fox.form.DropDownButton" class="action-button" title="<?= __('Actions...') ?>">
<span><i class="material-icons">menu</i></span>
<div dojoType="dijit.Menu" style="display: none">
+ <script type='dojo/method' event='onOpen' args='evt,a,b,c'>
+ const widescreen = this.getChildren().find((m) => m.id == 'qmcToggleWidescreen');
+ const expanded = this.getChildren().find((m) => m.id == 'qmcToggleExpanded');
+ const combined = this.getChildren().find((m) => m.id == 'qmcToggleCombined');
+
+ if (combined)
+ combined.attr('label',
+ App.isCombinedMode() ? __('Switch to three panel view') : __('Switch to combined view'));
+
+ if (widescreen)
+ widescreen
+ .attr('hidden', !!App.isCombinedMode())
+ .attr('label',
+ App.isWideScreenMode() ? __('Disable widescreen mode') : __('Enable widescreen mode'));
+
+ if (expanded)
+ expanded
+ .attr('hidden', !App.isCombinedMode())
+ .attr('label',
+ App.isExpandedMode() ? __('Expand selected article only') : __('Expand all articles'));
+
+ </script>
+
<div dojoType="dijit.MenuItem" onclick="App.onActionSelected('qmcPrefs')"><?= __('Preferences...') ?></div>
<div dojoType="dijit.MenuItem" onclick="App.onActionSelected('qmcSearch')"><?= __('Search...') ?></div>
<div dojoType="dijit.MenuItem" disabled="1"><?= __('Feed actions:') ?></div>
@@ -247,8 +270,13 @@
<div dojoType="dijit.MenuItem" disabled="1"><?= __('All feeds:') ?></div>
<div dojoType="dijit.MenuItem" onclick="App.onActionSelected('qmcCatchupAll')"><?= __('Mark as read') ?></div>
<div dojoType="dijit.MenuItem" onclick="App.onActionSelected('qmcShowOnlyUnread')"><?= __('(Un)hide read feeds') ?></div>
- <div dojoType="dijit.MenuItem" disabled="1"><?= __('Other actions:') ?></div>
- <div dojoType="dijit.MenuItem" onclick="App.onActionSelected('qmcToggleWidescreen')"><?= __('Toggle widescreen mode') ?></div>
+ <div dojoType="dijit.MenuItem" disabled="1"><?= __('UI layout:') ?></div>
+ <div dojoType="dijit.MenuItem" id="qmcToggleCombined" onclick="App.onActionSelected('qmcToggleCombined')"><?= __('Toggle combined mode') ?></div>
+ <div dojoType="dijit.MenuItem" id="qmcToggleWidescreen" onclick="App.onActionSelected('qmcToggleWidescreen')">
+ <?= __('Toggle widescreen mode') ?></div>
+ <div dojoType="dijit.MenuItem" id="qmcToggleExpanded" onclick="App.onActionSelected('qmcToggleExpanded')">
+ <?= __('Toggle expand all articles') ?></div>
+ <div dojoType="dijit.MenuItem" disabled="1"><?= __('Other actions:') ?></div>
<div dojoType="dijit.MenuItem" onclick="App.onActionSelected('qmcHKhelp')"><?= __('Keyboard shortcuts help') ?></div>
<?php
diff --git a/js/App.js b/js/App.js
index 0afcb0b77..262988135 100644
--- a/js/App.js
+++ b/js/App.js
@@ -17,6 +17,9 @@ const App = {
hotkey_actions: {},
is_prefs: false,
LABEL_BASE_INDEX: -1024,
+ UserAccessLevels: {
+ ACCESS_LEVEL_READONLY: -1
+ },
_translations: {},
Hash: {
get: function() {
@@ -76,10 +79,15 @@ const App = {
</select>
`
},
- select_hash: function(name, value, values = {}, attributes = {}, id = "") {
+ select_hash: function(name, value, values = {}, attributes = {}, id = "", params = {}) {
+ let keys = Object.keys(values);
+
+ if (params.numeric_sort)
+ keys = keys.sort((a,b) => a - b);
+
return `
<select name="${name}" dojoType="fox.form.Select" id="${App.escapeHtml(id)}" ${this.attributes_to_string(attributes)}>
- ${Object.keys(values).map((vk) =>
+ ${keys.map((vk) =>
`<option ${vk == value ? 'selected="selected"' : ''} value="${App.escapeHtml(vk)}">${App.escapeHtml(values[vk])}</option>`
).join("")}
</select>
@@ -278,7 +286,33 @@ const App = {
},
isCombinedMode: function() {
- return this.getInitParam("combined_display_mode");
+ return !!this.getInitParam("combined_display_mode");
+ },
+ setCombinedMode: function(combined) {
+ const value = combined ? "true" : "false";
+
+ xhr.post("backend.php", {op: "rpc", method: "setpref", key: "COMBINED_DISPLAY_MODE", value: value}, () => {
+ this.setInitParam("combined_display_mode",
+ !this.getInitParam("combined_display_mode"));
+
+ Article.close();
+ Headlines.renderAgain();
+ })
+ },
+ isExpandedMode: function() {
+ return !!this.getInitParam("cdm_expanded");
+ },
+ setExpandedMode: function(expand) {
+ if (App.isCombinedMode()) {
+ const value = expand ? "true" : "false";
+
+ xhr.post("backend.php", {op: "rpc", method: "setpref", key: "CDM_EXPANDED", value: value}, () => {
+ this.setInitParam("cdm_expanded", !this.getInitParam("cdm_expanded"));
+ Headlines.renderAgain();
+ });
+ } else {
+ alert(__("This function is only available in combined mode."));
+ }
},
getActionByHotkeySequence: function(sequence) {
const hotkeys_map = this.getInitParam("hotkeys");
@@ -789,7 +823,7 @@ const App = {
this.setLoadingProgress(50);
this._widescreen_mode = this.getInitParam("widescreen");
- this.setWidescreen(this._widescreen_mode);
+ this.setWideScreenMode(this.isWideScreenMode(), true);
Headlines.initScrollHandler();
@@ -812,6 +846,10 @@ const App = {
App.updateRuntimeInfo();
}, 60 * 1000)
+ if (App.getInitParam("safe_mode") && this.isPrefs()) {
+ CommonDialogs.safeModeWarning();
+ }
+
console.log("second stage ok");
},
@@ -870,7 +908,22 @@ const App = {
}
}
},
- setWidescreen: function(wide) {
+ isWideScreenMode: function() {
+ return !!this._widescreen_mode;
+ },
+ setWideScreenMode: function(wide, quiet = false) {
+
+ if (this.isCombinedMode() && !quiet) {
+ alert(__("Widescreen is not available in combined mode."));
+ return;
+ }
+
+ // reset stored sizes because geometry changed
+ Cookie.set("ttrss_ci_width", 0);
+ Cookie.set("ttrss_ci_height", 0);
+
+ this._widescreen_mode = wide;
+
const article_id = Article.getActive();
const headlines_frame = App.byId("headlines-frame");
const content_insert = dijit.byId("content-insert");
@@ -1189,39 +1242,16 @@ const App = {
}
};
this.hotkey_actions["toggle_widescreen"] = () => {
- if (!this.isCombinedMode()) {
- this._widescreen_mode = !this._widescreen_mode;
-
- // reset stored sizes because geometry changed
- Cookie.set("ttrss_ci_width", 0);
- Cookie.set("ttrss_ci_height", 0);
-
- this.setWidescreen(this._widescreen_mode);
- } else {
- alert(__("Widescreen is not available in combined mode."));
- }
+ this.setWideScreenMode(!this.isWideScreenMode());
};
this.hotkey_actions["help_dialog"] = () => {
this.hotkeyHelp();
};
this.hotkey_actions["toggle_combined_mode"] = () => {
- const value = this.isCombinedMode() ? "false" : "true";
-
- xhr.post("backend.php", {op: "rpc", method: "setpref", key: "COMBINED_DISPLAY_MODE", value: value}, () => {
- this.setInitParam("combined_display_mode",
- !this.getInitParam("combined_display_mode"));
-
- Article.close();
- Headlines.renderAgain();
- })
+ App.setCombinedMode(!App.isCombinedMode());
};
this.hotkey_actions["toggle_cdm_expanded"] = () => {
- const value = this.getInitParam("cdm_expanded") ? "false" : "true";
-
- xhr.post("backend.php", {op: "rpc", method: "setpref", key: "CDM_EXPANDED", value: value}, () => {
- this.setInitParam("cdm_expanded", !this.getInitParam("cdm_expanded"));
- Headlines.renderAgain();
- });
+ App.setExpandedMode(!App.isExpandedMode());
};
this.hotkey_actions["article_span_grid"] = () => {
Article.cdmToggleGridSpan(Article.getActive());
@@ -1282,18 +1312,14 @@ const App = {
Feeds.toggleUnread();
break;
case "qmcToggleWidescreen":
- if (!this.isCombinedMode()) {
- this._widescreen_mode = !this._widescreen_mode;
-
- // reset stored sizes because geometry changed
- Cookie.set("ttrss_ci_width", 0);
- Cookie.set("ttrss_ci_height", 0);
-
- this.setWidescreen(this._widescreen_mode);
- } else {
- alert(__("Widescreen is not available in combined mode."));
- }
+ App.setWideScreenMode(!App.isWideScreenMode());
break;
+ case "qmcToggleCombined":
+ App.setCombinedMode(!App.isCombinedMode());
+ break;
+ case "qmcToggleExpanded":
+ App.setExpandedMode(!App.isExpandedMode());
+ break;
case "qmcHKhelp":
this.hotkeyHelp()
break;
diff --git a/js/CommonDialogs.js b/js/CommonDialogs.js
index a68dc8068..4cfc6ec70 100644
--- a/js/CommonDialogs.js
+++ b/js/CommonDialogs.js
@@ -11,6 +11,21 @@ const CommonDialogs = {
const dialog = dijit.byId("infoBox");
if (dialog) dialog.hide();
},
+ safeModeWarning: function() {
+ const dialog = new fox.SingleUseDialog({
+ title: __("Safe mode"),
+ content: `<div class='alert alert-info'>
+ ${__('Tiny Tiny RSS is running in safe mode. All themes and plugins are disabled. You will need to log out and back in to disable it.')}
+ </div>
+ <footer class='text-center'>
+ <button dojoType='dijit.form.Button' type='submit' class='alt-primary'>
+ ${__('Close this window')}
+ </button>
+ </footer>`
+ });
+
+ dialog.show();
+ },
subscribeToFeed: function() {
xhr.json("backend.php",
{op: "feeds", method: "subscribeToFeed"},
@@ -131,6 +146,9 @@ const CommonDialogs = {
console.log(rc);
switch (parseInt(rc['code'])) {
+ case 0:
+ dialog.show_error(__("You are already subscribed to this feed."));
+ break;
case 1:
dialog.hide();
Notify.info(__("Subscribed to %s").replace("%s", feed_url));
@@ -175,8 +193,11 @@ const CommonDialogs = {
case 6:
dialog.show_error(__("XML validation failed: %s").replace("%s", rc['message']));
break;
- case 0:
- dialog.show_error(__("You are already subscribed to this feed."));
+ case 7:
+ dialog.show_error(__("Error while creating feed database entry."));
+ break;
+ case 8:
+ dialog.show_error(__("You are not allowed to perform this operation."));
break;
}
@@ -451,6 +472,7 @@ const CommonDialogs = {
xhr.json("backend.php", {op: "pref-feeds", method: "editfeed", id: feed_id}, (reply) => {
const feed = reply.feed;
+ const is_readonly = reply.user.access_level == App.UserAccessLevels.ACCESS_LEVEL_READONLY;
// for unsub prompt
dialog.feed_title = feed.title;
@@ -524,7 +546,9 @@ const CommonDialogs = {
<fieldset>
<label>${__("Update interval:")}</label>
- ${App.FormFields.select_hash("update_interval", feed.update_interval, reply.intervals.update)}
+ ${App.FormFields.select_hash("update_interval", is_readonly ? -1 : feed.update_interval,
+ reply.intervals.update,
+ {disabled: is_readonly})}
</fieldset>
<fieldset>
<label>${__('Article purging:')}</label>
diff --git a/js/CommonFilters.js b/js/CommonFilters.js
index 8a20480f0..1a0ce1606 100644
--- a/js/CommonFilters.js
+++ b/js/CommonFilters.js
@@ -16,7 +16,8 @@ const Filters = {
ACTION_SCORE: 6,
ACTION_LABEL: 7,
ACTION_PLUGIN: 9,
- PARAM_ACTIONS: [4, 6, 7, 9],
+ ACTION_REMOVE_TAG: 10,
+ PARAM_ACTIONS: [4, 6, 7, 9, 10],
filter_info: {},
test: function() {
const test_dialog = new fox.SingleUseDialog({
@@ -397,6 +398,8 @@ const Filters = {
xhr.post("backend.php", this.attr('value'), () => {
dialog.hide();
+ Notify.close();
+
const tree = dijit.byId("filterTree");
if (tree) tree.reload();
});
diff --git a/js/FeedTree.js b/js/FeedTree.js
index e0c44e2b5..f6c44a71e 100755
--- a/js/FeedTree.js
+++ b/js/FeedTree.js
@@ -102,6 +102,15 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co
}}));
menu.addChild(new dijit.MenuItem({
+ label: __("Open site"),
+ onClick: function() {
+ App.postOpenWindow("backend.php", {op: "feeds", method: "opensite",
+ feed_id: this.getParent().row_id, csrf_token: __csrf_token});
+ }}));
+
+ menu.addChild(new dijit.MenuSeparator());
+
+ menu.addChild(new dijit.MenuItem({
label: __("Debug feed"),
onClick: function() {
/* global __csrf_token */
diff --git a/js/Feeds.js b/js/Feeds.js
index 27586ab13..714eb77d2 100644
--- a/js/Feeds.js
+++ b/js/Feeds.js
@@ -278,21 +278,14 @@ const Feeds = {
}
if (App.getInitParam("safe_mode")) {
- const dialog = new fox.SingleUseDialog({
- title: __("Safe mode"),
- content: `<div class='alert alert-info'>
- ${__('Tiny Tiny RSS is running in safe mode. All themes and plugins are disabled. You will need to log out and back in to disable it.')}
- </div>
- <footer class='text-center'>
- <button dojoType='dijit.form.Button' type='submit' class='alt-primary'>
- ${__('Close this window')}
- </button>
- </footer>`
- });
-
- dialog.show();
+ /* global CommonDialogs */
+ CommonDialogs.safeModeWarning();
}
+ dojo.connect(dijit.byId("main-catchup-dropdown"), 'onItemClick',
+ (item) => Feeds.catchupCurrent(item.option.value)
+ );
+
// bw_limit disables timeout() so we request initial counters separately
if (App.getInitParam("bw_limit")) {
this.requestCounters();
diff --git a/js/Headlines.js b/js/Headlines.js
index d01993838..2be3cd697 100755
--- a/js/Headlines.js
+++ b/js/Headlines.js
@@ -178,7 +178,7 @@ const Headlines = {
if (scores.length != 0) {
scores.forEach((score) => {
promises.push(xhr.post("backend.php",
- {op: "article", method: "setScore", "ids[]": ops.rescore[score].toString(), score: score}));
+ {op: "article", method: "setScore", "ids[]": ops.rescore[score], score: score}));
});
}
@@ -490,6 +490,7 @@ const Headlines = {
id="RROW-${hl.id}"
data-article-id="${hl.id}"
data-orig-feed-id="${hl.feed_id}"
+ data-orig-feed-title="${App.escapeHtml(hl.feed_title)}"
data-is-packed="1"
data-content="${App.escapeHtml(hl.content)}"
data-rendered-enclosures="${App.escapeHtml(Article.renderEnclosures(hl.enclosures))}"
@@ -514,10 +515,8 @@ const Headlines = {
${hl.cdm_excerpt ? hl.cdm_excerpt : ""}
</span>
- <div class="feed">
- <a href="#" style="background-color: ${hl.feed_bg_color}"
- onclick="Feeds.open({feed:${hl.feed_id}})">${hl.feed_title}</a>
- </div>
+ <a href="#" class="feed vfeedMenuAttach" style="background-color: ${hl.feed_bg_color}" data-feed-id="${hl.feed_id}"
+ onclick="Feeds.open({feed:${hl.feed_id}})">${hl.feed_title}</a>
<span class="updated" title="${hl.imported}">${hl.updated}</span>
@@ -566,6 +565,7 @@ const Headlines = {
row = `<div class="hl ${row_class} ${Article.getScoreClass(hl.score)}"
id="RROW-${hl.id}"
data-orig-feed-id="${hl.feed_id}"
+ data-orig-feed-title="${App.escapeHtml(hl.feed_title)}"
data-article-id="${hl.id}"
data-score="${hl.score}"
data-article-title="${App.escapeHtml(hl.title)}"
@@ -584,9 +584,9 @@ const Headlines = {
${Article.renderLabels(hl.id, hl.labels)}
</span>
</div>
- <span class="feed">
- <a style="background : ${hl.feed_bg_color}" href="#" onclick="Feeds.open({feed:${hl.feed_id}})">${hl.feed_title}</a>
- </span>
+ <span class="feed vfeedMenuAttach" data-feed-id="${hl.feed_id}">
+ <a style="background : ${hl.feed_bg_color}" href="#" onclick="Feeds.open({feed:${hl.feed_id}})">${hl.feed_title}</a>
+ </span>
<div title="${hl.imported}">
<span class="updated">${hl.updated}</span>
</div>
@@ -626,6 +626,12 @@ const Headlines = {
const search_query = Feeds._search_query ? Feeds._search_query.query : "";
const target = dijit.byId('toolbar-headlines');
+ // TODO: is this needed? destroyDescendants() below might take care of it (?)
+ if (this._headlinesSelectClickHandle)
+ dojo.disconnect(this._headlinesSelectClickHandle);
+
+ target.destroyDescendants();
+
if (tb && typeof tb == 'object') {
target.attr('innerHTML',
`
@@ -646,27 +652,37 @@ const Headlines = {
</span>
<span class='right'>
<span id='selected_prompt'></span>
- <div class='select-articles-dropdown' dojoType='fox.form.DropDownButton' title='"${__('Select articles')}'>
- <span>${__("Select...")}</span>
- <div dojoType='dijit.Menu' style='display: none;'>
- <div dojoType='dijit.MenuItem' onclick='Headlines.select("all")'>${__('All')}</div>
- <div dojoType='dijit.MenuItem' onclick='Headlines.select("unread")'>${__('Unread')}</div>
- <div dojoType='dijit.MenuItem' onclick='Headlines.select("invert")'>${__('Invert')}</div>
- <div dojoType='dijit.MenuItem' onclick='Headlines.select("none")'>${__('None')}</div>
- <div dojoType='dijit.MenuSeparator'></div>
- <div dojoType='dijit.MenuItem' onclick='Headlines.selectionToggleUnread()'>${__('Toggle unread')}</div>
- <div dojoType='dijit.MenuItem' onclick='Headlines.selectionToggleMarked()'>${__('Toggle starred')}</div>
- <div dojoType='dijit.MenuItem' onclick='Headlines.selectionTogglePublished()'>${__('Toggle published')}</div>
- <div dojoType='dijit.MenuSeparator'></div>
- <div dojoType='dijit.MenuItem' onclick='Headlines.catchupSelection()'>${__('Mark as read')}</div>
- <div dojoType='dijit.MenuItem' onclick='Article.selectionSetScore()'>${__('Set score')}</div>
- ${tb.plugin_menu_items}
+
+ <select class='select-articles-dropdown'
+ id='headlines-select-articles-dropdown'
+ data-prevent-value-change="true"
+ data-dropdown-skip-first="true"
+ dojoType="fox.form.Select"
+ title="${__('Show articles')}">
+ <option value='' selected="selected">${__("Select...")}</option>
+ <option value='headlines_select_all'>${__('All')}</option>
+ <option value='headlines_select_unread'>${__('Unread')}</option>
+ <option value='headlines_select_invert'>${__('Invert')}</option>
+ <option value='headlines_select_none'>${__('None')}</option>
+ <option></option>
+ <option value='headlines_selectionToggleUnread'>${__('Toggle unread')}</option>
+ <option value='headlines_selectionToggleMarked'>${__('Toggle starred')}</option>
+ <option value='headlines_selectionTogglePublished'>${__('Toggle published')}</option>
+ <option></option>
+ <option value='headlines_catchupSelection'>${__('Mark as read')}</option>
+ <option value='article_selectionSetScore'>${__('Set score')}</option>
+ ${tb.plugin_menu_items != '' ?
+ `
+ <option></option>
+ ${tb.plugin_menu_items}
+ ` : ''}
${headlines.id === 0 && !headlines.is_cat ?
`
- <div dojoType='dijit.MenuSeparator'></div>
- <div dojoType='dijit.MenuItem' class='text-error' onclick='Headlines.deleteSelection()'>${__('Delete permanently')}</div>
+ <option></option>
+ <option class='text-error' value='headlines_deleteSelection'>${__('Delete permanently')}</option>
` : ''}
- </div>
+ </select>
+
${tb.plugin_buttons}
</span>
`);
@@ -675,6 +691,48 @@ const Headlines = {
}
dojo.parser.parse(target.domNode);
+
+ this._headlinesSelectClickHandle = dojo.connect(dijit.byId("headlines-select-articles-dropdown"), 'onItemClick',
+ (item) => {
+ const action = item.option.value;
+
+ switch (action) {
+ case 'headlines_select_all':
+ Headlines.select('all');
+ break;
+ case 'headlines_select_unread':
+ Headlines.select('unread');
+ break;
+ case 'headlines_select_invert':
+ Headlines.select('invert');
+ break;
+ case 'headlines_select_none':
+ Headlines.select('none');
+ break;
+ case 'headlines_selectionToggleUnread':
+ Headlines.selectionToggleUnread();
+ break;
+ case 'headlines_selectionToggleMarked':
+ Headlines.selectionToggleMarked();
+ break;
+ case 'headlines_selectionTogglePublished':
+ Headlines.selectionTogglePublished();
+ break;
+ case 'headlines_catchupSelection':
+ Headlines.catchupSelection();
+ break;
+ case 'article_selectionSetScore':
+ Article.selectionSetScore();
+ break;
+ case 'headlines_deleteSelection':
+ Headlines.deleteSelection();
+ break;
+ default:
+ if (!PluginHost.run_until(PluginHost.HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM2, true, action))
+ console.warn('unknown headlines action', action);
+ }
+ }
+ );
},
onLoaded: function (reply, offset, append) {
console.log("Headlines.onLoaded: offset=", offset, "append=", append);
@@ -1501,6 +1559,48 @@ const Headlines = {
menu.startup();
}
+ /* vfeed menu */
+
+ if (!dijit.byId("vfeedMenu")) {
+
+ const menu = new dijit.Menu({
+ id: "vfeedMenu",
+ targetNodeIds: ["headlines-frame"],
+ selector: ".vfeedMenuAttach"
+ });
+
+ menu.addChild(new dijit.MenuItem({
+ label: __("Mark as read"),
+ onClick: function() {
+ Feeds.catchupFeed(this.getParent().currentTarget.getAttribute("data-feed-id"));
+ }}));
+
+ menu.addChild(new dijit.MenuItem({
+ label: __("Edit feed"),
+ onClick: function() {
+ CommonDialogs.editFeed(this.getParent().currentTarget.getAttribute("data-feed-id"), false);
+ }}));
+
+ menu.addChild(new dijit.MenuItem({
+ label: __("Open site"),
+ onClick: function() {
+ App.postOpenWindow("backend.php", {op: "feeds", method: "opensite",
+ feed_id: this.getParent().currentTarget.getAttribute("data-feed-id"), csrf_token: __csrf_token});
+ }}));
+
+ menu.addChild(new dijit.MenuSeparator());
+
+ menu.addChild(new dijit.MenuItem({
+ label: __("Debug feed"),
+ onClick: function() {
+ /* global __csrf_token */
+ App.postOpenWindow("backend.php", {op: "feeds", method: "updatedebugger",
+ feed_id: this.getParent().currentTarget.getAttribute("data-feed-id"), csrf_token: __csrf_token});
+ }}));
+
+ menu.startup();
+ }
+
/* vgroup feed title menu */
if (!dijit.byId("headlinesFeedTitleMenu")) {
diff --git a/js/PluginHost.js b/js/PluginHost.js
index deb7c0645..513429e4a 100644
--- a/js/PluginHost.js
+++ b/js/PluginHost.js
@@ -21,6 +21,7 @@ const PluginHost = {
HOOK_HEADLINE_MUTATIONS_SYNCED: 16,
HOOK_HEADLINES_RENDERED: 17,
HOOK_HEADLINES_SCROLL_HANDLER: 18,
+ HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM2: 19,
hooks: [],
register: function (name, callback) {
if (typeof(this.hooks[name]) == 'undefined')
@@ -36,6 +37,17 @@ const PluginHost = {
this.hooks[name][i](args);
}
},
+ run_until: function (name, check, ...args) {
+ //console.warn('PluginHost.run_until', name, check, args);
+
+ if (typeof(this.hooks[name]) != 'undefined')
+ for (let i = 0; i < this.hooks[name].length; i++) {
+ if (this.hooks[name][i](args) == check)
+ return true;
+ }
+
+ return false;
+ },
unregister: function (name, callback) {
for (let i = 0; i < this.hooks[name].length; i++)
if (this.hooks[name][i] == callback)
diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js
index 30a4544fe..c0fff66c9 100644
--- a/js/PrefHelpers.js
+++ b/js/PrefHelpers.js
@@ -363,8 +363,15 @@ const Helpers = {
xhr.json("backend.php", {op: "pref-prefs", method: "getPluginsList"}, (reply) => {
this._list_of_plugins = reply;
this.render_contents();
+ }, (e) => {
+ this.render_error(e);
});
},
+ render_error: function(e) {
+ const container = document.querySelector(".prefs-plugin-list");
+
+ container.innerHTML = `<li class='text-error'>${__("Error while loading plugins list: %s.").replace("%s", e)}</li>`;
+ },
render_contents: function() {
const container = document.querySelector(".prefs-plugin-list");
@@ -450,7 +457,7 @@ const Helpers = {
xhr.json("backend.php", {op: "pref-prefs", method: "uninstallPlugin", plugin: plugin}, (reply) => {
if (reply && reply.status == 1)
- Helpers.Prefs.refresh();
+ Helpers.Plugins.reload();
else {
Notify.error("Plugin uninstallation failed.");
}
diff --git a/js/PrefUsers.js b/js/PrefUsers.js
index 7ce3cae94..a6081f35f 100644
--- a/js/PrefUsers.js
+++ b/js/PrefUsers.js
@@ -75,7 +75,7 @@ const Users = {
<fieldset>
<label>${__('Access level: ')}</label>
${App.FormFields.select_hash("access_level",
- user.access_level, reply.access_level_names, {disabled: admin_disabled.toString()})}
+ user.access_level, reply.access_level_names, {disabled: admin_disabled.toString()}, "", {numeric_sort: true})}
${admin_disabled ? App.FormFields.hidden_tag("access_level",
user.access_level.toString()) : ''}
diff --git a/js/common.js b/js/common.js
index 1299a0c64..b972f2376 100755
--- a/js/common.js
+++ b/js/common.js
@@ -186,7 +186,7 @@ const xhr = {
},
json: function(url, params = {}, complete = undefined, failed = undefined) {
return new Promise((resolve, reject) =>
- this.post(url, params).then((data) => {
+ this.post(url, params, null, failed).then((data) => {
let obj = null;
try {
@@ -198,6 +198,7 @@ const xhr = {
failed(e);
reject(e);
+ return;
}
console.log('xhr.json', '<<<', obj, (new Date().getTime() - xhr._ts) + " ms");
diff --git a/js/form/Select.js b/js/form/Select.js
index 530880e2d..0c73cd52c 100755
--- a/js/form/Select.js
+++ b/js/form/Select.js
@@ -1,8 +1,66 @@
-/* global dijit, define */
-define(["dojo/_base/declare", "dijit/form/Select"], function (declare) {
- return declare("fox.form.Select", dijit.form.Select, {
+/* eslint-disable prefer-rest-params */
+/* global define */
+// FIXME: there probably is a better, more dojo-like notation for custom data- properties
+define(["dojo/_base/declare",
+ "dijit/form/Select",
+ "dojo/_base/lang", // lang.hitch
+ "dijit/MenuItem",
+ "dijit/MenuSeparator",
+ "dojo/aspect",
+ ], function (declare, select, lang, MenuItem, MenuSeparator, aspect) {
+ return declare("fox.form.Select", select, {
focus: function() {
return; // Stop dijit.form.Select from keeping focus after closing the menu
},
+ startup: function() {
+ this.inherited(arguments);
+
+ if (this.attr('data-dropdown-skip-first') == 'true') {
+ aspect.before(this, "_loadChildren", () => {
+ this.options = this.options.splice(1);
+ });
+ }
+ },
+ // hook invoked when dropdown MenuItem is clicked
+ onItemClick: function(/*item, menu*/) {
+ //
+ },
+ _setValueAttr: function(/*anything*/ newValue, /*Boolean?*/ priorityChange){
+ if (this.attr('data-prevent-value-change') == 'true' && newValue != '')
+ return;
+
+ this.inherited(arguments);
+ },
+ // the only difference from dijit/form/Select is _onItemClicked() handler
+ _getMenuItemForOption: function(/*_FormSelectWidget.__SelectOption*/ option){
+ // summary:
+ // For the given option, return the menu item that should be
+ // used to display it. This can be overridden as needed
+ if (!option.value && !option.label){
+ // We are a separator (no label set for it)
+ return new MenuSeparator({ownerDocument: this.ownerDocument});
+ } else {
+ // Just a regular menu option
+ const click = lang.hitch(this, "_setValueAttr", option);
+ const item = new MenuItem({
+ option: option,
+ label: (this.labelType === 'text' ? (option.label || '').toString()
+ .replace(/&/g, '&amp;').replace(/</g, '&lt;') :
+ option.label) || this.emptyLabel,
+ onClick: () => {
+ this.onItemClick(item, this.dropDown);
+
+ click();
+ },
+ ownerDocument: this.ownerDocument,
+ dir: this.dir,
+ textDir: this.textDir,
+ disabled: option.disabled || false
+ });
+ item.focusNode.setAttribute("role", "option");
+
+ return item;
+ }
+ },
});
});
diff --git a/lib/dijit/LICENSE b/lib/dijit/LICENSE
index f5c47f5b7..46764e967 100644
--- a/lib/dijit/LICENSE
+++ b/lib/dijit/LICENSE
@@ -13,7 +13,7 @@ The text of the AFL and BSD licenses is reproduced below.
The "New" BSD License:
**********************
-Copyright (c) 2005-2016, The JS Foundation
+Copyright (c) 2005-2018, The JS Foundation
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/lib/dijit/README.md b/lib/dijit/README.md
index 07663f4a0..e1a243ba0 100644
--- a/lib/dijit/README.md
+++ b/lib/dijit/README.md
@@ -4,6 +4,10 @@
Toolkit and provides a framework for building additional widgets as well as a full set of rich user interface widgets
including form, layout and data-aware items.
+While still being maintained, new development is primarily focused on modern Dojo.
+
+Checkout the [Dojo framework website](https://dojo.io/) or if you want a more detailed technical status and overview, checkout the [`Dojo roadmap`](https://dojo.io/community/).
+
## Installing
Installation instructions are available at [dojotoolkit.org/download][download].
@@ -20,7 +24,7 @@ If you are starting out with Dojo and Dijit, the following resources are availab
## License and Copyright
The Dojo Toolkit (including this package) is dual licensed under BSD 3-Clause and AFL. For more information on the
-license please see the [License Information][]. The Dojo Toolkit is Copyright (c) 2005-2016, The JS Foundation. All
+license please see the [License Information][]. The Dojo Toolkit is Copyright (c) 2005-2018, The JS Foundation. All
rights reserved.
[core]: https://github.com/dojo/dojo
diff --git a/lib/dijit/Tree.js b/lib/dijit/Tree.js
index aa87e0c95..d0c8b852f 100644
--- a/lib/dijit/Tree.js
+++ b/lib/dijit/Tree.js
@@ -1,2 +1,2 @@
//>>built
-require({cache:{"url:dijit/templates/Tree.html":"<div role=\"tree\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" data-dojo-attach-point=\"indentDetector\"></div>\n\t<div class=\"dijitTreeExpando dijitTreeExpandoLoading\" data-dojo-attach-point=\"rootLoadingIndicator\"></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeContainer\" role=\"presentation\">\n\t</div>\n</div>\n","url:dijit/templates/TreeNode.html":"<div class=\"dijitTreeNode\" role=\"presentation\"\n\t><div data-dojo-attach-point=\"rowNode\" class=\"dijitTreeRow\" role=\"presentation\"\n\t\t><span data-dojo-attach-point=\"expandoNode\" class=\"dijitInline dijitTreeExpando\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"expandoNodeText\" class=\"dijitExpandoText\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" role=\"presentation\">\n\t\t\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitTreeIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span data-dojo-attach-point=\"labelNode,focusNode\" class=\"dijitTreeLabel\" role=\"treeitem\"\n\t\t\t\t tabindex=\"-1\" aria-selected=\"false\" id=\"${id}_label\"></span>\n\t\t</span\n\t></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeNodeContainer\" role=\"presentation\"\n\t\t style=\"display: none;\" aria-labelledby=\"${id}_label\"></div>\n</div>\n"}});define("dijit/Tree",["dojo/_base/array","dojo/aspect","dojo/cookie","dojo/_base/declare","dojo/Deferred","dojo/promise/all","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/errors/create","dojo/fx","dojo/has","dojo/_base/kernel","dojo/keys","dojo/_base/lang","dojo/on","dojo/topic","dojo/touch","dojo/when","./a11yclick","./focus","./registry","./_base/manager","./_Widget","./_TemplatedMixin","./_Container","./_Contained","./_CssStateMixin","./_KeyNavMixin","dojo/text!./templates/TreeNode.html","dojo/text!./templates/Tree.html","./tree/TreeStoreModel","./tree/ForestStoreModel","./tree/_dndSelector","dojo/query!css2"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d,_e,_f,_10,on,_11,_12,_13,_14,_15,_16,_17,_18,_19,_1a,_1b,_1c,_1d,_1e,_1f,_20,_21,_22){function _23(d){return _10.delegate(d.promise||d,{addCallback:function(_24){this.then(_24);},addErrback:function(_25){this.otherwise(_25);}});};var _26=_4("dijit._TreeNode",[_18,_19,_1a,_1b,_1c],{item:null,isTreeNode:true,label:"",_setLabelAttr:function(val){this.labelNode[this.labelType=="html"?"innerHTML":"innerText" in this.labelNode?"innerText":"textContent"]=val;this._set("label",val);if(_d("dojo-bidi")){this.applyTextDir(this.labelNode);}},labelType:"text",isExpandable:null,isExpanded:false,state:"NotLoaded",templateString:_1e,baseClass:"dijitTreeNode",cssStateNodes:{rowNode:"dijitTreeRow"},_setTooltipAttr:{node:"rowNode",type:"attribute",attribute:"title"},buildRendering:function(){this.inherited(arguments);this._setExpando();this._updateItemClasses(this.item);if(this.isExpandable){this.labelNode.setAttribute("aria-expanded",this.isExpanded);}this.setSelected(false);},_setIndentAttr:function(_27){var _28=(Math.max(_27,0)*this.tree._nodePixelIndent)+"px";_a.set(this.domNode,"backgroundPosition",_28+" 0px");_a.set(this.rowNode,this.isLeftToRight()?"paddingLeft":"paddingRight",_28);_1.forEach(this.getChildren(),function(_29){_29.set("indent",_27+1);});this._set("indent",_27);},markProcessing:function(){this.state="Loading";this._setExpando(true);},unmarkProcessing:function(){this._setExpando(false);},_updateItemClasses:function(_2a){var _2b=this.tree,_2c=_2b.model;if(_2b._v10Compat&&_2a===_2c.root){_2a=null;}this._applyClassAndStyle(_2a,"icon","Icon");this._applyClassAndStyle(_2a,"label","Label");this._applyClassAndStyle(_2a,"row","Row");this.tree._startPaint(true);},_applyClassAndStyle:function(_2d,_2e,_2f){var _30="_"+_2e+"Class";var _31=_2e+"Node";var _32=this[_30];this[_30]=this.tree["get"+_2f+"Class"](_2d,this.isExpanded);_8.replace(this[_31],this[_30]||"",_32||"");_a.set(this[_31],this.tree["get"+_2f+"Style"](_2d,this.isExpanded)||{});},_updateLayout:function(){var _33=this.getParent(),_34=!_33||!_33.rowNode||_33.rowNode.style.display=="none";_8.toggle(this.domNode,"dijitTreeIsRoot",_34);_8.toggle(this.domNode,"dijitTreeIsLast",!_34&&!this.getNextSibling());},_setExpando:function(_35){var _36=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"],_37=["*","-","+","*"],idx=_35?0:(this.isExpandable?(this.isExpanded?1:2):3);_8.replace(this.expandoNode,_36[idx],_36);this.expandoNodeText.innerHTML=_37[idx];},expand:function(){if(this._expandDeferred){return _23(this._expandDeferred);}if(this._collapseDeferred){this._collapseDeferred.cancel();delete this._collapseDeferred;}this.isExpanded=true;this.labelNode.setAttribute("aria-expanded","true");if(this.tree.showRoot||this!==this.tree.rootNode){this.containerNode.setAttribute("role","group");}_8.add(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","true");}var _38=_c.wipeIn({node:this.containerNode,duration:_17.defaultDuration});var def=(this._expandDeferred=new _5(function(){_38.stop();}));_2.after(_38,"onEnd",function(){def.resolve(true);},true);_38.play();return _23(def);},collapse:function(){if(this._collapseDeferred){return _23(this._collapseDeferred);}if(this._expandDeferred){this._expandDeferred.cancel();delete this._expandDeferred;}this.isExpanded=false;this.labelNode.setAttribute("aria-expanded","false");if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","false");}_8.remove(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);var _39=_c.wipeOut({node:this.containerNode,duration:_17.defaultDuration});var def=(this._collapseDeferred=new _5(function(){_39.stop();}));_2.after(_39,"onEnd",function(){def.resolve(true);},true);_39.play();return _23(def);},indent:0,setChildItems:function(_3a){var _3b=this.tree,_3c=_3b.model,_3d=[];var _3e=_3b.focusedChild;var _3f=this.getChildren();_1.forEach(_3f,function(_40){_1a.prototype.removeChild.call(this,_40);},this);this.defer(function(){_1.forEach(_3f,function(_41){if(!_41._destroyed&&!_41.getParent()){_3b.dndController.removeTreeNode(_41);function _42(_43){var id=_3c.getIdentity(_43.item),ary=_3b._itemNodesMap[id];if(ary.length==1){delete _3b._itemNodesMap[id];}else{var _44=_1.indexOf(ary,_43);if(_44!=-1){ary.splice(_44,1);}}_1.forEach(_43.getChildren(),_42);};_42(_41);if(_3b.persist){var _45=_1.map(_41.getTreePath(),function(_46){return _3b.model.getIdentity(_46);}).join("/");for(var _47 in _3b._openedNodes){if(_47.substr(0,_45.length)==_45){delete _3b._openedNodes[_47];}}_3b._saveExpandedNodes();}if(_3b.lastFocusedChild&&!_7.isDescendant(_3b.lastFocusedChild.domNode,_3b.domNode)){delete _3b.lastFocusedChild;}if(_3e&&!_7.isDescendant(_3e.domNode,_3b.domNode)){_3b.focus();}_41.destroyRecursive();}});});this.state="Loaded";if(_3a&&_3a.length>0){this.isExpandable=true;_1.forEach(_3a,function(_48){var id=_3c.getIdentity(_48),_49=_3b._itemNodesMap[id],_4a;if(_49){for(var i=0;i<_49.length;i++){if(_49[i]&&!_49[i].getParent()){_4a=_49[i];_4a.set("indent",this.indent+1);break;}}}if(!_4a){_4a=this.tree._createTreeNode({item:_48,tree:_3b,isExpandable:_3c.mayHaveChildren(_48),label:_3b.getLabel(_48),labelType:(_3b.model&&_3b.model.labelType)||"text",tooltip:_3b.getTooltip(_48),ownerDocument:_3b.ownerDocument,dir:_3b.dir,lang:_3b.lang,textDir:_3b.textDir,indent:this.indent+1});if(_49){_49.push(_4a);}else{_3b._itemNodesMap[id]=[_4a];}}this.addChild(_4a);if(this.tree.autoExpand||this.tree._state(_4a)){_3d.push(_3b._expandNode(_4a));}},this);_1.forEach(this.getChildren(),function(_4b){_4b._updateLayout();});}else{this.isExpandable=false;}if(this._setExpando){this._setExpando(false);}this._updateItemClasses(this.item);var def=_6(_3d);this.tree._startPaint(def);return _23(def);},getTreePath:function(){var _4c=this;var _4d=[];while(_4c&&_4c!==this.tree.rootNode){_4d.unshift(_4c.item);_4c=_4c.getParent();}_4d.unshift(this.tree.rootNode.item);return _4d;},getIdentity:function(){return this.tree.model.getIdentity(this.item);},removeChild:function(_4e){this.inherited(arguments);var _4f=this.getChildren();if(_4f.length==0){this.isExpandable=false;this.collapse();}_1.forEach(_4f,function(_50){_50._updateLayout();});},makeExpandable:function(){this.isExpandable=true;this._setExpando(false);},setSelected:function(_51){this.labelNode.setAttribute("aria-selected",_51?"true":"false");_8.toggle(this.rowNode,"dijitTreeRowSelected",_51);},focus:function(){_15.focus(this.focusNode);}});if(_d("dojo-bidi")){_26.extend({_setTextDirAttr:function(_52){if(_52&&((this.textDir!=_52)||!this._created)){this._set("textDir",_52);this.applyTextDir(this.labelNode);_1.forEach(this.getChildren(),function(_53){_53.set("textDir",_52);},this);}}});}var _54=_4("dijit.Tree",[_18,_1d,_19,_1c],{baseClass:"dijitTree",store:null,model:null,query:null,label:"",showRoot:true,childrenAttr:["children"],paths:[],path:[],selectedItems:null,selectedItem:null,openOnClick:false,openOnDblClick:false,templateString:_1f,persist:false,autoExpand:false,dndController:_22,dndParams:["onDndDrop","itemCreator","onDndCancel","checkAcceptance","checkItemAcceptance","dragThreshold","betweenThreshold"],onDndDrop:null,itemCreator:null,onDndCancel:null,checkAcceptance:null,checkItemAcceptance:null,dragThreshold:5,betweenThreshold:0,_nodePixelIndent:19,_publish:function(_55,_56){_11.publish(this.id,_10.mixin({tree:this,event:_55},_56||{}));},postMixInProperties:function(){this.tree=this;if(this.autoExpand){this.persist=false;}this._itemNodesMap={};if(!this.cookieName&&this.id){this.cookieName=this.id+"SaveStateCookie";}this.expandChildrenDeferred=new _5();this.pendingCommandsPromise=this.expandChildrenDeferred.promise;this.inherited(arguments);},postCreate:function(){this._initState();var _57=this;this.own(on(this.containerNode,on.selector(".dijitTreeNode",_12.enter),function(evt){_57._onNodeMouseEnter(_16.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeNode",_12.leave),function(evt){_57._onNodeMouseLeave(_16.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_14.press),function(evt){_57._onNodePress(_16.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_14),function(evt){_57._onClick(_16.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow","dblclick"),function(evt){_57._onDblClick(_16.getEnclosingWidget(this),evt);}));if(!this.model){this._store2model();}this.own(_2.after(this.model,"onChange",_10.hitch(this,"_onItemChange"),true),_2.after(this.model,"onChildrenChange",_10.hitch(this,"_onItemChildrenChange"),true),_2.after(this.model,"onDelete",_10.hitch(this,"_onItemDelete"),true));this.inherited(arguments);if(this.dndController){if(_10.isString(this.dndController)){this.dndController=_10.getObject(this.dndController);}var _58={};for(var i=0;i<this.dndParams.length;i++){if(this[this.dndParams[i]]){_58[this.dndParams[i]]=this[this.dndParams[i]];}}this.dndController=new this.dndController(this,_58);}this._load();this.onLoadDeferred=_23(this.pendingCommandsPromise);this.onLoadDeferred.then(_10.hitch(this,"onLoad"));},_store2model:function(){this._v10Compat=true;_e.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");var _59={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};if(this.params.mayHaveChildren){_59.mayHaveChildren=_10.hitch(this,"mayHaveChildren");}if(this.params.getItemChildren){_59.getChildren=_10.hitch(this,function(_5a,_5b,_5c){this.getItemChildren((this._v10Compat&&_5a===this.model.root)?null:_5a,_5b,_5c);});}this.model=new _21(_59);this.showRoot=Boolean(this.label);},onLoad:function(){},_load:function(){this.model.getRoot(_10.hitch(this,function(_5d){var rn=(this.rootNode=this.tree._createTreeNode({item:_5d,tree:this,isExpandable:true,label:this.label||this.getLabel(_5d),labelType:this.model.labelType||"text",textDir:this.textDir,indent:this.showRoot?0:-1}));if(!this.showRoot){rn.rowNode.style.display="none";this.domNode.setAttribute("role","presentation");this.domNode.removeAttribute("aria-expanded");this.domNode.removeAttribute("aria-multiselectable");if(this["aria-label"]){rn.containerNode.setAttribute("aria-label",this["aria-label"]);this.domNode.removeAttribute("aria-label");}else{if(this["aria-labelledby"]){rn.containerNode.setAttribute("aria-labelledby",this["aria-labelledby"]);this.domNode.removeAttribute("aria-labelledby");}}rn.labelNode.setAttribute("role","presentation");rn.labelNode.removeAttribute("aria-selected");rn.containerNode.setAttribute("role","tree");rn.containerNode.setAttribute("aria-expanded","true");rn.containerNode.setAttribute("aria-multiselectable",!this.dndController.singular);}else{this.domNode.setAttribute("aria-multiselectable",!this.dndController.singular);this.rootLoadingIndicator.style.display="none";}this.containerNode.appendChild(rn.domNode);var _5e=this.model.getIdentity(_5d);if(this._itemNodesMap[_5e]){this._itemNodesMap[_5e].push(rn);}else{this._itemNodesMap[_5e]=[rn];}rn._updateLayout();this._expandNode(rn).then(_10.hitch(this,function(){if(!this._destroyed){this.rootLoadingIndicator.style.display="none";this.expandChildrenDeferred.resolve(true);}}));}),_10.hitch(this,function(err){console.error(this,": error loading root: ",err);}));},getNodesByItem:function(_5f){if(!_5f){return [];}var _60=_10.isString(_5f)?_5f:this.model.getIdentity(_5f);return [].concat(this._itemNodesMap[_60]);},_setSelectedItemAttr:function(_61){this.set("selectedItems",[_61]);},_setSelectedItemsAttr:function(_62){var _63=this;return this.pendingCommandsPromise=this.pendingCommandsPromise.always(_10.hitch(this,function(){var _64=_1.map(_62,function(_65){return (!_65||_10.isString(_65))?_65:_63.model.getIdentity(_65);});var _66=[];_1.forEach(_64,function(id){_66=_66.concat(_63._itemNodesMap[id]||[]);});this.set("selectedNodes",_66);}));},_setPathAttr:function(_67){if(_67.length){return _23(this.set("paths",[_67]).then(function(_68){return _68[0];}));}else{return _23(this.set("paths",[]).then(function(_69){return _69[0];}));}},_setPathsAttr:function(_6a){var _6b=this;function _6c(_6d,_6e){var _6f=_6d.shift();var _70=_1.filter(_6e,function(_71){return _71.getIdentity()==_6f;})[0];if(!!_70){if(_6d.length){return _6b._expandNode(_70).then(function(){return _6c(_6d,_70.getChildren());});}else{return _70;}}else{throw new _54.PathError("Could not expand path at "+_6f);}};return _23(this.pendingCommandsPromise=this.pendingCommandsPromise.always(function(){return _6(_1.map(_6a,function(_72){_72=_1.map(_72,function(_73){return _73&&_10.isObject(_73)?_6b.model.getIdentity(_73):_73;});if(_72.length){return _6c(_72,[_6b.rootNode]);}else{throw new _54.PathError("Empty path");}}));}).then(function setNodes(_74){_6b.set("selectedNodes",_74);return _6b.paths;}));},_setSelectedNodeAttr:function(_75){this.set("selectedNodes",[_75]);},_setSelectedNodesAttr:function(_76){this.dndController.setSelection(_76);},expandAll:function(){var _77=this;function _78(_79){return _77._expandNode(_79).then(function(){var _7a=_1.filter(_79.getChildren()||[],function(_7b){return _7b.isExpandable;});return _6(_1.map(_7a,_78));});};return _23(_78(this.rootNode));},collapseAll:function(){var _7c=this;function _7d(_7e){var _7f=_1.filter(_7e.getChildren()||[],function(_80){return _80.isExpandable;}),_81=_6(_1.map(_7f,_7d));if(!_7e.isExpanded||(_7e==_7c.rootNode&&!_7c.showRoot)){return _81;}else{return _81.then(function(){return _7c._collapseNode(_7e);});}};return _23(_7d(this.rootNode));},mayHaveChildren:function(){},getItemChildren:function(){},getLabel:function(_82){return this.model.getLabel(_82);},getIconClass:function(_83,_84){return (!_83||this.model.mayHaveChildren(_83))?(_84?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";},getLabelClass:function(){},getRowClass:function(){},getIconStyle:function(){},getLabelStyle:function(){},getRowStyle:function(){},getTooltip:function(){return "";},_onDownArrow:function(evt,_85){var _86=this._getNext(_85);if(_86&&_86.isTreeNode){this.focusNode(_86);}},_onUpArrow:function(evt,_87){var _88=_87.getPreviousSibling();if(_88){_87=_88;while(_87.isExpandable&&_87.isExpanded&&_87.hasChildren()){var _89=_87.getChildren();_87=_89[_89.length-1];}}else{var _8a=_87.getParent();if(!(!this.showRoot&&_8a===this.rootNode)){_87=_8a;}}if(_87&&_87.isTreeNode){this.focusNode(_87);}},_onRightArrow:function(evt,_8b){if(_8b.isExpandable&&!_8b.isExpanded){this._expandNode(_8b);}else{if(_8b.hasChildren()){_8b=_8b.getChildren()[0];if(_8b&&_8b.isTreeNode){this.focusNode(_8b);}}}},_onLeftArrow:function(evt,_8c){if(_8c.isExpandable&&_8c.isExpanded){this._collapseNode(_8c);}else{var _8d=_8c.getParent();if(_8d&&_8d.isTreeNode&&!(!this.showRoot&&_8d===this.rootNode)){this.focusNode(_8d);}}},focusLastChild:function(){var _8e=this._getLast();if(_8e&&_8e.isTreeNode){this.focusNode(_8e);}},_getFirst:function(){return this.showRoot?this.rootNode:this.rootNode.getChildren()[0];},_getLast:function(){var _8f=this.rootNode;while(_8f.isExpanded){var c=_8f.getChildren();if(!c.length){break;}_8f=c[c.length-1];}return _8f;},_getNext:function(_90){if(_90.isExpandable&&_90.isExpanded&&_90.hasChildren()){return _90.getChildren()[0];}else{while(_90&&_90.isTreeNode){var _91=_90.getNextSibling();if(_91){return _91;}_90=_90.getParent();}return null;}},childSelector:".dijitTreeRow",isExpandoNode:function(_92,_93){return _7.isDescendant(_92,_93.expandoNode)||_7.isDescendant(_92,_93.expandoNodeText);},_onNodePress:function(_94,e){this.focusNode(_94);},__click:function(_95,e,_96,_97){var _98=e.target,_99=this.isExpandoNode(_98,_95);if(_95.isExpandable&&(_96||_99)){this._onExpandoClick({node:_95});}else{this._publish("execute",{item:_95.item,node:_95,evt:e});this[_97](_95.item,_95,e);this.focusNode(_95);}e.stopPropagation();e.preventDefault();},_onClick:function(_9a,e){this.__click(_9a,e,this.openOnClick,"onClick");},_onDblClick:function(_9b,e){this.__click(_9b,e,this.openOnDblClick,"onDblClick");},_onExpandoClick:function(_9c){var _9d=_9c.node;this.focusNode(_9d);if(_9d.isExpanded){this._collapseNode(_9d);}else{this._expandNode(_9d);}},onClick:function(){},onDblClick:function(){},onOpen:function(){},onClose:function(){},_getNextNode:function(_9e){_e.deprecated(this.declaredClass+"::_getNextNode(node) is deprecated. Use _getNext(node) instead.","","2.0");return this._getNext(_9e);},_getRootOrFirstNode:function(){_e.deprecated(this.declaredClass+"::_getRootOrFirstNode() is deprecated. Use _getFirst() instead.","","2.0");return this._getFirst();},_collapseNode:function(_9f){if(_9f._expandNodeDeferred){delete _9f._expandNodeDeferred;}if(_9f.state=="Loading"){return;}if(_9f.isExpanded){var ret=_9f.collapse();this.onClose(_9f.item,_9f);this._state(_9f,false);this._startPaint(ret);return ret;}},_expandNode:function(_a0){if(_a0._expandNodeDeferred){return _a0._expandNodeDeferred;}var _a1=this.model,_a2=_a0.item,_a3=this;if(!_a0._loadDeferred){_a0.markProcessing();_a0._loadDeferred=new _5();_a1.getChildren(_a2,function(_a4){_a0.unmarkProcessing();_a0.setChildItems(_a4).then(function(){_a0._loadDeferred.resolve(_a4);});},function(err){console.error(_a3,": error loading "+_a0.label+" children: ",err);_a0._loadDeferred.reject(err);});}var def=_a0._loadDeferred.then(_10.hitch(this,function(){var _a5=_a0.expand();this.onOpen(_a0.item,_a0);this._state(_a0,true);return _a5;}));this._startPaint(def);return def;},focusNode:function(_a6){var tmp=[];for(var _a7=this.domNode;_a7&&_a7.tagName&&_a7.tagName.toUpperCase()!=="IFRAME";_a7=_a7.parentNode){tmp.push({domNode:_a7.contentWindow||_a7,scrollLeft:_a7.scrollLeft||0,scrollTop:_a7.scrollTop||0});}this.focusChild(_a6);this.defer(function(){for(var i=0,max=tmp.length;i<max;i++){tmp[i].domNode.scrollLeft=tmp[i].scrollLeft;tmp[i].domNode.scrollTop=tmp[i].scrollTop;}},0);},_onNodeMouseEnter:function(){},_onNodeMouseLeave:function(){},_onItemChange:function(_a8){var _a9=this.model,_aa=_a9.getIdentity(_a8),_ab=this._itemNodesMap[_aa];if(_ab){var _ac=this.getLabel(_a8),_ad=this.getTooltip(_a8);_1.forEach(_ab,function(_ae){_ae.set({item:_a8,label:_ac,tooltip:_ad});_ae._updateItemClasses(_a8);});}},_onItemChildrenChange:function(_af,_b0){var _b1=this.model,_b2=_b1.getIdentity(_af),_b3=this._itemNodesMap[_b2];if(_b3){_1.forEach(_b3,function(_b4){_b4.setChildItems(_b0);});}},_onItemDelete:function(_b5){var _b6=this.model,_b7=_b6.getIdentity(_b5),_b8=this._itemNodesMap[_b7];if(_b8){_1.forEach(_b8,function(_b9){this.dndController.removeTreeNode(_b9);var _ba=_b9.getParent();if(_ba){_ba.removeChild(_b9);}if(this.lastFocusedChild&&!_7.isDescendant(this.lastFocusedChild.domNode,this.domNode)){delete this.lastFocusedChild;}if(this.focusedChild&&!_7.isDescendant(this.focusedChild.domNode,this.domNode)){this.focus();}_b9.destroyRecursive();},this);delete this._itemNodesMap[_b7];}},_initState:function(){this._openedNodes={};if(this.persist&&this.cookieName){var _bb=_3(this.cookieName);if(_bb){_1.forEach(_bb.split(","),function(_bc){this._openedNodes[_bc]=true;},this);}}},_state:function(_bd,_be){if(!this.persist){return false;}var _bf=_1.map(_bd.getTreePath(),function(_c0){return this.model.getIdentity(_c0);},this).join("/");if(arguments.length===1){return this._openedNodes[_bf];}else{if(_be){this._openedNodes[_bf]=true;}else{delete this._openedNodes[_bf];}this._saveExpandedNodes();}},_saveExpandedNodes:function(){if(this.persist&&this.cookieName){var ary=[];for(var id in this._openedNodes){ary.push(id);}_3(this.cookieName,ary.join(","),{expires:365});}},destroy:function(){if(this._curSearch){this._curSearch.timer.remove();delete this._curSearch;}if(this.rootNode){this.rootNode.destroyRecursive();}if(this.dndController&&!_10.isString(this.dndController)){this.dndController.destroy();}this.rootNode=null;this.inherited(arguments);},destroyRecursive:function(){this.destroy();},resize:function(_c1){if(_c1){_9.setMarginBox(this.domNode,_c1);}this._nodePixelIndent=_9.position(this.tree.indentDetector).w||this._nodePixelIndent;this.expandChildrenDeferred.then(_10.hitch(this,function(){this.rootNode.set("indent",this.showRoot?0:-1);this._adjustWidths();}));},_outstandingPaintOperations:0,_startPaint:function(p){this._outstandingPaintOperations++;if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}var oc=_10.hitch(this,function(){this._outstandingPaintOperations--;if(this._outstandingPaintOperations<=0&&!this._adjustWidthsTimer&&this._started){this._adjustWidthsTimer=this.defer("_adjustWidths");}});_13(p,oc,oc);},_adjustWidths:function(){if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}this.containerNode.style.width="auto";this.containerNode.style.width=this.domNode.scrollWidth>this.domNode.offsetWidth?"auto":"100%";},_createTreeNode:function(_c2){return new _26(_c2);},focus:function(){if(this.lastFocusedChild){this.focusNode(this.lastFocusedChild);}else{this.focusFirstChild();}}});if(_d("dojo-bidi")){_54.extend({_setTextDirAttr:function(_c3){if(_c3&&this.textDir!=_c3){this._set("textDir",_c3);this.rootNode.set("textDir",_c3);}}});}_54.PathError=_b("TreePathError");_54._TreeNode=_26;return _54;}); \ No newline at end of file
+require({cache:{"url:dijit/templates/TreeNode.html":"<div class=\"dijitTreeNode\" role=\"presentation\"\n\t><div data-dojo-attach-point=\"rowNode\" class=\"dijitTreeRow\" role=\"presentation\"\n\t\t><span data-dojo-attach-point=\"expandoNode\" class=\"dijitInline dijitTreeExpando\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"expandoNodeText\" class=\"dijitExpandoText\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" role=\"presentation\">\n\t\t\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitTreeIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span data-dojo-attach-point=\"labelNode,focusNode\" class=\"dijitTreeLabel\" role=\"treeitem\"\n\t\t\t\t tabindex=\"-1\" aria-selected=\"false\" id=\"${id}_label\"></span>\n\t\t</span\n\t></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeNodeContainer\" role=\"presentation\"\n\t\t style=\"display: none;\" aria-labelledby=\"${id}_label\"></div>\n</div>\n","url:dijit/templates/Tree.html":"<div role=\"tree\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" data-dojo-attach-point=\"indentDetector\"></div>\n\t<div class=\"dijitTreeExpando dijitTreeExpandoLoading\" data-dojo-attach-point=\"rootLoadingIndicator\"></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeContainer\" role=\"presentation\">\n\t</div>\n</div>\n"}});define("dijit/Tree",["dojo/_base/array","dojo/aspect","dojo/cookie","dojo/_base/declare","dojo/Deferred","dojo/promise/all","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/errors/create","dojo/fx","dojo/has","dojo/_base/kernel","dojo/keys","dojo/_base/lang","dojo/on","dojo/topic","dojo/touch","dojo/when","./a11yclick","./focus","./registry","./_base/manager","./_Widget","./_TemplatedMixin","./_Container","./_Contained","./_CssStateMixin","./_KeyNavMixin","dojo/text!./templates/TreeNode.html","dojo/text!./templates/Tree.html","./tree/TreeStoreModel","./tree/ForestStoreModel","./tree/_dndSelector","dojo/query!css2"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d,_e,_f,_10,on,_11,_12,_13,_14,_15,_16,_17,_18,_19,_1a,_1b,_1c,_1d,_1e,_1f,_20,_21,_22){function _23(d){return _10.delegate(d.promise||d,{addCallback:function(_24){this.then(_24);},addErrback:function(_25){this.otherwise(_25);}});};var _26=_4("dijit._TreeNode",[_18,_19,_1a,_1b,_1c],{item:null,isTreeNode:true,label:"",_setLabelAttr:function(val){this.labelNode[this.labelType=="html"?"innerHTML":"innerText" in this.labelNode?"innerText":"textContent"]=val;this._set("label",val);if(_d("dojo-bidi")){this.applyTextDir(this.labelNode);}},labelType:"text",isExpandable:null,isExpanded:false,state:"NotLoaded",templateString:_1e,baseClass:"dijitTreeNode",cssStateNodes:{rowNode:"dijitTreeRow"},_setTooltipAttr:{node:"rowNode",type:"attribute",attribute:"title"},buildRendering:function(){this.inherited(arguments);this._setExpando();this._updateItemClasses(this.item);if(this.isExpandable){this.labelNode.setAttribute("aria-expanded",this.isExpanded);}this.setSelected(false);},_setIndentAttr:function(_27){var _28=(Math.max(_27,0)*this.tree._nodePixelIndent)+"px";_a.set(this.domNode,"backgroundPosition",_28+" 0px");_a.set(this.rowNode,this.isLeftToRight()?"paddingLeft":"paddingRight",_28);_1.forEach(this.getChildren(),function(_29){_29.set("indent",_27+1);});this._set("indent",_27);},markProcessing:function(){this.state="Loading";this._setExpando(true);},unmarkProcessing:function(){this._setExpando(false);},_updateItemClasses:function(_2a){var _2b=this.tree,_2c=_2b.model;if(_2b._v10Compat&&_2a===_2c.root){_2a=null;}this._applyClassAndStyle(_2a,"icon","Icon");this._applyClassAndStyle(_2a,"label","Label");this._applyClassAndStyle(_2a,"row","Row");this.tree._startPaint(true);},_applyClassAndStyle:function(_2d,_2e,_2f){var _30="_"+_2e+"Class";var _31=_2e+"Node";var _32=this[_30];this[_30]=this.tree["get"+_2f+"Class"](_2d,this.isExpanded);_8.replace(this[_31],this[_30]||"",_32||"");_a.set(this[_31],this.tree["get"+_2f+"Style"](_2d,this.isExpanded)||{});},_updateLayout:function(){var _33=this.getParent(),_34=!_33||!_33.rowNode||_33.rowNode.style.display=="none";_8.toggle(this.domNode,"dijitTreeIsRoot",_34);_8.toggle(this.domNode,"dijitTreeIsLast",!_34&&!this.getNextSibling());},_setExpando:function(_35){var _36=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"],_37=["*","-","+","*"],idx=_35?0:(this.isExpandable?(this.isExpanded?1:2):3);_8.replace(this.expandoNode,_36[idx],_36);this.expandoNodeText.innerHTML=_37[idx];},expand:function(){if(this._expandDeferred){return _23(this._expandDeferred);}if(this._collapseDeferred){this._collapseDeferred.cancel();delete this._collapseDeferred;}this.isExpanded=true;this.labelNode.setAttribute("aria-expanded","true");if(this.tree.showRoot||this!==this.tree.rootNode){this.containerNode.setAttribute("role","group");}_8.add(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","true");}var _38=_c.wipeIn({node:this.containerNode,duration:_17.defaultDuration});var def=(this._expandDeferred=new _5(function(){_38.stop();}));_2.after(_38,"onEnd",function(){def.resolve(true);},true);_38.play();return _23(def);},collapse:function(){if(this._collapseDeferred){return _23(this._collapseDeferred);}if(this._expandDeferred){this._expandDeferred.cancel();delete this._expandDeferred;}this.isExpanded=false;this.labelNode.setAttribute("aria-expanded","false");if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","false");}_8.remove(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);var _39=_c.wipeOut({node:this.containerNode,duration:_17.defaultDuration});var def=(this._collapseDeferred=new _5(function(){_39.stop();}));_2.after(_39,"onEnd",function(){def.resolve(true);},true);_39.play();return _23(def);},indent:0,setChildItems:function(_3a){var _3b=this.tree,_3c=_3b.model,_3d=[];var _3e=_3b.focusedChild;var _3f=this.getChildren();_1.forEach(_3f,function(_40){_1a.prototype.removeChild.call(this,_40);},this);this.defer(function(){_1.forEach(_3f,function(_41){if(!_41._destroyed&&!_41.getParent()){_3b.dndController.removeTreeNode(_41);function _42(_43){var id=_3c.getIdentity(_43.item),ary=_3b._itemNodesMap[id];if(ary.length==1){delete _3b._itemNodesMap[id];}else{var _44=_1.indexOf(ary,_43);if(_44!=-1){ary.splice(_44,1);}}_1.forEach(_43.getChildren(),_42);};_42(_41);if(_3b.persist){var _45=_1.map(_41.getTreePath(),function(_46){return _3b.model.getIdentity(_46);}).join("/");for(var _47 in _3b._openedNodes){if(_47.substr(0,_45.length)==_45){delete _3b._openedNodes[_47];}}_3b._saveExpandedNodes();}if(_3b.lastFocusedChild&&!_7.isDescendant(_3b.lastFocusedChild.domNode,_3b.domNode)){delete _3b.lastFocusedChild;}if(_3e&&!_7.isDescendant(_3e.domNode,_3b.domNode)){_3b.focus();}_41.destroyRecursive();}});});this.state="Loaded";if(_3a&&_3a.length>0){this.isExpandable=true;_1.forEach(_3a,function(_48){var id=_3c.getIdentity(_48),_49=_3b._itemNodesMap[id],_4a;if(_49){for(var i=0;i<_49.length;i++){if(_49[i]&&!_49[i].getParent()){_4a=_49[i];_4a.set("indent",this.indent+1);break;}}}if(!_4a){_4a=this.tree._createTreeNode({item:_48,tree:_3b,isExpandable:_3c.mayHaveChildren(_48),label:_3b.getLabel(_48),labelType:(_3b.model&&_3b.model.labelType)||"text",tooltip:_3b.getTooltip(_48),ownerDocument:_3b.ownerDocument,dir:_3b.dir,lang:_3b.lang,textDir:_3b.textDir,indent:this.indent+1});if(_49){_49.push(_4a);}else{_3b._itemNodesMap[id]=[_4a];}}this.addChild(_4a);if(this.tree.autoExpand||this.tree._state(_4a)){_3d.push(_3b._expandNode(_4a));}},this);_1.forEach(this.getChildren(),function(_4b){_4b._updateLayout();});}else{this.isExpandable=false;}if(this._setExpando){this._setExpando(false);}this._updateItemClasses(this.item);var def=_6(_3d);this.tree._startPaint(def);return _23(def);},getTreePath:function(){var _4c=this;var _4d=[];while(_4c&&_4c!==this.tree.rootNode){_4d.unshift(_4c.item);_4c=_4c.getParent();}_4d.unshift(this.tree.rootNode.item);return _4d;},getIdentity:function(){return this.tree.model.getIdentity(this.item);},removeChild:function(_4e){this.inherited(arguments);var _4f=this.getChildren();if(_4f.length==0){this.isExpandable=false;this.collapse();}_1.forEach(_4f,function(_50){_50._updateLayout();});},makeExpandable:function(){this.isExpandable=true;this._setExpando(false);},setSelected:function(_51){this.labelNode.setAttribute("aria-selected",_51?"true":"false");_8.toggle(this.rowNode,"dijitTreeRowSelected",_51);},focus:function(){_15.focus(this.focusNode);}});if(_d("dojo-bidi")){_26.extend({_setTextDirAttr:function(_52){if(_52&&((this.textDir!=_52)||!this._created)){this._set("textDir",_52);this.applyTextDir(this.labelNode);_1.forEach(this.getChildren(),function(_53){_53.set("textDir",_52);},this);}}});}var _54=_4("dijit.Tree",[_18,_1d,_19,_1c],{baseClass:"dijitTree",store:null,model:null,query:null,label:"",showRoot:true,childrenAttr:["children"],paths:[],path:[],selectedItems:null,selectedItem:null,openOnClick:false,openOnDblClick:false,templateString:_1f,persist:false,autoExpand:false,dndController:_22,dndParams:["onDndDrop","itemCreator","onDndCancel","checkAcceptance","checkItemAcceptance","dragThreshold","betweenThreshold"],onDndDrop:null,itemCreator:null,onDndCancel:null,checkAcceptance:null,checkItemAcceptance:null,dragThreshold:5,betweenThreshold:0,_nodePixelIndent:19,_publish:function(_55,_56){_11.publish(this.id,_10.mixin({tree:this,event:_55},_56||{}));},postMixInProperties:function(){this.tree=this;if(this.autoExpand){this.persist=false;}this._itemNodesMap={};if(!this.cookieName&&this.id){this.cookieName=this.id+"SaveStateCookie";}this.expandChildrenDeferred=new _5();this.pendingCommandsPromise=this.expandChildrenDeferred.promise;this.inherited(arguments);},postCreate:function(){this._initState();var _57=this;this.own(on(this.containerNode,on.selector(".dijitTreeNode",_12.enter),function(evt){_57._onNodeMouseEnter(_16.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeNode",_12.leave),function(evt){_57._onNodeMouseLeave(_16.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_14.press),function(evt){_57._onNodePress(_16.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_14),function(evt){_57._onClick(_16.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow","dblclick"),function(evt){_57._onDblClick(_16.getEnclosingWidget(this),evt);}));if(!this.model){this._store2model();}this.own(_2.after(this.model,"onChange",_10.hitch(this,"_onItemChange"),true),_2.after(this.model,"onChildrenChange",_10.hitch(this,"_onItemChildrenChange"),true),_2.after(this.model,"onDelete",_10.hitch(this,"_onItemDelete"),true));this.inherited(arguments);if(this.dndController){if(_10.isString(this.dndController)){this.dndController=_10.getObject(this.dndController);}var _58={};for(var i=0;i<this.dndParams.length;i++){if(this[this.dndParams[i]]){_58[this.dndParams[i]]=this[this.dndParams[i]];}}this.dndController=new this.dndController(this,_58);}this._load();this.onLoadDeferred=_23(this.pendingCommandsPromise);this.onLoadDeferred.then(_10.hitch(this,"onLoad"));},_store2model:function(){this._v10Compat=true;_e.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");var _59={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};if(this.params.mayHaveChildren){_59.mayHaveChildren=_10.hitch(this,"mayHaveChildren");}if(this.params.getItemChildren){_59.getChildren=_10.hitch(this,function(_5a,_5b,_5c){this.getItemChildren((this._v10Compat&&_5a===this.model.root)?null:_5a,_5b,_5c);});}this.model=new _21(_59);this.showRoot=Boolean(this.label);},onLoad:function(){},_load:function(){this.model.getRoot(_10.hitch(this,function(_5d){var rn=(this.rootNode=this.tree._createTreeNode({item:_5d,tree:this,isExpandable:true,label:this.label||this.getLabel(_5d),labelType:this.model.labelType||"text",textDir:this.textDir,indent:this.showRoot?0:-1}));if(!this.showRoot){rn.rowNode.style.display="none";this.domNode.setAttribute("role","presentation");this.domNode.removeAttribute("aria-expanded");this.domNode.removeAttribute("aria-multiselectable");if(this["aria-label"]){rn.containerNode.setAttribute("aria-label",this["aria-label"]);this.domNode.removeAttribute("aria-label");}else{if(this["aria-labelledby"]){rn.containerNode.setAttribute("aria-labelledby",this["aria-labelledby"]);this.domNode.removeAttribute("aria-labelledby");}}rn.labelNode.setAttribute("role","presentation");rn.labelNode.removeAttribute("aria-selected");rn.containerNode.setAttribute("role","tree");rn.containerNode.setAttribute("aria-expanded","true");rn.containerNode.setAttribute("aria-multiselectable",!this.dndController.singular);}else{this.domNode.setAttribute("aria-multiselectable",!this.dndController.singular);this.rootLoadingIndicator.style.display="none";}this.containerNode.appendChild(rn.domNode);var _5e=this.model.getIdentity(_5d);if(this._itemNodesMap[_5e]){this._itemNodesMap[_5e].push(rn);}else{this._itemNodesMap[_5e]=[rn];}rn._updateLayout();this._expandNode(rn).then(_10.hitch(this,function(){if(!this._destroyed){this.rootLoadingIndicator.style.display="none";this.expandChildrenDeferred.resolve(true);}}));}),_10.hitch(this,function(err){console.error(this,": error loading root: ",err);}));},getNodesByItem:function(_5f){if(!_5f){return [];}var _60=_10.isString(_5f)?_5f:this.model.getIdentity(_5f);return [].concat(this._itemNodesMap[_60]);},_setSelectedItemAttr:function(_61){this.set("selectedItems",[_61]);},_setSelectedItemsAttr:function(_62){var _63=this;return this.pendingCommandsPromise=this.pendingCommandsPromise.always(_10.hitch(this,function(){var _64=_1.map(_62,function(_65){return (!_65||_10.isString(_65))?_65:_63.model.getIdentity(_65);});var _66=[];_1.forEach(_64,function(id){_66=_66.concat(_63._itemNodesMap[id]||[]);});this.set("selectedNodes",_66);}));},_setPathAttr:function(_67){if(_67.length){return _23(this.set("paths",[_67]).then(function(_68){return _68[0];}));}else{return _23(this.set("paths",[]).then(function(_69){return _69[0];}));}},_setPathsAttr:function(_6a){var _6b=this;function _6c(_6d,_6e){var _6f=_6d.shift();var _70=_1.filter(_6e,function(_71){return _71.getIdentity()==_6f;})[0];if(!!_70){if(_6d.length){return _6b._expandNode(_70).then(function(){return _6c(_6d,_70.getChildren());});}else{return _70;}}else{throw new _54.PathError("Could not expand path at "+_6f);}};return _23(this.pendingCommandsPromise=this.pendingCommandsPromise.always(function(){return _6(_1.map(_6a,function(_72){_72=_1.map(_72,function(_73){return _73&&_10.isObject(_73)?_6b.model.getIdentity(_73):_73;});if(_72.length){return _6c(_72,[_6b.rootNode]);}else{throw new _54.PathError("Empty path");}}));}).then(function setNodes(_74){_6b.set("selectedNodes",_74);return _6b.paths;}));},_setSelectedNodeAttr:function(_75){this.set("selectedNodes",[_75]);},_setSelectedNodesAttr:function(_76){this.dndController.setSelection(_76);},expandAll:function(){var _77=this;function _78(_79){return _77._expandNode(_79).then(function(){var _7a=_1.filter(_79.getChildren()||[],function(_7b){return _7b.isExpandable;});return _6(_1.map(_7a,_78));});};return _23(_78(this.rootNode));},collapseAll:function(){var _7c=this;function _7d(_7e){var _7f=_1.filter(_7e.getChildren()||[],function(_80){return _80.isExpandable;}),_81=_6(_1.map(_7f,_7d));if(!_7e.isExpanded||(_7e==_7c.rootNode&&!_7c.showRoot)){return _81;}else{return _81.then(function(){return _7c._collapseNode(_7e);});}};return _23(_7d(this.rootNode));},mayHaveChildren:function(){},getItemChildren:function(){},getLabel:function(_82){return this.model.getLabel(_82);},getIconClass:function(_83,_84){return (!_83||this.model.mayHaveChildren(_83))?(_84?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";},getLabelClass:function(){},getRowClass:function(){},getIconStyle:function(){},getLabelStyle:function(){},getRowStyle:function(){},getTooltip:function(){return "";},_onDownArrow:function(evt,_85){var _86=this._getNext(_85);if(_86&&_86.isTreeNode){this.focusNode(_86);}},_onUpArrow:function(evt,_87){var _88=_87.getPreviousSibling();if(_88){_87=_88;while(_87.isExpandable&&_87.isExpanded&&_87.hasChildren()){var _89=_87.getChildren();_87=_89[_89.length-1];}}else{var _8a=_87.getParent();if(!(!this.showRoot&&_8a===this.rootNode)){_87=_8a;}}if(_87&&_87.isTreeNode){this.focusNode(_87);}},_onRightArrow:function(evt,_8b){if(_8b.isExpandable&&!_8b.isExpanded){this._expandNode(_8b);}else{if(_8b.hasChildren()){_8b=_8b.getChildren()[0];if(_8b&&_8b.isTreeNode){this.focusNode(_8b);}}}},_onLeftArrow:function(evt,_8c){if(_8c.isExpandable&&_8c.isExpanded){this._collapseNode(_8c);}else{var _8d=_8c.getParent();if(_8d&&_8d.isTreeNode&&!(!this.showRoot&&_8d===this.rootNode)){this.focusNode(_8d);}}},focusLastChild:function(){var _8e=this._getLast();if(_8e&&_8e.isTreeNode){this.focusNode(_8e);}},_getFirst:function(){return this.showRoot?this.rootNode:this.rootNode.getChildren()[0];},_getLast:function(){var _8f=this.rootNode;while(_8f.isExpanded){var c=_8f.getChildren();if(!c.length){break;}_8f=c[c.length-1];}return _8f;},_getNext:function(_90){if(_90.isExpandable&&_90.isExpanded&&_90.hasChildren()){return _90.getChildren()[0];}else{while(_90&&_90.isTreeNode){var _91=_90.getNextSibling();if(_91){return _91;}_90=_90.getParent();}return null;}},childSelector:".dijitTreeRow",isExpandoNode:function(_92,_93){return _7.isDescendant(_92,_93.expandoNode)||_7.isDescendant(_92,_93.expandoNodeText);},_onNodePress:function(_94,e){this.focusNode(_94);},__click:function(_95,e,_96,_97){var _98=e.target,_99=this.isExpandoNode(_98,_95);if(_95.isExpandable&&(_96||_99)){this._onExpandoClick({node:_95});}else{this._publish("execute",{item:_95.item,node:_95,evt:e});this[_97](_95.item,_95,e);this.focusNode(_95);}e.stopPropagation();e.preventDefault();},_onClick:function(_9a,e){this.__click(_9a,e,this.openOnClick,"onClick");},_onDblClick:function(_9b,e){this.__click(_9b,e,this.openOnDblClick,"onDblClick");},_onExpandoClick:function(_9c){var _9d=_9c.node;this.focusNode(_9d);if(_9d.isExpanded){this._collapseNode(_9d);}else{this._expandNode(_9d);}},onClick:function(){},onDblClick:function(){},onOpen:function(){},onClose:function(){},_getNextNode:function(_9e){_e.deprecated(this.declaredClass+"::_getNextNode(node) is deprecated. Use _getNext(node) instead.","","2.0");return this._getNext(_9e);},_getRootOrFirstNode:function(){_e.deprecated(this.declaredClass+"::_getRootOrFirstNode() is deprecated. Use _getFirst() instead.","","2.0");return this._getFirst();},_collapseNode:function(_9f){if(_9f._expandNodeDeferred){delete _9f._expandNodeDeferred;}if(_9f.state=="Loading"){return;}if(_9f.isExpanded){var ret=_9f.collapse();this.onClose(_9f.item,_9f);this._state(_9f,false);this._startPaint(ret);return ret;}},_expandNode:function(_a0){if(_a0._expandNodeDeferred){return _a0._expandNodeDeferred;}var _a1=this.model,_a2=_a0.item,_a3=this;if(!_a0._loadDeferred){_a0.markProcessing();_a0._loadDeferred=new _5();_a1.getChildren(_a2,function(_a4){_a0.unmarkProcessing();_a0.setChildItems(_a4).then(function(){_a0._loadDeferred.resolve(_a4);});},function(err){console.error(_a3,": error loading "+_a0.label+" children: ",err);_a0._loadDeferred.reject(err);});}var def=_a0._loadDeferred.then(_10.hitch(this,function(){var _a5=_a0.expand();this.onOpen(_a0.item,_a0);this._state(_a0,true);return _a5;}));this._startPaint(def);return def;},focusNode:function(_a6){var tmp=[];for(var _a7=this.domNode;_a7&&_a7.tagName&&_a7.tagName.toUpperCase()!=="IFRAME";_a7=_a7.parentNode){tmp.push({domNode:_a7.contentWindow||_a7,scrollLeft:_a7.scrollLeft||0,scrollTop:_a7.scrollTop||0});}this.focusChild(_a6);this.defer(function(){for(var i=0,max=tmp.length;i<max;i++){tmp[i].domNode.scrollLeft=tmp[i].scrollLeft;tmp[i].domNode.scrollTop=tmp[i].scrollTop;}},0);},_onNodeMouseEnter:function(){},_onNodeMouseLeave:function(){},_onItemChange:function(_a8){var _a9=this.model,_aa=_a9.getIdentity(_a8),_ab=this._itemNodesMap[_aa];if(_ab){var _ac=this.getLabel(_a8),_ad=this.getTooltip(_a8);_1.forEach(_ab,function(_ae){_ae.set({item:_a8,label:_ac,tooltip:_ad});_ae._updateItemClasses(_a8);});}},_onItemChildrenChange:function(_af,_b0){var _b1=this.model,_b2=_b1.getIdentity(_af),_b3=this._itemNodesMap[_b2];if(_b3){_1.forEach(_b3,function(_b4){_b4.setChildItems(_b0);});}},_onItemDelete:function(_b5){var _b6=this.model,_b7=_b6.getIdentity(_b5),_b8=this._itemNodesMap[_b7];if(_b8){_1.forEach(_b8,function(_b9){this.dndController.removeTreeNode(_b9);var _ba=_b9.getParent();if(_ba){_ba.removeChild(_b9);}if(this.lastFocusedChild&&!_7.isDescendant(this.lastFocusedChild.domNode,this.domNode)){delete this.lastFocusedChild;}if(this.focusedChild&&!_7.isDescendant(this.focusedChild.domNode,this.domNode)){this.focus();}_b9.destroyRecursive();},this);delete this._itemNodesMap[_b7];}},_initState:function(){this._openedNodes={};if(this.persist&&this.cookieName){var _bb=_3(this.cookieName);if(_bb){_1.forEach(_bb.split(","),function(_bc){this._openedNodes[_bc]=true;},this);}}},_state:function(_bd,_be){if(!this.persist){return false;}var _bf=_1.map(_bd.getTreePath(),function(_c0){return this.model.getIdentity(_c0);},this).join("/");if(arguments.length===1){return this._openedNodes[_bf];}else{if(_be){this._openedNodes[_bf]=true;}else{delete this._openedNodes[_bf];}this._saveExpandedNodes();}},_saveExpandedNodes:function(){if(this.persist&&this.cookieName){var ary=[];for(var id in this._openedNodes){ary.push(id);}_3(this.cookieName,ary.join(","),{expires:365});}},destroy:function(){if(this._curSearch){this._curSearch.timer.remove();delete this._curSearch;}if(this.rootNode){this.rootNode.destroyRecursive();}if(this.dndController&&!_10.isString(this.dndController)){this.dndController.destroy();}this.rootNode=null;this.inherited(arguments);},destroyRecursive:function(){this.destroy();},resize:function(_c1){if(_c1){_9.setMarginBox(this.domNode,_c1);}this._nodePixelIndent=_9.position(this.tree.indentDetector).w||this._nodePixelIndent;this.expandChildrenDeferred.then(_10.hitch(this,function(){this.rootNode.set("indent",this.showRoot?0:-1);this._adjustWidths();}));},_outstandingPaintOperations:0,_startPaint:function(p){this._outstandingPaintOperations++;if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}var oc=_10.hitch(this,function(){this._outstandingPaintOperations--;if(this._outstandingPaintOperations<=0&&!this._adjustWidthsTimer&&this._started){this._adjustWidthsTimer=this.defer("_adjustWidths");}});_13(p,oc,oc);},_adjustWidths:function(){if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}this.containerNode.style.width="auto";this.containerNode.style.width=this.domNode.scrollWidth>this.domNode.offsetWidth?"auto":"100%";},_createTreeNode:function(_c2){return new _26(_c2);},focus:function(){if(this.lastFocusedChild){this.focusNode(this.lastFocusedChild);}else{this.focusFirstChild();}}});if(_d("dojo-bidi")){_54.extend({_setTextDirAttr:function(_c3){if(_c3&&this.textDir!=_c3){this._set("textDir",_c3);this.rootNode.set("textDir",_c3);}}});}_54.PathError=_b("TreePathError");_54._TreeNode=_26;return _54;}); \ No newline at end of file
diff --git a/lib/dijit/_editor/nls/FontChoice.js b/lib/dijit/_editor/nls/FontChoice.js
index f0d02cfaa..003f87183 100644
--- a/lib/dijit/_editor/nls/FontChoice.js
+++ b/lib/dijit/_editor/nls/FontChoice.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/_editor/nls/FontChoice",{root:({fontSize:"Size",fontName:"Font",formatBlock:"Format",serif:"serif","sans-serif":"sans-serif",monospace:"monospace",cursive:"cursive",fantasy:"fantasy",noFormat:"None",p:"Paragraph",h1:"Heading",h2:"Subheading",h3:"Sub-subheading",pre:"Pre-formatted",1:"xx-small",2:"x-small",3:"small",4:"medium",5:"large",6:"x-large",7:"xx-large"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true}); \ No newline at end of file
+define("dijit/_editor/nls/FontChoice",{root:({fontSize:"Size",fontName:"Font",formatBlock:"Format",serif:"serif","sans-serif":"sans-serif",monospace:"monospace",cursive:"cursive",fantasy:"fantasy",noFormat:"None",p:"Paragraph",h1:"Heading",h2:"Subheading",h3:"Sub-subheading",pre:"Pre-formatted",1:"xx-small",2:"x-small",3:"small",4:"medium",5:"large",6:"x-large",7:"xx-large"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true,"al":true}); \ No newline at end of file
diff --git a/lib/dijit/_editor/nls/LinkDialog.js b/lib/dijit/_editor/nls/LinkDialog.js
index a80482385..032590915 100644
--- a/lib/dijit/_editor/nls/LinkDialog.js
+++ b/lib/dijit/_editor/nls/LinkDialog.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/_editor/nls/LinkDialog",{root:({createLinkTitle:"Link Properties",insertImageTitle:"Image Properties",url:"URL:",text:"Description:",target:"Target:",set:"Set",currentWindow:"Current Window",parentWindow:"Parent Window",topWindow:"Topmost Window",newWindow:"New Window"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true}); \ No newline at end of file
+define("dijit/_editor/nls/LinkDialog",{root:({createLinkTitle:"Link Properties",insertImageTitle:"Image Properties",url:"URL:",text:"Description:",target:"Target:",set:"Set",currentWindow:"Current Window",parentWindow:"Parent Window",topWindow:"Topmost Window",newWindow:"New Window"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true,"al":true}); \ No newline at end of file
diff --git a/lib/dijit/_editor/nls/al/FontChoice.js b/lib/dijit/_editor/nls/al/FontChoice.js
new file mode 100644
index 000000000..efd610b9e
--- /dev/null
+++ b/lib/dijit/_editor/nls/al/FontChoice.js
@@ -0,0 +1,2 @@
+//>>built
+define("dijit/_editor/nls/al/FontChoice",{fontSize:"Madhësia",fontName:"Shkrimi",formatBlock:"Formati",serif:"serif","sans-serif":"sans-serif",monospace:"monospace",cursive:"cursive",fantasy:"fantasy",noFormat:"Asnjë",p:"Paragraf",h1:"Titull",h2:"Nëntitull",h3:"Nëntitull i Nëntitullit",pre:"I para-formatuar",1:"i stër stër vogel",2:"i stërvogel",3:"vogël",4:"mesatar",5:"madh",6:"shumë i madh",7:"i stërmadh"}); \ No newline at end of file
diff --git a/lib/dijit/_editor/nls/al/LinkDialog.js b/lib/dijit/_editor/nls/al/LinkDialog.js
new file mode 100644
index 000000000..a595603b4
--- /dev/null
+++ b/lib/dijit/_editor/nls/al/LinkDialog.js
@@ -0,0 +1,2 @@
+//>>built
+define("dijit/_editor/nls/al/LinkDialog",{createLinkTitle:"Cilesitë e lidhjes",insertImageTitle:"Cilesitë e Imazhit",url:"URL:",text:"Përshkrim:",target:"Objektivi:",set:"Vendos",currentWindow:"Dritarja Aktuale",parentWindow:"Dritarja prind",topWindow:"Dritarja e sipërme",newWindow:"Dritare e re"}); \ No newline at end of file
diff --git a/lib/dijit/_editor/nls/al/commands.js b/lib/dijit/_editor/nls/al/commands.js
new file mode 100644
index 000000000..8018bd109
--- /dev/null
+++ b/lib/dijit/_editor/nls/al/commands.js
@@ -0,0 +1,2 @@
+//>>built
+define("dijit/_editor/nls/al/commands",{"bold":"Bold","copy":"Kopjo","cut":"Prit","delete":"Fshij","indent":"Kthehu","insertHorizontalRule":"Rregull horizontale","insertOrderedList":"Lista e numeruar","insertUnorderedList":"Lista me shënja","italic":"I pjerrët","justifyCenter":"Qënderzo","justifyFull":"Justifiko","justifyLeft":"Rradhit nga e majtë","justifyRight":"Rradhit nga e djathta","outdent":"Outdent","paste":"Ngjit","redo":"Rikthe","removeFormat":"Hiq formatin","selectAll":"Zgjidh të gjitha","strikethrough":"Përplasje","subscript":"Subscript","superscript":"Superscript","underline":"Underline","undo":"Anulo","unlink":"Hiq lidhje","createLink":"Krijo lidhje","toggleDir":"Aktivizo / çaktivizo drejtimin","insertImage":"Fut imazhin","insertTable":"Fut / Ndrysho tabelën","toggleTableBorder":"Aktivizo / çaktivizo kufirin e tabelës","deleteTable":"Fshi tabelën","tableProp":"Properties tabela","htmlToggle":"Burimi HTML","foreColor":"Ngjyra e përparme","hiliteColor":"Ngjyra e sfondit","plainFormatBlock":"Stili i paragrafit","formatBlock":"Stili i paragrafit","fontSize":"Madhësia e shkronjave","fontName":"Emri i fontit","tabIndent":"Tabelë e kthimit","fullScreen":"Aktivizo / çaktivizo ekranin e plotë","viewSource":"Shiko burimin HTML","print":"Shtyp","newPage":"Faqja e re","systemShortcut":"Veprimi '${0}' është i disponueshëm vetëm në shfletues përmes një çelësi. Përdorni ${1}. ","CtrlKey":"Ctrl+${0}","appleKey":"⌘${0}"}); \ No newline at end of file
diff --git a/lib/dijit/_editor/nls/commands.js b/lib/dijit/_editor/nls/commands.js
index 91c6fd448..4fddc1c3a 100644
--- a/lib/dijit/_editor/nls/commands.js
+++ b/lib/dijit/_editor/nls/commands.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/_editor/nls/commands",{root:({"bold":"Bold","copy":"Copy","cut":"Cut","delete":"Delete","indent":"Indent","insertHorizontalRule":"Horizontal Rule","insertOrderedList":"Numbered List","insertUnorderedList":"Bullet List","italic":"Italic","justifyCenter":"Align Center","justifyFull":"Justify","justifyLeft":"Align Left","justifyRight":"Align Right","outdent":"Outdent","paste":"Paste","redo":"Redo","removeFormat":"Remove Format","selectAll":"Select All","strikethrough":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Underline","undo":"Undo","unlink":"Remove Link","createLink":"Create Link","toggleDir":"Toggle Direction","insertImage":"Insert Image","insertTable":"Insert/Edit Table","toggleTableBorder":"Toggle Table Border","deleteTable":"Delete Table","tableProp":"Table Property","htmlToggle":"HTML Source","foreColor":"Foreground Color","hiliteColor":"Background Color","plainFormatBlock":"Paragraph Style","formatBlock":"Paragraph Style","fontSize":"Font Size","fontName":"Font Name","tabIndent":"Tab Indent","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","print":"Print","newPage":"New Page","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","ctrlKey":"ctrl+${0}","appleKey":"⌘${0}"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true}); \ No newline at end of file
+define("dijit/_editor/nls/commands",{root:({"bold":"Bold","copy":"Copy","cut":"Cut","delete":"Delete","indent":"Indent","insertHorizontalRule":"Horizontal Rule","insertOrderedList":"Numbered List","insertUnorderedList":"Bullet List","italic":"Italic","justifyCenter":"Align Center","justifyFull":"Justify","justifyLeft":"Align Left","justifyRight":"Align Right","outdent":"Outdent","paste":"Paste","redo":"Redo","removeFormat":"Remove Format","selectAll":"Select All","strikethrough":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Underline","undo":"Undo","unlink":"Remove Link","createLink":"Create Link","toggleDir":"Toggle Direction","insertImage":"Insert Image","insertTable":"Insert/Edit Table","toggleTableBorder":"Toggle Table Border","deleteTable":"Delete Table","tableProp":"Table Property","htmlToggle":"HTML Source","foreColor":"Foreground Color","hiliteColor":"Background Color","plainFormatBlock":"Paragraph Style","formatBlock":"Paragraph Style","fontSize":"Font Size","fontName":"Font Name","tabIndent":"Tab Indent","fullScreen":"Toggle Full Screen","viewSource":"View HTML Source","print":"Print","newPage":"New Page","systemShortcut":"The \"${0}\" action is only available in your browser using a keyboard shortcut. Use ${1}.","ctrlKey":"ctrl+${0}","appleKey":"⌘${0}"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true,"al":true}); \ No newline at end of file
diff --git a/lib/dijit/_editor/nls/it/FontChoice.js b/lib/dijit/_editor/nls/it/FontChoice.js
index fb0e15282..bc9c430df 100644
--- a/lib/dijit/_editor/nls/it/FontChoice.js
+++ b/lib/dijit/_editor/nls/it/FontChoice.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/_editor/nls/it/FontChoice",({fontSize:"Dimensione",fontName:"Carattere",formatBlock:"Formato",serif:"serif","sans-serif":"sans-serif",monospace:"spaziatura fissa",cursive:"corsivo",fantasy:"fantasy",noFormat:"Nessuna",p:"Paragrafo",h1:"Intestazione",h2:"Sottointestazione",h3:"Sottointestazione secondaria",pre:"Preformattato",1:"piccolissimo",2:"molto piccolo",3:"piccolo",4:"medio",5:"grande",6:"molto grande",7:"grandissimo"})); \ No newline at end of file
+define("dijit/_editor/nls/it/FontChoice",{fontSize:"Dimensione",fontName:"Carattere",formatBlock:"Formato",serif:"serif","sans-serif":"sans-serif",monospace:"spaziatura fissa",cursive:"corsivo",fantasy:"fantasy",noFormat:"Nessuna",p:"Paragrafo",h1:"Intestazione",h2:"Sottointestazione",h3:"Sottointestazione secondaria",pre:"Preformattato",1:"piccolissimo",2:"molto piccolo",3:"piccolo",4:"medio",5:"grande",6:"molto grande",7:"grandissimo"}); \ No newline at end of file
diff --git a/lib/dijit/_editor/nls/it/LinkDialog.js b/lib/dijit/_editor/nls/it/LinkDialog.js
index 5682ac9f9..1a51ef970 100644
--- a/lib/dijit/_editor/nls/it/LinkDialog.js
+++ b/lib/dijit/_editor/nls/it/LinkDialog.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/_editor/nls/it/LinkDialog",({createLinkTitle:"Proprietà collegamento",insertImageTitle:"Proprietà immagine",url:"URL:",text:"Descrizione:",target:"Destinazione:",set:"Imposta",currentWindow:"Finestra corrente",parentWindow:"Finestra padre",topWindow:"Finestra superiore",newWindow:"Nuova finestra"})); \ No newline at end of file
+define("dijit/_editor/nls/it/LinkDialog",{createLinkTitle:"Proprietà collegamento",insertImageTitle:"Proprietà immagine",url:"URL:",text:"Descrizione:",target:"Destinazione:",set:"Imposta",currentWindow:"Finestra corrente",parentWindow:"Finestra padre",topWindow:"Finestra superiore",newWindow:"Nuova finestra"}); \ No newline at end of file
diff --git a/lib/dijit/_editor/nls/it/commands.js b/lib/dijit/_editor/nls/it/commands.js
index aab683d62..5a21cffc1 100644
--- a/lib/dijit/_editor/nls/it/commands.js
+++ b/lib/dijit/_editor/nls/it/commands.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/_editor/nls/it/commands",({"bold":"Grassetto","copy":"Copia","cut":"Taglia","delete":"Elimina","indent":"Rientro","insertHorizontalRule":"Righello orizzontale","insertOrderedList":"Elenco numerato","insertUnorderedList":"Elenco puntato","italic":"Corsivo","justifyCenter":"Allinea al centro","justifyFull":"Giustifica","justifyLeft":"Allinea a sinistra","justifyRight":"Allinea a destra","outdent":"Annulla rientro","paste":"Incolla","redo":"Ripristina","removeFormat":"Rimuovi formato","selectAll":"Seleziona tutto","strikethrough":"Barrato","subscript":"Pedice","superscript":"Apice","underline":"Sottolinea","undo":"Annulla","unlink":"Rimuovi collegamento","createLink":"Crea collegamento","toggleDir":"Attiva/Disattiva direzione","insertImage":"Inserisci immagine","insertTable":"Inserisci/Modifica tabella","toggleTableBorder":"Attiva/Disattiva bordo tabella","deleteTable":"Elimina tabella","tableProp":"Proprietà tabella","htmlToggle":"Origine HTML","foreColor":"Colore primo piano","hiliteColor":"Colore sfondo","plainFormatBlock":"Stile paragrafo","formatBlock":"Stile paragrafo","fontSize":"Dimensione carattere","fontName":"Nome carattere","tabIndent":"Rientro tabulazione","fullScreen":"Attiva/Disattiva schermo intero","viewSource":"Visualizza origine HTML","print":"Stampa","newPage":"Nuova pagina","systemShortcut":"La azione \"${0}\" è disponibile solo nel browser tramite un tasto di scelta rapida. Utilizzare ${1}.","ctrlKey":"ctrl+${0}","appleKey":"⌘${0}"})); \ No newline at end of file
+define("dijit/_editor/nls/it/commands",{"bold":"Grassetto","copy":"Copia","cut":"Taglia","delete":"Elimina","indent":"Rientro","insertHorizontalRule":"Righello orizzontale","insertOrderedList":"Elenco numerato","insertUnorderedList":"Elenco puntato","italic":"Corsivo","justifyCenter":"Allinea al centro","justifyFull":"Giustifica","justifyLeft":"Allinea a sinistra","justifyRight":"Allinea a destra","outdent":"Annulla rientro","paste":"Incolla","redo":"Ripristina","removeFormat":"Rimuovi formato","selectAll":"Seleziona tutto","strikethrough":"Barrato","subscript":"Pedice","superscript":"Apice","underline":"Sottolinea","undo":"Annulla","unlink":"Rimuovi collegamento","createLink":"Crea collegamento","toggleDir":"Attiva/Disattiva direzione","insertImage":"Inserisci immagine","insertTable":"Inserisci/Modifica tabella","toggleTableBorder":"Attiva/Disattiva bordo tabella","deleteTable":"Elimina tabella","tableProp":"Proprietà tabella","htmlToggle":"Origine HTML","foreColor":"Colore primo piano","hiliteColor":"Colore sfondo","plainFormatBlock":"Stile paragrafo","formatBlock":"Stile paragrafo","fontSize":"Dimensione carattere","fontName":"Nome carattere","tabIndent":"Rientro tabulazione","fullScreen":"Attiva/Disattiva schermo intero","viewSource":"Visualizza origine HTML","print":"Stampa","newPage":"Nuova pagina","systemShortcut":"La azione \"${0}\" è disponibile solo nel browser tramite un tasto di scelta rapida. Utilizzare ${1}.","ctrlKey":"ctrl+${0}","appleKey":"⌘${0}"}); \ No newline at end of file
diff --git a/lib/dijit/_editor/plugins/LinkDialog.js b/lib/dijit/_editor/plugins/LinkDialog.js
index 81804884f..f13624f55 100644
--- a/lib/dijit/_editor/plugins/LinkDialog.js
+++ b/lib/dijit/_editor/plugins/LinkDialog.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/_editor/plugins/LinkDialog",["require","dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/query","dojo/string","../_Plugin","../../form/DropDownButton","../range"],function(_1,_2,_3,_4,_5,on,_6,_7,_8,_9,_a,_b){var _c=_2("dijit._editor.plugins.LinkDialog",_9,{buttonClass:_a,useDefaultCommand:false,urlRegExp:"((https?|ftps?|file)\\://|./|../|/|)(/[a-zA-Z]{1,1}:/|)(((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)*(?:[a-zA-Z](?:[-\\da-zA-Z]{0,80}[\\da-zA-Z])?)\\.?)|(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])|(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]|(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]|(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])|0[xX]0*[\\da-fA-F]{1,8}|([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}|([\\da-fA-F]{1,4}\\:){6}((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])))(\\:\\d+)?(/(?:[^?#\\s/]+/)*(?:[^?#\\s/]{0,}(?:\\?[^?#\\s/]*)?(?:#.*)?)?)?",emailRegExp:"<?(mailto\\:)([!#-'*+\\-\\/-9=?A-Z^-~]+[.])*[!#-'*+\\-\\/-9=?A-Z^-~]+"+"@"+"((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)+(?:[a-zA-Z](?:[-\\da-zA-Z]{0,6}[\\da-zA-Z])?)\\.?)|localhost|^[^-][a-zA-Z0-9_-]*>?",htmlTemplate:"<a href=\"${urlInput}\" _djrealurl=\"${urlInput}\""+" target=\"${targetSelect}\""+">${textInput}</a>",tag:"a",_hostRxp:/^((([^\[:]+):)?([^@]+)@)?(\[([^\]]+)\]|([^\[:]*))(:([0-9]+))?$/,_userAtRxp:/^([!#-'*+\-\/-9=?A-Z^-~]+[.])*[!#-'*+\-\/-9=?A-Z^-~]+@/i,linkDialogTemplate:["<table role='presentation'><tr><td>","<label for='${id}_urlInput'>${url}</label>","</td><td>","<input data-dojo-type='dijit.form.ValidationTextBox' required='true' "+"id='${id}_urlInput' name='urlInput' data-dojo-props='intermediateChanges:true'/>","</td></tr><tr><td>","<label for='${id}_textInput'>${text}</label>","</td><td>","<input data-dojo-type='dijit.form.ValidationTextBox' required='true' id='${id}_textInput' "+"name='textInput' data-dojo-props='intermediateChanges:true'/>","</td></tr><tr><td>","<label for='${id}_targetSelect'>${target}</label>","</td><td>","<select id='${id}_targetSelect' name='targetSelect' data-dojo-type='dijit.form.Select'>","<option selected='selected' value='_self'>${currentWindow}</option>","<option value='_blank'>${newWindow}</option>","<option value='_top'>${topWindow}</option>","<option value='_parent'>${parentWindow}</option>","</select>","</td></tr><tr><td colspan='2'>","<button data-dojo-type='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>","<button data-dojo-type='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>","</td></tr></table>"].join(""),_initButton:function(){this.inherited(arguments);this.button.loadDropDown=_5.hitch(this,"_loadDropDown");this._connectTagEvents();},_loadDropDown:function(_d){_1(["dojo/i18n","../../TooltipDialog","../../registry","../../form/Button","../../form/Select","../../form/ValidationTextBox","dojo/i18n!../../nls/common","dojo/i18n!../nls/LinkDialog"],_5.hitch(this,function(_e,_f,_10){var _11=this;this.tag=this.command=="insertImage"?"img":"a";var _12=_5.delegate(_e.getLocalization("dijit","common",this.lang),_e.getLocalization("dijit._editor","LinkDialog",this.lang));var _13=(this.dropDown=this.button.dropDown=new _f({title:_12[this.command+"Title"],ownerDocument:this.editor.ownerDocument,dir:this.editor.dir,execute:_5.hitch(this,"setValue"),onOpen:function(){_11._onOpenDialog();_f.prototype.onOpen.apply(this,arguments);},onCancel:function(){setTimeout(_5.hitch(_11,"_onCloseDialog"),0);}}));_12.urlRegExp=this.urlRegExp;_12.id=_10.getUniqueId(this.editor.id);this._uniqueId=_12.id;this._setContent(_13.title+"<div style='border-bottom: 1px black solid;padding-bottom:2pt;margin-bottom:4pt'></div>"+_8.substitute(this.linkDialogTemplate,_12));_13.startup();this._urlInput=_10.byId(this._uniqueId+"_urlInput");this._textInput=_10.byId(this._uniqueId+"_textInput");this._setButton=_10.byId(this._uniqueId+"_setButton");this.own(_10.byId(this._uniqueId+"_cancelButton").on("click",_5.hitch(this.dropDown,"onCancel")));if(this._urlInput){this.own(this._urlInput.on("change",_5.hitch(this,"_checkAndFixInput")));}if(this._textInput){this.own(this._textInput.on("change",_5.hitch(this,"_checkAndFixInput")));}this._urlRegExp=new RegExp("^"+this.urlRegExp+"$","i");this._emailRegExp=new RegExp("^"+this.emailRegExp+"$","i");this._urlInput.isValid=_5.hitch(this,function(){var _14=this._urlInput.get("value");return this._urlRegExp.test(_14)||this._emailRegExp.test(_14);});this.own(on(_13.domNode,"keydown",_5.hitch(this,_5.hitch(this,function(e){if(e&&e.keyCode==_4.ENTER&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&!e.altKey){if(!this._setButton.get("disabled")){_13.onExecute();_13.execute(_13.get("value"));}}}))));_d();}));},_checkAndFixInput:function(){var _15=this;var url=this._urlInput.get("value");var _16=function(url){var _17=false;var _18=false;if(url&&url.length>1){url=_5.trim(url);if(url.indexOf("mailto:")!==0){if(url.indexOf("/")>0){if(url.indexOf("://")===-1){if(url.charAt(0)!=="/"&&url.indexOf("./")&&url.indexOf("../")!==0){if(_15._hostRxp.test(url)){_17=true;}}}}else{if(_15._userAtRxp.test(url)){_18=true;}}}}if(_17){_15._urlInput.set("value","http://"+url);}if(_18){_15._urlInput.set("value","mailto:"+url);}_15._setButton.set("disabled",!_15._isValid());};if(this._delayedCheck){clearTimeout(this._delayedCheck);this._delayedCheck=null;}this._delayedCheck=setTimeout(function(){_16(url);},250);},_connectTagEvents:function(){this.editor.onLoadDeferred.then(_5.hitch(this,function(){this.own(on(this.editor.editNode,"mouseup",_5.hitch(this,"_onMouseUp")));this.own(on(this.editor.editNode,"dblclick",_5.hitch(this,"_onDblClick")));}));},_isValid:function(){return this._urlInput.isValid()&&this._textInput.isValid();},_setContent:function(_19){this.dropDown.set({parserScope:"dojo",content:_19});},_checkValues:function(_1a){if(_1a&&_1a.urlInput){_1a.urlInput=_1a.urlInput.replace(/"/g,"&quot;");}return _1a;},_createlinkEnabledImpl:function(){return true;},setValue:function(_1b){this._onCloseDialog();if(_6("ie")<9){var sel=_b.getSelection(this.editor.window);var _1c=sel.getRangeAt(0);var a=_1c.endContainer;if(a.nodeType===3){a=a.parentNode;}if(a&&(a.nodeName&&a.nodeName.toLowerCase()!==this.tag)){a=this.editor.selection.getSelectedElement(this.tag);}if(a&&(a.nodeName&&a.nodeName.toLowerCase()===this.tag)){if(this.editor.queryCommandEnabled("unlink")){this.editor.selection.selectElementChildren(a);this.editor.execCommand("unlink");}}}_1b=this._checkValues(_1b);this.editor.execCommand("inserthtml",_8.substitute(this.htmlTemplate,_1b));_7("a",this.editor.document).forEach(function(a){if(!a.innerHTML&&!_3.has(a,"name")){a.parentNode.removeChild(a);}},this);},_onCloseDialog:function(){if(this.editor.focused){this.editor.focus();}},_getCurrentValues:function(a){var url,_1d,_1e;if(a&&a.tagName.toLowerCase()===this.tag){url=a.getAttribute("_djrealurl")||a.getAttribute("href");_1e=a.getAttribute("target")||"_self";_1d=a.textContent||a.innerText;this.editor.selection.selectElement(a,true);}else{_1d=this.editor.selection.getSelectedText();}return {urlInput:url||"",textInput:_1d||"",targetSelect:_1e||""};},_onOpenDialog:function(){var a,b,fc;if(_6("ie")){var sel=_b.getSelection(this.editor.window);if(sel.rangeCount){var _1f=sel.getRangeAt(0);a=_1f.endContainer;if(a.nodeType===3){a=a.parentNode;}if(a&&(a.nodeName&&a.nodeName.toLowerCase()!==this.tag)){a=this.editor.selection.getSelectedElement(this.tag);}if(!a||(a.nodeName&&a.nodeName.toLowerCase()!==this.tag)){b=this.editor.selection.getAncestorElement(this.tag);if(b&&(b.nodeName&&b.nodeName.toLowerCase()==this.tag)){a=b;this.editor.selection.selectElement(a);}else{if(_1f.startContainer===_1f.endContainer){fc=_1f.startContainer.firstChild;if(fc&&(fc.nodeName&&fc.nodeName.toLowerCase()==this.tag)){a=fc;this.editor.selection.selectElement(a);}}}}}}else{a=this.editor.selection.getAncestorElement(this.tag);}this.dropDown.reset();this._setButton.set("disabled",true);this.dropDown.set("value",this._getCurrentValues(a));},_onDblClick:function(e){if(e&&e.target){var t=e.target;var tg=t.tagName?t.tagName.toLowerCase():"";if(tg===this.tag&&_3.get(t,"href")){var _20=this.editor;this.editor.selection.selectElement(t);_20.onDisplayChanged();if(_20._updateTimer){_20._updateTimer.remove();delete _20._updateTimer;}_20.onNormalizedDisplayChanged();var _21=this.button;setTimeout(function(){_21.set("disabled",false);_21.loadAndOpenDropDown().then(function(){if(_21.dropDown.focus){_21.dropDown.focus();}});},10);}}},_onMouseUp:function(){if(_6("ff")){var a=this.editor.selection.getAncestorElement(this.tag);if(a){var _22=_b.getSelection(this.editor.window);var _23=_22.getRangeAt(0);if(_23.collapsed&&a.childNodes.length){var _24=_23.cloneRange();_24.selectNodeContents(a.childNodes[a.childNodes.length-1]);_24.setStart(a.childNodes[0],0);if(_23.compareBoundaryPoints(_24.START_TO_START,_24)!==1){_23.setStartBefore(a);}else{if(_23.compareBoundaryPoints(_24.END_TO_START,_24)!==-1){_23.setStartAfter(a);}}}}}}});var _25=_2("dijit._editor.plugins.ImgLinkDialog",[_c],{linkDialogTemplate:["<table role='presentation'><tr><td>","<label for='${id}_urlInput'>${url}</label>","</td><td>","<input dojoType='dijit.form.ValidationTextBox' regExp='${urlRegExp}' "+"required='true' id='${id}_urlInput' name='urlInput' data-dojo-props='intermediateChanges:true'/>","</td></tr><tr><td>","<label for='${id}_textInput'>${text}</label>","</td><td>","<input data-dojo-type='dijit.form.ValidationTextBox' required='false' id='${id}_textInput' "+"name='textInput' data-dojo-props='intermediateChanges:true'/>","</td></tr><tr><td>","</td><td>","</td></tr><tr><td colspan='2'>","<button data-dojo-type='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>","<button data-dojo-type='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>","</td></tr></table>"].join(""),htmlTemplate:"<img src=\"${urlInput}\" _djrealurl=\"${urlInput}\" alt=\"${textInput}\" />",tag:"img",_getCurrentValues:function(img){var url,_26;if(img&&img.tagName.toLowerCase()===this.tag){url=img.getAttribute("_djrealurl")||img.getAttribute("src");_26=img.getAttribute("alt");this.editor.selection.selectElement(img,true);}else{_26=this.editor.selection.getSelectedText();}return {urlInput:url||"",textInput:_26||""};},_isValid:function(){return this._urlInput.isValid();},_connectTagEvents:function(){this.inherited(arguments);this.editor.onLoadDeferred.then(_5.hitch(this,function(){this.own(on(this.editor.editNode,"mousedown",_5.hitch(this,"_selectTag")));}));},_selectTag:function(e){if(e&&e.target){var t=e.target;var tg=t.tagName?t.tagName.toLowerCase():"";if(tg===this.tag){this.editor.selection.selectElement(t);}}},_checkValues:function(_27){if(_27&&_27.urlInput){_27.urlInput=_27.urlInput.replace(/"/g,"&quot;");}if(_27&&_27.textInput){_27.textInput=_27.textInput.replace(/"/g,"&quot;");}return _27;},_onDblClick:function(e){if(e&&e.target){var t=e.target;var tg=t.tagName?t.tagName.toLowerCase():"";if(tg===this.tag&&_3.get(t,"src")){var _28=this.editor;this.editor.selection.selectElement(t);_28.onDisplayChanged();if(_28._updateTimer){_28._updateTimer.remove();delete _28._updateTimer;}_28.onNormalizedDisplayChanged();var _29=this.button;setTimeout(function(){_29.set("disabled",false);_29.loadAndOpenDropDown().then(function(){if(_29.dropDown.focus){_29.dropDown.focus();}});},10);}}}});_9.registry["createLink"]=function(){return new _c({command:"createLink"});};_9.registry["insertImage"]=function(){return new _25({command:"insertImage"});};_c.ImgLinkDialog=_25;return _c;}); \ No newline at end of file
+define("dijit/_editor/plugins/LinkDialog",["require","dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/query","dojo/string","../_Plugin","../../form/DropDownButton","../range"],function(_1,_2,_3,_4,_5,_6,on,_7,_8,_9,_a,_b,_c){var _d=_3("dijit._editor.plugins.LinkDialog",_a,{allowUnsafeHtml:false,linkFilter:[[/</g,"&lt;"]],buttonClass:_b,useDefaultCommand:false,urlRegExp:"((https?|ftps?|file)\\://|./|../|/|)(/[a-zA-Z]{1,1}:/|)(((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)*(?:[a-zA-Z](?:[-\\da-zA-Z]{0,80}[\\da-zA-Z])?)\\.?)|(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])|(0[xX]0*[\\da-fA-F]?[\\da-fA-F]\\.){3}0[xX]0*[\\da-fA-F]?[\\da-fA-F]|(0+[0-3][0-7][0-7]\\.){3}0+[0-3][0-7][0-7]|(0|[1-9]\\d{0,8}|[1-3]\\d{9}|4[01]\\d{8}|42[0-8]\\d{7}|429[0-3]\\d{6}|4294[0-8]\\d{5}|42949[0-5]\\d{4}|429496[0-6]\\d{3}|4294967[01]\\d{2}|42949672[0-8]\\d|429496729[0-5])|0[xX]0*[\\da-fA-F]{1,8}|([\\da-fA-F]{1,4}\\:){7}[\\da-fA-F]{1,4}|([\\da-fA-F]{1,4}\\:){6}((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])))(\\:\\d+)?(/(?:[^?#\\s/]+/)*(?:[^?#\\s/]{0,}(?:\\?[^?#\\s/]*)?(?:#.*)?)?)?",emailRegExp:"<?(mailto\\:)([!#-'*+\\-\\/-9=?A-Z^-~]+[.])*[!#-'*+\\-\\/-9=?A-Z^-~]+"+"@"+"((?:(?:[\\da-zA-Z](?:[-\\da-zA-Z]{0,61}[\\da-zA-Z])?)\\.)+(?:[a-zA-Z](?:[-\\da-zA-Z]{0,6}[\\da-zA-Z])?)\\.?)|localhost|^[^-][a-zA-Z0-9_-]*>?",htmlTemplate:"<a href=\"${urlInput}\" _djrealurl=\"${urlInput}\""+" target=\"${targetSelect}\""+">${textInput}</a>",tag:"a",_hostRxp:/^((([^\[:]+):)?([^@]+)@)?(\[([^\]]+)\]|([^\[:]*))(:([0-9]+))?$/,_userAtRxp:/^([!#-'*+\-\/-9=?A-Z^-~]+[.])*[!#-'*+\-\/-9=?A-Z^-~]+@/i,linkDialogTemplate:["<table role='presentation'><tr><td>","<label for='${id}_urlInput'>${url}</label>","</td><td>","<input data-dojo-type='dijit.form.ValidationTextBox' required='true' "+"id='${id}_urlInput' name='urlInput' data-dojo-props='intermediateChanges:true'/>","</td></tr><tr><td>","<label for='${id}_textInput'>${text}</label>","</td><td>","<input data-dojo-type='dijit.form.ValidationTextBox' required='true' id='${id}_textInput' "+"name='textInput' data-dojo-props='intermediateChanges:true'/>","</td></tr><tr><td>","<label for='${id}_targetSelect'>${target}</label>","</td><td>","<select id='${id}_targetSelect' name='targetSelect' data-dojo-type='dijit.form.Select'>","<option selected='selected' value='_self'>${currentWindow}</option>","<option value='_blank'>${newWindow}</option>","<option value='_top'>${topWindow}</option>","<option value='_parent'>${parentWindow}</option>","</select>","</td></tr><tr><td colspan='2'>","<button data-dojo-type='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>","<button data-dojo-type='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>","</td></tr></table>"].join(""),_initButton:function(){this.inherited(arguments);this.button.loadDropDown=_6.hitch(this,"_loadDropDown");this._connectTagEvents();},_loadDropDown:function(_e){_1(["dojo/i18n","../../TooltipDialog","../../registry","../../form/Button","../../form/Select","../../form/ValidationTextBox","dojo/i18n!../../nls/common","dojo/i18n!../nls/LinkDialog"],_6.hitch(this,function(_f,_10,_11){var _12=this;this.tag=this.command=="insertImage"?"img":"a";var _13=_6.delegate(_f.getLocalization("dijit","common",this.lang),_f.getLocalization("dijit._editor","LinkDialog",this.lang));var _14=(this.dropDown=this.button.dropDown=new _10({title:_13[this.command+"Title"],ownerDocument:this.editor.ownerDocument,dir:this.editor.dir,execute:_6.hitch(this,"setValue"),onOpen:function(){_12._onOpenDialog();_10.prototype.onOpen.apply(this,arguments);},onCancel:function(){setTimeout(_6.hitch(_12,"_onCloseDialog"),0);}}));_13.urlRegExp=this.urlRegExp;_13.id=_11.getUniqueId(this.editor.id);this._uniqueId=_13.id;this._setContent(_14.title+"<div style='border-bottom: 1px black solid;padding-bottom:2pt;margin-bottom:4pt'></div>"+_9.substitute(this.linkDialogTemplate,_13));_14.startup();this._urlInput=_11.byId(this._uniqueId+"_urlInput");this._textInput=_11.byId(this._uniqueId+"_textInput");this._setButton=_11.byId(this._uniqueId+"_setButton");this.own(_11.byId(this._uniqueId+"_cancelButton").on("click",_6.hitch(this.dropDown,"onCancel")));if(this._urlInput){this.own(this._urlInput.on("change",_6.hitch(this,"_checkAndFixInput")));}if(this._textInput){this.own(this._textInput.on("change",_6.hitch(this,"_checkAndFixInput")));}this._urlRegExp=new RegExp("^"+this.urlRegExp+"$","i");this._emailRegExp=new RegExp("^"+this.emailRegExp+"$","i");this._urlInput.isValid=_6.hitch(this,function(){var _15=this._urlInput.get("value");return this._urlRegExp.test(_15)||this._emailRegExp.test(_15);});this.own(on(_14.domNode,"keydown",_6.hitch(this,_6.hitch(this,function(e){if(e&&e.keyCode==_5.ENTER&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&!e.altKey){if(!this._setButton.get("disabled")){_14.onExecute();_14.execute(_14.get("value"));}}}))));_e();}));},_checkAndFixInput:function(){var _16=this;var url=this._urlInput.get("value");var _17=function(url){var _18=false;var _19=false;if(url&&url.length>1){url=_6.trim(url);if(url.indexOf("mailto:")!==0){if(url.indexOf("/")>0){if(url.indexOf("://")===-1){if(url.charAt(0)!=="/"&&url.indexOf("./")&&url.indexOf("../")!==0){if(_16._hostRxp.test(url)){_18=true;}}}}else{if(_16._userAtRxp.test(url)){_19=true;}}}}if(_18){_16._urlInput.set("value","http://"+url);}if(_19){_16._urlInput.set("value","mailto:"+url);}_16._setButton.set("disabled",!_16._isValid());};if(this._delayedCheck){clearTimeout(this._delayedCheck);this._delayedCheck=null;}this._delayedCheck=setTimeout(function(){_17(url);},250);},_connectTagEvents:function(){this.editor.onLoadDeferred.then(_6.hitch(this,function(){this.own(on(this.editor.editNode,"mouseup",_6.hitch(this,"_onMouseUp")));this.own(on(this.editor.editNode,"dblclick",_6.hitch(this,"_onDblClick")));}));},_isValid:function(){return this._urlInput.isValid()&&this._textInput.isValid();},_setContent:function(_1a){this.dropDown.set({parserScope:"dojo",content:_1a});},_checkValues:function(_1b){if(_1b&&_1b.urlInput){_1b.urlInput=_1b.urlInput.replace(/"/g,"&quot;");}if(!this.allowUnsafeHtml&&_1b&&_1b.textInput){if(typeof this.linkFilter==="function"){_1b.textInput=this.linkFilter(_1b.textInput);}else{_2.forEach(this.linkFilter,function(_1c){_1b.textInput=_1b.textInput.replace(_1c[0],_1c[1]);});}}return _1b;},_createlinkEnabledImpl:function(){return true;},setValue:function(_1d){this._onCloseDialog();if(_7("ie")<9){var sel=_c.getSelection(this.editor.window);var _1e=sel.getRangeAt(0);var a=_1e.endContainer;if(a.nodeType===3){a=a.parentNode;}if(a&&(a.nodeName&&a.nodeName.toLowerCase()!==this.tag)){a=this.editor.selection.getSelectedElement(this.tag);}if(a&&(a.nodeName&&a.nodeName.toLowerCase()===this.tag)){if(this.editor.queryCommandEnabled("unlink")){this.editor.selection.selectElementChildren(a);this.editor.execCommand("unlink");}}}_1d=this._checkValues(_1d);this.editor.execCommand("inserthtml",_9.substitute(this.htmlTemplate,_1d));_8("a",this.editor.document).forEach(function(a){if(!a.innerHTML&&!_4.has(a,"name")){a.parentNode.removeChild(a);}},this);},_onCloseDialog:function(){if(this.editor.focused){this.editor.focus();}},_getCurrentValues:function(a){var url,_1f,_20;if(a&&a.tagName.toLowerCase()===this.tag){url=a.getAttribute("_djrealurl")||a.getAttribute("href");_20=a.getAttribute("target")||"_self";_1f=a.textContent||a.innerText;this.editor.selection.selectElement(a,true);}else{_1f=this.editor.selection.getSelectedText();}return {urlInput:url||"",textInput:_1f||"",targetSelect:_20||""};},_onOpenDialog:function(){var a,b,fc;if(_7("ie")){var sel=_c.getSelection(this.editor.window);if(sel.rangeCount){var _21=sel.getRangeAt(0);a=_21.endContainer;if(a.nodeType===3){a=a.parentNode;}if(a&&(a.nodeName&&a.nodeName.toLowerCase()!==this.tag)){a=this.editor.selection.getSelectedElement(this.tag);}if(!a||(a.nodeName&&a.nodeName.toLowerCase()!==this.tag)){b=this.editor.selection.getAncestorElement(this.tag);if(b&&(b.nodeName&&b.nodeName.toLowerCase()==this.tag)){a=b;this.editor.selection.selectElement(a);}else{if(_21.startContainer===_21.endContainer){fc=_21.startContainer.firstChild;if(fc&&(fc.nodeName&&fc.nodeName.toLowerCase()==this.tag)){a=fc;this.editor.selection.selectElement(a);}}}}}}else{a=this.editor.selection.getAncestorElement(this.tag);}this.dropDown.reset();this._setButton.set("disabled",true);this.dropDown.set("value",this._getCurrentValues(a));},_onDblClick:function(e){if(e&&e.target){var t=e.target;var tg=t.tagName?t.tagName.toLowerCase():"";if(tg===this.tag&&_4.get(t,"href")){var _22=this.editor;this.editor.selection.selectElement(t);_22.onDisplayChanged();if(_22._updateTimer){_22._updateTimer.remove();delete _22._updateTimer;}_22.onNormalizedDisplayChanged();var _23=this.button;setTimeout(function(){_23.set("disabled",false);_23.loadAndOpenDropDown().then(function(){if(_23.dropDown.focus){_23.dropDown.focus();}});},10);}}},_onMouseUp:function(){if(_7("ff")){var a=this.editor.selection.getAncestorElement(this.tag);if(a){var _24=_c.getSelection(this.editor.window);var _25=_24.getRangeAt(0);if(_25.collapsed&&a.childNodes.length){var _26=_25.cloneRange();_26.selectNodeContents(a.childNodes[a.childNodes.length-1]);_26.setStart(a.childNodes[0],0);if(_25.compareBoundaryPoints(_26.START_TO_START,_26)!==1){_25.setStartBefore(a);}else{if(_25.compareBoundaryPoints(_26.END_TO_START,_26)!==-1){_25.setStartAfter(a);}}}}}}});var _27=_3("dijit._editor.plugins.ImgLinkDialog",[_d],{linkDialogTemplate:["<table role='presentation'><tr><td>","<label for='${id}_urlInput'>${url}</label>","</td><td>","<input dojoType='dijit.form.ValidationTextBox' regExp='${urlRegExp}' "+"required='true' id='${id}_urlInput' name='urlInput' data-dojo-props='intermediateChanges:true'/>","</td></tr><tr><td>","<label for='${id}_textInput'>${text}</label>","</td><td>","<input data-dojo-type='dijit.form.ValidationTextBox' required='false' id='${id}_textInput' "+"name='textInput' data-dojo-props='intermediateChanges:true'/>","</td></tr><tr><td>","</td><td>","</td></tr><tr><td colspan='2'>","<button data-dojo-type='dijit.form.Button' type='submit' id='${id}_setButton'>${set}</button>","<button data-dojo-type='dijit.form.Button' type='button' id='${id}_cancelButton'>${buttonCancel}</button>","</td></tr></table>"].join(""),htmlTemplate:"<img src=\"${urlInput}\" _djrealurl=\"${urlInput}\" alt=\"${textInput}\" />",tag:"img",_getCurrentValues:function(img){var url,_28;if(img&&img.tagName.toLowerCase()===this.tag){url=img.getAttribute("_djrealurl")||img.getAttribute("src");_28=img.getAttribute("alt");this.editor.selection.selectElement(img,true);}else{_28=this.editor.selection.getSelectedText();}return {urlInput:url||"",textInput:_28||""};},_isValid:function(){return this._urlInput.isValid();},_connectTagEvents:function(){this.inherited(arguments);this.editor.onLoadDeferred.then(_6.hitch(this,function(){this.own(on(this.editor.editNode,"mousedown",_6.hitch(this,"_selectTag")));}));},_selectTag:function(e){if(e&&e.target){var t=e.target;var tg=t.tagName?t.tagName.toLowerCase():"";if(tg===this.tag){this.editor.selection.selectElement(t);}}},_checkValues:function(_29){if(_29&&_29.urlInput){_29.urlInput=_29.urlInput.replace(/"/g,"&quot;");}if(_29&&_29.textInput){_29.textInput=_29.textInput.replace(/"/g,"&quot;");}return _29;},_onDblClick:function(e){if(e&&e.target){var t=e.target;var tg=t.tagName?t.tagName.toLowerCase():"";if(tg===this.tag&&_4.get(t,"src")){var _2a=this.editor;this.editor.selection.selectElement(t);_2a.onDisplayChanged();if(_2a._updateTimer){_2a._updateTimer.remove();delete _2a._updateTimer;}_2a.onNormalizedDisplayChanged();var _2b=this.button;setTimeout(function(){_2b.set("disabled",false);_2b.loadAndOpenDropDown().then(function(){if(_2b.dropDown.focus){_2b.dropDown.focus();}});},10);}}}});_a.registry["createLink"]=function(_2c){var _2d={command:"createLink",allowUnsafeHtml:("allowUnsafeHtml" in _2c)?_2c.allowUnsafeHtml:false};if("linkFilter" in _2c){_2d.linkFilter=_2c.linkFilter;}return new _d(_2d);};_a.registry["insertImage"]=function(){return new _27({command:"insertImage"});};_d.ImgLinkDialog=_27;return _d;}); \ No newline at end of file
diff --git a/lib/dijit/_editor/plugins/ViewSource.js b/lib/dijit/_editor/plugins/ViewSource.js
index 4d3f98e7e..8f4e57275 100644
--- a/lib/dijit/_editor/plugins/ViewSource.js
+++ b/lib/dijit/_editor/plugins/ViewSource.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/_editor/plugins/ViewSource",["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/dom-attr","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/window","../../focus","../_Plugin","../../form/ToggleButton","../..","../../registry","dojo/i18n!../nls/commands"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,on,_b,_c,_d,_e,_f,_10,_11){var _12=_3("dijit._editor.plugins.ViewSource",_e,{stripScripts:true,stripComments:true,stripIFrames:true,stripEventHandlers:true,readOnly:false,_fsPlugin:null,toggle:function(){if(_b("webkit")){this._vsFocused=true;}this.button.set("checked",!this.button.get("checked"));},_initButton:function(){var _13=_8.getLocalization("dijit._editor","commands"),_14=this.editor;this.button=new _f({label:_13["viewSource"],ownerDocument:_14.ownerDocument,dir:_14.dir,lang:_14.lang,showLabel:false,iconClass:this.iconClassPrefix+" "+this.iconClassPrefix+"ViewSource",tabIndex:"-1",onChange:_a.hitch(this,"_showSource")});this.button.set("readOnly",false);},setEditor:function(_15){this.editor=_15;this._initButton();this.editor.addKeyHandler(_9.F12,true,true,_a.hitch(this,function(e){this.button.focus();this.toggle();e.stopPropagation();e.preventDefault();setTimeout(_a.hitch(this,function(){if(this.editor.focused){this.editor.focus();}}),100);}));},_showSource:function(_16){var ed=this.editor;var _17=ed._plugins;var _18;this._sourceShown=_16;var _19=this;try{if(!this.sourceArea){this._createSourceView();}if(_16){ed._sourceQueryCommandEnabled=ed.queryCommandEnabled;ed.queryCommandEnabled=function(cmd){return cmd.toLowerCase()==="viewsource";};this.editor.onDisplayChanged();_18=ed.get("value");_18=this._filter(_18);ed.set("value",_18);_1.forEach(_17,function(p){if(p&&!(p instanceof _12)&&p.isInstanceOf(_e)){p.set("disabled",true);}});if(this._fsPlugin){this._fsPlugin._getAltViewNode=function(){return _19.sourceArea;};}this.sourceArea.value=_18;this.sourceArea.style.height=ed.iframe.style.height;this.sourceArea.style.width=ed.iframe.style.width;ed.iframe.parentNode.style.position="relative";_7.set(ed.iframe,{position:"absolute",top:0,visibility:"hidden"});_7.set(this.sourceArea,{display:"block"});var _1a=function(){var vp=_c.getBox(ed.ownerDocument);if("_prevW" in this&&"_prevH" in this){if(vp.w===this._prevW&&vp.h===this._prevH){return;}else{this._prevW=vp.w;this._prevH=vp.h;}}else{this._prevW=vp.w;this._prevH=vp.h;}if(this._resizer){clearTimeout(this._resizer);delete this._resizer;}this._resizer=setTimeout(_a.hitch(this,function(){delete this._resizer;this._resize();}),10);};this._resizeHandle=on(window,"resize",_a.hitch(this,_1a));setTimeout(_a.hitch(this,this._resize),100);this.editor.onNormalizedDisplayChanged();this.editor.__oldGetValue=this.editor.getValue;this.editor.getValue=_a.hitch(this,function(){var txt=this.sourceArea.value;txt=this._filter(txt);return txt;});this._setListener=_2.after(this.editor,"setValue",_a.hitch(this,function(_1b){_1b=_1b||"";_1b=this._filter(_1b);this.sourceArea.value=_1b;}),true);}else{if(!ed._sourceQueryCommandEnabled){return;}this._setListener.remove();delete this._setListener;this._resizeHandle.remove();delete this._resizeHandle;if(this.editor.__oldGetValue){this.editor.getValue=this.editor.__oldGetValue;delete this.editor.__oldGetValue;}ed.queryCommandEnabled=ed._sourceQueryCommandEnabled;if(!this._readOnly){_18=this.sourceArea.value;_18=this._filter(_18);ed.beginEditing();ed.set("value",_18);ed.endEditing();}_1.forEach(_17,function(p){if(p&&p.isInstanceOf(_e)){p.set("disabled",false);}});_7.set(this.sourceArea,"display","none");_7.set(ed.iframe,{position:"relative",visibility:"visible"});delete ed._sourceQueryCommandEnabled;this.editor.onDisplayChanged();}setTimeout(_a.hitch(this,function(){var _1c=ed.domNode.parentNode;if(_1c){var _1d=_11.getEnclosingWidget(_1c);if(_1d&&_1d.resize){_1d.resize();}}ed.resize();}),300);}catch(e){}},updateState:function(){this.button.set("disabled",this.get("disabled"));},_resize:function(){var ed=this.editor;var tbH=ed.getHeaderHeight();var fH=ed.getFooterHeight();var eb=_6.position(ed.domNode);var _1e=_6.getPadBorderExtents(ed.iframe.parentNode);var _1f=_6.getMarginExtents(ed.iframe.parentNode);var _20=_6.getPadBorderExtents(ed.domNode);var edb={w:eb.w-_20.w,h:eb.h-(tbH+_20.h+fH)};if(this._fsPlugin&&this._fsPlugin.isFullscreen){var vp=_c.getBox(ed.ownerDocument);edb.w=(vp.w-_20.w);edb.h=(vp.h-(tbH+_20.h+fH));}_6.setMarginBox(this.sourceArea,{w:Math.round(edb.w-(_1e.w+_1f.w)),h:Math.round(edb.h-(_1e.h+_1f.h))});},_createSourceView:function(){var ed=this.editor;var _21=ed._plugins;this.sourceArea=_5.create("textarea");if(this.readOnly){_4.set(this.sourceArea,"readOnly",true);this._readOnly=true;}_7.set(this.sourceArea,{padding:"0px",margin:"0px",borderWidth:"0px",borderStyle:"none"});_4.set(this.sourceArea,"aria-label",this.editor.id);_5.place(this.sourceArea,ed.iframe,"before");if(_b("ie")&&ed.iframe.parentNode.lastChild!==ed.iframe){_7.set(ed.iframe.parentNode.lastChild,{width:"0px",height:"0px",padding:"0px",margin:"0px",borderWidth:"0px",borderStyle:"none"});}ed._viewsource_oldFocus=ed.focus;var _22=this;ed.focus=function(){if(_22._sourceShown){_22.setSourceAreaCaret();}else{try{if(this._vsFocused){delete this._vsFocused;_d.focus(ed.editNode);}else{ed._viewsource_oldFocus();}}catch(e){}}};var i,p;for(i=0;i<_21.length;i++){p=_21[i];if(p&&(p.declaredClass==="dijit._editor.plugins.FullScreen"||p.declaredClass===(_10._scopeName+"._editor.plugins.FullScreen"))){this._fsPlugin=p;break;}}if(this._fsPlugin){this._fsPlugin._viewsource_getAltViewNode=this._fsPlugin._getAltViewNode;this._fsPlugin._getAltViewNode=function(){return _22._sourceShown?_22.sourceArea:this._viewsource_getAltViewNode();};}this.own(on(this.sourceArea,"keydown",_a.hitch(this,function(e){if(this._sourceShown&&e.keyCode==_9.F12&&e.ctrlKey&&e.shiftKey){this.button.focus();this.button.set("checked",false);setTimeout(_a.hitch(this,function(){ed.focus();}),100);e.stopPropagation();e.preventDefault();}})));},_stripScripts:function(_23){if(_23){_23=_23.replace(/<\s*script[^>]*>((.|\s)*?)<\\?\/\s*script\s*>/ig,"");_23=_23.replace(/<\s*script\b([^<>]|\s)*>?/ig,"");_23=_23.replace(/<[^>]*=(\s|)*[("|')]javascript:[^$1][(\s|.)]*[$1][^>]*>/ig,"");}return _23;},_stripComments:function(_24){if(_24){_24=_24.replace(/<!--(.|\s){1,}?-->/g,"");}return _24;},_stripIFrames:function(_25){if(_25){_25=_25.replace(/<\s*iframe[^>]*>((.|\s)*?)<\\?\/\s*iframe\s*>/ig,"");}return _25;},_stripEventHandlers:function(_26){if(_26){var _27=_26.match(/<[a-z]+?\b(.*?on.*?(['"]).*?\2.*?)+>/gim);if(_27){for(var i=0,l=_27.length;i<l;i++){var _28=_27[i];var _29=_28.replace(/\s+on[a-z]*\s*=\s*(['"])(.*?)\1/igm,"");_26=_26.replace(_28,_29);}}}return _26;},_filter:function(_2a){if(_2a){if(this.stripScripts){_2a=this._stripScripts(_2a);}if(this.stripComments){_2a=this._stripComments(_2a);}if(this.stripIFrames){_2a=this._stripIFrames(_2a);}if(this.stripEventHandlers){_2a=this._stripEventHandlers(_2a);}}return _2a;},setSourceAreaCaret:function(){var _2b=this.sourceArea;_d.focus(_2b);if(this._sourceShown&&!this.readOnly){if(_2b.setSelectionRange){_2b.setSelectionRange(0,0);}else{if(this.sourceArea.createTextRange){var _2c=_2b.createTextRange();_2c.collapse(true);_2c.moveStart("character",-99999);_2c.moveStart("character",0);_2c.moveEnd("character",0);_2c.select();}}}},destroy:function(){if(this._resizer){clearTimeout(this._resizer);delete this._resizer;}if(this._resizeHandle){this._resizeHandle.remove();delete this._resizeHandle;}if(this._setListener){this._setListener.remove();delete this._setListener;}this.inherited(arguments);}});_e.registry["viewSource"]=_e.registry["viewsource"]=function(_2d){return new _12({readOnly:("readOnly" in _2d)?_2d.readOnly:false,stripComments:("stripComments" in _2d)?_2d.stripComments:true,stripScripts:("stripScripts" in _2d)?_2d.stripScripts:true,stripIFrames:("stripIFrames" in _2d)?_2d.stripIFrames:true,stripEventHandlers:("stripEventHandlers" in _2d)?_2d.stripEventHandlers:true});};return _12;}); \ No newline at end of file
+define("dijit/_editor/plugins/ViewSource",["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/dom-attr","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/window","../../focus","../_Plugin","../../form/ToggleButton","../..","../../registry","dojo/i18n!../nls/commands"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,on,_b,_c,_d,_e,_f,_10,_11){var _12=_3("dijit._editor.plugins.ViewSource",_e,{stripScripts:true,stripComments:true,stripIFrames:true,stripEventHandlers:true,readOnly:false,_fsPlugin:null,toggle:function(){if(_b("webkit")){this._vsFocused=true;}this.button.set("checked",!this.button.get("checked"));},_initButton:function(){var _13=_8.getLocalization("dijit._editor","commands"),_14=this.editor;this.button=new _f({label:_13["viewSource"],ownerDocument:_14.ownerDocument,dir:_14.dir,lang:_14.lang,showLabel:false,iconClass:this.iconClassPrefix+" "+this.iconClassPrefix+"ViewSource",tabIndex:"-1",onChange:_a.hitch(this,"_showSource")});this.button.set("readOnly",false);},setEditor:function(_15){this.editor=_15;this._initButton();this.removeValueFilterHandles();this._setValueFilterHandle=_2.before(this.editor,"setValue",_a.hitch(this,function(_16){return [this._filter(_16)];}));this._getValueFilterHandle=_2.after(this.editor,"getValue",_a.hitch(this,function(_17){return this._filter(_17);}));this.editor.addKeyHandler(_9.F12,true,true,_a.hitch(this,function(e){this.button.focus();this.toggle();e.stopPropagation();e.preventDefault();setTimeout(_a.hitch(this,function(){if(this.editor.focused){this.editor.focus();}}),100);}));},_showSource:function(_18){var ed=this.editor;var _19=ed._plugins;var _1a;this._sourceShown=_18;var _1b=this;try{if(!this.sourceArea){this._createSourceView();}if(_18){ed._sourceQueryCommandEnabled=ed.queryCommandEnabled;ed.queryCommandEnabled=function(cmd){return cmd.toLowerCase()==="viewsource";};this.editor.onDisplayChanged();_1.forEach(_19,function(p){if(p&&!(p instanceof _12)&&p.isInstanceOf(_e)){p.set("disabled",true);}});if(this._fsPlugin){this._fsPlugin._getAltViewNode=function(){return _1b.sourceArea;};}this.sourceArea.value=ed.get("value");this.sourceArea.style.height=ed.iframe.style.height;this.sourceArea.style.width=ed.iframe.style.width;ed.iframe.parentNode.style.position="relative";_7.set(ed.iframe,{position:"absolute",top:0,visibility:"hidden"});_7.set(this.sourceArea,{display:"block"});var _1c=function(){var vp=_c.getBox(ed.ownerDocument);if("_prevW" in this&&"_prevH" in this){if(vp.w===this._prevW&&vp.h===this._prevH){return;}else{this._prevW=vp.w;this._prevH=vp.h;}}else{this._prevW=vp.w;this._prevH=vp.h;}if(this._resizer){clearTimeout(this._resizer);delete this._resizer;}this._resizer=setTimeout(_a.hitch(this,function(){delete this._resizer;this._resize();}),10);};this._resizeHandle=on(window,"resize",_a.hitch(this,_1c));setTimeout(_a.hitch(this,this._resize),100);this.editor.onNormalizedDisplayChanged();this.editor.__oldGetValue=this.editor.getValue;this.editor.getValue=_a.hitch(this,function(){var txt=this.sourceArea.value;txt=this._filter(txt);return txt;});this._setListener=_2.after(this.editor,"setValue",_a.hitch(this,function(_1d){_1d=_1d||"";this.sourceArea.value=_1d;}),true);}else{if(!ed._sourceQueryCommandEnabled){return;}this._setListener.remove();delete this._setListener;this._resizeHandle.remove();delete this._resizeHandle;if(this.editor.__oldGetValue){this.editor.getValue=this.editor.__oldGetValue;delete this.editor.__oldGetValue;}ed.queryCommandEnabled=ed._sourceQueryCommandEnabled;if(!this._readOnly){_1a=this.sourceArea.value;ed.beginEditing();ed.set("value",_1a);ed.endEditing();}_1.forEach(_19,function(p){if(p&&p.isInstanceOf(_e)){p.set("disabled",false);}});_7.set(this.sourceArea,"display","none");_7.set(ed.iframe,{position:"relative",visibility:"visible"});delete ed._sourceQueryCommandEnabled;this.editor.onDisplayChanged();}setTimeout(_a.hitch(this,function(){var _1e=ed.domNode.parentNode;if(_1e){var _1f=_11.getEnclosingWidget(_1e);if(_1f&&_1f.resize){_1f.resize();}}ed.resize();}),300);}catch(e){}},updateState:function(){this.button.set("disabled",this.get("disabled"));},_resize:function(){var ed=this.editor;var tbH=ed.getHeaderHeight();var fH=ed.getFooterHeight();var eb=_6.position(ed.domNode);var _20=_6.getPadBorderExtents(ed.iframe.parentNode);var _21=_6.getMarginExtents(ed.iframe.parentNode);var _22=_6.getPadBorderExtents(ed.domNode);var edb={w:eb.w-_22.w,h:eb.h-(tbH+_22.h+fH)};if(this._fsPlugin&&this._fsPlugin.isFullscreen){var vp=_c.getBox(ed.ownerDocument);edb.w=(vp.w-_22.w);edb.h=(vp.h-(tbH+_22.h+fH));}_6.setMarginBox(this.sourceArea,{w:Math.round(edb.w-(_20.w+_21.w)),h:Math.round(edb.h-(_20.h+_21.h))});},_createSourceView:function(){var ed=this.editor;var _23=ed._plugins;this.sourceArea=_5.create("textarea");if(this.readOnly){_4.set(this.sourceArea,"readOnly",true);this._readOnly=true;}_7.set(this.sourceArea,{padding:"0px",margin:"0px",borderWidth:"0px",borderStyle:"none"});_4.set(this.sourceArea,"aria-label",this.editor.id);_5.place(this.sourceArea,ed.iframe,"before");if(_b("ie")&&ed.iframe.parentNode.lastChild!==ed.iframe){_7.set(ed.iframe.parentNode.lastChild,{width:"0px",height:"0px",padding:"0px",margin:"0px",borderWidth:"0px",borderStyle:"none"});}ed._viewsource_oldFocus=ed.focus;var _24=this;ed.focus=function(){if(_24._sourceShown){_24.setSourceAreaCaret();}else{try{if(this._vsFocused){delete this._vsFocused;_d.focus(ed.editNode);}else{ed._viewsource_oldFocus();}}catch(e){}}};var i,p;for(i=0;i<_23.length;i++){p=_23[i];if(p&&(p.declaredClass==="dijit._editor.plugins.FullScreen"||p.declaredClass===(_10._scopeName+"._editor.plugins.FullScreen"))){this._fsPlugin=p;break;}}if(this._fsPlugin){this._fsPlugin._viewsource_getAltViewNode=this._fsPlugin._getAltViewNode;this._fsPlugin._getAltViewNode=function(){return _24._sourceShown?_24.sourceArea:this._viewsource_getAltViewNode();};}this.own(on(this.sourceArea,"keydown",_a.hitch(this,function(e){if(this._sourceShown&&e.keyCode==_9.F12&&e.ctrlKey&&e.shiftKey){this.button.focus();this.button.set("checked",false);setTimeout(_a.hitch(this,function(){ed.focus();}),100);e.stopPropagation();e.preventDefault();}})));},_stripScripts:function(_25){if(_25){_25=_25.replace(/<\s*script[^>]*>((.|\s)*?)<\\?\/\s*script\s*>/ig,"");_25=_25.replace(/<\s*script\b([^<>]|\s)*>?/ig,"");_25=_25.replace(/<[^>]*=(\s|)*[("|')]javascript:[^$1][(\s|.)]*[$1][^>]*>/ig,"");}return _25;},_stripComments:function(_26){if(_26){_26=_26.replace(/<!--(.|\s){1,}?-->/g,"");}return _26;},_stripIFrames:function(_27){if(_27){_27=_27.replace(/<\s*iframe[^>]*>((.|\s)*?)<\\?\/\s*iframe\s*>/ig,"");}return _27;},_stripEventHandlers:function(_28){if(_28){var _29=_28.match(/<[a-z]+?\b(.*?on.*?(['"]).*?\2.*?)+>/gim);if(_29){for(var i=0,l=_29.length;i<l;i++){var _2a=_29[i];var _2b=_2a.replace(/\s+on[a-z]*\s*=\s*(['"])(.*?)\1/igm,"");_28=_28.replace(_2a,_2b);}}}return _28;},_filter:function(_2c){if(_2c){if(this.stripScripts){_2c=this._stripScripts(_2c);}if(this.stripComments){_2c=this._stripComments(_2c);}if(this.stripIFrames){_2c=this._stripIFrames(_2c);}if(this.stripEventHandlers){_2c=this._stripEventHandlers(_2c);}}return _2c;},removeValueFilterHandles:function(){if(this._setValueFilterHandle){this._setValueFilterHandle.remove();delete this._setValueFilterHandle;}if(this._getValueFilterHandle){this._getValueFilterHandle.remove();delete this._getValueFilterHandle;}},setSourceAreaCaret:function(){var _2d=this.sourceArea;_d.focus(_2d);if(this._sourceShown&&!this.readOnly){if(_2d.setSelectionRange){_2d.setSelectionRange(0,0);}else{if(this.sourceArea.createTextRange){var _2e=_2d.createTextRange();_2e.collapse(true);_2e.moveStart("character",-99999);_2e.moveStart("character",0);_2e.moveEnd("character",0);_2e.select();}}}},destroy:function(){if(this._resizer){clearTimeout(this._resizer);delete this._resizer;}if(this._resizeHandle){this._resizeHandle.remove();delete this._resizeHandle;}if(this._setListener){this._setListener.remove();delete this._setListener;}this.removeValueFilterHandles();this.inherited(arguments);}});_e.registry["viewSource"]=_e.registry["viewsource"]=function(_2f){return new _12({readOnly:("readOnly" in _2f)?_2f.readOnly:false,stripComments:("stripComments" in _2f)?_2f.stripComments:true,stripScripts:("stripScripts" in _2f)?_2f.stripScripts:true,stripIFrames:("stripIFrames" in _2f)?_2f.stripIFrames:true,stripEventHandlers:("stripEventHandlers" in _2f)?_2f.stripEventHandlers:true});};return _12;}); \ No newline at end of file
diff --git a/lib/dijit/bower.json b/lib/dijit/bower.json
index 6786a36cb..6c72245ec 100644
--- a/lib/dijit/bower.json
+++ b/lib/dijit/bower.json
@@ -15,7 +15,7 @@
"url": "https://github.com/dojo/dijit.git"
},
"dependencies": {
- "dojo": "1.14.2"
+ "dojo": "1.16.4"
},
"devDependencies": {
}
diff --git a/lib/dijit/form/_SearchMixin.js b/lib/dijit/form/_SearchMixin.js
index c8fc0269e..929836a7b 100644
--- a/lib/dijit/form/_SearchMixin.js
+++ b/lib/dijit/form/_SearchMixin.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/form/_SearchMixin",["dojo/_base/declare","dojo/keys","dojo/_base/lang","dojo/query","dojo/string","dojo/when","../registry"],function(_1,_2,_3,_4,_5,_6,_7){return _1("dijit.form._SearchMixin",null,{pageSize:Infinity,store:null,fetchProperties:{},query:{},list:"",_setListAttr:function(_8){this._set("list",_8);},searchDelay:200,searchAttr:"name",queryExpr:"${0}*",ignoreCase:true,_patternToRegExp:function(_9){return new RegExp("^"+_9.replace(/(\\.)|(\*)|(\?)|\W/g,function(_a,_b,_c,_d){return _c?".*":_d?".":_b?_b:"\\"+_a;})+"$",this.ignoreCase?"mi":"m");},_abortQuery:function(){if(this.searchTimer){this.searchTimer=this.searchTimer.remove();}if(this._queryDeferHandle){this._queryDeferHandle=this._queryDeferHandle.remove();}if(this._fetchHandle){if(this._fetchHandle.abort){this._cancelingQuery=true;this._fetchHandle.abort();this._cancelingQuery=false;}if(this._fetchHandle.cancel){this._cancelingQuery=true;this._fetchHandle.cancel();this._cancelingQuery=false;}this._fetchHandle=null;}},_processInput:function(_e){if(this.disabled||this.readOnly){return;}var _f=_e.charOrCode;this._prev_key_backspace=false;if(_f==_2.DELETE||_f==_2.BACKSPACE){this._prev_key_backspace=true;this._maskValidSubsetError=true;}if(!this.store){this.onSearch();}else{this.searchTimer=this.defer("_startSearchFromInput",1);}},onSearch:function(){},_startSearchFromInput:function(){this._startSearch(this.focusNode.value);},_startSearch:function(_10){this._abortQuery();var _11=this,_4=_3.clone(this.query),_12={start:0,count:this.pageSize,queryOptions:{ignoreCase:this.ignoreCase,deep:true}},qs=_5.substitute(this.queryExpr,[_10.replace(/([\\\*\?])/g,"\\$1")]),q,_13=function(){var _14=_11._fetchHandle=_11.store.query(_4,_12);if(_11.disabled||_11.readOnly||(q!==_11._lastQuery)){return;}_6(_14,function(res){_11._fetchHandle=null;if(!_11.disabled&&!_11.readOnly&&(q===_11._lastQuery)){_6(_14.total,function(_15){res.total=_15;var _16=_11.pageSize;if(isNaN(_16)||_16>res.total){_16=res.total;}res.nextPage=function(_17){_12.direction=_17=_17!==false;_12.count=_16;if(_17){_12.start+=res.length;if(_12.start>=res.total){_12.count=0;}}else{_12.start-=_16;if(_12.start<0){_12.count=Math.max(_16+_12.start,0);_12.start=0;}}if(_12.count<=0){res.length=0;_11.onSearch(res,_4,_12);}else{_13();}};_11.onSearch(res,_4,_12);});}},function(err){_11._fetchHandle=null;if(!_11._cancelingQuery){console.error(_11.declaredClass+" "+err.toString());}});};_3.mixin(_12,this.fetchProperties);if(this.store._oldAPI){q=qs;}else{q=this._patternToRegExp(qs);q.toString=function(){return qs;};}this._lastQuery=_4[this.searchAttr]=q;this._queryDeferHandle=this.defer(_13,this.searchDelay);},constructor:function(){this.query={};this.fetchProperties={};},postMixInProperties:function(){if(!this.store){var _18=this.list;if(_18){this.store=_7.byId(_18);}}this.inherited(arguments);}});}); \ No newline at end of file
+define("dijit/form/_SearchMixin",["dojo/_base/declare","dojo/keys","dojo/_base/lang","dojo/query","dojo/string","dojo/when","../registry"],function(_1,_2,_3,_4,_5,_6,_7){return _1("dijit.form._SearchMixin",null,{pageSize:Infinity,store:null,fetchProperties:{},query:{},list:"",_setListAttr:function(_8){this._set("list",_8);},searchDelay:200,searchAttr:"name",queryExpr:"${0}*",ignoreCase:true,_patternToRegExp:function(_9){return new RegExp("^"+_9.replace(/(\\.)|(\*)|(\?)|\W/g,function(_a,_b,_c,_d){return _c?".*":_d?".":_b?_b:"\\"+_a;})+"$",this.ignoreCase?"mi":"m");},_abortQuery:function(){if(this.searchTimer){this.searchTimer=this.searchTimer.remove();}if(this._queryDeferHandle){this._queryDeferHandle=this._queryDeferHandle.remove();}if(this._fetchHandle){if(this._fetchHandle.abort){this._cancelingQuery=true;this._fetchHandle.abort();this._cancelingQuery=false;}if(this._fetchHandle.cancel){this._cancelingQuery=true;this._fetchHandle.cancel();this._cancelingQuery=false;}this._fetchHandle=null;}},_processInput:function(_e){if(this.disabled||this.readOnly){return;}var _f=_e.charOrCode;this._prev_key_backspace=false;if(_f===_2.DELETE||_f===_2.BACKSPACE){this._prev_key_backspace=true;this._maskValidSubsetError=true;}if(!this.store){this.onSearch();}else{this.searchTimer=this.defer("_startSearchFromInput",1);}},onSearch:function(){},_startSearchFromInput:function(){this._startSearch(this.focusNode.value);},_startSearch:function(_10){this._abortQuery();var _11=this,_4=_3.clone(this.query),_12={start:0,count:this.pageSize,queryOptions:{ignoreCase:this.ignoreCase,deep:true}},qs=_5.substitute(this.queryExpr,[_10.replace(/([\\\*\?])/g,"\\$1")]),q,_13=function(){var _14=_11._fetchHandle=_11.store.query(_4,_12);if(_11.disabled||_11.readOnly||(q!==_11._lastQuery)){return;}_6(_14,function(res){_11._fetchHandle=null;if(!_11.disabled&&!_11.readOnly&&(q===_11._lastQuery)){_6(_14.total,function(_15){res.total=_15;var _16=_11.pageSize;if(isNaN(_16)||_16>res.total){_16=res.total;}res.nextPage=function(_17){_12.direction=_17=_17!==false;_12.count=_16;if(_17){_12.start+=res.length;if(_12.start>=res.total){_12.count=0;}}else{_12.start-=_16;if(_12.start<0){_12.count=Math.max(_16+_12.start,0);_12.start=0;}}if(_12.count<=0){res.length=0;_11.onSearch(res,_4,_12);}else{_13();}};_11.onSearch(res,_4,_12);});}},function(err){_11._fetchHandle=null;if(!_11._cancelingQuery){console.error(_11.declaredClass+" "+err.toString());}});};_3.mixin(_12,this.fetchProperties);if(this.store._oldAPI){q=qs;}else{q=this._patternToRegExp(qs);q.toString=function(){return qs;};}this._lastQuery=_4[this.searchAttr]=q;this._queryDeferHandle=this.defer(_13,this.searchDelay);},constructor:function(){this.query={};this.fetchProperties={};},postMixInProperties:function(){if(!this.store){var _18=this.list;if(_18){this.store=_7.byId(_18);}}this.inherited(arguments);}});}); \ No newline at end of file
diff --git a/lib/dijit/form/nls/ComboBox.js b/lib/dijit/form/nls/ComboBox.js
index 391de8189..85f451af5 100644
--- a/lib/dijit/form/nls/ComboBox.js
+++ b/lib/dijit/form/nls/ComboBox.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/form/nls/ComboBox",{root:({previousMessage:"Previous choices",nextMessage:"More choices"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true}); \ No newline at end of file
+define("dijit/form/nls/ComboBox",{root:({previousMessage:"Previous choices",nextMessage:"More choices"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true,"al":true}); \ No newline at end of file
diff --git a/lib/dijit/form/nls/Textarea.js b/lib/dijit/form/nls/Textarea.js
index eb8895bbc..99f5bbedd 100644
--- a/lib/dijit/form/nls/Textarea.js
+++ b/lib/dijit/form/nls/Textarea.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/form/nls/Textarea",{root:({iframeEditTitle:"edit area",iframeFocusTitle:"edit area frame"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true}); \ No newline at end of file
+define("dijit/form/nls/Textarea",{root:({iframeEditTitle:"edit area",iframeFocusTitle:"edit area frame"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true,"al":true}); \ No newline at end of file
diff --git a/lib/dijit/form/nls/al/ComboBox.js b/lib/dijit/form/nls/al/ComboBox.js
new file mode 100644
index 000000000..950a90a77
--- /dev/null
+++ b/lib/dijit/form/nls/al/ComboBox.js
@@ -0,0 +1,2 @@
+//>>built
+define("dijit/form/nls/al/ComboBox",{previousMessage:"Zgjedhja e mëparshme",nextMessage:"Më tepër zgjedhje"}); \ No newline at end of file
diff --git a/lib/dijit/form/nls/al/Textarea.js b/lib/dijit/form/nls/al/Textarea.js
new file mode 100644
index 000000000..86c7c128b
--- /dev/null
+++ b/lib/dijit/form/nls/al/Textarea.js
@@ -0,0 +1,2 @@
+//>>built
+define("dijit/form/nls/al/Textarea",{iframeEditTitle:"zona e editimit",iframeFocusTitle:"frame i zonës së editimit"}); \ No newline at end of file
diff --git a/lib/dijit/form/nls/al/validate.js b/lib/dijit/form/nls/al/validate.js
new file mode 100644
index 000000000..ee41bfed2
--- /dev/null
+++ b/lib/dijit/form/nls/al/validate.js
@@ -0,0 +1,2 @@
+//>>built
+define("dijit/form/nls/al/validate",{invalidMessage:"Vlera e vendosur nuk është e saktë",missingMessage:"Kjo vlerë është e detyruar",rangeMessage:"Kjo vlerë është jashtë rradhe"}); \ No newline at end of file
diff --git a/lib/dijit/form/nls/it/ComboBox.js b/lib/dijit/form/nls/it/ComboBox.js
index ff829811a..3eb655148 100644
--- a/lib/dijit/form/nls/it/ComboBox.js
+++ b/lib/dijit/form/nls/it/ComboBox.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/form/nls/it/ComboBox",({previousMessage:"Scelte precedenti",nextMessage:"Scelte successive"})); \ No newline at end of file
+define("dijit/form/nls/it/ComboBox",{previousMessage:"Scelte precedenti",nextMessage:"Scelte successive"}); \ No newline at end of file
diff --git a/lib/dijit/form/nls/it/Textarea.js b/lib/dijit/form/nls/it/Textarea.js
index ecf107197..6a0005871 100644
--- a/lib/dijit/form/nls/it/Textarea.js
+++ b/lib/dijit/form/nls/it/Textarea.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/form/nls/it/Textarea",({iframeEditTitle:"modifica area",iframeFocusTitle:"modifica frame area"})); \ No newline at end of file
+define({iframeEditTitle:"modifica area",iframeFocusTitle:"modifica frame area"}); \ No newline at end of file
diff --git a/lib/dijit/form/nls/it/validate.js b/lib/dijit/form/nls/it/validate.js
index c6c8b9065..fa63ffe8f 100644
--- a/lib/dijit/form/nls/it/validate.js
+++ b/lib/dijit/form/nls/it/validate.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/form/nls/it/validate",({invalidMessage:"Il valore immesso non è valido.",missingMessage:"Questo valore è obbligatorio.",rangeMessage:"Questo valore è fuori dall'intervallo consentito."})); \ No newline at end of file
+define("dijit/form/nls/it/validate",{invalidMessage:"Il valore immesso non è valido.",missingMessage:"Questo valore è obbligatorio.",rangeMessage:"Questo valore è fuori dall'intervallo consentito."}); \ No newline at end of file
diff --git a/lib/dijit/form/nls/validate.js b/lib/dijit/form/nls/validate.js
index 3b6c5667b..c35a6ad1c 100644
--- a/lib/dijit/form/nls/validate.js
+++ b/lib/dijit/form/nls/validate.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/form/nls/validate",{root:({invalidMessage:"The value entered is not valid.",missingMessage:"This value is required.",rangeMessage:"This value is out of range."}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true}); \ No newline at end of file
+define("dijit/form/nls/validate",{root:({invalidMessage:"The value entered is not valid.",missingMessage:"This value is required.",rangeMessage:"This value is out of range."}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true,"al":true}); \ No newline at end of file
diff --git a/lib/dijit/nls/al/common.js b/lib/dijit/nls/al/common.js
new file mode 100644
index 000000000..0aa014354
--- /dev/null
+++ b/lib/dijit/nls/al/common.js
@@ -0,0 +1,2 @@
+//>>built
+define("dijit/nls/al/common",{buttonOk:"OK",buttonCancel:"Anullo",buttonSave:"Ruaj",itemClose:"Mbyll"}); \ No newline at end of file
diff --git a/lib/dijit/nls/al/loading.js b/lib/dijit/nls/al/loading.js
new file mode 100644
index 000000000..8d2404f2e
--- /dev/null
+++ b/lib/dijit/nls/al/loading.js
@@ -0,0 +1,2 @@
+//>>built
+define("dijit/nls/al/loading",{loadingState:"Duke u ngarkuar",errorState:"Një gabim ndodhi"}); \ No newline at end of file
diff --git a/lib/dijit/nls/common.js b/lib/dijit/nls/common.js
index c8c53f054..d1285e7c3 100644
--- a/lib/dijit/nls/common.js
+++ b/lib/dijit/nls/common.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/nls/common",{root:({buttonOk:"OK",buttonCancel:"Cancel",buttonSave:"Save",itemClose:"Close"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true}); \ No newline at end of file
+define("dijit/nls/common",{root:({buttonOk:"OK",buttonCancel:"Cancel",buttonSave:"Save",itemClose:"Close"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true,"al":true}); \ No newline at end of file
diff --git a/lib/dijit/nls/loading.js b/lib/dijit/nls/loading.js
index 8f448131d..1a9cd5966 100644
--- a/lib/dijit/nls/loading.js
+++ b/lib/dijit/nls/loading.js
@@ -1,2 +1,2 @@
//>>built
-define("dijit/nls/loading",{root:({loadingState:"Loading...",errorState:"Sorry, an error occurred"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true}); \ No newline at end of file
+define("dijit/nls/loading",{root:({loadingState:"Loading...",errorState:"Sorry, an error occurred"}),"bs":true,"mk":true,"sr":true,"zh":true,"zh-tw":true,"uk":true,"tr":true,"th":true,"sv":true,"sl":true,"sk":true,"ru":true,"ro":true,"pt":true,"pt-pt":true,"pl":true,"nl":true,"nb":true,"ko":true,"kk":true,"ja":true,"it":true,"id":true,"hu":true,"hr":true,"he":true,"fr":true,"fi":true,"eu":true,"es":true,"el":true,"de":true,"da":true,"cs":true,"ca":true,"bg":true,"az":true,"ar":true,"al":true}); \ No newline at end of file
diff --git a/lib/dijit/package.json b/lib/dijit/package.json
index f3a30b5d1..8213c20e3 100644
--- a/lib/dijit/package.json
+++ b/lib/dijit/package.json
@@ -1,12 +1,12 @@
{
"name": "dijit",
- "version": "1.14.2",
+ "version": "1.16.4",
"directories": {
"lib": "."
},
"main": "main",
"dependencies": {
- "dojo": "1.14.2"
+ "dojo": "1.16.4"
},
"description": "Dijit provides a complete collection of user interface controls based on Dojo, giving you the power to create web applications that are highly optimized for usability, performance, internationalization, accessibility, but above all deliver an incredible user experience.",
"license" : "BSD-3-Clause OR AFL-2.1",
diff --git a/lib/dijit/themes/claro/claro.css b/lib/dijit/themes/claro/claro.css
index 65812ee73..b5c395f30 100644
--- a/lib/dijit/themes/claro/claro.css
+++ b/lib/dijit/themes/claro/claro.css
@@ -1 +1 @@
-.dijitReset {margin:0; border:0; padding:0; font: inherit; line-height:normal; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {position: absolute; visibility: hidden;}.dijitHidden * {visibility: hidden !important;}.dijitVisible {display: block !important; position: relative; visibility: visible;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important; border-collapse: separate;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: -10000px !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; -webkit-overflow-scrolling: touch;}.dijitPositionOnly {padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important;}.dijitNonPositionOnly {float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important;}.dijitBackgroundIframe {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0;}.dijitDisplayNone {display:none !important;}.dijitContainer {overflow: hidden;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner {background: no-repeat center; width: 12px; height: 12px; direction: ltr;}.dijitLeft {background-position:left top; background-repeat:no-repeat;}.dijitStretch {white-space:nowrap; background-repeat:repeat-x;}.dijitRight {#display:inline; background-position:right top; background-repeat:no-repeat;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.dijitButtonNode {border:1px solid gray; margin:0; line-height:normal; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap;}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {line-height:inherit;}.dijitTextBox .dijitButtonNode {border-width: 0;}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_ie .dijitButtonNode {zoom: 1;}.dj_ie .dijitButtonNode button {overflow: visible;}div.dijitArrowButton {float: right;}.dijitTextBox {border: solid black 1px; #overflow: hidden; width: 15em; vertical-align: middle;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_safari .dijitTextBoxDisabled input {color: #B0B0B0;}.dj_safari textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .dj_gecko .dijitTextBoxDisabled input {-moz-user-input: none;}.dijitPlaceHolder {color: #AAAAAA; font-style: italic; position: absolute; top: 0; left: 0; #filter: ""; white-space: nowrap; pointer-events: none;}.dijitTimeTextBox {width: 8em;}.dijitTextBox input:focus {outline: none;}.dijitTextBoxFocused {outline: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !important; direction: ltr !important; text-align: left !important; height: auto !important; #text-indent: 0 !important; #letter-spacing: -5em !important; #text-align: right !important;}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox {line-height: 100%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.dj_ie .dijitToolbar .dijitComboBox {vertical-align: middle;}.dijitTextBox .dijitSpinnerButtonContainer {width: 1em; position: relative !important; overflow: hidden;}.dijitSpinner .dijitSpinnerButtonInner {width:1em; visibility:hidden !important; overflow-x:hidden;}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0.3em !important; padding-right: 0.3em !important; margin-left: 0.3em !important; margin-right: 0.3em !important; width: 1.4em !important;}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0 !important; margin-right: 0 !important; width: 2em !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {padding: 0; position: absolute !important; right: 0; float: none; height: 50%; width: 100%; bottom: auto; left: 0; right: auto;}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: auto;}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {overflow: visible !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {top: 50%; border-top-width: 1px !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {#bottom: 50%; top: 0;}.dijitSpinner .dijitArrowButtonInner {margin: auto; overflow-x: hidden; height: 100% !important;}.dj_iequirks .dijitSpinner .dijitArrowButtonInner {height: auto !important;}.dijitSpinner .dijitArrowButtonInner .dijitInputField {-moz-transform: scale(0.5); -moz-transform-origin: center top; -webkit-transform: scale(0.5); -webkit-transform-origin: center top; -o-transform: scale(0.5); -o-transform-origin: center top; transform: scale(0.5); transform-origin: left top; padding-top: 0; padding-bottom: 0; padding-left: 0 !important; padding-right: 0 !important; width: 100%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput {padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden;}.dijitCheckBox input,.dijitRadio input {margin: 0; padding: 0; display: block;}.dijitCheckBoxInput {opacity: 0;}.dj_ie .dijitCheckBoxInput {filter: alpha(opacity=0);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.dijitProgressBarEmpty {position:relative;overflow:hidden; border:1px solid black; z-index:0;}.dijitProgressBarFull {position:absolute; overflow:hidden; z-index:-1; top:0; width:100%;}.dj_ie6 .dijitProgressBarFull {height:1.6em;}.dijitProgressBarTile {position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto;}.dijitProgressBarLabel {display:block; position:static; width:100%; text-align:center; background-color:transparent !important;}.dijitTooltip {position: absolute; z-index: 2000; display: block; left: 0; top: -10000px; overflow: visible;}.dijitTooltipContainer {border: solid black 2px; background: #b8b5b5; color: black; font-size: small;}.dijitTooltipFocusNode {padding: 2px 2px 2px 2px;}.dijitTooltipConnector {position: absolute;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane {position: absolute !important; z-index: 2;}.dijitBorderContainer > .dijitTextArea {resize: none;}.dijitGutter {position: absolute; font-size: 1px;}.dijitSplitter {position: absolute; overflow: hidden; z-index: 10; background-color: #fff; border-color: gray; border-style: solid; border-width: 0;}.dj_ie .dijitSplitter {z-index: 1;}.dijitSplitterActive {z-index: 11 !important;}.dijitSplitterCover {position:absolute; z-index:-1; top:0; left:0; width:100%; height:100%;}.dijitSplitterCoverActive {z-index:3 !important;}.dj_ie .dijitSplitterCover {background: white; opacity: 0;}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover {filter: alpha(opacity=0);}.dijitSplitterH {height: 7px; border-top:1px; border-bottom:1px; cursor: row-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0;}.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {overflow:hidden; position:absolute; top:49%;}.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {position:absolute; left:49%;}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV {font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto; -webkit-overflow-scrolling: touch;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitFieldset {border: 1px solid gray;}.dijitTitlePaneTitle, .dijitFieldsetTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {cursor: default;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {display: inline; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {display: none;}.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {display: none !important;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.dijitColorPalette .dijitPaletteTable {padding: 2px 3px 3px 3px; position: relative; overflow: hidden; outline: 0; border-collapse: separate;}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable {padding: 0; margin: 2px 3px 3px 3px;}.dijitColorPalette .dijitPaletteCell {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !important;}.dijitAccordionContainer {border:1px solid #b7b7b7; border-top:0 !important;}.dijitAccordionTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitAccordionTitleSelected {cursor: default;}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown {display: none; font-size: 0.65em; font-weight: normal !important;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer table {width: auto; clear: both;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarMonthContainer {text-align: center;}.dijitCalendarDecrementArrow {float: left;}.dijitCalendarIncrementArrow {float: right;}.dijitCalendarYearLabel {white-space: nowrap;}.dijitCalendarNextYear {margin:0 0 0 0.55em;}.dijitCalendarPreviousYear {margin:0 0.55em 0 0;}.dijitCalendarIncrementControl {vertical-align: middle;}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitCalendarDisabledDate {color: gray; text-decoration: line-through; cursor: default;}.dijitSpacer {position: relative; height: 1px; overflow: hidden; visibility: hidden;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.dijitMenu {border:1px solid black; background-color:white;}.dijitMenuTable {border-collapse:collapse; border-width:0; background-color:white;}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden;}.dijitMenuItem {text-align: left; white-space: nowrap; padding:.1em .2em; cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_a11y .dijitMenuExpandA11y {display: inline;}.dijitMenuSeparator td {border: 0; padding: 0;}.dijitMenuSeparatorTop {height: 50%; margin: 0; margin-top:3px; font-size: 1px;}.dijitMenuSeparatorBottom {height: 50%; margin: 0; margin-bottom:3px; font-size: 1px;}.dijitMenuItemIconChar {display: none; visibility: hidden;}.dj_a11y .dijitMenuItemIconChar {display: inline;}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar {visibility: visible;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}div.dijitTabDisabled, .dj_ie div.dijitTabDisabled {cursor: auto;}.dijitTab {position:relative; cursor:pointer; -webkit-tap-highlight-color: transparent; white-space:nowrap; z-index:3;}.dijitTab * {vertical-align: middle;}.dijitTabChecked {cursor: default;}.dijitTabContainerTop-tabs .dijitTab {top: 1px;}.dijitTabContainerBottom-tabs .dijitTab {top: -1px;}.dijitTabContainerLeft-tabs .dijitTab {left: 1px;}.dijitTabContainerRight-tabs .dijitTab {left: -1px;}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab {display:inline-block; #zoom: 1; #display:inline;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto; -webkit-tap-highlight-color: transparent;}.dijitTreeContainer {float: left;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dj_ie .dijitTreeLabel:focus {outline: 1px dotted black;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 4px;}.dijitDialog {position: absolute; z-index: 999; overflow: hidden;}.dijitDialogTitleBar {cursor: move;}.dijitDialogFixed .dijitDialogTitleBar {cursor:default;}.dijitDialogCloseIcon {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitDialogPaneContent {-webkit-overflow-scrolling: touch;}.dijitDialogUnderlayWrapper {position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important;}.dijitDialogUnderlay {background: #eee; opacity: 0.5;}.dj_ie .dijitDialogUnderlay {filter: alpha(opacity=50);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {border:4px solid #000; height:8px; width:8px;}.dijitSliderImageHandleV {top:-8px; right: -50%;}.dijitSliderImageHandleH {left:50%; top:-5px; vertical-align:top;}.dijitSliderBar {border-style:solid; border-color:black; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSliderBarContainerV {position:relative; height:100%; z-index:1;}.dijitSliderBarContainerH {position:relative; z-index:1;}.dijitSliderBarH {height:4px; border-width:1px 0;}.dijitSliderBarV {width:4px; border-width:0 1px;}.dijitSliderProgressBar {background-color:red; z-index:1;}.dijitSliderProgressBarV {position:static !important; height:0; vertical-align:top; text-align:left;}.dijitSliderProgressBarH {position:absolute !important; width:0; vertical-align:middle; overflow:visible;}.dijitSliderRemainingBar {overflow:hidden; background-color:transparent; z-index:1;}.dijitSliderRemainingBarV {height:100%; text-align:left;}.dijitSliderRemainingBarH {width:100% !important;}.dijitSliderBumper {overflow:hidden; z-index:1;}.dijitSliderBumperV {width:4px; height:8px; border-width:0 1px;}.dijitSliderBumperH {width:8px; height:4px; border-width:1px 0;}.dijitSliderBottomBumper,.dijitSliderLeftBumper {background-color:red;}.dijitSliderTopBumper,.dijitSliderRightBumper {background-color:transparent;}.dijitSliderDecoration {text-align:center;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%; white-space: nowrap;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_a11y .dijitSliderButtonInner {visibility:visible !important;}.dijitSliderButtonContainer {text-align:center; height:0;}.dijitSliderButtonContainer * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSlider .dijitButtonNode {padding:0; display:block;}.dijitRuleContainer {position:relative; overflow:visible;}.dijitRuleContainerV {height:100%; line-height:0; float:left; text-align:left;}.dj_opera .dijitRuleContainerV {line-height:2%;}.dj_ie .dijitRuleContainerV {line-height:normal;}.dj_gecko .dijitRuleContainerV {margin:0 0 1px 0;}.dijitRuleMark {position:absolute; border:1px solid black; line-height:0; height:100%;}.dijitRuleMarkH {width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important;}.dijitRuleLabelContainer {position:absolute;}.dijitRuleLabelContainerH {text-align:center; display:inline-block;}.dijitRuleLabelH {position:relative; left:-50%;}.dijitRuleLabelV {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}.dijitRuleMarkV {height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0;}.dj_ie .dijitRuleLabelContainerV {margin-top:-.55em;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.dijitToolbarSeparator {height: 18px; width: 5px; padding: 0 1px; margin: 0;}.dijitIEFixedToolbar {position:absolute; top: expression(eval((document.documentElement||document.body).scrollTop));}.dijitEditor {display: block;}.dijitEditorDisabled,.dijitEditorReadOnly {color: gray;}.dijitTimePicker {background-color: white;}.dijitTimePickerItem {cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitTimePickerItemHover {background-color:gray; color:white;}.dijitTimePickerItemSelected {font-weight:bold; color:#333; background-color:#b7cdee;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dijitTimePickerItemInner {text-align:center; border:0; padding:2px 8px 2px 8px;}.dijitTimePickerTick,.dijitTimePickerMarker {border-bottom:1px solid gray;}.dijitTimePicker .dijitDownArrowButton {border-top: none !important;}.dijitTimePickerTick {color:#CCC;}.dijitTimePickerMarker {color:black; background-color:#CCC;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitNumberTextBox {text-align: left; direction: ltr;}.dijitNumberTextBox .dijitInputInner {text-align: inherit;}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner {text-align: right;}.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {padding-right: 1px !important;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.dijitSelectFixedWidth .dijitButtonContents {width: 100%;}.dijitSelectMenu .dijitMenuItemIcon {display:none;}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {position: static;}.dijitSelectLabel *{vertical-align: baseline;}.dijitSelectSelectedOption * {font-weight: bold;}.dijitSelectMenu {border-width: 1px;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.dijitFocused .dijitMenuItemShortcutKey {text-decoration: underline;}.dijitIconSave,.dijitIconPrint,.dijitIconCut,.dijitIconCopy,.dijitIconClear,.dijitIconDelete,.dijitIconUndo,.dijitIconEdit,.dijitIconNewTask,.dijitIconEditTask,.dijitIconEditProperty,.dijitIconTask,.dijitIconFilter,.dijitIconConfigure,.dijitIconSearch,.dijitIconApplication,.dijitIconBookmark,.dijitIconChart,.dijitIconConnector,.dijitIconDatabase,.dijitIconDocuments,.dijitIconMail,.dijitLeaf,.dijitIconFile,.dijitIconFunction,.dijitIconKey,.dijitIconPackage,.dijitIconSample,.dijitIconTable,.dijitIconUsers,.dijitFolderClosed,.dijitIconFolderClosed,.dijitFolderOpened,.dijitIconFolderOpen,.dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled.png"); width: 16px; height: 16px;}.dj_ie6 .dijitIconSave,.dj_ie6 .dijitIconPrint,.dj_ie6 .dijitIconCut,.dj_ie6 .dijitIconCopy,.dj_ie6 .dijitIconClear,.dj_ie6 .dijitIconDelete,.dj_ie6 .dijitIconUndo,.dj_ie6 .dijitIconEdit,.dj_ie6 .dijitIconNewTask,.dj_ie6 .dijitIconEditTask,.dj_ie6 .dijitIconEditProperty,.dj_ie6 .dijitIconTask,.dj_ie6 .dijitIconFilter,.dj_ie6 .dijitIconConfigure,.dj_ie6 .dijitIconSearch,.dj_ie6 .dijitIconApplication,.dj_ie6 .dijitIconBookmark,.dj_ie6 .dijitIconChart,.dj_ie6 .dijitIconConnector,.dj_ie6 .dijitIconDatabase,.dj_ie6 .dijitIconDocuments,.dj_ie6 .dijitIconMail,.dj_ie6 .dijitLeaf,.dj_ie6 .dijitIconFile,.dj_ie6 .dijitIconFunction,.dj_ie6 .dijitIconKey,.dj_ie6 .dijitIconPackage,.dj_ie6 .dijitIconSample,.dj_ie6 .dijitIconTable,.dj_ie6 .dijitIconUsers,.dj_ie6 .dijitFolderClosed,.dj_ie6 .dijitIconFolderClosed,.dj_ie6 .dijitFolderOpened,.dj_ie6 .dijitIconFolderOpen,.dj_ie6 .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled8bit.png");}.dijitDisabled .dijitIconSave,.dijitDisabled .dijitIconPrint,.dijitDisabled .dijitIconCut,.dijitDisabled .dijitIconCopy,.dijitDisabled .dijitIconClear,.dijitDisabled .dijitIconDelete,.dijitDisabled .dijitIconUndo,.dijitDisabled .dijitIconEdit,.dijitDisabled .dijitIconNewTask,.dijitDisabled .dijitIconEditTask,.dijitDisabled .dijitIconEditProperty,.dijitDisabled .dijitIconTask,.dijitDisabled .dijitIconFilter,.dijitDisabled .dijitIconConfigure,.dijitDisabled .dijitIconSearch,.dijitDisabled .dijitIconApplication,.dijitDisabled .dijitIconBookmark,.dijitDisabled .dijitIconChart,.dijitDisabled .dijitIconConnector,.dijitDisabled .dijitIconDatabase,.dijitDisabled .dijitIconDocuments,.dijitDisabled .dijitIconMail,.dijitDisabled .dijitLeaf,.dijitDisabled .dijitIconFile,.dijitDisabled .dijitIconFunction,.dijitDisabled .dijitIconKey,.dijitDisabled .dijitIconPackage,.dijitDisabled .dijitIconSample,.dijitDisabled .dijitIconTable,.dijitDisabled .dijitIconUsers,.dijitDisabled .dijitFolderClosed,.dijitDisabled .dijitIconFolderClosed,.dijitDisabled .dijitFolderOpened,.dijitDisabled .dijitIconFolderOpen,.dijitDisabled .dijitIconError {background-image: url("../../icons/images/commonIconsObjActDisabled.png");}.dijitIconSave {background-position: 0;}.dijitIconPrint {background-position: -16px;}.dijitIconCut {background-position: -32px;}.dijitIconCopy {background-position: -48px;}.dijitIconClear {background-position: -64px;}.dijitIconDelete {background-position: -80px;}.dijitIconUndo {background-position: -96px;}.dijitIconEdit {background-position: -112px;}.dijitIconNewTask {background-position: -128px;}.dijitIconEditTask {background-position: -144px;}.dijitIconEditProperty {background-position: -160px;}.dijitIconTask {background-position: -176px;}.dijitIconFilter {background-position: -192px;}.dijitIconConfigure {background-position: -208px;}.dijitIconSearch {background-position: -224px;}.dijitIconError {background-position: -496px;} .dijitIconApplication {background-position: -240px;}.dijitIconBookmark {background-position: -256px;}.dijitIconChart {background-position: -272px;}.dijitIconConnector {background-position: -288px;}.dijitIconDatabase {background-position: -304px;}.dijitIconDocuments {background-position: -320px;}.dijitIconMail {background-position: -336px;}.dijitIconFile, .dijitLeaf {background-position: -352px;}.dijitIconFunction {background-position: -368px;}.dijitIconKey {background-position: -384px;}.dijitIconPackage{background-position: -400px;}.dijitIconSample {background-position: -416px;}.dijitIconTable {background-position: -432px;}.dijitIconUsers {background-position: -448px;}.dijitIconFolderClosed, .dijitFolderClosed {background-position: -464px;}.dijitIconFolderOpen, .dijitFolderOpened {background-position: -480px;}.dijitIconLoading {background: url("../../icons/images/loadingAnimation.gif") no-repeat; height: 20px; width: 20px;}.claro .dijitPopup {-webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);}.claro .dijitTooltipDialogPopup {-webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none;}.claro .dijitComboBoxHighlightMatch {background-color: #abd6ff;}.claro .dijitFocusedLabel {outline: 1px dotted #494949;}.claro .dojoDndItem {border-color: rgba(0, 0, 0, 0); -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s; -webkit-transition-property: background-color, border-color; -moz-transition-property: background-color, border-color; transition-property: background-color, border-color;}.claro .dojoDndItemOver {background-color: #abd6ff; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 1px; border: solid 1px #759dc0; color: #000000;}.claro .dojoDndItemAnchor,.claro .dojoDndItemSelected {background-color: #cfe5fa; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 1px; border: solid 1px #759dc0; color: #000000;}.claro .dojoDndItemBefore,.claro .dojoDndItemAfter {border-color: #759dc0;}.claro table.dojoDndAvatar {border: 1px solid #b5bcc7; border-collapse: collapse; background-color: #ffffff; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);}.claro .dojoDndAvatarHeader td {height: 20px; padding-left: 21px;}.claro.dojoDndMove .dojoDndAvatarHeader,.claro.dojoDndCopy .dojoDndAvatarHeader {background-image: url("images/dnd.png"); background-repeat: no-repeat; background-position: 2px -122px;}.claro .dojoDndAvatarItem td {padding: 5px;}.claro.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-position: 2px -103px;}.claro.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-position: 2px -68px;}.claro.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-position: 2px -33px;}.claro.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-position: 2px 2px;}.claro .dijitTextBox,.claro .dijitInputInner {color: #000000;}.claro .dijitValidationTextBoxError .dijitValidationContainer {background-color: #d46464; background-image: url("form/images/error.png"); background-position: top center; border: solid #d46464 0; width: 9px;}.claro .dijitTextBoxError .dijitValidationContainer {border-left-width: 1px;}.claro .dijitValidationTextBoxError .dijitValidationIcon {width: 0; background-color: transparent;}.claro .dijitTextArea,.claro .dijitInputField .dijitPlaceHolder {padding: 2px;}.claro .dijitSelect .dijitInputField,.claro .dijitTextBox .dijitInputField {padding: 1px 2px;}.dj_gecko .claro .dijitTextBox .dijitInputInner,.dj_webkit .claro .dijitTextBox .dijitInputInner {padding-left: 1px; padding-right: 1px;}.claro .dijitSelect,.claro .dijitSelect .dijitButtonContents,.claro .dijitTextBox,.claro .dijitTextBox .dijitButtonNode {border-color: #b5bcc7; -webkit-transition-property: background-color, border; -moz-transition-property: background-color, border; transition-property: background-color, border; -webkit-transition-duration: 0.35s; -moz-transition-duration: 0.35s; transition-duration: 0.35s;}.claro .dijitSelect,.claro .dijitTextBox {background-color: #ffffff;}.claro .dijitSelectHover,.claro .dijitSelectHover .dijitButtonContents,.claro .dijitTextBoxHover,.claro .dijitTextBoxHover .dijitButtonNode {border-color: #759dc0; -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s;}.claro .dijitTextBoxHover {background-color: #e5f2fe; background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px);}.claro .dijitSelectError,.claro .dijitSelectError .dijitButtonContents,.claro .dijitTextBoxError,.claro .dijitTextBoxError .dijitButtonNode {border-color: #d46464;}.claro .dijitSelectFocused,.claro .dijitSelectFocused .dijitButtonContents,.claro .dijitTextBoxFocused,.claro .dijitTextBoxFocused .dijitButtonNode {border-color: #759dc0; -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.claro .dijitTextBoxFocused {background-color: #ffffff; background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px);}.claro .dijitTextBoxFocused .dijitInputContainer {background: #ffffff;}.claro .dijitSelectErrorFocused,.claro .dijitSelectErrorFocused .dijitButtonContents,.claro .dijitTextBoxErrorFocused,.claro .dijitTextBoxErrorFocused .dijitButtonNode {border-color: #ce5050;}.claro .dijitSelectDisabled,.claro .dijitSelectDisabled .dijitButtonContents,.claro .dijitTextBoxDisabled,.claro .dijitTextBoxDisabled .dijitButtonNode {border-color: #d3d3d3;}.claro .dijitSelectDisabled,.claro .dijitTextBoxDisabled,.claro .dijitTextBoxDisabled .dijitInputContainer {background-color: #efefef; background-image: none;}.claro .dijitSelectDisabled,.claro .dijitTextBoxDisabled,.claro .dijitTextBoxDisabled .dijitInputInner {color: #818181;}.dj_webkit .claro .dijitDisabled input {color: #757575;}.dj_webkit .claro textarea.dijitTextAreaDisabled {color: #1b1b1b;}.claro .dijitSelect .dijitArrowButtonInner,.claro .dijitComboBox .dijitArrowButtonInner {background-image: url("form/images/commonFormArrows.png"); background-position: -35px 53%; background-repeat: no-repeat; margin: 0; width: 16px;}.claro .dijitComboBox .dijitArrowButtonInner {border: 1px solid #ffffff;}.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner {border: none;}.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner {border: none;}.claro .dijitSelectLabel,.claro .dijitTextBox .dijitInputInner,.claro .dijitValidationTextBox .dijitValidationContainer {padding: 1px 0;}.claro .dijitComboBox .dijitButtonNode {background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitComboBoxOpenOnClickHover .dijitButtonNode,.claro .dijitComboBox .dijitDownArrowButtonHover,.claro .dijitComboBoxFocused .dijitArrowButton {background-color: #abd6ff;}.claro .dijitComboBoxOpenOnClickHover .dijitArrowButtonInner,.claro .dijitComboBox .dijitDownArrowButtonHover .dijitArrowButtonInner {background-position: -70px 53%;}.claro .dijitComboBox .dijitHasDropDownOpen {background-color: #7dbdfa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 1px;}.dj_iequirks .claro .dijitComboBox .dijitHasDropDownOpen {padding: 1px 0;}.claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner {background-position: -70px 53%; border: 0 none;}.claro div.dijitComboBoxDisabled .dijitArrowButtonInner {background-position: 0 50%; background-color: #efefef;}.dj_ff3 .claro .dijitInputField input[type="hidden"] {display: none; height: 0; width: 0;}.dj_borderbox .claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner {width: 18px;}.dj_borderbox .claro .dijitComboBoxFocused .dijitHasDropDownOpen .dijitArrowButtonInner {width: 16px;}.claro .dijitButtonNode {-webkit-transition-property: background-color; -moz-transition-property: background-color; transition-property: background-color; -webkit-transition-duration: 0.3s; -moz-transition-duration: 0.3s; transition-duration: 0.3s;}.claro .dijitButton .dijitButtonNode,.claro .dijitDropDownButton .dijitButtonNode,.claro .dijitComboButton .dijitButtonNode,.claro .dijitToggleButton .dijitButtonNode {border: 1px solid #759dc0; padding: 2px 4px 4px 4px; color: #000000; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); background-color: #bcd8f4; background-image: url("form/images/buttonEnabled.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); background-image: -webkit-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); background-image: -o-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); background-image: linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); _background-image: none;}.claro .dijitComboButton .dijitArrowButton {border-left-width: 0; padding: 4px 2px 4px 2px;}.claro .dijitArrowButtonInner {width: 15px; height: 15px; margin: 0 auto; background-image: url("form/images/buttonArrows.png"); background-repeat: no-repeat; background-position: -51px 53%;}.claro .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -77px 53%;}.claro .dijitRightArrowButton .dijitArrowButtonInner {background-position: -26px 53%;}.claro .dijitUpArrowButton .dijitArrowButtonInner {background-position: 0 53%;}.claro .dijitDisabled .dijitArrowButtonInner {background-position: -151px 53%;}.claro .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -177px 53%;}.claro .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner {background-position: -126px 53%;}.claro .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner {background-position: -100px 53%;}.claro .dijitButtonText {padding: 0 0.3em; text-align: center;}.claro .dijitButtonHover .dijitButtonNode,.claro .dijitDropDownButtonHover .dijitButtonNode,.claro .dijitComboButton .dijitButtonNodeHover,.claro .dijitComboButton .dijitDownArrowButtonHover,.claro .dijitToggleButtonHover .dijitButtonNode {background-color: #86bdf2; color: #000000; -webkit-transition-duration: 0.2s; -moz-transition-duration: 0.2s; transition-duration: 0.2s;}.claro .dijitButtonActive .dijitButtonNode,.claro .dijitDropDownButtonActive .dijitButtonNode,.claro .dijitComboButtonActive .dijitButtonNode,.claro .dijitToggleButtonActive .dijitButtonNode,.claro .dijitToggleButtonChecked .dijitButtonNode {background-color: #86bdf2; -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.claro .dijitButtonDisabled,.claro .dijitDropDownButtonDisabled,.claro .dijitComboButtonDisabled,.claro .dijitToggleButtonDisabled {background-image: none; outline: none;}.claro .dijitButtonDisabled .dijitButtonNode,.claro .dijitDropDownButtonDisabled .dijitButtonNode,.claro .dijitComboButtonDisabled .dijitButtonNode,.claro .dijitToggleButtonDisabled .dijitButtonNode {background-color: #efefef; border: solid 1px #d3d3d3; color: #818181; -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); box-shadow: 0 0 0 rgba(0, 0, 0, 0); background-image: url("form/images/buttonDisabled.png"); background-image: -moz-linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); background-image: -webkit-linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); background-image: -o-linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); background-image: linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); _background-image: none;}.claro .dijitComboButtonDisabled .dijitArrowButton {border-left-width: 0;}.claro table.dijitComboButton {border-collapse: separate;}.claro .dijitComboButton .dijitStretch {-moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px;}.claro .dijitComboButton .dijitArrowButton {-moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0;}.claro .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/checkmarkNoBorder.png");}.dj_ie6 .claro .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/checkmarkNoBorder.gif");}.claro .dijitCheckBox,.claro .dijitCheckBoxIcon {background-image: url("form/images/checkboxRadioButtonStates.png"); background-repeat: no-repeat; width: 15px; height: 16px; margin: 0 2px 0 0; padding: 0;}.dj_ie6 .claro .dijitCheckBox,.dj_ie6 .claro .dijitCheckBoxIcon {background-image: url("form/images/checkboxAndRadioButtons_IE6.png");}.claro .dijitCheckBox,.claro .dijitToggleButton .dijitCheckBoxIcon {background-position: -15px;}.claro .dijitCheckBoxChecked,.claro .dijitToggleButtonChecked .dijitCheckBoxIcon {background-position: 0;}.claro .dijitCheckBoxDisabled {background-position: -75px;}.claro .dijitCheckBoxCheckedDisabled {background-position: -60px;}.claro .dijitCheckBoxHover {background-position: -45px;}.claro .dijitCheckBoxCheckedHover {background-position: -30px;}.claro .dijitToggleButton .dijitRadio,.claro .dijitToggleButton .dijitRadioIcon {background-image: url("form/images/checkboxRadioButtonStates.png");}.dj_ie6 .claro .dijitToggleButton .dijitRadio,.dj_ie6 .claro .dijitToggleButton .dijitRadioIcon {background-image: url("form/images/checkboxAndRadioButtons_IE6.png");}.claro .dijitRadio,.claro .dijitRadioIcon {background-image: url("form/images/checkboxRadioButtonStates.png"); background-repeat: no-repeat; width: 15px; height: 15px; margin: 0 2px 0 0; padding: 0;}.dj_ie6 .claro .dijitRadio,.dj_ie6 .claro .dijitRadioIcon {background-image: url("form/images/checkboxAndRadioButtons_IE6.png");}.claro .dijitRadio {background-position: -105px;}.claro .dijitToggleButton .dijitRadioIcon {background-position: -107px;}.claro .dijitRadioDisabled {background-position: -165px;}.claro .dijitRadioHover {background-position: -135px;}.claro .dijitRadioChecked {background-position: -90px;}.claro .dijitToggleButtonChecked .dijitRadioIcon {background-position: -92px;}.claro .dijitRadioCheckedHover {background-position: -120px;}.claro .dijitRadioCheckedDisabled {background-position: -150px;}.claro .dijitSelect .dijitArrowButtonContainer {border: 1px solid #ffffff;}.claro .dijitSelect .dijitArrowButton {padding: 0; background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitSelect .dijitArrowButton .dijitArrowButtonInner {height: 16px;}.claro .dijitSelectHover {background-color: #e5f2fe; background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-repeat: repeat-x;}.claro .dijitSelectHover .dijitArrowButton {background-color: #abd6ff;}.claro .dijitSelectHover .dijitArrowButton .dijitArrowButtonInner {background-position: -70px 53%;}.claro .dijitSelectFocused .dijitArrowButton {background-color: #7dbefa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitSelectFocused .dijitArrowButton {border: none; padding: 1px;}.claro .dijitSelectFocused .dijitArrowButton .dijitArrowButtonInner {background-position: -70px 53%;}.claro .dijitSelectDisabled {border-color: #d3d3d3; background-color: #efefef; background-image: none; color: #818181;}.claro .dijitSelectDisabled .dijitArrowButton .dijitArrowButtonInner {background-position: 0 53%;}.claro .dijitSelectMenu td.dijitMenuItemIconCell,.claro .dijitSelectMenu td.dijitMenuArrowCell {display: none;}.claro .dijitSelectMenu td.dijitMenuItemLabel {padding: 2px;}.claro .dijitSelectMenu .dijitMenuSeparatorTop {border-bottom: 1px solid #759dc0;}.claro .dijitTabPaneWrapper {background: #ffffff;}.claro .dijitTabPaneWrapper,.claro .dijitTabContainerTop-tabs,.claro .dijitTabContainerBottom-tabs,.claro .dijitTabContainerLeft-tabs,.claro .dijitTabContainerRight-tabs {border-color: #b5bcc7;}.claro .dijitTabCloseButton {background: url("layout/images/tabClose.png") no-repeat; width: 14px; height: 14px; margin-left: 5px; margin-right: -5px;}.claro .dijitTabCloseButtonHover {background-position: -14px;}.claro .dijitTabCloseButtonActive {background-position: -28px;}.claro .dijitTabSpacer {display: none;}.claro .dijitTab {border: 1px solid #b5bcc7; background-color: #efefef; -webkit-transition-property: background-color, border; -moz-transition-property: background-color, border; transition-property: background-color, border; -webkit-transition-duration: 0.35s; -moz-transition-duration: 0.35s; transition-duration: 0.35s; color: #494949;}.claro .dijitTabHover {border-color: #759dc0; background-color: #abd6ff; -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s; color: #000000;}.claro .dijitTabActive {border-color: #759dc0; background-color: #7dbdfa; color: #000000; -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.claro .dijitTabChecked {border-color: #b5bcc7; background-color: #cfe5fa; color: #000000;}.claro .dijitTabDisabled {background-color: #d3d3d3;}.claro .tabStripButton {background-color: transparent; border: none;}.claro .dijitTabContainerTop-tabs .dijitTab {top: 1px; margin-right: 1px; padding: 3px 6px; border-bottom-width: 0; min-width: 60px; text-align: center; background-image: url("layout/images/tabTopUnselected.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); -webkit-box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); -moz-box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04);}.claro .dijitTabContainerTop-tabs .dijitTabChecked {padding-bottom: 4px; padding-top: 9px; background-image: url("layout/images/tabTopSelected.png"); background-image: -moz-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: -webkit-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: -o-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); -webkit-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05);}.claro .dijitTabContainerBottom-tabs .dijitTab {top: -1px; margin-right: 1px; padding: 3px 6px; border-top-width: 0; min-width: 60px; text-align: center; background-image: url("layout/images/tabBottomUnselected.png"); background-repeat: repeat-x; background-position: bottom; background-image: -moz-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);}.claro .dijitTabContainerBottom-tabs .dijitTabChecked {padding-bottom: 9px; padding-top: 4px; background-image: url("layout/images/tabBottomSelected.png"); background-image: -moz-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: -webkit-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: -o-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);}.claro .dijitTabContainerLeft-tabs .dijitTab {left: 1px; margin-bottom: 1px; padding: 3px 8px 4px 4px; background-image: url("layout/images/tabLeftUnselected.png"); background-repeat: repeat-y; background-image: -moz-linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%);}.claro .dijitTabContainerLeft-tabs .dijitTabChecked {border-right-width: 0; padding-right: 9px; background-image: url("layout/images/tabLeftSelected.png"); background-image: -moz-linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: -o-linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); -webkit-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05);}.claro .dijitTabContainerRight-tabs .dijitTab {left: -1px; margin-bottom: 1px; padding: 3px 8px 4px 4px; background-image: url("layout/images/tabRightUnselected.png"); background-repeat: repeat-y; background-position: right; background-image: -moz-linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%);}.claro .dijitTabContainerRight-tabs .dijitTabChecked {padding-left: 5px; border-left-width: 0; background-image: url("layout/images/tabRightSelected.png"); background-image: -moz-linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: -webkit-linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: -o-linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); -moz-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07);}.claro .dijitTabContainerTop-tabs .dijitTab {-moz-border-radius: 2px 2px 0 0; border-radius: 2px 2px 0 0;}.claro .dijitTabContainerBottom-tabs .dijitTab {-moz-border-radius: 0 0 2px 2px; border-radius: 0 0 2px 2px;}.claro .dijitTabContainerLeft-tabs .dijitTab {-moz-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px;}.claro .dijitTabContainerRight-tabs .dijitTab {-moz-border-radius: 0 2px 2px 0; border-radius: 0 2px 2px 0;}.claro .tabStripButton {background-color: #e5f2fe; border: 1px solid #b5bcc7;}.claro .dijitTabListContainer-top .tabStripButton {padding: 4px 3px; margin-top: 7px; background-image: -moz-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%);}.claro .dijitTabListContainer-bottom .tabStripButton {padding: 4px 3px; margin-bottom: 7px; background-image: -moz-linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%);}.claro .tabStripButtonHover {background-color: #abd6ff;}.claro .tabStripButtonActive {background-color: #7dbdfa;}.claro .dijitTabStripIcon {height: 15px; width: 15px; margin: 0 auto; background: url("form/images/buttonArrows.png") no-repeat -75px 50%; background-color: transparent;}.claro .dijitTabStripSlideRightIcon {background-position: -24px 50%;}.claro .dijitTabStripMenuIcon {background-position: -51px 50%;}.claro .dijitTabListContainer-top .tabStripButtonDisabled,.claro .dijitTabListContainer-bottom .tabStripButtonDisabled {background-color: #d3d3d3; border: 1px solid #b5bcc7;}.claro .tabStripButtonDisabled .dijitTabStripSlideLeftIcon {background-position: -175px 50%;}.claro .tabStripButtonDisabled .dijitTabStripSlideRightIcon {background-position: -124px 50%;}.claro .tabStripButtonDisabled .dijitTabStripMenuIcon {background-position: -151px 50%;}.claro .dijitTabContainerNested .dijitTabListWrapper {height: auto;}.claro .dijitTabContainerNested .dijitTabContainerTop-tabs {border-bottom: solid 1px #b5bcc7; padding: 2px 2px 4px;}.claro .dijitTabContainerTabListNested .dijitTab {background-color: rgba(255, 255, 255, 0); border: none; padding: 4px; border-color: rgba(118, 157, 192, 0); -webkit-transition-property: background-color, border-color; -moz-transition-property: background-color, border-color; transition-property: background-color, border-color; -webkit-transition-duration: 0.3s; -moz-transition-duration: 0.3s; transition-duration: 0.3s; -moz-border-radius: 2px; border-radius: 2px; top: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; background-image: url("layout/images/tabNested.png") repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%);}.claro .dijitTabContainerTabListNested .dijitTabHover {background-color: #e5f2fe; border: solid 1px #cfe5fa; padding: 3px; -webkit-transition-duration: 0.2s; -moz-transition-duration: 0.2s; transition-duration: 0.2s;}.claro .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: none;}.claro .dijitTabContainerTabListNested .dijitTabActive {border: solid 1px #759dc0; padding: 3px; -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.claro .dijitTabContainerTabListNested .dijitTabChecked {padding: 3px; border: solid 1px #759dc0; background-color: #cfe5fa;}.claro .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: none; background-image: none;}.claro .dijitTabPaneWrapperNested {border: none;}.claro .dijitTabContainer .dijitTab,.claro .dijitTabContainer .tabStripButton {_background-image: none;}.claro .dijitDialog {border: 1px solid #759dc0; -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);}.claro .dijitDialogPaneContent {background: #ffffff repeat-x top left; border-top: 1px solid #759dc0; padding: 10px 8px; position: relative;}.claro .dijitDialogPaneContentArea {margin: -10px -8px; padding: 10px 8px;}.claro .dijitDialogPaneActionBar {background-color: #efefef; padding: 3px 5px 2px 7px; text-align: right; border-top: 1px solid #d3d3d3;}.claro .dijitDialogPaneContent .dijitDialogPaneActionBar {margin: 10px -8px -10px;}.claro .dijitTooltipDialog .dijitDialogPaneActionBar {-webkit-border-bottom-right-radius: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -moz-border-radius-bottomleft: 4px; margin: 10px -10px -8px;}.claro .dijitDialogPaneActionBar .dijitButton {float: none;}.claro .dijitDialogTitleBar {border: 1px solid #ffffff; border-top: none; background-color: #abd6ff; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 5px 7px 4px 7px;}.claro .dijitDialogTitle {padding: 0 1px; font-size: 1.091em; color: #000000;}.claro .dijitDialogCloseIcon {background: url("images/dialogCloseIcon.png"); background-repeat: no-repeat; position: absolute; right: 5px; height: 15px; width: 21px;}.dj_ie6 .claro .dijitDialogCloseIcon {background-image: url("images/dialogCloseIcon8bit.png");}.claro .dijitDialogCloseIconHover {background-position: -21px;}.claro .dijitDialogCloseIcon:active {background-position: -42px;}.claro .dijitTooltip,.claro .dijitTooltipDialog {background: transparent;}.dijitTooltipBelow {padding-top: 13px; padding-left: 3px; padding-right: 3px;}.dijitTooltipAbove {padding-bottom: 13px; padding-left: 3px; padding-right: 3px;}.claro .dijitTooltipContainer {background-color: #ffffff; background-image: -moz-linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); background-image: -webkit-linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); background-image: -o-linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); background-image: linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); background-position: bottom; border: 1px solid #759dc0; padding: 6px 8px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); font-size: 1em; color: #000000;}.claro .dijitTooltipConnector {border: 0; z-index: 2; background-image: url("images/tooltip.png"); background-repeat: no-repeat; width: 16px; height: 14px;}.dj_ie6 .claro .dijitTooltipConnector {background-image: url("images/tooltip8bit.png");}.claro .dijitTooltipBelow .dijitTooltipConnector {top: 0; left: 3px; background-position: -31px 0; width: 16px; height: 14px;}.claro .dijitTooltipAbove .dijitTooltipConnector {bottom: 0; left: 3px; background-position: -15px 0; width: 16px; height: 14px;}.dj_ie7 .claro .dijitTooltipAbove .dijitTooltipConnector,.dj_ie6 .claro .dijitTooltipAbove .dijitTooltipConnector {bottom: -1px;}.claro .dijitTooltipABRight .dijitTooltipConnector {left: auto; right: 3px;}.claro .dijitTooltipLeft {padding-right: 14px;}.claro .dijitTooltipLeft .dijitTooltipConnector {right: 0; background-position: 0 0; width: 16px; height: 14px;}.claro .dijitTooltipRight {padding-left: 14px;}.claro .dijitTooltipRight .dijitTooltipConnector {left: 0; background-position: -48px 0; width: 16px; height: 14px;}.claro .dijitDialogUnderlay {background: #ffffff;}.claro .dijitAccordionContainer {border: none;}.claro .dijitAccordionInnerContainer {background-color: #efefef; border: solid 1px #b5bcc7; margin-bottom: 1px; -webkit-transition-property: background-color, border; -moz-transition-property: background-color, border; transition-property: background-color, border; -webkit-transition-duration: 0.3s; -moz-transition-duration: 0.3s; transition-duration: 0.3s; -webkit-transition-timing-function: linear; -moz-transition-timing-function: linear; transition-timing-function: linear;}.claro .dijitAccordionTitle {background-color: transparent; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 5px 7px 2px 7px; min-height: 17px; color: #494949;}.claro .dijitAccordionContainer .dijitAccordionChildWrapper {background-color: #ffffff; border: 1px solid #759dc0; margin: 0 2px 2px;}.claro .dijitAccordionContainer .dijitAccordionContainer-child {padding: 9px;}.claro .dijitAccordionInnerContainerHover {border: 1px solid #759dc0; background-color: #abd6ff; -webkit-transition-duration: 0.2s; -moz-transition-duration: 0.2s; transition-duration: 0.2s;}.claro .dijitAccordionInnerContainerHover .dijitAccordionTitle {color: #000000;}.claro .dijitAccordionInnerContainerActive {border: 1px solid #759dc0; background-color: #7dbdfa; -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.claro .dijitAccordionInnerContainerActive .dijitAccordionTitle {background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none; color: #000000;}.claro .dijitAccordionInnerContainerSelected {border-color: #759dc0; background-color: #cfe5fa;}.claro .dijitAccordionInnerContainerSelected .dijitAccordionTitle {color: #000000; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitContentPane {padding: 8px;}.claro .dijitTabContainerTop-dijitContentPane,.claro .dijitTabContainerLeft-dijitContentPane,.claro .dijitTabContainerBottom-dijitContentPane,.claro .dijitTabContainerRight-dijitContentPane,.claro .dijitAccordionContainer-dijitContentPane {background-color: #ffffff; padding: 8px;}.claro .dijitSplitContainer-dijitContentPane,.claro .dijitBorderContainer-dijitContentPane {background-color: #ffffff; padding: 8px;}.claro .dijitCalendar {border: solid 1px #b5bcc7; -moz-border-radius: 4px; border-radius: 4px; background-color: #cfe5fa; background-image: url("images/calendar.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); text-align: center; padding: 6px 5px 3px 5px;}.dj_ie6 .claro .dijitCalendar {background-image: none;}.claro .dijitCalendar img {border: none;}.claro .dijitCalendarHover,.claro .dijitCalendar:hover,.claro .dijitCalendarActive {background-color: #abd6ff; border: solid 1px #759dc0;}.claro .dijitCalendar table {border-collapse: separate;}.claro .dijitCalendarMonthContainer th {text-align: center; padding-bottom: 4px; vertical-align: middle;}.claro .dijitCalendarMonthLabel {color: #000000; font-size: 1.091em; padding: 0 4px;}.claro .dijitCalendarIncrementControl {width: 18px; height: 16px; background-image: url("images/calendarArrows.png"); background-repeat: no-repeat;}.dj_ie6 .claro .dijitCalendarIncrementControl {background-image: url("images/calendarArrows8bit.png");}.claro .dijitCalendarIncrease {background-position: -18px 0;}.claro .dijitCalendarArrowHover .dijitCalendarDecrease,.claro .dijitCalendarArrow:hover .dijitCalendarDecrease {background-position: -36px 0;}.claro .dijitCalendarArrowHover .dijitCalendarIncrease,.claro .dijitCalendarArrow:hover .dijitCalendarIncrease {background-position: -55px 0;}.claro .dijitCalendarArrowActive .dijitCalendarDecrease,.claro .dijitCalendarArrow:active .dijitCalendarDecrease {background-position: -72px 0;}.claro .dijitCalendarArrowActive .dijitCalendarIncrease,.claro .dijitCalendarArrow:active .dijitCalendarIncrease {background-position: -91px 0;}.claro .dijitA11ySideArrow {display: none;}.claro .dijitCalendarDayLabelTemplate {padding-bottom: 0; text-align: center; border-bottom: 1px solid #b5bcc7; padding: 0 3px 2px;}.claro .dijitCalendarDayLabel {padding: 0 4px 0 4px; font-weight: bold; font-size: 0.909em; text-align: center; color: #000000;}.claro .dijitCalendarDateTemplate {background-color: #ffffff; border-bottom: 1px solid #d3d3d3; padding-top: 0; font-size: 0.909em; font-family: Arial; font-weight: bold; letter-spacing: .05em; text-align: center; color: #000000;}.dj_ie6 .claro .dijitCalendarDateTemplate {background-image: none;}.claro .dijitCalendarPreviousMonth,.claro .dijitCalendarNextMonth {background-color: #e5f2fe; background-image: none; border-bottom: solid 1px #d3d3d3;}.claro .dijitCalendarDateTemplate .dijitCalendarDateLabel {text-decoration: none; display: block; padding: 3px 5px 3px 4px; border: solid 1px #ffffff; background-color: rgba(171, 212, 251, 0); -webkit-transition-property: background-color, border; -moz-transition-property: background-color, border; transition-property: background-color, border; -webkit-transition-duration: 0.35s; -moz-transition-duration: 0.35s; transition-duration: 0.35s;}.claro .dijitCalendarPreviousMonth .dijitCalendarDateLabel,.claro .dijitCalendarNextMonth .dijitCalendarDateLabel {color: #759dc0; border-color: #e5f2fe;}.claro .dijitCalendarYearContainer {vertical-align: middle;}.claro .dijitCalendarYearControl {padding: 1px 2px 2px 2px;}.claro .dijitCalendarYearLabel {padding: 2px 0 0 0; margin: 0; font-size: 1.17em;}.claro .dijitCalendarYearLabel span {vertical-align: middle;}.claro .dijitCalendarSelectedYear {padding: 0 3px;}.claro .dijitCalendarNextYear,.claro .dijitCalendarPreviousYear {padding: 1px 6px 1px 6px; font-size: 0.909em;}.claro .dijitCalendarSelectedYear {font-size: 1.091em; color: #000000;}.claro .dijitCalendarHoveredDate .dijitCalendarDateLabel,.claro .dijitCalendarLite .dijitCalendarEnabledDate:hover .dijitCalendarDateLabel {background-color: #abd6ff; border: solid 1px #759dc0; color: #000000; -webkit-transition-duration: 0.2s; -moz-transition-duration: 0.2s; transition-duration: 0.2s;}.claro .dijitCalendarNextYearHover,.claro .dijitCalendarNextYear:hover,.claro .dijitCalendarPreviousYearHover,.claro .dijitCalendarPreviousYear:hover {color: #000000; border: solid 1px #ffffff; padding: 0 5px 0 5px; background-color: #e5f2fe;}.claro .dijitCalendarNextYearActive,.claro .dijitCalendarNextYear:active .claro .dijitCalendarPreviousYearActive,.claro .dijitCalendarPreviousYear:active {border: solid 1px #759dc0; padding: 0 5px 0 5px; background-color: #7dbdfa;}.claro .dijitCalendarActiveDate .dijitCalendarDateLabel,.claro .dijitCalendarEnabledDate:active .dijitCalendarDateLabel {background-color: #7dbdfa; border: solid 1px #ffffff; -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.dj_ie6 .claro .dijitCalendarActiveDate .dijitCalendarDateLabel {background-image: none;}.claro .dijitCalendarSelectedDate .dijitCalendarDateLabel {color: #000000; background-color: #abd6ff; border-color: #759dc0;}.claro .dijitCalendarDisabledDate .dijitCalendarDateLabel {color: #818181; text-decoration: line-through;}.claro .dijitCalendar .dijitDropDownButton {margin: 0;}.claro .dijitCalendar .dijitButtonText {padding: 1px 0 3px; margin-right: -4px;}.claro .dijitCalendar .dijitDropDownButton .dijitButtonNode {padding: 0 3px 0 2px; border: solid 1px #b5bcc7; -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); box-shadow: 0 0 0 rgba(0, 0, 0, 0); background-color: transparent; background-image: none;}.claro .dijitCalendar .dijitDropDownButtonHover .dijitButtonNode,.claro .dijitCalendar .dijitDropDownButton:hover .dijitButtonNode {background-color: #e5f2fe; border: solid 1px #ffffff;}.claro .dijitCalendarMonthMenu {border-color: #759dc0; background-color: #ffffff; text-align: center; background-image: none;}.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabel {border-top: solid 1px #ffffff; border-bottom: solid 1px #ffffff; padding: 2px 0;}.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover,.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabelActive {border-color: #759dc0; border-width: 1px 0; background-color: #abd6ff; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); background-image: linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr= #ffffff , endColorstr= #abd6ff );}.claro .dijitMenuBar {border: 1px solid #b5bcc7; margin: 0; padding: 0; background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitMenu {background-color: #ffffff; border: 1px solid #759dc0;}.claro .dijitMenuItem {color: #000000;}.claro .dijitMenuBar .dijitMenuItem {padding: 6px 10px 7px; margin: -1px;}.claro .dijitMenuBar .dijitMenuItemHover,.claro .dijitMenuBar .dijitMenuItemSelected {border: solid 1px #759dc0; padding: 5px 9px 6px;}.claro .dijitMenuTable {border-collapse: separate; border-spacing: 0 0; padding: 0;}.claro .dijitMenu .dijitMenuItem td,.claro .dijitComboBoxMenu .dijitMenuItem {padding: 2px; border-width: 1px 0 1px 0; border-style: solid; border-color: #ffffff;}.claro .dijitMenu .dijitMenuItemHover td,.claro .dijitMenu .dijitMenuItemSelected td,.claro .dijitMenuItemHover,.claro .dijitComboBoxMenu .dijitMenuItemHover,.claro .dijitMenuItemSelected {border-color: #759dc0; background-color: #abd6ff; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitMenuItemActive {background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.dj_ie .claro .dijitMenuActive .dijitMenuItemHover,.dj_ie .claro .dijitMenuActive .dijitMenuItemSelected,.dj_ie .claro .dijitMenuPassive .dijitMenuItemHover,.dj_ie .claro .dijitMenuPassive .dijitMenuItemSelected {padding-top: 6px; padding-bottom: 5px; margin-top: -3px;}.claro td.dijitMenuItemIconCell {padding: 2px; margin: 0 0 0 4px;}.claro td.dijitMenuItemLabel {padding-top: 5px; padding-bottom: 5px;}.claro .dijitMenuExpand {width: 7px; height: 7px; background-image: url("images/spriteArrows.png"); background-position: -14px 0; margin-right: 3px; margin-bottom: 4px;}.claro .dijitMenuSeparatorTop {height: auto; margin-top: 1px; border-bottom: 1px solid #b5bcc7;}.claro .dijitMenuSeparatorBottom {height: auto; margin-bottom: 1px;}.claro .dijitCheckedMenuItem .dijitMenuItemIcon,.claro .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("form/images/checkboxRadioButtonStates.png"); background-repeat: no-repeat; background-position: -15px 50%; width: 15px; height: 16px;}.dj_ie6 .claro .dijitCheckedMenuItem .dijitMenuItemIcon,.dj_ie6 .claro .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("form/images/checkboxAndRadioButtons_IE6.png");}.claro .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {background-position: 0 50%;}.claro .dijitRadioMenuItem .dijitMenuItemIcon {background-position: -105px 50%;}.claro .dijitRadioMenuItemChecked .dijitMenuItemIcon {background-position: -90px 50%;}.claro .dijitComboBoxMenu {margin-left: 0; background-image: none;}.claro .dijitMenu .dijitMenuItemSelected td,.claro .dijitComboBoxMenu .dijitMenuItemSelected {color: #000000; border-color: #759dc0; background-color: #abd6ff;}.claro .dijitComboBoxMenuActive .dijitMenuItemSelected {background-color: #7dbdfa;}.claro .dijitMenuPreviousButton,.claro .dijitMenuNextButton {font-style: italic;}.claro .dijitSliderBar {border-style: solid; outline: 1px;}.claro .dijitSliderFocused .dijitSliderBar {border-color: #759dc0;}.claro .dijitSliderHover .dijitSliderBar {border-color: #759dc0;}.claro .dijitSliderDisabled .dijitSliderBar {background-image: none; border-color: #d3d3d3;}.claro .dijitRuleLabelsContainer {color: #000000;}.claro .dijitRuleLabelsContainerH {padding: 2px 0;}.claro .dijitSlider .dijitSliderProgressBarH,.claro .dijitSlider .dijitSliderLeftBumper {border-color: #b5bcc7; background-color: #cfe5fa; background-image: -moz-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px); background-image: -webkit-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px); background-image: -o-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px); background-image: linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px);}.claro .dijitSlider .dijitSliderRemainingBarH,.claro .dijitSlider .dijitSliderRightBumper {border-color: #b5bcc7; background-color: #ffffff;}.claro .dijitSliderRightBumper {border-right: solid 1px #b5bcc7;}.claro .dijitSliderLeftBumper {border-left: solid 1px #b5bcc7;}.claro .dijitSliderHover .dijitSliderProgressBarH,.claro .dijitSliderHover .dijitSliderLeftBumper {background-color: #abd6ff; border-color: #759dc0;}.claro .dijitSliderHover .dijitSliderRemainingBarH,.claro .dijitSliderHover .dijitSliderRightBumper {background-color: #ffffff; border-color: #759dc0;}.claro .dijitSliderFocused .dijitSliderProgressBarH,.claro .dijitSliderFocused .dijitSliderLeftBumper {background-color: #abd6ff; border-color: #759dc0; -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2);}.claro .dijitSliderFocused .dijitSliderRemainingBarH,.claro .dijitSliderFocused .dijitSliderRightBumper {background-color: #ffffff; border-color: #759dc0; -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2);}.claro .dijitSliderDisabled .dijitSliderProgressBarH,.claro .dijitSliderDisabled .dijitSliderLeftBumper {background-color: #d3d3d3; background-image: none;}.claro .dijitSliderDisabled .dijitSliderRemainingBarH,.claro .dijitSliderDisabled .dijitSliderRightBumper {background-color: #efefef;}.claro .dijitRuleLabelsContainerV {padding: 0 2px;}.claro .dijitSlider .dijitSliderProgressBarV,.claro .dijitSlider .dijitSliderBottomBumper {border-color: #b5bcc7; background-color: #cfe5fa; background-image: -moz-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px); background-image: -webkit-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px); background-image: -o-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px); background-image: linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px);}.claro .dijitSlider .dijitSliderRemainingBarV,.claro .dijitSlider .dijitSliderTopBumper {border-color: #b5bcc7; background-color: #ffffff;}.claro .dijitSliderBottomBumper {border-bottom: solid 1px #b5bcc7;}.claro .dijitSliderTopBumper {border-top: solid 1px #b5bcc7;}.claro .dijitSliderHover .dijitSliderProgressBarV,.claro .dijitSliderHover .dijitSliderBottomBumper {background-color: #abd6ff; border-color: #759dc0;}.claro .dijitSliderHover .dijitSliderRemainingBarV,.claro .dijitSliderHover .dijitSliderTopBumper {background-color: #ffffff; border-color: #759dc0;}.claro .dijitSliderFocused .dijitSliderProgressBarV,.claro .dijitSliderFocused .dijitSliderBottomBumper {background-color: #abd6ff; border-color: #759dc0; -webkit-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2);}.claro .dijitSliderFocused .dijitSliderRemainingBarV,.claro .dijitSliderFocused .dijitSliderTopBumper {background-color: #ffffff; border-color: #759dc0; -webkit-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2);}.claro .dijitSliderDisabled .dijitSliderProgressBarV,.claro .dijitSliderDisabled .dijitSliderBottomBumper {background-color: #d3d3d3;}.claro .dijitSliderDisabled .dijitSliderRemainingBarV,.claro .dijitSliderDisabled .dijitSliderTopBumper {background-color: #efefef;}.claro .dijitSliderImageHandleH {border: 0; width: 18px; height: 16px; background-image: url("form/images/sliderThumbs.png"); background-repeat: no-repeat; background-position: 0 0;}.claro .dijitSliderHover .dijitSliderImageHandleH {background-position: -18px 0;}.claro .dijitSliderFocused .dijitSliderImageHandleH {background-position: -36px 0;}.claro .dijitSliderProgressBarH .dijitSliderThumbHover {background-position: -36px 0;}.claro .dijitSliderProgressBarH .dijitSliderThumbActive {background-position: -36px 0;}.claro .dijitSliderReadOnly .dijitSliderImageHandleH,.claro .dijitSliderDisabled .dijitSliderImageHandleH {background-position: -54px 0;}.claro .dijitSliderImageHandleV {border: 0; width: 18px; height: 16px; background-image: url("form/images/sliderThumbs.png"); background-repeat: no-repeat; background-position: -289px 0;}.claro .dijitSliderHover .dijitSliderImageHandleV {background-position: -307px 0;}.claro .dijitSliderFocused .dijitSliderImageHandleV {background-position: -325px 0;}.claro .dijitSliderProgressBarV .dijitSliderThumbHover {background-position: -325px 0;}.claro .dijitSliderProgressBarV .dijitSliderThumbActive {background-position: -325px 0;}.claro .dijitSliderReadOnly .dijitSliderImageHandleV,.claro .dijitSliderDisabled .dijitSliderImageHandleV {background-position: -343px 0;}.claro .dijitSliderButtonContainerH {padding: 1px 3px 1px 2px;}.claro .dijitSliderButtonContainerV {padding: 3px 1px 2px 1px;}.claro .dijitSliderDecrementIconH,.claro .dijitSliderIncrementIconH,.claro .dijitSliderDecrementIconV,.claro .dijitSliderIncrementIconV {background-image: url("form/images/commonFormArrows.png"); background-repeat: no-repeat; background-color: #efefef; -moz-border-radius: 2px; border-radius: 2px; border: solid 1px #b5bcc7; font-size: 1px;}.claro .dijitSliderDecrementIconH,.claro .dijitSliderIncrementIconH {height: 12px; width: 9px;}.claro .dijitSliderDecrementIconV,.claro .dijitSliderIncrementIconV {height: 9px; width: 12px;}.claro .dijitSliderActive .dijitSliderDecrementIconH,.claro .dijitSliderActive .dijitSliderIncrementIconH,.claro .dijitSliderActive .dijitSliderDecrementIconV,.claro .dijitSliderActive .dijitSliderIncrementIconV,.claro .dijitSliderHover .dijitSliderDecrementIconH,.claro .dijitSliderHover .dijitSliderIncrementIconH,.claro .dijitSliderHover .dijitSliderDecrementIconV,.claro .dijitSliderHover .dijitSliderIncrementIconV {border: solid 1px #759dc0; background-color: #ffffff;}.claro .dijitSliderDecrementIconH {background-position: -357px 50%;}.claro .dijitSliderActive .dijitSliderDecrementIconH .claro .dijitSliderHover .dijitSliderDecrementIconH {background-position: -393px 50%;}.claro .dijitSliderIncrementIconH {background-position: -251px 50%;}.claro .dijitSliderActive .dijitSliderIncrementIconH .claro .dijitSliderHover .dijitSliderIncrementIconH {background-position: -283px 50%;}.claro .dijitSliderDecrementIconV {background-position: -38px 50%;}.claro .dijitSliderActive .dijitSliderDecrementIconV .claro .dijitSliderHover .dijitSliderDecrementIconV {background-position: -73px 50%;}.claro .dijitSliderIncrementIconV {background-position: -143px 49%;}.claro .dijitSliderActive .dijitSliderIncrementIconV .claro .dijitSliderHover .dijitSliderIncrementIconV {background-position: -178px 49%;}.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonHover,.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonHover,.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonHover,.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonHover {background-color: #cfe5fa;}.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonActive,.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonActive,.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonActive,.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonActive {background-color: #abd6ff; border-color: #759dc0;}.claro .dijitSliderButtonInner {visibility: hidden;}.claro .dijitSliderDisabled .dijitSliderBar {border-color: #d3d3d3;}.claro .dijitSliderReadOnly *,.claro .dijitSliderDisabled * {border-color: #d3d3d3; color: #818181;}.claro .dijitSliderReadOnly .dijitSliderDecrementIconH,.claro .dijitSliderDisabled .dijitSliderDecrementIconH {background-position: -321px 50%; background-color: #efefef;}.claro .dijitSliderReadOnly .dijitSliderIncrementIconH,.claro .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -215px 50%; background-color: #efefef;}.claro .dijitSliderReadOnly .dijitSliderDecrementIconV,.claro .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -3px 49%; background-color: #efefef;}.claro .dijitSliderReadOnly .dijitSliderIncrementIconV,.claro .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -107px 49%; background-color: #efefef;}.claro .dijitColorPalette {border: 1px solid #b5bcc7; background: #ffffff; -moz-border-radius: 0; border-radius: 0;}.claro .dijitColorPalette .dijitPaletteImg {border: 1px solid #d3d3d3;}.claro .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000000;}.claro .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.claro .dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000000;}.claro .dijitInlineEditBoxDisplayMode {border: 1px solid transparent;}.claro .dijitInlineEditBoxDisplayModeHover {background-color: #e5f2fe; border: solid 1px #759dc0;}.dj_ie6 .claro .dijitInlineEditBoxDisplayMode {border: none;}.claro .dijitProgressBar {margin: 2px 0 2px 0;}.claro .dijitProgressBarEmpty {background-color: #ffffff; border-color: #759dc0;}.claro .dijitProgressBarTile {background-color: #abd6ff; background-image: url("images/progressBarFull.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); background-attachment: scroll;}.dj_ie6 .claro .dijitProgressBarTile {background-image: none;}.claro .dijitProgressBarFull {border: 0px solid #759dc0; border-right-width: 1px; -webkit-transition-property: width; -moz-transition-property: width; transition-property: width; -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s;}.claro .dijitProgressBarLabel {color: #000000;}.claro .dijitProgressBarIndeterminate .dijitProgressBarTile {background: #efefef url("images/progressBarAnim.gif") repeat-x top;}.claro .dijitTimePicker .dijitButtonNode {padding: 0 0; -moz-border-radius: 0; border-radius: 0;}.claro .dijitTimePicker {border: 1px #b5bcc7 solid; border-top: none; border-bottom: none; background-color: #fff;}.claro .dijitTimePickerItem {background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; border-top: solid 1px #b5bcc7; border-bottom: solid 1px #b5bcc7; margin-top: -1px;}.claro .dijitTimePickerTick {color: #818181; background-color: #efefef; font-size: 0.818em;}.claro .dijitTimePickerMarker {background-color: #e5f2fe; font-size: 1em; white-space: nowrap;}.claro .dijitTimePickerTickHover,.claro .dijitTimePickerMarkerHover,.claro .dijitTimePickerMarkerSelected,.claro .dijitTimePickerTickSelected {background-color: #7dbdfa; color: #000000;}.claro .dijitTimePickerMarkerSelected,.claro .dijitTimePickerTickSelected {font-size: 1em;}.claro .dijitTimePickerTick .dijitTimePickerItemInner {padding: 1px; margin: 0;}.claro .dijitTimePicker .dijitButtonNode {border-left: none; border-right: none; border-color: #b5bcc7; background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitTimePicker .dijitArrowButtonInner {height: 100%; background-image: url("form/images/commonFormArrows.png"); background-repeat: no-repeat; background-position: -140px 45%;}.claro .dijitTimePicker .dijitDownArrowButton .dijitArrowButtonInner {background-position: -35px 45%;}.claro .dijitTimePicker .dijitUpArrowHover,.claro .dijitTimePicker .dijitDownArrowHover {background-color: #abd6ff;}.claro .dijitTimePicker .dijitUpArrowHover .dijitArrowButtonInner {background-position: -175px 45%;}.claro .dijitTimePicker .dijitDownArrowHover .dijitArrowButtonInner {background-position: -70px 45%;}.claro .dijitBorderContainer {padding: 5px;}.claro .dijitSplitContainer-child,.claro .dijitBorderContainer-child {border: 1px #b5bcc7 solid;}.claro .dijitBorderContainer-dijitTabContainerTop,.claro .dijitBorderContainer-dijitTabContainerBottom,.claro .dijitBorderContainer-dijitTabContainerLeft,.claro .dijitBorderContainer-dijitTabContainerRight,.claro .dijitBorderContainer-dijitAccordionContainer {border: none;}.claro .dijitBorderContainer-dijitBorderContainer {border: 0; padding: 0;}.claro .dijitSplitterH,.claro .dijitGutterH {background: none; border: 0; height: 5px;}.dj_ios .claro .dijitSplitterH,.dj_android .claro .dijitSplitterH {height: 11px;}.claro .dijitSplitterH .dijitSplitterThumb {background: #b5bcc7 none; height: 1px; top: 2px; width: 19px;}.dj_ios .claro .dijitSplitterH .dijitSplitterThumb,.dj_android .claro .dijitSplitterH .dijitSplitterThumb {top: 5px;}.claro .dijitSplitterV,.claro .dijitGutterV {background: none; border: 0; width: 5px; margin: 0;}.dj_ios .claro .dijitSplitterV,.dj_android .claro .dijitSplitterV {width: 11px;}.claro .dijitSplitterV .dijitSplitterThumb {background: #b5bcc7 none; height: 19px; left: 2px; width: 1px; margin: 0;}.dj_ios .claro .dijitSplitterV .dijitSplitterThumb,.dj_android .claro .dijitSplitterV .dijitSplitterThumb {left: 5px;}.claro .dijitSplitterHHover,.claro .dijitSplitterVHover {font-size: 1px; background-color: #cfe5fa;}.claro .dijitSplitterHHover {background-image: -moz-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: -webkit-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: -o-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%);}.claro .dijitSplitterVHover {background-image: -moz-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: -webkit-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: -o-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%);}.claro .dijitSplitterHHover .dijitSplitterThumb,.claro .dijitSplitterVHover .dijitSplitterThumb {background: #759dc0 none;}.claro .dijitSplitterHActive,.claro .dijitSplitterVActive {font-size: 1px; background-color: #abd6ff; background-image: none;}.claro .dijitTreeNode {zoom: 1;}.claro .dijitTreeIsRoot {background-image: none;}.claro .dijitTreeRow,.claro .dijitTreeNode .dojoDndItemBefore,.claro .dijitTreeNode .dojoDndItemAfter {padding: 4px 0 2px 0; background-color: none; background-color: transparent; background-color: rgba(171, 214, 255, 0); background-position: 0 0; background-repeat: repeat-x; border: solid 0 transparent; color: #000000; -webkit-transition-property: background-color, border-color; -moz-transition-property: background-color, border-color; transition-property: background-color, border-color; -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s; -webkit-transition-timing-function: ease-out; -moz-transition-timing-function: ease-out; transition-timing-function: ease-out;}.claro .dijitTreeRowSelected {background-color: #cfe5fa; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 3px 0 1px; border-color: #759dc0; border-width: 1px 0; color: #000000;}.claro .dijitTreeRowHover {background-color: #abd6ff; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 3px 0 1px; border-color: #759dc0; border-width: 1px 0; color: #000000; -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s;}.claro .dijitTreeRowActive {background-color: #7dbdfa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 3px 0 1px; border-color: #759dc0; border-width: 1px 0; color: #000000;}.claro .dijitTreeRowFocused {background-repeat: repeat;}.claro .dijitTreeExpando {background-image: url("images/treeExpandImages.png"); width: 16px; height: 16px; background-position: -35px 0;}.dj_ie6 .claro .dijitTreeExpando {background-image: url("images/treeExpandImages8bit.png");}.claro .dijitTreeRowHover .dijitTreeExpandoOpened {background-position: -53px 0;}.claro .dijitTreeExpandoClosed {background-position: 1px 0;}.claro .dijitTreeRowHover .dijitTreeExpandoClosed {background-position: -17px 0;}.claro .dijitTreeExpandoLeaf,.dj_ie6 .claro .dijitTreeExpandoLeaf {background-image: none;}.claro .dijitTreeExpandoLoading {background-image: url("../../icons/images/loadingAnimation.gif"); background-position: 0 0;}.claro .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {border-top: 2px solid #759dc0;}.claro .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {border-bottom: 2px solid #759dc0;} .claro .dijitToolbar {border-bottom: 1px solid #b5bcc7; background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 2px 0 2px 4px; zoom: 1;}.claro .dijitToolbar label {padding: 0 3px 0 6px;}.claro .dijitToolbar .dijitButton .dijitButtonNode,.claro .dijitToolbar .dijitDropDownButton .dijitButtonNode,.claro .dijitToolbar .dijitComboButton .dijitButtonNode,.claro .dijitToolbar .dijitToggleButton .dijitButtonNode,.claro .dijitToolbar .dijitComboBox .dijitButtonNode {border-width: 0; padding: 2px; -moz-border-radius: 2px; border-radius: 2px; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; -webkit-transition-property: background-color; -moz-transition-property: background-color; transition-property: background-color; -webkit-transition-duration: 0.3s; -moz-transition-duration: 0.3s; transition-duration: 0.3s; background-color: rgba(171, 214, 255, 0); background-image: none;}.dj_ie .claro .dijitToolbar .dijitButton .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitDropDownButton .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitToggleButton .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitComboBox .dijitButtonNode {background-color: transparent;}.dj_ie .claro .dijitToolbar .dijitButtonHover .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNodeHover,.dj_ie .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover,.dj_ie .claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode {background-color: #abd6ff;}.dj_ie .claro .dijitToolbar .dijitButtonActive .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode {background-color: #abd6ff;}.claro .dijitToolbar .dijitComboButton .dijitStretch {-moz-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px;}.claro .dijitToolbar .dijitComboButton .dijitArrowButton {-moz-border-radius: 0 2px 2px 0; border-radius: 0 2px 2px 0;}.claro .dijitToolbar .dijitComboBox .dijitButtonNode {padding: 0;}.claro .dijitToolbar .dijitButtonHover .dijitButtonNode,.claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode,.claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode,.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode {border-width: 1px; background-color: #abd6ff; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 1px;}.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode,.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton {background-color: #f3ffff;}.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNodeHover,.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButtonHover {background-color: #abd6ff;}.claro .dijitToolbar .dijitButtonActive .dijitButtonNode,.claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode,.claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode {border-width: 1px; background-color: #7dbdfa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 1px;}.claro .dijitToolbar .dijitComboButtonActive {-webkit-transition-duration: 0.2s; -moz-transition-duration: 0.2s; transition-duration: 0.2s; border-width: 1px; padding: 0;}.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode,.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton {background-color: #f3ffff; padding: 2px;}.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNodeActive {background-color: #7dbdfa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButtonActive {background-color: #7dbdfa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton,.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton {border-left-width: 0;}.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton {padding-left: 2px;}.claro .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode {margin: 0; border-width: 1px; border-style: solid; background-image: none; border-color: #759dc0; background-color: #ffffff; padding: 1px;}.claro .dijitToolbarSeparator {background: url("../../icons/images/editorIconsEnabled.png");}.claro .dijitDisabled .dijitToolbar {background: none; background-color: #efefef; border-bottom: 1px solid #d3d3d3;}.claro .dijitToolbar .dijitComboBoxDisabled .dijitArrowButtonInner {background-position: 0 50%;}.claro .dijitEditorIFrameContainer {padding: 3px 3px 1px 10px;}.claro .dijitEditorIFrame {background-color: #ffffff;}.claro .dijitEditor {border: 1px solid #b5bcc7;}.claro .dijitEditor .dijitEditorIFrameContainer {background-color: #ffffff; background-repeat: repeat-x;}.claro .dijitEditorHover .dijitEditorIFrameContainer,.claro .dijitEditorHover .dijitEditorIFrameContainer .dijitEditorIFrame {background-color: #e5f2fe;}.claro .dijitEditorFocused .dijitEditorIFrameContainer,.claro .dijitEditorFocused .dijitEditorIFrameContainer .dijitEditorIFrame {background-color: #ffffff;}.claro .dijitEditorHover .dijitEditorIFrameContainer,.claro .dijitEditorFocused .dijitEditorIFrameContainer {background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px);}.claro .dijitEditorDisabled {border: 1px solid #d3d3d3; color: #818181;}.claro .dijitDisabled .dijitEditorIFrame,.claro .dijitDisabled .dijitEditorIFrameContainer,.claro .dijitDisabled .dijitEditorIFrameContainer .dijitEditorIFrame {background-color: #efefef; background-image: none;}.dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIconSep {background-position: 0;}.dijitEditorIconSave {background-position: -18px;}.dijitEditorIconPrint {background-position: -36px;}.dijitEditorIconCut {background-position: -54px;}.dijitEditorIconCopy {background-position: -72px;}.dijitEditorIconPaste {background-position: -90px;}.dijitEditorIconDelete {background-position: -108px;}.dijitEditorIconCancel {background-position: -126px;}.dijitEditorIconUndo {background-position: -144px;}.dijitEditorIconRedo {background-position: -162px;}.dijitEditorIconSelectAll {background-position: -180px;}.dijitEditorIconBold {background-position: -198px;}.dijitEditorIconItalic {background-position: -216px;}.dijitEditorIconUnderline {background-position: -234px;}.dijitEditorIconStrikethrough {background-position: -252px;}.dijitEditorIconSuperscript {background-position: -270px;}.dijitEditorIconSubscript {background-position: -288px;}.dijitEditorIconJustifyCenter {background-position: -306px;}.dijitEditorIconJustifyFull {background-position: -324px;}.dijitEditorIconJustifyLeft {background-position: -342px;}.dijitEditorIconJustifyRight {background-position: -360px;}.dijitEditorIconIndent {background-position: -378px;}.dijitEditorIconOutdent {background-position: -396px;}.dijitEditorIconListBulletIndent {background-position: -414px;}.dijitEditorIconListBulletOutdent {background-position: -432px;}.dijitEditorIconListNumIndent {background-position: -450px;}.dijitEditorIconListNumOutdent {background-position: -468px;}.dijitEditorIconTabIndent {background-position: -486px;}.dijitEditorIconLeftToRight {background-position: -504px;}.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir {background-position: -522px;}.dijitEditorIconBackColor {background-position: -540px;}.dijitEditorIconForeColor {background-position: -558px;}.dijitEditorIconHiliteColor {background-position: -576px;}.dijitEditorIconNewPage {background-position: -594px;}.dijitEditorIconInsertImage {background-position: -612px;}.dijitEditorIconInsertTable {background-position: -630px;}.dijitEditorIconSpace {background-position: -648px;}.dijitEditorIconInsertHorizontalRule {background-position: -666px;}.dijitEditorIconInsertOrderedList {background-position: -684px;}.dijitEditorIconInsertUnorderedList {background-position: -702px;}.dijitEditorIconCreateLink {background-position: -720px;}.dijitEditorIconUnlink {background-position: -738px;}.dijitEditorIconViewSource {background-position: -756px;}.dijitEditorIconRemoveFormat {background-position: -774px;}.dijitEditorIconFullScreen {background-position: -792px;}.dijitEditorIconWikiword {background-position: -810px;} .claro .dijitTitlePaneTitle {background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; border: 1px solid #b5bcc7; padding: 0 7px 3px 7px; min-height: 17px; color: #494949;}.claro .dijitFieldset {-moz-border-radius: 4px; border-radius: 4px;}.claro .dijitTitlePaneTitleOpen,.claro .dijitTitlePaneTitleFixedOpen {background-color: #cfe5fa; color: #000000;}.claro .dijitTitlePaneTitleHover {background-color: #abd6ff; border-color: #759dc0;}.claro .dijitTitlePaneTitleActive {background-color: #7dbdfa; border-color: #759dc0; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitTitlePaneTitleFocus {margin-top: 3px; padding-bottom: 2px;}.claro .dijitTitlePane .dijitArrowNode,.claro .dijitFieldset .dijitArrowNode {background-image: url("images/spriteArrows.png"); background-repeat: no-repeat; height: 8px; width: 7px;}.claro .dijitTitlePaneTitleOpen .dijitArrowNode,.claro .dijitFieldsetTitleOpen .dijitArrowNode {background-position: 0 0;}.claro .dijitTitlePaneTitleClosed .dijitArrowNode,.claro .dijitFieldsetTitleClosed .dijitArrowNode {background-position: -14px 0;}.claro .dijitTitlePaneContentOuter {background: #ffffff; border: 1px solid #b5bcc7; border-top: none;}.claro .dijitTitlePaneContentInner {padding: 10px;}.claro .dijitFieldsetContentInner {padding: 4px;}.claro .dijitTitlePaneTextNode,.claro .dijitFieldsetLegendNode {margin-left: 4px; margin-right: 4px; vertical-align: text-top;}.claro .dijitSpinnerButtonContainer {overflow: hidden; position: relative; width: auto; padding: 0 2px;}.claro .dijitSpinnerButtonContainer .dijitSpinnerButtonInner {border-width: 1px 0; border-style: solid none;}.claro .dijitSpinner .dijitArrowButton {width: auto; background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; overflow: hidden;}.dj_iequirks .claro .dijitSpinner .dijitArrowButton {overflow: visible;}.claro .dijitSpinner .dijitSpinnerButtonInner {width: 15px;}.claro .dijitSpinner .dijitArrowButtonInner {border: solid 1px #ffffff; border-bottom-width: 0; background-image: url("form/images/commonFormArrows.png"); background-repeat: no-repeat; height: 100%; width: 15px; padding-left: 1px; padding-right: 1px; background-position: -139px center; display: block; margin: -1px 0 -1px 0;}.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner,.dj_ie6 .claro .dijitSpinner .dijitArrowButtonInner,.dj_ie7 .claro .dijitSpinner .dijitArrowButtonInner,.dj_ie8 .claro .dijitSpinner .dijitArrowButtonInner {margin-top: 0;}.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner {width: 19px;}.claro .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {background-position: -34px;}.claro .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding: 0;}.claro .dijitUpArrowButtonActive,.claro .dijitDownArrowButtonActive {background-color: #abd6ff;}.claro .dijitSpinner .dijitUpArrowButtonHover,.claro .dijitSpinner .dijitDownArrowButtonHover,.claro .dijitSpinnerFocused .dijitArrowButton {background-color: #abd6ff;}.claro .dijitSpinner .dijitUpArrowButtonHover .dijitArrowButtonInner {background-position: -174px;}.claro .dijitSpinner .dijitDownArrowButtonHover .dijitArrowButtonInner {background-position: -69px;}.claro .dijitSpinnerFocused {background-color: #ffffff; background-image: none;}.claro .dijitSpinner .dijitDownArrowButtonActive,.claro .dijitSpinner .dijitUpArrowButtonActive {background-color: #7dbefa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner,.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner {border: 0; padding: 1px; margin-right: 2px; margin-bottom: 1px;}.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner {background-position: -173px;}.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner {background-position: -68px;}.claro .dijitSpinnerDisabled .dijitArrowButtonInner {background-color: #efefef;}.claro .dijitSpinnerDisabled .dijitUpArrowButton .dijitArrowButtonInner {background-position: -104px;}.claro .dijitSpinnerDisabled .dijitDownArrowButton .dijitArrowButtonInner {background-position: 1px;}.dj_ie7 .claro .dijitSpinner {overflow: visible;}.dijitRtl .dijitOffScreen {left: auto !important; right: -10000px !important;}.dijitRtl .dijitPlaceHolder {left: auto; right: 0;}.dijitMenuItemRtl {text-align: right;}.dj_iequirks .dijitComboButtonRtl button {float:left;}.dj_ie .dijitTextBoxRtl .dijitInputContainer {clear: right;}.dijitTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitComboBoxRtl .dijitArrowButtonContainer {border-right-width: 1px !important; border-left-width: 0 !important;}.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {right: 0; left: auto;}.dijitSelectRtl .dijitButtonText {float: right;}.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitValidationTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitArrowButtonContainer {float: left;}div.dijitNumberTextBoxRtl {text-align: right;}.dijitCalendarRtl .dijitCalendarDecrementArrow {float: right;}.dijitCalendarRtl .dijitCalendarIncrementArrow {float: left;}.dijitCalendarRtl .dijitCalendarNextYear {margin:0 0.55em 0 0;}.dijitCalendarRtl .dijitCalendarPreviousYear {margin:0 0 0 0.55em;}.dijitSliderRtl .dijitSliderImageHandleV {left:auto;}.dijitSliderRtl .dijitSliderImageHandleH {left:-50%;}.dijitSliderRtl .dijitSliderMoveableH {right:auto; left:0;}.dijitSliderRtl .dijitRuleContainerV {float:right;}.dj_ie .dijitSliderRtl .dijitRuleContainerV {text-align:right;}.dj_ie .dijitSliderRtl .dijitRuleLabelV {text-align:left;}.dj_ie .dijitSliderRtl .dijitRuleLabelH {zoom:1;}.dijitSliderRtl .dijitSliderProgressBarH {float:right; right:0; left:auto;}.dijitRtl .dijitContentPaneLoading .dijitIconLoading,.dijitRtl .dijitContentPaneError .dijitIconError {margin-right: 0; margin-left: 9px;}.dijitTabControllerRtl .nowrapTabStrip {text-align: right;}.dijitTabRtl .dijitTabCloseButton {margin-left: 0; margin-right: 1em;}.dj_ie6 .dijitTabRtl .tabLabel,.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie6 .dijitTabContainerLeft-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerLeft-tabs .dijitTabRtl {zoom: 1;}.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl {left: 0;}.dj_ie6 .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,.dj_ie6 .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {width: 1%;}.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {width:100%;}.dijitColorPaletteRtl .dijitColorPaletteUnder {left: auto; right: 0;}.dijitSelectRtl .dijitButtonContents {border-style: none none none solid; text-align: right;}.dijitTreeRtl .dijitTreeContainer {float: right;}.dijitRtl .dojoDndHorizontal .dojoDndItemBefore {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dijitRtl .dojoDndHorizontal .dojoDndItemAfter {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.claro .dijitTextBoxRtlError .dijitValidationContainer {border-left-width: 0; border-right-width: 1px;}.claro .dijitComboButtonRtl .dijitStretch {-moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0;}.claro .dijitComboButtonRtl .dijitArrowButton {-moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; padding: 3px 0 4px; border-left-width: 1px; border-right-width: 0;}.claro .dijitTabContainerTop-tabs .dijitTabRtl,.claro .dijitTabContainerBottom-tabs .dijitTabRtl {margin-right: 0; margin-left: 1px;}.claro .dijitSliderRtl .dijitSliderProgressBarH,.claro .dijitSliderRtl .dijitSliderRemainingBarH,.claro .dijitSliderRtl .dijitSliderLeftBumper,.claro .dijitSliderRtl .dijitSliderRightBumper,.claro .dijitSliderRtl .dijitSliderTopBumper {background-position: top right;}.claro .dijitSliderRtl .dijitSliderProgressBarV,.claro .dijitSliderRtl .dijitSliderRemainingBarV,.claro .dijitSliderRtl .dijitSliderBottomBumper {background-position: bottom right;}.claro .dijitSliderRtl .dijitSliderLeftBumper {border-left-width: 0; border-right-width: 1px;}.claro .dijitSliderRtl .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.claro .dijitSliderRtl .dijitSliderIncrementIconH {background-position: -357px 50%;}.claro .dijitSliderRtl .dijitSliderDecrementIconH {background-position: -251px 50%;}.claro .dijitDialogRtl .dijitDialogCloseIcon {right: auto; left: 5px;}.claro .dijitDialogRtl .dijitDialogPaneActionBar {text-align: left; padding: 3px 7px 2px 5px;}.claro .dijitEditorRtl .dijitEditorIFrameContainer {padding: 3px 10px 1px 3px;}.dj_ie6 .claro .dijitEditorRtl .dijitEditorIFrameContainer,.dj_ie7 .claro .dijitEditorRtl .dijitEditorIFrameContainer,.dj_ie8 .claro .dijitEditorRtl .dijitEditorIFrameContainer {padding: 3px 0px 1px 10px; margin-right: 0px; border: 0px solid #d3d3d3;}.dijitEditorRtl .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled_rtl.png");}.dijitEditorRtlDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled_rtl.png");}.dijitToolbarRtl .dijitToolbarSeparator {background-image: url("../../icons/images/editorIconsEnabled_rtl.png");}.dijitRtl .dijitIconSave,.dijitRtl .dijitIconPrint,.dijitRtl .dijitIconCut,.dijitRtl .dijitIconCopy,.dijitRtl .dijitIconClear,.dijitRtl .dijitIconDelete,.dijitRtl .dijitIconUndo,.dijitRtl .dijitIconEdit,.dijitRtl .dijitIconNewTask,.dijitRtl .dijitIconEditTask,.dijitRtl .dijitIconEditProperty,.dijitRtl .dijitIconTask,.dijitRtl .dijitIconFilter,.dijitRtl .dijitIconConfigure,.dijitRtl .dijitIconSearch,.dijitRtl .dijitIconApplication,.dijitRtl .dijitIconBookmark,.dijitRtl .dijitIconChart,.dijitRtl .dijitIconConnector,.dijitRtl .dijitIconDatabase,.dijitRtl .dijitIconDocuments,.dijitRtl .dijitIconMail,.dijitRtl .dijitLeaf,.dijitRtl .dijitIconFile,.dijitRtl .dijitIconFunction,.dijitRtl .dijitIconKey,.dijitRtl .dijitIconPackage,.dijitRtl .dijitIconSample,.dijitRtl .dijitIconTable,.dijitRtl .dijitIconUsers,.dijitRtl .dijitFolderClosed,.dijitRtl .dijitIconFolderClosed,.dijitRtl .dijitFolderOpened,.dijitRtl .dijitIconFolderOpen,.dijitRtl .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled_rtl.png"); width: 16px; height: 16px;}.dj_ie6 .dijitRtl .dijitIconSave,.dj_ie6 .dijitRtl .dijitIconPrint,.dj_ie6 .dijitRtl .dijitIconCut,.dj_ie6 .dijitRtl .dijitIconCopy,.dj_ie6 .dijitRtl .dijitIconClear,.dj_ie6 .dijitRtl .dijitIconDelete,.dj_ie6 .dijitRtl .dijitIconUndo,.dj_ie6 .dijitRtl .dijitIconEdit,.dj_ie6 .dijitRtl .dijitIconNewTask,.dj_ie6 .dijitRtl .dijitIconEditTask,.dj_ie6 .dijitRtl .dijitIconEditProperty,.dj_ie6 .dijitRtl .dijitIconTask,.dj_ie6 .dijitRtl .dijitIconFilter,.dj_ie6 .dijitRtl .dijitIconConfigure,.dj_ie6 .dijitRtl .dijitIconSearch,.dj_ie6 .dijitRtl .dijitIconApplication,.dj_ie6 .dijitRtl .dijitIconBookmark,.dj_ie6 .dijitRtl .dijitIconChart,.dj_ie6 .dijitRtl .dijitIconConnector,.dj_ie6 .dijitRtl .dijitIconDatabase,.dj_ie6 .dijitRtl .dijitIconDocuments,.dj_ie6 .dijitRtl .dijitIconMail,.dj_ie6 .dijitRtl .dijitLeaf,.dj_ie6 .dijitRtl .dijitIconFile,.dj_ie6 .dijitRtl .dijitIconFunction,.dj_ie6 .dijitRtl .dijitIconKey,.dj_ie6 .dijitRtl .dijitIconPackage,.dj_ie6 .dijitRtl .dijitIconSample,.dj_ie6 .dijitRtl .dijitIconTable,.dj_ie6 .dijitRtl .dijitIconUsers,.dj_ie6 .dijitRtl .dijitFolderClosed,.dj_ie6 .dijitRtl .dijitIconFolderClosed,.dj_ie6 .dijitRtl .dijitFolderOpened,.dj_ie6 .dijitRtl .dijitIconFolderOpen,.dj_ie6 .dijitRtl .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled8bit_rtl.png");}.dijitRtl .dijitDisabled .dijitIconSave,.dijitRtl .dijitDisabled .dijitIconPrint,.dijitRtl .dijitDisabled .dijitIconCut,.dijitRtl .dijitDisabled .dijitIconCopy,.dijitRtl .dijitDisabled .dijitIconClear,.dijitRtl .dijitDisabled .dijitIconDelete,.dijitRtl .dijitDisabled .dijitIconUndo,.dijitRtl .dijitDisabled .dijitIconEdit,.dijitRtl .dijitDisabled .dijitIconNewTask,.dijitRtl .dijitDisabled .dijitIconEditTask,.dijitRtl .dijitDisabled .dijitIconEditProperty,.dijitRtl .dijitDisabled .dijitIconTask,.dijitRtl .dijitDisabled .dijitIconFilter,.dijitRtl .dijitDisabled .dijitIconConfigure,.dijitRtl .dijitDisabled .dijitIconSearch,.dijitRtl .dijitDisabled .dijitIconApplication,.dijitRtl .dijitDisabled .dijitIconBookmark,.dijitRtl .dijitDisabled .dijitIconChart,.dijitRtl .dijitDisabled .dijitIconConnector,.dijitRtl .dijitDisabled .dijitIconDatabase,.dijitRtl .dijitDisabled .dijitIconDocuments,.dijitRtl .dijitDisabled .dijitIconMail,.dijitRtl .dijitDisabled .dijitLeaf,.dijitRtl .dijitDisabled .dijitIconFile,.dijitRtl .dijitDisabled .dijitIconFunction,.dijitRtl .dijitDisabled .dijitIconKey,.dijitRtl .dijitDisabled .dijitIconPackage,.dijitRtl .dijitDisabled .dijitIconSample,.dijitRtl .dijitDisabled .dijitIconTable,.dijitRtl .dijitDisabled .dijitIconUsers,.dijitRtl .dijitDisabled .dijitFolderClosed,.dijitRtl .dijitDisabled .dijitIconFolderClosed,.dijitRtl .dijitDisabled .dijitFolderOpened,.dijitRtl .dijitDisabled .dijitIconFolderOpen,.dijitRtl .dijitDisabled .dijitIconError {background-image: url("../../icons/images/commonIconsObjActDisabled_rtl.png");}.dijitRtl .dijitIconLoading {background-image: url("../../icons/images/loadingAnimation_rtl.gif");}.claro .dijitTitlePaneRtl .dijitClosed .dijitArrowNode,.claro .dijitFieldsetRtl .dijitFieldsetTitleClosed .dijitArrowNode {background-position: -7px 0;}.claro .dijitMenuItemRtl .dijitMenuExpand {background-position: -7px 0; margin-right: 0; margin-left: 3px;}.claro .dijitMenuItemRtl .dijitMenuItemIcon {margin: 0 4px 0 0;}.claro .dijitCalendarRtl .dijitCalendarIncrease {background-position: 0 0;}.claro .dijitCalendarRtl .dijitCalendarDecrease {background-position: -18px 0;}.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease {background-position: -36px 0;}.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease {background-position: -55px 0;}.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease {background-position: -72px 0;}.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease {background-position: -91px 0;}.claro .dijitToolbar .dijitComboButtonRtl .dijitButtonNode {border-width: 0; padding: 2px;}.claro .dijitToolbar .dijitComboButtonRtlHover .dijitButtonNode,.claro .dijitToolbar .dijitComboButtonRtlActive .dijitButtonNode {border-width: 1px; padding: 1px;}.claro .dijitToolbar .dijitComboButtonRtl .dijitStretch {-moz-border-radius: 0 2px 2px 0; border-radius: 0 2px 2px 0;}.claro .dijitToolbar .dijitComboButtonRtl .dijitArrowButton {-moz-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px;}.claro .dijitToolbar .dijitComboButtonRtlHover .dijitArrowButton,.claro .dijitToolbar .dijitComboButtonRtlActive .dijitArrowButton {border-left-width: 1px; border-right-width: 0; padding-left: 1px; padding-right: 2px;}.claro .dijitTreeRtl .dijitTreeExpandoLoading {background-image: url("../../icons/images/loadingAnimation_rtl.gif"); background-position: 100% 0;}.claro .dijitProgressBarRtl .dijitProgressBarFull {border-left-width: 1px; border-right-width: 0px;}.claro .dijitProgressBarIndeterminateRtl .dijitProgressBarTile {-moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); transform: scaleX(-1); filter: FlipH; -ms-filter: "FlipH";} \ No newline at end of file
+.dijitReset {margin:0; border:0; padding:0; font: inherit; line-height:normal; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {position: absolute; visibility: hidden;}.dijitHidden * {visibility: hidden !important;}.dijitVisible {display: block !important; position: relative; visibility: visible;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important; border-collapse: separate;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: -10000px !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; -webkit-overflow-scrolling: touch;}.dijitPositionOnly {padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important;}.dijitNonPositionOnly {float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important;}.dijitBackgroundIframe {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0;}.dijitDisplayNone {display:none !important;}.dijitContainer {overflow: hidden;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner {background: no-repeat center; width: 12px; height: 12px; direction: ltr;}.dijitLeft {background-position:left top; background-repeat:no-repeat;}.dijitStretch {white-space:nowrap; background-repeat:repeat-x;}.dijitRight {#display:inline; background-position:right top; background-repeat:no-repeat;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.dijitButtonNode {border:1px solid gray; margin:0; line-height:normal; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap;}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {line-height:inherit;}.dijitTextBox .dijitButtonNode {border-width: 0;}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_ie .dijitButtonNode {zoom: 1;}.dj_ie .dijitButtonNode button {overflow: visible;}div.dijitArrowButton {float: right;}.dijitTextBox {border: solid black 1px; #overflow: hidden; width: 15em; vertical-align: middle;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_safari .dijitTextBoxDisabled input {color: #B0B0B0;}.dj_safari textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .dj_gecko .dijitTextBoxDisabled input {-moz-user-input: none;}.dijitPlaceHolder {color: #AAAAAA; font-style: italic; position: absolute; top: 0; left: 0; #filter: ""; white-space: nowrap; pointer-events: none;}.dijitTimeTextBox {width: 8em;}.dijitTextBox input:focus {outline: none;}.dijitTextBoxFocused {outline: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !important; direction: ltr !important; text-align: left !important; height: auto !important; #text-indent: 0 !important; #letter-spacing: -5em !important; #text-align: right !important;}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox {line-height: 100%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.dj_ie .dijitToolbar .dijitComboBox {vertical-align: middle;}.dijitTextBox .dijitSpinnerButtonContainer {width: 1em; position: relative !important; overflow: hidden;}.dijitSpinner .dijitSpinnerButtonInner {width:1em; visibility:hidden !important; overflow-x:hidden;}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0.3em !important; padding-right: 0.3em !important; margin-left: 0.3em !important; margin-right: 0.3em !important; width: 1.4em !important;}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0 !important; margin-right: 0 !important; width: 2em !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {padding: 0; position: absolute !important; right: 0; float: none; height: 50%; width: 100%; bottom: auto; left: 0; right: auto;}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: auto;}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {overflow: visible !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {top: 50%; border-top-width: 1px !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {#bottom: 50%; top: 0;}.dijitSpinner .dijitArrowButtonInner {margin: auto; overflow-x: hidden; height: 100% !important;}.dj_iequirks .dijitSpinner .dijitArrowButtonInner {height: auto !important;}.dijitSpinner .dijitArrowButtonInner .dijitInputField {-moz-transform: scale(0.5); -moz-transform-origin: center top; -webkit-transform: scale(0.5); -webkit-transform-origin: center top; -o-transform: scale(0.5); -o-transform-origin: center top; transform: scale(0.5); transform-origin: left top; padding-top: 0; padding-bottom: 0; padding-left: 0 !important; padding-right: 0 !important; width: 100%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput {padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden;}.dijitCheckBox input,.dijitRadio input {margin: 0; padding: 0; display: block;}.dijitCheckBoxInput {opacity: 0;}.dj_ie .dijitCheckBoxInput {filter: alpha(opacity=0);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.dijitProgressBarEmpty {position:relative;overflow:hidden; border:1px solid black; z-index:0;}.dijitProgressBarFull {position:absolute; overflow:hidden; z-index:-1; top:0; width:100%;}.dj_ie6 .dijitProgressBarFull {height:1.6em;}.dijitProgressBarTile {position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto;}.dijitProgressBarLabel {display:block; position:static; width:100%; text-align:center; background-color:transparent !important;}.dijitTooltip {position: absolute; z-index: 2000; display: block; left: 0; top: -10000px; overflow: visible;}.dijitTooltipContainer {border: solid black 2px; background: #b8b5b5; color: black; font-size: small;}.dijitTooltipFocusNode {padding: 2px 2px 2px 2px;}.dijitTooltipConnector {position: absolute;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane {position: absolute !important; z-index: 2;}.dijitBorderContainer > .dijitTextArea {resize: none;}.dijitGutter {position: absolute; font-size: 1px;}.dijitSplitter {position: absolute; overflow: hidden; z-index: 10; background-color: #fff; border-color: gray; border-style: solid; border-width: 0;}.dj_ie .dijitSplitter {z-index: 1;}.dijitSplitterActive {z-index: 11 !important;}.dijitSplitterCover {position:absolute; z-index:-1; top:0; left:0; width:100%; height:100%;}.dijitSplitterCoverActive {z-index:3 !important;}.dj_ie .dijitSplitterCover {background: white; opacity: 0;}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover {filter: alpha(opacity=0);}.dijitSplitterH {height: 7px; border-top:1px; border-bottom:1px; cursor: row-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0;}.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {overflow:hidden; position:absolute; top:49%;}.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {position:absolute; left:49%;}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV {font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto; -webkit-overflow-scrolling: touch;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitFieldset {border: 1px solid gray;}.dijitTitlePaneTitle, .dijitFieldsetTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {cursor: default;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {display: inline; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {display: none;}.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {display: none !important;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.dijitColorPalette .dijitPaletteTable {padding: 2px 3px 3px 3px; position: relative; overflow: hidden; outline: 0; border-collapse: separate;}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable {padding: 0; margin: 2px 3px 3px 3px;}.dijitColorPalette .dijitPaletteCell {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !important;}.dijitAccordionContainer {border:1px solid #b7b7b7; border-top:0 !important;}.dijitAccordionTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitAccordionTitleSelected {cursor: default;}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown {display: none; font-size: 0.65em; font-weight: normal !important;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer table {width: auto; clear: both;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarMonthContainer {text-align: center;}.dijitCalendarDecrementArrow {float: left;}.dijitCalendarIncrementArrow {float: right;}.dijitCalendarYearLabel {white-space: nowrap;}.dijitCalendarNextYear {margin:0 0 0 0.55em;}.dijitCalendarPreviousYear {margin:0 0.55em 0 0;}.dijitCalendarIncrementControl {vertical-align: middle;}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitCalendarDisabledDate {color: gray; text-decoration: line-through; cursor: default;}.dijitSpacer {position: relative; height: 1px; overflow: hidden; visibility: hidden;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.dijitMenu {border:1px solid black; background-color:white;}.dijitMenuTable {border-collapse:collapse; border-width:0; background-color:white;}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden;}.dijitMenuItem {text-align: left; white-space: nowrap; padding:.1em .2em; cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_a11y .dijitMenuExpandA11y {display: inline;}.dijitMenuSeparator td {border: 0; padding: 0;}.dijitMenuSeparatorTop {height: 50%; margin: 0; margin-top:3px; font-size: 1px;}.dijitMenuSeparatorBottom {height: 50%; margin: 0; margin-bottom:3px; font-size: 1px;}.dijitMenuItemIconChar {display: none; visibility: hidden;}.dj_a11y .dijitMenuItemIconChar {display: inline;}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar {visibility: visible;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}div.dijitTabDisabled, .dj_ie div.dijitTabDisabled {cursor: auto;}.dijitTab {position:relative; cursor:pointer; -webkit-tap-highlight-color: transparent; white-space:nowrap; z-index:3;}.dijitTab * {vertical-align: middle;}.dijitTabChecked {cursor: default;}.dijitTabContainerTop-tabs .dijitTab {top: 1px;}.dijitTabContainerBottom-tabs .dijitTab {top: -1px;}.dijitTabContainerLeft-tabs .dijitTab {left: 1px;}.dijitTabContainerRight-tabs .dijitTab {left: -1px;}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab {display:inline-block; #zoom: 1; #display:inline;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto; -webkit-tap-highlight-color: transparent; -moz-user-select: none;}.dijitTreeContainer {float: left;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dj_ie .dijitTreeLabel:focus {outline: 1px dotted black;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 4px;}.dijitDialog {position: absolute; z-index: 999; overflow: hidden;}.dijitDialogTitleBar {cursor: move;}.dijitDialogFixed .dijitDialogTitleBar {cursor:default;}.dijitDialogCloseIcon {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitDialogPaneContent {-webkit-overflow-scrolling: touch;}.dijitDialogUnderlayWrapper {position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important;}.dijitDialogUnderlay {background: #eee; opacity: 0.5;}.dj_ie .dijitDialogUnderlay {filter: alpha(opacity=50);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {border:4px solid #000; height:8px; width:8px;}.dijitSliderImageHandleV {top:-8px; right: -50%;}.dijitSliderImageHandleH {left:50%; top:-5px; vertical-align:top;}.dijitSliderBar {border-style:solid; border-color:black; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSliderBarContainerV {position:relative; height:100%; z-index:1;}.dijitSliderBarContainerH {position:relative; z-index:1;}.dijitSliderBarH {height:4px; border-width:1px 0;}.dijitSliderBarV {width:4px; border-width:0 1px;}.dijitSliderProgressBar {background-color:red; z-index:1;}.dijitSliderProgressBarV {position:static !important; height:0; vertical-align:top; text-align:left;}.dijitSliderProgressBarH {position:absolute !important; width:0; vertical-align:middle; overflow:visible;}.dijitSliderRemainingBar {overflow:hidden; background-color:transparent; z-index:1;}.dijitSliderRemainingBarV {height:100%; text-align:left;}.dijitSliderRemainingBarH {width:100% !important;}.dijitSliderBumper {overflow:hidden; z-index:1;}.dijitSliderBumperV {width:4px; height:8px; border-width:0 1px;}.dijitSliderBumperH {width:8px; height:4px; border-width:1px 0;}.dijitSliderBottomBumper,.dijitSliderLeftBumper {background-color:red;}.dijitSliderTopBumper,.dijitSliderRightBumper {background-color:transparent;}.dijitSliderDecoration {text-align:center;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%; white-space: nowrap;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_a11y .dijitSliderButtonInner {visibility:visible !important;}.dijitSliderButtonContainer {text-align:center; height:0;}.dijitSliderButtonContainer * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSlider .dijitButtonNode {padding:0; display:block;}.dijitRuleContainer {position:relative; overflow:visible;}.dijitRuleContainerV {height:100%; line-height:0; float:left; text-align:left;}.dj_opera .dijitRuleContainerV {line-height:2%;}.dj_ie .dijitRuleContainerV {line-height:normal;}.dj_gecko .dijitRuleContainerV {margin:0 0 1px 0;}.dijitRuleMark {position:absolute; border:1px solid black; line-height:0; height:100%;}.dijitRuleMarkH {width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important;}.dijitRuleLabelContainer {position:absolute;}.dijitRuleLabelContainerH {text-align:center; display:inline-block;}.dijitRuleLabelH {position:relative; left:-50%;}.dijitRuleLabelV {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}.dijitRuleMarkV {height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0;}.dj_ie .dijitRuleLabelContainerV {margin-top:-.55em;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.dijitToolbarSeparator {height: 18px; width: 5px; padding: 0 1px; margin: 0;}.dijitIEFixedToolbar {position:absolute; top: expression(eval((document.documentElement||document.body).scrollTop));}.dijitEditor {display: block;}.dijitEditorDisabled,.dijitEditorReadOnly {color: gray;}.dijitTimePicker {background-color: white;}.dijitTimePickerItem {cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitTimePickerItemHover {background-color:gray; color:white;}.dijitTimePickerItemSelected {font-weight:bold; color:#333; background-color:#b7cdee;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dijitTimePickerItemInner {text-align:center; border:0; padding:2px 8px 2px 8px;}.dijitTimePickerTick,.dijitTimePickerMarker {border-bottom:1px solid gray;}.dijitTimePicker .dijitDownArrowButton {border-top: none !important;}.dijitTimePickerTick {color:#CCC;}.dijitTimePickerMarker {color:black; background-color:#CCC;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitNumberTextBox {text-align: left; direction: ltr;}.dijitNumberTextBox .dijitInputInner {text-align: inherit;}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner {text-align: right;}.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {padding-right: 1px !important;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.dijitSelectFixedWidth .dijitButtonContents {width: 100%;}.dijitSelectMenu .dijitMenuItemIcon {display:none;}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {position: static;}.dijitSelectLabel *{vertical-align: baseline;}.dijitSelectSelectedOption * {font-weight: bold;}.dijitSelectMenu {border-width: 1px;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.dijitFocused .dijitMenuItemShortcutKey {text-decoration: underline;}.dijitIconSave,.dijitIconPrint,.dijitIconCut,.dijitIconCopy,.dijitIconClear,.dijitIconDelete,.dijitIconUndo,.dijitIconEdit,.dijitIconNewTask,.dijitIconEditTask,.dijitIconEditProperty,.dijitIconTask,.dijitIconFilter,.dijitIconConfigure,.dijitIconSearch,.dijitIconApplication,.dijitIconBookmark,.dijitIconChart,.dijitIconConnector,.dijitIconDatabase,.dijitIconDocuments,.dijitIconMail,.dijitLeaf,.dijitIconFile,.dijitIconFunction,.dijitIconKey,.dijitIconPackage,.dijitIconSample,.dijitIconTable,.dijitIconUsers,.dijitFolderClosed,.dijitIconFolderClosed,.dijitFolderOpened,.dijitIconFolderOpen,.dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled.png"); width: 16px; height: 16px;}.dj_ie6 .dijitIconSave,.dj_ie6 .dijitIconPrint,.dj_ie6 .dijitIconCut,.dj_ie6 .dijitIconCopy,.dj_ie6 .dijitIconClear,.dj_ie6 .dijitIconDelete,.dj_ie6 .dijitIconUndo,.dj_ie6 .dijitIconEdit,.dj_ie6 .dijitIconNewTask,.dj_ie6 .dijitIconEditTask,.dj_ie6 .dijitIconEditProperty,.dj_ie6 .dijitIconTask,.dj_ie6 .dijitIconFilter,.dj_ie6 .dijitIconConfigure,.dj_ie6 .dijitIconSearch,.dj_ie6 .dijitIconApplication,.dj_ie6 .dijitIconBookmark,.dj_ie6 .dijitIconChart,.dj_ie6 .dijitIconConnector,.dj_ie6 .dijitIconDatabase,.dj_ie6 .dijitIconDocuments,.dj_ie6 .dijitIconMail,.dj_ie6 .dijitLeaf,.dj_ie6 .dijitIconFile,.dj_ie6 .dijitIconFunction,.dj_ie6 .dijitIconKey,.dj_ie6 .dijitIconPackage,.dj_ie6 .dijitIconSample,.dj_ie6 .dijitIconTable,.dj_ie6 .dijitIconUsers,.dj_ie6 .dijitFolderClosed,.dj_ie6 .dijitIconFolderClosed,.dj_ie6 .dijitFolderOpened,.dj_ie6 .dijitIconFolderOpen,.dj_ie6 .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled8bit.png");}.dijitDisabled .dijitIconSave,.dijitDisabled .dijitIconPrint,.dijitDisabled .dijitIconCut,.dijitDisabled .dijitIconCopy,.dijitDisabled .dijitIconClear,.dijitDisabled .dijitIconDelete,.dijitDisabled .dijitIconUndo,.dijitDisabled .dijitIconEdit,.dijitDisabled .dijitIconNewTask,.dijitDisabled .dijitIconEditTask,.dijitDisabled .dijitIconEditProperty,.dijitDisabled .dijitIconTask,.dijitDisabled .dijitIconFilter,.dijitDisabled .dijitIconConfigure,.dijitDisabled .dijitIconSearch,.dijitDisabled .dijitIconApplication,.dijitDisabled .dijitIconBookmark,.dijitDisabled .dijitIconChart,.dijitDisabled .dijitIconConnector,.dijitDisabled .dijitIconDatabase,.dijitDisabled .dijitIconDocuments,.dijitDisabled .dijitIconMail,.dijitDisabled .dijitLeaf,.dijitDisabled .dijitIconFile,.dijitDisabled .dijitIconFunction,.dijitDisabled .dijitIconKey,.dijitDisabled .dijitIconPackage,.dijitDisabled .dijitIconSample,.dijitDisabled .dijitIconTable,.dijitDisabled .dijitIconUsers,.dijitDisabled .dijitFolderClosed,.dijitDisabled .dijitIconFolderClosed,.dijitDisabled .dijitFolderOpened,.dijitDisabled .dijitIconFolderOpen,.dijitDisabled .dijitIconError {background-image: url("../../icons/images/commonIconsObjActDisabled.png");}.dijitIconSave {background-position: 0;}.dijitIconPrint {background-position: -16px;}.dijitIconCut {background-position: -32px;}.dijitIconCopy {background-position: -48px;}.dijitIconClear {background-position: -64px;}.dijitIconDelete {background-position: -80px;}.dijitIconUndo {background-position: -96px;}.dijitIconEdit {background-position: -112px;}.dijitIconNewTask {background-position: -128px;}.dijitIconEditTask {background-position: -144px;}.dijitIconEditProperty {background-position: -160px;}.dijitIconTask {background-position: -176px;}.dijitIconFilter {background-position: -192px;}.dijitIconConfigure {background-position: -208px;}.dijitIconSearch {background-position: -224px;}.dijitIconError {background-position: -496px;} .dijitIconApplication {background-position: -240px;}.dijitIconBookmark {background-position: -256px;}.dijitIconChart {background-position: -272px;}.dijitIconConnector {background-position: -288px;}.dijitIconDatabase {background-position: -304px;}.dijitIconDocuments {background-position: -320px;}.dijitIconMail {background-position: -336px;}.dijitIconFile, .dijitLeaf {background-position: -352px;}.dijitIconFunction {background-position: -368px;}.dijitIconKey {background-position: -384px;}.dijitIconPackage{background-position: -400px;}.dijitIconSample {background-position: -416px;}.dijitIconTable {background-position: -432px;}.dijitIconUsers {background-position: -448px;}.dijitIconFolderClosed, .dijitFolderClosed {background-position: -464px;}.dijitIconFolderOpen, .dijitFolderOpened {background-position: -480px;}.dijitIconLoading {background: url("../../icons/images/loadingAnimation.gif") no-repeat; height: 20px; width: 20px;}.claro .dijitPopup {-webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);}.claro .dijitTooltipDialogPopup {-webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none;}.claro .dijitComboBoxHighlightMatch {background-color: #abd6ff;}.claro .dijitFocusedLabel {outline: 1px dotted #494949;}.claro .dojoDndItem {border-color: rgba(0, 0, 0, 0); -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s; -webkit-transition-property: background-color, border-color; -moz-transition-property: background-color, border-color; transition-property: background-color, border-color;}.claro .dojoDndItemOver {background-color: #abd6ff; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 1px; border: solid 1px #759dc0; color: #000000;}.claro .dojoDndItemAnchor,.claro .dojoDndItemSelected {background-color: #cfe5fa; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 1px; border: solid 1px #759dc0; color: #000000;}.claro .dojoDndItemBefore,.claro .dojoDndItemAfter {border-color: #759dc0;}.claro table.dojoDndAvatar {border: 1px solid #b5bcc7; border-collapse: collapse; background-color: #ffffff; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);}.claro .dojoDndAvatarHeader td {height: 20px; padding-left: 21px;}.claro.dojoDndMove .dojoDndAvatarHeader,.claro.dojoDndCopy .dojoDndAvatarHeader {background-image: url("images/dnd.png"); background-repeat: no-repeat; background-position: 2px -122px;}.claro .dojoDndAvatarItem td {padding: 5px;}.claro.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-position: 2px -103px;}.claro.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-position: 2px -68px;}.claro.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-position: 2px -33px;}.claro.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-position: 2px 2px;}.claro .dijitTextBox,.claro .dijitInputInner {color: #000000;}.claro .dijitValidationTextBoxError .dijitValidationContainer {background-color: #d46464; background-image: url("form/images/error.png"); background-position: top center; border: solid #d46464 0; width: 9px;}.claro .dijitTextBoxError .dijitValidationContainer {border-left-width: 1px;}.claro .dijitValidationTextBoxError .dijitValidationIcon {width: 0; background-color: transparent;}.claro .dijitTextArea,.claro .dijitInputField .dijitPlaceHolder {padding: 2px;}.claro .dijitSelect .dijitInputField,.claro .dijitTextBox .dijitInputField {padding: 1px 2px;}.dj_gecko .claro .dijitTextBox .dijitInputInner,.dj_webkit .claro .dijitTextBox .dijitInputInner {padding-left: 1px; padding-right: 1px;}.claro .dijitSelect,.claro .dijitSelect .dijitButtonContents,.claro .dijitTextBox,.claro .dijitTextBox .dijitButtonNode {border-color: #b5bcc7; -webkit-transition-property: background-color, border; -moz-transition-property: background-color, border; transition-property: background-color, border; -webkit-transition-duration: 0.35s; -moz-transition-duration: 0.35s; transition-duration: 0.35s;}.claro .dijitSelect,.claro .dijitTextBox {background-color: #ffffff;}.claro .dijitSelectHover,.claro .dijitSelectHover .dijitButtonContents,.claro .dijitTextBoxHover,.claro .dijitTextBoxHover .dijitButtonNode {border-color: #759dc0; -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s;}.claro .dijitTextBoxHover {background-color: #e5f2fe; background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px);}.claro .dijitSelectError,.claro .dijitSelectError .dijitButtonContents,.claro .dijitTextBoxError,.claro .dijitTextBoxError .dijitButtonNode {border-color: #d46464;}.claro .dijitSelectFocused,.claro .dijitSelectFocused .dijitButtonContents,.claro .dijitTextBoxFocused,.claro .dijitTextBoxFocused .dijitButtonNode {border-color: #759dc0; -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.claro .dijitTextBoxFocused {background-color: #ffffff; background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px);}.claro .dijitTextBoxFocused .dijitInputContainer {background: #ffffff;}.claro .dijitSelectErrorFocused,.claro .dijitSelectErrorFocused .dijitButtonContents,.claro .dijitTextBoxErrorFocused,.claro .dijitTextBoxErrorFocused .dijitButtonNode {border-color: #ce5050;}.claro .dijitSelectDisabled,.claro .dijitSelectDisabled .dijitButtonContents,.claro .dijitTextBoxDisabled,.claro .dijitTextBoxDisabled .dijitButtonNode {border-color: #d3d3d3;}.claro .dijitSelectDisabled,.claro .dijitTextBoxDisabled,.claro .dijitTextBoxDisabled .dijitInputContainer {background-color: #efefef; background-image: none;}.claro .dijitSelectDisabled,.claro .dijitTextBoxDisabled,.claro .dijitTextBoxDisabled .dijitInputInner {color: #818181;}.dj_webkit .claro .dijitDisabled input {color: #757575;}.dj_webkit .claro textarea.dijitTextAreaDisabled {color: #1b1b1b;}.claro .dijitSelect .dijitArrowButtonInner,.claro .dijitComboBox .dijitArrowButtonInner {background-image: url("form/images/commonFormArrows.png"); background-position: -35px 53%; background-repeat: no-repeat; margin: 0; width: 16px;}.claro .dijitComboBox .dijitArrowButtonInner {border: 1px solid #ffffff;}.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner {border: none;}.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner {border: none;}.claro .dijitSelectLabel,.claro .dijitTextBox .dijitInputInner,.claro .dijitValidationTextBox .dijitValidationContainer {padding: 1px 0;}.claro .dijitComboBox .dijitButtonNode {background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitComboBoxOpenOnClickHover .dijitButtonNode,.claro .dijitComboBox .dijitDownArrowButtonHover,.claro .dijitComboBoxFocused .dijitArrowButton {background-color: #abd6ff;}.claro .dijitComboBoxOpenOnClickHover .dijitArrowButtonInner,.claro .dijitComboBox .dijitDownArrowButtonHover .dijitArrowButtonInner {background-position: -70px 53%;}.claro .dijitComboBox .dijitHasDropDownOpen {background-color: #7dbdfa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 1px;}.dj_iequirks .claro .dijitComboBox .dijitHasDropDownOpen {padding: 1px 0;}.claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner {background-position: -70px 53%; border: 0 none;}.claro div.dijitComboBoxDisabled .dijitArrowButtonInner {background-position: 0 50%; background-color: #efefef;}.dj_ff3 .claro .dijitInputField input[type="hidden"] {display: none; height: 0; width: 0;}.dj_borderbox .claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner {width: 18px;}.dj_borderbox .claro .dijitComboBoxFocused .dijitHasDropDownOpen .dijitArrowButtonInner {width: 16px;}.claro .dijitButtonNode {-webkit-transition-property: background-color; -moz-transition-property: background-color; transition-property: background-color; -webkit-transition-duration: 0.3s; -moz-transition-duration: 0.3s; transition-duration: 0.3s;}.claro .dijitButton .dijitButtonNode,.claro .dijitDropDownButton .dijitButtonNode,.claro .dijitComboButton .dijitButtonNode,.claro .dijitToggleButton .dijitButtonNode {border: 1px solid #759dc0; padding: 2px 4px 4px 4px; color: #000000; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); background-color: #bcd8f4; background-image: url("form/images/buttonEnabled.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); background-image: -webkit-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); background-image: -o-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); background-image: linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); _background-image: none;}.claro .dijitComboButton .dijitArrowButton {border-left-width: 0; padding: 4px 2px 4px 2px;}.claro .dijitArrowButtonInner {width: 15px; height: 15px; margin: 0 auto; background-image: url("form/images/buttonArrows.png"); background-repeat: no-repeat; background-position: -51px 53%;}.claro .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -77px 53%;}.claro .dijitRightArrowButton .dijitArrowButtonInner {background-position: -26px 53%;}.claro .dijitUpArrowButton .dijitArrowButtonInner {background-position: 0 53%;}.claro .dijitDisabled .dijitArrowButtonInner {background-position: -151px 53%;}.claro .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -177px 53%;}.claro .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner {background-position: -126px 53%;}.claro .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner {background-position: -100px 53%;}.claro .dijitButtonText {padding: 0 0.3em; text-align: center;}.claro .dijitButtonHover .dijitButtonNode,.claro .dijitDropDownButtonHover .dijitButtonNode,.claro .dijitComboButton .dijitButtonNodeHover,.claro .dijitComboButton .dijitDownArrowButtonHover,.claro .dijitToggleButtonHover .dijitButtonNode {background-color: #86bdf2; color: #000000; -webkit-transition-duration: 0.2s; -moz-transition-duration: 0.2s; transition-duration: 0.2s;}.claro .dijitButtonActive .dijitButtonNode,.claro .dijitDropDownButtonActive .dijitButtonNode,.claro .dijitComboButtonActive .dijitButtonNode,.claro .dijitToggleButtonActive .dijitButtonNode,.claro .dijitToggleButtonChecked .dijitButtonNode {background-color: #86bdf2; -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.claro .dijitButtonDisabled,.claro .dijitDropDownButtonDisabled,.claro .dijitComboButtonDisabled,.claro .dijitToggleButtonDisabled {background-image: none; outline: none;}.claro .dijitButtonDisabled .dijitButtonNode,.claro .dijitDropDownButtonDisabled .dijitButtonNode,.claro .dijitComboButtonDisabled .dijitButtonNode,.claro .dijitToggleButtonDisabled .dijitButtonNode {background-color: #efefef; border: solid 1px #d3d3d3; color: #818181; -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); box-shadow: 0 0 0 rgba(0, 0, 0, 0); background-image: url("form/images/buttonDisabled.png"); background-image: -moz-linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); background-image: -webkit-linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); background-image: -o-linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); background-image: linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); _background-image: none;}.claro .dijitComboButtonDisabled .dijitArrowButton {border-left-width: 0;}.claro table.dijitComboButton {border-collapse: separate;}.claro .dijitComboButton .dijitStretch {-moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px;}.claro .dijitComboButton .dijitArrowButton {-moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0;}.claro .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/checkmarkNoBorder.png");}.dj_ie6 .claro .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/checkmarkNoBorder.gif");}.claro .dijitCheckBox,.claro .dijitCheckBoxIcon {background-image: url("form/images/checkboxRadioButtonStates.png"); background-repeat: no-repeat; width: 15px; height: 16px; margin: 0 2px 0 0; padding: 0;}.dj_ie6 .claro .dijitCheckBox,.dj_ie6 .claro .dijitCheckBoxIcon {background-image: url("form/images/checkboxAndRadioButtons_IE6.png");}.claro .dijitCheckBox,.claro .dijitToggleButton .dijitCheckBoxIcon {background-position: -15px;}.claro .dijitCheckBoxChecked,.claro .dijitToggleButtonChecked .dijitCheckBoxIcon {background-position: 0;}.claro .dijitCheckBoxDisabled {background-position: -75px;}.claro .dijitCheckBoxCheckedDisabled {background-position: -60px;}.claro .dijitCheckBoxHover {background-position: -45px;}.claro .dijitCheckBoxCheckedHover {background-position: -30px;}.claro .dijitToggleButton .dijitRadio,.claro .dijitToggleButton .dijitRadioIcon {background-image: url("form/images/checkboxRadioButtonStates.png");}.dj_ie6 .claro .dijitToggleButton .dijitRadio,.dj_ie6 .claro .dijitToggleButton .dijitRadioIcon {background-image: url("form/images/checkboxAndRadioButtons_IE6.png");}.claro .dijitRadio,.claro .dijitRadioIcon {background-image: url("form/images/checkboxRadioButtonStates.png"); background-repeat: no-repeat; width: 15px; height: 15px; margin: 0 2px 0 0; padding: 0;}.dj_ie6 .claro .dijitRadio,.dj_ie6 .claro .dijitRadioIcon {background-image: url("form/images/checkboxAndRadioButtons_IE6.png");}.claro .dijitRadio {background-position: -105px;}.claro .dijitToggleButton .dijitRadioIcon {background-position: -107px;}.claro .dijitRadioDisabled {background-position: -165px;}.claro .dijitRadioHover {background-position: -135px;}.claro .dijitRadioChecked {background-position: -90px;}.claro .dijitToggleButtonChecked .dijitRadioIcon {background-position: -92px;}.claro .dijitRadioCheckedHover {background-position: -120px;}.claro .dijitRadioCheckedDisabled {background-position: -150px;}.claro .dijitSelect .dijitArrowButtonContainer {border: 1px solid #ffffff;}.claro .dijitSelect .dijitArrowButton {padding: 0; background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitSelect .dijitArrowButton .dijitArrowButtonInner {height: 16px;}.claro .dijitSelectHover {background-color: #e5f2fe; background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-repeat: repeat-x;}.claro .dijitSelectHover .dijitArrowButton {background-color: #abd6ff;}.claro .dijitSelectHover .dijitArrowButton .dijitArrowButtonInner {background-position: -70px 53%;}.claro .dijitSelectFocused .dijitArrowButton {background-color: #7dbefa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitSelectFocused .dijitArrowButton {border: none; padding: 1px;}.claro .dijitSelectFocused .dijitArrowButton .dijitArrowButtonInner {background-position: -70px 53%;}.claro .dijitSelectDisabled {border-color: #d3d3d3; background-color: #efefef; background-image: none; color: #818181;}.claro .dijitSelectDisabled .dijitArrowButton .dijitArrowButtonInner {background-position: 0 53%;}.claro .dijitSelectMenu td.dijitMenuItemIconCell,.claro .dijitSelectMenu td.dijitMenuArrowCell {display: none;}.claro .dijitSelectMenu td.dijitMenuItemLabel {padding: 2px;}.claro .dijitSelectMenu .dijitMenuSeparatorTop {border-bottom: 1px solid #759dc0;}.claro .dijitTabPaneWrapper {background: #ffffff;}.claro .dijitTabPaneWrapper,.claro .dijitTabContainerTop-tabs,.claro .dijitTabContainerBottom-tabs,.claro .dijitTabContainerLeft-tabs,.claro .dijitTabContainerRight-tabs {border-color: #b5bcc7;}.claro .dijitTabCloseButton {background: url("layout/images/tabClose.png") no-repeat; width: 14px; height: 14px; margin-left: 5px; margin-right: -5px;}.claro .dijitTabCloseButtonHover {background-position: -14px;}.claro .dijitTabCloseButtonActive {background-position: -28px;}.claro .dijitTabSpacer {display: none;}.claro .dijitTab {border: 1px solid #b5bcc7; background-color: #efefef; -webkit-transition-property: background-color, border; -moz-transition-property: background-color, border; transition-property: background-color, border; -webkit-transition-duration: 0.35s; -moz-transition-duration: 0.35s; transition-duration: 0.35s; color: #494949;}.claro .dijitTabHover {border-color: #759dc0; background-color: #abd6ff; -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s; color: #000000;}.claro .dijitTabActive {border-color: #759dc0; background-color: #7dbdfa; color: #000000; -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.claro .dijitTabChecked {border-color: #b5bcc7; background-color: #cfe5fa; color: #000000;}.claro .dijitTabDisabled {background-color: #d3d3d3;}.claro .tabStripButton {background-color: transparent; border: none;}.claro .dijitTabContainerTop-tabs .dijitTab {top: 1px; margin-right: 1px; padding: 3px 6px; border-bottom-width: 0; min-width: 60px; text-align: center; background-image: url("layout/images/tabTopUnselected.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); -webkit-box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); -moz-box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04);}.claro .dijitTabContainerTop-tabs .dijitTabChecked {padding-bottom: 4px; padding-top: 9px; background-image: url("layout/images/tabTopSelected.png"); background-image: -moz-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: -webkit-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: -o-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); -webkit-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05);}.claro .dijitTabContainerBottom-tabs .dijitTab {top: -1px; margin-right: 1px; padding: 3px 6px; border-top-width: 0; min-width: 60px; text-align: center; background-image: url("layout/images/tabBottomUnselected.png"); background-repeat: repeat-x; background-position: bottom; background-image: -moz-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);}.claro .dijitTabContainerBottom-tabs .dijitTabChecked {padding-bottom: 9px; padding-top: 4px; background-image: url("layout/images/tabBottomSelected.png"); background-image: -moz-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: -webkit-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: -o-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); background-image: linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);}.claro .dijitTabContainerLeft-tabs .dijitTab {left: 1px; margin-bottom: 1px; padding: 3px 8px 4px 4px; background-image: url("layout/images/tabLeftUnselected.png"); background-repeat: repeat-y; background-image: -moz-linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%);}.claro .dijitTabContainerLeft-tabs .dijitTabChecked {border-right-width: 0; padding-right: 9px; background-image: url("layout/images/tabLeftSelected.png"); background-image: -moz-linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: -o-linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); -webkit-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05);}.claro .dijitTabContainerRight-tabs .dijitTab {left: -1px; margin-bottom: 1px; padding: 3px 8px 4px 4px; background-image: url("layout/images/tabRightUnselected.png"); background-repeat: repeat-y; background-position: right; background-image: -moz-linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%);}.claro .dijitTabContainerRight-tabs .dijitTabChecked {padding-left: 5px; border-left-width: 0; background-image: url("layout/images/tabRightSelected.png"); background-image: -moz-linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: -webkit-linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: -o-linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); background-image: linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); -moz-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07);}.claro .dijitTabContainerTop-tabs .dijitTab {-moz-border-radius: 2px 2px 0 0; border-radius: 2px 2px 0 0;}.claro .dijitTabContainerBottom-tabs .dijitTab {-moz-border-radius: 0 0 2px 2px; border-radius: 0 0 2px 2px;}.claro .dijitTabContainerLeft-tabs .dijitTab {-moz-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px;}.claro .dijitTabContainerRight-tabs .dijitTab {-moz-border-radius: 0 2px 2px 0; border-radius: 0 2px 2px 0;}.claro .tabStripButton {background-color: #e5f2fe; border: 1px solid #b5bcc7;}.claro .dijitTabListContainer-top .tabStripButton {padding: 4px 3px; margin-top: 7px; background-image: -moz-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%);}.claro .dijitTabListContainer-bottom .tabStripButton {padding: 4px 3px; margin-bottom: 7px; background-image: -moz-linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%);}.claro .tabStripButtonHover {background-color: #abd6ff;}.claro .tabStripButtonActive {background-color: #7dbdfa;}.claro .dijitTabStripIcon {height: 15px; width: 15px; margin: 0 auto; background: url("form/images/buttonArrows.png") no-repeat -75px 50%; background-color: transparent;}.claro .dijitTabStripSlideRightIcon {background-position: -24px 50%;}.claro .dijitTabStripMenuIcon {background-position: -51px 50%;}.claro .dijitTabListContainer-top .tabStripButtonDisabled,.claro .dijitTabListContainer-bottom .tabStripButtonDisabled {background-color: #d3d3d3; border: 1px solid #b5bcc7;}.claro .tabStripButtonDisabled .dijitTabStripSlideLeftIcon {background-position: -175px 50%;}.claro .tabStripButtonDisabled .dijitTabStripSlideRightIcon {background-position: -124px 50%;}.claro .tabStripButtonDisabled .dijitTabStripMenuIcon {background-position: -151px 50%;}.claro .dijitTabContainerNested .dijitTabListWrapper {height: auto;}.claro .dijitTabContainerNested .dijitTabContainerTop-tabs {border-bottom: solid 1px #b5bcc7; padding: 2px 2px 4px;}.claro .dijitTabContainerTabListNested .dijitTab {background-color: rgba(255, 255, 255, 0); border: none; padding: 4px; border-color: rgba(118, 157, 192, 0); -webkit-transition-property: background-color, border-color; -moz-transition-property: background-color, border-color; transition-property: background-color, border-color; -webkit-transition-duration: 0.3s; -moz-transition-duration: 0.3s; transition-duration: 0.3s; -moz-border-radius: 2px; border-radius: 2px; top: 0; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; background-image: url("layout/images/tabNested.png") repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%);}.claro .dijitTabContainerTabListNested .dijitTabHover {background-color: #e5f2fe; border: solid 1px #cfe5fa; padding: 3px; -webkit-transition-duration: 0.2s; -moz-transition-duration: 0.2s; transition-duration: 0.2s;}.claro .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: none;}.claro .dijitTabContainerTabListNested .dijitTabActive {border: solid 1px #759dc0; padding: 3px; -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.claro .dijitTabContainerTabListNested .dijitTabChecked {padding: 3px; border: solid 1px #759dc0; background-color: #cfe5fa;}.claro .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: none; background-image: none;}.claro .dijitTabPaneWrapperNested {border: none;}.claro .dijitTabContainer .dijitTab,.claro .dijitTabContainer .tabStripButton {_background-image: none;}.claro .dijitDialog {border: 1px solid #759dc0; -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);}.claro .dijitDialogPaneContent {background: #ffffff repeat-x top left; border-top: 1px solid #759dc0; padding: 10px 8px; position: relative;}.claro .dijitDialogPaneContentArea {margin: -10px -8px; padding: 10px 8px;}.claro .dijitDialogPaneActionBar {background-color: #efefef; padding: 3px 5px 2px 7px; text-align: right; border-top: 1px solid #d3d3d3;}.claro .dijitDialogPaneContent .dijitDialogPaneActionBar {margin: 10px -8px -10px;}.claro .dijitTooltipDialog .dijitDialogPaneActionBar {-webkit-border-bottom-right-radius: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -moz-border-radius-bottomleft: 4px; margin: 10px -10px -8px;}.claro .dijitDialogPaneActionBar .dijitButton {float: none;}.claro .dijitDialogTitleBar {border: 1px solid #ffffff; border-top: none; background-color: #abd6ff; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 5px 7px 4px 7px;}.claro .dijitDialogTitle {padding: 0 1px; font-size: 1.091em; color: #000000;}.claro .dijitDialogCloseIcon {background: url("images/dialogCloseIcon.png"); background-repeat: no-repeat; position: absolute; right: 5px; height: 15px; width: 21px;}.dj_ie6 .claro .dijitDialogCloseIcon {background-image: url("images/dialogCloseIcon8bit.png");}.claro .dijitDialogCloseIconHover {background-position: -21px;}.claro .dijitDialogCloseIcon:active {background-position: -42px;}.claro .dijitTooltip,.claro .dijitTooltipDialog {background: transparent;}.dijitTooltipBelow {padding-top: 13px; padding-left: 3px; padding-right: 3px;}.dijitTooltipAbove {padding-bottom: 13px; padding-left: 3px; padding-right: 3px;}.claro .dijitTooltipContainer {background-color: #ffffff; background-image: -moz-linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); background-image: -webkit-linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); background-image: -o-linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); background-image: linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); background-position: bottom; border: 1px solid #759dc0; padding: 6px 8px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); font-size: 1em; color: #000000;}.claro .dijitTooltipConnector {border: 0; z-index: 2; background-image: url("images/tooltip.png"); background-repeat: no-repeat; width: 16px; height: 14px;}.dj_ie6 .claro .dijitTooltipConnector {background-image: url("images/tooltip8bit.png");}.claro .dijitTooltipBelow .dijitTooltipConnector {top: 0; left: 3px; background-position: -31px 0; width: 16px; height: 14px;}.claro .dijitTooltipAbove .dijitTooltipConnector {bottom: 0; left: 3px; background-position: -15px 0; width: 16px; height: 14px;}.dj_ie7 .claro .dijitTooltipAbove .dijitTooltipConnector,.dj_ie6 .claro .dijitTooltipAbove .dijitTooltipConnector {bottom: -1px;}.claro .dijitTooltipABRight .dijitTooltipConnector {left: auto; right: 3px;}.claro .dijitTooltipLeft {padding-right: 14px;}.claro .dijitTooltipLeft .dijitTooltipConnector {right: 0; background-position: 0 0; width: 16px; height: 14px;}.claro .dijitTooltipRight {padding-left: 14px;}.claro .dijitTooltipRight .dijitTooltipConnector {left: 0; background-position: -48px 0; width: 16px; height: 14px;}.claro .dijitDialogUnderlay {background: #ffffff;}.claro .dijitAccordionContainer {border: none;}.claro .dijitAccordionInnerContainer {background-color: #efefef; border: solid 1px #b5bcc7; margin-bottom: 1px; -webkit-transition-property: background-color, border; -moz-transition-property: background-color, border; transition-property: background-color, border; -webkit-transition-duration: 0.3s; -moz-transition-duration: 0.3s; transition-duration: 0.3s; -webkit-transition-timing-function: linear; -moz-transition-timing-function: linear; transition-timing-function: linear;}.claro .dijitAccordionTitle {background-color: transparent; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 5px 7px 2px 7px; min-height: 17px; color: #494949;}.claro .dijitAccordionContainer .dijitAccordionChildWrapper {background-color: #ffffff; border: 1px solid #759dc0; margin: 0 2px 2px;}.claro .dijitAccordionContainer .dijitAccordionContainer-child {padding: 9px;}.claro .dijitAccordionInnerContainerHover {border: 1px solid #759dc0; background-color: #abd6ff; -webkit-transition-duration: 0.2s; -moz-transition-duration: 0.2s; transition-duration: 0.2s;}.claro .dijitAccordionInnerContainerHover .dijitAccordionTitle {color: #000000;}.claro .dijitAccordionInnerContainerActive {border: 1px solid #759dc0; background-color: #7dbdfa; -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.claro .dijitAccordionInnerContainerActive .dijitAccordionTitle {background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none; color: #000000;}.claro .dijitAccordionInnerContainerSelected {border-color: #759dc0; background-color: #cfe5fa;}.claro .dijitAccordionInnerContainerSelected .dijitAccordionTitle {color: #000000; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitContentPane {padding: 8px;}.claro .dijitTabContainerTop-dijitContentPane,.claro .dijitTabContainerLeft-dijitContentPane,.claro .dijitTabContainerBottom-dijitContentPane,.claro .dijitTabContainerRight-dijitContentPane,.claro .dijitAccordionContainer-dijitContentPane {background-color: #ffffff; padding: 8px;}.claro .dijitSplitContainer-dijitContentPane,.claro .dijitBorderContainer-dijitContentPane {background-color: #ffffff; padding: 8px;}.claro .dijitCalendar {border: solid 1px #b5bcc7; -moz-border-radius: 4px; border-radius: 4px; background-color: #cfe5fa; background-image: url("images/calendar.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); text-align: center; padding: 6px 5px 3px 5px;}.dj_ie6 .claro .dijitCalendar {background-image: none;}.claro .dijitCalendar img {border: none;}.claro .dijitCalendarHover,.claro .dijitCalendar:hover,.claro .dijitCalendarActive {background-color: #abd6ff; border: solid 1px #759dc0;}.claro .dijitCalendar table {border-collapse: separate;}.claro .dijitCalendarMonthContainer th {text-align: center; padding-bottom: 4px; vertical-align: middle;}.claro .dijitCalendarMonthLabel {color: #000000; font-size: 1.091em; padding: 0 4px;}.claro .dijitCalendarIncrementControl {width: 18px; height: 16px; background-image: url("images/calendarArrows.png"); background-repeat: no-repeat;}.dj_ie6 .claro .dijitCalendarIncrementControl {background-image: url("images/calendarArrows8bit.png");}.claro .dijitCalendarIncrease {background-position: -18px 0;}.claro .dijitCalendarArrowHover .dijitCalendarDecrease,.claro .dijitCalendarArrow:hover .dijitCalendarDecrease {background-position: -36px 0;}.claro .dijitCalendarArrowHover .dijitCalendarIncrease,.claro .dijitCalendarArrow:hover .dijitCalendarIncrease {background-position: -55px 0;}.claro .dijitCalendarArrowActive .dijitCalendarDecrease,.claro .dijitCalendarArrow:active .dijitCalendarDecrease {background-position: -72px 0;}.claro .dijitCalendarArrowActive .dijitCalendarIncrease,.claro .dijitCalendarArrow:active .dijitCalendarIncrease {background-position: -91px 0;}.claro .dijitA11ySideArrow {display: none;}.claro .dijitCalendarDayLabelTemplate {padding-bottom: 0; text-align: center; border-bottom: 1px solid #b5bcc7; padding: 0 3px 2px;}.claro .dijitCalendarDayLabel {padding: 0 4px 0 4px; font-weight: bold; font-size: 0.909em; text-align: center; color: #000000;}.claro .dijitCalendarDateTemplate {background-color: #ffffff; border-bottom: 1px solid #d3d3d3; padding-top: 0; font-size: 0.909em; font-family: Arial; font-weight: bold; letter-spacing: .05em; text-align: center; color: #000000;}.dj_ie6 .claro .dijitCalendarDateTemplate {background-image: none;}.claro .dijitCalendarPreviousMonth,.claro .dijitCalendarNextMonth {background-color: #e5f2fe; background-image: none; border-bottom: solid 1px #d3d3d3;}.claro .dijitCalendarDateTemplate .dijitCalendarDateLabel {text-decoration: none; display: block; padding: 3px 5px 3px 4px; border: solid 1px #ffffff; background-color: rgba(171, 212, 251, 0); -webkit-transition-property: background-color, border; -moz-transition-property: background-color, border; transition-property: background-color, border; -webkit-transition-duration: 0.35s; -moz-transition-duration: 0.35s; transition-duration: 0.35s;}.claro .dijitCalendarPreviousMonth .dijitCalendarDateLabel,.claro .dijitCalendarNextMonth .dijitCalendarDateLabel {color: #759dc0; border-color: #e5f2fe;}.claro .dijitCalendarYearContainer {vertical-align: middle;}.claro .dijitCalendarYearControl {padding: 1px 2px 2px 2px;}.claro .dijitCalendarYearLabel {padding: 2px 0 0 0; margin: 0; font-size: 1.17em;}.claro .dijitCalendarYearLabel span {vertical-align: middle;}.claro .dijitCalendarSelectedYear {padding: 0 3px;}.claro .dijitCalendarNextYear,.claro .dijitCalendarPreviousYear {padding: 1px 6px 1px 6px; font-size: 0.909em;}.claro .dijitCalendarSelectedYear {font-size: 1.091em; color: #000000;}.claro .dijitCalendarHoveredDate .dijitCalendarDateLabel,.claro .dijitCalendarLite .dijitCalendarEnabledDate:hover .dijitCalendarDateLabel {background-color: #abd6ff; border: solid 1px #759dc0; color: #000000; -webkit-transition-duration: 0.2s; -moz-transition-duration: 0.2s; transition-duration: 0.2s;}.claro .dijitCalendarNextYearHover,.claro .dijitCalendarNextYear:hover,.claro .dijitCalendarPreviousYearHover,.claro .dijitCalendarPreviousYear:hover {color: #000000; border: solid 1px #ffffff; padding: 0 5px 0 5px; background-color: #e5f2fe;}.claro .dijitCalendarNextYearActive,.claro .dijitCalendarNextYear:active .claro .dijitCalendarPreviousYearActive,.claro .dijitCalendarPreviousYear:active {border: solid 1px #759dc0; padding: 0 5px 0 5px; background-color: #7dbdfa;}.claro .dijitCalendarActiveDate .dijitCalendarDateLabel,.claro .dijitCalendarEnabledDate:active .dijitCalendarDateLabel {background-color: #7dbdfa; border: solid 1px #ffffff; -webkit-transition-duration: 0.1s; -moz-transition-duration: 0.1s; transition-duration: 0.1s;}.dj_ie6 .claro .dijitCalendarActiveDate .dijitCalendarDateLabel {background-image: none;}.claro .dijitCalendarSelectedDate .dijitCalendarDateLabel {color: #000000; background-color: #abd6ff; border-color: #759dc0;}.claro .dijitCalendarDisabledDate .dijitCalendarDateLabel {color: #818181; text-decoration: line-through;}.claro .dijitCalendar .dijitDropDownButton {margin: 0;}.claro .dijitCalendar .dijitButtonText {padding: 1px 0 3px; margin-right: -4px;}.claro .dijitCalendar .dijitDropDownButton .dijitButtonNode {padding: 0 3px 0 2px; border: solid 1px #b5bcc7; -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); box-shadow: 0 0 0 rgba(0, 0, 0, 0); background-color: transparent; background-image: none;}.claro .dijitCalendar .dijitDropDownButtonHover .dijitButtonNode,.claro .dijitCalendar .dijitDropDownButton:hover .dijitButtonNode {background-color: #e5f2fe; border: solid 1px #ffffff;}.claro .dijitCalendarMonthMenu {border-color: #759dc0; background-color: #ffffff; text-align: center; background-image: none;}.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabel {border-top: solid 1px #ffffff; border-bottom: solid 1px #ffffff; padding: 2px 0;}.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover,.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabelActive {border-color: #759dc0; border-width: 1px 0; background-color: #abd6ff; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); background-image: linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr= #ffffff , endColorstr= #abd6ff );}.claro .dijitMenuBar {border: 1px solid #b5bcc7; margin: 0; padding: 0; background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitMenu {background-color: #ffffff; border: 1px solid #759dc0;}.claro .dijitMenuItem {color: #000000;}.claro .dijitMenuBar .dijitMenuItem {padding: 6px 10px 7px; margin: -1px;}.claro .dijitMenuBar .dijitMenuItemHover,.claro .dijitMenuBar .dijitMenuItemSelected {border: solid 1px #759dc0; padding: 5px 9px 6px;}.claro .dijitMenuTable {border-collapse: separate; border-spacing: 0 0; padding: 0;}.claro .dijitMenu .dijitMenuItem td,.claro .dijitComboBoxMenu .dijitMenuItem {padding: 2px; border-width: 1px 0 1px 0; border-style: solid; border-color: #ffffff;}.claro .dijitMenu .dijitMenuItemHover td,.claro .dijitMenu .dijitMenuItemSelected td,.claro .dijitMenuItemHover,.claro .dijitComboBoxMenu .dijitMenuItemHover,.claro .dijitMenuItemSelected {border-color: #759dc0; background-color: #abd6ff; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitMenuItemActive {background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.dj_ie .claro .dijitMenuActive .dijitMenuItemHover,.dj_ie .claro .dijitMenuActive .dijitMenuItemSelected,.dj_ie .claro .dijitMenuPassive .dijitMenuItemHover,.dj_ie .claro .dijitMenuPassive .dijitMenuItemSelected {padding-top: 6px; padding-bottom: 5px; margin-top: -3px;}.claro td.dijitMenuItemIconCell {padding: 2px; margin: 0 0 0 4px;}.claro td.dijitMenuItemLabel {padding-top: 5px; padding-bottom: 5px;}.claro .dijitMenuExpand {width: 7px; height: 7px; background-image: url("images/spriteArrows.png"); background-position: -14px 0; margin-right: 3px; margin-bottom: 4px;}.claro .dijitMenuSeparatorTop {height: auto; margin-top: 1px; border-bottom: 1px solid #b5bcc7;}.claro .dijitMenuSeparatorBottom {height: auto; margin-bottom: 1px;}.claro .dijitCheckedMenuItem .dijitMenuItemIcon,.claro .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("form/images/checkboxRadioButtonStates.png"); background-repeat: no-repeat; background-position: -15px 50%; width: 15px; height: 16px;}.dj_ie6 .claro .dijitCheckedMenuItem .dijitMenuItemIcon,.dj_ie6 .claro .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("form/images/checkboxAndRadioButtons_IE6.png");}.claro .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon {background-position: 0 50%;}.claro .dijitRadioMenuItem .dijitMenuItemIcon {background-position: -105px 50%;}.claro .dijitRadioMenuItemChecked .dijitMenuItemIcon {background-position: -90px 50%;}.claro .dijitComboBoxMenu {margin-left: 0; background-image: none;}.claro .dijitMenu .dijitMenuItemSelected td,.claro .dijitComboBoxMenu .dijitMenuItemSelected {color: #000000; border-color: #759dc0; background-color: #abd6ff;}.claro .dijitComboBoxMenuActive .dijitMenuItemSelected {background-color: #7dbdfa;}.claro .dijitMenuPreviousButton,.claro .dijitMenuNextButton {font-style: italic;}.claro .dijitSliderBar {border-style: solid; outline: 1px;}.claro .dijitSliderFocused .dijitSliderBar {border-color: #759dc0;}.claro .dijitSliderHover .dijitSliderBar {border-color: #759dc0;}.claro .dijitSliderDisabled .dijitSliderBar {background-image: none; border-color: #d3d3d3;}.claro .dijitRuleLabelsContainer {color: #000000;}.claro .dijitRuleLabelsContainerH {padding: 2px 0;}.claro .dijitSlider .dijitSliderProgressBarH,.claro .dijitSlider .dijitSliderLeftBumper {border-color: #b5bcc7; background-color: #cfe5fa; background-image: -moz-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px); background-image: -webkit-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px); background-image: -o-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px); background-image: linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px);}.claro .dijitSlider .dijitSliderRemainingBarH,.claro .dijitSlider .dijitSliderRightBumper {border-color: #b5bcc7; background-color: #ffffff;}.claro .dijitSliderRightBumper {border-right: solid 1px #b5bcc7;}.claro .dijitSliderLeftBumper {border-left: solid 1px #b5bcc7;}.claro .dijitSliderHover .dijitSliderProgressBarH,.claro .dijitSliderHover .dijitSliderLeftBumper {background-color: #abd6ff; border-color: #759dc0;}.claro .dijitSliderHover .dijitSliderRemainingBarH,.claro .dijitSliderHover .dijitSliderRightBumper {background-color: #ffffff; border-color: #759dc0;}.claro .dijitSliderFocused .dijitSliderProgressBarH,.claro .dijitSliderFocused .dijitSliderLeftBumper {background-color: #abd6ff; border-color: #759dc0; -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2);}.claro .dijitSliderFocused .dijitSliderRemainingBarH,.claro .dijitSliderFocused .dijitSliderRightBumper {background-color: #ffffff; border-color: #759dc0; -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2);}.claro .dijitSliderDisabled .dijitSliderProgressBarH,.claro .dijitSliderDisabled .dijitSliderLeftBumper {background-color: #d3d3d3; background-image: none;}.claro .dijitSliderDisabled .dijitSliderRemainingBarH,.claro .dijitSliderDisabled .dijitSliderRightBumper {background-color: #efefef;}.claro .dijitRuleLabelsContainerV {padding: 0 2px;}.claro .dijitSlider .dijitSliderProgressBarV,.claro .dijitSlider .dijitSliderBottomBumper {border-color: #b5bcc7; background-color: #cfe5fa; background-image: -moz-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px); background-image: -webkit-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px); background-image: -o-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px); background-image: linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px);}.claro .dijitSlider .dijitSliderRemainingBarV,.claro .dijitSlider .dijitSliderTopBumper {border-color: #b5bcc7; background-color: #ffffff;}.claro .dijitSliderBottomBumper {border-bottom: solid 1px #b5bcc7;}.claro .dijitSliderTopBumper {border-top: solid 1px #b5bcc7;}.claro .dijitSliderHover .dijitSliderProgressBarV,.claro .dijitSliderHover .dijitSliderBottomBumper {background-color: #abd6ff; border-color: #759dc0;}.claro .dijitSliderHover .dijitSliderRemainingBarV,.claro .dijitSliderHover .dijitSliderTopBumper {background-color: #ffffff; border-color: #759dc0;}.claro .dijitSliderFocused .dijitSliderProgressBarV,.claro .dijitSliderFocused .dijitSliderBottomBumper {background-color: #abd6ff; border-color: #759dc0; -webkit-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2);}.claro .dijitSliderFocused .dijitSliderRemainingBarV,.claro .dijitSliderFocused .dijitSliderTopBumper {background-color: #ffffff; border-color: #759dc0; -webkit-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2);}.claro .dijitSliderDisabled .dijitSliderProgressBarV,.claro .dijitSliderDisabled .dijitSliderBottomBumper {background-color: #d3d3d3;}.claro .dijitSliderDisabled .dijitSliderRemainingBarV,.claro .dijitSliderDisabled .dijitSliderTopBumper {background-color: #efefef;}.claro .dijitSliderImageHandleH {border: 0; width: 18px; height: 16px; background-image: url("form/images/sliderThumbs.png"); background-repeat: no-repeat; background-position: 0 0;}.claro .dijitSliderHover .dijitSliderImageHandleH {background-position: -18px 0;}.claro .dijitSliderFocused .dijitSliderImageHandleH {background-position: -36px 0;}.claro .dijitSliderProgressBarH .dijitSliderThumbHover {background-position: -36px 0;}.claro .dijitSliderProgressBarH .dijitSliderThumbActive {background-position: -36px 0;}.claro .dijitSliderReadOnly .dijitSliderImageHandleH,.claro .dijitSliderDisabled .dijitSliderImageHandleH {background-position: -54px 0;}.claro .dijitSliderImageHandleV {border: 0; width: 18px; height: 16px; background-image: url("form/images/sliderThumbs.png"); background-repeat: no-repeat; background-position: -289px 0;}.claro .dijitSliderHover .dijitSliderImageHandleV {background-position: -307px 0;}.claro .dijitSliderFocused .dijitSliderImageHandleV {background-position: -325px 0;}.claro .dijitSliderProgressBarV .dijitSliderThumbHover {background-position: -325px 0;}.claro .dijitSliderProgressBarV .dijitSliderThumbActive {background-position: -325px 0;}.claro .dijitSliderReadOnly .dijitSliderImageHandleV,.claro .dijitSliderDisabled .dijitSliderImageHandleV {background-position: -343px 0;}.claro .dijitSliderButtonContainerH {padding: 1px 3px 1px 2px;}.claro .dijitSliderButtonContainerV {padding: 3px 1px 2px 1px;}.claro .dijitSliderDecrementIconH,.claro .dijitSliderIncrementIconH,.claro .dijitSliderDecrementIconV,.claro .dijitSliderIncrementIconV {background-image: url("form/images/commonFormArrows.png"); background-repeat: no-repeat; background-color: #efefef; -moz-border-radius: 2px; border-radius: 2px; border: solid 1px #b5bcc7; font-size: 1px;}.claro .dijitSliderDecrementIconH,.claro .dijitSliderIncrementIconH {height: 12px; width: 9px;}.claro .dijitSliderDecrementIconV,.claro .dijitSliderIncrementIconV {height: 9px; width: 12px;}.claro .dijitSliderActive .dijitSliderDecrementIconH,.claro .dijitSliderActive .dijitSliderIncrementIconH,.claro .dijitSliderActive .dijitSliderDecrementIconV,.claro .dijitSliderActive .dijitSliderIncrementIconV,.claro .dijitSliderHover .dijitSliderDecrementIconH,.claro .dijitSliderHover .dijitSliderIncrementIconH,.claro .dijitSliderHover .dijitSliderDecrementIconV,.claro .dijitSliderHover .dijitSliderIncrementIconV {border: solid 1px #759dc0; background-color: #ffffff;}.claro .dijitSliderDecrementIconH {background-position: -357px 50%;}.claro .dijitSliderActive .dijitSliderDecrementIconH .claro .dijitSliderHover .dijitSliderDecrementIconH {background-position: -393px 50%;}.claro .dijitSliderIncrementIconH {background-position: -251px 50%;}.claro .dijitSliderActive .dijitSliderIncrementIconH .claro .dijitSliderHover .dijitSliderIncrementIconH {background-position: -283px 50%;}.claro .dijitSliderDecrementIconV {background-position: -38px 50%;}.claro .dijitSliderActive .dijitSliderDecrementIconV .claro .dijitSliderHover .dijitSliderDecrementIconV {background-position: -73px 50%;}.claro .dijitSliderIncrementIconV {background-position: -143px 49%;}.claro .dijitSliderActive .dijitSliderIncrementIconV .claro .dijitSliderHover .dijitSliderIncrementIconV {background-position: -178px 49%;}.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonHover,.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonHover,.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonHover,.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonHover {background-color: #cfe5fa;}.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonActive,.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonActive,.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonActive,.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonActive {background-color: #abd6ff; border-color: #759dc0;}.claro .dijitSliderButtonInner {visibility: hidden;}.claro .dijitSliderDisabled .dijitSliderBar {border-color: #d3d3d3;}.claro .dijitSliderReadOnly *,.claro .dijitSliderDisabled * {border-color: #d3d3d3; color: #818181;}.claro .dijitSliderReadOnly .dijitSliderDecrementIconH,.claro .dijitSliderDisabled .dijitSliderDecrementIconH {background-position: -321px 50%; background-color: #efefef;}.claro .dijitSliderReadOnly .dijitSliderIncrementIconH,.claro .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -215px 50%; background-color: #efefef;}.claro .dijitSliderReadOnly .dijitSliderDecrementIconV,.claro .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -3px 49%; background-color: #efefef;}.claro .dijitSliderReadOnly .dijitSliderIncrementIconV,.claro .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -107px 49%; background-color: #efefef;}.claro .dijitColorPalette {border: 1px solid #b5bcc7; background: #ffffff; -moz-border-radius: 0; border-radius: 0;}.claro .dijitColorPalette .dijitPaletteImg {border: 1px solid #d3d3d3;}.claro .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000000;}.claro .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.claro .dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000000;}.claro .dijitInlineEditBoxDisplayMode {border: 1px solid transparent;}.claro .dijitInlineEditBoxDisplayModeHover {background-color: #e5f2fe; border: solid 1px #759dc0;}.dj_ie6 .claro .dijitInlineEditBoxDisplayMode {border: none;}.claro .dijitProgressBar {margin: 2px 0 2px 0;}.claro .dijitProgressBarEmpty {background-color: #ffffff; border-color: #759dc0;}.claro .dijitProgressBarTile {background-color: #abd6ff; background-image: url("images/progressBarFull.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); background-attachment: scroll;}.dj_ie6 .claro .dijitProgressBarTile {background-image: none;}.claro .dijitProgressBarFull {border: 0px solid #759dc0; border-right-width: 1px; -webkit-transition-property: width; -moz-transition-property: width; transition-property: width; -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s;}.claro .dijitProgressBarLabel {color: #000000;}.claro .dijitProgressBarIndeterminate .dijitProgressBarTile {background: #efefef url("images/progressBarAnim.gif") repeat-x top;}.claro .dijitTimePicker .dijitButtonNode {padding: 0 0; -moz-border-radius: 0; border-radius: 0;}.claro .dijitTimePicker {border: 1px #b5bcc7 solid; border-top: none; border-bottom: none; background-color: #fff;}.claro .dijitTimePickerItem {background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; border-top: solid 1px #b5bcc7; border-bottom: solid 1px #b5bcc7; margin-top: -1px;}.claro .dijitTimePickerTick {color: #818181; background-color: #efefef; font-size: 0.818em;}.claro .dijitTimePickerMarker {background-color: #e5f2fe; font-size: 1em; white-space: nowrap;}.claro .dijitTimePickerTickHover,.claro .dijitTimePickerMarkerHover,.claro .dijitTimePickerMarkerSelected,.claro .dijitTimePickerTickSelected {background-color: #7dbdfa; color: #000000;}.claro .dijitTimePickerMarkerSelected,.claro .dijitTimePickerTickSelected {font-size: 1em;}.claro .dijitTimePickerTick .dijitTimePickerItemInner {padding: 1px; margin: 0;}.claro .dijitTimePicker .dijitButtonNode {border-left: none; border-right: none; border-color: #b5bcc7; background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitTimePicker .dijitArrowButtonInner {height: 100%; background-image: url("form/images/commonFormArrows.png"); background-repeat: no-repeat; background-position: -140px 45%;}.claro .dijitTimePicker .dijitDownArrowButton .dijitArrowButtonInner {background-position: -35px 45%;}.claro .dijitTimePicker .dijitUpArrowHover,.claro .dijitTimePicker .dijitDownArrowHover {background-color: #abd6ff;}.claro .dijitTimePicker .dijitUpArrowHover .dijitArrowButtonInner {background-position: -175px 45%;}.claro .dijitTimePicker .dijitDownArrowHover .dijitArrowButtonInner {background-position: -70px 45%;}.claro .dijitBorderContainer {padding: 5px;}.claro .dijitSplitContainer-child,.claro .dijitBorderContainer-child {border: 1px #b5bcc7 solid;}.claro .dijitBorderContainer-dijitTabContainerTop,.claro .dijitBorderContainer-dijitTabContainerBottom,.claro .dijitBorderContainer-dijitTabContainerLeft,.claro .dijitBorderContainer-dijitTabContainerRight,.claro .dijitBorderContainer-dijitAccordionContainer {border: none;}.claro .dijitBorderContainer-dijitBorderContainer {border: 0; padding: 0;}.claro .dijitSplitterH,.claro .dijitGutterH {background: none; border: 0; height: 5px;}.dj_ios .claro .dijitSplitterH,.dj_android .claro .dijitSplitterH {height: 11px;}.claro .dijitSplitterH .dijitSplitterThumb {background: #b5bcc7 none; height: 1px; top: 2px; width: 19px;}.dj_ios .claro .dijitSplitterH .dijitSplitterThumb,.dj_android .claro .dijitSplitterH .dijitSplitterThumb {top: 5px;}.claro .dijitSplitterV,.claro .dijitGutterV {background: none; border: 0; width: 5px; margin: 0;}.dj_ios .claro .dijitSplitterV,.dj_android .claro .dijitSplitterV {width: 11px;}.claro .dijitSplitterV .dijitSplitterThumb {background: #b5bcc7 none; height: 19px; left: 2px; width: 1px; margin: 0;}.dj_ios .claro .dijitSplitterV .dijitSplitterThumb,.dj_android .claro .dijitSplitterV .dijitSplitterThumb {left: 5px;}.claro .dijitSplitterHHover,.claro .dijitSplitterVHover {font-size: 1px; background-color: #cfe5fa;}.claro .dijitSplitterHHover {background-image: -moz-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: -webkit-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: -o-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%);}.claro .dijitSplitterVHover {background-image: -moz-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: -webkit-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: -o-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); background-image: linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%);}.claro .dijitSplitterHHover .dijitSplitterThumb,.claro .dijitSplitterVHover .dijitSplitterThumb {background: #759dc0 none;}.claro .dijitSplitterHActive,.claro .dijitSplitterVActive {font-size: 1px; background-color: #abd6ff; background-image: none;}.claro .dijitTreeNode {zoom: 1;}.claro .dijitTreeIsRoot {background-image: none;}.claro .dijitTreeRow,.claro .dijitTreeNode .dojoDndItemBefore,.claro .dijitTreeNode .dojoDndItemAfter {padding: 4px 0 2px 0; background-color: none; background-color: transparent; background-color: rgba(171, 214, 255, 0); background-position: 0 0; background-repeat: repeat-x; border: solid 0 transparent; color: #000000; -webkit-transition-property: background-color, border-color; -moz-transition-property: background-color, border-color; transition-property: background-color, border-color; -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s; -webkit-transition-timing-function: ease-out; -moz-transition-timing-function: ease-out; transition-timing-function: ease-out;}.claro .dijitTreeRowSelected {background-color: #cfe5fa; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 3px 0 1px; border-color: #759dc0; border-width: 1px 0; color: #000000;}.claro .dijitTreeRowHover {background-color: #abd6ff; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 3px 0 1px; border-color: #759dc0; border-width: 1px 0; color: #000000; -webkit-transition-duration: 0.25s; -moz-transition-duration: 0.25s; transition-duration: 0.25s;}.claro .dijitTreeRowActive {background-color: #7dbdfa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 3px 0 1px; border-color: #759dc0; border-width: 1px 0; color: #000000;}.claro .dijitTreeRowFocused {background-repeat: repeat;}.claro .dijitTreeExpando {background-image: url("images/treeExpandImages.png"); width: 16px; height: 16px; background-position: -35px 0;}.dj_ie6 .claro .dijitTreeExpando {background-image: url("images/treeExpandImages8bit.png");}.claro .dijitTreeRowHover .dijitTreeExpandoOpened {background-position: -53px 0;}.claro .dijitTreeExpandoClosed {background-position: 1px 0;}.claro .dijitTreeRowHover .dijitTreeExpandoClosed {background-position: -17px 0;}.claro .dijitTreeExpandoLeaf,.dj_ie6 .claro .dijitTreeExpandoLeaf {background-image: none;}.claro .dijitTreeExpandoLoading {background-image: url("../../icons/images/loadingAnimation.gif"); background-position: 0 0;}.claro .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {border-top: 2px solid #759dc0;}.claro .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {border-bottom: 2px solid #759dc0;} .claro .dijitToolbar {border-bottom: 1px solid #b5bcc7; background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 2px 0 2px 4px; zoom: 1;}.claro .dijitToolbar label {padding: 0 3px 0 6px;}.claro .dijitToolbar .dijitButton .dijitButtonNode,.claro .dijitToolbar .dijitDropDownButton .dijitButtonNode,.claro .dijitToolbar .dijitComboButton .dijitButtonNode,.claro .dijitToolbar .dijitToggleButton .dijitButtonNode,.claro .dijitToolbar .dijitComboBox .dijitButtonNode {border-width: 0; padding: 2px; -moz-border-radius: 2px; border-radius: 2px; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; -webkit-transition-property: background-color; -moz-transition-property: background-color; transition-property: background-color; -webkit-transition-duration: 0.3s; -moz-transition-duration: 0.3s; transition-duration: 0.3s; background-color: rgba(171, 214, 255, 0); background-image: none;}.dj_ie .claro .dijitToolbar .dijitButton .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitDropDownButton .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitToggleButton .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitComboBox .dijitButtonNode {background-color: transparent;}.dj_ie .claro .dijitToolbar .dijitButtonHover .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNodeHover,.dj_ie .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover,.dj_ie .claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode {background-color: #abd6ff;}.dj_ie .claro .dijitToolbar .dijitButtonActive .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode,.dj_ie .claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode {background-color: #abd6ff;}.claro .dijitToolbar .dijitComboButton .dijitStretch {-moz-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px;}.claro .dijitToolbar .dijitComboButton .dijitArrowButton {-moz-border-radius: 0 2px 2px 0; border-radius: 0 2px 2px 0;}.claro .dijitToolbar .dijitComboBox .dijitButtonNode {padding: 0;}.claro .dijitToolbar .dijitButtonHover .dijitButtonNode,.claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode,.claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode,.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode {border-width: 1px; background-color: #abd6ff; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 1px;}.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode,.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton {background-color: #f3ffff;}.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNodeHover,.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButtonHover {background-color: #abd6ff;}.claro .dijitToolbar .dijitButtonActive .dijitButtonNode,.claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode,.claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode {border-width: 1px; background-color: #7dbdfa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none; padding: 1px;}.claro .dijitToolbar .dijitComboButtonActive {-webkit-transition-duration: 0.2s; -moz-transition-duration: 0.2s; transition-duration: 0.2s; border-width: 1px; padding: 0;}.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode,.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton {background-color: #f3ffff; padding: 2px;}.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNodeActive {background-color: #7dbdfa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButtonActive {background-color: #7dbdfa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton,.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton {border-left-width: 0;}.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton {padding-left: 2px;}.claro .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode {margin: 0; border-width: 1px; border-style: solid; background-image: none; border-color: #759dc0; background-color: #ffffff; padding: 1px;}.claro .dijitToolbarSeparator {background: url("../../icons/images/editorIconsEnabled.png");}.claro .dijitDisabled .dijitToolbar {background: none; background-color: #efefef; border-bottom: 1px solid #d3d3d3;}.claro .dijitToolbar .dijitComboBoxDisabled .dijitArrowButtonInner {background-position: 0 50%;}.claro .dijitEditorIFrameContainer {padding: 3px 3px 1px 10px;}.claro .dijitEditorIFrame {background-color: #ffffff;}.claro .dijitEditor {border: 1px solid #b5bcc7;}.claro .dijitEditor .dijitEditorIFrameContainer {background-color: #ffffff; background-repeat: repeat-x;}.claro .dijitEditorHover .dijitEditorIFrameContainer,.claro .dijitEditorHover .dijitEditorIFrameContainer .dijitEditorIFrame {background-color: #e5f2fe;}.claro .dijitEditorFocused .dijitEditorIFrameContainer,.claro .dijitEditorFocused .dijitEditorIFrameContainer .dijitEditorIFrame {background-color: #ffffff;}.claro .dijitEditorHover .dijitEditorIFrameContainer,.claro .dijitEditorFocused .dijitEditorIFrameContainer {background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px);}.claro .dijitEditorDisabled {border: 1px solid #d3d3d3; color: #818181;}.claro .dijitDisabled .dijitEditorIFrame,.claro .dijitDisabled .dijitEditorIFrameContainer,.claro .dijitDisabled .dijitEditorIFrameContainer .dijitEditorIFrame {background-color: #efefef; background-image: none;}.dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIconSep {background-position: 0;}.dijitEditorIconSave {background-position: -18px;}.dijitEditorIconPrint {background-position: -36px;}.dijitEditorIconCut {background-position: -54px;}.dijitEditorIconCopy {background-position: -72px;}.dijitEditorIconPaste {background-position: -90px;}.dijitEditorIconDelete {background-position: -108px;}.dijitEditorIconCancel {background-position: -126px;}.dijitEditorIconUndo {background-position: -144px;}.dijitEditorIconRedo {background-position: -162px;}.dijitEditorIconSelectAll {background-position: -180px;}.dijitEditorIconBold {background-position: -198px;}.dijitEditorIconItalic {background-position: -216px;}.dijitEditorIconUnderline {background-position: -234px;}.dijitEditorIconStrikethrough {background-position: -252px;}.dijitEditorIconSuperscript {background-position: -270px;}.dijitEditorIconSubscript {background-position: -288px;}.dijitEditorIconJustifyCenter {background-position: -306px;}.dijitEditorIconJustifyFull {background-position: -324px;}.dijitEditorIconJustifyLeft {background-position: -342px;}.dijitEditorIconJustifyRight {background-position: -360px;}.dijitEditorIconIndent {background-position: -378px;}.dijitEditorIconOutdent {background-position: -396px;}.dijitEditorIconListBulletIndent {background-position: -414px;}.dijitEditorIconListBulletOutdent {background-position: -432px;}.dijitEditorIconListNumIndent {background-position: -450px;}.dijitEditorIconListNumOutdent {background-position: -468px;}.dijitEditorIconTabIndent {background-position: -486px;}.dijitEditorIconLeftToRight {background-position: -504px;}.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir {background-position: -522px;}.dijitEditorIconBackColor {background-position: -540px;}.dijitEditorIconForeColor {background-position: -558px;}.dijitEditorIconHiliteColor {background-position: -576px;}.dijitEditorIconNewPage {background-position: -594px;}.dijitEditorIconInsertImage {background-position: -612px;}.dijitEditorIconInsertTable {background-position: -630px;}.dijitEditorIconSpace {background-position: -648px;}.dijitEditorIconInsertHorizontalRule {background-position: -666px;}.dijitEditorIconInsertOrderedList {background-position: -684px;}.dijitEditorIconInsertUnorderedList {background-position: -702px;}.dijitEditorIconCreateLink {background-position: -720px;}.dijitEditorIconUnlink {background-position: -738px;}.dijitEditorIconViewSource {background-position: -756px;}.dijitEditorIconRemoveFormat {background-position: -774px;}.dijitEditorIconFullScreen {background-position: -792px;}.dijitEditorIconWikiword {background-position: -810px;} .claro .dijitTitlePaneTitle {background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; border: 1px solid #b5bcc7; padding: 0 7px 3px 7px; min-height: 17px; color: #494949;}.claro .dijitFieldset {-moz-border-radius: 4px; border-radius: 4px;}.claro .dijitTitlePaneTitleOpen,.claro .dijitTitlePaneTitleFixedOpen {background-color: #cfe5fa; color: #000000;}.claro .dijitTitlePaneTitleHover {background-color: #abd6ff; border-color: #759dc0;}.claro .dijitTitlePaneTitleActive {background-color: #7dbdfa; border-color: #759dc0; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitTitlePaneTitleFocus {margin-top: 3px; padding-bottom: 2px;}.claro .dijitTitlePane .dijitArrowNode,.claro .dijitFieldset .dijitArrowNode {background-image: url("images/spriteArrows.png"); background-repeat: no-repeat; height: 8px; width: 7px;}.claro .dijitTitlePaneTitleOpen .dijitArrowNode,.claro .dijitFieldsetTitleOpen .dijitArrowNode {background-position: 0 0;}.claro .dijitTitlePaneTitleClosed .dijitArrowNode,.claro .dijitFieldsetTitleClosed .dijitArrowNode {background-position: -14px 0;}.claro .dijitTitlePaneContentOuter {background: #ffffff; border: 1px solid #b5bcc7; border-top: none;}.claro .dijitTitlePaneContentInner {padding: 10px;}.claro .dijitFieldsetContentInner {padding: 4px;}.claro .dijitTitlePaneTextNode,.claro .dijitFieldsetLegendNode {margin-left: 4px; margin-right: 4px; vertical-align: text-top;}.claro .dijitSpinnerButtonContainer {overflow: hidden; position: relative; width: auto; padding: 0 2px;}.claro .dijitSpinnerButtonContainer .dijitSpinnerButtonInner {border-width: 1px 0; border-style: solid none;}.claro .dijitSpinner .dijitArrowButton {width: auto; background-color: #efefef; background-image: url("images/standardGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); _background-image: none; overflow: hidden;}.dj_iequirks .claro .dijitSpinner .dijitArrowButton {overflow: visible;}.claro .dijitSpinner .dijitSpinnerButtonInner {width: 15px;}.claro .dijitSpinner .dijitArrowButtonInner {border: solid 1px #ffffff; border-bottom-width: 0; background-image: url("form/images/commonFormArrows.png"); background-repeat: no-repeat; height: 100%; width: 15px; padding-left: 1px; padding-right: 1px; background-position: -139px center; display: block; margin: -1px 0 -1px 0;}.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner,.dj_ie6 .claro .dijitSpinner .dijitArrowButtonInner,.dj_ie7 .claro .dijitSpinner .dijitArrowButtonInner,.dj_ie8 .claro .dijitSpinner .dijitArrowButtonInner {margin-top: 0;}.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner {width: 19px;}.claro .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {background-position: -34px;}.claro .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding: 0;}.claro .dijitUpArrowButtonActive,.claro .dijitDownArrowButtonActive {background-color: #abd6ff;}.claro .dijitSpinner .dijitUpArrowButtonHover,.claro .dijitSpinner .dijitDownArrowButtonHover,.claro .dijitSpinnerFocused .dijitArrowButton {background-color: #abd6ff;}.claro .dijitSpinner .dijitUpArrowButtonHover .dijitArrowButtonInner {background-position: -174px;}.claro .dijitSpinner .dijitDownArrowButtonHover .dijitArrowButtonInner {background-position: -69px;}.claro .dijitSpinnerFocused {background-color: #ffffff; background-image: none;}.claro .dijitSpinner .dijitDownArrowButtonActive,.claro .dijitSpinner .dijitUpArrowButtonActive {background-color: #7dbefa; background-image: url("images/activeGradient.png"); background-repeat: repeat-x; background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); _background-image: none;}.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner,.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner {border: 0; padding: 1px; margin-right: 2px; margin-bottom: 1px;}.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner {background-position: -173px;}.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner {background-position: -68px;}.claro .dijitSpinnerDisabled .dijitArrowButtonInner {background-color: #efefef;}.claro .dijitSpinnerDisabled .dijitUpArrowButton .dijitArrowButtonInner {background-position: -104px;}.claro .dijitSpinnerDisabled .dijitDownArrowButton .dijitArrowButtonInner {background-position: 1px;}.dj_ie7 .claro .dijitSpinner {overflow: visible;}.dijitRtl .dijitOffScreen {left: auto !important; right: -10000px !important;}.dijitRtl .dijitPlaceHolder {left: auto; right: 0;}.dijitMenuItemRtl {text-align: right;}.dj_iequirks .dijitComboButtonRtl button {float:left;}.dj_ie .dijitTextBoxRtl .dijitInputContainer {clear: right;}.dijitTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitComboBoxRtl .dijitArrowButtonContainer {border-right-width: 1px !important; border-left-width: 0 !important;}.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {right: 0; left: auto;}.dijitSelectRtl .dijitButtonText {float: right;}.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitValidationTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitArrowButtonContainer {float: left;}div.dijitNumberTextBoxRtl {text-align: right;}.dijitCalendarRtl .dijitCalendarDecrementArrow {float: right;}.dijitCalendarRtl .dijitCalendarIncrementArrow {float: left;}.dijitCalendarRtl .dijitCalendarNextYear {margin:0 0.55em 0 0;}.dijitCalendarRtl .dijitCalendarPreviousYear {margin:0 0 0 0.55em;}.dijitSliderRtl .dijitSliderImageHandleV {left:auto;}.dijitSliderRtl .dijitSliderImageHandleH {left:-50%;}.dijitSliderRtl .dijitSliderMoveableH {right:auto; left:0;}.dijitSliderRtl .dijitRuleContainerV {float:right;}.dj_ie .dijitSliderRtl .dijitRuleContainerV {text-align:right;}.dj_ie .dijitSliderRtl .dijitRuleLabelV {text-align:left;}.dj_ie .dijitSliderRtl .dijitRuleLabelH {zoom:1;}.dijitSliderRtl .dijitSliderProgressBarH {float:right; right:0; left:auto;}.dijitRtl .dijitContentPaneLoading .dijitIconLoading,.dijitRtl .dijitContentPaneError .dijitIconError {margin-right: 0; margin-left: 9px;}.dijitTabControllerRtl .nowrapTabStrip {text-align: right;}.dijitTabRtl .dijitTabCloseButton {margin-left: 0; margin-right: 1em;}.dj_ie6 .dijitTabRtl .tabLabel,.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie6 .dijitTabContainerLeft-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerLeft-tabs .dijitTabRtl {zoom: 1;}.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl {left: 0;}.dj_ie6 .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,.dj_ie6 .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {width: 1%;}.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {width:100%;}.dijitColorPaletteRtl .dijitColorPaletteUnder {left: auto; right: 0;}.dijitSelectRtl .dijitButtonContents {border-style: none none none solid; text-align: right;}.dijitTreeRtl .dijitTreeContainer {float: right;}.dijitRtl .dojoDndHorizontal .dojoDndItemBefore {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dijitRtl .dojoDndHorizontal .dojoDndItemAfter {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.claro .dijitTextBoxRtlError .dijitValidationContainer {border-left-width: 0; border-right-width: 1px;}.claro .dijitComboButtonRtl .dijitStretch {-moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0;}.claro .dijitComboButtonRtl .dijitArrowButton {-moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; padding: 3px 0 4px; border-left-width: 1px; border-right-width: 0;}.claro .dijitTabContainerTop-tabs .dijitTabRtl,.claro .dijitTabContainerBottom-tabs .dijitTabRtl {margin-right: 0; margin-left: 1px;}.claro .dijitSliderRtl .dijitSliderProgressBarH,.claro .dijitSliderRtl .dijitSliderRemainingBarH,.claro .dijitSliderRtl .dijitSliderLeftBumper,.claro .dijitSliderRtl .dijitSliderRightBumper,.claro .dijitSliderRtl .dijitSliderTopBumper {background-position: top right;}.claro .dijitSliderRtl .dijitSliderProgressBarV,.claro .dijitSliderRtl .dijitSliderRemainingBarV,.claro .dijitSliderRtl .dijitSliderBottomBumper {background-position: bottom right;}.claro .dijitSliderRtl .dijitSliderLeftBumper {border-left-width: 0; border-right-width: 1px;}.claro .dijitSliderRtl .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.claro .dijitSliderRtl .dijitSliderIncrementIconH {background-position: -357px 50%;}.claro .dijitSliderRtl .dijitSliderDecrementIconH {background-position: -251px 50%;}.claro .dijitDialogRtl .dijitDialogCloseIcon {right: auto; left: 5px;}.claro .dijitDialogRtl .dijitDialogPaneActionBar {text-align: left; padding: 3px 7px 2px 5px;}.claro .dijitEditorRtl .dijitEditorIFrameContainer {padding: 3px 10px 1px 3px;}.dj_ie6 .claro .dijitEditorRtl .dijitEditorIFrameContainer,.dj_ie7 .claro .dijitEditorRtl .dijitEditorIFrameContainer,.dj_ie8 .claro .dijitEditorRtl .dijitEditorIFrameContainer {padding: 3px 0px 1px 10px; margin-right: 0px; border: 0px solid #d3d3d3;}.dijitEditorRtl .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled_rtl.png");}.dijitEditorRtlDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled_rtl.png");}.dijitToolbarRtl .dijitToolbarSeparator {background-image: url("../../icons/images/editorIconsEnabled_rtl.png");}.dijitRtl .dijitIconSave,.dijitRtl .dijitIconPrint,.dijitRtl .dijitIconCut,.dijitRtl .dijitIconCopy,.dijitRtl .dijitIconClear,.dijitRtl .dijitIconDelete,.dijitRtl .dijitIconUndo,.dijitRtl .dijitIconEdit,.dijitRtl .dijitIconNewTask,.dijitRtl .dijitIconEditTask,.dijitRtl .dijitIconEditProperty,.dijitRtl .dijitIconTask,.dijitRtl .dijitIconFilter,.dijitRtl .dijitIconConfigure,.dijitRtl .dijitIconSearch,.dijitRtl .dijitIconApplication,.dijitRtl .dijitIconBookmark,.dijitRtl .dijitIconChart,.dijitRtl .dijitIconConnector,.dijitRtl .dijitIconDatabase,.dijitRtl .dijitIconDocuments,.dijitRtl .dijitIconMail,.dijitRtl .dijitLeaf,.dijitRtl .dijitIconFile,.dijitRtl .dijitIconFunction,.dijitRtl .dijitIconKey,.dijitRtl .dijitIconPackage,.dijitRtl .dijitIconSample,.dijitRtl .dijitIconTable,.dijitRtl .dijitIconUsers,.dijitRtl .dijitFolderClosed,.dijitRtl .dijitIconFolderClosed,.dijitRtl .dijitFolderOpened,.dijitRtl .dijitIconFolderOpen,.dijitRtl .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled_rtl.png"); width: 16px; height: 16px;}.dj_ie6 .dijitRtl .dijitIconSave,.dj_ie6 .dijitRtl .dijitIconPrint,.dj_ie6 .dijitRtl .dijitIconCut,.dj_ie6 .dijitRtl .dijitIconCopy,.dj_ie6 .dijitRtl .dijitIconClear,.dj_ie6 .dijitRtl .dijitIconDelete,.dj_ie6 .dijitRtl .dijitIconUndo,.dj_ie6 .dijitRtl .dijitIconEdit,.dj_ie6 .dijitRtl .dijitIconNewTask,.dj_ie6 .dijitRtl .dijitIconEditTask,.dj_ie6 .dijitRtl .dijitIconEditProperty,.dj_ie6 .dijitRtl .dijitIconTask,.dj_ie6 .dijitRtl .dijitIconFilter,.dj_ie6 .dijitRtl .dijitIconConfigure,.dj_ie6 .dijitRtl .dijitIconSearch,.dj_ie6 .dijitRtl .dijitIconApplication,.dj_ie6 .dijitRtl .dijitIconBookmark,.dj_ie6 .dijitRtl .dijitIconChart,.dj_ie6 .dijitRtl .dijitIconConnector,.dj_ie6 .dijitRtl .dijitIconDatabase,.dj_ie6 .dijitRtl .dijitIconDocuments,.dj_ie6 .dijitRtl .dijitIconMail,.dj_ie6 .dijitRtl .dijitLeaf,.dj_ie6 .dijitRtl .dijitIconFile,.dj_ie6 .dijitRtl .dijitIconFunction,.dj_ie6 .dijitRtl .dijitIconKey,.dj_ie6 .dijitRtl .dijitIconPackage,.dj_ie6 .dijitRtl .dijitIconSample,.dj_ie6 .dijitRtl .dijitIconTable,.dj_ie6 .dijitRtl .dijitIconUsers,.dj_ie6 .dijitRtl .dijitFolderClosed,.dj_ie6 .dijitRtl .dijitIconFolderClosed,.dj_ie6 .dijitRtl .dijitFolderOpened,.dj_ie6 .dijitRtl .dijitIconFolderOpen,.dj_ie6 .dijitRtl .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled8bit_rtl.png");}.dijitRtl .dijitDisabled .dijitIconSave,.dijitRtl .dijitDisabled .dijitIconPrint,.dijitRtl .dijitDisabled .dijitIconCut,.dijitRtl .dijitDisabled .dijitIconCopy,.dijitRtl .dijitDisabled .dijitIconClear,.dijitRtl .dijitDisabled .dijitIconDelete,.dijitRtl .dijitDisabled .dijitIconUndo,.dijitRtl .dijitDisabled .dijitIconEdit,.dijitRtl .dijitDisabled .dijitIconNewTask,.dijitRtl .dijitDisabled .dijitIconEditTask,.dijitRtl .dijitDisabled .dijitIconEditProperty,.dijitRtl .dijitDisabled .dijitIconTask,.dijitRtl .dijitDisabled .dijitIconFilter,.dijitRtl .dijitDisabled .dijitIconConfigure,.dijitRtl .dijitDisabled .dijitIconSearch,.dijitRtl .dijitDisabled .dijitIconApplication,.dijitRtl .dijitDisabled .dijitIconBookmark,.dijitRtl .dijitDisabled .dijitIconChart,.dijitRtl .dijitDisabled .dijitIconConnector,.dijitRtl .dijitDisabled .dijitIconDatabase,.dijitRtl .dijitDisabled .dijitIconDocuments,.dijitRtl .dijitDisabled .dijitIconMail,.dijitRtl .dijitDisabled .dijitLeaf,.dijitRtl .dijitDisabled .dijitIconFile,.dijitRtl .dijitDisabled .dijitIconFunction,.dijitRtl .dijitDisabled .dijitIconKey,.dijitRtl .dijitDisabled .dijitIconPackage,.dijitRtl .dijitDisabled .dijitIconSample,.dijitRtl .dijitDisabled .dijitIconTable,.dijitRtl .dijitDisabled .dijitIconUsers,.dijitRtl .dijitDisabled .dijitFolderClosed,.dijitRtl .dijitDisabled .dijitIconFolderClosed,.dijitRtl .dijitDisabled .dijitFolderOpened,.dijitRtl .dijitDisabled .dijitIconFolderOpen,.dijitRtl .dijitDisabled .dijitIconError {background-image: url("../../icons/images/commonIconsObjActDisabled_rtl.png");}.dijitRtl .dijitIconLoading {background-image: url("../../icons/images/loadingAnimation_rtl.gif");}.claro .dijitTitlePaneRtl .dijitClosed .dijitArrowNode,.claro .dijitFieldsetRtl .dijitFieldsetTitleClosed .dijitArrowNode {background-position: -7px 0;}.claro .dijitMenuItemRtl .dijitMenuExpand {background-position: -7px 0; margin-right: 0; margin-left: 3px;}.claro .dijitMenuItemRtl .dijitMenuItemIcon {margin: 0 4px 0 0;}.claro .dijitCalendarRtl .dijitCalendarIncrease {background-position: 0 0;}.claro .dijitCalendarRtl .dijitCalendarDecrease {background-position: -18px 0;}.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease {background-position: -36px 0;}.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease {background-position: -55px 0;}.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease {background-position: -72px 0;}.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease {background-position: -91px 0;}.claro .dijitToolbar .dijitComboButtonRtl .dijitButtonNode {border-width: 0; padding: 2px;}.claro .dijitToolbar .dijitComboButtonRtlHover .dijitButtonNode,.claro .dijitToolbar .dijitComboButtonRtlActive .dijitButtonNode {border-width: 1px; padding: 1px;}.claro .dijitToolbar .dijitComboButtonRtl .dijitStretch {-moz-border-radius: 0 2px 2px 0; border-radius: 0 2px 2px 0;}.claro .dijitToolbar .dijitComboButtonRtl .dijitArrowButton {-moz-border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px;}.claro .dijitToolbar .dijitComboButtonRtlHover .dijitArrowButton,.claro .dijitToolbar .dijitComboButtonRtlActive .dijitArrowButton {border-left-width: 1px; border-right-width: 0; padding-left: 1px; padding-right: 2px;}.claro .dijitTreeRtl .dijitTreeExpandoLoading {background-image: url("../../icons/images/loadingAnimation_rtl.gif"); background-position: 100% 0;}.claro .dijitProgressBarRtl .dijitProgressBarFull {border-left-width: 1px; border-right-width: 0px;}.claro .dijitProgressBarIndeterminateRtl .dijitProgressBarTile {-moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); transform: scaleX(-1); filter: FlipH; -ms-filter: "FlipH";} \ No newline at end of file
diff --git a/lib/dijit/themes/dijit.css b/lib/dijit/themes/dijit.css
index 74cabbbc4..396f8c84c 100644
--- a/lib/dijit/themes/dijit.css
+++ b/lib/dijit/themes/dijit.css
@@ -1 +1 @@
-.dijitReset {margin:0; border:0; padding:0; font: inherit; line-height:normal; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {position: absolute; visibility: hidden;}.dijitHidden * {visibility: hidden !important;}.dijitVisible {display: block !important; position: relative; visibility: visible;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important; border-collapse: separate;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: -10000px !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; -webkit-overflow-scrolling: touch;}.dijitPositionOnly {padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important;}.dijitNonPositionOnly {float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important;}.dijitBackgroundIframe {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0;}.dijitDisplayNone {display:none !important;}.dijitContainer {overflow: hidden;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner {background: no-repeat center; width: 12px; height: 12px; direction: ltr;}.dijitLeft {background-position:left top; background-repeat:no-repeat;}.dijitStretch {white-space:nowrap; background-repeat:repeat-x;}.dijitRight {#display:inline; background-position:right top; background-repeat:no-repeat;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.dijitButtonNode {border:1px solid gray; margin:0; line-height:normal; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap;}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {line-height:inherit;}.dijitTextBox .dijitButtonNode {border-width: 0;}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_ie .dijitButtonNode {zoom: 1;}.dj_ie .dijitButtonNode button {overflow: visible;}div.dijitArrowButton {float: right;}.dijitTextBox {border: solid black 1px; #overflow: hidden; width: 15em; vertical-align: middle;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_safari .dijitTextBoxDisabled input {color: #B0B0B0;}.dj_safari textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .dj_gecko .dijitTextBoxDisabled input {-moz-user-input: none;}.dijitPlaceHolder {color: #AAAAAA; font-style: italic; position: absolute; top: 0; left: 0; #filter: ""; white-space: nowrap; pointer-events: none;}.dijitTimeTextBox {width: 8em;}.dijitTextBox input:focus {outline: none;}.dijitTextBoxFocused {outline: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !important; direction: ltr !important; text-align: left !important; height: auto !important; #text-indent: 0 !important; #letter-spacing: -5em !important; #text-align: right !important;}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox {line-height: 100%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.dj_ie .dijitToolbar .dijitComboBox {vertical-align: middle;}.dijitTextBox .dijitSpinnerButtonContainer {width: 1em; position: relative !important; overflow: hidden;}.dijitSpinner .dijitSpinnerButtonInner {width:1em; visibility:hidden !important; overflow-x:hidden;}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0.3em !important; padding-right: 0.3em !important; margin-left: 0.3em !important; margin-right: 0.3em !important; width: 1.4em !important;}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0 !important; margin-right: 0 !important; width: 2em !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {padding: 0; position: absolute !important; right: 0; float: none; height: 50%; width: 100%; bottom: auto; left: 0; right: auto;}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: auto;}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {overflow: visible !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {top: 50%; border-top-width: 1px !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {#bottom: 50%; top: 0;}.dijitSpinner .dijitArrowButtonInner {margin: auto; overflow-x: hidden; height: 100% !important;}.dj_iequirks .dijitSpinner .dijitArrowButtonInner {height: auto !important;}.dijitSpinner .dijitArrowButtonInner .dijitInputField {-moz-transform: scale(0.5); -moz-transform-origin: center top; -webkit-transform: scale(0.5); -webkit-transform-origin: center top; -o-transform: scale(0.5); -o-transform-origin: center top; transform: scale(0.5); transform-origin: left top; padding-top: 0; padding-bottom: 0; padding-left: 0 !important; padding-right: 0 !important; width: 100%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput {padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden;}.dijitCheckBox input,.dijitRadio input {margin: 0; padding: 0; display: block;}.dijitCheckBoxInput {opacity: 0;}.dj_ie .dijitCheckBoxInput {filter: alpha(opacity=0);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.dijitProgressBarEmpty {position:relative;overflow:hidden; border:1px solid black; z-index:0;}.dijitProgressBarFull {position:absolute; overflow:hidden; z-index:-1; top:0; width:100%;}.dj_ie6 .dijitProgressBarFull {height:1.6em;}.dijitProgressBarTile {position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto;}.dijitProgressBarLabel {display:block; position:static; width:100%; text-align:center; background-color:transparent !important;}.dijitTooltip {position: absolute; z-index: 2000; display: block; left: 0; top: -10000px; overflow: visible;}.dijitTooltipContainer {border: solid black 2px; background: #b8b5b5; color: black; font-size: small;}.dijitTooltipFocusNode {padding: 2px 2px 2px 2px;}.dijitTooltipConnector {position: absolute;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane {position: absolute !important; z-index: 2;}.dijitBorderContainer > .dijitTextArea {resize: none;}.dijitGutter {position: absolute; font-size: 1px;}.dijitSplitter {position: absolute; overflow: hidden; z-index: 10; background-color: #fff; border-color: gray; border-style: solid; border-width: 0;}.dj_ie .dijitSplitter {z-index: 1;}.dijitSplitterActive {z-index: 11 !important;}.dijitSplitterCover {position:absolute; z-index:-1; top:0; left:0; width:100%; height:100%;}.dijitSplitterCoverActive {z-index:3 !important;}.dj_ie .dijitSplitterCover {background: white; opacity: 0;}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover {filter: alpha(opacity=0);}.dijitSplitterH {height: 7px; border-top:1px; border-bottom:1px; cursor: row-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0;}.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {overflow:hidden; position:absolute; top:49%;}.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {position:absolute; left:49%;}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV {font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto; -webkit-overflow-scrolling: touch;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitFieldset {border: 1px solid gray;}.dijitTitlePaneTitle, .dijitFieldsetTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {cursor: default;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {display: inline; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {display: none;}.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {display: none !important;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.dijitColorPalette .dijitPaletteTable {padding: 2px 3px 3px 3px; position: relative; overflow: hidden; outline: 0; border-collapse: separate;}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable {padding: 0; margin: 2px 3px 3px 3px;}.dijitColorPalette .dijitPaletteCell {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !important;}.dijitAccordionContainer {border:1px solid #b7b7b7; border-top:0 !important;}.dijitAccordionTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitAccordionTitleSelected {cursor: default;}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown {display: none; font-size: 0.65em; font-weight: normal !important;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer table {width: auto; clear: both;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarMonthContainer {text-align: center;}.dijitCalendarDecrementArrow {float: left;}.dijitCalendarIncrementArrow {float: right;}.dijitCalendarYearLabel {white-space: nowrap;}.dijitCalendarNextYear {margin:0 0 0 0.55em;}.dijitCalendarPreviousYear {margin:0 0.55em 0 0;}.dijitCalendarIncrementControl {vertical-align: middle;}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitCalendarDisabledDate {color: gray; text-decoration: line-through; cursor: default;}.dijitSpacer {position: relative; height: 1px; overflow: hidden; visibility: hidden;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.dijitMenu {border:1px solid black; background-color:white;}.dijitMenuTable {border-collapse:collapse; border-width:0; background-color:white;}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden;}.dijitMenuItem {text-align: left; white-space: nowrap; padding:.1em .2em; cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_a11y .dijitMenuExpandA11y {display: inline;}.dijitMenuSeparator td {border: 0; padding: 0;}.dijitMenuSeparatorTop {height: 50%; margin: 0; margin-top:3px; font-size: 1px;}.dijitMenuSeparatorBottom {height: 50%; margin: 0; margin-bottom:3px; font-size: 1px;}.dijitMenuItemIconChar {display: none; visibility: hidden;}.dj_a11y .dijitMenuItemIconChar {display: inline;}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar {visibility: visible;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}div.dijitTabDisabled, .dj_ie div.dijitTabDisabled {cursor: auto;}.dijitTab {position:relative; cursor:pointer; -webkit-tap-highlight-color: transparent; white-space:nowrap; z-index:3;}.dijitTab * {vertical-align: middle;}.dijitTabChecked {cursor: default;}.dijitTabContainerTop-tabs .dijitTab {top: 1px;}.dijitTabContainerBottom-tabs .dijitTab {top: -1px;}.dijitTabContainerLeft-tabs .dijitTab {left: 1px;}.dijitTabContainerRight-tabs .dijitTab {left: -1px;}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab {display:inline-block; #zoom: 1; #display:inline;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto; -webkit-tap-highlight-color: transparent;}.dijitTreeContainer {float: left;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dj_ie .dijitTreeLabel:focus {outline: 1px dotted black;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 4px;}.dijitDialog {position: absolute; z-index: 999; overflow: hidden;}.dijitDialogTitleBar {cursor: move;}.dijitDialogFixed .dijitDialogTitleBar {cursor:default;}.dijitDialogCloseIcon {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitDialogPaneContent {-webkit-overflow-scrolling: touch;}.dijitDialogUnderlayWrapper {position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important;}.dijitDialogUnderlay {background: #eee; opacity: 0.5;}.dj_ie .dijitDialogUnderlay {filter: alpha(opacity=50);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {border:4px solid #000; height:8px; width:8px;}.dijitSliderImageHandleV {top:-8px; right: -50%;}.dijitSliderImageHandleH {left:50%; top:-5px; vertical-align:top;}.dijitSliderBar {border-style:solid; border-color:black; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSliderBarContainerV {position:relative; height:100%; z-index:1;}.dijitSliderBarContainerH {position:relative; z-index:1;}.dijitSliderBarH {height:4px; border-width:1px 0;}.dijitSliderBarV {width:4px; border-width:0 1px;}.dijitSliderProgressBar {background-color:red; z-index:1;}.dijitSliderProgressBarV {position:static !important; height:0; vertical-align:top; text-align:left;}.dijitSliderProgressBarH {position:absolute !important; width:0; vertical-align:middle; overflow:visible;}.dijitSliderRemainingBar {overflow:hidden; background-color:transparent; z-index:1;}.dijitSliderRemainingBarV {height:100%; text-align:left;}.dijitSliderRemainingBarH {width:100% !important;}.dijitSliderBumper {overflow:hidden; z-index:1;}.dijitSliderBumperV {width:4px; height:8px; border-width:0 1px;}.dijitSliderBumperH {width:8px; height:4px; border-width:1px 0;}.dijitSliderBottomBumper,.dijitSliderLeftBumper {background-color:red;}.dijitSliderTopBumper,.dijitSliderRightBumper {background-color:transparent;}.dijitSliderDecoration {text-align:center;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%; white-space: nowrap;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_a11y .dijitSliderButtonInner {visibility:visible !important;}.dijitSliderButtonContainer {text-align:center; height:0;}.dijitSliderButtonContainer * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSlider .dijitButtonNode {padding:0; display:block;}.dijitRuleContainer {position:relative; overflow:visible;}.dijitRuleContainerV {height:100%; line-height:0; float:left; text-align:left;}.dj_opera .dijitRuleContainerV {line-height:2%;}.dj_ie .dijitRuleContainerV {line-height:normal;}.dj_gecko .dijitRuleContainerV {margin:0 0 1px 0;}.dijitRuleMark {position:absolute; border:1px solid black; line-height:0; height:100%;}.dijitRuleMarkH {width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important;}.dijitRuleLabelContainer {position:absolute;}.dijitRuleLabelContainerH {text-align:center; display:inline-block;}.dijitRuleLabelH {position:relative; left:-50%;}.dijitRuleLabelV {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}.dijitRuleMarkV {height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0;}.dj_ie .dijitRuleLabelContainerV {margin-top:-.55em;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.dijitToolbarSeparator {height: 18px; width: 5px; padding: 0 1px; margin: 0;}.dijitIEFixedToolbar {position:absolute; top: expression(eval((document.documentElement||document.body).scrollTop));}.dijitEditor {display: block;}.dijitEditorDisabled,.dijitEditorReadOnly {color: gray;}.dijitTimePicker {background-color: white;}.dijitTimePickerItem {cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitTimePickerItemHover {background-color:gray; color:white;}.dijitTimePickerItemSelected {font-weight:bold; color:#333; background-color:#b7cdee;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dijitTimePickerItemInner {text-align:center; border:0; padding:2px 8px 2px 8px;}.dijitTimePickerTick,.dijitTimePickerMarker {border-bottom:1px solid gray;}.dijitTimePicker .dijitDownArrowButton {border-top: none !important;}.dijitTimePickerTick {color:#CCC;}.dijitTimePickerMarker {color:black; background-color:#CCC;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitNumberTextBox {text-align: left; direction: ltr;}.dijitNumberTextBox .dijitInputInner {text-align: inherit;}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner {text-align: right;}.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {padding-right: 1px !important;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.dijitSelectFixedWidth .dijitButtonContents {width: 100%;}.dijitSelectMenu .dijitMenuItemIcon {display:none;}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {position: static;}.dijitSelectLabel *{vertical-align: baseline;}.dijitSelectSelectedOption * {font-weight: bold;}.dijitSelectMenu {border-width: 1px;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.dijitFocused .dijitMenuItemShortcutKey {text-decoration: underline;} \ No newline at end of file
+.dijitReset {margin:0; border:0; padding:0; font: inherit; line-height:normal; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {position: absolute; visibility: hidden;}.dijitHidden * {visibility: hidden !important;}.dijitVisible {display: block !important; position: relative; visibility: visible;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important; border-collapse: separate;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: -10000px !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; -webkit-overflow-scrolling: touch;}.dijitPositionOnly {padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important;}.dijitNonPositionOnly {float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important;}.dijitBackgroundIframe {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0;}.dijitDisplayNone {display:none !important;}.dijitContainer {overflow: hidden;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner {background: no-repeat center; width: 12px; height: 12px; direction: ltr;}.dijitLeft {background-position:left top; background-repeat:no-repeat;}.dijitStretch {white-space:nowrap; background-repeat:repeat-x;}.dijitRight {#display:inline; background-position:right top; background-repeat:no-repeat;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.dijitButtonNode {border:1px solid gray; margin:0; line-height:normal; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap;}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {line-height:inherit;}.dijitTextBox .dijitButtonNode {border-width: 0;}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_ie .dijitButtonNode {zoom: 1;}.dj_ie .dijitButtonNode button {overflow: visible;}div.dijitArrowButton {float: right;}.dijitTextBox {border: solid black 1px; #overflow: hidden; width: 15em; vertical-align: middle;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_safari .dijitTextBoxDisabled input {color: #B0B0B0;}.dj_safari textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .dj_gecko .dijitTextBoxDisabled input {-moz-user-input: none;}.dijitPlaceHolder {color: #AAAAAA; font-style: italic; position: absolute; top: 0; left: 0; #filter: ""; white-space: nowrap; pointer-events: none;}.dijitTimeTextBox {width: 8em;}.dijitTextBox input:focus {outline: none;}.dijitTextBoxFocused {outline: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !important; direction: ltr !important; text-align: left !important; height: auto !important; #text-indent: 0 !important; #letter-spacing: -5em !important; #text-align: right !important;}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox {line-height: 100%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.dj_ie .dijitToolbar .dijitComboBox {vertical-align: middle;}.dijitTextBox .dijitSpinnerButtonContainer {width: 1em; position: relative !important; overflow: hidden;}.dijitSpinner .dijitSpinnerButtonInner {width:1em; visibility:hidden !important; overflow-x:hidden;}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0.3em !important; padding-right: 0.3em !important; margin-left: 0.3em !important; margin-right: 0.3em !important; width: 1.4em !important;}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0 !important; margin-right: 0 !important; width: 2em !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {padding: 0; position: absolute !important; right: 0; float: none; height: 50%; width: 100%; bottom: auto; left: 0; right: auto;}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: auto;}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {overflow: visible !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {top: 50%; border-top-width: 1px !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {#bottom: 50%; top: 0;}.dijitSpinner .dijitArrowButtonInner {margin: auto; overflow-x: hidden; height: 100% !important;}.dj_iequirks .dijitSpinner .dijitArrowButtonInner {height: auto !important;}.dijitSpinner .dijitArrowButtonInner .dijitInputField {-moz-transform: scale(0.5); -moz-transform-origin: center top; -webkit-transform: scale(0.5); -webkit-transform-origin: center top; -o-transform: scale(0.5); -o-transform-origin: center top; transform: scale(0.5); transform-origin: left top; padding-top: 0; padding-bottom: 0; padding-left: 0 !important; padding-right: 0 !important; width: 100%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput {padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden;}.dijitCheckBox input,.dijitRadio input {margin: 0; padding: 0; display: block;}.dijitCheckBoxInput {opacity: 0;}.dj_ie .dijitCheckBoxInput {filter: alpha(opacity=0);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.dijitProgressBarEmpty {position:relative;overflow:hidden; border:1px solid black; z-index:0;}.dijitProgressBarFull {position:absolute; overflow:hidden; z-index:-1; top:0; width:100%;}.dj_ie6 .dijitProgressBarFull {height:1.6em;}.dijitProgressBarTile {position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto;}.dijitProgressBarLabel {display:block; position:static; width:100%; text-align:center; background-color:transparent !important;}.dijitTooltip {position: absolute; z-index: 2000; display: block; left: 0; top: -10000px; overflow: visible;}.dijitTooltipContainer {border: solid black 2px; background: #b8b5b5; color: black; font-size: small;}.dijitTooltipFocusNode {padding: 2px 2px 2px 2px;}.dijitTooltipConnector {position: absolute;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane {position: absolute !important; z-index: 2;}.dijitBorderContainer > .dijitTextArea {resize: none;}.dijitGutter {position: absolute; font-size: 1px;}.dijitSplitter {position: absolute; overflow: hidden; z-index: 10; background-color: #fff; border-color: gray; border-style: solid; border-width: 0;}.dj_ie .dijitSplitter {z-index: 1;}.dijitSplitterActive {z-index: 11 !important;}.dijitSplitterCover {position:absolute; z-index:-1; top:0; left:0; width:100%; height:100%;}.dijitSplitterCoverActive {z-index:3 !important;}.dj_ie .dijitSplitterCover {background: white; opacity: 0;}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover {filter: alpha(opacity=0);}.dijitSplitterH {height: 7px; border-top:1px; border-bottom:1px; cursor: row-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0;}.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {overflow:hidden; position:absolute; top:49%;}.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {position:absolute; left:49%;}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV {font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto; -webkit-overflow-scrolling: touch;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitFieldset {border: 1px solid gray;}.dijitTitlePaneTitle, .dijitFieldsetTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {cursor: default;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {display: inline; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {display: none;}.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {display: none !important;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.dijitColorPalette .dijitPaletteTable {padding: 2px 3px 3px 3px; position: relative; overflow: hidden; outline: 0; border-collapse: separate;}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable {padding: 0; margin: 2px 3px 3px 3px;}.dijitColorPalette .dijitPaletteCell {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !important;}.dijitAccordionContainer {border:1px solid #b7b7b7; border-top:0 !important;}.dijitAccordionTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitAccordionTitleSelected {cursor: default;}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown {display: none; font-size: 0.65em; font-weight: normal !important;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer table {width: auto; clear: both;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarMonthContainer {text-align: center;}.dijitCalendarDecrementArrow {float: left;}.dijitCalendarIncrementArrow {float: right;}.dijitCalendarYearLabel {white-space: nowrap;}.dijitCalendarNextYear {margin:0 0 0 0.55em;}.dijitCalendarPreviousYear {margin:0 0.55em 0 0;}.dijitCalendarIncrementControl {vertical-align: middle;}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitCalendarDisabledDate {color: gray; text-decoration: line-through; cursor: default;}.dijitSpacer {position: relative; height: 1px; overflow: hidden; visibility: hidden;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.dijitMenu {border:1px solid black; background-color:white;}.dijitMenuTable {border-collapse:collapse; border-width:0; background-color:white;}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden;}.dijitMenuItem {text-align: left; white-space: nowrap; padding:.1em .2em; cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_a11y .dijitMenuExpandA11y {display: inline;}.dijitMenuSeparator td {border: 0; padding: 0;}.dijitMenuSeparatorTop {height: 50%; margin: 0; margin-top:3px; font-size: 1px;}.dijitMenuSeparatorBottom {height: 50%; margin: 0; margin-bottom:3px; font-size: 1px;}.dijitMenuItemIconChar {display: none; visibility: hidden;}.dj_a11y .dijitMenuItemIconChar {display: inline;}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar {visibility: visible;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}div.dijitTabDisabled, .dj_ie div.dijitTabDisabled {cursor: auto;}.dijitTab {position:relative; cursor:pointer; -webkit-tap-highlight-color: transparent; white-space:nowrap; z-index:3;}.dijitTab * {vertical-align: middle;}.dijitTabChecked {cursor: default;}.dijitTabContainerTop-tabs .dijitTab {top: 1px;}.dijitTabContainerBottom-tabs .dijitTab {top: -1px;}.dijitTabContainerLeft-tabs .dijitTab {left: 1px;}.dijitTabContainerRight-tabs .dijitTab {left: -1px;}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab {display:inline-block; #zoom: 1; #display:inline;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto; -webkit-tap-highlight-color: transparent; -moz-user-select: none;}.dijitTreeContainer {float: left;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dj_ie .dijitTreeLabel:focus {outline: 1px dotted black;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 4px;}.dijitDialog {position: absolute; z-index: 999; overflow: hidden;}.dijitDialogTitleBar {cursor: move;}.dijitDialogFixed .dijitDialogTitleBar {cursor:default;}.dijitDialogCloseIcon {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitDialogPaneContent {-webkit-overflow-scrolling: touch;}.dijitDialogUnderlayWrapper {position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important;}.dijitDialogUnderlay {background: #eee; opacity: 0.5;}.dj_ie .dijitDialogUnderlay {filter: alpha(opacity=50);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {border:4px solid #000; height:8px; width:8px;}.dijitSliderImageHandleV {top:-8px; right: -50%;}.dijitSliderImageHandleH {left:50%; top:-5px; vertical-align:top;}.dijitSliderBar {border-style:solid; border-color:black; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSliderBarContainerV {position:relative; height:100%; z-index:1;}.dijitSliderBarContainerH {position:relative; z-index:1;}.dijitSliderBarH {height:4px; border-width:1px 0;}.dijitSliderBarV {width:4px; border-width:0 1px;}.dijitSliderProgressBar {background-color:red; z-index:1;}.dijitSliderProgressBarV {position:static !important; height:0; vertical-align:top; text-align:left;}.dijitSliderProgressBarH {position:absolute !important; width:0; vertical-align:middle; overflow:visible;}.dijitSliderRemainingBar {overflow:hidden; background-color:transparent; z-index:1;}.dijitSliderRemainingBarV {height:100%; text-align:left;}.dijitSliderRemainingBarH {width:100% !important;}.dijitSliderBumper {overflow:hidden; z-index:1;}.dijitSliderBumperV {width:4px; height:8px; border-width:0 1px;}.dijitSliderBumperH {width:8px; height:4px; border-width:1px 0;}.dijitSliderBottomBumper,.dijitSliderLeftBumper {background-color:red;}.dijitSliderTopBumper,.dijitSliderRightBumper {background-color:transparent;}.dijitSliderDecoration {text-align:center;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%; white-space: nowrap;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_a11y .dijitSliderButtonInner {visibility:visible !important;}.dijitSliderButtonContainer {text-align:center; height:0;}.dijitSliderButtonContainer * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSlider .dijitButtonNode {padding:0; display:block;}.dijitRuleContainer {position:relative; overflow:visible;}.dijitRuleContainerV {height:100%; line-height:0; float:left; text-align:left;}.dj_opera .dijitRuleContainerV {line-height:2%;}.dj_ie .dijitRuleContainerV {line-height:normal;}.dj_gecko .dijitRuleContainerV {margin:0 0 1px 0;}.dijitRuleMark {position:absolute; border:1px solid black; line-height:0; height:100%;}.dijitRuleMarkH {width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important;}.dijitRuleLabelContainer {position:absolute;}.dijitRuleLabelContainerH {text-align:center; display:inline-block;}.dijitRuleLabelH {position:relative; left:-50%;}.dijitRuleLabelV {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}.dijitRuleMarkV {height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0;}.dj_ie .dijitRuleLabelContainerV {margin-top:-.55em;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.dijitToolbarSeparator {height: 18px; width: 5px; padding: 0 1px; margin: 0;}.dijitIEFixedToolbar {position:absolute; top: expression(eval((document.documentElement||document.body).scrollTop));}.dijitEditor {display: block;}.dijitEditorDisabled,.dijitEditorReadOnly {color: gray;}.dijitTimePicker {background-color: white;}.dijitTimePickerItem {cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitTimePickerItemHover {background-color:gray; color:white;}.dijitTimePickerItemSelected {font-weight:bold; color:#333; background-color:#b7cdee;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dijitTimePickerItemInner {text-align:center; border:0; padding:2px 8px 2px 8px;}.dijitTimePickerTick,.dijitTimePickerMarker {border-bottom:1px solid gray;}.dijitTimePicker .dijitDownArrowButton {border-top: none !important;}.dijitTimePickerTick {color:#CCC;}.dijitTimePickerMarker {color:black; background-color:#CCC;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitNumberTextBox {text-align: left; direction: ltr;}.dijitNumberTextBox .dijitInputInner {text-align: inherit;}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner {text-align: right;}.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {padding-right: 1px !important;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.dijitSelectFixedWidth .dijitButtonContents {width: 100%;}.dijitSelectMenu .dijitMenuItemIcon {display:none;}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {position: static;}.dijitSelectLabel *{vertical-align: baseline;}.dijitSelectSelectedOption * {font-weight: bold;}.dijitSelectMenu {border-width: 1px;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.dijitFocused .dijitMenuItemShortcutKey {text-decoration: underline;} \ No newline at end of file
diff --git a/lib/dijit/themes/nihilo/nihilo.css b/lib/dijit/themes/nihilo/nihilo.css
index f3f4fb1e2..547e87562 100644
--- a/lib/dijit/themes/nihilo/nihilo.css
+++ b/lib/dijit/themes/nihilo/nihilo.css
@@ -1 +1 @@
-.dijitReset {margin:0; border:0; padding:0; font: inherit; line-height:normal; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {position: absolute; visibility: hidden;}.dijitHidden * {visibility: hidden !important;}.dijitVisible {display: block !important; position: relative; visibility: visible;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important; border-collapse: separate;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: -10000px !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; -webkit-overflow-scrolling: touch;}.dijitPositionOnly {padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important;}.dijitNonPositionOnly {float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important;}.dijitBackgroundIframe {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0;}.dijitDisplayNone {display:none !important;}.dijitContainer {overflow: hidden;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner {background: no-repeat center; width: 12px; height: 12px; direction: ltr;}.dijitLeft {background-position:left top; background-repeat:no-repeat;}.dijitStretch {white-space:nowrap; background-repeat:repeat-x;}.dijitRight {#display:inline; background-position:right top; background-repeat:no-repeat;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.dijitButtonNode {border:1px solid gray; margin:0; line-height:normal; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap;}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {line-height:inherit;}.dijitTextBox .dijitButtonNode {border-width: 0;}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_ie .dijitButtonNode {zoom: 1;}.dj_ie .dijitButtonNode button {overflow: visible;}div.dijitArrowButton {float: right;}.dijitTextBox {border: solid black 1px; #overflow: hidden; width: 15em; vertical-align: middle;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_safari .dijitTextBoxDisabled input {color: #B0B0B0;}.dj_safari textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .dj_gecko .dijitTextBoxDisabled input {-moz-user-input: none;}.dijitPlaceHolder {color: #AAAAAA; font-style: italic; position: absolute; top: 0; left: 0; #filter: ""; white-space: nowrap; pointer-events: none;}.dijitTimeTextBox {width: 8em;}.dijitTextBox input:focus {outline: none;}.dijitTextBoxFocused {outline: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !important; direction: ltr !important; text-align: left !important; height: auto !important; #text-indent: 0 !important; #letter-spacing: -5em !important; #text-align: right !important;}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox {line-height: 100%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.dj_ie .dijitToolbar .dijitComboBox {vertical-align: middle;}.dijitTextBox .dijitSpinnerButtonContainer {width: 1em; position: relative !important; overflow: hidden;}.dijitSpinner .dijitSpinnerButtonInner {width:1em; visibility:hidden !important; overflow-x:hidden;}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0.3em !important; padding-right: 0.3em !important; margin-left: 0.3em !important; margin-right: 0.3em !important; width: 1.4em !important;}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0 !important; margin-right: 0 !important; width: 2em !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {padding: 0; position: absolute !important; right: 0; float: none; height: 50%; width: 100%; bottom: auto; left: 0; right: auto;}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: auto;}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {overflow: visible !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {top: 50%; border-top-width: 1px !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {#bottom: 50%; top: 0;}.dijitSpinner .dijitArrowButtonInner {margin: auto; overflow-x: hidden; height: 100% !important;}.dj_iequirks .dijitSpinner .dijitArrowButtonInner {height: auto !important;}.dijitSpinner .dijitArrowButtonInner .dijitInputField {-moz-transform: scale(0.5); -moz-transform-origin: center top; -webkit-transform: scale(0.5); -webkit-transform-origin: center top; -o-transform: scale(0.5); -o-transform-origin: center top; transform: scale(0.5); transform-origin: left top; padding-top: 0; padding-bottom: 0; padding-left: 0 !important; padding-right: 0 !important; width: 100%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput {padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden;}.dijitCheckBox input,.dijitRadio input {margin: 0; padding: 0; display: block;}.dijitCheckBoxInput {opacity: 0;}.dj_ie .dijitCheckBoxInput {filter: alpha(opacity=0);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.dijitProgressBarEmpty {position:relative;overflow:hidden; border:1px solid black; z-index:0;}.dijitProgressBarFull {position:absolute; overflow:hidden; z-index:-1; top:0; width:100%;}.dj_ie6 .dijitProgressBarFull {height:1.6em;}.dijitProgressBarTile {position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto;}.dijitProgressBarLabel {display:block; position:static; width:100%; text-align:center; background-color:transparent !important;}.dijitTooltip {position: absolute; z-index: 2000; display: block; left: 0; top: -10000px; overflow: visible;}.dijitTooltipContainer {border: solid black 2px; background: #b8b5b5; color: black; font-size: small;}.dijitTooltipFocusNode {padding: 2px 2px 2px 2px;}.dijitTooltipConnector {position: absolute;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane {position: absolute !important; z-index: 2;}.dijitBorderContainer > .dijitTextArea {resize: none;}.dijitGutter {position: absolute; font-size: 1px;}.dijitSplitter {position: absolute; overflow: hidden; z-index: 10; background-color: #fff; border-color: gray; border-style: solid; border-width: 0;}.dj_ie .dijitSplitter {z-index: 1;}.dijitSplitterActive {z-index: 11 !important;}.dijitSplitterCover {position:absolute; z-index:-1; top:0; left:0; width:100%; height:100%;}.dijitSplitterCoverActive {z-index:3 !important;}.dj_ie .dijitSplitterCover {background: white; opacity: 0;}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover {filter: alpha(opacity=0);}.dijitSplitterH {height: 7px; border-top:1px; border-bottom:1px; cursor: row-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0;}.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {overflow:hidden; position:absolute; top:49%;}.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {position:absolute; left:49%;}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV {font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto; -webkit-overflow-scrolling: touch;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitFieldset {border: 1px solid gray;}.dijitTitlePaneTitle, .dijitFieldsetTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {cursor: default;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {display: inline; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {display: none;}.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {display: none !important;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.dijitColorPalette .dijitPaletteTable {padding: 2px 3px 3px 3px; position: relative; overflow: hidden; outline: 0; border-collapse: separate;}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable {padding: 0; margin: 2px 3px 3px 3px;}.dijitColorPalette .dijitPaletteCell {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !important;}.dijitAccordionContainer {border:1px solid #b7b7b7; border-top:0 !important;}.dijitAccordionTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitAccordionTitleSelected {cursor: default;}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown {display: none; font-size: 0.65em; font-weight: normal !important;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer table {width: auto; clear: both;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarMonthContainer {text-align: center;}.dijitCalendarDecrementArrow {float: left;}.dijitCalendarIncrementArrow {float: right;}.dijitCalendarYearLabel {white-space: nowrap;}.dijitCalendarNextYear {margin:0 0 0 0.55em;}.dijitCalendarPreviousYear {margin:0 0.55em 0 0;}.dijitCalendarIncrementControl {vertical-align: middle;}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitCalendarDisabledDate {color: gray; text-decoration: line-through; cursor: default;}.dijitSpacer {position: relative; height: 1px; overflow: hidden; visibility: hidden;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.dijitMenu {border:1px solid black; background-color:white;}.dijitMenuTable {border-collapse:collapse; border-width:0; background-color:white;}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden;}.dijitMenuItem {text-align: left; white-space: nowrap; padding:.1em .2em; cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_a11y .dijitMenuExpandA11y {display: inline;}.dijitMenuSeparator td {border: 0; padding: 0;}.dijitMenuSeparatorTop {height: 50%; margin: 0; margin-top:3px; font-size: 1px;}.dijitMenuSeparatorBottom {height: 50%; margin: 0; margin-bottom:3px; font-size: 1px;}.dijitMenuItemIconChar {display: none; visibility: hidden;}.dj_a11y .dijitMenuItemIconChar {display: inline;}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar {visibility: visible;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}div.dijitTabDisabled, .dj_ie div.dijitTabDisabled {cursor: auto;}.dijitTab {position:relative; cursor:pointer; -webkit-tap-highlight-color: transparent; white-space:nowrap; z-index:3;}.dijitTab * {vertical-align: middle;}.dijitTabChecked {cursor: default;}.dijitTabContainerTop-tabs .dijitTab {top: 1px;}.dijitTabContainerBottom-tabs .dijitTab {top: -1px;}.dijitTabContainerLeft-tabs .dijitTab {left: 1px;}.dijitTabContainerRight-tabs .dijitTab {left: -1px;}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab {display:inline-block; #zoom: 1; #display:inline;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto; -webkit-tap-highlight-color: transparent;}.dijitTreeContainer {float: left;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dj_ie .dijitTreeLabel:focus {outline: 1px dotted black;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 4px;}.dijitDialog {position: absolute; z-index: 999; overflow: hidden;}.dijitDialogTitleBar {cursor: move;}.dijitDialogFixed .dijitDialogTitleBar {cursor:default;}.dijitDialogCloseIcon {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitDialogPaneContent {-webkit-overflow-scrolling: touch;}.dijitDialogUnderlayWrapper {position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important;}.dijitDialogUnderlay {background: #eee; opacity: 0.5;}.dj_ie .dijitDialogUnderlay {filter: alpha(opacity=50);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {border:4px solid #000; height:8px; width:8px;}.dijitSliderImageHandleV {top:-8px; right: -50%;}.dijitSliderImageHandleH {left:50%; top:-5px; vertical-align:top;}.dijitSliderBar {border-style:solid; border-color:black; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSliderBarContainerV {position:relative; height:100%; z-index:1;}.dijitSliderBarContainerH {position:relative; z-index:1;}.dijitSliderBarH {height:4px; border-width:1px 0;}.dijitSliderBarV {width:4px; border-width:0 1px;}.dijitSliderProgressBar {background-color:red; z-index:1;}.dijitSliderProgressBarV {position:static !important; height:0; vertical-align:top; text-align:left;}.dijitSliderProgressBarH {position:absolute !important; width:0; vertical-align:middle; overflow:visible;}.dijitSliderRemainingBar {overflow:hidden; background-color:transparent; z-index:1;}.dijitSliderRemainingBarV {height:100%; text-align:left;}.dijitSliderRemainingBarH {width:100% !important;}.dijitSliderBumper {overflow:hidden; z-index:1;}.dijitSliderBumperV {width:4px; height:8px; border-width:0 1px;}.dijitSliderBumperH {width:8px; height:4px; border-width:1px 0;}.dijitSliderBottomBumper,.dijitSliderLeftBumper {background-color:red;}.dijitSliderTopBumper,.dijitSliderRightBumper {background-color:transparent;}.dijitSliderDecoration {text-align:center;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%; white-space: nowrap;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_a11y .dijitSliderButtonInner {visibility:visible !important;}.dijitSliderButtonContainer {text-align:center; height:0;}.dijitSliderButtonContainer * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSlider .dijitButtonNode {padding:0; display:block;}.dijitRuleContainer {position:relative; overflow:visible;}.dijitRuleContainerV {height:100%; line-height:0; float:left; text-align:left;}.dj_opera .dijitRuleContainerV {line-height:2%;}.dj_ie .dijitRuleContainerV {line-height:normal;}.dj_gecko .dijitRuleContainerV {margin:0 0 1px 0;}.dijitRuleMark {position:absolute; border:1px solid black; line-height:0; height:100%;}.dijitRuleMarkH {width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important;}.dijitRuleLabelContainer {position:absolute;}.dijitRuleLabelContainerH {text-align:center; display:inline-block;}.dijitRuleLabelH {position:relative; left:-50%;}.dijitRuleLabelV {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}.dijitRuleMarkV {height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0;}.dj_ie .dijitRuleLabelContainerV {margin-top:-.55em;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.dijitToolbarSeparator {height: 18px; width: 5px; padding: 0 1px; margin: 0;}.dijitIEFixedToolbar {position:absolute; top: expression(eval((document.documentElement||document.body).scrollTop));}.dijitEditor {display: block;}.dijitEditorDisabled,.dijitEditorReadOnly {color: gray;}.dijitTimePicker {background-color: white;}.dijitTimePickerItem {cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitTimePickerItemHover {background-color:gray; color:white;}.dijitTimePickerItemSelected {font-weight:bold; color:#333; background-color:#b7cdee;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dijitTimePickerItemInner {text-align:center; border:0; padding:2px 8px 2px 8px;}.dijitTimePickerTick,.dijitTimePickerMarker {border-bottom:1px solid gray;}.dijitTimePicker .dijitDownArrowButton {border-top: none !important;}.dijitTimePickerTick {color:#CCC;}.dijitTimePickerMarker {color:black; background-color:#CCC;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitNumberTextBox {text-align: left; direction: ltr;}.dijitNumberTextBox .dijitInputInner {text-align: inherit;}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner {text-align: right;}.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {padding-right: 1px !important;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.dijitSelectFixedWidth .dijitButtonContents {width: 100%;}.dijitSelectMenu .dijitMenuItemIcon {display:none;}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {position: static;}.dijitSelectLabel *{vertical-align: baseline;}.dijitSelectSelectedOption * {font-weight: bold;}.dijitSelectMenu {border-width: 1px;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.dijitFocused .dijitMenuItemShortcutKey {text-decoration: underline;}.dijitIconSave,.dijitIconPrint,.dijitIconCut,.dijitIconCopy,.dijitIconClear,.dijitIconDelete,.dijitIconUndo,.dijitIconEdit,.dijitIconNewTask,.dijitIconEditTask,.dijitIconEditProperty,.dijitIconTask,.dijitIconFilter,.dijitIconConfigure,.dijitIconSearch,.dijitIconApplication,.dijitIconBookmark,.dijitIconChart,.dijitIconConnector,.dijitIconDatabase,.dijitIconDocuments,.dijitIconMail,.dijitLeaf,.dijitIconFile,.dijitIconFunction,.dijitIconKey,.dijitIconPackage,.dijitIconSample,.dijitIconTable,.dijitIconUsers,.dijitFolderClosed,.dijitIconFolderClosed,.dijitFolderOpened,.dijitIconFolderOpen,.dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled.png"); width: 16px; height: 16px;}.dj_ie6 .dijitIconSave,.dj_ie6 .dijitIconPrint,.dj_ie6 .dijitIconCut,.dj_ie6 .dijitIconCopy,.dj_ie6 .dijitIconClear,.dj_ie6 .dijitIconDelete,.dj_ie6 .dijitIconUndo,.dj_ie6 .dijitIconEdit,.dj_ie6 .dijitIconNewTask,.dj_ie6 .dijitIconEditTask,.dj_ie6 .dijitIconEditProperty,.dj_ie6 .dijitIconTask,.dj_ie6 .dijitIconFilter,.dj_ie6 .dijitIconConfigure,.dj_ie6 .dijitIconSearch,.dj_ie6 .dijitIconApplication,.dj_ie6 .dijitIconBookmark,.dj_ie6 .dijitIconChart,.dj_ie6 .dijitIconConnector,.dj_ie6 .dijitIconDatabase,.dj_ie6 .dijitIconDocuments,.dj_ie6 .dijitIconMail,.dj_ie6 .dijitLeaf,.dj_ie6 .dijitIconFile,.dj_ie6 .dijitIconFunction,.dj_ie6 .dijitIconKey,.dj_ie6 .dijitIconPackage,.dj_ie6 .dijitIconSample,.dj_ie6 .dijitIconTable,.dj_ie6 .dijitIconUsers,.dj_ie6 .dijitFolderClosed,.dj_ie6 .dijitIconFolderClosed,.dj_ie6 .dijitFolderOpened,.dj_ie6 .dijitIconFolderOpen,.dj_ie6 .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled8bit.png");}.dijitDisabled .dijitIconSave,.dijitDisabled .dijitIconPrint,.dijitDisabled .dijitIconCut,.dijitDisabled .dijitIconCopy,.dijitDisabled .dijitIconClear,.dijitDisabled .dijitIconDelete,.dijitDisabled .dijitIconUndo,.dijitDisabled .dijitIconEdit,.dijitDisabled .dijitIconNewTask,.dijitDisabled .dijitIconEditTask,.dijitDisabled .dijitIconEditProperty,.dijitDisabled .dijitIconTask,.dijitDisabled .dijitIconFilter,.dijitDisabled .dijitIconConfigure,.dijitDisabled .dijitIconSearch,.dijitDisabled .dijitIconApplication,.dijitDisabled .dijitIconBookmark,.dijitDisabled .dijitIconChart,.dijitDisabled .dijitIconConnector,.dijitDisabled .dijitIconDatabase,.dijitDisabled .dijitIconDocuments,.dijitDisabled .dijitIconMail,.dijitDisabled .dijitLeaf,.dijitDisabled .dijitIconFile,.dijitDisabled .dijitIconFunction,.dijitDisabled .dijitIconKey,.dijitDisabled .dijitIconPackage,.dijitDisabled .dijitIconSample,.dijitDisabled .dijitIconTable,.dijitDisabled .dijitIconUsers,.dijitDisabled .dijitFolderClosed,.dijitDisabled .dijitIconFolderClosed,.dijitDisabled .dijitFolderOpened,.dijitDisabled .dijitIconFolderOpen,.dijitDisabled .dijitIconError {background-image: url("../../icons/images/commonIconsObjActDisabled.png");}.dijitIconSave {background-position: 0;}.dijitIconPrint {background-position: -16px;}.dijitIconCut {background-position: -32px;}.dijitIconCopy {background-position: -48px;}.dijitIconClear {background-position: -64px;}.dijitIconDelete {background-position: -80px;}.dijitIconUndo {background-position: -96px;}.dijitIconEdit {background-position: -112px;}.dijitIconNewTask {background-position: -128px;}.dijitIconEditTask {background-position: -144px;}.dijitIconEditProperty {background-position: -160px;}.dijitIconTask {background-position: -176px;}.dijitIconFilter {background-position: -192px;}.dijitIconConfigure {background-position: -208px;}.dijitIconSearch {background-position: -224px;}.dijitIconError {background-position: -496px;} .dijitIconApplication {background-position: -240px;}.dijitIconBookmark {background-position: -256px;}.dijitIconChart {background-position: -272px;}.dijitIconConnector {background-position: -288px;}.dijitIconDatabase {background-position: -304px;}.dijitIconDocuments {background-position: -320px;}.dijitIconMail {background-position: -336px;}.dijitIconFile, .dijitLeaf {background-position: -352px;}.dijitIconFunction {background-position: -368px;}.dijitIconKey {background-position: -384px;}.dijitIconPackage{background-position: -400px;}.dijitIconSample {background-position: -416px;}.dijitIconTable {background-position: -432px;}.dijitIconUsers {background-position: -448px;}.dijitIconFolderClosed, .dijitFolderClosed {background-position: -464px;}.dijitIconFolderOpen, .dijitFolderOpened {background-position: -480px;}.dijitIconLoading {background: url("../../icons/images/loadingAnimation.gif") no-repeat; height: 20px; width: 20px;}.nihilo .dojoDndItemOver {background-image: url("images/treeHover.png");}.nihilo table.dojoDndAvatar {-moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}.nihilo .dojoDndAvatar td {border: none;}.nihilo .dojoDndAvatar tr {border: none;}.nihilo .dojoDndAvatarHeader td {height: 20px; padding: 0 0 0 21px;}.nihilo .dojoDndAvatarItem td {padding: 2px;}.nihilo.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoMove.png"); background-repeat: no-repeat; background-position: 2px center;}.nihilo.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.nihilo.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndMove.png"); background-repeat: no-repeat; background-position: 2px center;}.nihilo.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.nihilo .dijitContentPane {padding: 0;}.nihilo .dijitTabContainerTop-dijitContentPane,.nihilo .dijitTabContainerLeft-dijitContentPane,.nihilo .dijitTabContainerRight-dijitContentPane,.nihilo .dijitTabContainerBottom-dijitContentPane,.nihilo .dijitAccordionContainer-dijitContentPane {background-color: #fff; padding: 5px;}.nihilo .dijitSplitContainer-dijitContentPane,.nihilo .dijitBorderContainer-dijitContentPane {background-color: #fff; padding: 5px;}.nihilo .dijitMenu,.nihilo .dijitMenuBar {border: 1px solid #d3d3d3; margin: 0; padding: 0; background-color: #fff;}.nihilo .dijitBorderContainer .dijitMenuBar {border: 1px #ccc solid;}.nihilo .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.nihilo .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {font-style: italic;}.nihilo .dijitMenuItem TD {padding:1px;}.nihilo .dijitMenuPassive .dijitMenuItemHover,.nihilo .dijitComboBoxMenu .dijitMenuItemHover,.nihilo .dijitMenuItemSelected {background-color: #ffe284; color: #243C5F;}.nihilo .dijitMenuItemIcon {width: 15px; height: 15px;}.nihilo .dijitMenuExpand {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-position: -30px top;}.dj_ie6 .nihilo .dijitMenuExpand {background-image:url("images/spriteRoundedIconsSmall.gif");}.nihilo .dijitMenuSeparator {height: 1px;}.nihilo .dijitMenuSeparatorTop {border-bottom: 1px solid #fff;}.nihilo .dijitMenuSeparatorBottom {border-top: 1px solid #d3d3d3;}.nihilo .dijitCheckedMenuItem .dijitMenuItemIcon {background-image: url("images/spriteCheckbox.gif"); background-position: -80px;}.nihilo .dijitCheckedMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.nihilo .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("images/spriteRadio.gif"); background-position: -80px;}.nihilo .dijitRadioMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.nihilo .dijitTabContainer .tabStripRBtn {margin-right: 21px;}.nihilo .dijitTabContainer .tabStripLBtn {margin-left: 21px;}.nihilo .dijitTabContainerBottom .nowrapTabStrip .dijitTab {top: 0;}.nihilo .dijitTabPaneWrapper {background:#fff; border:1px solid #ccc; margin: 0; padding: 0;}.nihilo .dijitTab {padding:3px 6px 3px 4px; background: url("images/tabContainerSprite.gif") repeat-x 0 -350px; position: relative; line-height:normal; margin: 0 1px; color: #6d6d6d; border: 1px #dedede solid; border-bottom: 1px #ccc solid;}.nihilo .dijitTabHover {color: #243C5F; background: url("images/tabContainerSprite.gif") repeat-x 0 -200px;}.nihilo .dijitTabChecked {background: url("images/tabContainerSprite.gif") repeat-x 0 -50px; color: #243C5F !important;}.nihilo .dijitTabContainerNested .dijitTabListWrapper {height: auto;}.nihilo .dijitTabContainerTabListNested {background: #FDFDFD; border: none; margin-bottom: 0;}.nihilo .dijitTabContainerTabListNested .dijitTab {background: none; border: none; top: 0;}.nihilo .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.nihilo .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: underline; font-weight: bold;}.nihilo .dijitTabContainerSpacerNested {height: 0; border-bottom: 0;}.nihilo .dijitTabPaneWrapperNested {border: none;}.nihilo .dijitTabCloseButton {background: url("images/spriteRoundedIconsSmall.png") no-repeat -60px top; width: 15px; height: 15px; margin-top: -1px;}.dj_ie6 .nihilo .dijitTabCloseButton {background: url("images/spriteRoundedIconsSmall.gif") no-repeat -60px top;}.nihilo .dijitTabCloseButtonHover {background: url("images/spriteRoundedIconsSmall.png") no-repeat -60px -15px;}.dj_ie6 .nihilo .dijitTabCloseButtonHover {background: url("images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px;}.nihilo .dijitTabContainerTop-tabs {border-bottom: none; padding-bottom: 1px; background-position: bottom; padding-left: 3px;}.nihilo .dijitTabContainerTop-tabs .dijitTab {border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0;}.dj_ie6 .nihilo .dijitTabListContainer-top,.dj_ie7 .nihilo .dijitTabListContainer-top {z-index: 3;}.dj_ie6 .nihilo .dijitTabContainerTop-tabs,.dj_ie7 .nihilo .dijitTabContainerTop-tabs {border-bottom: 1px solid #ccc; padding-bottom: 0;}.nihilo .dijitTabContainerTopNoStrip {padding-top: 3px;}.nihilo .dijitTabContainerTop-container {border-top: none;}.nihilo .dijitTabContainerTop-tabs .dijitTabChecked {border-bottom-color: #f8f8f8;}.nihilo .dijitTabContainer .dijitTabContainerTopStrip {border-bottom: none; padding-top: 1px; margin-top: 1px; background: #f2f2f2; border-top: 1px solid #CCC; border-right: 1px solid #CCC; border-left: 1px solid #CCC;}.nihilo .dijitTabContainerBottom-tabs {border-top: none; background-position: top; padding-left: 3px;}.nihilo .dijitTabContainerBottom-tabs .dijitTab {border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-bottom: none; border-top: 1px solid #ccc; padding-top: 3px; padding-bottom: 3px; background: url("images/tabBottomEnabledC.gif") repeat-x bottom left;}.nihilo .dijitTabContainerBottom-tabs .dijitTabHover {color: #243C5F; background: url("images/tabBottomHoverC.gif") repeat-x bottom left;}.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked {border-top-color: #f8f8f8; background: url("images/tabBottomActiveC.gif") repeat-x bottom left;}.dj_ie6 .nihilo .dijitTabListContainer-bottom,.dj_ie7 .nihilo .dijitTabListContainer-bottom {z-index: 3;}.dj_ie6 .nihilo .dijitTabContainerBottom-tabs,.dj_ie7 .nihilo .dijitTabContainerBottom-tabs {border-top: 1px solid #ccc; margin-top: -1px;}.nihilo .dijitTabContainerBottom-container {border-bottom: none;}.nihilo .dijitTabContainer .dijitTabContainerBottomStrip {border: 1px solid #ccc; background: #f2f2f2; border-top: none; padding-bottom: 2px;}.nihilo .dijitTabContainerBottom-spacer,.nihilo .dijitTabContainerTop-spacer {height: 2px; border: 1px solid #ccc;}.nihilo .dijitTabContainerTop-spacer {margin-top: -1px; background: #f3f3f3;}.nihilo .dijitTabContainerBottom-spacer {margin-bottom: -1px; background: #f8f8f8;}.nihilo .dijitTabContainerRight-tabs {border-color: #ccc; padding-top: 3px;}.nihilo .dijitTabContainerRight-tabs .dijitTab {border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-left: 1px solid #ccc; border-bottom: 1px solid #dedede !important;}.nihilo .dijitTabContainerRight .dijitTabListWrapper {padding-right: 3px;}.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {border-left: 1px solid #f8f8f8;}.nihilo .dijitTabContainerRight-container {border-right: none;}.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTab {border-bottom: solid #fff 1px;}.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {border-left-color: #f8f8f8;}.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabCheckedHover {border-bottom: solid #efefef 1px;}.nihilo .dijitTabContainerRightStrip {padding-right: 2px; border: 1px solid #ccc; border-left: none; background: #f2f2f2;}.nihilo .dijitTabContainerLeft-tabs {border-color: #ccc; padding-top: 3px;}.nihilo .dijitTabContainerLeft-tabs .dijitTab {border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-right: 1px solid #ccc; border-bottom: 1px solid #dedede;}.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked {border-right: 1px solid #f8f8f8;}.nihilo .dijitTabContainerLeft-container {border-left: none;}.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked,.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover {border-bottom: solid #efefef 1px;}.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv {border-bottom: solid #fff 1px;}.nihilo .dijitTabContainerLeftStrip {padding-left: 2px; border: 1px solid #ccc; border-right: none;}.nihilo .dijitTabContainerLeftStrip {background: #f2f2f2;}.nihilo .dijitTabContainerLeft-tabs .dijitTab,.nihilo .dijitTabContainerRight-tabs .dijitTab {margin: 1px 0;}.nihilo .dijitTabContainerLeft-spacer,.nihilo .dijitTabContainerRight-spacer {width: 2px; border: 1px solid #ccc; background: #f8f8f8;}.nihilo .dijitTabContainerRight-spacer {border-right: none;}.nihilo .dijitTabContainerRight-tabs {padding-top: 3px; height: 100%;}.nihilo .dijitTabContainerLeft-tabs {height: 100%;}.nihilo .dijitTabContainerLeft-spacer {border-left: none;}.nihilo .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {border-left: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.nihilo .dijitTabContainer .tabStripButton {margin-right: 0; padding: 5px 3px 6px 0px;}.dj_ie6 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_ie7 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_opera .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent {padding-bottom: 7px;}.dj_ie6 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_ie7 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_opera .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent {padding-top: 4px;}.nihilo .dijitTabStripIcon {height: 14px; width: 14px; background: url("images/spriteRoundedIconsSmall.png") no-repeat left top;}.dj_ie6 .nihilo .dijitTabStripIcon {background-image: url("images/spriteRoundedIconsSmall.gif");}.nihilo .dijitTabStripSlideRightIcon {background-position: -30px top;}.nihilo .dijitTabStripMenuIcon {background-position: -15px top;}.nihilo .dijitTabContainerTopNone {padding-top: 0;}.nihilo .dijitTabContainer .tabStripButton-top {margin-top: 1px;}.nihilo .dijitTabContainer .tabStripButton-bottom {border-bottom: medium none; border-top: 1px solid #CCCCCC;}.nihilo .dijitAccordionContainer {border-color: #ccc; background-color: #fff;}.nihilo .dijitAccordionTitle {background:#fafafa url("images/titleBar.png") repeat-x top left; border-top: 1px solid #dedede; padding: 5px 4px 6px 8px; font-size: 0.9em; font-weight: bold; color: #6d6d6d;}.nihilo .dijitAccordionTitleSelected {background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x; font-weight: bold; border-top: 1px solid #dedede; border-bottom: 1px solid #dedede; padding: 5px 4px 5px 8px; color: #243C5F;}.nihilo .dijitAccordionArrow {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top; width:15px; height:15px; margin-top:-1px;}.nihilo .dijitAccordionTitleSelected .dijitAccordionArrow {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top; margin-top:-1px;}.nihilo .dijitAccordionText {margin-left: 4px; margin-right: 4px;}.nihilo .dijitSplitContainerSizerH {background:url("images/splitContainerSizerV.png") repeat-y #fff; border:0; border-left:0 solid #d3d3d3; border-right:0 solid #d3d3d3; width:5px;}.nihilo .dijitSplitContainerSizerH .thumb {background:url("images/splitContainerSizerV-thumb.png") no-repeat; left:1px; width:2px; height:19px;}.nihilo .dijitSplitContainerSizerV {background:url("images/splitContainerSizerH.png") repeat-x #fff; border:0; border-top:0 solid #d3d3d3; border-bottom:0 solid #d3d3d3; height:2px;}.nihilo .dijitSplitContainerSizerV .thumb {background:url("images/splitContainerSizerH-thumb.png") no-repeat; top:1px; width:19px; height:5px;}.nihilo .dijitBorderContainer {background-color: #fcfcfc; padding: 5px;}.nihilo .dijitSplitContainer-child,.nihilo .dijitBorderContainer-child {border: 1px #ccc solid;}.nihilo .dijitBorderContainer-dijitTabContainerTop,.nihilo .dijitBorderContainer-dijitTabContainerBottom,.nihilo .dijitBorderContainer-dijitTabContainerLeft,.nihilo .dijitBorderContainer-dijitTabContainerRight {border: none;}.nihilo .dijitBorderContainer-dijitBorderContainer {border: none; padding: 0;}.nihilo .dijitSplitterH,.nihilo .dijitGutterH {background:#FCFCFC; border:0; border-left:0 solid #d3d3d3; border-right:0 solid #d3d3d3; height:5px;}.nihilo .dijitSplitterH .dijitSplitterThumb {background:#8BA0BD none; height:1px; top:2px; width:19px;}.nihilo .dijitSplitterV,.nihilo .dijitGutterV {background:#FCFCFC; border:0; border-top:0 solid #d3d3d3; border-bottom:0 solid #d3d3d3; width:5px;}.nihilo .dijitSplitterV .dijitSplitterThumb {background:#8BA0BD none; height:19px; left:2px; width:1px;}.nihilo .dijitSplitterActive {font-size: 1px; background-image: none; background-color: #aaa; -moz-opacity: 0.6; opacity: 0.6; filter: Alpha(Opacity=60); margin: 0;}.nihilo .dijitInputContainer input {margin: 0 0.1em;}.nihilo .dijitSelect .dijitButtonContents,.nihilo .dijitSelect,.nihilo .dijitTextBox,.nihilo .dijitTextArea {background:#fff url("images/validationInputBg.png") repeat-x top left; #background:#fff url("images/validationInputBg.gif") repeat-x top left;}.nihilo .dijitSelect,.nihilo .dijitTextBox,.nihilo .dijitTextArea {border:1px solid #d3d3d3;}.nihilo .dijitSelect .dijitArrowButton,.nihilo .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.nihilo .dijitSelect .dijitButtonContents,.nihilo .dijitTextBox .dijitButtonNode {border-color: #d3d3d3;}.nihilo .dijitSelectFocused,.nihilo .dijitTextBoxFocused,.nihilo .dijitTextAreaFocused {border-color:#b3b3b3;}.nihilo .dijitSelectFocused TD,.nihilo .dijitTextBoxFocused .dijitButtonNode,.nihilo .dijitSpinner .dijitUpArrowButtonActive,.nihilo .dijitSpinner .dijitDownArrowButtonActive {border-color:#d3d3d3;}.nihilo .dijitSpinnerFocused .dijitDownArrowButton,.nihilo .dijitSpinner .dijitUpArrowButtonActive,.nihilo .dijitSpinner .dijitDownArrowButtonActive {border-top-color:#d3d3d3;}.nihilo .dijitError {border-color:#b3b3b3; background-color:#f9f7ba; background-image:none;}.nihilo .dijitErrorFocused {background-color:#ff6; background-image:none;}.nihilo .dijitValidationTextBoxError .dijitValidationIcon {width: 16px; background: transparent url("images/warning.png") no-repeat center center;}.nihilo .dijitComboBoxHighlightMatch {background-color:#d3d3d3;}.nihilo .dijitButtonNode {border:1px solid #dedede; border-bottom:1px solid #dedede; padding: 0.1em 0.2em 0.2em 0.2em; background: #fff url("images/buttonEnabled.png") repeat-x top left;}.nihilo .dijitButtonText {text-align: center; padding: 0 0.3em;}.nihilo .dijitInputField {padding: 0;}.nihilo .dijitComboBox .dijitButtonNode {border-width: 0 0 0 1px;}.nihilo .dijitArrowButton {color: #111;}.nihilo .dijitComboButton .dijitDownArrowButton {padding-right:4px;}.nihilo .dijitComboBoxReadOnly,.nihilo .dijitSpinnerReadOnly,.nihilo .dijitSpinnerReadOnly .dijitButtonNode,.nihilo .dijitButtonDisabled .dijitButtonNode,.nihilo .dijitToggleButtonDisabled .dijitButtonNode,.nihilo .dijitDropDownButtonDisabled .dijitButtonNode,.nihilo .dijitComboButtonDisabled .dijitButtonNode,.nihilo .dijitComboBoxDisabled,.nihilo .dijitSpinnerDisabled,.nihilo .dijitSpinnerDisabled .dijitButtonNode {border-color: #dedede; background:#fafafa url("images/buttonDisabled.png") top repeat-x; opacity: 0.60;}.dj_ie6 .nihilo .dijitReadOnly input,.dj_ie7 .nihilo .dijitReadOnly input,.dj_ie6 .nihilo .dijitComboButtonDisabled .dijitButtonText,.dj_ie7 .nihilo .dijitComboButtonDisabled .dijitButtonText {color: #aaa;}.nihilo .dijitButtonHover .dijitButtonNode,.nihilo .dijitButtonNodeHover,.nihilo .dijitToggleButtonHover .dijitButtonNode,.nihilo .dijitDropDownButtonHover .dijitButtonNode,.nihilo .dijitButtonContentsHover,.nihilo .dijitDownArrowButtonHover,.nihilo .dijitUpArrowButtonHover {color:#243C5F; background:#fcfcfc url("images/buttonHover.png") repeat-x top left;}.nihilo .dijitUpArrowButtonActive,.nihilo .dijitDownArrowButtonActive,.nihilo .dijitButtonActive .dijitButtonNode,.nihilo .dijitToggleButtonActive .dijitButtonNode,.nihilo .dijitDropDownButtonActive .dijitButtonNode,.nihilo .dijitComboButton .dijitButtonContentsActive,.nihilo .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {border-color:#dedede; background: #f5f5f5 url("images/buttonActive.png") top left repeat-x;}.nihilo .dijitArrowButtonInner {background-image: url("images/spriteArrows.png"); background-repeat: no-repeat; background-position: 0 center; width: 11px; height: 11px;}.nihilo .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -11px center;}.nihilo .dijitUpArrowButton .dijitArrowButtonInner {background-position: -22px center;}.nihilo .dijitRightArrowButton .dijitArrowButtonInner {background-position: -33px center;}.dj_ie6 .nihilo .dijitArrowButtonInner {background-image: url("images/spriteArrows.gif");}.dj_webkit .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {margin-top: -1px;}.dj_ie .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {margin-top: 1px;}.nihilo .dijitSpinnerButtonContainer {width: auto; padding: 0;}.nihilo .dijitSpinner .dijitArrowButton {width: 15px;}.nihilo .dijitSpinner .dijitSpinnerButtonInner {width: 15px;}.nihilo .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding: 0;}.nihilo .dijitToggleButton .dijitCheckBox,.nihilo .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/spriteCheckbox.gif");}.nihilo .dijitCheckBox,.nihilo .dijitCheckBoxIcon {background-image: url("images/spriteCheckbox.gif"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0;}.nihilo .dijitCheckBox,.nihilo .dijitToggleButton .dijitCheckBoxIcon {background-position: -16px;}.nihilo .dijitCheckBoxChecked,.nihilo .dijitToggleButtonChecked .dijitCheckBoxIcon {background-position: 0;}.nihilo .dijitCheckBoxDisabled {background-position: -48px;}.nihilo .dijitCheckBoxCheckedDisabled {background-position: -32px;}.nihilo .dijitCheckBoxHover {background-position: -80px;}.nihilo .dijitCheckBoxCheckedHover {background-position: -64px;}.nihilo .dijitToggleButton .dijitRadio,.nihilo .dijitToggleButton .dijitRadioIcon {background-image: url("images/spriteRadio.gif");}.nihilo .dijitRadio,.nihilo .dijitRadioIcon {background-image: url("images/spriteRadio.gif"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0;}.nihilo .dijitRadio,.nihilo .dijitToggleButton .dijitRadioIcon {background-position: -16px;}.nihilo .dijitRadioChecked,.nihilo .dijitToggleButtonChecked .dijitRadioIcon {background-position: 0;}.nihilo .dijitRadioDisabled {background-position: -48px;}.nihilo .dijitRadioCheckedDisabled {background-position: -32px;}.nihilo .dijitRadioHover {background-position: -80px;}.nihilo .dijitRadioCheckedHover {background-position: -64px;}.nihilo .dijitSliderProgressBarH {border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.nihilo .dijitSliderProgressBarV {border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.nihilo .dijitSliderFocused .dijitSliderProgressBarH,.nihilo .dijitSliderFocused .dijitSliderLeftBumper {background-image:url("images/sliderFullFocus.png");}.nihilo .dijitSliderFocused .dijitSliderProgressBarV,.nihilo .dijitSliderFocused .dijitSliderBottomBumper {background-image:url("images/sliderFullVerticalFocus.png");}.nihilo .dijitSliderRemainingBarV {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y bottom left;}.nihilo .dijitSliderRemainingBarH {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left;}.nihilo .dijitSliderBar {border-style: solid; outline:1px;}.nihilo .dijitSliderFocused .dijitSliderBar {border-color:#727272;}.nihilo .dijitSliderImageHandleH {border:0; width:15px; height:18px; background:url("images/preciseSliderThumb.png") no-repeat center top; #background:url("images/preciseSliderThumb.gif") no-repeat center top;}.nihilo .dijitSliderFocused .dijitSliderImageHandleH {background-image:url("images/preciseSliderThumbFocus.png"); #background-image:url("images/preciseSliderThumbFocus.gif");}.nihilo .dijitSliderLeftBumper {border-left-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.nihilo .dijitSliderRightBumper {background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left; border-color: #b4b4b4; border-right-width: 1px;}.nihilo .dijitSliderImageHandleV {border:0; width:20px; height:15px; background:url("images/sliderThumb.png") no-repeat center center; #background:url("images/sliderThumb.gif") no-repeat center center;}.nihilo .dijitSliderFocused .dijitSliderImageHandleV {background-image:url("images/sliderThumbFocus.png"); #background-image:url("images/sliderThumbFocus.gif");}.nihilo .dijitSliderBottomBumper {border-bottom-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.nihilo .dijitSliderTopBumper {background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y top left; border-color: #b4b4b4; border-top-width: 1px;}.nihilo .dijitSliderIncrementIconH,.nihilo .dijitSliderIncrementIconV {background:url("images/spriteRoundedIconsSmall.png") no-repeat -45px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -45px top; width:15px; height:15px;}.nihilo .dijitSliderIncrementIconH {background:url("images/spriteRoundedIconsSmall.png") no-repeat -30px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;}.nihilo .dijitSliderDecrementIconH,.nihilo .dijitSliderDecrementIconV {width:15px; height:15px; background:url("images/spriteRoundedIconsSmall.png") no-repeat -15px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top;}.nihilo .dijitSliderDecrementIconH {background:url("images/spriteRoundedIconsSmall.png") no-repeat 0 top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat 0 top;}.nihilo .dijitSliderButtonInner {visibility:hidden;}.nihilo .dijitSliderReadOnly *,.nihilo .dijitSliderDisabled * {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; color: #bdbdbd;}.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconH,.nihilo .dijitSliderDisabled .dijitSliderDecrementIconH {background-position: 0 -15px;}.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconH,.nihilo .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -30px -15px;}.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconV,.nihilo .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -15px -15px;}.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconV,.nihilo .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -45px -15px;}.nihilo .dijitSelectError .dijitButtonContents,.nihilo .dijitSelectHover .dijitArrowButton,.nihilo .dijitSelectActive .dijitArrowButton,.nihilo .dijitSelectOpened .dijitArrowButton,.nihilo .dijitSelectDisabled .dijitArrowButton,.nihilo .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.nihilo .dijitSelect .dijitArrowButton {background: #bcd5f0 url("images/buttonEnabled.png") repeat-x top left; border-width: 0;}.nihilo .dijitSelectDisabled,.nihilo .dijitSelectDisabled TD {border-color: #dedede !important; background:#fafafa url("images/buttonDisabled.png") top repeat-x;}.dj_ie .nihilo .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.nihilo .dijitSelectHover,.nihilo .dijitSelectHover TD {color:#000; background:#fcfcfc url("images/buttonHover.png") repeat-x top left;}.nihilo .dijitSelectActive,.nihilo .dijitSelectOpened,.nihilo .dijitSelectActive TD,.nihilo .dijitSelectOpened TD {border-color:#dedede !important; background: #f5f5f5 url("images/buttonActive.png") top left repeat-x;}.nihilo .dijitSelectMenu td {padding: 0;}.nihilo .dijitSelectMenu .dijitMenuItemLabel,.nihilo .dijitSelectMenu .dijitMenuArrowCell {padding: 0.1em 0.2em;}.nihilo .dijitTreeNode {background : url("images/treeI.gif") no-repeat; background-position : top left; background-repeat : repeat-y; zoom: 1;}.nihilo .dijitTreeIsLast {background: url("images/treeI_half.gif") no-repeat;}.nihilo .dijitTreeRowHover {background-image: url("images/treeHover.png"); background-repeat: repeat; background-color: transparent !important;}.nihilo .dijitTreeLabel {font-weight: normal; margin-left: 3px;}.nihilo .dijitTreeIsRoot {margin-left: 0; background-image: none;}.nihilo .dijitTreeExpando {width: 18px; height: 18px;}.nihilo .dijitTreeRow {padding-bottom: 2px;}.nihilo .dijitTreeContent {min-height: 18px; min-width: 18px; padding-left:1px;}.nihilo .dijitTreeExpandoOpened {background: url("images/spriteTree.gif") no-repeat -18px top;}.nihilo .dijitTreeExpandoClosed {background-image: url("images/spriteTree.gif");}.nihilo .dijitTreeExpandoLeaf {background: url("images/spriteTree.gif") no-repeat -36px top;}.nihilo .dijitTreeExpandoLoading {background-image: url("images/treeExpand_loading.gif");}.nihilo .dijitTreeIcon {width: 16px; height: 16px;}.nihilo .dijitFolderOpened {background: url("images/spriteDivIcons.gif") no-repeat -16px top;}.nihilo .dijitFolderClosed {background: url("images/spriteDivIcons.gif") no-repeat top left;}.nihilo .dijitLeaf {background: url("images/spriteDivIcons.gif") no-repeat -32px top;}.nihilo .dijitTreeNode .dojoDndItemBefore,.nihilo .dijitTreeNode .dojoDndItemAfter {border-bottom: none; border-top: none;}.nihilo .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {border-top: 2px solid #369;}.nihilo .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {border-bottom: 2px solid #369;}.nihilo .dijitProgressBar {margin:2px 0 2px 0;}.nihilo .dijitProgressBarEmpty{background:#fff url("images/progressBarEmpty.png") repeat-x center center; border-color: #f8d582 #f8d582 #f8d582 #f8d582;}.nihilo .dijitProgressBarTile{background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;}.nihilo .dijitProgressBarFull {border: 0px solid #f8d582; border-right-width: 1px;}.nihilo .dijitProgressBarLabel {color:#293a4b;}.nihilo .dijitProgressBarIndeterminate .dijitProgressBarTile {background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;}.nihilo .dijitTitlePaneTitle {background: #cccccc; background:#fff url("images/titleBar.png") repeat-x top left; border:1px solid #bfbfbf; padding:3px 4px; font-size: 0.9em; font-weight: bold; color: #6d6d6d;}.nihilo .dijitTitlePaneTitleHover {background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x;}.nihilo .dijitTitlePane .dijitArrowNode,.nihilo .dijitFieldset .dijitArrowNode {width:15px; height:15px;}.nihilo .dijitTitlePaneTextNode {color: #243C5F;}.nihilo .dijitTitlePane .dijitClosed .dijitArrowNode, .nihilo .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background: url("images/spriteRoundedIconsSmall.png") no-repeat -30px top;}.dj_ie6 .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode, .dj_ie6 .nihilo .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;}.nihilo .dijitTitlePane .dijitOpen .dijitArrowNode, .nihilo .dijitFieldset .dijitFieldsetTitleOpen .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.png") no-repeat -15px top;}.dj_ie6 .nihilo .dijitTitlePane .dijitOpen .dijitArrowNode, .dj_ie6 .nihilo .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top;}.nihilo .dijitTitlePaneContentOuter {background: #ffffff; border:1px solid #bfbfbf; border-top: 0;}.nihilo .dijitTitlePaneContentInner {padding:10px;}.nihilo .dijitTitlePaneTextNode {margin-left: 4px; margin-right: 4px;}.nihilo .dijitCalendarIncrementControl {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat}.dj_ie6 .nihilo .dijitCalendarIncrementControl {font-size:.1em; background-image: url("images/spriteRoundedIconsSmall.gif");}.nihilo .dijitA11ySideArrow {display: none;}.nihilo .dijitCalendarDecrease {background-position: top left;}.nihilo .dijitCalendarIncrease {background-position: -30px top;}.nihilo table.dijitCalendarContainer {font-size: 100%; border-spacing: 0; border-collapse: separate; margin: 0;}.nihilo .dijitCalendarMonthContainer {background:#d3d3d3 url("images/titleBar.png") repeat-x top; padding-top:.3em; padding-bottom:.2em; text-align:center;}.dj_ie6 .nihilo .dijitCalendarMonthContainer th {padding-top:.2em; padding-bottom:.1em;}.nihilo .dijitCalendarDayLabelTemplate {background:#fefefe; font-weight:normal; padding-top:.15em; padding-bottom:.2em; border-bottom: 1px solid #eeeeee; color:#293a4b; text-align:center;}.nihilo .dijitCalendarBodyContainer {border-bottom: 1px solid #eeeeee;}.nihilo .dijitCalendarMonthLabel {color:#293a4b; font-weight: bold; padding: 0 4px;}.nihilo .dijitCalendarDateTemplate {font-size: 0.9em; font-weight: bold; text-align: center; padding: 0.3em 0.3em 0.05em 0.3em; letter-spacing: 1px; background-color: #fdfdfd; border:#fdfdfd solid 1px !important;}.dj_ie .nihilo .dijitCalendarDateTemplate {padding: 0.1em .33em 0.02em .33em;}.nihilo .dijitCalendarPreviousMonth,.nihilo .dijitCalendarNextMonth {color:#999999; background-color:#f5f5f5 !important; border:#f5f5f5 solid 1px !important;}.nihilo .dijitCalendarCurrentMonth {}.nihilo .dijitCalendarDisabledDate {text-decoration:line-through !important;}.nihilo .dijitCalendarCurrentDate {text-decoration:underline; font-weight:bold;}.nihilo .dijitCalendarSelectedDate {background-color:#ffe284 !important; color:black !important; border:#f7c95c solid 1px !important;}.nihilo .dijitCalendarYearContainer {background:white url("images/titleBar.png") repeat-x top;}.nihilo .dijitCalendarYearLabel {margin:0; padding:0.4em 0 0.25em 0; text-align:center; font-size: 1.17em;}.nihilo .dijitCalendarSelectedYear {font-weight:bolder; color:black; padding:0.2em; padding-bottom:0.1em; background-color:#ffe284 !important; border:#f7c95c solid 1px !important;}.nihilo .dijitCalendarNextYear,.nihilo .dijitCalendarPreviousYear {color:black !important; font-weight:normal;}.nihilo .dijitCalendar .dijitDropDownButton {margin: 0;}.nihilo .dijitCalendar .dijitButtonText {padding: 0;}.nihilo .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.nihilo .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #ffe284; color: #243C5F;}.nihilo .dijitTimePickerTick,.nihilo .dijitTimePickerMarker {border-color: #eeeeee;}.nihilo .dijitTimePickerTick {color: gray;}.nihilo .dijitTimePickerMarker {background:#d3d3d3 url("images/titleBar.png") repeat-x top; color:#293a4b; font-weight: bold;}.nihilo .dijitTimePickerItemSelected {color: black; background: #ffe284 none;}.nihilo .dijitTimePickerItemHover {background: #d6d6dd none; color:black;}.nihilo .dijitTimePickerTick .dijitTimePickerItemInner {font-size: 0.8em;}.nihilo .dijitTimePickerItemSelected .dijitTimePickerItemInner {font-size: 1em;}.nihilo .dijitToolbar {border-bottom: 1px solid #ccc; background:#eaeaea url("images/titleBar.png") repeat-x top left;}.dj_ie6 .nihilo .dijitToolbar {height: 10px;}.nihilo .dijitToolbar .dijitButtonNode,.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents,.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; margin: 0; padding: 0; border: none; font-size: 12px;}.nihilo .dijitToolbar .dijitButton,.nihilo .dijitToolbar .dijitToggleButton,.nihilo .dijitToolbar .dijitDropDownButton,.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents,.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; padding: 1px;}.nihilo .dijitToolbar .dijitButtonChecked,.nihilo .dijitToolbar .dijitToggleButtonChecked {background-color:#ffeeb9; border:1px solid #f7c95c; padding: 0;}.nihilo .dijitToolbar .dijitButtonCheckedHover,.nihilo .dijitToolbar .dijitToggleButtonCheckedHover {background-color:#ffe284; border:1px solid #f7c95c; padding: 0;}.nihilo .dijitToolbar .dijitButtonHover,.nihilo .dijitToolbar .dijitToggleButtonHover,.nihilo .dijitToolbar .dijitDropDownButtonHover,.nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsHover,.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {border: 1px solid #f7c95c; padding: 0; background-color:#ffe284;}.nihilo .dijitToolbar label {padding: 3px 3px 0 6px;}.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {border: 1px #555 dotted !important; padding: 0;}.nihilo .dijitDialog {background: #eee; border: 1px solid #d3d3d3; -webkit-box-shadow: 0 5px 10px #adadad; padding: 0;}.nihilo .dijitDialog .dijitDialogTitle {font-size: 0.9em; color: #243C5F; font-weight: bold; padding: 0 4px;}.nihilo .dijitDialog .dijitDialogPaneContent {background: #ffffff; border-top: 1px solid #d3d3d3; padding:10px;}.nihilo .dijitDialogTitleBar {background: #fafafa url("images/titleBar.png") repeat-x top left; padding: 5px 6px 3px 6px; outline:0;}.nihilo .dijitDialogCloseIcon {background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat; background-position: -60px 0; position: absolute; vertical-align: middle; right: 6px; top: 4px; height: 15px; width: 15px;}.dj_ie6 .nihilo .dijitDialogCloseIcon {background-image: url("images/spriteRoundedIconsSmall.gif");}.nihilo .dijitDialogCloseIconHover {background-position: -60px -15px;}.nihilo .dijitTooltip,.nihilo .dijitTooltipDialog {background: transparent;}.dijitTooltipBelow {padding-top: 10px;}.dijitTooltipAbove {padding-bottom: 10px;}.nihilo .dijitTooltipContainer {background-color: #fff; border:1px solid #d3d3d3; padding:0.45em;}.nihilo .dijitTooltipConnector {border:0; z-index: 2;}.nihilo .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 6px;}.nihilo .dijitTooltipBelow .dijitTooltipConnector {top: 0; left: 6px; background:url("images/tooltipConnectorUp.png") no-repeat top left; width:17px; height:11px;}.dj_ie .nihilo .dijitTooltipBelow .dijitTooltipConnector {background-image: url("images/tooltipConnectorUp.gif");}.nihilo .dijitTooltipAbove .dijitTooltipConnector {bottom: 0; left: 6px; background:url("images/tooltipConnectorDown.png") no-repeat top left; width:17px; height:11px;}.dj_ie .nihilo .dijitTooltipAbove .dijitTooltipConnector {background-image: url("images/tooltipConnectorDown.gif");}.dj_ie6 .nihilo .dijitTooltipAbove .dijitTooltipConnector {bottom: -5px;}.nihilo .dijitTooltipLeft {padding-right: 10px;}.nihilo .dijitTooltipLeft .dijitTooltipConnector {right: 0; background:url("images/tooltipConnectorRight.png") no-repeat top left; width:11px; height:17px;}.dj_ie .nihilo .dijitTooltipLeft .dijitTooltipConnector {background-image: url("images/tooltipConnectorRight.gif");}.nihilo .dijitTooltipRight {padding-left: 10px;}.nihilo .dijitTooltipRight .dijitTooltipConnector {left: 0; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:11px; height:17px;}.dj_ie .nihilo .dijitTooltipRight .dijitTooltipConnector {background-image: url("images/tooltipConnectorLeft.gif");}.nihilo .dijitMenu,.nihilo .dijitMenuBar {border: 1px solid #d3d3d3; margin: 0; padding: 0; background-color: #fff;}.nihilo .dijitBorderContainer .dijitMenuBar {border: 1px #ccc solid;}.nihilo .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.nihilo .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {font-style: italic;}.nihilo .dijitMenuItem TD {padding:1px;}.nihilo .dijitMenuPassive .dijitMenuItemHover,.nihilo .dijitComboBoxMenu .dijitMenuItemHover,.nihilo .dijitMenuItemSelected {background-color: #ffe284; color: #243C5F;}.nihilo .dijitMenuItemIcon {width: 15px; height: 15px;}.nihilo .dijitMenuExpand {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-position: -30px top;}.dj_ie6 .nihilo .dijitMenuExpand {background-image:url("images/spriteRoundedIconsSmall.gif");}.nihilo .dijitMenuSeparator {height: 1px;}.nihilo .dijitMenuSeparatorTop {border-bottom: 1px solid #fff;}.nihilo .dijitMenuSeparatorBottom {border-top: 1px solid #d3d3d3;}.nihilo .dijitCheckedMenuItem .dijitMenuItemIcon {background-image: url("images/spriteCheckbox.gif"); background-position: -80px;}.nihilo .dijitCheckedMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.nihilo .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("images/spriteRadio.gif"); background-position: -80px;}.nihilo .dijitRadioMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.nihilo .dijitToolbar .dijitToolbarSeparator {background: url("../../icons/images/editorIconsEnabled.png");}.nihilo .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.nihilo .dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIconSep {background-position: 0;}.dijitEditorIconSave {background-position: -18px;}.dijitEditorIconPrint {background-position: -36px;}.dijitEditorIconCut {background-position: -54px;}.dijitEditorIconCopy {background-position: -72px;}.dijitEditorIconPaste {background-position: -90px;}.dijitEditorIconDelete {background-position: -108px;}.dijitEditorIconCancel {background-position: -126px;}.dijitEditorIconUndo {background-position: -144px;}.dijitEditorIconRedo {background-position: -162px;}.dijitEditorIconSelectAll {background-position: -180px;}.dijitEditorIconBold {background-position: -198px;}.dijitEditorIconItalic {background-position: -216px;}.dijitEditorIconUnderline {background-position: -234px;}.dijitEditorIconStrikethrough {background-position: -252px;}.dijitEditorIconSuperscript {background-position: -270px;}.dijitEditorIconSubscript {background-position: -288px;}.dijitEditorIconJustifyCenter {background-position: -306px;}.dijitEditorIconJustifyFull {background-position: -324px;}.dijitEditorIconJustifyLeft {background-position: -342px;}.dijitEditorIconJustifyRight {background-position: -360px;}.dijitEditorIconIndent {background-position: -378px;}.dijitEditorIconOutdent {background-position: -396px;}.dijitEditorIconListBulletIndent {background-position: -414px;}.dijitEditorIconListBulletOutdent {background-position: -432px;}.dijitEditorIconListNumIndent {background-position: -450px;}.dijitEditorIconListNumOutdent {background-position: -468px;}.dijitEditorIconTabIndent {background-position: -486px;}.dijitEditorIconLeftToRight {background-position: -504px;}.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir {background-position: -522px;}.dijitEditorIconBackColor {background-position: -540px;}.dijitEditorIconForeColor {background-position: -558px;}.dijitEditorIconHiliteColor {background-position: -576px;}.dijitEditorIconNewPage {background-position: -594px;}.dijitEditorIconInsertImage {background-position: -612px;}.dijitEditorIconInsertTable {background-position: -630px;}.dijitEditorIconSpace {background-position: -648px;}.dijitEditorIconInsertHorizontalRule {background-position: -666px;}.dijitEditorIconInsertOrderedList {background-position: -684px;}.dijitEditorIconInsertUnorderedList {background-position: -702px;}.dijitEditorIconCreateLink {background-position: -720px;}.dijitEditorIconUnlink {background-position: -738px;}.dijitEditorIconViewSource {background-position: -756px;}.dijitEditorIconRemoveFormat {background-position: -774px;}.dijitEditorIconFullScreen {background-position: -792px;}.dijitEditorIconWikiword {background-position: -810px;} .dijitColorPalette {border:1px solid #d3d3d3; background:#fff; -moz-border-radius: 0 !important;} \ No newline at end of file
+.dijitReset {margin:0; border:0; padding:0; font: inherit; line-height:normal; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {position: absolute; visibility: hidden;}.dijitHidden * {visibility: hidden !important;}.dijitVisible {display: block !important; position: relative; visibility: visible;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important; border-collapse: separate;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: -10000px !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; -webkit-overflow-scrolling: touch;}.dijitPositionOnly {padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important;}.dijitNonPositionOnly {float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important;}.dijitBackgroundIframe {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0;}.dijitDisplayNone {display:none !important;}.dijitContainer {overflow: hidden;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner {background: no-repeat center; width: 12px; height: 12px; direction: ltr;}.dijitLeft {background-position:left top; background-repeat:no-repeat;}.dijitStretch {white-space:nowrap; background-repeat:repeat-x;}.dijitRight {#display:inline; background-position:right top; background-repeat:no-repeat;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.dijitButtonNode {border:1px solid gray; margin:0; line-height:normal; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap;}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {line-height:inherit;}.dijitTextBox .dijitButtonNode {border-width: 0;}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_ie .dijitButtonNode {zoom: 1;}.dj_ie .dijitButtonNode button {overflow: visible;}div.dijitArrowButton {float: right;}.dijitTextBox {border: solid black 1px; #overflow: hidden; width: 15em; vertical-align: middle;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_safari .dijitTextBoxDisabled input {color: #B0B0B0;}.dj_safari textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .dj_gecko .dijitTextBoxDisabled input {-moz-user-input: none;}.dijitPlaceHolder {color: #AAAAAA; font-style: italic; position: absolute; top: 0; left: 0; #filter: ""; white-space: nowrap; pointer-events: none;}.dijitTimeTextBox {width: 8em;}.dijitTextBox input:focus {outline: none;}.dijitTextBoxFocused {outline: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !important; direction: ltr !important; text-align: left !important; height: auto !important; #text-indent: 0 !important; #letter-spacing: -5em !important; #text-align: right !important;}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox {line-height: 100%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.dj_ie .dijitToolbar .dijitComboBox {vertical-align: middle;}.dijitTextBox .dijitSpinnerButtonContainer {width: 1em; position: relative !important; overflow: hidden;}.dijitSpinner .dijitSpinnerButtonInner {width:1em; visibility:hidden !important; overflow-x:hidden;}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0.3em !important; padding-right: 0.3em !important; margin-left: 0.3em !important; margin-right: 0.3em !important; width: 1.4em !important;}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0 !important; margin-right: 0 !important; width: 2em !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {padding: 0; position: absolute !important; right: 0; float: none; height: 50%; width: 100%; bottom: auto; left: 0; right: auto;}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: auto;}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {overflow: visible !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {top: 50%; border-top-width: 1px !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {#bottom: 50%; top: 0;}.dijitSpinner .dijitArrowButtonInner {margin: auto; overflow-x: hidden; height: 100% !important;}.dj_iequirks .dijitSpinner .dijitArrowButtonInner {height: auto !important;}.dijitSpinner .dijitArrowButtonInner .dijitInputField {-moz-transform: scale(0.5); -moz-transform-origin: center top; -webkit-transform: scale(0.5); -webkit-transform-origin: center top; -o-transform: scale(0.5); -o-transform-origin: center top; transform: scale(0.5); transform-origin: left top; padding-top: 0; padding-bottom: 0; padding-left: 0 !important; padding-right: 0 !important; width: 100%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput {padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden;}.dijitCheckBox input,.dijitRadio input {margin: 0; padding: 0; display: block;}.dijitCheckBoxInput {opacity: 0;}.dj_ie .dijitCheckBoxInput {filter: alpha(opacity=0);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.dijitProgressBarEmpty {position:relative;overflow:hidden; border:1px solid black; z-index:0;}.dijitProgressBarFull {position:absolute; overflow:hidden; z-index:-1; top:0; width:100%;}.dj_ie6 .dijitProgressBarFull {height:1.6em;}.dijitProgressBarTile {position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto;}.dijitProgressBarLabel {display:block; position:static; width:100%; text-align:center; background-color:transparent !important;}.dijitTooltip {position: absolute; z-index: 2000; display: block; left: 0; top: -10000px; overflow: visible;}.dijitTooltipContainer {border: solid black 2px; background: #b8b5b5; color: black; font-size: small;}.dijitTooltipFocusNode {padding: 2px 2px 2px 2px;}.dijitTooltipConnector {position: absolute;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane {position: absolute !important; z-index: 2;}.dijitBorderContainer > .dijitTextArea {resize: none;}.dijitGutter {position: absolute; font-size: 1px;}.dijitSplitter {position: absolute; overflow: hidden; z-index: 10; background-color: #fff; border-color: gray; border-style: solid; border-width: 0;}.dj_ie .dijitSplitter {z-index: 1;}.dijitSplitterActive {z-index: 11 !important;}.dijitSplitterCover {position:absolute; z-index:-1; top:0; left:0; width:100%; height:100%;}.dijitSplitterCoverActive {z-index:3 !important;}.dj_ie .dijitSplitterCover {background: white; opacity: 0;}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover {filter: alpha(opacity=0);}.dijitSplitterH {height: 7px; border-top:1px; border-bottom:1px; cursor: row-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0;}.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {overflow:hidden; position:absolute; top:49%;}.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {position:absolute; left:49%;}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV {font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto; -webkit-overflow-scrolling: touch;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitFieldset {border: 1px solid gray;}.dijitTitlePaneTitle, .dijitFieldsetTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {cursor: default;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {display: inline; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {display: none;}.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {display: none !important;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.dijitColorPalette .dijitPaletteTable {padding: 2px 3px 3px 3px; position: relative; overflow: hidden; outline: 0; border-collapse: separate;}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable {padding: 0; margin: 2px 3px 3px 3px;}.dijitColorPalette .dijitPaletteCell {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !important;}.dijitAccordionContainer {border:1px solid #b7b7b7; border-top:0 !important;}.dijitAccordionTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitAccordionTitleSelected {cursor: default;}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown {display: none; font-size: 0.65em; font-weight: normal !important;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer table {width: auto; clear: both;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarMonthContainer {text-align: center;}.dijitCalendarDecrementArrow {float: left;}.dijitCalendarIncrementArrow {float: right;}.dijitCalendarYearLabel {white-space: nowrap;}.dijitCalendarNextYear {margin:0 0 0 0.55em;}.dijitCalendarPreviousYear {margin:0 0.55em 0 0;}.dijitCalendarIncrementControl {vertical-align: middle;}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitCalendarDisabledDate {color: gray; text-decoration: line-through; cursor: default;}.dijitSpacer {position: relative; height: 1px; overflow: hidden; visibility: hidden;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.dijitMenu {border:1px solid black; background-color:white;}.dijitMenuTable {border-collapse:collapse; border-width:0; background-color:white;}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden;}.dijitMenuItem {text-align: left; white-space: nowrap; padding:.1em .2em; cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_a11y .dijitMenuExpandA11y {display: inline;}.dijitMenuSeparator td {border: 0; padding: 0;}.dijitMenuSeparatorTop {height: 50%; margin: 0; margin-top:3px; font-size: 1px;}.dijitMenuSeparatorBottom {height: 50%; margin: 0; margin-bottom:3px; font-size: 1px;}.dijitMenuItemIconChar {display: none; visibility: hidden;}.dj_a11y .dijitMenuItemIconChar {display: inline;}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar {visibility: visible;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}div.dijitTabDisabled, .dj_ie div.dijitTabDisabled {cursor: auto;}.dijitTab {position:relative; cursor:pointer; -webkit-tap-highlight-color: transparent; white-space:nowrap; z-index:3;}.dijitTab * {vertical-align: middle;}.dijitTabChecked {cursor: default;}.dijitTabContainerTop-tabs .dijitTab {top: 1px;}.dijitTabContainerBottom-tabs .dijitTab {top: -1px;}.dijitTabContainerLeft-tabs .dijitTab {left: 1px;}.dijitTabContainerRight-tabs .dijitTab {left: -1px;}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab {display:inline-block; #zoom: 1; #display:inline;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto; -webkit-tap-highlight-color: transparent; -moz-user-select: none;}.dijitTreeContainer {float: left;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dj_ie .dijitTreeLabel:focus {outline: 1px dotted black;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 4px;}.dijitDialog {position: absolute; z-index: 999; overflow: hidden;}.dijitDialogTitleBar {cursor: move;}.dijitDialogFixed .dijitDialogTitleBar {cursor:default;}.dijitDialogCloseIcon {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitDialogPaneContent {-webkit-overflow-scrolling: touch;}.dijitDialogUnderlayWrapper {position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important;}.dijitDialogUnderlay {background: #eee; opacity: 0.5;}.dj_ie .dijitDialogUnderlay {filter: alpha(opacity=50);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {border:4px solid #000; height:8px; width:8px;}.dijitSliderImageHandleV {top:-8px; right: -50%;}.dijitSliderImageHandleH {left:50%; top:-5px; vertical-align:top;}.dijitSliderBar {border-style:solid; border-color:black; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSliderBarContainerV {position:relative; height:100%; z-index:1;}.dijitSliderBarContainerH {position:relative; z-index:1;}.dijitSliderBarH {height:4px; border-width:1px 0;}.dijitSliderBarV {width:4px; border-width:0 1px;}.dijitSliderProgressBar {background-color:red; z-index:1;}.dijitSliderProgressBarV {position:static !important; height:0; vertical-align:top; text-align:left;}.dijitSliderProgressBarH {position:absolute !important; width:0; vertical-align:middle; overflow:visible;}.dijitSliderRemainingBar {overflow:hidden; background-color:transparent; z-index:1;}.dijitSliderRemainingBarV {height:100%; text-align:left;}.dijitSliderRemainingBarH {width:100% !important;}.dijitSliderBumper {overflow:hidden; z-index:1;}.dijitSliderBumperV {width:4px; height:8px; border-width:0 1px;}.dijitSliderBumperH {width:8px; height:4px; border-width:1px 0;}.dijitSliderBottomBumper,.dijitSliderLeftBumper {background-color:red;}.dijitSliderTopBumper,.dijitSliderRightBumper {background-color:transparent;}.dijitSliderDecoration {text-align:center;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%; white-space: nowrap;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_a11y .dijitSliderButtonInner {visibility:visible !important;}.dijitSliderButtonContainer {text-align:center; height:0;}.dijitSliderButtonContainer * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSlider .dijitButtonNode {padding:0; display:block;}.dijitRuleContainer {position:relative; overflow:visible;}.dijitRuleContainerV {height:100%; line-height:0; float:left; text-align:left;}.dj_opera .dijitRuleContainerV {line-height:2%;}.dj_ie .dijitRuleContainerV {line-height:normal;}.dj_gecko .dijitRuleContainerV {margin:0 0 1px 0;}.dijitRuleMark {position:absolute; border:1px solid black; line-height:0; height:100%;}.dijitRuleMarkH {width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important;}.dijitRuleLabelContainer {position:absolute;}.dijitRuleLabelContainerH {text-align:center; display:inline-block;}.dijitRuleLabelH {position:relative; left:-50%;}.dijitRuleLabelV {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}.dijitRuleMarkV {height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0;}.dj_ie .dijitRuleLabelContainerV {margin-top:-.55em;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.dijitToolbarSeparator {height: 18px; width: 5px; padding: 0 1px; margin: 0;}.dijitIEFixedToolbar {position:absolute; top: expression(eval((document.documentElement||document.body).scrollTop));}.dijitEditor {display: block;}.dijitEditorDisabled,.dijitEditorReadOnly {color: gray;}.dijitTimePicker {background-color: white;}.dijitTimePickerItem {cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitTimePickerItemHover {background-color:gray; color:white;}.dijitTimePickerItemSelected {font-weight:bold; color:#333; background-color:#b7cdee;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dijitTimePickerItemInner {text-align:center; border:0; padding:2px 8px 2px 8px;}.dijitTimePickerTick,.dijitTimePickerMarker {border-bottom:1px solid gray;}.dijitTimePicker .dijitDownArrowButton {border-top: none !important;}.dijitTimePickerTick {color:#CCC;}.dijitTimePickerMarker {color:black; background-color:#CCC;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitNumberTextBox {text-align: left; direction: ltr;}.dijitNumberTextBox .dijitInputInner {text-align: inherit;}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner {text-align: right;}.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {padding-right: 1px !important;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.dijitSelectFixedWidth .dijitButtonContents {width: 100%;}.dijitSelectMenu .dijitMenuItemIcon {display:none;}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {position: static;}.dijitSelectLabel *{vertical-align: baseline;}.dijitSelectSelectedOption * {font-weight: bold;}.dijitSelectMenu {border-width: 1px;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.dijitFocused .dijitMenuItemShortcutKey {text-decoration: underline;}.dijitIconSave,.dijitIconPrint,.dijitIconCut,.dijitIconCopy,.dijitIconClear,.dijitIconDelete,.dijitIconUndo,.dijitIconEdit,.dijitIconNewTask,.dijitIconEditTask,.dijitIconEditProperty,.dijitIconTask,.dijitIconFilter,.dijitIconConfigure,.dijitIconSearch,.dijitIconApplication,.dijitIconBookmark,.dijitIconChart,.dijitIconConnector,.dijitIconDatabase,.dijitIconDocuments,.dijitIconMail,.dijitLeaf,.dijitIconFile,.dijitIconFunction,.dijitIconKey,.dijitIconPackage,.dijitIconSample,.dijitIconTable,.dijitIconUsers,.dijitFolderClosed,.dijitIconFolderClosed,.dijitFolderOpened,.dijitIconFolderOpen,.dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled.png"); width: 16px; height: 16px;}.dj_ie6 .dijitIconSave,.dj_ie6 .dijitIconPrint,.dj_ie6 .dijitIconCut,.dj_ie6 .dijitIconCopy,.dj_ie6 .dijitIconClear,.dj_ie6 .dijitIconDelete,.dj_ie6 .dijitIconUndo,.dj_ie6 .dijitIconEdit,.dj_ie6 .dijitIconNewTask,.dj_ie6 .dijitIconEditTask,.dj_ie6 .dijitIconEditProperty,.dj_ie6 .dijitIconTask,.dj_ie6 .dijitIconFilter,.dj_ie6 .dijitIconConfigure,.dj_ie6 .dijitIconSearch,.dj_ie6 .dijitIconApplication,.dj_ie6 .dijitIconBookmark,.dj_ie6 .dijitIconChart,.dj_ie6 .dijitIconConnector,.dj_ie6 .dijitIconDatabase,.dj_ie6 .dijitIconDocuments,.dj_ie6 .dijitIconMail,.dj_ie6 .dijitLeaf,.dj_ie6 .dijitIconFile,.dj_ie6 .dijitIconFunction,.dj_ie6 .dijitIconKey,.dj_ie6 .dijitIconPackage,.dj_ie6 .dijitIconSample,.dj_ie6 .dijitIconTable,.dj_ie6 .dijitIconUsers,.dj_ie6 .dijitFolderClosed,.dj_ie6 .dijitIconFolderClosed,.dj_ie6 .dijitFolderOpened,.dj_ie6 .dijitIconFolderOpen,.dj_ie6 .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled8bit.png");}.dijitDisabled .dijitIconSave,.dijitDisabled .dijitIconPrint,.dijitDisabled .dijitIconCut,.dijitDisabled .dijitIconCopy,.dijitDisabled .dijitIconClear,.dijitDisabled .dijitIconDelete,.dijitDisabled .dijitIconUndo,.dijitDisabled .dijitIconEdit,.dijitDisabled .dijitIconNewTask,.dijitDisabled .dijitIconEditTask,.dijitDisabled .dijitIconEditProperty,.dijitDisabled .dijitIconTask,.dijitDisabled .dijitIconFilter,.dijitDisabled .dijitIconConfigure,.dijitDisabled .dijitIconSearch,.dijitDisabled .dijitIconApplication,.dijitDisabled .dijitIconBookmark,.dijitDisabled .dijitIconChart,.dijitDisabled .dijitIconConnector,.dijitDisabled .dijitIconDatabase,.dijitDisabled .dijitIconDocuments,.dijitDisabled .dijitIconMail,.dijitDisabled .dijitLeaf,.dijitDisabled .dijitIconFile,.dijitDisabled .dijitIconFunction,.dijitDisabled .dijitIconKey,.dijitDisabled .dijitIconPackage,.dijitDisabled .dijitIconSample,.dijitDisabled .dijitIconTable,.dijitDisabled .dijitIconUsers,.dijitDisabled .dijitFolderClosed,.dijitDisabled .dijitIconFolderClosed,.dijitDisabled .dijitFolderOpened,.dijitDisabled .dijitIconFolderOpen,.dijitDisabled .dijitIconError {background-image: url("../../icons/images/commonIconsObjActDisabled.png");}.dijitIconSave {background-position: 0;}.dijitIconPrint {background-position: -16px;}.dijitIconCut {background-position: -32px;}.dijitIconCopy {background-position: -48px;}.dijitIconClear {background-position: -64px;}.dijitIconDelete {background-position: -80px;}.dijitIconUndo {background-position: -96px;}.dijitIconEdit {background-position: -112px;}.dijitIconNewTask {background-position: -128px;}.dijitIconEditTask {background-position: -144px;}.dijitIconEditProperty {background-position: -160px;}.dijitIconTask {background-position: -176px;}.dijitIconFilter {background-position: -192px;}.dijitIconConfigure {background-position: -208px;}.dijitIconSearch {background-position: -224px;}.dijitIconError {background-position: -496px;} .dijitIconApplication {background-position: -240px;}.dijitIconBookmark {background-position: -256px;}.dijitIconChart {background-position: -272px;}.dijitIconConnector {background-position: -288px;}.dijitIconDatabase {background-position: -304px;}.dijitIconDocuments {background-position: -320px;}.dijitIconMail {background-position: -336px;}.dijitIconFile, .dijitLeaf {background-position: -352px;}.dijitIconFunction {background-position: -368px;}.dijitIconKey {background-position: -384px;}.dijitIconPackage{background-position: -400px;}.dijitIconSample {background-position: -416px;}.dijitIconTable {background-position: -432px;}.dijitIconUsers {background-position: -448px;}.dijitIconFolderClosed, .dijitFolderClosed {background-position: -464px;}.dijitIconFolderOpen, .dijitFolderOpened {background-position: -480px;}.dijitIconLoading {background: url("../../icons/images/loadingAnimation.gif") no-repeat; height: 20px; width: 20px;}.nihilo .dojoDndItemOver {background-image: url("images/treeHover.png");}.nihilo table.dojoDndAvatar {-moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}.nihilo .dojoDndAvatar td {border: none;}.nihilo .dojoDndAvatar tr {border: none;}.nihilo .dojoDndAvatarHeader td {height: 20px; padding: 0 0 0 21px;}.nihilo .dojoDndAvatarItem td {padding: 2px;}.nihilo.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoMove.png"); background-repeat: no-repeat; background-position: 2px center;}.nihilo.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.nihilo.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndMove.png"); background-repeat: no-repeat; background-position: 2px center;}.nihilo.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.nihilo .dijitContentPane {padding: 0;}.nihilo .dijitTabContainerTop-dijitContentPane,.nihilo .dijitTabContainerLeft-dijitContentPane,.nihilo .dijitTabContainerRight-dijitContentPane,.nihilo .dijitTabContainerBottom-dijitContentPane,.nihilo .dijitAccordionContainer-dijitContentPane {background-color: #fff; padding: 5px;}.nihilo .dijitSplitContainer-dijitContentPane,.nihilo .dijitBorderContainer-dijitContentPane {background-color: #fff; padding: 5px;}.nihilo .dijitMenu,.nihilo .dijitMenuBar {border: 1px solid #d3d3d3; margin: 0; padding: 0; background-color: #fff;}.nihilo .dijitBorderContainer .dijitMenuBar {border: 1px #ccc solid;}.nihilo .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.nihilo .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {font-style: italic;}.nihilo .dijitMenuItem TD {padding:1px;}.nihilo .dijitMenuPassive .dijitMenuItemHover,.nihilo .dijitComboBoxMenu .dijitMenuItemHover,.nihilo .dijitMenuItemSelected {background-color: #ffe284; color: #243C5F;}.nihilo .dijitMenuItemIcon {width: 15px; height: 15px;}.nihilo .dijitMenuExpand {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-position: -30px top;}.dj_ie6 .nihilo .dijitMenuExpand {background-image:url("images/spriteRoundedIconsSmall.gif");}.nihilo .dijitMenuSeparator {height: 1px;}.nihilo .dijitMenuSeparatorTop {border-bottom: 1px solid #fff;}.nihilo .dijitMenuSeparatorBottom {border-top: 1px solid #d3d3d3;}.nihilo .dijitCheckedMenuItem .dijitMenuItemIcon {background-image: url("images/spriteCheckbox.gif"); background-position: -80px;}.nihilo .dijitCheckedMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.nihilo .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("images/spriteRadio.gif"); background-position: -80px;}.nihilo .dijitRadioMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.nihilo .dijitTabContainer .tabStripRBtn {margin-right: 21px;}.nihilo .dijitTabContainer .tabStripLBtn {margin-left: 21px;}.nihilo .dijitTabContainerBottom .nowrapTabStrip .dijitTab {top: 0;}.nihilo .dijitTabPaneWrapper {background:#fff; border:1px solid #ccc; margin: 0; padding: 0;}.nihilo .dijitTab {padding:3px 6px 3px 4px; background: url("images/tabContainerSprite.gif") repeat-x 0 -350px; position: relative; line-height:normal; margin: 0 1px; color: #6d6d6d; border: 1px #dedede solid; border-bottom: 1px #ccc solid;}.nihilo .dijitTabHover {color: #243C5F; background: url("images/tabContainerSprite.gif") repeat-x 0 -200px;}.nihilo .dijitTabChecked {background: url("images/tabContainerSprite.gif") repeat-x 0 -50px; color: #243C5F !important;}.nihilo .dijitTabContainerNested .dijitTabListWrapper {height: auto;}.nihilo .dijitTabContainerTabListNested {background: #FDFDFD; border: none; margin-bottom: 0;}.nihilo .dijitTabContainerTabListNested .dijitTab {background: none; border: none; top: 0;}.nihilo .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.nihilo .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: underline; font-weight: bold;}.nihilo .dijitTabContainerSpacerNested {height: 0; border-bottom: 0;}.nihilo .dijitTabPaneWrapperNested {border: none;}.nihilo .dijitTabCloseButton {background: url("images/spriteRoundedIconsSmall.png") no-repeat -60px top; width: 15px; height: 15px; margin-top: -1px;}.dj_ie6 .nihilo .dijitTabCloseButton {background: url("images/spriteRoundedIconsSmall.gif") no-repeat -60px top;}.nihilo .dijitTabCloseButtonHover {background: url("images/spriteRoundedIconsSmall.png") no-repeat -60px -15px;}.dj_ie6 .nihilo .dijitTabCloseButtonHover {background: url("images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px;}.nihilo .dijitTabContainerTop-tabs {border-bottom: none; padding-bottom: 1px; background-position: bottom; padding-left: 3px;}.nihilo .dijitTabContainerTop-tabs .dijitTab {border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0;}.dj_ie6 .nihilo .dijitTabListContainer-top,.dj_ie7 .nihilo .dijitTabListContainer-top {z-index: 3;}.dj_ie6 .nihilo .dijitTabContainerTop-tabs,.dj_ie7 .nihilo .dijitTabContainerTop-tabs {border-bottom: 1px solid #ccc; padding-bottom: 0;}.nihilo .dijitTabContainerTopNoStrip {padding-top: 3px;}.nihilo .dijitTabContainerTop-container {border-top: none;}.nihilo .dijitTabContainerTop-tabs .dijitTabChecked {border-bottom-color: #f8f8f8;}.nihilo .dijitTabContainer .dijitTabContainerTopStrip {border-bottom: none; padding-top: 1px; margin-top: 1px; background: #f2f2f2; border-top: 1px solid #CCC; border-right: 1px solid #CCC; border-left: 1px solid #CCC;}.nihilo .dijitTabContainerBottom-tabs {border-top: none; background-position: top; padding-left: 3px;}.nihilo .dijitTabContainerBottom-tabs .dijitTab {border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-bottom: none; border-top: 1px solid #ccc; padding-top: 3px; padding-bottom: 3px; background: url("images/tabBottomEnabledC.gif") repeat-x bottom left;}.nihilo .dijitTabContainerBottom-tabs .dijitTabHover {color: #243C5F; background: url("images/tabBottomHoverC.gif") repeat-x bottom left;}.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked {border-top-color: #f8f8f8; background: url("images/tabBottomActiveC.gif") repeat-x bottom left;}.dj_ie6 .nihilo .dijitTabListContainer-bottom,.dj_ie7 .nihilo .dijitTabListContainer-bottom {z-index: 3;}.dj_ie6 .nihilo .dijitTabContainerBottom-tabs,.dj_ie7 .nihilo .dijitTabContainerBottom-tabs {border-top: 1px solid #ccc; margin-top: -1px;}.nihilo .dijitTabContainerBottom-container {border-bottom: none;}.nihilo .dijitTabContainer .dijitTabContainerBottomStrip {border: 1px solid #ccc; background: #f2f2f2; border-top: none; padding-bottom: 2px;}.nihilo .dijitTabContainerBottom-spacer,.nihilo .dijitTabContainerTop-spacer {height: 2px; border: 1px solid #ccc;}.nihilo .dijitTabContainerTop-spacer {margin-top: -1px; background: #f3f3f3;}.nihilo .dijitTabContainerBottom-spacer {margin-bottom: -1px; background: #f8f8f8;}.nihilo .dijitTabContainerRight-tabs {border-color: #ccc; padding-top: 3px;}.nihilo .dijitTabContainerRight-tabs .dijitTab {border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-left: 1px solid #ccc; border-bottom: 1px solid #dedede !important;}.nihilo .dijitTabContainerRight .dijitTabListWrapper {padding-right: 3px;}.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {border-left: 1px solid #f8f8f8;}.nihilo .dijitTabContainerRight-container {border-right: none;}.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTab {border-bottom: solid #fff 1px;}.nihilo .dijitTabContainerRight-tabs .dijitTabChecked {border-left-color: #f8f8f8;}.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabCheckedHover {border-bottom: solid #efefef 1px;}.nihilo .dijitTabContainerRightStrip {padding-right: 2px; border: 1px solid #ccc; border-left: none; background: #f2f2f2;}.nihilo .dijitTabContainerLeft-tabs {border-color: #ccc; padding-top: 3px;}.nihilo .dijitTabContainerLeft-tabs .dijitTab {border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-right: 1px solid #ccc; border-bottom: 1px solid #dedede;}.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked {border-right: 1px solid #f8f8f8;}.nihilo .dijitTabContainerLeft-container {border-left: none;}.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked,.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover {border-bottom: solid #efefef 1px;}.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv {border-bottom: solid #fff 1px;}.nihilo .dijitTabContainerLeftStrip {padding-left: 2px; border: 1px solid #ccc; border-right: none;}.nihilo .dijitTabContainerLeftStrip {background: #f2f2f2;}.nihilo .dijitTabContainerLeft-tabs .dijitTab,.nihilo .dijitTabContainerRight-tabs .dijitTab {margin: 1px 0;}.nihilo .dijitTabContainerLeft-spacer,.nihilo .dijitTabContainerRight-spacer {width: 2px; border: 1px solid #ccc; background: #f8f8f8;}.nihilo .dijitTabContainerRight-spacer {border-right: none;}.nihilo .dijitTabContainerRight-tabs {padding-top: 3px; height: 100%;}.nihilo .dijitTabContainerLeft-tabs {height: 100%;}.nihilo .dijitTabContainerLeft-spacer {border-left: none;}.nihilo .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {border-left: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.nihilo .dijitTabContainer .tabStripButton {margin-right: 0; padding: 5px 3px 6px 0px;}.dj_ie6 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_ie7 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_opera .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent {padding-bottom: 7px;}.dj_ie6 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_ie7 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent,.dj_opera .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent {padding-top: 4px;}.nihilo .dijitTabStripIcon {height: 14px; width: 14px; background: url("images/spriteRoundedIconsSmall.png") no-repeat left top;}.dj_ie6 .nihilo .dijitTabStripIcon {background-image: url("images/spriteRoundedIconsSmall.gif");}.nihilo .dijitTabStripSlideRightIcon {background-position: -30px top;}.nihilo .dijitTabStripMenuIcon {background-position: -15px top;}.nihilo .dijitTabContainerTopNone {padding-top: 0;}.nihilo .dijitTabContainer .tabStripButton-top {margin-top: 1px;}.nihilo .dijitTabContainer .tabStripButton-bottom {border-bottom: medium none; border-top: 1px solid #CCCCCC;}.nihilo .dijitAccordionContainer {border-color: #ccc; background-color: #fff;}.nihilo .dijitAccordionTitle {background:#fafafa url("images/titleBar.png") repeat-x top left; border-top: 1px solid #dedede; padding: 5px 4px 6px 8px; font-size: 0.9em; font-weight: bold; color: #6d6d6d;}.nihilo .dijitAccordionTitleSelected {background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x; font-weight: bold; border-top: 1px solid #dedede; border-bottom: 1px solid #dedede; padding: 5px 4px 5px 8px; color: #243C5F;}.nihilo .dijitAccordionArrow {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top; width:15px; height:15px; margin-top:-1px;}.nihilo .dijitAccordionTitleSelected .dijitAccordionArrow {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top; margin-top:-1px;}.nihilo .dijitAccordionText {margin-left: 4px; margin-right: 4px;}.nihilo .dijitSplitContainerSizerH {background:url("images/splitContainerSizerV.png") repeat-y #fff; border:0; border-left:0 solid #d3d3d3; border-right:0 solid #d3d3d3; width:5px;}.nihilo .dijitSplitContainerSizerH .thumb {background:url("images/splitContainerSizerV-thumb.png") no-repeat; left:1px; width:2px; height:19px;}.nihilo .dijitSplitContainerSizerV {background:url("images/splitContainerSizerH.png") repeat-x #fff; border:0; border-top:0 solid #d3d3d3; border-bottom:0 solid #d3d3d3; height:2px;}.nihilo .dijitSplitContainerSizerV .thumb {background:url("images/splitContainerSizerH-thumb.png") no-repeat; top:1px; width:19px; height:5px;}.nihilo .dijitBorderContainer {background-color: #fcfcfc; padding: 5px;}.nihilo .dijitSplitContainer-child,.nihilo .dijitBorderContainer-child {border: 1px #ccc solid;}.nihilo .dijitBorderContainer-dijitTabContainerTop,.nihilo .dijitBorderContainer-dijitTabContainerBottom,.nihilo .dijitBorderContainer-dijitTabContainerLeft,.nihilo .dijitBorderContainer-dijitTabContainerRight {border: none;}.nihilo .dijitBorderContainer-dijitBorderContainer {border: none; padding: 0;}.nihilo .dijitSplitterH,.nihilo .dijitGutterH {background:#FCFCFC; border:0; border-left:0 solid #d3d3d3; border-right:0 solid #d3d3d3; height:5px;}.nihilo .dijitSplitterH .dijitSplitterThumb {background:#8BA0BD none; height:1px; top:2px; width:19px;}.nihilo .dijitSplitterV,.nihilo .dijitGutterV {background:#FCFCFC; border:0; border-top:0 solid #d3d3d3; border-bottom:0 solid #d3d3d3; width:5px;}.nihilo .dijitSplitterV .dijitSplitterThumb {background:#8BA0BD none; height:19px; left:2px; width:1px;}.nihilo .dijitSplitterActive {font-size: 1px; background-image: none; background-color: #aaa; -moz-opacity: 0.6; opacity: 0.6; filter: Alpha(Opacity=60); margin: 0;}.nihilo .dijitInputContainer input {margin: 0 0.1em;}.nihilo .dijitSelect .dijitButtonContents,.nihilo .dijitSelect,.nihilo .dijitTextBox,.nihilo .dijitTextArea {background:#fff url("images/validationInputBg.png") repeat-x top left; #background:#fff url("images/validationInputBg.gif") repeat-x top left;}.nihilo .dijitSelect,.nihilo .dijitTextBox,.nihilo .dijitTextArea {border:1px solid #d3d3d3;}.nihilo .dijitSelect .dijitArrowButton,.nihilo .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.nihilo .dijitSelect .dijitButtonContents,.nihilo .dijitTextBox .dijitButtonNode {border-color: #d3d3d3;}.nihilo .dijitSelectFocused,.nihilo .dijitTextBoxFocused,.nihilo .dijitTextAreaFocused {border-color:#b3b3b3;}.nihilo .dijitSelectFocused TD,.nihilo .dijitTextBoxFocused .dijitButtonNode,.nihilo .dijitSpinner .dijitUpArrowButtonActive,.nihilo .dijitSpinner .dijitDownArrowButtonActive {border-color:#d3d3d3;}.nihilo .dijitSpinnerFocused .dijitDownArrowButton,.nihilo .dijitSpinner .dijitUpArrowButtonActive,.nihilo .dijitSpinner .dijitDownArrowButtonActive {border-top-color:#d3d3d3;}.nihilo .dijitError {border-color:#b3b3b3; background-color:#f9f7ba; background-image:none;}.nihilo .dijitErrorFocused {background-color:#ff6; background-image:none;}.nihilo .dijitValidationTextBoxError .dijitValidationIcon {width: 16px; background: transparent url("images/warning.png") no-repeat center center;}.nihilo .dijitComboBoxHighlightMatch {background-color:#d3d3d3;}.nihilo .dijitButtonNode {border:1px solid #dedede; border-bottom:1px solid #dedede; padding: 0.1em 0.2em 0.2em 0.2em; background: #fff url("images/buttonEnabled.png") repeat-x top left;}.nihilo .dijitButtonText {text-align: center; padding: 0 0.3em;}.nihilo .dijitInputField {padding: 0;}.nihilo .dijitComboBox .dijitButtonNode {border-width: 0 0 0 1px;}.nihilo .dijitArrowButton {color: #111;}.nihilo .dijitComboButton .dijitDownArrowButton {padding-right:4px;}.nihilo .dijitComboBoxReadOnly,.nihilo .dijitSpinnerReadOnly,.nihilo .dijitSpinnerReadOnly .dijitButtonNode,.nihilo .dijitButtonDisabled .dijitButtonNode,.nihilo .dijitToggleButtonDisabled .dijitButtonNode,.nihilo .dijitDropDownButtonDisabled .dijitButtonNode,.nihilo .dijitComboButtonDisabled .dijitButtonNode,.nihilo .dijitComboBoxDisabled,.nihilo .dijitSpinnerDisabled,.nihilo .dijitSpinnerDisabled .dijitButtonNode {border-color: #dedede; background:#fafafa url("images/buttonDisabled.png") top repeat-x; opacity: 0.60;}.dj_ie6 .nihilo .dijitReadOnly input,.dj_ie7 .nihilo .dijitReadOnly input,.dj_ie6 .nihilo .dijitComboButtonDisabled .dijitButtonText,.dj_ie7 .nihilo .dijitComboButtonDisabled .dijitButtonText {color: #aaa;}.nihilo .dijitButtonHover .dijitButtonNode,.nihilo .dijitButtonNodeHover,.nihilo .dijitToggleButtonHover .dijitButtonNode,.nihilo .dijitDropDownButtonHover .dijitButtonNode,.nihilo .dijitButtonContentsHover,.nihilo .dijitDownArrowButtonHover,.nihilo .dijitUpArrowButtonHover {color:#243C5F; background:#fcfcfc url("images/buttonHover.png") repeat-x top left;}.nihilo .dijitUpArrowButtonActive,.nihilo .dijitDownArrowButtonActive,.nihilo .dijitButtonActive .dijitButtonNode,.nihilo .dijitToggleButtonActive .dijitButtonNode,.nihilo .dijitDropDownButtonActive .dijitButtonNode,.nihilo .dijitComboButton .dijitButtonContentsActive,.nihilo .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {border-color:#dedede; background: #f5f5f5 url("images/buttonActive.png") top left repeat-x;}.nihilo .dijitArrowButtonInner {background-image: url("images/spriteArrows.png"); background-repeat: no-repeat; background-position: 0 center; width: 11px; height: 11px;}.nihilo .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -11px center;}.nihilo .dijitUpArrowButton .dijitArrowButtonInner {background-position: -22px center;}.nihilo .dijitRightArrowButton .dijitArrowButtonInner {background-position: -33px center;}.dj_ie6 .nihilo .dijitArrowButtonInner {background-image: url("images/spriteArrows.gif");}.dj_webkit .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {margin-top: -1px;}.dj_ie .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {margin-top: 1px;}.nihilo .dijitSpinnerButtonContainer {width: auto; padding: 0;}.nihilo .dijitSpinner .dijitArrowButton {width: 15px;}.nihilo .dijitSpinner .dijitSpinnerButtonInner {width: 15px;}.nihilo .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding: 0;}.nihilo .dijitToggleButton .dijitCheckBox,.nihilo .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/spriteCheckbox.gif");}.nihilo .dijitCheckBox,.nihilo .dijitCheckBoxIcon {background-image: url("images/spriteCheckbox.gif"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0;}.nihilo .dijitCheckBox,.nihilo .dijitToggleButton .dijitCheckBoxIcon {background-position: -16px;}.nihilo .dijitCheckBoxChecked,.nihilo .dijitToggleButtonChecked .dijitCheckBoxIcon {background-position: 0;}.nihilo .dijitCheckBoxDisabled {background-position: -48px;}.nihilo .dijitCheckBoxCheckedDisabled {background-position: -32px;}.nihilo .dijitCheckBoxHover {background-position: -80px;}.nihilo .dijitCheckBoxCheckedHover {background-position: -64px;}.nihilo .dijitToggleButton .dijitRadio,.nihilo .dijitToggleButton .dijitRadioIcon {background-image: url("images/spriteRadio.gif");}.nihilo .dijitRadio,.nihilo .dijitRadioIcon {background-image: url("images/spriteRadio.gif"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0;}.nihilo .dijitRadio,.nihilo .dijitToggleButton .dijitRadioIcon {background-position: -16px;}.nihilo .dijitRadioChecked,.nihilo .dijitToggleButtonChecked .dijitRadioIcon {background-position: 0;}.nihilo .dijitRadioDisabled {background-position: -48px;}.nihilo .dijitRadioCheckedDisabled {background-position: -32px;}.nihilo .dijitRadioHover {background-position: -80px;}.nihilo .dijitRadioCheckedHover {background-position: -64px;}.nihilo .dijitSliderProgressBarH {border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.nihilo .dijitSliderProgressBarV {border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.nihilo .dijitSliderFocused .dijitSliderProgressBarH,.nihilo .dijitSliderFocused .dijitSliderLeftBumper {background-image:url("images/sliderFullFocus.png");}.nihilo .dijitSliderFocused .dijitSliderProgressBarV,.nihilo .dijitSliderFocused .dijitSliderBottomBumper {background-image:url("images/sliderFullVerticalFocus.png");}.nihilo .dijitSliderRemainingBarV {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y bottom left;}.nihilo .dijitSliderRemainingBarH {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left;}.nihilo .dijitSliderBar {border-style: solid; outline:1px;}.nihilo .dijitSliderFocused .dijitSliderBar {border-color:#727272;}.nihilo .dijitSliderImageHandleH {border:0; width:15px; height:18px; background:url("images/preciseSliderThumb.png") no-repeat center top; #background:url("images/preciseSliderThumb.gif") no-repeat center top;}.nihilo .dijitSliderFocused .dijitSliderImageHandleH {background-image:url("images/preciseSliderThumbFocus.png"); #background-image:url("images/preciseSliderThumbFocus.gif");}.nihilo .dijitSliderLeftBumper {border-left-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.nihilo .dijitSliderRightBumper {background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left; border-color: #b4b4b4; border-right-width: 1px;}.nihilo .dijitSliderImageHandleV {border:0; width:20px; height:15px; background:url("images/sliderThumb.png") no-repeat center center; #background:url("images/sliderThumb.gif") no-repeat center center;}.nihilo .dijitSliderFocused .dijitSliderImageHandleV {background-image:url("images/sliderThumbFocus.png"); #background-image:url("images/sliderThumbFocus.gif");}.nihilo .dijitSliderBottomBumper {border-bottom-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.nihilo .dijitSliderTopBumper {background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y top left; border-color: #b4b4b4; border-top-width: 1px;}.nihilo .dijitSliderIncrementIconH,.nihilo .dijitSliderIncrementIconV {background:url("images/spriteRoundedIconsSmall.png") no-repeat -45px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -45px top; width:15px; height:15px;}.nihilo .dijitSliderIncrementIconH {background:url("images/spriteRoundedIconsSmall.png") no-repeat -30px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;}.nihilo .dijitSliderDecrementIconH,.nihilo .dijitSliderDecrementIconV {width:15px; height:15px; background:url("images/spriteRoundedIconsSmall.png") no-repeat -15px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top;}.nihilo .dijitSliderDecrementIconH {background:url("images/spriteRoundedIconsSmall.png") no-repeat 0 top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat 0 top;}.nihilo .dijitSliderButtonInner {visibility:hidden;}.nihilo .dijitSliderReadOnly *,.nihilo .dijitSliderDisabled * {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; color: #bdbdbd;}.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconH,.nihilo .dijitSliderDisabled .dijitSliderDecrementIconH {background-position: 0 -15px;}.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconH,.nihilo .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -30px -15px;}.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconV,.nihilo .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -15px -15px;}.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconV,.nihilo .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -45px -15px;}.nihilo .dijitSelectError .dijitButtonContents,.nihilo .dijitSelectHover .dijitArrowButton,.nihilo .dijitSelectActive .dijitArrowButton,.nihilo .dijitSelectOpened .dijitArrowButton,.nihilo .dijitSelectDisabled .dijitArrowButton,.nihilo .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.nihilo .dijitSelect .dijitArrowButton {background: #bcd5f0 url("images/buttonEnabled.png") repeat-x top left; border-width: 0;}.nihilo .dijitSelectDisabled,.nihilo .dijitSelectDisabled TD {border-color: #dedede !important; background:#fafafa url("images/buttonDisabled.png") top repeat-x;}.dj_ie .nihilo .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.nihilo .dijitSelectHover,.nihilo .dijitSelectHover TD {color:#000; background:#fcfcfc url("images/buttonHover.png") repeat-x top left;}.nihilo .dijitSelectActive,.nihilo .dijitSelectOpened,.nihilo .dijitSelectActive TD,.nihilo .dijitSelectOpened TD {border-color:#dedede !important; background: #f5f5f5 url("images/buttonActive.png") top left repeat-x;}.nihilo .dijitSelectMenu td {padding: 0;}.nihilo .dijitSelectMenu .dijitMenuItemLabel,.nihilo .dijitSelectMenu .dijitMenuArrowCell {padding: 0.1em 0.2em;}.nihilo .dijitTreeNode {background : url("images/treeI.gif") no-repeat; background-position : top left; background-repeat : repeat-y; zoom: 1;}.nihilo .dijitTreeIsLast {background: url("images/treeI_half.gif") no-repeat;}.nihilo .dijitTreeRowHover {background-image: url("images/treeHover.png"); background-repeat: repeat; background-color: transparent !important;}.nihilo .dijitTreeLabel {font-weight: normal; margin-left: 3px;}.nihilo .dijitTreeIsRoot {margin-left: 0; background-image: none;}.nihilo .dijitTreeExpando {width: 18px; height: 18px;}.nihilo .dijitTreeRow {padding-bottom: 2px;}.nihilo .dijitTreeContent {min-height: 18px; min-width: 18px; padding-left:1px;}.nihilo .dijitTreeExpandoOpened {background: url("images/spriteTree.gif") no-repeat -18px top;}.nihilo .dijitTreeExpandoClosed {background-image: url("images/spriteTree.gif");}.nihilo .dijitTreeExpandoLeaf {background: url("images/spriteTree.gif") no-repeat -36px top;}.nihilo .dijitTreeExpandoLoading {background-image: url("images/treeExpand_loading.gif");}.nihilo .dijitTreeIcon {width: 16px; height: 16px;}.nihilo .dijitFolderOpened {background: url("images/spriteDivIcons.gif") no-repeat -16px top;}.nihilo .dijitFolderClosed {background: url("images/spriteDivIcons.gif") no-repeat top left;}.nihilo .dijitLeaf {background: url("images/spriteDivIcons.gif") no-repeat -32px top;}.nihilo .dijitTreeNode .dojoDndItemBefore,.nihilo .dijitTreeNode .dojoDndItemAfter {border-bottom: none; border-top: none;}.nihilo .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {border-top: 2px solid #369;}.nihilo .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {border-bottom: 2px solid #369;}.nihilo .dijitProgressBar {margin:2px 0 2px 0;}.nihilo .dijitProgressBarEmpty{background:#fff url("images/progressBarEmpty.png") repeat-x center center; border-color: #f8d582 #f8d582 #f8d582 #f8d582;}.nihilo .dijitProgressBarTile{background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;}.nihilo .dijitProgressBarFull {border: 0px solid #f8d582; border-right-width: 1px;}.nihilo .dijitProgressBarLabel {color:#293a4b;}.nihilo .dijitProgressBarIndeterminate .dijitProgressBarTile {background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;}.nihilo .dijitTitlePaneTitle {background: #cccccc; background:#fff url("images/titleBar.png") repeat-x top left; border:1px solid #bfbfbf; padding:3px 4px; font-size: 0.9em; font-weight: bold; color: #6d6d6d;}.nihilo .dijitTitlePaneTitleHover {background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x;}.nihilo .dijitTitlePane .dijitArrowNode,.nihilo .dijitFieldset .dijitArrowNode {width:15px; height:15px;}.nihilo .dijitTitlePaneTextNode {color: #243C5F;}.nihilo .dijitTitlePane .dijitClosed .dijitArrowNode, .nihilo .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background: url("images/spriteRoundedIconsSmall.png") no-repeat -30px top;}.dj_ie6 .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode, .dj_ie6 .nihilo .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;}.nihilo .dijitTitlePane .dijitOpen .dijitArrowNode, .nihilo .dijitFieldset .dijitFieldsetTitleOpen .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.png") no-repeat -15px top;}.dj_ie6 .nihilo .dijitTitlePane .dijitOpen .dijitArrowNode, .dj_ie6 .nihilo .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top;}.nihilo .dijitTitlePaneContentOuter {background: #ffffff; border:1px solid #bfbfbf; border-top: 0;}.nihilo .dijitTitlePaneContentInner {padding:10px;}.nihilo .dijitTitlePaneTextNode {margin-left: 4px; margin-right: 4px;}.nihilo .dijitCalendarIncrementControl {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat}.dj_ie6 .nihilo .dijitCalendarIncrementControl {font-size:.1em; background-image: url("images/spriteRoundedIconsSmall.gif");}.nihilo .dijitA11ySideArrow {display: none;}.nihilo .dijitCalendarDecrease {background-position: top left;}.nihilo .dijitCalendarIncrease {background-position: -30px top;}.nihilo table.dijitCalendarContainer {font-size: 100%; border-spacing: 0; border-collapse: separate; margin: 0;}.nihilo .dijitCalendarMonthContainer {background:#d3d3d3 url("images/titleBar.png") repeat-x top; padding-top:.3em; padding-bottom:.2em; text-align:center;}.dj_ie6 .nihilo .dijitCalendarMonthContainer th {padding-top:.2em; padding-bottom:.1em;}.nihilo .dijitCalendarDayLabelTemplate {background:#fefefe; font-weight:normal; padding-top:.15em; padding-bottom:.2em; border-bottom: 1px solid #eeeeee; color:#293a4b; text-align:center;}.nihilo .dijitCalendarBodyContainer {border-bottom: 1px solid #eeeeee;}.nihilo .dijitCalendarMonthLabel {color:#293a4b; font-weight: bold; padding: 0 4px;}.nihilo .dijitCalendarDateTemplate {font-size: 0.9em; font-weight: bold; text-align: center; padding: 0.3em 0.3em 0.05em 0.3em; letter-spacing: 1px; background-color: #fdfdfd; border:#fdfdfd solid 1px !important;}.dj_ie .nihilo .dijitCalendarDateTemplate {padding: 0.1em .33em 0.02em .33em;}.nihilo .dijitCalendarPreviousMonth,.nihilo .dijitCalendarNextMonth {color:#999999; background-color:#f5f5f5 !important; border:#f5f5f5 solid 1px !important;}.nihilo .dijitCalendarCurrentMonth {}.nihilo .dijitCalendarDisabledDate {text-decoration:line-through !important;}.nihilo .dijitCalendarCurrentDate {text-decoration:underline; font-weight:bold;}.nihilo .dijitCalendarSelectedDate {background-color:#ffe284 !important; color:black !important; border:#f7c95c solid 1px !important;}.nihilo .dijitCalendarYearContainer {background:white url("images/titleBar.png") repeat-x top;}.nihilo .dijitCalendarYearLabel {margin:0; padding:0.4em 0 0.25em 0; text-align:center; font-size: 1.17em;}.nihilo .dijitCalendarSelectedYear {font-weight:bolder; color:black; padding:0.2em; padding-bottom:0.1em; background-color:#ffe284 !important; border:#f7c95c solid 1px !important;}.nihilo .dijitCalendarNextYear,.nihilo .dijitCalendarPreviousYear {color:black !important; font-weight:normal;}.nihilo .dijitCalendar .dijitDropDownButton {margin: 0;}.nihilo .dijitCalendar .dijitButtonText {padding: 0;}.nihilo .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.nihilo .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #ffe284; color: #243C5F;}.nihilo .dijitTimePickerTick,.nihilo .dijitTimePickerMarker {border-color: #eeeeee;}.nihilo .dijitTimePickerTick {color: gray;}.nihilo .dijitTimePickerMarker {background:#d3d3d3 url("images/titleBar.png") repeat-x top; color:#293a4b; font-weight: bold;}.nihilo .dijitTimePickerItemSelected {color: black; background: #ffe284 none;}.nihilo .dijitTimePickerItemHover {background: #d6d6dd none; color:black;}.nihilo .dijitTimePickerTick .dijitTimePickerItemInner {font-size: 0.8em;}.nihilo .dijitTimePickerItemSelected .dijitTimePickerItemInner {font-size: 1em;}.nihilo .dijitToolbar {border-bottom: 1px solid #ccc; background:#eaeaea url("images/titleBar.png") repeat-x top left;}.dj_ie6 .nihilo .dijitToolbar {height: 10px;}.nihilo .dijitToolbar .dijitButtonNode,.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents,.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; margin: 0; padding: 0; border: none; font-size: 12px;}.nihilo .dijitToolbar .dijitButton,.nihilo .dijitToolbar .dijitToggleButton,.nihilo .dijitToolbar .dijitDropDownButton,.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents,.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; padding: 1px;}.nihilo .dijitToolbar .dijitButtonChecked,.nihilo .dijitToolbar .dijitToggleButtonChecked {background-color:#ffeeb9; border:1px solid #f7c95c; padding: 0;}.nihilo .dijitToolbar .dijitButtonCheckedHover,.nihilo .dijitToolbar .dijitToggleButtonCheckedHover {background-color:#ffe284; border:1px solid #f7c95c; padding: 0;}.nihilo .dijitToolbar .dijitButtonHover,.nihilo .dijitToolbar .dijitToggleButtonHover,.nihilo .dijitToolbar .dijitDropDownButtonHover,.nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsHover,.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {border: 1px solid #f7c95c; padding: 0; background-color:#ffe284;}.nihilo .dijitToolbar label {padding: 3px 3px 0 6px;}.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {border: 1px #555 dotted !important; padding: 0;}.nihilo .dijitDialog {background: #eee; border: 1px solid #d3d3d3; -webkit-box-shadow: 0 5px 10px #adadad; padding: 0;}.nihilo .dijitDialog .dijitDialogTitle {font-size: 0.9em; color: #243C5F; font-weight: bold; padding: 0 4px;}.nihilo .dijitDialog .dijitDialogPaneContent {background: #ffffff; border-top: 1px solid #d3d3d3; padding:10px;}.nihilo .dijitDialogTitleBar {background: #fafafa url("images/titleBar.png") repeat-x top left; padding: 5px 6px 3px 6px; outline:0;}.nihilo .dijitDialogCloseIcon {background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat; background-position: -60px 0; position: absolute; vertical-align: middle; right: 6px; top: 4px; height: 15px; width: 15px;}.dj_ie6 .nihilo .dijitDialogCloseIcon {background-image: url("images/spriteRoundedIconsSmall.gif");}.nihilo .dijitDialogCloseIconHover {background-position: -60px -15px;}.nihilo .dijitTooltip,.nihilo .dijitTooltipDialog {background: transparent;}.dijitTooltipBelow {padding-top: 10px;}.dijitTooltipAbove {padding-bottom: 10px;}.nihilo .dijitTooltipContainer {background-color: #fff; border:1px solid #d3d3d3; padding:0.45em;}.nihilo .dijitTooltipConnector {border:0; z-index: 2;}.nihilo .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 6px;}.nihilo .dijitTooltipBelow .dijitTooltipConnector {top: 0; left: 6px; background:url("images/tooltipConnectorUp.png") no-repeat top left; width:17px; height:11px;}.dj_ie .nihilo .dijitTooltipBelow .dijitTooltipConnector {background-image: url("images/tooltipConnectorUp.gif");}.nihilo .dijitTooltipAbove .dijitTooltipConnector {bottom: 0; left: 6px; background:url("images/tooltipConnectorDown.png") no-repeat top left; width:17px; height:11px;}.dj_ie .nihilo .dijitTooltipAbove .dijitTooltipConnector {background-image: url("images/tooltipConnectorDown.gif");}.dj_ie6 .nihilo .dijitTooltipAbove .dijitTooltipConnector {bottom: -5px;}.nihilo .dijitTooltipLeft {padding-right: 10px;}.nihilo .dijitTooltipLeft .dijitTooltipConnector {right: 0; background:url("images/tooltipConnectorRight.png") no-repeat top left; width:11px; height:17px;}.dj_ie .nihilo .dijitTooltipLeft .dijitTooltipConnector {background-image: url("images/tooltipConnectorRight.gif");}.nihilo .dijitTooltipRight {padding-left: 10px;}.nihilo .dijitTooltipRight .dijitTooltipConnector {left: 0; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:11px; height:17px;}.dj_ie .nihilo .dijitTooltipRight .dijitTooltipConnector {background-image: url("images/tooltipConnectorLeft.gif");}.nihilo .dijitMenu,.nihilo .dijitMenuBar {border: 1px solid #d3d3d3; margin: 0; padding: 0; background-color: #fff;}.nihilo .dijitBorderContainer .dijitMenuBar {border: 1px #ccc solid;}.nihilo .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.nihilo .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton {font-style: italic;}.nihilo .dijitMenuItem TD {padding:1px;}.nihilo .dijitMenuPassive .dijitMenuItemHover,.nihilo .dijitComboBoxMenu .dijitMenuItemHover,.nihilo .dijitMenuItemSelected {background-color: #ffe284; color: #243C5F;}.nihilo .dijitMenuItemIcon {width: 15px; height: 15px;}.nihilo .dijitMenuExpand {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-position: -30px top;}.dj_ie6 .nihilo .dijitMenuExpand {background-image:url("images/spriteRoundedIconsSmall.gif");}.nihilo .dijitMenuSeparator {height: 1px;}.nihilo .dijitMenuSeparatorTop {border-bottom: 1px solid #fff;}.nihilo .dijitMenuSeparatorBottom {border-top: 1px solid #d3d3d3;}.nihilo .dijitCheckedMenuItem .dijitMenuItemIcon {background-image: url("images/spriteCheckbox.gif"); background-position: -80px;}.nihilo .dijitCheckedMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.nihilo .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("images/spriteRadio.gif"); background-position: -80px;}.nihilo .dijitRadioMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.nihilo .dijitToolbar .dijitToolbarSeparator {background: url("../../icons/images/editorIconsEnabled.png");}.nihilo .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.nihilo .dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIconSep {background-position: 0;}.dijitEditorIconSave {background-position: -18px;}.dijitEditorIconPrint {background-position: -36px;}.dijitEditorIconCut {background-position: -54px;}.dijitEditorIconCopy {background-position: -72px;}.dijitEditorIconPaste {background-position: -90px;}.dijitEditorIconDelete {background-position: -108px;}.dijitEditorIconCancel {background-position: -126px;}.dijitEditorIconUndo {background-position: -144px;}.dijitEditorIconRedo {background-position: -162px;}.dijitEditorIconSelectAll {background-position: -180px;}.dijitEditorIconBold {background-position: -198px;}.dijitEditorIconItalic {background-position: -216px;}.dijitEditorIconUnderline {background-position: -234px;}.dijitEditorIconStrikethrough {background-position: -252px;}.dijitEditorIconSuperscript {background-position: -270px;}.dijitEditorIconSubscript {background-position: -288px;}.dijitEditorIconJustifyCenter {background-position: -306px;}.dijitEditorIconJustifyFull {background-position: -324px;}.dijitEditorIconJustifyLeft {background-position: -342px;}.dijitEditorIconJustifyRight {background-position: -360px;}.dijitEditorIconIndent {background-position: -378px;}.dijitEditorIconOutdent {background-position: -396px;}.dijitEditorIconListBulletIndent {background-position: -414px;}.dijitEditorIconListBulletOutdent {background-position: -432px;}.dijitEditorIconListNumIndent {background-position: -450px;}.dijitEditorIconListNumOutdent {background-position: -468px;}.dijitEditorIconTabIndent {background-position: -486px;}.dijitEditorIconLeftToRight {background-position: -504px;}.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir {background-position: -522px;}.dijitEditorIconBackColor {background-position: -540px;}.dijitEditorIconForeColor {background-position: -558px;}.dijitEditorIconHiliteColor {background-position: -576px;}.dijitEditorIconNewPage {background-position: -594px;}.dijitEditorIconInsertImage {background-position: -612px;}.dijitEditorIconInsertTable {background-position: -630px;}.dijitEditorIconSpace {background-position: -648px;}.dijitEditorIconInsertHorizontalRule {background-position: -666px;}.dijitEditorIconInsertOrderedList {background-position: -684px;}.dijitEditorIconInsertUnorderedList {background-position: -702px;}.dijitEditorIconCreateLink {background-position: -720px;}.dijitEditorIconUnlink {background-position: -738px;}.dijitEditorIconViewSource {background-position: -756px;}.dijitEditorIconRemoveFormat {background-position: -774px;}.dijitEditorIconFullScreen {background-position: -792px;}.dijitEditorIconWikiword {background-position: -810px;} .dijitColorPalette {border:1px solid #d3d3d3; background:#fff; -moz-border-radius: 0 !important;} \ No newline at end of file
diff --git a/lib/dijit/themes/soria/soria.css b/lib/dijit/themes/soria/soria.css
index 8e0db8f45..fd2a57810 100644
--- a/lib/dijit/themes/soria/soria.css
+++ b/lib/dijit/themes/soria/soria.css
@@ -1 +1 @@
-.dijitReset {margin:0; border:0; padding:0; font: inherit; line-height:normal; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {position: absolute; visibility: hidden;}.dijitHidden * {visibility: hidden !important;}.dijitVisible {display: block !important; position: relative; visibility: visible;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important; border-collapse: separate;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: -10000px !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; -webkit-overflow-scrolling: touch;}.dijitPositionOnly {padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important;}.dijitNonPositionOnly {float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important;}.dijitBackgroundIframe {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0;}.dijitDisplayNone {display:none !important;}.dijitContainer {overflow: hidden;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner {background: no-repeat center; width: 12px; height: 12px; direction: ltr;}.dijitLeft {background-position:left top; background-repeat:no-repeat;}.dijitStretch {white-space:nowrap; background-repeat:repeat-x;}.dijitRight {#display:inline; background-position:right top; background-repeat:no-repeat;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.dijitButtonNode {border:1px solid gray; margin:0; line-height:normal; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap;}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {line-height:inherit;}.dijitTextBox .dijitButtonNode {border-width: 0;}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_ie .dijitButtonNode {zoom: 1;}.dj_ie .dijitButtonNode button {overflow: visible;}div.dijitArrowButton {float: right;}.dijitTextBox {border: solid black 1px; #overflow: hidden; width: 15em; vertical-align: middle;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_safari .dijitTextBoxDisabled input {color: #B0B0B0;}.dj_safari textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .dj_gecko .dijitTextBoxDisabled input {-moz-user-input: none;}.dijitPlaceHolder {color: #AAAAAA; font-style: italic; position: absolute; top: 0; left: 0; #filter: ""; white-space: nowrap; pointer-events: none;}.dijitTimeTextBox {width: 8em;}.dijitTextBox input:focus {outline: none;}.dijitTextBoxFocused {outline: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !important; direction: ltr !important; text-align: left !important; height: auto !important; #text-indent: 0 !important; #letter-spacing: -5em !important; #text-align: right !important;}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox {line-height: 100%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.dj_ie .dijitToolbar .dijitComboBox {vertical-align: middle;}.dijitTextBox .dijitSpinnerButtonContainer {width: 1em; position: relative !important; overflow: hidden;}.dijitSpinner .dijitSpinnerButtonInner {width:1em; visibility:hidden !important; overflow-x:hidden;}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0.3em !important; padding-right: 0.3em !important; margin-left: 0.3em !important; margin-right: 0.3em !important; width: 1.4em !important;}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0 !important; margin-right: 0 !important; width: 2em !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {padding: 0; position: absolute !important; right: 0; float: none; height: 50%; width: 100%; bottom: auto; left: 0; right: auto;}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: auto;}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {overflow: visible !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {top: 50%; border-top-width: 1px !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {#bottom: 50%; top: 0;}.dijitSpinner .dijitArrowButtonInner {margin: auto; overflow-x: hidden; height: 100% !important;}.dj_iequirks .dijitSpinner .dijitArrowButtonInner {height: auto !important;}.dijitSpinner .dijitArrowButtonInner .dijitInputField {-moz-transform: scale(0.5); -moz-transform-origin: center top; -webkit-transform: scale(0.5); -webkit-transform-origin: center top; -o-transform: scale(0.5); -o-transform-origin: center top; transform: scale(0.5); transform-origin: left top; padding-top: 0; padding-bottom: 0; padding-left: 0 !important; padding-right: 0 !important; width: 100%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput {padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden;}.dijitCheckBox input,.dijitRadio input {margin: 0; padding: 0; display: block;}.dijitCheckBoxInput {opacity: 0;}.dj_ie .dijitCheckBoxInput {filter: alpha(opacity=0);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.dijitProgressBarEmpty {position:relative;overflow:hidden; border:1px solid black; z-index:0;}.dijitProgressBarFull {position:absolute; overflow:hidden; z-index:-1; top:0; width:100%;}.dj_ie6 .dijitProgressBarFull {height:1.6em;}.dijitProgressBarTile {position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto;}.dijitProgressBarLabel {display:block; position:static; width:100%; text-align:center; background-color:transparent !important;}.dijitTooltip {position: absolute; z-index: 2000; display: block; left: 0; top: -10000px; overflow: visible;}.dijitTooltipContainer {border: solid black 2px; background: #b8b5b5; color: black; font-size: small;}.dijitTooltipFocusNode {padding: 2px 2px 2px 2px;}.dijitTooltipConnector {position: absolute;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane {position: absolute !important; z-index: 2;}.dijitBorderContainer > .dijitTextArea {resize: none;}.dijitGutter {position: absolute; font-size: 1px;}.dijitSplitter {position: absolute; overflow: hidden; z-index: 10; background-color: #fff; border-color: gray; border-style: solid; border-width: 0;}.dj_ie .dijitSplitter {z-index: 1;}.dijitSplitterActive {z-index: 11 !important;}.dijitSplitterCover {position:absolute; z-index:-1; top:0; left:0; width:100%; height:100%;}.dijitSplitterCoverActive {z-index:3 !important;}.dj_ie .dijitSplitterCover {background: white; opacity: 0;}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover {filter: alpha(opacity=0);}.dijitSplitterH {height: 7px; border-top:1px; border-bottom:1px; cursor: row-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0;}.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {overflow:hidden; position:absolute; top:49%;}.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {position:absolute; left:49%;}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV {font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto; -webkit-overflow-scrolling: touch;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitFieldset {border: 1px solid gray;}.dijitTitlePaneTitle, .dijitFieldsetTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {cursor: default;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {display: inline; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {display: none;}.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {display: none !important;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.dijitColorPalette .dijitPaletteTable {padding: 2px 3px 3px 3px; position: relative; overflow: hidden; outline: 0; border-collapse: separate;}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable {padding: 0; margin: 2px 3px 3px 3px;}.dijitColorPalette .dijitPaletteCell {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !important;}.dijitAccordionContainer {border:1px solid #b7b7b7; border-top:0 !important;}.dijitAccordionTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitAccordionTitleSelected {cursor: default;}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown {display: none; font-size: 0.65em; font-weight: normal !important;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer table {width: auto; clear: both;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarMonthContainer {text-align: center;}.dijitCalendarDecrementArrow {float: left;}.dijitCalendarIncrementArrow {float: right;}.dijitCalendarYearLabel {white-space: nowrap;}.dijitCalendarNextYear {margin:0 0 0 0.55em;}.dijitCalendarPreviousYear {margin:0 0.55em 0 0;}.dijitCalendarIncrementControl {vertical-align: middle;}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitCalendarDisabledDate {color: gray; text-decoration: line-through; cursor: default;}.dijitSpacer {position: relative; height: 1px; overflow: hidden; visibility: hidden;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.dijitMenu {border:1px solid black; background-color:white;}.dijitMenuTable {border-collapse:collapse; border-width:0; background-color:white;}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden;}.dijitMenuItem {text-align: left; white-space: nowrap; padding:.1em .2em; cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_a11y .dijitMenuExpandA11y {display: inline;}.dijitMenuSeparator td {border: 0; padding: 0;}.dijitMenuSeparatorTop {height: 50%; margin: 0; margin-top:3px; font-size: 1px;}.dijitMenuSeparatorBottom {height: 50%; margin: 0; margin-bottom:3px; font-size: 1px;}.dijitMenuItemIconChar {display: none; visibility: hidden;}.dj_a11y .dijitMenuItemIconChar {display: inline;}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar {visibility: visible;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}div.dijitTabDisabled, .dj_ie div.dijitTabDisabled {cursor: auto;}.dijitTab {position:relative; cursor:pointer; -webkit-tap-highlight-color: transparent; white-space:nowrap; z-index:3;}.dijitTab * {vertical-align: middle;}.dijitTabChecked {cursor: default;}.dijitTabContainerTop-tabs .dijitTab {top: 1px;}.dijitTabContainerBottom-tabs .dijitTab {top: -1px;}.dijitTabContainerLeft-tabs .dijitTab {left: 1px;}.dijitTabContainerRight-tabs .dijitTab {left: -1px;}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab {display:inline-block; #zoom: 1; #display:inline;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto; -webkit-tap-highlight-color: transparent;}.dijitTreeContainer {float: left;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dj_ie .dijitTreeLabel:focus {outline: 1px dotted black;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 4px;}.dijitDialog {position: absolute; z-index: 999; overflow: hidden;}.dijitDialogTitleBar {cursor: move;}.dijitDialogFixed .dijitDialogTitleBar {cursor:default;}.dijitDialogCloseIcon {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitDialogPaneContent {-webkit-overflow-scrolling: touch;}.dijitDialogUnderlayWrapper {position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important;}.dijitDialogUnderlay {background: #eee; opacity: 0.5;}.dj_ie .dijitDialogUnderlay {filter: alpha(opacity=50);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {border:4px solid #000; height:8px; width:8px;}.dijitSliderImageHandleV {top:-8px; right: -50%;}.dijitSliderImageHandleH {left:50%; top:-5px; vertical-align:top;}.dijitSliderBar {border-style:solid; border-color:black; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSliderBarContainerV {position:relative; height:100%; z-index:1;}.dijitSliderBarContainerH {position:relative; z-index:1;}.dijitSliderBarH {height:4px; border-width:1px 0;}.dijitSliderBarV {width:4px; border-width:0 1px;}.dijitSliderProgressBar {background-color:red; z-index:1;}.dijitSliderProgressBarV {position:static !important; height:0; vertical-align:top; text-align:left;}.dijitSliderProgressBarH {position:absolute !important; width:0; vertical-align:middle; overflow:visible;}.dijitSliderRemainingBar {overflow:hidden; background-color:transparent; z-index:1;}.dijitSliderRemainingBarV {height:100%; text-align:left;}.dijitSliderRemainingBarH {width:100% !important;}.dijitSliderBumper {overflow:hidden; z-index:1;}.dijitSliderBumperV {width:4px; height:8px; border-width:0 1px;}.dijitSliderBumperH {width:8px; height:4px; border-width:1px 0;}.dijitSliderBottomBumper,.dijitSliderLeftBumper {background-color:red;}.dijitSliderTopBumper,.dijitSliderRightBumper {background-color:transparent;}.dijitSliderDecoration {text-align:center;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%; white-space: nowrap;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_a11y .dijitSliderButtonInner {visibility:visible !important;}.dijitSliderButtonContainer {text-align:center; height:0;}.dijitSliderButtonContainer * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSlider .dijitButtonNode {padding:0; display:block;}.dijitRuleContainer {position:relative; overflow:visible;}.dijitRuleContainerV {height:100%; line-height:0; float:left; text-align:left;}.dj_opera .dijitRuleContainerV {line-height:2%;}.dj_ie .dijitRuleContainerV {line-height:normal;}.dj_gecko .dijitRuleContainerV {margin:0 0 1px 0;}.dijitRuleMark {position:absolute; border:1px solid black; line-height:0; height:100%;}.dijitRuleMarkH {width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important;}.dijitRuleLabelContainer {position:absolute;}.dijitRuleLabelContainerH {text-align:center; display:inline-block;}.dijitRuleLabelH {position:relative; left:-50%;}.dijitRuleLabelV {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}.dijitRuleMarkV {height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0;}.dj_ie .dijitRuleLabelContainerV {margin-top:-.55em;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.dijitToolbarSeparator {height: 18px; width: 5px; padding: 0 1px; margin: 0;}.dijitIEFixedToolbar {position:absolute; top: expression(eval((document.documentElement||document.body).scrollTop));}.dijitEditor {display: block;}.dijitEditorDisabled,.dijitEditorReadOnly {color: gray;}.dijitTimePicker {background-color: white;}.dijitTimePickerItem {cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitTimePickerItemHover {background-color:gray; color:white;}.dijitTimePickerItemSelected {font-weight:bold; color:#333; background-color:#b7cdee;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dijitTimePickerItemInner {text-align:center; border:0; padding:2px 8px 2px 8px;}.dijitTimePickerTick,.dijitTimePickerMarker {border-bottom:1px solid gray;}.dijitTimePicker .dijitDownArrowButton {border-top: none !important;}.dijitTimePickerTick {color:#CCC;}.dijitTimePickerMarker {color:black; background-color:#CCC;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitNumberTextBox {text-align: left; direction: ltr;}.dijitNumberTextBox .dijitInputInner {text-align: inherit;}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner {text-align: right;}.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {padding-right: 1px !important;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.dijitSelectFixedWidth .dijitButtonContents {width: 100%;}.dijitSelectMenu .dijitMenuItemIcon {display:none;}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {position: static;}.dijitSelectLabel *{vertical-align: baseline;}.dijitSelectSelectedOption * {font-weight: bold;}.dijitSelectMenu {border-width: 1px;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.dijitFocused .dijitMenuItemShortcutKey {text-decoration: underline;}.dijitIconSave,.dijitIconPrint,.dijitIconCut,.dijitIconCopy,.dijitIconClear,.dijitIconDelete,.dijitIconUndo,.dijitIconEdit,.dijitIconNewTask,.dijitIconEditTask,.dijitIconEditProperty,.dijitIconTask,.dijitIconFilter,.dijitIconConfigure,.dijitIconSearch,.dijitIconApplication,.dijitIconBookmark,.dijitIconChart,.dijitIconConnector,.dijitIconDatabase,.dijitIconDocuments,.dijitIconMail,.dijitLeaf,.dijitIconFile,.dijitIconFunction,.dijitIconKey,.dijitIconPackage,.dijitIconSample,.dijitIconTable,.dijitIconUsers,.dijitFolderClosed,.dijitIconFolderClosed,.dijitFolderOpened,.dijitIconFolderOpen,.dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled.png"); width: 16px; height: 16px;}.dj_ie6 .dijitIconSave,.dj_ie6 .dijitIconPrint,.dj_ie6 .dijitIconCut,.dj_ie6 .dijitIconCopy,.dj_ie6 .dijitIconClear,.dj_ie6 .dijitIconDelete,.dj_ie6 .dijitIconUndo,.dj_ie6 .dijitIconEdit,.dj_ie6 .dijitIconNewTask,.dj_ie6 .dijitIconEditTask,.dj_ie6 .dijitIconEditProperty,.dj_ie6 .dijitIconTask,.dj_ie6 .dijitIconFilter,.dj_ie6 .dijitIconConfigure,.dj_ie6 .dijitIconSearch,.dj_ie6 .dijitIconApplication,.dj_ie6 .dijitIconBookmark,.dj_ie6 .dijitIconChart,.dj_ie6 .dijitIconConnector,.dj_ie6 .dijitIconDatabase,.dj_ie6 .dijitIconDocuments,.dj_ie6 .dijitIconMail,.dj_ie6 .dijitLeaf,.dj_ie6 .dijitIconFile,.dj_ie6 .dijitIconFunction,.dj_ie6 .dijitIconKey,.dj_ie6 .dijitIconPackage,.dj_ie6 .dijitIconSample,.dj_ie6 .dijitIconTable,.dj_ie6 .dijitIconUsers,.dj_ie6 .dijitFolderClosed,.dj_ie6 .dijitIconFolderClosed,.dj_ie6 .dijitFolderOpened,.dj_ie6 .dijitIconFolderOpen,.dj_ie6 .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled8bit.png");}.dijitDisabled .dijitIconSave,.dijitDisabled .dijitIconPrint,.dijitDisabled .dijitIconCut,.dijitDisabled .dijitIconCopy,.dijitDisabled .dijitIconClear,.dijitDisabled .dijitIconDelete,.dijitDisabled .dijitIconUndo,.dijitDisabled .dijitIconEdit,.dijitDisabled .dijitIconNewTask,.dijitDisabled .dijitIconEditTask,.dijitDisabled .dijitIconEditProperty,.dijitDisabled .dijitIconTask,.dijitDisabled .dijitIconFilter,.dijitDisabled .dijitIconConfigure,.dijitDisabled .dijitIconSearch,.dijitDisabled .dijitIconApplication,.dijitDisabled .dijitIconBookmark,.dijitDisabled .dijitIconChart,.dijitDisabled .dijitIconConnector,.dijitDisabled .dijitIconDatabase,.dijitDisabled .dijitIconDocuments,.dijitDisabled .dijitIconMail,.dijitDisabled .dijitLeaf,.dijitDisabled .dijitIconFile,.dijitDisabled .dijitIconFunction,.dijitDisabled .dijitIconKey,.dijitDisabled .dijitIconPackage,.dijitDisabled .dijitIconSample,.dijitDisabled .dijitIconTable,.dijitDisabled .dijitIconUsers,.dijitDisabled .dijitFolderClosed,.dijitDisabled .dijitIconFolderClosed,.dijitDisabled .dijitFolderOpened,.dijitDisabled .dijitIconFolderOpen,.dijitDisabled .dijitIconError {background-image: url("../../icons/images/commonIconsObjActDisabled.png");}.dijitIconSave {background-position: 0;}.dijitIconPrint {background-position: -16px;}.dijitIconCut {background-position: -32px;}.dijitIconCopy {background-position: -48px;}.dijitIconClear {background-position: -64px;}.dijitIconDelete {background-position: -80px;}.dijitIconUndo {background-position: -96px;}.dijitIconEdit {background-position: -112px;}.dijitIconNewTask {background-position: -128px;}.dijitIconEditTask {background-position: -144px;}.dijitIconEditProperty {background-position: -160px;}.dijitIconTask {background-position: -176px;}.dijitIconFilter {background-position: -192px;}.dijitIconConfigure {background-position: -208px;}.dijitIconSearch {background-position: -224px;}.dijitIconError {background-position: -496px;} .dijitIconApplication {background-position: -240px;}.dijitIconBookmark {background-position: -256px;}.dijitIconChart {background-position: -272px;}.dijitIconConnector {background-position: -288px;}.dijitIconDatabase {background-position: -304px;}.dijitIconDocuments {background-position: -320px;}.dijitIconMail {background-position: -336px;}.dijitIconFile, .dijitLeaf {background-position: -352px;}.dijitIconFunction {background-position: -368px;}.dijitIconKey {background-position: -384px;}.dijitIconPackage{background-position: -400px;}.dijitIconSample {background-position: -416px;}.dijitIconTable {background-position: -432px;}.dijitIconUsers {background-position: -448px;}.dijitIconFolderClosed, .dijitFolderClosed {background-position: -464px;}.dijitIconFolderOpen, .dijitFolderOpened {background-position: -480px;}.dijitIconLoading {background: url("../../icons/images/loadingAnimation.gif") no-repeat; height: 20px; width: 20px;}.soria .dojoDndItemOver {background-image: url("images/treeHover.png");}.soria .dojoDndItemAnchor,.soria .dojoDndItemSelected {background-color: #B8CBEC;}.soria table.dojoDndAvatar {-moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}.soria .dojoDndAvatar td {border: none;}.soria .dojoDndAvatar tr {border: none;}.soria .dojoDndAvatarHeader td {height: 20px; padding: 0 0 0 21px;}.soria .dojoDndAvatarItem td {padding: 2px;}.soria.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoMove.png"); background-repeat: no-repeat; background-position: 2px center;}.soria.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.soria.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndMove.png"); background-repeat: no-repeat; background-position: 2px center;}.soria.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.soria .dijitContentPane {padding: 0;}.soria .dijitTabContainerTop-dijitContentPane,.soria .dijitTabContainerLeft-dijitContentPane,.soria .dijitTabContainerBottom-dijitContentPane,.soria .dijitTabContainerRight-dijitContentPane,.soria .dijitAccordionContainer-dijitContentPane {background-color: #fff; padding: 5px;}.soria .dijitSplitContainer-dijitContentPane,.soria .dijitBorderContainer-dijitContentPane {background-color: #fff; padding: 5px;} .soria .dijitTabContainer .tabStripRBtn {margin-right: 21px;} .soria .dijitTabContainer .tabStripLBtn {margin-left: 21px;} .soria .nowrapTabStrip .dijitTab {top: 2px;} .soria .dijitTabContainerBottom-tabs .dijitTab {top: -1px; bottom: 2px;}.soria .dijitTabPaneWrapper {background:#fff; border:1px solid #B1BADF; margin: 0; padding-left: 0;}.soria .dijitTab {padding:4px 6px 2px 4px; background: url("images/tabContainerSprite.gif") repeat-x 0 -351px; position: relative; line-height:normal; margin:0 2px 0 0; color: #243C5F; border: 1px #8BA0BD solid; border-bottom: 1px #B1BADF solid;}.soria .dijitTabHover {color: #243C5F; background: url("images/tabContainerSprite.gif") repeat-x 0 -201px;}.soria .dijitTabChecked{background: url("images/tabContainerSprite.gif") repeat-x 0 -51px; color: #243C5F !important;}.soria .dijitTabListWrapper {z-index: 10;}.soria .dijitTabContainerTabListNested {background: #D9E9F9; border: none;}.soria .dijitTabContainerTabListNested .dijitTab {background: none; border: none; top: 0;}.soria .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.soria .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: underline; font-weight: bold;}.soria .dijitTabContainerSpacerNested .dijitTabSpacer {height: 0;}.soria .dijitTabPaneWrapperNested {border: none;}.soria .dijitTabCloseButton {width: 15px; height: 15px; background: url("images/spriteRoundedIconsSmall.png") no-repeat -60px top; margin-top: -1px;}.dj_ie6 .soria .dijitTabCloseButton {background: url("images/spriteRoundedIconsSmall.gif") no-repeat -60px top;}.soria .dijitTabCloseButtonHover {background: url("images/spriteRoundedIconsSmall.png") no-repeat -60px -15px;}.dj_ie6 .soria .dijitTabCloseButtonHover {background: url("images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px;}.soria .dijitTabContainerTop-tabs {border-color: #B1BADF; padding-left: 3px;}.soria .dijitTabContainerTop-tabs .dijitTab {border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0;}.soria .dijitTabContainerTopNoStrip {padding-top: 3px;}.soria .dijitTabContainerTop-container {border-top: none;}.soria .dijitTabContainerTop .dijitTabListWrapper {border-bottom: none;}.soria .dijitTabContainerTop-tabs .dijitTab {top: 1px;}.soria .dijitTabContainerTop-tabs .dijitTabChecked {border-bottom-color: #94b4e6;}.soria .dijitTabContainerTopStrip {border: 1px solid #B1BADF; margin-top: 1px; padding-top: 1px; background: #F0F4FC;}.soria .dijitTabContainerTopStrip .dijitTabContainerTop-tabs {padding-left: 3px;}.soria .dijitTabContainerNested .dijitTabListWrapper {height: auto;}.soria .dijitTabContainerBottom-tabs {margin-top: -1px; padding-left: 3px; border-top: 1px solid #B1BADF;}.soria .dijitTabContainerBottom .dijitTabListWrapper {border-top: none; padding-top: 1px; padding-bottom: 1px; float: left;}.soria .dijitTabContainerBottom-tabs .dijitTab {border-bottom: none; border-top: 1px solid #B1BADF; border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; padding-top: 3px; padding-bottom: 3px; background: url("images/tabBottomEnabledC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-tabs .dijitTabHover {background: url("images/tabBottomHoverC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-tabs .dijitTabChecked {border-top-color:#94b4e6; background: url("images/tabBottomActiveC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-container {border-bottom: none;}.soria .dijitTabContainerBottomStrip {padding-bottom: 2px; border: 1px solid #B1BADF;}.soria .dijitTabContainerBottomStrip {background: #F0F4FC;}.soria .dijitTabContainerBottom-spacer,.soria .dijitTabContainerTop-spacer {height: 2px; border: 1px solid #8ba0bd; background: #94b4e6;}.soria .dijitTabContainerTop-spacer {border-top: none;}.soria .dijitTabContainerBottom-spacer {border-bottom: none;}.soria .dijitTabContainerRight-tabs {height: 100%; border-color: #ccc; padding-top: 3px;}.soria .dijitTabContainerRight-tabs .dijitTab {border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-bottom: none; border-left: 1px solid #B1BADF; border-bottom: 1px solid #B1BADF !important; padding: 4px 6px 2px 8px;}.soria .dijitTabContainerRight-tabs .dijitTabChecked {border-left-color: #94b4e6; background: url("images/tabRightChecked.gif") no-repeat left top !important;}.soria .dijitTabContainerRight-container {border-right: none;}.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTab,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTab {border-bottom: solid #B1BADF 1px; margin-bottom: -1px;}.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover {border-bottom: solid #94b4e6 1px; margin-bottom: -1px;}.soria .dijitTabContainerRightStrip {padding-right: 2px; border: 1px solid #B1BADF; background: #F0F4FC; border-left: none;}.soria .dijitTabContainerLeft-tabs {border-color: #ccc; padding-top: 3px; height: 100%;}.soria .dijitTabContainerLeft-tabs .dijitTab {border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-right: 1px solid #B1BADF; border-bottom: 1px solid #B1BADF;}.soria .dijitTabContainerLeft-tabs .dijitTabChecked {border-right: 1px solid #94b4e6; background: url("images/tabLeftChecked.gif") no-repeat right top;}.soria .dijitTabContainerLeft-container {border-left: none;}.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTab {border-bottom: solid #B1BADF 1px; margin-bottom: -1px;}.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTab,.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTab {border-bottom: solid #94b4e6 1px; margin-bottom: -1px;}.soria .dijitTabContainerLeftStrip {padding-left: 2px; border: 1px solid #B1BADF; background: #F0F4FC; border-right: none;}.soria .dijitTabContainerLeft-tabs .dijitTab,.soria .dijitTabContainerRight-tabs .dijitTab {margin: 1px 0;}.soria .dijitTabContainerLeft-spacer,.soria .dijitTabContainerRight-spacer {width: 2px; border: 1px solid #8ba0bd; background: #94b4e6;}.soria .dijitTabContainerLeft-spacer {border-left: none;}.soria .dijitTabContainerRight-spacer {border-right: none;}.soria .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {border-left: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.soria .dijitTabContainer .tabStripButton {margin-right: 0;}.soria .dijitTabContainer .tabStripButton-top {margin-top: 1px;}.dj_ie6 .soria .tabStripButton .dijitTabContent,.dj_ie7 .soria .tabStripButton .dijitTabContent {padding-top: 7px;}.dj_ie6 .soria .tabStrip-disabled .tabStripButton .dijitTabContent,.dj_ie7 .soria .tabStrip-disabled .tabStripButton .dijitTabContent {padding-top: 6px;}.soria .dijitTabContainer .tabStripButton-bottom {background: transparent url("images/tabBottomEnabledSpriteLR.gif") no-repeat scroll left bottom; border-bottom: medium none; border-top: 1px solid #B1BADF;}.soria .dijitTabContainer .tabStripButton-bottom .dijitTab {background: transparent url("images/tabBottomEnabledSpriteLR.gif") no-repeat scroll right bottom;}.soria .dijitTabStripIcon {height: 14px; width: 14px; background: url("images/spriteRoundedIconsSmall.png") no-repeat left top ;}.dj_ie6 .soria .dijitTabStripIcon {background-image: url("images/spriteRoundedIconsSmall.gif");}.soria .dijitTabStripSlideRightIcon {background-position: -30px top;}.soria .dijitTabStripMenuIcon {background-position: -15px top;}.soria .dijitAccordionContainer {border-color: #b1badf; background-color: #fff;}.soria .dijitAccordionTitle {background:#fafafa url("images/titleBar.png") repeat-x top left; border-top: 1px solid #b9bbdd; padding: 5px 4px 6px 8px; font-size: 0.9em; font-weight: bold; color: #373941;}.soria .dijitAccordionTitleSelected {background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x; font-weight: bold; border-top: 1px solid #b9bbdd; border-bottom: 1px solid #b9bbdd; padding: 5px 4px 5px 8px; color: #243C5F;}.soria .dijitAccordionArrow {background:url("images/spriteRoundedIconsSmallBl.gif") no-repeat -30px top; width:15px; height:15px; margin-top:-1px;}.soria .dijitAccordionTitleSelected .dijitAccordionArrow {background:url("images/spriteRoundedIconsSmallBl.gif") no-repeat -15px top; margin-top:-1px;}.soria .dijitAccordionText {margin-left: 4px; margin-right: 4px;}.soria .dijitSplitContainerSizerH {background:url("images/splitContainerSizerV.png") repeat-y #cddef4; border:0; border-left:0 solid #436496; border-right:0 solid #436496; width:5px;}.soria .dijitSplitContainerSizerH .thumb {background:url("images/splitContainerSizerV-thumb.png") no-repeat #ccc; left:1px; width:2px; height:19px;}.soria .dijitSplitContainerSizerV {background:url("images/splitContainerSizerH.png") repeat-x #cddef4; border:0; border-top:0 solid #436496; border-bottom:0 solid #436496; height:2px;}.soria .dijitSplitContainerSizerV .thumb {background:url("images/splitContainerSizerH-thumb.png") no-repeat #ccc; top:1px; width:19px; height:5px;}.soria .dijitBorderContainer {background-color: #e1ebfb; padding: 5px;}.soria .dijitSplitContainer-child,.soria .dijitBorderContainer-child {border: 1px #b1badf solid;}.soria .dijitBorderContainer-dijitTabContainerTop,.soria .dijitBorderContainer-dijitTabContainerBottom,.soria .dijitBorderContainer-dijitTabContainerLeft,.soria .dijitBorderContainer-dijitTabContainerRight {border: none;}.soria .dijitBorderContainer-dijitBorderContainer {border: none; padding: 0;}.soria .dijitSplitterH,.soria .dijitGutterH {background: #E1EBFB; border:0; border-left:0 solid #d3d3d3; border-right:0 solid #d3d3d3; height:5px;}.soria .dijitSplitterH .dijitSplitterThumb {background:#B0B0B0 none; height:1px; top:2px; width:19px;}.soria .dijitSplitterV,.soria .dijitGutterV {background: #E1EBFB; border:0; border-top:0 solid #d3d3d3; border-bottom:0 solid #d3d3d3; width:5px;}.soria .dijitSplitterV .dijitSplitterThumb {background:#B0B0B0 none; height:19px; left:2px; width:1px;}.soria .dijitSplitterActive {font-size: 1px; background-image: none; background-color: #aaa; -moz-opacity: 0.6; opacity: 0.6; filter: Alpha(Opacity=60); margin: 0;}.soria .dijitInputContainer input {margin: 0 0.1em;}.soria .dijitSelect .dijitButtonContents,.soria .dijitSelect,.soria .dijitTextBox,.soria .dijitTextArea {background:#fff url("images/validationInputBg.png") repeat-x top left; #background:#fff url("images/validationInputBg.gif") repeat-x top left;}.soria .dijitSelect,.soria .dijitTextBox,.soria .dijitTextArea {border:1px solid #8ba0bd;}.soria .dijitSelect .dijitArrowButton,.soria .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.soria .dijitSelect .dijitButtonContents,.soria .dijitTextBox .dijitButtonNode {border-color: #8ba0bd;}.soria .dijitSelectFocused,.soria .dijitTextBoxFocused,.soria .dijitTextAreaFocused {border-color:#406b9b;}.soria .dijitSelectFocused TD,.soria .dijitTextBoxFocused .dijitButtonNode,.soria .dijitSpinner .dijitUpArrowButtonActive,.soria .dijitSpinner .dijitDownArrowButtonActive {border-color:#8ba0bd;}.soria .dijitSpinnerFocused .dijitDownArrowButton,.soria .dijitSpinner .dijitUpArrowButtonActive,.soria .dijitSpinner .dijitDownArrowButtonActive {border-top-color:#8ba0bd;}.soria .dijitError {border-color:#f3d118; background-color:#f9f7ba; background-image:none;}.soria .dijitErrorFocused {background-color:#ff6; background-image:none;}.soria .dijitValidationTextBoxError .dijitValidationIcon {width: 16px; background: transparent url("images/warning.png") no-repeat center center;}.soria .dijitComboBoxHighlightMatch {background-color:#f9f7ba;}.soria .dijitButtonNode {border: 1px solid #8ba0bd; border-bottom:1px solid #657c9c; padding: 0.1em 0.2em 0.2em 0.2em; background: #bcd5f0 url("images/buttonEnabled.png") repeat-x top left;}.soria .dijitButtonText {text-align: center; padding: 0 0.3em;}.soria .dijitInputField {padding: 0;}.soria .dijitArrowButton {color: #111;}.soria .dijitComboButton .dijitDownArrowButton {padding-right:4px;}.soria .dijitTextBoxReadOnly,.soria .dijitTextBoxReadOnly .dijitButtonNode,.soria .dijitButtonDisabled .dijitButtonNode,.soria .dijitToggleButtonDisabled .dijitButtonNode,.soria .dijitDropDownButtonDisabled .dijitButtonNode,.soria .dijitComboButtonDisabled .dijitButtonNode,.soria .dijitTextBoxDisabled,.soria .dijitTextBoxDisabled .dijitButtonNode {border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd; background:#c3d3e5 url("images/buttonDisabled.png") top repeat-x; opacity: 0.60;}.dj_ie6 .soria .dijitReadOnly input,.dj_ie7 .soria .dijitReadOnly input,.dj_ie6 .soria .dijitComboButtonDisabled .dijitButtonText,.dj_ie7 .soria .dijitComboButtonDisabled .dijitButtonText {color: #aaa;}.soria .dijitButtonHover .dijitButtonNode,.soria .dijitButtonNodeHover,.soria .dijitToggleButtonHover .dijitButtonNode,.soria .dijitDropDownButtonHover .dijitButtonNode,.soria .dijitButtonContentsHover,.soria .dijitUpArrowButtonHover,.soria .dijitDownArrowButtonHover {color:#243C5F; background:#acc5e2 url("images/buttonHover.png") repeat-x top left;}.soria .dijitButtonActive .dijitButtonNode,.soria .dijitToggleButtonActive .dijitButtonNode,.soria .dijitDropDownButtonActive .dijitButtonNode,.soria .dijitComboButtonActive .dijitButtonContents,.soria .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {border-color:#657c9c; background: #91b4e5 url("images/buttonActive.png") top left repeat-x;}.soria .dijitUpArrowButtonActive,.soria .dijitDownArrowButtonActive {background: #91b4e5 url("images/buttonActive.png") top left repeat-x;}.soria .dijitArrowButtonInner {background-image: url("images/spriteArrows.png"); background-repeat: no-repeat; background-position: 0 center; width: 11px; height: 11px;}.soria .dijitComboBox .dijitArrowButtonInner {background-position: 0 center;}.soria .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -11px center;}.soria .dijitUpArrowButton .dijitArrowButtonInner {background-position: -22px center;}.soria .dijitRightArrowButton .dijitArrowButtonInner {background-position: -33px center;}.dj_ie6 .soria .dijitArrowButtonInner {background-image: url("images/spriteArrows.gif");}.dj_ie .soria .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {margin-top: 1px;}.soria .dijitSpinnerButtonContainer {width: auto; padding: 0;}.soria .dijitSpinner .dijitArrowButton {width: 15px;}.soria .dijitSpinner .dijitSpinnerButtonInner {width: 15px;}.soria .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding: 0;}.soria .dijitToggleButton .dijitCheckBox,.soria .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/spriteCheckbox.gif");}.soria .dijitCheckBox,.soria .dijitCheckBoxIcon {background-image: url("images/spriteCheckbox.gif"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0;}.soria .dijitCheckBox,.soria .dijitToggleButton .dijitCheckBoxIcon {background-position: -16px;}.soria .dijitCheckBoxChecked,.soria .dijitToggleButtonChecked .dijitCheckBoxIcon {background-position: 0;}.soria .dijitCheckBoxDisabled {background-position: -48px;}.soria .dijitCheckBoxCheckedDisabled {background-position: -32px;}.soria .dijitCheckBoxHover {background-position: -80px;}.soria .dijitCheckBoxCheckedHover {background-position: -64px;}.soria .dijitToggleButton .dijitRadio,.soria .dijitToggleButton .dijitRadioIcon {background-image: url("images/spriteRadio.gif");}.soria .dijitRadio,.soria .dijitRadioIcon {background-image: url("images/spriteRadio.gif"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0;}.soria .dijitRadio,.soria .dijitToggleButton .dijitRadioIcon {background-position: -16px;}.soria .dijitRadioChecked,.soria .dijitToggleButtonChecked .dijitRadioIcon {background-position: 0;}.soria .dijitRadioDisabled {background-position: -48px;}.soria .dijitRadioCheckedDisabled {background-position: -32px;}.soria .dijitRadioHover {background-position: -80px;}.soria .dijitRadioCheckedHover {background-position: -64px;}.soria .dijitSliderProgressBarH {border-color: #b1badf; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.soria .dijitSliderProgressBarV {border-color: #b1badf; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.soria .dijitSliderFocused .dijitSliderProgressBarH,.soria .dijitSliderFocused .dijitSliderLeftBumper {background-image:url("images/sliderFullFocus.png");}.soria .dijitSliderFocused .dijitSliderProgressBarV,.soria .dijitSliderFocused .dijitSliderBottomBumper {background-image:url("images/sliderFullVerticalFocus.png");}.soria .dijitSliderRemainingBarV {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y bottom left;}.soria .dijitSliderRemainingBarH {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left;}.soria .dijitSliderBar {border-style: solid; outline:1px;}.soria .dijitSliderFocused .dijitSliderBar {border-color:#8ba0bd;}.soria .dijitSliderImageHandleH {border:0; width:15px; height:18px; background:url("images/preciseSliderThumb.png") no-repeat center top;}.soria .dijitSliderFocused .dijitSliderImageHandleH {background-image:url("images/preciseSliderThumbFocus.png"); #background-image:url("images/preciseSliderThumbFocus.gif");}.dj_ie6 .soria .dijitSliderImageHandleH {background-image:url("images/preciseSliderThumb.gif");}.soria .dijitSliderLeftBumper {border-left-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.soria .dijitSliderRightBumper {background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left; border-color: #b4b4b4; border-right-width: 1px;}.soria .dijitSliderImageHandleV {border:0; width:20px; height:15px; background:url("images/sliderThumb.png") no-repeat center center; #background:url("images/sliderThumb.gif") no-repeat center center;}.soria .dijitSliderFocused .dijitSliderImageHandleV {background-image:url("images/sliderThumbFocus.png"); #background-image:url("images/sliderThumbFocus.gif");}.soria .dijitSliderBottomBumper {border-bottom-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.soria .dijitSliderTopBumper {background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y top left; border-color: #b4b4b4; border-top-width: 1px;}.soria .dijitSliderIncrementIconH,.soria .dijitSliderIncrementIconV {background:url("images/spriteRoundedIconsSmall.png") no-repeat -45px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -45px top; width:15px; height:15px;}.soria .dijitSliderIncrementIconH {background:url("images/spriteRoundedIconsSmall.png") no-repeat -30px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;}.soria .dijitSliderDecrementIconH,.soria .dijitSliderDecrementIconV {width:15px; height:15px; background:url("images/spriteRoundedIconsSmall.png") no-repeat -15px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top;}.soria .dijitSliderDecrementIconH {background:url("images/spriteRoundedIconsSmall.png") no-repeat 0 top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat 0 top;}.soria .dijitSliderButtonInner {visibility:hidden;}.soria .dijitSliderReadOnly *,.soria .dijitSliderDisabled * {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; color: #bdbdbd;}.soria .dijitSliderReadOnly .dijitSliderDecrementIconH,.soria .dijitSliderDisabled .dijitSliderDecrementIconH {background-position: 0 -15px;}.soria .dijitSliderReadOnly .dijitSliderIncrementIconH,.soria .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -30px -15px;}.soria .dijitSliderReadOnly .dijitSliderDecrementIconV,.soria .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -15px -15px;}.soria .dijitSliderReadOnly .dijitSliderIncrementIconV,.soria .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -45px -15px;}.soria .dijitSelectError .dijitButtonContents,.soria .dijitSelectHover .dijitArrowButton,.soria .dijitSelectActive .dijitArrowButton,.soria .dijitSelectOpened .dijitArrowButton,.soria .dijitSelectDisabled .dijitArrowButton,.soria .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.soria .dijitSelect .dijitArrowButton {background: #bcd5f0 url("images/buttonEnabled.png") repeat-x top left; border-width: 0;}.soria .dijitSelectDisabled,.soria .dijitSelectDisabled TD {border-color: #b9bbdd !important; background:#c3d3e5 url("images/buttonDisabled.png") top repeat-x;}.dj_ie .soria .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.soria .dijitSelectHover,.soria .dijitSelectHover TD {border-color:#a5beda #5c7590 #5c7590 #a5beda !important; color:#000; background:#acc5e2 url("images/buttonHover.png") repeat-x top left;}.soria .dijitSelectActive,.soria .dijitSelectOpened,.soria .dijitSelectActive TD,.soria .dijitSelectOpened TD {border-color:#657c9c !important; background: #91b4e5 url("images/buttonActive.png") top left repeat-x;}.soria .dijitSelectMenu td {padding: 0;}.soria .dijitSelectMenu .dijitMenuItemLabel,.soria .dijitSelectMenu .dijitMenuArrowCell {padding: 0.1em 0.2em;}.soria .dijitTreeNode {background : url("images/treeI.gif") no-repeat; background-position : top left; background-repeat : repeat-y; zoom: 1;}.soria .dijitTreeRowHover {background-image: url("images/treeHover.png"); background-repeat: repeat; background-color: transparent !important;}.soria .dijitTreeIsLast {background: url("images/treeI_half.gif") no-repeat;}.soria .dijitTreeLabel {font-weight: normal; margin-left: 3px;}.soria .dijitTreeIsRoot {margin-left: 0; background-image: none;}.soria .dijitTreeExpando {width: 18px; height: 18px;}.soria .dijitTreeRow {padding-bottom: 2px;}.soria .dijitTreeContent {min-height: 18px; min-width: 18px; padding-left:1px;}.soria .dijitTreeRowSelected .dijitTreeLabel{background:#b8cbec;}.soria .dijitTreeExpandoOpened {background: url("images/spriteTree.gif") no-repeat -18px top;}.soria .dijitTreeExpandoClosed {background-image: url("images/spriteTree.gif");}.soria .dijitTreeExpandoLeaf {background: url("images/spriteTree.gif") no-repeat -36px top;}.soria .dijitTreeExpandoLoading {background-image: url("images/treeExpand_loading.gif");}.soria .dijitTreeIcon {width: 16px; height: 16px;}.soria .dijitFolderOpened {background: url("images/spriteDivIcons.gif") no-repeat -16px top;}.soria .dijitFolderClosed {background: url("images/spriteDivIcons.gif") no-repeat top left;}.soria .dijitLeaf {background: url("images/spriteDivIcons.gif") no-repeat -32px top;}.soria .dijitTreeNode .dojoDndItemBefore,.soria .dijitTreeNode .dojoDndItemAfter {border-bottom: none; border-top: none;}.soria .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {border-top: 2px solid #369;}.soria .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {border-bottom: 2px solid #369;}.soria .dijitProgressBar {margin:2px 0 2px 0;}.soria .dijitProgressBarEmpty{background:#fff url("images/progressBarEmpty.png") repeat-x center center; border-color: #8ba0bd;}.soria .dijitProgressBarTile{background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;}.soria .dijitProgressBarFull {border: 0px solid #8ba0bd; border-right-width: 1px;}.soria .dijitProgressBarLabel {color:#293a4b;}.soria .dijitProgressBarIndeterminate .dijitProgressBarTile {background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;}.soria .dijitTitlePaneTitle {background: #cccccc; background:#fff url("images/titleBar.png") repeat-x top left; border:1px solid #bfbfbf; padding:3px 4px; font-size: 0.9em; font-weight: bold; color: #6d6d6d;}.soria .dijitTitlePaneTitleHover {background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x;}.soria .dijitTitlePaneTitle * {vertical-align: middle;}.soria .dijitTitlePane .dijitArrowNode,.soria .dijitFieldset .dijitArrowNode {width:15px; height:15px;}.soria .dijitTitlePaneTextNode {color: #243C5F;}.soria .dijitTitlePane .dijitClosed .dijitArrowNode, .soria .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background: url("images/spriteRoundedIconsSmall.png") no-repeat -30px top;}.dj_ie6 .soria .dijitTitlePane .dijitClosed .dijitArrowNode, .dj_ie6 .soria .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;}.soria .dijitTitlePane .dijitOpen .dijitArrowNode, .soria .dijitFieldset .dijitFieldsetTitleOpen .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.png") no-repeat -15px top;}.dj_ie6 .soria .dijitTitlePane .dijitOpen .dijitArrowNode, .dj_ie6 .soria .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top;}.soria .dijitTitlePaneContentOuter {background: #ffffff; border: 1px solid #bfbfbf; border-top: 0;}.soria .dijitTitlePaneContentInner {padding:10px;}.soria .dijitTitlePaneTextNode {margin-left: 4px; margin-right: 4px;}.soria .dijitCalendarIncrementControl {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat;}.dj_ie6 .soria .dijitCalendarIncrementControl {font-size:.1em; background-image: url("images/spriteRoundedIconsSmall.gif");}.soria .dijitA11ySideArrow {display: none;}.soria .dijitCalendarDecrease {background-position: top left;}.soria .dijitCalendarIncrease {background-position: -30px top;}.soria table.dijitCalendarContainer {font-size: 100%; border-spacing: 0; border-collapse: separate; margin: 0;}.soria .dijitCalendarMonthContainer {background:#bed7f0 url("images/titleBar.png") repeat-x top; padding-top:.3em; padding-bottom:.2em; text-align:center;}.dj_ie6 .soria .dijitCalendarMonthContainer th {padding-top:.2em; padding-bottom:.1em;}.soria .dijitCalendarDayLabelTemplate {background:#bed7f0; font-weight:normal; padding-top:.15em; padding-bottom:.2em; border-bottom: 1px solid #b1badf; color:#293a4b; text-align:center;}.soria .dijitCalendarBodyContainer {border-bottom: 1px solid #eeeeee;}.soria .dijitCalendarMonthLabel {color:#293a4b; font-weight: bold; padding: 0 4px;}.soria .dijitCalendarDateTemplate {font-size: 0.9em; font-weight: bold; text-align: center; padding: 0.3em 0.3em 0.05em 0.3em; letter-spacing: 1px; background-color: #fff; border:#fff solid 1px !important;}.dj_ie .soria .dijitCalendarDateTemplate {padding: 0.1em .33em 0.02em .33em;}.soria .dijitCalendarPreviousMonth,.soria .dijitCalendarNextMonth {color:#999999; background-color:#fdfdfd !important; border:#fdfdfd solid 1px !important;}.soria .dijitCalendarCurrentMonth {}.soria .dijitCalendarDisabledDate {text-decoration:line-through !important;}.soria .dijitCalendarCurrentDate {text-decoration:underline; font-weight:bold;}.soria .dijitCalendarSelectedDate {background-color:#b9cbf1 !important; color:black !important; border:#4b5aaa solid 1px !important;}.soria .dijitCalendarYearContainer {background:white url("images/titleBar.png") repeat-x top;}.soria .dijitCalendarYearLabel {margin:0; padding:0.4em 0 0.25em 0; text-align:center; font-size: 1.17em;}.soria .dijitCalendarSelectedYear {font-weight:bolder; color:black; padding:0.2em; padding-bottom:0.1em; background-color:#b9cbf1 !important; border:#4b5aaa solid 1px !important;}.soria .dijitCalendarNextYear,.soria .dijitCalendarPreviousYear {color:black !important; font-weight:normal;}.soria .dijitCalendar .dijitDropDownButton {margin: 0;}.soria .dijitCalendar .dijitButtonText {padding: 0;}.soria .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.soria .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #d9e6f9; color: #243C5F;}.soria .dijitTimePickerTick,.soria .dijitTimePickerMarker {border-color: #b1badf;}.soria .dijitTimePickerTick {color: gray;}.soria .dijitTimePickerMarker {background:#bed7f0 url("images/titleBar.png") repeat-x top; color:#293a4b; font-weight: bold;}.soria .dijitTimePickerItemSelected {color: black; background: #b9cbf1 none;}.soria .dijitTimePickerItemHover {background: #60a1ea none; color:white;}.soria .dijitTimePickerTick .dijitTimePickerItemInner {font-size: 0.8em;}.soria .dijitTimePickerItemSelected .dijitTimePickerItemInner {font-size: 1em;}.soria .dijitToolbar {border-bottom: 1px solid #ccc; background:#eaeaea url("images/titleBar.png") repeat-x top left;}.dj_ie6 .soria .dijitToolbar {height: 10px;}.soria .dijitToolbar .dijitButtonNode,.soria .dijitToolbar .dijitComboButton .dijitButtonContents,.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; margin: 0; padding: 0; border: none; font-size: 12px;}.soria .dijitToolbar .dijitButton,.soria .dijitToolbar .dijitToggleButton,.soria .dijitToolbar .dijitDropDownButton,.soria .dijitToolbar .dijitComboButton .dijitButtonContents,.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; padding: 1px;}.soria .dijitToolbar .dijitButtonChecked,.soria .dijitToolbar .dijitToggleButtonChecked {background-color:#d8e5f8; border:1px solid #316ac5; padding: 0;}.soria .dijitToolbar .dijitButtonCheckedHover,.soria .dijitToolbar .dijitToggleButtonCheckedHover {background-color:#9abbea; border:1px solid #316ac5; padding: 0;}.soria .dijitToolbar .dijitButtonHover,.soria .dijitToolbar .dijitToggleButtonHover,.soria .dijitToolbar .dijitDropDownButtonHover,.soria .dijitToolbar .dijitComboButton .dijitButtonContentsHover,.soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {border: 1px solid #316ac5; padding: 0; background-color:#9abbea;}.soria .dijitToolbar label {padding: 3px 3px 0 6px;}.dj_ie .soria .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,.dj_ie .soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {border: 1px #777 dotted !important; padding: 0;}.soria .dijitDialog {background: #eee; border: 1px solid #cbcbcb; -webkit-box-shadow: 0 5px 10px #adadad; padding: 0;}.soria .dijitDialog .dijitDialogTitle {font-weight: bold; padding: 0 4px; font-size: 0.9em; color: #243C5F;}.soria .dijitDialog .dijitDialogPaneContent {background: #ffffff; border-top: 1px solid #b1badf; padding:10px;}.soria .dijitDialogTitleBar {background: #fafafa url("images/titleBar.png") repeat-x top left; padding: 5px 6px 3px 6px; outline:0;}.soria .dijitDialogCloseIcon {background-image: url("images/spriteRoundedIconsSmallBl.png"); background-repeat: no-repeat; background-position: -60px 0; position: absolute; vertical-align: middle; right: 6px; top: 4px; height: 15px; width: 15px;}.dj_ie6 .soria .dijitDialogCloseIcon {background-image: url("images/spriteRoundedIconsSmallBl.gif");}.soria .dijitDialogCloseIconHover {background-position: -60px -15px;}.soria .dijitTooltip,.soria .dijitTooltipDialog {background: transparent;}.dijitTooltipBelow {padding-top: 10px;}.dijitTooltipAbove {padding-bottom: 10px;}.soria .dijitTooltipContainer {background-color: #fff; border:1px solid #cbcbcb; padding:0.45em;}.soria .dijitTooltipConnector {border:0; z-index: 2;}.soria .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 6px;}.soria .dijitTooltipBelow .dijitTooltipConnector {top: 0; left: 6px; background:url("images/tooltipConnectorUp.png") no-repeat top left; width:17px; height:11px;}.dj_ie .soria .dijitTooltipBelow .dijitTooltipConnector {background-image: url("images/tooltipConnectorUp.gif");}.soria .dijitTooltipAbove .dijitTooltipConnector {bottom: 0; left: 6px; background:url("images/tooltipConnectorDown.png") no-repeat top left; width:17px; height:11px;}.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector {background-image: url("images/tooltipConnectorDown.gif");}.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector {background-image: url("images/tooltipConnectorDown.gif");}.dj_ie6 .soria .dijitTooltipAbove .dijitTooltipConnector {bottom: -5px;}.soria .dijitTooltipLeft {padding-right: 10px;}.soria .dijitTooltipLeft .dijitTooltipConnector {right: 0; background:url("images/tooltipConnectorRight.png") no-repeat top left; width:11px; height:17px;}.dj_ie .soria .dijitTooltipLeft .dijitTooltipConnector {background-image: url("images/tooltipConnectorRight.gif");}.soria .dijitTooltipRight {padding-left: 10px;}.soria .dijitTooltipRight .dijitTooltipConnector {left: 0; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:11px; height:17px;}.dj_ie .soria .dijitTooltipRight .dijitTooltipConnector {background-image: url("images/tooltipConnectorLeft.gif");}.soria .dijitMenu,.soria .dijitMenuBar {border: 1px solid #cbcbcb; margin: 0; padding: 0; background-color: #fff;}.soria .dijitBorderContainer .dijitMenuBar {border:1px solid #B1BADF;}.soria .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.soria .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.soria .dijitMenuPreviousButton, .soria .dijitMenuNextButton {font-style: italic;}.soria .dijitMenuItem TD {padding:1px;}.soria .dijitMenuPassive .dijitMenuItemHover,.soria .dijitComboBoxMenu .dijitMenuItemHover,.soria .dijitMenuItemSelected {background-color: #d9e6f9; color: #243C5F;}.soria .dijitMenuItemIcon {width: 15px; height: 15px;}.soria .dijitMenuExpand {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-position: -30px top;}.dj_ie6 .soria .dijitMenuExpand {background-image: url("images/spriteRoundedIconsSmall.gif");}.soria .dijitMenuSeparator {height: 1px;}.soria .dijitMenuSeparatorTop {border-bottom: 1px solid #fff;}.soria .dijitMenuSeparatorBottom {border-top: 1px solid #8ba0bd;}.soria .dijitCheckedMenuItem .dijitMenuItemIcon {background-image: url("images/spriteCheckbox.gif"); background-position: -80px;}.soria .dijitCheckedMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.soria .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("images/spriteRadio.gif"); background-position: -80px;}.soria .dijitRadioMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.soria .dijitToolbar .dijitToolbarSeparator {background: url("../../icons/images/editorIconsEnabled.png");}.soria .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.soria .dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIconSep {background-position: 0;}.dijitEditorIconSave {background-position: -18px;}.dijitEditorIconPrint {background-position: -36px;}.dijitEditorIconCut {background-position: -54px;}.dijitEditorIconCopy {background-position: -72px;}.dijitEditorIconPaste {background-position: -90px;}.dijitEditorIconDelete {background-position: -108px;}.dijitEditorIconCancel {background-position: -126px;}.dijitEditorIconUndo {background-position: -144px;}.dijitEditorIconRedo {background-position: -162px;}.dijitEditorIconSelectAll {background-position: -180px;}.dijitEditorIconBold {background-position: -198px;}.dijitEditorIconItalic {background-position: -216px;}.dijitEditorIconUnderline {background-position: -234px;}.dijitEditorIconStrikethrough {background-position: -252px;}.dijitEditorIconSuperscript {background-position: -270px;}.dijitEditorIconSubscript {background-position: -288px;}.dijitEditorIconJustifyCenter {background-position: -306px;}.dijitEditorIconJustifyFull {background-position: -324px;}.dijitEditorIconJustifyLeft {background-position: -342px;}.dijitEditorIconJustifyRight {background-position: -360px;}.dijitEditorIconIndent {background-position: -378px;}.dijitEditorIconOutdent {background-position: -396px;}.dijitEditorIconListBulletIndent {background-position: -414px;}.dijitEditorIconListBulletOutdent {background-position: -432px;}.dijitEditorIconListNumIndent {background-position: -450px;}.dijitEditorIconListNumOutdent {background-position: -468px;}.dijitEditorIconTabIndent {background-position: -486px;}.dijitEditorIconLeftToRight {background-position: -504px;}.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir {background-position: -522px;}.dijitEditorIconBackColor {background-position: -540px;}.dijitEditorIconForeColor {background-position: -558px;}.dijitEditorIconHiliteColor {background-position: -576px;}.dijitEditorIconNewPage {background-position: -594px;}.dijitEditorIconInsertImage {background-position: -612px;}.dijitEditorIconInsertTable {background-position: -630px;}.dijitEditorIconSpace {background-position: -648px;}.dijitEditorIconInsertHorizontalRule {background-position: -666px;}.dijitEditorIconInsertOrderedList {background-position: -684px;}.dijitEditorIconInsertUnorderedList {background-position: -702px;}.dijitEditorIconCreateLink {background-position: -720px;}.dijitEditorIconUnlink {background-position: -738px;}.dijitEditorIconViewSource {background-position: -756px;}.dijitEditorIconRemoveFormat {background-position: -774px;}.dijitEditorIconFullScreen {background-position: -792px;}.dijitEditorIconWikiword {background-position: -810px;} .dijitColorPalette {border:1px solid #cbcbcb; background:#fff; -moz-border-radius: 0 !important;} \ No newline at end of file
+.dijitReset {margin:0; border:0; padding:0; font: inherit; line-height:normal; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {position: absolute; visibility: hidden;}.dijitHidden * {visibility: hidden !important;}.dijitVisible {display: block !important; position: relative; visibility: visible;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important; border-collapse: separate;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: -10000px !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; -webkit-overflow-scrolling: touch;}.dijitPositionOnly {padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important;}.dijitNonPositionOnly {float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important;}.dijitBackgroundIframe {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0;}.dijitDisplayNone {display:none !important;}.dijitContainer {overflow: hidden;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner {background: no-repeat center; width: 12px; height: 12px; direction: ltr;}.dijitLeft {background-position:left top; background-repeat:no-repeat;}.dijitStretch {white-space:nowrap; background-repeat:repeat-x;}.dijitRight {#display:inline; background-position:right top; background-repeat:no-repeat;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.dijitButtonNode {border:1px solid gray; margin:0; line-height:normal; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap;}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {line-height:inherit;}.dijitTextBox .dijitButtonNode {border-width: 0;}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_ie .dijitButtonNode {zoom: 1;}.dj_ie .dijitButtonNode button {overflow: visible;}div.dijitArrowButton {float: right;}.dijitTextBox {border: solid black 1px; #overflow: hidden; width: 15em; vertical-align: middle;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_safari .dijitTextBoxDisabled input {color: #B0B0B0;}.dj_safari textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .dj_gecko .dijitTextBoxDisabled input {-moz-user-input: none;}.dijitPlaceHolder {color: #AAAAAA; font-style: italic; position: absolute; top: 0; left: 0; #filter: ""; white-space: nowrap; pointer-events: none;}.dijitTimeTextBox {width: 8em;}.dijitTextBox input:focus {outline: none;}.dijitTextBoxFocused {outline: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !important; direction: ltr !important; text-align: left !important; height: auto !important; #text-indent: 0 !important; #letter-spacing: -5em !important; #text-align: right !important;}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox {line-height: 100%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.dj_ie .dijitToolbar .dijitComboBox {vertical-align: middle;}.dijitTextBox .dijitSpinnerButtonContainer {width: 1em; position: relative !important; overflow: hidden;}.dijitSpinner .dijitSpinnerButtonInner {width:1em; visibility:hidden !important; overflow-x:hidden;}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0.3em !important; padding-right: 0.3em !important; margin-left: 0.3em !important; margin-right: 0.3em !important; width: 1.4em !important;}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0 !important; margin-right: 0 !important; width: 2em !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {padding: 0; position: absolute !important; right: 0; float: none; height: 50%; width: 100%; bottom: auto; left: 0; right: auto;}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: auto;}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {overflow: visible !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {top: 50%; border-top-width: 1px !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {#bottom: 50%; top: 0;}.dijitSpinner .dijitArrowButtonInner {margin: auto; overflow-x: hidden; height: 100% !important;}.dj_iequirks .dijitSpinner .dijitArrowButtonInner {height: auto !important;}.dijitSpinner .dijitArrowButtonInner .dijitInputField {-moz-transform: scale(0.5); -moz-transform-origin: center top; -webkit-transform: scale(0.5); -webkit-transform-origin: center top; -o-transform: scale(0.5); -o-transform-origin: center top; transform: scale(0.5); transform-origin: left top; padding-top: 0; padding-bottom: 0; padding-left: 0 !important; padding-right: 0 !important; width: 100%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput {padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden;}.dijitCheckBox input,.dijitRadio input {margin: 0; padding: 0; display: block;}.dijitCheckBoxInput {opacity: 0;}.dj_ie .dijitCheckBoxInput {filter: alpha(opacity=0);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.dijitProgressBarEmpty {position:relative;overflow:hidden; border:1px solid black; z-index:0;}.dijitProgressBarFull {position:absolute; overflow:hidden; z-index:-1; top:0; width:100%;}.dj_ie6 .dijitProgressBarFull {height:1.6em;}.dijitProgressBarTile {position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto;}.dijitProgressBarLabel {display:block; position:static; width:100%; text-align:center; background-color:transparent !important;}.dijitTooltip {position: absolute; z-index: 2000; display: block; left: 0; top: -10000px; overflow: visible;}.dijitTooltipContainer {border: solid black 2px; background: #b8b5b5; color: black; font-size: small;}.dijitTooltipFocusNode {padding: 2px 2px 2px 2px;}.dijitTooltipConnector {position: absolute;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane {position: absolute !important; z-index: 2;}.dijitBorderContainer > .dijitTextArea {resize: none;}.dijitGutter {position: absolute; font-size: 1px;}.dijitSplitter {position: absolute; overflow: hidden; z-index: 10; background-color: #fff; border-color: gray; border-style: solid; border-width: 0;}.dj_ie .dijitSplitter {z-index: 1;}.dijitSplitterActive {z-index: 11 !important;}.dijitSplitterCover {position:absolute; z-index:-1; top:0; left:0; width:100%; height:100%;}.dijitSplitterCoverActive {z-index:3 !important;}.dj_ie .dijitSplitterCover {background: white; opacity: 0;}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover {filter: alpha(opacity=0);}.dijitSplitterH {height: 7px; border-top:1px; border-bottom:1px; cursor: row-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0;}.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {overflow:hidden; position:absolute; top:49%;}.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {position:absolute; left:49%;}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV {font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto; -webkit-overflow-scrolling: touch;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitFieldset {border: 1px solid gray;}.dijitTitlePaneTitle, .dijitFieldsetTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {cursor: default;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {display: inline; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {display: none;}.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {display: none !important;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.dijitColorPalette .dijitPaletteTable {padding: 2px 3px 3px 3px; position: relative; overflow: hidden; outline: 0; border-collapse: separate;}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable {padding: 0; margin: 2px 3px 3px 3px;}.dijitColorPalette .dijitPaletteCell {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !important;}.dijitAccordionContainer {border:1px solid #b7b7b7; border-top:0 !important;}.dijitAccordionTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitAccordionTitleSelected {cursor: default;}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown {display: none; font-size: 0.65em; font-weight: normal !important;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer table {width: auto; clear: both;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarMonthContainer {text-align: center;}.dijitCalendarDecrementArrow {float: left;}.dijitCalendarIncrementArrow {float: right;}.dijitCalendarYearLabel {white-space: nowrap;}.dijitCalendarNextYear {margin:0 0 0 0.55em;}.dijitCalendarPreviousYear {margin:0 0.55em 0 0;}.dijitCalendarIncrementControl {vertical-align: middle;}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitCalendarDisabledDate {color: gray; text-decoration: line-through; cursor: default;}.dijitSpacer {position: relative; height: 1px; overflow: hidden; visibility: hidden;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.dijitMenu {border:1px solid black; background-color:white;}.dijitMenuTable {border-collapse:collapse; border-width:0; background-color:white;}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden;}.dijitMenuItem {text-align: left; white-space: nowrap; padding:.1em .2em; cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_a11y .dijitMenuExpandA11y {display: inline;}.dijitMenuSeparator td {border: 0; padding: 0;}.dijitMenuSeparatorTop {height: 50%; margin: 0; margin-top:3px; font-size: 1px;}.dijitMenuSeparatorBottom {height: 50%; margin: 0; margin-bottom:3px; font-size: 1px;}.dijitMenuItemIconChar {display: none; visibility: hidden;}.dj_a11y .dijitMenuItemIconChar {display: inline;}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar {visibility: visible;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}div.dijitTabDisabled, .dj_ie div.dijitTabDisabled {cursor: auto;}.dijitTab {position:relative; cursor:pointer; -webkit-tap-highlight-color: transparent; white-space:nowrap; z-index:3;}.dijitTab * {vertical-align: middle;}.dijitTabChecked {cursor: default;}.dijitTabContainerTop-tabs .dijitTab {top: 1px;}.dijitTabContainerBottom-tabs .dijitTab {top: -1px;}.dijitTabContainerLeft-tabs .dijitTab {left: 1px;}.dijitTabContainerRight-tabs .dijitTab {left: -1px;}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab {display:inline-block; #zoom: 1; #display:inline;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto; -webkit-tap-highlight-color: transparent; -moz-user-select: none;}.dijitTreeContainer {float: left;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dj_ie .dijitTreeLabel:focus {outline: 1px dotted black;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 4px;}.dijitDialog {position: absolute; z-index: 999; overflow: hidden;}.dijitDialogTitleBar {cursor: move;}.dijitDialogFixed .dijitDialogTitleBar {cursor:default;}.dijitDialogCloseIcon {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitDialogPaneContent {-webkit-overflow-scrolling: touch;}.dijitDialogUnderlayWrapper {position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important;}.dijitDialogUnderlay {background: #eee; opacity: 0.5;}.dj_ie .dijitDialogUnderlay {filter: alpha(opacity=50);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {border:4px solid #000; height:8px; width:8px;}.dijitSliderImageHandleV {top:-8px; right: -50%;}.dijitSliderImageHandleH {left:50%; top:-5px; vertical-align:top;}.dijitSliderBar {border-style:solid; border-color:black; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSliderBarContainerV {position:relative; height:100%; z-index:1;}.dijitSliderBarContainerH {position:relative; z-index:1;}.dijitSliderBarH {height:4px; border-width:1px 0;}.dijitSliderBarV {width:4px; border-width:0 1px;}.dijitSliderProgressBar {background-color:red; z-index:1;}.dijitSliderProgressBarV {position:static !important; height:0; vertical-align:top; text-align:left;}.dijitSliderProgressBarH {position:absolute !important; width:0; vertical-align:middle; overflow:visible;}.dijitSliderRemainingBar {overflow:hidden; background-color:transparent; z-index:1;}.dijitSliderRemainingBarV {height:100%; text-align:left;}.dijitSliderRemainingBarH {width:100% !important;}.dijitSliderBumper {overflow:hidden; z-index:1;}.dijitSliderBumperV {width:4px; height:8px; border-width:0 1px;}.dijitSliderBumperH {width:8px; height:4px; border-width:1px 0;}.dijitSliderBottomBumper,.dijitSliderLeftBumper {background-color:red;}.dijitSliderTopBumper,.dijitSliderRightBumper {background-color:transparent;}.dijitSliderDecoration {text-align:center;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%; white-space: nowrap;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_a11y .dijitSliderButtonInner {visibility:visible !important;}.dijitSliderButtonContainer {text-align:center; height:0;}.dijitSliderButtonContainer * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSlider .dijitButtonNode {padding:0; display:block;}.dijitRuleContainer {position:relative; overflow:visible;}.dijitRuleContainerV {height:100%; line-height:0; float:left; text-align:left;}.dj_opera .dijitRuleContainerV {line-height:2%;}.dj_ie .dijitRuleContainerV {line-height:normal;}.dj_gecko .dijitRuleContainerV {margin:0 0 1px 0;}.dijitRuleMark {position:absolute; border:1px solid black; line-height:0; height:100%;}.dijitRuleMarkH {width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important;}.dijitRuleLabelContainer {position:absolute;}.dijitRuleLabelContainerH {text-align:center; display:inline-block;}.dijitRuleLabelH {position:relative; left:-50%;}.dijitRuleLabelV {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}.dijitRuleMarkV {height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0;}.dj_ie .dijitRuleLabelContainerV {margin-top:-.55em;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.dijitToolbarSeparator {height: 18px; width: 5px; padding: 0 1px; margin: 0;}.dijitIEFixedToolbar {position:absolute; top: expression(eval((document.documentElement||document.body).scrollTop));}.dijitEditor {display: block;}.dijitEditorDisabled,.dijitEditorReadOnly {color: gray;}.dijitTimePicker {background-color: white;}.dijitTimePickerItem {cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitTimePickerItemHover {background-color:gray; color:white;}.dijitTimePickerItemSelected {font-weight:bold; color:#333; background-color:#b7cdee;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dijitTimePickerItemInner {text-align:center; border:0; padding:2px 8px 2px 8px;}.dijitTimePickerTick,.dijitTimePickerMarker {border-bottom:1px solid gray;}.dijitTimePicker .dijitDownArrowButton {border-top: none !important;}.dijitTimePickerTick {color:#CCC;}.dijitTimePickerMarker {color:black; background-color:#CCC;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitNumberTextBox {text-align: left; direction: ltr;}.dijitNumberTextBox .dijitInputInner {text-align: inherit;}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner {text-align: right;}.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {padding-right: 1px !important;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.dijitSelectFixedWidth .dijitButtonContents {width: 100%;}.dijitSelectMenu .dijitMenuItemIcon {display:none;}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {position: static;}.dijitSelectLabel *{vertical-align: baseline;}.dijitSelectSelectedOption * {font-weight: bold;}.dijitSelectMenu {border-width: 1px;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.dijitFocused .dijitMenuItemShortcutKey {text-decoration: underline;}.dijitIconSave,.dijitIconPrint,.dijitIconCut,.dijitIconCopy,.dijitIconClear,.dijitIconDelete,.dijitIconUndo,.dijitIconEdit,.dijitIconNewTask,.dijitIconEditTask,.dijitIconEditProperty,.dijitIconTask,.dijitIconFilter,.dijitIconConfigure,.dijitIconSearch,.dijitIconApplication,.dijitIconBookmark,.dijitIconChart,.dijitIconConnector,.dijitIconDatabase,.dijitIconDocuments,.dijitIconMail,.dijitLeaf,.dijitIconFile,.dijitIconFunction,.dijitIconKey,.dijitIconPackage,.dijitIconSample,.dijitIconTable,.dijitIconUsers,.dijitFolderClosed,.dijitIconFolderClosed,.dijitFolderOpened,.dijitIconFolderOpen,.dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled.png"); width: 16px; height: 16px;}.dj_ie6 .dijitIconSave,.dj_ie6 .dijitIconPrint,.dj_ie6 .dijitIconCut,.dj_ie6 .dijitIconCopy,.dj_ie6 .dijitIconClear,.dj_ie6 .dijitIconDelete,.dj_ie6 .dijitIconUndo,.dj_ie6 .dijitIconEdit,.dj_ie6 .dijitIconNewTask,.dj_ie6 .dijitIconEditTask,.dj_ie6 .dijitIconEditProperty,.dj_ie6 .dijitIconTask,.dj_ie6 .dijitIconFilter,.dj_ie6 .dijitIconConfigure,.dj_ie6 .dijitIconSearch,.dj_ie6 .dijitIconApplication,.dj_ie6 .dijitIconBookmark,.dj_ie6 .dijitIconChart,.dj_ie6 .dijitIconConnector,.dj_ie6 .dijitIconDatabase,.dj_ie6 .dijitIconDocuments,.dj_ie6 .dijitIconMail,.dj_ie6 .dijitLeaf,.dj_ie6 .dijitIconFile,.dj_ie6 .dijitIconFunction,.dj_ie6 .dijitIconKey,.dj_ie6 .dijitIconPackage,.dj_ie6 .dijitIconSample,.dj_ie6 .dijitIconTable,.dj_ie6 .dijitIconUsers,.dj_ie6 .dijitFolderClosed,.dj_ie6 .dijitIconFolderClosed,.dj_ie6 .dijitFolderOpened,.dj_ie6 .dijitIconFolderOpen,.dj_ie6 .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled8bit.png");}.dijitDisabled .dijitIconSave,.dijitDisabled .dijitIconPrint,.dijitDisabled .dijitIconCut,.dijitDisabled .dijitIconCopy,.dijitDisabled .dijitIconClear,.dijitDisabled .dijitIconDelete,.dijitDisabled .dijitIconUndo,.dijitDisabled .dijitIconEdit,.dijitDisabled .dijitIconNewTask,.dijitDisabled .dijitIconEditTask,.dijitDisabled .dijitIconEditProperty,.dijitDisabled .dijitIconTask,.dijitDisabled .dijitIconFilter,.dijitDisabled .dijitIconConfigure,.dijitDisabled .dijitIconSearch,.dijitDisabled .dijitIconApplication,.dijitDisabled .dijitIconBookmark,.dijitDisabled .dijitIconChart,.dijitDisabled .dijitIconConnector,.dijitDisabled .dijitIconDatabase,.dijitDisabled .dijitIconDocuments,.dijitDisabled .dijitIconMail,.dijitDisabled .dijitLeaf,.dijitDisabled .dijitIconFile,.dijitDisabled .dijitIconFunction,.dijitDisabled .dijitIconKey,.dijitDisabled .dijitIconPackage,.dijitDisabled .dijitIconSample,.dijitDisabled .dijitIconTable,.dijitDisabled .dijitIconUsers,.dijitDisabled .dijitFolderClosed,.dijitDisabled .dijitIconFolderClosed,.dijitDisabled .dijitFolderOpened,.dijitDisabled .dijitIconFolderOpen,.dijitDisabled .dijitIconError {background-image: url("../../icons/images/commonIconsObjActDisabled.png");}.dijitIconSave {background-position: 0;}.dijitIconPrint {background-position: -16px;}.dijitIconCut {background-position: -32px;}.dijitIconCopy {background-position: -48px;}.dijitIconClear {background-position: -64px;}.dijitIconDelete {background-position: -80px;}.dijitIconUndo {background-position: -96px;}.dijitIconEdit {background-position: -112px;}.dijitIconNewTask {background-position: -128px;}.dijitIconEditTask {background-position: -144px;}.dijitIconEditProperty {background-position: -160px;}.dijitIconTask {background-position: -176px;}.dijitIconFilter {background-position: -192px;}.dijitIconConfigure {background-position: -208px;}.dijitIconSearch {background-position: -224px;}.dijitIconError {background-position: -496px;} .dijitIconApplication {background-position: -240px;}.dijitIconBookmark {background-position: -256px;}.dijitIconChart {background-position: -272px;}.dijitIconConnector {background-position: -288px;}.dijitIconDatabase {background-position: -304px;}.dijitIconDocuments {background-position: -320px;}.dijitIconMail {background-position: -336px;}.dijitIconFile, .dijitLeaf {background-position: -352px;}.dijitIconFunction {background-position: -368px;}.dijitIconKey {background-position: -384px;}.dijitIconPackage{background-position: -400px;}.dijitIconSample {background-position: -416px;}.dijitIconTable {background-position: -432px;}.dijitIconUsers {background-position: -448px;}.dijitIconFolderClosed, .dijitFolderClosed {background-position: -464px;}.dijitIconFolderOpen, .dijitFolderOpened {background-position: -480px;}.dijitIconLoading {background: url("../../icons/images/loadingAnimation.gif") no-repeat; height: 20px; width: 20px;}.soria .dojoDndItemOver {background-image: url("images/treeHover.png");}.soria .dojoDndItemAnchor,.soria .dojoDndItemSelected {background-color: #B8CBEC;}.soria table.dojoDndAvatar {-moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}.soria .dojoDndAvatar td {border: none;}.soria .dojoDndAvatar tr {border: none;}.soria .dojoDndAvatarHeader td {height: 20px; padding: 0 0 0 21px;}.soria .dojoDndAvatarItem td {padding: 2px;}.soria.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoMove.png"); background-repeat: no-repeat; background-position: 2px center;}.soria.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.soria.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndMove.png"); background-repeat: no-repeat; background-position: 2px center;}.soria.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.soria .dijitContentPane {padding: 0;}.soria .dijitTabContainerTop-dijitContentPane,.soria .dijitTabContainerLeft-dijitContentPane,.soria .dijitTabContainerBottom-dijitContentPane,.soria .dijitTabContainerRight-dijitContentPane,.soria .dijitAccordionContainer-dijitContentPane {background-color: #fff; padding: 5px;}.soria .dijitSplitContainer-dijitContentPane,.soria .dijitBorderContainer-dijitContentPane {background-color: #fff; padding: 5px;} .soria .dijitTabContainer .tabStripRBtn {margin-right: 21px;} .soria .dijitTabContainer .tabStripLBtn {margin-left: 21px;} .soria .nowrapTabStrip .dijitTab {top: 2px;} .soria .dijitTabContainerBottom-tabs .dijitTab {top: -1px; bottom: 2px;}.soria .dijitTabPaneWrapper {background:#fff; border:1px solid #B1BADF; margin: 0; padding-left: 0;}.soria .dijitTab {padding:4px 6px 2px 4px; background: url("images/tabContainerSprite.gif") repeat-x 0 -351px; position: relative; line-height:normal; margin:0 2px 0 0; color: #243C5F; border: 1px #8BA0BD solid; border-bottom: 1px #B1BADF solid;}.soria .dijitTabHover {color: #243C5F; background: url("images/tabContainerSprite.gif") repeat-x 0 -201px;}.soria .dijitTabChecked{background: url("images/tabContainerSprite.gif") repeat-x 0 -51px; color: #243C5F !important;}.soria .dijitTabListWrapper {z-index: 10;}.soria .dijitTabContainerTabListNested {background: #D9E9F9; border: none;}.soria .dijitTabContainerTabListNested .dijitTab {background: none; border: none; top: 0;}.soria .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.soria .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: underline; font-weight: bold;}.soria .dijitTabContainerSpacerNested .dijitTabSpacer {height: 0;}.soria .dijitTabPaneWrapperNested {border: none;}.soria .dijitTabCloseButton {width: 15px; height: 15px; background: url("images/spriteRoundedIconsSmall.png") no-repeat -60px top; margin-top: -1px;}.dj_ie6 .soria .dijitTabCloseButton {background: url("images/spriteRoundedIconsSmall.gif") no-repeat -60px top;}.soria .dijitTabCloseButtonHover {background: url("images/spriteRoundedIconsSmall.png") no-repeat -60px -15px;}.dj_ie6 .soria .dijitTabCloseButtonHover {background: url("images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px;}.soria .dijitTabContainerTop-tabs {border-color: #B1BADF; padding-left: 3px;}.soria .dijitTabContainerTop-tabs .dijitTab {border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0;}.soria .dijitTabContainerTopNoStrip {padding-top: 3px;}.soria .dijitTabContainerTop-container {border-top: none;}.soria .dijitTabContainerTop .dijitTabListWrapper {border-bottom: none;}.soria .dijitTabContainerTop-tabs .dijitTab {top: 1px;}.soria .dijitTabContainerTop-tabs .dijitTabChecked {border-bottom-color: #94b4e6;}.soria .dijitTabContainerTopStrip {border: 1px solid #B1BADF; margin-top: 1px; padding-top: 1px; background: #F0F4FC;}.soria .dijitTabContainerTopStrip .dijitTabContainerTop-tabs {padding-left: 3px;}.soria .dijitTabContainerNested .dijitTabListWrapper {height: auto;}.soria .dijitTabContainerBottom-tabs {margin-top: -1px; padding-left: 3px; border-top: 1px solid #B1BADF;}.soria .dijitTabContainerBottom .dijitTabListWrapper {border-top: none; padding-top: 1px; padding-bottom: 1px; float: left;}.soria .dijitTabContainerBottom-tabs .dijitTab {border-bottom: none; border-top: 1px solid #B1BADF; border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; padding-top: 3px; padding-bottom: 3px; background: url("images/tabBottomEnabledC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-tabs .dijitTabHover {background: url("images/tabBottomHoverC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-tabs .dijitTabChecked {border-top-color:#94b4e6; background: url("images/tabBottomActiveC.gif") repeat-x bottom left;}.soria .dijitTabContainerBottom-container {border-bottom: none;}.soria .dijitTabContainerBottomStrip {padding-bottom: 2px; border: 1px solid #B1BADF;}.soria .dijitTabContainerBottomStrip {background: #F0F4FC;}.soria .dijitTabContainerBottom-spacer,.soria .dijitTabContainerTop-spacer {height: 2px; border: 1px solid #8ba0bd; background: #94b4e6;}.soria .dijitTabContainerTop-spacer {border-top: none;}.soria .dijitTabContainerBottom-spacer {border-bottom: none;}.soria .dijitTabContainerRight-tabs {height: 100%; border-color: #ccc; padding-top: 3px;}.soria .dijitTabContainerRight-tabs .dijitTab {border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-bottom: none; border-left: 1px solid #B1BADF; border-bottom: 1px solid #B1BADF !important; padding: 4px 6px 2px 8px;}.soria .dijitTabContainerRight-tabs .dijitTabChecked {border-left-color: #94b4e6; background: url("images/tabRightChecked.gif") no-repeat left top !important;}.soria .dijitTabContainerRight-container {border-right: none;}.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTab,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTab {border-bottom: solid #B1BADF 1px; margin-bottom: -1px;}.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabChecked,.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover,.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover {border-bottom: solid #94b4e6 1px; margin-bottom: -1px;}.soria .dijitTabContainerRightStrip {padding-right: 2px; border: 1px solid #B1BADF; background: #F0F4FC; border-left: none;}.soria .dijitTabContainerLeft-tabs {border-color: #ccc; padding-top: 3px; height: 100%;}.soria .dijitTabContainerLeft-tabs .dijitTab {border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-right: 1px solid #B1BADF; border-bottom: 1px solid #B1BADF;}.soria .dijitTabContainerLeft-tabs .dijitTabChecked {border-right: 1px solid #94b4e6; background: url("images/tabLeftChecked.gif") no-repeat right top;}.soria .dijitTabContainerLeft-container {border-left: none;}.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTab {border-bottom: solid #B1BADF 1px; margin-bottom: -1px;}.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTab,.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTab,.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTab {border-bottom: solid #94b4e6 1px; margin-bottom: -1px;}.soria .dijitTabContainerLeftStrip {padding-left: 2px; border: 1px solid #B1BADF; background: #F0F4FC; border-right: none;}.soria .dijitTabContainerLeft-tabs .dijitTab,.soria .dijitTabContainerRight-tabs .dijitTab {margin: 1px 0;}.soria .dijitTabContainerLeft-spacer,.soria .dijitTabContainerRight-spacer {width: 2px; border: 1px solid #8ba0bd; background: #94b4e6;}.soria .dijitTabContainerLeft-spacer {border-left: none;}.soria .dijitTabContainerRight-spacer {border-right: none;}.soria .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {border-left: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.soria .dijitTabContainer .tabStripButton {margin-right: 0;}.soria .dijitTabContainer .tabStripButton-top {margin-top: 1px;}.dj_ie6 .soria .tabStripButton .dijitTabContent,.dj_ie7 .soria .tabStripButton .dijitTabContent {padding-top: 7px;}.dj_ie6 .soria .tabStrip-disabled .tabStripButton .dijitTabContent,.dj_ie7 .soria .tabStrip-disabled .tabStripButton .dijitTabContent {padding-top: 6px;}.soria .dijitTabContainer .tabStripButton-bottom {background: transparent url("images/tabBottomEnabledSpriteLR.gif") no-repeat scroll left bottom; border-bottom: medium none; border-top: 1px solid #B1BADF;}.soria .dijitTabContainer .tabStripButton-bottom .dijitTab {background: transparent url("images/tabBottomEnabledSpriteLR.gif") no-repeat scroll right bottom;}.soria .dijitTabStripIcon {height: 14px; width: 14px; background: url("images/spriteRoundedIconsSmall.png") no-repeat left top ;}.dj_ie6 .soria .dijitTabStripIcon {background-image: url("images/spriteRoundedIconsSmall.gif");}.soria .dijitTabStripSlideRightIcon {background-position: -30px top;}.soria .dijitTabStripMenuIcon {background-position: -15px top;}.soria .dijitAccordionContainer {border-color: #b1badf; background-color: #fff;}.soria .dijitAccordionTitle {background:#fafafa url("images/titleBar.png") repeat-x top left; border-top: 1px solid #b9bbdd; padding: 5px 4px 6px 8px; font-size: 0.9em; font-weight: bold; color: #373941;}.soria .dijitAccordionTitleSelected {background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x; font-weight: bold; border-top: 1px solid #b9bbdd; border-bottom: 1px solid #b9bbdd; padding: 5px 4px 5px 8px; color: #243C5F;}.soria .dijitAccordionArrow {background:url("images/spriteRoundedIconsSmallBl.gif") no-repeat -30px top; width:15px; height:15px; margin-top:-1px;}.soria .dijitAccordionTitleSelected .dijitAccordionArrow {background:url("images/spriteRoundedIconsSmallBl.gif") no-repeat -15px top; margin-top:-1px;}.soria .dijitAccordionText {margin-left: 4px; margin-right: 4px;}.soria .dijitSplitContainerSizerH {background:url("images/splitContainerSizerV.png") repeat-y #cddef4; border:0; border-left:0 solid #436496; border-right:0 solid #436496; width:5px;}.soria .dijitSplitContainerSizerH .thumb {background:url("images/splitContainerSizerV-thumb.png") no-repeat #ccc; left:1px; width:2px; height:19px;}.soria .dijitSplitContainerSizerV {background:url("images/splitContainerSizerH.png") repeat-x #cddef4; border:0; border-top:0 solid #436496; border-bottom:0 solid #436496; height:2px;}.soria .dijitSplitContainerSizerV .thumb {background:url("images/splitContainerSizerH-thumb.png") no-repeat #ccc; top:1px; width:19px; height:5px;}.soria .dijitBorderContainer {background-color: #e1ebfb; padding: 5px;}.soria .dijitSplitContainer-child,.soria .dijitBorderContainer-child {border: 1px #b1badf solid;}.soria .dijitBorderContainer-dijitTabContainerTop,.soria .dijitBorderContainer-dijitTabContainerBottom,.soria .dijitBorderContainer-dijitTabContainerLeft,.soria .dijitBorderContainer-dijitTabContainerRight {border: none;}.soria .dijitBorderContainer-dijitBorderContainer {border: none; padding: 0;}.soria .dijitSplitterH,.soria .dijitGutterH {background: #E1EBFB; border:0; border-left:0 solid #d3d3d3; border-right:0 solid #d3d3d3; height:5px;}.soria .dijitSplitterH .dijitSplitterThumb {background:#B0B0B0 none; height:1px; top:2px; width:19px;}.soria .dijitSplitterV,.soria .dijitGutterV {background: #E1EBFB; border:0; border-top:0 solid #d3d3d3; border-bottom:0 solid #d3d3d3; width:5px;}.soria .dijitSplitterV .dijitSplitterThumb {background:#B0B0B0 none; height:19px; left:2px; width:1px;}.soria .dijitSplitterActive {font-size: 1px; background-image: none; background-color: #aaa; -moz-opacity: 0.6; opacity: 0.6; filter: Alpha(Opacity=60); margin: 0;}.soria .dijitInputContainer input {margin: 0 0.1em;}.soria .dijitSelect .dijitButtonContents,.soria .dijitSelect,.soria .dijitTextBox,.soria .dijitTextArea {background:#fff url("images/validationInputBg.png") repeat-x top left; #background:#fff url("images/validationInputBg.gif") repeat-x top left;}.soria .dijitSelect,.soria .dijitTextBox,.soria .dijitTextArea {border:1px solid #8ba0bd;}.soria .dijitSelect .dijitArrowButton,.soria .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.soria .dijitSelect .dijitButtonContents,.soria .dijitTextBox .dijitButtonNode {border-color: #8ba0bd;}.soria .dijitSelectFocused,.soria .dijitTextBoxFocused,.soria .dijitTextAreaFocused {border-color:#406b9b;}.soria .dijitSelectFocused TD,.soria .dijitTextBoxFocused .dijitButtonNode,.soria .dijitSpinner .dijitUpArrowButtonActive,.soria .dijitSpinner .dijitDownArrowButtonActive {border-color:#8ba0bd;}.soria .dijitSpinnerFocused .dijitDownArrowButton,.soria .dijitSpinner .dijitUpArrowButtonActive,.soria .dijitSpinner .dijitDownArrowButtonActive {border-top-color:#8ba0bd;}.soria .dijitError {border-color:#f3d118; background-color:#f9f7ba; background-image:none;}.soria .dijitErrorFocused {background-color:#ff6; background-image:none;}.soria .dijitValidationTextBoxError .dijitValidationIcon {width: 16px; background: transparent url("images/warning.png") no-repeat center center;}.soria .dijitComboBoxHighlightMatch {background-color:#f9f7ba;}.soria .dijitButtonNode {border: 1px solid #8ba0bd; border-bottom:1px solid #657c9c; padding: 0.1em 0.2em 0.2em 0.2em; background: #bcd5f0 url("images/buttonEnabled.png") repeat-x top left;}.soria .dijitButtonText {text-align: center; padding: 0 0.3em;}.soria .dijitInputField {padding: 0;}.soria .dijitArrowButton {color: #111;}.soria .dijitComboButton .dijitDownArrowButton {padding-right:4px;}.soria .dijitTextBoxReadOnly,.soria .dijitTextBoxReadOnly .dijitButtonNode,.soria .dijitButtonDisabled .dijitButtonNode,.soria .dijitToggleButtonDisabled .dijitButtonNode,.soria .dijitDropDownButtonDisabled .dijitButtonNode,.soria .dijitComboButtonDisabled .dijitButtonNode,.soria .dijitTextBoxDisabled,.soria .dijitTextBoxDisabled .dijitButtonNode {border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd; background:#c3d3e5 url("images/buttonDisabled.png") top repeat-x; opacity: 0.60;}.dj_ie6 .soria .dijitReadOnly input,.dj_ie7 .soria .dijitReadOnly input,.dj_ie6 .soria .dijitComboButtonDisabled .dijitButtonText,.dj_ie7 .soria .dijitComboButtonDisabled .dijitButtonText {color: #aaa;}.soria .dijitButtonHover .dijitButtonNode,.soria .dijitButtonNodeHover,.soria .dijitToggleButtonHover .dijitButtonNode,.soria .dijitDropDownButtonHover .dijitButtonNode,.soria .dijitButtonContentsHover,.soria .dijitUpArrowButtonHover,.soria .dijitDownArrowButtonHover {color:#243C5F; background:#acc5e2 url("images/buttonHover.png") repeat-x top left;}.soria .dijitButtonActive .dijitButtonNode,.soria .dijitToggleButtonActive .dijitButtonNode,.soria .dijitDropDownButtonActive .dijitButtonNode,.soria .dijitComboButtonActive .dijitButtonContents,.soria .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {border-color:#657c9c; background: #91b4e5 url("images/buttonActive.png") top left repeat-x;}.soria .dijitUpArrowButtonActive,.soria .dijitDownArrowButtonActive {background: #91b4e5 url("images/buttonActive.png") top left repeat-x;}.soria .dijitArrowButtonInner {background-image: url("images/spriteArrows.png"); background-repeat: no-repeat; background-position: 0 center; width: 11px; height: 11px;}.soria .dijitComboBox .dijitArrowButtonInner {background-position: 0 center;}.soria .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -11px center;}.soria .dijitUpArrowButton .dijitArrowButtonInner {background-position: -22px center;}.soria .dijitRightArrowButton .dijitArrowButtonInner {background-position: -33px center;}.dj_ie6 .soria .dijitArrowButtonInner {background-image: url("images/spriteArrows.gif");}.dj_ie .soria .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner {margin-top: 1px;}.soria .dijitSpinnerButtonContainer {width: auto; padding: 0;}.soria .dijitSpinner .dijitArrowButton {width: 15px;}.soria .dijitSpinner .dijitSpinnerButtonInner {width: 15px;}.soria .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding: 0;}.soria .dijitToggleButton .dijitCheckBox,.soria .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/spriteCheckbox.gif");}.soria .dijitCheckBox,.soria .dijitCheckBoxIcon {background-image: url("images/spriteCheckbox.gif"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0;}.soria .dijitCheckBox,.soria .dijitToggleButton .dijitCheckBoxIcon {background-position: -16px;}.soria .dijitCheckBoxChecked,.soria .dijitToggleButtonChecked .dijitCheckBoxIcon {background-position: 0;}.soria .dijitCheckBoxDisabled {background-position: -48px;}.soria .dijitCheckBoxCheckedDisabled {background-position: -32px;}.soria .dijitCheckBoxHover {background-position: -80px;}.soria .dijitCheckBoxCheckedHover {background-position: -64px;}.soria .dijitToggleButton .dijitRadio,.soria .dijitToggleButton .dijitRadioIcon {background-image: url("images/spriteRadio.gif");}.soria .dijitRadio,.soria .dijitRadioIcon {background-image: url("images/spriteRadio.gif"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0;}.soria .dijitRadio,.soria .dijitToggleButton .dijitRadioIcon {background-position: -16px;}.soria .dijitRadioChecked,.soria .dijitToggleButtonChecked .dijitRadioIcon {background-position: 0;}.soria .dijitRadioDisabled {background-position: -48px;}.soria .dijitRadioCheckedDisabled {background-position: -32px;}.soria .dijitRadioHover {background-position: -80px;}.soria .dijitRadioCheckedHover {background-position: -64px;}.soria .dijitSliderProgressBarH {border-color: #b1badf; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.soria .dijitSliderProgressBarV {border-color: #b1badf; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.soria .dijitSliderFocused .dijitSliderProgressBarH,.soria .dijitSliderFocused .dijitSliderLeftBumper {background-image:url("images/sliderFullFocus.png");}.soria .dijitSliderFocused .dijitSliderProgressBarV,.soria .dijitSliderFocused .dijitSliderBottomBumper {background-image:url("images/sliderFullVerticalFocus.png");}.soria .dijitSliderRemainingBarV {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y bottom left;}.soria .dijitSliderRemainingBarH {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left;}.soria .dijitSliderBar {border-style: solid; outline:1px;}.soria .dijitSliderFocused .dijitSliderBar {border-color:#8ba0bd;}.soria .dijitSliderImageHandleH {border:0; width:15px; height:18px; background:url("images/preciseSliderThumb.png") no-repeat center top;}.soria .dijitSliderFocused .dijitSliderImageHandleH {background-image:url("images/preciseSliderThumbFocus.png"); #background-image:url("images/preciseSliderThumbFocus.gif");}.dj_ie6 .soria .dijitSliderImageHandleH {background-image:url("images/preciseSliderThumb.gif");}.soria .dijitSliderLeftBumper {border-left-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.soria .dijitSliderRightBumper {background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left; border-color: #b4b4b4; border-right-width: 1px;}.soria .dijitSliderImageHandleV {border:0; width:20px; height:15px; background:url("images/sliderThumb.png") no-repeat center center; #background:url("images/sliderThumb.gif") no-repeat center center;}.soria .dijitSliderFocused .dijitSliderImageHandleV {background-image:url("images/sliderThumbFocus.png"); #background-image:url("images/sliderThumbFocus.gif");}.soria .dijitSliderBottomBumper {border-bottom-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.soria .dijitSliderTopBumper {background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y top left; border-color: #b4b4b4; border-top-width: 1px;}.soria .dijitSliderIncrementIconH,.soria .dijitSliderIncrementIconV {background:url("images/spriteRoundedIconsSmall.png") no-repeat -45px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -45px top; width:15px; height:15px;}.soria .dijitSliderIncrementIconH {background:url("images/spriteRoundedIconsSmall.png") no-repeat -30px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;}.soria .dijitSliderDecrementIconH,.soria .dijitSliderDecrementIconV {width:15px; height:15px; background:url("images/spriteRoundedIconsSmall.png") no-repeat -15px top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top;}.soria .dijitSliderDecrementIconH {background:url("images/spriteRoundedIconsSmall.png") no-repeat 0 top; #background:url("images/spriteRoundedIconsSmall.gif") no-repeat 0 top;}.soria .dijitSliderButtonInner {visibility:hidden;}.soria .dijitSliderReadOnly *,.soria .dijitSliderDisabled * {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; color: #bdbdbd;}.soria .dijitSliderReadOnly .dijitSliderDecrementIconH,.soria .dijitSliderDisabled .dijitSliderDecrementIconH {background-position: 0 -15px;}.soria .dijitSliderReadOnly .dijitSliderIncrementIconH,.soria .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -30px -15px;}.soria .dijitSliderReadOnly .dijitSliderDecrementIconV,.soria .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -15px -15px;}.soria .dijitSliderReadOnly .dijitSliderIncrementIconV,.soria .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -45px -15px;}.soria .dijitSelectError .dijitButtonContents,.soria .dijitSelectHover .dijitArrowButton,.soria .dijitSelectActive .dijitArrowButton,.soria .dijitSelectOpened .dijitArrowButton,.soria .dijitSelectDisabled .dijitArrowButton,.soria .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.soria .dijitSelect .dijitArrowButton {background: #bcd5f0 url("images/buttonEnabled.png") repeat-x top left; border-width: 0;}.soria .dijitSelectDisabled,.soria .dijitSelectDisabled TD {border-color: #b9bbdd !important; background:#c3d3e5 url("images/buttonDisabled.png") top repeat-x;}.dj_ie .soria .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.soria .dijitSelectHover,.soria .dijitSelectHover TD {border-color:#a5beda #5c7590 #5c7590 #a5beda !important; color:#000; background:#acc5e2 url("images/buttonHover.png") repeat-x top left;}.soria .dijitSelectActive,.soria .dijitSelectOpened,.soria .dijitSelectActive TD,.soria .dijitSelectOpened TD {border-color:#657c9c !important; background: #91b4e5 url("images/buttonActive.png") top left repeat-x;}.soria .dijitSelectMenu td {padding: 0;}.soria .dijitSelectMenu .dijitMenuItemLabel,.soria .dijitSelectMenu .dijitMenuArrowCell {padding: 0.1em 0.2em;}.soria .dijitTreeNode {background : url("images/treeI.gif") no-repeat; background-position : top left; background-repeat : repeat-y; zoom: 1;}.soria .dijitTreeRowHover {background-image: url("images/treeHover.png"); background-repeat: repeat; background-color: transparent !important;}.soria .dijitTreeIsLast {background: url("images/treeI_half.gif") no-repeat;}.soria .dijitTreeLabel {font-weight: normal; margin-left: 3px;}.soria .dijitTreeIsRoot {margin-left: 0; background-image: none;}.soria .dijitTreeExpando {width: 18px; height: 18px;}.soria .dijitTreeRow {padding-bottom: 2px;}.soria .dijitTreeContent {min-height: 18px; min-width: 18px; padding-left:1px;}.soria .dijitTreeRowSelected .dijitTreeLabel{background:#b8cbec;}.soria .dijitTreeExpandoOpened {background: url("images/spriteTree.gif") no-repeat -18px top;}.soria .dijitTreeExpandoClosed {background-image: url("images/spriteTree.gif");}.soria .dijitTreeExpandoLeaf {background: url("images/spriteTree.gif") no-repeat -36px top;}.soria .dijitTreeExpandoLoading {background-image: url("images/treeExpand_loading.gif");}.soria .dijitTreeIcon {width: 16px; height: 16px;}.soria .dijitFolderOpened {background: url("images/spriteDivIcons.gif") no-repeat -16px top;}.soria .dijitFolderClosed {background: url("images/spriteDivIcons.gif") no-repeat top left;}.soria .dijitLeaf {background: url("images/spriteDivIcons.gif") no-repeat -32px top;}.soria .dijitTreeNode .dojoDndItemBefore,.soria .dijitTreeNode .dojoDndItemAfter {border-bottom: none; border-top: none;}.soria .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {border-top: 2px solid #369;}.soria .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {border-bottom: 2px solid #369;}.soria .dijitProgressBar {margin:2px 0 2px 0;}.soria .dijitProgressBarEmpty{background:#fff url("images/progressBarEmpty.png") repeat-x center center; border-color: #8ba0bd;}.soria .dijitProgressBarTile{background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;}.soria .dijitProgressBarFull {border: 0px solid #8ba0bd; border-right-width: 1px;}.soria .dijitProgressBarLabel {color:#293a4b;}.soria .dijitProgressBarIndeterminate .dijitProgressBarTile {background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;}.soria .dijitTitlePaneTitle {background: #cccccc; background:#fff url("images/titleBar.png") repeat-x top left; border:1px solid #bfbfbf; padding:3px 4px; font-size: 0.9em; font-weight: bold; color: #6d6d6d;}.soria .dijitTitlePaneTitleHover {background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x;}.soria .dijitTitlePaneTitle * {vertical-align: middle;}.soria .dijitTitlePane .dijitArrowNode,.soria .dijitFieldset .dijitArrowNode {width:15px; height:15px;}.soria .dijitTitlePaneTextNode {color: #243C5F;}.soria .dijitTitlePane .dijitClosed .dijitArrowNode, .soria .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background: url("images/spriteRoundedIconsSmall.png") no-repeat -30px top;}.dj_ie6 .soria .dijitTitlePane .dijitClosed .dijitArrowNode, .dj_ie6 .soria .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -30px top;}.soria .dijitTitlePane .dijitOpen .dijitArrowNode, .soria .dijitFieldset .dijitFieldsetTitleOpen .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.png") no-repeat -15px top;}.dj_ie6 .soria .dijitTitlePane .dijitOpen .dijitArrowNode, .dj_ie6 .soria .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode {background:url("images/spriteRoundedIconsSmall.gif") no-repeat -15px top;}.soria .dijitTitlePaneContentOuter {background: #ffffff; border: 1px solid #bfbfbf; border-top: 0;}.soria .dijitTitlePaneContentInner {padding:10px;}.soria .dijitTitlePaneTextNode {margin-left: 4px; margin-right: 4px;}.soria .dijitCalendarIncrementControl {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat;}.dj_ie6 .soria .dijitCalendarIncrementControl {font-size:.1em; background-image: url("images/spriteRoundedIconsSmall.gif");}.soria .dijitA11ySideArrow {display: none;}.soria .dijitCalendarDecrease {background-position: top left;}.soria .dijitCalendarIncrease {background-position: -30px top;}.soria table.dijitCalendarContainer {font-size: 100%; border-spacing: 0; border-collapse: separate; margin: 0;}.soria .dijitCalendarMonthContainer {background:#bed7f0 url("images/titleBar.png") repeat-x top; padding-top:.3em; padding-bottom:.2em; text-align:center;}.dj_ie6 .soria .dijitCalendarMonthContainer th {padding-top:.2em; padding-bottom:.1em;}.soria .dijitCalendarDayLabelTemplate {background:#bed7f0; font-weight:normal; padding-top:.15em; padding-bottom:.2em; border-bottom: 1px solid #b1badf; color:#293a4b; text-align:center;}.soria .dijitCalendarBodyContainer {border-bottom: 1px solid #eeeeee;}.soria .dijitCalendarMonthLabel {color:#293a4b; font-weight: bold; padding: 0 4px;}.soria .dijitCalendarDateTemplate {font-size: 0.9em; font-weight: bold; text-align: center; padding: 0.3em 0.3em 0.05em 0.3em; letter-spacing: 1px; background-color: #fff; border:#fff solid 1px !important;}.dj_ie .soria .dijitCalendarDateTemplate {padding: 0.1em .33em 0.02em .33em;}.soria .dijitCalendarPreviousMonth,.soria .dijitCalendarNextMonth {color:#999999; background-color:#fdfdfd !important; border:#fdfdfd solid 1px !important;}.soria .dijitCalendarCurrentMonth {}.soria .dijitCalendarDisabledDate {text-decoration:line-through !important;}.soria .dijitCalendarCurrentDate {text-decoration:underline; font-weight:bold;}.soria .dijitCalendarSelectedDate {background-color:#b9cbf1 !important; color:black !important; border:#4b5aaa solid 1px !important;}.soria .dijitCalendarYearContainer {background:white url("images/titleBar.png") repeat-x top;}.soria .dijitCalendarYearLabel {margin:0; padding:0.4em 0 0.25em 0; text-align:center; font-size: 1.17em;}.soria .dijitCalendarSelectedYear {font-weight:bolder; color:black; padding:0.2em; padding-bottom:0.1em; background-color:#b9cbf1 !important; border:#4b5aaa solid 1px !important;}.soria .dijitCalendarNextYear,.soria .dijitCalendarPreviousYear {color:black !important; font-weight:normal;}.soria .dijitCalendar .dijitDropDownButton {margin: 0;}.soria .dijitCalendar .dijitButtonText {padding: 0;}.soria .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.soria .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #d9e6f9; color: #243C5F;}.soria .dijitTimePickerTick,.soria .dijitTimePickerMarker {border-color: #b1badf;}.soria .dijitTimePickerTick {color: gray;}.soria .dijitTimePickerMarker {background:#bed7f0 url("images/titleBar.png") repeat-x top; color:#293a4b; font-weight: bold;}.soria .dijitTimePickerItemSelected {color: black; background: #b9cbf1 none;}.soria .dijitTimePickerItemHover {background: #60a1ea none; color:white;}.soria .dijitTimePickerTick .dijitTimePickerItemInner {font-size: 0.8em;}.soria .dijitTimePickerItemSelected .dijitTimePickerItemInner {font-size: 1em;}.soria .dijitToolbar {border-bottom: 1px solid #ccc; background:#eaeaea url("images/titleBar.png") repeat-x top left;}.dj_ie6 .soria .dijitToolbar {height: 10px;}.soria .dijitToolbar .dijitButtonNode,.soria .dijitToolbar .dijitComboButton .dijitButtonContents,.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; margin: 0; padding: 0; border: none; font-size: 12px;}.soria .dijitToolbar .dijitButton,.soria .dijitToolbar .dijitToggleButton,.soria .dijitToolbar .dijitDropDownButton,.soria .dijitToolbar .dijitComboButton .dijitButtonContents,.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; padding: 1px;}.soria .dijitToolbar .dijitButtonChecked,.soria .dijitToolbar .dijitToggleButtonChecked {background-color:#d8e5f8; border:1px solid #316ac5; padding: 0;}.soria .dijitToolbar .dijitButtonCheckedHover,.soria .dijitToolbar .dijitToggleButtonCheckedHover {background-color:#9abbea; border:1px solid #316ac5; padding: 0;}.soria .dijitToolbar .dijitButtonHover,.soria .dijitToolbar .dijitToggleButtonHover,.soria .dijitToolbar .dijitDropDownButtonHover,.soria .dijitToolbar .dijitComboButton .dijitButtonContentsHover,.soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {border: 1px solid #316ac5; padding: 0; background-color:#9abbea;}.soria .dijitToolbar label {padding: 3px 3px 0 6px;}.dj_ie .soria .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,.dj_ie .soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {border: 1px #777 dotted !important; padding: 0;}.soria .dijitDialog {background: #eee; border: 1px solid #cbcbcb; -webkit-box-shadow: 0 5px 10px #adadad; padding: 0;}.soria .dijitDialog .dijitDialogTitle {font-weight: bold; padding: 0 4px; font-size: 0.9em; color: #243C5F;}.soria .dijitDialog .dijitDialogPaneContent {background: #ffffff; border-top: 1px solid #b1badf; padding:10px;}.soria .dijitDialogTitleBar {background: #fafafa url("images/titleBar.png") repeat-x top left; padding: 5px 6px 3px 6px; outline:0;}.soria .dijitDialogCloseIcon {background-image: url("images/spriteRoundedIconsSmallBl.png"); background-repeat: no-repeat; background-position: -60px 0; position: absolute; vertical-align: middle; right: 6px; top: 4px; height: 15px; width: 15px;}.dj_ie6 .soria .dijitDialogCloseIcon {background-image: url("images/spriteRoundedIconsSmallBl.gif");}.soria .dijitDialogCloseIconHover {background-position: -60px -15px;}.soria .dijitTooltip,.soria .dijitTooltipDialog {background: transparent;}.dijitTooltipBelow {padding-top: 10px;}.dijitTooltipAbove {padding-bottom: 10px;}.soria .dijitTooltipContainer {background-color: #fff; border:1px solid #cbcbcb; padding:0.45em;}.soria .dijitTooltipConnector {border:0; z-index: 2;}.soria .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 6px;}.soria .dijitTooltipBelow .dijitTooltipConnector {top: 0; left: 6px; background:url("images/tooltipConnectorUp.png") no-repeat top left; width:17px; height:11px;}.dj_ie .soria .dijitTooltipBelow .dijitTooltipConnector {background-image: url("images/tooltipConnectorUp.gif");}.soria .dijitTooltipAbove .dijitTooltipConnector {bottom: 0; left: 6px; background:url("images/tooltipConnectorDown.png") no-repeat top left; width:17px; height:11px;}.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector {background-image: url("images/tooltipConnectorDown.gif");}.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector {background-image: url("images/tooltipConnectorDown.gif");}.dj_ie6 .soria .dijitTooltipAbove .dijitTooltipConnector {bottom: -5px;}.soria .dijitTooltipLeft {padding-right: 10px;}.soria .dijitTooltipLeft .dijitTooltipConnector {right: 0; background:url("images/tooltipConnectorRight.png") no-repeat top left; width:11px; height:17px;}.dj_ie .soria .dijitTooltipLeft .dijitTooltipConnector {background-image: url("images/tooltipConnectorRight.gif");}.soria .dijitTooltipRight {padding-left: 10px;}.soria .dijitTooltipRight .dijitTooltipConnector {left: 0; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:11px; height:17px;}.dj_ie .soria .dijitTooltipRight .dijitTooltipConnector {background-image: url("images/tooltipConnectorLeft.gif");}.soria .dijitMenu,.soria .dijitMenuBar {border: 1px solid #cbcbcb; margin: 0; padding: 0; background-color: #fff;}.soria .dijitBorderContainer .dijitMenuBar {border:1px solid #B1BADF;}.soria .dijitMenuItem {font-family: sans-serif; margin: 0; color: #243C5F;}.soria .dijitMenuBar .dijitMenuItem {padding: 4px 5px;}.soria .dijitMenuPreviousButton, .soria .dijitMenuNextButton {font-style: italic;}.soria .dijitMenuItem TD {padding:1px;}.soria .dijitMenuPassive .dijitMenuItemHover,.soria .dijitComboBoxMenu .dijitMenuItemHover,.soria .dijitMenuItemSelected {background-color: #d9e6f9; color: #243C5F;}.soria .dijitMenuItemIcon {width: 15px; height: 15px;}.soria .dijitMenuExpand {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-position: -30px top;}.dj_ie6 .soria .dijitMenuExpand {background-image: url("images/spriteRoundedIconsSmall.gif");}.soria .dijitMenuSeparator {height: 1px;}.soria .dijitMenuSeparatorTop {border-bottom: 1px solid #fff;}.soria .dijitMenuSeparatorBottom {border-top: 1px solid #8ba0bd;}.soria .dijitCheckedMenuItem .dijitMenuItemIcon {background-image: url("images/spriteCheckbox.gif"); background-position: -80px;}.soria .dijitCheckedMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.soria .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("images/spriteRadio.gif"); background-position: -80px;}.soria .dijitRadioMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.soria .dijitToolbar .dijitToolbarSeparator {background: url("../../icons/images/editorIconsEnabled.png");}.soria .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.soria .dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIconSep {background-position: 0;}.dijitEditorIconSave {background-position: -18px;}.dijitEditorIconPrint {background-position: -36px;}.dijitEditorIconCut {background-position: -54px;}.dijitEditorIconCopy {background-position: -72px;}.dijitEditorIconPaste {background-position: -90px;}.dijitEditorIconDelete {background-position: -108px;}.dijitEditorIconCancel {background-position: -126px;}.dijitEditorIconUndo {background-position: -144px;}.dijitEditorIconRedo {background-position: -162px;}.dijitEditorIconSelectAll {background-position: -180px;}.dijitEditorIconBold {background-position: -198px;}.dijitEditorIconItalic {background-position: -216px;}.dijitEditorIconUnderline {background-position: -234px;}.dijitEditorIconStrikethrough {background-position: -252px;}.dijitEditorIconSuperscript {background-position: -270px;}.dijitEditorIconSubscript {background-position: -288px;}.dijitEditorIconJustifyCenter {background-position: -306px;}.dijitEditorIconJustifyFull {background-position: -324px;}.dijitEditorIconJustifyLeft {background-position: -342px;}.dijitEditorIconJustifyRight {background-position: -360px;}.dijitEditorIconIndent {background-position: -378px;}.dijitEditorIconOutdent {background-position: -396px;}.dijitEditorIconListBulletIndent {background-position: -414px;}.dijitEditorIconListBulletOutdent {background-position: -432px;}.dijitEditorIconListNumIndent {background-position: -450px;}.dijitEditorIconListNumOutdent {background-position: -468px;}.dijitEditorIconTabIndent {background-position: -486px;}.dijitEditorIconLeftToRight {background-position: -504px;}.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir {background-position: -522px;}.dijitEditorIconBackColor {background-position: -540px;}.dijitEditorIconForeColor {background-position: -558px;}.dijitEditorIconHiliteColor {background-position: -576px;}.dijitEditorIconNewPage {background-position: -594px;}.dijitEditorIconInsertImage {background-position: -612px;}.dijitEditorIconInsertTable {background-position: -630px;}.dijitEditorIconSpace {background-position: -648px;}.dijitEditorIconInsertHorizontalRule {background-position: -666px;}.dijitEditorIconInsertOrderedList {background-position: -684px;}.dijitEditorIconInsertUnorderedList {background-position: -702px;}.dijitEditorIconCreateLink {background-position: -720px;}.dijitEditorIconUnlink {background-position: -738px;}.dijitEditorIconViewSource {background-position: -756px;}.dijitEditorIconRemoveFormat {background-position: -774px;}.dijitEditorIconFullScreen {background-position: -792px;}.dijitEditorIconWikiword {background-position: -810px;} .dijitColorPalette {border:1px solid #cbcbcb; background:#fff; -moz-border-radius: 0 !important;} \ No newline at end of file
diff --git a/lib/dijit/themes/tundra/tundra.css b/lib/dijit/themes/tundra/tundra.css
index c405afa4a..fcd41d015 100644
--- a/lib/dijit/themes/tundra/tundra.css
+++ b/lib/dijit/themes/tundra/tundra.css
@@ -1 +1 @@
-.dijitReset {margin:0; border:0; padding:0; font: inherit; line-height:normal; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {position: absolute; visibility: hidden;}.dijitHidden * {visibility: hidden !important;}.dijitVisible {display: block !important; position: relative; visibility: visible;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important; border-collapse: separate;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: -10000px !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; -webkit-overflow-scrolling: touch;}.dijitPositionOnly {padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important;}.dijitNonPositionOnly {float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important;}.dijitBackgroundIframe {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0;}.dijitDisplayNone {display:none !important;}.dijitContainer {overflow: hidden;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner {background: no-repeat center; width: 12px; height: 12px; direction: ltr;}.dijitLeft {background-position:left top; background-repeat:no-repeat;}.dijitStretch {white-space:nowrap; background-repeat:repeat-x;}.dijitRight {#display:inline; background-position:right top; background-repeat:no-repeat;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.dijitButtonNode {border:1px solid gray; margin:0; line-height:normal; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap;}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {line-height:inherit;}.dijitTextBox .dijitButtonNode {border-width: 0;}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_ie .dijitButtonNode {zoom: 1;}.dj_ie .dijitButtonNode button {overflow: visible;}div.dijitArrowButton {float: right;}.dijitTextBox {border: solid black 1px; #overflow: hidden; width: 15em; vertical-align: middle;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_safari .dijitTextBoxDisabled input {color: #B0B0B0;}.dj_safari textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .dj_gecko .dijitTextBoxDisabled input {-moz-user-input: none;}.dijitPlaceHolder {color: #AAAAAA; font-style: italic; position: absolute; top: 0; left: 0; #filter: ""; white-space: nowrap; pointer-events: none;}.dijitTimeTextBox {width: 8em;}.dijitTextBox input:focus {outline: none;}.dijitTextBoxFocused {outline: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !important; direction: ltr !important; text-align: left !important; height: auto !important; #text-indent: 0 !important; #letter-spacing: -5em !important; #text-align: right !important;}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox {line-height: 100%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.dj_ie .dijitToolbar .dijitComboBox {vertical-align: middle;}.dijitTextBox .dijitSpinnerButtonContainer {width: 1em; position: relative !important; overflow: hidden;}.dijitSpinner .dijitSpinnerButtonInner {width:1em; visibility:hidden !important; overflow-x:hidden;}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0.3em !important; padding-right: 0.3em !important; margin-left: 0.3em !important; margin-right: 0.3em !important; width: 1.4em !important;}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0 !important; margin-right: 0 !important; width: 2em !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {padding: 0; position: absolute !important; right: 0; float: none; height: 50%; width: 100%; bottom: auto; left: 0; right: auto;}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: auto;}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {overflow: visible !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {top: 50%; border-top-width: 1px !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {#bottom: 50%; top: 0;}.dijitSpinner .dijitArrowButtonInner {margin: auto; overflow-x: hidden; height: 100% !important;}.dj_iequirks .dijitSpinner .dijitArrowButtonInner {height: auto !important;}.dijitSpinner .dijitArrowButtonInner .dijitInputField {-moz-transform: scale(0.5); -moz-transform-origin: center top; -webkit-transform: scale(0.5); -webkit-transform-origin: center top; -o-transform: scale(0.5); -o-transform-origin: center top; transform: scale(0.5); transform-origin: left top; padding-top: 0; padding-bottom: 0; padding-left: 0 !important; padding-right: 0 !important; width: 100%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput {padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden;}.dijitCheckBox input,.dijitRadio input {margin: 0; padding: 0; display: block;}.dijitCheckBoxInput {opacity: 0;}.dj_ie .dijitCheckBoxInput {filter: alpha(opacity=0);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.dijitProgressBarEmpty {position:relative;overflow:hidden; border:1px solid black; z-index:0;}.dijitProgressBarFull {position:absolute; overflow:hidden; z-index:-1; top:0; width:100%;}.dj_ie6 .dijitProgressBarFull {height:1.6em;}.dijitProgressBarTile {position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto;}.dijitProgressBarLabel {display:block; position:static; width:100%; text-align:center; background-color:transparent !important;}.dijitTooltip {position: absolute; z-index: 2000; display: block; left: 0; top: -10000px; overflow: visible;}.dijitTooltipContainer {border: solid black 2px; background: #b8b5b5; color: black; font-size: small;}.dijitTooltipFocusNode {padding: 2px 2px 2px 2px;}.dijitTooltipConnector {position: absolute;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane {position: absolute !important; z-index: 2;}.dijitBorderContainer > .dijitTextArea {resize: none;}.dijitGutter {position: absolute; font-size: 1px;}.dijitSplitter {position: absolute; overflow: hidden; z-index: 10; background-color: #fff; border-color: gray; border-style: solid; border-width: 0;}.dj_ie .dijitSplitter {z-index: 1;}.dijitSplitterActive {z-index: 11 !important;}.dijitSplitterCover {position:absolute; z-index:-1; top:0; left:0; width:100%; height:100%;}.dijitSplitterCoverActive {z-index:3 !important;}.dj_ie .dijitSplitterCover {background: white; opacity: 0;}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover {filter: alpha(opacity=0);}.dijitSplitterH {height: 7px; border-top:1px; border-bottom:1px; cursor: row-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0;}.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {overflow:hidden; position:absolute; top:49%;}.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {position:absolute; left:49%;}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV {font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto; -webkit-overflow-scrolling: touch;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitFieldset {border: 1px solid gray;}.dijitTitlePaneTitle, .dijitFieldsetTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {cursor: default;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {display: inline; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {display: none;}.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {display: none !important;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.dijitColorPalette .dijitPaletteTable {padding: 2px 3px 3px 3px; position: relative; overflow: hidden; outline: 0; border-collapse: separate;}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable {padding: 0; margin: 2px 3px 3px 3px;}.dijitColorPalette .dijitPaletteCell {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !important;}.dijitAccordionContainer {border:1px solid #b7b7b7; border-top:0 !important;}.dijitAccordionTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitAccordionTitleSelected {cursor: default;}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown {display: none; font-size: 0.65em; font-weight: normal !important;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer table {width: auto; clear: both;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarMonthContainer {text-align: center;}.dijitCalendarDecrementArrow {float: left;}.dijitCalendarIncrementArrow {float: right;}.dijitCalendarYearLabel {white-space: nowrap;}.dijitCalendarNextYear {margin:0 0 0 0.55em;}.dijitCalendarPreviousYear {margin:0 0.55em 0 0;}.dijitCalendarIncrementControl {vertical-align: middle;}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitCalendarDisabledDate {color: gray; text-decoration: line-through; cursor: default;}.dijitSpacer {position: relative; height: 1px; overflow: hidden; visibility: hidden;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.dijitMenu {border:1px solid black; background-color:white;}.dijitMenuTable {border-collapse:collapse; border-width:0; background-color:white;}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden;}.dijitMenuItem {text-align: left; white-space: nowrap; padding:.1em .2em; cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_a11y .dijitMenuExpandA11y {display: inline;}.dijitMenuSeparator td {border: 0; padding: 0;}.dijitMenuSeparatorTop {height: 50%; margin: 0; margin-top:3px; font-size: 1px;}.dijitMenuSeparatorBottom {height: 50%; margin: 0; margin-bottom:3px; font-size: 1px;}.dijitMenuItemIconChar {display: none; visibility: hidden;}.dj_a11y .dijitMenuItemIconChar {display: inline;}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar {visibility: visible;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}div.dijitTabDisabled, .dj_ie div.dijitTabDisabled {cursor: auto;}.dijitTab {position:relative; cursor:pointer; -webkit-tap-highlight-color: transparent; white-space:nowrap; z-index:3;}.dijitTab * {vertical-align: middle;}.dijitTabChecked {cursor: default;}.dijitTabContainerTop-tabs .dijitTab {top: 1px;}.dijitTabContainerBottom-tabs .dijitTab {top: -1px;}.dijitTabContainerLeft-tabs .dijitTab {left: 1px;}.dijitTabContainerRight-tabs .dijitTab {left: -1px;}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab {display:inline-block; #zoom: 1; #display:inline;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto; -webkit-tap-highlight-color: transparent;}.dijitTreeContainer {float: left;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dj_ie .dijitTreeLabel:focus {outline: 1px dotted black;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 4px;}.dijitDialog {position: absolute; z-index: 999; overflow: hidden;}.dijitDialogTitleBar {cursor: move;}.dijitDialogFixed .dijitDialogTitleBar {cursor:default;}.dijitDialogCloseIcon {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitDialogPaneContent {-webkit-overflow-scrolling: touch;}.dijitDialogUnderlayWrapper {position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important;}.dijitDialogUnderlay {background: #eee; opacity: 0.5;}.dj_ie .dijitDialogUnderlay {filter: alpha(opacity=50);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {border:4px solid #000; height:8px; width:8px;}.dijitSliderImageHandleV {top:-8px; right: -50%;}.dijitSliderImageHandleH {left:50%; top:-5px; vertical-align:top;}.dijitSliderBar {border-style:solid; border-color:black; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSliderBarContainerV {position:relative; height:100%; z-index:1;}.dijitSliderBarContainerH {position:relative; z-index:1;}.dijitSliderBarH {height:4px; border-width:1px 0;}.dijitSliderBarV {width:4px; border-width:0 1px;}.dijitSliderProgressBar {background-color:red; z-index:1;}.dijitSliderProgressBarV {position:static !important; height:0; vertical-align:top; text-align:left;}.dijitSliderProgressBarH {position:absolute !important; width:0; vertical-align:middle; overflow:visible;}.dijitSliderRemainingBar {overflow:hidden; background-color:transparent; z-index:1;}.dijitSliderRemainingBarV {height:100%; text-align:left;}.dijitSliderRemainingBarH {width:100% !important;}.dijitSliderBumper {overflow:hidden; z-index:1;}.dijitSliderBumperV {width:4px; height:8px; border-width:0 1px;}.dijitSliderBumperH {width:8px; height:4px; border-width:1px 0;}.dijitSliderBottomBumper,.dijitSliderLeftBumper {background-color:red;}.dijitSliderTopBumper,.dijitSliderRightBumper {background-color:transparent;}.dijitSliderDecoration {text-align:center;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%; white-space: nowrap;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_a11y .dijitSliderButtonInner {visibility:visible !important;}.dijitSliderButtonContainer {text-align:center; height:0;}.dijitSliderButtonContainer * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSlider .dijitButtonNode {padding:0; display:block;}.dijitRuleContainer {position:relative; overflow:visible;}.dijitRuleContainerV {height:100%; line-height:0; float:left; text-align:left;}.dj_opera .dijitRuleContainerV {line-height:2%;}.dj_ie .dijitRuleContainerV {line-height:normal;}.dj_gecko .dijitRuleContainerV {margin:0 0 1px 0;}.dijitRuleMark {position:absolute; border:1px solid black; line-height:0; height:100%;}.dijitRuleMarkH {width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important;}.dijitRuleLabelContainer {position:absolute;}.dijitRuleLabelContainerH {text-align:center; display:inline-block;}.dijitRuleLabelH {position:relative; left:-50%;}.dijitRuleLabelV {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}.dijitRuleMarkV {height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0;}.dj_ie .dijitRuleLabelContainerV {margin-top:-.55em;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.dijitToolbarSeparator {height: 18px; width: 5px; padding: 0 1px; margin: 0;}.dijitIEFixedToolbar {position:absolute; top: expression(eval((document.documentElement||document.body).scrollTop));}.dijitEditor {display: block;}.dijitEditorDisabled,.dijitEditorReadOnly {color: gray;}.dijitTimePicker {background-color: white;}.dijitTimePickerItem {cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitTimePickerItemHover {background-color:gray; color:white;}.dijitTimePickerItemSelected {font-weight:bold; color:#333; background-color:#b7cdee;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dijitTimePickerItemInner {text-align:center; border:0; padding:2px 8px 2px 8px;}.dijitTimePickerTick,.dijitTimePickerMarker {border-bottom:1px solid gray;}.dijitTimePicker .dijitDownArrowButton {border-top: none !important;}.dijitTimePickerTick {color:#CCC;}.dijitTimePickerMarker {color:black; background-color:#CCC;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitNumberTextBox {text-align: left; direction: ltr;}.dijitNumberTextBox .dijitInputInner {text-align: inherit;}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner {text-align: right;}.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {padding-right: 1px !important;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.dijitSelectFixedWidth .dijitButtonContents {width: 100%;}.dijitSelectMenu .dijitMenuItemIcon {display:none;}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {position: static;}.dijitSelectLabel *{vertical-align: baseline;}.dijitSelectSelectedOption * {font-weight: bold;}.dijitSelectMenu {border-width: 1px;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.dijitFocused .dijitMenuItemShortcutKey {text-decoration: underline;}.dijitIconSave,.dijitIconPrint,.dijitIconCut,.dijitIconCopy,.dijitIconClear,.dijitIconDelete,.dijitIconUndo,.dijitIconEdit,.dijitIconNewTask,.dijitIconEditTask,.dijitIconEditProperty,.dijitIconTask,.dijitIconFilter,.dijitIconConfigure,.dijitIconSearch,.dijitIconApplication,.dijitIconBookmark,.dijitIconChart,.dijitIconConnector,.dijitIconDatabase,.dijitIconDocuments,.dijitIconMail,.dijitLeaf,.dijitIconFile,.dijitIconFunction,.dijitIconKey,.dijitIconPackage,.dijitIconSample,.dijitIconTable,.dijitIconUsers,.dijitFolderClosed,.dijitIconFolderClosed,.dijitFolderOpened,.dijitIconFolderOpen,.dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled.png"); width: 16px; height: 16px;}.dj_ie6 .dijitIconSave,.dj_ie6 .dijitIconPrint,.dj_ie6 .dijitIconCut,.dj_ie6 .dijitIconCopy,.dj_ie6 .dijitIconClear,.dj_ie6 .dijitIconDelete,.dj_ie6 .dijitIconUndo,.dj_ie6 .dijitIconEdit,.dj_ie6 .dijitIconNewTask,.dj_ie6 .dijitIconEditTask,.dj_ie6 .dijitIconEditProperty,.dj_ie6 .dijitIconTask,.dj_ie6 .dijitIconFilter,.dj_ie6 .dijitIconConfigure,.dj_ie6 .dijitIconSearch,.dj_ie6 .dijitIconApplication,.dj_ie6 .dijitIconBookmark,.dj_ie6 .dijitIconChart,.dj_ie6 .dijitIconConnector,.dj_ie6 .dijitIconDatabase,.dj_ie6 .dijitIconDocuments,.dj_ie6 .dijitIconMail,.dj_ie6 .dijitLeaf,.dj_ie6 .dijitIconFile,.dj_ie6 .dijitIconFunction,.dj_ie6 .dijitIconKey,.dj_ie6 .dijitIconPackage,.dj_ie6 .dijitIconSample,.dj_ie6 .dijitIconTable,.dj_ie6 .dijitIconUsers,.dj_ie6 .dijitFolderClosed,.dj_ie6 .dijitIconFolderClosed,.dj_ie6 .dijitFolderOpened,.dj_ie6 .dijitIconFolderOpen,.dj_ie6 .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled8bit.png");}.dijitDisabled .dijitIconSave,.dijitDisabled .dijitIconPrint,.dijitDisabled .dijitIconCut,.dijitDisabled .dijitIconCopy,.dijitDisabled .dijitIconClear,.dijitDisabled .dijitIconDelete,.dijitDisabled .dijitIconUndo,.dijitDisabled .dijitIconEdit,.dijitDisabled .dijitIconNewTask,.dijitDisabled .dijitIconEditTask,.dijitDisabled .dijitIconEditProperty,.dijitDisabled .dijitIconTask,.dijitDisabled .dijitIconFilter,.dijitDisabled .dijitIconConfigure,.dijitDisabled .dijitIconSearch,.dijitDisabled .dijitIconApplication,.dijitDisabled .dijitIconBookmark,.dijitDisabled .dijitIconChart,.dijitDisabled .dijitIconConnector,.dijitDisabled .dijitIconDatabase,.dijitDisabled .dijitIconDocuments,.dijitDisabled .dijitIconMail,.dijitDisabled .dijitLeaf,.dijitDisabled .dijitIconFile,.dijitDisabled .dijitIconFunction,.dijitDisabled .dijitIconKey,.dijitDisabled .dijitIconPackage,.dijitDisabled .dijitIconSample,.dijitDisabled .dijitIconTable,.dijitDisabled .dijitIconUsers,.dijitDisabled .dijitFolderClosed,.dijitDisabled .dijitIconFolderClosed,.dijitDisabled .dijitFolderOpened,.dijitDisabled .dijitIconFolderOpen,.dijitDisabled .dijitIconError {background-image: url("../../icons/images/commonIconsObjActDisabled.png");}.dijitIconSave {background-position: 0;}.dijitIconPrint {background-position: -16px;}.dijitIconCut {background-position: -32px;}.dijitIconCopy {background-position: -48px;}.dijitIconClear {background-position: -64px;}.dijitIconDelete {background-position: -80px;}.dijitIconUndo {background-position: -96px;}.dijitIconEdit {background-position: -112px;}.dijitIconNewTask {background-position: -128px;}.dijitIconEditTask {background-position: -144px;}.dijitIconEditProperty {background-position: -160px;}.dijitIconTask {background-position: -176px;}.dijitIconFilter {background-position: -192px;}.dijitIconConfigure {background-position: -208px;}.dijitIconSearch {background-position: -224px;}.dijitIconError {background-position: -496px;} .dijitIconApplication {background-position: -240px;}.dijitIconBookmark {background-position: -256px;}.dijitIconChart {background-position: -272px;}.dijitIconConnector {background-position: -288px;}.dijitIconDatabase {background-position: -304px;}.dijitIconDocuments {background-position: -320px;}.dijitIconMail {background-position: -336px;}.dijitIconFile, .dijitLeaf {background-position: -352px;}.dijitIconFunction {background-position: -368px;}.dijitIconKey {background-position: -384px;}.dijitIconPackage{background-position: -400px;}.dijitIconSample {background-position: -416px;}.dijitIconTable {background-position: -432px;}.dijitIconUsers {background-position: -448px;}.dijitIconFolderClosed, .dijitFolderClosed {background-position: -464px;}.dijitIconFolderOpen, .dijitFolderOpened {background-position: -480px;}.dijitIconLoading {background: url("../../icons/images/loadingAnimation.gif") no-repeat; height: 20px; width: 20px;}.tundra .dojoDndItemOver {background-image: url("images/treeHover.png");}.tundra .dojoDndItemAnchor,.tundra .dojoDndItemSelected {background-color: #E2EBFE;}.tundra table.dojoDndAvatar {-moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}.tundra .dojoDndAvatar td {border: none;}.tundra .dojoDndAvatar tr {border: none;}.tundra .dojoDndAvatarHeader td {height: 20px; padding: 0 0 0 21px;}.tundra .dojoDndAvatarItem td {padding: 2px;}.tundra.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoMove.png"); background-repeat: no-repeat; background-position: 2px center;}.tundra.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.tundra.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndMove.png"); background-repeat: no-repeat; background-position: 2px center;}.tundra.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.tundra .dijitIconLoading {background:url("images/loading.gif") no-repeat left center; width: 24px; height: 24px;}.tundra .dijitIconError {background:url("images/warning.png") no-repeat left center; width: 16px; height: 16px;}.tundra .dijitContentPane {padding: 0;}.tundra .dijitTabContainerTop-dijitContentPane,.tundra .dijitTabContainerLeft-dijitContentPane,.tundra .dijitTabContainerBottom-dijitContentPane,.tundra .dijitTabContainerRight-dijitContentPane,.tundra .dijitAccordionContainer-dijitContentPane {background-color: #fff; padding: 5px;}.tundra .dijitSplitContainer-dijitContentPane,.tundra .dijitBorderContainer-dijitContentPane {background-color: #fff; padding: 5px;}.tundra .dijitTabPaneWrapper {background:#fff; border:1px solid #ccc; margin: 0; padding: 0;}.tundra .dijitTab {line-height:normal; margin-right:4px; padding:2px 8px 2px 9px; border:1px solid #ccc; background:#e2e2e2 url("images/tabEnabled.png") repeat-x;}.tundra .dijitTabSpacer {display: none;}.tundra .dijitTabContainer .tabStripRBtn {margin-right: 20px;}.tundra .dijitTabContainer .tabStripLBtn {margin-left: 20px;}.tundra .nowrapTabStrip .dijitTab {top: 2px;}.tundra .dijitTabContainerBottom .nowrapTabStrip .dijitTab {top: 0; bottom: 2px;}.tundra .dijitTabChecked {background-color:#fff; border-color: #ccc; background-image:none;}.tundra .dijitTabHover {color: #243C5F; border-top-color:#92a0b3; border-left-color:#92a0b3; border-right-color:#92a0b3; border-bottom-color:#92a0b3; background:#e2e2e2 url("images/tabHover.gif") repeat-x;}.tundra .dijitTabContainerTop .dijitTabHover {border-bottom-color:#ccc;}.tundra .dijitTabContainerBottom .dijitTabHover {border-top-color:#ccc;}.tundra .dijitTabContainerLeft .dijitTabHover {border-right-color:#ccc;}.tundra .dijitTabContainerRight .dijitTabHover {border-left-color:#ccc;}.tundra .dijitTabContainer .dijitTabCheckedHover {color: inherit; border:1px solid #ccc; background:#fff;}.tundra .dijitTab .tabLabel {min-height: 12px; display: inline-block;}.tundra .dijitTabContainerNested .dijitTabListWrapper {height: auto;}.tundra .dijitTabContainerNested .dijitTabContainerTop-tabs {border-bottom: 1px solid #CCC;}.tundra .dijitTabContainerTabListNested .dijitTab {background: none; border: none; top: 0;}.tundra .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.tundra .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: underline; font-weight: bold;}.tundra .dijitTabContainer .dijitTabPaneWrapperNested {border: none;}.tundra .dijitTabCloseButton {background: url("images/tabClose.png") no-repeat right top; width: 12px; height: 12px;}.dj_ie6 .tundra .dijitTabCloseButton {background-image : url("images/tabClose.gif");}.tundra .dijitTabCloseButtonHover {background-image : url("images/tabCloseHover.png");}.dj_ie6 .tundra .dijitTabCloseButtonHover {background-image : url("images/tabCloseHover.gif");}.tundra .dijitTabContainerTop-tabs {margin-bottom: 0; border-color: #cccccc; padding-left: 3px; background-position: bottom;}.tundra .dijitTabContainerTop-tabs .dijitTab {top: 0; margin-bottom: -1px;}.tundra .dijitTabContainerTop-container {border-top: none;}.tundra .dijitTabContainerTop-tabs .dijitTabChecked {border-bottom-color:white;}.tundra .dijitTabContainerTop-tabs,.tundra .dijitTabContainerBottom-tabs {padding-left: 3px; padding-right: 3px;}.tundra .dijitTabContainerTopStrip {border-top: 1px solid #CCC; border-right: 1px solid #CCC; border-left: 1px solid #CCC; padding-top: 2px; background: #f2f2f2;}.tundra .dijitTabContainerTopNone {padding-top: 0;}.tundra .dijitTabContainerBottom-tabs {margin-top: 0; border-color: #cccccc; background-position: top; padding-left: 3px;}.tundra .dijitTabContainerBottom-tabs .dijitTab {bottom: 0; margin-top: -1px;}.tundra .dijitTabContainerBottom-container {border-bottom: none;}.tundra .dijitTabContainerBottom-tabs .dijitTabChecked {border-top-color:white;}.tundra .dijitTabContainerBottomStrip {padding-bottom: 2px; border: 1px solid #ccc; background: #f2f2f2; border-top: none;}.tundra .dijitTabContainerRight-tabs {border-color: #ccc; height: 100%; padding-top: 3px;}.tundra .dijitTabContainerRightStrip {margin-left: -1px;}.tundra .dijitTabContainerRight-container {border-right: none;}.tundra .dijitTabContainerRight-tabs .dijitTabChecked {border-left-color:white;}.tundra .dijitTabContainerRightStrip {padding-right: 2px; border: 1px solid #ccc;}.tundra .dijitTabContainerRightStrip {background: #f2f2f2;}.tundra .dijitTabContainerLeft-tabs {border-color: #ccc; padding-top: 3px; height: 100%;}.tundra .dijitTabContainerLeft-container {border-left: none;}.tundra .dijitTabContainerLeft-tabs .dijitTabChecked {border-right-color:white;}.tundra .dijitTabContainerLeftStrip {padding-left: 2px; border: 1px solid #ccc; background: #f2f2f2; border-right: none;}.tundra .dijitTabContainerLeft-tabs .dijitTab,.tundra .dijitTabContainerRight-tabs .dijitTab {margin-right:0; margin-bottom:4px;}.tundra .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {border-left: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.tundra .dijitTabContainer .tabStripButton {margin-right: 0; padding-top: 2px; z-index: 12;}.tundra .dijitTabContainerBottom .tabStripButton {padding-top: 3px;}.tundra .tabStrip-disabled .tabStripButton {padding-bottom: 3px; padding-top: 1px;}.tundra .tabStripButton {padding: 3px 2px 4px 2px;}.tundra .dijitTabStripIcon {height: 14px; width: 14px; background: url("images/spriteRoundedIconsSmall.png") no-repeat left top ;}.dj_ie6 .tundra .dijitTabStripIcon {background-image: url("images/spriteRoundedIconsSmall.gif");}.tundra .dijitTabStripSlideRightIcon {background-position: -30px top;}.tundra .dijitTabStripMenuIcon {background-position: -15px top;}.tundra .dijitAccordionContainer {border-color: #ccc; background-color: #fff;}.tundra .dijitAccordionTitle {background:#fafafa url("images/titleBar.png") repeat-x bottom left; border-top: 1px solid #bfbfbf; padding: 4px 4px 4px 8px;}.tundra .dijitAccordionTitleHover {background: #f8fafd url("images/accordionItemHover.gif") bottom repeat-x;}.tundra .dijitAccordionTitleSelected {background: #f9f9f9 url("images/accordionItemActive.gif") bottom repeat-x; font-weight: bold; border-top: 1px solid #aaaaaa; border-bottom: 1px solid #bfbfbf; padding: 4px 4px 4px 8px;}.tundra .dijitSplitContainerSizerH {background:url("images/splitContainerSizerV.png") repeat-y #fff; border:0; border-left:1px solid #bfbfbf; border-right:1px solid #bfbfbf; width:7px;}.tundra .dijitSplitContainerSizerH .thumb {background:url("images/splitContainerSizerV-thumb.png") no-repeat #ccc; left:1px; width:3px; height:19px; overflow: hidden;}.tundra .dijitSplitContainerSizerV {background:url("images/splitContainerSizerH.png") repeat-x #fff; border:0; border-top:1px solid #bfbfbf; border-bottom:1px solid #bfbfbf; height:7px;}.tundra .dijitSplitContainerSizerV .thumb {background:url("images/splitContainerSizerH-thumb.png") no-repeat #ccc; top:1px; width:19px; height:3px; overflow: hidden;}.tundra .dijitBorderContainer {background-color: #fcfcfc; padding: 5px;}.tundra .dijitSplitContainer-child,.tundra .dijitBorderContainer-child {border: 1px #ccc solid;}.tundra .dijitBorderContainer-dijitTabContainerTop,.tundra .dijitBorderContainer-dijitTabContainerBottom,.tundra .dijitBorderContainer-dijitTabContainerLeft,.tundra .dijitBorderContainer-dijitTabContainerRight {border: none;}.tundra .dijitBorderContainer-dijitBorderContainer {border: none; padding: 0;}.tundra .dijitSplitterH,.tundra .dijitGutterH {background:#fcfcfc; border:0; height:5px;}.tundra .dijitSplitterH .dijitSplitterThumb {background:#B0B0B0 none; height:1px; top:2px; width:19px;}.tundra .dijitSplitterV,.tundra .dijitGutterV {background:#fcfcfc; border:0; width:5px;}.tundra .dijitSplitterV .dijitSplitterThumb {background:#B0B0B0 none; height:19px; left:2px; width:1px;}.tundra .dijitSplitterActive {font-size: 1px; background-image: none; background-color: #aaa; -moz-opacity: 0.6; opacity: 0.6; filter: Alpha(Opacity=60); margin: 0;}.tundra .dijitInputContainer input {margin: 0 0.1em;}.tundra .dijitTextArea {padding: 3px;}.tundra .dijitSelect .dijitButtonContents,.tundra .dijitSelect,.tundra .dijitTextBox {background:#fff url("images/validationInputBg.png") repeat-x top left; #background:#fff url("images/validationInputBg.gif") repeat-x top left;}.tundra .dijitSelect,.tundra .dijitTextBox {border:1px solid #b3b3b3;}.tundra .dijitSelect .dijitArrowButton,.tundra .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.tundra .dijitSelect .dijitButtonContents,.tundra .dijitTextBox .dijitButtonNode {border-color: #9b9b9b;}.tundra .dijitSelectFocused,.tundra .dijitTextBoxFocused {border-color:#406b9b;}.tundra .dijitSelectFocused TD,.tundra .dijitTextBoxFocused .dijitButtonNode {border-color:#366dba;}.tundra .dijitError {background-color:#f9f7ba; background-image:none;}.tundra .dijitErrorFocused {background-color:#f9f999; background-image:none;}.tundra .dijitValidationTextBoxError .dijitValidationIcon {width: 16px; background: transparent url("images/warning.png") no-repeat center center;}.tundra .dijitComboBoxHighlightMatch {background-color:#a5beda;}.tundra .dijitFocusedLabel {outline: 1px dotted #666666;}.tundra .dijitButtonNode {border: 1px solid #c0c0c0; border-bottom: 1px solid #9b9b9b; padding: 0.1em 0.2em 0.2em 0.2em; background: #fff url("images/buttonEnabled.png") repeat-x bottom left;}.tundra .dijitButtonText {text-align: center; padding: 0 0.3em;}.tundra .dijitInputField {padding: 0;}.tundra .dijitDisabled .dijitButtonText {color: #7F7F7F;}.tundra .dijitArrowButton {color: #111;}.tundra .dijitComboButton .dijitDownArrowButton {padding-right:4px;}.tundra .dijitTextBoxReadOnly,.tundra .dijitTextBoxReadOnly .dijitButtonNode,.tundra .dijitButtonDisabled .dijitButtonNode,.tundra .dijitToggleButtonDisabled .dijitButtonNode,.tundra .dijitDropDownButtonDisabled .dijitButtonNode,.tundra .dijitComboButtonDisabled .dijitButtonNode,.tundra .dijitTextBoxDisabled,.tundra .dijitTextBoxDisabled .dijitButtonNode {border-color: #d5d5d5 #d5d5d5 #bdbdbd #d5d5d5; background:#e4e4e4 url("images/buttonDisabled.png") top repeat-x;}.tundra .dijitButtonHover .dijitButtonNode,.tundra .dijitButtonNodeHover,.tundra .dijitToggleButtonHover .dijitButtonNode,.tundra .dijitDropDownButtonHover .dijitButtonNode,.tundra .dijitComboButton .dijitButtonContentsHover,.tundra .dijitComboButton .dijitDownArrowButtonHover {border-color: #a5beda; border-bottom-color:#5c7590; color:#243C5F; background:#fcfdff url("images/buttonHover.png") repeat-x bottom;}.tundra .dijitDownArrowButtonHover,.tundra .dijitUpArrowButtonHover {color:#243C5F; background:#fcfdff url("images/buttonHover.png") repeat-x bottom;}.tundra .dijitUpArrowButtonActive,.tundra .dijitDownArrowButtonActive,.tundra .dijitButtonActive .dijitButtonNode,.tundra .dijitToggleButtonActive .dijitButtonNode,.tundra .dijitDropDownButtonActive .dijitButtonNode,.tundra .dijitButtonContentsActive,.tundra .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {border-color:#366dba; background: #ededed url("images/buttonActive.png") bottom repeat-x;}.tundra .dijitArrowButtonInner {background:url("images/spriteArrows.png") no-repeat scroll 0 center; width: 7px; height: 7px; margin: 0 4px 0 4px;}.tundra .dijitTextBox .dijitArrowButtonInner {background-position: 0 center;}.dj_ie6 .tundra .dijitArrowButtonInner {background-image:url("images/spriteArrows.gif");}.tundra .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -7px center;}.tundra .dijitRightArrowButton .dijitArrowButtonInner {background-position: -14px center;}.tundra .dijitUpArrowButton .dijitArrowButtonInner {background-position: -21px center;}.tundra .dijitDisabled .dijitArrowButtonInner {background-position: -28px center;}.tundra .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -35px center;}.tundra .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner {background-position: -42px center;}.tundra .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner {background-position: -49px center;}.dj_ie .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {margin-top: -2px;}.dj_webkit .tundra .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner,.dj_iequirks .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner,.dj_ie8 .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {margin-top: -1px;}.tundra .dijitSpinnerButtonContainer {width: auto; padding: 0;}.tundra .dijitSpinner .dijitArrowButton {width: 15px;}.tundra .dijitSpinner .dijitSpinnerButtonInner {width: 15px;}.tundra .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding: 0;}.tundra .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/checkmarkNoBorder.png");}.dj_ie6 .tundra .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/checkmarkNoBorder.gif");}.tundra .dijitCheckBox,.tundra .dijitCheckBoxIcon {background-image: url("images/checkmark.png"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0 2px 0 0; padding: 0;}.dj_ie6 .tundra .dijitCheckBox,.dj_ie6 .tundra .dijitCheckBoxIcon {background-image: url("images/checkmark.gif");}.tundra .dijitCheckBox,.tundra .dijitToggleButton .dijitCheckBoxIcon {background-position: -16px;}.tundra .dijitCheckBoxChecked,.tundra .dijitToggleButtonChecked .dijitCheckBoxIcon {background-position: 0;}.tundra .dijitCheckBoxDisabled {background-position: -48px;}.tundra .dijitCheckBoxCheckedDisabled {background-position: -32px;}.tundra .dijitCheckBoxHover {background-position: -80px;}.tundra .dijitCheckBoxCheckedHover {background-position: -64px;}.tundra .dijitRadio, .tundra .dijitRadioIcon {background-image: url("images/checkmark.png"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0;}.dj_ie6 .tundra .dijitRadio,.dj_ie6 .tundra .dijitRadioIcon {background-image: url("images/checkmark.gif");}.tundra .dijitToggleButton .dijitRadioIcon {background-image: url("images/checkmarkNoBorder.png");}.dj_ie6 .tundra .dijitToggleButton .dijitRadioIcon {background-image: url("images/checkmarkNoBorder.gif");}.tundra .dijitRadio,.tundra .dijitRadioIcon {background-position: -112px;}.tundra .dijitRadioDisabled {background-position: -144px;}.tundra .dijitRadioHover {background-position: -176px;}.tundra .dijitRadioChecked,.tundra .dijitRadioCheckedHover,.tundra .dijitToggleButtonChecked .dijitRadioIcon {background-position: -96px;}.tundra .dijitRadioCheckedDisabled {background-position: -128px;}.tundra .dijitSliderProgressBarH {border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.tundra .dijitSliderProgressBarV {border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.tundra .dijitSliderFocused .dijitSliderProgressBarH,.tundra .dijitSliderFocused .dijitSliderLeftBumper {background-image:url("images/sliderFullFocus.png");}.tundra .dijitSliderFocused .dijitSliderProgressBarV,.tundra .dijitSliderFocused .dijitSliderBottomBumper {background-image:url("images/sliderFullVerticalFocus.png");}.tundra .dijitSliderRemainingBarV {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y bottom left;}.tundra .dijitSliderRemainingBarH {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left;}.tundra .dijitSliderBar {border-style: solid; outline:1px;}.tundra .dijitSliderFocused .dijitSliderBar {border-color:#888;}.tundra .dijitSliderImageHandleH {border:0; width:16px; height:16px; background:url("images/preciseSliderThumb.png") no-repeat center top;}.tundra .dijitSliderFocused .dijitSliderImageHandleH {background-image:url("images/preciseSliderThumbFocus.png"); #background-image:url("images/preciseSliderThumbFocus.gif");}.dj_ie6 .tundra .dijitSliderImageHandleH {background-image:url("images/preciseSliderThumb.gif");}.tundra .dijitSliderLeftBumper {border-left-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.tundra .dijitSliderRightBumper {background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left; border-color: #b4b4b4; border-right-width: 1px;}.tundra .dijitSliderImageHandleV {border:0; width:16px; height:16px; background:url("images/sliderThumb.png") no-repeat center center;}.tundra .dijitSliderFocused .dijitSliderImageHandleV {background-image:url("images/sliderThumbFocus.png");}.dj_ie6 .tundra .dijitSliderFocused .dijitSliderImageHandleV {background-image:url("images/sliderThumbFocus.gif");}.tundra .dijitSliderBottomBumper {border-bottom-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.tundra .dijitSliderTopBumper {background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y top left; border-color: #b4b4b4; border-top-width: 1px;}.tundra .dijitSliderDecrementIconH,.tundra .dijitSliderDecrementIconV,.tundra .dijitSliderIncrementIconH,.tundra .dijitSliderIncrementIconV {background-image: url("images/spriteArrows.png"); background-repeat: no-repeat; margin: 5px; height: 7px; width: 7px; font-size: 1px;}.dj_ie6 .tundra .dijitSliderDecrementIconH,.dj_ie6 .tundra .dijitSliderDecrementIconV,.dj_ie6 .tundra .dijitSliderIncrementIconH,.dj_ie6 .tundra .dijitSliderIncrementIconV {background-image: url("images/spriteArrows.gif");}.tundra .dijitSliderDecrementIconH {background-position: -7px 0;}.tundra .dijitSliderIncrementIconH {background-position: -14px 0;}.tundra .dijitSliderDecrementIconV {background-position: 0 0;}.tundra .dijitSliderIncrementIconV {background-position: -21px 0;}.tundra .dijitSliderButtonInner {visibility:hidden;}.tundra .dijitSliderReadOnly *,.tundra .dijitSliderDisabled * {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; color: #bdbdbd;}.tundra .dijitSliderReadOnly .dijitSliderDecrementIconH,.tundra .dijitSliderDisabled .dijitSliderDecrementIconH {background-position: -35px 0;}.tundra .dijitSliderReadOnly .dijitSliderIncrementIconH,.tundra .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -42px 0;}.tundra .dijitSliderReadOnly .dijitSliderDecrementIconV,.tundra .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -28px 0;}.tundra .dijitSliderReadOnly .dijitSliderIncrementIconV,.tundra .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -49px 0;}.tundra .dijitSelectError .dijitButtonContents,.tundra .dijitSelectHover .dijitArrowButton,.tundra .dijitSelectActive .dijitArrowButton,.tundra .dijitSelectOpened .dijitArrowButton,.tundra .dijitSelectDisabled .dijitArrowButton,.tundra .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.tundra .dijitSelect .dijitArrowButton {background: #fff url("images/buttonEnabled.png") repeat-x bottom left; border-width: 0;}.tundra .dijitSelectDisabled,.tundra .dijitSelectDisabled TD {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5 !important; background:#e4e4e4 url("images/buttonDisabled.png") top repeat-x;}.dj_ie .tundra .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.tundra .dijitSelectHover,.tundra .dijitSelectHover TD {border-color:#a5beda #5c7590 #5c7590 #a5beda !important; color:#243C5F; background:#fcfdff url("images/buttonHover.png") repeat-x bottom;}.tundra .dijitSelectActive,.tundra .dijitSelectOpened,.tundra .dijitSelectActive TD,.tundra .dijitSelectOpened TD {border-color:#366dba !important; background: #ededed url("images/buttonActive.png") bottom repeat-x;}.tundra .dijitSelectMenu td {padding: 0;}.tundra .dijitSelectMenu .dijitMenuItemLabel,.tundra .dijitSelectMenu .dijitMenuArrowCell {padding: 0.1em 0.2em;}.tundra .dijitTreeNode {background-image : url("images/i.gif"); background-repeat : repeat-y; zoom: 1;}.tundra .dijitTreeIsLast {background: url("images/i_half.gif") no-repeat;}.tundra .dijitTreeIsRoot {margin-left: 0; background-image: none;}.tundra .dijitTreeExpando {width: 18px; height: 18px;}.tundra .dijitTreeRow {padding-bottom: 2px;}.tundra .dijitTreeContent {min-height: 18px; min-width: 18px;}.tundra .dijitTreeRowSelected .dijitTreeLabel {background:#e2ebfe;}.tundra .dijitTreeRowHover {background-image: url("images/treeHover.png"); background-repeat: repeat; background-color: transparent !important;}.tundra .dijitTreeExpandoOpened {background-image: url("images/treeExpand_minus.gif");}.tundra .dijitTreeExpandoClosed {background-image: url("images/treeExpand_plus.gif");}.tundra .dijitTreeExpandoLeaf {background-image: url("images/treeExpand_leaf.gif");}.tundra .dijitTreeExpandoLoading {background-image: url("images/treeExpand_loading.gif");}.tundra .dijitTreeIcon {width: 16px; height: 16px;}.tundra .dijitFolderOpened {background: url("images/folderOpened.gif") no-repeat;}.tundra .dijitFolderClosed {background: url("images/folderClosed.gif") no-repeat;}.tundra .dijitLeaf {background: url("images/leaf.gif") no-repeat;}.tundra .dijitTreeNode .dojoDndItemBefore,.tundra .dijitTreeNode .dojoDndItemAfter {border-bottom: none; border-top: none;}.tundra .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {border-top: 2px solid #369;}.tundra .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {border-bottom: 2px solid #369;}.tundra .dijitProgressBar {margin:2px 0 2px 0;}.tundra .dijitProgressBarEmpty {background:#fff url("images/progressBarEmpty.png") repeat-x center center; border-color: #a2a2a2 #b8b8b8 #b8b8b8 #a2a2a2;}.tundra .dijitProgressBarTile {background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;}.tundra .dijitProgressBarFull {border: 0px solid #b8b8b8; border-right-width: 1px;}.tundra .dijitProgressBarLabel {color:#293a4b;}.tundra .dijitProgressBarIndeterminate .dijitProgressBarTile {background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;}.tundra .dijitTitlePaneTitle {background: #cccccc; background:#fff url("images/titleBar.png") repeat-x bottom left; border:1px solid #bfbfbf; padding:3px 4px;}.tundra .dijitTitlePaneTitleHover {background: #f8fafd url("images/accordionItemHover.gif") bottom repeat-x;}.tundra .dijitTitlePane .dijitArrowNode, .tundra .dijitFieldset .dijitArrowNode {background-image: url("images/spriteArrows.png"); background-repeat: no-repeat; background-position: 0 0; height: 7px; width: 7px;}.dj_ie6 .tundra .dijitTitlePane .dijitArrowNode, .dj_ie6 .tundra .dijitFieldset .dijitArrowNode {background-image: url("images/spriteArrows.gif");}.tundra .dijitTitlePane .dijitClosed .dijitArrowNode, .tundra .dijitFieldset .dijitClosed .dijitArrowNode {background-position: -14px 0;}.tundra .dijitTitlePaneContentOuter {background: #ffffff; border:1px solid #bfbfbf; border-top: 0;}.tundra .dijitTitlePaneContentInner {padding:10px;}.tundra .dijitTitlePaneTextNode, .tundra .dijitFieldsetLegendNode {margin-left: 4px; margin-right: 4px;}.tundra .dijitCalendarIncrementControl {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat}.dj_ie6 .tundra .dijitCalendarIncrementControl {font-size:.1em; background-image: url("images/spriteRoundedIconsSmall.gif");}.tundra .dijitA11ySideArrow {display: none;}.tundra .dijitCalendarDecrease {background-position: top left;}.tundra .dijitCalendarIncrease {background-position: -30px top;}.tundra .dijitCalendarContainer {font-size: 100%; border-spacing: 0; border-collapse: separate; margin: 0;}.tundra .dijitCalendarMonthContainer {background:#d3d3d3 url("images/titleBar.png") repeat-x top; padding-top:.3em; padding-bottom:.2em; text-align:center;}.dj_ie6 .tundra .dijitCalendarMonthContainer {padding-top:.2em; padding-bottom:.1em;}.tundra .dijitCalendarDayLabelTemplate {background:white url("images/calendarDayLabel.png") repeat-x bottom; font-weight:normal; padding-top:.15em; padding-bottom:0; border-top: 1px solid #eeeeee; color:#293a4b; text-align:center;}.tundra .dijitCalendarBodyContainer {border-bottom: 1px solid #eeeeee;}.tundra .dijitCalendarMonthLabel {color:#293a4b; font-weight: bold; padding: 0 4px;}.tundra .dijitCalendarDateTemplate {font-size: 0.9em; font-weight: bold; text-align: center; padding: 0.3em 0.3em 0.05em 0.3em; letter-spacing: 1px;}.dj_ie .tundra .dijitCalendarDateTemplate {padding: 0.1em .33em 0.02em .33em;}.tundra .dijitCalendarPreviousMonth,.tundra .dijitCalendarNextMonth {color:#999999; background-color:#f8f8f8;}.tundra .dijitCalendarCurrentMonth {background-color: white;}.tundra .dijitCalendarCurrentDate {text-decoration:underline; font-weight:bold;}.tundra .dijitCalendarHoveredDate {background-color: #e2ebf2;}.tundra .dijitCalendarDisabledDate {text-decoration: line-through; background-color: white;}.tundra .dijitCalendarSelectedDate {background-color:#bbc4d0 !important; color:black !important;}.tundra .dijitCalendarYearContainer {background:white url("images/calendarYearLabel.png") repeat-x bottom;}.tundra .dijitCalendarYearLabel {margin:0; padding:0.4em 0 0.25em 0; text-align:center; font-size: 1.17em;}.tundra .dijitCalendarSelectedYear {font-weight:bolder; color:black; padding:0.2em; padding-bottom:0.1em; background-color:#bbc4d0 !important;}.tundra .dijitCalendarNextYear,.tundra .dijitCalendarPreviousYear {color:black !important; font-weight:normal;}.tundra .dijitCalendar .dijitDropDownButton {margin: 0;}.tundra .dijitCalendar .dijitButtonText {padding: 0;}.tundra .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.tundra .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #3559ac; color:#fff;}.tundra .dijitTimePickerTick,.tundra .dijitTimePickerMarker {border-color: #ccc;}.tundra .dijitTimePickerTick {color:gray;}.tundra .dijitTimePickerMarker {background:#d3d3d3 url("images/titleBar.png") repeat-x top; color:#293a4b;}.tundra .dijitTimePickerItemSelected {color: black; background: #bbc4d0 none;}.tundra .dijitTimePickerItemHover {background: #60a1ea none; color:white;}.tundra .dijitToolbar {border-bottom: 1px solid #ccc; background:#eaeaea url("images/titleBar.png") repeat-x top left;}.dj_ie6 .tundra .dijitToolbar {height: 10px;}.tundra .dijitToolbar .dijitButtonNode,.tundra .dijitToolbar .dijitComboButton .dijitButtonContents,.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; margin: 0; padding: 0; border: none; font-size: 12px;}.tundra .dijitToolbar .dijitButton,.tundra .dijitToolbar .dijitToggleButton,.tundra .dijitToolbar .dijitDropDownButton,.tundra .dijitToolbar .dijitComboButton .dijitButtonContents,.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; padding: 1px;}.tundra .dijitToolbar .dijitButtonChecked,.tundra .dijitToolbar .dijitToggleButtonChecked {background-color:#d4dff2; border:1px solid #316ac5; padding: 0;}.tundra .dijitToolbar .dijitButtonCheckedHover,.tundra .dijitToolbar .dijitToggleButtonCheckedHover {background-color:#abc1e5; border:1px solid #316ac5; padding: 0;}.tundra .dijitToolbar .dijitButtonHover,.tundra .dijitToolbar .dijitToggleButtonHover,.tundra .dijitToolbar .dijitDropDownButtonHover,.tundra .dijitToolbar .dijitComboButton .dijitButtonContentsHover,.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {border: 1px solid #869cbf; padding: 0; background-color:#e1e5f0;}.tundra .dijitToolbar label {padding: 3px 3px 0 6px;}.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {border: 1px #555 dotted !important; padding: 0;}.tundra .dijitToolbarSeparator {background: url("../../icons/images/editorIconsEnabled.png");}.tundra .dijitToolbarRtl .dijitToolbarSeparator {background-image: url("../../icons/images/editorIconsDisabled.png");}.tundra .dijitDialog {background: #fff; border: 1px solid #7eabcd; padding: 0; -webkit-box-shadow: 0 5px 10px #adadad;}.tundra .dijitDialogPaneContent {background: #fff; border-top: 1px solid #d3d3d3; padding:10px;}.tundra .dijitDialogTitleBar {background: #fafafa url("images/titleBar.png") repeat-x top left; padding: 5px 6px 3px 6px; outline:0;}.tundra .dijitDialogTitle {font-weight: bold; padding: 0 4px;}.tundra .dijitDialogCloseIcon {background: url("images/tabClose.png") no-repeat right top; position: absolute; vertical-align: middle; right: 6px; top: 4px; height: 15px; width: 15px;}.dj_ie6 .tundra .dijitDialogCloseIcon {background : url("images/tabClose.gif") no-repeat right top;}.tundra .dijitDialogCloseIconHover {background: url("images/tabCloseHover.png") no-repeat right top;}.dj_ie6 .tundra .dijitDialogCloseIconHover {background : url("images/tabCloseHover.gif") no-repeat right top;}.tundra .dijitTooltip,.tundra .dijitTooltipDialog {background: transparent;}.dijitTooltipBelow {padding-top: 13px;}.dijitTooltipAbove {padding-bottom: 13px;}.tundra .dijitTooltipContainer {background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left; border: 1px solid #7eabcd; padding: 0.45em; -webkit-border-radius: 3px; -moz-border-radius: 3px;}.tundra .dijitTooltipConnector {border:0; z-index: 2;}.tundra .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 3px;}.tundra .dijitTooltipBelow .dijitTooltipConnector {top: 0; left: 3px; background:url("images/tooltipConnectorUp.png") no-repeat top left; width:16px; height:14px;}.dj_ie .tundra .dijitTooltipBelow .dijitTooltipConnector {background-image: url("images/tooltipConnectorUp.gif");}.tundra .dijitTooltipAbove .dijitTooltipConnector {bottom: 0; left: 3px; background:url("images/tooltipConnectorDown.png") no-repeat top left; width:16px; height:14px;}.dj_ie .tundra .dijitTooltipAbove .dijitTooltipConnector {background-image: url("images/tooltipConnectorDown.gif");}.dj_ie6 .tundra .dijitTooltipAbove .dijitTooltipConnector {bottom: -3px;}.tundra .dijitTooltipLeft {padding-right: 14px;}.tundra .dijitTooltipLeft .dijitTooltipConnector {right: 0; background:url("images/tooltipConnectorRight.png") no-repeat top left; width:16px; height:14px;}.dj_ie .tundra .dijitTooltipLeft .dijitTooltipConnector {background-image: url("images/tooltipConnectorRight.gif");}.tundra .dijitTooltipRight {padding-left: 14px;}.tundra .dijitTooltipRight .dijitTooltipConnector {left: 0; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:16px; height:14px;}.dj_ie .tundra .dijitTooltipRight .dijitTooltipConnector {background-image: url("images/tooltipConnectorLeft.gif");}.dj_webkit .tundra .dijitTooltipContainer {-webkit-box-shadow: 0 5px 10px #adadad;}.tundra .dijitMenu,.tundra .dijitMenuBar {border: 1px solid #7eabcd; margin: 0; padding: 0; background-color: #f7f7f7;}.tundra .dijitMenuTable {border-collapse: separate; border-spacing: 0 0; padding: 0;}.tundra .dijitBorderContainer .dijitMenuBar {border:1px solid #ccc;}.tundra .dijitMenuItem {font-family: sans-serif; margin: 0;}.tundra .dijitMenuItem {padding: 4px 5px;}.tundra .dijitMenuPreviousButton, .tundra .dijitMenuNextButton {font-style: italic;}.tundra .dijitMenuItem td {padding: 2px;}.tundra .dijitMenuPassive .dijitMenuItemHover,.tundra .dijitComboBoxMenu .dijitMenuItemHover,.tundra .dijitMenuItemSelected {background-color: #3559ac; color:#fff;}.tundra .dijitMenuItemIcon {width: 16px; height: 16px;}.tundra .dijitMenuExpand {width: 7px; height: 7px; background-image: url("images/spriteArrows.png"); background-position: -14px 0;}.dj_ie6 .tundra .dijitMenuExpand {background-image: url("images/spriteArrows.gif");}.tundra .dijitMenuSeparatorTop {border-bottom: 1px solid #9b9b9b;}.tundra .dijitMenuSeparatorBottom {border-top: 1px solid #e8e8e8;}.tundra .dijitCheckedMenuItem .dijitMenuItemIcon,.tundra .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("images/checkmark.png"); background-position: -80px;}.dj_ie6 .tundra .dijitCheckedMenuItem .dijitMenuItemIcon,.dj_ie6 .tundra .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("images/checkmark.gif");}.tundra .dijitCheckedMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.tundra .dijitRadioMenuItem .dijitMenuItemIcon {background-position: -110px;}.tundra .dijitRadioMenuItemChecked .dijitMenuItemIcon {background-position: -95px;}.dijitEditor {border:1px solid #bfbfbf; border-top:0;}.tundra .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.tundra .dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIconSep {background-position: 0;}.dijitEditorIconSave {background-position: -18px;}.dijitEditorIconPrint {background-position: -36px;}.dijitEditorIconCut {background-position: -54px;}.dijitEditorIconCopy {background-position: -72px;}.dijitEditorIconPaste {background-position: -90px;}.dijitEditorIconDelete {background-position: -108px;}.dijitEditorIconCancel {background-position: -126px;}.dijitEditorIconUndo {background-position: -144px;}.dijitEditorIconRedo {background-position: -162px;}.dijitEditorIconSelectAll {background-position: -180px;}.dijitEditorIconBold {background-position: -198px;}.dijitEditorIconItalic {background-position: -216px;}.dijitEditorIconUnderline {background-position: -234px;}.dijitEditorIconStrikethrough {background-position: -252px;}.dijitEditorIconSuperscript {background-position: -270px;}.dijitEditorIconSubscript {background-position: -288px;}.dijitEditorIconJustifyCenter {background-position: -306px;}.dijitEditorIconJustifyFull {background-position: -324px;}.dijitEditorIconJustifyLeft {background-position: -342px;}.dijitEditorIconJustifyRight {background-position: -360px;}.dijitEditorIconIndent {background-position: -378px;}.dijitEditorIconOutdent {background-position: -396px;}.dijitEditorIconListBulletIndent {background-position: -414px;}.dijitEditorIconListBulletOutdent {background-position: -432px;}.dijitEditorIconListNumIndent {background-position: -450px;}.dijitEditorIconListNumOutdent {background-position: -468px;}.dijitEditorIconTabIndent {background-position: -486px;}.dijitEditorIconLeftToRight {background-position: -504px;}.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir {background-position: -522px;}.dijitEditorIconBackColor {background-position: -540px;}.dijitEditorIconForeColor {background-position: -558px;}.dijitEditorIconHiliteColor {background-position: -576px;}.dijitEditorIconNewPage {background-position: -594px;}.dijitEditorIconInsertImage {background-position: -612px;}.dijitEditorIconInsertTable {background-position: -630px;}.dijitEditorIconSpace {background-position: -648px;}.dijitEditorIconInsertHorizontalRule {background-position: -666px;}.dijitEditorIconInsertOrderedList {background-position: -684px;}.dijitEditorIconInsertUnorderedList {background-position: -702px;}.dijitEditorIconCreateLink {background-position: -720px;}.dijitEditorIconUnlink {background-position: -738px;}.dijitEditorIconViewSource {background-position: -756px;}.dijitEditorIconRemoveFormat {background-position: -774px;}.dijitEditorIconFullScreen {background-position: -792px;}.dijitEditorIconWikiword {background-position: -810px;} .dijitColorPalette {border:1px solid #7eabcd; background:#fff; -moz-border-radius: 0 !important;}.dijitRtl .dijitOffScreen {left: auto !important; right: -10000px !important;}.dijitRtl .dijitPlaceHolder {left: auto; right: 0;}.dijitMenuItemRtl {text-align: right;}.dj_iequirks .dijitComboButtonRtl button {float:left;}.dj_ie .dijitTextBoxRtl .dijitInputContainer {clear: right;}.dijitTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitComboBoxRtl .dijitArrowButtonContainer {border-right-width: 1px !important; border-left-width: 0 !important;}.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {right: 0; left: auto;}.dijitSelectRtl .dijitButtonText {float: right;}.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitValidationTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitArrowButtonContainer {float: left;}div.dijitNumberTextBoxRtl {text-align: right;}.dijitCalendarRtl .dijitCalendarDecrementArrow {float: right;}.dijitCalendarRtl .dijitCalendarIncrementArrow {float: left;}.dijitCalendarRtl .dijitCalendarNextYear {margin:0 0.55em 0 0;}.dijitCalendarRtl .dijitCalendarPreviousYear {margin:0 0 0 0.55em;}.dijitSliderRtl .dijitSliderImageHandleV {left:auto;}.dijitSliderRtl .dijitSliderImageHandleH {left:-50%;}.dijitSliderRtl .dijitSliderMoveableH {right:auto; left:0;}.dijitSliderRtl .dijitRuleContainerV {float:right;}.dj_ie .dijitSliderRtl .dijitRuleContainerV {text-align:right;}.dj_ie .dijitSliderRtl .dijitRuleLabelV {text-align:left;}.dj_ie .dijitSliderRtl .dijitRuleLabelH {zoom:1;}.dijitSliderRtl .dijitSliderProgressBarH {float:right; right:0; left:auto;}.dijitRtl .dijitContentPaneLoading .dijitIconLoading,.dijitRtl .dijitContentPaneError .dijitIconError {margin-right: 0; margin-left: 9px;}.dijitTabControllerRtl .nowrapTabStrip {text-align: right;}.dijitTabRtl .dijitTabCloseButton {margin-left: 0; margin-right: 1em;}.dj_ie6 .dijitTabRtl .tabLabel,.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie6 .dijitTabContainerLeft-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerLeft-tabs .dijitTabRtl {zoom: 1;}.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl {left: 0;}.dj_ie6 .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,.dj_ie6 .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {width: 1%;}.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {width:100%;}.dijitColorPaletteRtl .dijitColorPaletteUnder {left: auto; right: 0;}.dijitSelectRtl .dijitButtonContents {border-style: none none none solid; text-align: right;}.dijitTreeRtl .dijitTreeContainer {float: right;}.dijitRtl .dojoDndHorizontal .dojoDndItemBefore {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dijitRtl .dojoDndHorizontal .dojoDndItemAfter {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.tundra .dijitCalendarRtl .dijitCalendarDecrease {background-position: -30px top;}.tundra .dijitCalendarRtl .dijitCalendarIncrease {background-position: 0 top;}.dj_ie6 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover,.dj_ie7 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover {border-top: 0;}.tundra .dijitDialogRtl .dijitDialogCloseIcon {right: auto; left: 5px;}.tundra .dijitEditorRtl .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled_rtl.png");}.tundra .dijitEditorRtlDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled_rtl.png");}.dijitEditorRtl .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled_rtl.png");}.dijitEditorRtlDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled_rtl.png");}.dijitToolbarRtl .dijitToolbarSeparator {background-image: url("../../icons/images/editorIconsEnabled_rtl.png");}.tundra .dijitMenuItemRtl .dijitMenuExpand {background-position: -7px 0;}.tundra .dijitTreeNodeRtl,.tundra .dijitTreeNodeRtl .dijitTreeExpandoLeaf {background-image: none;}.tundra .dijitTreeNodeRtl .dijitTreeExpandoOpened {background-image: url("images/treeExpand_minus_rtl.gif");}.tundra .dijitTreeNodeRtl .dijitTreeExpandoClosed {background-image: url("images/treeExpand_plus_rtl.gif");}.tundra .dijitProgressBarRtl .dijitProgressBarFull {border-left-width: 1px; border-right: 0px;}.tundra .dijitProgressBarIndeterminateRtl .dijitProgressBarTile {-moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); transform: scaleX(-1); filter: FlipH; -ms-filter: "FlipH";}.tundra .dijitTitlePaneRtl .dijitClosed .dijitArrowNode, .tundra .dijitFieldsetRtl .dijitFieldsetTitleClosed .dijitArrowNode {background-position: -7px 0;}.tundra .dijitTabRtl {padding:2px 9px 2px 8px;}.tundra .dijitSliderRtl .dijitSliderProgressBarH,.tundra .dijitSliderRtl .dijitSliderRemainingBarH,.tundra .dijitSliderRtl .dijitSliderLeftBumper,.tundra .dijitSliderRtl .dijitSliderRightBumper,.tundra .dijitSliderRtl .dijitSliderTopBumper {background-position: top right;}.tundra .dijitSliderRtl .dijitSliderProgressBarV,.tundra .dijitSliderRtl .dijitSliderRemainingBarV,.tundra .dijitSliderRtl .dijitSliderBottomBumper {background-position: bottom right;}.tundra .dijitSliderRtl .dijitSliderLeftBumper {border-left-width: 0; border-right-width: 1px;}.tundra .dijitSliderRtl .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.tundra .dijitSliderRtl .dijitSliderIncrementIconH {background-position: -7px 0;}.tundra .dijitSliderRtl .dijitSliderDecrementIconH {background-position: -14px 0;} \ No newline at end of file
+.dijitReset {margin:0; border:0; padding:0; font: inherit; line-height:normal; color: inherit;}.dj_a11y .dijitReset {-moz-appearance: none;}.dijitInline {display:inline-block; #zoom: 1; #display:inline; border:0; padding:0; vertical-align:middle; #vertical-align: auto;}table.dijitInline {display:inline-table; box-sizing: content-box; -moz-box-sizing: content-box;}.dijitHidden {position: absolute; visibility: hidden;}.dijitHidden * {visibility: hidden !important;}.dijitVisible {display: block !important; position: relative; visibility: visible;}.dj_ie6 .dijitComboBox .dijitInputContainer,.dijitInputContainer {#zoom: 1; overflow: hidden; float: none !important; position: relative;}.dj_ie7 .dijitInputContainer {float: left !important; clear: left; display: inline-block !important;}.dj_ie .dijitSelect input,.dj_ie input.dijitTextBox,.dj_ie .dijitTextBox input {font-size: 100%;}.dijitSelect .dijitButtonText {float: left; vertical-align: top;}TABLE.dijitSelect {padding: 0 !important; border-collapse: separate;}.dijitTextBox .dijitSpinnerButtonContainer,.dijitTextBox .dijitArrowButtonContainer,.dijitValidationTextBox .dijitValidationContainer {float: right; text-align: center;}.dijitSelect input.dijitInputField,.dijitTextBox input.dijitInputField {padding-left: 0 !important; padding-right: 0 !important;}.dijitValidationTextBox .dijitValidationContainer {display: none;}.dijitTeeny {font-size:1px; line-height:1px;}.dijitOffScreen {position: absolute !important; left: -10000px !important; top: -10000px !important;}.dijitPopup {position: absolute; background-color: transparent; margin: 0; border: 0; padding: 0; -webkit-overflow-scrolling: touch;}.dijitPositionOnly {padding: 0 !important; border: 0 !important; background-color: transparent !important; background-image: none !important; height: auto !important; width: auto !important;}.dijitNonPositionOnly {float: none !important; position: static !important; margin: 0 0 0 0 !important; vertical-align: middle !important;}.dijitBackgroundIframe {position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: -1; border: 0; padding: 0; margin: 0;}.dijitDisplayNone {display:none !important;}.dijitContainer {overflow: hidden;}.dj_a11y .dijitIcon,.dj_a11y div.dijitArrowButtonInner, .dj_a11y span.dijitArrowButtonInner,.dj_a11y img.dijitArrowButtonInner,.dj_a11y .dijitCalendarIncrementControl,.dj_a11y .dijitTreeExpando {display: none;}.dijitSpinner div.dijitArrowButtonInner {display: block;}.dj_a11y .dijitA11ySideArrow {display: inline !important; cursor: pointer;}.dj_a11y .dijitCalendarDateLabel {padding: 1px; border: 0px !important;}.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {border-style: solid !important; border-width: 1px !important; padding: 0;}.dj_a11y .dijitCalendarDateTemplate {padding-bottom: 0.1em !important; border: 0px !important;}.dj_a11y .dijitButtonNode {border: black outset medium !important; padding: 0 !important;}.dj_a11y .dijitArrowButton {padding: 0 !important;}.dj_a11y .dijitButtonContents {margin: 0.15em;}.dj_a11y .dijitTextBoxReadOnly .dijitInputField,.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {border-style: outset!important; border-width: medium!important; border-color: #999 !important; color:#999 !important;}.dijitButtonNode * {vertical-align: middle;}.dijitSelect .dijitArrowButtonInner,.dijitButtonNode .dijitArrowButtonInner {background: no-repeat center; width: 12px; height: 12px; direction: ltr;}.dijitLeft {background-position:left top; background-repeat:no-repeat;}.dijitStretch {white-space:nowrap; background-repeat:repeat-x;}.dijitRight {#display:inline; background-position:right top; background-repeat:no-repeat;}.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {opacity: 0.5;}.dijitToggleButton,.dijitButton,.dijitDropDownButton,.dijitComboButton {margin: 0.2em; vertical-align: middle;}.dijitButtonContents {display: block;}td.dijitButtonContents {display: table-cell;}.dijitButtonNode img {vertical-align:middle;}.dijitToolbar .dijitComboButton {border-collapse: separate;}.dijitToolbar .dijitToggleButton,.dijitToolbar .dijitButton,.dijitToolbar .dijitDropDownButton,.dijitToolbar .dijitComboButton {margin: 0;}.dijitToolbar .dijitButtonContents {padding: 1px 2px;}.dj_webkit .dijitToolbar .dijitDropDownButton {padding-left: 0.3em;}.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {padding:0;}.dijitSelect {border:1px solid gray;}.dijitButtonNode {border:1px solid gray; margin:0; line-height:normal; vertical-align: middle; #vertical-align: auto; text-align:center; white-space: nowrap;}.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {line-height:inherit;}.dijitTextBox .dijitButtonNode {border-width: 0;}.dijitSelect,.dijitSelect *,.dijitButtonNode,.dijitButtonNode * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_ie .dijitButtonNode {zoom: 1;}.dj_ie .dijitButtonNode button {overflow: visible;}div.dijitArrowButton {float: right;}.dijitTextBox {border: solid black 1px; #overflow: hidden; width: 15em; vertical-align: middle;}.dijitTextBoxReadOnly,.dijitTextBoxDisabled {color: gray;}.dj_safari .dijitTextBoxDisabled input {color: #B0B0B0;}.dj_safari textarea.dijitTextAreaDisabled {color: #333;}.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, .dj_gecko .dijitTextBoxDisabled input {-moz-user-input: none;}.dijitPlaceHolder {color: #AAAAAA; font-style: italic; position: absolute; top: 0; left: 0; #filter: ""; white-space: nowrap; pointer-events: none;}.dijitTimeTextBox {width: 8em;}.dijitTextBox input:focus {outline: none;}.dijitTextBoxFocused {outline: 5px -webkit-focus-ring-color;}.dijitSelect input,.dijitTextBox input {float: left;}.dj_ie6 input.dijitTextBox,.dj_ie6 .dijitTextBox input {float: none;}.dijitInputInner {border:0 !important; background-color:transparent !important; width:100% !important; padding-left: 0 !important; padding-right: 0 !important; margin-left: 0 !important; margin-right: 0 !important;}.dj_a11y .dijitTextBox input {margin: 0 !important;}.dijitValidationTextBoxError input.dijitValidationInner,.dijitSelect input,.dijitTextBox input.dijitArrowButtonInner {text-indent: -2em !important; direction: ltr !important; text-align: left !important; height: auto !important; #text-indent: 0 !important; #letter-spacing: -5em !important; #text-align: right !important;}.dj_ie .dijitSelect input,.dj_ie .dijitTextBox input,.dj_ie input.dijitTextBox {overflow-y: visible; line-height: normal;}.dijitSelect .dijitSelectLabel span {line-height: 100%;}.dj_ie .dijitSelect .dijitSelectLabel {line-height: normal;}.dj_ie6 .dijitSelect .dijitSelectLabel,.dj_ie7 .dijitSelect .dijitSelectLabel,.dj_ie8 .dijitSelect .dijitSelectLabel,.dj_iequirks .dijitSelect .dijitSelectLabel,.dijitSelect td,.dj_ie6 .dijitSelect input,.dj_iequirks .dijitSelect input,.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie6 .dijitTextBox input,.dj_ie6 input.dijitTextBox,.dj_iequirks .dijitTextBox input.dijitValidationInner,.dj_iequirks .dijitTextBox input.dijitArrowButtonInner,.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner,.dj_iequirks .dijitTextBox input.dijitInputInner,.dj_iequirks input.dijitTextBox {line-height: 100%;}.dj_a11y input.dijitValidationInner,.dj_a11y input.dijitArrowButtonInner {text-indent: 0 !important; width: 1em !important; #text-align: left !important; color: black !important;}.dijitValidationTextBoxError .dijitValidationContainer {display: inline; cursor: default;}.dijitSpinner .dijitSpinnerButtonContainer,.dijitComboBox .dijitArrowButtonContainer {border-width: 0 0 0 1px !important;}.dj_a11y .dijitSelect .dijitArrowButtonContainer,.dijitToolbar .dijitComboBox .dijitArrowButtonContainer {border-width: 0 !important;}.dijitComboBoxMenu {list-style-type: none;}.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode {clear: both;}.dj_ie .dijitToolbar .dijitComboBox {vertical-align: middle;}.dijitTextBox .dijitSpinnerButtonContainer {width: 1em; position: relative !important; overflow: hidden;}.dijitSpinner .dijitSpinnerButtonInner {width:1em; visibility:hidden !important; overflow-x:hidden;}.dijitComboBox .dijitButtonNode,.dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0;}.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode {border-width: 0px !important; border-style: solid !important;}.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer,.dj_a11y .dijitSpinner .dijitArrowButtonInner,.dj_a11y .dijitSpinnerButtonContainer input {width: 1em !important;}.dj_a11y .dijitSpinner .dijitArrowButtonInner {margin: 0 auto !important;}.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0.3em !important; padding-right: 0.3em !important; margin-left: 0.3em !important; margin-right: 0.3em !important; width: 1.4em !important;}.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding-left: 0 !important; padding-right: 0 !important; width: 1em !important;}.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0.1em !important; margin-right: 0.1em !important; width: 1em !important;}.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {margin-left: 0 !important; margin-right: 0 !important; width: 2em !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {padding: 0; position: absolute !important; right: 0; float: none; height: 50%; width: 100%; bottom: auto; left: 0; right: auto;}.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: auto;}.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton {overflow: visible !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton {top: 50%; border-top-width: 1px !important;}.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton {#bottom: 50%; top: 0;}.dijitSpinner .dijitArrowButtonInner {margin: auto; overflow-x: hidden; height: 100% !important;}.dj_iequirks .dijitSpinner .dijitArrowButtonInner {height: auto !important;}.dijitSpinner .dijitArrowButtonInner .dijitInputField {-moz-transform: scale(0.5); -moz-transform-origin: center top; -webkit-transform: scale(0.5); -webkit-transform-origin: center top; -o-transform: scale(0.5); -o-transform-origin: center top; transform: scale(0.5); transform-origin: left top; padding-top: 0; padding-bottom: 0; padding-left: 0 !important; padding-right: 0 !important; width: 100%; visibility: hidden;}.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField {zoom: 50%;}.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner {overflow: hidden;}.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 100%;}.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton {width: 1em;}.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField {vertical-align:top; visibility: visible;}.dj_a11y .dijitSpinnerButtonContainer {width: 1em;}.dijitCheckBox,.dijitRadio,.dijitCheckBoxInput {padding: 0; border: 0; width: 16px; height: 16px; background-position:center center; background-repeat:no-repeat; overflow: hidden;}.dijitCheckBox input,.dijitRadio input {margin: 0; padding: 0; display: block;}.dijitCheckBoxInput {opacity: 0;}.dj_ie .dijitCheckBoxInput {filter: alpha(opacity=0);}.dj_a11y .dijitCheckBox,.dj_a11y .dijitRadio {width: auto !important; height: auto !important;}.dj_a11y .dijitCheckBoxInput {opacity: 1; filter: none; width: auto; height: auto;}.dj_a11y .dijitFocusedLabel {border: 1px dotted; outline: 0px !important;}.dijitProgressBar {z-index: 0;}.dijitProgressBarEmpty {position:relative;overflow:hidden; border:1px solid black; z-index:0;}.dijitProgressBarFull {position:absolute; overflow:hidden; z-index:-1; top:0; width:100%;}.dj_ie6 .dijitProgressBarFull {height:1.6em;}.dijitProgressBarTile {position:absolute; overflow:hidden; top:0; left:0; bottom:0; right:0; margin:0; padding:0; width: 100%; height:auto; background-color:#aaa; background-attachment: fixed;}.dj_a11y .dijitProgressBarTile {border-width:2px; border-style:solid; background-color:transparent !important;}.dj_ie6 .dijitProgressBarTile {position:static; height:1.6em;}.dijitProgressBarIndeterminate .dijitProgressBarTile {}.dijitProgressBarIndeterminateHighContrastImage {display:none;}.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage {display:block; position:absolute; top:0; bottom:0; margin:0; padding:0; width:100%; height:auto;}.dijitProgressBarLabel {display:block; position:static; width:100%; text-align:center; background-color:transparent !important;}.dijitTooltip {position: absolute; z-index: 2000; display: block; left: 0; top: -10000px; overflow: visible;}.dijitTooltipContainer {border: solid black 2px; background: #b8b5b5; color: black; font-size: small;}.dijitTooltipFocusNode {padding: 2px 2px 2px 2px;}.dijitTooltipConnector {position: absolute;}.dj_a11y .dijitTooltipConnector {display: none;}.dijitTooltipData {display:none;}.dijitLayoutContainer {position: relative; display: block; overflow: hidden;}.dijitAlignTop,.dijitAlignBottom,.dijitAlignLeft,.dijitAlignRight {position: absolute; overflow: hidden;}body .dijitAlignClient {position: absolute;}.dijitBorderContainer, .dijitBorderContainerNoGutter {position:relative; overflow: hidden; z-index: 0;}.dijitBorderContainerPane,.dijitBorderContainerNoGutterPane {position: absolute !important; z-index: 2;}.dijitBorderContainer > .dijitTextArea {resize: none;}.dijitGutter {position: absolute; font-size: 1px;}.dijitSplitter {position: absolute; overflow: hidden; z-index: 10; background-color: #fff; border-color: gray; border-style: solid; border-width: 0;}.dj_ie .dijitSplitter {z-index: 1;}.dijitSplitterActive {z-index: 11 !important;}.dijitSplitterCover {position:absolute; z-index:-1; top:0; left:0; width:100%; height:100%;}.dijitSplitterCoverActive {z-index:3 !important;}.dj_ie .dijitSplitterCover {background: white; opacity: 0;}.dj_ie6 .dijitSplitterCover,.dj_ie7 .dijitSplitterCover,.dj_ie8 .dijitSplitterCover {filter: alpha(opacity=0);}.dijitSplitterH {height: 7px; border-top:1px; border-bottom:1px; cursor: row-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitterV {width: 7px; border-left:1px; border-right:1px; cursor: col-resize; -webkit-tap-highlight-color: transparent;}.dijitSplitContainer {position: relative; overflow: hidden; display: block;}.dijitSplitPane {position: absolute;}.dijitSplitContainerSizerH,.dijitSplitContainerSizerV {position:absolute; font-size: 1px; background-color: ThreeDFace; border: 1px solid; border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; margin: 0;}.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb {overflow:hidden; position:absolute; top:49%;}.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb {position:absolute; left:49%;}.dijitSplitterShadow,.dijitSplitContainerVirtualSizerH,.dijitSplitContainerVirtualSizerV {font-size: 1px; background-color: ThreeDShadow; -moz-opacity: 0.5; opacity: 0.5; filter: Alpha(Opacity=50); margin: 0;}.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH {cursor: col-resize;}.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV {cursor: row-resize;}.dj_a11y .dijitSplitterH {border-top:1px solid #d3d3d3 !important; border-bottom:1px solid #d3d3d3 !important;}.dj_a11y .dijitSplitterV {border-left:1px solid #d3d3d3 !important; border-right:1px solid #d3d3d3 !important;}.dijitContentPane {display: block; overflow: auto; -webkit-overflow-scrolling: touch;}.dijitContentPaneSingleChild {overflow: hidden;}.dijitContentPaneLoading .dijitIconLoading,.dijitContentPaneError .dijitIconError {margin-right: 9px;}.dijitTitlePane {display: block; overflow: hidden;}.dijitFieldset {border: 1px solid gray;}.dijitTitlePaneTitle, .dijitFieldsetTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed,.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed {cursor: default;}.dijitTitlePaneTitle * {vertical-align: middle;}.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner {display: none;}.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner {display: inline; font-family: monospace;}.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode {display: none;}.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner,.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner,.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner,.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner {display: none !important;}.dj_ie6 .dijitTitlePaneContentOuter,.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle {zoom: 1;}.dijitColorPalette {border: 1px solid #999; background: #fff; position: relative;}.dijitColorPalette .dijitPaletteTable {padding: 2px 3px 3px 3px; position: relative; overflow: hidden; outline: 0; border-collapse: separate;}.dj_ie6 .dijitColorPalette .dijitPaletteTable,.dj_ie7 .dijitColorPalette .dijitPaletteTable,.dj_iequirks .dijitColorPalette .dijitPaletteTable {padding: 0; margin: 2px 3px 3px 3px;}.dijitColorPalette .dijitPaletteCell {font-size: 1px; vertical-align: middle; text-align: center; background: none;}.dijitColorPalette .dijitPaletteImg {padding: 1px; border: 1px solid #999; margin: 2px 1px; cursor: default; font-size: 1px;}.dj_gecko .dijitColorPalette .dijitPaletteImg {padding-bottom: 0;}.dijitColorPalette .dijitColorPaletteSwatch {width: 14px; height: 12px;}.dijitPaletteTable td {padding: 0;}.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg {border: 1px solid #000;}.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg,.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg {border: 2px solid #000; margin: 1px 0;}.dj_a11y .dijitColorPalette .dijitPaletteTable,.dj_a11y .dijitColorPalette .dijitPaletteTable * {background-color: transparent !important;}.dijitAccordionContainer {border:1px solid #b7b7b7; border-top:0 !important;}.dijitAccordionTitle {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitAccordionTitleSelected {cursor: default;}.dijitAccordionTitle .arrowTextUp,.dijitAccordionTitle .arrowTextDown {display: none; font-size: 0.65em; font-weight: normal !important;}.dj_a11y .dijitAccordionTitle .arrowTextUp,.dj_a11y .dijitAccordionTitleSelected .arrowTextDown {display: inline;}.dj_a11y .dijitAccordionTitleSelected .arrowTextUp {display: none;}.dijitAccordionChildWrapper {overflow: hidden;}.dijitCalendarContainer table {width: auto; clear: both;}.dijitCalendarContainer th, .dijitCalendarContainer td {padding: 0; vertical-align: middle;}.dijitCalendarMonthContainer {text-align: center;}.dijitCalendarDecrementArrow {float: left;}.dijitCalendarIncrementArrow {float: right;}.dijitCalendarYearLabel {white-space: nowrap;}.dijitCalendarNextYear {margin:0 0 0 0.55em;}.dijitCalendarPreviousYear {margin:0 0.55em 0 0;}.dijitCalendarIncrementControl {vertical-align: middle;}.dijitCalendarIncrementControl,.dijitCalendarDateTemplate,.dijitCalendarMonthLabel,.dijitCalendarPreviousYear,.dijitCalendarNextYear {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitCalendarDisabledDate {color: gray; text-decoration: line-through; cursor: default;}.dijitSpacer {position: relative; height: 1px; overflow: hidden; visibility: hidden;}.dijitCalendarMonthMenu .dijitCalendarMonthLabel {text-align:center;}.dijitMenu {border:1px solid black; background-color:white;}.dijitMenuTable {border-collapse:collapse; border-width:0; background-color:white;}.dj_webkit .dijitMenuTable td[colspan="2"]{border-right:hidden;}.dijitMenuItem {text-align: left; white-space: nowrap; padding:.1em .2em; cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitMenuItem:focus {outline: none}.dijitMenuPassive .dijitMenuItemHover,.dijitMenuItemSelected {background-color:black; color:white;}.dijitMenuItemIcon, .dijitMenuExpand {background-repeat: no-repeat;}.dijitMenuItemDisabled * {opacity:0.5; cursor:default;}.dj_ie .dj_a11y .dijitMenuItemDisabled,.dj_ie .dj_a11y .dijitMenuItemDisabled *,.dj_ie .dijitMenuItemDisabled * {color: gray; filter: alpha(opacity=35);}.dijitMenuItemLabel {vertical-align: middle;}.dj_a11y .dijitMenuItemSelected {border: 1px dotted black !important;}.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel {border-width: 1px; border-style: solid;}.dj_ie8 .dj_a11y .dijitMenuItemLabel {position:static;}.dijitMenuExpandA11y {display: none;}.dj_a11y .dijitMenuExpandA11y {display: inline;}.dijitMenuSeparator td {border: 0; padding: 0;}.dijitMenuSeparatorTop {height: 50%; margin: 0; margin-top:3px; font-size: 1px;}.dijitMenuSeparatorBottom {height: 50%; margin: 0; margin-bottom:3px; font-size: 1px;}.dijitMenuItemIconChar {display: none; visibility: hidden;}.dj_a11y .dijitMenuItemIconChar {display: inline;}.dijitCheckedMenuItemChecked .dijitMenuItemIconChar,.dijitRadioMenuItemChecked .dijitMenuItemIconChar {visibility: visible;}.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem {margin: 0;}.dijitStackController .dijitToggleButtonChecked * {cursor: default;}.dijitTabContainer {z-index: 0; overflow: visible;}.dj_ie6 .dijitTabContainer {overflow: hidden;}.dijitTabContainerNoLayout {width: 100%;}.dijitTabContainerBottom-tabs,.dijitTabContainerTop-tabs,.dijitTabContainerLeft-tabs,.dijitTabContainerRight-tabs {z-index: 1; overflow: visible !important;}.dijitTabController {z-index: 1;}.dijitTabContainerBottom-container,.dijitTabContainerTop-container,.dijitTabContainerLeft-container,.dijitTabContainerRight-container {z-index:0; overflow: hidden; border: 1px solid black;}.nowrapTabStrip {width: 50000px; display: block; position: relative; text-align: left; z-index: 1;}.dijitTabListWrapper {overflow: hidden; z-index: 1;}.dj_a11y .tabStripButton img {display: none;}.dijitTabContainerTop-tabs {border-bottom: 1px solid black;}.dijitTabContainerTop-container {border-top: 0;}.dijitTabContainerLeft-tabs {border-right: 1px solid black; float: left;}.dijitTabContainerLeft-container {border-left: 0;}.dijitTabContainerBottom-tabs {border-top: 1px solid black;}.dijitTabContainerBottom-container {border-bottom: 0;}.dijitTabContainerRight-tabs {border-left: 1px solid black; float: left;}.dijitTabContainerRight-container {border-right: 0;}div.dijitTabDisabled, .dj_ie div.dijitTabDisabled {cursor: auto;}.dijitTab {position:relative; cursor:pointer; -webkit-tap-highlight-color: transparent; white-space:nowrap; z-index:3;}.dijitTab * {vertical-align: middle;}.dijitTabChecked {cursor: default;}.dijitTabContainerTop-tabs .dijitTab {top: 1px;}.dijitTabContainerBottom-tabs .dijitTab {top: -1px;}.dijitTabContainerLeft-tabs .dijitTab {left: 1px;}.dijitTabContainerRight-tabs .dijitTab {left: -1px;}.dijitTabContainerTop-tabs .dijitTab,.dijitTabContainerBottom-tabs .dijitTab {display:inline-block; #zoom: 1; #display:inline;}.tabStripButton {z-index: 12;}.dijitTabButtonDisabled .tabStripButton {display: none;}.dijitTabCloseButton {margin-left: 1em;}.dijitTabCloseText {display:none;}.dijitTab .tabLabel {min-height: 15px; display: inline-block;}.dijitNoIcon {display: none;}.dj_ie6 .dijitTab .dijitNoIcon {display: inline; height: 15px; width: 1px;}.dj_a11y .dijitTabCloseButton {background-image: none !important; width: auto !important; height: auto !important;}.dj_a11y .dijitTabCloseText {display: inline;}.dijitTabPane,.dijitStackContainer-child,.dijitAccordionContainer-child {border: none !important;}.dijitInlineEditBoxDisplayMode {border: 1px solid transparent; cursor: text;}.dj_a11y .dijitInlineEditBoxDisplayMode,.dj_ie6 .dijitInlineEditBoxDisplayMode {border: none;}.dijitInlineEditBoxDisplayModeHover,.dj_a11y .dijitInlineEditBoxDisplayModeHover,.dj_ie6 .dijitInlineEditBoxDisplayModeHover {background-color: #e2ebf2; border: solid 1px black;}.dijitInlineEditBoxDisplayModeDisabled {cursor: default;}.dijitTree {overflow: auto; -webkit-tap-highlight-color: transparent; -moz-user-select: none;}.dijitTreeContainer {float: left;}.dijitTreeIndent {width: 19px;}.dijitTreeRow, .dijitTreeContent {white-space: nowrap;}.dj_ie .dijitTreeLabel:focus {outline: 1px dotted black;}.dijitTreeRow img {vertical-align: middle;}.dijitTreeContent {cursor: default;}.dijitExpandoText {display: none;}.dj_a11y .dijitExpandoText {display: inline; padding-left: 10px; padding-right: 10px; font-family: monospace; border-style: solid; border-width: thin; cursor: pointer;}.dijitTreeLabel {margin: 0 4px;}.dijitDialog {position: absolute; z-index: 999; overflow: hidden;}.dijitDialogTitleBar {cursor: move;}.dijitDialogFixed .dijitDialogTitleBar {cursor:default;}.dijitDialogCloseIcon {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitDialogPaneContent {-webkit-overflow-scrolling: touch;}.dijitDialogUnderlayWrapper {position: absolute; left: 0; top: 0; z-index: 998; display: none; background: transparent !important;}.dijitDialogUnderlay {background: #eee; opacity: 0.5;}.dj_ie .dijitDialogUnderlay {filter: alpha(opacity=50);}.dj_a11y .dijitSpinnerButtonContainer,.dj_a11y .dijitDialog {opacity: 1 !important; background-color: white !important;}.dijitDialog .closeText {display:none; position:absolute;}.dj_a11y .dijitDialog .closeText {display:inline;}.dijitSliderMoveable {z-index:99; position:absolute !important; display:block; vertical-align:middle;}.dijitSliderMoveableH {right:0;}.dijitSliderMoveableV {right:50%;}.dj_a11y div.dijitSliderImageHandle,.dijitSliderImageHandle {margin:0; padding:0; position:relative !important; border:8px solid gray; width:0; height:0; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dj_iequirks .dj_a11y .dijitSliderImageHandle {font-size: 0;}.dj_ie7 .dijitSliderImageHandle {overflow: hidden;}.dj_ie7 .dj_a11y .dijitSliderImageHandle {overflow: visible;}.dj_a11y .dijitSliderFocused .dijitSliderImageHandle {border:4px solid #000; height:8px; width:8px;}.dijitSliderImageHandleV {top:-8px; right: -50%;}.dijitSliderImageHandleH {left:50%; top:-5px; vertical-align:top;}.dijitSliderBar {border-style:solid; border-color:black; cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSliderBarContainerV {position:relative; height:100%; z-index:1;}.dijitSliderBarContainerH {position:relative; z-index:1;}.dijitSliderBarH {height:4px; border-width:1px 0;}.dijitSliderBarV {width:4px; border-width:0 1px;}.dijitSliderProgressBar {background-color:red; z-index:1;}.dijitSliderProgressBarV {position:static !important; height:0; vertical-align:top; text-align:left;}.dijitSliderProgressBarH {position:absolute !important; width:0; vertical-align:middle; overflow:visible;}.dijitSliderRemainingBar {overflow:hidden; background-color:transparent; z-index:1;}.dijitSliderRemainingBarV {height:100%; text-align:left;}.dijitSliderRemainingBarH {width:100% !important;}.dijitSliderBumper {overflow:hidden; z-index:1;}.dijitSliderBumperV {width:4px; height:8px; border-width:0 1px;}.dijitSliderBumperH {width:8px; height:4px; border-width:1px 0;}.dijitSliderBottomBumper,.dijitSliderLeftBumper {background-color:red;}.dijitSliderTopBumper,.dijitSliderRightBumper {background-color:transparent;}.dijitSliderDecoration {text-align:center;}.dijitSliderDecorationC,.dijitSliderDecorationV {position: relative;}.dijitSliderDecorationH {width: 100%;}.dijitSliderDecorationV {height: 100%; white-space: nowrap;}.dijitSliderButton {font-family:monospace; margin:0; padding:0; display:block;}.dj_a11y .dijitSliderButtonInner {visibility:visible !important;}.dijitSliderButtonContainer {text-align:center; height:0;}.dijitSliderButtonContainer * {cursor: pointer; -webkit-tap-highlight-color: transparent;}.dijitSlider .dijitButtonNode {padding:0; display:block;}.dijitRuleContainer {position:relative; overflow:visible;}.dijitRuleContainerV {height:100%; line-height:0; float:left; text-align:left;}.dj_opera .dijitRuleContainerV {line-height:2%;}.dj_ie .dijitRuleContainerV {line-height:normal;}.dj_gecko .dijitRuleContainerV {margin:0 0 1px 0;}.dijitRuleMark {position:absolute; border:1px solid black; line-height:0; height:100%;}.dijitRuleMarkH {width:0; border-top-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important;}.dijitRuleLabelContainer {position:absolute;}.dijitRuleLabelContainerH {text-align:center; display:inline-block;}.dijitRuleLabelH {position:relative; left:-50%;}.dijitRuleLabelV {text-overflow: ellipsis; white-space: nowrap; overflow: hidden;}.dijitRuleMarkV {height:0; border-right-width:0 !important; border-bottom-width:0 !important; border-left-width:0 !important; width:100%; left:0;}.dj_ie .dijitRuleLabelContainerV {margin-top:-.55em;}.dj_a11y .dijitSliderReadOnly,.dj_a11y .dijitSliderDisabled {opacity:0.6;}.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar,.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar {filter: alpha(opacity=40);}.dj_a11y .dijitSlider .dijitSliderButtonContainer div {font-family: monospace; font-size: 1em; line-height: 1em; height: auto; width: auto; margin: 0 4px;}.dj_a11y .dijitButtonContents .dijitButtonText,.dj_a11y .dijitTab .tabLabel {display: inline !important;}.dj_a11y .dijitSelect .dijitButtonText {display: inline-block !important;}.dijitTextArea {width:100%; overflow-y: auto;}.dijitTextArea[cols] {width:auto;}.dj_ie .dijitTextAreaCols {width:auto;}.dijitExpandingTextArea {resize: none;}.dijitToolbarSeparator {height: 18px; width: 5px; padding: 0 1px; margin: 0;}.dijitIEFixedToolbar {position:absolute; top: expression(eval((document.documentElement||document.body).scrollTop));}.dijitEditor {display: block;}.dijitEditorDisabled,.dijitEditorReadOnly {color: gray;}.dijitTimePicker {background-color: white;}.dijitTimePickerItem {cursor:pointer; -webkit-tap-highlight-color: transparent;}.dijitTimePickerItemHover {background-color:gray; color:white;}.dijitTimePickerItemSelected {font-weight:bold; color:#333; background-color:#b7cdee;}.dijitTimePickerItemDisabled {color:gray; text-decoration:line-through;}.dijitTimePickerItemInner {text-align:center; border:0; padding:2px 8px 2px 8px;}.dijitTimePickerTick,.dijitTimePickerMarker {border-bottom:1px solid gray;}.dijitTimePicker .dijitDownArrowButton {border-top: none !important;}.dijitTimePickerTick {color:#CCC;}.dijitTimePickerMarker {color:black; background-color:#CCC;}.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner {border: solid 4px black;}.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner {border: dashed 4px black;}.dijitToggleButtonIconChar {display:none !important;}.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar {display:inline !important; visibility:hidden;}.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText {font-family: "Arial Unicode MS";}.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar {display: inline !important; visibility:visible !important;}.dijitArrowButtonChar {display:none !important;}.dj_a11y .dijitArrowButtonChar {display:inline !important;}.dj_a11y .dijitDropDownButton .dijitArrowButtonInner,.dj_a11y .dijitComboButton .dijitArrowButtonInner {display:none !important;}.dj_a11y .dijitSelect {border-collapse: separate !important; border-width: 1px; border-style: solid;}.dj_ie .dijitSelect {vertical-align: middle;}.dj_ie6 .dijitSelect .dijitValidationContainer,.dj_ie8 .dijitSelect .dijitButtonText {vertical-align: top;}.dj_ie6 .dijitTextBox .dijitInputContainer,.dj_iequirks .dijitTextBox .dijitInputContainer,.dj_ie6 .dijitTextBox .dijitArrowButtonInner,.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner,.dijitSelect .dijitSelectLabel {vertical-align: baseline;}.dijitNumberTextBox {text-align: left; direction: ltr;}.dijitNumberTextBox .dijitInputInner {text-align: inherit;}.dijitNumberTextBox input.dijitInputInner,.dijitCurrencyTextBox input.dijitInputInner,.dijitSpinner input.dijitInputInner {text-align: right;}.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner,.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner,.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner {padding-right: 1px !important;}.dijitToolbar .dijitSelect {margin: 0;}.dj_webkit .dijitToolbar .dijitSelect {padding-left: 0.3em;}.dijitSelect .dijitButtonContents {padding: 0; white-space: nowrap; text-align: left; border-style: none solid none none; border-width: 1px;}.dijitSelectFixedWidth .dijitButtonContents {width: 100%;}.dijitSelectMenu .dijitMenuItemIcon {display:none;}.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel,.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel {position: static;}.dijitSelectLabel *{vertical-align: baseline;}.dijitSelectSelectedOption * {font-weight: bold;}.dijitSelectMenu {border-width: 1px;}.dijitForceStatic {position: static !important;}.dijitReadOnly *,.dijitDisabled *,.dijitReadOnly,.dijitDisabled {cursor: default;}.dojoDndItem {padding: 2px; -webkit-touch-callout: none; -webkit-user-select: none;}.dojoDndHorizontal .dojoDndItem {#display: inline; display: inline-block;}.dojoDndItemBefore,.dojoDndItemAfter {border: 0px solid #369;}.dojoDndItemBefore {border-width: 2px 0 0 0; padding: 0 2px 2px 2px;}.dojoDndItemAfter {border-width: 0 0 2px 0; padding: 2px 2px 0 2px;}.dojoDndHorizontal .dojoDndItemBefore {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.dojoDndHorizontal .dojoDndItemAfter {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dojoDndItemOver {cursor:pointer;}.dj_gecko .dijitArrowButtonInner INPUT,.dj_gecko INPUT.dijitArrowButtonInner {-moz-user-focus:ignore;}.dijitFocused .dijitMenuItemShortcutKey {text-decoration: underline;}.dijitIconSave,.dijitIconPrint,.dijitIconCut,.dijitIconCopy,.dijitIconClear,.dijitIconDelete,.dijitIconUndo,.dijitIconEdit,.dijitIconNewTask,.dijitIconEditTask,.dijitIconEditProperty,.dijitIconTask,.dijitIconFilter,.dijitIconConfigure,.dijitIconSearch,.dijitIconApplication,.dijitIconBookmark,.dijitIconChart,.dijitIconConnector,.dijitIconDatabase,.dijitIconDocuments,.dijitIconMail,.dijitLeaf,.dijitIconFile,.dijitIconFunction,.dijitIconKey,.dijitIconPackage,.dijitIconSample,.dijitIconTable,.dijitIconUsers,.dijitFolderClosed,.dijitIconFolderClosed,.dijitFolderOpened,.dijitIconFolderOpen,.dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled.png"); width: 16px; height: 16px;}.dj_ie6 .dijitIconSave,.dj_ie6 .dijitIconPrint,.dj_ie6 .dijitIconCut,.dj_ie6 .dijitIconCopy,.dj_ie6 .dijitIconClear,.dj_ie6 .dijitIconDelete,.dj_ie6 .dijitIconUndo,.dj_ie6 .dijitIconEdit,.dj_ie6 .dijitIconNewTask,.dj_ie6 .dijitIconEditTask,.dj_ie6 .dijitIconEditProperty,.dj_ie6 .dijitIconTask,.dj_ie6 .dijitIconFilter,.dj_ie6 .dijitIconConfigure,.dj_ie6 .dijitIconSearch,.dj_ie6 .dijitIconApplication,.dj_ie6 .dijitIconBookmark,.dj_ie6 .dijitIconChart,.dj_ie6 .dijitIconConnector,.dj_ie6 .dijitIconDatabase,.dj_ie6 .dijitIconDocuments,.dj_ie6 .dijitIconMail,.dj_ie6 .dijitLeaf,.dj_ie6 .dijitIconFile,.dj_ie6 .dijitIconFunction,.dj_ie6 .dijitIconKey,.dj_ie6 .dijitIconPackage,.dj_ie6 .dijitIconSample,.dj_ie6 .dijitIconTable,.dj_ie6 .dijitIconUsers,.dj_ie6 .dijitFolderClosed,.dj_ie6 .dijitIconFolderClosed,.dj_ie6 .dijitFolderOpened,.dj_ie6 .dijitIconFolderOpen,.dj_ie6 .dijitIconError {background-image: url("../../icons/images/commonIconsObjActEnabled8bit.png");}.dijitDisabled .dijitIconSave,.dijitDisabled .dijitIconPrint,.dijitDisabled .dijitIconCut,.dijitDisabled .dijitIconCopy,.dijitDisabled .dijitIconClear,.dijitDisabled .dijitIconDelete,.dijitDisabled .dijitIconUndo,.dijitDisabled .dijitIconEdit,.dijitDisabled .dijitIconNewTask,.dijitDisabled .dijitIconEditTask,.dijitDisabled .dijitIconEditProperty,.dijitDisabled .dijitIconTask,.dijitDisabled .dijitIconFilter,.dijitDisabled .dijitIconConfigure,.dijitDisabled .dijitIconSearch,.dijitDisabled .dijitIconApplication,.dijitDisabled .dijitIconBookmark,.dijitDisabled .dijitIconChart,.dijitDisabled .dijitIconConnector,.dijitDisabled .dijitIconDatabase,.dijitDisabled .dijitIconDocuments,.dijitDisabled .dijitIconMail,.dijitDisabled .dijitLeaf,.dijitDisabled .dijitIconFile,.dijitDisabled .dijitIconFunction,.dijitDisabled .dijitIconKey,.dijitDisabled .dijitIconPackage,.dijitDisabled .dijitIconSample,.dijitDisabled .dijitIconTable,.dijitDisabled .dijitIconUsers,.dijitDisabled .dijitFolderClosed,.dijitDisabled .dijitIconFolderClosed,.dijitDisabled .dijitFolderOpened,.dijitDisabled .dijitIconFolderOpen,.dijitDisabled .dijitIconError {background-image: url("../../icons/images/commonIconsObjActDisabled.png");}.dijitIconSave {background-position: 0;}.dijitIconPrint {background-position: -16px;}.dijitIconCut {background-position: -32px;}.dijitIconCopy {background-position: -48px;}.dijitIconClear {background-position: -64px;}.dijitIconDelete {background-position: -80px;}.dijitIconUndo {background-position: -96px;}.dijitIconEdit {background-position: -112px;}.dijitIconNewTask {background-position: -128px;}.dijitIconEditTask {background-position: -144px;}.dijitIconEditProperty {background-position: -160px;}.dijitIconTask {background-position: -176px;}.dijitIconFilter {background-position: -192px;}.dijitIconConfigure {background-position: -208px;}.dijitIconSearch {background-position: -224px;}.dijitIconError {background-position: -496px;} .dijitIconApplication {background-position: -240px;}.dijitIconBookmark {background-position: -256px;}.dijitIconChart {background-position: -272px;}.dijitIconConnector {background-position: -288px;}.dijitIconDatabase {background-position: -304px;}.dijitIconDocuments {background-position: -320px;}.dijitIconMail {background-position: -336px;}.dijitIconFile, .dijitLeaf {background-position: -352px;}.dijitIconFunction {background-position: -368px;}.dijitIconKey {background-position: -384px;}.dijitIconPackage{background-position: -400px;}.dijitIconSample {background-position: -416px;}.dijitIconTable {background-position: -432px;}.dijitIconUsers {background-position: -448px;}.dijitIconFolderClosed, .dijitFolderClosed {background-position: -464px;}.dijitIconFolderOpen, .dijitFolderOpened {background-position: -480px;}.dijitIconLoading {background: url("../../icons/images/loadingAnimation.gif") no-repeat; height: 20px; width: 20px;}.tundra .dojoDndItemOver {background-image: url("images/treeHover.png");}.tundra .dojoDndItemAnchor,.tundra .dojoDndItemSelected {background-color: #E2EBFE;}.tundra table.dojoDndAvatar {-moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;}.tundra .dojoDndAvatar td {border: none;}.tundra .dojoDndAvatar tr {border: none;}.tundra .dojoDndAvatarHeader td {height: 20px; padding: 0 0 0 21px;}.tundra .dojoDndAvatarItem td {padding: 2px;}.tundra.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoMove.png"); background-repeat: no-repeat; background-position: 2px center;}.tundra.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url("images/dndNoCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.tundra.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndMove.png"); background-repeat: no-repeat; background-position: 2px center;}.tundra.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url("images/dndCopy.png"); background-repeat: no-repeat; background-position: 2px center;}.tundra .dijitIconLoading {background:url("images/loading.gif") no-repeat left center; width: 24px; height: 24px;}.tundra .dijitIconError {background:url("images/warning.png") no-repeat left center; width: 16px; height: 16px;}.tundra .dijitContentPane {padding: 0;}.tundra .dijitTabContainerTop-dijitContentPane,.tundra .dijitTabContainerLeft-dijitContentPane,.tundra .dijitTabContainerBottom-dijitContentPane,.tundra .dijitTabContainerRight-dijitContentPane,.tundra .dijitAccordionContainer-dijitContentPane {background-color: #fff; padding: 5px;}.tundra .dijitSplitContainer-dijitContentPane,.tundra .dijitBorderContainer-dijitContentPane {background-color: #fff; padding: 5px;}.tundra .dijitTabPaneWrapper {background:#fff; border:1px solid #ccc; margin: 0; padding: 0;}.tundra .dijitTab {line-height:normal; margin-right:4px; padding:2px 8px 2px 9px; border:1px solid #ccc; background:#e2e2e2 url("images/tabEnabled.png") repeat-x;}.tundra .dijitTabSpacer {display: none;}.tundra .dijitTabContainer .tabStripRBtn {margin-right: 20px;}.tundra .dijitTabContainer .tabStripLBtn {margin-left: 20px;}.tundra .nowrapTabStrip .dijitTab {top: 2px;}.tundra .dijitTabContainerBottom .nowrapTabStrip .dijitTab {top: 0; bottom: 2px;}.tundra .dijitTabChecked {background-color:#fff; border-color: #ccc; background-image:none;}.tundra .dijitTabHover {color: #243C5F; border-top-color:#92a0b3; border-left-color:#92a0b3; border-right-color:#92a0b3; border-bottom-color:#92a0b3; background:#e2e2e2 url("images/tabHover.gif") repeat-x;}.tundra .dijitTabContainerTop .dijitTabHover {border-bottom-color:#ccc;}.tundra .dijitTabContainerBottom .dijitTabHover {border-top-color:#ccc;}.tundra .dijitTabContainerLeft .dijitTabHover {border-right-color:#ccc;}.tundra .dijitTabContainerRight .dijitTabHover {border-left-color:#ccc;}.tundra .dijitTabContainer .dijitTabCheckedHover {color: inherit; border:1px solid #ccc; background:#fff;}.tundra .dijitTab .tabLabel {min-height: 12px; display: inline-block;}.tundra .dijitTabContainerNested .dijitTabListWrapper {height: auto;}.tundra .dijitTabContainerNested .dijitTabContainerTop-tabs {border-bottom: 1px solid #CCC;}.tundra .dijitTabContainerTabListNested .dijitTab {background: none; border: none; top: 0;}.tundra .dijitTabContainerTabListNested .dijitTabHover .tabLabel {text-decoration: underline;}.tundra .dijitTabContainerTabListNested .dijitTabChecked .tabLabel {text-decoration: underline; font-weight: bold;}.tundra .dijitTabContainer .dijitTabPaneWrapperNested {border: none;}.tundra .dijitTabCloseButton {background: url("images/tabClose.png") no-repeat right top; width: 12px; height: 12px;}.dj_ie6 .tundra .dijitTabCloseButton {background-image : url("images/tabClose.gif");}.tundra .dijitTabCloseButtonHover {background-image : url("images/tabCloseHover.png");}.dj_ie6 .tundra .dijitTabCloseButtonHover {background-image : url("images/tabCloseHover.gif");}.tundra .dijitTabContainerTop-tabs {margin-bottom: 0; border-color: #cccccc; padding-left: 3px; background-position: bottom;}.tundra .dijitTabContainerTop-tabs .dijitTab {top: 0; margin-bottom: -1px;}.tundra .dijitTabContainerTop-container {border-top: none;}.tundra .dijitTabContainerTop-tabs .dijitTabChecked {border-bottom-color:white;}.tundra .dijitTabContainerTop-tabs,.tundra .dijitTabContainerBottom-tabs {padding-left: 3px; padding-right: 3px;}.tundra .dijitTabContainerTopStrip {border-top: 1px solid #CCC; border-right: 1px solid #CCC; border-left: 1px solid #CCC; padding-top: 2px; background: #f2f2f2;}.tundra .dijitTabContainerTopNone {padding-top: 0;}.tundra .dijitTabContainerBottom-tabs {margin-top: 0; border-color: #cccccc; background-position: top; padding-left: 3px;}.tundra .dijitTabContainerBottom-tabs .dijitTab {bottom: 0; margin-top: -1px;}.tundra .dijitTabContainerBottom-container {border-bottom: none;}.tundra .dijitTabContainerBottom-tabs .dijitTabChecked {border-top-color:white;}.tundra .dijitTabContainerBottomStrip {padding-bottom: 2px; border: 1px solid #ccc; background: #f2f2f2; border-top: none;}.tundra .dijitTabContainerRight-tabs {border-color: #ccc; height: 100%; padding-top: 3px;}.tundra .dijitTabContainerRightStrip {margin-left: -1px;}.tundra .dijitTabContainerRight-container {border-right: none;}.tundra .dijitTabContainerRight-tabs .dijitTabChecked {border-left-color:white;}.tundra .dijitTabContainerRightStrip {padding-right: 2px; border: 1px solid #ccc;}.tundra .dijitTabContainerRightStrip {background: #f2f2f2;}.tundra .dijitTabContainerLeft-tabs {border-color: #ccc; padding-top: 3px; height: 100%;}.tundra .dijitTabContainerLeft-container {border-left: none;}.tundra .dijitTabContainerLeft-tabs .dijitTabChecked {border-right-color:white;}.tundra .dijitTabContainerLeftStrip {padding-left: 2px; border: 1px solid #ccc; background: #f2f2f2; border-right: none;}.tundra .dijitTabContainerLeft-tabs .dijitTab,.tundra .dijitTabContainerRight-tabs .dijitTab {margin-right:0; margin-bottom:4px;}.tundra .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs {border-left: 0 solid #ccc; border-top: 0 solid #ccc; border-right: 0 solid #ccc; padding-top: 0; padding-left: 0;}.tundra .dijitTabContainer .tabStripButton {margin-right: 0; padding-top: 2px; z-index: 12;}.tundra .dijitTabContainerBottom .tabStripButton {padding-top: 3px;}.tundra .tabStrip-disabled .tabStripButton {padding-bottom: 3px; padding-top: 1px;}.tundra .tabStripButton {padding: 3px 2px 4px 2px;}.tundra .dijitTabStripIcon {height: 14px; width: 14px; background: url("images/spriteRoundedIconsSmall.png") no-repeat left top ;}.dj_ie6 .tundra .dijitTabStripIcon {background-image: url("images/spriteRoundedIconsSmall.gif");}.tundra .dijitTabStripSlideRightIcon {background-position: -30px top;}.tundra .dijitTabStripMenuIcon {background-position: -15px top;}.tundra .dijitAccordionContainer {border-color: #ccc; background-color: #fff;}.tundra .dijitAccordionTitle {background:#fafafa url("images/titleBar.png") repeat-x bottom left; border-top: 1px solid #bfbfbf; padding: 4px 4px 4px 8px;}.tundra .dijitAccordionTitleHover {background: #f8fafd url("images/accordionItemHover.gif") bottom repeat-x;}.tundra .dijitAccordionTitleSelected {background: #f9f9f9 url("images/accordionItemActive.gif") bottom repeat-x; font-weight: bold; border-top: 1px solid #aaaaaa; border-bottom: 1px solid #bfbfbf; padding: 4px 4px 4px 8px;}.tundra .dijitSplitContainerSizerH {background:url("images/splitContainerSizerV.png") repeat-y #fff; border:0; border-left:1px solid #bfbfbf; border-right:1px solid #bfbfbf; width:7px;}.tundra .dijitSplitContainerSizerH .thumb {background:url("images/splitContainerSizerV-thumb.png") no-repeat #ccc; left:1px; width:3px; height:19px; overflow: hidden;}.tundra .dijitSplitContainerSizerV {background:url("images/splitContainerSizerH.png") repeat-x #fff; border:0; border-top:1px solid #bfbfbf; border-bottom:1px solid #bfbfbf; height:7px;}.tundra .dijitSplitContainerSizerV .thumb {background:url("images/splitContainerSizerH-thumb.png") no-repeat #ccc; top:1px; width:19px; height:3px; overflow: hidden;}.tundra .dijitBorderContainer {background-color: #fcfcfc; padding: 5px;}.tundra .dijitSplitContainer-child,.tundra .dijitBorderContainer-child {border: 1px #ccc solid;}.tundra .dijitBorderContainer-dijitTabContainerTop,.tundra .dijitBorderContainer-dijitTabContainerBottom,.tundra .dijitBorderContainer-dijitTabContainerLeft,.tundra .dijitBorderContainer-dijitTabContainerRight {border: none;}.tundra .dijitBorderContainer-dijitBorderContainer {border: none; padding: 0;}.tundra .dijitSplitterH,.tundra .dijitGutterH {background:#fcfcfc; border:0; height:5px;}.tundra .dijitSplitterH .dijitSplitterThumb {background:#B0B0B0 none; height:1px; top:2px; width:19px;}.tundra .dijitSplitterV,.tundra .dijitGutterV {background:#fcfcfc; border:0; width:5px;}.tundra .dijitSplitterV .dijitSplitterThumb {background:#B0B0B0 none; height:19px; left:2px; width:1px;}.tundra .dijitSplitterActive {font-size: 1px; background-image: none; background-color: #aaa; -moz-opacity: 0.6; opacity: 0.6; filter: Alpha(Opacity=60); margin: 0;}.tundra .dijitInputContainer input {margin: 0 0.1em;}.tundra .dijitTextArea {padding: 3px;}.tundra .dijitSelect .dijitButtonContents,.tundra .dijitSelect,.tundra .dijitTextBox {background:#fff url("images/validationInputBg.png") repeat-x top left; #background:#fff url("images/validationInputBg.gif") repeat-x top left;}.tundra .dijitSelect,.tundra .dijitTextBox {border:1px solid #b3b3b3;}.tundra .dijitSelect .dijitArrowButton,.tundra .dijitComboBox .dijitButtonNode {padding: 0 0.2em;}.tundra .dijitSelect .dijitButtonContents,.tundra .dijitTextBox .dijitButtonNode {border-color: #9b9b9b;}.tundra .dijitSelectFocused,.tundra .dijitTextBoxFocused {border-color:#406b9b;}.tundra .dijitSelectFocused TD,.tundra .dijitTextBoxFocused .dijitButtonNode {border-color:#366dba;}.tundra .dijitError {background-color:#f9f7ba; background-image:none;}.tundra .dijitErrorFocused {background-color:#f9f999; background-image:none;}.tundra .dijitValidationTextBoxError .dijitValidationIcon {width: 16px; background: transparent url("images/warning.png") no-repeat center center;}.tundra .dijitComboBoxHighlightMatch {background-color:#a5beda;}.tundra .dijitFocusedLabel {outline: 1px dotted #666666;}.tundra .dijitButtonNode {border: 1px solid #c0c0c0; border-bottom: 1px solid #9b9b9b; padding: 0.1em 0.2em 0.2em 0.2em; background: #fff url("images/buttonEnabled.png") repeat-x bottom left;}.tundra .dijitButtonText {text-align: center; padding: 0 0.3em;}.tundra .dijitInputField {padding: 0;}.tundra .dijitDisabled .dijitButtonText {color: #7F7F7F;}.tundra .dijitArrowButton {color: #111;}.tundra .dijitComboButton .dijitDownArrowButton {padding-right:4px;}.tundra .dijitTextBoxReadOnly,.tundra .dijitTextBoxReadOnly .dijitButtonNode,.tundra .dijitButtonDisabled .dijitButtonNode,.tundra .dijitToggleButtonDisabled .dijitButtonNode,.tundra .dijitDropDownButtonDisabled .dijitButtonNode,.tundra .dijitComboButtonDisabled .dijitButtonNode,.tundra .dijitTextBoxDisabled,.tundra .dijitTextBoxDisabled .dijitButtonNode {border-color: #d5d5d5 #d5d5d5 #bdbdbd #d5d5d5; background:#e4e4e4 url("images/buttonDisabled.png") top repeat-x;}.tundra .dijitButtonHover .dijitButtonNode,.tundra .dijitButtonNodeHover,.tundra .dijitToggleButtonHover .dijitButtonNode,.tundra .dijitDropDownButtonHover .dijitButtonNode,.tundra .dijitComboButton .dijitButtonContentsHover,.tundra .dijitComboButton .dijitDownArrowButtonHover {border-color: #a5beda; border-bottom-color:#5c7590; color:#243C5F; background:#fcfdff url("images/buttonHover.png") repeat-x bottom;}.tundra .dijitDownArrowButtonHover,.tundra .dijitUpArrowButtonHover {color:#243C5F; background:#fcfdff url("images/buttonHover.png") repeat-x bottom;}.tundra .dijitUpArrowButtonActive,.tundra .dijitDownArrowButtonActive,.tundra .dijitButtonActive .dijitButtonNode,.tundra .dijitToggleButtonActive .dijitButtonNode,.tundra .dijitDropDownButtonActive .dijitButtonNode,.tundra .dijitButtonContentsActive,.tundra .dijitStackController .dijitToggleButtonChecked .dijitButtonNode {border-color:#366dba; background: #ededed url("images/buttonActive.png") bottom repeat-x;}.tundra .dijitArrowButtonInner {background:url("images/spriteArrows.png") no-repeat scroll 0 center; width: 7px; height: 7px; margin: 0 4px 0 4px;}.tundra .dijitTextBox .dijitArrowButtonInner {background-position: 0 center;}.dj_ie6 .tundra .dijitArrowButtonInner {background-image:url("images/spriteArrows.gif");}.tundra .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -7px center;}.tundra .dijitRightArrowButton .dijitArrowButtonInner {background-position: -14px center;}.tundra .dijitUpArrowButton .dijitArrowButtonInner {background-position: -21px center;}.tundra .dijitDisabled .dijitArrowButtonInner {background-position: -28px center;}.tundra .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner {background-position: -35px center;}.tundra .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner {background-position: -42px center;}.tundra .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner {background-position: -49px center;}.dj_ie .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {margin-top: -2px;}.dj_webkit .tundra .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner,.dj_iequirks .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner,.dj_ie8 .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner {margin-top: -1px;}.tundra .dijitSpinnerButtonContainer {width: auto; padding: 0;}.tundra .dijitSpinner .dijitArrowButton {width: 15px;}.tundra .dijitSpinner .dijitSpinnerButtonInner {width: 15px;}.tundra .dijitSpinner .dijitArrowButtonInner .dijitInputField {padding: 0;}.tundra .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/checkmarkNoBorder.png");}.dj_ie6 .tundra .dijitToggleButton .dijitCheckBoxIcon {background-image: url("images/checkmarkNoBorder.gif");}.tundra .dijitCheckBox,.tundra .dijitCheckBoxIcon {background-image: url("images/checkmark.png"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0 2px 0 0; padding: 0;}.dj_ie6 .tundra .dijitCheckBox,.dj_ie6 .tundra .dijitCheckBoxIcon {background-image: url("images/checkmark.gif");}.tundra .dijitCheckBox,.tundra .dijitToggleButton .dijitCheckBoxIcon {background-position: -16px;}.tundra .dijitCheckBoxChecked,.tundra .dijitToggleButtonChecked .dijitCheckBoxIcon {background-position: 0;}.tundra .dijitCheckBoxDisabled {background-position: -48px;}.tundra .dijitCheckBoxCheckedDisabled {background-position: -32px;}.tundra .dijitCheckBoxHover {background-position: -80px;}.tundra .dijitCheckBoxCheckedHover {background-position: -64px;}.tundra .dijitRadio, .tundra .dijitRadioIcon {background-image: url("images/checkmark.png"); background-repeat: no-repeat; width: 16px; height: 16px; margin: 0; padding: 0;}.dj_ie6 .tundra .dijitRadio,.dj_ie6 .tundra .dijitRadioIcon {background-image: url("images/checkmark.gif");}.tundra .dijitToggleButton .dijitRadioIcon {background-image: url("images/checkmarkNoBorder.png");}.dj_ie6 .tundra .dijitToggleButton .dijitRadioIcon {background-image: url("images/checkmarkNoBorder.gif");}.tundra .dijitRadio,.tundra .dijitRadioIcon {background-position: -112px;}.tundra .dijitRadioDisabled {background-position: -144px;}.tundra .dijitRadioHover {background-position: -176px;}.tundra .dijitRadioChecked,.tundra .dijitRadioCheckedHover,.tundra .dijitToggleButtonChecked .dijitRadioIcon {background-position: -96px;}.tundra .dijitRadioCheckedDisabled {background-position: -128px;}.tundra .dijitSliderProgressBarH {border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.tundra .dijitSliderProgressBarV {border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.tundra .dijitSliderFocused .dijitSliderProgressBarH,.tundra .dijitSliderFocused .dijitSliderLeftBumper {background-image:url("images/sliderFullFocus.png");}.tundra .dijitSliderFocused .dijitSliderProgressBarV,.tundra .dijitSliderFocused .dijitSliderBottomBumper {background-image:url("images/sliderFullVerticalFocus.png");}.tundra .dijitSliderRemainingBarV {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y bottom left;}.tundra .dijitSliderRemainingBarH {border-color: #b4b4b4; background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left;}.tundra .dijitSliderBar {border-style: solid; outline:1px;}.tundra .dijitSliderFocused .dijitSliderBar {border-color:#888;}.tundra .dijitSliderImageHandleH {border:0; width:16px; height:16px; background:url("images/preciseSliderThumb.png") no-repeat center top;}.tundra .dijitSliderFocused .dijitSliderImageHandleH {background-image:url("images/preciseSliderThumbFocus.png"); #background-image:url("images/preciseSliderThumbFocus.gif");}.dj_ie6 .tundra .dijitSliderImageHandleH {background-image:url("images/preciseSliderThumb.gif");}.tundra .dijitSliderLeftBumper {border-left-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFull.png") repeat-x top left;}.tundra .dijitSliderRightBumper {background: #dcdcdc url("images/sliderEmpty.png") repeat-x top left; border-color: #b4b4b4; border-right-width: 1px;}.tundra .dijitSliderImageHandleV {border:0; width:16px; height:16px; background:url("images/sliderThumb.png") no-repeat center center;}.tundra .dijitSliderFocused .dijitSliderImageHandleV {background-image:url("images/sliderThumbFocus.png");}.dj_ie6 .tundra .dijitSliderFocused .dijitSliderImageHandleV {background-image:url("images/sliderThumbFocus.gif");}.tundra .dijitSliderBottomBumper {border-bottom-width: 1px; border-color: #aab0bb; background: #c0c2c5 url("images/sliderFullVertical.png") repeat-y bottom left;}.tundra .dijitSliderTopBumper {background: #dcdcdc url("images/sliderEmptyVertical.png") repeat-y top left; border-color: #b4b4b4; border-top-width: 1px;}.tundra .dijitSliderDecrementIconH,.tundra .dijitSliderDecrementIconV,.tundra .dijitSliderIncrementIconH,.tundra .dijitSliderIncrementIconV {background-image: url("images/spriteArrows.png"); background-repeat: no-repeat; margin: 5px; height: 7px; width: 7px; font-size: 1px;}.dj_ie6 .tundra .dijitSliderDecrementIconH,.dj_ie6 .tundra .dijitSliderDecrementIconV,.dj_ie6 .tundra .dijitSliderIncrementIconH,.dj_ie6 .tundra .dijitSliderIncrementIconV {background-image: url("images/spriteArrows.gif");}.tundra .dijitSliderDecrementIconH {background-position: -7px 0;}.tundra .dijitSliderIncrementIconH {background-position: -14px 0;}.tundra .dijitSliderDecrementIconV {background-position: 0 0;}.tundra .dijitSliderIncrementIconV {background-position: -21px 0;}.tundra .dijitSliderButtonInner {visibility:hidden;}.tundra .dijitSliderReadOnly *,.tundra .dijitSliderDisabled * {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; color: #bdbdbd;}.tundra .dijitSliderReadOnly .dijitSliderDecrementIconH,.tundra .dijitSliderDisabled .dijitSliderDecrementIconH {background-position: -35px 0;}.tundra .dijitSliderReadOnly .dijitSliderIncrementIconH,.tundra .dijitSliderDisabled .dijitSliderIncrementIconH {background-position: -42px 0;}.tundra .dijitSliderReadOnly .dijitSliderDecrementIconV,.tundra .dijitSliderDisabled .dijitSliderDecrementIconV {background-position: -28px 0;}.tundra .dijitSliderReadOnly .dijitSliderIncrementIconV,.tundra .dijitSliderDisabled .dijitSliderIncrementIconV {background-position: -49px 0;}.tundra .dijitSelectError .dijitButtonContents,.tundra .dijitSelectHover .dijitArrowButton,.tundra .dijitSelectActive .dijitArrowButton,.tundra .dijitSelectOpened .dijitArrowButton,.tundra .dijitSelectDisabled .dijitArrowButton,.tundra .dijitSelectReadOnly .dijitArrowButton {background: transparent none;}.tundra .dijitSelect .dijitArrowButton {background: #fff url("images/buttonEnabled.png") repeat-x bottom left; border-width: 0;}.tundra .dijitSelectDisabled,.tundra .dijitSelectDisabled TD {border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5 !important; background:#e4e4e4 url("images/buttonDisabled.png") top repeat-x;}.dj_ie .tundra .dijitSelectDisabled TD * {filter: gray() alpha(opacity=50);}.tundra .dijitSelectHover,.tundra .dijitSelectHover TD {border-color:#a5beda #5c7590 #5c7590 #a5beda !important; color:#243C5F; background:#fcfdff url("images/buttonHover.png") repeat-x bottom;}.tundra .dijitSelectActive,.tundra .dijitSelectOpened,.tundra .dijitSelectActive TD,.tundra .dijitSelectOpened TD {border-color:#366dba !important; background: #ededed url("images/buttonActive.png") bottom repeat-x;}.tundra .dijitSelectMenu td {padding: 0;}.tundra .dijitSelectMenu .dijitMenuItemLabel,.tundra .dijitSelectMenu .dijitMenuArrowCell {padding: 0.1em 0.2em;}.tundra .dijitTreeNode {background-image : url("images/i.gif"); background-repeat : repeat-y; zoom: 1;}.tundra .dijitTreeIsLast {background: url("images/i_half.gif") no-repeat;}.tundra .dijitTreeIsRoot {margin-left: 0; background-image: none;}.tundra .dijitTreeExpando {width: 18px; height: 18px;}.tundra .dijitTreeRow {padding-bottom: 2px;}.tundra .dijitTreeContent {min-height: 18px; min-width: 18px;}.tundra .dijitTreeRowSelected .dijitTreeLabel {background:#e2ebfe;}.tundra .dijitTreeRowHover {background-image: url("images/treeHover.png"); background-repeat: repeat; background-color: transparent !important;}.tundra .dijitTreeExpandoOpened {background-image: url("images/treeExpand_minus.gif");}.tundra .dijitTreeExpandoClosed {background-image: url("images/treeExpand_plus.gif");}.tundra .dijitTreeExpandoLeaf {background-image: url("images/treeExpand_leaf.gif");}.tundra .dijitTreeExpandoLoading {background-image: url("images/treeExpand_loading.gif");}.tundra .dijitTreeIcon {width: 16px; height: 16px;}.tundra .dijitFolderOpened {background: url("images/folderOpened.gif") no-repeat;}.tundra .dijitFolderClosed {background: url("images/folderClosed.gif") no-repeat;}.tundra .dijitLeaf {background: url("images/leaf.gif") no-repeat;}.tundra .dijitTreeNode .dojoDndItemBefore,.tundra .dijitTreeNode .dojoDndItemAfter {border-bottom: none; border-top: none;}.tundra .dijitTreeNode .dojoDndItemBefore .dijitTreeContent {border-top: 2px solid #369;}.tundra .dijitTreeNode .dojoDndItemAfter .dijitTreeContent {border-bottom: 2px solid #369;}.tundra .dijitProgressBar {margin:2px 0 2px 0;}.tundra .dijitProgressBarEmpty {background:#fff url("images/progressBarEmpty.png") repeat-x center center; border-color: #a2a2a2 #b8b8b8 #b8b8b8 #a2a2a2;}.tundra .dijitProgressBarTile {background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center;}.tundra .dijitProgressBarFull {border: 0px solid #b8b8b8; border-right-width: 1px;}.tundra .dijitProgressBarLabel {color:#293a4b;}.tundra .dijitProgressBarIndeterminate .dijitProgressBarTile {background:#cad2de url("images/progressBarAnim.gif") repeat-x center center;}.tundra .dijitTitlePaneTitle {background: #cccccc; background:#fff url("images/titleBar.png") repeat-x bottom left; border:1px solid #bfbfbf; padding:3px 4px;}.tundra .dijitTitlePaneTitleHover {background: #f8fafd url("images/accordionItemHover.gif") bottom repeat-x;}.tundra .dijitTitlePane .dijitArrowNode, .tundra .dijitFieldset .dijitArrowNode {background-image: url("images/spriteArrows.png"); background-repeat: no-repeat; background-position: 0 0; height: 7px; width: 7px;}.dj_ie6 .tundra .dijitTitlePane .dijitArrowNode, .dj_ie6 .tundra .dijitFieldset .dijitArrowNode {background-image: url("images/spriteArrows.gif");}.tundra .dijitTitlePane .dijitClosed .dijitArrowNode, .tundra .dijitFieldset .dijitClosed .dijitArrowNode {background-position: -14px 0;}.tundra .dijitTitlePaneContentOuter {background: #ffffff; border:1px solid #bfbfbf; border-top: 0;}.tundra .dijitTitlePaneContentInner {padding:10px;}.tundra .dijitTitlePaneTextNode, .tundra .dijitFieldsetLegendNode {margin-left: 4px; margin-right: 4px;}.tundra .dijitCalendarIncrementControl {width:15px; height:15px; background-image: url("images/spriteRoundedIconsSmall.png"); background-repeat: no-repeat}.dj_ie6 .tundra .dijitCalendarIncrementControl {font-size:.1em; background-image: url("images/spriteRoundedIconsSmall.gif");}.tundra .dijitA11ySideArrow {display: none;}.tundra .dijitCalendarDecrease {background-position: top left;}.tundra .dijitCalendarIncrease {background-position: -30px top;}.tundra .dijitCalendarContainer {font-size: 100%; border-spacing: 0; border-collapse: separate; margin: 0;}.tundra .dijitCalendarMonthContainer {background:#d3d3d3 url("images/titleBar.png") repeat-x top; padding-top:.3em; padding-bottom:.2em; text-align:center;}.dj_ie6 .tundra .dijitCalendarMonthContainer {padding-top:.2em; padding-bottom:.1em;}.tundra .dijitCalendarDayLabelTemplate {background:white url("images/calendarDayLabel.png") repeat-x bottom; font-weight:normal; padding-top:.15em; padding-bottom:0; border-top: 1px solid #eeeeee; color:#293a4b; text-align:center;}.tundra .dijitCalendarBodyContainer {border-bottom: 1px solid #eeeeee;}.tundra .dijitCalendarMonthLabel {color:#293a4b; font-weight: bold; padding: 0 4px;}.tundra .dijitCalendarDateTemplate {font-size: 0.9em; font-weight: bold; text-align: center; padding: 0.3em 0.3em 0.05em 0.3em; letter-spacing: 1px;}.dj_ie .tundra .dijitCalendarDateTemplate {padding: 0.1em .33em 0.02em .33em;}.tundra .dijitCalendarPreviousMonth,.tundra .dijitCalendarNextMonth {color:#999999; background-color:#f8f8f8;}.tundra .dijitCalendarCurrentMonth {background-color: white;}.tundra .dijitCalendarCurrentDate {text-decoration:underline; font-weight:bold;}.tundra .dijitCalendarHoveredDate {background-color: #e2ebf2;}.tundra .dijitCalendarDisabledDate {text-decoration: line-through; background-color: white;}.tundra .dijitCalendarSelectedDate {background-color:#bbc4d0 !important; color:black !important;}.tundra .dijitCalendarYearContainer {background:white url("images/calendarYearLabel.png") repeat-x bottom;}.tundra .dijitCalendarYearLabel {margin:0; padding:0.4em 0 0.25em 0; text-align:center; font-size: 1.17em;}.tundra .dijitCalendarSelectedYear {font-weight:bolder; color:black; padding:0.2em; padding-bottom:0.1em; background-color:#bbc4d0 !important;}.tundra .dijitCalendarNextYear,.tundra .dijitCalendarPreviousYear {color:black !important; font-weight:normal;}.tundra .dijitCalendar .dijitDropDownButton {margin: 0;}.tundra .dijitCalendar .dijitButtonText {padding: 0;}.tundra .dijitCalendar .dijitDropDownButton .dijitButtonNode {background-color: transparent; background-image: none; padding: 0;}.tundra .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover {background-color: #3559ac; color:#fff;}.tundra .dijitTimePickerTick,.tundra .dijitTimePickerMarker {border-color: #ccc;}.tundra .dijitTimePickerTick {color:gray;}.tundra .dijitTimePickerMarker {background:#d3d3d3 url("images/titleBar.png") repeat-x top; color:#293a4b;}.tundra .dijitTimePickerItemSelected {color: black; background: #bbc4d0 none;}.tundra .dijitTimePickerItemHover {background: #60a1ea none; color:white;}.tundra .dijitToolbar {border-bottom: 1px solid #ccc; background:#eaeaea url("images/titleBar.png") repeat-x top left;}.dj_ie6 .tundra .dijitToolbar {height: 10px;}.tundra .dijitToolbar .dijitButtonNode,.tundra .dijitToolbar .dijitComboButton .dijitButtonContents,.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; margin: 0; padding: 0; border: none; font-size: 12px;}.tundra .dijitToolbar .dijitButton,.tundra .dijitToolbar .dijitToggleButton,.tundra .dijitToolbar .dijitDropDownButton,.tundra .dijitToolbar .dijitComboButton .dijitButtonContents,.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton {background: none; padding: 1px;}.tundra .dijitToolbar .dijitButtonChecked,.tundra .dijitToolbar .dijitToggleButtonChecked {background-color:#d4dff2; border:1px solid #316ac5; padding: 0;}.tundra .dijitToolbar .dijitButtonCheckedHover,.tundra .dijitToolbar .dijitToggleButtonCheckedHover {background-color:#abc1e5; border:1px solid #316ac5; padding: 0;}.tundra .dijitToolbar .dijitButtonHover,.tundra .dijitToolbar .dijitToggleButtonHover,.tundra .dijitToolbar .dijitDropDownButtonHover,.tundra .dijitToolbar .dijitComboButton .dijitButtonContentsHover,.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover {border: 1px solid #869cbf; padding: 0; background-color:#e1e5f0;}.tundra .dijitToolbar label {padding: 3px 3px 0 6px;}.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitButtonContentsFocused,.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused {border: 1px #555 dotted !important; padding: 0;}.tundra .dijitToolbarSeparator {background: url("../../icons/images/editorIconsEnabled.png");}.tundra .dijitToolbarRtl .dijitToolbarSeparator {background-image: url("../../icons/images/editorIconsDisabled.png");}.tundra .dijitDialog {background: #fff; border: 1px solid #7eabcd; padding: 0; -webkit-box-shadow: 0 5px 10px #adadad;}.tundra .dijitDialogPaneContent {background: #fff; border-top: 1px solid #d3d3d3; padding:10px;}.tundra .dijitDialogTitleBar {background: #fafafa url("images/titleBar.png") repeat-x top left; padding: 5px 6px 3px 6px; outline:0;}.tundra .dijitDialogTitle {font-weight: bold; padding: 0 4px;}.tundra .dijitDialogCloseIcon {background: url("images/tabClose.png") no-repeat right top; position: absolute; vertical-align: middle; right: 6px; top: 4px; height: 15px; width: 15px;}.dj_ie6 .tundra .dijitDialogCloseIcon {background : url("images/tabClose.gif") no-repeat right top;}.tundra .dijitDialogCloseIconHover {background: url("images/tabCloseHover.png") no-repeat right top;}.dj_ie6 .tundra .dijitDialogCloseIconHover {background : url("images/tabCloseHover.gif") no-repeat right top;}.tundra .dijitTooltip,.tundra .dijitTooltipDialog {background: transparent;}.dijitTooltipBelow {padding-top: 13px;}.dijitTooltipAbove {padding-bottom: 13px;}.tundra .dijitTooltipContainer {background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left; border: 1px solid #7eabcd; padding: 0.45em; -webkit-border-radius: 3px; -moz-border-radius: 3px;}.tundra .dijitTooltipConnector {border:0; z-index: 2;}.tundra .dijitTooltipABRight .dijitTooltipConnector {left: auto !important; right: 3px;}.tundra .dijitTooltipBelow .dijitTooltipConnector {top: 0; left: 3px; background:url("images/tooltipConnectorUp.png") no-repeat top left; width:16px; height:14px;}.dj_ie .tundra .dijitTooltipBelow .dijitTooltipConnector {background-image: url("images/tooltipConnectorUp.gif");}.tundra .dijitTooltipAbove .dijitTooltipConnector {bottom: 0; left: 3px; background:url("images/tooltipConnectorDown.png") no-repeat top left; width:16px; height:14px;}.dj_ie .tundra .dijitTooltipAbove .dijitTooltipConnector {background-image: url("images/tooltipConnectorDown.gif");}.dj_ie6 .tundra .dijitTooltipAbove .dijitTooltipConnector {bottom: -3px;}.tundra .dijitTooltipLeft {padding-right: 14px;}.tundra .dijitTooltipLeft .dijitTooltipConnector {right: 0; background:url("images/tooltipConnectorRight.png") no-repeat top left; width:16px; height:14px;}.dj_ie .tundra .dijitTooltipLeft .dijitTooltipConnector {background-image: url("images/tooltipConnectorRight.gif");}.tundra .dijitTooltipRight {padding-left: 14px;}.tundra .dijitTooltipRight .dijitTooltipConnector {left: 0; background:url("images/tooltipConnectorLeft.png") no-repeat top left; width:16px; height:14px;}.dj_ie .tundra .dijitTooltipRight .dijitTooltipConnector {background-image: url("images/tooltipConnectorLeft.gif");}.dj_webkit .tundra .dijitTooltipContainer {-webkit-box-shadow: 0 5px 10px #adadad;}.tundra .dijitMenu,.tundra .dijitMenuBar {border: 1px solid #7eabcd; margin: 0; padding: 0; background-color: #f7f7f7;}.tundra .dijitMenuTable {border-collapse: separate; border-spacing: 0 0; padding: 0;}.tundra .dijitBorderContainer .dijitMenuBar {border:1px solid #ccc;}.tundra .dijitMenuItem {font-family: sans-serif; margin: 0;}.tundra .dijitMenuItem {padding: 4px 5px;}.tundra .dijitMenuPreviousButton, .tundra .dijitMenuNextButton {font-style: italic;}.tundra .dijitMenuItem td {padding: 2px;}.tundra .dijitMenuPassive .dijitMenuItemHover,.tundra .dijitComboBoxMenu .dijitMenuItemHover,.tundra .dijitMenuItemSelected {background-color: #3559ac; color:#fff;}.tundra .dijitMenuItemIcon {width: 16px; height: 16px;}.tundra .dijitMenuExpand {width: 7px; height: 7px; background-image: url("images/spriteArrows.png"); background-position: -14px 0;}.dj_ie6 .tundra .dijitMenuExpand {background-image: url("images/spriteArrows.gif");}.tundra .dijitMenuSeparatorTop {border-bottom: 1px solid #9b9b9b;}.tundra .dijitMenuSeparatorBottom {border-top: 1px solid #e8e8e8;}.tundra .dijitCheckedMenuItem .dijitMenuItemIcon,.tundra .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("images/checkmark.png"); background-position: -80px;}.dj_ie6 .tundra .dijitCheckedMenuItem .dijitMenuItemIcon,.dj_ie6 .tundra .dijitRadioMenuItem .dijitMenuItemIcon {background-image: url("images/checkmark.gif");}.tundra .dijitCheckedMenuItemChecked .dijitMenuItemIcon {background-position: -64px;}.tundra .dijitRadioMenuItem .dijitMenuItemIcon {background-position: -110px;}.tundra .dijitRadioMenuItemChecked .dijitMenuItemIcon {background-position: -95px;}.dijitEditor {border:1px solid #bfbfbf; border-top:0;}.tundra .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.tundra .dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled.png"); background-repeat: no-repeat; width: 18px; height: 18px; text-align: center;}.dijitDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled.png");}.dijitEditorIconSep {background-position: 0;}.dijitEditorIconSave {background-position: -18px;}.dijitEditorIconPrint {background-position: -36px;}.dijitEditorIconCut {background-position: -54px;}.dijitEditorIconCopy {background-position: -72px;}.dijitEditorIconPaste {background-position: -90px;}.dijitEditorIconDelete {background-position: -108px;}.dijitEditorIconCancel {background-position: -126px;}.dijitEditorIconUndo {background-position: -144px;}.dijitEditorIconRedo {background-position: -162px;}.dijitEditorIconSelectAll {background-position: -180px;}.dijitEditorIconBold {background-position: -198px;}.dijitEditorIconItalic {background-position: -216px;}.dijitEditorIconUnderline {background-position: -234px;}.dijitEditorIconStrikethrough {background-position: -252px;}.dijitEditorIconSuperscript {background-position: -270px;}.dijitEditorIconSubscript {background-position: -288px;}.dijitEditorIconJustifyCenter {background-position: -306px;}.dijitEditorIconJustifyFull {background-position: -324px;}.dijitEditorIconJustifyLeft {background-position: -342px;}.dijitEditorIconJustifyRight {background-position: -360px;}.dijitEditorIconIndent {background-position: -378px;}.dijitEditorIconOutdent {background-position: -396px;}.dijitEditorIconListBulletIndent {background-position: -414px;}.dijitEditorIconListBulletOutdent {background-position: -432px;}.dijitEditorIconListNumIndent {background-position: -450px;}.dijitEditorIconListNumOutdent {background-position: -468px;}.dijitEditorIconTabIndent {background-position: -486px;}.dijitEditorIconLeftToRight {background-position: -504px;}.dijitEditorIconRightToLeft, .dijitEditorIconToggleDir {background-position: -522px;}.dijitEditorIconBackColor {background-position: -540px;}.dijitEditorIconForeColor {background-position: -558px;}.dijitEditorIconHiliteColor {background-position: -576px;}.dijitEditorIconNewPage {background-position: -594px;}.dijitEditorIconInsertImage {background-position: -612px;}.dijitEditorIconInsertTable {background-position: -630px;}.dijitEditorIconSpace {background-position: -648px;}.dijitEditorIconInsertHorizontalRule {background-position: -666px;}.dijitEditorIconInsertOrderedList {background-position: -684px;}.dijitEditorIconInsertUnorderedList {background-position: -702px;}.dijitEditorIconCreateLink {background-position: -720px;}.dijitEditorIconUnlink {background-position: -738px;}.dijitEditorIconViewSource {background-position: -756px;}.dijitEditorIconRemoveFormat {background-position: -774px;}.dijitEditorIconFullScreen {background-position: -792px;}.dijitEditorIconWikiword {background-position: -810px;} .dijitColorPalette {border:1px solid #7eabcd; background:#fff; -moz-border-radius: 0 !important;}.dijitRtl .dijitOffScreen {left: auto !important; right: -10000px !important;}.dijitRtl .dijitPlaceHolder {left: auto; right: 0;}.dijitMenuItemRtl {text-align: right;}.dj_iequirks .dijitComboButtonRtl button {float:left;}.dj_ie .dijitTextBoxRtl .dijitInputContainer {clear: right;}.dijitTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitComboBoxRtl .dijitArrowButtonContainer {border-right-width: 1px !important; border-left-width: 0 !important;}.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton {right: 0; left: auto;}.dijitSelectRtl .dijitButtonText {float: right;}.dijitTextBoxRtl .dijitSpinnerButtonContainer,.dijitValidationTextBoxRtl .dijitValidationContainer,.dijitTextBoxRtl .dijitArrowButtonContainer {float: left;}div.dijitNumberTextBoxRtl {text-align: right;}.dijitCalendarRtl .dijitCalendarDecrementArrow {float: right;}.dijitCalendarRtl .dijitCalendarIncrementArrow {float: left;}.dijitCalendarRtl .dijitCalendarNextYear {margin:0 0.55em 0 0;}.dijitCalendarRtl .dijitCalendarPreviousYear {margin:0 0 0 0.55em;}.dijitSliderRtl .dijitSliderImageHandleV {left:auto;}.dijitSliderRtl .dijitSliderImageHandleH {left:-50%;}.dijitSliderRtl .dijitSliderMoveableH {right:auto; left:0;}.dijitSliderRtl .dijitRuleContainerV {float:right;}.dj_ie .dijitSliderRtl .dijitRuleContainerV {text-align:right;}.dj_ie .dijitSliderRtl .dijitRuleLabelV {text-align:left;}.dj_ie .dijitSliderRtl .dijitRuleLabelH {zoom:1;}.dijitSliderRtl .dijitSliderProgressBarH {float:right; right:0; left:auto;}.dijitRtl .dijitContentPaneLoading .dijitIconLoading,.dijitRtl .dijitContentPaneError .dijitIconError {margin-right: 0; margin-left: 9px;}.dijitTabControllerRtl .nowrapTabStrip {text-align: right;}.dijitTabRtl .dijitTabCloseButton {margin-left: 0; margin-right: 1em;}.dj_ie6 .dijitTabRtl .tabLabel,.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie6 .dijitTabContainerLeft-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerLeft-tabs .dijitTabRtl {zoom: 1;}.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl,.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl {left: 0;}.dj_ie6 .dijitTabContainerRightRtl .dijitTabContainerRight-tabs,.dj_ie6 .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs {width: 1%;}.dj_ie .dijitTimePickerRtl .dijitTimePickerItem {width:100%;}.dijitColorPaletteRtl .dijitColorPaletteUnder {left: auto; right: 0;}.dijitSelectRtl .dijitButtonContents {border-style: none none none solid; text-align: right;}.dijitTreeRtl .dijitTreeContainer {float: right;}.dijitRtl .dojoDndHorizontal .dojoDndItemBefore {border-width: 0 2px 0 0; padding: 2px 0 2px 2px;}.dijitRtl .dojoDndHorizontal .dojoDndItemAfter {border-width: 0 0 0 2px; padding: 2px 2px 2px 0;}.tundra .dijitCalendarRtl .dijitCalendarDecrease {background-position: -30px top;}.tundra .dijitCalendarRtl .dijitCalendarIncrease {background-position: 0 top;}.dj_ie6 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover,.dj_ie7 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover {border-top: 0;}.tundra .dijitDialogRtl .dijitDialogCloseIcon {right: auto; left: 5px;}.tundra .dijitEditorRtl .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled_rtl.png");}.tundra .dijitEditorRtlDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled_rtl.png");}.dijitEditorRtl .dijitEditorIcon {background-image: url("../../icons/images/editorIconsEnabled_rtl.png");}.dijitEditorRtlDisabled .dijitEditorIcon {background-image: url("../../icons/images/editorIconsDisabled_rtl.png");}.dijitToolbarRtl .dijitToolbarSeparator {background-image: url("../../icons/images/editorIconsEnabled_rtl.png");}.tundra .dijitMenuItemRtl .dijitMenuExpand {background-position: -7px 0;}.tundra .dijitTreeNodeRtl,.tundra .dijitTreeNodeRtl .dijitTreeExpandoLeaf {background-image: none;}.tundra .dijitTreeNodeRtl .dijitTreeExpandoOpened {background-image: url("images/treeExpand_minus_rtl.gif");}.tundra .dijitTreeNodeRtl .dijitTreeExpandoClosed {background-image: url("images/treeExpand_plus_rtl.gif");}.tundra .dijitProgressBarRtl .dijitProgressBarFull {border-left-width: 1px; border-right: 0px;}.tundra .dijitProgressBarIndeterminateRtl .dijitProgressBarTile {-moz-transform: scaleX(-1); -o-transform: scaleX(-1); -webkit-transform: scaleX(-1); transform: scaleX(-1); filter: FlipH; -ms-filter: "FlipH";}.tundra .dijitTitlePaneRtl .dijitClosed .dijitArrowNode, .tundra .dijitFieldsetRtl .dijitFieldsetTitleClosed .dijitArrowNode {background-position: -7px 0;}.tundra .dijitTabRtl {padding:2px 9px 2px 8px;}.tundra .dijitSliderRtl .dijitSliderProgressBarH,.tundra .dijitSliderRtl .dijitSliderRemainingBarH,.tundra .dijitSliderRtl .dijitSliderLeftBumper,.tundra .dijitSliderRtl .dijitSliderRightBumper,.tundra .dijitSliderRtl .dijitSliderTopBumper {background-position: top right;}.tundra .dijitSliderRtl .dijitSliderProgressBarV,.tundra .dijitSliderRtl .dijitSliderRemainingBarV,.tundra .dijitSliderRtl .dijitSliderBottomBumper {background-position: bottom right;}.tundra .dijitSliderRtl .dijitSliderLeftBumper {border-left-width: 0; border-right-width: 1px;}.tundra .dijitSliderRtl .dijitSliderRightBumper {border-left-width: 1px; border-right-width: 0;}.tundra .dijitSliderRtl .dijitSliderIncrementIconH {background-position: -7px 0;}.tundra .dijitSliderRtl .dijitSliderDecrementIconH {background-position: -14px 0;} \ No newline at end of file
diff --git a/lib/dojo-src/.gitignore b/lib/dojo-src/.gitignore
index 59692045a..e7854b394 100644
--- a/lib/dojo-src/.gitignore
+++ b/lib/dojo-src/.gitignore
@@ -1,7 +1,8 @@
dijit
dojo
dojox
+dijit-themes
release
util
dojo-release-*
-log* \ No newline at end of file
+log*
diff --git a/lib/dojo-src/rebuild-dojo.sh b/lib/dojo-src/rebuild-dojo.sh
index 1a215e134..ab7f3a0a2 100755
--- a/lib/dojo-src/rebuild-dojo.sh
+++ b/lib/dojo-src/rebuild-dojo.sh
@@ -7,7 +7,7 @@
# Dojo requires Java runtime to build. Further information on rebuilding Dojo
# is available here: http://dojotoolkit.org/reference-guide/build/index.html
-VERSION=1.14.2
+VERSION=1.16.4
# Download and extract dojo src code if it doesn't already exist
if [ ! -d "dojo" ]; then
diff --git a/lib/dojo/LICENSE b/lib/dojo/LICENSE
index 11148fdda..956fc0497 100644
--- a/lib/dojo/LICENSE
+++ b/lib/dojo/LICENSE
@@ -13,7 +13,7 @@ The text of the AFL and BSD licenses is reproduced below.
The "New" BSD License:
**********************
-Copyright (c) 2005-2017, The JS Foundation
+Copyright (c) 2005-2018, The JS Foundation
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/lib/dojo/README.md b/lib/dojo/README.md
index 58f12f93e..b1506a029 100644
--- a/lib/dojo/README.md
+++ b/lib/dojo/README.md
@@ -1,9 +1,9 @@
dojo
====
-This is the foundation package for the Dojo 1 Toolkit. While still being maintained, new development is focused on Dojo 2.
+This is the foundation package for the Dojo 1 Toolkit. While still being maintained, new development is primarily focused on modern Dojo.
-Checkout the [Dojo 2 website](https://dojo.io/) or if you want a more detailed technical status and overview, checkout [`dojo/meta`](https://github.com/dojo/meta).
+Checkout the [Dojo framework website](https://dojo.io/) or if you want a more detailed technical status and overview, checkout the [`Dojo roadmap`](https://dojo.io/community/).
This package is sometimes
referred to as the “core”, it contains the most generally applicable sub-packages
@@ -77,4 +77,4 @@ License and Copyright
The Dojo Toolkit (including this package) is dual licensed under BSD 3-Clause
and AFL. For more information on the license please see the [License
Information](<http://dojotoolkit.org/license>). The Dojo Toolkit is Copyright
-(c) 2005-2017, JS Foundation. All rights reserved.
+(c) 2005-2018, JS Foundation. All rights reserved.
diff --git a/lib/dojo/_base/configNode.js b/lib/dojo/_base/configNode.js
index 9982cd6a6..fbcec916e 100644
--- a/lib/dojo/_base/configNode.js
+++ b/lib/dojo/_base/configNode.js
@@ -79,7 +79,7 @@ exports.config = function(config){
// define debug for console messages during dev instead of console.log
// (node's heavy async makes console.log confusing sometimes)
var util = require("util");
- util.debug(util.inspect(item));
+ util.debuglog(util.inspect(item));
},
eval: function(__text, __urlHint){
diff --git a/lib/dojo/_base/kernel.js b/lib/dojo/_base/kernel.js
index a7c2c0c7f..378e2ab92 100644
--- a/lib/dojo/_base/kernel.js
+++ b/lib/dojo/_base/kernel.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/_base/kernel",["../global","../has","./config","require","module"],function(_1,_2,_3,_4,_5){var i,p,_6={},_7={},_8={config:_3,global:_1,dijit:_6,dojox:_7};var _9={dojo:["dojo",_8],dijit:["dijit",_6],dojox:["dojox",_7]},_a=(_4.map&&_4.map[_5.id.match(/[^\/]+/)[0]]),_b;for(p in _a){if(_9[p]){_9[p][0]=_a[p];}else{_9[p]=[_a[p],{}];}}for(p in _9){_b=_9[p];_b[1]._scopeName=_b[0];if(!_3.noGlobals){_1[_b[0]]=_b[1];}}_8.scopeMap=_9;_8.baseUrl=_8.config.baseUrl=_4.baseUrl;_8.isAsync=!1||_4.async;_8.locale=_3.locale;var _c="$Rev: d6e8ff38 $".match(/[0-9a-f]{7,}/);_8.version={major:1,minor:14,patch:2,flag:"",revision:_c?_c[0]:NaN,toString:function(){var v=_8.version;return v.major+"."+v.minor+"."+v.patch+v.flag+" ("+v.revision+")";}};1||_2.add("extend-dojo",1);if(!_2("csp-restrictions")){(Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}"))(_8);}if(0){_8.exit=function(_d){quit(_d);};}else{_8.exit=function(){};}if(!_2("host-webworker")){1||_2.add("dojo-guarantee-console",1);}if(1){_2.add("console-as-object",function(){return Function.prototype.bind&&console&&typeof console.log==="object";});typeof console!="undefined"||(console={});var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var tn;i=0;while((tn=cn[i++])){if(!console[tn]){(function(){var _e=tn+"";console[_e]=("log" in console)?function(){var a=Array.prototype.slice.call(arguments);a.unshift(_e+":");console["log"](a.join(" "));}:function(){};console[_e]._fake=true;})();}else{if(_2("console-as-object")){console[tn]=Function.prototype.bind.call(console[tn],console);}}}}_2.add("dojo-debug-messages",!!_3.isDebug);_8.deprecated=_8.experimental=function(){};if(_2("dojo-debug-messages")){_8.deprecated=function(_f,_10,_11){var _12="DEPRECATED: "+_f;if(_10){_12+=" "+_10;}if(_11){_12+=" -- will be removed in version: "+_11;}console.warn(_12);};_8.experimental=function(_13,_14){var _15="EXPERIMENTAL: "+_13+" -- APIs subject to change without notice.";if(_14){_15+=" "+_14;}console.warn(_15);};}1||_2.add("dojo-modulePaths",1);if(1){if(_3.modulePaths){_8.deprecated("dojo.modulePaths","use paths configuration");var _16={};for(p in _3.modulePaths){_16[p.replace(/\./g,"/")]=_3.modulePaths[p];}_4({paths:_16});}}1||_2.add("dojo-moduleUrl",1);if(1){_8.moduleUrl=function(_17,url){_8.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var _18=null;if(_17){_18=_4.toUrl(_17.replace(/\./g,"/")+(url?("/"+url):"")+"/*.*").replace(/\/\*\.\*/,"")+(url?"":"/");}return _18;};}_8._hasResource={};return _8;}); \ No newline at end of file
+define("dojo/_base/kernel",["../global","../has","./config","require","module"],function(_1,_2,_3,_4,_5){var i,p,_6={},_7={},_8={config:_3,global:_1,dijit:_6,dojox:_7};var _9={dojo:["dojo",_8],dijit:["dijit",_6],dojox:["dojox",_7]},_a=(_4.map&&_4.map[_5.id.match(/[^\/]+/)[0]]),_b;for(p in _a){if(_9[p]){_9[p][0]=_a[p];}else{_9[p]=[_a[p],{}];}}for(p in _9){_b=_9[p];_b[1]._scopeName=_b[0];if(!_3.noGlobals){_1[_b[0]]=_b[1];}}_8.scopeMap=_9;_8.baseUrl=_8.config.baseUrl=_4.baseUrl;_8.isAsync=!1||_4.async;_8.locale=_3.locale;var _c="$Rev:$".match(/[0-9a-f]{7,}/);_8.version={major:1,minor:16,patch:4,flag:"",revision:_c?_c[0]:NaN,toString:function(){var v=_8.version;return v.major+"."+v.minor+"."+v.patch+v.flag+" ("+v.revision+")";}};1||_2.add("extend-dojo",1);if(!_2("csp-restrictions")){(Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}"))(_8);}if(0){_8.exit=function(_d){quit(_d);};}else{_8.exit=function(){};}if(!_2("host-webworker")){1||_2.add("dojo-guarantee-console",1);}if(1){_2.add("console-as-object",function(){return Function.prototype.bind&&console&&typeof console.log==="object";});typeof console!="undefined"||(console={});var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var tn;i=0;while((tn=cn[i++])){if(!console[tn]){(function(){var _e=tn+"";console[_e]=("log" in console)?function(){var a=Array.prototype.slice.call(arguments);a.unshift(_e+":");console["log"](a.join(" "));}:function(){};console[_e]._fake=true;})();}else{if(_2("console-as-object")){console[tn]=Function.prototype.bind.call(console[tn],console);}}}}_2.add("dojo-debug-messages",!!_3.isDebug);_8.deprecated=_8.experimental=function(){};if(_2("dojo-debug-messages")){_8.deprecated=function(_f,_10,_11){var _12="DEPRECATED: "+_f;if(_10){_12+=" "+_10;}if(_11){_12+=" -- will be removed in version: "+_11;}console.warn(_12);};_8.experimental=function(_13,_14){var _15="EXPERIMENTAL: "+_13+" -- APIs subject to change without notice.";if(_14){_15+=" "+_14;}console.warn(_15);};}1||_2.add("dojo-modulePaths",1);if(1){if(_3.modulePaths){_8.deprecated("dojo.modulePaths","use paths configuration");var _16={};for(p in _3.modulePaths){_16[p.replace(/\./g,"/")]=_3.modulePaths[p];}_4({paths:_16});}}1||_2.add("dojo-moduleUrl",1);if(1){_8.moduleUrl=function(_17,url){_8.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var _18=null;if(_17){_18=_4.toUrl(_17.replace(/\./g,"/")+(url?("/"+url):"")+"/*.*").replace(/\/\*\.\*/,"")+(url?"":"/");}return _18;};}_8._hasResource={};return _8;}); \ No newline at end of file
diff --git a/lib/dojo/cldr/monetary.js b/lib/dojo/cldr/monetary.js
index 217f9d82c..f9cd8b787 100644
--- a/lib/dojo/cldr/monetary.js
+++ b/lib/dojo/cldr/monetary.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/monetary",["../_base/kernel","../_base/lang"],function(_1,_2){var _3={};_2.setObject("dojo.cldr.monetary",_3);_3.getData=function(_4){var _5={ADP:0,AFN:0,ALL:0,AMD:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0,COP:0,CRC:0,DJF:0,ESP:0,GNF:0,GYD:0,HUF:0,IDR:0,IQD:0,IRR:3,ISK:0,ITL:0,JOD:3,JPY:0,KMF:0,KPW:0,KRW:0,KWD:3,LAK:0,LBP:0,LUF:0,LYD:3,MGA:0,MGF:0,MMK:0,MNT:0,MRO:0,MUR:0,OMR:3,PKR:2,PYG:0,RSD:0,RWF:0,SLL:0,SOS:0,STD:0,SYP:0,TMM:0,TND:3,TRL:0,TZS:0,UGX:0,UZS:0,VND:0,VUV:0,XAF:0,XOF:0,XPF:0,YER:0,ZMK:0,ZWD:0};var _6={};var _7=_5[_4],_8=_6[_4];if(typeof _7=="undefined"){_7=2;}if(typeof _8=="undefined"){_8=0;}return {places:_7,round:_8};};return _3;}); \ No newline at end of file
+define("dojo/cldr/monetary",["../_base/kernel","../_base/lang"],function(_1,_2){var _3={};_2.setObject("dojo.cldr.monetary",_3);_3.getData=function(_4){var _5={ADP:0,AFN:0,ALL:0,AMD:0,BHD:3,BIF:0,BYR:0,CLF:0,CLP:0,COP:2,CRC:0,DJF:0,ESP:0,GNF:0,GYD:0,HUF:0,IDR:0,IQD:0,IRR:3,ISK:0,ITL:0,JOD:3,JPY:0,KMF:0,KPW:0,KRW:0,KWD:3,LAK:0,LBP:0,LUF:0,LYD:3,MGA:0,MGF:0,MMK:0,MNT:0,MRO:0,MUR:0,OMR:3,PKR:2,PYG:0,RSD:0,RWF:0,SLL:0,SOS:0,STD:0,SYP:0,TMM:0,TND:3,TRL:0,TZS:0,UGX:0,UZS:0,VND:0,VUV:0,XAF:0,XOF:0,XPF:0,YER:0,ZMK:0,ZWD:0};var _6={};var _7=_5[_4],_8=_6[_4];if(typeof _7=="undefined"){_7=2;}if(typeof _8=="undefined"){_8=0;}return {places:_7,round:_8};};return _3;}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/buddhist.js b/lib/dojo/cldr/nls/ar/buddhist.js
index 796eafd91..788ae32f7 100644
--- a/lib/dojo/cldr/nls/ar/buddhist.js
+++ b/lib/dojo/cldr/nls/ar/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/buddhist",{"days-standAlone-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"months-format-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"field-second-relative+0":"الآن","quarters-standAlone-narrow":["١","٢","٣","٤"],"field-weekday":"اليوم","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء التالي","dateFormatItem-GyMMMEd":"E، d MMM، y G","dateFormatItem-MMMEd":"E، d MMM","eraNarrow":["التقويم البوذي"],"field-tue-relative+-1":"الثلاثاء الماضي","days-format-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormat-long":"d MMMM، y G","field-fri-relative+-1":"الجمعة الماضية","field-wed-relative+-1":"الأربعاء الماضي","months-format-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"م","dateFormat-full":"EEEE، d MMMM، y G","dateFormatItem-yyyyMEd":"E، d/M/y G","field-thu-relative+-1":"الخميس الماضي","dateFormatItem-Md":"d/M","field-era":"العصر","months-standAlone-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"timeFormat-short":"h:mm a","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"timeFormat-long":"h:mm:ss a z","field-year":"السنة","field-hour":"الساعات","months-format-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"field-sat-relative+0":"السبت الحالي","field-sat-relative+1":"السبت التالي","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"اليوم","field-thu-relative+0":"الخميس الحالي","field-day-relative+1":"غدًا","field-thu-relative+1":"الخميس التالي","dateFormatItem-GyMMMd":"d MMM، y G","field-day-relative+2":"بعد الغد","months-standAlone-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E، d MMM، y G","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yyyyMMM":"MMM، y G","dateFormatItem-yyyyMMMd":"d MMM، y G","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد التالي","quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"eraAbbr":["التقويم البوذي"],"field-minute":"الدقائق","field-dayperiod":"ص/م","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"quarters-format-narrow":["١","٢","٣","٤"],"field-day-relative+-1":"أمس","field-day-relative+-2":"أول أمس","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E، d/M","field-fri-relative+0":"الجمعة الحالية","field-fri-relative+1":"الجمعة التالية","field-day":"يوم","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-zone":"التوقيت","dateFormatItem-y":"y G","months-standAlone-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"field-year-relative+-1":"السنة الماضية","field-month-relative+-1":"الشهر الماضي","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"eraNames":["التقويم البوذي"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"الشهر","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء التالي","dayPeriods-format-wide-am":"ص","field-mon-relative+0":"الاثنين الحالي","field-mon-relative+1":"الاثنين التالي","dateFormat-short":"d/M/y GGGGG","field-second":"الثواني","field-sat-relative+-1":"السبت الماضي","field-sun-relative+-1":"الأحد الماضي","field-month-relative+0":"هذا الشهر","field-month-relative+1":"الشهر التالي","dateFormatItem-Ed":"E، d","field-week":"الأسبوع","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"السنة الحالية","field-week-relative+-1":"الأسبوع الماضي","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"السنة التالية","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"الاثنين الماضي","dateFormatItem-yyyy":"y G","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/buddhist",{"field-quarter-short-relative+0":"هذا الربع","field-quarter-short-relative+1":"الربع القادم","field-tue-relative+-1":"الثلاثاء الماضي","field-year":"السنة","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء القادم","timeFormat-short":"h:mm a","field-minute":"الدقائق","field-tue-narrow-relative+0":"الثلاثاء الحالي","field-tue-narrow-relative+1":"الثلاثاء القادم","field-thu-short-relative+0":"الخميس الحالي","field-day-short-relative+-1":"أمس","dateTimeFormat-short":"{1} في {0}","field-thu-short-relative+1":"الخميس القادم","field-day-relative+0":"اليوم","field-day-short-relative+-2":"أول أمس","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-wed-narrow-relative+-1":"الأربعاء الماضي","field-year-narrow":"السنة","field-era-short":"العصر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء القادم","field-weekdayOfMonth":"يوم عمل من الشهر","field-second-short":"الثواني","dayPeriods-format-narrow-am":"ص","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"يوم عمل/شهر","dayPeriods-format-abbr-am":"ص","field-week-relative+0":"هذا الأسبوع","field-month-relative+0":"هذا الشهر","field-week-relative+1":"الأسبوع القادم","field-month-relative+1":"الشهر القادم","field-sun-narrow-relative+0":"الأحد الحالي","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"الإثنين الحالي","field-sun-narrow-relative+1":"الأحد القادم","field-mon-short-relative+1":"الإثنين القادم","field-second-relative+0":"الآن","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"eraNames":["التقويم البوذي"],"field-weekOfMonth":"الأسبوع من الشهر","dayPeriods-standAlone-abbr-pm":"م","field-month-short":"الشهر","dateFormatItem-GyMMMEd":"E، d MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"يوم","field-dayOfYear-short":"يوم من سنة","field-year-relative+-1":"السنة الماضية","dayPeriods-format-wide-am":"ص","field-sat-short-relative+-1":"السبت الماضي","field-hour-relative+0":"الساعة الحالية","dateFormatItem-yyyyMEd":"E، d/M/y G","field-wed-relative+-1":"الأربعاء الماضي","dateTimeFormat-medium":"{1} في {0}","field-sat-narrow-relative+-1":"السبت الماضي","field-second":"الثواني","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"dayPeriods-standAlone-wide-pm":"مساءً","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"ربع السنة","field-week-short":"الأسبوع","field-day-narrow-relative+0":"اليوم","field-day-narrow-relative+1":"غدًا","field-day-narrow-relative+2":"بعد الغد","quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"field-tue-short-relative+0":"الثلاثاء الحالي","field-tue-short-relative+1":"الثلاثاء القادم","field-mon-relative+-1":"الإثنين الماضي","dateFormatItem-GyMMM":"MMM y G","field-month":"الشهر","field-day-narrow":"يوم","field-minute-short":"الدقائق","field-dayperiod":"ص/م","field-sat-short-relative+0":"السبت الحالي","field-sat-short-relative+1":"السبت القادم","dayPeriods-format-narrow-pm":"م","dateFormat-medium":"dd/MM/y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["BE"],"quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dayPeriods-format-abbr-pm":"م","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"الثواني","field-mon-relative+0":"الإثنين الحالي","field-mon-relative+1":"الإثنين القادم","field-day-narrow-relative+-1":"أمس","field-year-short":"السنة","field-day-narrow-relative+-2":"أول أمس","months-format-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"field-quarter-relative+-1":"الربع الأخير","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"ص/م","dayPeriods-standAlone-narrow-am":"ص","days-format-short":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"quarters-format-narrow":["١","٢","٣","٤"],"dayPeriods-format-wide-pm":"م","field-dayOfYear":"يوم من السنة","field-sat-relative+-1":"السبت الماضي","dateTimeFormat-long":"{1} في {0}","dateFormatItem-Md":"d/M","field-hour":"الساعات","months-format-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dateFormat-full":"EEEE، d MMMM y G","field-month-relative+-1":"الشهر الماضي","field-quarter-short":"ربع السنة","field-sat-narrow-relative+0":"السبت الحالي","field-fri-relative+0":"الجمعة الحالي","field-sat-narrow-relative+1":"السبت القادم","field-fri-relative+1":"الجمعة القادم","field-sun-short-relative+0":"الأحد الحالي","field-sun-short-relative+1":"الأحد القادم","field-week-relative+-1":"الأسبوع الماضي","field-quarter-short-relative+-1":"الربع الأخير","months-format-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"field-quarter-relative+0":"هذا الربع","field-minute-relative+0":"هذه الدقيقة","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"الربع القادم","field-wed-short-relative+-1":"الأربعاء الماضي","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"الخميس الماضي","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yyyyMMMEd":"E، d MMM y G","field-mon-narrow-relative+-1":"الإثنين الماضي","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"الخميس الماضي","field-tue-narrow-relative+-1":"الثلاثاء الماضي","field-weekOfMonth-short":"أسبوع من شهر","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"م","field-wed-short-relative+0":"الأربعاء الحالي","months-standAlone-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"field-wed-short-relative+1":"الأربعاء القادم","field-sun-relative+-1":"الأحد الماضي","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateTimeFormat-full":"{1} في {0}","field-weekday":"اليوم","field-day-short-relative+0":"اليوم","field-quarter-narrow-relative+0":"هذا الربع","field-sat-relative+0":"السبت الحالي","field-day-short-relative+1":"غدًا","field-quarter-narrow-relative+1":"الربع القادم","field-sat-relative+1":"السبت القادم","field-day-short-relative+2":"بعد الغد","months-standAlone-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"field-dayOfYear-narrow":"يوم/سنة","field-weekdayOfMonth-short":"يوم عمل من شهر","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E، d/M","field-zone-narrow":"توقيت","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"الخميس الحالي","field-thu-narrow-relative+1":"الخميس القادم","field-sun-narrow-relative+-1":"الأحد الماضي","field-mon-short-relative+-1":"الإثنين الماضي","field-thu-relative+0":"الخميس الحالي","field-thu-relative+1":"الخميس القادم","field-fri-short-relative+-1":"الجمعة الماضي","field-thu-relative+-1":"الخميس الماضي","field-week":"الأسبوع","quarters-standAlone-narrow":["١","٢","٣","٤"],"quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-Ed":"E، d","field-wed-narrow-relative+0":"الأربعاء الحالي","field-wed-narrow-relative+1":"الأربعاء القادم","field-quarter-narrow-relative+-1":"الربع الأخير","field-dayperiod-short":"ص/م","dateFormatItem-yyyyMMM":"MMM y G","field-fri-short-relative+0":"الجمعة الحالي","field-fri-short-relative+1":"الجمعة القادم","days-standAlone-short":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"الساعات","field-zone-short":"توقيت","quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"field-month-narrow":"الشهر","field-hour-narrow":"الساعات","field-fri-narrow-relative+-1":"الجمعة الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة القادمة","field-era-narrow":"العصر","field-fri-relative+-1":"الجمعة الماضي","eraNarrow":"BE","field-tue-short-relative+-1":"الثلاثاء الماضي","field-minute-narrow":"الدقائق","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-mon-narrow-relative+0":"الإثنين الحالي","field-mon-narrow-relative+1":"الإثنين القادم","field-zone":"التوقيت","dateFormatItem-MMMEd":"E، d MMM","field-weekOfMonth-narrow":"أسبوع/شهر","field-weekday-narrow":"اليوم","field-quarter-narrow":"ربع السنة","field-sun-short-relative+-1":"الأحد الماضي","field-day-relative+-1":"أمس","dayPeriods-standAlone-abbr-am":"ص","field-day-relative+-2":"أول أمس","field-weekday-short":"اليوم","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد القادم","dateFormatItem-Gy":"y G","field-day-short":"يوم","field-week-narrow":"الأسبوع","field-era":"العصر","field-fri-narrow-relative+0":"الجمعة الحالي","field-fri-narrow-relative+1":"الجمعة القادم","dayPeriods-standAlone-wide-am":"صباحًا"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/coptic.js b/lib/dojo/cldr/nls/ar/coptic.js
index d7b21eac4..7ca496503 100644
--- a/lib/dojo/cldr/nls/ar/coptic.js
+++ b/lib/dojo/cldr/nls/ar/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/coptic",{"field-sat-relative+0":"السبت الحالي","field-sat-relative+1":"السبت التالي","field-dayperiod":"ص/م","field-sun-relative+-1":"الأحد الماضي","field-mon-relative+-1":"الاثنين الماضي","field-minute":"الدقائق","field-day-relative+-1":"أمس","field-weekday":"اليوم","field-day-relative+-2":"أول أمس","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"العصر","field-hour":"الساعات","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد التالي","field-wed-relative+-1":"الأربعاء الماضي","field-day-relative+0":"اليوم","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-tue-relative+0":"الثلاثاء الحالي","field-zone":"التوقيت","field-tue-relative+1":"الثلاثاء التالي","field-week-relative+-1":"الأسبوع الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة التالية","field-sat-relative+-1":"السبت الماضي","field-year-relative+-1":"السنة الماضية","field-year":"السنة","field-fri-relative+0":"الجمعة الحالية","field-fri-relative+1":"الجمعة التالية","field-week":"الأسبوع","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي","field-month-relative+0":"هذا الشهر","field-month":"الشهر","field-month-relative+1":"الشهر التالي","field-fri-relative+-1":"الجمعة الماضية","field-second":"الثواني","field-tue-relative+-1":"الثلاثاء الماضي","field-day":"يوم","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"الاثنين الحالي","field-mon-relative+1":"الاثنين التالي","field-thu-relative+0":"الخميس الحالي","field-second-relative+0":"الآن","field-thu-relative+1":"الخميس التالي","field-wed-relative+0":"الأربعاء الحالي","months-format-wide":["توت","بابه","هاتور","كيهك","طوبة","أمشير","برمهات","برمودة","بشنس","بؤونة","أبيب","مسرى","نسيئ"],"field-wed-relative+1":"الأربعاء التالي","field-month-relative+-1":"الشهر الماضي","field-thu-relative+-1":"الخميس الماضي"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/coptic",{"field-quarter-short-relative+0":"هذا الربع","field-quarter-short-relative+1":"الربع القادم","field-tue-relative+-1":"الثلاثاء الماضي","field-year":"السنة","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء القادم","field-minute":"الدقائق","field-tue-narrow-relative+0":"الثلاثاء الحالي","field-tue-narrow-relative+1":"الثلاثاء القادم","field-thu-short-relative+0":"الخميس الحالي","field-day-short-relative+-1":"أمس","field-thu-short-relative+1":"الخميس القادم","field-day-relative+0":"اليوم","field-day-short-relative+-2":"أول أمس","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-wed-narrow-relative+-1":"الأربعاء الماضي","field-year-narrow":"السنة","field-era-short":"العصر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء القادم","field-weekdayOfMonth":"يوم عمل من الشهر","field-second-short":"الثواني","field-weekdayOfMonth-narrow":"يوم عمل/شهر","field-week-relative+0":"هذا الأسبوع","field-month-relative+0":"هذا الشهر","field-week-relative+1":"الأسبوع القادم","field-month-relative+1":"الشهر القادم","field-sun-narrow-relative+0":"الأحد الحالي","field-mon-short-relative+0":"الإثنين الحالي","field-sun-narrow-relative+1":"الأحد القادم","field-mon-short-relative+1":"الإثنين القادم","field-second-relative+0":"الآن","months-standAlone-narrow":["١","٢","٣","٤","٥","٦","٧","٨","٩","١٠","١١","١٢","١٣"],"field-weekOfMonth":"الأسبوع من الشهر","field-month-short":"الشهر","field-day":"يوم","field-dayOfYear-short":"يوم من سنة","field-year-relative+-1":"السنة الماضية","field-sat-short-relative+-1":"السبت الماضي","field-hour-relative+0":"الساعة الحالية","field-wed-relative+-1":"الأربعاء الماضي","field-sat-narrow-relative+-1":"السبت الماضي","field-second":"الثواني","field-quarter":"ربع السنة","field-week-short":"الأسبوع","field-day-narrow-relative+0":"اليوم","field-day-narrow-relative+1":"غدًا","field-day-narrow-relative+2":"بعد الغد","field-tue-short-relative+0":"الثلاثاء الحالي","field-tue-short-relative+1":"الثلاثاء القادم","field-mon-relative+-1":"الإثنين الماضي","field-month":"الشهر","field-day-narrow":"يوم","field-minute-short":"الدقائق","field-dayperiod":"ص/م","field-sat-short-relative+0":"السبت الحالي","field-sat-short-relative+1":"السبت القادم","field-second-narrow":"الثواني","field-mon-relative+0":"الإثنين الحالي","field-mon-relative+1":"الإثنين القادم","field-day-narrow-relative+-1":"أمس","field-year-short":"السنة","field-day-narrow-relative+-2":"أول أمس","months-format-narrow":["١","٢","٣","٤","٥","٦","٧","٨","٩","١٠","١١","١٢","١٣"],"field-quarter-relative+-1":"الربع الأخير","field-dayperiod-narrow":"ص/م","field-dayOfYear":"يوم من السنة","field-sat-relative+-1":"السبت الماضي","field-hour":"الساعات","months-format-wide":["توت","بابه","هاتور","كيهك","طوبة","أمشير","برمهات","برمودة","بشنس","بؤونة","أبيب","مسرى","نسيئ"],"field-month-relative+-1":"الشهر الماضي","field-quarter-short":"ربع السنة","field-sat-narrow-relative+0":"السبت الحالي","field-fri-relative+0":"الجمعة الحالي","field-sat-narrow-relative+1":"السبت القادم","field-fri-relative+1":"الجمعة القادم","field-sun-short-relative+0":"الأحد الحالي","field-sun-short-relative+1":"الأحد القادم","field-week-relative+-1":"الأسبوع الماضي","field-quarter-short-relative+-1":"الربع الأخير","months-format-abbr":["توت","بابه","هاتور","كيهك","طوبة","أمشير","برمهات","برمودة","بشنس","بؤونة","أبيب","مسرى","نسيئ"],"field-quarter-relative+0":"هذا الربع","field-minute-relative+0":"هذه الدقيقة","field-quarter-relative+1":"الربع القادم","field-wed-short-relative+-1":"الأربعاء الماضي","field-thu-short-relative+-1":"الخميس الماضي","field-mon-narrow-relative+-1":"الإثنين الماضي","field-thu-narrow-relative+-1":"الخميس الماضي","field-tue-narrow-relative+-1":"الثلاثاء الماضي","field-weekOfMonth-short":"أسبوع من شهر","field-wed-short-relative+0":"الأربعاء الحالي","months-standAlone-wide":["توت","بابه","هاتور","كيهك","طوبة","أمشير","برمهات","برمودة","بشنس","بؤونة","أبيب","مسرى","نسيئ"],"field-wed-short-relative+1":"الأربعاء القادم","field-sun-relative+-1":"الأحد الماضي","field-weekday":"اليوم","field-day-short-relative+0":"اليوم","field-quarter-narrow-relative+0":"هذا الربع","field-sat-relative+0":"السبت الحالي","field-day-short-relative+1":"غدًا","field-quarter-narrow-relative+1":"الربع القادم","field-sat-relative+1":"السبت القادم","field-day-short-relative+2":"بعد الغد","months-standAlone-abbr":["توت","بابه","هاتور","كيهك","طوبة","أمشير","برمهات","برمودة","بشنس","بؤونة","أبيب","مسرى","نسيئ"],"field-dayOfYear-narrow":"يوم/سنة","field-weekdayOfMonth-short":"يوم عمل من شهر","field-zone-narrow":"توقيت","field-thu-narrow-relative+0":"الخميس الحالي","field-thu-narrow-relative+1":"الخميس القادم","field-sun-narrow-relative+-1":"الأحد الماضي","field-mon-short-relative+-1":"الإثنين الماضي","field-thu-relative+0":"الخميس الحالي","field-thu-relative+1":"الخميس القادم","field-fri-short-relative+-1":"الجمعة الماضي","field-thu-relative+-1":"الخميس الماضي","field-week":"الأسبوع","field-wed-narrow-relative+0":"الأربعاء الحالي","field-wed-narrow-relative+1":"الأربعاء القادم","field-quarter-narrow-relative+-1":"الربع الأخير","field-dayperiod-short":"ص/م","field-fri-short-relative+0":"الجمعة الحالي","field-fri-short-relative+1":"الجمعة القادم","field-hour-short":"الساعات","field-zone-short":"توقيت","field-month-narrow":"الشهر","field-hour-narrow":"الساعات","field-fri-narrow-relative+-1":"الجمعة الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة القادمة","field-era-narrow":"العصر","field-fri-relative+-1":"الجمعة الماضي","field-tue-short-relative+-1":"الثلاثاء الماضي","field-minute-narrow":"الدقائق","field-mon-narrow-relative+0":"الإثنين الحالي","field-mon-narrow-relative+1":"الإثنين القادم","field-zone":"التوقيت","field-weekOfMonth-narrow":"أسبوع/شهر","field-weekday-narrow":"اليوم","field-quarter-narrow":"ربع السنة","field-sun-short-relative+-1":"الأحد الماضي","field-day-relative+-1":"أمس","field-day-relative+-2":"أول أمس","field-weekday-short":"اليوم","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد القادم","field-day-short":"يوم","field-week-narrow":"الأسبوع","field-era":"العصر","field-fri-narrow-relative+0":"الجمعة الحالي","field-fri-narrow-relative+1":"الجمعة القادم"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/currency.js b/lib/dojo/cldr/nls/ar/currency.js
index d716c09a5..9e71f0f0e 100644
--- a/lib/dojo/cldr/nls/ar/currency.js
+++ b/lib/dojo/cldr/nls/ar/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/currency",{"HKD_displayName":"دولار هونج كونج","CHF_displayName":"فرنك سويسري","JPY_symbol":"JP¥","CAD_displayName":"دولار كندي","HKD_symbol":"HK$","CNY_displayName":"يوان صيني","USD_symbol":"US$","AUD_displayName":"دولار أسترالي","JPY_displayName":"ين ياباني","CAD_symbol":"CA$","USD_displayName":"دولار أمريكي","EUR_symbol":"€","CNY_symbol":"ي.ص","GBP_displayName":"جنيه إسترليني","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"يورو"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/currency",{"HKD_displayName":"دولار هونغ كونغ","CNY_displayName":"يوان صيني","JPY_displayName":"ين ياباني","JPY_symbol":"JP¥","USD_displayName":"دولار أمريكي","CAD_symbol":"CA$","GBP_displayName":"جنيه إسترليني","CHF_displayName":"فرنك سويسري","CNY_symbol":"CN¥","EUR_displayName":"يورو","GBP_symbol":"UK£","CAD_displayName":"دولار كندي","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"دولار أسترالي","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/ethiopic.js b/lib/dojo/cldr/nls/ar/ethiopic.js
index 3bf26fd1e..9c8f225e3 100644
--- a/lib/dojo/cldr/nls/ar/ethiopic.js
+++ b/lib/dojo/cldr/nls/ar/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/ethiopic",{"field-sat-relative+0":"السبت الحالي","field-sat-relative+1":"السبت التالي","field-dayperiod":"ص/م","field-sun-relative+-1":"الأحد الماضي","field-mon-relative+-1":"الاثنين الماضي","field-minute":"الدقائق","field-day-relative+-1":"أمس","field-weekday":"اليوم","field-day-relative+-2":"أول أمس","field-era":"العصر","field-hour":"الساعات","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد التالي","field-wed-relative+-1":"الأربعاء الماضي","field-day-relative+0":"اليوم","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-tue-relative+0":"الثلاثاء الحالي","field-zone":"التوقيت","field-tue-relative+1":"الثلاثاء التالي","field-week-relative+-1":"الأسبوع الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة التالية","field-sat-relative+-1":"السبت الماضي","field-year-relative+-1":"السنة الماضية","field-year":"السنة","field-fri-relative+0":"الجمعة الحالية","field-fri-relative+1":"الجمعة التالية","field-week":"الأسبوع","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي","field-month-relative+0":"هذا الشهر","field-month":"الشهر","field-month-relative+1":"الشهر التالي","field-fri-relative+-1":"الجمعة الماضية","field-second":"الثواني","field-tue-relative+-1":"الثلاثاء الماضي","field-day":"يوم","field-mon-relative+0":"الاثنين الحالي","field-mon-relative+1":"الاثنين التالي","field-thu-relative+0":"الخميس الحالي","field-second-relative+0":"الآن","field-thu-relative+1":"الخميس التالي","field-wed-relative+0":"الأربعاء الحالي","months-format-wide":["مسكريم","تكمت","هدار","تهساس","تر","يكتت","مجابيت","ميازيا","جنبت","سين","هامل","نهاس","باجمن"],"field-wed-relative+1":"الأربعاء التالي","field-month-relative+-1":"الشهر الماضي","field-thu-relative+-1":"الخميس الماضي"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/ethiopic",{"field-quarter-short-relative+0":"هذا الربع","field-quarter-short-relative+1":"الربع القادم","field-tue-relative+-1":"الثلاثاء الماضي","field-year":"السنة","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء القادم","field-minute":"الدقائق","field-tue-narrow-relative+0":"الثلاثاء الحالي","field-tue-narrow-relative+1":"الثلاثاء القادم","field-thu-short-relative+0":"الخميس الحالي","field-day-short-relative+-1":"أمس","field-thu-short-relative+1":"الخميس القادم","field-day-relative+0":"اليوم","field-day-short-relative+-2":"أول أمس","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-wed-narrow-relative+-1":"الأربعاء الماضي","field-year-narrow":"السنة","field-era-short":"العصر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء القادم","field-weekdayOfMonth":"يوم عمل من الشهر","field-second-short":"الثواني","field-weekdayOfMonth-narrow":"يوم عمل/شهر","field-week-relative+0":"هذا الأسبوع","field-month-relative+0":"هذا الشهر","field-week-relative+1":"الأسبوع القادم","field-month-relative+1":"الشهر القادم","field-sun-narrow-relative+0":"الأحد الحالي","field-mon-short-relative+0":"الإثنين الحالي","field-sun-narrow-relative+1":"الأحد القادم","field-mon-short-relative+1":"الإثنين القادم","field-second-relative+0":"الآن","field-weekOfMonth":"الأسبوع من الشهر","field-month-short":"الشهر","field-day":"يوم","field-dayOfYear-short":"يوم من سنة","field-year-relative+-1":"السنة الماضية","field-sat-short-relative+-1":"السبت الماضي","field-hour-relative+0":"الساعة الحالية","field-wed-relative+-1":"الأربعاء الماضي","field-sat-narrow-relative+-1":"السبت الماضي","field-second":"الثواني","field-quarter":"ربع السنة","field-week-short":"الأسبوع","field-day-narrow-relative+0":"اليوم","field-day-narrow-relative+1":"غدًا","field-day-narrow-relative+2":"بعد الغد","field-tue-short-relative+0":"الثلاثاء الحالي","field-tue-short-relative+1":"الثلاثاء القادم","field-mon-relative+-1":"الإثنين الماضي","field-month":"الشهر","field-day-narrow":"يوم","field-minute-short":"الدقائق","field-dayperiod":"ص/م","field-sat-short-relative+0":"السبت الحالي","field-sat-short-relative+1":"السبت القادم","field-second-narrow":"الثواني","field-mon-relative+0":"الإثنين الحالي","field-mon-relative+1":"الإثنين القادم","field-day-narrow-relative+-1":"أمس","field-year-short":"السنة","field-day-narrow-relative+-2":"أول أمس","field-quarter-relative+-1":"الربع الأخير","field-dayperiod-narrow":"ص/م","field-dayOfYear":"يوم من السنة","field-sat-relative+-1":"السبت الماضي","field-hour":"الساعات","months-format-wide":["مسكريم","تكمت","هدار","تهساس","تر","يكتت","مجابيت","ميازيا","جنبت","سين","هامل","نهاس","باجمن"],"field-month-relative+-1":"الشهر الماضي","field-quarter-short":"ربع السنة","field-sat-narrow-relative+0":"السبت الحالي","field-fri-relative+0":"الجمعة الحالي","field-sat-narrow-relative+1":"السبت القادم","field-fri-relative+1":"الجمعة القادم","field-sun-short-relative+0":"الأحد الحالي","field-sun-short-relative+1":"الأحد القادم","field-week-relative+-1":"الأسبوع الماضي","field-quarter-short-relative+-1":"الربع الأخير","field-quarter-relative+0":"هذا الربع","field-minute-relative+0":"هذه الدقيقة","field-quarter-relative+1":"الربع القادم","field-wed-short-relative+-1":"الأربعاء الماضي","field-thu-short-relative+-1":"الخميس الماضي","field-mon-narrow-relative+-1":"الإثنين الماضي","field-thu-narrow-relative+-1":"الخميس الماضي","field-tue-narrow-relative+-1":"الثلاثاء الماضي","field-weekOfMonth-short":"أسبوع من شهر","field-wed-short-relative+0":"الأربعاء الحالي","field-wed-short-relative+1":"الأربعاء القادم","field-sun-relative+-1":"الأحد الماضي","field-weekday":"اليوم","field-day-short-relative+0":"اليوم","field-quarter-narrow-relative+0":"هذا الربع","field-sat-relative+0":"السبت الحالي","field-day-short-relative+1":"غدًا","field-quarter-narrow-relative+1":"الربع القادم","field-sat-relative+1":"السبت القادم","field-day-short-relative+2":"بعد الغد","field-dayOfYear-narrow":"يوم/سنة","field-weekdayOfMonth-short":"يوم عمل من شهر","field-zone-narrow":"توقيت","field-thu-narrow-relative+0":"الخميس الحالي","field-thu-narrow-relative+1":"الخميس القادم","field-sun-narrow-relative+-1":"الأحد الماضي","field-mon-short-relative+-1":"الإثنين الماضي","field-thu-relative+0":"الخميس الحالي","field-thu-relative+1":"الخميس القادم","field-fri-short-relative+-1":"الجمعة الماضي","field-thu-relative+-1":"الخميس الماضي","field-week":"الأسبوع","field-wed-narrow-relative+0":"الأربعاء الحالي","field-wed-narrow-relative+1":"الأربعاء القادم","field-quarter-narrow-relative+-1":"الربع الأخير","field-dayperiod-short":"ص/م","field-fri-short-relative+0":"الجمعة الحالي","field-fri-short-relative+1":"الجمعة القادم","field-hour-short":"الساعات","field-zone-short":"توقيت","field-month-narrow":"الشهر","field-hour-narrow":"الساعات","field-fri-narrow-relative+-1":"الجمعة الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة القادمة","field-era-narrow":"العصر","field-fri-relative+-1":"الجمعة الماضي","field-tue-short-relative+-1":"الثلاثاء الماضي","field-minute-narrow":"الدقائق","field-mon-narrow-relative+0":"الإثنين الحالي","field-mon-narrow-relative+1":"الإثنين القادم","field-zone":"التوقيت","field-weekOfMonth-narrow":"أسبوع/شهر","field-weekday-narrow":"اليوم","field-quarter-narrow":"ربع السنة","field-sun-short-relative+-1":"الأحد الماضي","field-day-relative+-1":"أمس","field-day-relative+-2":"أول أمس","field-weekday-short":"اليوم","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد القادم","field-day-short":"يوم","field-week-narrow":"الأسبوع","field-era":"العصر","field-fri-narrow-relative+0":"الجمعة الحالي","field-fri-narrow-relative+1":"الجمعة القادم"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/generic.js b/lib/dojo/cldr/nls/ar/generic.js
index fc0f4d2ef..261514f38 100644
--- a/lib/dojo/cldr/nls/ar/generic.js
+++ b/lib/dojo/cldr/nls/ar/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/generic",{"field-second-relative+0":"الآن","field-weekday":"اليوم","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء التالي","dateFormatItem-GyMMMEd":"E، d MMM، y G","dateFormatItem-MMMEd":"E، d MMM","field-tue-relative+-1":"الثلاثاء الماضي","dateFormat-long":"d MMMM، y G","field-fri-relative+-1":"الجمعة الماضية","field-wed-relative+-1":"الأربعاء الماضي","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE، d MMMM، y G","dateFormatItem-yyyyMEd":"E، d/M/y G","field-thu-relative+-1":"الخميس الماضي","dateFormatItem-Md":"d/M","field-era":"العصر","field-year":"السنة","dateFormatItem-yyyyMMMM":"MMMM، y G","field-hour":"الساعات","field-sat-relative+0":"السبت الحالي","field-sat-relative+1":"السبت التالي","field-day-relative+0":"اليوم","field-day-relative+1":"غدًا","field-thu-relative+0":"الخميس الحالي","dateFormatItem-GyMMMd":"d MMM، y G","field-day-relative+2":"بعد الغد","field-thu-relative+1":"الخميس التالي","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E، d MMM، y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM، y G","dateFormatItem-yyyyMMMd":"d MMM، y G","field-sun-relative+0":"الأحد الحالي","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"الأحد التالي","field-minute":"الدقائق","field-dayperiod":"ص/م","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"أمس","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"أول أمس","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E، d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"الجمعة الحالية","field-fri-relative+1":"الجمعة التالية","field-day":"يوم","field-zone":"التوقيت","dateFormatItem-y":"y G","field-year-relative+-1":"السنة الماضية","field-month-relative+-1":"الشهر الماضي","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d/M/y G","field-month":"الشهر","dateFormatItem-MMM":"LLL","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء التالي","field-mon-relative+0":"الاثنين الحالي","field-mon-relative+1":"الاثنين التالي","dateFormat-short":"d/M/y GGGGG","field-second":"الثواني","field-sat-relative+-1":"السبت الماضي","field-sun-relative+-1":"الأحد الماضي","field-month-relative+0":"هذا الشهر","field-month-relative+1":"الشهر التالي","dateFormatItem-Ed":"E، d","field-week":"الأسبوع","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"السنة الحالية","field-week-relative+-1":"الأسبوع الماضي","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"السنة التالية","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"الاثنين الماضي","dateFormatItem-yyyy":"y G","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/generic",{"field-quarter-short-relative+0":"هذا الربع","field-quarter-short-relative+1":"الربع القادم","field-tue-relative+-1":"الثلاثاء الماضي","field-year":"السنة","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء القادم","dateFormatItem-ms":"mm:ss","field-minute":"الدقائق","field-tue-narrow-relative+0":"الثلاثاء الحالي","field-tue-narrow-relative+1":"الثلاثاء القادم","field-day-short-relative+-1":"أمس","field-thu-short-relative+0":"الخميس الحالي","dateTimeFormat-short":"{1} في {0}","field-day-relative+0":"اليوم","field-day-short-relative+-2":"أول أمس","field-thu-short-relative+1":"الخميس القادم","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"الأربعاء الماضي","field-year-narrow":"السنة","field-era-short":"العصر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء القادم","field-weekdayOfMonth":"يوم عمل من الشهر","field-second-short":"الثواني","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"يوم عمل/شهر","field-week-relative+0":"هذا الأسبوع","field-month-relative+0":"هذا الشهر","field-week-relative+1":"الأسبوع القادم","field-month-relative+1":"الشهر القادم","field-sun-narrow-relative+0":"الأحد الحالي","field-mon-short-relative+0":"الإثنين الحالي","field-sun-narrow-relative+1":"الأحد القادم","field-mon-short-relative+1":"الإثنين القادم","field-second-relative+0":"الآن","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"الأسبوع من الشهر","field-month-short":"الشهر","dateFormatItem-GyMMMEd":"E، d MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"يوم","field-dayOfYear-short":"يوم من سنة","field-year-relative+-1":"السنة الماضية","field-sat-short-relative+-1":"السبت الماضي","field-hour-relative+0":"الساعة الحالية","dateFormatItem-yyyyMEd":"E، d/M/y G","field-wed-relative+-1":"الأربعاء الماضي","dateTimeFormat-medium":"{1} في {0}","field-sat-narrow-relative+-1":"السبت الماضي","field-second":"الثواني","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"ربع السنة","field-week-short":"الأسبوع","field-day-narrow-relative+0":"اليوم","field-day-narrow-relative+1":"غدًا","field-day-narrow-relative+2":"بعد الغد","field-tue-short-relative+0":"الثلاثاء الحالي","field-tue-short-relative+1":"الثلاثاء القادم","field-mon-relative+-1":"الإثنين الماضي","dateFormatItem-GyMMM":"MMM y G","field-month":"الشهر","field-day-narrow":"يوم","dateFormatItem-MMM":"LLL","field-minute-short":"الدقائق","field-dayperiod":"ص/م","field-sat-short-relative+0":"السبت الحالي","field-sat-short-relative+1":"السبت القادم","dateFormat-medium":"dd/MM/y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"الثواني","field-mon-relative+0":"الإثنين الحالي","field-mon-relative+1":"الإثنين القادم","field-day-narrow-relative+-1":"أمس","field-year-short":"السنة","field-day-narrow-relative+-2":"أول أمس","field-quarter-relative+-1":"الربع الأخير","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"ص/م","field-dayOfYear":"يوم من السنة","field-sat-relative+-1":"السبت الماضي","dateTimeFormat-long":"{1} في {0}","dateFormatItem-Md":"d/M","field-hour":"الساعات","dateFormat-full":"EEEE، d MMMM y G","field-month-relative+-1":"الشهر الماضي","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"ربع السنة","field-sat-narrow-relative+0":"السبت الحالي","field-fri-relative+0":"الجمعة الحالي","field-sat-narrow-relative+1":"السبت القادم","field-fri-relative+1":"الجمعة القادم","dateFormatItem-EBhm":"E h:mm B","field-sun-short-relative+0":"الأحد الحالي","field-sun-short-relative+1":"الأحد القادم","field-week-relative+-1":"الأسبوع الماضي","field-quarter-short-relative+-1":"الربع الأخير","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"هذا الربع","field-minute-relative+0":"هذه الدقيقة","field-quarter-relative+1":"الربع القادم","field-wed-short-relative+-1":"الأربعاء الماضي","dateFormat-short":"d/M/y GGGGG","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"الخميس الماضي","dateFormatItem-yyyyMMMEd":"E، d MMM y G","field-mon-narrow-relative+-1":"الإثنين الماضي","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"الخميس الماضي","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"الثلاثاء الماضي","dateFormatItem-H":"HH","field-weekOfMonth-short":"أسبوع من شهر","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"الأربعاء الحالي","field-wed-short-relative+1":"الأربعاء القادم","field-sun-relative+-1":"الأحد الماضي","dateTimeFormat-full":"{1} في {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"اليوم","field-day-short-relative+0":"اليوم","field-quarter-narrow-relative+0":"هذا الربع","field-day-short-relative+1":"غدًا","field-sat-relative+0":"السبت الحالي","field-quarter-narrow-relative+1":"الربع القادم","dateFormatItem-h":"h a","field-day-short-relative+2":"بعد الغد","field-sat-relative+1":"السبت القادم","field-dayOfYear-narrow":"يوم/سنة","field-weekdayOfMonth-short":"يوم عمل من شهر","dateFormatItem-MEd":"E، d/M","field-zone-narrow":"توقيت","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"الخميس الحالي","field-sun-narrow-relative+-1":"الأحد الماضي","field-mon-short-relative+-1":"الإثنين الماضي","field-thu-narrow-relative+1":"الخميس القادم","field-thu-relative+0":"الخميس الحالي","field-thu-relative+1":"الخميس القادم","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"الجمعة الماضي","field-thu-relative+-1":"الخميس الماضي","field-week":"الأسبوع","dateFormatItem-Ed":"E، d","field-wed-narrow-relative+0":"الأربعاء الحالي","field-wed-narrow-relative+1":"الأربعاء القادم","field-quarter-narrow-relative+-1":"الربع الأخير","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"ص/م","field-fri-short-relative+0":"الجمعة الحالي","field-fri-short-relative+1":"الجمعة القادم","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"الساعات","field-zone-short":"توقيت","field-month-narrow":"الشهر","field-hour-narrow":"الساعات","field-fri-narrow-relative+-1":"الجمعة الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة القادمة","field-era-narrow":"العصر","field-fri-relative+-1":"الجمعة الماضي","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"الثلاثاء الماضي","field-minute-narrow":"الدقائق","field-mon-narrow-relative+0":"الإثنين الحالي","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"الإثنين القادم","field-zone":"التوقيت","dateFormatItem-MMMEd":"E، d MMM","field-weekOfMonth-narrow":"أسبوع/شهر","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"اليوم","field-quarter-narrow":"ربع السنة","field-sun-short-relative+-1":"الأحد الماضي","field-day-relative+-1":"أمس","field-day-relative+-2":"أول أمس","field-weekday-short":"اليوم","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد القادم","dateFormatItem-Gy":"y G","field-day-short":"يوم","field-week-narrow":"الأسبوع","field-era":"العصر","field-fri-narrow-relative+0":"الجمعة الحالي","field-fri-narrow-relative+1":"الجمعة القادم"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/gregorian.js b/lib/dojo/cldr/nls/ar/gregorian.js
index 02301f1d7..da6247b0b 100644
--- a/lib/dojo/cldr/nls/ar/gregorian.js
+++ b/lib/dojo/cldr/nls/ar/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"months-format-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"field-second-relative+0":"الآن","quarters-standAlone-narrow":["١","٢","٣","٤"],"field-weekday":"اليوم","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E، d/M/y","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء التالي","dateFormatItem-GyMMMEd":"E، d MMM، y G","dateFormatItem-MMMEd":"E، d MMM","eraNarrow":["ق.م","م"],"dateFormatItem-yMM":"MM/y","field-tue-relative+-1":"الثلاثاء الماضي","days-format-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormat-long":"d MMMM، y","field-fri-relative+-1":"الجمعة الماضية","field-wed-relative+-1":"الأربعاء الماضي","months-format-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"م","dateFormat-full":"EEEE، d MMMM، y","field-thu-relative+-1":"الخميس الماضي","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/y","field-era":"العصر","dateFormatItem-yM":"M/y","months-standAlone-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"timeFormat-short":"h:mm a","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-yQQQQ":"QQQQ y","timeFormat-long":"h:mm:ss a z","field-year":"السنة","dateFormatItem-yMMM":"MMM y","field-hour":"الساعات","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"field-sat-relative+0":"السبت الحالي","field-sat-relative+1":"السبت التالي","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"اليوم","field-thu-relative+0":"الخميس الحالي","field-day-relative+1":"غدًا","field-thu-relative+1":"الخميس التالي","dateFormatItem-GyMMMd":"d MMM، y G","field-day-relative+2":"بعد الغد","dateFormatItem-H":"HH","months-standAlone-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"الأحد الحالي","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"الأحد التالي","quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"eraAbbr":["ق.م","م"],"field-minute":"الدقائق","field-dayperiod":"ص/م","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["١","٢","٣","٤"],"field-day-relative+-1":"أمس","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"أول أمس","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E، d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"الجمعة الحالية","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"الجمعة التالية","field-day":"يوم","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-zone":"التوقيت","dateFormatItem-y":"y","months-standAlone-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"field-year-relative+-1":"السنة الماضية","field-month-relative+-1":"الشهر الماضي","dateFormatItem-hm":"h:mm a","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yMMMd":"d MMM، y","eraNames":["قبل الميلاد","ميلادي"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"dateFormatItem-MMM":"LLL","field-month":"الشهر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء التالي","dayPeriods-format-wide-am":"ص","dateFormatItem-MMMMEd":"E، d MMMM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"الاثنين الحالي","field-mon-relative+1":"الاثنين التالي","dateFormat-short":"d/M/y","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"الثواني","field-sat-relative+-1":"السبت الماضي","dateFormatItem-yMMMEd":"E، d MMM، y","field-sun-relative+-1":"الأحد الماضي","field-month-relative+0":"هذا الشهر","field-month-relative+1":"الشهر التالي","dateFormatItem-Ed":"E، d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"الأسبوع","dateFormat-medium":"dd/MM/y","field-year-relative+0":"السنة الحالية","field-week-relative+-1":"الأسبوع الماضي","field-year-relative+1":"السنة التالية","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"الاثنين الماضي","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/gregorian",{"field-quarter-short-relative+0":"هذا الربع","field-quarter-short-relative+1":"الربع القادم","field-tue-relative+-1":"الثلاثاء الماضي","field-year":"السنة","dateFormatItem-yw":"الأسبوع w من سنة Y","dayPeriods-format-abbr-afternoon1":"ظهرًا","dayPeriods-format-abbr-afternoon2":"بعد الظهر","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء القادم","dateFormatItem-ms":"mm:ss","timeFormat-short":"h:mm a","field-minute":"الدقائق","field-tue-narrow-relative+0":"الثلاثاء الحالي","field-tue-narrow-relative+1":"الثلاثاء القادم","field-thu-short-relative+0":"الخميس الحالي","field-day-short-relative+-1":"أمس","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"الخميس القادم","field-day-relative+0":"اليوم","field-day-short-relative+-2":"أول أمس","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-wed-narrow-relative+-1":"الأربعاء الماضي","dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"السنة","field-era-short":"العصر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء القادم","field-weekdayOfMonth":"يوم عمل من الشهر","field-second-short":"الثواني","dayPeriods-format-narrow-am":"ص","dayPeriods-standAlone-abbr-morning1":"فجرًا","dayPeriods-standAlone-abbr-morning2":"ص","dateFormatItem-MMMd":"d MMM","dayPeriods-format-narrow-morning1":"فجرًا","field-weekdayOfMonth-narrow":"يوم عمل/شهر","dayPeriods-format-narrow-morning2":"صباحًا","dayPeriods-format-abbr-am":"ص","field-week-relative+0":"هذا الأسبوع","field-month-relative+0":"هذا الشهر","field-week-relative+1":"الأسبوع القادم","field-month-relative+1":"الشهر القادم","field-sun-narrow-relative+0":"الأحد الحالي","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"الإثنين الحالي","field-sun-narrow-relative+1":"الأحد القادم","field-mon-short-relative+1":"الإثنين القادم","field-second-relative+0":"الآن","months-standAlone-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"eraNames":["قبل الميلاد","ميلادي"],"field-weekOfMonth":"الأسبوع من الشهر","dayPeriods-standAlone-abbr-pm":"م","field-month-short":"الشهر","dateFormatItem-GyMMMEd":"E، d MMM y G","field-day":"يوم","dayPeriods-standAlone-wide-night1":"منتصف الليل","dayPeriods-standAlone-wide-night2":"ليلاً","field-dayOfYear-short":"يوم من سنة","field-year-relative+-1":"السنة الماضية","dayPeriods-format-wide-am":"ص","field-sat-short-relative+-1":"السبت الماضي","dayPeriods-format-narrow-afternoon1":"ظهرًا","dayPeriods-format-wide-afternoon1":"ظهرًا","dayPeriods-format-narrow-afternoon2":"بعد الظهر","field-hour-relative+0":"الساعة الحالية","dayPeriods-format-wide-afternoon2":"بعد الظهر","field-wed-relative+-1":"الأربعاء الماضي","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"السبت الماضي","field-second":"الثواني","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"dayPeriods-standAlone-wide-pm":"مساءً","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM y","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"ربع السنة","field-week-short":"الأسبوع","field-day-narrow-relative+0":"اليوم","dateFormatItem-yMMMEd":"E، d MMM y","field-day-narrow-relative+1":"غدًا","field-day-narrow-relative+2":"بعد الغد","quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"dayPeriods-format-wide-evening1":"مساءً","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"الثلاثاء الحالي","field-tue-short-relative+1":"الثلاثاء القادم","field-mon-relative+-1":"الإثنين الماضي","dateFormatItem-GyMMM":"MMM y G","field-month":"الشهر","field-day-narrow":"يوم","dayPeriods-standAlone-abbr-night1":"منتصف الليل","dayPeriods-standAlone-abbr-night2":"ليلاً","dayPeriods-standAlone-narrow-afternoon1":"ظهرًا","dayPeriods-standAlone-narrow-afternoon2":"بعد الظهر","dateFormatItem-MMM":"LLL","field-minute-short":"الدقائق","field-dayperiod":"ص/م","field-sat-short-relative+0":"السبت الحالي","field-sat-short-relative+1":"السبت القادم","dayPeriods-format-narrow-pm":"م","dateFormat-medium":"dd/MM/y","eraAbbr":["ق.م","م"],"quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dayPeriods-format-abbr-pm":"م","field-second-narrow":"الثواني","field-mon-relative+0":"الإثنين الحالي","dayPeriods-standAlone-narrow-night1":"منتصف الليل","field-mon-relative+1":"الإثنين القادم","field-day-narrow-relative+-1":"أمس","dayPeriods-standAlone-narrow-night2":"ليلاً","field-year-short":"السنة","field-day-narrow-relative+-2":"أول أمس","months-format-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"dayPeriods-format-wide-morning1":"في الصباح","dayPeriods-format-wide-morning2":"صباحًا","field-quarter-relative+-1":"الربع الأخير","field-dayperiod-narrow":"ص/م","dayPeriods-standAlone-narrow-am":"ص","days-format-short":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"quarters-format-narrow":["١","٢","٣","٤"],"dayPeriods-format-wide-pm":"م","field-dayOfYear":"يوم من السنة","field-sat-relative+-1":"السبت الماضي","dateTimeFormat-long":"{1} في {0}","dateFormatItem-Md":"d/M","field-hour":"الساعات","dateFormatItem-yQQQQ":"QQQQ y","months-format-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dayPeriods-format-wide-night1":"في المساء","dateFormat-full":"EEEE، d MMMM y","dayPeriods-format-wide-night2":"ليلاً","field-month-relative+-1":"الشهر الماضي","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"ربع السنة","field-sat-narrow-relative+0":"السبت الحالي","dateFormatItem-Hmv":"HH:mm v","field-fri-relative+0":"الجمعة الحالي","field-sat-narrow-relative+1":"السبت القادم","field-fri-relative+1":"الجمعة القادم","dateFormatItem-EBhm":"E h:mm B","field-sun-short-relative+0":"الأحد الحالي","field-sun-short-relative+1":"الأحد القادم","field-week-relative+-1":"الأسبوع الماضي","field-quarter-short-relative+-1":"الربع الأخير","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"timeFormat-long":"h:mm:ss a z","field-quarter-relative+0":"هذا الربع","field-minute-relative+0":"هذه الدقيقة","field-quarter-relative+1":"الربع القادم","field-wed-short-relative+-1":"الأربعاء الماضي","dateFormatItem-yMMM":"MMM y","dateFormat-short":"d/M/y","dateFormatItem-Bh":"h B","dayPeriods-format-abbr-night1":"في المساء","dateFormatItem-MMMMW":"الأسبوع W من MMMM","field-thu-short-relative+-1":"الخميس الماضي","dayPeriods-format-abbr-night2":"ليلاً","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-mon-narrow-relative+-1":"الإثنين الماضي","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"الخميس الماضي","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"أسبوع من شهر","field-tue-narrow-relative+-1":"الثلاثاء الماضي","dayPeriods-format-abbr-evening1":"مساءً","dayPeriods-standAlone-narrow-pm":"م","dateFormatItem-M":"L","months-standAlone-wide":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"field-wed-short-relative+0":"الأربعاء الحالي","field-wed-short-relative+1":"الأربعاء القادم","dateFormatItem-Hmsv":"HH:mm:ss v","field-sun-relative+-1":"الأحد الماضي","dateFormatItem-MMMMEd":"E، d MMMM","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateTimeFormat-full":"{1} في {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"اليوم","dayPeriods-standAlone-wide-evening1":"مساءً","field-day-short-relative+0":"اليوم","field-quarter-narrow-relative+0":"هذا الربع","field-day-short-relative+1":"غدًا","field-sat-relative+0":"السبت الحالي","dateFormatItem-h":"h a","field-quarter-narrow-relative+1":"الربع القادم","field-day-short-relative+2":"بعد الغد","field-sat-relative+1":"السبت القادم","months-standAlone-abbr":["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],"dateFormatItem-hmsv":"h:mm:ss a v","dayPeriods-format-abbr-morning1":"فجرًا","dayPeriods-standAlone-narrow-evening1":"مساءً","dateFormatItem-yMM":"MM/y","dayPeriods-format-abbr-morning2":"ص","field-dayOfYear-narrow":"يوم/سنة","timeFormat-full":"h:mm:ss a zzzz","field-weekdayOfMonth-short":"يوم عمل من شهر","dateFormatItem-MEd":"E، d/M","field-zone-narrow":"توقيت","dateFormatItem-y":"y","field-thu-narrow-relative+0":"الخميس الحالي","field-sun-narrow-relative+-1":"الأحد الماضي","field-mon-short-relative+-1":"الإثنين الماضي","field-thu-narrow-relative+1":"الخميس القادم","field-thu-relative+0":"الخميس الحالي","dayPeriods-standAlone-abbr-afternoon1":"ظهرًا","field-thu-relative+1":"الخميس القادم","dayPeriods-standAlone-abbr-afternoon2":"بعد الظهر","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"الجمعة الماضي","dateFormatItem-hmv":"h:mm a v","field-thu-relative+-1":"الخميس الماضي","dateFormatItem-yMd":"d/M/y","quarters-standAlone-narrow":["١","٢","٣","٤"],"field-week":"الأسبوع","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-Ed":"E، d","field-wed-narrow-relative+0":"الأربعاء الحالي","field-wed-narrow-relative+1":"الأربعاء القادم","dayPeriods-standAlone-wide-morning1":"فجرًا","dayPeriods-standAlone-wide-morning2":"صباحًا","field-quarter-narrow-relative+-1":"الربع الأخير","field-dayperiod-short":"ص/م","field-fri-short-relative+0":"الجمعة الحالي","field-fri-short-relative+1":"الجمعة القادم","days-standAlone-short":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"dayPeriods-standAlone-narrow-morning1":"فجرًا","dayPeriods-standAlone-narrow-morning2":"صباحًا","field-hour-short":"الساعات","field-zone-short":"توقيت","quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"field-month-narrow":"الشهر","field-hour-narrow":"الساعات","field-fri-narrow-relative+-1":"الجمعة الماضي","field-year-relative+0":"السنة الحالية","field-era-narrow":"العصر","field-year-relative+1":"السنة القادمة","field-fri-relative+-1":"الجمعة الماضي","eraNarrow":["ق.م","م"],"dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"الثلاثاء الماضي","field-minute-narrow":"الدقائق","dayPeriods-standAlone-wide-afternoon1":"ظهرًا","dateFormatItem-yQQQ":"QQQ y","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dayPeriods-standAlone-wide-afternoon2":"بعد الظهر","field-mon-narrow-relative+0":"الإثنين الحالي","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"الإثنين القادم","dateFormatItem-yM":"M/y","field-zone":"التوقيت","dateFormatItem-yMMMM":"MMMM y","dateFormatItem-MMMEd":"E، d MMM","field-weekOfMonth-narrow":"أسبوع/شهر","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-yMEd":"E، d/M/y","field-weekday-narrow":"اليوم","field-quarter-narrow":"ربع السنة","dayPeriods-standAlone-abbr-am":"ص","field-day-relative+-1":"أمس","field-sun-short-relative+-1":"الأحد الماضي","field-day-relative+-2":"أول أمس","dayPeriods-format-narrow-night1":"منتصف الليل","dayPeriods-format-narrow-night2":"ليلاً","field-weekday-short":"اليوم","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-MMdd":"dd/MM","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد القادم","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-Gy":"y G","field-era":"العصر","field-week-narrow":"الأسبوع","field-day-short":"يوم","dayPeriods-standAlone-abbr-evening1":"مساءً","field-fri-narrow-relative+0":"الجمعة الحالي","dayPeriods-format-narrow-evening1":"مساءً","field-fri-narrow-relative+1":"الجمعة القادم","dayPeriods-standAlone-wide-am":"صباحًا"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/hebrew.js b/lib/dojo/cldr/nls/ar/hebrew.js
index 71b032591..df19eae3f 100644
--- a/lib/dojo/cldr/nls/ar/hebrew.js
+++ b/lib/dojo/cldr/nls/ar/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/hebrew",{"days-standAlone-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-second-relative+0":"الآن","quarters-standAlone-narrow":["١","٢","٣","٤"],"field-weekday":"اليوم","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء التالي","dateFormatItem-GyMMMEd":"E، d MMM، y G","dateFormatItem-MMMEd":"E، d MMM","eraNarrow":["ص"],"field-tue-relative+-1":"الثلاثاء الماضي","days-format-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormat-long":"d MMMM، y G","field-fri-relative+-1":"الجمعة الماضية","field-wed-relative+-1":"الأربعاء الماضي","months-format-wide":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"م","dateFormat-full":"EEEE، d MMMM، y G","dateFormatItem-yyyyMEd":"E، d/M/y G","field-thu-relative+-1":"الخميس الماضي","dateFormatItem-Md":"d/M","field-era":"العصر","months-standAlone-wide":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"timeFormat-short":"h:mm a","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"timeFormat-long":"h:mm:ss a z","field-year":"السنة","field-hour":"الساعات","months-format-abbr":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"field-sat-relative+0":"السبت الحالي","field-sat-relative+1":"السبت التالي","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"اليوم","field-thu-relative+0":"الخميس الحالي","field-day-relative+1":"غدًا","field-thu-relative+1":"الخميس التالي","dateFormatItem-GyMMMd":"d MMM، y G","field-day-relative+2":"بعد الغد","months-standAlone-abbr":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E، d MMM، y G","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yyyyMMM":"MMM، y G","dateFormatItem-yyyyMMMd":"d MMM، y G","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد التالي","quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"eraAbbr":["ص"],"field-minute":"الدقائق","field-dayperiod":"ص/م","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"quarters-format-narrow":["١","٢","٣","٤"],"field-day-relative+-1":"أمس","field-day-relative+-2":"أول أمس","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E، d/M","field-fri-relative+0":"الجمعة الحالية","field-fri-relative+1":"الجمعة التالية","field-day":"يوم","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-zone":"التوقيت","dateFormatItem-y":"y G","field-year-relative+-1":"السنة الماضية","field-month-relative+-1":"الشهر الماضي","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"eraNames":["ص"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"الشهر","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء التالي","dayPeriods-format-wide-am":"ص","field-mon-relative+0":"الاثنين الحالي","field-mon-relative+1":"الاثنين التالي","dateFormat-short":"d/M/y GGGGG","field-second":"الثواني","field-sat-relative+-1":"السبت الماضي","field-sun-relative+-1":"الأحد الماضي","field-month-relative+0":"هذا الشهر","field-month-relative+1":"الشهر التالي","dateFormatItem-Ed":"E، d","field-week":"الأسبوع","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"السنة الحالية","field-week-relative+-1":"الأسبوع الماضي","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"السنة التالية","dateFormatItem-yyyyQQQQ":"QQQQ y G","months-format-wide-leap":"آذار الثاني","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"الاثنين الماضي","dateFormatItem-yyyy":"y G","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/hebrew",{"field-quarter-short-relative+0":"هذا الربع","field-quarter-short-relative+1":"الربع القادم","field-tue-relative+-1":"الثلاثاء الماضي","field-year":"السنة","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء القادم","timeFormat-short":"h:mm a","field-minute":"الدقائق","field-tue-narrow-relative+0":"الثلاثاء الحالي","field-tue-narrow-relative+1":"الثلاثاء القادم","field-thu-short-relative+0":"الخميس الحالي","field-day-short-relative+-1":"أمس","dateTimeFormat-short":"{1} في {0}","field-thu-short-relative+1":"الخميس القادم","field-day-relative+0":"اليوم","field-day-short-relative+-2":"أول أمس","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-wed-narrow-relative+-1":"الأربعاء الماضي","field-year-narrow":"السنة","field-era-short":"العصر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء القادم","field-weekdayOfMonth":"يوم عمل من الشهر","field-second-short":"الثواني","dayPeriods-format-narrow-am":"ص","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"يوم عمل/شهر","dayPeriods-format-abbr-am":"ص","field-week-relative+0":"هذا الأسبوع","field-month-relative+0":"هذا الشهر","field-week-relative+1":"الأسبوع القادم","field-month-relative+1":"الشهر القادم","field-sun-narrow-relative+0":"الأحد الحالي","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"الإثنين الحالي","field-sun-narrow-relative+1":"الأحد القادم","field-mon-short-relative+1":"الإثنين القادم","field-second-relative+0":"الآن","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["ص"],"field-weekOfMonth":"الأسبوع من الشهر","dayPeriods-standAlone-abbr-pm":"م","field-month-short":"الشهر","dateFormatItem-GyMMMEd":"E، d MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"يوم","field-dayOfYear-short":"يوم من سنة","field-year-relative+-1":"السنة الماضية","dayPeriods-format-wide-am":"ص","field-sat-short-relative+-1":"السبت الماضي","field-hour-relative+0":"الساعة الحالية","dateFormatItem-yyyyMEd":"E، d/M/y G","field-wed-relative+-1":"الأربعاء الماضي","dateTimeFormat-medium":"{1} في {0}","field-sat-narrow-relative+-1":"السبت الماضي","field-second":"الثواني","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"dayPeriods-standAlone-wide-pm":"مساءً","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"ربع السنة","field-week-short":"الأسبوع","field-day-narrow-relative+0":"اليوم","field-day-narrow-relative+1":"غدًا","field-day-narrow-relative+2":"بعد الغد","quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"field-tue-short-relative+0":"الثلاثاء الحالي","field-tue-short-relative+1":"الثلاثاء القادم","field-mon-relative+-1":"الإثنين الماضي","dateFormatItem-GyMMM":"MMM y G","field-month":"الشهر","field-day-narrow":"يوم","field-minute-short":"الدقائق","field-dayperiod":"ص/م","field-sat-short-relative+0":"السبت الحالي","field-sat-short-relative+1":"السبت القادم","dayPeriods-format-narrow-pm":"م","dateFormat-medium":"dd/MM/y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["ص"],"quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dayPeriods-format-abbr-pm":"م","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"الثواني","field-mon-relative+0":"الإثنين الحالي","field-mon-relative+1":"الإثنين القادم","field-day-narrow-relative+-1":"أمس","field-year-short":"السنة","field-day-narrow-relative+-2":"أول أمس","field-quarter-relative+-1":"الربع الأخير","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"ص/م","dayPeriods-standAlone-narrow-am":"ص","days-format-short":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"quarters-format-narrow":["١","٢","٣","٤"],"dayPeriods-format-wide-pm":"م","field-dayOfYear":"يوم من السنة","field-sat-relative+-1":"السبت الماضي","dateTimeFormat-long":"{1} في {0}","dateFormatItem-Md":"d/M","field-hour":"الساعات","months-format-wide":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"dateFormat-full":"EEEE، d MMMM y G","field-month-relative+-1":"الشهر الماضي","field-quarter-short":"ربع السنة","field-sat-narrow-relative+0":"السبت الحالي","field-fri-relative+0":"الجمعة الحالي","field-sat-narrow-relative+1":"السبت القادم","field-fri-relative+1":"الجمعة القادم","field-sun-short-relative+0":"الأحد الحالي","field-sun-short-relative+1":"الأحد القادم","field-week-relative+-1":"الأسبوع الماضي","field-quarter-short-relative+-1":"الربع الأخير","months-format-abbr":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"field-quarter-relative+0":"هذا الربع","field-minute-relative+0":"هذه الدقيقة","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"الربع القادم","field-wed-short-relative+-1":"الأربعاء الماضي","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"الخميس الماضي","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yyyyMMMEd":"E، d MMM y G","field-mon-narrow-relative+-1":"الإثنين الماضي","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"الخميس الماضي","field-tue-narrow-relative+-1":"الثلاثاء الماضي","field-weekOfMonth-short":"أسبوع من شهر","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"م","field-wed-short-relative+0":"الأربعاء الحالي","months-standAlone-wide":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"field-wed-short-relative+1":"الأربعاء القادم","field-sun-relative+-1":"الأحد الماضي","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateTimeFormat-full":"{1} في {0}","months-format-abbr-leap":"آذار الثاني","field-weekday":"اليوم","field-day-short-relative+0":"اليوم","field-quarter-narrow-relative+0":"هذا الربع","field-sat-relative+0":"السبت الحالي","field-day-short-relative+1":"غدًا","field-quarter-narrow-relative+1":"الربع القادم","field-sat-relative+1":"السبت القادم","field-day-short-relative+2":"بعد الغد","months-standAlone-abbr":["تشري","مرحشوان","كيسلو","طيفت","شباط","آذار الأول","آذار","نيسان","أيار","سيفان","تموز","آب","أيلول"],"months-format-wide-leap":"آذار الثاني","field-dayOfYear-narrow":"يوم/سنة","field-weekdayOfMonth-short":"يوم عمل من شهر","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E، d/M","field-zone-narrow":"توقيت","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"الخميس الحالي","field-thu-narrow-relative+1":"الخميس القادم","field-sun-narrow-relative+-1":"الأحد الماضي","field-mon-short-relative+-1":"الإثنين الماضي","field-thu-relative+0":"الخميس الحالي","field-thu-relative+1":"الخميس القادم","field-fri-short-relative+-1":"الجمعة الماضي","field-thu-relative+-1":"الخميس الماضي","field-week":"الأسبوع","quarters-standAlone-narrow":["١","٢","٣","٤"],"quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-Ed":"E، d","field-wed-narrow-relative+0":"الأربعاء الحالي","field-wed-narrow-relative+1":"الأربعاء القادم","field-quarter-narrow-relative+-1":"الربع الأخير","field-dayperiod-short":"ص/م","dateFormatItem-yyyyMMM":"MMM y G","field-fri-short-relative+0":"الجمعة الحالي","field-fri-short-relative+1":"الجمعة القادم","days-standAlone-short":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"months-standAlone-abbr-leap":"آذار الثاني","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"الساعات","field-zone-short":"توقيت","quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"field-month-narrow":"الشهر","field-hour-narrow":"الساعات","field-fri-narrow-relative+-1":"الجمعة الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة القادمة","field-era-narrow":"العصر","field-fri-relative+-1":"الجمعة الماضي","eraNarrow":["ص"],"field-tue-short-relative+-1":"الثلاثاء الماضي","field-minute-narrow":"الدقائق","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-mon-narrow-relative+0":"الإثنين الحالي","field-mon-narrow-relative+1":"الإثنين القادم","field-zone":"التوقيت","dateFormatItem-MMMEd":"E، d MMM","field-weekOfMonth-narrow":"أسبوع/شهر","field-weekday-narrow":"اليوم","months-standAlone-wide-leap":"آذار الثاني","field-quarter-narrow":"ربع السنة","field-sun-short-relative+-1":"الأحد الماضي","field-day-relative+-1":"أمس","dayPeriods-standAlone-abbr-am":"ص","field-day-relative+-2":"أول أمس","field-weekday-short":"اليوم","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد القادم","dateFormatItem-Gy":"y G","field-day-short":"يوم","field-week-narrow":"الأسبوع","field-era":"العصر","field-fri-narrow-relative+0":"الجمعة الحالي","field-fri-narrow-relative+1":"الجمعة القادم","dayPeriods-standAlone-wide-am":"صباحًا"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/islamic.js b/lib/dojo/cldr/nls/ar/islamic.js
index 94d1a74e4..b89ce8e03 100644
--- a/lib/dojo/cldr/nls/ar/islamic.js
+++ b/lib/dojo/cldr/nls/ar/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/islamic",{"days-standAlone-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"months-format-narrow":["١","٢","٣","٤","٥","٦","٧","٨","٩","١٠","١١","١٢"],"field-second-relative+0":"الآن","quarters-standAlone-narrow":["١","٢","٣","٤"],"field-weekday":"اليوم","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء التالي","dateFormatItem-GyMMMEd":"E، d MMM، y G","dateFormatItem-MMMEd":"E، d MMM","eraNarrow":["هـ"],"field-tue-relative+-1":"الثلاثاء الماضي","days-format-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormat-long":"d MMMM، y G","field-fri-relative+-1":"الجمعة الماضية","field-wed-relative+-1":"الأربعاء الماضي","months-format-wide":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"م","dateFormat-full":"EEEE، d MMMM، y G","dateFormatItem-yyyyMEd":"E، d/M/y G","field-thu-relative+-1":"الخميس الماضي","dateFormatItem-Md":"d/M","field-era":"العصر","months-standAlone-wide":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"timeFormat-short":"h:mm a","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"timeFormat-long":"h:mm:ss a z","field-year":"السنة","field-hour":"الساعات","months-format-abbr":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"field-sat-relative+0":"السبت الحالي","field-sat-relative+1":"السبت التالي","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"اليوم","field-thu-relative+0":"الخميس الحالي","field-day-relative+1":"غدًا","field-thu-relative+1":"الخميس التالي","dateFormatItem-GyMMMd":"d MMM، y G","field-day-relative+2":"بعد الغد","months-standAlone-abbr":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E، d MMM، y G","dateFormatItem-M":"L","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM، y G","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد التالي","quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"eraAbbr":["هـ"],"field-minute":"الدقائق","field-dayperiod":"ص/م","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-d":"d","quarters-format-narrow":["١","٢","٣","٤"],"field-day-relative+-1":"أمس","field-day-relative+-2":"أول أمس","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E، d/M","field-fri-relative+0":"الجمعة الحالية","field-fri-relative+1":"الجمعة التالية","field-day":"يوم","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-zone":"التوقيت","dateFormatItem-y":"y G","months-standAlone-narrow":["١","٢","٣","4","٥","٦","٧","٨","٩","١٠","١١","١٢"],"field-year-relative+-1":"السنة الماضية","field-month-relative+-1":"الشهر الماضي","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"eraNames":["هـ"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"الشهر","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء التالي","dayPeriods-format-wide-am":"ص","field-mon-relative+0":"الاثنين الحالي","field-mon-relative+1":"الاثنين التالي","dateFormat-short":"d/M/y GGGGG","field-second":"الثواني","field-sat-relative+-1":"السبت الماضي","field-sun-relative+-1":"الأحد الماضي","field-month-relative+0":"هذا الشهر","field-month-relative+1":"الشهر التالي","dateFormatItem-Ed":"E، d","field-week":"الأسبوع","dateFormat-medium":"d MMM، y G","field-year-relative+0":"السنة الحالية","field-week-relative+-1":"الأسبوع الماضي","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"السنة التالية","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-mon-relative+-1":"الاثنين الماضي","dateFormatItem-GyMMM":"MMM y G","dateFormatItem-yyyy":"y G","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/islamic",{"field-quarter-short-relative+0":"هذا الربع","field-quarter-short-relative+1":"الربع القادم","field-tue-relative+-1":"الثلاثاء الماضي","field-year":"السنة","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء القادم","timeFormat-short":"h:mm a","field-minute":"الدقائق","field-tue-narrow-relative+0":"الثلاثاء الحالي","field-tue-narrow-relative+1":"الثلاثاء القادم","field-thu-short-relative+0":"الخميس الحالي","field-day-short-relative+-1":"أمس","dateTimeFormat-short":"{1} في {0}","field-thu-short-relative+1":"الخميس القادم","field-day-relative+0":"اليوم","field-day-short-relative+-2":"أول أمس","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-wed-narrow-relative+-1":"الأربعاء الماضي","dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"السنة","field-era-short":"العصر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء القادم","field-weekdayOfMonth":"يوم عمل من الشهر","field-second-short":"الثواني","dayPeriods-format-narrow-am":"ص","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"يوم عمل/شهر","dayPeriods-format-abbr-am":"ص","field-week-relative+0":"هذا الأسبوع","field-month-relative+0":"هذا الشهر","field-week-relative+1":"الأسبوع القادم","field-month-relative+1":"الشهر القادم","field-sun-narrow-relative+0":"الأحد الحالي","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"الإثنين الحالي","field-sun-narrow-relative+1":"الأحد القادم","field-mon-short-relative+1":"الإثنين القادم","field-second-relative+0":"الآن","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["١","٢","٣","٤","٥","٦","٧","٨","٩","١٠","١١","١٢"],"eraNames":["هـ"],"field-weekOfMonth":"الأسبوع من الشهر","dayPeriods-standAlone-abbr-pm":"م","field-month-short":"الشهر","dateFormatItem-GyMMMEd":"E، d MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"يوم","field-dayOfYear-short":"يوم من سنة","field-year-relative+-1":"السنة الماضية","dayPeriods-format-wide-am":"ص","field-sat-short-relative+-1":"السبت الماضي","field-hour-relative+0":"الساعة الحالية","dateFormatItem-yyyyMEd":"E، d/M/y G","field-wed-relative+-1":"الأربعاء الماضي","dateTimeFormat-medium":"{1} في {0}","field-sat-narrow-relative+-1":"السبت الماضي","field-second":"الثواني","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"dayPeriods-standAlone-wide-pm":"مساءً","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"ربع السنة","field-week-short":"الأسبوع","field-day-narrow-relative+0":"اليوم","field-day-narrow-relative+1":"غدًا","field-day-narrow-relative+2":"بعد الغد","quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"field-tue-short-relative+0":"الثلاثاء الحالي","field-tue-short-relative+1":"الثلاثاء القادم","field-mon-relative+-1":"الإثنين الماضي","dateFormatItem-GyMMM":"MMM y G","field-month":"الشهر","field-day-narrow":"يوم","dateFormatItem-MMM":"LLL","field-minute-short":"الدقائق","field-dayperiod":"ص/م","field-sat-short-relative+0":"السبت الحالي","field-sat-short-relative+1":"السبت القادم","dayPeriods-format-narrow-pm":"م","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["هـ"],"quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dayPeriods-format-abbr-pm":"م","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"الثواني","field-mon-relative+0":"الإثنين الحالي","field-mon-relative+1":"الإثنين القادم","field-day-narrow-relative+-1":"أمس","field-year-short":"السنة","field-day-narrow-relative+-2":"أول أمس","months-format-narrow":["١","٢","٣","٤","٥","٦","٧","٨","٩","١٠","١١","١٢"],"field-quarter-relative+-1":"الربع الأخير","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"ص/م","dayPeriods-standAlone-narrow-am":"ص","days-format-short":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"quarters-format-narrow":["١","٢","٣","٤"],"dayPeriods-format-wide-pm":"م","field-dayOfYear":"يوم من السنة","field-sat-relative+-1":"السبت الماضي","dateTimeFormat-long":"{1} في {0}","dateFormatItem-Md":"d/M","field-hour":"الساعات","months-format-wide":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"dateFormat-full":"EEEE، d MMMM y G","field-month-relative+-1":"الشهر الماضي","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"ربع السنة","field-sat-narrow-relative+0":"السبت الحالي","field-fri-relative+0":"الجمعة الحالي","field-sat-narrow-relative+1":"السبت القادم","field-fri-relative+1":"الجمعة القادم","dateFormatItem-EBhm":"E h:mm B","field-sun-short-relative+0":"الأحد الحالي","field-sun-short-relative+1":"الأحد القادم","field-week-relative+-1":"الأسبوع الماضي","field-quarter-short-relative+-1":"الربع الأخير","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"field-quarter-relative+0":"هذا الربع","field-minute-relative+0":"هذه الدقيقة","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"الربع القادم","field-wed-short-relative+-1":"الأربعاء الماضي","dateFormat-short":"d/M/y GGGGG","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"الخميس الماضي","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yyyyMMMEd":"E، d MMM y G","field-mon-narrow-relative+-1":"الإثنين الماضي","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"الخميس الماضي","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"الثلاثاء الماضي","dateFormatItem-H":"HH","field-weekOfMonth-short":"أسبوع من شهر","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"م","dateFormatItem-M":"L","months-standAlone-wide":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"field-wed-short-relative+0":"الأربعاء الحالي","field-wed-short-relative+1":"الأربعاء القادم","field-sun-relative+-1":"الأحد الماضي","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateTimeFormat-full":"{1} في {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"اليوم","field-day-short-relative+0":"اليوم","field-quarter-narrow-relative+0":"هذا الربع","field-day-short-relative+1":"غدًا","field-sat-relative+0":"السبت الحالي","field-quarter-narrow-relative+1":"الربع القادم","dateFormatItem-h":"h a","field-day-short-relative+2":"بعد الغد","field-sat-relative+1":"السبت القادم","months-standAlone-abbr":["محرم","صفر","ربيع الأول","ربيع الآخر","جمادى الأولى","جمادى الآخرة","رجب","شعبان","رمضان","شوال","ذو القعدة","ذو الحجة"],"field-dayOfYear-narrow":"يوم/سنة","field-weekdayOfMonth-short":"يوم عمل من شهر","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E، d/M","field-zone-narrow":"توقيت","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"الخميس الحالي","field-sun-narrow-relative+-1":"الأحد الماضي","field-mon-short-relative+-1":"الإثنين الماضي","field-thu-narrow-relative+1":"الخميس القادم","field-thu-relative+0":"الخميس الحالي","field-thu-relative+1":"الخميس القادم","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"الجمعة الماضي","field-thu-relative+-1":"الخميس الماضي","field-week":"الأسبوع","quarters-standAlone-narrow":["١","٢","٣","٤"],"quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-Ed":"E، d","field-wed-narrow-relative+0":"الأربعاء الحالي","field-wed-narrow-relative+1":"الأربعاء القادم","field-quarter-narrow-relative+-1":"الربع الأخير","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"ص/م","field-fri-short-relative+0":"الجمعة الحالي","field-fri-short-relative+1":"الجمعة القادم","days-standAlone-short":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"الساعات","field-zone-short":"توقيت","quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"field-month-narrow":"الشهر","field-hour-narrow":"الساعات","field-fri-narrow-relative+-1":"الجمعة الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة القادمة","field-era-narrow":"العصر","field-fri-relative+-1":"الجمعة الماضي","eraNarrow":["هـ"],"dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"الثلاثاء الماضي","field-minute-narrow":"الدقائق","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-mon-narrow-relative+0":"الإثنين الحالي","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"الإثنين القادم","field-zone":"التوقيت","dateFormatItem-MMMEd":"E، d MMM","field-weekOfMonth-narrow":"أسبوع/شهر","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"اليوم","field-quarter-narrow":"ربع السنة","field-sun-short-relative+-1":"الأحد الماضي","field-day-relative+-1":"أمس","dayPeriods-standAlone-abbr-am":"ص","field-day-relative+-2":"أول أمس","field-weekday-short":"اليوم","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد القادم","dateFormatItem-Gy":"y G","field-day-short":"يوم","field-week-narrow":"الأسبوع","field-era":"العصر","field-fri-narrow-relative+0":"الجمعة الحالي","field-fri-narrow-relative+1":"الجمعة القادم","dayPeriods-standAlone-wide-am":"صباحًا"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/japanese.js b/lib/dojo/cldr/nls/ar/japanese.js
index 63ffdcb3f..7fcc7c09a 100644
--- a/lib/dojo/cldr/nls/ar/japanese.js
+++ b/lib/dojo/cldr/nls/ar/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/japanese",{"field-sat-relative+0":"السبت الحالي","field-sat-relative+1":"السبت التالي","field-dayperiod":"ص/م","field-sun-relative+-1":"الأحد الماضي","field-mon-relative+-1":"الاثنين الماضي","field-minute":"الدقائق","field-day-relative+-1":"أمس","field-weekday":"اليوم","field-day-relative+-2":"أول أمس","field-era":"العصر","field-hour":"الساعات","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد التالي","field-wed-relative+-1":"الأربعاء الماضي","field-day-relative+0":"اليوم","field-day-relative+1":"غدًا","eraAbbr":["تيكا","هاكتشي","هاكهو","شتشو","تيهو","كيين","وادو","رييكي","يورو","جينكي","تمبيو","تمبيو-كامبو","تمبيو-شوهو","تمبيو-هوجي","تمفو-جينجو","جينجو-كيين","هوكي","تن-أو","إنرياكو","ديدو","كونين","تنتشو","شووا (٨٣٤–٨٤٨)","كاجو","نينجو","سيكو","تنان","جوجان","جينكيي","نينا","كامبيو","شوتاي","انجي","انتشو","شوهيي","تنجيو","تنرياكو","تنتوكو","أووا","كوهو","آنا","تينروكو","تن-نن","جوجن","تنجن","إيكان","كانا","اي-ان","ايسو","شورياكو (٩٩٠–٩٩٥)","تشوتوكو","تشوهو","كانكو","تشووا","كانين","جاين","مانجو","تشوجين","تشورياكو","تشوكيو (١٠٤٠–١٠٤٤)","كانتوكو","ايشو (١٠٤٦–١٠٥٣)","تينجي","كوهيي","جيرياكو","انكيو (١٠٦٩–١٠٧٤)","شوهو (١٠٧٤–١٠٧٧)","شورياكو (١٠٧٧–١٠٨١)","ايهو","أوتوكو","كانجي","كاهو","ايتشو","شوتوكو","كووا (١٠٩٩–١١٠٤)","تشوجي","كاشو","تنين","تن-اي","ايكيو (١١١٣–١١١٨)","جن-اي","هوان","تنجي","ديجي","تنشو (١١٣١–١١٣٢)","تشوشو","هوين","ايجي","كوجي (١١٤٢–١١٤٤)","تنيو","كيوان","نينبيي","كيوجو","هجين","هيجي","ايرياكو","أوهو","تشوكان","ايمان","نين-ان","كاو","شون","أنجين","جيشو","يووا","جيي","جنريوكو","بنجي","كنكيو","شوجي","كنين","جنكيو (١٢٠٤–١٢٠٦)","كن-اي","شوجن (١٢٠٧–١٢١١)","كنرياكو","كنبو (١٢١٣–١٢١٩)","شوكيو","جو","جيننين","كروكو","أنتيي","كنكي","جويي","تمبكو","بنرياكو","كاتيي","رياكنين","ان-أو","نينجي","كنجين","هوجي","كنتشو","كوجن","شوكا","شوجن (١٢٥٩–١٢٦٠)","بن-أو","كوتشو","بن-اي","كنجي","كوان","شوو (١٢٨٨–١٢٩٣)","اينين","شوان","كنجن","كجن","توكجي","انكي","أوتشو","شووا (١٣١٢–١٣١٧)","بنبو","جنو","جنكيو (١٣٢١–١٣٢٤)","شوتشو (١٣٢٤–١٣٢٦)","كريكي","جنتكو","جنكو","كمو","إنجن","كوككو","شوهي","كنتكو","بنتشو","تنجو","كورياكو","كووا (١٣٨١–١٣٨٤)","جنتشو","مييتكو (١٣٨٤–١٣٨٧)","كاكي","كو","مييتكو (١٣٩٠–١٣٩٤)","أويي","شوتشو (١٤٢٨–١٤٢٩)","ايكيو (١٤٢٩–١٤٤١)","ككيتسو","بن-أن","هوتكو","كيوتكو","كوشو","تشوركو","كنشو","بنشو","أونين","بنمي","تشوكيو (١٤٨٧–١٤٨٩)","انتكو","ميو","بنكي","ايشو (١٥٠٤–١٥٢١)","تييي","كيوركو","تنمن","كوجي (١٥٥٥–١٥٥٨)","ايركو","جنكي","تنشو (١٥٧٣–١٥٩٢)","بنركو","كيتشو","جنوا","كان-اي","شوهو (١٦٤٤–١٦٤٨)","كيان","شوو (١٦٥٢–١٦٥٥)","ميرياكو","منجي","كنبن","انبو","تنوا","جوكيو","جنركو","هويي","شوتكو","كيوهو","جنبن","كنبو (١٧٤١–١٧٤٤)","انكيو (١٧٤٤–١٧٤٨)","كان-ان","هورياكو","مييوا","ان-اي","تنمي","كنسي","كيووا","بنكا","بنسي","تنبو","كوكا","كاي","أنسي","من-ان","بنكيو","جنجي","كيو","ميجي","تيشو","شووا","هيسي"],"field-day-relative+2":"بعد الغد","field-tue-relative+0":"الثلاثاء الحالي","field-zone":"التوقيت","field-tue-relative+1":"الثلاثاء التالي","field-week-relative+-1":"الأسبوع الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة التالية","field-sat-relative+-1":"السبت الماضي","field-year-relative+-1":"السنة الماضية","field-year":"السنة","field-fri-relative+0":"الجمعة الحالية","field-fri-relative+1":"الجمعة التالية","field-week":"الأسبوع","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي","field-month-relative+0":"هذا الشهر","field-month":"الشهر","field-month-relative+1":"الشهر التالي","field-fri-relative+-1":"الجمعة الماضية","field-second":"الثواني","field-tue-relative+-1":"الثلاثاء الماضي","field-day":"يوم","field-mon-relative+0":"الاثنين الحالي","field-mon-relative+1":"الاثنين التالي","field-thu-relative+0":"الخميس الحالي","field-second-relative+0":"الآن","field-thu-relative+1":"الخميس التالي","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء التالي","field-month-relative+-1":"الشهر الماضي","field-thu-relative+-1":"الخميس الماضي"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/japanese",{"field-quarter-short-relative+0":"هذا الربع","field-quarter-short-relative+1":"الربع القادم","field-tue-relative+-1":"الثلاثاء الماضي","field-year":"السنة","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء القادم","field-minute":"الدقائق","field-tue-narrow-relative+0":"الثلاثاء الحالي","field-tue-narrow-relative+1":"الثلاثاء القادم","field-thu-short-relative+0":"الخميس الحالي","field-day-short-relative+-1":"أمس","field-thu-short-relative+1":"الخميس القادم","field-day-relative+0":"اليوم","field-day-short-relative+-2":"أول أمس","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-wed-narrow-relative+-1":"الأربعاء الماضي","field-year-narrow":"السنة","field-era-short":"العصر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء القادم","field-weekdayOfMonth":"يوم عمل من الشهر","field-second-short":"الثواني","field-weekdayOfMonth-narrow":"يوم عمل/شهر","field-week-relative+0":"هذا الأسبوع","field-month-relative+0":"هذا الشهر","field-week-relative+1":"الأسبوع القادم","field-month-relative+1":"الشهر القادم","field-sun-narrow-relative+0":"الأحد الحالي","field-mon-short-relative+0":"الإثنين الحالي","field-sun-narrow-relative+1":"الأحد القادم","field-mon-short-relative+1":"الإثنين القادم","field-second-relative+0":"الآن","field-weekOfMonth":"الأسبوع من الشهر","field-month-short":"الشهر","field-day":"يوم","field-dayOfYear-short":"يوم من سنة","field-year-relative+-1":"السنة الماضية","field-sat-short-relative+-1":"السبت الماضي","field-hour-relative+0":"الساعة الحالية","field-wed-relative+-1":"الأربعاء الماضي","field-sat-narrow-relative+-1":"السبت الماضي","field-second":"الثواني","field-quarter":"ربع السنة","field-week-short":"الأسبوع","field-day-narrow-relative+0":"اليوم","field-day-narrow-relative+1":"غدًا","field-day-narrow-relative+2":"بعد الغد","field-tue-short-relative+0":"الثلاثاء الحالي","field-tue-short-relative+1":"الثلاثاء القادم","field-mon-relative+-1":"الإثنين الماضي","field-month":"الشهر","field-day-narrow":"يوم","field-minute-short":"الدقائق","field-dayperiod":"ص/م","field-sat-short-relative+0":"السبت الحالي","field-sat-short-relative+1":"السبت القادم","eraAbbr":["تيكا","هاكتشي","هاكهو","شتشو","تيهو","كيين","وادو","رييكي","يورو","جينكي","تمبيو","تمبيو-كامبو","تمبيو-شوهو","تمبيو-هوجي","تمفو-جينجو","جينجو-كيين","هوكي","تن-أو","إنرياكو","ديدو","كونين","تنتشو","شووا (٨٣٤–٨٤٨)","كاجو","نينجو","سيكو","تنان","جوجان","جينكيي","نينا","كامبيو","شوتاي","انجي","انتشو","شوهيي","تنجيو","تنرياكو","تنتوكو","أووا","كوهو","آنا","تينروكو","تن-نن","جوجن","تنجن","إيكان","كانا","اي-ان","ايسو","شورياكو (٩٩٠–٩٩٥)","تشوتوكو","تشوهو","كانكو","تشووا","كانين","جاين","مانجو","تشوجين","تشورياكو","تشوكيو (١٠٤٠–١٠٤٤)","كانتوكو","ايشو (١٠٤٦–١٠٥٣)","تينجي","كوهيي","جيرياكو","انكيو (١٠٦٩–١٠٧٤)","شوهو (١٠٧٤–١٠٧٧)","شورياكو (١٠٧٧–١٠٨١)","ايهو","أوتوكو","كانجي","كاهو","ايتشو","شوتوكو","كووا (١٠٩٩–١١٠٤)","تشوجي","كاشو","تنين","تن-اي","ايكيو (١١١٣–١١١٨)","جن-اي","هوان","تنجي","ديجي","تنشو (١١٣١–١١٣٢)","تشوشو","هوين","ايجي","كوجي (١١٤٢–١١٤٤)","تنيو","كيوان","نينبيي","كيوجو","هجين","هيجي","ايرياكو","أوهو","تشوكان","ايمان","نين-ان","كاو","شون","أنجين","جيشو","يووا","جيي","جنريوكو","بنجي","كنكيو","شوجي","كنين","جنكيو (١٢٠٤–١٢٠٦)","كن-اي","شوجن (١٢٠٧–١٢١١)","كنرياكو","كنبو (١٢١٣–١٢١٩)","شوكيو","جو","جيننين","كروكو","أنتيي","كنكي","جويي","تمبكو","بنرياكو","كاتيي","رياكنين","ان-أو","نينجي","كنجين","هوجي","كنتشو","كوجن","شوكا","شوجن (١٢٥٩–١٢٦٠)","بن-أو","كوتشو","بن-اي","كنجي","كوان","شوو (١٢٨٨–١٢٩٣)","اينين","شوان","كنجن","كجن","توكجي","انكي","أوتشو","شووا (١٣١٢–١٣١٧)","بنبو","جنو","جنكيو (١٣٢١–١٣٢٤)","شوتشو (١٣٢٤–١٣٢٦)","كريكي","جنتكو","جنكو","كمو","إنجن","كوككو","شوهي","كنتكو","بنتشو","تنجو","كورياكو","كووا (١٣٨١–١٣٨٤)","جنتشو","مييتكو (١٣٨٤–١٣٨٧)","كاكي","كو","مييتكو (١٣٩٠–١٣٩٤)","أويي","شوتشو (١٤٢٨–١٤٢٩)","ايكيو (١٤٢٩–١٤٤١)","ككيتسو","بن-أن","هوتكو","كيوتكو","كوشو","تشوركو","كنشو","بنشو","أونين","بنمي","تشوكيو (١٤٨٧–١٤٨٩)","انتكو","ميو","بنكي","ايشو (١٥٠٤–١٥٢١)","تييي","كيوركو","تنمن","كوجي (١٥٥٥–١٥٥٨)","ايركو","جنكي","تنشو (١٥٧٣–١٥٩٢)","بنركو","كيتشو","جنوا","كان-اي","شوهو (١٦٤٤–١٦٤٨)","كيان","شوو (١٦٥٢–١٦٥٥)","ميرياكو","منجي","كنبن","انبو","تنوا","جوكيو","جنركو","هويي","شوتكو","كيوهو","جنبن","كنبو (١٧٤١–١٧٤٤)","انكيو (١٧٤٤–١٧٤٨)","كان-ان","هورياكو","مييوا","ان-اي","تنمي","كنسي","كيووا","بنكا","بنسي","تنبو","كوكا","كاي","أنسي","من-ان","بنكيو","جنجي","كيو","ميجي","تيشو","شووا","هيسي","ريوا"],"field-second-narrow":"الثواني","field-mon-relative+0":"الإثنين الحالي","field-mon-relative+1":"الإثنين القادم","field-day-narrow-relative+-1":"أمس","field-year-short":"السنة","field-day-narrow-relative+-2":"أول أمس","field-quarter-relative+-1":"الربع الأخير","field-dayperiod-narrow":"ص/م","field-dayOfYear":"يوم من السنة","field-sat-relative+-1":"السبت الماضي","field-hour":"الساعات","field-month-relative+-1":"الشهر الماضي","field-quarter-short":"ربع السنة","field-sat-narrow-relative+0":"السبت الحالي","field-fri-relative+0":"الجمعة الحالي","field-sat-narrow-relative+1":"السبت القادم","field-fri-relative+1":"الجمعة القادم","field-sun-short-relative+0":"الأحد الحالي","field-sun-short-relative+1":"الأحد القادم","field-week-relative+-1":"الأسبوع الماضي","field-quarter-short-relative+-1":"الربع الأخير","field-quarter-relative+0":"هذا الربع","field-minute-relative+0":"هذه الدقيقة","field-quarter-relative+1":"الربع القادم","field-wed-short-relative+-1":"الأربعاء الماضي","field-thu-short-relative+-1":"الخميس الماضي","field-mon-narrow-relative+-1":"الإثنين الماضي","field-thu-narrow-relative+-1":"الخميس الماضي","field-tue-narrow-relative+-1":"الثلاثاء الماضي","field-weekOfMonth-short":"أسبوع من شهر","field-wed-short-relative+0":"الأربعاء الحالي","field-wed-short-relative+1":"الأربعاء القادم","field-sun-relative+-1":"الأحد الماضي","field-weekday":"اليوم","field-day-short-relative+0":"اليوم","field-quarter-narrow-relative+0":"هذا الربع","field-sat-relative+0":"السبت الحالي","field-day-short-relative+1":"غدًا","field-quarter-narrow-relative+1":"الربع القادم","field-sat-relative+1":"السبت القادم","field-day-short-relative+2":"بعد الغد","field-dayOfYear-narrow":"يوم/سنة","field-weekdayOfMonth-short":"يوم عمل من شهر","field-zone-narrow":"توقيت","field-thu-narrow-relative+0":"الخميس الحالي","field-thu-narrow-relative+1":"الخميس القادم","field-sun-narrow-relative+-1":"الأحد الماضي","field-mon-short-relative+-1":"الإثنين الماضي","field-thu-relative+0":"الخميس الحالي","field-thu-relative+1":"الخميس القادم","field-fri-short-relative+-1":"الجمعة الماضي","field-thu-relative+-1":"الخميس الماضي","field-week":"الأسبوع","field-wed-narrow-relative+0":"الأربعاء الحالي","field-wed-narrow-relative+1":"الأربعاء القادم","field-quarter-narrow-relative+-1":"الربع الأخير","field-dayperiod-short":"ص/م","field-fri-short-relative+0":"الجمعة الحالي","field-fri-short-relative+1":"الجمعة القادم","field-hour-short":"الساعات","field-zone-short":"توقيت","field-month-narrow":"الشهر","field-hour-narrow":"الساعات","field-fri-narrow-relative+-1":"الجمعة الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة القادمة","field-era-narrow":"العصر","field-fri-relative+-1":"الجمعة الماضي","field-tue-short-relative+-1":"الثلاثاء الماضي","field-minute-narrow":"الدقائق","field-mon-narrow-relative+0":"الإثنين الحالي","field-mon-narrow-relative+1":"الإثنين القادم","field-zone":"التوقيت","field-weekOfMonth-narrow":"أسبوع/شهر","field-weekday-narrow":"اليوم","field-quarter-narrow":"ربع السنة","field-sun-short-relative+-1":"الأحد الماضي","field-day-relative+-1":"أمس","field-day-relative+-2":"أول أمس","field-weekday-short":"اليوم","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد القادم","field-day-short":"يوم","field-week-narrow":"الأسبوع","field-era":"العصر","field-fri-narrow-relative+0":"الجمعة الحالي","field-fri-narrow-relative+1":"الجمعة القادم"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/number.js b/lib/dojo/cldr/nls/ar/number.js
index f27b4bfaf..d2a033e25 100644
--- a/lib/dojo/cldr/nls/ar/number.js
+++ b/lib/dojo/cldr/nls/ar/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000 تريليون","decimalFormat-short":"000 ترليو"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":"؛","percentSign":"%","minusSign":"-","decimalFormat-short":"000 ترليون","nan":"ليس رقمًا","plusSign":"+","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 ترليون","decimalFormat":"#,##0.###","currencyFormat-short":"000 ترليون ¤","timeSeparator":":","decimal":".","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/persian.js b/lib/dojo/cldr/nls/ar/persian.js
index 0275d69bc..dc24e74b1 100644
--- a/lib/dojo/cldr/nls/ar/persian.js
+++ b/lib/dojo/cldr/nls/ar/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/persian",{"days-standAlone-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"months-format-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"field-second-relative+0":"الآن","quarters-standAlone-narrow":["١","٢","٣","٤"],"field-weekday":"اليوم","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء التالي","dateFormatItem-GyMMMEd":"E، d MMM، y G","dateFormatItem-MMMEd":"E، d MMM","eraNarrow":["ه.ش"],"field-tue-relative+-1":"الثلاثاء الماضي","days-format-short":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormat-long":"d MMMM، y G","field-fri-relative+-1":"الجمعة الماضية","field-wed-relative+-1":"الأربعاء الماضي","months-format-wide":["فرفردن","أذربيهشت","خرداد","تار","مرداد","شهرفار","مهر","آيان","آذر","دي","بهمن","اسفندار"],"dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"م","dateFormat-full":"EEEE، d MMMM، y G","dateFormatItem-yyyyMEd":"E، d/M/y G","field-thu-relative+-1":"الخميس الماضي","dateFormatItem-Md":"d/M","field-era":"العصر","months-standAlone-wide":["فرفردن","أذربيهشت","خرداد","تار","مرداد","شهرفار","مهر","آيان","آذر","دي","بهمن","اسفندار"],"timeFormat-short":"h:mm a","quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"timeFormat-long":"h:mm:ss a z","field-year":"السنة","field-hour":"الساعات","months-format-abbr":["فرفردن","أذربيهشت","خرداد","تار","مرداد","شهرفار","مهر","آيان","آذر","دي","بهمن","اسفندار"],"field-sat-relative+0":"السبت الحالي","field-sat-relative+1":"السبت التالي","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"اليوم","field-thu-relative+0":"الخميس الحالي","field-day-relative+1":"غدًا","field-thu-relative+1":"الخميس التالي","dateFormatItem-GyMMMd":"d MMM، y G","field-day-relative+2":"بعد الغد","months-standAlone-abbr":["فرفردن","أذربيهشت","خرداد","تار","مرداد","شهرفار","مهر","آيان","آذر","دي","بهمن","اسفندار"],"quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E، d MMM، y G","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yyyyMMM":"MMM، y G","dateFormatItem-yyyyMMMd":"d MMM، y G","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد التالي","quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"eraAbbr":["ه.ش"],"field-minute":"الدقائق","field-dayperiod":"ص/م","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"quarters-format-narrow":["١","٢","٣","٤"],"field-day-relative+-1":"أمس","field-day-relative+-2":"أول أمس","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E، d/M","field-fri-relative+0":"الجمعة الحالية","field-fri-relative+1":"الجمعة التالية","field-day":"يوم","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-zone":"التوقيت","dateFormatItem-y":"y G","months-standAlone-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"field-year-relative+-1":"السنة الماضية","field-month-relative+-1":"الشهر الماضي","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"eraNames":["ه.ش"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"الشهر","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء التالي","dayPeriods-format-wide-am":"ص","field-mon-relative+0":"الاثنين الحالي","field-mon-relative+1":"الاثنين التالي","dateFormat-short":"d/M/y GGGGG","field-second":"الثواني","field-sat-relative+-1":"السبت الماضي","field-sun-relative+-1":"الأحد الماضي","field-month-relative+0":"هذا الشهر","field-month-relative+1":"الشهر التالي","dateFormatItem-Ed":"E، d","field-week":"الأسبوع","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"السنة الحالية","field-week-relative+-1":"الأسبوع الماضي","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"السنة التالية","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"الاثنين الماضي","dateFormatItem-yyyy":"y G","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/persian",{"field-quarter-short-relative+0":"هذا الربع","field-quarter-short-relative+1":"الربع القادم","field-tue-relative+-1":"الثلاثاء الماضي","field-year":"السنة","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء القادم","timeFormat-short":"h:mm a","field-minute":"الدقائق","field-tue-narrow-relative+0":"الثلاثاء الحالي","field-tue-narrow-relative+1":"الثلاثاء القادم","field-thu-short-relative+0":"الخميس الحالي","field-day-short-relative+-1":"أمس","dateTimeFormat-short":"{1} في {0}","field-thu-short-relative+1":"الخميس القادم","field-day-relative+0":"اليوم","field-day-short-relative+-2":"أول أمس","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-wed-narrow-relative+-1":"الأربعاء الماضي","field-year-narrow":"السنة","field-era-short":"العصر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء القادم","field-weekdayOfMonth":"يوم عمل من الشهر","field-second-short":"الثواني","dayPeriods-format-narrow-am":"ص","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"يوم عمل/شهر","dayPeriods-format-abbr-am":"ص","field-week-relative+0":"هذا الأسبوع","field-month-relative+0":"هذا الشهر","field-week-relative+1":"الأسبوع القادم","field-month-relative+1":"الشهر القادم","field-sun-narrow-relative+0":"الأحد الحالي","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"الإثنين الحالي","field-sun-narrow-relative+1":"الأحد القادم","field-mon-short-relative+1":"الإثنين القادم","field-second-relative+0":"الآن","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"eraNames":["ه.ش"],"field-weekOfMonth":"الأسبوع من الشهر","dayPeriods-standAlone-abbr-pm":"م","field-month-short":"الشهر","dateFormatItem-GyMMMEd":"E، d MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"يوم","field-dayOfYear-short":"يوم من سنة","field-year-relative+-1":"السنة الماضية","dayPeriods-format-wide-am":"ص","field-sat-short-relative+-1":"السبت الماضي","field-hour-relative+0":"الساعة الحالية","dateFormatItem-yyyyMEd":"E، d/M/y G","field-wed-relative+-1":"الأربعاء الماضي","dateTimeFormat-medium":"{1} في {0}","field-sat-narrow-relative+-1":"السبت الماضي","field-second":"الثواني","days-standAlone-narrow":["ح","ن","ث","ر","خ","ج","س"],"dayPeriods-standAlone-wide-pm":"مساءً","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"ربع السنة","field-week-short":"الأسبوع","field-day-narrow-relative+0":"اليوم","field-day-narrow-relative+1":"غدًا","field-day-narrow-relative+2":"بعد الغد","quarters-standAlone-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"days-format-narrow":["ح","ن","ث","ر","خ","ج","س"],"field-tue-short-relative+0":"الثلاثاء الحالي","field-tue-short-relative+1":"الثلاثاء القادم","field-mon-relative+-1":"الإثنين الماضي","dateFormatItem-GyMMM":"MMM y G","field-month":"الشهر","field-day-narrow":"يوم","field-minute-short":"الدقائق","field-dayperiod":"ص/م","field-sat-short-relative+0":"السبت الحالي","field-sat-short-relative+1":"السبت القادم","dayPeriods-format-narrow-pm":"م","dateFormat-medium":"dd/MM/y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["ه.ش"],"quarters-standAlone-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dayPeriods-format-abbr-pm":"م","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"الثواني","field-mon-relative+0":"الإثنين الحالي","field-mon-relative+1":"الإثنين القادم","field-day-narrow-relative+-1":"أمس","field-year-short":"السنة","field-day-narrow-relative+-2":"أول أمس","months-format-narrow":["ي","ف","م","أ","و","ن","ل","غ","س","ك","ب","د"],"field-quarter-relative+-1":"الربع الأخير","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"ص/م","dayPeriods-standAlone-narrow-am":"ص","days-format-short":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"quarters-format-narrow":["١","٢","٣","٤"],"dayPeriods-format-wide-pm":"م","field-dayOfYear":"يوم من السنة","field-sat-relative+-1":"السبت الماضي","dateTimeFormat-long":"{1} في {0}","dateFormatItem-Md":"d/M","field-hour":"الساعات","months-format-wide":["فرفردن","أذربيهشت","خرداد","تار","مرداد","شهرفار","مهر","آيان","آذر","دي","بهمن","اسفندار"],"dateFormat-full":"EEEE، d MMMM y G","field-month-relative+-1":"الشهر الماضي","field-quarter-short":"ربع السنة","field-sat-narrow-relative+0":"السبت الحالي","field-fri-relative+0":"الجمعة الحالي","field-sat-narrow-relative+1":"السبت القادم","field-fri-relative+1":"الجمعة القادم","field-sun-short-relative+0":"الأحد الحالي","field-sun-short-relative+1":"الأحد القادم","field-week-relative+-1":"الأسبوع الماضي","field-quarter-short-relative+-1":"الربع الأخير","months-format-abbr":["فرفردن","أذربيهشت","خرداد","تار","مرداد","شهرفار","مهر","آيان","آذر","دي","بهمن","اسفندار"],"field-quarter-relative+0":"هذا الربع","field-minute-relative+0":"هذه الدقيقة","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"الربع القادم","field-wed-short-relative+-1":"الأربعاء الماضي","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"الخميس الماضي","days-standAlone-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateFormatItem-yyyyMMMEd":"E، d MMM y G","field-mon-narrow-relative+-1":"الإثنين الماضي","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"الخميس الماضي","field-tue-narrow-relative+-1":"الثلاثاء الماضي","field-weekOfMonth-short":"أسبوع من شهر","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"م","field-wed-short-relative+0":"الأربعاء الحالي","months-standAlone-wide":["فرفردن","أذربيهشت","خرداد","تار","مرداد","شهرفار","مهر","آيان","آذر","دي","بهمن","اسفندار"],"field-wed-short-relative+1":"الأربعاء القادم","field-sun-relative+-1":"الأحد الماضي","days-standAlone-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"dateTimeFormat-full":"{1} في {0}","field-weekday":"اليوم","field-day-short-relative+0":"اليوم","field-quarter-narrow-relative+0":"هذا الربع","field-sat-relative+0":"السبت الحالي","field-day-short-relative+1":"غدًا","field-quarter-narrow-relative+1":"الربع القادم","field-sat-relative+1":"السبت القادم","field-day-short-relative+2":"بعد الغد","months-standAlone-abbr":["فرفردن","أذربيهشت","خرداد","تار","مرداد","شهرفار","مهر","آيان","آذر","دي","بهمن","اسفندار"],"field-dayOfYear-narrow":"يوم/سنة","field-weekdayOfMonth-short":"يوم عمل من شهر","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E، d/M","field-zone-narrow":"توقيت","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"الخميس الحالي","field-thu-narrow-relative+1":"الخميس القادم","field-sun-narrow-relative+-1":"الأحد الماضي","field-mon-short-relative+-1":"الإثنين الماضي","field-thu-relative+0":"الخميس الحالي","field-thu-relative+1":"الخميس القادم","field-fri-short-relative+-1":"الجمعة الماضي","field-thu-relative+-1":"الخميس الماضي","field-week":"الأسبوع","quarters-standAlone-narrow":["١","٢","٣","٤"],"quarters-format-wide":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"dateFormatItem-Ed":"E، d","field-wed-narrow-relative+0":"الأربعاء الحالي","field-wed-narrow-relative+1":"الأربعاء القادم","field-quarter-narrow-relative+-1":"الربع الأخير","field-dayperiod-short":"ص/م","dateFormatItem-yyyyMMM":"MMM y G","field-fri-short-relative+0":"الجمعة الحالي","field-fri-short-relative+1":"الجمعة القادم","days-standAlone-short":["أحد","إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],"dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"الساعات","field-zone-short":"توقيت","quarters-format-abbr":["الربع الأول","الربع الثاني","الربع الثالث","الربع الرابع"],"field-month-narrow":"الشهر","field-hour-narrow":"الساعات","field-fri-narrow-relative+-1":"الجمعة الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة القادمة","field-era-narrow":"العصر","field-fri-relative+-1":"الجمعة الماضي","eraNarrow":["ه.ش"],"field-tue-short-relative+-1":"الثلاثاء الماضي","field-minute-narrow":"الدقائق","days-format-wide":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-mon-narrow-relative+0":"الإثنين الحالي","field-mon-narrow-relative+1":"الإثنين القادم","field-zone":"التوقيت","dateFormatItem-MMMEd":"E، d MMM","field-weekOfMonth-narrow":"أسبوع/شهر","field-weekday-narrow":"اليوم","field-quarter-narrow":"ربع السنة","field-sun-short-relative+-1":"الأحد الماضي","field-day-relative+-1":"أمس","dayPeriods-standAlone-abbr-am":"ص","field-day-relative+-2":"أول أمس","field-weekday-short":"اليوم","days-format-abbr":["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],"field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد القادم","dateFormatItem-Gy":"y G","field-day-short":"يوم","field-week-narrow":"الأسبوع","field-era":"العصر","field-fri-narrow-relative+0":"الجمعة الحالي","field-fri-narrow-relative+1":"الجمعة القادم","dayPeriods-standAlone-wide-am":"صباحًا"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ar/roc.js b/lib/dojo/cldr/nls/ar/roc.js
index 0ff9b2203..94d1bfde0 100644
--- a/lib/dojo/cldr/nls/ar/roc.js
+++ b/lib/dojo/cldr/nls/ar/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ar/roc",{"field-sat-relative+0":"السبت الحالي","field-sat-relative+1":"السبت التالي","field-dayperiod":"ص/م","field-sun-relative+-1":"الأحد الماضي","field-mon-relative+-1":"الاثنين الماضي","field-minute":"الدقائق","field-day-relative+-1":"أمس","field-weekday":"اليوم","field-day-relative+-2":"أول أمس","field-era":"العصر","field-hour":"الساعات","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد التالي","field-wed-relative+-1":"الأربعاء الماضي","field-day-relative+0":"اليوم","field-day-relative+1":"غدًا","eraAbbr":["Before R.O.C.","جمهورية الصي"],"field-day-relative+2":"بعد الغد","field-tue-relative+0":"الثلاثاء الحالي","field-zone":"التوقيت","field-tue-relative+1":"الثلاثاء التالي","field-week-relative+-1":"الأسبوع الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة التالية","field-sat-relative+-1":"السبت الماضي","field-year-relative+-1":"السنة الماضية","field-year":"السنة","field-fri-relative+0":"الجمعة الحالية","field-fri-relative+1":"الجمعة التالية","field-week":"الأسبوع","field-week-relative+0":"هذا الأسبوع","field-week-relative+1":"الأسبوع التالي","field-month-relative+0":"هذا الشهر","field-month":"الشهر","field-month-relative+1":"الشهر التالي","field-fri-relative+-1":"الجمعة الماضية","field-second":"الثواني","field-tue-relative+-1":"الثلاثاء الماضي","field-day":"يوم","field-mon-relative+0":"الاثنين الحالي","field-mon-relative+1":"الاثنين التالي","field-thu-relative+0":"الخميس الحالي","field-second-relative+0":"الآن","field-thu-relative+1":"الخميس التالي","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء التالي","field-month-relative+-1":"الشهر الماضي","field-thu-relative+-1":"الخميس الماضي"}); \ No newline at end of file
+define("dojo/cldr/nls/ar/roc",{"field-quarter-short-relative+0":"هذا الربع","field-quarter-short-relative+1":"الربع القادم","field-tue-relative+-1":"الثلاثاء الماضي","field-year":"السنة","field-wed-relative+0":"الأربعاء الحالي","field-wed-relative+1":"الأربعاء القادم","field-minute":"الدقائق","field-tue-narrow-relative+0":"الثلاثاء الحالي","field-tue-narrow-relative+1":"الثلاثاء القادم","field-thu-short-relative+0":"الخميس الحالي","field-day-short-relative+-1":"أمس","field-thu-short-relative+1":"الخميس القادم","field-day-relative+0":"اليوم","field-day-short-relative+-2":"أول أمس","field-day-relative+1":"غدًا","field-day-relative+2":"بعد الغد","field-wed-narrow-relative+-1":"الأربعاء الماضي","field-year-narrow":"السنة","field-era-short":"العصر","field-tue-relative+0":"الثلاثاء الحالي","field-tue-relative+1":"الثلاثاء القادم","field-weekdayOfMonth":"يوم عمل من الشهر","field-second-short":"الثواني","field-weekdayOfMonth-narrow":"يوم عمل/شهر","field-week-relative+0":"هذا الأسبوع","field-month-relative+0":"هذا الشهر","field-week-relative+1":"الأسبوع القادم","field-month-relative+1":"الشهر القادم","field-sun-narrow-relative+0":"الأحد الحالي","field-mon-short-relative+0":"الإثنين الحالي","field-sun-narrow-relative+1":"الأحد القادم","field-mon-short-relative+1":"الإثنين القادم","field-second-relative+0":"الآن","field-weekOfMonth":"الأسبوع من الشهر","field-month-short":"الشهر","field-day":"يوم","field-dayOfYear-short":"يوم من سنة","field-year-relative+-1":"السنة الماضية","field-sat-short-relative+-1":"السبت الماضي","field-hour-relative+0":"الساعة الحالية","field-wed-relative+-1":"الأربعاء الماضي","field-sat-narrow-relative+-1":"السبت الماضي","field-second":"الثواني","field-quarter":"ربع السنة","field-week-short":"الأسبوع","field-day-narrow-relative+0":"اليوم","field-day-narrow-relative+1":"غدًا","field-day-narrow-relative+2":"بعد الغد","field-tue-short-relative+0":"الثلاثاء الحالي","field-tue-short-relative+1":"الثلاثاء القادم","field-mon-relative+-1":"الإثنين الماضي","field-month":"الشهر","field-day-narrow":"يوم","field-minute-short":"الدقائق","field-dayperiod":"ص/م","field-sat-short-relative+0":"السبت الحالي","field-sat-short-relative+1":"السبت القادم","eraAbbr":["Before R.O.C.","جمهورية الصي"],"field-second-narrow":"الثواني","field-mon-relative+0":"الإثنين الحالي","field-mon-relative+1":"الإثنين القادم","field-day-narrow-relative+-1":"أمس","field-year-short":"السنة","field-day-narrow-relative+-2":"أول أمس","field-quarter-relative+-1":"الربع الأخير","field-dayperiod-narrow":"ص/م","field-dayOfYear":"يوم من السنة","field-sat-relative+-1":"السبت الماضي","field-hour":"الساعات","field-month-relative+-1":"الشهر الماضي","field-quarter-short":"ربع السنة","field-sat-narrow-relative+0":"السبت الحالي","field-fri-relative+0":"الجمعة الحالي","field-sat-narrow-relative+1":"السبت القادم","field-fri-relative+1":"الجمعة القادم","field-sun-short-relative+0":"الأحد الحالي","field-sun-short-relative+1":"الأحد القادم","field-week-relative+-1":"الأسبوع الماضي","field-quarter-short-relative+-1":"الربع الأخير","field-quarter-relative+0":"هذا الربع","field-minute-relative+0":"هذه الدقيقة","field-quarter-relative+1":"الربع القادم","field-wed-short-relative+-1":"الأربعاء الماضي","field-thu-short-relative+-1":"الخميس الماضي","field-mon-narrow-relative+-1":"الإثنين الماضي","field-thu-narrow-relative+-1":"الخميس الماضي","field-tue-narrow-relative+-1":"الثلاثاء الماضي","field-weekOfMonth-short":"أسبوع من شهر","field-wed-short-relative+0":"الأربعاء الحالي","field-wed-short-relative+1":"الأربعاء القادم","field-sun-relative+-1":"الأحد الماضي","field-weekday":"اليوم","field-day-short-relative+0":"اليوم","field-quarter-narrow-relative+0":"هذا الربع","field-sat-relative+0":"السبت الحالي","field-day-short-relative+1":"غدًا","field-quarter-narrow-relative+1":"الربع القادم","field-sat-relative+1":"السبت القادم","field-day-short-relative+2":"بعد الغد","field-dayOfYear-narrow":"يوم/سنة","field-weekdayOfMonth-short":"يوم عمل من شهر","field-zone-narrow":"توقيت","field-thu-narrow-relative+0":"الخميس الحالي","field-thu-narrow-relative+1":"الخميس القادم","field-sun-narrow-relative+-1":"الأحد الماضي","field-mon-short-relative+-1":"الإثنين الماضي","field-thu-relative+0":"الخميس الحالي","field-thu-relative+1":"الخميس القادم","field-fri-short-relative+-1":"الجمعة الماضي","field-thu-relative+-1":"الخميس الماضي","field-week":"الأسبوع","field-wed-narrow-relative+0":"الأربعاء الحالي","field-wed-narrow-relative+1":"الأربعاء القادم","field-quarter-narrow-relative+-1":"الربع الأخير","field-dayperiod-short":"ص/م","field-fri-short-relative+0":"الجمعة الحالي","field-fri-short-relative+1":"الجمعة القادم","field-hour-short":"الساعات","field-zone-short":"توقيت","field-month-narrow":"الشهر","field-hour-narrow":"الساعات","field-fri-narrow-relative+-1":"الجمعة الماضي","field-year-relative+0":"السنة الحالية","field-year-relative+1":"السنة القادمة","field-era-narrow":"العصر","field-fri-relative+-1":"الجمعة الماضي","field-tue-short-relative+-1":"الثلاثاء الماضي","field-minute-narrow":"الدقائق","field-mon-narrow-relative+0":"الإثنين الحالي","field-mon-narrow-relative+1":"الإثنين القادم","field-zone":"التوقيت","field-weekOfMonth-narrow":"أسبوع/شهر","field-weekday-narrow":"اليوم","field-quarter-narrow":"ربع السنة","field-sun-short-relative+-1":"الأحد الماضي","field-day-relative+-1":"أمس","field-day-relative+-2":"أول أمس","field-weekday-short":"اليوم","field-sun-relative+0":"الأحد الحالي","field-sun-relative+1":"الأحد القادم","field-day-short":"يوم","field-week-narrow":"الأسبوع","field-era":"العصر","field-fri-narrow-relative+0":"الجمعة الحالي","field-fri-narrow-relative+1":"الجمعة القادم"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/bs/buddhist.js b/lib/dojo/cldr/nls/bs/buddhist.js
new file mode 100644
index 000000000..d2087234e
--- /dev/null
+++ b/lib/dojo/cldr/nls/bs/buddhist.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/bs/buddhist",{"field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-day-relative+2":"prekosutra","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"dan u mjesecu","field-second-short":"sek.","dayPeriods-format-narrow-am":"prijepodne","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"d. u mj.","field-week-relative+0":"ove sedmice","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeće sedmice","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon","field-second-relative+0":"sada","months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-weekOfMonth":"sedmica u mjesecu","field-month-short":"mj.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"d.M.y. G","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","dayPeriods-format-wide-am":"prijepodne","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","dateFormatItem-yyyyMEd":"E, d.M.y. G","field-wed-relative+-1":"prošla srijeda","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","č","p","s"],"dayPeriods-standAlone-wide-pm":"popodne","dateFormat-long":"dd. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"kvartal","field-week-short":"sed.","quarters-standAlone-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"days-format-narrow":["N","P","U","S","Č","P","S"],"field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"MMM y. G","field-month":"mjesec","field-day-narrow":"dan","field-minute-short":"min.","field-dayperiod":"prijepodne/poslijepodne","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dayPeriods-format-narrow-pm":"popodne","dateFormat-medium":"dd.MM.y. G","dateFormatItem-yyyyMMMM":"LLLL y. G","eraAbbr":["BE"],"quarters-standAlone-abbr":["KV1","KV2","KV3","KV4"],"dateFormatItem-yyyyM":"MM/y G","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-year-short":"god.","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-quarter-relative+-1":"posljednji kvartal","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"prijepodne/poslijepodne","dayPeriods-standAlone-narrow-am":"prijepodne","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"popodne","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-Md":"d.M.","field-hour":"sat","months-format-wide":["januar","februar","mart","april","maj","juni","juli","august","septembar","oktobar","novembar","decembar"],"dateFormat-full":"EEEE, dd. MMMM y. G","field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošle sedmice","months-format-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormat-short":"dd.MM.y. GGGGG","field-thu-short-relative+-1":"prošli čet.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","dateFormatItem-H":"H","field-weekOfMonth-short":"sed. u mj.","dateFormatItem-yyyy":"y. G","dayPeriods-standAlone-narrow-pm":"popodne","field-wed-short-relative+0":"ova sri.","months-standAlone-wide":["januar","februar","mart","april","maj","juni","juli","august","septembar","oktobar","novembar","decembar"],"field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-hm":"hh:mm a","field-weekday":"dan u sedmici","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"field-dayOfYear-narrow":"dan u g.","field-weekdayOfMonth-short":"dan u mj.","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"zona","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-hms":"hh:mm:ss a","field-fri-short-relative+-1":"prošli pet.","field-thu-relative+-1":"prošli četvrtak","field-week":"sedmica","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-dayperiod-short":"prijepodne/poslijepodne","dateFormatItem-yyyyMMM":"MMM y. G","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"field-zone-short":"zona","field-hour-short":"h","quarters-format-abbr":["KV1","KV2","KV3","KV4"],"field-month-narrow":"mj.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min.","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"s. u mj.","field-weekday-narrow":"dan u sed.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u sed.","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-Gy":"y. G","field-day-short":"dan","field-week-narrow":"sed.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet.","dayPeriods-standAlone-wide-am":"prijepodne"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/bs/chinese.js b/lib/dojo/cldr/nls/bs/chinese.js
new file mode 100644
index 000000000..1f4e917b5
--- /dev/null
+++ b/lib/dojo/cldr/nls/bs/chinese.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/bs/chinese",{"field-second-relative+0":"sada","field-quarter-relative+-1":"posljednji kvartal","field-weekday":"dan u sedmici","field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-weekOfMonth-short":"sed. u mj.","field-weekday-short":"dan u sed.","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-dayperiod-short":"prijepodne/poslijepodne","field-week-short":"sed.","field-tue-relative+-1":"prošli utorak","field-year-short":"god.","field-era-narrow":"era","field-thu-narrow-relative+-1":"prošli čet.","field-hour-relative+0":"ovaj sat","field-quarter-narrow":"kv.","field-fri-relative+-1":"prošli petak","field-hour-short":"h","field-wed-relative+-1":"prošla srijeda","field-dayOfYear":"dan u godini","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+-1":"prošli četvrtak","field-era":"era","field-sat-narrow-relative+0":"ova sub.","field-sat-narrow-relative+1":"sljedeća sub.","field-year":"godina","field-hour":"sat","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-sat-short-relative+-1":"prošla sub.","field-weekOfMonth-narrow":"s. u mj.","field-minute-narrow":"min.","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-thu-relative+0":"ovaj četvrtak","field-mon-narrow-relative+-1":"prošli pon.","field-day-relative+2":"prekosutra","field-wed-narrow-relative+0":"ova sri.","field-thu-relative+1":"sljedeći četvrtak","field-wed-narrow-relative+1":"sljedeća sri.","field-mon-short-relative+0":"ovaj pon.","field-mon-short-relative+1":"sljedeći pon","field-weekdayOfMonth-short":"dan u mj.","field-wed-short-relative+-1":"prošla sri.","field-fri-narrow-relative+-1":"prošli pet.","field-hour-narrow":"h","field-tue-short-relative+0":"ovaj uto.","field-year-narrow":"g.","field-tue-short-relative+1":"sljedeći uto.","field-minute-short":"min.","field-day-narrow":"dan","field-wed-short-relative+0":"ova sri.","field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","field-minute":"minuta","field-month-short":"mj.","field-dayperiod":"prijepodne/poslijepodne","field-weekdayOfMonth-narrow":"d. u mj.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-minute-relative+0":"ova minuta","field-week-narrow":"sed.","field-wed-narrow-relative+-1":"prošla sri.","field-day-short":"dan","field-quarter-relative+0":"ovaj kvartal","field-dayperiod-narrow":"prijepodne/poslijepodne","field-quarter-relative+1":"sljedeći kvartal","field-zone-short":"zona","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","field-day":"dan","field-second-narrow":"s","field-zone":"vremenska zona","field-year-relative+-1":"prošle godine","field-month-relative+-1":"prošli mjesec","field-thu-short-relative+0":"ovaj čet.","field-thu-short-relative+1":"sljedeći čet.","field-weekday-narrow":"dan u sed.","field-quarter":"kvartal","field-zone-narrow":"zona","field-month":"mjesec","field-weekOfMonth":"sedmica u mjesecu","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet.","field-fri-short-relative+-1":"prošli pet.","field-sun-narrow-relative+-1":"prošla ned.","field-dayOfYear-short":"dan u god.","field-sun-narrow-relative+0":"ova ned.","field-thu-narrow-relative+0":"ovaj čet.","field-sun-narrow-relative+1":"sljedeća ned.","field-thu-narrow-relative+1":"sljedeći čet.","field-tue-narrow-relative+0":"ovaj uto.","field-mon-relative+0":"ovaj ponedjeljak","field-tue-narrow-relative+1":"sljedeći uto.","field-mon-relative+1":"sljedeći ponedjeljak","field-tue-narrow-relative+-1":"prošli uto.","field-second-short":"sek.","field-second":"sekunda","field-fri-short-relative+0":"ovaj pet.","field-sat-relative+-1":"prošla subota","field-fri-short-relative+1":"sljedeći pet.","field-sun-relative+-1":"prošla nedjelja","field-month-relative+0":"ovaj mjesec","field-weekdayOfMonth":"dan u mjesecu","field-month-relative+1":"sljedeći mjesec","field-week":"sedmica","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","field-year-relative+0":"ove godine","field-week-relative+-1":"prošle sedmice","field-year-relative+1":"sljedeće godine","field-era-short":"era","field-quarter-short":"kv.","field-dayOfYear-narrow":"dan u g.","field-sun-short-relative+-1":"prošla ned.","field-thu-short-relative+-1":"prošli čet.","field-tue-short-relative+-1":"prošli uto.","field-mon-relative+-1":"prošli ponedjeljak","field-sat-narrow-relative+-1":"prošla sub.","field-month-narrow":"mj.","field-week-relative+0":"ove sedmice","field-sun-short-relative+0":"ova ned.","field-week-relative+1":"sljedeće sedmice","field-sun-short-relative+1":"sljedeća ned."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/bs/currency.js b/lib/dojo/cldr/nls/bs/currency.js
index f86507261..438b3cc45 100644
--- a/lib/dojo/cldr/nls/bs/currency.js
+++ b/lib/dojo/cldr/nls/bs/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/bs/currency",{"HKD_displayName":"Honkonški dolar","CHF_displayName":"Švicarski franak","CAD_displayName":"Kanadski dolar","CNY_displayName":"Kineski juan","AUD_displayName":"Australijski dolar","JPY_displayName":"Japanski jen","USD_displayName":"Američki dolar","GBP_displayName":"Britanska funta","EUR_displayName":"Euro"}); \ No newline at end of file
+define("dojo/cldr/nls/bs/currency",{"HKD_displayName":"Honkonški dolar","CNY_displayName":"Kineski juan","JPY_displayName":"Japanski jen","JPY_symbol":"¥","USD_displayName":"Američki dolar","CAD_symbol":"CAD","GBP_displayName":"Britanska funta","CHF_displayName":"Švicarski franak","CNY_symbol":"CNY","EUR_displayName":"Euro","GBP_symbol":"GBP","CAD_displayName":"Kanadski dolar","USD_symbol":"USD","EUR_symbol":"€","AUD_displayName":"Australijski dolar","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/bs/generic.js b/lib/dojo/cldr/nls/bs/generic.js
index 55697a8f8..159be397d 100644
--- a/lib/dojo/cldr/nls/bs/generic.js
+++ b/lib/dojo/cldr/nls/bs/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/bs/generic",{"dateFormatItem-yyyyMMMEd":"E, dd. MMM y. G","field-dayperiod":"prijepodne/poslijepodne","field-minute":"minut","dateFormatItem-MMMEd":"E, dd. MMM","field-day-relative+-1":"juče","dateFormatItem-hms":"hh:mm:ss a","field-day-relative+-2":"prekjuče","field-weekday":"dan u sedmici","dateFormatItem-MMM":"LLL","field-era":"era","dateFormatItem-Gy":"y. G","field-hour":"sat","dateFormatItem-y":"y. G","dateFormatItem-yyyy":"y. G","dateFormatItem-Ed":"E, dd.","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-day-relative+2":"prekosutra","dateFormatItem-GyMMMd":"dd. MMM y. G","dateFormat-long":"dd. MMMM y. G","field-zone":"zona","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"dd.MM.y. G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-ms":"mm:ss","field-year":"godina","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-week":"sedmica","dateFormatItem-yyyyMd":"dd.MM.y. G","dateFormatItem-yyyyMMMd":"dd. MMM y. G","dateFormatItem-yyyyMEd":"E, dd.MM.y. G","dateFormatItem-MMMd":"dd. MMM","field-month":"mjesec","dateFormatItem-M":"L","field-second":"sekund","dateFormatItem-GyMMMEd":"E, dd. MMM y. G","dateFormatItem-GyMMM":"MMM y. G","field-day":"dan","dateFormatItem-yyyyQQQ":"G y QQQ","dateFormatItem-MEd":"E, dd.MM.","dateFormatItem-hm":"hh:mm a","dateFormat-short":"dd.MM.y. GGGGG","dateFormatItem-yyyyM":"MM.y. G","dateFormat-full":"EEEE, dd. MMMM y. G","dateFormatItem-Md":"dd.MM.","dateFormatItem-yyyyMMM":"MMM y. G","dateFormatItem-d":"d"}); \ No newline at end of file
+define("dojo/cldr/nls/bs/generic",{"field-tue-relative+-1":"prošli utorak","field-year":"godina","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","dateFormatItem-ms":"mm:ss","field-minute":"minuta","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-day-relative+2":"prekosutra","field-wed-narrow-relative+-1":"prošla sri.","dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"g.","field-era-short":"era","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"dan u mjesecu","field-second-short":"sek.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"d. u mj.","field-week-relative+0":"ove sedmice","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeće sedmice","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon","field-second-relative+0":"sada","dateFormatItem-yyyyQQQ":"G y QQQ","field-weekOfMonth":"sedmica u mjesecu","field-month-short":"mj.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"d.M.y. G","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","dateFormatItem-yyyyMEd":"E, d.M.y. G","field-wed-relative+-1":"prošla srijeda","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"dd. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"kvartal","field-week-short":"sed.","field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"MMM y. G","field-month":"mjesec","field-day-narrow":"dan","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"prijepodne/poslijepodne","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dateFormat-medium":"dd.MM.y. G","dateFormatItem-yyyyMMMM":"LLLL y. G","dateFormatItem-yyyyM":"MM/y G","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-year-short":"god.","field-quarter-relative+-1":"posljednji kvartal","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"prijepodne/poslijepodne","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-Md":"d.M.","field-hour":"sat","dateFormat-full":"EEEE, dd. MMMM y. G","field-month-relative+-1":"prošli mjesec","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","dateFormatItem-EBhm":"E h:mm B","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošle sedmice","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormat-short":"dd.MM.y. GGGGG","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"prošli čet.","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"prošli uto.","dateFormatItem-H":"H","field-weekOfMonth-short":"sed. u mj.","dateFormatItem-yyyy":"y. G","field-wed-short-relative+0":"ova sri.","dateFormatItem-M":"L","field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","dateFormatItem-MMMMEd":"E, d. MMMM","dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d","field-weekday":"dan u sedmici","field-sat-relative+0":"ova subota","dateFormatItem-h":"h a","field-sat-relative+1":"sljedeća subota","field-dayOfYear-narrow":"dan u g.","field-weekdayOfMonth-short":"dan u mj.","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"zona","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-hms":"hh:mm:ss a","field-fri-short-relative+-1":"prošli pet.","field-thu-relative+-1":"prošli četvrtak","field-week":"sedmica","dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","dateFormatItem-yyyyMMM":"MMM y. G","field-dayperiod-short":"prijepodne/poslijepodne","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"mj.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min.","field-mon-narrow-relative+0":"ovaj pon.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"sljedeći pon.","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"s. u mj.","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"dan u sed.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u sed.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-Gy":"y. G","field-day-short":"dan","field-week-narrow":"sed.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/bs/gregorian.js b/lib/dojo/cldr/nls/bs/gregorian.js
index 4c3717459..b35765b78 100644
--- a/lib/dojo/cldr/nls/bs/gregorian.js
+++ b/lib/dojo/cldr/nls/bs/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/bs/gregorian",{"dateFormatItem-yM":"MM.y.","field-dayperiod":"prijepodne/poslijepodne","dayPeriods-format-wide-pm":"popodne","field-minute":"minut","eraNames":["Prije nove ere","Nove ere"],"dateFormatItem-MMMEd":"E, dd. MMM","field-day-relative+-1":"juče","field-weekday":"dan u sedmici","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-yQQQ":"y QQQ","field-day-relative+-2":"prekjuče","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-MMM":"LLL","months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-era":"era","dateFormatItem-Gy":"y. G","field-hour":"sat","dayPeriods-format-wide-am":"prije podne","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-y":"y.","timeFormat-full":"HH:mm:ss zzzz","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"dateFormatItem-Ed":"E, dd.","dateFormatItem-yMMM":"MMM y.","field-day-relative+0":"danas","field-day-relative+1":"sutra","eraAbbr":["p. n. e.","n. e."],"field-day-relative+2":"prekosutra","dateFormatItem-GyMMMd":"dd. MMM y. G","dateFormat-long":"dd. MMMM y.","timeFormat-medium":"HH:mm:ss","field-zone":"zona","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"dd. MMM. y.","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yMd":"dd.MM.y.","quarters-standAlone-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"dateFormatItem-ms":"mm:ss","field-year":"godina","field-week":"sedmica","months-standAlone-wide":["januar","februar","mart","april","maj","juni","juli","august","septembar","oktobar","novembar","decembar"],"dateFormatItem-MMMd":"dd. MMM","timeFormat-long":"HH:mm:ss z","months-format-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"dateFormatItem-yQQQQ":"y QQQQ","timeFormat-short":"HH:mm","field-month":"mjesec","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"dd. MMM y.","field-second":"sekund","dateFormatItem-GyMMMEd":"E, dd. MMM y. G","dateFormatItem-GyMMM":"MMM y. G","field-day":"dan","dateFormatItem-MEd":"E, dd.MM.","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"dateFormatItem-hm":"hh:mm a","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateFormat-short":"dd.MM.yy.","dateFormatItem-yMMMEd":"E, dd. MMM y.","dateFormat-full":"EEEE, dd. MMMM y.","dateFormatItem-Md":"dd.MM.","dateFormatItem-yMEd":"E, dd.MM.y.","months-format-wide":["januar","februar","mart","april","maj","juni","juli","august","septembar","oktobar","novembar","decembar"],"days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"dateFormatItem-d":"d","quarters-format-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"eraNarrow":["p. n. e.","n. e."]}); \ No newline at end of file
+define("dojo/cldr/nls/bs/gregorian",{"dayPeriods-standAlone-abbr-noon":"podne","field-tue-relative+-1":"prošli utorak","field-year":"godina","dateFormatItem-yw":"w. 'sedmica' 'u' Y.","dayPeriods-format-abbr-afternoon1":"poslijepodne","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"minuta","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"danas","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+1":"sutra","field-day-relative+2":"prekosutra","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","dayPeriods-format-narrow-am":"prijepodne","field-weekdayOfMonth":"dan u mjesecu","field-second-short":"sek.","dayPeriods-standAlone-abbr-morning1":"ujutro","dateFormatItem-MMMd":"d. MMM","dayPeriods-format-narrow-morning1":"ujutro","field-weekdayOfMonth-narrow":"d. u mj.","dayPeriods-format-abbr-am":"AM","field-month-relative+0":"ovaj mjesec","field-week-relative+0":"ove sedmice","timeFormat-medium":"HH:mm:ss","field-month-relative+1":"sljedeći mjesec","field-week-relative+1":"sljedeće sedmice","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon","field-second-relative+0":"sada","months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"dayPeriods-standAlone-wide-noon":"podne","eraNames":["prije nove ere","nove ere"],"dayPeriods-standAlone-abbr-pm":"PM","field-weekOfMonth":"sedmica u mjesecu","dateFormatItem-GyMMMEd":"E, d. MMM y. G","field-month-short":"mj.","field-day":"dan","dayPeriods-standAlone-wide-night1":"po noći","field-year-relative+-1":"prošle godine","field-dayOfYear-short":"dan u god.","dayPeriods-format-wide-am":"prijepodne","field-sat-short-relative+-1":"prošla sub.","dayPeriods-format-narrow-afternoon1":"poslijepodne","dayPeriods-format-wide-afternoon1":"poslijepodne","field-hour-relative+0":"ovaj sat","field-wed-relative+-1":"prošla srijeda","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["n","p","u","s","č","p","s"],"dayPeriods-standAlone-narrow-noon":"podne","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","dayPeriods-standAlone-wide-pm":"popodne","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d. MMMM y.","dateFormatItem-GyMMMd":"d. MMM y. G","dayPeriods-standAlone-abbr-midnight":"ponoć","field-quarter":"kvartal","field-week-short":"sed.","dayPeriods-format-narrow-midnight":"ponoć","dateFormatItem-yMMMEd":"E, d. MMM y.","quarters-standAlone-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"days-format-narrow":["N","P","U","S","Č","P","S"],"dayPeriods-format-wide-evening1":"navečer","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"MMM y. G","field-month":"mjesec","dayPeriods-standAlone-abbr-night1":"po noći","field-day-narrow":"dan","dayPeriods-standAlone-narrow-afternoon1":"poslijepodne","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"prijepodne/poslijepodne","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dayPeriods-format-narrow-pm":"popodne","dateFormat-medium":"d. MMM y.","eraAbbr":["p. n. e.","n. e."],"quarters-standAlone-abbr":["KV1","KV2","KV3","KV4"],"dayPeriods-format-abbr-pm":"PM","field-second-narrow":"s","dayPeriods-standAlone-narrow-night1":"po noći","field-mon-relative+0":"ovaj ponedjeljak","field-year-short":"god.","field-mon-relative+1":"sljedeći ponedjeljak","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"dayPeriods-format-wide-morning1":"ujutro","field-quarter-relative+-1":"posljednji kvartal","dayPeriods-standAlone-narrow-am":"prijepodne","field-dayperiod-narrow":"prijepodne/poslijepodne","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"popodne","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-Md":"d.M.","field-hour":"sat","dateFormatItem-yQQQQ":"QQQQ y.","months-format-wide":["januar","februar","mart","april","maj","juni","juli","august","septembar","oktobar","novembar","decembar"],"dayPeriods-format-wide-night1":"po noći","dateFormat-full":"EEEE, d. MMMM y.","field-month-relative+-1":"prošli mjesec","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","dateFormatItem-Hmv":"HH:mm (v)","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","dateFormatItem-EBhm":"E h:mm B","dayPeriods-format-narrow-noon":"podne","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošle sedmice","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"dayPeriods-format-wide-midnight":"ponoć","timeFormat-long":"HH:mm:ss z","field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormatItem-yMMM":"MMM y.","dateFormat-short":"d. M. y.","dateFormatItem-Bh":"h B","dayPeriods-format-abbr-night1":"po noći","dateFormatItem-MMMMW":"W. 'sedmica' 'mjesec' MMMM","field-thu-short-relative+-1":"prošli čet.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"sed. u mj.","field-tue-narrow-relative+-1":"prošli uto.","dayPeriods-format-abbr-evening1":"navečer","dayPeriods-standAlone-narrow-pm":"popodne","dateFormatItem-M":"L","months-standAlone-wide":["januar","februar","mart","april","maj","juni","juli","august","septembar","oktobar","novembar","decembar"],"field-wed-short-relative+0":"ova sri.","field-wed-short-relative+1":"sljedeća sri.","dateFormatItem-Hmsv":"HH:mm:ss (v)","field-sun-relative+-1":"prošla nedjelja","dateFormatItem-MMMMEd":"E, d. MMMM","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d.","field-weekday":"dan u sedmici","dayPeriods-standAlone-wide-evening1":"navečer","field-sat-relative+0":"ova subota","dateFormatItem-h":"h a","field-sat-relative+1":"sljedeća subota","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"dateFormatItem-hmsv":"h:mm:ss a (v)","dayPeriods-format-abbr-morning1":"ujutro","dayPeriods-standAlone-narrow-evening1":"navečer","dateFormatItem-yMM":"M/y","field-dayOfYear-narrow":"dan u g.","timeFormat-full":"HH:mm:ss zzzz","field-weekdayOfMonth-short":"dan u mj.","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"zona","dateFormatItem-y":"y.","field-thu-narrow-relative+0":"ovaj čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-narrow-relative+1":"sljedeći čet.","field-thu-relative+0":"ovaj četvrtak","dayPeriods-standAlone-abbr-afternoon1":"poslijepodne","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-hms":"hh:mm:ss a","field-fri-short-relative+-1":"prošli pet.","dateFormatItem-hmv":"h:mm a (v)","dayPeriods-format-abbr-noon":"podne","field-thu-relative+-1":"prošli četvrtak","dateFormatItem-yMd":"d.M.y.","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-week":"sedmica","quarters-format-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","dayPeriods-standAlone-wide-morning1":"ujutro","field-dayperiod-short":"prijepodne/poslijepodne","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"dayPeriods-standAlone-narrow-morning1":"ujutro","dayPeriods-format-abbr-midnight":"ponoć","field-hour-short":"h","field-zone-short":"zona","quarters-format-abbr":["KV1","KV2","KV3","KV4"],"field-month-narrow":"mj.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","eraNarrow":["p.n.e.","n.e."],"dateFormatItem-Bhms":"h:mm:ss B","dayPeriods-format-wide-noon":"podne","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min.","dayPeriods-standAlone-wide-afternoon1":"poslijepodne","dateFormatItem-yQQQ":"QQQ y.","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-mon-narrow-relative+0":"ovaj pon.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"sljedeći pon.","dayPeriods-standAlone-wide-midnight":"ponoć","dateFormatItem-yM":"MM/y","field-zone":"vremenska zona","dateFormatItem-yMMMM":"LLLL y.","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"s. u mj.","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-yMEd":"E, d.M.y.","field-weekday-narrow":"dan u sed.","dayPeriods-standAlone-narrow-midnight":"ponoć","field-quarter-narrow":"kv.","dayPeriods-standAlone-abbr-am":"AM","field-day-relative+-1":"jučer","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-2":"prekjučer","dayPeriods-format-narrow-night1":"po noći","field-weekday-short":"dan u sed.","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateFormatItem-MMdd":"d. M.","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-yMMMd":"d. MMM y.","dateFormatItem-Gy":"y. G","field-era":"era","field-week-narrow":"sed.","field-day-short":"dan","dayPeriods-standAlone-abbr-evening1":"navečer","field-fri-narrow-relative+0":"ovaj pet.","dayPeriods-format-narrow-evening1":"navečer","field-fri-narrow-relative+1":"sljedeći pet.","dayPeriods-standAlone-wide-am":"prijepodne"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/bs/hebrew.js b/lib/dojo/cldr/nls/bs/hebrew.js
new file mode 100644
index 000000000..76634106d
--- /dev/null
+++ b/lib/dojo/cldr/nls/bs/hebrew.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/bs/hebrew",{"field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-day-relative+2":"prekosutra","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"dan u mjesecu","field-second-short":"sek.","dayPeriods-format-narrow-am":"prijepodne","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"d. u mj.","field-week-relative+0":"ove sedmice","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeće sedmice","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon","field-second-relative+0":"sada","field-weekOfMonth":"sedmica u mjesecu","field-month-short":"mj.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"d.M.y. G","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","dayPeriods-format-wide-am":"prijepodne","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","dateFormatItem-yyyyMEd":"E, d.M.y. G","field-wed-relative+-1":"prošla srijeda","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","č","p","s"],"dayPeriods-standAlone-wide-pm":"popodne","dateFormat-long":"dd. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"kvartal","field-week-short":"sed.","quarters-standAlone-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"days-format-narrow":["N","P","U","S","Č","P","S"],"field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"MMM y. G","field-month":"mjesec","field-day-narrow":"dan","field-minute-short":"min.","field-dayperiod":"prijepodne/poslijepodne","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dayPeriods-format-narrow-pm":"popodne","dateFormat-medium":"dd.MM.y. G","dateFormatItem-yyyyMMMM":"LLLL y. G","eraAbbr":["AM"],"quarters-standAlone-abbr":["KV1","KV2","KV3","KV4"],"dateFormatItem-yyyyM":"MM/y G","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-year-short":"god.","field-quarter-relative+-1":"posljednji kvartal","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"prijepodne/poslijepodne","dayPeriods-standAlone-narrow-am":"prijepodne","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"popodne","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-Md":"d.M.","field-hour":"sat","dateFormat-full":"EEEE, dd. MMMM y. G","field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošle sedmice","field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormat-short":"dd.MM.y. GGGGG","field-thu-short-relative+-1":"prošli čet.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","dateFormatItem-H":"H","field-weekOfMonth-short":"sed. u mj.","dateFormatItem-yyyy":"y. G","dayPeriods-standAlone-narrow-pm":"popodne","field-wed-short-relative+0":"ova sri.","field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-hm":"hh:mm a","field-weekday":"dan u sedmici","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-dayOfYear-narrow":"dan u g.","field-weekdayOfMonth-short":"dan u mj.","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"zona","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-hms":"hh:mm:ss a","field-fri-short-relative+-1":"prošli pet.","field-thu-relative+-1":"prošli četvrtak","field-week":"sedmica","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-dayperiod-short":"prijepodne/poslijepodne","dateFormatItem-yyyyMMM":"MMM y. G","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"field-zone-short":"zona","field-hour-short":"h","quarters-format-abbr":["KV1","KV2","KV3","KV4"],"field-month-narrow":"mj.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min.","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"s. u mj.","field-weekday-narrow":"dan u sed.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u sed.","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-Gy":"y. G","field-day-short":"dan","field-week-narrow":"sed.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet.","dayPeriods-standAlone-wide-am":"prijepodne"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/bs/islamic.js b/lib/dojo/cldr/nls/bs/islamic.js
index 0e00297a8..efce544d1 100644
--- a/lib/dojo/cldr/nls/bs/islamic.js
+++ b/lib/dojo/cldr/nls/bs/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/bs/islamic",{"dateFormatItem-yM":"MM.y. G","field-dayperiod":"prijepodne/poslijepodne","dateFormatItem-yyyyMMMEd":"E, dd. MMM y. G","dayPeriods-format-wide-pm":"popodne","field-minute":"minut","dateFormatItem-MMMEd":"E, dd. MMM","field-day-relative+-1":"juče","field-weekday":"dan u sedmici","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-yQQQ":"y G QQQ","field-day-relative+-2":"prekjuče","dateFormatItem-MMM":"LLL","field-era":"era","dateFormatItem-Gy":"y. G","field-hour":"sat","dayPeriods-format-wide-am":"prije podne","dateFormatItem-y":"y. G","dateFormatItem-yyyy":"y. G","dateFormatItem-Ed":"E, dd.","dateFormatItem-yMMM":"MMM y. G","field-day-relative+0":"danas","field-day-relative+1":"sutra","eraAbbr":["AH"],"field-day-relative+2":"prekosutra","dateFormatItem-GyMMMd":"dd. MMM y. G","dateFormat-long":"dd. MMMM y. G","field-zone":"zona","dateFormatItem-Hm":"HH:mm","dateFormat-medium":"dd.MM.y. G","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-yMd":"dd.MM.y. G","dateFormatItem-ms":"mm:ss","field-year":"godina","field-week":"sedmica","dateFormatItem-yyyyMd":"dd.MM.y. G","dateFormatItem-yyyyMMMd":"dd. MMM y. G","dateFormatItem-yyyyMEd":"E, dd.MM.y. G","dateFormatItem-MMMd":"dd. MMM","dateFormatItem-yQQQQ":"y G QQQQ","field-month":"mjesec","quarters-format-abbr":["K1","K2","K3","K4"],"days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateFormatItem-M":"L","dateFormatItem-yMMMd":"dd. MMM y. G","field-second":"sekund","dateFormatItem-GyMMMEd":"E, dd. MMM y. G","dateFormatItem-GyMMM":"MMM y. G","field-day":"dan","dateFormatItem-MEd":"E, dd.MM.","dateFormatItem-hm":"hh:mm a","dateFormat-short":"dd.MM.y. G","dateFormatItem-yyyyM":"MM.y. G","dateFormatItem-yMMMEd":"E, dd. MMM y. G","dateFormat-full":"EEEE, dd. MMMM y. G","dateFormatItem-Md":"dd.MM.","dateFormatItem-yMEd":"E, dd.MM.y. G","dateFormatItem-yyyyMMM":"MMM y. G","dateFormatItem-d":"d","quarters-format-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"]}); \ No newline at end of file
+define("dojo/cldr/nls/bs/islamic",{"field-tue-relative+-1":"prošli utorak","field-year":"godina","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","dateFormatItem-ms":"mm:ss","field-minute":"minuta","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-day-relative+2":"prekosutra","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"dan u mjesecu","field-second-short":"sek.","dayPeriods-format-narrow-am":"prijepodne","dateFormatItem-MMMd":"dd. MMM","field-weekdayOfMonth-narrow":"d. u mj.","field-week-relative+0":"ove sedmice","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeće sedmice","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon","field-second-relative+0":"sada","field-weekOfMonth":"sedmica u mjesecu","field-month-short":"mj.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"d.M.y. G","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","dayPeriods-format-wide-am":"prijepodne","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","dateFormatItem-yyyyMEd":"E, d.M.y. G","field-wed-relative+-1":"prošla srijeda","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","č","p","s"],"dayPeriods-standAlone-wide-pm":"popodne","dateFormat-long":"dd. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"kvartal","field-week-short":"sed.","dateFormatItem-yMMMEd":"E, dd. MMM y. G","quarters-standAlone-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"days-format-narrow":["N","P","U","S","Č","P","S"],"field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"MMM y. G","field-month":"mjesec","field-day-narrow":"dan","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"prijepodne/poslijepodne","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dayPeriods-format-narrow-pm":"popodne","dateFormat-medium":"dd.MM.y. G","dateFormatItem-yyyyMMMM":"LLLL y. G","eraAbbr":["AH"],"quarters-standAlone-abbr":["KV1","KV2","KV3","KV4"],"dateFormatItem-yyyyM":"MM/y G","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-year-short":"god.","field-quarter-relative+-1":"posljednji kvartal","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"prijepodne/poslijepodne","dayPeriods-standAlone-narrow-am":"prijepodne","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"popodne","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-Md":"dd.MM.","field-hour":"sat","dateFormatItem-yQQQQ":"y G QQQQ","months-format-wide":["muharem","safer","rabiʻ i","rabiʻ ii","džumade i","džumade ii","redžeb","Shaʻban","ramazan","ševal","zul-kade","zul-hidže"],"dateFormat-full":"EEEE, dd. MMMM y. G","field-month-relative+-1":"prošli mjesec","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošle sedmice","months-format-abbr":["muh.","saf.","Rab. I","rab. ii","džum. i","džum. ii","redž.","ša.","ram.","še.","zul-k.","zul-h."],"field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormatItem-yMMM":"MMM y. G","dateFormat-short":"dd.MM.y. G","field-thu-short-relative+-1":"prošli čet.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","dateFormatItem-H":"H","field-weekOfMonth-short":"sed. u mj.","dateFormatItem-yyyy":"y. G","dayPeriods-standAlone-narrow-pm":"popodne","field-wed-short-relative+0":"ova sri.","dateFormatItem-M":"L","months-standAlone-wide":["muharem","safer","rabiʻ i","rabiʻ ii","džumade i","džumade ii","redžeb","Shaʻban","ramazan","ševal","zul-kade","zul-hidže"],"field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d","field-weekday":"dan u sedmici","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","months-standAlone-abbr":["muh.","saf.","Rab. I","rab. ii","džum. i","džum. ii","redž.","ša.","ram.","še.","zul-k.","zul-h."],"field-dayOfYear-narrow":"dan u g.","field-weekdayOfMonth-short":"dan u mj.","dateFormatItem-MEd":"E, dd.MM.","field-zone-narrow":"zona","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-hms":"hh:mm:ss a","field-fri-short-relative+-1":"prošli pet.","field-thu-relative+-1":"prošli četvrtak","dateFormatItem-yMd":"dd.MM.y. G","field-week":"sedmica","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["Prvi kvartal","Drugi kvartal","Treći kvartal","Četvrti kvartal"],"dateFormatItem-Ed":"E, dd.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-dayperiod-short":"prijepodne/poslijepodne","dateFormatItem-yyyyMMM":"MMM y. G","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"field-hour-short":"h","field-zone-short":"zona","quarters-format-abbr":["KV1","KV2","KV3","KV4"],"field-month-narrow":"mj.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min.","dateFormatItem-yQQQ":"y G QQQ","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","dateFormatItem-yM":"MM.y. G","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, dd. MMM","field-weekOfMonth-narrow":"s. u mj.","dateFormatItem-yMEd":"E, dd.MM.y. G","field-weekday-narrow":"dan u sed.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u sed.","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-yMMMd":"dd. MMM y. G","dateFormatItem-Gy":"y. G","field-day-short":"dan","field-week-narrow":"sed.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet.","dayPeriods-standAlone-wide-am":"prijepodne"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/bs/japanese.js b/lib/dojo/cldr/nls/bs/japanese.js
new file mode 100644
index 000000000..6b9c9dfd5
--- /dev/null
+++ b/lib/dojo/cldr/nls/bs/japanese.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/bs/japanese",{"field-second-relative+0":"sada","field-quarter-relative+-1":"posljednji kvartal","field-weekday":"dan u sedmici","field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-weekOfMonth-short":"sed. u mj.","field-weekday-short":"dan u sed.","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-dayperiod-short":"prijepodne/poslijepodne","field-week-short":"sed.","field-tue-relative+-1":"prošli utorak","field-year-short":"god.","field-era-narrow":"era","field-thu-narrow-relative+-1":"prošli čet.","field-hour-relative+0":"ovaj sat","field-quarter-narrow":"kv.","field-fri-relative+-1":"prošli petak","field-hour-short":"h","field-wed-relative+-1":"prošla srijeda","field-dayOfYear":"dan u godini","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+-1":"prošli četvrtak","field-era":"era","field-sat-narrow-relative+0":"ova sub.","field-sat-narrow-relative+1":"sljedeća sub.","field-year":"godina","field-hour":"sat","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-sat-short-relative+-1":"prošla sub.","field-weekOfMonth-narrow":"s. u mj.","field-minute-narrow":"min.","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-thu-relative+0":"ovaj četvrtak","field-mon-narrow-relative+-1":"prošli pon.","field-day-relative+2":"prekosutra","field-wed-narrow-relative+0":"ova sri.","field-thu-relative+1":"sljedeći četvrtak","field-wed-narrow-relative+1":"sljedeća sri.","field-mon-short-relative+0":"ovaj pon.","field-mon-short-relative+1":"sljedeći pon","field-weekdayOfMonth-short":"dan u mj.","field-wed-short-relative+-1":"prošla sri.","field-fri-narrow-relative+-1":"prošli pet.","field-hour-narrow":"h","field-tue-short-relative+0":"ovaj uto.","field-year-narrow":"g.","field-tue-short-relative+1":"sljedeći uto.","field-minute-short":"min.","field-day-narrow":"dan","field-wed-short-relative+0":"ova sri.","field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","field-minute":"minuta","field-month-short":"mj.","field-dayperiod":"prijepodne/poslijepodne","field-weekdayOfMonth-narrow":"d. u mj.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-minute-relative+0":"ova minuta","field-week-narrow":"sed.","field-wed-narrow-relative+-1":"prošla sri.","field-day-short":"dan","field-quarter-relative+0":"ovaj kvartal","field-dayperiod-narrow":"prijepodne/poslijepodne","field-quarter-relative+1":"sljedeći kvartal","field-zone-short":"zona","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","field-day":"dan","field-second-narrow":"s","field-zone":"vremenska zona","field-year-relative+-1":"prošle godine","field-month-relative+-1":"prošli mjesec","field-thu-short-relative+0":"ovaj čet.","field-thu-short-relative+1":"sljedeći čet.","field-weekday-narrow":"dan u sed.","field-quarter":"kvartal","field-zone-narrow":"zona","field-month":"mjesec","field-weekOfMonth":"sedmica u mjesecu","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet.","field-fri-short-relative+-1":"prošli pet.","field-sun-narrow-relative+-1":"prošla ned.","field-dayOfYear-short":"dan u god.","field-sun-narrow-relative+0":"ova ned.","field-thu-narrow-relative+0":"ovaj čet.","field-sun-narrow-relative+1":"sljedeća ned.","field-thu-narrow-relative+1":"sljedeći čet.","field-tue-narrow-relative+0":"ovaj uto.","field-mon-relative+0":"ovaj ponedjeljak","field-tue-narrow-relative+1":"sljedeći uto.","field-mon-relative+1":"sljedeći ponedjeljak","field-tue-narrow-relative+-1":"prošli uto.","field-second-short":"sek.","field-second":"sekunda","field-fri-short-relative+0":"ovaj pet.","field-sat-relative+-1":"prošla subota","field-fri-short-relative+1":"sljedeći pet.","field-sun-relative+-1":"prošla nedjelja","field-month-relative+0":"ovaj mjesec","field-weekdayOfMonth":"dan u mjesecu","field-month-relative+1":"sljedeći mjesec","field-week":"sedmica","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","field-year-relative+0":"ove godine","field-week-relative+-1":"prošle sedmice","field-year-relative+1":"sljedeće godine","field-era-short":"era","field-quarter-short":"kv.","field-dayOfYear-narrow":"dan u g.","field-sun-short-relative+-1":"prošla ned.","field-thu-short-relative+-1":"prošli čet.","field-tue-short-relative+-1":"prošli uto.","field-mon-relative+-1":"prošli ponedjeljak","field-sat-narrow-relative+-1":"prošla sub.","field-month-narrow":"mj.","field-week-relative+0":"ove sedmice","field-sun-short-relative+0":"ova ned.","field-week-relative+1":"sljedeće sedmice","field-sun-short-relative+1":"sljedeća ned."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/bs/number.js b/lib/dojo/cldr/nls/bs/number.js
index 86197cf94..c7dfca09a 100644
--- a/lib/dojo/cldr/nls/bs/number.js
+++ b/lib/dojo/cldr/nls/bs/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/bs/number",{"group":".","decimal":","}); \ No newline at end of file
+define("dojo/cldr/nls/bs/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","percentSign":"%","minusSign":"-","decimalFormat-short":"000 bil'.'","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"≈","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 biliona","decimalFormat":"#,##0.###","currencyFormat-short":"000 bil'.' ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/bs/roc.js b/lib/dojo/cldr/nls/bs/roc.js
new file mode 100644
index 000000000..04a617a82
--- /dev/null
+++ b/lib/dojo/cldr/nls/bs/roc.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/bs/roc",{"field-second-relative+0":"sada","field-quarter-relative+-1":"posljednji kvartal","field-weekday":"dan u sedmici","field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-weekOfMonth-short":"sed. u mj.","field-weekday-short":"dan u sed.","field-wed-relative+0":"ova srijeda","dateFormatItem-MMMEd":"E, d. MMM","field-wed-relative+1":"sljedeća srijeda","field-dayperiod-short":"prijepodne/poslijepodne","field-week-short":"sed.","field-year-short":"god.","field-era-narrow":"era","field-tue-relative+-1":"prošli utorak","field-thu-narrow-relative+-1":"prošli čet.","field-hour-relative+0":"ovaj sat","field-quarter-narrow":"kv.","field-fri-relative+-1":"prošli petak","field-hour-short":"h","field-wed-relative+-1":"prošla srijeda","field-dayOfYear":"dan u godini","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+-1":"prošli četvrtak","field-era":"era","field-sat-narrow-relative+0":"ova sub.","field-sat-narrow-relative+1":"sljedeća sub.","field-year":"godina","field-hour":"sat","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-sat-short-relative+-1":"prošla sub.","field-weekOfMonth-narrow":"s. u mj.","field-minute-narrow":"min.","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-thu-relative+0":"ovaj četvrtak","field-mon-narrow-relative+-1":"prošli pon.","field-day-relative+2":"prekosutra","field-wed-narrow-relative+0":"ova sri.","field-thu-relative+1":"sljedeći četvrtak","field-wed-narrow-relative+1":"sljedeća sri.","field-mon-short-relative+0":"ovaj pon.","field-mon-short-relative+1":"sljedeći pon","field-weekdayOfMonth-short":"dan u mj.","dateFormatItem-M":"L.","field-wed-short-relative+-1":"prošla sri.","field-fri-narrow-relative+-1":"prošli pet.","field-hour-narrow":"h","field-year-narrow":"g.","field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-minute-short":"min.","field-day-narrow":"dan","field-wed-short-relative+0":"ova sri.","field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","eraAbbr":["prije R.O.C.","R.O.C."],"field-minute":"minuta","field-month-short":"mj.","field-dayperiod":"prijepodne/poslijepodne","dateFormatItem-d":"d.","field-weekdayOfMonth-narrow":"d. u mj.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-minute-relative+0":"ova minuta","field-week-narrow":"sed.","field-wed-narrow-relative+-1":"prošla sri.","dateFormatItem-MMMd":"d. MMM","field-day-short":"dan","field-quarter-relative+0":"ovaj kvartal","field-dayperiod-narrow":"prijepodne/poslijepodne","field-quarter-relative+1":"sljedeći kvartal","field-zone-short":"zona","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","field-day":"dan","field-second-narrow":"s","field-zone":"vremenska zona","field-year-relative+-1":"prošle godine","field-month-relative+-1":"prošli mjesec","field-thu-short-relative+0":"ovaj čet.","field-thu-short-relative+1":"sljedeći čet.","field-weekday-narrow":"dan u sed.","field-quarter":"kvartal","field-zone-narrow":"zona","field-month":"mjesec","dateFormatItem-MMM":"LLL","field-weekOfMonth":"sedmica u mjesecu","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet.","field-fri-short-relative+-1":"prošli pet.","field-sun-narrow-relative+-1":"prošla ned.","field-dayOfYear-short":"dan u god.","field-sun-narrow-relative+0":"ova ned.","field-thu-narrow-relative+0":"ovaj čet.","field-sun-narrow-relative+1":"sljedeća ned.","field-thu-narrow-relative+1":"sljedeći čet.","field-tue-narrow-relative+0":"ovaj uto.","field-mon-relative+0":"ovaj ponedjeljak","field-tue-narrow-relative+1":"sljedeći uto.","field-mon-relative+1":"sljedeći ponedjeljak","field-tue-narrow-relative+-1":"prošli uto.","field-second-short":"sek.","field-second":"sekunda","field-fri-short-relative+0":"ovaj pet.","field-sat-relative+-1":"prošla subota","field-fri-short-relative+1":"sljedeći pet.","field-sun-relative+-1":"prošla nedjelja","field-month-relative+0":"ovaj mjesec","field-weekdayOfMonth":"dan u mjesecu","field-month-relative+1":"sljedeći mjesec","field-week":"sedmica","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","field-year-relative+0":"ove godine","field-week-relative+-1":"prošle sedmice","field-year-relative+1":"sljedeće godine","field-era-short":"era","field-quarter-short":"kv.","field-dayOfYear-narrow":"dan u g.","field-sun-short-relative+-1":"prošla ned.","field-thu-short-relative+-1":"prošli čet.","field-tue-short-relative+-1":"prošli uto.","field-mon-relative+-1":"prošli ponedjeljak","field-sat-narrow-relative+-1":"prošla sub.","field-month-narrow":"mj.","field-week-relative+0":"ove sedmice","field-sun-short-relative+0":"ova ned.","field-week-relative+1":"sljedeće sedmice","field-sun-short-relative+1":"sljedeća ned."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/buddhist.js b/lib/dojo/cldr/nls/buddhist.js
index c48494c49..491732f0d 100644
--- a/lib/dojo/cldr/nls/buddhist.js
+++ b/lib/dojo/cldr/nls/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/buddhist",{root:{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"now","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-MMMEd":"MMM d, E","eraNarrow":["BE"],"field-tue-relative+-1":"last Tuesday","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"G y MMMM d","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateFormatItem-yyyyQQQ":"G y QQQ","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"MM-dd","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dayPeriods-format-wide-noon":"noon","field-era":"Era","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","field-year":"Year","dateTimeFormats-appendItem-Era":"{1} {0}","field-hour":"Hour","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"today","field-thu-relative+0":"this Thursday","field-day-relative+1":"tomorrow","field-thu-relative+1":"next Thursday","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-H":"HH","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Gy":"G y","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateFormatItem-M":"L","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMM":"G y MMM","dateFormatItem-yyyyMMMd":"G y MMM d","dayPeriods-format-abbr-noon":"noon","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"this Sunday","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"next Sunday","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["BE"],"field-minute":"Minute","field-dayperiod":"Dayperiod","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"yesterday","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"a","dateFormatItem-h":"h a","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"MM-dd, E","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone":"Zone","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-y":"G y","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateTimeFormats-appendItem-Year":"{1} {0}","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"eraNames":["BE"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-month":"Month","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-MMM":"LLL","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-noon":"n","field-second":"Second","field-sat-relative+-1":"last Saturday","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormatItem-Ed":"d, E","field-week":"Week","dateFormat-medium":"G y MMM d","field-week-relative+-1":"last week","field-year-relative+0":"this year","dateFormatItem-yyyyM":"GGGGG y-MM","field-year-relative+1":"next year","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyyyQQQQ":"G y QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"G y MMM","field-mon-relative+-1":"last Monday","dateFormatItem-yyyy":"G y","field-week-relative+0":"this week","field-week-relative+1":"next week"},"ar":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"es":true,"fi":true,"fr":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/buddhist",{root:{"field-quarter-short-relative+0":"this quarter","dateTimeFormats-appendItem-Year":"{1} {0}","field-quarter-short-relative+1":"next quarter","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","field-month-narrow-relative+-1":"last month","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","field-thu-short-relative+0":"this Thursday","field-day-short-relative+-1":"yesterday","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"next Thursday","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-wed-narrow-relative+-1":"last Wednesday","dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"Year","field-era-short":"Era","field-year-narrow-relative+0":"this year","field-tue-relative+0":"this Tuesday","field-year-narrow-relative+1":"next year","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"Weekday Of Month","field-second-short":"Second","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Sunday","timeFormat-medium":"HH:mm:ss","field-mon-short-relative+0":"this Monday","field-sun-narrow-relative+1":"next Sunday","field-mon-short-relative+1":"next Monday","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["BE"],"field-weekOfMonth":"Week Of Month","dayPeriods-standAlone-abbr-pm":"PM","field-month-short":"Month","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-dayOfYear-short":"Day Of Year","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","field-sat-short-relative+-1":"last Saturday","field-hour-relative+0":"this hour","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"last Saturday","field-second":"Second","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","field-hour-short-relative+0":"this hour","field-quarter":"Quarter","field-week-short":"Week","field-day-narrow-relative+0":"today","field-day-narrow-relative+1":"tomorrow","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","field-month-short-relative+-1":"last month","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","field-day-narrow":"Day","dateFormatItem-MMM":"LLL","field-minute-short":"Minute","field-dayperiod":"Dayperiod","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","dayPeriods-format-narrow-pm":"PM","dateFormat-medium":"G y MMM d","dateFormatItem-yyyyMMMM":"G y MMMM","eraAbbr":["BE"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-second-narrow":"Second","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-day-narrow-relative+-1":"yesterday","field-year-short":"Year","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"last quarter","dateFormatItem-yyyyMMMd":"G y MMM d","field-dayperiod-narrow":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-dayOfYear":"Day Of Year","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-minute-narrow-relative+0":"this minute","field-hour":"Hour","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"Quarter","field-sat-narrow-relative+0":"this Saturday","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Saturday","field-fri-relative+1":"next Friday","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-sun-short-relative+0":"this Sunday","field-sun-short-relative+1":"next Sunday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last quarter","field-minute-short-relative+0":"this minute","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","timeFormat-long":"HH:mm:ss z","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wednesday","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"last Thursday","field-year-narrow-relative+-1":"last year","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","field-mon-narrow-relative+-1":"last Monday","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-MMMMd":"MMMM d","field-thu-narrow-relative+-1":"last Thursday","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"last Tuesday","dateFormatItem-H":"HH","field-weekOfMonth-short":"Week Of Month","dayPeriods-standAlone-narrow-pm":"PM","dateFormatItem-yyyy":"G y","field-wed-short-relative+0":"this Wednesday","dateFormatItem-M":"L","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-wed-short-relative+1":"next Wednesday","field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"now","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"Day of the Week","field-day-short-relative+0":"today","field-day-short-relative+1":"tomorrow","field-sat-relative+0":"this Saturday","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","field-quarter-narrow-relative+1":"next quarter","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-dayOfYear-narrow":"Day Of Year","field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","field-weekdayOfMonth-short":"Weekday Of Month","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","field-zone-narrow":"Zone","dateFormatItem-y":"G y","field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+-1":"last Sunday","field-mon-short-relative+-1":"last Monday","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","quarters-standAlone-narrow":["1","2","3","4"],"field-week":"Week","quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-quarter-narrow-relative+-1":"last quarter","field-year-short-relative+0":"this year","dateFormatItem-yyyyMMM":"G y MMM","field-dayperiod-short":"Dayperiod","field-year-short-relative+1":"next year","field-fri-short-relative+0":"this Friday","field-fri-short-relative+1":"next Friday","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-week-short-relative+-1":"last week","field-hour-narrow-relative+0":"this hour","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-zone-short":"Zone","field-hour-short":"Hour","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-month-narrow":"Month","field-hour-narrow":"Hour","field-fri-narrow-relative+-1":"last Friday","field-year-relative+0":"this year","field-year-relative+1":"next year","field-era-narrow":"Era","field-fri-relative+-1":"last Friday","eraNarrow":["BE"],"dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"last Tuesday","field-minute-narrow":"Minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","dateFormatItem-EHm":"E HH:mm","field-year-short-relative+-1":"last year","field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"Day of the Week","field-quarter-narrow":"Quarter","field-sun-short-relative+-1":"last Sunday","field-day-relative+-1":"yesterday","dayPeriods-standAlone-abbr-am":"AM","field-weekday-short":"Day of the Week","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-week-narrow":"Week","field-era":"Era","field-day-short":"Day","field-fri-narrow-relative+0":"this Friday","field-fri-narrow-relative+1":"next Friday","dayPeriods-standAlone-wide-am":"AM"},"ar":true,"bs":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ca/buddhist.js b/lib/dojo/cldr/nls/ca/buddhist.js
index 89f1e87a5..0e602d6ce 100644
--- a/lib/dojo/cldr/nls/ca/buddhist.js
+++ b/lib/dojo/cldr/nls/ca/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ca/buddhist",{"days-standAlone-short":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"months-format-narrow":["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],"field-second-relative+0":"ara","field-weekday":"dia de la setmana","field-wed-relative+0":"aquest dimecres","field-wed-relative+1":"dimecres que ve","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["eB"],"field-tue-relative+-1":"dimarts passat","days-format-short":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"divendres passat","field-wed-relative+-1":"dimecres passat","months-format-wide":["de gener","de febrer","de març","d’abril","de maig","de juny","de juliol","d’agost","de setembre","d’octubre","de novembre","de desembre"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"p. m.","dateFormat-full":"EEEE, dd MMMM y G","dateFormatItem-yyyyMEd":"E, d.M.y G","field-thu-relative+-1":"dijous passat","dateFormatItem-Md":"d/M","field-era":"era","months-standAlone-wide":["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],"timeFormat-short":"H:mm","quarters-format-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"timeFormat-long":"H:mm:ss z","field-year":"any","field-hour":"hora","months-format-abbr":["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],"field-sat-relative+0":"aquest dissabte","field-sat-relative+1":"dissabte que ve","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"avui","field-thu-relative+0":"aquest dijous","field-day-relative+1":"demà","field-thu-relative+1":"dijous que ve","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"demà passat","dateFormatItem-H":"H","months-standAlone-abbr":["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],"quarters-format-abbr":["1T","2T","3T","4T"],"quarters-standAlone-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-M":"L","days-standAlone-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"aquest diumenge","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"diumenge que ve","quarters-standAlone-abbr":["1T","2T","3T","4T"],"eraAbbr":["eB"],"field-minute":"minut","field-dayperiod":"a. m./p. m.","days-standAlone-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dateFormatItem-d":"d","field-day-relative+-1":"ahir","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"abans-d’ahir","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"aquest divendres","field-fri-relative+1":"divendres que ve","field-day":"dia","days-format-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"field-zone":"zona","dateFormatItem-y":"y G","months-standAlone-narrow":["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],"field-year-relative+-1":"l’any passat","field-month-relative+-1":"el mes passat","days-format-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"eraNames":["eB"],"days-format-narrow":["dg","dl","dt","dc","dj","dv","ds"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"mes","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["dg","dl","dt","dc","dj","dv","ds"],"field-tue-relative+0":"aquest dimarts","field-tue-relative+1":"dimarts que ve","dayPeriods-format-wide-am":"a. m.","field-mon-relative+0":"aquest dilluns","field-mon-relative+1":"dilluns que ve","dateFormat-short":"dd/MM/y GGGGG","field-second":"segon","field-sat-relative+-1":"dissabte passat","field-sun-relative+-1":"diumenge passat","field-month-relative+0":"aquest mes","field-month-relative+1":"el mes que ve","dateFormatItem-Ed":"E d","field-week":"setmana","dateFormat-medium":"d MMM y G","field-year-relative+0":"enguany","field-week-relative+-1":"la setmana passada","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"l’any que ve","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"dilluns passat","dateFormatItem-yyyy":"y G","field-week-relative+0":"aquesta setmana","field-week-relative+1":"la setmana que ve"}); \ No newline at end of file
+define("dojo/cldr/nls/ca/buddhist",{"field-quarter-short-relative+0":"aquest trim.","field-quarter-short-relative+1":"el trim. que ve","field-tue-relative+-1":"dimarts passat","field-year":"any","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"aquest dimecres","field-wed-relative+1":"dimecres que ve","timeFormat-short":"H:mm","field-minute":"minut","field-month-narrow-relative+-1":"el mes passat","field-tue-narrow-relative+0":"aquest dt.","field-tue-narrow-relative+1":"dt. que ve","field-thu-short-relative+0":"aquest dj.","field-day-short-relative+-1":"ahir","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"dj. que ve","field-day-relative+0":"avui","field-day-short-relative+-2":"abans-d’ahir","field-day-relative+1":"demà","field-week-narrow-relative+0":"aquesta setm.","field-day-relative+2":"demà passat","field-week-narrow-relative+1":"la setm. que ve","field-wed-narrow-relative+-1":"dc. passat","field-year-narrow":"any","field-era-short":"era","field-year-narrow-relative+0":"enguany","field-tue-relative+0":"aquest dimarts","field-year-narrow-relative+1":"l’any que ve","field-tue-relative+1":"dimarts que ve","field-weekdayOfMonth":"dia de la setmana del mes","field-second-short":"s","dayPeriods-format-narrow-am":"a. m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"dia de la setm. del mes","dayPeriods-format-abbr-am":"a. m.","field-week-relative+0":"aquesta setmana","field-month-relative+0":"aquest mes","field-week-relative+1":"la setmana que ve","field-month-relative+1":"el mes que ve","field-sun-narrow-relative+0":"aquest dg.","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"aquest dl.","field-sun-narrow-relative+1":"dg. que ve","field-mon-short-relative+1":"dl. que ve","field-second-relative+0":"ara","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],"eraNames":["eB"],"field-weekOfMonth":"setmana del mes","dayPeriods-standAlone-abbr-pm":"p. m.","field-month-short":"mes","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"dia","field-dayOfYear-short":"dia de l’any","field-year-relative+-1":"l’any passat","dayPeriods-format-wide-am":"a. m.","field-sat-short-relative+-1":"ds. passat","field-hour-relative+0":"aquesta hora","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-second-short-relative+0":"ara","field-wed-relative+-1":"dimecres passat","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"ds. passat","field-second":"segon","days-standAlone-narrow":["dg","dl","dt","dc","dj","dv","ds"],"dayPeriods-standAlone-wide-pm":"p. m.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"aquesta hora","field-quarter":"trimestre","field-week-short":"setm.","field-day-narrow-relative+0":"avui","field-day-narrow-relative+1":"demà","field-day-narrow-relative+2":"demà passat","quarters-standAlone-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"days-format-narrow":["dg","dl","dt","dc","dj","dv","ds"],"field-tue-short-relative+0":"aquest dt.","field-tue-short-relative+1":"dt. que ve","field-month-short-relative+-1":"el mes passat","field-mon-relative+-1":"dilluns passat","dateFormatItem-GyMMM":"LLL y G","field-month":"mes","field-day-narrow":"dia","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"aquest ds.","field-sat-short-relative+1":"ds. que ve","dayPeriods-format-narrow-pm":"p. m.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"LLLL 'de' y G","eraAbbr":["eB"],"quarters-standAlone-abbr":["1T","2T","3T","4T"],"dayPeriods-format-abbr-pm":"p. m.","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"s","field-mon-relative+0":"aquest dilluns","field-mon-relative+1":"dilluns que ve","field-day-narrow-relative+-1":"ahir","field-year-short":"any","field-day-narrow-relative+-2":"abans-d’ahir","months-format-narrow":["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],"field-quarter-relative+-1":"el trimestre passat","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a. m./p. m.","dayPeriods-standAlone-narrow-am":"a. m.","field-week-narrow-relative+-1":"la setm. passada","days-format-short":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dayPeriods-format-wide-pm":"p. m.","field-dayOfYear":"dia de l’any","field-sat-relative+-1":"dissabte passat","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"aquest minut","field-hour":"hora","months-format-wide":["de gener","de febrer","de març","d’abril","de maig","de juny","de juliol","d’agost","de setembre","d’octubre","de novembre","de desembre"],"dateFormat-full":"EEEE, dd MMMM y G","field-month-relative+-1":"el mes passat","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"trim.","field-sat-narrow-relative+0":"aquest ds.","field-fri-relative+0":"aquest divendres","field-sat-narrow-relative+1":"ds. que ve","field-fri-relative+1":"divendres que ve","field-month-narrow-relative+0":"aquest mes","field-month-narrow-relative+1":"el mes que ve","field-sun-short-relative+0":"aquest dg.","field-sun-short-relative+1":"dg. que ve","field-week-relative+-1":"la setmana passada","field-quarter-short-relative+-1":"el trim. passat","field-minute-short-relative+0":"aquest minut","months-format-abbr":["de gen.","de febr.","de març","d’abr.","de maig","de juny","de jul.","d’ag.","de set.","d’oct.","de nov.","de des."],"field-quarter-relative+0":"aquest trimestre","field-minute-relative+0":"aquest minut","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"el trimestre que ve","field-wed-short-relative+-1":"dc. passat","dateFormat-short":"dd/MM/y GGGGG","field-thu-short-relative+-1":"dj. passat","field-year-narrow-relative+-1":"l’any passat","days-standAlone-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"dl. passat","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"dj. passat","field-tue-narrow-relative+-1":"dt. passat","field-weekOfMonth-short":"setm. del mes","dateFormatItem-H":"H","dayPeriods-standAlone-narrow-pm":"p. m.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"aquest dc.","months-standAlone-wide":["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],"field-wed-short-relative+1":"dc. que ve","field-sun-relative+-1":"diumenge passat","days-standAlone-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dateTimeFormat-full":"{1}, {0}","field-second-narrow-relative+0":"ara","field-weekday":"dia de la setmana","field-day-short-relative+0":"avui","field-quarter-narrow-relative+0":"aquest trim.","field-day-short-relative+1":"demà","field-sat-relative+0":"aquest dissabte","field-quarter-narrow-relative+1":"trim. vinent","field-day-short-relative+2":"demà passat","field-sat-relative+1":"dissabte que ve","field-week-short-relative+0":"aquesta setm.","field-week-short-relative+1":"la setm. que ve","months-standAlone-abbr":["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],"field-dayOfYear-narrow":"dia de l’any","field-month-short-relative+0":"aquest mes","field-month-short-relative+1":"el mes que ve","field-weekdayOfMonth-short":"dia de la setm. del mes","timeFormat-full":"H:mm:ss (zzzz)","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"fus horari","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"aquest dj.","field-thu-narrow-relative+1":"dj. que ve","field-sun-narrow-relative+-1":"dg. passat","field-mon-short-relative+-1":"dl. passat","field-thu-relative+0":"aquest dijous","field-thu-relative+1":"dijous que ve","field-fri-short-relative+-1":"dv. passat","field-thu-relative+-1":"dijous passat","field-week":"setmana","quarters-format-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"aquest dc.","field-wed-narrow-relative+1":"dc. que ve","field-quarter-narrow-relative+-1":"trim. passat","field-year-short-relative+0":"enguany","field-dayperiod-short":"a. m./p. m.","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"l’any que ve","field-fri-short-relative+0":"aquest dv.","field-fri-short-relative+1":"dv. que ve","days-standAlone-short":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"field-week-short-relative+-1":"la setm. passada","field-hour-narrow-relative+0":"aquesta hora","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fus horari","quarters-format-abbr":["1T","2T","3T","4T"],"field-month-narrow":"mes","field-hour-narrow":"h","field-fri-narrow-relative+-1":"dv. passat","field-year-relative+0":"enguany","field-year-relative+1":"l’any que ve","field-era-narrow":"era","field-fri-relative+-1":"divendres passat","eraNarrow":"eB","field-tue-short-relative+-1":"dt. passat","field-minute-narrow":"min","days-format-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"field-mon-narrow-relative+0":"aquest dl.","field-mon-narrow-relative+1":"dl. que ve","field-year-short-relative+-1":"l’any passat","field-zone":"fus horari","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"setm. del mes","field-weekday-narrow":"dia de la setm.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dg. passat","field-day-relative+-1":"ahir","dayPeriods-standAlone-abbr-am":"a. m.","field-day-relative+-2":"abans-d’ahir","field-weekday-short":"dia de la setm.","days-format-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"field-sun-relative+0":"aquest diumenge","field-sun-relative+1":"diumenge que ve","dateFormatItem-Gy":"y G","field-day-short":"dia","field-week-narrow":"setm.","field-era":"era","field-fri-narrow-relative+0":"aquest dv.","field-fri-narrow-relative+1":"dv. que ve","dayPeriods-standAlone-wide-am":"a. m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ca/chinese.js b/lib/dojo/cldr/nls/ca/chinese.js
index 9ae5a7e91..6ad5f008c 100644
--- a/lib/dojo/cldr/nls/ca/chinese.js
+++ b/lib/dojo/cldr/nls/ca/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ca/chinese",{"field-sat-relative+0":"aquest dissabte","field-sat-relative+1":"dissabte que ve","field-dayperiod":"a. m./p. m.","field-sun-relative+-1":"diumenge passat","field-mon-relative+-1":"dilluns passat","field-minute":"minut","field-day-relative+-1":"ahir","field-weekday":"dia de la setmana","field-day-relative+-2":"abans-d’ahir","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"era","field-hour":"hora","field-sun-relative+0":"aquest diumenge","field-sun-relative+1":"diumenge que ve","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+-1":"dimecres passat","field-day-relative+0":"avui","field-day-relative+1":"demà","field-day-relative+2":"demà passat","dateFormat-long":"d MMMM U","field-tue-relative+0":"aquest dimarts","field-zone":"zona","field-tue-relative+1":"dimarts que ve","field-week-relative+-1":"la setmana passada","dateFormat-medium":"d MMM U","field-year-relative+0":"enguany","field-year-relative+1":"l’any que ve","field-sat-relative+-1":"dissabte passat","field-year-relative+-1":"l’any passat","field-year":"any","field-fri-relative+0":"aquest divendres","field-fri-relative+1":"divendres que ve","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-week":"setmana","field-week-relative+0":"aquesta setmana","field-week-relative+1":"la setmana que ve","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-month-relative+0":"aquest mes","field-month":"mes","field-month-relative+1":"el mes que ve","field-fri-relative+-1":"divendres passat","field-second":"segon","field-tue-relative+-1":"dimarts passat","field-day":"dia","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"aquest dilluns","field-mon-relative+1":"dilluns que ve","field-thu-relative+0":"aquest dijous","field-second-relative+0":"ara","dateFormat-short":"d/M/y","field-thu-relative+1":"dijous que ve","dateFormat-full":"EEEE, dd MMMM UU","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+0":"aquest dimecres","field-wed-relative+1":"dimecres que ve","field-month-relative+-1":"el mes passat","field-thu-relative+-1":"dijous passat"}); \ No newline at end of file
+define("dojo/cldr/nls/ca/chinese",{"field-quarter-short-relative+0":"aquest trim.","field-quarter-short-relative+1":"el trim. que ve","field-tue-relative+-1":"dimarts passat","field-year":"any","field-wed-relative+0":"aquest dimecres","field-wed-relative+1":"dimecres que ve","field-minute":"minut","field-month-narrow-relative+-1":"el mes passat","field-tue-narrow-relative+0":"aquest dt.","field-tue-narrow-relative+1":"dt. que ve","field-thu-short-relative+0":"aquest dj.","field-day-short-relative+-1":"ahir","field-thu-short-relative+1":"dj. que ve","field-day-relative+0":"avui","field-day-short-relative+-2":"abans-d’ahir","field-day-relative+1":"demà","field-week-narrow-relative+0":"aquesta setm.","field-day-relative+2":"demà passat","field-week-narrow-relative+1":"la setm. que ve","field-wed-narrow-relative+-1":"dc. passat","field-year-narrow":"any","field-era-short":"era","field-year-narrow-relative+0":"enguany","field-tue-relative+0":"aquest dimarts","field-year-narrow-relative+1":"l’any que ve","field-tue-relative+1":"dimarts que ve","field-weekdayOfMonth":"dia de la setmana del mes","field-second-short":"s","field-weekdayOfMonth-narrow":"dia de la setm. del mes","field-week-relative+0":"aquesta setmana","field-month-relative+0":"aquest mes","field-week-relative+1":"la setmana que ve","field-month-relative+1":"el mes que ve","field-sun-narrow-relative+0":"aquest dg.","field-mon-short-relative+0":"aquest dl.","field-sun-narrow-relative+1":"dg. que ve","field-mon-short-relative+1":"dl. que ve","field-second-relative+0":"ara","field-weekOfMonth":"setmana del mes","field-month-short":"mes","field-day":"dia","field-dayOfYear-short":"dia de l’any","field-year-relative+-1":"l’any passat","field-sat-short-relative+-1":"ds. passat","field-hour-relative+0":"aquesta hora","field-second-short-relative+0":"ara","field-wed-relative+-1":"dimecres passat","field-sat-narrow-relative+-1":"ds. passat","field-second":"segon","dateFormat-long":"d MMMM U","field-hour-short-relative+0":"aquesta hora","field-quarter":"trimestre","field-week-short":"setm.","field-day-narrow-relative+0":"avui","field-day-narrow-relative+1":"demà","field-day-narrow-relative+2":"demà passat","field-tue-short-relative+0":"aquest dt.","field-tue-short-relative+1":"dt. que ve","field-month-short-relative+-1":"el mes passat","field-mon-relative+-1":"dilluns passat","field-month":"mes","field-day-narrow":"dia","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"aquest ds.","field-sat-short-relative+1":"ds. que ve","dateFormat-medium":"d MMM U","field-second-narrow":"s","field-mon-relative+0":"aquest dilluns","field-mon-relative+1":"dilluns que ve","field-day-narrow-relative+-1":"ahir","field-year-short":"any","field-day-narrow-relative+-2":"abans-d’ahir","field-quarter-relative+-1":"el trimestre passat","field-dayperiod-narrow":"a. m./p. m.","field-week-narrow-relative+-1":"la setm. passada","field-dayOfYear":"dia de l’any","field-sat-relative+-1":"dissabte passat","field-hour":"hora","field-minute-narrow-relative+0":"aquest minut","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormat-full":"EEEE, dd MMMM UU","field-month-relative+-1":"el mes passat","field-quarter-short":"trim.","field-sat-narrow-relative+0":"aquest ds.","field-fri-relative+0":"aquest divendres","field-sat-narrow-relative+1":"ds. que ve","field-fri-relative+1":"divendres que ve","field-month-narrow-relative+0":"aquest mes","field-month-narrow-relative+1":"el mes que ve","field-sun-short-relative+0":"aquest dg.","field-sun-short-relative+1":"dg. que ve","field-week-relative+-1":"la setmana passada","field-quarter-short-relative+-1":"el trim. passat","field-minute-short-relative+0":"aquest minut","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+0":"aquest trimestre","field-minute-relative+0":"aquest minut","field-quarter-relative+1":"el trimestre que ve","field-wed-short-relative+-1":"dc. passat","dateFormat-short":"d/M/y","field-thu-short-relative+-1":"dj. passat","field-year-narrow-relative+-1":"l’any passat","field-mon-narrow-relative+-1":"dl. passat","field-thu-narrow-relative+-1":"dj. passat","field-tue-narrow-relative+-1":"dt. passat","field-weekOfMonth-short":"setm. del mes","field-wed-short-relative+0":"aquest dc.","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-short-relative+1":"dc. que ve","field-sun-relative+-1":"diumenge passat","field-second-narrow-relative+0":"ara","field-weekday":"dia de la setmana","field-day-short-relative+0":"avui","field-quarter-narrow-relative+0":"aquest trim.","field-day-short-relative+1":"demà","field-sat-relative+0":"aquest dissabte","field-quarter-narrow-relative+1":"trim. vinent","field-day-short-relative+2":"demà passat","field-sat-relative+1":"dissabte que ve","field-week-short-relative+0":"aquesta setm.","field-week-short-relative+1":"la setm. que ve","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayOfYear-narrow":"dia de l’any","field-month-short-relative+0":"aquest mes","field-month-short-relative+1":"el mes que ve","field-weekdayOfMonth-short":"dia de la setm. del mes","field-zone-narrow":"fus horari","field-thu-narrow-relative+0":"aquest dj.","field-thu-narrow-relative+1":"dj. que ve","field-sun-narrow-relative+-1":"dg. passat","field-mon-short-relative+-1":"dl. passat","field-thu-relative+0":"aquest dijous","field-thu-relative+1":"dijous que ve","field-fri-short-relative+-1":"dv. passat","field-thu-relative+-1":"dijous passat","field-week":"setmana","field-wed-narrow-relative+0":"aquest dc.","field-wed-narrow-relative+1":"dc. que ve","field-quarter-narrow-relative+-1":"trim. passat","field-year-short-relative+0":"enguany","field-dayperiod-short":"a. m./p. m.","field-year-short-relative+1":"l’any que ve","field-fri-short-relative+0":"aquest dv.","field-fri-short-relative+1":"dv. que ve","field-week-short-relative+-1":"la setm. passada","field-hour-narrow-relative+0":"aquesta hora","field-hour-short":"h","field-zone-short":"fus horari","field-month-narrow":"mes","field-hour-narrow":"h","field-fri-narrow-relative+-1":"dv. passat","field-year-relative+0":"enguany","field-year-relative+1":"l’any que ve","field-era-narrow":"era","field-fri-relative+-1":"divendres passat","field-tue-short-relative+-1":"dt. passat","field-minute-narrow":"min","field-mon-narrow-relative+0":"aquest dl.","field-mon-narrow-relative+1":"dl. que ve","field-year-short-relative+-1":"l’any passat","field-zone":"fus horari","field-weekOfMonth-narrow":"setm. del mes","field-weekday-narrow":"dia de la setm.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dg. passat","field-day-relative+-1":"ahir","field-day-relative+-2":"abans-d’ahir","field-weekday-short":"dia de la setm.","field-sun-relative+0":"aquest diumenge","field-sun-relative+1":"diumenge que ve","field-day-short":"dia","field-week-narrow":"setm.","field-era":"era","field-fri-narrow-relative+0":"aquest dv.","field-fri-narrow-relative+1":"dv. que ve"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ca/currency.js b/lib/dojo/cldr/nls/ca/currency.js
index 39275f1ef..0d5964322 100644
--- a/lib/dojo/cldr/nls/ca/currency.js
+++ b/lib/dojo/cldr/nls/ca/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ca/currency",{"HKD_displayName":"dòlar de Hong Kong","CHF_displayName":"franc suís","JPY_symbol":"JP¥","CAD_displayName":"dòlar canadenc","HKD_symbol":"HK$","CNY_displayName":"iuan xinès","USD_symbol":"USD","AUD_displayName":"dòlar australià","JPY_displayName":"ien japonès","CAD_symbol":"CAD","USD_displayName":"dòlar dels Estats Units","EUR_symbol":"€","CNY_symbol":"¥","GBP_displayName":"lliura britànica","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/ca/currency",{"HKD_displayName":"dòlar de Hong Kong","CNY_displayName":"iuan xinès","JPY_displayName":"ien japonès","JPY_symbol":"¥","USD_displayName":"dòlar dels Estats Units","CAD_symbol":"CAD","GBP_displayName":"lliura esterlina britànica","CHF_displayName":"franc suís","CNY_symbol":"CNY","EUR_displayName":"euro","GBP_symbol":"£","CAD_displayName":"dòlar canadenc","USD_symbol":"USD","EUR_symbol":"€","AUD_displayName":"dòlar australià","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ca/generic.js b/lib/dojo/cldr/nls/ca/generic.js
index 305e8e03d..783055cd7 100644
--- a/lib/dojo/cldr/nls/ca/generic.js
+++ b/lib/dojo/cldr/nls/ca/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ca/generic",{"field-second-relative+0":"ara","field-weekday":"dia de la setmana","field-wed-relative+0":"aquest dimecres","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-wed-relative+1":"dimecres que ve","field-tue-relative+-1":"dimarts passat","dateFormat-long":"d MMMM 'de' y G","field-fri-relative+-1":"divendres passat","field-wed-relative+-1":"dimecres passat","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE d MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, d.M.y G","field-thu-relative+-1":"dijous passat","dateFormatItem-Md":"d/M","dateFormatItem-GyMMMM":"LLLL 'de' y G","field-era":"era","field-year":"any","dateFormatItem-yyyyMMMM":"LLLL 'de' y G","field-hour":"hora","field-sat-relative+0":"aquest dissabte","field-sat-relative+1":"dissabte que ve","field-day-relative+0":"avui","field-day-relative+1":"demà","field-thu-relative+0":"aquest dijous","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"demà passat","field-thu-relative+1":"dijous que ve","dateFormatItem-H":"H","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"aquest diumenge","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"diumenge que ve","field-minute":"minut","field-dayperiod":"a. m./p. m.","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ahir","dateFormatItem-h":"h a","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"abans-d’ahir","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"aquest divendres","field-fri-relative+1":"divendres que ve","field-day":"dia","field-zone":"zona","dateFormatItem-y":"y G","field-year-relative+-1":"l’any passat","field-month-relative+-1":"el mes passat","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d/M/y G","field-month":"mes","dateFormatItem-MMM":"LLL","field-tue-relative+0":"aquest dimarts","field-tue-relative+1":"dimarts que ve","dateFormatItem-MMMMEd":"E, d MMMM","field-mon-relative+0":"aquest dilluns","field-mon-relative+1":"dilluns que ve","dateFormat-short":"dd/MM/yy GGGGG","field-second":"segon","field-sat-relative+-1":"dissabte passat","field-sun-relative+-1":"diumenge passat","field-month-relative+0":"aquest mes","field-month-relative+1":"el mes que ve","dateFormatItem-Ed":"E d","field-week":"setmana","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"enguany","field-week-relative+-1":"la setmana passada","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"l’any que ve","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"dilluns passat","dateFormatItem-yyyy":"y G","field-week-relative+0":"aquesta setmana","field-week-relative+1":"la setmana que ve"}); \ No newline at end of file
+define("dojo/cldr/nls/ca/generic",{"field-quarter-short-relative+0":"aquest trim.","field-quarter-short-relative+1":"el trim. que ve","field-tue-relative+-1":"dimarts passat","field-year":"any","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"aquest dimecres","field-wed-relative+1":"dimecres que ve","dateFormatItem-ms":"mm:ss","field-minute":"minut","field-month-narrow-relative+-1":"el mes passat","field-tue-narrow-relative+0":"aquest dt.","field-tue-narrow-relative+1":"dt. que ve","field-day-short-relative+-1":"ahir","field-thu-short-relative+0":"aquest dj.","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"avui","field-day-short-relative+-2":"abans-d’ahir","field-thu-short-relative+1":"dj. que ve","field-day-relative+1":"demà","field-week-narrow-relative+0":"aquesta setm.","field-day-relative+2":"demà passat","field-week-narrow-relative+1":"la setm. que ve","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"dc. passat","field-year-narrow":"any","field-era-short":"era","field-year-narrow-relative+0":"enguany","field-tue-relative+0":"aquest dimarts","field-year-narrow-relative+1":"l’any que ve","field-tue-relative+1":"dimarts que ve","field-weekdayOfMonth":"dia de la setmana del mes","field-second-short":"s","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"dia de la setm. del mes","field-week-relative+0":"aquesta setmana","field-month-relative+0":"aquest mes","field-week-relative+1":"la setmana que ve","field-month-relative+1":"el mes que ve","field-sun-narrow-relative+0":"aquest dg.","field-mon-short-relative+0":"aquest dl.","field-sun-narrow-relative+1":"dg. que ve","field-mon-short-relative+1":"dl. que ve","field-second-relative+0":"ara","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"setmana del mes","field-month-short":"mes","dateFormatItem-GyMMMM":"LLLL 'de' y G","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"dia","field-dayOfYear-short":"dia de l’any","field-year-relative+-1":"l’any passat","field-sat-short-relative+-1":"ds. passat","dateFormatItem-yyyyMMMMd":"d MMMM 'de' y G","field-hour-relative+0":"aquesta hora","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-second-short-relative+0":"ara","field-wed-relative+-1":"dimecres passat","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"ds. passat","field-second":"segon","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM 'de' y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"aquesta hora","field-quarter":"trimestre","field-week-short":"setm.","field-day-narrow-relative+0":"avui","field-day-narrow-relative+1":"demà","field-day-narrow-relative+2":"demà passat","dateFormatItem-yyyyMMMMEd":"E, d MMMM 'de' y G","field-tue-short-relative+0":"aquest dt.","field-tue-short-relative+1":"dt. que ve","field-month-short-relative+-1":"el mes passat","field-mon-relative+-1":"dilluns passat","dateFormatItem-GyMMM":"LLL y G","field-month":"mes","field-day-narrow":"dia","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"aquest ds.","field-sat-short-relative+1":"ds. que ve","dateFormat-medium":"d/M/y G","dateFormatItem-yyyyMMMM":"LLLL 'de' y G","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"s","field-mon-relative+0":"aquest dilluns","field-day-narrow-relative+-1":"ahir","field-year-short":"any","field-mon-relative+1":"dilluns que ve","field-day-narrow-relative+-2":"abans-d’ahir","field-quarter-relative+-1":"el trimestre passat","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a. m./p. m.","field-week-narrow-relative+-1":"la setm. passada","field-dayOfYear":"dia de l’any","field-sat-relative+-1":"dissabte passat","dateTimeFormat-long":"{1} 'a' 'les' {0}","dateFormatItem-Md":"d/M","field-hour":"hora","field-minute-narrow-relative+0":"aquest minut","dateFormat-full":"EEEE, d MMMM 'de' y G","field-month-relative+-1":"el mes passat","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"trim.","field-sat-narrow-relative+0":"aquest ds.","field-fri-relative+0":"aquest divendres","field-sat-narrow-relative+1":"ds. que ve","field-fri-relative+1":"divendres que ve","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"aquest mes","field-month-narrow-relative+1":"el mes que ve","field-sun-short-relative+0":"aquest dg.","field-sun-short-relative+1":"dg. que ve","field-week-relative+-1":"la setmana passada","field-quarter-short-relative+-1":"el trim. passat","dateFormatItem-Ehm":"E h:mm a","field-minute-short-relative+0":"aquest minut","field-quarter-relative+0":"aquest trimestre","field-minute-relative+0":"aquest minut","field-quarter-relative+1":"el trimestre que ve","field-wed-short-relative+-1":"dc. passat","dateFormat-short":"d/M/yy GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"l’any passat","field-thu-short-relative+-1":"dj. passat","dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"dl. passat","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"dj. passat","dateFormatItem-E":"ccc","dateFormatItem-H":"H","field-weekOfMonth-short":"setm. del mes","field-tue-narrow-relative+-1":"dt. passat","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"aquest dc.","field-wed-short-relative+1":"dc. que ve","field-sun-relative+-1":"diumenge passat","dateFormatItem-MMMMEd":"E, d MMMM","dateTimeFormat-full":"{1} 'a' 'les' {0}","field-second-narrow-relative+0":"ara","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"dia de la setmana","field-day-short-relative+0":"avui","field-quarter-narrow-relative+0":"aquest trim.","field-day-short-relative+1":"demà","field-sat-relative+0":"aquest dissabte","field-quarter-narrow-relative+1":"trim. vinent","dateFormatItem-h":"h a","field-day-short-relative+2":"demà passat","field-sat-relative+1":"dissabte que ve","field-week-short-relative+0":"aquesta setm.","field-week-short-relative+1":"la setm. que ve","dateFormatItem-GyMMMMEd":"E, d MMMM 'de' y G","field-dayOfYear-narrow":"dia de l’any","field-month-short-relative+0":"aquest mes","field-month-short-relative+1":"el mes que ve","field-weekdayOfMonth-short":"dia de la setm. del mes","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"fus horari","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"aquest dj.","field-sun-narrow-relative+-1":"dg. passat","field-mon-short-relative+-1":"dl. passat","field-thu-narrow-relative+1":"dj. que ve","field-thu-relative+0":"aquest dijous","field-thu-relative+1":"dijous que ve","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"dv. passat","field-thu-relative+-1":"dijous passat","field-week":"setmana","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"aquest dc.","field-wed-narrow-relative+1":"dc. que ve","field-quarter-narrow-relative+-1":"trim. passat","field-year-short-relative+0":"enguany","dateFormatItem-yyyyMMM":"LLL y G","field-dayperiod-short":"a. m./p. m.","field-year-short-relative+1":"l’any que ve","field-fri-short-relative+0":"aquest dv.","field-fri-short-relative+1":"dv. que ve","field-week-short-relative+-1":"la setm. passada","dateFormatItem-GyMMMMd":"d MMMM 'de' y G","field-hour-narrow-relative+0":"aquesta hora","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fus horari","field-month-narrow":"mes","field-hour-narrow":"h","field-fri-narrow-relative+-1":"dv. passat","field-year-relative+0":"enguany","field-year-relative+1":"l’any que ve","field-era-narrow":"era","field-fri-relative+-1":"divendres passat","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"dt. passat","field-minute-narrow":"min","field-mon-narrow-relative+0":"aquest dl.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"dl. que ve","field-year-short-relative+-1":"l’any passat","field-zone":"fus horari","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"setm. del mes","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"dia de la setm.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dg. passat","field-day-relative+-1":"ahir","field-day-relative+-2":"abans-d’ahir","field-weekday-short":"dia de la setm.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"aquest diumenge","field-sun-relative+1":"diumenge que ve","dateFormatItem-Gy":"y G","field-day-short":"dia","field-week-narrow":"setm.","field-era":"era","field-fri-narrow-relative+0":"aquest dv.","field-fri-narrow-relative+1":"dv. que ve"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ca/gregorian.js b/lib/dojo/cldr/nls/ca/gregorian.js
index 24a94de92..408670036 100644
--- a/lib/dojo/cldr/nls/ca/gregorian.js
+++ b/lib/dojo/cldr/nls/ca/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ca/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"months-format-narrow":["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],"field-second-relative+0":"ara","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"dia de la setmana","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d/M/y","field-wed-relative+0":"aquest dimecres","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-wed-relative+1":"dimecres que ve","eraNarrow":["aC","dC"],"field-tue-relative+-1":"dimarts passat","days-format-short":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dateFormat-long":"d MMMM 'de' y","field-fri-relative+-1":"divendres passat","field-wed-relative+-1":"dimecres passat","months-format-wide":["de gener","de febrer","de març","d’abril","de maig","de juny","de juliol","d’agost","de setembre","d’octubre","de novembre","de desembre"],"dateTimeFormat-medium":"{1} , {0}","dayPeriods-format-wide-pm":"p. m.","dateFormat-full":"EEEE, d MMMM 'de' y","field-thu-relative+-1":"dijous passat","dateFormatItem-Md":"d/M","dateFormatItem-GyMMMM":"LLLL 'de' y G","dateFormatItem-yMd":"d/M/y","dateFormatItem-yM":"M/y","field-era":"era","months-standAlone-wide":["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],"timeFormat-short":"H:mm","quarters-format-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"timeFormat-long":"H:mm:ss z","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQQQQ":"QQQQ y","field-year":"any","field-hour":"hora","months-format-abbr":["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],"field-sat-relative+0":"aquest dissabte","field-sat-relative+1":"dissabte que ve","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"avui","field-day-relative+1":"demà","field-thu-relative+0":"aquest dijous","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"demà passat","field-thu-relative+1":"dijous que ve","dateFormatItem-H":"H","months-standAlone-abbr":["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],"quarters-format-abbr":["1T","2T","3T","4T"],"quarters-standAlone-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"aquest diumenge","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1T","2T","3T","4T"],"field-sun-relative+1":"diumenge que ve","eraAbbr":["aC","dC"],"field-minute":"minut","field-dayperiod":"a. m./p. m.","days-standAlone-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"ahir","dateFormatItem-h":"h a","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"abans-d’ahir","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} 'a les' {0}","field-fri-relative+0":"aquest divendres","dateFormatItem-yMMMM":"LLLL 'de' y","field-fri-relative+1":"divendres que ve","field-day":"dia","days-format-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"field-zone":"zona","dateFormatItem-y":"y","months-standAlone-narrow":["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],"field-year-relative+-1":"l’any passat","field-month-relative+-1":"el mes passat","dateFormatItem-hm":"h:mm a","days-format-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"dateFormatItem-yMMMd":"d MMM y","eraNames":["abans de Crist","després de Crist"],"days-format-narrow":["dg","dl","dt","dc","dj","dv","ds"],"days-standAlone-narrow":["dg","dl","dt","dc","dj","dv","ds"],"dateFormatItem-MMM":"LLL","field-month":"mes","field-tue-relative+0":"aquest dimarts","field-tue-relative+1":"dimarts que ve","dayPeriods-format-wide-am":"a. m.","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-EHm":"E H:mm","field-mon-relative+0":"aquest dilluns","field-mon-relative+1":"dilluns que ve","dateFormat-short":"d/M/yy","dateFormatItem-EHms":"E H:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"segon","field-sat-relative+-1":"dissabte passat","dateFormatItem-yMMMEd":"E, d MMM y","field-sun-relative+-1":"diumenge passat","field-month-relative+0":"aquest mes","field-month-relative+1":"el mes que ve","dateFormatItem-Ed":"E d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"setmana","dateFormat-medium":"d MMM y","field-year-relative+0":"enguany","field-week-relative+-1":"la setmana passada","field-year-relative+1":"l’any que ve","dayPeriods-format-narrow-pm":"p.m.","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"dilluns passat","field-week-relative+0":"aquesta setmana","field-week-relative+1":"la setmana que ve"}); \ No newline at end of file
+define("dojo/cldr/nls/ca/gregorian",{"dateFormatItem-yMMMM":"LLLL 'de' y","field-thu-narrow-relative+0":"aquest dj.","field-thu-narrow-relative+1":"dj. que ve","field-sun-narrow-relative+0":"aquest dg.","field-sun-narrow-relative+1":"dg. que ve","months-format-wide":["de gener","de febrer","de març","d’abril","de maig","de juny","de juliol","d’agost","de setembre","d’octubre","de novembre","de desembre"],"dayPeriods-standAlone-abbr-pm":"p. m.","dateFormatItem-Hms":"H:mm:ss","field-fri-narrow-relative+0":"aquest dv.","field-fri-narrow-relative+1":"dv. que ve","eraNarrow":["aC","dC"],"dateFormatItem-Hmv":"H:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM 'de' y","dateFormatItem-hmvvvv":"h:mm a (vvvv)","dayPeriods-format-abbr-night1":"nit","dayPeriods-format-narrow-evening1":"vespre","days-standAlone-narrow":["dg","dl","dt","dc","dj","dv","ds"],"days-standAlone-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"dayPeriods-format-abbr-afternoon1":"migdia","dayPeriods-format-wide-evening1":"vespre","dayPeriods-format-abbr-afternoon2":"tarda","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"dc. passat","dayPeriods-standAlone-wide-evening1":"vespre","field-minute-narrow-relative+0":"aquest minut","days-format-wide":["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],"field-month-short-relative+0":"aquest mes","field-month-short-relative+1":"el mes que ve","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"vespre","dayPeriods-standAlone-abbr-afternoon1":"migdia","dayPeriods-standAlone-abbr-afternoon2":"tarda","field-thu-relative+0":"aquest dijous","dayPeriods-standAlone-abbr-night1":"nit","field-thu-relative+1":"dijous que ve","dayPeriods-format-wide-am":"a. m.","field-fri-relative+0":"aquest divendres","field-fri-relative+1":"divendres que ve","dateFormatItem-yMd":"d/M/y","field-thu-narrow-relative+-1":"dj. passat","field-quarter-relative+0":"aquest trimestre","field-quarter-relative+1":"el trimestre que ve","field-sun-short-relative+0":"aquest dg.","timeFormat-short":"H:mm","field-sun-short-relative+1":"dg. que ve","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"md","dateFormatItem-Md":"d/M","dayPeriods-format-narrow-afternoon2":"tarda","dateFormatItem-Hmsv":"H:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"setm.","field-hour-relative+0":"aquesta hora","field-day-relative+-1":"ahir","field-day-relative+-2":"abans-d’ahir","field-mon-narrow-relative+-1":"dl. passat","field-minute-narrow":"min","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-GyMMMMEd":"E, d MMMM 'de' y G","field-thu-short-relative+0":"aquest dj.","field-mon-relative+0":"aquest dilluns","field-thu-short-relative+1":"dj. que ve","field-mon-relative+1":"dilluns que ve","field-day-narrow-relative+0":"avui","field-era-short":"era","field-day-narrow-relative+1":"demà","field-day-narrow-relative+2":"demà passat","field-sat-narrow-relative+0":"aquest ds.","timeFormat-long":"H:mm:ss z","field-sat-narrow-relative+1":"ds. que ve","field-week-narrow-relative+0":"aquesta setm.","field-week-narrow-relative+1":"la setm. que ve","field-hour-short-relative+0":"aquesta hora","field-wed-narrow-relative+0":"aquest dc.","field-wed-narrow-relative+1":"dc. que ve","field-month":"mes","months-standAlone-wide":["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],"field-weekday-narrow":"dia de la setm.","dayPeriods-standAlone-narrow-afternoon1":"migdia","dayPeriods-standAlone-narrow-afternoon2":"tarda","field-year-relative+0":"enguany","field-year-relative+1":"l’any que ve","dayPeriods-format-abbr-evening1":"vespre","dayPeriods-format-narrow-midnight":"mitjanit","dayPeriods-format-wide-midnight":"mitjanit","field-tue-relative+0":"aquest dimarts","dateFormatItem-GyMMMMd":"d MMMM 'de' y G","field-tue-relative+1":"dimarts que ve","dayPeriods-standAlone-abbr-evening1":"vespre","field-minute-short-relative+0":"aquest minut","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"mitjanit","field-year-narrow":"any","field-tue-short-relative+0":"aquest dt.","dayPeriods-standAlone-narrow-midnight":"mitjanit","field-tue-short-relative+1":"dt. que ve","field-tue-narrow-relative+0":"aquest dt.","field-tue-narrow-relative+1":"dt. que ve","dateTimeFormat-full":"{1}, 'a' 'les' {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"H","field-wed-relative+0":"aquest dimecres","field-wed-relative+1":"dimecres que ve","dateFormatItem-M":"L","field-wed-short-relative+0":"aquest dc.","field-fri-short-relative+0":"aquest dv.","field-wed-short-relative+1":"dc. que ve","field-fri-short-relative+1":"dv. que ve","field-weekOfMonth-short":"setm. del mes","field-quarter-short-relative+-1":"el trim. passat","field-year-short-relative+-1":"l’any passat","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"nit","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"trim. passat","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"p. m.","dateFormatItem-h":"h a","quarters-standAlone-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"field-weekOfMonth-narrow":"setm. del mes","dateFormatItem-y":"y","field-minute-relative+0":"aquest minut","field-year-short-relative+0":"enguany","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"l’any que ve","field-weekday":"dia de la setmana","dayPeriods-format-narrow-pm":"p. m.","field-tue-narrow-relative+-1":"dt. passat","dateFormatItem-yMEd":"E, d/M/y","dayPeriods-standAlone-wide-night1":"nit","field-year-narrow-relative+-1":"l’any passat","field-sat-relative+-1":"dissabte passat","dayPeriods-format-abbr-midnight":"mitjanit","dayPeriods-format-narrow-morning1":"mat.","dayPeriods-format-narrow-morning2":"matí","dayPeriods-format-wide-morning1":"matinada","dayPeriods-format-wide-morning2":"matí","dayPeriods-standAlone-abbr-midnight":"mitjanit","dayPeriods-standAlone-narrow-pm":"p. m.","dayPeriods-standAlone-wide-morning1":"matinada","field-mon-narrow-relative+0":"aquest dl.","dayPeriods-standAlone-wide-morning2":"matí","field-mon-narrow-relative+1":"dl. que ve","field-second":"segon","dateFormatItem-yMMMEd":"E, d MMM y","field-year-relative+-1":"l’any passat","field-weekdayOfMonth-short":"dia de la setm. del mes","dateFormat-short":"d/M/yy","eraNames":["abans de Crist","després de Crist"],"field-second-short":"s","field-thu-short-relative+-1":"dj. passat","field-zone":"fus horari","field-dayperiod-narrow":"a. m./p. m.","field-sun-short-relative+-1":"dg. passat","dayPeriods-standAlone-narrow-morning1":"matinada","dayPeriods-standAlone-narrow-morning2":"matí","eraAbbr":["aC","dC"],"field-week-short":"setm.","dayPeriods-standAlone-abbr-am":"a. m.","dayPeriods-standAlone-wide-pm":"p. m.","dateFormatItem-ms":"mm:ss","field-day-relative+0":"avui","field-day-relative+1":"demà","field-day-relative+2":"demà passat","field-day-short-relative+0":"avui","field-dayOfYear-short":"dia de l’any","field-day-short-relative+1":"demà","dateFormat-long":"d MMMM 'de' y","field-day-short-relative+2":"demà passat","field-sun-narrow-relative+-1":"dg. passat","field-second-relative+0":"ara","field-quarter-relative+-1":"el trimestre passat","dateFormatItem-Hmvvvv":"H:mm (vvvv)","dayPeriods-format-narrow-night1":"nit","quarters-format-abbr":["1T","2T","3T","4T"],"dayPeriods-standAlone-narrow-night1":"nit","field-week-relative+-1":"la setmana passada","dayPeriods-format-abbr-morning1":"matinada","field-month-relative+-1":"el mes passat","dayPeriods-format-abbr-morning2":"matí","months-format-narrow":["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],"field-year":"any","field-era":"era","dayPeriods-standAlone-abbr-morning1":"matinada","dayPeriods-standAlone-abbr-morning2":"matí","days-standAlone-short":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"ahir","field-day-short-relative+-2":"abans-d’ahir","dateFormatItem-GyMMM":"LLL y G","timeFormat-full":"H:mm:ss (zzzz)","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"hora","field-dayOfYear-narrow":"dia de l’any","field-second-narrow-relative+0":"ara","field-quarter":"trimestre","field-month-narrow-relative+0":"aquest mes","field-month-narrow-relative+1":"el mes que ve","dateFormatItem-GyMMMM":"LLLL 'de' y G","field-day":"dia","field-mon-relative+-1":"dilluns passat","field-dayOfYear":"dia de l’any","dateFormat-medium":"d MMM y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"LLL 'de' y","dateFormatItem-GyMMMd":"d MMM 'de' y G","dateFormatItem-MEd":"E d/M","field-tue-short-relative+-1":"dt. passat","field-year-short":"any","field-month-short":"mes","dateFormatItem-MMMEd":"E, d MMM","dayPeriods-format-wide-afternoon1":"migdia","dateFormatItem-MMMd":"d MMM","dayPeriods-format-wide-afternoon2":"tarda","dateFormatItem-Bh":"h B","months-format-abbr":["de gen.","de febr.","de març","d’abr.","de maig","de juny","de jul.","d’ag.","de set.","d’oct.","de nov.","de des."],"dayPeriods-format-abbr-am":"a. m.","field-sat-relative+0":"aquest dissabte","field-sat-relative+1":"dissabte que ve","dayPeriods-format-wide-pm":"p. m.","days-standAlone-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"field-zone-short":"fus horari","field-week-short-relative+0":"aquesta setm.","dateFormatItem-yMMMMd":"d MMMM 'de' y","field-week-short-relative+1":"la setm. que ve","dayPeriods-standAlone-wide-afternoon1":"migdia","dayPeriods-standAlone-wide-afternoon2":"tarda","field-fri-short-relative+-1":"dv. passat","field-month-narrow":"mes","dayPeriods-format-narrow-am":"a. m.","field-month-narrow-relative+-1":"el mes passat","days-format-abbr":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"field-weekday-short":"dia de la setm.","field-day-narrow-relative+-1":"ahir","field-day-narrow-relative+-2":"abans-d’ahir","field-quarter-short":"trim.","days-format-short":["dg.","dl.","dt.","dc.","dj.","dv.","ds."],"months-standAlone-narrow":["GN","FB","MÇ","AB","MG","JN","JL","AG","ST","OC","NV","DS"],"days-format-narrow":["dg","dl","dt","dc","dj","dv","ds"],"dateFormatItem-EHm":"E H:mm","field-quarter-narrow":"trim.","dateFormatItem-Hmsvvvv":"H:mm:ss (vvvv)","field-mon-short-relative+0":"aquest dl.","field-mon-short-relative+1":"dl. que ve","field-dayperiod-short":"a. m./p. m.","dayPeriods-standAlone-narrow-am":"a. m.","field-week-narrow-relative+-1":"la setm. passada","field-thu-relative+-1":"dijous passat","field-fri-narrow-relative+-1":"dv. passat","field-mon-short-relative+-1":"dl. passat","timeFormat-medium":"H:mm:ss","field-quarter-short-relative+0":"aquest trim.","field-quarter-short-relative+1":"el trim. que ve","dateFormatItem-Ed":"E d","field-wed-relative+-1":"dimecres passat","field-weekOfMonth":"setmana del mes","dateFormatItem-hmsvvvv":"h:mm:ss a (vvvv)","field-weekdayOfMonth-narrow":"dia de la setm. del mes","dayPeriods-standAlone-wide-am":"a. m.","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"divendres passat","field-minute":"minut","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"ara","quarters-format-wide":["1r trimestre","2n trimestre","3r trimestre","4t trimestre"],"field-day-short":"dia","field-dayperiod":"a. m./p. m.","field-hour-short":"h","months-standAlone-abbr":["gen.","febr.","març","abr.","maig","juny","jul.","ag.","set.","oct.","nov.","des."],"field-month-relative+0":"aquest mes","field-second-narrow":"s","field-month-relative+1":"el mes que ve","dateFormat-full":"EEEE, d MMMM 'de' y","field-era-narrow":"era","field-sat-short-relative+-1":"ds. passat","field-week-short-relative+-1":"la setm. passada","dateFormatItem-yMMMMEd":"E, d MMMM 'de' y","dateTimeFormat-long":"{1}, 'a' 'les' {0}","dateFormatItem-yM":"M/y","field-sun-relative+-1":"diumenge passat","field-wed-short-relative+-1":"dc. passat","field-weekdayOfMonth":"dia de la setmana del mes","field-quarter-narrow-relative+0":"aquest trim.","dateFormatItem-GyMMMEd":"E, d MMM 'de' y G","field-quarter-narrow-relative+1":"trim. vinent","field-sat-short-relative+0":"aquest ds.","field-sat-short-relative+1":"ds. que ve","field-hour-narrow":"h","field-year-narrow-relative+0":"enguany","field-year-narrow-relative+1":"l’any que ve","dateFormatItem-Gy":"y G","field-zone-narrow":"fus horari","field-tue-relative+-1":"dimarts passat","field-minute-short":"min","dateFormatItem-yw":"'setmana' w 'de' Y","dateFormatItem-Hm":"H:mm","field-week-relative+0":"aquesta setmana","field-week-relative+1":"la setmana que ve","dateFormatItem-MMM":"LLL","field-sun-relative+0":"aquest diumenge","field-sun-relative+1":"diumenge que ve","field-sat-narrow-relative+-1":"ds. passat","quarters-standAlone-abbr":["1T","2T","3T","4T"],"dateFormatItem-MMMMW":"'setmana' W MMMM","field-month-short-relative+-1":"el mes passat","dateFormatItem-EHms":"E H:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-week":"setmana","field-day-narrow":"dia","field-hour-narrow-relative+0":"aquesta hora"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ca/number.js b/lib/dojo/cldr/nls/ca/number.js
index faf980297..e314ec6fc 100644
--- a/lib/dojo/cldr/nls/ca/number.js
+++ b/lib/dojo/cldr/nls/ca/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ca/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 bilions","decimalFormat-short":"000 B"}); \ No newline at end of file
+define("dojo/cldr/nls/ca/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 B","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 bilions","decimalFormat":"#,##0.###","currencyFormat-short":"000 B ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ca/roc.js b/lib/dojo/cldr/nls/ca/roc.js
index c1609979f..f4e62432a 100644
--- a/lib/dojo/cldr/nls/ca/roc.js
+++ b/lib/dojo/cldr/nls/ca/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ca/roc",{"field-sat-relative+0":"aquest dissabte","field-sat-relative+1":"dissabte que ve","field-dayperiod":"a. m./p. m.","field-sun-relative+-1":"diumenge passat","field-mon-relative+-1":"dilluns passat","field-minute":"minut","field-day-relative+-1":"ahir","field-weekday":"dia de la setmana","field-day-relative+-2":"abans-d’ahir","field-era":"era","field-hour":"hora","field-sun-relative+0":"aquest diumenge","field-sun-relative+1":"diumenge que ve","field-wed-relative+-1":"dimecres passat","field-day-relative+0":"avui","field-day-relative+1":"demà","field-day-relative+2":"demà passat","dateFormat-long":"d MMMM 'de' y G","field-tue-relative+0":"aquest dimarts","field-zone":"zona","field-tue-relative+1":"dimarts que ve","field-week-relative+-1":"la setmana passada","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"enguany","field-year-relative+1":"l’any que ve","field-sat-relative+-1":"dissabte passat","field-year-relative+-1":"l’any passat","field-year":"any","field-fri-relative+0":"aquest divendres","field-fri-relative+1":"divendres que ve","field-week":"setmana","field-week-relative+0":"aquesta setmana","field-week-relative+1":"la setmana que ve","field-month-relative+0":"aquest mes","field-month":"mes","field-month-relative+1":"el mes que ve","field-fri-relative+-1":"divendres passat","field-second":"segon","field-tue-relative+-1":"dimarts passat","field-day":"dia","field-mon-relative+0":"aquest dilluns","field-mon-relative+1":"dilluns que ve","field-thu-relative+0":"aquest dijous","field-second-relative+0":"ara","dateFormat-short":"dd/MM/y GGGGG","field-thu-relative+1":"dijous que ve","dateFormat-full":"EEEE d MMMM 'de' y G","field-wed-relative+0":"aquest dimecres","field-wed-relative+1":"dimecres que ve","field-month-relative+-1":"el mes passat","field-thu-relative+-1":"dijous passat"}); \ No newline at end of file
+define("dojo/cldr/nls/ca/roc",{"field-quarter-short-relative+0":"aquest trim.","field-quarter-short-relative+1":"el trim. que ve","field-tue-relative+-1":"dimarts passat","field-year":"any","field-wed-relative+0":"aquest dimecres","field-wed-relative+1":"dimecres que ve","field-minute":"minut","field-month-narrow-relative+-1":"el mes passat","field-tue-narrow-relative+0":"aquest dt.","field-tue-narrow-relative+1":"dt. que ve","field-thu-short-relative+0":"aquest dj.","field-day-short-relative+-1":"ahir","field-thu-short-relative+1":"dj. que ve","field-day-relative+0":"avui","field-day-short-relative+-2":"abans-d’ahir","field-day-relative+1":"demà","field-week-narrow-relative+0":"aquesta setm.","field-day-relative+2":"demà passat","field-week-narrow-relative+1":"la setm. que ve","field-wed-narrow-relative+-1":"dc. passat","field-year-narrow":"any","field-era-short":"era","field-year-narrow-relative+0":"enguany","field-tue-relative+0":"aquest dimarts","field-year-narrow-relative+1":"l’any que ve","field-tue-relative+1":"dimarts que ve","field-weekdayOfMonth":"dia de la setmana del mes","field-second-short":"s","field-weekdayOfMonth-narrow":"dia de la setm. del mes","field-week-relative+0":"aquesta setmana","field-month-relative+0":"aquest mes","field-week-relative+1":"la setmana que ve","field-month-relative+1":"el mes que ve","field-sun-narrow-relative+0":"aquest dg.","field-mon-short-relative+0":"aquest dl.","field-sun-narrow-relative+1":"dg. que ve","field-mon-short-relative+1":"dl. que ve","field-second-relative+0":"ara","eraNames":["Abans de ROC","ROC"],"field-weekOfMonth":"setmana del mes","field-month-short":"mes","field-day":"dia","field-dayOfYear-short":"dia de l’any","field-year-relative+-1":"l’any passat","field-sat-short-relative+-1":"ds. passat","field-hour-relative+0":"aquesta hora","field-second-short-relative+0":"ara","field-wed-relative+-1":"dimecres passat","field-sat-narrow-relative+-1":"ds. passat","field-second":"segon","dateFormat-long":"d MMMM 'de' y G","field-hour-short-relative+0":"aquesta hora","field-quarter":"trimestre","field-week-short":"setm.","field-day-narrow-relative+0":"avui","field-day-narrow-relative+1":"demà","field-day-narrow-relative+2":"demà passat","field-tue-short-relative+0":"aquest dt.","field-tue-short-relative+1":"dt. que ve","field-month-short-relative+-1":"el mes passat","field-mon-relative+-1":"dilluns passat","field-month":"mes","field-day-narrow":"dia","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"aquest ds.","field-sat-short-relative+1":"ds. que ve","dateFormat-medium":"dd/MM/y G","field-second-narrow":"s","field-mon-relative+0":"aquest dilluns","field-mon-relative+1":"dilluns que ve","field-day-narrow-relative+-1":"ahir","field-year-short":"any","field-day-narrow-relative+-2":"abans-d’ahir","field-quarter-relative+-1":"el trimestre passat","field-dayperiod-narrow":"a. m./p. m.","field-week-narrow-relative+-1":"la setm. passada","field-dayOfYear":"dia de l’any","field-sat-relative+-1":"dissabte passat","field-hour":"hora","field-minute-narrow-relative+0":"aquest minut","dateFormat-full":"EEEE d MMMM 'de' y G","field-month-relative+-1":"el mes passat","field-quarter-short":"trim.","field-sat-narrow-relative+0":"aquest ds.","field-fri-relative+0":"aquest divendres","field-sat-narrow-relative+1":"ds. que ve","field-fri-relative+1":"divendres que ve","field-month-narrow-relative+0":"aquest mes","field-month-narrow-relative+1":"el mes que ve","field-sun-short-relative+0":"aquest dg.","field-sun-short-relative+1":"dg. que ve","field-week-relative+-1":"la setmana passada","field-quarter-short-relative+-1":"el trim. passat","field-minute-short-relative+0":"aquest minut","field-quarter-relative+0":"aquest trimestre","field-minute-relative+0":"aquest minut","field-quarter-relative+1":"el trimestre que ve","field-wed-short-relative+-1":"dc. passat","dateFormat-short":"dd/MM/y GGGGG","field-thu-short-relative+-1":"dj. passat","field-year-narrow-relative+-1":"l’any passat","field-mon-narrow-relative+-1":"dl. passat","field-thu-narrow-relative+-1":"dj. passat","field-tue-narrow-relative+-1":"dt. passat","field-weekOfMonth-short":"setm. del mes","field-wed-short-relative+0":"aquest dc.","field-wed-short-relative+1":"dc. que ve","field-sun-relative+-1":"diumenge passat","field-second-narrow-relative+0":"ara","field-weekday":"dia de la setmana","field-day-short-relative+0":"avui","field-quarter-narrow-relative+0":"aquest trim.","field-sat-relative+0":"aquest dissabte","field-day-short-relative+1":"demà","field-quarter-narrow-relative+1":"trim. vinent","field-sat-relative+1":"dissabte que ve","field-day-short-relative+2":"demà passat","field-week-short-relative+0":"aquesta setm.","field-week-short-relative+1":"la setm. que ve","field-dayOfYear-narrow":"dia de l’any","field-month-short-relative+0":"aquest mes","field-month-short-relative+1":"el mes que ve","field-weekdayOfMonth-short":"dia de la setm. del mes","field-zone-narrow":"fus horari","field-thu-narrow-relative+0":"aquest dj.","field-thu-narrow-relative+1":"dj. que ve","field-sun-narrow-relative+-1":"dg. passat","field-mon-short-relative+-1":"dl. passat","field-thu-relative+0":"aquest dijous","field-thu-relative+1":"dijous que ve","field-fri-short-relative+-1":"dv. passat","field-thu-relative+-1":"dijous passat","field-week":"setmana","field-wed-narrow-relative+0":"aquest dc.","field-wed-narrow-relative+1":"dc. que ve","field-quarter-narrow-relative+-1":"trim. passat","field-year-short-relative+0":"enguany","field-dayperiod-short":"a. m./p. m.","field-year-short-relative+1":"l’any que ve","field-fri-short-relative+0":"aquest dv.","field-fri-short-relative+1":"dv. que ve","field-week-short-relative+-1":"la setm. passada","field-hour-narrow-relative+0":"aquesta hora","field-hour-short":"h","field-zone-short":"fus horari","field-month-narrow":"mes","field-hour-narrow":"h","field-fri-narrow-relative+-1":"dv. passat","field-year-relative+0":"enguany","field-year-relative+1":"l’any que ve","field-era-narrow":"era","field-fri-relative+-1":"divendres passat","field-tue-short-relative+-1":"dt. passat","field-minute-narrow":"min","field-mon-narrow-relative+0":"aquest dl.","field-mon-narrow-relative+1":"dl. que ve","field-year-short-relative+-1":"l’any passat","field-zone":"fus horari","field-weekOfMonth-narrow":"setm. del mes","field-weekday-narrow":"dia de la setm.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dg. passat","field-day-relative+-1":"ahir","field-day-relative+-2":"abans-d’ahir","field-weekday-short":"dia de la setm.","field-sun-relative+0":"aquest diumenge","field-sun-relative+1":"diumenge que ve","field-day-short":"dia","field-week-narrow":"setm.","field-era":"era","field-fri-narrow-relative+0":"aquest dv.","field-fri-narrow-relative+1":"dv. que ve"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/chinese.js b/lib/dojo/cldr/nls/chinese.js
index 249253518..50e4a9009 100644
--- a/lib/dojo/cldr/nls/chinese.js
+++ b/lib/dojo/cldr/nls/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/chinese",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","days-format-narrow@localeAlias39":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"today","field-day-relative+1":"tomorrow","days-standAlone-short@localeAlias44":{"bundle":"gregorian","target":"days-format-short"},"days-standAlone-short@localeAlias45":{"bundle":"gregorian","target":"days-format-abbr"},"months-standAlone-wide@localeAlias36":{"bundle":"chinese","target":"months-format-wide"},"days-standAlone-short@localeAlias46":{"bundle":"gregorian","target":"days-format-wide"},"quarters-standAlone-wide@localeAlias53":{"bundle":"gregorian","target":"quarters-format-wide"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","field-second-relative+0":"now","quarters@localeAlias48":{"bundle":"gregorian","target":"quarters"},"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","quarters-format-abbr@localeAlias49":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-yyyyQQQ":"U QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-abbr@localeAlias38":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-GyMMMEd":"U MMM d, E","dateFormatItem-yyyyMd":"y-MM-dd","field-day":"Day","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","days-standAlone-wide@localeAlias47":{"bundle":"gregorian","target":"days-format-wide"},"days-format-short@localeAlias40":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias41":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-yyyyMEd":"y-MM-dd, E","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","dateFormat-long":"U MMMM d","dateFormatItem-GyMMMd":"U MMM d","dayPeriods-format-abbr@localeAlias55":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dayPeriods-format-abbr@localeAlias56":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"U MMM","field-month":"Month","dateFormatItem-MMM":"LLL","field-dayperiod":"Dayperiod","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"U MMM d","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"y-MM","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-yyyyMMMd":"U MMM d","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-hour":"Hour","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateFormat-full":"U MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"timeFormat-long":"HH:mm:ss z","dateFormat-short":"y-MM-dd","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"U MMM d, E","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-H":"HH","timeFormat@localeAlias57":{"bundle":"gregorian","target":"timeFormat"},"dateFormatItem-yyyy":"U","dateFormatItem-M":"L","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"Day of the Week","months-format-narrow@localeAlias33":{"bundle":"chinese","target":"months-standAlone-narrow"},"field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"U","months-format-abbr@localeAlias32":{"bundle":"chinese","target":"months-format-wide"},"field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-abbr-noon":"noon","quarters-format-narrow@localeAlias50":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","dateFormatItem-yMd":"y-MM-dd","field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"U MMM","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayPeriods@localeAlias54":{"bundle":"gregorian","target":"dayPeriods"},"dateFormatItem-yyyyQQQQ":"U QQQQ","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","months-standAlone-abbr@localeAlias34":{"bundle":"chinese","target":"months-format-abbr"},"quarters-standAlone-abbr@localeAlias51":{"bundle":"gregorian","target":"quarters-format-abbr"},"months-standAlone-abbr@localeAlias35":{"bundle":"chinese","target":"months-format-wide"},"quarters-standAlone-abbr@localeAlias52":{"bundle":"gregorian","target":"quarters-format-wide"},"dayPeriods-format-wide-noon":"noon","days-standAlone-abbr@localeAlias42":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias43":{"bundle":"gregorian","target":"days-format-wide"},"days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","days@localeAlias37":{"bundle":"gregorian","target":"days"},"field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","field-day-relative+-1":"yesterday","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"U","field-era":"Era"},"ca":true,"cs":true,"de":true,"en":true,"en-au":true,"en-gb":true,"es":true,"fi":true,"fr":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"th":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/chinese",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+0":"this Sunday","field-sun-narrow-relative+1":"next Sunday","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","field-fri-narrow-relative+1":"next Friday","field-weekdayOfMonth-narrow@localeAlias162":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-wed-narrow@localeAlias174":{"bundle":"","target":"field-wed-short"},"field-weekdayOfMonth-narrow@localeAlias163":{"bundle":"","target":"field-weekdayOfMonth"},"field-wed-narrow@localeAlias175":{"bundle":"","target":"field-wed"},"field-thu-short@localeAlias176":{"bundle":"","target":"field-thu"},"days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-abbr@localeAlias113":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias114":{"bundle":"gregorian","target":"days-format-wide"},"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekdayOfMonth-short@localeAlias161":{"bundle":"","target":"field-weekdayOfMonth"},"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","field-tue-short@localeAlias170":{"bundle":"","target":"field-tue"},"field-minute-narrow-relative+0":"this minute","quarters@localeAlias119":{"bundle":"gregorian","target":"quarters"},"days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-day-narrow@localeAlias153":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias154":{"bundle":"","target":"field-day"},"field-minute-short@localeAlias191":{"bundle":"","target":"field-minute"},"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dayPeriods-format-wide-am":"AM","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dateFormatItem-yMd":"r-MM-dd","dayPeriods-standAlone-narrow@localeAlias129":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","field-week-narrow":"Week","field-hour-relative+0":"this hour","field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-sat-narrow@localeAlias183":{"bundle":"","target":"field-sat-short"},"field-sat-narrow@localeAlias184":{"bundle":"","target":"field-sat"},"dayPeriods-standAlone-narrow@localeAlias130":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-minute-narrow":"Minute","dateFormatItem-yyyyMMM":"r(U) MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","field-era-short":"Era","field-day-narrow-relative+1":"tomorrow","field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","days-format-short@localeAlias111":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias112":{"bundle":"gregorian","target":"days-format-wide"},"field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-year-short@localeAlias137":{"bundle":"","target":"field-year"},"field-month":"Month","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow":"Day of the Week","field-mon-short@localeAlias167":{"bundle":"","target":"field-mon"},"dayPeriods-format-narrow@localeAlias126":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-year-relative+0":"this year","field-year-relative+1":"next year","field-era-short@localeAlias134":{"bundle":"","target":"field-era"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","field-year-narrow":"Year","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-standAlone-abbr@localeAlias128":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"timeFormat@localeAlias133":{"bundle":"gregorian","target":"timeFormat"},"months-standAlone-abbr@localeAlias105":{"bundle":"chinese","target":"months-format-abbr"},"months-standAlone-abbr@localeAlias106":{"bundle":"chinese","target":"months-format-wide"},"field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","days-standAlone-wide@localeAlias118":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","quarters-standAlone-wide@localeAlias124":{"bundle":"gregorian","target":"quarters-format-wide"},"field-wed-short-relative+0":"this Wednesday","field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","field-quarter-short-relative+-1":"last quarter","field-second-short@localeAlias194":{"bundle":"","target":"field-second"},"field-year-short-relative+-1":"last year","field-tue-narrow@localeAlias171":{"bundle":"","target":"field-tue-short"},"field-tue-narrow@localeAlias172":{"bundle":"","target":"field-tue"},"dateFormatItem-Bhm":"h:mm B","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-zone-narrow@localeAlias198":{"bundle":"","target":"field-zone-short"},"field-wed-short@localeAlias173":{"bundle":"","target":"field-wed"},"field-zone-narrow@localeAlias199":{"bundle":"","target":"field-zone"},"field-weekOfMonth-narrow":"Week Of Month","field-second-narrow@localeAlias195":{"bundle":"","target":"field-second-short"},"field-second-narrow@localeAlias196":{"bundle":"","target":"field-second"},"dateFormatItem-yyyyQQQ":"r(U) QQQ","dateFormatItem-yyyyMMMM":"r(U) MMMM","dateFormatItem-y":"r(U)","field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-narrow-relative+-1":"last Tuesday","field-year-narrow@localeAlias138":{"bundle":"","target":"field-year-short"},"field-year-narrow@localeAlias139":{"bundle":"","target":"field-year"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"r MMM d","field-hour-short@localeAlias188":{"bundle":"","target":"field-hour"},"field-sat-relative+-1":"last Saturday","dateFormatItem-UMMM":"U MMM","quarters-format-narrow@localeAlias121":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"dayPeriods-standAlone-narrow-pm":"PM","field-zone-short@localeAlias197":{"bundle":"","target":"field-zone"},"field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","field-month-narrow@localeAlias144":{"bundle":"","target":"field-month-short"},"field-month-narrow@localeAlias145":{"bundle":"","target":"field-month"},"days-standAlone-short@localeAlias115":{"bundle":"gregorian","target":"days-format-short"},"field-second":"Second","days-standAlone-short@localeAlias116":{"bundle":"gregorian","target":"days-format-abbr"},"field-year-relative+-1":"last year","field-weekOfMonth-short@localeAlias149":{"bundle":"","target":"field-weekOfMonth"},"days-standAlone-short@localeAlias117":{"bundle":"gregorian","target":"days-format-wide"},"field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"r-MM-dd","field-second-short":"Second","field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","dateFormatItem-UM":"U MM","field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-sat-short@localeAlias182":{"bundle":"","target":"field-sat"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-day-short-relative+1":"tomorrow","dateFormat-long":"r(U) MMMM d","field-sun-narrow-relative+-1":"last Sunday","days-format-abbr@localeAlias109":{"bundle":"gregorian","target":"days-format-wide"},"months-standAlone-wide@localeAlias107":{"bundle":"chinese","target":"months-format-wide"},"field-second-relative+0":"now","field-quarter-relative+-1":"last quarter","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-day-short@localeAlias152":{"bundle":"","target":"field-day"},"field-month-short@localeAlias143":{"bundle":"","target":"field-month"},"field-week-relative+-1":"last week","field-month-relative+-1":"last month","months-format-abbr@localeAlias103":{"bundle":"chinese","target":"months-format-wide"},"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"Year","field-era":"Era","field-dayOfYear-narrow@localeAlias156":{"bundle":"","target":"field-dayOfYear-short"},"field-weekday-short@localeAlias158":{"bundle":"","target":"field-weekday"},"field-dayOfYear-narrow@localeAlias157":{"bundle":"","target":"field-dayOfYear"},"days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-mon-narrow@localeAlias168":{"bundle":"","target":"field-mon-short"},"field-mon-narrow@localeAlias169":{"bundle":"","target":"field-mon"},"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-UMMMd":"U MMM d","field-day-short-relative+-1":"yesterday","dateFormatItem-GyMMM":"r(U) MMM","days-format-narrow@localeAlias110":{"bundle":"gregorian","target":"days-standAlone-narrow"},"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-sun-narrow@localeAlias165":{"bundle":"","target":"field-sun-short"},"field-sun-narrow@localeAlias166":{"bundle":"","target":"field-sun"},"field-hour":"Hour","field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-quarter":"Quarter","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","dayPeriods@localeAlias125":{"bundle":"gregorian","target":"dayPeriods"},"dateFormatItem-yyyy":"r(U)","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"Day","field-mon-relative+-1":"last Monday","field-dayOfYear":"Day Of Year","dateFormat-medium":"r MMM d","dateTimeFormat-short":"{1} {0}","field-weekday-narrow@localeAlias159":{"bundle":"","target":"field-weekday-short"},"dateFormatItem-GyMMMd":"r MMM d","dateFormatItem-MEd":"MM-dd, E","field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","field-week-narrow@localeAlias147":{"bundle":"","target":"field-week-short"},"field-week-narrow@localeAlias148":{"bundle":"","target":"field-week"},"field-month-short":"Month","field-era-narrow@localeAlias135":{"bundle":"","target":"field-era-short"},"field-era-narrow@localeAlias136":{"bundle":"","target":"field-era"},"dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","field-weekday-narrow@localeAlias160":{"bundle":"","target":"field-weekday"},"dateFormatItem-Bh":"h B","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dayPeriods-format-abbr-am":"AM","field-fri-short@localeAlias179":{"bundle":"","target":"field-fri"},"field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","field-hour-narrow@localeAlias189":{"bundle":"","target":"field-hour-short"},"months-format-narrow@localeAlias104":{"bundle":"chinese","target":"months-standAlone-narrow"},"days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","dateFormatItem-yyyyMMMEd":"r(U) MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","field-month-narrow":"Month","dayPeriods-format-narrow-am":"AM","field-thu-narrow@localeAlias177":{"bundle":"","target":"field-thu-short"},"field-month-narrow-relative+-1":"last month","field-thu-narrow@localeAlias178":{"bundle":"","target":"field-thu"},"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-hour-narrow@localeAlias190":{"bundle":"","target":"field-hour"},"field-weekday-short":"Day of the Week","field-day-narrow-relative+-1":"yesterday","field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayperiod-narrow@localeAlias186":{"bundle":"","target":"field-dayperiod-short"},"field-dayperiod-narrow@localeAlias187":{"bundle":"","target":"field-dayperiod"},"quarters-standAlone-abbr@localeAlias122":{"bundle":"gregorian","target":"quarters-format-abbr"},"field-weekOfMonth-narrow@localeAlias150":{"bundle":"","target":"field-weekOfMonth-short"},"quarters-standAlone-abbr@localeAlias123":{"bundle":"gregorian","target":"quarters-format-wide"},"days-format-narrow":["S","M","T","W","T","F","S"],"field-weekOfMonth-narrow@localeAlias151":{"bundle":"","target":"field-weekOfMonth"},"field-quarter-narrow":"Quarter","field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","days@localeAlias108":{"bundle":"gregorian","target":"days"},"field-week-narrow-relative+-1":"last week","field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","field-dayperiod-short@localeAlias185":{"bundle":"","target":"field-dayperiod"},"timeFormat-medium":"HH:mm:ss","dayPeriods-standAlone-wide@localeAlias131":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-wide@localeAlias132":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-quarter-short-relative+0":"this quarter","field-quarter-short-relative+1":"next quarter","field-week-short@localeAlias146":{"bundle":"","target":"field-week"},"dateFormatItem-Ed":"d, E","field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-standAlone-wide-am":"AM","field-fri-relative+-1":"last Friday","field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-short":"Day","field-dayperiod":"Dayperiod","field-hour-short":"Hour","field-fri-narrow@localeAlias180":{"bundle":"","target":"field-fri-short"},"field-fri-narrow@localeAlias181":{"bundle":"","target":"field-fri"},"months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"r(U) MMMM d, EEEE","dateFormatItem-yyyyMEd":"r-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","quarters-format-abbr@localeAlias120":{"bundle":"gregorian","target":"quarters-format-wide"},"field-week-short-relative+-1":"last week","dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"r(U) QQQQ","field-weekdayOfMonth":"Weekday Of Month","dateFormatItem-yyyyMd":"r-MM-dd","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-GyMMMEd":"r(U) MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","field-year-narrow-relative+0":"this year","field-year-narrow-relative+1":"next year","dateFormatItem-Gy":"r U","field-minute-narrow@localeAlias192":{"bundle":"","target":"field-minute-short"},"field-minute-narrow@localeAlias193":{"bundle":"","target":"field-minute"},"field-zone-narrow":"Zone","dateFormatItem-yyyyM":"r-MM","field-tue-relative+-1":"last Tuesday","field-minute-short":"Minute","field-sun-short@localeAlias164":{"bundle":"","target":"field-sun"},"field-quarter-short@localeAlias140":{"bundle":"","target":"field-quarter"},"dateFormatItem-Hm":"HH:mm","field-week-relative+0":"this week","field-week-relative+1":"next week","dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dayPeriods-format-wide@localeAlias127":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-dayOfYear-short@localeAlias155":{"bundle":"","target":"field-dayOfYear"},"field-sat-narrow-relative+-1":"last Saturday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-quarter-narrow@localeAlias141":{"bundle":"","target":"field-quarter-short"},"field-quarter-narrow@localeAlias142":{"bundle":"","target":"field-quarter"},"field-month-short-relative+-1":"last month","dateFormatItem-MMMMd":"MMMM d","field-week":"Week","dateFormatItem-UMd":"U MM-d","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour"},"bs":true,"ca":true,"cs":true,"de":true,"en":true,"en-au":true,"en-ca":true,"es":true,"fi":true,"fr":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sv":true,"th":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/coptic.js b/lib/dojo/cldr/nls/coptic.js
index adaf90bbb..fc9ead853 100644
--- a/lib/dojo/cldr/nls/coptic.js
+++ b/lib/dojo/cldr/nls/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/coptic",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","quarters-standAlone-abbr@localeAlias77":{"bundle":"gregorian","target":"quarters-format-abbr"},"dayPeriods@localeAlias80":{"bundle":"gregorian","target":"dayPeriods"},"quarters-standAlone-abbr@localeAlias78":{"bundle":"gregorian","target":"quarters-format-wide"},"field-minute":"Minute","days-standAlone-abbr@localeAlias68":{"bundle":"gregorian","target":"days-format-abbr"},"dateTimeFormat-short":"{1} {0}","days-standAlone-abbr@localeAlias69":{"bundle":"gregorian","target":"days-format-wide"},"field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-tue-relative+0":"this Tuesday","months-standAlone-abbr@localeAlias60":{"bundle":"coptic","target":"months-format-abbr"},"field-tue-relative+1":"next Tuesday","months-standAlone-abbr@localeAlias61":{"bundle":"coptic","target":"months-format-wide"},"dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","days@localeAlias63":{"bundle":"gregorian","target":"days"},"dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide@localeAlias79":{"bundle":"gregorian","target":"quarters-format-wide"},"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","days-format-narrow@localeAlias65":{"bundle":"gregorian","target":"days-standAlone-narrow"},"field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","dateFormatItem-MMM":"LLL","days-standAlone-short@localeAlias70":{"bundle":"gregorian","target":"days-format-short"},"field-dayperiod":"Dayperiod","days-standAlone-short@localeAlias71":{"bundle":"gregorian","target":"days-format-abbr"},"months-standAlone-wide@localeAlias62":{"bundle":"coptic","target":"months-format-wide"},"days-standAlone-short@localeAlias72":{"bundle":"gregorian","target":"days-format-wide"},"dayPeriods-format-narrow-pm":"p","dateFormat-medium":"G y MMM d","eraAbbr":["ERA0","ERA1"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","quarters@localeAlias74":{"bundle":"gregorian","target":"quarters"},"days-format-short@localeAlias66":{"bundle":"gregorian","target":"days-format-abbr"},"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"days-format-short@localeAlias67":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-yyyyMMMd":"G y MMM d","quarters-format-abbr@localeAlias75":{"bundle":"gregorian","target":"quarters-format-wide"},"days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"days-format-abbr@localeAlias64":{"bundle":"gregorian","target":"days-format-wide"},"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-hour":"Hour","days-standAlone-wide@localeAlias73":{"bundle":"gregorian","target":"days-format-wide"},"months-format-wide":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-abbr@localeAlias81":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"field-week-relative+-1":"last week","dayPeriods-format-abbr@localeAlias82":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"timeFormat-long":"HH:mm:ss z","dateFormat-short":"GGGGG y-MM-dd","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormat@localeAlias85":{"bundle":"generic","target":"dateFormat"},"dateFormatItem-H":"HH","dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","months-standAlone-wide":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","eraNarrow@localeAlias84":{"bundle":"coptic","target":"eraAbbr"},"dateFormatItem-d":"d","field-weekday":"Day of the Week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"eraNames@localeAlias83":{"bundle":"coptic","target":"eraAbbr"},"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"G y","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateTime@localeAlias87":{"bundle":"generic","target":"dateTime"},"dayPeriods-format-abbr-noon":"noon","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"G y MMM","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyQQQQ":"G y QQQQ","timeFormat@localeAlias86":{"bundle":"gregorian","target":"timeFormat"},"months-format-narrow@localeAlias59":{"bundle":"coptic","target":"months-standAlone-narrow"},"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","eraNarrow":["ERA0","ERA1"],"dayPeriods-format-wide-noon":"noon","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","months-format-abbr@localeAlias58":{"bundle":"coptic","target":"months-format-wide"},"dateFormatItem-EHm":"E HH:mm","field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-EHms":"E HH:mm:ss","quarters-format-narrow@localeAlias76":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-day-relative+-1":"yesterday","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-era":"Era"},"ar":true,"fr":true,"hu":true,"id":true,"ja":true,"ko":true,"nl":true,"pl":true,"pt":true,"ro":true,"ru":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/coptic",{root:{"field-dayperiod-narrow@localeAlias287":{"bundle":"","target":"field-dayperiod-short"},"field-dayperiod-narrow@localeAlias288":{"bundle":"","target":"field-dayperiod"},"quarters-standAlone-abbr@localeAlias220":{"bundle":"gregorian","target":"quarters-format-wide"},"field-thu-narrow-relative+0":"this Thursday","dayPeriods-standAlone-wide@localeAlias228":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"field-thu-narrow-relative+1":"next Thursday","dayPeriods-standAlone-wide@localeAlias229":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-weekOfMonth-narrow@localeAlias251":{"bundle":"","target":"field-weekOfMonth-short"},"field-weekOfMonth-narrow@localeAlias252":{"bundle":"","target":"field-weekOfMonth"},"field-sun-narrow-relative+0":"this Sunday","field-sun-narrow-relative+1":"next Sunday","months-format-wide":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"days@localeAlias205":{"bundle":"gregorian","target":"days"},"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","eraNarrow":["ERA0","ERA1"],"field-fri-narrow-relative+1":"next Friday","field-dayperiod-short@localeAlias286":{"bundle":"","target":"field-dayperiod"},"days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-week-short@localeAlias247":{"bundle":"","target":"field-week"},"dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","field-minute-narrow-relative+0":"this minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-abbr@localeAlias217":{"bundle":"gregorian","target":"quarters-format-wide"},"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","dateFormatItem-Ehms":"E h:mm:ss a","field-thu-relative+0":"this Thursday","field-fri-narrow@localeAlias281":{"bundle":"","target":"field-fri-short"},"dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","field-fri-narrow@localeAlias282":{"bundle":"","target":"field-fri"},"field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","field-week-narrow":"Week","field-hour-relative+0":"this hour","field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-minute-narrow":"Minute","dateFormatItem-yyyyMMM":"G y MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","field-era-short":"Era","field-day-narrow-relative+1":"tomorrow","dateFormat@localeAlias232":{"bundle":"generic","target":"dateFormat"},"field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-minute-narrow@localeAlias293":{"bundle":"","target":"field-minute-short"},"field-minute-narrow@localeAlias294":{"bundle":"","target":"field-minute"},"field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-sun-short@localeAlias265":{"bundle":"","target":"field-sun"},"field-quarter-short@localeAlias241":{"bundle":"","target":"field-quarter"},"field-month":"Month","months-standAlone-wide":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow":"Day of the Week","field-year-relative+0":"this year","field-year-relative+1":"next year","dayPeriods-format-wide@localeAlias224":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-dayOfYear-short@localeAlias256":{"bundle":"","target":"field-dayOfYear"},"field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","field-year-narrow":"Year","field-quarter-narrow@localeAlias242":{"bundle":"","target":"field-quarter-short"},"field-quarter-narrow@localeAlias243":{"bundle":"","target":"field-quarter"},"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","field-wed-short-relative+0":"this Wednesday","field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","field-weekdayOfMonth-narrow@localeAlias263":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-wed-narrow@localeAlias275":{"bundle":"","target":"field-wed-short"},"field-weekdayOfMonth-narrow@localeAlias264":{"bundle":"","target":"field-weekdayOfMonth"},"field-wed-narrow@localeAlias276":{"bundle":"","target":"field-wed"},"field-quarter-short-relative+-1":"last quarter","field-thu-short@localeAlias277":{"bundle":"","target":"field-thu"},"field-year-short-relative+-1":"last year","days-standAlone-abbr@localeAlias210":{"bundle":"gregorian","target":"days-format-abbr"},"dateFormatItem-Bhm":"h:mm B","days-standAlone-abbr@localeAlias211":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","dateFormatItem-d":"d","field-weekdayOfMonth-short@localeAlias262":{"bundle":"","target":"field-weekdayOfMonth"},"dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-tue-short@localeAlias271":{"bundle":"","target":"field-tue"},"field-weekOfMonth-narrow":"Week Of Month","quarters@localeAlias216":{"bundle":"gregorian","target":"quarters"},"field-day-narrow@localeAlias254":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias255":{"bundle":"","target":"field-day"},"dateFormatItem-yyyyQQQ":"G y QQQ","field-minute-short@localeAlias292":{"bundle":"","target":"field-minute"},"dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-y":"G y","field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-narrow-relative+-1":"last Tuesday","dayPeriods-standAlone-narrow@localeAlias226":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-narrow@localeAlias227":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"G y MMM d","field-sat-relative+-1":"last Saturday","dayPeriods-standAlone-narrow-pm":"PM","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","field-sat-narrow@localeAlias284":{"bundle":"","target":"field-sat-short"},"days-format-short@localeAlias208":{"bundle":"gregorian","target":"days-format-abbr"},"field-sat-narrow@localeAlias285":{"bundle":"","target":"field-sat"},"days-format-short@localeAlias209":{"bundle":"gregorian","target":"days-format-wide"},"field-second":"Second","field-year-relative+-1":"last year","field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"GGGGG y-MM-dd","eraNames":["ERA0","ERA1"],"field-second-short":"Second","field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","eraNames@localeAlias230":{"bundle":"coptic","target":"eraAbbr"},"eraAbbr":["ERA0","ERA1"],"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","field-year-short@localeAlias238":{"bundle":"","target":"field-year"},"dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-zone-narrow@localeAlias300":{"bundle":"","target":"field-zone"},"field-mon-short@localeAlias268":{"bundle":"","target":"field-mon"},"dayPeriods-format-narrow@localeAlias223":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-era-short@localeAlias235":{"bundle":"","target":"field-era"},"field-day-short-relative+1":"tomorrow","dateFormat-long":"G y MMMM d","field-sun-narrow-relative+-1":"last Sunday","field-second-relative+0":"now","field-quarter-relative+-1":"last quarter","dayPeriods-standAlone-abbr@localeAlias225":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"months-standAlone-abbr@localeAlias202":{"bundle":"coptic","target":"months-format-abbr"},"timeFormat@localeAlias233":{"bundle":"gregorian","target":"timeFormat"},"months-standAlone-abbr@localeAlias203":{"bundle":"coptic","target":"months-format-wide"},"days-standAlone-wide@localeAlias215":{"bundle":"gregorian","target":"days-format-wide"},"field-week-relative+-1":"last week","field-month-relative+-1":"last month","quarters-standAlone-wide@localeAlias221":{"bundle":"gregorian","target":"quarters-format-wide"},"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-year":"Year","field-era":"Era","dateTime@localeAlias234":{"bundle":"generic","target":"dateTime"},"days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-second-short@localeAlias295":{"bundle":"","target":"field-second"},"quarters-format-narrow":["1","2","3","4"],"field-tue-narrow@localeAlias272":{"bundle":"","target":"field-tue-short"},"field-tue-narrow@localeAlias273":{"bundle":"","target":"field-tue"},"field-day-short-relative+-1":"yesterday","dateFormatItem-GyMMM":"G y MMM","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-zone-narrow@localeAlias299":{"bundle":"","target":"field-zone-short"},"field-wed-short@localeAlias274":{"bundle":"","target":"field-wed"},"field-hour":"Hour","field-second-narrow@localeAlias296":{"bundle":"","target":"field-second-short"},"field-second-narrow@localeAlias297":{"bundle":"","target":"field-second"},"field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-quarter":"Quarter","field-month-narrow-relative+0":"this month","quarters-format-narrow@localeAlias218":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-month-narrow-relative+1":"next month","field-year-narrow@localeAlias239":{"bundle":"","target":"field-year-short"},"dateFormatItem-yyyy":"G y","field-hour-short@localeAlias289":{"bundle":"","target":"field-hour"},"dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"Day","field-mon-relative+-1":"last Monday","field-zone-short@localeAlias298":{"bundle":"","target":"field-zone"},"field-year-narrow@localeAlias240":{"bundle":"","target":"field-year"},"field-dayOfYear":"Day Of Year","dateFormat-medium":"G y MMM d","days-standAlone-short@localeAlias212":{"bundle":"gregorian","target":"days-format-short"},"field-month-narrow@localeAlias245":{"bundle":"","target":"field-month-short"},"days-standAlone-short@localeAlias213":{"bundle":"gregorian","target":"days-format-abbr"},"dateTimeFormat-short":"{1} {0}","field-month-narrow@localeAlias246":{"bundle":"","target":"field-month"},"days-standAlone-short@localeAlias214":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-MEd":"MM-dd, E","field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","field-month-short":"Month","dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","field-weekOfMonth-short@localeAlias250":{"bundle":"","target":"field-weekOfMonth"},"dateFormatItem-Bh":"h B","months-format-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","field-sat-short@localeAlias283":{"bundle":"","target":"field-sat"},"days-format-abbr@localeAlias206":{"bundle":"gregorian","target":"days-format-wide"},"months-standAlone-wide@localeAlias204":{"bundle":"coptic","target":"months-format-wide"},"days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","field-month-narrow":"Month","dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"last month","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekday-short":"Day of the Week","field-day-narrow-relative+-1":"yesterday","field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-day-short@localeAlias253":{"bundle":"","target":"field-day"},"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-EHm":"E HH:mm","field-month-short@localeAlias244":{"bundle":"","target":"field-month"},"field-quarter-narrow":"Quarter","field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","months-format-abbr@localeAlias200":{"bundle":"coptic","target":"months-format-wide"},"field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","days-format-narrow@localeAlias207":{"bundle":"gregorian","target":"days-standAlone-narrow"},"field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","timeFormat-medium":"HH:mm:ss","field-dayOfYear-narrow@localeAlias257":{"bundle":"","target":"field-dayOfYear-short"},"field-weekday-short@localeAlias259":{"bundle":"","target":"field-weekday"},"field-dayOfYear-narrow@localeAlias258":{"bundle":"","target":"field-dayOfYear"},"field-quarter-short-relative+0":"this quarter","field-mon-narrow@localeAlias269":{"bundle":"","target":"field-mon-short"},"field-quarter-short-relative+1":"next quarter","dateFormatItem-Ed":"d, E","field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-standAlone-wide-am":"AM","field-fri-relative+-1":"last Friday","field-mon-narrow@localeAlias270":{"bundle":"","target":"field-mon"},"field-sun-narrow@localeAlias266":{"bundle":"","target":"field-sun-short"},"field-sun-narrow@localeAlias267":{"bundle":"","target":"field-sun"},"field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-short":"Day","field-dayperiod":"Dayperiod","field-hour-short":"Hour","months-standAlone-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","dayPeriods@localeAlias222":{"bundle":"gregorian","target":"dayPeriods"},"field-week-short-relative+-1":"last week","dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-weekdayOfMonth":"Weekday Of Month","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-GyMMMEd":"G y MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","field-year-narrow-relative+0":"this year","field-year-narrow-relative+1":"next year","dateFormatItem-Gy":"G y","field-zone-narrow":"Zone","dateFormatItem-yyyyM":"GGGGG y-MM","field-tue-relative+-1":"last Tuesday","field-minute-short":"Minute","field-week-narrow@localeAlias248":{"bundle":"","target":"field-week-short"},"field-week-narrow@localeAlias249":{"bundle":"","target":"field-week"},"field-era-narrow@localeAlias236":{"bundle":"","target":"field-era-short"},"field-era-narrow@localeAlias237":{"bundle":"","target":"field-era"},"dateFormatItem-Hm":"HH:mm","field-weekday-narrow@localeAlias260":{"bundle":"","target":"field-weekday-short"},"field-weekday-narrow@localeAlias261":{"bundle":"","target":"field-weekday"},"field-week-relative+0":"this week","field-week-relative+1":"next week","dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","months-format-narrow@localeAlias201":{"bundle":"coptic","target":"months-standAlone-narrow"},"field-sat-narrow-relative+-1":"last Saturday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-abbr@localeAlias219":{"bundle":"gregorian","target":"quarters-format-abbr"},"field-fri-short@localeAlias280":{"bundle":"","target":"field-fri"},"field-thu-narrow@localeAlias278":{"bundle":"","target":"field-thu-short"},"field-thu-narrow@localeAlias279":{"bundle":"","target":"field-thu"},"field-month-short-relative+-1":"last month","field-hour-narrow@localeAlias290":{"bundle":"","target":"field-hour-short"},"dateFormatItem-EHms":"E HH:mm:ss","field-hour-narrow@localeAlias291":{"bundle":"","target":"field-hour"},"dateFormatItem-MMMMd":"MMMM d","eraNarrow@localeAlias231":{"bundle":"coptic","target":"eraAbbr"},"field-week":"Week","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour"},"ar":true,"cs":true,"da":true,"de":true,"el":true,"es":true,"fi":true,"fr":true,"he":true,"hu":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"ro":true,"ru":true,"sk":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/buddhist.js b/lib/dojo/cldr/nls/cs/buddhist.js
index 62baf1a96..323294ce4 100644
--- a/lib/dojo/cldr/nls/cs/buddhist.js
+++ b/lib/dojo/cldr/nls/cs/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/cs/buddhist",{"days-standAlone-short":["ne","po","út","st","čt","pá","so"],"field-second-relative+0":"nyní","field-weekday":"Den v týdnu","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-MMMEd":"E d. M.","field-tue-relative+-1":"minulé úterý","days-format-short":["ne","po","út","st","čt","pá","so"],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"minulý pátek","field-wed-relative+-1":"minulou středu","months-format-wide":["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-thu-relative+-1":"minulý čtvrtek","dateFormatItem-Md":"d. M.","field-era":"Letopočet","months-standAlone-wide":["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],"timeFormat-short":"H:mm","quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"timeFormat-long":"H:mm:ss z","field-year":"Rok","field-hour":"Hodina","months-format-abbr":["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],"field-sat-relative+0":"tuto sobotu","field-sat-relative+1":"příští sobotu","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"dnes","field-thu-relative+0":"tento čtvrtek","field-day-relative+1":"zítra","field-thu-relative+1":"příští čtvrtek","dateFormatItem-GyMMMd":"d. M. y G","field-day-relative+2":"pozítří","dateFormatItem-H":"H","months-standAlone-abbr":["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],"quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. M. y G","days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"dateFormatItem-yyyyMMM":"LLLL y G","dateFormatItem-yyyyMMMd":"d. M. y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"tuto neděli","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"příští neděli","eraAbbr":["BE"],"field-minute":"Minuta","field-dayperiod":"dop./odp.","days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"dateFormatItem-d":"d.","field-day-relative+-1":"včera","dayPeriods-format-narrow-am":"dop.","field-day-relative+-2":"předevčírem","dateFormatItem-MMMd":"d. M.","dateFormatItem-MEd":"E d. M.","field-fri-relative+0":"tento pátek","field-fri-relative+1":"příští pátek","field-day":"Den","days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-zone":"Časové pásmo","dateFormatItem-y":"y G","months-standAlone-narrow":["l","ú","b","d","k","č","č","s","z","ř","l","p"],"field-year-relative+-1":"minulý rok","field-month-relative+-1":"minulý měsíc","days-format-abbr":["ne","po","út","st","čt","pá","so"],"days-format-narrow":["N","P","Ú","S","Č","P","S"],"dateFormatItem-yyyyMd":"d. M. y GGGGG","field-month":"Měsíc","days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"field-tue-relative+0":"toto úterý","field-tue-relative+1":"příští úterý","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","dateFormat-short":"dd.MM.yy GGGGG","field-second":"Sekunda","field-sat-relative+-1":"minulou sobotu","field-sun-relative+-1":"minulou neděli","field-month-relative+0":"tento měsíc","field-month-relative+1":"příští měsíc","dateFormatItem-Ed":"E d.","field-week":"Týden","dateFormat-medium":"d. M. y G","field-year-relative+0":"tento rok","field-week-relative+-1":"minulý týden","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"příští rok","dayPeriods-format-narrow-pm":"odp.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-GyMMM":"LLLL y G","field-mon-relative+-1":"minulé pondělí","dateFormatItem-yyyy":"y G","field-week-relative+0":"tento týden","field-week-relative+1":"příští týden"}); \ No newline at end of file
+define("dojo/cldr/nls/cs/buddhist",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","timeFormat-short":"H:mm","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-thu-short-relative+0":"tento čtvrtek","field-day-short-relative+-1":"včera","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","dayPeriods-format-narrow-am":"dop.","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d. týd. v měs.","dayPeriods-format-abbr-am":"dop.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["BE"],"field-weekOfMonth":"týden v měsíci","dayPeriods-standAlone-abbr-pm":"odp.","field-month-short":"měs.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","dayPeriods-format-wide-am":"dop.","field-sat-short-relative+-1":"minulou sobotu","dateFormatItem-yyyyMMMMd":"d. MMMM y G","field-hour-relative+0":"tuto hodinu","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"dayPeriods-standAlone-wide-pm":"odp.","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. M. y G","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"days-format-narrow":["N","P","Ú","S","Č","P","S"],"dateFormatItem-yyyyMMMMEd":"E d. MMMM y G","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","dateFormatItem-GyMMM":"LLLL y G","field-month":"měsíc","field-day-narrow":"den","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dayPeriods-format-narrow-pm":"odp.","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["BE"],"dayPeriods-format-abbr-pm":"odp.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","field-quarter-relative+-1":"minulé čtvrtletí","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"část d.","dayPeriods-standAlone-narrow-am":"dop.","field-week-narrow-relative+-1":"minulý týd.","days-format-short":["ne","po","út","st","čt","pá","so"],"dayPeriods-format-wide-pm":"odp.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-minute-narrow-relative+0":"tuto minutu","field-hour":"hodina","months-format-wide":["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"minulý měsíc","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","months-format-abbr":["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],"field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"dd.MM.yy GGGGG","field-thu-short-relative+-1":"minulý čtvrtek","field-year-narrow-relative+-1":"minulý rok","days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulé pondělí","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý čtvrtek","dateFormatItem-E":"ccc","field-weekOfMonth-short":"týd. v m.","field-tue-narrow-relative+-1":"minulé úterý","dateFormatItem-H":"H","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"odp.","dateFormatItem-M":"L","field-wed-short-relative+0":"tuto středu","months-standAlone-wide":["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],"field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","dateFormatItem-MMMMEd":"E d. MMMM","days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nyní","dateFormatItem-d":"d.","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-day-short-relative+1":"zítra","field-sat-relative+0":"tuto sobotu","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","months-standAlone-abbr":["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],"dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-narrow-relative+1":"příští čtvrtek","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","dateFormatItem-yyyyMMM":"LLLL y G","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","days-standAlone-short":["ne","po","út","st","čt","pá","so"],"field-week-short-relative+-1":"minulý týd.","dateFormatItem-GyMMMMd":"d. MMMM y G","field-hour-narrow-relative+0":"tuto hodinu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","eraNarrow":"BE","field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","dateFormatItem-EHm":"E H:mm","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týd. v m.","dateFormatItem-EHms":"E H:mm:ss","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","dayPeriods-standAlone-abbr-am":"dop.","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","days-format-abbr":["ne","po","út","st","čt","pá","so"],"field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","dateFormatItem-Gy":"y G","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek","dayPeriods-standAlone-wide-am":"dop."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/chinese.js b/lib/dojo/cldr/nls/cs/chinese.js
index f15a0b3a5..695136fe9 100644
--- a/lib/dojo/cldr/nls/cs/chinese.js
+++ b/lib/dojo/cldr/nls/cs/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/cs/chinese",{"field-sat-relative+0":"tuto sobotu","field-sat-relative+1":"příští sobotu","field-dayperiod":"dop./odp.","field-sun-relative+-1":"minulou neděli","field-mon-relative+-1":"minulé pondělí","field-minute":"Minuta","field-day-relative+-1":"včera","field-weekday":"Den v týdnu","field-day-relative+-2":"předevčírem","field-era":"Letopočet","field-hour":"Hodina","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","field-wed-relative+-1":"minulou středu","field-day-relative+0":"dnes","field-day-relative+1":"zítra","field-day-relative+2":"pozítří","dateFormat-long":"d. M. y","field-tue-relative+0":"toto úterý","field-zone":"Časové pásmo","field-tue-relative+1":"příští úterý","field-week-relative+-1":"minulý týden","dateFormat-medium":"d. M. y","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-sat-relative+-1":"minulou sobotu","field-year-relative+-1":"minulý rok","field-year":"Rok","field-fri-relative+0":"tento pátek","field-fri-relative+1":"příští pátek","field-week":"Týden","field-week-relative+0":"tento týden","field-week-relative+1":"příští týden","field-month-relative+0":"tento měsíc","field-month":"Měsíc","field-month-relative+1":"příští měsíc","field-fri-relative+-1":"minulý pátek","field-second":"Sekunda","field-tue-relative+-1":"minulé úterý","field-day":"Den","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-thu-relative+0":"tento čtvrtek","field-second-relative+0":"nyní","dateFormat-short":"d. M. y","field-thu-relative+1":"příští čtvrtek","dateFormat-full":"EEEE, d. M. y","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","field-month-relative+-1":"minulý měsíc","field-thu-relative+-1":"minulý čtvrtek"}); \ No newline at end of file
+define("dojo/cldr/nls/cs/chinese",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-thu-short-relative+0":"tento čtvrtek","field-day-short-relative+-1":"včera","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","field-weekdayOfMonth-narrow":"d. týd. v měs.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"týden v měsíci","field-month-short":"měs.","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulou sobotu","field-hour-relative+0":"tuto hodinu","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","dateFormat-long":"d. M. y","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","field-month":"měsíc","field-day-narrow":"den","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dateFormat-medium":"d. M. y","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"minulé čtvrtletí","field-dayperiod-narrow":"část d.","field-week-narrow-relative+-1":"minulý týd.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","field-hour":"hodina","field-minute-narrow-relative+0":"tuto minutu","dateFormat-full":"EEEE, d. M. y","field-month-relative+-1":"minulý měsíc","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"d. M. y","field-thu-short-relative+-1":"minulý čtvrtek","field-year-narrow-relative+-1":"minulý rok","field-mon-narrow-relative+-1":"minulé pondělí","field-thu-narrow-relative+-1":"minulý čtvrtek","field-tue-narrow-relative+-1":"minulé úterý","field-weekOfMonth-short":"týd. v m.","field-wed-short-relative+0":"tuto středu","field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","field-second-narrow-relative+0":"nyní","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-sat-relative+0":"tuto sobotu","field-day-short-relative+1":"zítra","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","field-zone-narrow":"pásmo","field-thu-narrow-relative+0":"tento čtvrtek","field-thu-narrow-relative+1":"příští čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","field-week-short-relative+-1":"minulý týd.","field-hour-narrow-relative+0":"tuto hodinu","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","field-weekOfMonth-narrow":"týd. v m.","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/coptic.js b/lib/dojo/cldr/nls/cs/coptic.js
new file mode 100644
index 000000000..7db6a7275
--- /dev/null
+++ b/lib/dojo/cldr/nls/cs/coptic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/cs/coptic",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-day-short-relative+-1":"včera","field-thu-short-relative+0":"tento čtvrtek","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d. týd. v měs.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"field-weekOfMonth":"týden v měsíci","field-month-short":"měs.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulou sobotu","dateFormatItem-yyyyMMMMd":"d. MMMM y G","field-hour-relative+0":"tuto hodinu","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. M. y G","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","dateFormatItem-yyyyMMMMEd":"E d. MMMM y G","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","dateFormatItem-GyMMM":"LLLL y G","field-month":"měsíc","field-day-narrow":"den","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["ERA0","ERA1"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"minulé čtvrtletí","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"část d.","field-week-narrow-relative+-1":"minulý týd.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-hour":"hodina","field-minute-narrow-relative+0":"tuto minutu","months-format-wide":["tout","baba","hatour","kiahk","touba","amshir","baramhat","baramouda","bashans","ba’ouna","abib","mesra","nasie"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"minulý měsíc","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","months-format-abbr":["tout","baba","hatour","kiahk","touba","amshir","baramhat","baramouda","bashans","ba’ouna","abib","mesra","nasie"],"field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"dd.MM.yy GGGGG","field-year-narrow-relative+-1":"minulý rok","field-thu-short-relative+-1":"minulý čtvrtek","dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulé pondělí","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý čtvrtek","dateFormatItem-E":"ccc","field-weekOfMonth-short":"týd. v m.","field-tue-narrow-relative+-1":"minulé úterý","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","months-standAlone-wide":["tout","baba","hatour","kiahk","touba","amshir","baramhat","baramouda","bashans","ba’ouna","abib","mesra","nasie"],"field-wed-short-relative+0":"tuto středu","field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","dateFormatItem-MMMMEd":"E d. MMMM","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nyní","dateFormatItem-d":"d.","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-day-short-relative+1":"zítra","field-sat-relative+0":"tuto sobotu","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","months-standAlone-abbr":["tout","baba","hatour","kiahk","touba","amshir","baramhat","baramouda","bashans","ba’ouna","abib","mesra","nasie"],"dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-narrow-relative+1":"příští čtvrtek","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","dateFormatItem-yyyyMMM":"LLLL y G","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","field-week-short-relative+-1":"minulý týd.","dateFormatItem-GyMMMMd":"d. MMMM y G","field-hour-narrow-relative+0":"tuto hodinu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týd. v m.","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","dateFormatItem-Gy":"y G","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/currency.js b/lib/dojo/cldr/nls/cs/currency.js
index 6ed96ce41..d626ce9c3 100644
--- a/lib/dojo/cldr/nls/cs/currency.js
+++ b/lib/dojo/cldr/nls/cs/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/cs/currency",{"HKD_displayName":"hongkongský dolar","CHF_displayName":"švýcarský frank","JPY_symbol":"JP¥","CAD_displayName":"kanadský dolar","HKD_symbol":"HK$","CNY_displayName":"čínský jüan","USD_symbol":"US$","AUD_displayName":"australský dolar","JPY_displayName":"japonský jen","CAD_symbol":"CA$","USD_displayName":"americký dolar","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"britská libra","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/cs/currency",{"HKD_displayName":"hongkongský dolar","CNY_displayName":"čínský jüan","JPY_displayName":"japonský jen","JPY_symbol":"JP¥","USD_displayName":"americký dolar","CAD_symbol":"CA$","GBP_displayName":"britská libra","CHF_displayName":"švýcarský frank","CNY_symbol":"CN¥","EUR_displayName":"euro","GBP_symbol":"£","CAD_displayName":"kanadský dolar","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"australský dolar","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/dangi.js b/lib/dojo/cldr/nls/cs/dangi.js
new file mode 100644
index 000000000..57eadb81a
--- /dev/null
+++ b/lib/dojo/cldr/nls/cs/dangi.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/cs/dangi",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-thu-short-relative+0":"tento čtvrtek","field-day-short-relative+-1":"včera","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","field-weekdayOfMonth-narrow":"d. týd. v měs.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"týden v měsíci","field-month-short":"měs.","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulou sobotu","field-hour-relative+0":"tuto hodinu","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","field-month":"měsíc","field-day-narrow":"den","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"minulé čtvrtletí","field-dayperiod-narrow":"část d.","field-week-narrow-relative+-1":"minulý týd.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","field-hour":"hodina","field-minute-narrow-relative+0":"tuto minutu","months-format-wide":["První měsíc","Druhý měsíc","Třetí měsíc","Čtvrtý měsíc","Pátý měsíc","Šestý měsíc","Sedmý měsíc","Osmý měsíc","Devátý měsíc","Desátý měsíc","Jedenáctý měsíc","Dvanáctý měsíc"],"field-month-relative+-1":"minulý měsíc","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","field-thu-short-relative+-1":"minulý čtvrtek","field-year-narrow-relative+-1":"minulý rok","field-mon-narrow-relative+-1":"minulé pondělí","field-thu-narrow-relative+-1":"minulý čtvrtek","field-tue-narrow-relative+-1":"minulé úterý","field-weekOfMonth-short":"týd. v m.","field-wed-short-relative+0":"tuto středu","months-standAlone-wide":["První měsíc","Druhý měsíc","Třetí měsíc","Čtvrtý měsíc","Pátý měsíc","Šestý měsíc","Sedmý měsíc","Osmý měsíc","Devátý měsíc","Desátý měsíc","Jedenáctý měsíc","Dvanáctý měsíc"],"field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","field-second-narrow-relative+0":"nyní","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-sat-relative+0":"tuto sobotu","field-day-short-relative+1":"zítra","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","field-zone-narrow":"pásmo","field-thu-narrow-relative+0":"tento čtvrtek","field-thu-narrow-relative+1":"příští čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","field-week-short-relative+-1":"minulý týd.","field-hour-narrow-relative+0":"tuto hodinu","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","field-weekOfMonth-narrow":"týd. v m.","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/ethiopic.js b/lib/dojo/cldr/nls/cs/ethiopic.js
new file mode 100644
index 000000000..f8afc4036
--- /dev/null
+++ b/lib/dojo/cldr/nls/cs/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/cs/ethiopic",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-day-short-relative+-1":"včera","field-thu-short-relative+0":"tento čtvrtek","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d. týd. v měs.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"field-weekOfMonth":"týden v měsíci","field-month-short":"měs.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulou sobotu","dateFormatItem-yyyyMMMMd":"d. MMMM y G","field-hour-relative+0":"tuto hodinu","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. M. y G","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","dateFormatItem-yyyyMMMMEd":"E d. MMMM y G","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","dateFormatItem-GyMMM":"LLLL y G","field-month":"měsíc","field-day-narrow":"den","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["ERA0","ERA1"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"minulé čtvrtletí","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"část d.","field-week-narrow-relative+-1":"minulý týd.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-hour":"hodina","field-minute-narrow-relative+0":"tuto minutu","months-format-wide":["meskerem","tikemet","hidar","tahesas","tir","yekatit","megabit","miyaza","ginbot","sene","hamle","nehase","pagume"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"minulý měsíc","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","months-format-abbr":["meskerem","tikemet","hidar","tahesas","tir","yekatit","megabit","miyaza","ginbot","sene","hamle","nehase","pagume"],"field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"dd.MM.yy GGGGG","field-year-narrow-relative+-1":"minulý rok","field-thu-short-relative+-1":"minulý čtvrtek","dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulé pondělí","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý čtvrtek","dateFormatItem-E":"ccc","field-weekOfMonth-short":"týd. v m.","field-tue-narrow-relative+-1":"minulé úterý","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","months-standAlone-wide":["meskerem","tikemet","hidar","tahesas","tir","yekatit","megabit","miyaza","ginbot","sene","hamle","nehase","pagume"],"field-wed-short-relative+0":"tuto středu","field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","dateFormatItem-MMMMEd":"E d. MMMM","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nyní","dateFormatItem-d":"d.","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-day-short-relative+1":"zítra","field-sat-relative+0":"tuto sobotu","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","months-standAlone-abbr":["meskerem","tikemet","hidar","tahesas","tir","yekatit","megabit","miyaza","ginbot","sene","hamle","nehase","pagume"],"dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-narrow-relative+1":"příští čtvrtek","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","dateFormatItem-yyyyMMM":"LLLL y G","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","field-week-short-relative+-1":"minulý týd.","dateFormatItem-GyMMMMd":"d. MMMM y G","field-hour-narrow-relative+0":"tuto hodinu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týd. v m.","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","dateFormatItem-Gy":"y G","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/generic.js b/lib/dojo/cldr/nls/cs/generic.js
index df80fcbc2..62270ee4e 100644
--- a/lib/dojo/cldr/nls/cs/generic.js
+++ b/lib/dojo/cldr/nls/cs/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/cs/generic",{"dateFormatItem-yyyyMMMMEd":"E d. MMMM y G","field-second-relative+0":"nyní","field-weekday":"Den v týdnu","field-wed-relative+0":"tuto středu","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-MMMEd":"E d. M.","field-wed-relative+1":"příští středu","field-tue-relative+-1":"minulé úterý","dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"minulý pátek","field-wed-relative+-1":"minulou středu","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-thu-relative+-1":"minulý čtvrtek","dateFormatItem-Md":"d. M.","field-era":"Letopočet","field-year":"Rok","dateFormatItem-yyyyMMMM":"LLLL y G","field-hour":"Hodina","field-sat-relative+0":"tuto sobotu","field-sat-relative+1":"příští sobotu","field-day-relative+0":"dnes","field-day-relative+1":"zítra","field-thu-relative+0":"tento čtvrtek","dateFormatItem-GyMMMd":"d. M. y G","field-day-relative+2":"pozítří","field-thu-relative+1":"příští čtvrtek","dateFormatItem-H":"H","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. M. y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"LLLL y G","dateFormatItem-yyyyMMMd":"d. M. y G","dateFormatItem-MMMMd":"d. MMMM","dateFormatItem-GyMMMMd":"d. MMMM y G","field-sun-relative+0":"tuto neděli","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"příští neděli","field-minute":"Minuta","field-dayperiod":"dop./odp.","dateFormatItem-d":"d.","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"včera","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"předevčírem","dateFormatItem-MMMd":"d. M.","dateFormatItem-MEd":"E d. M.","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"tento pátek","field-fri-relative+1":"příští pátek","field-day":"Den","field-zone":"Časové pásmo","dateFormatItem-y":"y G","field-year-relative+-1":"minulý rok","field-month-relative+-1":"minulý měsíc","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMMMMd":"d. MMMM y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-month":"Měsíc","dateFormatItem-MMM":"LLL","field-tue-relative+0":"toto úterý","field-tue-relative+1":"příští úterý","dateFormatItem-MMMMEd":"E d. MMMM","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","dateFormat-short":"dd.MM.yy GGGGG","field-second":"Sekunda","field-sat-relative+-1":"minulou sobotu","field-sun-relative+-1":"minulou neděli","field-month-relative+0":"tento měsíc","field-month-relative+1":"příští měsíc","dateFormatItem-Ed":"E d.","field-week":"Týden","dateFormat-medium":"d. M. y G","field-year-relative+0":"tento rok","field-week-relative+-1":"minulý týden","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"příští rok","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"LLLL y G","dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-mon-relative+-1":"minulé pondělí","dateFormatItem-yyyy":"y G","field-week-relative+0":"tento týden","field-week-relative+1":"příští týden"}); \ No newline at end of file
+define("dojo/cldr/nls/cs/generic",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","dateFormatItem-ms":"mm:ss","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-day-short-relative+-1":"včera","field-thu-short-relative+0":"tento čtvrtek","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d. týd. v měs.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"týden v měsíci","field-month-short":"měs.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulou sobotu","dateFormatItem-yyyyMMMMd":"d. MMMM y G","field-hour-relative+0":"tuto hodinu","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. M. y G","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","dateFormatItem-yyyyMMMMEd":"E d. MMMM y G","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","dateFormatItem-GyMMM":"LLLL y G","field-month":"měsíc","field-day-narrow":"den","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-2":"předevčírem","field-quarter-relative+-1":"minulé čtvrtletí","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"část d.","field-week-narrow-relative+-1":"minulý týd.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-hour":"hodina","field-minute-narrow-relative+0":"tuto minutu","dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"minulý měsíc","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","dateFormatItem-Ehm":"E h:mm a","field-minute-short-relative+0":"tuto minutu","field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"dd.MM.yy GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"minulý rok","field-thu-short-relative+-1":"minulý čtvrtek","dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulé pondělí","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý čtvrtek","dateFormatItem-E":"ccc","dateFormatItem-H":"H","field-weekOfMonth-short":"týd. v m.","field-tue-narrow-relative+-1":"minulé úterý","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"tuto středu","field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","dateFormatItem-MMMMEd":"E d. MMMM","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nyní","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d.","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-day-short-relative+1":"zítra","field-sat-relative+0":"tuto sobotu","field-quarter-narrow-relative+1":"příští čtvrtletí","dateFormatItem-h":"h a","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-narrow-relative+1":"příští čtvrtek","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","dateFormatItem-yyyyMMM":"LLLL y G","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","field-week-short-relative+-1":"minulý týd.","dateFormatItem-GyMMMMd":"d. MMMM y G","field-hour-narrow-relative+0":"tuto hodinu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","field-mon-narrow-relative+0":"toto pondělí","dateFormatItem-EHm":"E H:mm","field-mon-narrow-relative+1":"příští pondělí","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týd. v m.","dateFormatItem-EHms":"E H:mm:ss","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","dateFormatItem-Gy":"y G","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/gregorian.js b/lib/dojo/cldr/nls/cs/gregorian.js
index 62d97bac9..4bc94d8f2 100644
--- a/lib/dojo/cldr/nls/cs/gregorian.js
+++ b/lib/dojo/cldr/nls/cs/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/cs/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["ne","po","út","st","čt","pá","so"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"nyní","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Den v týdnu","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d. M. y","field-wed-relative+0":"tuto středu","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-MMMEd":"E d. M.","field-wed-relative+1":"příští středu","eraNarrow":["př.n.l.","n.l.","n. l."],"field-tue-relative+-1":"minulé úterý","days-format-short":["ne","po","út","st","čt","pá","so"],"dateFormat-long":"d. MMMM y","field-fri-relative+-1":"minulý pátek","field-wed-relative+-1":"minulou středu","months-format-wide":["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-yMMMMd":"d. MMMM y","dayPeriods-format-wide-pm":"odpoledne","dateFormat-full":"EEEE d. MMMM y","field-thu-relative+-1":"minulý čtvrtek","dateFormatItem-Md":"d. M.","dateFormatItem-yMd":"d. M. y","dateFormatItem-yM":"M/y","field-era":"Letopočet","months-standAlone-wide":["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],"timeFormat-short":"H:mm","quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"timeFormat-long":"H:mm:ss z","dateFormatItem-yMMM":"LLLL y","dateFormatItem-yQQQQ":"QQQQ y","field-year":"Rok","field-hour":"Hodina","months-format-abbr":["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],"field-sat-relative+0":"tuto sobotu","field-sat-relative+1":"příští sobotu","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"dnes","field-day-relative+1":"zítra","field-thu-relative+0":"tento čtvrtek","dateFormatItem-GyMMMd":"d. M. y G","field-day-relative+2":"pozítří","field-thu-relative+1":"příští čtvrtek","dateFormatItem-H":"H","months-standAlone-abbr":["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"dateFormatItem-MMMMd":"d. MMMM","dateFormatItem-GyMMMMd":"d. MMMM y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"tuto neděli","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-sun-relative+1":"příští neděli","eraAbbr":["př. n. l.","n. l."],"field-minute":"Minuta","field-dayperiod":"dop./odp.","days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"včera","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"dop.","field-day-relative+-2":"předevčírem","dateFormatItem-MMMd":"d. M.","dateFormatItem-MEd":"E d. M.","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"tento pátek","dateFormatItem-yMMMM":"LLLL y","field-fri-relative+1":"příští pátek","field-day":"Den","days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-zone":"Časové pásmo","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"minulý rok","field-month-relative+-1":"minulý měsíc","dateFormatItem-hm":"h:mm a","days-format-abbr":["ne","po","út","st","čt","pá","so"],"eraNames":["př. n. l.","n. l."],"dateFormatItem-yMMMd":"d. M. y","days-format-narrow":["N","P","Ú","S","Č","P","S"],"days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"dateFormatItem-MMM":"LLL","field-month":"Měsíc","field-tue-relative+0":"toto úterý","field-tue-relative+1":"příští úterý","dayPeriods-format-wide-am":"dopoledne","dateFormatItem-MMMMEd":"E d. MMMM","dateFormatItem-EHm":"E H:mm","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","dateFormat-short":"dd.MM.yy","dateFormatItem-EHms":"E H:mm:ss","dateFormatItem-yMMMMEd":"E d. MMMM y","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"Sekunda","field-sat-relative+-1":"minulou sobotu","dateFormatItem-yMMMEd":"E d. M. y","field-sun-relative+-1":"minulou neděli","field-month-relative+0":"tento měsíc","field-month-relative+1":"příští měsíc","dateFormatItem-Ed":"E d.","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Týden","dateFormat-medium":"d. M. y","field-year-relative+0":"tento rok","field-week-relative+-1":"minulý týden","field-year-relative+1":"příští rok","dayPeriods-format-narrow-pm":"odp.","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"LLLL y G","dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-mon-relative+-1":"minulé pondělí","field-week-relative+0":"tento týden","field-week-relative+1":"příští týden"}); \ No newline at end of file
+define("dojo/cldr/nls/cs/gregorian",{"dateFormatItem-yMMMM":"LLLL y","field-thu-narrow-relative+0":"tento čtvrtek","field-thu-narrow-relative+1":"příští čtvrtek","field-sun-narrow-relative+0":"tuto neděli","field-sun-narrow-relative+1":"příští neděli","months-format-wide":["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],"dayPeriods-standAlone-abbr-pm":"odp.","dateFormatItem-Hms":"H:mm:ss","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek","eraNarrow":["př.n.l.","n.l."],"dateFormatItem-Hmv":"H:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d. M. y","dayPeriods-format-abbr-night1":"v n.","dayPeriods-format-narrow-evening1":"v.","days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"dayPeriods-format-abbr-afternoon1":"odp.","dayPeriods-format-wide-evening1":"večer","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"minulou středu","dayPeriods-standAlone-wide-evening1":"večer","field-minute-narrow-relative+0":"tuto minutu","days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"več.","dayPeriods-standAlone-abbr-afternoon1":"odpoledne","field-thu-relative+0":"tento čtvrtek","dayPeriods-standAlone-abbr-night1":"noc","field-thu-relative+1":"příští čtvrtek","dayPeriods-format-wide-am":"dop.","field-fri-relative+0":"tento pátek","field-fri-relative+1":"příští pátek","dateFormatItem-yMd":"d. M. y","field-thu-narrow-relative+-1":"minulý čtvrtek","field-quarter-relative+0":"toto čtvrtletí","field-quarter-relative+1":"příští čtvrtletí","field-sun-short-relative+0":"tuto neděli","timeFormat-short":"H:mm","field-sun-short-relative+1":"příští neděli","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"o.","dateFormatItem-Md":"d. M.","dateFormatItem-Hmsv":"H:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"týd.","field-hour-relative+0":"tuto hodinu","field-day-relative+-1":"včera","field-day-relative+-2":"předevčírem","field-mon-narrow-relative+-1":"minulé pondělí","field-minute-narrow":"min","dateFormatItem-MMMMEd":"E d. MMMM","dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-thu-short-relative+0":"tento čtvrtek","field-mon-relative+0":"toto pondělí","field-thu-short-relative+1":"příští čtvrtek","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+0":"dnes","field-era-short":"letop.","field-day-narrow-relative+1":"zítra","field-sat-narrow-relative+0":"tuto sobotu","field-day-narrow-relative+2":"pozítří","timeFormat-long":"H:mm:ss z","field-sat-narrow-relative+1":"příští sobotu","field-week-narrow-relative+0":"tento týd.","field-week-narrow-relative+1":"příští týd.","field-hour-short-relative+0":"tuto hodinu","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-month":"měsíc","months-standAlone-wide":["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],"field-weekday-narrow":"d. v týd.","dayPeriods-standAlone-narrow-afternoon1":"odp.","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","dayPeriods-format-abbr-evening1":"več.","dayPeriods-format-abbr-noon":"pol.","dayPeriods-format-narrow-midnight":"půl.","dayPeriods-format-wide-midnight":"půlnoc","field-tue-relative+0":"toto úterý","dateFormatItem-GyMMMMd":"d. MMMM y G","field-tue-relative+1":"příští úterý","dayPeriods-standAlone-abbr-evening1":"večer","field-minute-short-relative+0":"tuto minutu","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"půlnoc","field-year-narrow":"r.","dayPeriods-standAlone-abbr-noon":"poledne","field-tue-short-relative+0":"toto úterý","dayPeriods-standAlone-narrow-midnight":"půl.","field-tue-short-relative+1":"příští úterý","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"H","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","dateFormatItem-M":"L","field-wed-short-relative+0":"tuto středu","field-fri-short-relative+0":"tento pátek","field-wed-short-relative+1":"příští středu","field-fri-short-relative+1":"příští pátek","field-weekOfMonth-short":"týd. v m.","field-quarter-short-relative+-1":"minulé čtvrtletí","field-year-short-relative+-1":"minulý rok","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"v noci","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"minulé čtvrtletí","dateFormatItem-d":"d.","dayPeriods-format-abbr-pm":"odp.","dateFormatItem-h":"h a","quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"field-weekOfMonth-narrow":"týd. v m.","dateFormatItem-y":"y","field-minute-relative+0":"tuto minutu","field-year-short-relative+0":"tento rok","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"příští rok","field-weekday":"den v týdnu","dayPeriods-format-narrow-pm":"odp.","field-tue-narrow-relative+-1":"minulé úterý","dateFormatItem-yMEd":"E d. M. y","dayPeriods-standAlone-wide-night1":"noc","field-year-narrow-relative+-1":"minulý rok","field-sat-relative+-1":"minulou sobotu","dayPeriods-format-abbr-midnight":"půln.","dayPeriods-format-narrow-morning1":"r.","dayPeriods-format-narrow-morning2":"d.","dayPeriods-format-wide-morning1":"ráno","dayPeriods-format-wide-morning2":"dopoledne","dayPeriods-standAlone-abbr-midnight":"půlnoc","dayPeriods-standAlone-narrow-pm":"odp.","dayPeriods-standAlone-wide-morning1":"ráno","field-mon-narrow-relative+0":"toto pondělí","dayPeriods-standAlone-wide-morning2":"dopoledne","field-mon-narrow-relative+1":"příští pondělí","field-second":"sekunda","dateFormatItem-yMMMEd":"E d. M. y","field-year-relative+-1":"minulý rok","field-weekdayOfMonth-short":"den týd. v měs.","dateFormat-short":"dd.MM.yy","eraNames":["před naším letopočtem","našeho letopočtu"],"field-second-short":"s","field-thu-short-relative+-1":"minulý čtvrtek","field-zone":"časové pásmo","field-dayperiod-narrow":"část d.","field-sun-short-relative+-1":"minulou neděli","dayPeriods-standAlone-narrow-morning1":"ráno","dayPeriods-standAlone-narrow-morning2":"dop.","eraAbbr":["př. n. l.","n. l."],"field-week-short":"týd.","dayPeriods-standAlone-abbr-am":"dop.","dayPeriods-standAlone-wide-pm":"odp.","dateFormatItem-ms":"mm:ss","field-day-relative+0":"dnes","field-day-relative+1":"zítra","field-day-relative+2":"pozítří","field-day-short-relative+0":"dnes","field-dayOfYear-short":"den v r.","field-day-short-relative+1":"zítra","dateFormat-long":"d. MMMM y","field-day-short-relative+2":"pozítří","field-sun-narrow-relative+-1":"minulou neděli","dayPeriods-format-wide-noon":"poledne","field-second-relative+0":"nyní","field-quarter-relative+-1":"minulé čtvrtletí","dayPeriods-format-narrow-night1":"n.","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-standAlone-wide-noon":"poledne","dayPeriods-standAlone-narrow-night1":"noc","field-week-relative+-1":"minulý týden","dayPeriods-format-abbr-morning1":"r.","field-month-relative+-1":"minulý měsíc","dayPeriods-format-abbr-morning2":"dop.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"rok","field-era":"letopočet","dayPeriods-standAlone-abbr-morning1":"ráno","dayPeriods-standAlone-abbr-morning2":"dopoledne","days-standAlone-short":["ne","po","út","st","čt","pá","so"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"včera","field-day-short-relative+-2":"předevčírem","dateFormatItem-GyMMM":"LLLL y G","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"hodina","field-dayOfYear-narrow":"d. v r.","field-second-narrow-relative+0":"nyní","field-quarter":"čtvrtletí","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-day":"den","field-mon-relative+-1":"minulé pondělí","field-dayOfYear":"den v roce","dateFormat-medium":"d. M. y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"LLLL y","dateFormatItem-GyMMMd":"d. M. y G","dateFormatItem-MEd":"E d. M.","field-tue-short-relative+-1":"minulé úterý","field-year-short":"r.","field-month-short":"měs.","dateFormatItem-MMMEd":"E d. M.","dayPeriods-format-wide-afternoon1":"odpoledne","dateFormatItem-MMMd":"d. M.","dateFormatItem-Bh":"h B","months-format-abbr":["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],"dayPeriods-format-abbr-am":"dop.","field-sat-relative+0":"tuto sobotu","field-sat-relative+1":"příští sobotu","dayPeriods-format-wide-pm":"odp.","days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"field-zone-short":"čas. pásmo","field-week-short-relative+0":"tento týd.","dateFormatItem-yMMMMd":"d. MMMM y","field-week-short-relative+1":"příští týd.","dayPeriods-standAlone-wide-afternoon1":"odpoledne","field-fri-short-relative+-1":"minulý pátek","field-month-narrow":"měs.","dayPeriods-format-narrow-am":"dop.","field-month-narrow-relative+-1":"minulý měs.","days-format-abbr":["ne","po","út","st","čt","pá","so"],"field-weekday-short":"den v týd.","field-day-narrow-relative+-1":"včera","field-day-narrow-relative+-2":"předevčírem","field-quarter-short":"Q","days-format-short":["ne","po","út","st","čt","pá","so"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-narrow":["N","P","Ú","S","Č","P","S"],"dateFormatItem-EHm":"E H:mm","field-quarter-narrow":"Q","field-mon-short-relative+0":"toto pondělí","field-mon-short-relative+1":"příští pondělí","field-dayperiod-short":"část dne","dayPeriods-standAlone-narrow-am":"dop.","field-week-narrow-relative+-1":"minulý týd.","field-thu-relative+-1":"minulý čtvrtek","field-fri-narrow-relative+-1":"minulý pátek","field-mon-short-relative+-1":"minulé pondělí","timeFormat-medium":"H:mm:ss","field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","dateFormatItem-Ed":"E d.","field-wed-relative+-1":"minulou středu","field-weekOfMonth":"týden v měsíci","field-weekdayOfMonth-narrow":"d. týd. v měs.","dayPeriods-standAlone-wide-am":"dop.","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"minulý pátek","field-minute":"minuta","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"nyní","quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"field-day-short":"den","field-dayperiod":"část dne","field-hour-short":"h","months-standAlone-abbr":["led","úno","bře","dub","kvě","čvn","čvc","srp","zář","říj","lis","pro"],"field-month-relative+0":"tento měsíc","field-second-narrow":"s","field-month-relative+1":"příští měsíc","dateFormat-full":"EEEE d. MMMM y","field-era-narrow":"let.","field-sat-short-relative+-1":"minulou sobotu","dayPeriods-format-narrow-noon":"pol.","field-week-short-relative+-1":"minulý týd.","dateFormatItem-yMMMMEd":"E d. MMMM y","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"M/y","field-sun-relative+-1":"minulou neděli","field-wed-short-relative+-1":"minulou středu","field-weekdayOfMonth":"den týdne v měsíci","field-quarter-narrow-relative+0":"toto čtvrtletí","dateFormatItem-GyMMMEd":"E d. M. y G","field-quarter-narrow-relative+1":"příští čtvrtletí","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","field-hour-narrow":"h","field-year-narrow-relative+0":"tento rok","field-year-narrow-relative+1":"příští rok","dateFormatItem-Gy":"y G","field-zone-narrow":"pásmo","dayPeriods-standAlone-narrow-noon":"pol.","field-tue-relative+-1":"minulé úterý","field-minute-short":"min","dateFormatItem-yw":"w. 'týden' 'roku' Y","dateFormatItem-Hm":"H:mm","field-week-relative+0":"tento týden","field-week-relative+1":"příští týden","dateFormatItem-MMM":"LLL","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","field-sat-narrow-relative+-1":"minulou sobotu","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dateFormatItem-MMMMW":"W. 'týden' MMMM","field-month-short-relative+-1":"minulý měs.","dateFormatItem-EHms":"E H:mm:ss","dateFormatItem-MMMMd":"d. MMMM","field-week":"týden","field-day-narrow":"den","field-hour-narrow-relative+0":"tuto hodinu"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/hebrew.js b/lib/dojo/cldr/nls/cs/hebrew.js
index d4048b439..3fff2d576 100644
--- a/lib/dojo/cldr/nls/cs/hebrew.js
+++ b/lib/dojo/cldr/nls/cs/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/cs/hebrew",{"days-standAlone-short":["ne","po","út","st","čt","pá","so"],"field-second-relative+0":"nyní","field-weekday":"Den v týdnu","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-MMMEd":"E d. M.","field-tue-relative+-1":"minulé úterý","days-format-short":["ne","po","út","st","čt","pá","so"],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"minulý pátek","field-wed-relative+-1":"minulou středu","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-thu-relative+-1":"minulý čtvrtek","dateFormatItem-Md":"d. M.","field-era":"Letopočet","timeFormat-short":"H:mm","quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"timeFormat-long":"H:mm:ss z","field-year":"Rok","field-hour":"Hodina","field-sat-relative+0":"tuto sobotu","field-sat-relative+1":"příští sobotu","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"dnes","field-thu-relative+0":"tento čtvrtek","field-day-relative+1":"zítra","field-thu-relative+1":"příští čtvrtek","dateFormatItem-GyMMMd":"d. M. y G","field-day-relative+2":"pozítří","dateFormatItem-H":"H","quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. M. y G","days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"dateFormatItem-yyyyMMM":"LLLL y G","dateFormatItem-yyyyMMMd":"d. M. y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"tuto neděli","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"příští neděli","eraAbbr":["AM"],"field-minute":"Minuta","field-dayperiod":"dop./odp.","days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"dateFormatItem-d":"d.","field-day-relative+-1":"včera","dayPeriods-format-narrow-am":"dop.","field-day-relative+-2":"předevčírem","dateFormatItem-MMMd":"d. M.","dateFormatItem-MEd":"E d. M.","field-fri-relative+0":"tento pátek","field-fri-relative+1":"příští pátek","field-day":"Den","days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-zone":"Časové pásmo","dateFormatItem-y":"y G","field-year-relative+-1":"minulý rok","field-month-relative+-1":"minulý měsíc","days-format-abbr":["ne","po","út","st","čt","pá","so"],"days-format-narrow":["N","P","Ú","S","Č","P","S"],"dateFormatItem-yyyyMd":"d. M. y GGGGG","field-month":"Měsíc","days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"field-tue-relative+0":"toto úterý","field-tue-relative+1":"příští úterý","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","dateFormat-short":"dd.MM.yy GGGGG","field-second":"Sekunda","field-sat-relative+-1":"minulou sobotu","field-sun-relative+-1":"minulou neděli","field-month-relative+0":"tento měsíc","field-month-relative+1":"příští měsíc","dateFormatItem-Ed":"E d.","field-week":"Týden","dateFormat-medium":"d. M. y G","field-year-relative+0":"tento rok","field-week-relative+-1":"minulý týden","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"příští rok","dayPeriods-format-narrow-pm":"odp.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-GyMMM":"LLLL y G","field-mon-relative+-1":"minulé pondělí","dateFormatItem-yyyy":"y G","field-week-relative+0":"tento týden","field-week-relative+1":"příští týden"}); \ No newline at end of file
+define("dojo/cldr/nls/cs/hebrew",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","timeFormat-short":"H:mm","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-thu-short-relative+0":"tento čtvrtek","field-day-short-relative+-1":"včera","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","dayPeriods-format-narrow-am":"dop.","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d. týd. v měs.","dayPeriods-format-abbr-am":"dop.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["AM"],"field-weekOfMonth":"týden v měsíci","dayPeriods-standAlone-abbr-pm":"odp.","field-month-short":"měs.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","dayPeriods-format-wide-am":"dop.","field-sat-short-relative+-1":"minulou sobotu","dateFormatItem-yyyyMMMMd":"d. MMMM y G","field-hour-relative+0":"tuto hodinu","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"dayPeriods-standAlone-wide-pm":"odp.","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. M. y G","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"days-format-narrow":["N","P","Ú","S","Č","P","S"],"dateFormatItem-yyyyMMMMEd":"E d. MMMM y G","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","dateFormatItem-GyMMM":"LLLL y G","field-month":"měsíc","field-day-narrow":"den","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dayPeriods-format-narrow-pm":"odp.","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["AM"],"dayPeriods-format-abbr-pm":"odp.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"minulé čtvrtletí","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"část d.","dayPeriods-standAlone-narrow-am":"dop.","field-week-narrow-relative+-1":"minulý týd.","days-format-short":["ne","po","út","st","čt","pá","so"],"dayPeriods-format-wide-pm":"odp.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-minute-narrow-relative+0":"tuto minutu","field-hour":"hodina","months-format-wide":["tišri","chešvan","kislev","tevet","ševat","adar I","adar","nisan","ijar","sivan","tamuz","av","elul"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"minulý měsíc","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","months-format-abbr":["tišri","chešvan","kislev","tevet","ševat","adar I","adar","nisan","ijar","sivan","tamuz","av","elul"],"field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"dd.MM.yy GGGGG","field-thu-short-relative+-1":"minulý čtvrtek","field-year-narrow-relative+-1":"minulý rok","dateFormatItem-yyyyMMMEd":"E d. M. y G","days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-mon-narrow-relative+-1":"minulé pondělí","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý čtvrtek","dateFormatItem-E":"ccc","field-weekOfMonth-short":"týd. v m.","field-tue-narrow-relative+-1":"minulé úterý","dateFormatItem-H":"H","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"odp.","dateFormatItem-M":"L","months-standAlone-wide":["tišri","chešvan","kislev","tevet","ševat","adar I","adar","nisan","ijar","sivan","tamuz","av","elul"],"field-wed-short-relative+0":"tuto středu","field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","dateFormatItem-MMMMEd":"E d. MMMM","days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nyní","months-format-abbr-leap":"adar II","dateFormatItem-d":"d.","field-weekday":"den v týdnu","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-day-short-relative+1":"zítra","field-sat-relative+0":"tuto sobotu","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","months-standAlone-abbr":["tišri","chešvan","kislev","tevet","ševat","adar I","adar","nisan","ijar","sivan","tamuz","av","elul"],"months-format-wide-leap":"adar II","months-format-narrow-leap":"7","dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-narrow-relative+1":"příští čtvrtek","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","dateFormatItem-yyyyMMM":"LLLL y G","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","days-standAlone-short":["ne","po","út","st","čt","pá","so"],"field-week-short-relative+-1":"minulý týd.","months-standAlone-abbr-leap":"adar II","dateFormatItem-GyMMMMd":"d. MMMM y G","field-hour-narrow-relative+0":"tuto hodinu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","eraNarrow":"AM","field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","dateFormatItem-EHm":"E H:mm","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týd. v m.","dateFormatItem-EHms":"E H:mm:ss","field-weekday-narrow":"d. v týd.","months-standAlone-wide-leap":"adar II","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","dayPeriods-standAlone-abbr-am":"dop.","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","days-format-abbr":["ne","po","út","st","čt","pá","so"],"field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","dateFormatItem-Gy":"y G","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek","dayPeriods-standAlone-wide-am":"dop."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/indian.js b/lib/dojo/cldr/nls/cs/indian.js
new file mode 100644
index 000000000..a8aa950c1
--- /dev/null
+++ b/lib/dojo/cldr/nls/cs/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/cs/indian",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-day-short-relative+-1":"včera","field-thu-short-relative+0":"tento čtvrtek","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d. týd. v měs.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Šaka"],"field-weekOfMonth":"týden v měsíci","field-month-short":"měs.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulou sobotu","dateFormatItem-yyyyMMMMd":"d. MMMM y G","field-hour-relative+0":"tuto hodinu","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. M. y G","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","dateFormatItem-yyyyMMMMEd":"E d. MMMM y G","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","dateFormatItem-GyMMM":"LLLL y G","field-month":"měsíc","field-day-narrow":"den","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["Šaka"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"minulé čtvrtletí","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"část d.","field-week-narrow-relative+-1":"minulý týd.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-hour":"hodina","field-minute-narrow-relative+0":"tuto minutu","months-format-wide":["čaitra","vaišákh","džjéšth","ášádh","šrávana","bhádrapad","ášvin","kártik","agrahajana","pauš","mágh","phálgun"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"minulý měsíc","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","months-format-abbr":["čaitra","vaišákh","džjéšth","ášádh","šrávana","bhádrapad","ášvin","kártik","agrahajana","pauš","mágh","phálgun"],"field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"dd.MM.yy GGGGG","field-year-narrow-relative+-1":"minulý rok","field-thu-short-relative+-1":"minulý čtvrtek","dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulé pondělí","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý čtvrtek","dateFormatItem-E":"ccc","field-weekOfMonth-short":"týd. v m.","field-tue-narrow-relative+-1":"minulé úterý","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","months-standAlone-wide":["čaitra","vaišákh","džjéšth","ášádh","šrávana","bhádrapad","ášvin","kártik","agrahajana","pauš","mágh","phálgun"],"field-wed-short-relative+0":"tuto středu","field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","dateFormatItem-MMMMEd":"E d. MMMM","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nyní","dateFormatItem-d":"d.","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-day-short-relative+1":"zítra","field-sat-relative+0":"tuto sobotu","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","months-standAlone-abbr":["čaitra","vaišákh","džjéšth","ášádh","šrávana","bhádrapad","ášvin","kártik","agrahajana","pauš","mágh","phálgun"],"dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-narrow-relative+1":"příští čtvrtek","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","dateFormatItem-yyyyMMM":"LLLL y G","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","field-week-short-relative+-1":"minulý týd.","dateFormatItem-GyMMMMd":"d. MMMM y G","field-hour-narrow-relative+0":"tuto hodinu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","eraNarrow":"Šaka","field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týd. v m.","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","dateFormatItem-Gy":"y G","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/islamic.js b/lib/dojo/cldr/nls/cs/islamic.js
index 6d803c7a4..4d333fe93 100644
--- a/lib/dojo/cldr/nls/cs/islamic.js
+++ b/lib/dojo/cldr/nls/cs/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/cs/islamic",{"days-standAlone-short":["ne","po","út","st","čt","pá","so"],"field-second-relative+0":"nyní","field-weekday":"Den v týdnu","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-MMMEd":"E d. M.","field-tue-relative+-1":"minulé úterý","days-format-short":["ne","po","út","st","čt","pá","so"],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"minulý pátek","field-wed-relative+-1":"minulou středu","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-thu-relative+-1":"minulý čtvrtek","dateFormatItem-Md":"d. M.","field-era":"Letopočet","timeFormat-short":"H:mm","quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"timeFormat-long":"H:mm:ss z","field-year":"Rok","field-hour":"Hodina","field-sat-relative+0":"tuto sobotu","field-sat-relative+1":"příští sobotu","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"dnes","field-thu-relative+0":"tento čtvrtek","field-day-relative+1":"zítra","field-thu-relative+1":"příští čtvrtek","dateFormatItem-GyMMMd":"d. M. y G","field-day-relative+2":"pozítří","dateFormatItem-H":"H","quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. M. y G","days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"dateFormatItem-yyyyMMM":"LLLL y G","dateFormatItem-yyyyMMMd":"d. M. y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"tuto neděli","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"příští neděli","eraAbbr":["AH"],"field-minute":"Minuta","field-dayperiod":"dop./odp.","days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"dateFormatItem-d":"d.","field-day-relative+-1":"včera","dayPeriods-format-narrow-am":"dop.","field-day-relative+-2":"předevčírem","dateFormatItem-MMMd":"d. M.","dateFormatItem-MEd":"E d. M.","field-fri-relative+0":"tento pátek","field-fri-relative+1":"příští pátek","field-day":"Den","days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-zone":"Časové pásmo","dateFormatItem-y":"y G","field-year-relative+-1":"minulý rok","field-month-relative+-1":"minulý měsíc","days-format-abbr":["ne","po","út","st","čt","pá","so"],"days-format-narrow":["N","P","Ú","S","Č","P","S"],"dateFormatItem-yyyyMd":"d. M. y GGGGG","field-month":"Měsíc","days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"field-tue-relative+0":"toto úterý","field-tue-relative+1":"příští úterý","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","dateFormat-short":"dd.MM.yy GGGGG","field-second":"Sekunda","field-sat-relative+-1":"minulou sobotu","field-sun-relative+-1":"minulou neděli","field-month-relative+0":"tento měsíc","field-month-relative+1":"příští měsíc","dateFormatItem-Ed":"E d.","field-week":"Týden","dateFormat-medium":"d. M. y G","field-year-relative+0":"tento rok","field-week-relative+-1":"minulý týden","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"příští rok","dayPeriods-format-narrow-pm":"odp.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-GyMMM":"LLLL y G","field-mon-relative+-1":"minulé pondělí","dateFormatItem-yyyy":"y G","field-week-relative+0":"tento týden","field-week-relative+1":"příští týden"}); \ No newline at end of file
+define("dojo/cldr/nls/cs/islamic",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","timeFormat-short":"H:mm","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-thu-short-relative+0":"tento čtvrtek","field-day-short-relative+-1":"včera","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","dayPeriods-format-narrow-am":"dop.","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d. týd. v měs.","dayPeriods-format-abbr-am":"dop.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AH"],"field-weekOfMonth":"týden v měsíci","dayPeriods-standAlone-abbr-pm":"odp.","field-month-short":"měs.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","dayPeriods-format-wide-am":"dop.","field-sat-short-relative+-1":"minulou sobotu","dateFormatItem-yyyyMMMMd":"d. MMMM y G","field-hour-relative+0":"tuto hodinu","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"dayPeriods-standAlone-wide-pm":"odp.","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. M. y G","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"days-format-narrow":["N","P","Ú","S","Č","P","S"],"dateFormatItem-yyyyMMMMEd":"E d. MMMM y G","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","dateFormatItem-GyMMM":"LLLL y G","field-month":"měsíc","field-day-narrow":"den","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dayPeriods-format-narrow-pm":"odp.","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["AH"],"dayPeriods-format-abbr-pm":"odp.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"minulé čtvrtletí","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"část d.","dayPeriods-standAlone-narrow-am":"dop.","field-week-narrow-relative+-1":"minulý týd.","days-format-short":["ne","po","út","st","čt","pá","so"],"dayPeriods-format-wide-pm":"odp.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-minute-narrow-relative+0":"tuto minutu","field-hour":"hodina","months-format-wide":["muharrem","safar","rebí’u l-awwal","rebí’u s-sání","džumádá al-úlá","džumádá al-áchira","redžeb","ša’bán","ramadán","šawwal","zú l-ka’da","zú l-hidždža"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"minulý měsíc","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","months-format-abbr":["muh.","saf.","reb. I","reb. II","džum. I","džum. II","red.","ša.","ram.","šaw.","zú l-k.","zú l-h."],"field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"dd.MM.yy GGGGG","field-thu-short-relative+-1":"minulý čtvrtek","field-year-narrow-relative+-1":"minulý rok","dateFormatItem-yyyyMMMEd":"E d. M. y G","days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-mon-narrow-relative+-1":"minulé pondělí","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý čtvrtek","dateFormatItem-E":"ccc","field-weekOfMonth-short":"týd. v m.","field-tue-narrow-relative+-1":"minulé úterý","dateFormatItem-H":"H","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"odp.","dateFormatItem-M":"L","months-standAlone-wide":["muharrem","safar","rebí’u l-awwal","rebí’u s-sání","džumádá al-úlá","džumádá al-áchira","redžeb","ša’bán","ramadán","šawwal","zú l-ka’da","zú l-hidždža"],"field-wed-short-relative+0":"tuto středu","field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","dateFormatItem-MMMMEd":"E d. MMMM","days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nyní","dateFormatItem-d":"d.","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-day-short-relative+1":"zítra","field-sat-relative+0":"tuto sobotu","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","months-standAlone-abbr":["muh.","saf.","reb. I","reb. II","džum. I","džum. II","red.","ša.","ram.","šaw.","zú l-k.","zú l-h."],"dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-narrow-relative+1":"příští čtvrtek","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","dateFormatItem-yyyyMMM":"LLLL y G","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","days-standAlone-short":["ne","po","út","st","čt","pá","so"],"field-week-short-relative+-1":"minulý týd.","dateFormatItem-GyMMMMd":"d. MMMM y G","field-hour-narrow-relative+0":"tuto hodinu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","eraNarrow":"AH","field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","dateFormatItem-EHm":"E H:mm","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týd. v m.","dateFormatItem-EHms":"E H:mm:ss","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","dayPeriods-standAlone-abbr-am":"dop.","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","days-format-abbr":["ne","po","út","st","čt","pá","so"],"field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","dateFormatItem-Gy":"y G","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek","dayPeriods-standAlone-wide-am":"dop."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/japanese.js b/lib/dojo/cldr/nls/cs/japanese.js
index a0b074fa8..2b28a91dc 100644
--- a/lib/dojo/cldr/nls/cs/japanese.js
+++ b/lib/dojo/cldr/nls/cs/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/cs/japanese",{"field-sat-relative+0":"tuto sobotu","field-sat-relative+1":"příští sobotu","field-dayperiod":"dop./odp.","field-sun-relative+-1":"minulou neděli","field-mon-relative+-1":"minulé pondělí","field-minute":"Minuta","field-day-relative+-1":"včera","field-weekday":"Den v týdnu","field-day-relative+-2":"předevčírem","field-era":"Letopočet","field-hour":"Hodina","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","field-wed-relative+-1":"minulou středu","field-day-relative+0":"dnes","field-day-relative+1":"zítra","field-day-relative+2":"pozítří","dateFormat-long":"d. MMMM y G","field-tue-relative+0":"toto úterý","field-zone":"Časové pásmo","field-tue-relative+1":"příští úterý","field-week-relative+-1":"minulý týden","dateFormat-medium":"d. M. y G","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-sat-relative+-1":"minulou sobotu","field-year-relative+-1":"minulý rok","field-year":"Rok","field-fri-relative+0":"tento pátek","field-fri-relative+1":"příští pátek","field-week":"Týden","field-week-relative+0":"tento týden","field-week-relative+1":"příští týden","field-month-relative+0":"tento měsíc","field-month":"Měsíc","field-month-relative+1":"příští měsíc","field-fri-relative+-1":"minulý pátek","field-second":"Sekunda","field-tue-relative+-1":"minulé úterý","field-day":"Den","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-thu-relative+0":"tento čtvrtek","field-second-relative+0":"nyní","dateFormat-short":"dd.MM.yy GGGGG","field-thu-relative+1":"příští čtvrtek","dateFormat-full":"EEEE, d. MMMM y G","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","field-month-relative+-1":"minulý měsíc","field-thu-relative+-1":"minulý čtvrtek"}); \ No newline at end of file
+define("dojo/cldr/nls/cs/japanese",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-day-short-relative+-1":"včera","field-thu-short-relative+0":"tento čtvrtek","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d. týd. v měs.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749-749)","Tenpyō-shōhō (749-757)","Tenpyō-hōji (757-765)","Tenpyō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770–780)","Ten-ō (781-782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857-859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kahō (1094–1096)","Eichō (1096–1097)","Jōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110-1113)","Eikyū (1113–1118)","Gen’ei (1118–1120)","Hōan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hōen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hōgen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken’ei (1206–1207)","Jōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Jōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tenpuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En’ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun’ō (1260–1261)","Kōchō (1261–1264)","Bun’ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkyō (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkō (1321–1324)","Shōchū (1324–1326)","Karyaku (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kenmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun’an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenbun (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genna (1615–1624)","Kan’ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Jōō (1652–1655)","Meireki (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenna (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan’en (1748–1751)","Hōreki (1751–1764)","Meiwa (1764–1772)","An’ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man’en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","Meiji","Taishō","Shōwa","Heisei"],"field-weekOfMonth":"týden v měsíci","field-month-short":"měs.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulou sobotu","dateFormatItem-yyyyMMMMd":"d. MMMM y G","field-hour-relative+0":"tuto hodinu","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. M. y G","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","dateFormatItem-yyyyMMMMEd":"E d. MMMM y G","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","dateFormatItem-GyMMM":"LLLL y G","field-month":"měsíc","field-day-narrow":"den","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749-749)","Tenpyō-shōhō (749-757)","Tenpyō-hōji (757-765)","Tenpyō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770–780)","Ten-ō (781-782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857-859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kahō (1094–1096)","Eichō (1096–1097)","Jōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110-1113)","Eikyū (1113–1118)","Gen’ei (1118–1120)","Hōan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hōen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hōgen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken’ei (1206–1207)","Jōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Jōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tenpuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En’ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun’ō (1260–1261)","Kōchō (1261–1264)","Bun’ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkyō (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkō (1321–1324)","Shōchū (1324–1326)","Karyaku (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kenmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun’an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenbun (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genna (1615–1624)","Kan’ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Jōō (1652–1655)","Meireki (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenna (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan’en (1748–1751)","Hōreki (1751–1764)","Meiwa (1764–1772)","An’ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man’en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","Meiji","Taishō","Shōwa","Heisei"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","field-quarter-relative+-1":"minulé čtvrtletí","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"část d.","field-week-narrow-relative+-1":"minulý týd.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-hour":"hodina","field-minute-narrow-relative+0":"tuto minutu","dateFormat-full":"EEEE, d. MMMM y G","field-month-relative+-1":"minulý měsíc","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"dd.MM.yy GGGGG","field-year-narrow-relative+-1":"minulý rok","field-thu-short-relative+-1":"minulý čtvrtek","dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulé pondělí","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý čtvrtek","dateFormatItem-E":"ccc","field-weekOfMonth-short":"týd. v m.","field-tue-narrow-relative+-1":"minulé úterý","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"tuto středu","field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","dateFormatItem-MMMMEd":"E d. MMMM","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nyní","dateFormatItem-d":"d.","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-day-short-relative+1":"zítra","field-sat-relative+0":"tuto sobotu","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-narrow-relative+1":"příští čtvrtek","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","dateFormatItem-yyyyMMM":"LLLL y G","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","field-week-short-relative+-1":"minulý týd.","dateFormatItem-GyMMMMd":"d. MMMM y G","field-hour-narrow-relative+0":"tuto hodinu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","eraNarrow":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749-749)","Tenpyō-shōhō (749-757)","Tenpyō-hōji (757-765)","Tenpyō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770–780)","Ten-ō (781-782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857-859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kahō (1094–1096)","Eichō (1096–1097)","Jōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110-1113)","Eikyū (1113–1118)","Gen’ei (1118–1120)","Hōan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hōen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hōgen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken’ei (1206–1207)","Jōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Jōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tenpuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En’ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun’ō (1260–1261)","Kōchō (1261–1264)","Bun’ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkyō (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkō (1321–1324)","Shōchū (1324–1326)","Karyaku (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kenmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun’an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenbun (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genna (1615–1624)","Kan’ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Jōō (1652–1655)","Meireki (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenna (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan’en (1748–1751)","Hōreki (1751–1764)","Meiwa (1764–1772)","An’ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man’en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","M","T","S","H"],"field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týd. v m.","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","dateFormatItem-Gy":"y G","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/number.js b/lib/dojo/cldr/nls/cs/number.js
index 854230207..51ce5a830 100644
--- a/lib/dojo/cldr/nls/cs/number.js
+++ b/lib/dojo/cldr/nls/cs/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/cs/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 bilionů","decimalFormat-short":"000 bil'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/cs/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 bil'.'","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 bilionů","decimalFormat":"#,##0.###","currencyFormat-short":"000 bil'.' ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/persian.js b/lib/dojo/cldr/nls/cs/persian.js
new file mode 100644
index 000000000..272ed7d04
--- /dev/null
+++ b/lib/dojo/cldr/nls/cs/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/cs/persian",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","timeFormat-short":"H:mm","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-thu-short-relative+0":"tento čtvrtek","field-day-short-relative+-1":"včera","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","dayPeriods-format-narrow-am":"dop.","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d. týd. v měs.","dayPeriods-format-abbr-am":"dop.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AP"],"field-weekOfMonth":"týden v měsíci","dayPeriods-standAlone-abbr-pm":"odp.","field-month-short":"měs.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","dayPeriods-format-wide-am":"dop.","field-sat-short-relative+-1":"minulou sobotu","dateFormatItem-yyyyMMMMd":"d. MMMM y G","field-hour-relative+0":"tuto hodinu","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","days-standAlone-narrow":["N","P","Ú","S","Č","P","S"],"dayPeriods-standAlone-wide-pm":"odp.","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. M. y G","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","quarters-standAlone-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"days-format-narrow":["N","P","Ú","S","Č","P","S"],"dateFormatItem-yyyyMMMMEd":"E d. MMMM y G","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","dateFormatItem-GyMMM":"LLLL y G","field-month":"měsíc","field-day-narrow":"den","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dayPeriods-format-narrow-pm":"odp.","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["AP"],"dayPeriods-format-abbr-pm":"odp.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"minulé čtvrtletí","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"část d.","dayPeriods-standAlone-narrow-am":"dop.","field-week-narrow-relative+-1":"minulý týd.","days-format-short":["ne","po","út","st","čt","pá","so"],"dayPeriods-format-wide-pm":"odp.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-minute-narrow-relative+0":"tuto minutu","field-hour":"hodina","months-format-wide":["farvardin","ordibehešt","chordád","tír","mordád","šahrívar","mehr","ábán","ázar","dei","bahman","esfand"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"minulý měsíc","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","months-format-abbr":["farvardin","ordibehešt","chordád","tír","mordád","šahrívar","mehr","ábán","ázar","dei","bahman","esfand"],"field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"dd.MM.yy GGGGG","field-thu-short-relative+-1":"minulý čtvrtek","field-year-narrow-relative+-1":"minulý rok","dateFormatItem-yyyyMMMEd":"E d. M. y G","days-standAlone-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-mon-narrow-relative+-1":"minulé pondělí","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý čtvrtek","dateFormatItem-E":"ccc","field-weekOfMonth-short":"týd. v m.","field-tue-narrow-relative+-1":"minulé úterý","dateFormatItem-H":"H","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"odp.","dateFormatItem-M":"L","months-standAlone-wide":["farvardin","ordibehešt","chordád","tír","mordád","šahrívar","mehr","ábán","ázar","dei","bahman","esfand"],"field-wed-short-relative+0":"tuto středu","field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","dateFormatItem-MMMMEd":"E d. MMMM","days-standAlone-abbr":["ne","po","út","st","čt","pá","so"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nyní","dateFormatItem-d":"d.","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-day-short-relative+1":"zítra","field-sat-relative+0":"tuto sobotu","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","months-standAlone-abbr":["farvardin","ordibehešt","chordád","tír","mordád","šahrívar","mehr","ábán","ázar","dei","bahman","esfand"],"dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-narrow-relative+1":"příští čtvrtek","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","quarters-format-wide":["1. čtvrtletí","2. čtvrtletí","3. čtvrtletí","4. čtvrtletí"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","dateFormatItem-yyyyMMM":"LLLL y G","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","days-standAlone-short":["ne","po","út","st","čt","pá","so"],"field-week-short-relative+-1":"minulý týd.","dateFormatItem-GyMMMMd":"d. MMMM y G","field-hour-narrow-relative+0":"tuto hodinu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","eraNarrow":"AP","field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","days-format-wide":["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],"field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","dateFormatItem-EHm":"E H:mm","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týd. v m.","dateFormatItem-EHms":"E H:mm:ss","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","dayPeriods-standAlone-abbr-am":"dop.","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","days-format-abbr":["ne","po","út","st","čt","pá","so"],"field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","dateFormatItem-Gy":"y G","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek","dayPeriods-standAlone-wide-am":"dop."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/cs/roc.js b/lib/dojo/cldr/nls/cs/roc.js
index 966211c9e..67175d641 100644
--- a/lib/dojo/cldr/nls/cs/roc.js
+++ b/lib/dojo/cldr/nls/cs/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/cs/roc",{"field-sat-relative+0":"tuto sobotu","field-sat-relative+1":"příští sobotu","field-dayperiod":"dop./odp.","field-sun-relative+-1":"minulou neděli","field-mon-relative+-1":"minulé pondělí","field-minute":"Minuta","field-day-relative+-1":"včera","field-weekday":"Den v týdnu","field-day-relative+-2":"předevčírem","field-era":"Letopočet","field-hour":"Hodina","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","field-wed-relative+-1":"minulou středu","field-day-relative+0":"dnes","field-day-relative+1":"zítra","eraAbbr":["Před R. O. C."],"field-day-relative+2":"pozítří","field-tue-relative+0":"toto úterý","field-zone":"Časové pásmo","field-tue-relative+1":"příští úterý","field-week-relative+-1":"minulý týden","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-sat-relative+-1":"minulou sobotu","field-year-relative+-1":"minulý rok","field-year":"Rok","field-fri-relative+0":"tento pátek","field-fri-relative+1":"příští pátek","field-week":"Týden","field-week-relative+0":"tento týden","field-week-relative+1":"příští týden","field-month-relative+0":"tento měsíc","field-month":"Měsíc","field-month-relative+1":"příští měsíc","field-fri-relative+-1":"minulý pátek","field-second":"Sekunda","field-tue-relative+-1":"minulé úterý","field-day":"Den","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-thu-relative+0":"tento čtvrtek","field-second-relative+0":"nyní","field-thu-relative+1":"příští čtvrtek","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","field-month-relative+-1":"minulý měsíc","field-thu-relative+-1":"minulý čtvrtek"}); \ No newline at end of file
+define("dojo/cldr/nls/cs/roc",{"field-quarter-short-relative+0":"toto čtvrtletí","field-quarter-short-relative+1":"příští čtvrtletí","field-tue-relative+-1":"minulé úterý","field-year":"rok","field-wed-relative+0":"tuto středu","field-wed-relative+1":"příští středu","field-minute":"minuta","field-month-narrow-relative+-1":"minulý měs.","field-tue-narrow-relative+0":"toto úterý","field-tue-narrow-relative+1":"příští úterý","field-thu-short-relative+0":"tento čtvrtek","field-day-short-relative+-1":"včera","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"příští čtvrtek","field-day-relative+0":"dnes","field-day-short-relative+-2":"předevčírem","field-day-relative+1":"zítra","field-week-narrow-relative+0":"tento týd.","field-day-relative+2":"pozítří","field-week-narrow-relative+1":"příští týd.","field-wed-narrow-relative+-1":"minulou středu","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"toto úterý","field-year-narrow-relative+1":"příští rok","field-tue-relative+1":"příští úterý","field-weekdayOfMonth":"den týdne v měsíci","field-second-short":"s","field-weekdayOfMonth-narrow":"d. týd. v měs.","field-week-relative+0":"tento týden","field-month-relative+0":"tento měsíc","field-week-relative+1":"příští týden","field-month-relative+1":"příští měsíc","field-sun-narrow-relative+0":"tuto neděli","field-mon-short-relative+0":"toto pondělí","field-sun-narrow-relative+1":"příští neděli","field-mon-short-relative+1":"příští pondělí","field-second-relative+0":"nyní","eraNames":["před ROC","ROC"],"field-weekOfMonth":"týden v měsíci","field-month-short":"měs.","field-day":"den","field-dayOfYear-short":"den v r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulou sobotu","field-hour-relative+0":"tuto hodinu","field-second-short-relative+0":"nyní","field-wed-relative+-1":"minulou středu","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"minulou sobotu","field-second":"sekunda","dateFormat-long":"d. MMMM y G","field-hour-short-relative+0":"tuto hodinu","field-quarter":"čtvrtletí","field-week-short":"týd.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zítra","field-day-narrow-relative+2":"pozítří","field-tue-short-relative+0":"toto úterý","field-tue-short-relative+1":"příští úterý","field-month-short-relative+-1":"minulý měs.","field-mon-relative+-1":"minulé pondělí","field-month":"měsíc","field-day-narrow":"den","field-minute-short":"min","field-dayperiod":"část dne","field-sat-short-relative+0":"tuto sobotu","field-sat-short-relative+1":"příští sobotu","dateFormat-medium":"d. M. y G","eraAbbr":["před ROC","ROC"],"field-second-narrow":"s","field-mon-relative+0":"toto pondělí","field-mon-relative+1":"příští pondělí","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"předevčírem","field-quarter-relative+-1":"minulé čtvrtletí","field-dayperiod-narrow":"část d.","field-week-narrow-relative+-1":"minulý týd.","field-dayOfYear":"den v roce","field-sat-relative+-1":"minulou sobotu","dateTimeFormat-long":"{1} {0}","field-hour":"hodina","field-minute-narrow-relative+0":"tuto minutu","dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"minulý měsíc","field-quarter-short":"Q","field-sat-narrow-relative+0":"tuto sobotu","field-fri-relative+0":"tento pátek","field-sat-narrow-relative+1":"příští sobotu","field-fri-relative+1":"příští pátek","field-month-narrow-relative+0":"tento měs.","field-month-narrow-relative+1":"příští měs.","field-sun-short-relative+0":"tuto neděli","field-sun-short-relative+1":"příští neděli","field-week-relative+-1":"minulý týden","field-quarter-short-relative+-1":"minulé čtvrtletí","field-minute-short-relative+0":"tuto minutu","field-quarter-relative+0":"toto čtvrtletí","field-minute-relative+0":"tuto minutu","field-quarter-relative+1":"příští čtvrtletí","field-wed-short-relative+-1":"minulou středu","dateFormat-short":"dd.MM.yy GGGGG","field-thu-short-relative+-1":"minulý čtvrtek","field-year-narrow-relative+-1":"minulý rok","field-mon-narrow-relative+-1":"minulé pondělí","field-thu-narrow-relative+-1":"minulý čtvrtek","field-tue-narrow-relative+-1":"minulé úterý","field-weekOfMonth-short":"týd. v m.","field-wed-short-relative+0":"tuto středu","field-wed-short-relative+1":"příští středu","field-sun-relative+-1":"minulou neděli","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nyní","field-weekday":"den v týdnu","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"toto čtvrtletí","field-day-short-relative+1":"zítra","field-sat-relative+0":"tuto sobotu","field-quarter-narrow-relative+1":"příští čtvrtletí","field-day-short-relative+2":"pozítří","field-sat-relative+1":"příští sobotu","field-week-short-relative+0":"tento týd.","field-week-short-relative+1":"příští týd.","field-dayOfYear-narrow":"d. v r.","field-month-short-relative+0":"tento měs.","field-month-short-relative+1":"příští měs.","field-weekdayOfMonth-short":"den týd. v měs.","field-zone-narrow":"pásmo","field-thu-narrow-relative+0":"tento čtvrtek","field-thu-narrow-relative+1":"příští čtvrtek","field-sun-narrow-relative+-1":"minulou neděli","field-mon-short-relative+-1":"minulé pondělí","field-thu-relative+0":"tento čtvrtek","field-thu-relative+1":"příští čtvrtek","field-fri-short-relative+-1":"minulý pátek","field-thu-relative+-1":"minulý čtvrtek","field-week":"týden","field-wed-narrow-relative+0":"tuto středu","field-wed-narrow-relative+1":"příští středu","field-quarter-narrow-relative+-1":"minulé čtvrtletí","field-year-short-relative+0":"tento rok","field-dayperiod-short":"část dne","field-year-short-relative+1":"příští rok","field-fri-short-relative+0":"tento pátek","field-fri-short-relative+1":"příští pátek","field-week-short-relative+-1":"minulý týd.","field-hour-narrow-relative+0":"tuto hodinu","field-hour-short":"h","field-zone-short":"čas. pásmo","field-month-narrow":"měs.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pátek","field-year-relative+0":"tento rok","field-year-relative+1":"příští rok","field-era-narrow":"let.","field-fri-relative+-1":"minulý pátek","eraNarrow":["před ROC","ROC"],"field-tue-short-relative+-1":"minulé úterý","field-minute-narrow":"min","field-mon-narrow-relative+0":"toto pondělí","field-mon-narrow-relative+1":"příští pondělí","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","field-weekOfMonth-narrow":"týd. v m.","field-weekday-narrow":"d. v týd.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulou neděli","field-day-relative+-1":"včera","field-day-relative+-2":"předevčírem","field-weekday-short":"den v týd.","field-sun-relative+0":"tuto neděli","field-sun-relative+1":"příští neděli","field-day-short":"den","field-week-narrow":"týd.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pátek","field-fri-narrow-relative+1":"příští pátek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/currency.js b/lib/dojo/cldr/nls/currency.js
index 7e9217da1..e6c40ec96 100644
--- a/lib/dojo/cldr/nls/currency.js
+++ b/lib/dojo/cldr/nls/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/currency",{root:{"USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"A$","CNY_symbol":"CN¥","EUR_symbol":"€"},"ar":true,"bs":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-ca":true,"en-gb":true,"es":true,"fi":true,"fr":true,"fr-ch":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true,"zh-hk":true,"zh-tw":true}); \ No newline at end of file
+define("dojo/cldr/nls/currency",{root:{"USD_symbol":"US$","CAD_symbol":"CA$","GBP_symbol":"£","HKD_symbol":"HK$","JPY_symbol":"JP¥","AUD_symbol":"A$","CNY_symbol":"CN¥","EUR_symbol":"€"},"ar":true,"bs":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-ca":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true,"zh-hk":true,"zh-tw":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/buddhist.js b/lib/dojo/cldr/nls/da/buddhist.js
index 3ce855125..a718f3fb7 100644
--- a/lib/dojo/cldr/nls/da/buddhist.js
+++ b/lib/dojo/cldr/nls/da/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/da/buddhist",{"days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"nu","field-weekday":"Ugedag","field-wed-relative+0":"denne onsdag","field-wed-relative+1":"næste onsdag","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"E d. MMM","field-tue-relative+-1":"sidste tirsdag","days-format-short":["sø","ma","ti","on","to","fr","lø"],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"sidste fredag","field-wed-relative+-1":"sidste onsdag","months-format-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y G","field-thu-relative+-1":"sidste torsdag","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"middag","field-era":"Æra","months-standAlone-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","field-year":"År","field-hour":"Time","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"field-sat-relative+0":"denne lørdag","field-sat-relative+1":"næste lørdag","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-thu-relative+0":"denne torsdag","field-day-relative+1":"i morgen","field-thu-relative+1":"næste torsdag","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"i overmorgen","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"quarters-format-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-M":"M","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","dayPeriods-format-abbr-noon":"middag","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"denne søndag","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"næste søndag","quarters-standAlone-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"eraAbbr":["BE"],"field-minute":"Minut","field-dayperiod":"AM/PM","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"denne fredag","field-fri-relative+1":"næste fredag","field-day":"Dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"Tidszone","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"sidste år","field-month-relative+-1":"sidste måned","dateFormatItem-hm":"h.mm a","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"Måned","dateFormatItem-MMM":"MMM","days-standAlone-narrow":["S","M","T","O","T","F","L"],"field-tue-relative+0":"denne tirsdag","field-tue-relative+1":"næste tirsdag","field-mon-relative+0":"denne mandag","field-mon-relative+1":"næste mandag","dateFormat-short":"d/M/y","dayPeriods-format-narrow-noon":"middag","field-second":"Sekund","field-sat-relative+-1":"sidste lørdag","field-sun-relative+-1":"sidste søndag","field-month-relative+0":"denne måned","field-month-relative+1":"næste måned","dateFormatItem-Ed":"E 'd'. d.","field-week":"Uge","dateFormat-medium":"d. MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"sidste uge","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"næste år","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"sidste mandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"denne uge","field-week-relative+1":"næste uge"}); \ No newline at end of file
+define("dojo/cldr/nls/da/buddhist",{"field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","field-tue-relative+-1":"sidste tirsdag","field-year":"år","dateFormatItem-Hm":"HH.mm","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","dateFormatItem-ms":"mm.ss","timeFormat-short":"HH.mm","field-minute":"minut","field-month-narrow-relative+-1":"sidste md.","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","field-thu-short-relative+0":"på tor.","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"på tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uge","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"næste uge","field-wed-narrow-relative+-1":"sidste on.","dateFormatItem-EBhms":"E h.mm.ss B","field-year-narrow":"år","field-era-short":"æra","field-year-narrow-relative+0":"i år","field-tue-relative+0":"på tirsdag","field-year-narrow-relative+1":"næste år","field-tue-relative+1":"på tirsdag","field-weekdayOfMonth":"ugedag i måneden","field-second-short":"sek.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"ugedag i md.","field-week-relative+0":"denne uge","field-month-relative+0":"denne måned","field-week-relative+1":"næste uge","field-month-relative+1":"næste måned","field-sun-narrow-relative+0":"på sø.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"på man.","field-sun-narrow-relative+1":"på sø.","field-mon-short-relative+1":"på man.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["BE"],"field-weekOfMonth":"uge i måneden","field-month-short":"md.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"sidste år","field-sat-short-relative+-1":"sidste lør.","field-hour-relative+0":"denne time","dateFormatItem-yyyyMEd":"E d/M/y G","field-wed-relative+-1":"sidste onsdag","field-sat-narrow-relative+-1":"sidste lø.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"denne time","field-quarter":"kvartal","field-week-short":"uge","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"i overmorgen","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"på tir.","field-tue-short-relative+1":"på tir.","field-month-short-relative+-1":"sidste md.","field-mon-relative+-1":"sidste mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"dag","dateFormatItem-MMM":"MMM","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["BE"],"quarters-standAlone-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"dateFormatItem-yyyyM":"M/y G","field-second-narrow":"s","field-mon-relative+0":"på mandag","field-mon-relative+1":"på mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"i forgårs","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"sidste kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sidste uge","days-format-short":["sø","ma","ti","on","to","fr","lø"],"field-dayOfYear":"dag i året","field-sat-relative+-1":"sidste lørdag","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"dette min.","field-hour":"time","months-format-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"sidste måned","dateFormatItem-Hms":"HH.mm.ss","field-quarter-short":"kvt.","field-sat-narrow-relative+0":"på lø.","field-fri-relative+0":"på fredag","field-sat-narrow-relative+1":"på lø.","field-fri-relative+1":"på fredag","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","field-sun-short-relative+0":"på søn.","field-sun-short-relative+1":"på søn.","field-week-relative+-1":"sidste uge","field-quarter-short-relative+-1":"sidste kvt.","field-minute-short-relative+0":"dette min.","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"field-quarter-relative+0":"dette kvartal","field-minute-relative+0":"dette minut","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"næste kvartal","field-wed-short-relative+-1":"sidste ons.","dateFormat-short":"d/M/y","field-thu-short-relative+-1":"sidste tor.","field-year-narrow-relative+-1":"sidste år","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sidste ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sidste to.","field-tue-narrow-relative+-1":"sidste ti.","field-weekOfMonth-short":"uge i md.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"på ons.","dateFormatItem-M":"M","months-standAlone-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"field-wed-short-relative+1":"på ons.","field-sun-relative+-1":"sidste søndag","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-hm":"h.mm a","field-weekday":"ugedag","dateFormatItem-d":"d.","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kvt.","field-sat-relative+0":"på lørdag","field-day-short-relative+1":"i morgen","field-quarter-narrow-relative+1":"næste kvt.","field-sat-relative+1":"på lørdag","field-day-short-relative+2":"i overmorgen","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","months-standAlone-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"field-dayOfYear-narrow":"dag i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","field-weekdayOfMonth-short":"ugedag i md.","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"på to.","field-thu-narrow-relative+1":"på to.","field-sun-narrow-relative+-1":"sidste sø.","field-mon-short-relative+-1":"sidste man.","field-thu-relative+0":"på torsdag","field-thu-relative+1":"på torsdag","field-fri-short-relative+-1":"sidste fre.","dateFormatItem-hms":"h.mm.ss a","field-thu-relative+-1":"sidste torsdag","field-week":"uge","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E 'd'. d.","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-quarter-narrow-relative+-1":"sidste kvt.","field-year-short-relative+0":"i år","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"næste år","field-fri-short-relative+0":"på fre.","field-fri-short-relative+1":"på fre.","days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"field-week-short-relative+-1":"sidste uge","field-hour-narrow-relative+0":"denne time","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t.","field-zone-short":"zone","quarters-format-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"field-month-narrow":"md.","field-hour-narrow":"t.","field-fri-narrow-relative+-1":"sidste fr.","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-era-narrow":"æra","field-fri-relative+-1":"sidste fredag","eraNarrow":"BE","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"sidste tir.","field-minute-narrow":"min.","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-mon-narrow-relative+0":"på ma.","field-mon-narrow-relative+1":"på ma.","dateFormatItem-EHm":"E HH.mm","field-year-short-relative+-1":"sidste år","field-zone":"tidszone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uge i md.","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"ugedag","field-quarter-narrow":"kvt.","field-sun-short-relative+-1":"sidste søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ugedag","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"uge","field-era":"æra","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/coptic.js b/lib/dojo/cldr/nls/da/coptic.js
new file mode 100644
index 000000000..880d69146
--- /dev/null
+++ b/lib/dojo/cldr/nls/da/coptic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/da/coptic",{"field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","field-tue-relative+-1":"sidste tirsdag","field-year":"år","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","field-minute":"minut","field-month-narrow-relative+-1":"sidste md.","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","field-thu-short-relative+0":"på tor.","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"på tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uge","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"næste uge","field-wed-narrow-relative+-1":"sidste on.","field-year-narrow":"år","field-era-short":"æra","field-year-narrow-relative+0":"i år","field-tue-relative+0":"på tirsdag","field-year-narrow-relative+1":"næste år","field-tue-relative+1":"på tirsdag","field-weekdayOfMonth":"ugedag i måneden","field-second-short":"sek.","field-weekdayOfMonth-narrow":"ugedag i md.","field-week-relative+0":"denne uge","field-month-relative+0":"denne måned","field-week-relative+1":"næste uge","field-month-relative+1":"næste måned","field-sun-narrow-relative+0":"på sø.","field-mon-short-relative+0":"på man.","field-sun-narrow-relative+1":"på sø.","field-mon-short-relative+1":"på man.","field-second-relative+0":"nu","eraNames":["0. tidsregning","1. tidsregning"],"field-weekOfMonth":"uge i måneden","field-month-short":"md.","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"sidste år","field-sat-short-relative+-1":"sidste lør.","field-hour-relative+0":"denne time","field-wed-relative+-1":"sidste onsdag","field-sat-narrow-relative+-1":"sidste lø.","field-second":"sekund","field-hour-short-relative+0":"denne time","field-quarter":"kvartal","field-week-short":"uge","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"i overmorgen","field-tue-short-relative+0":"på tir.","field-tue-short-relative+1":"på tir.","field-month-short-relative+-1":"sidste md.","field-mon-relative+-1":"sidste mandag","field-month":"måned","field-day-narrow":"dag","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","eraAbbr":["0. tidsr.","1. tidsr."],"field-second-narrow":"s","field-mon-relative+0":"på mandag","field-mon-relative+1":"på mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"i forgårs","field-quarter-relative+-1":"sidste kvartal","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sidste uge","field-dayOfYear":"dag i året","field-sat-relative+-1":"sidste lørdag","field-hour":"time","field-minute-narrow-relative+0":"dette min.","months-format-wide":["tut","babah","hatur","kiyahk","tubah","amshir","baramhat","baramundah","bashans","ba’unah","abib","misra","nasi"],"field-month-relative+-1":"sidste måned","field-quarter-short":"kvt.","field-sat-narrow-relative+0":"på lø.","field-fri-relative+0":"på fredag","field-sat-narrow-relative+1":"på lø.","field-fri-relative+1":"på fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","field-sun-short-relative+0":"på søn.","field-sun-short-relative+1":"på søn.","field-week-relative+-1":"sidste uge","field-quarter-short-relative+-1":"sidste kvt.","field-minute-short-relative+0":"dette min.","field-quarter-relative+0":"dette kvartal","field-minute-relative+0":"dette minut","field-quarter-relative+1":"næste kvartal","field-wed-short-relative+-1":"sidste ons.","field-thu-short-relative+-1":"sidste tor.","field-year-narrow-relative+-1":"sidste år","field-mon-narrow-relative+-1":"sidste ma.","field-thu-narrow-relative+-1":"sidste to.","field-tue-narrow-relative+-1":"sidste ti.","field-weekOfMonth-short":"uge i md.","field-wed-short-relative+0":"på ons.","field-wed-short-relative+1":"på ons.","field-sun-relative+-1":"sidste søndag","field-weekday":"ugedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kvt.","field-sat-relative+0":"på lørdag","field-day-short-relative+1":"i morgen","field-quarter-narrow-relative+1":"næste kvt.","field-sat-relative+1":"på lørdag","field-day-short-relative+2":"i overmorgen","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","field-dayOfYear-narrow":"dag i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","field-weekdayOfMonth-short":"ugedag i md.","field-zone-narrow":"zone","field-thu-narrow-relative+0":"på to.","field-thu-narrow-relative+1":"på to.","field-sun-narrow-relative+-1":"sidste sø.","field-mon-short-relative+-1":"sidste man.","field-thu-relative+0":"på torsdag","field-thu-relative+1":"på torsdag","field-fri-short-relative+-1":"sidste fre.","field-thu-relative+-1":"sidste torsdag","field-week":"uge","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-quarter-narrow-relative+-1":"sidste kvt.","field-year-short-relative+0":"i år","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"næste år","field-fri-short-relative+0":"på fre.","field-fri-short-relative+1":"på fre.","field-week-short-relative+-1":"sidste uge","field-hour-narrow-relative+0":"denne time","field-hour-short":"t.","field-zone-short":"zone","field-month-narrow":"md.","field-hour-narrow":"t.","field-fri-narrow-relative+-1":"sidste fr.","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-era-narrow":"æra","field-fri-relative+-1":"sidste fredag","eraNarrow":["0. t.","1. t."],"field-tue-short-relative+-1":"sidste tir.","field-minute-narrow":"min.","field-mon-narrow-relative+0":"på ma.","field-mon-narrow-relative+1":"på ma.","field-year-short-relative+-1":"sidste år","field-zone":"tidszone","field-weekOfMonth-narrow":"uge i md.","field-weekday-narrow":"ugedag","field-quarter-narrow":"kvt.","field-sun-short-relative+-1":"sidste søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ugedag","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","field-day-short":"dag","field-week-narrow":"uge","field-era":"æra","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/currency.js b/lib/dojo/cldr/nls/da/currency.js
index aff6e523d..d3a33b0bb 100644
--- a/lib/dojo/cldr/nls/da/currency.js
+++ b/lib/dojo/cldr/nls/da/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/da/currency",{"HKD_displayName":"Hongkong dollar","CHF_displayName":"Schweizisk franc","JPY_symbol":"JP¥","CAD_displayName":"Canadisk dollar","HKD_symbol":"HK$","CNY_displayName":"Kinesisk yuan renminbi","USD_symbol":"$","AUD_displayName":"Australsk dollar","JPY_displayName":"Japansk yen","CAD_symbol":"CA$","USD_displayName":"Amerikansk dollar","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"Britisk pund","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file
+define("dojo/cldr/nls/da/currency",{"HKD_displayName":"hongkongsk dollar","CHF_displayName":"schweizerfranc","CHF_symbol":"CHF","JPY_symbol":"JP¥","CAD_displayName":"canadisk dollar","HKD_symbol":"HK$","CNY_displayName":"kinesisk yuan","AUD_displayName":"australsk dollar","JPY_displayName":"japansk yen","CAD_symbol":"CA$","USD_displayName":"amerikansk dollar","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"britisk pund","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"euro"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/ethiopic.js b/lib/dojo/cldr/nls/da/ethiopic.js
new file mode 100644
index 000000000..72bfc07ac
--- /dev/null
+++ b/lib/dojo/cldr/nls/da/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/da/ethiopic",{"field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","field-tue-relative+-1":"sidste tirsdag","field-year":"år","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","field-minute":"minut","field-month-narrow-relative+-1":"sidste md.","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","field-thu-short-relative+0":"på tor.","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"på tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uge","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"næste uge","field-wed-narrow-relative+-1":"sidste on.","field-year-narrow":"år","field-era-short":"æra","field-year-narrow-relative+0":"i år","field-tue-relative+0":"på tirsdag","field-year-narrow-relative+1":"næste år","field-tue-relative+1":"på tirsdag","field-weekdayOfMonth":"ugedag i måneden","field-second-short":"sek.","field-weekdayOfMonth-narrow":"ugedag i md.","field-week-relative+0":"denne uge","field-month-relative+0":"denne måned","field-week-relative+1":"næste uge","field-month-relative+1":"næste måned","field-sun-narrow-relative+0":"på sø.","field-mon-short-relative+0":"på man.","field-sun-narrow-relative+1":"på sø.","field-mon-short-relative+1":"på man.","field-second-relative+0":"nu","eraNames":["0. tidsregning","1. tidsregning"],"field-weekOfMonth":"uge i måneden","field-month-short":"md.","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"sidste år","field-sat-short-relative+-1":"sidste lør.","field-hour-relative+0":"denne time","field-wed-relative+-1":"sidste onsdag","field-sat-narrow-relative+-1":"sidste lø.","field-second":"sekund","field-hour-short-relative+0":"denne time","field-quarter":"kvartal","field-week-short":"uge","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"i overmorgen","field-tue-short-relative+0":"på tir.","field-tue-short-relative+1":"på tir.","field-month-short-relative+-1":"sidste md.","field-mon-relative+-1":"sidste mandag","field-month":"måned","field-day-narrow":"dag","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","eraAbbr":["0. tidsr.","1. tidsr."],"field-second-narrow":"s","field-mon-relative+0":"på mandag","field-mon-relative+1":"på mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"i forgårs","field-quarter-relative+-1":"sidste kvartal","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sidste uge","field-dayOfYear":"dag i året","field-sat-relative+-1":"sidste lørdag","field-hour":"time","field-minute-narrow-relative+0":"dette min.","months-format-wide":["meskerem","tekemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehasse","pagumen"],"field-month-relative+-1":"sidste måned","field-quarter-short":"kvt.","field-sat-narrow-relative+0":"på lø.","field-fri-relative+0":"på fredag","field-sat-narrow-relative+1":"på lø.","field-fri-relative+1":"på fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","field-sun-short-relative+0":"på søn.","field-sun-short-relative+1":"på søn.","field-week-relative+-1":"sidste uge","field-quarter-short-relative+-1":"sidste kvt.","field-minute-short-relative+0":"dette min.","field-quarter-relative+0":"dette kvartal","field-minute-relative+0":"dette minut","field-quarter-relative+1":"næste kvartal","field-wed-short-relative+-1":"sidste ons.","field-thu-short-relative+-1":"sidste tor.","field-year-narrow-relative+-1":"sidste år","field-mon-narrow-relative+-1":"sidste ma.","field-thu-narrow-relative+-1":"sidste to.","field-tue-narrow-relative+-1":"sidste ti.","field-weekOfMonth-short":"uge i md.","field-wed-short-relative+0":"på ons.","field-wed-short-relative+1":"på ons.","field-sun-relative+-1":"sidste søndag","field-weekday":"ugedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kvt.","field-sat-relative+0":"på lørdag","field-day-short-relative+1":"i morgen","field-quarter-narrow-relative+1":"næste kvt.","field-sat-relative+1":"på lørdag","field-day-short-relative+2":"i overmorgen","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","field-dayOfYear-narrow":"dag i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","field-weekdayOfMonth-short":"ugedag i md.","field-zone-narrow":"zone","field-thu-narrow-relative+0":"på to.","field-thu-narrow-relative+1":"på to.","field-sun-narrow-relative+-1":"sidste sø.","field-mon-short-relative+-1":"sidste man.","field-thu-relative+0":"på torsdag","field-thu-relative+1":"på torsdag","field-fri-short-relative+-1":"sidste fre.","field-thu-relative+-1":"sidste torsdag","field-week":"uge","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-quarter-narrow-relative+-1":"sidste kvt.","field-year-short-relative+0":"i år","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"næste år","field-fri-short-relative+0":"på fre.","field-fri-short-relative+1":"på fre.","field-week-short-relative+-1":"sidste uge","field-hour-narrow-relative+0":"denne time","field-hour-short":"t.","field-zone-short":"zone","field-month-narrow":"md.","field-hour-narrow":"t.","field-fri-narrow-relative+-1":"sidste fr.","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-era-narrow":"æra","field-fri-relative+-1":"sidste fredag","eraNarrow":["0. t.","1. t."],"field-tue-short-relative+-1":"sidste tir.","field-minute-narrow":"min.","field-mon-narrow-relative+0":"på ma.","field-mon-narrow-relative+1":"på ma.","field-year-short-relative+-1":"sidste år","field-zone":"tidszone","field-weekOfMonth-narrow":"uge i md.","field-weekday-narrow":"ugedag","field-quarter-narrow":"kvt.","field-sun-short-relative+-1":"sidste søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ugedag","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","field-day-short":"dag","field-week-narrow":"uge","field-era":"æra","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/generic.js b/lib/dojo/cldr/nls/da/generic.js
index 973dc94e1..90e491abe 100644
--- a/lib/dojo/cldr/nls/da/generic.js
+++ b/lib/dojo/cldr/nls/da/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/da/generic",{"field-second-relative+0":"nu","field-weekday":"Ugedag","field-wed-relative+0":"denne onsdag","field-wed-relative+1":"næste onsdag","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"E d. MMM","field-tue-relative+-1":"sidste tirsdag","dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"sidste fredag","field-wed-relative+-1":"sidste onsdag","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y G","field-thu-relative+-1":"sidste torsdag","dateFormatItem-Md":"d/M","field-era":"Æra","field-year":"År","field-hour":"Time","field-sat-relative+0":"denne lørdag","field-sat-relative+1":"næste lørdag","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-thu-relative+0":"denne torsdag","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"i overmorgen","field-thu-relative+1":"næste torsdag","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-M":"M","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","field-sun-relative+0":"denne søndag","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"næste søndag","field-minute":"Minut","field-dayperiod":"AM/PM","dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"i forgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"denne fredag","field-fri-relative+1":"næste fredag","field-day":"Dag","field-zone":"Tidszone","dateFormatItem-y":"y G","field-year-relative+-1":"sidste år","field-month-relative+-1":"sidste måned","dateFormatItem-hm":"h.mm a","dateFormatItem-yyyyMd":"d/M/y G","field-month":"Måned","dateFormatItem-MMM":"MMM","field-tue-relative+0":"denne tirsdag","field-tue-relative+1":"næste tirsdag","dateFormatItem-MMMMEd":"E d. MMMM","field-mon-relative+0":"denne mandag","field-mon-relative+1":"næste mandag","dateFormat-short":"d/M/y","field-second":"Sekund","field-sat-relative+-1":"sidste lørdag","field-sun-relative+-1":"sidste søndag","field-month-relative+0":"denne måned","field-month-relative+1":"næste måned","dateFormatItem-Ed":"E 'd'. d.","field-week":"Uge","dateFormat-medium":"d. MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"sidste uge","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"næste år","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"sidste mandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"denne uge","field-week-relative+1":"næste uge"}); \ No newline at end of file
+define("dojo/cldr/nls/da/generic",{"field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","field-tue-relative+-1":"sidste tirsdag","field-year":"år","dateFormatItem-Hm":"HH.mm","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","dateFormatItem-ms":"mm.ss","field-minute":"minut","field-month-narrow-relative+-1":"sidste md.","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"på tor.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-thu-short-relative+1":"på tor.","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uge","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"næste uge","dateFormatItem-EBhms":"E h.mm.ss B","field-wed-narrow-relative+-1":"sidste on.","field-year-narrow":"år","field-era-short":"æra","field-year-narrow-relative+0":"i år","field-tue-relative+0":"på tirsdag","field-year-narrow-relative+1":"næste år","field-tue-relative+1":"på tirsdag","field-weekdayOfMonth":"ugedag i måneden","field-second-short":"sek.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"ugedag i md.","field-week-relative+0":"denne uge","field-month-relative+0":"denne måned","field-week-relative+1":"næste uge","field-month-relative+1":"næste måned","field-sun-narrow-relative+0":"på sø.","field-mon-short-relative+0":"på man.","field-sun-narrow-relative+1":"på sø.","field-mon-short-relative+1":"på man.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"uge i måneden","field-month-short":"md.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"sidste år","field-sat-short-relative+-1":"sidste lør.","field-hour-relative+0":"denne time","dateFormatItem-yyyyMEd":"E d/M/y G","field-wed-relative+-1":"sidste onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sidste lø.","field-second":"sekund","dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"denne time","field-quarter":"kvartal","field-week-short":"uge","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"i overmorgen","field-tue-short-relative+0":"på tir.","field-tue-short-relative+1":"på tir.","field-month-short-relative+-1":"sidste md.","field-mon-relative+-1":"sidste mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"dag","dateFormatItem-MMM":"MMM","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"s","field-mon-relative+0":"på mandag","field-mon-relative+1":"på mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"i forgårs","field-quarter-relative+-1":"sidste kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sidste uge","field-dayOfYear":"dag i året","field-sat-relative+-1":"sidste lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d/M","field-hour":"time","field-minute-narrow-relative+0":"dette min.","dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"sidste måned","dateFormatItem-Hms":"HH.mm.ss","field-quarter-short":"kvt.","field-sat-narrow-relative+0":"på lø.","field-fri-relative+0":"på fredag","field-sat-narrow-relative+1":"på lø.","field-fri-relative+1":"på fredag","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","field-sun-short-relative+0":"på søn.","field-sun-short-relative+1":"på søn.","field-week-relative+-1":"sidste uge","field-quarter-short-relative+-1":"sidste kvt.","dateFormatItem-Ehm":"E h.mm a","field-minute-short-relative+0":"dette min.","field-quarter-relative+0":"dette kvartal","field-minute-relative+0":"dette minut","field-quarter-relative+1":"næste kvartal","field-wed-short-relative+-1":"sidste ons.","dateFormat-short":"d/M/y","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"sidste år","field-thu-short-relative+-1":"sidste tor.","dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sidste ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sidste to.","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"uge i md.","field-tue-narrow-relative+-1":"sidste ti.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"M","field-wed-short-relative+0":"på ons.","field-wed-short-relative+1":"på ons.","field-sun-relative+-1":"sidste søndag","dateFormatItem-MMMMEd":"E d. MMMM","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h.mm a","dateFormatItem-d":"d.","field-weekday":"ugedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kvt.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"på lørdag","field-quarter-narrow-relative+1":"næste kvt.","dateFormatItem-h":"h a","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"på lørdag","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","field-dayOfYear-narrow":"dag i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","field-weekdayOfMonth-short":"ugedag i md.","dateFormatItem-MEd":"E d/M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"på to.","field-sun-narrow-relative+-1":"sidste sø.","field-mon-short-relative+-1":"sidste man.","field-thu-narrow-relative+1":"på to.","field-thu-relative+0":"på torsdag","field-thu-relative+1":"på torsdag","dateFormatItem-hms":"h.mm.ss a","field-fri-short-relative+-1":"sidste fre.","field-thu-relative+-1":"sidste torsdag","field-week":"uge","dateFormatItem-Ed":"E 'd'. d.","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-quarter-narrow-relative+-1":"sidste kvt.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"næste år","field-fri-short-relative+0":"på fre.","field-fri-short-relative+1":"på fre.","field-week-short-relative+-1":"sidste uge","field-hour-narrow-relative+0":"denne time","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t.","field-zone-short":"zone","field-month-narrow":"md.","field-hour-narrow":"t.","field-fri-narrow-relative+-1":"sidste fr.","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-era-narrow":"æra","field-fri-relative+-1":"sidste fredag","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"sidste tir.","field-minute-narrow":"min.","field-mon-narrow-relative+0":"på ma.","dateFormatItem-EHm":"E HH.mm","field-mon-narrow-relative+1":"på ma.","field-year-short-relative+-1":"sidste år","field-zone":"tidszone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uge i md.","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"ugedag","field-quarter-narrow":"kvt.","field-sun-short-relative+-1":"sidste søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ugedag","dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"uge","field-era":"æra","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/gregorian.js b/lib/dojo/cldr/nls/da/gregorian.js
index b31b6aefe..cf63d6030 100644
--- a/lib/dojo/cldr/nls/da/gregorian.js
+++ b/lib/dojo/cldr/nls/da/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/da/gregorian",{"dateFormatItem-Ehm":"E h.mm a","days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"nu","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Ugedag","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d/M/y","field-wed-relative+0":"denne onsdag","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"E d. MMM","field-wed-relative+1":"næste onsdag","eraNarrow":["fKr","fvt","eKr","vt"],"dateFormatItem-yMM":"MM/y","field-tue-relative+-1":"sidste tirsdag","days-format-short":["sø","ma","ti","on","to","fr","lø"],"dateFormat-long":"d. MMMM y","field-fri-relative+-1":"sidste fredag","field-wed-relative+-1":"sidste onsdag","months-format-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE 'den' d. MMMM y","field-thu-relative+-1":"sidste torsdag","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"middag","dateFormatItem-yMd":"d/M/y","dateFormatItem-yM":"M/y","field-era":"Æra","months-standAlone-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQQQQ":"QQQQ y","field-year":"År","dateFormatItem-MMdd":"dd/MM","field-hour":"Time","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"field-sat-relative+0":"denne lørdag","field-sat-relative+1":"næste lørdag","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-thu-relative+0":"denne torsdag","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"i overmorgen","field-thu-relative+1":"næste torsdag","dateFormatItem-H":"HH","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],"quarters-format-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"M","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dayPeriods-format-abbr-noon":"middag","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"denne søndag","dateFormatItem-Hm":"HH.mm","quarters-standAlone-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"field-sun-relative+1":"næste søndag","eraAbbr":["f.Kr.","e.Kr."],"field-minute":"Minut","field-dayperiod":"AM/PM","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"i går","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'kl.' {0}","field-day-relative+-2":"i forgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} 'kl.' {0}","field-fri-relative+0":"denne fredag","field-fri-relative+1":"næste fredag","field-day":"Dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"Tidszone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"sidste år","field-month-relative+-1":"sidste måned","dateFormatItem-hm":"h.mm a","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"eraNames":["f.Kr.","e.Kr."],"dateFormatItem-yMMMd":"d. MMM y","days-format-narrow":["S","M","T","O","T","F","L"],"days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"MMM","field-month":"Måned","field-tue-relative+0":"denne tirsdag","field-tue-relative+1":"næste tirsdag","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"E d. MMMM","dateFormatItem-EHm":"E HH.mm","field-mon-relative+0":"denne mandag","field-mon-relative+1":"næste mandag","dateFormat-short":"dd/MM/y","dateFormatItem-EHms":"E HH.mm.ss","dateFormatItem-Ehms":"E h.mm.ss a","dayPeriods-format-narrow-noon":"middag","field-second":"Sekund","field-sat-relative+-1":"sidste lørdag","dateFormatItem-yMMMEd":"E d. MMM y","field-sun-relative+-1":"sidste søndag","field-month-relative+0":"denne måned","field-month-relative+1":"næste måned","dateFormatItem-Ed":"E 'den' d.","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Uge","dateFormat-medium":"d. MMM y","field-year-relative+0":"i år","field-week-relative+-1":"sidste uge","field-year-relative+1":"næste år","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"sidste mandag","field-week-relative+0":"denne uge","field-week-relative+1":"næste uge"}); \ No newline at end of file
+define("dojo/cldr/nls/da/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"på to.","field-thu-narrow-relative+1":"på to.","field-sun-narrow-relative+0":"på sø.","field-sun-narrow-relative+1":"på sø.","months-format-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH.mm.ss","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr.","eraNarrow":["fKr","fvt","eKr","vt"],"dateFormatItem-Hmv":"HH.mm v","dateFormatItem-hmsv":"h.mm.ss a v","dateFormatItem-yMMMd":"d. MMM y","dayPeriods-format-abbr-night1":"om natten","dayPeriods-format-narrow-evening1":"om aftenen","days-standAlone-narrow":["S","M","T","O","T","F","L"],"days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dayPeriods-format-abbr-afternoon1":"om eftermiddagen","dayPeriods-format-wide-evening1":"om aftenen","dateFormatItem-Ehm":"E h.mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"sidste on.","dayPeriods-standAlone-wide-evening1":"aften","field-minute-narrow-relative+0":"dette min.","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yMM":"MM.y","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","dateFormatItem-Ehms":"E h.mm.ss a","dayPeriods-standAlone-narrow-evening1":"aften","dayPeriods-standAlone-abbr-afternoon1":"eftermiddag","field-thu-relative+0":"på torsdag","dayPeriods-standAlone-abbr-night1":"nat","field-thu-relative+1":"på torsdag","dayPeriods-format-wide-am":"AM","field-fri-relative+0":"på fredag","field-fri-relative+1":"på fredag","dateFormatItem-yMd":"d.M.y","field-thu-narrow-relative+-1":"sidste to.","field-quarter-relative+0":"dette kvartal","field-quarter-relative+1":"næste kvartal","field-sun-short-relative+0":"på søn.","timeFormat-short":"HH.mm","field-sun-short-relative+1":"på søn.","dateFormatItem-hms":"h.mm.ss a","dayPeriods-format-narrow-afternoon1":"om eftermiddagen","dateFormatItem-Md":"d.M","dateFormatItem-Hmsv":"HH.mm.ss v","dateFormatItem-hmv":"h.mm a v","field-week-narrow":"uge","field-hour-relative+0":"denne time","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-mon-narrow-relative+-1":"sidste ma.","field-minute-narrow":"min.","dateFormatItem-MMMMEd":"E d. MMMM","field-thu-short-relative+0":"på tor.","field-mon-relative+0":"på mandag","field-thu-short-relative+1":"på tor.","field-mon-relative+1":"på mandag","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"i dag","field-era-short":"æra","field-day-narrow-relative+1":"i morgen","field-sat-narrow-relative+0":"på lø.","field-day-narrow-relative+2":"i overmorgen","timeFormat-long":"HH.mm.ss z","field-sat-narrow-relative+1":"på lø.","field-week-narrow-relative+0":"denne uge","field-week-narrow-relative+1":"næste uge","field-hour-short-relative+0":"denne time","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-month":"måned","months-standAlone-wide":["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow":"ugedag","dayPeriods-standAlone-narrow-afternoon1":"eftermiddag","field-year-relative+0":"i år","field-year-relative+1":"næste år","dayPeriods-format-abbr-evening1":"om aftenen","dayPeriods-format-narrow-midnight":"midnat","dayPeriods-format-wide-midnight":"midnat","field-tue-relative+0":"på tirsdag","field-tue-relative+1":"på tirsdag","dayPeriods-standAlone-abbr-evening1":"aften","field-minute-short-relative+0":"dette min.","dateFormatItem-hm":"h.mm a","dayPeriods-standAlone-wide-midnight":"midnat","field-year-narrow":"år","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-tue-short-relative+0":"på tir.","dayPeriods-standAlone-narrow-midnight":"midnat","field-tue-short-relative+1":"på tir.","dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","dateTimeFormat-full":"{1} 'kl'. {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h.mm B","dateFormatItem-H":"HH","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","dateFormatItem-M":"M","field-wed-short-relative+0":"på ons.","field-fri-short-relative+0":"på fre.","field-wed-short-relative+1":"på ons.","field-fri-short-relative+1":"på fre.","field-weekOfMonth-short":"uge i md.","field-quarter-short-relative+-1":"sidste kvt.","field-year-short-relative+-1":"sidste år","dateFormatItem-Bhm":"h.mm B","dayPeriods-format-wide-night1":"om natten","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"sidste kvt.","dateFormatItem-d":"d.","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"field-weekOfMonth-narrow":"uge i md.","dateFormatItem-y":"y","field-minute-relative+0":"dette minut","field-year-short-relative+0":"i år","dateFormatItem-EBhms":"E h.mm.ss B","field-year-short-relative+1":"næste år","field-weekday":"ugedag","dayPeriods-format-narrow-pm":"p","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-narrow-relative+-1":"sidste ti.","dateFormatItem-yMEd":"E d.M.y","dayPeriods-standAlone-wide-night1":"nat","field-year-narrow-relative+-1":"sidste år","field-sat-relative+-1":"sidste lørdag","dayPeriods-format-abbr-midnight":"midnat","dayPeriods-format-narrow-morning1":"om morgenen","dayPeriods-format-narrow-morning2":"om formiddagen","dayPeriods-format-wide-morning1":"om morgenen","dayPeriods-format-wide-morning2":"om formiddagen","dayPeriods-standAlone-abbr-midnight":"midnat","dayPeriods-standAlone-narrow-pm":"PM","dayPeriods-standAlone-wide-morning1":"morgen","field-mon-narrow-relative+0":"på ma.","dayPeriods-standAlone-wide-morning2":"formiddag","field-mon-narrow-relative+1":"på ma.","field-second":"sekund","dateFormatItem-yMMMEd":"E d. MMM y","field-year-relative+-1":"sidste år","field-weekdayOfMonth-short":"ugedag i md.","dateFormat-short":"dd.MM.y","eraNames":["f.Kr.","e.Kr."],"field-second-short":"sek.","field-thu-short-relative+-1":"sidste tor.","field-zone":"tidszone","field-dayperiod-narrow":"AM/PM","field-sun-short-relative+-1":"sidste søn.","dayPeriods-standAlone-narrow-morning1":"morgen","dayPeriods-standAlone-narrow-morning2":"formiddag","eraAbbr":["f.Kr.","e.Kr."],"field-week-short":"uge","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm.ss","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-day-relative+2":"i overmorgen","field-day-short-relative+0":"i dag","field-dayOfYear-short":"dag i året","field-day-short-relative+1":"i morgen","dateFormat-long":"d. MMMM y","field-day-short-relative+2":"i overmorgen","field-sun-narrow-relative+-1":"sidste sø.","field-second-relative+0":"nu","field-quarter-relative+-1":"sidste kvartal","dayPeriods-format-narrow-night1":"om natten","quarters-format-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"dayPeriods-standAlone-narrow-night1":"nat","field-week-relative+-1":"sidste uge","dayPeriods-format-abbr-morning1":"om morgenen","field-month-relative+-1":"sidste måned","dayPeriods-format-abbr-morning2":"om formiddagen","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year":"år","field-era":"æra","dayPeriods-standAlone-abbr-morning1":"morgen","dayPeriods-standAlone-abbr-morning2":"formiddag","days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"i går","field-day-short-relative+-2":"i forgårs","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-Bhms":"h.mm.ss B","field-hour":"time","field-dayOfYear-narrow":"dag i året","field-quarter":"kvartal","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","dateFormatItem-MMdd":"dd.MM","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"dag","field-mon-relative+-1":"sidste mandag","field-dayOfYear":"dag i året","dateFormat-medium":"d. MMM y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d. MMM y G","dateFormatItem-MEd":"E d.M","field-tue-short-relative+-1":"sidste tir.","field-year-short":"år","field-month-short":"md.","dateFormatItem-MMMEd":"E d. MMM","dayPeriods-format-wide-afternoon1":"om eftermiddagen","dateFormatItem-MMMd":"d. MMM","dateFormatItem-Bh":"h B","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"på lørdag","field-sat-relative+1":"på lørdag","dayPeriods-format-wide-pm":"PM","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"field-zone-short":"zone","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","dayPeriods-standAlone-wide-afternoon1":"eftermiddag","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"sidste fre.","field-month-narrow":"md.","dayPeriods-format-narrow-am":"a","field-month-narrow-relative+-1":"sidste md.","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"field-weekday-short":"ugedag","field-day-narrow-relative+-1":"i går","field-day-narrow-relative+-2":"i forgårs","field-quarter-short":"kvt.","days-format-short":["sø","ma","ti","on","to","fr","lø"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-EHm":"E HH.mm","field-quarter-narrow":"kvt.","field-mon-short-relative+0":"på man.","field-mon-short-relative+1":"på man.","field-dayperiod-short":"AM/PM","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"sidste uge","field-thu-relative+-1":"sidste torsdag","field-fri-narrow-relative+-1":"sidste fr.","field-mon-short-relative+-1":"sidste man.","timeFormat-medium":"HH.mm.ss","field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","dateFormatItem-Ed":"E 'den' d.","field-wed-relative+-1":"sidste onsdag","field-weekOfMonth":"uge i måneden","field-weekdayOfMonth-narrow":"ugedag i md.","dayPeriods-standAlone-wide-am":"AM","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"sidste fredag","field-minute":"minut","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"field-day-short":"dag","field-dayperiod":"AM/PM","field-hour-short":"t.","months-standAlone-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"field-month-relative+0":"denne måned","field-second-narrow":"s","field-month-relative+1":"næste måned","dateFormat-full":"EEEE 'den' d. MMMM y","field-era-narrow":"æra","field-sat-short-relative+-1":"sidste lør.","field-week-short-relative+-1":"sidste uge","dateTimeFormat-long":"{1} 'kl'. {0}","dateFormatItem-yM":"M.y","field-sun-relative+-1":"sidste søndag","field-wed-short-relative+-1":"sidste ons.","field-weekdayOfMonth":"ugedag i måneden","field-quarter-narrow-relative+0":"dette kvt.","dateFormatItem-GyMMMEd":"E d. MMM y G","field-quarter-narrow-relative+1":"næste kvt.","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","field-hour-narrow":"t.","field-year-narrow-relative+0":"i år","field-year-narrow-relative+1":"næste år","dateFormatItem-Gy":"y G","field-zone-narrow":"zone","field-tue-relative+-1":"sidste tirsdag","field-minute-short":"min.","dateFormatItem-yw":"'uge' w 'i' Y","dateFormatItem-Hm":"HH.mm","field-week-relative+0":"denne uge","field-week-relative+1":"næste uge","dateFormatItem-MMM":"MMM","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","field-sat-narrow-relative+-1":"sidste lø.","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"dateFormatItem-MMMMW":"'uge' W 'i' MMMM","field-month-short-relative+-1":"sidste md.","dateFormatItem-EHms":"E HH.mm.ss","dateFormatItem-MMMMd":"d. MMMM","field-week":"uge","field-day-narrow":"dag","field-hour-narrow-relative+0":"denne time"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/hebrew.js b/lib/dojo/cldr/nls/da/hebrew.js
index bdf86be35..6207517c3 100644
--- a/lib/dojo/cldr/nls/da/hebrew.js
+++ b/lib/dojo/cldr/nls/da/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/da/hebrew",{"days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"field-second-relative+0":"nu","field-weekday":"Ugedag","field-wed-relative+0":"denne onsdag","field-wed-relative+1":"næste onsdag","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"E d. MMM","field-tue-relative+-1":"sidste tirsdag","days-format-short":["sø","ma","ti","on","to","fr","lø"],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"sidste fredag","field-wed-relative+-1":"sidste onsdag","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y G","field-thu-relative+-1":"sidste torsdag","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"middag","field-era":"Æra","timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","field-year":"År","field-hour":"Time","field-sat-relative+0":"denne lørdag","field-sat-relative+1":"næste lørdag","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-thu-relative+0":"denne torsdag","field-day-relative+1":"i morgen","field-thu-relative+1":"næste torsdag","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"i overmorgen","quarters-format-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-M":"M","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","dayPeriods-format-abbr-noon":"middag","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"denne søndag","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"næste søndag","quarters-standAlone-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"eraAbbr":["AM"],"field-minute":"Minut","field-dayperiod":"AM/PM","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"denne fredag","field-fri-relative+1":"næste fredag","field-day":"Dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"Tidszone","dateFormatItem-y":"y G","field-year-relative+-1":"sidste år","field-month-relative+-1":"sidste måned","dateFormatItem-hm":"h.mm a","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"Måned","dateFormatItem-MMM":"MMM","days-standAlone-narrow":["S","M","T","O","T","F","L"],"field-tue-relative+0":"denne tirsdag","field-tue-relative+1":"næste tirsdag","field-mon-relative+0":"denne mandag","field-mon-relative+1":"næste mandag","dateFormat-short":"d/M/y","dayPeriods-format-narrow-noon":"middag","field-second":"Sekund","field-sat-relative+-1":"sidste lørdag","field-sun-relative+-1":"sidste søndag","field-month-relative+0":"denne måned","field-month-relative+1":"næste måned","dateFormatItem-Ed":"E 'd'. d.","field-week":"Uge","dateFormat-medium":"d. MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"sidste uge","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"næste år","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"sidste mandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"denne uge","field-week-relative+1":"næste uge"}); \ No newline at end of file
+define("dojo/cldr/nls/da/hebrew",{"field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","field-tue-relative+-1":"sidste tirsdag","field-year":"år","dateFormatItem-Hm":"HH.mm","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","dateFormatItem-ms":"mm.ss","timeFormat-short":"HH.mm","field-minute":"minut","field-month-narrow-relative+-1":"sidste md.","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","field-thu-short-relative+0":"på tor.","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"på tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uge","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"næste uge","field-wed-narrow-relative+-1":"sidste on.","dateFormatItem-EBhms":"E h.mm.ss B","field-year-narrow":"år","field-era-short":"æra","field-year-narrow-relative+0":"i år","field-tue-relative+0":"på tirsdag","field-year-narrow-relative+1":"næste år","field-tue-relative+1":"på tirsdag","field-weekdayOfMonth":"ugedag i måneden","field-second-short":"sek.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"ugedag i md.","field-week-relative+0":"denne uge","field-month-relative+0":"denne måned","field-week-relative+1":"næste uge","field-month-relative+1":"næste måned","field-sun-narrow-relative+0":"på sø.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"på man.","field-sun-narrow-relative+1":"på sø.","field-mon-short-relative+1":"på man.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["AM"],"field-weekOfMonth":"uge i måneden","field-month-short":"md.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"sidste år","field-sat-short-relative+-1":"sidste lør.","field-hour-relative+0":"denne time","dateFormatItem-yyyyMEd":"E d/M/y G","field-wed-relative+-1":"sidste onsdag","field-sat-narrow-relative+-1":"sidste lø.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"denne time","field-quarter":"kvartal","field-week-short":"uge","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"i overmorgen","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"på tir.","field-tue-short-relative+1":"på tir.","field-month-short-relative+-1":"sidste md.","field-mon-relative+-1":"sidste mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"dag","dateFormatItem-MMM":"MMM","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AM"],"quarters-standAlone-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"dateFormatItem-yyyyM":"M/y G","field-second-narrow":"s","field-mon-relative+0":"på mandag","field-mon-relative+1":"på mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"i forgårs","field-quarter-relative+-1":"sidste kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sidste uge","days-format-short":["sø","ma","ti","on","to","fr","lø"],"field-dayOfYear":"dag i året","field-sat-relative+-1":"sidste lørdag","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"dette min.","field-hour":"time","months-format-wide":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"sidste måned","dateFormatItem-Hms":"HH.mm.ss","field-quarter-short":"kvt.","field-sat-narrow-relative+0":"på lø.","field-fri-relative+0":"på fredag","field-sat-narrow-relative+1":"på lø.","field-fri-relative+1":"på fredag","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","field-sun-short-relative+0":"på søn.","field-sun-short-relative+1":"på søn.","field-week-relative+-1":"sidste uge","field-quarter-short-relative+-1":"sidste kvt.","field-minute-short-relative+0":"dette min.","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"field-quarter-relative+0":"dette kvartal","field-minute-relative+0":"dette minut","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"næste kvartal","field-wed-short-relative+-1":"sidste ons.","dateFormat-short":"d/M/y","field-thu-short-relative+-1":"sidste tor.","field-year-narrow-relative+-1":"sidste år","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sidste ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sidste to.","field-tue-narrow-relative+-1":"sidste ti.","field-weekOfMonth-short":"uge i md.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"på ons.","months-standAlone-wide":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"dateFormatItem-M":"M","field-wed-short-relative+1":"på ons.","field-sun-relative+-1":"sidste søndag","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-hm":"h.mm a","field-weekday":"ugedag","dateFormatItem-d":"d.","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kvt.","field-sat-relative+0":"på lørdag","field-day-short-relative+1":"i morgen","field-quarter-narrow-relative+1":"næste kvt.","field-sat-relative+1":"på lørdag","field-day-short-relative+2":"i overmorgen","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","months-standAlone-abbr":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"months-format-wide-leap":"adar II","field-dayOfYear-narrow":"dag i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","field-weekdayOfMonth-short":"ugedag i md.","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"på to.","field-thu-narrow-relative+1":"på to.","field-sun-narrow-relative+-1":"sidste sø.","field-mon-short-relative+-1":"sidste man.","field-thu-relative+0":"på torsdag","field-thu-relative+1":"på torsdag","field-fri-short-relative+-1":"sidste fre.","dateFormatItem-hms":"h.mm.ss a","field-thu-relative+-1":"sidste torsdag","field-week":"uge","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E 'd'. d.","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-quarter-narrow-relative+-1":"sidste kvt.","field-year-short-relative+0":"i år","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"næste år","field-fri-short-relative+0":"på fre.","field-fri-short-relative+1":"på fre.","days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"field-week-short-relative+-1":"sidste uge","field-hour-narrow-relative+0":"denne time","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t.","field-zone-short":"zone","quarters-format-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"field-month-narrow":"md.","field-hour-narrow":"t.","field-fri-narrow-relative+-1":"sidste fr.","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-era-narrow":"æra","field-fri-relative+-1":"sidste fredag","eraNarrow":"AM","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"sidste tir.","field-minute-narrow":"min.","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-mon-narrow-relative+0":"på ma.","field-mon-narrow-relative+1":"på ma.","dateFormatItem-EHm":"E HH.mm","field-year-short-relative+-1":"sidste år","field-zone":"tidszone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uge i md.","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"ugedag","field-quarter-narrow":"kvt.","field-sun-short-relative+-1":"sidste søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ugedag","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"uge","field-era":"æra","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/indian.js b/lib/dojo/cldr/nls/da/indian.js
new file mode 100644
index 000000000..6683b5145
--- /dev/null
+++ b/lib/dojo/cldr/nls/da/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/da/indian",{"field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","field-tue-relative+-1":"sidste tirsdag","field-year":"år","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","field-minute":"minut","field-month-narrow-relative+-1":"sidste md.","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","field-thu-short-relative+0":"på tor.","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"på tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uge","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"næste uge","field-wed-narrow-relative+-1":"sidste on.","field-year-narrow":"år","field-era-short":"æra","field-year-narrow-relative+0":"i år","field-tue-relative+0":"på tirsdag","field-year-narrow-relative+1":"næste år","field-tue-relative+1":"på tirsdag","field-weekdayOfMonth":"ugedag i måneden","field-second-short":"sek.","field-weekdayOfMonth-narrow":"ugedag i md.","field-week-relative+0":"denne uge","field-month-relative+0":"denne måned","field-week-relative+1":"næste uge","field-month-relative+1":"næste måned","field-sun-narrow-relative+0":"på sø.","field-mon-short-relative+0":"på man.","field-sun-narrow-relative+1":"på sø.","field-mon-short-relative+1":"på man.","field-second-relative+0":"nu","eraNames":["Saka"],"field-weekOfMonth":"uge i måneden","field-month-short":"md.","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"sidste år","field-sat-short-relative+-1":"sidste lør.","field-hour-relative+0":"denne time","field-wed-relative+-1":"sidste onsdag","field-sat-narrow-relative+-1":"sidste lø.","field-second":"sekund","field-hour-short-relative+0":"denne time","field-quarter":"kvartal","field-week-short":"uge","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"i overmorgen","field-tue-short-relative+0":"på tir.","field-tue-short-relative+1":"på tir.","field-month-short-relative+-1":"sidste md.","field-mon-relative+-1":"sidste mandag","field-month":"måned","field-day-narrow":"dag","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","eraAbbr":["Saka"],"field-second-narrow":"s","field-mon-relative+0":"på mandag","field-mon-relative+1":"på mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"i forgårs","field-quarter-relative+-1":"sidste kvartal","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sidste uge","field-dayOfYear":"dag i året","field-sat-relative+-1":"sidste lørdag","field-hour":"time","field-minute-narrow-relative+0":"dette min.","months-format-wide":["chaitra","vaisakha","jyaistha","asadha","sravana","bhadra","asvina","kartika","agrahayana","pausa","magha","phalguna"],"field-month-relative+-1":"sidste måned","field-quarter-short":"kvt.","field-sat-narrow-relative+0":"på lø.","field-fri-relative+0":"på fredag","field-sat-narrow-relative+1":"på lø.","field-fri-relative+1":"på fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","field-sun-short-relative+0":"på søn.","field-sun-short-relative+1":"på søn.","field-week-relative+-1":"sidste uge","field-quarter-short-relative+-1":"sidste kvt.","field-minute-short-relative+0":"dette min.","field-quarter-relative+0":"dette kvartal","field-minute-relative+0":"dette minut","field-quarter-relative+1":"næste kvartal","field-wed-short-relative+-1":"sidste ons.","field-thu-short-relative+-1":"sidste tor.","field-year-narrow-relative+-1":"sidste år","field-mon-narrow-relative+-1":"sidste ma.","field-thu-narrow-relative+-1":"sidste to.","field-tue-narrow-relative+-1":"sidste ti.","field-weekOfMonth-short":"uge i md.","field-wed-short-relative+0":"på ons.","field-wed-short-relative+1":"på ons.","field-sun-relative+-1":"sidste søndag","field-weekday":"ugedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kvt.","field-sat-relative+0":"på lørdag","field-day-short-relative+1":"i morgen","field-quarter-narrow-relative+1":"næste kvt.","field-sat-relative+1":"på lørdag","field-day-short-relative+2":"i overmorgen","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","field-dayOfYear-narrow":"dag i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","field-weekdayOfMonth-short":"ugedag i md.","field-zone-narrow":"zone","field-thu-narrow-relative+0":"på to.","field-thu-narrow-relative+1":"på to.","field-sun-narrow-relative+-1":"sidste sø.","field-mon-short-relative+-1":"sidste man.","field-thu-relative+0":"på torsdag","field-thu-relative+1":"på torsdag","field-fri-short-relative+-1":"sidste fre.","field-thu-relative+-1":"sidste torsdag","field-week":"uge","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-quarter-narrow-relative+-1":"sidste kvt.","field-year-short-relative+0":"i år","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"næste år","field-fri-short-relative+0":"på fre.","field-fri-short-relative+1":"på fre.","field-week-short-relative+-1":"sidste uge","field-hour-narrow-relative+0":"denne time","field-hour-short":"t.","field-zone-short":"zone","field-month-narrow":"md.","field-hour-narrow":"t.","field-fri-narrow-relative+-1":"sidste fr.","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-era-narrow":"æra","field-fri-relative+-1":"sidste fredag","eraNarrow":"Saka","field-tue-short-relative+-1":"sidste tir.","field-minute-narrow":"min.","field-mon-narrow-relative+0":"på ma.","field-mon-narrow-relative+1":"på ma.","field-year-short-relative+-1":"sidste år","field-zone":"tidszone","field-weekOfMonth-narrow":"uge i md.","field-weekday-narrow":"ugedag","field-quarter-narrow":"kvt.","field-sun-short-relative+-1":"sidste søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ugedag","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","field-day-short":"dag","field-week-narrow":"uge","field-era":"æra","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/islamic.js b/lib/dojo/cldr/nls/da/islamic.js
index 100b834b1..251496410 100644
--- a/lib/dojo/cldr/nls/da/islamic.js
+++ b/lib/dojo/cldr/nls/da/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/da/islamic",{"days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"field-second-relative+0":"nu","field-weekday":"Ugedag","field-wed-relative+0":"denne onsdag","field-wed-relative+1":"næste onsdag","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"E d. MMM","field-tue-relative+-1":"sidste tirsdag","days-format-short":["sø","ma","ti","on","to","fr","lø"],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"sidste fredag","field-wed-relative+-1":"sidste onsdag","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y G","field-thu-relative+-1":"sidste torsdag","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"middag","field-era":"Æra","timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","field-year":"År","field-hour":"Time","field-sat-relative+0":"denne lørdag","field-sat-relative+1":"næste lørdag","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-thu-relative+0":"denne torsdag","field-day-relative+1":"i morgen","field-thu-relative+1":"næste torsdag","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"i overmorgen","quarters-format-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-M":"M","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","dayPeriods-format-abbr-noon":"middag","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"denne søndag","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"næste søndag","quarters-standAlone-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"eraAbbr":["AH"],"field-minute":"Minut","field-dayperiod":"AM/PM","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"denne fredag","field-fri-relative+1":"næste fredag","field-day":"Dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"Tidszone","dateFormatItem-y":"y G","field-year-relative+-1":"sidste år","field-month-relative+-1":"sidste måned","dateFormatItem-hm":"h.mm a","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"Måned","dateFormatItem-MMM":"MMM","days-standAlone-narrow":["S","M","T","O","T","F","L"],"field-tue-relative+0":"denne tirsdag","field-tue-relative+1":"næste tirsdag","field-mon-relative+0":"denne mandag","field-mon-relative+1":"næste mandag","dateFormat-short":"d/M/y","dayPeriods-format-narrow-noon":"middag","field-second":"Sekund","field-sat-relative+-1":"sidste lørdag","field-sun-relative+-1":"sidste søndag","field-month-relative+0":"denne måned","field-month-relative+1":"næste måned","dateFormatItem-Ed":"E 'd'. d.","field-week":"Uge","dateFormat-medium":"d. MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"sidste uge","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"næste år","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"sidste mandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"denne uge","field-week-relative+1":"næste uge"}); \ No newline at end of file
+define("dojo/cldr/nls/da/islamic",{"field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","field-tue-relative+-1":"sidste tirsdag","field-year":"år","dateFormatItem-Hm":"HH.mm","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","dateFormatItem-ms":"mm.ss","timeFormat-short":"HH.mm","field-minute":"minut","field-month-narrow-relative+-1":"sidste md.","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","field-thu-short-relative+0":"på tor.","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"på tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uge","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"næste uge","field-wed-narrow-relative+-1":"sidste on.","dateFormatItem-EBhms":"E h.mm.ss B","field-year-narrow":"år","field-era-short":"æra","field-year-narrow-relative+0":"i år","field-tue-relative+0":"på tirsdag","field-year-narrow-relative+1":"næste år","field-tue-relative+1":"på tirsdag","field-weekdayOfMonth":"ugedag i måneden","field-second-short":"sek.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"ugedag i md.","field-week-relative+0":"denne uge","field-month-relative+0":"denne måned","field-week-relative+1":"næste uge","field-month-relative+1":"næste måned","field-sun-narrow-relative+0":"på sø.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"på man.","field-sun-narrow-relative+1":"på sø.","field-mon-short-relative+1":"på man.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["AH"],"field-weekOfMonth":"uge i måneden","field-month-short":"md.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"sidste år","field-sat-short-relative+-1":"sidste lør.","field-hour-relative+0":"denne time","dateFormatItem-yyyyMEd":"E d/M/y G","field-wed-relative+-1":"sidste onsdag","field-sat-narrow-relative+-1":"sidste lø.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"denne time","field-quarter":"kvartal","field-week-short":"uge","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"i overmorgen","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"på tir.","field-tue-short-relative+1":"på tir.","field-month-short-relative+-1":"sidste md.","field-mon-relative+-1":"sidste mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"dag","dateFormatItem-MMM":"MMM","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AH"],"quarters-standAlone-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"dateFormatItem-yyyyM":"M/y G","field-second-narrow":"s","field-mon-relative+0":"på mandag","field-mon-relative+1":"på mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"i forgårs","field-quarter-relative+-1":"sidste kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sidste uge","days-format-short":["sø","ma","ti","on","to","fr","lø"],"field-dayOfYear":"dag i året","field-sat-relative+-1":"sidste lørdag","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"dette min.","field-hour":"time","months-format-wide":["muharram","safar","rabiʻ I","rabiʻ II","jumada I","jumada II","rajab","shaʻban","ramadan","shawwal","dhuʻl-Qiʻdah","dhuʻl-Hijjah"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"sidste måned","dateFormatItem-Hms":"HH.mm.ss","field-quarter-short":"kvt.","field-sat-narrow-relative+0":"på lø.","field-fri-relative+0":"på fredag","field-sat-narrow-relative+1":"på lø.","field-fri-relative+1":"på fredag","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","field-sun-short-relative+0":"på søn.","field-sun-short-relative+1":"på søn.","field-week-relative+-1":"sidste uge","field-quarter-short-relative+-1":"sidste kvt.","field-minute-short-relative+0":"dette min.","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["muharram","safar","rabiʻ I","rabiʻ II","jumada I","jumada II","rajab","shaʻban","ramadan","shawwal","dhuʻl-Qiʻdah","dhuʻl-Hijjah"],"field-quarter-relative+0":"dette kvartal","field-minute-relative+0":"dette minut","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"næste kvartal","field-wed-short-relative+-1":"sidste ons.","dateFormat-short":"d/M/y","field-thu-short-relative+-1":"sidste tor.","field-year-narrow-relative+-1":"sidste år","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sidste ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sidste to.","field-tue-narrow-relative+-1":"sidste ti.","field-weekOfMonth-short":"uge i md.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"på ons.","months-standAlone-wide":["muharram","safar","rabiʻ I","rabiʻ II","jumada I","jumada II","rajab","shaʻban","ramadan","shawwal","dhuʻl-Qiʻdah","dhuʻl-Hijjah"],"dateFormatItem-M":"M","field-wed-short-relative+1":"på ons.","field-sun-relative+-1":"sidste søndag","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-hm":"h.mm a","field-weekday":"ugedag","dateFormatItem-d":"d.","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kvt.","field-sat-relative+0":"på lørdag","field-day-short-relative+1":"i morgen","field-quarter-narrow-relative+1":"næste kvt.","field-sat-relative+1":"på lørdag","field-day-short-relative+2":"i overmorgen","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","months-standAlone-abbr":["muharram","safar","rabiʻ I","rabiʻ II","jumada I","jumada II","rajab","shaʻban","ramadan","shawwal","dhuʻl-Qiʻdah","dhuʻl-Hijjah"],"field-dayOfYear-narrow":"dag i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","field-weekdayOfMonth-short":"ugedag i md.","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"på to.","field-thu-narrow-relative+1":"på to.","field-sun-narrow-relative+-1":"sidste sø.","field-mon-short-relative+-1":"sidste man.","field-thu-relative+0":"på torsdag","field-thu-relative+1":"på torsdag","field-fri-short-relative+-1":"sidste fre.","dateFormatItem-hms":"h.mm.ss a","field-thu-relative+-1":"sidste torsdag","field-week":"uge","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E 'd'. d.","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-quarter-narrow-relative+-1":"sidste kvt.","field-year-short-relative+0":"i år","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"næste år","field-fri-short-relative+0":"på fre.","field-fri-short-relative+1":"på fre.","days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"field-week-short-relative+-1":"sidste uge","field-hour-narrow-relative+0":"denne time","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t.","field-zone-short":"zone","quarters-format-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"field-month-narrow":"md.","field-hour-narrow":"t.","field-fri-narrow-relative+-1":"sidste fr.","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-era-narrow":"æra","field-fri-relative+-1":"sidste fredag","eraNarrow":"AH","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"sidste tir.","field-minute-narrow":"min.","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-mon-narrow-relative+0":"på ma.","field-mon-narrow-relative+1":"på ma.","dateFormatItem-EHm":"E HH.mm","field-year-short-relative+-1":"sidste år","field-zone":"tidszone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uge i md.","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"ugedag","field-quarter-narrow":"kvt.","field-sun-short-relative+-1":"sidste søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ugedag","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"uge","field-era":"æra","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/japanese.js b/lib/dojo/cldr/nls/da/japanese.js
index 02f02d30d..b07e9bd20 100644
--- a/lib/dojo/cldr/nls/da/japanese.js
+++ b/lib/dojo/cldr/nls/da/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/da/japanese",{"field-sat-relative+0":"denne lørdag","field-sat-relative+1":"næste lørdag","field-dayperiod":"AM/PM","field-sun-relative+-1":"sidste søndag","field-mon-relative+-1":"sidste mandag","field-minute":"Minut","field-day-relative+-1":"i går","field-weekday":"Ugedag","field-day-relative+-2":"i forgårs","field-era":"Æra","field-hour":"Time","field-sun-relative+0":"denne søndag","field-sun-relative+1":"næste søndag","field-wed-relative+-1":"sidste onsdag","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-day-relative+2":"i overmorgen","dateFormat-long":"d. MMMM y G","field-tue-relative+0":"denne tirsdag","field-zone":"Tidszone","field-tue-relative+1":"næste tirsdag","field-week-relative+-1":"sidste uge","dateFormat-medium":"d. MMM y G","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-sat-relative+-1":"sidste lørdag","field-year-relative+-1":"sidste år","field-year":"År","field-fri-relative+0":"denne fredag","field-fri-relative+1":"næste fredag","field-week":"Uge","field-week-relative+0":"denne uge","field-week-relative+1":"næste uge","field-month-relative+0":"denne måned","field-month":"Måned","field-month-relative+1":"næste måned","field-fri-relative+-1":"sidste fredag","field-second":"Sekund","field-tue-relative+-1":"sidste tirsdag","field-day":"Dag","field-mon-relative+0":"denne mandag","field-mon-relative+1":"næste mandag","field-thu-relative+0":"denne torsdag","field-second-relative+0":"nu","dateFormat-short":"d/M/y","field-thu-relative+1":"næste torsdag","dateFormat-full":"EEEE d. MMMM y G","field-wed-relative+0":"denne onsdag","field-wed-relative+1":"næste onsdag","field-month-relative+-1":"sidste måned","field-thu-relative+-1":"sidste torsdag"}); \ No newline at end of file
+define("dojo/cldr/nls/da/japanese",{"field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","field-tue-relative+-1":"sidste tirsdag","field-year":"år","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","field-minute":"minut","field-month-narrow-relative+-1":"sidste md.","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","field-thu-short-relative+0":"på tor.","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"på tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uge","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"næste uge","field-wed-narrow-relative+-1":"sidste on.","field-year-narrow":"år","field-era-short":"æra","field-year-narrow-relative+0":"i år","field-tue-relative+0":"på tirsdag","field-year-narrow-relative+1":"næste år","field-tue-relative+1":"på tirsdag","field-weekdayOfMonth":"ugedag i måneden","field-second-short":"sek.","field-weekdayOfMonth-narrow":"ugedag i md.","field-week-relative+0":"denne uge","field-month-relative+0":"denne måned","field-week-relative+1":"næste uge","field-month-relative+1":"næste måned","field-sun-narrow-relative+0":"på sø.","field-mon-short-relative+0":"på man.","field-sun-narrow-relative+1":"på sø.","field-mon-short-relative+1":"på man.","field-second-relative+0":"nu","field-weekOfMonth":"uge i måneden","field-month-short":"md.","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"sidste år","field-sat-short-relative+-1":"sidste lør.","field-hour-relative+0":"denne time","field-wed-relative+-1":"sidste onsdag","field-sat-narrow-relative+-1":"sidste lø.","field-second":"sekund","dateFormat-long":"d. MMMM y G","field-hour-short-relative+0":"denne time","field-quarter":"kvartal","field-week-short":"uge","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"i overmorgen","field-tue-short-relative+0":"på tir.","field-tue-short-relative+1":"på tir.","field-month-short-relative+-1":"sidste md.","field-mon-relative+-1":"sidste mandag","field-month":"måned","field-day-narrow":"dag","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","dateFormat-medium":"d. MMM y G","field-second-narrow":"s","field-mon-relative+0":"på mandag","field-mon-relative+1":"på mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"i forgårs","field-quarter-relative+-1":"sidste kvartal","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sidste uge","field-dayOfYear":"dag i året","field-sat-relative+-1":"sidste lørdag","field-hour":"time","field-minute-narrow-relative+0":"dette min.","dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"sidste måned","field-quarter-short":"kvt.","field-sat-narrow-relative+0":"på lø.","field-fri-relative+0":"på fredag","field-sat-narrow-relative+1":"på lø.","field-fri-relative+1":"på fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","field-sun-short-relative+0":"på søn.","field-sun-short-relative+1":"på søn.","field-week-relative+-1":"sidste uge","field-quarter-short-relative+-1":"sidste kvt.","field-minute-short-relative+0":"dette min.","field-quarter-relative+0":"dette kvartal","field-minute-relative+0":"dette minut","field-quarter-relative+1":"næste kvartal","field-wed-short-relative+-1":"sidste ons.","dateFormat-short":"d/M/y","field-thu-short-relative+-1":"sidste tor.","field-year-narrow-relative+-1":"sidste år","field-mon-narrow-relative+-1":"sidste ma.","field-thu-narrow-relative+-1":"sidste to.","field-tue-narrow-relative+-1":"sidste ti.","field-weekOfMonth-short":"uge i md.","field-wed-short-relative+0":"på ons.","field-wed-short-relative+1":"på ons.","field-sun-relative+-1":"sidste søndag","field-weekday":"ugedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kvt.","field-sat-relative+0":"på lørdag","field-day-short-relative+1":"i morgen","field-quarter-narrow-relative+1":"næste kvt.","field-sat-relative+1":"på lørdag","field-day-short-relative+2":"i overmorgen","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","field-dayOfYear-narrow":"dag i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","field-weekdayOfMonth-short":"ugedag i md.","field-zone-narrow":"zone","field-thu-narrow-relative+0":"på to.","field-thu-narrow-relative+1":"på to.","field-sun-narrow-relative+-1":"sidste sø.","field-mon-short-relative+-1":"sidste man.","field-thu-relative+0":"på torsdag","field-thu-relative+1":"på torsdag","field-fri-short-relative+-1":"sidste fre.","field-thu-relative+-1":"sidste torsdag","field-week":"uge","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-quarter-narrow-relative+-1":"sidste kvt.","field-year-short-relative+0":"i år","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"næste år","field-fri-short-relative+0":"på fre.","field-fri-short-relative+1":"på fre.","field-week-short-relative+-1":"sidste uge","field-hour-narrow-relative+0":"denne time","field-hour-short":"t.","field-zone-short":"zone","field-month-narrow":"md.","field-hour-narrow":"t.","field-fri-narrow-relative+-1":"sidste fr.","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-era-narrow":"æra","field-fri-relative+-1":"sidste fredag","field-tue-short-relative+-1":"sidste tir.","field-minute-narrow":"min.","field-mon-narrow-relative+0":"på ma.","field-mon-narrow-relative+1":"på ma.","field-year-short-relative+-1":"sidste år","field-zone":"tidszone","field-weekOfMonth-narrow":"uge i md.","field-weekday-narrow":"ugedag","field-quarter-narrow":"kvt.","field-sun-short-relative+-1":"sidste søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ugedag","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","field-day-short":"dag","field-week-narrow":"uge","field-era":"æra","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/number.js b/lib/dojo/cldr/nls/da/number.js
index a6dcb6d70..17bf5ec86 100644
--- a/lib/dojo/cldr/nls/da/number.js
+++ b/lib/dojo/cldr/nls/da/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/da/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 billioner","decimalFormat-short":"000 bill"}); \ No newline at end of file
+define("dojo/cldr/nls/da/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 bio'.'","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 billioner","decimalFormat":"#,##0.###","currencyFormat-short":"000 bio'.' ¤","timeSeparator":".","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/persian.js b/lib/dojo/cldr/nls/da/persian.js
new file mode 100644
index 000000000..088a5508a
--- /dev/null
+++ b/lib/dojo/cldr/nls/da/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/da/persian",{"field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","field-tue-relative+-1":"sidste tirsdag","field-year":"år","dateFormatItem-Hm":"HH.mm","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","dateFormatItem-ms":"mm.ss","timeFormat-short":"HH.mm","field-minute":"minut","field-month-narrow-relative+-1":"sidste md.","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","field-thu-short-relative+0":"på tor.","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"på tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uge","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"næste uge","field-wed-narrow-relative+-1":"sidste on.","dateFormatItem-EBhms":"E h.mm.ss B","field-year-narrow":"år","field-era-short":"æra","field-year-narrow-relative+0":"i år","field-tue-relative+0":"på tirsdag","field-year-narrow-relative+1":"næste år","field-tue-relative+1":"på tirsdag","field-weekdayOfMonth":"ugedag i måneden","field-second-short":"sek.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"ugedag i md.","field-week-relative+0":"denne uge","field-month-relative+0":"denne måned","field-week-relative+1":"næste uge","field-month-relative+1":"næste måned","field-sun-narrow-relative+0":"på sø.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"på man.","field-sun-narrow-relative+1":"på sø.","field-mon-short-relative+1":"på man.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["AP"],"field-weekOfMonth":"uge i måneden","field-month-short":"md.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"sidste år","field-sat-short-relative+-1":"sidste lør.","field-hour-relative+0":"denne time","dateFormatItem-yyyyMEd":"E d/M/y G","field-wed-relative+-1":"sidste onsdag","field-sat-narrow-relative+-1":"sidste lø.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"denne time","field-quarter":"kvartal","field-week-short":"uge","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"i overmorgen","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"på tir.","field-tue-short-relative+1":"på tir.","field-month-short-relative+-1":"sidste md.","field-mon-relative+-1":"sidste mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"dag","dateFormatItem-MMM":"MMM","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AP"],"quarters-standAlone-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"dateFormatItem-yyyyM":"M/y G","field-second-narrow":"s","field-mon-relative+0":"på mandag","field-mon-relative+1":"på mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"i forgårs","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"sidste kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sidste uge","days-format-short":["sø","ma","ti","on","to","fr","lø"],"field-dayOfYear":"dag i året","field-sat-relative+-1":"sidste lørdag","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"dette min.","field-hour":"time","months-format-wide":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"sidste måned","dateFormatItem-Hms":"HH.mm.ss","field-quarter-short":"kvt.","field-sat-narrow-relative+0":"på lø.","field-fri-relative+0":"på fredag","field-sat-narrow-relative+1":"på lø.","field-fri-relative+1":"på fredag","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","field-sun-short-relative+0":"på søn.","field-sun-short-relative+1":"på søn.","field-week-relative+-1":"sidste uge","field-quarter-short-relative+-1":"sidste kvt.","field-minute-short-relative+0":"dette min.","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-quarter-relative+0":"dette kvartal","field-minute-relative+0":"dette minut","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"næste kvartal","field-wed-short-relative+-1":"sidste ons.","dateFormat-short":"d/M/y","field-thu-short-relative+-1":"sidste tor.","field-year-narrow-relative+-1":"sidste år","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sidste ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sidste to.","field-tue-narrow-relative+-1":"sidste ti.","field-weekOfMonth-short":"uge i md.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"på ons.","months-standAlone-wide":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"dateFormatItem-M":"M","field-wed-short-relative+1":"på ons.","field-sun-relative+-1":"sidste søndag","days-standAlone-abbr":["søn","man","tir","ons","tor","fre","lør"],"dateFormatItem-hm":"h.mm a","field-weekday":"ugedag","dateFormatItem-d":"d.","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kvt.","field-sat-relative+0":"på lørdag","field-day-short-relative+1":"i morgen","field-quarter-narrow-relative+1":"næste kvt.","field-sat-relative+1":"på lørdag","field-day-short-relative+2":"i overmorgen","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","months-standAlone-abbr":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-dayOfYear-narrow":"dag i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","field-weekdayOfMonth-short":"ugedag i md.","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"på to.","field-thu-narrow-relative+1":"på to.","field-sun-narrow-relative+-1":"sidste sø.","field-mon-short-relative+-1":"sidste man.","field-thu-relative+0":"på torsdag","field-thu-relative+1":"på torsdag","field-fri-short-relative+-1":"sidste fre.","dateFormatItem-hms":"h.mm.ss a","field-thu-relative+-1":"sidste torsdag","field-week":"uge","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E 'd'. d.","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-quarter-narrow-relative+-1":"sidste kvt.","field-year-short-relative+0":"i år","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"næste år","field-fri-short-relative+0":"på fre.","field-fri-short-relative+1":"på fre.","days-standAlone-short":["sø","ma","ti","on","to","fr","lø"],"field-week-short-relative+-1":"sidste uge","field-hour-narrow-relative+0":"denne time","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t.","field-zone-short":"zone","quarters-format-abbr":["1. kvt.","2. kvt.","3. kvt.","4. kvt."],"field-month-narrow":"md.","field-hour-narrow":"t.","field-fri-narrow-relative+-1":"sidste fr.","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-era-narrow":"æra","field-fri-relative+-1":"sidste fredag","eraNarrow":"AP","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"sidste tir.","field-minute-narrow":"min.","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-mon-narrow-relative+0":"på ma.","field-mon-narrow-relative+1":"på ma.","dateFormatItem-EHm":"E HH.mm","field-year-short-relative+-1":"sidste år","field-zone":"tidszone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uge i md.","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"ugedag","field-quarter-narrow":"kvt.","field-sun-short-relative+-1":"sidste søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ugedag","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"uge","field-era":"æra","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/da/roc.js b/lib/dojo/cldr/nls/da/roc.js
index 6f41e19bc..2559b993d 100644
--- a/lib/dojo/cldr/nls/da/roc.js
+++ b/lib/dojo/cldr/nls/da/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/da/roc",{"field-sat-relative+0":"denne lørdag","field-sat-relative+1":"næste lørdag","field-dayperiod":"AM/PM","field-sun-relative+-1":"sidste søndag","field-mon-relative+-1":"sidste mandag","field-minute":"Minut","field-day-relative+-1":"i går","field-weekday":"Ugedag","field-day-relative+-2":"i forgårs","field-era":"Æra","field-hour":"Time","field-sun-relative+0":"denne søndag","field-sun-relative+1":"næste søndag","field-wed-relative+-1":"sidste onsdag","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","eraAbbr":["Before R.O.C.","Minguo"],"field-day-relative+2":"i overmorgen","field-tue-relative+0":"denne tirsdag","field-zone":"Tidszone","field-tue-relative+1":"næste tirsdag","field-week-relative+-1":"sidste uge","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-sat-relative+-1":"sidste lørdag","field-year-relative+-1":"sidste år","field-year":"År","field-fri-relative+0":"denne fredag","field-fri-relative+1":"næste fredag","field-week":"Uge","field-week-relative+0":"denne uge","field-week-relative+1":"næste uge","field-month-relative+0":"denne måned","field-month":"Måned","field-month-relative+1":"næste måned","field-fri-relative+-1":"sidste fredag","field-second":"Sekund","field-tue-relative+-1":"sidste tirsdag","field-day":"Dag","field-mon-relative+0":"denne mandag","field-mon-relative+1":"næste mandag","field-thu-relative+0":"denne torsdag","field-second-relative+0":"nu","field-thu-relative+1":"næste torsdag","field-wed-relative+0":"denne onsdag","field-wed-relative+1":"næste onsdag","field-month-relative+-1":"sidste måned","field-thu-relative+-1":"sidste torsdag"}); \ No newline at end of file
+define("dojo/cldr/nls/da/roc",{"field-quarter-short-relative+0":"dette kvt.","field-quarter-short-relative+1":"næste kvt.","field-tue-relative+-1":"sidste tirsdag","field-year":"år","field-wed-relative+0":"på onsdag","field-wed-relative+1":"på onsdag","field-minute":"minut","field-month-narrow-relative+-1":"sidste md.","field-tue-narrow-relative+0":"på ti.","field-tue-narrow-relative+1":"på ti.","field-thu-short-relative+0":"på tor.","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"på tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uge","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"næste uge","field-wed-narrow-relative+-1":"sidste on.","field-year-narrow":"år","field-era-short":"æra","field-year-narrow-relative+0":"i år","field-tue-relative+0":"på tirsdag","field-year-narrow-relative+1":"næste år","field-tue-relative+1":"på tirsdag","field-weekdayOfMonth":"ugedag i måneden","field-second-short":"sek.","field-weekdayOfMonth-narrow":"ugedag i md.","field-week-relative+0":"denne uge","field-month-relative+0":"denne måned","field-week-relative+1":"næste uge","field-month-relative+1":"næste måned","field-sun-narrow-relative+0":"på sø.","field-mon-short-relative+0":"på man.","field-sun-narrow-relative+1":"på sø.","field-mon-short-relative+1":"på man.","field-second-relative+0":"nu","eraNames":["før R.O.C.","Minguo"],"field-weekOfMonth":"uge i måneden","field-month-short":"md.","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"sidste år","field-sat-short-relative+-1":"sidste lør.","field-hour-relative+0":"denne time","field-wed-relative+-1":"sidste onsdag","field-sat-narrow-relative+-1":"sidste lø.","field-second":"sekund","field-hour-short-relative+0":"denne time","field-quarter":"kvartal","field-week-short":"uge","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"i overmorgen","field-tue-short-relative+0":"på tir.","field-tue-short-relative+1":"på tir.","field-month-short-relative+-1":"sidste md.","field-mon-relative+-1":"sidste mandag","field-month":"måned","field-day-narrow":"dag","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"på lør.","field-sat-short-relative+1":"på lør.","eraAbbr":["før R.O.C.","Minguo"],"field-second-narrow":"s","field-mon-relative+0":"på mandag","field-mon-relative+1":"på mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"i forgårs","field-quarter-relative+-1":"sidste kvartal","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sidste uge","field-dayOfYear":"dag i året","field-sat-relative+-1":"sidste lørdag","field-hour":"time","field-minute-narrow-relative+0":"dette min.","field-month-relative+-1":"sidste måned","field-quarter-short":"kvt.","field-sat-narrow-relative+0":"på lø.","field-fri-relative+0":"på fredag","field-sat-narrow-relative+1":"på lø.","field-fri-relative+1":"på fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"næste md.","field-sun-short-relative+0":"på søn.","field-sun-short-relative+1":"på søn.","field-week-relative+-1":"sidste uge","field-quarter-short-relative+-1":"sidste kvt.","field-minute-short-relative+0":"dette min.","field-quarter-relative+0":"dette kvartal","field-minute-relative+0":"dette minut","field-quarter-relative+1":"næste kvartal","field-wed-short-relative+-1":"sidste ons.","field-thu-short-relative+-1":"sidste tor.","field-year-narrow-relative+-1":"sidste år","field-mon-narrow-relative+-1":"sidste ma.","field-thu-narrow-relative+-1":"sidste to.","field-tue-narrow-relative+-1":"sidste ti.","field-weekOfMonth-short":"uge i md.","field-wed-short-relative+0":"på ons.","field-wed-short-relative+1":"på ons.","field-sun-relative+-1":"sidste søndag","field-weekday":"ugedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kvt.","field-sat-relative+0":"på lørdag","field-day-short-relative+1":"i morgen","field-quarter-narrow-relative+1":"næste kvt.","field-sat-relative+1":"på lørdag","field-day-short-relative+2":"i overmorgen","field-week-short-relative+0":"denne uge","field-week-short-relative+1":"næste uge","field-dayOfYear-narrow":"dag i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"næste md.","field-weekdayOfMonth-short":"ugedag i md.","field-zone-narrow":"zone","field-thu-narrow-relative+0":"på to.","field-thu-narrow-relative+1":"på to.","field-sun-narrow-relative+-1":"sidste sø.","field-mon-short-relative+-1":"sidste man.","field-thu-relative+0":"på torsdag","field-thu-relative+1":"på torsdag","field-fri-short-relative+-1":"sidste fre.","field-thu-relative+-1":"sidste torsdag","field-week":"uge","field-wed-narrow-relative+0":"på on.","field-wed-narrow-relative+1":"på on.","field-quarter-narrow-relative+-1":"sidste kvt.","field-year-short-relative+0":"i år","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"næste år","field-fri-short-relative+0":"på fre.","field-fri-short-relative+1":"på fre.","field-week-short-relative+-1":"sidste uge","field-hour-narrow-relative+0":"denne time","field-hour-short":"t.","field-zone-short":"zone","field-month-narrow":"md.","field-hour-narrow":"t.","field-fri-narrow-relative+-1":"sidste fr.","field-year-relative+0":"i år","field-year-relative+1":"næste år","field-era-narrow":"æra","field-fri-relative+-1":"sidste fredag","eraNarrow":["før R.O.C.","Minguo"],"field-tue-short-relative+-1":"sidste tir.","field-minute-narrow":"min.","field-mon-narrow-relative+0":"på ma.","field-mon-narrow-relative+1":"på ma.","field-year-short-relative+-1":"sidste år","field-zone":"tidszone","field-weekOfMonth-narrow":"uge i md.","field-weekday-narrow":"ugedag","field-quarter-narrow":"kvt.","field-sun-short-relative+-1":"sidste søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ugedag","field-sun-relative+0":"på søndag","field-sun-relative+1":"på søndag","field-day-short":"dag","field-week-narrow":"uge","field-era":"æra","field-fri-narrow-relative+0":"på fr.","field-fri-narrow-relative+1":"på fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/dangi.js b/lib/dojo/cldr/nls/dangi.js
index 244e33921..cd6ee5015 100644
--- a/lib/dojo/cldr/nls/dangi.js
+++ b/lib/dojo/cldr/nls/dangi.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/dangi",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","quarters-format-narrow@localeAlias109":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-wed-relative+1":"next Wednesday","quarters@localeAlias106":{"bundle":"chinese","target":"quarters"},"dateFormatItem-ms":"mm:ss","quarters@localeAlias107":{"bundle":"gregorian","target":"quarters"},"timeFormat-short":"HH:mm","days-standAlone-abbr@localeAlias100":{"bundle":"gregorian","target":"days-format-abbr"},"field-minute":"Minute","days-standAlone-abbr@localeAlias101":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormat-short":"{1} {0}","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","field-second-relative+0":"now","months-format-narrow@localeAlias90":{"bundle":"chinese","target":"months-standAlone-narrow"},"months-format-abbr@localeAlias89":{"bundle":"chinese","target":"months-format-wide"},"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"U QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-GyMMMEd":"U MMM d, E","dateFormatItem-yyyyMd":"y-MM-dd","field-day":"Day","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","dateFormatItem-yyyyMEd":"y-MM-dd, E","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","dateFormat-long":"U MMMM d","dateFormatItem-GyMMMd":"U MMM d","dateFormat@localeAlias117":{"bundle":"chinese","target":"dateFormat"},"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"U MMM","field-month":"Month","dateFormatItem-MMM":"LLL","field-dayperiod":"Dayperiod","quarters-standAlone-wide@localeAlias112":{"bundle":"gregorian","target":"quarters-format-wide"},"dayPeriods-format-narrow-pm":"p","dateFormat-medium":"U MMM d","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","months-standAlone-abbr@localeAlias91":{"bundle":"chinese","target":"months-format-abbr"},"dateFormatItem-yyyyM":"y-MM","months-standAlone-abbr@localeAlias92":{"bundle":"chinese","target":"months-format-wide"},"field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-yyyyMMMd":"U MMM d","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"days@localeAlias94":{"bundle":"chinese","target":"days"},"dayPeriods-format-wide-pm":"PM","days@localeAlias95":{"bundle":"gregorian","target":"days"},"field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-hour":"Hour","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateFormat-full":"U MMMM d, EEEE","field-month-relative+-1":"last month","months@localeAlias88":{"bundle":"chinese","target":"months"},"dateFormatItem-Hms":"HH:mm:ss","quarters-standAlone-abbr@localeAlias110":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias111":{"bundle":"gregorian","target":"quarters-format-wide"},"quarters-format-abbr@localeAlias108":{"bundle":"gregorian","target":"quarters-format-wide"},"field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"days-standAlone-short@localeAlias102":{"bundle":"gregorian","target":"days-format-short"},"timeFormat-long":"HH:mm:ss z","days-standAlone-short@localeAlias103":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-short@localeAlias104":{"bundle":"gregorian","target":"days-format-wide"},"days-format-narrow@localeAlias97":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dayPeriods-format-abbr@localeAlias115":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dayPeriods-format-abbr@localeAlias116":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dateFormat-short":"y-MM-dd","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"U MMM d, E","months-standAlone-wide@localeAlias93":{"bundle":"chinese","target":"months-format-wide"},"dateTimeFormats-appendItem-Era":"{1} {0}","timeFormat@localeAlias118":{"bundle":"chinese","target":"timeFormat"},"timeFormat@localeAlias119":{"bundle":"gregorian","target":"timeFormat"},"dateFormatItem-H":"HH","dateFormatItem-yyyy":"U","dateFormatItem-M":"L","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-sun-relative+-1":"last Sunday","days-format-short@localeAlias98":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias99":{"bundle":"gregorian","target":"days-format-wide"},"days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","days-format-abbr@localeAlias96":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-d":"d","field-weekday":"Day of the Week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dayPeriods@localeAlias113":{"bundle":"chinese","target":"dayPeriods"},"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dayPeriods@localeAlias114":{"bundle":"gregorian","target":"dayPeriods"},"dateFormatItem-y":"U","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-abbr-noon":"noon","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","dateFormatItem-yMd":"y-MM-dd","field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"U MMM","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTime@localeAlias120":{"bundle":"chinese","target":"dateTime"},"dateFormatItem-yyyyQQQQ":"U QQQQ","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","dayPeriods-format-wide-noon":"noon","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","field-day-relative+-1":"yesterday","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"U","field-era":"Era","days-standAlone-wide@localeAlias105":{"bundle":"gregorian","target":"days-format-wide"}},"fr":true,"ja":true,"ko":true,"nl":true,"sv":true,"th":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/dangi",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+0":"this Sunday","field-day-short@localeAlias357":{"bundle":"","target":"field-day"},"field-sun-narrow-relative+1":"next Sunday","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-month-short@localeAlias348":{"bundle":"","target":"field-month"},"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","months-format-abbr@localeAlias302":{"bundle":"chinese","target":"months-format-wide"},"field-fri-narrow-relative+0":"this Friday","field-fri-narrow-relative+1":"next Friday","days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","days-format-narrow@localeAlias310":{"bundle":"gregorian","target":"days-standAlone-narrow"},"field-minute-narrow-relative+0":"this minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-dayOfYear-narrow@localeAlias361":{"bundle":"","target":"field-dayOfYear-short"},"field-weekday-short@localeAlias363":{"bundle":"","target":"field-weekday"},"field-dayOfYear-narrow@localeAlias362":{"bundle":"","target":"field-dayOfYear"},"field-mon-narrow@localeAlias373":{"bundle":"","target":"field-mon-short"},"field-mon-narrow@localeAlias374":{"bundle":"","target":"field-mon"},"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","field-thu-relative+0":"this Thursday","dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dateFormatItem-yMd":"r-MM-dd","field-sun-narrow@localeAlias370":{"bundle":"","target":"field-sun-short"},"field-sun-narrow@localeAlias371":{"bundle":"","target":"field-sun"},"field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","dayPeriods@localeAlias326":{"bundle":"chinese","target":"dayPeriods"},"field-quarter-relative+1":"next quarter","dayPeriods@localeAlias327":{"bundle":"gregorian","target":"dayPeriods"},"field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","field-week-narrow":"Week","field-hour-relative+0":"this hour","field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-minute-narrow":"Minute","dateFormatItem-yyyyMMM":"r(U) MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","field-era-short":"Era","field-day-narrow-relative+1":"tomorrow","field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-month":"Month","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow@localeAlias364":{"bundle":"","target":"field-weekday-short"},"field-weekday-narrow":"Day of the Week","field-weekday-narrow@localeAlias365":{"bundle":"","target":"field-weekday"},"field-year-relative+0":"this year","field-year-relative+1":"next year","field-week-narrow@localeAlias352":{"bundle":"","target":"field-week-short"},"field-week-narrow@localeAlias353":{"bundle":"","target":"field-week"},"field-era-narrow@localeAlias340":{"bundle":"","target":"field-era-short"},"field-era-narrow@localeAlias341":{"bundle":"","target":"field-era"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","months-format-narrow@localeAlias303":{"bundle":"chinese","target":"months-standAlone-narrow"},"months@localeAlias301":{"bundle":"chinese","target":"months"},"field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","field-year-narrow":"Year","field-fri-short@localeAlias384":{"bundle":"","target":"field-fri"},"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-hour-narrow@localeAlias394":{"bundle":"","target":"field-hour-short"},"field-hour-narrow@localeAlias395":{"bundle":"","target":"field-hour"},"field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","quarters-standAlone-abbr@localeAlias323":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias324":{"bundle":"gregorian","target":"quarters-format-wide"},"field-wed-relative+0":"this Wednesday","field-thu-narrow@localeAlias382":{"bundle":"","target":"field-thu-short"},"field-weekOfMonth-narrow@localeAlias355":{"bundle":"","target":"field-weekOfMonth-short"},"field-wed-relative+1":"next Wednesday","field-thu-narrow@localeAlias383":{"bundle":"","target":"field-thu"},"dateFormatItem-M":"L","field-weekOfMonth-narrow@localeAlias356":{"bundle":"","target":"field-weekOfMonth"},"field-wed-short-relative+0":"this Wednesday","days@localeAlias307":{"bundle":"chinese","target":"days"},"field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","days@localeAlias308":{"bundle":"gregorian","target":"days"},"field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","field-quarter-short-relative+-1":"last quarter","field-dayperiod-narrow@localeAlias391":{"bundle":"","target":"field-dayperiod-short"},"field-year-short-relative+-1":"last year","field-dayperiod-narrow@localeAlias392":{"bundle":"","target":"field-dayperiod"},"dateFormatItem-Bhm":"h:mm B","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-standAlone-wide@localeAlias333":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-wide@localeAlias334":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-weekOfMonth-narrow":"Week Of Month","field-dayperiod-short@localeAlias390":{"bundle":"","target":"field-dayperiod"},"dateFormatItem-yyyyQQQ":"r(U) QQQ","dateFormatItem-yyyyMMMM":"r(U) MMMM","dateFormatItem-y":"r(U)","field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","dateFormatItem-EBhms":"E h:mm:ss B","field-week-short@localeAlias351":{"bundle":"","target":"field-week"},"field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-narrow-relative+-1":"last Tuesday","field-fri-narrow@localeAlias385":{"bundle":"","target":"field-fri-short"},"field-fri-narrow@localeAlias386":{"bundle":"","target":"field-fri"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"r MMM d","field-sat-relative+-1":"last Saturday","quarters-format-abbr@localeAlias321":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-UMMM":"U MMM","dayPeriods-standAlone-narrow-pm":"PM","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","field-second":"Second","field-year-relative+-1":"last year","field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"r-MM-dd","field-second-short":"Second","field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","dateFormatItem-UM":"U MM","dateFormat@localeAlias335":{"bundle":"chinese","target":"dateFormat"},"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","field-minute-narrow@localeAlias397":{"bundle":"","target":"field-minute-short"},"field-minute-narrow@localeAlias398":{"bundle":"","target":"field-minute"},"dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-sun-short@localeAlias369":{"bundle":"","target":"field-sun"},"field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-quarter-short@localeAlias345":{"bundle":"","target":"field-quarter"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-day-short-relative+1":"tomorrow","dateFormat-long":"r(U) MMMM d","field-sun-narrow-relative+-1":"last Sunday","dayPeriods-format-wide@localeAlias329":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-second-relative+0":"now","field-quarter-relative+-1":"last quarter","field-quarter-narrow@localeAlias346":{"bundle":"","target":"field-quarter-short"},"field-quarter-narrow@localeAlias347":{"bundle":"","target":"field-quarter"},"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-dayOfYear-short@localeAlias360":{"bundle":"","target":"field-dayOfYear"},"field-week-relative+-1":"last week","field-month-relative+-1":"last month","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"Year","field-era":"Era","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"field-weekdayOfMonth-narrow@localeAlias367":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-wed-narrow@localeAlias379":{"bundle":"","target":"field-wed-short"},"field-weekdayOfMonth-narrow@localeAlias368":{"bundle":"","target":"field-weekdayOfMonth"},"dateFormatItem-UMMMd":"U MMM d","field-day-short-relative+-1":"yesterday","dateFormatItem-GyMMM":"r(U) MMM","days-standAlone-abbr@localeAlias313":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias314":{"bundle":"gregorian","target":"days-format-wide"},"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-weekdayOfMonth-short@localeAlias366":{"bundle":"","target":"field-weekdayOfMonth"},"field-tue-short@localeAlias375":{"bundle":"","target":"field-tue"},"field-hour":"Hour","field-wed-narrow@localeAlias380":{"bundle":"","target":"field-wed"},"quarters@localeAlias319":{"bundle":"chinese","target":"quarters"},"field-thu-short@localeAlias381":{"bundle":"","target":"field-thu"},"field-day-narrow@localeAlias358":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias359":{"bundle":"","target":"field-day"},"field-minute-short@localeAlias396":{"bundle":"","target":"field-minute"},"field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-quarter":"Quarter","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","quarters@localeAlias320":{"bundle":"gregorian","target":"quarters"},"dateFormatItem-yyyy":"r(U)","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"Day","field-mon-relative+-1":"last Monday","field-dayOfYear":"Day Of Year","dateFormat-medium":"r MMM d","dateTimeFormat-short":"{1} {0}","dayPeriods-standAlone-narrow@localeAlias331":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-narrow@localeAlias332":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-sat-narrow@localeAlias388":{"bundle":"","target":"field-sat-short"},"field-sat-narrow@localeAlias389":{"bundle":"","target":"field-sat"},"dateFormatItem-GyMMMd":"r MMM d","dateFormatItem-MEd":"MM-dd, E","field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","field-month-short":"Month","dateFormatItem-MMMEd":"MMM d, E","days-format-short@localeAlias311":{"bundle":"gregorian","target":"days-format-abbr"},"dateFormatItem-MMMd":"MMM d","days-format-short@localeAlias312":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-Bh":"h B","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dayPeriods-format-abbr-am":"AM","field-zone-narrow@localeAlias403":{"bundle":"","target":"field-zone-short"},"field-zone-narrow@localeAlias404":{"bundle":"","target":"field-zone"},"field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","dayPeriods-format-narrow@localeAlias328":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-second-narrow@localeAlias400":{"bundle":"","target":"field-second-short"},"field-second-narrow@localeAlias401":{"bundle":"","target":"field-second"},"field-year-short@localeAlias342":{"bundle":"","target":"field-year"},"days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-era-short@localeAlias339":{"bundle":"","target":"field-era"},"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","dateFormatItem-yyyyMMMEd":"r(U) MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","field-month-narrow":"Month","dayPeriods-format-narrow-am":"AM","field-mon-short@localeAlias372":{"bundle":"","target":"field-mon"},"field-month-narrow-relative+-1":"last month","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekday-short":"Day of the Week","field-day-narrow-relative+-1":"yesterday","field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"months-standAlone-abbr@localeAlias304":{"bundle":"chinese","target":"months-format-abbr"},"months-standAlone-abbr@localeAlias305":{"bundle":"chinese","target":"months-format-wide"},"timeFormat@localeAlias336":{"bundle":"chinese","target":"timeFormat"},"timeFormat@localeAlias337":{"bundle":"gregorian","target":"timeFormat"},"days-format-narrow":["S","M","T","W","T","F","S"],"field-quarter-narrow":"Quarter","field-zone-short@localeAlias402":{"bundle":"","target":"field-zone"},"field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","days-standAlone-wide@localeAlias318":{"bundle":"gregorian","target":"days-format-wide"},"field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","dayPeriods-standAlone-abbr@localeAlias330":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"quarters-standAlone-wide@localeAlias325":{"bundle":"gregorian","target":"quarters-format-wide"},"timeFormat-medium":"HH:mm:ss","dateTime@localeAlias338":{"bundle":"chinese","target":"dateTime"},"field-quarter-short-relative+0":"this quarter","field-quarter-short-relative+1":"next quarter","dateFormatItem-Ed":"d, E","field-second-short@localeAlias399":{"bundle":"","target":"field-second"},"field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","field-tue-narrow@localeAlias376":{"bundle":"","target":"field-tue-short"},"field-tue-narrow@localeAlias377":{"bundle":"","target":"field-tue"},"field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-standAlone-wide-am":"AM","field-fri-relative+-1":"last Friday","field-wed-short@localeAlias378":{"bundle":"","target":"field-wed"},"field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-short":"Day","field-dayperiod":"Dayperiod","field-hour-short":"Hour","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"r(U) MMMM d, EEEE","dateFormatItem-yyyyMEd":"r-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","field-week-short-relative+-1":"last week","dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"r(U) QQQQ","field-weekdayOfMonth":"Weekday Of Month","quarters-format-narrow@localeAlias322":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"dateFormatItem-yyyyMd":"r-MM-dd","field-quarter-narrow-relative+0":"this quarter","field-year-narrow@localeAlias343":{"bundle":"","target":"field-year-short"},"dateFormatItem-GyMMMEd":"r(U) MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-year-narrow@localeAlias344":{"bundle":"","target":"field-year"},"field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","days-standAlone-short@localeAlias315":{"bundle":"gregorian","target":"days-format-short"},"field-year-narrow-relative+0":"this year","days-standAlone-short@localeAlias316":{"bundle":"gregorian","target":"days-format-abbr"},"field-year-narrow-relative+1":"next year","field-hour-short@localeAlias393":{"bundle":"","target":"field-hour"},"days-standAlone-short@localeAlias317":{"bundle":"gregorian","target":"days-format-wide"},"field-month-narrow@localeAlias349":{"bundle":"","target":"field-month-short"},"dateFormatItem-Gy":"r U","field-zone-narrow":"Zone","dateFormatItem-yyyyM":"r-MM","field-tue-relative+-1":"last Tuesday","field-minute-short":"Minute","field-month-narrow@localeAlias350":{"bundle":"","target":"field-month"},"dateFormatItem-Hm":"HH:mm","field-weekOfMonth-short@localeAlias354":{"bundle":"","target":"field-weekOfMonth"},"field-week-relative+0":"this week","field-week-relative+1":"next week","dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","days-format-abbr@localeAlias309":{"bundle":"gregorian","target":"days-format-wide"},"field-sat-short@localeAlias387":{"bundle":"","target":"field-sat"},"field-sat-narrow-relative+-1":"last Saturday","months-standAlone-wide@localeAlias306":{"bundle":"chinese","target":"months-format-wide"},"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-month-short-relative+-1":"last month","dateFormatItem-MMMMd":"MMMM d","field-week":"Week","dateFormatItem-UMd":"U MM-d","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour"},"cs":true,"fr":true,"id":true,"ja":true,"ko":true,"nb":true,"nl":true,"sv":true,"th":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/buddhist.js b/lib/dojo/cldr/nls/de/buddhist.js
index c4063a7c0..f5af574c4 100644
--- a/lib/dojo/cldr/nls/de/buddhist.js
+++ b/lib/dojo/cldr/nls/de/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/de/buddhist",{"days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"jetzt","field-weekday":"Wochentag","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-MMMEd":"E, d. MMM","field-tue-relative+-1":"letzten Dienstag","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"letzten Freitag","field-wed-relative+-1":"letzten Mittwoch","months-format-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"nachm.","dateFormat-full":"EEEE, d. MMMM y G","dateFormatItem-yyyyMEd":"E, d.M.y GGGGG","field-thu-relative+-1":"letzten Donnerstag","dateFormatItem-Md":"d.M.","dayPeriods-format-wide-noon":"mittags","field-era":"Epoche","months-standAlone-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"field-year":"Jahr","field-hour":"Stunde","months-format-abbr":["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],"field-sat-relative+0":"diesen Samstag","field-sat-relative+1":"nächsten Samstag","field-day-relative+0":"heute","field-thu-relative+0":"diesen Donnerstag","field-day-relative+1":"morgen","field-thu-relative+1":"nächsten Donnerstag","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"übermorgen","dateFormatItem-H":"HH 'Uhr'","months-standAlone-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d. MMM y G","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","eraAbbr":["BE"],"field-minute":"Minute","field-dayperiod":"Tageshälfte","days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","field-fri-relative+0":"diesen Freitag","field-fri-relative+1":"nächsten Freitag","field-day":"Tag","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-zone":"Zeitzone","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"letztes Jahr","field-month-relative+-1":"letzten Monat","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"days-format-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-yyyyMd":"d.M.y GGGGG","field-month":"Monat","days-standAlone-narrow":["S","M","D","M","D","F","S"],"field-tue-relative+0":"diesen Dienstag","field-tue-relative+1":"nächsten Dienstag","dayPeriods-format-wide-am":"vorm.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","dateFormat-short":"dd.MM.yy GGGGG","field-second":"Sekunde","field-sat-relative+-1":"letzten Samstag","field-sun-relative+-1":"letzten Sonntag","field-month-relative+0":"diesen Monat","field-month-relative+1":"nächsten Monat","dateFormatItem-Ed":"E, d.","field-week":"Woche","dateFormat-medium":"dd.MM.y G","field-year-relative+0":"dieses Jahr","field-week-relative+-1":"letzte Woche","dateFormatItem-yyyyM":"M.y GGGGG","field-year-relative+1":"nächstes Jahr","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"letzten Montag","dateFormatItem-yyyy":"y G","field-week-relative+0":"diese Woche","field-week-relative+1":"nächste Woche"}); \ No newline at end of file
+define("dojo/cldr/nls/de/buddhist",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-thu-short-relative+0":"diesen Do.","field-day-short-relative+-1":"gestern","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"nächsten Do.","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["B.E."],"field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-yyyyMd":"d.M.y GGGGG","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","dateFormatItem-yyyyMEd":"E, d.M.y GGGGG","field-wed-relative+-1":"letzten Mittwoch","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"days-format-narrow":["S","M","D","M","D","F","S"],"field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","dateFormatItem-GyMMM":"MMM y G","field-month":"Monat","field-day-narrow":"Tag","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","dateFormat-medium":"dd.MM.y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["BE"],"dateFormatItem-yyyyM":"M.y GGGGG","field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"letztes Quartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","dateTimeFormat-long":"{1} 'um' {0}","dateFormatItem-Md":"d.M.","field-minute-narrow-relative+0":"in dieser Minute","field-hour":"Stunde","months-format-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"dateFormat-full":"EEEE, d. MMMM y G","field-month-relative+-1":"letzten Monat","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","field-minute-short-relative+0":"in dieser Minute","months-format-abbr":["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sept.","Okt.","Nov.","Dez."],"field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","dateFormat-short":"dd.MM.yy GGGGG","field-thu-short-relative+-1":"letzten Do.","field-year-narrow-relative+-1":"letztes Jahr","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y G","field-mon-narrow-relative+-1":"letzten Mo.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"letzten Do.","field-tue-narrow-relative+-1":"letzten Di.","dateFormatItem-H":"HH 'Uhr'","field-weekOfMonth-short":"W/M","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"diesen Mi.","months-standAlone-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"dateTimeFormat-full":"{1} 'um' {0}","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-sat-relative+0":"diesen Samstag","field-day-short-relative+1":"morgen","field-quarter-narrow-relative+1":"nächstes Quartal","field-sat-relative+1":"nächsten Samstag","field-day-short-relative+2":"übermorgen","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","months-standAlone-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"Zeitz.","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"diesen Do.","field-thu-narrow-relative+1":"nächsten Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","field-dayperiod-short":"Tageshälfte","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-week-short-relative+-1":"letzte Woche","field-hour-narrow-relative+0":"in dieser Stunde","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","eraNarrow":"BE","field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-mon-narrow-relative+0":"diesen Mo.","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"Wo. des Monats","field-weekday-narrow":"Wochent.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","dateFormatItem-Gy":"y G","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/chinese.js b/lib/dojo/cldr/nls/de/chinese.js
index a115283ef..e76ce582a 100644
--- a/lib/dojo/cldr/nls/de/chinese.js
+++ b/lib/dojo/cldr/nls/de/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/de/chinese",{"field-second-relative+0":"jetzt","field-weekday":"Wochentag","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","dateFormatItem-GyMMMEd":"E, d. MMM U","dateFormatItem-MMMEd":"E, d. MMM","field-tue-relative+-1":"letzten Dienstag","dateFormat-long":"d. MMMM U","field-fri-relative+-1":"letzten Freitag","field-wed-relative+-1":"letzten Mittwoch","dateFormatItem-yyyyQQQ":"QQQ U","dateFormat-full":"EEEE, d. MMMM U","dateFormatItem-yyyyMEd":"E, d.M.y","field-thu-relative+-1":"letzten Donnerstag","dateFormatItem-Md":"d.M.","field-era":"Epoche","field-year":"Jahr","dateFormatItem-yyyyMMMM":"MMMM U","field-hour":"Stunde","field-sat-relative+0":"diesen Samstag","field-sat-relative+1":"nächsten Samstag","field-day-relative+0":"heute","field-thu-relative+0":"diesen Donnerstag","field-day-relative+1":"morgen","field-thu-relative+1":"nächsten Donnerstag","dateFormatItem-GyMMMd":"d. MMM U","field-day-relative+2":"übermorgen","dateFormatItem-H":"HH 'Uhr'","dateFormatItem-Gy":"U","dateFormatItem-yyyyMMMEd":"E, d. MMM U","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM U","dateFormatItem-yyyyMMMd":"d. MMM U","field-sun-relative+0":"diesen Sonntag","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"nächsten Sonntag","field-minute":"Minute","field-dayperiod":"Tageshälfte","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"gestern","dateFormatItem-h":"h a","field-day-relative+-2":"vorgestern","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","field-fri-relative+0":"diesen Freitag","field-fri-relative+1":"nächsten Freitag","field-day":"Tag","field-zone":"Zeitzone","dateFormatItem-y":"U","field-year-relative+-1":"letztes Jahr","field-month-relative+-1":"letzten Monat","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d.M.y","field-month":"Monat","dateFormatItem-MMM":"LLL","field-tue-relative+0":"diesen Dienstag","field-tue-relative+1":"nächsten Dienstag","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","dateFormat-short":"dd.MM.yy","field-second":"Sekunde","field-sat-relative+-1":"letzten Samstag","field-sun-relative+-1":"letzten Sonntag","field-month-relative+0":"diesen Monat","field-month-relative+1":"nächsten Monat","dateFormatItem-Ed":"E, d.","field-week":"Woche","dateFormat-medium":"dd.MM U","field-year-relative+0":"dieses Jahr","field-week-relative+-1":"letzte Woche","dateFormatItem-yyyyM":"M.y","field-year-relative+1":"nächstes Jahr","dateFormatItem-yyyyQQQQ":"QQQQ U","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM U","field-mon-relative+-1":"letzten Montag","dateFormatItem-yyyy":"U","field-week-relative+0":"diese Woche","field-week-relative+1":"nächste Woche"}); \ No newline at end of file
+define("dojo/cldr/nls/de/chinese",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","dateFormatItem-ms":"mm:ss","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-day-short-relative+-1":"gestern","field-thu-short-relative+0":"diesen Do.","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-thu-short-relative+1":"nächsten Do.","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","dateFormatItem-yyyyQQQ":"QQQ U","field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","dateFormatItem-GyMMMEd":"E, d. MMM U","dateFormatItem-yyyyMd":"d.M.y","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","dateFormatItem-yyyyMEd":"E, d.M.y","field-wed-relative+-1":"letzten Mittwoch","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","dateFormat-long":"d. MMMM U","dateFormatItem-GyMMMd":"d. MMM U","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","dateFormatItem-GyMMM":"MMM U","field-month":"Monat","field-day-narrow":"Tag","dateFormatItem-MMM":"LLL","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","dateFormat-medium":"dd.MM U","dateFormatItem-yyyyMMMM":"MMMM U","dateFormatItem-yyyyM":"M.y","field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","field-quarter-relative+-1":"letztes Quartal","dateFormatItem-yyyyMMMd":"d. MMM U","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","dateFormatItem-Md":"d.M.","field-hour":"Stunde","field-minute-narrow-relative+0":"in dieser Minute","dateFormat-full":"EEEE, d. MMMM U","field-month-relative+-1":"letzten Monat","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","field-minute-short-relative+0":"in dieser Minute","field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","dateFormat-short":"dd.MM.yy","field-year-narrow-relative+-1":"letztes Jahr","field-thu-short-relative+-1":"letzten Do.","dateFormatItem-yyyyMMMEd":"E, d. MMM U","field-mon-narrow-relative+-1":"letzten Mo.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"letzten Do.","field-tue-narrow-relative+-1":"letzten Di.","dateFormatItem-H":"HH 'Uhr'","field-weekOfMonth-short":"W/M","dateFormatItem-yyyy":"U","dateFormatItem-M":"L","field-wed-short-relative+0":"diesen Mi.","field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-day-short-relative+1":"morgen","field-sat-relative+0":"diesen Samstag","field-quarter-narrow-relative+1":"nächstes Quartal","dateFormatItem-h":"h a","field-day-short-relative+2":"übermorgen","field-sat-relative+1":"nächsten Samstag","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"Zeitz.","dateFormatItem-y":"U","field-thu-narrow-relative+0":"diesen Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-narrow-relative+1":"nächsten Do.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","dateFormatItem-yyyyMMM":"MMM U","field-dayperiod-short":"Tageshälfte","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","field-week-short-relative+-1":"letzte Woche","field-hour-narrow-relative+0":"in dieser Stunde","dateFormatItem-yyyyQQQQ":"QQQQ U","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","field-mon-narrow-relative+0":"diesen Mo.","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"Wo. des Monats","field-weekday-narrow":"Wochent.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","dateFormatItem-Gy":"U","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/coptic.js b/lib/dojo/cldr/nls/de/coptic.js
new file mode 100644
index 000000000..f598d328e
--- /dev/null
+++ b/lib/dojo/cldr/nls/de/coptic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/de/coptic",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-thu-short-relative+0":"diesen Do.","field-day-short-relative+-1":"gestern","field-thu-short-relative+1":"nächsten Do.","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","eraNames":["ERA0","ERA1"],"field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","field-wed-relative+-1":"letzten Mittwoch","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","field-month":"Monat","field-day-narrow":"Tag","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","field-quarter-relative+-1":"letztes Quartal","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","field-hour":"Stunde","field-minute-narrow-relative+0":"in dieser Minute","months-format-wide":["Thout","Paopi","Hathor","Koiak","Tobi","Meschir","Paremhat","Paremoude","Paschons","Paoni","Epip","Mesori","Nasie"],"field-month-relative+-1":"letzten Monat","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","field-minute-short-relative+0":"in dieser Minute","months-format-abbr":["Thout","Paopi","Hathor","Koiak","Tobi","Meschir","Paremhat","Paremoude","Paschons","Paoni","Epip","Mesori","Nasie"],"field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","field-thu-short-relative+-1":"letzten Do.","field-year-narrow-relative+-1":"letztes Jahr","field-mon-narrow-relative+-1":"letzten Mo.","field-thu-narrow-relative+-1":"letzten Do.","field-tue-narrow-relative+-1":"letzten Di.","field-weekOfMonth-short":"W/M","field-wed-short-relative+0":"diesen Mi.","months-standAlone-wide":["Thout","Paopi","Hathor","Koiak","Tobi","Meschir","Paremhat","Paremoude","Paschons","Paoni","Epip","Mesori","Nasie"],"field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-sat-relative+0":"diesen Samstag","field-day-short-relative+1":"morgen","field-quarter-narrow-relative+1":"nächstes Quartal","field-sat-relative+1":"nächsten Samstag","field-day-short-relative+2":"übermorgen","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","months-standAlone-abbr":["Thout","Paopi","Hathor","Koiak","Tobi","Meschir","Paremhat","Paremoude","Paschons","Paoni","Epip","Mesori","Nasie"],"field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","field-zone-narrow":"Zeitz.","field-thu-narrow-relative+0":"diesen Do.","field-thu-narrow-relative+1":"nächsten Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","field-dayperiod-short":"Tageshälfte","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","field-week-short-relative+-1":"letzte Woche","field-hour-narrow-relative+0":"in dieser Stunde","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","field-mon-narrow-relative+0":"diesen Mo.","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","field-weekOfMonth-narrow":"Wo. des Monats","field-weekday-narrow":"Wochent.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/currency.js b/lib/dojo/cldr/nls/de/currency.js
index 6631b4952..042ee531d 100644
--- a/lib/dojo/cldr/nls/de/currency.js
+++ b/lib/dojo/cldr/nls/de/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/de/currency",{"HKD_displayName":"Hongkong-Dollar","CHF_displayName":"Schweizer Franken","JPY_symbol":"¥","CAD_displayName":"Kanadischer Dollar","HKD_symbol":"HK$","CNY_displayName":"Renminbi Yuan","USD_symbol":"$","AUD_displayName":"Australischer Dollar","JPY_displayName":"Japanischer Yen","CAD_symbol":"CA$","USD_displayName":"US-Dollar","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"Britisches Pfund","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file
+define("dojo/cldr/nls/de/currency",{"HKD_displayName":"Hongkong-Dollar","CNY_displayName":"Renminbi Yuan","JPY_displayName":"Japanischer Yen","JPY_symbol":"¥","USD_displayName":"US-Dollar","CAD_symbol":"CA$","GBP_displayName":"Britisches Pfund","CHF_displayName":"Schweizer Franken","CNY_symbol":"CN¥","EUR_displayName":"Euro","GBP_symbol":"£","CAD_displayName":"Kanadischer Dollar","USD_symbol":"$","EUR_symbol":"€","AUD_displayName":"Australischer Dollar","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/ethiopic.js b/lib/dojo/cldr/nls/de/ethiopic.js
new file mode 100644
index 000000000..d73fbd838
--- /dev/null
+++ b/lib/dojo/cldr/nls/de/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/de/ethiopic",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-thu-short-relative+0":"diesen Do.","field-day-short-relative+-1":"gestern","field-thu-short-relative+1":"nächsten Do.","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","eraNames":["ERA0","ERA1"],"field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","field-wed-relative+-1":"letzten Mittwoch","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","field-month":"Monat","field-day-narrow":"Tag","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","field-quarter-relative+-1":"letztes Quartal","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","field-hour":"Stunde","field-minute-narrow-relative+0":"in dieser Minute","months-format-wide":["Mäskäräm","Ṭəqəmt","Ḫədar","Taḫśaś","Ṭərr","Yäkatit","Mägabit","Miyazya","Gənbot","Säne","Ḥamle","Nähase","Ṗagumen"],"field-month-relative+-1":"letzten Monat","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","field-minute-short-relative+0":"in dieser Minute","months-format-abbr":["Mäskäräm","Ṭəqəmt","Ḫədar","Taḫśaś","Ṭərr","Yäkatit","Mägabit","Miyazya","Gənbot","Säne","Ḥamle","Nähase","Ṗagumen"],"field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","field-thu-short-relative+-1":"letzten Do.","field-year-narrow-relative+-1":"letztes Jahr","field-mon-narrow-relative+-1":"letzten Mo.","field-thu-narrow-relative+-1":"letzten Do.","field-tue-narrow-relative+-1":"letzten Di.","field-weekOfMonth-short":"W/M","field-wed-short-relative+0":"diesen Mi.","months-standAlone-wide":["Mäskäräm","Ṭəqəmt","Ḫədar","Taḫśaś","Ṭərr","Yäkatit","Mägabit","Miyazya","Gənbot","Säne","Ḥamle","Nähase","Ṗagumen"],"field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-sat-relative+0":"diesen Samstag","field-day-short-relative+1":"morgen","field-quarter-narrow-relative+1":"nächstes Quartal","field-sat-relative+1":"nächsten Samstag","field-day-short-relative+2":"übermorgen","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","months-standAlone-abbr":["Mäskäräm","Ṭəqəmt","Ḫədar","Taḫśaś","Ṭərr","Yäkatit","Mägabit","Miyazya","Gənbot","Säne","Ḥamle","Nähase","Ṗagumen"],"field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","field-zone-narrow":"Zeitz.","field-thu-narrow-relative+0":"diesen Do.","field-thu-narrow-relative+1":"nächsten Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","field-dayperiod-short":"Tageshälfte","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","field-week-short-relative+-1":"letzte Woche","field-hour-narrow-relative+0":"in dieser Stunde","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","field-mon-narrow-relative+0":"diesen Mo.","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","field-weekOfMonth-narrow":"Wo. des Monats","field-weekday-narrow":"Wochent.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/generic.js b/lib/dojo/cldr/nls/de/generic.js
index a9e6c595a..0b6505646 100644
--- a/lib/dojo/cldr/nls/de/generic.js
+++ b/lib/dojo/cldr/nls/de/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/de/generic",{"field-second-relative+0":"jetzt","field-weekday":"Wochentag","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-MMMEd":"E, d. MMM","field-tue-relative+-1":"letzten Dienstag","dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"letzten Freitag","field-wed-relative+-1":"letzten Mittwoch","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d. MMMM y G","dateFormatItem-yyyyMEd":"E, d.M.y GGGGG","field-thu-relative+-1":"letzten Donnerstag","dateFormatItem-Md":"d.M.","field-era":"Epoche","field-year":"Jahr","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"Stunde","field-sat-relative+0":"diesen Samstag","field-sat-relative+1":"nächsten Samstag","field-day-relative+0":"heute","field-day-relative+1":"morgen","field-thu-relative+0":"diesen Donnerstag","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"übermorgen","field-thu-relative+1":"nächsten Donnerstag","dateFormatItem-H":"HH 'Uhr'","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d. MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","field-sun-relative+0":"diesen Sonntag","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"nächsten Sonntag","field-minute":"Minute","field-dayperiod":"Tageshälfte","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"gestern","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'um' {0}","field-day-relative+-2":"vorgestern","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","dateTimeFormat-full":"{1} 'um' {0}","field-fri-relative+0":"diesen Freitag","field-fri-relative+1":"nächsten Freitag","field-day":"Tag","field-zone":"Zeitzone","dateFormatItem-y":"y G","field-year-relative+-1":"letztes Jahr","field-month-relative+-1":"letzten Monat","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d.M.y GGGGG","field-month":"Monat","dateFormatItem-MMM":"LLL","field-tue-relative+0":"diesen Dienstag","field-tue-relative+1":"nächsten Dienstag","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","dateFormat-short":"dd.MM.yy GGGGG","field-second":"Sekunde","field-sat-relative+-1":"letzten Samstag","field-sun-relative+-1":"letzten Sonntag","field-month-relative+0":"diesen Monat","field-month-relative+1":"nächsten Monat","dateFormatItem-Ed":"E, d.","field-week":"Woche","dateFormat-medium":"dd.MM.y G","field-year-relative+0":"dieses Jahr","field-week-relative+-1":"letzte Woche","dateFormatItem-yyyyM":"M.y GGGGG","field-year-relative+1":"nächstes Jahr","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"letzten Montag","dateFormatItem-yyyy":"y G","field-week-relative+0":"diese Woche","field-week-relative+1":"nächste Woche"}); \ No newline at end of file
+define("dojo/cldr/nls/de/generic",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","dateFormatItem-ms":"mm:ss","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-day-short-relative+-1":"gestern","field-thu-short-relative+0":"diesen Do.","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-thu-short-relative+1":"nächsten Do.","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-yyyyMd":"d.M.y GGGGG","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","dateFormatItem-yyyyMEd":"E, d.M.y GGGGG","field-wed-relative+-1":"letzten Mittwoch","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","dateFormatItem-GyMMM":"MMM y G","field-month":"Monat","field-day-narrow":"Tag","dateFormatItem-MMM":"LLL","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","dateFormat-medium":"dd.MM.y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M.y GGGGG","field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","field-quarter-relative+-1":"letztes Quartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","dateTimeFormat-long":"{1} 'um' {0}","dateFormatItem-Md":"d.M.","field-hour":"Stunde","field-minute-narrow-relative+0":"in dieser Minute","dateFormat-full":"EEEE, d. MMMM y G","field-month-relative+-1":"letzten Monat","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","dateFormatItem-Ehm":"E h:mm a","field-minute-short-relative+0":"in dieser Minute","field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","dateFormat-short":"dd.MM.yy GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"letztes Jahr","field-thu-short-relative+-1":"letzten Do.","dateFormatItem-yyyyMMMEd":"E, d. MMM y G","field-mon-narrow-relative+-1":"letzten Mo.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"letzten Do.","dateFormatItem-E":"ccc","dateFormatItem-H":"HH 'Uhr'","field-weekOfMonth-short":"W/M","field-tue-narrow-relative+-1":"letzten Di.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"diesen Mi.","field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","dateTimeFormat-full":"{1} 'um' {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-day-short-relative+1":"morgen","field-sat-relative+0":"diesen Samstag","field-quarter-narrow-relative+1":"nächstes Quartal","dateFormatItem-h":"h a","field-day-short-relative+2":"übermorgen","field-sat-relative+1":"nächsten Samstag","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"Zeitz.","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"diesen Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-narrow-relative+1":"nächsten Do.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"Tageshälfte","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","field-week-short-relative+-1":"letzte Woche","field-hour-narrow-relative+0":"in dieser Stunde","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","field-mon-narrow-relative+0":"diesen Mo.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"Wo. des Monats","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"Wochent.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","dateFormatItem-Gy":"y G","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/gregorian.js b/lib/dojo/cldr/nls/de/gregorian.js
index 324221711..0db26a8a1 100644
--- a/lib/dojo/cldr/nls/de/gregorian.js
+++ b/lib/dojo/cldr/nls/de/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/de/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"jetzt","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Wochentag","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d.M.y","field-wed-relative+0":"diesen Mittwoch","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-MMMEd":"E, d. MMM","field-wed-relative+1":"nächsten Mittwoch","eraNarrow":["v. Chr.","v. u. Z.","n. Chr.","u. Z."],"dateFormatItem-yMM":"MM.y","dayPeriods-format-wide-earlyMorning":"morgens","field-tue-relative+-1":"letzten Dienstag","dayPeriods-format-wide-morning":"vormittags","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dateFormat-long":"d. MMMM y","field-fri-relative+-1":"letzten Freitag","field-wed-relative+-1":"letzten Mittwoch","months-format-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"dayPeriods-format-wide-evening":"abends","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"nachm.","dateFormat-full":"EEEE, d. MMMM y","field-thu-relative+-1":"letzten Donnerstag","dateFormatItem-Md":"d.M.","dayPeriods-format-wide-noon":"mittags","dateFormatItem-yMd":"d.M.y","dateFormatItem-yM":"M.y","field-era":"Epoche","months-standAlone-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQQQQ":"QQQQ y","field-year":"Jahr","dateFormatItem-MMdd":"dd.MM.","field-hour":"Stunde","months-format-abbr":["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],"field-sat-relative+0":"diesen Samstag","field-sat-relative+1":"nächsten Samstag","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"heute","field-day-relative+1":"morgen","field-thu-relative+0":"diesen Donnerstag","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"übermorgen","field-thu-relative+1":"nächsten Donnerstag","dateFormatItem-H":"HH 'Uhr'","months-standAlone-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"timeFormat-medium":"HH:mm:ss","dateFormatItem-yMMdd":"dd.MM.y","field-sun-relative+0":"diesen Sonntag","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-sun-relative+1":"nächsten Sonntag","eraAbbr":["v. Chr.","n. Chr."],"field-minute":"Minute","field-dayperiod":"Tageshälfte","days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"dayPeriods-format-wide-night":"nachts","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"gestern","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'um' {0}","field-day-relative+-2":"vorgestern","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","dateTimeFormat-full":"{1} 'um' {0}","field-fri-relative+0":"diesen Freitag","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"nächsten Freitag","field-day":"Tag","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-zone":"Zeitzone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"letztes Jahr","field-month-relative+-1":"letzten Monat","dateFormatItem-hm":"h:mm a","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"eraNames":["v. Chr.","n. Chr."],"dateFormatItem-yMMMd":"d. MMM y","days-format-narrow":["S","M","D","M","D","F","S"],"days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-MMM":"LLL","field-month":"Monat","field-tue-relative+0":"diesen Dienstag","field-tue-relative+1":"nächsten Dienstag","dayPeriods-format-wide-am":"vorm.","dateFormatItem-MMMMEd":"E, d. MMMM","dateFormatItem-EHm":"E, HH:mm","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","dateFormat-short":"dd.MM.yy","dateFormatItem-MMd":"d.MM.","dayPeriods-format-wide-afternoon":"nachmittags","dateFormatItem-EHms":"E, HH:mm:ss","dateFormatItem-Ehms":"E, h:mm:ss a","field-second":"Sekunde","field-sat-relative+-1":"letzten Samstag","dateFormatItem-yMMMEd":"E, d. MMM y","field-sun-relative+-1":"letzten Sonntag","field-month-relative+0":"diesen Monat","field-month-relative+1":"nächsten Monat","dateFormatItem-Ed":"E, d.","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Woche","dateFormat-medium":"dd.MM.y","field-year-relative+0":"dieses Jahr","field-week-relative+-1":"letzte Woche","field-year-relative+1":"nächstes Jahr","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"letzten Montag","field-week-relative+0":"diese Woche","field-week-relative+1":"nächste Woche"}); \ No newline at end of file
+define("dojo/cldr/nls/de/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"diesen Do.","field-thu-narrow-relative+1":"nächsten Do.","field-sun-narrow-relative+0":"diesen So.","field-sun-narrow-relative+1":"nächsten So.","months-format-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr.","eraNarrow":["v. Chr.","v. u. Z.","n. Chr.","u. Z."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d. MMM y","dayPeriods-format-abbr-night1":"nachts","dayPeriods-format-narrow-evening1":"abends","days-standAlone-narrow":["S","M","D","M","D","F","S"],"days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dayPeriods-format-abbr-afternoon1":"mittags","dayPeriods-format-wide-evening1":"abends","dayPeriods-format-abbr-afternoon2":"nachm.","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"letzten Mi.","dayPeriods-standAlone-wide-evening1":"Abend","field-minute-narrow-relative+0":"in dieser Minute","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yMM":"MM.y","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","dateFormatItem-Ehms":"E, h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"Abend","dayPeriods-standAlone-abbr-afternoon1":"Mittag","dayPeriods-standAlone-abbr-afternoon2":"Nachm.","field-thu-relative+0":"diesen Donnerstag","dayPeriods-standAlone-abbr-night1":"Nacht","field-thu-relative+1":"nächsten Donnerstag","dayPeriods-format-wide-am":"AM","field-fri-relative+0":"diesen Freitag","field-fri-relative+1":"nächsten Freitag","dateFormatItem-yMd":"d.M.y","field-thu-narrow-relative+-1":"letzten Do.","field-quarter-relative+0":"dieses Quartal","field-quarter-relative+1":"nächstes Quartal","field-sun-short-relative+0":"diesen So.","timeFormat-short":"HH:mm","field-sun-short-relative+1":"nächsten So.","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"mittags","dateFormatItem-Md":"d.M.","dayPeriods-format-narrow-afternoon2":"nachm.","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"W","field-hour-relative+0":"in dieser Stunde","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-mon-narrow-relative+-1":"letzten Mo.","field-minute-narrow":"Min.","dateFormatItem-MMMMEd":"E, d. MMMM","field-thu-short-relative+0":"diesen Do.","field-mon-relative+0":"diesen Montag","field-thu-short-relative+1":"nächsten Do.","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+0":"heute","field-era-short":"Epoche","field-day-narrow-relative+1":"morgen","field-sat-narrow-relative+0":"diesen Sa.","field-day-narrow-relative+2":"übermorgen","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"nächsten Sa.","field-week-narrow-relative+0":"diese Woche","field-week-narrow-relative+1":"nächste Woche","field-hour-short-relative+0":"in dieser Stunde","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-month":"Monat","months-standAlone-wide":["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],"field-weekday-narrow":"Wochent.","dayPeriods-standAlone-narrow-afternoon1":"Mittag","dayPeriods-standAlone-narrow-afternoon2":"Nachm.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","dayPeriods-format-abbr-evening1":"abends","dayPeriods-format-narrow-midnight":"Mitternacht","dayPeriods-format-wide-midnight":"Mitternacht","field-tue-relative+0":"diesen Dienstag","field-tue-relative+1":"nächsten Dienstag","dayPeriods-standAlone-abbr-evening1":"Abend","field-minute-short-relative+0":"in dieser Minute","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"Mitternacht","field-year-narrow":"J","field-tue-short-relative+0":"diesen Di.","dayPeriods-standAlone-narrow-midnight":"Mitternacht","field-tue-short-relative+1":"nächsten Di.","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","dateTimeFormat-full":"{1} 'um' {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH 'Uhr'","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","dateFormatItem-M":"L","field-wed-short-relative+0":"diesen Mi.","field-fri-short-relative+0":"diesen Fr.","field-wed-short-relative+1":"nächsten Mi.","field-fri-short-relative+1":"nächsten Fr.","field-weekOfMonth-short":"W/M","field-year-short-relative+-1":"letztes Jahr","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"nachts","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"letztes Quartal","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h 'Uhr' a","quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"field-weekOfMonth-narrow":"Wo. des Monats","dateFormatItem-y":"y","field-minute-relative+0":"in dieser Minute","field-year-short-relative+0":"dieses Jahr","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"nächstes Jahr","field-weekday":"Wochentag","field-tue-narrow-relative+-1":"letzten Di.","dateFormatItem-yMEd":"E, d.M.y","dayPeriods-standAlone-wide-night1":"Nacht","field-year-narrow-relative+-1":"letztes Jahr","field-sat-relative+-1":"letzten Samstag","dayPeriods-format-abbr-midnight":"Mitternacht","dayPeriods-format-narrow-morning1":"morgens","dayPeriods-format-narrow-morning2":"vorm.","dayPeriods-format-wide-morning1":"morgens","dayPeriods-format-wide-morning2":"vormittags","dayPeriods-standAlone-abbr-midnight":"Mitternacht","dayPeriods-standAlone-wide-morning1":"Morgen","field-mon-narrow-relative+0":"diesen Mo.","dayPeriods-standAlone-wide-morning2":"Vormittag","field-mon-narrow-relative+1":"nächsten Mo.","field-second":"Sekunde","dateFormatItem-yMMMEd":"E, d. MMM y","field-year-relative+-1":"letztes Jahr","field-weekdayOfMonth-short":"Wochentag","dateFormat-short":"dd.MM.yy","eraNames":["v. Chr.","n. Chr."],"field-second-short":"Sek.","field-thu-short-relative+-1":"letzten Do.","field-zone":"Zeitzone","field-dayperiod-narrow":"Tagesh.","field-sun-short-relative+-1":"letzten So.","dayPeriods-standAlone-narrow-morning1":"Morgen","dayPeriods-standAlone-narrow-morning2":"Vorm.","eraAbbr":["v. Chr.","n. Chr."],"field-week-short":"Woche","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"heute","field-day-relative+1":"morgen","field-day-relative+2":"übermorgen","field-day-short-relative+0":"heute","field-dayOfYear-short":"Tag des Jahres","field-day-short-relative+1":"morgen","dateFormat-long":"d. MMMM y","field-day-short-relative+2":"übermorgen","field-sun-narrow-relative+-1":"letzten So.","field-second-relative+0":"jetzt","field-quarter-relative+-1":"letztes Quartal","dayPeriods-format-narrow-night1":"nachts","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-standAlone-narrow-night1":"Nacht","field-week-relative+-1":"letzte Woche","dayPeriods-format-abbr-morning1":"morgens","field-month-relative+-1":"letzten Monat","dayPeriods-format-abbr-morning2":"vorm.","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year":"Jahr","field-era":"Epoche","dayPeriods-standAlone-abbr-morning1":"Morgen","dayPeriods-standAlone-abbr-morning2":"Vorm.","days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"gestern","field-day-short-relative+-2":"vorgestern","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"Stunde","field-dayOfYear-narrow":"T/J","field-quarter":"Quartal","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","dateFormatItem-MMdd":"dd.MM.","field-day":"Tag","field-mon-relative+-1":"letzten Montag","field-dayOfYear":"Tag des Jahres","dateFormat-medium":"dd.MM.y","dateTimeFormat-short":"{1}, {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d. MMM y G","dateFormatItem-MEd":"E, d.M.","field-tue-short-relative+-1":"letzten Di.","field-year-short":"Jahr","field-month-short":"Monat","dateFormatItem-MMMEd":"E, d. MMM","dayPeriods-format-wide-afternoon1":"mittags","dateFormatItem-MMMd":"d. MMM","dayPeriods-format-wide-afternoon2":"nachmittags","dateFormatItem-Bh":"h B","months-format-abbr":["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sept.","Okt.","Nov.","Dez."],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"diesen Samstag","field-sat-relative+1":"nächsten Samstag","dayPeriods-format-wide-pm":"PM","days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"field-zone-short":"Zeitzone","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","dayPeriods-standAlone-wide-afternoon1":"Mittag","dayPeriods-standAlone-wide-afternoon2":"Nachmittag","field-fri-short-relative+-1":"letzten Fr.","field-month-narrow":"M","field-month-narrow-relative+-1":"letzten Monat","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-weekday-short":"Wochentag","field-day-narrow-relative+-1":"gestern","field-day-narrow-relative+-2":"vorgestern","field-quarter-short":"Quart.","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-format-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-EHm":"E, HH:mm","field-quarter-narrow":"Q","field-mon-short-relative+0":"diesen Mo.","field-mon-short-relative+1":"nächsten Mo.","field-dayperiod-short":"Tageshälfte","field-week-narrow-relative+-1":"letzte Woche","field-thu-relative+-1":"letzten Donnerstag","field-fri-narrow-relative+-1":"letzten Fr.","field-mon-short-relative+-1":"letzten Mo.","timeFormat-medium":"HH:mm:ss","dateFormatItem-Ed":"E, d.","field-wed-relative+-1":"letzten Mittwoch","field-weekOfMonth":"Woche des Monats","field-weekdayOfMonth-narrow":"WT","dayPeriods-standAlone-wide-am":"AM","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"letzten Freitag","field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"field-day-short":"Tag","field-dayperiod":"Tageshälfte","field-hour-short":"Std.","months-standAlone-abbr":["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],"field-month-relative+0":"diesen Monat","field-second-narrow":"Sek.","field-month-relative+1":"nächsten Monat","dateFormat-full":"EEEE, d. MMMM y","field-era-narrow":"E","field-sat-short-relative+-1":"letzten Sa.","field-week-short-relative+-1":"letzte Woche","dateTimeFormat-long":"{1} 'um' {0}","dateFormatItem-yM":"M.y","field-sun-relative+-1":"letzten Sonntag","field-wed-short-relative+-1":"letzten Mi.","field-weekdayOfMonth":"Wochentag","field-quarter-narrow-relative+0":"dieses Quartal","dateFormatItem-GyMMMEd":"E, d. MMM y G","field-quarter-narrow-relative+1":"nächstes Quartal","field-sat-short-relative+0":"diesen Sa.","field-hour-narrow":"Std.","field-sat-short-relative+1":"nächsten Sa.","field-year-narrow-relative+0":"dieses Jahr","field-year-narrow-relative+1":"nächstes Jahr","dateFormatItem-Gy":"y G","field-zone-narrow":"Zeitz.","field-tue-relative+-1":"letzten Dienstag","field-minute-short":"Min.","dateFormatItem-yw":"'Woche' w 'des' 'Jahres' Y","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"diese Woche","field-week-relative+1":"nächste Woche","dateFormatItem-MMM":"LLL","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","dateFormatItem-yMMdd":"dd.MM.y","field-sat-narrow-relative+-1":"letzten Sa.","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dateFormatItem-MMd":"d.MM.","dateFormatItem-MMMMW":"'Woche' W 'im' MMMM","field-month-short-relative+-1":"letzten Monat","dateFormatItem-EHms":"E, HH:mm:ss","dateFormatItem-MMMMd":"d. MMMM","field-hour-narrow-relative+0":"in dieser Stunde","field-week":"Woche","field-day-narrow":"Tag"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/hebrew.js b/lib/dojo/cldr/nls/de/hebrew.js
index d61615b6c..d34871bb5 100644
--- a/lib/dojo/cldr/nls/de/hebrew.js
+++ b/lib/dojo/cldr/nls/de/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/de/hebrew",{"days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-second-relative+0":"jetzt","field-weekday":"Wochentag","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-MMMEd":"E, d. MMM","field-tue-relative+-1":"letzten Dienstag","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"letzten Freitag","field-wed-relative+-1":"letzten Mittwoch","dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"nachm.","dateFormat-full":"EEEE, d. MMMM y G","dateFormatItem-yyyyMEd":"E, d.M.y GGGGG","field-thu-relative+-1":"letzten Donnerstag","dateFormatItem-Md":"d.M.","dayPeriods-format-wide-noon":"mittags","field-era":"Epoche","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"field-year":"Jahr","field-hour":"Stunde","field-sat-relative+0":"diesen Samstag","field-sat-relative+1":"nächsten Samstag","field-day-relative+0":"heute","field-thu-relative+0":"diesen Donnerstag","field-day-relative+1":"morgen","field-thu-relative+1":"nächsten Donnerstag","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"übermorgen","dateFormatItem-H":"HH 'Uhr'","quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d. MMM y G","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","eraAbbr":["AM"],"field-minute":"Minute","field-dayperiod":"Tageshälfte","days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","field-fri-relative+0":"diesen Freitag","field-fri-relative+1":"nächsten Freitag","field-day":"Tag","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-zone":"Zeitzone","dateFormatItem-y":"y G","field-year-relative+-1":"letztes Jahr","field-month-relative+-1":"letzten Monat","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"days-format-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-yyyyMd":"d.M.y GGGGG","field-month":"Monat","days-standAlone-narrow":["S","M","D","M","D","F","S"],"field-tue-relative+0":"diesen Dienstag","field-tue-relative+1":"nächsten Dienstag","dayPeriods-format-wide-am":"vorm.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","dateFormat-short":"dd.MM.yy GGGGG","field-second":"Sekunde","field-sat-relative+-1":"letzten Samstag","field-sun-relative+-1":"letzten Sonntag","field-month-relative+0":"diesen Monat","field-month-relative+1":"nächsten Monat","dateFormatItem-Ed":"E, d.","field-week":"Woche","dateFormat-medium":"dd.MM.y G","field-year-relative+0":"dieses Jahr","field-week-relative+-1":"letzte Woche","dateFormatItem-yyyyM":"M.y GGGGG","field-year-relative+1":"nächstes Jahr","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"letzten Montag","dateFormatItem-yyyy":"y G","field-week-relative+0":"diese Woche","field-week-relative+1":"nächste Woche"}); \ No newline at end of file
+define("dojo/cldr/nls/de/hebrew",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-thu-short-relative+0":"diesen Do.","field-day-short-relative+-1":"gestern","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"nächsten Do.","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["AM"],"field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-yyyyMd":"d.M.y GGGGG","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","dateFormatItem-yyyyMEd":"E, d.M.y GGGGG","field-wed-relative+-1":"letzten Mittwoch","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"days-format-narrow":["S","M","D","M","D","F","S"],"field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","dateFormatItem-GyMMM":"MMM y G","field-month":"Monat","field-day-narrow":"Tag","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","dateFormat-medium":"dd.MM.y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AM"],"dateFormatItem-yyyyM":"M.y GGGGG","field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","field-quarter-relative+-1":"letztes Quartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","dateTimeFormat-long":"{1} 'um' {0}","dateFormatItem-Md":"d.M.","field-minute-narrow-relative+0":"in dieser Minute","field-hour":"Stunde","months-format-wide":["Tischri","Cheschwan","Kislew","Tevet","Schevat","Adar I","Adar","Nisan","Ijjar","Siwan","Tammus","Aw","Elul"],"dateFormat-full":"EEEE, d. MMMM y G","field-month-relative+-1":"letzten Monat","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","field-minute-short-relative+0":"in dieser Minute","months-format-abbr":["Tischri","Cheschwan","Kislew","Tevet","Schevat","Adar I","Adar","Nisan","Ijjar","Siwan","Tammus","Aw","Elul"],"field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","dateFormat-short":"dd.MM.yy GGGGG","field-thu-short-relative+-1":"letzten Do.","field-year-narrow-relative+-1":"letztes Jahr","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y G","field-mon-narrow-relative+-1":"letzten Mo.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"letzten Do.","field-tue-narrow-relative+-1":"letzten Di.","dateFormatItem-H":"HH 'Uhr'","field-weekOfMonth-short":"W/M","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"diesen Mi.","months-standAlone-wide":["Tischri","Cheschwan","Kislew","Tevet","Schevat","Adar I","Adar","Nisan","Ijjar","Siwan","Tammus","Aw","Elul"],"field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"dateTimeFormat-full":"{1} 'um' {0}","months-format-abbr-leap":"Adar II","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-sat-relative+0":"diesen Samstag","field-day-short-relative+1":"morgen","field-quarter-narrow-relative+1":"nächstes Quartal","field-sat-relative+1":"nächsten Samstag","field-day-short-relative+2":"übermorgen","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","months-standAlone-abbr":["Tischri","Cheschwan","Kislew","Tevet","Schevat","Adar I","Adar","Nisan","Ijjar","Siwan","Tammus","Aw","Elul"],"months-format-wide-leap":"Adar II","field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"Zeitz.","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"diesen Do.","field-thu-narrow-relative+1":"nächsten Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","field-dayperiod-short":"Tageshälfte","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-week-short-relative+-1":"letzte Woche","months-standAlone-abbr-leap":"Adar II","field-hour-narrow-relative+0":"in dieser Stunde","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","eraNarrow":"AM","field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-mon-narrow-relative+0":"diesen Mo.","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"Wo. des Monats","field-weekday-narrow":"Wochent.","months-standAlone-wide-leap":"Adar II","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","dateFormatItem-Gy":"y G","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/indian.js b/lib/dojo/cldr/nls/de/indian.js
new file mode 100644
index 000000000..258f03f9b
--- /dev/null
+++ b/lib/dojo/cldr/nls/de/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/de/indian",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-thu-short-relative+0":"diesen Do.","field-day-short-relative+-1":"gestern","field-thu-short-relative+1":"nächsten Do.","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","eraNames":["Saka"],"field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","field-wed-relative+-1":"letzten Mittwoch","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","field-month":"Monat","field-day-narrow":"Tag","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","eraAbbr":["Saka"],"field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","field-quarter-relative+-1":"letztes Quartal","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","field-hour":"Stunde","field-minute-narrow-relative+0":"in dieser Minute","months-format-wide":["Chaitra","Vaisakha","Jyaishtha","Ashadha","Sravana","Bhadrapada","Ashvina","Kartika","Margasirsha","Pausha","Magha","Phalguna"],"field-month-relative+-1":"letzten Monat","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","field-minute-short-relative+0":"in dieser Minute","months-format-abbr":["Chaitra","Vaisakha","Jyaishtha","Ashadha","Sravana","Bhadrapada","Ashvina","Kartika","Margasirsha","Pausha","Magha","Phalguna"],"field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","field-thu-short-relative+-1":"letzten Do.","field-year-narrow-relative+-1":"letztes Jahr","field-mon-narrow-relative+-1":"letzten Mo.","field-thu-narrow-relative+-1":"letzten Do.","field-tue-narrow-relative+-1":"letzten Di.","field-weekOfMonth-short":"W/M","field-wed-short-relative+0":"diesen Mi.","months-standAlone-wide":["Chaitra","Vaisakha","Jyaishtha","Ashadha","Sravana","Bhadrapada","Ashvina","Kartika","Margasirsha","Pausha","Magha","Phalguna"],"field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-sat-relative+0":"diesen Samstag","field-day-short-relative+1":"morgen","field-quarter-narrow-relative+1":"nächstes Quartal","field-sat-relative+1":"nächsten Samstag","field-day-short-relative+2":"übermorgen","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaishtha","Ashadha","Sravana","Bhadrapada","Ashvina","Kartika","Margasirsha","Pausha","Magha","Phalguna"],"field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","field-zone-narrow":"Zeitz.","field-thu-narrow-relative+0":"diesen Do.","field-thu-narrow-relative+1":"nächsten Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","field-dayperiod-short":"Tageshälfte","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","field-week-short-relative+-1":"letzte Woche","field-hour-narrow-relative+0":"in dieser Stunde","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","eraNarrow":"Saka","field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","field-mon-narrow-relative+0":"diesen Mo.","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","field-weekOfMonth-narrow":"Wo. des Monats","field-weekday-narrow":"Wochent.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/islamic.js b/lib/dojo/cldr/nls/de/islamic.js
index 4e91bd500..6bc93e62f 100644
--- a/lib/dojo/cldr/nls/de/islamic.js
+++ b/lib/dojo/cldr/nls/de/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/de/islamic",{"days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-second-relative+0":"jetzt","field-weekday":"Wochentag","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-MMMEd":"E, d. MMM","field-tue-relative+-1":"letzten Dienstag","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"letzten Freitag","field-wed-relative+-1":"letzten Mittwoch","dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"nachm.","dateFormat-full":"EEEE, d. MMMM y G","dateFormatItem-yyyyMEd":"E, d.M.y GGGGG","field-thu-relative+-1":"letzten Donnerstag","dateFormatItem-Md":"d.M.","dayPeriods-format-wide-noon":"mittags","field-era":"Epoche","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"field-year":"Jahr","field-hour":"Stunde","field-sat-relative+0":"diesen Samstag","field-sat-relative+1":"nächsten Samstag","field-day-relative+0":"heute","field-thu-relative+0":"diesen Donnerstag","field-day-relative+1":"morgen","field-thu-relative+1":"nächsten Donnerstag","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"übermorgen","dateFormatItem-H":"HH 'Uhr'","quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d. MMM y G","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","eraAbbr":["AH"],"field-minute":"Minute","field-dayperiod":"Tageshälfte","days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","field-fri-relative+0":"diesen Freitag","field-fri-relative+1":"nächsten Freitag","field-day":"Tag","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-zone":"Zeitzone","dateFormatItem-y":"y G","field-year-relative+-1":"letztes Jahr","field-month-relative+-1":"letzten Monat","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"days-format-narrow":["S","M","D","M","D","F","S"],"dateFormatItem-yyyyMd":"d.M.y GGGGG","field-month":"Monat","days-standAlone-narrow":["S","M","D","M","D","F","S"],"field-tue-relative+0":"diesen Dienstag","field-tue-relative+1":"nächsten Dienstag","dayPeriods-format-wide-am":"vorm.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","dateFormat-short":"dd.MM.yy GGGGG","field-second":"Sekunde","field-sat-relative+-1":"letzten Samstag","field-sun-relative+-1":"letzten Sonntag","field-month-relative+0":"diesen Monat","field-month-relative+1":"nächsten Monat","dateFormatItem-Ed":"E, d.","field-week":"Woche","dateFormat-medium":"dd.MM.y G","field-year-relative+0":"dieses Jahr","field-week-relative+-1":"letzte Woche","dateFormatItem-yyyyM":"M.y GGGGG","field-year-relative+1":"nächstes Jahr","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"letzten Montag","dateFormatItem-yyyy":"y G","field-week-relative+0":"diese Woche","field-week-relative+1":"nächste Woche"}); \ No newline at end of file
+define("dojo/cldr/nls/de/islamic",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-thu-short-relative+0":"diesen Do.","field-day-short-relative+-1":"gestern","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"nächsten Do.","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["AH"],"field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-yyyyMd":"d.M.y GGGGG","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","dateFormatItem-yyyyMEd":"E, d.M.y GGGGG","field-wed-relative+-1":"letzten Mittwoch","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"days-format-narrow":["S","M","D","M","D","F","S"],"field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","dateFormatItem-GyMMM":"MMM y G","field-month":"Monat","field-day-narrow":"Tag","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","dateFormat-medium":"dd.MM.y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AH"],"dateFormatItem-yyyyM":"M.y GGGGG","field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","field-quarter-relative+-1":"letztes Quartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","dateTimeFormat-long":"{1} 'um' {0}","dateFormatItem-Md":"d.M.","field-minute-narrow-relative+0":"in dieser Minute","field-hour":"Stunde","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Dschumada I","Dschumada II","Radschab","Shaʻban","Ramadan","Shawwal","Dhu l-qaʿda","Dhu l-Hiddscha"],"dateFormat-full":"EEEE, d. MMMM y G","field-month-relative+-1":"letzten Monat","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","field-minute-short-relative+0":"in dieser Minute","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","dateFormat-short":"dd.MM.yy GGGGG","field-thu-short-relative+-1":"letzten Do.","field-year-narrow-relative+-1":"letztes Jahr","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y G","field-mon-narrow-relative+-1":"letzten Mo.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"letzten Do.","field-tue-narrow-relative+-1":"letzten Di.","dateFormatItem-H":"HH 'Uhr'","field-weekOfMonth-short":"W/M","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"diesen Mi.","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Dschumada I","Dschumada II","Radschab","Shaʻban","Ramadan","Shawwal","Dhu l-qaʿda","Dhu l-Hiddscha"],"field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"dateTimeFormat-full":"{1} 'um' {0}","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-sat-relative+0":"diesen Samstag","field-day-short-relative+1":"morgen","field-quarter-narrow-relative+1":"nächstes Quartal","field-sat-relative+1":"nächsten Samstag","field-day-short-relative+2":"übermorgen","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"Zeitz.","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"diesen Do.","field-thu-narrow-relative+1":"nächsten Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","field-dayperiod-short":"Tageshälfte","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-week-short-relative+-1":"letzte Woche","field-hour-narrow-relative+0":"in dieser Stunde","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","eraNarrow":"AH","field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-mon-narrow-relative+0":"diesen Mo.","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"Wo. des Monats","field-weekday-narrow":"Wochent.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","dateFormatItem-Gy":"y G","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/japanese.js b/lib/dojo/cldr/nls/de/japanese.js
index c566849c3..f8a677ef0 100644
--- a/lib/dojo/cldr/nls/de/japanese.js
+++ b/lib/dojo/cldr/nls/de/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/de/japanese",{"field-sat-relative+0":"diesen Samstag","field-sat-relative+1":"nächsten Samstag","field-dayperiod":"Tageshälfte","field-sun-relative+-1":"letzten Sonntag","field-mon-relative+-1":"letzten Montag","field-minute":"Minute","field-day-relative+-1":"gestern","field-weekday":"Wochentag","field-day-relative+-2":"vorgestern","field-era":"Epoche","field-hour":"Stunde","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","field-wed-relative+-1":"letzten Mittwoch","field-day-relative+0":"heute","field-day-relative+1":"morgen","field-day-relative+2":"übermorgen","dateFormat-long":"d. MMMM y G","field-tue-relative+0":"diesen Dienstag","field-zone":"Zeitzone","field-tue-relative+1":"nächsten Dienstag","field-week-relative+-1":"letzte Woche","dateFormat-medium":"dd.MM.y G","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-sat-relative+-1":"letzten Samstag","field-year-relative+-1":"letztes Jahr","field-year":"Jahr","field-fri-relative+0":"diesen Freitag","field-fri-relative+1":"nächsten Freitag","field-week":"Woche","field-week-relative+0":"diese Woche","field-week-relative+1":"nächste Woche","field-month-relative+0":"diesen Monat","field-month":"Monat","field-month-relative+1":"nächsten Monat","field-fri-relative+-1":"letzten Freitag","field-second":"Sekunde","field-tue-relative+-1":"letzten Dienstag","field-day":"Tag","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-thu-relative+0":"diesen Donnerstag","field-second-relative+0":"jetzt","dateFormat-short":"dd.MM.yy GGGGG","field-thu-relative+1":"nächsten Donnerstag","dateFormat-full":"EEEE, d. MMMM y G","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-month-relative+-1":"letzten Monat","field-thu-relative+-1":"letzten Donnerstag"}); \ No newline at end of file
+define("dojo/cldr/nls/de/japanese",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-thu-short-relative+0":"diesen Do.","field-day-short-relative+-1":"gestern","field-thu-short-relative+1":"nächsten Do.","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","field-wed-relative+-1":"letzten Mittwoch","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","dateFormat-long":"d. MMMM y G","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","field-month":"Monat","field-day-narrow":"Tag","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","dateFormat-medium":"dd.MM.y G","eraAbbr":["Taika (645–650)"],"field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","field-quarter-relative+-1":"letztes Quartal","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","field-hour":"Stunde","field-minute-narrow-relative+0":"in dieser Minute","dateFormat-full":"EEEE, d. MMMM y G","field-month-relative+-1":"letzten Monat","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","field-minute-short-relative+0":"in dieser Minute","field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","dateFormat-short":"dd.MM.yy GGGGG","field-thu-short-relative+-1":"letzten Do.","field-year-narrow-relative+-1":"letztes Jahr","field-mon-narrow-relative+-1":"letzten Mo.","field-thu-narrow-relative+-1":"letzten Do.","field-tue-narrow-relative+-1":"letzten Di.","field-weekOfMonth-short":"W/M","field-wed-short-relative+0":"diesen Mi.","field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-sat-relative+0":"diesen Samstag","field-day-short-relative+1":"morgen","field-quarter-narrow-relative+1":"nächstes Quartal","field-sat-relative+1":"nächsten Samstag","field-day-short-relative+2":"übermorgen","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","field-zone-narrow":"Zeitz.","field-thu-narrow-relative+0":"diesen Do.","field-thu-narrow-relative+1":"nächsten Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","field-dayperiod-short":"Tageshälfte","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","field-week-short-relative+-1":"letzte Woche","field-hour-narrow-relative+0":"in dieser Stunde","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","field-mon-narrow-relative+0":"diesen Mo.","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","field-weekOfMonth-narrow":"Wo. des Monats","field-weekday-narrow":"Wochent.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/number.js b/lib/dojo/cldr/nls/de/number.js
index 376ce7701..87827d5c9 100644
--- a/lib/dojo/cldr/nls/de/number.js
+++ b/lib/dojo/cldr/nls/de/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/de/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"·","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 Billionen","decimalFormat-short":"000 Bio'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/de/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"·","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 Bio'.'","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"≈","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 Billionen","decimalFormat":"#,##0.###","currencyFormat-short":"000 Bio'.' ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/persian.js b/lib/dojo/cldr/nls/de/persian.js
new file mode 100644
index 000000000..14294962c
--- /dev/null
+++ b/lib/dojo/cldr/nls/de/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/de/persian",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-thu-short-relative+0":"diesen Do.","field-day-short-relative+-1":"gestern","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"nächsten Do.","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["AP"],"field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-yyyyMd":"d.M.y GGGGG","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","dateFormatItem-yyyyMEd":"E, d.M.y GGGGG","field-wed-relative+-1":"letzten Mittwoch","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","days-standAlone-narrow":["S","M","D","M","D","F","S"],"dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","quarters-standAlone-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"days-format-narrow":["S","M","D","M","D","F","S"],"field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","dateFormatItem-GyMMM":"MMM y G","field-month":"Monat","field-day-narrow":"Tag","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","dateFormat-medium":"dd.MM.y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AP"],"dateFormatItem-yyyyM":"M.y GGGGG","field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"letztes Quartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","days-format-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","dateTimeFormat-long":"{1} 'um' {0}","dateFormatItem-Md":"d.M.","field-minute-narrow-relative+0":"in dieser Minute","field-hour":"Stunde","months-format-wide":["Farwardin","Ordibehescht","Chordād","Tir","Mordād","Schahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Essfand"],"dateFormat-full":"EEEE, d. MMMM y G","field-month-relative+-1":"letzten Monat","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","field-minute-short-relative+0":"in dieser Minute","months-format-abbr":["Farwardin","Ordibehescht","Chordād","Tir","Mordād","Schahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Essfand"],"field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","dateFormat-short":"dd.MM.yy GGGGG","field-thu-short-relative+-1":"letzten Do.","field-year-narrow-relative+-1":"letztes Jahr","days-standAlone-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y G","field-mon-narrow-relative+-1":"letzten Mo.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"letzten Do.","field-tue-narrow-relative+-1":"letzten Di.","dateFormatItem-H":"HH 'Uhr'","field-weekOfMonth-short":"W/M","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"diesen Mi.","months-standAlone-wide":["Farwardin","Ordibehescht","Chordād","Tir","Mordād","Schahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Essfand"],"field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","days-standAlone-abbr":["So","Mo","Di","Mi","Do","Fr","Sa"],"dateTimeFormat-full":"{1} 'um' {0}","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-sat-relative+0":"diesen Samstag","field-day-short-relative+1":"morgen","field-quarter-narrow-relative+1":"nächstes Quartal","field-sat-relative+1":"nächsten Samstag","field-day-short-relative+2":"übermorgen","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","months-standAlone-abbr":["Farwardin","Ordibehescht","Chordād","Tir","Mordād","Schahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Essfand"],"field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"Zeitz.","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"diesen Do.","field-thu-narrow-relative+1":"nächsten Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","quarters-format-wide":["1. Quartal","2. Quartal","3. Quartal","4. Quartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","field-dayperiod-short":"Tageshälfte","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","days-standAlone-short":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-week-short-relative+-1":"letzte Woche","field-hour-narrow-relative+0":"in dieser Stunde","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","eraNarrow":"AP","field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","days-format-wide":["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],"field-mon-narrow-relative+0":"diesen Mo.","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"Wo. des Monats","field-weekday-narrow":"Wochent.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","days-format-abbr":["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],"field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","dateFormatItem-Gy":"y G","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/de/roc.js b/lib/dojo/cldr/nls/de/roc.js
index e4abb5790..ec9655763 100644
--- a/lib/dojo/cldr/nls/de/roc.js
+++ b/lib/dojo/cldr/nls/de/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/de/roc",{"field-sat-relative+0":"diesen Samstag","field-sat-relative+1":"nächsten Samstag","field-dayperiod":"Tageshälfte","field-sun-relative+-1":"letzten Sonntag","field-mon-relative+-1":"letzten Montag","field-minute":"Minute","field-day-relative+-1":"gestern","field-weekday":"Wochentag","field-day-relative+-2":"vorgestern","field-era":"Epoche","field-hour":"Stunde","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","field-wed-relative+-1":"letzten Mittwoch","field-day-relative+0":"heute","field-day-relative+1":"morgen","eraAbbr":["Before R.O.C.","Minguo"],"field-day-relative+2":"übermorgen","field-tue-relative+0":"diesen Dienstag","field-zone":"Zeitzone","field-tue-relative+1":"nächsten Dienstag","field-week-relative+-1":"letzte Woche","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-sat-relative+-1":"letzten Samstag","field-year-relative+-1":"letztes Jahr","field-year":"Jahr","field-fri-relative+0":"diesen Freitag","field-fri-relative+1":"nächsten Freitag","field-week":"Woche","field-week-relative+0":"diese Woche","field-week-relative+1":"nächste Woche","field-month-relative+0":"diesen Monat","field-month":"Monat","field-month-relative+1":"nächsten Monat","field-fri-relative+-1":"letzten Freitag","field-second":"Sekunde","field-tue-relative+-1":"letzten Dienstag","field-day":"Tag","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-thu-relative+0":"diesen Donnerstag","field-second-relative+0":"jetzt","field-thu-relative+1":"nächsten Donnerstag","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-month-relative+-1":"letzten Monat","field-thu-relative+-1":"letzten Donnerstag"}); \ No newline at end of file
+define("dojo/cldr/nls/de/roc",{"field-tue-relative+-1":"letzten Dienstag","field-year":"Jahr","field-wed-relative+0":"diesen Mittwoch","field-wed-relative+1":"nächsten Mittwoch","field-minute":"Minute","field-month-narrow-relative+-1":"letzten Monat","field-tue-narrow-relative+0":"diesen Di.","field-tue-narrow-relative+1":"nächsten Di.","field-thu-short-relative+0":"diesen Do.","field-day-short-relative+-1":"gestern","field-thu-short-relative+1":"nächsten Do.","field-day-relative+0":"heute","field-day-short-relative+-2":"vorgestern","field-day-relative+1":"morgen","field-week-narrow-relative+0":"diese Woche","field-day-relative+2":"übermorgen","field-week-narrow-relative+1":"nächste Woche","field-wed-narrow-relative+-1":"letzten Mi.","field-year-narrow":"J","field-era-short":"Epoche","field-year-narrow-relative+0":"dieses Jahr","field-tue-relative+0":"diesen Dienstag","field-year-narrow-relative+1":"nächstes Jahr","field-tue-relative+1":"nächsten Dienstag","field-weekdayOfMonth":"Wochentag","field-second-short":"Sek.","field-weekdayOfMonth-narrow":"WT","field-week-relative+0":"diese Woche","field-month-relative+0":"diesen Monat","field-week-relative+1":"nächste Woche","field-month-relative+1":"nächsten Monat","field-sun-narrow-relative+0":"diesen So.","field-mon-short-relative+0":"diesen Mo.","field-sun-narrow-relative+1":"nächsten So.","field-mon-short-relative+1":"nächsten Mo.","field-second-relative+0":"jetzt","eraNames":["vor Volksrepublik China","Minguo"],"field-weekOfMonth":"Woche des Monats","field-month-short":"Monat","field-day":"Tag","field-dayOfYear-short":"Tag des Jahres","field-year-relative+-1":"letztes Jahr","field-sat-short-relative+-1":"letzten Sa.","field-hour-relative+0":"in dieser Stunde","field-wed-relative+-1":"letzten Mittwoch","field-sat-narrow-relative+-1":"letzten Sa.","field-second":"Sekunde","field-hour-short-relative+0":"in dieser Stunde","field-quarter":"Quartal","field-week-short":"Woche","field-day-narrow-relative+0":"heute","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"übermorgen","field-tue-short-relative+0":"diesen Di.","field-tue-short-relative+1":"nächsten Di.","field-month-short-relative+-1":"letzten Monat","field-mon-relative+-1":"letzten Montag","field-month":"Monat","field-day-narrow":"Tag","field-minute-short":"Min.","field-dayperiod":"Tageshälfte","field-sat-short-relative+0":"diesen Sa.","field-sat-short-relative+1":"nächsten Sa.","eraAbbr":["Before R.O.C.","Minguo"],"field-second-narrow":"Sek.","field-mon-relative+0":"diesen Montag","field-mon-relative+1":"nächsten Montag","field-day-narrow-relative+-1":"gestern","field-year-short":"Jahr","field-day-narrow-relative+-2":"vorgestern","field-quarter-relative+-1":"letztes Quartal","field-dayperiod-narrow":"Tagesh.","field-week-narrow-relative+-1":"letzte Woche","field-dayOfYear":"Tag des Jahres","field-sat-relative+-1":"letzten Samstag","field-hour":"Stunde","field-minute-narrow-relative+0":"in dieser Minute","field-month-relative+-1":"letzten Monat","field-quarter-short":"Quart.","field-sat-narrow-relative+0":"diesen Sa.","field-fri-relative+0":"diesen Freitag","field-sat-narrow-relative+1":"nächsten Sa.","field-fri-relative+1":"nächsten Freitag","field-month-narrow-relative+0":"diesen Monat","field-month-narrow-relative+1":"nächsten Monat","field-sun-short-relative+0":"diesen So.","field-sun-short-relative+1":"nächsten So.","field-week-relative+-1":"letzte Woche","field-minute-short-relative+0":"in dieser Minute","field-quarter-relative+0":"dieses Quartal","field-minute-relative+0":"in dieser Minute","field-quarter-relative+1":"nächstes Quartal","field-wed-short-relative+-1":"letzten Mi.","field-thu-short-relative+-1":"letzten Do.","field-year-narrow-relative+-1":"letztes Jahr","field-mon-narrow-relative+-1":"letzten Mo.","field-thu-narrow-relative+-1":"letzten Do.","field-tue-narrow-relative+-1":"letzten Di.","field-weekOfMonth-short":"W/M","field-wed-short-relative+0":"diesen Mi.","field-wed-short-relative+1":"nächsten Mi.","field-sun-relative+-1":"letzten Sonntag","field-weekday":"Wochentag","field-day-short-relative+0":"heute","field-quarter-narrow-relative+0":"dieses Quartal","field-sat-relative+0":"diesen Samstag","field-day-short-relative+1":"morgen","field-quarter-narrow-relative+1":"nächstes Quartal","field-sat-relative+1":"nächsten Samstag","field-day-short-relative+2":"übermorgen","field-week-short-relative+0":"diese Woche","field-week-short-relative+1":"nächste Woche","field-dayOfYear-narrow":"T/J","field-month-short-relative+0":"diesen Monat","field-month-short-relative+1":"nächsten Monat","field-weekdayOfMonth-short":"Wochentag","field-zone-narrow":"Zeitz.","field-thu-narrow-relative+0":"diesen Do.","field-thu-narrow-relative+1":"nächsten Do.","field-sun-narrow-relative+-1":"letzten So.","field-mon-short-relative+-1":"letzten Mo.","field-thu-relative+0":"diesen Donnerstag","field-thu-relative+1":"nächsten Donnerstag","field-fri-short-relative+-1":"letzten Fr.","field-thu-relative+-1":"letzten Donnerstag","field-week":"Woche","field-wed-narrow-relative+0":"diesen Mi.","field-wed-narrow-relative+1":"nächsten Mi.","field-quarter-narrow-relative+-1":"letztes Quartal","field-year-short-relative+0":"dieses Jahr","field-dayperiod-short":"Tageshälfte","field-year-short-relative+1":"nächstes Jahr","field-fri-short-relative+0":"diesen Fr.","field-fri-short-relative+1":"nächsten Fr.","field-week-short-relative+-1":"letzte Woche","field-hour-narrow-relative+0":"in dieser Stunde","field-hour-short":"Std.","field-zone-short":"Zeitzone","field-month-narrow":"M","field-hour-narrow":"Std.","field-fri-narrow-relative+-1":"letzten Fr.","field-year-relative+0":"dieses Jahr","field-year-relative+1":"nächstes Jahr","field-era-narrow":"E","field-fri-relative+-1":"letzten Freitag","eraNarrow":["v. VR China","Minguo"],"field-tue-short-relative+-1":"letzten Di.","field-minute-narrow":"Min.","field-mon-narrow-relative+0":"diesen Mo.","field-mon-narrow-relative+1":"nächsten Mo.","field-year-short-relative+-1":"letztes Jahr","field-zone":"Zeitzone","field-weekOfMonth-narrow":"Wo. des Monats","field-weekday-narrow":"Wochent.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"letzten So.","field-day-relative+-1":"gestern","field-day-relative+-2":"vorgestern","field-weekday-short":"Wochentag","field-sun-relative+0":"diesen Sonntag","field-sun-relative+1":"nächsten Sonntag","field-day-short":"Tag","field-week-narrow":"W","field-era":"Epoche","field-fri-narrow-relative+0":"diesen Fr.","field-fri-narrow-relative+1":"nächsten Fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/buddhist.js b/lib/dojo/cldr/nls/el/buddhist.js
index 251c486e1..1bd383d37 100644
--- a/lib/dojo/cldr/nls/el/buddhist.js
+++ b/lib/dojo/cldr/nls/el/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/el/buddhist",{"days-standAlone-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"months-format-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"field-second-relative+0":"τώρα","field-weekday":"Ημέρα εβδομάδας","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"προηγούμενη Τρίτη","days-format-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"προηγούμενη Παρασκευή","field-wed-relative+-1":"προηγούμενη Τετάρτη","months-format-wide":["Ιανουαρίου","Φεβρουαρίου","Μαρτίου","Απριλίου","Μαΐου","Ιουνίου","Ιουλίου","Αυγούστου","Σεπτεμβρίου","Οκτωβρίου","Νοεμβρίου","Δεκεμβρίου"],"dateTimeFormat-medium":"{1} - {0}","dayPeriods-format-wide-pm":"μ.μ.","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-thu-relative+-1":"επόμενη Πέμπτη","dateFormatItem-Md":"d/M","field-era":"Περίοδος","months-standAlone-wide":["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],"timeFormat-short":"h:mm a","quarters-format-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"timeFormat-long":"h:mm:ss a z","field-year":"Έτος","field-hour":"Ώρα","months-format-abbr":["Ιαν","Φεβ","Μαρ","Απρ","Μαΐ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],"field-sat-relative+0":"αυτό το Σάββατο","field-sat-relative+1":"επόμενο Σάββατο","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"σήμερα","field-thu-relative+0":"αυτήν την Πέμπτη","field-day-relative+1":"αύριο","field-thu-relative+1":"επόμενη Πέμπτη","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"μεθαύριο","months-standAlone-abbr":["Ιαν","Φεβ","Μάρ","Απρ","Μάι","Ιούν","Ιούλ","Αύγ","Σεπ","Οκτ","Νοέ","Δεκ"],"quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"quarters-standAlone-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"eraAbbr":["BE"],"field-minute":"Λεπτό","field-dayperiod":"π.μ./μ.μ.","days-standAlone-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"field-day-relative+-1":"χθες","dateTimeFormat-long":"{1} - {0}","field-day-relative+-2":"προχθές","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} - {0}","field-fri-relative+0":"αυτήν την Παρασκευή","field-fri-relative+1":"επόμενη Παρασκευή","field-day":"Ημέρα","days-format-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-zone":"Ζώνη ώρας","dateFormatItem-y":"y G","months-standAlone-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"field-year-relative+-1":"προηγούμενο έτος","field-month-relative+-1":"προηγούμενος μήνας","days-format-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Μήνας","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"field-tue-relative+0":"αυτήν την Τρίτη","field-tue-relative+1":"επόμενη Τρίτη","dayPeriods-format-wide-am":"π.μ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","dateFormat-short":"d/M/y GGGGG","field-second":"Δευτερόλεπτο","field-sat-relative+-1":"προηγούμενο Σάββατο","field-sun-relative+-1":"προηγούμενη Κυριακή","field-month-relative+0":"τρέχων μήνας","field-month-relative+1":"επόμενος μήνας","dateFormatItem-Ed":"E d","field-week":"Εβδομάδα","dateFormat-medium":"d MMM y G","field-year-relative+0":"φέτος","field-week-relative+-1":"προηγούμενη εβδομάδα","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"επόμενο έτος","dateTimeFormat-short":"{1} - {0}","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"προηγούμενη Δευτέρα","dateFormatItem-yyyy":"y G","field-week-relative+0":"αυτήν την εβδομάδα","field-week-relative+1":"επόμενη εβδομάδα"}); \ No newline at end of file
+define("dojo/cldr/nls/el/buddhist",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","timeFormat-short":"h:mm a","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-thu-short-relative+0":"αυτήν την Πέμ.","field-day-short-relative+-1":"χθες","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","field-wed-narrow-relative+-1":"προηγ. Τε","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","dayPeriods-format-narrow-am":"πμ","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"καθημερ. μήνα","dayPeriods-format-abbr-am":"π.μ.","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"eraNames":["Β.Ε."],"field-weekOfMonth":"εβδομάδα μήνα","dayPeriods-standAlone-abbr-pm":"μ.μ.","field-month-short":"μήν.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"ημέρα","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","dayPeriods-format-wide-am":"π.μ.","field-sat-short-relative+-1":"προηγ. Σάβ.","field-hour-relative+0":"τρέχουσα ώρα","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-wed-relative+-1":"προηγούμενη Τετάρτη","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dayPeriods-standAlone-wide-pm":"μ.μ.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","field-day-narrow-relative+1":"αύριο","quarters-standAlone-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","dateFormatItem-GyMMM":"MMM y G","field-month":"μήνας","field-day-narrow":"ημ.","dateFormatItem-MMM":"LLL","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","dayPeriods-format-narrow-pm":"μμ","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["BE"],"quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"dayPeriods-format-abbr-pm":"μ.μ.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","months-format-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"field-quarter-relative+-1":"προηγούμενο τρίμηνο","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"πμ/μμ","dayPeriods-standAlone-narrow-am":"πμ","field-week-narrow-relative+-1":"προηγ. εβδ.","days-format-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"dayPeriods-format-wide-pm":"μ.μ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","dateTimeFormat-long":"{1} - {0}","dateFormatItem-Md":"d/M","field-hour":"ώρα","months-format-wide":["Ιανουαρίου","Φεβρουαρίου","Μαρτίου","Απριλίου","Μαΐου","Ιουνίου","Ιουλίου","Αυγούστου","Σεπτεμβρίου","Οκτωβρίου","Νοεμβρίου","Δεκεμβρίου"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"προηγούμενος μήνας","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","months-format-abbr":["Ιαν","Φεβ","Μαρ","Απρ","Μαΐ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],"field-quarter-relative+0":"τρέχον τρίμηνο","field-minute-relative+0":"τρέχον λεπτό","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"προηγ. Πέμ.","field-year-narrow-relative+-1":"πέρσι","days-standAlone-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"προηγ. Δε","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"προηγ. Πέ","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"προηγ. Τρ","field-weekOfMonth-short":"εβδ. μήνα","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"μμ","field-wed-short-relative+0":"αυτήν την Τετ.","dateFormatItem-M":"L","months-standAlone-wide":["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],"field-wed-short-relative+1":"επόμ. Τετ.","field-sun-relative+-1":"προηγούμενη Κυριακή","dateFormatItem-MMMMEd":"E, d MMMM","days-standAlone-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"dateTimeFormat-full":"{1} - {0}","dateFormatItem-d":"d","field-weekday":"καθημερινή","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-day-short-relative+1":"αύριο","field-sat-relative+0":"αυτό το Σάββατο","field-quarter-narrow-relative+1":"επόμ. τρίμ.","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","field-week-short-relative+1":"επόμ. εβδομάδα","months-standAlone-abbr":["Ιαν","Φεβ","Μάρ","Απρ","Μάι","Ιούν","Ιούλ","Αύγ","Σεπ","Οκτ","Νοέ","Δεκ"],"field-dayOfYear-narrow":"ημ. έτους","field-weekdayOfMonth-short":"καθημερ. μήνα","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"ζώνη","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"αυτήν την Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-narrow-relative+1":"επόμ. Πέ","field-thu-relative+0":"αυτήν την Πέμπτη","field-thu-relative+1":"επόμενη Πέμπτη","field-fri-short-relative+-1":"προηγ. Παρ.","field-thu-relative+-1":"προηγούμενη Πέμπτη","field-week":"εβδομάδα","quarters-format-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"πμ/μμ","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","days-standAlone-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"field-week-short-relative+-1":"προηγ. εβδομάδα","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-hour-short":"ώ.","field-zone-short":"ζώνη","quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","eraNarrow":"BE","field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","days-format-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-mon-narrow-relative+0":"αυτήν τη Δε","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","field-zone":"ζώνη ώρας","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"εβδ. μήνα","field-weekday-narrow":"καθημερ.","field-quarter-narrow":"τρίμ.","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-1":"χθες","dayPeriods-standAlone-abbr-am":"π.μ.","field-day-relative+-2":"προχθές","field-weekday-short":"καθημερ.","days-format-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","dateFormatItem-Gy":"y G","field-day-short":"ημ.","field-week-narrow":"εβδ.","field-era":"περίοδος","field-fri-narrow-relative+0":"αυτήν την Πα","field-fri-narrow-relative+1":"επόμ. Πα","dayPeriods-standAlone-wide-am":"π.μ."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/coptic.js b/lib/dojo/cldr/nls/el/coptic.js
new file mode 100644
index 000000000..e1d8fc2f9
--- /dev/null
+++ b/lib/dojo/cldr/nls/el/coptic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/el/coptic",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-thu-short-relative+0":"αυτήν την Πέμ.","field-day-short-relative+-1":"χθες","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","field-wed-narrow-relative+-1":"προηγ. Τε","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","field-weekdayOfMonth-narrow":"καθημερ. μήνα","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","eraNames":["ERA0","ERA1"],"field-weekOfMonth":"εβδομάδα μήνα","field-month-short":"μήν.","field-day":"ημέρα","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","field-sat-short-relative+-1":"προηγ. Σάβ.","field-hour-relative+0":"τρέχουσα ώρα","field-wed-relative+-1":"προηγούμενη Τετάρτη","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","field-day-narrow-relative+1":"αύριο","field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","field-month":"μήνας","field-day-narrow":"ημ.","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","field-quarter-relative+-1":"προηγούμενο τρίμηνο","field-dayperiod-narrow":"πμ/μμ","field-week-narrow-relative+-1":"προηγ. εβδ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","field-hour":"ώρα","months-format-wide":["Τουτ","Μπάπα","Χατούρ","Κεγιάχκ","Τούμπα","Αμσίρ","Μπαραμχάτ","Μπαρμούντα","Μπασάνς","Μπαούνα","Αμπίπ","Μέσρα","Νεσγ"],"field-month-relative+-1":"προηγούμενος μήνας","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","months-format-abbr":["Τουτ","Μπάπα","Χατούρ","Κεγιάχκ","Τούμπα","Αμσίρ","Μπαραμχάτ","Μπαρμούντα","Μπασάνς","Μπαούνα","Αμπίπ","Μέσρα","Νεσγ"],"field-quarter-relative+0":"τρέχον τρίμηνο","field-minute-relative+0":"τρέχον λεπτό","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","field-thu-short-relative+-1":"προηγ. Πέμ.","field-year-narrow-relative+-1":"πέρσι","field-mon-narrow-relative+-1":"προηγ. Δε","field-thu-narrow-relative+-1":"προηγ. Πέ","field-tue-narrow-relative+-1":"προηγ. Τρ","field-weekOfMonth-short":"εβδ. μήνα","field-wed-short-relative+0":"αυτήν την Τετ.","months-standAlone-wide":["Τουτ","Μπάπα","Χατούρ","Κεγιάχκ","Τούμπα","Αμσίρ","Μπαραμχάτ","Μπαρμούντα","Μπασάνς","Μπαούνα","Αμπίπ","Μέσρα","Νεσγ"],"field-wed-short-relative+1":"επόμ. Τετ.","field-sun-relative+-1":"προηγούμενη Κυριακή","field-weekday":"καθημερινή","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-sat-relative+0":"αυτό το Σάββατο","field-day-short-relative+1":"αύριο","field-quarter-narrow-relative+1":"επόμ. τρίμ.","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","field-week-short-relative+1":"επόμ. εβδομάδα","months-standAlone-abbr":["Τουτ","Μπάπα","Χατούρ","Κεγιάχκ","Τούμπα","Αμσίρ","Μπαραμχάτ","Μπαρμούντα","Μπασάνς","Μπαούνα","Αμπίπ","Μέσρα","Νεσγ"],"field-dayOfYear-narrow":"ημ. έτους","field-weekdayOfMonth-short":"καθημερ. μήνα","field-zone-narrow":"ζώνη","field-thu-narrow-relative+0":"αυτήν την Πέ","field-thu-narrow-relative+1":"επόμ. Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-relative+0":"αυτήν την Πέμπτη","field-thu-relative+1":"επόμενη Πέμπτη","field-fri-short-relative+-1":"προηγ. Παρ.","field-thu-relative+-1":"προηγούμενη Πέμπτη","field-week":"εβδομάδα","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","field-dayperiod-short":"πμ/μμ","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","field-week-short-relative+-1":"προηγ. εβδομάδα","field-hour-short":"ώ.","field-zone-short":"ζώνη","field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","field-mon-narrow-relative+0":"αυτήν τη Δε","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","field-zone":"ζώνη ώρας","field-weekOfMonth-narrow":"εβδ. μήνα","field-weekday-narrow":"καθημερ.","field-quarter-narrow":"τρίμ.","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-1":"χθες","field-day-relative+-2":"προχθές","field-weekday-short":"καθημερ.","field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","field-day-short":"ημ.","field-week-narrow":"εβδ.","field-era":"περίοδος","field-fri-narrow-relative+0":"αυτήν την Πα","field-fri-narrow-relative+1":"επόμ. Πα"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/currency.js b/lib/dojo/cldr/nls/el/currency.js
index b552da133..8aa4add45 100644
--- a/lib/dojo/cldr/nls/el/currency.js
+++ b/lib/dojo/cldr/nls/el/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/el/currency",{"HKD_displayName":"Δολάριο Χονγκ Κονγκ","CHF_displayName":"Φράγκο Ελβετίας","JPY_symbol":"JP¥","CAD_displayName":"Δολάριο Καναδά","HKD_symbol":"HK$","CNY_displayName":"Γουάν Κίνας","USD_symbol":"$","AUD_displayName":"Δολάριο Αυστραλίας","JPY_displayName":"Γιεν Ιαπωνίας","CAD_symbol":"CA$","USD_displayName":"Δολάριο ΗΠΑ","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"Λίρα Βρετανίας","GBP_symbol":"£","AUD_symbol":"A$","EUR_displayName":"Ευρώ"}); \ No newline at end of file
+define("dojo/cldr/nls/el/currency",{"HKD_displayName":"Δολάριο Χονγκ Κονγκ","CNY_displayName":"Γουάν Κίνας","JPY_displayName":"Γιεν Ιαπωνίας","JPY_symbol":"JP¥","USD_displayName":"Δολάριο ΗΠΑ","CAD_symbol":"CA$","GBP_displayName":"Λίρα Στερλίνα Βρετανίας","CHF_displayName":"Φράγκο Ελβετίας","CNY_symbol":"CN¥","EUR_displayName":"Ευρώ","GBP_symbol":"£","CAD_displayName":"Δολάριο Καναδά","USD_symbol":"$","EUR_symbol":"€","AUD_displayName":"Δολάριο Αυστραλίας","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"A$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/ethiopic.js b/lib/dojo/cldr/nls/el/ethiopic.js
new file mode 100644
index 000000000..12678b19f
--- /dev/null
+++ b/lib/dojo/cldr/nls/el/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/el/ethiopic",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-thu-short-relative+0":"αυτήν την Πέμ.","field-day-short-relative+-1":"χθες","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","field-wed-narrow-relative+-1":"προηγ. Τε","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","field-weekdayOfMonth-narrow":"καθημερ. μήνα","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","eraNames":["ERA0","ERA1"],"field-weekOfMonth":"εβδομάδα μήνα","field-month-short":"μήν.","field-day":"ημέρα","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","field-sat-short-relative+-1":"προηγ. Σάβ.","field-hour-relative+0":"τρέχουσα ώρα","field-wed-relative+-1":"προηγούμενη Τετάρτη","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","field-day-narrow-relative+1":"αύριο","field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","field-month":"μήνας","field-day-narrow":"ημ.","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","field-quarter-relative+-1":"προηγούμενο τρίμηνο","field-dayperiod-narrow":"πμ/μμ","field-week-narrow-relative+-1":"προηγ. εβδ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","field-hour":"ώρα","months-format-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-month-relative+-1":"προηγούμενος μήνας","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-quarter-relative+0":"τρέχον τρίμηνο","field-minute-relative+0":"τρέχον λεπτό","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","field-thu-short-relative+-1":"προηγ. Πέμ.","field-year-narrow-relative+-1":"πέρσι","field-mon-narrow-relative+-1":"προηγ. Δε","field-thu-narrow-relative+-1":"προηγ. Πέ","field-tue-narrow-relative+-1":"προηγ. Τρ","field-weekOfMonth-short":"εβδ. μήνα","field-wed-short-relative+0":"αυτήν την Τετ.","months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-wed-short-relative+1":"επόμ. Τετ.","field-sun-relative+-1":"προηγούμενη Κυριακή","field-weekday":"καθημερινή","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-sat-relative+0":"αυτό το Σάββατο","field-day-short-relative+1":"αύριο","field-quarter-narrow-relative+1":"επόμ. τρίμ.","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","field-week-short-relative+1":"επόμ. εβδομάδα","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-dayOfYear-narrow":"ημ. έτους","field-weekdayOfMonth-short":"καθημερ. μήνα","field-zone-narrow":"ζώνη","field-thu-narrow-relative+0":"αυτήν την Πέ","field-thu-narrow-relative+1":"επόμ. Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-relative+0":"αυτήν την Πέμπτη","field-thu-relative+1":"επόμενη Πέμπτη","field-fri-short-relative+-1":"προηγ. Παρ.","field-thu-relative+-1":"προηγούμενη Πέμπτη","field-week":"εβδομάδα","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","field-dayperiod-short":"πμ/μμ","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","field-week-short-relative+-1":"προηγ. εβδομάδα","field-hour-short":"ώ.","field-zone-short":"ζώνη","field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","field-mon-narrow-relative+0":"αυτήν τη Δε","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","field-zone":"ζώνη ώρας","field-weekOfMonth-narrow":"εβδ. μήνα","field-weekday-narrow":"καθημερ.","field-quarter-narrow":"τρίμ.","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-1":"χθες","field-day-relative+-2":"προχθές","field-weekday-short":"καθημερ.","field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","field-day-short":"ημ.","field-week-narrow":"εβδ.","field-era":"περίοδος","field-fri-narrow-relative+0":"αυτήν την Πα","field-fri-narrow-relative+1":"επόμ. Πα"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/generic.js b/lib/dojo/cldr/nls/el/generic.js
index 985d2f79a..0e01d55bc 100644
--- a/lib/dojo/cldr/nls/el/generic.js
+++ b/lib/dojo/cldr/nls/el/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/el/generic",{"field-second-relative+0":"τώρα","field-weekday":"Ημέρα εβδομάδας","field-wed-relative+0":"αυτήν την Τετάρτη","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-wed-relative+1":"επόμενη Τετάρτη","field-tue-relative+-1":"προηγούμενη Τρίτη","dateFormat-long":"d MMMM y G","field-fri-relative+-1":"προηγούμενη Παρασκευή","field-wed-relative+-1":"προηγούμενη Τετάρτη","dateFormatItem-yyyyQQQ":"G y QQQ","dateTimeFormat-medium":"{1} - {0}","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-thu-relative+-1":"επόμενη Πέμπτη","dateFormatItem-Md":"d/M","field-era":"Περίοδος","field-year":"Έτος","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"Ώρα","field-sat-relative+0":"αυτό το Σάββατο","field-sat-relative+1":"επόμενο Σάββατο","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-thu-relative+0":"αυτήν την Πέμπτη","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"μεθαύριο","field-thu-relative+1":"επόμενη Πέμπτη","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"αυτήν την Κυριακή","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"επόμενη Κυριακή","field-minute":"Λεπτό","field-dayperiod":"π.μ./μ.μ.","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"χθες","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} - {0}","field-day-relative+-2":"προχθές","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} - {0}","field-fri-relative+0":"αυτήν την Παρασκευή","field-fri-relative+1":"επόμενη Παρασκευή","field-day":"Ημέρα","field-zone":"Ζώνη ώρας","dateFormatItem-y":"y G","field-year-relative+-1":"προηγούμενο έτος","field-month-relative+-1":"προηγούμενος μήνας","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Μήνας","dateFormatItem-MMM":"LLL","dateFormatItem-HHmm":"HH:mm","field-tue-relative+0":"αυτήν την Τρίτη","field-tue-relative+1":"επόμενη Τρίτη","dateFormatItem-MMMMEd":"E, d MMMM","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","dateFormat-short":"d/M/y GGGGG","field-second":"Δευτερόλεπτο","field-sat-relative+-1":"προηγούμενο Σάββατο","field-sun-relative+-1":"προηγούμενη Κυριακή","field-month-relative+0":"τρέχων μήνας","field-month-relative+1":"επόμενος μήνας","dateFormatItem-Ed":"E d","field-week":"Εβδομάδα","dateFormat-medium":"d MMM y G","field-year-relative+0":"φέτος","field-week-relative+-1":"προηγούμενη εβδομάδα","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"επόμενο έτος","dateFormatItem-yyyyQQQQ":"G y QQQQ","dateTimeFormat-short":"{1} - {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"προηγούμενη Δευτέρα","dateFormatItem-yyyy":"y G","field-week-relative+0":"αυτήν την εβδομάδα","field-week-relative+1":"επόμενη εβδομάδα"}); \ No newline at end of file
+define("dojo/cldr/nls/el/generic",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","dateFormatItem-ms":"mm:ss","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-day-short-relative+-1":"χθες","field-thu-short-relative+0":"αυτήν την Πέμ.","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"σήμερα","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"προηγ. Τε","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"καθημερ. μήνα","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","dateFormatItem-yyyyQQQ":"G y QQQ","field-weekOfMonth":"εβδομάδα μήνα","field-month-short":"μήν.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"ημέρα","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","field-sat-short-relative+-1":"προηγ. Σάβ.","field-hour-relative+0":"τρέχουσα ώρα","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-wed-relative+-1":"προηγούμενη Τετάρτη","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","field-day-narrow-relative+1":"αύριο","field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","dateFormatItem-GyMMM":"MMM y G","field-month":"μήνας","field-day-narrow":"ημ.","dateFormatItem-MMM":"LLL","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","field-quarter-relative+-1":"προηγούμενο τρίμηνο","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"πμ/μμ","field-week-narrow-relative+-1":"προηγ. εβδ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","dateTimeFormat-long":"{1} - {0}","dateFormatItem-Md":"d/M","field-hour":"ώρα","dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"προηγούμενος μήνας","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"τρέχον τρίμηνο","field-minute-relative+0":"τρέχον λεπτό","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","dateFormat-short":"d/M/y GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"πέρσι","field-thu-short-relative+-1":"προηγ. Πέμ.","dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"προηγ. Δε","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"προηγ. Πέ","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"εβδ. μήνα","field-tue-narrow-relative+-1":"προηγ. Τρ","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"αυτήν την Τετ.","field-wed-short-relative+1":"επόμ. Τετ.","field-sun-relative+-1":"προηγούμενη Κυριακή","dateFormatItem-MMMMEd":"E, d MMMM","dateTimeFormat-full":"{1} - {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"καθημερινή","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-day-short-relative+1":"αύριο","field-sat-relative+0":"αυτό το Σάββατο","field-quarter-narrow-relative+1":"επόμ. τρίμ.","dateFormatItem-h":"h a","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","field-week-short-relative+1":"επόμ. εβδομάδα","field-dayOfYear-narrow":"ημ. έτους","field-weekdayOfMonth-short":"καθημερ. μήνα","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"ζώνη","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"αυτήν την Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-narrow-relative+1":"επόμ. Πέ","field-thu-relative+0":"αυτήν την Πέμπτη","field-thu-relative+1":"επόμενη Πέμπτη","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"προηγ. Παρ.","field-thu-relative+-1":"προηγούμενη Πέμπτη","field-week":"εβδομάδα","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"πμ/μμ","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","field-week-short-relative+-1":"προηγ. εβδομάδα","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-hour-short":"ώ.","field-zone-short":"ζώνη","field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","field-mon-narrow-relative+0":"αυτήν τη Δε","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","field-zone":"ζώνη ώρας","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"εβδ. μήνα","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"καθημερ.","field-quarter-narrow":"τρίμ.","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-1":"χθες","field-day-relative+-2":"προχθές","field-weekday-short":"καθημερ.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","dateFormatItem-Gy":"y G","field-day-short":"ημ.","field-week-narrow":"εβδ.","field-era":"περίοδος","field-fri-narrow-relative+0":"αυτήν την Πα","field-fri-narrow-relative+1":"επόμ. Πα"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/gregorian.js b/lib/dojo/cldr/nls/el/gregorian.js
index e7be14cea..2c4f8e394 100644
--- a/lib/dojo/cldr/nls/el/gregorian.js
+++ b/lib/dojo/cldr/nls/el/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/el/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"months-format-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"field-second-relative+0":"τώρα","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Ημέρα εβδομάδας","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"E, d/M/y","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","eraNarrow":["π.Χ.","μ.Χ."],"field-tue-relative+-1":"προηγούμενη Τρίτη","days-format-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"προηγούμενη Παρασκευή","field-wed-relative+-1":"προηγούμενη Τετάρτη","months-format-wide":["Ιανουαρίου","Φεβρουαρίου","Μαρτίου","Απριλίου","Μαΐου","Ιουνίου","Ιουλίου","Αυγούστου","Σεπτεμβρίου","Οκτωβρίου","Νοεμβρίου","Δεκεμβρίου"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"μ.μ.","dateFormat-full":"EEEE, d MMMM y","field-thu-relative+-1":"επόμενη Πέμπτη","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/y","field-era":"Περίοδος","dateFormatItem-yM":"M/y","months-standAlone-wide":["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],"timeFormat-short":"h:mm a","quarters-format-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-yQQQQ":"y QQQQ","timeFormat-long":"h:mm:ss a z","field-year":"Έτος","dateFormatItem-yMMM":"MMM y","field-hour":"Ώρα","months-format-abbr":["Ιαν","Φεβ","Μαρ","Απρ","Μαΐ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],"field-sat-relative+0":"αυτό το Σάββατο","field-sat-relative+1":"επόμενο Σάββατο","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"σήμερα","field-thu-relative+0":"αυτήν την Πέμπτη","field-day-relative+1":"αύριο","field-thu-relative+1":"επόμενη Πέμπτη","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"μεθαύριο","dateFormatItem-H":"HH","months-standAlone-abbr":["Ιαν","Φεβ","Μάρ","Απρ","Μάι","Ιούν","Ιούλ","Αύγ","Σεπ","Οκτ","Νοέ","Δεκ"],"quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"quarters-standAlone-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-Gy":"y G","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"L","days-standAlone-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"αυτήν την Κυριακή","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"επόμενη Κυριακή","quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"eraAbbr":["π.Χ.","μ.Χ."],"field-minute":"Λεπτό","field-dayperiod":"π.μ./μ.μ.","days-standAlone-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"χθες","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} - {0}","field-day-relative+-2":"προχθές","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} - {0}","field-fri-relative+0":"αυτήν την Παρασκευή","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"επόμενη Παρασκευή","field-day":"Ημέρα","days-format-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-zone":"Ζώνη ώρας","dateFormatItem-y":"y","months-standAlone-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"field-year-relative+-1":"προηγούμενο έτος","field-month-relative+-1":"προηγούμενος μήνας","dateFormatItem-hm":"h:mm a","days-format-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"dateFormatItem-yMMMd":"d MMM y","eraNames":["προ Χριστού","μετά Χριστόν"],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dateFormatItem-MMM":"LLL","field-month":"Μήνας","dateFormatItem-HHmm":"HH:mm","field-tue-relative+0":"αυτήν την Τρίτη","field-tue-relative+1":"επόμενη Τρίτη","dayPeriods-format-wide-am":"π.μ.","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","dateFormat-short":"d/M/yy","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"Δευτερόλεπτο","field-sat-relative+-1":"προηγούμενο Σάββατο","dateFormatItem-yMMMEd":"E, d MMM y","field-sun-relative+-1":"προηγούμενη Κυριακή","field-month-relative+0":"τρέχων μήνας","field-month-relative+1":"επόμενος μήνας","dateFormatItem-Ed":"E d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Εβδομάδα","dateFormat-medium":"d MMM y","field-year-relative+0":"φέτος","field-week-relative+-1":"προηγούμενη εβδομάδα","field-year-relative+1":"επόμενο έτος","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"προηγούμενη Δευτέρα","field-week-relative+0":"αυτήν την εβδομάδα","field-week-relative+1":"επόμενη εβδομάδα"}); \ No newline at end of file
+define("dojo/cldr/nls/el/gregorian",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","dateFormatItem-yw":"εβδομάδα w του Y","dayPeriods-format-abbr-afternoon1":"μεσημ.","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","dateFormatItem-ms":"mm:ss","timeFormat-short":"h:mm a","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-thu-short-relative+0":"αυτήν την Πέμ.","field-day-short-relative+-1":"χθες","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","field-wed-narrow-relative+-1":"προηγ. Τε","dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","dayPeriods-format-narrow-am":"πμ","dayPeriods-standAlone-abbr-morning1":"πρωί","dateFormatItem-MMMd":"d MMM","dayPeriods-format-narrow-morning1":"πρωί","field-weekdayOfMonth-narrow":"καθημερ. μήνα","dayPeriods-format-abbr-am":"π.μ.","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","months-standAlone-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"eraNames":["προ Χριστού","μετά Χριστόν"],"field-weekOfMonth":"εβδομάδα μήνα","dayPeriods-standAlone-abbr-pm":"μ.μ.","field-month-short":"μήν.","dateFormatItem-GyMMMEd":"E, d MMM y G","field-day":"ημέρα","dayPeriods-standAlone-wide-night1":"βράδυ","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","dayPeriods-format-wide-am":"π.μ.","field-sat-short-relative+-1":"προηγ. Σάβ.","dayPeriods-format-narrow-afternoon1":"μεσημ.","dayPeriods-format-wide-afternoon1":"το μεσημέρι","field-hour-relative+0":"τρέχουσα ώρα","field-wed-relative+-1":"προηγούμενη Τετάρτη","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dayPeriods-standAlone-wide-pm":"μ.μ.","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM y","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","dateFormatItem-yMMMEd":"E, d MMM y","field-day-narrow-relative+1":"αύριο","quarters-standAlone-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dayPeriods-format-wide-evening1":"το απόγευμα","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","dateFormatItem-GyMMM":"LLL y G","field-month":"μήνας","field-day-narrow":"ημ.","dayPeriods-standAlone-abbr-night1":"βράδυ","dayPeriods-standAlone-narrow-afternoon1":"μεσημ.","dateFormatItem-MMM":"MMM","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","dayPeriods-format-narrow-pm":"μμ","dateFormat-medium":"d MMM y","eraAbbr":["π.Χ.","μ.Χ."],"quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"dayPeriods-format-abbr-pm":"μ.μ.","field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","dayPeriods-standAlone-narrow-night1":"βράδυ","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","months-format-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"dayPeriods-format-wide-morning1":"το πρωί","field-quarter-relative+-1":"προηγούμενο τρίμηνο","field-dayperiod-narrow":"πμ/μμ","dayPeriods-standAlone-narrow-am":"πμ","field-week-narrow-relative+-1":"προηγ. εβδ.","days-format-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"μ.μ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","dateTimeFormat-long":"{1} - {0}","dateFormatItem-Md":"d/M","field-hour":"ώρα","dateFormatItem-yQQQQ":"y QQQQ","months-format-wide":["Ιανουαρίου","Φεβρουαρίου","Μαρτίου","Απριλίου","Μαΐου","Ιουνίου","Ιουλίου","Αυγούστου","Σεπτεμβρίου","Οκτωβρίου","Νοεμβρίου","Δεκεμβρίου"],"dayPeriods-format-wide-night1":"το βράδυ","dateFormat-full":"EEEE, d MMMM y","field-month-relative+-1":"προηγούμενος μήνας","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","dateFormatItem-Hmv":"HH:mm v","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Ιαν","Φεβ","Μαρ","Απρ","Μαΐ","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],"field-quarter-relative+0":"τρέχον τρίμηνο","timeFormat-long":"h:mm:ss a z","field-minute-relative+0":"τρέχον λεπτό","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","dateFormatItem-yMMM":"MMM y","dateFormat-short":"d/M/yy","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"πέρσι","dayPeriods-format-abbr-night1":"βράδυ","dateFormatItem-MMMMW":"εβδομάδα W του MMMM","field-thu-short-relative+-1":"προηγ. Πέμ.","days-standAlone-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-mon-narrow-relative+-1":"προηγ. Δε","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"προηγ. Πέ","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"εβδ. μήνα","field-tue-narrow-relative+-1":"προηγ. Τρ","dayPeriods-format-abbr-evening1":"απόγ.","dayPeriods-standAlone-narrow-pm":"μμ","dateFormatItem-M":"L","months-standAlone-wide":["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],"field-wed-short-relative+0":"αυτήν την Τετ.","field-wed-short-relative+1":"επόμ. Τετ.","dateFormatItem-Hmsv":"HH:mm:ss v","field-sun-relative+-1":"προηγούμενη Κυριακή","dateFormatItem-MMMMEd":"E, d MMMM","days-standAlone-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"dateTimeFormat-full":"{1} - {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"καθημερινή","dayPeriods-standAlone-wide-evening1":"απόγευμα","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-day-short-relative+1":"αύριο","field-sat-relative+0":"αυτό το Σάββατο","dateFormatItem-h":"h a","field-quarter-narrow-relative+1":"επόμ. τρίμ.","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","months-standAlone-abbr":["Ιαν","Φεβ","Μάρ","Απρ","Μάι","Ιούν","Ιούλ","Αύγ","Σεπ","Οκτ","Νοέ","Δεκ"],"dateFormatItem-hmsv":"h:mm:ss a v","field-week-short-relative+1":"επόμ. εβδομάδα","dayPeriods-format-abbr-morning1":"πρωί","dayPeriods-standAlone-narrow-evening1":"απόγ.","field-dayOfYear-narrow":"ημ. έτους","timeFormat-full":"h:mm:ss a zzzz","field-weekdayOfMonth-short":"καθημερ. μήνα","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"ζώνη","dateFormatItem-y":"y","field-thu-narrow-relative+0":"αυτήν την Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-narrow-relative+1":"επόμ. Πέ","field-thu-relative+0":"αυτήν την Πέμπτη","dayPeriods-standAlone-abbr-afternoon1":"μεσημ.","field-thu-relative+1":"επόμενη Πέμπτη","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"προηγ. Παρ.","dateFormatItem-hmv":"h:mm a v","field-thu-relative+-1":"προηγούμενη Πέμπτη","dateFormatItem-yMd":"d/M/y","quarters-standAlone-narrow":["1","2","3","4"],"field-week":"εβδομάδα","quarters-format-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","dayPeriods-standAlone-wide-morning1":"πρωί","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","field-dayperiod-short":"πμ/μμ","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","days-standAlone-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"field-week-short-relative+-1":"προηγ. εβδομάδα","dayPeriods-standAlone-narrow-morning1":"πρωί","field-hour-short":"ώ.","field-zone-short":"ζώνη","quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","eraNarrow":["π.Χ.","μ.Χ."],"dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","dayPeriods-standAlone-wide-afternoon1":"μεσημέρι","dateFormatItem-yQQQ":"y QQQ","days-format-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-mon-narrow-relative+0":"αυτήν τη Δε","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","dateFormatItem-yM":"M/y","field-zone":"ζώνη ώρας","dateFormatItem-yMMMM":"LLLL y","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"εβδ. μήνα","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-yMEd":"E, d/M/y","field-weekday-narrow":"καθημερ.","field-quarter-narrow":"τρίμ.","dayPeriods-standAlone-abbr-am":"π.μ.","field-day-relative+-1":"χθες","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-2":"προχθές","dayPeriods-format-narrow-night1":"βράδυ","field-weekday-short":"καθημερ.","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-Gy":"y G","field-era":"περίοδος","field-week-narrow":"εβδ.","field-day-short":"ημ.","dayPeriods-standAlone-abbr-evening1":"απόγ.","field-fri-narrow-relative+0":"αυτήν την Πα","dayPeriods-format-narrow-evening1":"απόγ.","field-fri-narrow-relative+1":"επόμ. Πα","dayPeriods-standAlone-wide-am":"π.μ."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/hebrew.js b/lib/dojo/cldr/nls/el/hebrew.js
index 3163c091f..a4ab67e6b 100644
--- a/lib/dojo/cldr/nls/el/hebrew.js
+++ b/lib/dojo/cldr/nls/el/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/el/hebrew",{"days-standAlone-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"field-second-relative+0":"τώρα","field-weekday":"Ημέρα εβδομάδας","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","eraNarrow":["π.μ."],"field-tue-relative+-1":"προηγούμενη Τρίτη","days-format-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"προηγούμενη Παρασκευή","field-wed-relative+-1":"προηγούμενη Τετάρτη","dateTimeFormat-medium":"{1} - {0}","dayPeriods-format-wide-pm":"μ.μ.","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-thu-relative+-1":"επόμενη Πέμπτη","dateFormatItem-Md":"d/M","field-era":"Περίοδος","timeFormat-short":"h:mm a","quarters-format-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"timeFormat-long":"h:mm:ss a z","field-year":"Έτος","field-hour":"Ώρα","field-sat-relative+0":"αυτό το Σάββατο","field-sat-relative+1":"επόμενο Σάββατο","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"σήμερα","field-thu-relative+0":"αυτήν την Πέμπτη","field-day-relative+1":"αύριο","field-thu-relative+1":"επόμενη Πέμπτη","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"μεθαύριο","quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"quarters-standAlone-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"eraAbbr":["AM"],"field-minute":"Λεπτό","field-dayperiod":"π.μ./μ.μ.","days-standAlone-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"field-day-relative+-1":"χθες","dateTimeFormat-long":"{1} - {0}","field-day-relative+-2":"προχθές","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} - {0}","field-fri-relative+0":"αυτήν την Παρασκευή","field-fri-relative+1":"επόμενη Παρασκευή","field-day":"Ημέρα","days-format-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-zone":"Ζώνη ώρας","dateFormatItem-y":"y G","field-year-relative+-1":"προηγούμενο έτος","field-month-relative+-1":"προηγούμενος μήνας","days-format-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"eraNames":["AM"],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Μήνας","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"field-tue-relative+0":"αυτήν την Τρίτη","field-tue-relative+1":"επόμενη Τρίτη","dayPeriods-format-wide-am":"π.μ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","dateFormat-short":"d/M/y GGGGG","field-second":"Δευτερόλεπτο","field-sat-relative+-1":"προηγούμενο Σάββατο","field-sun-relative+-1":"προηγούμενη Κυριακή","field-month-relative+0":"τρέχων μήνας","field-month-relative+1":"επόμενος μήνας","dateFormatItem-Ed":"E d","field-week":"Εβδομάδα","dateFormat-medium":"d MMM y G","field-year-relative+0":"φέτος","field-week-relative+-1":"προηγούμενη εβδομάδα","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"επόμενο έτος","dateTimeFormat-short":"{1} - {0}","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"προηγούμενη Δευτέρα","dateFormatItem-yyyy":"y G","field-week-relative+0":"αυτήν την εβδομάδα","field-week-relative+1":"επόμενη εβδομάδα"}); \ No newline at end of file
+define("dojo/cldr/nls/el/hebrew",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","timeFormat-short":"h:mm a","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-thu-short-relative+0":"αυτήν την Πέμ.","field-day-short-relative+-1":"χθες","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","field-wed-narrow-relative+-1":"προηγ. Τε","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","dayPeriods-format-narrow-am":"πμ","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"καθημερ. μήνα","dayPeriods-format-abbr-am":"π.μ.","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","eraNames":["AM"],"field-weekOfMonth":"εβδομάδα μήνα","dayPeriods-standAlone-abbr-pm":"μ.μ.","field-month-short":"μήν.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"ημέρα","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","dayPeriods-format-wide-am":"π.μ.","field-sat-short-relative+-1":"προηγ. Σάβ.","field-hour-relative+0":"τρέχουσα ώρα","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-wed-relative+-1":"προηγούμενη Τετάρτη","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dayPeriods-standAlone-wide-pm":"μ.μ.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","field-day-narrow-relative+1":"αύριο","quarters-standAlone-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","dateFormatItem-GyMMM":"MMM y G","field-month":"μήνας","field-day-narrow":"ημ.","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","dayPeriods-format-narrow-pm":"μμ","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AM"],"quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"dayPeriods-format-abbr-pm":"μ.μ.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","field-quarter-relative+-1":"προηγούμενο τρίμηνο","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"πμ/μμ","dayPeriods-standAlone-narrow-am":"πμ","field-week-narrow-relative+-1":"προηγ. εβδ.","days-format-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"dayPeriods-format-wide-pm":"μ.μ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","dateTimeFormat-long":"{1} - {0}","dateFormatItem-Md":"d/M","field-hour":"ώρα","months-format-wide":["Τισρί","Χεσβάν","Κισλέφ","Τέβετ","Σεβάτ","Αντάρ I","Αντάρ","Νισάν","Ιγιάρ","Σιβάν","Ταμούζ","Αβ","Έλουλ"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"προηγούμενος μήνας","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","months-format-abbr":["Τισρί","Χεσβάν","Κισλέφ","Τέβετ","Σεβάτ","Αντάρ I","Αντάρ","Νισάν","Ιγιάρ","Σιβάν","Ταμούζ","Αβ","Έλουλ"],"field-quarter-relative+0":"τρέχον τρίμηνο","field-minute-relative+0":"τρέχον λεπτό","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"προηγ. Πέμ.","field-year-narrow-relative+-1":"πέρσι","days-standAlone-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"προηγ. Δε","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"προηγ. Πέ","field-tue-narrow-relative+-1":"προηγ. Τρ","field-weekOfMonth-short":"εβδ. μήνα","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"μμ","field-wed-short-relative+0":"αυτήν την Τετ.","months-standAlone-wide":["Τισρί","Χεσβάν","Κισλέφ","Τέβετ","Σεβάτ","Αντάρ I","Αντάρ","Νισάν","Ιγιάρ","Σιβάν","Ταμούζ","Αβ","Έλουλ"],"field-wed-short-relative+1":"επόμ. Τετ.","field-sun-relative+-1":"προηγούμενη Κυριακή","days-standAlone-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"dateTimeFormat-full":"{1} - {0}","months-format-abbr-leap":"Αντάρ II","field-weekday":"καθημερινή","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-sat-relative+0":"αυτό το Σάββατο","field-day-short-relative+1":"αύριο","field-quarter-narrow-relative+1":"επόμ. τρίμ.","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","field-week-short-relative+1":"επόμ. εβδομάδα","months-standAlone-abbr":["Τισρί","Χεσβάν","Κισλέφ","Τέβετ","Σεβάτ","Αντάρ I","Αντάρ","Νισάν","Ιγιάρ","Σιβάν","Ταμούζ","Αβ","Έλουλ"],"months-format-wide-leap":"Αντάρ II","field-dayOfYear-narrow":"ημ. έτους","field-weekdayOfMonth-short":"καθημερ. μήνα","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"ζώνη","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"αυτήν την Πέ","field-thu-narrow-relative+1":"επόμ. Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-relative+0":"αυτήν την Πέμπτη","field-thu-relative+1":"επόμενη Πέμπτη","field-fri-short-relative+-1":"προηγ. Παρ.","field-thu-relative+-1":"προηγούμενη Πέμπτη","field-week":"εβδομάδα","quarters-format-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","field-dayperiod-short":"πμ/μμ","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","days-standAlone-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"field-week-short-relative+-1":"προηγ. εβδομάδα","months-standAlone-abbr-leap":"Αντάρ II","field-hour-short":"ώ.","field-zone-short":"ζώνη","quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","eraNarrow":"AM","field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","days-format-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-mon-narrow-relative+0":"αυτήν τη Δε","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","field-zone":"ζώνη ώρας","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"εβδ. μήνα","field-weekday-narrow":"καθημερ.","months-standAlone-wide-leap":"Αντάρ II","field-quarter-narrow":"τρίμ.","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-1":"χθες","dayPeriods-standAlone-abbr-am":"π.μ.","field-day-relative+-2":"προχθές","field-weekday-short":"καθημερ.","days-format-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","dateFormatItem-Gy":"y G","field-day-short":"ημ.","field-week-narrow":"εβδ.","field-era":"περίοδος","field-fri-narrow-relative+0":"αυτήν την Πα","field-fri-narrow-relative+1":"επόμ. Πα","dayPeriods-standAlone-wide-am":"π.μ."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/indian.js b/lib/dojo/cldr/nls/el/indian.js
new file mode 100644
index 000000000..3ac418d57
--- /dev/null
+++ b/lib/dojo/cldr/nls/el/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/el/indian",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-thu-short-relative+0":"αυτήν την Πέμ.","field-day-short-relative+-1":"χθες","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","field-wed-narrow-relative+-1":"προηγ. Τε","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","field-weekdayOfMonth-narrow":"καθημερ. μήνα","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","eraNames":["Σάκα"],"field-weekOfMonth":"εβδομάδα μήνα","field-month-short":"μήν.","field-day":"ημέρα","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","field-sat-short-relative+-1":"προηγ. Σάβ.","field-hour-relative+0":"τρέχουσα ώρα","field-wed-relative+-1":"προηγούμενη Τετάρτη","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","field-day-narrow-relative+1":"αύριο","field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","field-month":"μήνας","field-day-narrow":"ημ.","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","eraAbbr":["Σάκα"],"field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","field-quarter-relative+-1":"προηγούμενο τρίμηνο","field-dayperiod-narrow":"πμ/μμ","field-week-narrow-relative+-1":"προηγ. εβδ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","field-hour":"ώρα","months-format-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-month-relative+-1":"προηγούμενος μήνας","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-quarter-relative+0":"τρέχον τρίμηνο","field-minute-relative+0":"τρέχον λεπτό","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","field-thu-short-relative+-1":"προηγ. Πέμ.","field-year-narrow-relative+-1":"πέρσι","field-mon-narrow-relative+-1":"προηγ. Δε","field-thu-narrow-relative+-1":"προηγ. Πέ","field-tue-narrow-relative+-1":"προηγ. Τρ","field-weekOfMonth-short":"εβδ. μήνα","field-wed-short-relative+0":"αυτήν την Τετ.","months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-wed-short-relative+1":"επόμ. Τετ.","field-sun-relative+-1":"προηγούμενη Κυριακή","field-weekday":"καθημερινή","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-sat-relative+0":"αυτό το Σάββατο","field-day-short-relative+1":"αύριο","field-quarter-narrow-relative+1":"επόμ. τρίμ.","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","field-week-short-relative+1":"επόμ. εβδομάδα","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-dayOfYear-narrow":"ημ. έτους","field-weekdayOfMonth-short":"καθημερ. μήνα","field-zone-narrow":"ζώνη","field-thu-narrow-relative+0":"αυτήν την Πέ","field-thu-narrow-relative+1":"επόμ. Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-relative+0":"αυτήν την Πέμπτη","field-thu-relative+1":"επόμενη Πέμπτη","field-fri-short-relative+-1":"προηγ. Παρ.","field-thu-relative+-1":"προηγούμενη Πέμπτη","field-week":"εβδομάδα","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","field-dayperiod-short":"πμ/μμ","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","field-week-short-relative+-1":"προηγ. εβδομάδα","field-hour-short":"ώ.","field-zone-short":"ζώνη","field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","eraNarrow":"Σάκα","field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","field-mon-narrow-relative+0":"αυτήν τη Δε","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","field-zone":"ζώνη ώρας","field-weekOfMonth-narrow":"εβδ. μήνα","field-weekday-narrow":"καθημερ.","field-quarter-narrow":"τρίμ.","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-1":"χθες","field-day-relative+-2":"προχθές","field-weekday-short":"καθημερ.","field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","field-day-short":"ημ.","field-week-narrow":"εβδ.","field-era":"περίοδος","field-fri-narrow-relative+0":"αυτήν την Πα","field-fri-narrow-relative+1":"επόμ. Πα"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/islamic.js b/lib/dojo/cldr/nls/el/islamic.js
new file mode 100644
index 000000000..5659abc8f
--- /dev/null
+++ b/lib/dojo/cldr/nls/el/islamic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/el/islamic",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","timeFormat-short":"h:mm a","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-thu-short-relative+0":"αυτήν την Πέμ.","field-day-short-relative+-1":"χθες","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","field-wed-narrow-relative+-1":"προηγ. Τε","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","dayPeriods-format-narrow-am":"πμ","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"καθημερ. μήνα","dayPeriods-format-abbr-am":"π.μ.","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","eraNames":["Ε.Ε."],"field-weekOfMonth":"εβδομάδα μήνα","dayPeriods-standAlone-abbr-pm":"μ.μ.","field-month-short":"μήν.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"ημέρα","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","dayPeriods-format-wide-am":"π.μ.","field-sat-short-relative+-1":"προηγ. Σάβ.","field-hour-relative+0":"τρέχουσα ώρα","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-wed-relative+-1":"προηγούμενη Τετάρτη","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dayPeriods-standAlone-wide-pm":"μ.μ.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","field-day-narrow-relative+1":"αύριο","quarters-standAlone-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","dateFormatItem-GyMMM":"MMM y G","field-month":"μήνας","field-day-narrow":"ημ.","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","dayPeriods-format-narrow-pm":"μμ","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["Ε.Ε."],"quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"dayPeriods-format-abbr-pm":"μ.μ.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","field-quarter-relative+-1":"προηγούμενο τρίμηνο","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"πμ/μμ","dayPeriods-standAlone-narrow-am":"πμ","field-week-narrow-relative+-1":"προηγ. εβδ.","days-format-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"dayPeriods-format-wide-pm":"μ.μ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","dateTimeFormat-long":"{1} - {0}","dateFormatItem-Md":"d/M","field-hour":"ώρα","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"προηγούμενος μήνας","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-quarter-relative+0":"τρέχον τρίμηνο","field-minute-relative+0":"τρέχον λεπτό","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"προηγ. Πέμ.","field-year-narrow-relative+-1":"πέρσι","days-standAlone-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"προηγ. Δε","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"προηγ. Πέ","field-tue-narrow-relative+-1":"προηγ. Τρ","field-weekOfMonth-short":"εβδ. μήνα","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"μμ","field-wed-short-relative+0":"αυτήν την Τετ.","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"field-wed-short-relative+1":"επόμ. Τετ.","field-sun-relative+-1":"προηγούμενη Κυριακή","days-standAlone-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"dateTimeFormat-full":"{1} - {0}","field-weekday":"καθημερινή","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-sat-relative+0":"αυτό το Σάββατο","field-day-short-relative+1":"αύριο","field-quarter-narrow-relative+1":"επόμ. τρίμ.","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","field-week-short-relative+1":"επόμ. εβδομάδα","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-dayOfYear-narrow":"ημ. έτους","field-weekdayOfMonth-short":"καθημερ. μήνα","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"ζώνη","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"αυτήν την Πέ","field-thu-narrow-relative+1":"επόμ. Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-relative+0":"αυτήν την Πέμπτη","field-thu-relative+1":"επόμενη Πέμπτη","field-fri-short-relative+-1":"προηγ. Παρ.","field-thu-relative+-1":"προηγούμενη Πέμπτη","field-week":"εβδομάδα","quarters-format-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","field-dayperiod-short":"πμ/μμ","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","days-standAlone-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"field-week-short-relative+-1":"προηγ. εβδομάδα","field-hour-short":"ώ.","field-zone-short":"ζώνη","quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","eraNarrow":"Ε.Ε.","field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","days-format-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-mon-narrow-relative+0":"αυτήν τη Δε","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","field-zone":"ζώνη ώρας","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"εβδ. μήνα","field-weekday-narrow":"καθημερ.","field-quarter-narrow":"τρίμ.","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-1":"χθες","dayPeriods-standAlone-abbr-am":"π.μ.","field-day-relative+-2":"προχθές","field-weekday-short":"καθημερ.","days-format-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","dateFormatItem-Gy":"y G","field-day-short":"ημ.","field-week-narrow":"εβδ.","field-era":"περίοδος","field-fri-narrow-relative+0":"αυτήν την Πα","field-fri-narrow-relative+1":"επόμ. Πα","dayPeriods-standAlone-wide-am":"π.μ."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/japanese.js b/lib/dojo/cldr/nls/el/japanese.js
index ee8cbd7d3..231da42aa 100644
--- a/lib/dojo/cldr/nls/el/japanese.js
+++ b/lib/dojo/cldr/nls/el/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/el/japanese",{"dateFormatItem-yM":"MM/y GGGGG","field-sat-relative+0":"αυτό το Σάββατο","field-sat-relative+1":"επόμενο Σάββατο","field-dayperiod":"π.μ./μ.μ.","field-sun-relative+-1":"προηγούμενη Κυριακή","field-mon-relative+-1":"προηγούμενη Δευτέρα","field-minute":"Λεπτό","dateFormatItem-MMMEd":"E, d MMM","field-day-relative+-1":"χθες","dateFormatItem-yQQQ":"y GGGGG QQQ","field-day-relative+-2":"προχθές","field-weekday":"Ημέρα εβδομάδας","dateFormatItem-MMM":"LLL","field-era":"Περίοδος","dateFormatItem-Gy":"y G","field-hour":"Ώρα","dateFormatItem-y":"y G","field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","field-wed-relative+-1":"προηγούμενη Τετάρτη","dateFormatItem-Ed":"E d","dateFormatItem-yMMM":"LLL y GGGGG","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-day-relative+2":"μεθαύριο","dateFormat-long":"d MMMM, y G","field-tue-relative+0":"αυτήν την Τρίτη","field-zone":"Ζώνη ώρας","field-tue-relative+1":"επόμενη Τρίτη","field-week-relative+-1":"προηγούμενη εβδομάδα","dateFormat-medium":"d MMM, y G","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-sat-relative+-1":"προηγούμενο Σάββατο","dateFormatItem-yMd":"dd/MM/y GGGGG","field-year-relative+-1":"προηγούμενο έτος","field-year":"Έτος","field-fri-relative+0":"αυτήν την Παρασκευή","field-fri-relative+1":"επόμενη Παρασκευή","field-week":"Εβδομάδα","dateFormatItem-MMMd":"d MMM","field-week-relative+0":"αυτήν την εβδομάδα","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-month":"Μήνας","field-month-relative+1":"επόμενος μήνας","field-fri-relative+-1":"προηγούμενη Παρασκευή","dateFormatItem-yMMMd":"d MMM, y G","field-second":"Δευτερόλεπτο","field-tue-relative+-1":"προηγούμενη Τρίτη","field-day":"Ημέρα","dateFormatItem-MEd":"E, d/M","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-thu-relative+0":"αυτήν την Πέμπτη","field-second-relative+0":"τώρα","dateFormat-short":"d/M/yy","field-thu-relative+1":"επόμενη Πέμπτη","dateFormatItem-yMMMEd":"E, d MMM, y G","dateFormat-full":"EEEE, d MMMM, y G","dateFormatItem-Md":"d/M","dateFormatItem-yMEd":"E, dd/MM/y GGGGG","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","field-month-relative+-1":"προηγούμενος μήνας","field-thu-relative+-1":"επόμενη Πέμπτη"}); \ No newline at end of file
+define("dojo/cldr/nls/el/japanese",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-thu-short-relative+0":"αυτήν την Πέμ.","field-day-short-relative+-1":"χθες","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","field-wed-narrow-relative+-1":"προηγ. Τε","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"καθημερ. μήνα","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","field-weekOfMonth":"εβδομάδα μήνα","field-month-short":"μήν.","field-day":"ημέρα","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","field-sat-short-relative+-1":"προηγ. Σάβ.","field-hour-relative+0":"τρέχουσα ώρα","field-wed-relative+-1":"προηγούμενη Τετάρτη","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","dateFormat-long":"d MMMM, y G","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","dateFormatItem-yMMMEd":"E, d MMM, y G","field-day-narrow-relative+1":"αύριο","field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","field-month":"μήνας","field-day-narrow":"ημ.","dateFormatItem-MMM":"LLL","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","dateFormat-medium":"d MMM, y G","eraAbbr":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Χεϊσέι","Ρέιβα"],"field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","field-quarter-relative+-1":"προηγούμενο τρίμηνο","field-dayperiod-narrow":"πμ/μμ","field-week-narrow-relative+-1":"προηγ. εβδ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","dateFormatItem-Md":"d/M","field-hour":"ώρα","dateFormat-full":"EEEE, d MMMM, y G","field-month-relative+-1":"προηγούμενος μήνας","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","field-quarter-relative+0":"τρέχον τρίμηνο","field-minute-relative+0":"τρέχον λεπτό","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","dateFormatItem-yMMM":"LLL y GGGGG","dateFormat-short":"d/M/yy","field-thu-short-relative+-1":"προηγ. Πέμ.","field-year-narrow-relative+-1":"πέρσι","field-mon-narrow-relative+-1":"προηγ. Δε","field-thu-narrow-relative+-1":"προηγ. Πέ","field-tue-narrow-relative+-1":"προηγ. Τρ","field-weekOfMonth-short":"εβδ. μήνα","field-wed-short-relative+0":"αυτήν την Τετ.","field-wed-short-relative+1":"επόμ. Τετ.","field-sun-relative+-1":"προηγούμενη Κυριακή","field-weekday":"καθημερινή","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-day-short-relative+1":"αύριο","field-sat-relative+0":"αυτό το Σάββατο","field-quarter-narrow-relative+1":"επόμ. τρίμ.","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","field-week-short-relative+1":"επόμ. εβδομάδα","field-dayOfYear-narrow":"ημ. έτους","field-weekdayOfMonth-short":"καθημερ. μήνα","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"ζώνη","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"αυτήν την Πέ","field-thu-narrow-relative+1":"επόμ. Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-relative+0":"αυτήν την Πέμπτη","field-thu-relative+1":"επόμενη Πέμπτη","field-fri-short-relative+-1":"προηγ. Παρ.","field-thu-relative+-1":"προηγούμενη Πέμπτη","dateFormatItem-yMd":"dd/MM/y GGGGG","field-week":"εβδομάδα","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","field-dayperiod-short":"πμ/μμ","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","field-week-short-relative+-1":"προηγ. εβδομάδα","field-hour-short":"ώ.","field-zone-short":"ζώνη","field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","dateFormatItem-yQQQ":"y GGGGG QQQ","field-mon-narrow-relative+0":"αυτήν τη Δε","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","dateFormatItem-yM":"MM/y GGGGG","field-zone":"ζώνη ώρας","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"εβδ. μήνα","dateFormatItem-yMEd":"E, dd/MM/y GGGGG","field-weekday-narrow":"καθημερ.","field-quarter-narrow":"τρίμ.","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-1":"χθες","field-day-relative+-2":"προχθές","field-weekday-short":"καθημερ.","field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","dateFormatItem-yMMMd":"d MMM, y G","dateFormatItem-Gy":"y G","field-day-short":"ημ.","field-week-narrow":"εβδ.","field-era":"περίοδος","field-fri-narrow-relative+0":"αυτήν την Πα","field-fri-narrow-relative+1":"επόμ. Πα"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/number.js b/lib/dojo/cldr/nls/el/number.js
index 75b73d2a9..65f55fbee 100644
--- a/lib/dojo/cldr/nls/el/number.js
+++ b/lib/dojo/cldr/nls/el/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/el/number",{"group":".","percentSign":"%","exponential":"e","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000 τρισεκατομμύρια","decimalFormat-short":"000 τρισ'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/el/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 τρισ'.'","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 τρισεκατομμύρια","decimalFormat":"#,##0.###","currencyFormat-short":"000 τρισ'.' ¤","timeSeparator":":","decimal":",","exponential":"e"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/persian.js b/lib/dojo/cldr/nls/el/persian.js
new file mode 100644
index 000000000..32e341cec
--- /dev/null
+++ b/lib/dojo/cldr/nls/el/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/el/persian",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","timeFormat-short":"h:mm a","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-thu-short-relative+0":"αυτήν την Πέμ.","field-day-short-relative+-1":"χθες","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","field-wed-narrow-relative+-1":"προηγ. Τε","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","dayPeriods-format-narrow-am":"πμ","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"καθημερ. μήνα","dayPeriods-format-abbr-am":"π.μ.","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","months-standAlone-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"eraNames":["AP"],"field-weekOfMonth":"εβδομάδα μήνα","dayPeriods-standAlone-abbr-pm":"μ.μ.","field-month-short":"μήν.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"ημέρα","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","dayPeriods-format-wide-am":"π.μ.","field-sat-short-relative+-1":"προηγ. Σάβ.","field-hour-relative+0":"τρέχουσα ώρα","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-wed-relative+-1":"προηγούμενη Τετάρτη","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","days-standAlone-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"dayPeriods-standAlone-wide-pm":"μ.μ.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","field-day-narrow-relative+1":"αύριο","quarters-standAlone-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"days-format-narrow":["Κ","Δ","Τ","Τ","Π","Π","Σ"],"field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","dateFormatItem-GyMMM":"MMM y G","field-month":"μήνας","field-day-narrow":"ημ.","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","dayPeriods-format-narrow-pm":"μμ","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AP"],"quarters-standAlone-abbr":["Τ1","Τ2","Τ3","Τ4"],"dayPeriods-format-abbr-pm":"μ.μ.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","months-format-narrow":["Ι","Φ","Μ","Α","Μ","Ι","Ι","Α","Σ","Ο","Ν","Δ"],"field-quarter-relative+-1":"προηγούμενο τρίμηνο","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"πμ/μμ","dayPeriods-standAlone-narrow-am":"πμ","field-week-narrow-relative+-1":"προηγ. εβδ.","days-format-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"dayPeriods-format-wide-pm":"μ.μ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","dateTimeFormat-long":"{1} - {0}","dateFormatItem-Md":"d/M","field-hour":"ώρα","months-format-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"προηγούμενος μήνας","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","months-format-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-quarter-relative+0":"τρέχον τρίμηνο","field-minute-relative+0":"τρέχον λεπτό","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"προηγ. Πέμ.","field-year-narrow-relative+-1":"πέρσι","days-standAlone-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"προηγ. Δε","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"προηγ. Πέ","field-tue-narrow-relative+-1":"προηγ. Τρ","field-weekOfMonth-short":"εβδ. μήνα","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"μμ","field-wed-short-relative+0":"αυτήν την Τετ.","months-standAlone-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-wed-short-relative+1":"επόμ. Τετ.","field-sun-relative+-1":"προηγούμενη Κυριακή","days-standAlone-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"dateTimeFormat-full":"{1} - {0}","field-weekday":"καθημερινή","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-sat-relative+0":"αυτό το Σάββατο","field-day-short-relative+1":"αύριο","field-quarter-narrow-relative+1":"επόμ. τρίμ.","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","field-week-short-relative+1":"επόμ. εβδομάδα","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-dayOfYear-narrow":"ημ. έτους","field-weekdayOfMonth-short":"καθημερ. μήνα","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"ζώνη","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"αυτήν την Πέ","field-thu-narrow-relative+1":"επόμ. Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-relative+0":"αυτήν την Πέμπτη","field-thu-relative+1":"επόμενη Πέμπτη","field-fri-short-relative+-1":"προηγ. Παρ.","field-thu-relative+-1":"προηγούμενη Πέμπτη","field-week":"εβδομάδα","quarters-format-wide":["1ο τρίμηνο","2ο τρίμηνο","3ο τρίμηνο","4ο τρίμηνο"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","field-dayperiod-short":"πμ/μμ","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","days-standAlone-short":["Κυ","Δε","Τρ","Τε","Πέ","Πα","Σά"],"field-week-short-relative+-1":"προηγ. εβδομάδα","field-hour-short":"ώ.","field-zone-short":"ζώνη","quarters-format-abbr":["Τ1","Τ2","Τ3","Τ4"],"field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","eraNarrow":"AP","field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","days-format-wide":["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],"field-mon-narrow-relative+0":"αυτήν τη Δε","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","field-zone":"ζώνη ώρας","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"εβδ. μήνα","field-weekday-narrow":"καθημερ.","field-quarter-narrow":"τρίμ.","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-1":"χθες","dayPeriods-standAlone-abbr-am":"π.μ.","field-day-relative+-2":"προχθές","field-weekday-short":"καθημερ.","days-format-abbr":["Κυρ","Δευ","Τρί","Τετ","Πέμ","Παρ","Σάβ"],"field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","dateFormatItem-Gy":"y G","field-day-short":"ημ.","field-week-narrow":"εβδ.","field-era":"περίοδος","field-fri-narrow-relative+0":"αυτήν την Πα","field-fri-narrow-relative+1":"επόμ. Πα","dayPeriods-standAlone-wide-am":"π.μ."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/el/roc.js b/lib/dojo/cldr/nls/el/roc.js
index 517ba0247..c9437b15a 100644
--- a/lib/dojo/cldr/nls/el/roc.js
+++ b/lib/dojo/cldr/nls/el/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/el/roc",{"field-sat-relative+0":"αυτό το Σάββατο","field-sat-relative+1":"επόμενο Σάββατο","field-dayperiod":"π.μ./μ.μ.","field-sun-relative+-1":"προηγούμενη Κυριακή","field-mon-relative+-1":"προηγούμενη Δευτέρα","field-minute":"Λεπτό","field-day-relative+-1":"χθες","field-weekday":"Ημέρα εβδομάδας","field-day-relative+-2":"προχθές","field-era":"Περίοδος","field-hour":"Ώρα","field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","field-wed-relative+-1":"προηγούμενη Τετάρτη","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","eraAbbr":["Πριν R.O.C.","R.O.C."],"field-day-relative+2":"μεθαύριο","field-tue-relative+0":"αυτήν την Τρίτη","field-zone":"Ζώνη ώρας","field-tue-relative+1":"επόμενη Τρίτη","field-week-relative+-1":"προηγούμενη εβδομάδα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-sat-relative+-1":"προηγούμενο Σάββατο","field-year-relative+-1":"προηγούμενο έτος","field-year":"Έτος","field-fri-relative+0":"αυτήν την Παρασκευή","field-fri-relative+1":"επόμενη Παρασκευή","field-week":"Εβδομάδα","field-week-relative+0":"αυτήν την εβδομάδα","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-month":"Μήνας","field-month-relative+1":"επόμενος μήνας","field-fri-relative+-1":"προηγούμενη Παρασκευή","field-second":"Δευτερόλεπτο","field-tue-relative+-1":"προηγούμενη Τρίτη","field-day":"Ημέρα","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-thu-relative+0":"αυτήν την Πέμπτη","field-second-relative+0":"τώρα","field-thu-relative+1":"επόμενη Πέμπτη","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","field-month-relative+-1":"προηγούμενος μήνας","field-thu-relative+-1":"επόμενη Πέμπτη"}); \ No newline at end of file
+define("dojo/cldr/nls/el/roc",{"field-quarter-short-relative+0":"τρέχον τρίμ.","field-quarter-short-relative+1":"επόμ. τρίμ.","field-tue-relative+-1":"προηγούμενη Τρίτη","field-year":"έτος","field-wed-relative+0":"αυτήν την Τετάρτη","field-wed-relative+1":"επόμενη Τετάρτη","field-minute":"λεπτό","field-month-narrow-relative+-1":"προηγ. μήνας","field-tue-narrow-relative+0":"αυτήν την Τρ","field-tue-narrow-relative+1":"επόμ. Τρ","field-thu-short-relative+0":"αυτήν την Πέμ.","field-day-short-relative+-1":"χθες","field-thu-short-relative+1":"επόμ. Πέμ.","field-day-relative+0":"σήμερα","field-day-relative+1":"αύριο","field-week-narrow-relative+0":"τρέχ. εβδ.","field-day-relative+2":"μεθαύριο","field-week-narrow-relative+1":"επόμ. εβδ.","field-wed-narrow-relative+-1":"προηγ. Τε","field-year-narrow":"έτ.","field-era-short":"περ.","field-year-narrow-relative+0":"φέτος","field-tue-relative+0":"αυτήν την Τρίτη","field-year-narrow-relative+1":"επόμενο έτος","field-tue-relative+1":"επόμενη Τρίτη","field-weekdayOfMonth":"καθημερινή μήνα","field-second-short":"δευτ.","field-weekdayOfMonth-narrow":"καθημερ. μήνα","field-week-relative+0":"τρέχουσα εβδομάδα","field-month-relative+0":"τρέχων μήνας","field-week-relative+1":"επόμενη εβδομάδα","field-month-relative+1":"επόμενος μήνας","field-sun-narrow-relative+0":"αυτήν την Κυ","field-mon-short-relative+0":"αυτήν τη Δευτ.","field-sun-narrow-relative+1":"επόμ. Κυ","field-mon-short-relative+1":"επόμ. Δευτ.","field-second-relative+0":"τώρα","eraNames":["προ R.O.C.","R.O.C."],"field-weekOfMonth":"εβδομάδα μήνα","field-month-short":"μήν.","field-day":"ημέρα","field-dayOfYear-short":"ημ. έτους","field-year-relative+-1":"πέρσι","field-sat-short-relative+-1":"προηγ. Σάβ.","field-hour-relative+0":"τρέχουσα ώρα","field-wed-relative+-1":"προηγούμενη Τετάρτη","field-sat-narrow-relative+-1":"προηγ. Σά","field-second":"δευτερόλεπτο","field-quarter":"τρίμηνο","field-week-short":"εβδ.","field-day-narrow-relative+0":"σήμερα","field-day-narrow-relative+1":"αύριο","field-tue-short-relative+0":"αυτήν την Τρ.","field-tue-short-relative+1":"επόμ. Τρ.","field-mon-relative+-1":"προηγούμενη Δευτέρα","field-month":"μήνας","field-day-narrow":"ημ.","field-minute-short":"λεπ.","field-dayperiod":"π.μ./μ.μ.","field-sat-short-relative+0":"αυτό το Σάβ.","field-sat-short-relative+1":"επόμ. Σάβ.","eraAbbr":["προ R.O.C.","R.O.C."],"field-second-narrow":"δ.","field-mon-relative+0":"αυτήν τη Δευτέρα","field-mon-relative+1":"επόμενη Δευτέρα","field-day-narrow-relative+-1":"χθες","field-year-short":"έτ.","field-quarter-relative+-1":"προηγούμενο τρίμηνο","field-dayperiod-narrow":"πμ/μμ","field-week-narrow-relative+-1":"προηγ. εβδ.","field-dayOfYear":"ημέρα έτους","field-sat-relative+-1":"προηγούμενο Σάββατο","field-hour":"ώρα","field-month-relative+-1":"προηγούμενος μήνας","field-quarter-short":"τρίμ.","field-sat-narrow-relative+0":"αυτό το Σά","field-fri-relative+0":"αυτήν την Παρασκευή","field-sat-narrow-relative+1":"επόμ. Σά","field-fri-relative+1":"επόμενη Παρασκευή","field-month-narrow-relative+0":"τρέχ. μήνας","field-month-narrow-relative+1":"επόμ. μήνας","field-sun-short-relative+0":"αυτήν την Κυρ.","field-sun-short-relative+1":"επόμ. Κυρ.","field-week-relative+-1":"προηγούμενη εβδομάδα","field-quarter-short-relative+-1":"προηγ. τρίμ.","field-quarter-relative+0":"τρέχον τρίμηνο","field-minute-relative+0":"τρέχον λεπτό","field-quarter-relative+1":"επόμενο τρίμηνο","field-wed-short-relative+-1":"προηγ. Τετ.","field-thu-short-relative+-1":"προηγ. Πέμ.","field-year-narrow-relative+-1":"πέρσι","field-mon-narrow-relative+-1":"προηγ. Δε","field-thu-narrow-relative+-1":"προηγ. Πέ","field-tue-narrow-relative+-1":"προηγ. Τρ","field-weekOfMonth-short":"εβδ. μήνα","field-wed-short-relative+0":"αυτήν την Τετ.","field-wed-short-relative+1":"επόμ. Τετ.","field-sun-relative+-1":"προηγούμενη Κυριακή","field-weekday":"καθημερινή","field-day-short-relative+0":"σήμερα","field-quarter-narrow-relative+0":"τρέχον τρίμ.","field-sat-relative+0":"αυτό το Σάββατο","field-day-short-relative+1":"αύριο","field-quarter-narrow-relative+1":"επόμ. τρίμ.","field-sat-relative+1":"επόμενο Σάββατο","field-week-short-relative+0":"τρέχ. εβδομάδα","field-week-short-relative+1":"επόμ. εβδομάδα","field-dayOfYear-narrow":"ημ. έτους","field-weekdayOfMonth-short":"καθημερ. μήνα","field-zone-narrow":"ζώνη","field-thu-narrow-relative+0":"αυτήν την Πέ","field-thu-narrow-relative+1":"επόμ. Πέ","field-sun-narrow-relative+-1":"προηγ. Κυ","field-mon-short-relative+-1":"προηγ. Δευτ.","field-thu-relative+0":"αυτήν την Πέμπτη","field-thu-relative+1":"επόμενη Πέμπτη","field-fri-short-relative+-1":"προηγ. Παρ.","field-thu-relative+-1":"προηγούμενη Πέμπτη","field-week":"εβδομάδα","field-wed-narrow-relative+0":"αυτήν την Τε","field-wed-narrow-relative+1":"επόμ. Τε","field-quarter-narrow-relative+-1":"προηγ. τρίμ.","field-year-short-relative+0":"φέτος","field-dayperiod-short":"πμ/μμ","field-year-short-relative+1":"επόμενο έτος","field-fri-short-relative+0":"αυτήν την Παρ.","field-fri-short-relative+1":"επόμ. Παρ.","field-week-short-relative+-1":"προηγ. εβδομάδα","field-hour-short":"ώ.","field-zone-short":"ζώνη","field-month-narrow":"μήν.","field-hour-narrow":"ώ.","field-fri-narrow-relative+-1":"προηγ. Πα","field-year-relative+0":"φέτος","field-year-relative+1":"επόμενο έτος","field-era-narrow":"περ.","field-fri-relative+-1":"προηγούμενη Παρασκευή","eraNarrow":["προ R.O.C.","R.O.C."],"field-tue-short-relative+-1":"προηγ. Τρ.","field-minute-narrow":"λ.","field-mon-narrow-relative+0":"αυτήν τη Δε","field-mon-narrow-relative+1":"επόμ. Δε","field-year-short-relative+-1":"πέρσι","field-zone":"ζώνη ώρας","field-weekOfMonth-narrow":"εβδ. μήνα","field-weekday-narrow":"καθημερ.","field-quarter-narrow":"τρίμ.","field-sun-short-relative+-1":"προηγ. Κυρ.","field-day-relative+-1":"χθες","field-day-relative+-2":"προχθές","field-weekday-short":"καθημερ.","field-sun-relative+0":"αυτήν την Κυριακή","field-sun-relative+1":"επόμενη Κυριακή","field-day-short":"ημ.","field-week-narrow":"εβδ.","field-era":"περίοδος","field-fri-narrow-relative+0":"αυτήν την Πα","field-fri-narrow-relative+1":"επόμ. Πα"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/chinese.js b/lib/dojo/cldr/nls/en-au/chinese.js
index c699f72f7..b874e600c 100644
--- a/lib/dojo/cldr/nls/en-au/chinese.js
+++ b/lib/dojo/cldr/nls/en-au/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-au/chinese",{"dateFormat-medium":"d MMM U","field-year-relative+-1":"Last year","field-month-relative+-1":"Last month","field-day-relative+-1":"Yesterday","timeFormat-full":"h:mm:ss a zzzz","field-week-relative+0":"This week","field-week-relative+1":"Next week","timeFormat-medium":"h:mm:ss a","field-week-relative+-1":"Last week","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","dateFormat-long":"d MMMM U","field-month-relative+0":"This month","field-month-relative+1":"Next month","dateFormat-short":"d/MM/yy","field-year-relative+0":"This year","field-year-relative+1":"Next year","timeFormat-short":"h:mm a","timeFormat-long":"h:mm:ss a z","dateFormat-full":"EEEE, d MMMM U"}); \ No newline at end of file
+define("dojo/cldr/nls/en-au/chinese",{"field-hour-narrow":"h","field-month-short":"mo.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekdayOfMonth-short":"wkday of mo.","field-month-narrow":"mo.","months-standAlone-abbr":["Mo1","Mo2","Mo3","Mo4","Mo5","Mo6","Mo7","Mo8","Mo9","Mo10","Mo11","Mo12"],"field-hour-short":"h","field-weekOfMonth-short":"wk of mo.","field-second-narrow":"sec.","field-minute-short":"min.","field-minute-narrow":"min.","months-standAlone-wide":["First Month","Second Month","Third Month","Fourth Month","Fifth Month","Sixth Month","Seventh Month","Eighth Month","Ninth Month","Tenth Month","Eleventh Month","Twelfth Month"],"field-second-short":"sec.","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"]}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/currency.js b/lib/dojo/cldr/nls/en-au/currency.js
index 6d59f082f..3e0849b45 100644
--- a/lib/dojo/cldr/nls/en-au/currency.js
+++ b/lib/dojo/cldr/nls/en-au/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-au/currency",{"EUR_displayName":"Euro","AUD_symbol":"$","USD_symbol":"US$"}); \ No newline at end of file
+define("dojo/cldr/nls/en-au/currency",{"CHF_symbol":"CHF","JPY_symbol":"JPY","HKD_symbol":"HKD","USD_symbol":"USD","CAD_symbol":"CAD","EUR_symbol":"EUR","CNY_symbol":"CNY","GBP_symbol":"GBP","AUD_symbol":"$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/generic.js b/lib/dojo/cldr/nls/en-au/generic.js
index e06e5a99a..cd310d289 100644
--- a/lib/dojo/cldr/nls/en-au/generic.js
+++ b/lib/dojo/cldr/nls/en-au/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-au/generic",{"dateFormatItem-yMd":"d/M/y","dateFormat-medium":"d MMM y G","field-year-relative+-1":"Last year","dateFormatItem-yMEd":"E, d/M/y","field-month-relative+-1":"Last month","field-day-relative+-1":"Yesterday","timeFormat-full":"h:mm:ss a zzzz","field-week-relative+0":"This week","field-week-relative+1":"Next week","timeFormat-medium":"h:mm:ss a","field-week-relative+-1":"Last week","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","dateFormat-long":"d MMMM y G","field-month-relative+0":"This month","field-month-relative+1":"Next month","dateFormat-short":"d/MM/y GGGGG","field-year-relative+0":"This year","field-year-relative+1":"Next year","timeFormat-short":"h:mm a","timeFormat-long":"h:mm:ss a z","dateFormat-full":"EEEE, d MMMM y G"}); \ No newline at end of file
+define("dojo/cldr/nls/en-au/generic",{"field-hour-narrow":"h","field-month-short":"mo.","dateFormatItem-yMEd":"E, dd/MM/y","field-weekdayOfMonth-short":"wkday of mo.","field-month-narrow":"mo.","field-hour-short":"h","dateFormatItem-yMd":"dd/MM/y","field-weekOfMonth-short":"wk of mo.","field-second-narrow":"sec.","field-minute-short":"min.","field-minute-narrow":"min.","field-second-short":"sec."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/gregorian.js b/lib/dojo/cldr/nls/en-au/gregorian.js
index 3a34a42cd..4a7af1350 100644
--- a/lib/dojo/cldr/nls/en-au/gregorian.js
+++ b/lib/dojo/cldr/nls/en-au/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-au/gregorian",{"dateFormatItem-yMd":"d/M/y","dateFormat-medium":"d MMM y","field-year-relative+-1":"Last year","dateFormatItem-yMEd":"E, d/M/y","field-month-relative+-1":"Last month","field-day-relative+-1":"Yesterday","timeFormat-full":"h:mm:ss a zzzz","field-week-relative+0":"This week","field-week-relative+1":"Next week","timeFormat-medium":"h:mm:ss a","field-week-relative+-1":"Last week","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","dateFormat-long":"d MMMM y","field-month-relative+0":"This month","field-month-relative+1":"Next month","dateFormat-short":"d/MM/y","field-year-relative+0":"This year","field-year-relative+1":"Next year","timeFormat-short":"h:mm a","timeFormat-long":"h:mm:ss a z","dateFormat-full":"EEEE, d MMMM y"}); \ No newline at end of file
+define("dojo/cldr/nls/en-au/gregorian",{"field-second-short":"sec.","dayPeriods-format-narrow-midnight":"midnight","dayPeriods-format-narrow-night1":"night","dateTimeFormat-full":"{1} 'at' {0}","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayPeriods-standAlone-narrow-afternoon1":"afternoon","field-hour-narrow":"h","dayPeriods-format-narrow-noon":"midday","dateTimeFormat-short":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"timeFormat-full":"h:mm:ss a zzzz","field-minute-short":"min.","dayPeriods-standAlone-narrow-noon":"midday","dayPeriods-format-wide-evening1":"in the evening","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dayPeriods-standAlone-narrow-night1":"night","dayPeriods-format-abbr-morning1":"morning","dayPeriods-standAlone-narrow-morning1":"morning","days-standAlone-narrow":["Su.","M.","Tu.","W.","Th.","F.","Sa."],"field-second-narrow":"sec.","dateFormat-long":"d MMMM y","timeFormat-medium":"h:mm:ss a","field-weekOfMonth-short":"wk of mo.","field-hour-short":"h","dateFormat-medium":"d MMM y","dayPeriods-format-wide-midnight":"midnight","dayPeriods-format-narrow-pm":"pm","dayPeriods-standAlone-narrow-pm":"pm","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dayPeriods-format-narrow-am":"am","dayPeriods-standAlone-narrow-am":"am","dateTimeFormat-long":"{1} 'at' {0}","dayPeriods-format-abbr-afternoon1":"afternoon","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dayPeriods-format-narrow-morning1":"morning","dayPeriods-format-wide-afternoon1":"in the afternoon","quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-abbr-evening1":"evening","dayPeriods-standAlone-narrow-evening1":"evening","months-format-abbr":["Jan","Feb","Mar","Apr","May","June","July","Aug","Sept","Oct","Nov","Dec"],"timeFormat-long":"h:mm:ss a z","dayPeriods-format-narrow-afternoon1":"afternoon","dayPeriods-format-wide-noon":"midday","dayPeriods-standAlone-wide-noon":"midday","timeFormat-short":"h:mm a","field-minute-narrow":"min.","days-format-narrow":["Su.","M.","Tu.","W.","Th.","F.","Sa."],"dayPeriods-format-abbr-night1":"night","dayPeriods-standAlone-narrow-midnight":"midnight","dayPeriods-format-abbr-midnight":"midnight","dateFormatItem-MEd":"E, d/M","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-standAlone-short":["Su","Mon","Tu","Wed","Th","Fri","Sat"],"field-month-short":"mo.","dayPeriods-format-wide-night1":"at night","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormat-short":"d/M/yy","dayPeriods-format-abbr-noon":"midday","dayPeriods-standAlone-abbr-noon":"midday","dayPeriods-format-narrow-evening1":"evening","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-Md":"d/M","field-month-narrow":"mo.","dayPeriods-format-wide-morning1":"in the morning","days-format-short":["Su","Mon","Tu","Wed","Th","Fri","Sat"],"field-weekdayOfMonth-short":"wkday of mo."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/indian.js b/lib/dojo/cldr/nls/en-au/indian.js
new file mode 100644
index 000000000..b4e77af19
--- /dev/null
+++ b/lib/dojo/cldr/nls/en-au/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/en-au/indian",{"field-hour-narrow":"h","field-month-short":"mo.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekdayOfMonth-short":"wkday of mo.","field-month-narrow":"mo.","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-hour-short":"h","months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-weekOfMonth-short":"wk of mo.","field-second-narrow":"sec.","field-minute-short":"min.","field-minute-narrow":"min.","months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-second-short":"sec.","months-format-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"]}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/islamic.js b/lib/dojo/cldr/nls/en-au/islamic.js
index f360da45b..99e5a6150 100644
--- a/lib/dojo/cldr/nls/en-au/islamic.js
+++ b/lib/dojo/cldr/nls/en-au/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-au/islamic",{"dateFormatItem-yyyyMMMEd":"E, MMM d, y G","dateFormatItem-MMMEd":"E, MMM d","dateTimeFormat-full":"{1} 'at' {0}","field-day-relative+-1":"Yesterday","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Gy":"y G","dateTimeFormat-medium":"{1}, {0}","dateFormatItem-y":"y G","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-yyyy":"y G","dateFormatItem-Ed":"d E","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","dateFormatItem-GyMMMd":"MMM d, y G","dateFormat-long":"MMMM d, y G","timeFormat-medium":"h:mm:ss a","field-week-relative+-1":"Last week","dateFormat-medium":"MMM d, y G","field-year-relative+0":"This year","field-year-relative+1":"Next year","dateFormatItem-yMd":"d/M/y","field-year-relative+-1":"Last year","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-yyyyMd":"M/d/y GGGGG","dateFormatItem-yyyyMMMd":"MMM d, y G","dateFormatItem-yyyyMEd":"E, M/d/y GGGGG","field-week-relative+0":"This week","field-week-relative+1":"Next week","timeFormat-long":"h:mm:ss a z","field-month-relative+0":"This month","timeFormat-short":"h:mm a","field-month-relative+1":"Next month","dateFormatItem-GyMMMEd":"E, MMM d, y G","dateFormatItem-GyMMM":"MMM y G","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormatItem-MEd":"E, M/d","dateFormat-short":"d/MM/y GGGGG","dateFormatItem-yyyyM":"M/y GGGGG","dateFormat-full":"EEEE, MMMM d, y G","dateFormatItem-Md":"M/d","dateFormatItem-yMEd":"E, d/M/y","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dateFormatItem-yyyyMMM":"MMM y G","dateTimeFormats-appendItem-Era":"{0} {1}","field-month-relative+-1":"Last month","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}); \ No newline at end of file
+define("dojo/cldr/nls/en-au/islamic",{"field-second-short":"sec.","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","dateTimeFormat-full":"{1} 'at' {0}","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-MMM":"LLL","field-hour-narrow":"h","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Gy":"y G","dateTimeFormat-medium":"{1}, {0}","dateFormatItem-y":"y G","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-yyyy":"y G","field-minute-short":"min.","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"dateFormatItem-Ed":"E d","days-standAlone-narrow":["Su.","M.","Tu.","W.","Th.","F.","Sa."],"field-second-narrow":"sec.","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","dateFormat-long":"d MMMM y G","timeFormat-medium":"h:mm:ss a","field-weekOfMonth-short":"wk of mo.","field-hour-short":"h","dateFormat-medium":"d MMM y G","dayPeriods-format-narrow-pm":"pm","dayPeriods-standAlone-narrow-pm":"pm","dateFormatItem-yMd":"dd/MM/y","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-yyyyQQQQ":"QQQQ y G","dayPeriods-format-narrow-am":"am","dayPeriods-standAlone-narrow-am":"am","dateTimeFormat-long":"{1} 'at' {0}","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","dateFormatItem-MMMd":"d MMM","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"dateFormatItem-E":"ccc","timeFormat-long":"h:mm:ss a z","timeFormat-short":"h:mm a","dateFormatItem-MMMMd":"d MMMM","field-minute-narrow":"min.","dateFormatItem-M":"LL","days-format-narrow":["Su.","M.","Tu.","W.","Th.","F.","Sa."],"dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-GyMMM":"MMM y G","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormatItem-MEd":"E, M/d","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-standAlone-short":["Su","Mon","Tu","Wed","Th","Fri","Sat"],"field-month-short":"mo.","dateFormat-short":"dd/MM/y GGGGG","dateFormatItem-yyyyM":"MM/y GGGGG","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-Md":"dd/MM","field-month-narrow":"mo.","dateFormatItem-yMEd":"E, dd/MM/y","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"days-format-short":["Su","Mon","Tu","Wed","Th","Fri","Sat"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-d":"d","dateTimeFormats-appendItem-Era":"{0} {1}","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-weekdayOfMonth-short":"wkday of mo."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/japanese.js b/lib/dojo/cldr/nls/en-au/japanese.js
deleted file mode 100644
index 1cc28f8c7..000000000
--- a/lib/dojo/cldr/nls/en-au/japanese.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/en-au/japanese",{"field-month-relative+0":"This month","field-year-relative+0":"This year","field-month-relative+1":"Next month","field-week-relative+-1":"Last week","field-year-relative+1":"Next year","field-week-relative+0":"This week","field-week-relative+1":"Next week","dateFormat-medium":"dd/MM/y G","field-day-relative+-1":"Yesterday","field-month-relative+-1":"Last month","dateFormat-full":"EEEE, d MMMM y G","field-day-relative+0":"Today","field-day-relative+1":"Tomorrow","dateFormat-short":"d/MM/yy GGGGG","field-year-relative+-1":"Last year","dateFormat-long":"d MMMM y G"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-au/number.js b/lib/dojo/cldr/nls/en-au/number.js
index 18b6dfa0f..575b1ee1a 100644
--- a/lib/dojo/cldr/nls/en-au/number.js
+++ b/lib/dojo/cldr/nls/en-au/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-au/number",{"currencyFormat":"¤#,##0.00"}); \ No newline at end of file
+define("dojo/cldr/nls/en-au/number",{"exponential":"e"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-ca/chinese.js b/lib/dojo/cldr/nls/en-ca/chinese.js
new file mode 100644
index 000000000..28da85a53
--- /dev/null
+++ b/lib/dojo/cldr/nls/en-ca/chinese.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/en-ca/chinese",{"field-week-narrow":"wk.","dateFormatItem-yyyyMMMEd":"E, MMM d, r(U)","field-dayperiod":"a.m./p.m.","field-second-short":"sec.","dateFormatItem-MMMEd":"E, MMM d","field-hour-narrow":"hr.","field-wed-narrow-relative+-1":"last We","field-dayperiod-short":"a.m./p.m.","field-minute-short":"min.","dateFormatItem-Ed":"d E","field-year-narrow":"yr.","dateFormatItem-UMd":"d/M/U","dateFormatItem-GyMMMd":"MMM d, r","field-second-narrow":"sec.","dateFormat-long":"MMMM d, r(U)","field-hour-short":"hr.","dateFormat-medium":"MMM d, r","dateFormatItem-yMd":"d/M/r","field-fri-narrow-relative+0":"this Fr","field-dayperiod-narrow":"a.m./p.m.","field-fri-narrow-relative+1":"next Fr","field-wed-narrow-relative+0":"this We","dateFormatItem-yyyyMd":"d/M/r","dateFormatItem-yyyyMMMd":"MMM d, r","field-wed-narrow-relative+1":"next We","dateFormatItem-yyyyMEd":"E, d/M/r","dateFormatItem-MMMd":"MMM d","field-year-short":"yr.","dateFormatItem-MMMMd":"MMMM d","field-minute-narrow":"min.","field-fri-narrow-relative+-1":"last Fr","dateFormatItem-GyMMMEd":"E, MMM d, r(U)","field-quarter-short":"qtr.","dateFormatItem-MEd":"E, d/M","field-week-short":"wk.","field-quarter-narrow":"qtr.","field-month-short":"mo.","dateFormat-short":"d/M/r","dateFormatItem-yyyyM":"M/r","dateFormatItem-UMMMd":"MMM d, U","dateFormat-full":"EEEE, MMMM d, r(U)","dateFormatItem-Md":"d/M","field-month-narrow":"mo."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-ca/currency.js b/lib/dojo/cldr/nls/en-ca/currency.js
index f9ed0cd31..0053b7a23 100644
--- a/lib/dojo/cldr/nls/en-ca/currency.js
+++ b/lib/dojo/cldr/nls/en-ca/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-ca/currency",{"CAD_symbol":"$","USD_symbol":"US$"}); \ No newline at end of file
+define("dojo/cldr/nls/en-ca/currency",{"CAD_symbol":"$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-ca/generic.js b/lib/dojo/cldr/nls/en-ca/generic.js
index 6b5b8656a..324032334 100644
--- a/lib/dojo/cldr/nls/en-ca/generic.js
+++ b/lib/dojo/cldr/nls/en-ca/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-ca/generic",{"dateFormatItem-yyyyMEd":"E, GGGGG y-MM-dd","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-yyyyM":"GGGGG y-MM","dateFormatItem-MEd":"E, MM-dd","dateFormatItem-Md":"MM-dd","dateFormatItem-yyyyMd":"GGGGG y-MM-dd"}); \ No newline at end of file
+define("dojo/cldr/nls/en-ca/generic",{"field-week-narrow":"wk.","dateFormatItem-yyyyMMMEd":"E, MMM d, y G","field-dayperiod":"a.m./p.m.","field-second-short":"sec.","dateFormatItem-MMMEd":"E, MMM d","dateTimeFormat-full":"{1} 'at' {0}","field-hour-narrow":"hr.","dateTimeFormat-short":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","field-wed-narrow-relative+-1":"last We","field-dayperiod-short":"a.m./p.m.","field-minute-short":"min.","dateFormatItem-Ed":"d E","field-year-narrow":"yr.","dateFormatItem-GyMMMd":"MMM d, y G","field-second-narrow":"sec.","dateFormat-long":"MMMM d, y G","field-hour-short":"hr.","dateFormat-medium":"MMM d, y G","field-fri-narrow-relative+0":"this Fr","field-dayperiod-narrow":"a.m./p.m.","field-fri-narrow-relative+1":"next Fr","dateTimeFormat-long":"{1} 'at' {0}","field-wed-narrow-relative+0":"this We","dateFormatItem-yyyyMd":"d/M/y GGGGG","dateFormatItem-yyyyMMMd":"MMM d, y G","field-wed-narrow-relative+1":"next We","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","dateFormatItem-MMMd":"MMM d","field-year-short":"yr.","field-minute-narrow":"min.","field-fri-narrow-relative+-1":"last Fr","dateFormatItem-GyMMMEd":"E, MMM d, y G","field-quarter-short":"qtr.","dateFormatItem-MEd":"E, d/M","field-week-short":"wk.","field-quarter-narrow":"qtr.","field-month-short":"mo.","dateFormat-short":"d/M/y GGGGG","dateFormatItem-yyyyM":"M/y GGGGG","dateFormat-full":"EEEE, MMMM d, y G","dateFormatItem-Md":"d/M","field-month-narrow":"mo."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-ca/gregorian.js b/lib/dojo/cldr/nls/en-ca/gregorian.js
index 3bfaf363e..5c35a9adc 100644
--- a/lib/dojo/cldr/nls/en-ca/gregorian.js
+++ b/lib/dojo/cldr/nls/en-ca/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-ca/gregorian",{"dateFormatItem-yMEd":"E, y-MM-dd","dateFormatItem-yMd":"y-MM-dd","dateFormat-short":"y-MM-dd","dateFormatItem-MEd":"E, MM-dd","dateFormatItem-yM":"y-MM","dateFormatItem-Md":"MM-dd"}); \ No newline at end of file
+define("dojo/cldr/nls/en-ca/gregorian",{"days-standAlone-short":["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],"dateFormatItem-yMEd":"E, d/M/y","dateFormatItem-GyMMMEd":"E, MMM d, y G","dayPeriods-standAlone-narrow-afternoon1":"aft","dateFormatItem-MMMEd":"E, MMM d","field-dayperiod-short":"a.m./p.m.","field-week-short":"wk.","field-year-short":"yr.","dayPeriods-format-narrow-evening1":"eve","days-format-short":["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],"dayPeriods-format-narrow-morning1":"mor","dateFormat-long":"MMMM d, y","dayPeriods-standAlone-narrow-night1":"night","field-quarter-narrow":"qtr.","field-hour-short":"hr.","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE, MMMM d, y","dateFormatItem-Md":"d/M","dayPeriods-standAlone-wide-pm":"p.m.","dayPeriods-format-abbr-am":"a.m.","dateFormatItem-yMd":"d/M/y","dateFormatItem-yM":"M/y","timeFormat-short":"h:mm a","dayPeriods-standAlone-abbr-am":"a.m.","timeFormat-long":"h:mm:ss a z","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."],"dayPeriods-standAlone-narrow-midnight":"mid","dayPeriods-standAlone-narrow-am":"a.m.","timeFormat-full":"h:mm:ss a zzzz","field-minute-narrow":"min.","field-wed-narrow-relative+0":"this We","dateFormatItem-GyMMMd":"MMM d, y G","field-wed-narrow-relative+1":"next We","months-standAlone-abbr":["Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec."],"field-fri-narrow-relative+-1":"last Fr","dateFormatItem-MMMMd":"MMMM d","field-hour-narrow":"hr.","field-year-narrow":"yr.","field-minute-short":"min.","timeFormat-medium":"h:mm:ss a","field-month-short":"mo.","field-dayperiod":"a.m./p.m.","days-standAlone-abbr":["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],"dateTimeFormat-long":"{1} 'at' {0}","dayPeriods-format-narrow-am":"am","dayPeriods-format-narrow-midnight":"mid","field-week-narrow":"wk.","dayPeriods-format-narrow-afternoon1":"aft","field-wed-narrow-relative+-1":"last We","dateFormatItem-MMMd":"MMM d","field-dayperiod-narrow":"a.m./p.m.","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} 'at' {0}","field-second-narrow":"sec.","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],"dayPeriods-standAlone-abbr-pm":"p.m.","dateFormatItem-yMMMd":"MMM d, y","dayPeriods-standAlone-narrow-pm":"pm","dayPeriods-format-wide-am":"a.m.","field-fri-narrow-relative+0":"this Fr","field-fri-narrow-relative+1":"next Fr","dayPeriods-standAlone-wide-am":"a.m.","dayPeriods-format-narrow-night1":"night","dateFormat-short":"d/M/yy","field-second-short":"sec.","dayPeriods-format-narrow-noon":"n","dateFormatItem-yMMMEd":"E, MMM d, y","dayPeriods-standAlone-narrow-evening1":"eve","dayPeriods-standAlone-narrow-morning1":"mor","dateFormat-medium":"MMM d, y","dayPeriods-format-narrow-pm":"pm","dateTimeFormat-short":"{1}, {0}","field-quarter-short":"qtr.","field-month-narrow":"mo."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-ca/islamic.js b/lib/dojo/cldr/nls/en-ca/islamic.js
new file mode 100644
index 000000000..809d8f02c
--- /dev/null
+++ b/lib/dojo/cldr/nls/en-ca/islamic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/en-ca/islamic",{"days-standAlone-short":["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],"dateFormatItem-GyMMMEd":"E, MMM d, y G","dateFormatItem-MMMEd":"E, MMM d","field-dayperiod-short":"a.m./p.m.","field-week-short":"wk.","field-year-short":"yr.","days-format-short":["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],"dateFormat-long":"MMMM d, y G","field-quarter-narrow":"qtr.","field-hour-short":"hr.","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE, MMMM d, y G","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","dateFormatItem-Md":"d/M","dayPeriods-standAlone-wide-pm":"p.m.","dayPeriods-format-abbr-am":"a.m.","timeFormat-short":"h:mm a","dayPeriods-standAlone-abbr-am":"a.m.","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"timeFormat-long":"h:mm:ss a z","dateTimeFormats-appendItem-Era":"{0} {1}","dateFormatItem-yyyyMMMM":"MMMM y G","dayPeriods-standAlone-narrow-am":"a.m.","timeFormat-full":"h:mm:ss a zzzz","field-minute-narrow":"min.","field-wed-narrow-relative+0":"this We","dateFormatItem-GyMMMd":"MMM d, y G","field-wed-narrow-relative+1":"next We","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, MMM d, y G","field-fri-narrow-relative+-1":"last Fr","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"MMM d, y G","field-hour-narrow":"hr.","field-year-narrow":"yr.","field-minute-short":"min.","timeFormat-medium":"h:mm:ss a","field-month-short":"mo.","field-dayperiod":"a.m./p.m.","days-standAlone-abbr":["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],"dateTimeFormat-long":"{1} 'at' {0}","dayPeriods-format-narrow-am":"am","field-week-narrow":"wk.","field-wed-narrow-relative+-1":"last We","dateFormatItem-MMMd":"MMM d","field-dayperiod-narrow":"a.m./p.m.","dateFormatItem-MEd":"E, MM-dd","dateTimeFormat-full":"{1} 'at' {0}","days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-second-narrow":"sec.","dateFormatItem-y":"y G","dateTimeFormats-appendItem-Year":"{0} {1}","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["Sun.","Mon.","Tue.","Wed.","Thu.","Fri.","Sat."],"dayPeriods-standAlone-abbr-pm":"p.m.","dateFormatItem-yyyyMd":"y-MM-dd GGGGG","dayPeriods-standAlone-narrow-pm":"pm","dayPeriods-format-wide-am":"a.m.","field-fri-narrow-relative+0":"this Fr","field-fri-narrow-relative+1":"next Fr","dayPeriods-standAlone-wide-am":"a.m.","dateFormat-short":"GGGGG y-MM-dd","field-second-short":"sec.","dateFormatItem-Ed":"d E","dateFormat-medium":"MMM d, y G","dateFormatItem-yyyyM":"y-MM GGGG","dayPeriods-format-narrow-pm":"pm","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","field-quarter-short":"qtr.","dateFormatItem-GyMMM":"MMM y G","field-month-narrow":"mo.","dateFormatItem-yyyy":"y G"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-ca/number.js b/lib/dojo/cldr/nls/en-ca/number.js
new file mode 100644
index 000000000..1d4cebd25
--- /dev/null
+++ b/lib/dojo/cldr/nls/en-ca/number.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/en-ca/number",{"exponential":"e"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-gb/chinese.js b/lib/dojo/cldr/nls/en-gb/chinese.js
deleted file mode 100644
index a2a4fab0f..000000000
--- a/lib/dojo/cldr/nls/en-gb/chinese.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/en-gb/chinese",{"dateFormat-medium":"d MMM U","dateFormatItem-yMd":"dd/MM/y","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MEd":"E dd/MM","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormat-medium":"{1} {0}","dateFormatItem-GyMMMd":"d MMM U","dateFormatItem-Md":"dd/MM","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-GyMMMEd":"E, d MMM U","dateFormatItem-M":"LL","dateFormatItem-yyyyMMMEd":"E, d MMM U","dateFormatItem-yyyyMEd":"E, dd/MM/y","dateFormatItem-yyyyMMMM":"MMMM U","dateFormatItem-MMMMd":"d MMMM","dateTimeFormat-long":"{1} {0}","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormat-long":"d MMMM U","field-dayperiod":"am/pm","dateFormat-short":"dd/MM/yy","dateTimeFormat-short":"{1} {0}","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormat-full":"{1} {0}","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-yyyyMMMd":"d MMM U","dateFormatItem-yyyyM":"MM/y","dateFormat-full":"EEEE, d MMMM U","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyyyMd":"dd/MM/y","dateFormatItem-Ed":"E d"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-gb/currency.js b/lib/dojo/cldr/nls/en-gb/currency.js
deleted file mode 100644
index e59a47456..000000000
--- a/lib/dojo/cldr/nls/en-gb/currency.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/en-gb/currency",{"USD_symbol":"$","CAD_symbol":"CA$","GBP_displayName":"British Pound","GBP_symbol":"£","HKD_symbol":"HK$","AUD_symbol":"AU$","CNY_symbol":"CN¥","EUR_symbol":"€"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-gb/generic.js b/lib/dojo/cldr/nls/en-gb/generic.js
index 1e8a68bc9..00eb5554b 100644
--- a/lib/dojo/cldr/nls/en-gb/generic.js
+++ b/lib/dojo/cldr/nls/en-gb/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-gb/generic",{"dateFormat-medium":"d MMM y G","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MEd":"E dd/MM","dateTimeFormat-medium":"{1} {0}","dateFormatItem-GyMMMd":"d MMM y G","dateFormatItem-Md":"dd/MM","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-M":"LL","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-MMMMd":"d MMMM","dateTimeFormat-long":"{1} {0}","dateFormat-long":"d MMMM y G","field-dayperiod":"am/pm","dateFormat-short":"dd/MM/y GGGGG","dateTimeFormat-short":"{1} {0}","dateTimeFormat-full":"{1} {0}","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyM":"MM/y GGGGG","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-MMMd":"d MMM","dateFormatItem-yyyyMd":"dd/MM/y GGGGG","dateFormatItem-Ed":"E d"}); \ No newline at end of file
+define("dojo/cldr/nls/en-gb/generic",{"field-year-narrow":"yr","field-second-narrow":"sec","dateFormatItem-MEd":"E dd/MM","dateFormatItem-MMMEd":"E d MMM","field-hour-narrow":"hr"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-gb/gregorian.js b/lib/dojo/cldr/nls/en-gb/gregorian.js
index 62591d7f0..93c9a2a9b 100644
--- a/lib/dojo/cldr/nls/en-gb/gregorian.js
+++ b/lib/dojo/cldr/nls/en-gb/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en-gb/gregorian",{"dateFormat-medium":"d MMM y","dateFormatItem-yMd":"dd/MM/y","dateFormatItem-MMMEd":"E d MMM","dateFormatItem-MEd":"E dd/MM","dateFormatItem-MMdd":"dd/MM","dateFormatItem-yMEd":"E, dd/MM/y","dateTimeFormat-medium":"{1} {0}","dateFormatItem-GyMMMd":"d MMM y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-Md":"dd/MM","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-M":"LL","dayPeriods-format-wide-pm":"p.m.","dateFormatItem-MMMMd":"d MMMM","dateTimeFormat-long":"{1} {0}","dayPeriods-format-wide-am":"a.m.","timeFormat-medium":"HH:mm:ss","dateFormat-long":"d MMMM y","field-dayperiod":"a.m./p.m.","dateFormat-short":"dd/MM/y","dateFormatItem-yMMMEd":"E, d MMM y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMMM":"MMMM y","dateTimeFormat-full":"{1} {0}","dateFormatItem-yM":"MM/y","timeFormat-short":"HH:mm","timeFormat-long":"HH:mm:ss z","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-MMMd":"d MMM","dateFormatItem-Ed":"E d"}); \ No newline at end of file
+define("dojo/cldr/nls/en-gb/gregorian",{"quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormat-medium":"d MMM y","dayPeriods-standAlone-narrow-noon":"noon","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateTimeFormat-medium":"{1}, {0}","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-EBhm":"E h:mm B","quarters-format-narrow":["1","2","3","4"],"months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"field-hour-narrow":"hr","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"],"dateTimeFormat-long":"{1} 'at' {0}","days-standAlone-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"yr","timeFormat-medium":"HH:mm:ss","field-second-narrow":"sec","dateFormat-long":"d MMMM y","dateFormat-short":"dd/MM/y","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateTimeFormat-short":"{1}, {0}","dateTimeFormat-full":"{1} 'at' {0}","days-format-narrow":["S","M","T","W","T","F","S"],"dayPeriods-standAlone-narrow-midnight":"midnight","timeFormat-short":"HH:mm","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"],"days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"timeFormat-long":"HH:mm:ss z","dateFormat-full":"EEEE, d MMMM y"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-gb/indian.js b/lib/dojo/cldr/nls/en-gb/indian.js
deleted file mode 100644
index 3279f49cc..000000000
--- a/lib/dojo/cldr/nls/en-gb/indian.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/en-gb/indian",{"months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"months-format-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"eraAbbr":["SAKA"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-dayperiod":"am/pm","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"]}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-gb/islamic.js b/lib/dojo/cldr/nls/en-gb/islamic.js
deleted file mode 100644
index 9591ea9d1..000000000
--- a/lib/dojo/cldr/nls/en-gb/islamic.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/en-gb/islamic",{"field-dayperiod":"am/pm","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dayPeriods-format-wide-pm":"pm","dateFormatItem-MMMEd":"E d MMM","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateTimeFormats-appendItem-Year":"{0} {1}","dateFormatItem-Gy":"y G","dayPeriods-format-wide-am":"am","dateFormatItem-y":"y G","dateFormatItem-yyyy":"y G","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"dateFormatItem-Ed":"E d","dateFormatItem-GyMMMd":"d MMM y G","dateFormat-long":"d MMMM y G","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyQQQQ":"QQQQ y G","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","dateFormatItem-MMMd":"d MMM","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"dateFormatItem-M":"LL","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-GyMMM":"MMM y G","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormatItem-MEd":"E dd/MM","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormat-short":"dd/MM/y GGGGG","dateFormatItem-yyyyM":"MM/y GGGGG","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-Md":"dd/MM","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dateFormatItem-yyyyMMM":"MMM y G","dateTimeFormats-appendItem-Era":"{0} {1}","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en-gb/japanese.js b/lib/dojo/cldr/nls/en-gb/japanese.js
deleted file mode 100644
index cdf6fcf14..000000000
--- a/lib/dojo/cldr/nls/en-gb/japanese.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/en-gb/japanese",{"dateFormat-short":"dd/MM/y GGGGG","dateFormat-medium":"d MMM y G","dateFormat-long":"d MMMM y G","field-dayperiod":"am/pm","dateFormat-full":"EEEE, d MMMM y G"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/buddhist.js b/lib/dojo/cldr/nls/en/buddhist.js
index fdd914380..1914908be 100644
--- a/lib/dojo/cldr/nls/en/buddhist.js
+++ b/lib/dojo/cldr/nls/en/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en/buddhist",{"field-second-relative+0":"now","field-weekday":"Day of the Week","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-GyMMMEd":"E, MMM d, y G","dateFormatItem-MMMEd":"E, MMM d","field-tue-relative+-1":"last Tuesday","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dateFormat-long":"MMMM d, y G","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, MMMM d, y G","dateFormatItem-yyyyMEd":"E, M/d/y GGGGG","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"M/d","field-era":"Era","timeFormat-short":"h:mm a","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"timeFormat-long":"h:mm:ss a z","field-year":"Year","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"today","field-thu-relative+0":"this Thursday","field-day-relative+1":"tomorrow","field-thu-relative+1":"next Thursday","dateFormatItem-GyMMMd":"MMM d, y G","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, MMM d, y G","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"MMM d, y G","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","eraAbbr":["BE"],"field-minute":"Minute","field-dayperiod":"am/pm","field-day-relative+-1":"yesterday","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-MEd":"E, M/d","dateTimeFormat-full":"{1} 'at' {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-zone":"Time Zone","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateTimeFormats-appendItem-Year":"{0} {1}","dateFormatItem-yyyyMd":"M/d/y GGGGG","field-month":"Month","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"M/d/y GGGGG","field-second":"Second","field-sat-relative+-1":"last Saturday","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateFormatItem-Ed":"d E","field-week":"Week","dateFormat-medium":"MMM d, y G","field-year-relative+0":"this year","field-week-relative+-1":"last week","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"next year","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"last Monday","dateFormatItem-yyyy":"y G","field-week-relative+0":"this week","field-week-relative+1":"next week"}); \ No newline at end of file
+define("dojo/cldr/nls/en/buddhist",{"field-quarter-short-relative+0":"this qtr.","dateTimeFormats-appendItem-Year":"{0} {1}","field-quarter-short-relative+1":"next qtr.","field-tue-relative+-1":"last Tuesday","field-year":"year","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","timeFormat-short":"h:mm a","field-minute":"minute","field-tue-narrow-relative+0":"this Tu","field-tue-narrow-relative+1":"next Tu","field-thu-short-relative+0":"this Thu.","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"next Thu.","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-wed-narrow-relative+-1":"last W","field-era-short":"era","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"weekday of the month","field-second-short":"sec.","dayPeriods-format-narrow-am":"a","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Su","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"this Mon.","field-sun-narrow-relative+1":"next Su","field-mon-short-relative+1":"next Mon.","field-second-relative+0":"now","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekOfMonth":"week of month","field-month-short":"mo.","dateFormatItem-GyMMMEd":"E, MMM d, y G","dateFormatItem-yyyyMd":"M/d/y GGGGG","field-day":"day","field-dayOfYear-short":"day of yr.","field-year-relative+-1":"last year","field-sat-short-relative+-1":"last Sat.","field-hour-relative+0":"this hour","dateFormatItem-yyyyMEd":"E, M/d/y GGGGG","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"last Sa","field-second":"second","dateFormat-long":"MMMM d, y G","dateFormatItem-GyMMMd":"MMM d, y G","field-quarter":"quarter","field-week-short":"wk.","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"field-tue-short-relative+0":"this Tue.","field-tue-short-relative+1":"next Tue.","field-month-short-relative+-1":"last mo.","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"MMM y G","field-month":"month","field-minute-short":"min.","field-dayperiod":"am/pm","field-sat-short-relative+0":"this Sat.","field-sat-short-relative+1":"next Sat.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"MMM d, y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["BE"],"dateFormatItem-yyyyM":"M/y GGGGG","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-year-short":"yr.","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"last quarter","dateFormatItem-yyyyMMMd":"MMM d, y G","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"field-dayOfYear":"day of year","field-sat-relative+-1":"last Saturday","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-Md":"M/d","field-hour":"hour","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateFormat-full":"EEEE, MMMM d, y G","field-month-relative+-1":"last month","field-quarter-short":"qtr.","field-sat-narrow-relative+0":"this Sa","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Sa","field-fri-relative+1":"next Friday","field-sun-short-relative+0":"this Sun.","field-sun-short-relative+1":"next Sun.","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last qtr.","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wed.","dateFormat-short":"M/d/y GGGGG","field-thu-short-relative+-1":"last Thu.","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-yyyyMMMEd":"E, MMM d, y G","field-mon-narrow-relative+-1":"last M","dateTimeFormats-appendItem-Era":"{0} {1}","field-thu-narrow-relative+-1":"last Th","field-tue-narrow-relative+-1":"last Tu","field-weekOfMonth-short":"wk. of mo.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"this Wed.","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"field-wed-short-relative+1":"next Wed.","field-sun-relative+-1":"last Sunday","dateTimeFormat-full":"{1} 'at' {0}","field-weekday":"day of the week","field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","field-week-short-relative+0":"this wk.","field-week-short-relative+1":"next wk.","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"field-month-short-relative+0":"this mo.","field-month-short-relative+1":"next mo.","field-weekdayOfMonth-short":"wkday. of mo.","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E, M/d","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"this Th","field-thu-narrow-relative+1":"next Th","field-sun-narrow-relative+-1":"last Su","field-mon-short-relative+-1":"last Mon.","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","field-fri-short-relative+-1":"last Fri.","field-thu-relative+-1":"last Thursday","field-week":"week","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"this W","field-wed-narrow-relative+1":"next W","field-year-short-relative+0":"this yr.","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"next yr.","field-fri-short-relative+0":"this Fri.","field-fri-short-relative+1":"next Fri.","days-standAlone-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"field-week-short-relative+-1":"last wk.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-zone-short":"zone","field-hour-short":"hr.","field-fri-narrow-relative+-1":"last F","field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","field-tue-short-relative+-1":"last Tue.","days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-mon-narrow-relative+0":"this M","field-mon-narrow-relative+1":"next M","field-year-short-relative+-1":"last yr.","field-zone":"time zone","dateFormatItem-MMMEd":"E, MMM d","field-sun-short-relative+-1":"last Sun.","field-day-relative+-1":"yesterday","field-weekday-short":"day of wk.","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateFormatItem-Gy":"y G","field-day-short":"day","field-era":"era","field-fri-narrow-relative+0":"this F","field-fri-narrow-relative+1":"next F"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/chinese.js b/lib/dojo/cldr/nls/en/chinese.js
index f8baa1816..e3fc20a2e 100644
--- a/lib/dojo/cldr/nls/en/chinese.js
+++ b/lib/dojo/cldr/nls/en/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en/chinese",{"dateFormatItem-Ehm":"E h:mm a","field-second-relative+0":"now","field-weekday":"Day of the Week","field-wed-relative+0":"this Wednesday","dateFormatItem-GyMMMEd":"E, MMM d, r(U)","dateFormatItem-MMMEd":"E, MMM d","field-wed-relative+1":"next Wednesday","field-tue-relative+-1":"last Tuesday","dateFormat-long":"MMMM d, r(U)","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","months-format-wide":["Month1","Month2","Month3","Month4","Month5","Month6","Month7","Month8","Month9","Month10","Month11","Month12"],"dateFormatItem-yyyyQQQ":"QQQ r(U)","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, MMMM d, r(U)","dateFormatItem-yyyyMEd":"E, M/d/r","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"M/d","dateFormatItem-yMd":"M/d/r","field-era":"Era","field-year":"Year","field-hour":"Hour","months-format-abbr":["Mo1","Mo2","Mo3","Mo4","Mo5","Mo6","Mo7","Mo8","Mo9","Mo10","Mo11","Mo12"],"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-thu-relative+0":"this Thursday","dateFormatItem-GyMMMd":"MMM d, r","field-thu-relative+1":"next Thursday","dateFormatItem-H":"HH","dateFormatItem-Gy":"r(U)","dateFormatItem-yyyyMMMEd":"E, MMM d, r(U)","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM r(U)","dateFormatItem-yyyyMMMd":"MMM d, r","field-sun-relative+0":"this Sunday","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"next Sunday","field-minute":"Minute","field-dayperiod":"am/pm","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"yesterday","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M/d","dateTimeFormat-full":"{1} 'at' {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","field-zone":"Time Zone","dateFormatItem-y":"r(U)","field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"M/d/r","field-month":"Month","dateFormatItem-MMM":"LLL","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"M/d/r","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"Second","field-sat-relative+-1":"last Saturday","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateFormatItem-Ed":"d E","field-week":"Week","dateFormat-medium":"MMM d, r","field-year-relative+0":"this year","field-week-relative+-1":"last week","dateFormatItem-yyyyM":"M/r","field-year-relative+1":"next year","dateFormatItem-yyyyQQQQ":"QQQQ r(U)","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM r(U)","field-mon-relative+-1":"last Monday","dateFormatItem-yyyy":"r(U)","field-week-relative+0":"this week","field-week-relative+1":"next week"}); \ No newline at end of file
+define("dojo/cldr/nls/en/chinese",{"field-quarter-short-relative+0":"this qtr.","field-quarter-short-relative+1":"next qtr.","field-tue-relative+-1":"last Tuesday","field-year":"year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","field-minute":"minute","field-tue-narrow-relative+0":"this Tu","field-tue-narrow-relative+1":"next Tu","field-thu-short-relative+0":"this Thu.","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"today","field-thu-short-relative+1":"next Thu.","field-day-relative+1":"tomorrow","field-wed-narrow-relative+-1":"last W","dateFormatItem-EBhms":"E h:mm:ss B","field-era-short":"era","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"weekday of the month","field-second-short":"sec.","dateFormatItem-MMMd":"MMM d","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Su","field-mon-short-relative+0":"this Mon.","field-sun-narrow-relative+1":"next Su","field-mon-short-relative+1":"next Mon.","field-second-relative+0":"now","dateFormatItem-yyyyQQQ":"QQQ r(U)","field-weekOfMonth":"week of month","field-month-short":"mo.","dateFormatItem-GyMMMEd":"E, MMM d, r(U)","dateFormatItem-yyyyMd":"M/d/r","field-day":"day","field-dayOfYear-short":"day of yr.","field-year-relative+-1":"last year","field-sat-short-relative+-1":"last Sat.","field-hour-relative+0":"this hour","dateFormatItem-yyyyMEd":"E, M/d/r","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"last Sa","field-second":"second","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"MMMM d, r(U)","dateFormatItem-GyMMMd":"MMM d, r","field-quarter":"quarter","field-week-short":"wk.","field-tue-short-relative+0":"this Tue.","field-tue-short-relative+1":"next Tue.","field-month-short-relative+-1":"last mo.","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"MMM r(U)","field-month":"month","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"am/pm","field-sat-short-relative+0":"this Sat.","field-sat-short-relative+1":"next Sat.","dateFormat-medium":"MMM d, r","dateFormatItem-yyyyMMMM":"MMMM r(U)","dateFormatItem-UMMM":"MMM U","dateFormatItem-yyyyM":"M/r","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-year-short":"yr.","field-quarter-relative+-1":"last quarter","dateFormatItem-yyyyMMMd":"MMM d, r","field-dayOfYear":"day of year","field-sat-relative+-1":"last Saturday","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-Md":"M/d","field-hour":"hour","months-format-wide":["First Month","Second Month","Third Month","Fourth Month","Fifth Month","Sixth Month","Seventh Month","Eighth Month","Ninth Month","Tenth Month","Eleventh Month","Twelfth Month"],"dateFormat-full":"EEEE, MMMM d, r(U)","dateFormatItem-UMd":"M/d/U","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"qtr.","field-sat-narrow-relative+0":"this Sa","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Sa","field-fri-relative+1":"next Friday","dateFormatItem-EBhm":"E h:mm B","field-sun-short-relative+0":"this Sun.","field-sun-short-relative+1":"next Sun.","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last qtr.","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Mo1","Mo2","Mo3","Mo4","Mo5","Mo6","Mo7","Mo8","Mo9","Mo10","Mo11","Mo12"],"field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wed.","dateFormat-short":"M/d/r","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"last Thu.","dateFormatItem-yyyyMMMEd":"E, MMM d, r(U)","field-mon-narrow-relative+-1":"last M","dateFormatItem-MMMMd":"MMMM d","field-thu-narrow-relative+-1":"last Th","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"last Tu","dateFormatItem-H":"HH","field-weekOfMonth-short":"wk. of mo.","dateFormatItem-yyyy":"r(U)","field-wed-short-relative+0":"this Wed.","dateFormatItem-M":"L","field-wed-short-relative+1":"next Wed.","field-sun-relative+-1":"last Sunday","dateTimeFormat-full":"{1} 'at' {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"day of the week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","field-week-short-relative+0":"this wk.","field-week-short-relative+1":"next wk.","field-month-short-relative+0":"this mo.","field-month-short-relative+1":"next mo.","field-weekdayOfMonth-short":"wkday. of mo.","dateFormatItem-MEd":"E, M/d","dateFormatItem-y":"r(U)","field-thu-narrow-relative+0":"this Th","field-sun-narrow-relative+-1":"last Su","field-mon-short-relative+-1":"last Mon.","field-thu-narrow-relative+1":"next Th","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"last Fri.","field-thu-relative+-1":"last Thursday","dateFormatItem-yMd":"M/d/r","field-week":"week","dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"this W","field-wed-narrow-relative+1":"next W","field-year-short-relative+0":"this yr.","dateFormatItem-yyyyMMM":"MMM r(U)","field-dayperiod-short":"am/pm","field-year-short-relative+1":"next yr.","field-fri-short-relative+0":"this Fri.","field-fri-short-relative+1":"next Fri.","field-week-short-relative+-1":"last wk.","dateFormatItem-yyyyQQQQ":"QQQQ r(U)","dateFormatItem-UMMMd":"MMM d, U","field-hour-short":"hr.","field-zone-short":"zone","field-fri-narrow-relative+-1":"last F","field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"last Tue.","field-mon-narrow-relative+0":"this M","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"next M","field-year-short-relative+-1":"last yr.","field-zone":"time zone","dateFormatItem-MMMEd":"E, MMM d","dateFormatItem-EHms":"E HH:mm:ss","field-sun-short-relative+-1":"last Sun.","field-day-relative+-1":"yesterday","field-weekday-short":"day of wk.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateFormatItem-Gy":"r(U)","field-day-short":"day","field-era":"era","field-fri-narrow-relative+0":"this F","dateFormatItem-UM":"M/U","field-fri-narrow-relative+1":"next F"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/generic.js b/lib/dojo/cldr/nls/en/generic.js
index 8e72df3be..3b282433b 100644
--- a/lib/dojo/cldr/nls/en/generic.js
+++ b/lib/dojo/cldr/nls/en/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en/generic",{"dateFormatItem-Ehm":"E h:mm a","field-second-relative+0":"now","field-weekday":"Day of the Week","field-wed-relative+0":"this Wednesday","dateFormatItem-GyMMMEd":"E, MMM d, y G","dateFormatItem-MMMEd":"E, MMM d","field-wed-relative+1":"next Wednesday","field-tue-relative+-1":"last Tuesday","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"MMMM d, y G","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, MMMM d, y G","dateFormatItem-yyyyMEd":"E, M/d/y GGGGG","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"M/d","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-era":"Era","field-year":"Year","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-thu-relative+0":"this Thursday","dateFormatItem-GyMMMd":"MMM d, y G","field-thu-relative+1":"next Thursday","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, MMM d, y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"MMM d, y G","field-sun-relative+0":"this Sunday","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"next Sunday","field-minute":"Minute","field-dayperiod":"am/pm","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"yesterday","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M/d","dateTimeFormat-full":"{1} 'at' {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","field-zone":"Time Zone","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y G","field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateFormatItem-yyyyMd":"M/d/y GGGGG","field-month":"Month","dateFormatItem-MMM":"LLL","field-tue-relative+0":"this Tuesday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-relative+1":"next Tuesday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"M/d/y GGGGG","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"Second","field-sat-relative+-1":"last Saturday","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateFormatItem-Ed":"d E","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Week","dateFormat-medium":"MMM d, y G","field-year-relative+0":"this year","field-week-relative+-1":"last week","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"next year","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"last Monday","dateFormatItem-yyyy":"y G","field-week-relative+0":"this week","field-week-relative+1":"next week"}); \ No newline at end of file
+define("dojo/cldr/nls/en/generic",{"field-quarter-short-relative+0":"this qtr.","dateTimeFormats-appendItem-Year":"{0} {1}","field-quarter-short-relative+1":"next qtr.","field-tue-relative+-1":"last Tuesday","field-year":"year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","field-minute":"minute","field-tue-narrow-relative+0":"this Tu","field-tue-narrow-relative+1":"next Tu","field-thu-short-relative+0":"this Thu.","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"today","field-thu-short-relative+1":"next Thu.","field-day-relative+1":"tomorrow","field-wed-narrow-relative+-1":"last W","dateFormatItem-EBhms":"E h:mm:ss B","field-era-short":"era","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"weekday of the month","field-second-short":"sec.","dateFormatItem-MMMd":"MMM d","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Su","field-mon-short-relative+0":"this Mon.","field-sun-narrow-relative+1":"next Su","field-mon-short-relative+1":"next Mon.","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"week of month","field-month-short":"mo.","dateFormatItem-GyMMMEd":"E, MMM d, y G","dateFormatItem-yyyyMd":"M/d/y GGGGG","field-day":"day","field-dayOfYear-short":"day of yr.","field-year-relative+-1":"last year","field-sat-short-relative+-1":"last Sat.","field-hour-relative+0":"this hour","dateFormatItem-yyyyMEd":"E, M/d/y GGGGG","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"last Sa","field-second":"second","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"MMMM d, y G","dateFormatItem-GyMMMd":"MMM d, y G","field-quarter":"quarter","field-week-short":"wk.","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"this Tue.","field-tue-short-relative+1":"next Tue.","field-month-short-relative+-1":"last mo.","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"MMM y G","field-month":"month","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"am/pm","field-sat-short-relative+0":"this Sat.","field-sat-short-relative+1":"next Sat.","dateFormat-medium":"MMM d, y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M/y GGGGG","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-year-short":"yr.","field-quarter-relative+-1":"last quarter","dateFormatItem-yyyyMMMd":"MMM d, y G","field-dayOfYear":"day of year","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-Md":"M/d","field-hour":"hour","dateFormat-full":"EEEE, MMMM d, y G","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"qtr.","field-sat-narrow-relative+0":"this Sa","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Sa","field-fri-relative+1":"next Friday","dateFormatItem-EBhm":"E h:mm B","field-sun-short-relative+0":"this Sun.","field-sun-short-relative+1":"next Sun.","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last qtr.","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wed.","dateFormat-short":"M/d/y GGGGG","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"last Thu.","dateFormatItem-yyyyMMMEd":"E, MMM d, y G","field-mon-narrow-relative+-1":"last M","dateTimeFormats-appendItem-Era":"{0} {1}","dateFormatItem-MMMMd":"MMMM d","field-thu-narrow-relative+-1":"last Th","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"last Tu","dateFormatItem-H":"HH","field-weekOfMonth-short":"wk. of mo.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"this Wed.","dateFormatItem-M":"L","field-wed-short-relative+1":"next Wed.","field-sun-relative+-1":"last Sunday","dateTimeFormat-full":"{1} 'at' {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"day of the week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","field-week-short-relative+0":"this wk.","field-week-short-relative+1":"next wk.","field-month-short-relative+0":"this mo.","field-month-short-relative+1":"next mo.","field-weekdayOfMonth-short":"wkday. of mo.","dateFormatItem-MEd":"E, M/d","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"this Th","field-sun-narrow-relative+-1":"last Su","field-mon-short-relative+-1":"last Mon.","field-thu-narrow-relative+1":"next Th","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Fri.","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","field-week":"week","dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"this W","field-wed-narrow-relative+1":"next W","field-year-short-relative+0":"this yr.","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"next yr.","field-fri-short-relative+0":"this Fri.","field-fri-short-relative+1":"next Fri.","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-week-short-relative+-1":"last wk.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"hr.","field-zone-short":"zone","field-fri-narrow-relative+-1":"last F","field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"last Tue.","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-mon-narrow-relative+0":"this M","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"next M","field-year-short-relative+-1":"last yr.","field-zone":"time zone","dateFormatItem-MMMEd":"E, MMM d","dateFormatItem-EHms":"E HH:mm:ss","field-sun-short-relative+-1":"last Sun.","field-day-relative+-1":"yesterday","field-weekday-short":"day of wk.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"y G","field-day-short":"day","field-era":"era","field-fri-narrow-relative+0":"this F","field-fri-narrow-relative+1":"next F"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/gregorian.js b/lib/dojo/cldr/nls/en/gregorian.js
index 736fe7c1d..9a09369be 100644
--- a/lib/dojo/cldr/nls/en/gregorian.js
+++ b/lib/dojo/cldr/nls/en/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"now","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, M/d/y","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-GyMMMEd":"E, MMM d, y G","dateFormatItem-MMMEd":"E, MMM d","eraNarrow":["B","A"],"field-tue-relative+-1":"last Tuesday","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"MMMM d, y","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, MMMM d, y","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"M/d","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dayPeriods-format-wide-noon":"noon","dateFormatItem-yMd":"M/d/y","field-era":"Era","dateFormatItem-yM":"M/y","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"timeFormat-short":"h:mm a","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-yQQQQ":"QQQQ y","timeFormat-long":"h:mm:ss a z","field-year":"Year","dateFormatItem-yMMM":"MMM y","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","timeFormat-full":"h:mm:ss a zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"today","field-thu-relative+0":"this Thursday","field-day-relative+1":"tomorrow","field-thu-relative+1":"next Thursday","dateFormatItem-GyMMMd":"MMM d, y G","dateFormatItem-H":"HH","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"this Sunday","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"next Sunday","eraAbbr":["BC","AD"],"field-minute":"Minute","field-dayperiod":"am/pm","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"yesterday","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'at' {0}","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"E, M/d","dateTimeFormat-full":"{1} 'at' {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-zone":"Time Zone","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Year":"{0} {1}","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yMMMd":"MMM d, y","eraNames":["Before Christ","Anno Domini"],"days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-MMM":"LLL","field-month":"Month","field-tue-relative+0":"this Tuesday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-relative+1":"next Tuesday","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"M/d/yy","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-noon":"n","field-second":"Second","field-sat-relative+-1":"last Saturday","dateFormatItem-yMMMEd":"E, MMM d, y","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateFormatItem-Ed":"d E","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Week","dateFormat-medium":"MMM d, y","field-year-relative+0":"this year","field-week-relative+-1":"last week","field-year-relative+1":"next year","dayPeriods-format-narrow-pm":"p","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"last Monday","field-week-relative+0":"this week","field-week-relative+1":"next week"}); \ No newline at end of file
+define("dojo/cldr/nls/en/gregorian",{"field-quarter-short-relative+0":"this qtr.","dateTimeFormats-appendItem-Year":"{0} {1}","field-quarter-short-relative+1":"next qtr.","dayPeriods-standAlone-abbr-noon":"noon","field-tue-relative+-1":"last Tuesday","field-year":"year","dateFormatItem-yw":"'week' w 'of' Y","dayPeriods-format-abbr-afternoon1":"in the afternoon","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"h:mm a","field-minute":"minute","field-tue-narrow-relative+0":"this Tu","field-tue-narrow-relative+1":"next Tu","field-thu-short-relative+0":"this Thu.","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"next Thu.","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-wed-narrow-relative+-1":"last W","dateFormatItem-EBhms":"E h:mm:ss B","field-era-short":"era","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"weekday of the month","field-second-short":"sec.","dayPeriods-format-narrow-am":"a","dayPeriods-standAlone-abbr-morning1":"morning","dateFormatItem-MMMd":"MMM d","dayPeriods-format-narrow-morning1":"in the morning","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Su","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"this Mon.","field-sun-narrow-relative+1":"next Su","field-mon-short-relative+1":"next Mon.","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dayPeriods-standAlone-wide-noon":"noon","eraNames":["Before Christ","Anno Domini"],"field-weekOfMonth":"week of month","dayPeriods-standAlone-abbr-pm":"PM","field-month-short":"mo.","dateFormatItem-GyMMMEd":"E, MMM d, y G","field-day":"day","dayPeriods-standAlone-wide-night1":"night","field-dayOfYear-short":"day of yr.","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","field-sat-short-relative+-1":"last Sat.","dayPeriods-format-narrow-afternoon1":"in the afternoon","dayPeriods-format-wide-afternoon1":"in the afternoon","field-hour-relative+0":"this hour","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"last Sa","field-second":"second","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"MMMM d, y","dateFormatItem-GyMMMd":"MMM d, y G","dayPeriods-standAlone-abbr-midnight":"midnight","field-quarter":"quarter","field-week-short":"wk.","dayPeriods-format-narrow-midnight":"mi","dateFormatItem-yMMMEd":"E, MMM d, y","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dayPeriods-format-wide-evening1":"in the evening","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"this Tue.","field-tue-short-relative+1":"next Tue.","field-month-short-relative+-1":"last mo.","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"MMM y G","field-month":"month","dayPeriods-standAlone-abbr-night1":"night","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"am/pm","field-sat-short-relative+0":"this Sat.","field-sat-short-relative+1":"next Sat.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"MMM d, y","eraAbbr":["BC","AD"],"dayPeriods-format-abbr-pm":"PM","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-year-short":"yr.","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dayPeriods-format-wide-morning1":"in the morning","field-quarter-relative+-1":"last quarter","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dayPeriods-format-wide-pm":"PM","field-dayOfYear":"day of year","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-Md":"M/d","field-hour":"hour","dateFormatItem-yQQQQ":"QQQQ y","months-format-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"dayPeriods-format-wide-night1":"at night","dateFormat-full":"EEEE, MMMM d, y","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"qtr.","field-sat-narrow-relative+0":"this Sa","dateFormatItem-Hmv":"HH:mm v","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Sa","field-fri-relative+1":"next Friday","dateFormatItem-EBhm":"E h:mm B","dayPeriods-format-narrow-noon":"n","field-sun-short-relative+0":"this Sun.","field-sun-short-relative+1":"next Sun.","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last qtr.","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dayPeriods-format-wide-midnight":"midnight","field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wed.","dateFormatItem-yMMM":"MMM y","dateFormat-short":"M/d/yy","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"last Thu.","dayPeriods-format-abbr-night1":"at night","dateFormatItem-MMMMW":"'week' W 'of' MMMM","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-mon-narrow-relative+-1":"last M","dateTimeFormats-appendItem-Era":"{0} {1}","dateFormatItem-MMMMd":"MMMM d","field-thu-narrow-relative+-1":"last Th","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"wk. of mo.","field-tue-narrow-relative+-1":"last Tu","dayPeriods-format-abbr-evening1":"in the evening","dateFormatItem-M":"L","field-wed-short-relative+0":"this Wed.","months-standAlone-wide":["January","February","March","April","May","June","July","August","September","October","November","December"],"field-wed-short-relative+1":"next Wed.","dateFormatItem-Hmsv":"HH:mm:ss v","field-sun-relative+-1":"last Sunday","dateTimeFormat-full":"{1} 'at' {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"day of the week","dayPeriods-standAlone-wide-evening1":"evening","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","field-week-short-relative+0":"this wk.","dateFormatItem-hmsv":"h:mm:ss a v","field-week-short-relative+1":"next wk.","months-standAlone-abbr":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"dayPeriods-format-abbr-morning1":"in the morning","field-month-short-relative+0":"this mo.","timeFormat-full":"h:mm:ss a zzzz","field-month-short-relative+1":"next mo.","field-weekdayOfMonth-short":"wkday. of mo.","dateFormatItem-MEd":"E, M/d","dateFormatItem-y":"y","field-thu-narrow-relative+0":"this Th","field-sun-narrow-relative+-1":"last Su","field-mon-short-relative+-1":"last Mon.","field-thu-narrow-relative+1":"next Th","field-thu-relative+0":"this Thursday","dayPeriods-standAlone-abbr-afternoon1":"afternoon","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Fri.","dateFormatItem-hmv":"h:mm a v","dayPeriods-format-abbr-noon":"noon","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","dateFormatItem-yMd":"M/d/y","quarters-standAlone-narrow":["1","2","3","4"],"field-week":"week","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"this W","field-wed-narrow-relative+1":"next W","dayPeriods-standAlone-wide-morning1":"morning","field-year-short-relative+0":"this yr.","field-dayperiod-short":"am/pm","field-year-short-relative+1":"next yr.","field-fri-short-relative+0":"this Fri.","field-fri-short-relative+1":"next Fri.","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"field-week-short-relative+-1":"last wk.","dayPeriods-format-abbr-midnight":"midnight","field-hour-short":"hr.","field-zone-short":"zone","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-fri-narrow-relative+-1":"last F","field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","eraNarrow":["B","A"],"dateFormatItem-Bhms":"h:mm:ss B","dayPeriods-format-wide-noon":"noon","field-tue-short-relative+-1":"last Tue.","dayPeriods-standAlone-wide-afternoon1":"afternoon","dateFormatItem-yQQQ":"QQQ y","days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-mon-narrow-relative+0":"this M","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"next M","dayPeriods-standAlone-wide-midnight":"midnight","field-year-short-relative+-1":"last yr.","dateFormatItem-yM":"M/y","field-zone":"time zone","dateFormatItem-yMMMM":"MMMM y","dateFormatItem-MMMEd":"E, MMM d","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-yMEd":"E, M/d/y","dayPeriods-standAlone-abbr-am":"AM","field-day-relative+-1":"yesterday","field-sun-short-relative+-1":"last Sun.","dayPeriods-format-narrow-night1":"at night","field-weekday-short":"day of wk.","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateFormatItem-yMMMd":"MMM d, y","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"y G","field-era":"era","field-day-short":"day","dayPeriods-standAlone-abbr-evening1":"evening","field-fri-narrow-relative+0":"this F","dayPeriods-format-narrow-evening1":"in the evening","field-fri-narrow-relative+1":"next F","dayPeriods-standAlone-wide-am":"AM"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/hebrew.js b/lib/dojo/cldr/nls/en/hebrew.js
index bdffe84f7..8696f04df 100644
--- a/lib/dojo/cldr/nls/en/hebrew.js
+++ b/lib/dojo/cldr/nls/en/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en/hebrew",{"field-second-relative+0":"now","field-weekday":"Day of the Week","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"last Tuesday","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y","dateFormatItem-yyyyMEd":"E, M/d/y GGGGG","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"d MMM","field-era":"Era","timeFormat-short":"h:mm a","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"timeFormat-long":"h:mm:ss a z","field-year":"Year","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"today","field-thu-relative+0":"this Thursday","field-day-relative+1":"tomorrow","field-thu-relative+1":"next Thursday","dateFormatItem-GyMMMd":"d MMM y G","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, MMM d, y G","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"MMM d, y G","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","eraAbbr":["AM"],"field-minute":"Minute","field-dayperiod":"am/pm","field-day-relative+-1":"yesterday","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-MEd":"E, d MMM","dateTimeFormat-full":"{1} 'at' {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-zone":"Time Zone","dateFormatItem-y":"y","field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateTimeFormats-appendItem-Year":"{0} {1}","dateFormatItem-yyyyMd":"M/d/y GGGGG","field-month":"Month","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"d MMM y","field-second":"Second","field-sat-relative+-1":"last Saturday","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateFormatItem-Ed":"d E","field-week":"Week","dateFormat-medium":"d MMM y","field-year-relative+0":"this year","field-week-relative+-1":"last week","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"next year","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"last Monday","dateFormatItem-yyyy":"y G","field-week-relative+0":"this week","field-week-relative+1":"next week"}); \ No newline at end of file
+define("dojo/cldr/nls/en/hebrew",{"field-quarter-short-relative+0":"this qtr.","dateTimeFormats-appendItem-Year":"{0} {1}","field-quarter-short-relative+1":"next qtr.","field-tue-relative+-1":"last Tuesday","field-year":"year","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","timeFormat-short":"h:mm a","field-minute":"minute","field-tue-narrow-relative+0":"this Tu","field-tue-narrow-relative+1":"next Tu","field-thu-short-relative+0":"this Thu.","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"next Thu.","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-wed-narrow-relative+-1":"last W","field-era-short":"era","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"weekday of the month","field-second-short":"sec.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d MMM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Su","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"this Mon.","field-sun-narrow-relative+1":"next Su","field-mon-short-relative+1":"next Mon.","field-second-relative+0":"now","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"week of month","field-month-short":"mo.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"M/d/y GGGGG","field-day":"day","field-dayOfYear-short":"day of yr.","field-year-relative+-1":"last year","field-sat-short-relative+-1":"last Sat.","field-hour-relative+0":"this hour","dateFormatItem-yyyyMEd":"E, M/d/y GGGGG","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"last Sa","field-second":"second","dateFormat-long":"d MMMM y","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"quarter","field-week-short":"wk.","dateFormatItem-yMMMEd":"E, d MMM y","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"field-tue-short-relative+0":"this Tue.","field-tue-short-relative+1":"next Tue.","field-month-short-relative+-1":"last mo.","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"MMM y G","field-month":"month","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"am/pm","field-sat-short-relative+0":"this Sat.","field-sat-short-relative+1":"next Sat.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d MMM y","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AM"],"dateFormatItem-yyyyM":"M/y GGGGG","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-year-short":"yr.","field-quarter-relative+-1":"last quarter","dateFormatItem-yyyyMMMd":"MMM d, y G","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"field-dayOfYear":"day of year","field-sat-relative+-1":"last Saturday","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-Md":"d MMM","field-hour":"hour","dateFormatItem-yQQQQ":"QQQQ y","dateFormat-full":"EEEE, d MMMM y","field-month-relative+-1":"last month","field-quarter-short":"qtr.","field-sat-narrow-relative+0":"this Sa","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Sa","field-fri-relative+1":"next Friday","field-sun-short-relative+0":"this Sun.","field-sun-short-relative+1":"next Sun.","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last qtr.","field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wed.","dateFormatItem-yMMM":"MMM y","dateFormat-short":"d MMM y","field-thu-short-relative+-1":"last Thu.","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-yyyyMMMEd":"E, MMM d, y G","field-mon-narrow-relative+-1":"last M","dateTimeFormats-appendItem-Era":"{0} {1}","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"last Th","field-tue-narrow-relative+-1":"last Tu","field-weekOfMonth-short":"wk. of mo.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"this Wed.","dateFormatItem-M":"L","field-wed-short-relative+1":"next Wed.","field-sun-relative+-1":"last Sunday","dateTimeFormat-full":"{1} 'at' {0}","field-weekday":"day of the week","field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","field-week-short-relative+0":"this wk.","field-week-short-relative+1":"next wk.","field-month-short-relative+0":"this mo.","field-month-short-relative+1":"next mo.","field-weekdayOfMonth-short":"wkday. of mo.","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E, d MMM","dateFormatItem-y":"y","field-thu-narrow-relative+0":"this Th","field-thu-narrow-relative+1":"next Th","field-sun-narrow-relative+-1":"last Su","field-mon-short-relative+-1":"last Mon.","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","field-fri-short-relative+-1":"last Fri.","field-thu-relative+-1":"last Thursday","dateFormatItem-yMd":"d MMM y","field-week":"week","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"this W","field-wed-narrow-relative+1":"next W","field-year-short-relative+0":"this yr.","field-dayperiod-short":"am/pm","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"next yr.","field-fri-short-relative+0":"this Fri.","field-fri-short-relative+1":"next Fri.","days-standAlone-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"field-week-short-relative+-1":"last wk.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"hr.","field-zone-short":"zone","field-fri-narrow-relative+-1":"last F","field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","field-tue-short-relative+-1":"last Tue.","dateFormatItem-yQQQ":"QQQ y","days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-mon-narrow-relative+0":"this M","field-mon-narrow-relative+1":"next M","field-year-short-relative+-1":"last yr.","dateFormatItem-yM":"MMM y","field-zone":"time zone","dateFormatItem-yMMMM":"MMMM y","dateFormatItem-MMMEd":"E, d MMM","dateFormatItem-yMEd":"E, d MMM y","field-sun-short-relative+-1":"last Sun.","field-day-relative+-1":"yesterday","field-weekday-short":"day of wk.","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-Gy":"y G","field-day-short":"day","field-era":"era","field-fri-narrow-relative+0":"this F","field-fri-narrow-relative+1":"next F"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/islamic.js b/lib/dojo/cldr/nls/en/islamic.js
index 9d6d06f34..54353ecf5 100644
--- a/lib/dojo/cldr/nls/en/islamic.js
+++ b/lib/dojo/cldr/nls/en/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en/islamic",{"field-second-relative+0":"now","field-weekday":"Day of the Week","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-GyMMMEd":"E, MMM d, y G","dateFormatItem-MMMEd":"E, MMM d","field-tue-relative+-1":"last Tuesday","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"dateFormat-long":"MMMM d, y G","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, MMMM d, y G","dateFormatItem-yyyyMEd":"E, M/d/y GGGGG","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"M/d","field-era":"Era","timeFormat-short":"h:mm a","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"timeFormat-long":"h:mm:ss a z","field-year":"Year","dateTimeFormats-appendItem-Era":"{0} {1}","field-hour":"Hour","field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","timeFormat-full":"h:mm:ss a zzzz","field-day-relative+0":"today","field-thu-relative+0":"this Thursday","field-day-relative+1":"tomorrow","field-thu-relative+1":"next Thursday","dateFormatItem-GyMMMd":"MMM d, y G","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, MMM d, y G","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"MMM d, y G","timeFormat-medium":"h:mm:ss a","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","eraAbbr":["AH"],"field-minute":"Minute","field-dayperiod":"am/pm","field-day-relative+-1":"yesterday","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-MEd":"E, M/d","dateTimeFormat-full":"{1} 'at' {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-zone":"Time Zone","dateFormatItem-y":"y G","field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateTimeFormats-appendItem-Year":"{0} {1}","dateFormatItem-yyyyMd":"M/d/y GGGGG","field-month":"Month","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"M/d/y GGGGG","field-second":"Second","field-sat-relative+-1":"last Saturday","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateFormatItem-Ed":"d E","field-week":"Week","dateFormat-medium":"MMM d, y G","field-year-relative+0":"this year","field-week-relative+-1":"last week","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"next year","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"last Monday","dateFormatItem-yyyy":"y G","field-week-relative+0":"this week","field-week-relative+1":"next week"}); \ No newline at end of file
+define("dojo/cldr/nls/en/islamic",{"field-quarter-short-relative+0":"this qtr.","dateTimeFormats-appendItem-Year":"{0} {1}","field-quarter-short-relative+1":"next qtr.","field-tue-relative+-1":"last Tuesday","field-year":"year","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","timeFormat-short":"h:mm a","field-minute":"minute","field-tue-narrow-relative+0":"this Tu","field-tue-narrow-relative+1":"next Tu","field-thu-short-relative+0":"this Thu.","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"next Thu.","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-wed-narrow-relative+-1":"last W","field-era-short":"era","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"weekday of the month","field-second-short":"sec.","dayPeriods-format-narrow-am":"a","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Su","timeFormat-medium":"h:mm:ss a","field-mon-short-relative+0":"this Mon.","field-sun-narrow-relative+1":"next Su","field-mon-short-relative+1":"next Mon.","field-second-relative+0":"now","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"week of month","field-month-short":"mo.","dateFormatItem-GyMMMEd":"E, MMM d, y G","dateFormatItem-yyyyMd":"M/d/y GGGGG","field-day":"day","field-dayOfYear-short":"day of yr.","field-year-relative+-1":"last year","field-sat-short-relative+-1":"last Sat.","field-hour-relative+0":"this hour","dateFormatItem-yyyyMEd":"E, M/d/y GGGGG","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"last Sa","field-second":"second","dateFormat-long":"MMMM d, y G","dateFormatItem-GyMMMd":"MMM d, y G","field-quarter":"quarter","field-week-short":"wk.","quarters-standAlone-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"field-tue-short-relative+0":"this Tue.","field-tue-short-relative+1":"next Tue.","field-month-short-relative+-1":"last mo.","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"MMM y G","field-month":"month","field-minute-short":"min.","field-dayperiod":"am/pm","field-sat-short-relative+0":"this Sat.","field-sat-short-relative+1":"next Sat.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"MMM d, y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AH"],"dateFormatItem-yyyyM":"M/y GGGGG","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-year-short":"yr.","field-quarter-relative+-1":"last quarter","dateFormatItem-yyyyMMMd":"MMM d, y G","days-format-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"field-dayOfYear":"day of year","field-sat-relative+-1":"last Saturday","dateTimeFormat-long":"{1} 'at' {0}","dateFormatItem-Md":"M/d","field-hour":"hour","dateFormat-full":"EEEE, MMMM d, y G","field-month-relative+-1":"last month","field-quarter-short":"qtr.","field-sat-narrow-relative+0":"this Sa","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Sa","field-fri-relative+1":"next Friday","field-sun-short-relative+0":"this Sun.","field-sun-short-relative+1":"next Sun.","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last qtr.","field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","timeFormat-long":"h:mm:ss a z","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wed.","dateFormat-short":"M/d/y GGGGG","field-thu-short-relative+-1":"last Thu.","days-standAlone-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dateFormatItem-yyyyMMMEd":"E, MMM d, y G","field-mon-narrow-relative+-1":"last M","dateTimeFormats-appendItem-Era":"{0} {1}","field-thu-narrow-relative+-1":"last Th","field-tue-narrow-relative+-1":"last Tu","field-weekOfMonth-short":"wk. of mo.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"this Wed.","field-wed-short-relative+1":"next Wed.","field-sun-relative+-1":"last Sunday","dateTimeFormat-full":"{1} 'at' {0}","field-weekday":"day of the week","field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","field-week-short-relative+0":"this wk.","field-week-short-relative+1":"next wk.","field-month-short-relative+0":"this mo.","field-month-short-relative+1":"next mo.","field-weekdayOfMonth-short":"wkday. of mo.","timeFormat-full":"h:mm:ss a zzzz","dateFormatItem-MEd":"E, M/d","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"this Th","field-thu-narrow-relative+1":"next Th","field-sun-narrow-relative+-1":"last Su","field-mon-short-relative+-1":"last Mon.","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","field-fri-short-relative+-1":"last Fri.","field-thu-relative+-1":"last Thursday","field-week":"week","quarters-format-wide":["1st quarter","2nd quarter","3rd quarter","4th quarter"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"this W","field-wed-narrow-relative+1":"next W","field-year-short-relative+0":"this yr.","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"next yr.","field-fri-short-relative+0":"this Fri.","field-fri-short-relative+1":"next Fri.","days-standAlone-short":["Su","Mo","Tu","We","Th","Fr","Sa"],"field-week-short-relative+-1":"last wk.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-zone-short":"zone","field-hour-short":"hr.","field-fri-narrow-relative+-1":"last F","field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","field-tue-short-relative+-1":"last Tue.","days-format-wide":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"field-mon-narrow-relative+0":"this M","field-mon-narrow-relative+1":"next M","field-year-short-relative+-1":"last yr.","field-zone":"time zone","dateFormatItem-MMMEd":"E, MMM d","field-sun-short-relative+-1":"last Sun.","field-day-relative+-1":"yesterday","field-weekday-short":"day of wk.","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateFormatItem-Gy":"y G","field-day-short":"day","field-era":"era","field-fri-narrow-relative+0":"this F","field-fri-narrow-relative+1":"next F"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/japanese.js b/lib/dojo/cldr/nls/en/japanese.js
index cb0c90b20..0391eb4ed 100644
--- a/lib/dojo/cldr/nls/en/japanese.js
+++ b/lib/dojo/cldr/nls/en/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en/japanese",{"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","field-dayperiod":"am/pm","field-sun-relative+-1":"last Sunday","field-mon-relative+-1":"last Monday","field-minute":"Minute","field-day-relative+-1":"yesterday","field-weekday":"Day of the Week","field-era":"Era","field-hour":"Hour","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","field-wed-relative+-1":"last Wednesday","field-day-relative+0":"today","field-day-relative+1":"tomorrow","dateFormat-long":"MMMM d, y G","field-tue-relative+0":"this Tuesday","field-zone":"Time Zone","field-tue-relative+1":"next Tuesday","field-week-relative+-1":"last week","dateFormat-medium":"MMM d, y G","field-year-relative+0":"this year","field-year-relative+1":"next year","field-sat-relative+-1":"last Saturday","field-year-relative+-1":"last year","field-year":"Year","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-week":"Week","field-week-relative+0":"this week","field-week-relative+1":"next week","field-month-relative+0":"this month","field-month":"Month","field-month-relative+1":"next month","field-fri-relative+-1":"last Friday","field-second":"Second","field-tue-relative+-1":"last Tuesday","field-day":"Day","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-thu-relative+0":"this Thursday","field-second-relative+0":"now","dateFormat-short":"M/d/y GGGGG","field-thu-relative+1":"next Thursday","dateFormat-full":"EEEE, MMMM d, y G","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","field-month-relative+-1":"last month","field-thu-relative+-1":"last Thursday"}); \ No newline at end of file
+define("dojo/cldr/nls/en/japanese",{"field-second-relative+0":"now","field-quarter-relative+-1":"last quarter","field-weekday":"day of the week","field-mon-narrow-relative+0":"this M","field-mon-narrow-relative+1":"next M","field-weekOfMonth-short":"wk. of mo.","field-weekday-short":"day of wk.","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","field-dayperiod-short":"am/pm","field-week-short":"wk.","field-tue-relative+-1":"last Tuesday","field-year-short":"yr.","field-thu-narrow-relative+-1":"last Th","field-hour-relative+0":"this hour","dateFormat-long":"MMMM d, y G","field-fri-relative+-1":"last Friday","field-hour-short":"hr.","field-wed-relative+-1":"last Wednesday","field-dayOfYear":"day of year","dateFormat-full":"EEEE, MMMM d, y G","field-mon-short-relative+-1":"last Mon.","field-thu-relative+-1":"last Thursday","field-era":"era","field-sat-narrow-relative+0":"this Sa","field-sat-narrow-relative+1":"next Sa","field-year":"year","field-hour":"hour","field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","field-sat-short-relative+-1":"last Sat.","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-thu-relative+0":"this Thursday","field-mon-narrow-relative+-1":"last M","field-wed-narrow-relative+0":"this W","field-thu-relative+1":"next Thursday","field-wed-narrow-relative+1":"next W","field-mon-short-relative+0":"this Mon.","field-mon-short-relative+1":"next Mon.","field-weekdayOfMonth-short":"wkday. of mo.","field-wed-short-relative+-1":"last Wed.","field-fri-narrow-relative+-1":"last F","field-tue-short-relative+0":"this Tue.","field-tue-short-relative+1":"next Tue.","field-minute-short":"min.","field-wed-short-relative+0":"this Wed.","field-wed-short-relative+1":"next Wed.","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","field-year-short-relative+0":"this yr.","field-minute":"minute","field-month-short":"mo.","field-year-short-relative+1":"next yr.","field-dayperiod":"am/pm","field-day-relative+-1":"yesterday","field-minute-relative+0":"this minute","field-wed-narrow-relative+-1":"last W","field-day-short":"day","field-quarter-relative+0":"this quarter","field-quarter-relative+1":"next quarter","field-zone-short":"zone","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"day","field-zone":"time zone","field-year-relative+-1":"last year","field-month-relative+-1":"last month","field-thu-short-relative+0":"this Thu.","field-thu-short-relative+1":"next Thu.","field-quarter":"quarter","field-month":"month","field-weekOfMonth":"week of month","field-tue-relative+0":"this Tuesday","field-quarter-short-relative+0":"this qtr.","field-tue-relative+1":"next Tuesday","field-quarter-short-relative+1":"next qtr.","field-fri-narrow-relative+0":"this F","field-fri-narrow-relative+1":"next F","field-fri-short-relative+-1":"last Fri.","field-sun-narrow-relative+-1":"last Su","field-quarter-short-relative+-1":"last qtr.","field-dayOfYear-short":"day of yr.","field-sun-narrow-relative+0":"this Su","field-thu-narrow-relative+0":"this Th","field-sun-narrow-relative+1":"next Su","field-thu-narrow-relative+1":"next Th","field-tue-narrow-relative+0":"this Tu","field-mon-relative+0":"this Monday","field-tue-narrow-relative+1":"next Tu","field-mon-relative+1":"next Monday","field-week-short-relative+-1":"last wk.","dateFormat-short":"M/d/y GGGGG","field-tue-narrow-relative+-1":"last Tu","field-second-short":"sec.","field-second":"second","field-fri-short-relative+0":"this Fri.","field-sat-relative+-1":"last Saturday","field-fri-short-relative+1":"next Fri.","field-sun-relative+-1":"last Sunday","field-month-short-relative+0":"this mo.","field-month-relative+0":"this month","field-month-short-relative+1":"next mo.","field-weekdayOfMonth":"weekday of the month","field-month-relative+1":"next month","field-week-short-relative+0":"this wk.","field-week-short-relative+1":"next wk.","field-week":"week","field-sat-short-relative+0":"this Sat.","dateFormat-medium":"MMM d, y G","field-sat-short-relative+1":"next Sat.","field-year-relative+0":"this year","field-week-relative+-1":"last week","field-year-relative+1":"next year","field-year-short-relative+-1":"last yr.","field-era-short":"era","field-quarter-short":"qtr.","field-sun-short-relative+-1":"last Sun.","field-thu-short-relative+-1":"last Thu.","field-tue-short-relative+-1":"last Tue.","field-mon-relative+-1":"last Monday","field-sat-narrow-relative+-1":"last Sa","field-month-short-relative+-1":"last mo.","field-week-relative+0":"this week","field-sun-short-relative+0":"this Sun.","field-second-short-relative+0":"now","field-week-relative+1":"next week","field-sun-short-relative+1":"next Sun."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/number.js b/lib/dojo/cldr/nls/en/number.js
index 2c173b588..b73539e48 100644
--- a/lib/dojo/cldr/nls/en/number.js
+++ b/lib/dojo/cldr/nls/en/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000 trillion","decimalFormat-short":"000T"}); \ No newline at end of file
+define("dojo/cldr/nls/en/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000T","nan":"NaN","plusSign":"+","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 trillion","decimalFormat":"#,##0.###","currencyFormat-short":"¤000T","decimal":".","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/en/roc.js b/lib/dojo/cldr/nls/en/roc.js
index b4f5b9a7d..e3a73639c 100644
--- a/lib/dojo/cldr/nls/en/roc.js
+++ b/lib/dojo/cldr/nls/en/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/en/roc",{"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","field-dayperiod":"am/pm","field-sun-relative+-1":"last Sunday","field-mon-relative+-1":"last Monday","field-minute":"Minute","field-day-relative+-1":"yesterday","field-weekday":"Day of the Week","field-era":"Era","field-hour":"Hour","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","field-wed-relative+-1":"last Wednesday","field-day-relative+0":"today","field-day-relative+1":"tomorrow","eraAbbr":["Before R.O.C.","Minguo"],"field-tue-relative+0":"this Tuesday","field-zone":"Time Zone","field-tue-relative+1":"next Tuesday","field-week-relative+-1":"last week","field-year-relative+0":"this year","field-year-relative+1":"next year","field-sat-relative+-1":"last Saturday","field-year-relative+-1":"last year","field-year":"Year","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-week":"Week","field-week-relative+0":"this week","field-week-relative+1":"next week","field-month-relative+0":"this month","field-month":"Month","field-month-relative+1":"next month","field-fri-relative+-1":"last Friday","field-second":"Second","field-tue-relative+-1":"last Tuesday","field-day":"Day","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-thu-relative+0":"this Thursday","field-second-relative+0":"now","field-thu-relative+1":"next Thursday","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","field-month-relative+-1":"last month","field-thu-relative+-1":"last Thursday"}); \ No newline at end of file
+define("dojo/cldr/nls/en/roc",{"field-second-relative+0":"now","field-quarter-relative+-1":"last quarter","field-weekday":"day of the week","field-mon-narrow-relative+0":"this M","field-mon-narrow-relative+1":"next M","field-weekOfMonth-short":"wk. of mo.","field-weekday-short":"day of wk.","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","field-dayperiod-short":"am/pm","field-week-short":"wk.","field-tue-relative+-1":"last Tuesday","field-year-short":"yr.","field-thu-narrow-relative+-1":"last Th","field-hour-relative+0":"this hour","field-fri-relative+-1":"last Friday","field-hour-short":"hr.","field-wed-relative+-1":"last Wednesday","field-dayOfYear":"day of year","field-mon-short-relative+-1":"last Mon.","field-thu-relative+-1":"last Thursday","field-era":"era","field-sat-narrow-relative+0":"this Sa","field-sat-narrow-relative+1":"next Sa","field-year":"year","field-hour":"hour","field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","field-sat-short-relative+-1":"last Sat.","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-thu-relative+0":"this Thursday","field-mon-narrow-relative+-1":"last M","field-wed-narrow-relative+0":"this W","field-thu-relative+1":"next Thursday","field-wed-narrow-relative+1":"next W","field-mon-short-relative+0":"this Mon.","field-mon-short-relative+1":"next Mon.","field-weekdayOfMonth-short":"wkday. of mo.","field-wed-short-relative+-1":"last Wed.","field-fri-narrow-relative+-1":"last F","field-tue-short-relative+0":"this Tue.","field-tue-short-relative+1":"next Tue.","field-minute-short":"min.","field-wed-short-relative+0":"this Wed.","field-wed-short-relative+1":"next Wed.","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","field-year-short-relative+0":"this yr.","eraAbbr":["Before R.O.C.","Minguo"],"field-minute":"minute","field-month-short":"mo.","field-year-short-relative+1":"next yr.","field-dayperiod":"am/pm","field-day-relative+-1":"yesterday","field-minute-relative+0":"this minute","field-wed-narrow-relative+-1":"last W","field-day-short":"day","field-quarter-relative+0":"this quarter","field-quarter-relative+1":"next quarter","field-zone-short":"zone","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"day","field-zone":"time zone","field-year-relative+-1":"last year","field-month-relative+-1":"last month","field-thu-short-relative+0":"this Thu.","field-thu-short-relative+1":"next Thu.","field-quarter":"quarter","field-month":"month","field-weekOfMonth":"week of month","field-tue-relative+0":"this Tuesday","field-quarter-short-relative+0":"this qtr.","field-tue-relative+1":"next Tuesday","field-quarter-short-relative+1":"next qtr.","field-fri-narrow-relative+0":"this F","field-fri-narrow-relative+1":"next F","field-fri-short-relative+-1":"last Fri.","field-sun-narrow-relative+-1":"last Su","field-quarter-short-relative+-1":"last qtr.","field-dayOfYear-short":"day of yr.","field-sun-narrow-relative+0":"this Su","field-thu-narrow-relative+0":"this Th","field-sun-narrow-relative+1":"next Su","field-thu-narrow-relative+1":"next Th","field-tue-narrow-relative+0":"this Tu","field-mon-relative+0":"this Monday","field-tue-narrow-relative+1":"next Tu","field-mon-relative+1":"next Monday","field-week-short-relative+-1":"last wk.","field-tue-narrow-relative+-1":"last Tu","field-second-short":"sec.","field-second":"second","field-fri-short-relative+0":"this Fri.","field-sat-relative+-1":"last Saturday","field-fri-short-relative+1":"next Fri.","field-sun-relative+-1":"last Sunday","field-month-short-relative+0":"this mo.","field-month-relative+0":"this month","field-month-short-relative+1":"next mo.","field-weekdayOfMonth":"weekday of the month","field-month-relative+1":"next month","field-week-short-relative+0":"this wk.","field-week-short-relative+1":"next wk.","field-week":"week","field-sat-short-relative+0":"this Sat.","field-sat-short-relative+1":"next Sat.","field-year-relative+0":"this year","field-week-relative+-1":"last week","field-year-relative+1":"next year","field-year-short-relative+-1":"last yr.","field-era-short":"era","field-quarter-short":"qtr.","field-sun-short-relative+-1":"last Sun.","field-thu-short-relative+-1":"last Thu.","field-tue-short-relative+-1":"last Tue.","field-mon-relative+-1":"last Monday","field-sat-narrow-relative+-1":"last Sa","field-month-short-relative+-1":"last mo.","field-week-relative+0":"this week","field-sun-short-relative+0":"this Sun.","field-second-short-relative+0":"now","field-week-relative+1":"next week","field-sun-short-relative+1":"next Sun."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/buddhist.js b/lib/dojo/cldr/nls/es/buddhist.js
index ccec460ed..334022039 100644
--- a/lib/dojo/cldr/nls/es/buddhist.js
+++ b/lib/dojo/cldr/nls/es/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/es/buddhist",{"days-standAlone-short":["DO","LU","MA","MI","JU","VI","SA"],"months-format-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"ahora","quarters-standAlone-narrow":["1T","2T","3T","4T"],"field-weekday":"Día de la semana","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"el martes pasado","days-format-short":["DO","LU","MA","MI","JU","VI","SA"],"dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"el viernes pasado","field-wed-relative+-1":"el miércoles pasado","months-format-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"p. m.","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-thu-relative+-1":"el jueves pasado","dateFormatItem-Md":"d/M","field-era":"Era","months-standAlone-wide":["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],"timeFormat-short":"H:mm","quarters-format-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"timeFormat-long":"H:mm:ss z","field-year":"Año","field-hour":"Hora","months-format-abbr":["ene.","feb.","mar.","abr.","may.","jun.","jul.","ago.","sept.","oct.","nov.","dic."],"field-sat-relative+0":"este sábado","field-sat-relative+1":"el próximo sábado","timeFormat-full":"H:mm:ss (zzzz)","field-day-relative+0":"hoy","field-thu-relative+0":"este jueves","field-day-relative+1":"mañana","field-thu-relative+1":"el próximo jueves","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"pasado mañana","months-standAlone-abbr":["Ene.","Feb.","Mar.","Abr.","May.","Jun.","Jul.","Ago.","Sept.","Oct.","Nov.","Dic."],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"EEE, d MMM y G","days-standAlone-wide":["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["BE"],"field-minute":"Minuto","field-dayperiod":"a. m./p. m.","days-standAlone-abbr":["Dom.","Lun.","Mar.","Mié.","Jue.","Vie.","Sáb."],"quarters-format-narrow":["1T","2T","3T","4T"],"field-day-relative+-1":"ayer","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"anteayer","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"este viernes","field-fri-relative+1":"el próximo viernes","field-day":"Día","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-zone":"Zona horaria","dateFormatItem-y":"y G","months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"el año pasado","field-month-relative+-1":"el mes pasado","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom.","lun.","mar.","mié.","jue.","vie.","sáb."],"days-format-narrow":["D","L","M","X","J","V","S"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Mes","days-standAlone-narrow":["D","L","M","X","J","V","S"],"field-tue-relative+0":"este martes","field-tue-relative+1":"el próximo martes","dayPeriods-format-wide-am":"a. m.","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Segundo","field-sat-relative+-1":"el sábado pasado","field-sun-relative+-1":"el domingo pasado","field-month-relative+0":"este mes","field-month-relative+1":"el próximo mes","dateFormatItem-Ed":"E d","field-week":"Semana","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este año","field-week-relative+-1":"la semana pasada","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"el próximo año","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"el lunes pasado","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"la próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/es/buddhist",{"field-tue-relative+-1":"el martes pasado","field-year":"año","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","timeFormat-short":"H:mm","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-thu-short-relative+0":"este jue.","field-day-short-relative+-1":"ayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","dayPeriods-format-narrow-am":"a. m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"día de sem. de mes","dayPeriods-format-abbr-am":"a. m.","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["BE"],"field-weekOfMonth":"semana del mes","dayPeriods-standAlone-abbr-pm":"p. m.","field-month-short":"m","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","dayPeriods-format-wide-am":"a. m.","field-sat-short-relative+-1":"el sáb. pasado","field-hour-relative+0":"esta hora","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-wed-relative+-1":"el miércoles pasado","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","days-standAlone-narrow":["D","L","M","X","J","V","S"],"dayPeriods-standAlone-wide-pm":"p. m.","dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"days-format-narrow":["D","L","M","X","J","V","S"],"field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","dateFormatItem-GyMMM":"MMM y G","field-month":"mes","field-day-narrow":"d","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","dayPeriods-format-narrow-pm":"p. m.","dateFormat-medium":"d/M/y G","dateFormatItem-yyyyMMMM":"MMMM 'de' y G","eraAbbr":["BE"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dayPeriods-format-abbr-pm":"p. m.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","months-format-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"el trimestre pasado","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a. m./p. m.","dayPeriods-standAlone-narrow-am":"a. m.","field-week-narrow-relative+-1":"sem. ant.","days-format-short":["DO","LU","MA","MI","JU","VI","SA"],"dayPeriods-format-wide-pm":"p. m.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d/M","field-hour":"hora","months-format-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-month-relative+-1":"el mes pasado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","months-format-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sept","oct","nov","dic"],"field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","dateFormat-short":"d/M/yy G","field-thu-short-relative+-1":"el jue. pasado","field-year-narrow-relative+-1":"el año pasado","days-standAlone-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-yyyyMMMEd":"EEE, d MMM y G","field-mon-narrow-relative+-1":"el LU pasado","dateFormatItem-MMMMd":"d 'de' MMMM","field-thu-narrow-relative+-1":"el JU pasado","field-tue-narrow-relative+-1":"el MA pasado","field-weekOfMonth-short":"sem. de mes","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p. m.","field-wed-short-relative+0":"este mié.","months-standAlone-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","days-standAlone-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateTimeFormat-full":"{1}, {0}","field-weekday":"día de la semana","field-day-short-relative+0":"hoy","field-sat-relative+0":"este sábado","field-day-short-relative+1":"mañana","field-sat-relative+1":"el próximo sábado","field-day-short-relative+2":"pasado mañana","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","months-standAlone-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sept","oct","nov","dic"],"field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","timeFormat-full":"H:mm:ss (zzzz)","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"este JU","field-thu-narrow-relative+1":"el próximo JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","quarters-format-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","field-dayperiod-short":"a. m./p. m.","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","days-standAlone-short":["DO","LU","MA","MI","JU","VI","SA"],"field-week-short-relative+-1":"sem. ant.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","field-hour-short":"h","field-zone-short":"zona","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","eraNarrow":"BE","field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-mon-narrow-relative+0":"este LU","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"sem. de mes","field-weekday-narrow":"día de sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","dayPeriods-standAlone-abbr-am":"a. m.","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","dateFormatItem-Gy":"y G","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI","dayPeriods-standAlone-wide-am":"a. m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/chinese.js b/lib/dojo/cldr/nls/es/chinese.js
index f91afa7e6..df3c58ed4 100644
--- a/lib/dojo/cldr/nls/es/chinese.js
+++ b/lib/dojo/cldr/nls/es/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/es/chinese",{"field-second-relative+0":"ahora","field-weekday":"Día de la semana","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","dateFormatItem-GyMMMEd":"E, d-M-y","dateFormatItem-MMMEd":"E d-M","field-tue-relative+-1":"el martes pasado","dateFormat-long":"d-M-y","field-fri-relative+-1":"el viernes pasado","field-wed-relative+-1":"el miércoles pasado","dateFormatItem-yyyyQQQ":"QQQ y","dateFormat-full":"EEEE, d-M-y","dateFormatItem-yyyyMEd":"E, d-M-y","field-thu-relative+-1":"el jueves pasado","dateFormatItem-Md":"d-M","field-era":"Era","field-year":"Año","dateFormatItem-yyyyMMMM":"M-y","field-hour":"Hora","field-sat-relative+0":"este sábado","field-sat-relative+1":"el próximo sábado","field-day-relative+0":"hoy","field-thu-relative+0":"este jueves","field-day-relative+1":"mañana","field-thu-relative+1":"el próximo jueves","dateFormatItem-GyMMMd":"d-M-y","field-day-relative+2":"pasado mañana","dateFormatItem-H":"HH","dateFormatItem-Gy":"y","dateFormatItem-yyyyMMMEd":"E, d-M-y","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"M-y","dateFormatItem-yyyyMMMd":"d-M-y","field-sun-relative+0":"este domingo","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"el próximo domingo","field-minute":"Minuto","field-dayperiod":"a. m./p. m.","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ayer","dateFormatItem-h":"hh a","field-day-relative+-2":"anteayer","dateFormatItem-MMMd":"d-M","dateFormatItem-MEd":"E, d-M","field-fri-relative+0":"este viernes","field-fri-relative+1":"el próximo viernes","field-day":"Día","field-zone":"Zona horaria","dateFormatItem-y":"y","field-year-relative+-1":"el año pasado","field-month-relative+-1":"el mes pasado","dateFormatItem-hm":"hh:mm a","dateFormatItem-yyyyMd":"d-M-y","field-month":"Mes","dateFormatItem-MMM":"L","field-tue-relative+0":"este martes","field-tue-relative+1":"el próximo martes","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","dateFormat-short":"d-M-y","field-second":"Segundo","field-sat-relative+-1":"el sábado pasado","field-sun-relative+-1":"el domingo pasado","field-month-relative+0":"este mes","field-month-relative+1":"el próximo mes","dateFormatItem-Ed":"E d","field-week":"Semana","dateFormat-medium":"d-M-y","field-year-relative+0":"este año","field-week-relative+-1":"la semana pasada","dateFormatItem-yyyyM":"M-y","field-year-relative+1":"el próximo año","dateFormatItem-yyyyQQQQ":"QQQQ y","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"M-y","field-mon-relative+-1":"el lunes pasado","dateFormatItem-yyyy":"y","field-week-relative+0":"esta semana","field-week-relative+1":"la próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/es/chinese",{"field-tue-relative+-1":"el martes pasado","field-year":"año","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","dateFormatItem-ms":"mm:ss","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-day-short-relative+-1":"ayer","field-thu-short-relative+0":"este jue.","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","dateFormatItem-MMMd":"d-M","field-weekdayOfMonth-narrow":"día de sem. de mes","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","dateFormatItem-yyyyQQQ":"QQQ y","field-weekOfMonth":"semana del mes","field-month-short":"m","dateFormatItem-GyMMMEd":"E, d-M-y","dateFormatItem-yyyyMd":"d-M-y","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","field-sat-short-relative+-1":"el sáb. pasado","field-hour-relative+0":"esta hora","dateFormatItem-yyyyMEd":"E, d-M-y","field-wed-relative+-1":"el miércoles pasado","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","dateFormat-long":"d-M-y","dateFormatItem-GyMMMd":"d-M-y","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","dateFormatItem-GyMMM":"M-y","field-month":"mes","field-day-narrow":"d","dateFormatItem-MMM":"L","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","dateFormat-medium":"d-M-y","dateFormatItem-yyyyMMMM":"M-y","dateFormatItem-yyyyM":"M-y","field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","field-quarter-relative+-1":"el trimestre pasado","dateFormatItem-yyyyMMMd":"d-M-y","field-dayperiod-narrow":"a. m./p. m.","field-week-narrow-relative+-1":"sem. ant.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","dateFormatItem-Md":"d-M","field-hour":"hora","dateFormat-full":"EEEE, d-M-y","field-month-relative+-1":"el mes pasado","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","dateFormat-short":"d-M-y","field-year-narrow-relative+-1":"el año pasado","field-thu-short-relative+-1":"el jue. pasado","dateFormatItem-yyyyMMMEd":"E, d-M-y","field-mon-narrow-relative+-1":"el LU pasado","field-thu-narrow-relative+-1":"el JU pasado","field-tue-narrow-relative+-1":"el MA pasado","dateFormatItem-H":"HH","field-weekOfMonth-short":"sem. de mes","dateFormatItem-yyyy":"y","field-wed-short-relative+0":"este mié.","dateFormatItem-M":"L","field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d","field-weekday":"día de la semana","field-day-short-relative+0":"hoy","field-day-short-relative+1":"mañana","field-sat-relative+0":"este sábado","dateFormatItem-h":"hh a","field-day-short-relative+2":"pasado mañana","field-sat-relative+1":"el próximo sábado","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","dateFormatItem-MEd":"E, d-M","field-zone-narrow":"zona","dateFormatItem-y":"y","field-thu-narrow-relative+0":"este JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-narrow-relative+1":"el próximo JU","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","dateFormatItem-hms":"hh:mm:ss a","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","dateFormatItem-yyyyMMM":"M-y","field-dayperiod-short":"a. m./p. m.","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","field-week-short-relative+-1":"sem. ant.","dateFormatItem-yyyyQQQQ":"QQQQ y","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","field-mon-narrow-relative+0":"este LU","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","dateFormatItem-MMMEd":"E d-M","field-weekOfMonth-narrow":"sem. de mes","field-weekday-narrow":"día de sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","dateFormatItem-Gy":"y","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/coptic.js b/lib/dojo/cldr/nls/es/coptic.js
new file mode 100644
index 000000000..d27949131
--- /dev/null
+++ b/lib/dojo/cldr/nls/es/coptic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/es/coptic",{"field-tue-relative+-1":"el martes pasado","field-year":"año","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-thu-short-relative+0":"este jue.","field-day-short-relative+-1":"ayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","field-weekdayOfMonth-narrow":"día de sem. de mes","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"field-weekOfMonth":"semana del mes","field-month-short":"m","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","field-sat-short-relative+-1":"el sáb. pasado","field-hour-relative+0":"esta hora","field-wed-relative+-1":"el miércoles pasado","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","field-month":"mes","field-day-narrow":"d","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"el trimestre pasado","field-dayperiod-narrow":"a. m./p. m.","field-week-narrow-relative+-1":"sem. ant.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","field-hour":"hora","months-format-wide":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","paona","epep","mesra","nasie"],"field-month-relative+-1":"el mes pasado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","months-format-abbr":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","paona","epep","mesra","nasie"],"field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","field-thu-short-relative+-1":"el jue. pasado","field-year-narrow-relative+-1":"el año pasado","field-mon-narrow-relative+-1":"el LU pasado","field-thu-narrow-relative+-1":"el JU pasado","field-tue-narrow-relative+-1":"el MA pasado","field-weekOfMonth-short":"sem. de mes","field-wed-short-relative+0":"este mié.","months-standAlone-wide":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","paona","epep","mesra","nasie"],"field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","field-weekday":"día de la semana","field-day-short-relative+0":"hoy","field-sat-relative+0":"este sábado","field-day-short-relative+1":"mañana","field-sat-relative+1":"el próximo sábado","field-day-short-relative+2":"pasado mañana","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","months-standAlone-abbr":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","paona","epep","mesra","nasie"],"field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","field-zone-narrow":"zona","field-thu-narrow-relative+0":"este JU","field-thu-narrow-relative+1":"el próximo JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","field-dayperiod-short":"a. m./p. m.","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","field-week-short-relative+-1":"sem. ant.","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","field-mon-narrow-relative+0":"este LU","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","field-weekOfMonth-narrow":"sem. de mes","field-weekday-narrow":"día de sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/currency.js b/lib/dojo/cldr/nls/es/currency.js
index 738453e74..af2babdf8 100644
--- a/lib/dojo/cldr/nls/es/currency.js
+++ b/lib/dojo/cldr/nls/es/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/es/currency",{"HKD_displayName":"dólar hongkonés","CHF_displayName":"franco suizo","JPY_symbol":"JPY","CAD_displayName":"dólar canadiense","HKD_symbol":"HKD","CNY_displayName":"yuan","USD_symbol":"$","AUD_displayName":"dólar australiano","JPY_displayName":"yen","CAD_symbol":"CA$","USD_displayName":"dólar estadounidense","CNY_symbol":"CNY","GBP_displayName":"libra británica","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/es/currency",{"HKD_displayName":"dólar hongkonés","CNY_displayName":"yuan","JPY_displayName":"yen","JPY_symbol":"JPY","USD_displayName":"dólar estadounidense","CAD_symbol":"CAD","GBP_displayName":"libra esterlina","CHF_displayName":"franco suizo","CNY_symbol":"CNY","EUR_displayName":"euro","GBP_symbol":"GBP","CAD_displayName":"dólar canadiense","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"dólar australiano","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/ethiopic.js b/lib/dojo/cldr/nls/es/ethiopic.js
new file mode 100644
index 000000000..7a7018df9
--- /dev/null
+++ b/lib/dojo/cldr/nls/es/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/es/ethiopic",{"field-tue-relative+-1":"el martes pasado","field-year":"año","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-thu-short-relative+0":"este jue.","field-day-short-relative+-1":"ayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","field-weekdayOfMonth-narrow":"día de sem. de mes","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"field-weekOfMonth":"semana del mes","field-month-short":"m","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","field-sat-short-relative+-1":"el sáb. pasado","field-hour-relative+0":"esta hora","field-wed-relative+-1":"el miércoles pasado","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","field-month":"mes","field-day-narrow":"d","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"el trimestre pasado","field-dayperiod-narrow":"a. m./p. m.","field-week-narrow-relative+-1":"sem. ant.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","field-hour":"hora","months-format-wide":["meskerem","tekemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehasse","pagumen"],"field-month-relative+-1":"el mes pasado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","months-format-abbr":["meskerem","tekemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehasse","pagumen"],"field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","field-thu-short-relative+-1":"el jue. pasado","field-year-narrow-relative+-1":"el año pasado","field-mon-narrow-relative+-1":"el LU pasado","field-thu-narrow-relative+-1":"el JU pasado","field-tue-narrow-relative+-1":"el MA pasado","field-weekOfMonth-short":"sem. de mes","field-wed-short-relative+0":"este mié.","months-standAlone-wide":["meskerem","tekemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehasse","pagumen"],"field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","field-weekday":"día de la semana","field-day-short-relative+0":"hoy","field-sat-relative+0":"este sábado","field-day-short-relative+1":"mañana","field-sat-relative+1":"el próximo sábado","field-day-short-relative+2":"pasado mañana","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","months-standAlone-abbr":["meskerem","tekemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehasse","pagumen"],"field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","field-zone-narrow":"zona","field-thu-narrow-relative+0":"este JU","field-thu-narrow-relative+1":"el próximo JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","field-dayperiod-short":"a. m./p. m.","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","field-week-short-relative+-1":"sem. ant.","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","field-mon-narrow-relative+0":"este LU","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","field-weekOfMonth-narrow":"sem. de mes","field-weekday-narrow":"día de sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/generic.js b/lib/dojo/cldr/nls/es/generic.js
index e11201176..caa6bb0dd 100644
--- a/lib/dojo/cldr/nls/es/generic.js
+++ b/lib/dojo/cldr/nls/es/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/es/generic",{"field-second-relative+0":"ahora","field-weekday":"Día de la semana","field-wed-relative+0":"este miércoles","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-wed-relative+1":"el próximo miércoles","field-tue-relative+-1":"el martes pasado","dateFormatItem-MMMdd":"dd-MMM","dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"el viernes pasado","field-wed-relative+-1":"el miércoles pasado","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-thu-relative+-1":"el jueves pasado","dateFormatItem-Md":"d/M","field-era":"Era","field-year":"Año","dateFormatItem-yyyyMMMM":"MMMM 'de' y G","field-hour":"Hora","field-sat-relative+0":"este sábado","field-sat-relative+1":"el próximo sábado","field-day-relative+0":"hoy","field-day-relative+1":"mañana","field-thu-relative+0":"este jueves","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"pasado mañana","field-thu-relative+1":"el próximo jueves","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"EEE, d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d 'de' MMMM","field-sun-relative+0":"este domingo","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"el próximo domingo","field-minute":"Minuto","field-dayperiod":"a. m./p. m.","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ayer","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"anteayer","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"este viernes","field-fri-relative+1":"el próximo viernes","field-day":"Día","field-zone":"Zona horaria","dateFormatItem-y":"y G","field-year-relative+-1":"el año pasado","field-month-relative+-1":"el mes pasado","dateFormatItem-hm":"hh:mm a","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Mes","dateFormatItem-MMM":"LLL","field-tue-relative+0":"este martes","field-tue-relative+1":"el próximo martes","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Segundo","field-sat-relative+-1":"el sábado pasado","field-sun-relative+-1":"el domingo pasado","field-month-relative+0":"este mes","field-month-relative+1":"el próximo mes","dateFormatItem-Ed":"E d","field-week":"Semana","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este año","field-week-relative+-1":"la semana pasada","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"el próximo año","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"el lunes pasado","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"la próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/es/generic",{"field-tue-relative+-1":"el martes pasado","field-year":"año","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","dateFormatItem-ms":"mm:ss","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-day-short-relative+-1":"ayer","field-thu-short-relative+0":"este jue.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"día de sem. de mes","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"semana del mes","field-month-short":"m","dateFormatItem-GyMMMM":"MMMM 'de' y G","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","field-sat-short-relative+-1":"el sáb. pasado","dateFormatItem-yyyyMMMMd":"d 'de' MMMM 'de' y G","field-hour-relative+0":"esta hora","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-wed-relative+-1":"el miércoles pasado","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","dateFormatItem-yyyyMMMMEd":"EEE, d 'de' MMMM 'de' y G","field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","dateFormatItem-GyMMM":"MMM y G","field-month":"mes","field-day-narrow":"d","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","dateFormat-medium":"d/M/y G","dateFormatItem-yyyyMMMM":"MMMM 'de' y G","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","field-quarter-relative+-1":"el trimestre pasado","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a. m./p. m.","field-week-narrow-relative+-1":"sem. ant.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d/M","field-hour":"hora","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-month-relative+-1":"el mes pasado","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","dateFormat-short":"d/M/yy G","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"el año pasado","field-thu-short-relative+-1":"el jue. pasado","dateFormatItem-yyyyMMMEd":"EEE, d MMM y G","field-mon-narrow-relative+-1":"el LU pasado","dateFormatItem-MMMMd":"d 'de' MMMM","field-thu-narrow-relative+-1":"el JU pasado","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"sem. de mes","field-tue-narrow-relative+-1":"el MA pasado","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"este mié.","field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","dateFormatItem-MMMMEd":"E, d 'de' MMMM","dateTimeFormat-full":"{1}, {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"día de la semana","field-day-short-relative+0":"hoy","field-day-short-relative+1":"mañana","field-sat-relative+0":"este sábado","dateFormatItem-h":"h a","field-day-short-relative+2":"pasado mañana","field-sat-relative+1":"el próximo sábado","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","dateFormatItem-GyMMMMEd":"E, d 'de' MMMM 'de' y G","field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"este JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-narrow-relative+1":"el próximo JU","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a. m./p. m.","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","field-week-short-relative+-1":"sem. ant.","dateFormatItem-GyMMMMd":"d 'de' MMMM 'de' y G","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","field-mon-narrow-relative+0":"este LU","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"sem. de mes","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"día de sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","dateFormatItem-Gy":"y G","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/gregorian.js b/lib/dojo/cldr/nls/es/gregorian.js
index a44532794..12b608b41 100644
--- a/lib/dojo/cldr/nls/es/gregorian.js
+++ b/lib/dojo/cldr/nls/es/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/es/gregorian",{"dateFormatItem-Ehm":"E, h:mm a","days-standAlone-short":["DO","LU","MA","MI","JU","VI","SA"],"months-format-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"ahora","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Día de la semana","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"EEE, d/M/y","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","eraNarrow":["a. C.","d. C."],"dateFormatItem-yMM":"M/y","field-tue-relative+-1":"el martes pasado","dateFormatItem-MMMdd":"dd-MMM","days-format-short":["DO","LU","MA","MI","JU","VI","SA"],"dateFormat-long":"d 'de' MMMM 'de' y","field-fri-relative+-1":"el viernes pasado","field-wed-relative+-1":"el miércoles pasado","months-format-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"p. m.","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","field-thu-relative+-1":"el jueves pasado","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/y","field-era":"Era","dateFormatItem-yM":"M/y","months-standAlone-wide":["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],"timeFormat-short":"H:mm","quarters-format-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-yQQQQ":"QQQQ 'de' y","timeFormat-long":"H:mm:ss z","field-year":"Año","dateFormatItem-yMMM":"MMM y","field-hour":"Hora","dateFormatItem-MMdd":"d/M","months-format-abbr":["ene.","feb.","mar.","abr.","may.","jun.","jul.","ago.","sept.","oct.","nov.","dic."],"field-sat-relative+0":"este sábado","field-sat-relative+1":"el próximo sábado","timeFormat-full":"H:mm:ss (zzzz)","field-day-relative+0":"hoy","field-thu-relative+0":"este jueves","field-day-relative+1":"mañana","field-thu-relative+1":"el próximo jueves","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"pasado mañana","dateFormatItem-H":"H","months-standAlone-abbr":["Ene.","Feb.","Mar.","Abr.","May.","Jun.","Jul.","Ago.","Sept.","Oct.","Nov.","Dic."],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],"dateFormatItem-MMMMd":"d 'de' MMMM","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"este domingo","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"el próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["a. C.","d. C."],"field-minute":"Minuto","field-dayperiod":"a. m./p. m.","days-standAlone-abbr":["Dom.","Lun.","Mar.","Mié.","Jue.","Vie.","Sáb."],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1T","2T","3T","4T"],"field-day-relative+-1":"ayer","dateFormatItem-h":"h a","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"anteayer","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"este viernes","dateFormatItem-yMMMM":"MMMM 'de' y","field-fri-relative+1":"el próximo viernes","field-day":"Día","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-zone":"Zona horaria","dateFormatItem-y":"y","months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"el año pasado","field-month-relative+-1":"el mes pasado","dateFormatItem-hm":"h:mm a","days-format-abbr":["dom.","lun.","mar.","mié.","jue.","vie.","sáb."],"eraNames":["antes de Cristo","después de Cristo"],"dateFormatItem-yMMMd":"d MMM y","days-format-narrow":["D","L","M","X","J","V","S"],"days-standAlone-narrow":["D","L","M","X","J","V","S"],"dateFormatItem-MMM":"LLL","field-month":"Mes","field-tue-relative+0":"este martes","field-tue-relative+1":"el próximo martes","dayPeriods-format-wide-am":"a. m.","dateFormatItem-EHm":"E, H:mm","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","dateFormat-short":"d/M/yy","dateFormatItem-MMd":"d/M","dateFormatItem-EHms":"E, H:mm:ss","dateFormatItem-Ehms":"E, h:mm:ss a","field-second":"Segundo","field-sat-relative+-1":"el sábado pasado","dateFormatItem-yMMMEd":"EEE, d MMM y","field-sun-relative+-1":"el domingo pasado","field-month-relative+0":"este mes","field-month-relative+1":"el próximo mes","dateFormatItem-Ed":"E d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Semana","dateFormat-medium":"d MMM y","field-year-relative+0":"este año","field-week-relative+-1":"la semana pasada","field-year-relative+1":"el próximo año","dayPeriods-format-narrow-pm":"p.m.","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"el lunes pasado","field-week-relative+0":"esta semana","field-week-relative+1":"la próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/es/gregorian",{"dateFormatItem-yMMMM":"MMMM 'de' y","field-thu-narrow-relative+0":"este JU","field-thu-narrow-relative+1":"el próximo JU","field-sun-narrow-relative+0":"este DO","field-sun-narrow-relative+1":"el próximo DO","months-format-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"dayPeriods-standAlone-abbr-pm":"p. m.","dateFormatItem-Hms":"H:mm:ss","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI","eraNarrow":["a. C.","d. C."],"dateFormatItem-Hmv":"H:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM y","dayPeriods-format-abbr-night1":"de la noche","dayPeriods-format-narrow-evening1":"de la tarde","days-standAlone-narrow":["D","L","M","X","J","V","S"],"days-standAlone-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dayPeriods-format-wide-evening1":"de la tarde","dateFormatItem-Ehm":"E, h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"el MI pasado","dayPeriods-standAlone-wide-evening1":"tarde","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-yMM":"M/y","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","dateFormatItem-Ehms":"E, h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"tarde","field-thu-relative+0":"este jueves","dayPeriods-standAlone-abbr-night1":"noche","field-thu-relative+1":"el próximo jueves","dayPeriods-format-wide-am":"a. m.","field-fri-relative+0":"este viernes","field-fri-relative+1":"el próximo viernes","dateFormatItem-yMd":"d/M/y","field-thu-narrow-relative+-1":"el JU pasado","field-quarter-relative+0":"este trimestre","field-quarter-relative+1":"el próximo trimestre","field-sun-short-relative+0":"este dom.","timeFormat-short":"H:mm","field-sun-short-relative+1":"el próximo dom.","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"d/M","dateFormatItem-Hmsv":"H:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"sem.","field-hour-relative+0":"esta hora","field-day-relative+-1":"ayer","field-day-relative+-2":"anteayer","field-mon-narrow-relative+-1":"el LU pasado","field-minute-narrow":"min","dateFormatItem-MMMMEd":"E, d 'de' MMMM","dateFormatItem-GyMMMMEd":"E, d 'de' MMMM 'de' y G","field-thu-short-relative+0":"este jue.","field-mon-relative+0":"este lunes","field-thu-short-relative+1":"el próximo jue.","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+0":"hoy","field-era-short":"era","field-day-narrow-relative+1":"mañana","field-sat-narrow-relative+0":"este SA","field-day-narrow-relative+2":"pasado mañana","timeFormat-long":"H:mm:ss z","field-sat-narrow-relative+1":"el próximo SA","field-week-narrow-relative+0":"esta sem.","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-month":"mes","months-standAlone-wide":["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],"field-weekday-narrow":"día de sem.","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","dayPeriods-format-abbr-evening1":"de la tarde","dayPeriods-format-abbr-noon":"del mediodía","field-tue-relative+0":"este martes","dateFormatItem-GyMMMMd":"d 'de' MMMM 'de' y G","field-tue-relative+1":"el próximo martes","dayPeriods-standAlone-abbr-evening1":"tarde","dateFormatItem-hm":"h:mm a","field-year-narrow":"a","dayPeriods-standAlone-abbr-noon":"mediodía","field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","dateTimeFormat-full":"{1}, {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"H","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","dateFormatItem-M":"L","field-wed-short-relative+0":"este mié.","field-fri-short-relative+0":"este vie.","field-wed-short-relative+1":"el próximo mié.","field-fri-short-relative+1":"el próximo vie.","field-weekOfMonth-short":"sem. de mes","field-year-short-relative+-1":"el año pasado","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"de la noche","dateTimeFormat-medium":"{1} {0}","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"p. m.","dateFormatItem-h":"h a","quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"field-weekOfMonth-narrow":"sem. de mes","dateFormatItem-y":"y","field-minute-relative+0":"este minuto","field-year-short-relative+0":"este año","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"el próximo año","field-weekday":"día de la semana","dayPeriods-format-narrow-pm":"p. m.","field-tue-narrow-relative+-1":"el MA pasado","dateFormatItem-yMEd":"EEE, d/M/y","dayPeriods-standAlone-wide-night1":"noche","field-year-narrow-relative+-1":"el año pasado","field-sat-relative+-1":"el sábado pasado","dayPeriods-format-narrow-morning1":"de la madrugada","dayPeriods-format-narrow-morning2":"de la mañana","dayPeriods-format-wide-morning1":"de la madrugada","dayPeriods-format-wide-morning2":"de la mañana","dayPeriods-standAlone-narrow-pm":"p. m.","dayPeriods-standAlone-wide-morning1":"madrugada","field-mon-narrow-relative+0":"este LU","dayPeriods-standAlone-wide-morning2":"mañana","field-mon-narrow-relative+1":"el próximo LU","field-second":"segundo","dateFormatItem-yMMMEd":"EEE, d MMM y","field-year-relative+-1":"el año pasado","field-weekdayOfMonth-short":"día de sem. de mes","dateFormat-short":"d/M/yy","eraNames":["antes de Cristo","después de Cristo"],"field-second-short":"s","field-thu-short-relative+-1":"el jue. pasado","field-zone":"zona horaria","field-dayperiod-narrow":"a. m./p. m.","field-sun-short-relative+-1":"el dom. pasado","dayPeriods-standAlone-narrow-morning1":"madrugada","dayPeriods-standAlone-narrow-morning2":"mañana","eraAbbr":["a. C.","d. C."],"field-week-short":"sem.","dayPeriods-standAlone-abbr-am":"a. m.","dayPeriods-standAlone-wide-pm":"p. m.","dateFormatItem-ms":"mm:ss","field-day-relative+0":"hoy","field-day-relative+1":"mañana","field-day-relative+2":"pasado mañana","field-day-short-relative+0":"hoy","field-dayOfYear-short":"día del a","field-day-short-relative+1":"mañana","dateFormat-long":"d 'de' MMMM 'de' y","field-day-short-relative+2":"pasado mañana","field-sun-narrow-relative+-1":"el DO pasado","dayPeriods-format-wide-noon":"del mediodía","field-second-relative+0":"ahora","field-quarter-relative+-1":"el trimestre pasado","dayPeriods-format-narrow-night1":"de la noche","quarters-format-abbr":["T1","T2","T3","T4"],"dayPeriods-standAlone-wide-noon":"mediodía","dayPeriods-standAlone-narrow-night1":"noche","field-week-relative+-1":"la semana pasada","dayPeriods-format-abbr-morning1":"de la madrugada","field-month-relative+-1":"el mes pasado","dayPeriods-format-abbr-morning2":"de la mañana","months-format-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"field-year":"año","field-era":"era","dayPeriods-standAlone-abbr-morning1":"madrugada","dayPeriods-standAlone-abbr-morning2":"mañana","days-standAlone-short":["DO","LU","MA","MI","JU","VI","SA"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ 'de' y","field-day-short-relative+-1":"ayer","field-day-short-relative+-2":"anteayer","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"H:mm:ss (zzzz)","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"hora","field-dayOfYear-narrow":"día del a","field-quarter":"trimestre","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","dateFormatItem-MMdd":"d/M","dateFormatItem-GyMMMM":"MMMM 'de' y G","field-day":"día","field-mon-relative+-1":"el lunes pasado","field-dayOfYear":"día del año","dateFormat-medium":"d MMM y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d MMM y G","dateFormatItem-MEd":"E, d/M","field-tue-short-relative+-1":"el mar. pasado","field-year-short":"a","field-month-short":"m","dateFormatItem-MMMEd":"E, d MMM","dateFormatItem-MMMd":"d MMM","dateFormatItem-Bh":"h B","months-format-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sept","oct","nov","dic"],"dayPeriods-format-abbr-am":"a. m.","field-sat-relative+0":"este sábado","field-sat-relative+1":"el próximo sábado","dayPeriods-format-wide-pm":"p. m.","field-zone-short":"zona","days-standAlone-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"field-week-short-relative+0":"esta sem.","dateFormatItem-yMMMMd":"d 'de' MMMM 'de' y","field-week-short-relative+1":"próx. sem.","field-fri-short-relative+-1":"el vie. pasado","field-month-narrow":"m","dayPeriods-format-narrow-am":"a. m.","field-month-narrow-relative+-1":"el mes pasado","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"field-weekday-short":"día de sem.","field-day-narrow-relative+-1":"ayer","field-day-narrow-relative+-2":"anteayer","field-quarter-short":"trim.","days-format-short":["DO","LU","MA","MI","JU","VI","SA"],"months-standAlone-narrow":["E","F","M","A","M","J","J","A","S","O","N","D"],"days-format-narrow":["D","L","M","X","J","V","S"],"dateFormatItem-EHm":"E, H:mm","field-quarter-narrow":"trim.","dateFormatItem-Hmsvvvv":"H:mm:ss (vvvv)","field-mon-short-relative+0":"este lun.","field-mon-short-relative+1":"el próximo lun.","field-dayperiod-short":"a. m./p. m.","dayPeriods-standAlone-narrow-am":"a. m.","field-week-narrow-relative+-1":"sem. ant.","field-thu-relative+-1":"el jueves pasado","field-fri-narrow-relative+-1":"el VI pasado","field-mon-short-relative+-1":"el lun. pasado","timeFormat-medium":"H:mm:ss","dateFormatItem-Ed":"E d","field-wed-relative+-1":"el miércoles pasado","field-weekOfMonth":"semana del mes","dateFormatItem-hmsvvvv":"h:mm:ss a (vvvv)","field-weekdayOfMonth-narrow":"día de sem. de mes","dayPeriods-standAlone-wide-am":"a. m.","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"el viernes pasado","field-minute":"minuto","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"field-day-short":"d","field-dayperiod":"a. m./p. m.","field-hour-short":"h","months-standAlone-abbr":["ene","feb","mar","abr","may","jun","jul","ago","sept","oct","nov","dic"],"field-second-narrow":"s","field-month-relative+0":"este mes","field-month-relative+1":"el próximo mes","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","field-era-narrow":"era","field-sat-short-relative+-1":"el sáb. pasado","dayPeriods-format-narrow-noon":"del mediodía","field-week-short-relative+-1":"sem. ant.","dateFormatItem-yMMMMEd":"EEE, d 'de' MMMM 'de' y","dateTimeFormat-long":"{1}, {0}","dateFormatItem-yM":"M/y","field-sun-relative+-1":"el domingo pasado","field-wed-short-relative+-1":"el mié. pasado","field-weekdayOfMonth":"día de la semana del mes","dateFormatItem-GyMMMEd":"E, d MMM y G","field-sat-short-relative+0":"este sáb.","field-hour-narrow":"h","field-sat-short-relative+1":"el próximo sáb.","field-year-narrow-relative+0":"este año","field-year-narrow-relative+1":"el próximo año","dateFormatItem-Gy":"y G","field-zone-narrow":"zona","dayPeriods-standAlone-narrow-noon":"mediodía","field-tue-relative+-1":"el martes pasado","field-minute-short":"min","dateFormatItem-yw":"'semana' w 'de' Y","dateFormatItem-Hm":"H:mm","field-week-relative+0":"esta semana","field-week-relative+1":"la próxima semana","dateFormatItem-MMM":"LLL","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","field-sat-narrow-relative+-1":"el SA pasado","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-MMd":"d/M","dateFormatItem-MMMMW":"'semana' W 'de' MMMM","field-month-short-relative+-1":"el mes pasado","dateFormatItem-EHms":"E, H:mm:ss","dateFormatItem-MMMMd":"d 'de' MMMM","field-week":"semana","field-day-narrow":"d"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/hebrew.js b/lib/dojo/cldr/nls/es/hebrew.js
index 75e6cab0a..75002cd0c 100644
--- a/lib/dojo/cldr/nls/es/hebrew.js
+++ b/lib/dojo/cldr/nls/es/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/es/hebrew",{"days-standAlone-short":["DO","LU","MA","MI","JU","VI","SA"],"field-second-relative+0":"ahora","quarters-standAlone-narrow":["1T","2T","3T","4T"],"field-weekday":"Día de la semana","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"el martes pasado","days-format-short":["DO","LU","MA","MI","JU","VI","SA"],"dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"el viernes pasado","field-wed-relative+-1":"el miércoles pasado","dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"p. m.","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-thu-relative+-1":"el jueves pasado","dateFormatItem-Md":"d/M","field-era":"Era","timeFormat-short":"H:mm","quarters-format-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"timeFormat-long":"H:mm:ss z","field-year":"Año","field-hour":"Hora","field-sat-relative+0":"este sábado","field-sat-relative+1":"el próximo sábado","timeFormat-full":"H:mm:ss (zzzz)","field-day-relative+0":"hoy","field-thu-relative+0":"este jueves","field-day-relative+1":"mañana","field-thu-relative+1":"el próximo jueves","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"pasado mañana","quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"EEE, d MMM y G","days-standAlone-wide":["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["AM"],"field-minute":"Minuto","field-dayperiod":"a. m./p. m.","days-standAlone-abbr":["Dom.","Lun.","Mar.","Mié.","Jue.","Vie.","Sáb."],"quarters-format-narrow":["1T","2T","3T","4T"],"field-day-relative+-1":"ayer","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"anteayer","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"este viernes","field-fri-relative+1":"el próximo viernes","field-day":"Día","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-zone":"Zona horaria","dateFormatItem-y":"y G","field-year-relative+-1":"el año pasado","field-month-relative+-1":"el mes pasado","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom.","lun.","mar.","mié.","jue.","vie.","sáb."],"days-format-narrow":["D","L","M","X","J","V","S"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Mes","days-standAlone-narrow":["D","L","M","X","J","V","S"],"field-tue-relative+0":"este martes","field-tue-relative+1":"el próximo martes","dayPeriods-format-wide-am":"a. m.","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Segundo","field-sat-relative+-1":"el sábado pasado","field-sun-relative+-1":"el domingo pasado","field-month-relative+0":"este mes","field-month-relative+1":"el próximo mes","dateFormatItem-Ed":"E d","field-week":"Semana","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este año","field-week-relative+-1":"la semana pasada","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"el próximo año","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"el lunes pasado","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"la próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/es/hebrew",{"field-tue-relative+-1":"el martes pasado","field-year":"año","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","timeFormat-short":"H:mm","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-thu-short-relative+0":"este jue.","field-day-short-relative+-1":"ayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","dayPeriods-format-narrow-am":"a. m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"día de sem. de mes","dayPeriods-format-abbr-am":"a. m.","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["AM"],"field-weekOfMonth":"semana del mes","dayPeriods-standAlone-abbr-pm":"p. m.","field-month-short":"m","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","dayPeriods-format-wide-am":"a. m.","field-sat-short-relative+-1":"el sáb. pasado","field-hour-relative+0":"esta hora","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-wed-relative+-1":"el miércoles pasado","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","days-standAlone-narrow":["D","L","M","X","J","V","S"],"dayPeriods-standAlone-wide-pm":"p. m.","dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"days-format-narrow":["D","L","M","X","J","V","S"],"field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","dateFormatItem-GyMMM":"MMM y G","field-month":"mes","field-day-narrow":"d","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","dayPeriods-format-narrow-pm":"p. m.","dateFormat-medium":"d/M/y G","dateFormatItem-yyyyMMMM":"MMMM 'de' y G","eraAbbr":["AM"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dayPeriods-format-abbr-pm":"p. m.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"el trimestre pasado","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a. m./p. m.","dayPeriods-standAlone-narrow-am":"a. m.","field-week-narrow-relative+-1":"sem. ant.","days-format-short":["DO","LU","MA","MI","JU","VI","SA"],"dayPeriods-format-wide-pm":"p. m.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d/M","field-hour":"hora","months-format-wide":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-month-relative+-1":"el mes pasado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","months-format-abbr":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","dateFormat-short":"d/M/yy G","field-thu-short-relative+-1":"el jue. pasado","field-year-narrow-relative+-1":"el año pasado","days-standAlone-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-yyyyMMMEd":"EEE, d MMM y G","field-mon-narrow-relative+-1":"el LU pasado","dateFormatItem-MMMMd":"d 'de' MMMM","field-thu-narrow-relative+-1":"el JU pasado","field-tue-narrow-relative+-1":"el MA pasado","field-weekOfMonth-short":"sem. de mes","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p. m.","field-wed-short-relative+0":"este mié.","months-standAlone-wide":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","days-standAlone-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateTimeFormat-full":"{1}, {0}","months-format-abbr-leap":"adar II","field-weekday":"día de la semana","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"hoy","field-day-short-relative+1":"mañana","field-sat-relative+0":"este sábado","field-day-short-relative+2":"pasado mañana","field-sat-relative+1":"el próximo sábado","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","months-standAlone-abbr":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"months-format-wide-leap":"adar II","months-format-narrow-leap":"7","field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","timeFormat-full":"H:mm:ss (zzzz)","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"este JU","field-thu-narrow-relative+1":"el próximo JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","quarters-format-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","field-dayperiod-short":"a. m./p. m.","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","days-standAlone-short":["DO","LU","MA","MI","JU","VI","SA"],"field-week-short-relative+-1":"sem. ant.","months-standAlone-abbr-leap":"adar II","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","field-hour-short":"h","field-zone-short":"zona","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","eraNarrow":"AM","field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-mon-narrow-relative+0":"este LU","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"sem. de mes","field-weekday-narrow":"día de sem.","months-standAlone-wide-leap":"adar II","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","dayPeriods-standAlone-abbr-am":"a. m.","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","dateFormatItem-Gy":"y G","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI","dayPeriods-standAlone-wide-am":"a. m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/indian.js b/lib/dojo/cldr/nls/es/indian.js
new file mode 100644
index 000000000..5697c87d4
--- /dev/null
+++ b/lib/dojo/cldr/nls/es/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/es/indian",{"field-tue-relative+-1":"el martes pasado","field-year":"año","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-thu-short-relative+0":"este jue.","field-day-short-relative+-1":"ayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","field-weekdayOfMonth-narrow":"día de sem. de mes","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["saka"],"field-weekOfMonth":"semana del mes","field-month-short":"m","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","field-sat-short-relative+-1":"el sáb. pasado","field-hour-relative+0":"esta hora","field-wed-relative+-1":"el miércoles pasado","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","field-month":"mes","field-day-narrow":"d","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","eraAbbr":["saka"],"field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"el trimestre pasado","field-dayperiod-narrow":"a. m./p. m.","field-week-narrow-relative+-1":"sem. ant.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","field-hour":"hora","months-format-wide":["chaitra","vaisakha","jyaistha","asadha","sravana","bhadra","asvina","kartika","agrahayana","pausa","magha","phalguna"],"field-month-relative+-1":"el mes pasado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","months-format-abbr":["chaitra","vaisakha","jyaistha","asadha","sravana","bhadra","asvina","kartika","agrahayana","pausa","magha","phalguna"],"field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","field-thu-short-relative+-1":"el jue. pasado","field-year-narrow-relative+-1":"el año pasado","field-mon-narrow-relative+-1":"el LU pasado","field-thu-narrow-relative+-1":"el JU pasado","field-tue-narrow-relative+-1":"el MA pasado","field-weekOfMonth-short":"sem. de mes","field-wed-short-relative+0":"este mié.","months-standAlone-wide":["chaitra","vaisakha","jyaistha","asadha","sravana","bhadra","asvina","kartika","agrahayana","pausa","magha","phalguna"],"field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","field-weekday":"día de la semana","field-day-short-relative+0":"hoy","field-sat-relative+0":"este sábado","field-day-short-relative+1":"mañana","field-sat-relative+1":"el próximo sábado","field-day-short-relative+2":"pasado mañana","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","months-standAlone-abbr":["chaitra","vaisakha","jyaistha","asadha","sravana","bhadra","asvina","kartika","agrahayana","pausa","magha","phalguna"],"field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","field-zone-narrow":"zona","field-thu-narrow-relative+0":"este JU","field-thu-narrow-relative+1":"el próximo JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","field-dayperiod-short":"a. m./p. m.","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","field-week-short-relative+-1":"sem. ant.","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","eraNarrow":"saka","field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","field-mon-narrow-relative+0":"este LU","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","field-weekOfMonth-narrow":"sem. de mes","field-weekday-narrow":"día de sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/islamic.js b/lib/dojo/cldr/nls/es/islamic.js
index 8f3062f78..acba5c4ab 100644
--- a/lib/dojo/cldr/nls/es/islamic.js
+++ b/lib/dojo/cldr/nls/es/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/es/islamic",{"days-standAlone-short":["DO","LU","MA","MI","JU","VI","SA"],"field-second-relative+0":"ahora","quarters-standAlone-narrow":["1T","2T","3T","4T"],"field-weekday":"Día de la semana","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"el martes pasado","days-format-short":["DO","LU","MA","MI","JU","VI","SA"],"dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"el viernes pasado","field-wed-relative+-1":"el miércoles pasado","dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"p. m.","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-thu-relative+-1":"el jueves pasado","dateFormatItem-Md":"d/M","field-era":"Era","timeFormat-short":"H:mm","quarters-format-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"timeFormat-long":"H:mm:ss z","field-year":"Año","field-hour":"Hora","field-sat-relative+0":"este sábado","field-sat-relative+1":"el próximo sábado","timeFormat-full":"H:mm:ss (zzzz)","field-day-relative+0":"hoy","field-thu-relative+0":"este jueves","field-day-relative+1":"mañana","field-thu-relative+1":"el próximo jueves","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"pasado mañana","quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"EEE, d MMM y G","days-standAlone-wide":["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["AH"],"field-minute":"Minuto","field-dayperiod":"a. m./p. m.","days-standAlone-abbr":["Dom.","Lun.","Mar.","Mié.","Jue.","Vie.","Sáb."],"quarters-format-narrow":["1T","2T","3T","4T"],"field-day-relative+-1":"ayer","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"anteayer","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"este viernes","field-fri-relative+1":"el próximo viernes","field-day":"Día","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-zone":"Zona horaria","dateFormatItem-y":"y G","field-year-relative+-1":"el año pasado","field-month-relative+-1":"el mes pasado","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom.","lun.","mar.","mié.","jue.","vie.","sáb."],"days-format-narrow":["D","L","M","X","J","V","S"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Mes","days-standAlone-narrow":["D","L","M","X","J","V","S"],"field-tue-relative+0":"este martes","field-tue-relative+1":"el próximo martes","dayPeriods-format-wide-am":"a. m.","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Segundo","field-sat-relative+-1":"el sábado pasado","field-sun-relative+-1":"el domingo pasado","field-month-relative+0":"este mes","field-month-relative+1":"el próximo mes","dateFormatItem-Ed":"E d","field-week":"Semana","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este año","field-week-relative+-1":"la semana pasada","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"el próximo año","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"el lunes pasado","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"la próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/es/islamic",{"field-tue-relative+-1":"el martes pasado","field-year":"año","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","timeFormat-short":"H:mm","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-thu-short-relative+0":"este jue.","field-day-short-relative+-1":"ayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","dayPeriods-format-narrow-am":"a. m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"día de sem. de mes","dayPeriods-format-abbr-am":"a. m.","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AH"],"field-weekOfMonth":"semana del mes","dayPeriods-standAlone-abbr-pm":"p. m.","field-month-short":"m","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","dayPeriods-format-wide-am":"a. m.","field-sat-short-relative+-1":"el sáb. pasado","field-hour-relative+0":"esta hora","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-wed-relative+-1":"el miércoles pasado","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","days-standAlone-narrow":["D","L","M","X","J","V","S"],"dayPeriods-standAlone-wide-pm":"p. m.","dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"days-format-narrow":["D","L","M","X","J","V","S"],"field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","dateFormatItem-GyMMM":"MMM y G","field-month":"mes","field-day-narrow":"d","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","dayPeriods-format-narrow-pm":"p. m.","dateFormat-medium":"d/M/y G","dateFormatItem-yyyyMMMM":"MMMM 'de' y G","eraAbbr":["AH"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dayPeriods-format-abbr-pm":"p. m.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"el trimestre pasado","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a. m./p. m.","dayPeriods-standAlone-narrow-am":"a. m.","field-week-narrow-relative+-1":"sem. ant.","days-format-short":["DO","LU","MA","MI","JU","VI","SA"],"dayPeriods-format-wide-pm":"p. m.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d/M","field-hour":"hora","months-format-wide":["muharram","safar","rabiʻ I","rabiʻ II","jumada I","jumada II","rajab","shaʻban","ramadán","shawwal","dhuʻl-qiʻdah","dhuʻl-hijjah"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-month-relative+-1":"el mes pasado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","months-format-abbr":["muh.","saf.","rab. I","rab. II","jum. I","jum. II","raj.","sha.","ram.","shaw.","dhuʻl-q.","dhuʻl-h."],"field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","dateFormat-short":"d/M/yy G","field-thu-short-relative+-1":"el jue. pasado","field-year-narrow-relative+-1":"el año pasado","days-standAlone-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-yyyyMMMEd":"EEE, d MMM y G","field-mon-narrow-relative+-1":"el LU pasado","dateFormatItem-MMMMd":"d 'de' MMMM","field-thu-narrow-relative+-1":"el JU pasado","field-tue-narrow-relative+-1":"el MA pasado","field-weekOfMonth-short":"sem. de mes","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p. m.","field-wed-short-relative+0":"este mié.","months-standAlone-wide":["muharram","safar","rabiʻ I","rabiʻ II","jumada I","jumada II","rajab","shaʻban","ramadán","shawwal","dhuʻl-qiʻdah","dhuʻl-hijjah"],"field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","days-standAlone-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateTimeFormat-full":"{1}, {0}","field-weekday":"día de la semana","field-day-short-relative+0":"hoy","field-sat-relative+0":"este sábado","field-day-short-relative+1":"mañana","field-sat-relative+1":"el próximo sábado","field-day-short-relative+2":"pasado mañana","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","months-standAlone-abbr":["muh.","saf.","rab. I","rab. II","jum. I","jum. II","raj.","sha.","ram.","shaw.","dhuʻl-q.","dhuʻl-h."],"field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","timeFormat-full":"H:mm:ss (zzzz)","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"este JU","field-thu-narrow-relative+1":"el próximo JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","quarters-format-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","field-dayperiod-short":"a. m./p. m.","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","days-standAlone-short":["DO","LU","MA","MI","JU","VI","SA"],"field-week-short-relative+-1":"sem. ant.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","field-hour-short":"h","field-zone-short":"zona","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","eraNarrow":"AH","field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-mon-narrow-relative+0":"este LU","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"sem. de mes","field-weekday-narrow":"día de sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","dayPeriods-standAlone-abbr-am":"a. m.","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","dateFormatItem-Gy":"y G","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI","dayPeriods-standAlone-wide-am":"a. m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/japanese.js b/lib/dojo/cldr/nls/es/japanese.js
index 4f6b845e3..907b166e3 100644
--- a/lib/dojo/cldr/nls/es/japanese.js
+++ b/lib/dojo/cldr/nls/es/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/es/japanese",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"el próximo sábado","field-dayperiod":"a. m./p. m.","field-sun-relative+-1":"el domingo pasado","field-mon-relative+-1":"el lunes pasado","field-minute":"Minuto","field-day-relative+-1":"ayer","field-weekday":"Día de la semana","field-day-relative+-2":"anteayer","field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","field-wed-relative+-1":"el miércoles pasado","field-day-relative+0":"hoy","field-day-relative+1":"mañana","field-day-relative+2":"pasado mañana","dateFormat-long":"d 'de' MMMM 'de' y G","field-tue-relative+0":"este martes","field-zone":"Zona horaria","field-tue-relative+1":"el próximo martes","field-week-relative+-1":"la semana pasada","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-sat-relative+-1":"el sábado pasado","field-year-relative+-1":"el año pasado","field-year":"Año","field-fri-relative+0":"este viernes","field-fri-relative+1":"el próximo viernes","field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"la próxima semana","field-month-relative+0":"este mes","field-month":"Mes","field-month-relative+1":"el próximo mes","field-fri-relative+-1":"el viernes pasado","field-second":"Segundo","field-tue-relative+-1":"el martes pasado","field-day":"Día","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-thu-relative+0":"este jueves","field-second-relative+0":"ahora","dateFormat-short":"dd/MM/yy GGGGG","field-thu-relative+1":"el próximo jueves","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","field-month-relative+-1":"el mes pasado","field-thu-relative+-1":"el jueves pasado"}); \ No newline at end of file
+define("dojo/cldr/nls/es/japanese",{"field-tue-relative+-1":"el martes pasado","field-year":"año","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-thu-short-relative+0":"este jue.","field-day-short-relative+-1":"ayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","field-weekdayOfMonth-narrow":"día de sem. de mes","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","field-weekOfMonth":"semana del mes","field-month-short":"m","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","field-sat-short-relative+-1":"el sáb. pasado","field-hour-relative+0":"esta hora","field-wed-relative+-1":"el miércoles pasado","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","dateFormat-long":"d 'de' MMMM 'de' y G","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","field-month":"mes","field-day-narrow":"d","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","dateFormat-medium":"dd/MM/y G","field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","field-quarter-relative+-1":"el trimestre pasado","field-dayperiod-narrow":"a. m./p. m.","field-week-narrow-relative+-1":"sem. ant.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","field-hour":"hora","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-month-relative+-1":"el mes pasado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","dateFormat-short":"dd/MM/yy GGGGG","field-thu-short-relative+-1":"el jue. pasado","field-year-narrow-relative+-1":"el año pasado","field-mon-narrow-relative+-1":"el LU pasado","field-thu-narrow-relative+-1":"el JU pasado","field-tue-narrow-relative+-1":"el MA pasado","field-weekOfMonth-short":"sem. de mes","field-wed-short-relative+0":"este mié.","field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","field-weekday":"día de la semana","field-day-short-relative+0":"hoy","field-sat-relative+0":"este sábado","field-day-short-relative+1":"mañana","field-sat-relative+1":"el próximo sábado","field-day-short-relative+2":"pasado mañana","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","field-zone-narrow":"zona","field-thu-narrow-relative+0":"este JU","field-thu-narrow-relative+1":"el próximo JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","field-dayperiod-short":"a. m./p. m.","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","field-week-short-relative+-1":"sem. ant.","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","field-mon-narrow-relative+0":"este LU","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","field-weekOfMonth-narrow":"sem. de mes","field-weekday-narrow":"día de sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/number.js b/lib/dojo/cldr/nls/es/number.js
index 7dbe29306..2dae6810b 100644
--- a/lib/dojo/cldr/nls/es/number.js
+++ b/lib/dojo/cldr/nls/es/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/es/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 billones","decimalFormat-short":"000 B"}); \ No newline at end of file
+define("dojo/cldr/nls/es/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 B","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 billones","decimalFormat":"#,##0.###","currencyFormat-short":"000 B¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/persian.js b/lib/dojo/cldr/nls/es/persian.js
new file mode 100644
index 000000000..10a39dc18
--- /dev/null
+++ b/lib/dojo/cldr/nls/es/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/es/persian",{"field-tue-relative+-1":"el martes pasado","field-year":"año","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","timeFormat-short":"H:mm","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-thu-short-relative+0":"este jue.","field-day-short-relative+-1":"ayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","dayPeriods-format-narrow-am":"a. m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"día de sem. de mes","dayPeriods-format-abbr-am":"a. m.","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AP"],"field-weekOfMonth":"semana del mes","dayPeriods-standAlone-abbr-pm":"p. m.","field-month-short":"m","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","dayPeriods-format-wide-am":"a. m.","field-sat-short-relative+-1":"el sáb. pasado","field-hour-relative+0":"esta hora","dateFormatItem-yyyyMEd":"E, d/M/y GGGGG","field-wed-relative+-1":"el miércoles pasado","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","days-standAlone-narrow":["D","L","M","X","J","V","S"],"dayPeriods-standAlone-wide-pm":"p. m.","dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","quarters-standAlone-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"days-format-narrow":["D","L","M","X","J","V","S"],"field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","dateFormatItem-GyMMM":"MMM y G","field-month":"mes","field-day-narrow":"d","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","dayPeriods-format-narrow-pm":"p. m.","dateFormat-medium":"d/M/y G","dateFormatItem-yyyyMMMM":"MMMM 'de' y G","eraAbbr":["AP"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dayPeriods-format-abbr-pm":"p. m.","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"el trimestre pasado","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a. m./p. m.","dayPeriods-standAlone-narrow-am":"a. m.","field-week-narrow-relative+-1":"sem. ant.","days-format-short":["DO","LU","MA","MI","JU","VI","SA"],"dayPeriods-format-wide-pm":"p. m.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d/M","field-hour":"hora","months-format-wide":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-month-relative+-1":"el mes pasado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","months-format-abbr":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","dateFormat-short":"d/M/yy G","field-thu-short-relative+-1":"el jue. pasado","field-year-narrow-relative+-1":"el año pasado","days-standAlone-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"dateFormatItem-yyyyMMMEd":"EEE, d MMM y G","field-mon-narrow-relative+-1":"el LU pasado","dateFormatItem-MMMMd":"d 'de' MMMM","field-thu-narrow-relative+-1":"el JU pasado","field-tue-narrow-relative+-1":"el MA pasado","field-weekOfMonth-short":"sem. de mes","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p. m.","field-wed-short-relative+0":"este mié.","months-standAlone-wide":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","days-standAlone-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"dateTimeFormat-full":"{1}, {0}","field-weekday":"día de la semana","field-day-short-relative+0":"hoy","field-sat-relative+0":"este sábado","field-day-short-relative+1":"mañana","field-sat-relative+1":"el próximo sábado","field-day-short-relative+2":"pasado mañana","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","months-standAlone-abbr":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","timeFormat-full":"H:mm:ss (zzzz)","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"este JU","field-thu-narrow-relative+1":"el próximo JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","quarters-format-wide":["1.er trimestre","2.º trimestre","3.er trimestre","4.º trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","field-dayperiod-short":"a. m./p. m.","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","days-standAlone-short":["DO","LU","MA","MI","JU","VI","SA"],"field-week-short-relative+-1":"sem. ant.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","field-hour-short":"h","field-zone-short":"zona","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","eraNarrow":"AP","field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","days-format-wide":["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],"field-mon-narrow-relative+0":"este LU","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"sem. de mes","field-weekday-narrow":"día de sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","dayPeriods-standAlone-abbr-am":"a. m.","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","days-format-abbr":["dom","lun","mar","mié","jue","vie","sáb"],"field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","dateFormatItem-Gy":"y G","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI","dayPeriods-standAlone-wide-am":"a. m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/es/roc.js b/lib/dojo/cldr/nls/es/roc.js
index 430b2611d..bee4f2373 100644
--- a/lib/dojo/cldr/nls/es/roc.js
+++ b/lib/dojo/cldr/nls/es/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/es/roc",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"el próximo sábado","field-dayperiod":"a. m./p. m.","field-sun-relative+-1":"el domingo pasado","field-mon-relative+-1":"el lunes pasado","field-minute":"Minuto","field-day-relative+-1":"ayer","field-weekday":"Día de la semana","field-day-relative+-2":"anteayer","field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","field-wed-relative+-1":"el miércoles pasado","field-day-relative+0":"hoy","field-day-relative+1":"mañana","eraAbbr":["antes de R.O.C."],"field-day-relative+2":"pasado mañana","field-tue-relative+0":"este martes","field-zone":"Zona horaria","field-tue-relative+1":"el próximo martes","field-week-relative+-1":"la semana pasada","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-sat-relative+-1":"el sábado pasado","field-year-relative+-1":"el año pasado","field-year":"Año","field-fri-relative+0":"este viernes","field-fri-relative+1":"el próximo viernes","field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"la próxima semana","field-month-relative+0":"este mes","field-month":"Mes","field-month-relative+1":"el próximo mes","field-fri-relative+-1":"el viernes pasado","field-second":"Segundo","field-tue-relative+-1":"el martes pasado","field-day":"Día","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-thu-relative+0":"este jueves","field-second-relative+0":"ahora","field-thu-relative+1":"el próximo jueves","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","field-month-relative+-1":"el mes pasado","field-thu-relative+-1":"el jueves pasado"}); \ No newline at end of file
+define("dojo/cldr/nls/es/roc",{"field-tue-relative+-1":"el martes pasado","field-year":"año","field-wed-relative+0":"este miércoles","field-wed-relative+1":"el próximo miércoles","field-minute":"minuto","field-month-narrow-relative+-1":"el mes pasado","field-tue-narrow-relative+0":"este MA","field-tue-narrow-relative+1":"el próximo MA","field-thu-short-relative+0":"este jue.","field-day-short-relative+-1":"ayer","field-thu-short-relative+1":"el próximo jue.","field-day-relative+0":"hoy","field-day-short-relative+-2":"anteayer","field-day-relative+1":"mañana","field-week-narrow-relative+0":"esta sem.","field-day-relative+2":"pasado mañana","field-week-narrow-relative+1":"próx. sem.","field-wed-narrow-relative+-1":"el MI pasado","field-year-narrow":"a","field-era-short":"era","field-year-narrow-relative+0":"este año","field-tue-relative+0":"este martes","field-year-narrow-relative+1":"el próximo año","field-tue-relative+1":"el próximo martes","field-weekdayOfMonth":"día de la semana del mes","field-second-short":"s","field-weekdayOfMonth-narrow":"día de sem. de mes","field-week-relative+0":"esta semana","field-month-relative+0":"este mes","field-week-relative+1":"la próxima semana","field-month-relative+1":"el próximo mes","field-sun-narrow-relative+0":"este DO","field-mon-short-relative+0":"este lun.","field-sun-narrow-relative+1":"el próximo DO","field-mon-short-relative+1":"el próximo lun.","field-second-relative+0":"ahora","eraNames":["antes de RDC","minguo"],"field-weekOfMonth":"semana del mes","field-month-short":"m","field-day":"día","field-dayOfYear-short":"día del a","field-year-relative+-1":"el año pasado","field-sat-short-relative+-1":"el sáb. pasado","field-hour-relative+0":"esta hora","field-wed-relative+-1":"el miércoles pasado","field-sat-narrow-relative+-1":"el SA pasado","field-second":"segundo","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"hoy","field-day-narrow-relative+1":"mañana","field-day-narrow-relative+2":"pasado mañana","field-tue-short-relative+0":"este mar.","field-tue-short-relative+1":"el próximo mar.","field-month-short-relative+-1":"el mes pasado","field-mon-relative+-1":"el lunes pasado","field-month":"mes","field-day-narrow":"d","field-minute-short":"min","field-dayperiod":"a. m./p. m.","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"el próximo sáb.","eraAbbr":["antes de RDC","minguo"],"field-second-narrow":"s","field-mon-relative+0":"este lunes","field-mon-relative+1":"el próximo lunes","field-day-narrow-relative+-1":"ayer","field-year-short":"a","field-day-narrow-relative+-2":"anteayer","field-quarter-relative+-1":"el trimestre pasado","field-dayperiod-narrow":"a. m./p. m.","field-week-narrow-relative+-1":"sem. ant.","field-dayOfYear":"día del año","field-sat-relative+-1":"el sábado pasado","field-hour":"hora","field-month-relative+-1":"el mes pasado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este SA","field-fri-relative+0":"este viernes","field-sat-narrow-relative+1":"el próximo SA","field-fri-relative+1":"el próximo viernes","field-month-narrow-relative+0":"este mes","field-month-narrow-relative+1":"el próximo mes","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"el próximo dom.","field-week-relative+-1":"la semana pasada","field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"el próximo trimestre","field-wed-short-relative+-1":"el mié. pasado","field-thu-short-relative+-1":"el jue. pasado","field-year-narrow-relative+-1":"el año pasado","field-mon-narrow-relative+-1":"el LU pasado","field-thu-narrow-relative+-1":"el JU pasado","field-tue-narrow-relative+-1":"el MA pasado","field-weekOfMonth-short":"sem. de mes","field-wed-short-relative+0":"este mié.","field-wed-short-relative+1":"el próximo mié.","field-sun-relative+-1":"el domingo pasado","field-weekday":"día de la semana","field-day-short-relative+0":"hoy","field-sat-relative+0":"este sábado","field-day-short-relative+1":"mañana","field-sat-relative+1":"el próximo sábado","field-day-short-relative+2":"pasado mañana","field-week-short-relative+0":"esta sem.","field-week-short-relative+1":"próx. sem.","field-dayOfYear-narrow":"día del a","field-month-short-relative+0":"este mes","field-month-short-relative+1":"el próximo mes","field-weekdayOfMonth-short":"día de sem. de mes","field-zone-narrow":"zona","field-thu-narrow-relative+0":"este JU","field-thu-narrow-relative+1":"el próximo JU","field-sun-narrow-relative+-1":"el DO pasado","field-mon-short-relative+-1":"el lun. pasado","field-thu-relative+0":"este jueves","field-thu-relative+1":"el próximo jueves","field-fri-short-relative+-1":"el vie. pasado","field-thu-relative+-1":"el jueves pasado","field-week":"semana","field-wed-narrow-relative+0":"este MI","field-wed-narrow-relative+1":"el próximo MI","field-year-short-relative+0":"este año","field-dayperiod-short":"a. m./p. m.","field-year-short-relative+1":"el próximo año","field-fri-short-relative+0":"este vie.","field-fri-short-relative+1":"el próximo vie.","field-week-short-relative+-1":"sem. ant.","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m","field-hour-narrow":"h","field-fri-narrow-relative+-1":"el VI pasado","field-year-relative+0":"este año","field-year-relative+1":"el próximo año","field-era-narrow":"era","field-fri-relative+-1":"el viernes pasado","eraNarrow":["antes de RDC","minguo"],"field-tue-short-relative+-1":"el mar. pasado","field-minute-narrow":"min","field-mon-narrow-relative+0":"este LU","field-mon-narrow-relative+1":"el próximo LU","field-year-short-relative+-1":"el año pasado","field-zone":"zona horaria","field-weekOfMonth-narrow":"sem. de mes","field-weekday-narrow":"día de sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"el dom. pasado","field-day-relative+-1":"ayer","field-day-relative+-2":"anteayer","field-weekday-short":"día de sem.","field-sun-relative+0":"este domingo","field-sun-relative+1":"el próximo domingo","field-day-short":"d","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"este VI","field-fri-narrow-relative+1":"el próximo VI"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ethiopic-amete-alem.js b/lib/dojo/cldr/nls/ethiopic-amete-alem.js
index 5d39828cb..e68b7382f 100644
--- a/lib/dojo/cldr/nls/ethiopic-amete-alem.js
+++ b/lib/dojo/cldr/nls/ethiopic-amete-alem.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ethiopic-amete-alem",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","months-standAlone-abbr@localeAlias154":{"bundle":"ethiopic","target":"months-format-abbr"},"months-standAlone-abbr@localeAlias155":{"bundle":"ethiopic","target":"months-format-wide"},"dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","days-format-short@localeAlias161":{"bundle":"gregorian","target":"days-format-abbr"},"field-minute":"Minute","days-format-short@localeAlias162":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormat-short":"{1} {0}","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","eraNarrow@localeAlias181":{"bundle":"ethiopic-amete-alem","target":"eraAbbr"},"dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","timeFormat@localeAlias184":{"bundle":"ethiopic","target":"timeFormat"},"timeFormat@localeAlias185":{"bundle":"gregorian","target":"timeFormat"},"field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0"],"dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-wed-relative+-1":"last Wednesday","dayPeriods@localeAlias176":{"bundle":"ethiopic","target":"dayPeriods"},"dayPeriods@localeAlias177":{"bundle":"gregorian","target":"dayPeriods"},"dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","dateFormatItem-MMM":"LLL","field-dayperiod":"Dayperiod","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"G y MMM d","days-format-narrow@localeAlias160":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dateTime@localeAlias186":{"bundle":"ethiopic","target":"dateTime"},"dateTime@localeAlias187":{"bundle":"generic","target":"dateTime"},"eraAbbr":["ERA0"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","days@localeAlias157":{"bundle":"ethiopic","target":"days"},"days@localeAlias158":{"bundle":"gregorian","target":"days"},"dateFormatItem-yyyyM":"GGGGG y-MM","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"dateFormatItem-yyyyMMMd":"G y MMM d","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-hour":"Hour","months-format-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","eraNames@localeAlias180":{"bundle":"ethiopic-amete-alem","target":"eraAbbr"},"dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"timeFormat-long":"HH:mm:ss z","days-standAlone-wide@localeAlias168":{"bundle":"gregorian","target":"days-format-wide"},"dateFormat-short":"GGGGG y-MM-dd","quarters@localeAlias169":{"bundle":"ethiopic","target":"quarters"},"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","days-standAlone-abbr@localeAlias163":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias164":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormats-appendItem-Era":"{1} {0}","quarters-format-narrow@localeAlias172":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"dateFormatItem-H":"HH","quarters@localeAlias170":{"bundle":"gregorian","target":"quarters"},"dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"days-format-abbr@localeAlias159":{"bundle":"gregorian","target":"days-format-wide"},"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","months@localeAlias151":{"bundle":"ethiopic","target":"months"},"dateFormatItem-d":"d","field-weekday":"Day of the Week","months-format-abbr@localeAlias152":{"bundle":"ethiopic","target":"months-format-wide"},"field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"G y","months-format-narrow@localeAlias153":{"bundle":"ethiopic","target":"months-standAlone-narrow"},"field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-abbr-noon":"noon","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"G y MMM","dateFormat@localeAlias182":{"bundle":"ethiopic","target":"dateFormat"},"dateFormat@localeAlias183":{"bundle":"generic","target":"dateFormat"},"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-standAlone-wide@localeAlias175":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-yyyyQQQQ":"G y QQQQ","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","eraNarrow":["ERA0"],"dayPeriods-format-wide-noon":"noon","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-EHms":"E HH:mm:ss","quarters-standAlone-abbr@localeAlias173":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias174":{"bundle":"gregorian","target":"quarters-format-wide"},"field-day-relative+-1":"yesterday","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-era":"Era","months-standAlone-wide@localeAlias156":{"bundle":"ethiopic","target":"months-format-wide"},"days-standAlone-short@localeAlias165":{"bundle":"gregorian","target":"days-format-short"},"quarters-format-abbr@localeAlias171":{"bundle":"gregorian","target":"quarters-format-wide"},"days-standAlone-short@localeAlias166":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-short@localeAlias167":{"bundle":"gregorian","target":"days-format-wide"},"dayPeriods-format-abbr@localeAlias178":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dayPeriods-format-abbr@localeAlias179":{"bundle":"gregorian","target":"dayPeriods-format-wide"}}}); \ No newline at end of file
+define("dojo/cldr/nls/ethiopic-amete-alem",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+0":"this Sunday","field-sun-narrow-relative+1":"next Sunday","months-format-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"dayPeriods-standAlone-abbr-pm":"PM","field-dayOfYear-short@localeAlias569":{"bundle":"","target":"field-dayOfYear"},"dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","eraNarrow":["ERA0"],"field-fri-narrow-relative+1":"next Friday","field-quarter-narrow@localeAlias555":{"bundle":"","target":"field-quarter-short"},"field-quarter-narrow@localeAlias556":{"bundle":"","target":"field-quarter"},"days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","field-minute-narrow-relative+0":"this minute","days-standAlone-abbr@localeAlias518":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias519":{"bundle":"gregorian","target":"days-format-wide"},"days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","dateFormatItem-Ehms":"E h:mm:ss a","field-weekdayOfMonth-narrow@localeAlias576":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-wed-narrow@localeAlias588":{"bundle":"","target":"field-wed-short"},"field-weekdayOfMonth-narrow@localeAlias577":{"bundle":"","target":"field-weekdayOfMonth"},"field-wed-narrow@localeAlias589":{"bundle":"","target":"field-wed"},"field-thu-relative+0":"this Thursday","dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-weekdayOfMonth-short@localeAlias575":{"bundle":"","target":"field-weekdayOfMonth"},"field-quarter-relative+0":"this quarter","quarters@localeAlias524":{"bundle":"ethiopic","target":"quarters"},"field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","quarters@localeAlias525":{"bundle":"gregorian","target":"quarters"},"field-tue-short@localeAlias584":{"bundle":"","target":"field-tue"},"field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","field-week-narrow":"Week","field-thu-short@localeAlias590":{"bundle":"","target":"field-thu"},"field-day-narrow@localeAlias567":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias568":{"bundle":"","target":"field-day"},"field-hour-relative+0":"this hour","field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-minute-narrow":"Minute","dateFormatItem-yyyyMMM":"G y MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","field-era-short":"Era","field-day-narrow-relative+1":"tomorrow","dayPeriods-standAlone-narrow@localeAlias536":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-narrow@localeAlias537":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-month":"Month","months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"days-format-short@localeAlias516":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias517":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-sat-narrow@localeAlias597":{"bundle":"","target":"field-sat-short"},"field-weekday-narrow":"Day of the Week","field-sat-narrow@localeAlias598":{"bundle":"","target":"field-sat"},"field-second-short@localeAlias608":{"bundle":"","target":"field-second"},"field-year-relative+0":"this year","field-year-relative+1":"next year","field-tue-relative+0":"this Tuesday","eraNames@localeAlias540":{"bundle":"ethiopic-amete-alem","target":"eraAbbr"},"field-tue-relative+1":"next Tuesday","field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","field-year-narrow":"Year","field-second-narrow@localeAlias609":{"bundle":"","target":"field-second-short"},"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-narrow@localeAlias533":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-zone-narrow@localeAlias612":{"bundle":"","target":"field-zone-short"},"field-zone-narrow@localeAlias613":{"bundle":"","target":"field-zone"},"field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-second-narrow@localeAlias610":{"bundle":"","target":"field-second"},"field-year-short@localeAlias551":{"bundle":"","target":"field-year"},"field-era-short@localeAlias548":{"bundle":"","target":"field-era"},"field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","months-standAlone-abbr@localeAlias509":{"bundle":"ethiopic","target":"months-format-abbr"},"field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","field-mon-short@localeAlias581":{"bundle":"","target":"field-mon"},"field-wed-short-relative+0":"this Wednesday","field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","field-quarter-short-relative+-1":"last quarter","field-hour-short@localeAlias602":{"bundle":"","target":"field-hour"},"dayPeriods-standAlone-abbr@localeAlias535":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-year-short-relative+-1":"last year","dateFormatItem-Bhm":"h:mm B","months-standAlone-abbr@localeAlias510":{"bundle":"ethiopic","target":"months-format-wide"},"dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","timeFormat@localeAlias544":{"bundle":"ethiopic","target":"timeFormat"},"field-quarter-narrow-relative+-1":"last quarter","timeFormat@localeAlias545":{"bundle":"gregorian","target":"timeFormat"},"dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","days-standAlone-wide@localeAlias523":{"bundle":"gregorian","target":"days-format-wide"},"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-zone-short@localeAlias611":{"bundle":"","target":"field-zone"},"field-weekOfMonth-narrow":"Week Of Month","quarters-standAlone-wide@localeAlias530":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-yyyyQQQ":"G y QQQ","dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-y":"G y","field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTime@localeAlias546":{"bundle":"ethiopic","target":"dateTime"},"dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dateTime@localeAlias547":{"bundle":"generic","target":"dateTime"},"field-tue-narrow-relative+-1":"last Tuesday","field-tue-narrow@localeAlias585":{"bundle":"","target":"field-tue-short"},"field-tue-narrow@localeAlias586":{"bundle":"","target":"field-tue"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"G y MMM d","field-sat-relative+-1":"last Saturday","field-wed-short@localeAlias587":{"bundle":"","target":"field-wed"},"dayPeriods-standAlone-narrow-pm":"PM","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","field-second":"Second","quarters-format-narrow@localeAlias527":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-year-relative+-1":"last year","field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"GGGGG y-MM-dd","eraNames":["ERA0"],"field-second-short":"Second","field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","eraAbbr":["ERA0"],"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","field-year-narrow@localeAlias552":{"bundle":"","target":"field-year-short"},"field-day-relative+1":"tomorrow","field-year-narrow@localeAlias553":{"bundle":"","target":"field-year"},"days-standAlone-short@localeAlias520":{"bundle":"gregorian","target":"days-format-short"},"days-standAlone-short@localeAlias521":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-short@localeAlias522":{"bundle":"gregorian","target":"days-format-wide"},"field-month-narrow@localeAlias558":{"bundle":"","target":"field-month-short"},"field-month-narrow@localeAlias559":{"bundle":"","target":"field-month"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-day-short-relative+1":"tomorrow","dateFormat-long":"G y MMMM d","field-sun-narrow-relative+-1":"last Sunday","field-weekOfMonth-short@localeAlias563":{"bundle":"","target":"field-weekOfMonth"},"field-second-relative+0":"now","field-quarter-relative+-1":"last quarter","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"days-format-abbr@localeAlias514":{"bundle":"gregorian","target":"days-format-wide"},"months-standAlone-wide@localeAlias511":{"bundle":"ethiopic","target":"months-format-wide"},"field-sat-short@localeAlias596":{"bundle":"","target":"field-sat"},"field-week-relative+-1":"last week","field-month-relative+-1":"last month","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-year":"Year","field-era":"Era","months-format-abbr@localeAlias507":{"bundle":"ethiopic","target":"months-format-wide"},"days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"field-day-short-relative+-1":"yesterday","dateFormatItem-GyMMM":"G y MMM","timeFormat-full":"HH:mm:ss zzzz","field-day-short@localeAlias566":{"bundle":"","target":"field-day"},"dateFormatItem-Bhms":"h:mm:ss B","field-month-short@localeAlias557":{"bundle":"","target":"field-month"},"field-hour":"Hour","days-format-narrow@localeAlias515":{"bundle":"gregorian","target":"days-standAlone-narrow"},"field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-quarter":"Quarter","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","dateFormatItem-yyyy":"G y","field-dayOfYear-narrow@localeAlias570":{"bundle":"","target":"field-dayOfYear-short"},"dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-dayOfYear-narrow@localeAlias571":{"bundle":"","target":"field-dayOfYear"},"field-day":"Day","field-weekday-short@localeAlias572":{"bundle":"","target":"field-weekday"},"field-mon-narrow@localeAlias582":{"bundle":"","target":"field-mon-short"},"field-sun-narrow@localeAlias579":{"bundle":"","target":"field-sun-short"},"field-mon-narrow@localeAlias583":{"bundle":"","target":"field-mon"},"field-mon-relative+-1":"last Monday","field-dayOfYear":"Day Of Year","dateFormat-medium":"G y MMM d","dateTimeFormat-short":"{1} {0}","field-hour-narrow@localeAlias603":{"bundle":"","target":"field-hour-short"},"field-hour-narrow@localeAlias604":{"bundle":"","target":"field-hour"},"dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-MEd":"MM-dd, E","dayPeriods@localeAlias531":{"bundle":"ethiopic","target":"dayPeriods"},"dayPeriods@localeAlias532":{"bundle":"gregorian","target":"dayPeriods"},"field-sun-narrow@localeAlias580":{"bundle":"","target":"field-sun"},"field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","field-month-short":"Month","dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","dateFormatItem-Bh":"h B","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-dayperiod-narrow@localeAlias600":{"bundle":"","target":"field-dayperiod-short"},"field-dayperiod-narrow@localeAlias601":{"bundle":"","target":"field-dayperiod"},"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","dateFormatItem-yyyyMMMEd":"G y MMM d, E","field-era-narrow@localeAlias549":{"bundle":"","target":"field-era-short"},"dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","months-format-narrow@localeAlias508":{"bundle":"ethiopic","target":"months-standAlone-narrow"},"months@localeAlias506":{"bundle":"ethiopic","target":"months"},"field-month-narrow":"Month","dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"last month","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekday-narrow@localeAlias573":{"bundle":"","target":"field-weekday-short"},"field-weekday-narrow@localeAlias574":{"bundle":"","target":"field-weekday"},"field-weekday-short":"Day of the Week","field-day-narrow-relative+-1":"yesterday","field-quarter-short":"Quarter","field-week-narrow@localeAlias561":{"bundle":"","target":"field-week-short"},"days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-week-narrow@localeAlias562":{"bundle":"","target":"field-week"},"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era-narrow@localeAlias550":{"bundle":"","target":"field-era"},"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"Quarter","field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","field-thu-relative+-1":"last Thursday","quarters-standAlone-abbr@localeAlias528":{"bundle":"gregorian","target":"quarters-format-abbr"},"field-mon-short-relative+-1":"last Monday","quarters-standAlone-abbr@localeAlias529":{"bundle":"gregorian","target":"quarters-format-wide"},"field-fri-narrow-relative+-1":"last Friday","timeFormat-medium":"HH:mm:ss","field-fri-short@localeAlias593":{"bundle":"","target":"field-fri"},"field-quarter-short-relative+0":"this quarter","eraNarrow@localeAlias541":{"bundle":"ethiopic-amete-alem","target":"eraAbbr"},"field-quarter-short-relative+1":"next quarter","dateFormatItem-Ed":"d, E","field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","dayPeriods-standAlone-wide@localeAlias538":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"field-weekdayOfMonth-narrow":"Weekday Of Month","field-minute-narrow@localeAlias606":{"bundle":"","target":"field-minute-short"},"dayPeriods-standAlone-wide@localeAlias539":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-minute-narrow@localeAlias607":{"bundle":"","target":"field-minute"},"dayPeriods-standAlone-wide-am":"AM","field-thu-narrow@localeAlias591":{"bundle":"","target":"field-thu-short"},"field-weekOfMonth-narrow@localeAlias564":{"bundle":"","target":"field-weekOfMonth-short"},"days@localeAlias512":{"bundle":"ethiopic","target":"days"},"field-thu-narrow@localeAlias592":{"bundle":"","target":"field-thu"},"field-weekOfMonth-narrow@localeAlias565":{"bundle":"","target":"field-weekOfMonth"},"days@localeAlias513":{"bundle":"gregorian","target":"days"},"field-fri-relative+-1":"last Friday","field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-short":"Day","field-dayperiod":"Dayperiod","field-dayperiod-short@localeAlias599":{"bundle":"","target":"field-dayperiod"},"field-hour-short":"Hour","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","field-week-short-relative+-1":"last week","dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-weekdayOfMonth":"Weekday Of Month","quarters-format-abbr@localeAlias526":{"bundle":"gregorian","target":"quarters-format-wide"},"field-week-short@localeAlias560":{"bundle":"","target":"field-week"},"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-GyMMMEd":"G y MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","field-year-narrow-relative+0":"this year","field-year-narrow-relative+1":"next year","field-fri-narrow@localeAlias594":{"bundle":"","target":"field-fri-short"},"field-fri-narrow@localeAlias595":{"bundle":"","target":"field-fri"},"dateFormatItem-Gy":"G y","field-zone-narrow":"Zone","dateFormatItem-yyyyM":"GGGGG y-MM","field-tue-relative+-1":"last Tuesday","field-minute-short":"Minute","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"this week","field-week-relative+1":"next week","dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateFormat@localeAlias542":{"bundle":"ethiopic","target":"dateFormat"},"dateFormat@localeAlias543":{"bundle":"generic","target":"dateFormat"},"field-sat-narrow-relative+-1":"last Saturday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-sun-short@localeAlias578":{"bundle":"","target":"field-sun"},"field-minute-short@localeAlias605":{"bundle":"","target":"field-minute"},"field-quarter-short@localeAlias554":{"bundle":"","target":"field-quarter"},"field-month-short-relative+-1":"last month","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"MMMM d","field-week":"Week","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour","dayPeriods-format-wide@localeAlias534":{"bundle":"gregorian","target":"dayPeriods-format-abbr"}},"nb":true,"nl":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ethiopic.js b/lib/dojo/cldr/nls/ethiopic.js
index 55844d380..e7f64acb1 100644
--- a/lib/dojo/cldr/nls/ethiopic.js
+++ b/lib/dojo/cldr/nls/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ethiopic",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","dateTime@localeAlias150":{"bundle":"generic","target":"dateTime"},"dateTimeFormat-short":"{1} {0}","field-day-relative+0":"today","field-day-relative+1":"tomorrow","days@localeAlias126":{"bundle":"gregorian","target":"days"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","field-second-relative+0":"now","eraNames@localeAlias146":{"bundle":"ethiopic","target":"eraAbbr"},"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide@localeAlias136":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormats-appendItem-Timezone":"{0} {1}","quarters-format-narrow@localeAlias139":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","quarters@localeAlias137":{"bundle":"gregorian","target":"quarters"},"days-standAlone-abbr@localeAlias131":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias132":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-MMM":"LLL","field-dayperiod":"Dayperiod","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"G y MMM d","eraAbbr":["ERA0","ERA1"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","days-format-abbr@localeAlias127":{"bundle":"gregorian","target":"days-format-wide"},"field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"dateFormatItem-yyyyMMMd":"G y MMM d","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","months-format-abbr@localeAlias121":{"bundle":"ethiopic","target":"months-format-wide"},"field-hour":"Hour","months-format-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","months-format-narrow@localeAlias122":{"bundle":"ethiopic","target":"months-standAlone-narrow"},"dateFormat@localeAlias148":{"bundle":"generic","target":"dateFormat"},"field-week-relative+-1":"last week","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"timeFormat-long":"HH:mm:ss z","dateFormat-short":"GGGGG y-MM-dd","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","quarters-standAlone-wide@localeAlias142":{"bundle":"gregorian","target":"quarters-format-wide"},"dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-H":"HH","dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"Day of the Week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"quarters-standAlone-abbr@localeAlias140":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias141":{"bundle":"gregorian","target":"quarters-format-wide"},"quarters-format-abbr@localeAlias138":{"bundle":"gregorian","target":"quarters-format-wide"},"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"G y","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-abbr-noon":"noon","days-standAlone-short@localeAlias133":{"bundle":"gregorian","target":"days-format-short"},"days-format-short@localeAlias129":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-short@localeAlias134":{"bundle":"gregorian","target":"days-format-abbr"},"months-standAlone-wide@localeAlias125":{"bundle":"ethiopic","target":"months-format-wide"},"days-standAlone-short@localeAlias135":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","dayPeriods-format-abbr@localeAlias144":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"field-thu-relative+-1":"last Thursday","dayPeriods-format-abbr@localeAlias145":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"G y MMM","months-standAlone-abbr@localeAlias123":{"bundle":"ethiopic","target":"months-format-abbr"},"months-standAlone-abbr@localeAlias124":{"bundle":"ethiopic","target":"months-format-wide"},"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"days-format-short@localeAlias130":{"bundle":"gregorian","target":"days-format-wide"},"eraNarrow@localeAlias147":{"bundle":"ethiopic","target":"eraAbbr"},"timeFormat@localeAlias149":{"bundle":"gregorian","target":"timeFormat"},"dateFormatItem-yyyyQQQQ":"G y QQQQ","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","eraNarrow":["ERA0","ERA1"],"dayPeriods-format-wide-noon":"noon","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-EHms":"E HH:mm:ss","field-day-relative+-1":"yesterday","dayPeriods@localeAlias143":{"bundle":"gregorian","target":"dayPeriods"},"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-era":"Era","days-format-narrow@localeAlias128":{"bundle":"gregorian","target":"days-standAlone-narrow"}},"ar":true,"fr":true,"hu":true,"id":true,"ja":true,"ko":true,"nl":true,"pl":true,"pt":true,"ro":true,"ru":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/ethiopic",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","months-standAlone-abbr@localeAlias407":{"bundle":"ethiopic","target":"months-format-abbr"},"timeFormat@localeAlias438":{"bundle":"gregorian","target":"timeFormat"},"months-standAlone-abbr@localeAlias408":{"bundle":"ethiopic","target":"months-format-wide"},"field-sun-narrow-relative+0":"this Sunday","field-sun-narrow-relative+1":"next Sunday","months-format-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-zone-short@localeAlias503":{"bundle":"","target":"field-zone"},"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","eraNarrow":["ERA0","ERA1"],"field-fri-narrow-relative+1":"next Friday","dayPeriods-standAlone-abbr@localeAlias430":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"quarters-standAlone-wide@localeAlias426":{"bundle":"gregorian","target":"quarters-format-wide"},"days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateTime@localeAlias439":{"bundle":"generic","target":"dateTime"},"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"days-standAlone-wide@localeAlias420":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","field-tue-narrow@localeAlias477":{"bundle":"","target":"field-tue-short"},"field-tue-narrow@localeAlias478":{"bundle":"","target":"field-tue"},"field-minute-narrow-relative+0":"this minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-wed-short@localeAlias479":{"bundle":"","target":"field-wed"},"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","dateFormatItem-Ehms":"E h:mm:ss a","field-thu-relative+0":"this Thursday","dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","field-week-narrow":"Week","field-hour-relative+0":"this hour","field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","quarters-format-narrow@localeAlias423":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-minute-narrow":"Minute","field-year-narrow@localeAlias444":{"bundle":"","target":"field-year-short"},"field-year-narrow@localeAlias445":{"bundle":"","target":"field-year"},"dateFormatItem-yyyyMMM":"G y MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","days-standAlone-short@localeAlias417":{"bundle":"gregorian","target":"days-format-short"},"field-era-short":"Era","field-hour-short@localeAlias494":{"bundle":"","target":"field-hour"},"field-day-narrow-relative+1":"tomorrow","days-standAlone-short@localeAlias418":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-short@localeAlias419":{"bundle":"gregorian","target":"days-format-wide"},"field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-month":"Month","field-month-narrow@localeAlias450":{"bundle":"","target":"field-month-short"},"months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-month-narrow@localeAlias451":{"bundle":"","target":"field-month"},"field-weekOfMonth-short@localeAlias455":{"bundle":"","target":"field-weekOfMonth"},"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow":"Day of the Week","field-year-relative+0":"this year","field-year-relative+1":"next year","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-sat-short@localeAlias488":{"bundle":"","target":"field-sat"},"field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","months-standAlone-wide@localeAlias409":{"bundle":"ethiopic","target":"months-format-wide"},"field-year-narrow":"Year","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","days-format-abbr@localeAlias411":{"bundle":"gregorian","target":"days-format-wide"},"field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-day-short@localeAlias458":{"bundle":"","target":"field-day"},"field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","field-month-short@localeAlias449":{"bundle":"","target":"field-month"},"field-wed-short-relative+0":"this Wednesday","field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","months-format-abbr@localeAlias405":{"bundle":"ethiopic","target":"months-format-wide"},"field-quarter-short-relative+-1":"last quarter","field-year-short-relative+-1":"last year","dateFormatItem-Bhm":"h:mm B","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-weekOfMonth-narrow":"Week Of Month","days-format-narrow@localeAlias412":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dateFormatItem-yyyyQQQ":"G y QQQ","dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-y":"G y","field-dayOfYear-narrow@localeAlias462":{"bundle":"","target":"field-dayOfYear-short"},"field-weekday-short@localeAlias464":{"bundle":"","target":"field-weekday"},"field-dayOfYear-narrow@localeAlias463":{"bundle":"","target":"field-dayOfYear"},"field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","field-mon-narrow@localeAlias474":{"bundle":"","target":"field-mon-short"},"dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","field-mon-narrow@localeAlias475":{"bundle":"","target":"field-mon"},"dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-narrow-relative+-1":"last Tuesday","field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"G y MMM d","field-sat-relative+-1":"last Saturday","field-sun-narrow@localeAlias471":{"bundle":"","target":"field-sun-short"},"field-sun-narrow@localeAlias472":{"bundle":"","target":"field-sun"},"dayPeriods@localeAlias427":{"bundle":"gregorian","target":"dayPeriods"},"dayPeriods-standAlone-narrow-pm":"PM","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","field-second":"Second","field-year-relative+-1":"last year","field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"GGGGG y-MM-dd","eraNames":["ERA0","ERA1"],"field-second-short":"Second","field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","eraAbbr":["ERA0","ERA1"],"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-weekday-narrow@localeAlias465":{"bundle":"","target":"field-weekday-short"},"field-weekday-narrow@localeAlias466":{"bundle":"","target":"field-weekday"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-day-short-relative+1":"tomorrow","dateFormat-long":"G y MMMM d","field-sun-narrow-relative+-1":"last Sunday","field-week-narrow@localeAlias453":{"bundle":"","target":"field-week-short"},"field-week-narrow@localeAlias454":{"bundle":"","target":"field-week"},"field-era-narrow@localeAlias441":{"bundle":"","target":"field-era-short"},"field-era-narrow@localeAlias442":{"bundle":"","target":"field-era"},"months-format-narrow@localeAlias406":{"bundle":"ethiopic","target":"months-standAlone-narrow"},"field-second-relative+0":"now","field-quarter-relative+-1":"last quarter","field-fri-short@localeAlias485":{"bundle":"","target":"field-fri"},"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-hour-narrow@localeAlias495":{"bundle":"","target":"field-hour-short"},"field-hour-narrow@localeAlias496":{"bundle":"","target":"field-hour"},"eraNarrow@localeAlias436":{"bundle":"ethiopic","target":"eraAbbr"},"field-week-relative+-1":"last week","field-month-relative+-1":"last month","quarters-standAlone-abbr@localeAlias424":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias425":{"bundle":"gregorian","target":"quarters-format-wide"},"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-thu-narrow@localeAlias483":{"bundle":"","target":"field-thu-short"},"field-weekOfMonth-narrow@localeAlias456":{"bundle":"","target":"field-weekOfMonth-short"},"field-thu-narrow@localeAlias484":{"bundle":"","target":"field-thu"},"field-weekOfMonth-narrow@localeAlias457":{"bundle":"","target":"field-weekOfMonth"},"field-year":"Year","field-era":"Era","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"field-dayperiod-narrow@localeAlias492":{"bundle":"","target":"field-dayperiod-short"},"field-dayperiod-narrow@localeAlias493":{"bundle":"","target":"field-dayperiod"},"field-day-short-relative+-1":"yesterday","dayPeriods-standAlone-wide@localeAlias433":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dateFormatItem-GyMMM":"G y MMM","dayPeriods-standAlone-wide@localeAlias434":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"timeFormat-full":"HH:mm:ss zzzz","days@localeAlias410":{"bundle":"gregorian","target":"days"},"dateFormatItem-Bhms":"h:mm:ss B","field-hour":"Hour","field-dayperiod-short@localeAlias491":{"bundle":"","target":"field-dayperiod"},"field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-week-short@localeAlias452":{"bundle":"","target":"field-week"},"field-quarter":"Quarter","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","dateFormatItem-yyyy":"G y","field-fri-narrow@localeAlias486":{"bundle":"","target":"field-fri-short"},"field-fri-narrow@localeAlias487":{"bundle":"","target":"field-fri"},"quarters-format-abbr@localeAlias422":{"bundle":"gregorian","target":"quarters-format-wide"},"dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"Day","field-mon-relative+-1":"last Monday","field-dayOfYear":"Day Of Year","dateFormat-medium":"G y MMM d","dateTimeFormat-short":"{1} {0}","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-MEd":"MM-dd, E","field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","field-month-short":"Month","dateFormat@localeAlias437":{"bundle":"generic","target":"dateFormat"},"field-minute-narrow@localeAlias498":{"bundle":"","target":"field-minute-short"},"dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","field-minute-narrow@localeAlias499":{"bundle":"","target":"field-minute"},"dateFormatItem-Bh":"h B","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-quarter-short@localeAlias446":{"bundle":"","target":"field-quarter"},"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-sun-short@localeAlias470":{"bundle":"","target":"field-sun"},"field-week-short-relative+1":"next week","dayPeriods-format-wide@localeAlias429":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","field-month-narrow":"Month","dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"last month","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekday-short":"Day of the Week","field-day-narrow-relative+-1":"yesterday","field-quarter-narrow@localeAlias447":{"bundle":"","target":"field-quarter-short"},"field-quarter-narrow@localeAlias448":{"bundle":"","target":"field-quarter"},"field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-dayOfYear-short@localeAlias461":{"bundle":"","target":"field-dayOfYear"},"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"Quarter","field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"this quarter","field-quarter-short-relative+1":"next quarter","dateFormatItem-Ed":"d, E","field-weekdayOfMonth-narrow@localeAlias468":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-weekdayOfMonth-narrow@localeAlias469":{"bundle":"","target":"field-weekdayOfMonth"},"field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","days-standAlone-abbr@localeAlias415":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias416":{"bundle":"gregorian","target":"days-format-wide"},"field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-standAlone-wide-am":"AM","field-weekdayOfMonth-short@localeAlias467":{"bundle":"","target":"field-weekdayOfMonth"},"field-fri-relative+-1":"last Friday","field-tue-short@localeAlias476":{"bundle":"","target":"field-tue"},"field-wed-narrow@localeAlias480":{"bundle":"","target":"field-wed-short"},"field-wed-narrow@localeAlias481":{"bundle":"","target":"field-wed"},"field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"field-thu-short@localeAlias482":{"bundle":"","target":"field-thu"},"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-narrow@localeAlias459":{"bundle":"","target":"field-day-short"},"field-day-short":"Day","field-dayperiod":"Dayperiod","field-minute-short@localeAlias497":{"bundle":"","target":"field-minute"},"field-hour-short":"Hour","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","quarters@localeAlias421":{"bundle":"gregorian","target":"quarters"},"field-week-short-relative+-1":"last week","field-day-narrow@localeAlias460":{"bundle":"","target":"field-day"},"dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-weekdayOfMonth":"Weekday Of Month","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-GyMMMEd":"G y MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","dayPeriods-standAlone-narrow@localeAlias431":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-narrow@localeAlias432":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-year-narrow-relative+0":"this year","field-year-narrow-relative+1":"next year","field-sat-narrow@localeAlias489":{"bundle":"","target":"field-sat-short"},"dateFormatItem-Gy":"G y","field-zone-narrow":"Zone","dateFormatItem-yyyyM":"GGGGG y-MM","field-tue-relative+-1":"last Tuesday","field-minute-short":"Minute","eraNames@localeAlias435":{"bundle":"ethiopic","target":"eraAbbr"},"days-format-short@localeAlias413":{"bundle":"gregorian","target":"days-format-abbr"},"field-sat-narrow@localeAlias490":{"bundle":"","target":"field-sat"},"days-format-short@localeAlias414":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-Hm":"HH:mm","field-second-short@localeAlias500":{"bundle":"","target":"field-second"},"field-week-relative+0":"this week","field-week-relative+1":"next week","dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","field-zone-narrow@localeAlias504":{"bundle":"","target":"field-zone-short"},"field-zone-narrow@localeAlias505":{"bundle":"","target":"field-zone"},"dayPeriods-format-narrow@localeAlias428":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-second-narrow@localeAlias501":{"bundle":"","target":"field-second-short"},"field-sat-narrow-relative+-1":"last Saturday","field-second-narrow@localeAlias502":{"bundle":"","target":"field-second"},"field-year-short@localeAlias443":{"bundle":"","target":"field-year"},"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-mon-short@localeAlias473":{"bundle":"","target":"field-mon"},"field-month-short-relative+-1":"last month","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"MMMM d","field-era-short@localeAlias440":{"bundle":"","target":"field-era"},"field-week":"Week","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour"},"ar":true,"cs":true,"da":true,"de":true,"el":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"ro":true,"ru":true,"sk":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/buddhist.js b/lib/dojo/cldr/nls/fi/buddhist.js
index 16b5c6d2d..6200fd5f1 100644
--- a/lib/dojo/cldr/nls/fi/buddhist.js
+++ b/lib/dojo/cldr/nls/fi/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fi/buddhist",{"days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"months-format-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-second-relative+0":"nyt","field-weekday":"viikonpäivä","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"ccc d. MMM","field-tue-relative+-1":"viime tiistaina","days-format-short":["su","ma","ti","ke","to","pe","la"],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"viime perjantaina","field-wed-relative+-1":"viime keskiviikkona","months-format-wide":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"ip.","dateFormat-full":"cccc d. MMMM y G","dateFormatItem-yyyyMEd":"E d.M.y G","field-thu-relative+-1":"viime torstaina","dateFormatItem-Md":"d.M.","dayPeriods-format-abbr-am":"ap.","field-era":"aikakausi","months-standAlone-wide":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],"timeFormat-short":"H.mm","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"timeFormat-long":"H.mm.ss z","field-year":"vuosi","field-hour":"tunti","months-format-abbr":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"field-sat-relative+0":"tänä lauantaina","field-sat-relative+1":"ensi lauantaina","timeFormat-full":"H.mm.ss zzzz","field-day-relative+0":"tänään","field-thu-relative+0":"tänä torstaina","field-day-relative+1":"huomenna","field-thu-relative+1":"ensi torstaina","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"ylihuomenna","dateFormatItem-H":"H","months-standAlone-abbr":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],"quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d. MMM y G","timeFormat-medium":"H.mm.ss","field-sun-relative+0":"tänä sunnuntaina","dateFormatItem-Hm":"H.mm","field-sun-relative+1":"ensi sunnuntaina","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"eraAbbr":["BE"],"field-minute":"minuutti","field-dayperiod":"vuorokaudenaika","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-ms":"mm.ss","field-day-relative+-1":"eilen","dayPeriods-format-narrow-am":"ap.","field-day-relative+-2":"toissa päivänä","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M.","field-fri-relative+0":"tänä perjantaina","field-fri-relative+1":"ensi perjantaina","field-day":"päivä","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-zone":"aikavyöhyke","dateFormatItem-y":"y G","months-standAlone-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-year-relative+-1":"viime vuonna","field-month-relative+-1":"viime kuussa","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"ip.","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"days-format-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-yyyyMd":"d.M.y G","field-month":"kuukausi","days-standAlone-narrow":["S","M","T","K","T","P","L"],"field-tue-relative+0":"tänä tiistaina","field-tue-relative+1":"ensi tiistaina","dayPeriods-format-wide-am":"ap.","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","dateFormat-short":"d.M.y GGGGG","field-second":"sekunti","field-sat-relative+-1":"viime lauantaina","field-sun-relative+-1":"viime sunnuntaina","field-month-relative+0":"tässä kuussa","field-month-relative+1":"ensi kuussa","dateFormatItem-Ed":"E d.","field-week":"viikko","dateFormat-medium":"d.M.y G","field-year-relative+0":"tänä vuonna","field-week-relative+-1":"viime viikolla","dateFormatItem-yyyyM":"L.y G","field-year-relative+1":"ensi vuonna","dayPeriods-format-narrow-pm":"ip.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"H.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"viime maanantaina","dateFormatItem-yyyy":"y G","field-week-relative+0":"tällä viikolla","field-week-relative+1":"ensi viikolla"}); \ No newline at end of file
+define("dojo/cldr/nls/fi/buddhist",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","dateFormatItem-Hm":"H.mm","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","dateFormatItem-ms":"mm.ss","timeFormat-short":"H.mm","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-thu-short-relative+0":"tänä to","field-day-short-relative+-1":"eilen","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"ensi to","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","field-wed-narrow-relative+-1":"viime ke","dateFormatItem-EBhms":"E h.mm.ss B","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","dayPeriods-format-narrow-am":"ap.","dateFormatItem-yyyyMM":"M.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"kuukauden vk päivä","dayPeriods-format-abbr-am":"ap.","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","timeFormat-medium":"H.mm.ss","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"eraNames":["buddhalainen aika"],"field-weekOfMonth":"kuukauden viikko","dayPeriods-standAlone-abbr-pm":"ip.","field-month-short":"kk","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","dayPeriods-format-wide-am":"ap.","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","dateTimeFormat-medium":"{1} 'klo' {0}","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","days-standAlone-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-yyyyMMMMccccd":"cccc d. MMMM y G","dayPeriods-standAlone-wide-pm":"ip.","dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"days-format-narrow":["S","M","T","K","T","P","L"],"field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","dateFormatItem-GyMMM":"LLL y G","field-month":"kuukausi","field-day-narrow":"pv","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","dayPeriods-format-narrow-pm":"ip.","dateFormat-medium":"d.M.y G","dateFormatItem-yyyyMMMM":"LLLL y G","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"dayPeriods-format-abbr-pm":"ip.","dateFormatItem-yyyyM":"L.y G","field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-day-narrow-relative+-2":"toissap.","months-format-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-quarter-relative+-1":"viime neljännesvuonna","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"vuorokaudenaika","dayPeriods-standAlone-narrow-am":"ap.","field-week-narrow-relative+-1":"viime vk","days-format-short":["su","ma","ti","ke","to","pe","la"],"dayPeriods-format-wide-pm":"ip.","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","dateTimeFormat-long":"{1} 'klo' {0}","dateFormatItem-Md":"d.M.","field-minute-narrow-relative+0":"minuutin sisällä","field-hour":"tunti","months-format-wide":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateFormat-full":"cccc d. MMMM y G","field-month-relative+-1":"viime kuussa","dateFormatItem-Hms":"H.mm.ss","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","field-minute-short-relative+0":"minuutin sisällä","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["tammik.","helmik.","maalisk.","huhtik.","toukok.","kesäk.","heinäk.","elok.","syysk.","lokak.","marrask.","jouluk."],"field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","timeFormat-long":"H.mm.ss z","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","dateFormat-short":"d.M.y GGGGG","field-year-narrow-relative+-1":"viime v","field-thu-short-relative+-1":"viime to","dateFormatItem-yyyyMMMEd":"E d. MMM y G","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"field-mon-narrow-relative+-1":"viime ma","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"viime to","field-tue-narrow-relative+-1":"viime ti","field-weekOfMonth-short":"kuukauden vk","dateFormatItem-H":"H","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"ip.","field-wed-short-relative+0":"tänä ke","months-standAlone-wide":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],"field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dateTimeFormat-full":"{1} 'klo' {0}","field-second-narrow-relative+0":"nyt","dateFormatItem-hm":"h.mm a","field-weekday":"viikonpäivä","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-day-short-relative+1":"huom.","field-sat-relative+0":"tänä lauantaina","field-quarter-narrow-relative+1":"ensi nelj.","field-day-short-relative+2":"ylihuom.","field-sat-relative+1":"ensi lauantaina","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","months-standAlone-abbr":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],"field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","timeFormat-full":"H.mm.ss zzzz","dateFormatItem-MEd":"E d.M.","field-zone-narrow":"aikavyöhyke","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tänä to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-narrow-relative+1":"ensi to","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","field-fri-short-relative+-1":"viime pe","dateFormatItem-hms":"h.mm.ss a","field-thu-relative+-1":"viime torstaina","field-week":"viikko","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","dateFormatItem-yyyyMMM":"LLL y G","field-dayperiod-short":"vuorokaudenaika","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"field-week-short-relative+-1":"viime vk","field-hour-narrow-relative+0":"tunnin sisällä","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"aikavyöhyke","quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-mon-narrow-relative+0":"tänä ma","field-mon-narrow-relative+1":"ensi ma","dateFormatItem-EHm":"E HH.mm","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","dateFormatItem-MMMEd":"ccc d. MMM","field-weekOfMonth-narrow":"kuukauden vk","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"viikonpäivä","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","dayPeriods-standAlone-abbr-am":"ap.","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","dateFormatItem-Gy":"y G","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe","dayPeriods-standAlone-wide-am":"ap."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/chinese.js b/lib/dojo/cldr/nls/fi/chinese.js
index b24c86b9b..405d2ecb4 100644
--- a/lib/dojo/cldr/nls/fi/chinese.js
+++ b/lib/dojo/cldr/nls/fi/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fi/chinese",{"field-sat-relative+0":"tänä lauantaina","dateFormatItem-yyyyMMMEd":"E d.M.y","field-sat-relative+1":"ensi lauantaina","field-dayperiod":"vuorokaudenaika","field-sun-relative+-1":"viime sunnuntaina","field-mon-relative+-1":"viime maanantaina","field-minute":"minuutti","dateFormatItem-MMMEd":"E d.M.","field-day-relative+-1":"eilen","dateFormatItem-hms":"h.mm.ss a","field-day-relative+-2":"toissa päivänä","field-weekday":"viikonpäivä","field-era":"aikakausi","field-hour":"tunti","dateFormatItem-y":"y","dateFormatItem-yyyy":"y","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","field-wed-relative+-1":"viime keskiviikkona","field-day-relative+0":"tänään","field-day-relative+1":"huomenna","field-day-relative+2":"ylihuomenna","dateFormat-long":"d.M.y","field-tue-relative+0":"tänä tiistaina","field-zone":"aikavyöhyke","dateFormatItem-Hm":"H.mm","field-tue-relative+1":"ensi tiistaina","field-week-relative+-1":"viime viikolla","dateFormat-medium":"d.M.y","dateFormatItem-Hms":"H.mm.ss","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-sat-relative+-1":"viime lauantaina","field-year-relative+-1":"viime vuonna","dateFormatItem-ms":"mm.ss","field-year":"vuosi","field-fri-relative+0":"tänä perjantaina","field-fri-relative+1":"ensi perjantaina","field-week":"viikko","dateFormatItem-yyyyMd":"d.M.y","dateFormatItem-yyyyMMMd":"d.M.y","dateFormatItem-yyyyMEd":"E d.M.y","dateFormatItem-MMMd":"d.M.","field-week-relative+0":"tällä viikolla","field-week-relative+1":"ensi viikolla","field-month-relative+0":"tässä kuussa","field-month":"kuukausi","field-month-relative+1":"ensi kuussa","dateFormatItem-H":"H","field-fri-relative+-1":"viime perjantaina","field-second":"sekunti","field-tue-relative+-1":"viime tiistaina","field-day":"päivä","dateFormatItem-MEd":"E d.M.","dateFormatItem-hm":"h.mm a","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-thu-relative+0":"tänä torstaina","field-second-relative+0":"nyt","dateFormat-short":"d.M.y","field-thu-relative+1":"ensi torstaina","dateFormat-full":"cccc d.M.y","dateFormatItem-Md":"d.M.","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","field-month-relative+-1":"viime kuussa","field-thu-relative+-1":"viime torstaina"}); \ No newline at end of file
+define("dojo/cldr/nls/fi/chinese",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","dateFormatItem-Hm":"H.mm","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","dateFormatItem-ms":"mm.ss","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-thu-short-relative+0":"tänä to","field-day-short-relative+-1":"eilen","field-thu-short-relative+1":"ensi to","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","field-wed-narrow-relative+-1":"viime ke","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","dateFormatItem-MMMd":"d.M.","field-weekdayOfMonth-narrow":"kuukauden vk päivä","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","field-weekOfMonth":"kuukauden viikko","field-month-short":"kk","dateFormatItem-yyyyMd":"d.M.y","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","dateFormatItem-yyyyMEd":"E d.M.y","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","dateFormat-long":"d.M.y","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","field-month":"kuukausi","field-day-narrow":"pv","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","dateFormat-medium":"d.M.y","field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-day-narrow-relative+-2":"toissap.","field-quarter-relative+-1":"viime neljännesvuonna","dateFormatItem-yyyyMMMd":"d.M.y","field-dayperiod-narrow":"vuorokaudenaika","field-week-narrow-relative+-1":"viime vk","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","dateFormatItem-Md":"d.M.","field-hour":"tunti","field-minute-narrow-relative+0":"minuutin sisällä","dateFormat-full":"cccc d.M.y","field-month-relative+-1":"viime kuussa","dateFormatItem-Hms":"H.mm.ss","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","field-minute-short-relative+0":"minuutin sisällä","field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","dateFormat-short":"d.M.y","field-thu-short-relative+-1":"viime to","field-year-narrow-relative+-1":"viime v","dateFormatItem-yyyyMMMEd":"E d.M.y","field-mon-narrow-relative+-1":"viime ma","field-thu-narrow-relative+-1":"viime to","field-tue-narrow-relative+-1":"viime ti","dateFormatItem-H":"H","field-weekOfMonth-short":"kuukauden vk","dateFormatItem-yyyy":"y","field-wed-short-relative+0":"tänä ke","field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","field-second-narrow-relative+0":"nyt","dateFormatItem-hm":"h.mm a","field-weekday":"viikonpäivä","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-day-short-relative+1":"huom.","field-sat-relative+0":"tänä lauantaina","field-quarter-narrow-relative+1":"ensi nelj.","field-day-short-relative+2":"ylihuom.","field-sat-relative+1":"ensi lauantaina","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","dateFormatItem-MEd":"E d.M.","field-zone-narrow":"aikavyöhyke","dateFormatItem-y":"y","field-thu-narrow-relative+0":"tänä to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-narrow-relative+1":"ensi to","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","dateFormatItem-hms":"h.mm.ss a","field-fri-short-relative+-1":"viime pe","field-thu-relative+-1":"viime torstaina","field-week":"viikko","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","field-dayperiod-short":"vuorokaudenaika","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","field-week-short-relative+-1":"viime vk","field-hour-narrow-relative+0":"tunnin sisällä","field-hour-short":"t","field-zone-short":"aikavyöhyke","field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","field-mon-narrow-relative+0":"tänä ma","field-mon-narrow-relative+1":"ensi ma","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","dateFormatItem-MMMEd":"E d.M.","field-weekOfMonth-narrow":"kuukauden vk","field-weekday-narrow":"viikonpäivä","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/coptic.js b/lib/dojo/cldr/nls/fi/coptic.js
new file mode 100644
index 000000000..40f17ff70
--- /dev/null
+++ b/lib/dojo/cldr/nls/fi/coptic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/fi/coptic",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-thu-short-relative+0":"tänä to","field-day-short-relative+-1":"eilen","field-thu-short-relative+1":"ensi to","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","field-wed-narrow-relative+-1":"viime ke","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","field-weekdayOfMonth-narrow":"kuukauden vk päivä","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","field-weekOfMonth":"kuukauden viikko","field-month-short":"kk","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","field-month":"kuukausi","field-day-narrow":"pv","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-day-narrow-relative+-2":"toissap.","field-quarter-relative+-1":"viime neljännesvuonna","field-dayperiod-narrow":"vuorokaudenaika","field-week-narrow-relative+-1":"viime vk","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","field-hour":"tunti","field-minute-narrow-relative+0":"minuutin sisällä","months-format-wide":["thoutkuuta","paopikuuta","hathorkuuta","koiakkuuta","tobikuuta","meshirkuuta","paremhatkuuta","paremoudekuuta","pashonskuuta","paonikuuta","epipkuuta","mesorikuuta","pi-kogi-enavotkuuta"],"field-month-relative+-1":"viime kuussa","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","field-minute-short-relative+0":"minuutin sisällä","months-format-abbr":["thoutkuuta","paopikuuta","hathorkuuta","koiakkuuta","tobikuuta","meshirkuuta","paremhatkuuta","paremoudekuuta","pashonskuuta","paonikuuta","epipkuuta","mesorikuuta","pi-kogi-enavotkuuta"],"field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","field-thu-short-relative+-1":"viime to","field-year-narrow-relative+-1":"viime v","field-mon-narrow-relative+-1":"viime ma","field-thu-narrow-relative+-1":"viime to","field-tue-narrow-relative+-1":"viime ti","field-weekOfMonth-short":"kuukauden vk","field-wed-short-relative+0":"tänä ke","months-standAlone-wide":["thoutkuu","paopikuu","hathorkuu","koiakkuu","tobikuu","meshirkuu","paremhatkuu","paremoudekuu","pashonskuu","paonikuu","epipkuu","mesorikuu","pi-kogi-enavotkuu"],"field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","field-second-narrow-relative+0":"nyt","field-weekday":"viikonpäivä","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-sat-relative+0":"tänä lauantaina","field-day-short-relative+1":"huom.","field-quarter-narrow-relative+1":"ensi nelj.","field-sat-relative+1":"ensi lauantaina","field-day-short-relative+2":"ylihuom.","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","months-standAlone-abbr":["thout","paopi","hathor","koiak","toba","meshir","paremhat","paremoude","pashons","paoni","epip","mesori","pi kogi enavot"],"field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","field-zone-narrow":"aikavyöhyke","field-thu-narrow-relative+0":"tänä to","field-thu-narrow-relative+1":"ensi to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","field-fri-short-relative+-1":"viime pe","field-thu-relative+-1":"viime torstaina","field-week":"viikko","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","field-dayperiod-short":"vuorokaudenaika","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","field-week-short-relative+-1":"viime vk","field-hour-narrow-relative+0":"tunnin sisällä","field-hour-short":"t","field-zone-short":"aikavyöhyke","field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","field-mon-narrow-relative+0":"tänä ma","field-mon-narrow-relative+1":"ensi ma","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","field-weekOfMonth-narrow":"kuukauden vk","field-weekday-narrow":"viikonpäivä","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/currency.js b/lib/dojo/cldr/nls/fi/currency.js
index f8f7e48db..24c0ccb32 100644
--- a/lib/dojo/cldr/nls/fi/currency.js
+++ b/lib/dojo/cldr/nls/fi/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fi/currency",{"HKD_displayName":"Hongkongin dollari","CHF_displayName":"Sveitsin frangi","JPY_symbol":"¥","CAD_displayName":"Kanadan dollari","HKD_symbol":"HKD","CNY_displayName":"Kiinan yuan","USD_symbol":"$","AUD_displayName":"Australian dollari","JPY_displayName":"Japanin jeni","CAD_symbol":"CAD","USD_displayName":"Yhdysvaltain dollari","EUR_symbol":"€","CNY_symbol":"CNY","GBP_displayName":"Englannin punta","GBP_symbol":"£","AUD_symbol":"AUD","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/fi/currency",{"HKD_displayName":"Hongkongin dollari","CNY_displayName":"Kiinan juan","JPY_displayName":"Japanin jeni","JPY_symbol":"¥","USD_displayName":"Yhdysvaltain dollari","CAD_symbol":"CAD","GBP_displayName":"Englannin punta","CHF_displayName":"Sveitsin frangi","CNY_symbol":"CNY","EUR_displayName":"euro","GBP_symbol":"£","CAD_displayName":"Kanadan dollari","USD_symbol":"$","EUR_symbol":"€","AUD_displayName":"Australian dollari","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/ethiopic.js b/lib/dojo/cldr/nls/fi/ethiopic.js
new file mode 100644
index 000000000..2405ee6ab
--- /dev/null
+++ b/lib/dojo/cldr/nls/fi/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/fi/ethiopic",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-thu-short-relative+0":"tänä to","field-day-short-relative+-1":"eilen","field-thu-short-relative+1":"ensi to","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","field-wed-narrow-relative+-1":"viime ke","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","field-weekdayOfMonth-narrow":"kuukauden vk päivä","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","field-weekOfMonth":"kuukauden viikko","field-month-short":"kk","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","field-month":"kuukausi","field-day-narrow":"pv","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-day-narrow-relative+-2":"toissap.","field-quarter-relative+-1":"viime neljännesvuonna","field-dayperiod-narrow":"vuorokaudenaika","field-week-narrow-relative+-1":"viime vk","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","field-hour":"tunti","field-minute-narrow-relative+0":"minuutin sisällä","months-format-wide":["mäskärämkuuta","ṭəqəmtkuuta","ḫədarkuuta","taḫśaśkuuta","ṭərrkuuta","yäkatitkuuta","mägabitkuuta","miyazyakuuta","gənbotkuuta","sänekuuta","ḥamlekuuta","nähasekuuta","ṗagumenkuuta"],"field-month-relative+-1":"viime kuussa","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","field-minute-short-relative+0":"minuutin sisällä","months-format-abbr":["mäskärämkuuta","ṭəqəmtkuuta","ḫədarkuuta","taḫśaśkuuta","ṭərrkuuta","yäkatitkuuta","mägabitkuuta","miyazyakuuta","gənbotkuuta","sänekuuta","ḥamlekuuta","nähasekuuta","ṗagumenkuuta"],"field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","field-thu-short-relative+-1":"viime to","field-year-narrow-relative+-1":"viime v","field-mon-narrow-relative+-1":"viime ma","field-thu-narrow-relative+-1":"viime to","field-tue-narrow-relative+-1":"viime ti","field-weekOfMonth-short":"kuukauden vk","field-wed-short-relative+0":"tänä ke","months-standAlone-wide":["mäskärämkuu","ṭəqəmtkuu","ḫədarkuu","taḫśaśkuu","ṭərrkuu","yäkatitkuu","mägabitkuu","miyazyakuu","gənbotkuu","sänekuu","ḥamlekuu","nähasekuu","ṗagumenkuu"],"field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","field-second-narrow-relative+0":"nyt","field-weekday":"viikonpäivä","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-sat-relative+0":"tänä lauantaina","field-day-short-relative+1":"huom.","field-quarter-narrow-relative+1":"ensi nelj.","field-sat-relative+1":"ensi lauantaina","field-day-short-relative+2":"ylihuom.","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","months-standAlone-abbr":["mäskärämkuu","ṭəqəmtkuu","ḫədarkuu","taḫśaśkuu","ṭərrkuu","yäkatitkuu","mägabitkuu","miyazyakuu","gənbotkuu","sänekuu","ḥamlekuu","nähasekuu","ṗagumenkuu"],"field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","field-zone-narrow":"aikavyöhyke","field-thu-narrow-relative+0":"tänä to","field-thu-narrow-relative+1":"ensi to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","field-fri-short-relative+-1":"viime pe","field-thu-relative+-1":"viime torstaina","field-week":"viikko","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","field-dayperiod-short":"vuorokaudenaika","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","field-week-short-relative+-1":"viime vk","field-hour-narrow-relative+0":"tunnin sisällä","field-hour-short":"t","field-zone-short":"aikavyöhyke","field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","field-mon-narrow-relative+0":"tänä ma","field-mon-narrow-relative+1":"ensi ma","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","field-weekOfMonth-narrow":"kuukauden vk","field-weekday-narrow":"viikonpäivä","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/generic.js b/lib/dojo/cldr/nls/fi/generic.js
index 285a0a6f3..733b82434 100644
--- a/lib/dojo/cldr/nls/fi/generic.js
+++ b/lib/dojo/cldr/nls/fi/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fi/generic",{"field-second-relative+0":"nyt","field-weekday":"viikonpäivä","field-wed-relative+0":"tänä keskiviikkona","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"ccc d. MMM","field-wed-relative+1":"ensi keskiviikkona","field-tue-relative+-1":"viime tiistaina","dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"viime perjantaina","field-wed-relative+-1":"viime keskiviikkona","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} 'klo' {0}","dateFormat-full":"cccc d. MMMM y G","dateFormatItem-yyyyMEd":"E d.M.y G","field-thu-relative+-1":"viime torstaina","dateFormatItem-Md":"d.M.","field-era":"aikakausi","field-year":"vuosi","dateFormatItem-yyyyMMMM":"LLLL y G","field-hour":"tunti","field-sat-relative+0":"tänä lauantaina","field-sat-relative+1":"ensi lauantaina","field-day-relative+0":"tänään","field-day-relative+1":"huomenna","field-thu-relative+0":"tänä torstaina","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"ylihuomenna","field-thu-relative+1":"ensi torstaina","dateFormatItem-H":"H","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d. MMM y G","field-sun-relative+0":"tänä sunnuntaina","dateFormatItem-Hm":"H.mm","field-sun-relative+1":"ensi sunnuntaina","field-minute":"minuutti","field-dayperiod":"vuorokaudenaika","dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"eilen","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'klo' {0}","field-day-relative+-2":"toissa päivänä","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M.","dateTimeFormat-full":"{1} 'klo' {0}","dateFormatItem-yyyyMMMMccccd":"cccc d. MMMM y G","field-fri-relative+0":"tänä perjantaina","field-fri-relative+1":"ensi perjantaina","field-day":"päivä","field-zone":"aikavyöhyke","dateFormatItem-yyyyMM":"M.y G","dateFormatItem-y":"y G","field-year-relative+-1":"viime vuonna","field-month-relative+-1":"viime kuussa","dateFormatItem-hm":"h.mm a","dateFormatItem-yyyyMd":"d.M.y G","field-month":"kuukausi","dateFormatItem-MMM":"LLL","field-tue-relative+0":"tänä tiistaina","field-tue-relative+1":"ensi tiistaina","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","dateFormat-short":"d.M.y GGGGG","field-second":"sekunti","field-sat-relative+-1":"viime lauantaina","field-sun-relative+-1":"viime sunnuntaina","field-month-relative+0":"tässä kuussa","field-month-relative+1":"ensi kuussa","dateFormatItem-Ed":"E d.","field-week":"viikko","dateFormat-medium":"d.M.y G","field-year-relative+0":"tänä vuonna","field-week-relative+-1":"viime viikolla","dateFormatItem-yyyyM":"L.y G","field-year-relative+1":"ensi vuonna","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"viime maanantaina","dateFormatItem-yyyy":"y G","field-week-relative+0":"tällä viikolla","field-week-relative+1":"ensi viikolla"}); \ No newline at end of file
+define("dojo/cldr/nls/fi/generic",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","dateFormatItem-Hm":"H.mm","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","dateFormatItem-ms":"mm.ss","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-day-short-relative+-1":"eilen","field-thu-short-relative+0":"tänä to","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-thu-short-relative+1":"ensi to","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","dateFormatItem-EBhms":"E h.mm.ss B","field-wed-narrow-relative+-1":"viime ke","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","dateFormatItem-yyyyMM":"M.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"kuukauden vk päivä","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"kuukauden viikko","field-month-short":"kk","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","dateTimeFormat-medium":"{1} 'klo' {0}","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","dateFormatItem-yyyyMMMMccccd":"cccc d. MMMM y G","dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","dateFormatItem-GyMMM":"LLL y G","field-month":"kuukausi","field-day-narrow":"pv","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","dateFormat-medium":"d.M.y G","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormatItem-yyyyM":"L.y G","field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-2":"toissap.","field-quarter-relative+-1":"viime neljännesvuonna","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"vuorokaudenaika","field-week-narrow-relative+-1":"viime vk","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","dateTimeFormat-long":"{1} 'klo' {0}","dateFormatItem-Md":"d.M.","field-hour":"tunti","field-minute-narrow-relative+0":"minuutin sisällä","dateFormat-full":"cccc d. MMMM y G","field-month-relative+-1":"viime kuussa","dateFormatItem-Hms":"H.mm.ss","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","dateFormatItem-Ehm":"E h.mm a","field-minute-short-relative+0":"minuutin sisällä","field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","dateFormat-short":"d.M.y GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"viime v","field-thu-short-relative+-1":"viime to","dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"viime ma","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"viime to","dateFormatItem-E":"ccc","dateFormatItem-H":"H","field-weekOfMonth-short":"kuukauden vk","field-tue-narrow-relative+-1":"viime ti","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"tänä ke","field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","dateTimeFormat-full":"{1} 'klo' {0}","field-second-narrow-relative+0":"nyt","dateFormatItem-hm":"h.mm a","dateFormatItem-d":"d","field-weekday":"viikonpäivä","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-day-short-relative+1":"huom.","field-sat-relative+0":"tänä lauantaina","field-quarter-narrow-relative+1":"ensi nelj.","dateFormatItem-h":"h a","field-day-short-relative+2":"ylihuom.","field-sat-relative+1":"ensi lauantaina","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","dateFormatItem-MEd":"E d.M.","field-zone-narrow":"aikavyöhyke","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tänä to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-narrow-relative+1":"ensi to","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","dateFormatItem-hms":"h.mm.ss a","field-fri-short-relative+-1":"viime pe","field-thu-relative+-1":"viime torstaina","field-week":"viikko","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","dateFormatItem-yyyyMMM":"LLL y G","field-dayperiod-short":"vuorokaudenaika","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","field-week-short-relative+-1":"viime vk","field-hour-narrow-relative+0":"tunnin sisällä","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"aikavyöhyke","field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","field-mon-narrow-relative+0":"tänä ma","dateFormatItem-EHm":"E HH.mm","field-mon-narrow-relative+1":"ensi ma","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","dateFormatItem-MMMEd":"ccc d. MMM","field-weekOfMonth-narrow":"kuukauden vk","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"viikonpäivä","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","dateFormatItem-Gy":"y G","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/gregorian.js b/lib/dojo/cldr/nls/fi/gregorian.js
index 4d30b6878..9e9b1b674 100644
--- a/lib/dojo/cldr/nls/fi/gregorian.js
+++ b/lib/dojo/cldr/nls/fi/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fi/gregorian",{"dateFormatItem-Ehm":"E h.mm a","days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"months-format-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-second-relative+0":"nyt","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"viikonpäivä","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d.M.y","field-wed-relative+0":"tänä keskiviikkona","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"ccc d. MMM","field-wed-relative+1":"ensi keskiviikkona","eraNarrow":["eK","jK"],"dateFormatItem-yMM":"M.y","field-tue-relative+-1":"viime tiistaina","days-format-short":["su","ma","ti","ke","to","pe","la"],"dateFormat-long":"d. MMMM y","field-fri-relative+-1":"viime perjantaina","field-wed-relative+-1":"viime keskiviikkona","months-format-wide":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dateTimeFormat-medium":"{1} 'klo' {0}","dayPeriods-format-wide-pm":"ip.","dateFormat-full":"cccc d. MMMM y","field-thu-relative+-1":"viime torstaina","dateFormatItem-Md":"d.M.","dayPeriods-standAlone-wide-pm":"ip.","dayPeriods-format-abbr-am":"ap.","dateFormatItem-yMd":"d.M.y","dateFormatItem-yM":"L.y","field-era":"aikakausi","months-standAlone-wide":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],"timeFormat-short":"H.mm","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"timeFormat-long":"H.mm.ss z","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQQQQ":"QQQQ y","field-year":"vuosi","field-hour":"tunti","months-format-abbr":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"field-sat-relative+0":"tänä lauantaina","field-sat-relative+1":"ensi lauantaina","timeFormat-full":"H.mm.ss zzzz","field-day-relative+0":"tänään","field-day-relative+1":"huomenna","field-thu-relative+0":"tänä torstaina","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"ylihuomenna","field-thu-relative+1":"ensi torstaina","dateFormatItem-H":"H","months-standAlone-abbr":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],"quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"timeFormat-medium":"H.mm.ss","field-sun-relative+0":"tänä sunnuntaina","dateFormatItem-Hm":"H.mm","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"field-sun-relative+1":"ensi sunnuntaina","eraAbbr":["eKr.","jKr."],"field-minute":"minuutti","field-dayperiod":"vuorokaudenaika","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-d":"d","dateFormatItem-ms":"m.ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"eilen","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'klo' {0}","dayPeriods-format-narrow-am":"ap.","field-day-relative+-2":"toissa päivänä","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M.","dateTimeFormat-full":"{1} 'klo' {0}","field-fri-relative+0":"tänä perjantaina","dateFormatItem-yMMMM":"LLLL y","field-fri-relative+1":"ensi perjantaina","dateFormatItem-yMMMMccccd":"cccc d. MMMM y","field-day":"päivä","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-zone":"aikavyöhyke","dateFormatItem-y":"y","months-standAlone-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-year-relative+-1":"viime vuonna","field-month-relative+-1":"viime kuussa","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"ip.","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"eraNames":["ennen Kristuksen syntymää","jälkeen Kristuksen syntymän"],"dateFormatItem-yMMMd":"d. MMM y","days-format-narrow":["S","M","T","K","T","P","L"],"days-standAlone-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-MMM":"LLL","field-month":"kuukausi","field-tue-relative+0":"tänä tiistaina","field-tue-relative+1":"ensi tiistaina","dayPeriods-format-wide-am":"ap.","dayPeriods-standAlone-wide-am":"ap.","dateFormatItem-EHm":"E H.mm","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","dateFormat-short":"d.M.y","dateFormatItem-EHms":"E H.mm.ss","dateFormatItem-Ehms":"E h.mm.ss a","field-second":"sekunti","field-sat-relative+-1":"viime lauantaina","dateFormatItem-yMMMEd":"E d. MMM y","field-sun-relative+-1":"viime sunnuntaina","field-month-relative+0":"tässä kuussa","field-month-relative+1":"ensi kuussa","dateFormatItem-Ed":"E d.","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"viikko","dateFormat-medium":"d.M.y","field-year-relative+0":"tänä vuonna","field-week-relative+-1":"viime viikolla","field-year-relative+1":"ensi vuonna","dayPeriods-format-narrow-pm":"ip.","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"viime maanantaina","field-week-relative+0":"tällä viikolla","field-week-relative+1":"ensi viikolla"}); \ No newline at end of file
+define("dojo/cldr/nls/fi/gregorian",{"dateFormatItem-yMMMM":"LLLL y","field-thu-narrow-relative+0":"tänä to","field-thu-narrow-relative+1":"ensi to","field-sun-narrow-relative+0":"tänä su","field-sun-narrow-relative+1":"ensi su","months-format-wide":["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],"dayPeriods-standAlone-abbr-pm":"ip.","dateFormatItem-Hms":"H.mm.ss","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe","eraNarrow":["eKr","jKr"],"dateFormatItem-Hmv":"H.mm v","dateFormatItem-hmsv":"h.mm.ss a v","dateFormatItem-yMMMd":"d. MMM y","dayPeriods-format-abbr-night1":"yöllä","dayPeriods-format-narrow-evening1":"illalla","days-standAlone-narrow":["S","M","T","K","T","P","L"],"days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dayPeriods-format-abbr-afternoon1":"iltap.","dayPeriods-format-wide-evening1":"illalla","dateFormatItem-Ehm":"E h.mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"viime ke","dayPeriods-standAlone-wide-evening1":"ilta","field-minute-narrow-relative+0":"minuutin sisällä","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"dateFormatItem-yMM":"M.y","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","dateFormatItem-Ehms":"E h.mm.ss a","dayPeriods-standAlone-narrow-evening1":"ilta","dayPeriods-standAlone-abbr-afternoon1":"iltap.","field-thu-relative+0":"tänä torstaina","dayPeriods-standAlone-abbr-night1":"yö","field-thu-relative+1":"ensi torstaina","dayPeriods-format-wide-am":"ap.","field-fri-relative+0":"tänä perjantaina","field-fri-relative+1":"ensi perjantaina","dateFormatItem-yMd":"d.M.y","field-thu-narrow-relative+-1":"viime to","field-quarter-relative+0":"tänä neljännesvuonna","field-quarter-relative+1":"ensi neljännesvuonna","field-sun-short-relative+0":"tänä su","timeFormat-short":"H.mm","field-sun-short-relative+1":"ensi su","dateFormatItem-hms":"h.mm.ss a","dayPeriods-format-narrow-afternoon1":"ip.","dateFormatItem-Md":"d.M.","dateFormatItem-Hmsv":"H.mm.ss v","dateFormatItem-hmv":"h.mm a v","field-week-narrow":"vk","field-hour-relative+0":"tämän tunnin aikana","field-day-relative+-1":"eilen","field-day-relative+-2":"toissa päivänä","field-mon-narrow-relative+-1":"viime ma","field-minute-narrow":"min","dateFormatItem-MMMMEd":"ccc d. MMMM","dateFormatItem-GyMMMMEd":"E d. MMMM y G","field-thu-short-relative+0":"tänä to","field-mon-relative+0":"tänä maanantaina","field-thu-short-relative+1":"ensi to","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+0":"tänään","field-era-short":"aikakausi","field-day-narrow-relative+1":"huom.","field-sat-narrow-relative+0":"tänä la","field-day-narrow-relative+2":"ylihuom.","timeFormat-long":"H.mm.ss z","field-sat-narrow-relative+1":"ensi la","field-week-narrow-relative+0":"tällä vk","field-week-narrow-relative+1":"ensi vk","field-hour-short-relative+0":"tunnin sisällä","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-month":"kuukausi","months-standAlone-wide":["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],"field-weekday-narrow":"viikonpäivä","dayPeriods-standAlone-narrow-afternoon1":"ip.","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","dayPeriods-format-abbr-evening1":"illalla","dayPeriods-format-abbr-noon":"keskip.","dayPeriods-format-narrow-midnight":"ky.","dayPeriods-format-wide-midnight":"keskiyöllä","field-tue-relative+0":"tänä tiistaina","dateFormatItem-GyMMMMd":"d. MMMM y G","field-tue-relative+1":"ensi tiistaina","dayPeriods-standAlone-abbr-evening1":"ilta","field-minute-short-relative+0":"minuutin sisällä","dateFormatItem-hm":"h.mm a","dayPeriods-standAlone-wide-midnight":"keskiyö","field-year-narrow":"v","dayPeriods-standAlone-abbr-noon":"keskip.","field-tue-short-relative+0":"tänä ti","dayPeriods-standAlone-narrow-midnight":"ky.","field-tue-short-relative+1":"ensi ti","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","dateTimeFormat-full":"{1} 'klo' {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h.mm B","dateFormatItem-H":"H","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","dateFormatItem-M":"L","field-wed-short-relative+0":"tänä ke","field-fri-short-relative+0":"tänä pe","field-wed-short-relative+1":"ensi ke","field-fri-short-relative+1":"ensi pe","field-weekOfMonth-short":"kuukauden vk","field-quarter-short-relative+-1":"viime neljänneksenä","field-year-short-relative+-1":"viime v","dateFormatItem-Bhm":"h.mm B","dayPeriods-format-wide-night1":"yöllä","dateTimeFormat-medium":"{1} 'klo' {0}","field-quarter-narrow-relative+-1":"viime nelj.","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"ip.","dateFormatItem-h":"h a","quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"field-weekOfMonth-narrow":"kuukauden vk","dateFormatItem-y":"y","field-minute-relative+0":"tämän minuutin aikana","field-year-short-relative+0":"tänä v","dateFormatItem-EBhms":"E h.mm.ss B","field-year-short-relative+1":"ensi v","field-weekday":"viikonpäivä","dayPeriods-format-narrow-pm":"ip.","field-tue-narrow-relative+-1":"viime ti","dateFormatItem-yMEd":"E d.M.y","dayPeriods-standAlone-wide-night1":"yö","field-year-narrow-relative+-1":"viime v","field-sat-relative+-1":"viime lauantaina","dayPeriods-format-abbr-midnight":"keskiyöllä","dayPeriods-format-narrow-morning1":"aamulla","dayPeriods-format-narrow-morning2":"ap.","dayPeriods-format-wide-morning1":"aamulla","dayPeriods-format-wide-morning2":"aamupäivällä","dayPeriods-standAlone-abbr-midnight":"keskiyö","dayPeriods-standAlone-narrow-pm":"ip.","dayPeriods-standAlone-wide-morning1":"aamu","field-mon-narrow-relative+0":"tänä ma","dayPeriods-standAlone-wide-morning2":"aamupäivä","field-mon-narrow-relative+1":"ensi ma","field-second":"sekunti","dateFormatItem-yMMMEd":"E d. MMM y","field-year-relative+-1":"viime vuonna","field-weekdayOfMonth-short":"kuukauden vk päivä","dateFormat-short":"d.M.y","eraNames":["ennen Kristuksen syntymää","jälkeen Kristuksen syntymän"],"field-second-short":"s","field-thu-short-relative+-1":"viime to","field-zone":"aikavyöhyke","field-dayperiod-narrow":"vuorokaudenaika","field-sun-short-relative+-1":"viime su","dayPeriods-standAlone-narrow-morning1":"aamu","dayPeriods-standAlone-narrow-morning2":"ap.","eraAbbr":["eKr.","jKr."],"field-week-short":"vk","dayPeriods-standAlone-abbr-am":"ap.","dayPeriods-standAlone-wide-pm":"ip.","dateFormatItem-ms":"m.ss","field-day-relative+0":"tänään","field-day-relative+1":"huomenna","field-day-relative+2":"ylihuomenna","field-day-short-relative+0":"tänään","field-dayOfYear-short":"vuodenpv","field-day-short-relative+1":"huom.","dateFormat-long":"d. MMMM y","field-day-short-relative+2":"ylihuom.","field-sun-narrow-relative+-1":"viime su","dayPeriods-format-wide-noon":"keskipäivällä","field-second-relative+0":"nyt","field-quarter-relative+-1":"viime neljännesvuonna","dayPeriods-format-narrow-night1":"yöllä","quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"dayPeriods-standAlone-wide-noon":"keskipäivä","dayPeriods-standAlone-narrow-night1":"yö","field-week-relative+-1":"viime viikolla","dayPeriods-format-abbr-morning1":"aamulla","field-month-relative+-1":"viime kuussa","dayPeriods-format-abbr-morning2":"aamup.","months-format-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-year":"vuosi","field-era":"aikakausi","dayPeriods-standAlone-abbr-morning1":"aamu","dayPeriods-standAlone-abbr-morning2":"aamup.","days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"eilen","field-day-short-relative+-2":"toissap.","dateFormatItem-GyMMM":"LLL y G","timeFormat-full":"H.mm.ss zzzz","dateFormatItem-Bhms":"h.mm.ss B","field-hour":"tunti","field-dayOfYear-narrow":"vuodenpv","field-second-narrow-relative+0":"nyt","field-quarter":"neljännesvuosi","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-day":"päivä","field-mon-relative+-1":"viime maanantaina","field-dayOfYear":"vuodenpäivä","dateFormat-medium":"d.M.y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"LLL y","dateFormatItem-GyMMMd":"d. MMM y G","dateFormatItem-MEd":"E d.M.","field-tue-short-relative+-1":"viime ti","field-year-short":"v","field-month-short":"kk","dateFormatItem-MMMEd":"ccc d. MMM","dayPeriods-format-wide-afternoon1":"iltapäivällä","dateFormatItem-MMMd":"d. MMM","dateFormatItem-Bh":"h B","months-format-abbr":["tammik.","helmik.","maalisk.","huhtik.","toukok.","kesäk.","heinäk.","elok.","syysk.","lokak.","marrask.","jouluk."],"dayPeriods-format-abbr-am":"ap.","field-sat-relative+0":"tänä lauantaina","field-sat-relative+1":"ensi lauantaina","dayPeriods-format-wide-pm":"ip.","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"field-zone-short":"aikavyöhyke","field-week-short-relative+0":"tällä vk","dateFormatItem-yMMMMd":"d. MMMM y","field-week-short-relative+1":"ensi vk","dayPeriods-standAlone-wide-afternoon1":"iltapäivä","field-fri-short-relative+-1":"viime pe","dateFormatItem-yMMMMccccd":"cccc d. MMMM y","field-month-narrow":"kk","dayPeriods-format-narrow-am":"ap.","field-month-narrow-relative+-1":"viime kk","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"field-weekday-short":"viikonpäivä","field-day-narrow-relative+-1":"eilen","field-day-narrow-relative+-2":"toissap.","field-quarter-short":"neljännes","days-format-short":["su","ma","ti","ke","to","pe","la"],"months-standAlone-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"days-format-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-EHm":"E H.mm","field-quarter-narrow":"nelj.","field-mon-short-relative+0":"tänä ma","field-mon-short-relative+1":"ensi ma","field-dayperiod-short":"vuorokaudenaika","dayPeriods-standAlone-narrow-am":"ap.","field-week-narrow-relative+-1":"viime vk","field-thu-relative+-1":"viime torstaina","field-fri-narrow-relative+-1":"viime pe","field-mon-short-relative+-1":"viime ma","timeFormat-medium":"H.mm.ss","field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","dateFormatItem-Ed":"E d.","field-wed-relative+-1":"viime keskiviikkona","field-weekOfMonth":"kuukauden viikko","field-weekdayOfMonth-narrow":"kuukauden vk päivä","dayPeriods-standAlone-wide-am":"ap.","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"viime perjantaina","field-minute":"minuutti","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"nyt","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"field-day-short":"pv","field-dayperiod":"vuorokaudenaika","field-hour-short":"t","months-standAlone-abbr":["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],"field-month-relative+0":"tässä kuussa","field-second-narrow":"s","field-month-relative+1":"ensi kuussa","dateFormat-full":"cccc d. MMMM y","field-era-narrow":"aikakausi","field-sat-short-relative+-1":"viime la","dayPeriods-format-narrow-noon":"kp.","field-week-short-relative+-1":"viime vk","dateFormatItem-yMMMMEd":"E d. MMMM y","dateTimeFormat-long":"{1} 'klo' {0}","dateFormatItem-yM":"L.y","field-sun-relative+-1":"viime sunnuntaina","field-wed-short-relative+-1":"viime ke","field-weekdayOfMonth":"kuukauden viikonpäivä","field-quarter-narrow-relative+0":"tänä nelj.","dateFormatItem-GyMMMEd":"E d. MMM y G","field-quarter-narrow-relative+1":"ensi nelj.","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","field-hour-narrow":"t","field-year-narrow-relative+0":"tänä v","field-year-narrow-relative+1":"ensi v","dateFormatItem-Gy":"y G","field-zone-narrow":"aikavyöhyke","dayPeriods-standAlone-narrow-noon":"kp.","field-tue-relative+-1":"viime tiistaina","field-minute-short":"min","dateFormatItem-yw":"'vuoden' Y 'viikko' w","dateFormatItem-Hm":"H.mm","field-week-relative+0":"tällä viikolla","field-week-relative+1":"ensi viikolla","dateFormatItem-MMM":"LLL","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","field-sat-narrow-relative+-1":"viime la","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"dateFormatItem-MMMMW":"LLLL'n' W. 'viikko'","field-month-short-relative+-1":"viime kk","dateFormatItem-EHms":"E H.mm.ss","dateFormatItem-MMMMd":"d. MMMM","field-week":"viikko","field-day-narrow":"pv","field-hour-narrow-relative+0":"tunnin sisällä"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/hebrew.js b/lib/dojo/cldr/nls/fi/hebrew.js
index 870e05da7..ae8708ed3 100644
--- a/lib/dojo/cldr/nls/fi/hebrew.js
+++ b/lib/dojo/cldr/nls/fi/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fi/hebrew",{"days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"months-format-narrow":["T","H","K","T","S","A","A","N","I","S","T","A","E"],"field-second-relative+0":"nyt","field-weekday":"viikonpäivä","months-standAlone-narrow-leap":"A","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"ccc d. MMM","field-tue-relative+-1":"viime tiistaina","days-format-short":["su","ma","ti","ke","to","pe","la"],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"viime perjantaina","field-wed-relative+-1":"viime keskiviikkona","months-format-wide":["tišríkuuta","hešvánkuuta","kislévkuuta","tevétkuuta","ševátkuuta","adárkuuta I","adárkuuta","nisánkuuta","ijjárkuuta","sivánkuuta","tammúzkuuta","abkuuta","elúlkuuta"],"dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"ip.","dateFormat-full":"cccc d. MMMM y G","dateFormatItem-yyyyMEd":"E d.M.y G","field-thu-relative+-1":"viime torstaina","dateFormatItem-Md":"d.M.","dayPeriods-format-abbr-am":"ap.","field-era":"aikakausi","months-standAlone-wide":["tišríkuu","hešvánkuu","kislévkuu","tevétkuu","ševátkuu","adárkuu I","adárkuu","nisánkuu","ijjárkuu","sivánkuu","tammúzkuu","abkuu","elúlkuu"],"timeFormat-short":"H.mm","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"timeFormat-long":"H.mm.ss z","field-year":"vuosi","field-hour":"tunti","months-format-abbr":["tišríkuuta","hešvánkuuta","kislévkuuta","tevétkuuta","ševátkuuta","adárkuuta I","adárkuuta","nisánkuuta","ijjárkuuta","sivánkuuta","tammúzkuuta","abkuuta","elúlkuuta"],"field-sat-relative+0":"tänä lauantaina","field-sat-relative+1":"ensi lauantaina","timeFormat-full":"H.mm.ss zzzz","field-day-relative+0":"tänään","field-thu-relative+0":"tänä torstaina","field-day-relative+1":"huomenna","field-thu-relative+1":"ensi torstaina","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"ylihuomenna","dateFormatItem-H":"H","months-standAlone-abbr":["tišrí","hešván","kislév","tevét","ševát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d. MMM y G","months-standAlone-wide-leap":"adárkuu II","timeFormat-medium":"H.mm.ss","field-sun-relative+0":"tänä sunnuntaina","dateFormatItem-Hm":"H.mm","field-sun-relative+1":"ensi sunnuntaina","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"field-minute":"minuutti","field-dayperiod":"vuorokaudenaika","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-ms":"mm.ss","field-day-relative+-1":"eilen","dayPeriods-format-narrow-am":"ap.","field-day-relative+-2":"toissa päivänä","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M.","field-fri-relative+0":"tänä perjantaina","field-fri-relative+1":"ensi perjantaina","field-day":"päivä","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-zone":"aikavyöhyke","months-standAlone-abbr-leap":"adár II","dateFormatItem-y":"y G","months-standAlone-narrow":["T","H","K","T","S","A","A","N","I","S","T","A","E"],"field-year-relative+-1":"viime vuonna","field-month-relative+-1":"viime kuussa","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"ip.","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"days-format-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-yyyyMd":"d.M.y G","field-month":"kuukausi","days-standAlone-narrow":["S","M","T","K","T","P","L"],"field-tue-relative+0":"tänä tiistaina","field-tue-relative+1":"ensi tiistaina","dayPeriods-format-wide-am":"ap.","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","dateFormat-short":"d.M.y GGGGG","field-second":"sekunti","field-sat-relative+-1":"viime lauantaina","field-sun-relative+-1":"viime sunnuntaina","field-month-relative+0":"tässä kuussa","field-month-relative+1":"ensi kuussa","dateFormatItem-Ed":"E d.","field-week":"viikko","dateFormat-medium":"d.M.y G","field-year-relative+0":"tänä vuonna","field-week-relative+-1":"viime viikolla","dateFormatItem-yyyyM":"L.y G","field-year-relative+1":"ensi vuonna","dayPeriods-format-narrow-pm":"ip.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"H.mm.ss","dateFormatItem-hms":"h.mm.ss a","months-format-wide-leap":"adárkuuta II","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"viime maanantaina","dateFormatItem-yyyy":"y G","field-week-relative+0":"tällä viikolla","field-week-relative+1":"ensi viikolla"}); \ No newline at end of file
+define("dojo/cldr/nls/fi/hebrew",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","dateFormatItem-Hm":"H.mm","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","dateFormatItem-ms":"mm.ss","timeFormat-short":"H.mm","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-thu-short-relative+0":"tänä to","field-day-short-relative+-1":"eilen","field-thu-short-relative+1":"ensi to","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","field-wed-narrow-relative+-1":"viime ke","dateFormatItem-EBhms":"E h.mm.ss B","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","dayPeriods-format-narrow-am":"ap.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"kuukauden vk päivä","dayPeriods-format-abbr-am":"ap.","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","timeFormat-medium":"H.mm.ss","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["T","H","K","T","S","A","A","N","I","S","T","A","E"],"eraNames":["Anno Mundi"],"field-weekOfMonth":"kuukauden viikko","dayPeriods-standAlone-abbr-pm":"ip.","field-month-short":"kk","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","dayPeriods-format-wide-am":"ap.","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","dateTimeFormat-medium":"{1} 'klo' {0}","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","days-standAlone-narrow":["S","M","T","K","T","P","L"],"dayPeriods-standAlone-wide-pm":"ip.","dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"days-format-narrow":["S","M","T","K","T","P","L"],"field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","dateFormatItem-GyMMM":"LLL y G","field-month":"kuukausi","field-day-narrow":"pv","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","dayPeriods-format-narrow-pm":"ip.","dateFormat-medium":"d.M.y G","dateFormatItem-yyyyMMMM":"LLLL y G","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"dayPeriods-format-abbr-pm":"ip.","dateFormatItem-yyyyM":"L.y G","field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-day-narrow-relative+-2":"toissap.","months-format-narrow":["T","H","K","T","S","A","A","N","I","S","T","A","E"],"field-quarter-relative+-1":"viime neljännesvuonna","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"vuorokaudenaika","dayPeriods-standAlone-narrow-am":"ap.","field-week-narrow-relative+-1":"viime vk","days-format-short":["su","ma","ti","ke","to","pe","la"],"dayPeriods-format-wide-pm":"ip.","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","dateTimeFormat-long":"{1} 'klo' {0}","dateFormatItem-Md":"d.M.","field-minute-narrow-relative+0":"minuutin sisällä","field-hour":"tunti","months-format-wide":["tišríkuuta","hešvánkuuta","kislévkuuta","tevétkuuta","ševátkuuta","adárkuuta I","adárkuuta","nisánkuuta","ijjárkuuta","sivánkuuta","tammúzkuuta","abkuuta","elúlkuuta"],"dateFormat-full":"cccc d. MMMM y G","field-month-relative+-1":"viime kuussa","dateFormatItem-Hms":"H.mm.ss","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","field-minute-short-relative+0":"minuutin sisällä","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["tišrí","hešván","kislév","tevét","ševát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","timeFormat-long":"H.mm.ss z","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","dateFormat-short":"d.M.y GGGGG","field-thu-short-relative+-1":"viime to","field-year-narrow-relative+-1":"viime v","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"viime ma","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"viime to","field-tue-narrow-relative+-1":"viime ti","field-weekOfMonth-short":"kuukauden vk","dateFormatItem-H":"H","dayPeriods-standAlone-narrow-pm":"ip.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"tänä ke","months-standAlone-wide":["tišríkuu","hešvánkuu","kislévkuu","tevétkuu","ševátkuu","adárkuu I","adárkuu","nisánkuu","ijjárkuu","sivánkuu","tammúzkuu","abkuu","elúlkuu"],"field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"field-second-narrow-relative+0":"nyt","dateTimeFormat-full":"{1} 'klo' {0}","dateFormatItem-hm":"h.mm a","months-format-abbr-leap":"adár II","field-weekday":"viikonpäivä","months-standAlone-narrow-leap":"A","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-day-short-relative+1":"huom.","field-sat-relative+0":"tänä lauantaina","field-quarter-narrow-relative+1":"ensi nelj.","field-day-short-relative+2":"ylihuom.","field-sat-relative+1":"ensi lauantaina","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","months-standAlone-abbr":["tišrí","hešván","kislév","tevét","ševát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"months-format-wide-leap":"adárkuuta II","field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","timeFormat-full":"H.mm.ss zzzz","dateFormatItem-MEd":"E d.M.","field-zone-narrow":"aikavyöhyke","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tänä to","field-thu-narrow-relative+1":"ensi to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","field-fri-short-relative+-1":"viime pe","dateFormatItem-hms":"h.mm.ss a","field-thu-relative+-1":"viime torstaina","field-week":"viikko","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","field-dayperiod-short":"vuorokaudenaika","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"field-week-short-relative+-1":"viime vk","months-standAlone-abbr-leap":"adár II","field-hour-narrow-relative+0":"tunnin sisällä","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"aikavyöhyke","quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-mon-narrow-relative+0":"tänä ma","field-mon-narrow-relative+1":"ensi ma","dateFormatItem-EHm":"E HH.mm","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","dateFormatItem-MMMEd":"ccc d. MMM","field-weekOfMonth-narrow":"kuukauden vk","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"viikonpäivä","months-standAlone-wide-leap":"adárkuu II","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","dayPeriods-standAlone-abbr-am":"ap.","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","dateFormatItem-Gy":"y G","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe","dayPeriods-standAlone-wide-am":"ap."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/indian.js b/lib/dojo/cldr/nls/fi/indian.js
new file mode 100644
index 000000000..5b6f3dc5a
--- /dev/null
+++ b/lib/dojo/cldr/nls/fi/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/fi/indian",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-thu-short-relative+0":"tänä to","field-day-short-relative+-1":"eilen","field-thu-short-relative+1":"ensi to","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","field-wed-narrow-relative+-1":"viime ke","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","field-weekdayOfMonth-narrow":"kuukauden vk päivä","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","eraNames":["Saka-ajanlaskua"],"field-weekOfMonth":"kuukauden viikko","field-month-short":"kk","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","field-month":"kuukausi","field-day-narrow":"pv","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-day-narrow-relative+-2":"toissap.","field-quarter-relative+-1":"viime neljännesvuonna","field-dayperiod-narrow":"vuorokaudenaika","field-week-narrow-relative+-1":"viime vk","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","field-hour":"tunti","field-minute-narrow-relative+0":"minuutin sisällä","months-format-wide":["chaitrakuuta","vaisakhakuuta","jyaisthakuuta","asadhakuuta","sravanakuuta","bhadrakuuta","asvinakuuta","kartikakuuta","agrahayanakuuta","pausakuuta","maghakuuta","phalgunakuuta"],"field-month-relative+-1":"viime kuussa","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","field-minute-short-relative+0":"minuutin sisällä","months-format-abbr":["chaitrakuuta","vaisakhakuuta","jyaisthakuuta","asadhakuuta","sravanakuuta","bhadrakuuta","asvinakuuta","kartikakuuta","agrahayanakuuta","pausakuuta","maghakuuta","phalgunakuuta"],"field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","field-thu-short-relative+-1":"viime to","field-year-narrow-relative+-1":"viime v","field-mon-narrow-relative+-1":"viime ma","field-thu-narrow-relative+-1":"viime to","field-tue-narrow-relative+-1":"viime ti","field-weekOfMonth-short":"kuukauden vk","field-wed-short-relative+0":"tänä ke","months-standAlone-wide":["chaitrakuu","vaisakhakuu","jyaisthakuu","asadhakuu","sravanakuu","bhadrakuu","asvinakuu","kartikakuu","agrahayanakuu","pausakuu","maghakuu","phalgunakuu"],"field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","field-second-narrow-relative+0":"nyt","field-weekday":"viikonpäivä","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-sat-relative+0":"tänä lauantaina","field-day-short-relative+1":"huom.","field-quarter-narrow-relative+1":"ensi nelj.","field-sat-relative+1":"ensi lauantaina","field-day-short-relative+2":"ylihuom.","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","months-standAlone-abbr":["chaitra","vaisakha","jyaistha","asadha","sravana","bhadra","asvina","kartika","agrahayana","pausa","magha","phalguna"],"field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","field-zone-narrow":"aikavyöhyke","field-thu-narrow-relative+0":"tänä to","field-thu-narrow-relative+1":"ensi to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","field-fri-short-relative+-1":"viime pe","field-thu-relative+-1":"viime torstaina","field-week":"viikko","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","field-dayperiod-short":"vuorokaudenaika","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","field-week-short-relative+-1":"viime vk","field-hour-narrow-relative+0":"tunnin sisällä","field-hour-short":"t","field-zone-short":"aikavyöhyke","field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","field-mon-narrow-relative+0":"tänä ma","field-mon-narrow-relative+1":"ensi ma","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","field-weekOfMonth-narrow":"kuukauden vk","field-weekday-narrow":"viikonpäivä","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/islamic.js b/lib/dojo/cldr/nls/fi/islamic.js
index 5106660d1..3014ec850 100644
--- a/lib/dojo/cldr/nls/fi/islamic.js
+++ b/lib/dojo/cldr/nls/fi/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fi/islamic",{"days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"field-second-relative+0":"nyt","field-weekday":"viikonpäivä","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"ccc d. MMM","field-tue-relative+-1":"viime tiistaina","days-format-short":["su","ma","ti","ke","to","pe","la"],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"viime perjantaina","field-wed-relative+-1":"viime keskiviikkona","months-format-wide":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","ša’ban","ramadan","šawwal","dhu-l-qa’da","dhu-l-hiddža"],"dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"ip.","dateFormat-full":"cccc d. MMMM y G","dateFormatItem-yyyyMEd":"E d.M.y G","field-thu-relative+-1":"viime torstaina","dateFormatItem-Md":"d.M.","dayPeriods-format-abbr-am":"ap.","field-era":"aikakausi","months-standAlone-wide":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","ša’ban","ramadan","šawwal","dhu-l-qa’da","dhu-l-hiddža"],"timeFormat-short":"H.mm","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"timeFormat-long":"H.mm.ss z","field-year":"vuosi","field-hour":"tunti","months-format-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","ša’ban","ramadan","šawwal","dhu-l-qa’da","dhu-l-hiddža"],"field-sat-relative+0":"tänä lauantaina","field-sat-relative+1":"ensi lauantaina","timeFormat-full":"H.mm.ss zzzz","field-day-relative+0":"tänään","field-thu-relative+0":"tänä torstaina","field-day-relative+1":"huomenna","field-thu-relative+1":"ensi torstaina","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"ylihuomenna","dateFormatItem-H":"H","months-standAlone-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","ša’ban","ramadan","šawwal","dhu-l-qa’da","dhu-l-hiddža"],"quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d. MMM y G","timeFormat-medium":"H.mm.ss","field-sun-relative+0":"tänä sunnuntaina","dateFormatItem-Hm":"H.mm","field-sun-relative+1":"ensi sunnuntaina","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"field-minute":"minuutti","field-dayperiod":"vuorokaudenaika","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-ms":"mm.ss","field-day-relative+-1":"eilen","dayPeriods-format-narrow-am":"ap.","field-day-relative+-2":"toissa päivänä","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M.","field-fri-relative+0":"tänä perjantaina","field-fri-relative+1":"ensi perjantaina","field-day":"päivä","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-zone":"aikavyöhyke","dateFormatItem-y":"y G","field-year-relative+-1":"viime vuonna","field-month-relative+-1":"viime kuussa","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"ip.","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"days-format-narrow":["S","M","T","K","T","P","L"],"dateFormatItem-yyyyMd":"d.M.y G","field-month":"kuukausi","days-standAlone-narrow":["S","M","T","K","T","P","L"],"field-tue-relative+0":"tänä tiistaina","field-tue-relative+1":"ensi tiistaina","dayPeriods-format-wide-am":"ap.","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","dateFormat-short":"d.M.y GGGGG","field-second":"sekunti","field-sat-relative+-1":"viime lauantaina","field-sun-relative+-1":"viime sunnuntaina","field-month-relative+0":"tässä kuussa","field-month-relative+1":"ensi kuussa","dateFormatItem-Ed":"E d.","field-week":"viikko","dateFormat-medium":"d.M.y G","field-year-relative+0":"tänä vuonna","field-week-relative+-1":"viime viikolla","dateFormatItem-yyyyM":"L.y G","field-year-relative+1":"ensi vuonna","dayPeriods-format-narrow-pm":"ip.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"H.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"viime maanantaina","dateFormatItem-yyyy":"y G","field-week-relative+0":"tällä viikolla","field-week-relative+1":"ensi viikolla"}); \ No newline at end of file
+define("dojo/cldr/nls/fi/islamic",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","dateFormatItem-Hm":"H.mm","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","dateFormatItem-ms":"mm.ss","timeFormat-short":"H.mm","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-thu-short-relative+0":"tänä to","field-day-short-relative+-1":"eilen","field-thu-short-relative+1":"ensi to","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","field-wed-narrow-relative+-1":"viime ke","dateFormatItem-EBhms":"E h.mm.ss B","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","dayPeriods-format-narrow-am":"ap.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"kuukauden vk päivä","dayPeriods-format-abbr-am":"ap.","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","timeFormat-medium":"H.mm.ss","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["hidžran jälkeen"],"field-weekOfMonth":"kuukauden viikko","dayPeriods-standAlone-abbr-pm":"ip.","field-month-short":"kk","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","dayPeriods-format-wide-am":"ap.","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","dateTimeFormat-medium":"{1} 'klo' {0}","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","days-standAlone-narrow":["S","M","T","K","T","P","L"],"dayPeriods-standAlone-wide-pm":"ip.","dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"days-format-narrow":["S","M","T","K","T","P","L"],"field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","dateFormatItem-GyMMM":"LLL y G","field-month":"kuukausi","field-day-narrow":"pv","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","dayPeriods-format-narrow-pm":"ip.","dateFormat-medium":"d.M.y G","dateFormatItem-yyyyMMMM":"LLLL y G","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"dayPeriods-format-abbr-pm":"ip.","dateFormatItem-yyyyM":"L.y G","field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-day-narrow-relative+-2":"toissap.","field-quarter-relative+-1":"viime neljännesvuonna","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"vuorokaudenaika","dayPeriods-standAlone-narrow-am":"ap.","field-week-narrow-relative+-1":"viime vk","days-format-short":["su","ma","ti","ke","to","pe","la"],"dayPeriods-format-wide-pm":"ip.","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","dateTimeFormat-long":"{1} 'klo' {0}","dateFormatItem-Md":"d.M.","field-minute-narrow-relative+0":"minuutin sisällä","field-hour":"tunti","months-format-wide":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","ša’ban","ramadan","šawwal","dhu-l-qa’da","dhu-l-hiddža"],"dateFormat-full":"cccc d. MMMM y G","field-month-relative+-1":"viime kuussa","dateFormatItem-Hms":"H.mm.ss","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","field-minute-short-relative+0":"minuutin sisällä","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","ša’ban","ramadan","šawwal","dhu-l-qa’da","dhu-l-hiddža"],"field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","timeFormat-long":"H.mm.ss z","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","dateFormat-short":"d.M.y GGGGG","field-thu-short-relative+-1":"viime to","field-year-narrow-relative+-1":"viime v","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"viime ma","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"viime to","field-tue-narrow-relative+-1":"viime ti","field-weekOfMonth-short":"kuukauden vk","dateFormatItem-H":"H","dayPeriods-standAlone-narrow-pm":"ip.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"tänä ke","months-standAlone-wide":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","ša’ban","ramadan","šawwal","dhu-l-qa’da","dhu-l-hiddža"],"field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"field-second-narrow-relative+0":"nyt","dateTimeFormat-full":"{1} 'klo' {0}","dateFormatItem-hm":"h.mm a","field-weekday":"viikonpäivä","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-sat-relative+0":"tänä lauantaina","field-day-short-relative+1":"huom.","field-quarter-narrow-relative+1":"ensi nelj.","field-sat-relative+1":"ensi lauantaina","field-day-short-relative+2":"ylihuom.","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","months-standAlone-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","džumada-l-ula","džumada-l-akhira","radžab","ša’ban","ramadan","šawwal","dhu-l-qa’da","dhu-l-hiddža"],"field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","timeFormat-full":"H.mm.ss zzzz","dateFormatItem-MEd":"E d.M.","field-zone-narrow":"aikavyöhyke","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tänä to","field-thu-narrow-relative+1":"ensi to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","field-fri-short-relative+-1":"viime pe","dateFormatItem-hms":"h.mm.ss a","field-thu-relative+-1":"viime torstaina","field-week":"viikko","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","field-dayperiod-short":"vuorokaudenaika","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"field-week-short-relative+-1":"viime vk","field-hour-narrow-relative+0":"tunnin sisällä","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"aikavyöhyke","quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-mon-narrow-relative+0":"tänä ma","field-mon-narrow-relative+1":"ensi ma","dateFormatItem-EHm":"E HH.mm","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","dateFormatItem-MMMEd":"ccc d. MMM","field-weekOfMonth-narrow":"kuukauden vk","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"viikonpäivä","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","dayPeriods-standAlone-abbr-am":"ap.","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","dateFormatItem-Gy":"y G","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe","dayPeriods-standAlone-wide-am":"ap."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/japanese.js b/lib/dojo/cldr/nls/fi/japanese.js
index 8c577751d..5ef263f08 100644
--- a/lib/dojo/cldr/nls/fi/japanese.js
+++ b/lib/dojo/cldr/nls/fi/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fi/japanese",{"field-sat-relative+0":"tänä lauantaina","field-sat-relative+1":"ensi lauantaina","field-dayperiod":"vuorokaudenaika","field-sun-relative+-1":"viime sunnuntaina","field-mon-relative+-1":"viime maanantaina","field-minute":"minuutti","field-day-relative+-1":"eilen","field-weekday":"viikonpäivä","field-day-relative+-2":"toissa päivänä","field-era":"aikakausi","field-hour":"tunti","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","field-wed-relative+-1":"viime keskiviikkona","field-day-relative+0":"tänään","field-day-relative+1":"huomenna","field-day-relative+2":"ylihuomenna","dateFormat-long":"d. MMMM y G","field-tue-relative+0":"tänä tiistaina","field-zone":"aikavyöhyke","field-tue-relative+1":"ensi tiistaina","field-week-relative+-1":"viime viikolla","dateFormat-medium":"d.M.y G","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-sat-relative+-1":"viime lauantaina","field-year-relative+-1":"viime vuonna","field-year":"vuosi","field-fri-relative+0":"tänä perjantaina","field-fri-relative+1":"ensi perjantaina","field-week":"viikko","field-week-relative+0":"tällä viikolla","field-week-relative+1":"ensi viikolla","field-month-relative+0":"tässä kuussa","field-month":"kuukausi","field-month-relative+1":"ensi kuussa","field-fri-relative+-1":"viime perjantaina","field-second":"sekunti","field-tue-relative+-1":"viime tiistaina","field-day":"päivä","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-thu-relative+0":"tänä torstaina","field-second-relative+0":"nyt","dateFormat-short":"d.M.y GGGGG","field-thu-relative+1":"ensi torstaina","dateFormat-full":"cccc d. MMMM y G","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","field-month-relative+-1":"viime kuussa","field-thu-relative+-1":"viime torstaina"}); \ No newline at end of file
+define("dojo/cldr/nls/fi/japanese",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-thu-short-relative+0":"tänä to","field-day-short-relative+-1":"eilen","field-thu-short-relative+1":"ensi to","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","field-wed-narrow-relative+-1":"viime ke","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","field-weekdayOfMonth-narrow":"kuukauden vk päivä","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","field-weekOfMonth":"kuukauden viikko","field-month-short":"kk","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","dateFormat-long":"d. MMMM y G","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","field-month":"kuukausi","field-day-narrow":"pv","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","dateFormat-medium":"d.M.y G","field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-day-narrow-relative+-2":"toissap.","field-quarter-relative+-1":"viime neljännesvuonna","field-dayperiod-narrow":"vuorokaudenaika","field-week-narrow-relative+-1":"viime vk","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","field-hour":"tunti","field-minute-narrow-relative+0":"minuutin sisällä","dateFormat-full":"cccc d. MMMM y G","field-month-relative+-1":"viime kuussa","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","field-minute-short-relative+0":"minuutin sisällä","field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","dateFormat-short":"d.M.y GGGGG","field-thu-short-relative+-1":"viime to","field-year-narrow-relative+-1":"viime v","field-mon-narrow-relative+-1":"viime ma","field-thu-narrow-relative+-1":"viime to","field-tue-narrow-relative+-1":"viime ti","field-weekOfMonth-short":"kuukauden vk","field-wed-short-relative+0":"tänä ke","field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","field-second-narrow-relative+0":"nyt","field-weekday":"viikonpäivä","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-sat-relative+0":"tänä lauantaina","field-day-short-relative+1":"huom.","field-quarter-narrow-relative+1":"ensi nelj.","field-sat-relative+1":"ensi lauantaina","field-day-short-relative+2":"ylihuom.","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","field-zone-narrow":"aikavyöhyke","field-thu-narrow-relative+0":"tänä to","field-thu-narrow-relative+1":"ensi to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","field-fri-short-relative+-1":"viime pe","field-thu-relative+-1":"viime torstaina","field-week":"viikko","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","field-dayperiod-short":"vuorokaudenaika","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","field-week-short-relative+-1":"viime vk","field-hour-narrow-relative+0":"tunnin sisällä","field-hour-short":"t","field-zone-short":"aikavyöhyke","field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","field-mon-narrow-relative+0":"tänä ma","field-mon-narrow-relative+1":"ensi ma","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","field-weekOfMonth-narrow":"kuukauden vk","field-weekday-narrow":"viikonpäivä","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/number.js b/lib/dojo/cldr/nls/fi/number.js
index 41e8b7614..7f13dfd16 100644
--- a/lib/dojo/cldr/nls/fi/number.js
+++ b/lib/dojo/cldr/nls/fi/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fi/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"−","decimal":",","superscriptingExponent":"×","nan":"epäluku","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 biljoonaa","decimalFormat-short":"000 bilj'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/fi/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","decimalFormat-short":"000 bilj'.'","nan":"epäluku","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoonaa","decimalFormat":"#,##0.###","currencyFormat-short":"000 bilj'.' ¤","timeSeparator":".","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/persian.js b/lib/dojo/cldr/nls/fi/persian.js
new file mode 100644
index 000000000..0eee005d6
--- /dev/null
+++ b/lib/dojo/cldr/nls/fi/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/fi/persian",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","dateFormatItem-Hm":"H.mm","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","dateFormatItem-ms":"mm.ss","timeFormat-short":"H.mm","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-thu-short-relative+0":"tänä to","field-day-short-relative+-1":"eilen","field-thu-short-relative+1":"ensi to","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","field-wed-narrow-relative+-1":"viime ke","dateFormatItem-EBhms":"E h.mm.ss B","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","dayPeriods-format-narrow-am":"ap.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"kuukauden vk päivä","dayPeriods-format-abbr-am":"ap.","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","timeFormat-medium":"H.mm.ss","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"eraNames":["Anno Persico"],"field-weekOfMonth":"kuukauden viikko","dayPeriods-standAlone-abbr-pm":"ip.","field-month-short":"kk","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","dayPeriods-format-wide-am":"ap.","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","dateTimeFormat-medium":"{1} 'klo' {0}","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","days-standAlone-narrow":["S","M","T","K","T","P","L"],"dayPeriods-standAlone-wide-pm":"ip.","dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","quarters-standAlone-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"days-format-narrow":["S","M","T","K","T","P","L"],"field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","dateFormatItem-GyMMM":"LLL y G","field-month":"kuukausi","field-day-narrow":"pv","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","dayPeriods-format-narrow-pm":"ip.","dateFormat-medium":"d.M.y G","dateFormatItem-yyyyMMMM":"LLLL y G","quarters-standAlone-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"dayPeriods-format-abbr-pm":"ip.","dateFormatItem-yyyyM":"L.y G","field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-day-narrow-relative+-2":"toissap.","months-format-narrow":["T","H","M","H","T","K","H","E","S","L","M","J"],"field-quarter-relative+-1":"viime neljännesvuonna","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"vuorokaudenaika","dayPeriods-standAlone-narrow-am":"ap.","field-week-narrow-relative+-1":"viime vk","days-format-short":["su","ma","ti","ke","to","pe","la"],"dayPeriods-format-wide-pm":"ip.","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","dateTimeFormat-long":"{1} 'klo' {0}","dateFormatItem-Md":"d.M.","field-minute-narrow-relative+0":"minuutin sisällä","field-hour":"tunti","months-format-wide":["farvardinkuuta","ordibeheštkuuta","khordadkuuta","tirkuuta","mordadkuuta","šahrivarkuuta","mehrkuuta","abankuuta","azarkuuta","deykuuta","bahmankuuta","esfandkuuta"],"dateFormat-full":"cccc d. MMMM y G","field-month-relative+-1":"viime kuussa","dateFormatItem-Hms":"H.mm.ss","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","field-minute-short-relative+0":"minuutin sisällä","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["farvardinkuuta","ordibeheštkuuta","khordadkuuta","tirkuuta","mordadkuuta","šahrivarkuuta","mehrkuuta","abankuuta","azarkuuta","deykuuta","bahmankuuta","esfandkuuta"],"field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","timeFormat-long":"H.mm.ss z","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","dateFormat-short":"d.M.y GGGGG","field-thu-short-relative+-1":"viime to","field-year-narrow-relative+-1":"viime v","days-standAlone-wide":["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"viime ma","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"viime to","field-tue-narrow-relative+-1":"viime ti","field-weekOfMonth-short":"kuukauden vk","dateFormatItem-H":"H","dayPeriods-standAlone-narrow-pm":"ip.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"tänä ke","months-standAlone-wide":["farvardinkuu","ordibeheštkuu","khordadkuu","tirkuu","mordadkuu","šahrivarkuu","mehrkuu","abankuu","azarkuu","deykuu","bahmankuu","esfandkuu"],"field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","days-standAlone-abbr":["su","ma","ti","ke","to","pe","la"],"field-second-narrow-relative+0":"nyt","dateTimeFormat-full":"{1} 'klo' {0}","dateFormatItem-hm":"h.mm a","field-weekday":"viikonpäivä","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-sat-relative+0":"tänä lauantaina","field-day-short-relative+1":"huom.","field-quarter-narrow-relative+1":"ensi nelj.","field-sat-relative+1":"ensi lauantaina","field-day-short-relative+2":"ylihuom.","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","months-standAlone-abbr":["farvardin","ordibehešt","khordad","tir","mordad","šahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","timeFormat-full":"H.mm.ss zzzz","dateFormatItem-MEd":"E d.M.","field-zone-narrow":"aikavyöhyke","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tänä to","field-thu-narrow-relative+1":"ensi to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","field-fri-short-relative+-1":"viime pe","dateFormatItem-hms":"h.mm.ss a","field-thu-relative+-1":"viime torstaina","field-week":"viikko","quarters-format-wide":["1. neljännes","2. neljännes","3. neljännes","4. neljännes"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","field-dayperiod-short":"vuorokaudenaika","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","days-standAlone-short":["su","ma","ti","ke","to","pe","la"],"field-week-short-relative+-1":"viime vk","field-hour-narrow-relative+0":"tunnin sisällä","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"aikavyöhyke","quarters-format-abbr":["1. nelj.","2. nelj.","3. nelj.","4. nelj."],"field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","days-format-wide":["sunnuntaina","maanantaina","tiistaina","keskiviikkona","torstaina","perjantaina","lauantaina"],"field-mon-narrow-relative+0":"tänä ma","field-mon-narrow-relative+1":"ensi ma","dateFormatItem-EHm":"E HH.mm","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","dateFormatItem-MMMEd":"ccc d. MMM","field-weekOfMonth-narrow":"kuukauden vk","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"viikonpäivä","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","dayPeriods-standAlone-abbr-am":"ap.","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","days-format-abbr":["su","ma","ti","ke","to","pe","la"],"dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","dateFormatItem-Gy":"y G","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe","dayPeriods-standAlone-wide-am":"ap."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fi/roc.js b/lib/dojo/cldr/nls/fi/roc.js
index 0db69fbf5..a5a8a08cf 100644
--- a/lib/dojo/cldr/nls/fi/roc.js
+++ b/lib/dojo/cldr/nls/fi/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fi/roc",{"field-sat-relative+0":"tänä lauantaina","field-sat-relative+1":"ensi lauantaina","field-dayperiod":"vuorokaudenaika","field-sun-relative+-1":"viime sunnuntaina","field-mon-relative+-1":"viime maanantaina","field-minute":"minuutti","field-day-relative+-1":"eilen","field-weekday":"viikonpäivä","field-day-relative+-2":"toissa päivänä","field-era":"aikakausi","field-hour":"tunti","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","field-wed-relative+-1":"viime keskiviikkona","field-day-relative+0":"tänään","field-day-relative+1":"huomenna","eraAbbr":["Before R.O.C.","Minguo"],"field-day-relative+2":"ylihuomenna","field-tue-relative+0":"tänä tiistaina","field-zone":"aikavyöhyke","field-tue-relative+1":"ensi tiistaina","field-week-relative+-1":"viime viikolla","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-sat-relative+-1":"viime lauantaina","field-year-relative+-1":"viime vuonna","field-year":"vuosi","field-fri-relative+0":"tänä perjantaina","field-fri-relative+1":"ensi perjantaina","field-week":"viikko","field-week-relative+0":"tällä viikolla","field-week-relative+1":"ensi viikolla","field-month-relative+0":"tässä kuussa","field-month":"kuukausi","field-month-relative+1":"ensi kuussa","field-fri-relative+-1":"viime perjantaina","field-second":"sekunti","field-tue-relative+-1":"viime tiistaina","field-day":"päivä","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-thu-relative+0":"tänä torstaina","field-second-relative+0":"nyt","field-thu-relative+1":"ensi torstaina","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","field-month-relative+-1":"viime kuussa","field-thu-relative+-1":"viime torstaina"}); \ No newline at end of file
+define("dojo/cldr/nls/fi/roc",{"field-quarter-short-relative+0":"tänä neljänneksenä","field-quarter-short-relative+1":"ensi neljänneksenä","field-tue-relative+-1":"viime tiistaina","field-year":"vuosi","field-wed-relative+0":"tänä keskiviikkona","field-wed-relative+1":"ensi keskiviikkona","field-minute":"minuutti","field-month-narrow-relative+-1":"viime kk","field-tue-narrow-relative+0":"tänä ti","field-tue-narrow-relative+1":"ensi ti","field-thu-short-relative+0":"tänä to","field-day-short-relative+-1":"eilen","field-thu-short-relative+1":"ensi to","field-day-relative+0":"tänään","field-day-short-relative+-2":"toissap.","field-day-relative+1":"huomenna","field-week-narrow-relative+0":"tällä vk","field-day-relative+2":"ylihuomenna","field-week-narrow-relative+1":"ensi vk","field-wed-narrow-relative+-1":"viime ke","field-year-narrow":"v","field-era-short":"aikakausi","field-year-narrow-relative+0":"tänä v","field-tue-relative+0":"tänä tiistaina","field-year-narrow-relative+1":"ensi v","field-tue-relative+1":"ensi tiistaina","field-weekdayOfMonth":"kuukauden viikonpäivä","field-second-short":"s","field-weekdayOfMonth-narrow":"kuukauden vk päivä","field-week-relative+0":"tällä viikolla","field-month-relative+0":"tässä kuussa","field-week-relative+1":"ensi viikolla","field-month-relative+1":"ensi kuussa","field-sun-narrow-relative+0":"tänä su","field-mon-short-relative+0":"tänä ma","field-sun-narrow-relative+1":"ensi su","field-mon-short-relative+1":"ensi ma","field-second-relative+0":"nyt","eraNames":["ennen Kiinan tasavaltaa","Minguo"],"field-weekOfMonth":"kuukauden viikko","field-month-short":"kk","field-day":"päivä","field-dayOfYear-short":"vuodenpv","field-year-relative+-1":"viime vuonna","field-sat-short-relative+-1":"viime la","field-hour-relative+0":"tämän tunnin aikana","field-second-short-relative+0":"nyt","field-wed-relative+-1":"viime keskiviikkona","field-sat-narrow-relative+-1":"viime la","field-second":"sekunti","field-hour-short-relative+0":"tunnin sisällä","field-quarter":"neljännesvuosi","field-week-short":"vk","field-day-narrow-relative+0":"tänään","field-day-narrow-relative+1":"huom.","field-day-narrow-relative+2":"ylihuom.","field-tue-short-relative+0":"tänä ti","field-tue-short-relative+1":"ensi ti","field-month-short-relative+-1":"viime kk","field-mon-relative+-1":"viime maanantaina","field-month":"kuukausi","field-day-narrow":"pv","field-minute-short":"min","field-dayperiod":"vuorokaudenaika","field-sat-short-relative+0":"tänä la","field-sat-short-relative+1":"ensi la","eraAbbr":["e. Kiinan tasav.","Minguo"],"field-second-narrow":"s","field-mon-relative+0":"tänä maanantaina","field-mon-relative+1":"ensi maanantaina","field-day-narrow-relative+-1":"eilen","field-year-short":"v","field-day-narrow-relative+-2":"toissap.","field-quarter-relative+-1":"viime neljännesvuonna","field-dayperiod-narrow":"vuorokaudenaika","field-week-narrow-relative+-1":"viime vk","field-dayOfYear":"vuodenpäivä","field-sat-relative+-1":"viime lauantaina","field-hour":"tunti","field-minute-narrow-relative+0":"minuutin sisällä","field-month-relative+-1":"viime kuussa","field-quarter-short":"neljännes","field-sat-narrow-relative+0":"tänä la","field-fri-relative+0":"tänä perjantaina","field-sat-narrow-relative+1":"ensi la","field-fri-relative+1":"ensi perjantaina","field-month-narrow-relative+0":"tässä kk","field-month-narrow-relative+1":"ensi kk","field-sun-short-relative+0":"tänä su","field-sun-short-relative+1":"ensi su","field-week-relative+-1":"viime viikolla","field-quarter-short-relative+-1":"viime neljänneksenä","field-minute-short-relative+0":"minuutin sisällä","field-quarter-relative+0":"tänä neljännesvuonna","field-minute-relative+0":"tämän minuutin aikana","field-quarter-relative+1":"ensi neljännesvuonna","field-wed-short-relative+-1":"viime ke","field-thu-short-relative+-1":"viime to","field-year-narrow-relative+-1":"viime v","field-mon-narrow-relative+-1":"viime ma","field-thu-narrow-relative+-1":"viime to","field-tue-narrow-relative+-1":"viime ti","field-weekOfMonth-short":"kuukauden vk","field-wed-short-relative+0":"tänä ke","field-wed-short-relative+1":"ensi ke","field-sun-relative+-1":"viime sunnuntaina","field-second-narrow-relative+0":"nyt","field-weekday":"viikonpäivä","field-day-short-relative+0":"tänään","field-quarter-narrow-relative+0":"tänä nelj.","field-sat-relative+0":"tänä lauantaina","field-day-short-relative+1":"huom.","field-quarter-narrow-relative+1":"ensi nelj.","field-sat-relative+1":"ensi lauantaina","field-day-short-relative+2":"ylihuom.","field-week-short-relative+0":"tällä vk","field-week-short-relative+1":"ensi vk","field-dayOfYear-narrow":"vuodenpv","field-month-short-relative+0":"tässä kk","field-month-short-relative+1":"ensi kk","field-weekdayOfMonth-short":"kuukauden vk päivä","field-zone-narrow":"aikavyöhyke","field-thu-narrow-relative+0":"tänä to","field-thu-narrow-relative+1":"ensi to","field-sun-narrow-relative+-1":"viime su","field-mon-short-relative+-1":"viime ma","field-thu-relative+0":"tänä torstaina","field-thu-relative+1":"ensi torstaina","field-fri-short-relative+-1":"viime pe","field-thu-relative+-1":"viime torstaina","field-week":"viikko","field-wed-narrow-relative+0":"tänä ke","field-wed-narrow-relative+1":"ensi ke","field-quarter-narrow-relative+-1":"viime nelj.","field-year-short-relative+0":"tänä v","field-dayperiod-short":"vuorokaudenaika","field-year-short-relative+1":"ensi v","field-fri-short-relative+0":"tänä pe","field-fri-short-relative+1":"ensi pe","field-week-short-relative+-1":"viime vk","field-hour-narrow-relative+0":"tunnin sisällä","field-hour-short":"t","field-zone-short":"aikavyöhyke","field-month-narrow":"kk","field-hour-narrow":"t","field-fri-narrow-relative+-1":"viime pe","field-year-relative+0":"tänä vuonna","field-year-relative+1":"ensi vuonna","field-era-narrow":"aikakausi","field-fri-relative+-1":"viime perjantaina","eraNarrow":["e. Kiinan tasav.","Minguo"],"field-tue-short-relative+-1":"viime ti","field-minute-narrow":"min","field-mon-narrow-relative+0":"tänä ma","field-mon-narrow-relative+1":"ensi ma","field-year-short-relative+-1":"viime v","field-zone":"aikavyöhyke","field-weekOfMonth-narrow":"kuukauden vk","field-weekday-narrow":"viikonpäivä","field-quarter-narrow":"nelj.","field-sun-short-relative+-1":"viime su","field-day-relative+-1":"eilen","field-day-relative+-2":"toissa päivänä","field-weekday-short":"viikonpäivä","field-sun-relative+0":"tänä sunnuntaina","field-sun-relative+1":"ensi sunnuntaina","field-day-short":"pv","field-week-narrow":"vk","field-era":"aikakausi","field-fri-narrow-relative+0":"tänä pe","field-fri-narrow-relative+1":"ensi pe"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr-ch/currency.js b/lib/dojo/cldr/nls/fr-ch/currency.js
deleted file mode 100644
index fbce659c9..000000000
--- a/lib/dojo/cldr/nls/fr-ch/currency.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/fr-ch/currency",{"CHF_symbol":"CHF"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr-ch/generic.js b/lib/dojo/cldr/nls/fr-ch/generic.js
index 5c6dbe32b..e469e6239 100644
--- a/lib/dojo/cldr/nls/fr-ch/generic.js
+++ b/lib/dojo/cldr/nls/fr-ch/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr-ch/generic",{"dateFormat-full":"EEEE, d MMMM y G","dateFormat-short":"dd.MM.yy GGGGG"}); \ No newline at end of file
+define("dojo/cldr/nls/fr-ch/generic",{"dateFormatItem-yMEd":"E, dd.MM.y GGGGG","dateFormatItem-yMd":"dd.MM.y GGGGG","dateFormat-short":"dd.MM.y GGGGG","dateFormatItem-MMdd":"dd.MM","dateFormatItem-MEd":"E, dd.MM.","dateFormatItem-yM":"MM.y GGGGG","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-Md":"dd.MM."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr-ch/gregorian.js b/lib/dojo/cldr/nls/fr-ch/gregorian.js
index b4e82931d..c8b62937d 100644
--- a/lib/dojo/cldr/nls/fr-ch/gregorian.js
+++ b/lib/dojo/cldr/nls/fr-ch/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr-ch/gregorian",{"timeFormat-full":"HH.mm:ss 'h' zzzz","dateFormat-full":"EEEE, d MMMM y","dateFormat-short":"dd.MM.yy"}); \ No newline at end of file
+define("dojo/cldr/nls/fr-ch/gregorian",{"dayPeriods-format-narrow-noon":"midi","dateFormatItem-yMd":"dd.MM.y","dateFormatItem-MEd":"E, dd.MM.","dateFormatItem-MMdd":"dd.MM","dateFormatItem-yMEd":"E, dd.MM.y","dayPeriods-format-narrow-night1":"du mat.","timeFormat-full":"HH.mm:ss 'h' zzzz","dateFormatItem-Md":"dd.MM.","dayPeriods-format-abbr-midnight":"min.","dayPeriods-format-abbr-morning1":"du mat.","dayPeriods-format-abbr-night1":"du mat.","dayPeriods-standAlone-abbr-midnight":"min.","dayPeriods-format-abbr-afternoon1":"de l’ap.m.","dayPeriods-format-abbr-evening1":"du soir","dayPeriods-format-narrow-midnight":"min.","dayPeriods-format-narrow-afternoon1":"de l’ap.m.","dateFormat-short":"dd.MM.yy","dayPeriods-standAlone-narrow-midnight":"min.","dateFormatItem-yM":"MM.y","dayPeriods-format-narrow-morning1":"du mat.","dayPeriods-format-narrow-evening1":"du soir","dayPeriods-format-abbr-noon":"midi","dateFormat-full":"EEEE, d MMMM y"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr-ch/number.js b/lib/dojo/cldr/nls/fr-ch/number.js
index f166680e8..6f842d712 100644
--- a/lib/dojo/cldr/nls/fr-ch/number.js
+++ b/lib/dojo/cldr/nls/fr-ch/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr-ch/number",{"currencyFormat":"¤ #,##0.00;¤-#,##0.00","group":"'","decimal":"."}); \ No newline at end of file
+define("dojo/cldr/nls/fr-ch/number",{"currencyDecimal":".","percentFormat":"#,##0%"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/buddhist.js b/lib/dojo/cldr/nls/fr/buddhist.js
index 966d4adec..b9b633ccc 100644
--- a/lib/dojo/cldr/nls/fr/buddhist.js
+++ b/lib/dojo/cldr/nls/fr/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/buddhist",{"days-standAlone-short":["Di","Lu","Ma","Me","Je","Ve","Sa"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"maintenant","field-weekday":"jour de la semaine","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","eraNarrow":"E.B.","field-tue-relative+-1":"mardi dernier","days-format-short":["di","lu","ma","me","je","ve","sa"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"vendredi dernier","field-wed-relative+-1":"mercredi dernier","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"jeudi dernier","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"midi","field-era":"ère","months-standAlone-wide":["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],"quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"field-year":"année","field-hour":"heure","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-day-relative+0":"aujourd’hui","field-thu-relative+0":"ce jeudi","field-day-relative+1":"demain","field-thu-relative+1":"jeudi prochain","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"après-demain","months-standAlone-abbr":["Janv.","Févr.","Mars","Avr.","Mai","Juin","Juil.","Août","Sept.","Oct.","Nov.","Déc."],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","days-standAlone-wide":["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["ère b."],"field-minute":"minute","field-dayperiod":"cadran","days-standAlone-abbr":["Dim.","Lun.","Mar.","Mer.","Jeu.","Ven.","Sam."],"dateFormatItem-d":"d","field-day-relative+-1":"hier","dateTimeFormat-long":"{1} 'à' {0}","field-day-relative+-2":"avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} 'à' {0}","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-day":"jour","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-zone":"fuseau horaire","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"l’année dernière","field-month-relative+-1":"le mois dernier","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"eraNames":["ère bouddhiste"],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"mois","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["D","L","M","M","J","V","S"],"field-tue-relative+0":"ce mardi","field-tue-relative+1":"mardi prochain","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","dateFormat-short":"dd/MM/y GGGGG","dayPeriods-format-narrow-noon":"midi","field-second":"seconde","field-sat-relative+-1":"samedi dernier","field-sun-relative+-1":"dimanche dernier","field-month-relative+0":"ce mois-ci","field-month-relative+1":"le mois prochain","dateFormatItem-Ed":"E d","field-week":"semaine","dateFormat-medium":"d MMM y G","field-year-relative+0":"cette année","field-week-relative+-1":"la semaine dernière","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"l’année prochaine","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lundi dernier","dateFormatItem-yyyy":"y G","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/buddhist",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-thu-short-relative+0":"ce jeu.","field-day-short-relative+-1":"hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["ère bouddhique"],"field-weekOfMonth":"semaine (mois)","field-month-short":"m.","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"mercredi dernier","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","dateFormatItem-GyMMM":"MMM y G","field-month":"mois","field-day-narrow":"j","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["E. B."],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"le trimestre dernier","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","days-format-short":["di","lu","ma","me","je","ve","sa"],"field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","dateTimeFormat-long":"{1} 'à' {0}","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"cette min","field-hour":"heure","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","dateFormat-short":"dd/MM/y GGGGG","field-thu-short-relative+-1":"jeu. dernier","field-year-narrow-relative+-1":"l’année dernière","days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"lun. dernier","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jeu. dernier","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"ce mer.","dateFormatItem-M":"L","months-standAlone-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateTimeFormat-full":"{1} 'à' {0}","dateFormatItem-d":"d","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-day-short-relative+1":"demain","field-sat-relative+0":"ce samedi","field-quarter-narrow-relative+1":"trim. proch.","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","months-standAlone-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","dateFormatItem-MEd":"E d/M","field-zone-narrow":"fuseau horaire","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"ce jeu.","field-thu-narrow-relative+1":"jeu. prochain","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","field-dayperiod-short":"cadran","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","days-standAlone-short":["di","lu","ma","me","je","ve","sa"],"field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fuseau horaire","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","eraNarrow":"EB","field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","dateFormatItem-Gy":"y G","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/chinese.js b/lib/dojo/cldr/nls/fr/chinese.js
index 4d6fd2b29..fc5285c6a 100644
--- a/lib/dojo/cldr/nls/fr/chinese.js
+++ b/lib/dojo/cldr/nls/fr/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/chinese",{"field-second-relative+0":"maintenant","field-weekday":"jour de la semaine","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","dateFormatItem-GyMMMEd":"E d MMM U","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"mardi dernier","dateFormat-long":"d MMMM U","field-fri-relative+-1":"vendredi dernier","field-wed-relative+-1":"mercredi dernier","months-format-wide":["zhēngyuè","èryuè","sānyuè","sìyuè","wǔyuè","liùyuè","qīyuè","bāyuè","jiǔyuè","shíyuè","shíyīyuè","shí’èryuè"],"dateFormatItem-yyyyQQQ":"QQQ U","dateFormat-full":"EEEE d MMMM U","dateFormatItem-yyyyMEd":"E d/M/y","field-thu-relative+-1":"jeudi dernier","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/y","field-era":"ère","months-standAlone-wide":["zhēngyuè","èryuè","sānyuè","sìyuè","wǔyuè","liùyuè","qīyuè","bāyuè","jiǔyuè","shíyuè","shíyīyuè","shí’èryuè"],"field-year":"année","field-hour":"heure","months-format-abbr":["1yuè","2yuè","3yuè","4yuè","5yuè","6yuè","7yuè","8yuè","9yuè","10yuè","11yuè","12yuè"],"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-day-relative+0":"aujourd’hui","field-thu-relative+0":"ce jeudi","field-day-relative+1":"demain","field-thu-relative+1":"jeudi prochain","dateFormatItem-GyMMMd":"d MMM U","field-day-relative+2":"après-demain","months-standAlone-abbr":["1yuè","2yuè","3yuè","4yuè","5yuè","6yuè","7yuè","8yuè","9yuè","10yuè","11yuè","12yuè"],"dateFormatItem-Gy":"U","dateFormatItem-yyyyMMMEd":"E d MMM U","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM U","dateFormatItem-yyyyMMMd":"d MMM U","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-minute":"minute","field-dayperiod":"cadran","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-day":"jour","field-zone":"fuseau horaire","dateFormatItem-y":"U","field-year-relative+-1":"l’année dernière","field-month-relative+-1":"le mois dernier","dateFormatItem-yyyyMd":"d/M/y","field-month":"mois","dateFormatItem-MMM":"LLL","field-tue-relative+0":"ce mardi","field-tue-relative+1":"mardi prochain","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","dateFormat-short":"d/M/y","field-second":"seconde","field-sat-relative+-1":"samedi dernier","field-sun-relative+-1":"dimanche dernier","field-month-relative+0":"ce mois-ci","field-month-relative+1":"le mois prochain","field-week":"semaine","dateFormat-medium":"d MMM U","field-year-relative+0":"cette année","field-week-relative+-1":"la semaine dernière","dateFormatItem-yyyyM":"M/y","field-year-relative+1":"l’année prochaine","dateFormatItem-yyyyQQQQ":"QQQQ U","dateFormatItem-GyMMM":"MMM U","field-mon-relative+-1":"lundi dernier","dateFormatItem-yyyy":"U","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/chinese",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","dateFormatItem-ms":"mm:ss","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-day-short-relative+-1":"hier","field-thu-short-relative+0":"ce jeu.","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","dateFormatItem-yyyyQQQ":"QQQ U","field-weekOfMonth":"semaine (mois)","field-month-short":"m.","dateFormatItem-GyMMMEd":"E d MMM U","dateFormatItem-yyyyMd":"d/M/y","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","dateFormatItem-yyyyMEd":"E d/M/y","field-wed-relative+-1":"mercredi dernier","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","dateFormat-long":"d MMMM U","dateFormatItem-GyMMMd":"d MMM U","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","dateFormatItem-GyMMM":"MMM U","field-month":"mois","field-day-narrow":"j","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","dateFormat-medium":"d MMM U","dateFormatItem-yyyyMMMM":"MMMM U","dateFormatItem-yyyyM":"M/y","field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","field-quarter-relative+-1":"le trimestre dernier","dateFormatItem-yyyyMMMd":"d MMM U","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","dateFormatItem-Md":"d/M","field-hour":"heure","field-minute-narrow-relative+0":"cette min","months-format-wide":["zhēngyuè","èryuè","sānyuè","sìyuè","wǔyuè","liùyuè","qīyuè","bāyuè","jiǔyuè","shíyuè","shíyīyuè","shí’èryuè"],"dateFormat-full":"EEEE d MMMM U","field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","months-format-abbr":["1yuè","2yuè","3yuè","4yuè","5yuè","6yuè","7yuè","8yuè","9yuè","10yuè","11yuè","12yuè"],"field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","dateFormat-short":"d/M/y","field-year-narrow-relative+-1":"l’année dernière","field-thu-short-relative+-1":"jeu. dernier","dateFormatItem-yyyyMMMEd":"E d MMM U","field-mon-narrow-relative+-1":"lun. dernier","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jeu. dernier","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","dateFormatItem-yyyy":"U","dateFormatItem-M":"L","months-standAlone-wide":["zhēngyuè","èryuè","sānyuè","sìyuè","wǔyuè","liùyuè","qīyuè","bāyuè","jiǔyuè","shíyuè","shíyīyuè","shí’èryuè"],"field-wed-short-relative+0":"ce mer.","field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-day-short-relative+1":"demain","field-sat-relative+0":"ce samedi","field-quarter-narrow-relative+1":"trim. proch.","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","months-standAlone-abbr":["1yuè","2yuè","3yuè","4yuè","5yuè","6yuè","7yuè","8yuè","9yuè","10yuè","11yuè","12yuè"],"field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","dateFormatItem-MEd":"E d/M","field-zone-narrow":"fuseau horaire","dateFormatItem-y":"U","field-thu-narrow-relative+0":"ce jeu.","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-narrow-relative+1":"jeu. prochain","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","dateFormatItem-yMd":"d/M/y","field-week":"semaine","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","dateFormatItem-yyyyMMM":"MMM U","field-dayperiod-short":"cadran","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","dateFormatItem-yyyyQQQQ":"QQQQ U","field-hour-short":"h","field-zone-short":"fuseau horaire","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","dateFormatItem-Gy":"U","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/coptic.js b/lib/dojo/cldr/nls/fr/coptic.js
index 8b5717ea2..9a493222b 100644
--- a/lib/dojo/cldr/nls/fr/coptic.js
+++ b/lib/dojo/cldr/nls/fr/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/coptic",{"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-dayperiod":"cadran","field-sun-relative+-1":"dimanche dernier","field-mon-relative+-1":"lundi dernier","field-minute":"minute","field-day-relative+-1":"hier","field-weekday":"jour de la semaine","field-day-relative+-2":"avant-hier","field-era":"ère","field-hour":"heure","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-wed-relative+-1":"mercredi dernier","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-day-relative+2":"après-demain","field-tue-relative+0":"ce mardi","field-zone":"fuseau horaire","field-tue-relative+1":"mardi prochain","field-week-relative+-1":"la semaine dernière","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-sat-relative+-1":"samedi dernier","field-year-relative+-1":"l’année dernière","field-year":"année","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-week":"semaine","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine","field-month-relative+0":"ce mois-ci","field-month":"mois","field-month-relative+1":"le mois prochain","field-fri-relative+-1":"vendredi dernier","field-second":"seconde","field-tue-relative+-1":"mardi dernier","field-day":"jour","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-thu-relative+0":"ce jeudi","field-second-relative+0":"maintenant","field-thu-relative+1":"jeudi prochain","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-month-relative+-1":"le mois dernier","field-thu-relative+-1":"jeudi dernier"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/coptic",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-thu-short-relative+0":"ce jeu.","field-day-short-relative+-1":"hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["avant Dioclétien","après Dioclétien"],"field-weekOfMonth":"semaine (mois)","field-month-short":"m.","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","field-wed-relative+-1":"mercredi dernier","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","field-month":"mois","field-day-narrow":"j","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","eraAbbr":["av. D.","ap. D."],"field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"le trimestre dernier","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","field-hour":"heure","field-minute-narrow-relative+0":"cette min","months-format-wide":["tout","bâbâ","hâtour","kyahk","toubah","amshîr","barmahât","barmoudah","bashans","ba’ounah","abîb","misra","al-nasi"],"field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","months-format-abbr":["tout","bâb.","hât.","kya.","toub.","amsh.","barma.","barmo.","bash.","ba’o.","abî.","mis.","al-n."],"field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","field-thu-short-relative+-1":"jeu. dernier","field-year-narrow-relative+-1":"l’année dernière","field-mon-narrow-relative+-1":"lun. dernier","field-thu-narrow-relative+-1":"jeu. dernier","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","field-wed-short-relative+0":"ce mer.","months-standAlone-wide":["tout","bâbâ","hâtour","kyahk","toubah","amshîr","barmahât","barmoudah","bashans","ba’ounah","abîb","misra","al-nasi"],"field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-day-short-relative+1":"demain","field-sat-relative+0":"ce samedi","field-quarter-narrow-relative+1":"trim. proch.","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","months-standAlone-abbr":["tout","bâb.","hât.","kya.","toub.","amsh.","barma.","barmo.","bash.","ba’o.","abî.","mis.","al-n."],"field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","field-zone-narrow":"fuseau horaire","field-thu-narrow-relative+0":"ce jeu.","field-thu-narrow-relative+1":"jeu. prochain","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","field-dayperiod-short":"cadran","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","field-hour-short":"h","field-zone-short":"fuseau horaire","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","eraNarrow":["av. D.","ap. D."],"field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/currency.js b/lib/dojo/cldr/nls/fr/currency.js
index 80c03d482..7f59bec49 100644
--- a/lib/dojo/cldr/nls/fr/currency.js
+++ b/lib/dojo/cldr/nls/fr/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/currency",{"HKD_displayName":"dollar de Hong Kong","CHF_displayName":"franc suisse","JPY_symbol":"JPY","CAD_displayName":"dollar canadien","HKD_symbol":"HKD","CNY_displayName":"yuan renminbi chinois","USD_symbol":"$US","AUD_displayName":"dollar australien","JPY_displayName":"yen japonais","CAD_symbol":"$CA","USD_displayName":"dollar des États-Unis","EUR_symbol":"€","CNY_symbol":"CNY","GBP_displayName":"livre sterling","GBP_symbol":"£GB","AUD_symbol":"$AU","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/currency",{"HKD_displayName":"dollar de Hong Kong","CNY_displayName":"yuan renminbi chinois","JPY_displayName":"yen japonais","JPY_symbol":"JPY","USD_displayName":"dollar des États-Unis","CAD_symbol":"$CA","GBP_displayName":"livre sterling","CHF_displayName":"franc suisse","CNY_symbol":"CNY","EUR_displayName":"euro","GBP_symbol":"£GB","CAD_displayName":"dollar canadien","USD_symbol":"$US","EUR_symbol":"€","AUD_displayName":"dollar australien","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"$AU"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/dangi.js b/lib/dojo/cldr/nls/fr/dangi.js
index 99127bbd1..34e3dc4ac 100644
--- a/lib/dojo/cldr/nls/fr/dangi.js
+++ b/lib/dojo/cldr/nls/fr/dangi.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/dangi",{"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-dayperiod":"cadran","field-sun-relative+-1":"dimanche dernier","field-mon-relative+-1":"lundi dernier","field-minute":"minute","field-day-relative+-1":"hier","field-weekday":"jour de la semaine","field-day-relative+-2":"avant-hier","field-era":"ère","field-hour":"heure","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","months-standAlone-abbr":["1yuè","2yuè","3yuè","4yuè","5yuè","6yuè","7yuè","8yuè","9yuè","10yuè","11yuè","12yuè"],"field-wed-relative+-1":"mercredi dernier","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-day-relative+2":"après-demain","dateFormat-long":"d MMMM U","field-tue-relative+0":"ce mardi","field-zone":"fuseau horaire","field-tue-relative+1":"mardi prochain","field-week-relative+-1":"la semaine dernière","dateFormat-medium":"d MMM U","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-sat-relative+-1":"samedi dernier","field-year-relative+-1":"l’année dernière","field-year":"année","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","months-standAlone-wide":["zhēngyuè","èryuè","sānyuè","sìyuè","wǔyuè","liùyuè","qīyuè","bāyuè","jiǔyuè","shíyuè","shíyīyuè","shí’èryuè"],"field-week":"semaine","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine","months-format-abbr":["1yuè","2yuè","3yuè","4yuè","5yuè","6yuè","7yuè","8yuè","9yuè","10yuè","11yuè","12yuè"],"field-month-relative+0":"ce mois-ci","field-month":"mois","field-month-relative+1":"le mois prochain","field-fri-relative+-1":"vendredi dernier","field-second":"seconde","field-tue-relative+-1":"mardi dernier","field-day":"jour","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-thu-relative+0":"ce jeudi","field-second-relative+0":"maintenant","dateFormat-short":"d/M/y","field-thu-relative+1":"jeudi prochain","dateFormat-full":"EEEE d MMMM U","months-format-wide":["zhēngyuè","èryuè","sānyuè","sìyuè","wǔyuè","liùyuè","qīyuè","bāyuè","jiǔyuè","shíyuè","shíyīyuè","shí’èryuè"],"field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-month-relative+-1":"le mois dernier","field-thu-relative+-1":"jeudi dernier"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/dangi",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-thu-short-relative+0":"ce jeu.","field-day-short-relative+-1":"hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","field-weekOfMonth":"semaine (mois)","field-month-short":"m.","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","field-wed-relative+-1":"mercredi dernier","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","dateFormat-long":"d MMMM U","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","field-month":"mois","field-day-narrow":"j","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","dateFormat-medium":"d MMM U","field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","field-quarter-relative+-1":"le trimestre dernier","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","field-hour":"heure","field-minute-narrow-relative+0":"cette min","months-format-wide":["zhēngyuè","èryuè","sānyuè","sìyuè","wǔyuè","liùyuè","qīyuè","bāyuè","jiǔyuè","shíyuè","shíyīyuè","shí’èryuè"],"dateFormat-full":"EEEE d MMMM U","field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","months-format-abbr":["1yuè","2yuè","3yuè","4yuè","5yuè","6yuè","7yuè","8yuè","9yuè","10yuè","11yuè","12yuè"],"field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","dateFormat-short":"d/M/y","field-thu-short-relative+-1":"jeu. dernier","field-year-narrow-relative+-1":"l’année dernière","field-mon-narrow-relative+-1":"lun. dernier","field-thu-narrow-relative+-1":"jeu. dernier","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","field-wed-short-relative+0":"ce mer.","months-standAlone-wide":["zhēngyuè","èryuè","sānyuè","sìyuè","wǔyuè","liùyuè","qīyuè","bāyuè","jiǔyuè","shíyuè","shíyīyuè","shí’èryuè"],"field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-day-short-relative+1":"demain","field-sat-relative+0":"ce samedi","field-quarter-narrow-relative+1":"trim. proch.","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","months-standAlone-abbr":["1yuè","2yuè","3yuè","4yuè","5yuè","6yuè","7yuè","8yuè","9yuè","10yuè","11yuè","12yuè"],"field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","field-zone-narrow":"fuseau horaire","field-thu-narrow-relative+0":"ce jeu.","field-thu-narrow-relative+1":"jeu. prochain","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","field-dayperiod-short":"cadran","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","field-hour-short":"h","field-zone-short":"fuseau horaire","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/ethiopic.js b/lib/dojo/cldr/nls/fr/ethiopic.js
index fb83df689..dd5a09fa6 100644
--- a/lib/dojo/cldr/nls/fr/ethiopic.js
+++ b/lib/dojo/cldr/nls/fr/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/ethiopic",{"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-dayperiod":"cadran","field-sun-relative+-1":"dimanche dernier","field-mon-relative+-1":"lundi dernier","field-minute":"minute","field-day-relative+-1":"hier","field-weekday":"jour de la semaine","field-day-relative+-2":"avant-hier","field-era":"ère","field-hour":"heure","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-wed-relative+-1":"mercredi dernier","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-day-relative+2":"après-demain","field-tue-relative+0":"ce mardi","field-zone":"fuseau horaire","field-tue-relative+1":"mardi prochain","field-week-relative+-1":"la semaine dernière","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-sat-relative+-1":"samedi dernier","field-year-relative+-1":"l’année dernière","field-year":"année","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-week":"semaine","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine","field-month-relative+0":"ce mois-ci","field-month":"mois","field-month-relative+1":"le mois prochain","field-fri-relative+-1":"vendredi dernier","field-second":"seconde","field-tue-relative+-1":"mardi dernier","field-day":"jour","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-thu-relative+0":"ce jeudi","field-second-relative+0":"maintenant","field-thu-relative+1":"jeudi prochain","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-month-relative+-1":"le mois dernier","field-thu-relative+-1":"jeudi dernier"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/ethiopic",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-thu-short-relative+0":"ce jeu.","field-day-short-relative+-1":"hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["avant l’Incarnation","après l’Incarnation"],"field-weekOfMonth":"semaine (mois)","field-month-short":"m.","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","field-wed-relative+-1":"mercredi dernier","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","field-month":"mois","field-day-narrow":"j","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","eraAbbr":["av. Inc.","ap. Inc."],"field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"le trimestre dernier","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","field-hour":"heure","field-minute-narrow-relative+0":"cette min","months-format-wide":["mäskäräm","teqemt","hedar","tahesas","ter","yäkatit","mägabit","miyazya","guenbot","säné","hamlé","nähasé","pagumén"],"field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","months-format-abbr":["mäs.","teq.","hed.","tah.","ter","yäk.","mäg.","miy.","gue.","sän.","ham.","näh.","pag."],"field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","field-thu-short-relative+-1":"jeu. dernier","field-year-narrow-relative+-1":"l’année dernière","field-mon-narrow-relative+-1":"lun. dernier","field-thu-narrow-relative+-1":"jeu. dernier","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","field-wed-short-relative+0":"ce mer.","months-standAlone-wide":["mäskäräm","teqemt","hedar","tahesas","ter","yäkatit","mägabit","miyazya","guenbot","säné","hamlé","nähasé","pagumén"],"field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-day-short-relative+1":"demain","field-sat-relative+0":"ce samedi","field-quarter-narrow-relative+1":"trim. proch.","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","months-standAlone-abbr":["mäs.","teq.","hed.","tah.","ter","yäk.","mäg.","miy.","gue.","sän.","ham.","näh.","pag."],"field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","field-zone-narrow":"fuseau horaire","field-thu-narrow-relative+0":"ce jeu.","field-thu-narrow-relative+1":"jeu. prochain","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","field-dayperiod-short":"cadran","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","field-hour-short":"h","field-zone-short":"fuseau horaire","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","eraNarrow":["av. Inc.","ap. Inc."],"field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/generic.js b/lib/dojo/cldr/nls/fr/generic.js
index d2e894575..f07fa6d3f 100644
--- a/lib/dojo/cldr/nls/fr/generic.js
+++ b/lib/dojo/cldr/nls/fr/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/generic",{"field-second-relative+0":"maintenant","field-weekday":"jour de la semaine","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"mardi dernier","dateFormat-long":"d MMMM y G","field-fri-relative+-1":"vendredi dernier","field-wed-relative+-1":"mercredi dernier","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"jeudi dernier","dateFormatItem-Md":"d/M","field-era":"ère","field-year":"année","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"heure","field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-thu-relative+0":"ce jeudi","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"après-demain","field-thu-relative+1":"jeudi prochain","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"ce dimanche","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"dimanche prochain","field-minute":"minute","field-dayperiod":"cadran","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"hier","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'à' {0}","field-day-relative+-2":"avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} 'à' {0}","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-day":"jour","field-zone":"fuseau horaire","dateFormatItem-y":"y G","field-year-relative+-1":"l’année dernière","field-month-relative+-1":"le mois dernier","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"mois","dateFormatItem-MMM":"LLL","field-tue-relative+0":"ce mardi","field-tue-relative+1":"mardi prochain","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","dateFormat-short":"dd/MM/y GGGGG","field-second":"seconde","field-sat-relative+-1":"samedi dernier","field-sun-relative+-1":"dimanche dernier","field-month-relative+0":"ce mois-ci","field-month-relative+1":"le mois prochain","dateFormatItem-Ed":"E d","field-week":"semaine","dateFormat-medium":"d MMM y G","field-year-relative+0":"cette année","field-week-relative+-1":"la semaine dernière","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"l’année prochaine","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lundi dernier","dateFormatItem-yyyy":"y G","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/generic",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","dateFormatItem-ms":"mm:ss","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-day-short-relative+-1":"hier","field-thu-short-relative+0":"ce jeu.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"semaine (mois)","field-month-short":"m.","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"mercredi dernier","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","dateFormatItem-GyMMM":"MMM y G","field-month":"mois","field-day-narrow":"j","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","field-quarter-relative+-1":"le trimestre dernier","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","dateTimeFormat-long":"{1} 'à' {0}","dateFormatItem-Md":"d/M","field-hour":"heure","field-minute-narrow-relative+0":"cette min","dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"le mois dernier","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","dateFormatItem-Ehm":"E h:mm a","field-minute-short-relative+0":"cette min","field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","dateFormat-short":"dd/MM/y GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"l’année dernière","field-thu-short-relative+-1":"jeu. dernier","dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"lun. dernier","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jeu. dernier","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"sem. (m.)","field-tue-narrow-relative+-1":"mar. dernier","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"ce mer.","field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","dateTimeFormat-full":"{1} 'à' {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-day-short-relative+1":"demain","field-sat-relative+0":"ce samedi","field-quarter-narrow-relative+1":"trim. proch.","dateFormatItem-h":"h a","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","dateFormatItem-MEd":"E d/M","field-zone-narrow":"fuseau horaire","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"ce jeu.","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-narrow-relative+1":"jeu. prochain","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"cadran","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fuseau horaire","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","field-mon-narrow-relative+0":"ce lun.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sem. (m.)","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","dateFormatItem-Gy":"y G","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/gregorian.js b/lib/dojo/cldr/nls/fr/gregorian.js
index c2d53f0f3..0fcd22072 100644
--- a/lib/dojo/cldr/nls/fr/gregorian.js
+++ b/lib/dojo/cldr/nls/fr/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Di","Lu","Ma","Me","Je","Ve","Sa"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"maintenant","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"jour de la semaine","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d/M/y","field-wed-relative+0":"ce mercredi","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-wed-relative+1":"mercredi prochain","eraNarrow":["av. J.-C.","ap. J.-C."],"field-tue-relative+-1":"mardi dernier","dayPeriods-format-wide-morning":"matin","days-format-short":["di","lu","ma","me","je","ve","sa"],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"vendredi dernier","field-wed-relative+-1":"mercredi dernier","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d MMMM y","field-thu-relative+-1":"jeudi dernier","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"AM","dayPeriods-format-wide-noon":"midi","dateFormatItem-yMd":"d/M/y","dateFormatItem-yM":"M/y","field-era":"ère","months-standAlone-wide":["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQQQQ":"QQQQ y","field-year":"année","field-hour":"heure","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","timeFormat-full":"HH:mm:ss zzzz","dayPeriods-format-narrow-morning":"matin","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-thu-relative+0":"ce jeudi","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"après-demain","field-thu-relative+1":"jeudi prochain","dateFormatItem-H":"HH 'h'","months-standAlone-abbr":["Janv.","Févr.","Mars","Avr.","Mai","Juin","Juil.","Août","Sept.","Oct.","Nov.","Déc."],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],"timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"ce dimanche","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"field-sun-relative+1":"dimanche prochain","eraAbbr":["av. J.-C.","ap. J.-C."],"field-minute":"minute","field-dayperiod":"cadran","days-standAlone-abbr":["Dim.","Lun.","Mar.","Mer.","Jeu.","Ven.","Sam."],"dayPeriods-format-wide-night":"soir","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"hier","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"ce vendredi","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"vendredi prochain","field-day":"jour","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-zone":"fuseau horaire","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"l’année dernière","dayPeriods-format-narrow-night":"soir","field-month-relative+-1":"le mois dernier","dateFormatItem-hm":"h:mm a","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"eraNames":["avant Jésus-Christ","après Jésus-Christ"],"dateFormatItem-yMMMd":"d MMM y","days-format-narrow":["D","L","M","M","J","V","S"],"days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-MMM":"LLL","field-month":"mois","field-tue-relative+0":"ce mardi","field-tue-relative+1":"mardi prochain","dayPeriods-format-wide-am":"AM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","dateFormat-short":"dd/MM/y","dayPeriods-format-wide-afternoon":"après-midi","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-noon":"midi","field-second":"seconde","field-sat-relative+-1":"samedi dernier","dateFormatItem-yMMMEd":"E d MMM y","field-sun-relative+-1":"dimanche dernier","field-month-relative+0":"ce mois-ci","field-month-relative+1":"le mois prochain","dateFormatItem-Ed":"E d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"semaine","dateFormat-medium":"d MMM y","field-year-relative+0":"cette année","field-week-relative+-1":"la semaine dernière","field-year-relative+1":"l’année prochaine","dayPeriods-format-narrow-pm":"p","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lundi dernier","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"ce jeu.","field-thu-narrow-relative+1":"jeu. prochain","field-sun-narrow-relative+0":"ce dim.","field-sun-narrow-relative+1":"dim. prochain","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain","eraNarrow":["av. J.-C.","ap. J.-C."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM y","dayPeriods-format-abbr-night1":"nuit","dayPeriods-format-narrow-evening1":"soir","days-standAlone-narrow":["D","L","M","M","J","V","S"],"days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dayPeriods-format-abbr-afternoon1":"ap.m.","dayPeriods-format-wide-evening1":"du soir","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"mer. dernier","dayPeriods-standAlone-wide-evening1":"soir","field-minute-narrow-relative+0":"cette min","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"soir","dayPeriods-standAlone-abbr-afternoon1":"ap.m.","field-thu-relative+0":"ce jeudi","dayPeriods-standAlone-abbr-night1":"nuit","field-thu-relative+1":"jeudi prochain","dayPeriods-format-wide-am":"AM","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","dateFormatItem-yMd":"dd/MM/y","field-thu-narrow-relative+-1":"jeu. dernier","field-quarter-relative+0":"ce trimestre","field-quarter-relative+1":"le trimestre prochain","field-sun-short-relative+0":"ce dim.","timeFormat-short":"HH:mm","field-sun-short-relative+1":"dim. prochain","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"ap.m.","dateFormatItem-Md":"dd/MM","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"sem.","field-hour-relative+0":"cette heure-ci","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-mon-narrow-relative+-1":"lun. dernier","field-minute-narrow":"min","field-thu-short-relative+0":"ce jeu.","field-mon-relative+0":"ce lundi","field-thu-short-relative+1":"jeu. prochain","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+0":"aujourd’hui","field-era-short":"ère","field-day-narrow-relative+1":"demain","field-sat-narrow-relative+0":"ce sam.","field-day-narrow-relative+2":"après-demain","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"sam. prochain","field-week-narrow-relative+0":"cette semaine","field-week-narrow-relative+1":"la semaine prochaine","field-hour-short-relative+0":"cette h","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-month":"mois","months-standAlone-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"field-weekday-narrow":"j (sem.)","dayPeriods-standAlone-narrow-afternoon1":"ap.m.","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","dayPeriods-format-abbr-evening1":"soir","dayPeriods-format-abbr-noon":"midi","dayPeriods-format-narrow-midnight":"minuit","dayPeriods-format-wide-midnight":"minuit","field-tue-relative+0":"ce mardi","field-tue-relative+1":"mardi prochain","dayPeriods-standAlone-abbr-evening1":"soir","field-minute-short-relative+0":"cette min","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"minuit","field-year-narrow":"a","dayPeriods-standAlone-abbr-noon":"midi","field-tue-short-relative+0":"ce mar.","dayPeriods-standAlone-narrow-midnight":"minuit","field-tue-short-relative+1":"mar. prochain","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","dateTimeFormat-full":"{1} 'à' {0}","dateFormatItem-E":"E","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH 'h'","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","dateFormatItem-M":"L","field-wed-short-relative+0":"ce mer.","field-fri-short-relative+0":"ce ven.","field-wed-short-relative+1":"mer. prochain","field-fri-short-relative+1":"ven. prochain","field-weekOfMonth-short":"sem. (m.)","field-quarter-short-relative+-1":"le trim. dern.","field-year-short-relative+-1":"l’année dernière","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"du matin","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"trim. dern.","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"field-weekOfMonth-narrow":"sem. (m.)","dateFormatItem-y":"y","field-minute-relative+0":"cette minute-ci","field-year-short-relative+0":"cette année","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"l’année prochaine","field-weekday":"jour de la semaine","dayPeriods-format-narrow-pm":"PM","field-tue-narrow-relative+-1":"mar. dernier","dateFormatItem-yMEd":"E dd/MM/y","dayPeriods-standAlone-wide-night1":"nuit","field-year-narrow-relative+-1":"l’année dernière","field-sat-relative+-1":"samedi dernier","dayPeriods-format-abbr-midnight":"minuit","dayPeriods-format-narrow-morning1":"mat.","dayPeriods-format-wide-morning1":"du matin","dayPeriods-standAlone-abbr-midnight":"minuit","dayPeriods-standAlone-narrow-pm":"PM","dayPeriods-standAlone-wide-morning1":"matin","field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-second":"seconde","dateFormatItem-yMMMEd":"E d MMM y","field-year-relative+-1":"l’année dernière","field-weekdayOfMonth-short":"jour (mois)","dateFormat-short":"dd/MM/y","eraNames":["avant Jésus-Christ","après Jésus-Christ"],"field-second-short":"s","field-thu-short-relative+-1":"jeu. dernier","field-zone":"fuseau horaire","field-dayperiod-narrow":"cadran","field-sun-short-relative+-1":"dim. dernier","dayPeriods-standAlone-narrow-morning1":"mat.","eraAbbr":["av. J.-C.","ap. J.-C."],"field-week-short":"sem.","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-day-relative+2":"après-demain","field-day-short-relative+0":"aujourd’hui","field-dayOfYear-short":"j (an)","field-day-short-relative+1":"demain","dateFormat-long":"d MMMM y","field-day-short-relative+2":"après-demain","field-sun-narrow-relative+-1":"dim. dernier","dayPeriods-format-wide-noon":"midi","field-second-relative+0":"maintenant","field-quarter-relative+-1":"le trimestre dernier","dayPeriods-format-narrow-night1":"nuit","quarters-format-abbr":["T1","T2","T3","T4"],"dayPeriods-standAlone-wide-noon":"midi","dayPeriods-standAlone-narrow-night1":"nuit","field-week-relative+-1":"la semaine dernière","dayPeriods-format-abbr-morning1":"mat.","field-month-relative+-1":"le mois dernier","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year":"année","field-era":"ère","dayPeriods-standAlone-abbr-morning1":"mat.","days-standAlone-short":["di","lu","ma","me","je","ve","sa"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"hier","field-day-short-relative+-2":"avant-hier","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"heure","field-dayOfYear-narrow":"j (an)","field-quarter":"trimestre","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-day":"jour","field-mon-relative+-1":"lundi dernier","field-dayOfYear":"jour (année)","dateFormat-medium":"d MMM y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d MMM y G","dateFormatItem-MEd":"E dd/MM","field-tue-short-relative+-1":"mar. dernier","field-year-short":"an","field-month-short":"m.","dateFormatItem-MMMEd":"E d MMM","dayPeriods-format-wide-afternoon1":"de l’après-midi","dateFormatItem-MMMd":"d MMM","dateFormatItem-Bh":"h B","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","dayPeriods-format-wide-pm":"PM","days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"field-zone-short":"fuseau horaire","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","dayPeriods-standAlone-wide-afternoon1":"après-midi","field-fri-short-relative+-1":"ven. dernier","field-month-narrow":"m.","dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"le mois dernier","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"field-weekday-short":"j (sem.)","field-day-narrow-relative+-1":"hier","field-day-narrow-relative+-2":"avant-hier","field-quarter-short":"trim.","days-format-short":["di","lu","ma","me","je","ve","sa"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"trim.","field-mon-short-relative+0":"ce lun.","field-mon-short-relative+1":"lun. prochain","field-dayperiod-short":"cadran","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"la semaine dernière","field-thu-relative+-1":"jeudi dernier","field-fri-narrow-relative+-1":"ven. dernier","field-mon-short-relative+-1":"lun. dernier","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","dateFormatItem-Ed":"E d","field-wed-relative+-1":"mercredi dernier","field-weekOfMonth":"semaine (mois)","field-weekdayOfMonth-narrow":"jour (mois)","dayPeriods-standAlone-wide-am":"AM","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"vendredi dernier","field-minute":"minute","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"field-day-short":"j","field-dayperiod":"cadran","field-hour-short":"h","months-standAlone-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"field-month-relative+0":"ce mois-ci","field-second-narrow":"s","field-month-relative+1":"le mois prochain","dateFormat-full":"EEEE d MMMM y","field-era-narrow":"ère","field-sat-short-relative+-1":"sam. dernier","dayPeriods-format-narrow-noon":"midi","field-week-short-relative+-1":"la semaine dernière","dateTimeFormat-long":"{1} 'à' {0}","dateFormatItem-yM":"MM/y","field-sun-relative+-1":"dimanche dernier","field-wed-short-relative+-1":"mer. dernier","field-weekdayOfMonth":"jour (mois)","field-quarter-narrow-relative+0":"ce trim.","dateFormatItem-GyMMMEd":"E d MMM y G","field-quarter-narrow-relative+1":"trim. proch.","field-sat-short-relative+0":"ce sam.","field-hour-narrow":"h","field-sat-short-relative+1":"sam. prochain","field-year-narrow-relative+0":"cette année","field-year-narrow-relative+1":"l’année prochaine","dateFormatItem-Gy":"y G","field-zone-narrow":"fuseau horaire","dayPeriods-standAlone-narrow-noon":"midi","field-tue-relative+-1":"mardi dernier","field-minute-short":"min","dateFormatItem-yw":"'semaine' w 'de' Y","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine","dateFormatItem-MMM":"LLL","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-sat-narrow-relative+-1":"sam. dernier","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-MMMMW":"'semaine' W (MMMM)","field-month-short-relative+-1":"le mois dernier","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-hour-narrow-relative+0":"cette h","field-week":"semaine","field-day-narrow":"j"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/hebrew.js b/lib/dojo/cldr/nls/fr/hebrew.js
index 04d75806d..38d98d47c 100644
--- a/lib/dojo/cldr/nls/fr/hebrew.js
+++ b/lib/dojo/cldr/nls/fr/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/hebrew",{"days-standAlone-short":["Di","Lu","Ma","Me","Je","Ve","Sa"],"field-second-relative+0":"maintenant","field-weekday":"jour de la semaine","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"mardi dernier","days-format-short":["di","lu","ma","me","je","ve","sa"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"vendredi dernier","field-wed-relative+-1":"mercredi dernier","months-format-wide":["Tisseri","Hesvan","Kislev","Tébeth","Schébat","Adar I","Adar","Nissan","Iyar","Sivan","Tamouz","Ab","Elloul"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"jeudi dernier","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"midi","field-era":"ère","months-standAlone-wide":["Tisseri","Hesvan","Kislev","Tébeth","Schébat","Adar I","Adar","Nissan","Iyar","Sivan","Tamouz","Ab","Elloul"],"quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"field-year":"année","field-hour":"heure","months-format-abbr":["Tisseri","Hesvan","Kislev","Tébeth","Schébat","Adar I","Adar","Nissan","Iyar","Sivan","Tamouz","Ab","Elloul"],"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-day-relative+0":"aujourd’hui","field-thu-relative+0":"ce jeudi","field-day-relative+1":"demain","field-thu-relative+1":"jeudi prochain","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"après-demain","months-standAlone-abbr":["Tisseri","Hesvan","Kislev","Tébeth","Schébat","Adar I","Adar","Nissan","Iyar","Sivan","Tamouz","Ab","Elloul"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","months-standAlone-wide-leap":"Adar II","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","quarters-standAlone-abbr":["T1","T2","T3","T4"],"field-minute":"minute","field-dayperiod":"cadran","days-standAlone-abbr":["Dim.","Lun.","Mar.","Mer.","Jeu.","Ven.","Sam."],"field-day-relative+-1":"hier","dateTimeFormat-long":"{1} 'à' {0}","field-day-relative+-2":"avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} 'à' {0}","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-day":"jour","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-zone":"fuseau horaire","dateFormatItem-y":"y G","field-year-relative+-1":"l’année dernière","field-month-relative+-1":"le mois dernier","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"mois","days-standAlone-narrow":["D","L","M","M","J","V","S"],"field-tue-relative+0":"ce mardi","field-tue-relative+1":"mardi prochain","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","dateFormat-short":"dd/MM/y GGGGG","dayPeriods-format-narrow-noon":"midi","field-second":"seconde","field-sat-relative+-1":"samedi dernier","field-sun-relative+-1":"dimanche dernier","field-month-relative+0":"ce mois-ci","field-month-relative+1":"le mois prochain","dateFormatItem-Ed":"E d","field-week":"semaine","dateFormat-medium":"d MMM y G","field-year-relative+0":"cette année","field-week-relative+-1":"la semaine dernière","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"l’année prochaine","dateFormatItem-yyyyQQQQ":"QQQQ y G","months-format-wide-leap":"Adar II","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lundi dernier","dateFormatItem-yyyy":"y G","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/hebrew",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-thu-short-relative+0":"ce jeu.","field-day-short-relative+-1":"hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["Anno Mundi"],"field-weekOfMonth":"semaine (mois)","field-month-short":"m.","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"mercredi dernier","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","dateFormatItem-GyMMM":"MMM y G","field-month":"mois","field-day-narrow":"j","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["A. M."],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"le trimestre dernier","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","days-format-short":["di","lu","ma","me","je","ve","sa"],"field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","dateTimeFormat-long":"{1} 'à' {0}","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"cette min","field-hour":"heure","months-format-wide":["tichri","hèchvan","kislev","téveth","chevat","adar I","adar","nissan","iyar","sivan","tamouz","av","éloul"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","months-format-abbr":["tich.","hèch.","kis.","tév.","chev.","ad.I","adar","nis.","iyar","siv.","tam.","av","él."],"field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","dateFormat-short":"dd/MM/y GGGGG","field-thu-short-relative+-1":"jeu. dernier","field-year-narrow-relative+-1":"l’année dernière","days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"lun. dernier","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jeu. dernier","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"ce mer.","months-standAlone-wide":["tichri","hèchvan","kislev","téveth","chevat","adar I","adar","nissan","iyar","sivan","tamouz","av","éloul"],"field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateTimeFormat-full":"{1} 'à' {0}","months-format-abbr-leap":"ad.II","field-weekday":"jour de la semaine","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-day-short-relative+1":"demain","field-sat-relative+0":"ce samedi","field-quarter-narrow-relative+1":"trim. proch.","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","months-standAlone-abbr":["tich.","hèch.","kis.","tév.","chev.","ad.I","adar","nis.","iyar","siv.","tam.","av","él."],"months-format-wide-leap":"adar II","months-format-narrow-leap":"7","field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","dateFormatItem-MEd":"E d/M","field-zone-narrow":"fuseau horaire","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"ce jeu.","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-narrow-relative+1":"jeu. prochain","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","field-dayperiod-short":"cadran","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","days-standAlone-short":["di","lu","ma","me","je","ve","sa"],"field-week-short-relative+-1":"la semaine dernière","months-standAlone-abbr-leap":"ad.II","field-hour-narrow-relative+0":"cette h","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fuseau horaire","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","eraNarrow":["A. M."],"field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","months-standAlone-wide-leap":"adar II","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","dateFormatItem-Gy":"y G","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/indian.js b/lib/dojo/cldr/nls/fr/indian.js
index e141f3eb8..07cdfca71 100644
--- a/lib/dojo/cldr/nls/fr/indian.js
+++ b/lib/dojo/cldr/nls/fr/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/indian",{"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-dayperiod":"cadran","field-sun-relative+-1":"dimanche dernier","field-mon-relative+-1":"lundi dernier","field-minute":"minute","field-day-relative+-1":"hier","field-weekday":"jour de la semaine","field-day-relative+-2":"avant-hier","field-era":"ère","field-hour":"heure","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-wed-relative+-1":"mercredi dernier","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","field-day-relative+2":"après-demain","field-tue-relative+0":"ce mardi","field-zone":"fuseau horaire","field-tue-relative+1":"mardi prochain","field-week-relative+-1":"la semaine dernière","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-sat-relative+-1":"samedi dernier","field-year-relative+-1":"l’année dernière","field-year":"année","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-week":"semaine","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine","field-month-relative+0":"ce mois-ci","field-month":"mois","field-month-relative+1":"le mois prochain","field-fri-relative+-1":"vendredi dernier","field-second":"seconde","field-tue-relative+-1":"mardi dernier","field-day":"jour","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-thu-relative+0":"ce jeudi","field-second-relative+0":"maintenant","field-thu-relative+1":"jeudi prochain","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-month-relative+-1":"le mois dernier","field-thu-relative+-1":"jeudi dernier"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/indian",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-thu-short-relative+0":"ce jeu.","field-day-short-relative+-1":"hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["ère Saka"],"field-weekOfMonth":"semaine (mois)","field-month-short":"m.","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","field-wed-relative+-1":"mercredi dernier","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","field-month":"mois","field-day-narrow":"j","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","eraAbbr":["Saka"],"field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"le trimestre dernier","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","field-hour":"heure","field-minute-narrow-relative+0":"cette min","months-format-wide":["chaitra","vaishākh","jyaishtha","āshādha","shrāvana","bhādrapad","āshwin","kārtik","mārgashīrsha","paush","māgh","phālgun"],"field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","months-format-abbr":["chai.","vai.","jyai.","āsha.","shrā.","bhā.","āshw.","kār.","mār.","pau.","māgh","phāl."],"field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","field-thu-short-relative+-1":"jeu. dernier","field-year-narrow-relative+-1":"l’année dernière","field-mon-narrow-relative+-1":"lun. dernier","field-thu-narrow-relative+-1":"jeu. dernier","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","field-wed-short-relative+0":"ce mer.","months-standAlone-wide":["chaitra","vaishākh","jyaishtha","āshādha","shrāvana","bhādrapad","āshwin","kārtik","mārgashīrsha","paush","māgh","phālgun"],"field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-day-short-relative+1":"demain","field-sat-relative+0":"ce samedi","field-quarter-narrow-relative+1":"trim. proch.","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","months-standAlone-abbr":["chai.","vai.","jyai.","āsha.","shrā.","bhā.","āshw.","kār.","mār.","pau.","māgh","phāl."],"field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","field-zone-narrow":"fuseau horaire","field-thu-narrow-relative+0":"ce jeu.","field-thu-narrow-relative+1":"jeu. prochain","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","field-dayperiod-short":"cadran","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","field-hour-short":"h","field-zone-short":"fuseau horaire","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","eraNarrow":"Saka","field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/islamic.js b/lib/dojo/cldr/nls/fr/islamic.js
index 705402cf9..7272d3f1f 100644
--- a/lib/dojo/cldr/nls/fr/islamic.js
+++ b/lib/dojo/cldr/nls/fr/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/islamic",{"days-standAlone-short":["Di","Lu","Ma","Me","Je","Ve","Sa"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"maintenant","field-weekday":"jour de la semaine","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"mardi dernier","days-format-short":["di","lu","ma","me","je","ve","sa"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"vendredi dernier","field-wed-relative+-1":"mercredi dernier","months-format-wide":["mouharram","safar","rabia al awal","rabia ath-thani","joumada al oula","joumada ath-thania","rajab","chaabane","ramadan","chawwal","dhou al qi`da","dhou al-hijja"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"jeudi dernier","dateFormatItem-Md":"dd/MM","dayPeriods-format-wide-noon":"midi","field-era":"ère","months-standAlone-wide":["mouharram","safar","rabia al awal","rabia ath-thani","joumada al oula","joumada ath-thania","rajab","chaabane","ramadan","chawwal","dhou al qi`da","dhou al-hijja"],"quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"field-year":"année","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"heure","months-format-abbr":["mouh.","saf.","rab. aw.","rab. th.","joum. oul.","joum. tha.","raj.","chaa.","ram.","chaw.","dhou. q.","dhou. h."],"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-day-relative+0":"aujourd’hui","field-thu-relative+0":"ce jeudi","field-day-relative+1":"demain","field-thu-relative+1":"jeudi prochain","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"après-demain","months-standAlone-abbr":["mouh.","saf.","rab. aw.","rab. th.","joum. ou.","joum. th.","raj.","chaa.","ram.","chaw.","dhou. qi.","dhou. hi."],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","days-standAlone-wide":["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["AH"],"field-minute":"minute","field-dayperiod":"cadran","days-standAlone-abbr":["Dim.","Lun.","Mar.","Mer.","Jeu.","Ven.","Sam."],"dateFormatItem-d":"d","field-day-relative+-1":"hier","dateTimeFormat-long":"{1} 'à' {0}","field-day-relative+-2":"avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E dd/MM","dateTimeFormat-full":"{1} 'à' {0}","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-day":"jour","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-zone":"fuseau horaire","dateFormatItem-y":"y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"l’année dernière","field-month-relative+-1":"le mois dernier","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"mois","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["D","L","M","M","J","V","S"],"field-tue-relative+0":"ce mardi","field-tue-relative+1":"mardi prochain","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","dateFormat-short":"dd/MM/y GGGGG","dayPeriods-format-narrow-noon":"midi","field-second":"seconde","field-sat-relative+-1":"samedi dernier","field-sun-relative+-1":"dimanche dernier","field-month-relative+0":"ce mois-ci","field-month-relative+1":"le mois prochain","dateFormatItem-Ed":"E d","field-week":"semaine","dateFormat-medium":"d MMM y G","field-year-relative+0":"cette année","field-week-relative+-1":"la semaine dernière","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"l’année prochaine","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lundi dernier","dateFormatItem-yyyy":"y G","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/islamic",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-thu-short-relative+0":"ce jeu.","field-day-short-relative+-1":"hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["ère de l’Hégire"],"field-weekOfMonth":"semaine (mois)","field-month-short":"m.","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"mercredi dernier","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","dateFormatItem-GyMMM":"MMM y G","field-month":"mois","field-day-narrow":"j","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AH"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"le trimestre dernier","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","days-format-short":["di","lu","ma","me","je","ve","sa"],"field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","dateTimeFormat-long":"{1} 'à' {0}","dateFormatItem-Md":"dd/MM","field-minute-narrow-relative+0":"cette min","field-hour":"heure","months-format-wide":["mouharram","safar","rabia al awal","rabia ath-thani","joumada al oula","joumada ath-thania","rajab","chaabane","ramadan","chawwal","dhou al qi`da","dhou al-hijja"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","months-format-abbr":["mouh.","saf.","rab. aw.","rab. th.","joum. oul.","joum. tha.","raj.","chaa.","ram.","chaw.","dhou. q.","dhou. h."],"field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","dateFormat-short":"dd/MM/y GGGGG","field-thu-short-relative+-1":"jeu. dernier","field-year-narrow-relative+-1":"l’année dernière","days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"lun. dernier","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jeu. dernier","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"ce mer.","dateFormatItem-M":"L","months-standAlone-wide":["mouharram","safar","rabia al awal","rabia ath-thani","joumada al oula","joumada ath-thania","rajab","chaabane","ramadan","chawwal","dhou al qi`da","dhou al-hijja"],"field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateTimeFormat-full":"{1} 'à' {0}","dateFormatItem-d":"d","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-day-short-relative+1":"demain","field-sat-relative+0":"ce samedi","field-quarter-narrow-relative+1":"trim. proch.","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","months-standAlone-abbr":["mouh.","saf.","rab. aw.","rab. th.","joum. ou.","joum. th.","raj.","chaa.","ram.","chaw.","dhou. qi.","dhou. hi."],"field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","dateFormatItem-MEd":"E dd/MM","field-zone-narrow":"fuseau horaire","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"ce jeu.","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-narrow-relative+1":"jeu. prochain","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"cadran","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","days-standAlone-short":["di","lu","ma","me","je","ve","sa"],"field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fuseau horaire","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","eraNarrow":"H","field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","dateFormatItem-Gy":"y G","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/japanese.js b/lib/dojo/cldr/nls/fr/japanese.js
index de405afc4..7a8705249 100644
--- a/lib/dojo/cldr/nls/fr/japanese.js
+++ b/lib/dojo/cldr/nls/fr/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/japanese",{"field-second-relative+0":"maintenant","field-weekday":"jour de la semaine","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"mardi dernier","dateFormat-long":"d MMMM y G","field-fri-relative+-1":"vendredi dernier","field-wed-relative+-1":"mercredi dernier","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"jeudi dernier","dateFormatItem-Md":"d/M","field-era":"ère","field-year":"année","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"heure","field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-day-relative+0":"aujourd’hui","field-thu-relative+0":"ce jeudi","field-day-relative+1":"demain","field-thu-relative+1":"jeudi prochain","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"après-demain","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-minute":"minute","field-dayperiod":"cadran","dateFormatItem-d":"d","field-day-relative+-1":"hier","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-day":"jour","field-zone":"fuseau horaire","dateFormatItem-y":"y G","field-year-relative+-1":"l’année dernière","field-month-relative+-1":"le mois dernier","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"mois","dateFormatItem-MMM":"LLL","field-tue-relative+0":"ce mardi","field-tue-relative+1":"mardi prochain","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","dateFormat-short":"dd/MM/y GGGGG","field-second":"seconde","field-sat-relative+-1":"samedi dernier","field-sun-relative+-1":"dimanche dernier","field-month-relative+0":"ce mois-ci","field-month-relative+1":"le mois prochain","dateFormatItem-Ed":"E d","field-week":"semaine","dateFormat-medium":"d MMM y G","field-year-relative+0":"cette année","field-week-relative+-1":"la semaine dernière","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"l’année prochaine","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lundi dernier","dateFormatItem-yyyy":"y G","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/japanese",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-day-short-relative+-1":"hier","field-thu-short-relative+0":"ce jeu.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"semaine (mois)","field-month-short":"m.","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"mercredi dernier","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","dateFormatItem-GyMMM":"MMM y G","field-month":"mois","field-day-narrow":"j","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","field-quarter-relative+-1":"le trimestre dernier","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d/M","field-hour":"heure","field-minute-narrow-relative+0":"cette min","dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","dateFormat-short":"dd/MM/y GGGGG","field-year-narrow-relative+-1":"l’année dernière","field-thu-short-relative+-1":"jeu. dernier","dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"lun. dernier","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jeu. dernier","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"ce mer.","field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","dateTimeFormat-full":"{1} {0}","dateFormatItem-d":"d","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-day-short-relative+1":"demain","field-sat-relative+0":"ce samedi","field-quarter-narrow-relative+1":"trim. proch.","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","dateFormatItem-MEd":"E d/M","field-zone-narrow":"fuseau horaire","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"ce jeu.","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-narrow-relative+1":"jeu. prochain","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"cadran","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fuseau horaire","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","dateFormatItem-Gy":"y G","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/number.js b/lib/dojo/cldr/nls/fr/number.js
index 9a675628e..ae88675ea 100644
--- a/lib/dojo/cldr/nls/fr/number.js
+++ b/lib/dojo/cldr/nls/fr/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 billions","decimalFormat-short":"000 Bn"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 Bn","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","approximatelySign":"≃","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 billions","decimalFormat":"#,##0.###","currencyFormat-short":"000 Bn ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/persian.js b/lib/dojo/cldr/nls/fr/persian.js
index 55971670b..a20911f68 100644
--- a/lib/dojo/cldr/nls/fr/persian.js
+++ b/lib/dojo/cldr/nls/fr/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/persian",{"days-standAlone-short":["Di","Lu","Ma","Me","Je","Ve","Sa"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"maintenant","field-weekday":"jour de la semaine","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"mardi dernier","days-format-short":["di","lu","ma","me","je","ve","sa"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"vendredi dernier","field-wed-relative+-1":"mercredi dernier","months-format-wide":["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"jeudi dernier","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"midi","field-era":"ère","months-standAlone-wide":["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],"quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"field-year":"année","field-hour":"heure","months-format-abbr":["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-day-relative+0":"aujourd’hui","field-thu-relative+0":"ce jeudi","field-day-relative+1":"demain","field-thu-relative+1":"jeudi prochain","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"après-demain","months-standAlone-abbr":["Janv.","Févr.","Mars","Avr.","Mai","Juin","Juil.","Août","Sept.","Oct.","Nov.","Déc."],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","quarters-standAlone-abbr":["T1","T2","T3","T4"],"field-minute":"minute","field-dayperiod":"cadran","days-standAlone-abbr":["Dim.","Lun.","Mar.","Mer.","Jeu.","Ven.","Sam."],"field-day-relative+-1":"hier","dateTimeFormat-long":"{1} 'à' {0}","field-day-relative+-2":"avant-hier","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} 'à' {0}","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-day":"jour","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-zone":"fuseau horaire","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"l’année dernière","field-month-relative+-1":"le mois dernier","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"mois","days-standAlone-narrow":["D","L","M","M","J","V","S"],"field-tue-relative+0":"ce mardi","field-tue-relative+1":"mardi prochain","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","dateFormat-short":"dd/MM/y GGGGG","dayPeriods-format-narrow-noon":"midi","field-second":"seconde","field-sat-relative+-1":"samedi dernier","field-sun-relative+-1":"dimanche dernier","field-month-relative+0":"ce mois-ci","field-month-relative+1":"le mois prochain","dateFormatItem-Ed":"E d","field-week":"semaine","dateFormat-medium":"d MMM y G","field-year-relative+0":"cette année","field-week-relative+-1":"la semaine dernière","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"l’année prochaine","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lundi dernier","dateFormatItem-yyyy":"y G","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/persian",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-thu-short-relative+0":"ce jeu.","field-day-short-relative+-1":"hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Anno Persico"],"field-weekOfMonth":"semaine (mois)","field-month-short":"m.","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"mercredi dernier","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","quarters-standAlone-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","dateFormatItem-GyMMM":"MMM y G","field-month":"mois","field-day-narrow":"j","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["A. P."],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"le trimestre dernier","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","days-format-short":["di","lu","ma","me","je","ve","sa"],"field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","dateTimeFormat-long":"{1} 'à' {0}","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"cette min","field-hour":"heure","months-format-wide":["farvardin","ordibehešt","khordâd","tir","mordâd","šahrivar","mehr","âbân","âzar","dey","bahman","esfand"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","months-format-abbr":["far.","ord.","kho.","tir","mor.","šah.","mehr","âbân","âzar","dey","bah.","esf."],"field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","dateFormat-short":"dd/MM/y GGGGG","field-thu-short-relative+-1":"jeu. dernier","field-year-narrow-relative+-1":"l’année dernière","days-standAlone-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"lun. dernier","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jeu. dernier","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"ce mer.","months-standAlone-wide":["farvardin","ordibehešt","khordâd","tir","mordâd","šahrivar","mehr","âbân","âzar","dey","bahman","esfand"],"field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","days-standAlone-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"dateTimeFormat-full":"{1} 'à' {0}","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-sat-relative+0":"ce samedi","field-day-short-relative+1":"demain","field-quarter-narrow-relative+1":"trim. proch.","field-day-short-relative+2":"après-demain","field-sat-relative+1":"samedi prochain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","months-standAlone-abbr":["far.","ord.","kho.","tir","mor.","šah.","mehr","âbân","âzar","dey","bah.","esf."],"field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","dateFormatItem-MEd":"E d/M","field-zone-narrow":"fuseau horaire","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"ce jeu.","field-thu-narrow-relative+1":"jeu. prochain","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","quarters-format-wide":["1er trimestre","2e trimestre","3e trimestre","4e trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","field-dayperiod-short":"cadran","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","days-standAlone-short":["di","lu","ma","me","je","ve","sa"],"field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fuseau horaire","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","eraNarrow":["A. P."],"field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","days-format-wide":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","days-format-abbr":["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],"field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","dateFormatItem-Gy":"y G","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/fr/roc.js b/lib/dojo/cldr/nls/fr/roc.js
index 9c695938a..185e26428 100644
--- a/lib/dojo/cldr/nls/fr/roc.js
+++ b/lib/dojo/cldr/nls/fr/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/fr/roc",{"field-sat-relative+0":"ce samedi","field-sat-relative+1":"samedi prochain","field-dayperiod":"cadran","field-sun-relative+-1":"dimanche dernier","field-mon-relative+-1":"lundi dernier","field-minute":"minute","field-day-relative+-1":"hier","field-weekday":"jour de la semaine","field-day-relative+-2":"avant-hier","field-era":"ère","field-hour":"heure","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-wed-relative+-1":"mercredi dernier","field-day-relative+0":"aujourd’hui","field-day-relative+1":"demain","eraAbbr":["avant RdC","RdC"],"field-day-relative+2":"après-demain","field-tue-relative+0":"ce mardi","field-zone":"fuseau horaire","field-tue-relative+1":"mardi prochain","field-week-relative+-1":"la semaine dernière","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-sat-relative+-1":"samedi dernier","field-year-relative+-1":"l’année dernière","field-year":"année","field-fri-relative+0":"ce vendredi","field-fri-relative+1":"vendredi prochain","field-week":"semaine","field-week-relative+0":"cette semaine","field-week-relative+1":"la semaine prochaine","field-month-relative+0":"ce mois-ci","field-month":"mois","field-month-relative+1":"le mois prochain","field-fri-relative+-1":"vendredi dernier","field-second":"seconde","field-tue-relative+-1":"mardi dernier","field-day":"jour","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-thu-relative+0":"ce jeudi","field-second-relative+0":"maintenant","field-thu-relative+1":"jeudi prochain","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-month-relative+-1":"le mois dernier","field-thu-relative+-1":"jeudi dernier"}); \ No newline at end of file
+define("dojo/cldr/nls/fr/roc",{"field-quarter-short-relative+0":"ce trim.","field-quarter-short-relative+1":"le trim. proch.","field-tue-relative+-1":"mardi dernier","field-year":"année","field-wed-relative+0":"ce mercredi","field-wed-relative+1":"mercredi prochain","field-minute":"minute","field-month-narrow-relative+-1":"le mois dernier","field-tue-narrow-relative+0":"ce mar.","field-tue-narrow-relative+1":"mar. prochain","field-thu-short-relative+0":"ce jeu.","field-day-short-relative+-1":"hier","field-thu-short-relative+1":"jeu. prochain","field-day-relative+0":"aujourd’hui","field-day-short-relative+-2":"avant-hier","field-day-relative+1":"demain","field-week-narrow-relative+0":"cette semaine","field-day-relative+2":"après-demain","field-week-narrow-relative+1":"la semaine prochaine","field-wed-narrow-relative+-1":"mer. dernier","field-year-narrow":"a","field-era-short":"ère","field-year-narrow-relative+0":"cette année","field-tue-relative+0":"ce mardi","field-year-narrow-relative+1":"l’année prochaine","field-tue-relative+1":"mardi prochain","field-weekdayOfMonth":"jour (mois)","field-second-short":"s","field-weekdayOfMonth-narrow":"jour (mois)","field-week-relative+0":"cette semaine","field-month-relative+0":"ce mois-ci","field-week-relative+1":"la semaine prochaine","field-month-relative+1":"le mois prochain","field-sun-narrow-relative+0":"ce dim.","field-mon-short-relative+0":"ce lun.","field-sun-narrow-relative+1":"dim. prochain","field-mon-short-relative+1":"lun. prochain","field-second-relative+0":"maintenant","eraNames":["avant RdC","RdC"],"field-weekOfMonth":"semaine (mois)","field-month-short":"m.","field-day":"jour","field-dayOfYear-short":"j (an)","field-year-relative+-1":"l’année dernière","field-sat-short-relative+-1":"sam. dernier","field-hour-relative+0":"cette heure-ci","field-wed-relative+-1":"mercredi dernier","field-sat-narrow-relative+-1":"sam. dernier","field-second":"seconde","field-hour-short-relative+0":"cette h","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+0":"aujourd’hui","field-day-narrow-relative+1":"demain","field-day-narrow-relative+2":"après-demain","field-tue-short-relative+0":"ce mar.","field-tue-short-relative+1":"mar. prochain","field-month-short-relative+-1":"le mois dernier","field-mon-relative+-1":"lundi dernier","field-month":"mois","field-day-narrow":"j","field-minute-short":"min","field-dayperiod":"cadran","field-sat-short-relative+0":"ce sam.","field-sat-short-relative+1":"sam. prochain","eraAbbr":["av. RdC","RdC"],"field-second-narrow":"s","field-mon-relative+0":"ce lundi","field-mon-relative+1":"lundi prochain","field-day-narrow-relative+-1":"hier","field-year-short":"an","field-day-narrow-relative+-2":"avant-hier","field-quarter-relative+-1":"le trimestre dernier","field-dayperiod-narrow":"cadran","field-week-narrow-relative+-1":"la semaine dernière","field-dayOfYear":"jour (année)","field-sat-relative+-1":"samedi dernier","field-hour":"heure","field-minute-narrow-relative+0":"cette min","field-month-relative+-1":"le mois dernier","field-quarter-short":"trim.","field-sat-narrow-relative+0":"ce sam.","field-fri-relative+0":"ce vendredi","field-sat-narrow-relative+1":"sam. prochain","field-fri-relative+1":"vendredi prochain","field-month-narrow-relative+0":"ce mois-ci","field-month-narrow-relative+1":"le mois prochain","field-sun-short-relative+0":"ce dim.","field-sun-short-relative+1":"dim. prochain","field-week-relative+-1":"la semaine dernière","field-quarter-short-relative+-1":"le trim. dern.","field-minute-short-relative+0":"cette min","field-quarter-relative+0":"ce trimestre","field-minute-relative+0":"cette minute-ci","field-quarter-relative+1":"le trimestre prochain","field-wed-short-relative+-1":"mer. dernier","field-thu-short-relative+-1":"jeu. dernier","field-year-narrow-relative+-1":"l’année dernière","field-mon-narrow-relative+-1":"lun. dernier","field-thu-narrow-relative+-1":"jeu. dernier","field-tue-narrow-relative+-1":"mar. dernier","field-weekOfMonth-short":"sem. (m.)","field-wed-short-relative+0":"ce mer.","field-wed-short-relative+1":"mer. prochain","field-sun-relative+-1":"dimanche dernier","field-weekday":"jour de la semaine","field-day-short-relative+0":"aujourd’hui","field-quarter-narrow-relative+0":"ce trim.","field-sat-relative+0":"ce samedi","field-day-short-relative+1":"demain","field-quarter-narrow-relative+1":"trim. proch.","field-sat-relative+1":"samedi prochain","field-day-short-relative+2":"après-demain","field-week-short-relative+0":"cette semaine","field-week-short-relative+1":"la semaine prochaine","field-dayOfYear-narrow":"j (an)","field-month-short-relative+0":"ce mois-ci","field-month-short-relative+1":"le mois prochain","field-weekdayOfMonth-short":"jour (mois)","field-zone-narrow":"fuseau horaire","field-thu-narrow-relative+0":"ce jeu.","field-thu-narrow-relative+1":"jeu. prochain","field-sun-narrow-relative+-1":"dim. dernier","field-mon-short-relative+-1":"lun. dernier","field-thu-relative+0":"ce jeudi","field-thu-relative+1":"jeudi prochain","field-fri-short-relative+-1":"ven. dernier","field-thu-relative+-1":"jeudi dernier","field-week":"semaine","field-wed-narrow-relative+0":"ce mer.","field-wed-narrow-relative+1":"mer. prochain","field-quarter-narrow-relative+-1":"trim. dern.","field-year-short-relative+0":"cette année","field-dayperiod-short":"cadran","field-year-short-relative+1":"l’année prochaine","field-fri-short-relative+0":"ce ven.","field-fri-short-relative+1":"ven. prochain","field-week-short-relative+-1":"la semaine dernière","field-hour-narrow-relative+0":"cette h","field-hour-short":"h","field-zone-short":"fuseau horaire","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. dernier","field-year-relative+0":"cette année","field-year-relative+1":"l’année prochaine","field-era-narrow":"ère","field-fri-relative+-1":"vendredi dernier","eraNarrow":["av. RdC","RdC"],"field-tue-short-relative+-1":"mar. dernier","field-minute-narrow":"min","field-mon-narrow-relative+0":"ce lun.","field-mon-narrow-relative+1":"lun. prochain","field-year-short-relative+-1":"l’année dernière","field-zone":"fuseau horaire","field-weekOfMonth-narrow":"sem. (m.)","field-weekday-narrow":"j (sem.)","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dim. dernier","field-day-relative+-1":"hier","field-day-relative+-2":"avant-hier","field-weekday-short":"j (sem.)","field-sun-relative+0":"ce dimanche","field-sun-relative+1":"dimanche prochain","field-day-short":"j","field-week-narrow":"sem.","field-era":"ère","field-fri-narrow-relative+0":"ce ven.","field-fri-narrow-relative+1":"ven. prochain"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/generic.js b/lib/dojo/cldr/nls/generic.js
index ae94a6141..429dc68b3 100644
--- a/lib/dojo/cldr/nls/generic.js
+++ b/lib/dojo/cldr/nls/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/generic",{root:{"dayPeriods-format-abbr@localeAlias212":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","dateTimeFormat-short":"{1} {0}","eraNarrow@localeAlias214":{"bundle":"generic","target":"eraAbbr"},"field-day-relative+0":"today","field-day-relative+1":"tomorrow","timeFormat@localeAlias215":{"bundle":"gregorian","target":"timeFormat"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["ERA0","ERA1"],"dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-wed-relative+-1":"last Wednesday","dayPeriods@localeAlias210":{"bundle":"gregorian","target":"dayPeriods"},"dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","dateFormatItem-MMM":"LLL","field-dayperiod":"Dayperiod","days-format-short@localeAlias196":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias197":{"bundle":"gregorian","target":"days-format-wide"},"months-standAlone-wide@localeAlias192":{"bundle":"generic","target":"months-format-wide"},"dayPeriods-format-narrow-pm":"p","dateFormat-medium":"G y MMM d","eraAbbr":["ERA0","ERA1"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","months-standAlone-abbr@localeAlias190":{"bundle":"generic","target":"months-format-abbr"},"months-standAlone-abbr@localeAlias191":{"bundle":"generic","target":"months-format-wide"},"field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-yyyyMMMd":"G y MMM d","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","eraNames@localeAlias213":{"bundle":"generic","target":"eraAbbr"},"dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-hour":"Hour","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"timeFormat-long":"HH:mm:ss z","days-standAlone-wide@localeAlias203":{"bundle":"gregorian","target":"days-format-wide"},"dateFormat-short":"GGGGG y-MM-dd","quarters-format-narrow@localeAlias206":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","quarters@localeAlias204":{"bundle":"gregorian","target":"quarters"},"dateTimeFormats-appendItem-Era":"{1} {0}","days-format-narrow@localeAlias195":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dateFormatItem-H":"HH","dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","days@localeAlias193":{"bundle":"gregorian","target":"days"},"dateFormatItem-d":"d","field-weekday":"Day of the Week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"G y","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-abbr-noon":"noon","quarters-standAlone-wide@localeAlias209":{"bundle":"gregorian","target":"quarters-format-wide"},"dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"G y MMM","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"days-standAlone-abbr@localeAlias198":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias199":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-yyyyQQQQ":"G y QQQQ","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","eraNarrow":["ERA0","ERA1"],"dayPeriods-format-wide-noon":"noon","quarters-standAlone-abbr@localeAlias207":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias208":{"bundle":"gregorian","target":"quarters-format-wide"},"days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-zone":"Zone","days-format-abbr@localeAlias194":{"bundle":"gregorian","target":"days-format-wide"},"months-format-abbr@localeAlias188":{"bundle":"generic","target":"months-format-wide"},"dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-EHms":"E HH:mm:ss","field-day-relative+-1":"yesterday","quarters-format-abbr@localeAlias205":{"bundle":"gregorian","target":"quarters-format-wide"},"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","months-format-narrow@localeAlias189":{"bundle":"generic","target":"months-standAlone-narrow"},"field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-era":"Era","days-standAlone-short@localeAlias200":{"bundle":"gregorian","target":"days-format-short"},"days-standAlone-short@localeAlias201":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-short@localeAlias202":{"bundle":"gregorian","target":"days-format-wide"},"dayPeriods-format-abbr@localeAlias211":{"bundle":"gregorian","target":"dayPeriods-format-wide"}},"ar":true,"bs":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-ca":true,"en-gb":true,"es":true,"fi":true,"fr":true,"fr-ch":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/generic",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+0":"this Sunday","field-sun-narrow-relative+1":"next Sunday","months-format-narrow@localeAlias615":{"bundle":"generic","target":"months-standAlone-narrow"},"months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","eraNarrow":["ERA0","ERA1"],"field-fri-narrow-relative+1":"next Friday","field-fri-short@localeAlias692":{"bundle":"","target":"field-fri"},"days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"eraNarrow@localeAlias645":{"bundle":"generic","target":"eraAbbr"},"dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","field-dayperiod-narrow@localeAlias699":{"bundle":"","target":"field-dayperiod-short"},"field-minute-narrow@localeAlias705":{"bundle":"","target":"field-minute-short"},"field-minute-narrow@localeAlias706":{"bundle":"","target":"field-minute"},"field-minute-narrow-relative+0":"this minute","quarters-standAlone-abbr@localeAlias633":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias634":{"bundle":"gregorian","target":"quarters-format-wide"},"field-thu-narrow@localeAlias690":{"bundle":"","target":"field-thu-short"},"days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekOfMonth-narrow@localeAlias663":{"bundle":"","target":"field-weekOfMonth-short"},"field-thu-narrow@localeAlias691":{"bundle":"","target":"field-thu"},"field-weekOfMonth-narrow@localeAlias664":{"bundle":"","target":"field-weekOfMonth"},"days@localeAlias619":{"bundle":"gregorian","target":"days"},"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","dateFormatItem-Ehms":"E h:mm:ss a","field-dayperiod-short@localeAlias698":{"bundle":"","target":"field-dayperiod"},"dayPeriods-standAlone-wide@localeAlias642":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"field-thu-relative+0":"this Thursday","dayPeriods-standAlone-wide@localeAlias643":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-week-short@localeAlias659":{"bundle":"","target":"field-week"},"field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","field-week-narrow":"Week","field-hour-relative+0":"this hour","field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-minute-narrow":"Minute","dateFormatItem-yyyyMMM":"G y MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-fri-narrow@localeAlias693":{"bundle":"","target":"field-fri-short"},"field-day-narrow-relative+0":"today","field-era-short":"Era","field-fri-narrow@localeAlias694":{"bundle":"","target":"field-fri"},"field-day-narrow-relative+1":"tomorrow","field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-week-narrow-relative+0":"this week","quarters-format-abbr@localeAlias631":{"bundle":"gregorian","target":"quarters-format-wide"},"field-week-narrow-relative+1":"next week","field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-month":"Month","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow":"Day of the Week","field-year-relative+0":"this year","field-year-relative+1":"next year","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","field-year-narrow":"Year","field-sun-short@localeAlias677":{"bundle":"","target":"field-sun"},"field-minute-short@localeAlias704":{"bundle":"","target":"field-minute"},"field-quarter-short@localeAlias653":{"bundle":"","target":"field-quarter"},"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dayPeriods-format-wide@localeAlias638":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","field-dayOfYear-short@localeAlias668":{"bundle":"","target":"field-dayOfYear"},"field-wed-short-relative+0":"this Wednesday","field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","field-quarter-short-relative+-1":"last quarter","field-quarter-narrow@localeAlias654":{"bundle":"","target":"field-quarter-short"},"field-quarter-narrow@localeAlias655":{"bundle":"","target":"field-quarter"},"field-year-short-relative+-1":"last year","dateFormatItem-Bhm":"h:mm B","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-yyyyQQQ":"G y QQQ","dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-y":"G y","field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-weekdayOfMonth-narrow@localeAlias675":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-wed-narrow@localeAlias687":{"bundle":"","target":"field-wed-short"},"field-weekdayOfMonth-narrow@localeAlias676":{"bundle":"","target":"field-weekdayOfMonth"},"field-wed-narrow@localeAlias688":{"bundle":"","target":"field-wed"},"field-tue-narrow-relative+-1":"last Tuesday","field-thu-short@localeAlias689":{"bundle":"","target":"field-thu"},"days-standAlone-abbr@localeAlias624":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias625":{"bundle":"gregorian","target":"days-format-wide"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"G y MMM d","field-weekdayOfMonth-short@localeAlias674":{"bundle":"","target":"field-weekdayOfMonth"},"field-sat-relative+-1":"last Saturday","field-tue-short@localeAlias683":{"bundle":"","target":"field-tue"},"dayPeriods-standAlone-narrow-pm":"PM","field-day-narrow@localeAlias666":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias667":{"bundle":"","target":"field-day"},"field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","field-second":"Second","field-year-relative+-1":"last year","field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"GGGGG y-MM-dd","eraNames":["ERA0","ERA1"],"field-second-short":"Second","quarters@localeAlias630":{"bundle":"gregorian","target":"quarters"},"field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","eraAbbr":["ERA0","ERA1"],"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","field-day-relative+1":"tomorrow","dayPeriods-standAlone-narrow@localeAlias640":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-narrow@localeAlias641":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-sat-narrow@localeAlias696":{"bundle":"","target":"field-sat-short"},"field-sat-narrow@localeAlias697":{"bundle":"","target":"field-sat"},"field-second-short@localeAlias707":{"bundle":"","target":"field-second"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-day-short-relative+1":"tomorrow","dateFormat-long":"G y MMMM d","field-sun-narrow-relative+-1":"last Sunday","eraNames@localeAlias644":{"bundle":"generic","target":"eraAbbr"},"days-format-short@localeAlias622":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias623":{"bundle":"gregorian","target":"days-format-wide"},"field-second-relative+0":"now","field-second-narrow@localeAlias708":{"bundle":"","target":"field-second-short"},"field-second-narrow@localeAlias709":{"bundle":"","target":"field-second"},"field-quarter-relative+-1":"last quarter","field-zone-narrow@localeAlias711":{"bundle":"","target":"field-zone-short"},"field-zone-narrow@localeAlias712":{"bundle":"","target":"field-zone"},"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-narrow@localeAlias637":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-year-short@localeAlias650":{"bundle":"","target":"field-year"},"field-era-short@localeAlias647":{"bundle":"","target":"field-era"},"field-week-relative+-1":"last week","field-month-relative+-1":"last month","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-short@localeAlias680":{"bundle":"","target":"field-mon"},"field-year":"Year","field-era":"Era","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"field-hour-short@localeAlias701":{"bundle":"","target":"field-hour"},"field-day-short-relative+-1":"yesterday","dayPeriods-standAlone-abbr@localeAlias639":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dateFormatItem-GyMMM":"G y MMM","timeFormat-full":"HH:mm:ss zzzz","timeFormat@localeAlias646":{"bundle":"gregorian","target":"timeFormat"},"months-standAlone-abbr@localeAlias616":{"bundle":"generic","target":"months-format-abbr"},"months-standAlone-abbr@localeAlias617":{"bundle":"generic","target":"months-format-wide"},"field-zone-short@localeAlias710":{"bundle":"","target":"field-zone"},"dateFormatItem-Bhms":"h:mm:ss B","days-standAlone-wide@localeAlias629":{"bundle":"gregorian","target":"days-format-wide"},"field-hour":"Hour","quarters-standAlone-wide@localeAlias635":{"bundle":"gregorian","target":"quarters-format-wide"},"field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-quarter":"Quarter","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-tue-narrow@localeAlias684":{"bundle":"","target":"field-tue-short"},"field-tue-narrow@localeAlias685":{"bundle":"","target":"field-tue"},"dateFormatItem-yyyy":"G y","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"Day","field-wed-short@localeAlias686":{"bundle":"","target":"field-wed"},"field-mon-relative+-1":"last Monday","field-dayOfYear":"Day Of Year","dateFormat-medium":"G y MMM d","dateTimeFormat-short":"{1} {0}","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-MEd":"MM-dd, E","field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","field-month-short":"Month","dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","quarters-format-narrow@localeAlias632":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"dateFormatItem-Bh":"h B","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-year-narrow@localeAlias651":{"bundle":"","target":"field-year-short"},"field-year-narrow@localeAlias652":{"bundle":"","target":"field-year"},"field-month-narrow@localeAlias657":{"bundle":"","target":"field-month-short"},"field-month-narrow@localeAlias658":{"bundle":"","target":"field-month"},"days-standAlone-short@localeAlias626":{"bundle":"gregorian","target":"days-format-short"},"days-standAlone-short@localeAlias627":{"bundle":"gregorian","target":"days-format-abbr"},"dayPeriods-format-abbr-am":"AM","days-standAlone-short@localeAlias628":{"bundle":"gregorian","target":"days-format-wide"},"field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","field-month-narrow":"Month","field-weekOfMonth-short@localeAlias662":{"bundle":"","target":"field-weekOfMonth"},"dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"last month","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekday-short":"Day of the Week","field-day-narrow-relative+-1":"yesterday","field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-EHm":"E HH:mm","field-sat-short@localeAlias695":{"bundle":"","target":"field-sat"},"field-quarter-narrow":"Quarter","field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","months-standAlone-wide@localeAlias618":{"bundle":"generic","target":"months-format-wide"},"field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","timeFormat-medium":"HH:mm:ss","days-format-abbr@localeAlias620":{"bundle":"gregorian","target":"days-format-wide"},"field-quarter-short-relative+0":"this quarter","field-quarter-short-relative+1":"next quarter","dateFormatItem-Ed":"d, E","field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","field-weekdayOfMonth-narrow":"Weekday Of Month","field-day-short@localeAlias665":{"bundle":"","target":"field-day"},"dayPeriods-standAlone-wide-am":"AM","field-month-short@localeAlias656":{"bundle":"","target":"field-month"},"field-fri-relative+-1":"last Friday","months-format-abbr@localeAlias614":{"bundle":"generic","target":"months-format-wide"},"field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-short":"Day","field-dayperiod":"Dayperiod","field-hour-short":"Hour","field-dayOfYear-narrow@localeAlias669":{"bundle":"","target":"field-dayOfYear-short"},"months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","field-week-short-relative+-1":"last week","days-format-narrow@localeAlias621":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-weekdayOfMonth":"Weekday Of Month","field-weekday-short@localeAlias671":{"bundle":"","target":"field-weekday"},"field-dayOfYear-narrow@localeAlias670":{"bundle":"","target":"field-dayOfYear"},"field-mon-narrow@localeAlias681":{"bundle":"","target":"field-mon-short"},"field-mon-narrow@localeAlias682":{"bundle":"","target":"field-mon"},"field-sun-narrow@localeAlias678":{"bundle":"","target":"field-sun-short"},"field-sun-narrow@localeAlias679":{"bundle":"","target":"field-sun"},"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-GyMMMEd":"G y MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","field-hour-narrow@localeAlias702":{"bundle":"","target":"field-hour-short"},"field-hour-narrow@localeAlias703":{"bundle":"","target":"field-hour"},"field-year-narrow-relative+0":"this year","field-year-narrow-relative+1":"next year","dateFormatItem-Gy":"G y","field-zone-narrow":"Zone","dayPeriods@localeAlias636":{"bundle":"gregorian","target":"dayPeriods"},"dateFormatItem-yyyyM":"GGGGG y-MM","field-tue-relative+-1":"last Tuesday","field-minute-short":"Minute","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"this week","field-week-relative+1":"next week","field-dayperiod-narrow@localeAlias700":{"bundle":"","target":"field-dayperiod"},"dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","field-sat-narrow-relative+-1":"last Saturday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-era-narrow@localeAlias648":{"bundle":"","target":"field-era-short"},"field-era-narrow@localeAlias649":{"bundle":"","target":"field-era"},"field-weekday-narrow@localeAlias672":{"bundle":"","target":"field-weekday-short"},"field-weekday-narrow@localeAlias673":{"bundle":"","target":"field-weekday"},"field-month-short-relative+-1":"last month","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"MMMM d","field-week":"Week","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour","field-week-narrow@localeAlias660":{"bundle":"","target":"field-week-short"},"field-week-narrow@localeAlias661":{"bundle":"","target":"field-week"}},"ar":true,"bs":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-ca":true,"en-gb":true,"es":true,"fi":true,"fr":true,"fr-ch":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/gregorian.js b/lib/dojo/cldr/nls/gregorian.js
index 118a40ea8..2842ac5e5 100644
--- a/lib/dojo/cldr/nls/gregorian.js
+++ b/lib/dojo/cldr/nls/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/gregorian",{root:{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"now","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"y-MM-dd, E","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-MMMEd":"MMM d, E","eraNarrow":["BCE","CE"],"field-tue-relative+-1":"last Tuesday","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"y MMMM d","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"y MMMM d, EEEE","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"MM-dd","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dayPeriods-format-wide-noon":"noon","dateFormatItem-yMd":"y-MM-dd","field-era":"Era","dateFormatItem-yM":"y-MM","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-yQQQQ":"y QQQQ","timeFormat-long":"HH:mm:ss z","field-year":"Year","dateFormatItem-yMMM":"y MMM","dateTimeFormats-appendItem-Era":"{1} {0}","field-hour":"Hour","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"today","field-thu-relative+0":"this Thursday","field-day-relative+1":"tomorrow","field-thu-relative+1":"next Thursday","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-H":"HH","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Gy":"G y","dateFormatItem-M":"L","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayPeriods-format-abbr-noon":"noon","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"this Sunday","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"next Sunday","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["BCE","CE"],"field-minute":"Minute","field-dayperiod":"Dayperiod","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"yesterday","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"a","dateFormatItem-h":"h a","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"MM-dd, E","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone":"Zone","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-y":"y","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateTimeFormats-appendItem-Year":"{1} {0}","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"eraNames":["BCE","CE"],"dateFormatItem-yMMMd":"y MMM d","days-format-narrow":["S","M","T","W","T","F","S"],"field-month":"Month","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-MMM":"LLL","field-tue-relative+0":"this Tuesday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-relative+1":"next Tuesday","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"y-MM-dd","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-noon":"n","field-second":"Second","field-sat-relative+-1":"last Saturday","dateFormatItem-yMMMEd":"y MMM d, E","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormatItem-Ed":"d, E","field-week":"Week","dateFormat-medium":"y MMM d","field-week-relative+-1":"last week","field-year-relative+0":"this year","field-year-relative+1":"next year","dayPeriods-format-narrow-pm":"p","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"G y MMM","field-mon-relative+-1":"last Monday","field-week-relative+0":"this week","field-week-relative+1":"next week"},"ar":true,"bs":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-ca":true,"en-gb":true,"es":true,"fi":true,"fr":true,"fr-ch":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true,"zh-hk":true,"zh-tw":true}); \ No newline at end of file
+define("dojo/cldr/nls/gregorian",{root:{"field-quarter-short-relative+0":"this quarter","dateTimeFormats-appendItem-Year":"{1} {0}","field-quarter-short-relative+1":"next quarter","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-yw":"'week' w 'of' Y","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","field-month-narrow-relative+-1":"last month","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","field-thu-short-relative+0":"this Thursday","field-day-short-relative+-1":"yesterday","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"next Thursday","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-wed-narrow-relative+-1":"last Wednesday","dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"Year","field-era-short":"Era","field-year-narrow-relative+0":"this year","field-tue-relative+0":"this Tuesday","field-year-narrow-relative+1":"next year","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"Weekday Of Month","field-second-short":"Second","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Sunday","timeFormat-medium":"HH:mm:ss","field-mon-short-relative+0":"this Monday","field-sun-narrow-relative+1":"next Sunday","field-mon-short-relative+1":"next Monday","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["BCE","CE"],"field-weekOfMonth":"Week Of Month","dayPeriods-standAlone-abbr-pm":"PM","field-month-short":"Month","dateFormatItem-GyMMMEd":"G y MMM d, E","field-day":"Day","field-dayOfYear-short":"Day Of Year","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","field-sat-short-relative+-1":"last Saturday","field-hour-relative+0":"this hour","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"last Saturday","field-second":"Second","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","field-hour-short-relative+0":"this hour","field-quarter":"Quarter","field-week-short":"Week","field-day-narrow-relative+0":"today","dateFormatItem-yMMMEd":"y MMM d, E","field-day-narrow-relative+1":"tomorrow","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","field-month-short-relative+-1":"last month","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","field-day-narrow":"Day","dateFormatItem-MMM":"LLL","field-minute-short":"Minute","field-dayperiod":"Dayperiod","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","dayPeriods-format-narrow-pm":"PM","dateFormat-medium":"y MMM d","eraAbbr":["BCE","CE"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","field-second-narrow":"Second","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-day-narrow-relative+-1":"yesterday","field-year-short":"Year","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"last quarter","field-dayperiod-narrow":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-dayOfYear":"Day Of Year","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-minute-narrow-relative+0":"this minute","field-hour":"Hour","dateFormatItem-yQQQQ":"y QQQQ","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateFormat-full":"y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"Quarter","field-sat-narrow-relative+0":"this Saturday","dateFormatItem-Hmv":"HH:mm v","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Saturday","field-fri-relative+1":"next Friday","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-sun-short-relative+0":"this Sunday","field-sun-short-relative+1":"next Sunday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last quarter","field-minute-short-relative+0":"this minute","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","timeFormat-long":"HH:mm:ss z","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yMMM":"y MMM","dateFormat-short":"y-MM-dd","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"last Thursday","field-year-narrow-relative+-1":"last year","dateFormatItem-MMMMW":"'week' W 'of' MMMM","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-mon-narrow-relative+-1":"last Monday","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-MMMMd":"MMMM d","field-thu-narrow-relative+-1":"last Thursday","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"last Tuesday","dateFormatItem-H":"HH","field-weekOfMonth-short":"Week Of Month","dayPeriods-standAlone-narrow-pm":"PM","field-wed-short-relative+0":"this Wednesday","dateFormatItem-M":"L","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-wed-short-relative+1":"next Wednesday","dateFormatItem-Hmsv":"HH:mm:ss v","field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"now","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"Day of the Week","field-day-short-relative+0":"today","field-day-short-relative+1":"tomorrow","field-sat-relative+0":"this Saturday","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","field-quarter-narrow-relative+1":"next quarter","field-week-short-relative+0":"this week","dateFormatItem-hmsv":"h:mm:ss a v","field-week-short-relative+1":"next week","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-dayOfYear-narrow":"Day Of Year","field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","field-weekdayOfMonth-short":"Weekday Of Month","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","field-zone-narrow":"Zone","dateFormatItem-y":"y","field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+-1":"last Sunday","field-mon-short-relative+-1":"last Monday","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","dateFormatItem-hmv":"h:mm a v","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","dateFormatItem-yMd":"y-MM-dd","quarters-standAlone-narrow":["1","2","3","4"],"field-week":"Week","quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-quarter-narrow-relative+-1":"last quarter","field-year-short-relative+0":"this year","field-dayperiod-short":"Dayperiod","field-year-short-relative+1":"next year","field-fri-short-relative+0":"this Friday","field-fri-short-relative+1":"next Friday","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-week-short-relative+-1":"last week","field-hour-narrow-relative+0":"this hour","field-zone-short":"Zone","field-hour-short":"Hour","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-month-narrow":"Month","field-hour-narrow":"Hour","field-fri-narrow-relative+-1":"last Friday","field-year-relative+0":"this year","field-year-relative+1":"next year","field-era-narrow":"Era","field-fri-relative+-1":"last Friday","eraNarrow":["BCE","CE"],"dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"last Tuesday","field-minute-narrow":"Minute","dateFormatItem-yQQQ":"y QQQ","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","dateFormatItem-EHm":"E HH:mm","field-year-short-relative+-1":"last year","field-zone":"Zone","dateFormatItem-yM":"y-MM","dateFormatItem-yMMMM":"y MMMM","dateFormatItem-MMMEd":"MMM d, E","field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-yMEd":"y-MM-dd, E","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"Day of the Week","field-quarter-narrow":"Quarter","field-sun-short-relative+-1":"last Sunday","field-day-relative+-1":"yesterday","dayPeriods-standAlone-abbr-am":"AM","field-weekday-short":"Day of the Week","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateFormatItem-yMMMd":"y MMM d","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-week-narrow":"Week","field-era":"Era","field-day-short":"Day","field-fri-narrow-relative+0":"this Friday","field-fri-narrow-relative+1":"next Friday","dayPeriods-standAlone-wide-am":"AM"},"ar":true,"bs":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-ca":true,"en-gb":true,"es":true,"fi":true,"fr":true,"fr-ch":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true,"zh-hk":true,"zh-tw":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/buddhist.js b/lib/dojo/cldr/nls/he/buddhist.js
new file mode 100644
index 000000000..cebdd8efc
--- /dev/null
+++ b/lib/dojo/cldr/nls/he/buddhist.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/he/buddhist",{"field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","field-tue-relative+-1":"יום שלישי שעבר","field-year":"שנה","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","timeFormat-short":"H:mm","field-minute":"דקה","field-month-narrow-relative+-1":"החודש שעבר","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","field-thu-short-relative+0":"יום ה׳","field-day-short-relative+-1":"אתמול","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"יום ה׳ הבא","field-day-relative+0":"היום","field-day-short-relative+-2":"שלשום","field-day-relative+1":"מחר","field-week-narrow-relative+0":"השבוע","field-day-relative+2":"מחרתיים","field-week-narrow-relative+1":"השבוע הבא","field-wed-narrow-relative+-1":"יום ד׳ שעבר","field-year-narrow":"שנ׳","field-era-short":"תקופה","field-year-narrow-relative+0":"השנה","field-tue-relative+0":"יום שלישי","field-year-narrow-relative+1":"השנה הבאה","field-tue-relative+1":"יום שלישי הבא","field-weekdayOfMonth":"יום חול בחודש","field-second-short":"שנ׳","dayPeriods-format-narrow-am":"לפנה״צ","dateFormatItem-MMMd":"d בMMM","field-weekdayOfMonth-narrow":"יום בחודש","dayPeriods-format-abbr-am":"לפנה״צ","field-week-relative+0":"השבוע","field-month-relative+0":"החודש","field-week-relative+1":"השבוע הבא","field-month-relative+1":"החודש הבא","field-sun-narrow-relative+0":"יום א׳","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"יום ב׳","field-sun-narrow-relative+1":"יום א׳ הבא","field-mon-short-relative+1":"יום ב׳ הבא","field-second-relative+0":"עכשיו","eraNames":["הספירה הבודהיסטית"],"field-weekOfMonth":"השבוע בחודש","field-month-short":"חו׳","dateFormatItem-GyMMMEd":"E, d בMMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"יום","field-dayOfYear-short":"יום בשנה","field-year-relative+-1":"השנה שעברה","dayPeriods-format-wide-am":"לפנה״צ","field-sat-short-relative+-1":"שבת שעברה","field-hour-relative+0":"בשעה זו","dateFormatItem-yyyyMEd":"E, d/M/y G","field-wed-relative+-1":"יום רביעי שעבר","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"שבת שעברה","field-second":"שנייה","days-standAlone-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormat-long":"d בMMMM y G","dateFormatItem-GyMMMd":"d בMMM y G","field-quarter":"רבעון","field-week-short":"שב׳","field-day-narrow-relative+0":"היום","field-day-narrow-relative+1":"מחר","quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"days-format-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-tue-short-relative+0":"יום ג׳","field-tue-short-relative+1":"יום ג׳ הבא","field-month-short-relative+-1":"החודש שעבר","field-mon-relative+-1":"יום שני שעבר","dateFormatItem-GyMMM":"MMM y G","field-month":"חודש","field-day-narrow":"יום","field-minute-short":"דק׳","field-dayperiod":"לפנה״צ/אחה״צ","field-sat-short-relative+0":"שבת","field-sat-short-relative+1":"שבת הבאה","dayPeriods-format-narrow-pm":"אחה״צ","dateFormat-medium":"d בMMM y G","eraAbbr":["BE"],"dayPeriods-format-abbr-pm":"אחה״צ","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"שנ׳","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+-1":"אתמול","field-year-short":"שנ׳","field-day-narrow-relative+-2":"שלשום","field-quarter-relative+-1":"הרבעון הקודם","dateFormatItem-yyyyMMMd":"d בMMM y G","field-dayperiod-narrow":"AM/PM","dayPeriods-standAlone-narrow-am":"לפנה״צ","field-week-narrow-relative+-1":"השבוע שעבר","days-format-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dayPeriods-format-wide-pm":"אחה״צ","field-dayOfYear":"יום בשנה","field-sat-relative+-1":"יום שבת שעבר","dateTimeFormat-long":"{1} בשעה {0}","dateFormatItem-Md":"d.M","field-hour":"שעה","months-format-wide":["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"dateFormat-full":"EEEE, d בMMMM y G","field-month-relative+-1":"החודש שעבר","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"רבע׳","field-sat-narrow-relative+0":"שבת","field-fri-relative+0":"יום שישי","field-sat-narrow-relative+1":"שבת הבאה","field-fri-relative+1":"יום שישי הבא","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-sun-short-relative+0":"יום א׳","field-sun-short-relative+1":"יום א׳ הבא","field-week-relative+-1":"השבוע שעבר","field-quarter-short-relative+-1":"הרבעון הקודם","months-format-abbr":["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],"field-quarter-relative+0":"רבעון זה","field-minute-relative+0":"בדקה זו","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"הרבעון הבא","field-wed-short-relative+-1":"יום ד׳ שעבר","dateFormat-short":"d.M.y GGGGG","field-thu-short-relative+-1":"יום ה׳ שעבר","field-year-narrow-relative+-1":"השנה שעברה","days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-yyyyMMMEd":"E, d בMMM y G","field-mon-narrow-relative+-1":"יום ב׳ שעבר","field-thu-narrow-relative+-1":"יום ה׳ שעבר","field-tue-narrow-relative+-1":"יום ג׳ שעבר","dateFormatItem-H":"H","field-weekOfMonth-short":"השבוע בחודש","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"אחה״צ","field-wed-short-relative+0":"יום ד׳","months-standAlone-wide":["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"field-wed-short-relative+1":"יום ד׳ הבא","field-sun-relative+-1":"ביום ראשון שעבר","days-standAlone-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"dateTimeFormat-full":"{1} בשעה {0}","field-weekday":"יום בשבוע","field-day-short-relative+0":"היום","field-quarter-narrow-relative+0":"רבעון זה","field-sat-relative+0":"יום שבת","field-day-short-relative+1":"מחר","field-quarter-narrow-relative+1":"הרבעון הבא","field-sat-relative+1":"יום שבת הבא","field-day-short-relative+2":"מחרתיים","field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","months-standAlone-abbr":["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],"field-dayOfYear-narrow":"יום בשנה","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","field-weekdayOfMonth-short":"יום בחודש","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"אזור","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"יום ה׳","field-thu-narrow-relative+1":"יום ה׳ הבא","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","field-thu-relative+0":"יום חמישי","field-thu-relative+1":"יום חמישי הבא","field-fri-short-relative+-1":"יום ו׳ שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-week":"שבוע","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-Ed":"E ה-d","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-quarter-narrow-relative+-1":"הרבעון הקודם","field-year-short-relative+0":"השנה","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"השנה הבאה","field-fri-short-relative+0":"יום ו׳","field-fri-short-relative+1":"יום ו׳ הבא","days-standAlone-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-week-short-relative+-1":"השבוע שעבר","field-hour-short":"שעה","field-zone-short":"אזור","field-month-narrow":"חו׳","field-hour-narrow":"שע׳","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-era-narrow":"תקופה","field-fri-relative+-1":"יום שישי שעבר","eraNarrow":"BE","field-tue-short-relative+-1":"יום ג׳ שעבר","field-minute-narrow":"דק׳","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"field-mon-narrow-relative+0":"יום ב׳","field-mon-narrow-relative+1":"יום ב׳ הבא","field-year-short-relative+-1":"השנה שעברה","field-zone":"אזור זמן","dateFormatItem-MMMEd":"E, d בMMM","field-weekOfMonth-narrow":"השבוע בחודש","field-weekday-narrow":"יום בשבוע","field-quarter-narrow":"רבע׳","field-sun-short-relative+-1":"יום א׳ שעבר","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-weekday-short":"יום בשבוע","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","dateFormatItem-Gy":"y G","field-day-short":"יום","field-week-narrow":"שב׳","field-era":"תקופה","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/coptic.js b/lib/dojo/cldr/nls/he/coptic.js
new file mode 100644
index 000000000..7b26fd50e
--- /dev/null
+++ b/lib/dojo/cldr/nls/he/coptic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/he/coptic",{"field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","field-tue-relative+-1":"יום שלישי שעבר","field-year":"שנה","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","field-minute":"דקה","field-month-narrow-relative+-1":"החודש שעבר","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","field-thu-short-relative+0":"יום ה׳","field-day-short-relative+-1":"אתמול","field-thu-short-relative+1":"יום ה׳ הבא","field-day-relative+0":"היום","field-day-short-relative+-2":"שלשום","field-day-relative+1":"מחר","field-week-narrow-relative+0":"השבוע","field-day-relative+2":"מחרתיים","field-week-narrow-relative+1":"השבוע הבא","field-wed-narrow-relative+-1":"יום ד׳ שעבר","field-year-narrow":"שנ׳","field-era-short":"תקופה","field-year-narrow-relative+0":"השנה","field-tue-relative+0":"יום שלישי","field-year-narrow-relative+1":"השנה הבאה","field-tue-relative+1":"יום שלישי הבא","field-weekdayOfMonth":"יום חול בחודש","field-second-short":"שנ׳","field-weekdayOfMonth-narrow":"יום בחודש","field-week-relative+0":"השבוע","field-month-relative+0":"החודש","field-week-relative+1":"השבוע הבא","field-month-relative+1":"החודש הבא","field-sun-narrow-relative+0":"יום א׳","field-mon-short-relative+0":"יום ב׳","field-sun-narrow-relative+1":"יום א׳ הבא","field-mon-short-relative+1":"יום ב׳ הבא","field-second-relative+0":"עכשיו","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["עידן 0","עידן 1"],"field-weekOfMonth":"השבוע בחודש","field-month-short":"חו׳","field-day":"יום","field-dayOfYear-short":"יום בשנה","field-year-relative+-1":"השנה שעברה","field-sat-short-relative+-1":"שבת שעברה","field-hour-relative+0":"בשעה זו","field-wed-relative+-1":"יום רביעי שעבר","field-sat-narrow-relative+-1":"שבת שעברה","field-second":"שנייה","field-quarter":"רבעון","field-week-short":"שב׳","field-day-narrow-relative+0":"היום","field-day-narrow-relative+1":"מחר","field-tue-short-relative+0":"יום ג׳","field-tue-short-relative+1":"יום ג׳ הבא","field-month-short-relative+-1":"החודש שעבר","field-mon-relative+-1":"יום שני שעבר","field-month":"חודש","field-day-narrow":"יום","field-minute-short":"דק׳","field-dayperiod":"לפנה״צ/אחה״צ","field-sat-short-relative+0":"שבת","field-sat-short-relative+1":"שבת הבאה","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"שנ׳","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+-1":"אתמול","field-year-short":"שנ׳","field-day-narrow-relative+-2":"שלשום","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"הרבעון הקודם","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"השבוע שעבר","field-dayOfYear":"יום בשנה","field-sat-relative+-1":"יום שבת שעבר","field-hour":"שעה","months-format-wide":["טאוט","בבה","הטור","קיאק","טובה","אמשיר","ברמהט","ברמודה","בשאנס","פאונה","אפיפ","מסרה","נאסי"],"field-month-relative+-1":"החודש שעבר","field-quarter-short":"רבע׳","field-sat-narrow-relative+0":"שבת","field-fri-relative+0":"יום שישי","field-sat-narrow-relative+1":"שבת הבאה","field-fri-relative+1":"יום שישי הבא","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-sun-short-relative+0":"יום א׳","field-sun-short-relative+1":"יום א׳ הבא","field-week-relative+-1":"השבוע שעבר","field-quarter-short-relative+-1":"הרבעון הקודם","months-format-abbr":["טאוט","בבה","הטור","קיאק","טובה","אמשיר","ברמהט","ברמודה","בשאנס","פאונה","אפיפ","מסרה","נאסי"],"field-quarter-relative+0":"רבעון זה","field-minute-relative+0":"בדקה זו","field-quarter-relative+1":"הרבעון הבא","field-wed-short-relative+-1":"יום ד׳ שעבר","field-thu-short-relative+-1":"יום ה׳ שעבר","field-year-narrow-relative+-1":"השנה שעברה","field-mon-narrow-relative+-1":"יום ב׳ שעבר","field-thu-narrow-relative+-1":"יום ה׳ שעבר","field-tue-narrow-relative+-1":"יום ג׳ שעבר","field-weekOfMonth-short":"השבוע בחודש","field-wed-short-relative+0":"יום ד׳","months-standAlone-wide":["טאוט","בבה","הטור","קיאק","טובה","אמשיר","ברמהט","ברמודה","בשאנס","פאונה","אפיפ","מסרה","נאסי"],"field-wed-short-relative+1":"יום ד׳ הבא","field-sun-relative+-1":"ביום ראשון שעבר","field-weekday":"יום בשבוע","field-day-short-relative+0":"היום","field-quarter-narrow-relative+0":"רבעון זה","field-day-short-relative+1":"מחר","field-sat-relative+0":"יום שבת","field-quarter-narrow-relative+1":"הרבעון הבא","field-day-short-relative+2":"מחרתיים","field-sat-relative+1":"יום שבת הבא","field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","months-standAlone-abbr":["טאוט","בבה","הטור","קיאק","טובה","אמשיר","ברמהט","ברמודה","בשאנס","פאונה","אפיפ","מסרה","נאסי"],"field-dayOfYear-narrow":"יום בשנה","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","field-weekdayOfMonth-short":"יום בחודש","field-zone-narrow":"אזור","field-thu-narrow-relative+0":"יום ה׳","field-thu-narrow-relative+1":"יום ה׳ הבא","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","field-thu-relative+0":"יום חמישי","field-thu-relative+1":"יום חמישי הבא","field-fri-short-relative+-1":"יום ו׳ שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-week":"שבוע","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-quarter-narrow-relative+-1":"הרבעון הקודם","field-year-short-relative+0":"השנה","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"השנה הבאה","field-fri-short-relative+0":"יום ו׳","field-fri-short-relative+1":"יום ו׳ הבא","field-week-short-relative+-1":"השבוע שעבר","field-hour-short":"שעה","field-zone-short":"אזור","field-month-narrow":"חו׳","field-hour-narrow":"שע׳","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-era-narrow":"תקופה","field-fri-relative+-1":"יום שישי שעבר","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"יום ג׳ שעבר","field-minute-narrow":"דק׳","field-mon-narrow-relative+0":"יום ב׳","field-mon-narrow-relative+1":"יום ב׳ הבא","field-year-short-relative+-1":"השנה שעברה","field-zone":"אזור זמן","field-weekOfMonth-narrow":"השבוע בחודש","field-weekday-narrow":"יום בשבוע","field-quarter-narrow":"רבע׳","field-sun-short-relative+-1":"יום א׳ שעבר","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-weekday-short":"יום בשבוע","field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","field-day-short":"יום","field-week-narrow":"שב׳","field-era":"תקופה","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/currency.js b/lib/dojo/cldr/nls/he/currency.js
index 1a3dde1ff..e238e9bb0 100644
--- a/lib/dojo/cldr/nls/he/currency.js
+++ b/lib/dojo/cldr/nls/he/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/he/currency",{"HKD_displayName":"דולר הונג קונגי","CHF_displayName":"פרנק שוויצרי","JPY_symbol":"JP¥","CAD_displayName":"דולר קנדי","HKD_symbol":"HK$","CNY_displayName":"יואן סיני","USD_symbol":"$","AUD_displayName":"דולר אוסטרלי","JPY_displayName":"ין יפני","CAD_symbol":"CA$","USD_displayName":"דולר אמריקאי","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"לירה שטרלינג","GBP_symbol":"£","AUD_symbol":"A$","EUR_displayName":"אירו"}); \ No newline at end of file
+define("dojo/cldr/nls/he/currency",{"HKD_displayName":"דולר הונג קונגי","CNY_displayName":"יואן סיני","JPY_displayName":"ין יפני","JPY_symbol":"¥","USD_displayName":"דולר אמריקאי","CAD_symbol":"CA$","GBP_displayName":"לירה שטרלינג","CHF_displayName":"פרנק שוויצרי","CNY_symbol":"CN¥","EUR_displayName":"אירו","GBP_symbol":"£","CAD_displayName":"דולר קנדי","USD_symbol":"$","EUR_symbol":"€","AUD_displayName":"דולר אוסטרלי","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"A$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/ethiopic.js b/lib/dojo/cldr/nls/he/ethiopic.js
new file mode 100644
index 000000000..e5fb6d797
--- /dev/null
+++ b/lib/dojo/cldr/nls/he/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/he/ethiopic",{"field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","field-tue-relative+-1":"יום שלישי שעבר","field-year":"שנה","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","field-minute":"דקה","field-month-narrow-relative+-1":"החודש שעבר","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","field-thu-short-relative+0":"יום ה׳","field-day-short-relative+-1":"אתמול","field-thu-short-relative+1":"יום ה׳ הבא","field-day-relative+0":"היום","field-day-short-relative+-2":"שלשום","field-day-relative+1":"מחר","field-week-narrow-relative+0":"השבוע","field-day-relative+2":"מחרתיים","field-week-narrow-relative+1":"השבוע הבא","field-wed-narrow-relative+-1":"יום ד׳ שעבר","field-year-narrow":"שנ׳","field-era-short":"תקופה","field-year-narrow-relative+0":"השנה","field-tue-relative+0":"יום שלישי","field-year-narrow-relative+1":"השנה הבאה","field-tue-relative+1":"יום שלישי הבא","field-weekdayOfMonth":"יום חול בחודש","field-second-short":"שנ׳","field-weekdayOfMonth-narrow":"יום בחודש","field-week-relative+0":"השבוע","field-month-relative+0":"החודש","field-week-relative+1":"השבוע הבא","field-month-relative+1":"החודש הבא","field-sun-narrow-relative+0":"יום א׳","field-mon-short-relative+0":"יום ב׳","field-sun-narrow-relative+1":"יום א׳ הבא","field-mon-short-relative+1":"יום ב׳ הבא","field-second-relative+0":"עכשיו","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["עידן 0","עידן 1"],"field-weekOfMonth":"השבוע בחודש","field-month-short":"חו׳","field-day":"יום","field-dayOfYear-short":"יום בשנה","field-year-relative+-1":"השנה שעברה","field-sat-short-relative+-1":"שבת שעברה","field-hour-relative+0":"בשעה זו","field-wed-relative+-1":"יום רביעי שעבר","field-sat-narrow-relative+-1":"שבת שעברה","field-second":"שנייה","field-quarter":"רבעון","field-week-short":"שב׳","field-day-narrow-relative+0":"היום","field-day-narrow-relative+1":"מחר","field-tue-short-relative+0":"יום ג׳","field-tue-short-relative+1":"יום ג׳ הבא","field-month-short-relative+-1":"החודש שעבר","field-mon-relative+-1":"יום שני שעבר","field-month":"חודש","field-day-narrow":"יום","field-minute-short":"דק׳","field-dayperiod":"לפנה״צ/אחה״צ","field-sat-short-relative+0":"שבת","field-sat-short-relative+1":"שבת הבאה","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"שנ׳","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+-1":"אתמול","field-year-short":"שנ׳","field-day-narrow-relative+-2":"שלשום","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"הרבעון הקודם","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"השבוע שעבר","field-dayOfYear":"יום בשנה","field-sat-relative+-1":"יום שבת שעבר","field-hour":"שעה","months-format-wide":["מסקרם","טקמת","הדר","תהסס","טר","יכתית","מגבית","מיאזיה","גנבות","סאנה","המלה","נהסה","פגומן"],"field-month-relative+-1":"החודש שעבר","field-quarter-short":"רבע׳","field-sat-narrow-relative+0":"שבת","field-fri-relative+0":"יום שישי","field-sat-narrow-relative+1":"שבת הבאה","field-fri-relative+1":"יום שישי הבא","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-sun-short-relative+0":"יום א׳","field-sun-short-relative+1":"יום א׳ הבא","field-week-relative+-1":"השבוע שעבר","field-quarter-short-relative+-1":"הרבעון הקודם","months-format-abbr":["מסקרם","טקמת","הדר","תהסס","טר","יכתית","מגבית","מיאזיה","גנבות","סאנה","המלה","נהסה","פגומן"],"field-quarter-relative+0":"רבעון זה","field-minute-relative+0":"בדקה זו","field-quarter-relative+1":"הרבעון הבא","field-wed-short-relative+-1":"יום ד׳ שעבר","field-thu-short-relative+-1":"יום ה׳ שעבר","field-year-narrow-relative+-1":"השנה שעברה","field-mon-narrow-relative+-1":"יום ב׳ שעבר","field-thu-narrow-relative+-1":"יום ה׳ שעבר","field-tue-narrow-relative+-1":"יום ג׳ שעבר","field-weekOfMonth-short":"השבוע בחודש","field-wed-short-relative+0":"יום ד׳","months-standAlone-wide":["מסקרם","טקמת","הדר","תהסס","טר","יכתית","מגבית","מיאזיה","גנבות","סאנה","המלה","נהסה","פגומן"],"field-wed-short-relative+1":"יום ד׳ הבא","field-sun-relative+-1":"ביום ראשון שעבר","field-weekday":"יום בשבוע","field-day-short-relative+0":"היום","field-quarter-narrow-relative+0":"רבעון זה","field-day-short-relative+1":"מחר","field-sat-relative+0":"יום שבת","field-quarter-narrow-relative+1":"הרבעון הבא","field-day-short-relative+2":"מחרתיים","field-sat-relative+1":"יום שבת הבא","field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","months-standAlone-abbr":["מסקרם","טקמת","הדר","תהסס","טר","יכתית","מגבית","מיאזיה","גנבות","סאנה","המלה","נהסה","פגומן"],"field-dayOfYear-narrow":"יום בשנה","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","field-weekdayOfMonth-short":"יום בחודש","field-zone-narrow":"אזור","field-thu-narrow-relative+0":"יום ה׳","field-thu-narrow-relative+1":"יום ה׳ הבא","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","field-thu-relative+0":"יום חמישי","field-thu-relative+1":"יום חמישי הבא","field-fri-short-relative+-1":"יום ו׳ שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-week":"שבוע","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-quarter-narrow-relative+-1":"הרבעון הקודם","field-year-short-relative+0":"השנה","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"השנה הבאה","field-fri-short-relative+0":"יום ו׳","field-fri-short-relative+1":"יום ו׳ הבא","field-week-short-relative+-1":"השבוע שעבר","field-hour-short":"שעה","field-zone-short":"אזור","field-month-narrow":"חו׳","field-hour-narrow":"שע׳","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-era-narrow":"תקופה","field-fri-relative+-1":"יום שישי שעבר","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"יום ג׳ שעבר","field-minute-narrow":"דק׳","field-mon-narrow-relative+0":"יום ב׳","field-mon-narrow-relative+1":"יום ב׳ הבא","field-year-short-relative+-1":"השנה שעברה","field-zone":"אזור זמן","field-weekOfMonth-narrow":"השבוע בחודש","field-weekday-narrow":"יום בשבוע","field-quarter-narrow":"רבע׳","field-sun-short-relative+-1":"יום א׳ שעבר","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-weekday-short":"יום בשבוע","field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","field-day-short":"יום","field-week-narrow":"שב׳","field-era":"תקופה","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/generic.js b/lib/dojo/cldr/nls/he/generic.js
index 74146acaa..36fdc5afb 100644
--- a/lib/dojo/cldr/nls/he/generic.js
+++ b/lib/dojo/cldr/nls/he/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/he/generic",{"field-second-relative+0":"עכשיו","field-weekday":"יום בשבוע","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","dateFormatItem-GyMMMEd":"E, d בMMM y G","dateFormatItem-MMMEd":"E, d בMMM","field-tue-relative+-1":"יום שלישי שעבר","dateFormat-long":"d בMMMM y G","field-fri-relative+-1":"יום שישי שעבר","field-wed-relative+-1":"יום רביעי שעבר","dateFormatItem-yyyyQQQ":"G y QQQ","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d בMMMM y G","dateFormatItem-yyyyMEd":"E, d/M/y G","field-thu-relative+-1":"יום חמישי שעבר","dateFormatItem-Md":"d.M","field-era":"תקופה","field-year":"שנה","field-hour":"שעה","field-sat-relative+0":"יום שבת","field-sat-relative+1":"יום שבת הבא","field-day-relative+0":"היום","field-day-relative+1":"מחר","field-thu-relative+0":"יום חמישי","dateFormatItem-GyMMMd":"d בMMM y G","field-day-relative+2":"מחרתיים","field-thu-relative+1":"יום חמישי הבא","dateFormatItem-H":"H","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d בMMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d בMMM y G","field-sun-relative+0":"יום ראשון","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"יום ראשון הבא","field-minute":"דקה","field-dayperiod":"לפנה״צ/אחה״צ","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"אתמול","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} בשעה {0}","field-day-relative+-2":"שלשום","dateFormatItem-MMMd":"d בMMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} בשעה {0}","field-fri-relative+0":"יום שישי","field-fri-relative+1":"יום שישי הבא","field-day":"יום","field-zone":"אזור","dateFormatItem-yyyyMM":"MM/y G","dateFormatItem-y":"y G","field-year-relative+-1":"השנה שעברה","field-month-relative+-1":"החודש שעבר","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d.M.y G","field-month":"חודש","dateFormatItem-MMM":"LLL","field-tue-relative+0":"יום שלישי","field-tue-relative+1":"יום שלישי הבא","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","dateFormat-short":"d.M.y GGGGG","field-second":"שנייה","field-sat-relative+-1":"יום שבת שעבר","field-sun-relative+-1":"יום ראשון שעבר","field-month-relative+0":"החודש","field-month-relative+1":"החודש הבא","dateFormatItem-Ed":"E ה-d","field-week":"שבוע","dateFormat-medium":"d בMMM y G","field-year-relative+0":"השנה","field-week-relative+-1":"השבוע שעבר","dateFormatItem-yyyyM":"M.y G","field-year-relative+1":"השנה הבאה","dateFormatItem-yyyyQQQQ":"G y QQQQ","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"יום שני שעבר","dateFormatItem-yyyy":"y G","field-week-relative+0":"השבוע","field-week-relative+1":"השבוע הבא"}); \ No newline at end of file
+define("dojo/cldr/nls/he/generic",{"field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","field-tue-relative+-1":"יום שלישי שעבר","field-year":"שנה","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","dateFormatItem-ms":"mm:ss","field-minute":"דקה","field-month-narrow-relative+-1":"החודש שעבר","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","field-day-short-relative+-1":"אתמול","field-thu-short-relative+0":"יום ה׳","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"היום","field-day-short-relative+-2":"שלשום","field-thu-short-relative+1":"יום ה׳ הבא","field-day-relative+1":"מחר","field-week-narrow-relative+0":"השבוע","field-day-relative+2":"מחרתיים","field-week-narrow-relative+1":"השבוע הבא","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"יום ד׳ שעבר","field-year-narrow":"שנ׳","field-era-short":"תקופה","field-year-narrow-relative+0":"השנה","field-tue-relative+0":"יום שלישי","field-year-narrow-relative+1":"השנה הבאה","field-tue-relative+1":"יום שלישי הבא","field-weekdayOfMonth":"יום חול בחודש","field-second-short":"שנ׳","dateFormatItem-yyyyMM":"MM/y G","dateFormatItem-MMMd":"d בMMM","field-weekdayOfMonth-narrow":"יום בחודש","field-week-relative+0":"השבוע","field-month-relative+0":"החודש","field-week-relative+1":"השבוע הבא","field-month-relative+1":"החודש הבא","field-sun-narrow-relative+0":"יום א׳","field-mon-short-relative+0":"יום ב׳","field-sun-narrow-relative+1":"יום א׳ הבא","field-mon-short-relative+1":"יום ב׳ הבא","field-second-relative+0":"עכשיו","dateFormatItem-yyyyQQQ":"G y QQQ","field-weekOfMonth":"השבוע בחודש","field-month-short":"חו׳","dateFormatItem-GyMMMEd":"E, d בMMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"יום","field-dayOfYear-short":"יום בשנה","field-year-relative+-1":"השנה שעברה","field-sat-short-relative+-1":"שבת שעברה","field-hour-relative+0":"בשעה זו","dateFormatItem-yyyyMEd":"E, d/M/y G","field-wed-relative+-1":"יום רביעי שעבר","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"שבת שעברה","field-second":"שנייה","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d בMMMM y G","dateFormatItem-GyMMMd":"d בMMM y G","field-quarter":"רבעון","field-week-short":"שב׳","field-day-narrow-relative+0":"היום","field-day-narrow-relative+1":"מחר","field-tue-short-relative+0":"יום ג׳","field-tue-short-relative+1":"יום ג׳ הבא","field-month-short-relative+-1":"החודש שעבר","field-mon-relative+-1":"יום שני שעבר","dateFormatItem-GyMMM":"MMM y G","field-month":"חודש","field-day-narrow":"יום","dateFormatItem-MMM":"LLL","field-minute-short":"דק׳","field-dayperiod":"לפנה״צ/אחה״צ","field-sat-short-relative+0":"שבת","field-sat-short-relative+1":"שבת הבאה","dateFormat-medium":"d בMMM y G","dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"שנ׳","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+-1":"אתמול","field-year-short":"שנ׳","field-day-narrow-relative+-2":"שלשום","field-quarter-relative+-1":"הרבעון הקודם","dateFormatItem-yyyyMMMd":"d בMMM y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"השבוע שעבר","field-dayOfYear":"יום בשנה","field-sat-relative+-1":"יום שבת שעבר","dateTimeFormat-long":"{1} בשעה {0}","dateFormatItem-Md":"d.M","field-hour":"שעה","dateFormat-full":"EEEE, d בMMMM y G","field-month-relative+-1":"החודש שעבר","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"רבע׳","field-sat-narrow-relative+0":"שבת","field-fri-relative+0":"יום שישי","field-sat-narrow-relative+1":"שבת הבאה","field-fri-relative+1":"יום שישי הבא","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-sun-short-relative+0":"יום א׳","field-sun-short-relative+1":"יום א׳ הבא","field-week-relative+-1":"השבוע שעבר","field-quarter-short-relative+-1":"הרבעון הקודם","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"רבעון זה","field-minute-relative+0":"בדקה זו","field-quarter-relative+1":"הרבעון הבא","field-wed-short-relative+-1":"יום ד׳ שעבר","dateFormat-short":"d.M.y GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"השנה שעברה","field-thu-short-relative+-1":"יום ה׳ שעבר","dateFormatItem-yyyyMMMEd":"E, d בMMM y G","field-mon-narrow-relative+-1":"יום ב׳ שעבר","dateFormatItem-MMMMd":"MMMM d","field-thu-narrow-relative+-1":"יום ה׳ שעבר","dateFormatItem-E":"ccc","dateFormatItem-H":"H","field-weekOfMonth-short":"השבוע בחודש","field-tue-narrow-relative+-1":"יום ג׳ שעבר","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"יום ד׳","field-wed-short-relative+1":"יום ד׳ הבא","field-sun-relative+-1":"ביום ראשון שעבר","dateTimeFormat-full":"{1} בשעה {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"יום בשבוע","field-day-short-relative+0":"היום","field-quarter-narrow-relative+0":"רבעון זה","field-day-short-relative+1":"מחר","field-sat-relative+0":"יום שבת","field-quarter-narrow-relative+1":"הרבעון הבא","dateFormatItem-h":"h a","field-day-short-relative+2":"מחרתיים","field-sat-relative+1":"יום שבת הבא","field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","field-dayOfYear-narrow":"יום בשנה","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","field-weekdayOfMonth-short":"יום בחודש","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"אזור","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"יום ה׳","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","field-thu-narrow-relative+1":"יום ה׳ הבא","field-thu-relative+0":"יום חמישי","field-thu-relative+1":"יום חמישי הבא","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"יום ו׳ שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-week":"שבוע","dateFormatItem-Ed":"E ה-d","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-quarter-narrow-relative+-1":"הרבעון הקודם","field-year-short-relative+0":"השנה","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"השנה הבאה","field-fri-short-relative+0":"יום ו׳","field-fri-short-relative+1":"יום ו׳ הבא","field-week-short-relative+-1":"השבוע שעבר","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-hour-short":"שעה","field-zone-short":"אזור","field-month-narrow":"חו׳","field-hour-narrow":"שע׳","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-era-narrow":"תקופה","field-fri-relative+-1":"יום שישי שעבר","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"יום ג׳ שעבר","field-minute-narrow":"דק׳","field-mon-narrow-relative+0":"יום ב׳","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"יום ב׳ הבא","field-year-short-relative+-1":"השנה שעברה","field-zone":"אזור זמן","dateFormatItem-MMMEd":"E, d בMMM","field-weekOfMonth-narrow":"השבוע בחודש","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"יום בשבוע","field-quarter-narrow":"רבע׳","field-sun-short-relative+-1":"יום א׳ שעבר","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-weekday-short":"יום בשבוע","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","dateFormatItem-Gy":"y G","field-day-short":"יום","field-week-narrow":"שב׳","field-era":"תקופה","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/gregorian.js b/lib/dojo/cldr/nls/he/gregorian.js
index 2f21cc47e..6de46128f 100644
--- a/lib/dojo/cldr/nls/he/gregorian.js
+++ b/lib/dojo/cldr/nls/he/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/he/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"עכשיו","quarters-standAlone-narrow":["ר1","ר2","ר3","ר4"],"field-weekday":"יום בשבוע","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d.M.y","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","dateFormatItem-GyMMMEd":"E, d בMMM y G","dateFormatItem-MMMEd":"E, d בMMM","eraNarrow":["לפנה״ס","לספירה"],"dateFormatItem-yMM":"M.y","field-tue-relative+-1":"יום שלישי שעבר","days-format-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormat-long":"d בMMMM y","field-fri-relative+-1":"יום שישי שעבר","field-wed-relative+-1":"יום רביעי שעבר","months-format-wide":["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"אחה״צ","dateFormat-full":"EEEE, d בMMMM y","field-thu-relative+-1":"יום חמישי שעבר","dateFormatItem-Md":"d.M","dateFormatItem-yMd":"d.M.y","field-era":"תקופה","dateFormatItem-yM":"M.y","months-standAlone-wide":["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"timeFormat-short":"H:mm","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-yQQQQ":"QQQQ y","timeFormat-long":"H:mm:ss z","field-year":"שנה","dateFormatItem-yMMM":"MMM y","field-hour":"שעה","months-format-abbr":["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],"field-sat-relative+0":"יום שבת","field-sat-relative+1":"יום שבת הבא","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"היום","field-thu-relative+0":"יום חמישי","field-day-relative+1":"מחר","field-thu-relative+1":"יום חמישי הבא","dateFormatItem-GyMMMd":"d בMMM y G","field-day-relative+2":"מחרתיים","dateFormatItem-H":"H","months-standAlone-abbr":["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],"quarters-format-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"timeFormat-medium":"H:mm:ss","field-sun-relative+0":"יום ראשון","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"יום ראשון הבא","quarters-standAlone-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"eraAbbr":["לפנה״ס","לספירה"],"field-minute":"דקה","field-dayperiod":"לפנה״צ/אחה״צ","days-standAlone-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"אתמול","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} בשעה {0}","field-day-relative+-2":"שלשום","dateFormatItem-MMMd":"d בMMM","dateFormatItem-MEd":"E, d.M","dateTimeFormat-full":"{1} בשעה {0}","field-fri-relative+0":"יום שישי","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"יום שישי הבא","field-day":"יום","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"field-zone":"אזור","dateFormatItem-y":"y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"השנה שעברה","field-month-relative+-1":"החודש שעבר","dateFormatItem-hm":"h:mm a","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"dateFormatItem-yMMMd":"d בMMM y","eraNames":["לפני הספירה","לספירה"],"days-format-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"days-standAlone-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormatItem-MMM":"LLL","field-month":"חודש","field-tue-relative+0":"יום שלישי","field-tue-relative+1":"יום שלישי הבא","dayPeriods-format-wide-am":"לפנה״צ","dateFormatItem-EHm":"E H:mm","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","dateFormat-short":"d.M.y","dateFormatItem-EHms":"E H:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"שנייה","field-sat-relative+-1":"יום שבת שעבר","dateFormatItem-yMMMEd":"E, d בMMM y","field-sun-relative+-1":"יום ראשון שעבר","field-month-relative+0":"החודש","field-month-relative+1":"החודש הבא","dateFormatItem-Ed":"E ה-d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"שבוע","dateFormat-medium":"d בMMM y","field-year-relative+0":"השנה","field-week-relative+-1":"השבוע שעבר","field-year-relative+1":"השנה הבאה","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"יום שני שעבר","field-week-relative+0":"השבוע","field-week-relative+1":"השבוע הבא"}); \ No newline at end of file
+define("dojo/cldr/nls/he/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"יום ה׳","field-thu-narrow-relative+1":"יום ה׳ הבא","field-sun-narrow-relative+0":"יום א׳","field-sun-narrow-relative+1":"יום א׳ הבא","months-format-wide":["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"H:mm:ss","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא","eraNarrow":["לפנה״ס","לספירה"],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d בMMM y","dayPeriods-format-abbr-night1":"לילה","dayPeriods-format-abbr-night2":"לפנות בוקר","dayPeriods-format-narrow-evening1":"בערב","days-standAlone-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dayPeriods-format-abbr-afternoon1":"צהריים","dayPeriods-format-wide-evening1":"בערב","dayPeriods-format-abbr-afternoon2":"אחר הצהריים","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"יום ד׳ שעבר","dayPeriods-standAlone-wide-evening1":"ערב","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-yMM":"M.y","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"ערב","dayPeriods-standAlone-abbr-afternoon1":"צהריים","dayPeriods-standAlone-abbr-afternoon2":"אחה״צ","field-thu-relative+0":"יום חמישי","dayPeriods-standAlone-abbr-night1":"לילה","field-thu-relative+1":"יום חמישי הבא","dayPeriods-standAlone-abbr-night2":"לפנות בוקר","dayPeriods-format-wide-am":"לפנה״צ","field-fri-relative+0":"יום שישי","field-fri-relative+1":"יום שישי הבא","dateFormatItem-yMd":"d.M.y","field-thu-narrow-relative+-1":"יום ה׳ שעבר","field-quarter-relative+0":"רבעון זה","field-quarter-relative+1":"הרבעון הבא","field-sun-short-relative+0":"יום א׳","timeFormat-short":"H:mm","field-sun-short-relative+1":"יום א׳ הבא","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"בצהריים","dateFormatItem-Md":"d.M","dayPeriods-format-narrow-afternoon2":"אחה״צ","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"שב׳","field-hour-relative+0":"בשעה זו","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-mon-narrow-relative+-1":"יום ב׳ שעבר","field-minute-narrow":"דק׳","field-thu-short-relative+0":"יום ה׳","field-mon-relative+0":"יום שני","field-thu-short-relative+1":"יום ה׳ הבא","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+0":"היום","field-era-short":"תקופה","field-day-narrow-relative+1":"מחר","field-sat-narrow-relative+0":"שבת","timeFormat-long":"H:mm:ss z","field-sat-narrow-relative+1":"שבת הבאה","field-week-narrow-relative+0":"השבוע","field-week-narrow-relative+1":"השבוע הבא","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-month":"חודש","months-standAlone-wide":["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],"field-weekday-narrow":"יום בשבוע","dayPeriods-standAlone-narrow-afternoon1":"צהריים","dayPeriods-standAlone-narrow-afternoon2":"אחה״צ","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","dayPeriods-format-abbr-evening1":"ערב","dayPeriods-format-narrow-midnight":"חצות","dayPeriods-format-wide-midnight":"חצות","field-tue-relative+0":"יום שלישי","field-tue-relative+1":"יום שלישי הבא","dayPeriods-standAlone-abbr-evening1":"ערב","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"חצות","field-year-narrow":"שנ׳","field-tue-short-relative+0":"יום ג׳","dayPeriods-standAlone-narrow-midnight":"חצות","field-tue-short-relative+1":"יום ג׳ הבא","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","dateTimeFormat-full":"{1} בשעה {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"H","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","dateFormatItem-M":"L","field-wed-short-relative+0":"יום ד׳","field-fri-short-relative+0":"יום ו׳","field-wed-short-relative+1":"יום ד׳ הבא","field-fri-short-relative+1":"יום ו׳ הבא","field-weekOfMonth-short":"השבוע בחודש","field-quarter-short-relative+-1":"הרבעון הקודם","field-year-short-relative+-1":"השנה שעברה","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"בלילה","dayPeriods-format-wide-night2":"לפנות בוקר","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"הרבעון הקודם","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"אחה״צ","dateFormatItem-h":"h a","quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"field-weekOfMonth-narrow":"השבוע בחודש","dateFormatItem-y":"y","field-minute-relative+0":"בדקה זו","field-year-short-relative+0":"השנה","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"השנה הבאה","field-weekday":"יום בשבוע","dayPeriods-format-narrow-pm":"אחה״צ","field-tue-narrow-relative+-1":"יום ג׳ שעבר","dateFormatItem-yMEd":"E, d.M.y","dayPeriods-standAlone-wide-night1":"לילה","dayPeriods-standAlone-wide-night2":"לפנות בוקר","field-year-narrow-relative+-1":"השנה שעברה","field-sat-relative+-1":"יום שבת שעבר","dayPeriods-format-abbr-midnight":"חצות","dayPeriods-format-narrow-morning1":"בבוקר","dayPeriods-format-wide-morning1":"בבוקר","dayPeriods-standAlone-abbr-midnight":"חצות","dayPeriods-standAlone-narrow-pm":"אחה״צ","dayPeriods-standAlone-wide-morning1":"בוקר","field-mon-narrow-relative+0":"יום ב׳","field-mon-narrow-relative+1":"יום ב׳ הבא","field-second":"שנייה","dateFormatItem-yMMMEd":"E, d בMMM y","field-year-relative+-1":"השנה שעברה","field-weekdayOfMonth-short":"יום בחודש","dateFormat-short":"d.M.y","eraNames":["לפני הספירה","לספירה"],"field-second-short":"שנ׳","field-thu-short-relative+-1":"יום ה׳ שעבר","field-zone":"אזור זמן","field-dayperiod-narrow":"AM/PM","field-sun-short-relative+-1":"יום א׳ שעבר","dayPeriods-standAlone-narrow-morning1":"בוקר","eraAbbr":["לפנה״ס","לספירה"],"field-week-short":"שב׳","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"היום","field-day-relative+1":"מחר","field-day-relative+2":"מחרתיים","field-day-short-relative+0":"היום","field-dayOfYear-short":"יום בשנה","field-day-short-relative+1":"מחר","dateFormat-long":"d בMMMM y","field-day-short-relative+2":"מחרתיים","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-second-relative+0":"עכשיו","field-quarter-relative+-1":"הרבעון הקודם","dayPeriods-format-narrow-night1":"בלילה","dayPeriods-format-narrow-night2":"לפנות בוקר","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-standAlone-narrow-night1":"לילה","dayPeriods-standAlone-narrow-night2":"לפנות בוקר","field-week-relative+-1":"השבוע שעבר","dayPeriods-format-abbr-morning1":"בוקר","field-month-relative+-1":"החודש שעבר","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"שנה","field-era":"תקופה","dayPeriods-standAlone-abbr-morning1":"בוקר","days-standAlone-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"אתמול","field-day-short-relative+-2":"שלשום","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"שעה","field-dayOfYear-narrow":"יום בשנה","field-quarter":"רבעון","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-day":"יום","field-mon-relative+-1":"יום שני שעבר","field-dayOfYear":"יום בשנה","dateFormat-medium":"d בMMM y","dateTimeFormat-short":"{1}, {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d בMMM y G","dateFormatItem-MEd":"E, d.M","field-tue-short-relative+-1":"יום ג׳ שעבר","field-year-short":"שנ׳","field-month-short":"חו׳","dateFormatItem-MMMEd":"E, d בMMM","dayPeriods-format-wide-afternoon1":"בצהריים","dateFormatItem-MMMd":"d בMMM","dayPeriods-format-wide-afternoon2":"אחר הצהריים","dateFormatItem-Bh":"h B","months-format-abbr":["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],"dayPeriods-format-abbr-am":"לפנה״צ","field-sat-relative+0":"יום שבת","field-sat-relative+1":"יום שבת הבא","dayPeriods-format-wide-pm":"אחה״צ","field-zone-short":"אזור","days-standAlone-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","dayPeriods-standAlone-wide-afternoon1":"צהריים","dayPeriods-standAlone-wide-afternoon2":"אחר הצהריים","field-fri-short-relative+-1":"יום ו׳ שעבר","field-month-narrow":"חו׳","dayPeriods-format-narrow-am":"לפנה״צ","field-month-narrow-relative+-1":"החודש שעבר","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"field-weekday-short":"יום בשבוע","field-day-narrow-relative+-1":"אתמול","field-day-narrow-relative+-2":"שלשום","field-quarter-short":"רבע׳","days-format-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormatItem-EHm":"E H:mm","field-quarter-narrow":"רבע׳","field-mon-short-relative+0":"יום ב׳","field-mon-short-relative+1":"יום ב׳ הבא","field-dayperiod-short":"AM/PM","dayPeriods-standAlone-narrow-am":"לפנה״צ","field-week-narrow-relative+-1":"השבוע שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","timeFormat-medium":"H:mm:ss","field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","dateFormatItem-Ed":"E ה-d","field-wed-relative+-1":"יום רביעי שעבר","field-weekOfMonth":"השבוע בחודש","field-weekdayOfMonth-narrow":"יום בחודש","dayPeriods-standAlone-wide-am":"AM","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"יום שישי שעבר","field-minute":"דקה","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"field-day-short":"יום","field-dayperiod":"לפנה״צ/אחה״צ","field-hour-short":"שעה","months-standAlone-abbr":["ינו׳","פבר׳","מרץ","אפר׳","מאי","יוני","יולי","אוג׳","ספט׳","אוק׳","נוב׳","דצמ׳"],"field-second-narrow":"שנ׳","field-month-relative+0":"החודש","field-month-relative+1":"החודש הבא","dateFormat-full":"EEEE, d בMMMM y","field-era-narrow":"תקופה","field-sat-short-relative+-1":"שבת שעברה","field-week-short-relative+-1":"השבוע שעבר","dateTimeFormat-long":"{1} בשעה {0}","dateFormatItem-yM":"M.y","field-sun-relative+-1":"ביום ראשון שעבר","field-wed-short-relative+-1":"יום ד׳ שעבר","field-weekdayOfMonth":"יום חול בחודש","field-quarter-narrow-relative+0":"רבעון זה","dateFormatItem-GyMMMEd":"E, d בMMM y G","field-quarter-narrow-relative+1":"הרבעון הבא","field-sat-short-relative+0":"שבת","field-hour-narrow":"שע׳","field-sat-short-relative+1":"שבת הבאה","field-year-narrow-relative+0":"השנה","field-year-narrow-relative+1":"השנה הבאה","dateFormatItem-Gy":"y G","field-zone-narrow":"אזור","field-tue-relative+-1":"יום שלישי שעבר","field-minute-short":"דק׳","dateFormatItem-yw":"שבוע w בשנת Y","dateFormatItem-Hm":"H:mm","field-week-relative+0":"השבוע","field-week-relative+1":"השבוע הבא","dateFormatItem-MMM":"LLL","field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","field-sat-narrow-relative+-1":"שבת שעברה","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dateFormatItem-MMMMW":"שבוע W בMMMM","field-month-short-relative+-1":"החודש שעבר","dateFormatItem-EHms":"E H:mm:ss","dateFormatItem-MMMMd":"d בMMMM","field-week":"שבוע","field-day-narrow":"יום"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/hebrew.js b/lib/dojo/cldr/nls/he/hebrew.js
index 52e3066be..f7bd9613a 100644
--- a/lib/dojo/cldr/nls/he/hebrew.js
+++ b/lib/dojo/cldr/nls/he/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/he/hebrew",{"days-standAlone-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"months-format-narrow":["תש׳","חש׳","כס׳","טב׳","שב׳","א״א","אד׳","ני׳","אי׳","סי׳","תמ׳","אב","אל׳"],"field-second-relative+0":"עכשיו","quarters-standAlone-narrow":["ר1","ר2","ר3","ר4"],"field-weekday":"יום בשבוע","months-standAlone-narrow-leap":"א״ב","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","dateFormatItem-GyMMMEd":"E, d MMMM y G","dateFormatItem-MMMEd":"E, d בMMMM","eraNarrow":["לבה״ע"],"field-tue-relative+-1":"יום שלישי שעבר","days-format-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormat-long":"d בMMMM y","field-fri-relative+-1":"יום שישי שעבר","field-wed-relative+-1":"יום רביעי שעבר","months-format-wide":["תשרי","חשון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיון","תמוז","אב","אלול"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"אחה״צ","dateFormat-full":"EEEE, d בMMMM y","dateFormatItem-yyyyMEd":"E, d בMMMM y","field-thu-relative+-1":"יום חמישי שעבר","dateFormatItem-Md":"d בMMMM","field-era":"תקופה","months-standAlone-wide":["תשרי","חשון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיון","תמוז","אב","אלול"],"quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"field-year":"שנה","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"שעה","months-format-abbr-leap":"אדר ב׳","months-format-abbr":["תשרי","חשון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיון","תמוז","אב","אלול"],"field-sat-relative+0":"יום שבת","field-sat-relative+1":"יום שבת הבא","field-day-relative+0":"היום","field-thu-relative+0":"יום חמישי","field-day-relative+1":"מחר","field-thu-relative+1":"יום חמישי הבא","dateFormatItem-GyMMMd":"d MMMM y G","field-day-relative+2":"מחרתיים","months-standAlone-abbr":["תשרי","חשוון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיון","תמוז","אב","אלול"],"quarters-format-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d בMMMM y","dateFormatItem-M":"MMMM","days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-yyyyMMM":"MMMM y","dateFormatItem-yyyyMMMd":"d בMMMM y","dateFormatItem-MMMMd":"d בMMMM","months-standAlone-wide-leap":"אדר ב׳","field-sun-relative+0":"יום ראשון","field-sun-relative+1":"יום ראשון הבא","quarters-standAlone-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"months-format-narrow-leap":"א״ב","eraAbbr":["לבה״ע"],"field-minute":"דקה","field-dayperiod":"לפנה״צ/אחה״צ","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","dateFormatItem-MMMd":"d בMMMM","dateFormatItem-MEd":"E, d בMMMM","field-fri-relative+0":"יום שישי","field-fri-relative+1":"יום שישי הבא","field-day":"יום","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"field-zone":"אזור","months-standAlone-abbr-leap":"אדר ב׳","dateFormatItem-y":"y G","months-standAlone-narrow":["תש׳","חש׳","כס׳","טב׳","שב׳","א״א","אד׳","ני׳","אי׳","סי׳","תמ׳","אב","אל׳"],"field-year-relative+-1":"השנה שעברה","field-month-relative+-1":"החודש שעבר","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"eraNames":["לבה״ע"],"days-format-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormatItem-yyyyMd":"d בMMMM y","field-month":"חודש","dateFormatItem-MMM":"MMMM","days-standAlone-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-tue-relative+0":"יום שלישי","field-tue-relative+1":"יום שלישי הבא","dayPeriods-format-wide-am":"לפנה״צ","dateFormatItem-MMMMEd":"E, d בMMMM","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","dateFormat-short":"d בMMMM y","field-second":"שנייה","field-sat-relative+-1":"יום שבת שעבר","field-sun-relative+-1":"יום ראשון שעבר","field-month-relative+0":"החודש","field-month-relative+1":"החודש הבא","dateFormatItem-Ed":"E ה-d","field-week":"שבוע","dateFormat-medium":"d בMMMM y","field-year-relative+0":"השנה","field-week-relative+-1":"השבוע שעבר","dateFormatItem-yyyyM":"MMMM y","field-year-relative+1":"השנה הבאה","dateTimeFormat-short":"{1}, {0}","months-format-wide-leap":"אדר ב׳","dateFormatItem-GyMMM":"MMMM y G","field-mon-relative+-1":"יום שני שעבר","dateFormatItem-yyyy":"y G","field-week-relative+0":"השבוע","field-week-relative+1":"השבוע הבא"}); \ No newline at end of file
+define("dojo/cldr/nls/he/hebrew",{"field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","field-tue-relative+-1":"יום שלישי שעבר","field-year":"שנה","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","timeFormat-short":"H:mm","field-minute":"דקה","field-month-narrow-relative+-1":"החודש שעבר","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","field-thu-short-relative+0":"יום ה׳","field-day-short-relative+-1":"אתמול","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"יום ה׳ הבא","field-day-relative+0":"היום","field-day-short-relative+-2":"שלשום","field-day-relative+1":"מחר","field-week-narrow-relative+0":"השבוע","field-day-relative+2":"מחרתיים","field-week-narrow-relative+1":"השבוע הבא","field-wed-narrow-relative+-1":"יום ד׳ שעבר","field-year-narrow":"שנ׳","field-era-short":"תקופה","field-year-narrow-relative+0":"השנה","field-tue-relative+0":"יום שלישי","field-year-narrow-relative+1":"השנה הבאה","field-tue-relative+1":"יום שלישי הבא","field-weekdayOfMonth":"יום חול בחודש","field-second-short":"שנ׳","dayPeriods-format-narrow-am":"לפנה״צ","dateFormatItem-MMMd":"d בMMMM","field-weekdayOfMonth-narrow":"יום בחודש","dayPeriods-format-abbr-am":"לפנה״צ","field-week-relative+0":"השבוע","field-month-relative+0":"החודש","field-week-relative+1":"השבוע הבא","field-month-relative+1":"החודש הבא","field-sun-narrow-relative+0":"יום א׳","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"יום ב׳","field-sun-narrow-relative+1":"יום א׳ הבא","field-mon-short-relative+1":"יום ב׳ הבא","field-second-relative+0":"עכשיו","months-standAlone-narrow":["תש׳","חש׳","כס׳","טב׳","שב׳","א״א","אד׳","ני׳","אי׳","סי׳","תמ׳","אב","אל׳"],"eraNames":["לבריאת העולם"],"field-weekOfMonth":"השבוע בחודש","field-month-short":"חו׳","dateFormatItem-GyMMMEd":"E, d בMMMM y G","dateFormatItem-yyyyMd":"d בMMMM y","field-day":"יום","field-dayOfYear-short":"יום בשנה","field-year-relative+-1":"השנה שעברה","dayPeriods-format-wide-am":"לפנה״צ","field-sat-short-relative+-1":"שבת שעברה","field-hour-relative+0":"בשעה זו","dateFormatItem-yyyyMEd":"E, d בMMMM y","field-wed-relative+-1":"יום רביעי שעבר","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"שבת שעברה","field-second":"שנייה","days-standAlone-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormat-long":"d בMMMM y","dateFormatItem-GyMMMd":"d בMMMM y G","field-quarter":"רבעון","field-week-short":"שב׳","field-day-narrow-relative+0":"היום","field-day-narrow-relative+1":"מחר","quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"days-format-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-tue-short-relative+0":"יום ג׳","field-tue-short-relative+1":"יום ג׳ הבא","field-month-short-relative+-1":"החודש שעבר","field-mon-relative+-1":"יום שני שעבר","dateFormatItem-GyMMM":"MMMM y G","field-month":"חודש","field-day-narrow":"יום","dateFormatItem-MMM":"MMMM","field-minute-short":"דק׳","field-dayperiod":"לפנה״צ/אחה״צ","field-sat-short-relative+0":"שבת","field-sat-short-relative+1":"שבת הבאה","dayPeriods-format-narrow-pm":"אחה״צ","dateFormat-medium":"d בMMMM y","dateFormatItem-yyyyMMMM":"MMMM y","eraAbbr":["AM"],"dayPeriods-format-abbr-pm":"אחה״צ","dateFormatItem-yyyyM":"MMMM y","field-second-narrow":"שנ׳","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+-1":"אתמול","field-year-short":"שנ׳","field-day-narrow-relative+-2":"שלשום","months-format-narrow":["תש׳","חש׳","כס׳","טב׳","שב׳","א״א","אד׳","ני׳","אי׳","סי׳","תמ׳","אב","אל׳"],"field-quarter-relative+-1":"הרבעון הקודם","dateFormatItem-yyyyMMMd":"d בMMMM y","field-dayperiod-narrow":"AM/PM","dayPeriods-standAlone-narrow-am":"לפנה״צ","field-week-narrow-relative+-1":"השבוע שעבר","days-format-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dayPeriods-format-wide-pm":"אחה״צ","field-dayOfYear":"יום בשנה","field-sat-relative+-1":"יום שבת שעבר","dateTimeFormat-long":"{1} בשעה {0}","dateFormatItem-Md":"d בMMMM","field-hour":"שעה","months-format-wide":["תשרי","חשוון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיוון","תמוז","אב","אלול"],"dateFormat-full":"EEEE, d בMMMM y","field-month-relative+-1":"החודש שעבר","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"רבע׳","field-sat-narrow-relative+0":"שבת","field-fri-relative+0":"יום שישי","field-sat-narrow-relative+1":"שבת הבאה","field-fri-relative+1":"יום שישי הבא","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-sun-short-relative+0":"יום א׳","field-sun-short-relative+1":"יום א׳ הבא","field-week-relative+-1":"השבוע שעבר","field-quarter-short-relative+-1":"הרבעון הקודם","months-format-abbr":["תשרי","חשון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיון","תמוז","אב","אלול"],"field-quarter-relative+0":"רבעון זה","field-minute-relative+0":"בדקה זו","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"הרבעון הבא","field-wed-short-relative+-1":"יום ד׳ שעבר","dateFormat-short":"d בMMMM y","field-thu-short-relative+-1":"יום ה׳ שעבר","field-year-narrow-relative+-1":"השנה שעברה","days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-yyyyMMMEd":"E, d בMMMM y","field-mon-narrow-relative+-1":"יום ב׳ שעבר","dateFormatItem-MMMMd":"d בMMMM","field-thu-narrow-relative+-1":"יום ה׳ שעבר","field-tue-narrow-relative+-1":"יום ג׳ שעבר","dateFormatItem-H":"H","field-weekOfMonth-short":"השבוע בחודש","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"אחה״צ","dateFormatItem-M":"MMMM","months-standAlone-wide":["תשרי","חשוון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיוון","תמוז","אב","אלול"],"field-wed-short-relative+0":"יום ד׳","field-wed-short-relative+1":"יום ד׳ הבא","field-sun-relative+-1":"ביום ראשון שעבר","dateFormatItem-MMMMEd":"E, d בMMMM","days-standAlone-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"dateTimeFormat-full":"{1} בשעה {0}","months-format-abbr-leap":"אדר ב׳","field-weekday":"יום בשבוע","months-standAlone-narrow-leap":"א״ב","field-day-short-relative+0":"היום","field-quarter-narrow-relative+0":"רבעון זה","field-day-short-relative+1":"מחר","field-sat-relative+0":"יום שבת","field-quarter-narrow-relative+1":"הרבעון הבא","field-day-short-relative+2":"מחרתיים","field-sat-relative+1":"יום שבת הבא","field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","months-standAlone-abbr":["תשרי","חשון","כסלו","טבת","שבט","אדר א׳","אדר","ניסן","אייר","סיון","תמוז","אב","אלול"],"months-format-wide-leap":"אדר ב׳","months-format-narrow-leap":"א״ב","field-dayOfYear-narrow":"יום בשנה","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","field-weekdayOfMonth-short":"יום בחודש","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E, d בMMMM","field-zone-narrow":"אזור","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"יום ה׳","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","field-thu-narrow-relative+1":"יום ה׳ הבא","field-thu-relative+0":"יום חמישי","field-thu-relative+1":"יום חמישי הבא","field-fri-short-relative+-1":"יום ו׳ שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-week":"שבוע","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-quarter-narrow-relative+-1":"הרבעון הקודם","field-year-short-relative+0":"השנה","dateFormatItem-yyyyMMM":"MMMM y","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"השנה הבאה","field-fri-short-relative+0":"יום ו׳","field-fri-short-relative+1":"יום ו׳ הבא","days-standAlone-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-week-short-relative+-1":"השבוע שעבר","months-standAlone-abbr-leap":"אדר ב׳","field-hour-short":"שעה","field-zone-short":"אזור","field-month-narrow":"חו׳","field-hour-narrow":"שע׳","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-era-narrow":"תקופה","field-fri-relative+-1":"יום שישי שעבר","eraNarrow":"AM","field-tue-short-relative+-1":"יום ג׳ שעבר","field-minute-narrow":"דק׳","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"field-mon-narrow-relative+0":"יום ב׳","field-mon-narrow-relative+1":"יום ב׳ הבא","field-year-short-relative+-1":"השנה שעברה","field-zone":"אזור זמן","dateFormatItem-MMMEd":"E, d בMMMM","field-weekOfMonth-narrow":"השבוע בחודש","field-weekday-narrow":"יום בשבוע","months-standAlone-wide-leap":"אדר ב׳","field-quarter-narrow":"רבע׳","field-sun-short-relative+-1":"יום א׳ שעבר","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-weekday-short":"יום בשבוע","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","dateFormatItem-Gy":"y G","field-day-short":"יום","field-week-narrow":"שב׳","field-era":"תקופה","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/indian.js b/lib/dojo/cldr/nls/he/indian.js
new file mode 100644
index 000000000..f8fda97c0
--- /dev/null
+++ b/lib/dojo/cldr/nls/he/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/he/indian",{"field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","field-tue-relative+-1":"יום שלישי שעבר","field-year":"שנה","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","field-minute":"דקה","field-month-narrow-relative+-1":"החודש שעבר","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","field-thu-short-relative+0":"יום ה׳","field-day-short-relative+-1":"אתמול","field-thu-short-relative+1":"יום ה׳ הבא","field-day-relative+0":"היום","field-day-short-relative+-2":"שלשום","field-day-relative+1":"מחר","field-week-narrow-relative+0":"השבוע","field-day-relative+2":"מחרתיים","field-week-narrow-relative+1":"השבוע הבא","field-wed-narrow-relative+-1":"יום ד׳ שעבר","field-year-narrow":"שנ׳","field-era-short":"תקופה","field-year-narrow-relative+0":"השנה","field-tue-relative+0":"יום שלישי","field-year-narrow-relative+1":"השנה הבאה","field-tue-relative+1":"יום שלישי הבא","field-weekdayOfMonth":"יום חול בחודש","field-second-short":"שנ׳","field-weekdayOfMonth-narrow":"יום בחודש","field-week-relative+0":"השבוע","field-month-relative+0":"החודש","field-week-relative+1":"השבוע הבא","field-month-relative+1":"החודש הבא","field-sun-narrow-relative+0":"יום א׳","field-mon-short-relative+0":"יום ב׳","field-sun-narrow-relative+1":"יום א׳ הבא","field-mon-short-relative+1":"יום ב׳ הבא","field-second-relative+0":"עכשיו","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["סאקא"],"field-weekOfMonth":"השבוע בחודש","field-month-short":"חו׳","field-day":"יום","field-dayOfYear-short":"יום בשנה","field-year-relative+-1":"השנה שעברה","field-sat-short-relative+-1":"שבת שעברה","field-hour-relative+0":"בשעה זו","field-wed-relative+-1":"יום רביעי שעבר","field-sat-narrow-relative+-1":"שבת שעברה","field-second":"שנייה","field-quarter":"רבעון","field-week-short":"שב׳","field-day-narrow-relative+0":"היום","field-day-narrow-relative+1":"מחר","field-tue-short-relative+0":"יום ג׳","field-tue-short-relative+1":"יום ג׳ הבא","field-month-short-relative+-1":"החודש שעבר","field-mon-relative+-1":"יום שני שעבר","field-month":"חודש","field-day-narrow":"יום","field-minute-short":"דק׳","field-dayperiod":"לפנה״צ/אחה״צ","field-sat-short-relative+0":"שבת","field-sat-short-relative+1":"שבת הבאה","eraAbbr":["סאקא"],"field-second-narrow":"שנ׳","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+-1":"אתמול","field-year-short":"שנ׳","field-day-narrow-relative+-2":"שלשום","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"הרבעון הקודם","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"השבוע שעבר","field-dayOfYear":"יום בשנה","field-sat-relative+-1":"יום שבת שעבר","field-hour":"שעה","months-format-wide":["צ׳ייטרה","וייסקהה","ג׳יאסטהה","אשדהה","סראוואנה","בהרדה","אסווינה","קרטיקה","אגרהיאנה","פאוסה","מאגהה","פאלגונה"],"field-month-relative+-1":"החודש שעבר","field-quarter-short":"רבע׳","field-sat-narrow-relative+0":"שבת","field-fri-relative+0":"יום שישי","field-sat-narrow-relative+1":"שבת הבאה","field-fri-relative+1":"יום שישי הבא","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-sun-short-relative+0":"יום א׳","field-sun-short-relative+1":"יום א׳ הבא","field-week-relative+-1":"השבוע שעבר","field-quarter-short-relative+-1":"הרבעון הקודם","months-format-abbr":["צ׳ייטרה","וייסקהה","ג׳יאסטהה","אשדהה","סראוואנה","בהרדה","אסווינה","קרטיקה","אגרהיאנה","פאוסה","מאגהה","פלגונה"],"field-quarter-relative+0":"רבעון זה","field-minute-relative+0":"בדקה זו","field-quarter-relative+1":"הרבעון הבא","field-wed-short-relative+-1":"יום ד׳ שעבר","field-thu-short-relative+-1":"יום ה׳ שעבר","field-year-narrow-relative+-1":"השנה שעברה","field-mon-narrow-relative+-1":"יום ב׳ שעבר","field-thu-narrow-relative+-1":"יום ה׳ שעבר","field-tue-narrow-relative+-1":"יום ג׳ שעבר","field-weekOfMonth-short":"השבוע בחודש","field-wed-short-relative+0":"יום ד׳","months-standAlone-wide":["צ׳ייטרה","וייסקהה","ג׳יאסטהה","אשדהה","סראוואנה","בהרדה","אסווינה","קרטיקה","אגרהיאנה","פאוסה","מאגהה","פאלגונה"],"field-wed-short-relative+1":"יום ד׳ הבא","field-sun-relative+-1":"ביום ראשון שעבר","field-weekday":"יום בשבוע","field-day-short-relative+0":"היום","field-quarter-narrow-relative+0":"רבעון זה","field-day-short-relative+1":"מחר","field-sat-relative+0":"יום שבת","field-quarter-narrow-relative+1":"הרבעון הבא","field-day-short-relative+2":"מחרתיים","field-sat-relative+1":"יום שבת הבא","field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","months-standAlone-abbr":["צ׳ייטרה","וייסקהה","ג׳יאסטהה","אשדהה","סראוואנה","בהרדה","אסווינה","קרטיקה","אגרהיאנה","פאוסה","מאגהה","פלגונה"],"field-dayOfYear-narrow":"יום בשנה","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","field-weekdayOfMonth-short":"יום בחודש","field-zone-narrow":"אזור","field-thu-narrow-relative+0":"יום ה׳","field-thu-narrow-relative+1":"יום ה׳ הבא","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","field-thu-relative+0":"יום חמישי","field-thu-relative+1":"יום חמישי הבא","field-fri-short-relative+-1":"יום ו׳ שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-week":"שבוע","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-quarter-narrow-relative+-1":"הרבעון הקודם","field-year-short-relative+0":"השנה","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"השנה הבאה","field-fri-short-relative+0":"יום ו׳","field-fri-short-relative+1":"יום ו׳ הבא","field-week-short-relative+-1":"השבוע שעבר","field-hour-short":"שעה","field-zone-short":"אזור","field-month-narrow":"חו׳","field-hour-narrow":"שע׳","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-era-narrow":"תקופה","field-fri-relative+-1":"יום שישי שעבר","eraNarrow":"סאקא","field-tue-short-relative+-1":"יום ג׳ שעבר","field-minute-narrow":"דק׳","field-mon-narrow-relative+0":"יום ב׳","field-mon-narrow-relative+1":"יום ב׳ הבא","field-year-short-relative+-1":"השנה שעברה","field-zone":"אזור זמן","field-weekOfMonth-narrow":"השבוע בחודש","field-weekday-narrow":"יום בשבוע","field-quarter-narrow":"רבע׳","field-sun-short-relative+-1":"יום א׳ שעבר","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-weekday-short":"יום בשבוע","field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","field-day-short":"יום","field-week-narrow":"שב׳","field-era":"תקופה","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/islamic.js b/lib/dojo/cldr/nls/he/islamic.js
index 8873b3ed1..b6f9d5e18 100644
--- a/lib/dojo/cldr/nls/he/islamic.js
+++ b/lib/dojo/cldr/nls/he/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/he/islamic",{"days-standAlone-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-second-relative+0":"עכשיו","quarters-standAlone-narrow":["ר1","ר2","ר3","ר4"],"field-weekday":"יום בשבוע","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","dateFormatItem-GyMMMEd":"E, d בMMM y G","dateFormatItem-MMMEd":"E, d בMMM","eraNarrow":["שנת היג׳רה"],"field-tue-relative+-1":"יום שלישי שעבר","days-format-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormat-long":"d בMMMM y G","field-fri-relative+-1":"יום שישי שעבר","field-wed-relative+-1":"יום רביעי שעבר","months-format-wide":["מוחרם","צפר","רביע אל-אוול","רביע א-ת׳אני","ג׳ומאדא אל-אולא","ג׳ומאדא א-ת׳אניה","רג׳ב","שעבאן","רמדאן","שוואל","ד׳ו אל־קעדה","ד׳ו אל־חיג׳ה"],"dateFormatItem-yyyyQQQ":"QQQ y","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"אחה״צ","dateFormat-full":"EEEE, d בMMMM y G","dateFormatItem-yyyyMEd":"E, d.M.y","field-thu-relative+-1":"יום חמישי שעבר","dateFormatItem-Md":"d/M","field-era":"תקופה","months-standAlone-wide":["מוחרם","צפר","רביע אל־אוול","רביע א־ת׳אני","ג׳ומאדא אל־אולא","ג׳ומאדא א־ת׳אניה","רג׳ב","שעבאן","רמדאן","שוואל","ד׳ו אל־קעדה","ד׳ו אל־חיג׳ה"],"quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"field-year":"שנה","field-hour":"שעה","months-format-abbr":["מוחרם","צפר","רביע א׳","רביע ב׳","ג׳ומאדא א׳","ג׳ומאדא ב׳","רג׳ב","שעבאן","רמדאן","שוואל","ד׳ו אל־קעדה","ד׳ו אל־חיג׳ה"],"field-sat-relative+0":"יום שבת","field-sat-relative+1":"יום שבת הבא","field-day-relative+0":"היום","field-thu-relative+0":"יום חמישי","field-day-relative+1":"מחר","field-thu-relative+1":"יום חמישי הבא","dateFormatItem-GyMMMd":"d בMMM y G","field-day-relative+2":"מחרתיים","months-standAlone-abbr":["מוחרם","צפר","רביע א׳","רביע ב׳","ג׳ומאדא א׳","ג׳ומאדא ב׳","רג׳ב","שעבאן","רמדאן","שוואל","ד׳ו אל-קעדה","ד׳ו אל-חיג׳ה"],"quarters-format-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d בMMM y","days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-yyyyMMM":"MMM y","dateFormatItem-yyyyMMMd":"d בMMM y","field-sun-relative+0":"יום ראשון","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"יום ראשון הבא","quarters-standAlone-abbr":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"eraAbbr":["שנת היג׳רה"],"field-minute":"דקה","field-dayperiod":"לפנה״צ/אחה״צ","dateFormatItem-d":"d","field-day-relative+-1":"אתמול","dateFormatItem-h":"h a","field-day-relative+-2":"שלשום","dateFormatItem-MMMd":"d בMMM","dateFormatItem-MEd":"E, d/M","field-fri-relative+0":"יום שישי","field-fri-relative+1":"יום שישי הבא","field-day":"יום","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"field-zone":"אזור","dateFormatItem-y":"y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"השנה שעברה","field-month-relative+-1":"החודש שעבר","dateFormatItem-hm":"h:mm a","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"eraNames":["שנת היג׳רה"],"days-format-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormatItem-yyyyMd":"d.M.y G","field-month":"חודש","days-standAlone-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-tue-relative+0":"יום שלישי","field-tue-relative+1":"יום שלישי הבא","dayPeriods-format-wide-am":"לפנה״צ","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","dateFormat-short":"dd/MM/yy GGGGG","field-second":"שנייה","field-sat-relative+-1":"יום שבת שעבר","field-sun-relative+-1":"יום ראשון שעבר","field-month-relative+0":"החודש","field-month-relative+1":"החודש הבא","dateFormatItem-Ed":"E ה-d","field-week":"שבוע","dateFormat-medium":"d בMMM y G","field-year-relative+0":"השנה","field-week-relative+-1":"השבוע שעבר","dateFormatItem-yyyyM":"M/y","field-year-relative+1":"השנה הבאה","dateFormatItem-yyyyQQQQ":"QQQQ y","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"יום שני שעבר","dateFormatItem-yyyy":"y G","field-week-relative+0":"השבוע","field-week-relative+1":"השבוע הבא"}); \ No newline at end of file
+define("dojo/cldr/nls/he/islamic",{"field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","field-tue-relative+-1":"יום שלישי שעבר","field-year":"שנה","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","timeFormat-short":"H:mm","field-minute":"דקה","field-month-narrow-relative+-1":"החודש שעבר","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","field-thu-short-relative+0":"יום ה׳","field-day-short-relative+-1":"אתמול","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"יום ה׳ הבא","field-day-relative+0":"היום","field-day-short-relative+-2":"שלשום","field-day-relative+1":"מחר","field-week-narrow-relative+0":"השבוע","field-day-relative+2":"מחרתיים","field-week-narrow-relative+1":"השבוע הבא","field-wed-narrow-relative+-1":"יום ד׳ שעבר","field-year-narrow":"שנ׳","field-era-short":"תקופה","field-year-narrow-relative+0":"השנה","field-tue-relative+0":"יום שלישי","field-year-narrow-relative+1":"השנה הבאה","field-tue-relative+1":"יום שלישי הבא","field-weekdayOfMonth":"יום חול בחודש","field-second-short":"שנ׳","dayPeriods-format-narrow-am":"לפנה״צ","dateFormatItem-MMMd":"d בMMM","field-weekdayOfMonth-narrow":"יום בחודש","dayPeriods-format-abbr-am":"לפנה״צ","field-week-relative+0":"השבוע","field-month-relative+0":"החודש","field-week-relative+1":"השבוע הבא","field-month-relative+1":"החודש הבא","field-sun-narrow-relative+0":"יום א׳","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"יום ב׳","field-sun-narrow-relative+1":"יום א׳ הבא","field-mon-short-relative+1":"יום ב׳ הבא","field-second-relative+0":"עכשיו","dateFormatItem-yyyyQQQ":"QQQ y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["שנת היג׳רה"],"field-weekOfMonth":"השבוע בחודש","field-month-short":"חו׳","dateFormatItem-GyMMMEd":"E, d בMMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"יום","field-dayOfYear-short":"יום בשנה","field-year-relative+-1":"השנה שעברה","dayPeriods-format-wide-am":"לפנה״צ","field-sat-short-relative+-1":"שבת שעברה","field-hour-relative+0":"בשעה זו","dateFormatItem-yyyyMEd":"E, d.M.y","field-wed-relative+-1":"יום רביעי שעבר","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"שבת שעברה","field-second":"שנייה","days-standAlone-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormat-long":"d בMMMM y G","dateFormatItem-GyMMMd":"d בMMM y G","field-quarter":"רבעון","field-week-short":"שב׳","field-day-narrow-relative+0":"היום","field-day-narrow-relative+1":"מחר","quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"days-format-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-tue-short-relative+0":"יום ג׳","field-tue-short-relative+1":"יום ג׳ הבא","field-month-short-relative+-1":"החודש שעבר","field-mon-relative+-1":"יום שני שעבר","dateFormatItem-GyMMM":"MMM y G","field-month":"חודש","field-day-narrow":"יום","dateFormatItem-MMM":"LLL","field-minute-short":"דק׳","field-dayperiod":"לפנה״צ/אחה״צ","field-sat-short-relative+0":"שבת","field-sat-short-relative+1":"שבת הבאה","dayPeriods-format-narrow-pm":"אחה״צ","dateFormat-medium":"d בMMM y G","dateFormatItem-yyyyMMMM":"G y MMMM","eraAbbr":["שנת היג׳רה"],"dayPeriods-format-abbr-pm":"אחה״צ","dateFormatItem-yyyyM":"M/y","field-second-narrow":"שנ׳","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+-1":"אתמול","field-year-short":"שנ׳","field-day-narrow-relative+-2":"שלשום","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"הרבעון הקודם","dateFormatItem-yyyyMMMd":"d בMMM y","field-dayperiod-narrow":"AM/PM","dayPeriods-standAlone-narrow-am":"לפנה״צ","field-week-narrow-relative+-1":"השבוע שעבר","days-format-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dayPeriods-format-wide-pm":"אחה״צ","field-dayOfYear":"יום בשנה","field-sat-relative+-1":"יום שבת שעבר","dateTimeFormat-long":"{1} בשעה {0}","dateFormatItem-Md":"d/M","field-hour":"שעה","months-format-wide":["מוחרם","צפר","רביע אל-אוול","רביע א-ת׳אני","ג׳ומאדא אל-אולא","ג׳ומאדא א-ת׳אניה","רג׳ב","שעבאן","רמדאן","שוואל","ד׳ו אל־קעדה","ד׳ו אל־חיג׳ה"],"dateFormat-full":"EEEE, d בMMMM y G","field-month-relative+-1":"החודש שעבר","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"רבע׳","field-sat-narrow-relative+0":"שבת","field-fri-relative+0":"יום שישי","field-sat-narrow-relative+1":"שבת הבאה","field-fri-relative+1":"יום שישי הבא","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-sun-short-relative+0":"יום א׳","field-sun-short-relative+1":"יום א׳ הבא","field-week-relative+-1":"השבוע שעבר","field-quarter-short-relative+-1":"הרבעון הקודם","months-format-abbr":["מוחרם","צפר","רביע א׳","רביע ב׳","ג׳ומאדא א׳","ג׳ומאדא ב׳","רג׳ב","שעבאן","רמדאן","שוואל","ד׳ו אל־קעדה","ד׳ו אל־חיג׳ה"],"field-quarter-relative+0":"רבעון זה","field-minute-relative+0":"בדקה זו","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"הרבעון הבא","field-wed-short-relative+-1":"יום ד׳ שעבר","dateFormat-short":"dd/MM/yy GGGGG","field-thu-short-relative+-1":"יום ה׳ שעבר","field-year-narrow-relative+-1":"השנה שעברה","days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-yyyyMMMEd":"E, d בMMM y","field-mon-narrow-relative+-1":"יום ב׳ שעבר","dateFormatItem-MMMMd":"d בMMMM","field-thu-narrow-relative+-1":"יום ה׳ שעבר","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"יום ג׳ שעבר","dateFormatItem-H":"H","field-weekOfMonth-short":"השבוע בחודש","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"אחה״צ","dateFormatItem-M":"L","months-standAlone-wide":["מוחרם","צפר","רביע אל־אוול","רביע א־ת׳אני","ג׳ומאדא אל־אולא","ג׳ומאדא א־ת׳אניה","רג׳ב","שעבאן","רמדאן","שוואל","ד׳ו אל־קעדה","ד׳ו אל־חיג׳ה"],"field-wed-short-relative+0":"יום ד׳","field-wed-short-relative+1":"יום ד׳ הבא","field-sun-relative+-1":"ביום ראשון שעבר","days-standAlone-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"dateTimeFormat-full":"{1} בשעה {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"יום בשבוע","field-day-short-relative+0":"היום","field-quarter-narrow-relative+0":"רבעון זה","field-day-short-relative+1":"מחר","field-sat-relative+0":"יום שבת","field-quarter-narrow-relative+1":"הרבעון הבא","dateFormatItem-h":"h a","field-day-short-relative+2":"מחרתיים","field-sat-relative+1":"יום שבת הבא","field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","months-standAlone-abbr":["מוחרם","צפר","רביע א׳","רביע ב׳","ג׳ומאדא א׳","ג׳ומאדא ב׳","רג׳ב","שעבאן","רמדאן","שוואל","ד׳ו אל־קעדה","ד׳ו אל־חיג׳ה"],"field-dayOfYear-narrow":"יום בשנה","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","field-weekdayOfMonth-short":"יום בחודש","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"אזור","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"יום ה׳","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","field-thu-narrow-relative+1":"יום ה׳ הבא","field-thu-relative+0":"יום חמישי","field-thu-relative+1":"יום חמישי הבא","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"יום ו׳ שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-week":"שבוע","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-Ed":"E ה-d","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-quarter-narrow-relative+-1":"הרבעון הקודם","field-year-short-relative+0":"השנה","dateFormatItem-yyyyMMM":"MMM y","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"השנה הבאה","field-fri-short-relative+0":"יום ו׳","field-fri-short-relative+1":"יום ו׳ הבא","days-standAlone-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-week-short-relative+-1":"השבוע שעבר","dateFormatItem-yyyyQQQQ":"QQQQ y","field-hour-short":"שעה","field-zone-short":"אזור","field-month-narrow":"חו׳","field-hour-narrow":"שע׳","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-era-narrow":"תקופה","field-fri-relative+-1":"יום שישי שעבר","eraNarrow":["שנת היג׳רה"],"field-tue-short-relative+-1":"יום ג׳ שעבר","field-minute-narrow":"דק׳","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"field-mon-narrow-relative+0":"יום ב׳","field-mon-narrow-relative+1":"יום ב׳ הבא","field-year-short-relative+-1":"השנה שעברה","field-zone":"אזור זמן","dateFormatItem-MMMEd":"E, d בMMM","field-weekOfMonth-narrow":"השבוע בחודש","field-weekday-narrow":"יום בשבוע","field-quarter-narrow":"רבע׳","field-sun-short-relative+-1":"יום א׳ שעבר","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-weekday-short":"יום בשבוע","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","dateFormatItem-Gy":"y G","field-day-short":"יום","field-week-narrow":"שב׳","field-era":"תקופה","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/japanese.js b/lib/dojo/cldr/nls/he/japanese.js
index 5154229c4..d38280e41 100644
--- a/lib/dojo/cldr/nls/he/japanese.js
+++ b/lib/dojo/cldr/nls/he/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/he/japanese",{"field-sat-relative+0":"יום שבת","field-sat-relative+1":"יום שבת הבא","field-dayperiod":"לפנה״צ/אחה״צ","field-sun-relative+-1":"יום ראשון שעבר","field-mon-relative+-1":"יום שני שעבר","field-minute":"דקה","field-day-relative+-1":"אתמול","field-weekday":"יום בשבוע","field-day-relative+-2":"שלשום","field-era":"תקופה","field-hour":"שעה","field-sun-relative+0":"יום ראשון","field-sun-relative+1":"יום ראשון הבא","field-wed-relative+-1":"יום רביעי שעבר","field-day-relative+0":"היום","field-day-relative+1":"מחר","eraAbbr":["טאיקה",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"נינג׳ו",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"שוטוקו"],"field-day-relative+2":"מחרתיים","field-tue-relative+0":"יום שלישי","field-zone":"אזור","field-tue-relative+1":"יום שלישי הבא","field-week-relative+-1":"השבוע שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-sat-relative+-1":"יום שבת שעבר","field-year-relative+-1":"השנה שעברה","field-year":"שנה","field-fri-relative+0":"יום שישי","field-fri-relative+1":"יום שישי הבא","field-week":"שבוע","field-week-relative+0":"השבוע","field-week-relative+1":"השבוע הבא","field-month-relative+0":"החודש","field-month":"חודש","field-month-relative+1":"החודש הבא","field-fri-relative+-1":"יום שישי שעבר","field-second":"שנייה","field-tue-relative+-1":"יום שלישי שעבר","field-day":"יום","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-thu-relative+0":"יום חמישי","field-second-relative+0":"עכשיו","field-thu-relative+1":"יום חמישי הבא","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","field-month-relative+-1":"החודש שעבר","field-thu-relative+-1":"יום חמישי שעבר"}); \ No newline at end of file
+define("dojo/cldr/nls/he/japanese",{"field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","field-tue-relative+-1":"יום שלישי שעבר","field-year":"שנה","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","field-minute":"דקה","field-month-narrow-relative+-1":"החודש שעבר","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","field-thu-short-relative+0":"יום ה׳","field-day-short-relative+-1":"אתמול","field-thu-short-relative+1":"יום ה׳ הבא","field-day-relative+0":"היום","field-day-short-relative+-2":"שלשום","field-day-relative+1":"מחר","field-week-narrow-relative+0":"השבוע","field-day-relative+2":"מחרתיים","field-week-narrow-relative+1":"השבוע הבא","field-wed-narrow-relative+-1":"יום ד׳ שעבר","field-year-narrow":"שנ׳","field-era-short":"תקופה","field-year-narrow-relative+0":"השנה","field-tue-relative+0":"יום שלישי","field-year-narrow-relative+1":"השנה הבאה","field-tue-relative+1":"יום שלישי הבא","field-weekdayOfMonth":"יום חול בחודש","field-second-short":"שנ׳","field-weekdayOfMonth-narrow":"יום בחודש","field-week-relative+0":"השבוע","field-month-relative+0":"החודש","field-week-relative+1":"השבוע הבא","field-month-relative+1":"החודש הבא","field-sun-narrow-relative+0":"יום א׳","field-mon-short-relative+0":"יום ב׳","field-sun-narrow-relative+1":"יום א׳ הבא","field-mon-short-relative+1":"יום ב׳ הבא","field-second-relative+0":"עכשיו","field-weekOfMonth":"השבוע בחודש","field-month-short":"חו׳","field-day":"יום","field-dayOfYear-short":"יום בשנה","field-year-relative+-1":"השנה שעברה","field-sat-short-relative+-1":"שבת שעברה","field-hour-relative+0":"בשעה זו","field-wed-relative+-1":"יום רביעי שעבר","field-sat-narrow-relative+-1":"שבת שעברה","field-second":"שנייה","field-quarter":"רבעון","field-week-short":"שב׳","field-day-narrow-relative+0":"היום","field-day-narrow-relative+1":"מחר","field-tue-short-relative+0":"יום ג׳","field-tue-short-relative+1":"יום ג׳ הבא","field-month-short-relative+-1":"החודש שעבר","field-mon-relative+-1":"יום שני שעבר","field-month":"חודש","field-day-narrow":"יום","field-minute-short":"דק׳","field-dayperiod":"לפנה״צ/אחה״צ","field-sat-short-relative+0":"שבת","field-sat-short-relative+1":"שבת הבאה","eraAbbr":["טאיקה",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"נינג׳ו",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"שוטוקו"],"field-second-narrow":"שנ׳","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+-1":"אתמול","field-year-short":"שנ׳","field-day-narrow-relative+-2":"שלשום","field-quarter-relative+-1":"הרבעון הקודם","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"השבוע שעבר","field-dayOfYear":"יום בשנה","field-sat-relative+-1":"יום שבת שעבר","field-hour":"שעה","field-month-relative+-1":"החודש שעבר","field-quarter-short":"רבע׳","field-sat-narrow-relative+0":"שבת","field-fri-relative+0":"יום שישי","field-sat-narrow-relative+1":"שבת הבאה","field-fri-relative+1":"יום שישי הבא","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-sun-short-relative+0":"יום א׳","field-sun-short-relative+1":"יום א׳ הבא","field-week-relative+-1":"השבוע שעבר","field-quarter-short-relative+-1":"הרבעון הקודם","field-quarter-relative+0":"רבעון זה","field-minute-relative+0":"בדקה זו","field-quarter-relative+1":"הרבעון הבא","field-wed-short-relative+-1":"יום ד׳ שעבר","field-thu-short-relative+-1":"יום ה׳ שעבר","field-year-narrow-relative+-1":"השנה שעברה","field-mon-narrow-relative+-1":"יום ב׳ שעבר","field-thu-narrow-relative+-1":"יום ה׳ שעבר","field-tue-narrow-relative+-1":"יום ג׳ שעבר","field-weekOfMonth-short":"השבוע בחודש","field-wed-short-relative+0":"יום ד׳","field-wed-short-relative+1":"יום ד׳ הבא","field-sun-relative+-1":"ביום ראשון שעבר","field-weekday":"יום בשבוע","field-day-short-relative+0":"היום","field-quarter-narrow-relative+0":"רבעון זה","field-sat-relative+0":"יום שבת","field-day-short-relative+1":"מחר","field-quarter-narrow-relative+1":"הרבעון הבא","field-sat-relative+1":"יום שבת הבא","field-day-short-relative+2":"מחרתיים","field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","field-dayOfYear-narrow":"יום בשנה","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","field-weekdayOfMonth-short":"יום בחודש","field-zone-narrow":"אזור","field-thu-narrow-relative+0":"יום ה׳","field-thu-narrow-relative+1":"יום ה׳ הבא","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","field-thu-relative+0":"יום חמישי","field-thu-relative+1":"יום חמישי הבא","field-fri-short-relative+-1":"יום ו׳ שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-week":"שבוע","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-quarter-narrow-relative+-1":"הרבעון הקודם","field-year-short-relative+0":"השנה","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"השנה הבאה","field-fri-short-relative+0":"יום ו׳","field-fri-short-relative+1":"יום ו׳ הבא","field-week-short-relative+-1":"השבוע שעבר","field-hour-short":"שעה","field-zone-short":"אזור","field-month-narrow":"חו׳","field-hour-narrow":"שע׳","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-era-narrow":"תקופה","field-fri-relative+-1":"יום שישי שעבר","field-tue-short-relative+-1":"יום ג׳ שעבר","field-minute-narrow":"דק׳","field-mon-narrow-relative+0":"יום ב׳","field-mon-narrow-relative+1":"יום ב׳ הבא","field-year-short-relative+-1":"השנה שעברה","field-zone":"אזור זמן","field-weekOfMonth-narrow":"השבוע בחודש","field-weekday-narrow":"יום בשבוע","field-quarter-narrow":"רבע׳","field-sun-short-relative+-1":"יום א׳ שעבר","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-weekday-short":"יום בשבוע","field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","field-day-short":"יום","field-week-narrow":"שב׳","field-era":"תקופה","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/number.js b/lib/dojo/cldr/nls/he/number.js
index 9ed28c540..3703aec33 100644
--- a/lib/dojo/cldr/nls/he/number.js
+++ b/lib/dojo/cldr/nls/he/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/he/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 טריליון","decimalFormat-short":"000 ביל׳"}); \ No newline at end of file
+define("dojo/cldr/nls/he/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000T","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 טריליון","decimalFormat":"#,##0.###","currencyFormat-short":"¤000T","timeSeparator":":","decimal":".","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/persian.js b/lib/dojo/cldr/nls/he/persian.js
new file mode 100644
index 000000000..2569afe54
--- /dev/null
+++ b/lib/dojo/cldr/nls/he/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/he/persian",{"field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","field-tue-relative+-1":"יום שלישי שעבר","field-year":"שנה","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","timeFormat-short":"H:mm","field-minute":"דקה","field-month-narrow-relative+-1":"החודש שעבר","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","field-thu-short-relative+0":"יום ה׳","field-day-short-relative+-1":"אתמול","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"יום ה׳ הבא","field-day-relative+0":"היום","field-day-short-relative+-2":"שלשום","field-day-relative+1":"מחר","field-week-narrow-relative+0":"השבוע","field-day-relative+2":"מחרתיים","field-week-narrow-relative+1":"השבוע הבא","field-wed-narrow-relative+-1":"יום ד׳ שעבר","field-year-narrow":"שנ׳","field-era-short":"תקופה","field-year-narrow-relative+0":"השנה","field-tue-relative+0":"יום שלישי","field-year-narrow-relative+1":"השנה הבאה","field-tue-relative+1":"יום שלישי הבא","field-weekdayOfMonth":"יום חול בחודש","field-second-short":"שנ׳","dayPeriods-format-narrow-am":"לפנה״צ","dateFormatItem-MMMd":"d בMMM","field-weekdayOfMonth-narrow":"יום בחודש","dayPeriods-format-abbr-am":"לפנה״צ","field-week-relative+0":"השבוע","field-month-relative+0":"החודש","field-week-relative+1":"השבוע הבא","field-month-relative+1":"החודש הבא","field-sun-narrow-relative+0":"יום א׳","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"יום ב׳","field-sun-narrow-relative+1":"יום א׳ הבא","field-mon-short-relative+1":"יום ב׳ הבא","field-second-relative+0":"עכשיו","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["הספירה הפרסית"],"field-weekOfMonth":"השבוע בחודש","field-month-short":"חו׳","dateFormatItem-GyMMMEd":"E, d בMMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"יום","field-dayOfYear-short":"יום בשנה","field-year-relative+-1":"השנה שעברה","dayPeriods-format-wide-am":"לפנה״צ","field-sat-short-relative+-1":"שבת שעברה","field-hour-relative+0":"בשעה זו","dateFormatItem-yyyyMEd":"E, d/M/y G","field-wed-relative+-1":"יום רביעי שעבר","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"שבת שעברה","field-second":"שנייה","days-standAlone-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dateFormat-long":"d בMMMM y G","dateFormatItem-GyMMMd":"d בMMM y G","field-quarter":"רבעון","field-week-short":"שב׳","field-day-narrow-relative+0":"היום","field-day-narrow-relative+1":"מחר","quarters-standAlone-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"days-format-narrow":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-tue-short-relative+0":"יום ג׳","field-tue-short-relative+1":"יום ג׳ הבא","field-month-short-relative+-1":"החודש שעבר","field-mon-relative+-1":"יום שני שעבר","dateFormatItem-GyMMM":"MMM y G","field-month":"חודש","field-day-narrow":"יום","field-minute-short":"דק׳","field-dayperiod":"לפנה״צ/אחה״צ","field-sat-short-relative+0":"שבת","field-sat-short-relative+1":"שבת הבאה","dayPeriods-format-narrow-pm":"אחה״צ","dateFormat-medium":"d בMMM y G","eraAbbr":["AP"],"dayPeriods-format-abbr-pm":"אחה״צ","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"שנ׳","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+-1":"אתמול","field-year-short":"שנ׳","field-day-narrow-relative+-2":"שלשום","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"הרבעון הקודם","dateFormatItem-yyyyMMMd":"d בMMM y G","field-dayperiod-narrow":"AM/PM","dayPeriods-standAlone-narrow-am":"לפנה״צ","field-week-narrow-relative+-1":"השבוע שעבר","days-format-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"dayPeriods-format-wide-pm":"אחה״צ","field-dayOfYear":"יום בשנה","field-sat-relative+-1":"יום שבת שעבר","dateTimeFormat-long":"{1} בשעה {0}","dateFormatItem-Md":"d.M","field-hour":"שעה","months-format-wide":["פרורדין","ארדיבהשת","ח׳רדאד","תיר","מרדאד","שהריור","מהר","אבאן","אד׳ר","די","בהמן","אספנד"],"dateFormat-full":"EEEE, d בMMMM y G","field-month-relative+-1":"החודש שעבר","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"רבע׳","field-sat-narrow-relative+0":"שבת","field-fri-relative+0":"יום שישי","field-sat-narrow-relative+1":"שבת הבאה","field-fri-relative+1":"יום שישי הבא","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-sun-short-relative+0":"יום א׳","field-sun-short-relative+1":"יום א׳ הבא","field-week-relative+-1":"השבוע שעבר","field-quarter-short-relative+-1":"הרבעון הקודם","months-format-abbr":["פרורדין","ארדיבהשת","ח׳רדאד","תיר","מרדאד","שהריור","מהר","אבאן","אד׳ר","די","בהמן","אספנד"],"field-quarter-relative+0":"רבעון זה","field-minute-relative+0":"בדקה זו","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"הרבעון הבא","field-wed-short-relative+-1":"יום ד׳ שעבר","dateFormat-short":"d.M.y GGGGG","field-thu-short-relative+-1":"יום ה׳ שעבר","field-year-narrow-relative+-1":"השנה שעברה","days-standAlone-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"dateFormatItem-yyyyMMMEd":"E, d בMMM y G","field-mon-narrow-relative+-1":"יום ב׳ שעבר","field-thu-narrow-relative+-1":"יום ה׳ שעבר","field-tue-narrow-relative+-1":"יום ג׳ שעבר","dateFormatItem-H":"H","field-weekOfMonth-short":"השבוע בחודש","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"אחה״צ","field-wed-short-relative+0":"יום ד׳","months-standAlone-wide":["פרורדין","ארדיבהשת","ח׳רדאד","תיר","מרדאד","שהריור","מהר","אבאן","אד׳ר","די","בהמן","אספנד"],"field-wed-short-relative+1":"יום ד׳ הבא","field-sun-relative+-1":"ביום ראשון שעבר","days-standAlone-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"dateTimeFormat-full":"{1} בשעה {0}","field-weekday":"יום בשבוע","field-day-short-relative+0":"היום","field-quarter-narrow-relative+0":"רבעון זה","field-day-short-relative+1":"מחר","field-sat-relative+0":"יום שבת","field-quarter-narrow-relative+1":"הרבעון הבא","field-day-short-relative+2":"מחרתיים","field-sat-relative+1":"יום שבת הבא","field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","months-standAlone-abbr":["פרורדין","ארדיבהשת","ח׳רדאד","תיר","מרדאד","שהריור","מהר","אבאן","אד׳ר","די","בהמן","אספנד"],"field-dayOfYear-narrow":"יום בשנה","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","field-weekdayOfMonth-short":"יום בחודש","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"אזור","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"יום ה׳","field-thu-narrow-relative+1":"יום ה׳ הבא","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","field-thu-relative+0":"יום חמישי","field-thu-relative+1":"יום חמישי הבא","field-fri-short-relative+-1":"יום ו׳ שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-week":"שבוע","quarters-format-wide":["רבעון 1","רבעון 2","רבעון 3","רבעון 4"],"dateFormatItem-Ed":"E ה-d","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-quarter-narrow-relative+-1":"הרבעון הקודם","field-year-short-relative+0":"השנה","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"השנה הבאה","field-fri-short-relative+0":"יום ו׳","field-fri-short-relative+1":"יום ו׳ הבא","days-standAlone-short":["א׳","ב׳","ג׳","ד׳","ה׳","ו׳","ש׳"],"field-week-short-relative+-1":"השבוע שעבר","field-hour-short":"שעה","field-zone-short":"אזור","field-month-narrow":"חו׳","field-hour-narrow":"שע׳","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-era-narrow":"תקופה","field-fri-relative+-1":"יום שישי שעבר","eraNarrow":"AP","field-tue-short-relative+-1":"יום ג׳ שעבר","field-minute-narrow":"דק׳","days-format-wide":["יום ראשון","יום שני","יום שלישי","יום רביעי","יום חמישי","יום שישי","יום שבת"],"field-mon-narrow-relative+0":"יום ב׳","field-mon-narrow-relative+1":"יום ב׳ הבא","field-year-short-relative+-1":"השנה שעברה","field-zone":"אזור זמן","dateFormatItem-MMMEd":"E, d בMMM","field-weekOfMonth-narrow":"השבוע בחודש","field-weekday-narrow":"יום בשבוע","field-quarter-narrow":"רבע׳","field-sun-short-relative+-1":"יום א׳ שעבר","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-weekday-short":"יום בשבוע","days-format-abbr":["יום א׳","יום ב׳","יום ג׳","יום ד׳","יום ה׳","יום ו׳","שבת"],"field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","dateFormatItem-Gy":"y G","field-day-short":"יום","field-week-narrow":"שב׳","field-era":"תקופה","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/he/roc.js b/lib/dojo/cldr/nls/he/roc.js
new file mode 100644
index 000000000..d5fec075d
--- /dev/null
+++ b/lib/dojo/cldr/nls/he/roc.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/he/roc",{"field-quarter-short-relative+0":"רבעון זה","field-quarter-short-relative+1":"הרבעון הבא","field-tue-relative+-1":"יום שלישי שעבר","field-year":"שנה","field-wed-relative+0":"יום רביעי","field-wed-relative+1":"יום רביעי הבא","field-minute":"דקה","field-month-narrow-relative+-1":"החודש שעבר","field-tue-narrow-relative+0":"יום ג׳","field-tue-narrow-relative+1":"יום ג׳ הבא","field-thu-short-relative+0":"יום ה׳","field-day-short-relative+-1":"אתמול","field-thu-short-relative+1":"יום ה׳ הבא","field-day-relative+0":"היום","field-day-short-relative+-2":"שלשום","field-day-relative+1":"מחר","field-week-narrow-relative+0":"השבוע","field-day-relative+2":"מחרתיים","field-week-narrow-relative+1":"השבוע הבא","field-wed-narrow-relative+-1":"יום ד׳ שעבר","field-year-narrow":"שנ׳","field-era-short":"תקופה","field-year-narrow-relative+0":"השנה","field-tue-relative+0":"יום שלישי","field-year-narrow-relative+1":"השנה הבאה","field-tue-relative+1":"יום שלישי הבא","field-weekdayOfMonth":"יום חול בחודש","field-second-short":"שנ׳","field-weekdayOfMonth-narrow":"יום בחודש","field-week-relative+0":"השבוע","field-month-relative+0":"החודש","field-week-relative+1":"השבוע הבא","field-month-relative+1":"החודש הבא","field-sun-narrow-relative+0":"יום א׳","field-mon-short-relative+0":"יום ב׳","field-sun-narrow-relative+1":"יום א׳ הבא","field-mon-short-relative+1":"יום ב׳ הבא","field-second-relative+0":"עכשיו","eraNames":["לפני הרפובליקה של סין","לספירת הרפובליקה של סין"],"field-weekOfMonth":"השבוע בחודש","field-month-short":"חו׳","field-day":"יום","field-dayOfYear-short":"יום בשנה","field-year-relative+-1":"השנה שעברה","field-sat-short-relative+-1":"שבת שעברה","field-hour-relative+0":"בשעה זו","field-wed-relative+-1":"יום רביעי שעבר","field-sat-narrow-relative+-1":"שבת שעברה","field-second":"שנייה","field-quarter":"רבעון","field-week-short":"שב׳","field-day-narrow-relative+0":"היום","field-day-narrow-relative+1":"מחר","field-tue-short-relative+0":"יום ג׳","field-tue-short-relative+1":"יום ג׳ הבא","field-month-short-relative+-1":"החודש שעבר","field-mon-relative+-1":"יום שני שעבר","field-month":"חודש","field-day-narrow":"יום","field-minute-short":"דק׳","field-dayperiod":"לפנה״צ/אחה״צ","field-sat-short-relative+0":"שבת","field-sat-short-relative+1":"שבת הבאה","eraAbbr":["לפני R.O.C","R.O.C."],"field-second-narrow":"שנ׳","field-mon-relative+0":"יום שני","field-mon-relative+1":"יום שני הבא","field-day-narrow-relative+-1":"אתמול","field-year-short":"שנ׳","field-day-narrow-relative+-2":"שלשום","field-quarter-relative+-1":"הרבעון הקודם","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"השבוע שעבר","field-dayOfYear":"יום בשנה","field-sat-relative+-1":"יום שבת שעבר","field-hour":"שעה","field-month-relative+-1":"החודש שעבר","field-quarter-short":"רבע׳","field-sat-narrow-relative+0":"שבת","field-fri-relative+0":"יום שישי","field-sat-narrow-relative+1":"שבת הבאה","field-fri-relative+1":"יום שישי הבא","field-month-narrow-relative+0":"החודש","field-month-narrow-relative+1":"החודש הבא","field-sun-short-relative+0":"יום א׳","field-sun-short-relative+1":"יום א׳ הבא","field-week-relative+-1":"השבוע שעבר","field-quarter-short-relative+-1":"הרבעון הקודם","field-quarter-relative+0":"רבעון זה","field-minute-relative+0":"בדקה זו","field-quarter-relative+1":"הרבעון הבא","field-wed-short-relative+-1":"יום ד׳ שעבר","field-thu-short-relative+-1":"יום ה׳ שעבר","field-year-narrow-relative+-1":"השנה שעברה","field-mon-narrow-relative+-1":"יום ב׳ שעבר","field-thu-narrow-relative+-1":"יום ה׳ שעבר","field-tue-narrow-relative+-1":"יום ג׳ שעבר","field-weekOfMonth-short":"השבוע בחודש","field-wed-short-relative+0":"יום ד׳","field-wed-short-relative+1":"יום ד׳ הבא","field-sun-relative+-1":"ביום ראשון שעבר","field-weekday":"יום בשבוע","field-day-short-relative+0":"היום","field-quarter-narrow-relative+0":"רבעון זה","field-sat-relative+0":"יום שבת","field-day-short-relative+1":"מחר","field-quarter-narrow-relative+1":"הרבעון הבא","field-sat-relative+1":"יום שבת הבא","field-day-short-relative+2":"מחרתיים","field-week-short-relative+0":"השבוע","field-week-short-relative+1":"השבוע הבא","field-dayOfYear-narrow":"יום בשנה","field-month-short-relative+0":"החודש","field-month-short-relative+1":"החודש הבא","field-weekdayOfMonth-short":"יום בחודש","field-zone-narrow":"אזור","field-thu-narrow-relative+0":"יום ה׳","field-thu-narrow-relative+1":"יום ה׳ הבא","field-sun-narrow-relative+-1":"יום א׳ שעבר","field-mon-short-relative+-1":"יום ב׳ שעבר","field-thu-relative+0":"יום חמישי","field-thu-relative+1":"יום חמישי הבא","field-fri-short-relative+-1":"יום ו׳ שעבר","field-thu-relative+-1":"יום חמישי שעבר","field-week":"שבוע","field-wed-narrow-relative+0":"יום ד׳","field-wed-narrow-relative+1":"יום ד׳ הבא","field-quarter-narrow-relative+-1":"הרבעון הקודם","field-year-short-relative+0":"השנה","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"השנה הבאה","field-fri-short-relative+0":"יום ו׳","field-fri-short-relative+1":"יום ו׳ הבא","field-week-short-relative+-1":"השבוע שעבר","field-hour-short":"שעה","field-zone-short":"אזור","field-month-narrow":"חו׳","field-hour-narrow":"שע׳","field-fri-narrow-relative+-1":"יום ו׳ שעבר","field-year-relative+0":"השנה","field-year-relative+1":"השנה הבאה","field-era-narrow":"תקופה","field-fri-relative+-1":"יום שישי שעבר","eraNarrow":["לפני R.O.C","R.O.C."],"field-tue-short-relative+-1":"יום ג׳ שעבר","field-minute-narrow":"דק׳","field-mon-narrow-relative+0":"יום ב׳","field-mon-narrow-relative+1":"יום ב׳ הבא","field-year-short-relative+-1":"השנה שעברה","field-zone":"אזור זמן","field-weekOfMonth-narrow":"השבוע בחודש","field-weekday-narrow":"יום בשבוע","field-quarter-narrow":"רבע׳","field-sun-short-relative+-1":"יום א׳ שעבר","field-day-relative+-1":"אתמול","field-day-relative+-2":"שלשום","field-weekday-short":"יום בשבוע","field-sun-relative+0":"ביום ראשון הזה","field-sun-relative+1":"ביום ראשון הבא","field-day-short":"יום","field-week-narrow":"שב׳","field-era":"תקופה","field-fri-narrow-relative+0":"יום ו׳","field-fri-narrow-relative+1":"יום ו׳ הבא"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hebrew.js b/lib/dojo/cldr/nls/hebrew.js
index 06af7f1af..9a74bc7cc 100644
--- a/lib/dojo/cldr/nls/hebrew.js
+++ b/lib/dojo/cldr/nls/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hebrew",{root:{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-second-relative+0":"now","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","months-standAlone-narrow-leap":"7","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-MMMEd":"MMM d, E","eraNarrow":["AM"],"field-tue-relative+-1":"last Tuesday","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"G y MMMM d","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","months-format-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-yyyyQQQ":"G y QQQ","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"MM-dd","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dayPeriods-format-wide-noon":"noon","field-era":"Era","months-standAlone-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","field-year":"Year","dateTimeFormats-appendItem-Era":"{1} {0}","field-hour":"Hour","months-format-abbr-leap":"Adar II","months-format-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"today","field-thu-relative+0":"this Thursday","field-day-relative+1":"tomorrow","field-thu-relative+1":"next Thursday","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-H":"HH","months-standAlone-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Gy":"G y","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateFormatItem-M":"L","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMM":"G y MMM","dateFormatItem-yyyyMMMd":"G y MMM d","dayPeriods-format-abbr-noon":"noon","months-standAlone-wide-leap":"Adar II","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"this Sunday","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"next Sunday","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"months-format-narrow-leap":"7","eraAbbr":["AM"],"field-minute":"Minute","field-dayperiod":"Dayperiod","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-ms":"mm:ss","dateFormatItem-d":"d","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"yesterday","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"a","dateFormatItem-h":"h a","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"MM-dd, E","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-abbr-leap":"Adar II","field-zone":"Zone","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"dateFormatItem-y":"G y","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateTimeFormats-appendItem-Year":"{1} {0}","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"eraNames":["AM"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-month":"Month","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-MMM":"LLL","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-noon":"n","field-second":"Second","field-sat-relative+-1":"last Saturday","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormatItem-Ed":"d, E","field-week":"Week","dateFormat-medium":"G y MMM d","field-week-relative+-1":"last week","field-year-relative+0":"this year","dateFormatItem-yyyyM":"GGGGG y-MM","field-year-relative+1":"next year","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyyyQQQQ":"G y QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","months-format-wide-leap":"Adar II","dateFormatItem-GyMMM":"G y MMM","field-mon-relative+-1":"last Monday","dateFormatItem-yyyy":"G y","field-week-relative+0":"this week","field-week-relative+1":"next week"},"ar":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/hebrew",{root:{"field-quarter-short-relative+0":"this quarter","dateTimeFormats-appendItem-Year":"{1} {0}","field-quarter-short-relative+1":"next quarter","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","field-month-narrow-relative+-1":"last month","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","field-thu-short-relative+0":"this Thursday","field-day-short-relative+-1":"yesterday","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"next Thursday","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-wed-narrow-relative+-1":"last Wednesday","dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"Year","field-era-short":"Era","field-year-narrow-relative+0":"this year","field-tue-relative+0":"this Tuesday","field-year-narrow-relative+1":"next year","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"Weekday Of Month","field-second-short":"Second","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Sunday","timeFormat-medium":"HH:mm:ss","field-mon-short-relative+0":"this Monday","field-sun-narrow-relative+1":"next Sunday","field-mon-short-relative+1":"next Monday","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["AM"],"field-weekOfMonth":"Week Of Month","dayPeriods-standAlone-abbr-pm":"PM","field-month-short":"Month","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-dayOfYear-short":"Day Of Year","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","field-sat-short-relative+-1":"last Saturday","field-hour-relative+0":"this hour","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"last Saturday","field-second":"Second","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","field-hour-short-relative+0":"this hour","field-quarter":"Quarter","field-week-short":"Week","field-day-narrow-relative+0":"today","field-day-narrow-relative+1":"tomorrow","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","field-month-short-relative+-1":"last month","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","field-day-narrow":"Day","dateFormatItem-MMM":"LLL","field-minute-short":"Minute","field-dayperiod":"Dayperiod","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","dayPeriods-format-narrow-pm":"PM","dateFormat-medium":"G y MMM d","dateFormatItem-yyyyMMMM":"G y MMMM","eraAbbr":["AM"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-second-narrow":"Second","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-day-narrow-relative+-1":"yesterday","field-year-short":"Year","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"last quarter","dateFormatItem-yyyyMMMd":"G y MMM d","field-dayperiod-narrow":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-dayOfYear":"Day Of Year","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-minute-narrow-relative+0":"this minute","field-hour":"Hour","months-format-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"Quarter","field-sat-narrow-relative+0":"this Saturday","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Saturday","field-fri-relative+1":"next Friday","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-sun-short-relative+0":"this Sunday","field-sun-short-relative+1":"next Sunday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last quarter","field-minute-short-relative+0":"this minute","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","timeFormat-long":"HH:mm:ss z","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wednesday","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"last Thursday","field-year-narrow-relative+-1":"last year","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","field-mon-narrow-relative+-1":"last Monday","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-MMMMd":"MMMM d","field-thu-narrow-relative+-1":"last Thursday","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"last Tuesday","dateFormatItem-H":"HH","field-weekOfMonth-short":"Week Of Month","dayPeriods-standAlone-narrow-pm":"PM","dateFormatItem-yyyy":"G y","field-wed-short-relative+0":"this Wednesday","dateFormatItem-M":"L","months-standAlone-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"field-wed-short-relative+1":"next Wednesday","field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"now","dateFormatItem-hm":"h:mm a","months-format-abbr-leap":"Adar II","dateFormatItem-d":"d","field-weekday":"Day of the Week","field-day-short-relative+0":"today","months-standAlone-narrow-leap":"7","field-day-short-relative+1":"tomorrow","field-sat-relative+0":"this Saturday","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","field-quarter-narrow-relative+1":"next quarter","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","months-standAlone-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"months-format-wide-leap":"Adar II","months-format-narrow-leap":"7","field-dayOfYear-narrow":"Day Of Year","field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","field-weekdayOfMonth-short":"Weekday Of Month","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","field-zone-narrow":"Zone","dateFormatItem-y":"G y","field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+-1":"last Sunday","field-mon-short-relative+-1":"last Monday","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","quarters-standAlone-narrow":["1","2","3","4"],"field-week":"Week","quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-quarter-narrow-relative+-1":"last quarter","field-year-short-relative+0":"this year","dateFormatItem-yyyyMMM":"G y MMM","field-dayperiod-short":"Dayperiod","field-year-short-relative+1":"next year","field-fri-short-relative+0":"this Friday","field-fri-short-relative+1":"next Friday","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-week-short-relative+-1":"last week","months-standAlone-abbr-leap":"Adar II","field-hour-narrow-relative+0":"this hour","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-zone-short":"Zone","field-hour-short":"Hour","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-month-narrow":"Month","field-hour-narrow":"Hour","field-fri-narrow-relative+-1":"last Friday","field-year-relative+0":"this year","field-year-relative+1":"next year","field-era-narrow":"Era","field-fri-relative+-1":"last Friday","eraNarrow":["AM"],"dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"last Tuesday","field-minute-narrow":"Minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","dateFormatItem-EHm":"E HH:mm","field-year-short-relative+-1":"last year","field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"Day of the Week","months-standAlone-wide-leap":"Adar II","field-quarter-narrow":"Quarter","field-sun-short-relative+-1":"last Sunday","field-day-relative+-1":"yesterday","dayPeriods-standAlone-abbr-am":"AM","field-weekday-short":"Day of the Week","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-week-narrow":"Week","field-era":"Era","field-day-short":"Day","field-fri-narrow-relative+0":"this Friday","field-fri-narrow-relative+1":"next Friday","dayPeriods-standAlone-wide-am":"AM"},"ar":true,"bs":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/buddhist.js b/lib/dojo/cldr/nls/hr/buddhist.js
index def460692..beaae5ad3 100644
--- a/lib/dojo/cldr/nls/hr/buddhist.js
+++ b/lib/dojo/cldr/nls/hr/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hr/buddhist",{"days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"months-format-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-second-relative+0":"sada","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"Dan u tjednu","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E, d. MMM","field-tue-relative+-1":"prošli utorak","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"dateFormat-long":"d. MMMM y. G","field-fri-relative+-1":"prošli petak","field-wed-relative+-1":"prošla srijeda","months-format-wide":["siječnja","veljače","ožujka","travnja","svibnja","lipnja","srpnja","kolovoza","rujna","listopada","studenoga","prosinca"],"dateFormatItem-yyyyQQQ":"QQQ y. G","dateFormat-full":"EEEE, d. MMMM y. G","dateFormatItem-yyyyMEd":"E, dd.MM.y. GGGGG","field-thu-relative+-1":"prošli četvrtak","dateFormatItem-Md":"dd.MM.","dayPeriods-format-wide-noon":"podne","field-era":"Era","months-standAlone-wide":["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"field-year":"Godina","field-hour":"Sat","months-format-abbr":["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],"field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-day-relative+0":"danas","field-thu-relative+0":"ovaj četvrtak","field-day-relative+1":"sutra","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"prekosutra","months-standAlone-abbr":["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],"quarters-format-abbr":["1kv","2kv","3kv","4kv"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y. G","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","dateFormatItem-M":"L.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yyyyMMM":"LLL y. G","dateFormatItem-yyyyMMMd":"d. MMM y. G","dayPeriods-format-abbr-noon":"podne","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","quarters-standAlone-abbr":["1kv","2kv","3kv","4kv"],"eraAbbr":["BE"],"field-minute":"Minuta","field-dayperiod":"AM/PM","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateFormatItem-d":"d.","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"jučer","dateFormatItem-h":"hh a","field-day-relative+-2":"prekjučer","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, dd.MM.","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","field-day":"Dan","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-zone":"Vremenska zona","dateFormatItem-y":"y. G","months-standAlone-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-year-relative+-1":"prošle godine","field-month-relative+-1":"prošli mjesec","dateFormatItem-hm":"hh:mm a","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"days-format-narrow":["N","P","U","S","Č","P","S"],"dateFormatItem-yyyyMd":"dd.MM.y. GGGGG","field-month":"Mjesec","days-standAlone-narrow":["n","p","u","s","č","p","s"],"field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","dateFormat-short":"dd.MM.y. GGGGG","field-second":"Sekunda","field-sat-relative+-1":"prošla subota","field-sun-relative+-1":"prošla nedjelja","field-month-relative+0":"ovaj mjesec","field-month-relative+1":"sljedeći mjesec","dateFormatItem-Ed":"E, d.","field-week":"Tjedan","dateFormat-medium":"d. M. y. G","field-year-relative+0":"ove godine","field-week-relative+-1":"prošli tjedan","dateFormatItem-yyyyM":"MM.y. GGGGG","field-year-relative+1":"sljedeće godine","dateFormatItem-yyyyQQQQ":"QQQQ y. G","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"LLL y. G","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-yyyy":"y. G","field-week-relative+0":"ovaj tjedan","field-week-relative+1":"sljedeći tjedan"}); \ No newline at end of file
+define("dojo/cldr/nls/hr/buddhist",{"field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-month-narrow-relative+-1":"prošli mj.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","field-day-short-relative+-1":"jučer","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-short-relative+-2":"prekjučer","field-day-relative+1":"sutra","field-week-narrow-relative+0":"ovaj tj.","field-day-relative+2":"prekosutra","field-week-narrow-relative+1":"sljedeći tj.","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-year-narrow-relative+0":"ove g.","field-tue-relative+0":"ovaj utorak","field-year-narrow-relative+1":"sljedeće g.","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"radni dan u mjesecu","field-second-short":"s","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"r. dan u mj.","field-week-relative+0":"ovaj tjedan","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeći tjedan","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon.","field-second-relative+0":"sad","dateFormatItem-yyyyQQQ":"QQQ y. G","months-standAlone-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-weekOfMonth":"tjedan u mjesecu","field-month-short":"mj.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"dd. MM. y. GGGGG","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","dateFormatItem-yyyyMEd":"E, dd. MM. y. GGGGG","field-wed-relative+-1":"prošla srijeda","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","č","p","s"],"dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"kvartal","field-week-short":"tj.","field-day-narrow-relative+0":"danas","field-day-narrow-relative+1":"sutra","field-day-narrow-relative+2":"prekosutra","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["N","P","U","S","Č","P","S"],"field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-month-short-relative+-1":"prošli mj.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"LLL y. G","field-month":"mjesec","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dateFormat-medium":"d. MMM y. G","dateFormatItem-yyyyMMMM":"LLLL y. G","eraAbbr":["BE"],"quarters-standAlone-abbr":["1. kv.","2. kv.","3. kv.","4. kv."],"dateFormatItem-yyyyM":"MM. y. GGGGG","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+-1":"jučer","field-year-short":"g.","field-day-narrow-relative+-2":"prekjučer","months-format-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-quarter-relative+-1":"prošli kvartal","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"prošli tj.","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"quarters-format-narrow":["1.","2.","3.","4."],"field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-Md":"dd. MM.","field-hour":"sat","months-format-wide":["siječnja","veljače","ožujka","travnja","svibnja","lipnja","srpnja","kolovoza","rujna","listopada","studenoga","prosinca"],"dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošli tjedan","field-quarter-short-relative+-1":"prošli kv.","months-format-abbr":["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],"field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormat-short":"dd. MM. y. GGGGG","field-thu-short-relative+-1":"prošli čet.","field-year-narrow-relative+-1":"prošle g.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","field-weekOfMonth-short":"tj. u mj.","dateFormatItem-yyyy":"y. G","field-wed-short-relative+0":"ova sri.","dateFormatItem-M":"L.","months-standAlone-wide":["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"],"field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d.","field-weekday":"dan u tjednu","field-day-short-relative+0":"danas","field-quarter-narrow-relative+0":"ovaj kv.","field-sat-relative+0":"ova subota","field-day-short-relative+1":"sutra","field-quarter-narrow-relative+1":"sljedeći kv.","field-sat-relative+1":"sljedeća subota","field-day-short-relative+2":"prekosutra","dateFormatItem-h":"hh a","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","months-standAlone-abbr":["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],"field-dayOfYear-narrow":"dan u g.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","field-weekdayOfMonth-short":"radni dan u mj.","timeFormat-full":"HH:mm:ss (zzzz)","dateFormatItem-MEd":"E, dd. MM.","field-zone-narrow":"zona","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","field-fri-short-relative+-1":"prošli pet.","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"prošli četvrtak","field-week":"tjedan","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-quarter-narrow-relative+-1":"prošli kv.","field-year-short-relative+0":"ove god.","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y. G","field-year-short-relative+1":"sljedeće god.","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"field-week-short-relative+-1":"prošli tj.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"h","field-zone-short":"zona","quarters-format-abbr":["1kv","2kv","3kv","4kv"],"field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-year-short-relative+-1":"prošle god.","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"tj. u mjesecu","field-weekday-narrow":"dan u tj.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u tjed.","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-Gy":"y. G","field-day-short":"d.","field-week-narrow":"tj.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/chinese.js b/lib/dojo/cldr/nls/hr/chinese.js
index b4055e5cb..d740cfbfb 100644
--- a/lib/dojo/cldr/nls/hr/chinese.js
+++ b/lib/dojo/cldr/nls/hr/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hr/chinese",{"field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-dayperiod":"AM/PM","field-sun-relative+-1":"prošla nedjelja","field-mon-relative+-1":"prošli ponedjeljak","field-minute":"Minuta","field-day-relative+-1":"jučer","field-weekday":"Dan u tjednu","field-day-relative+-2":"prekjučer","field-era":"Era","field-hour":"Sat","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","field-wed-relative+-1":"prošla srijeda","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-day-relative+2":"prekosutra","dateFormat-long":"d.M.y.","field-tue-relative+0":"ovaj utorak","field-zone":"Vremenska zona","field-tue-relative+1":"sljedeći utorak","field-week-relative+-1":"prošli tjedan","dateFormat-medium":"d.M.y.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-sat-relative+-1":"prošla subota","field-year-relative+-1":"prošle godine","field-year":"Godina","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","field-week":"Tjedan","field-week-relative+0":"ovaj tjedan","field-week-relative+1":"sljedeći tjedan","field-month-relative+0":"ovaj mjesec","field-month":"Mjesec","field-month-relative+1":"sljedeći mjesec","field-fri-relative+-1":"prošli petak","field-second":"Sekunda","field-tue-relative+-1":"prošli utorak","field-day":"Dan","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-thu-relative+0":"ovaj četvrtak","field-second-relative+0":"sada","dateFormat-short":"d.M.y.","field-thu-relative+1":"sljedeći četvrtak","dateFormat-full":"E, d.M.y.","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-month-relative+-1":"prošli mjesec","field-thu-relative+-1":"prošli četvrtak"}); \ No newline at end of file
+define("dojo/cldr/nls/hr/chinese",{"field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-month-narrow-relative+-1":"prošli mj.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","field-day-short-relative+-1":"jučer","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-short-relative+-2":"prekjučer","field-day-relative+1":"sutra","field-week-narrow-relative+0":"ovaj tj.","field-day-relative+2":"prekosutra","field-week-narrow-relative+1":"sljedeći tj.","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-year-narrow-relative+0":"ove g.","field-tue-relative+0":"ovaj utorak","field-year-narrow-relative+1":"sljedeće g.","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"radni dan u mjesecu","field-second-short":"s","field-weekdayOfMonth-narrow":"r. dan u mj.","field-week-relative+0":"ovaj tjedan","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeći tjedan","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon.","field-second-relative+0":"sad","field-weekOfMonth":"tjedan u mjesecu","field-month-short":"mj.","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","field-wed-relative+-1":"prošla srijeda","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","dateFormat-long":"d. M. y.","field-quarter":"kvartal","field-week-short":"tj.","field-day-narrow-relative+0":"danas","field-day-narrow-relative+1":"sutra","field-day-narrow-relative+2":"prekosutra","field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-month-short-relative+-1":"prošli mj.","field-mon-relative+-1":"prošli ponedjeljak","field-month":"mjesec","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dateFormat-medium":"d. M. y.","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+-1":"jučer","field-year-short":"g.","field-day-narrow-relative+-2":"prekjučer","field-quarter-relative+-1":"prošli kvartal","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"prošli tj.","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","field-hour":"sat","dateFormat-full":"E, d. M. y.","field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošli tjedan","field-quarter-short-relative+-1":"prošli kv.","field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormat-short":"d. M. y.","field-thu-short-relative+-1":"prošli čet.","field-year-narrow-relative+-1":"prošle g.","field-mon-narrow-relative+-1":"prošli pon.","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","field-weekOfMonth-short":"tj. u mj.","field-wed-short-relative+0":"ova sri.","field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","field-weekday":"dan u tjednu","field-day-short-relative+0":"danas","field-quarter-narrow-relative+0":"ovaj kv.","field-sat-relative+0":"ova subota","field-day-short-relative+1":"sutra","field-quarter-narrow-relative+1":"sljedeći kv.","field-sat-relative+1":"sljedeća subota","field-day-short-relative+2":"prekosutra","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","field-dayOfYear-narrow":"dan u g.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","field-weekdayOfMonth-short":"radni dan u mj.","field-zone-narrow":"zona","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","field-fri-short-relative+-1":"prošli pet.","field-thu-relative+-1":"prošli četvrtak","field-week":"tjedan","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-quarter-narrow-relative+-1":"prošli kv.","field-year-short-relative+0":"ove god.","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"sljedeće god.","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","field-week-short-relative+-1":"prošli tj.","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min","field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-year-short-relative+-1":"prošle god.","field-zone":"vremenska zona","field-weekOfMonth-narrow":"tj. u mjesecu","field-weekday-narrow":"dan u tj.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u tjed.","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","field-day-short":"d.","field-week-narrow":"tj.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/currency.js b/lib/dojo/cldr/nls/hr/currency.js
index b6e8fd94f..9c1a03d84 100644
--- a/lib/dojo/cldr/nls/hr/currency.js
+++ b/lib/dojo/cldr/nls/hr/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hr/currency",{"HKD_displayName":"hongkonški dolar","CHF_displayName":"švicarski franak","JPY_symbol":"JPY","CAD_displayName":"kanadski dolar","HKD_symbol":"HKD","CNY_displayName":"kineski yuan","USD_symbol":"USD","AUD_displayName":"australski dolar","JPY_displayName":"japanski jen","CAD_symbol":"CAD","USD_displayName":"američki dolar","CNY_symbol":"CNY","GBP_displayName":"britanska funta","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/hr/currency",{"HKD_displayName":"hongkonški dolar","CNY_displayName":"kineski yuan","JPY_displayName":"japanski jen","JPY_symbol":"JPY","USD_displayName":"američki dolar","CAD_symbol":"CAD","GBP_displayName":"britanska funta","CHF_displayName":"švicarski franak","CNY_symbol":"CNY","EUR_displayName":"euro","GBP_symbol":"GBP","CAD_displayName":"kanadski dolar","USD_symbol":"USD","EUR_symbol":"EUR","AUD_displayName":"australski dolar","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/ethiopic.js b/lib/dojo/cldr/nls/hr/ethiopic.js
new file mode 100644
index 000000000..220a9b248
--- /dev/null
+++ b/lib/dojo/cldr/nls/hr/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/hr/ethiopic",{"field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-month-narrow-relative+-1":"prošli mj.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","field-day-short-relative+-1":"jučer","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-short-relative+-2":"prekjučer","field-day-relative+1":"sutra","field-week-narrow-relative+0":"ovaj tj.","field-day-relative+2":"prekosutra","field-week-narrow-relative+1":"sljedeći tj.","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-year-narrow-relative+0":"ove g.","field-tue-relative+0":"ovaj utorak","field-year-narrow-relative+1":"sljedeće g.","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"radni dan u mjesecu","field-second-short":"s","field-weekdayOfMonth-narrow":"r. dan u mj.","field-week-relative+0":"ovaj tjedan","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeći tjedan","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon.","field-second-relative+0":"sad","months-standAlone-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12.","13."],"field-weekOfMonth":"tjedan u mjesecu","field-month-short":"mj.","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","field-wed-relative+-1":"prošla srijeda","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","field-quarter":"kvartal","field-week-short":"tj.","field-day-narrow-relative+0":"danas","field-day-narrow-relative+1":"sutra","field-day-narrow-relative+2":"prekosutra","field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-month-short-relative+-1":"prošli mj.","field-mon-relative+-1":"prošli ponedjeljak","field-month":"mjesec","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+-1":"jučer","field-year-short":"g.","field-day-narrow-relative+-2":"prekjučer","field-quarter-relative+-1":"prošli kvartal","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"prošli tj.","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","field-hour":"sat","months-format-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošli tjedan","field-quarter-short-relative+-1":"prošli kv.","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","field-thu-short-relative+-1":"prošli čet.","field-year-narrow-relative+-1":"prošle g.","field-mon-narrow-relative+-1":"prošli pon.","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","field-weekOfMonth-short":"tj. u mj.","field-wed-short-relative+0":"ova sri.","months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","field-weekday":"dan u tjednu","field-day-short-relative+0":"danas","field-quarter-narrow-relative+0":"ovaj kv.","field-sat-relative+0":"ova subota","field-day-short-relative+1":"sutra","field-quarter-narrow-relative+1":"sljedeći kv.","field-sat-relative+1":"sljedeća subota","field-day-short-relative+2":"prekosutra","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-dayOfYear-narrow":"dan u g.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","field-weekdayOfMonth-short":"radni dan u mj.","field-zone-narrow":"zona","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","field-fri-short-relative+-1":"prošli pet.","field-thu-relative+-1":"prošli četvrtak","field-week":"tjedan","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-quarter-narrow-relative+-1":"prošli kv.","field-year-short-relative+0":"ove god.","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"sljedeće god.","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","field-week-short-relative+-1":"prošli tj.","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min","field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-year-short-relative+-1":"prošle god.","field-zone":"vremenska zona","field-weekOfMonth-narrow":"tj. u mjesecu","field-weekday-narrow":"dan u tj.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u tjed.","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","field-day-short":"d.","field-week-narrow":"tj.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/generic.js b/lib/dojo/cldr/nls/hr/generic.js
index 1f55f9ec3..99c469469 100644
--- a/lib/dojo/cldr/nls/hr/generic.js
+++ b/lib/dojo/cldr/nls/hr/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hr/generic",{"field-second-relative+0":"sada","field-weekday":"Dan u tjednu","field-wed-relative+0":"ova srijeda","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E, d. MMM","field-wed-relative+1":"sljedeća srijeda","field-tue-relative+-1":"prošli utorak","dateFormat-long":"d. MMMM y. G","field-fri-relative+-1":"prošli petak","field-wed-relative+-1":"prošla srijeda","dateFormatItem-yyyyQQQ":"QQQ y. G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE, d. MMMM y. G","dateFormatItem-yyyyMEd":"E, dd.MM.y. GGGGG","field-thu-relative+-1":"prošli četvrtak","dateFormatItem-Md":"dd.MM.","field-era":"Era","field-year":"Godina","dateFormatItem-yyyyMMMM":"LLLL y. G","field-hour":"Sat","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-thu-relative+0":"ovaj četvrtak","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"prekosutra","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-H":"HH","dateFormatItem-Gy":"y. G","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","dateFormatItem-M":"L.","dateFormatItem-yyyyMMM":"LLL y. G","dateFormatItem-yyyyMMMd":"d. MMM y. G","dateFormatItem-MMMMd":"d. MMMM","field-sun-relative+0":"ova nedjelja","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"sljedeća nedjelja","field-minute":"Minuta","field-dayperiod":"AM/PM","dateFormatItem-d":"d.","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"jučer","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"prekjučer","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, dd.MM.","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","field-day":"Dan","field-zone":"Vremenska zona","dateFormatItem-y":"y. G","field-year-relative+-1":"prošle godine","field-month-relative+-1":"prošli mjesec","dateFormatItem-hm":"hh:mm a","dateFormatItem-yyyyMd":"dd.MM.y. GGGGG","field-month":"Mjesec","dateFormatItem-MMM":"LLL","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","dateFormatItem-MMMMEd":"E, d. MMMM","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","dateFormat-short":"dd.MM.y. GGGGG","field-second":"Sekunda","field-sat-relative+-1":"prošla subota","field-sun-relative+-1":"prošla nedjelja","field-month-relative+0":"ovaj mjesec","field-month-relative+1":"sljedeći mjesec","dateFormatItem-Ed":"E, d.","field-week":"Tjedan","dateFormat-medium":"d. M. y. G","field-year-relative+0":"ove godine","field-week-relative+-1":"prošli tjedan","dateFormatItem-yyyyM":"MM.y. GGGGG","field-year-relative+1":"sljedeće godine","dateFormatItem-yyyyQQQQ":"QQQQ y. G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"LLL y. G","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-yyyy":"y. G","field-week-relative+0":"ovaj tjedan","field-week-relative+1":"sljedeći tjedan"}); \ No newline at end of file
+define("dojo/cldr/nls/hr/generic",{"field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","field-tue-relative+-1":"prošli utorak","field-year":"godina","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","dateFormatItem-ms":"mm:ss","field-minute":"minuta","field-month-narrow-relative+-1":"prošli mj.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-day-short-relative+-1":"jučer","field-thu-short-relative+0":"ovaj čet.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"danas","field-day-short-relative+-2":"prekjučer","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+1":"sutra","field-week-narrow-relative+0":"ovaj tj.","field-day-relative+2":"prekosutra","field-week-narrow-relative+1":"sljedeći tj.","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-year-narrow-relative+0":"ove g.","field-tue-relative+0":"ovaj utorak","field-year-narrow-relative+1":"sljedeće g.","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"radni dan u mjesecu","field-second-short":"s","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"r. dan u mj.","field-week-relative+0":"ovaj tjedan","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeći tjedan","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon.","field-second-relative+0":"sad","dateFormatItem-yyyyQQQ":"QQQ y. G","field-weekOfMonth":"tjedan u mjesecu","field-month-short":"mj.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"dd. MM. y. GGGGG","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","dateFormatItem-yyyyMEd":"E, dd. MM. y. GGGGG","field-wed-relative+-1":"prošla srijeda","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"kvartal","field-week-short":"tj.","field-day-narrow-relative+0":"danas","field-day-narrow-relative+1":"sutra","field-day-narrow-relative+2":"prekosutra","field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-month-short-relative+-1":"prošli mj.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"LLL y. G","field-month":"mjesec","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dateFormat-medium":"d. MMM y. G","dateFormatItem-yyyyMMMM":"LLLL y. G","dateFormatItem-yyyyM":"MM. y. GGGGG","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+-1":"jučer","field-year-short":"g.","field-day-narrow-relative+-2":"prekjučer","field-quarter-relative+-1":"prošli kvartal","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"prošli tj.","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-Md":"dd. MM.","field-hour":"sat","dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"prošli mjesec","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošli tjedan","field-quarter-short-relative+-1":"prošli kv.","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormat-short":"dd. MM. y. GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"prošle g.","field-thu-short-relative+-1":"prošli čet.","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"tj. u mj.","field-tue-narrow-relative+-1":"prošli uto.","dateFormatItem-yyyy":"y. G","dateFormatItem-M":"L.","field-wed-short-relative+0":"ova sri.","field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","dateFormatItem-MMMMEd":"E, d. MMMM","dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d.","field-weekday":"dan u tjednu","field-day-short-relative+0":"danas","field-quarter-narrow-relative+0":"ovaj kv.","field-day-short-relative+1":"sutra","field-sat-relative+0":"ova subota","field-quarter-narrow-relative+1":"sljedeći kv.","dateFormatItem-h":"hh a","field-day-short-relative+2":"prekosutra","field-sat-relative+1":"sljedeća subota","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","field-dayOfYear-narrow":"dan u g.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","field-weekdayOfMonth-short":"radni dan u mj.","dateFormatItem-MEd":"E, dd. MM.","field-zone-narrow":"zona","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"ovaj čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-narrow-relative+1":"sljedeći čet.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-hms":"hh:mm:ss a","field-fri-short-relative+-1":"prošli pet.","field-thu-relative+-1":"prošli četvrtak","field-week":"tjedan","dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-quarter-narrow-relative+-1":"prošli kv.","field-year-short-relative+0":"ove god.","dateFormatItem-yyyyMMM":"LLL y. G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"sljedeće god.","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","field-week-short-relative+-1":"prošli tj.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min","field-mon-narrow-relative+0":"ovaj pon.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"sljedeći pon.","field-year-short-relative+-1":"prošle god.","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"tj. u mjesecu","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"dan u tj.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u tjed.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-Gy":"y. G","field-day-short":"d.","field-week-narrow":"tj.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/gregorian.js b/lib/dojo/cldr/nls/hr/gregorian.js
index 25bcfd231..85f149d5e 100644
--- a/lib/dojo/cldr/nls/hr/gregorian.js
+++ b/lib/dojo/cldr/nls/hr/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hr/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"months-format-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-second-relative+0":"sada","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"Dan u tjednu","dateFormatItem-yQQQ":"QQQ y.","dateFormatItem-yMEd":"E, dd.MM.y.","field-wed-relative+0":"ova srijeda","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E, d. MMM","field-wed-relative+1":"sljedeća srijeda","eraNarrow":["pr.n.e.","AD"],"dateFormatItem-yMM":"MM. y.","field-tue-relative+-1":"prošli utorak","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"dateFormat-long":"d. MMMM y.","field-fri-relative+-1":"prošli petak","field-wed-relative+-1":"prošla srijeda","months-format-wide":["siječnja","veljače","ožujka","travnja","svibnja","lipnja","srpnja","kolovoza","rujna","listopada","studenoga","prosinca"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, d. MMMM y.","field-thu-relative+-1":"prošli četvrtak","dateFormatItem-Md":"dd.MM.","dayPeriods-format-wide-noon":"podne","dateFormatItem-yMd":"dd.MM.y.","dateFormatItem-yM":"MM.y.","field-era":"Era","months-standAlone-wide":["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"LLL y.","dateFormatItem-yQQQQ":"QQQQ y.","field-year":"Godina","dateFormatItem-MMdd":"dd. MM.","field-hour":"Sat","months-format-abbr":["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],"field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","timeFormat-full":"HH:mm:ss zzzz","dayPeriods-format-narrow-morning":"prijepodne","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-thu-relative+0":"ovaj četvrtak","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"prekosutra","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-H":"HH","months-standAlone-abbr":["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],"quarters-format-abbr":["1kv","2kv","3kv","4kv"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y. G","dateFormatItem-M":"L.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dayPeriods-format-narrow-evening":"navečer","dateFormatItem-MMMMd":"d. MMMM","dayPeriods-format-abbr-noon":"podne","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"ova nedjelja","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1kv","2kv","3kv","4kv"],"field-sun-relative+1":"sljedeća nedjelja","eraAbbr":["pr. Kr.","p. Kr."],"field-minute":"Minuta","field-dayperiod":"AM/PM","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"jučer","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'u' {0}","field-day-relative+-2":"prekjučer","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, dd.MM.","dateTimeFormat-full":"{1} 'u' {0}","field-fri-relative+0":"ovaj petak","dateFormatItem-yMMMM":"LLLL y.","field-fri-relative+1":"sljedeći petak","field-day":"Dan","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-zone":"Vremenska zona","months-standAlone-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"dateFormatItem-y":"y.","field-year-relative+-1":"prošle godine","dayPeriods-format-narrow-night":"noću","field-month-relative+-1":"prošli mjesec","dateFormatItem-hm":"hh:mm a","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"eraNames":["Prije Krista","Poslije Krista"],"dateFormatItem-yMMMd":"d. MMM y.","days-format-narrow":["N","P","U","S","Č","P","S"],"dayPeriods-format-narrow-earlyMorning":"ujutro","days-standAlone-narrow":["n","p","u","s","č","p","s"],"dateFormatItem-MMM":"LLL","field-month":"Mjesec","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"E, d. MMMM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","dateFormat-short":"dd.MM.y.","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-afternoon":"popodne","dayPeriods-format-narrow-noon":"P","field-second":"Sekunda","field-sat-relative+-1":"prošla subota","dateFormatItem-yMMMEd":"E, d. MMM y.","field-sun-relative+-1":"prošla nedjelja","field-month-relative+0":"ovaj mjesec","field-month-relative+1":"sljedeći mjesec","dateFormatItem-Ed":"E, d.","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Tjedan","dateFormat-medium":"d. MMM y.","field-year-relative+0":"ove godine","field-week-relative+-1":"prošli tjedan","field-year-relative+1":"sljedeće godine","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"LLL y. G","field-mon-relative+-1":"prošli ponedjeljak","field-week-relative+0":"ovaj tjedan","field-week-relative+1":"sljedeći tjedan"}); \ No newline at end of file
+define("dojo/cldr/nls/hr/gregorian",{"dateFormatItem-yMMMM":"LLLL y.","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+0":"ova ned.","field-sun-narrow-relative+1":"sljedeća ned.","months-format-wide":["siječnja","veljače","ožujka","travnja","svibnja","lipnja","srpnja","kolovoza","rujna","listopada","studenoga","prosinca"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet.","eraNarrow":["pr.n.e.","AD"],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d. MMM y.","dayPeriods-format-abbr-night1":"noću","dayPeriods-format-narrow-evening1":"navečer","days-standAlone-narrow":["n","p","u","s","č","p","s"],"days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dayPeriods-format-abbr-afternoon1":"popodne","dayPeriods-format-wide-evening1":"navečer","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} ({1})","field-wed-narrow-relative+-1":"prošla sri.","dayPeriods-standAlone-wide-evening1":"navečer","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yMM":"MM. y.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"navečer","dayPeriods-standAlone-abbr-afternoon1":"popodne","field-thu-relative+0":"ovaj četvrtak","dayPeriods-standAlone-abbr-night1":"noću","field-thu-relative+1":"sljedeći četvrtak","dayPeriods-format-wide-am":"AM","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","dateFormatItem-yMd":"dd. MM. y.","field-thu-narrow-relative+-1":"prošli čet.","field-quarter-relative+0":"ovaj kvartal","field-quarter-relative+1":"sljedeći kvartal","field-sun-short-relative+0":"ova ned.","timeFormat-short":"HH:mm","field-sun-short-relative+1":"sljedeća ned.","dateFormatItem-hms":"hh:mm:ss a","dayPeriods-format-narrow-afternoon1":"popodne","dateFormatItem-Md":"dd. MM.","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"tj.","field-hour-relative+0":"ovaj sat","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-mon-narrow-relative+-1":"prošli pon.","field-minute-narrow":"min","dateFormatItem-MMMMEd":"E, d. MMMM","field-thu-short-relative+0":"ovaj čet.","field-mon-relative+0":"ovaj ponedjeljak","field-thu-short-relative+1":"sljedeći čet.","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+0":"danas","field-era-short":"era","field-day-narrow-relative+1":"sutra","field-sat-narrow-relative+0":"ova sub.","field-day-narrow-relative+2":"prekosutra","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"sljedeća sub.","field-week-narrow-relative+0":"ovaj tj.","field-week-narrow-relative+1":"sljedeći tj.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-month":"mjesec","months-standAlone-wide":["siječanj","veljača","ožujak","travanj","svibanj","lipanj","srpanj","kolovoz","rujan","listopad","studeni","prosinac"],"field-weekday-narrow":"dan u tj.","dayPeriods-standAlone-narrow-afternoon1":"popodne","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","dayPeriods-format-abbr-evening1":"navečer","dayPeriods-format-abbr-noon":"podne","dayPeriods-format-narrow-midnight":"ponoć","dayPeriods-format-wide-midnight":"ponoć","field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","dayPeriods-standAlone-abbr-evening1":"navečer","dateFormatItem-hm":"hh:mm a","dayPeriods-standAlone-wide-midnight":"ponoć","field-year-narrow":"g.","dayPeriods-standAlone-abbr-noon":"podne","field-tue-short-relative+0":"ovaj uto.","dayPeriods-standAlone-narrow-midnight":"ponoć","field-tue-short-relative+1":"sljedeći uto.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","dateFormatItem-M":"L.","field-wed-short-relative+0":"ova sri.","field-fri-short-relative+0":"ovaj pet.","field-wed-short-relative+1":"sljedeća sri.","field-fri-short-relative+1":"sljedeći pet.","field-weekOfMonth-short":"tj. u mj.","field-quarter-short-relative+-1":"prošli kv.","field-year-short-relative+-1":"prošle god.","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"noću","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"prošli kv.","dateFormatItem-d":"d.","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"field-weekOfMonth-narrow":"tj. u mjesecu","dateFormatItem-y":"y.","field-minute-relative+0":"ova minuta","field-year-short-relative+0":"ove god.","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"sljedeće god.","field-weekday":"dan u tjednu","dayPeriods-format-narrow-pm":"PM","field-tue-narrow-relative+-1":"prošli uto.","dateFormatItem-yMEd":"E, dd. MM. y.","dayPeriods-standAlone-wide-night1":"noću","field-year-narrow-relative+-1":"prošle g.","field-sat-relative+-1":"prošla subota","dayPeriods-format-abbr-midnight":"ponoć","dayPeriods-format-narrow-morning1":"ujutro","dayPeriods-format-wide-morning1":"ujutro","dayPeriods-standAlone-abbr-midnight":"ponoć","dayPeriods-standAlone-narrow-pm":"PM","dayPeriods-standAlone-wide-morning1":"ujutro","field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-second":"sekunda","dateFormatItem-yMMMEd":"E, d. MMM y.","field-year-relative+-1":"prošle godine","field-weekdayOfMonth-short":"radni dan u mj.","dateFormat-short":"dd. MM. y.","eraNames":["prije Krista","poslije Krista"],"field-second-short":"s","field-thu-short-relative+-1":"prošli čet.","field-zone":"vremenska zona","field-dayperiod-narrow":"AM/PM","field-sun-short-relative+-1":"prošla ned.","dayPeriods-standAlone-narrow-morning1":"ujutro","eraAbbr":["pr. Kr.","po. Kr."],"field-week-short":"tj.","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-day-relative+2":"prekosutra","field-day-short-relative+0":"danas","field-dayOfYear-short":"dan u god.","field-day-short-relative+1":"sutra","dateFormat-long":"d. MMMM y.","field-day-short-relative+2":"prekosutra","field-sun-narrow-relative+-1":"prošla ned.","dayPeriods-format-wide-noon":"podne","field-second-relative+0":"sad","field-quarter-relative+-1":"prošli kvartal","dayPeriods-format-narrow-night1":"noću","quarters-format-abbr":["1kv","2kv","3kv","4kv"],"dayPeriods-standAlone-wide-noon":"podne","dayPeriods-standAlone-narrow-night1":"noću","field-week-relative+-1":"prošli tjedan","dayPeriods-format-abbr-morning1":"ujutro","field-month-relative+-1":"prošli mjesec","months-format-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-year":"godina","field-era":"era","dayPeriods-standAlone-abbr-morning1":"ujutro","days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"quarters-format-narrow":["1.","2.","3.","4."],"dateFormatItem-yQQQQ":"QQQQ y.","field-day-short-relative+-1":"jučer","field-day-short-relative+-2":"prekjučer","dateFormatItem-GyMMM":"LLL y. G","timeFormat-full":"HH:mm:ss (zzzz)","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"sat","field-dayOfYear-narrow":"dan u g.","field-quarter":"kvartal","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","dateFormatItem-MMdd":"dd. MM.","field-day":"dan","field-mon-relative+-1":"prošli ponedjeljak","field-dayOfYear":"dan u godini","dateFormat-medium":"d. MMM y.","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"LLL y.","dateFormatItem-GyMMMd":"d. MMM y. G","dateFormatItem-MEd":"E, dd. MM.","field-tue-short-relative+-1":"prošli uto.","field-year-short":"g.","field-month-short":"mj.","dateFormatItem-MMMEd":"E, d. MMM","dayPeriods-format-wide-afternoon1":"poslije podne","dateFormatItem-MMMd":"d. MMM","dateFormatItem-Bh":"h B","months-format-abbr":["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","dayPeriods-format-wide-pm":"PM","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"field-zone-short":"zona","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","dayPeriods-standAlone-wide-afternoon1":"popodne","field-fri-short-relative+-1":"prošli pet.","field-month-narrow":"m.","dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"prošli mj.","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"field-weekday-short":"dan u tjed.","field-day-narrow-relative+-1":"jučer","field-day-narrow-relative+-2":"prekjučer","field-quarter-short":"kv.","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"months-standAlone-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"days-format-narrow":["N","P","U","S","Č","P","S"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"kv.","field-mon-short-relative+0":"ovaj pon.","field-mon-short-relative+1":"sljedeći pon.","field-dayperiod-short":"AM/PM","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"prošli tj.","field-thu-relative+-1":"prošli četvrtak","field-fri-narrow-relative+-1":"prošli pet.","field-mon-short-relative+-1":"prošli pon.","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","dateFormatItem-Ed":"E, d.","field-wed-relative+-1":"prošla srijeda","field-weekOfMonth":"tjedan u mjesecu","field-weekdayOfMonth-narrow":"r. dan u mj.","dayPeriods-standAlone-wide-am":"AM","dateFormatItem-yQQQ":"QQQ y.","field-fri-relative+-1":"prošli petak","field-minute":"minuta","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"field-day-short":"d.","field-dayperiod":"AM/PM","field-hour-short":"h","months-standAlone-abbr":["sij","velj","ožu","tra","svi","lip","srp","kol","ruj","lis","stu","pro"],"field-month-relative+0":"ovaj mjesec","field-second-narrow":"s","field-month-relative+1":"sljedeći mjesec","dateFormat-full":"EEEE, d. MMMM y.","field-era-narrow":"era","field-sat-short-relative+-1":"prošla sub.","dayPeriods-format-narrow-noon":"podne","field-week-short-relative+-1":"prošli tj.","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-yM":"MM. y.","field-sun-relative+-1":"prošla nedjelja","field-wed-short-relative+-1":"prošla sri.","field-weekdayOfMonth":"radni dan u mjesecu","field-quarter-narrow-relative+0":"ovaj kv.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","field-quarter-narrow-relative+1":"sljedeći kv.","field-sat-short-relative+0":"ova sub.","field-hour-narrow":"h","field-sat-short-relative+1":"sljedeća sub.","field-year-narrow-relative+0":"ove g.","field-year-narrow-relative+1":"sljedeće g.","dateFormatItem-Gy":"y. G","field-zone-narrow":"zona","dayPeriods-standAlone-narrow-noon":"podne","field-tue-relative+-1":"prošli utorak","field-minute-short":"min","dateFormatItem-yw":"w. 'tjedan' 'u' Y.","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"ovaj tjedan","field-week-relative+1":"sljedeći tjedan","dateFormatItem-MMM":"LLL","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","field-sat-narrow-relative+-1":"prošla sub.","quarters-standAlone-abbr":["1. kv.","2. kv.","3. kv.","4. kv."],"dateFormatItem-MMMMW":"W. 'tjedan' MMMM","field-month-short-relative+-1":"prošli mj.","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d. MMMM","field-week":"tjedan","field-day-narrow":"d."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/hebrew.js b/lib/dojo/cldr/nls/hr/hebrew.js
index 95fff755d..91aa9086f 100644
--- a/lib/dojo/cldr/nls/hr/hebrew.js
+++ b/lib/dojo/cldr/nls/hr/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hr/hebrew",{"days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"field-second-relative+0":"sada","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"Dan u tjednu","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E, d. MMM","field-tue-relative+-1":"prošli utorak","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"dateFormat-long":"d. MMMM y. G","field-fri-relative+-1":"prošli petak","field-wed-relative+-1":"prošla srijeda","dateFormatItem-yyyyQQQ":"QQQ y. G","dateFormat-full":"EEEE, d. MMMM y. G","dateFormatItem-yyyyMEd":"E, dd.MM.y. GGGGG","field-thu-relative+-1":"prošli četvrtak","dateFormatItem-Md":"dd.MM.","dayPeriods-format-wide-noon":"podne","field-era":"Era","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"field-year":"Godina","field-hour":"Sat","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-day-relative+0":"danas","field-thu-relative+0":"ovaj četvrtak","field-day-relative+1":"sutra","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"prekosutra","quarters-format-abbr":["1kv","2kv","3kv","4kv"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y. G","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","dateFormatItem-M":"L.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yyyyMMM":"LLL y. G","dateFormatItem-yyyyMMMd":"d. MMM y. G","dayPeriods-format-abbr-noon":"podne","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","quarters-standAlone-abbr":["1kv","2kv","3kv","4kv"],"eraAbbr":["AM"],"field-minute":"Minuta","field-dayperiod":"AM/PM","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateFormatItem-d":"d.","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"jučer","dateFormatItem-h":"hh a","field-day-relative+-2":"prekjučer","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, dd.MM.","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","field-day":"Dan","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-zone":"Vremenska zona","dateFormatItem-y":"y. G","field-year-relative+-1":"prošle godine","field-month-relative+-1":"prošli mjesec","dateFormatItem-hm":"hh:mm a","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"days-format-narrow":["N","P","U","S","Č","P","S"],"dateFormatItem-yyyyMd":"dd.MM.y. GGGGG","field-month":"Mjesec","days-standAlone-narrow":["n","p","u","s","č","p","s"],"field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","dateFormat-short":"dd.MM.y. GGGGG","field-second":"Sekunda","field-sat-relative+-1":"prošla subota","field-sun-relative+-1":"prošla nedjelja","field-month-relative+0":"ovaj mjesec","field-month-relative+1":"sljedeći mjesec","dateFormatItem-Ed":"E, d.","field-week":"Tjedan","dateFormat-medium":"d. M. y. G","field-year-relative+0":"ove godine","field-week-relative+-1":"prošli tjedan","dateFormatItem-yyyyM":"MM.y. GGGGG","field-year-relative+1":"sljedeće godine","dateFormatItem-yyyyQQQQ":"QQQQ y. G","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"LLL y. G","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-yyyy":"y. G","field-week-relative+0":"ovaj tjedan","field-week-relative+1":"sljedeći tjedan"}); \ No newline at end of file
+define("dojo/cldr/nls/hr/hebrew",{"field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-month-narrow-relative+-1":"prošli mj.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","field-day-short-relative+-1":"jučer","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-short-relative+-2":"prekjučer","field-day-relative+1":"sutra","field-week-narrow-relative+0":"ovaj tj.","field-day-relative+2":"prekosutra","field-week-narrow-relative+1":"sljedeći tj.","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-year-narrow-relative+0":"ove g.","field-tue-relative+0":"ovaj utorak","field-year-narrow-relative+1":"sljedeće g.","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"radni dan u mjesecu","field-second-short":"s","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"r. dan u mj.","field-week-relative+0":"ovaj tjedan","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeći tjedan","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon.","field-second-relative+0":"sad","dateFormatItem-yyyyQQQ":"QQQ y. G","field-weekOfMonth":"tjedan u mjesecu","field-month-short":"mj.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"dd. MM. y. GGGGG","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","dateFormatItem-yyyyMEd":"E, dd. MM. y. GGGGG","field-wed-relative+-1":"prošla srijeda","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","č","p","s"],"dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"kvartal","field-week-short":"tj.","field-day-narrow-relative+0":"danas","field-day-narrow-relative+1":"sutra","field-day-narrow-relative+2":"prekosutra","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["N","P","U","S","Č","P","S"],"field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-month-short-relative+-1":"prošli mj.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"LLL y. G","field-month":"mjesec","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dateFormat-medium":"d. MMM y. G","dateFormatItem-yyyyMMMM":"LLLL y. G","eraAbbr":["AM"],"quarters-standAlone-abbr":["1. kv.","2. kv.","3. kv.","4. kv."],"dateFormatItem-yyyyM":"MM. y. GGGGG","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+-1":"jučer","field-year-short":"g.","field-day-narrow-relative+-2":"prekjučer","field-quarter-relative+-1":"prošli kvartal","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"prošli tj.","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"quarters-format-narrow":["1.","2.","3.","4."],"field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-Md":"dd. MM.","field-hour":"sat","dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošli tjedan","field-quarter-short-relative+-1":"prošli kv.","field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormat-short":"dd. MM. y. GGGGG","field-thu-short-relative+-1":"prošli čet.","field-year-narrow-relative+-1":"prošle g.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","field-weekOfMonth-short":"tj. u mj.","dateFormatItem-yyyy":"y. G","field-wed-short-relative+0":"ova sri.","dateFormatItem-M":"L.","field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d.","field-weekday":"dan u tjednu","field-day-short-relative+0":"danas","field-quarter-narrow-relative+0":"ovaj kv.","field-sat-relative+0":"ova subota","field-day-short-relative+1":"sutra","field-quarter-narrow-relative+1":"sljedeći kv.","dateFormatItem-h":"hh a","field-sat-relative+1":"sljedeća subota","field-day-short-relative+2":"prekosutra","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","field-dayOfYear-narrow":"dan u g.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","field-weekdayOfMonth-short":"radni dan u mj.","timeFormat-full":"HH:mm:ss (zzzz)","dateFormatItem-MEd":"E, dd. MM.","field-zone-narrow":"zona","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","field-fri-short-relative+-1":"prošli pet.","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"prošli četvrtak","field-week":"tjedan","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-quarter-narrow-relative+-1":"prošli kv.","field-year-short-relative+0":"ove god.","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y. G","field-year-short-relative+1":"sljedeće god.","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"field-week-short-relative+-1":"prošli tj.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"h","field-zone-short":"zona","quarters-format-abbr":["1kv","2kv","3kv","4kv"],"field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-year-short-relative+-1":"prošle god.","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"tj. u mjesecu","field-weekday-narrow":"dan u tj.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u tjed.","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-Gy":"y. G","field-day-short":"d.","field-week-narrow":"tj.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/indian.js b/lib/dojo/cldr/nls/hr/indian.js
new file mode 100644
index 000000000..3ae4ef491
--- /dev/null
+++ b/lib/dojo/cldr/nls/hr/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/hr/indian",{"field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-month-narrow-relative+-1":"prošli mj.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","field-day-short-relative+-1":"jučer","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-short-relative+-2":"prekjučer","field-day-relative+1":"sutra","field-week-narrow-relative+0":"ovaj tj.","field-day-relative+2":"prekosutra","field-week-narrow-relative+1":"sljedeći tj.","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-year-narrow-relative+0":"ove g.","field-tue-relative+0":"ovaj utorak","field-year-narrow-relative+1":"sljedeće g.","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"radni dan u mjesecu","field-second-short":"s","field-weekdayOfMonth-narrow":"r. dan u mj.","field-week-relative+0":"ovaj tjedan","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeći tjedan","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon.","field-second-relative+0":"sad","months-standAlone-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-weekOfMonth":"tjedan u mjesecu","field-month-short":"mj.","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","field-wed-relative+-1":"prošla srijeda","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","field-quarter":"kvartal","field-week-short":"tj.","field-day-narrow-relative+0":"danas","field-day-narrow-relative+1":"sutra","field-day-narrow-relative+2":"prekosutra","field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-month-short-relative+-1":"prošli mj.","field-mon-relative+-1":"prošli ponedjeljak","field-month":"mjesec","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","eraAbbr":["Saka"],"field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+-1":"jučer","field-year-short":"g.","field-day-narrow-relative+-2":"prekjučer","field-quarter-relative+-1":"prošli kvartal","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"prošli tj.","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","field-hour":"sat","months-format-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošli tjedan","field-quarter-short-relative+-1":"prošli kv.","months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","field-thu-short-relative+-1":"prošli čet.","field-year-narrow-relative+-1":"prošle g.","field-mon-narrow-relative+-1":"prošli pon.","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","field-weekOfMonth-short":"tj. u mj.","field-wed-short-relative+0":"ova sri.","months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","field-weekday":"dan u tjednu","field-day-short-relative+0":"danas","field-quarter-narrow-relative+0":"ovaj kv.","field-sat-relative+0":"ova subota","field-day-short-relative+1":"sutra","field-quarter-narrow-relative+1":"sljedeći kv.","field-day-short-relative+2":"prekosutra","field-sat-relative+1":"sljedeća subota","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-dayOfYear-narrow":"dan u g.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","field-weekdayOfMonth-short":"radni dan u mj.","field-zone-narrow":"zona","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","field-fri-short-relative+-1":"prošli pet.","field-thu-relative+-1":"prošli četvrtak","field-week":"tjedan","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-quarter-narrow-relative+-1":"prošli kv.","field-year-short-relative+0":"ove god.","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"sljedeće god.","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","field-week-short-relative+-1":"prošli tj.","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min","field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-year-short-relative+-1":"prošle god.","field-zone":"vremenska zona","field-weekOfMonth-narrow":"tj. u mjesecu","field-weekday-narrow":"dan u tj.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u tjed.","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","field-day-short":"d.","field-week-narrow":"tj.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/islamic.js b/lib/dojo/cldr/nls/hr/islamic.js
index d54cd25d6..1193b9b3c 100644
--- a/lib/dojo/cldr/nls/hr/islamic.js
+++ b/lib/dojo/cldr/nls/hr/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hr/islamic",{"days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"field-second-relative+0":"sada","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"Dan u tjednu","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E, d. MMM","field-tue-relative+-1":"prošli utorak","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"dateFormat-long":"d. MMMM y. G","field-fri-relative+-1":"prošli petak","field-wed-relative+-1":"prošla srijeda","dateFormatItem-yyyyQQQ":"QQQ y. G","dateFormat-full":"EEEE, d. MMMM y. G","dateFormatItem-yyyyMEd":"E, dd.MM.y. GGGGG","field-thu-relative+-1":"prošli četvrtak","dateFormatItem-Md":"d. M.","dayPeriods-format-wide-noon":"podne","field-era":"Era","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"field-year":"Godina","field-hour":"Sat","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-day-relative+0":"danas","field-thu-relative+0":"ovaj četvrtak","field-day-relative+1":"sutra","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"prekosutra","quarters-format-abbr":["1kv","2kv","3kv","4kv"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y. G","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","dateFormatItem-M":"L.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yyyyMMM":"LLL y. G","dateFormatItem-yyyyMMMd":"d. MMM y. G","dayPeriods-format-abbr-noon":"podne","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","quarters-standAlone-abbr":["1kv","2kv","3kv","4kv"],"eraAbbr":["AH"],"field-minute":"Minuta","field-dayperiod":"AM/PM","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateFormatItem-d":"d.","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"jučer","dateFormatItem-h":"hh a","field-day-relative+-2":"prekjučer","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d. M.","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","field-day":"Dan","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-zone":"Vremenska zona","dateFormatItem-y":"y. G","field-year-relative+-1":"prošle godine","field-month-relative+-1":"prošli mjesec","dateFormatItem-hm":"hh:mm a","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"days-format-narrow":["N","P","U","S","Č","P","S"],"dateFormatItem-yyyyMd":"dd.MM.y. GGGGG","field-month":"Mjesec","days-standAlone-narrow":["n","p","u","s","č","p","s"],"field-tue-relative+0":"ovaj utorak","field-tue-relative+1":"sljedeći utorak","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","dateFormat-short":"d.M.y. GGGGG","field-second":"Sekunda","field-sat-relative+-1":"prošla subota","field-sun-relative+-1":"prošla nedjelja","field-month-relative+0":"ovaj mjesec","field-month-relative+1":"sljedeći mjesec","dateFormatItem-Ed":"E, d.","field-week":"Tjedan","dateFormat-medium":"d. M. y. G","field-year-relative+0":"ove godine","field-week-relative+-1":"prošli tjedan","dateFormatItem-yyyyM":"MM.y. GGGGG","field-year-relative+1":"sljedeće godine","dateFormatItem-yyyyQQQQ":"QQQQ y. G","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"LLL y. G","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-yyyy":"y. G","field-week-relative+0":"ovaj tjedan","field-week-relative+1":"sljedeći tjedan"}); \ No newline at end of file
+define("dojo/cldr/nls/hr/islamic",{"field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-month-narrow-relative+-1":"prošli mj.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","field-day-short-relative+-1":"jučer","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-short-relative+-2":"prekjučer","field-day-relative+1":"sutra","field-week-narrow-relative+0":"ovaj tj.","field-day-relative+2":"prekosutra","field-week-narrow-relative+1":"sljedeći tj.","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-year-narrow-relative+0":"ove g.","field-tue-relative+0":"ovaj utorak","field-year-narrow-relative+1":"sljedeće g.","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"radni dan u mjesecu","field-second-short":"s","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"r. dan u mj.","field-week-relative+0":"ovaj tjedan","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeći tjedan","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon.","field-second-relative+0":"sad","dateFormatItem-yyyyQQQ":"QQQ y. G","months-standAlone-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-weekOfMonth":"tjedan u mjesecu","field-month-short":"mj.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"dd. MM. y. GGGGG","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","dateFormatItem-yyyyMEd":"E, dd. MM. y. GGGGG","field-wed-relative+-1":"prošla srijeda","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","č","p","s"],"dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"kvartal","field-week-short":"tj.","field-day-narrow-relative+0":"danas","field-day-narrow-relative+1":"sutra","field-day-narrow-relative+2":"prekosutra","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["N","P","U","S","Č","P","S"],"field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-month-short-relative+-1":"prošli mj.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"LLL y. G","field-month":"mjesec","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dateFormat-medium":"d. M. y. G","dateFormatItem-yyyyMMMM":"LLLL y. G","eraAbbr":["AH"],"quarters-standAlone-abbr":["1. kv.","2. kv.","3. kv.","4. kv."],"dateFormatItem-yyyyM":"MM. y. GGGGG","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+-1":"jučer","field-year-short":"g.","field-day-narrow-relative+-2":"prekjučer","months-format-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-quarter-relative+-1":"prošli kvartal","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"prošli tj.","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"quarters-format-narrow":["1.","2.","3.","4."],"field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-Md":"d. M.","field-hour":"sat","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošli tjedan","field-quarter-short-relative+-1":"prošli kv.","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormat-short":"d. M. y. GGGGG","field-thu-short-relative+-1":"prošli čet.","field-year-narrow-relative+-1":"prošle g.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","field-weekOfMonth-short":"tj. u mj.","dateFormatItem-yyyy":"y. G","field-wed-short-relative+0":"ova sri.","dateFormatItem-M":"L.","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d.","field-weekday":"dan u tjednu","field-day-short-relative+0":"danas","field-quarter-narrow-relative+0":"ovaj kv.","field-sat-relative+0":"ova subota","field-day-short-relative+1":"sutra","field-quarter-narrow-relative+1":"sljedeći kv.","field-day-short-relative+2":"prekosutra","field-sat-relative+1":"sljedeća subota","dateFormatItem-h":"hh a","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-dayOfYear-narrow":"dan u g.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","field-weekdayOfMonth-short":"radni dan u mj.","timeFormat-full":"HH:mm:ss (zzzz)","dateFormatItem-MEd":"E, d. M.","field-zone-narrow":"zona","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"ovaj čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-narrow-relative+1":"sljedeći čet.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","field-fri-short-relative+-1":"prošli pet.","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"prošli četvrtak","field-week":"tjedan","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-quarter-narrow-relative+-1":"prošli kv.","field-year-short-relative+0":"ove god.","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y. G","field-year-short-relative+1":"sljedeće god.","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"field-week-short-relative+-1":"prošli tj.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"h","field-zone-short":"zona","quarters-format-abbr":["1kv","2kv","3kv","4kv"],"field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-year-short-relative+-1":"prošle god.","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"tj. u mjesecu","field-weekday-narrow":"dan u tj.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u tjed.","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-Gy":"y. G","field-day-short":"d.","field-week-narrow":"tj.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/japanese.js b/lib/dojo/cldr/nls/hr/japanese.js
index ebbe468f3..89a75e897 100644
--- a/lib/dojo/cldr/nls/hr/japanese.js
+++ b/lib/dojo/cldr/nls/hr/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hr/japanese",{"dateFormatItem-yM":"M. y. GGGGG","field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-dayperiod":"AM/PM","field-sun-relative+-1":"prošla nedjelja","field-mon-relative+-1":"prošli ponedjeljak","field-minute":"Minuta","dateFormatItem-MMMEd":"E, d. MMM","field-day-relative+-1":"jučer","field-weekday":"Dan u tjednu","dateFormatItem-yQQQ":"QQQ y. GGGGG","field-day-relative+-2":"prekjučer","field-era":"Era","dateFormatItem-Gy":"y. GGG","field-hour":"Sat","dateFormatItem-y":"y. GGG","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","field-wed-relative+-1":"prošla srijeda","dateFormatItem-Ed":"E, d.","dateFormatItem-yMMM":"LLL y. GGGGG","field-day-relative+0":"danas","field-day-relative+1":"sutra","field-day-relative+2":"prekosutra","field-tue-relative+0":"ovaj utorak","field-zone":"Vremenska zona","field-tue-relative+1":"sljedeći utorak","field-week-relative+-1":"prošli tjedan","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-sat-relative+-1":"prošla subota","dateFormatItem-yMd":"d. M. y. GGGGG","field-year-relative+-1":"prošle godine","field-year":"Godina","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","field-week":"Tjedan","field-week-relative+0":"ovaj tjedan","field-week-relative+1":"sljedeći tjedan","field-month-relative+0":"ovaj mjesec","field-month":"Mjesec","field-month-relative+1":"sljedeći mjesec","field-fri-relative+-1":"prošli petak","dateFormatItem-MMMMd":"d. MMMM","dateFormatItem-yMMMd":"d. MMM y. GGGGG","field-second":"Sekunda","field-tue-relative+-1":"prošli utorak","field-day":"Dan","dateFormatItem-MEd":"E, d. M.","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-thu-relative+0":"ovaj četvrtak","field-second-relative+0":"sada","field-thu-relative+1":"sljedeći četvrtak","dateFormatItem-yMMMEd":"E, d. MMM y. GGGGG","dateFormatItem-Md":"d. M.","dateFormatItem-yMEd":"E, d. M. y. GGGGG","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-month-relative+-1":"prošli mjesec","field-thu-relative+-1":"prošli četvrtak"}); \ No newline at end of file
+define("dojo/cldr/nls/hr/japanese",{"field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-month-narrow-relative+-1":"prošli mj.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-day-short-relative+-1":"jučer","field-thu-short-relative+0":"ovaj čet.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"danas","field-day-short-relative+-2":"prekjučer","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+1":"sutra","field-week-narrow-relative+0":"ovaj tj.","field-day-relative+2":"prekosutra","field-week-narrow-relative+1":"sljedeći tj.","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-year-narrow-relative+0":"ove g.","field-tue-relative+0":"ovaj utorak","field-year-narrow-relative+1":"sljedeće g.","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"radni dan u mjesecu","field-second-short":"s","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"r. dan u mj.","field-week-relative+0":"ovaj tjedan","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeći tjedan","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon.","field-second-relative+0":"sad","dateFormatItem-yyyyQQQ":"QQQ y. G","field-weekOfMonth":"tjedan u mjesecu","field-month-short":"mj.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"d. M. y. G","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","dateFormatItem-yyyyMEd":"E, d. M. y. G","field-wed-relative+-1":"prošla srijeda","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"kvartal","field-week-short":"tj.","field-day-narrow-relative+0":"danas","dateFormatItem-yMMMEd":"E, d. MMM y. GGGGG","field-day-narrow-relative+1":"sutra","field-day-narrow-relative+2":"prekosutra","field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-month-short-relative+-1":"prošli mj.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"LLL y. G","field-month":"mjesec","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dateFormat-medium":"d. M. y. G","dateFormatItem-yyyyMMMM":"LLLL y. G","eraAbbr":["Taika (645.-650.)","Hakuchi (650.-671.)","Hakuhō (672.-686.)","Shuchō (686.-701.)","Taihō (701.-704.)","Keiun (704.-708.)","Wadō (708.-715.)","Reiki (715.-717.)","Yōrō (717.-724.)","Jinki (724.-729.)","Tempyō (729.-749.)","Tempyō-kampō (749.-749.)","Tempyō-shōhō (749.-757.)","Tempyō-hōji (757.-765.)","Temphō-jingo (765.-767.)","Jingo-keiun (767.-770.)","Hōki (770.-780.)","Ten-ō (781.-782.)","Enryaku (782.-806.)","Daidō (806.-810.)","Kōnin (810.-824.)","Tenchō (824.-834.)","Jōwa (834.-848.)","Kajō (848.-851.)","Ninju (851.-854.)","Saiko (854.-857.)","Tennan (857.-859.)","Jōgan (859.-877.)","Genkei (877.-885.)","Ninna (885.-889.)","Kampyō (889.-898.)","Shōtai (898.-901.)","Engi (901.-923.)","Enchō (923.-931.)","Shōhei (931.-938.)","Tengyō (938.-947.)","Tenryaku (947.-957.)","Tentoku (957.-961.)","Ōwa (961.-964.)","Kōhō (964.-968.)","Anna (968.-970.)","Tenroku (970.-973.)","Ten-en (973.-976.)","Jōgen (976.-978.)","Tengen (978.-983.)","Eikan (983.-985.)","Kanna (985.-987.)","Ei-en (987.-989.)","Eiso (989.-990.)","Shōryaku (990.-995.)","Chōtoku (995.-999.)","Chōhō (999.-1004.)","Kankō (1004.-1012.)","Chōwa (1012.-1017.)","Kannin (1017.-1021.)","Jian (1021.-1024.)","Manju (1024.-1028.)","Chōgen (1028.-1037.)","Chōryaku (1037.-1040.)","Chōkyū (1040.-1044.)","Kantoku (1044.-1046.)","Eishō (1046.-1053.)","Tengi (1053.-1058.)","Kōhei (1058.-1065.)","Jiryaku (1065.-1069.)","Enkyū (1069.-1074.)","Shōho (1074.-1077.)","Shōryaku (1077.-1081.)","Eiho (1081.-1084.)","Ōtoku (1084.-1087.)","Kanji (1087.-1094.)","Kaho (1094.-1096.)","Eichō (1096.-1097.)","Shōtoku (1097.-1099.)","Kōwa (1099.-1104.)","Chōji (1104.-1106.)","Kashō (1106.-1108.)","Tennin (1108.-1110.)","Ten-ei (1110.-1113.)","Eikyū (1113.-1118.)","Gen-ei (1118.-1120.)","Hoan (1120.-1124.)","Tenji (1124.-1126.)","Daiji (1126.-1131.)","Tenshō (1131.-1132.)","Chōshō (1132.-1135.)","Hoen (1135.-1141.)","Eiji (1141.-1142.)","Kōji (1142.-1144.)","Tenyō (1144.-1145.)","Kyūan (1145.-1151.)","Ninpei (1151.-1154.)","Kyūju (1154.-1156.)","Hogen (1156.-1159.)","Heiji (1159.-1160.)","Eiryaku (1160.-1161.)","Ōho (1161.-1163.)","Chōkan (1163.-1165.)","Eiman (1165.-1166.)","Nin-an (1166.-1169.)","Kaō (1169.-1171.)","Shōan (1171.-1175.)","Angen (1175.-1177.)","Jishō (1177.-1181.)","Yōwa (1181.-1182.)","Juei (1182.-1184.)","Genryuku (1184.-1185.)","Bunji (1185.-1190.)","Kenkyū (1190.-1199.)","Shōji (1199.-1201.)","Kennin (1201.-1204.)","Genkyū (1204.-1206.)","Ken-ei (1206.-1207.)","Shōgen (1207.-1211.)","Kenryaku (1211.-1213.)","Kenpō (1213.-1219.)","Shōkyū (1219.-1222.)","Jōō (1222.-1224.)","Gennin (1224.-1225.)","Karoku (1225.-1227.)","Antei (1227.-1229.)","Kanki (1229.-1232.)","Jōei (1232.-1233.)","Tempuku (1233.-1234.)","Bunryaku (1234.-1235.)","Katei (1235.-1238.)","Ryakunin (1238.-1239.)","En-ō (1239.-1240.)","Ninji (1240.-1243.)","Kangen (1243.-1247.)","Hōji (1247.-1249.)","Kenchō (1249.-1256.)","Kōgen (1256.-1257.)","Shōka (1257.-1259.)","Shōgen (1259.-1260.)","Bun-ō (1260.-1261.)","Kōchō (1261.-1264.)","Bun-ei (1264.-1275.)","Kenji (1275.-1278.)","Kōan (1278.-1288.)","Shōō (1288.-1293.)","Einin (1293.-1299.)","Shōan (1299.-1302.)","Kengen (1302.-1303.)","Kagen (1303.-1306.)","Tokuji (1306.-1308.)","Enkei (1308.-1311.)","Ōchō (1311.-1312.)","Shōwa (1312.-1317.)","Bunpō (1317.-1319.)","Genō (1319.-1321.)","Genkyō (1321.-1324.)","Shōchū (1324.-1326.)","Kareki (1326.-1329.)","Gentoku (1329.-1331.)","Genkō (1331.-1334.)","Kemmu (1334.-1336.)","Engen (1336.-1340.)","Kōkoku (1340.-1346.)","Shōhei (1346.-1370.)","Kentoku (1370.-1372.)","Bunchū (1372.-1375.)","Tenju (1375.-1379.)","Kōryaku (1379.-1381.)","Kōwa (1381.-1384.)","Genchū (1384.-1392.)","Meitoku (1384.-1387.)","Kakei (1387.-1389.)","Kōō (1389.-1390.)","Meitoku (1390.-1394.)","Ōei (1394.-1428.)","Shōchō (1428.-1429.)","Eikyō (1429.-1441.)","Kakitsu (1441.-1444.)","Bun-an (1444.-1449.)","Hōtoku (1449.-1452.)","Kyōtoku (1452.-1455.)","Kōshō (1455.-1457.)","Chōroku (1457.-1460.)","Kanshō (1460.-1466.)","Bunshō (1466.-1467.)","Ōnin (1467.-1469.)","Bunmei (1469.-1487.)","Chōkyō (1487.-1489.)","Entoku (1489.-1492.)","Meiō (1492.-1501.)","Bunki (1501.-1504.)","Eishō (1504.-1521.)","Taiei (1521.-1528.)","Kyōroku (1528.-1532.)","Tenmon (1532.-1555.)","Kōji (1555.-1558.)","Eiroku (1558.-1570.)","Genki (1570.-1573.)","Tenshō (1573.-1592.)","Bunroku (1592.-1596.)","Keichō (1596.-1615.)","Genwa (1615.-1624.)","Kan-ei (1624.-1644.)","Shōho (1644.-1648.)","Keian (1648.-1652.)","Shōō (1652.-1655.)","Meiryaku (1655.-1658.)","Manji (1658.-1661.)","Kanbun (1661.-1673.)","Enpō (1673.-1681.)","Tenwa (1681.-1684.)","Jōkyō (1684.-1688.)","Genroku (1688.-1704.)","Hōei (1704.-1711.)","Shōtoku (1711.-1716.)","Kyōhō (1716.-1736.)","Genbun (1736.-1741.)","Kanpō (1741.-1744.)","Enkyō (1744.-1748.)","Kan-en (1748.-1751.)","Hōryaku (1751.-1764.)","Meiwa (1764.-1772.)","An-ei (1772.-1781.)","Tenmei (1781.-1789.)","Kansei (1789.-1801.)","Kyōwa (1801.-1804.)","Bunka (1804.-1818.)","Bunsei (1818.-1830.)","Tenpō (1830.-1844.)","Kōka (1844.-1848.)","Kaei (1848.-1854.)","Ansei (1854.-1860.)","Man-en (1860.-1861.)","Bunkyū (1861.-1864.)","Genji (1864.-1865.)","Keiō (1865.-1868.)","Meiji","Taishō","Shōwa","Heisei"],"dateFormatItem-yyyyM":"M. y. G","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+-1":"jučer","field-year-short":"g.","field-day-narrow-relative+-2":"prekjučer","field-quarter-relative+-1":"prošli kvartal","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"prošli tj.","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-hour":"sat","dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošli tjedan","field-quarter-short-relative+-1":"prošli kv.","field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormatItem-yMMM":"LLL y. GGGGG","dateFormat-short":"d. M. y. GGGGG","field-year-narrow-relative+-1":"prošle g.","field-thu-short-relative+-1":"prošli čet.","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","field-weekOfMonth-short":"tj. u mj.","field-tue-narrow-relative+-1":"prošli uto.","dateFormatItem-yyyy":"y. G","dateFormatItem-M":"L.","field-wed-short-relative+0":"ova sri.","field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","dateFormatItem-MMMMEd":"E, d. MMMM","dateTimeFormat-full":"{1} {0}","dateFormatItem-d":"d.","field-weekday":"dan u tjednu","field-day-short-relative+0":"danas","field-quarter-narrow-relative+0":"ovaj kv.","field-day-short-relative+1":"sutra","field-sat-relative+0":"ova subota","field-quarter-narrow-relative+1":"sljedeći kv.","field-day-short-relative+2":"prekosutra","field-sat-relative+1":"sljedeća subota","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","field-dayOfYear-narrow":"dan u g.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","field-weekdayOfMonth-short":"radni dan u mj.","dateFormatItem-MEd":"E, d. M.","field-zone-narrow":"zona","dateFormatItem-y":"y. GGG","field-thu-narrow-relative+0":"ovaj čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-narrow-relative+1":"sljedeći čet.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","field-fri-short-relative+-1":"prošli pet.","field-thu-relative+-1":"prošli četvrtak","dateFormatItem-yMd":"d. M. y. GGGGG","field-week":"tjedan","dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-quarter-narrow-relative+-1":"prošli kv.","field-year-short-relative+0":"ove god.","dateFormatItem-yyyyMMM":"LLL y. G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"sljedeće god.","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","field-week-short-relative+-1":"prošli tj.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min","dateFormatItem-yQQQ":"QQQ y. GGGGG","field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-year-short-relative+-1":"prošle god.","dateFormatItem-yM":"M. y. GGGGG","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"tj. u mjesecu","dateFormatItem-yMEd":"E, d. M. y. GGGGG","field-weekday-narrow":"dan u tj.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u tjed.","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-yMMMd":"d. MMM y. GGGGG","dateFormatItem-Gy":"y. GGG","field-day-short":"d.","field-week-narrow":"tj.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/number.js b/lib/dojo/cldr/nls/hr/number.js
index 606b6682b..7c253eae9 100644
--- a/lib/dojo/cldr/nls/hr/number.js
+++ b/lib/dojo/cldr/nls/hr/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hr/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 bilijuna","decimalFormat-short":"000 bil'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/hr/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","decimalFormat-short":"000 bil'.'","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 bilijuna","decimalFormat":"#,##0.###","currencyFormat-short":"000 bil'.' ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/persian.js b/lib/dojo/cldr/nls/hr/persian.js
new file mode 100644
index 000000000..d0cb02807
--- /dev/null
+++ b/lib/dojo/cldr/nls/hr/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/hr/persian",{"field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-month-narrow-relative+-1":"prošli mj.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","field-day-short-relative+-1":"jučer","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-short-relative+-2":"prekjučer","field-day-relative+1":"sutra","field-week-narrow-relative+0":"ovaj tj.","field-day-relative+2":"prekosutra","field-week-narrow-relative+1":"sljedeći tj.","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-year-narrow-relative+0":"ove g.","field-tue-relative+0":"ovaj utorak","field-year-narrow-relative+1":"sljedeće g.","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"radni dan u mjesecu","field-second-short":"s","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"r. dan u mj.","field-week-relative+0":"ovaj tjedan","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeći tjedan","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon.","field-second-relative+0":"sad","dateFormatItem-yyyyQQQ":"QQQ y. G","months-standAlone-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-weekOfMonth":"tjedan u mjesecu","field-month-short":"mj.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"dd. MM. y. GGGGG","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","dateFormatItem-yyyyMEd":"E, dd. MM. y. GGGGG","field-wed-relative+-1":"prošla srijeda","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","č","p","s"],"dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"kvartal","field-week-short":"tj.","field-day-narrow-relative+0":"danas","field-day-narrow-relative+1":"sutra","field-day-narrow-relative+2":"prekosutra","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["N","P","U","S","Č","P","S"],"field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-month-short-relative+-1":"prošli mj.","field-mon-relative+-1":"prošli ponedjeljak","dateFormatItem-GyMMM":"LLL y. G","field-month":"mjesec","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","dateFormat-medium":"d. MMM y. G","dateFormatItem-yyyyMMMM":"LLLL y. G","eraAbbr":["AP"],"quarters-standAlone-abbr":["1. kv.","2. kv.","3. kv.","4. kv."],"dateFormatItem-yyyyM":"MM. y. GGGGG","field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+-1":"jučer","field-year-short":"g.","field-day-narrow-relative+-2":"prekjučer","months-format-narrow":["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.","11.","12."],"field-quarter-relative+-1":"prošli kvartal","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"prošli tj.","days-format-short":["ned","pon","uto","sri","čet","pet","sub"],"quarters-format-narrow":["1.","2.","3.","4."],"field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","dateTimeFormat-long":"{1} 'u' {0}","dateFormatItem-Md":"dd. MM.","field-hour":"sat","months-format-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošli tjedan","field-quarter-short-relative+-1":"prošli kv.","months-format-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","dateFormat-short":"dd. MM. y. GGGGG","field-thu-short-relative+-1":"prošli čet.","field-year-narrow-relative+-1":"prošle g.","days-standAlone-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"prošli pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","field-weekOfMonth-short":"tj. u mj.","dateFormatItem-yyyy":"y. G","field-wed-short-relative+0":"ova sri.","dateFormatItem-M":"L.","months-standAlone-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","days-standAlone-abbr":["ned","pon","uto","sri","čet","pet","sub"],"dateTimeFormat-full":"{1} 'u' {0}","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d.","field-weekday":"dan u tjednu","field-day-short-relative+0":"danas","field-quarter-narrow-relative+0":"ovaj kv.","field-sat-relative+0":"ova subota","field-day-short-relative+1":"sutra","field-quarter-narrow-relative+1":"sljedeći kv.","field-day-short-relative+2":"prekosutra","field-sat-relative+1":"sljedeća subota","dateFormatItem-h":"hh a","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-dayOfYear-narrow":"dan u g.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","field-weekdayOfMonth-short":"radni dan u mj.","timeFormat-full":"HH:mm:ss (zzzz)","dateFormatItem-MEd":"E, dd. MM.","field-zone-narrow":"zona","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","field-fri-short-relative+-1":"prošli pet.","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"prošli četvrtak","field-week":"tjedan","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-quarter-narrow-relative+-1":"prošli kv.","field-year-short-relative+0":"ove god.","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y. G","field-year-short-relative+1":"sljedeće god.","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","days-standAlone-short":["ned","pon","uto","sri","čet","pet","sub"],"field-week-short-relative+-1":"prošli tj.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"h","field-zone-short":"zona","quarters-format-abbr":["1kv","2kv","3kv","4kv"],"field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min","days-format-wide":["nedjelja","ponedjeljak","utorak","srijeda","četvrtak","petak","subota"],"field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-year-short-relative+-1":"prošle god.","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"tj. u mjesecu","field-weekday-narrow":"dan u tj.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u tjed.","days-format-abbr":["ned","pon","uto","sri","čet","pet","sub"],"field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","dateFormatItem-Gy":"y. G","field-day-short":"d.","field-week-narrow":"tj.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hr/roc.js b/lib/dojo/cldr/nls/hr/roc.js
index f5129d188..a3764c5e7 100644
--- a/lib/dojo/cldr/nls/hr/roc.js
+++ b/lib/dojo/cldr/nls/hr/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hr/roc",{"field-sat-relative+0":"ova subota","field-sat-relative+1":"sljedeća subota","field-dayperiod":"AM/PM","field-sun-relative+-1":"prošla nedjelja","field-mon-relative+-1":"prošli ponedjeljak","field-minute":"Minuta","dateFormatItem-MMMEd":"E, d. MMM","field-day-relative+-1":"jučer","field-weekday":"Dan u tjednu","field-day-relative+-2":"prekjučer","dateFormatItem-MMM":"LLL","field-era":"Era","field-hour":"Sat","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","field-wed-relative+-1":"prošla srijeda","field-day-relative+0":"danas","field-day-relative+1":"sutra","eraAbbr":["prije R.O.C.","R.O.C."],"field-day-relative+2":"prekosutra","field-tue-relative+0":"ovaj utorak","field-zone":"Vremenska zona","field-tue-relative+1":"sljedeći utorak","field-week-relative+-1":"prošli tjedan","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-sat-relative+-1":"prošla subota","field-year-relative+-1":"prošle godine","field-year":"Godina","field-fri-relative+0":"ovaj petak","field-fri-relative+1":"sljedeći petak","field-week":"Tjedan","dateFormatItem-MMMd":"d. MMM","field-week-relative+0":"ovaj tjedan","field-week-relative+1":"sljedeći tjedan","field-month-relative+0":"ovaj mjesec","field-month":"Mjesec","field-month-relative+1":"sljedeći mjesec","field-fri-relative+-1":"prošli petak","dateFormatItem-M":"L.","field-second":"Sekunda","field-tue-relative+-1":"prošli utorak","field-day":"Dan","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-thu-relative+0":"ovaj četvrtak","field-second-relative+0":"sada","field-thu-relative+1":"sljedeći četvrtak","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","dateFormatItem-d":"d.","field-month-relative+-1":"prošli mjesec","field-thu-relative+-1":"prošli četvrtak"}); \ No newline at end of file
+define("dojo/cldr/nls/hr/roc",{"field-quarter-short-relative+0":"ovaj kv.","field-quarter-short-relative+1":"sljedeći kv.","field-tue-relative+-1":"prošli utorak","field-year":"godina","field-wed-relative+0":"ova srijeda","field-wed-relative+1":"sljedeća srijeda","field-minute":"minuta","field-month-narrow-relative+-1":"prošli mj.","field-tue-narrow-relative+0":"ovaj uto.","field-tue-narrow-relative+1":"sljedeći uto.","field-thu-short-relative+0":"ovaj čet.","field-day-short-relative+-1":"jučer","field-thu-short-relative+1":"sljedeći čet.","field-day-relative+0":"danas","field-day-short-relative+-2":"prekjučer","field-day-relative+1":"sutra","field-week-narrow-relative+0":"ovaj tj.","field-day-relative+2":"prekosutra","field-week-narrow-relative+1":"sljedeći tj.","field-wed-narrow-relative+-1":"prošla sri.","field-year-narrow":"g.","field-era-short":"era","field-year-narrow-relative+0":"ove g.","field-tue-relative+0":"ovaj utorak","field-year-narrow-relative+1":"sljedeće g.","field-tue-relative+1":"sljedeći utorak","field-weekdayOfMonth":"radni dan u mjesecu","field-second-short":"s","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"r. dan u mj.","field-week-relative+0":"ovaj tjedan","field-month-relative+0":"ovaj mjesec","field-week-relative+1":"sljedeći tjedan","field-month-relative+1":"sljedeći mjesec","field-sun-narrow-relative+0":"ova ned.","field-mon-short-relative+0":"ovaj pon.","field-sun-narrow-relative+1":"sljedeća ned.","field-mon-short-relative+1":"sljedeći pon.","field-second-relative+0":"sad","field-weekOfMonth":"tjedan u mjesecu","field-month-short":"mj.","field-day":"dan","field-dayOfYear-short":"dan u god.","field-year-relative+-1":"prošle godine","field-sat-short-relative+-1":"prošla sub.","field-hour-relative+0":"ovaj sat","field-wed-relative+-1":"prošla srijeda","field-sat-narrow-relative+-1":"prošla sub.","field-second":"sekunda","field-quarter":"kvartal","field-week-short":"tj.","field-day-narrow-relative+0":"danas","field-day-narrow-relative+1":"sutra","field-day-narrow-relative+2":"prekosutra","field-tue-short-relative+0":"ovaj uto.","field-tue-short-relative+1":"sljedeći uto.","field-month-short-relative+-1":"prošli mj.","field-mon-relative+-1":"prošli ponedjeljak","field-month":"mjesec","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"ova sub.","field-sat-short-relative+1":"sljedeća sub.","eraAbbr":["prije R.O.C.","R.O.C."],"field-second-narrow":"s","field-mon-relative+0":"ovaj ponedjeljak","field-mon-relative+1":"sljedeći ponedjeljak","field-day-narrow-relative+-1":"jučer","field-year-short":"g.","field-day-narrow-relative+-2":"prekjučer","field-quarter-relative+-1":"prošli kvartal","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"prošli tj.","field-dayOfYear":"dan u godini","field-sat-relative+-1":"prošla subota","field-hour":"sat","field-month-relative+-1":"prošli mjesec","field-quarter-short":"kv.","field-sat-narrow-relative+0":"ova sub.","field-fri-relative+0":"ovaj petak","field-sat-narrow-relative+1":"sljedeća sub.","field-fri-relative+1":"sljedeći petak","field-month-narrow-relative+0":"ovaj mj.","field-month-narrow-relative+1":"sljedeći mj.","field-sun-short-relative+0":"ova ned.","field-sun-short-relative+1":"sljedeća ned.","field-week-relative+-1":"prošli tjedan","field-quarter-short-relative+-1":"prošli kv.","field-quarter-relative+0":"ovaj kvartal","field-minute-relative+0":"ova minuta","field-quarter-relative+1":"sljedeći kvartal","field-wed-short-relative+-1":"prošla sri.","field-thu-short-relative+-1":"prošli čet.","field-year-narrow-relative+-1":"prošle g.","field-mon-narrow-relative+-1":"prošli pon.","field-thu-narrow-relative+-1":"prošli čet.","field-tue-narrow-relative+-1":"prošli uto.","field-weekOfMonth-short":"tj. u mj.","field-wed-short-relative+0":"ova sri.","dateFormatItem-M":"L.","field-wed-short-relative+1":"sljedeća sri.","field-sun-relative+-1":"prošla nedjelja","dateFormatItem-d":"d.","field-weekday":"dan u tjednu","field-day-short-relative+0":"danas","field-quarter-narrow-relative+0":"ovaj kv.","field-sat-relative+0":"ova subota","field-day-short-relative+1":"sutra","field-quarter-narrow-relative+1":"sljedeći kv.","field-day-short-relative+2":"prekosutra","field-sat-relative+1":"sljedeća subota","field-week-short-relative+0":"ovaj tj.","field-week-short-relative+1":"sljedeći tj.","field-dayOfYear-narrow":"dan u g.","field-month-short-relative+0":"ovaj mj.","field-month-short-relative+1":"sljedeći mj.","field-weekdayOfMonth-short":"radni dan u mj.","field-zone-narrow":"zona","field-thu-narrow-relative+0":"ovaj čet.","field-thu-narrow-relative+1":"sljedeći čet.","field-sun-narrow-relative+-1":"prošla ned.","field-mon-short-relative+-1":"prošli pon.","field-thu-relative+0":"ovaj četvrtak","field-thu-relative+1":"sljedeći četvrtak","field-fri-short-relative+-1":"prošli pet.","field-thu-relative+-1":"prošli četvrtak","field-week":"tjedan","field-wed-narrow-relative+0":"ova sri.","field-wed-narrow-relative+1":"sljedeća sri.","field-quarter-narrow-relative+-1":"prošli kv.","field-year-short-relative+0":"ove god.","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"sljedeće god.","field-fri-short-relative+0":"ovaj pet.","field-fri-short-relative+1":"sljedeći pet.","field-week-short-relative+-1":"prošli tj.","field-hour-short":"h","field-zone-short":"zona","field-month-narrow":"m.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prošli pet.","field-year-relative+0":"ove godine","field-year-relative+1":"sljedeće godine","field-era-narrow":"era","field-fri-relative+-1":"prošli petak","field-tue-short-relative+-1":"prošli uto.","field-minute-narrow":"min","field-mon-narrow-relative+0":"ovaj pon.","field-mon-narrow-relative+1":"sljedeći pon.","field-year-short-relative+-1":"prošle god.","field-zone":"vremenska zona","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"tj. u mjesecu","field-weekday-narrow":"dan u tj.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"prošla ned.","field-day-relative+-1":"jučer","field-day-relative+-2":"prekjučer","field-weekday-short":"dan u tjed.","field-sun-relative+0":"ova nedjelja","field-sun-relative+1":"sljedeća nedjelja","field-day-short":"d.","field-week-narrow":"tj.","field-era":"era","field-fri-narrow-relative+0":"ovaj pet.","field-fri-narrow-relative+1":"sljedeći pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/buddhist.js b/lib/dojo/cldr/nls/hu/buddhist.js
index f6804a653..e46928deb 100644
--- a/lib/dojo/cldr/nls/hu/buddhist.js
+++ b/lib/dojo/cldr/nls/hu/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/buddhist",{"days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"months-format-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"field-second-relative+0":"most","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"hét napja","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-MMMEd":"MMM d., E","eraNarrow":["BK"],"field-tue-relative+-1":"előző kedd","days-format-short":["V","H","K","Sze","Cs","P","Szo"],"dateFormat-long":"G y. MMMM d.","field-fri-relative+-1":"előző péntek","field-wed-relative+-1":"előző szerda","months-format-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dateFormatItem-yyyyQQQ":"G y. QQQ","dayPeriods-format-wide-pm":"du.","dateFormat-full":"G y. MMMM d., EEEE","dateFormatItem-yyyyMEd":"G y. MM. dd., E","field-thu-relative+-1":"előző csütörtök","dateFormatItem-Md":"M. d.","field-era":"éra","months-standAlone-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"timeFormat-short":"H:mm","quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"timeFormat-long":"H:mm:ss z","field-year":"év","field-hour":"óra","months-format-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"ma","field-thu-relative+0":"ez a csütörtök","field-day-relative+1":"holnap","field-thu-relative+1":"következő csütörtök","dateFormatItem-GyMMMd":"G y. MMM d.","field-day-relative+2":"holnapután","dateFormatItem-H":"H","months-standAlone-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"quarters-format-abbr":["N1","N2","N3","N4"],"quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"dateFormatItem-Gy":"G y.","dateFormatItem-yyyyMMMEd":"G y. MMM d., E","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-yyyyMMM":"G y. MMM","dateFormatItem-yyyyMMMd":"G y. MMM d.","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"ez a vasárnap","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"következő vasárnap","quarters-standAlone-abbr":["N1","N2","N3","N4"],"eraAbbr":["BK"],"field-minute":"perc","field-dayperiod":"napszak","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"tegnap","dateFormatItem-h":"a h","dayPeriods-format-narrow-am":"de.","field-day-relative+-2":"tegnapelőtt","dateFormatItem-MMMd":"MMM d.","dateFormatItem-MEd":"M. d., E","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","field-day":"nap","days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"field-zone":"időzóna","dateFormatItem-y":"G y.","months-standAlone-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"field-year-relative+-1":"előző év","field-month-relative+-1":"előző hónap","dateFormatItem-hm":"a h:mm","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"eraNames":["BK"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"dateFormatItem-yyyyMd":"G y. MM. dd.","field-month":"hónap","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-tue-relative+0":"ez a kedd","field-tue-relative+1":"következő kedd","dayPeriods-format-wide-am":"de.","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","dateFormat-short":"GGGGG y. M. d.","field-second":"másodperc","field-sat-relative+-1":"előző szombat","field-sun-relative+-1":"előző vasárnap","field-month-relative+0":"ez a hónap","field-month-relative+1":"következő hónap","dateFormatItem-Ed":"d., E","field-week":"hét","dateFormat-medium":"G y. MMM d.","field-year-relative+0":"ez az év","field-week-relative+-1":"előző hét","dateFormatItem-yyyyM":"G y. MM.","field-year-relative+1":"következő év","dayPeriods-format-narrow-pm":"du.","dateFormatItem-yyyyQQQQ":"G y. QQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G y. MMM","field-mon-relative+-1":"előző hétfő","dateFormatItem-yyyy":"G y.","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/buddhist",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","timeFormat-short":"H:mm","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-thu-short-relative+0":"ez a csütörtök","field-day-short-relative+-1":"tegnap","field-thu-short-relative+1":"következő csütörtök","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+-1":"előző szerda","dateFormatItem-EBhms":"E h:mm:ss","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","dayPeriods-format-narrow-am":"de.","dateFormatItem-MMMd":"MMM d.","field-weekdayOfMonth-narrow":"hónap hétköznapja","dayPeriods-format-abbr-am":"de.","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","dateFormatItem-yyyyQQQ":"G y. QQQ","months-standAlone-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"eraNames":["BK"],"field-weekOfMonth":"hónap hete","dayPeriods-standAlone-abbr-pm":"du.","field-month-short":"hónap","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-yyyyMd":"G y. MM. dd.","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","dayPeriods-format-wide-am":"de.","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","dateFormatItem-yyyyMEd":"G y. MM. dd., E","field-wed-relative+-1":"előző szerda","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"dayPeriods-standAlone-wide-pm":"du.","dateFormatItem-Ehms":"E h:mm:ss","dateFormat-long":"G y. MMMM d.","dateFormatItem-GyMMMd":"G y. MMM d.","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","dateFormatItem-GyMMM":"G y. MMM","field-month":"hónap","field-day-narrow":"nap","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","dayPeriods-format-narrow-pm":"du.","dateFormat-medium":"G y. MMM d.","dateFormatItem-yyyyMMMM":"G y. MMMM","eraAbbr":["BK"],"quarters-standAlone-abbr":["1. n.év","2. n.év","3. n.év","4. n.év"],"dayPeriods-format-abbr-pm":"du.","dateFormatItem-yyyyM":"G y. MM.","field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","months-format-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"field-quarter-relative+-1":"előző negyedév","dateFormatItem-yyyyMMMd":"G y. MMM d.","field-dayperiod-narrow":"napszak","dayPeriods-standAlone-narrow-am":"de.","field-week-narrow-relative+-1":"előző hét","days-format-short":["V","H","K","Sze","Cs","P","Szo"],"quarters-format-narrow":["I.","II.","III.","IV."],"dayPeriods-format-wide-pm":"du.","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","dateFormatItem-Md":"M. d.","field-hour":"óra","months-format-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dateFormat-full":"G y. MMMM d., EEEE","field-month-relative+-1":"előző hónap","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","dateFormatItem-EBhm":"E h:mm","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","dateFormatItem-Ehm":"E h:mm","months-format-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","dateFormat-short":"GGGGG y. M. d.","dateFormatItem-Bh":"B h","field-thu-short-relative+-1":"előző csütörtök","field-year-narrow-relative+-1":"előző év","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-yyyyMMMEd":"G y. MMM d., E","field-mon-narrow-relative+-1":"előző hétfő","dateFormatItem-MMMMd":"MMMM d.","field-thu-narrow-relative+-1":"előző csütörtök","field-tue-narrow-relative+-1":"előző kedd","field-weekOfMonth-short":"hónap hete","dateFormatItem-H":"H","dayPeriods-standAlone-narrow-pm":"du.","dateFormatItem-yyyy":"G y.","field-wed-short-relative+0":"ez a szerda","months-standAlone-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-hm":"a h:mm","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-sat-relative+0":"ez a szombat","field-day-short-relative+1":"holnap","field-quarter-narrow-relative+1":"következő negyedév","field-sat-relative+1":"következő szombat","field-day-short-relative+2":"holnapután","dateFormatItem-h":"a h","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","months-standAlone-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"M. d., E","field-zone-narrow":"időzóna","dateFormatItem-y":"G y.","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","field-fri-short-relative+-1":"előző péntek","dateFormatItem-hms":"a h:mm:ss","field-thu-relative+-1":"előző csütörtök","field-week":"hét","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"dateFormatItem-Ed":"d., E","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","field-dayperiod-short":"napszak","dateFormatItem-yyyyMMM":"G y. MMM","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"field-week-short-relative+-1":"előző hét","dateFormatItem-yyyyQQQQ":"G y. QQQQ","field-hour-short":"óra","field-zone-short":"időzóna","quarters-format-abbr":["I. n.év","II. n.év","III. n.év","IV. n.év"],"field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","eraNarrow":"BK","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"field-mon-narrow-relative+0":"ez a hétfő","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","dateFormatItem-MMMEd":"MMM d., E","field-weekOfMonth-narrow":"hónap hete","field-weekday-narrow":"hét napja","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","dayPeriods-standAlone-abbr-am":"de.","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","dateFormatItem-Gy":"G y.","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek","dayPeriods-standAlone-wide-am":"de."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/chinese.js b/lib/dojo/cldr/nls/hu/chinese.js
index 0298ab7b9..a2a61310f 100644
--- a/lib/dojo/cldr/nls/hu/chinese.js
+++ b/lib/dojo/cldr/nls/hu/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/chinese",{"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","field-dayperiod":"napszak","field-sun-relative+-1":"előző vasárnap","field-mon-relative+-1":"előző hétfő","field-minute":"perc","field-day-relative+-1":"tegnap","field-weekday":"hét napja","field-day-relative+-2":"tegnapelőtt","field-era":"éra","field-hour":"óra","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+-1":"előző szerda","field-day-relative+0":"ma","field-day-relative+1":"holnap","field-day-relative+2":"holnapután","field-tue-relative+0":"ez a kedd","field-zone":"időzóna","field-tue-relative+1":"következő kedd","field-week-relative+-1":"előző hét","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-sat-relative+-1":"előző szombat","field-year-relative+-1":"előző év","field-year":"év","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-week":"hét","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-month-relative+0":"ez a hónap","field-month":"hónap","field-month-relative+1":"következő hónap","field-fri-relative+-1":"előző péntek","field-second":"másodperc","field-tue-relative+-1":"előző kedd","field-day":"nap","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-thu-relative+0":"ez a csütörtök","field-second-relative+0":"most","field-thu-relative+1":"következő csütörtök","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-month-relative+-1":"előző hónap","field-thu-relative+-1":"előző csütörtök"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/chinese",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-thu-short-relative+0":"ez a csütörtök","field-day-short-relative+-1":"tegnap","field-thu-short-relative+1":"következő csütörtök","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+-1":"előző szerda","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","field-weekdayOfMonth-narrow":"hónap hétköznapja","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","field-weekOfMonth":"hónap hete","field-month-short":"hónap","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","field-wed-relative+-1":"előző szerda","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","field-month":"hónap","field-day-narrow":"nap","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"előző negyedév","field-dayperiod-narrow":"napszak","field-week-narrow-relative+-1":"előző hét","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","field-hour":"óra","field-month-relative+-1":"előző hónap","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","field-thu-short-relative+-1":"előző csütörtök","field-year-narrow-relative+-1":"előző év","field-mon-narrow-relative+-1":"előző hétfő","field-thu-narrow-relative+-1":"előző csütörtök","field-tue-narrow-relative+-1":"előző kedd","field-weekOfMonth-short":"hónap hete","field-wed-short-relative+0":"ez a szerda","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-sat-relative+0":"ez a szombat","field-day-short-relative+1":"holnap","field-quarter-narrow-relative+1":"következő negyedév","field-sat-relative+1":"következő szombat","field-day-short-relative+2":"holnapután","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","field-zone-narrow":"időzóna","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","field-fri-short-relative+-1":"előző péntek","field-thu-relative+-1":"előző csütörtök","field-week":"hét","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","field-dayperiod-short":"napszak","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","field-week-short-relative+-1":"előző hét","field-hour-short":"óra","field-zone-short":"időzóna","field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","field-mon-narrow-relative+0":"ez a hétfő","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","field-weekOfMonth-narrow":"hónap hete","field-weekday-narrow":"hét napja","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/coptic.js b/lib/dojo/cldr/nls/hu/coptic.js
index 321452fe6..1ad62562b 100644
--- a/lib/dojo/cldr/nls/hu/coptic.js
+++ b/lib/dojo/cldr/nls/hu/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/coptic",{"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","field-dayperiod":"napszak","field-sun-relative+-1":"előző vasárnap","field-mon-relative+-1":"előző hétfő","field-minute":"perc","field-day-relative+-1":"tegnap","field-weekday":"hét napja","field-day-relative+-2":"tegnapelőtt","field-era":"éra","field-hour":"óra","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","months-standAlone-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-wed-relative+-1":"előző szerda","field-day-relative+0":"ma","field-day-relative+1":"holnap","field-day-relative+2":"holnapután","field-tue-relative+0":"ez a kedd","field-zone":"időzóna","field-tue-relative+1":"következő kedd","field-week-relative+-1":"előző hét","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-sat-relative+-1":"előző szombat","field-year-relative+-1":"előző év","field-year":"év","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","months-standAlone-wide":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-week":"hét","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét","months-format-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-month-relative+0":"ez a hónap","field-month":"hónap","field-month-relative+1":"következő hónap","field-fri-relative+-1":"előző péntek","field-second":"másodperc","field-tue-relative+-1":"előző kedd","field-day":"nap","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-thu-relative+0":"ez a csütörtök","field-second-relative+0":"most","field-thu-relative+1":"következő csütörtök","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-month-relative+-1":"előző hónap","field-thu-relative+-1":"előző csütörtök"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/coptic",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-thu-short-relative+0":"ez a csütörtök","field-day-short-relative+-1":"tegnap","field-thu-short-relative+1":"következő csütörtök","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+-1":"előző szerda","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","field-weekdayOfMonth-narrow":"hónap hétköznapja","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","eraNames":["ERA0","ERA1"],"field-weekOfMonth":"hónap hete","field-month-short":"hónap","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","field-wed-relative+-1":"előző szerda","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","field-month":"hónap","field-day-narrow":"nap","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"előző negyedév","field-dayperiod-narrow":"napszak","field-week-narrow-relative+-1":"előző hét","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","field-hour":"óra","months-format-wide":["Thot","Paophi","Athür","Koiak","Tübi","Mehir","Phamenóth","Pharmuthi","Pakhónsz","Pauni","Epip","Meszoré","Pi Kogi Enavot"],"field-month-relative+-1":"előző hónap","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","months-format-abbr":["Thot","Paophi","Athür","Koiak","Tübi","Mehir","Phamenóth","Pharmuthi","Pakhónsz","Pauni","Epip","Meszoré","Pi Kogi Enavot"],"field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","field-thu-short-relative+-1":"előző csütörtök","field-year-narrow-relative+-1":"előző év","field-mon-narrow-relative+-1":"előző hétfő","field-thu-narrow-relative+-1":"előző csütörtök","field-tue-narrow-relative+-1":"előző kedd","field-weekOfMonth-short":"hónap hete","field-wed-short-relative+0":"ez a szerda","months-standAlone-wide":["Thot","Paophi","Athür","Koiak","Tübi","Mehir","Phamenóth","Pharmuthi","Pakhónsz","Pauni","Epip","Meszoré","Pi Kogi Enavot"],"field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-day-short-relative+1":"holnap","field-sat-relative+0":"ez a szombat","field-quarter-narrow-relative+1":"következő negyedév","field-day-short-relative+2":"holnapután","field-sat-relative+1":"következő szombat","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","months-standAlone-abbr":["Thot","Paophi","Athür","Koiak","Tübi","Mehir","Phamenóth","Pharmuthi","Pakhónsz","Pauni","Epip","Meszoré","Pi Kogi Enavot"],"field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","field-zone-narrow":"időzóna","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","field-fri-short-relative+-1":"előző péntek","field-thu-relative+-1":"előző csütörtök","field-week":"hét","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","field-dayperiod-short":"napszak","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","field-week-short-relative+-1":"előző hét","field-hour-short":"óra","field-zone-short":"időzóna","field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","field-mon-narrow-relative+0":"ez a hétfő","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","field-weekOfMonth-narrow":"hónap hete","field-weekday-narrow":"hét napja","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/currency.js b/lib/dojo/cldr/nls/hu/currency.js
index 88d27f5f3..cf5074cd9 100644
--- a/lib/dojo/cldr/nls/hu/currency.js
+++ b/lib/dojo/cldr/nls/hu/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/currency",{"HKD_displayName":"hongkongi dollár","CHF_displayName":"svájci frank","JPY_symbol":"¥","CAD_displayName":"kanadai dollár","HKD_symbol":"HKD","CNY_displayName":"kínai jüan","USD_symbol":"USD","AUD_displayName":"ausztrál dollár","JPY_displayName":"japán jen","CAD_symbol":"CAD","USD_displayName":"USA-dollár","EUR_symbol":"EUR","CNY_symbol":"CNY","GBP_displayName":"brit font","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"euró"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/currency",{"HKD_displayName":"hongkongi dollár","CNY_displayName":"kínai jüan","JPY_displayName":"japán jen","JPY_symbol":"¥","USD_displayName":"USA-dollár","CAD_symbol":"CAD","GBP_displayName":"angol font","CHF_displayName":"svájci frank","CNY_symbol":"CNY","EUR_displayName":"euró","GBP_symbol":"GBP","CAD_displayName":"kanadai dollár","USD_symbol":"USD","EUR_symbol":"EUR","AUD_displayName":"ausztrál dollár","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/ethiopic.js b/lib/dojo/cldr/nls/hu/ethiopic.js
index 2cebe4e82..b46cd1a4a 100644
--- a/lib/dojo/cldr/nls/hu/ethiopic.js
+++ b/lib/dojo/cldr/nls/hu/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/ethiopic",{"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","field-dayperiod":"napszak","field-sun-relative+-1":"előző vasárnap","field-mon-relative+-1":"előző hétfő","field-minute":"perc","field-day-relative+-1":"tegnap","field-weekday":"hét napja","field-day-relative+-2":"tegnapelőtt","field-era":"éra","field-hour":"óra","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-wed-relative+-1":"előző szerda","field-day-relative+0":"ma","field-day-relative+1":"holnap","field-day-relative+2":"holnapután","field-tue-relative+0":"ez a kedd","field-zone":"időzóna","field-tue-relative+1":"következő kedd","field-week-relative+-1":"előző hét","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-sat-relative+-1":"előző szombat","field-year-relative+-1":"előző év","field-year":"év","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-week":"hét","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-month-relative+0":"ez a hónap","field-month":"hónap","field-month-relative+1":"következő hónap","field-fri-relative+-1":"előző péntek","field-second":"másodperc","field-tue-relative+-1":"előző kedd","field-day":"nap","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-thu-relative+0":"ez a csütörtök","field-second-relative+0":"most","field-thu-relative+1":"következő csütörtök","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-month-relative+-1":"előző hónap","field-thu-relative+-1":"előző csütörtök"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/ethiopic",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-thu-short-relative+0":"ez a csütörtök","field-day-short-relative+-1":"tegnap","field-thu-short-relative+1":"következő csütörtök","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+-1":"előző szerda","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","field-weekdayOfMonth-narrow":"hónap hétköznapja","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","eraNames":["ERA0","ERA1"],"field-weekOfMonth":"hónap hete","field-month-short":"hónap","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","field-wed-relative+-1":"előző szerda","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","field-month":"hónap","field-day-narrow":"nap","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"előző negyedév","field-dayperiod-narrow":"napszak","field-week-narrow-relative+-1":"előző hét","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","field-hour":"óra","field-month-relative+-1":"előző hónap","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","field-thu-short-relative+-1":"előző csütörtök","field-year-narrow-relative+-1":"előző év","field-mon-narrow-relative+-1":"előző hétfő","field-thu-narrow-relative+-1":"előző csütörtök","field-tue-narrow-relative+-1":"előző kedd","field-weekOfMonth-short":"hónap hete","field-wed-short-relative+0":"ez a szerda","months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-day-short-relative+1":"holnap","field-sat-relative+0":"ez a szombat","field-quarter-narrow-relative+1":"következő negyedév","field-day-short-relative+2":"holnapután","field-sat-relative+1":"következő szombat","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","field-zone-narrow":"időzóna","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","field-fri-short-relative+-1":"előző péntek","field-thu-relative+-1":"előző csütörtök","field-week":"hét","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","field-dayperiod-short":"napszak","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","field-week-short-relative+-1":"előző hét","field-hour-short":"óra","field-zone-short":"időzóna","field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","field-mon-narrow-relative+0":"ez a hétfő","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","field-weekOfMonth-narrow":"hónap hete","field-weekday-narrow":"hét napja","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/generic.js b/lib/dojo/cldr/nls/hu/generic.js
index e84403705..9407b73e7 100644
--- a/lib/dojo/cldr/nls/hu/generic.js
+++ b/lib/dojo/cldr/nls/hu/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/generic",{"field-second-relative+0":"most","field-weekday":"hét napja","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-MMMEd":"MMM d., E","field-tue-relative+-1":"előző kedd","dateFormat-long":"G y. MMMM d.","field-fri-relative+-1":"előző péntek","field-wed-relative+-1":"előző szerda","dateFormatItem-yyyyQQQ":"G y. QQQ","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"G y. MMMM d., EEEE","dateFormatItem-yyyyMEd":"G y. MM. dd., E","field-thu-relative+-1":"előző csütörtök","dateFormatItem-Md":"M. d.","field-era":"éra","field-year":"év","dateFormatItem-yyyyMMMM":"G y. MMMM","field-hour":"óra","field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","field-day-relative+0":"ma","field-day-relative+1":"holnap","field-thu-relative+0":"ez a csütörtök","dateFormatItem-GyMMMd":"G y. MMM d.","field-day-relative+2":"holnapután","field-thu-relative+1":"következő csütörtök","dateFormatItem-H":"H","dateFormatItem-Gy":"G y.","dateFormatItem-yyyyMMMEd":"G y. MMM d., E","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"G y. MMM","dateFormatItem-yyyyMMMd":"G y. MMM d.","dateFormatItem-MMMMd":"MMMM d.","field-sun-relative+0":"ez a vasárnap","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"következő vasárnap","field-minute":"perc","field-dayperiod":"napszak","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"tegnap","dateFormatItem-h":"a h","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"tegnapelőtt","dateFormatItem-MMMd":"MMM d.","dateFormatItem-MEd":"M. d., E","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","field-day":"nap","field-zone":"időzóna","dateFormatItem-y":"G y.","field-year-relative+-1":"előző év","field-month-relative+-1":"előző hónap","dateFormatItem-hm":"a h:mm","dateFormatItem-yyyyMd":"G y. MM. dd.","field-month":"hónap","dateFormatItem-MMM":"LLL","field-tue-relative+0":"ez a kedd","field-tue-relative+1":"következő kedd","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","dateFormat-short":"GGGGG y. M. d.","field-second":"másodperc","field-sat-relative+-1":"előző szombat","field-sun-relative+-1":"előző vasárnap","field-month-relative+0":"ez a hónap","field-month-relative+1":"következő hónap","dateFormatItem-Ed":"d., E","field-week":"hét","dateFormat-medium":"G y. MMM d.","field-year-relative+0":"ez az év","field-week-relative+-1":"előző hét","dateFormatItem-yyyyM":"G y. MM.","field-year-relative+1":"következő év","dateFormatItem-yyyyQQQQ":"G y. QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G y. MMM","field-mon-relative+-1":"előző hétfő","dateFormatItem-yyyy":"G y.","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/generic",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","dateFormatItem-ms":"mm:ss","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-day-short-relative+-1":"tegnap","field-thu-short-relative+0":"ez a csütörtök","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-thu-short-relative+1":"következő csütörtök","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","dateFormatItem-EBhms":"E h:mm:ss","field-wed-narrow-relative+-1":"előző szerda","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","dateFormatItem-MMMd":"MMM d.","field-weekdayOfMonth-narrow":"hónap hétköznapja","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","dateFormatItem-yyyyQQQ":"G y. QQQ","field-weekOfMonth":"hónap hete","field-month-short":"hónap","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-yyyyMd":"G y. MM. dd.","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","dateFormatItem-yyyyMEd":"G y. MM. dd., E","field-wed-relative+-1":"előző szerda","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","dateFormatItem-Ehms":"E h:mm:ss","dateFormat-long":"G y. MMMM d.","dateFormatItem-GyMMMd":"G y. MMM d.","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","dateFormatItem-GyMMM":"G y. MMM","field-month":"hónap","field-day-narrow":"nap","dateFormatItem-MMM":"LLL","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","dateFormat-medium":"G y. MMM d.","dateFormatItem-yyyyMMMM":"G y. MMMM","dateFormatItem-yyyyM":"G y. MM.","field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","field-quarter-relative+-1":"előző negyedév","dateFormatItem-yyyyMMMd":"G y. MMM d.","field-dayperiod-narrow":"napszak","field-week-narrow-relative+-1":"előző hét","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M. d.","field-hour":"óra","dateFormat-full":"G y. MMMM d., EEEE","field-month-relative+-1":"előző hónap","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","dateFormatItem-EBhm":"E h:mm","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","dateFormatItem-Ehm":"E h:mm","field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","dateFormat-short":"GGGGG y. M. d.","dateFormatItem-Bh":"B h","field-year-narrow-relative+-1":"előző év","field-thu-short-relative+-1":"előző csütörtök","dateFormatItem-yyyyMMMEd":"G y. MMM d., E","field-mon-narrow-relative+-1":"előző hétfő","dateFormatItem-MMMMd":"MMMM d.","field-thu-narrow-relative+-1":"előző csütörtök","dateFormatItem-E":"ccc","dateFormatItem-H":"H","field-weekOfMonth-short":"hónap hete","field-tue-narrow-relative+-1":"előző kedd","dateFormatItem-yyyy":"G y.","dateFormatItem-M":"L","field-wed-short-relative+0":"ez a szerda","field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"a h:mm","dateFormatItem-d":"d","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-day-short-relative+1":"holnap","field-sat-relative+0":"ez a szombat","field-quarter-narrow-relative+1":"következő negyedév","dateFormatItem-h":"a h","field-day-short-relative+2":"holnapután","field-sat-relative+1":"következő szombat","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","dateFormatItem-MEd":"M. d., E","field-zone-narrow":"időzóna","dateFormatItem-y":"G y.","field-thu-narrow-relative+0":"ez a csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-narrow-relative+1":"következő csütörtök","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","dateFormatItem-hms":"a h:mm:ss","field-fri-short-relative+-1":"előző péntek","field-thu-relative+-1":"előző csütörtök","field-week":"hét","dateFormatItem-Ed":"d., E","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","dateFormatItem-yyyyMMM":"G y. MMM","field-dayperiod-short":"napszak","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","field-week-short-relative+-1":"előző hét","dateFormatItem-yyyyQQQQ":"G y. QQQQ","field-hour-short":"óra","field-zone-short":"időzóna","field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","field-mon-narrow-relative+0":"ez a hétfő","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","dateFormatItem-MMMEd":"MMM d., E","field-weekOfMonth-narrow":"hónap hete","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"hét napja","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","dateFormatItem-Gy":"G y.","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/gregorian.js b/lib/dojo/cldr/nls/hu/gregorian.js
index 0a1c0cde0..bb9cc5e6c 100644
--- a/lib/dojo/cldr/nls/hu/gregorian.js
+++ b/lib/dojo/cldr/nls/hu/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"months-format-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"field-second-relative+0":"most","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"hét napja","dateFormatItem-yQQQ":"y. QQQ","dateFormatItem-yMEd":"y. MM. dd., E","field-wed-relative+0":"ez a szerda","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-MMMEd":"MMM d., E","field-wed-relative+1":"következő szerda","eraNarrow":["ie.","isz."],"field-tue-relative+-1":"előző kedd","days-format-short":["V","H","K","Sze","Cs","P","Szo"],"dateFormat-long":"y. MMMM d.","field-fri-relative+-1":"előző péntek","field-wed-relative+-1":"előző szerda","months-format-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"du.","dateFormat-full":"y. MMMM d., EEEE","field-thu-relative+-1":"előző csütörtök","dateFormatItem-Md":"M. d.","dateFormatItem-yMd":"y. MM. dd.","dateFormatItem-yM":"y. M.","field-era":"éra","months-standAlone-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"timeFormat-short":"H:mm","quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"timeFormat-long":"H:mm:ss z","dateFormatItem-yMMM":"y. MMM","dateFormatItem-yQQQQ":"y. QQQQ","field-year":"év","field-hour":"óra","months-format-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"ma","field-day-relative+1":"holnap","field-thu-relative+0":"ez a csütörtök","dateFormatItem-GyMMMd":"G y. MMM d.","field-day-relative+2":"holnapután","field-thu-relative+1":"következő csütörtök","dateFormatItem-H":"H","months-standAlone-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"quarters-format-abbr":["N1","N2","N3","N4"],"quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"dateFormatItem-Gy":"G y.","dateFormatItem-M":"L","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-MMMMd":"MMMM d.","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"ez a vasárnap","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["N1","N2","N3","N4"],"field-sun-relative+1":"következő vasárnap","eraAbbr":["i. e.","i. sz."],"field-minute":"perc","field-dayperiod":"napszak","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"tegnap","dateFormatItem-h":"a h","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"de.","field-day-relative+-2":"tegnapelőtt","dateFormatItem-MMMd":"MMM d.","dateFormatItem-MEd":"M. d., E","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"ez a péntek","dateFormatItem-yMMMM":"y. MMMM","field-fri-relative+1":"következő péntek","field-day":"nap","days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"field-zone":"időzóna","dateFormatItem-y":"y.","months-standAlone-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"field-year-relative+-1":"előző év","field-month-relative+-1":"előző hónap","dateFormatItem-hm":"a h:mm","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-yMMMd":"y. MMM d.","eraNames":["időszámításunk előtt","időszámításunk szerint"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"dateFormatItem-MMM":"LLL","field-month":"hónap","field-tue-relative+0":"ez a kedd","field-tue-relative+1":"következő kedd","dayPeriods-format-wide-am":"de.","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","dateFormat-short":"y. MM. dd.","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"másodperc","field-sat-relative+-1":"előző szombat","dateFormatItem-yMMMEd":"y. MMM d., E","field-sun-relative+-1":"előző vasárnap","field-month-relative+0":"ez a hónap","field-month-relative+1":"következő hónap","dateFormatItem-Ed":"d., E","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"hét","dateFormat-medium":"y. MMM d.","field-year-relative+0":"ez az év","field-week-relative+-1":"előző hét","field-year-relative+1":"következő év","dateFormatItem-mmss":"mm:ss","dayPeriods-format-narrow-pm":"du.","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G y. MMM","field-mon-relative+-1":"előző hétfő","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/gregorian",{"dateFormatItem-yMMMM":"y. MMMM","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+0":"ez a vasárnap","field-sun-narrow-relative+1":"következő vasárnap","months-format-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dayPeriods-standAlone-abbr-pm":"du.","dateFormatItem-Hms":"H:mm:ss","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek","eraNarrow":["ie.","isz."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"a h:mm:ss v","dateFormatItem-yMMMd":"y. MMM d.","dayPeriods-format-abbr-night1":"éjjel","dayPeriods-format-abbr-night2":"hajnal","dayPeriods-format-narrow-evening1":"este","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dayPeriods-format-abbr-afternoon1":"du.","dayPeriods-format-wide-evening1":"este","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"előző szerda","dayPeriods-standAlone-wide-evening1":"este","days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"este","dayPeriods-standAlone-abbr-afternoon1":"du.","field-thu-relative+0":"ez a csütörtök","dayPeriods-standAlone-abbr-night1":"éjjel","field-thu-relative+1":"következő csütörtök","dayPeriods-standAlone-abbr-night2":"hajnal","dayPeriods-format-wide-am":"de.","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","dateFormatItem-yMd":"y. MM. dd.","field-thu-narrow-relative+-1":"előző csütörtök","field-quarter-relative+0":"ez a negyedév","field-quarter-relative+1":"következő negyedév","field-sun-short-relative+0":"ez a vasárnap","timeFormat-short":"H:mm","field-sun-short-relative+1":"következő vasárnap","dateFormatItem-hms":"a h:mm:ss","dayPeriods-format-narrow-afternoon1":"du.","dateFormatItem-Md":"M. d.","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"a h:mm v","field-week-narrow":"hét","field-hour-relative+0":"ebben az órában","field-day-relative+-1":"tegnap","field-day-relative+-2":"tegnapelőtt","field-mon-narrow-relative+-1":"előző hétfő","field-minute-narrow":"p","field-thu-short-relative+0":"ez a csütörtök","field-mon-relative+0":"ez a hétfő","field-thu-short-relative+1":"következő csütörtök","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+0":"ma","field-era-short":"éra","field-day-narrow-relative+1":"holnap","field-sat-narrow-relative+0":"ez a szombat","field-day-narrow-relative+2":"holnapután","timeFormat-long":"H:mm:ss z","field-sat-narrow-relative+1":"következő szombat","field-week-narrow-relative+0":"ez a hét","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-month":"hónap","months-standAlone-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"field-weekday-narrow":"hét napja","dayPeriods-standAlone-narrow-afternoon1":"du.","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","dayPeriods-format-abbr-evening1":"este","dayPeriods-format-abbr-noon":"dél","dayPeriods-format-narrow-midnight":"éjfél","dayPeriods-format-wide-midnight":"éjfél","field-tue-relative+0":"ez a kedd","field-tue-relative+1":"következő kedd","dayPeriods-standAlone-abbr-evening1":"este","dateFormatItem-hm":"a h:mm","dayPeriods-standAlone-wide-midnight":"éjfél","field-year-narrow":"év","dateFormatItem-mmss":"mm:ss","dayPeriods-standAlone-abbr-noon":"dél","field-tue-short-relative+0":"ez a kedd","dayPeriods-standAlone-narrow-midnight":"éjfél","field-tue-short-relative+1":"következő kedd","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E B h:mm","dateFormatItem-H":"H","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","dateFormatItem-M":"L","field-wed-short-relative+0":"ez a szerda","field-fri-short-relative+0":"ez a péntek","field-wed-short-relative+1":"következő szerda","field-fri-short-relative+1":"következő péntek","field-weekOfMonth-short":"hónap hete","field-quarter-short-relative+-1":"előző negyedév","field-year-short-relative+-1":"előző év","dateFormatItem-Bhm":"B h:mm","dayPeriods-format-wide-night1":"éjjel","dayPeriods-format-wide-night2":"hajnal","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"előző negyedév","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"du.","dateFormatItem-h":"a h","quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"field-weekOfMonth-narrow":"hónap hete","dateFormatItem-y":"y.","field-minute-relative+0":"ebben a percben","field-year-short-relative+0":"ez az év","dateFormatItem-EBhms":"E B h:mm:ss","field-year-short-relative+1":"következő év","field-weekday":"hét napja","dayPeriods-format-narrow-pm":"du.","field-tue-narrow-relative+-1":"előző kedd","dateFormatItem-yMEd":"y. MM. dd., E","dayPeriods-standAlone-wide-night1":"éjjel","dayPeriods-standAlone-wide-night2":"hajnal","field-year-narrow-relative+-1":"előző év","field-sat-relative+-1":"előző szombat","dayPeriods-format-abbr-midnight":"éjfél","dayPeriods-format-narrow-morning1":"reggel","dayPeriods-format-narrow-morning2":"de.","dayPeriods-format-wide-morning1":"reggel","dayPeriods-format-wide-morning2":"délelőtt","dayPeriods-standAlone-abbr-midnight":"éjfél","dayPeriods-standAlone-narrow-pm":"du.","dayPeriods-standAlone-wide-morning1":"reggel","field-mon-narrow-relative+0":"ez a hétfő","dayPeriods-standAlone-wide-morning2":"délelőtt","field-mon-narrow-relative+1":"következő hétfő","field-second":"másodperc","dateFormatItem-yMMMEd":"y. MMM d., E","field-year-relative+-1":"előző év","field-weekdayOfMonth-short":"hónap hétköznapja","dateFormat-short":"y. MM. dd.","eraNames":["Krisztus előtt","időszámításunk szerint"],"field-second-short":"másodperc","field-thu-short-relative+-1":"előző csütörtök","field-zone":"időzóna","field-dayperiod-narrow":"napszak","field-sun-short-relative+-1":"előző vasárnap","dayPeriods-standAlone-narrow-morning1":"reggel","dayPeriods-standAlone-narrow-morning2":"de.","eraAbbr":["i. e.","i. sz."],"field-week-short":"hét","dayPeriods-standAlone-abbr-am":"de.","dayPeriods-standAlone-wide-pm":"du.","dateFormatItem-ms":"mm:ss","field-day-relative+0":"ma","field-day-relative+1":"holnap","field-day-relative+2":"holnapután","field-day-short-relative+0":"ma","field-dayOfYear-short":"év napja","field-day-short-relative+1":"holnap","dateFormat-long":"y. MMMM d.","field-day-short-relative+2":"holnapután","field-sun-narrow-relative+-1":"előző vasárnap","dayPeriods-format-wide-noon":"dél","field-second-relative+0":"most","field-quarter-relative+-1":"előző negyedév","dayPeriods-format-narrow-night1":"éjjel","dayPeriods-format-narrow-night2":"hajnal","quarters-format-abbr":["I. n.év","II. n.év","III. n.év","IV. n.év"],"dayPeriods-standAlone-wide-noon":"dél","dayPeriods-standAlone-narrow-night1":"éjjel","dayPeriods-standAlone-narrow-night2":"hajnal","field-week-relative+-1":"előző hét","dayPeriods-format-abbr-morning1":"reggel","field-month-relative+-1":"előző hónap","dayPeriods-format-abbr-morning2":"de.","months-format-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"field-year":"év","field-era":"éra","dayPeriods-standAlone-abbr-morning1":"reggel","dayPeriods-standAlone-abbr-morning2":"de.","days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"quarters-format-narrow":["I.","II.","III.","IV."],"dateFormatItem-yQQQQ":"y. QQQQ","field-day-short-relative+-1":"tegnap","field-day-short-relative+-2":"tegnapelőtt","dateFormatItem-GyMMM":"G y. MMM","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-Bhms":"B h:mm:ss","field-hour":"óra","field-dayOfYear-narrow":"év napja","field-quarter":"negyedév","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-day":"nap","field-mon-relative+-1":"előző hétfő","field-dayOfYear":"év napja","dateFormat-medium":"y. MMM d.","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"y. MMM","dateFormatItem-GyMMMd":"G y. MMM d.","dateFormatItem-MEd":"M. d., E","field-tue-short-relative+-1":"előző kedd","field-year-short":"év","field-month-short":"hónap","dateFormatItem-MMMEd":"MMM d., E","dayPeriods-format-wide-afternoon1":"délután","dateFormatItem-MMMd":"MMM d.","dateFormatItem-Bh":"B h","months-format-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"dayPeriods-format-abbr-am":"de.","field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","dayPeriods-format-wide-pm":"du.","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"field-zone-short":"időzóna","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","dayPeriods-standAlone-wide-afternoon1":"délután","field-fri-short-relative+-1":"előző péntek","field-month-narrow":"hónap","dayPeriods-format-narrow-am":"de.","field-month-narrow-relative+-1":"előző hónap","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"field-weekday-short":"hét napja","field-day-narrow-relative+-1":"tegnap","field-day-narrow-relative+-2":"tegnapelőtt","field-quarter-short":"n.év","days-format-short":["V","H","K","Sze","Cs","P","Szo"],"months-standAlone-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"n.év","field-mon-short-relative+0":"ez a hétfő","field-mon-short-relative+1":"következő hétfő","field-dayperiod-short":"napszak","dayPeriods-standAlone-narrow-am":"de.","field-week-narrow-relative+-1":"előző hét","field-thu-relative+-1":"előző csütörtök","field-fri-narrow-relative+-1":"előző péntek","field-mon-short-relative+-1":"előző hétfő","timeFormat-medium":"H:mm:ss","field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","dateFormatItem-Ed":"d., E","field-wed-relative+-1":"előző szerda","field-weekOfMonth":"hónap hete","field-weekdayOfMonth-narrow":"hónap hétköznapja","dayPeriods-standAlone-wide-am":"de.","dateFormatItem-yQQQ":"y. QQQ","field-fri-relative+-1":"előző péntek","field-minute":"perc","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"field-day-short":"nap","field-dayperiod":"napszak","field-hour-short":"óra","months-standAlone-abbr":["jan.","febr.","márc.","ápr.","máj.","jún.","júl.","aug.","szept.","okt.","nov.","dec."],"field-month-relative+0":"ez a hónap","field-second-narrow":"mp","field-month-relative+1":"következő hónap","dateFormat-full":"y. MMMM d., EEEE","field-era-narrow":"éra","field-sat-short-relative+-1":"előző szombat","dayPeriods-format-narrow-noon":"dél","field-week-short-relative+-1":"előző hét","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"y. M.","field-sun-relative+-1":"előző vasárnap","field-wed-short-relative+-1":"előző szerda","field-weekdayOfMonth":"hónap hétköznapja","field-quarter-narrow-relative+0":"ez a negyedév","dateFormatItem-GyMMMEd":"G y. MMM d., E","field-quarter-narrow-relative+1":"következő negyedév","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","field-hour-narrow":"ó","field-year-narrow-relative+0":"ez az év","field-year-narrow-relative+1":"következő év","dateFormatItem-Gy":"G y.","field-zone-narrow":"időzóna","dayPeriods-standAlone-narrow-noon":"dél","field-tue-relative+-1":"előző kedd","field-minute-short":"perc","dateFormatItem-yw":"Y w. 'hete'","dateFormatItem-Hm":"H:mm","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét","dateFormatItem-MMM":"LLL","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","field-sat-narrow-relative+-1":"előző szombat","quarters-standAlone-abbr":["1. n.év","2. n.év","3. n.év","4. n.év"],"dateFormatItem-MMMMW":"MMMM W. 'hete'","field-month-short-relative+-1":"előző hónap","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"MMMM d.","field-week":"hét","field-day-narrow":"nap"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/hebrew.js b/lib/dojo/cldr/nls/hu/hebrew.js
index 7a676ff23..c3f956aba 100644
--- a/lib/dojo/cldr/nls/hu/hebrew.js
+++ b/lib/dojo/cldr/nls/hu/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/hebrew",{"days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"field-second-relative+0":"most","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"hét napja","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-MMMEd":"MMM d., E","eraNarrow":["TÉ"],"field-tue-relative+-1":"előző kedd","days-format-short":["V","H","K","Sze","Cs","P","Szo"],"dateFormat-long":"G y. MMMM d.","field-fri-relative+-1":"előző péntek","field-wed-relative+-1":"előző szerda","months-format-wide":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ádár I","Ádár","Niszán","Ijár","Sziván","Tamuz","Áv","Elul"],"dateFormatItem-yyyyQQQ":"G y. QQQ","dayPeriods-format-wide-pm":"du.","dateFormat-full":"G y. MMMM d., EEEE","dateFormatItem-yyyyMEd":"G y. MM. dd., E","field-thu-relative+-1":"előző csütörtök","dateFormatItem-Md":"M. d.","field-era":"éra","months-standAlone-wide":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ádár I","Ádár","Niszán","Ijár","Sziván","Tamuz","Áv","Elul"],"timeFormat-short":"H:mm","quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"timeFormat-long":"H:mm:ss z","field-year":"év","field-hour":"óra","months-format-abbr-leap":"Ádár II","months-format-abbr":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ádár I","Ádár","Niszán","Ijár","Sziván","Tamuz","Áv","Elul"],"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"ma","field-thu-relative+0":"ez a csütörtök","field-day-relative+1":"holnap","field-thu-relative+1":"következő csütörtök","dateFormatItem-GyMMMd":"G y. MMM d.","field-day-relative+2":"holnapután","dateFormatItem-H":"H","months-standAlone-abbr":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ádár I","Ádár","Niszán","Ijár","Sziván","Tamuz","Áv","Elul"],"quarters-format-abbr":["N1","N2","N3","N4"],"quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"dateFormatItem-Gy":"G y.","dateFormatItem-yyyyMMMEd":"G y. MMM d., E","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-yyyyMMM":"G y. MMM","dateFormatItem-yyyyMMMd":"G y. MMM d.","months-standAlone-wide-leap":"Ádár II","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"ez a vasárnap","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"következő vasárnap","quarters-standAlone-abbr":["N1","N2","N3","N4"],"eraAbbr":["TÉ"],"field-minute":"perc","field-dayperiod":"napszak","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"tegnap","dateFormatItem-h":"a h","dayPeriods-format-narrow-am":"de.","field-day-relative+-2":"tegnapelőtt","dateFormatItem-MMMd":"MMM d.","dateFormatItem-MEd":"M. d., E","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","field-day":"nap","days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"field-zone":"időzóna","months-standAlone-abbr-leap":"Ádár II","dateFormatItem-y":"G y.","field-year-relative+-1":"előző év","field-month-relative+-1":"előző hónap","dateFormatItem-hm":"a h:mm","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"eraNames":["TÉ"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"dateFormatItem-yyyyMd":"G y. MM. dd.","field-month":"hónap","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-tue-relative+0":"ez a kedd","field-tue-relative+1":"következő kedd","dayPeriods-format-wide-am":"de.","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","dateFormat-short":"GGGGG y. M. d.","field-second":"másodperc","field-sat-relative+-1":"előző szombat","field-sun-relative+-1":"előző vasárnap","field-month-relative+0":"ez a hónap","field-month-relative+1":"következő hónap","dateFormatItem-Ed":"d., E","field-week":"hét","dateFormat-medium":"G y. MMM d.","field-year-relative+0":"ez az év","field-week-relative+-1":"előző hét","dateFormatItem-yyyyM":"G y. MM.","field-year-relative+1":"következő év","dayPeriods-format-narrow-pm":"du.","dateFormatItem-yyyyQQQQ":"G y. QQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"a h:mm:ss","months-format-wide-leap":"Ádár II","dateFormatItem-GyMMM":"G y. MMM","field-mon-relative+-1":"előző hétfő","dateFormatItem-yyyy":"G y.","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/hebrew",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","timeFormat-short":"H:mm","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-thu-short-relative+0":"ez a csütörtök","field-day-short-relative+-1":"tegnap","field-thu-short-relative+1":"következő csütörtök","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+-1":"előző szerda","dateFormatItem-EBhms":"E h:mm:ss","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","dayPeriods-format-narrow-am":"de.","dateFormatItem-MMMd":"MMM d.","field-weekdayOfMonth-narrow":"hónap hétköznapja","dayPeriods-format-abbr-am":"de.","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","dateFormatItem-yyyyQQQ":"G y. QQQ","eraNames":["TÉ"],"field-weekOfMonth":"hónap hete","dayPeriods-standAlone-abbr-pm":"du.","field-month-short":"hónap","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-yyyyMd":"G y. MM. dd.","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","dayPeriods-format-wide-am":"de.","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","dateFormatItem-yyyyMEd":"G y. MM. dd., E","field-wed-relative+-1":"előző szerda","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"dayPeriods-standAlone-wide-pm":"du.","dateFormatItem-Ehms":"E h:mm:ss","dateFormat-long":"G y. MMMM d.","dateFormatItem-GyMMMd":"G y. MMM d.","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","dateFormatItem-GyMMM":"G y. MMM","field-month":"hónap","field-day-narrow":"nap","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","dayPeriods-format-narrow-pm":"du.","dateFormat-medium":"G y. MMM d.","dateFormatItem-yyyyMMMM":"G y. MMMM","eraAbbr":["TÉ"],"quarters-standAlone-abbr":["1. n.év","2. n.év","3. n.év","4. n.év"],"dayPeriods-format-abbr-pm":"du.","dateFormatItem-yyyyM":"G y. MM.","field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","field-quarter-relative+-1":"előző negyedév","dateFormatItem-yyyyMMMd":"G y. MMM d.","field-dayperiod-narrow":"napszak","dayPeriods-standAlone-narrow-am":"de.","field-week-narrow-relative+-1":"előző hét","days-format-short":["V","H","K","Sze","Cs","P","Szo"],"quarters-format-narrow":["I.","II.","III.","IV."],"dayPeriods-format-wide-pm":"du.","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","dateFormatItem-Md":"M. d.","field-hour":"óra","months-format-wide":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ádár I","Ádár","Niszán","Ijár","Sziván","Tamuz","Áv","Elul"],"dateFormat-full":"G y. MMMM d., EEEE","field-month-relative+-1":"előző hónap","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","dateFormatItem-EBhm":"E h:mm","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","dateFormatItem-Ehm":"E h:mm","months-format-abbr":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ádár I","Ádár","Niszán","Ijár","Sziván","Tamuz","Áv","Elul"],"field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","dateFormat-short":"GGGGG y. M. d.","dateFormatItem-Bh":"B h","field-thu-short-relative+-1":"előző csütörtök","field-year-narrow-relative+-1":"előző év","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-yyyyMMMEd":"G y. MMM d., E","field-mon-narrow-relative+-1":"előző hétfő","dateFormatItem-MMMMd":"MMMM d.","field-thu-narrow-relative+-1":"előző csütörtök","field-tue-narrow-relative+-1":"előző kedd","field-weekOfMonth-short":"hónap hete","dateFormatItem-H":"H","dayPeriods-standAlone-narrow-pm":"du.","dateFormatItem-yyyy":"G y.","field-wed-short-relative+0":"ez a szerda","months-standAlone-wide":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ádár I","Ádár","Niszán","Ijár","Sziván","Tamuz","Áv","Elul"],"field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-hm":"a h:mm","months-format-abbr-leap":"Ádár II","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-day-short-relative+1":"holnap","field-sat-relative+0":"ez a szombat","field-quarter-narrow-relative+1":"következő negyedév","field-day-short-relative+2":"holnapután","field-sat-relative+1":"következő szombat","dateFormatItem-h":"a h","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","months-standAlone-abbr":["Tisri","Hesván","Kiszlév","Tévész","Svát","Ádár I","Ádár","Niszán","Ijár","Sziván","Tamuz","Áv","Elul"],"months-format-wide-leap":"Ádár II","field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"M. d., E","field-zone-narrow":"időzóna","dateFormatItem-y":"G y.","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","field-fri-short-relative+-1":"előző péntek","dateFormatItem-hms":"a h:mm:ss","field-thu-relative+-1":"előző csütörtök","field-week":"hét","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"dateFormatItem-Ed":"d., E","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","field-dayperiod-short":"napszak","dateFormatItem-yyyyMMM":"G y. MMM","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"field-week-short-relative+-1":"előző hét","months-standAlone-abbr-leap":"Ádár II","dateFormatItem-yyyyQQQQ":"G y. QQQQ","field-hour-short":"óra","field-zone-short":"időzóna","quarters-format-abbr":["I. n.év","II. n.év","III. n.év","IV. n.év"],"field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","eraNarrow":"TÉ","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"field-mon-narrow-relative+0":"ez a hétfő","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","dateFormatItem-MMMEd":"MMM d., E","field-weekOfMonth-narrow":"hónap hete","field-weekday-narrow":"hét napja","months-standAlone-wide-leap":"Ádár II","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","dayPeriods-standAlone-abbr-am":"de.","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","dateFormatItem-Gy":"G y.","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek","dayPeriods-standAlone-wide-am":"de."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/indian.js b/lib/dojo/cldr/nls/hu/indian.js
index bcebdca24..8d05fedbb 100644
--- a/lib/dojo/cldr/nls/hu/indian.js
+++ b/lib/dojo/cldr/nls/hu/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/indian",{"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","field-dayperiod":"napszak","field-sun-relative+-1":"előző vasárnap","field-mon-relative+-1":"előző hétfő","field-minute":"perc","field-day-relative+-1":"tegnap","field-weekday":"hét napja","field-day-relative+-2":"tegnapelőtt","field-era":"éra","field-hour":"óra","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-wed-relative+-1":"előző szerda","field-day-relative+0":"ma","field-day-relative+1":"holnap","field-day-relative+2":"holnapután","field-tue-relative+0":"ez a kedd","field-zone":"időzóna","field-tue-relative+1":"következő kedd","field-week-relative+-1":"előző hét","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-sat-relative+-1":"előző szombat","field-year-relative+-1":"előző év","field-year":"év","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-week":"hét","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét","months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-month-relative+0":"ez a hónap","field-month":"hónap","field-month-relative+1":"következő hónap","field-fri-relative+-1":"előző péntek","field-second":"másodperc","field-tue-relative+-1":"előző kedd","field-day":"nap","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-thu-relative+0":"ez a csütörtök","field-second-relative+0":"most","field-thu-relative+1":"következő csütörtök","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-month-relative+-1":"előző hónap","field-thu-relative+-1":"előző csütörtök"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/indian",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-thu-short-relative+0":"ez a csütörtök","field-day-short-relative+-1":"tegnap","field-thu-short-relative+1":"következő csütörtök","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+-1":"előző szerda","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","field-weekdayOfMonth-narrow":"hónap hétköznapja","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","field-weekOfMonth":"hónap hete","field-month-short":"hónap","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","field-wed-relative+-1":"előző szerda","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","field-month":"hónap","field-day-narrow":"nap","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"előző negyedév","field-dayperiod-narrow":"napszak","field-week-narrow-relative+-1":"előző hét","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","field-hour":"óra","field-month-relative+-1":"előző hónap","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","field-thu-short-relative+-1":"előző csütörtök","field-year-narrow-relative+-1":"előző év","field-mon-narrow-relative+-1":"előző hétfő","field-thu-narrow-relative+-1":"előző csütörtök","field-tue-narrow-relative+-1":"előző kedd","field-weekOfMonth-short":"hónap hete","field-wed-short-relative+0":"ez a szerda","months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-sat-relative+0":"ez a szombat","field-day-short-relative+1":"holnap","field-quarter-narrow-relative+1":"következő negyedév","field-sat-relative+1":"következő szombat","field-day-short-relative+2":"holnapután","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","field-zone-narrow":"időzóna","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","field-fri-short-relative+-1":"előző péntek","field-thu-relative+-1":"előző csütörtök","field-week":"hét","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","field-dayperiod-short":"napszak","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","field-week-short-relative+-1":"előző hét","field-hour-short":"óra","field-zone-short":"időzóna","field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","field-mon-narrow-relative+0":"ez a hétfő","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","field-weekOfMonth-narrow":"hónap hete","field-weekday-narrow":"hét napja","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/islamic.js b/lib/dojo/cldr/nls/hu/islamic.js
index 172becf4d..2150a8c53 100644
--- a/lib/dojo/cldr/nls/hu/islamic.js
+++ b/lib/dojo/cldr/nls/hu/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/islamic",{"days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"field-second-relative+0":"most","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"hét napja","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-MMMEd":"MMM d., E","eraNarrow":["MF"],"field-tue-relative+-1":"előző kedd","days-format-short":["V","H","K","Sze","Cs","P","Szo"],"dateFormat-long":"G y. MMMM d.","field-fri-relative+-1":"előző péntek","field-wed-relative+-1":"előző szerda","months-format-wide":["Moharrem","Safar","Rébi el avvel","Rébi el accher","Dsemádi el avvel","Dsemádi el accher","Redseb","Sabán","Ramadán","Sevvál","Dsül kade","Dsül hedse"],"dateFormatItem-yyyyQQQ":"G y. QQQ","dayPeriods-format-wide-pm":"du.","dateFormat-full":"G y. MMMM d., EEEE","dateFormatItem-yyyyMEd":"G y. MM. dd., E","field-thu-relative+-1":"előző csütörtök","dateFormatItem-Md":"M. d.","field-era":"éra","months-standAlone-wide":["Moharrem","Safar","Rébi I","Rébi II","Dsemádi I","Dsemádi II","Redseb","Sabán","Ramadán","Sevvál","Dsül kade","Dsül hedse"],"timeFormat-short":"H:mm","quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"timeFormat-long":"H:mm:ss z","field-year":"év","field-hour":"óra","months-format-abbr":["Moh.","Saf.","Rébi I","Rébi II","Dsem. I","Dsem. II","Red.","Sab.","Ram.","Sev.","Dsül k.","Dsül h."],"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"ma","field-thu-relative+0":"ez a csütörtök","field-day-relative+1":"holnap","field-thu-relative+1":"következő csütörtök","dateFormatItem-GyMMMd":"G y. MMM d.","field-day-relative+2":"holnapután","dateFormatItem-H":"H","months-standAlone-abbr":["Moh.","Saf.","Rébi I","Rébi II","Dsem. I","Dsem. II","Red.","Sab.","Ram.","Sev.","Dsül k.","Dsül h."],"quarters-format-abbr":["N1","N2","N3","N4"],"quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"dateFormatItem-Gy":"G y.","dateFormatItem-yyyyMMMEd":"G y. MMM d., E","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-yyyyMMM":"G y. MMM","dateFormatItem-yyyyMMMd":"G y. MMM d.","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"ez a vasárnap","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"következő vasárnap","quarters-standAlone-abbr":["N1","N2","N3","N4"],"eraAbbr":["MF"],"field-minute":"perc","field-dayperiod":"napszak","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"tegnap","dateFormatItem-h":"a h","dayPeriods-format-narrow-am":"de.","field-day-relative+-2":"tegnapelőtt","dateFormatItem-MMMd":"MMM d.","dateFormatItem-MEd":"M. d., E","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","field-day":"nap","days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"field-zone":"időzóna","dateFormatItem-y":"G y.","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"előző év","field-month-relative+-1":"előző hónap","dateFormatItem-hm":"a h:mm","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"eraNames":["MF"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"dateFormatItem-yyyyMd":"G y. MM. dd.","field-month":"hónap","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-tue-relative+0":"ez a kedd","field-tue-relative+1":"következő kedd","dayPeriods-format-wide-am":"de.","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","dateFormat-short":"GGGGG y. M. d.","field-second":"másodperc","field-sat-relative+-1":"előző szombat","field-sun-relative+-1":"előző vasárnap","field-month-relative+0":"ez a hónap","field-month-relative+1":"következő hónap","dateFormatItem-Ed":"d., E","field-week":"hét","dateFormat-medium":"G y. MMM d.","field-year-relative+0":"ez az év","field-week-relative+-1":"előző hét","dateFormatItem-yyyyM":"G y. MM.","field-year-relative+1":"következő év","dayPeriods-format-narrow-pm":"du.","dateFormatItem-yyyyQQQQ":"G y. QQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G y. MMM","field-mon-relative+-1":"előző hétfő","dateFormatItem-yyyy":"G y.","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/islamic",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","timeFormat-short":"H:mm","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-thu-short-relative+0":"ez a csütörtök","field-day-short-relative+-1":"tegnap","field-thu-short-relative+1":"következő csütörtök","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+-1":"előző szerda","dateFormatItem-EBhms":"E h:mm:ss","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","dayPeriods-format-narrow-am":"de.","dateFormatItem-MMMd":"MMM d.","field-weekdayOfMonth-narrow":"hónap hétköznapja","dayPeriods-format-abbr-am":"de.","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","dateFormatItem-yyyyQQQ":"G y. QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["MF"],"field-weekOfMonth":"hónap hete","dayPeriods-standAlone-abbr-pm":"du.","field-month-short":"hónap","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-yyyyMd":"G y. MM. dd.","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","dayPeriods-format-wide-am":"de.","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","dateFormatItem-yyyyMEd":"G y. MM. dd., E","field-wed-relative+-1":"előző szerda","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"dayPeriods-standAlone-wide-pm":"du.","dateFormatItem-Ehms":"E h:mm:ss","dateFormat-long":"G y. MMMM d.","dateFormatItem-GyMMMd":"G y. MMM d.","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","dateFormatItem-GyMMM":"G y. MMM","field-month":"hónap","field-day-narrow":"nap","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","dayPeriods-format-narrow-pm":"du.","dateFormat-medium":"G y. MMM d.","dateFormatItem-yyyyMMMM":"G y. MMMM","eraAbbr":["MF"],"quarters-standAlone-abbr":["1. n.év","2. n.év","3. n.év","4. n.év"],"dayPeriods-format-abbr-pm":"du.","dateFormatItem-yyyyM":"G y. MM.","field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","field-quarter-relative+-1":"előző negyedév","dateFormatItem-yyyyMMMd":"G y. MMM d.","field-dayperiod-narrow":"napszak","dayPeriods-standAlone-narrow-am":"de.","field-week-narrow-relative+-1":"előző hét","days-format-short":["V","H","K","Sze","Cs","P","Szo"],"quarters-format-narrow":["I.","II.","III.","IV."],"dayPeriods-format-wide-pm":"du.","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","dateFormatItem-Md":"M. d.","field-hour":"óra","months-format-wide":["Moharrem","Safar","Rébi el avvel","Rébi el accher","Dsemádi el avvel","Dsemádi el accher","Redseb","Sabán","Ramadán","Sevvál","Dsül kade","Dsül hedse"],"dateFormat-full":"G y. MMMM d., EEEE","field-month-relative+-1":"előző hónap","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","dateFormatItem-EBhm":"E h:mm","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","dateFormatItem-Ehm":"E h:mm","months-format-abbr":["Moh.","Saf.","Réb. 1","Réb. 2","Dsem. I","Dsem. II","Red.","Sab.","Ram.","Sev.","Dsül k.","Dsül h."],"field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","dateFormat-short":"GGGGG y. M. d.","dateFormatItem-Bh":"B h","field-thu-short-relative+-1":"előző csütörtök","field-year-narrow-relative+-1":"előző év","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-yyyyMMMEd":"G y. MMM d., E","field-mon-narrow-relative+-1":"előző hétfő","dateFormatItem-MMMMd":"MMMM d.","field-thu-narrow-relative+-1":"előző csütörtök","field-tue-narrow-relative+-1":"előző kedd","field-weekOfMonth-short":"hónap hete","dateFormatItem-H":"H","dayPeriods-standAlone-narrow-pm":"du.","dateFormatItem-yyyy":"G y.","field-wed-short-relative+0":"ez a szerda","months-standAlone-wide":["Moharrem","Safar","Rébi I","Rébi II","Dsemádi I","Dsemádi II","Redseb","Sabán","Ramadán","Sevvál","Dsül kade","Dsül hedse"],"field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-hm":"a h:mm","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-day-short-relative+1":"holnap","field-sat-relative+0":"ez a szombat","field-quarter-narrow-relative+1":"következő negyedév","field-day-short-relative+2":"holnapután","field-sat-relative+1":"következő szombat","dateFormatItem-h":"a h","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","months-standAlone-abbr":["Moh.","Saf.","Réb. 1","Réb. 2","Dsem. I","Dsem. II","Red.","Sab.","Ram.","Sev.","Dsül k.","Dsül h."],"field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"M. d., E","field-zone-narrow":"időzóna","dateFormatItem-y":"G y.","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","field-fri-short-relative+-1":"előző péntek","dateFormatItem-hms":"a h:mm:ss","field-thu-relative+-1":"előző csütörtök","field-week":"hét","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"dateFormatItem-Ed":"d., E","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","field-dayperiod-short":"napszak","dateFormatItem-yyyyMMM":"G y. MMM","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"field-week-short-relative+-1":"előző hét","dateFormatItem-yyyyQQQQ":"G y. QQQQ","field-hour-short":"óra","field-zone-short":"időzóna","quarters-format-abbr":["I. n.év","II. n.év","III. n.év","IV. n.év"],"field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","eraNarrow":"MF","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"field-mon-narrow-relative+0":"ez a hétfő","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","dateFormatItem-MMMEd":"MMM d., E","field-weekOfMonth-narrow":"hónap hete","field-weekday-narrow":"hét napja","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","dayPeriods-standAlone-abbr-am":"de.","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","dateFormatItem-Gy":"G y.","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek","dayPeriods-standAlone-wide-am":"de."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/japanese.js b/lib/dojo/cldr/nls/hu/japanese.js
index dc48a1400..ecbb3714f 100644
--- a/lib/dojo/cldr/nls/hu/japanese.js
+++ b/lib/dojo/cldr/nls/hu/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/japanese",{"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","field-dayperiod":"napszak","field-sun-relative+-1":"előző vasárnap","field-mon-relative+-1":"előző hétfő","field-minute":"perc","field-day-relative+-1":"tegnap","field-weekday":"hét napja","field-day-relative+-2":"tegnapelőtt","field-era":"éra","field-hour":"óra","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","field-wed-relative+-1":"előző szerda","field-day-relative+0":"ma","field-day-relative+1":"holnap","field-day-relative+2":"holnapután","dateFormat-long":"G y. MMMM d.","field-tue-relative+0":"ez a kedd","field-zone":"időzóna","field-tue-relative+1":"következő kedd","field-week-relative+-1":"előző hét","dateFormat-medium":"G y.MM.dd.","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-sat-relative+-1":"előző szombat","field-year-relative+-1":"előző év","field-year":"év","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","field-week":"hét","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét","field-month-relative+0":"ez a hónap","field-month":"hónap","field-month-relative+1":"következő hónap","field-fri-relative+-1":"előző péntek","field-second":"másodperc","field-tue-relative+-1":"előző kedd","field-day":"nap","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-thu-relative+0":"ez a csütörtök","field-second-relative+0":"most","dateFormat-short":"GGGGG y.MM.dd.","field-thu-relative+1":"következő csütörtök","dateFormat-full":"G y. MMMM d., EEEE","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-month-relative+-1":"előző hónap","field-thu-relative+-1":"előző csütörtök"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/japanese",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-thu-short-relative+0":"ez a csütörtök","field-day-short-relative+-1":"tegnap","field-thu-short-relative+1":"következő csütörtök","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+-1":"előző szerda","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","field-weekdayOfMonth-narrow":"hónap hétköznapja","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","field-weekOfMonth":"hónap hete","field-month-short":"hónap","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","field-wed-relative+-1":"előző szerda","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","dateFormat-long":"G y. MMMM d.","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","field-month":"hónap","field-day-narrow":"nap","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","dateFormat-medium":"G y.MM.dd.","field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","field-quarter-relative+-1":"előző negyedév","field-dayperiod-narrow":"napszak","field-week-narrow-relative+-1":"előző hét","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","field-hour":"óra","dateFormat-full":"G y. MMMM d., EEEE","field-month-relative+-1":"előző hónap","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","dateFormat-short":"GGGGG y.MM.dd.","field-thu-short-relative+-1":"előző csütörtök","field-year-narrow-relative+-1":"előző év","field-mon-narrow-relative+-1":"előző hétfő","field-thu-narrow-relative+-1":"előző csütörtök","field-tue-narrow-relative+-1":"előző kedd","field-weekOfMonth-short":"hónap hete","field-wed-short-relative+0":"ez a szerda","field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-sat-relative+0":"ez a szombat","field-day-short-relative+1":"holnap","field-quarter-narrow-relative+1":"következő negyedév","field-sat-relative+1":"következő szombat","field-day-short-relative+2":"holnapután","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","field-zone-narrow":"időzóna","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","field-fri-short-relative+-1":"előző péntek","field-thu-relative+-1":"előző csütörtök","field-week":"hét","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","field-dayperiod-short":"napszak","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","field-week-short-relative+-1":"előző hét","field-hour-short":"óra","field-zone-short":"időzóna","field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","field-mon-narrow-relative+0":"ez a hétfő","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","field-weekOfMonth-narrow":"hónap hete","field-weekday-narrow":"hét napja","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/number.js b/lib/dojo/cldr/nls/hu/number.js
index 144c24ded..8c83a1919 100644
--- a/lib/dojo/cldr/nls/hu/number.js
+++ b/lib/dojo/cldr/nls/hu/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 billió","decimalFormat-short":"000 B"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 B","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 billió","decimalFormat":"#,##0.###","currencyFormat-short":"000 B ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/persian.js b/lib/dojo/cldr/nls/hu/persian.js
index 4a0d6c5c2..ecbf1ff7e 100644
--- a/lib/dojo/cldr/nls/hu/persian.js
+++ b/lib/dojo/cldr/nls/hu/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/persian",{"days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"most","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"hét napja","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-MMMEd":"MMM d., E","field-tue-relative+-1":"előző kedd","days-format-short":["V","H","K","Sze","Cs","P","Szo"],"dateFormat-long":"G y. MMMM d.","field-fri-relative+-1":"előző péntek","field-wed-relative+-1":"előző szerda","months-format-wide":["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"dateFormatItem-yyyyQQQ":"G y. QQQ","dayPeriods-format-wide-pm":"du.","dateFormat-full":"G y. MMMM d., EEEE","dateFormatItem-yyyyMEd":"G y. MM. dd., E","field-thu-relative+-1":"előző csütörtök","dateFormatItem-Md":"M. d.","field-era":"éra","months-standAlone-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"timeFormat-short":"H:mm","quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"timeFormat-long":"H:mm:ss z","field-year":"év","field-hour":"óra","months-format-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"ma","field-thu-relative+0":"ez a csütörtök","field-day-relative+1":"holnap","field-thu-relative+1":"következő csütörtök","dateFormatItem-GyMMMd":"G y. MMM d.","field-day-relative+2":"holnapután","dateFormatItem-H":"H","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"quarters-format-abbr":["N1","N2","N3","N4"],"quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"dateFormatItem-Gy":"G y.","dateFormatItem-yyyyMMMEd":"G y. MMM d., E","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-yyyyMMM":"G y. MMM","dateFormatItem-yyyyMMMd":"G y. MMM d.","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"ez a vasárnap","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"következő vasárnap","quarters-standAlone-abbr":["N1","N2","N3","N4"],"field-minute":"perc","field-dayperiod":"napszak","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"tegnap","dateFormatItem-h":"a h","dayPeriods-format-narrow-am":"de.","field-day-relative+-2":"tegnapelőtt","dateFormatItem-MMMd":"MMM d.","dateFormatItem-MEd":"M. d., E","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","field-day":"nap","days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"field-zone":"időzóna","dateFormatItem-y":"G y.","months-standAlone-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"field-year-relative+-1":"előző év","field-month-relative+-1":"előző hónap","dateFormatItem-hm":"a h:mm","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"dateFormatItem-yyyyMd":"G y. MM. dd.","field-month":"hónap","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-tue-relative+0":"ez a kedd","field-tue-relative+1":"következő kedd","dayPeriods-format-wide-am":"de.","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","dateFormat-short":"GGGGG y. M. d.","field-second":"másodperc","field-sat-relative+-1":"előző szombat","field-sun-relative+-1":"előző vasárnap","field-month-relative+0":"ez a hónap","field-month-relative+1":"következő hónap","dateFormatItem-Ed":"d., E","field-week":"hét","dateFormat-medium":"G y. MMM d.","field-year-relative+0":"ez az év","field-week-relative+-1":"előző hét","dateFormatItem-yyyyM":"G y. MM.","field-year-relative+1":"következő év","dayPeriods-format-narrow-pm":"du.","dateFormatItem-yyyyQQQQ":"G y. QQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G y. MMM","field-mon-relative+-1":"előző hétfő","dateFormatItem-yyyy":"G y.","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/persian",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","timeFormat-short":"H:mm","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-thu-short-relative+0":"ez a csütörtök","field-day-short-relative+-1":"tegnap","field-thu-short-relative+1":"következő csütörtök","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+-1":"előző szerda","dateFormatItem-EBhms":"E h:mm:ss","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","dayPeriods-format-narrow-am":"de.","dateFormatItem-MMMd":"MMM d.","field-weekdayOfMonth-narrow":"hónap hétköznapja","dayPeriods-format-abbr-am":"de.","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","dateFormatItem-yyyyQQQ":"G y. QQQ","months-standAlone-narrow":["J","F","M","Á","M","J","J","A","Sz","O","N","D"],"field-weekOfMonth":"hónap hete","dayPeriods-standAlone-abbr-pm":"du.","field-month-short":"hónap","dateFormatItem-GyMMMEd":"G y. MMM d., E","dateFormatItem-yyyyMd":"G y. MM. dd.","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","dayPeriods-format-wide-am":"de.","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","dateFormatItem-yyyyMEd":"G y. MM. dd., E","field-wed-relative+-1":"előző szerda","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","days-standAlone-narrow":["V","H","K","Sz","Cs","P","Sz"],"dayPeriods-standAlone-wide-pm":"du.","dateFormatItem-Ehms":"E h:mm:ss","dateFormat-long":"G y. MMMM d.","dateFormatItem-GyMMMd":"G y. MMM d.","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","quarters-standAlone-wide":["1. negyedév","2. negyedév","3. negyedév","4. negyedév"],"days-format-narrow":["V","H","K","Sz","Cs","P","Sz"],"field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","dateFormatItem-GyMMM":"G y. MMM","field-month":"hónap","field-day-narrow":"nap","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","dayPeriods-format-narrow-pm":"du.","dateFormat-medium":"G y. MMM d.","dateFormatItem-yyyyMMMM":"G y. MMMM","quarters-standAlone-abbr":["1. n.év","2. n.év","3. n.év","4. n.év"],"dayPeriods-format-abbr-pm":"du.","dateFormatItem-yyyyM":"G y. MM.","field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"előző negyedév","dateFormatItem-yyyyMMMd":"G y. MMM d.","field-dayperiod-narrow":"napszak","dayPeriods-standAlone-narrow-am":"de.","field-week-narrow-relative+-1":"előző hét","days-format-short":["V","H","K","Sze","Cs","P","Szo"],"quarters-format-narrow":["I.","II.","III.","IV."],"dayPeriods-format-wide-pm":"du.","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","dateFormatItem-Md":"M. d.","field-hour":"óra","months-format-wide":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"dateFormat-full":"G y. MMMM d., EEEE","field-month-relative+-1":"előző hónap","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","dateFormatItem-EBhm":"E h:mm","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","dateFormatItem-Ehm":"E h:mm","months-format-abbr":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","dateFormat-short":"GGGGG y. M. d.","dateFormatItem-Bh":"B h","field-thu-short-relative+-1":"előző csütörtök","field-year-narrow-relative+-1":"előző év","days-standAlone-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"dateFormatItem-yyyyMMMEd":"G y. MMM d., E","field-mon-narrow-relative+-1":"előző hétfő","dateFormatItem-MMMMd":"MMMM d.","field-thu-narrow-relative+-1":"előző csütörtök","field-tue-narrow-relative+-1":"előző kedd","field-weekOfMonth-short":"hónap hete","dateFormatItem-H":"H","dayPeriods-standAlone-narrow-pm":"du.","dateFormatItem-yyyy":"G y.","field-wed-short-relative+0":"ez a szerda","months-standAlone-wide":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","days-standAlone-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-hm":"a h:mm","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-sat-relative+0":"ez a szombat","field-day-short-relative+1":"holnap","field-quarter-narrow-relative+1":"következő negyedév","field-sat-relative+1":"következő szombat","field-day-short-relative+2":"holnapután","dateFormatItem-h":"a h","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","months-standAlone-abbr":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"M. d., E","field-zone-narrow":"időzóna","dateFormatItem-y":"G y.","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","field-fri-short-relative+-1":"előző péntek","dateFormatItem-hms":"a h:mm:ss","field-thu-relative+-1":"előző csütörtök","field-week":"hét","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["I. negyedév","II. negyedév","III. negyedév","IV. negyedév"],"dateFormatItem-Ed":"d., E","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","field-dayperiod-short":"napszak","dateFormatItem-yyyyMMM":"G y. MMM","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","days-standAlone-short":["V","H","K","Sze","Cs","P","Szo"],"field-week-short-relative+-1":"előző hét","dateFormatItem-yyyyQQQQ":"G y. QQQQ","field-hour-short":"óra","field-zone-short":"időzóna","quarters-format-abbr":["I. n.év","II. n.év","III. n.év","IV. n.év"],"field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","days-format-wide":["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],"field-mon-narrow-relative+0":"ez a hétfő","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","dateFormatItem-MMMEd":"MMM d., E","field-weekOfMonth-narrow":"hónap hete","field-weekday-narrow":"hét napja","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","dayPeriods-standAlone-abbr-am":"de.","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","days-format-abbr":["V","H","K","Sze","Cs","P","Szo"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","dateFormatItem-Gy":"G y.","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek","dayPeriods-standAlone-wide-am":"de."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/hu/roc.js b/lib/dojo/cldr/nls/hu/roc.js
index 68280b52e..8a24c7efe 100644
--- a/lib/dojo/cldr/nls/hu/roc.js
+++ b/lib/dojo/cldr/nls/hu/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/hu/roc",{"field-sat-relative+0":"ez a szombat","field-sat-relative+1":"következő szombat","field-dayperiod":"napszak","field-sun-relative+-1":"előző vasárnap","field-mon-relative+-1":"előző hétfő","field-minute":"perc","field-day-relative+-1":"tegnap","field-weekday":"hét napja","field-day-relative+-2":"tegnapelőtt","field-era":"éra","field-hour":"óra","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","field-wed-relative+-1":"előző szerda","field-day-relative+0":"ma","field-day-relative+1":"holnap","eraAbbr":["R.O.C. előtt"],"field-day-relative+2":"holnapután","field-tue-relative+0":"ez a kedd","field-zone":"időzóna","field-tue-relative+1":"következő kedd","field-week-relative+-1":"előző hét","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-sat-relative+-1":"előző szombat","field-year-relative+-1":"előző év","field-year":"év","field-fri-relative+0":"ez a péntek","field-fri-relative+1":"következő péntek","field-week":"hét","field-week-relative+0":"ez a hét","field-week-relative+1":"következő hét","field-month-relative+0":"ez a hónap","field-month":"hónap","field-month-relative+1":"következő hónap","field-fri-relative+-1":"előző péntek","field-second":"másodperc","field-tue-relative+-1":"előző kedd","field-day":"nap","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-thu-relative+0":"ez a csütörtök","field-second-relative+0":"most","field-thu-relative+1":"következő csütörtök","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-month-relative+-1":"előző hónap","field-thu-relative+-1":"előző csütörtök"}); \ No newline at end of file
+define("dojo/cldr/nls/hu/roc",{"field-quarter-short-relative+0":"ez a negyedév","field-quarter-short-relative+1":"következő negyedév","field-tue-relative+-1":"előző kedd","field-year":"év","field-wed-relative+0":"ez a szerda","field-wed-relative+1":"következő szerda","field-minute":"perc","field-month-narrow-relative+-1":"előző hónap","field-tue-narrow-relative+0":"ez a kedd","field-tue-narrow-relative+1":"következő kedd","field-thu-short-relative+0":"ez a csütörtök","field-day-short-relative+-1":"tegnap","field-thu-short-relative+1":"következő csütörtök","field-day-relative+0":"ma","field-day-short-relative+-2":"tegnapelőtt","field-day-relative+1":"holnap","field-week-narrow-relative+0":"ez a hét","field-day-relative+2":"holnapután","field-week-narrow-relative+1":"következő hét","field-wed-narrow-relative+-1":"előző szerda","field-year-narrow":"év","field-era-short":"éra","field-year-narrow-relative+0":"ez az év","field-tue-relative+0":"ez a kedd","field-year-narrow-relative+1":"következő év","field-tue-relative+1":"következő kedd","field-weekdayOfMonth":"hónap hétköznapja","field-second-short":"másodperc","field-weekdayOfMonth-narrow":"hónap hétköznapja","field-week-relative+0":"ez a hét","field-month-relative+0":"ez a hónap","field-week-relative+1":"következő hét","field-month-relative+1":"következő hónap","field-sun-narrow-relative+0":"ez a vasárnap","field-mon-short-relative+0":"ez a hétfő","field-sun-narrow-relative+1":"következő vasárnap","field-mon-short-relative+1":"következő hétfő","field-second-relative+0":"most","eraNames":["R.O.C. előtt","R.O.C."],"field-weekOfMonth":"hónap hete","field-month-short":"hónap","field-day":"nap","field-dayOfYear-short":"év napja","field-year-relative+-1":"előző év","field-sat-short-relative+-1":"előző szombat","field-hour-relative+0":"ebben az órában","field-wed-relative+-1":"előző szerda","field-sat-narrow-relative+-1":"előző szombat","field-second":"másodperc","field-quarter":"negyedév","field-week-short":"hét","field-day-narrow-relative+0":"ma","field-day-narrow-relative+1":"holnap","field-day-narrow-relative+2":"holnapután","field-tue-short-relative+0":"ez a kedd","field-tue-short-relative+1":"következő kedd","field-month-short-relative+-1":"előző hónap","field-mon-relative+-1":"előző hétfő","field-month":"hónap","field-day-narrow":"nap","field-minute-short":"perc","field-dayperiod":"napszak","field-sat-short-relative+0":"ez a szombat","field-sat-short-relative+1":"következő szombat","eraAbbr":["R.O.C. előtt","R.O.C."],"field-second-narrow":"mp","field-mon-relative+0":"ez a hétfő","field-mon-relative+1":"következő hétfő","field-day-narrow-relative+-1":"tegnap","field-year-short":"év","field-day-narrow-relative+-2":"tegnapelőtt","field-quarter-relative+-1":"előző negyedév","field-dayperiod-narrow":"napszak","field-week-narrow-relative+-1":"előző hét","field-dayOfYear":"év napja","field-sat-relative+-1":"előző szombat","field-hour":"óra","field-month-relative+-1":"előző hónap","field-quarter-short":"n.év","field-sat-narrow-relative+0":"ez a szombat","field-fri-relative+0":"ez a péntek","field-sat-narrow-relative+1":"következő szombat","field-fri-relative+1":"következő péntek","field-month-narrow-relative+0":"ez a hónap","field-month-narrow-relative+1":"következő hónap","field-sun-short-relative+0":"ez a vasárnap","field-sun-short-relative+1":"következő vasárnap","field-week-relative+-1":"előző hét","field-quarter-short-relative+-1":"előző negyedév","field-quarter-relative+0":"ez a negyedév","field-minute-relative+0":"ebben a percben","field-quarter-relative+1":"következő negyedév","field-wed-short-relative+-1":"előző szerda","field-thu-short-relative+-1":"előző csütörtök","field-year-narrow-relative+-1":"előző év","field-mon-narrow-relative+-1":"előző hétfő","field-thu-narrow-relative+-1":"előző csütörtök","field-tue-narrow-relative+-1":"előző kedd","field-weekOfMonth-short":"hónap hete","field-wed-short-relative+0":"ez a szerda","field-wed-short-relative+1":"következő szerda","field-sun-relative+-1":"előző vasárnap","field-weekday":"hét napja","field-day-short-relative+0":"ma","field-quarter-narrow-relative+0":"ez a negyedév","field-sat-relative+0":"ez a szombat","field-day-short-relative+1":"holnap","field-quarter-narrow-relative+1":"következő negyedév","field-sat-relative+1":"következő szombat","field-day-short-relative+2":"holnapután","field-week-short-relative+0":"ez a hét","field-week-short-relative+1":"következő hét","field-dayOfYear-narrow":"év napja","field-month-short-relative+0":"ez a hónap","field-month-short-relative+1":"következő hónap","field-weekdayOfMonth-short":"hónap hétköznapja","field-zone-narrow":"időzóna","field-thu-narrow-relative+0":"ez a csütörtök","field-thu-narrow-relative+1":"következő csütörtök","field-sun-narrow-relative+-1":"előző vasárnap","field-mon-short-relative+-1":"előző hétfő","field-thu-relative+0":"ez a csütörtök","field-thu-relative+1":"következő csütörtök","field-fri-short-relative+-1":"előző péntek","field-thu-relative+-1":"előző csütörtök","field-week":"hét","field-wed-narrow-relative+0":"ez a szerda","field-wed-narrow-relative+1":"következő szerda","field-quarter-narrow-relative+-1":"előző negyedév","field-year-short-relative+0":"ez az év","field-dayperiod-short":"napszak","field-year-short-relative+1":"következő év","field-fri-short-relative+0":"ez a péntek","field-fri-short-relative+1":"következő péntek","field-week-short-relative+-1":"előző hét","field-hour-short":"óra","field-zone-short":"időzóna","field-month-narrow":"hónap","field-hour-narrow":"ó","field-fri-narrow-relative+-1":"előző péntek","field-year-relative+0":"ez az év","field-year-relative+1":"következő év","field-era-narrow":"éra","field-fri-relative+-1":"előző péntek","eraNarrow":["R.O.C. előtt","R.O.C."],"field-tue-short-relative+-1":"előző kedd","field-minute-narrow":"p","field-mon-narrow-relative+0":"ez a hétfő","field-mon-narrow-relative+1":"következő hétfő","field-year-short-relative+-1":"előző év","field-zone":"időzóna","field-weekOfMonth-narrow":"hónap hete","field-weekday-narrow":"hét napja","field-quarter-narrow":"n.év","field-sun-short-relative+-1":"előző vasárnap","field-day-relative+-1":"tegnap","field-day-relative+-2":"tegnapelőtt","field-weekday-short":"hét napja","field-sun-relative+0":"ez a vasárnap","field-sun-relative+1":"következő vasárnap","field-day-short":"nap","field-week-narrow":"hét","field-era":"éra","field-fri-narrow-relative+0":"ez a péntek","field-fri-narrow-relative+1":"következő péntek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/buddhist.js b/lib/dojo/cldr/nls/id/buddhist.js
index 6886dc814..c855ac773 100644
--- a/lib/dojo/cldr/nls/id/buddhist.js
+++ b/lib/dojo/cldr/nls/id/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/id/buddhist",{"days-standAlone-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"sekarang","field-weekday":"Hari dalam Seminggu","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"Selasa lalu","days-format-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"Jumat lalu","field-wed-relative+-1":"Rabu lalu","months-format-wide":["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE, dd MMMM y G","dateFormatItem-yyyyMEd":"E, d/M/y G","field-thu-relative+-1":"Kamis lalu","dateFormatItem-Md":"d/M","field-era":"Era","months-standAlone-wide":["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],"timeFormat-short":"HH.mm","quarters-format-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"timeFormat-long":"HH.mm.ss z","field-year":"Tahun","field-hour":"Jam","months-format-abbr":["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"hari ini","field-thu-relative+0":"Kamis ini","field-day-relative+1":"besok","field-thu-relative+1":"Kamis berikutnya","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"lusa","months-standAlone-abbr":["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-M":"L","days-standAlone-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"hari Minggu ini","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"hari Minggu berikutnya","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["BE"],"field-minute":"Menit","field-dayperiod":"AM/PM","days-standAlone-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"kemarin","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"kemarin lusa","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","field-day":"Hari","days-format-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"field-zone":"Zona Waktu","dateFormatItem-y":"G y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"tahun lalu","field-month-relative+-1":"bulan lalu","dateFormatItem-hm":"h.mm a","days-format-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"days-format-narrow":["M","S","S","R","K","J","S"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"Bulan","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["M","S","S","R","K","J","S"],"field-tue-relative+0":"Selasa ini","field-tue-relative+1":"Selasa berikutnya","dateFormatItem-MMMMEd":"E, d MMMM","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","dateFormat-short":"d/M/y GGGGG","field-second":"Detik","field-sat-relative+-1":"Sabtu lalu","field-sun-relative+-1":"hari Minggu lalu","field-month-relative+0":"bulan ini","field-month-relative+1":"Bulan berikutnya","dateFormatItem-Ed":"E, d","field-week":"Minggu","dateFormat-medium":"d MMM y G","field-year-relative+0":"tahun ini","field-week-relative+-1":"minggu lalu","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"tahun depan","dayPeriods-format-narrow-pm":"PM","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"Senin lalu","dateFormatItem-yyyy":"y G","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya"}); \ No newline at end of file
+define("dojo/cldr/nls/id/buddhist",{"field-tue-relative+-1":"Selasa lalu","field-year":"tahun","dateFormatItem-Hm":"HH.mm","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-ms":"mm.ss","timeFormat-short":"HH.mm","field-minute":"menit","field-month-narrow-relative+-1":"bln lalu","field-tue-narrow-relative+0":"Sel. ini","field-tue-narrow-relative+1":"Sel. berikutnya","field-thu-short-relative+0":"Kam. ini","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"Kam. berikutnya","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-week-narrow-relative+0":"mgg ini","field-day-relative+2":"lusa","field-week-narrow-relative+1":"mgg depan","field-wed-narrow-relative+-1":"Rab. lalu","dateFormatItem-EBhms":"E h.mm.ss B","field-year-narrow":"thn.","field-era-short":"era","field-year-narrow-relative+0":"thn ini","field-tue-relative+0":"Selasa ini","field-year-narrow-relative+1":"thn depan","field-tue-relative+1":"Selasa berikutnya","field-weekdayOfMonth":"hari kerja","field-second-short":"dtk.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"hr kerja","field-week-relative+0":"minggu ini","field-month-relative+0":"bulan ini","field-week-relative+1":"minggu depan","field-month-relative+1":"bulan berikutnya","field-sun-narrow-relative+0":"Min. ini","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"Sen. ini","field-sun-narrow-relative+1":"Min. berikutnya","field-mon-short-relative+1":"Sen. berikutnya","field-second-relative+0":"sekarang","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekOfMonth":"minggu","field-month-short":"bln.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"hari","field-dayOfYear-short":"hari dlm setahun","field-year-relative+-1":"tahun lalu","field-sat-short-relative+-1":"Sab. lalu","field-hour-relative+0":"jam ini","dateFormatItem-yyyyMEd":"E, d/M/y G","field-wed-relative+-1":"Rabu lalu","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"Sab. lalu","field-second":"detik","days-standAlone-narrow":["M","S","S","R","K","J","S"],"dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"kuartal","field-week-short":"mgg.","field-day-narrow-relative+2":"lusa","quarters-standAlone-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"days-format-narrow":["M","S","S","R","K","J","S"],"field-tue-short-relative+0":"Sel. ini","field-tue-short-relative+1":"Sel. berikutnya","field-month-short-relative+-1":"bln lalu","field-mon-relative+-1":"Senin lalu","dateFormatItem-GyMMM":"MMM y G","field-month":"bulan","field-day-narrow":"h","field-minute-short":"mnt.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"Sab. ini","field-sat-short-relative+1":"Sab. berikutnya","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-yyyyM":"M/y G","field-second-narrow":"d","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-year-short":"thn.","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"Kuartal lalu","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"mgg lalu","days-format-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"field-dayOfYear":"hari dalam setahun","field-sat-relative+-1":"Sabtu lalu","dateTimeFormat-long":"{1} 'pukul' {0}","dateFormatItem-Md":"d/M","field-hour":"Jam","months-format-wide":["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],"dateFormat-full":"EEEE, dd MMMM y G","field-month-relative+-1":"bulan lalu","dateFormatItem-Hms":"HH.mm.ss","field-quarter-short":"krtl.","field-sat-narrow-relative+0":"Sab. ini","field-fri-relative+0":"Jumat ini","field-sat-narrow-relative+1":"Sab. berikutnya","field-fri-relative+1":"Jumat berikutnya","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"bln ini","field-month-narrow-relative+1":"bln berikutnya","field-sun-short-relative+0":"Min. ini","field-sun-short-relative+1":"Min. berikutnya","field-week-relative+-1":"minggu lalu","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],"field-quarter-relative+0":"kuartal ini","field-minute-relative+0":"menit ini","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"kuartal berikutnya","field-wed-short-relative+-1":"Rab. lalu","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"Kam. lalu","field-year-narrow-relative+-1":"thn lalu","days-standAlone-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"Sen. lalu","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"Kam. lalu","field-tue-narrow-relative+-1":"Sel. lalu","field-weekOfMonth-short":"mgg.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"Rab. ini","months-standAlone-wide":["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],"field-wed-short-relative+1":"Rab. berikutnya","field-sun-relative+-1":"hari Minggu lalu","dateFormatItem-MMMMEd":"E, d MMMM","days-standAlone-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateTimeFormat-full":"{1} 'pukul' {0}","dateFormatItem-hm":"h.mm a","field-weekday":"hari dalam seminggu","field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-day-short-relative+2":"lusa","field-week-short-relative+0":"mgg ini","field-week-short-relative+1":"mgg depan","months-standAlone-abbr":["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],"field-dayOfYear-narrow":"hari dlm 1 thn","field-month-short-relative+0":"bln ini","field-month-short-relative+1":"bln berikutnya","field-weekdayOfMonth-short":"hr kerja","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona wkt","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"Kam. ini","field-thu-narrow-relative+1":"Kam. berikutnya","field-sun-narrow-relative+-1":"Min. lalu","field-mon-short-relative+-1":"Sen. lalu","field-thu-relative+0":"Kamis ini","field-thu-relative+1":"Kamis berikutnya","field-fri-short-relative+-1":"Jum. lalu","dateFormatItem-hms":"h.mm.ss a","field-thu-relative+-1":"Kamis lalu","field-week":"minggu","quarters-format-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"Rab. ini","field-wed-narrow-relative+1":"Rab. berikutnya","field-year-short-relative+0":"thn ini","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"thn depan","field-fri-short-relative+0":"Jum. ini","field-fri-short-relative+1":"Jum. berikutnya","days-standAlone-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"field-week-short-relative+-1":"mgg lalu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"jam","field-zone-short":"zona wkt","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"bln.","field-hour-narrow":"j","field-fri-narrow-relative+-1":"Jum. lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-era-narrow":"era","field-fri-relative+-1":"Jumat lalu","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"Sel. lalu","field-minute-narrow":"m","days-format-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"field-mon-narrow-relative+0":"Sen. ini","field-mon-narrow-relative+1":"Sen. berikutnya","dateFormatItem-EHm":"E HH.mm","field-year-short-relative+-1":"thn lalu","field-zone":"zona waktu","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"mgg.","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"hari dlm seminggu","field-quarter-narrow":"krtl.","field-sun-short-relative+-1":"Min. lalu","field-day-relative+-1":"kemarin","field-day-relative+-2":"kemarin dulu","field-weekday-short":"hari dlm seminggu","days-format-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","dateFormatItem-Gy":"y G","field-day-short":"h","field-week-narrow":"mgg.","field-era":"era","field-fri-narrow-relative+0":"Jum. ini","field-fri-narrow-relative+1":"Jum. berikutnya"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/chinese.js b/lib/dojo/cldr/nls/id/chinese.js
index 437e80160..9095d8dc1 100644
--- a/lib/dojo/cldr/nls/id/chinese.js
+++ b/lib/dojo/cldr/nls/id/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/id/chinese",{"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-dayperiod":"AM/PM","field-sun-relative+-1":"hari Minggu lalu","field-mon-relative+-1":"Senin lalu","field-minute":"Menit","field-day-relative+-1":"kemarin","field-weekday":"Hari dalam Seminggu","field-day-relative+-2":"kemarin lusa","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"Era","field-hour":"Jam","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+-1":"Rabu lalu","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-day-relative+2":"lusa","dateFormat-long":"U MMMM d","field-tue-relative+0":"Selasa ini","field-zone":"Zona Waktu","field-tue-relative+1":"Selasa berikutnya","field-week-relative+-1":"minggu lalu","dateFormat-medium":"U MMM d","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-sat-relative+-1":"Sabtu lalu","field-year-relative+-1":"tahun lalu","field-year":"Tahun","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-week":"Minggu","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-month-relative+0":"bulan ini","field-month":"Bulan","field-month-relative+1":"Bulan berikutnya","field-fri-relative+-1":"Jumat lalu","field-second":"Detik","field-tue-relative+-1":"Selasa lalu","field-day":"Hari","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-thu-relative+0":"Kamis ini","field-second-relative+0":"sekarang","dateFormat-short":"y-M-d","field-thu-relative+1":"Kamis berikutnya","dateFormat-full":"EEEE, U MMMM dd","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","field-month-relative+-1":"bulan lalu","field-thu-relative+-1":"Kamis lalu"}); \ No newline at end of file
+define("dojo/cldr/nls/id/chinese",{"field-tue-relative+-1":"Selasa lalu","field-year":"tahun","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","field-minute":"menit","field-month-narrow-relative+-1":"bln lalu","field-tue-narrow-relative+0":"Sel. ini","field-tue-narrow-relative+1":"Sel. berikutnya","field-thu-short-relative+0":"Kam. ini","field-thu-short-relative+1":"Kam. berikutnya","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-week-narrow-relative+0":"mgg ini","field-day-relative+2":"lusa","field-week-narrow-relative+1":"mgg depan","field-wed-narrow-relative+-1":"Rab. lalu","field-year-narrow":"thn.","field-era-short":"era","field-year-narrow-relative+0":"thn ini","field-tue-relative+0":"Selasa ini","field-year-narrow-relative+1":"thn depan","field-tue-relative+1":"Selasa berikutnya","field-weekdayOfMonth":"hari kerja","field-second-short":"dtk.","field-weekdayOfMonth-narrow":"hr kerja","field-week-relative+0":"minggu ini","field-month-relative+0":"bulan ini","field-week-relative+1":"minggu depan","field-month-relative+1":"bulan berikutnya","field-sun-narrow-relative+0":"Min. ini","field-mon-short-relative+0":"Sen. ini","field-sun-narrow-relative+1":"Min. berikutnya","field-mon-short-relative+1":"Sen. berikutnya","field-second-relative+0":"sekarang","field-weekOfMonth":"minggu","field-month-short":"bln.","field-day":"hari","field-dayOfYear-short":"hari dlm setahun","field-year-relative+-1":"tahun lalu","field-sat-short-relative+-1":"Sab. lalu","field-hour-relative+0":"jam ini","field-wed-relative+-1":"Rabu lalu","field-sat-narrow-relative+-1":"Sab. lalu","field-second":"detik","dateFormat-long":"U MMMM d","field-quarter":"kuartal","field-week-short":"mgg.","field-day-narrow-relative+2":"lusa","field-tue-short-relative+0":"Sel. ini","field-tue-short-relative+1":"Sel. berikutnya","field-month-short-relative+-1":"bln lalu","field-mon-relative+-1":"Senin lalu","field-month":"bulan","field-day-narrow":"h","field-minute-short":"mnt.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"Sab. ini","field-sat-short-relative+1":"Sab. berikutnya","dateFormat-medium":"U MMM d","field-second-narrow":"d","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-year-short":"thn.","field-quarter-relative+-1":"Kuartal lalu","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"mgg lalu","field-dayOfYear":"hari dalam setahun","field-sat-relative+-1":"Sabtu lalu","field-hour":"Jam","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormat-full":"EEEE, U MMMM dd","field-month-relative+-1":"bulan lalu","field-quarter-short":"krtl.","field-sat-narrow-relative+0":"Sab. ini","field-fri-relative+0":"Jumat ini","field-sat-narrow-relative+1":"Sab. berikutnya","field-fri-relative+1":"Jumat berikutnya","field-month-narrow-relative+0":"bln ini","field-month-narrow-relative+1":"bln berikutnya","field-sun-short-relative+0":"Min. ini","field-sun-short-relative+1":"Min. berikutnya","field-week-relative+-1":"minggu lalu","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+0":"kuartal ini","field-minute-relative+0":"menit ini","field-quarter-relative+1":"kuartal berikutnya","field-wed-short-relative+-1":"Rab. lalu","dateFormat-short":"y-M-d","field-thu-short-relative+-1":"Kam. lalu","field-year-narrow-relative+-1":"thn lalu","field-mon-narrow-relative+-1":"Sen. lalu","field-thu-narrow-relative+-1":"Kam. lalu","field-tue-narrow-relative+-1":"Sel. lalu","field-weekOfMonth-short":"mgg.","field-wed-short-relative+0":"Rab. ini","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-short-relative+1":"Rab. berikutnya","field-sun-relative+-1":"hari Minggu lalu","field-weekday":"hari dalam seminggu","field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-day-short-relative+2":"lusa","field-week-short-relative+0":"mgg ini","field-week-short-relative+1":"mgg depan","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayOfYear-narrow":"hari dlm 1 thn","field-month-short-relative+0":"bln ini","field-month-short-relative+1":"bln berikutnya","field-weekdayOfMonth-short":"hr kerja","field-zone-narrow":"zona wkt","field-thu-narrow-relative+0":"Kam. ini","field-thu-narrow-relative+1":"Kam. berikutnya","field-sun-narrow-relative+-1":"Min. lalu","field-mon-short-relative+-1":"Sen. lalu","field-thu-relative+0":"Kamis ini","field-thu-relative+1":"Kamis berikutnya","field-fri-short-relative+-1":"Jum. lalu","field-thu-relative+-1":"Kamis lalu","field-week":"minggu","field-wed-narrow-relative+0":"Rab. ini","field-wed-narrow-relative+1":"Rab. berikutnya","field-year-short-relative+0":"thn ini","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"thn depan","field-fri-short-relative+0":"Jum. ini","field-fri-short-relative+1":"Jum. berikutnya","field-week-short-relative+-1":"mgg lalu","field-hour-short":"jam","field-zone-short":"zona wkt","field-month-narrow":"bln.","field-hour-narrow":"j","field-fri-narrow-relative+-1":"Jum. lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-era-narrow":"era","field-fri-relative+-1":"Jumat lalu","field-tue-short-relative+-1":"Sel. lalu","field-minute-narrow":"m","field-mon-narrow-relative+0":"Sen. ini","field-mon-narrow-relative+1":"Sen. berikutnya","field-year-short-relative+-1":"thn lalu","field-zone":"zona waktu","field-weekOfMonth-narrow":"mgg.","field-weekday-narrow":"hari dlm seminggu","field-quarter-narrow":"krtl.","field-sun-short-relative+-1":"Min. lalu","field-day-relative+-1":"kemarin","field-day-relative+-2":"kemarin dulu","field-weekday-short":"hari dlm seminggu","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","field-day-short":"h","field-week-narrow":"mgg.","field-era":"era","field-fri-narrow-relative+0":"Jum. ini","field-fri-narrow-relative+1":"Jum. berikutnya"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/coptic.js b/lib/dojo/cldr/nls/id/coptic.js
deleted file mode 100644
index 1dfa649b4..000000000
--- a/lib/dojo/cldr/nls/id/coptic.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/id/coptic",{"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-dayperiod":"AM/PM","field-sun-relative+-1":"hari Minggu lalu","field-mon-relative+-1":"Senin lalu","field-minute":"Menit","field-day-relative+-1":"kemarin","field-weekday":"Hari dalam Seminggu","field-day-relative+-2":"kemarin lusa","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"Era","field-hour":"Jam","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","months-standAlone-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-wed-relative+-1":"Rabu lalu","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-day-relative+2":"lusa","field-tue-relative+0":"Selasa ini","field-zone":"Zona Waktu","field-tue-relative+1":"Selasa berikutnya","field-week-relative+-1":"minggu lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-sat-relative+-1":"Sabtu lalu","field-year-relative+-1":"tahun lalu","field-year":"Tahun","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","months-standAlone-wide":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-week":"Minggu","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya","months-format-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-month-relative+0":"bulan ini","field-month":"Bulan","field-month-relative+1":"Bulan berikutnya","field-fri-relative+-1":"Jumat lalu","field-second":"Detik","field-tue-relative+-1":"Selasa lalu","field-day":"Hari","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-thu-relative+0":"Kamis ini","field-second-relative+0":"sekarang","field-thu-relative+1":"Kamis berikutnya","months-format-wide":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","field-month-relative+-1":"bulan lalu","field-thu-relative+-1":"Kamis lalu"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/currency.js b/lib/dojo/cldr/nls/id/currency.js
index 223840fc6..12f100d07 100644
--- a/lib/dojo/cldr/nls/id/currency.js
+++ b/lib/dojo/cldr/nls/id/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/id/currency",{"HKD_displayName":"Dolar Hong Kong","CHF_displayName":"Franc Swiss","JPY_symbol":"JP¥","CAD_displayName":"Dolar Kanada","HKD_symbol":"HK$","CNY_displayName":"Yuan China","USD_symbol":"US$","AUD_displayName":"Dolar Australia","JPY_displayName":"Yen Jepang","CAD_symbol":"CA$","USD_displayName":"Dolar Amerika Serikat","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"Pound Inggris","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file
+define("dojo/cldr/nls/id/currency",{"HKD_displayName":"Dolar Hong Kong","CNY_displayName":"Yuan Tiongkok","JPY_displayName":"Yen Jepang","JPY_symbol":"JP¥","USD_displayName":"Dolar Amerika Serikat","CAD_symbol":"CA$","GBP_displayName":"Pound Inggris","CHF_displayName":"Franc Swiss","CNY_symbol":"CN¥","EUR_displayName":"Euro","GBP_symbol":"£","CAD_displayName":"Dolar Kanada","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"Dolar Australia","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/dangi.js b/lib/dojo/cldr/nls/id/dangi.js
new file mode 100644
index 000000000..8e854929b
--- /dev/null
+++ b/lib/dojo/cldr/nls/id/dangi.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/id/dangi",{"field-tue-relative+-1":"Selasa lalu","field-year":"tahun","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","field-minute":"menit","field-month-narrow-relative+-1":"bln lalu","field-tue-narrow-relative+0":"Sel. ini","field-tue-narrow-relative+1":"Sel. berikutnya","field-thu-short-relative+0":"Kam. ini","field-thu-short-relative+1":"Kam. berikutnya","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-week-narrow-relative+0":"mgg ini","field-day-relative+2":"lusa","field-week-narrow-relative+1":"mgg depan","field-wed-narrow-relative+-1":"Rab. lalu","field-year-narrow":"thn.","field-era-short":"era","field-year-narrow-relative+0":"thn ini","field-tue-relative+0":"Selasa ini","field-year-narrow-relative+1":"thn depan","field-tue-relative+1":"Selasa berikutnya","field-weekdayOfMonth":"hari kerja","field-second-short":"dtk.","field-weekdayOfMonth-narrow":"hr kerja","field-week-relative+0":"minggu ini","field-month-relative+0":"bulan ini","field-week-relative+1":"minggu depan","field-month-relative+1":"bulan berikutnya","field-sun-narrow-relative+0":"Min. ini","field-mon-short-relative+0":"Sen. ini","field-sun-narrow-relative+1":"Min. berikutnya","field-mon-short-relative+1":"Sen. berikutnya","field-second-relative+0":"sekarang","field-weekOfMonth":"minggu","field-month-short":"bln.","field-day":"hari","field-dayOfYear-short":"hari dlm setahun","field-year-relative+-1":"tahun lalu","field-sat-short-relative+-1":"Sab. lalu","field-hour-relative+0":"jam ini","field-wed-relative+-1":"Rabu lalu","field-sat-narrow-relative+-1":"Sab. lalu","field-second":"detik","field-quarter":"kuartal","field-week-short":"mgg.","field-day-narrow-relative+2":"lusa","field-tue-short-relative+0":"Sel. ini","field-tue-short-relative+1":"Sel. berikutnya","field-month-short-relative+-1":"bln lalu","field-mon-relative+-1":"Senin lalu","field-month":"bulan","field-day-narrow":"h","field-minute-short":"mnt.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"Sab. ini","field-sat-short-relative+1":"Sab. berikutnya","field-second-narrow":"d","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-year-short":"thn.","field-quarter-relative+-1":"Kuartal lalu","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"mgg lalu","field-dayOfYear":"hari dalam setahun","field-sat-relative+-1":"Sabtu lalu","field-hour":"Jam","field-month-relative+-1":"bulan lalu","field-quarter-short":"krtl.","field-sat-narrow-relative+0":"Sab. ini","field-fri-relative+0":"Jumat ini","field-sat-narrow-relative+1":"Sab. berikutnya","field-fri-relative+1":"Jumat berikutnya","field-month-narrow-relative+0":"bln ini","field-month-narrow-relative+1":"bln berikutnya","field-sun-short-relative+0":"Min. ini","field-sun-short-relative+1":"Min. berikutnya","field-week-relative+-1":"minggu lalu","field-quarter-relative+0":"kuartal ini","field-minute-relative+0":"menit ini","field-quarter-relative+1":"kuartal berikutnya","field-wed-short-relative+-1":"Rab. lalu","field-thu-short-relative+-1":"Kam. lalu","field-year-narrow-relative+-1":"thn lalu","field-mon-narrow-relative+-1":"Sen. lalu","field-thu-narrow-relative+-1":"Kam. lalu","field-tue-narrow-relative+-1":"Sel. lalu","field-weekOfMonth-short":"mgg.","field-wed-short-relative+0":"Rab. ini","field-wed-short-relative+1":"Rab. berikutnya","field-sun-relative+-1":"hari Minggu lalu","field-weekday":"hari dalam seminggu","field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-day-short-relative+2":"lusa","field-week-short-relative+0":"mgg ini","field-week-short-relative+1":"mgg depan","field-dayOfYear-narrow":"hari dlm 1 thn","field-month-short-relative+0":"bln ini","field-month-short-relative+1":"bln berikutnya","field-weekdayOfMonth-short":"hr kerja","field-zone-narrow":"zona wkt","field-thu-narrow-relative+0":"Kam. ini","field-thu-narrow-relative+1":"Kam. berikutnya","field-sun-narrow-relative+-1":"Min. lalu","field-mon-short-relative+-1":"Sen. lalu","field-thu-relative+0":"Kamis ini","field-thu-relative+1":"Kamis berikutnya","field-fri-short-relative+-1":"Jum. lalu","field-thu-relative+-1":"Kamis lalu","field-week":"minggu","field-wed-narrow-relative+0":"Rab. ini","field-wed-narrow-relative+1":"Rab. berikutnya","field-year-short-relative+0":"thn ini","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"thn depan","field-fri-short-relative+0":"Jum. ini","field-fri-short-relative+1":"Jum. berikutnya","field-week-short-relative+-1":"mgg lalu","field-hour-short":"jam","field-zone-short":"zona wkt","field-month-narrow":"bln.","field-hour-narrow":"j","field-fri-narrow-relative+-1":"Jum. lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-era-narrow":"era","field-fri-relative+-1":"Jumat lalu","field-tue-short-relative+-1":"Sel. lalu","field-minute-narrow":"m","field-mon-narrow-relative+0":"Sen. ini","field-mon-narrow-relative+1":"Sen. berikutnya","field-year-short-relative+-1":"thn lalu","field-zone":"zona waktu","field-weekOfMonth-narrow":"mgg.","field-weekday-narrow":"hari dlm seminggu","field-quarter-narrow":"krtl.","field-sun-short-relative+-1":"Min. lalu","field-day-relative+-1":"kemarin","field-day-relative+-2":"kemarin dulu","field-weekday-short":"hari dlm seminggu","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","field-day-short":"h","field-week-narrow":"mgg.","field-era":"era","field-fri-narrow-relative+0":"Jum. ini","field-fri-narrow-relative+1":"Jum. berikutnya"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/ethiopic.js b/lib/dojo/cldr/nls/id/ethiopic.js
deleted file mode 100644
index 088a8a021..000000000
--- a/lib/dojo/cldr/nls/id/ethiopic.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/id/ethiopic",{"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-dayperiod":"AM/PM","field-sun-relative+-1":"hari Minggu lalu","field-mon-relative+-1":"Senin lalu","field-minute":"Menit","field-day-relative+-1":"kemarin","field-weekday":"Hari dalam Seminggu","field-day-relative+-2":"kemarin lusa","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"Era","field-hour":"Jam","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-wed-relative+-1":"Rabu lalu","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-day-relative+2":"lusa","field-tue-relative+0":"Selasa ini","field-zone":"Zona Waktu","field-tue-relative+1":"Selasa berikutnya","field-week-relative+-1":"minggu lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-sat-relative+-1":"Sabtu lalu","field-year-relative+-1":"tahun lalu","field-year":"Tahun","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-week":"Minggu","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-month-relative+0":"bulan ini","field-month":"Bulan","field-month-relative+1":"Bulan berikutnya","field-fri-relative+-1":"Jumat lalu","field-second":"Detik","field-tue-relative+-1":"Selasa lalu","field-day":"Hari","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-thu-relative+0":"Kamis ini","field-second-relative+0":"sekarang","field-thu-relative+1":"Kamis berikutnya","months-format-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","field-month-relative+-1":"bulan lalu","field-thu-relative+-1":"Kamis lalu"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/generic.js b/lib/dojo/cldr/nls/id/generic.js
index 1e47bd181..854454dbb 100644
--- a/lib/dojo/cldr/nls/id/generic.js
+++ b/lib/dojo/cldr/nls/id/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/id/generic",{"field-second-relative+0":"sekarang","field-weekday":"Hari dalam Seminggu","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"Selasa lalu","dateFormat-long":"d MMMM y G","field-fri-relative+-1":"Jumat lalu","field-wed-relative+-1":"Rabu lalu","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE, dd MMMM y G","dateFormatItem-yyyyMEd":"E, d/M/y G","field-thu-relative+-1":"Kamis lalu","dateFormatItem-Md":"d/M","field-era":"Era","field-year":"Tahun","field-hour":"Jam","field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-thu-relative+0":"Kamis ini","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"lusa","field-thu-relative+1":"Kamis berikutnya","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"hari Minggu ini","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"hari Minggu berikutnya","field-minute":"Menit","field-dayperiod":"AM/PM","dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"kemarin","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"kemarin lusa","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","field-day":"Hari","field-zone":"Zona Waktu","dateFormatItem-y":"y G","field-year-relative+-1":"tahun lalu","field-month-relative+-1":"bulan lalu","dateFormatItem-hm":"h.mm a","dateFormatItem-yyyyMd":"d/M/y G","field-month":"Bulan","dateFormatItem-MMM":"LLL","field-tue-relative+0":"Selasa ini","field-tue-relative+1":"Selasa berikutnya","dateFormatItem-MMMMEd":"E, d MMMM","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Detik","field-sat-relative+-1":"Sabtu lalu","field-sun-relative+-1":"hari Minggu lalu","field-month-relative+0":"bulan ini","field-month-relative+1":"Bulan berikutnya","dateFormatItem-Ed":"E, d","field-week":"Minggu","dateFormat-medium":"d MMM y G","field-year-relative+0":"tahun ini","field-week-relative+-1":"minggu lalu","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"tahun depan","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"Senin lalu","dateFormatItem-yyyy":"y G","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya"}); \ No newline at end of file
+define("dojo/cldr/nls/id/generic",{"field-tue-relative+-1":"Selasa lalu","field-year":"tahun","dateFormatItem-Hm":"HH.mm","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-ms":"mm.ss","field-minute":"menit","field-month-narrow-relative+-1":"bln lalu","field-tue-narrow-relative+0":"Sel. ini","field-tue-narrow-relative+1":"Sel. berikutnya","field-thu-short-relative+0":"Kam. ini","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"hari ini","field-thu-short-relative+1":"Kam. berikutnya","field-day-relative+1":"besok","field-week-narrow-relative+0":"mgg ini","field-day-relative+2":"lusa","field-week-narrow-relative+1":"mgg depan","dateFormatItem-EBhms":"E h.mm.ss B","field-wed-narrow-relative+-1":"Rab. lalu","field-year-narrow":"thn.","field-era-short":"era","field-year-narrow-relative+0":"thn ini","field-tue-relative+0":"Selasa ini","field-year-narrow-relative+1":"thn depan","field-tue-relative+1":"Selasa berikutnya","field-weekdayOfMonth":"hari kerja","field-second-short":"dtk.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"hr kerja","field-week-relative+0":"minggu ini","field-month-relative+0":"bulan ini","field-week-relative+1":"minggu depan","field-month-relative+1":"bulan berikutnya","field-sun-narrow-relative+0":"Min. ini","field-mon-short-relative+0":"Sen. ini","field-sun-narrow-relative+1":"Min. berikutnya","field-mon-short-relative+1":"Sen. berikutnya","field-second-relative+0":"sekarang","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"minggu","field-month-short":"bln.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"hari","field-dayOfYear-short":"hari dlm setahun","field-year-relative+-1":"tahun lalu","field-sat-short-relative+-1":"Sab. lalu","field-hour-relative+0":"jam ini","dateFormatItem-yyyyMEd":"E, d/M/y G","field-wed-relative+-1":"Rabu lalu","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"Sab. lalu","field-second":"detik","dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"kuartal","field-week-short":"mgg.","field-day-narrow-relative+2":"lusa","field-tue-short-relative+0":"Sel. ini","field-tue-short-relative+1":"Sel. berikutnya","field-month-short-relative+-1":"bln lalu","field-mon-relative+-1":"Senin lalu","dateFormatItem-GyMMM":"MMM y G","field-month":"bulan","field-day-narrow":"h","dateFormatItem-MMM":"LLL","field-minute-short":"mnt.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"Sab. ini","field-sat-short-relative+1":"Sab. berikutnya","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"d","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-year-short":"thn.","field-quarter-relative+-1":"Kuartal lalu","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"mgg lalu","field-dayOfYear":"hari dalam setahun","field-sat-relative+-1":"Sabtu lalu","dateTimeFormat-long":"{1} 'pukul' {0}","dateFormatItem-Md":"d/M","field-hour":"Jam","dateFormat-full":"EEEE, dd MMMM y G","field-month-relative+-1":"bulan lalu","dateFormatItem-Hms":"HH.mm.ss","field-quarter-short":"krtl.","field-sat-narrow-relative+0":"Sab. ini","field-fri-relative+0":"Jumat ini","field-sat-narrow-relative+1":"Sab. berikutnya","field-fri-relative+1":"Jumat berikutnya","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"bln ini","field-month-narrow-relative+1":"bln berikutnya","field-sun-short-relative+0":"Min. ini","field-sun-short-relative+1":"Min. berikutnya","field-week-relative+-1":"minggu lalu","dateFormatItem-Ehm":"E h.mm a","field-quarter-relative+0":"kuartal ini","field-minute-relative+0":"menit ini","field-quarter-relative+1":"kuartal berikutnya","field-wed-short-relative+-1":"Rab. lalu","dateFormat-short":"dd/MM/yy GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"thn lalu","field-thu-short-relative+-1":"Kam. lalu","dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"Sen. lalu","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"Kam. lalu","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"Sel. lalu","dateFormatItem-H":"HH","field-weekOfMonth-short":"mgg.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"Rab. ini","field-wed-short-relative+1":"Rab. berikutnya","field-sun-relative+-1":"hari Minggu lalu","dateFormatItem-MMMMEd":"E, d MMMM","dateTimeFormat-full":"{1} 'pukul' {0}","dateFormatItem-hm":"h.mm a","dateFormatItem-d":"d","field-weekday":"hari dalam seminggu","field-sat-relative+0":"Sabtu ini","dateFormatItem-h":"h a","field-day-short-relative+2":"lusa","field-sat-relative+1":"Sabtu berikutnya","field-week-short-relative+0":"mgg ini","field-week-short-relative+1":"mgg depan","field-dayOfYear-narrow":"hari dlm 1 thn","field-month-short-relative+0":"bln ini","field-month-short-relative+1":"bln berikutnya","field-weekdayOfMonth-short":"hr kerja","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona wkt","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"Kam. ini","field-sun-narrow-relative+-1":"Min. lalu","field-mon-short-relative+-1":"Sen. lalu","field-thu-narrow-relative+1":"Kam. berikutnya","field-thu-relative+0":"Kamis ini","field-thu-relative+1":"Kamis berikutnya","dateFormatItem-hms":"h.mm.ss a","field-fri-short-relative+-1":"Jum. lalu","field-thu-relative+-1":"Kamis lalu","field-week":"minggu","dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"Rab. ini","field-wed-narrow-relative+1":"Rab. berikutnya","field-year-short-relative+0":"thn ini","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"thn depan","field-fri-short-relative+0":"Jum. ini","field-fri-short-relative+1":"Jum. berikutnya","field-week-short-relative+-1":"mgg lalu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"jam","field-zone-short":"zona wkt","field-month-narrow":"bln.","field-hour-narrow":"j","field-fri-narrow-relative+-1":"Jum. lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-era-narrow":"era","field-fri-relative+-1":"Jumat lalu","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"Sel. lalu","field-minute-narrow":"m","field-mon-narrow-relative+0":"Sen. ini","dateFormatItem-EHm":"E HH.mm","field-mon-narrow-relative+1":"Sen. berikutnya","field-year-short-relative+-1":"thn lalu","field-zone":"zona waktu","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"mgg.","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"hari dlm seminggu","field-quarter-narrow":"krtl.","field-sun-short-relative+-1":"Min. lalu","field-day-relative+-1":"kemarin","field-day-relative+-2":"kemarin dulu","field-weekday-short":"hari dlm seminggu","dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","dateFormatItem-Gy":"y G","field-day-short":"h","field-week-narrow":"mgg.","field-era":"era","field-fri-narrow-relative+0":"Jum. ini","field-fri-narrow-relative+1":"Jum. berikutnya"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/gregorian.js b/lib/dojo/cldr/nls/id/gregorian.js
index 64361bcc9..11f87991c 100644
--- a/lib/dojo/cldr/nls/id/gregorian.js
+++ b/lib/dojo/cldr/nls/id/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/id/gregorian",{"dateFormatItem-Ehm":"E h.mm a","days-standAlone-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"sekarang","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Hari dalam Seminggu","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d/M/y","field-wed-relative+0":"Rabu ini","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-wed-relative+1":"Rabu berikutnya","eraNarrow":["SM","M"],"field-tue-relative+-1":"Selasa lalu","days-format-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"Jumat lalu","field-wed-relative+-1":"Rabu lalu","months-format-wide":["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, dd MMMM y","field-thu-relative+-1":"Kamis lalu","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/y","dateFormatItem-yM":"M/y","field-era":"Era","months-standAlone-wide":["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],"timeFormat-short":"HH.mm","quarters-format-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"timeFormat-long":"HH.mm.ss z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQQQQ":"QQQQ y","field-year":"Tahun","field-hour":"Jam","months-format-abbr":["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-thu-relative+0":"Kamis ini","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"lusa","field-thu-relative+1":"Kamis berikutnya","dateFormatItem-H":"HH","months-standAlone-abbr":["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"hari Minggu ini","dateFormatItem-Hm":"HH.mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"field-sun-relative+1":"hari Minggu berikutnya","eraAbbr":["SM","M"],"field-minute":"Menit","field-dayperiod":"AM/PM","days-standAlone-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"kemarin","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"kemarin lusa","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","field-day":"Hari","days-format-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"field-zone":"Zona Waktu","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"tahun lalu","field-month-relative+-1":"bulan lalu","dateFormatItem-hm":"h.mm a","days-format-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormatItem-yMMMd":"d MMM y","eraNames":["Sebelum Masehi","M"],"days-format-narrow":["M","S","S","R","K","J","S"],"days-standAlone-narrow":["M","S","S","R","K","J","S"],"dateFormatItem-MMM":"LLL","field-month":"Bulan","field-tue-relative+0":"Selasa ini","field-tue-relative+1":"Selasa berikutnya","dayPeriods-format-wide-am":"AM","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-EHm":"E HH.mm","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","dateFormat-short":"dd/MM/yy","dateFormatItem-EHms":"E HH.mm.ss","dateFormatItem-Ehms":"E h.mm.ss a","field-second":"Detik","field-sat-relative+-1":"Sabtu lalu","dateFormatItem-yMMMEd":"E, d MMM y","field-sun-relative+-1":"hari Minggu lalu","field-month-relative+0":"bulan ini","field-month-relative+1":"Bulan berikutnya","dateFormatItem-Ed":"E, d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Minggu","dateFormat-medium":"d MMM y","field-year-relative+0":"tahun ini","field-week-relative+-1":"minggu lalu","field-year-relative+1":"tahun depan","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"Senin lalu","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya"}); \ No newline at end of file
+define("dojo/cldr/nls/id/gregorian",{"dayPeriods-standAlone-abbr-noon":"tengah hari","field-tue-relative+-1":"Selasa lalu","field-year":"tahun","dateFormatItem-yw":"'minggu' 'ke'-w Y","dayPeriods-format-abbr-afternoon1":"siang","dateFormatItem-Hm":"HH.mm","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-ms":"mm.ss","timeFormat-short":"HH.mm","field-minute":"menit","field-month-narrow-relative+-1":"bln lalu","field-tue-narrow-relative+0":"Sel. ini","field-tue-narrow-relative+1":"Sel. berikutnya","field-thu-short-relative+0":"Kam. ini","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"hari ini","field-thu-short-relative+1":"Kam. berikutnya","field-day-relative+1":"besok","field-week-narrow-relative+0":"mgg ini","field-day-relative+2":"lusa","field-week-narrow-relative+1":"mgg depan","dateFormatItem-EBhms":"E h.mm.ss B","field-wed-narrow-relative+-1":"Rab. lalu","field-year-narrow":"thn.","field-era-short":"era","field-year-narrow-relative+0":"thn ini","field-tue-relative+0":"Selasa ini","field-year-narrow-relative+1":"thn depan","field-tue-relative+1":"Selasa berikutnya","dayPeriods-format-narrow-am":"AM","field-weekdayOfMonth":"hari kerja","field-second-short":"dtk.","dayPeriods-standAlone-abbr-morning1":"pagi","dateFormatItem-MMMd":"d MMM","dayPeriods-format-narrow-morning1":"pagi","field-weekdayOfMonth-narrow":"hr kerja","dayPeriods-format-abbr-am":"AM","field-month-relative+0":"bulan ini","field-week-relative+0":"minggu ini","timeFormat-medium":"HH.mm.ss","field-month-relative+1":"bulan berikutnya","field-week-relative+1":"minggu depan","field-sun-narrow-relative+0":"Min. ini","field-mon-short-relative+0":"Sen. ini","field-sun-narrow-relative+1":"Min. berikutnya","field-mon-short-relative+1":"Sen. berikutnya","field-second-relative+0":"sekarang","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dayPeriods-standAlone-wide-noon":"tengah hari","eraNames":["Sebelum Masehi","Masehi"],"dayPeriods-standAlone-abbr-pm":"PM","field-weekOfMonth":"minggu","dateFormatItem-GyMMMEd":"E, d MMM y G","field-month-short":"bln.","field-day":"hari","dayPeriods-standAlone-wide-night1":"malam","field-year-relative+-1":"tahun lalu","field-dayOfYear-short":"hari dlm setahun","dayPeriods-format-wide-am":"AM","field-sat-short-relative+-1":"Sab. lalu","dayPeriods-format-narrow-afternoon1":"siang","dayPeriods-format-wide-afternoon1":"siang","field-hour-relative+0":"jam ini","field-wed-relative+-1":"Rabu lalu","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["M","S","S","R","K","J","S"],"dayPeriods-standAlone-narrow-noon":"tengah hari","field-sat-narrow-relative+-1":"Sab. lalu","field-second":"detik","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d MMMM y","dateFormatItem-GyMMMd":"d MMM y G","dayPeriods-standAlone-abbr-midnight":"tengah malam","field-quarter":"kuartal","field-week-short":"mgg.","dayPeriods-format-narrow-midnight":"tengah malam","dateFormatItem-yMMMEd":"E, d MMM y","field-day-narrow-relative+2":"lusa","quarters-standAlone-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"days-format-narrow":["M","S","S","R","K","J","S"],"dayPeriods-format-wide-evening1":"sore","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"Sel. ini","field-tue-short-relative+1":"Sel. berikutnya","field-month-short-relative+-1":"bln lalu","field-mon-relative+-1":"Senin lalu","dateFormatItem-GyMMM":"MMM y G","field-month":"bulan","dayPeriods-standAlone-abbr-night1":"malam","field-day-narrow":"h","dayPeriods-standAlone-narrow-afternoon1":"siang","dateFormatItem-MMM":"LLL","field-minute-short":"mnt.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"Sab. ini","field-sat-short-relative+1":"Sab. berikutnya","dayPeriods-format-narrow-pm":"PM","dateFormat-medium":"d MMM y","eraAbbr":["SM","M"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"PM","field-second-narrow":"d","dayPeriods-standAlone-narrow-night1":"malam","field-mon-relative+0":"Senin ini","field-year-short":"thn.","field-mon-relative+1":"Senin berikutnya","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dayPeriods-format-wide-morning1":"pagi","field-quarter-relative+-1":"Kuartal lalu","dayPeriods-standAlone-narrow-am":"AM","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"mgg lalu","days-format-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-dayOfYear":"hari dalam setahun","field-sat-relative+-1":"Sabtu lalu","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d/M","field-hour":"Jam","dateFormatItem-yQQQQ":"QQQQ y","months-format-wide":["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],"dayPeriods-format-wide-night1":"malam","dateFormat-full":"EEEE, dd MMMM y","field-month-relative+-1":"bulan lalu","dateFormatItem-Hms":"HH.mm.ss","field-quarter-short":"krtl.","field-sat-narrow-relative+0":"Sab. ini","dateFormatItem-Hmv":"HH.mm v","field-fri-relative+0":"Jumat ini","field-sat-narrow-relative+1":"Sab. berikutnya","field-fri-relative+1":"Jumat berikutnya","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"bln ini","field-month-narrow-relative+1":"bln berikutnya","dayPeriods-format-narrow-noon":"tengah hari","field-sun-short-relative+0":"Min. ini","field-sun-short-relative+1":"Min. berikutnya","field-week-relative+-1":"minggu lalu","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],"dayPeriods-format-wide-midnight":"tengah malam","timeFormat-long":"HH.mm.ss z","field-quarter-relative+0":"kuartal ini","field-minute-relative+0":"menit ini","field-quarter-relative+1":"kuartal berikutnya","field-wed-short-relative+-1":"Rab. lalu","dateFormatItem-yMMM":"MMM y","dateFormat-short":"dd/MM/yy","dateFormatItem-Bh":"h B","dayPeriods-format-abbr-night1":"malam","dateFormatItem-MMMMW":"'minggu' 'ke'-W MMMM","field-year-narrow-relative+-1":"thn lalu","field-thu-short-relative+-1":"Kam. lalu","days-standAlone-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"field-mon-narrow-relative+-1":"Sen. lalu","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"Kam. lalu","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"mgg.","field-tue-narrow-relative+-1":"Sel. lalu","dayPeriods-format-abbr-evening1":"sore","dayPeriods-standAlone-narrow-pm":"PM","dateFormatItem-M":"L","months-standAlone-wide":["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],"field-wed-short-relative+0":"Rab. ini","field-wed-short-relative+1":"Rab. berikutnya","dateFormatItem-Hmsv":"HH.mm.ss v","field-sun-relative+-1":"hari Minggu lalu","dateFormatItem-MMMMEd":"E, d MMMM","days-standAlone-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h.mm a","dateFormatItem-d":"d","field-weekday":"hari dalam seminggu","dayPeriods-standAlone-wide-evening1":"sore","field-sat-relative+0":"Sabtu ini","dateFormatItem-h":"h a","field-day-short-relative+2":"lusa","field-sat-relative+1":"Sabtu berikutnya","field-week-short-relative+0":"mgg ini","months-standAlone-abbr":["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],"dateFormatItem-hmsv":"h.mm.ss. a v","field-week-short-relative+1":"mgg depan","dayPeriods-format-abbr-morning1":"pagi","dayPeriods-standAlone-narrow-evening1":"sore","field-dayOfYear-narrow":"hari dlm 1 thn","field-month-short-relative+0":"bln ini","timeFormat-full":"HH.mm.ss zzzz","field-month-short-relative+1":"bln berikutnya","field-weekdayOfMonth-short":"hr kerja","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona wkt","dateFormatItem-y":"y","field-thu-narrow-relative+0":"Kam. ini","field-sun-narrow-relative+-1":"Min. lalu","field-mon-short-relative+-1":"Sen. lalu","field-thu-narrow-relative+1":"Kam. berikutnya","field-thu-relative+0":"Kamis ini","dayPeriods-standAlone-abbr-afternoon1":"siang","field-thu-relative+1":"Kamis berikutnya","dateFormatItem-hms":"h.mm.ss a","field-fri-short-relative+-1":"Jum. lalu","dateFormatItem-hmv":"h.mm a v","dayPeriods-format-abbr-noon":"tengah hari","field-thu-relative+-1":"Kamis lalu","dateFormatItem-yMd":"d/M/y","quarters-standAlone-narrow":["1","2","3","4"],"field-week":"minggu","quarters-format-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"Rab. ini","field-wed-narrow-relative+1":"Rab. berikutnya","dayPeriods-standAlone-wide-morning1":"pagi","field-year-short-relative+0":"thn ini","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"thn depan","field-fri-short-relative+0":"Jum. ini","field-fri-short-relative+1":"Jum. berikutnya","days-standAlone-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"field-week-short-relative+-1":"mgg lalu","dayPeriods-standAlone-narrow-morning1":"pagi","dayPeriods-format-abbr-midnight":"tengah malam","field-hour-short":"jam","field-zone-short":"zona wkt","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"bln.","field-hour-narrow":"j","field-fri-narrow-relative+-1":"Jum. lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-era-narrow":"era","field-fri-relative+-1":"Jumat lalu","eraNarrow":["SM","M"],"dateFormatItem-Bhms":"h.mm.ss B","dayPeriods-format-wide-noon":"tengah hari","field-tue-short-relative+-1":"Sel. lalu","field-minute-narrow":"m","dayPeriods-standAlone-wide-afternoon1":"siang","dateFormatItem-yQQQ":"QQQ y","days-format-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"field-mon-narrow-relative+0":"Sen. ini","dateFormatItem-EHm":"E HH.mm","field-mon-narrow-relative+1":"Sen. berikutnya","dayPeriods-standAlone-wide-midnight":"tengah malam","field-year-short-relative+-1":"thn lalu","dateFormatItem-yM":"M/y","field-zone":"zona waktu","dateFormatItem-yMMMM":"MMMM y","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"mgg.","dateFormatItem-EHms":"E HH.mm.ss","dateFormatItem-yMEd":"E, d/M/y","field-weekday-narrow":"hari dlm seminggu","dayPeriods-standAlone-narrow-midnight":"tengah malam","field-quarter-narrow":"krtl.","dayPeriods-standAlone-abbr-am":"AM","field-day-relative+-1":"kemarin","field-sun-short-relative+-1":"Min. lalu","field-day-relative+-2":"kemarin dulu","dayPeriods-format-narrow-night1":"malam","field-weekday-short":"hari dlm seminggu","dateFormatItem-Bhm":"h.mm B","days-format-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","dateFormatItem-yMMMd":"d MMM y","dateFormatItem-Gy":"y G","field-era":"era","field-week-narrow":"mgg.","field-day-short":"h","dayPeriods-standAlone-abbr-evening1":"sore","field-fri-narrow-relative+0":"Jum. ini","dayPeriods-format-narrow-evening1":"sore","field-fri-narrow-relative+1":"Jum. berikutnya","dayPeriods-standAlone-wide-am":"AM"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/hebrew.js b/lib/dojo/cldr/nls/id/hebrew.js
deleted file mode 100644
index 18a736399..000000000
--- a/lib/dojo/cldr/nls/id/hebrew.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/id/hebrew",{"days-standAlone-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"field-second-relative+0":"sekarang","field-weekday":"Hari dalam Seminggu","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"Selasa lalu","days-format-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"Jumat lalu","field-wed-relative+-1":"Rabu lalu","months-format-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE, dd MMMM y G","dateFormatItem-yyyyMEd":"E, d/M/y G","field-thu-relative+-1":"Kamis lalu","dateFormatItem-Md":"d/M","field-era":"Era","months-standAlone-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"timeFormat-short":"HH.mm","quarters-format-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"timeFormat-long":"HH.mm.ss z","field-year":"Tahun","field-hour":"Jam","months-format-abbr-leap":"Adar II","months-format-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"hari ini","field-thu-relative+0":"Kamis ini","field-day-relative+1":"besok","field-thu-relative+1":"Kamis berikutnya","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"lusa","months-standAlone-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","months-standAlone-wide-leap":"Adar II","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"hari Minggu ini","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"hari Minggu berikutnya","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["AM"],"field-minute":"Menit","field-dayperiod":"AM/PM","days-standAlone-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormatItem-ms":"mm.ss","field-day-relative+-1":"kemarin","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"kemarin lusa","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","field-day":"Hari","days-format-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"field-zone":"Zona Waktu","months-standAlone-abbr-leap":"Adar II","dateFormatItem-y":"y G","field-year-relative+-1":"tahun lalu","field-month-relative+-1":"bulan lalu","dateFormatItem-hm":"h.mm a","days-format-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"days-format-narrow":["M","S","S","R","K","J","S"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"Bulan","days-standAlone-narrow":["M","S","S","R","K","J","S"],"field-tue-relative+0":"Selasa ini","field-tue-relative+1":"Selasa berikutnya","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Detik","field-sat-relative+-1":"Sabtu lalu","field-sun-relative+-1":"hari Minggu lalu","field-month-relative+0":"bulan ini","field-month-relative+1":"Bulan berikutnya","dateFormatItem-Ed":"E, d","field-week":"Minggu","dateFormat-medium":"d MMM y G","field-year-relative+0":"tahun ini","field-week-relative+-1":"minggu lalu","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"tahun depan","dayPeriods-format-narrow-pm":"PM","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","months-format-wide-leap":"Adar II","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"Senin lalu","dateFormatItem-yyyy":"y G","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/indian.js b/lib/dojo/cldr/nls/id/indian.js
index ddd5a6c48..51a00e3ad 100644
--- a/lib/dojo/cldr/nls/id/indian.js
+++ b/lib/dojo/cldr/nls/id/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/id/indian",{"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-dayperiod":"AM/PM","field-sun-relative+-1":"hari Minggu lalu","field-mon-relative+-1":"Senin lalu","field-minute":"Menit","field-day-relative+-1":"kemarin","field-weekday":"Hari dalam Seminggu","field-day-relative+-2":"kemarin lusa","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"Era","field-hour":"Jam","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-wed-relative+-1":"Rabu lalu","field-day-relative+0":"hari ini","field-day-relative+1":"besok","eraAbbr":["SAKA"],"field-day-relative+2":"lusa","field-tue-relative+0":"Selasa ini","field-zone":"Zona Waktu","field-tue-relative+1":"Selasa berikutnya","field-week-relative+-1":"minggu lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-sat-relative+-1":"Sabtu lalu","field-year-relative+-1":"tahun lalu","field-year":"Tahun","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-week":"Minggu","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya","months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-month-relative+0":"bulan ini","field-month":"Bulan","field-month-relative+1":"Bulan berikutnya","field-fri-relative+-1":"Jumat lalu","field-second":"Detik","field-tue-relative+-1":"Selasa lalu","field-day":"Hari","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-thu-relative+0":"Kamis ini","field-second-relative+0":"sekarang","field-thu-relative+1":"Kamis berikutnya","months-format-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","field-month-relative+-1":"bulan lalu","field-thu-relative+-1":"Kamis lalu"}); \ No newline at end of file
+define("dojo/cldr/nls/id/indian",{"field-tue-relative+-1":"Selasa lalu","field-year":"tahun","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","field-minute":"menit","field-month-narrow-relative+-1":"bln lalu","field-tue-narrow-relative+0":"Sel. ini","field-tue-narrow-relative+1":"Sel. berikutnya","field-thu-short-relative+0":"Kam. ini","field-thu-short-relative+1":"Kam. berikutnya","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-week-narrow-relative+0":"mgg ini","field-day-relative+2":"lusa","field-week-narrow-relative+1":"mgg depan","field-wed-narrow-relative+-1":"Rab. lalu","field-year-narrow":"thn.","field-era-short":"era","field-year-narrow-relative+0":"thn ini","field-tue-relative+0":"Selasa ini","field-year-narrow-relative+1":"thn depan","field-tue-relative+1":"Selasa berikutnya","field-weekdayOfMonth":"hari kerja","field-second-short":"dtk.","field-weekdayOfMonth-narrow":"hr kerja","field-week-relative+0":"minggu ini","field-month-relative+0":"bulan ini","field-week-relative+1":"minggu depan","field-month-relative+1":"bulan berikutnya","field-sun-narrow-relative+0":"Min. ini","field-mon-short-relative+0":"Sen. ini","field-sun-narrow-relative+1":"Min. berikutnya","field-mon-short-relative+1":"Sen. berikutnya","field-second-relative+0":"sekarang","eraNames":["SAKA"],"field-weekOfMonth":"minggu","field-month-short":"bln.","field-day":"hari","field-dayOfYear-short":"hari dlm setahun","field-year-relative+-1":"tahun lalu","field-sat-short-relative+-1":"Sab. lalu","field-hour-relative+0":"jam ini","field-wed-relative+-1":"Rabu lalu","field-sat-narrow-relative+-1":"Sab. lalu","field-second":"detik","field-quarter":"kuartal","field-week-short":"mgg.","field-day-narrow-relative+2":"lusa","field-tue-short-relative+0":"Sel. ini","field-tue-short-relative+1":"Sel. berikutnya","field-month-short-relative+-1":"bln lalu","field-mon-relative+-1":"Senin lalu","field-month":"bulan","field-day-narrow":"h","field-minute-short":"mnt.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"Sab. ini","field-sat-short-relative+1":"Sab. berikutnya","eraAbbr":["SAKA"],"field-second-narrow":"d","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-year-short":"thn.","field-quarter-relative+-1":"Kuartal lalu","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"mgg lalu","field-dayOfYear":"hari dalam setahun","field-sat-relative+-1":"Sabtu lalu","field-hour":"Jam","field-month-relative+-1":"bulan lalu","field-quarter-short":"krtl.","field-sat-narrow-relative+0":"Sab. ini","field-fri-relative+0":"Jumat ini","field-sat-narrow-relative+1":"Sab. berikutnya","field-fri-relative+1":"Jumat berikutnya","field-month-narrow-relative+0":"bln ini","field-month-narrow-relative+1":"bln berikutnya","field-sun-short-relative+0":"Min. ini","field-sun-short-relative+1":"Min. berikutnya","field-week-relative+-1":"minggu lalu","field-quarter-relative+0":"kuartal ini","field-minute-relative+0":"menit ini","field-quarter-relative+1":"kuartal berikutnya","field-wed-short-relative+-1":"Rab. lalu","field-thu-short-relative+-1":"Kam. lalu","field-year-narrow-relative+-1":"thn lalu","field-mon-narrow-relative+-1":"Sen. lalu","field-thu-narrow-relative+-1":"Kam. lalu","field-tue-narrow-relative+-1":"Sel. lalu","field-weekOfMonth-short":"mgg.","field-wed-short-relative+0":"Rab. ini","field-wed-short-relative+1":"Rab. berikutnya","field-sun-relative+-1":"hari Minggu lalu","field-weekday":"hari dalam seminggu","field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-day-short-relative+2":"lusa","field-week-short-relative+0":"mgg ini","field-week-short-relative+1":"mgg depan","field-dayOfYear-narrow":"hari dlm 1 thn","field-month-short-relative+0":"bln ini","field-month-short-relative+1":"bln berikutnya","field-weekdayOfMonth-short":"hr kerja","field-zone-narrow":"zona wkt","field-thu-narrow-relative+0":"Kam. ini","field-thu-narrow-relative+1":"Kam. berikutnya","field-sun-narrow-relative+-1":"Min. lalu","field-mon-short-relative+-1":"Sen. lalu","field-thu-relative+0":"Kamis ini","field-thu-relative+1":"Kamis berikutnya","field-fri-short-relative+-1":"Jum. lalu","field-thu-relative+-1":"Kamis lalu","field-week":"minggu","field-wed-narrow-relative+0":"Rab. ini","field-wed-narrow-relative+1":"Rab. berikutnya","field-year-short-relative+0":"thn ini","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"thn depan","field-fri-short-relative+0":"Jum. ini","field-fri-short-relative+1":"Jum. berikutnya","field-week-short-relative+-1":"mgg lalu","field-hour-short":"jam","field-zone-short":"zona wkt","field-month-narrow":"bln.","field-hour-narrow":"j","field-fri-narrow-relative+-1":"Jum. lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-era-narrow":"era","field-fri-relative+-1":"Jumat lalu","eraNarrow":"SAKA","field-tue-short-relative+-1":"Sel. lalu","field-minute-narrow":"m","field-mon-narrow-relative+0":"Sen. ini","field-mon-narrow-relative+1":"Sen. berikutnya","field-year-short-relative+-1":"thn lalu","field-zone":"zona waktu","field-weekOfMonth-narrow":"mgg.","field-weekday-narrow":"hari dlm seminggu","field-quarter-narrow":"krtl.","field-sun-short-relative+-1":"Min. lalu","field-day-relative+-1":"kemarin","field-day-relative+-2":"kemarin dulu","field-weekday-short":"hari dlm seminggu","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","field-day-short":"h","field-week-narrow":"mgg.","field-era":"era","field-fri-narrow-relative+0":"Jum. ini","field-fri-narrow-relative+1":"Jum. berikutnya"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/islamic.js b/lib/dojo/cldr/nls/id/islamic.js
index d04f4c150..42692f4aa 100644
--- a/lib/dojo/cldr/nls/id/islamic.js
+++ b/lib/dojo/cldr/nls/id/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/id/islamic",{"days-standAlone-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"sekarang","field-weekday":"Hari dalam Seminggu","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"Selasa lalu","days-format-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"Jumat lalu","field-wed-relative+-1":"Rabu lalu","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Sya’ban","Ramadhan","Syawal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE, dd MMMM y G","dateFormatItem-yyyyMEd":"E, d/M/y G","field-thu-relative+-1":"Kamis lalu","dateFormatItem-Md":"d/M","field-era":"Era","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Sya’ban","Ramadhan","Syawal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"timeFormat-short":"HH.mm","quarters-format-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"timeFormat-long":"HH.mm.ss z","field-year":"Tahun","field-hour":"Jam","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Syaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"hari ini","field-thu-relative+0":"Kamis ini","field-day-relative+1":"besok","field-thu-relative+1":"Kamis berikutnya","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"lusa","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Syaw.","Dhuʻl-Q.","Dhuʻl-H."],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-M":"L","days-standAlone-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"hari Minggu ini","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"hari Minggu berikutnya","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["AH"],"field-minute":"Menit","field-dayperiod":"AM/PM","days-standAlone-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"kemarin","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"kemarin lusa","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","field-day":"Hari","days-format-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"field-zone":"Zona Waktu","dateFormatItem-y":"y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"tahun lalu","field-month-relative+-1":"bulan lalu","dateFormatItem-hm":"h.mm a","days-format-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"days-format-narrow":["M","S","S","R","K","J","S"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"Bulan","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["M","S","S","R","K","J","S"],"field-tue-relative+0":"Selasa ini","field-tue-relative+1":"Selasa berikutnya","dateFormatItem-MMMMEd":"E, d MMMM","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","dateFormat-short":"d/M/y GGGGG","field-second":"Detik","field-sat-relative+-1":"Sabtu lalu","field-sun-relative+-1":"hari Minggu lalu","field-month-relative+0":"bulan ini","field-month-relative+1":"Bulan berikutnya","dateFormatItem-Ed":"E, d","field-week":"Minggu","dateFormat-medium":"d MMM y G","field-year-relative+0":"tahun ini","field-week-relative+-1":"minggu lalu","field-year-relative+1":"tahun depan","dateFormatItem-yyyyM":"M/y G","dayPeriods-format-narrow-pm":"PM","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","field-mon-relative+-1":"Senin lalu","dateFormatItem-GyMMM":"MMM y G","dateFormatItem-yyyy":"y G","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya"}); \ No newline at end of file
+define("dojo/cldr/nls/id/islamic",{"field-tue-relative+-1":"Selasa lalu","field-year":"tahun","dateFormatItem-Hm":"HH.mm","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-ms":"mm.ss","timeFormat-short":"HH.mm","field-minute":"menit","field-month-narrow-relative+-1":"bln lalu","field-tue-narrow-relative+0":"Sel. ini","field-tue-narrow-relative+1":"Sel. berikutnya","field-thu-short-relative+0":"Kam. ini","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"Kam. berikutnya","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-week-narrow-relative+0":"mgg ini","field-day-relative+2":"lusa","field-week-narrow-relative+1":"mgg depan","field-wed-narrow-relative+-1":"Rab. lalu","dateFormatItem-EBhms":"E h.mm.ss B","field-year-narrow":"thn.","field-era-short":"era","field-year-narrow-relative+0":"thn ini","field-tue-relative+0":"Selasa ini","field-year-narrow-relative+1":"thn depan","field-tue-relative+1":"Selasa berikutnya","field-weekdayOfMonth":"hari kerja","field-second-short":"dtk.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"hr kerja","field-week-relative+0":"minggu ini","field-month-relative+0":"bulan ini","field-week-relative+1":"minggu depan","field-month-relative+1":"bulan berikutnya","field-sun-narrow-relative+0":"Min. ini","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"Sen. ini","field-sun-narrow-relative+1":"Min. berikutnya","field-mon-short-relative+1":"Sen. berikutnya","field-second-relative+0":"sekarang","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["H"],"field-weekOfMonth":"minggu","field-month-short":"bln.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d/M/y G","field-day":"hari","field-dayOfYear-short":"hari dlm setahun","field-year-relative+-1":"tahun lalu","field-sat-short-relative+-1":"Sab. lalu","field-hour-relative+0":"jam ini","dateFormatItem-yyyyMEd":"E, d/M/y G","field-wed-relative+-1":"Rabu lalu","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"Sab. lalu","field-second":"detik","days-standAlone-narrow":["M","S","S","R","K","J","S"],"dateFormatItem-Ehms":"E h.mm.ss a","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"kuartal","field-week-short":"mgg.","field-day-narrow-relative+2":"lusa","quarters-standAlone-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"days-format-narrow":["M","S","S","R","K","J","S"],"field-tue-short-relative+0":"Sel. ini","field-tue-short-relative+1":"Sel. berikutnya","field-month-short-relative+-1":"bln lalu","field-mon-relative+-1":"Senin lalu","dateFormatItem-GyMMM":"MMM y G","field-month":"bulan","field-day-narrow":"h","field-minute-short":"mnt.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"Sab. ini","field-sat-short-relative+1":"Sab. berikutnya","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["H"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-yyyyM":"M/y G","field-second-narrow":"d","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-year-short":"thn.","field-quarter-relative+-1":"Kuartal lalu","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"mgg lalu","days-format-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"field-dayOfYear":"hari dalam setahun","field-sat-relative+-1":"Sabtu lalu","dateTimeFormat-long":"{1} 'pukul' {0}","dateFormatItem-Md":"d/M","field-hour":"Jam","months-format-wide":["Muharam","Safar","Rabiulawal","Rabiulakhir","Jumadilawal","Jumadilakhir","Rajab","Syakban","Ramadan","Syawal","Zulkaidah","Zulhijah"],"dateFormat-full":"EEEE, dd MMMM y G","field-month-relative+-1":"bulan lalu","dateFormatItem-Hms":"HH.mm.ss","field-quarter-short":"krtl.","field-sat-narrow-relative+0":"Sab. ini","field-fri-relative+0":"Jumat ini","field-sat-narrow-relative+1":"Sab. berikutnya","field-fri-relative+1":"Jumat berikutnya","dateFormatItem-EBhm":"E h.mm B","field-month-narrow-relative+0":"bln ini","field-month-narrow-relative+1":"bln berikutnya","field-sun-short-relative+0":"Min. ini","field-sun-short-relative+1":"Min. berikutnya","field-week-relative+-1":"minggu lalu","dateFormatItem-Ehm":"E h.mm a","months-format-abbr":["Muh.","Saf.","Rab. Awal","Rab. Akhir","Jum. Awal","Jum. Akhir","Raj.","Sya.","Ram.","Syaw.","Zulka.","Zulhi."],"field-quarter-relative+0":"kuartal ini","field-minute-relative+0":"menit ini","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"kuartal berikutnya","field-wed-short-relative+-1":"Rab. lalu","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"Kam. lalu","field-year-narrow-relative+-1":"thn lalu","days-standAlone-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"Sen. lalu","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"Kam. lalu","field-tue-narrow-relative+-1":"Sel. lalu","field-weekOfMonth-short":"mgg.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"Rab. ini","months-standAlone-wide":["Muharam","Safar","Rabiulawal","Rabiulakhir","Jumadilawal","Jumadilakhir","Rajab","Syakban","Ramadan","Syawal","Zulkaidah","Zulhijah"],"field-wed-short-relative+1":"Rab. berikutnya","field-sun-relative+-1":"hari Minggu lalu","dateFormatItem-MMMMEd":"E, d MMMM","days-standAlone-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateTimeFormat-full":"{1} 'pukul' {0}","dateFormatItem-hm":"h.mm a","field-weekday":"hari dalam seminggu","field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-day-short-relative+2":"lusa","field-week-short-relative+0":"mgg ini","field-week-short-relative+1":"mgg depan","months-standAlone-abbr":["Muh.","Saf.","Rab. Awal","Rab. Akhir","Jum. Awal","Jum. Akhir","Raj.","Sya.","Ram.","Syaw.","Zulka.","Zulhi."],"field-dayOfYear-narrow":"hari dlm 1 thn","field-month-short-relative+0":"bln ini","field-month-short-relative+1":"bln berikutnya","field-weekdayOfMonth-short":"hr kerja","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona wkt","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"Kam. ini","field-sun-narrow-relative+-1":"Min. lalu","field-mon-short-relative+-1":"Sen. lalu","field-thu-narrow-relative+1":"Kam. berikutnya","field-thu-relative+0":"Kamis ini","field-thu-relative+1":"Kamis berikutnya","field-fri-short-relative+-1":"Jum. lalu","dateFormatItem-hms":"h.mm.ss a","field-thu-relative+-1":"Kamis lalu","field-week":"minggu","quarters-format-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"Rab. ini","field-wed-narrow-relative+1":"Rab. berikutnya","field-year-short-relative+0":"thn ini","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"thn depan","field-fri-short-relative+0":"Jum. ini","field-fri-short-relative+1":"Jum. berikutnya","days-standAlone-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"field-week-short-relative+-1":"mgg lalu","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"jam","field-zone-short":"zona wkt","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"bln.","field-hour-narrow":"j","field-fri-narrow-relative+-1":"Jum. lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-era-narrow":"era","field-fri-relative+-1":"Jumat lalu","eraNarrow":"H","dateFormatItem-Bhms":"h.mm.ss B","field-tue-short-relative+-1":"Sel. lalu","field-minute-narrow":"m","days-format-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"field-mon-narrow-relative+0":"Sen. ini","field-mon-narrow-relative+1":"Sen. berikutnya","dateFormatItem-EHm":"E HH.mm","field-year-short-relative+-1":"thn lalu","field-zone":"zona waktu","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"mgg.","dateFormatItem-EHms":"E HH.mm.ss","field-weekday-narrow":"hari dlm seminggu","field-quarter-narrow":"krtl.","field-sun-short-relative+-1":"Min. lalu","field-day-relative+-1":"kemarin","field-day-relative+-2":"kemarin dulu","field-weekday-short":"hari dlm seminggu","days-format-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormatItem-Bhm":"h.mm B","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","dateFormatItem-Gy":"y G","field-day-short":"h","field-week-narrow":"mgg.","field-era":"era","field-fri-narrow-relative+0":"Jum. ini","field-fri-narrow-relative+1":"Jum. berikutnya"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/japanese.js b/lib/dojo/cldr/nls/id/japanese.js
index 31c4eb5fb..c990c231c 100644
--- a/lib/dojo/cldr/nls/id/japanese.js
+++ b/lib/dojo/cldr/nls/id/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/id/japanese",{"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-dayperiod":"AM/PM","field-sun-relative+-1":"hari Minggu lalu","field-mon-relative+-1":"Senin lalu","field-minute":"Menit","dateFormatItem-MMMEd":"E, d MMM","dateTimeFormat-full":"{1} {0}","field-day-relative+-1":"kemarin","field-day-relative+-2":"kemarin lusa","field-weekday":"Hari dalam Seminggu","dateFormatItem-MMM":"LLL","dateTimeFormat-short":"{1} {0}","field-era":"Era","dateTimeFormat-medium":"{1} {0}","field-hour":"Jam","dateFormatItem-y":"G y","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","field-wed-relative+-1":"Rabu lalu","field-day-relative+0":"hari ini","field-day-relative+1":"besok","eraAbbr":["Taika (645-650)","Hakuchi (650-671)","Hakuhō (672-686)","Shuchō (686-701)","Taihō (701-704)","Keiun (704-708)","Wadō (708-715)","Reiki (715-717)","Yōrō (717-724)","Jinki (724-729)","Tempyō (729-749)","Tempyō-kampō (749-749)","Tempyō-shōhō (749-757)","Tempyō-hōji (757-765)","Temphō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770-780)","Ten-ō (781-782)","Enryaku (782-806)","Daidō (806-810)","Kōnin (810-824)","Tenchō (824-834)","Jōwa (834-848)","Kajō (848-851)","Ninju (851-854)","Saiko (854-857)","Tennan (857-859)","Jōgan (859-877)","Genkei (877-885)","Ninna (885-889)","Kampyō (889-898)","Shōtai (898-901)","Engi (901-923)","Enchō (923-931)","Shōhei (931-938)","Tengyō (938-947)","Tenryaku (947-957)","Tentoku (957-961)","Ōwa (961-964)","Kōhō (964-968)","Anna (968-970)","Tenroku (970-973)","Ten-en (973-976)","Jōgen (976-978)","Tengen (978-983)","Eikan (983-985)","Kanna (985-987)","Ei-en (987-989)","Eiso (989-990)","Shōryaku (990-995)","Chōtoku (995-999)","Chōhō (999-1004)","Kankō (1004-1012)","Chōwa (1012-1017)","Kannin (1017-1021)","Jian (1021-1024)","Manju (1024-1028)","Chōgen (1028-1037)","Chōryaku (1037-1040)","Chōkyū (1040-1044)","Kantoku (1044-1046)","Eishō (1046-1053)","Tengi (1053-1058)","Kōhei (1058-1065)","Jiryaku (1065-1069)","Enkyū (1069-1074)","Shōho (1074-1077)","Shōryaku (1077-1081)","Eiho (1081-1084)","Ōtoku (1084-1087)","Kanji (1087-1094)","Kaho (1094-1096)","Eichō (1096-1097)","Shōtoku (1097-1099)","Kōwa (1099-1104)","Chōji (1104-1106)","Kashō (1106-1108)","Tennin (1108-1110)","Ten-ei (1110-1113)","Eikyū (1113-1118)","Gen-ei (1118-1120)","Hoan (1120-1124)","Tenji (1124-1126)","Daiji (1126-1131)","Tenshō (1131-1132)","Chōshō (1132-1135)","Hoen (1135-1141)","Eiji (1141-1142)","Kōji (1142-1144)","Tenyō (1144-1145)","Kyūan (1145-1151)","Ninpei (1151-1154)","Kyūju (1154-1156)","Hogen (1156-1159)","Heiji (1159-1160)","Eiryaku (1160-1161)","Ōho (1161-1163)","Chōkan (1163-1165)","Eiman (1165-1166)","Nin-an (1166-1169)","Kaō (1169-1171)","Shōan (1171-1175)","Angen (1175-1177)","Jishō (1177-1181)","Yōwa (1181-1182)","Juei (1182-1184)","Genryuku (1184-1185)","Bunji (1185-1190)","Kenkyū (1190-1199)","Shōji (1199-1201)","Kennin (1201-1204)","Genkyū (1204-1206)","Ken-ei (1206-1207)","Shōgen (1207-1211)","Kenryaku (1211-1213)","Kenpō (1213-1219)","Shōkyū (1219-1222)","Jōō (1222-1224)","Gennin (1224-1225)","Karoku (1225-1227)","Antei (1227-1229)","Kanki (1229-1232)","Jōei (1232-1233)","Tempuku (1233-1234)","Bunryaku (1234-1235)","Katei (1235-1238)","Ryakunin (1238-1239)","En-ō (1239-1240)","Ninji (1240-1243)","Kangen (1243-1247)","Hōji (1247-1249)","Kenchō (1249-1256)","Kōgen (1256-1257)","Shōka (1257-1259)","Shōgen (1259-1260)","Bun-ō (1260-1261)","Kōchō (1261-1264)","Bun-ei (1264-1275)","Kenji (1275-1278)","Kōan (1278-1288)","Shōō (1288-1293)","Einin (1293-1299)","Shōan (1299-1302)","Kengen (1302-1303)","Kagen (1303-1306)","Tokuji (1306-1308)","Enkei (1308-1311)","Ōchō (1311-1312)","Shōwa (1312-1317)","Bunpō (1317-1319)","Genō (1319-1321)","Genkyō (1321-1324)","Shōchū (1324-1326)","Kareki (1326-1329)","Gentoku (1329-1331)","Genkō (1331-1334)","Kemmu (1334-1336)","Engen (1336-1340)","Kōkoku (1340-1346)","Shōhei (1346-1370)","Kentoku (1370-1372)","Bunchũ (1372-1375)","Tenju (1375-1379)","Kōryaku (1379-1381)","Kōwa (1381-1384)","Genchũ (1384-1392)","Meitoku (1384-1387)","Kakei (1387-1389)","Kōō (1389-1390)","Meitoku (1390-1394)","Ōei (1394-1428)","Shōchō (1428-1429)","Eikyō (1429-1441)","Kakitsu (1441-1444)","Bun-an (1444-1449)",null,"Kyōtoku (1452-1455)","Kōshō (1455-1457)","Chōroku (1457-1460)","Kanshō (1460-1466)","Bunshō (1466-1467)","Ōnin (1467-1469)","Bunmei (1469-1487)","Chōkyō (1487-1489)","Entoku (1489-1492)","Meiō (1492-1501)","Bunki (1501-1504)","Eishō (1504-1521)","Taiei (1521-1528)","Kyōroku (1528-1532)","Tenmon (1532-1555)","Kōji (1555-1558)","Eiroku (1558-1570)","Genki (1570-1573)","Tenshō (1573-1592)","Bunroku (1592-1596)","Keichō (1596-1615)","Genwa (1615-1624)","Kan-ei (1624-1644)","Shōho (1644-1648)","Keian (1648-1652)","Shōō (1652-1655)","Meiryaku (1655-1658)","Manji (1658-1661)","Kanbun (1661-1673)","Enpō (1673-1681)","Tenwa (1681-1684)","Jōkyō (1684-1688)","Genroku (1688-1704)","Hōei (1704-1711)","Shōtoku (1711-1716)","Kyōhō (1716-1736)","Genbun (1736-1741)","Kanpō (1741-1744)","Enkyō (1744-1748)","Kan-en (1748-1751)","Hōryaku (1751-1764)","Meiwa (1764-1772)","An-ei (1772-1781)","Tenmei (1781-1789)","Kansei (1789-1801)","Kyōwa (1801-1804)","Bunka (1804-1818)","Bunsei (1818-1830)","Tenpō (1830-1844)","Kōka (1844-1848)","Kaei (1848-1854)","Ansei (1854-1860)","Man-en (1860-1861)","Bunkyū (1861-1864)","Genji (1864-1865)","Keiō (1865-1868)","Meiji","Taishō","Shōwa","Heisei"],"field-day-relative+2":"lusa","dateFormat-long":"d MMMM y G","field-tue-relative+0":"Selasa ini","field-zone":"Zona Waktu","field-tue-relative+1":"Selasa berikutnya","field-week-relative+-1":"minggu lalu","dateFormat-medium":"d MMM y G","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-sat-relative+-1":"Sabtu lalu","field-year-relative+-1":"tahun lalu","field-year":"Tahun","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","dateTimeFormat-long":"{1} {0}","field-week":"Minggu","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-MMMd":"d MMM","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya","field-month-relative+0":"bulan ini","field-month":"Bulan","field-month-relative+1":"Bulan berikutnya","field-fri-relative+-1":"Jumat lalu","dateFormatItem-MMMMd":"d MMMM","dateFormatItem-M":"L","field-second":"Detik","field-tue-relative+-1":"Selasa lalu","field-day":"Hari","dateFormatItem-MEd":"E, d/M","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-thu-relative+0":"Kamis ini","field-second-relative+0":"sekarang","dateFormat-short":"d/M/y GGGGG","field-thu-relative+1":"Kamis berikutnya","dateFormat-full":"EEEE, dd MMMM y G","dateFormatItem-Md":"d/M","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-d":"d","field-month-relative+-1":"bulan lalu","field-thu-relative+-1":"Kamis lalu"}); \ No newline at end of file
+define("dojo/cldr/nls/id/japanese",{"field-tue-relative+-1":"Selasa lalu","field-year":"tahun","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","field-minute":"menit","field-month-narrow-relative+-1":"bln lalu","field-tue-narrow-relative+0":"Sel. ini","field-tue-narrow-relative+1":"Sel. berikutnya","field-thu-short-relative+0":"Kam. ini","field-thu-short-relative+1":"Kam. berikutnya","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-week-narrow-relative+0":"mgg ini","field-day-relative+2":"lusa","field-week-narrow-relative+1":"mgg depan","field-wed-narrow-relative+-1":"Rab. lalu","field-year-narrow":"thn.","field-era-short":"era","field-year-narrow-relative+0":"thn ini","field-tue-relative+0":"Selasa ini","field-year-narrow-relative+1":"thn depan","field-tue-relative+1":"Selasa berikutnya","field-weekdayOfMonth":"hari kerja","field-second-short":"dtk.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"hr kerja","field-week-relative+0":"minggu ini","field-month-relative+0":"bulan ini","field-week-relative+1":"minggu depan","field-month-relative+1":"bulan berikutnya","field-sun-narrow-relative+0":"Min. ini","field-mon-short-relative+0":"Sen. ini","field-sun-narrow-relative+1":"Min. berikutnya","field-mon-short-relative+1":"Sen. berikutnya","field-second-relative+0":"sekarang","field-weekOfMonth":"minggu","field-month-short":"bln.","field-day":"hari","field-dayOfYear-short":"hari dlm setahun","field-year-relative+-1":"tahun lalu","field-sat-short-relative+-1":"Sab. lalu","field-hour-relative+0":"jam ini","field-wed-relative+-1":"Rabu lalu","field-sat-narrow-relative+-1":"Sab. lalu","field-second":"detik","dateFormat-long":"d MMMM y G","field-quarter":"kuartal","field-week-short":"mgg.","field-day-narrow-relative+2":"lusa","field-tue-short-relative+0":"Sel. ini","field-tue-short-relative+1":"Sel. berikutnya","field-month-short-relative+-1":"bln lalu","field-mon-relative+-1":"Senin lalu","field-month":"bulan","field-day-narrow":"h","field-minute-short":"mnt.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"Sab. ini","field-sat-short-relative+1":"Sab. berikutnya","dateFormat-medium":"d MMM y G","eraAbbr":[null,null,null,null,null,null,null,null,null,null,"Tempyō (729–749)","Tempyō-kampō (749-749)","Tempyō-shōhō (749-757)","Tempyō-hōji (757-765)","Temphō-jingo (765-767)","Jingo-keiun (767-770)",null,"Ten-ō (781-782)",null,null,null,null,null,null,null,"Saiko (854–857)","Tennan (857–859)",null,"Genkei (877–885)",null,"Kampyō (889–898)",null,null,null,"Shōhei (931–938)",null,null,null,null,null,null,null,"Ten-en (973-976)",null,null,null,null,"Ei-en (987-989)",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Eiho (1081–1084)",null,null,"Kaho (1094–1096)",null,"Shōtoku (1097–1099)",null,null,null,null,"Ten-ei (1110-1113)",null,"Gen-ei (1118-1120)","Hoan (1120–1124)",null,null,null,null,"Hoen (1135–1141)",null,null,"Tenyō (1144–1145)",null,null,null,"Hogen (1156–1159)",null,null,null,null,null,"Nin-an (1166-1169)",null,null,null,null,null,null,"Genryuku (1184–1185)",null,null,null,null,null,"Ken-ei (1206-1207)","Shōgen (1207–1211)",null,null,"Shōkyū (1219–1222)",null,null,null,null,null,null,"Tempuku (1233–1234)",null,null,null,"En-ō (1239-1240)",null,null,null,null,null,null,null,"Bun-ō (1260-1261)",null,"Bun-ei (1264-1275)",null,null,null,null,null,null,null,null,"Enkei (1308–1311)",null,null,null,null,"Genkyō (1321–1324)",null,"Kareki (1326–1329)",null,null,"Kemmu (1334–1336)",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Bun-an (1444-1449)",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Tenmon (1532–1555)",null,null,null,null,null,null,"Genwa (1615–1624)","Kan-ei (1624-1644)",null,null,"Shōō (1652–1655)","Meiryaku (1655–1658)",null,null,null,"Tenwa (1681–1684)",null,null,null,null,null,null,null,null,"Kan-en (1748-1751)","Hōryaku (1751–1764)",null,"An-ei (1772-1781)",null,null,null,null,null,null,null,null,null,"Man-en (1860-1861)"],"field-second-narrow":"d","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-year-short":"thn.","field-quarter-relative+-1":"Kuartal lalu","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"mgg lalu","field-dayOfYear":"hari dalam setahun","field-sat-relative+-1":"Sabtu lalu","dateFormatItem-Md":"d/M","field-hour":"Jam","dateFormat-full":"EEEE, dd MMMM y G","field-month-relative+-1":"bulan lalu","field-quarter-short":"krtl.","field-sat-narrow-relative+0":"Sab. ini","field-fri-relative+0":"Jumat ini","field-sat-narrow-relative+1":"Sab. berikutnya","field-fri-relative+1":"Jumat berikutnya","field-month-narrow-relative+0":"bln ini","field-month-narrow-relative+1":"bln berikutnya","field-sun-short-relative+0":"Min. ini","field-sun-short-relative+1":"Min. berikutnya","field-week-relative+-1":"minggu lalu","field-quarter-relative+0":"kuartal ini","field-minute-relative+0":"menit ini","field-quarter-relative+1":"kuartal berikutnya","field-wed-short-relative+-1":"Rab. lalu","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"Kam. lalu","field-year-narrow-relative+-1":"thn lalu","field-mon-narrow-relative+-1":"Sen. lalu","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"Kam. lalu","field-tue-narrow-relative+-1":"Sel. lalu","field-weekOfMonth-short":"mgg.","field-wed-short-relative+0":"Rab. ini","field-wed-short-relative+1":"Rab. berikutnya","field-sun-relative+-1":"hari Minggu lalu","dateFormatItem-MMMMEd":"E, d MMMM","field-weekday":"hari dalam seminggu","field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-day-short-relative+2":"lusa","field-week-short-relative+0":"mgg ini","field-week-short-relative+1":"mgg depan","field-dayOfYear-narrow":"hari dlm 1 thn","field-month-short-relative+0":"bln ini","field-month-short-relative+1":"bln berikutnya","field-weekdayOfMonth-short":"hr kerja","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona wkt","field-thu-narrow-relative+0":"Kam. ini","field-thu-narrow-relative+1":"Kam. berikutnya","field-sun-narrow-relative+-1":"Min. lalu","field-mon-short-relative+-1":"Sen. lalu","field-thu-relative+0":"Kamis ini","field-thu-relative+1":"Kamis berikutnya","field-fri-short-relative+-1":"Jum. lalu","field-thu-relative+-1":"Kamis lalu","field-week":"minggu","field-wed-narrow-relative+0":"Rab. ini","field-wed-narrow-relative+1":"Rab. berikutnya","field-year-short-relative+0":"thn ini","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"thn depan","field-fri-short-relative+0":"Jum. ini","field-fri-short-relative+1":"Jum. berikutnya","field-week-short-relative+-1":"mgg lalu","field-hour-short":"jam","field-zone-short":"zona wkt","field-month-narrow":"bln.","field-hour-narrow":"j","field-fri-narrow-relative+-1":"Jum. lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-era-narrow":"era","field-fri-relative+-1":"Jumat lalu","field-tue-short-relative+-1":"Sel. lalu","field-minute-narrow":"m","field-mon-narrow-relative+0":"Sen. ini","field-mon-narrow-relative+1":"Sen. berikutnya","field-year-short-relative+-1":"thn lalu","field-zone":"zona waktu","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"mgg.","field-weekday-narrow":"hari dlm seminggu","field-quarter-narrow":"krtl.","field-sun-short-relative+-1":"Min. lalu","field-day-relative+-1":"kemarin","field-day-relative+-2":"kemarin dulu","field-weekday-short":"hari dlm seminggu","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","field-day-short":"h","field-week-narrow":"mgg.","field-era":"era","field-fri-narrow-relative+0":"Jum. ini","field-fri-narrow-relative+1":"Jum. berikutnya"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/number.js b/lib/dojo/cldr/nls/id/number.js
index fbaea43ac..202902215 100644
--- a/lib/dojo/cldr/nls/id/number.js
+++ b/lib/dojo/cldr/nls/id/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/id/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00","plusSign":"+","decimalFormat-long":"000 triliun","decimalFormat-short":"000 T"}); \ No newline at end of file
+define("dojo/cldr/nls/id/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 T","nan":"NaN","plusSign":"+","currencyFormat":"¤#,##0.00","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 triliun","decimalFormat":"#,##0.###","currencyFormat-short":"¤000 T","timeSeparator":".","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/persian.js b/lib/dojo/cldr/nls/id/persian.js
deleted file mode 100644
index a4285d84a..000000000
--- a/lib/dojo/cldr/nls/id/persian.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/id/persian",{"days-standAlone-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"sekarang","field-weekday":"Hari dalam Seminggu","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"Selasa lalu","days-format-short":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"Jumat lalu","field-wed-relative+-1":"Rabu lalu","months-format-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE, dd MMMM y G","dateFormatItem-yyyyMEd":"E, d/M/y G","field-thu-relative+-1":"Kamis lalu","dateFormatItem-Md":"d/M","field-era":"Era","months-standAlone-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"timeFormat-short":"HH.mm","quarters-format-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"timeFormat-long":"HH.mm.ss z","field-year":"Tahun","field-hour":"Jam","months-format-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"hari ini","field-thu-relative+0":"Kamis ini","field-day-relative+1":"besok","field-thu-relative+1":"Kamis berikutnya","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"lusa","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"hari Minggu ini","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"hari Minggu berikutnya","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["AP"],"field-minute":"Menit","field-dayperiod":"AM/PM","days-standAlone-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"dateFormatItem-ms":"mm.ss","field-day-relative+-1":"kemarin","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"kemarin lusa","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","field-day":"Hari","days-format-wide":["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],"field-zone":"Zona Waktu","dateFormatItem-y":"y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"tahun lalu","field-month-relative+-1":"bulan lalu","dateFormatItem-hm":"h.mm a","days-format-abbr":["Min","Sen","Sel","Rab","Kam","Jum","Sab"],"days-format-narrow":["M","S","S","R","K","J","S"],"dateFormatItem-yyyyMd":"d/M/y G","field-month":"Bulan","days-standAlone-narrow":["M","S","S","R","K","J","S"],"field-tue-relative+0":"Selasa ini","field-tue-relative+1":"Selasa berikutnya","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Detik","field-sat-relative+-1":"Sabtu lalu","field-sun-relative+-1":"hari Minggu lalu","field-month-relative+0":"bulan ini","field-month-relative+1":"Bulan berikutnya","dateFormatItem-Ed":"E, d","field-week":"Minggu","dateFormat-medium":"d MMM y G","field-year-relative+0":"tahun ini","field-week-relative+-1":"minggu lalu","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"tahun depan","dayPeriods-format-narrow-pm":"PM","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"Senin lalu","dateFormatItem-yyyy":"y G","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/id/roc.js b/lib/dojo/cldr/nls/id/roc.js
index bf3b70cf3..3f60cb2b1 100644
--- a/lib/dojo/cldr/nls/id/roc.js
+++ b/lib/dojo/cldr/nls/id/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/id/roc",{"field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-dayperiod":"AM/PM","field-sun-relative+-1":"hari Minggu lalu","field-mon-relative+-1":"Senin lalu","field-minute":"Menit","dateFormatItem-MMMEd":"E, d MMM","field-day-relative+-1":"kemarin","field-weekday":"Hari dalam Seminggu","field-day-relative+-2":"kemarin lusa","dateFormatItem-MMM":"LLL","field-era":"Era","field-hour":"Jam","dateFormatItem-y":"G y","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","field-wed-relative+-1":"Rabu lalu","field-day-relative+0":"hari ini","field-day-relative+1":"besok","eraAbbr":["Sebelum R.O.C.","R.O.C."],"field-day-relative+2":"lusa","dateFormat-long":"d MMMM y G","field-tue-relative+0":"Selasa ini","field-zone":"Zona Waktu","field-tue-relative+1":"Selasa berikutnya","field-week-relative+-1":"minggu lalu","dateFormat-medium":"d MMM y G","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-sat-relative+-1":"Sabtu lalu","field-year-relative+-1":"tahun lalu","field-year":"Tahun","field-fri-relative+0":"Jumat ini","field-fri-relative+1":"Jumat berikutnya","field-week":"Minggu","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-MMMd":"d MMM","field-week-relative+0":"minggu ini","field-week-relative+1":"minggu berikutnya","field-month-relative+0":"bulan ini","field-month":"Bulan","field-month-relative+1":"Bulan berikutnya","field-fri-relative+-1":"Jumat lalu","dateFormatItem-MMMMd":"d MMMM","dateFormatItem-M":"L","field-second":"Detik","field-tue-relative+-1":"Selasa lalu","field-day":"Hari","dateFormatItem-MEd":"E, d/M","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-thu-relative+0":"Kamis ini","field-second-relative+0":"sekarang","dateFormat-short":"d/M/y GGGGG","field-thu-relative+1":"Kamis berikutnya","dateFormat-full":"EEEE, dd MMMM y G","dateFormatItem-Md":"d/M","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","dateFormatItem-d":"d","field-month-relative+-1":"bulan lalu","field-thu-relative+-1":"Kamis lalu"}); \ No newline at end of file
+define("dojo/cldr/nls/id/roc",{"field-tue-relative+-1":"Selasa lalu","field-year":"tahun","field-wed-relative+0":"Rabu ini","field-wed-relative+1":"Rabu berikutnya","field-minute":"menit","field-month-narrow-relative+-1":"bln lalu","field-tue-narrow-relative+0":"Sel. ini","field-tue-narrow-relative+1":"Sel. berikutnya","field-thu-short-relative+0":"Kam. ini","field-thu-short-relative+1":"Kam. berikutnya","field-day-relative+0":"hari ini","field-day-relative+1":"besok","field-week-narrow-relative+0":"mgg ini","field-day-relative+2":"lusa","field-week-narrow-relative+1":"mgg depan","field-wed-narrow-relative+-1":"Rab. lalu","field-year-narrow":"thn.","field-era-short":"era","field-year-narrow-relative+0":"thn ini","field-tue-relative+0":"Selasa ini","field-year-narrow-relative+1":"thn depan","field-tue-relative+1":"Selasa berikutnya","field-weekdayOfMonth":"hari kerja","field-second-short":"dtk.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"hr kerja","field-week-relative+0":"minggu ini","field-month-relative+0":"bulan ini","field-week-relative+1":"minggu depan","field-month-relative+1":"bulan berikutnya","field-sun-narrow-relative+0":"Min. ini","field-mon-short-relative+0":"Sen. ini","field-sun-narrow-relative+1":"Min. berikutnya","field-mon-short-relative+1":"Sen. berikutnya","field-second-relative+0":"sekarang","eraNames":["Sebelum R.O.C."],"field-weekOfMonth":"minggu","field-month-short":"bln.","field-day":"hari","field-dayOfYear-short":"hari dlm setahun","field-year-relative+-1":"tahun lalu","field-sat-short-relative+-1":"Sab. lalu","field-hour-relative+0":"jam ini","field-wed-relative+-1":"Rabu lalu","field-sat-narrow-relative+-1":"Sab. lalu","field-second":"detik","dateFormat-long":"d MMMM y G","field-quarter":"kuartal","field-week-short":"mgg.","field-day-narrow-relative+2":"lusa","field-tue-short-relative+0":"Sel. ini","field-tue-short-relative+1":"Sel. berikutnya","field-month-short-relative+-1":"bln lalu","field-mon-relative+-1":"Senin lalu","field-month":"bulan","field-day-narrow":"h","field-minute-short":"mnt.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"Sab. ini","field-sat-short-relative+1":"Sab. berikutnya","dateFormat-medium":"d MMM y G","eraAbbr":["Sebelum R.O.C."],"field-second-narrow":"d","field-mon-relative+0":"Senin ini","field-mon-relative+1":"Senin berikutnya","field-year-short":"thn.","field-quarter-relative+-1":"Kuartal lalu","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"mgg lalu","field-dayOfYear":"hari dalam setahun","field-sat-relative+-1":"Sabtu lalu","dateFormatItem-Md":"d/M","field-hour":"Jam","dateFormat-full":"EEEE, dd MMMM y G","field-month-relative+-1":"bulan lalu","field-quarter-short":"krtl.","field-sat-narrow-relative+0":"Sab. ini","field-fri-relative+0":"Jumat ini","field-sat-narrow-relative+1":"Sab. berikutnya","field-fri-relative+1":"Jumat berikutnya","field-month-narrow-relative+0":"bln ini","field-month-narrow-relative+1":"bln berikutnya","field-sun-short-relative+0":"Min. ini","field-sun-short-relative+1":"Min. berikutnya","field-week-relative+-1":"minggu lalu","field-quarter-relative+0":"kuartal ini","field-minute-relative+0":"menit ini","field-quarter-relative+1":"kuartal berikutnya","field-wed-short-relative+-1":"Rab. lalu","dateFormat-short":"d/M/y GGGGG","field-thu-short-relative+-1":"Kam. lalu","field-year-narrow-relative+-1":"thn lalu","field-mon-narrow-relative+-1":"Sen. lalu","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"Kam. lalu","field-tue-narrow-relative+-1":"Sel. lalu","field-weekOfMonth-short":"mgg.","field-wed-short-relative+0":"Rab. ini","field-wed-short-relative+1":"Rab. berikutnya","field-sun-relative+-1":"hari Minggu lalu","dateFormatItem-MMMMEd":"E, d MMMM","field-weekday":"hari dalam seminggu","field-sat-relative+0":"Sabtu ini","field-sat-relative+1":"Sabtu berikutnya","field-day-short-relative+2":"lusa","field-week-short-relative+0":"mgg ini","field-week-short-relative+1":"mgg depan","field-dayOfYear-narrow":"hari dlm 1 thn","field-month-short-relative+0":"bln ini","field-month-short-relative+1":"bln berikutnya","field-weekdayOfMonth-short":"hr kerja","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"zona wkt","field-thu-narrow-relative+0":"Kam. ini","field-thu-narrow-relative+1":"Kam. berikutnya","field-sun-narrow-relative+-1":"Min. lalu","field-mon-short-relative+-1":"Sen. lalu","field-thu-relative+0":"Kamis ini","field-thu-relative+1":"Kamis berikutnya","field-fri-short-relative+-1":"Jum. lalu","field-thu-relative+-1":"Kamis lalu","field-week":"minggu","field-wed-narrow-relative+0":"Rab. ini","field-wed-narrow-relative+1":"Rab. berikutnya","field-year-short-relative+0":"thn ini","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"thn depan","field-fri-short-relative+0":"Jum. ini","field-fri-short-relative+1":"Jum. berikutnya","field-week-short-relative+-1":"mgg lalu","field-hour-short":"jam","field-zone-short":"zona wkt","field-month-narrow":"bln.","field-hour-narrow":"j","field-fri-narrow-relative+-1":"Jum. lalu","field-year-relative+0":"tahun ini","field-year-relative+1":"tahun depan","field-era-narrow":"era","field-fri-relative+-1":"Jumat lalu","eraNarrow":"Sebelum R.O.C.","field-tue-short-relative+-1":"Sel. lalu","field-minute-narrow":"m","field-mon-narrow-relative+0":"Sen. ini","field-mon-narrow-relative+1":"Sen. berikutnya","field-year-short-relative+-1":"thn lalu","field-zone":"zona waktu","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"mgg.","field-weekday-narrow":"hari dlm seminggu","field-quarter-narrow":"krtl.","field-sun-short-relative+-1":"Min. lalu","field-day-relative+-1":"kemarin","field-day-relative+-2":"kemarin dulu","field-weekday-short":"hari dlm seminggu","field-sun-relative+0":"hari Minggu ini","field-sun-relative+1":"hari Minggu berikutnya","field-day-short":"h","field-week-narrow":"mgg.","field-era":"era","field-fri-narrow-relative+0":"Jum. ini","field-fri-narrow-relative+1":"Jum. berikutnya"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/indian.js b/lib/dojo/cldr/nls/indian.js
index 597488330..aa222b8ef 100644
--- a/lib/dojo/cldr/nls/indian.js
+++ b/lib/dojo/cldr/nls/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/indian",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","eraNames@localeAlias295":{"bundle":"indian","target":"eraAbbr"},"dateTimeFormat-short":"{1} {0}","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Saka"],"dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","days-standAlone-wide@localeAlias285":{"bundle":"gregorian","target":"days-format-wide"},"field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","quarters-format-narrow@localeAlias288":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-wed-relative+-1":"last Wednesday","quarters@localeAlias286":{"bundle":"gregorian","target":"quarters"},"days-standAlone-abbr@localeAlias280":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias281":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","days-format-abbr@localeAlias276":{"bundle":"gregorian","target":"days-format-wide"},"field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","dateFormatItem-MMM":"LLL","field-dayperiod":"Dayperiod","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"G y MMM d","eraAbbr":["Saka"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"months-format-abbr@localeAlias270":{"bundle":"indian","target":"months-format-wide"},"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-yyyyMMMd":"G y MMM d","months-format-narrow@localeAlias271":{"bundle":"indian","target":"months-standAlone-narrow"},"days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dateFormat@localeAlias297":{"bundle":"generic","target":"dateFormat"},"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-hour":"Hour","months-format-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dayPeriods-format-narrow-noon":"n","quarters-standAlone-wide@localeAlias291":{"bundle":"gregorian","target":"quarters-format-wide"},"dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"timeFormat-long":"HH:mm:ss z","dateFormat-short":"GGGGG y-MM-dd","quarters-standAlone-abbr@localeAlias289":{"bundle":"gregorian","target":"quarters-format-abbr"},"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-H":"HH","dateFormatItem-yyyy":"G y","quarters-standAlone-abbr@localeAlias290":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-M":"L","months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"quarters-format-abbr@localeAlias287":{"bundle":"gregorian","target":"quarters-format-wide"},"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","days-standAlone-short@localeAlias282":{"bundle":"gregorian","target":"days-format-short"},"days-format-short@localeAlias278":{"bundle":"gregorian","target":"days-format-abbr"},"months-standAlone-wide@localeAlias274":{"bundle":"indian","target":"months-format-wide"},"days-standAlone-short@localeAlias283":{"bundle":"gregorian","target":"days-format-abbr"},"dateFormatItem-d":"d","days-format-short@localeAlias279":{"bundle":"gregorian","target":"days-format-wide"},"field-weekday":"Day of the Week","days-standAlone-short@localeAlias284":{"bundle":"gregorian","target":"days-format-wide"},"dayPeriods-format-abbr@localeAlias293":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","dayPeriods-format-abbr@localeAlias294":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"field-sat-relative+1":"next Saturday","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"months-standAlone-abbr@localeAlias272":{"bundle":"indian","target":"months-format-abbr"},"timeFormat-full":"HH:mm:ss zzzz","months-standAlone-abbr@localeAlias273":{"bundle":"indian","target":"months-format-wide"},"dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"G y","eraNarrow@localeAlias296":{"bundle":"indian","target":"eraAbbr"},"field-thu-relative+0":"this Thursday","timeFormat@localeAlias298":{"bundle":"gregorian","target":"timeFormat"},"field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-abbr-noon":"noon","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"G y MMM","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyQQQQ":"G y QQQQ","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","dayPeriods@localeAlias292":{"bundle":"gregorian","target":"dayPeriods"},"field-fri-relative+-1":"last Friday","eraNarrow":["Saka"],"dayPeriods-format-wide-noon":"noon","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","dateTime@localeAlias299":{"bundle":"generic","target":"dateTime"},"field-zone":"Zone","days-format-narrow@localeAlias277":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-EHms":"E HH:mm:ss","field-day-relative+-1":"yesterday","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-era":"Era","days@localeAlias275":{"bundle":"gregorian","target":"days"}},"en-gb":true,"fr":true,"hu":true,"id":true,"ja":true,"nl":true,"pl":true,"pt":true,"ru":true,"sr":true,"sv":true,"th":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/indian",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","dayPeriods-format-wide@localeAlias933":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-sun-narrow-relative+0":"this Sunday","field-sun-narrow-relative+1":"next Sunday","months-format-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","eraNarrow":["Saka"],"field-fri-narrow-relative+1":"next Friday","field-dayOfYear-short@localeAlias965":{"bundle":"","target":"field-dayOfYear"},"field-quarter-narrow@localeAlias951":{"bundle":"","target":"field-quarter-short"},"field-quarter-narrow@localeAlias952":{"bundle":"","target":"field-quarter"},"days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","field-minute-narrow-relative+0":"this minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"days-standAlone-abbr@localeAlias919":{"bundle":"gregorian","target":"days-format-abbr"},"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","dateFormatItem-Ehms":"E h:mm:ss a","field-weekdayOfMonth-narrow@localeAlias972":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-wed-narrow@localeAlias984":{"bundle":"","target":"field-wed-short"},"field-weekdayOfMonth-narrow@localeAlias973":{"bundle":"","target":"field-weekdayOfMonth"},"field-wed-narrow@localeAlias985":{"bundle":"","target":"field-wed"},"field-thu-relative+0":"this Thursday","dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","field-thu-short@localeAlias986":{"bundle":"","target":"field-thu"},"field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","days-standAlone-abbr@localeAlias920":{"bundle":"gregorian","target":"days-format-wide"},"field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","field-weekdayOfMonth-short@localeAlias971":{"bundle":"","target":"field-weekdayOfMonth"},"field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","field-tue-short@localeAlias980":{"bundle":"","target":"field-tue"},"field-week-narrow":"Week","quarters@localeAlias925":{"bundle":"gregorian","target":"quarters"},"field-hour-relative+0":"this hour","field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-day-narrow@localeAlias963":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias964":{"bundle":"","target":"field-day"},"field-minute-narrow":"Minute","dateFormatItem-yyyyMMM":"G y MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","field-era-short":"Era","field-day-narrow-relative+1":"tomorrow","field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","dayPeriods-standAlone-narrow@localeAlias935":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-narrow@localeAlias936":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-month":"Month","months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow":"Day of the Week","eraNames@localeAlias939":{"bundle":"indian","target":"eraAbbr"},"field-sat-narrow@localeAlias993":{"bundle":"","target":"field-sat-short"},"days-format-short@localeAlias917":{"bundle":"gregorian","target":"days-format-abbr"},"field-sat-narrow@localeAlias994":{"bundle":"","target":"field-sat"},"field-year-relative+0":"this year","days-format-short@localeAlias918":{"bundle":"gregorian","target":"days-format-wide"},"field-year-relative+1":"next year","field-minute-short@localeAlias1001":{"bundle":"","target":"field-minute"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","field-year-narrow":"Year","field-year-short@localeAlias947":{"bundle":"","target":"field-year"},"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-second-narrow@localeAlias1005":{"bundle":"","target":"field-second-short"},"field-tue-short-relative+0":"this Tuesday","field-second-narrow@localeAlias1006":{"bundle":"","target":"field-second"},"field-tue-short-relative+1":"next Tuesday","field-mon-short@localeAlias977":{"bundle":"","target":"field-mon"},"dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dayPeriods-format-narrow@localeAlias932":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","field-era-short@localeAlias944":{"bundle":"","target":"field-era"},"dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","field-wed-short-relative+0":"this Wednesday","field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","field-quarter-short-relative+-1":"last quarter","field-year-short-relative+-1":"last year","dateFormatItem-Bhm":"h:mm B","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","dateFormatItem-d":"d","dayPeriods-standAlone-abbr@localeAlias934":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","months-standAlone-abbr@localeAlias911":{"bundle":"indian","target":"months-format-abbr"},"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"timeFormat@localeAlias942":{"bundle":"gregorian","target":"timeFormat"},"months-standAlone-abbr@localeAlias912":{"bundle":"indian","target":"months-format-wide"},"field-weekOfMonth-narrow":"Week Of Month","field-zone-short@localeAlias1007":{"bundle":"","target":"field-zone"},"days-standAlone-wide@localeAlias924":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-yyyyQQQ":"G y QQQ","field-second-short@localeAlias1004":{"bundle":"","target":"field-second"},"dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-y":"G y","quarters-standAlone-wide@localeAlias930":{"bundle":"gregorian","target":"quarters-format-wide"},"field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-narrow-relative+-1":"last Tuesday","dateTime@localeAlias943":{"bundle":"generic","target":"dateTime"},"field-minute-narrow@localeAlias1002":{"bundle":"","target":"field-minute-short"},"field-minute-narrow@localeAlias1003":{"bundle":"","target":"field-minute"},"field-tue-narrow@localeAlias981":{"bundle":"","target":"field-tue-short"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"G y MMM d","field-tue-narrow@localeAlias982":{"bundle":"","target":"field-tue"},"field-sat-relative+-1":"last Saturday","field-wed-short@localeAlias983":{"bundle":"","target":"field-wed"},"dayPeriods-standAlone-narrow-pm":"PM","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","field-second":"Second","field-year-relative+-1":"last year","field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"GGGGG y-MM-dd","eraNames":["Saka"],"field-second-short":"Second","quarters-format-narrow@localeAlias927":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","field-year-narrow@localeAlias948":{"bundle":"","target":"field-year-short"},"eraAbbr":["Saka"],"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","field-year-narrow@localeAlias949":{"bundle":"","target":"field-year"},"dayPeriods-standAlone-wide-pm":"PM","field-hour-short@localeAlias998":{"bundle":"","target":"field-hour"},"dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","field-day-relative+1":"tomorrow","days-standAlone-short@localeAlias921":{"bundle":"gregorian","target":"days-format-short"},"days-standAlone-short@localeAlias922":{"bundle":"gregorian","target":"days-format-abbr"},"field-month-narrow@localeAlias954":{"bundle":"","target":"field-month-short"},"days-standAlone-short@localeAlias923":{"bundle":"gregorian","target":"days-format-wide"},"field-month-narrow@localeAlias955":{"bundle":"","target":"field-month"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-day-short-relative+1":"tomorrow","dateFormat-long":"G y MMMM d","field-weekOfMonth-short@localeAlias959":{"bundle":"","target":"field-weekOfMonth"},"field-sun-narrow-relative+-1":"last Sunday","field-second-relative+0":"now","field-quarter-relative+-1":"last quarter","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-week-relative+-1":"last week","field-sat-short@localeAlias992":{"bundle":"","target":"field-sat"},"days-format-abbr@localeAlias915":{"bundle":"gregorian","target":"days-format-wide"},"field-month-relative+-1":"last month","months-standAlone-wide@localeAlias913":{"bundle":"indian","target":"months-format-wide"},"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"Year","field-era":"Era","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"field-day-short-relative+-1":"yesterday","months-format-abbr@localeAlias909":{"bundle":"indian","target":"months-format-wide"},"dateFormatItem-GyMMM":"G y MMM","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-day-short@localeAlias962":{"bundle":"","target":"field-day"},"field-hour":"Hour","field-month-short@localeAlias953":{"bundle":"","target":"field-month"},"days-format-narrow@localeAlias916":{"bundle":"gregorian","target":"days-standAlone-narrow"},"field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-quarter":"Quarter","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-dayOfYear-narrow@localeAlias966":{"bundle":"","target":"field-dayOfYear-short"},"field-weekday-short@localeAlias968":{"bundle":"","target":"field-weekday"},"field-dayOfYear-narrow@localeAlias967":{"bundle":"","target":"field-dayOfYear"},"field-mon-narrow@localeAlias978":{"bundle":"","target":"field-mon-short"},"field-mon-narrow@localeAlias979":{"bundle":"","target":"field-mon"},"dateFormatItem-yyyy":"G y","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"Day","field-mon-relative+-1":"last Monday","field-sun-narrow@localeAlias975":{"bundle":"","target":"field-sun-short"},"field-sun-narrow@localeAlias976":{"bundle":"","target":"field-sun"},"field-dayOfYear":"Day Of Year","dateFormat-medium":"G y MMM d","dateTimeFormat-short":"{1} {0}","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-MEd":"MM-dd, E","field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","dayPeriods@localeAlias931":{"bundle":"gregorian","target":"dayPeriods"},"field-month-short":"Month","field-hour-narrow@localeAlias1000":{"bundle":"","target":"field-hour"},"dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","dateFormatItem-Bh":"h B","months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekday-narrow@localeAlias969":{"bundle":"","target":"field-weekday-short"},"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","field-month-narrow":"Month","field-week-narrow@localeAlias957":{"bundle":"","target":"field-week-short"},"dayPeriods-format-narrow-am":"AM","field-week-narrow@localeAlias958":{"bundle":"","target":"field-week"},"field-era-narrow@localeAlias945":{"bundle":"","target":"field-era-short"},"field-month-narrow-relative+-1":"last month","field-era-narrow@localeAlias946":{"bundle":"","target":"field-era"},"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekday-short":"Day of the Week","field-weekday-narrow@localeAlias970":{"bundle":"","target":"field-weekday"},"field-zone-narrow@localeAlias1008":{"bundle":"","target":"field-zone-short"},"field-day-narrow-relative+-1":"yesterday","field-zone-narrow@localeAlias1009":{"bundle":"","target":"field-zone"},"field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"Quarter","field-fri-short@localeAlias989":{"bundle":"","target":"field-fri"},"field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","months-format-narrow@localeAlias910":{"bundle":"indian","target":"months-standAlone-narrow"},"field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","field-hour-narrow@localeAlias999":{"bundle":"","target":"field-hour-short"},"field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","timeFormat-medium":"HH:mm:ss","quarters-standAlone-abbr@localeAlias928":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias929":{"bundle":"gregorian","target":"quarters-format-wide"},"field-quarter-short-relative+0":"this quarter","field-quarter-short-relative+1":"next quarter","field-thu-narrow@localeAlias987":{"bundle":"","target":"field-thu-short"},"dateFormatItem-Ed":"d, E","field-thu-narrow@localeAlias988":{"bundle":"","target":"field-thu"},"field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","eraNarrow@localeAlias940":{"bundle":"indian","target":"eraAbbr"},"field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-standAlone-wide-am":"AM","field-dayperiod-narrow@localeAlias996":{"bundle":"","target":"field-dayperiod-short"},"field-dayperiod-narrow@localeAlias997":{"bundle":"","target":"field-dayperiod"},"dayPeriods-standAlone-wide@localeAlias937":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-wide@localeAlias938":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-fri-relative+-1":"last Friday","field-weekOfMonth-narrow@localeAlias960":{"bundle":"","target":"field-weekOfMonth-short"},"field-weekOfMonth-narrow@localeAlias961":{"bundle":"","target":"field-weekOfMonth"},"field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"days@localeAlias914":{"bundle":"gregorian","target":"days"},"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-short":"Day","field-dayperiod":"Dayperiod","field-hour-short":"Hour","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-dayperiod-short@localeAlias995":{"bundle":"","target":"field-dayperiod"},"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","field-week-short@localeAlias956":{"bundle":"","target":"field-week"},"field-week-short-relative+-1":"last week","dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-weekdayOfMonth":"Weekday Of Month","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","quarters-format-abbr@localeAlias926":{"bundle":"gregorian","target":"quarters-format-wide"},"field-quarter-narrow-relative+0":"this quarter","dateFormatItem-GyMMMEd":"G y MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","field-year-narrow-relative+0":"this year","field-year-narrow-relative+1":"next year","dateFormatItem-Gy":"G y","field-fri-narrow@localeAlias990":{"bundle":"","target":"field-fri-short"},"field-zone-narrow":"Zone","field-fri-narrow@localeAlias991":{"bundle":"","target":"field-fri"},"dateFormatItem-yyyyM":"GGGGG y-MM","field-tue-relative+-1":"last Tuesday","field-minute-short":"Minute","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"this week","field-week-relative+1":"next week","dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateFormat@localeAlias941":{"bundle":"generic","target":"dateFormat"},"field-sat-narrow-relative+-1":"last Saturday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-sun-short@localeAlias974":{"bundle":"","target":"field-sun"},"field-quarter-short@localeAlias950":{"bundle":"","target":"field-quarter"},"field-month-short-relative+-1":"last month","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"MMMM d","field-week":"Week","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour"},"cs":true,"da":true,"de":true,"el":true,"en-au":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"id":true,"ja":true,"mk":true,"nb":true,"nl":true,"pl":true,"ro":true,"ru":true,"sk":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/islamic-civil.js b/lib/dojo/cldr/nls/islamic-civil.js
index 90acab830..a1d0de199 100644
--- a/lib/dojo/cldr/nls/islamic-civil.js
+++ b/lib/dojo/cldr/nls/islamic-civil.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/islamic-civil",{root:{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"now","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-MMMEd":"MMM d, E","eraNarrow":["AH"],"field-tue-relative+-1":"last Tuesday","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"G y MMMM d","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormatItem-yyyyQQQ":"G y QQQ","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"MM-dd","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dayPeriods-format-wide-noon":"noon","field-era":"Era","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","field-year":"Year","dateTimeFormats-appendItem-Era":"{1} {0}","field-hour":"Hour","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"today","field-thu-relative+0":"this Thursday","field-day-relative+1":"tomorrow","field-thu-relative+1":"next Thursday","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-H":"HH","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Gy":"G y","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateFormatItem-M":"L","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMM":"G y MMM","dateFormatItem-yyyyMMMd":"G y MMM d","dayPeriods-format-abbr-noon":"noon","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"this Sunday","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"next Sunday","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["AH"],"field-minute":"Minute","field-dayperiod":"Dayperiod","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"yesterday","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"a","dateFormatItem-h":"h a","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"MM-dd, E","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone":"Zone","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-y":"G y","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateTimeFormats-appendItem-Year":"{1} {0}","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"eraNames":["AH"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-month":"Month","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-MMM":"LLL","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-noon":"n","field-second":"Second","field-sat-relative+-1":"last Saturday","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormatItem-Ed":"d, E","field-week":"Week","dateFormat-medium":"G y MMM d","field-week-relative+-1":"last week","field-year-relative+0":"this year","dateFormatItem-yyyyM":"GGGGG y-MM","field-year-relative+1":"next year","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyyyQQQQ":"G y QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"G y MMM","field-mon-relative+-1":"last Monday","dateFormatItem-yyyy":"G y","field-week-relative+0":"this week","field-week-relative+1":"next week"}}); \ No newline at end of file
+define("dojo/cldr/nls/islamic-civil",{root:{"field-quarter-short-relative+0":"this quarter","dateTimeFormats-appendItem-Year":"{1} {0}","field-quarter-short-relative+1":"next quarter","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","field-month-narrow-relative+-1":"last month","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","field-thu-short-relative+0":"this Thursday","field-day-short-relative+-1":"yesterday","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"next Thursday","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-wed-narrow-relative+-1":"last Wednesday","dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"Year","field-era-short":"Era","field-year-narrow-relative+0":"this year","field-tue-relative+0":"this Tuesday","field-year-narrow-relative+1":"next year","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"Weekday Of Month","field-second-short":"Second","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Sunday","timeFormat-medium":"HH:mm:ss","field-mon-short-relative+0":"this Monday","field-sun-narrow-relative+1":"next Sunday","field-mon-short-relative+1":"next Monday","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AH"],"field-weekOfMonth":"Week Of Month","dayPeriods-standAlone-abbr-pm":"PM","field-month-short":"Month","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-dayOfYear-short":"Day Of Year","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","field-sat-short-relative+-1":"last Saturday","field-hour-relative+0":"this hour","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"last Saturday","field-second":"Second","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","field-hour-short-relative+0":"this hour","field-quarter":"Quarter","field-week-short":"Week","field-day-narrow-relative+0":"today","field-day-narrow-relative+1":"tomorrow","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","field-month-short-relative+-1":"last month","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","field-day-narrow":"Day","dateFormatItem-MMM":"LLL","field-minute-short":"Minute","field-dayperiod":"Dayperiod","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","dayPeriods-format-narrow-pm":"PM","dateFormat-medium":"G y MMM d","dateFormatItem-yyyyMMMM":"G y MMMM","eraAbbr":["AH"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-second-narrow":"Second","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-day-narrow-relative+-1":"yesterday","field-year-short":"Year","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"last quarter","dateFormatItem-yyyyMMMd":"G y MMM d","field-dayperiod-narrow":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-dayOfYear":"Day Of Year","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-minute-narrow-relative+0":"this minute","field-hour":"Hour","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"Quarter","field-sat-narrow-relative+0":"this Saturday","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Saturday","field-fri-relative+1":"next Friday","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-sun-short-relative+0":"this Sunday","field-sun-short-relative+1":"next Sunday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last quarter","field-minute-short-relative+0":"this minute","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","timeFormat-long":"HH:mm:ss z","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wednesday","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"last Thursday","field-year-narrow-relative+-1":"last year","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","field-mon-narrow-relative+-1":"last Monday","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-MMMMd":"MMMM d","field-thu-narrow-relative+-1":"last Thursday","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"last Tuesday","dateFormatItem-H":"HH","field-weekOfMonth-short":"Week Of Month","dayPeriods-standAlone-narrow-pm":"PM","dateFormatItem-yyyy":"G y","field-wed-short-relative+0":"this Wednesday","dateFormatItem-M":"L","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"field-wed-short-relative+1":"next Wednesday","field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"now","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"Day of the Week","field-day-short-relative+0":"today","field-day-short-relative+1":"tomorrow","field-sat-relative+0":"this Saturday","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","field-quarter-narrow-relative+1":"next quarter","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-dayOfYear-narrow":"Day Of Year","field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","field-weekdayOfMonth-short":"Weekday Of Month","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","field-zone-narrow":"Zone","dateFormatItem-y":"G y","field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+-1":"last Sunday","field-mon-short-relative+-1":"last Monday","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","quarters-standAlone-narrow":["1","2","3","4"],"field-week":"Week","quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-quarter-narrow-relative+-1":"last quarter","field-year-short-relative+0":"this year","dateFormatItem-yyyyMMM":"G y MMM","field-dayperiod-short":"Dayperiod","field-year-short-relative+1":"next year","field-fri-short-relative+0":"this Friday","field-fri-short-relative+1":"next Friday","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-week-short-relative+-1":"last week","field-hour-narrow-relative+0":"this hour","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-zone-short":"Zone","field-hour-short":"Hour","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-month-narrow":"Month","field-hour-narrow":"Hour","field-fri-narrow-relative+-1":"last Friday","field-year-relative+0":"this year","field-year-relative+1":"next year","field-era-narrow":"Era","field-fri-relative+-1":"last Friday","eraNarrow":["AH"],"dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"last Tuesday","field-minute-narrow":"Minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","dateFormatItem-EHm":"E HH:mm","field-year-short-relative+-1":"last year","field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"Day of the Week","field-quarter-narrow":"Quarter","field-sun-short-relative+-1":"last Sunday","field-day-relative+-1":"yesterday","dayPeriods-standAlone-abbr-am":"AM","field-weekday-short":"Day of the Week","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-week-narrow":"Week","field-era":"Era","field-day-short":"Day","field-fri-narrow-relative+0":"this Friday","field-fri-narrow-relative+1":"next Friday","dayPeriods-standAlone-wide-am":"AM"}}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/islamic-rgsa.js b/lib/dojo/cldr/nls/islamic-rgsa.js
index 0463c2728..e4a3b0a3d 100644
--- a/lib/dojo/cldr/nls/islamic-rgsa.js
+++ b/lib/dojo/cldr/nls/islamic-rgsa.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/islamic-rgsa",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","quarters-standAlone-abbr@localeAlias384":{"bundle":"gregorian","target":"quarters-format-abbr"},"field-wed-relative+1":"next Wednesday","quarters-standAlone-abbr@localeAlias385":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"today","field-day-relative+1":"tomorrow","months-standAlone-wide@localeAlias367":{"bundle":"islamic","target":"months-format-wide"},"days-standAlone-short@localeAlias376":{"bundle":"gregorian","target":"days-format-short"},"field-tue-relative+0":"this Tuesday","quarters-format-abbr@localeAlias382":{"bundle":"gregorian","target":"quarters-format-wide"},"days-standAlone-short@localeAlias377":{"bundle":"gregorian","target":"days-format-abbr"},"field-tue-relative+1":"next Tuesday","days-standAlone-short@localeAlias378":{"bundle":"gregorian","target":"days-format-wide"},"dayPeriods-format-narrow-am":"a","dayPeriods-format-abbr@localeAlias389":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dateFormatItem-MMMd":"MMM d","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","field-second-relative+0":"now","months-standAlone-abbr@localeAlias366":{"bundle":"islamic","target":"months-format-abbr"},"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","days-format-short@localeAlias372":{"bundle":"gregorian","target":"days-format-abbr"},"dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-short@localeAlias373":{"bundle":"gregorian","target":"days-format-wide"},"eraNames":["AH"],"dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","dayPeriods-format-abbr@localeAlias390":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","eraNarrow@localeAlias393":{"bundle":"islamic","target":"eraAbbr"},"dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","timeFormat@localeAlias396":{"bundle":"islamic","target":"timeFormat"},"timeFormat@localeAlias397":{"bundle":"gregorian","target":"timeFormat"},"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","era@localeAlias391":{"bundle":"islamic","target":"era"},"field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","dateFormatItem-MMM":"LLL","dayPeriods@localeAlias387":{"bundle":"islamic","target":"dayPeriods"},"field-dayperiod":"Dayperiod","dayPeriods@localeAlias388":{"bundle":"gregorian","target":"dayPeriods"},"dayPeriods-format-narrow-pm":"p","dateFormat-medium":"G y MMM d","eraAbbr":["AH"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-yyyyMMMd":"G y MMM d","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","days-format-narrow@localeAlias371":{"bundle":"gregorian","target":"days-standAlone-narrow"},"field-hour":"Hour","dateTime@localeAlias398":{"bundle":"islamic","target":"dateTime"},"months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateTime@localeAlias399":{"bundle":"generic","target":"dateTime"},"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","days@localeAlias368":{"bundle":"islamic","target":"days"},"days@localeAlias369":{"bundle":"gregorian","target":"days"},"field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"timeFormat-long":"HH:mm:ss z","dateFormat-short":"GGGGG y-MM-dd","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Era":"{1} {0}","eraNames@localeAlias392":{"bundle":"islamic","target":"eraAbbr"},"dateFormatItem-H":"HH","dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"days-standAlone-wide@localeAlias379":{"bundle":"gregorian","target":"days-format-wide"},"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","days-standAlone-abbr@localeAlias374":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias375":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-d":"d","field-weekday":"Day of the Week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"quarters-format-narrow@localeAlias383":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"quarters@localeAlias380":{"bundle":"islamic","target":"quarters"},"quarters@localeAlias381":{"bundle":"gregorian","target":"quarters"},"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"G y","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-abbr-noon":"noon","months@localeAlias364":{"bundle":"islamic","target":"months"},"dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"days-format-abbr@localeAlias370":{"bundle":"gregorian","target":"days-format-wide"},"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"G y MMM","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyQQQQ":"G y QQQQ","months-format-narrow@localeAlias365":{"bundle":"islamic","target":"months-standAlone-narrow"},"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","eraNarrow":["AH"],"dayPeriods-format-wide-noon":"noon","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormat@localeAlias394":{"bundle":"islamic","target":"dateFormat"},"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateFormat@localeAlias395":{"bundle":"generic","target":"dateFormat"},"dateFormatItem-EHm":"E HH:mm","quarters-standAlone-wide@localeAlias386":{"bundle":"gregorian","target":"quarters-format-wide"},"field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-EHms":"E HH:mm:ss","field-day-relative+-1":"yesterday","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-era":"Era"}}); \ No newline at end of file
+define("dojo/cldr/nls/islamic-rgsa",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-minute-short@localeAlias1314":{"bundle":"","target":"field-minute"},"field-sun-narrow-relative+0":"this Sunday","field-sun-narrow-relative+1":"next Sunday","field-weekOfMonth-short@localeAlias1272":{"bundle":"","target":"field-weekOfMonth"},"months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","eraNarrow":["AH"],"field-fri-narrow-relative+1":"next Friday","days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-second-narrow@localeAlias1318":{"bundle":"","target":"field-second-short"},"dateFormatItem-Ehm":"E h:mm a","field-second-narrow@localeAlias1319":{"bundle":"","target":"field-second"},"days-standAlone-short@localeAlias1228":{"bundle":"gregorian","target":"days-format-short"},"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","days-standAlone-short@localeAlias1229":{"bundle":"gregorian","target":"days-format-abbr"},"field-minute-narrow-relative+0":"this minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","days-standAlone-short@localeAlias1230":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-Ehms":"E h:mm:ss a","field-thu-relative+0":"this Thursday","dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","days-format-narrow@localeAlias1223":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dateFormatItem-Md":"MM-dd","field-week-narrow":"Week","field-hour-relative+0":"this hour","dateTime@localeAlias1255":{"bundle":"islamic","target":"dateTime"},"field-second-short@localeAlias1317":{"bundle":"","target":"field-second"},"dateTime@localeAlias1256":{"bundle":"generic","target":"dateTime"},"field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-minute-narrow":"Minute","field-weekdayOfMonth-narrow@localeAlias1285":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-weekdayOfMonth-narrow@localeAlias1286":{"bundle":"","target":"field-weekdayOfMonth"},"field-zone-short@localeAlias1320":{"bundle":"","target":"field-zone"},"dateFormatItem-yyyyMMM":"G y MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-week-narrow@localeAlias1270":{"bundle":"","target":"field-week-short"},"field-mon-relative+1":"next Monday","field-week-narrow@localeAlias1271":{"bundle":"","target":"field-week"},"dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","field-era-short":"Era","field-day-narrow-relative+1":"tomorrow","field-minute-narrow@localeAlias1315":{"bundle":"","target":"field-minute-short"},"field-sat-narrow-relative+0":"this Saturday","field-minute-narrow@localeAlias1316":{"bundle":"","target":"field-minute"},"timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","timeFormat@localeAlias1253":{"bundle":"islamic","target":"timeFormat"},"timeFormat@localeAlias1254":{"bundle":"gregorian","target":"timeFormat"},"dayPeriods-standAlone-wide@localeAlias1246":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-wide@localeAlias1247":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-sun-narrow@localeAlias1288":{"bundle":"","target":"field-sun-short"},"field-sun-narrow@localeAlias1289":{"bundle":"","target":"field-sun"},"field-month":"Month","field-dayOfYear-narrow@localeAlias1279":{"bundle":"","target":"field-dayOfYear-short"},"months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dayPeriods@localeAlias1239":{"bundle":"islamic","target":"dayPeriods"},"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow":"Day of the Week","quarters-standAlone-wide@localeAlias1238":{"bundle":"gregorian","target":"quarters-format-wide"},"field-year-relative+0":"this year","field-year-relative+1":"next year","field-mon-narrow@localeAlias1291":{"bundle":"","target":"field-mon-short"},"field-mon-narrow@localeAlias1292":{"bundle":"","target":"field-mon"},"field-dayOfYear-narrow@localeAlias1280":{"bundle":"","target":"field-dayOfYear"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods@localeAlias1240":{"bundle":"gregorian","target":"dayPeriods"},"field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","field-year-narrow":"Year","quarters-format-abbr@localeAlias1234":{"bundle":"gregorian","target":"quarters-format-wide"},"field-weekOfMonth-narrow@localeAlias1273":{"bundle":"","target":"field-weekOfMonth-short"},"field-weekOfMonth-narrow@localeAlias1274":{"bundle":"","target":"field-weekOfMonth"},"field-sat-short@localeAlias1305":{"bundle":"","target":"field-sat"},"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-tue-short@localeAlias1293":{"bundle":"","target":"field-tue"},"field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dayPeriods-standAlone-narrow@localeAlias1244":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-narrow@localeAlias1245":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","field-wed-short-relative+0":"this Wednesday","field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","field-quarter-short-relative+-1":"last quarter","field-weekdayOfMonth-short@localeAlias1284":{"bundle":"","target":"field-weekdayOfMonth"},"field-year-short-relative+-1":"last year","dateFormatItem-Bhm":"h:mm B","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-yyyyQQQ":"G y QQQ","field-day-short@localeAlias1275":{"bundle":"","target":"field-day"},"dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-y":"G y","field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-narrow-relative+-1":"last Tuesday","field-era-narrow@localeAlias1258":{"bundle":"","target":"field-era-short"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"G y MMM d","days-format-abbr@localeAlias1222":{"bundle":"gregorian","target":"days-format-wide"},"field-era-narrow@localeAlias1259":{"bundle":"","target":"field-era"},"field-sat-relative+-1":"last Saturday","dayPeriods-standAlone-narrow-pm":"PM","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","quarters-format-narrow@localeAlias1235":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-second":"Second","field-year-relative+-1":"last year","field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"GGGGG y-MM-dd","eraNames":["AH"],"field-second-short":"Second","field-fri-narrow@localeAlias1303":{"bundle":"","target":"field-fri-short"},"field-fri-narrow@localeAlias1304":{"bundle":"","target":"field-fri"},"field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-tue-narrow@localeAlias1294":{"bundle":"","target":"field-tue-short"},"field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","field-tue-narrow@localeAlias1295":{"bundle":"","target":"field-tue"},"dayPeriods-format-wide@localeAlias1242":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"eraAbbr":["AH"],"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-day-short-relative+1":"tomorrow","dateFormat-long":"G y MMMM d","field-sun-narrow-relative+-1":"last Sunday","field-hour-narrow@localeAlias1312":{"bundle":"","target":"field-hour-short"},"field-hour-narrow@localeAlias1313":{"bundle":"","target":"field-hour"},"field-second-relative+0":"now","field-day-narrow@localeAlias1276":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias1277":{"bundle":"","target":"field-day"},"field-quarter-relative+-1":"last quarter","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-standAlone-abbr@localeAlias1243":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"eraNarrow@localeAlias1250":{"bundle":"islamic","target":"eraAbbr"},"field-week-relative+-1":"last week","field-month-relative+-1":"last month","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-short@localeAlias1290":{"bundle":"","target":"field-mon"},"field-sun-short@localeAlias1287":{"bundle":"","target":"field-sun"},"field-year":"Year","field-era":"Era","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"field-hour-short@localeAlias1311":{"bundle":"","target":"field-hour"},"quarters-standAlone-abbr@localeAlias1236":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias1237":{"bundle":"gregorian","target":"quarters-format-wide"},"field-day-short-relative+-1":"yesterday","dateFormatItem-GyMMM":"G y MMM","timeFormat-full":"HH:mm:ss zzzz","field-dayperiod-short@localeAlias1308":{"bundle":"","target":"field-dayperiod"},"dateFormatItem-Bhms":"h:mm:ss B","days-standAlone-wide@localeAlias1231":{"bundle":"gregorian","target":"days-format-wide"},"field-hour":"Hour","field-zone-narrow@localeAlias1321":{"bundle":"","target":"field-zone-short"},"field-zone-narrow@localeAlias1322":{"bundle":"","target":"field-zone"},"field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-quarter":"Quarter","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","dateFormat@localeAlias1251":{"bundle":"islamic","target":"dateFormat"},"dateFormat@localeAlias1252":{"bundle":"generic","target":"dateFormat"},"dateFormatItem-yyyy":"G y","field-sat-narrow@localeAlias1306":{"bundle":"","target":"field-sat-short"},"field-sat-narrow@localeAlias1307":{"bundle":"","target":"field-sat"},"field-thu-narrow@localeAlias1300":{"bundle":"","target":"field-thu-short"},"field-thu-narrow@localeAlias1301":{"bundle":"","target":"field-thu"},"dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","months-standAlone-wide@localeAlias1219":{"bundle":"islamic","target":"months-format-wide"},"field-day":"Day","field-week-short@localeAlias1269":{"bundle":"","target":"field-week"},"dayPeriods-format-narrow@localeAlias1241":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-mon-relative+-1":"last Monday","field-weekday-narrow@localeAlias1282":{"bundle":"","target":"field-weekday-short"},"field-weekday-narrow@localeAlias1283":{"bundle":"","target":"field-weekday"},"field-dayOfYear":"Day Of Year","field-year-short@localeAlias1260":{"bundle":"","target":"field-year"},"dateFormat-medium":"G y MMM d","dateTimeFormat-short":"{1} {0}","era@localeAlias1248":{"bundle":"islamic","target":"era"},"field-month-short@localeAlias1266":{"bundle":"","target":"field-month"},"field-fri-short@localeAlias1302":{"bundle":"","target":"field-fri"},"dateFormatItem-GyMMMd":"G y MMM d","days@localeAlias1220":{"bundle":"islamic","target":"days"},"dateFormatItem-MEd":"MM-dd, E","days@localeAlias1221":{"bundle":"gregorian","target":"days"},"quarters@localeAlias1232":{"bundle":"islamic","target":"quarters"},"field-tue-short-relative+-1":"last Tuesday","quarters@localeAlias1233":{"bundle":"gregorian","target":"quarters"},"field-dayperiod-narrow@localeAlias1309":{"bundle":"","target":"field-dayperiod-short"},"field-year-short":"Year","field-month-short":"Month","dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","dateFormatItem-Bh":"h B","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-dayperiod-narrow@localeAlias1310":{"bundle":"","target":"field-dayperiod"},"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","field-month-narrow":"Month","dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"last month","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekday-short":"Day of the Week","field-day-narrow-relative+-1":"yesterday","eraNames@localeAlias1249":{"bundle":"islamic","target":"eraAbbr"},"field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months@localeAlias1216":{"bundle":"islamic","target":"months"},"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-narrow@localeAlias1264":{"bundle":"","target":"field-quarter-short"},"field-quarter-narrow@localeAlias1265":{"bundle":"","target":"field-quarter"},"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"Quarter","field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-month-narrow@localeAlias1267":{"bundle":"","target":"field-month-short"},"field-week-narrow-relative+-1":"last week","field-month-narrow@localeAlias1268":{"bundle":"","target":"field-month"},"days-format-short@localeAlias1224":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias1225":{"bundle":"gregorian","target":"days-format-wide"},"field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"this quarter","field-quarter-short-relative+1":"next quarter","dateFormatItem-Ed":"d, E","field-dayOfYear-short@localeAlias1278":{"bundle":"","target":"field-dayOfYear"},"field-year-narrow@localeAlias1261":{"bundle":"","target":"field-year-short"},"field-wed-relative+-1":"last Wednesday","field-year-narrow@localeAlias1262":{"bundle":"","target":"field-year"},"field-weekOfMonth":"Week Of Month","field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-standAlone-wide-am":"AM","field-fri-relative+-1":"last Friday","field-wed-narrow@localeAlias1297":{"bundle":"","target":"field-wed-short"},"field-wed-narrow@localeAlias1298":{"bundle":"","target":"field-wed"},"field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-short":"Day","field-dayperiod":"Dayperiod","field-hour-short":"Hour","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","months-format-narrow@localeAlias1217":{"bundle":"islamic","target":"months-standAlone-narrow"},"field-week-short-relative+-1":"last week","dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-weekdayOfMonth":"Weekday Of Month","days-standAlone-abbr@localeAlias1226":{"bundle":"gregorian","target":"days-format-abbr"},"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","days-standAlone-abbr@localeAlias1227":{"bundle":"gregorian","target":"days-format-wide"},"field-quarter-narrow-relative+0":"this quarter","dateFormatItem-GyMMMEd":"G y MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","field-year-narrow-relative+0":"this year","field-year-narrow-relative+1":"next year","dateFormatItem-Gy":"G y","field-zone-narrow":"Zone","dateFormatItem-yyyyM":"GGGGG y-MM","field-tue-relative+-1":"last Tuesday","field-minute-short":"Minute","field-era-short@localeAlias1257":{"bundle":"","target":"field-era"},"dateFormatItem-Hm":"HH:mm","field-week-relative+0":"this week","field-quarter-short@localeAlias1263":{"bundle":"","target":"field-quarter"},"field-week-relative+1":"next week","field-weekday-short@localeAlias1281":{"bundle":"","target":"field-weekday"},"dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","field-sat-narrow-relative+-1":"last Saturday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","months-standAlone-abbr@localeAlias1218":{"bundle":"islamic","target":"months-format-abbr"},"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-wed-short@localeAlias1296":{"bundle":"","target":"field-wed"},"field-month-short-relative+-1":"last month","field-thu-short@localeAlias1299":{"bundle":"","target":"field-thu"},"dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"MMMM d","field-week":"Week","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour"}}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/islamic-tbla.js b/lib/dojo/cldr/nls/islamic-tbla.js
index 2108d887b..54cd8df93 100644
--- a/lib/dojo/cldr/nls/islamic-tbla.js
+++ b/lib/dojo/cldr/nls/islamic-tbla.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/islamic-tbla",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","quarters-standAlone-abbr@localeAlias420":{"bundle":"gregorian","target":"quarters-format-abbr"},"field-minute":"Minute","quarters-standAlone-abbr@localeAlias421":{"bundle":"gregorian","target":"quarters-format-wide"},"quarters-format-abbr@localeAlias418":{"bundle":"gregorian","target":"quarters-format-wide"},"dateTimeFormat-short":"{1} {0}","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods-format-narrow-am":"a","months-standAlone-wide@localeAlias403":{"bundle":"islamic","target":"months-format-wide"},"days-standAlone-short@localeAlias412":{"bundle":"gregorian","target":"days-format-short"},"days-format-short@localeAlias408":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-short@localeAlias413":{"bundle":"gregorian","target":"days-format-abbr"},"dateFormatItem-MMMd":"MMM d","days-format-short@localeAlias409":{"bundle":"gregorian","target":"days-format-wide"},"days-standAlone-short@localeAlias414":{"bundle":"gregorian","target":"days-format-wide"},"dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","dayPeriods-format-abbr@localeAlias425":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dayPeriods-format-abbr@localeAlias426":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AH"],"months-standAlone-abbr@localeAlias402":{"bundle":"islamic","target":"months-format-abbr"},"dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","eraNarrow@localeAlias429":{"bundle":"islamic","target":"eraAbbr"},"field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","era@localeAlias427":{"bundle":"islamic","target":"era"},"timeFormat@localeAlias432":{"bundle":"islamic","target":"timeFormat"},"timeFormat@localeAlias433":{"bundle":"gregorian","target":"timeFormat"},"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","dateFormatItem-MMM":"LLL","field-dayperiod":"Dayperiod","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"G y MMM d","dayPeriods@localeAlias423":{"bundle":"islamic","target":"dayPeriods"},"dayPeriods@localeAlias424":{"bundle":"gregorian","target":"dayPeriods"},"eraAbbr":["AH"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-narrow@localeAlias407":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dateFormatItem-yyyyMMMd":"G y MMM d","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-hour":"Hour","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateTime@localeAlias434":{"bundle":"islamic","target":"dateTime"},"dateTime@localeAlias435":{"bundle":"generic","target":"dateTime"},"dateFormatItem-Hms":"HH:mm:ss","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","days@localeAlias404":{"bundle":"islamic","target":"days"},"days@localeAlias405":{"bundle":"gregorian","target":"days"},"dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"timeFormat-long":"HH:mm:ss z","eraNames@localeAlias428":{"bundle":"islamic","target":"eraAbbr"},"dateFormat-short":"GGGGG y-MM-dd","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-H":"HH","dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","days-standAlone-wide@localeAlias415":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-hm":"h:mm a","quarters-format-narrow@localeAlias419":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"quarters@localeAlias416":{"bundle":"islamic","target":"quarters"},"quarters@localeAlias417":{"bundle":"gregorian","target":"quarters"},"days-standAlone-abbr@localeAlias410":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias411":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-d":"d","field-weekday":"Day of the Week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"G y","days-format-abbr@localeAlias406":{"bundle":"gregorian","target":"days-format-wide"},"field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-abbr-noon":"noon","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","months@localeAlias400":{"bundle":"islamic","target":"months"},"field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"G y MMM","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyQQQQ":"G y QQQQ","months-format-narrow@localeAlias401":{"bundle":"islamic","target":"months-standAlone-narrow"},"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","eraNarrow":["AH"],"dayPeriods-format-wide-noon":"noon","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","dateFormat@localeAlias430":{"bundle":"islamic","target":"dateFormat"},"dateFormat@localeAlias431":{"bundle":"generic","target":"dateFormat"},"field-zone":"Zone","quarters-standAlone-wide@localeAlias422":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-EHms":"E HH:mm:ss","field-day-relative+-1":"yesterday","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-era":"Era"}}); \ No newline at end of file
+define("dojo/cldr/nls/islamic-tbla",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+0":"this Sunday","field-sun-narrow-relative+1":"next Sunday","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","eraNarrow":["AH"],"field-fri-narrow-relative+1":"next Friday","eraNames@localeAlias1356":{"bundle":"islamic","target":"eraAbbr"},"months@localeAlias1323":{"bundle":"islamic","target":"months"},"field-quarter-narrow@localeAlias1371":{"bundle":"","target":"field-quarter-short"},"field-quarter-narrow@localeAlias1372":{"bundle":"","target":"field-quarter"},"days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","field-month-narrow@localeAlias1374":{"bundle":"","target":"field-month-short"},"field-month-narrow@localeAlias1375":{"bundle":"","target":"field-month"},"field-year-narrow@localeAlias1368":{"bundle":"","target":"field-year-short"},"field-minute-narrow-relative+0":"this minute","field-year-narrow@localeAlias1369":{"bundle":"","target":"field-year"},"days-format-short@localeAlias1331":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias1332":{"bundle":"gregorian","target":"days-format-wide"},"days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","field-dayOfYear-short@localeAlias1385":{"bundle":"","target":"field-dayOfYear"},"dateFormatItem-Ehms":"E h:mm:ss a","field-thu-relative+0":"this Thursday","dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","field-week-narrow":"Week","field-wed-short@localeAlias1403":{"bundle":"","target":"field-wed"},"field-hour-relative+0":"this hour","field-thu-short@localeAlias1406":{"bundle":"","target":"field-thu"},"field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-minute-narrow":"Minute","dateFormatItem-yyyyMMM":"G y MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","months-format-narrow@localeAlias1324":{"bundle":"islamic","target":"months-standAlone-narrow"},"field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","field-era-short":"Era","field-day-narrow-relative+1":"tomorrow","field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","days-standAlone-abbr@localeAlias1333":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias1334":{"bundle":"gregorian","target":"days-format-wide"},"field-month":"Month","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow":"Day of the Week","field-year-relative+0":"this year","field-weekday-short@localeAlias1388":{"bundle":"","target":"field-weekday"},"field-year-relative+1":"next year","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-era-short@localeAlias1364":{"bundle":"","target":"field-era"},"field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","field-quarter-short@localeAlias1370":{"bundle":"","target":"field-quarter"},"field-year-narrow":"Year","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","months-standAlone-abbr@localeAlias1325":{"bundle":"islamic","target":"months-format-abbr"},"dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","field-wed-short-relative+0":"this Wednesday","field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","field-weekOfMonth-short@localeAlias1379":{"bundle":"","target":"field-weekOfMonth"},"field-quarter-short-relative+-1":"last quarter","field-year-short-relative+-1":"last year","dateFormatItem-Bhm":"h:mm B","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","field-minute-short@localeAlias1421":{"bundle":"","target":"field-minute"},"dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-yyyyQQQ":"G y QQQ","dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-y":"G y","field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-second-narrow@localeAlias1425":{"bundle":"","target":"field-second-short"},"field-tue-narrow-relative+-1":"last Tuesday","field-second-narrow@localeAlias1426":{"bundle":"","target":"field-second"},"days-standAlone-short@localeAlias1335":{"bundle":"gregorian","target":"days-format-short"},"days-standAlone-short@localeAlias1336":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-short@localeAlias1337":{"bundle":"gregorian","target":"days-format-wide"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"G y MMM d","field-sat-relative+-1":"last Saturday","dayPeriods-standAlone-narrow-pm":"PM","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","field-tue-short@localeAlias1400":{"bundle":"","target":"field-tue"},"field-second":"Second","field-year-relative+-1":"last year","field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"GGGGG y-MM-dd","eraNames":["AH"],"field-second-short":"Second","field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-zone-short@localeAlias1427":{"bundle":"","target":"field-zone"},"days-format-narrow@localeAlias1330":{"bundle":"gregorian","target":"days-standAlone-narrow"},"field-dayperiod-narrow":"Dayperiod","field-week-narrow@localeAlias1377":{"bundle":"","target":"field-week-short"},"field-sun-short-relative+-1":"last Sunday","field-week-narrow@localeAlias1378":{"bundle":"","target":"field-week"},"eraAbbr":["AH"],"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","dateTime@localeAlias1362":{"bundle":"islamic","target":"dateTime"},"field-second-short@localeAlias1424":{"bundle":"","target":"field-second"},"dateTime@localeAlias1363":{"bundle":"generic","target":"dateTime"},"dayPeriods-standAlone-wide-pm":"PM","field-weekdayOfMonth-narrow@localeAlias1392":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-weekdayOfMonth-narrow@localeAlias1393":{"bundle":"","target":"field-weekdayOfMonth"},"dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-minute-narrow@localeAlias1422":{"bundle":"","target":"field-minute-short"},"field-minute-narrow@localeAlias1423":{"bundle":"","target":"field-minute"},"timeFormat@localeAlias1360":{"bundle":"islamic","target":"timeFormat"},"timeFormat@localeAlias1361":{"bundle":"gregorian","target":"timeFormat"},"dayPeriods-standAlone-wide@localeAlias1353":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-wide@localeAlias1354":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-day-short-relative+1":"tomorrow","dateFormat-long":"G y MMMM d","field-sun-narrow-relative+-1":"last Sunday","field-mon-narrow@localeAlias1398":{"bundle":"","target":"field-mon-short"},"field-mon-narrow@localeAlias1399":{"bundle":"","target":"field-mon"},"field-sun-narrow@localeAlias1395":{"bundle":"","target":"field-sun-short"},"field-sun-narrow@localeAlias1396":{"bundle":"","target":"field-sun"},"field-dayOfYear-narrow@localeAlias1386":{"bundle":"","target":"field-dayOfYear-short"},"field-dayOfYear-narrow@localeAlias1387":{"bundle":"","target":"field-dayOfYear"},"dayPeriods@localeAlias1346":{"bundle":"islamic","target":"dayPeriods"},"dayPeriods@localeAlias1347":{"bundle":"gregorian","target":"dayPeriods"},"field-second-relative+0":"now","quarters-standAlone-wide@localeAlias1345":{"bundle":"gregorian","target":"quarters-format-wide"},"field-quarter-relative+-1":"last quarter","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-week-relative+-1":"last week","field-month-relative+-1":"last month","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-format-abbr@localeAlias1341":{"bundle":"gregorian","target":"quarters-format-wide"},"field-weekOfMonth-narrow@localeAlias1380":{"bundle":"","target":"field-weekOfMonth-short"},"field-weekOfMonth-narrow@localeAlias1381":{"bundle":"","target":"field-weekOfMonth"},"field-year":"Year","field-sat-short@localeAlias1412":{"bundle":"","target":"field-sat"},"field-era":"Era","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"field-tue-narrow@localeAlias1401":{"bundle":"","target":"field-tue-short"},"field-tue-narrow@localeAlias1402":{"bundle":"","target":"field-tue"},"field-day-short-relative+-1":"yesterday","dayPeriods-standAlone-narrow@localeAlias1351":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-narrow@localeAlias1352":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dateFormatItem-GyMMM":"G y MMM","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"Hour","field-weekdayOfMonth-short@localeAlias1391":{"bundle":"","target":"field-weekdayOfMonth"},"field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-quarter":"Quarter","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","dateFormatItem-yyyy":"G y","field-day-short@localeAlias1382":{"bundle":"","target":"field-day"},"days-format-abbr@localeAlias1329":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"Day","field-mon-relative+-1":"last Monday","field-dayOfYear":"Day Of Year","dateFormat-medium":"G y MMM d","dateTimeFormat-short":"{1} {0}","field-era-narrow@localeAlias1365":{"bundle":"","target":"field-era-short"},"field-era-narrow@localeAlias1366":{"bundle":"","target":"field-era"},"dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-MEd":"MM-dd, E","field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","field-month-short":"Month","dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","quarters-format-narrow@localeAlias1342":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"dayPeriods-format-wide@localeAlias1349":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dateFormatItem-Bh":"h B","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-fri-narrow@localeAlias1410":{"bundle":"","target":"field-fri-short"},"field-fri-narrow@localeAlias1411":{"bundle":"","target":"field-fri"},"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","field-month-narrow":"Month","dayPeriods-format-narrow-am":"AM","field-hour-narrow@localeAlias1419":{"bundle":"","target":"field-hour-short"},"field-month-narrow-relative+-1":"last month","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-weekday-short":"Day of the Week","field-day-narrow-relative+-1":"yesterday","field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-hour-narrow@localeAlias1420":{"bundle":"","target":"field-hour"},"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"Quarter","field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","eraNarrow@localeAlias1357":{"bundle":"islamic","target":"eraAbbr"},"field-week-narrow-relative+-1":"last week","field-day-narrow@localeAlias1383":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias1384":{"bundle":"","target":"field-day"},"field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","timeFormat-medium":"HH:mm:ss","field-mon-short@localeAlias1397":{"bundle":"","target":"field-mon"},"field-quarter-short-relative+0":"this quarter","field-quarter-short-relative+1":"next quarter","dateFormatItem-Ed":"d, E","dayPeriods-standAlone-abbr@localeAlias1350":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","field-hour-short@localeAlias1418":{"bundle":"","target":"field-hour"},"field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-standAlone-wide-am":"AM","field-sun-short@localeAlias1394":{"bundle":"","target":"field-sun"},"field-fri-relative+-1":"last Friday","field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"days-standAlone-wide@localeAlias1338":{"bundle":"gregorian","target":"days-format-wide"},"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"quarters-standAlone-abbr@localeAlias1343":{"bundle":"gregorian","target":"quarters-format-abbr"},"field-zone-narrow@localeAlias1428":{"bundle":"","target":"field-zone-short"},"quarters-standAlone-abbr@localeAlias1344":{"bundle":"gregorian","target":"quarters-format-wide"},"field-zone-narrow@localeAlias1429":{"bundle":"","target":"field-zone"},"field-day-short":"Day","field-dayperiod":"Dayperiod","field-hour-short":"Hour","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-month-relative+0":"this month","field-dayperiod-short@localeAlias1415":{"bundle":"","target":"field-dayperiod"},"field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","field-week-short-relative+-1":"last week","dateTimeFormat-long":"{1} {0}","dateFormat@localeAlias1358":{"bundle":"islamic","target":"dateFormat"},"dateFormat@localeAlias1359":{"bundle":"generic","target":"dateFormat"},"field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-weekdayOfMonth":"Weekday Of Month","field-thu-narrow@localeAlias1407":{"bundle":"","target":"field-thu-short"},"field-thu-narrow@localeAlias1408":{"bundle":"","target":"field-thu"},"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-quarter-narrow-relative+0":"this quarter","dayPeriods-format-narrow@localeAlias1348":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dateFormatItem-GyMMMEd":"G y MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","field-weekday-narrow@localeAlias1389":{"bundle":"","target":"field-weekday-short"},"field-year-narrow-relative+0":"this year","field-year-short@localeAlias1367":{"bundle":"","target":"field-year"},"field-year-narrow-relative+1":"next year","field-sat-narrow@localeAlias1413":{"bundle":"","target":"field-sat-short"},"field-sat-narrow@localeAlias1414":{"bundle":"","target":"field-sat"},"dateFormatItem-Gy":"G y","field-zone-narrow":"Zone","field-fri-short@localeAlias1409":{"bundle":"","target":"field-fri"},"field-week-short@localeAlias1376":{"bundle":"","target":"field-week"},"months-standAlone-wide@localeAlias1326":{"bundle":"islamic","target":"months-format-wide"},"dateFormatItem-yyyyM":"GGGGG y-MM","days@localeAlias1327":{"bundle":"islamic","target":"days"},"field-tue-relative+-1":"last Tuesday","days@localeAlias1328":{"bundle":"gregorian","target":"days"},"quarters@localeAlias1339":{"bundle":"islamic","target":"quarters"},"field-minute-short":"Minute","field-weekday-narrow@localeAlias1390":{"bundle":"","target":"field-weekday"},"dateFormatItem-Hm":"HH:mm","era@localeAlias1355":{"bundle":"islamic","target":"era"},"field-week-relative+0":"this week","field-week-relative+1":"next week","field-month-short@localeAlias1373":{"bundle":"","target":"field-month"},"quarters@localeAlias1340":{"bundle":"gregorian","target":"quarters"},"dateFormatItem-MMM":"LLL","field-dayperiod-narrow@localeAlias1416":{"bundle":"","target":"field-dayperiod-short"},"field-sun-relative+0":"this Sunday","field-dayperiod-narrow@localeAlias1417":{"bundle":"","target":"field-dayperiod"},"field-sun-relative+1":"next Sunday","field-wed-narrow@localeAlias1404":{"bundle":"","target":"field-wed-short"},"field-wed-narrow@localeAlias1405":{"bundle":"","target":"field-wed"},"field-sat-narrow-relative+-1":"last Saturday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-month-short-relative+-1":"last month","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"MMMM d","field-week":"Week","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour"}}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/islamic-umalqura.js b/lib/dojo/cldr/nls/islamic-umalqura.js
index 3783ed3d8..dd2e12ebd 100644
--- a/lib/dojo/cldr/nls/islamic-umalqura.js
+++ b/lib/dojo/cldr/nls/islamic-umalqura.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/islamic-umalqura",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","months@localeAlias436":{"bundle":"islamic","target":"months"},"field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","days-format-abbr@localeAlias442":{"bundle":"gregorian","target":"days-format-wide"},"field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"today","field-day-relative+1":"tomorrow","months-format-narrow@localeAlias437":{"bundle":"islamic","target":"months-standAlone-narrow"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AH"],"dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormat@localeAlias466":{"bundle":"islamic","target":"dateFormat"},"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","dateFormat@localeAlias467":{"bundle":"generic","target":"dateFormat"},"field-year-relative+-1":"last year","quarters-standAlone-wide@localeAlias458":{"bundle":"gregorian","target":"quarters-format-wide"},"dayPeriods-format-wide-am":"AM","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","dateFormatItem-MMM":"LLL","field-dayperiod":"Dayperiod","quarters-standAlone-abbr@localeAlias456":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias457":{"bundle":"gregorian","target":"quarters-format-wide"},"dayPeriods-format-narrow-pm":"p","dateFormat-medium":"G y MMM d","eraAbbr":["AH"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-standAlone-wide@localeAlias439":{"bundle":"islamic","target":"months-format-wide"},"days-standAlone-short@localeAlias448":{"bundle":"gregorian","target":"days-format-short"},"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"quarters-format-abbr@localeAlias454":{"bundle":"gregorian","target":"quarters-format-wide"},"days-standAlone-short@localeAlias449":{"bundle":"gregorian","target":"days-format-abbr"},"dateFormatItem-yyyyMMMd":"G y MMM d","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","months-standAlone-abbr@localeAlias438":{"bundle":"islamic","target":"months-format-abbr"},"dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-hour":"Hour","days-format-short@localeAlias444":{"bundle":"gregorian","target":"days-format-abbr"},"months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"days-format-short@localeAlias445":{"bundle":"gregorian","target":"days-format-wide"},"days-standAlone-short@localeAlias450":{"bundle":"gregorian","target":"days-format-wide"},"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dayPeriods-format-abbr@localeAlias461":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dateFormatItem-Hms":"HH:mm:ss","dayPeriods-format-abbr@localeAlias462":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","eraNarrow@localeAlias465":{"bundle":"islamic","target":"eraAbbr"},"dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"timeFormat-long":"HH:mm:ss z","timeFormat@localeAlias468":{"bundle":"islamic","target":"timeFormat"},"timeFormat@localeAlias469":{"bundle":"gregorian","target":"timeFormat"},"dateFormat-short":"GGGGG y-MM-dd","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","era@localeAlias463":{"bundle":"islamic","target":"era"},"dateTimeFormats-appendItem-Era":"{1} {0}","dayPeriods@localeAlias459":{"bundle":"islamic","target":"dayPeriods"},"dateFormatItem-H":"HH","dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","dayPeriods@localeAlias460":{"bundle":"gregorian","target":"dayPeriods"},"dateFormatItem-d":"d","field-weekday":"Day of the Week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"days-format-narrow@localeAlias443":{"bundle":"gregorian","target":"days-standAlone-narrow"},"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"G y","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-abbr-noon":"noon","dateTime@localeAlias470":{"bundle":"islamic","target":"dateTime"},"dateTime@localeAlias471":{"bundle":"generic","target":"dateTime"},"dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","days@localeAlias440":{"bundle":"islamic","target":"days"},"days@localeAlias441":{"bundle":"gregorian","target":"days"},"dateFormatItem-yyyyMMM":"G y MMM","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyQQQQ":"G y QQQQ","eraNames@localeAlias464":{"bundle":"islamic","target":"eraAbbr"},"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","eraNarrow":["AH"],"dayPeriods-format-wide-noon":"noon","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","days-standAlone-abbr@localeAlias446":{"bundle":"gregorian","target":"days-format-abbr"},"field-zone":"Zone","days-standAlone-abbr@localeAlias447":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-EHms":"E HH:mm:ss","days-standAlone-wide@localeAlias451":{"bundle":"gregorian","target":"days-format-wide"},"field-day-relative+-1":"yesterday","quarters-format-narrow@localeAlias455":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"quarters@localeAlias452":{"bundle":"islamic","target":"quarters"},"days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters@localeAlias453":{"bundle":"gregorian","target":"quarters"},"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-era":"Era"}}); \ No newline at end of file
+define("dojo/cldr/nls/islamic-umalqura",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+0":"this Sunday","field-sun-narrow-relative+1":"next Sunday","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"field-hour-narrow@localeAlias1526":{"bundle":"","target":"field-hour-short"},"dayPeriods-standAlone-abbr-pm":"PM","field-hour-narrow@localeAlias1527":{"bundle":"","target":"field-hour"},"dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","eraNarrow":["AH"],"field-fri-narrow-relative+1":"next Friday","days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","dayPeriods-standAlone-abbr@localeAlias1457":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"eraNarrow@localeAlias1464":{"bundle":"islamic","target":"eraAbbr"},"field-minute-narrow-relative+0":"this minute","field-day-narrow@localeAlias1490":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias1491":{"bundle":"","target":"field-day"},"days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","dateFormatItem-Ehms":"E h:mm:ss a","field-hour-short@localeAlias1525":{"bundle":"","target":"field-hour"},"field-thu-relative+0":"this Thursday","dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","days-standAlone-wide@localeAlias1445":{"bundle":"gregorian","target":"days-format-wide"},"field-week-narrow":"Week","quarters-standAlone-abbr@localeAlias1450":{"bundle":"gregorian","target":"quarters-format-abbr"},"field-zone-narrow@localeAlias1535":{"bundle":"","target":"field-zone-short"},"quarters-standAlone-abbr@localeAlias1451":{"bundle":"gregorian","target":"quarters-format-wide"},"field-zone-narrow@localeAlias1536":{"bundle":"","target":"field-zone"},"field-hour-relative+0":"this hour","field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-minute-narrow":"Minute","field-dayperiod-short@localeAlias1522":{"bundle":"","target":"field-dayperiod"},"dateFormatItem-yyyyMMM":"G y MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","field-era-short":"Era","dateFormat@localeAlias1465":{"bundle":"islamic","target":"dateFormat"},"field-day-narrow-relative+1":"tomorrow","dateFormat@localeAlias1466":{"bundle":"generic","target":"dateFormat"},"field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-thu-narrow@localeAlias1514":{"bundle":"","target":"field-thu-short"},"field-thu-narrow@localeAlias1515":{"bundle":"","target":"field-thu"},"field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","dayPeriods-format-narrow@localeAlias1455":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-month":"Month","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"field-weekday-narrow@localeAlias1496":{"bundle":"","target":"field-weekday-short"},"field-weekday-narrow@localeAlias1497":{"bundle":"","target":"field-weekday"},"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-year-short@localeAlias1474":{"bundle":"","target":"field-year"},"field-sat-narrow@localeAlias1520":{"bundle":"","target":"field-sat-short"},"field-weekday-narrow":"Day of the Week","field-sat-narrow@localeAlias1521":{"bundle":"","target":"field-sat"},"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-short@localeAlias1516":{"bundle":"","target":"field-fri"},"months-standAlone-wide@localeAlias1433":{"bundle":"islamic","target":"months-format-wide"},"field-week-short@localeAlias1483":{"bundle":"","target":"field-week"},"days@localeAlias1434":{"bundle":"islamic","target":"days"},"days@localeAlias1435":{"bundle":"gregorian","target":"days"},"quarters@localeAlias1446":{"bundle":"islamic","target":"quarters"},"quarters@localeAlias1447":{"bundle":"gregorian","target":"quarters"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","era@localeAlias1462":{"bundle":"islamic","target":"era"},"field-year-narrow":"Year","field-month-short@localeAlias1480":{"bundle":"","target":"field-month"},"field-dayperiod-narrow@localeAlias1523":{"bundle":"","target":"field-dayperiod-short"},"field-dayperiod-narrow@localeAlias1524":{"bundle":"","target":"field-dayperiod"},"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","field-wed-narrow@localeAlias1511":{"bundle":"","target":"field-wed-short"},"dateTimeFormats-appendItem-Year":"{1} {0}","field-wed-narrow@localeAlias1512":{"bundle":"","target":"field-wed"},"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","field-wed-short-relative+0":"this Wednesday","field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","field-quarter-short-relative+-1":"last quarter","field-year-short-relative+-1":"last year","dateFormatItem-Bhm":"h:mm B","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","dateFormatItem-d":"d","field-quarter-narrow@localeAlias1478":{"bundle":"","target":"field-quarter-short"},"dayPeriods-format-abbr-pm":"PM","field-quarter-narrow@localeAlias1479":{"bundle":"","target":"field-quarter"},"dateFormatItem-h":"h a","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-yyyyQQQ":"G y QQQ","eraNames@localeAlias1463":{"bundle":"islamic","target":"eraAbbr"},"days-format-short@localeAlias1438":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias1439":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-y":"G y","months@localeAlias1430":{"bundle":"islamic","target":"months"},"field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-narrow-relative+-1":"last Tuesday","field-month-narrow@localeAlias1481":{"bundle":"","target":"field-month-short"},"field-year-narrow@localeAlias1475":{"bundle":"","target":"field-year-short"},"field-month-narrow@localeAlias1482":{"bundle":"","target":"field-month"},"field-year-narrow@localeAlias1476":{"bundle":"","target":"field-year"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"G y MMM d","field-sat-relative+-1":"last Saturday","field-dayOfYear-short@localeAlias1492":{"bundle":"","target":"field-dayOfYear"},"dayPeriods-standAlone-narrow-pm":"PM","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","field-second":"Second","field-year-relative+-1":"last year","field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"GGGGG y-MM-dd","eraNames":["AH"],"field-second-short":"Second","field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","eraAbbr":["AH"],"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","field-wed-short@localeAlias1510":{"bundle":"","target":"field-wed"},"field-thu-short@localeAlias1513":{"bundle":"","target":"field-thu"},"dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","field-day-relative+1":"tomorrow","months-format-narrow@localeAlias1431":{"bundle":"islamic","target":"months-standAlone-narrow"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-day-short-relative+1":"tomorrow","dateFormat-long":"G y MMMM d","field-sun-narrow-relative+-1":"last Sunday","days-standAlone-abbr@localeAlias1440":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias1441":{"bundle":"gregorian","target":"days-format-wide"},"field-second-relative+0":"now","field-quarter-short@localeAlias1477":{"bundle":"","target":"field-quarter"},"field-weekday-short@localeAlias1495":{"bundle":"","target":"field-weekday"},"field-quarter-relative+-1":"last quarter","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-era-short@localeAlias1471":{"bundle":"","target":"field-era"},"field-week-relative+-1":"last week","field-month-relative+-1":"last month","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"Year","field-era":"Era","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"field-day-short-relative+-1":"yesterday","months-standAlone-abbr@localeAlias1432":{"bundle":"islamic","target":"months-format-abbr"},"dateFormatItem-GyMMM":"G y MMM","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-minute-short@localeAlias1528":{"bundle":"","target":"field-minute"},"field-weekOfMonth-short@localeAlias1486":{"bundle":"","target":"field-weekOfMonth"},"field-weekdayOfMonth-narrow@localeAlias1500":{"bundle":"","target":"field-weekdayOfMonth"},"field-hour":"Hour","field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-quarter":"Quarter","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-mon-narrow@localeAlias1505":{"bundle":"","target":"field-mon-short"},"field-mon-narrow@localeAlias1506":{"bundle":"","target":"field-mon"},"field-sun-narrow@localeAlias1502":{"bundle":"","target":"field-sun-short"},"dateFormatItem-yyyy":"G y","field-sun-narrow@localeAlias1503":{"bundle":"","target":"field-sun"},"dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"Day","field-mon-relative+-1":"last Monday","field-second-narrow@localeAlias1532":{"bundle":"","target":"field-second-short"},"field-second-narrow@localeAlias1533":{"bundle":"","target":"field-second"},"days-standAlone-short@localeAlias1442":{"bundle":"gregorian","target":"days-format-short"},"field-dayOfYear":"Day Of Year","days-standAlone-short@localeAlias1443":{"bundle":"gregorian","target":"days-format-abbr"},"dateFormat-medium":"G y MMM d","days-standAlone-short@localeAlias1444":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormat-short":"{1} {0}","field-tue-short@localeAlias1507":{"bundle":"","target":"field-tue"},"dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-MEd":"MM-dd, E","field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","field-month-short":"Month","days-format-narrow@localeAlias1437":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","dateFormatItem-Bh":"h B","dateTime@localeAlias1469":{"bundle":"islamic","target":"dateTime"},"months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-weekdayOfMonth-narrow@localeAlias1499":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-zone-short@localeAlias1534":{"bundle":"","target":"field-zone"},"dayPeriods-format-abbr-am":"AM","field-week-narrow@localeAlias1484":{"bundle":"","target":"field-week-short"},"field-week-narrow@localeAlias1485":{"bundle":"","target":"field-week"},"field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","field-minute-narrow@localeAlias1529":{"bundle":"","target":"field-minute-short"},"field-second-short@localeAlias1531":{"bundle":"","target":"field-second"},"dateTime@localeAlias1470":{"bundle":"generic","target":"dateTime"},"timeFormat@localeAlias1467":{"bundle":"islamic","target":"timeFormat"},"timeFormat@localeAlias1468":{"bundle":"gregorian","target":"timeFormat"},"days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","field-month-narrow":"Month","dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"last month","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-minute-narrow@localeAlias1530":{"bundle":"","target":"field-minute"},"dayPeriods-standAlone-wide@localeAlias1460":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-wide@localeAlias1461":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-weekday-short":"Day of the Week","field-day-narrow-relative+-1":"yesterday","field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayOfYear-narrow@localeAlias1493":{"bundle":"","target":"field-dayOfYear-short"},"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-EHm":"E HH:mm","field-dayOfYear-narrow@localeAlias1494":{"bundle":"","target":"field-dayOfYear"},"field-quarter-narrow":"Quarter","dayPeriods@localeAlias1453":{"bundle":"islamic","target":"dayPeriods"},"dayPeriods@localeAlias1454":{"bundle":"gregorian","target":"dayPeriods"},"field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","quarters-standAlone-wide@localeAlias1452":{"bundle":"gregorian","target":"quarters-format-wide"},"field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","field-weekOfMonth-narrow@localeAlias1487":{"bundle":"","target":"field-weekOfMonth-short"},"timeFormat-medium":"HH:mm:ss","quarters-format-abbr@localeAlias1448":{"bundle":"gregorian","target":"quarters-format-wide"},"field-weekOfMonth-narrow@localeAlias1488":{"bundle":"","target":"field-weekOfMonth"},"field-sat-short@localeAlias1519":{"bundle":"","target":"field-sat"},"field-quarter-short-relative+0":"this quarter","field-quarter-short-relative+1":"next quarter","dateFormatItem-Ed":"d, E","field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","field-tue-narrow@localeAlias1508":{"bundle":"","target":"field-tue-short"},"field-weekdayOfMonth-narrow":"Weekday Of Month","field-tue-narrow@localeAlias1509":{"bundle":"","target":"field-tue"},"dayPeriods-standAlone-narrow@localeAlias1458":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-wide-am":"AM","dayPeriods-standAlone-narrow@localeAlias1459":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-fri-relative+-1":"last Friday","field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-short":"Day","field-dayperiod":"Dayperiod","field-weekdayOfMonth-short@localeAlias1498":{"bundle":"","target":"field-weekdayOfMonth"},"field-hour-short":"Hour","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","field-week-short-relative+-1":"last week","dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-weekdayOfMonth":"Weekday Of Month","field-day-short@localeAlias1489":{"bundle":"","target":"field-day"},"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-GyMMMEd":"G y MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","field-year-narrow-relative+0":"this year","field-year-narrow-relative+1":"next year","dateFormatItem-Gy":"G y","field-zone-narrow":"Zone","days-format-abbr@localeAlias1436":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-yyyyM":"GGGGG y-MM","field-tue-relative+-1":"last Tuesday","field-minute-short":"Minute","field-mon-short@localeAlias1504":{"bundle":"","target":"field-mon"},"dateFormatItem-Hm":"HH:mm","field-week-relative+0":"this week","field-week-relative+1":"next week","field-era-narrow@localeAlias1472":{"bundle":"","target":"field-era-short"},"quarters-format-narrow@localeAlias1449":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-era-narrow@localeAlias1473":{"bundle":"","target":"field-era"},"dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","field-sun-short@localeAlias1501":{"bundle":"","target":"field-sun"},"field-fri-narrow@localeAlias1517":{"bundle":"","target":"field-fri-short"},"field-fri-narrow@localeAlias1518":{"bundle":"","target":"field-fri"},"dayPeriods-format-wide@localeAlias1456":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-sat-narrow-relative+-1":"last Saturday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-month-short-relative+-1":"last month","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"MMMM d","field-week":"Week","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour"}}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/islamic.js b/lib/dojo/cldr/nls/islamic.js
index 436fc8f91..c21a65985 100644
--- a/lib/dojo/cldr/nls/islamic.js
+++ b/lib/dojo/cldr/nls/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/islamic",{root:{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"now","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-MMMEd":"MMM d, E","eraNarrow":["AH"],"field-tue-relative+-1":"last Tuesday","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"G y MMMM d","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormatItem-yyyyQQQ":"G y QQQ","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"MM-dd","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dayPeriods-format-wide-noon":"noon","field-era":"Era","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","field-year":"Year","dateTimeFormats-appendItem-Era":"{1} {0}","field-hour":"Hour","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"today","field-thu-relative+0":"this Thursday","field-day-relative+1":"tomorrow","field-thu-relative+1":"next Thursday","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-H":"HH","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Gy":"G y","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateFormatItem-M":"L","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMM":"G y MMM","dateFormatItem-yyyyMMMd":"G y MMM d","dayPeriods-format-abbr-noon":"noon","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"this Sunday","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"next Sunday","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["AH"],"field-minute":"Minute","field-dayperiod":"Dayperiod","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"yesterday","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"a","dateFormatItem-h":"h a","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"MM-dd, E","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone":"Zone","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-y":"G y","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateTimeFormats-appendItem-Year":"{1} {0}","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"eraNames":["AH"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-month":"Month","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-MMM":"LLL","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-noon":"n","field-second":"Second","field-sat-relative+-1":"last Saturday","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormatItem-Ed":"d, E","field-week":"Week","dateFormat-medium":"G y MMM d","field-week-relative+-1":"last week","field-year-relative+0":"this year","dateFormatItem-yyyyM":"GGGGG y-MM","field-year-relative+1":"next year","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyyyQQQQ":"G y QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"G y MMM","field-mon-relative+-1":"last Monday","dateFormatItem-yyyy":"G y","field-week-relative+0":"this week","field-week-relative+1":"next week"},"ar":true,"bs":true,"cs":true,"da":true,"de":true,"en":true,"en-au":true,"en-gb":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/islamic",{root:{"field-quarter-short-relative+0":"this quarter","dateTimeFormats-appendItem-Year":"{1} {0}","field-quarter-short-relative+1":"next quarter","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","field-month-narrow-relative+-1":"last month","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","field-thu-short-relative+0":"this Thursday","field-day-short-relative+-1":"yesterday","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"next Thursday","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-wed-narrow-relative+-1":"last Wednesday","dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"Year","field-era-short":"Era","field-year-narrow-relative+0":"this year","field-tue-relative+0":"this Tuesday","field-year-narrow-relative+1":"next year","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"Weekday Of Month","field-second-short":"Second","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Sunday","timeFormat-medium":"HH:mm:ss","field-mon-short-relative+0":"this Monday","field-sun-narrow-relative+1":"next Sunday","field-mon-short-relative+1":"next Monday","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AH"],"field-weekOfMonth":"Week Of Month","dayPeriods-standAlone-abbr-pm":"PM","field-month-short":"Month","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-dayOfYear-short":"Day Of Year","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","field-sat-short-relative+-1":"last Saturday","field-hour-relative+0":"this hour","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"last Saturday","field-second":"Second","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","field-hour-short-relative+0":"this hour","field-quarter":"Quarter","field-week-short":"Week","field-day-narrow-relative+0":"today","field-day-narrow-relative+1":"tomorrow","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","field-month-short-relative+-1":"last month","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","field-day-narrow":"Day","dateFormatItem-MMM":"LLL","field-minute-short":"Minute","field-dayperiod":"Dayperiod","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","dayPeriods-format-narrow-pm":"PM","dateFormat-medium":"G y MMM d","dateFormatItem-yyyyMMMM":"G y MMMM","eraAbbr":["AH"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-second-narrow":"Second","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-day-narrow-relative+-1":"yesterday","field-year-short":"Year","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"last quarter","dateFormatItem-yyyyMMMd":"G y MMM d","field-dayperiod-narrow":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-dayOfYear":"Day Of Year","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-minute-narrow-relative+0":"this minute","field-hour":"Hour","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"Quarter","field-sat-narrow-relative+0":"this Saturday","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Saturday","field-fri-relative+1":"next Friday","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-sun-short-relative+0":"this Sunday","field-sun-short-relative+1":"next Sunday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last quarter","field-minute-short-relative+0":"this minute","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","timeFormat-long":"HH:mm:ss z","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wednesday","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"last Thursday","field-year-narrow-relative+-1":"last year","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","field-mon-narrow-relative+-1":"last Monday","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-MMMMd":"MMMM d","field-thu-narrow-relative+-1":"last Thursday","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"last Tuesday","dateFormatItem-H":"HH","field-weekOfMonth-short":"Week Of Month","dayPeriods-standAlone-narrow-pm":"PM","dateFormatItem-yyyy":"G y","field-wed-short-relative+0":"this Wednesday","dateFormatItem-M":"L","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"field-wed-short-relative+1":"next Wednesday","field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"now","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"Day of the Week","field-day-short-relative+0":"today","field-day-short-relative+1":"tomorrow","field-sat-relative+0":"this Saturday","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","field-quarter-narrow-relative+1":"next quarter","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-dayOfYear-narrow":"Day Of Year","field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","field-weekdayOfMonth-short":"Weekday Of Month","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","field-zone-narrow":"Zone","dateFormatItem-y":"G y","field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+-1":"last Sunday","field-mon-short-relative+-1":"last Monday","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","quarters-standAlone-narrow":["1","2","3","4"],"field-week":"Week","quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-quarter-narrow-relative+-1":"last quarter","field-year-short-relative+0":"this year","dateFormatItem-yyyyMMM":"G y MMM","field-dayperiod-short":"Dayperiod","field-year-short-relative+1":"next year","field-fri-short-relative+0":"this Friday","field-fri-short-relative+1":"next Friday","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-week-short-relative+-1":"last week","field-hour-narrow-relative+0":"this hour","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-zone-short":"Zone","field-hour-short":"Hour","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-month-narrow":"Month","field-hour-narrow":"Hour","field-fri-narrow-relative+-1":"last Friday","field-year-relative+0":"this year","field-year-relative+1":"next year","field-era-narrow":"Era","field-fri-relative+-1":"last Friday","eraNarrow":["AH"],"dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"last Tuesday","field-minute-narrow":"Minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","dateFormatItem-EHm":"E HH:mm","field-year-short-relative+-1":"last year","field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"Day of the Week","field-quarter-narrow":"Quarter","field-sun-short-relative+-1":"last Sunday","field-day-relative+-1":"yesterday","dayPeriods-standAlone-abbr-am":"AM","field-weekday-short":"Day of the Week","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-week-narrow":"Week","field-era":"Era","field-day-short":"Day","field-fri-narrow-relative+0":"this Friday","field-fri-narrow-relative+1":"next Friday","dayPeriods-standAlone-wide-am":"AM"},"ar":true,"bs":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-ca":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/buddhist.js b/lib/dojo/cldr/nls/it/buddhist.js
index 669dc1e99..aef6583e7 100644
--- a/lib/dojo/cldr/nls/it/buddhist.js
+++ b/lib/dojo/cldr/nls/it/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/it/buddhist",{"days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"months-format-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"field-second-relative+0":"ora","field-weekday":"Giorno della settimana","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["EB"],"field-tue-relative+-1":"martedì scorso","days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"dateFormat-long":"dd MMMM y G","field-fri-relative+-1":"venerdì scorso","field-wed-relative+-1":"mercoledì scorso","months-format-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"giovedì scorso","dateFormatItem-Md":"d/M","field-era":"Era","months-standAlone-wide":["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],"quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-year":"Anno","field-hour":"Ora","months-format-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"field-sat-relative+0":"questo sabato","field-sat-relative+1":"sabato prossimo","field-day-relative+0":"oggi","field-thu-relative+0":"questo giovedì","field-day-relative+1":"domani","field-thu-relative+1":"giovedì prossimo","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"dopodomani","months-standAlone-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["EB"],"field-minute":"Minuto","field-dayperiod":"AM/PM","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"field-day-relative+-1":"ieri","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1} 'alle' {0}","dayPeriods-format-narrow-am":"m.","field-day-relative+-2":"l’altro ieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} 'alle' {0}","field-fri-relative+0":"questo venerdì","field-fri-relative+1":"venerdì prossimo","field-day":"Giorno","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-zone":"Fuso orario","dateFormatItem-y":"y G","months-standAlone-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"field-year-relative+-1":"anno scorso","field-month-relative+-1":"mese scorso","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"eraNames":["EB"],"days-format-narrow":["D","L","M","M","G","V","S"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Mese","days-standAlone-narrow":["D","L","M","M","G","V","S"],"field-tue-relative+0":"questo martedì","field-tue-relative+1":"martedì prossimo","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Secondo","field-sat-relative+-1":"sabato scorso","field-sun-relative+-1":"domenica scorsa","field-month-relative+0":"questo mese","field-month-relative+1":"mese prossimo","dateFormatItem-Ed":"E d","field-week":"Settimana","dateFormat-medium":"dd MMM y G","field-year-relative+0":"quest’anno","field-week-relative+-1":"settimana scorsa","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"anno prossimo","dayPeriods-format-narrow-pm":"p.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lunedì scorso","dateFormatItem-yyyy":"y G","field-week-relative+0":"questa settimana","field-week-relative+1":"settimana prossima"}); \ No newline at end of file
+define("dojo/cldr/nls/it/buddhist",{"field-quarter-short-relative+0":"questo trim.","field-quarter-short-relative+1":"trim. prossimo","field-tue-relative+-1":"martedì scorso","field-year":"anno","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","field-minute":"minuto","field-month-narrow-relative+-1":"mese scorso","field-tue-narrow-relative+0":"questo mar.","field-tue-narrow-relative+1":"mar. prossimo","field-thu-short-relative+0":"questo gio.","field-day-short-relative+-1":"ieri","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"gio. prossimo","field-day-relative+0":"oggi","field-day-short-relative+-2":"l’altro ieri","field-day-relative+1":"domani","field-week-narrow-relative+0":"questa sett.","field-day-relative+2":"dopodomani","field-week-narrow-relative+1":"sett. prossima","field-wed-narrow-relative+-1":"mer. scorso","field-year-narrow":"anno","field-era-short":"era","field-year-narrow-relative+0":"quest’anno","field-tue-relative+0":"questo martedì","field-year-narrow-relative+1":"anno prossimo","field-tue-relative+1":"martedì prossimo","field-weekdayOfMonth":"giorno del mese","field-second-short":"s","dayPeriods-format-narrow-am":"m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"giorno mese","field-week-relative+0":"questa settimana","field-month-relative+0":"questo mese","field-week-relative+1":"settimana prossima","field-month-relative+1":"mese prossimo","field-sun-narrow-relative+0":"questa dom.","field-mon-short-relative+0":"questo lun.","field-sun-narrow-relative+1":"dom. prossima","field-mon-short-relative+1":"lun. prossimo","field-second-relative+0":"ora","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"eraNames":["EB"],"field-weekOfMonth":"settimana del mese","field-month-short":"mese","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"giorno","field-dayOfYear-short":"giorno anno","field-year-relative+-1":"anno scorso","field-sat-short-relative+-1":"sab. scorso","field-hour-relative+0":"quest’ora","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"mercoledì scorso","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"sab. scorso","field-second":"secondo","days-standAlone-narrow":["D","L","M","M","G","V","S"],"dateFormat-long":"dd MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"trimestre","field-week-short":"sett.","field-day-narrow-relative+0":"oggi","field-day-narrow-relative+1":"domani","field-day-narrow-relative+2":"dopodomani","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"days-format-narrow":["D","L","M","M","G","V","S"],"field-tue-short-relative+0":"questo mar.","field-tue-short-relative+1":"mar. prossimo","field-month-short-relative+-1":"mese scorso","field-mon-relative+-1":"lunedì scorso","dateFormatItem-GyMMM":"MMM y G","field-month":"mese","field-day-narrow":"g.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"questo sab.","field-sat-short-relative+1":"sab. prossimo","dayPeriods-format-narrow-pm":"p.","dateFormat-medium":"dd MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["EB"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","field-day-narrow-relative+-1":"ieri","field-year-short":"anno","field-day-narrow-relative+-2":"l’altro ieri","months-format-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"field-quarter-relative+-1":"trimestre scorso","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"AM/PM","dayPeriods-standAlone-narrow-am":"m.","field-week-narrow-relative+-1":"sett. scorsa","days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"field-dayOfYear":"giorno dell’anno","field-sat-relative+-1":"sabato scorso","dateTimeFormat-long":"{1} 'alle' {0}","dateFormatItem-Md":"d/M","field-hour":"ora","months-format-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"mese scorso","field-quarter-short":"trim.","field-sat-narrow-relative+0":"questo sab.","field-fri-relative+0":"questo venerdì","field-sat-narrow-relative+1":"sab. prossimo","field-fri-relative+1":"venerdì prossimo","field-month-narrow-relative+0":"questo mese","field-month-narrow-relative+1":"mese prossimo","field-sun-short-relative+0":"questa dom.","field-sun-short-relative+1":"dom. prossima","field-week-relative+-1":"settimana scorsa","field-quarter-short-relative+-1":"trim. scorso","months-format-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"field-quarter-relative+0":"questo trimestre","field-minute-relative+0":"questo minuto","field-quarter-relative+1":"trimestre prossimo","field-wed-short-relative+-1":"mer. scorso","dateFormat-short":"dd/MM/yy GGGGG","field-thu-short-relative+-1":"gio. scorso","field-year-narrow-relative+-1":"anno scorso","days-standAlone-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"lun. scorso","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"gio. scorso","field-tue-narrow-relative+-1":"mar. scorso","field-weekOfMonth-short":"sett. mese","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.","field-wed-short-relative+0":"questo mer.","months-standAlone-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"field-wed-short-relative+1":"mer. prossimo","field-sun-relative+-1":"domenica scorsa","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateTimeFormat-full":"{1} 'alle' {0}","dateFormatItem-hm":"hh:mm a","field-weekday":"giorno della settimana","field-day-short-relative+0":"oggi","field-quarter-narrow-relative+0":"questo trim.","field-sat-relative+0":"questo sabato","field-day-short-relative+1":"domani","field-quarter-narrow-relative+1":"trim. prossimo","field-sat-relative+1":"sabato prossimo","field-day-short-relative+2":"dopodomani","dateFormatItem-h":"hh a","field-week-short-relative+0":"questa sett.","field-week-short-relative+1":"sett. prossima","months-standAlone-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"field-dayOfYear-narrow":"giorno anno","field-month-short-relative+0":"questo mese","field-month-short-relative+1":"mese prossimo","field-weekdayOfMonth-short":"giorno mese","dateFormatItem-MEd":"E d/M","field-zone-narrow":"fuso","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"questo gio.","field-thu-narrow-relative+1":"gio. prossimo","field-sun-narrow-relative+-1":"dom. scorsa","field-mon-short-relative+-1":"lun. scorso","field-thu-relative+0":"questo giovedì","field-thu-relative+1":"giovedì prossimo","field-fri-short-relative+-1":"ven. scorso","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"giovedì scorso","field-week":"settimana","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"questo mer.","field-wed-narrow-relative+1":"mer. prossimo","field-quarter-narrow-relative+-1":"trim. scorso","field-year-short-relative+0":"quest’anno","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"anno prossimo","field-fri-short-relative+0":"questo ven.","field-fri-short-relative+1":"ven. prossimo","days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"field-week-short-relative+-1":"sett. scorsa","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fuso","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"mese","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. scorso","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","field-era-narrow":"era","field-fri-relative+-1":"venerdì scorso","eraNarrow":["EB"],"field-tue-short-relative+-1":"mar. scorso","field-minute-narrow":"min","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-mon-narrow-relative+0":"questo lun.","field-mon-narrow-relative+1":"lun. prossimo","field-year-short-relative+-1":"anno scorso","field-zone":"fuso orario","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sett. mese","field-weekday-narrow":"giorno sett.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. scorsa","field-day-relative+-1":"ieri","field-day-relative+-2":"l’altro ieri","field-weekday-short":"giorno settimana","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","dateFormatItem-Gy":"y G","field-day-short":"g.","field-week-narrow":"sett.","field-era":"era","field-fri-narrow-relative+0":"questo ven.","field-fri-narrow-relative+1":"ven. prossimo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/chinese.js b/lib/dojo/cldr/nls/it/chinese.js
index a4fdf9848..34bf3c1ff 100644
--- a/lib/dojo/cldr/nls/it/chinese.js
+++ b/lib/dojo/cldr/nls/it/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/it/chinese",{"field-sat-relative+0":"questo sabato","field-sat-relative+1":"sabato prossimo","field-dayperiod":"AM/PM","field-sun-relative+-1":"domenica scorsa","field-mon-relative+-1":"lunedì scorso","field-minute":"Minuto","field-day-relative+-1":"ieri","field-weekday":"Giorno della settimana","field-day-relative+-2":"l’altro ieri","field-era":"Era","field-hour":"Ora","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","field-wed-relative+-1":"mercoledì scorso","field-day-relative+0":"oggi","field-day-relative+1":"domani","field-day-relative+2":"dopodomani","dateFormat-long":"dd MMMM U","field-tue-relative+0":"questo martedì","field-zone":"Fuso orario","field-tue-relative+1":"martedì prossimo","field-week-relative+-1":"settimana scorsa","dateFormat-medium":"dd MMM U","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","field-sat-relative+-1":"sabato scorso","field-year-relative+-1":"anno scorso","field-year":"Anno","field-fri-relative+0":"questo venerdì","field-fri-relative+1":"venerdì prossimo","field-week":"Settimana","field-week-relative+0":"questa settimana","field-week-relative+1":"settimana prossima","field-month-relative+0":"questo mese","field-month":"Mese","field-month-relative+1":"mese prossimo","field-fri-relative+-1":"venerdì scorso","field-second":"Secondo","field-tue-relative+-1":"martedì scorso","field-day":"Giorno","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","field-thu-relative+0":"questo giovedì","field-second-relative+0":"ora","dateFormat-short":"dd/MM/yy","field-thu-relative+1":"giovedì prossimo","dateFormat-full":"EEEE d MMMM U","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","field-month-relative+-1":"mese scorso","field-thu-relative+-1":"giovedì scorso"}); \ No newline at end of file
+define("dojo/cldr/nls/it/chinese",{"field-quarter-short-relative+0":"questo trim.","field-quarter-short-relative+1":"trim. prossimo","field-tue-relative+-1":"martedì scorso","field-year":"anno","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","field-minute":"minuto","field-month-narrow-relative+-1":"mese scorso","field-tue-narrow-relative+0":"questo mar.","field-tue-narrow-relative+1":"mar. prossimo","field-thu-short-relative+0":"questo gio.","field-day-short-relative+-1":"ieri","field-thu-short-relative+1":"gio. prossimo","field-day-relative+0":"oggi","field-day-short-relative+-2":"l’altro ieri","field-day-relative+1":"domani","field-week-narrow-relative+0":"questa sett.","field-day-relative+2":"dopodomani","field-week-narrow-relative+1":"sett. prossima","field-wed-narrow-relative+-1":"mer. scorso","field-year-narrow":"anno","field-era-short":"era","field-year-narrow-relative+0":"quest’anno","field-tue-relative+0":"questo martedì","field-year-narrow-relative+1":"anno prossimo","field-tue-relative+1":"martedì prossimo","field-weekdayOfMonth":"giorno del mese","field-second-short":"s","field-weekdayOfMonth-narrow":"giorno mese","field-week-relative+0":"questa settimana","field-month-relative+0":"questo mese","field-week-relative+1":"settimana prossima","field-month-relative+1":"mese prossimo","field-sun-narrow-relative+0":"questa dom.","field-mon-short-relative+0":"questo lun.","field-sun-narrow-relative+1":"dom. prossima","field-mon-short-relative+1":"lun. prossimo","field-second-relative+0":"ora","field-weekOfMonth":"settimana del mese","field-month-short":"mese","field-day":"giorno","field-dayOfYear-short":"giorno anno","field-year-relative+-1":"anno scorso","field-sat-short-relative+-1":"sab. scorso","field-hour-relative+0":"quest’ora","field-wed-relative+-1":"mercoledì scorso","field-sat-narrow-relative+-1":"sab. scorso","field-second":"secondo","dateFormat-long":"dd MMMM U","field-quarter":"trimestre","field-week-short":"sett.","field-day-narrow-relative+0":"oggi","field-day-narrow-relative+1":"domani","field-day-narrow-relative+2":"dopodomani","field-tue-short-relative+0":"questo mar.","field-tue-short-relative+1":"mar. prossimo","field-month-short-relative+-1":"mese scorso","field-mon-relative+-1":"lunedì scorso","field-month":"mese","field-day-narrow":"g.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"questo sab.","field-sat-short-relative+1":"sab. prossimo","dateFormat-medium":"dd MMM U","field-second-narrow":"s","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","field-day-narrow-relative+-1":"ieri","field-year-short":"anno","field-day-narrow-relative+-2":"l’altro ieri","field-quarter-relative+-1":"trimestre scorso","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sett. scorsa","field-dayOfYear":"giorno dell’anno","field-sat-relative+-1":"sabato scorso","field-hour":"ora","dateFormat-full":"EEEE d MMMM U","field-month-relative+-1":"mese scorso","field-quarter-short":"trim.","field-sat-narrow-relative+0":"questo sab.","field-fri-relative+0":"questo venerdì","field-sat-narrow-relative+1":"sab. prossimo","field-fri-relative+1":"venerdì prossimo","field-month-narrow-relative+0":"questo mese","field-month-narrow-relative+1":"mese prossimo","field-sun-short-relative+0":"questa dom.","field-sun-short-relative+1":"dom. prossima","field-week-relative+-1":"settimana scorsa","field-quarter-short-relative+-1":"trim. scorso","field-quarter-relative+0":"questo trimestre","field-minute-relative+0":"questo minuto","field-quarter-relative+1":"trimestre prossimo","field-wed-short-relative+-1":"mer. scorso","dateFormat-short":"dd/MM/yy","field-thu-short-relative+-1":"gio. scorso","field-year-narrow-relative+-1":"anno scorso","field-mon-narrow-relative+-1":"lun. scorso","field-thu-narrow-relative+-1":"gio. scorso","field-tue-narrow-relative+-1":"mar. scorso","field-weekOfMonth-short":"sett. mese","field-wed-short-relative+0":"questo mer.","field-wed-short-relative+1":"mer. prossimo","field-sun-relative+-1":"domenica scorsa","field-weekday":"giorno della settimana","field-day-short-relative+0":"oggi","field-quarter-narrow-relative+0":"questo trim.","field-sat-relative+0":"questo sabato","field-day-short-relative+1":"domani","field-quarter-narrow-relative+1":"trim. prossimo","field-sat-relative+1":"sabato prossimo","field-day-short-relative+2":"dopodomani","field-week-short-relative+0":"questa sett.","field-week-short-relative+1":"sett. prossima","field-dayOfYear-narrow":"giorno anno","field-month-short-relative+0":"questo mese","field-month-short-relative+1":"mese prossimo","field-weekdayOfMonth-short":"giorno mese","field-zone-narrow":"fuso","field-thu-narrow-relative+0":"questo gio.","field-thu-narrow-relative+1":"gio. prossimo","field-sun-narrow-relative+-1":"dom. scorsa","field-mon-short-relative+-1":"lun. scorso","field-thu-relative+0":"questo giovedì","field-thu-relative+1":"giovedì prossimo","field-fri-short-relative+-1":"ven. scorso","field-thu-relative+-1":"giovedì scorso","field-week":"settimana","field-wed-narrow-relative+0":"questo mer.","field-wed-narrow-relative+1":"mer. prossimo","field-quarter-narrow-relative+-1":"trim. scorso","field-year-short-relative+0":"quest’anno","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"anno prossimo","field-fri-short-relative+0":"questo ven.","field-fri-short-relative+1":"ven. prossimo","field-week-short-relative+-1":"sett. scorsa","field-hour-short":"h","field-zone-short":"fuso","field-month-narrow":"mese","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. scorso","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","field-era-narrow":"era","field-fri-relative+-1":"venerdì scorso","field-tue-short-relative+-1":"mar. scorso","field-minute-narrow":"min","field-mon-narrow-relative+0":"questo lun.","field-mon-narrow-relative+1":"lun. prossimo","field-year-short-relative+-1":"anno scorso","field-zone":"fuso orario","field-weekOfMonth-narrow":"sett. mese","field-weekday-narrow":"giorno sett.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. scorsa","field-day-relative+-1":"ieri","field-day-relative+-2":"l’altro ieri","field-weekday-short":"giorno settimana","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","field-day-short":"g.","field-week-narrow":"sett.","field-era":"era","field-fri-narrow-relative+0":"questo ven.","field-fri-narrow-relative+1":"ven. prossimo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/currency.js b/lib/dojo/cldr/nls/it/currency.js
index 29ce55078..2eba6cae9 100644
--- a/lib/dojo/cldr/nls/it/currency.js
+++ b/lib/dojo/cldr/nls/it/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/it/currency",{"HKD_displayName":"dollaro di Hong Kong","CHF_displayName":"franco svizzero","JPY_symbol":"JPY","CAD_displayName":"dollaro canadese","HKD_symbol":"HKD","CNY_displayName":"renminbi cinese","USD_symbol":"US$","AUD_displayName":"dollaro australiano","JPY_displayName":"yen giapponese","CAD_symbol":"CA$","USD_displayName":"dollaro statunitense","CNY_symbol":"CN¥","GBP_displayName":"sterlina inglese","GBP_symbol":"£","AUD_symbol":"A$","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/it/currency",{"HKD_displayName":"dollaro di Hong Kong","CHF_displayName":"franco svizzero","JPY_symbol":"JPY","CAD_displayName":"dollaro canadese","HKD_symbol":"HKD","CNY_displayName":"renminbi cinese","USD_symbol":"USD","AUD_displayName":"dollaro australiano","JPY_displayName":"yen giapponese","USD_displayName":"dollaro statunitense","EUR_symbol":"€","GBP_displayName":"sterlina britannica","AUD_symbol":"A$","EUR_displayName":"euro"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/generic.js b/lib/dojo/cldr/nls/it/generic.js
index 528ef532c..2516c45f7 100644
--- a/lib/dojo/cldr/nls/it/generic.js
+++ b/lib/dojo/cldr/nls/it/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/it/generic",{"field-second-relative+0":"ora","field-weekday":"Giorno della settimana","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"martedì scorso","dateFormat-long":"dd MMMM y G","field-fri-relative+-1":"venerdì scorso","field-wed-relative+-1":"mercoledì scorso","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"giovedì scorso","dateFormatItem-Md":"d/M","field-era":"Era","field-year":"Anno","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"Ora","field-sat-relative+0":"questo sabato","field-sat-relative+1":"sabato prossimo","field-day-relative+0":"oggi","field-day-relative+1":"domani","field-thu-relative+0":"questo giovedì","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"dopodomani","field-thu-relative+1":"giovedì prossimo","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"questa domenica","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"domenica prossima","field-minute":"Minuto","field-dayperiod":"AM/PM","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ieri","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1} 'alle' {0}","field-day-relative+-2":"l’altro ieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} 'alle' {0}","field-fri-relative+0":"questo venerdì","field-fri-relative+1":"venerdì prossimo","field-day":"Giorno","field-zone":"Fuso orario","dateFormatItem-y":"y G","field-year-relative+-1":"anno scorso","field-month-relative+-1":"mese scorso","dateFormatItem-hm":"hh:mm a","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Mese","dateFormatItem-MMM":"LLL","field-tue-relative+0":"questo martedì","field-tue-relative+1":"martedì prossimo","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Secondo","field-sat-relative+-1":"sabato scorso","field-sun-relative+-1":"domenica scorsa","field-month-relative+0":"questo mese","field-month-relative+1":"mese prossimo","dateFormatItem-Ed":"E d","field-week":"Settimana","dateFormat-medium":"dd MMM y G","field-year-relative+0":"quest’anno","field-week-relative+-1":"settimana scorsa","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"anno prossimo","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lunedì scorso","dateFormatItem-yyyy":"y G","field-week-relative+0":"questa settimana","field-week-relative+1":"settimana prossima"}); \ No newline at end of file
+define("dojo/cldr/nls/it/generic",{"field-quarter-short-relative+0":"questo trim.","field-quarter-short-relative+1":"trim. prossimo","field-tue-relative+-1":"martedì scorso","field-year":"anno","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","dateFormatItem-ms":"mm:ss","field-minute":"minuto","field-month-narrow-relative+-1":"mese scorso","field-tue-narrow-relative+0":"questo mar.","field-tue-narrow-relative+1":"mar. prossimo","field-day-short-relative+-1":"ieri","field-thu-short-relative+0":"questo gio.","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"oggi","field-day-short-relative+-2":"l’altro ieri","field-thu-short-relative+1":"gio. prossimo","field-day-relative+1":"domani","field-week-narrow-relative+0":"questa sett.","field-day-relative+2":"dopodomani","field-week-narrow-relative+1":"sett. prossima","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"mer. scorso","field-year-narrow":"anno","field-era-short":"era","field-year-narrow-relative+0":"quest’anno","field-tue-relative+0":"questo martedì","field-year-narrow-relative+1":"anno prossimo","field-tue-relative+1":"martedì prossimo","field-weekdayOfMonth":"giorno del mese","field-second-short":"s","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"giorno mese","field-week-relative+0":"questa settimana","field-month-relative+0":"questo mese","field-week-relative+1":"settimana prossima","field-month-relative+1":"mese prossimo","field-sun-narrow-relative+0":"questa dom.","field-mon-short-relative+0":"questo lun.","field-sun-narrow-relative+1":"dom. prossima","field-mon-short-relative+1":"lun. prossimo","field-second-relative+0":"ora","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"settimana del mese","field-month-short":"mese","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"giorno","field-dayOfYear-short":"giorno anno","field-year-relative+-1":"anno scorso","field-sat-short-relative+-1":"sab. scorso","field-hour-relative+0":"quest’ora","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"mercoledì scorso","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"sab. scorso","field-second":"secondo","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"dd MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"trimestre","field-week-short":"sett.","field-day-narrow-relative+0":"oggi","field-day-narrow-relative+1":"domani","field-day-narrow-relative+2":"dopodomani","field-tue-short-relative+0":"questo mar.","field-tue-short-relative+1":"mar. prossimo","field-month-short-relative+-1":"mese scorso","field-mon-relative+-1":"lunedì scorso","dateFormatItem-GyMMM":"MMM y G","field-month":"mese","field-day-narrow":"g.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"questo sab.","field-sat-short-relative+1":"sab. prossimo","dateFormat-medium":"dd MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","field-day-narrow-relative+-1":"ieri","field-year-short":"anno","field-day-narrow-relative+-2":"l’altro ieri","field-quarter-relative+-1":"trimestre scorso","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sett. scorsa","field-dayOfYear":"giorno dell’anno","field-sat-relative+-1":"sabato scorso","dateTimeFormat-long":"{1} 'alle' {0}","dateFormatItem-Md":"d/M","field-hour":"ora","dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"mese scorso","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"trim.","field-sat-narrow-relative+0":"questo sab.","field-fri-relative+0":"questo venerdì","field-sat-narrow-relative+1":"sab. prossimo","field-fri-relative+1":"venerdì prossimo","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"questo mese","field-month-narrow-relative+1":"mese prossimo","field-sun-short-relative+0":"questa dom.","field-sun-short-relative+1":"dom. prossima","field-week-relative+-1":"settimana scorsa","field-quarter-short-relative+-1":"trim. scorso","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"questo trimestre","field-minute-relative+0":"questo minuto","field-quarter-relative+1":"trimestre prossimo","field-wed-short-relative+-1":"mer. scorso","dateFormat-short":"dd/MM/yy GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"anno scorso","field-thu-short-relative+-1":"gio. scorso","dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"lun. scorso","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"gio. scorso","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"sett. mese","field-tue-narrow-relative+-1":"mar. scorso","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"questo mer.","field-wed-short-relative+1":"mer. prossimo","field-sun-relative+-1":"domenica scorsa","dateTimeFormat-full":"{1} 'alle' {0}","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d","field-weekday":"giorno della settimana","field-day-short-relative+0":"oggi","field-quarter-narrow-relative+0":"questo trim.","field-day-short-relative+1":"domani","field-sat-relative+0":"questo sabato","field-quarter-narrow-relative+1":"trim. prossimo","dateFormatItem-h":"hh a","field-day-short-relative+2":"dopodomani","field-sat-relative+1":"sabato prossimo","field-week-short-relative+0":"questa sett.","field-week-short-relative+1":"sett. prossima","field-dayOfYear-narrow":"giorno anno","field-month-short-relative+0":"questo mese","field-month-short-relative+1":"mese prossimo","field-weekdayOfMonth-short":"giorno mese","dateFormatItem-MEd":"E d/M","field-zone-narrow":"fuso","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"questo gio.","field-sun-narrow-relative+-1":"dom. scorsa","field-mon-short-relative+-1":"lun. scorso","field-thu-narrow-relative+1":"gio. prossimo","field-thu-relative+0":"questo giovedì","field-thu-relative+1":"giovedì prossimo","dateFormatItem-hms":"hh:mm:ss a","field-fri-short-relative+-1":"ven. scorso","field-thu-relative+-1":"giovedì scorso","field-week":"settimana","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"questo mer.","field-wed-narrow-relative+1":"mer. prossimo","field-quarter-narrow-relative+-1":"trim. scorso","field-year-short-relative+0":"quest’anno","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"anno prossimo","field-fri-short-relative+0":"questo ven.","field-fri-short-relative+1":"ven. prossimo","field-week-short-relative+-1":"sett. scorsa","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fuso","field-month-narrow":"mese","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. scorso","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","field-era-narrow":"era","field-fri-relative+-1":"venerdì scorso","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"mar. scorso","field-minute-narrow":"min","field-mon-narrow-relative+0":"questo lun.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"lun. prossimo","field-year-short-relative+-1":"anno scorso","field-zone":"fuso orario","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sett. mese","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"giorno sett.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. scorsa","field-day-relative+-1":"ieri","field-day-relative+-2":"l’altro ieri","field-weekday-short":"giorno settimana","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","dateFormatItem-Gy":"y G","field-day-short":"g.","field-week-narrow":"sett.","field-era":"era","field-fri-narrow-relative+0":"questo ven.","field-fri-narrow-relative+1":"ven. prossimo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/gregorian.js b/lib/dojo/cldr/nls/it/gregorian.js
index e226324a3..c98972624 100644
--- a/lib/dojo/cldr/nls/it/gregorian.js
+++ b/lib/dojo/cldr/nls/it/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/it/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"months-format-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"field-second-relative+0":"ora","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Giorno della settimana","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d/M/y","field-wed-relative+0":"questo mercoledì","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-wed-relative+1":"mercoledì prossimo","eraNarrow":["aC","BCE","dC","CE"],"field-tue-relative+-1":"martedì scorso","days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"venerdì scorso","field-wed-relative+-1":"mercoledì scorso","months-format-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE d MMMM y","field-thu-relative+-1":"giovedì scorso","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/y","dateFormatItem-yM":"M/y","field-era":"Era","months-standAlone-wide":["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],"timeFormat-short":"HH:mm","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQQQQ":"QQQQ y","field-year":"Anno","field-hour":"Ora","months-format-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"field-sat-relative+0":"questo sabato","field-sat-relative+1":"sabato prossimo","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"oggi","field-day-relative+1":"domani","field-thu-relative+0":"questo giovedì","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"dopodomani","field-thu-relative+1":"giovedì prossimo","dateFormatItem-H":"HH","months-standAlone-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],"timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"questa domenica","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["T1","T2","T3","T4"],"field-sun-relative+1":"domenica prossima","eraAbbr":["aC","dC"],"field-minute":"Minuto","field-dayperiod":"AM/PM","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"ieri","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"m.","field-day-relative+-2":"l’altro ieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"questo venerdì","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"venerdì prossimo","field-day":"Giorno","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-zone":"Fuso orario","dateFormatItem-y":"y","months-standAlone-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"field-year-relative+-1":"anno scorso","field-month-relative+-1":"mese scorso","dateFormatItem-hm":"h:mm a","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateFormatItem-yMMMd":"d MMM y","eraNames":["a.C.","BCE","d.C.","CE"],"days-format-narrow":["D","L","M","M","G","V","S"],"days-standAlone-narrow":["D","L","M","M","G","V","S"],"dateFormatItem-MMM":"LLL","field-month":"Mese","field-tue-relative+0":"questo martedì","field-tue-relative+1":"martedì prossimo","dayPeriods-format-wide-am":"AM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","dateFormat-short":"dd/MM/yy","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"Secondo","field-sat-relative+-1":"sabato scorso","dateFormatItem-yMMMEd":"E d MMM y","field-sun-relative+-1":"domenica scorsa","field-month-relative+0":"questo mese","field-month-relative+1":"mese prossimo","dateFormatItem-Ed":"E d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Settimana","dateFormat-medium":"dd MMM y","field-year-relative+0":"quest’anno","field-week-relative+-1":"settimana scorsa","field-year-relative+1":"anno prossimo","dayPeriods-format-narrow-pm":"p.","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lunedì scorso","field-week-relative+0":"questa settimana","field-week-relative+1":"settimana prossima"}); \ No newline at end of file
+define("dojo/cldr/nls/it/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"questo gio.","field-thu-narrow-relative+1":"gio. prossimo","field-sun-narrow-relative+0":"questa dom.","field-sun-narrow-relative+1":"dom. prossima","months-format-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"questo ven.","field-fri-narrow-relative+1":"ven. prossimo","eraNarrow":["aC","dC"],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM y","dayPeriods-format-abbr-night1":"di notte","dayPeriods-format-narrow-evening1":"di sera","days-standAlone-narrow":["D","L","M","M","G","V","S"],"days-standAlone-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"dayPeriods-format-abbr-afternoon1":"di pomeriggio","dayPeriods-format-wide-evening1":"di sera","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"mer. scorso","dayPeriods-standAlone-wide-evening1":"sera","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-month-short-relative+0":"questo mese","field-month-short-relative+1":"mese prossimo","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"sera","dayPeriods-standAlone-abbr-afternoon1":"pomeriggio","field-thu-relative+0":"questo giovedì","dayPeriods-standAlone-abbr-night1":"notte","field-thu-relative+1":"giovedì prossimo","dayPeriods-format-wide-am":"AM","field-fri-relative+0":"questo venerdì","field-fri-relative+1":"venerdì prossimo","dateFormatItem-yMd":"d/M/y","field-thu-narrow-relative+-1":"gio. scorso","field-quarter-relative+0":"questo trimestre","field-quarter-relative+1":"trimestre prossimo","field-sun-short-relative+0":"questa dom.","timeFormat-short":"HH:mm","field-sun-short-relative+1":"dom. prossima","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"di pomeriggio","dateFormatItem-Md":"d/M","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"sett.","field-hour-relative+0":"quest’ora","field-day-relative+-1":"ieri","field-day-relative+-2":"l’altro ieri","field-mon-narrow-relative+-1":"lun. scorso","field-minute-narrow":"min","field-thu-short-relative+0":"questo gio.","field-mon-relative+0":"questo lunedì","field-thu-short-relative+1":"gio. prossimo","field-mon-relative+1":"lunedì prossimo","field-day-narrow-relative+0":"oggi","field-era-short":"era","field-day-narrow-relative+1":"domani","field-sat-narrow-relative+0":"questo sab.","field-day-narrow-relative+2":"dopodomani","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"sab. prossimo","field-week-narrow-relative+0":"questa sett.","field-week-narrow-relative+1":"sett. prossima","field-wed-narrow-relative+0":"questo mer.","field-wed-narrow-relative+1":"mer. prossimo","field-month":"mese","months-standAlone-wide":["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],"field-weekday-narrow":"giorno sett.","dayPeriods-standAlone-narrow-afternoon1":"pomeriggio","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","dayPeriods-format-abbr-evening1":"di sera","dayPeriods-format-abbr-noon":"mezzogiorno","dayPeriods-format-narrow-midnight":"mezzanotte","dayPeriods-format-wide-midnight":"mezzanotte","field-tue-relative+0":"questo martedì","field-tue-relative+1":"martedì prossimo","dayPeriods-standAlone-abbr-evening1":"sera","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"mezzanotte","field-year-narrow":"anno","dayPeriods-standAlone-abbr-noon":"mezzogiorno","field-tue-short-relative+0":"questo mar.","dayPeriods-standAlone-narrow-midnight":"mezzanotte","field-tue-short-relative+1":"mar. prossimo","field-tue-narrow-relative+0":"questo mar.","field-tue-narrow-relative+1":"mar. prossimo","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","dateFormatItem-M":"L","field-wed-short-relative+0":"questo mer.","field-fri-short-relative+0":"questo ven.","field-wed-short-relative+1":"mer. prossimo","field-fri-short-relative+1":"ven. prossimo","field-weekOfMonth-short":"sett. mese","field-quarter-short-relative+-1":"trim. scorso","field-year-short-relative+-1":"anno scorso","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"di notte","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"trim. scorso","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-weekOfMonth-narrow":"sett. mese","dateFormatItem-y":"y","field-minute-relative+0":"questo minuto","field-year-short-relative+0":"quest’anno","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"anno prossimo","field-weekday":"giorno della settimana","dayPeriods-format-narrow-pm":"p.","field-tue-narrow-relative+-1":"mar. scorso","dateFormatItem-yMEd":"E d/M/y","dayPeriods-standAlone-wide-night1":"notte","field-year-narrow-relative+-1":"anno scorso","field-sat-relative+-1":"sabato scorso","dayPeriods-format-abbr-midnight":"mezzanotte","dayPeriods-format-narrow-morning1":"di mattina","dayPeriods-format-wide-morning1":"di mattina","dayPeriods-standAlone-abbr-midnight":"mezzanotte","dayPeriods-standAlone-narrow-pm":"p.","dayPeriods-standAlone-wide-morning1":"mattina","field-mon-narrow-relative+0":"questo lun.","field-mon-narrow-relative+1":"lun. prossimo","field-second":"secondo","dateFormatItem-yMMMEd":"E d MMM y","field-year-relative+-1":"anno scorso","field-weekdayOfMonth-short":"giorno mese","dateFormat-short":"dd/MM/yy","eraNames":["avanti Cristo","dopo Cristo"],"field-second-short":"s","field-thu-short-relative+-1":"gio. scorso","field-zone":"fuso orario","field-dayperiod-narrow":"AM/PM","field-sun-short-relative+-1":"dom. scorsa","dayPeriods-standAlone-narrow-morning1":"mattina","eraAbbr":["a.C.","d.C."],"field-week-short":"sett.","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"oggi","field-day-relative+1":"domani","field-day-relative+2":"dopodomani","field-day-short-relative+0":"oggi","field-dayOfYear-short":"giorno anno","field-day-short-relative+1":"domani","dateFormat-long":"d MMMM y","field-day-short-relative+2":"dopodomani","field-sun-narrow-relative+-1":"dom. scorsa","dayPeriods-format-wide-noon":"mezzogiorno","field-second-relative+0":"ora","field-quarter-relative+-1":"trimestre scorso","dayPeriods-format-narrow-night1":"di notte","quarters-format-abbr":["T1","T2","T3","T4"],"dayPeriods-standAlone-wide-noon":"mezzogiorno","dayPeriods-standAlone-narrow-night1":"notte","field-week-relative+-1":"settimana scorsa","dayPeriods-format-abbr-morning1":"di mattina","field-month-relative+-1":"mese scorso","months-format-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"field-year":"anno","field-era":"era","dayPeriods-standAlone-abbr-morning1":"mattina","days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"ieri","field-day-short-relative+-2":"l’altro ieri","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"ora","field-dayOfYear-narrow":"giorno anno","field-quarter":"trimestre","field-month-narrow-relative+0":"questo mese","field-month-narrow-relative+1":"mese prossimo","field-day":"giorno","field-mon-relative+-1":"lunedì scorso","field-dayOfYear":"giorno dell’anno","dateFormat-medium":"d MMM y","dateTimeFormat-short":"{1}, {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d MMM y G","dateFormatItem-MEd":"E d/M","field-tue-short-relative+-1":"mar. scorso","field-year-short":"anno","field-month-short":"mese","dateFormatItem-MMMEd":"E d MMM","dayPeriods-format-wide-afternoon1":"del pomeriggio","dateFormatItem-MMMd":"d MMM","dateFormatItem-Bh":"h B","months-format-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"questo sabato","field-sat-relative+1":"sabato prossimo","dayPeriods-format-wide-pm":"PM","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"field-zone-short":"fuso","field-week-short-relative+0":"questa sett.","field-week-short-relative+1":"sett. prossima","dayPeriods-standAlone-wide-afternoon1":"pomeriggio","field-fri-short-relative+-1":"ven. scorso","field-month-narrow":"mese","dayPeriods-format-narrow-am":"m.","field-month-narrow-relative+-1":"mese scorso","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"field-weekday-short":"giorno settimana","field-day-narrow-relative+-1":"ieri","field-day-narrow-relative+-2":"l’altro ieri","field-quarter-short":"trim.","days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"months-standAlone-narrow":["G","F","M","A","M","G","L","A","S","O","N","D"],"days-format-narrow":["D","L","M","M","G","V","S"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"trim.","field-mon-short-relative+0":"questo lun.","field-mon-short-relative+1":"lun. prossimo","field-dayperiod-short":"AM/PM","dayPeriods-standAlone-narrow-am":"m.","field-week-narrow-relative+-1":"sett. scorsa","field-thu-relative+-1":"giovedì scorso","field-fri-narrow-relative+-1":"ven. scorso","field-mon-short-relative+-1":"lun. scorso","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"questo trim.","field-quarter-short-relative+1":"trim. prossimo","dateFormatItem-Ed":"E d","field-wed-relative+-1":"mercoledì scorso","field-weekOfMonth":"settimana del mese","field-weekdayOfMonth-narrow":"giorno mese","dayPeriods-standAlone-wide-am":"AM","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"venerdì scorso","field-minute":"minuto","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-day-short":"g.","field-dayperiod":"AM/PM","field-hour-short":"h","months-standAlone-abbr":["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],"field-month-relative+0":"questo mese","field-second-narrow":"s","field-month-relative+1":"mese prossimo","dateFormat-full":"EEEE d MMMM y","field-era-narrow":"era","field-sat-short-relative+-1":"sab. scorso","dayPeriods-format-narrow-noon":"mezzogiorno","field-week-short-relative+-1":"sett. scorsa","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"M/y","field-sun-relative+-1":"domenica scorsa","field-wed-short-relative+-1":"mer. scorso","field-weekdayOfMonth":"giorno del mese","field-quarter-narrow-relative+0":"questo trim.","dateFormatItem-GyMMMEd":"E d MMM y G","field-quarter-narrow-relative+1":"trim. prossimo","field-sat-short-relative+0":"questo sab.","field-hour-narrow":"h","field-sat-short-relative+1":"sab. prossimo","field-year-narrow-relative+0":"quest’anno","field-year-narrow-relative+1":"anno prossimo","dateFormatItem-Gy":"y G","field-zone-narrow":"fuso","dayPeriods-standAlone-narrow-noon":"mezzogiorno","field-tue-relative+-1":"martedì scorso","field-minute-short":"min","dateFormatItem-yw":"'settimana' w 'del' Y","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"questa settimana","field-week-relative+1":"settimana prossima","dateFormatItem-MMM":"LLL","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","field-sat-narrow-relative+-1":"sab. scorso","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-MMMMW":"'settimana' W 'di' MMMM","field-month-short-relative+-1":"mese scorso","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-week":"settimana","field-day-narrow":"g."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/hebrew.js b/lib/dojo/cldr/nls/it/hebrew.js
index 6f9b276a2..ffefd4f23 100644
--- a/lib/dojo/cldr/nls/it/hebrew.js
+++ b/lib/dojo/cldr/nls/it/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/it/hebrew",{"days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"field-second-relative+0":"ora","field-weekday":"Giorno della settimana","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"martedì scorso","days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"dateFormat-long":"dd MMMM y G","field-fri-relative+-1":"venerdì scorso","field-wed-relative+-1":"mercoledì scorso","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"giovedì scorso","dateFormatItem-Md":"d/M","field-era":"Era","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-year":"Anno","field-hour":"Ora","field-sat-relative+0":"questo sabato","field-sat-relative+1":"sabato prossimo","field-day-relative+0":"oggi","field-thu-relative+0":"questo giovedì","field-day-relative+1":"domani","field-thu-relative+1":"giovedì prossimo","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"dopodomani","quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["AM"],"field-minute":"Minuto","field-dayperiod":"AM/PM","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"field-day-relative+-1":"ieri","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1} 'alle' {0}","dayPeriods-format-narrow-am":"m.","field-day-relative+-2":"l’altro ieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} 'alle' {0}","field-fri-relative+0":"questo venerdì","field-fri-relative+1":"venerdì prossimo","field-day":"Giorno","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-zone":"Fuso orario","dateFormatItem-y":"y G","field-year-relative+-1":"anno scorso","field-month-relative+-1":"mese scorso","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"days-format-narrow":["D","L","M","M","G","V","S"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Mese","days-standAlone-narrow":["D","L","M","M","G","V","S"],"field-tue-relative+0":"questo martedì","field-tue-relative+1":"martedì prossimo","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Secondo","field-sat-relative+-1":"sabato scorso","field-sun-relative+-1":"domenica scorsa","field-month-relative+0":"questo mese","field-month-relative+1":"mese prossimo","dateFormatItem-Ed":"E d","field-week":"Settimana","dateFormat-medium":"dd MMM y G","field-year-relative+0":"quest’anno","field-week-relative+-1":"settimana scorsa","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"anno prossimo","dayPeriods-format-narrow-pm":"p.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lunedì scorso","dateFormatItem-yyyy":"y G","field-week-relative+0":"questa settimana","field-week-relative+1":"settimana prossima"}); \ No newline at end of file
+define("dojo/cldr/nls/it/hebrew",{"field-quarter-short-relative+0":"questo trim.","field-quarter-short-relative+1":"trim. prossimo","field-tue-relative+-1":"martedì scorso","field-year":"anno","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","field-minute":"minuto","field-month-narrow-relative+-1":"mese scorso","field-tue-narrow-relative+0":"questo mar.","field-tue-narrow-relative+1":"mar. prossimo","field-thu-short-relative+0":"questo gio.","field-day-short-relative+-1":"ieri","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"gio. prossimo","field-day-relative+0":"oggi","field-day-short-relative+-2":"l’altro ieri","field-day-relative+1":"domani","field-week-narrow-relative+0":"questa sett.","field-day-relative+2":"dopodomani","field-week-narrow-relative+1":"sett. prossima","field-wed-narrow-relative+-1":"mer. scorso","field-year-narrow":"anno","field-era-short":"era","field-year-narrow-relative+0":"quest’anno","field-tue-relative+0":"questo martedì","field-year-narrow-relative+1":"anno prossimo","field-tue-relative+1":"martedì prossimo","field-weekdayOfMonth":"giorno del mese","field-second-short":"s","dayPeriods-format-narrow-am":"m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"giorno mese","field-week-relative+0":"questa settimana","field-month-relative+0":"questo mese","field-week-relative+1":"settimana prossima","field-month-relative+1":"mese prossimo","field-sun-narrow-relative+0":"questa dom.","field-mon-short-relative+0":"questo lun.","field-sun-narrow-relative+1":"dom. prossima","field-mon-short-relative+1":"lun. prossimo","field-second-relative+0":"ora","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"settimana del mese","field-month-short":"mese","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"giorno","field-dayOfYear-short":"giorno anno","field-year-relative+-1":"anno scorso","field-sat-short-relative+-1":"sab. scorso","field-hour-relative+0":"quest’ora","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"mercoledì scorso","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"sab. scorso","field-second":"secondo","days-standAlone-narrow":["D","L","M","M","G","V","S"],"dateFormat-long":"dd MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"trimestre","field-week-short":"sett.","field-day-narrow-relative+0":"oggi","field-day-narrow-relative+1":"domani","field-day-narrow-relative+2":"dopodomani","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"days-format-narrow":["D","L","M","M","G","V","S"],"field-tue-short-relative+0":"questo mar.","field-tue-short-relative+1":"mar. prossimo","field-month-short-relative+-1":"mese scorso","field-mon-relative+-1":"lunedì scorso","dateFormatItem-GyMMM":"MMM y G","field-month":"mese","field-day-narrow":"g.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"questo sab.","field-sat-short-relative+1":"sab. prossimo","dayPeriods-format-narrow-pm":"p.","dateFormat-medium":"dd MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AM"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","field-day-narrow-relative+-1":"ieri","field-year-short":"anno","field-day-narrow-relative+-2":"l’altro ieri","field-quarter-relative+-1":"trimestre scorso","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"AM/PM","dayPeriods-standAlone-narrow-am":"m.","field-week-narrow-relative+-1":"sett. scorsa","days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"field-dayOfYear":"giorno dell’anno","field-sat-relative+-1":"sabato scorso","dateTimeFormat-long":"{1} 'alle' {0}","dateFormatItem-Md":"d/M","field-hour":"ora","dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"mese scorso","field-quarter-short":"trim.","field-sat-narrow-relative+0":"questo sab.","field-fri-relative+0":"questo venerdì","field-sat-narrow-relative+1":"sab. prossimo","field-fri-relative+1":"venerdì prossimo","field-month-narrow-relative+0":"questo mese","field-month-narrow-relative+1":"mese prossimo","field-sun-short-relative+0":"questa dom.","field-sun-short-relative+1":"dom. prossima","field-week-relative+-1":"settimana scorsa","field-quarter-short-relative+-1":"trim. scorso","field-quarter-relative+0":"questo trimestre","field-minute-relative+0":"questo minuto","field-quarter-relative+1":"trimestre prossimo","field-wed-short-relative+-1":"mer. scorso","dateFormat-short":"dd/MM/yy GGGGG","field-thu-short-relative+-1":"gio. scorso","field-year-narrow-relative+-1":"anno scorso","days-standAlone-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"lun. scorso","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"gio. scorso","field-tue-narrow-relative+-1":"mar. scorso","field-weekOfMonth-short":"sett. mese","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.","field-wed-short-relative+0":"questo mer.","field-wed-short-relative+1":"mer. prossimo","field-sun-relative+-1":"domenica scorsa","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateTimeFormat-full":"{1} 'alle' {0}","dateFormatItem-hm":"hh:mm a","field-weekday":"giorno della settimana","field-day-short-relative+0":"oggi","field-quarter-narrow-relative+0":"questo trim.","field-sat-relative+0":"questo sabato","field-day-short-relative+1":"domani","field-quarter-narrow-relative+1":"trim. prossimo","field-sat-relative+1":"sabato prossimo","field-day-short-relative+2":"dopodomani","dateFormatItem-h":"hh a","field-week-short-relative+0":"questa sett.","field-week-short-relative+1":"sett. prossima","field-dayOfYear-narrow":"giorno anno","field-month-short-relative+0":"questo mese","field-month-short-relative+1":"mese prossimo","field-weekdayOfMonth-short":"giorno mese","dateFormatItem-MEd":"E d/M","field-zone-narrow":"fuso","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"questo gio.","field-thu-narrow-relative+1":"gio. prossimo","field-sun-narrow-relative+-1":"dom. scorsa","field-mon-short-relative+-1":"lun. scorso","field-thu-relative+0":"questo giovedì","field-thu-relative+1":"giovedì prossimo","field-fri-short-relative+-1":"ven. scorso","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"giovedì scorso","field-week":"settimana","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"questo mer.","field-wed-narrow-relative+1":"mer. prossimo","field-quarter-narrow-relative+-1":"trim. scorso","field-year-short-relative+0":"quest’anno","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"anno prossimo","field-fri-short-relative+0":"questo ven.","field-fri-short-relative+1":"ven. prossimo","days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"field-week-short-relative+-1":"sett. scorsa","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fuso","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"mese","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. scorso","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","field-era-narrow":"era","field-fri-relative+-1":"venerdì scorso","field-tue-short-relative+-1":"mar. scorso","field-minute-narrow":"min","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-mon-narrow-relative+0":"questo lun.","field-mon-narrow-relative+1":"lun. prossimo","field-year-short-relative+-1":"anno scorso","field-zone":"fuso orario","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sett. mese","field-weekday-narrow":"giorno sett.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. scorsa","field-day-relative+-1":"ieri","field-day-relative+-2":"l’altro ieri","field-weekday-short":"giorno settimana","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","dateFormatItem-Gy":"y G","field-day-short":"g.","field-week-narrow":"sett.","field-era":"era","field-fri-narrow-relative+0":"questo ven.","field-fri-narrow-relative+1":"ven. prossimo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/islamic.js b/lib/dojo/cldr/nls/it/islamic.js
index 787b64d84..5b29f8be1 100644
--- a/lib/dojo/cldr/nls/it/islamic.js
+++ b/lib/dojo/cldr/nls/it/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/it/islamic",{"days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"field-second-relative+0":"ora","field-weekday":"Giorno della settimana","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"martedì scorso","days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"dateFormat-long":"dd MMMM y G","field-fri-relative+-1":"venerdì scorso","field-wed-relative+-1":"mercoledì scorso","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"giovedì scorso","dateFormatItem-Md":"d/M","field-era":"Era","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-year":"Anno","field-hour":"Ora","field-sat-relative+0":"questo sabato","field-sat-relative+1":"sabato prossimo","field-day-relative+0":"oggi","field-thu-relative+0":"questo giovedì","field-day-relative+1":"domani","field-thu-relative+1":"giovedì prossimo","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"dopodomani","quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["AH"],"field-minute":"Minuto","field-dayperiod":"AM/PM","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"field-day-relative+-1":"ieri","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1} 'alle' {0}","dayPeriods-format-narrow-am":"m.","field-day-relative+-2":"l’altro ieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} 'alle' {0}","field-fri-relative+0":"questo venerdì","field-fri-relative+1":"venerdì prossimo","field-day":"Giorno","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-zone":"Fuso orario","dateFormatItem-y":"y G","field-year-relative+-1":"anno scorso","field-month-relative+-1":"mese scorso","dateFormatItem-hm":"hh:mm a","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"days-format-narrow":["D","L","M","M","G","V","S"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"Mese","days-standAlone-narrow":["D","L","M","M","G","V","S"],"field-tue-relative+0":"questo martedì","field-tue-relative+1":"martedì prossimo","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Secondo","field-sat-relative+-1":"sabato scorso","field-sun-relative+-1":"domenica scorsa","field-month-relative+0":"questo mese","field-month-relative+1":"mese prossimo","dateFormatItem-Ed":"E d","field-week":"Settimana","dateFormat-medium":"dd MMM y G","field-year-relative+0":"quest’anno","field-week-relative+-1":"settimana scorsa","dateFormatItem-yyyyM":"M/y GGGGG","field-year-relative+1":"anno prossimo","dayPeriods-format-narrow-pm":"p.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lunedì scorso","dateFormatItem-yyyy":"y G","field-week-relative+0":"questa settimana","field-week-relative+1":"settimana prossima"}); \ No newline at end of file
+define("dojo/cldr/nls/it/islamic",{"field-quarter-short-relative+0":"questo trim.","field-quarter-short-relative+1":"trim. prossimo","field-tue-relative+-1":"martedì scorso","field-year":"anno","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","field-minute":"minuto","field-month-narrow-relative+-1":"mese scorso","field-tue-narrow-relative+0":"questo mar.","field-tue-narrow-relative+1":"mar. prossimo","field-thu-short-relative+0":"questo gio.","field-day-short-relative+-1":"ieri","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"gio. prossimo","field-day-relative+0":"oggi","field-day-short-relative+-2":"l’altro ieri","field-day-relative+1":"domani","field-week-narrow-relative+0":"questa sett.","field-day-relative+2":"dopodomani","field-week-narrow-relative+1":"sett. prossima","field-wed-narrow-relative+-1":"mer. scorso","field-year-narrow":"anno","field-era-short":"era","field-year-narrow-relative+0":"quest’anno","field-tue-relative+0":"questo martedì","field-year-narrow-relative+1":"anno prossimo","field-tue-relative+1":"martedì prossimo","field-weekdayOfMonth":"giorno del mese","field-second-short":"s","dayPeriods-format-narrow-am":"m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"giorno mese","field-week-relative+0":"questa settimana","field-month-relative+0":"questo mese","field-week-relative+1":"settimana prossima","field-month-relative+1":"mese prossimo","field-sun-narrow-relative+0":"questa dom.","field-mon-short-relative+0":"questo lun.","field-sun-narrow-relative+1":"dom. prossima","field-mon-short-relative+1":"lun. prossimo","field-second-relative+0":"ora","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"settimana del mese","field-month-short":"mese","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"giorno","field-dayOfYear-short":"giorno anno","field-year-relative+-1":"anno scorso","field-sat-short-relative+-1":"sab. scorso","field-hour-relative+0":"quest’ora","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"mercoledì scorso","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"sab. scorso","field-second":"secondo","days-standAlone-narrow":["D","L","M","M","G","V","S"],"dateFormat-long":"dd MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"trimestre","field-week-short":"sett.","field-day-narrow-relative+0":"oggi","field-day-narrow-relative+1":"domani","field-day-narrow-relative+2":"dopodomani","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"days-format-narrow":["D","L","M","M","G","V","S"],"field-tue-short-relative+0":"questo mar.","field-tue-short-relative+1":"mar. prossimo","field-month-short-relative+-1":"mese scorso","field-mon-relative+-1":"lunedì scorso","dateFormatItem-GyMMM":"MMM y G","field-month":"mese","field-day-narrow":"g.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"questo sab.","field-sat-short-relative+1":"sab. prossimo","dayPeriods-format-narrow-pm":"p.","dateFormat-medium":"dd MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AH"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","field-day-narrow-relative+-1":"ieri","field-year-short":"anno","field-day-narrow-relative+-2":"l’altro ieri","field-quarter-relative+-1":"trimestre scorso","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"AM/PM","dayPeriods-standAlone-narrow-am":"m.","field-week-narrow-relative+-1":"sett. scorsa","days-format-short":["dom","lun","mar","mer","gio","ven","sab"],"field-dayOfYear":"giorno dell’anno","field-sat-relative+-1":"sabato scorso","dateTimeFormat-long":"{1} 'alle' {0}","dateFormatItem-Md":"d/M","field-hour":"ora","dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"mese scorso","field-quarter-short":"trim.","field-sat-narrow-relative+0":"questo sab.","field-fri-relative+0":"questo venerdì","field-sat-narrow-relative+1":"sab. prossimo","field-fri-relative+1":"venerdì prossimo","field-month-narrow-relative+0":"questo mese","field-month-narrow-relative+1":"mese prossimo","field-sun-short-relative+0":"questa dom.","field-sun-short-relative+1":"dom. prossima","field-week-relative+-1":"settimana scorsa","field-quarter-short-relative+-1":"trim. scorso","field-quarter-relative+0":"questo trimestre","field-minute-relative+0":"questo minuto","field-quarter-relative+1":"trimestre prossimo","field-wed-short-relative+-1":"mer. scorso","dateFormat-short":"dd/MM/yy GGGGG","field-thu-short-relative+-1":"gio. scorso","field-year-narrow-relative+-1":"anno scorso","days-standAlone-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"lun. scorso","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"gio. scorso","field-tue-narrow-relative+-1":"mar. scorso","field-weekOfMonth-short":"sett. mese","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.","field-wed-short-relative+0":"questo mer.","field-wed-short-relative+1":"mer. prossimo","field-sun-relative+-1":"domenica scorsa","days-standAlone-abbr":["dom","lun","mar","mer","gio","ven","sab"],"dateTimeFormat-full":"{1} 'alle' {0}","dateFormatItem-hm":"hh:mm a","field-weekday":"giorno della settimana","field-day-short-relative+0":"oggi","field-quarter-narrow-relative+0":"questo trim.","field-sat-relative+0":"questo sabato","field-day-short-relative+1":"domani","field-quarter-narrow-relative+1":"trim. prossimo","field-sat-relative+1":"sabato prossimo","field-day-short-relative+2":"dopodomani","dateFormatItem-h":"hh a","field-week-short-relative+0":"questa sett.","field-week-short-relative+1":"sett. prossima","field-dayOfYear-narrow":"giorno anno","field-month-short-relative+0":"questo mese","field-month-short-relative+1":"mese prossimo","field-weekdayOfMonth-short":"giorno mese","dateFormatItem-MEd":"E d/M","field-zone-narrow":"fuso","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"questo gio.","field-thu-narrow-relative+1":"gio. prossimo","field-sun-narrow-relative+-1":"dom. scorsa","field-mon-short-relative+-1":"lun. scorso","field-thu-relative+0":"questo giovedì","field-thu-relative+1":"giovedì prossimo","field-fri-short-relative+-1":"ven. scorso","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"giovedì scorso","field-week":"settimana","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"questo mer.","field-wed-narrow-relative+1":"mer. prossimo","field-quarter-narrow-relative+-1":"trim. scorso","field-year-short-relative+0":"quest’anno","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"anno prossimo","field-fri-short-relative+0":"questo ven.","field-fri-short-relative+1":"ven. prossimo","days-standAlone-short":["dom","lun","mar","mer","gio","ven","sab"],"field-week-short-relative+-1":"sett. scorsa","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fuso","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"mese","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. scorso","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","field-era-narrow":"era","field-fri-relative+-1":"venerdì scorso","field-tue-short-relative+-1":"mar. scorso","field-minute-narrow":"min","days-format-wide":["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],"field-mon-narrow-relative+0":"questo lun.","field-mon-narrow-relative+1":"lun. prossimo","field-year-short-relative+-1":"anno scorso","field-zone":"fuso orario","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"sett. mese","field-weekday-narrow":"giorno sett.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. scorsa","field-day-relative+-1":"ieri","field-day-relative+-2":"l’altro ieri","field-weekday-short":"giorno settimana","days-format-abbr":["dom","lun","mar","mer","gio","ven","sab"],"field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","dateFormatItem-Gy":"y G","field-day-short":"g.","field-week-narrow":"sett.","field-era":"era","field-fri-narrow-relative+0":"questo ven.","field-fri-narrow-relative+1":"ven. prossimo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/japanese.js b/lib/dojo/cldr/nls/it/japanese.js
index 340dc960d..a4824c542 100644
--- a/lib/dojo/cldr/nls/it/japanese.js
+++ b/lib/dojo/cldr/nls/it/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/it/japanese",{"field-sat-relative+0":"questo sabato","field-sat-relative+1":"sabato prossimo","field-dayperiod":"AM/PM","field-sun-relative+-1":"domenica scorsa","field-mon-relative+-1":"lunedì scorso","field-minute":"Minuto","field-day-relative+-1":"ieri","field-weekday":"Giorno della settimana","field-day-relative+-2":"l’altro ieri","field-era":"Era","field-hour":"Ora","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","field-wed-relative+-1":"mercoledì scorso","field-day-relative+0":"oggi","field-day-relative+1":"domani","field-day-relative+2":"dopodomani","dateFormat-long":"dd MMMM y G","field-tue-relative+0":"questo martedì","field-zone":"Fuso orario","field-tue-relative+1":"martedì prossimo","field-week-relative+-1":"settimana scorsa","dateFormat-medium":"dd MMM y G","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","field-sat-relative+-1":"sabato scorso","field-year-relative+-1":"anno scorso","field-year":"Anno","field-fri-relative+0":"questo venerdì","field-fri-relative+1":"venerdì prossimo","field-week":"Settimana","field-week-relative+0":"questa settimana","field-week-relative+1":"settimana prossima","field-month-relative+0":"questo mese","field-month":"Mese","field-month-relative+1":"mese prossimo","field-fri-relative+-1":"venerdì scorso","field-second":"Secondo","field-tue-relative+-1":"martedì scorso","field-day":"Giorno","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","field-thu-relative+0":"questo giovedì","field-second-relative+0":"ora","dateFormat-short":"dd/MM/yy GGGGG","field-thu-relative+1":"giovedì prossimo","dateFormat-full":"EEEE d MMMM y G","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","field-month-relative+-1":"mese scorso","field-thu-relative+-1":"giovedì scorso"}); \ No newline at end of file
+define("dojo/cldr/nls/it/japanese",{"field-quarter-short-relative+0":"questo trim.","field-quarter-short-relative+1":"trim. prossimo","field-tue-relative+-1":"martedì scorso","field-year":"anno","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","field-minute":"minuto","field-month-narrow-relative+-1":"mese scorso","field-tue-narrow-relative+0":"questo mar.","field-tue-narrow-relative+1":"mar. prossimo","field-thu-short-relative+0":"questo gio.","field-day-short-relative+-1":"ieri","field-thu-short-relative+1":"gio. prossimo","field-day-relative+0":"oggi","field-day-short-relative+-2":"l’altro ieri","field-day-relative+1":"domani","field-week-narrow-relative+0":"questa sett.","field-day-relative+2":"dopodomani","field-week-narrow-relative+1":"sett. prossima","field-wed-narrow-relative+-1":"mer. scorso","field-year-narrow":"anno","field-era-short":"era","field-year-narrow-relative+0":"quest’anno","field-tue-relative+0":"questo martedì","field-year-narrow-relative+1":"anno prossimo","field-tue-relative+1":"martedì prossimo","field-weekdayOfMonth":"giorno del mese","field-second-short":"s","field-weekdayOfMonth-narrow":"giorno mese","field-week-relative+0":"questa settimana","field-month-relative+0":"questo mese","field-week-relative+1":"settimana prossima","field-month-relative+1":"mese prossimo","field-sun-narrow-relative+0":"questa dom.","field-mon-short-relative+0":"questo lun.","field-sun-narrow-relative+1":"dom. prossima","field-mon-short-relative+1":"lun. prossimo","field-second-relative+0":"ora","field-weekOfMonth":"settimana del mese","field-month-short":"mese","field-day":"giorno","field-dayOfYear-short":"giorno anno","field-year-relative+-1":"anno scorso","field-sat-short-relative+-1":"sab. scorso","field-hour-relative+0":"quest’ora","field-wed-relative+-1":"mercoledì scorso","field-sat-narrow-relative+-1":"sab. scorso","field-second":"secondo","dateFormat-long":"dd MMMM y G","field-quarter":"trimestre","field-week-short":"sett.","field-day-narrow-relative+0":"oggi","field-day-narrow-relative+1":"domani","field-day-narrow-relative+2":"dopodomani","field-tue-short-relative+0":"questo mar.","field-tue-short-relative+1":"mar. prossimo","field-month-short-relative+-1":"mese scorso","field-mon-relative+-1":"lunedì scorso","field-month":"mese","field-day-narrow":"g.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"questo sab.","field-sat-short-relative+1":"sab. prossimo","dateFormat-medium":"dd MMM y G","field-second-narrow":"s","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","field-day-narrow-relative+-1":"ieri","field-year-short":"anno","field-day-narrow-relative+-2":"l’altro ieri","field-quarter-relative+-1":"trimestre scorso","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sett. scorsa","field-dayOfYear":"giorno dell’anno","field-sat-relative+-1":"sabato scorso","field-hour":"ora","dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"mese scorso","field-quarter-short":"trim.","field-sat-narrow-relative+0":"questo sab.","field-fri-relative+0":"questo venerdì","field-sat-narrow-relative+1":"sab. prossimo","field-fri-relative+1":"venerdì prossimo","field-month-narrow-relative+0":"questo mese","field-month-narrow-relative+1":"mese prossimo","field-sun-short-relative+0":"questa dom.","field-sun-short-relative+1":"dom. prossima","field-week-relative+-1":"settimana scorsa","field-quarter-short-relative+-1":"trim. scorso","field-quarter-relative+0":"questo trimestre","field-minute-relative+0":"questo minuto","field-quarter-relative+1":"trimestre prossimo","field-wed-short-relative+-1":"mer. scorso","dateFormat-short":"dd/MM/yy GGGGG","field-thu-short-relative+-1":"gio. scorso","field-year-narrow-relative+-1":"anno scorso","field-mon-narrow-relative+-1":"lun. scorso","field-thu-narrow-relative+-1":"gio. scorso","field-tue-narrow-relative+-1":"mar. scorso","field-weekOfMonth-short":"sett. mese","field-wed-short-relative+0":"questo mer.","field-wed-short-relative+1":"mer. prossimo","field-sun-relative+-1":"domenica scorsa","field-weekday":"giorno della settimana","field-day-short-relative+0":"oggi","field-quarter-narrow-relative+0":"questo trim.","field-sat-relative+0":"questo sabato","field-day-short-relative+1":"domani","field-quarter-narrow-relative+1":"trim. prossimo","field-sat-relative+1":"sabato prossimo","field-day-short-relative+2":"dopodomani","field-week-short-relative+0":"questa sett.","field-week-short-relative+1":"sett. prossima","field-dayOfYear-narrow":"giorno anno","field-month-short-relative+0":"questo mese","field-month-short-relative+1":"mese prossimo","field-weekdayOfMonth-short":"giorno mese","field-zone-narrow":"fuso","field-thu-narrow-relative+0":"questo gio.","field-thu-narrow-relative+1":"gio. prossimo","field-sun-narrow-relative+-1":"dom. scorsa","field-mon-short-relative+-1":"lun. scorso","field-thu-relative+0":"questo giovedì","field-thu-relative+1":"giovedì prossimo","field-fri-short-relative+-1":"ven. scorso","field-thu-relative+-1":"giovedì scorso","field-week":"settimana","field-wed-narrow-relative+0":"questo mer.","field-wed-narrow-relative+1":"mer. prossimo","field-quarter-narrow-relative+-1":"trim. scorso","field-year-short-relative+0":"quest’anno","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"anno prossimo","field-fri-short-relative+0":"questo ven.","field-fri-short-relative+1":"ven. prossimo","field-week-short-relative+-1":"sett. scorsa","field-hour-short":"h","field-zone-short":"fuso","field-month-narrow":"mese","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. scorso","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","field-era-narrow":"era","field-fri-relative+-1":"venerdì scorso","field-tue-short-relative+-1":"mar. scorso","field-minute-narrow":"min","field-mon-narrow-relative+0":"questo lun.","field-mon-narrow-relative+1":"lun. prossimo","field-year-short-relative+-1":"anno scorso","field-zone":"fuso orario","field-weekOfMonth-narrow":"sett. mese","field-weekday-narrow":"giorno sett.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. scorsa","field-day-relative+-1":"ieri","field-day-relative+-2":"l’altro ieri","field-weekday-short":"giorno settimana","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","field-day-short":"g.","field-week-narrow":"sett.","field-era":"era","field-fri-narrow-relative+0":"questo ven.","field-fri-narrow-relative+1":"ven. prossimo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/number.js b/lib/dojo/cldr/nls/it/number.js
index 3e4797763..72c41061a 100644
--- a/lib/dojo/cldr/nls/it/number.js
+++ b/lib/dojo/cldr/nls/it/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/it/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 mila di miliardi","decimalFormat-short":"000 Bln"}); \ No newline at end of file
+define("dojo/cldr/nls/it/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","percentSign":"%","minusSign":"-","decimalFormat-short":"000 Bln","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 mila miliardi","decimalFormat":"#,##0.###","currencyFormat-short":"000 Bln ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/it/roc.js b/lib/dojo/cldr/nls/it/roc.js
index 42af1a038..0aca7e904 100644
--- a/lib/dojo/cldr/nls/it/roc.js
+++ b/lib/dojo/cldr/nls/it/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/it/roc",{"field-sat-relative+0":"questo sabato","field-sat-relative+1":"sabato prossimo","field-dayperiod":"AM/PM","field-sun-relative+-1":"domenica scorsa","field-mon-relative+-1":"lunedì scorso","field-minute":"Minuto","field-day-relative+-1":"ieri","field-weekday":"Giorno della settimana","field-day-relative+-2":"l’altro ieri","field-era":"Era","field-hour":"Ora","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","field-wed-relative+-1":"mercoledì scorso","field-day-relative+0":"oggi","field-day-relative+1":"domani","eraAbbr":["Prima della R.O.C.","Minguo"],"field-day-relative+2":"dopodomani","field-tue-relative+0":"questo martedì","field-zone":"Fuso orario","field-tue-relative+1":"martedì prossimo","field-week-relative+-1":"settimana scorsa","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","field-sat-relative+-1":"sabato scorso","field-year-relative+-1":"anno scorso","field-year":"Anno","field-fri-relative+0":"questo venerdì","field-fri-relative+1":"venerdì prossimo","field-week":"Settimana","field-week-relative+0":"questa settimana","field-week-relative+1":"settimana prossima","field-month-relative+0":"questo mese","field-month":"Mese","field-month-relative+1":"mese prossimo","field-fri-relative+-1":"venerdì scorso","field-second":"Secondo","field-tue-relative+-1":"martedì scorso","field-day":"Giorno","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","field-thu-relative+0":"questo giovedì","field-second-relative+0":"ora","field-thu-relative+1":"giovedì prossimo","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","field-month-relative+-1":"mese scorso","field-thu-relative+-1":"giovedì scorso"}); \ No newline at end of file
+define("dojo/cldr/nls/it/roc",{"field-quarter-short-relative+0":"questo trim.","field-quarter-short-relative+1":"trim. prossimo","field-tue-relative+-1":"martedì scorso","field-year":"anno","field-wed-relative+0":"questo mercoledì","field-wed-relative+1":"mercoledì prossimo","field-minute":"minuto","field-month-narrow-relative+-1":"mese scorso","field-tue-narrow-relative+0":"questo mar.","field-tue-narrow-relative+1":"mar. prossimo","field-thu-short-relative+0":"questo gio.","field-day-short-relative+-1":"ieri","field-thu-short-relative+1":"gio. prossimo","field-day-relative+0":"oggi","field-day-short-relative+-2":"l’altro ieri","field-day-relative+1":"domani","field-week-narrow-relative+0":"questa sett.","field-day-relative+2":"dopodomani","field-week-narrow-relative+1":"sett. prossima","field-wed-narrow-relative+-1":"mer. scorso","field-year-narrow":"anno","field-era-short":"era","field-year-narrow-relative+0":"quest’anno","field-tue-relative+0":"questo martedì","field-year-narrow-relative+1":"anno prossimo","field-tue-relative+1":"martedì prossimo","field-weekdayOfMonth":"giorno del mese","field-second-short":"s","field-weekdayOfMonth-narrow":"giorno mese","field-week-relative+0":"questa settimana","field-month-relative+0":"questo mese","field-week-relative+1":"settimana prossima","field-month-relative+1":"mese prossimo","field-sun-narrow-relative+0":"questa dom.","field-mon-short-relative+0":"questo lun.","field-sun-narrow-relative+1":"dom. prossima","field-mon-short-relative+1":"lun. prossimo","field-second-relative+0":"ora","field-weekOfMonth":"settimana del mese","field-month-short":"mese","field-day":"giorno","field-dayOfYear-short":"giorno anno","field-year-relative+-1":"anno scorso","field-sat-short-relative+-1":"sab. scorso","field-hour-relative+0":"quest’ora","field-wed-relative+-1":"mercoledì scorso","field-sat-narrow-relative+-1":"sab. scorso","field-second":"secondo","field-quarter":"trimestre","field-week-short":"sett.","field-day-narrow-relative+0":"oggi","field-day-narrow-relative+1":"domani","field-day-narrow-relative+2":"dopodomani","field-tue-short-relative+0":"questo mar.","field-tue-short-relative+1":"mar. prossimo","field-month-short-relative+-1":"mese scorso","field-mon-relative+-1":"lunedì scorso","field-month":"mese","field-day-narrow":"g.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"questo sab.","field-sat-short-relative+1":"sab. prossimo","eraAbbr":["Prima di R.O.C.","Minguo"],"field-second-narrow":"s","field-mon-relative+0":"questo lunedì","field-mon-relative+1":"lunedì prossimo","field-day-narrow-relative+-1":"ieri","field-year-short":"anno","field-day-narrow-relative+-2":"l’altro ieri","field-quarter-relative+-1":"trimestre scorso","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"sett. scorsa","field-dayOfYear":"giorno dell’anno","field-sat-relative+-1":"sabato scorso","field-hour":"ora","field-month-relative+-1":"mese scorso","field-quarter-short":"trim.","field-sat-narrow-relative+0":"questo sab.","field-fri-relative+0":"questo venerdì","field-sat-narrow-relative+1":"sab. prossimo","field-fri-relative+1":"venerdì prossimo","field-month-narrow-relative+0":"questo mese","field-month-narrow-relative+1":"mese prossimo","field-sun-short-relative+0":"questa dom.","field-sun-short-relative+1":"dom. prossima","field-week-relative+-1":"settimana scorsa","field-quarter-short-relative+-1":"trim. scorso","field-quarter-relative+0":"questo trimestre","field-minute-relative+0":"questo minuto","field-quarter-relative+1":"trimestre prossimo","field-wed-short-relative+-1":"mer. scorso","field-thu-short-relative+-1":"gio. scorso","field-year-narrow-relative+-1":"anno scorso","field-mon-narrow-relative+-1":"lun. scorso","field-thu-narrow-relative+-1":"gio. scorso","field-tue-narrow-relative+-1":"mar. scorso","field-weekOfMonth-short":"sett. mese","field-wed-short-relative+0":"questo mer.","field-wed-short-relative+1":"mer. prossimo","field-sun-relative+-1":"domenica scorsa","field-weekday":"giorno della settimana","field-day-short-relative+0":"oggi","field-quarter-narrow-relative+0":"questo trim.","field-sat-relative+0":"questo sabato","field-day-short-relative+1":"domani","field-quarter-narrow-relative+1":"trim. prossimo","field-sat-relative+1":"sabato prossimo","field-day-short-relative+2":"dopodomani","field-week-short-relative+0":"questa sett.","field-week-short-relative+1":"sett. prossima","field-dayOfYear-narrow":"giorno anno","field-month-short-relative+0":"questo mese","field-month-short-relative+1":"mese prossimo","field-weekdayOfMonth-short":"giorno mese","field-zone-narrow":"fuso","field-thu-narrow-relative+0":"questo gio.","field-thu-narrow-relative+1":"gio. prossimo","field-sun-narrow-relative+-1":"dom. scorsa","field-mon-short-relative+-1":"lun. scorso","field-thu-relative+0":"questo giovedì","field-thu-relative+1":"giovedì prossimo","field-fri-short-relative+-1":"ven. scorso","field-thu-relative+-1":"giovedì scorso","field-week":"settimana","field-wed-narrow-relative+0":"questo mer.","field-wed-narrow-relative+1":"mer. prossimo","field-quarter-narrow-relative+-1":"trim. scorso","field-year-short-relative+0":"quest’anno","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"anno prossimo","field-fri-short-relative+0":"questo ven.","field-fri-short-relative+1":"ven. prossimo","field-week-short-relative+-1":"sett. scorsa","field-hour-short":"h","field-zone-short":"fuso","field-month-narrow":"mese","field-hour-narrow":"h","field-fri-narrow-relative+-1":"ven. scorso","field-year-relative+0":"quest’anno","field-year-relative+1":"anno prossimo","field-era-narrow":"era","field-fri-relative+-1":"venerdì scorso","field-tue-short-relative+-1":"mar. scorso","field-minute-narrow":"min","field-mon-narrow-relative+0":"questo lun.","field-mon-narrow-relative+1":"lun. prossimo","field-year-short-relative+-1":"anno scorso","field-zone":"fuso orario","field-weekOfMonth-narrow":"sett. mese","field-weekday-narrow":"giorno sett.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. scorsa","field-day-relative+-1":"ieri","field-day-relative+-2":"l’altro ieri","field-weekday-short":"giorno settimana","field-sun-relative+0":"questa domenica","field-sun-relative+1":"domenica prossima","field-day-short":"g.","field-week-narrow":"sett.","field-era":"era","field-fri-narrow-relative+0":"questo ven.","field-fri-narrow-relative+1":"ven. prossimo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/buddhist.js b/lib/dojo/cldr/nls/ja/buddhist.js
index d4ecf6f48..9ba03d035 100644
--- a/lib/dojo/cldr/nls/ja/buddhist.js
+++ b/lib/dojo/cldr/nls/ja/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/buddhist",{"days-standAlone-short":["日","月","火","水","木","金","土"],"field-second-relative+0":"今すぐ","field-weekday":"曜日","dateFormatItem-GyMd":"GGGGy年M月d日","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","dateFormatItem-GyMMMEd":"GGGGy年M月d日(E)","dateFormatItem-MMMEd":"M月d日(E)","field-tue-relative+-1":"先週の火曜日","days-format-short":["日","月","火","水","木","金","土"],"dateFormat-long":"GGGGy年M月d日","field-fri-relative+-1":"先週の金曜日","field-wed-relative+-1":"先週の水曜日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyyyQQQ":"Gy/QQQ","dayPeriods-format-wide-pm":"午後","dateFormat-full":"GGGGy年M月d日EEEE","dateFormatItem-yyyyMEd":"GGGGy年M/d(E)","field-thu-relative+-1":"先週の木曜日","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"正午","field-era":"時代","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-short":"H:mm","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-MEEEEd":"M/dEEEE","timeFormat-long":"H:mm:ss z","field-year":"年","field-hour":"時","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","timeFormat-full":"H時mm分ss秒 zzzz","field-day-relative+0":"今日","field-thu-relative+0":"今週の木曜日","field-day-relative+1":"明日","field-thu-relative+1":"来週の木曜日","dateFormatItem-GyMMMd":"GGGGy年M月d日","field-day-relative+2":"明後日","dateFormatItem-H":"H時","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-Gy":"GGGGy年","dateFormatItem-yyyyMMMEd":"GGGGy年M月d日(E)","dateFormatItem-M":"M月","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyyyMMM":"GGGGy年M月","dateFormatItem-yyyyMMMd":"GGGGy年M月d日","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"今週の日曜日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"来週の日曜日","eraAbbr":["BE"],"field-minute":"分","field-dayperiod":"午前/午後","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-d":"d日","dateFormatItem-yyyyMEEEEd":"GGGGy年M/dEEEE","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨日","dateFormatItem-h":"aK時","dayPeriods-format-narrow-am":"午前","field-day-relative+-2":"一昨日","dateFormatItem-MMMd":"M月d日","dateFormatItem-EEEEd":"d日EEEE","dateFormatItem-MEd":"M/d(E)","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","field-day":"日","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-zone":"タイムゾーン","dateFormatItem-yyyyMM":"Gy/MM","dateFormatItem-y":"GGGGy年","field-year-relative+-1":"昨年","field-month-relative+-1":"先月","dateFormatItem-hm":"aK:mm","dateFormatItem-GyMMMEEEEd":"GGGGy年M月d日EEEE","days-format-abbr":["日","月","火","水","木","金","土"],"eraNames":["仏暦"],"dateFormatItem-yyyyMMMEEEEd":"GGGGy年M月d日EEEE","days-format-narrow":["日","月","火","水","木","金","土"],"dateFormatItem-MMMEEEEd":"M月d日EEEE","dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"M月","days-standAlone-narrow":["日","月","火","水","木","金","土"],"field-tue-relative+0":"今週の火曜日","field-tue-relative+1":"来週の火曜日","dayPeriods-format-wide-am":"午前","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","dateFormat-short":"Gy/MM/dd","dayPeriods-format-narrow-noon":"正午","field-second":"秒","field-sat-relative+-1":"先週の土曜日","field-sun-relative+-1":"先週の日曜日","field-month-relative+0":"今月","field-month-relative+1":"翌月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy/MM/dd","field-year-relative+0":"今年","field-week-relative+-1":"先週","dateFormatItem-yyyyM":"GGGGy年M月","field-year-relative+1":"翌年","dayPeriods-format-narrow-pm":"午後","dateFormatItem-yyyyQQQQ":"GyQQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"aK:mm:ss","dateFormatItem-GyMMM":"GGGGy年M月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-yyyy":"GGGGy年","field-week-relative+0":"今週","field-week-relative+1":"翌週"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/buddhist",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","dateFormatItem-MEEEEd":"M/dEEEE","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","dateFormatItem-ms":"mm:ss","timeFormat-short":"H:mm","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-thu-short-relative+0":"今週の木曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+-1":"先週の水曜","dateFormatItem-EBhms":"BK:mm:ss (E)","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","dayPeriods-format-narrow-am":"午前","dateFormatItem-yyyyMM":"Gy/MM","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月の曜日番号","dayPeriods-format-abbr-am":"午前","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","dateFormatItem-yyyyQQQ":"Gy/QQQ","eraNames":["仏暦"],"field-weekOfMonth":"月の週番号","dayPeriods-standAlone-abbr-pm":"午後","field-month-short":"月","dateFormatItem-GyMMMEd":"GGGGy年M月d日(E)","dateFormatItem-yyyyMd":"Gy/M/d","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","dayPeriods-format-wide-am":"午前","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","dateFormatItem-yyyyMEd":"GGGGy年M/d(E)","field-wed-relative+-1":"先週の水曜日","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","days-standAlone-narrow":["日","月","火","水","木","金","土"],"dayPeriods-standAlone-wide-pm":"午後","dateFormatItem-Ehms":"aK:mm:ss (E)","dateFormat-long":"GGGGy年M月d日","dateFormatItem-GyMMMd":"GGGGy年M月d日","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","dateFormatItem-MMMEEEEd":"M月d日EEEE","quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"days-format-narrow":["日","月","火","水","木","金","土"],"field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-GyMMM":"GGGGy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"M月","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","dayPeriods-format-narrow-pm":"午後","dateFormat-medium":"Gy/MM/dd","dateFormatItem-yyyyMMMM":"GGGGy年M月","dateFormatItem-EEEEd":"d日EEEE","eraAbbr":["BE"],"dayPeriods-format-abbr-pm":"午後","dateFormatItem-yyyyM":"GGGGy年M月","field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-day-narrow-relative+-2":"一昨日","field-quarter-relative+-1":"前四半期","dateFormatItem-yyyyMMMd":"GGGGy年M月d日","field-dayperiod-narrow":"午前/午後","dayPeriods-standAlone-narrow-am":"午前","field-week-narrow-relative+-1":"先週","days-format-short":["日","月","火","水","木","金","土"],"dayPeriods-format-wide-pm":"午後","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","dateFormatItem-Md":"M/d","field-hour":"時","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormat-full":"GGGGy年M月d日EEEE","field-month-relative+-1":"先月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","dateFormatItem-EBhm":"BK:mm (E)","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","dateFormatItem-Ehm":"aK:mm (E)","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","dateFormat-short":"Gy/MM/dd","dateFormatItem-Bh":"BK時","field-thu-short-relative+-1":"先週の木曜","field-year-narrow-relative+-1":"昨年","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyyyMMMEd":"GGGGy年M月d日(E)","field-mon-narrow-relative+-1":"先週の月曜","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"先週の木曜","dateFormatItem-H":"H時","field-weekOfMonth-short":"月の週番号","field-tue-narrow-relative+-1":"先週の火曜","dateFormatItem-yyyy":"GGGGy年","dayPeriods-standAlone-narrow-pm":"午後","dateFormatItem-M":"M月","field-wed-short-relative+0":"今週の水曜","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-hm":"aK:mm","dateFormatItem-d":"d日","field-weekday":"曜日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","dateFormatItem-h":"aK時","dateFormatItem-yyyyMEEEEd":"GGGGy年M/dEEEE","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","timeFormat-full":"H時mm分ss秒 zzzz","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"タイムゾーン","dateFormatItem-y":"GGGGy年","field-thu-narrow-relative+0":"今週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-narrow-relative+1":"来週の木曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","dateFormatItem-hms":"aK:mm:ss","field-fri-short-relative+-1":"先週の金曜","field-thu-relative+-1":"先週の木曜日","field-week":"週","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-Ed":"d日(E)","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","dateFormatItem-yyyyMMMEEEEd":"GGGGy年M月d日EEEE","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"GGGGy年M月","field-dayperiod-short":"午前/午後","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","days-standAlone-short":["日","月","火","水","木","金","土"],"field-week-short-relative+-1":"先週","dateFormatItem-GyMd":"GGGGy年M月d日","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","eraNarrow":"BE","dateFormatItem-Bhms":"BK:mm:ss","field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","dateFormatItem-EHm":"H:mm (E)","dateFormatItem-GyMMMEEEEd":"GGGGy年M月d日EEEE","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","dateFormatItem-MMMEd":"M月d日(E)","field-weekOfMonth-narrow":"月の週番号","dateFormatItem-EHms":"H:mm:ss (E)","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","dayPeriods-standAlone-abbr-am":"午前","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","days-format-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-Bhm":"BK:mm","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","dateFormatItem-Gy":"GGGGy年","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜","dayPeriods-standAlone-wide-am":"午前"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/chinese.js b/lib/dojo/cldr/nls/ja/chinese.js
index 4defcc788..dcc3a5b0a 100644
--- a/lib/dojo/cldr/nls/ja/chinese.js
+++ b/lib/dojo/cldr/nls/ja/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/chinese",{"months-format-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-second-relative+0":"今すぐ","field-weekday":"曜日","field-wed-relative+0":"今週の水曜日","dateFormatItem-GyMMMEd":"U年MMMd日(E)","dateFormatItem-MMMEd":"MMMd日(E)","field-wed-relative+1":"来週の水曜日","field-tue-relative+-1":"先週の火曜日","dateFormat-long":"U年MMMd日","field-fri-relative+-1":"先週の金曜日","field-wed-relative+-1":"先週の水曜日","months-format-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormatItem-yyyyQQQ":"U年QQQ","dateFormat-full":"U年MMMd日EEEE","dateFormatItem-yyyyMEd":"U年M月d日(E)","field-thu-relative+-1":"先週の木曜日","dateFormatItem-Md":"M/d","dateFormatItem-yMd":"U年M月d日","field-era":"時代","months-standAlone-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormatItem-MEEEEd":"M/dEEEE","field-year":"年","field-hour":"時","months-format-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","field-day-relative+0":"今日","field-day-relative+1":"明日","field-thu-relative+0":"今週の木曜日","dateFormatItem-GyMMMd":"U年MMMd日","field-day-relative+2":"明後日","field-thu-relative+1":"来週の木曜日","dateFormatItem-H":"H時","months-standAlone-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormatItem-Gy":"U年","dateFormatItem-yyyyMMMEd":"U年MMMd日(E)","dateFormatItem-M":"MMM","dateFormatItem-yyyyMMM":"U年MMM","dateFormatItem-yyyyMMMd":"U年MMMd日","field-sun-relative+0":"今週の日曜日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"来週の日曜日","field-minute":"分","field-dayperiod":"午前/午後","dateFormatItem-d":"d日","dateFormatItem-yyyyMEEEEd":"U年M月d日EEEE","field-day-relative+-1":"昨日","dateFormatItem-h":"aK時","field-day-relative+-2":"一昨日","dateFormatItem-MMMd":"MMMd日","dateFormatItem-EEEEd":"d日EEEE","dateFormatItem-MEd":"M/d(E)","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","field-day":"日","field-zone":"タイムゾーン","dateFormatItem-y":"U年","months-standAlone-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-year-relative+-1":"昨年","field-month-relative+-1":"先月","dateFormatItem-hm":"aK:mm","dateFormatItem-GyMMMEEEEd":"U年MMMd日EEEE","dateFormatItem-yyyyMMMEEEEd":"U年MMMd日EEEE","dateFormatItem-MMMEEEEd":"MMMd日EEEE","dateFormatItem-yyyyMd":"U年M月d日","field-month":"月","field-tue-relative+0":"今週の火曜日","field-tue-relative+1":"来週の火曜日","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","dateFormat-short":"U-M-d","field-second":"秒","field-sat-relative+-1":"先週の土曜日","field-sun-relative+-1":"先週の日曜日","field-month-relative+0":"今月","field-month-relative+1":"翌月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"U年MMMd日","field-year-relative+0":"今年","field-week-relative+-1":"先週","dateFormatItem-yyyyM":"U年M月","field-year-relative+1":"翌年","dateFormatItem-yyyyQQQQ":"U年QQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"aK:mm:ss","dateFormatItem-GyMMM":"U年MMM","field-mon-relative+-1":"先週の月曜日","dateFormatItem-yyyy":"U年","field-week-relative+0":"今週","field-week-relative+1":"翌週"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/chinese",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","dateFormatItem-MEEEEd":"M/dEEEE","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","dateFormatItem-ms":"mm:ss","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+0":"今週の木曜","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","dateFormatItem-EBhms":"BK:mm:ss (E)","field-wed-narrow-relative+-1":"先週の水曜","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","dateFormatItem-MMMd":"MMMd日","field-weekdayOfMonth-narrow":"月の曜日番号","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","dateFormatItem-yyyyQQQ":"U年QQQ","months-standAlone-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-weekOfMonth":"月の週番号","field-month-short":"月","dateFormatItem-GyMMMEd":"U年MMMd日(E)","dateFormatItem-yyyyMd":"U年M月d日","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","dateFormatItem-yyyyMEd":"U年M月d日(E)","field-wed-relative+-1":"先週の水曜日","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","dateFormat-long":"U年MMMd日","dateFormatItem-GyMMMd":"U年MMMd日","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","dateFormatItem-MMMEEEEd":"MMMd日EEEE","field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-GyMMM":"U年MMM","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","dateFormat-medium":"U年MMMd日","dateFormatItem-yyyyMMMM":"U年MMMM","dateFormatItem-UMMM":"U年MMM","dateFormatItem-EEEEd":"d日EEEE","dateFormatItem-yyyyM":"U年M月","field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-2":"一昨日","months-format-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-quarter-relative+-1":"前四半期","dateFormatItem-yyyyMMMd":"U年MMMd日","field-dayperiod-narrow":"午前/午後","field-week-narrow-relative+-1":"先週","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","dateFormatItem-Md":"M/d","field-hour":"時","months-format-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormat-full":"U年MMMd日EEEE","dateFormatItem-UMd":"U年M月d日","field-month-relative+-1":"先月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","dateFormatItem-EBhm":"BK:mm (E)","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","months-format-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","dateFormat-short":"U-M-d","dateFormatItem-Bh":"BK時","field-year-narrow-relative+-1":"昨年","field-thu-short-relative+-1":"先週の木曜","dateFormatItem-yyyyMMMEd":"U年MMMd日(E)","field-mon-narrow-relative+-1":"先週の月曜","dateFormatItem-MMMMd":"MMMMd日","field-thu-narrow-relative+-1":"先週の木曜","dateFormatItem-E":"ccc","dateFormatItem-H":"H時","field-weekOfMonth-short":"月の週番号","field-tue-narrow-relative+-1":"先週の火曜","dateFormatItem-yyyy":"U年","dateFormatItem-M":"MMM","months-standAlone-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-short-relative+0":"今週の水曜","field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","dateFormatItem-hm":"aK:mm","dateFormatItem-d":"d日","field-weekday":"曜日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","dateFormatItem-h":"aK時","dateFormatItem-yyyyMEEEEd":"U年M月d日EEEE","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","months-standAlone-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"タイムゾーン","dateFormatItem-y":"U年","field-thu-narrow-relative+0":"今週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-narrow-relative+1":"来週の木曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","dateFormatItem-hms":"aK:mm:ss","field-fri-short-relative+-1":"先週の金曜","field-thu-relative+-1":"先週の木曜日","dateFormatItem-yMd":"U年M月d日","field-week":"週","dateFormatItem-Ed":"d日(E)","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","dateFormatItem-yyyyMMMEEEEd":"U年MMMd日EEEE","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"U年MMM","field-dayperiod-short":"午前/午後","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","field-week-short-relative+-1":"先週","dateFormatItem-yyyyQQQQ":"U年QQQQ","dateFormatItem-UMMMd":"U年MMMd日","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","dateFormatItem-Bhms":"BK:mm:ss","field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","dateFormatItem-GyMMMEEEEd":"U年MMMd日EEEE","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","dateFormatItem-MMMEd":"MMMd日(E)","field-weekOfMonth-narrow":"月の週番号","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","dateFormatItem-Bhm":"BK:mm","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","dateFormatItem-Gy":"U年","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","dateFormatItem-UM":"U年M月","field-fri-narrow-relative+1":"来週の金曜"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/coptic.js b/lib/dojo/cldr/nls/ja/coptic.js
index f5d142fed..56750ed9d 100644
--- a/lib/dojo/cldr/nls/ja/coptic.js
+++ b/lib/dojo/cldr/nls/ja/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/coptic",{"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","field-dayperiod":"午前/午後","field-sun-relative+-1":"先週の日曜日","field-mon-relative+-1":"先週の月曜日","field-minute":"分","field-day-relative+-1":"昨日","field-weekday":"曜日","field-day-relative+-2":"一昨日","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"時代","field-hour":"時","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","months-standAlone-abbr":["トウト","ババ","ハトール","キアック","トーバ","アムシール","バラムハート","バラモウダ","バシャンス","パオーナ","エペープ","メスラ","ナシエ"],"field-wed-relative+-1":"先週の水曜日","field-day-relative+0":"今日","field-day-relative+1":"明日","field-day-relative+2":"明後日","field-tue-relative+0":"今週の火曜日","field-zone":"タイムゾーン","field-tue-relative+1":"来週の火曜日","field-week-relative+-1":"先週","field-year-relative+0":"今年","field-year-relative+1":"翌年","field-sat-relative+-1":"先週の土曜日","field-year-relative+-1":"昨年","field-year":"年","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","months-standAlone-wide":["トウト","ババ","ハトール","キアック","トーバ","アムシール","バラムハート","バラモウダ","バシャンス","パオーナ","エペープ","メスラ","ナシエ"],"field-week":"週","field-week-relative+0":"今週","field-week-relative+1":"翌週","months-format-abbr":["トウト","ババ","ハトール","キアック","トーバ","アムシール","バラムハート","バラモウダ","バシャンス","パオーナ","エペープ","メスラ","ナシエ"],"field-month-relative+0":"今月","field-month":"月","field-month-relative+1":"翌月","field-fri-relative+-1":"先週の金曜日","field-second":"秒","field-tue-relative+-1":"先週の火曜日","field-day":"日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-thu-relative+0":"今週の木曜日","field-second-relative+0":"今すぐ","field-thu-relative+1":"来週の木曜日","months-format-wide":["トウト","ババ","ハトール","キアック","トーバ","アムシール","バラムハート","バラモウダ","バシャンス","パオーナ","エペープ","メスラ","ナシエ"],"field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","field-month-relative+-1":"先月","field-thu-relative+-1":"先週の木曜日"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/coptic",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-thu-short-relative+0":"今週の木曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+-1":"先週の水曜","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","field-weekdayOfMonth-narrow":"月の曜日番号","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"field-weekOfMonth":"月の週番号","field-month-short":"月","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","field-wed-relative+-1":"先週の水曜日","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","field-month":"月","field-day-narrow":"日","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-day-narrow-relative+-2":"一昨日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"前四半期","field-dayperiod-narrow":"午前/午後","field-week-narrow-relative+-1":"先週","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","field-hour":"時","months-format-wide":["トウト","ババ","ハトール","キアック","トーバ","アムシール","バラムハート","バラモウダ","バシャンス","パオーナ","エペープ","メスラ","ナシエ"],"field-month-relative+-1":"先月","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","months-format-abbr":["トウト","ババ","ハトール","キアック","トーバ","アムシール","バラムハート","バラモウダ","バシャンス","パオーナ","エペープ","メスラ","ナシエ"],"field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","field-thu-short-relative+-1":"先週の木曜","field-year-narrow-relative+-1":"昨年","field-mon-narrow-relative+-1":"先週の月曜","field-thu-narrow-relative+-1":"先週の木曜","field-tue-narrow-relative+-1":"先週の火曜","field-weekOfMonth-short":"月の週番号","field-wed-short-relative+0":"今週の水曜","months-standAlone-wide":["トウト","ババ","ハトール","キアック","トーバ","アムシール","バラムハート","バラモウダ","バシャンス","パオーナ","エペープ","メスラ","ナシエ"],"field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","field-weekday":"曜日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","months-standAlone-abbr":["トウト","ババ","ハトール","キアック","トーバ","アムシール","バラムハート","バラモウダ","バシャンス","パオーナ","エペープ","メスラ","ナシエ"],"field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","field-zone-narrow":"タイムゾーン","field-thu-narrow-relative+0":"今週の木曜","field-thu-narrow-relative+1":"来週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","field-fri-short-relative+-1":"先週の金曜","field-thu-relative+-1":"先週の木曜日","field-week":"週","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","field-dayperiod-short":"午前/午後","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","field-week-short-relative+-1":"先週","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","field-weekOfMonth-narrow":"月の週番号","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/currency.js b/lib/dojo/cldr/nls/ja/currency.js
index a2702019b..d84924edd 100644
--- a/lib/dojo/cldr/nls/ja/currency.js
+++ b/lib/dojo/cldr/nls/ja/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/currency",{"HKD_displayName":"香港ドル","CHF_displayName":"スイス フラン","JPY_symbol":"¥","CAD_displayName":"カナダ ドル","HKD_symbol":"HK$","CNY_displayName":"中国人民元","USD_symbol":"$","AUD_displayName":"オーストラリア ドル","JPY_displayName":"日本円","CAD_symbol":"CA$","USD_displayName":"米ドル","EUR_symbol":"€","CNY_symbol":"元","GBP_displayName":"英国ポンド","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"ユーロ"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/currency",{"HKD_displayName":"香港ドル","CNY_displayName":"中国人民元","JPY_displayName":"日本円","JPY_symbol":"¥","USD_displayName":"米ドル","CAD_symbol":"CA$","GBP_displayName":"英国ポンド","CHF_displayName":"スイス フラン","CNY_symbol":"元","EUR_displayName":"ユーロ","GBP_symbol":"£","CAD_displayName":"カナダ ドル","USD_symbol":"$","EUR_symbol":"€","AUD_displayName":"オーストラリア ドル","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"A$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/dangi.js b/lib/dojo/cldr/nls/ja/dangi.js
index 56c43670d..900d5c389 100644
--- a/lib/dojo/cldr/nls/ja/dangi.js
+++ b/lib/dojo/cldr/nls/ja/dangi.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/dangi",{"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","field-dayperiod":"午前/午後","field-sun-relative+-1":"先週の日曜日","field-mon-relative+-1":"先週の月曜日","field-minute":"分","field-day-relative+-1":"昨日","field-weekday":"曜日","field-day-relative+-2":"一昨日","months-standAlone-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-era":"時代","field-hour":"時","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","months-standAlone-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-relative+-1":"先週の水曜日","field-day-relative+0":"今日","field-day-relative+1":"明日","field-day-relative+2":"明後日","dateFormat-long":"U年MMMd日","field-tue-relative+0":"今週の火曜日","field-zone":"タイムゾーン","field-tue-relative+1":"来週の火曜日","field-week-relative+-1":"先週","dateFormat-medium":"U年MMMd日","field-year-relative+0":"今年","field-year-relative+1":"翌年","field-sat-relative+-1":"先週の土曜日","field-year-relative+-1":"昨年","field-year":"年","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","months-standAlone-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-week":"週","field-week-relative+0":"今週","field-week-relative+1":"翌週","months-format-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-month-relative+0":"今月","field-month":"月","field-month-relative+1":"翌月","field-fri-relative+-1":"先週の金曜日","field-second":"秒","field-tue-relative+-1":"先週の火曜日","field-day":"日","months-format-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-thu-relative+0":"今週の木曜日","field-second-relative+0":"今すぐ","dateFormat-short":"U-M-d","field-thu-relative+1":"来週の木曜日","dateFormat-full":"U年MMMd日EEEE","months-format-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","field-month-relative+-1":"先月","field-thu-relative+-1":"先週の木曜日"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/dangi",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-thu-short-relative+0":"今週の木曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+-1":"先週の水曜","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","field-weekdayOfMonth-narrow":"月の曜日番号","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","months-standAlone-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-weekOfMonth":"月の週番号","field-month-short":"月","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","field-wed-relative+-1":"先週の水曜日","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","dateFormat-long":"U年MMMd日","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","field-month":"月","field-day-narrow":"日","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","dateFormat-medium":"U年MMMd日","field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-day-narrow-relative+-2":"一昨日","months-format-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-quarter-relative+-1":"前四半期","field-dayperiod-narrow":"午前/午後","field-week-narrow-relative+-1":"先週","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","field-hour":"時","months-format-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormat-full":"U年MMMd日EEEE","field-month-relative+-1":"先月","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","months-format-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","dateFormat-short":"U-M-d","field-thu-short-relative+-1":"先週の木曜","field-year-narrow-relative+-1":"昨年","field-mon-narrow-relative+-1":"先週の月曜","field-thu-narrow-relative+-1":"先週の木曜","field-tue-narrow-relative+-1":"先週の火曜","field-weekOfMonth-short":"月の週番号","field-wed-short-relative+0":"今週の水曜","months-standAlone-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","field-weekday":"曜日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","months-standAlone-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","field-zone-narrow":"タイムゾーン","field-thu-narrow-relative+0":"今週の木曜","field-thu-narrow-relative+1":"来週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","field-fri-short-relative+-1":"先週の金曜","field-thu-relative+-1":"先週の木曜日","field-week":"週","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","field-dayperiod-short":"午前/午後","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","field-week-short-relative+-1":"先週","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","field-weekOfMonth-narrow":"月の週番号","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/ethiopic.js b/lib/dojo/cldr/nls/ja/ethiopic.js
index 7be015b6b..73d822ae4 100644
--- a/lib/dojo/cldr/nls/ja/ethiopic.js
+++ b/lib/dojo/cldr/nls/ja/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/ethiopic",{"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","field-dayperiod":"午前/午後","field-sun-relative+-1":"先週の日曜日","field-mon-relative+-1":"先週の月曜日","field-minute":"分","field-day-relative+-1":"昨日","field-weekday":"曜日","field-day-relative+-2":"一昨日","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"時代","field-hour":"時","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","months-standAlone-abbr":["メスケレム","テケムト","ヘダル","ターサス","テル","イェカティト","メガビト","ミアジア","ゲンボト","セネ","ハムレ","ネハッセ","パグメン"],"field-wed-relative+-1":"先週の水曜日","field-day-relative+0":"今日","field-day-relative+1":"明日","field-day-relative+2":"明後日","field-tue-relative+0":"今週の火曜日","field-zone":"タイムゾーン","field-tue-relative+1":"来週の火曜日","field-week-relative+-1":"先週","field-year-relative+0":"今年","field-year-relative+1":"翌年","field-sat-relative+-1":"先週の土曜日","field-year-relative+-1":"昨年","field-year":"年","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","months-standAlone-wide":["メスケレム","テケムト","ヘダル","ターサス","テル","イェカティト","メガビト","ミアジア","ゲンボト","セネ","ハムレ","ネハッセ","パグメン"],"field-week":"週","field-week-relative+0":"今週","field-week-relative+1":"翌週","months-format-abbr":["メスケレム","テケムト","ヘダル","ターサス","テル","イェカティト","メガビト","ミアジア","ゲンボト","セネ","ハムレ","ネハッセ","パグメン"],"field-month-relative+0":"今月","field-month":"月","field-month-relative+1":"翌月","field-fri-relative+-1":"先週の金曜日","field-second":"秒","field-tue-relative+-1":"先週の火曜日","field-day":"日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-thu-relative+0":"今週の木曜日","field-second-relative+0":"今すぐ","field-thu-relative+1":"来週の木曜日","months-format-wide":["メスケレム","テケムト","ヘダル","ターサス","テル","イェカティト","メガビト","ミアジア","ゲンボト","セネ","ハムレ","ネハッセ","パグメン"],"field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","field-month-relative+-1":"先月","field-thu-relative+-1":"先週の木曜日"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/ethiopic",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-thu-short-relative+0":"今週の木曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+-1":"先週の水曜","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","field-weekdayOfMonth-narrow":"月の曜日番号","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"field-weekOfMonth":"月の週番号","field-month-short":"月","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","field-wed-relative+-1":"先週の水曜日","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","field-month":"月","field-day-narrow":"日","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-day-narrow-relative+-2":"一昨日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"前四半期","field-dayperiod-narrow":"午前/午後","field-week-narrow-relative+-1":"先週","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","field-hour":"時","months-format-wide":["メスケレム","テケムト","ヘダル","ターサス","テル","イェカティト","メガビト","ミアジア","ゲンボト","セネ","ハムレ","ネハッセ","パグメン"],"field-month-relative+-1":"先月","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","months-format-abbr":["メスケレム","テケムト","ヘダル","ターサス","テル","イェカティト","メガビト","ミアジア","ゲンボト","セネ","ハムレ","ネハッセ","パグメン"],"field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","field-thu-short-relative+-1":"先週の木曜","field-year-narrow-relative+-1":"昨年","field-mon-narrow-relative+-1":"先週の月曜","field-thu-narrow-relative+-1":"先週の木曜","field-tue-narrow-relative+-1":"先週の火曜","field-weekOfMonth-short":"月の週番号","field-wed-short-relative+0":"今週の水曜","months-standAlone-wide":["メスケレム","テケムト","ヘダル","ターサス","テル","イェカティト","メガビト","ミアジア","ゲンボト","セネ","ハムレ","ネハッセ","パグメン"],"field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","field-weekday":"曜日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","months-standAlone-abbr":["メスケレム","テケムト","ヘダル","ターサス","テル","イェカティト","メガビト","ミアジア","ゲンボト","セネ","ハムレ","ネハッセ","パグメン"],"field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","field-zone-narrow":"タイムゾーン","field-thu-narrow-relative+0":"今週の木曜","field-thu-narrow-relative+1":"来週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","field-fri-short-relative+-1":"先週の金曜","field-thu-relative+-1":"先週の木曜日","field-week":"週","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","field-dayperiod-short":"午前/午後","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","field-week-short-relative+-1":"先週","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","field-weekOfMonth-narrow":"月の週番号","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/generic.js b/lib/dojo/cldr/nls/ja/generic.js
index d7cb4fa1d..74f986b75 100644
--- a/lib/dojo/cldr/nls/ja/generic.js
+++ b/lib/dojo/cldr/nls/ja/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/generic",{"field-second-relative+0":"今すぐ","field-weekday":"曜日","field-wed-relative+0":"今週の水曜日","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-MMMEd":"M月d日(E)","field-wed-relative+1":"来週の水曜日","field-tue-relative+-1":"先週の火曜日","dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"先週の金曜日","field-wed-relative+-1":"先週の水曜日","dateFormatItem-yyyyQQQ":"Gy/QQQ","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-thu-relative+-1":"先週の木曜日","dateFormatItem-Md":"M/d","field-era":"時代","dateFormatItem-MEEEEd":"M/dEEEE","field-year":"年","field-hour":"時","field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","field-day-relative+0":"今日","field-day-relative+1":"明日","field-thu-relative+0":"今週の木曜日","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"明後日","field-thu-relative+1":"来週の木曜日","dateFormatItem-H":"H時","dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日(E)","dateFormatItem-M":"M月","dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-sun-relative+0":"今週の日曜日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"来週の日曜日","field-minute":"分","field-dayperiod":"午前/午後","dateFormatItem-d":"d日","dateFormatItem-yyyyMEEEEd":"Gy/M/dEEEE","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨日","dateFormatItem-h":"aK時","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"一昨日","dateFormatItem-MMMd":"M月d日","dateFormatItem-EEEEd":"d日EEEE","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","field-day":"日","field-zone":"タイムゾーン","dateFormatItem-y":"Gy年","field-year-relative+-1":"昨年","field-month-relative+-1":"先月","dateFormatItem-hm":"aK:mm","dateFormatItem-GyMMMEEEEd":"Gy年M月d日EEEE","dateFormatItem-yyyyMMMEEEEd":"Gy年M月d日EEEE","dateFormatItem-MMMEEEEd":"M月d日EEEE","dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"M月","field-tue-relative+0":"今週の火曜日","field-tue-relative+1":"来週の火曜日","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","dateFormat-short":"Gy/MM/dd","field-second":"秒","field-sat-relative+-1":"先週の土曜日","field-sun-relative+-1":"先週の日曜日","field-month-relative+0":"今月","field-month-relative+1":"翌月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy/MM/dd","field-year-relative+0":"今年","field-week-relative+-1":"先週","dateFormatItem-yyyyM":"Gy/M","field-year-relative+1":"翌年","dateFormatItem-yyyyQQQQ":"GyQQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"aK:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"今週","field-week-relative+1":"翌週"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/generic",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","dateFormatItem-MEEEEd":"M/d(EEEE)","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","dateFormatItem-ms":"mm:ss","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+0":"今週の木曜","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","dateFormatItem-EBhms":"BK:mm:ss (E)","field-wed-narrow-relative+-1":"先週の水曜","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月の曜日番号","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","dateFormatItem-yyyyQQQ":"Gy/QQQ","field-weekOfMonth":"月の週番号","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-yyyyMd":"GGGGGy/M/d","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","dateFormatItem-yyyyMEd":"GGGGGy/M/d(E)","field-wed-relative+-1":"先週の水曜日","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","dateFormatItem-Ehms":"aK:mm:ss (E)","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","dateFormatItem-MMMEEEEd":"M月d日(EEEE)","field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"M月","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","dateFormat-medium":"GGGGGy/MM/dd","dateFormatItem-yyyyMMMM":"Gy年M月","dateFormatItem-EEEEd":"d日(EEEE)","dateFormatItem-yyyyM":"GGGGGy/M","field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-2":"一昨日","field-quarter-relative+-1":"前四半期","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"午前/午後","field-week-narrow-relative+-1":"先週","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"時","dateFormat-full":"Gy年M月d日(EEEE)","field-month-relative+-1":"先月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","dateFormatItem-EBhm":"BK:mm (E)","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","dateFormatItem-Ehm":"aK:mm (E)","field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","dateFormat-short":"GGGGGy/M/d","dateFormatItem-Bh":"BK時","field-year-narrow-relative+-1":"昨年","field-thu-short-relative+-1":"先週の木曜","dateFormatItem-yyyyMMMEd":"Gy年M月d日(E)","field-mon-narrow-relative+-1":"先週の月曜","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"先週の木曜","dateFormatItem-E":"ccc","dateFormatItem-H":"H時","field-weekOfMonth-short":"月の週番号","field-tue-narrow-relative+-1":"先週の火曜","dateFormatItem-yyyy":"Gy年","dateFormatItem-M":"M月","field-wed-short-relative+0":"今週の水曜","field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"aK:mm","dateFormatItem-d":"d日","field-weekday":"曜日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","dateFormatItem-h":"aK時","dateFormatItem-yyyyMEEEEd":"GGGGGy/M/d(EEEE)","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"タイムゾーン","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"今週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-narrow-relative+1":"来週の木曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","dateFormatItem-hms":"aK:mm:ss","field-fri-short-relative+-1":"先週の金曜","field-thu-relative+-1":"先週の木曜日","field-week":"週","dateFormatItem-Ed":"d日(E)","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","dateFormatItem-yyyyMMMEEEEd":"Gy年M月d日(EEEE)","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年M月","field-dayperiod-short":"午前/午後","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","field-week-short-relative+-1":"先週","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","dateFormatItem-Bhms":"BK:mm:ss","field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","field-mon-narrow-relative+0":"今週の月曜","dateFormatItem-EHm":"H:mm (E)","field-mon-narrow-relative+1":"来週の月曜","dateFormatItem-GyMMMEEEEd":"Gy年M月d日(EEEE)","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","dateFormatItem-MMMEd":"M月d日(E)","field-weekOfMonth-narrow":"月の週番号","dateFormatItem-EHms":"H:mm:ss (E)","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","dateFormatItem-Bhm":"BK:mm","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/gregorian.js b/lib/dojo/cldr/nls/ja/gregorian.js
index 4add244b5..a361597f1 100644
--- a/lib/dojo/cldr/nls/ja/gregorian.js
+++ b/lib/dojo/cldr/nls/ja/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/gregorian",{"dateFormatItem-Ehm":"aK:mm (E)","days-standAlone-short":["日","月","火","水","木","金","土"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"今すぐ","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"曜日","dateFormatItem-yQQQ":"y/QQQ","dateFormatItem-yMEd":"y/M/d(E)","field-wed-relative+0":"今週の水曜日","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-MMMEd":"M月d日(E)","field-wed-relative+1":"来週の水曜日","eraNarrow":["BC","BCE","AD","CE"],"dateFormatItem-yMM":"y/MM","field-tue-relative+-1":"先週の火曜日","days-format-short":["日","月","火","水","木","金","土"],"dateFormat-long":"y年M月d日","field-fri-relative+-1":"先週の金曜日","field-wed-relative+-1":"先週の水曜日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"午後","dateFormat-full":"y年M月d日EEEE","field-thu-relative+-1":"先週の木曜日","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"正午","dateFormatItem-yMd":"y/M/d","dateFormatItem-yM":"y/M","field-era":"時代","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-short":"H:mm","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-MEEEEd":"M/dEEEE","timeFormat-long":"H:mm:ss z","dateFormatItem-yMMM":"y年M月","dateFormatItem-yQQQQ":"yQQQQ","field-year":"年","field-hour":"時","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","timeFormat-full":"H時mm分ss秒 zzzz","dateFormatItem-yMEEEEd":"y/M/dEEEE","field-day-relative+0":"今日","field-day-relative+1":"明日","field-thu-relative+0":"今週の木曜日","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"明後日","field-thu-relative+1":"来週の木曜日","dateFormatItem-H":"H時","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-Gy":"Gy年","dateFormatItem-M":"M月","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yMMMEEEEd":"y年M月d日EEEE","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"今週の日曜日","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-sun-relative+1":"来週の日曜日","eraAbbr":["紀元前","西暦"],"field-minute":"分","field-dayperiod":"午前/午後","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"昨日","dateFormatItem-h":"aK時","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"午前","field-day-relative+-2":"一昨日","dateFormatItem-MMMd":"M月d日","dateFormatItem-EEEEd":"d日EEEE","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","field-day":"日","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-zone":"タイムゾーン","dateFormatItem-y":"y年","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"昨年","field-month-relative+-1":"先月","dateFormatItem-hm":"aK:mm","dateFormatItem-GyMMMEEEEd":"Gy年M月d日EEEE","days-format-abbr":["日","月","火","水","木","金","土"],"eraNames":["紀元前","西暦"],"dateFormatItem-yMMMd":"y年M月d日","days-format-narrow":["日","月","火","水","木","金","土"],"dateFormatItem-MMMEEEEd":"M月d日EEEE","days-standAlone-narrow":["日","月","火","水","木","金","土"],"dateFormatItem-MMM":"M月","field-month":"月","field-tue-relative+0":"今週の火曜日","field-tue-relative+1":"来週の火曜日","dayPeriods-format-wide-am":"午前","dateFormatItem-EHm":"H:mm (E)","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","dateFormat-short":"y年M月d日","dateFormatItem-EHms":"H:mm:ss (E)","dateFormatItem-Ehms":"aK:mm:ss (E)","dayPeriods-format-narrow-noon":"正午","field-second":"秒","field-sat-relative+-1":"先週の土曜日","dateFormatItem-yMMMEd":"y年M月d日(E)","field-sun-relative+-1":"先週の日曜日","field-month-relative+0":"今月","field-month-relative+1":"翌月","dateFormatItem-Ed":"d日(E)","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"週","dateFormat-medium":"y年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"先週","field-year-relative+1":"翌年","dayPeriods-format-narrow-pm":"午後","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"aK:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"先週の月曜日","field-week-relative+0":"今週","field-week-relative+1":"翌週"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/gregorian",{"dateFormatItem-yMMMM":"y年M月","field-thu-narrow-relative+0":"今週の木曜","field-thu-narrow-relative+1":"来週の木曜","field-sun-narrow-relative+0":"今週の日曜","field-sun-narrow-relative+1":"来週の日曜","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dayPeriods-standAlone-abbr-pm":"午後","dateFormatItem-Hms":"H:mm:ss","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜","eraNarrow":["BC","AD"],"dateFormatItem-Hmv":"H:mm v","dateFormatItem-hmsv":"aK:mm:ss v","dateFormatItem-yMMMd":"y年M月d日","dayPeriods-format-abbr-night1":"夜","dayPeriods-format-abbr-night2":"夜中","dayPeriods-format-narrow-evening1":"夕方","days-standAlone-narrow":["日","月","火","水","木","金","土"],"days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dayPeriods-format-abbr-afternoon1":"昼","dayPeriods-format-wide-evening1":"夕方","dateFormatItem-Ehm":"aK:mm (E)","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"先週の水曜","dayPeriods-standAlone-wide-evening1":"夕方","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yMM":"y/MM","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","dateFormatItem-Ehms":"aK:mm:ss (E)","dayPeriods-standAlone-narrow-evening1":"夕方","dayPeriods-standAlone-abbr-afternoon1":"昼","field-thu-relative+0":"今週の木曜日","dayPeriods-standAlone-abbr-night1":"夜","field-thu-relative+1":"来週の木曜日","dayPeriods-standAlone-abbr-night2":"夜中","dayPeriods-format-wide-am":"午前","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","dateFormatItem-yMd":"y/M/d","field-thu-narrow-relative+-1":"先週の木曜","field-quarter-relative+0":"今四半期","field-quarter-relative+1":"翌四半期","field-sun-short-relative+0":"今週の日曜","timeFormat-short":"H:mm","field-sun-short-relative+1":"来週の日曜","dateFormatItem-hms":"aK:mm:ss","dayPeriods-format-narrow-afternoon1":"昼","dateFormatItem-Md":"M/d","dateFormatItem-Hmsv":"H:mm:ss v","dateFormatItem-hmv":"aK:mm v","field-week-narrow":"週","dateFormatItem-GyMMMEEEEd":"Gy年M月d日EEEE","field-hour-relative+0":"1 時間以内","field-day-relative+-1":"昨日","field-day-relative+-2":"一昨日","field-mon-narrow-relative+-1":"先週の月曜","field-minute-narrow":"分","field-thu-short-relative+0":"今週の木曜","field-mon-relative+0":"今週の月曜日","field-thu-short-relative+1":"来週の木曜","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+0":"今日","field-era-short":"時代","field-day-narrow-relative+1":"明日","field-sat-narrow-relative+0":"今週の土曜","field-day-narrow-relative+2":"明後日","timeFormat-long":"H:mm:ss z","field-sat-narrow-relative+1":"来週の土曜","field-week-narrow-relative+0":"今週","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","field-month":"月","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-weekday-narrow":"曜日","dayPeriods-standAlone-narrow-afternoon1":"昼","field-year-relative+0":"今年","field-year-relative+1":"来年","dayPeriods-format-abbr-evening1":"夕方","dayPeriods-format-abbr-noon":"正午","dayPeriods-format-narrow-midnight":"真夜中","dayPeriods-format-wide-midnight":"真夜中","field-tue-relative+0":"今週の火曜日","field-tue-relative+1":"来週の火曜日","dayPeriods-standAlone-abbr-evening1":"夕方","dateFormatItem-hm":"aK:mm","dayPeriods-standAlone-wide-midnight":"真夜中","field-year-narrow":"年","dayPeriods-standAlone-abbr-noon":"正午","field-tue-short-relative+0":"今週の火曜","dayPeriods-standAlone-narrow-midnight":"真夜中","field-tue-short-relative+1":"来週の火曜","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"BK:mm (E)","dateFormatItem-H":"H時","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","dateFormatItem-M":"M月","field-wed-short-relative+0":"今週の水曜","field-fri-short-relative+0":"今週の金曜","field-wed-short-relative+1":"来週の水曜","field-fri-short-relative+1":"来週の金曜","field-weekOfMonth-short":"月の週番号","field-quarter-short-relative+-1":"前四半期","field-year-short-relative+-1":"昨年","dateFormatItem-yMMMEEEEd":"y年M月d日EEEE","dateFormatItem-Bhm":"BK:mm","dayPeriods-format-wide-night1":"夜","dayPeriods-format-wide-night2":"夜中","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"前四半期","dateFormatItem-d":"d日","dayPeriods-format-abbr-pm":"午後","dateFormatItem-h":"aK時","quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"field-weekOfMonth-narrow":"月の週番号","dateFormatItem-y":"y年","field-minute-relative+0":"1 分以内","field-year-short-relative+0":"今年","dateFormatItem-EBhms":"BK:mm:ss (E)","field-year-short-relative+1":"来年","field-weekday":"曜日","dayPeriods-format-narrow-pm":"午後","field-tue-narrow-relative+-1":"先週の火曜","dateFormatItem-yMEd":"y/M/d(E)","dayPeriods-standAlone-wide-night1":"夜","dayPeriods-standAlone-wide-night2":"夜中","field-year-narrow-relative+-1":"昨年","field-sat-relative+-1":"先週の土曜日","dayPeriods-format-abbr-midnight":"真夜中","dayPeriods-format-narrow-morning1":"朝","dateFormatItem-EEEEd":"d日EEEE","dayPeriods-format-wide-morning1":"朝","dayPeriods-standAlone-abbr-midnight":"真夜中","dayPeriods-standAlone-narrow-pm":"午後","dayPeriods-standAlone-wide-morning1":"朝","field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","field-second":"秒","dateFormatItem-yMMMEd":"y年M月d日(E)","field-year-relative+-1":"昨年","field-weekdayOfMonth-short":"月の曜日番号","dateFormat-short":"y/MM/dd","eraNames":["紀元前","西暦"],"field-second-short":"秒","field-thu-short-relative+-1":"先週の木曜","field-zone":"タイムゾーン","field-dayperiod-narrow":"午前/午後","field-sun-short-relative+-1":"先週の日曜","dayPeriods-standAlone-narrow-morning1":"朝","eraAbbr":["紀元前","西暦"],"field-week-short":"週","dayPeriods-standAlone-abbr-am":"午前","dayPeriods-standAlone-wide-pm":"午後","dateFormatItem-ms":"mm:ss","field-day-relative+0":"今日","field-day-relative+1":"明日","field-day-relative+2":"明後日","field-day-short-relative+0":"今日","field-dayOfYear-short":"年の通日","field-day-short-relative+1":"明日","dateFormat-long":"y年M月d日","field-day-short-relative+2":"明後日","field-sun-narrow-relative+-1":"先週の日曜","dayPeriods-format-wide-noon":"正午","field-second-relative+0":"今","field-quarter-relative+-1":"前四半期","dayPeriods-format-narrow-night1":"夜","dayPeriods-format-narrow-night2":"夜中","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-standAlone-wide-noon":"正午","dayPeriods-standAlone-narrow-night1":"夜","dayPeriods-standAlone-narrow-night2":"夜中","field-week-relative+-1":"先週","dayPeriods-format-abbr-morning1":"朝","field-month-relative+-1":"先月","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"年","field-era":"時代","dayPeriods-standAlone-abbr-morning1":"朝","days-standAlone-short":["日","月","火","水","木","金","土"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"y年QQQQ","field-day-short-relative+-1":"昨日","field-day-short-relative+-2":"一昨日","dateFormatItem-GyMMM":"Gy年M月","timeFormat-full":"H時mm分ss秒 zzzz","dateFormatItem-yMEEEEd":"y/M/dEEEE","dateFormatItem-Bhms":"BK:mm:ss","field-hour":"時","field-dayOfYear-narrow":"通日","field-quarter":"四半期","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-day":"日","field-mon-relative+-1":"先週の月曜日","field-dayOfYear":"年の通日","dateFormat-medium":"y/MM/dd","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"y年M月","dateFormatItem-GyMMMd":"Gy年M月d日","dateFormatItem-MEd":"M/d(E)","field-tue-short-relative+-1":"先週の火曜","field-year-short":"年","field-month-short":"月","dateFormatItem-MMMEd":"M月d日(E)","dayPeriods-format-wide-afternoon1":"昼","dateFormatItem-MMMd":"M月d日","dateFormatItem-Bh":"BK時","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dayPeriods-format-abbr-am":"午前","field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","dayPeriods-format-wide-pm":"午後","days-standAlone-abbr":["日","月","火","水","木","金","土"],"field-zone-short":"タイムゾーン","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","dayPeriods-standAlone-wide-afternoon1":"昼","field-fri-short-relative+-1":"先週の金曜","field-month-narrow":"月","dayPeriods-format-narrow-am":"午前","field-month-narrow-relative+-1":"先月","days-format-abbr":["日","月","火","水","木","金","土"],"field-weekday-short":"曜日","field-day-narrow-relative+-1":"昨日","field-day-narrow-relative+-2":"一昨日","field-quarter-short":"四半期","days-format-short":["日","月","火","水","木","金","土"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-narrow":["日","月","火","水","木","金","土"],"dateFormatItem-EHm":"H:mm (E)","field-quarter-narrow":"四半期","field-mon-short-relative+0":"今週の月曜","field-mon-short-relative+1":"来週の月曜","field-dayperiod-short":"午前/午後","dayPeriods-standAlone-narrow-am":"午前","field-week-narrow-relative+-1":"先週","field-thu-relative+-1":"先週の木曜日","field-fri-narrow-relative+-1":"先週の金曜","field-mon-short-relative+-1":"先週の月曜","timeFormat-medium":"H:mm:ss","field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","dateFormatItem-Ed":"d日(E)","field-wed-relative+-1":"先週の水曜日","field-weekOfMonth":"月の週番号","field-weekdayOfMonth-narrow":"月の曜日番号","dayPeriods-standAlone-wide-am":"午前","dateFormatItem-yQQQ":"y/QQQ","field-fri-relative+-1":"先週の金曜日","field-minute":"分","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-MEEEEd":"M/dEEEE","field-day-short":"日","field-dayperiod":"午前/午後","field-hour-short":"時","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-month-relative+0":"今月","field-second-narrow":"秒","field-month-relative+1":"来月","dateFormat-full":"y年M月d日EEEE","field-era-narrow":"時代","field-sat-short-relative+-1":"先週の土曜","dayPeriods-format-narrow-noon":"正午","field-week-short-relative+-1":"先週","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"y/M","field-sun-relative+-1":"先週の日曜日","field-wed-short-relative+-1":"先週の水曜","field-weekdayOfMonth":"月の曜日番号","dateFormatItem-MMMEEEEd":"M月d日EEEE","field-quarter-narrow-relative+0":"今四半期","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","field-quarter-narrow-relative+1":"翌四半期","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","field-hour-narrow":"時","field-year-narrow-relative+0":"今年","field-year-narrow-relative+1":"来年","dateFormatItem-Gy":"Gy年","field-zone-narrow":"タイムゾーン","dayPeriods-standAlone-narrow-noon":"正午","field-tue-relative+-1":"先週の火曜日","field-minute-short":"分","dateFormatItem-yw":"Y年第w週","dateFormatItem-Hm":"H:mm","field-week-relative+0":"今週","field-week-relative+1":"来週","dateFormatItem-MMM":"M月","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","field-sat-narrow-relative+-1":"先週の土曜","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dateFormatItem-MMMMW":"M月第W週","field-month-short-relative+-1":"先月","dateFormatItem-EHms":"H:mm:ss (E)","dateFormatItem-MMMMd":"M月d日","field-week":"週","field-day-narrow":"日"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/hebrew.js b/lib/dojo/cldr/nls/ja/hebrew.js
index 3c0041405..a10045b4a 100644
--- a/lib/dojo/cldr/nls/ja/hebrew.js
+++ b/lib/dojo/cldr/nls/ja/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/hebrew",{"days-standAlone-short":["日","月","火","水","木","金","土"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-second-relative+0":"今すぐ","field-weekday":"曜日","months-standAlone-narrow-leap":"7","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-MMMEd":"M月d日(E)","field-tue-relative+-1":"先週の火曜日","days-format-short":["日","月","火","水","木","金","土"],"dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"先週の金曜日","field-wed-relative+-1":"先週の水曜日","months-format-wide":["ティスレ","へシボン","キスレブ","テベット","シバット","アダル I","アダル","ニサン","イヤル","シバン","タムズ","アヴ","エルル"],"dateFormatItem-yyyyQQQ":"Gy/QQQ","dayPeriods-format-wide-pm":"午後","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-thu-relative+-1":"先週の木曜日","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"正午","field-era":"時代","months-standAlone-wide":["ティスレ","へシボン","キスレブ","テベット","シバット","アダル I","アダル","ニサン","イヤル","シバン","タムズ","アヴ","エルル"],"timeFormat-short":"H:mm","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"timeFormat-long":"H:mm:ss z","field-year":"年","field-hour":"時","months-format-abbr-leap":"アダル II","months-format-abbr":["ティスレ","へシボン","キスレブ","テベット","シバット","アダル I","アダル","ニサン","イヤル","シバン","タムズ","アヴ","エルル"],"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","timeFormat-full":"H時mm分ss秒 zzzz","field-day-relative+0":"今日","field-thu-relative+0":"今週の木曜日","field-day-relative+1":"明日","field-thu-relative+1":"来週の木曜日","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"明後日","dateFormatItem-H":"H時","months-standAlone-abbr":["ティスレ","へシボン","キスレブ","テベット","シバット","アダル I","アダル","ニサン","イヤル","シバン","タムズ","アヴ","エルル"],"quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日(E)","dateFormatItem-M":"M月","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","months-standAlone-wide-leap":"アダル II","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"今週の日曜日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"来週の日曜日","months-format-narrow-leap":"7","eraAbbr":["AM"],"field-minute":"分","field-dayperiod":"午前/午後","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨日","dateFormatItem-h":"aK時","dayPeriods-format-narrow-am":"午前","field-day-relative+-2":"一昨日","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","field-day":"日","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-zone":"タイムゾーン","months-standAlone-abbr-leap":"アダル II","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"dateFormatItem-y":"Gy年","field-year-relative+-1":"昨年","field-month-relative+-1":"先月","dateFormatItem-hm":"aK:mm","days-format-abbr":["日","月","火","水","木","金","土"],"days-format-narrow":["日","月","火","水","木","金","土"],"dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"M月","days-standAlone-narrow":["日","月","火","水","木","金","土"],"field-tue-relative+0":"今週の火曜日","field-tue-relative+1":"来週の火曜日","dayPeriods-format-wide-am":"午前","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","dateFormat-short":"Gy/MM/dd","dayPeriods-format-narrow-noon":"正午","field-second":"秒","field-sat-relative+-1":"先週の土曜日","field-sun-relative+-1":"先週の日曜日","field-month-relative+0":"今月","field-month-relative+1":"翌月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy/MM/dd","field-year-relative+0":"今年","field-week-relative+-1":"先週","field-year-relative+1":"翌年","dateFormatItem-yyyyM":"Gy/M","dayPeriods-format-narrow-pm":"午後","dateFormatItem-yyyyQQQQ":"GyQQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"aK:mm:ss","months-format-wide-leap":"アダル II","field-mon-relative+-1":"先週の月曜日","dateFormatItem-GyMMM":"Gy年M月","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"今週","field-week-relative+1":"翌週"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/hebrew",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","timeFormat-short":"H:mm","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-thu-short-relative+0":"今週の木曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+-1":"先週の水曜","dateFormatItem-EBhms":"BK:mm:ss (E)","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","dayPeriods-format-narrow-am":"午前","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月の曜日番号","dayPeriods-format-abbr-am":"午前","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","dateFormatItem-yyyyQQQ":"Gy/QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["AM"],"field-weekOfMonth":"月の週番号","dayPeriods-standAlone-abbr-pm":"午後","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-yyyyMd":"GGGGGy/M/d","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","dayPeriods-format-wide-am":"午前","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","dateFormatItem-yyyyMEd":"GGGGGy/M/d(E)","field-wed-relative+-1":"先週の水曜日","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","days-standAlone-narrow":["日","月","火","水","木","金","土"],"dayPeriods-standAlone-wide-pm":"午後","dateFormatItem-Ehms":"aK:mm:ss (E)","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"days-format-narrow":["日","月","火","水","木","金","土"],"field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"M月","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","dayPeriods-format-narrow-pm":"午後","dateFormat-medium":"Gy/MM/dd","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["AM"],"dayPeriods-format-abbr-pm":"午後","dateFormatItem-yyyyM":"GGGGGy/M","field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-day-narrow-relative+-2":"一昨日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"前四半期","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"午前/午後","dayPeriods-standAlone-narrow-am":"午前","field-week-narrow-relative+-1":"先週","days-format-short":["日","月","火","水","木","金","土"],"dayPeriods-format-wide-pm":"午後","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","dateFormatItem-Md":"M/d","field-hour":"時","months-format-wide":["ティスレ","へシボン","キスレブ","テベット","シバット","アダル I","アダル","ニサン","イヤル","シバン","タムズ","アヴ","エルル"],"dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"先月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","dateFormatItem-EBhm":"BK:mm (E)","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","dateFormatItem-Ehm":"aK:mm (E)","months-format-abbr":["ティスレ","へシボン","キスレブ","テベット","シバット","アダル I","アダル","ニサン","イヤル","シバン","タムズ","アヴ","エルル"],"field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","dateFormat-short":"Gy/MM/dd","dateFormatItem-Bh":"BK時","field-thu-short-relative+-1":"先週の木曜","field-year-narrow-relative+-1":"昨年","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyyyMMMEd":"Gy年M月d日(E)","field-mon-narrow-relative+-1":"先週の月曜","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"先週の木曜","field-tue-narrow-relative+-1":"先週の火曜","field-weekOfMonth-short":"月の週番号","dateFormatItem-H":"H時","dayPeriods-standAlone-narrow-pm":"午後","dateFormatItem-yyyy":"Gy年","field-wed-short-relative+0":"今週の水曜","months-standAlone-wide":["ティスレ","へシボン","キスレブ","テベット","シバット","アダル I","アダル","ニサン","イヤル","シバン","タムズ","アヴ","エルル"],"dateFormatItem-M":"M月","field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-hm":"aK:mm","months-format-abbr-leap":"アダル II","field-weekday":"曜日","dateFormatItem-d":"d日","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","dateFormatItem-h":"aK時","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","months-standAlone-abbr":["ティスレ","へシボン","キスレブ","テベット","シバット","アダル I","アダル","ニサン","イヤル","シバン","タムズ","アヴ","エルル"],"months-format-wide-leap":"アダル II","months-format-narrow-leap":"7","field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","timeFormat-full":"H時mm分ss秒 zzzz","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"タイムゾーン","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"今週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-narrow-relative+1":"来週の木曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","field-fri-short-relative+-1":"先週の金曜","dateFormatItem-hms":"aK:mm:ss","field-thu-relative+-1":"先週の木曜日","field-week":"週","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-Ed":"d日(E)","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","field-dayperiod-short":"午前/午後","dateFormatItem-yyyyMMM":"Gy年M月","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","days-standAlone-short":["日","月","火","水","木","金","土"],"field-week-short-relative+-1":"先週","months-standAlone-abbr-leap":"アダル II","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","eraNarrow":"AM","dateFormatItem-Bhms":"BK:mm:ss","field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","dateFormatItem-EHm":"H:mm (E)","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","dateFormatItem-MMMEd":"M月d日(E)","field-weekOfMonth-narrow":"月の週番号","dateFormatItem-EHms":"H:mm:ss (E)","field-weekday-narrow":"曜日","months-standAlone-wide-leap":"アダル II","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","dayPeriods-standAlone-abbr-am":"午前","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","days-format-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-Bhm":"BK:mm","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜","dayPeriods-standAlone-wide-am":"午前"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/indian.js b/lib/dojo/cldr/nls/ja/indian.js
index 68afe9b42..1d910be96 100644
--- a/lib/dojo/cldr/nls/ja/indian.js
+++ b/lib/dojo/cldr/nls/ja/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/indian",{"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","field-dayperiod":"午前/午後","field-sun-relative+-1":"先週の日曜日","field-mon-relative+-1":"先週の月曜日","field-minute":"分","field-day-relative+-1":"昨日","field-weekday":"曜日","field-day-relative+-2":"一昨日","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"時代","field-hour":"時","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","months-standAlone-abbr":["カイトラ","ヴァイサカ","ジャイスタ","アーサダ","スラバナ","バードラ","アスビナ","カルディカ","アヴラハヤナ","パウサ","マーガ","パルグナ"],"field-wed-relative+-1":"先週の水曜日","field-day-relative+0":"今日","field-day-relative+1":"明日","eraAbbr":["サカ"],"field-day-relative+2":"明後日","field-tue-relative+0":"今週の火曜日","field-zone":"タイムゾーン","field-tue-relative+1":"来週の火曜日","field-week-relative+-1":"先週","field-year-relative+0":"今年","field-year-relative+1":"翌年","field-sat-relative+-1":"先週の土曜日","field-year-relative+-1":"昨年","field-year":"年","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","months-standAlone-wide":["カイトラ","ヴァイサカ","ジャイスタ","アーサダ","スラバナ","バードラ","アスビナ","カルディカ","アヴラハヤナ","パウサ","マーガ","パルグナ"],"field-week":"週","field-week-relative+0":"今週","field-week-relative+1":"翌週","months-format-abbr":["カイトラ","ヴァイサカ","ジャイスタ","アーサダ","スラバナ","バードラ","アスビナ","カルディカ","アヴラハヤナ","パウサ","マーガ","パルグナ"],"field-month-relative+0":"今月","field-month":"月","field-month-relative+1":"翌月","field-fri-relative+-1":"先週の金曜日","field-second":"秒","field-tue-relative+-1":"先週の火曜日","field-day":"日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-thu-relative+0":"今週の木曜日","field-second-relative+0":"今すぐ","field-thu-relative+1":"来週の木曜日","months-format-wide":["カイトラ","ヴァイサカ","ジャイスタ","アーサダ","スラバナ","バードラ","アスビナ","カルディカ","アヴラハヤナ","パウサ","マーガ","パルグナ"],"field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","field-month-relative+-1":"先月","field-thu-relative+-1":"先週の木曜日"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/indian",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-thu-short-relative+0":"今週の木曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+-1":"先週の水曜","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","field-weekdayOfMonth-narrow":"月の曜日番号","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["サカ"],"field-weekOfMonth":"月の週番号","field-month-short":"月","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","field-wed-relative+-1":"先週の水曜日","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","field-month":"月","field-day-narrow":"日","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","eraAbbr":["サカ"],"field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-day-narrow-relative+-2":"一昨日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"前四半期","field-dayperiod-narrow":"午前/午後","field-week-narrow-relative+-1":"先週","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","field-hour":"時","months-format-wide":["カイトラ","ヴァイサカ","ジャイスタ","アーサダ","スラバナ","バードラ","アスビナ","カルディカ","アヴラハヤナ","パウサ","マーガ","パルグナ"],"field-month-relative+-1":"先月","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","months-format-abbr":["カイトラ","ヴァイサカ","ジャイスタ","アーサダ","スラバナ","バードラ","アスビナ","カルディカ","アヴラハヤナ","パウサ","マーガ","パルグナ"],"field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","field-thu-short-relative+-1":"先週の木曜","field-year-narrow-relative+-1":"昨年","field-mon-narrow-relative+-1":"先週の月曜","field-thu-narrow-relative+-1":"先週の木曜","field-tue-narrow-relative+-1":"先週の火曜","field-weekOfMonth-short":"月の週番号","field-wed-short-relative+0":"今週の水曜","months-standAlone-wide":["カイトラ","ヴァイサカ","ジャイスタ","アーサダ","スラバナ","バードラ","アスビナ","カルディカ","アヴラハヤナ","パウサ","マーガ","パルグナ"],"field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","field-weekday":"曜日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","months-standAlone-abbr":["カイトラ","ヴァイサカ","ジャイスタ","アーサダ","スラバナ","バードラ","アスビナ","カルディカ","アヴラハヤナ","パウサ","マーガ","パルグナ"],"field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","field-zone-narrow":"タイムゾーン","field-thu-narrow-relative+0":"今週の木曜","field-thu-narrow-relative+1":"来週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","field-fri-short-relative+-1":"先週の金曜","field-thu-relative+-1":"先週の木曜日","field-week":"週","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","field-dayperiod-short":"午前/午後","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","field-week-short-relative+-1":"先週","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","eraNarrow":"サカ","field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","field-weekOfMonth-narrow":"月の週番号","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/islamic.js b/lib/dojo/cldr/nls/ja/islamic.js
index 694f1f553..741854022 100644
--- a/lib/dojo/cldr/nls/ja/islamic.js
+++ b/lib/dojo/cldr/nls/ja/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/islamic",{"days-standAlone-short":["日","月","火","水","木","金","土"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"今すぐ","field-weekday":"曜日","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-MMMEd":"M月d日(E)","field-tue-relative+-1":"先週の火曜日","days-format-short":["日","月","火","水","木","金","土"],"dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"先週の金曜日","field-wed-relative+-1":"先週の水曜日","months-format-wide":["ムハッラム","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアバーン","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"dateFormatItem-yyyyQQQ":"Gy/QQQ","dayPeriods-format-wide-pm":"午後","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-thu-relative+-1":"先週の木曜日","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"正午","field-era":"時代","months-standAlone-wide":["ムハッラム","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアバーン","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"timeFormat-short":"H:mm","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"timeFormat-long":"H:mm:ss z","field-year":"年","field-hour":"時","months-format-abbr":["ムハッラム","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアバーン","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","timeFormat-full":"H時mm分ss秒 zzzz","field-day-relative+0":"今日","field-thu-relative+0":"今週の木曜日","field-day-relative+1":"明日","field-thu-relative+1":"来週の木曜日","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"明後日","dateFormatItem-H":"H時","months-standAlone-abbr":["ムハッラム","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアバーン","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日(E)","dateFormatItem-M":"M月","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"今週の日曜日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"来週の日曜日","eraAbbr":["AH"],"field-minute":"分","field-dayperiod":"午前/午後","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨日","dateFormatItem-h":"aK時","dayPeriods-format-narrow-am":"午前","field-day-relative+-2":"一昨日","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","field-day":"日","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-zone":"タイムゾーン","dateFormatItem-y":"Gy年","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"昨年","field-month-relative+-1":"先月","dateFormatItem-hm":"aK:mm","days-format-abbr":["日","月","火","水","木","金","土"],"days-format-narrow":["日","月","火","水","木","金","土"],"dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"M月","days-standAlone-narrow":["日","月","火","水","木","金","土"],"field-tue-relative+0":"今週の火曜日","field-tue-relative+1":"来週の火曜日","dayPeriods-format-wide-am":"午前","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","dateFormat-short":"Gy/MM/dd","dayPeriods-format-narrow-noon":"正午","field-second":"秒","field-sat-relative+-1":"先週の土曜日","field-sun-relative+-1":"先週の日曜日","field-month-relative+0":"今月","field-month-relative+1":"翌月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy/MM/dd","field-year-relative+0":"今年","field-week-relative+-1":"先週","field-year-relative+1":"翌年","dateFormatItem-yyyyM":"Gy/M","dayPeriods-format-narrow-pm":"午後","dateFormatItem-yyyyQQQQ":"GyQQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"aK:mm:ss","field-mon-relative+-1":"先週の月曜日","dateFormatItem-GyMMM":"Gy年M月","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"今週","field-week-relative+1":"翌週"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/islamic",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","timeFormat-short":"H:mm","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-thu-short-relative+0":"今週の木曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+-1":"先週の水曜","dateFormatItem-EBhms":"BK:mm:ss (E)","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","dayPeriods-format-narrow-am":"午前","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月の曜日番号","dayPeriods-format-abbr-am":"午前","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","dateFormatItem-yyyyQQQ":"Gy/QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AH"],"field-weekOfMonth":"月の週番号","dayPeriods-standAlone-abbr-pm":"午後","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-yyyyMd":"GGGGGy/M/d","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","dayPeriods-format-wide-am":"午前","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","dateFormatItem-yyyyMEd":"GGGGGy/M/d(E)","field-wed-relative+-1":"先週の水曜日","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","days-standAlone-narrow":["日","月","火","水","木","金","土"],"dayPeriods-standAlone-wide-pm":"午後","dateFormatItem-Ehms":"aK:mm:ss (E)","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"days-format-narrow":["日","月","火","水","木","金","土"],"field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"M月","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","dayPeriods-format-narrow-pm":"午後","dateFormat-medium":"Gy/MM/dd","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["AH"],"dayPeriods-format-abbr-pm":"午後","dateFormatItem-yyyyM":"GGGGGy/M","field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-day-narrow-relative+-2":"一昨日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"前四半期","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"午前/午後","dayPeriods-standAlone-narrow-am":"午前","field-week-narrow-relative+-1":"先週","days-format-short":["日","月","火","水","木","金","土"],"dayPeriods-format-wide-pm":"午後","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","dateFormatItem-Md":"M/d","field-hour":"時","months-format-wide":["ムハッラム","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアバーン","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"先月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","dateFormatItem-EBhm":"BK:mm (E)","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","dateFormatItem-Ehm":"aK:mm (E)","months-format-abbr":["ムハッラム","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアバーン","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","dateFormat-short":"Gy/MM/dd","dateFormatItem-Bh":"BK時","field-thu-short-relative+-1":"先週の木曜","field-year-narrow-relative+-1":"昨年","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyyyMMMEd":"Gy年M月d日(E)","field-mon-narrow-relative+-1":"先週の月曜","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"先週の木曜","field-tue-narrow-relative+-1":"先週の火曜","field-weekOfMonth-short":"月の週番号","dateFormatItem-H":"H時","dayPeriods-standAlone-narrow-pm":"午後","dateFormatItem-yyyy":"Gy年","field-wed-short-relative+0":"今週の水曜","dateFormatItem-M":"M月","months-standAlone-wide":["ムハッラム","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアバーン","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-hm":"aK:mm","dateFormatItem-d":"d日","field-weekday":"曜日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","dateFormatItem-h":"aK時","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","months-standAlone-abbr":["ムハッラム","サフアル","ラビー・ウル・アウワル","ラビー・ウッ・サーニー","ジュマーダル・アウワル","ジュマーダッサーニー","ラジャブ","シャアバーン","ラマダーン","シャウワール","ズル・カイダ","ズル・ヒッジャ"],"field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","timeFormat-full":"H時mm分ss秒 zzzz","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"タイムゾーン","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"今週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-narrow-relative+1":"来週の木曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","field-fri-short-relative+-1":"先週の金曜","dateFormatItem-hms":"aK:mm:ss","field-thu-relative+-1":"先週の木曜日","field-week":"週","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-Ed":"d日(E)","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","field-dayperiod-short":"午前/午後","dateFormatItem-yyyyMMM":"Gy年M月","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","days-standAlone-short":["日","月","火","水","木","金","土"],"field-week-short-relative+-1":"先週","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","eraNarrow":"AH","dateFormatItem-Bhms":"BK:mm:ss","field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","dateFormatItem-EHm":"H:mm (E)","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","dateFormatItem-MMMEd":"M月d日(E)","field-weekOfMonth-narrow":"月の週番号","dateFormatItem-EHms":"H:mm:ss (E)","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","dayPeriods-standAlone-abbr-am":"午前","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","days-format-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-Bhm":"BK:mm","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜","dayPeriods-standAlone-wide-am":"午前"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/japanese.js b/lib/dojo/cldr/nls/ja/japanese.js
index 9dc497cc4..fe8aa74b6 100644
--- a/lib/dojo/cldr/nls/ja/japanese.js
+++ b/lib/dojo/cldr/nls/ja/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/japanese",{"field-second-relative+0":"今すぐ","field-weekday":"曜日","field-wed-relative+0":"今週の水曜日","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-MMMEd":"M月d日(E)","field-wed-relative+1":"来週の水曜日","eraNarrow":["大化","白雉","白鳯","朱鳥","大宝","慶雲","和銅","霊亀","養老","神亀","天平","天平感宝","天平勝宝","天平宝字","天平神護","神護景雲","宝亀","天応","延暦","大同","弘仁","天長","承和","嘉祥","仁寿","斉衡","天安","貞観","元慶","仁和","寛平","昌泰","延喜","延長","承平","天慶","天暦","天徳","応和","康保","安和","天禄","天延","貞元","天元","永観","寛和","永延","永祚","正暦","長徳","長保","寛弘","長和","寛仁","治安","万寿","長元","長暦","長久","寛徳","永承","天喜","康平","治暦","延久","承保","承暦","永保","応徳","寛治","嘉保","永長","承徳","康和","長治","嘉承","天仁","天永","永久","元永","保安","天治","大治","天承","長承","保延","永治","康治","天養","久安","仁平","久寿","保元","平治","永暦","応保","長寛","永万","仁安","嘉応","承安","安元","治承","養和","寿永","元暦","文治","建久","正治","建仁","元久","建永","承元","建暦","建保","承久","貞応","元仁","嘉禄","安貞","寛喜","貞永","天福","文暦","嘉禎","暦仁","延応","仁治","寛元","宝治","建長","康元","正嘉","正元","文応","弘長","文永","建治","弘安","正応","永仁","正安","乾元","嘉元","徳治","延慶","応長","正和","文保","元応","元亨","正中","嘉暦","元徳","元弘","建武","延元","興国","正平","建徳","文中","天授","康暦","弘和","元中","至徳","嘉慶","康応","明徳","応永","正長","永享","嘉吉","文安","宝徳","享徳","康正","長禄","寛正","文正","応仁","文明","長享","延徳","明応","文亀","永正","大永","享禄","天文","弘治","永禄","元亀","天正","文禄","慶長","元和","寛永","正保","慶安","承応","明暦","万治","寛文","延宝","天和","貞享","元禄","宝永","正徳","享保","元文","寛保","延享","寛延","宝暦","明和","安永","天明","寛政","享和","文化","文政","天保","弘化","嘉永","安政","万延","文久","元治","慶応","M","T","S","H"],"field-tue-relative+-1":"先週の火曜日","dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"先週の金曜日","field-wed-relative+-1":"先週の水曜日","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-thu-relative+-1":"先週の木曜日","dateFormatItem-Md":"M/d","field-era":"時代","dateFormatItem-MEEEEd":"M/dEEEE","field-year":"年","field-hour":"時","field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","field-day-relative+0":"今日","field-day-relative+1":"明日","field-thu-relative+0":"今週の木曜日","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"明後日","field-thu-relative+1":"来週の木曜日","dateFormatItem-H":"H時","dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日(E)","dateFormatItem-M":"M月","dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-sun-relative+0":"今週の日曜日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"来週の日曜日","eraAbbr":["大化","白雉","白鳯","朱鳥","大宝","慶雲","和銅","霊亀","養老","神亀","天平","天平感宝","天平勝宝","天平宝字","天平神護","神護景雲","宝亀","天応","延暦","大同","弘仁","天長","承和","嘉祥","仁寿","斉衡","天安","貞観","元慶","仁和","寛平","昌泰","延喜","延長","承平","天慶","天暦","天徳","応和","康保","安和","天禄","天延","貞元","天元","永観","寛和","永延","永祚","正暦","長徳","長保","寛弘","長和","寛仁","治安","万寿","長元","長暦","長久","寛徳","永承","天喜","康平","治暦","延久","承保","承暦","永保","応徳","寛治","嘉保","永長","承徳","康和","長治","嘉承","天仁","天永","永久","元永","保安","天治","大治","天承","長承","保延","永治","康治","天養","久安","仁平","久寿","保元","平治","永暦","応保","長寛","永万","仁安","嘉応","承安","安元","治承","養和","寿永","元暦","文治","建久","正治","建仁","元久","建永","承元","建暦","建保","承久","貞応","元仁","嘉禄","安貞","寛喜","貞永","天福","文暦","嘉禎","暦仁","延応","仁治","寛元","宝治","建長","康元","正嘉","正元","文応","弘長","文永","建治","弘安","正応","永仁","正安","乾元","嘉元","徳治","延慶","応長","正和","文保","元応","元亨","正中","嘉暦","元徳","元弘","建武","延元","興国","正平","建徳","文中","天授","康暦","弘和","元中","至徳","嘉慶","康応","明徳","応永","正長","永享","嘉吉","文安","宝徳","享徳","康正","長禄","寛正","文正","応仁","文明","長享","延徳","明応","文亀","永正","大永","享禄","天文","弘治","永禄","元亀","天正","文禄","慶長","元和","寛永","正保","慶安","承応","明暦","万治","寛文","延宝","天和","貞享","元禄","宝永","正徳","享保","元文","寛保","延享","寛延","宝暦","明和","安永","天明","寛政","享和","文化","文政","天保","弘化","嘉永","安政","万延","文久","元治","慶応","明治","大正","昭和","平成"],"field-minute":"分","field-dayperiod":"午前/午後","dateFormatItem-d":"d日","dateFormatItem-yyyyMEEEEd":"Gy/M/dEEEE","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨日","dateFormatItem-h":"aK時","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"一昨日","dateFormatItem-MMMd":"M月d日","dateFormatItem-EEEEd":"d日EEEE","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","field-day":"日","field-zone":"タイムゾーン","dateFormatItem-yyyyMM":"Gy/MM","dateFormatItem-y":"Gy年","field-year-relative+-1":"昨年","field-month-relative+-1":"先月","dateFormatItem-hm":"aK:mm","dateFormatItem-GyMMMEEEEd":"Gy年M月d日EEEE","dateFormatItem-yyyyMMMEEEEd":"Gy年M月d日EEEE","dateFormatItem-MMMEEEEd":"M月d日EEEE","dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"M月","field-tue-relative+0":"今週の火曜日","field-tue-relative+1":"来週の火曜日","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","dateFormat-short":"Gyy/MM/dd","field-second":"秒","field-sat-relative+-1":"先週の土曜日","field-sun-relative+-1":"先週の日曜日","field-month-relative+0":"今月","field-month-relative+1":"翌月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"先週","field-year-relative+1":"翌年","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"aK:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"今週","field-week-relative+1":"翌週"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/japanese",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","dateFormatItem-MEEEEd":"M/dEEEE","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","dateFormatItem-ms":"mm:ss","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+0":"今週の木曜","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+-1":"先週の水曜","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","dateFormatItem-yyyyMM":"GGGGGy/MM","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月の曜日番号","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","dateFormatItem-yyyyQQQ":"Gy/QQQ","field-weekOfMonth":"月の週番号","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-yyyyMd":"GGGGGy/M/d","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","dateFormatItem-yyyyMEd":"GGGGGy/M/d(E)","field-wed-relative+-1":"先週の水曜日","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","dateFormatItem-MMMEEEEd":"M月d日EEEE","field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"M月","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","dateFormatItem-EEEEd":"d日EEEE","eraAbbr":["大化","白雉","白鳳","朱鳥","大宝","慶雲","和銅","霊亀","養老","神亀","天平","天平感宝","天平勝宝","天平宝字","天平神護","神護景雲","宝亀","天応","延暦","大同","弘仁","天長","承和","嘉祥","仁寿","斉衡","天安","貞観","元慶","仁和","寛平","昌泰","延喜","延長","承平","天慶","天暦","天徳","応和","康保","安和","天禄","天延","貞元","天元","永観","寛和","永延","永祚","正暦","長徳","長保","寛弘","長和","寛仁","治安","万寿","長元","長暦","長久","寛徳","永承","天喜","康平","治暦","延久","承保","承暦","永保","応徳","寛治","嘉保","永長","承徳","康和","長治","嘉承","天仁","天永","永久","元永","保安","天治","大治","天承","長承","保延","永治","康治","天養","久安","仁平","久寿","保元","平治","永暦","応保","長寛","永万","仁安","嘉応","承安","安元","治承","養和","寿永","元暦","文治","建久","正治","建仁","元久","建永","承元","建暦","建保","承久","貞応","元仁","嘉禄","安貞","寛喜","貞永","天福","文暦","嘉禎","暦仁","延応","仁治","寛元","宝治","建長","康元","正嘉","正元","文応","弘長","文永","建治","弘安","正応","永仁","正安","乾元","嘉元","徳治","延慶","応長","正和","文保","元応","元亨","正中","嘉暦","元徳","元弘","建武","延元","興国","正平","建徳","文中","天授","康暦","弘和","元中","至徳","嘉慶","康応","明徳","応永","正長","永享","嘉吉","文安","宝徳","享徳","康正","長禄","寛正","文正","応仁","文明","長享","延徳","明応","文亀","永正","大永","享禄","天文","弘治","永禄","元亀","天正","文禄","慶長","元和","寛永","正保","慶安","承応","明暦","万治","寛文","延宝","天和","貞享","元禄","宝永","正徳","享保","元文","寛保","延享","寛延","宝暦","明和","安永","天明","寛政","享和","文化","文政","天保","弘化","嘉永","安政","万延","文久","元治","慶応","明治","大正","昭和","平成","令和"],"dateFormatItem-yyyyM":"GGGGGy/M","field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-day-narrow-relative+-2":"一昨日","field-quarter-relative+-1":"前四半期","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"午前/午後","field-week-narrow-relative+-1":"先週","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"時","dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"先月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","dateFormat-short":"GGGGGy/M/d","field-year-narrow-relative+-1":"昨年","field-thu-short-relative+-1":"先週の木曜","dateFormatItem-yyyyMMMEd":"Gy年M月d日(E)","field-mon-narrow-relative+-1":"先週の月曜","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"先週の木曜","dateFormatItem-E":"ccc","dateFormatItem-H":"H時","field-weekOfMonth-short":"月の週番号","field-tue-narrow-relative+-1":"先週の火曜","dateFormatItem-yyyy":"Gy年","dateFormatItem-M":"M月","field-wed-short-relative+0":"今週の水曜","field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"aK:mm","dateFormatItem-d":"d日","field-weekday":"曜日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","dateFormatItem-h":"aK時","dateFormatItem-yyyyMEEEEd":"GGGGGy/M/dEEEE","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"タイムゾーン","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"今週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-narrow-relative+1":"来週の木曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","dateFormatItem-hms":"aK:mm:ss","field-fri-short-relative+-1":"先週の金曜","field-thu-relative+-1":"先週の木曜日","field-week":"週","dateFormatItem-Ed":"d日(E)","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","dateFormatItem-yyyyMMMEEEEd":"Gy年M月d日EEEE","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年M月","field-dayperiod-short":"午前/午後","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","field-week-short-relative+-1":"先週","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","eraNarrow":["大化","白雉","白鳳","朱鳥","大宝","慶雲","和銅","霊亀","養老","神亀","天平","天平感宝","天平勝宝","天平宝字","天平神護","神護景雲","宝亀","天応","延暦","大同","弘仁","天長","承和","嘉祥","仁寿","斉衡","天安","貞観","元慶","仁和","寛平","昌泰","延喜","延長","承平","天慶","天暦","天徳","応和","康保","安和","天禄","天延","貞元","天元","永観","寛和","永延","永祚","正暦","長徳","長保","寛弘","長和","寛仁","治安","万寿","長元","長暦","長久","寛徳","永承","天喜","康平","治暦","延久","承保","承暦","永保","応徳","寛治","嘉保","永長","承徳","康和","長治","嘉承","天仁","天永","永久","元永","保安","天治","大治","天承","長承","保延","永治","康治","天養","久安","仁平","久寿","保元","平治","永暦","応保","長寛","永万","仁安","嘉応","承安","安元","治承","養和","寿永","元暦","文治","建久","正治","建仁","元久","建永","承元","建暦","建保","承久","貞応","元仁","嘉禄","安貞","寛喜","貞永","天福","文暦","嘉禎","暦仁","延応","仁治","寛元","宝治","建長","康元","正嘉","正元","文応","弘長","文永","建治","弘安","正応","永仁","正安","乾元","嘉元","徳治","延慶","応長","正和","文保","元応","元亨","正中","嘉暦","元徳","元弘","建武","延元","興国","正平","建徳","文中","天授","康暦","弘和","元中","至徳","嘉慶","康応","明徳","応永","正長","永享","嘉吉","文安","宝徳","享徳","康正","長禄","寛正","文正","応仁","文明","長享","延徳","明応","文亀","永正","大永","享禄","天文","弘治","永禄","元亀","天正","文禄","慶長","元和","寛永","正保","慶安","承応","明暦","万治","寛文","延宝","天和","貞享","元禄","宝永","正徳","享保","元文","寛保","延享","寛延","宝暦","明和","安永","天明","寛政","享和","文化","文政","天保","弘化","嘉永","安政","万延","文久","元治","慶応","M","T","S","H","R"],"field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","dateFormatItem-GyMMMEEEEd":"Gy年M月d日EEEE","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","dateFormatItem-MMMEd":"M月d日(E)","field-weekOfMonth-narrow":"月の週番号","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/number.js b/lib/dojo/cldr/nls/ja/number.js
index 306d67c6e..8f8435eae 100644
--- a/lib/dojo/cldr/nls/ja/number.js
+++ b/lib/dojo/cldr/nls/ja/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000兆","decimalFormat-short":"000兆"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000兆","nan":"NaN","plusSign":"+","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","approximatelySign":"約 ","group":",","percentFormat":"#,##0%","decimalFormat-long":"000兆","decimalFormat":"#,##0.###","currencyFormat-short":"¤000兆","timeSeparator":":","decimal":".","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/persian.js b/lib/dojo/cldr/nls/ja/persian.js
index c4d316380..5c3dfcab1 100644
--- a/lib/dojo/cldr/nls/ja/persian.js
+++ b/lib/dojo/cldr/nls/ja/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/persian",{"days-standAlone-short":["日","月","火","水","木","金","土"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"今すぐ","field-weekday":"曜日","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-MMMEd":"M月d日(E)","field-tue-relative+-1":"先週の火曜日","days-format-short":["日","月","火","水","木","金","土"],"dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"先週の金曜日","field-wed-relative+-1":"先週の水曜日","months-format-wide":["ファルヴァルディーン","オルディーベヘシュト","ホルダード","ティール","モルダード","シャハリーヴァル","メフル","アーバーン","アーザル","デイ","バフマン","エスファンド"],"dateFormatItem-yyyyQQQ":"Gy/QQQ","dayPeriods-format-wide-pm":"午後","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-thu-relative+-1":"先週の木曜日","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"正午","field-era":"時代","months-standAlone-wide":["ファルヴァルディーン","オルディーベヘシュト","ホルダード","ティール","モルダード","シャハリーヴァル","メフル","アーバーン","アーザル","デイ","バフマン","エスファンド"],"timeFormat-short":"H:mm","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"timeFormat-long":"H:mm:ss z","field-year":"年","field-hour":"時","months-format-abbr":["ファルヴァルディーン","オルディーベヘシュト","ホルダード","ティール","モルダード","シャハリーヴァル","メフル","アーバーン","アーザル","デイ","バフマン","エスファンド"],"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","timeFormat-full":"H時mm分ss秒 zzzz","field-day-relative+0":"今日","field-thu-relative+0":"今週の木曜日","field-day-relative+1":"明日","field-thu-relative+1":"来週の木曜日","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"明後日","dateFormatItem-H":"H時","months-standAlone-abbr":["ファルヴァルディーン","オルディーベヘシュト","ホルダード","ティール","モルダード","シャハリーヴァル","メフル","アーバーン","アーザル","デイ","バフマン","エスファンド"],"quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日(E)","dateFormatItem-M":"M月","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"今週の日曜日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"来週の日曜日","eraAbbr":["AP"],"field-minute":"分","field-dayperiod":"午前/午後","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨日","dateFormatItem-h":"aK時","dayPeriods-format-narrow-am":"午前","field-day-relative+-2":"一昨日","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","field-day":"日","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-zone":"タイムゾーン","dateFormatItem-y":"Gy年","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"昨年","field-month-relative+-1":"先月","dateFormatItem-hm":"aK:mm","days-format-abbr":["日","月","火","水","木","金","土"],"days-format-narrow":["日","月","火","水","木","金","土"],"dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"M月","days-standAlone-narrow":["日","月","火","水","木","金","土"],"field-tue-relative+0":"今週の火曜日","field-tue-relative+1":"来週の火曜日","dayPeriods-format-wide-am":"午前","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","dateFormat-short":"Gy/MM/dd","dayPeriods-format-narrow-noon":"正午","field-second":"秒","field-sat-relative+-1":"先週の土曜日","field-sun-relative+-1":"先週の日曜日","field-month-relative+0":"今月","field-month-relative+1":"翌月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy/MM/dd","field-year-relative+0":"今年","field-week-relative+-1":"先週","dateFormatItem-yyyyM":"Gy/M","field-year-relative+1":"翌年","dayPeriods-format-narrow-pm":"午後","dateFormatItem-yyyyQQQQ":"GyQQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"aK:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"今週","field-week-relative+1":"翌週"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/persian",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","timeFormat-short":"H:mm","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-thu-short-relative+0":"今週の木曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+-1":"先週の水曜","dateFormatItem-EBhms":"BK:mm:ss (E)","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","dayPeriods-format-narrow-am":"午前","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月の曜日番号","dayPeriods-format-abbr-am":"午前","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","dateFormatItem-yyyyQQQ":"Gy/QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AP"],"field-weekOfMonth":"月の週番号","dayPeriods-standAlone-abbr-pm":"午後","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日(E)","dateFormatItem-yyyyMd":"GGGGGy/M/d","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","dayPeriods-format-wide-am":"午前","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","dateFormatItem-yyyyMEd":"GGGGGy/M/d(E)","field-wed-relative+-1":"先週の水曜日","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","days-standAlone-narrow":["日","月","火","水","木","金","土"],"dayPeriods-standAlone-wide-pm":"午後","dateFormatItem-Ehms":"aK:mm:ss (E)","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","quarters-standAlone-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"days-format-narrow":["日","月","火","水","木","金","土"],"field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"M月","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","dayPeriods-format-narrow-pm":"午後","dateFormat-medium":"GGGGGy/MM/dd","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["AP"],"dayPeriods-format-abbr-pm":"午後","dateFormatItem-yyyyM":"GGGGGy/M","field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-day-narrow-relative+-2":"一昨日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"前四半期","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"午前/午後","dayPeriods-standAlone-narrow-am":"午前","field-week-narrow-relative+-1":"先週","days-format-short":["日","月","火","水","木","金","土"],"dayPeriods-format-wide-pm":"午後","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","dateFormatItem-Md":"M/d","field-hour":"時","months-format-wide":["ファルヴァルディーン","オルディーベヘシュト","ホルダード","ティール","モルダード","シャハリーヴァル","メフル","アーバーン","アーザル","デイ","バフマン","エスファンド"],"dateFormat-full":"Gy年M月d日(EEEE)","field-month-relative+-1":"先月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","dateFormatItem-EBhm":"BK:mm (E)","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","dateFormatItem-Ehm":"aK:mm (E)","months-format-abbr":["ファルヴァルディーン","オルディーベヘシュト","ホルダード","ティール","モルダード","シャハリーヴァル","メフル","アーバーン","アーザル","デイ","バフマン","エスファンド"],"field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","dateFormat-short":"GGGGGy/M/d","dateFormatItem-Bh":"BK時","field-thu-short-relative+-1":"先週の木曜","field-year-narrow-relative+-1":"昨年","days-standAlone-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"dateFormatItem-yyyyMMMEd":"Gy年M月d日(E)","field-mon-narrow-relative+-1":"先週の月曜","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"先週の木曜","field-tue-narrow-relative+-1":"先週の火曜","field-weekOfMonth-short":"月の週番号","dateFormatItem-H":"H時","dayPeriods-standAlone-narrow-pm":"午後","dateFormatItem-yyyy":"Gy年","field-wed-short-relative+0":"今週の水曜","months-standAlone-wide":["ファルヴァルディーン","オルディーベヘシュト","ホルダード","ティール","モルダード","シャハリーヴァル","メフル","アーバーン","アーザル","デイ","バフマン","エスファンド"],"dateFormatItem-M":"M月","field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","days-standAlone-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-hm":"aK:mm","field-weekday":"曜日","dateFormatItem-d":"d日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","dateFormatItem-h":"aK時","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","months-standAlone-abbr":["ファルヴァルディーン","オルディーベヘシュト","ホルダード","ティール","モルダード","シャハリーヴァル","メフル","アーバーン","アーザル","デイ","バフマン","エスファンド"],"field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","timeFormat-full":"H時mm分ss秒 zzzz","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"タイムゾーン","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"今週の木曜","field-thu-narrow-relative+1":"来週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","field-fri-short-relative+-1":"先週の金曜","dateFormatItem-hms":"aK:mm:ss","field-thu-relative+-1":"先週の木曜日","field-week":"週","quarters-format-wide":["第1四半期","第2四半期","第3四半期","第4四半期"],"dateFormatItem-Ed":"d日(E)","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","field-dayperiod-short":"午前/午後","dateFormatItem-yyyyMMM":"Gy年M月","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","days-standAlone-short":["日","月","火","水","木","金","土"],"field-week-short-relative+-1":"先週","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","eraNarrow":"AP","dateFormatItem-Bhms":"BK:mm:ss","field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","days-format-wide":["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],"field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","dateFormatItem-EHm":"H:mm (E)","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","dateFormatItem-MMMEd":"M月d日(E)","field-weekOfMonth-narrow":"月の週番号","dateFormatItem-EHms":"H:mm:ss (E)","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","dayPeriods-standAlone-abbr-am":"午前","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","days-format-abbr":["日","月","火","水","木","金","土"],"dateFormatItem-Bhm":"BK:mm","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜","dayPeriods-standAlone-wide-am":"午前"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ja/roc.js b/lib/dojo/cldr/nls/ja/roc.js
index 7a37a22f5..47fdfb7c9 100644
--- a/lib/dojo/cldr/nls/ja/roc.js
+++ b/lib/dojo/cldr/nls/ja/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ja/roc",{"field-sat-relative+0":"今週の土曜日","field-sat-relative+1":"来週の土曜日","field-dayperiod":"午前/午後","field-sun-relative+-1":"先週の日曜日","field-mon-relative+-1":"先週の月曜日","field-minute":"分","dateFormatItem-MMMEd":"M月d日(E)","field-day-relative+-1":"昨日","field-weekday":"曜日","field-day-relative+-2":"一昨日","dateFormatItem-MMM":"M月","field-era":"時代","field-hour":"時","dateFormatItem-y":"Gy年","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","field-wed-relative+-1":"先週の水曜日","field-day-relative+0":"今日","field-day-relative+1":"明日","eraAbbr":["民国前","民国"],"field-day-relative+2":"明後日","dateFormat-long":"Gy年M月d日","field-tue-relative+0":"今週の火曜日","field-zone":"タイムゾーン","field-tue-relative+1":"来週の火曜日","field-week-relative+-1":"先週","dateFormat-medium":"Gy/MM/dd","field-year-relative+0":"今年","field-year-relative+1":"翌年","field-sat-relative+-1":"先週の土曜日","field-year-relative+-1":"昨年","field-year":"年","field-fri-relative+0":"今週の金曜日","field-fri-relative+1":"来週の金曜日","field-week":"週","dateFormatItem-MMMd":"M月d日","field-week-relative+0":"今週","field-week-relative+1":"翌週","field-month-relative+0":"今月","field-month":"月","field-month-relative+1":"翌月","field-fri-relative+-1":"先週の金曜日","dateFormatItem-M":"M月","field-second":"秒","field-tue-relative+-1":"先週の火曜日","field-day":"日","dateFormatItem-MEd":"M/d(E)","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-thu-relative+0":"今週の木曜日","field-second-relative+0":"今すぐ","dateFormat-short":"Gy/MM/dd","field-thu-relative+1":"来週の木曜日","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-Md":"M/d","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","dateFormatItem-d":"d日","field-month-relative+-1":"先月","field-thu-relative+-1":"先週の木曜日"}); \ No newline at end of file
+define("dojo/cldr/nls/ja/roc",{"field-quarter-short-relative+0":"今四半期","field-quarter-short-relative+1":"翌四半期","field-tue-relative+-1":"先週の火曜日","field-year":"年","field-wed-relative+0":"今週の水曜日","field-wed-relative+1":"来週の水曜日","field-minute":"分","field-month-narrow-relative+-1":"先月","field-tue-narrow-relative+0":"今週の火曜","field-tue-narrow-relative+1":"来週の火曜","field-thu-short-relative+0":"今週の木曜","field-day-short-relative+-1":"昨日","field-thu-short-relative+1":"来週の木曜","field-day-relative+0":"今日","field-day-short-relative+-2":"一昨日","field-day-relative+1":"明日","field-week-narrow-relative+0":"今週","field-day-relative+2":"明後日","field-week-narrow-relative+1":"来週","field-wed-narrow-relative+-1":"先週の水曜","field-year-narrow":"年","field-era-short":"時代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"今週の火曜日","field-year-narrow-relative+1":"来年","field-tue-relative+1":"来週の火曜日","field-weekdayOfMonth":"月の曜日番号","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月の曜日番号","field-week-relative+0":"今週","field-month-relative+0":"今月","field-week-relative+1":"来週","field-month-relative+1":"来月","field-sun-narrow-relative+0":"今週の日曜","field-mon-short-relative+0":"今週の月曜","field-sun-narrow-relative+1":"来週の日曜","field-mon-short-relative+1":"来週の月曜","field-second-relative+0":"今","eraNames":["民国前"],"field-weekOfMonth":"月の週番号","field-month-short":"月","field-day":"日","field-dayOfYear-short":"年の通日","field-year-relative+-1":"昨年","field-sat-short-relative+-1":"先週の土曜","field-hour-relative+0":"1 時間以内","field-wed-relative+-1":"先週の水曜日","field-sat-narrow-relative+-1":"先週の土曜","field-second":"秒","dateFormat-long":"Gy年M月d日","field-quarter":"四半期","field-week-short":"週","field-day-narrow-relative+0":"今日","field-day-narrow-relative+1":"明日","field-day-narrow-relative+2":"明後日","field-tue-short-relative+0":"今週の火曜","field-tue-short-relative+1":"来週の火曜","field-month-short-relative+-1":"先月","field-mon-relative+-1":"先週の月曜日","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"M月","field-minute-short":"分","field-dayperiod":"午前/午後","field-sat-short-relative+0":"今週の土曜","field-sat-short-relative+1":"来週の土曜","dateFormat-medium":"Gy/MM/dd","eraAbbr":["民国前","民国"],"field-second-narrow":"秒","field-mon-relative+0":"今週の月曜日","field-mon-relative+1":"来週の月曜日","field-day-narrow-relative+-1":"昨日","field-year-short":"年","field-day-narrow-relative+-2":"一昨日","field-quarter-relative+-1":"前四半期","field-dayperiod-narrow":"午前/午後","field-week-narrow-relative+-1":"先週","field-dayOfYear":"年の通日","field-sat-relative+-1":"先週の土曜日","dateFormatItem-Md":"M/d","field-hour":"時","dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"先月","field-quarter-short":"四半期","field-sat-narrow-relative+0":"今週の土曜","field-fri-relative+0":"今週の金曜日","field-sat-narrow-relative+1":"来週の土曜","field-fri-relative+1":"来週の金曜日","field-month-narrow-relative+0":"今月","field-month-narrow-relative+1":"来月","field-sun-short-relative+0":"今週の日曜","field-sun-short-relative+1":"来週の日曜","field-week-relative+-1":"先週","field-quarter-short-relative+-1":"前四半期","field-quarter-relative+0":"今四半期","field-minute-relative+0":"1 分以内","field-quarter-relative+1":"翌四半期","field-wed-short-relative+-1":"先週の水曜","dateFormat-short":"Gy/MM/dd","field-thu-short-relative+-1":"先週の木曜","field-year-narrow-relative+-1":"昨年","field-mon-narrow-relative+-1":"先週の月曜","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"先週の木曜","field-tue-narrow-relative+-1":"先週の火曜","field-weekOfMonth-short":"月の週番号","field-wed-short-relative+0":"今週の水曜","dateFormatItem-M":"M月","field-wed-short-relative+1":"来週の水曜","field-sun-relative+-1":"先週の日曜日","dateFormatItem-d":"d日","field-weekday":"曜日","field-day-short-relative+0":"今日","field-quarter-narrow-relative+0":"今四半期","field-day-short-relative+1":"明日","field-sat-relative+0":"今週の土曜日","field-quarter-narrow-relative+1":"翌四半期","field-day-short-relative+2":"明後日","field-sat-relative+1":"来週の土曜日","field-week-short-relative+0":"今週","field-week-short-relative+1":"来週","field-dayOfYear-narrow":"通日","field-month-short-relative+0":"今月","field-month-short-relative+1":"来月","field-weekdayOfMonth-short":"月の曜日番号","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"タイムゾーン","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"今週の木曜","field-thu-narrow-relative+1":"来週の木曜","field-sun-narrow-relative+-1":"先週の日曜","field-mon-short-relative+-1":"先週の月曜","field-thu-relative+0":"今週の木曜日","field-thu-relative+1":"来週の木曜日","field-fri-short-relative+-1":"先週の金曜","field-thu-relative+-1":"先週の木曜日","field-week":"週","field-wed-narrow-relative+0":"今週の水曜","field-wed-narrow-relative+1":"来週の水曜","field-quarter-narrow-relative+-1":"前四半期","field-year-short-relative+0":"今年","field-dayperiod-short":"午前/午後","field-year-short-relative+1":"来年","field-fri-short-relative+0":"今週の金曜","field-fri-short-relative+1":"来週の金曜","field-week-short-relative+-1":"先週","field-hour-short":"時","field-zone-short":"タイムゾーン","field-month-narrow":"月","field-hour-narrow":"時","field-fri-narrow-relative+-1":"先週の金曜","field-year-relative+0":"今年","field-year-relative+1":"来年","field-era-narrow":"時代","field-fri-relative+-1":"先週の金曜日","eraNarrow":["民国前","民国"],"field-tue-short-relative+-1":"先週の火曜","field-minute-narrow":"分","field-mon-narrow-relative+0":"今週の月曜","field-mon-narrow-relative+1":"来週の月曜","field-year-short-relative+-1":"昨年","field-zone":"タイムゾーン","dateFormatItem-MMMEd":"M月d日(E)","field-weekOfMonth-narrow":"月の週番号","field-weekday-narrow":"曜日","field-quarter-narrow":"四半期","field-sun-short-relative+-1":"先週の日曜","field-day-relative+-1":"昨日","field-day-relative+-2":"一昨日","field-weekday-short":"曜日","field-sun-relative+0":"今週の日曜日","field-sun-relative+1":"来週の日曜日","field-day-short":"日","field-week-narrow":"週","field-era":"時代","field-fri-narrow-relative+0":"今週の金曜","field-fri-narrow-relative+1":"来週の金曜"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/japanese.js b/lib/dojo/cldr/nls/japanese.js
index b35af6026..a228c1a4d 100644
--- a/lib/dojo/cldr/nls/japanese.js
+++ b/lib/dojo/cldr/nls/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/japanese",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","days@localeAlias478":{"bundle":"gregorian","target":"days"},"dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"today","field-day-relative+1":"tomorrow","eraNames@localeAlias498":{"bundle":"japanese","target":"eraAbbr"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Taika (645-650)","Hakuchi (650-671)","Hakuhō (672-686)","Shuchō (686-701)","Taihō (701-704)","Keiun (704-708)","Wadō (708-715)","Reiki (715-717)","Yōrō (717-724)","Jinki (724-729)","Tempyō (729-749)","Tempyō-kampō (749-749)","Tempyō-shōhō (749-757)","Tempyō-hōji (757-765)","Temphō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770-780)","Ten-ō (781-782)","Enryaku (782-806)","Daidō (806-810)","Kōnin (810-824)","Tenchō (824-834)","Jōwa (834-848)","Kajō (848-851)","Ninju (851-854)","Saiko (854-857)","Tennan (857-859)","Jōgan (859-877)","Genkei (877-885)","Ninna (885-889)","Kampyō (889-898)","Shōtai (898-901)","Engi (901-923)","Enchō (923-931)","Shōhei (931-938)","Tengyō (938-947)","Tenryaku (947-957)","Tentoku (957-961)","Ōwa (961-964)","Kōhō (964-968)","Anna (968-970)","Tenroku (970-973)","Ten-en (973-976)","Jōgen (976-978)","Tengen (978-983)","Eikan (983-985)","Kanna (985-987)","Ei-en (987-989)","Eiso (989-990)","Shōryaku (990-995)","Chōtoku (995-999)","Chōhō (999-1004)","Kankō (1004-1012)","Chōwa (1012-1017)","Kannin (1017-1021)","Jian (1021-1024)","Manju (1024-1028)","Chōgen (1028-1037)","Chōryaku (1037-1040)","Chōkyū (1040-1044)","Kantoku (1044-1046)","Eishō (1046-1053)","Tengi (1053-1058)","Kōhei (1058-1065)","Jiryaku (1065-1069)","Enkyū (1069-1074)","Shōho (1074-1077)","Shōryaku (1077-1081)","Eiho (1081-1084)","Ōtoku (1084-1087)","Kanji (1087-1094)","Kaho (1094-1096)","Eichō (1096-1097)","Shōtoku (1097-1099)","Kōwa (1099-1104)","Chōji (1104-1106)","Kashō (1106-1108)","Tennin (1108-1110)","Ten-ei (1110-1113)","Eikyū (1113-1118)","Gen-ei (1118-1120)","Hoan (1120-1124)","Tenji (1124-1126)","Daiji (1126-1131)","Tenshō (1131-1132)","Chōshō (1132-1135)","Hoen (1135-1141)","Eiji (1141-1142)","Kōji (1142-1144)","Tenyō (1144-1145)","Kyūan (1145-1151)","Ninpei (1151-1154)","Kyūju (1154-1156)","Hogen (1156-1159)","Heiji (1159-1160)","Eiryaku (1160-1161)","Ōho (1161-1163)","Chōkan (1163-1165)","Eiman (1165-1166)","Nin-an (1166-1169)","Kaō (1169-1171)","Shōan (1171-1175)","Angen (1175-1177)","Jishō (1177-1181)","Yōwa (1181-1182)","Juei (1182-1184)","Genryuku (1184-1185)","Bunji (1185-1190)","Kenkyū (1190-1199)","Shōji (1199-1201)","Kennin (1201-1204)","Genkyū (1204-1206)","Ken-ei (1206-1207)","Shōgen (1207-1211)","Kenryaku (1211-1213)","Kenpō (1213-1219)","Shōkyū (1219-1222)","Jōō (1222-1224)","Gennin (1224-1225)","Karoku (1225-1227)","Antei (1227-1229)","Kanki (1229-1232)","Jōei (1232-1233)","Tempuku (1233-1234)","Bunryaku (1234-1235)","Katei (1235-1238)","Ryakunin (1238-1239)","En-ō (1239-1240)","Ninji (1240-1243)","Kangen (1243-1247)","Hōji (1247-1249)","Kenchō (1249-1256)","Kōgen (1256-1257)","Shōka (1257-1259)","Shōgen (1259-1260)","Bun-ō (1260-1261)","Kōchō (1261-1264)","Bun-ei (1264-1275)","Kenji (1275-1278)","Kōan (1278-1288)","Shōō (1288-1293)","Einin (1293-1299)","Shōan (1299-1302)","Kengen (1302-1303)","Kagen (1303-1306)","Tokuji (1306-1308)","Enkei (1308-1311)","Ōchō (1311-1312)","Shōwa (1312-1317)","Bunpō (1317-1319)","Genō (1319-1321)","Genkyō (1321-1324)","Shōchū (1324-1326)","Kareki (1326-1329)","Gentoku (1329-1331)","Genkō (1331-1334)","Kemmu (1334-1336)","Engen (1336-1340)","Kōkoku (1340-1346)","Shōhei (1346-1370)","Kentoku (1370-1372)","Bunchū (1372-1375)","Tenju (1375-1379)","Kōryaku (1379-1381)","Kōwa (1381-1384)","Genchū (1384-1392)","Meitoku (1384-1387)","Kakei (1387-1389)","Kōō (1389-1390)","Meitoku (1390-1394)","Ōei (1394-1428)","Shōchō (1428-1429)","Eikyō (1429-1441)","Kakitsu (1441-1444)","Bun-an (1444-1449)","Hōtoku (1449-1452)","Kyōtoku (1452-1455)","Kōshō (1455-1457)","Chōroku (1457-1460)","Kanshō (1460-1466)","Bunshō (1466-1467)","Ōnin (1467-1469)","Bunmei (1469-1487)","Chōkyō (1487-1489)","Entoku (1489-1492)","Meiō (1492-1501)","Bunki (1501-1504)","Eishō (1504-1521)","Taiei (1521-1528)","Kyōroku (1528-1532)","Tenmon (1532-1555)","Kōji (1555-1558)","Eiroku (1558-1570)","Genki (1570-1573)","Tenshō (1573-1592)","Bunroku (1592-1596)","Keichō (1596-1615)","Genwa (1615-1624)","Kan-ei (1624-1644)","Shōho (1644-1648)","Keian (1648-1652)","Shōō (1652-1655)","Meiryaku (1655-1658)","Manji (1658-1661)","Kanbun (1661-1673)","Enpō (1673-1681)","Tenwa (1681-1684)","Jōkyō (1684-1688)","Genroku (1688-1704)","Hōei (1704-1711)","Shōtoku (1711-1716)","Kyōhō (1716-1736)","Genbun (1736-1741)","Kanpō (1741-1744)","Enkyō (1744-1748)","Kan-en (1748-1751)","Hōryaku (1751-1764)","Meiwa (1764-1772)","An-ei (1772-1781)","Tenmei (1781-1789)","Kansei (1789-1801)","Kyōwa (1801-1804)","Bunka (1804-1818)","Bunsei (1818-1830)","Tenpō (1830-1844)","Kōka (1844-1848)","Kaei (1848-1854)","Ansei (1854-1860)","Man-en (1860-1861)","Bunkyū (1861-1864)","Genji (1864-1865)","Keiō (1865-1868)","Meiji","Taishō","Shōwa","Heisei"],"dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","days-standAlone-wide@localeAlias488":{"bundle":"gregorian","target":"days-format-wide"},"field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","quarters@localeAlias489":{"bundle":"gregorian","target":"quarters"},"days-standAlone-abbr@localeAlias483":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-abbr@localeAlias484":{"bundle":"gregorian","target":"days-format-wide"},"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","quarters-format-narrow@localeAlias491":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","days-format-abbr@localeAlias479":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-MMM":"LLL","field-dayperiod":"Dayperiod","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"G y MMM d","eraAbbr":["Taika (645-650)","Hakuchi (650-671)","Hakuhō (672-686)","Shuchō (686-701)","Taihō (701-704)","Keiun (704-708)","Wadō (708-715)","Reiki (715-717)","Yōrō (717-724)","Jinki (724-729)","Tempyō (729-749)","Tempyō-kampō (749-749)","Tempyō-shōhō (749-757)","Tempyō-hōji (757-765)","Temphō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770-780)","Ten-ō (781-782)","Enryaku (782-806)","Daidō (806-810)","Kōnin (810-824)","Tenchō (824-834)","Jōwa (834-848)","Kajō (848-851)","Ninju (851-854)","Saiko (854-857)","Tennan (857-859)","Jōgan (859-877)","Genkei (877-885)","Ninna (885-889)","Kampyō (889-898)","Shōtai (898-901)","Engi (901-923)","Enchō (923-931)","Shōhei (931-938)","Tengyō (938-947)","Tenryaku (947-957)","Tentoku (957-961)","Ōwa (961-964)","Kōhō (964-968)","Anna (968-970)","Tenroku (970-973)","Ten-en (973-976)","Jōgen (976-978)","Tengen (978-983)","Eikan (983-985)","Kanna (985-987)","Ei-en (987-989)","Eiso (989-990)","Shōryaku (990-995)","Chōtoku (995-999)","Chōhō (999-1004)","Kankō (1004-1012)","Chōwa (1012-1017)","Kannin (1017-1021)","Jian (1021-1024)","Manju (1024-1028)","Chōgen (1028-1037)","Chōryaku (1037-1040)","Chōkyū (1040-1044)","Kantoku (1044-1046)","Eishō (1046-1053)","Tengi (1053-1058)","Kōhei (1058-1065)","Jiryaku (1065-1069)","Enkyū (1069-1074)","Shōho (1074-1077)","Shōryaku (1077-1081)","Eiho (1081-1084)","Ōtoku (1084-1087)","Kanji (1087-1094)","Kaho (1094-1096)","Eichō (1096-1097)","Shōtoku (1097-1099)","Kōwa (1099-1104)","Chōji (1104-1106)","Kashō (1106-1108)","Tennin (1108-1110)","Ten-ei (1110-1113)","Eikyū (1113-1118)","Gen-ei (1118-1120)","Hoan (1120-1124)","Tenji (1124-1126)","Daiji (1126-1131)","Tenshō (1131-1132)","Chōshō (1132-1135)","Hoen (1135-1141)","Eiji (1141-1142)","Kōji (1142-1144)","Tenyō (1144-1145)","Kyūan (1145-1151)","Ninpei (1151-1154)","Kyūju (1154-1156)","Hogen (1156-1159)","Heiji (1159-1160)","Eiryaku (1160-1161)","Ōho (1161-1163)","Chōkan (1163-1165)","Eiman (1165-1166)","Nin-an (1166-1169)","Kaō (1169-1171)","Shōan (1171-1175)","Angen (1175-1177)","Jishō (1177-1181)","Yōwa (1181-1182)","Juei (1182-1184)","Genryuku (1184-1185)","Bunji (1185-1190)","Kenkyū (1190-1199)","Shōji (1199-1201)","Kennin (1201-1204)","Genkyū (1204-1206)","Ken-ei (1206-1207)","Shōgen (1207-1211)","Kenryaku (1211-1213)","Kenpō (1213-1219)","Shōkyū (1219-1222)","Jōō (1222-1224)","Gennin (1224-1225)","Karoku (1225-1227)","Antei (1227-1229)","Kanki (1229-1232)","Jōei (1232-1233)","Tempuku (1233-1234)","Bunryaku (1234-1235)","Katei (1235-1238)","Ryakunin (1238-1239)","En-ō (1239-1240)","Ninji (1240-1243)","Kangen (1243-1247)","Hōji (1247-1249)","Kenchō (1249-1256)","Kōgen (1256-1257)","Shōka (1257-1259)","Shōgen (1259-1260)","Bun-ō (1260-1261)","Kōchō (1261-1264)","Bun-ei (1264-1275)","Kenji (1275-1278)","Kōan (1278-1288)","Shōō (1288-1293)","Einin (1293-1299)","Shōan (1299-1302)","Kengen (1302-1303)","Kagen (1303-1306)","Tokuji (1306-1308)","Enkei (1308-1311)","Ōchō (1311-1312)","Shōwa (1312-1317)","Bunpō (1317-1319)","Genō (1319-1321)","Genkyō (1321-1324)","Shōchū (1324-1326)","Kareki (1326-1329)","Gentoku (1329-1331)","Genkō (1331-1334)","Kemmu (1334-1336)","Engen (1336-1340)","Kōkoku (1340-1346)","Shōhei (1346-1370)","Kentoku (1370-1372)","Bunchū (1372-1375)","Tenju (1375-1379)","Kōryaku (1379-1381)","Kōwa (1381-1384)","Genchū (1384-1392)","Meitoku (1384-1387)","Kakei (1387-1389)","Kōō (1389-1390)","Meitoku (1390-1394)","Ōei (1394-1428)","Shōchō (1428-1429)","Eikyō (1429-1441)","Kakitsu (1441-1444)","Bun-an (1444-1449)","Hōtoku (1449-1452)","Kyōtoku (1452-1455)","Kōshō (1455-1457)","Chōroku (1457-1460)","Kanshō (1460-1466)","Bunshō (1466-1467)","Ōnin (1467-1469)","Bunmei (1469-1487)","Chōkyō (1487-1489)","Entoku (1489-1492)","Meiō (1492-1501)","Bunki (1501-1504)","Eishō (1504-1521)","Taiei (1521-1528)","Kyōroku (1528-1532)","Tenmon (1532-1555)","Kōji (1555-1558)","Eiroku (1558-1570)","Genki (1570-1573)","Tenshō (1573-1592)","Bunroku (1592-1596)","Keichō (1596-1615)","Genwa (1615-1624)","Kan-ei (1624-1644)","Shōho (1644-1648)","Keian (1648-1652)","Shōō (1652-1655)","Meiryaku (1655-1658)","Manji (1658-1661)","Kanbun (1661-1673)","Enpō (1673-1681)","Tenwa (1681-1684)","Jōkyō (1684-1688)","Genroku (1688-1704)","Hōei (1704-1711)","Shōtoku (1711-1716)","Kyōhō (1716-1736)","Genbun (1736-1741)","Kanpō (1741-1744)","Enkyō (1744-1748)","Kan-en (1748-1751)","Hōryaku (1751-1764)","Meiwa (1764-1772)","An-ei (1772-1781)","Tenmei (1781-1789)","Kansei (1789-1801)","Kyōwa (1801-1804)","Bunka (1804-1818)","Bunsei (1818-1830)","Tenpō (1830-1844)","Kōka (1844-1848)","Kaei (1848-1854)","Ansei (1854-1860)","Man-en (1860-1861)","Bunkyū (1861-1864)","Genji (1864-1865)","Keiō (1865-1868)","Meiji","Taishō","Shōwa","Heisei"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"months@localeAlias472":{"bundle":"gregorian","target":"months"},"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","months-format-abbr@localeAlias473":{"bundle":"gregorian","target":"months-format-wide"},"field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-yyyyMMMd":"G y MMM d","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","months-format-narrow@localeAlias474":{"bundle":"gregorian","target":"months-standAlone-narrow"},"dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","dateFormat@localeAlias499":{"bundle":"generic","target":"dateFormat"},"field-hour":"Hour","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","quarters-standAlone-wide@localeAlias494":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"timeFormat-long":"HH:mm:ss z","timeFormat@localeAlias500":{"bundle":"gregorian","target":"timeFormat"},"dateFormat-short":"GGGGG y-MM-dd","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-H":"HH","dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","quarters-standAlone-abbr@localeAlias492":{"bundle":"gregorian","target":"quarters-format-abbr"},"dateFormatItem-hm":"h:mm a","quarters-standAlone-abbr@localeAlias493":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-d":"d","field-weekday":"Day of the Week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"days-standAlone-short@localeAlias485":{"bundle":"gregorian","target":"days-format-short"},"quarters-format-abbr@localeAlias490":{"bundle":"gregorian","target":"quarters-format-wide"},"days-standAlone-short@localeAlias486":{"bundle":"gregorian","target":"days-format-abbr"},"months-standAlone-wide@localeAlias477":{"bundle":"gregorian","target":"months-format-wide"},"days-standAlone-short@localeAlias487":{"bundle":"gregorian","target":"days-format-wide"},"dateTime@localeAlias501":{"bundle":"generic","target":"dateTime"},"dayPeriods-format-abbr@localeAlias496":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dayPeriods-format-abbr@localeAlias497":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"G y","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","months-standAlone-abbr@localeAlias475":{"bundle":"gregorian","target":"months-format-abbr"},"dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","months-standAlone-abbr@localeAlias476":{"bundle":"gregorian","target":"months-format-wide"},"days-format-short@localeAlias481":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias482":{"bundle":"gregorian","target":"days-format-wide"},"dayPeriods-format-abbr-noon":"noon","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"G y MMM","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyQQQQ":"G y QQQQ","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","eraNarrow":["Taika (645-650)","Hakuchi (650-671)","Hakuhō (672-686)","Shuchō (686-701)","Taihō (701-704)","Keiun (704-708)","Wadō (708-715)","Reiki (715-717)","Yōrō (717-724)","Jinki (724-729)","Tempyō (729-749)","Tempyō-kampō (749-749)","Tempyō-shōhō (749-757)","Tempyō-hōji (757-765)","Temphō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770-780)","Ten-ō (781-782)","Enryaku (782-806)","Daidō (806-810)","Kōnin (810-824)","Tenchō (824-834)","Jōwa (834-848)","Kajō (848-851)","Ninju (851-854)","Saiko (854-857)","Tennan (857-859)","Jōgan (859-877)","Genkei (877-885)","Ninna (885-889)","Kampyō (889-898)","Shōtai (898-901)","Engi (901-923)","Enchō (923-931)","Shōhei (931-938)","Tengyō (938-947)","Tenryaku (947-957)","Tentoku (957-961)","Ōwa (961-964)","Kōhō (964-968)","Anna (968-970)","Tenroku (970-973)","Ten-en (973-976)","Jōgen (976-978)","Tengen (978-983)","Eikan (983-985)","Kanna (985-987)","Ei-en (987-989)","Eiso (989-990)","Shōryaku (990-995)","Chōtoku (995-999)","Chōhō (999-1004)","Kankō (1004-1012)","Chōwa (1012-1017)","Kannin (1017-1021)","Jian (1021-1024)","Manju (1024-1028)","Chōgen (1028-1037)","Chōryaku (1037-1040)","Chōkyū (1040-1044)","Kantoku (1044-1046)","Eishō (1046-1053)","Tengi (1053-1058)","Kōhei (1058-1065)","Jiryaku (1065-1069)","Enkyū (1069-1074)","Shōho (1074-1077)","Shōryaku (1077-1081)","Eiho (1081-1084)","Ōtoku (1084-1087)","Kanji (1087-1094)","Kaho (1094-1096)","Eichō (1096-1097)","Shōtoku (1097-1099)","Kōwa (1099-1104)","Chōji (1104-1106)","Kashō (1106-1108)","Tennin (1108-1110)","Ten-ei (1110-1113)","Eikyū (1113-1118)","Gen-ei (1118-1120)","Hoan (1120-1124)","Tenji (1124-1126)","Daiji (1126-1131)","Tenshō (1131-1132)","Chōshō (1132-1135)","Hoen (1135-1141)","Eiji (1141-1142)","Kōji (1142-1144)","Tenyō (1144-1145)","Kyūan (1145-1151)","Ninpei (1151-1154)","Kyūju (1154-1156)","Hogen (1156-1159)","Heiji (1159-1160)","Eiryaku (1160-1161)","Ōho (1161-1163)","Chōkan (1163-1165)","Eiman (1165-1166)","Nin-an (1166-1169)","Kaō (1169-1171)","Shōan (1171-1175)","Angen (1175-1177)","Jishō (1177-1181)","Yōwa (1181-1182)","Juei (1182-1184)","Genryuku (1184-1185)","Bunji (1185-1190)","Kenkyū (1190-1199)","Shōji (1199-1201)","Kennin (1201-1204)","Genkyū (1204-1206)","Ken-ei (1206-1207)","Shōgen (1207-1211)","Kenryaku (1211-1213)","Kenpō (1213-1219)","Shōkyū (1219-1222)","Jōō (1222-1224)","Gennin (1224-1225)","Karoku (1225-1227)","Antei (1227-1229)","Kanki (1229-1232)","Jōei (1232-1233)","Tempuku (1233-1234)","Bunryaku (1234-1235)","Katei (1235-1238)","Ryakunin (1238-1239)","En-ō (1239-1240)","Ninji (1240-1243)","Kangen (1243-1247)","Hōji (1247-1249)","Kenchō (1249-1256)","Kōgen (1256-1257)","Shōka (1257-1259)","Shōgen (1259-1260)","Bun-ō (1260-1261)","Kōchō (1261-1264)","Bun-ei (1264-1275)","Kenji (1275-1278)","Kōan (1278-1288)","Shōō (1288-1293)","Einin (1293-1299)","Shōan (1299-1302)","Kengen (1302-1303)","Kagen (1303-1306)","Tokuji (1306-1308)","Enkei (1308-1311)","Ōchō (1311-1312)","Shōwa (1312-1317)","Bunpō (1317-1319)","Genō (1319-1321)","Genkyō (1321-1324)","Shōchū (1324-1326)","Kareki (1326-1329)","Gentoku (1329-1331)","Genkō (1331-1334)","Kemmu (1334-1336)","Engen (1336-1340)","Kōkoku (1340-1346)","Shōhei (1346-1370)","Kentoku (1370-1372)","Bunchũ (1372-1375)","Tenju (1375-1379)","Kōryaku (1379-1381)","Kōwa (1381-1384)","Genchũ (1384-1392)","Meitoku (1384-1387)","Kakei (1387-1389)","Kōō (1389-1390)","Meitoku (1390-1394)","Ōei (1394-1428)","Shōchō (1428-1429)","Eikyō (1429-1441)","Kakitsu (1441-1444)","Bun-an (1444-1449)","Hōtoku (1449-1452)","Kyōtoku (1452-1455)","Kōshō (1455-1457)","Chōroku (1457-1460)","Kanshō (1460-1466)","Bunshō (1466-1467)","Ōnin (1467-1469)","Bunmei (1469-1487)","Chōkyō (1487-1489)","Entoku (1489-1492)","Meiō (1492-1501)","Bunki (1501-1504)","Eishō (1504-1521)","Taiei (1521-1528)","Kyōroku (1528-1532)","Tenmon (1532-1555)","Kōji (1555-1558)","Eiroku (1558-1570)","Genki (1570-1573)","Tenshō (1573-1592)","Bunroku (1592-1596)","Keichō (1596-1615)","Genwa (1615-1624)","Kan-ei (1624-1644)","Shōho (1644-1648)","Keian (1648-1652)","Shōō (1652-1655)","Meiryaku (1655-1658)","Manji (1658-1661)","Kanbun (1661-1673)","Enpō (1673-1681)","Tenwa (1681-1684)","Jōkyō (1684-1688)","Genroku (1688-1704)","Hōei (1704-1711)","Shōtoku (1711-1716)","Kyōhō (1716-1736)","Genbun (1736-1741)","Kanpō (1741-1744)","Enkyō (1744-1748)","Kan-en (1748-1751)","Hōryaku (1751-1764)","Meiwa (1764-1772)","An-ei (1772-1781)","Tenmei (1781-1789)","Kansei (1789-1801)","Kyōwa (1801-1804)","Bunka (1804-1818)","Bunsei (1818-1830)","Tenpō (1830-1844)","Kōka (1844-1848)","Kaei (1848-1854)","Ansei (1854-1860)","Man-en (1860-1861)","Bunkyū (1861-1864)","Genji (1864-1865)","Keiō (1865-1868)","M","T","S","H"],"dayPeriods-format-wide-noon":"noon","dayPeriods@localeAlias495":{"bundle":"gregorian","target":"dayPeriods"},"days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-EHms":"E HH:mm:ss","field-day-relative+-1":"yesterday","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-era":"Era","days-format-narrow@localeAlias480":{"bundle":"gregorian","target":"days-standAlone-narrow"}},"ar":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-gb":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ru":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/japanese",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-dayOfYear-narrow@localeAlias1594":{"bundle":"","target":"field-dayOfYear-short"},"field-sun-narrow-relative+0":"this Sunday","field-dayOfYear-narrow@localeAlias1595":{"bundle":"","target":"field-dayOfYear"},"field-sun-narrow-relative+1":"next Sunday","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","eraNarrow":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749–749)","Tenpyō-shōhō (749–757)","Tenpyō-hōji (757–765)","Tenpyō-jingo (765–767)","Jingo-keiun (767–770)","Hōki (770–780)","Ten-ō (781–782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857–859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kahō (1094–1096)","Eichō (1096–1097)","Jōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110–1113)","Eikyū (1113–1118)","Gen’ei (1118–1120)","Hōan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hōen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hōgen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken’ei (1206–1207)","Jōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Jōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tenpuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En’ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun’ō (1260–1261)","Kōchō (1261–1264)","Bun’ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkyō (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkō (1321–1324)","Shōchū (1324–1326)","Karyaku (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kenmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun’an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenbun (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genna (1615–1624)","Kan’ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Jōō (1652–1655)","Meireki (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenna (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan’en (1748–1751)","Hōreki (1751–1764)","Meiwa (1764–1772)","An’ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man’en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","M","T","S","H","R"],"field-fri-narrow-relative+1":"next Friday","quarters-standAlone-wide@localeAlias1559":{"bundle":"gregorian","target":"quarters-format-wide"},"field-weekOfMonth-narrow@localeAlias1588":{"bundle":"","target":"field-weekOfMonth-short"},"field-weekOfMonth-narrow@localeAlias1589":{"bundle":"","target":"field-weekOfMonth"},"days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-Ehm":"E h:mm a","dayPeriods@localeAlias1560":{"bundle":"gregorian","target":"dayPeriods"},"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","field-minute-narrow-relative+0":"this minute","field-tue-narrow@localeAlias1609":{"bundle":"","target":"field-tue-short"},"days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sat-short@localeAlias1620":{"bundle":"","target":"field-sat"},"quarters-format-abbr@localeAlias1555":{"bundle":"gregorian","target":"quarters-format-wide"},"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","dateFormatItem-Ehms":"E h:mm:ss a","field-tue-narrow@localeAlias1610":{"bundle":"","target":"field-tue"},"field-weekdayOfMonth-short@localeAlias1599":{"bundle":"","target":"field-weekdayOfMonth"},"field-thu-relative+0":"this Thursday","dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","dayPeriods-standAlone-narrow@localeAlias1564":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-narrow@localeAlias1565":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-sun-short-relative+1":"next Sunday","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","field-week-narrow":"Week","field-hour-relative+0":"this hour","field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-minute-narrow":"Minute","dateFormatItem-yyyyMMM":"G y MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","field-era-short":"Era","field-day-narrow-relative+1":"tomorrow","field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-day-short@localeAlias1590":{"bundle":"","target":"field-day"},"field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-mon-short@localeAlias1605":{"bundle":"","target":"field-mon"},"field-month":"Month","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow":"Day of the Week","field-era-narrow@localeAlias1573":{"bundle":"","target":"field-era-short"},"field-era-narrow@localeAlias1574":{"bundle":"","target":"field-era"},"field-year-relative+0":"this year","field-year-relative+1":"next year","days-format-abbr@localeAlias1544":{"bundle":"gregorian","target":"days-format-wide"},"field-sun-short@localeAlias1602":{"bundle":"","target":"field-sun"},"field-fri-narrow@localeAlias1618":{"bundle":"","target":"field-fri-short"},"field-fri-narrow@localeAlias1619":{"bundle":"","target":"field-fri"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","field-year-narrow":"Year","quarters-format-narrow@localeAlias1556":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","dayPeriods-format-wide@localeAlias1562":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","field-hour-narrow@localeAlias1627":{"bundle":"","target":"field-hour-short"},"field-wed-short-relative+0":"this Wednesday","field-hour-narrow@localeAlias1628":{"bundle":"","target":"field-hour"},"field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-fri-short-relative+1":"next Friday","field-quarter-short-relative+-1":"last quarter","field-year-short-relative+-1":"last year","dateFormatItem-Bhm":"h:mm B","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-weekOfMonth-narrow":"Week Of Month","field-day-narrow@localeAlias1591":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias1592":{"bundle":"","target":"field-day"},"dateFormatItem-yyyyQQQ":"G y QQQ","dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-y":"G y","field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-narrow-relative+-1":"last Tuesday","dayPeriods-standAlone-abbr@localeAlias1563":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-hour-short@localeAlias1626":{"bundle":"","target":"field-hour"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"G y MMM d","field-sat-relative+-1":"last Saturday","dayPeriods-standAlone-narrow-pm":"PM","field-zone-narrow@localeAlias1636":{"bundle":"","target":"field-zone-short"},"field-zone-narrow@localeAlias1637":{"bundle":"","target":"field-zone"},"field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","quarters-standAlone-abbr@localeAlias1557":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias1558":{"bundle":"gregorian","target":"quarters-format-wide"},"field-dayperiod-short@localeAlias1623":{"bundle":"","target":"field-dayperiod"},"field-second":"Second","field-year-relative+-1":"last year","field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"GGGGG y-MM-dd","eraNames":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749–749)","Tenpyō-shōhō (749–757)","Tenpyō-hōji (757–765)","Tenpyō-jingo (765–767)","Jingo-keiun (767–770)","Hōki (770–780)","Ten-ō (781–782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857–859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kahō (1094–1096)","Eichō (1096–1097)","Jōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110–1113)","Eikyū (1113–1118)","Gen’ei (1118–1120)","Hōan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hōen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hōgen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken’ei (1206–1207)","Jōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Jōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tenpuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En’ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun’ō (1260–1261)","Kōchō (1261–1264)","Bun’ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkyō (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkō (1321–1324)","Shōchū (1324–1326)","Karyaku (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kenmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun’an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenbun (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genna (1615–1624)","Kan’ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Jōō (1652–1655)","Meireki (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenna (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan’en (1748–1751)","Hōreki (1751–1764)","Meiwa (1764–1772)","An’ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man’en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","Meiji","Taishō","Shōwa","Heisei","Reiwa"],"field-second-short":"Second","field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","days-standAlone-wide@localeAlias1553":{"bundle":"gregorian","target":"days-format-wide"},"dateFormat@localeAlias1569":{"bundle":"generic","target":"dateFormat"},"eraAbbr":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749–749)","Tenpyō-shōhō (749–757)","Tenpyō-hōji (757–765)","Tenpyō-jingo (765–767)","Jingo-keiun (767–770)","Hōki (770–780)","Ten-ō (781–782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857–859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kahō (1094–1096)","Eichō (1096–1097)","Jōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110–1113)","Eikyū (1113–1118)","Gen’ei (1118–1120)","Hōan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hōen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hōgen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken’ei (1206–1207)","Jōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Jōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tenpuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En’ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun’ō (1260–1261)","Kōchō (1261–1264)","Bun’ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkyō (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkō (1321–1324)","Shōchū (1324–1326)","Karyaku (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kenmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun’an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenbun (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genna (1615–1624)","Kan’ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Jōō (1652–1655)","Meireki (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenna (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan’en (1748–1751)","Hōreki (1751–1764)","Meiwa (1764–1772)","An’ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man’en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","Meiji","Taishō","Shōwa","Heisei","Reiwa"],"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","field-thu-narrow@localeAlias1615":{"bundle":"","target":"field-thu-short"},"field-thu-narrow@localeAlias1616":{"bundle":"","target":"field-thu"},"dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-weekday-narrow@localeAlias1597":{"bundle":"","target":"field-weekday-short"},"field-weekday-narrow@localeAlias1598":{"bundle":"","target":"field-weekday"},"field-year-short@localeAlias1575":{"bundle":"","target":"field-year"},"field-sat-narrow@localeAlias1621":{"bundle":"","target":"field-sat-short"},"field-sat-narrow@localeAlias1622":{"bundle":"","target":"field-sat"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-fri-short@localeAlias1617":{"bundle":"","target":"field-fri"},"field-week-short@localeAlias1584":{"bundle":"","target":"field-week"},"field-day-short-relative+1":"tomorrow","dateFormat-long":"G y MMMM d","field-sun-narrow-relative+-1":"last Sunday","dayPeriods-format-narrow@localeAlias1561":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-second-relative+0":"now","field-month-short@localeAlias1581":{"bundle":"","target":"field-month"},"field-quarter-relative+-1":"last quarter","field-dayperiod-narrow@localeAlias1624":{"bundle":"","target":"field-dayperiod-short"},"field-dayperiod-narrow@localeAlias1625":{"bundle":"","target":"field-dayperiod"},"months-standAlone-wide@localeAlias1542":{"bundle":"gregorian","target":"months-format-wide"},"days@localeAlias1543":{"bundle":"gregorian","target":"days"},"quarters@localeAlias1554":{"bundle":"gregorian","target":"quarters"},"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-wed-narrow@localeAlias1612":{"bundle":"","target":"field-wed-short"},"field-wed-narrow@localeAlias1613":{"bundle":"","target":"field-wed"},"field-week-relative+-1":"last week","field-month-relative+-1":"last month","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"Year","field-era":"Era","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"field-day-short-relative+-1":"yesterday","dateFormatItem-GyMMM":"G y MMM","timeFormat-full":"HH:mm:ss zzzz","field-quarter-narrow@localeAlias1579":{"bundle":"","target":"field-quarter-short"},"dateFormatItem-Bhms":"h:mm:ss B","field-hour":"Hour","field-dayOfYear-narrow":"Day Of Year","eraNames@localeAlias1568":{"bundle":"japanese","target":"eraAbbr"},"field-second-narrow-relative+0":"now","field-quarter-narrow@localeAlias1580":{"bundle":"","target":"field-quarter"},"field-quarter":"Quarter","months@localeAlias1537":{"bundle":"gregorian","target":"months"},"field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-month-narrow@localeAlias1582":{"bundle":"","target":"field-month-short"},"field-month-narrow@localeAlias1583":{"bundle":"","target":"field-month"},"field-year-narrow@localeAlias1576":{"bundle":"","target":"field-year-short"},"dateFormatItem-yyyy":"G y","field-year-narrow@localeAlias1577":{"bundle":"","target":"field-year"},"days-format-short@localeAlias1546":{"bundle":"gregorian","target":"days-format-abbr"},"days-format-short@localeAlias1547":{"bundle":"gregorian","target":"days-format-wide"},"dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"Day","field-dayOfYear-short@localeAlias1593":{"bundle":"","target":"field-dayOfYear"},"field-mon-relative+-1":"last Monday","field-dayOfYear":"Day Of Year","dateFormat-medium":"G y MMM d","dateTimeFormat-short":"{1} {0}","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-MEd":"MM-dd, E","field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","field-month-short":"Month","field-wed-short@localeAlias1611":{"bundle":"","target":"field-wed"},"dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","field-thu-short@localeAlias1614":{"bundle":"","target":"field-thu"},"dateFormatItem-Bh":"h B","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dayPeriods-format-abbr-am":"AM","months-format-narrow@localeAlias1539":{"bundle":"gregorian","target":"months-standAlone-narrow"},"field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","days-standAlone-abbr@localeAlias1548":{"bundle":"gregorian","target":"days-format-abbr"},"field-month-narrow":"Month","dayPeriods-format-narrow-am":"AM","days-standAlone-abbr@localeAlias1549":{"bundle":"gregorian","target":"days-format-wide"},"field-month-narrow-relative+-1":"last month","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-quarter-short@localeAlias1578":{"bundle":"","target":"field-quarter"},"field-weekday-short":"Day of the Week","field-weekday-short@localeAlias1596":{"bundle":"","target":"field-weekday"},"field-day-narrow-relative+-1":"yesterday","field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era-short@localeAlias1572":{"bundle":"","target":"field-era"},"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"Quarter","field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","field-dayperiod-short":"Dayperiod","months-format-abbr@localeAlias1538":{"bundle":"gregorian","target":"months-format-wide"},"dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"this quarter","field-quarter-short-relative+1":"next quarter","dateFormatItem-Ed":"d, E","field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-standAlone-wide-am":"AM","field-minute-short@localeAlias1629":{"bundle":"","target":"field-minute"},"field-fri-relative+-1":"last Friday","field-weekdayOfMonth-narrow@localeAlias1600":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-weekOfMonth-short@localeAlias1587":{"bundle":"","target":"field-weekOfMonth"},"field-weekdayOfMonth-narrow@localeAlias1601":{"bundle":"","target":"field-weekdayOfMonth"},"field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-short":"Day","field-dayperiod":"Dayperiod","months-standAlone-abbr@localeAlias1540":{"bundle":"gregorian","target":"months-format-abbr"},"field-hour-short":"Hour","months-standAlone-abbr@localeAlias1541":{"bundle":"gregorian","target":"months-format-wide"},"months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-era-narrow":"Era","field-mon-narrow@localeAlias1606":{"bundle":"","target":"field-mon-short"},"field-sat-short-relative+-1":"last Saturday","field-mon-narrow@localeAlias1607":{"bundle":"","target":"field-mon"},"field-sun-narrow@localeAlias1603":{"bundle":"","target":"field-sun-short"},"field-week-short-relative+-1":"last week","field-sun-narrow@localeAlias1604":{"bundle":"","target":"field-sun"},"dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-weekdayOfMonth":"Weekday Of Month","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-second-narrow@localeAlias1633":{"bundle":"","target":"field-second-short"},"field-second-narrow@localeAlias1634":{"bundle":"","target":"field-second"},"field-quarter-narrow-relative+0":"this quarter","dateFormatItem-GyMMMEd":"G y MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","field-year-narrow-relative+0":"this year","field-year-narrow-relative+1":"next year","dateFormatItem-Gy":"G y","field-tue-short@localeAlias1608":{"bundle":"","target":"field-tue"},"field-zone-narrow":"Zone","dateFormatItem-yyyyM":"GGGGG y-MM","field-tue-relative+-1":"last Tuesday","field-minute-short":"Minute","days-standAlone-short@localeAlias1550":{"bundle":"gregorian","target":"days-format-short"},"days-standAlone-short@localeAlias1551":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-short@localeAlias1552":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-Hm":"HH:mm","field-week-relative+0":"this week","field-week-relative+1":"next week","dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","field-zone-short@localeAlias1635":{"bundle":"","target":"field-zone"},"field-week-narrow@localeAlias1585":{"bundle":"","target":"field-week-short"},"field-week-narrow@localeAlias1586":{"bundle":"","target":"field-week"},"days-format-narrow@localeAlias1545":{"bundle":"gregorian","target":"days-standAlone-narrow"},"field-second-short@localeAlias1632":{"bundle":"","target":"field-second"},"dateTime@localeAlias1571":{"bundle":"generic","target":"dateTime"},"field-sat-narrow-relative+-1":"last Saturday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"field-minute-narrow@localeAlias1630":{"bundle":"","target":"field-minute-short"},"field-minute-narrow@localeAlias1631":{"bundle":"","target":"field-minute"},"field-month-short-relative+-1":"last month","dateFormatItem-EHms":"E HH:mm:ss","timeFormat@localeAlias1570":{"bundle":"gregorian","target":"timeFormat"},"dateFormatItem-MMMMd":"MMMM d","field-week":"Week","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour","dayPeriods-standAlone-wide@localeAlias1566":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-wide@localeAlias1567":{"bundle":"gregorian","target":"dayPeriods-format-abbr"}},"ar":true,"bs":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ru":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/buddhist.js b/lib/dojo/cldr/nls/ko/buddhist.js
index 2fc76f60c..2c4a89faf 100644
--- a/lib/dojo/cldr/nls/ko/buddhist.js
+++ b/lib/dojo/cldr/nls/ko/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/buddhist",{"days-standAlone-short":["일","월","화","수","목","금","토"],"months-format-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-second-relative+0":"지금","field-weekday":"요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","dateFormatItem-GyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-MMMEd":"MMM d일 (E)","eraNarrow":["불기"],"field-tue-relative+-1":"지난 화요일","days-format-short":["일","월","화","수","목","금","토"],"dateFormat-long":"G y년 M월 d일","field-fri-relative+-1":"지난 금요일","field-wed-relative+-1":"지난 수요일","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormatItem-yyyyQQQ":"G y년 QQQ","dayPeriods-format-wide-pm":"오후","dateFormat-full":"G y년 M월 d일 EEEE","dateFormatItem-yyyyMEd":"G y. M. d. (E)","field-thu-relative+-1":"지난 목요일","dateFormatItem-Md":"M. d.","field-era":"연호","timeFormat-short":"a h:mm","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"timeFormat-long":"a h시 m분 s초 z","field-year":"년","field-hour":"시","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","timeFormat-full":"a h시 m분 s초 zzzz","field-day-relative+0":"오늘","field-thu-relative+0":"이번 목요일","field-day-relative+1":"내일","field-thu-relative+1":"다음 목요일","dateFormatItem-GyMMMd":"G y년 MMM d일","field-day-relative+2":"모레","dateFormatItem-H":"H시","months-standAlone-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"quarters-format-abbr":["1분기","2분기","3분기","4분기"],"quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-Gy":"G y년","dateFormatItem-yyyyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-M":"M월","dateFormatItem-yyyyMMM":"G y년 MMM","dateFormatItem-yyyyMMMd":"G y년 MMM d일","timeFormat-medium":"a h:mm:ss","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"eraAbbr":["불기"],"field-minute":"분","field-dayperiod":"오전/오후","dateFormatItem-d":"d일","field-day-relative+-1":"어제","dateFormatItem-h":"a h시","field-day-relative+-2":"그저께","dateFormatItem-MMMd":"MMM d일","dateFormatItem-MEd":"M. d. (E)","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-zone":"시간대","dateFormatItem-y":"G y년","months-standAlone-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-year-relative+-1":"작년","field-month-relative+-1":"지난달","dateFormatItem-hm":"a h:mm","days-format-abbr":["일","월","화","수","목","금","토"],"eraNames":["불기"],"dateFormatItem-yyyyMd":"G y. M. d.","field-month":"월","days-standAlone-narrow":["일","월","화","수","목","금","토"],"field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","dayPeriods-format-wide-am":"오전","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","dateFormat-short":"G y. M. d.","field-second":"초","field-sat-relative+-1":"지난 토요일","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-month-relative+1":"다음 달","dateFormatItem-Ed":"d일 (E)","field-week":"주","dateFormat-medium":"G y. M. d.","field-year-relative+0":"올해","field-week-relative+-1":"지난주","dateFormatItem-yyyyM":"G y. M.","field-year-relative+1":"내년","dateFormatItem-yyyyQQQQ":"G y년 QQQQ","dateFormatItem-Hms":"H시 m분 s초","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G y년 MMM","field-mon-relative+-1":"지난 월요일","dateFormatItem-yyyy":"G y년","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/buddhist",{"field-tue-relative+-1":"지난 화요일","field-year":"년","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","timeFormat-short":"a h:mm","field-minute":"분","field-tue-narrow-relative+0":"이번 화요일","field-tue-narrow-relative+1":"다음 화요일","field-thu-short-relative+0":"이번 목요일","field-thu-short-relative+1":"다음 목요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","field-wed-narrow-relative+-1":"지난 수요일","dateFormatItem-EBhms":"E B h:mm:ss","field-year-narrow":"년","field-era-short":"연호","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-weekdayOfMonth":"월의 평일","field-second-short":"초","dateFormatItem-MMMd":"MMM d일","field-weekdayOfMonth-narrow":"월의 평일","field-week-relative+0":"이번 주","field-month-relative+0":"이번 달","field-week-relative+1":"다음 주","field-month-relative+1":"다음 달","field-sun-narrow-relative+0":"이번 일요일","timeFormat-medium":"a h:mm:ss","field-mon-short-relative+0":"이번 월요일","field-sun-narrow-relative+1":"다음 일요일","field-mon-short-relative+1":"다음 월요일","field-second-relative+0":"지금","dateFormatItem-yyyyQQQ":"G y년 QQQ","months-standAlone-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"eraNames":["불기"],"field-weekOfMonth":"월의 주","field-month-short":"월","dateFormatItem-GyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-yyyyMd":"G y. M. d.","field-day":"일","field-dayOfYear-short":"년의 일","field-year-relative+-1":"작년","dayPeriods-format-wide-am":"오전","field-sat-short-relative+-1":"지난 토요일","field-hour-relative+0":"현재 시간","dateFormatItem-yyyyMEd":"G y. M. d. (E)","field-wed-relative+-1":"지난 수요일","field-sat-narrow-relative+-1":"지난 토요일","field-second":"초","days-standAlone-narrow":["일","월","화","수","목","금","토"],"dayPeriods-standAlone-wide-pm":"오후","dateFormatItem-Ehms":"E a h:mm:ss","dateFormat-long":"G y년 M월 d일","dateFormatItem-GyMMMd":"G y년 MMM d일","field-quarter":"분기","field-week-short":"주","dateFormatItem-MMMEEEEd":"MMM d일 EEEE","quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"days-format-narrow":["일","월","화","수","목","금","토"],"field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-mon-relative+-1":"지난 월요일","dateFormatItem-GyMMM":"G y년 MMM","field-month":"월","field-day-narrow":"일","field-minute-short":"분","field-dayperiod":"오전/오후","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","dateFormat-medium":"G y. M. d.","dateFormatItem-yyyyMMMM":"G y년 MMMM","eraAbbr":["불기"],"quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"dateFormatItem-yyyyM":"G y. M.","field-second-narrow":"초","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-year-short":"년","months-format-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-quarter-relative+-1":"지난 분기","dateFormatItem-yyyyMMMd":"G y년 MMM d일","field-dayperiod-narrow":"오전/오후","days-format-short":["일","월","화","수","목","금","토"],"dayPeriods-format-wide-pm":"오후","field-dayOfYear":"년의 일","field-sat-relative+-1":"지난 토요일","dateFormatItem-Md":"M. d.","field-hour":"시","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormat-full":"G y년 M월 d일 EEEE","field-month-relative+-1":"지난달","field-quarter-short":"분기","field-sat-narrow-relative+0":"이번 토요일","field-fri-relative+0":"이번 금요일","field-sat-narrow-relative+1":"다음 토요일","field-fri-relative+1":"다음 금요일","dateFormatItem-EBhm":"E B h:mm","field-sun-short-relative+0":"이번 일요일","field-sun-short-relative+1":"다음 일요일","field-week-relative+-1":"지난주","dateFormatItem-Ehm":"E a h:mm","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-quarter-relative+0":"이번 분기","field-minute-relative+0":"현재 분","timeFormat-long":"a h시 m분 s초 z","field-quarter-relative+1":"다음 분기","field-wed-short-relative+-1":"지난 수요일","dateFormat-short":"G y. M. d.","dateFormatItem-Bh":"B h시","field-thu-short-relative+-1":"지난 목요일","days-standAlone-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"dateFormatItem-yyyyMMMEd":"G y년 MMM d일 (E)","field-mon-narrow-relative+-1":"지난 월요일","dateFormatItem-MMMMd":"MMMM d일","field-thu-narrow-relative+-1":"지난 목요일","field-tue-narrow-relative+-1":"지난 화요일","dateFormatItem-H":"H시","field-weekOfMonth-short":"월의 주","dateFormatItem-yyyy":"G y년","field-wed-short-relative+0":"이번 수요일","dateFormatItem-M":"M월","months-standAlone-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-wed-short-relative+1":"다음 수요일","field-sun-relative+-1":"지난 일요일","days-standAlone-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-hm":"a h:mm","dateFormatItem-d":"d일","field-weekday":"요일","field-sat-relative+0":"이번 토요일","dateFormatItem-h":"a h시","field-sat-relative+1":"다음 토요일","months-standAlone-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-dayOfYear-narrow":"년의 일","field-weekdayOfMonth-short":"월의 평일","timeFormat-full":"a h시 m분 s초 zzzz","dateFormatItem-MEd":"M. d. (E)","field-zone-narrow":"시간대","dateFormatItem-y":"G y년","field-thu-narrow-relative+0":"이번 목요일","field-thu-narrow-relative+1":"다음 목요일","field-sun-narrow-relative+-1":"지난 일요일","field-mon-short-relative+-1":"지난 월요일","field-thu-relative+0":"이번 목요일","field-thu-relative+1":"다음 목요일","field-fri-short-relative+-1":"지난 금요일","dateFormatItem-hms":"a h:mm:ss","field-thu-relative+-1":"지난 목요일","field-week":"주","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-Ed":"d일 (E)","field-wed-narrow-relative+0":"이번 수요일","field-wed-narrow-relative+1":"다음 수요일","dateFormatItem-yyyyMMMEEEEd":"G y년 MMM d일 EEEE","dateFormatItem-yyyyMMM":"G y년 MMM","field-dayperiod-short":"오전/오후","field-fri-short-relative+0":"이번 금요일","field-fri-short-relative+1":"다음 금요일","days-standAlone-short":["일","월","화","수","목","금","토"],"dateFormatItem-yyyyQQQQ":"G y년 QQQQ","field-zone-short":"시간대","field-hour-short":"시","quarters-format-abbr":["1분기","2분기","3분기","4분기"],"field-month-narrow":"월","field-hour-narrow":"시","field-fri-narrow-relative+-1":"지난 금요일","field-year-relative+0":"올해","field-year-relative+1":"내년","field-era-narrow":"연호","field-fri-relative+-1":"지난 금요일","eraNarrow":["불기"],"dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"지난 화요일","field-minute-narrow":"분","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-mon-narrow-relative+0":"이번 월요일","field-mon-narrow-relative+1":"다음 월요일","dateFormatItem-GyMMMEEEEd":"G y년 MMM d일 EEEE","field-zone":"시간대","dateFormatItem-MMMEd":"MMM d일 (E)","field-weekOfMonth-narrow":"월의 주","field-weekday-narrow":"요일","field-quarter-narrow":"분기","field-sun-short-relative+-1":"지난 일요일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-weekday-short":"요일","days-format-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","dateFormatItem-Gy":"G y년","field-day-short":"일","field-week-narrow":"주","field-era":"연호","field-fri-narrow-relative+0":"이번 금요일","field-fri-narrow-relative+1":"다음 금요일","dayPeriods-standAlone-wide-am":"오전"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/chinese.js b/lib/dojo/cldr/nls/ko/chinese.js
index dd9617a6b..e80744ffd 100644
--- a/lib/dojo/cldr/nls/ko/chinese.js
+++ b/lib/dojo/cldr/nls/ko/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/chinese",{"field-second-relative+0":"지금","field-weekday":"요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","dateFormatItem-GyMMMEd":"U년 MMM d일 (E)","dateFormatItem-MMMEd":"MMM d일 (E)","field-tue-relative+-1":"지난 화요일","dateFormat-long":"U년 MMM d일","field-fri-relative+-1":"지난 금요일","field-wed-relative+-1":"지난 수요일","dateFormatItem-yyyyQQQ":"U년 QQQ","dateFormat-full":"U년 MMM d일 EEEE","dateFormatItem-yyyyMEd":"U. M. d. (E)","field-thu-relative+-1":"지난 목요일","dateFormatItem-Md":"M. d.","dateFormatItem-yMd":"U. M. d.","field-era":"연호","dateFormatItem-MEEEEd":"M. d. EEEE","field-year":"년","field-hour":"시","field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-thu-relative+0":"이번 목요일","dateFormatItem-GyMMMd":"U년 MMM d일","field-day-relative+2":"모레","field-thu-relative+1":"다음 목요일","dateFormatItem-H":"H시","dateFormatItem-Gy":"U년","dateFormatItem-yyyyMMMEd":"U년 MMM d일 (E)","dateFormatItem-M":"MMM","dateFormatItem-yyyyMMM":"U년 MMM","dateFormatItem-yyyyMMMd":"U년 MMM d일","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","field-minute":"분","field-dayperiod":"오전/오후","dateFormatItem-d":"d일","dateFormatItem-yyyyMEEEEd":"U. M. d. EEEE","field-day-relative+-1":"어제","dateFormatItem-h":"a h시","field-day-relative+-2":"그저께","dateFormatItem-MMMd":"MMM d일","dateFormatItem-EEEEd":"d일 EEEE","dateFormatItem-MEd":"M. d. (E)","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","field-zone":"시간대","dateFormatItem-y":"U년","field-year-relative+-1":"작년","field-month-relative+-1":"지난달","dateFormatItem-hm":"a h:mm","dateFormatItem-GyMMMEEEEd":"U년 MMM d일 EEEE","dateFormatItem-yyyyMMMEEEEd":"U년 MMM d일 EEEE","dateFormatItem-MMMEEEEd":"MMM d일 EEEE","dateFormatItem-yyyyMd":"U. M. d.","field-month":"월","dateFormatItem-MMM":"LLL","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","dateFormat-short":"y. M. d.","field-second":"초","field-sat-relative+-1":"지난 토요일","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-month-relative+1":"다음 달","dateFormatItem-Ed":"d일 (E)","field-week":"주","dateFormat-medium":"y. M. d.","field-year-relative+0":"올해","field-week-relative+-1":"지난주","dateFormatItem-yyyyM":"U. M.","field-year-relative+1":"내년","dateFormatItem-yyyyQQQQ":"U년 QQQQ","dateFormatItem-Hms":"H시 m분 s초","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"U년 MMM","field-mon-relative+-1":"지난 월요일","dateFormatItem-yyyy":"U년","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/chinese",{"field-tue-relative+-1":"지난 화요일","field-year":"년","dateFormatItem-MEEEEd":"M. d. EEEE","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","dateFormatItem-ms":"mm:ss","field-minute":"분","field-tue-narrow-relative+0":"이번 화요일","field-tue-narrow-relative+1":"다음 화요일","field-thu-short-relative+0":"이번 목요일","field-day-relative+0":"오늘","field-thu-short-relative+1":"다음 목요일","field-day-relative+1":"내일","field-day-relative+2":"모레","field-wed-narrow-relative+-1":"지난 수요일","dateFormatItem-EBhms":"E B h:mm:ss","field-year-narrow":"년","field-era-short":"연호","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-weekdayOfMonth":"월의 평일","field-second-short":"초","dateFormatItem-MMMd":"MMM d일","field-weekdayOfMonth-narrow":"월의 평일","field-week-relative+0":"이번 주","field-month-relative+0":"이번 달","field-week-relative+1":"다음 주","field-month-relative+1":"다음 달","field-sun-narrow-relative+0":"이번 일요일","field-mon-short-relative+0":"이번 월요일","field-sun-narrow-relative+1":"다음 일요일","field-mon-short-relative+1":"다음 월요일","field-second-relative+0":"지금","dateFormatItem-yyyyQQQ":"r년(U년) QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"월의 주","field-month-short":"월","dateFormatItem-GyMMMEd":"r년(U년) MMM d일 (E)","dateFormatItem-yyyyMd":"r. M. d.","field-day":"일","field-dayOfYear-short":"년의 일","field-year-relative+-1":"작년","field-sat-short-relative+-1":"지난 토요일","field-hour-relative+0":"현재 시간","dateFormatItem-yyyyMEd":"r. M. d. (E)","field-wed-relative+-1":"지난 수요일","field-sat-narrow-relative+-1":"지난 토요일","field-second":"초","dateFormat-long":"U년 MMM d일","dateFormatItem-GyMMMd":"r년 MMM d일","field-quarter":"분기","field-week-short":"주","dateFormatItem-MMMEEEEd":"MMM d일 EEEE","field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-mon-relative+-1":"지난 월요일","dateFormatItem-GyMMM":"r년(U년) MMM","field-month":"월","field-day-narrow":"일","dateFormatItem-MMM":"LLL","field-minute-short":"분","field-dayperiod":"오전/오후","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","dateFormat-medium":"y. M. d.","dateFormatItem-yyyyMMMM":"r년(U년) MMMM","dateFormatItem-UMMM":"U년 MMM","dateFormatItem-EEEEd":"d일 EEEE","dateFormatItem-yyyyM":"r. M.","field-second-narrow":"초","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-year-short":"년","field-quarter-relative+-1":"지난 분기","dateFormatItem-yyyyMMMd":"r년 MMM d일","field-dayperiod-narrow":"오전/오후","field-dayOfYear":"년의 일","field-sat-relative+-1":"지난 토요일","dateFormatItem-Md":"M. d.","field-hour":"시","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormat-full":"U년 MMM d일 EEEE","dateFormatItem-UMd":"U년 M. d.","field-month-relative+-1":"지난달","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"분기","field-sat-narrow-relative+0":"이번 토요일","field-fri-relative+0":"이번 금요일","field-sat-narrow-relative+1":"다음 토요일","field-fri-relative+1":"다음 금요일","dateFormatItem-EBhm":"E B h:mm","field-sun-short-relative+0":"이번 일요일","field-sun-short-relative+1":"다음 일요일","field-week-relative+-1":"지난주","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-quarter-relative+0":"이번 분기","field-minute-relative+0":"현재 분","field-quarter-relative+1":"다음 분기","field-wed-short-relative+-1":"지난 수요일","dateFormat-short":"y. M. d.","dateFormatItem-Bh":"B h시","field-thu-short-relative+-1":"지난 목요일","dateFormatItem-yyyyMMMEd":"r년(U년) MMM d일 (E)","field-mon-narrow-relative+-1":"지난 월요일","dateFormatItem-MMMMd":"MMMM d일","field-thu-narrow-relative+-1":"지난 목요일","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"지난 화요일","dateFormatItem-H":"H시","field-weekOfMonth-short":"월의 주","dateFormatItem-yyyy":"r년(U년)","field-wed-short-relative+0":"이번 수요일","dateFormatItem-M":"MMM","field-wed-short-relative+1":"다음 수요일","field-sun-relative+-1":"지난 일요일","dateFormatItem-hm":"a h:mm","dateFormatItem-d":"d일","field-weekday":"요일","field-sat-relative+0":"이번 토요일","dateFormatItem-h":"a h시","dateFormatItem-yyyyMEEEEd":"r. M. d. EEEE","field-sat-relative+1":"다음 토요일","field-dayOfYear-narrow":"년의 일","field-weekdayOfMonth-short":"월의 평일","dateFormatItem-MEd":"M. d. (E)","field-zone-narrow":"시간대","dateFormatItem-y":"r년(U년)","field-thu-narrow-relative+0":"이번 목요일","field-sun-narrow-relative+-1":"지난 일요일","field-mon-short-relative+-1":"지난 월요일","field-thu-narrow-relative+1":"다음 목요일","field-thu-relative+0":"이번 목요일","field-thu-relative+1":"다음 목요일","dateFormatItem-hms":"a h:mm:ss","field-fri-short-relative+-1":"지난 금요일","field-thu-relative+-1":"지난 목요일","dateFormatItem-yMd":"r. M. d.","field-week":"주","dateFormatItem-Ed":"d일 (E)","field-wed-narrow-relative+0":"이번 수요일","field-wed-narrow-relative+1":"다음 수요일","dateFormatItem-yyyyMMMEEEEd":"r년(U년) MMM d일 EEEE","dateFormatItem-yyyyMMM":"r년(U년) MMM","field-dayperiod-short":"오전/오후","field-fri-short-relative+0":"이번 금요일","field-fri-short-relative+1":"다음 금요일","dateFormatItem-yyyyQQQQ":"r년(U년) QQQQ","dateFormatItem-UMMMd":"U년 MMM d일","field-hour-short":"시","field-zone-short":"시간대","field-month-narrow":"월","field-hour-narrow":"시","field-fri-narrow-relative+-1":"지난 금요일","field-year-relative+0":"올해","field-year-relative+1":"내년","field-era-narrow":"연호","field-fri-relative+-1":"지난 금요일","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"지난 화요일","field-minute-narrow":"분","field-mon-narrow-relative+0":"이번 월요일","field-mon-narrow-relative+1":"다음 월요일","dateFormatItem-GyMMMEEEEd":"r년(U년) MMM d일 EEEE","field-zone":"시간대","dateFormatItem-MMMEd":"MMM d일 (E)","field-weekOfMonth-narrow":"월의 주","field-weekday-narrow":"요일","field-quarter-narrow":"분기","field-sun-short-relative+-1":"지난 일요일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-weekday-short":"요일","dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","dateFormatItem-Gy":"r년(U년)","field-day-short":"일","field-week-narrow":"주","field-era":"연호","field-fri-narrow-relative+0":"이번 금요일","dateFormatItem-UM":"U년 MMM","field-fri-narrow-relative+1":"다음 금요일"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/coptic.js b/lib/dojo/cldr/nls/ko/coptic.js
index 08615e1f7..c81fc0c31 100644
--- a/lib/dojo/cldr/nls/ko/coptic.js
+++ b/lib/dojo/cldr/nls/ko/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/coptic",{"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-dayperiod":"오전/오후","field-sun-relative+-1":"지난 일요일","field-mon-relative+-1":"지난 월요일","field-minute":"분","field-day-relative+-1":"어제","field-weekday":"요일","field-day-relative+-2":"그저께","field-era":"연호","field-hour":"시","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","months-standAlone-abbr":["투트","바바흐","하투르","키야흐크","투바흐","암쉬르","바라마트","바라문다흐","바샨스","바우나흐","아비브","미스라","나시"],"field-wed-relative+-1":"지난 수요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","field-tue-relative+0":"이번 화요일","field-zone":"시간대","field-tue-relative+1":"다음 화요일","field-week-relative+-1":"지난주","field-year-relative+0":"올해","field-year-relative+1":"내년","field-sat-relative+-1":"지난 토요일","field-year-relative+-1":"작년","field-year":"년","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","months-standAlone-wide":["투트","바바흐","하투르","키야흐크","투바흐","암쉬르","바라마트","바라문다흐","바샨스","바우나흐","아비브","미스라","나시"],"field-week":"주","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주","months-format-abbr":["투트","바바흐","하투르","키야흐크","투바흐","암쉬르","바라마트","바라문다흐","바샨스","바우나흐","아비브","미스라","나시"],"field-month-relative+0":"이번 달","field-month":"월","field-month-relative+1":"다음 달","field-fri-relative+-1":"지난 금요일","field-second":"초","field-tue-relative+-1":"지난 화요일","field-day":"일","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-thu-relative+0":"이번 목요일","field-second-relative+0":"지금","field-thu-relative+1":"다음 목요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","field-month-relative+-1":"지난달","field-thu-relative+-1":"지난 목요일"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/coptic",{"field-second-relative+0":"지금","field-quarter-relative+-1":"지난 분기","field-weekday":"요일","field-mon-narrow-relative+0":"이번 월요일","field-mon-narrow-relative+1":"다음 월요일","field-weekOfMonth-short":"월의 주","field-weekday-short":"요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","field-dayperiod-short":"오전/오후","field-week-short":"주","field-tue-relative+-1":"지난 화요일","field-year-short":"년","field-era-narrow":"연호","field-thu-narrow-relative+-1":"지난 목요일","field-hour-relative+0":"현재 시간","field-quarter-narrow":"분기","field-fri-relative+-1":"지난 금요일","field-hour-short":"시","field-wed-relative+-1":"지난 수요일","field-dayOfYear":"년의 일","months-format-wide":["투트","바바흐","하투르","키야흐크","투바흐","암쉬르","바라마트","바라문다흐","바샨스","바우나흐","아비브","미스라","나시"],"field-mon-short-relative+-1":"지난 월요일","field-thu-relative+-1":"지난 목요일","field-era":"연호","months-standAlone-wide":["투트","바바흐","하투르","키야흐크","투바흐","암쉬르","바라마트","바라문다흐","바샨스","바우나흐","아비브","미스라","나시"],"field-sat-narrow-relative+0":"이번 토요일","field-sat-narrow-relative+1":"다음 토요일","field-year":"년","field-hour":"시","months-format-abbr":["투트","바바흐","하투르","키야흐크","투바흐","암쉬르","바라마트","바라문다흐","바샨스","바우나흐","아비브","미스라","나시"],"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-sat-short-relative+-1":"지난 토요일","field-weekOfMonth-narrow":"월의 주","field-minute-narrow":"분","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-thu-relative+0":"이번 목요일","field-mon-narrow-relative+-1":"지난 월요일","field-day-relative+2":"모레","field-wed-narrow-relative+0":"이번 수요일","field-thu-relative+1":"다음 목요일","months-standAlone-abbr":["투트","바바흐","하투르","키야흐크","투바흐","암쉬르","바라마트","바라문다흐","바샨스","바우나흐","아비브","미스라","나시"],"field-wed-narrow-relative+1":"다음 수요일","field-mon-short-relative+0":"이번 월요일","field-mon-short-relative+1":"다음 월요일","field-weekdayOfMonth-short":"월의 평일","field-wed-short-relative+-1":"지난 수요일","field-fri-narrow-relative+-1":"지난 금요일","field-hour-narrow":"시","field-year-narrow":"년","field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-minute-short":"분","field-day-narrow":"일","field-wed-short-relative+0":"이번 수요일","field-wed-short-relative+1":"다음 수요일","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","field-minute":"분","field-month-short":"월","field-dayperiod":"오전/오후","field-weekdayOfMonth-narrow":"월의 평일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-minute-relative+0":"현재 분","field-week-narrow":"주","field-wed-narrow-relative+-1":"지난 수요일","field-day-short":"일","field-quarter-relative+0":"이번 분기","field-dayperiod-narrow":"오전/오후","field-quarter-relative+1":"다음 분기","field-zone-short":"시간대","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","field-second-narrow":"초","field-zone":"시간대","field-year-relative+-1":"작년","field-month-relative+-1":"지난달","field-thu-short-relative+0":"이번 목요일","field-thu-short-relative+1":"다음 목요일","field-weekday-narrow":"요일","field-quarter":"분기","field-zone-narrow":"시간대","field-month":"월","field-weekOfMonth":"월의 주","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-fri-narrow-relative+0":"이번 금요일","field-fri-narrow-relative+1":"다음 금요일","field-fri-short-relative+-1":"지난 금요일","field-sun-narrow-relative+-1":"지난 일요일","field-dayOfYear-short":"년의 일","field-sun-narrow-relative+0":"이번 일요일","field-thu-narrow-relative+0":"이번 목요일","field-sun-narrow-relative+1":"다음 일요일","field-thu-narrow-relative+1":"다음 목요일","field-tue-narrow-relative+0":"이번 화요일","field-mon-relative+0":"이번 월요일","field-tue-narrow-relative+1":"다음 화요일","field-mon-relative+1":"다음 월요일","field-tue-narrow-relative+-1":"지난 화요일","field-second-short":"초","field-second":"초","field-fri-short-relative+0":"이번 금요일","field-sat-relative+-1":"지난 토요일","field-fri-short-relative+1":"다음 금요일","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-weekdayOfMonth":"월의 평일","field-month-relative+1":"다음 달","field-week":"주","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","field-year-relative+0":"올해","field-week-relative+-1":"지난주","field-year-relative+1":"내년","field-era-short":"연호","field-quarter-short":"분기","field-dayOfYear-narrow":"년의 일","field-sun-short-relative+-1":"지난 일요일","field-thu-short-relative+-1":"지난 목요일","field-tue-short-relative+-1":"지난 화요일","field-mon-relative+-1":"지난 월요일","field-sat-narrow-relative+-1":"지난 토요일","field-month-narrow":"월","field-week-relative+0":"이번 주","field-sun-short-relative+0":"이번 일요일","field-week-relative+1":"다음 주","field-sun-short-relative+1":"다음 일요일"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/currency.js b/lib/dojo/cldr/nls/ko/currency.js
index 5006fa7af..eb1f2ea9e 100644
--- a/lib/dojo/cldr/nls/ko/currency.js
+++ b/lib/dojo/cldr/nls/ko/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/currency",{"HKD_displayName":"홍콩 달러","CHF_displayName":"스위스 프랑","JPY_symbol":"JP¥","CAD_displayName":"캐나다 달러","HKD_symbol":"HK$","CNY_displayName":"중국 위안화","USD_symbol":"US$","AUD_displayName":"호주 달러","JPY_displayName":"일본 엔화","CAD_symbol":"CA$","USD_displayName":"미국 달러","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"파운드","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"유로"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/currency",{"HKD_displayName":"홍콩 달러","CNY_displayName":"중국 위안화","JPY_displayName":"일본 엔화","JPY_symbol":"JP¥","USD_displayName":"미국 달러","CAD_symbol":"CA$","GBP_displayName":"영국 파운드","CHF_displayName":"스위스 프랑","CNY_symbol":"CN¥","EUR_displayName":"유로","GBP_symbol":"£","CAD_displayName":"캐나다 달러","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"호주 달러","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/dangi.js b/lib/dojo/cldr/nls/ko/dangi.js
index 1667aeadb..5a555829a 100644
--- a/lib/dojo/cldr/nls/ko/dangi.js
+++ b/lib/dojo/cldr/nls/ko/dangi.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/dangi",{"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-dayperiod":"오전/오후","field-sun-relative+-1":"지난 일요일","field-mon-relative+-1":"지난 월요일","field-minute":"분","field-day-relative+-1":"어제","field-weekday":"요일","field-day-relative+-2":"그저께","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"연호","field-hour":"시","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","months-standAlone-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-wed-relative+-1":"지난 수요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","dateFormat-long":"U년 MMM d일","field-tue-relative+0":"이번 화요일","field-zone":"시간대","field-tue-relative+1":"다음 화요일","field-week-relative+-1":"지난주","dateFormat-medium":"y. M. d.","field-year-relative+0":"올해","field-year-relative+1":"내년","field-sat-relative+-1":"지난 토요일","field-year-relative+-1":"작년","field-year":"년","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","months-standAlone-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-week":"주","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-month-relative+0":"이번 달","field-month":"월","field-month-relative+1":"다음 달","field-fri-relative+-1":"지난 금요일","field-second":"초","field-tue-relative+-1":"지난 화요일","field-day":"일","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-thu-relative+0":"이번 목요일","field-second-relative+0":"지금","dateFormat-short":"y. M. d.","field-thu-relative+1":"다음 목요일","dateFormat-full":"U년 MMM d일 EEEE","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","field-month-relative+-1":"지난달","field-thu-relative+-1":"지난 목요일"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/dangi",{"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"지금","field-quarter-relative+-1":"지난 분기","field-weekday":"요일","field-mon-narrow-relative+0":"이번 월요일","field-mon-narrow-relative+1":"다음 월요일","field-weekOfMonth-short":"월의 주","field-weekday-short":"요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","field-dayperiod-short":"오전/오후","field-week-short":"주","field-year-short":"년","field-era-narrow":"연호","field-tue-relative+-1":"지난 화요일","field-thu-narrow-relative+-1":"지난 목요일","field-hour-relative+0":"현재 시간","dateFormat-long":"U년 MMM d일","field-quarter-narrow":"분기","field-fri-relative+-1":"지난 금요일","field-hour-short":"시","field-wed-relative+-1":"지난 수요일","field-dayOfYear":"년의 일","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormat-full":"U년 MMM d일 EEEE","field-mon-short-relative+-1":"지난 월요일","field-thu-relative+-1":"지난 목요일","field-era":"연호","months-standAlone-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-sat-narrow-relative+0":"이번 토요일","field-sat-narrow-relative+1":"다음 토요일","field-year":"년","field-hour":"시","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-sat-short-relative+-1":"지난 토요일","field-weekOfMonth-narrow":"월의 주","field-minute-narrow":"분","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-thu-relative+0":"이번 목요일","field-day-relative+2":"모레","field-mon-narrow-relative+-1":"지난 월요일","field-wed-narrow-relative+0":"이번 수요일","field-thu-relative+1":"다음 목요일","months-standAlone-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-wed-narrow-relative+1":"다음 수요일","field-mon-short-relative+0":"이번 월요일","field-mon-short-relative+1":"다음 월요일","field-weekdayOfMonth-short":"월의 평일","field-wed-short-relative+-1":"지난 수요일","field-fri-narrow-relative+-1":"지난 금요일","field-hour-narrow":"시","field-year-narrow":"년","field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-minute-short":"분","field-day-narrow":"일","field-wed-short-relative+0":"이번 수요일","field-wed-short-relative+1":"다음 수요일","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","field-minute":"분","field-month-short":"월","field-dayperiod":"오전/오후","field-weekdayOfMonth-narrow":"월의 평일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-minute-relative+0":"현재 분","field-week-narrow":"주","field-wed-narrow-relative+-1":"지난 수요일","field-day-short":"일","field-quarter-relative+0":"이번 분기","field-dayperiod-narrow":"오전/오후","field-quarter-relative+1":"다음 분기","field-zone-short":"시간대","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","field-second-narrow":"초","field-zone":"시간대","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"작년","field-month-relative+-1":"지난달","field-thu-short-relative+0":"이번 목요일","field-thu-short-relative+1":"다음 목요일","field-weekday-narrow":"요일","field-quarter":"분기","field-zone-narrow":"시간대","field-month":"월","field-weekOfMonth":"월의 주","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-fri-narrow-relative+0":"이번 금요일","field-fri-narrow-relative+1":"다음 금요일","field-fri-short-relative+-1":"지난 금요일","field-sun-narrow-relative+-1":"지난 일요일","field-dayOfYear-short":"년의 일","field-sun-narrow-relative+0":"이번 일요일","field-thu-narrow-relative+0":"이번 목요일","field-sun-narrow-relative+1":"다음 일요일","field-thu-narrow-relative+1":"다음 목요일","field-tue-narrow-relative+0":"이번 화요일","field-mon-relative+0":"이번 월요일","field-tue-narrow-relative+1":"다음 화요일","field-mon-relative+1":"다음 월요일","dateFormat-short":"y. M. d.","field-tue-narrow-relative+-1":"지난 화요일","field-second-short":"초","field-second":"초","field-fri-short-relative+0":"이번 금요일","field-sat-relative+-1":"지난 토요일","field-fri-short-relative+1":"다음 금요일","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-weekdayOfMonth":"월의 평일","field-month-relative+1":"다음 달","field-week":"주","field-sat-short-relative+0":"이번 토요일","dateFormat-medium":"y. M. d.","field-sat-short-relative+1":"다음 토요일","field-year-relative+0":"올해","field-week-relative+-1":"지난주","field-year-relative+1":"내년","field-era-short":"연호","field-quarter-short":"분기","field-dayOfYear-narrow":"년의 일","field-sun-short-relative+-1":"지난 일요일","field-thu-short-relative+-1":"지난 목요일","field-tue-short-relative+-1":"지난 화요일","field-mon-relative+-1":"지난 월요일","field-sat-narrow-relative+-1":"지난 토요일","field-month-narrow":"월","field-week-relative+0":"이번 주","field-sun-short-relative+0":"이번 일요일","field-week-relative+1":"다음 주","field-sun-short-relative+1":"다음 일요일"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/ethiopic.js b/lib/dojo/cldr/nls/ko/ethiopic.js
index 4a30c076c..01a75ad34 100644
--- a/lib/dojo/cldr/nls/ko/ethiopic.js
+++ b/lib/dojo/cldr/nls/ko/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/ethiopic",{"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-dayperiod":"오전/오후","field-sun-relative+-1":"지난 일요일","field-mon-relative+-1":"지난 월요일","field-minute":"분","field-day-relative+-1":"어제","field-weekday":"요일","field-day-relative+-2":"그저께","field-era":"연호","field-hour":"시","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","months-standAlone-abbr":["매스캐램","테켐트","헤다르","타흐사스","테르","얘카티트","매가비트","미야지야","겐보트","새네","함레","내하세","파구맨"],"field-wed-relative+-1":"지난 수요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","field-tue-relative+0":"이번 화요일","field-zone":"시간대","field-tue-relative+1":"다음 화요일","field-week-relative+-1":"지난주","field-year-relative+0":"올해","field-year-relative+1":"내년","field-sat-relative+-1":"지난 토요일","field-year-relative+-1":"작년","field-year":"년","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","months-standAlone-wide":["매스캐램","테켐트","헤다르","타흐사스","테르","얘카티트","매가비트","미야지야","겐보트","새네","함레","내하세","파구맨"],"field-week":"주","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주","months-format-abbr":["매스캐램","테켐트","헤다르","타흐사스","테르","얘카티트","매가비트","미야지야","겐보트","새네","함레","내하세","파구맨"],"field-month-relative+0":"이번 달","field-month":"월","field-month-relative+1":"다음 달","field-fri-relative+-1":"지난 금요일","field-second":"초","field-tue-relative+-1":"지난 화요일","field-day":"일","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-thu-relative+0":"이번 목요일","field-second-relative+0":"지금","field-thu-relative+1":"다음 목요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","field-month-relative+-1":"지난달","field-thu-relative+-1":"지난 목요일"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/ethiopic",{"field-second-relative+0":"지금","field-quarter-relative+-1":"지난 분기","field-weekday":"요일","field-mon-narrow-relative+0":"이번 월요일","field-mon-narrow-relative+1":"다음 월요일","field-weekOfMonth-short":"월의 주","field-weekday-short":"요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","field-dayperiod-short":"오전/오후","field-week-short":"주","field-tue-relative+-1":"지난 화요일","field-year-short":"년","field-era-narrow":"연호","field-thu-narrow-relative+-1":"지난 목요일","field-hour-relative+0":"현재 시간","field-quarter-narrow":"분기","field-fri-relative+-1":"지난 금요일","field-hour-short":"시","field-wed-relative+-1":"지난 수요일","field-dayOfYear":"년의 일","months-format-wide":["매스캐램","테켐트","헤다르","타흐사스","테르","얘카티트","매가비트","미야지야","겐보트","새네","함레","내하세","파구맨"],"field-mon-short-relative+-1":"지난 월요일","field-thu-relative+-1":"지난 목요일","field-era":"연호","months-standAlone-wide":["매스캐램","테켐트","헤다르","타흐사스","테르","얘카티트","매가비트","미야지야","겐보트","새네","함레","내하세","파구맨"],"field-sat-narrow-relative+0":"이번 토요일","field-sat-narrow-relative+1":"다음 토요일","field-year":"년","field-hour":"시","months-format-abbr":["매스캐램","테켐트","헤다르","타흐사스","테르","얘카티트","매가비트","미야지야","겐보트","새네","함레","내하세","파구맨"],"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-sat-short-relative+-1":"지난 토요일","field-weekOfMonth-narrow":"월의 주","field-minute-narrow":"분","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-thu-relative+0":"이번 목요일","field-mon-narrow-relative+-1":"지난 월요일","field-day-relative+2":"모레","field-wed-narrow-relative+0":"이번 수요일","field-thu-relative+1":"다음 목요일","months-standAlone-abbr":["매스캐램","테켐트","헤다르","타흐사스","테르","얘카티트","매가비트","미야지야","겐보트","새네","함레","내하세","파구맨"],"field-wed-narrow-relative+1":"다음 수요일","field-mon-short-relative+0":"이번 월요일","field-mon-short-relative+1":"다음 월요일","field-weekdayOfMonth-short":"월의 평일","field-wed-short-relative+-1":"지난 수요일","field-fri-narrow-relative+-1":"지난 금요일","field-hour-narrow":"시","field-year-narrow":"년","field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-minute-short":"분","field-day-narrow":"일","field-wed-short-relative+0":"이번 수요일","field-wed-short-relative+1":"다음 수요일","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","field-minute":"분","field-month-short":"월","field-dayperiod":"오전/오후","field-weekdayOfMonth-narrow":"월의 평일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-minute-relative+0":"현재 분","field-week-narrow":"주","field-wed-narrow-relative+-1":"지난 수요일","field-day-short":"일","field-quarter-relative+0":"이번 분기","field-dayperiod-narrow":"오전/오후","field-quarter-relative+1":"다음 분기","field-zone-short":"시간대","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","field-second-narrow":"초","field-zone":"시간대","field-year-relative+-1":"작년","field-month-relative+-1":"지난달","field-thu-short-relative+0":"이번 목요일","field-thu-short-relative+1":"다음 목요일","field-weekday-narrow":"요일","field-quarter":"분기","field-zone-narrow":"시간대","field-month":"월","field-weekOfMonth":"월의 주","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-fri-narrow-relative+0":"이번 금요일","field-fri-narrow-relative+1":"다음 금요일","field-fri-short-relative+-1":"지난 금요일","field-sun-narrow-relative+-1":"지난 일요일","field-dayOfYear-short":"년의 일","field-sun-narrow-relative+0":"이번 일요일","field-thu-narrow-relative+0":"이번 목요일","field-sun-narrow-relative+1":"다음 일요일","field-thu-narrow-relative+1":"다음 목요일","field-tue-narrow-relative+0":"이번 화요일","field-mon-relative+0":"이번 월요일","field-tue-narrow-relative+1":"다음 화요일","field-mon-relative+1":"다음 월요일","field-tue-narrow-relative+-1":"지난 화요일","field-second-short":"초","field-second":"초","field-fri-short-relative+0":"이번 금요일","field-sat-relative+-1":"지난 토요일","field-fri-short-relative+1":"다음 금요일","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-weekdayOfMonth":"월의 평일","field-month-relative+1":"다음 달","field-week":"주","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","field-year-relative+0":"올해","field-week-relative+-1":"지난주","field-year-relative+1":"내년","field-era-short":"연호","field-quarter-short":"분기","field-dayOfYear-narrow":"년의 일","field-sun-short-relative+-1":"지난 일요일","field-thu-short-relative+-1":"지난 목요일","field-tue-short-relative+-1":"지난 화요일","field-mon-relative+-1":"지난 월요일","field-sat-narrow-relative+-1":"지난 토요일","field-month-narrow":"월","field-week-relative+0":"이번 주","field-sun-short-relative+0":"이번 일요일","field-week-relative+1":"다음 주","field-sun-short-relative+1":"다음 일요일"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/generic.js b/lib/dojo/cldr/nls/ko/generic.js
index 29f78c6e7..8be00bab4 100644
--- a/lib/dojo/cldr/nls/ko/generic.js
+++ b/lib/dojo/cldr/nls/ko/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/generic",{"field-second-relative+0":"지금","field-weekday":"요일","field-wed-relative+0":"이번 수요일","dateFormatItem-GyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-MMMEd":"MMM d일 (E)","field-wed-relative+1":"다음 수요일","field-tue-relative+-1":"지난 화요일","dateFormat-long":"G y년 M월 d일","field-fri-relative+-1":"지난 금요일","field-wed-relative+-1":"지난 수요일","dateFormatItem-yyyyQQQ":"G y년 QQQ","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"G y년 M월 d일 EEEE","dateFormatItem-yyyyMEd":"G y. M. d. (E)","field-thu-relative+-1":"지난 목요일","dateFormatItem-Md":"M. d.","field-era":"연호","dateFormatItem-MEEEEd":"M. d. EEEE","field-year":"년","field-hour":"시","field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-thu-relative+0":"이번 목요일","dateFormatItem-GyMMMd":"G y년 MMM d일","field-day-relative+2":"모레","field-thu-relative+1":"다음 목요일","dateFormatItem-H":"H시","dateFormatItem-Gy":"G y년","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-yyyyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-M":"M월","dateFormatItem-yyyyMMM":"G y년 MMM","dateFormatItem-yyyyMMMd":"G y년 MMM d일","field-sun-relative+0":"이번 일요일","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"다음 일요일","field-minute":"분","field-dayperiod":"오전/오후","dateFormatItem-d":"d일","dateFormatItem-yyyyMEEEEd":"G y. M. d. EEEE","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"어제","dateFormatItem-h":"a h시","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"그저께","dateFormatItem-MMMd":"MMM d일","dateFormatItem-EEEEd":"d일 EEEE","dateFormatItem-MEd":"M. d. (E)","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","field-zone":"시간대","dateFormatItem-y":"G y년","field-year-relative+-1":"작년","field-month-relative+-1":"지난달","dateFormatItem-hm":"a h:mm","dateFormatItem-GyMMMEEEEd":"G y년 MMM d일 EEEE","dateFormatItem-yyyyMMMEEEEd":"G y년 MMM d일 EEEE","dateFormatItem-MMMEEEEd":"MMM d일 EEEE","dateFormatItem-yyyyMd":"G y. M. d.","field-month":"월","dateFormatItem-MMM":"LLL","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","dateFormat-short":"G y. M. d.","field-second":"초","field-sat-relative+-1":"지난 토요일","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-month-relative+1":"다음 달","dateFormatItem-Ed":"d일 (E)","field-week":"주","dateFormat-medium":"G y. M. d.","field-year-relative+0":"올해","field-week-relative+-1":"지난주","dateFormatItem-yyyyM":"G y. M.","field-year-relative+1":"내년","dateFormatItem-yyyyQQQQ":"G y년 QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H시 m분 s초","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G y년 MMM","field-mon-relative+-1":"지난 월요일","dateFormatItem-yyyy":"G y년","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/generic",{"field-tue-relative+-1":"지난 화요일","field-year":"년","dateFormatItem-MEEEEd":"M. d. EEEE","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","dateFormatItem-ms":"mm:ss","field-minute":"분","field-tue-narrow-relative+0":"이번 화요일","field-tue-narrow-relative+1":"다음 화요일","field-thu-short-relative+0":"이번 목요일","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"오늘","field-thu-short-relative+1":"다음 목요일","field-day-relative+1":"내일","field-day-relative+2":"모레","field-wed-narrow-relative+-1":"지난 수요일","dateFormatItem-EBhms":"E B h:mm:ss","field-year-narrow":"년","field-era-short":"연호","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-weekdayOfMonth":"월의 평일","field-second-short":"초","dateFormatItem-MMMd":"M월 d일","field-weekdayOfMonth-narrow":"월의 평일","field-week-relative+0":"이번 주","field-month-relative+0":"이번 달","field-week-relative+1":"다음 주","field-month-relative+1":"다음 달","field-sun-narrow-relative+0":"이번 일요일","field-mon-short-relative+0":"이번 월요일","field-sun-narrow-relative+1":"다음 일요일","field-mon-short-relative+1":"다음 월요일","field-second-relative+0":"지금","dateFormatItem-yyyyQQQ":"G y년 QQQ","field-weekOfMonth":"월의 주","field-month-short":"월","dateFormatItem-GyMMMEd":"G y년 M월 d일 (E)","dateFormatItem-yyyyMd":"G y. M. d.","field-day":"일","field-dayOfYear-short":"년의 일","field-year-relative+-1":"작년","field-sat-short-relative+-1":"지난 토요일","field-hour-relative+0":"현재 시간","dateFormatItem-yyyyMEd":"G y. M. d. (E)","field-wed-relative+-1":"지난 수요일","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"지난 토요일","field-second":"초","dateFormatItem-Ehms":"E a h:mm:ss","dateFormat-long":"G y년 M월 d일","dateFormatItem-GyMMMd":"G y년 M월 d일","field-quarter":"분기","field-week-short":"주","dateFormatItem-MMMEEEEd":"M월 d일 EEEE","field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-mon-relative+-1":"지난 월요일","dateFormatItem-GyMMM":"G y년 M월","field-month":"월","field-day-narrow":"일","dateFormatItem-MMM":"LLL","field-minute-short":"분","field-dayperiod":"오전/오후","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","dateFormat-medium":"G y. M. d.","dateFormatItem-yyyyMMMM":"G y년 M월","dateFormatItem-EEEEd":"d일 EEEE","dateFormatItem-yyyyM":"G y. M.","field-second-narrow":"초","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-year-short":"년","field-quarter-relative+-1":"지난 분기","dateFormatItem-yyyyMMMd":"G y년 M월 d일","field-dayperiod-narrow":"오전/오후","field-dayOfYear":"년의 일","field-sat-relative+-1":"지난 토요일","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M. d.","field-hour":"시","dateFormat-full":"G y년 M월 d일 EEEE","field-month-relative+-1":"지난달","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"분기","field-sat-narrow-relative+0":"이번 토요일","field-fri-relative+0":"이번 금요일","field-sat-narrow-relative+1":"다음 토요일","field-fri-relative+1":"다음 금요일","dateFormatItem-EBhm":"E B h:mm","field-sun-short-relative+0":"이번 일요일","field-sun-short-relative+1":"다음 일요일","field-week-relative+-1":"지난주","dateFormatItem-Ehm":"E a h:mm","field-quarter-relative+0":"이번 분기","field-minute-relative+0":"현재 분","field-quarter-relative+1":"다음 분기","field-wed-short-relative+-1":"지난 수요일","dateFormat-short":"G y. M. d.","dateFormatItem-Bh":"B h시","field-thu-short-relative+-1":"지난 목요일","dateFormatItem-yyyyMMMEd":"G y년 M월 d일 (E)","field-mon-narrow-relative+-1":"지난 월요일","dateFormatItem-MMMMd":"M월 d일","field-thu-narrow-relative+-1":"지난 목요일","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"지난 화요일","dateFormatItem-H":"H시","field-weekOfMonth-short":"월의 주","dateFormatItem-yyyy":"G y년","field-wed-short-relative+0":"이번 수요일","dateFormatItem-M":"M월","field-wed-short-relative+1":"다음 수요일","field-sun-relative+-1":"지난 일요일","dateTimeFormat-full":"{1} {0}","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-hm":"a h:mm","dateFormatItem-d":"d일","field-weekday":"요일","field-sat-relative+0":"이번 토요일","dateFormatItem-h":"a h시","dateFormatItem-yyyyMEEEEd":"G y. M. d. EEEE","field-sat-relative+1":"다음 토요일","field-dayOfYear-narrow":"년의 일","field-weekdayOfMonth-short":"월의 평일","dateFormatItem-MEd":"M. d. (E)","field-zone-narrow":"시간대","dateFormatItem-y":"G y년","field-thu-narrow-relative+0":"이번 목요일","field-sun-narrow-relative+-1":"지난 일요일","field-mon-short-relative+-1":"지난 월요일","field-thu-narrow-relative+1":"다음 목요일","field-thu-relative+0":"이번 목요일","field-thu-relative+1":"다음 목요일","dateFormatItem-hms":"a h:mm:ss","field-fri-short-relative+-1":"지난 금요일","field-thu-relative+-1":"지난 목요일","field-week":"주","dateFormatItem-Ed":"d일 (E)","field-wed-narrow-relative+0":"이번 수요일","field-wed-narrow-relative+1":"다음 수요일","dateFormatItem-yyyyMMMEEEEd":"G y년 M월 d일 EEEE","dateFormatItem-yyyyMMM":"G y년 M월","field-dayperiod-short":"오전/오후","field-fri-short-relative+0":"이번 금요일","field-fri-short-relative+1":"다음 금요일","dateFormatItem-yyyyQQQQ":"G y년 QQQQ","field-hour-short":"시","field-zone-short":"시간대","field-month-narrow":"월","field-hour-narrow":"시","field-fri-narrow-relative+-1":"지난 금요일","field-year-relative+0":"올해","field-year-relative+1":"내년","field-era-narrow":"연호","field-fri-relative+-1":"지난 금요일","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"지난 화요일","field-minute-narrow":"분","field-mon-narrow-relative+0":"이번 월요일","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"다음 월요일","dateFormatItem-GyMMMEEEEd":"G y년 M월 d일 EEEE","field-zone":"시간대","dateFormatItem-MMMEd":"M월 d일 (E)","field-weekOfMonth-narrow":"월의 주","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"요일","field-quarter-narrow":"분기","field-sun-short-relative+-1":"지난 일요일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-weekday-short":"요일","dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","dateFormatItem-Gy":"G y년","field-day-short":"일","field-week-narrow":"주","field-era":"연호","field-fri-narrow-relative+0":"이번 금요일","field-fri-narrow-relative+1":"다음 금요일"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/gregorian.js b/lib/dojo/cldr/nls/ko/gregorian.js
index 1460e23fc..946ea6fe6 100644
--- a/lib/dojo/cldr/nls/ko/gregorian.js
+++ b/lib/dojo/cldr/nls/ko/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/gregorian",{"dateFormatItem-Ehm":"(E) a h:mm","days-standAlone-short":["일","월","화","수","목","금","토"],"months-format-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-second-relative+0":"지금","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"요일","dateFormatItem-yQQQ":"y년 QQQ","dateFormatItem-yMEd":"y. M. d. (E)","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","dateFormatItem-GyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-MMMEd":"MMM d일 (E)","eraNarrow":["기원전","서기"],"dateFormatItem-yMM":"y. M.","field-tue-relative+-1":"지난 화요일","days-format-short":["일","월","화","수","목","금","토"],"dateFormat-long":"y년 M월 d일","field-fri-relative+-1":"지난 금요일","field-wed-relative+-1":"지난 수요일","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"오후","dateFormat-full":"y년 M월 d일 EEEE","field-thu-relative+-1":"지난 목요일","dateFormatItem-Md":"M. d.","dateFormatItem-yMd":"y. M. d.","field-era":"연호","dateFormatItem-yM":"y. M.","months-standAlone-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"timeFormat-short":"a h:mm","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-MEEEEd":"M. d. EEEE","dateFormatItem-yQQQQ":"y년 QQQQ","timeFormat-long":"a h시 m분 s초 z","field-year":"년","dateFormatItem-yMMM":"y년 MMM","field-hour":"시","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","dateFormatItem-yMEEEEd":"y. M. d. EEEE","timeFormat-full":"a h시 m분 s초 zzzz","field-day-relative+0":"오늘","field-thu-relative+0":"이번 목요일","field-day-relative+1":"내일","field-thu-relative+1":"다음 목요일","dateFormatItem-GyMMMd":"G y년 MMM d일","field-day-relative+2":"모레","dateFormatItem-H":"H시","months-standAlone-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"quarters-format-abbr":["1분기","2분기","3분기","4분기"],"quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-Gy":"G y년","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"M월","days-standAlone-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"dateFormatItem-yMMMEEEEd":"y년 MMM d일 EEEE","timeFormat-medium":"a h:mm:ss","field-sun-relative+0":"이번 일요일","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"다음 일요일","quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"eraAbbr":["기원전","서기"],"field-minute":"분","field-dayperiod":"오전/오후","days-standAlone-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-d":"d일","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"어제","dateFormatItem-h":"a h시","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"그저께","dateFormatItem-MMMd":"MMM d일","dateFormatItem-EEEEd":"d일 EEEE","dateFormatItem-MEd":"M. d. (E)","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-zone":"시간대","dateFormatItem-y":"y년","months-standAlone-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-year-relative+-1":"작년","field-month-relative+-1":"지난달","dateFormatItem-hm":"a h:mm","dateFormatItem-GyMMMEEEEd":"G y년 MMM d일 EEEE","days-format-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-yMMMd":"y년 MMM d일","eraNames":["기원전","서기"],"days-format-narrow":["일","월","화","수","목","금","토"],"dateFormatItem-MMMEEEEd":"MMM d일 EEEE","days-standAlone-narrow":["일","월","화","수","목","금","토"],"dateFormatItem-MMM":"LLL","field-month":"월","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","dayPeriods-format-wide-am":"오전","dateFormatItem-EHm":"(E) HH:mm","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","dateFormat-short":"yy. M. d.","dateFormatItem-EHms":"(E) HH:mm:ss","dateFormatItem-Ehms":"(E) a h:mm:ss","field-second":"초","field-sat-relative+-1":"지난 토요일","dateFormatItem-yMMMEd":"y년 MMM d일 (E)","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-month-relative+1":"다음 달","dateFormatItem-Ed":"d일 (E)","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"주","dateFormat-medium":"y. M. d.","field-year-relative+0":"올해","field-week-relative+-1":"지난주","field-year-relative+1":"내년","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H시 m분 s초","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G y년 MMM","field-mon-relative+-1":"지난 월요일","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/gregorian",{"dayPeriods-standAlone-abbr-noon":"정오","field-tue-relative+-1":"지난 화요일","field-year":"년","dateFormatItem-MEEEEd":"M. d. EEEE","dateFormatItem-yw":"Y년 w번째 주","dayPeriods-format-abbr-afternoon1":"오후","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","dateFormatItem-ms":"mm:ss","timeFormat-short":"a h:mm","field-minute":"분","field-tue-narrow-relative+0":"이번 화요일","field-tue-narrow-relative+1":"다음 화요일","field-thu-short-relative+0":"이번 목요일","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"다음 목요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","field-wed-narrow-relative+-1":"지난 수요일","dateFormatItem-EBhms":"(E) B h:mm:ss","field-year-narrow":"년","field-era-short":"연호","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-weekdayOfMonth":"월의 평일","field-second-short":"초","dayPeriods-format-narrow-am":"AM","dayPeriods-standAlone-abbr-morning1":"새벽","dayPeriods-standAlone-abbr-morning2":"오전","dateFormatItem-MMMd":"MMM d일","dayPeriods-format-narrow-morning1":"새벽","field-weekdayOfMonth-narrow":"월의 평일","dayPeriods-format-narrow-morning2":"오전","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"이번 주","field-month-relative+0":"이번 달","field-week-relative+1":"다음 주","field-month-relative+1":"다음 달","field-sun-narrow-relative+0":"이번 일요일","timeFormat-medium":"a h:mm:ss","field-mon-short-relative+0":"이번 월요일","field-sun-narrow-relative+1":"다음 일요일","field-mon-short-relative+1":"다음 월요일","field-second-relative+0":"지금","months-standAlone-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dayPeriods-standAlone-wide-noon":"정오","eraNames":["기원전","서기"],"field-weekOfMonth":"월의 주","dayPeriods-standAlone-abbr-pm":"PM","field-month-short":"월","dateFormatItem-GyMMMEd":"G y년 MMM d일 (E)","field-day":"일","dayPeriods-standAlone-wide-night1":"밤","field-dayOfYear-short":"년의 일","field-year-relative+-1":"작년","dayPeriods-format-wide-am":"오전","field-sat-short-relative+-1":"지난 토요일","dayPeriods-format-narrow-afternoon1":"오후","dayPeriods-format-wide-afternoon1":"오후","field-hour-relative+0":"현재 시간","field-wed-relative+-1":"지난 수요일","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"지난 토요일","field-second":"초","days-standAlone-narrow":["일","월","화","수","목","금","토"],"dayPeriods-standAlone-narrow-noon":"정오","dayPeriods-standAlone-wide-pm":"오후","dateFormatItem-Ehms":"(E) a h:mm:ss","dateFormat-long":"y년 M월 d일","dateFormatItem-GyMMMd":"G y년 MMM d일","dayPeriods-standAlone-abbr-midnight":"자정","field-quarter":"분기","field-week-short":"주","dayPeriods-format-narrow-midnight":"자정","dateFormatItem-yMMMEd":"y년 MMM d일 (E)","dateFormatItem-MMMEEEEd":"MMM d일 EEEE","quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"days-format-narrow":["일","월","화","수","목","금","토"],"dayPeriods-format-wide-evening1":"저녁","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-mon-relative+-1":"지난 월요일","dateFormatItem-GyMMM":"G y년 MMM","field-month":"월","field-day-narrow":"일","dayPeriods-standAlone-abbr-night1":"밤","dayPeriods-standAlone-narrow-afternoon1":"오후","dateFormatItem-MMM":"LLL","field-minute-short":"분","field-dayperiod":"오전/오후","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","dayPeriods-format-narrow-pm":"PM","dateFormat-medium":"y. M. d.","dateFormatItem-EEEEd":"d일 EEEE","eraAbbr":["BC","AD"],"quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"dayPeriods-format-abbr-pm":"PM","field-second-narrow":"초","field-mon-relative+0":"이번 월요일","dayPeriods-standAlone-narrow-night1":"밤","field-mon-relative+1":"다음 월요일","field-year-short":"년","months-format-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dayPeriods-format-wide-morning1":"새벽","dayPeriods-format-wide-morning2":"오전","field-quarter-relative+-1":"지난 분기","field-dayperiod-narrow":"오전/오후","dayPeriods-standAlone-narrow-am":"AM","days-format-short":["일","월","화","수","목","금","토"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"오후","field-dayOfYear":"년의 일","field-sat-relative+-1":"지난 토요일","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M. d.","field-hour":"시","dateFormatItem-yQQQQ":"y년 QQQQ","months-format-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dayPeriods-format-wide-night1":"밤","dateFormat-full":"y년 M월 d일 EEEE","field-month-relative+-1":"지난달","dateFormatItem-Hms":"H시 m분 s초","field-quarter-short":"분기","field-sat-narrow-relative+0":"이번 토요일","dateFormatItem-Hmv":"HH:mm v","field-fri-relative+0":"이번 금요일","field-sat-narrow-relative+1":"다음 토요일","field-fri-relative+1":"다음 금요일","dateFormatItem-EBhm":"(E) B h:mm","dayPeriods-format-narrow-noon":"정오","field-sun-short-relative+0":"이번 일요일","field-sun-short-relative+1":"다음 일요일","field-week-relative+-1":"지난주","dateFormatItem-Ehm":"(E) a h:mm","months-format-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dayPeriods-format-wide-midnight":"자정","field-quarter-relative+0":"이번 분기","field-minute-relative+0":"현재 분","timeFormat-long":"a h시 m분 s초 z","field-quarter-relative+1":"다음 분기","field-wed-short-relative+-1":"지난 수요일","dateFormatItem-yMMM":"y년 MMM","dateFormat-short":"yy. M. d.","dateFormatItem-Bh":"B h시","dayPeriods-format-abbr-night1":"밤","dateFormatItem-MMMMW":"MMMM W번째 주","field-thu-short-relative+-1":"지난 목요일","days-standAlone-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-mon-narrow-relative+-1":"지난 월요일","dateFormatItem-yMMMEEEEd":"y년 MMM d일 EEEE","dateFormatItem-MMMMd":"MMMM d일","field-thu-narrow-relative+-1":"지난 목요일","dateFormatItem-E":"ccc","dateFormatItem-mmss":"mm:ss","dateFormatItem-H":"H시","field-weekOfMonth-short":"월의 주","field-tue-narrow-relative+-1":"지난 화요일","dayPeriods-format-abbr-evening1":"저녁","dayPeriods-standAlone-narrow-pm":"PM","dateFormatItem-M":"M월","months-standAlone-wide":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-wed-short-relative+0":"이번 수요일","field-wed-short-relative+1":"다음 수요일","dateFormatItem-Hmsv":"H시 m분 s초 v","field-sun-relative+-1":"지난 일요일","days-standAlone-abbr":["일","월","화","수","목","금","토"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-hm":"a h:mm","dateFormatItem-d":"d일","field-weekday":"요일","dayPeriods-standAlone-wide-evening1":"저녁","field-sat-relative+0":"이번 토요일","dateFormatItem-h":"a h시","field-sat-relative+1":"다음 토요일","months-standAlone-abbr":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"dateFormatItem-hmsv":"a h:mm:ss v","dayPeriods-format-abbr-morning1":"새벽","dayPeriods-standAlone-narrow-evening1":"저녁","dateFormatItem-yMM":"y. M.","dayPeriods-format-abbr-morning2":"오전","field-dayOfYear-narrow":"년의 일","timeFormat-full":"a h시 m분 s초 zzzz","field-weekdayOfMonth-short":"월의 평일","dateFormatItem-MEd":"M. d. (E)","field-zone-narrow":"시간대","dateFormatItem-y":"y년","field-thu-narrow-relative+0":"이번 목요일","field-sun-narrow-relative+-1":"지난 일요일","field-mon-short-relative+-1":"지난 월요일","field-thu-narrow-relative+1":"다음 목요일","field-thu-relative+0":"이번 목요일","dayPeriods-standAlone-abbr-afternoon1":"오후","field-thu-relative+1":"다음 목요일","dateFormatItem-hms":"a h:mm:ss","field-fri-short-relative+-1":"지난 금요일","dateFormatItem-hmv":"a h:mm v","dayPeriods-format-abbr-noon":"정오","field-thu-relative+-1":"지난 목요일","dateFormatItem-yMd":"y. M. d.","quarters-standAlone-narrow":["1","2","3","4"],"field-week":"주","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-Ed":"d일 (E)","field-wed-narrow-relative+0":"이번 수요일","field-wed-narrow-relative+1":"다음 수요일","dayPeriods-standAlone-wide-morning1":"새벽","dayPeriods-standAlone-wide-morning2":"오전","field-dayperiod-short":"오전/오후","field-fri-short-relative+0":"이번 금요일","field-fri-short-relative+1":"다음 금요일","days-standAlone-short":["일","월","화","수","목","금","토"],"dayPeriods-standAlone-narrow-morning1":"새벽","dayPeriods-standAlone-narrow-morning2":"오전","dayPeriods-format-abbr-midnight":"자정","field-hour-short":"시","field-zone-short":"시간대","quarters-format-abbr":["1분기","2분기","3분기","4분기"],"field-month-narrow":"월","field-hour-narrow":"시","field-fri-narrow-relative+-1":"지난 금요일","field-year-relative+0":"올해","field-era-narrow":"연호","field-year-relative+1":"내년","field-fri-relative+-1":"지난 금요일","eraNarrow":["BC","AD"],"dateFormatItem-Bhms":"B h:mm:ss","dayPeriods-format-wide-noon":"정오","field-tue-short-relative+-1":"지난 화요일","field-minute-narrow":"분","dayPeriods-standAlone-wide-afternoon1":"오후","dateFormatItem-yQQQ":"y년 QQQ","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-mon-narrow-relative+0":"이번 월요일","dateFormatItem-EHm":"(E) HH:mm","field-mon-narrow-relative+1":"다음 월요일","dayPeriods-standAlone-wide-midnight":"자정","dateFormatItem-GyMMMEEEEd":"G y년 MMM d일 EEEE","dateFormatItem-yM":"y. M.","field-zone":"시간대","dateFormatItem-yMMMM":"y년 MMMM","dateFormatItem-MMMEd":"MMM d일 (E)","field-weekOfMonth-narrow":"월의 주","dateFormatItem-EHms":"(E) HH:mm:ss","dateFormatItem-yMEd":"y. M. d. (E)","field-weekday-narrow":"요일","dayPeriods-standAlone-narrow-midnight":"자정","field-quarter-narrow":"분기","dayPeriods-standAlone-abbr-am":"AM","field-day-relative+-1":"어제","field-sun-short-relative+-1":"지난 일요일","field-day-relative+-2":"그저께","dayPeriods-format-narrow-night1":"밤","field-weekday-short":"요일","dateFormatItem-Bhm":"B h:mm","days-format-abbr":["일","월","화","수","목","금","토"],"field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","dateFormatItem-yMMMd":"y년 MMM d일","dateFormatItem-Gy":"G y년","field-era":"연호","field-week-narrow":"주","field-day-short":"일","dayPeriods-standAlone-abbr-evening1":"저녁","field-fri-narrow-relative+0":"이번 금요일","dayPeriods-format-narrow-evening1":"저녁","field-fri-narrow-relative+1":"다음 금요일","dayPeriods-standAlone-wide-am":"오전","dateFormatItem-yMEEEEd":"y. M. d. EEEE"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/hebrew.js b/lib/dojo/cldr/nls/ko/hebrew.js
index d7da5306f..6095da331 100644
--- a/lib/dojo/cldr/nls/ko/hebrew.js
+++ b/lib/dojo/cldr/nls/ko/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/hebrew",{"days-standAlone-short":["일","월","화","수","목","금","토"],"field-second-relative+0":"지금","field-weekday":"요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","dateFormatItem-GyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-MMMEd":"MMM d일 (E)","field-tue-relative+-1":"지난 화요일","days-format-short":["일","월","화","수","목","금","토"],"dateFormat-long":"G y년 M월 d일","field-fri-relative+-1":"지난 금요일","field-wed-relative+-1":"지난 수요일","dateFormatItem-yyyyQQQ":"G y년 QQQ","dayPeriods-format-wide-pm":"오후","dateFormat-full":"G y년 M월 d일 EEEE","dateFormatItem-yyyyMEd":"G y. M. d. (E)","field-thu-relative+-1":"지난 목요일","dateFormatItem-Md":"M. d.","field-era":"연호","months-standAlone-wide":["디스리월","말케스월","기슬르월","데벳월","스밧월","아달월 1","아달월","닛산월","이야르월","시완월","담무르월","압월","엘룰월"],"timeFormat-short":"a h:mm","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"timeFormat-long":"a h시 m분 s초 z","field-year":"년","field-hour":"시","months-format-abbr-leap":"아달월 2","months-format-abbr":["디스리월","말케스월","기슬르월","데벳월","스밧월","아달월 1","아달월","닛산월","이야르월","시완월","담무르월","압월","엘룰월"],"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","timeFormat-full":"a h시 m분 s초 zzzz","field-day-relative+0":"오늘","field-thu-relative+0":"이번 목요일","field-day-relative+1":"내일","field-thu-relative+1":"다음 목요일","dateFormatItem-GyMMMd":"G y년 MMM d일","field-day-relative+2":"모레","dateFormatItem-H":"H시","months-standAlone-abbr":["디스리월","말케스월","기슬르월","데벳월","스밧월","아달월 1","아달월","닛산월","이야르월","시완월","담무르월","압월","엘룰월"],"quarters-format-abbr":["1분기","2분기","3분기","4분기"],"quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-Gy":"G y년","dateFormatItem-yyyyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-M":"M월","dateFormatItem-yyyyMMM":"G y년 MMM","dateFormatItem-yyyyMMMd":"G y년 MMM d일","months-standAlone-wide-leap":"아달월 2","timeFormat-medium":"a h:mm:ss","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"eraAbbr":["AM"],"field-minute":"분","field-dayperiod":"오전/오후","dateFormatItem-d":"d일","field-day-relative+-1":"어제","dateFormatItem-h":"a h시","field-day-relative+-2":"그저께","dateFormatItem-MMMd":"MMM d일","dateFormatItem-MEd":"M. d. (E)","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-zone":"시간대","months-standAlone-abbr-leap":"아달월 2","dateFormatItem-y":"G y년","field-year-relative+-1":"작년","field-month-relative+-1":"지난달","dateFormatItem-hm":"a h:mm","days-format-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-yyyyMd":"G y. M. d.","field-month":"월","days-standAlone-narrow":["일","월","화","수","목","금","토"],"field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","dayPeriods-format-wide-am":"오전","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","dateFormat-short":"G y. M. d.","field-second":"초","field-sat-relative+-1":"지난 토요일","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-month-relative+1":"다음 달","dateFormatItem-Ed":"d일 (E)","field-week":"주","dateFormat-medium":"G y. M. d.","field-year-relative+0":"올해","field-week-relative+-1":"지난주","dateFormatItem-yyyyM":"G y. M.","field-year-relative+1":"내년","dateFormatItem-yyyyQQQQ":"G y년 QQQQ","dateFormatItem-Hms":"H시 m분 s초","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G y년 MMM","field-mon-relative+-1":"지난 월요일","dateFormatItem-yyyy":"G y년","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/hebrew",{"field-tue-relative+-1":"지난 화요일","field-year":"년","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","timeFormat-short":"a h:mm","field-minute":"분","field-tue-narrow-relative+0":"이번 화요일","field-tue-narrow-relative+1":"다음 화요일","field-thu-short-relative+0":"이번 목요일","field-thu-short-relative+1":"다음 목요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","field-wed-narrow-relative+-1":"지난 수요일","dateFormatItem-EBhms":"E B h:mm:ss","field-year-narrow":"년","field-era-short":"연호","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-weekdayOfMonth":"월의 평일","field-second-short":"초","dateFormatItem-MMMd":"M월 d일","field-weekdayOfMonth-narrow":"월의 평일","field-week-relative+0":"이번 주","field-month-relative+0":"이번 달","field-week-relative+1":"다음 주","field-month-relative+1":"다음 달","field-sun-narrow-relative+0":"이번 일요일","timeFormat-medium":"a h:mm:ss","field-mon-short-relative+0":"이번 월요일","field-sun-narrow-relative+1":"다음 일요일","field-mon-short-relative+1":"다음 월요일","field-second-relative+0":"지금","dateFormatItem-yyyyQQQ":"G y년 QQQ","eraNames":["유대력"],"field-weekOfMonth":"월의 주","field-month-short":"월","dateFormatItem-GyMMMEd":"G y년 M월 d일 (E)","dateFormatItem-yyyyMd":"G y. M. d.","field-day":"일","field-dayOfYear-short":"년의 일","field-year-relative+-1":"작년","dayPeriods-format-wide-am":"오전","field-sat-short-relative+-1":"지난 토요일","field-hour-relative+0":"현재 시간","dateFormatItem-yyyyMEd":"G y. M. d. (E)","field-wed-relative+-1":"지난 수요일","field-sat-narrow-relative+-1":"지난 토요일","field-second":"초","days-standAlone-narrow":["일","월","화","수","목","금","토"],"dayPeriods-standAlone-wide-pm":"오후","dateFormatItem-Ehms":"E a h:mm:ss","dateFormat-long":"G y년 M월 d일","dateFormatItem-GyMMMd":"G y년 M월 d일","field-quarter":"분기","field-week-short":"주","quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"days-format-narrow":["일","월","화","수","목","금","토"],"field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-mon-relative+-1":"지난 월요일","dateFormatItem-GyMMM":"G y년 M월","field-month":"월","field-day-narrow":"일","field-minute-short":"분","field-dayperiod":"오전/오후","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","dateFormat-medium":"G y. M. d.","dateFormatItem-yyyyMMMM":"G y년 M월","eraAbbr":["AM"],"quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"dateFormatItem-yyyyM":"G y. M.","field-second-narrow":"초","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-year-short":"년","field-quarter-relative+-1":"지난 분기","dateFormatItem-yyyyMMMd":"G y년 M월 d일","field-dayperiod-narrow":"오전/오후","days-format-short":["일","월","화","수","목","금","토"],"dayPeriods-format-wide-pm":"오후","field-dayOfYear":"년의 일","field-sat-relative+-1":"지난 토요일","dateFormatItem-Md":"M. d.","field-hour":"시","months-format-wide":["디스리","말케스","기슬르","데벳","스밧","아달 1","아달","닛산","이야르","시완","담무르","압","엘룰"],"dateFormat-full":"G y년 M월 d일 EEEE","field-month-relative+-1":"지난달","field-quarter-short":"분기","field-sat-narrow-relative+0":"이번 토요일","field-fri-relative+0":"이번 금요일","field-sat-narrow-relative+1":"다음 토요일","field-fri-relative+1":"다음 금요일","dateFormatItem-EBhm":"E B h:mm","field-sun-short-relative+0":"이번 일요일","field-sun-short-relative+1":"다음 일요일","field-week-relative+-1":"지난주","dateFormatItem-Ehm":"E a h:mm","months-format-abbr":["디스리","말케스","기슬르","데벳","스밧","아달 1","아달","닛산","이야르","시완","담무르","압","엘룰"],"field-quarter-relative+0":"이번 분기","field-minute-relative+0":"현재 분","timeFormat-long":"a h시 m분 s초 z","field-quarter-relative+1":"다음 분기","field-wed-short-relative+-1":"지난 수요일","dateFormat-short":"G y. M. d.","dateFormatItem-Bh":"B h시","field-thu-short-relative+-1":"지난 목요일","days-standAlone-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"dateFormatItem-yyyyMMMEd":"G y년 M월 d일 (E)","field-mon-narrow-relative+-1":"지난 월요일","dateFormatItem-MMMMd":"M월 d일","field-thu-narrow-relative+-1":"지난 목요일","field-tue-narrow-relative+-1":"지난 화요일","dateFormatItem-H":"H시","field-weekOfMonth-short":"월의 주","dateFormatItem-yyyy":"G y년","field-wed-short-relative+0":"이번 수요일","dateFormatItem-M":"M월","months-standAlone-wide":["디스리월","말케스월","기슬르월","데벳월","스밧월","아달월 1","아달월","닛산월","이야르월","시완월","담무르월","압월","엘룰월"],"field-wed-short-relative+1":"다음 수요일","field-sun-relative+-1":"지난 일요일","days-standAlone-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-hm":"a h:mm","months-format-abbr-leap":"아달 2","dateFormatItem-d":"d일","field-weekday":"요일","field-sat-relative+0":"이번 토요일","dateFormatItem-h":"a h시","field-sat-relative+1":"다음 토요일","months-standAlone-abbr":["디스리월","말케스월","기슬르월","데벳월","스밧월","아달월 1","아달월","닛산월","이야르월","시완월","담무르월","압월","엘룰월"],"months-format-wide-leap":"아달 2","field-dayOfYear-narrow":"년의 일","field-weekdayOfMonth-short":"월의 평일","timeFormat-full":"a h시 m분 s초 zzzz","dateFormatItem-MEd":"M. d. (E)","field-zone-narrow":"시간대","dateFormatItem-y":"G y년","field-thu-narrow-relative+0":"이번 목요일","field-thu-narrow-relative+1":"다음 목요일","field-sun-narrow-relative+-1":"지난 일요일","field-mon-short-relative+-1":"지난 월요일","field-thu-relative+0":"이번 목요일","field-thu-relative+1":"다음 목요일","field-fri-short-relative+-1":"지난 금요일","dateFormatItem-hms":"a h:mm:ss","field-thu-relative+-1":"지난 목요일","field-week":"주","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-Ed":"d일 (E)","field-wed-narrow-relative+0":"이번 수요일","field-wed-narrow-relative+1":"다음 수요일","field-dayperiod-short":"오전/오후","dateFormatItem-yyyyMMM":"G y년 M월","field-fri-short-relative+0":"이번 금요일","field-fri-short-relative+1":"다음 금요일","days-standAlone-short":["일","월","화","수","목","금","토"],"months-standAlone-abbr-leap":"아달월 2","dateFormatItem-yyyyQQQQ":"G y년 QQQQ","field-zone-short":"시간대","field-hour-short":"시","quarters-format-abbr":["1분기","2분기","3분기","4분기"],"field-month-narrow":"월","field-hour-narrow":"시","field-fri-narrow-relative+-1":"지난 금요일","field-year-relative+0":"올해","field-year-relative+1":"내년","field-era-narrow":"연호","field-fri-relative+-1":"지난 금요일","eraNarrow":"AM","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"지난 화요일","field-minute-narrow":"분","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-mon-narrow-relative+0":"이번 월요일","field-mon-narrow-relative+1":"다음 월요일","field-zone":"시간대","dateFormatItem-MMMEd":"M월 d일 (E)","field-weekOfMonth-narrow":"월의 주","field-weekday-narrow":"요일","months-standAlone-wide-leap":"아달월 2","field-quarter-narrow":"분기","field-sun-short-relative+-1":"지난 일요일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-weekday-short":"요일","days-format-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","dateFormatItem-Gy":"G y년","field-day-short":"일","field-week-narrow":"주","field-era":"연호","field-fri-narrow-relative+0":"이번 금요일","field-fri-narrow-relative+1":"다음 금요일","dayPeriods-standAlone-wide-am":"오전"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/islamic.js b/lib/dojo/cldr/nls/ko/islamic.js
index f525001f4..db65b2b90 100644
--- a/lib/dojo/cldr/nls/ko/islamic.js
+++ b/lib/dojo/cldr/nls/ko/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/islamic",{"days-standAlone-short":["일","월","화","수","목","금","토"],"field-second-relative+0":"지금","field-weekday":"요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","dateFormatItem-GyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-MMMEd":"MMM d일 (E)","field-tue-relative+-1":"지난 화요일","days-format-short":["일","월","화","수","목","금","토"],"dateFormat-long":"G y년 M월 d일","field-fri-relative+-1":"지난 금요일","field-wed-relative+-1":"지난 수요일","dateFormatItem-yyyyQQQ":"G y년 QQQ","dayPeriods-format-wide-pm":"오후","dateFormat-full":"G y년 M월 d일 EEEE","dateFormatItem-yyyyMEd":"G y. M. d. (E)","field-thu-relative+-1":"지난 목요일","dateFormatItem-Md":"M. d.","field-era":"연호","timeFormat-short":"a h:mm","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"timeFormat-long":"a h시 m분 s초 z","field-year":"년","field-hour":"시","field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","timeFormat-full":"a h시 m분 s초 zzzz","field-day-relative+0":"오늘","field-thu-relative+0":"이번 목요일","field-day-relative+1":"내일","field-thu-relative+1":"다음 목요일","dateFormatItem-GyMMMd":"G y년 MMM d일","field-day-relative+2":"모레","dateFormatItem-H":"H시","quarters-format-abbr":["1분기","2분기","3분기","4분기"],"quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-Gy":"G y년","dateFormatItem-yyyyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-M":"M월","dateFormatItem-yyyyMMM":"G y년 MMM","dateFormatItem-yyyyMMMd":"G y년 MMM d일","timeFormat-medium":"a h:mm:ss","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"eraAbbr":["AH"],"field-minute":"분","field-dayperiod":"오전/오후","dateFormatItem-d":"d일","field-day-relative+-1":"어제","dateFormatItem-h":"a h시","field-day-relative+-2":"그저께","dateFormatItem-MMMd":"MMM d일","dateFormatItem-MEd":"M. d. (E)","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-zone":"시간대","dateFormatItem-y":"G y년","field-year-relative+-1":"작년","field-month-relative+-1":"지난달","dateFormatItem-hm":"a h:mm","days-format-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-yyyyMd":"G y. M. d.","field-month":"월","days-standAlone-narrow":["일","월","화","수","목","금","토"],"field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","dayPeriods-format-wide-am":"오전","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","dateFormat-short":"G y. M. d.","field-second":"초","field-sat-relative+-1":"지난 토요일","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-month-relative+1":"다음 달","dateFormatItem-Ed":"d일 (E)","field-week":"주","dateFormat-medium":"G y. M. d.","field-year-relative+0":"올해","field-week-relative+-1":"지난주","dateFormatItem-yyyyM":"G y. M.","field-year-relative+1":"내년","dateFormatItem-yyyyQQQQ":"G y년 QQQQ","dateFormatItem-Hms":"H시 m분 s초","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G y년 MMM","field-mon-relative+-1":"지난 월요일","dateFormatItem-yyyy":"G y년","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/islamic",{"field-tue-relative+-1":"지난 화요일","field-year":"년","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","timeFormat-short":"a h:mm","field-minute":"분","field-tue-narrow-relative+0":"이번 화요일","field-tue-narrow-relative+1":"다음 화요일","field-thu-short-relative+0":"이번 목요일","field-thu-short-relative+1":"다음 목요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","field-wed-narrow-relative+-1":"지난 수요일","dateFormatItem-EBhms":"E B h:mm:ss","field-year-narrow":"년","field-era-short":"연호","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-weekdayOfMonth":"월의 평일","field-second-short":"초","dateFormatItem-MMMd":"M월 d일","field-weekdayOfMonth-narrow":"월의 평일","field-week-relative+0":"이번 주","field-month-relative+0":"이번 달","field-week-relative+1":"다음 주","field-month-relative+1":"다음 달","field-sun-narrow-relative+0":"이번 일요일","timeFormat-medium":"a h:mm:ss","field-mon-short-relative+0":"이번 월요일","field-sun-narrow-relative+1":"다음 일요일","field-mon-short-relative+1":"다음 월요일","field-second-relative+0":"지금","dateFormatItem-yyyyQQQ":"G y년 QQQ","eraNames":["히즈라력"],"field-weekOfMonth":"월의 주","field-month-short":"월","dateFormatItem-GyMMMEd":"G y년 M월 d일 (E)","dateFormatItem-yyyyMd":"G y. M. d.","field-day":"일","field-dayOfYear-short":"년의 일","field-year-relative+-1":"작년","dayPeriods-format-wide-am":"오전","field-sat-short-relative+-1":"지난 토요일","field-hour-relative+0":"현재 시간","dateFormatItem-yyyyMEd":"G y. M. d. (E)","field-wed-relative+-1":"지난 수요일","field-sat-narrow-relative+-1":"지난 토요일","field-second":"초","days-standAlone-narrow":["일","월","화","수","목","금","토"],"dayPeriods-standAlone-wide-pm":"오후","dateFormatItem-Ehms":"E a h:mm:ss","dateFormat-long":"G y년 M월 d일","dateFormatItem-GyMMMd":"G y년 M월 d일","field-quarter":"분기","field-week-short":"주","quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"days-format-narrow":["일","월","화","수","목","금","토"],"field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-mon-relative+-1":"지난 월요일","dateFormatItem-GyMMM":"G y년 M월","field-month":"월","field-day-narrow":"일","field-minute-short":"분","field-dayperiod":"오전/오후","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","dateFormat-medium":"G y. M. d.","dateFormatItem-yyyyMMMM":"G y년 MMMM","eraAbbr":["AH"],"quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"dateFormatItem-yyyyM":"G y. M.","field-second-narrow":"초","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-year-short":"년","field-quarter-relative+-1":"지난 분기","dateFormatItem-yyyyMMMd":"G y년 M월 d일","field-dayperiod-narrow":"오전/오후","days-format-short":["일","월","화","수","목","금","토"],"dayPeriods-format-wide-pm":"오후","field-dayOfYear":"년의 일","field-sat-relative+-1":"지난 토요일","dateFormatItem-Md":"M. d.","field-hour":"시","months-format-wide":["무하람","사파르","라비 알 아왈","라비 알 쎄니","주마다 알 아왈","주마다 알 쎄니","라잡","쉐아반","라마단","쉐왈","듀 알 까다","듀 알 히자"],"dateFormat-full":"G y년 M월 d일 EEEE","field-month-relative+-1":"지난달","field-quarter-short":"분기","field-sat-narrow-relative+0":"이번 토요일","field-fri-relative+0":"이번 금요일","field-sat-narrow-relative+1":"다음 토요일","field-fri-relative+1":"다음 금요일","dateFormatItem-EBhm":"E B h:mm","field-sun-short-relative+0":"이번 일요일","field-sun-short-relative+1":"다음 일요일","field-week-relative+-1":"지난주","dateFormatItem-Ehm":"E a h:mm","months-format-abbr":["무하람","사파르","라비 알 아왈","라비 알 쎄니","주마다 알 아왈","주마다 알 쎄니","라잡","쉐아반","라마단","쉐왈","듀 알 까다","듀 알 히자"],"field-quarter-relative+0":"이번 분기","field-minute-relative+0":"현재 분","timeFormat-long":"a h시 m분 s초 z","field-quarter-relative+1":"다음 분기","field-wed-short-relative+-1":"지난 수요일","dateFormat-short":"G y. M. d.","dateFormatItem-Bh":"B h시","field-thu-short-relative+-1":"지난 목요일","days-standAlone-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"dateFormatItem-yyyyMMMEd":"G y년 M월 d일 (E)","field-mon-narrow-relative+-1":"지난 월요일","dateFormatItem-MMMMd":"MMMM d일","field-thu-narrow-relative+-1":"지난 목요일","field-tue-narrow-relative+-1":"지난 화요일","dateFormatItem-H":"H시","field-weekOfMonth-short":"월의 주","dateFormatItem-yyyy":"G y년","field-wed-short-relative+0":"이번 수요일","dateFormatItem-M":"M월","months-standAlone-wide":["무하람","사파르","라비 알 아왈","라비 알 쎄니","주마다 알 아왈","주마다 알 쎄니","라잡","쉐아반","라마단","쉐왈","듀 알 까다","듀 알 히자"],"field-wed-short-relative+1":"다음 수요일","field-sun-relative+-1":"지난 일요일","days-standAlone-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-hm":"a h:mm","dateFormatItem-d":"d일","field-weekday":"요일","field-sat-relative+0":"이번 토요일","dateFormatItem-h":"a h시","field-sat-relative+1":"다음 토요일","months-standAlone-abbr":["무하람","사파르","라비 알 아왈","라비 알 쎄니","주마다 알 아왈","주마다 알 쎄니","라잡","쉐아반","라마단","쉐왈","듀 알 까다","듀 알 히자"],"field-dayOfYear-narrow":"년의 일","field-weekdayOfMonth-short":"월의 평일","timeFormat-full":"a h시 m분 s초 zzzz","dateFormatItem-MEd":"M. d. (E)","field-zone-narrow":"시간대","dateFormatItem-y":"G y년","field-thu-narrow-relative+0":"이번 목요일","field-thu-narrow-relative+1":"다음 목요일","field-sun-narrow-relative+-1":"지난 일요일","field-mon-short-relative+-1":"지난 월요일","field-thu-relative+0":"이번 목요일","field-thu-relative+1":"다음 목요일","field-fri-short-relative+-1":"지난 금요일","dateFormatItem-hms":"a h:mm:ss","field-thu-relative+-1":"지난 목요일","field-week":"주","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-Ed":"d일 (E)","field-wed-narrow-relative+0":"이번 수요일","field-wed-narrow-relative+1":"다음 수요일","field-dayperiod-short":"오전/오후","dateFormatItem-yyyyMMM":"G y년 M월","field-fri-short-relative+0":"이번 금요일","field-fri-short-relative+1":"다음 금요일","days-standAlone-short":["일","월","화","수","목","금","토"],"dateFormatItem-yyyyQQQQ":"G y년 QQQQ","field-zone-short":"시간대","field-hour-short":"시","quarters-format-abbr":["1분기","2분기","3분기","4분기"],"field-month-narrow":"월","field-hour-narrow":"시","field-fri-narrow-relative+-1":"지난 금요일","field-year-relative+0":"올해","field-year-relative+1":"내년","field-era-narrow":"연호","field-fri-relative+-1":"지난 금요일","eraNarrow":"AH","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"지난 화요일","field-minute-narrow":"분","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-mon-narrow-relative+0":"이번 월요일","field-mon-narrow-relative+1":"다음 월요일","field-zone":"시간대","dateFormatItem-MMMEd":"M월 d일 (E)","field-weekOfMonth-narrow":"월의 주","field-weekday-narrow":"요일","field-quarter-narrow":"분기","field-sun-short-relative+-1":"지난 일요일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-weekday-short":"요일","days-format-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","dateFormatItem-Gy":"G y년","field-day-short":"일","field-week-narrow":"주","field-era":"연호","field-fri-narrow-relative+0":"이번 금요일","field-fri-narrow-relative+1":"다음 금요일","dayPeriods-standAlone-wide-am":"오전"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/japanese.js b/lib/dojo/cldr/nls/ko/japanese.js
index c1a9a2ddf..52d0a6370 100644
--- a/lib/dojo/cldr/nls/ko/japanese.js
+++ b/lib/dojo/cldr/nls/ko/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/japanese",{"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-dayperiod":"오전/오후","field-sun-relative+-1":"지난 일요일","field-mon-relative+-1":"지난 월요일","field-minute":"분","field-day-relative+-1":"어제","field-weekday":"요일","field-day-relative+-2":"그저께","field-era":"연호","field-hour":"시","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","field-wed-relative+-1":"지난 수요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","eraAbbr":["다이카 (645 ~ 650)","하쿠치 (650 ~ 671)","하쿠호 (672 ~ 686)","슈초 (686 ~ 701)","다이호 (701 ~ 704)","게이운 (704 ~ 708)","와도 (708 ~ 715)","레이키 (715 ~ 717)","요로 (717 ~ 724)","진키 (724 ~ 729)","덴표 (729 ~ 749)","덴표칸포 (749 ~ 749)","덴표쇼호 (749 ~ 757)","덴표호지 (757 ~ 765)","덴표진고 (765 ~ 767)","진고케이운 (767 ~ 770)","호키 (770 ~ 780)","덴오 (781 ~ 782)","엔랴쿠 (782 ~ 806)","다이도 (806 ~ 810)","고닌 (810 ~ 824)","덴초 (824 ~ 834)","조와 (834 ~ 848)","가쇼 (848 ~ 851)","닌주 (851 ~ 854)","사이코 (854 ~ 857)","덴난 (857 ~ 859)","조간 (859 ~ 877)","간교 (877 ~ 885)","닌나 (885 ~ 889)","간표 (889 ~ 898)","쇼타이 (898 ~ 901)","엔기 (901 ~ 923)","엔초 (923 ~ 931)","조헤이 (931 ~ 938)","덴교 (938 ~ 947)","덴랴쿠 (947 ~ 957)","덴토쿠 (957 ~ 961)","오와 (961 ~ 964)","고호 (964 ~ 968)","안나 (968 ~ 970)","덴로쿠 (970 ~ 973)","덴엔 (973 ~ 976)","조겐 (976 ~ 978)","덴겐 (978 ~ 983)","에이간 (983 ~ 985)","간나 (985 ~ 987)","에이엔 (987 ~ 989)","에이소 (989 ~ 990)","쇼랴쿠 (990 ~ 995)","조토쿠 (995 ~ 999)","조호 (999 ~ 1004)","간코 (1004 ~ 1012)","조와 (1012 ~ 1017)","간닌 (1017 ~ 1021)","지안 (1021 ~ 1024)","만주 (1024 ~ 1028)","조겐 (1028 ~ 1037)","조랴쿠 (1037 ~ 1040)","조큐 (1040 ~ 1044)","간토쿠 (1044 ~ 1046)","에이쇼 (1046 ~ 1053)","덴기 (1053 ~ 1058)","고헤이 (1058 ~ 1065)","지랴쿠 (1065 ~ 1069)","엔큐 (1069 ~ 1074)","조호 (1074 ~ 1077)","쇼랴쿠 (1077 ~ 1081)","에이호 (1081 ~ 1084)","오토쿠 (1084 ~ 1087)","간지 (1087 ~ 1094)","가호 (1094 ~ 1096)","에이초 (1096 ~ 1097)","조토쿠 (1097 ~ 1099)","고와 (1099 ~ 1104)","조지 (1104 ~ 1106)","가쇼 (1106 ~ 1108)","덴닌 (1108 ~ 1110)","덴에이 (1110 ~ 1113)","에이큐 (1113 ~ 1118)","겐에이 (1118 ~ 1120)","호안 (1120 ~ 1124)","덴지 (1124 ~ 1126)","다이지 (1126 ~ 1131)","덴쇼 (1131 ~ 1132)","조쇼 (1132 ~ 1135)","호엔 (1135 ~ 1141)","에이지 (1141 ~ 1142)","고지 (1142 ~ 1144)","덴요 (1144 ~ 1145)","규안 (1145 ~ 1151)","닌페이 (1151 ~ 1154)","규주 (1154 ~ 1156)","호겐 (1156 ~ 1159)","헤이지 (1159 ~ 1160)","에이랴쿠 (1160 ~ 1161)","오호 (1161 ~ 1163)","조칸 (1163 ~ 1165)","에이만 (1165 ~ 1166)","닌난 (1166 ~ 1169)","가오 (1169 ~ 1171)","조안 (1171 ~ 1175)","안겐 (1175 ~ 1177)","지쇼 (1177 ~ 1181)","요와 (1181 ~ 1182)","주에이 (1182 ~ 1184)","겐랴쿠 (1184 ~ 1185)","분지 (1185 ~ 1190)","겐큐 (1190 ~ 1199)","쇼지 (1199 ~ 1201)","겐닌 (1201 ~ 1204)","겐큐 (1204 ~ 1206)","겐에이 (1206 ~ 1207)","조겐 (1207 ~ 1211)","겐랴쿠 (1211 ~ 1213)","겐포 (1213 ~ 1219)","조큐 (1219 ~ 1222)","조오 (1222 ~ 1224)","겐닌 (1224 ~ 1225)","가로쿠 (1225 ~ 1227)","안테이 (1227 ~ 1229)","간키 (1229 ~ 1232)","조에이 (1232 ~ 1233)","덴푸쿠 (1233 ~ 1234)","분랴쿠 (1234 ~ 1235)","가테이 (1235 ~ 1238)","랴쿠닌 (1238 ~ 1239)","엔오 (1239 ~ 1240)","닌지 (1240 ~ 1243)","간겐 (1243 ~ 1247)","호지 (1247 ~ 1249)","겐초 (1249 ~ 1256)","고겐 (1256 ~ 1257)","쇼카 (1257 ~ 1259)","쇼겐 (1259 ~ 1260)","분오 (1260 ~ 1261)","고초 (1261 ~ 1264)","분에이 (1264 ~ 1275)","겐지 (1275 ~ 1278)","고안 (1278 ~ 1288)","쇼오 (1288 ~ 1293)","에이닌 (1293 ~ 1299)","쇼안 (1299 ~ 1302)","겐겐 (1302 ~ 1303)","가겐 (1303 ~ 1306)","도쿠지 (1306 ~ 1308)","엔쿄 (1308 ~ 1311)","오초 (1311 ~ 1312)","쇼와 (1312 ~ 1317)","분포 (1317 ~ 1319)","겐오 (1319 ~ 1321)","겐코 (1321 ~ 1324)","쇼추 (1324 ~ 1326)","가랴쿠 (1326 ~ 1329)","겐토쿠 (1329 ~ 1331)","겐코 (1331 ~ 1334)","겐무 (1334 ~ 1336)","엔겐 (1336 ~ 1340)","고코쿠 (1340 ~ 1346)","쇼헤이 (1346 ~ 1370)","겐토쿠 (1370 ~ 1372)","분추 (1372 ~ 1375)","덴주 (1375 ~ 1379)","고랴쿠 (1379 ~ 1381)","고와 (1381 ~ 1384)","겐추 (1384 ~ 1392)","메이토쿠 (1384 ~ 1387)","가쿄 (1387 ~ 1389)","고오 (1389 ~ 1390)","메이토쿠 (1390 ~ 1394)","오에이 (1394 ~ 1428)","쇼초 (1428 ~ 1429)","에이쿄 (1429 ~ 1441)","가키쓰 (1441 ~ 1444)","분안 (1444 ~ 1449)","호토쿠 (1449 ~ 1452)","교토쿠 (1452 ~ 1455)","고쇼 (1455 ~ 1457)","조로쿠 (1457 ~ 1460)","간쇼 (1460 ~ 1466)","분쇼 (1466 ~ 1467)","오닌 (1467 ~ 1469)","분메이 (1469 ~ 1487)","조쿄 (1487 ~ 1489)<","엔토쿠 (1489 ~ 1492)","메이오 (1492 ~ 1501)","분키 (1501 ~ 1504)","에이쇼 (1504 ~ 1521)","다이에이 (1521 ~ 1528)","교로쿠 (1528 ~ 1532)","덴분 (1532 ~ 1555)","고지 (1555 ~ 1558)","에이로쿠 (1558 ~ 1570)","겐키 (1570 ~ 1573)","덴쇼 (1573 ~ 1592)","분로쿠 (1592 ~ 1596)","게이초 (1596 ~ 1615)","겐나 (1615 ~ 1624)","간에이 (1624 ~ 1644)","쇼호 (1644 ~ 1648)","게이안 (1648 ~ 1652)","조오 (1652 ~ 1655)","메이레키 (1655 ~ 1658)","만지 (1658 ~ 1661)","간분 (1661 ~ 1673)","엔포 (1673 ~ 1681)","덴나 (1681 ~ 1684)","조쿄 (1684 ~ 1688)","겐로쿠 (1688 ~ 1704)","호에이 (1704 ~ 1711)","쇼토쿠 (1711 ~ 1716)","교호 (1716 ~ 1736)","겐분 (1736 ~ 1741)","간포 (1741 ~ 1744)","엔쿄 (1744 ~ 1748)","간엔 (1748 ~ 1751)","호레키 (1751 ~ 1764)","메이와 (1764 ~ 1772)","안에이 (1772 ~ 1781)","덴메이 (1781 ~ 1789)","간세이 (1789 ~ 1801)","교와 (1801 ~ 1804)","분카 (1804 ~ 1818)","분세이 (1818 ~ 1830)","덴포 (1830 ~ 1844)","고카 (1844 ~ 1848)","가에이 (1848 ~ 1854)","안세이 (1854 ~ 1860)","만엔 (1860 ~ 1861)","분큐 (1861 ~ 1864)","겐지 (1864 ~ 1865)","게이오 (1865 ~ 1868)","메이지","다이쇼","쇼와","헤이세이"],"field-day-relative+2":"모레","field-tue-relative+0":"이번 화요일","field-zone":"시간대","field-tue-relative+1":"다음 화요일","field-week-relative+-1":"지난주","field-year-relative+0":"올해","field-year-relative+1":"내년","field-sat-relative+-1":"지난 토요일","field-year-relative+-1":"작년","field-year":"년","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-week":"주","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주","field-month-relative+0":"이번 달","field-month":"월","field-month-relative+1":"다음 달","field-fri-relative+-1":"지난 금요일","field-second":"초","field-tue-relative+-1":"지난 화요일","field-day":"일","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-thu-relative+0":"이번 목요일","field-second-relative+0":"지금","field-thu-relative+1":"다음 목요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","field-month-relative+-1":"지난달","field-thu-relative+-1":"지난 목요일"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/japanese",{"field-second-relative+0":"지금","field-quarter-relative+-1":"지난 분기","field-weekday":"요일","field-mon-narrow-relative+0":"이번 월요일","field-mon-narrow-relative+1":"다음 월요일","field-weekOfMonth-short":"월의 주","field-weekday-short":"요일","field-wed-relative+0":"이번 수요일","dateFormatItem-GyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-MMMEd":"MMM d일 (E)","field-wed-relative+1":"다음 수요일","field-dayperiod-short":"오전/오후","field-week-short":"주","field-year-short":"년","field-era-narrow":"연호","field-tue-relative+-1":"지난 화요일","field-thu-narrow-relative+-1":"지난 목요일","field-hour-relative+0":"현재 시간","field-quarter-narrow":"분기","field-fri-relative+-1":"지난 금요일","field-hour-short":"시","field-wed-relative+-1":"지난 수요일","field-dayOfYear":"년의 일","field-mon-short-relative+-1":"지난 월요일","field-thu-relative+-1":"지난 목요일","field-era":"연호","field-sat-narrow-relative+0":"이번 토요일","field-sat-narrow-relative+1":"다음 토요일","field-year":"년","dateFormatItem-yyyyMMMM":"G y년 MMMM","field-hour":"시","field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-sat-short-relative+-1":"지난 토요일","field-weekOfMonth-narrow":"월의 주","field-minute-narrow":"분","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-thu-relative+0":"이번 목요일","dateFormatItem-GyMMMd":"G y년 MMM d일","field-day-relative+2":"모레","field-mon-narrow-relative+-1":"지난 월요일","field-wed-narrow-relative+0":"이번 수요일","field-thu-relative+1":"다음 목요일","field-wed-narrow-relative+1":"다음 수요일","field-mon-short-relative+0":"이번 월요일","field-mon-short-relative+1":"다음 월요일","field-weekdayOfMonth-short":"월의 평일","dateFormatItem-yyyyMMMEd":"G y년 MMM d일 (E)","field-wed-short-relative+-1":"지난 수요일","field-fri-narrow-relative+-1":"지난 금요일","dateFormatItem-yyyyMMM":"G y년 MMM","dateFormatItem-yyyyMMMd":"G y년 MMM d일","dateFormatItem-MMMMd":"MMMM d일","field-hour-narrow":"시","field-year-narrow":"년","field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-minute-short":"분","field-day-narrow":"일","field-wed-short-relative+0":"이번 수요일","field-wed-short-relative+1":"다음 수요일","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","eraAbbr":["다이카 (645 ~ 650)","하쿠치 (650 ~ 671)","하쿠호 (672 ~ 686)","슈초 (686 ~ 701)","다이호 (701 ~ 704)","게이운 (704 ~ 708)","와도 (708 ~ 715)","레이키 (715 ~ 717)","요로 (717 ~ 724)","진키 (724 ~ 729)","덴표 (729 ~ 749)","덴표칸포 (749 ~ 749)","덴표쇼호 (749 ~ 757)","덴표호지 (757 ~ 765)","덴표진고 (765 ~ 767)","진고케이운 (767 ~ 770)","호키 (770 ~ 780)","덴오 (781 ~ 782)","엔랴쿠 (782 ~ 806)","다이도 (806 ~ 810)","고닌 (810 ~ 824)","덴초 (824 ~ 834)","조와 (834 ~ 848)","가쇼 (848 ~ 851)","닌주 (851 ~ 854)","사이코 (854 ~ 857)","덴난 (857 ~ 859)","조간 (859 ~ 877)","간교 (877 ~ 885)","닌나 (885 ~ 889)","간표 (889 ~ 898)","쇼타이 (898 ~ 901)","엔기 (901 ~ 923)","엔초 (923 ~ 931)","조헤이 (931 ~ 938)","덴교 (938 ~ 947)","덴랴쿠 (947 ~ 957)","덴토쿠 (957 ~ 961)","오와 (961 ~ 964)","고호 (964 ~ 968)","안나 (968 ~ 970)","덴로쿠 (970 ~ 973)","덴엔 (973 ~ 976)","조겐 (976 ~ 978)","덴겐 (978 ~ 983)","에이간 (983 ~ 985)","간나 (985 ~ 987)","에이엔 (987 ~ 989)","에이소 (989 ~ 990)","쇼랴쿠 (990 ~ 995)","조토쿠 (995 ~ 999)","조호 (999 ~ 1004)","간코 (1004 ~ 1012)","조와 (1012 ~ 1017)","간닌 (1017 ~ 1021)","지안 (1021 ~ 1024)","만주 (1024 ~ 1028)","조겐 (1028 ~ 1037)","조랴쿠 (1037 ~ 1040)","조큐 (1040 ~ 1044)","간토쿠 (1044 ~ 1046)","에이쇼 (1046 ~ 1053)","덴기 (1053 ~ 1058)","고헤이 (1058 ~ 1065)","지랴쿠 (1065 ~ 1069)","엔큐 (1069 ~ 1074)","조호 (1074 ~ 1077)","쇼랴쿠 (1077 ~ 1081)","에이호 (1081 ~ 1084)","오토쿠 (1084 ~ 1087)","간지 (1087 ~ 1094)","가호 (1094 ~ 1096)","에이초 (1096 ~ 1097)","조토쿠 (1097 ~ 1099)","고와 (1099 ~ 1104)","조지 (1104 ~ 1106)","가쇼 (1106 ~ 1108)","덴닌 (1108 ~ 1110)","덴에이 (1110 ~ 1113)","에이큐 (1113 ~ 1118)","겐에이 (1118 ~ 1120)","호안 (1120 ~ 1124)","덴지 (1124 ~ 1126)","다이지 (1126 ~ 1131)","덴쇼 (1131 ~ 1132)","조쇼 (1132 ~ 1135)","호엔 (1135 ~ 1141)","에이지 (1141 ~ 1142)","고지 (1142 ~ 1144)","덴요 (1144 ~ 1145)","규안 (1145 ~ 1151)","닌페이 (1151 ~ 1154)","규주 (1154 ~ 1156)","호겐 (1156 ~ 1159)","헤이지 (1159 ~ 1160)","에이랴쿠 (1160 ~ 1161)","오호 (1161 ~ 1163)","조칸 (1163 ~ 1165)","에이만 (1165 ~ 1166)","닌난 (1166 ~ 1169)","가오 (1169 ~ 1171)","조안 (1171 ~ 1175)","안겐 (1175 ~ 1177)","지쇼 (1177 ~ 1181)","요와 (1181 ~ 1182)","주에이 (1182 ~ 1184)","겐랴쿠 (1184 ~ 1185)","분지 (1185 ~ 1190)","겐큐 (1190 ~ 1199)","쇼지 (1199 ~ 1201)","겐닌 (1201 ~ 1204)","겐큐 (1204 ~ 1206)","겐에이 (1206 ~ 1207)","조겐 (1207 ~ 1211)","겐랴쿠 (1211 ~ 1213)","겐포 (1213 ~ 1219)","조큐 (1219 ~ 1222)","조오 (1222 ~ 1224)","겐닌 (1224 ~ 1225)","가로쿠 (1225 ~ 1227)","안테이 (1227 ~ 1229)","간키 (1229 ~ 1232)","조에이 (1232 ~ 1233)","덴푸쿠 (1233 ~ 1234)","분랴쿠 (1234 ~ 1235)","가테이 (1235 ~ 1238)","랴쿠닌 (1238 ~ 1239)","엔오 (1239 ~ 1240)","닌지 (1240 ~ 1243)","간겐 (1243 ~ 1247)","호지 (1247 ~ 1249)","겐초 (1249 ~ 1256)","고겐 (1256 ~ 1257)","쇼카 (1257 ~ 1259)","쇼겐 (1259 ~ 1260)","분오 (1260 ~ 1261)","고초 (1261 ~ 1264)","분에이 (1264 ~ 1275)","겐지 (1275 ~ 1278)","고안 (1278 ~ 1288)","쇼오 (1288 ~ 1293)","에이닌 (1293 ~ 1299)","쇼안 (1299 ~ 1302)","겐겐 (1302 ~ 1303)","가겐 (1303 ~ 1306)","도쿠지 (1306 ~ 1308)","엔쿄 (1308 ~ 1311)","오초 (1311 ~ 1312)","쇼와 (1312 ~ 1317)","분포 (1317 ~ 1319)","겐오 (1319 ~ 1321)","겐코 (1321 ~ 1324)","쇼추 (1324 ~ 1326)","가랴쿠 (1326 ~ 1329)","겐토쿠 (1329 ~ 1331)","겐코 (1331 ~ 1334)","겐무 (1334 ~ 1336)","엔겐 (1336 ~ 1340)","고코쿠 (1340 ~ 1346)","쇼헤이 (1346 ~ 1370)","겐토쿠 (1370 ~ 1372)","분추 (1372 ~ 1375)","덴주 (1375 ~ 1379)","고랴쿠 (1379 ~ 1381)","고와 (1381 ~ 1384)","겐추 (1384 ~ 1392)","메이토쿠 (1384 ~ 1387)","가쿄 (1387 ~ 1389)","고오 (1389 ~ 1390)","메이토쿠 (1390 ~ 1394)","오에이 (1394 ~ 1428)","쇼초 (1428 ~ 1429)","에이쿄 (1429 ~ 1441)","가키쓰 (1441 ~ 1444)","분안 (1444 ~ 1449)","호토쿠 (1449 ~ 1452)","교토쿠 (1452 ~ 1455)","고쇼 (1455 ~ 1457)","조로쿠 (1457 ~ 1460)","간쇼 (1460 ~ 1466)","분쇼 (1466 ~ 1467)","오닌 (1467 ~ 1469)","분메이 (1469 ~ 1487)","조쿄 (1487 ~ 1489)<","엔토쿠 (1489 ~ 1492)","메이오 (1492 ~ 1501)","분키 (1501 ~ 1504)","에이쇼 (1504 ~ 1521)","다이에이 (1521 ~ 1528)","교로쿠 (1528 ~ 1532)","덴분 (1532 ~ 1555)","고지 (1555 ~ 1558)","에이로쿠 (1558 ~ 1570)","겐키 (1570 ~ 1573)","덴쇼 (1573 ~ 1592)","분로쿠 (1592 ~ 1596)","게이초 (1596 ~ 1615)","겐나 (1615 ~ 1624)","간에이 (1624 ~ 1644)","쇼호 (1644 ~ 1648)","게이안 (1648 ~ 1652)","조오 (1652 ~ 1655)","메이레키 (1655 ~ 1658)","만지 (1658 ~ 1661)","간분 (1661 ~ 1673)","엔포 (1673 ~ 1681)","덴나 (1681 ~ 1684)","조쿄 (1684 ~ 1688)","겐로쿠 (1688 ~ 1704)","호에이 (1704 ~ 1711)","쇼토쿠 (1711 ~ 1716)","교호 (1716 ~ 1736)","겐분 (1736 ~ 1741)","간포 (1741 ~ 1744)","엔쿄 (1744 ~ 1748)","간엔 (1748 ~ 1751)","호레키 (1751 ~ 1764)","메이와 (1764 ~ 1772)","안에이 (1772 ~ 1781)","덴메이 (1781 ~ 1789)","간세이 (1789 ~ 1801)","교와 (1801 ~ 1804)","분카 (1804 ~ 1818)","분세이 (1818 ~ 1830)","덴포 (1830 ~ 1844)","고카 (1844 ~ 1848)","가에이 (1848 ~ 1854)","안세이 (1854 ~ 1860)","만엔 (1860 ~ 1861)","분큐 (1861 ~ 1864)","겐지 (1864 ~ 1865)","게이오 (1865 ~ 1868)","메이지","다이쇼","쇼와","헤이세이","레이와"],"field-minute":"분","field-month-short":"월","field-dayperiod":"오전/오후","field-weekdayOfMonth-narrow":"월의 평일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-minute-relative+0":"현재 분","field-week-narrow":"주","field-wed-narrow-relative+-1":"지난 수요일","dateFormatItem-MMMd":"MMM d일","field-day-short":"일","field-quarter-relative+0":"이번 분기","field-dayperiod-narrow":"오전/오후","field-quarter-relative+1":"다음 분기","field-zone-short":"시간대","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","field-second-narrow":"초","field-zone":"시간대","field-year-relative+-1":"작년","field-month-relative+-1":"지난달","field-thu-short-relative+0":"이번 목요일","field-thu-short-relative+1":"다음 목요일","dateFormatItem-GyMMMEEEEd":"G y년 MMM d일 EEEE","field-weekday-narrow":"요일","field-quarter":"분기","dateFormatItem-yyyyMMMEEEEd":"G y년 MMM d일 EEEE","dateFormatItem-MMMEEEEd":"MMM d일 EEEE","field-zone-narrow":"시간대","field-month":"월","field-weekOfMonth":"월의 주","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-fri-narrow-relative+0":"이번 금요일","field-fri-narrow-relative+1":"다음 금요일","field-fri-short-relative+-1":"지난 금요일","field-sun-narrow-relative+-1":"지난 일요일","field-dayOfYear-short":"년의 일","field-sun-narrow-relative+0":"이번 일요일","field-thu-narrow-relative+0":"이번 목요일","field-sun-narrow-relative+1":"다음 일요일","field-thu-narrow-relative+1":"다음 목요일","field-tue-narrow-relative+0":"이번 화요일","field-mon-relative+0":"이번 월요일","field-tue-narrow-relative+1":"다음 화요일","field-mon-relative+1":"다음 월요일","field-tue-narrow-relative+-1":"지난 화요일","field-second-short":"초","field-second":"초","field-fri-short-relative+0":"이번 금요일","field-sat-relative+-1":"지난 토요일","field-fri-short-relative+1":"다음 금요일","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-weekdayOfMonth":"월의 평일","field-month-relative+1":"다음 달","field-week":"주","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","field-year-relative+0":"올해","field-week-relative+-1":"지난주","field-year-relative+1":"내년","field-era-short":"연호","field-quarter-short":"분기","field-dayOfYear-narrow":"년의 일","field-sun-short-relative+-1":"지난 일요일","field-thu-short-relative+-1":"지난 목요일","field-tue-short-relative+-1":"지난 화요일","dateFormatItem-GyMMM":"G y년 MMM","field-mon-relative+-1":"지난 월요일","field-sat-narrow-relative+-1":"지난 토요일","field-month-narrow":"월","field-week-relative+0":"이번 주","field-sun-short-relative+0":"이번 일요일","field-week-relative+1":"다음 주","field-sun-short-relative+1":"다음 일요일"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/number.js b/lib/dojo/cldr/nls/ko/number.js
index 7b61b0009..9e9dfbeb9 100644
--- a/lib/dojo/cldr/nls/ko/number.js
+++ b/lib/dojo/cldr/nls/ko/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000조","decimalFormat-short":"000조"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000조","nan":"NaN","plusSign":"+","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000조","decimalFormat":"#,##0.###","currencyFormat-short":"¤000조","timeSeparator":":","decimal":".","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/persian.js b/lib/dojo/cldr/nls/ko/persian.js
new file mode 100644
index 000000000..e89721afd
--- /dev/null
+++ b/lib/dojo/cldr/nls/ko/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/ko/persian",{"field-tue-relative+-1":"지난 화요일","field-year":"년","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","timeFormat-short":"a h:mm","field-minute":"분","field-tue-narrow-relative+0":"이번 화요일","field-tue-narrow-relative+1":"다음 화요일","field-thu-short-relative+0":"이번 목요일","field-thu-short-relative+1":"다음 목요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-day-relative+2":"모레","field-wed-narrow-relative+-1":"지난 수요일","dateFormatItem-EBhms":"E B h:mm:ss","field-year-narrow":"년","field-era-short":"연호","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-weekdayOfMonth":"월의 평일","field-second-short":"초","dateFormatItem-MMMd":"M월 d일","field-weekdayOfMonth-narrow":"월의 평일","field-week-relative+0":"이번 주","field-month-relative+0":"이번 달","field-week-relative+1":"다음 주","field-month-relative+1":"다음 달","field-sun-narrow-relative+0":"이번 일요일","timeFormat-medium":"a h:mm:ss","field-mon-short-relative+0":"이번 월요일","field-sun-narrow-relative+1":"다음 일요일","field-mon-short-relative+1":"다음 월요일","field-second-relative+0":"지금","dateFormatItem-yyyyQQQ":"G y년 QQQ","months-standAlone-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-weekOfMonth":"월의 주","field-month-short":"월","dateFormatItem-GyMMMEd":"G y년 M월 d일 (E)","dateFormatItem-yyyyMd":"G y. M. d.","field-day":"일","field-dayOfYear-short":"년의 일","field-year-relative+-1":"작년","dayPeriods-format-wide-am":"오전","field-sat-short-relative+-1":"지난 토요일","field-hour-relative+0":"현재 시간","dateFormatItem-yyyyMEd":"G y. M. d. (E)","field-wed-relative+-1":"지난 수요일","field-sat-narrow-relative+-1":"지난 토요일","field-second":"초","days-standAlone-narrow":["일","월","화","수","목","금","토"],"dayPeriods-standAlone-wide-pm":"오후","dateFormatItem-Ehms":"E a h:mm:ss","dateFormat-long":"G y년 M월 d일","dateFormatItem-GyMMMd":"G y년 M월 d일","field-quarter":"분기","field-week-short":"주","quarters-standAlone-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"days-format-narrow":["일","월","화","수","목","금","토"],"field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-mon-relative+-1":"지난 월요일","dateFormatItem-GyMMM":"G y년 M월","field-month":"월","field-day-narrow":"일","field-minute-short":"분","field-dayperiod":"오전/오후","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","dateFormat-medium":"G y. M. d.","dateFormatItem-yyyyMMMM":"G y년 M월","quarters-standAlone-abbr":["1분기","2분기","3분기","4분기"],"dateFormatItem-yyyyM":"G y. M.","field-second-narrow":"초","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-year-short":"년","months-format-narrow":["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],"field-quarter-relative+-1":"지난 분기","dateFormatItem-yyyyMMMd":"G y년 M월 d일","field-dayperiod-narrow":"오전/오후","days-format-short":["일","월","화","수","목","금","토"],"dayPeriods-format-wide-pm":"오후","field-dayOfYear":"년의 일","field-sat-relative+-1":"지난 토요일","dateFormatItem-Md":"M. d.","field-hour":"시","months-format-wide":["화르바딘","오르디베헤쉬트","호르다드","티르","모르다드","샤흐리바르","메흐르","아반","아자르","다이","바흐만","에스판드"],"dateFormat-full":"G y년 M월 d일 EEEE","field-month-relative+-1":"지난달","field-quarter-short":"분기","field-sat-narrow-relative+0":"이번 토요일","field-fri-relative+0":"이번 금요일","field-sat-narrow-relative+1":"다음 토요일","field-fri-relative+1":"다음 금요일","dateFormatItem-EBhm":"E B h:mm","field-sun-short-relative+0":"이번 일요일","field-sun-short-relative+1":"다음 일요일","field-week-relative+-1":"지난주","dateFormatItem-Ehm":"E a h:mm","months-format-abbr":["화르바딘","오르디베헤쉬트","호르다드","티르","모르다드","샤흐리바르","메흐르","아반","아자르","다이","바흐만","에스판드"],"field-quarter-relative+0":"이번 분기","field-minute-relative+0":"현재 분","timeFormat-long":"a h시 m분 s초 z","field-quarter-relative+1":"다음 분기","field-wed-short-relative+-1":"지난 수요일","dateFormat-short":"G y. M. d.","dateFormatItem-Bh":"B h시","field-thu-short-relative+-1":"지난 목요일","days-standAlone-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"dateFormatItem-yyyyMMMEd":"G y년 M월 d일 (E)","field-mon-narrow-relative+-1":"지난 월요일","dateFormatItem-MMMMd":"M월 d일","field-thu-narrow-relative+-1":"지난 목요일","field-tue-narrow-relative+-1":"지난 화요일","dateFormatItem-H":"H시","field-weekOfMonth-short":"월의 주","dateFormatItem-yyyy":"G y년","field-wed-short-relative+0":"이번 수요일","dateFormatItem-M":"M월","months-standAlone-wide":["화르바딘","오르디베헤쉬트","호르다드","티르","모르다드","샤흐리바르","메흐르","아반","아자르","다이","바흐만","에스판드"],"field-wed-short-relative+1":"다음 수요일","field-sun-relative+-1":"지난 일요일","days-standAlone-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-hm":"a h:mm","dateFormatItem-d":"d일","field-weekday":"요일","field-sat-relative+0":"이번 토요일","dateFormatItem-h":"a h시","field-sat-relative+1":"다음 토요일","months-standAlone-abbr":["화르바딘","오르디베헤쉬트","호르다드","티르","모르다드","샤흐리바르","메흐르","아반","아자르","다이","바흐만","에스판드"],"field-dayOfYear-narrow":"년의 일","field-weekdayOfMonth-short":"월의 평일","timeFormat-full":"a h시 m분 s초 zzzz","dateFormatItem-MEd":"M. d. (E)","field-zone-narrow":"시간대","dateFormatItem-y":"G y년","field-thu-narrow-relative+0":"이번 목요일","field-thu-narrow-relative+1":"다음 목요일","field-sun-narrow-relative+-1":"지난 일요일","field-mon-short-relative+-1":"지난 월요일","field-thu-relative+0":"이번 목요일","field-thu-relative+1":"다음 목요일","field-fri-short-relative+-1":"지난 금요일","dateFormatItem-hms":"a h:mm:ss","field-thu-relative+-1":"지난 목요일","field-week":"주","quarters-format-wide":["제 1/4분기","제 2/4분기","제 3/4분기","제 4/4분기"],"dateFormatItem-Ed":"d일 (E)","field-wed-narrow-relative+0":"이번 수요일","field-wed-narrow-relative+1":"다음 수요일","field-dayperiod-short":"오전/오후","dateFormatItem-yyyyMMM":"G y년 M월","field-fri-short-relative+0":"이번 금요일","field-fri-short-relative+1":"다음 금요일","days-standAlone-short":["일","월","화","수","목","금","토"],"dateFormatItem-yyyyQQQQ":"G y년 QQQQ","field-zone-short":"시간대","field-hour-short":"시","quarters-format-abbr":["1분기","2분기","3분기","4분기"],"field-month-narrow":"월","field-hour-narrow":"시","field-fri-narrow-relative+-1":"지난 금요일","field-year-relative+0":"올해","field-year-relative+1":"내년","field-era-narrow":"연호","field-fri-relative+-1":"지난 금요일","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"지난 화요일","field-minute-narrow":"분","days-format-wide":["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],"field-mon-narrow-relative+0":"이번 월요일","field-mon-narrow-relative+1":"다음 월요일","field-zone":"시간대","dateFormatItem-MMMEd":"M월 d일 (E)","field-weekOfMonth-narrow":"월의 주","field-weekday-narrow":"요일","field-quarter-narrow":"분기","field-sun-short-relative+-1":"지난 일요일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-weekday-short":"요일","days-format-abbr":["일","월","화","수","목","금","토"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","dateFormatItem-Gy":"G y년","field-day-short":"일","field-week-narrow":"주","field-era":"연호","field-fri-narrow-relative+0":"이번 금요일","field-fri-narrow-relative+1":"다음 금요일","dayPeriods-standAlone-wide-am":"오전"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ko/roc.js b/lib/dojo/cldr/nls/ko/roc.js
index ca510fb72..afb7e9d8c 100644
--- a/lib/dojo/cldr/nls/ko/roc.js
+++ b/lib/dojo/cldr/nls/ko/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ko/roc",{"field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-dayperiod":"오전/오후","field-sun-relative+-1":"지난 일요일","field-mon-relative+-1":"지난 월요일","field-minute":"분","field-day-relative+-1":"어제","field-weekday":"요일","field-day-relative+-2":"그저께","field-era":"연호","field-hour":"시","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","field-wed-relative+-1":"지난 수요일","field-day-relative+0":"오늘","field-day-relative+1":"내일","eraAbbr":["중화민국전","중화민국"],"field-day-relative+2":"모레","field-tue-relative+0":"이번 화요일","field-zone":"시간대","field-tue-relative+1":"다음 화요일","field-week-relative+-1":"지난주","field-year-relative+0":"올해","field-year-relative+1":"내년","field-sat-relative+-1":"지난 토요일","field-year-relative+-1":"작년","field-year":"년","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-week":"주","field-week-relative+0":"이번 주","field-week-relative+1":"다음 주","field-month-relative+0":"이번 달","field-month":"월","field-month-relative+1":"다음 달","field-fri-relative+-1":"지난 금요일","field-second":"초","field-tue-relative+-1":"지난 화요일","field-day":"일","field-mon-relative+0":"이번 월요일","field-mon-relative+1":"다음 월요일","field-thu-relative+0":"이번 목요일","field-second-relative+0":"지금","field-thu-relative+1":"다음 목요일","field-wed-relative+0":"이번 수요일","field-wed-relative+1":"다음 수요일","field-month-relative+-1":"지난달","field-thu-relative+-1":"지난 목요일"}); \ No newline at end of file
+define("dojo/cldr/nls/ko/roc",{"field-second-relative+0":"지금","field-quarter-relative+-1":"지난 분기","field-weekday":"요일","field-mon-narrow-relative+0":"이번 월요일","field-mon-narrow-relative+1":"다음 월요일","field-weekOfMonth-short":"월의 주","field-weekday-short":"요일","field-wed-relative+0":"이번 수요일","dateFormatItem-GyMMMEd":"G y년 MMM d일 (E)","dateFormatItem-MMMEd":"MMM d일 (E)","field-wed-relative+1":"다음 수요일","field-dayperiod-short":"오전/오후","field-week-short":"주","field-year-short":"년","field-era-narrow":"연호","field-tue-relative+-1":"지난 화요일","field-thu-narrow-relative+-1":"지난 목요일","field-hour-relative+0":"현재 시간","field-quarter-narrow":"분기","field-fri-relative+-1":"지난 금요일","field-hour-short":"시","field-wed-relative+-1":"지난 수요일","field-dayOfYear":"년의 일","field-mon-short-relative+-1":"지난 월요일","field-thu-relative+-1":"지난 목요일","field-era":"연호","field-sat-narrow-relative+0":"이번 토요일","field-sat-narrow-relative+1":"다음 토요일","field-year":"년","dateFormatItem-yyyyMMMM":"G y년 MMMM","field-hour":"시","field-sat-relative+0":"이번 토요일","field-sat-relative+1":"다음 토요일","field-sat-short-relative+-1":"지난 토요일","field-weekOfMonth-narrow":"월의 주","field-minute-narrow":"분","field-day-relative+0":"오늘","field-day-relative+1":"내일","field-thu-relative+0":"이번 목요일","dateFormatItem-GyMMMd":"G y년 MMM d일","field-day-relative+2":"모레","field-mon-narrow-relative+-1":"지난 월요일","field-wed-narrow-relative+0":"이번 수요일","field-thu-relative+1":"다음 목요일","field-wed-narrow-relative+1":"다음 수요일","field-mon-short-relative+0":"이번 월요일","field-mon-short-relative+1":"다음 월요일","field-weekdayOfMonth-short":"월의 평일","dateFormatItem-yyyyMMMEd":"G y년 MMM d일 (E)","field-wed-short-relative+-1":"지난 수요일","field-fri-narrow-relative+-1":"지난 금요일","dateFormatItem-yyyyMMM":"G y년 MMM","dateFormatItem-yyyyMMMd":"G y년 MMM d일","dateFormatItem-MMMMd":"MMMM d일","field-hour-narrow":"시","field-year-narrow":"년","field-tue-short-relative+0":"이번 화요일","field-tue-short-relative+1":"다음 화요일","field-minute-short":"분","field-day-narrow":"일","field-wed-short-relative+0":"이번 수요일","field-wed-short-relative+1":"다음 수요일","field-sun-relative+0":"이번 일요일","field-sun-relative+1":"다음 일요일","eraAbbr":["중화민국전","중화민국"],"field-minute":"분","field-month-short":"월","field-dayperiod":"오전/오후","field-weekdayOfMonth-narrow":"월의 평일","field-day-relative+-1":"어제","field-day-relative+-2":"그저께","field-minute-relative+0":"현재 분","field-week-narrow":"주","field-wed-narrow-relative+-1":"지난 수요일","dateFormatItem-MMMd":"MMM d일","field-day-short":"일","field-quarter-relative+0":"이번 분기","field-dayperiod-narrow":"오전/오후","field-quarter-relative+1":"다음 분기","field-zone-short":"시간대","field-fri-relative+0":"이번 금요일","field-fri-relative+1":"다음 금요일","field-day":"일","field-second-narrow":"초","field-zone":"시간대","field-year-relative+-1":"작년","field-month-relative+-1":"지난달","field-thu-short-relative+0":"이번 목요일","field-thu-short-relative+1":"다음 목요일","dateFormatItem-GyMMMEEEEd":"G y년 MMM d일 EEEE","field-weekday-narrow":"요일","field-quarter":"분기","dateFormatItem-yyyyMMMEEEEd":"G y년 MMM d일 EEEE","dateFormatItem-MMMEEEEd":"MMM d일 EEEE","field-zone-narrow":"시간대","field-month":"월","field-weekOfMonth":"월의 주","field-tue-relative+0":"이번 화요일","field-tue-relative+1":"다음 화요일","field-fri-narrow-relative+0":"이번 금요일","field-fri-narrow-relative+1":"다음 금요일","field-fri-short-relative+-1":"지난 금요일","field-sun-narrow-relative+-1":"지난 일요일","field-dayOfYear-short":"년의 일","field-sun-narrow-relative+0":"이번 일요일","field-thu-narrow-relative+0":"이번 목요일","field-sun-narrow-relative+1":"다음 일요일","field-thu-narrow-relative+1":"다음 목요일","field-tue-narrow-relative+0":"이번 화요일","field-mon-relative+0":"이번 월요일","field-tue-narrow-relative+1":"다음 화요일","field-mon-relative+1":"다음 월요일","field-tue-narrow-relative+-1":"지난 화요일","field-second-short":"초","field-second":"초","field-fri-short-relative+0":"이번 금요일","field-sat-relative+-1":"지난 토요일","field-fri-short-relative+1":"다음 금요일","field-sun-relative+-1":"지난 일요일","field-month-relative+0":"이번 달","field-weekdayOfMonth":"월의 평일","field-month-relative+1":"다음 달","field-week":"주","field-sat-short-relative+0":"이번 토요일","field-sat-short-relative+1":"다음 토요일","field-year-relative+0":"올해","field-week-relative+-1":"지난주","field-year-relative+1":"내년","field-era-short":"연호","field-quarter-short":"분기","field-dayOfYear-narrow":"년의 일","field-sun-short-relative+-1":"지난 일요일","field-thu-short-relative+-1":"지난 목요일","field-tue-short-relative+-1":"지난 화요일","dateFormatItem-GyMMM":"G y년 MMM","field-mon-relative+-1":"지난 월요일","field-sat-narrow-relative+-1":"지난 토요일","field-month-narrow":"월","field-week-relative+0":"이번 주","field-sun-short-relative+0":"이번 일요일","field-week-relative+1":"다음 주","field-sun-short-relative+1":"다음 일요일"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/buddhist.js b/lib/dojo/cldr/nls/mk/buddhist.js
new file mode 100644
index 000000000..e6d7bab0a
--- /dev/null
+++ b/lib/dojo/cldr/nls/mk/buddhist.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/mk/buddhist",{"field-quarter-short-relative+0":"ова тромесечје","field-quarter-short-relative+1":"следното тромесечје","field-tue-relative+-1":"минатиот вторник","field-year":"година","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","field-minute":"минута","field-month-narrow-relative+-1":"минатиот месец","field-tue-narrow-relative+0":"овој вто.","field-tue-narrow-relative+1":"следниот вто.","field-thu-short-relative+0":"овој чет.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"следниот чет.","field-day-relative+0":"денес","field-day-short-relative+-2":"завчера","field-day-relative+1":"утре","field-week-narrow-relative+0":"оваа седмица","field-day-relative+2":"задутре","field-week-narrow-relative+1":"следната седмица","field-wed-narrow-relative+-1":"минатата сре.","field-year-narrow":"год.","field-era-short":"ера","field-year-narrow-relative+0":"оваа год.","field-tue-relative+0":"овој вторник","field-year-narrow-relative+1":"следната год.","field-tue-relative+1":"следниот вторник","field-weekdayOfMonth":"ден од месецот","field-second-short":"сек.","dayPeriods-format-narrow-am":"претпл.","dateFormatItem-MMMd":"dd MMM","field-weekdayOfMonth-narrow":"ден од мес.","dayPeriods-format-abbr-am":"претпл.","field-week-relative+0":"оваа седмица","field-month-relative+0":"овој месец","field-week-relative+1":"следната седмица","field-month-relative+1":"следниот месец","field-sun-narrow-relative+0":"оваа нед.","field-mon-short-relative+0":"овој пон.","field-sun-narrow-relative+1":"следната нед.","field-mon-short-relative+1":"следниот пон.","field-second-relative+0":"сега","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-weekOfMonth":"седмица од месецот","dayPeriods-standAlone-abbr-pm":"попл.","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, dd MMM y 'г'. G","dateFormatItem-yyyyMd":"dd.M.y G","field-day":"ден","field-dayOfYear-short":"ден од год.","field-year-relative+-1":"минатата година","dayPeriods-format-wide-am":"претпладне","field-sat-short-relative+-1":"минатата саб.","field-hour-relative+0":"часов","dateFormatItem-yyyyMEd":"E, dd.M.y G","field-wed-relative+-1":"минатата среда","field-sat-narrow-relative+-1":"минатата саб.","field-second":"секунда","days-standAlone-narrow":["н","п","в","с","ч","п","с"],"dayPeriods-standAlone-wide-pm":"попладне","dateFormat-long":"dd MMMM y 'г'. G","dateFormatItem-GyMMMd":"dd MMM y 'г'. G","field-quarter":"тромесечје","field-week-short":"сед.","field-day-narrow-relative+0":"денес","field-day-narrow-relative+1":"утре","field-day-narrow-relative+2":"задутре","quarters-standAlone-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"days-format-narrow":["н","п","в","с","ч","п","с"],"field-tue-short-relative+0":"овој вто.","field-tue-short-relative+1":"следниот вто.","field-month-short-relative+-1":"минатиот месец","field-mon-relative+-1":"минатиот понеделник","dateFormatItem-GyMMM":"MMM y 'г'. G","field-month":"месец","field-day-narrow":"ден","field-minute-short":"мин.","field-dayperiod":"претпладне/попладне","field-sat-short-relative+0":"оваа саб.","field-sat-short-relative+1":"следната саб.","dayPeriods-format-narrow-pm":"попл.","dateFormat-medium":"dd.M.y G","dateFormatItem-yyyyMMMM":"MMMM y 'г'. G","quarters-standAlone-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"dayPeriods-format-abbr-pm":"попл.","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"сек.","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","field-day-narrow-relative+-1":"вчера","field-year-short":"год.","field-day-narrow-relative+-2":"завчера","months-format-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-quarter-relative+-1":"последното тромесечје","dateFormatItem-yyyyMMMd":"dd MMM y 'г'. G","field-dayperiod-narrow":"претпладне/попладне","dayPeriods-standAlone-narrow-am":"претпл.","field-week-narrow-relative+-1":"минатата седмица","days-format-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"dayPeriods-format-wide-pm":"попладне","field-dayOfYear":"ден од годината","field-sat-relative+-1":"минатата сабота","dateFormatItem-Md":"dd.M","field-hour":"час","months-format-wide":["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],"dateFormat-full":"EEEE, dd MMMM y 'г'. G","field-month-relative+-1":"минатиот месец","field-quarter-short":"тромес.","field-sat-narrow-relative+0":"оваа саб.","field-fri-relative+0":"овој петок","field-sat-narrow-relative+1":"следната саб.","field-fri-relative+1":"следниот петок","field-month-narrow-relative+0":"овој месец","field-month-narrow-relative+1":"следниот месец","field-sun-short-relative+0":"оваа нед.","field-sun-short-relative+1":"следната нед.","field-week-relative+-1":"минатата седмица","field-quarter-short-relative+-1":"последното тромесечје","months-format-abbr":["јан.","фев.","мар.","апр.","мај","јун.","јул.","авг.","септ.","окт.","ноем.","дек."],"field-quarter-relative+0":"ова тромесечје","field-minute-relative+0":"оваа минута","field-quarter-relative+1":"следното тромесечје","field-wed-short-relative+-1":"минатата сре.","dateFormat-short":"dd.M.y GGGGG","field-thu-short-relative+-1":"минатиот чет.","field-year-narrow-relative+-1":"минатата год.","days-standAlone-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"dateFormatItem-yyyyMMMEd":"E, dd MMM y 'г'. G","field-mon-narrow-relative+-1":"минатиот пон.","dateFormatItem-MMMMd":"dd MMMM","field-thu-narrow-relative+-1":"минатиот чет.","dateFormatItem-E":"E","field-tue-narrow-relative+-1":"минатиот вто.","field-weekOfMonth-short":"седмица од месецот","dateFormatItem-yyyy":"y 'г'. G","dayPeriods-standAlone-narrow-pm":"попл.","field-wed-short-relative+0":"оваа сре.","months-standAlone-wide":["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],"field-wed-short-relative+1":"следната сре.","field-sun-relative+-1":"минатата недела","dateFormatItem-MMMMEd":"E, dd MMMM","days-standAlone-abbr":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"field-weekday":"ден од неделата","field-day-short-relative+0":"денес","field-quarter-narrow-relative+0":"ова тромесечје","field-day-short-relative+1":"утре","field-sat-relative+0":"оваа сабота","field-quarter-narrow-relative+1":"следното тромесечје","field-day-short-relative+2":"задутре","field-sat-relative+1":"следната сабота","field-week-short-relative+0":"оваа седмица","field-week-short-relative+1":"следната седмица","months-standAlone-abbr":["јан.","фев.","мар.","апр.","мај","јун.","јул.","авг.","септ.","окт.","ноем.","дек."],"field-dayOfYear-narrow":"ден од год.","field-month-short-relative+0":"овој месец","field-month-short-relative+1":"следниот месец","field-weekdayOfMonth-short":"ден од мес.","dateFormatItem-MEd":"E, dd.M","field-zone-narrow":"зона","dateFormatItem-y":"y 'г'. G","field-thu-narrow-relative+0":"овој чет.","field-sun-narrow-relative+-1":"минатата нед.","field-mon-short-relative+-1":"минатиот пон.","field-thu-narrow-relative+1":"следниот чет.","field-thu-relative+0":"овој четврток","field-thu-relative+1":"следниот четврток","field-fri-short-relative+-1":"минатиот пет.","field-thu-relative+-1":"минатиот четврток","field-week":"седмица","quarters-format-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"оваа сре.","field-wed-narrow-relative+1":"следната сре.","field-quarter-narrow-relative+-1":"последното тромесечје","field-year-short-relative+0":"оваа год.","dateFormatItem-yyyyMMM":"MMM y 'г'. G","field-dayperiod-short":"претпладне/попладне","field-year-short-relative+1":"следната год.","field-fri-short-relative+0":"овој пет.","field-fri-short-relative+1":"следниот пет.","days-standAlone-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"field-week-short-relative+-1":"минатата седмица","dateFormatItem-yyyyQQQQ":"QQQ y G","field-hour-short":"ч.","field-zone-short":"зона","quarters-format-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"field-month-narrow":"мес.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"минатиот пет.","field-year-relative+0":"оваа година","field-year-relative+1":"следната година","field-era-narrow":"ера","field-fri-relative+-1":"минатиот петок","field-tue-short-relative+-1":"минатиот вто.","field-minute-narrow":"мин.","days-format-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"field-mon-narrow-relative+0":"овој пон.","field-mon-narrow-relative+1":"следниот пон.","field-year-short-relative+-1":"минатата год.","field-zone":"временска зона","dateFormatItem-MMMEd":"E, dd MMM","field-weekOfMonth-narrow":"седмица од месецот","field-weekday-narrow":"ден во неделата","field-quarter-narrow":"тромес.","field-sun-short-relative+-1":"минатата нед.","field-day-relative+-1":"вчера","dayPeriods-standAlone-abbr-am":"претпл.","field-day-relative+-2":"завчера","field-weekday-short":"ден во неделата","days-format-abbr":["нед.","пон.","вт.","сре.","чет.","пет.","саб."],"field-sun-relative+0":"оваа недела","field-sun-relative+1":"следната недела","dateFormatItem-Gy":"y 'г'. G","field-day-short":"ден","field-week-narrow":"сед.","field-era":"ера","field-fri-narrow-relative+0":"овој пет.","field-fri-narrow-relative+1":"следниот пет.","dayPeriods-standAlone-wide-am":"претпладне"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/coptic.js b/lib/dojo/cldr/nls/mk/coptic.js
new file mode 100644
index 000000000..953a6807d
--- /dev/null
+++ b/lib/dojo/cldr/nls/mk/coptic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/mk/coptic",{"field-quarter-short-relative+0":"ова тромесечје","field-quarter-short-relative+1":"следното тромесечје","field-tue-relative+-1":"минатиот вторник","field-year":"година","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","field-minute":"минута","field-month-narrow-relative+-1":"минатиот месец","field-tue-narrow-relative+0":"овој вто.","field-tue-narrow-relative+1":"следниот вто.","field-thu-short-relative+0":"овој чет.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"следниот чет.","field-day-relative+0":"денес","field-day-short-relative+-2":"завчера","field-day-relative+1":"утре","field-week-narrow-relative+0":"оваа седмица","field-day-relative+2":"задутре","field-week-narrow-relative+1":"следната седмица","field-wed-narrow-relative+-1":"минатата сре.","field-year-narrow":"год.","field-era-short":"ера","field-year-narrow-relative+0":"оваа год.","field-tue-relative+0":"овој вторник","field-year-narrow-relative+1":"следната год.","field-tue-relative+1":"следниот вторник","field-weekdayOfMonth":"ден од месецот","field-second-short":"сек.","field-weekdayOfMonth-narrow":"ден од мес.","field-week-relative+0":"оваа седмица","field-month-relative+0":"овој месец","field-week-relative+1":"следната седмица","field-month-relative+1":"следниот месец","field-sun-narrow-relative+0":"оваа нед.","field-mon-short-relative+0":"овој пон.","field-sun-narrow-relative+1":"следната нед.","field-mon-short-relative+1":"следниот пон.","field-second-relative+0":"сега","eraNames":["ЕРА0","ЕРА1"],"field-weekOfMonth":"седмица од месецот","field-month-short":"мес.","field-day":"ден","field-dayOfYear-short":"ден од год.","field-year-relative+-1":"минатата година","field-sat-short-relative+-1":"минатата саб.","field-hour-relative+0":"часов","field-wed-relative+-1":"минатата среда","field-sat-narrow-relative+-1":"минатата саб.","field-second":"секунда","dateFormat-long":"dd MMMM y 'г'. G","field-quarter":"тромесечје","field-week-short":"сед.","field-day-narrow-relative+0":"денес","field-day-narrow-relative+1":"утре","field-day-narrow-relative+2":"задутре","field-tue-short-relative+0":"овој вто.","field-tue-short-relative+1":"следниот вто.","field-month-short-relative+-1":"минатиот месец","field-mon-relative+-1":"минатиот понеделник","field-month":"месец","field-day-narrow":"ден","field-minute-short":"мин.","field-dayperiod":"претпладне/попладне","field-sat-short-relative+0":"оваа саб.","field-sat-short-relative+1":"следната саб.","dateFormat-medium":"dd.M.y G","eraAbbr":["ЕРА0","ЕРА1"],"field-second-narrow":"сек.","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","field-day-narrow-relative+-1":"вчера","field-year-short":"год.","field-day-narrow-relative+-2":"завчера","field-quarter-relative+-1":"последното тромесечје","field-dayperiod-narrow":"претпладне/попладне","field-week-narrow-relative+-1":"минатата седмица","field-dayOfYear":"ден од годината","field-sat-relative+-1":"минатата сабота","field-hour":"час","months-format-wide":["тут","баба","хатор","кијак","тоба","амшир","барамхат","барамуда","башанс","паона","епеп","месра","наси"],"dateFormat-full":"EEEE, dd MMMM y 'г'. G","field-month-relative+-1":"минатиот месец","field-quarter-short":"тромес.","field-sat-narrow-relative+0":"оваа саб.","field-fri-relative+0":"овој петок","field-sat-narrow-relative+1":"следната саб.","field-fri-relative+1":"следниот петок","field-month-narrow-relative+0":"овој месец","field-month-narrow-relative+1":"следниот месец","field-sun-short-relative+0":"оваа нед.","field-sun-short-relative+1":"следната нед.","field-week-relative+-1":"минатата седмица","field-quarter-short-relative+-1":"последното тромесечје","months-format-abbr":["тут","баба","хатор","кијак","тоба","амшир","барамхат","барамуда","башанс","паона","епеп","месра","наси"],"field-quarter-relative+0":"ова тромесечје","field-minute-relative+0":"оваа минута","field-quarter-relative+1":"следното тромесечје","field-wed-short-relative+-1":"минатата сре.","dateFormat-short":"dd.M.y GGGGG","field-thu-short-relative+-1":"минатиот чет.","field-year-narrow-relative+-1":"минатата год.","field-mon-narrow-relative+-1":"минатиот пон.","field-thu-narrow-relative+-1":"минатиот чет.","field-tue-narrow-relative+-1":"минатиот вто.","field-weekOfMonth-short":"седмица од месецот","field-wed-short-relative+0":"оваа сре.","months-standAlone-wide":["тут","баба","хатор","кијак","тоба","амшир","барамхат","барамуда","башанс","паона","епеп","месра","наси"],"field-wed-short-relative+1":"следната сре.","field-sun-relative+-1":"минатата недела","field-weekday":"ден од неделата","field-day-short-relative+0":"денес","field-quarter-narrow-relative+0":"ова тромесечје","field-day-short-relative+1":"утре","field-sat-relative+0":"оваа сабота","field-quarter-narrow-relative+1":"следното тромесечје","field-day-short-relative+2":"задутре","field-sat-relative+1":"следната сабота","field-week-short-relative+0":"оваа седмица","field-week-short-relative+1":"следната седмица","months-standAlone-abbr":["тут","баба","хатор","кијак","тоба","амшир","барамхат","барамуда","башанс","паона","епеп","месра","наси"],"field-dayOfYear-narrow":"ден од год.","field-month-short-relative+0":"овој месец","field-month-short-relative+1":"следниот месец","field-weekdayOfMonth-short":"ден од мес.","field-zone-narrow":"зона","field-thu-narrow-relative+0":"овој чет.","field-thu-narrow-relative+1":"следниот чет.","field-sun-narrow-relative+-1":"минатата нед.","field-mon-short-relative+-1":"минатиот пон.","field-thu-relative+0":"овој четврток","field-thu-relative+1":"следниот четврток","field-fri-short-relative+-1":"минатиот пет.","field-thu-relative+-1":"минатиот четврток","field-week":"седмица","field-wed-narrow-relative+0":"оваа сре.","field-wed-narrow-relative+1":"следната сре.","field-quarter-narrow-relative+-1":"последното тромесечје","field-year-short-relative+0":"оваа год.","field-dayperiod-short":"претпладне/попладне","field-year-short-relative+1":"следната год.","field-fri-short-relative+0":"овој пет.","field-fri-short-relative+1":"следниот пет.","field-week-short-relative+-1":"минатата седмица","field-hour-short":"ч.","field-zone-short":"зона","field-month-narrow":"мес.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"минатиот пет.","field-year-relative+0":"оваа година","field-year-relative+1":"следната година","field-era-narrow":"ера","field-fri-relative+-1":"минатиот петок","eraNarrow":["ЕРА0","ЕРА1"],"field-tue-short-relative+-1":"минатиот вто.","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"овој пон.","field-mon-narrow-relative+1":"следниот пон.","field-year-short-relative+-1":"минатата год.","field-zone":"временска зона","field-weekOfMonth-narrow":"седмица од месецот","field-weekday-narrow":"ден во неделата","field-quarter-narrow":"тромес.","field-sun-short-relative+-1":"минатата нед.","field-day-relative+-1":"вчера","field-day-relative+-2":"завчера","field-weekday-short":"ден во неделата","field-sun-relative+0":"оваа недела","field-sun-relative+1":"следната недела","field-day-short":"ден","field-week-narrow":"сед.","field-era":"ера","field-fri-narrow-relative+0":"овој пет.","field-fri-narrow-relative+1":"следниот пет."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/currency.js b/lib/dojo/cldr/nls/mk/currency.js
index bd326f63c..4f2b97017 100644
--- a/lib/dojo/cldr/nls/mk/currency.js
+++ b/lib/dojo/cldr/nls/mk/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/mk/currency",{"HKD_displayName":"Хонгконшки долар","CHF_displayName":"Швајцарски Франк","JPY_symbol":"JPY","CAD_displayName":"Канадски долар","HKD_symbol":"HKD","CNY_displayName":"Кинески јуан","USD_symbol":"US$","AUD_displayName":"Австралиски долар","JPY_displayName":"Јапонски јен","CAD_symbol":"CA$","USD_displayName":"Американски долар","CNY_symbol":"CNY","GBP_displayName":"Британска Фунта","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"Евро"}); \ No newline at end of file
+define("dojo/cldr/nls/mk/currency",{"HKD_displayName":"Хонгконшки долар","CNY_displayName":"Кинески јуан","JPY_displayName":"Јапонски јен","JPY_symbol":"JPY","USD_displayName":"Американски долар","CAD_symbol":"CA$","GBP_displayName":"Британска фунта","CHF_displayName":"Швајцарски франк","CNY_symbol":"CNY","EUR_displayName":"Евро","GBP_symbol":"GBP","CAD_displayName":"Канадски долар","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"Австралиски долар","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/ethiopic.js b/lib/dojo/cldr/nls/mk/ethiopic.js
new file mode 100644
index 000000000..927c4cd17
--- /dev/null
+++ b/lib/dojo/cldr/nls/mk/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/mk/ethiopic",{"field-quarter-short-relative+0":"ова тромесечје","field-quarter-short-relative+1":"следното тромесечје","field-tue-relative+-1":"минатиот вторник","field-year":"година","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","field-minute":"минута","field-month-narrow-relative+-1":"минатиот месец","field-tue-narrow-relative+0":"овој вто.","field-tue-narrow-relative+1":"следниот вто.","field-thu-short-relative+0":"овој чет.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"следниот чет.","field-day-relative+0":"денес","field-day-short-relative+-2":"завчера","field-day-relative+1":"утре","field-week-narrow-relative+0":"оваа седмица","field-day-relative+2":"задутре","field-week-narrow-relative+1":"следната седмица","field-wed-narrow-relative+-1":"минатата сре.","field-year-narrow":"год.","field-era-short":"ера","field-year-narrow-relative+0":"оваа год.","field-tue-relative+0":"овој вторник","field-year-narrow-relative+1":"следната год.","field-tue-relative+1":"следниот вторник","field-weekdayOfMonth":"ден од месецот","field-second-short":"сек.","field-weekdayOfMonth-narrow":"ден од мес.","field-week-relative+0":"оваа седмица","field-month-relative+0":"овој месец","field-week-relative+1":"следната седмица","field-month-relative+1":"следниот месец","field-sun-narrow-relative+0":"оваа нед.","field-mon-short-relative+0":"овој пон.","field-sun-narrow-relative+1":"следната нед.","field-mon-short-relative+1":"следниот пон.","field-second-relative+0":"сега","eraNames":["ЕРА0","ЕРА1"],"field-weekOfMonth":"седмица од месецот","field-month-short":"мес.","field-day":"ден","field-dayOfYear-short":"ден од год.","field-year-relative+-1":"минатата година","field-sat-short-relative+-1":"минатата саб.","field-hour-relative+0":"часов","field-wed-relative+-1":"минатата среда","field-sat-narrow-relative+-1":"минатата саб.","field-second":"секунда","field-quarter":"тромесечје","field-week-short":"сед.","field-day-narrow-relative+0":"денес","field-day-narrow-relative+1":"утре","field-day-narrow-relative+2":"задутре","field-tue-short-relative+0":"овој вто.","field-tue-short-relative+1":"следниот вто.","field-month-short-relative+-1":"минатиот месец","field-mon-relative+-1":"минатиот понеделник","field-month":"месец","field-day-narrow":"ден","field-minute-short":"мин.","field-dayperiod":"претпладне/попладне","field-sat-short-relative+0":"оваа саб.","field-sat-short-relative+1":"следната саб.","eraAbbr":["ЕРА0","ЕРА1"],"field-second-narrow":"сек.","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","field-day-narrow-relative+-1":"вчера","field-year-short":"год.","field-day-narrow-relative+-2":"завчера","field-quarter-relative+-1":"последното тромесечје","field-dayperiod-narrow":"претпладне/попладне","field-week-narrow-relative+-1":"минатата седмица","field-dayOfYear":"ден од годината","field-sat-relative+-1":"минатата сабота","field-hour":"час","months-format-wide":["мескерем","текемт","хедар","тахсас","тер","јекатит","мегабит","миазиа","генбот","сене","хамле","нехасе","пагумен"],"field-month-relative+-1":"минатиот месец","field-quarter-short":"тромес.","field-sat-narrow-relative+0":"оваа саб.","field-fri-relative+0":"овој петок","field-sat-narrow-relative+1":"следната саб.","field-fri-relative+1":"следниот петок","field-month-narrow-relative+0":"овој месец","field-month-narrow-relative+1":"следниот месец","field-sun-short-relative+0":"оваа нед.","field-sun-short-relative+1":"следната нед.","field-week-relative+-1":"минатата седмица","field-quarter-short-relative+-1":"последното тромесечје","months-format-abbr":["мескерем","текемт","хедар","тахсас","тер","јекатит","мегабит","миазиа","генбот","сене","хамле","нехасе","пагумен"],"field-quarter-relative+0":"ова тромесечје","field-minute-relative+0":"оваа минута","field-quarter-relative+1":"следното тромесечје","field-wed-short-relative+-1":"минатата сре.","field-thu-short-relative+-1":"минатиот чет.","field-year-narrow-relative+-1":"минатата год.","field-mon-narrow-relative+-1":"минатиот пон.","field-thu-narrow-relative+-1":"минатиот чет.","field-tue-narrow-relative+-1":"минатиот вто.","field-weekOfMonth-short":"седмица од месецот","field-wed-short-relative+0":"оваа сре.","months-standAlone-wide":["мескерем","текемт","хедар","тахсас","тер","јекатит","мегабит","миазиа","генбот","сене","хамле","нехасе","пагумен"],"field-wed-short-relative+1":"следната сре.","field-sun-relative+-1":"минатата недела","field-weekday":"ден од неделата","field-day-short-relative+0":"денес","field-quarter-narrow-relative+0":"ова тромесечје","field-day-short-relative+1":"утре","field-sat-relative+0":"оваа сабота","field-quarter-narrow-relative+1":"следното тромесечје","field-day-short-relative+2":"задутре","field-sat-relative+1":"следната сабота","field-week-short-relative+0":"оваа седмица","field-week-short-relative+1":"следната седмица","months-standAlone-abbr":["мескерем","текемт","хедар","тахсас","тер","јекатит","мегабит","миазиа","генбот","сене","хамле","нехасе","пагумен"],"field-dayOfYear-narrow":"ден од год.","field-month-short-relative+0":"овој месец","field-month-short-relative+1":"следниот месец","field-weekdayOfMonth-short":"ден од мес.","field-zone-narrow":"зона","field-thu-narrow-relative+0":"овој чет.","field-thu-narrow-relative+1":"следниот чет.","field-sun-narrow-relative+-1":"минатата нед.","field-mon-short-relative+-1":"минатиот пон.","field-thu-relative+0":"овој четврток","field-thu-relative+1":"следниот четврток","field-fri-short-relative+-1":"минатиот пет.","field-thu-relative+-1":"минатиот четврток","field-week":"седмица","field-wed-narrow-relative+0":"оваа сре.","field-wed-narrow-relative+1":"следната сре.","field-quarter-narrow-relative+-1":"последното тромесечје","field-year-short-relative+0":"оваа год.","field-dayperiod-short":"претпладне/попладне","field-year-short-relative+1":"следната год.","field-fri-short-relative+0":"овој пет.","field-fri-short-relative+1":"следниот пет.","field-week-short-relative+-1":"минатата седмица","field-hour-short":"ч.","field-zone-short":"зона","field-month-narrow":"мес.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"минатиот пет.","field-year-relative+0":"оваа година","field-year-relative+1":"следната година","field-era-narrow":"ера","field-fri-relative+-1":"минатиот петок","eraNarrow":["ЕРА0","ЕРА1"],"field-tue-short-relative+-1":"минатиот вто.","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"овој пон.","field-mon-narrow-relative+1":"следниот пон.","field-year-short-relative+-1":"минатата год.","field-zone":"временска зона","field-weekOfMonth-narrow":"седмица од месецот","field-weekday-narrow":"ден во неделата","field-quarter-narrow":"тромес.","field-sun-short-relative+-1":"минатата нед.","field-day-relative+-1":"вчера","field-day-relative+-2":"завчера","field-weekday-short":"ден во неделата","field-sun-relative+0":"оваа недела","field-sun-relative+1":"следната недела","field-day-short":"ден","field-week-narrow":"сед.","field-era":"ера","field-fri-narrow-relative+0":"овој пет.","field-fri-narrow-relative+1":"следниот пет."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/generic.js b/lib/dojo/cldr/nls/mk/generic.js
index aa309ae83..4e5016d89 100644
--- a/lib/dojo/cldr/nls/mk/generic.js
+++ b/lib/dojo/cldr/nls/mk/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/mk/generic",{"field-second-relative+0":"сега","field-weekday":"Ден во неделата","field-wed-relative+0":"оваа среда","dateFormatItem-GyMMMEd":"E, dd MMM y 'г'. G","dateFormatItem-MMMEd":"E, dd MMM","field-wed-relative+1":"следната среда","field-tue-relative+-1":"минатиот вторник","dateFormat-long":"dd MMMM y 'г'. G","field-fri-relative+-1":"минатиот петок","field-wed-relative+-1":"минатата среда","dateFormatItem-yyyyQQQ":"G y QQQ","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE, dd MMMM y 'г'. G","dateFormatItem-yyyyMEd":"E, dd.M.y G","field-thu-relative+-1":"минатиот четврток","dateFormatItem-Md":"dd.M","field-era":"Ера","field-year":"година","dateFormatItem-yyyyMMMM":"MMMM y 'г'. G","field-hour":"Час","field-sat-relative+0":"оваа сабота","field-sat-relative+1":"следната сабота","field-day-relative+0":"денес","field-day-relative+1":"утре","field-thu-relative+0":"овој четврток","dateFormatItem-GyMMMd":"dd MMM y 'г'. G","field-day-relative+2":"задутре","field-thu-relative+1":"следниот четврток","dateFormatItem-H":"HH","dateFormatItem-Gy":"y 'г'. G","dateFormatItem-yyyyMMMEd":"E, dd MMM y 'г'. G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y 'г'. G","dateFormatItem-yyyyMMMd":"dd MMM y 'г'. G","dateFormatItem-MMMMd":"dd MMMM","field-sun-relative+0":"оваа недела","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"следната недела","field-minute":"Минута","field-dayperiod":"претпладне/попладне","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"вчера","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"завчера","dateFormatItem-MMMd":"dd MMM","dateFormatItem-MEd":"E, dd.M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"овој петок","field-fri-relative+1":"следниот петок","field-day":"ден","field-zone":"зона","dateFormatItem-y":"y 'г'. G","field-year-relative+-1":"минатата година","field-month-relative+-1":"минатиот месец","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"dd.M.y G","field-month":"Месец","dateFormatItem-MMM":"LLL","field-tue-relative+0":"овој вторник","field-tue-relative+1":"следниот вторник","dateFormatItem-MMMMEd":"E, dd MMMM","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","dateFormat-short":"dd.M.y GGGGG","field-second":"Секунда","field-sat-relative+-1":"минатата сабота","field-sun-relative+-1":"минатата недела","field-month-relative+0":"овој месец","field-month-relative+1":"следниот месец","dateFormatItem-Ed":"d E","field-week":"Недела","dateFormat-medium":"dd.M.y G","field-year-relative+0":"оваа година","field-week-relative+-1":"минатата седмица","dateFormatItem-yyyyM":"M.y G","field-year-relative+1":"следната година","dateFormatItem-yyyyQQQQ":"G y QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y 'г'. G","field-mon-relative+-1":"минатиот понеделник","dateFormatItem-yyyy":"y 'г'. G","field-week-relative+0":"оваа седмица","field-week-relative+1":"следната седмица"}); \ No newline at end of file
+define("dojo/cldr/nls/mk/generic",{"field-quarter-short-relative+0":"ова тромесечје","field-quarter-short-relative+1":"следното тромесечје","field-tue-relative+-1":"минатиот вторник","field-year":"година","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","dateFormatItem-ms":"mm:ss","field-minute":"минута","field-month-narrow-relative+-1":"минатиот месец","field-tue-narrow-relative+0":"овој вто.","field-tue-narrow-relative+1":"следниот вто.","field-day-short-relative+-1":"вчера","field-thu-short-relative+0":"овој чет.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"денес","field-day-short-relative+-2":"завчера","field-thu-short-relative+1":"следниот чет.","field-day-relative+1":"утре","field-week-narrow-relative+0":"оваа седмица","field-day-relative+2":"задутре","field-week-narrow-relative+1":"следната седмица","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"минатата сре.","field-year-narrow":"год.","field-era-short":"ера","field-year-narrow-relative+0":"оваа год.","field-tue-relative+0":"овој вторник","field-year-narrow-relative+1":"следната год.","field-tue-relative+1":"следниот вторник","field-weekdayOfMonth":"ден од месецот","field-second-short":"сек.","dateFormatItem-MMMd":"dd MMM","field-weekdayOfMonth-narrow":"ден од мес.","field-week-relative+0":"оваа седмица","field-month-relative+0":"овој месец","field-week-relative+1":"следната седмица","field-month-relative+1":"следниот месец","field-sun-narrow-relative+0":"оваа нед.","field-mon-short-relative+0":"овој пон.","field-sun-narrow-relative+1":"следната нед.","field-mon-short-relative+1":"следниот пон.","field-second-relative+0":"сега","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"седмица од месецот","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, dd MMM y 'г'. G","dateFormatItem-yyyyMd":"dd.M.y G","field-day":"ден","field-dayOfYear-short":"ден од год.","field-year-relative+-1":"минатата година","field-sat-short-relative+-1":"минатата саб.","field-hour-relative+0":"часов","dateFormatItem-yyyyMEd":"E, dd.M.y G","field-wed-relative+-1":"минатата среда","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"минатата саб.","field-second":"секунда","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"dd MMMM y 'г'. G","dateFormatItem-GyMMMd":"dd MMM y 'г'. G","field-quarter":"тромесечје","field-week-short":"сед.","field-day-narrow-relative+0":"денес","field-day-narrow-relative+1":"утре","field-day-narrow-relative+2":"задутре","field-tue-short-relative+0":"овој вто.","field-tue-short-relative+1":"следниот вто.","field-month-short-relative+-1":"минатиот месец","field-mon-relative+-1":"минатиот понеделник","dateFormatItem-GyMMM":"MMM y 'г'. G","field-month":"месец","field-day-narrow":"ден","dateFormatItem-MMM":"LLL","field-minute-short":"мин.","field-dayperiod":"претпладне/попладне","field-sat-short-relative+0":"оваа саб.","field-sat-short-relative+1":"следната саб.","dateFormat-medium":"dd.M.y G","dateFormatItem-yyyyMMMM":"MMMM y 'г'. G","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"сек.","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","field-day-narrow-relative+-1":"вчера","field-year-short":"год.","field-day-narrow-relative+-2":"завчера","field-quarter-relative+-1":"последното тромесечје","dateFormatItem-yyyyMMMd":"dd MMM y 'г'. G","field-dayperiod-narrow":"претпладне/попладне","field-week-narrow-relative+-1":"минатата седмица","field-dayOfYear":"ден од годината","field-sat-relative+-1":"минатата сабота","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"dd.M","field-hour":"час","dateFormat-full":"EEEE, dd MMMM y 'г'. G","field-month-relative+-1":"минатиот месец","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"тромес.","field-sat-narrow-relative+0":"оваа саб.","field-fri-relative+0":"овој петок","field-sat-narrow-relative+1":"следната саб.","field-fri-relative+1":"следниот петок","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"овој месец","field-month-narrow-relative+1":"следниот месец","field-sun-short-relative+0":"оваа нед.","field-sun-short-relative+1":"следната нед.","field-week-relative+-1":"минатата седмица","field-quarter-short-relative+-1":"последното тромесечје","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"ова тромесечје","field-minute-relative+0":"оваа минута","field-quarter-relative+1":"следното тромесечје","field-wed-short-relative+-1":"минатата сре.","dateFormat-short":"dd.M.y GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"минатата год.","field-thu-short-relative+-1":"минатиот чет.","dateFormatItem-yyyyMMMEd":"E, dd MMM y 'г'. G","field-mon-narrow-relative+-1":"минатиот пон.","dateFormatItem-MMMMd":"dd MMMM","field-thu-narrow-relative+-1":"минатиот чет.","dateFormatItem-E":"E","dateFormatItem-H":"HH","field-weekOfMonth-short":"седмица од месецот","field-tue-narrow-relative+-1":"минатиот вто.","dateFormatItem-yyyy":"y 'г'. G","dateFormatItem-M":"L","field-wed-short-relative+0":"оваа сре.","field-wed-short-relative+1":"следната сре.","field-sun-relative+-1":"минатата недела","dateFormatItem-MMMMEd":"E, dd MMMM","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"ден од неделата","field-day-short-relative+0":"денес","field-quarter-narrow-relative+0":"ова тромесечје","field-day-short-relative+1":"утре","field-sat-relative+0":"оваа сабота","field-quarter-narrow-relative+1":"следното тромесечје","dateFormatItem-h":"h a","field-day-short-relative+2":"задутре","field-sat-relative+1":"следната сабота","field-week-short-relative+0":"оваа седмица","field-week-short-relative+1":"следната седмица","field-dayOfYear-narrow":"ден од год.","field-month-short-relative+0":"овој месец","field-month-short-relative+1":"следниот месец","field-weekdayOfMonth-short":"ден од мес.","dateFormatItem-MEd":"E, dd.M","field-zone-narrow":"зона","dateFormatItem-y":"y 'г'. G","field-thu-narrow-relative+0":"овој чет.","field-sun-narrow-relative+-1":"минатата нед.","field-mon-short-relative+-1":"минатиот пон.","field-thu-narrow-relative+1":"следниот чет.","field-thu-relative+0":"овој четврток","field-thu-relative+1":"следниот четврток","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"минатиот пет.","field-thu-relative+-1":"минатиот четврток","field-week":"седмица","dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"оваа сре.","field-wed-narrow-relative+1":"следната сре.","field-quarter-narrow-relative+-1":"последното тромесечје","field-year-short-relative+0":"оваа год.","dateFormatItem-yyyyMMM":"MMM y 'г'. G","field-dayperiod-short":"претпладне/попладне","field-year-short-relative+1":"следната год.","field-fri-short-relative+0":"овој пет.","field-fri-short-relative+1":"следниот пет.","field-week-short-relative+-1":"минатата седмица","dateFormatItem-yyyyQQQQ":"QQQ y G","field-hour-short":"ч.","field-zone-short":"зона","field-month-narrow":"мес.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"минатиот пет.","field-year-relative+0":"оваа година","field-year-relative+1":"следната година","field-era-narrow":"ера","field-fri-relative+-1":"минатиот петок","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"минатиот вто.","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"овој пон.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"следниот пон.","field-year-short-relative+-1":"минатата год.","field-zone":"временска зона","dateFormatItem-MMMEd":"E, dd MMM","field-weekOfMonth-narrow":"седмица од месецот","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"ден во неделата","field-quarter-narrow":"тромес.","field-sun-short-relative+-1":"минатата нед.","field-day-relative+-1":"вчера","field-day-relative+-2":"завчера","field-weekday-short":"ден во неделата","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"оваа недела","field-sun-relative+1":"следната недела","dateFormatItem-Gy":"y 'г'. G","field-day-short":"ден","field-week-narrow":"сед.","field-era":"ера","field-fri-narrow-relative+0":"овој пет.","field-fri-narrow-relative+1":"следниот пет."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/gregorian.js b/lib/dojo/cldr/nls/mk/gregorian.js
index 0ecb35446..d88f9987b 100644
--- a/lib/dojo/cldr/nls/mk/gregorian.js
+++ b/lib/dojo/cldr/nls/mk/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/mk/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"months-format-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-second-relative+0":"сега","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Ден во неделата","dateFormatItem-yQQQ":"QQQ y 'г'.","dateFormatItem-yMEd":"E, d.M.y","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","dateFormatItem-GyMMMEd":"E, dd MMM y G","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["пр. н.е.","н.е."],"field-tue-relative+-1":"минатиот вторник","days-format-short":["нед.","пон.","вт.","сре.","чет.","пет.","саб."],"dateFormat-long":"dd MMMM y","field-fri-relative+-1":"минатиот петок","field-wed-relative+-1":"минатата среда","months-format-wide":["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"попладне","dateFormat-full":"EEEE, dd MMMM y","field-thu-relative+-1":"минатиот четврток","dateFormatItem-Md":"d.M","dateFormatItem-yMd":"d.M.y","field-era":"Ера","dateFormatItem-yM":"M.y","months-standAlone-wide":["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],"timeFormat-short":"HH:mm","quarters-format-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"dateFormatItem-yQQQQ":"QQQQ y 'г'.","timeFormat-long":"HH:mm:ss z","field-year":"година","dateFormatItem-yMMM":"MMM y 'г'.","field-hour":"Час","months-format-abbr":["јан.","фев.","мар.","апр.","мај","јун.","јул.","авг.","септ.","окт.","ноем.","дек."],"field-sat-relative+0":"оваа сабота","field-sat-relative+1":"следната сабота","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"денес","field-thu-relative+0":"овој четврток","field-day-relative+1":"утре","field-thu-relative+1":"следниот четврток","dateFormatItem-GyMMMd":"dd MMM y G","field-day-relative+2":"задутре","dateFormatItem-H":"HH","months-standAlone-abbr":["јан.","фев.","мар.","апр.","мај","јун.","јул.","авг.","септ.","окт.","ноем.","дек."],"quarters-format-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"quarters-standAlone-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"оваа недела","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"следната недела","quarters-standAlone-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"eraAbbr":["пр.н.е.","н.е."],"field-minute":"Минута","field-dayperiod":"претпладне/попладне","days-standAlone-abbr":["нед.","пон.","вт.","сре.","чет.","пет.","саб."],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"вчера","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"завчера","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d.M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"овој петок","dateFormatItem-yMMMM":"MMMM y 'г'.","field-fri-relative+1":"следниот петок","field-day":"ден","days-format-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"dateFormatItem-Mdd":"dd.M","field-zone":"зона","dateFormatItem-y":"y","months-standAlone-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-year-relative+-1":"минатата година","field-month-relative+-1":"минатиот месец","dateFormatItem-hm":"h:mm a","days-format-abbr":["нед.","пон.","вт.","сре.","чет.","пет.","саб."],"dateFormatItem-yMMMd":"d MMM y 'г'.","eraNames":["пред нашата ера","од нашата ера"],"days-format-narrow":["н","п","в","с","ч","п","с"],"days-standAlone-narrow":["н","п","в","с","ч","п","с"],"dateFormatItem-MMM":"LLL","field-month":"Месец","field-tue-relative+0":"овој вторник","field-tue-relative+1":"следниот вторник","dayPeriods-format-wide-am":"претпладне","dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","dateFormat-short":"dd.M.yy","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"Секунда","field-sat-relative+-1":"минатата сабота","dateFormatItem-yMMMEd":"E, d MMM y 'г'.","field-sun-relative+-1":"минатата недела","field-month-relative+0":"овој месец","field-month-relative+1":"следниот месец","dateFormatItem-Ed":"E, d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Недела","dateFormat-medium":"dd.M.y","field-year-relative+0":"оваа година","field-week-relative+-1":"минатата седмица","field-year-relative+1":"следната година","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"минатиот понеделник","field-week-relative+0":"оваа седмица","field-week-relative+1":"следната седмица"}); \ No newline at end of file
+define("dojo/cldr/nls/mk/gregorian",{"dateFormatItem-yMMMM":"MMMM y 'г'.","field-thu-narrow-relative+0":"овој чет.","field-thu-narrow-relative+1":"следниот чет.","field-sun-narrow-relative+0":"оваа нед.","field-sun-narrow-relative+1":"следната нед.","months-format-wide":["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],"dayPeriods-standAlone-abbr-pm":"попл.","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"овој пет.","field-fri-narrow-relative+1":"следниот пет.","eraNarrow":"н.е.","dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM y 'г'.","dayPeriods-format-abbr-night1":"ноќе","dayPeriods-format-narrow-evening1":"веч.","days-standAlone-narrow":["н","п","в","с","ч","п","с"],"days-standAlone-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"dayPeriods-format-abbr-afternoon1":"попладне","dayPeriods-format-wide-evening1":"навечер","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"минатата сре.","dayPeriods-standAlone-wide-evening1":"навечер","days-format-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"field-month-short-relative+0":"овој месец","field-month-short-relative+1":"следниот месец","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"навечер","dayPeriods-standAlone-abbr-afternoon1":"попл.","field-thu-relative+0":"овој четврток","dayPeriods-standAlone-abbr-night1":"по полноќ","field-thu-relative+1":"следниот четврток","dayPeriods-format-wide-am":"претпладне","field-fri-relative+0":"овој петок","field-fri-relative+1":"следниот петок","dateFormatItem-yMd":"d.M.y","field-thu-narrow-relative+-1":"минатиот чет.","field-quarter-relative+0":"ова тромесечје","field-quarter-relative+1":"следното тромесечје","field-sun-short-relative+0":"оваа нед.","timeFormat-short":"HH:mm","field-sun-short-relative+1":"следната нед.","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"попл.","dateFormatItem-Md":"d.M","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"сед.","field-hour-relative+0":"часов","field-day-relative+-1":"вчера","field-day-relative+-2":"завчера","field-mon-narrow-relative+-1":"минатиот пон.","field-minute-narrow":"мин.","dateFormatItem-MMMMEd":"E, d MMMM","field-thu-short-relative+0":"овој чет.","field-mon-relative+0":"овој понеделник","field-thu-short-relative+1":"следниот чет.","field-mon-relative+1":"следниот понеделник","field-day-narrow-relative+0":"денес","field-era-short":"ера","field-day-narrow-relative+1":"утре","field-sat-narrow-relative+0":"оваа саб.","field-day-narrow-relative+2":"задутре","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"следната саб.","field-week-narrow-relative+0":"оваа седмица","field-week-narrow-relative+1":"следната седмица","field-wed-narrow-relative+0":"оваа сре.","field-wed-narrow-relative+1":"следната сре.","field-month":"месец","months-standAlone-wide":["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],"field-weekday-narrow":"ден во неделата","dayPeriods-standAlone-narrow-afternoon1":"попл.","field-year-relative+0":"оваа година","field-year-relative+1":"следната година","dayPeriods-format-abbr-evening1":"навечер","dayPeriods-format-abbr-noon":"напладне","dayPeriods-format-narrow-midnight":"полн.","dayPeriods-format-wide-midnight":"полноќ","field-tue-relative+0":"овој вторник","field-tue-relative+1":"следниот вторник","dayPeriods-standAlone-abbr-evening1":"навечер","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"на полноќ","field-year-narrow":"год.","dayPeriods-standAlone-abbr-noon":"напладне","field-tue-short-relative+0":"овој вто.","dayPeriods-standAlone-narrow-midnight":"полноќ","field-tue-short-relative+1":"следниот вто.","field-tue-narrow-relative+0":"овој вто.","field-tue-narrow-relative+1":"следниот вто.","dateTimeFormat-full":"{1}, 'во' {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","dateFormatItem-M":"L","field-wed-short-relative+0":"оваа сре.","field-fri-short-relative+0":"овој пет.","field-wed-short-relative+1":"следната сре.","field-fri-short-relative+1":"следниот пет.","field-weekOfMonth-short":"седмица од месецот","field-quarter-short-relative+-1":"последното тромесечје","field-year-short-relative+-1":"минатата год.","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"по полноќ","dateTimeFormat-medium":"{1}, 'во' {0}","field-quarter-narrow-relative+-1":"последното тромесечје","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"попл.","dateFormatItem-h":"h a","quarters-standAlone-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"field-weekOfMonth-narrow":"седмица од месецот","dateFormatItem-y":"y","field-minute-relative+0":"оваа минута","field-year-short-relative+0":"оваа год.","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"следната год.","field-weekday":"ден од неделата","dayPeriods-format-narrow-pm":"попл.","field-tue-narrow-relative+-1":"минатиот вто.","dateFormatItem-yMEd":"E, d.M.y","dayPeriods-standAlone-wide-night1":"по полноќ","field-year-narrow-relative+-1":"минатата год.","field-sat-relative+-1":"минатата сабота","dayPeriods-format-abbr-midnight":"полноќ","dayPeriods-format-narrow-morning1":"утро","dayPeriods-format-narrow-morning2":"претпл.","dayPeriods-format-wide-morning1":"наутро","dayPeriods-format-wide-morning2":"претпладне","dayPeriods-standAlone-abbr-midnight":"полноќ","dayPeriods-standAlone-narrow-pm":"попл.","dayPeriods-standAlone-wide-morning1":"наутро","field-mon-narrow-relative+0":"овој пон.","dayPeriods-standAlone-wide-morning2":"претпладне","field-mon-narrow-relative+1":"следниот пон.","field-second":"секунда","dateFormatItem-yMMMEd":"E, d MMM y 'г'.","field-year-relative+-1":"минатата година","field-weekdayOfMonth-short":"ден од мес.","dateFormat-short":"d.M.yy","eraNames":["пред нашата ера","од нашата ера"],"field-second-short":"сек.","field-thu-short-relative+-1":"минатиот чет.","field-zone":"временска зона","field-dayperiod-narrow":"претпладне/попладне","field-sun-short-relative+-1":"минатата нед.","dayPeriods-standAlone-narrow-morning1":"наутро","dayPeriods-standAlone-narrow-morning2":"претпл.","eraAbbr":["п.н.е.","н.е."],"field-week-short":"сед.","dayPeriods-standAlone-abbr-am":"претпл.","dayPeriods-standAlone-wide-pm":"попладне","dateFormatItem-ms":"mm:ss","field-day-relative+0":"денес","field-day-relative+1":"утре","field-day-relative+2":"задутре","field-day-short-relative+0":"денес","field-dayOfYear-short":"ден од год.","field-day-short-relative+1":"утре","dateFormat-long":"d MMMM y","field-day-short-relative+2":"задутре","field-sun-narrow-relative+-1":"минатата нед.","dayPeriods-format-wide-noon":"напладне","field-second-relative+0":"сега","field-quarter-relative+-1":"последното тромесечје","dayPeriods-format-narrow-night1":"ноќе","quarters-format-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"dayPeriods-standAlone-wide-noon":"напладне","dayPeriods-standAlone-narrow-night1":"по полноќ","field-week-relative+-1":"минатата седмица","dayPeriods-format-abbr-morning1":"наутро","field-month-relative+-1":"минатиот месец","dayPeriods-format-abbr-morning2":"претпладне","months-format-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-year":"година","field-era":"ера","dayPeriods-standAlone-abbr-morning1":"наутро","dayPeriods-standAlone-abbr-morning2":"претпл.","days-standAlone-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y 'г'.","field-day-short-relative+-1":"вчера","field-day-short-relative+-2":"завчера","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"час","field-dayOfYear-narrow":"ден од год.","field-quarter":"тромесечје","field-month-narrow-relative+0":"овој месец","field-month-narrow-relative+1":"следниот месец","field-day":"ден","field-mon-relative+-1":"минатиот понеделник","field-dayOfYear":"ден од годината","dateFormat-medium":"d.M.y","dateTimeFormat-short":"{1}, 'во' {0}","dateFormatItem-yMMM":"MMM y 'г'.","dateFormatItem-GyMMMd":"d MMM y G","dateFormatItem-MEd":"E, d.M","field-tue-short-relative+-1":"минатиот вто.","field-year-short":"год.","field-month-short":"мес.","dateFormatItem-MMMEd":"E, d MMM","dayPeriods-format-wide-afternoon1":"попладне","dateFormatItem-MMMd":"d MMM","dateFormatItem-Bh":"h B","months-format-abbr":["јан.","фев.","мар.","апр.","мај","јун.","јул.","авг.","септ.","окт.","ноем.","дек."],"dayPeriods-format-abbr-am":"претпл.","field-sat-relative+0":"оваа сабота","field-sat-relative+1":"следната сабота","dayPeriods-format-wide-pm":"попладне","days-standAlone-abbr":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"field-zone-short":"зона","field-week-short-relative+0":"оваа седмица","field-week-short-relative+1":"следната седмица","dayPeriods-standAlone-wide-afternoon1":"попладне","field-fri-short-relative+-1":"минатиот пет.","field-month-narrow":"мес.","dayPeriods-format-narrow-am":"претпл.","field-month-narrow-relative+-1":"минатиот месец","days-format-abbr":["нед.","пон.","вт.","сре.","чет.","пет.","саб."],"field-weekday-short":"ден во неделата","field-day-narrow-relative+-1":"вчера","field-day-narrow-relative+-2":"завчера","field-quarter-short":"тромес.","days-format-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"months-standAlone-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"days-format-narrow":["н","п","в","с","ч","п","с"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"тромес.","field-mon-short-relative+0":"овој пон.","field-mon-short-relative+1":"следниот пон.","field-dayperiod-short":"претпладне/попладне","dayPeriods-standAlone-narrow-am":"претпл.","field-week-narrow-relative+-1":"минатата седмица","field-thu-relative+-1":"минатиот четврток","field-fri-narrow-relative+-1":"минатиот пет.","field-mon-short-relative+-1":"минатиот пон.","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"ова тромесечје","field-quarter-short-relative+1":"следното тромесечје","dateFormatItem-Ed":"d E","field-wed-relative+-1":"минатата среда","field-weekOfMonth":"седмица од месецот","field-weekdayOfMonth-narrow":"ден од мес.","dayPeriods-standAlone-wide-am":"претпладне","dateFormatItem-yQQQ":"QQQ y 'г'.","field-fri-relative+-1":"минатиот петок","field-minute":"минута","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"field-day-short":"ден","field-dayperiod":"претпладне/попладне","field-hour-short":"ч.","months-standAlone-abbr":["јан.","фев.","мар.","апр.","мај","јун.","јул.","авг.","септ.","окт.","ноем.","дек."],"field-month-relative+0":"овој месец","field-second-narrow":"сек.","field-month-relative+1":"следниот месец","dateFormat-full":"EEEE, d MMMM y","field-era-narrow":"ера","field-sat-short-relative+-1":"минатата саб.","dayPeriods-format-narrow-noon":"напл.","field-week-short-relative+-1":"минатата седмица","dateTimeFormat-long":"{1}, 'во' {0}","dateFormatItem-yM":"M.y","field-sun-relative+-1":"минатата недела","field-wed-short-relative+-1":"минатата сре.","field-weekdayOfMonth":"ден од месецот","field-quarter-narrow-relative+0":"ова тромесечје","dateFormatItem-GyMMMEd":"E, d MMM y G","field-quarter-narrow-relative+1":"следното тромесечје","field-sat-short-relative+0":"оваа саб.","field-sat-short-relative+1":"следната саб.","field-hour-narrow":"ч.","field-year-narrow-relative+0":"оваа год.","field-year-narrow-relative+1":"следната год.","dateFormatItem-Gy":"y G","dateFormatItem-Mdd":"d.M","field-zone-narrow":"зона","dayPeriods-standAlone-narrow-noon":"пладне","field-tue-relative+-1":"минатиот вторник","field-minute-short":"мин.","dateFormatItem-yw":"w. 'седмица' 'од' Y","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"оваа седмица","field-week-relative+1":"следната седмица","dateFormatItem-MMM":"LLL","field-sun-relative+0":"оваа недела","field-sun-relative+1":"следната недела","field-sat-narrow-relative+-1":"минатата саб.","quarters-standAlone-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"dateFormatItem-MMMMW":"W. 'седмица' 'од' MMMM","field-month-short-relative+-1":"минатиот месец","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-week":"седмица","field-day-narrow":"ден"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/hebrew.js b/lib/dojo/cldr/nls/mk/hebrew.js
new file mode 100644
index 000000000..a39189d98
--- /dev/null
+++ b/lib/dojo/cldr/nls/mk/hebrew.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/mk/hebrew",{"field-quarter-short-relative+0":"ова тромесечје","field-quarter-short-relative+1":"следното тромесечје","field-tue-relative+-1":"минатиот вторник","field-year":"година","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","field-minute":"минута","field-month-narrow-relative+-1":"минатиот месец","field-tue-narrow-relative+0":"овој вто.","field-tue-narrow-relative+1":"следниот вто.","field-thu-short-relative+0":"овој чет.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"следниот чет.","field-day-relative+0":"денес","field-day-short-relative+-2":"завчера","field-day-relative+1":"утре","field-week-narrow-relative+0":"оваа седмица","field-day-relative+2":"задутре","field-week-narrow-relative+1":"следната седмица","field-wed-narrow-relative+-1":"минатата сре.","field-year-narrow":"год.","field-era-short":"ера","field-year-narrow-relative+0":"оваа год.","field-tue-relative+0":"овој вторник","field-year-narrow-relative+1":"следната год.","field-tue-relative+1":"следниот вторник","field-weekdayOfMonth":"ден од месецот","field-second-short":"сек.","dayPeriods-format-narrow-am":"претпл.","dateFormatItem-MMMd":"dd MMM","field-weekdayOfMonth-narrow":"ден од мес.","dayPeriods-format-abbr-am":"претпл.","field-week-relative+0":"оваа седмица","field-month-relative+0":"овој месец","field-week-relative+1":"следната седмица","field-month-relative+1":"следниот месец","field-sun-narrow-relative+0":"оваа нед.","field-mon-short-relative+0":"овој пон.","field-sun-narrow-relative+1":"следната нед.","field-mon-short-relative+1":"следниот пон.","field-second-relative+0":"сега","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"седмица од месецот","dayPeriods-standAlone-abbr-pm":"попл.","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, dd MMM y 'г'. G","dateFormatItem-yyyyMd":"dd.M.y G","field-day":"ден","field-dayOfYear-short":"ден од год.","field-year-relative+-1":"минатата година","dayPeriods-format-wide-am":"претпладне","field-sat-short-relative+-1":"минатата саб.","field-hour-relative+0":"часов","dateFormatItem-yyyyMEd":"E, dd.M.y G","field-wed-relative+-1":"минатата среда","field-sat-narrow-relative+-1":"минатата саб.","field-second":"секунда","days-standAlone-narrow":["н","п","в","с","ч","п","с"],"dayPeriods-standAlone-wide-pm":"попладне","dateFormat-long":"dd MMMM y 'г'. G","dateFormatItem-GyMMMd":"dd MMM y 'г'. G","field-quarter":"тромесечје","field-week-short":"сед.","field-day-narrow-relative+0":"денес","field-day-narrow-relative+1":"утре","field-day-narrow-relative+2":"задутре","quarters-standAlone-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"days-format-narrow":["н","п","в","с","ч","п","с"],"field-tue-short-relative+0":"овој вто.","field-tue-short-relative+1":"следниот вто.","field-month-short-relative+-1":"минатиот месец","field-mon-relative+-1":"минатиот понеделник","dateFormatItem-GyMMM":"MMM y 'г'. G","field-month":"месец","field-day-narrow":"ден","field-minute-short":"мин.","field-dayperiod":"претпладне/попладне","field-sat-short-relative+0":"оваа саб.","field-sat-short-relative+1":"следната саб.","dayPeriods-format-narrow-pm":"попл.","dateFormat-medium":"dd.M.y G","dateFormatItem-yyyyMMMM":"MMMM y 'г'. G","quarters-standAlone-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"dayPeriods-format-abbr-pm":"попл.","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"сек.","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","field-day-narrow-relative+-1":"вчера","field-year-short":"год.","field-day-narrow-relative+-2":"завчера","field-quarter-relative+-1":"последното тромесечје","dateFormatItem-yyyyMMMd":"dd MMM y 'г'. G","field-dayperiod-narrow":"претпладне/попладне","dayPeriods-standAlone-narrow-am":"претпл.","field-week-narrow-relative+-1":"минатата седмица","days-format-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"dayPeriods-format-wide-pm":"попладне","field-dayOfYear":"ден од годината","field-sat-relative+-1":"минатата сабота","dateFormatItem-Md":"dd.M","field-hour":"час","months-format-wide":["тишри","хешван","кислев","тевет","шеват","адар I","адар","нисан","ијар","сиван","тамуз","ав","елул"],"dateFormat-full":"EEEE, dd MMMM y 'г'. G","field-month-relative+-1":"минатиот месец","field-quarter-short":"тромес.","field-sat-narrow-relative+0":"оваа саб.","field-fri-relative+0":"овој петок","field-sat-narrow-relative+1":"следната саб.","field-fri-relative+1":"следниот петок","field-month-narrow-relative+0":"овој месец","field-month-narrow-relative+1":"следниот месец","field-sun-short-relative+0":"оваа нед.","field-sun-short-relative+1":"следната нед.","field-week-relative+-1":"минатата седмица","field-quarter-short-relative+-1":"последното тромесечје","months-format-abbr":["тишри","хешван","кислев","тевет","шеват","адар I","адар","нисан","ијар","сиван","тамуз","ав","елул"],"field-quarter-relative+0":"ова тромесечје","field-minute-relative+0":"оваа минута","field-quarter-relative+1":"следното тромесечје","field-wed-short-relative+-1":"минатата сре.","dateFormat-short":"dd.M.y GGGGG","field-thu-short-relative+-1":"минатиот чет.","field-year-narrow-relative+-1":"минатата год.","days-standAlone-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"dateFormatItem-yyyyMMMEd":"E, dd MMM y 'г'. G","field-mon-narrow-relative+-1":"минатиот пон.","dateFormatItem-MMMMd":"dd MMMM","field-thu-narrow-relative+-1":"минатиот чет.","dateFormatItem-E":"E","field-tue-narrow-relative+-1":"минатиот вто.","field-weekOfMonth-short":"седмица од месецот","dateFormatItem-yyyy":"y 'г'. G","dayPeriods-standAlone-narrow-pm":"попл.","field-wed-short-relative+0":"оваа сре.","months-standAlone-wide":["тишри","хешван","кислев","тевет","шеват","адар I","адар","нисан","ијар","сиван","тамуз","ав","елул"],"field-wed-short-relative+1":"следната сре.","field-sun-relative+-1":"минатата недела","dateFormatItem-MMMMEd":"E, dd MMMM","days-standAlone-abbr":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"months-format-abbr-leap":"адар II","field-weekday":"ден од неделата","field-day-short-relative+0":"денес","field-quarter-narrow-relative+0":"ова тромесечје","field-day-short-relative+1":"утре","field-sat-relative+0":"оваа сабота","field-quarter-narrow-relative+1":"следното тромесечје","field-day-short-relative+2":"задутре","field-sat-relative+1":"следната сабота","field-week-short-relative+0":"оваа седмица","field-week-short-relative+1":"следната седмица","months-standAlone-abbr":["тишри","хешван","кислев","тевет","шеват","адар I","адар","нисан","ијар","сиван","тамуз","ав","елул"],"months-format-wide-leap":"адар II","field-dayOfYear-narrow":"ден од год.","field-month-short-relative+0":"овој месец","field-month-short-relative+1":"следниот месец","field-weekdayOfMonth-short":"ден од мес.","dateFormatItem-MEd":"E, dd.M","field-zone-narrow":"зона","dateFormatItem-y":"y 'г'. G","field-thu-narrow-relative+0":"овој чет.","field-sun-narrow-relative+-1":"минатата нед.","field-mon-short-relative+-1":"минатиот пон.","field-thu-narrow-relative+1":"следниот чет.","field-thu-relative+0":"овој четврток","field-thu-relative+1":"следниот четврток","field-fri-short-relative+-1":"минатиот пет.","field-thu-relative+-1":"минатиот четврток","field-week":"седмица","quarters-format-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"оваа сре.","field-wed-narrow-relative+1":"следната сре.","field-quarter-narrow-relative+-1":"последното тромесечје","field-year-short-relative+0":"оваа год.","dateFormatItem-yyyyMMM":"MMM y 'г'. G","field-dayperiod-short":"претпладне/попладне","field-year-short-relative+1":"следната год.","field-fri-short-relative+0":"овој пет.","field-fri-short-relative+1":"следниот пет.","days-standAlone-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"field-week-short-relative+-1":"минатата седмица","months-standAlone-abbr-leap":"адар II","dateFormatItem-yyyyQQQQ":"QQQ y G","field-hour-short":"ч.","field-zone-short":"зона","quarters-format-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"field-month-narrow":"мес.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"минатиот пет.","field-year-relative+0":"оваа година","field-year-relative+1":"следната година","field-era-narrow":"ера","field-fri-relative+-1":"минатиот петок","field-tue-short-relative+-1":"минатиот вто.","field-minute-narrow":"мин.","days-format-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"field-mon-narrow-relative+0":"овој пон.","field-mon-narrow-relative+1":"следниот пон.","field-year-short-relative+-1":"минатата год.","field-zone":"временска зона","dateFormatItem-MMMEd":"E, dd MMM","field-weekOfMonth-narrow":"седмица од месецот","field-weekday-narrow":"ден во неделата","months-standAlone-wide-leap":"адар II","field-quarter-narrow":"тромес.","field-sun-short-relative+-1":"минатата нед.","field-day-relative+-1":"вчера","dayPeriods-standAlone-abbr-am":"претпл.","field-day-relative+-2":"завчера","field-weekday-short":"ден во неделата","days-format-abbr":["нед.","пон.","вт.","сре.","чет.","пет.","саб."],"field-sun-relative+0":"оваа недела","field-sun-relative+1":"следната недела","dateFormatItem-Gy":"y 'г'. G","field-day-short":"ден","field-week-narrow":"сед.","field-era":"ера","field-fri-narrow-relative+0":"овој пет.","field-fri-narrow-relative+1":"следниот пет.","dayPeriods-standAlone-wide-am":"претпладне"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/indian.js b/lib/dojo/cldr/nls/mk/indian.js
new file mode 100644
index 000000000..292224b6d
--- /dev/null
+++ b/lib/dojo/cldr/nls/mk/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/mk/indian",{"field-quarter-short-relative+0":"ова тромесечје","field-quarter-short-relative+1":"следното тромесечје","field-tue-relative+-1":"минатиот вторник","field-year":"година","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","field-minute":"минута","field-month-narrow-relative+-1":"минатиот месец","field-tue-narrow-relative+0":"овој вто.","field-tue-narrow-relative+1":"следниот вто.","field-thu-short-relative+0":"овој чет.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"следниот чет.","field-day-relative+0":"денес","field-day-short-relative+-2":"завчера","field-day-relative+1":"утре","field-week-narrow-relative+0":"оваа седмица","field-day-relative+2":"задутре","field-week-narrow-relative+1":"следната седмица","field-wed-narrow-relative+-1":"минатата сре.","field-year-narrow":"год.","field-era-short":"ера","field-year-narrow-relative+0":"оваа год.","field-tue-relative+0":"овој вторник","field-year-narrow-relative+1":"следната год.","field-tue-relative+1":"следниот вторник","field-weekdayOfMonth":"ден од месецот","field-second-short":"сек.","field-weekdayOfMonth-narrow":"ден од мес.","field-week-relative+0":"оваа седмица","field-month-relative+0":"овој месец","field-week-relative+1":"следната седмица","field-month-relative+1":"следниот месец","field-sun-narrow-relative+0":"оваа нед.","field-mon-short-relative+0":"овој пон.","field-sun-narrow-relative+1":"следната нед.","field-mon-short-relative+1":"следниот пон.","field-second-relative+0":"сега","eraNames":["Сака"],"field-weekOfMonth":"седмица од месецот","field-month-short":"мес.","field-day":"ден","field-dayOfYear-short":"ден од год.","field-year-relative+-1":"минатата година","field-sat-short-relative+-1":"минатата саб.","field-hour-relative+0":"часов","field-wed-relative+-1":"минатата среда","field-sat-narrow-relative+-1":"минатата саб.","field-second":"секунда","field-quarter":"тромесечје","field-week-short":"сед.","field-day-narrow-relative+0":"денес","field-day-narrow-relative+1":"утре","field-day-narrow-relative+2":"задутре","field-tue-short-relative+0":"овој вто.","field-tue-short-relative+1":"следниот вто.","field-month-short-relative+-1":"минатиот месец","field-mon-relative+-1":"минатиот понеделник","field-month":"месец","field-day-narrow":"ден","field-minute-short":"мин.","field-dayperiod":"претпладне/попладне","field-sat-short-relative+0":"оваа саб.","field-sat-short-relative+1":"следната саб.","eraAbbr":["Сака"],"field-second-narrow":"сек.","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","field-day-narrow-relative+-1":"вчера","field-year-short":"год.","field-day-narrow-relative+-2":"завчера","field-quarter-relative+-1":"последното тромесечје","field-dayperiod-narrow":"претпладне/попладне","field-week-narrow-relative+-1":"минатата седмица","field-dayOfYear":"ден од годината","field-sat-relative+-1":"минатата сабота","field-hour":"час","months-format-wide":["чаитра","вајсака","јаиста","асада","сравана","бадра","асвина","картика","аграхајана","пауса","мага","фалгуна"],"field-month-relative+-1":"минатиот месец","field-quarter-short":"тромес.","field-sat-narrow-relative+0":"оваа саб.","field-fri-relative+0":"овој петок","field-sat-narrow-relative+1":"следната саб.","field-fri-relative+1":"следниот петок","field-month-narrow-relative+0":"овој месец","field-month-narrow-relative+1":"следниот месец","field-sun-short-relative+0":"оваа нед.","field-sun-short-relative+1":"следната нед.","field-week-relative+-1":"минатата седмица","field-quarter-short-relative+-1":"последното тромесечје","months-format-abbr":["чаитра","вајсака","јаиста","асада","сравана","бадра","асвина","картика","аграхајана","пауса","мага","фалгуна"],"field-quarter-relative+0":"ова тромесечје","field-minute-relative+0":"оваа минута","field-quarter-relative+1":"следното тромесечје","field-wed-short-relative+-1":"минатата сре.","field-thu-short-relative+-1":"минатиот чет.","field-year-narrow-relative+-1":"минатата год.","field-mon-narrow-relative+-1":"минатиот пон.","field-thu-narrow-relative+-1":"минатиот чет.","field-tue-narrow-relative+-1":"минатиот вто.","field-weekOfMonth-short":"седмица од месецот","field-wed-short-relative+0":"оваа сре.","months-standAlone-wide":["чаитра","вајсака","јаиста","асада","сравана","бадра","асвина","картика","аграхајана","пауса","мага","фалгуна"],"field-wed-short-relative+1":"следната сре.","field-sun-relative+-1":"минатата недела","field-weekday":"ден од неделата","field-day-short-relative+0":"денес","field-quarter-narrow-relative+0":"ова тромесечје","field-day-short-relative+1":"утре","field-sat-relative+0":"оваа сабота","field-quarter-narrow-relative+1":"следното тромесечје","field-day-short-relative+2":"задутре","field-sat-relative+1":"следната сабота","field-week-short-relative+0":"оваа седмица","field-week-short-relative+1":"следната седмица","months-standAlone-abbr":["чаитра","вајсака","јаиста","асада","сравана","бадра","асвина","картика","аграхајана","пауса","мага","фалгуна"],"field-dayOfYear-narrow":"ден од год.","field-month-short-relative+0":"овој месец","field-month-short-relative+1":"следниот месец","field-weekdayOfMonth-short":"ден од мес.","field-zone-narrow":"зона","field-thu-narrow-relative+0":"овој чет.","field-thu-narrow-relative+1":"следниот чет.","field-sun-narrow-relative+-1":"минатата нед.","field-mon-short-relative+-1":"минатиот пон.","field-thu-relative+0":"овој четврток","field-thu-relative+1":"следниот четврток","field-fri-short-relative+-1":"минатиот пет.","field-thu-relative+-1":"минатиот четврток","field-week":"седмица","field-wed-narrow-relative+0":"оваа сре.","field-wed-narrow-relative+1":"следната сре.","field-quarter-narrow-relative+-1":"последното тромесечје","field-year-short-relative+0":"оваа год.","field-dayperiod-short":"претпладне/попладне","field-year-short-relative+1":"следната год.","field-fri-short-relative+0":"овој пет.","field-fri-short-relative+1":"следниот пет.","field-week-short-relative+-1":"минатата седмица","field-hour-short":"ч.","field-zone-short":"зона","field-month-narrow":"мес.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"минатиот пет.","field-year-relative+0":"оваа година","field-year-relative+1":"следната година","field-era-narrow":"ера","field-fri-relative+-1":"минатиот петок","eraNarrow":"Сака","field-tue-short-relative+-1":"минатиот вто.","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"овој пон.","field-mon-narrow-relative+1":"следниот пон.","field-year-short-relative+-1":"минатата год.","field-zone":"временска зона","field-weekOfMonth-narrow":"седмица од месецот","field-weekday-narrow":"ден во неделата","field-quarter-narrow":"тромес.","field-sun-short-relative+-1":"минатата нед.","field-day-relative+-1":"вчера","field-day-relative+-2":"завчера","field-weekday-short":"ден во неделата","field-sun-relative+0":"оваа недела","field-sun-relative+1":"следната недела","field-day-short":"ден","field-week-narrow":"сед.","field-era":"ера","field-fri-narrow-relative+0":"овој пет.","field-fri-narrow-relative+1":"следниот пет."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/islamic.js b/lib/dojo/cldr/nls/mk/islamic.js
new file mode 100644
index 000000000..6d974227f
--- /dev/null
+++ b/lib/dojo/cldr/nls/mk/islamic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/mk/islamic",{"field-quarter-short-relative+0":"ова тромесечје","field-quarter-short-relative+1":"следното тромесечје","field-tue-relative+-1":"минатиот вторник","field-year":"година","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","field-minute":"минута","field-month-narrow-relative+-1":"минатиот месец","field-tue-narrow-relative+0":"овој вто.","field-tue-narrow-relative+1":"следниот вто.","field-thu-short-relative+0":"овој чет.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"следниот чет.","field-day-relative+0":"денес","field-day-short-relative+-2":"завчера","field-day-relative+1":"утре","field-week-narrow-relative+0":"оваа седмица","field-day-relative+2":"задутре","field-week-narrow-relative+1":"следната седмица","field-wed-narrow-relative+-1":"минатата сре.","field-year-narrow":"год.","field-era-short":"ера","field-year-narrow-relative+0":"оваа год.","field-tue-relative+0":"овој вторник","field-year-narrow-relative+1":"следната год.","field-tue-relative+1":"следниот вторник","field-weekdayOfMonth":"ден од месецот","field-second-short":"сек.","dayPeriods-format-narrow-am":"претпл.","dateFormatItem-MMMd":"dd MMM","field-weekdayOfMonth-narrow":"ден од мес.","dayPeriods-format-abbr-am":"претпл.","field-week-relative+0":"оваа седмица","field-month-relative+0":"овој месец","field-week-relative+1":"следната седмица","field-month-relative+1":"следниот месец","field-sun-narrow-relative+0":"оваа нед.","field-mon-short-relative+0":"овој пон.","field-sun-narrow-relative+1":"следната нед.","field-mon-short-relative+1":"следниот пон.","field-second-relative+0":"сега","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"седмица од месецот","dayPeriods-standAlone-abbr-pm":"попл.","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, dd MMM y 'г'. G","dateFormatItem-yyyyMd":"dd.M.y G","field-day":"ден","field-dayOfYear-short":"ден од год.","field-year-relative+-1":"минатата година","dayPeriods-format-wide-am":"претпладне","field-sat-short-relative+-1":"минатата саб.","field-hour-relative+0":"часов","dateFormatItem-yyyyMEd":"E, dd.M.y G","field-wed-relative+-1":"минатата среда","field-sat-narrow-relative+-1":"минатата саб.","field-second":"секунда","days-standAlone-narrow":["н","п","в","с","ч","п","с"],"dayPeriods-standAlone-wide-pm":"попладне","dateFormat-long":"dd MMMM y 'г'. G","dateFormatItem-GyMMMd":"dd MMM y 'г'. G","field-quarter":"тромесечје","field-week-short":"сед.","field-day-narrow-relative+0":"денес","field-day-narrow-relative+1":"утре","field-day-narrow-relative+2":"задутре","quarters-standAlone-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"days-format-narrow":["н","п","в","с","ч","п","с"],"field-tue-short-relative+0":"овој вто.","field-tue-short-relative+1":"следниот вто.","field-month-short-relative+-1":"минатиот месец","field-mon-relative+-1":"минатиот понеделник","dateFormatItem-GyMMM":"MMM y 'г'. G","field-month":"месец","field-day-narrow":"ден","field-minute-short":"мин.","field-dayperiod":"претпладне/попладне","field-sat-short-relative+0":"оваа саб.","field-sat-short-relative+1":"следната саб.","dayPeriods-format-narrow-pm":"попл.","dateFormat-medium":"dd.M.y G","dateFormatItem-yyyyMMMM":"MMMM y 'г'. G","quarters-standAlone-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"dayPeriods-format-abbr-pm":"попл.","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"сек.","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","field-day-narrow-relative+-1":"вчера","field-year-short":"год.","field-day-narrow-relative+-2":"завчера","field-quarter-relative+-1":"последното тромесечје","dateFormatItem-yyyyMMMd":"dd MMM y 'г'. G","field-dayperiod-narrow":"претпладне/попладне","dayPeriods-standAlone-narrow-am":"претпл.","field-week-narrow-relative+-1":"минатата седмица","days-format-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"dayPeriods-format-wide-pm":"попладне","field-dayOfYear":"ден од годината","field-sat-relative+-1":"минатата сабота","dateFormatItem-Md":"dd.M","field-hour":"час","months-format-wide":["мухарем","сафар","раби I","раби II","џумада I","џумада II","раџаб","шабан","рамадан","шавал","дулкида","дулхиџа"],"dateFormat-full":"EEEE, dd MMMM y 'г'. G","field-month-relative+-1":"минатиот месец","field-quarter-short":"тромес.","field-sat-narrow-relative+0":"оваа саб.","field-fri-relative+0":"овој петок","field-sat-narrow-relative+1":"следната саб.","field-fri-relative+1":"следниот петок","field-month-narrow-relative+0":"овој месец","field-month-narrow-relative+1":"следниот месец","field-sun-short-relative+0":"оваа нед.","field-sun-short-relative+1":"следната нед.","field-week-relative+-1":"минатата седмица","field-quarter-short-relative+-1":"последното тромесечје","months-format-abbr":["мух.","саф.","раб. I","раб. II","џум. I","џум. II","раџ.","шаб.","рам.","шав.","дулк.","дулх."],"field-quarter-relative+0":"ова тромесечје","field-minute-relative+0":"оваа минута","field-quarter-relative+1":"следното тромесечје","field-wed-short-relative+-1":"минатата сре.","dateFormat-short":"dd.M.y GGGGG","field-thu-short-relative+-1":"минатиот чет.","field-year-narrow-relative+-1":"минатата год.","days-standAlone-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"dateFormatItem-yyyyMMMEd":"E, dd MMM y 'г'. G","field-mon-narrow-relative+-1":"минатиот пон.","dateFormatItem-MMMMd":"dd MMMM","field-thu-narrow-relative+-1":"минатиот чет.","dateFormatItem-E":"E","field-tue-narrow-relative+-1":"минатиот вто.","field-weekOfMonth-short":"седмица од месецот","dateFormatItem-yyyy":"y 'г'. G","dayPeriods-standAlone-narrow-pm":"попл.","field-wed-short-relative+0":"оваа сре.","months-standAlone-wide":["мухарем","сафар","раби I","раби II","џумада I","џумада II","раџаб","шабан","рамадан","шавал","дулкида","дулхиџа"],"field-wed-short-relative+1":"следната сре.","field-sun-relative+-1":"минатата недела","dateFormatItem-MMMMEd":"E, dd MMMM","days-standAlone-abbr":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"field-weekday":"ден од неделата","field-day-short-relative+0":"денес","field-quarter-narrow-relative+0":"ова тромесечје","field-day-short-relative+1":"утре","field-sat-relative+0":"оваа сабота","field-quarter-narrow-relative+1":"следното тромесечје","field-day-short-relative+2":"задутре","field-sat-relative+1":"следната сабота","field-week-short-relative+0":"оваа седмица","field-week-short-relative+1":"следната седмица","months-standAlone-abbr":["мух.","саф.","раб. I","раб. II","џум. I","џум. II","раџ.","шаб.","рам.","шав.","дулк.","дулх."],"field-dayOfYear-narrow":"ден од год.","field-month-short-relative+0":"овој месец","field-month-short-relative+1":"следниот месец","field-weekdayOfMonth-short":"ден од мес.","dateFormatItem-MEd":"E, dd.M","field-zone-narrow":"зона","dateFormatItem-y":"y 'г'. G","field-thu-narrow-relative+0":"овој чет.","field-sun-narrow-relative+-1":"минатата нед.","field-mon-short-relative+-1":"минатиот пон.","field-thu-narrow-relative+1":"следниот чет.","field-thu-relative+0":"овој четврток","field-thu-relative+1":"следниот четврток","field-fri-short-relative+-1":"минатиот пет.","field-thu-relative+-1":"минатиот четврток","field-week":"седмица","quarters-format-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"оваа сре.","field-wed-narrow-relative+1":"следната сре.","field-quarter-narrow-relative+-1":"последното тромесечје","field-year-short-relative+0":"оваа год.","dateFormatItem-yyyyMMM":"MMM y 'г'. G","field-dayperiod-short":"претпладне/попладне","field-year-short-relative+1":"следната год.","field-fri-short-relative+0":"овој пет.","field-fri-short-relative+1":"следниот пет.","days-standAlone-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"field-week-short-relative+-1":"минатата седмица","dateFormatItem-yyyyQQQQ":"QQQ y G","field-hour-short":"ч.","field-zone-short":"зона","quarters-format-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"field-month-narrow":"мес.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"минатиот пет.","field-year-relative+0":"оваа година","field-year-relative+1":"следната година","field-era-narrow":"ера","field-fri-relative+-1":"минатиот петок","field-tue-short-relative+-1":"минатиот вто.","field-minute-narrow":"мин.","days-format-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"field-mon-narrow-relative+0":"овој пон.","field-mon-narrow-relative+1":"следниот пон.","field-year-short-relative+-1":"минатата год.","field-zone":"временска зона","dateFormatItem-MMMEd":"E, dd MMM","field-weekOfMonth-narrow":"седмица од месецот","field-weekday-narrow":"ден во неделата","field-quarter-narrow":"тромес.","field-sun-short-relative+-1":"минатата нед.","field-day-relative+-1":"вчера","dayPeriods-standAlone-abbr-am":"претпл.","field-day-relative+-2":"завчера","field-weekday-short":"ден во неделата","days-format-abbr":["нед.","пон.","вт.","сре.","чет.","пет.","саб."],"field-sun-relative+0":"оваа недела","field-sun-relative+1":"следната недела","dateFormatItem-Gy":"y 'г'. G","field-day-short":"ден","field-week-narrow":"сед.","field-era":"ера","field-fri-narrow-relative+0":"овој пет.","field-fri-narrow-relative+1":"следниот пет.","dayPeriods-standAlone-wide-am":"претпладне"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/number.js b/lib/dojo/cldr/nls/mk/number.js
index 7612c52ed..447082946 100644
--- a/lib/dojo/cldr/nls/mk/number.js
+++ b/lib/dojo/cldr/nls/mk/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/mk/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00","plusSign":"+","decimalFormat-long":"000 трилиони","decimalFormat-short":"000 трил'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/mk/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","percentSign":"%","minusSign":"-","decimalFormat-short":"000 бил'.'","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"≈","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 билиони","decimalFormat":"#,##0.###","currencyFormat-short":"000 бил'.' ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/persian.js b/lib/dojo/cldr/nls/mk/persian.js
new file mode 100644
index 000000000..f097f30fb
--- /dev/null
+++ b/lib/dojo/cldr/nls/mk/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/mk/persian",{"field-quarter-short-relative+0":"ова тромесечје","field-quarter-short-relative+1":"следното тромесечје","field-tue-relative+-1":"минатиот вторник","field-year":"година","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","field-minute":"минута","field-month-narrow-relative+-1":"минатиот месец","field-tue-narrow-relative+0":"овој вто.","field-tue-narrow-relative+1":"следниот вто.","field-thu-short-relative+0":"овој чет.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"следниот чет.","field-day-relative+0":"денес","field-day-short-relative+-2":"завчера","field-day-relative+1":"утре","field-week-narrow-relative+0":"оваа седмица","field-day-relative+2":"задутре","field-week-narrow-relative+1":"следната седмица","field-wed-narrow-relative+-1":"минатата сре.","field-year-narrow":"год.","field-era-short":"ера","field-year-narrow-relative+0":"оваа год.","field-tue-relative+0":"овој вторник","field-year-narrow-relative+1":"следната год.","field-tue-relative+1":"следниот вторник","field-weekdayOfMonth":"ден од месецот","field-second-short":"сек.","dayPeriods-format-narrow-am":"претпл.","dateFormatItem-MMMd":"dd MMM","field-weekdayOfMonth-narrow":"ден од мес.","dayPeriods-format-abbr-am":"претпл.","field-week-relative+0":"оваа седмица","field-month-relative+0":"овој месец","field-week-relative+1":"следната седмица","field-month-relative+1":"следниот месец","field-sun-narrow-relative+0":"оваа нед.","field-mon-short-relative+0":"овој пон.","field-sun-narrow-relative+1":"следната нед.","field-mon-short-relative+1":"следниот пон.","field-second-relative+0":"сега","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"eraNames":["АП"],"field-weekOfMonth":"седмица од месецот","dayPeriods-standAlone-abbr-pm":"попл.","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, dd MMM y 'г'. G","dateFormatItem-yyyyMd":"dd.M.y G","field-day":"ден","field-dayOfYear-short":"ден од год.","field-year-relative+-1":"минатата година","dayPeriods-format-wide-am":"претпладне","field-sat-short-relative+-1":"минатата саб.","field-hour-relative+0":"часов","dateFormatItem-yyyyMEd":"E, dd.M.y G","field-wed-relative+-1":"минатата среда","field-sat-narrow-relative+-1":"минатата саб.","field-second":"секунда","days-standAlone-narrow":["н","п","в","с","ч","п","с"],"dayPeriods-standAlone-wide-pm":"попладне","dateFormat-long":"dd MMMM y 'г'. G","dateFormatItem-GyMMMd":"dd MMM y 'г'. G","field-quarter":"тромесечје","field-week-short":"сед.","field-day-narrow-relative+0":"денес","field-day-narrow-relative+1":"утре","field-day-narrow-relative+2":"задутре","quarters-standAlone-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"days-format-narrow":["н","п","в","с","ч","п","с"],"field-tue-short-relative+0":"овој вто.","field-tue-short-relative+1":"следниот вто.","field-month-short-relative+-1":"минатиот месец","field-mon-relative+-1":"минатиот понеделник","dateFormatItem-GyMMM":"MMM y 'г'. G","field-month":"месец","field-day-narrow":"ден","field-minute-short":"мин.","field-dayperiod":"претпладне/попладне","field-sat-short-relative+0":"оваа саб.","field-sat-short-relative+1":"следната саб.","dayPeriods-format-narrow-pm":"попл.","dateFormat-medium":"dd.M.y G","dateFormatItem-yyyyMMMM":"MMMM y 'г'. G","eraAbbr":["АП"],"quarters-standAlone-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"dayPeriods-format-abbr-pm":"попл.","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"сек.","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","field-day-narrow-relative+-1":"вчера","field-year-short":"год.","field-day-narrow-relative+-2":"завчера","months-format-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-quarter-relative+-1":"последното тромесечје","dateFormatItem-yyyyMMMd":"dd MMM y 'г'. G","field-dayperiod-narrow":"претпладне/попладне","dayPeriods-standAlone-narrow-am":"претпл.","field-week-narrow-relative+-1":"минатата седмица","days-format-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"dayPeriods-format-wide-pm":"попладне","field-dayOfYear":"ден од годината","field-sat-relative+-1":"минатата сабота","dateFormatItem-Md":"dd.M","field-hour":"час","months-format-wide":["фарвардин","ордибехешт","кордад","тир","мордад","шахривар","мер","абан","азар","деј","бахман","есфанд"],"dateFormat-full":"EEEE, dd MMMM y 'г'. G","field-month-relative+-1":"минатиот месец","field-quarter-short":"тромес.","field-sat-narrow-relative+0":"оваа саб.","field-fri-relative+0":"овој петок","field-sat-narrow-relative+1":"следната саб.","field-fri-relative+1":"следниот петок","field-month-narrow-relative+0":"овој месец","field-month-narrow-relative+1":"следниот месец","field-sun-short-relative+0":"оваа нед.","field-sun-short-relative+1":"следната нед.","field-week-relative+-1":"минатата седмица","field-quarter-short-relative+-1":"последното тромесечје","months-format-abbr":["фарвардин","ордибехешт","кордад","тир","мордад","шахривар","мер","абан","азар","деј","бахман","есфанд"],"field-quarter-relative+0":"ова тромесечје","field-minute-relative+0":"оваа минута","field-quarter-relative+1":"следното тромесечје","field-wed-short-relative+-1":"минатата сре.","dateFormat-short":"dd.M.y GGGGG","field-thu-short-relative+-1":"минатиот чет.","field-year-narrow-relative+-1":"минатата год.","days-standAlone-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"dateFormatItem-yyyyMMMEd":"E, dd MMM y 'г'. G","field-mon-narrow-relative+-1":"минатиот пон.","dateFormatItem-MMMMd":"dd MMMM","field-thu-narrow-relative+-1":"минатиот чет.","dateFormatItem-E":"E","field-tue-narrow-relative+-1":"минатиот вто.","field-weekOfMonth-short":"седмица од месецот","dateFormatItem-yyyy":"y 'г'. G","dayPeriods-standAlone-narrow-pm":"попл.","field-wed-short-relative+0":"оваа сре.","months-standAlone-wide":["фарвардин","ордибехешт","кордад","тир","мордад","шахривар","мер","абан","азар","деј","бахман","есфанд"],"field-wed-short-relative+1":"следната сре.","field-sun-relative+-1":"минатата недела","days-standAlone-abbr":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"field-weekday":"ден од неделата","field-day-short-relative+0":"денес","field-quarter-narrow-relative+0":"ова тромесечје","field-day-short-relative+1":"утре","field-sat-relative+0":"оваа сабота","field-quarter-narrow-relative+1":"следното тромесечје","field-day-short-relative+2":"задутре","field-sat-relative+1":"следната сабота","field-week-short-relative+0":"оваа седмица","field-week-short-relative+1":"следната седмица","months-standAlone-abbr":["фарвардин","ордибехешт","кордад","тир","мордад","шахривар","мер","абан","азар","деј","бахман","есфанд"],"field-dayOfYear-narrow":"ден од год.","field-month-short-relative+0":"овој месец","field-month-short-relative+1":"следниот месец","field-weekdayOfMonth-short":"ден од мес.","dateFormatItem-MEd":"E, dd.M","field-zone-narrow":"зона","dateFormatItem-y":"y 'г'. G","field-thu-narrow-relative+0":"овој чет.","field-thu-narrow-relative+1":"следниот чет.","field-sun-narrow-relative+-1":"минатата нед.","field-mon-short-relative+-1":"минатиот пон.","field-thu-relative+0":"овој четврток","field-thu-relative+1":"следниот четврток","field-fri-short-relative+-1":"минатиот пет.","field-thu-relative+-1":"минатиот четврток","field-week":"седмица","quarters-format-wide":["прво тромесечје","второ тромесечје","трето тромесечје","четврто тромесечје"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"оваа сре.","field-wed-narrow-relative+1":"следната сре.","field-quarter-narrow-relative+-1":"последното тромесечје","field-year-short-relative+0":"оваа год.","field-dayperiod-short":"претпладне/попладне","dateFormatItem-yyyyMMM":"MMM y 'г'. G","field-year-short-relative+1":"следната год.","field-fri-short-relative+0":"овој пет.","field-fri-short-relative+1":"следниот пет.","days-standAlone-short":["нед.","пон.","вто.","сре.","чет.","пет.","саб."],"field-week-short-relative+-1":"минатата седмица","dateFormatItem-yyyyQQQQ":"QQQ y G","field-hour-short":"ч.","field-zone-short":"зона","quarters-format-abbr":["јан-мар","апр-јун","јул-сеп","окт-дек"],"field-month-narrow":"мес.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"минатиот пет.","field-year-relative+0":"оваа година","field-year-relative+1":"следната година","field-era-narrow":"ера","field-fri-relative+-1":"минатиот петок","eraNarrow":"АП","field-tue-short-relative+-1":"минатиот вто.","field-minute-narrow":"мин.","days-format-wide":["недела","понеделник","вторник","среда","четврток","петок","сабота"],"field-mon-narrow-relative+0":"овој пон.","field-mon-narrow-relative+1":"следниот пон.","field-year-short-relative+-1":"минатата год.","field-zone":"временска зона","dateFormatItem-MMMEd":"E, dd MMM","field-weekOfMonth-narrow":"седмица од месецот","field-weekday-narrow":"ден во неделата","field-quarter-narrow":"тромес.","field-sun-short-relative+-1":"минатата нед.","field-day-relative+-1":"вчера","dayPeriods-standAlone-abbr-am":"претпл.","field-day-relative+-2":"завчера","field-weekday-short":"ден во неделата","days-format-abbr":["нед.","пон.","вт.","сре.","чет.","пет.","саб."],"field-sun-relative+0":"оваа недела","field-sun-relative+1":"следната недела","dateFormatItem-Gy":"y 'г'. G","field-day-short":"ден","field-week-narrow":"сед.","field-era":"ера","field-fri-narrow-relative+0":"овој пет.","field-fri-narrow-relative+1":"следниот пет.","dayPeriods-standAlone-wide-am":"претпладне"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/mk/roc.js b/lib/dojo/cldr/nls/mk/roc.js
new file mode 100644
index 000000000..9d139a141
--- /dev/null
+++ b/lib/dojo/cldr/nls/mk/roc.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/mk/roc",{"field-quarter-short-relative+0":"ова тромесечје","field-quarter-short-relative+1":"следното тромесечје","field-tue-relative+-1":"минатиот вторник","field-year":"година","field-wed-relative+0":"оваа среда","field-wed-relative+1":"следната среда","field-minute":"минута","field-month-narrow-relative+-1":"минатиот месец","field-tue-narrow-relative+0":"овој вто.","field-tue-narrow-relative+1":"следниот вто.","field-thu-short-relative+0":"овој чет.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"следниот чет.","field-day-relative+0":"денес","field-day-short-relative+-2":"завчера","field-day-relative+1":"утре","field-week-narrow-relative+0":"оваа седмица","field-day-relative+2":"задутре","field-week-narrow-relative+1":"следната седмица","field-wed-narrow-relative+-1":"минатата сре.","field-year-narrow":"год.","field-era-short":"ера","field-year-narrow-relative+0":"оваа год.","field-tue-relative+0":"овој вторник","field-year-narrow-relative+1":"следната год.","field-tue-relative+1":"следниот вторник","field-weekdayOfMonth":"ден од месецот","field-second-short":"сек.","field-weekdayOfMonth-narrow":"ден од мес.","field-week-relative+0":"оваа седмица","field-month-relative+0":"овој месец","field-week-relative+1":"следната седмица","field-month-relative+1":"следниот месец","field-sun-narrow-relative+0":"оваа нед.","field-mon-short-relative+0":"овој пон.","field-sun-narrow-relative+1":"следната нед.","field-mon-short-relative+1":"следниот пон.","field-second-relative+0":"сега","eraNames":["пред Р.К.","мингуо"],"field-weekOfMonth":"седмица од месецот","field-month-short":"мес.","field-day":"ден","field-dayOfYear-short":"ден од год.","field-year-relative+-1":"минатата година","field-sat-short-relative+-1":"минатата саб.","field-hour-relative+0":"часов","field-wed-relative+-1":"минатата среда","field-sat-narrow-relative+-1":"минатата саб.","field-second":"секунда","field-quarter":"тромесечје","field-week-short":"сед.","field-day-narrow-relative+0":"денес","field-day-narrow-relative+1":"утре","field-day-narrow-relative+2":"задутре","field-tue-short-relative+0":"овој вто.","field-tue-short-relative+1":"следниот вто.","field-month-short-relative+-1":"минатиот месец","field-mon-relative+-1":"минатиот понеделник","field-month":"месец","field-day-narrow":"ден","field-minute-short":"мин.","field-dayperiod":"претпладне/попладне","field-sat-short-relative+0":"оваа саб.","field-sat-short-relative+1":"следната саб.","eraAbbr":["пр. Р.К.","мингуо"],"field-second-narrow":"сек.","field-mon-relative+0":"овој понеделник","field-mon-relative+1":"следниот понеделник","field-day-narrow-relative+-1":"вчера","field-year-short":"год.","field-day-narrow-relative+-2":"завчера","field-quarter-relative+-1":"последното тромесечје","field-dayperiod-narrow":"претпладне/попладне","field-week-narrow-relative+-1":"минатата седмица","field-dayOfYear":"ден од годината","field-sat-relative+-1":"минатата сабота","field-hour":"час","field-month-relative+-1":"минатиот месец","field-quarter-short":"тромес.","field-sat-narrow-relative+0":"оваа саб.","field-fri-relative+0":"овој петок","field-sat-narrow-relative+1":"следната саб.","field-fri-relative+1":"следниот петок","field-month-narrow-relative+0":"овој месец","field-month-narrow-relative+1":"следниот месец","field-sun-short-relative+0":"оваа нед.","field-sun-short-relative+1":"следната нед.","field-week-relative+-1":"минатата седмица","field-quarter-short-relative+-1":"последното тромесечје","field-quarter-relative+0":"ова тромесечје","field-minute-relative+0":"оваа минута","field-quarter-relative+1":"следното тромесечје","field-wed-short-relative+-1":"минатата сре.","field-thu-short-relative+-1":"минатиот чет.","field-year-narrow-relative+-1":"минатата год.","field-mon-narrow-relative+-1":"минатиот пон.","field-thu-narrow-relative+-1":"минатиот чет.","field-tue-narrow-relative+-1":"минатиот вто.","field-weekOfMonth-short":"седмица од месецот","field-wed-short-relative+0":"оваа сре.","field-wed-short-relative+1":"следната сре.","field-sun-relative+-1":"минатата недела","field-weekday":"ден од неделата","field-day-short-relative+0":"денес","field-quarter-narrow-relative+0":"ова тромесечје","field-sat-relative+0":"оваа сабота","field-day-short-relative+1":"утре","field-quarter-narrow-relative+1":"следното тромесечје","field-sat-relative+1":"следната сабота","field-day-short-relative+2":"задутре","field-week-short-relative+0":"оваа седмица","field-week-short-relative+1":"следната седмица","field-dayOfYear-narrow":"ден од год.","field-month-short-relative+0":"овој месец","field-month-short-relative+1":"следниот месец","field-weekdayOfMonth-short":"ден од мес.","field-zone-narrow":"зона","field-thu-narrow-relative+0":"овој чет.","field-thu-narrow-relative+1":"следниот чет.","field-sun-narrow-relative+-1":"минатата нед.","field-mon-short-relative+-1":"минатиот пон.","field-thu-relative+0":"овој четврток","field-thu-relative+1":"следниот четврток","field-fri-short-relative+-1":"минатиот пет.","field-thu-relative+-1":"минатиот четврток","field-week":"седмица","field-wed-narrow-relative+0":"оваа сре.","field-wed-narrow-relative+1":"следната сре.","field-quarter-narrow-relative+-1":"последното тромесечје","field-year-short-relative+0":"оваа год.","field-dayperiod-short":"претпладне/попладне","field-year-short-relative+1":"следната год.","field-fri-short-relative+0":"овој пет.","field-fri-short-relative+1":"следниот пет.","field-week-short-relative+-1":"минатата седмица","field-hour-short":"ч.","field-zone-short":"зона","field-month-narrow":"мес.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"минатиот пет.","field-year-relative+0":"оваа година","field-year-relative+1":"следната година","field-era-narrow":"ера","field-fri-relative+-1":"минатиот петок","eraNarrow":["пр. Р.К.","мингуо"],"field-tue-short-relative+-1":"минатиот вто.","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"овој пон.","field-mon-narrow-relative+1":"следниот пон.","field-year-short-relative+-1":"минатата год.","field-zone":"временска зона","field-weekOfMonth-narrow":"седмица од месецот","field-weekday-narrow":"ден во неделата","field-quarter-narrow":"тромес.","field-sun-short-relative+-1":"минатата нед.","field-day-relative+-1":"вчера","field-day-relative+-2":"завчера","field-weekday-short":"ден во неделата","field-sun-relative+0":"оваа недела","field-sun-relative+1":"следната недела","field-day-short":"ден","field-week-narrow":"сед.","field-era":"ера","field-fri-narrow-relative+0":"овој пет.","field-fri-narrow-relative+1":"следниот пет."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/buddhist.js b/lib/dojo/cldr/nls/nb/buddhist.js
index d7139ee09..77b65d958 100644
--- a/lib/dojo/cldr/nls/nb/buddhist.js
+++ b/lib/dojo/cldr/nls/nb/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nb/buddhist",{"days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"nå","field-weekday":"Ukedag","field-wed-relative+0":"onsdag denne uken","field-wed-relative+1":"onsdag neste uke","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"E d. MMM","field-tue-relative+-1":"tirsdag sist uke","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"fredag sist uke","field-wed-relative+-1":"onsdag sist uke","months-format-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d.M.y G","field-thu-relative+-1":"torsdag sist uke","dateFormatItem-Md":"d.M.","dayPeriods-format-abbr-am":"a.m.","field-era":"Tidsalder","months-standAlone-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","field-year":"År","field-hour":"Time","months-format-abbr":["jan.","feb.","mar.","apr.","mai","jun.","jul.","aug.","sep.","okt.","nov.","des."],"field-sat-relative+0":"lørdag denne uken","field-sat-relative+1":"lørdag neste uke","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-thu-relative+0":"torsdag denne uken","field-day-relative+1":"i morgen","field-thu-relative+1":"torsdag neste uke","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"i overmorgen","months-standAlone-abbr":["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-M":"L.","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"søndag denne uken","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"søndag neste uke","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["BE"],"field-minute":"Minutt","field-dayperiod":"AM/PM","days-standAlone-abbr":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M","field-fri-relative+0":"fredag denne uken","field-fri-relative+1":"fredag neste uke","field-day":"Dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"Tidssone","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"i fjor","field-month-relative+-1":"forrige måned","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMd":"d.M.y G","field-month":"Måned","days-standAlone-narrow":["S","M","T","O","T","F","L"],"field-tue-relative+0":"tirsdag denne uken","field-tue-relative+1":"tirsdag neste uke","dayPeriods-format-wide-am":"a.m.","field-mon-relative+0":"mandag denne uken","field-mon-relative+1":"mandag neste uke","dateFormat-short":"d.M. y G","field-second":"Sekund","field-sat-relative+-1":"lørdag sist uke","field-sun-relative+-1":"søndag sist uke","field-month-relative+0":"denne måneden","field-month-relative+1":"neste måned","dateFormatItem-Ed":"E d.","field-week":"Uke","dateFormat-medium":"d. MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"forrige uke","dateFormatItem-yyyyM":"M.y G","field-year-relative+1":"neste år","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"mandag sist uke","dateFormatItem-yyyy":"y G","field-week-relative+0":"denne uken","field-week-relative+1":"neste uke"}); \ No newline at end of file
+define("dojo/cldr/nls/nb/buddhist",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","timeFormat-short":"HH.mm","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-thu-short-relative+0":"denne tor.","field-day-short-relative+-1":"i går","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"neste tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dayPeriods-format-narrow-am":"a","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["BE"],"field-weekOfMonth":"uke i måneden","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["BE"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"am/pm","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"forrige uke","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d.M.","field-hour":"time","months-format-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","months-format-abbr":["jan.","feb.","mar.","apr.","mai","jun.","jul.","aug.","sep.","okt.","nov.","des."],"field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M.y G","field-thu-short-relative+-1":"sist tor.","field-year-narrow-relative+-1":"i fjor","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-M":"L.","field-wed-short-relative+0":"denne ons.","months-standAlone-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","days-standAlone-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","months-standAlone-abbr":["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],"field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-MEd":"E d.M","field-zone-narrow":"tidssone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"tidssone","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","eraNarrow":"BE","field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"field-sun-relative+0":"søndag","dateFormatItem-MMdd":"d.M.","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr.","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/chinese.js b/lib/dojo/cldr/nls/nb/chinese.js
new file mode 100644
index 000000000..3b127e95d
--- /dev/null
+++ b/lib/dojo/cldr/nls/nb/chinese.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/nb/chinese",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"denne tor.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-thu-short-relative+1":"neste tor.","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ r(U)","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"uke i måneden","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM r(U)","dateFormatItem-yyyyMd":"dd.MM.r","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E dd.MM.r","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","dateFormat-long":"d. MMMM r(U)","dateFormatItem-GyMMMd":"d. MMM r","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM r(U)","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dateFormat-medium":"d. MMM r","dateFormatItem-yyyyMMMM":"MMMM r(U)","dateFormatItem-UMMM":"MMM U","dateFormatItem-yyyyM":"MM.r","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM r","field-dayperiod-narrow":"am/pm","field-week-narrow-relative+-1":"forrige uke","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"dd.MM","field-hour":"time","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateFormat-full":"EEEE d. MMMM r(U)","dateFormatItem-UMd":"d.MM. U","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M.r","field-year-narrow-relative+-1":"i fjor","field-thu-short-relative+-1":"sist tor.","dateFormatItem-yyyyMMMEd":"E d. MMM r(U)","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"r(U)","dateFormatItem-M":"L.","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","dateFormatItem-h":"h a","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","dateFormatItem-MEd":"E dd.MM.","field-zone-narrow":"tidssone","dateFormatItem-y":"r(U)","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","dateFormatItem-yMd":"dd.MM.r","field-week":"uke","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM r(U)","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ r(U)","dateFormatItem-UMMMd":"d. MMM U","field-hour-short":"t","field-zone-short":"tidssone","field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","field-sun-relative+0":"søndag","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"r(U)","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","dateFormatItem-UM":"MM. U","field-fri-narrow-relative+1":"neste fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/coptic.js b/lib/dojo/cldr/nls/nb/coptic.js
new file mode 100644
index 000000000..c22098ca9
--- /dev/null
+++ b/lib/dojo/cldr/nls/nb/coptic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/nb/coptic",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"denne tor.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-thu-short-relative+1":"neste tor.","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["0. tidsalder","1. tidsalder"],"field-weekOfMonth":"uke i måneden","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["0. t.a.","1. t.a."],"dateFormatItem-yyyyM":"M.y G","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"am/pm","field-week-narrow-relative+-1":"forrige uke","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d.M.","field-hour":"time","months-format-wide":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","paona","epep","mesra","nasie"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","months-format-abbr":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","paona","epep","mesra","nasie"],"field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M.y G","field-year-narrow-relative+-1":"i fjor","field-thu-short-relative+-1":"sist tor.","dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L.","months-standAlone-wide":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","paona","epep","mesra","nasie"],"field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","months-standAlone-abbr":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","paona","epep","mesra","nasie"],"field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","dateFormatItem-MEd":"E d.M","field-zone-narrow":"tidssone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"tidssone","field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","eraNarrow":["TA0","TA1"],"field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","field-sun-relative+0":"søndag","dateFormatItem-MMdd":"d.M.","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/currency.js b/lib/dojo/cldr/nls/nb/currency.js
index 8ba24589a..ea6142162 100644
--- a/lib/dojo/cldr/nls/nb/currency.js
+++ b/lib/dojo/cldr/nls/nb/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nb/currency",{"HKD_displayName":"Hongkong-dollar","CHF_displayName":"sveitsiske franc","JPY_symbol":"JPY","CAD_displayName":"kanadiske dollar","HKD_symbol":"HKD","CNY_displayName":"kinesiske yuan","USD_symbol":"USD","AUD_displayName":"australske dollar","JPY_displayName":"japanske yen","CAD_symbol":"CAD","USD_displayName":"amerikanske dollar","EUR_symbol":"€","CNY_symbol":"CNY","GBP_displayName":"britiske pund","GBP_symbol":"£","AUD_symbol":"AUD","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/nb/currency",{"HKD_displayName":"Hongkong-dollar","CNY_displayName":"kinesiske yuan","JPY_displayName":"japanske yen","JPY_symbol":"JPY","USD_displayName":"amerikanske dollar","CAD_symbol":"CAD","GBP_displayName":"britiske pund","CHF_displayName":"sveitsiske franc","CNY_symbol":"CNY","EUR_displayName":"euro","GBP_symbol":"£","CAD_displayName":"kanadiske dollar","USD_symbol":"USD","EUR_symbol":"€","AUD_displayName":"australske dollar","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/dangi.js b/lib/dojo/cldr/nls/nb/dangi.js
new file mode 100644
index 000000000..b12662fa7
--- /dev/null
+++ b/lib/dojo/cldr/nls/nb/dangi.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/nb/dangi",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"denne tor.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-thu-short-relative+1":"neste tor.","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ r(U)","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"uke i måneden","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM r(U)","dateFormatItem-yyyyMd":"dd.MM.r","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E dd.MM.r","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","dateFormat-long":"d. MMMM r(U)","dateFormatItem-GyMMMd":"d. MMM r","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM r(U)","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dateFormat-medium":"d. MMM r","dateFormatItem-yyyyMMMM":"MMMM r(U)","dateFormatItem-UMMM":"MMM U","dateFormatItem-yyyyM":"MM.r","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM r","field-dayperiod-narrow":"am/pm","field-week-narrow-relative+-1":"forrige uke","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"dd.MM","field-hour":"time","months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateFormat-full":"EEEE d. MMMM r(U)","dateFormatItem-UMd":"d.MM. U","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M.r","field-year-narrow-relative+-1":"i fjor","field-thu-short-relative+-1":"sist tor.","dateFormatItem-yyyyMMMEd":"E d. MMM r(U)","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"r(U)","dateFormatItem-M":"L.","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","dateFormatItem-MEd":"E dd.MM.","field-zone-narrow":"tidssone","dateFormatItem-y":"r(U)","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","dateFormatItem-yMd":"dd.MM.r","field-week":"uke","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM r(U)","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ r(U)","dateFormatItem-UMMMd":"d. MMM U","field-hour-short":"t","field-zone-short":"tidssone","field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","field-sun-relative+0":"søndag","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"r(U)","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","dateFormatItem-UM":"MM. U","field-fri-narrow-relative+1":"neste fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/ethiopic-amete-alem.js b/lib/dojo/cldr/nls/nb/ethiopic-amete-alem.js
new file mode 100644
index 000000000..9f9a5c20c
--- /dev/null
+++ b/lib/dojo/cldr/nls/nb/ethiopic-amete-alem.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/nb/ethiopic-amete-alem",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-thu-short-relative+0":"denne tor.","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"neste tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","field-weekdayOfMonth-narrow":"uked. i md.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","eraNames":["0. tidsalder"],"field-weekOfMonth":"uke i måneden","field-month-short":"mnd.","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","field-month":"måned","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","eraAbbr":["0. t.a."],"field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","field-quarter-relative+-1":"forrige kvartal","field-dayperiod-narrow":"am/pm","field-week-narrow-relative+-1":"forrige uke","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","field-hour":"time","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","field-thu-short-relative+-1":"sist tor.","field-year-narrow-relative+-1":"i fjor","field-mon-narrow-relative+-1":"sist ma.","field-thu-narrow-relative+-1":"sist to.","field-tue-narrow-relative+-1":"sist ti.","field-weekOfMonth-short":"uke i mnd.","field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","field-second-narrow-relative+0":"nå","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-sat-relative+0":"lørdag","field-day-short-relative+1":"i morgen","field-quarter-narrow-relative+1":"neste kv.","field-sat-relative+1":"neste lørdag","field-day-short-relative+2":"i overmorgen","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","field-zone-narrow":"tidssone","field-thu-narrow-relative+0":"denne to.","field-thu-narrow-relative+1":"neste to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","field-week-short-relative+-1":"forrige uke","field-hour-short":"t","field-zone-short":"tidssone","field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","eraNarrow":"TA0","field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","field-sun-relative+0":"søndag","field-sun-relative+1":"neste søndag","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/ethiopic.js b/lib/dojo/cldr/nls/nb/ethiopic.js
new file mode 100644
index 000000000..0789b507a
--- /dev/null
+++ b/lib/dojo/cldr/nls/nb/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/nb/ethiopic",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"denne tor.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-thu-short-relative+1":"neste tor.","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["0. tidsalder","1. tidsalder"],"field-weekOfMonth":"uke i måneden","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["0. t.a.","1. t.a."],"dateFormatItem-yyyyM":"M.y G","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"am/pm","field-week-narrow-relative+-1":"forrige uke","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d.M.","field-hour":"time","months-format-wide":["meskerem","tekemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehasse","pagumen"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","months-format-abbr":["meskerem","tekemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehasse","pagumen"],"field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","field-year-narrow-relative+-1":"i fjor","field-thu-short-relative+-1":"sist tor.","dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L.","months-standAlone-wide":["meskerem","tekemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehasse","pagumen"],"field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","months-standAlone-abbr":["meskerem","tekemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehasse","pagumen"],"field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","dateFormatItem-MEd":"E d.M","field-zone-narrow":"tidssone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"tidssone","field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","eraNarrow":["TA0","TA1"],"field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","field-sun-relative+0":"søndag","dateFormatItem-MMdd":"d.M.","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/generic.js b/lib/dojo/cldr/nls/nb/generic.js
index 1b75fbd84..a48a063b4 100644
--- a/lib/dojo/cldr/nls/nb/generic.js
+++ b/lib/dojo/cldr/nls/nb/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nb/generic",{"field-second-relative+0":"nå","field-weekday":"Ukedag","field-wed-relative+0":"onsdag denne uken","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"E d. MMM","field-wed-relative+1":"onsdag neste uke","field-tue-relative+-1":"tirsdag sist uke","dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"fredag sist uke","field-wed-relative+-1":"onsdag sist uke","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d.M.y G","field-thu-relative+-1":"torsdag sist uke","dateFormatItem-Md":"d.M.","field-era":"Tidsalder","field-year":"År","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-MMdd":"d.M.","field-hour":"Time","field-sat-relative+0":"lørdag denne uken","field-sat-relative+1":"lørdag neste uke","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-thu-relative+0":"torsdag denne uken","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"i overmorgen","field-thu-relative+1":"torsdag neste uke","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-M":"L.","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","field-sun-relative+0":"søndag denne uken","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"søndag neste uke","field-minute":"Minutt","field-dayperiod":"AM/PM","dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"i forgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"fredag denne uken","field-fri-relative+1":"fredag neste uke","field-day":"Dag","field-zone":"Tidssone","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-y":"y G","field-year-relative+-1":"i fjor","field-month-relative+-1":"forrige måned","dateFormatItem-hm":"h.mm a","dateFormatItem-yyyyMd":"d.M.y G","field-month":"Måned","dateFormatItem-MMM":"LLL","field-tue-relative+0":"tirsdag denne uken","field-tue-relative+1":"tirsdag neste uke","field-mon-relative+0":"mandag denne uken","field-mon-relative+1":"mandag neste uke","dateFormat-short":"d.M. y G","field-second":"Sekund","field-sat-relative+-1":"lørdag sist uke","field-sun-relative+-1":"søndag sist uke","field-month-relative+0":"denne måneden","field-month-relative+1":"neste måned","dateFormatItem-Ed":"E d.","field-week":"Uke","dateFormat-medium":"d. MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"forrige uke","dateFormatItem-yyyyM":"M.y G","field-year-relative+1":"neste år","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"mandag sist uke","dateFormatItem-yyyy":"y G","field-week-relative+0":"denne uken","field-week-relative+1":"neste uke"}); \ No newline at end of file
+define("dojo/cldr/nls/nb/generic",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","dateFormatItem-ms":"mm:ss","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"denne tor.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-thu-short-relative+1":"neste tor.","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"uke i måneden","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"s","field-mon-relative+0":"mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-2":"-2 d.","field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"am/pm","field-week-narrow-relative+-1":"forrige uke","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} 'kl'. {0}","dateFormatItem-Md":"d.M.","field-hour":"time","dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"forrige måned","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M.y G","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"i fjor","field-thu-short-relative+-1":"sist tor.","dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L.","field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","dateTimeFormat-full":"{1} 'kl'. {0}","field-second-narrow-relative+0":"nå","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","dateFormatItem-h":"h a","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","dateFormatItem-MEd":"E d.M","field-zone-narrow":"tidssone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"tidssone","field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","field-mon-narrow-relative+0":"denne ma.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"søndag","dateFormatItem-MMdd":"d.M.","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/gregorian.js b/lib/dojo/cldr/nls/nb/gregorian.js
index 8c812e3f5..742c9027d 100644
--- a/lib/dojo/cldr/nls/nb/gregorian.js
+++ b/lib/dojo/cldr/nls/nb/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nb/gregorian",{"dateFormatItem-Ehm":"E h.mm a","days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"nå","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Ukedag","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d.MM.y","field-wed-relative+0":"onsdag denne uken","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"E d. MMM","field-wed-relative+1":"onsdag neste uke","eraNarrow":["f.Kr.","fvt.","e.Kr.","vt"],"dateFormatItem-yMM":"MM.y","field-tue-relative+-1":"tirsdag sist uke","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormat-long":"d. MMMM y","field-fri-relative+-1":"fredag sist uke","field-wed-relative+-1":"onsdag sist uke","months-format-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d. MMMM y","field-thu-relative+-1":"torsdag sist uke","dateFormatItem-Md":"d.M.","dayPeriods-format-abbr-am":"a.m.","dateFormatItem-yMd":"d.M.y","dateFormatItem-yM":"M.y","field-era":"Tidsalder","months-standAlone-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQQQQ":"QQQQ y","field-year":"År","dateFormatItem-MMdd":"d.M.","field-hour":"Time","months-format-abbr":["jan.","feb.","mar.","apr.","mai","jun.","jul.","aug.","sep.","okt.","nov.","des."],"field-sat-relative+0":"lørdag denne uken","field-sat-relative+1":"lørdag neste uke","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-thu-relative+0":"torsdag denne uken","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"i overmorgen","field-thu-relative+1":"torsdag neste uke","dateFormatItem-H":"HH","months-standAlone-abbr":["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L.","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"søndag denne uken","dateFormatItem-Hm":"HH.mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"field-sun-relative+1":"søndag neste uke","eraAbbr":["f.Kr.","e.Kr."],"field-minute":"Minutt","field-dayperiod":"AM/PM","days-standAlone-abbr":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"i går","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'kl.' {0}","dayPeriods-format-narrow-am":"a","field-day-relative+-2":"i forgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"fredag denne uken","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"fredag neste uke","field-day":"Dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"Tidssone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"i fjor","field-month-relative+-1":"forrige måned","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"eraNames":["f.Kr.","e.Kr."],"dateFormatItem-yMMMd":"d. MMM y","days-format-narrow":["S","M","T","O","T","F","L"],"days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"LLL","field-month":"Måned","field-tue-relative+0":"tirsdag denne uken","field-tue-relative+1":"tirsdag neste uke","dayPeriods-format-wide-am":"a.m.","dateFormatItem-EHm":"E HH.mm","field-mon-relative+0":"mandag denne uken","field-mon-relative+1":"mandag neste uke","dateFormat-short":"dd.MM.y","dateFormatItem-EHms":"E HH.mm.ss","dateFormatItem-Ehms":"E h.mm.ss a","field-second":"Sekund","field-sat-relative+-1":"lørdag sist uke","dateFormatItem-yMMMEd":"E d. MMM y","field-sun-relative+-1":"søndag sist uke","field-month-relative+0":"denne måneden","field-month-relative+1":"neste måned","dateFormatItem-Ed":"E d.","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Uke","dateFormat-medium":"d. MMM y","field-year-relative+0":"i år","field-week-relative+-1":"forrige uke","field-year-relative+1":"neste år","dayPeriods-format-narrow-pm":"p","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"mandag sist uke","field-week-relative+0":"denne uken","field-week-relative+1":"neste uke"}); \ No newline at end of file
+define("dojo/cldr/nls/nb/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"denne to.","field-thu-narrow-relative+1":"neste to.","field-sun-narrow-relative+0":"denne sø.","field-sun-narrow-relative+1":"neste sø.","months-format-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"dayPeriods-standAlone-abbr-pm":"p.m.","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr.","eraNarrow":["f.Kr.","e.Kr.","vt."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d. MMM y","dayPeriods-format-abbr-night1":"natt","dayPeriods-format-narrow-evening1":"kv.","days-standAlone-narrow":["S","M","T","O","T","F","L"],"days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dayPeriods-format-abbr-afternoon1":"etterm.","dayPeriods-format-wide-evening1":"på kvelden","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"sist on.","dayPeriods-standAlone-wide-evening1":"kveld","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yMM":"MM.y","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"kv.","dayPeriods-standAlone-abbr-afternoon1":"etterm.","field-thu-relative+0":"torsdag","dayPeriods-standAlone-abbr-night1":"natt","field-thu-relative+1":"neste torsdag","dayPeriods-format-wide-am":"a.m.","field-fri-relative+0":"fredag","field-fri-relative+1":"neste fredag","dateFormatItem-yMd":"d.M.y","field-thu-narrow-relative+-1":"sist to.","field-quarter-relative+0":"dette kvartalet","field-quarter-relative+1":"neste kvartal","field-sun-short-relative+0":"denne søn.","timeFormat-short":"HH.mm","field-sun-short-relative+1":"neste søn.","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"em.","dateFormatItem-Md":"d.M.","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"u.","field-hour-relative+0":"denne timen","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-mon-narrow-relative+-1":"sist ma.","field-minute-narrow":"m","field-thu-short-relative+0":"denne tor.","field-mon-relative+0":"mandag","field-thu-short-relative+1":"neste tor.","field-mon-relative+1":"neste mandag","field-day-narrow-relative+0":"i dag","field-era-short":"tidsalder","field-day-narrow-relative+1":"i morgen","field-sat-narrow-relative+0":"denne lø.","field-day-narrow-relative+2":"+2 d.","timeFormat-long":"HH.mm.ss z","field-sat-narrow-relative+1":"neste lø.","field-week-narrow-relative+0":"denne uken","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-month":"måned","months-standAlone-wide":["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],"field-weekday-narrow":"uked.","dayPeriods-standAlone-narrow-afternoon1":"em.","field-year-relative+0":"i år","field-year-relative+1":"neste år","dayPeriods-format-abbr-evening1":"kveld","dayPeriods-format-narrow-midnight":"mn.","dayPeriods-format-wide-midnight":"midnatt","field-tue-relative+0":"tirsdag","field-tue-relative+1":"neste tirsdag","dayPeriods-standAlone-abbr-evening1":"kveld","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"midnatt","field-year-narrow":"år","field-tue-short-relative+0":"denne tir.","dayPeriods-standAlone-narrow-midnight":"mn.","field-tue-short-relative+1":"neste tir.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","dateTimeFormat-full":"{1} 'kl'. {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","dateFormatItem-M":"L.","field-wed-short-relative+0":"denne ons.","field-fri-short-relative+0":"denne fre.","field-wed-short-relative+1":"neste ons.","field-fri-short-relative+1":"neste fre.","field-weekOfMonth-short":"uke i mnd.","field-quarter-short-relative+-1":"forrige kv.","field-year-short-relative+-1":"i fjor","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"på natten","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"forrige kv.","dateFormatItem-d":"d.","dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-h":"h a","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"field-weekOfMonth-narrow":"uke i md.","dateFormatItem-y":"y","field-minute-relative+0":"dette minuttet","field-year-short-relative+0":"i år","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"neste år","field-weekday":"ukedag","dayPeriods-format-narrow-pm":"p","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yMEd":"E d.M.y","dayPeriods-standAlone-wide-night1":"natt","field-year-narrow-relative+-1":"i fjor","field-sat-relative+-1":"forrige lørdag","dayPeriods-format-abbr-midnight":"midn.","dayPeriods-format-narrow-morning1":"mg.","dayPeriods-format-narrow-morning2":"fm.","dayPeriods-format-wide-morning1":"på morgenen","dayPeriods-format-wide-morning2":"på formiddagen","dayPeriods-standAlone-abbr-midnight":"midn.","dayPeriods-standAlone-narrow-pm":"p.m.","dayPeriods-standAlone-wide-morning1":"morgen","field-mon-narrow-relative+0":"denne ma.","dayPeriods-standAlone-wide-morning2":"formiddag","field-mon-narrow-relative+1":"neste ma.","field-second":"sekund","dateFormatItem-yMMMEd":"E d. MMM y","field-year-relative+-1":"i fjor","field-weekdayOfMonth-short":"uked. i mnd.","dateFormat-short":"dd.MM.y","eraNames":["før Kristus","etter Kristus"],"field-second-short":"sek","field-thu-short-relative+-1":"sist tor.","field-zone":"tidssone","field-dayperiod-narrow":"am/pm","field-sun-short-relative+-1":"sist søn.","dayPeriods-standAlone-narrow-morning1":"mg.","dayPeriods-standAlone-narrow-morning2":"fm.","eraAbbr":["f.Kr.","e.Kr."],"field-week-short":"uke","dayPeriods-standAlone-abbr-am":"a.m.","dayPeriods-standAlone-wide-pm":"p.m.","dateFormatItem-ms":"mm:ss","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-day-relative+2":"i overmorgen","field-day-short-relative+0":"i dag","field-dayOfYear-short":"dag i året","field-day-short-relative+1":"i morgen","dateFormat-long":"d. MMMM y","field-day-short-relative+2":"i overmorgen","field-sun-narrow-relative+-1":"sist sø.","field-second-relative+0":"nå","field-quarter-relative+-1":"forrige kvartal","dayPeriods-format-narrow-night1":"nt.","quarters-format-abbr":["K1","K2","K3","K4"],"dayPeriods-standAlone-narrow-night1":"nt.","field-week-relative+-1":"forrige uke","dayPeriods-format-abbr-morning1":"morg.","field-month-relative+-1":"forrige måned","dayPeriods-format-abbr-morning2":"form.","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year":"år","field-era":"tidsalder","dayPeriods-standAlone-abbr-morning1":"morg.","dayPeriods-standAlone-abbr-morning2":"form.","days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"quarters-format-narrow":["1.","2.","3.","4."],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"i går","field-day-short-relative+-2":"i forgårs","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"time","field-dayOfYear-narrow":"d. i året","field-second-narrow-relative+0":"nå","field-quarter":"kvartal","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","dateFormatItem-MMdd":"d.M.","field-day":"dag","field-mon-relative+-1":"forrige mandag","field-dayOfYear":"dag i året","dateFormat-medium":"d. MMM y","dateTimeFormat-short":"{1}, {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d. MMM y G","dateFormatItem-MEd":"E d.M.","field-tue-short-relative+-1":"sist tir.","field-year-short":"år","field-month-short":"mnd.","dateFormatItem-MMMEd":"E d. MMM","dayPeriods-format-wide-afternoon1":"på ettermiddagen","dateFormatItem-MMMd":"d. MMM","dateFormatItem-Bh":"h B","months-format-abbr":["jan.","feb.","mar.","apr.","mai","jun.","jul.","aug.","sep.","okt.","nov.","des."],"dayPeriods-format-abbr-am":"a.m.","field-sat-relative+0":"lørdag","field-sat-relative+1":"neste lørdag","dayPeriods-format-wide-pm":"p.m.","days-standAlone-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"field-zone-short":"tidssone","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","dayPeriods-standAlone-wide-afternoon1":"ettermiddag","field-fri-short-relative+-1":"sist fre.","field-month-narrow":"md.","dayPeriods-format-narrow-am":"a","field-month-narrow-relative+-1":"forrige md.","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"field-weekday-short":"ukedag","field-day-narrow-relative+-1":"i går","field-day-narrow-relative+-2":"-2 d.","field-quarter-short":"kv.","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-EHm":"E 'kl'. HH:mm","field-quarter-narrow":"kv.","field-mon-short-relative+0":"denne man.","field-mon-short-relative+1":"neste man.","field-dayperiod-short":"am/pm","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"forrige uke","field-thu-relative+-1":"forrige torsdag","field-fri-narrow-relative+-1":"sist fr.","field-mon-short-relative+-1":"sist man.","timeFormat-medium":"HH.mm.ss","field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","dateFormatItem-Ed":"E d.","field-wed-relative+-1":"forrige onsdag","field-weekOfMonth":"uke i måneden","field-weekdayOfMonth-narrow":"uked. i md.","dayPeriods-standAlone-wide-am":"a.m.","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"forrige fredag","field-minute":"minutt","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-second-short-relative+0":"nå","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"field-day-short":"dag","field-dayperiod":"a.m./p.m.","field-hour-short":"t","months-standAlone-abbr":["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],"field-month-relative+0":"denne måneden","field-second-narrow":"s","field-month-relative+1":"neste måned","dateFormat-full":"EEEE d. MMMM y","field-era-narrow":"tidsalder","field-sat-short-relative+-1":"sist lør.","field-week-short-relative+-1":"forrige uke","dateTimeFormat-long":"{1} 'kl'. {0}","dateFormatItem-yM":"M.y","field-sun-relative+-1":"forrige søndag","field-wed-short-relative+-1":"sist ons.","field-weekdayOfMonth":"ukedag i måneden","field-quarter-narrow-relative+0":"dette kv.","dateFormatItem-GyMMMEd":"E d. MMM y G","field-quarter-narrow-relative+1":"neste kv.","field-sat-short-relative+0":"denne lør.","field-hour-narrow":"t","field-sat-short-relative+1":"neste lør.","field-year-narrow-relative+0":"i år","field-year-narrow-relative+1":"neste år","dateFormatItem-Gy":"y G","field-zone-narrow":"tidssone","field-tue-relative+-1":"forrige tirsdag","field-minute-short":"min","dateFormatItem-yw":"'uke' w 'i' Y","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"denne uken","field-week-relative+1":"neste uke","dateFormatItem-MMM":"LLL","field-sun-relative+0":"søndag","field-sun-relative+1":"neste søndag","field-sat-narrow-relative+-1":"sist lø.","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-MMMMW":"W. 'uke' 'i' MMMM","field-month-short-relative+-1":"forrige md.","dateFormatItem-EHms":"E 'kl'. HH:mm:ss","dateFormatItem-MMMMd":"d. MMMM","field-week":"uke","field-day-narrow":"d."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/hebrew.js b/lib/dojo/cldr/nls/nb/hebrew.js
index 7517c540f..22902e4a7 100644
--- a/lib/dojo/cldr/nls/nb/hebrew.js
+++ b/lib/dojo/cldr/nls/nb/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nb/hebrew",{"days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"field-second-relative+0":"nå","field-weekday":"Ukedag","field-wed-relative+0":"onsdag denne uken","field-wed-relative+1":"onsdag neste uke","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"E d. MMM","field-tue-relative+-1":"tirsdag sist uke","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"fredag sist uke","field-wed-relative+-1":"onsdag sist uke","dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d.M.y G","field-thu-relative+-1":"torsdag sist uke","dateFormatItem-Md":"d.M.","dayPeriods-format-abbr-am":"a.m.","field-era":"Tidsalder","timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","field-year":"År","field-hour":"Time","field-sat-relative+0":"lørdag denne uken","field-sat-relative+1":"lørdag neste uke","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-thu-relative+0":"torsdag denne uken","field-day-relative+1":"i morgen","field-thu-relative+1":"torsdag neste uke","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"i overmorgen","quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-M":"L.","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"søndag denne uken","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"søndag neste uke","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["AM"],"field-minute":"Minutt","field-dayperiod":"AM/PM","days-standAlone-abbr":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M","field-fri-relative+0":"fredag denne uken","field-fri-relative+1":"fredag neste uke","field-day":"Dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"Tidssone","dateFormatItem-y":"y G","field-year-relative+-1":"i fjor","field-month-relative+-1":"forrige måned","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMd":"d.M.y G","field-month":"Måned","days-standAlone-narrow":["S","M","T","O","T","F","L"],"field-tue-relative+0":"tirsdag denne uken","field-tue-relative+1":"tirsdag neste uke","dayPeriods-format-wide-am":"a.m.","field-mon-relative+0":"mandag denne uken","field-mon-relative+1":"mandag neste uke","dateFormat-short":"d.M. y G","field-second":"Sekund","field-sat-relative+-1":"lørdag sist uke","field-sun-relative+-1":"søndag sist uke","field-month-relative+0":"denne måneden","field-month-relative+1":"neste måned","dateFormatItem-Ed":"E d.","field-week":"Uke","dateFormat-medium":"d. MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"forrige uke","dateFormatItem-yyyyM":"M.y G","field-year-relative+1":"neste år","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"mandag sist uke","dateFormatItem-yyyy":"y G","field-week-relative+0":"denne uken","field-week-relative+1":"neste uke"}); \ No newline at end of file
+define("dojo/cldr/nls/nb/hebrew",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","timeFormat-short":"HH.mm","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-thu-short-relative+0":"denne tor.","field-day-short-relative+-1":"i går","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"neste tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dayPeriods-format-narrow-am":"a","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["AM"],"field-weekOfMonth":"uke i måneden","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AM"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"am/pm","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"forrige uke","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d.M.","field-hour":"time","months-format-wide":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","months-format-abbr":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M.y G","field-thu-short-relative+-1":"sist tor.","field-year-narrow-relative+-1":"i fjor","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-M":"L.","months-standAlone-wide":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","days-standAlone-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","months-format-abbr-leap":"adar II","dateFormatItem-d":"d.","field-weekday":"ukedag","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","months-standAlone-abbr":["tishri","heshvan","kislev","tevet","shevat","adar I","adar","nisan","iyar","sivan","tamuz","av","elul"],"months-format-wide-leap":"adar II","months-format-narrow-leap":"7","field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-MEd":"E d.M","field-zone-narrow":"tidssone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"field-week-short-relative+-1":"forrige uke","months-standAlone-abbr-leap":"adar II","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"tidssone","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","eraNarrow":"AM","field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","months-standAlone-wide-leap":"adar II","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"field-sun-relative+0":"søndag","dateFormatItem-MMdd":"d.M.","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr.","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/indian.js b/lib/dojo/cldr/nls/nb/indian.js
new file mode 100644
index 000000000..92ca0bcf9
--- /dev/null
+++ b/lib/dojo/cldr/nls/nb/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/nb/indian",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"denne tor.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-thu-short-relative+1":"neste tor.","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["saka"],"field-weekOfMonth":"uke i måneden","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["saka"],"dateFormatItem-yyyyM":"M.y G","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"am/pm","field-week-narrow-relative+-1":"forrige uke","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d.M.","field-hour":"time","months-format-wide":["chaitra","vaisakha","jyaistha","asadha","sravana","bhadra","asvina","kartika","agrahayana","pausa","magha","phalguna"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","months-format-abbr":["chaitra","vaisakha","jyaistha","asadha","sravana","bhadra","asvina","kartika","agrahayana","pausa","magha","phalguna"],"field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M.y G","field-year-narrow-relative+-1":"i fjor","field-thu-short-relative+-1":"sist tor.","dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L.","months-standAlone-wide":["chaitra","vaisakha","jyaistha","asadha","sravana","bhadra","asvina","kartika","agrahayana","pausa","magha","phalguna"],"field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","months-standAlone-abbr":["chaitra","vaisakha","jyaistha","asadha","sravana","bhadra","asvina","kartika","agrahayana","pausa","magha","phalguna"],"field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","dateFormatItem-MEd":"E d.M","field-zone-narrow":"tidssone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"tidssone","field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","eraNarrow":"saka","field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","field-sun-relative+0":"søndag","dateFormatItem-MMdd":"d.M.","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/islamic.js b/lib/dojo/cldr/nls/nb/islamic.js
index bd395771a..1305652e3 100644
--- a/lib/dojo/cldr/nls/nb/islamic.js
+++ b/lib/dojo/cldr/nls/nb/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nb/islamic",{"days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"field-second-relative+0":"nå","field-weekday":"Ukedag","field-wed-relative+0":"onsdag denne uken","field-wed-relative+1":"onsdag neste uke","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-MMMEd":"E d. MMM","field-tue-relative+-1":"tirsdag sist uke","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"fredag sist uke","field-wed-relative+-1":"onsdag sist uke","dateFormatItem-yyyyQQQ":"QQQ y G","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d. MMMM y G","dateFormatItem-yyyyMEd":"E d.M.y G","field-thu-relative+-1":"torsdag sist uke","dateFormatItem-Md":"d.M.","dayPeriods-format-abbr-am":"a.m.","field-era":"Tidsalder","timeFormat-short":"HH.mm","quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"timeFormat-long":"HH.mm.ss z","field-year":"År","field-hour":"Time","field-sat-relative+0":"lørdag denne uken","field-sat-relative+1":"lørdag neste uke","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"i dag","field-thu-relative+0":"torsdag denne uken","field-day-relative+1":"i morgen","field-thu-relative+1":"torsdag neste uke","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"i overmorgen","quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d. MMM y G","dateFormatItem-M":"L.","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"søndag denne uken","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"søndag neste uke","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["AH"],"field-minute":"Minutt","field-dayperiod":"AM/PM","days-standAlone-abbr":["sø.","ma.","ti.","on.","to.","fr.","lø."],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E d.M","field-fri-relative+0":"fredag denne uken","field-fri-relative+1":"fredag neste uke","field-day":"Dag","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-zone":"Tidssone","dateFormatItem-y":"y G","field-year-relative+-1":"i fjor","field-month-relative+-1":"forrige måned","dateFormatItem-hm":"h.mm a","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMd":"d.M.y G","field-month":"Måned","days-standAlone-narrow":["S","M","T","O","T","F","L"],"field-tue-relative+0":"tirsdag denne uken","field-tue-relative+1":"tirsdag neste uke","dayPeriods-format-wide-am":"a.m.","field-mon-relative+0":"mandag denne uken","field-mon-relative+1":"mandag neste uke","dateFormat-short":"d.M. y G","field-second":"Sekund","field-sat-relative+-1":"lørdag sist uke","field-sun-relative+-1":"søndag sist uke","field-month-relative+0":"denne måneden","field-month-relative+1":"neste måned","dateFormatItem-Ed":"E d.","field-week":"Uke","dateFormat-medium":"d. MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"forrige uke","dateFormatItem-yyyyM":"M.y G","field-year-relative+1":"neste år","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"h.mm.ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"mandag sist uke","dateFormatItem-yyyy":"y G","field-week-relative+0":"denne uken","field-week-relative+1":"neste uke"}); \ No newline at end of file
+define("dojo/cldr/nls/nb/islamic",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","timeFormat-short":"HH.mm","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-thu-short-relative+0":"denne tor.","field-day-short-relative+-1":"i går","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"neste tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dayPeriods-format-narrow-am":"a","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AH"],"field-weekOfMonth":"uke i måneden","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AH"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"am/pm","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"forrige uke","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d.M.","field-hour":"time","months-format-wide":["muharram","safar","rabiʻ I","rabiʻ II","jumada I","jumada II","rajab","shaʻban","ramadan","shawwal","dhuʻl-qiʻdah","dhuʻl-hijjah"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","months-format-abbr":["muh.","saf.","rab. I","rab. II","jum. I","jum. II","raj.","sha.","ram.","shaw.","dhuʻl-q.","dhuʻl-h."],"field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M.y G","field-thu-short-relative+-1":"sist tor.","field-year-narrow-relative+-1":"i fjor","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-M":"L.","months-standAlone-wide":["muharram","safar","rabiʻ I","rabiʻ II","jumada I","jumada II","rajab","shaʻban","ramadan","shawwal","dhuʻl-qiʻdah","dhuʻl-hijjah"],"field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","days-standAlone-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","months-standAlone-abbr":["muh.","saf.","rab. I","rab. II","jum. I","jum. II","raj.","sha.","ram.","shaw.","dhuʻl-q.","Dhuʻl-H."],"field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-MEd":"E d.M","field-zone-narrow":"tidssone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"tidssone","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","eraNarrow":"AH","field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"field-sun-relative+0":"søndag","dateFormatItem-MMdd":"d.M.","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr.","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/japanese.js b/lib/dojo/cldr/nls/nb/japanese.js
index 9d3cc0857..54873436d 100644
--- a/lib/dojo/cldr/nls/nb/japanese.js
+++ b/lib/dojo/cldr/nls/nb/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nb/japanese",{"field-sat-relative+0":"lørdag denne uken","field-sat-relative+1":"lørdag neste uke","field-dayperiod":"AM/PM","field-sun-relative+-1":"søndag sist uke","field-mon-relative+-1":"mandag sist uke","field-minute":"Minutt","field-day-relative+-1":"i går","field-weekday":"Ukedag","field-day-relative+-2":"i forgårs","field-era":"Tidsalder","field-hour":"Time","field-sun-relative+0":"søndag denne uken","field-sun-relative+1":"søndag neste uke","field-wed-relative+-1":"onsdag sist uke","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","field-day-relative+2":"i overmorgen","dateFormat-long":"d. MMMM y G","field-tue-relative+0":"tirsdag denne uken","field-zone":"Tidssone","field-tue-relative+1":"tirsdag neste uke","field-week-relative+-1":"forrige uke","dateFormat-medium":"d. MMM y G","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-sat-relative+-1":"lørdag sist uke","field-year-relative+-1":"i fjor","field-year":"År","field-fri-relative+0":"fredag denne uken","field-fri-relative+1":"fredag neste uke","field-week":"Uke","field-week-relative+0":"denne uken","field-week-relative+1":"neste uke","field-month-relative+0":"denne måneden","field-month":"Måned","field-month-relative+1":"neste måned","field-fri-relative+-1":"fredag sist uke","field-second":"Sekund","field-tue-relative+-1":"tirsdag sist uke","field-day":"Dag","field-mon-relative+0":"mandag denne uken","field-mon-relative+1":"mandag neste uke","field-thu-relative+0":"torsdag denne uken","field-second-relative+0":"nå","dateFormat-short":"d.M y G","field-thu-relative+1":"torsdag neste uke","dateFormat-full":"EEEE d. MMMM y G","field-wed-relative+0":"onsdag denne uken","field-wed-relative+1":"onsdag neste uke","field-month-relative+-1":"forrige måned","field-thu-relative+-1":"torsdag sist uke"}); \ No newline at end of file
+define("dojo/cldr/nls/nb/japanese",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"denne tor.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-thu-short-relative+1":"neste tor.","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749-749)","Tenpyō-shōhō (749-757)","Tenpyō-hōji (757-765)","Tenpyō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770–780)","Ten-ō (781-782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857-859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kahō (1094–1096)","Eichō (1096–1097)","Jōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110-1113)","Eikyū (1113–1118)","Gen’ei (1118–1120)","Hōan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hōen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hōgen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken’ei (1206–1207)","Jōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Jōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tenpuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En’ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun’ō (1260–1261)","Kōchō (1261–1264)","Bun’ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkyō (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkō (1321–1324)","Shōchū (1324–1326)","Karyaku (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kenmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun’an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenbun (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genna (1615–1624)","Kan’ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Jōō (1652–1655)","Meireki (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenna (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan’en (1748–1751)","Hōreki (1751–1764)","Meiwa (1764–1772)","An’ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man’en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","Meiji","Taishō","Shōwa","Heisei"],"field-weekOfMonth":"uke i måneden","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749-749)","Tenpyō-shōhō (749-757)","Tenpyō-hōji (757-765)","Tenpyō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770–780)","Ten-ō (781-782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857-859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kahō (1094–1096)","Eichō (1096–1097)","Jōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110-1113)","Eikyū (1113–1118)","Gen’ei (1118–1120)","Hōan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hōen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hōgen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken’ei (1206–1207)","Jōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Jōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tenpuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En’ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun’ō (1260–1261)","Kōchō (1261–1264)","Bun’ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkyō (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkō (1321–1324)","Shōchū (1324–1326)","Karyaku (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kenmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun’an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenbun (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genna (1615–1624)","Kan’ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Jōō (1652–1655)","Meireki (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenna (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan’en (1748–1751)","Hōreki (1751–1764)","Meiwa (1764–1772)","An’ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man’en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","Meiji","Taishō","Shōwa","Heisei"],"dateFormatItem-yyyyM":"M.y G","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"am/pm","field-week-narrow-relative+-1":"forrige uke","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d.M.","field-hour":"time","dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M y G","field-year-narrow-relative+-1":"i fjor","field-thu-short-relative+-1":"sist tor.","dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L.","field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","dateFormatItem-MEd":"E d.M","field-zone-narrow":"tidssone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"tidssone","field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","eraNarrow":["M","T","S","H"],"field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","field-sun-relative+0":"søndag","dateFormatItem-MMdd":"d.M.","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/number.js b/lib/dojo/cldr/nls/nb/number.js
index 375dacd74..4f3e77b7d 100644
--- a/lib/dojo/cldr/nls/nb/number.js
+++ b/lib/dojo/cldr/nls/nb/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nb/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"−","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00","plusSign":"+","decimalFormat-long":"000 billioner","decimalFormat-short":"000 bill"}); \ No newline at end of file
+define("dojo/cldr/nls/nb/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","decimalFormat-short":"000 bill'.'","nan":"NaN","plusSign":"+","currencyFormat":"¤ #,##0.00","perMille":"‰","approximatelySign":"ca.","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 billioner","decimalFormat":"#,##0.###","currencyFormat-short":"¤ 000 bill'.'","timeSeparator":".","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/persian.js b/lib/dojo/cldr/nls/nb/persian.js
new file mode 100644
index 000000000..e4b00825d
--- /dev/null
+++ b/lib/dojo/cldr/nls/nb/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/nb/persian",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","timeFormat-short":"HH.mm","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-thu-short-relative+0":"denne tor.","field-day-short-relative+-1":"i går","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"neste tor.","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dayPeriods-format-narrow-am":"a","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AP"],"field-weekOfMonth":"uke i måneden","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","quarters-standAlone-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AP"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"M.y G","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"am/pm","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"forrige uke","days-format-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d.M.","field-hour":"time","months-format-wide":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","months-format-abbr":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M.y G","field-thu-short-relative+-1":"sist tor.","field-year-narrow-relative+-1":"i fjor","days-standAlone-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-M":"L.","months-standAlone-wide":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","days-standAlone-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","months-standAlone-abbr":["farvardin","ordibehesht","khordad","tir","mordad","shahrivar","mehr","aban","azar","dey","bahman","esfand"],"field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","timeFormat-full":"HH.mm.ss zzzz","dateFormatItem-MEd":"E d.M","field-zone-narrow":"tidssone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. kvartal","2. kvartal","3. kvartal","4. kvartal"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","days-standAlone-short":["sø.","ma.","ti.","on.","to.","fr.","lø."],"field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"tidssone","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","eraNarrow":"AP","field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","days-format-wide":["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],"field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","days-format-abbr":["søn.","man.","tir.","ons.","tor.","fre.","lør."],"field-sun-relative+0":"søndag","dateFormatItem-MMdd":"d.M.","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr.","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nb/roc.js b/lib/dojo/cldr/nls/nb/roc.js
index ab6cab6e6..c314a83e6 100644
--- a/lib/dojo/cldr/nls/nb/roc.js
+++ b/lib/dojo/cldr/nls/nb/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nb/roc",{"field-sat-relative+0":"lørdag denne uken","field-sat-relative+1":"lørdag neste uke","field-dayperiod":"AM/PM","field-sun-relative+-1":"søndag sist uke","field-mon-relative+-1":"mandag sist uke","field-minute":"Minutt","field-day-relative+-1":"i går","field-weekday":"Ukedag","field-day-relative+-2":"i forgårs","field-era":"Tidsalder","field-hour":"Time","field-sun-relative+0":"søndag denne uken","field-sun-relative+1":"søndag neste uke","field-wed-relative+-1":"onsdag sist uke","field-day-relative+0":"i dag","field-day-relative+1":"i morgen","eraAbbr":["Before R.O.C.","Minguo"],"field-day-relative+2":"i overmorgen","field-tue-relative+0":"tirsdag denne uken","field-zone":"Tidssone","field-tue-relative+1":"tirsdag neste uke","field-week-relative+-1":"forrige uke","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-sat-relative+-1":"lørdag sist uke","field-year-relative+-1":"i fjor","field-year":"År","field-fri-relative+0":"fredag denne uken","field-fri-relative+1":"fredag neste uke","field-week":"Uke","field-week-relative+0":"denne uken","field-week-relative+1":"neste uke","field-month-relative+0":"denne måneden","field-month":"Måned","field-month-relative+1":"neste måned","field-fri-relative+-1":"fredag sist uke","field-second":"Sekund","field-tue-relative+-1":"tirsdag sist uke","field-day":"Dag","field-mon-relative+0":"mandag denne uken","field-mon-relative+1":"mandag neste uke","field-thu-relative+0":"torsdag denne uken","field-second-relative+0":"nå","field-thu-relative+1":"torsdag neste uke","field-wed-relative+0":"onsdag denne uken","field-wed-relative+1":"onsdag neste uke","field-month-relative+-1":"forrige måned","field-thu-relative+-1":"torsdag sist uke"}); \ No newline at end of file
+define("dojo/cldr/nls/nb/roc",{"field-quarter-short-relative+0":"dette kv.","field-quarter-short-relative+1":"neste kv.","field-tue-relative+-1":"forrige tirsdag","field-year":"år","field-wed-relative+0":"onsdag","field-wed-relative+1":"neste onsdag","field-minute":"minutt","field-month-narrow-relative+-1":"forrige md.","field-tue-narrow-relative+0":"denne ti.","field-tue-narrow-relative+1":"neste ti.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"denne tor.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i forgårs","field-thu-short-relative+1":"neste tor.","field-day-relative+1":"i morgen","field-week-narrow-relative+0":"denne uken","field-day-relative+2":"i overmorgen","field-week-narrow-relative+1":"neste uke","field-wed-narrow-relative+-1":"sist on.","field-year-narrow":"år","field-era-short":"tidsalder","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tirsdag","field-year-narrow-relative+1":"neste år","field-tue-relative+1":"neste tirsdag","field-weekdayOfMonth":"ukedag i måneden","field-second-short":"sek","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"uked. i md.","field-week-relative+0":"denne uken","field-month-relative+0":"denne måneden","field-week-relative+1":"neste uke","field-month-relative+1":"neste måned","field-sun-narrow-relative+0":"denne sø.","field-mon-short-relative+0":"denne man.","field-sun-narrow-relative+1":"neste sø.","field-mon-short-relative+1":"neste man.","field-second-relative+0":"nå","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["Før R.O.C.","Minguo"],"field-weekOfMonth":"uke i måneden","field-month-short":"mnd.","dateFormatItem-GyMMMEd":"E d. MMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-day":"dag","field-dayOfYear-short":"dag i året","field-year-relative+-1":"i fjor","field-sat-short-relative+-1":"sist lør.","field-hour-relative+0":"denne timen","dateFormatItem-yyyyMEd":"E d.M.y G","field-second-short-relative+0":"nå","field-wed-relative+-1":"forrige onsdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sist lø.","field-second":"sekund","dateFormat-long":"d. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"kvartal","field-week-short":"uke","field-day-narrow-relative+0":"i dag","field-day-narrow-relative+1":"i morgen","field-day-narrow-relative+2":"+2 d.","field-tue-short-relative+0":"denne tir.","field-tue-short-relative+1":"neste tir.","field-month-short-relative+-1":"forrige md.","field-mon-relative+-1":"forrige mandag","dateFormatItem-GyMMM":"MMM y G","field-month":"måned","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"denne lør.","field-sat-short-relative+1":"neste lør.","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["Før ROC","Minguo"],"dateFormatItem-yyyyM":"M.y G","field-second-narrow":"s","field-mon-relative+0":"mandag","field-mon-relative+1":"neste mandag","field-day-narrow-relative+-1":"i går","field-year-short":"år","field-day-narrow-relative+-2":"-2 d.","field-quarter-relative+-1":"forrige kvartal","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"am/pm","field-week-narrow-relative+-1":"forrige uke","field-dayOfYear":"dag i året","field-sat-relative+-1":"forrige lørdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d.M.","field-hour":"time","dateFormat-full":"EEEE d. MMMM y G","field-month-relative+-1":"forrige måned","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denne lø.","field-fri-relative+0":"fredag","field-sat-narrow-relative+1":"neste lø.","field-fri-relative+1":"neste fredag","field-month-narrow-relative+0":"denne md.","field-month-narrow-relative+1":"neste md.","field-sun-short-relative+0":"denne søn.","field-sun-short-relative+1":"neste søn.","field-week-relative+-1":"forrige uke","field-quarter-short-relative+-1":"forrige kv.","field-quarter-relative+0":"dette kvartalet","field-minute-relative+0":"dette minuttet","field-quarter-relative+1":"neste kvartal","field-wed-short-relative+-1":"sist ons.","dateFormat-short":"d.M.y G","field-year-narrow-relative+-1":"i fjor","field-thu-short-relative+-1":"sist tor.","dateFormatItem-yyyyMMMEd":"E d. MMM y G","field-mon-narrow-relative+-1":"sist ma.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"sist to.","dateFormatItem-E":"ccc","field-weekOfMonth-short":"uke i mnd.","field-tue-narrow-relative+-1":"sist ti.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L.","field-wed-short-relative+0":"denne ons.","field-wed-short-relative+1":"neste ons.","field-sun-relative+-1":"forrige søndag","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nå","dateFormatItem-d":"d.","field-weekday":"ukedag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"dette kv.","field-day-short-relative+1":"i morgen","field-sat-relative+0":"lørdag","field-quarter-narrow-relative+1":"neste kv.","field-day-short-relative+2":"i overmorgen","field-sat-relative+1":"neste lørdag","field-week-short-relative+0":"denne uken","field-week-short-relative+1":"neste uke","field-dayOfYear-narrow":"d. i året","field-month-short-relative+0":"denne md.","field-month-short-relative+1":"neste md.","field-weekdayOfMonth-short":"uked. i mnd.","dateFormatItem-MEd":"E d.M","field-zone-narrow":"tidssone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denne to.","field-sun-narrow-relative+-1":"sist sø.","field-mon-short-relative+-1":"sist man.","field-thu-narrow-relative+1":"neste to.","field-thu-relative+0":"torsdag","field-thu-relative+1":"neste torsdag","field-fri-short-relative+-1":"sist fre.","field-thu-relative+-1":"forrige torsdag","field-week":"uke","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"denne on.","field-wed-narrow-relative+1":"neste on.","field-quarter-narrow-relative+-1":"forrige kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"am/pm","field-year-short-relative+1":"neste år","field-fri-short-relative+0":"denne fre.","field-fri-short-relative+1":"neste fre.","field-week-short-relative+-1":"forrige uke","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"t","field-zone-short":"tidssone","field-month-narrow":"md.","field-hour-narrow":"t","field-fri-narrow-relative+-1":"sist fr.","field-year-relative+0":"i år","field-year-relative+1":"neste år","field-era-narrow":"tidsalder","field-fri-relative+-1":"forrige fredag","eraNarrow":"Minguo","field-tue-short-relative+-1":"sist tir.","field-minute-narrow":"m","field-mon-narrow-relative+0":"denne ma.","field-mon-narrow-relative+1":"neste ma.","field-year-short-relative+-1":"i fjor","field-zone":"tidssone","dateFormatItem-MMMEd":"E d. MMM","field-weekOfMonth-narrow":"uke i md.","field-weekday-narrow":"uked.","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sist søn.","field-day-relative+-1":"i går","field-day-relative+-2":"i forgårs","field-weekday-short":"ukedag","field-sun-relative+0":"søndag","dateFormatItem-MMdd":"d.M.","field-sun-relative+1":"neste søndag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"u.","field-era":"tidsalder","field-fri-narrow-relative+0":"denne fr.","field-fri-narrow-relative+1":"neste fr."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/buddhist.js b/lib/dojo/cldr/nls/nl/buddhist.js
index 369fcaa90..3bb470564 100644
--- a/lib/dojo/cldr/nls/nl/buddhist.js
+++ b/lib/dojo/cldr/nls/nl/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/buddhist",{"days-standAlone-short":["Zo","Ma","Di","Wo","Do","Vr","Za"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"nu","field-weekday":"Dag van de week","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"afgelopen dinsdag","days-format-short":["zo","ma","di","wo","do","vr","za"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"afgelopen vrijdag","field-wed-relative+-1":"afgelopen woensdag","months-format-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-Md":"d-M","dayPeriods-format-wide-noon":"12 uur ‘s middags","field-era":"Tijdperk","months-standAlone-wide":["Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December"],"quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"field-year":"Jaar","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"Uur","months-format-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-day-relative+0":"vandaag","field-thu-relative+0":"deze donderdag","field-day-relative+1":"morgen","field-thu-relative+1":"volgende week donderdag","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"overmorgen","months-standAlone-abbr":["Jan.","Feb.","Mrt.","Apr.","Mei","Jun.","Jul.","Aug.","Sep.","Okt.","Nov.","Dec."],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","days-standAlone-wide":["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","dayPeriods-format-abbr-noon":"12 uur ‘s middags","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["BE"],"field-minute":"Minuut","field-dayperiod":"a.m./p.m.","days-standAlone-abbr":["Zo","Ma","Di","Wo","Do","Vr","Za"],"dateFormatItem-d":"d","field-day-relative+-1":"gisteren","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"eergisteren","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d-M","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","field-day":"Dag","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-zone":"Zone","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"vorig jaar","field-month-relative+-1":"vorige maand","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-yyyyMd":"d-M-y GGGGG","field-month":"Maand","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"field-tue-relative+0":"deze dinsdag","field-tue-relative+1":"volgende week dinsdag","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","dateFormat-short":"dd-MM-yy GGGGG","field-second":"Seconde","field-sat-relative+-1":"afgelopen zaterdag","field-sun-relative+-1":"afgelopen zondag","field-month-relative+0":"deze maand","field-month-relative+1":"volgende maand","dateFormatItem-Ed":"E d","field-week":"Week","dateFormat-medium":"d MMM y G","field-year-relative+0":"dit jaar","field-week-relative+-1":"vorige week","dateFormatItem-yyyyM":"M-y GGGGG","field-year-relative+1":"volgend jaar","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"deze week","field-week-relative+1":"volgende week"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/buddhist",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-thu-short-relative+0":"deze donder.","field-day-short-relative+-1":"gisteren","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"volgende week donder.","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["BE"],"field-weekOfMonth":"week van de maand","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM y G","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dayPeriods-format-narrow-pm":"p.m.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["BE"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"M-y GGGGG","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m./p.m.","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"vorige week","days-format-short":["zo","ma","di","wo","do","vr","za"],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d-M","field-minute-narrow-relative+0":"binnen een minuut","field-hour":"uur","months-format-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","months-format-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy GGGGG","field-thu-short-relative+-1":"afgelopen donder.","field-year-narrow-relative+-1":"vorig jaar","days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"afgelopen di","field-weekOfMonth-short":"wk van de mnd","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-M":"L","field-wed-short-relative+0":"deze woens.","months-standAlone-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","months-standAlone-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","days-standAlone-short":["zo","ma","di","wo","do","vr","za"],"field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"uur","field-zone-short":"zone","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","eraNarrow":"BE","field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/chinese.js b/lib/dojo/cldr/nls/nl/chinese.js
index dc595996c..bf8508959 100644
--- a/lib/dojo/cldr/nls/nl/chinese.js
+++ b/lib/dojo/cldr/nls/nl/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/chinese",{"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"nu","field-weekday":"Dag van de week","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-GyMMMEd":"E d MMM U","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"afgelopen dinsdag","dateFormat-long":"d MMMM U","field-fri-relative+-1":"afgelopen vrijdag","field-wed-relative+-1":"afgelopen woensdag","dateFormatItem-yyyyQQQ":"QQQ U","dateFormat-full":"EEEE d MMMM U","dateFormatItem-yyyyMEd":"E d-M-y","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-Md":"d-M","field-era":"Tijdperk","field-year":"Jaar","dateFormatItem-yyyyMMMM":"MMMM U","field-hour":"Uur","field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-day-relative+0":"vandaag","field-thu-relative+0":"deze donderdag","field-day-relative+1":"morgen","dateFormatItem-GyMMMd":"d MMM U","field-day-relative+2":"overmorgen","field-thu-relative+1":"volgende week donderdag","dateFormatItem-H":"HH","dateFormatItem-Gy":"U","dateFormatItem-yyyyMMMEd":"E d MMM U","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM U","dateFormatItem-yyyyMMMd":"d MMM U","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"deze zondag","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"volgende week zondag","field-minute":"Minuut","field-dayperiod":"a.m./p.m.","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"gisteren","dateFormatItem-h":"h a","field-day-relative+-2":"eergisteren","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d-M","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","field-day":"Dag","field-zone":"Zone","dateFormatItem-y":"U","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"vorig jaar","field-month-relative+-1":"vorige maand","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d-M-y","field-month":"Maand","dateFormatItem-MMM":"LLL","field-tue-relative+0":"deze dinsdag","field-tue-relative+1":"volgende week dinsdag","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","dateFormat-short":"dd-MM-yy","field-second":"Seconde","field-sat-relative+-1":"afgelopen zaterdag","field-sun-relative+-1":"afgelopen zondag","field-month-relative+0":"deze maand","field-month-relative+1":"volgende maand","dateFormatItem-Ed":"E d","field-week":"Week","dateFormat-medium":"d MMM U","field-year-relative+0":"dit jaar","field-week-relative+-1":"vorige week","dateFormatItem-yyyyM":"M-y","field-year-relative+1":"volgend jaar","dateFormatItem-yyyyQQQQ":"QQQQ U","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM U","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-yyyy":"U","field-week-relative+0":"deze week","field-week-relative+1":"volgende week"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/chinese",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-ms":"mm:ss","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-day-short-relative+-1":"gisteren","field-thu-short-relative+0":"deze donder.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-thu-short-relative+1":"volgende week donder.","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ U","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"week van de maand","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM U","dateFormatItem-yyyyMd":"d-M-y","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","dateFormat-long":"d MMMM U","dateFormatItem-GyMMMd":"d MMM U","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM U","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dateFormat-medium":"d MMM U","dateFormatItem-yyyyMMMM":"MMMM U","dateFormatItem-UMMM":"U MMM","dateFormatItem-yyyyM":"M-y","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-2":"eergisteren","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM U","field-dayperiod-narrow":"a.m./p.m.","field-week-narrow-relative+-1":"vorige week","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d-M","field-hour":"uur","field-minute-narrow-relative+0":"binnen een minuut","months-format-wide":["maand 1","maand 2","maand 3","maand 4","maand 5","maand 6","maand 7","maand 8","maand 9","maand 10","maand 11","maand 12"],"dateFormat-full":"EEEE d MMMM U","dateFormatItem-UMd":"U MM-d","field-month-relative+-1":"vorige maand","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","months-format-abbr":["mnd 1","mnd 2","mnd 3","mnd 4","mnd 5","mnd 6","mnd 7","mnd 8","mnd 9","mnd 10","mnd 11","mnd 12"],"field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"vorig jaar","field-thu-short-relative+-1":"afgelopen donder.","dateFormatItem-yyyyMMMEd":"E d MMM U","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"wk van de mnd","field-tue-narrow-relative+-1":"afgelopen di","dateFormatItem-yyyy":"U","dateFormatItem-M":"L","months-standAlone-wide":["maand 1","maand 2","maand 3","maand 4","maand 5","maand 6","maand 7","maand 8","maand 9","maand 10","maand 11","maand 12"],"field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nu","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","dateFormatItem-h":"h a","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","months-standAlone-abbr":["mnd 1","mnd 2","mnd 3","mnd 4","mnd 5","mnd 6","mnd 7","mnd 8","mnd 9","mnd 10","mnd 11","mnd 12"],"field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"U","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-yMd":"y-MM-dd","field-week":"week","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM U","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ U","dateFormatItem-UMMMd":"U MMM d","field-hour-short":"uur","field-zone-short":"zone","field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"U","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","dateFormatItem-UM":"U MM","field-fri-narrow-relative+1":"volgende week vr"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/coptic.js b/lib/dojo/cldr/nls/nl/coptic.js
index 3e9221ea2..6eb09cfc0 100644
--- a/lib/dojo/cldr/nls/nl/coptic.js
+++ b/lib/dojo/cldr/nls/nl/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/coptic",{"field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-dayperiod":"a.m./p.m.","field-sun-relative+-1":"afgelopen zondag","field-mon-relative+-1":"afgelopen maandag","field-minute":"Minuut","field-day-relative+-1":"gisteren","field-weekday":"Dag van de week","field-day-relative+-2":"eergisteren","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"Tijdperk","field-hour":"Uur","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","months-standAlone-abbr":["Tut","Babah","Hatur","Kiyahk","Tubah","Amshir","Baramhat","Baramundah","Bashans","Ba’unah","Abib","Misra","Nasi"],"field-wed-relative+-1":"afgelopen woensdag","field-day-relative+0":"vandaag","field-day-relative+1":"morgen","field-day-relative+2":"overmorgen","field-tue-relative+0":"deze dinsdag","field-zone":"Zone","field-tue-relative+1":"volgende week dinsdag","field-week-relative+-1":"vorige week","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-sat-relative+-1":"afgelopen zaterdag","field-year-relative+-1":"vorig jaar","field-year":"Jaar","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","months-standAlone-wide":["Tut","Babah","Hatur","Kiyahk","Tubah","Amshir","Baramhat","Baramundah","Bashans","Ba’unah","Abib","Misra","Nasi"],"field-week":"Week","field-week-relative+0":"deze week","field-week-relative+1":"volgende week","months-format-abbr":["Tut","Babah","Hatur","Kiyahk","Tubah","Amshir","Baramhat","Baramundah","Bashans","Ba’unah","Abib","Misra","Nasi"],"field-month-relative+0":"deze maand","field-month":"Maand","field-month-relative+1":"volgende maand","field-fri-relative+-1":"afgelopen vrijdag","field-second":"Seconde","field-tue-relative+-1":"afgelopen dinsdag","field-day":"Dag","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-thu-relative+0":"deze donderdag","field-second-relative+0":"nu","field-thu-relative+1":"volgende week donderdag","months-format-wide":["Tut","Babah","Hatur","Kiyahk","Tubah","Amshir","Baramhat","Baramundah","Bashans","Ba’unah","Abib","Misra","Nasi"],"field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-month-relative+-1":"vorige maand","field-thu-relative+-1":"afgelopen donderdag"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/coptic",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-day-short-relative+-1":"gisteren","field-thu-short-relative+0":"deze donder.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-thu-short-relative+1":"volgende week donder.","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"field-weekOfMonth":"week van de maand","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM y G","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["ERA0","ERA1"],"dateFormatItem-yyyyM":"M-y GGGGG","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m./p.m.","field-week-narrow-relative+-1":"vorige week","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d-M","field-hour":"uur","field-minute-narrow-relative+0":"binnen een minuut","months-format-wide":["Tut","Babah","Hatur","Kiyahk","Tubah","Amshir","Baramhat","Baramundah","Bashans","Ba’unah","Abib","Misra","Nasi"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","months-format-abbr":["Tut","Babah","Hatur","Kiyahk","Tubah","Amshir","Baramhat","Baramundah","Bashans","Ba’unah","Abib","Misra","Nasi"],"field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy GGGGG","field-year-narrow-relative+-1":"vorig jaar","field-thu-short-relative+-1":"afgelopen donder.","dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","field-weekOfMonth-short":"wk van de mnd","field-tue-narrow-relative+-1":"afgelopen di","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","months-standAlone-wide":["Tut","Babah","Hatur","Kiyahk","Tubah","Amshir","Baramhat","Baramundah","Bashans","Ba’unah","Abib","Misra","Nasi"],"field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","months-standAlone-abbr":["Tut","Babah","Hatur","Kiyahk","Tubah","Amshir","Baramhat","Baramundah","Bashans","Ba’unah","Abib","Misra","Nasi"],"field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"uur","field-zone-short":"zone","field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/currency.js b/lib/dojo/cldr/nls/nl/currency.js
index 624c23dbf..49f68e278 100644
--- a/lib/dojo/cldr/nls/nl/currency.js
+++ b/lib/dojo/cldr/nls/nl/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/currency",{"HKD_displayName":"Hongkongse dollar","CHF_displayName":"Zwitserse frank","JPY_symbol":"JP¥","CAD_displayName":"Canadese dollar","HKD_symbol":"HK$","CNY_displayName":"Chinese yuan renminbi","USD_symbol":"US$","AUD_displayName":"Australische dollar","JPY_displayName":"Japanse yen","CAD_symbol":"C$","USD_displayName":"Amerikaanse dollar","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"Brits pond","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/currency",{"HKD_displayName":"Hongkongse dollar","CNY_displayName":"Chinese yuan","JPY_displayName":"Japanse yen","JPY_symbol":"JP¥","USD_displayName":"Amerikaanse dollar","CAD_symbol":"C$","GBP_displayName":"Brits pond","CHF_displayName":"Zwitserse frank","CNY_symbol":"CN¥","EUR_displayName":"Euro","GBP_symbol":"£","CAD_displayName":"Canadese dollar","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"Australische dollar","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/dangi.js b/lib/dojo/cldr/nls/nl/dangi.js
index 381090130..00977a602 100644
--- a/lib/dojo/cldr/nls/nl/dangi.js
+++ b/lib/dojo/cldr/nls/nl/dangi.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/dangi",{"field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-dayperiod":"a.m./p.m.","field-sun-relative+-1":"afgelopen zondag","field-mon-relative+-1":"afgelopen maandag","field-minute":"Minuut","field-day-relative+-1":"gisteren","field-weekday":"Dag van de week","field-day-relative+-2":"eergisteren","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"Tijdperk","field-hour":"Uur","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","field-wed-relative+-1":"afgelopen woensdag","field-day-relative+0":"vandaag","field-day-relative+1":"morgen","field-day-relative+2":"overmorgen","dateFormat-long":"d MMMM U","field-tue-relative+0":"deze dinsdag","field-zone":"Zone","field-tue-relative+1":"volgende week dinsdag","field-week-relative+-1":"vorige week","dateFormat-medium":"d MMM U","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-sat-relative+-1":"afgelopen zaterdag","field-year-relative+-1":"vorig jaar","field-year":"Jaar","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","field-week":"Week","field-week-relative+0":"deze week","field-week-relative+1":"volgende week","field-month-relative+0":"deze maand","field-month":"Maand","field-month-relative+1":"volgende maand","field-fri-relative+-1":"afgelopen vrijdag","field-second":"Seconde","field-tue-relative+-1":"afgelopen dinsdag","field-day":"Dag","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-thu-relative+0":"deze donderdag","field-second-relative+0":"nu","dateFormat-short":"dd-MM-yy","field-thu-relative+1":"volgende week donderdag","dateFormat-full":"EEEE d MMMM U","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-month-relative+-1":"vorige maand","field-thu-relative+-1":"afgelopen donderdag"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/dangi",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-day-short-relative+-1":"gisteren","field-thu-short-relative+0":"deze donder.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-thu-short-relative+1":"volgende week donder.","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ r (U)","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"week van de maand","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM r (U)","dateFormatItem-yyyyMd":"d-M-r","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-r","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","dateFormat-long":"d MMMM r (U)","dateFormatItem-GyMMMd":"d MMM r","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM r (U)","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dateFormat-medium":"d MMM r","dateFormatItem-yyyyMMMM":"MMMM r (U)","dateFormatItem-UMMM":"MMM U","dateFormatItem-yyyyM":"M-r","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM r","field-dayperiod-narrow":"a.m./p.m.","field-week-narrow-relative+-1":"vorige week","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d-M","field-hour":"uur","field-minute-narrow-relative+0":"binnen een minuut","months-format-wide":["maand 1","maand 2","maand 3","maand 4","maand 5","maand 6","maand 7","maand 8","maand 9","maand 10","maand 11","maand 12"],"dateFormat-full":"EEEE d MMMM r (U)","dateFormatItem-UMd":"d-MM U","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","months-format-abbr":["mnd 1","mnd 2","mnd 3","mnd 4","mnd 5","mnd 6","mnd 7","mnd 8","mnd 9","mnd 10","mnd 11","mnd 12"],"field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-r","field-year-narrow-relative+-1":"vorig jaar","field-thu-short-relative+-1":"afgelopen donder.","dateFormatItem-yyyyMMMEd":"E d MMM r (U)","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","field-weekOfMonth-short":"wk van de mnd","field-tue-narrow-relative+-1":"afgelopen di","dateFormatItem-yyyy":"r (U)","dateFormatItem-M":"L","months-standAlone-wide":["maand 1","maand 2","maand 3","maand 4","maand 5","maand 6","maand 7","maand 8","maand 9","maand 10","maand 11","maand 12"],"field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","months-standAlone-abbr":["mnd 1","mnd 2","mnd 3","mnd 4","mnd 5","mnd 6","mnd 7","mnd 8","mnd 9","mnd 10","mnd 11","mnd 12"],"field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"r (U)","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-yMd":"d-M-r","field-week":"week","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM r (U)","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ r (U)","dateFormatItem-UMMMd":"d MMM U","field-hour-short":"uur","field-zone-short":"zone","field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"r (U)","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","dateFormatItem-UM":"MM U","field-fri-narrow-relative+1":"volgende week vr"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/ethiopic-amete-alem.js b/lib/dojo/cldr/nls/nl/ethiopic-amete-alem.js
new file mode 100644
index 000000000..2053c4b48
--- /dev/null
+++ b/lib/dojo/cldr/nls/nl/ethiopic-amete-alem.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/nl/ethiopic-amete-alem",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-thu-short-relative+0":"deze donder.","field-day-short-relative+-1":"gisteren","field-thu-short-relative+1":"volgende week donder.","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","eraNames":["tijdperk 0"],"field-weekOfMonth":"week van de maand","field-month-short":"mnd","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","field-month":"maand","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","eraAbbr":["era 0"],"field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","field-quarter-relative+-1":"vorig kwartaal","field-dayperiod-narrow":"a.m./p.m.","field-week-narrow-relative+-1":"vorige week","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","field-hour":"uur","field-minute-narrow-relative+0":"binnen een minuut","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","field-thu-short-relative+-1":"afgelopen donder.","field-year-narrow-relative+-1":"vorig jaar","field-mon-narrow-relative+-1":"afgelopen ma","field-thu-narrow-relative+-1":"afgelopen do","field-tue-narrow-relative+-1":"afgelopen di","field-weekOfMonth-short":"wk van de mnd","field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","field-second-narrow-relative+0":"nu","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-sat-relative+0":"deze zaterdag","field-day-short-relative+1":"morgen","field-quarter-narrow-relative+1":"volgend kwartaal","field-sat-relative+1":"volgende week zaterdag","field-day-short-relative+2":"overmorgen","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","field-zone-narrow":"zone","field-thu-narrow-relative+0":"deze do","field-thu-narrow-relative+1":"volgende week do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","field-hour-short":"uur","field-zone-short":"zone","field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","eraNarrow":"era 0","field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/ethiopic.js b/lib/dojo/cldr/nls/nl/ethiopic.js
index 2ec3329db..a8163c2c0 100644
--- a/lib/dojo/cldr/nls/nl/ethiopic.js
+++ b/lib/dojo/cldr/nls/nl/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/ethiopic",{"field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-dayperiod":"a.m./p.m.","field-sun-relative+-1":"afgelopen zondag","field-mon-relative+-1":"afgelopen maandag","field-minute":"Minuut","field-day-relative+-1":"gisteren","field-weekday":"Dag van de week","field-day-relative+-2":"eergisteren","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"Tijdperk","field-hour":"Uur","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","months-standAlone-abbr":["Mäskäräm","Teqemt","Hedar","Tahsas","T’er","Yäkatit","Mägabit","Miyazya","Genbot","Säne","Hamle","Nähase","Pagumän"],"field-wed-relative+-1":"afgelopen woensdag","field-day-relative+0":"vandaag","field-day-relative+1":"morgen","field-day-relative+2":"overmorgen","field-tue-relative+0":"deze dinsdag","field-zone":"Zone","field-tue-relative+1":"volgende week dinsdag","field-week-relative+-1":"vorige week","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-sat-relative+-1":"afgelopen zaterdag","field-year-relative+-1":"vorig jaar","field-year":"Jaar","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","months-standAlone-wide":["Mäskäräm","Teqemt","Hedar","Tahsas","T’er","Yäkatit","Mägabit","Miyazya","Genbot","Säne","Hamle","Nähase","Pagumän"],"field-week":"Week","field-week-relative+0":"deze week","field-week-relative+1":"volgende week","months-format-abbr":["Mäskäräm","Teqemt","Hedar","Tahsas","T’er","Yäkatit","Mägabit","Miyazya","Genbot","Säne","Hamle","Nähase","Pagumän"],"field-month-relative+0":"deze maand","field-month":"Maand","field-month-relative+1":"volgende maand","field-fri-relative+-1":"afgelopen vrijdag","field-second":"Seconde","field-tue-relative+-1":"afgelopen dinsdag","field-day":"Dag","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-thu-relative+0":"deze donderdag","field-second-relative+0":"nu","field-thu-relative+1":"volgende week donderdag","months-format-wide":["Mäskäräm","Teqemt","Hedar","Tahsas","T’er","Yäkatit","Mägabit","Miyazya","Genbot","Säne","Hamle","Nähase","Pagumän"],"field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-month-relative+-1":"vorige maand","field-thu-relative+-1":"afgelopen donderdag"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/ethiopic",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-day-short-relative+-1":"gisteren","field-thu-short-relative+0":"deze donder.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-thu-short-relative+1":"volgende week donder.","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["tijdperk 0","tijdperk 1"],"field-weekOfMonth":"week van de maand","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM y G","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["era 0","era 1"],"dateFormatItem-yyyyM":"M-y GGGGG","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m./p.m.","field-week-narrow-relative+-1":"vorige week","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d-M","field-hour":"uur","field-minute-narrow-relative+0":"binnen een minuut","months-format-wide":["Mäskäräm","Teqemt","Hedar","Tahsas","T’er","Yäkatit","Mägabit","Miyazya","Genbot","Säne","Hamle","Nähase","Pagumän"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","months-format-abbr":["Mäskäräm","Teqemt","Hedar","Tahsas","T’er","Yäkatit","Mägabit","Miyazya","Genbot","Säne","Hamle","Nähase","Pagumän"],"field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy GGGGG","field-year-narrow-relative+-1":"vorig jaar","field-thu-short-relative+-1":"afgelopen donder.","dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","field-weekOfMonth-short":"wk van de mnd","field-tue-narrow-relative+-1":"afgelopen di","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","months-standAlone-wide":["Mäskäräm","Teqemt","Hedar","Tahsas","T’er","Yäkatit","Mägabit","Miyazya","Genbot","Säne","Hamle","Nähase","Pagumän"],"field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","months-standAlone-abbr":["Mäskäräm","Teqemt","Hedar","Tahsas","T’er","Yäkatit","Mägabit","Miyazya","Genbot","Säne","Hamle","Nähase","Pagumän"],"field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"uur","field-zone-short":"zone","field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","eraNarrow":["era 0","era 1"],"field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/generic.js b/lib/dojo/cldr/nls/nl/generic.js
index bb9374e1d..137d6b428 100644
--- a/lib/dojo/cldr/nls/nl/generic.js
+++ b/lib/dojo/cldr/nls/nl/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/generic",{"field-second-relative+0":"nu","field-weekday":"Dag van de week","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"afgelopen dinsdag","dateFormat-long":"d MMMM y G","field-fri-relative+-1":"afgelopen vrijdag","field-wed-relative+-1":"afgelopen woensdag","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-Md":"d-M","field-era":"Tijdperk","field-year":"Jaar","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"Uur","field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-day-relative+0":"vandaag","field-day-relative+1":"morgen","field-thu-relative+0":"deze donderdag","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"overmorgen","field-thu-relative+1":"volgende week donderdag","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"deze zondag","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"volgende week zondag","field-minute":"Minuut","field-dayperiod":"a.m./p.m.","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"gisteren","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"eergisteren","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d-M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","field-day":"Dag","field-zone":"Zone","dateFormatItem-y":"y G","field-year-relative+-1":"vorig jaar","field-month-relative+-1":"vorige maand","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-month":"Maand","dateFormatItem-MMM":"LLL","field-tue-relative+0":"deze dinsdag","field-tue-relative+1":"volgende week dinsdag","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","dateFormat-short":"dd-MM-yy GGGGG","field-second":"Seconde","field-sat-relative+-1":"afgelopen zaterdag","field-sun-relative+-1":"afgelopen zondag","field-month-relative+0":"deze maand","field-month-relative+1":"volgende maand","dateFormatItem-Ed":"E d","field-week":"Week","dateFormat-medium":"d MMM y G","field-year-relative+0":"dit jaar","field-week-relative+-1":"vorige week","dateFormatItem-yyyyM":"M-y GGGGG","field-year-relative+1":"volgend jaar","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"deze week","field-week-relative+1":"volgende week"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/generic",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-ms":"mm:ss","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-day-short-relative+-1":"gisteren","field-thu-short-relative+0":"deze donder.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-thu-short-relative+1":"volgende week donder.","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"week van de maand","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM y G","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M-y GGGGG","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m./p.m.","field-week-narrow-relative+-1":"vorige week","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d-M","field-hour":"uur","field-minute-narrow-relative+0":"binnen een minuut","dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"vorige maand","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","dateFormatItem-Ehm":"E h:mm a","field-minute-short-relative+0":"binnen een minuut","field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"vorig jaar","field-thu-short-relative+-1":"afgelopen donder.","dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"wk van de mnd","field-tue-narrow-relative+-1":"afgelopen di","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","dateFormatItem-h":"h a","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"uur","field-zone-short":"zone","field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","field-mon-narrow-relative+0":"deze ma","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/gregorian.js b/lib/dojo/cldr/nls/nl/gregorian.js
index 4faa56c65..c3528729c 100644
--- a/lib/dojo/cldr/nls/nl/gregorian.js
+++ b/lib/dojo/cldr/nls/nl/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Zo","Ma","Di","Wo","Do","Vr","Za"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"nu","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Dag van de week","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d-M-y","field-wed-relative+0":"deze woensdag","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-wed-relative+1":"volgende week woensdag","eraNarrow":["v.C.","vgj","n.C.","gj"],"field-tue-relative+-1":"afgelopen dinsdag","days-format-short":["zo","ma","di","wo","do","vr","za"],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"afgelopen vrijdag","field-wed-relative+-1":"afgelopen woensdag","months-format-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE d MMMM y","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-Md":"d-M","dayPeriods-format-wide-noon":"12 uur ‘s middags","dateFormatItem-yMd":"d-M-y","dateFormatItem-yM":"M-y","field-era":"Tijdperk","months-standAlone-wide":["Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December"],"timeFormat-short":"HH:mm","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQQQQ":"QQQQ y","field-year":"Jaar","field-hour":"Uur","months-format-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"vandaag","field-day-relative+1":"morgen","field-thu-relative+0":"deze donderdag","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"overmorgen","field-thu-relative+1":"volgende week donderdag","dateFormatItem-H":"HH","months-standAlone-abbr":["Jan.","Feb.","Mrt.","Apr.","Mei","Jun.","Jul.","Aug.","Sep.","Okt.","Nov.","Dec."],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],"dateFormatItem-MMMMd":"d MMMM","dayPeriods-format-abbr-noon":"12 uur ‘s middags","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"deze zondag","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"field-sun-relative+1":"volgende week zondag","eraAbbr":["v.Chr.","n.Chr."],"field-minute":"Minuut","field-dayperiod":"a.m./p.m.","days-standAlone-abbr":["Zo","Ma","Di","Wo","Do","Vr","Za"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"gisteren","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"eergisteren","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d-M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"deze vrijdag","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"volgende week vrijdag","field-day":"Dag","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-zone":"Zone","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"vorig jaar","field-month-relative+-1":"vorige maand","dateFormatItem-hm":"h:mm a","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"eraNames":["voor Christus","vóór gewone jaartelling","na Christus","gewone jaartelling"],"dateFormatItem-yMMMd":"d MMM y","days-format-narrow":["Z","M","D","W","D","V","Z"],"days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-MMM":"LLL","field-month":"Maand","field-tue-relative+0":"deze dinsdag","field-tue-relative+1":"volgende week dinsdag","dayPeriods-format-wide-am":"a.m.","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","dateFormat-short":"dd-MM-yy","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-noon":"n","field-second":"Seconde","field-sat-relative+-1":"afgelopen zaterdag","dateFormatItem-yMMMEd":"E d MMM y","field-sun-relative+-1":"afgelopen zondag","field-month-relative+0":"deze maand","field-month-relative+1":"volgende maand","dateFormatItem-Ed":"E d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Week","dateFormat-medium":"d MMM y","field-year-relative+0":"dit jaar","field-week-relative+-1":"vorige week","field-year-relative+1":"volgend jaar","dayPeriods-format-narrow-pm":"p.m.","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"afgelopen maandag","field-week-relative+0":"deze week","field-week-relative+1":"volgende week"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"deze do","field-thu-narrow-relative+1":"volgende week do","field-sun-narrow-relative+0":"deze zo","field-sun-narrow-relative+1":"volgende week zo","months-format-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"dayPeriods-standAlone-abbr-pm":"p.m.","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr","eraNarrow":["v.C.","vgj","n.C.","gj"],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM y","dayPeriods-format-abbr-night1":"’s nachts","dayPeriods-format-narrow-evening1":"’s avonds","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dayPeriods-format-abbr-afternoon1":"’s middags","dayPeriods-format-wide-evening1":"’s avonds","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"afgelopen wo","dayPeriods-standAlone-wide-evening1":"avond","field-minute-narrow-relative+0":"binnen een minuut","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"avond","dayPeriods-standAlone-abbr-afternoon1":"middag","field-thu-relative+0":"deze donderdag","dayPeriods-standAlone-abbr-night1":"nacht","field-thu-relative+1":"volgende week donderdag","dayPeriods-format-wide-am":"a.m.","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","dateFormatItem-yMd":"d-M-y","field-thu-narrow-relative+-1":"afgelopen do","field-quarter-relative+0":"dit kwartaal","field-quarter-relative+1":"volgend kwartaal","field-sun-short-relative+0":"deze zon.","timeFormat-short":"HH:mm","field-sun-short-relative+1":"volgende week zon.","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"’s middags","dateFormatItem-Md":"d-M","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"wk","field-hour-relative+0":"binnen een uur","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","field-mon-narrow-relative+-1":"afgelopen ma","field-minute-narrow":"min","field-thu-short-relative+0":"deze donder.","field-mon-relative+0":"deze maandag","field-thu-short-relative+1":"volgende week donder.","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+0":"vandaag","field-era-short":"tijdperk","field-day-narrow-relative+1":"morgen","field-sat-narrow-relative+0":"deze za","field-day-narrow-relative+2":"overmorgen","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"volgende week za","field-week-narrow-relative+0":"deze week","field-week-narrow-relative+1":"volgende week","field-hour-short-relative+0":"binnen een uur","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-month":"maand","months-standAlone-wide":["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],"field-weekday-narrow":"dag v.d. wk","dayPeriods-standAlone-narrow-afternoon1":"middag","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","dayPeriods-format-abbr-evening1":"’s avonds","dayPeriods-format-narrow-midnight":"middernacht","dayPeriods-format-wide-midnight":"middernacht","field-tue-relative+0":"deze dinsdag","field-tue-relative+1":"volgende week dinsdag","dayPeriods-standAlone-abbr-evening1":"avond","field-minute-short-relative+0":"binnen een minuut","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"middernacht","field-year-narrow":"jr","field-tue-short-relative+0":"deze dins.","dayPeriods-standAlone-narrow-midnight":"middernacht","field-tue-short-relative+1":"volgende week dins.","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","dateTimeFormat-full":"{1} 'om' {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-M":"L","field-wed-short-relative+0":"deze woens.","field-fri-short-relative+0":"deze vrij.","field-wed-short-relative+1":"volgende week woens.","field-fri-short-relative+1":"volgende week vrij.","field-weekOfMonth-short":"wk van de mnd","field-quarter-short-relative+-1":"vorig kwartaal","field-year-short-relative+-1":"vorig jaar","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"’s nachts","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"vorig kwartaal","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-h":"h a","quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"field-weekOfMonth-narrow":"wk v.d. mnd","dateFormatItem-y":"y","field-minute-relative+0":"binnen een minuut","field-year-short-relative+0":"dit jaar","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"volgend jaar","field-weekday":"dag van de week","dayPeriods-format-narrow-pm":"p.m.","field-tue-narrow-relative+-1":"afgelopen di","dateFormatItem-yMEd":"E d-M-y","dayPeriods-standAlone-wide-night1":"nacht","field-year-narrow-relative+-1":"vorig jaar","field-sat-relative+-1":"afgelopen zaterdag","dayPeriods-format-abbr-midnight":"middernacht","dayPeriods-format-narrow-morning1":"’s ochtends","dayPeriods-format-wide-morning1":"’s ochtends","dayPeriods-standAlone-abbr-midnight":"middernacht","dayPeriods-standAlone-narrow-pm":"p.m.","dayPeriods-standAlone-wide-morning1":"ochtend","field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-second":"seconde","dateFormatItem-yMMMEd":"E d MMM y","field-year-relative+-1":"vorig jaar","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormat-short":"dd-MM-y","eraNames":["voor Christus","na Christus"],"field-second-short":"sec","field-thu-short-relative+-1":"afgelopen donder.","field-zone":"tijdzone","field-dayperiod-narrow":"a.m./p.m.","field-sun-short-relative+-1":"afgelopen zon.","dayPeriods-standAlone-narrow-morning1":"ochtend","eraAbbr":["v.Chr.","n.Chr."],"field-week-short":"wk","dayPeriods-standAlone-abbr-am":"a.m.","dayPeriods-standAlone-wide-pm":"p.m.","dateFormatItem-ms":"mm:ss","field-day-relative+0":"vandaag","field-day-relative+1":"morgen","field-day-relative+2":"overmorgen","field-day-short-relative+0":"vandaag","field-dayOfYear-short":"dag van het jr","field-day-short-relative+1":"morgen","dateFormat-long":"d MMMM y","field-day-short-relative+2":"overmorgen","field-sun-narrow-relative+-1":"afgelopen zo","field-second-relative+0":"nu","field-quarter-relative+-1":"vorig kwartaal","dayPeriods-format-narrow-night1":"’s nachts","quarters-format-abbr":["K1","K2","K3","K4"],"dayPeriods-standAlone-narrow-night1":"nacht","field-week-relative+-1":"vorige week","dayPeriods-format-abbr-morning1":"’s ochtends","field-month-relative+-1":"vorige maand","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year":"jaar","field-era":"tijdperk","dayPeriods-standAlone-abbr-morning1":"ochtend","days-standAlone-short":["zo","ma","di","wo","do","vr","za"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"gisteren","field-day-short-relative+-2":"eergisteren","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"uur","field-dayOfYear-narrow":"dag v.h. jr","field-second-narrow-relative+0":"nu","field-quarter":"kwartaal","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-day":"dag","field-mon-relative+-1":"afgelopen maandag","field-dayOfYear":"dag van het jaar","dateFormat-medium":"d MMM y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d MMM y G","dateFormatItem-MEd":"E d-M","field-tue-short-relative+-1":"afgelopen dins.","field-year-short":"jr","field-month-short":"mnd","dateFormatItem-MMMEd":"E d MMM","dayPeriods-format-wide-afternoon1":"’s middags","dateFormatItem-MMMd":"d MMM","dateFormatItem-Bh":"h B","months-format-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"dayPeriods-format-abbr-am":"a.m.","field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","dayPeriods-format-wide-pm":"p.m.","days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"field-zone-short":"zone","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","dayPeriods-standAlone-wide-afternoon1":"middag","field-fri-short-relative+-1":"afgelopen vrij.","field-month-narrow":"mnd","dayPeriods-format-narrow-am":"a.m.","field-month-narrow-relative+-1":"vorige maand","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"field-weekday-short":"dag van de wk","field-day-narrow-relative+-1":"gisteren","field-day-narrow-relative+-2":"eergisteren","field-quarter-short":"kwartaal","days-format-short":["zo","ma","di","wo","do","vr","za"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"kwartaal","field-mon-short-relative+0":"deze maan.","field-mon-short-relative+1":"volgende week maan.","field-dayperiod-short":"a.m./p.m.","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"vorige week","field-thu-relative+-1":"afgelopen donderdag","field-fri-narrow-relative+-1":"afgelopen vr","field-mon-short-relative+-1":"afgelopen maan.","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","dateFormatItem-Ed":"E d","field-wed-relative+-1":"afgelopen woensdag","field-weekOfMonth":"week van de maand","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","dayPeriods-standAlone-wide-am":"a.m.","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"afgelopen vrijdag","field-minute":"minuut","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"nu","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"field-day-short":"dag","field-dayperiod":"a.m./p.m.","field-hour-short":"uur","months-standAlone-abbr":["jan.","feb.","mrt.","apr.","mei","jun.","jul.","aug.","sep.","okt.","nov.","dec."],"field-month-relative+0":"deze maand","field-second-narrow":"s","field-month-relative+1":"volgende maand","dateFormat-full":"EEEE d MMMM y","field-era-narrow":"tijdperk","field-sat-short-relative+-1":"afgelopen zater.","field-week-short-relative+-1":"vorige week","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-yM":"M-y","field-sun-relative+-1":"afgelopen zondag","field-wed-short-relative+-1":"afgelopen woens.","field-weekdayOfMonth":"weekdag van de maand","field-quarter-narrow-relative+0":"dit kwartaal","dateFormatItem-GyMMMEd":"E d MMM y G","field-quarter-narrow-relative+1":"volgend kwartaal","field-sat-short-relative+0":"deze zater.","field-hour-narrow":"u","field-sat-short-relative+1":"volgende week zater.","field-year-narrow-relative+0":"dit jaar","field-year-narrow-relative+1":"volgend jaar","dateFormatItem-Gy":"y G","field-zone-narrow":"zone","field-tue-relative+-1":"afgelopen dinsdag","field-minute-short":"min","dateFormatItem-yw":"'week' w 'in' Y","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"deze week","field-week-relative+1":"volgende week","dateFormatItem-MMM":"LLL","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","field-sat-narrow-relative+-1":"afgelopen za","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-MMMMW":"'week' W 'van' MMMM","field-month-short-relative+-1":"vorige maand","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-hour-narrow-relative+0":"binnen een uur","field-week":"week","field-day-narrow":"dag"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/hebrew.js b/lib/dojo/cldr/nls/nl/hebrew.js
index 2b9c990f5..54bbc39de 100644
--- a/lib/dojo/cldr/nls/nl/hebrew.js
+++ b/lib/dojo/cldr/nls/nl/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/hebrew",{"days-standAlone-short":["Zo","Ma","Di","Wo","Do","Vr","Za"],"field-second-relative+0":"nu","field-weekday":"Dag van de week","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"afgelopen dinsdag","days-format-short":["zo","ma","di","wo","do","vr","za"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"afgelopen vrijdag","field-wed-relative+-1":"afgelopen woensdag","months-format-wide":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-Md":"d-M","dayPeriods-format-wide-noon":"12 uur ‘s middags","field-era":"Tijdperk","months-standAlone-wide":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"field-year":"Jaar","field-hour":"Uur","months-format-abbr-leap":"Adar B","months-format-abbr":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-day-relative+0":"vandaag","field-thu-relative+0":"deze donderdag","field-day-relative+1":"morgen","field-thu-relative+1":"volgende week donderdag","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"overmorgen","months-standAlone-abbr":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dayPeriods-format-abbr-noon":"12 uur ‘s middags","months-standAlone-wide-leap":"Adar B","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["AM"],"field-minute":"Minuut","field-dayperiod":"a.m./p.m.","days-standAlone-abbr":["Zo","Ma","Di","Wo","Do","Vr","Za"],"field-day-relative+-1":"gisteren","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"eergisteren","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d-M","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","field-day":"Dag","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-zone":"Zone","months-standAlone-abbr-leap":"Adar B","dateFormatItem-y":"y G","field-year-relative+-1":"vorig jaar","field-month-relative+-1":"vorige maand","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-yyyyMd":"d-M-y GGGGG","field-month":"Maand","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"field-tue-relative+0":"deze dinsdag","field-tue-relative+1":"volgende week dinsdag","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","dateFormat-short":"dd-MM-yy GGGGG","field-second":"Seconde","field-sat-relative+-1":"afgelopen zaterdag","field-sun-relative+-1":"afgelopen zondag","field-month-relative+0":"deze maand","field-month-relative+1":"volgende maand","dateFormatItem-Ed":"E d","field-week":"Week","dateFormat-medium":"d MMM y G","field-year-relative+0":"dit jaar","field-week-relative+-1":"vorige week","dateFormatItem-yyyyM":"M-y GGGGG","field-year-relative+1":"volgend jaar","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ y G","months-format-wide-leap":"Adar B","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"deze week","field-week-relative+1":"volgende week"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/hebrew",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-thu-short-relative+0":"deze donder.","field-day-short-relative+-1":"gisteren","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"volgende week donder.","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["AM"],"field-weekOfMonth":"week van de maand","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM y G","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dayPeriods-format-narrow-pm":"p.m.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AM"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"M-y GGGGG","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m./p.m.","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"vorige week","days-format-short":["zo","ma","di","wo","do","vr","za"],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d MMM","field-minute-narrow-relative+0":"binnen een minuut","field-hour":"uur","months-format-wide":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","months-format-abbr":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy GGGGG","field-thu-short-relative+-1":"afgelopen donder.","field-year-narrow-relative+-1":"vorig jaar","days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","field-weekOfMonth-short":"wk van de mnd","field-tue-narrow-relative+-1":"afgelopen di","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-M":"L","months-standAlone-wide":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","months-format-abbr-leap":"Adar B","dateFormatItem-d":"d","field-weekday":"dag van de week","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","months-standAlone-abbr":["Tisjrie","Chesjwan","Kislev","Tevet","Sjevat","Adar A","Adar","Nisan","Ijar","Sivan","Tammoez","Av","Elloel"],"months-format-wide-leap":"Adar B","months-format-narrow-leap":"7","field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d MMM","field-zone-narrow":"zone","dateFormatItem-y":"y","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","days-standAlone-short":["zo","ma","di","wo","do","vr","za"],"field-week-short-relative+-1":"vorige week","months-standAlone-abbr-leap":"Adar B","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"uur","field-zone-short":"zone","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","eraNarrow":"AM","field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","months-standAlone-wide-leap":"Adar B","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/indian.js b/lib/dojo/cldr/nls/nl/indian.js
index 7d57416e1..48fb2bf58 100644
--- a/lib/dojo/cldr/nls/nl/indian.js
+++ b/lib/dojo/cldr/nls/nl/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/indian",{"field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-dayperiod":"a.m./p.m.","field-sun-relative+-1":"afgelopen zondag","field-mon-relative+-1":"afgelopen maandag","field-minute":"Minuut","field-day-relative+-1":"gisteren","field-weekday":"Dag van de week","field-day-relative+-2":"eergisteren","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"Tijdperk","field-hour":"Uur","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","months-standAlone-abbr":["Chaitra","Vaishakha","Jyeshtha","Aashaadha","Shraavana","Bhaadrapada","Ashvina","Kaartika","Agrahayana","Pausha","Maagha","Phaalguna"],"field-wed-relative+-1":"afgelopen woensdag","field-day-relative+0":"vandaag","field-day-relative+1":"morgen","eraAbbr":["SAKA"],"field-day-relative+2":"overmorgen","field-tue-relative+0":"deze dinsdag","field-zone":"Zone","field-tue-relative+1":"volgende week dinsdag","field-week-relative+-1":"vorige week","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-sat-relative+-1":"afgelopen zaterdag","field-year-relative+-1":"vorig jaar","field-year":"Jaar","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","months-standAlone-wide":["Chaitra","Vaishakha","Jyeshtha","Aashaadha","Shraavana","Bhaadrapada","Ashvina","Kaartika","Agrahayana","Pausha","Maagha","Phaalguna"],"field-week":"Week","field-week-relative+0":"deze week","field-week-relative+1":"volgende week","months-format-abbr":["Chaitra","Vaishakha","Jyeshtha","Aashaadha","Shraavana","Bhaadrapada","Ashvina","Kaartika","Agrahayana","Pausha","Maagha","Phaalguna"],"field-month-relative+0":"deze maand","field-month":"Maand","field-month-relative+1":"volgende maand","field-fri-relative+-1":"afgelopen vrijdag","field-second":"Seconde","field-tue-relative+-1":"afgelopen dinsdag","field-day":"Dag","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-thu-relative+0":"deze donderdag","field-second-relative+0":"nu","field-thu-relative+1":"volgende week donderdag","months-format-wide":["Chaitra","Vaishakha","Jyeshtha","Aashaadha","Shraavana","Bhaadrapada","Ashvina","Kaartika","Agrahayana","Pausha","Maagha","Phaalguna"],"field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-month-relative+-1":"vorige maand","field-thu-relative+-1":"afgelopen donderdag"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/indian",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-day-short-relative+-1":"gisteren","field-thu-short-relative+0":"deze donder.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-thu-short-relative+1":"volgende week donder.","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Saka"],"field-weekOfMonth":"week van de maand","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM y G","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["Saka"],"dateFormatItem-yyyyM":"M-y GGGGG","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m./p.m.","field-week-narrow-relative+-1":"vorige week","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d-M","field-hour":"uur","field-minute-narrow-relative+0":"binnen een minuut","months-format-wide":["Chaitra","Vaishakha","Jyeshtha","Aashaadha","Shraavana","Bhaadrapada","Ashvina","Kaartika","Agrahayana","Pausha","Maagha","Phaalguna"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","months-format-abbr":["Chaitra","Vaishakha","Jyeshtha","Aashaadha","Shraavana","Bhaadrapada","Ashvina","Kaartika","Agrahayana","Pausha","Maagha","Phaalguna"],"field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy GGGGG","field-year-narrow-relative+-1":"vorig jaar","field-thu-short-relative+-1":"afgelopen donder.","dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","field-weekOfMonth-short":"wk van de mnd","field-tue-narrow-relative+-1":"afgelopen di","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","months-standAlone-wide":["Chaitra","Vaishakha","Jyeshtha","Aashaadha","Shraavana","Bhaadrapada","Ashvina","Kaartika","Agrahayana","Pausha","Maagha","Phaalguna"],"field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","months-standAlone-abbr":["Chaitra","Vaishakha","Jyeshtha","Aashaadha","Shraavana","Bhaadrapada","Ashvina","Kaartika","Agrahayana","Pausha","Maagha","Phaalguna"],"field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"uur","field-zone-short":"zone","field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","eraNarrow":"Saka","field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/islamic.js b/lib/dojo/cldr/nls/nl/islamic.js
index 7d4418d74..89192668c 100644
--- a/lib/dojo/cldr/nls/nl/islamic.js
+++ b/lib/dojo/cldr/nls/nl/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/islamic",{"days-standAlone-short":["Zo","Ma","Di","Wo","Do","Vr","Za"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"nu","field-weekday":"Dag van de week","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["Saʻna Hizjria"],"field-tue-relative+-1":"afgelopen dinsdag","days-format-short":["zo","ma","di","wo","do","vr","za"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"afgelopen vrijdag","field-wed-relative+-1":"afgelopen woensdag","months-format-wide":["Moeharram","Safar","Rabiʻa al awal","Rabiʻa al thani","Joemadʻal awal","Joemadʻal thani","Rajab","Sjaʻaban","Ramadan","Sjawal","Doe al kaʻaba","Doe al hizja"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-Md":"d-M","dayPeriods-format-wide-noon":"12 uur ‘s middags","field-era":"Tijdperk","months-standAlone-wide":["Moeharram","Safar","Rabiʻa al awal","Rabiʻa al thani","Joemadʻal awal","Joemadʻal thani","Rajab","Sjaʻaban","Ramadan","Sjawal","Doe al kaʻaba","Doe al hizja"],"quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"field-year":"Jaar","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"Uur","months-format-abbr":["Moeh.","Saf.","Rab. I","Rab. II","Joem. I","Joem. II","Raj.","Sja.","Ram.","Sjaw.","Doe al k.","Doe al h."],"field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-day-relative+0":"vandaag","field-thu-relative+0":"deze donderdag","field-day-relative+1":"morgen","field-thu-relative+1":"volgende week donderdag","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"overmorgen","months-standAlone-abbr":["Moeh.","Saf.","Rab. I","Rab. II","Joem. I","Joem. II","Raj.","Sja.","Ram.","Sjaw.","Doe al k.","Doe al h."],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","days-standAlone-wide":["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","dayPeriods-format-abbr-noon":"12 uur ‘s middags","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["Saʻna Hizjria"],"field-minute":"Minuut","field-dayperiod":"a.m./p.m.","days-standAlone-abbr":["Zo","Ma","Di","Wo","Do","Vr","Za"],"dateFormatItem-d":"d","field-day-relative+-1":"gisteren","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"eergisteren","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d-M","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","field-day":"Dag","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-zone":"Zone","dateFormatItem-y":"y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"vorig jaar","field-month-relative+-1":"vorige maand","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"eraNames":["Saʻna Hizjria"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-yyyyMd":"d-M-y GGGGG","field-month":"Maand","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"field-tue-relative+0":"deze dinsdag","field-tue-relative+1":"volgende week dinsdag","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","dateFormat-short":"dd-MM-yy GGGGG","field-second":"Seconde","field-sat-relative+-1":"afgelopen zaterdag","field-sun-relative+-1":"afgelopen zondag","field-month-relative+0":"deze maand","field-month-relative+1":"volgende maand","dateFormatItem-Ed":"E d","field-week":"Week","dateFormat-medium":"d MMM y G","field-year-relative+0":"dit jaar","field-week-relative+-1":"vorige week","dateFormatItem-yyyyM":"M-y GGGGG","field-year-relative+1":"volgend jaar","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"deze week","field-week-relative+1":"volgende week"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/islamic",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-thu-short-relative+0":"deze donder.","field-day-short-relative+-1":"gisteren","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"volgende week donder.","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Saʻna Hizjria"],"field-weekOfMonth":"week van de maand","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM y G","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dayPeriods-format-narrow-pm":"p.m.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AH"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"M-y GGGGG","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m./p.m.","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"vorige week","days-format-short":["zo","ma","di","wo","do","vr","za"],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d-M","field-minute-narrow-relative+0":"binnen een minuut","field-hour":"uur","months-format-wide":["Moeharram","Safar","Rabiʻa al awal","Rabiʻa al thani","Joemadʻal awal","Joemadʻal thani","Rajab","Sjaʻaban","Ramadan","Sjawal","Doe al kaʻaba","Doe al hizja"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","months-format-abbr":["Moeh.","Saf.","Rab. I","Rab. II","Joem. I","Joem. II","Raj.","Sja.","Ram.","Sjaw.","Doe al k.","Doe al h."],"field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy GGGGG","field-thu-short-relative+-1":"afgelopen donder.","field-year-narrow-relative+-1":"vorig jaar","days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","field-weekOfMonth-short":"wk van de mnd","field-tue-narrow-relative+-1":"afgelopen di","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-M":"L","months-standAlone-wide":["Moeharram","Safar","Rabiʻa al awal","Rabiʻa al thani","Joemadʻal awal","Joemadʻal thani","Rajab","Sjaʻaban","Ramadan","Sjawal","Doe al kaʻaba","Doe al hizja"],"field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","months-standAlone-abbr":["Moeh.","Saf.","Rab. I","Rab. II","Joem. I","Joem. II","Raj.","Sja.","Ram.","Sjaw.","Doe al k.","Doe al h."],"field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","days-standAlone-short":["zo","ma","di","wo","do","vr","za"],"field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"uur","field-zone-short":"zone","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","eraNarrow":"AH","field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/japanese.js b/lib/dojo/cldr/nls/nl/japanese.js
index 82e060298..2a9877270 100644
--- a/lib/dojo/cldr/nls/nl/japanese.js
+++ b/lib/dojo/cldr/nls/nl/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/japanese",{"field-second-relative+0":"nu","field-weekday":"Dag van de week","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"afgelopen dinsdag","dateFormat-long":"d MMMM y G","field-fri-relative+-1":"afgelopen vrijdag","field-wed-relative+-1":"afgelopen woensdag","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-Md":"d-M","field-era":"Tijdperk","field-year":"Jaar","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"Uur","field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-day-relative+0":"vandaag","field-thu-relative+0":"deze donderdag","field-day-relative+1":"morgen","field-thu-relative+1":"volgende week donderdag","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"overmorgen","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","eraAbbr":["Taika (645-650)","Hakuchi (650-671)","Hakuhō (672-686)","Shuchō (686-701)","Taihō (701-704)","Keiun (704-708)","Wadō (708-715)","Reiki (715-717)","Yōrō (717-724)","Jinki (724-729)","Tempyō (729-749)","Tempyō-kampō (749-749)","Tempyō-shōhō (749-757)","Tempyō-hōji (757-765)","Temphō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770-780)","Ten-ō (781-782)","Enryaku (782-806)","Daidō (806-810)","Kōnin (810-824)","Tenchō (824-834)","Jōwa (834-848)","Kajō (848-851)","Ninju (851-854)","Saiko (854-857)","Tennan (857-859)","Jōgan (859-877)","Genkei (877-885)","Ninna (885-889)","Kampyō (889-898)","Shōtai (898-901)","Engi (901-923)","Enchō (923-931)","Shōhei (931-938)","Tengyō (938-947)","Tenryaku (947-957)","Tentoku (957-961)","Ōwa (961-964)","Kōhō (964-968)","Anna (968-970)","Tenroku (970-973)","Ten-en (973-976)","Jōgen (976-978)","Tengen (978-983)","Eikan (983-985)","Kanna (985-987)","Ei-en (987-989)","Eiso (989-990)","Shōryaku (990-995)","Chōtoku (995-999)","Chōhō (999-1004)","Kankō (1004-1012)","Chōwa (1012-1017)","Kannin (1017-1021)","Jian (1021-1024)","Manju (1024-1028)","Chōgen (1028-1037)","Chōryaku (1037-1040)","Chōkyū (1040-1044)","Kantoku (1044-1046)","Eishō (1046-1053)","Tengi (1053-1058)","Kōhei (1058-1065)","Jiryaku (1065-1069)","Enkyū (1069-1074)","Shōho (1074-1077)","Shōryaku (1077-1081)","Eiho (1081-1084)","Ōtoku (1084-1087)","Kanji (1087-1094)","Kaho (1094-1096)","Eichō (1096-1097)","Shōtoku (1097-1099)","Kōwa (1099-1104)","Chōji (1104-1106)","Kashō (1106-1108)","Tennin (1108-1110)","Ten-ei (1110-1113)","Eikyū (1113-1118)","Gen-ei (1118-1120)","Hoan (1120-1124)","Tenji (1124-1126)","Daiji (1126-1131)","Tenshō (1131-1132)","Chōshō (1132-1135)","Hoen (1135-1141)","Eiji (1141-1142)","Kōji (1142-1144)","Tenyō (1144-1145)","Kyūan (1145-1151)","Ninpei (1151-1154)","Kyūju (1154-1156)","Hogen (1156-1159)","Heiji (1159-1160)","Eiryaku (1160-1161)","Ōho (1161-1163)","Chōkan (1163-1165)","Eiman (1165-1166)","Nin-an (1166-1169)","Kaō (1169-1171)","Shōan (1171-1175)","Angen (1175-1177)","Jishō (1177-1181)","Yōwa (1181-1182)","Juei (1182-1184)","Genryuku (1184-1185)","Bunji (1185-1190)","Kenkyū (1190-1199)","Shōji (1199-1201)","Kennin (1201-1204)","Genkyū (1204-1206)","Ken-ei (1206-1207)","Shōgen (1207-1211)","Kenryaku (1211-1213)","Kenpō (1213-1219)","Shōkyū (1219-1222)","Jōō (1222-1224)","Gennin (1224-1225)","Karoku (1225-1227)","Antei (1227-1229)","Kanki (1229-1232)","Jōei (1232-1233)","Tempuku (1233-1234)","Bunryaku (1234-1235)","Katei (1235-1238)","Ryakunin (1238-1239)","En-ō (1239-1240)","Ninji (1240-1243)","Kangen (1243-1247)","Hōji (1247-1249)","Kenchō (1249-1256)","Kōgen (1256-1257)","Shōka (1257-1259)","Shōgen (1259-1260)","Bun-ō (1260-1261)","Kōchō (1261-1264)","Bun-ei (1264-1275)","Kenji (1275-1278)","Kōan (1278-1288)","Shōō (1288-1293)","Einin (1293-1299)","Shōan (1299-1302)","Kengen (1302-1303)","Kagen (1303-1306)","Tokuji (1306-1308)","Enkei (1308-1311)","Ōchō (1311-1312)","Shōwa (1312-1317)","Bunpō (1317-1319)","Genō (1319-1321)","Genkyō (1321-1324)","Shōchū (1324-1326)","Kareki (1326-1329)","Gentoku (1329-1331)","Genkō (1331-1334)","Kemmu (1334-1336)","Engen (1336-1340)","Kōkoku (1340-1346)","Shōhei (1346-1370)","Kentoku (1370-1372)","Bunchū (1372-1375)","Tenju (1375-1379)","Kōryaku (1379-1381)","Kōwa (1381-1384)","Genchū (1384-1392)","Meitoku (1384-1387)","Kakei (1387-1389)","Kōō (1389-1390)","Meitoku (1390-1394)","Ōei (1394-1428)","Shōchō (1428-1429)","Eikyō (1429-1441)","Kakitsu (1441-1444)","Bun-an (1444-1449)","Hōtoku (1449-1452)","Kyōtoku (1452-1455)","Kōshō (1455-1457)","Chōroku (1457-1460)","Kanshō (1460-1466)","Bunshō (1466-1467)","Ōnin (1467-1469)","Bunmei (1469-1487)","Chōkyō (1487-1489)","Entoku (1489-1492)","Meiō (1492-1501)","Bunki (1501-1504)","Eishō (1504-1521)","Taiei (1521-1528)","Kyōroku (1528-1532)","Tenmon (1532-1555)","Kōji (1555-1558)","Eiroku (1558-1570)","Genki (1570-1573)","Tenshō (1573-1592)","Bunroku (1592-1596)","Keichō (1596-1615)","Genwa (1615-1624)","Kan-ei (1624-1644)","Shōho (1644-1648)","Keian (1648-1652)","Shōō (1652-1655)","Meiryaku (1655-1658)","Manji (1658-1661)","Kanbun (1661-1673)","Enpō (1673-1681)","Tenwa (1681-1684)","Jōkyō (1684-1688)","Genroku (1688-1704)","Hōei (1704-1711)","Shōtoku (1711-1716)","Kyōhō (1716-1736)","Genbun (1736-1741)","Kanpō (1741-1744)","Enkyō (1744-1748)","Kan-en (1748-1751)","Hōryaku (1751-1764)","Meiwa (1764-1772)","An-ei (1772-1781)","Tenmei (1781-1789)","Kansei (1789-1801)","Kyōwa (1801-1804)","Bunka (1804-1818)","Bunsei (1818-1830)","Tenpō (1830-1844)","Kōka (1844-1848)","Kaei (1848-1854)","Ansei (1854-1860)","Man-en (1860-1861)","Bunkyū (1861-1864)","Genji (1864-1865)","Keiō (1865-1868)","Meiji","Taishō","Shōwa","Heisei"],"field-minute":"Minuut","field-dayperiod":"a.m./p.m.","dateFormatItem-d":"d","field-day-relative+-1":"gisteren","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"eergisteren","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d-M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","field-day":"Dag","field-zone":"Zone","dateFormatItem-y":"y G","field-year-relative+-1":"vorig jaar","field-month-relative+-1":"vorige maand","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-month":"Maand","dateFormatItem-MMM":"LLL","field-tue-relative+0":"deze dinsdag","field-tue-relative+1":"volgende week dinsdag","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","dateFormat-short":"dd-MM-yy GGGGG","field-second":"Seconde","field-sat-relative+-1":"afgelopen zaterdag","field-sun-relative+-1":"afgelopen zondag","field-month-relative+0":"deze maand","field-month-relative+1":"volgende maand","dateFormatItem-Ed":"E d","field-week":"Week","dateFormat-medium":"d MMM y G","field-year-relative+0":"dit jaar","field-week-relative+-1":"vorige week","dateFormatItem-yyyyM":"M-y GGGGG","field-year-relative+1":"volgend jaar","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"deze week","field-week-relative+1":"volgende week"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/japanese",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-day-short-relative+-1":"gisteren","field-thu-short-relative+0":"deze donder.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-thu-short-relative+1":"volgende week donder.","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749-749)","Tenpyō-shōhō (749-757)","Tenpyō-hōji (757-765)","Tenpyō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770–780)","Ten-ō (781-782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857-859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kaho (1094–1096)","Eichō (1096–1097)","Shōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110-1113)","Eikyū (1113–1118)","Gen-ei (1118-1120)","Hoan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hoen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hogen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken-ei (1206-1207)","Shōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Shōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tempuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En-ō (1239-1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun-ō (1260-1261)","Kōchō (1261–1264)","Bun-ei (1264-1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkei (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkyō (1321–1324)","Shōchū (1324–1326)","Kareki (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kemmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun-an (1444-1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenmon (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genwa (1615–1624)","Kan-ei (1624-1644)","Shōho (1644–1648)","Keian (1648–1652)","Shōō (1652–1655)","Meiryaku (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenwa (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan-en (1748-1751)","Hōryaku (1751–1764)","Meiwa (1764–1772)","An-ei (1772-1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man-en (1860-1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","Meiji","Taishō","Shōwa","Heisei"],"field-weekOfMonth":"week van de maand","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM y G","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749-749)","Tenpyō-shōhō (749-757)","Tenpyō-hōji (757-765)","Tenpyō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770–780)","Ten-ō (781-782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857-859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kaho (1094–1096)","Eichō (1096–1097)","Shōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110-1113)","Eikyū (1113–1118)","Gen-ei (1118-1120)","Hoan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hoen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hogen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken-ei (1206-1207)","Shōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Shōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tempuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En-ō (1239-1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun-ō (1260-1261)","Kōchō (1261–1264)","Bun-ei (1264-1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkei (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkyō (1321–1324)","Shōchū (1324–1326)","Kareki (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kemmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun-an (1444-1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenmon (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genwa (1615–1624)","Kan-ei (1624-1644)","Shōho (1644–1648)","Keian (1648–1652)","Shōō (1652–1655)","Meiryaku (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenwa (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan-en (1748-1751)","Hōryaku (1751–1764)","Meiwa (1764–1772)","An-ei (1772-1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man-en (1860-1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","Meiji","Taishō","Shōwa","Heisei"],"dateFormatItem-yyyyM":"M-y GGGGG","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m./p.m.","field-week-narrow-relative+-1":"vorige week","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d-M","field-hour":"uur","field-minute-narrow-relative+0":"binnen een minuut","dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy GGGGG","field-year-narrow-relative+-1":"vorig jaar","field-thu-short-relative+-1":"afgelopen donder.","dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"afgelopen di","field-weekOfMonth-short":"wk van de mnd","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"uur","field-zone-short":"zone","field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","eraNarrow":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tenpyō (729–749)","Tenpyō-kampō (749-749)","Tenpyō-shōhō (749-757)","Tenpyō-hōji (757–765)","Tenpyō-jingo (765-767)","Jingo-keiun (767-770)","Hōki (770–780)","Ten-ō (781-782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saikō (854–857)","Ten-an (857-859)","Jōgan (859–877)","Gangyō (877–885)","Ninna (885–889)","Kanpyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Jōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten’en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Eien (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eihō (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kahō (1094–1096)","Eichō (1096–1097)","Jōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110–1113)","Eikyū (1113–1118)","Gen’ei (1118–1120)","Hōan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hōen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Ten’yō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hōgen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin’an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryaku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken’ei (1206–1207)","Jōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Jōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tenpuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En’ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun’ō (1260–1261)","Kōchō (1261–1264)","Bun’ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkei (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkō (1321–1324)","Shōchū (1324–1326)","Kareki (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kenmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun’an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenbun (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genna (1615–1624)","Kan’ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Jōō (1652–1655)","Meireki (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenna (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkei (1744–1748)","Kan’en (1748–1751)","Hōreki (1751–1764)","Meiwa (1764–1772)","An’ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man’en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","M","T","S","H"],"field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/number.js b/lib/dojo/cldr/nls/nl/number.js
index 9d68bc8fc..86f2b760a 100644
--- a/lib/dojo/cldr/nls/nl/number.js
+++ b/lib/dojo/cldr/nls/nl/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤ #,##0.00;(¤ #,##0.00)","plusSign":"+","decimalFormat-long":"000 biljoen","decimalFormat-short":"000 bln'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 bln'.'","nan":"NaN","plusSign":"+","currencyFormat":"¤ #,##0.00;(¤ #,##0.00)","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 biljoen","decimalFormat":"#,##0.###","currencyFormat-short":"¤ 000 bln'.'","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/persian.js b/lib/dojo/cldr/nls/nl/persian.js
index b0c7962d9..5ef31e128 100644
--- a/lib/dojo/cldr/nls/nl/persian.js
+++ b/lib/dojo/cldr/nls/nl/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/persian",{"days-standAlone-short":["Zo","Ma","Di","Wo","Do","Vr","Za"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"nu","field-weekday":"Dag van de week","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"afgelopen dinsdag","days-format-short":["zo","ma","di","wo","do","vr","za"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"afgelopen vrijdag","field-wed-relative+-1":"afgelopen woensdag","months-format-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-Md":"d-M","dayPeriods-format-wide-noon":"12 uur ‘s middags","field-era":"Tijdperk","months-standAlone-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"field-year":"Jaar","field-hour":"Uur","months-format-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-day-relative+0":"vandaag","field-thu-relative+0":"deze donderdag","field-day-relative+1":"morgen","field-thu-relative+1":"volgende week donderdag","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"overmorgen","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dayPeriods-format-abbr-noon":"12 uur ‘s middags","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["AP"],"field-minute":"Minuut","field-dayperiod":"a.m./p.m.","days-standAlone-abbr":["Zo","Ma","Di","Wo","Do","Vr","Za"],"field-day-relative+-1":"gisteren","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"eergisteren","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d-M","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","field-day":"Dag","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-zone":"Zone","dateFormatItem-y":"y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"vorig jaar","field-month-relative+-1":"vorige maand","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"dateFormatItem-yyyyMd":"d-M-y GGGGG","field-month":"Maand","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"field-tue-relative+0":"deze dinsdag","field-tue-relative+1":"volgende week dinsdag","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","dateFormat-short":"dd-MM-yy GGGGG","field-second":"Seconde","field-sat-relative+-1":"afgelopen zaterdag","field-sun-relative+-1":"afgelopen zondag","field-month-relative+0":"deze maand","field-month-relative+1":"volgende maand","dateFormatItem-Ed":"E d","field-week":"Week","dateFormat-medium":"d MMM y G","field-year-relative+0":"dit jaar","field-week-relative+-1":"vorige week","dateFormatItem-yyyyM":"M-y GGGGG","field-year-relative+1":"volgend jaar","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"deze week","field-week-relative+1":"volgende week"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/persian",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-thu-short-relative+0":"deze donder.","field-day-short-relative+-1":"gisteren","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"volgende week donder.","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AP"],"field-weekOfMonth":"week van de maand","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","days-standAlone-narrow":["Z","M","D","W","D","V","Z"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","quarters-standAlone-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"days-format-narrow":["Z","M","D","W","D","V","Z"],"field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM y G","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dayPeriods-format-narrow-pm":"p.m.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AP"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"M-y GGGGG","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m./p.m.","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"vorige week","days-format-short":["zo","ma","di","wo","do","vr","za"],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d-M","field-minute-narrow-relative+0":"binnen een minuut","field-hour":"uur","months-format-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","months-format-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy GGGGG","field-thu-short-relative+-1":"afgelopen donder.","field-year-narrow-relative+-1":"vorig jaar","days-standAlone-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","field-weekOfMonth-short":"wk van de mnd","field-tue-narrow-relative+-1":"afgelopen di","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-M":"L","months-standAlone-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","days-standAlone-abbr":["zo","ma","di","wo","do","vr","za"],"dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","quarters-format-wide":["1e kwartaal","2e kwartaal","3e kwartaal","4e kwartaal"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","days-standAlone-short":["zo","ma","di","wo","do","vr","za"],"field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"uur","field-zone-short":"zone","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","eraNarrow":"AP","field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","days-format-wide":["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],"field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","days-format-abbr":["zo","ma","di","wo","do","vr","za"],"field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/nl/roc.js b/lib/dojo/cldr/nls/nl/roc.js
index 32f042ad3..295ec1959 100644
--- a/lib/dojo/cldr/nls/nl/roc.js
+++ b/lib/dojo/cldr/nls/nl/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/nl/roc",{"field-second-relative+0":"nu","field-weekday":"Dag van de week","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"afgelopen dinsdag","dateFormat-long":"d MMMM y G","field-fri-relative+-1":"afgelopen vrijdag","field-wed-relative+-1":"afgelopen woensdag","dateFormatItem-yyyyQQQ":"QQQ y G","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-thu-relative+-1":"afgelopen donderdag","dateFormatItem-Md":"d-M","field-era":"Tijdperk","field-year":"Jaar","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"Uur","field-sat-relative+0":"deze zaterdag","field-sat-relative+1":"volgende week zaterdag","field-day-relative+0":"vandaag","field-thu-relative+0":"deze donderdag","field-day-relative+1":"morgen","field-thu-relative+1":"volgende week donderdag","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"overmorgen","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","eraAbbr":["Before R.O.C.","Minguo"],"field-minute":"Minuut","field-dayperiod":"a.m./p.m.","dateFormatItem-d":"d","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d-M","field-fri-relative+0":"deze vrijdag","field-fri-relative+1":"volgende week vrijdag","field-day":"Dag","field-zone":"Zone","dateFormatItem-y":"y G","field-year-relative+-1":"vorig jaar","field-month-relative+-1":"vorige maand","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-month":"Maand","dateFormatItem-MMM":"LLL","field-tue-relative+0":"deze dinsdag","field-tue-relative+1":"volgende week dinsdag","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","dateFormat-short":"dd-MM-yy GGGGG","field-second":"Seconde","field-sat-relative+-1":"afgelopen zaterdag","field-sun-relative+-1":"afgelopen zondag","field-month-relative+0":"deze maand","field-month-relative+1":"volgende maand","dateFormatItem-Ed":"E d","field-week":"Week","dateFormat-medium":"d MMM y G","field-year-relative+0":"dit jaar","field-week-relative+-1":"vorige week","dateFormatItem-yyyyM":"M-y GGGGG","field-year-relative+1":"volgend jaar","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-yyyy":"y G","field-week-relative+0":"deze week","field-week-relative+1":"volgende week"}); \ No newline at end of file
+define("dojo/cldr/nls/nl/roc",{"field-quarter-short-relative+0":"dit kwartaal","field-quarter-short-relative+1":"volgend kwartaal","field-tue-relative+-1":"afgelopen dinsdag","field-year":"jaar","field-wed-relative+0":"deze woensdag","field-wed-relative+1":"volgende week woensdag","field-minute":"minuut","field-month-narrow-relative+-1":"vorige maand","field-tue-narrow-relative+0":"deze di","field-tue-narrow-relative+1":"volgende week di","field-day-short-relative+-1":"gisteren","field-thu-short-relative+0":"deze donder.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"vandaag","field-day-short-relative+-2":"eergisteren","field-thu-short-relative+1":"volgende week donder.","field-day-relative+1":"morgen","field-week-narrow-relative+0":"deze week","field-day-relative+2":"overmorgen","field-week-narrow-relative+1":"volgende week","field-wed-narrow-relative+-1":"afgelopen wo","field-year-narrow":"jr","field-era-short":"tijdperk","field-year-narrow-relative+0":"dit jaar","field-tue-relative+0":"deze dinsdag","field-year-narrow-relative+1":"volgend jaar","field-tue-relative+1":"volgende week dinsdag","field-weekdayOfMonth":"weekdag van de maand","field-second-short":"sec","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"wkdag v.d. mnd","field-week-relative+0":"deze week","field-month-relative+0":"deze maand","field-week-relative+1":"volgende week","field-month-relative+1":"volgende maand","field-sun-narrow-relative+0":"deze zo","field-mon-short-relative+0":"deze maan.","field-sun-narrow-relative+1":"volgende week zo","field-mon-short-relative+1":"volgende week maan.","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["voor R.O.C.","Minguo"],"field-weekOfMonth":"week van de maand","field-month-short":"mnd","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"d-M-y GGGGG","field-day":"dag","field-dayOfYear-short":"dag van het jr","field-year-relative+-1":"vorig jaar","field-sat-short-relative+-1":"afgelopen zater.","field-hour-relative+0":"binnen een uur","dateFormatItem-yyyyMEd":"E d-M-y GGGGG","field-second-short-relative+0":"nu","field-wed-relative+-1":"afgelopen woensdag","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"afgelopen za","field-second":"seconde","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"binnen een uur","field-quarter":"kwartaal","field-week-short":"wk","field-day-narrow-relative+0":"vandaag","field-day-narrow-relative+1":"morgen","field-day-narrow-relative+2":"overmorgen","field-tue-short-relative+0":"deze dins.","field-tue-short-relative+1":"volgende week dins.","field-month-short-relative+-1":"vorige maand","field-mon-relative+-1":"afgelopen maandag","dateFormatItem-GyMMM":"MMM y G","field-month":"maand","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"a.m./p.m.","field-sat-short-relative+0":"deze zater.","field-sat-short-relative+1":"volgende week zater.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["voor R.O.C.","Minguo"],"dateFormatItem-yyyyM":"M-y GGGGG","field-second-narrow":"s","field-mon-relative+0":"deze maandag","field-mon-relative+1":"volgende week maandag","field-day-narrow-relative+-1":"gisteren","field-year-short":"jr","field-day-narrow-relative+-2":"eergisteren","field-quarter-relative+-1":"vorig kwartaal","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m./p.m.","field-week-narrow-relative+-1":"vorige week","field-dayOfYear":"dag van het jaar","field-sat-relative+-1":"afgelopen zaterdag","dateTimeFormat-long":"{1} 'om' {0}","dateFormatItem-Md":"d-M","field-hour":"uur","field-minute-narrow-relative+0":"binnen een minuut","dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"vorige maand","field-quarter-short":"kwartaal","field-sat-narrow-relative+0":"deze za","field-fri-relative+0":"deze vrijdag","field-sat-narrow-relative+1":"volgende week za","field-fri-relative+1":"volgende week vrijdag","field-month-narrow-relative+0":"deze maand","field-month-narrow-relative+1":"volgende maand","field-sun-short-relative+0":"deze zon.","field-sun-short-relative+1":"volgende week zon.","field-week-relative+-1":"vorige week","field-quarter-short-relative+-1":"vorig kwartaal","field-minute-short-relative+0":"binnen een minuut","field-quarter-relative+0":"dit kwartaal","field-minute-relative+0":"binnen een minuut","field-quarter-relative+1":"volgend kwartaal","field-wed-short-relative+-1":"afgelopen woens.","dateFormat-short":"dd-MM-yy GGGGG","field-year-narrow-relative+-1":"vorig jaar","field-thu-short-relative+-1":"afgelopen donder.","dateFormatItem-yyyyMMMEd":"E d MMM y G","field-mon-narrow-relative+-1":"afgelopen ma","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"afgelopen do","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"afgelopen di","field-weekOfMonth-short":"wk van de mnd","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"deze woens.","field-wed-short-relative+1":"volgende week woens.","field-sun-relative+-1":"afgelopen zondag","dateTimeFormat-full":"{1} 'om' {0}","field-second-narrow-relative+0":"nu","dateFormatItem-d":"d","field-weekday":"dag van de week","field-day-short-relative+0":"vandaag","field-quarter-narrow-relative+0":"dit kwartaal","field-day-short-relative+1":"morgen","field-sat-relative+0":"deze zaterdag","field-quarter-narrow-relative+1":"volgend kwartaal","field-day-short-relative+2":"overmorgen","field-sat-relative+1":"volgende week zaterdag","field-week-short-relative+0":"deze week","field-week-short-relative+1":"volgende week","field-dayOfYear-narrow":"dag v.h. jr","field-month-short-relative+0":"deze maand","field-month-short-relative+1":"volgende maand","field-weekdayOfMonth-short":"wkdag van de mnd","dateFormatItem-MEd":"E d-M","field-zone-narrow":"zone","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"deze do","field-sun-narrow-relative+-1":"afgelopen zo","field-mon-short-relative+-1":"afgelopen maan.","field-thu-narrow-relative+1":"volgende week do","field-thu-relative+0":"deze donderdag","field-thu-relative+1":"volgende week donderdag","field-fri-short-relative+-1":"afgelopen vrij.","field-thu-relative+-1":"afgelopen donderdag","field-week":"week","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"deze wo","field-wed-narrow-relative+1":"volgende week wo","field-quarter-narrow-relative+-1":"vorig kwartaal","field-year-short-relative+0":"dit jaar","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m./p.m.","field-year-short-relative+1":"volgend jaar","field-fri-short-relative+0":"deze vrij.","field-fri-short-relative+1":"volgende week vrij.","field-week-short-relative+-1":"vorige week","field-hour-narrow-relative+0":"binnen een uur","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"uur","field-zone-short":"zone","field-month-narrow":"mnd","field-hour-narrow":"u","field-fri-narrow-relative+-1":"afgelopen vr","field-year-relative+0":"dit jaar","field-year-relative+1":"volgend jaar","field-era-narrow":"tijdperk","field-fri-relative+-1":"afgelopen vrijdag","eraNarrow":["voor R.O.C.","Minguo"],"field-tue-short-relative+-1":"afgelopen dins.","field-minute-narrow":"min","field-mon-narrow-relative+0":"deze ma","field-mon-narrow-relative+1":"volgende week ma","field-year-short-relative+-1":"vorig jaar","field-zone":"tijdzone","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"wk v.d. mnd","field-weekday-narrow":"dag v.d. wk","field-quarter-narrow":"kwartaal","field-sun-short-relative+-1":"afgelopen zon.","field-day-relative+-1":"gisteren","field-day-relative+-2":"eergisteren","field-weekday-short":"dag van de wk","field-sun-relative+0":"deze zondag","field-sun-relative+1":"volgende week zondag","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"wk","field-era":"tijdperk","field-fri-narrow-relative+0":"deze vr","field-fri-narrow-relative+1":"volgende week vr"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/number.js b/lib/dojo/cldr/nls/number.js
index 0c0bbd815..f57ffc411 100644
--- a/lib/dojo/cldr/nls/number.js
+++ b/lib/dojo/cldr/nls/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/number",{root:{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","currencyFormat":"¤ #,##0.00","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000T","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"ar":true,"bs":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"es":true,"fi":true,"fr":true,"fr-ch":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true,"zh-hk":true,"zh-tw":true}); \ No newline at end of file
+define("dojo/cldr/nls/number",{root:{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤ #,##0.00","perMille":"‰","approximatelySign":"~","group":",","percentFormat":"#,##0%","decimalFormat-long":"000T","decimalFormat":"#,##0.###","currencyFormat-short":"¤ 000T","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"ar":true,"bs":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"en-au":true,"en-ca":true,"es":true,"fi":true,"fr":true,"fr-ch":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true,"zh-hk":true,"zh-tw":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/persian.js b/lib/dojo/cldr/nls/persian.js
index fb966141a..fb4e0c144 100644
--- a/lib/dojo/cldr/nls/persian.js
+++ b/lib/dojo/cldr/nls/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/persian",{root:{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"now","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Day of the Week","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-MMMEd":"MMM d, E","eraNarrow":["AP"],"field-tue-relative+-1":"last Tuesday","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","dateFormat-long":"G y MMMM d","field-fri-relative+-1":"last Friday","field-wed-relative+-1":"last Wednesday","months-format-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"dateFormatItem-yyyyQQQ":"G y QQQ","dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-thu-relative+-1":"last Thursday","dateFormatItem-Md":"MM-dd","dayPeriods-format-abbr-am":"AM","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dayPeriods-format-wide-noon":"noon","field-era":"Era","months-standAlone-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"timeFormat-short":"HH:mm","quarters-format-wide":["Q1","Q2","Q3","Q4"],"timeFormat-long":"HH:mm:ss z","field-year":"Year","dateTimeFormats-appendItem-Era":"{1} {0}","field-hour":"Hour","months-format-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-sat-relative+0":"this Saturday","field-sat-relative+1":"next Saturday","timeFormat-full":"HH:mm:ss zzzz","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-day-relative+0":"today","field-thu-relative+0":"this Thursday","field-day-relative+1":"tomorrow","field-thu-relative+1":"next Thursday","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-H":"HH","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Gy":"G y","dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateFormatItem-M":"L","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMM":"G y MMM","dateFormatItem-yyyyMMMd":"G y MMM d","dayPeriods-format-abbr-noon":"noon","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"this Sunday","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"next Sunday","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["AP"],"field-minute":"Minute","field-dayperiod":"Dayperiod","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"yesterday","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"a","dateFormatItem-h":"h a","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"MM-dd, E","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-day":"Day","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone":"Zone","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-y":"G y","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-year-relative+-1":"last year","field-month-relative+-1":"last month","dateTimeFormats-appendItem-Year":"{1} {0}","dateFormatItem-hm":"h:mm a","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"eraNames":["AP"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-month":"Month","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-MMM":"LLL","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","dayPeriods-format-wide-am":"AM","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-format-narrow-noon":"n","field-second":"Second","field-sat-relative+-1":"last Saturday","field-sun-relative+-1":"last Sunday","field-month-relative+0":"this month","field-month-relative+1":"next month","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormatItem-Ed":"d, E","field-week":"Week","dateFormat-medium":"G y MMM d","field-week-relative+-1":"last week","field-year-relative+0":"this year","dateFormatItem-yyyyM":"GGGGG y-MM","field-year-relative+1":"next year","dayPeriods-format-narrow-pm":"p","dateFormatItem-yyyyQQQQ":"G y QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"G y MMM","field-mon-relative+-1":"last Monday","dateFormatItem-yyyy":"G y","field-week-relative+0":"this week","field-week-relative+1":"next week"},"ar":true,"fr":true,"hu":true,"id":true,"ja":true,"nl":true,"pl":true,"pt":true,"ru":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/persian",{root:{"field-quarter-short-relative+0":"this quarter","dateTimeFormats-appendItem-Year":"{1} {0}","field-quarter-short-relative+1":"next quarter","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","field-month-narrow-relative+-1":"last month","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","field-thu-short-relative+0":"this Thursday","field-day-short-relative+-1":"yesterday","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"next Thursday","field-day-relative+0":"today","field-day-relative+1":"tomorrow","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-wed-narrow-relative+-1":"last Wednesday","dateFormatItem-EBhms":"E h:mm:ss B","field-year-narrow":"Year","field-era-short":"Era","field-year-narrow-relative+0":"this year","field-tue-relative+0":"this Tuesday","field-year-narrow-relative+1":"next year","field-tue-relative+1":"next Tuesday","field-weekdayOfMonth":"Weekday Of Month","field-second-short":"Second","dayPeriods-format-narrow-am":"AM","dateFormatItem-MMMd":"MMM d","field-weekdayOfMonth-narrow":"Weekday Of Month","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","field-sun-narrow-relative+0":"this Sunday","timeFormat-medium":"HH:mm:ss","field-mon-short-relative+0":"this Monday","field-sun-narrow-relative+1":"next Sunday","field-mon-short-relative+1":"next Monday","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["AP"],"field-weekOfMonth":"Week Of Month","dayPeriods-standAlone-abbr-pm":"PM","field-month-short":"Month","dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-dayOfYear-short":"Day Of Year","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","field-sat-short-relative+-1":"last Saturday","field-hour-relative+0":"this hour","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-second-short-relative+0":"now","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"last Saturday","field-second":"Second","days-standAlone-narrow":["S","M","T","W","T","F","S"],"dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","field-hour-short-relative+0":"this hour","field-quarter":"Quarter","field-week-short":"Week","field-day-narrow-relative+0":"today","field-day-narrow-relative+1":"tomorrow","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","field-tue-short-relative+0":"this Tuesday","field-tue-short-relative+1":"next Tuesday","field-month-short-relative+-1":"last month","field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","field-day-narrow":"Day","dateFormatItem-MMM":"LLL","field-minute-short":"Minute","field-dayperiod":"Dayperiod","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","dayPeriods-format-narrow-pm":"PM","dateFormat-medium":"G y MMM d","dateFormatItem-yyyyMMMM":"G y MMMM","eraAbbr":["AP"],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-second-narrow":"Second","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","field-day-narrow-relative+-1":"yesterday","field-year-short":"Year","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"last quarter","dateFormatItem-yyyyMMMd":"G y MMM d","field-dayperiod-narrow":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-dayOfYear":"Day Of Year","field-sat-relative+-1":"last Saturday","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","field-minute-narrow-relative+0":"this minute","field-hour":"Hour","months-format-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"Quarter","field-sat-narrow-relative+0":"this Saturday","field-fri-relative+0":"this Friday","field-sat-narrow-relative+1":"next Saturday","field-fri-relative+1":"next Friday","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-sun-short-relative+0":"this Sunday","field-sun-short-relative+1":"next Sunday","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-week-relative+-1":"last week","field-quarter-short-relative+-1":"last quarter","field-minute-short-relative+0":"this minute","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-quarter-relative+0":"this quarter","field-minute-relative+0":"this minute","timeFormat-long":"HH:mm:ss z","field-quarter-relative+1":"next quarter","field-wed-short-relative+-1":"last Wednesday","dateFormat-short":"GGGGG y-MM-dd","dateFormatItem-Bh":"h B","field-thu-short-relative+-1":"last Thursday","field-year-narrow-relative+-1":"last year","days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","field-mon-narrow-relative+-1":"last Monday","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-MMMMd":"MMMM d","field-thu-narrow-relative+-1":"last Thursday","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"last Tuesday","dateFormatItem-H":"HH","field-weekOfMonth-short":"Week Of Month","dayPeriods-standAlone-narrow-pm":"PM","dateFormatItem-yyyy":"G y","field-wed-short-relative+0":"this Wednesday","dateFormatItem-M":"L","months-standAlone-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-wed-short-relative+1":"next Wednesday","field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"now","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"Day of the Week","field-day-short-relative+0":"today","field-day-short-relative+1":"tomorrow","field-sat-relative+0":"this Saturday","field-quarter-narrow-relative+0":"this quarter","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","field-quarter-narrow-relative+1":"next quarter","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-dayOfYear-narrow":"Day Of Year","field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","field-weekdayOfMonth-short":"Weekday Of Month","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","field-zone-narrow":"Zone","dateFormatItem-y":"G y","field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+-1":"last Sunday","field-mon-short-relative+-1":"last Monday","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","quarters-standAlone-narrow":["1","2","3","4"],"field-week":"Week","quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-quarter-narrow-relative+-1":"last quarter","field-year-short-relative+0":"this year","dateFormatItem-yyyyMMM":"G y MMM","field-dayperiod-short":"Dayperiod","field-year-short-relative+1":"next year","field-fri-short-relative+0":"this Friday","field-fri-short-relative+1":"next Friday","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-week-short-relative+-1":"last week","field-hour-narrow-relative+0":"this hour","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-zone-short":"Zone","field-hour-short":"Hour","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-month-narrow":"Month","field-hour-narrow":"Hour","field-fri-narrow-relative+-1":"last Friday","field-year-relative+0":"this year","field-year-relative+1":"next year","field-era-narrow":"Era","field-fri-relative+-1":"last Friday","eraNarrow":["AP"],"dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"last Tuesday","field-minute-narrow":"Minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","dateFormatItem-EHm":"E HH:mm","field-year-short-relative+-1":"last year","field-zone":"Zone","dateFormatItem-MMMEd":"MMM d, E","field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"Day of the Week","field-quarter-narrow":"Quarter","field-sun-short-relative+-1":"last Sunday","field-day-relative+-1":"yesterday","dayPeriods-standAlone-abbr-am":"AM","field-weekday-short":"Day of the Week","dateFormatItem-Bhm":"h:mm B","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-week-narrow":"Week","field-era":"Era","field-day-short":"Day","field-fri-narrow-relative+0":"this Friday","field-fri-narrow-relative+1":"next Friday","dayPeriods-standAlone-wide-am":"AM"},"ar":true,"cs":true,"da":true,"de":true,"el":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"ro":true,"ru":true,"sk":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/buddhist.js b/lib/dojo/cldr/nls/pl/buddhist.js
index 778d005eb..968b47170 100644
--- a/lib/dojo/cldr/nls/pl/buddhist.js
+++ b/lib/dojo/cldr/nls/pl/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/buddhist",{"days-standAlone-short":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"months-format-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"field-second-relative+0":"teraz","field-weekday":"dzień tygodnia","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"w zeszły wtorek","days-format-short":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"w zeszły piątek","field-wed-relative+-1":"w zeszłą środę","months-format-wide":["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, d.MM.y G","field-thu-relative+-1":"w zeszły czwartek","dateFormatItem-Md":"d.MM","dayPeriods-format-wide-noon":"w południe","field-era":"era","months-standAlone-wide":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"field-year":"rok","field-hour":"godzina","months-format-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-day-relative+0":"dzisiaj","field-thu-relative+0":"w ten czwartek","field-day-relative+1":"jutro","field-thu-relative+1":"w przyszły czwartek","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"pojutrze","months-standAlone-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"eraAbbr":["BE"],"field-minute":"minuta","field-dayperiod":"rano / po południu / wieczorem","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-day-relative+-1":"wczoraj","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"przedwczoraj","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","field-day":"dzień","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-zone":"strefa czasowa","dateFormatItem-y":"y G","months-standAlone-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"field-year-relative+-1":"w zeszłym roku","field-month-relative+-1":"w zeszłym miesiącu","dateFormatItem-hm":"hh:mm a","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"days-format-narrow":["N","P","W","Ś","C","P","S"],"dateFormatItem-yyyyMd":"d.MM.y G","field-month":"miesiąc","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"field-tue-relative+0":"w ten wtorek","field-tue-relative+1":"w przyszły wtorek","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","dateFormat-short":"dd.MM.y G","field-second":"sekunda","field-sat-relative+-1":"w zeszłą sobotę","field-sun-relative+-1":"w zeszłą niedzielę","field-month-relative+0":"w tym miesiącu","field-month-relative+1":"w przyszłym miesiącu","dateFormatItem-Ed":"E, d","field-week":"tydzień","dateFormat-medium":"d MMM y G","field-year-relative+0":"w tym roku","field-week-relative+-1":"w zeszłym tygodniu","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"w przyszłym roku","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"w zeszły poniedziałek","dateFormatItem-yyyy":"y G","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/buddhist",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["S","L","M","K","M","C","L","S","W","P","L","G"],"eraNames":["e.b."],"field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d.MM.y G","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","dateFormatItem-yyyyMEd":"E, d.MM.y G","field-wed-relative+-1":"w zeszłą środę","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"days-format-narrow":["n","p","w","ś","c","p","s"],"field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","dateFormatItem-GyMMM":"LLL y G","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["e.b."],"quarters-standAlone-abbr":["I kw.","II kw.","III kw.","IV kw."],"dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","months-format-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"field-quarter-relative+-1":"w zeszłym kwartale","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"rano / po poł. / wiecz.","dayPeriods-standAlone-narrow-am":"a","field-week-narrow-relative+-1":"w zeszłym tyg.","days-format-short":["nie","pon","wto","śro","czw","pią","sob"],"field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d.MM","field-hour":"godzina","months-format-wide":["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","months-format-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","dateFormat-short":"dd.MM.y G","field-thu-short-relative+-1":"w zeszły czwartek","field-year-narrow-relative+-1":"w zeszłym roku","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"w zeszły poniedziałek","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p","field-wed-short-relative+0":"w tę środę","months-standAlone-wide":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dateTimeFormat-full":"{1}, {0}","dateFormatItem-hm":"hh:mm a","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-relative+1":"w przyszłą sobotę","field-day-short-relative+2":"pojutrze","dateFormatItem-h":"hh a","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","months-standAlone-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","dateFormatItem-MEd":"E, d.MM","field-zone-narrow":"str. czas.","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","field-fri-short-relative+-1":"w zeszły piątek","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","field-dayperiod-short":"rano / po południu / wieczorem","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","days-standAlone-short":["nie","pon","wto","śro","czw","pią","sob"],"field-week-short-relative+-1":"w zeszłym tyg.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"godz.","field-zone-short":"str. czasowa","quarters-format-abbr":["I kw.","II kw.","III kw.","IV kw."],"field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","eraNarrow":"e.b.","field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","dateFormatItem-Gy":"y G","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/chinese.js b/lib/dojo/cldr/nls/pl/chinese.js
index ea866ac96..108ba236c 100644
--- a/lib/dojo/cldr/nls/pl/chinese.js
+++ b/lib/dojo/cldr/nls/pl/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/chinese",{"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-dayperiod":"rano / po południu / wieczorem","field-sun-relative+-1":"w zeszłą niedzielę","field-mon-relative+-1":"w zeszły poniedziałek","field-minute":"minuta","field-day-relative+-1":"wczoraj","field-weekday":"dzień tygodnia","field-day-relative+-2":"przedwczoraj","field-era":"era","field-hour":"godzina","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+-1":"w zeszłą środę","field-day-relative+0":"dzisiaj","field-day-relative+1":"jutro","field-day-relative+2":"pojutrze","dateFormat-long":"d MMMM U","field-tue-relative+0":"w ten wtorek","field-zone":"strefa czasowa","field-tue-relative+1":"w przyszły wtorek","field-week-relative+-1":"w zeszłym tygodniu","dateFormat-medium":"d MMM U","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-sat-relative+-1":"w zeszłą sobotę","field-year-relative+-1":"w zeszłym roku","field-year":"rok","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-week":"tydzień","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-month-relative+0":"w tym miesiącu","field-month":"miesiąc","field-month-relative+1":"w przyszłym miesiącu","field-fri-relative+-1":"w zeszły piątek","field-second":"sekunda","field-tue-relative+-1":"w zeszły wtorek","field-day":"dzień","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-second-relative+0":"teraz","dateFormat-short":"dd.MM.y","field-thu-relative+1":"w przyszły czwartek","dateFormat-full":"EEEE, d MMMM U","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-month-relative+-1":"w zeszłym miesiącu","field-thu-relative+-1":"w zeszły czwartek"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/chinese",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","field-wed-relative+-1":"w zeszłą środę","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","dateFormat-long":"d MMMM U","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","dateFormat-medium":"d MMM U","field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"w zeszłym kwartale","field-dayperiod-narrow":"rano / po poł. / wiecz.","field-week-narrow-relative+-1":"w zeszłym tyg.","field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","field-hour":"godzina","dateFormat-full":"EEEE, d MMMM U","field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","dateFormat-short":"dd.MM.y","field-thu-short-relative+-1":"w zeszły czwartek","field-year-narrow-relative+-1":"w zeszłym roku","field-mon-narrow-relative+-1":"w zeszły poniedziałek","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","field-wed-short-relative+0":"w tę środę","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-relative+1":"w przyszłą sobotę","field-day-short-relative+2":"pojutrze","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","field-zone-narrow":"str. czas.","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","field-fri-short-relative+-1":"w zeszły piątek","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","field-dayperiod-short":"rano / po południu / wieczorem","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","field-week-short-relative+-1":"w zeszłym tyg.","field-hour-short":"godz.","field-zone-short":"str. czasowa","field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/coptic.js b/lib/dojo/cldr/nls/pl/coptic.js
index 470364cf4..af246a8e4 100644
--- a/lib/dojo/cldr/nls/pl/coptic.js
+++ b/lib/dojo/cldr/nls/pl/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/coptic",{"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-dayperiod":"rano / po południu / wieczorem","field-sun-relative+-1":"w zeszłą niedzielę","field-mon-relative+-1":"w zeszły poniedziałek","field-minute":"minuta","field-day-relative+-1":"wczoraj","field-weekday":"dzień tygodnia","field-day-relative+-2":"przedwczoraj","field-era":"era","field-hour":"godzina","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","months-standAlone-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-wed-relative+-1":"w zeszłą środę","field-day-relative+0":"dzisiaj","field-day-relative+1":"jutro","field-day-relative+2":"pojutrze","field-tue-relative+0":"w ten wtorek","field-zone":"strefa czasowa","field-tue-relative+1":"w przyszły wtorek","field-week-relative+-1":"w zeszłym tygodniu","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-sat-relative+-1":"w zeszłą sobotę","field-year-relative+-1":"w zeszłym roku","field-year":"rok","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","months-standAlone-wide":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-week":"tydzień","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu","months-format-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-month-relative+0":"w tym miesiącu","field-month":"miesiąc","field-month-relative+1":"w przyszłym miesiącu","field-fri-relative+-1":"w zeszły piątek","field-second":"sekunda","field-tue-relative+-1":"w zeszły wtorek","field-day":"dzień","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-second-relative+0":"teraz","field-thu-relative+1":"w przyszły czwartek","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-month-relative+-1":"w zeszłym miesiącu","field-thu-relative+-1":"w zeszły czwartek"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/coptic",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","field-wed-relative+-1":"w zeszłą środę","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"w zeszłym kwartale","field-dayperiod-narrow":"rano / po poł. / wiecz.","field-week-narrow-relative+-1":"w zeszłym tyg.","field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","field-hour":"godzina","field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","field-thu-short-relative+-1":"w zeszły czwartek","field-year-narrow-relative+-1":"w zeszłym roku","field-mon-narrow-relative+-1":"w zeszły poniedziałek","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","field-wed-short-relative+0":"w tę środę","field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-relative+1":"w przyszłą sobotę","field-day-short-relative+2":"pojutrze","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","field-zone-narrow":"str. czas.","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","field-fri-short-relative+-1":"w zeszły piątek","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","field-dayperiod-short":"rano / po południu / wieczorem","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","field-week-short-relative+-1":"w zeszłym tyg.","field-hour-short":"godz.","field-zone-short":"str. czasowa","field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/currency.js b/lib/dojo/cldr/nls/pl/currency.js
index cf8ee3ea2..6aa90e646 100644
--- a/lib/dojo/cldr/nls/pl/currency.js
+++ b/lib/dojo/cldr/nls/pl/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/currency",{"HKD_displayName":"dolar hongkoński","CHF_displayName":"frank szwajcarski","JPY_symbol":"JPY","CAD_displayName":"dolar kanadyjski","HKD_symbol":"HKD","CNY_displayName":"juan chiński","USD_symbol":"USD","AUD_displayName":"dolar australijski","JPY_displayName":"jen japoński","CAD_symbol":"CAD","USD_displayName":"dolar amerykański","CNY_symbol":"CNY","GBP_displayName":"funt szterling","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/currency",{"HKD_displayName":"dolar hongkoński","CHF_displayName":"frank szwajcarski","CHF_symbol":"CHF","JPY_symbol":"JPY","CAD_displayName":"dolar kanadyjski","HKD_symbol":"HKD","CNY_displayName":"juan chiński","USD_symbol":"USD","AUD_displayName":"dolar australijski","JPY_displayName":"jen japoński","CAD_symbol":"CAD","USD_displayName":"dolar amerykański","CNY_symbol":"CNY","GBP_displayName":"funt szterling","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"euro"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/ethiopic.js b/lib/dojo/cldr/nls/pl/ethiopic.js
index 454f88d19..b10ea8e10 100644
--- a/lib/dojo/cldr/nls/pl/ethiopic.js
+++ b/lib/dojo/cldr/nls/pl/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/ethiopic",{"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-dayperiod":"rano / po południu / wieczorem","field-sun-relative+-1":"w zeszłą niedzielę","field-mon-relative+-1":"w zeszły poniedziałek","field-minute":"minuta","field-day-relative+-1":"wczoraj","field-weekday":"dzień tygodnia","field-day-relative+-2":"przedwczoraj","field-era":"era","field-hour":"godzina","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-wed-relative+-1":"w zeszłą środę","field-day-relative+0":"dzisiaj","field-day-relative+1":"jutro","field-day-relative+2":"pojutrze","field-tue-relative+0":"w ten wtorek","field-zone":"strefa czasowa","field-tue-relative+1":"w przyszły wtorek","field-week-relative+-1":"w zeszłym tygodniu","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-sat-relative+-1":"w zeszłą sobotę","field-year-relative+-1":"w zeszłym roku","field-year":"rok","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-week":"tydzień","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-month-relative+0":"w tym miesiącu","field-month":"miesiąc","field-month-relative+1":"w przyszłym miesiącu","field-fri-relative+-1":"w zeszły piątek","field-second":"sekunda","field-tue-relative+-1":"w zeszły wtorek","field-day":"dzień","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-second-relative+0":"teraz","field-thu-relative+1":"w przyszły czwartek","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-month-relative+-1":"w zeszłym miesiącu","field-thu-relative+-1":"w zeszły czwartek"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/ethiopic",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","field-wed-relative+-1":"w zeszłą środę","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"w zeszłym kwartale","field-dayperiod-narrow":"rano / po poł. / wiecz.","field-week-narrow-relative+-1":"w zeszłym tyg.","field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","field-hour":"godzina","field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","field-thu-short-relative+-1":"w zeszły czwartek","field-year-narrow-relative+-1":"w zeszłym roku","field-mon-narrow-relative+-1":"w zeszły poniedziałek","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","field-wed-short-relative+0":"w tę środę","field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-relative+1":"w przyszłą sobotę","field-day-short-relative+2":"pojutrze","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","field-zone-narrow":"str. czas.","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","field-fri-short-relative+-1":"w zeszły piątek","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","field-dayperiod-short":"rano / po południu / wieczorem","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","field-week-short-relative+-1":"w zeszłym tyg.","field-hour-short":"godz.","field-zone-short":"str. czasowa","field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/generic.js b/lib/dojo/cldr/nls/pl/generic.js
index 8e742b7e8..cd48122e7 100644
--- a/lib/dojo/cldr/nls/pl/generic.js
+++ b/lib/dojo/cldr/nls/pl/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/generic",{"field-second-relative+0":"teraz","field-weekday":"dzień tygodnia","field-wed-relative+0":"w tę środę","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-wed-relative+1":"w przyszłą środę","field-tue-relative+-1":"w zeszły wtorek","dateFormat-long":"d MMMM y G","field-fri-relative+-1":"w zeszły piątek","field-wed-relative+-1":"w zeszłą środę","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, d.MM.y G","field-thu-relative+-1":"w zeszły czwartek","dateFormatItem-Md":"d.MM","field-era":"era","field-year":"rok","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormatItem-MMdd":"d.MM","field-hour":"godzina","field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-day-relative+0":"dzisiaj","field-day-relative+1":"jutro","field-thu-relative+0":"w ten czwartek","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"pojutrze","field-thu-relative+1":"w przyszły czwartek","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"w tę niedzielę","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"w przyszłą niedzielę","field-minute":"minuta","field-dayperiod":"rano / po południu / wieczorem","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"wczoraj","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"przedwczoraj","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","field-day":"dzień","field-zone":"strefa czasowa","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-y":"y G","field-year-relative+-1":"w zeszłym roku","field-month-relative+-1":"w zeszłym miesiącu","dateFormatItem-hm":"hh:mm a","dateFormatItem-yyyyMd":"d.MM.y G","field-month":"miesiąc","dateFormatItem-MMM":"LLL","field-tue-relative+0":"w ten wtorek","field-tue-relative+1":"w przyszły wtorek","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","dateFormat-short":"dd.MM.y G","field-second":"sekunda","field-sat-relative+-1":"w zeszłą sobotę","field-sun-relative+-1":"w zeszłą niedzielę","field-month-relative+0":"w tym miesiącu","field-month-relative+1":"w przyszłym miesiącu","dateFormatItem-Ed":"E, d","field-week":"tydzień","dateFormat-medium":"d MMM y G","field-year-relative+0":"w tym roku","field-week-relative+-1":"w zeszłym tygodniu","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"w przyszłym roku","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"w zeszły poniedziałek","dateFormatItem-yyyy":"y G","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/generic",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d.MM.y G","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","dateFormatItem-yyyyMEd":"E, d.MM.y G","field-wed-relative+-1":"w zeszłą środę","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","dateFormatItem-GyMMM":"LLL y G","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","field-quarter-relative+-1":"w zeszłym kwartale","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"rano / po poł. / wiecz.","field-week-narrow-relative+-1":"w zeszłym tyg.","field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d.MM","field-hour":"godzina","dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","dateFormat-short":"dd.MM.y G","field-year-narrow-relative+-1":"w zeszłym roku","field-thu-short-relative+-1":"w zeszły czwartek","dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"w zeszły poniedziałek","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"w tę środę","field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","dateTimeFormat-full":"{1}, {0}","dateFormatItem-hm":"hh:mm a","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","dateFormatItem-h":"hh a","field-day-short-relative+2":"pojutrze","field-sat-relative+1":"w przyszłą sobotę","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","dateFormatItem-MEd":"E, d.MM","field-zone-narrow":"str. czas.","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"w ten czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-narrow-relative+1":"w przyszły czwartek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","dateFormatItem-hms":"hh:mm:ss a","field-fri-short-relative+-1":"w zeszły piątek","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","dateFormatItem-yyyyMMM":"LLL y G","field-dayperiod-short":"rano / po południu / wieczorem","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","field-week-short-relative+-1":"w zeszłym tyg.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"godz.","field-zone-short":"str. czasowa","field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","field-sun-relative+0":"w tę niedzielę","dateFormatItem-MMdd":"d.MM","field-sun-relative+1":"w przyszłą niedzielę","dateFormatItem-Gy":"y G","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/gregorian.js b/lib/dojo/cldr/nls/pl/gregorian.js
index b6cd49136..a5cf044d4 100644
--- a/lib/dojo/cldr/nls/pl/gregorian.js
+++ b/lib/dojo/cldr/nls/pl/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/gregorian",{"dateFormatItem-Ehm":"E, h:mm a","days-standAlone-short":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"months-format-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"field-second-relative+0":"teraz","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"dzień tygodnia","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d.MM.y","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","dateFormatItem-GyMMMEd":"E, d.MM.y G","dateFormatItem-MMMEd":"E, d.MM","eraNarrow":["p.n.e.","BCE","n.e.","CE"],"dateFormatItem-yMM":"MM.y","field-tue-relative+-1":"w zeszły wtorek","dayPeriods-format-wide-earlyMorning":"nad ranem","dayPeriods-format-wide-morning":"rano","days-format-short":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"w zeszły piątek","field-wed-relative+-1":"w zeszłą środę","months-format-wide":["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia"],"dayPeriods-format-wide-evening":"wieczorem","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, d MMMM y","field-thu-relative+-1":"w zeszły czwartek","dateFormatItem-Md":"d.MM","dayPeriods-format-wide-noon":"w południe","dateFormatItem-yMd":"d.MM.y","field-era":"era","dateFormatItem-yM":"MM.y","months-standAlone-wide":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"timeFormat-short":"HH:mm","quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-yQQQQ":"QQQQ y","timeFormat-long":"HH:mm:ss z","field-year":"rok","dateFormatItem-yMMM":"MM.y","field-hour":"godzina","dateFormatItem-MMdd":"d.MM","months-format-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"dzisiaj","field-thu-relative+0":"w ten czwartek","field-day-relative+1":"jutro","field-thu-relative+1":"w przyszły czwartek","dateFormatItem-GyMMMd":"d.MM.y G","field-day-relative+2":"pojutrze","dateFormatItem-H":"HH","months-standAlone-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"w tę niedzielę","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"w przyszłą niedzielę","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"eraAbbr":["p.n.e.","BCE","n.e.","CE"],"field-minute":"minuta","field-dayperiod":"rano / po południu / wieczorem","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dayPeriods-format-wide-night":"w nocy","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"wczoraj","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"przedwczoraj","dateFormatItem-MMMd":"d.MM","dateFormatItem-MEd":"E, d.MM","dayPeriods-format-wide-lateMorning":"przed południem","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"w ten piątek","dateFormatItem-yMMMM":"LLLL y","field-fri-relative+1":"w przyszły piątek","field-day":"dzień","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-zone":"strefa czasowa","dateFormatItem-y":"y","months-standAlone-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"field-year-relative+-1":"w zeszłym roku","field-month-relative+-1":"w zeszłym miesiącu","dateFormatItem-hm":"h:mm a","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"eraNames":["p.n.e.","BCE","n.e.","CE"],"dateFormatItem-yMMMd":"d.MM.y","days-format-narrow":["N","P","W","Ś","C","P","S"],"days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"dateFormatItem-MMM":"LLL","field-month":"miesiąc","field-tue-relative+0":"w ten wtorek","field-tue-relative+1":"w przyszły wtorek","dayPeriods-format-wide-am":"AM","dateFormatItem-EHm":"E, HH:mm","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","dateFormat-short":"dd.MM.y","dayPeriods-format-wide-afternoon":"po południu","dateFormatItem-EHms":"E, HH:mm:ss","dateFormatItem-Ehms":"E, h:mm:ss a","field-second":"sekunda","field-sat-relative+-1":"w zeszłą sobotę","dateFormatItem-yMMMEd":"E, d.MM.y","field-sun-relative+-1":"w zeszłą niedzielę","field-month-relative+0":"w tym miesiącu","field-month-relative+1":"w przyszłym miesiącu","dateFormatItem-Ed":"E, d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"tydzień","dateFormat-medium":"dd.MM.y","field-year-relative+0":"w tym roku","field-week-relative+-1":"w zeszłym tygodniu","field-year-relative+1":"w przyszłym roku","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MM.y G","field-mon-relative+-1":"w zeszły poniedziałek","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/gregorian",{"dateFormatItem-yMMMM":"LLLL y","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+0":"w tę niedzielę","field-sun-narrow-relative+1":"w przyszłą niedzielę","months-format-wide":["stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek","eraNarrow":["p.n.e.","n.e."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM y","dayPeriods-format-abbr-night1":"w nocy","dayPeriods-format-narrow-evening1":"wiecz.","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dayPeriods-format-abbr-afternoon1":"po południu","dayPeriods-format-wide-evening1":"wieczorem","dateFormatItem-Ehm":"E, h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"w zeszłą środę","dayPeriods-standAlone-wide-evening1":"wieczór","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","dateFormatItem-Ehms":"E, h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"wiecz.","dayPeriods-standAlone-abbr-afternoon1":"popołudnie","field-thu-relative+0":"w ten czwartek","dayPeriods-standAlone-abbr-night1":"noc","field-thu-relative+1":"w przyszły czwartek","dayPeriods-format-wide-am":"AM","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","dateFormatItem-yMd":"d.MM.y","field-thu-narrow-relative+-1":"w zeszły czwartek","field-quarter-relative+0":"w tym kwartale","field-quarter-relative+1":"w przyszłym kwartale","field-sun-short-relative+0":"w tę niedzielę","timeFormat-short":"HH:mm","field-sun-short-relative+1":"w przyszłą niedzielę","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"po poł.","dateFormatItem-Md":"d.MM","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"tydz.","field-hour-relative+0":"ta godzina","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-mon-narrow-relative+-1":"w zeszły poniedziałek","field-minute-narrow":"min","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-GyMMMMEd":"E, d MMMM y G","field-thu-short-relative+0":"w ten czwartek","field-mon-relative+0":"w ten poniedziałek","field-thu-short-relative+1":"w przyszły czwartek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+0":"dziś","field-era-short":"era","field-day-narrow-relative+1":"jutro","field-sat-narrow-relative+0":"w tę sobotę","field-day-narrow-relative+2":"pojutrze","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"w przyszłą sobotę","field-week-narrow-relative+0":"w tym tyg.","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-month":"miesiąc","months-standAlone-wide":["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"field-weekday-narrow":"dz. tyg.","dayPeriods-standAlone-narrow-afternoon1":"popoł.","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","dayPeriods-format-abbr-evening1":"wieczorem","dayPeriods-format-abbr-noon":"w południe","dayPeriods-format-narrow-midnight":"o półn.","dayPeriods-format-wide-midnight":"o północy","field-tue-relative+0":"w ten wtorek","dateFormatItem-GyMMMMd":"d MMMM y G","field-tue-relative+1":"w przyszły wtorek","dayPeriods-standAlone-abbr-evening1":"wieczór","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"północ","field-year-narrow":"r.","dayPeriods-standAlone-abbr-noon":"południe","field-tue-short-relative+0":"w ten wtorek","dayPeriods-standAlone-narrow-midnight":"półn.","field-tue-short-relative+1":"w przyszły wtorek","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","dateFormatItem-M":"L","field-wed-short-relative+0":"w tę środę","field-fri-short-relative+0":"w ten piątek","field-wed-short-relative+1":"w przyszłą środę","field-fri-short-relative+1":"w przyszły piątek","field-weekOfMonth-short":"tydz. mies.","field-quarter-short-relative+-1":"w zeszłym kwartale","field-year-short-relative+-1":"w zeszłym roku","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"w nocy","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"w zeszłym kwartale","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"field-weekOfMonth-narrow":"tydz. mies.","dateFormatItem-y":"y","field-minute-relative+0":"ta minuta","field-year-short-relative+0":"w tym roku","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"w przyszłym roku","field-weekday":"dzień tygodnia","dayPeriods-format-narrow-pm":"p","field-tue-narrow-relative+-1":"w zeszły wtorek","dateFormatItem-yMEd":"E, d.MM.y","dayPeriods-standAlone-wide-night1":"noc","field-year-narrow-relative+-1":"w zeszłym roku","field-sat-relative+-1":"w zeszłą sobotę","dayPeriods-format-abbr-midnight":"o północy","dayPeriods-format-narrow-morning1":"rano","dayPeriods-format-narrow-morning2":"przed poł.","dayPeriods-format-wide-morning1":"rano","dayPeriods-format-wide-morning2":"przed południem","dayPeriods-standAlone-abbr-midnight":"północ","dayPeriods-standAlone-narrow-pm":"p","dayPeriods-standAlone-wide-morning1":"rano","field-mon-narrow-relative+0":"w ten poniedziałek","dayPeriods-standAlone-wide-morning2":"przedpołudnie","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-second":"sekunda","dateFormatItem-yMMMEd":"E, d MMM y","field-year-relative+-1":"w zeszłym roku","field-weekdayOfMonth-short":"dzień mies.","dateFormat-short":"dd.MM.y","eraNames":["przed naszą erą","naszej ery"],"field-second-short":"sek.","field-thu-short-relative+-1":"w zeszły czwartek","field-zone":"strefa czasowa","field-dayperiod-narrow":"rano / po poł. / wiecz.","field-sun-short-relative+-1":"w zeszłą niedzielę","dayPeriods-standAlone-narrow-morning1":"rano","dayPeriods-standAlone-narrow-morning2":"przedpoł.","eraAbbr":["p.n.e.","n.e."],"field-week-short":"tydz.","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"dzisiaj","field-day-relative+1":"jutro","field-day-relative+2":"pojutrze","field-dayOfYear-short":"dz. roku","dateFormat-long":"d MMMM y","field-day-short-relative+2":"pojutrze","field-sun-narrow-relative+-1":"w zeszłą niedzielę","dayPeriods-format-wide-noon":"w południe","field-second-relative+0":"teraz","field-quarter-relative+-1":"w zeszłym kwartale","dayPeriods-format-narrow-night1":"w nocy","quarters-format-abbr":["I kw.","II kw.","III kw.","IV kw."],"dayPeriods-standAlone-wide-noon":"południe","dayPeriods-standAlone-narrow-night1":"noc","field-week-relative+-1":"w zeszłym tygodniu","dayPeriods-format-abbr-morning1":"rano","field-month-relative+-1":"w zeszłym miesiącu","dayPeriods-format-abbr-morning2":"przed południem","months-format-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"field-year":"rok","field-era":"era","dayPeriods-standAlone-abbr-morning1":"rano","dayPeriods-standAlone-abbr-morning2":"przedpołudnie","days-standAlone-short":["nie","pon","wto","śro","czw","pią","sob"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-2":"przedwczoraj","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"godzina","field-dayOfYear-narrow":"dz. r.","field-quarter":"kwartał","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","dateFormatItem-GyMMMM":"LLLL y G","field-day":"dzień","field-mon-relative+-1":"w zeszły poniedziałek","field-dayOfYear":"dzień roku","dateFormat-medium":"d MMM y","dateTimeFormat-short":"{1}, {0}","dateFormatItem-yMMM":"LLL y","dateFormatItem-GyMMMd":"d MMM y G","dateFormatItem-MEd":"E, d.MM","field-tue-short-relative+-1":"w zeszły wtorek","field-year-short":"r.","field-month-short":"mies.","dateFormatItem-MMMEd":"E, d MMM","dayPeriods-format-wide-afternoon1":"po południu","dateFormatItem-MMMd":"d MMM","dateFormatItem-Bh":"h B","months-format-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","dayPeriods-format-wide-pm":"PM","field-zone-short":"str. czasowa","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-week-short-relative+0":"w tym tyg.","dateFormatItem-yMMMMd":"d MMMM y","field-week-short-relative+1":"w przyszłym tyg.","dayPeriods-standAlone-wide-afternoon1":"popołudnie","field-fri-short-relative+-1":"w zeszły piątek","field-month-narrow":"mc","dayPeriods-format-narrow-am":"a","field-month-narrow-relative+-1":"w zeszłym mies.","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-weekday-short":"dzień tyg.","field-day-narrow-relative+-1":"wcz.","field-day-narrow-relative+-2":"przedwczoraj","field-quarter-short":"kw.","days-format-short":["nie","pon","wto","śro","czw","pią","sob"],"months-standAlone-narrow":["S","L","M","K","M","C","L","S","W","P","L","G"],"days-format-narrow":["n","p","w","ś","c","p","s"],"dateFormatItem-EHm":"E, HH:mm","field-quarter-narrow":"kw.","field-mon-short-relative+0":"w ten poniedziałek","field-mon-short-relative+1":"w przyszły poniedziałek","field-dayperiod-short":"rano / po południu / wieczorem","dayPeriods-standAlone-narrow-am":"a","field-week-narrow-relative+-1":"w zeszłym tyg.","field-thu-relative+-1":"w zeszły czwartek","field-fri-narrow-relative+-1":"w zeszły piątek","field-mon-short-relative+-1":"w zeszły poniedziałek","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","dateFormatItem-Ed":"E, d","field-wed-relative+-1":"w zeszłą środę","field-weekOfMonth":"tydzień miesiąca","field-weekdayOfMonth-narrow":"dz. mies.","dayPeriods-standAlone-wide-am":"AM","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"w zeszły piątek","field-minute":"minuta","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"field-day-short":"dz.","field-dayperiod":"rano / po południu / wieczorem","field-hour-short":"godz.","months-standAlone-abbr":["sty","lut","mar","kwi","maj","cze","lip","sie","wrz","paź","lis","gru"],"field-second-narrow":"s","field-month-relative+0":"w tym miesiącu","field-month-relative+1":"w przyszłym miesiącu","dateFormat-full":"EEEE, d MMMM y","field-era-narrow":"era","field-sat-short-relative+-1":"w zeszłą sobotę","dayPeriods-format-narrow-noon":"w poł.","field-week-short-relative+-1":"w zeszłym tyg.","dateFormatItem-yMMMMEd":"E, d MMMM y","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"MM.y","field-sun-relative+-1":"w zeszłą niedzielę","field-wed-short-relative+-1":"w zeszłą środę","field-weekdayOfMonth":"dzień miesiąca","field-quarter-narrow-relative+0":"w tym kwartale","dateFormatItem-GyMMMEd":"E, d MMM y G","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-short-relative+0":"w tę sobotę","field-hour-narrow":"g.","field-sat-short-relative+1":"w przyszłą sobotę","field-year-narrow-relative+0":"w tym roku","field-year-narrow-relative+1":"w przyszłym roku","dateFormatItem-Gy":"y G","field-zone-narrow":"str. czas.","dayPeriods-standAlone-narrow-noon":"poł.","field-tue-relative+-1":"w zeszły wtorek","field-minute-short":"min","dateFormatItem-yw":"Y, 'tydz'. w","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu","dateFormatItem-MMM":"LLL","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","field-sat-narrow-relative+-1":"w zeszłą sobotę","quarters-standAlone-abbr":["I kw.","II kw.","III kw.","IV kw."],"dateFormatItem-MMMMW":"LLLL, 'tydz'. W","field-month-short-relative+-1":"w zeszłym mies.","dateFormatItem-EHms":"E, HH:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-week":"tydzień","field-day-narrow":"d."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/hebrew.js b/lib/dojo/cldr/nls/pl/hebrew.js
index 51917993b..f2a8ed7f3 100644
--- a/lib/dojo/cldr/nls/pl/hebrew.js
+++ b/lib/dojo/cldr/nls/pl/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/hebrew",{"days-standAlone-short":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-second-relative+0":"teraz","field-weekday":"dzień tygodnia","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"w zeszły wtorek","days-format-short":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"w zeszły piątek","field-wed-relative+-1":"w zeszłą środę","months-format-wide":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, d.MM.y G","field-thu-relative+-1":"w zeszły czwartek","dateFormatItem-Md":"d.MM","dayPeriods-format-wide-noon":"w południe","field-era":"era","months-standAlone-wide":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"field-year":"rok","field-hour":"godzina","months-format-abbr-leap":"Adar II","months-format-abbr":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-day-relative+0":"dzisiaj","field-thu-relative+0":"w ten czwartek","field-day-relative+1":"jutro","field-thu-relative+1":"w przyszły czwartek","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"pojutrze","months-standAlone-abbr":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","months-standAlone-wide-leap":"Adar II","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"field-minute":"minuta","field-dayperiod":"rano / po południu / wieczorem","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-day-relative+-1":"wczoraj","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"przedwczoraj","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","field-day":"dzień","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-zone":"strefa czasowa","dateFormatItem-y":"y G","field-year-relative+-1":"w zeszłym roku","field-month-relative+-1":"w zeszłym miesiącu","dateFormatItem-hm":"hh:mm a","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"days-format-narrow":["N","P","W","Ś","C","P","S"],"dateFormatItem-yyyyMd":"d.MM.y G","field-month":"miesiąc","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"field-tue-relative+0":"w ten wtorek","field-tue-relative+1":"w przyszły wtorek","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","dateFormat-short":"dd.MM.y G","field-second":"sekunda","field-sat-relative+-1":"w zeszłą sobotę","field-sun-relative+-1":"w zeszłą niedzielę","field-month-relative+0":"w tym miesiącu","field-month-relative+1":"w przyszłym miesiącu","dateFormatItem-Ed":"E, d","field-week":"tydzień","dateFormat-medium":"d MMM y G","field-year-relative+0":"w tym roku","field-week-relative+-1":"w zeszłym tygodniu","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"w przyszłym roku","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-hms":"hh:mm:ss a","months-format-wide-leap":"Adar II","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"w zeszły poniedziałek","dateFormatItem-yyyy":"y G","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/hebrew",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d.MM.y G","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","dateFormatItem-yyyyMEd":"E, d.MM.y G","field-wed-relative+-1":"w zeszłą środę","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"days-format-narrow":["n","p","w","ś","c","p","s"],"field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","dateFormatItem-GyMMM":"LLL y G","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"LLLL y G","quarters-standAlone-abbr":["I kw.","II kw.","III kw.","IV kw."],"dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","field-quarter-relative+-1":"w zeszłym kwartale","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"rano / po poł. / wiecz.","dayPeriods-standAlone-narrow-am":"a","field-week-narrow-relative+-1":"w zeszłym tyg.","days-format-short":["nie","pon","wto","śro","czw","pią","sob"],"field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d.MM","field-hour":"godzina","months-format-wide":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","months-format-abbr":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","dateFormat-short":"dd.MM.y G","field-thu-short-relative+-1":"w zeszły czwartek","field-year-narrow-relative+-1":"w zeszłym roku","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"w zeszły poniedziałek","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p","field-wed-short-relative+0":"w tę środę","months-standAlone-wide":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dateTimeFormat-full":"{1}, {0}","dateFormatItem-hm":"hh:mm a","months-format-abbr-leap":"Adar II","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-relative+1":"w przyszłą sobotę","field-day-short-relative+2":"pojutrze","dateFormatItem-h":"hh a","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","months-standAlone-abbr":["Tiszri","Cheszwan","Kislew","Tewet","Szwat","Adar I","Adar","Nisan","Ijar","Siwan","Tamuz","Aw","Elul"],"months-format-wide-leap":"Adar II","field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","dateFormatItem-MEd":"E, d.MM","field-zone-narrow":"str. czas.","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","field-fri-short-relative+-1":"w zeszły piątek","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","field-dayperiod-short":"rano / po południu / wieczorem","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","days-standAlone-short":["nie","pon","wto","śro","czw","pią","sob"],"field-week-short-relative+-1":"w zeszłym tyg.","months-standAlone-abbr-leap":"Adar II","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"godz.","field-zone-short":"str. czasowa","quarters-format-abbr":["I kw.","II kw.","III kw.","IV kw."],"field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","months-standAlone-wide-leap":"Adar II","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","dateFormatItem-Gy":"y G","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/indian.js b/lib/dojo/cldr/nls/pl/indian.js
index 610070db9..8389a9060 100644
--- a/lib/dojo/cldr/nls/pl/indian.js
+++ b/lib/dojo/cldr/nls/pl/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/indian",{"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-dayperiod":"rano / po południu / wieczorem","field-sun-relative+-1":"w zeszłą niedzielę","field-mon-relative+-1":"w zeszły poniedziałek","field-minute":"minuta","field-day-relative+-1":"wczoraj","field-weekday":"dzień tygodnia","field-day-relative+-2":"przedwczoraj","field-era":"era","field-hour":"godzina","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-wed-relative+-1":"w zeszłą środę","field-day-relative+0":"dzisiaj","field-day-relative+1":"jutro","field-day-relative+2":"pojutrze","field-tue-relative+0":"w ten wtorek","field-zone":"strefa czasowa","field-tue-relative+1":"w przyszły wtorek","field-week-relative+-1":"w zeszłym tygodniu","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-sat-relative+-1":"w zeszłą sobotę","field-year-relative+-1":"w zeszłym roku","field-year":"rok","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-week":"tydzień","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu","months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-month-relative+0":"w tym miesiącu","field-month":"miesiąc","field-month-relative+1":"w przyszłym miesiącu","field-fri-relative+-1":"w zeszły piątek","field-second":"sekunda","field-tue-relative+-1":"w zeszły wtorek","field-day":"dzień","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-second-relative+0":"teraz","field-thu-relative+1":"w przyszły czwartek","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-month-relative+-1":"w zeszłym miesiącu","field-thu-relative+-1":"w zeszły czwartek"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/indian",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","field-wed-relative+-1":"w zeszłą środę","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"w zeszłym kwartale","field-dayperiod-narrow":"rano / po poł. / wiecz.","field-week-narrow-relative+-1":"w zeszłym tyg.","field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","field-hour":"godzina","months-format-wide":["Ćajtra","Wajśakha","Dźjesztha","Aszadha","Śrawana","Bhadrapada","Aświna","Karttika","Margaśirsza-Agrahayana","Pausza","Magha","Phalguna"],"field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","months-format-abbr":["Ćajtra","Wajśakha","Dźjesztha","Aszadha","Śrawana","Bhadrapada","Aświna","Karttika","Margaśirsza-Agrahayana","Pausza","Magha","Phalguna"],"field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","field-thu-short-relative+-1":"w zeszły czwartek","field-year-narrow-relative+-1":"w zeszłym roku","field-mon-narrow-relative+-1":"w zeszły poniedziałek","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","field-wed-short-relative+0":"w tę środę","months-standAlone-wide":["Ćajtra","Wajśakha","Dźjesztha","Aszadha","Śrawana","Bhadrapada","Aświna","Karttika","Margaśirsza-Agrahayana","Pausza","Magha","Phalguna"],"field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-relative+1":"w przyszłą sobotę","field-day-short-relative+2":"pojutrze","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","months-standAlone-abbr":["Ćajtra","Wajśakha","Dźjesztha","Aszadha","Śrawana","Bhadrapada","Aświna","Karttika","Margaśirsza-Agrahayana","Pausza","Magha","Phalguna"],"field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","field-zone-narrow":"str. czas.","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","field-fri-short-relative+-1":"w zeszły piątek","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","field-dayperiod-short":"rano / po południu / wieczorem","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","field-week-short-relative+-1":"w zeszłym tyg.","field-hour-short":"godz.","field-zone-short":"str. czasowa","field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/islamic.js b/lib/dojo/cldr/nls/pl/islamic.js
index 69e1b5714..33857f60b 100644
--- a/lib/dojo/cldr/nls/pl/islamic.js
+++ b/lib/dojo/cldr/nls/pl/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/islamic",{"days-standAlone-short":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"teraz","field-weekday":"dzień tygodnia","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"w zeszły wtorek","days-format-short":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"w zeszły piątek","field-wed-relative+-1":"w zeszłą środę","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Dżumada I","Dżumada II","Radżab","Szaban","Ramadan","Szawwal","Zu al-kada","Zu al-hidżdża"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, d.MM.y G","field-thu-relative+-1":"w zeszły czwartek","dateFormatItem-Md":"d.MM","dayPeriods-format-wide-noon":"w południe","field-era":"era","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Dżumada I","Dżumada II","Radżab","Szaban","Ramadan","Szawwal","Zu al-kada","Zu al-hidżdża"],"quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"field-year":"rok","field-hour":"godzina","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Dżu. I","Dżu. II","Ra.","Sza.","Ram.","Szaw.","Zu al-k.","Zu al-h."],"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-day-relative+0":"dzisiaj","field-thu-relative+0":"w ten czwartek","field-day-relative+1":"jutro","field-thu-relative+1":"w przyszły czwartek","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"pojutrze","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Dżu. I","Dżu. II","Ra.","Sza.","Ram.","Szaw.","Zu al-k.","Zu al-h."],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"field-minute":"minuta","field-dayperiod":"rano / po południu / wieczorem","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-day-relative+-1":"wczoraj","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"przedwczoraj","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","field-day":"dzień","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-zone":"strefa czasowa","dateFormatItem-y":"y G","field-year-relative+-1":"w zeszłym roku","field-month-relative+-1":"w zeszłym miesiącu","dateFormatItem-hm":"hh:mm a","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"days-format-narrow":["N","P","W","Ś","C","P","S"],"dateFormatItem-yyyyMd":"d.MM.y G","field-month":"miesiąc","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"field-tue-relative+0":"w ten wtorek","field-tue-relative+1":"w przyszły wtorek","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","dateFormat-short":"dd.MM.y G","field-second":"sekunda","field-sat-relative+-1":"w zeszłą sobotę","field-sun-relative+-1":"w zeszłą niedzielę","field-month-relative+0":"w tym miesiącu","field-month-relative+1":"w przyszłym miesiącu","dateFormatItem-Ed":"E, d","field-week":"tydzień","dateFormat-medium":"d MMM y G","field-year-relative+0":"w tym roku","field-week-relative+-1":"w zeszłym tygodniu","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"w przyszłym roku","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"w zeszły poniedziałek","dateFormatItem-yyyy":"y G","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/islamic",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d.MM.y G","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","dateFormatItem-yyyyMEd":"E, d.MM.y G","field-wed-relative+-1":"w zeszłą środę","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"days-format-narrow":["n","p","w","ś","c","p","s"],"field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","dateFormatItem-GyMMM":"LLL y G","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"LLLL y G","quarters-standAlone-abbr":["I kw.","II kw.","III kw.","IV kw."],"dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"w zeszłym kwartale","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"rano / po poł. / wiecz.","dayPeriods-standAlone-narrow-am":"a","field-week-narrow-relative+-1":"w zeszłym tyg.","days-format-short":["nie","pon","wto","śro","czw","pią","sob"],"field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d.MM","field-hour":"godzina","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Dżumada I","Dżumada II","Radżab","Szaban","Ramadan","Szawwal","Zu al-kada","Zu al-hidżdża"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Dżu. I","Dżu. II","Ra.","Sza.","Ram.","Szaw.","Zu al-k.","Zu al-h."],"field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","dateFormat-short":"dd.MM.y G","field-thu-short-relative+-1":"w zeszły czwartek","field-year-narrow-relative+-1":"w zeszłym roku","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"w zeszły poniedziałek","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p","field-wed-short-relative+0":"w tę środę","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Dżumada I","Dżumada II","Radżab","Szaban","Ramadan","Szawwal","Zu al-kada","Zu al-hidżdża"],"field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dateTimeFormat-full":"{1}, {0}","dateFormatItem-hm":"hh:mm a","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-relative+1":"w przyszłą sobotę","field-day-short-relative+2":"pojutrze","dateFormatItem-h":"hh a","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Dżu. I","Dżu. II","Ra.","Sza.","Ram.","Szaw.","Zu al-k.","Zu al-h."],"field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","dateFormatItem-MEd":"E, d.MM","field-zone-narrow":"str. czas.","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","field-fri-short-relative+-1":"w zeszły piątek","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","field-dayperiod-short":"rano / po południu / wieczorem","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","days-standAlone-short":["nie","pon","wto","śro","czw","pią","sob"],"field-week-short-relative+-1":"w zeszłym tyg.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"godz.","field-zone-short":"str. czasowa","quarters-format-abbr":["I kw.","II kw.","III kw.","IV kw."],"field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","dateFormatItem-Gy":"y G","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/japanese.js b/lib/dojo/cldr/nls/pl/japanese.js
index b98d86445..0cfde6314 100644
--- a/lib/dojo/cldr/nls/pl/japanese.js
+++ b/lib/dojo/cldr/nls/pl/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/japanese",{"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-dayperiod":"rano / po południu / wieczorem","field-sun-relative+-1":"w zeszłą niedzielę","field-mon-relative+-1":"w zeszły poniedziałek","field-minute":"minuta","field-day-relative+-1":"wczoraj","field-weekday":"dzień tygodnia","field-day-relative+-2":"przedwczoraj","field-era":"era","field-hour":"godzina","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","field-wed-relative+-1":"w zeszłą środę","field-day-relative+0":"dzisiaj","field-day-relative+1":"jutro","field-day-relative+2":"pojutrze","dateFormat-long":"d MMMM y G","field-tue-relative+0":"w ten wtorek","field-zone":"strefa czasowa","field-tue-relative+1":"w przyszły wtorek","field-week-relative+-1":"w zeszłym tygodniu","dateFormat-medium":"d MMM y G","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-sat-relative+-1":"w zeszłą sobotę","field-year-relative+-1":"w zeszłym roku","field-year":"rok","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","field-week":"tydzień","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+0":"w tym miesiącu","field-month":"miesiąc","field-month-relative+1":"w przyszłym miesiącu","field-fri-relative+-1":"w zeszły piątek","field-second":"sekunda","field-tue-relative+-1":"w zeszły wtorek","field-day":"dzień","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-second-relative+0":"teraz","dateFormat-short":"dd.MM.y G","field-thu-relative+1":"w przyszły czwartek","dateFormat-full":"EEEE, d MMMM y G","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-month-relative+-1":"w zeszłym miesiącu","field-thu-relative+-1":"w zeszły czwartek"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/japanese",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","field-wed-relative+-1":"w zeszłą środę","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","dateFormat-long":"d MMMM y G","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","dateFormat-medium":"d MMM y G","field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","field-quarter-relative+-1":"w zeszłym kwartale","field-dayperiod-narrow":"rano / po poł. / wiecz.","field-week-narrow-relative+-1":"w zeszłym tyg.","field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","field-hour":"godzina","dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","dateFormat-short":"dd.MM.y G","field-thu-short-relative+-1":"w zeszły czwartek","field-year-narrow-relative+-1":"w zeszłym roku","field-mon-narrow-relative+-1":"w zeszły poniedziałek","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","field-wed-short-relative+0":"w tę środę","field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-relative+1":"w przyszłą sobotę","field-day-short-relative+2":"pojutrze","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","field-zone-narrow":"str. czas.","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","field-fri-short-relative+-1":"w zeszły piątek","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","field-dayperiod-short":"rano / po południu / wieczorem","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","field-week-short-relative+-1":"w zeszłym tyg.","field-hour-short":"godz.","field-zone-short":"str. czasowa","field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/number.js b/lib/dojo/cldr/nls/pl/number.js
index a683b1556..94ca262fa 100644
--- a/lib/dojo/cldr/nls/pl/number.js
+++ b/lib/dojo/cldr/nls/pl/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 biliona","decimalFormat-short":"000 bln"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 bln","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 biliona","decimalFormat":"#,##0.###","currencyFormat-short":"000 bln ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/persian.js b/lib/dojo/cldr/nls/pl/persian.js
index e93606215..ec86dec1c 100644
--- a/lib/dojo/cldr/nls/pl/persian.js
+++ b/lib/dojo/cldr/nls/pl/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/persian",{"days-standAlone-short":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"teraz","field-weekday":"dzień tygodnia","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"w zeszły wtorek","days-format-short":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"w zeszły piątek","field-wed-relative+-1":"w zeszłą środę","months-format-wide":["Farwardin","Ordibeheszt","Chordād","Tir","Mordād","Szahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Esfand"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, d.MM.y G","field-thu-relative+-1":"w zeszły czwartek","dateFormatItem-Md":"d.MM","dayPeriods-format-wide-noon":"w południe","field-era":"era","months-standAlone-wide":["Farwardin","Ordibeheszt","Chordād","Tir","Mordād","Szahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Esfand"],"quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"field-year":"rok","field-hour":"godzina","months-format-abbr":["Farwardin","Ordibeheszt","Chordād","Tir","Mordād","Szahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Esfand"],"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-day-relative+0":"dzisiaj","field-thu-relative+0":"w ten czwartek","field-day-relative+1":"jutro","field-thu-relative+1":"w przyszły czwartek","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"pojutrze","months-standAlone-abbr":["Farwardin","Ordibeheszt","Chordād","Tir","Mordād","Szahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Esfand"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","quarters-standAlone-abbr":["1 kw.","2 kw.","3 kw.","4 kw."],"field-minute":"minuta","field-dayperiod":"rano / po południu / wieczorem","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-day-relative+-1":"wczoraj","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"przedwczoraj","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","field-day":"dzień","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-zone":"strefa czasowa","dateFormatItem-y":"y G","months-standAlone-narrow":["s","l","m","k","m","c","l","s","w","p","l","g"],"field-year-relative+-1":"w zeszłym roku","field-month-relative+-1":"w zeszłym miesiącu","dateFormatItem-hm":"hh:mm a","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"days-format-narrow":["N","P","W","Ś","C","P","S"],"dateFormatItem-yyyyMd":"d.MM.y G","field-month":"miesiąc","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"field-tue-relative+0":"w ten wtorek","field-tue-relative+1":"w przyszły wtorek","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","dateFormat-short":"dd.MM.y G","field-second":"sekunda","field-sat-relative+-1":"w zeszłą sobotę","field-sun-relative+-1":"w zeszłą niedzielę","field-month-relative+0":"w tym miesiącu","field-month-relative+1":"w przyszłym miesiącu","dateFormatItem-Ed":"E, d","field-week":"tydzień","dateFormat-medium":"d MMM y G","field-year-relative+0":"w tym roku","field-week-relative+-1":"w zeszłym tygodniu","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"w przyszłym roku","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-hms":"hh:mm:ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"w zeszły poniedziałek","dateFormatItem-yyyy":"y G","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/persian",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["S","L","M","K","M","C","L","S","W","P","L","G"],"field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"d.MM.y G","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","dateFormatItem-yyyyMEd":"E, d.MM.y G","field-wed-relative+-1":"w zeszłą środę","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","days-standAlone-narrow":["N","P","W","Ś","C","P","S"],"dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","quarters-standAlone-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"days-format-narrow":["n","p","w","ś","c","p","s"],"field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","dateFormatItem-GyMMM":"LLL y G","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"LLLL y G","quarters-standAlone-abbr":["I kw.","II kw.","III kw.","IV kw."],"dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"w zeszłym kwartale","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"rano / po poł. / wiecz.","dayPeriods-standAlone-narrow-am":"a","field-week-narrow-relative+-1":"w zeszłym tyg.","days-format-short":["nie","pon","wto","śro","czw","pią","sob"],"field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d.MM","field-hour":"godzina","months-format-wide":["Farwardin","Ordibeheszt","Chordād","Tir","Mordād","Szahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Esfand"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","months-format-abbr":["Farwardin","Ordibeheszt","Chordād","Tir","Mordād","Szahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Esfand"],"field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","dateFormat-short":"dd.MM.y G","field-thu-short-relative+-1":"w zeszły czwartek","field-year-narrow-relative+-1":"w zeszłym roku","days-standAlone-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"w zeszły poniedziałek","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p","field-wed-short-relative+0":"w tę środę","months-standAlone-wide":["Farwardin","Ordibeheszt","Chordād","Tir","Mordād","Szahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Esfand"],"field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","days-standAlone-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"dateTimeFormat-full":"{1}, {0}","dateFormatItem-hm":"hh:mm a","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-relative+1":"w przyszłą sobotę","field-day-short-relative+2":"pojutrze","dateFormatItem-h":"hh a","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","months-standAlone-abbr":["Farwardin","Ordibeheszt","Chordād","Tir","Mordād","Szahriwar","Mehr","Ābān","Āsar","Déi","Bahman","Esfand"],"field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","dateFormatItem-MEd":"E, d.MM","field-zone-narrow":"str. czas.","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","field-fri-short-relative+-1":"w zeszły piątek","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","quarters-format-wide":["I kwartał","II kwartał","III kwartał","IV kwartał"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","field-dayperiod-short":"rano / po południu / wieczorem","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","days-standAlone-short":["nie","pon","wto","śro","czw","pią","sob"],"field-week-short-relative+-1":"w zeszłym tyg.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"godz.","field-zone-short":"str. czasowa","quarters-format-abbr":["I kw.","II kw.","III kw.","IV kw."],"field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","days-format-wide":["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],"field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","days-format-abbr":["niedz.","pon.","wt.","śr.","czw.","pt.","sob."],"field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","dateFormatItem-Gy":"y G","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pl/roc.js b/lib/dojo/cldr/nls/pl/roc.js
index cebb286e3..abc9396e7 100644
--- a/lib/dojo/cldr/nls/pl/roc.js
+++ b/lib/dojo/cldr/nls/pl/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pl/roc",{"field-sat-relative+0":"w tę sobotę","field-sat-relative+1":"w przyszłą sobotę","field-dayperiod":"rano / po południu / wieczorem","field-sun-relative+-1":"w zeszłą niedzielę","field-mon-relative+-1":"w zeszły poniedziałek","field-minute":"minuta","field-day-relative+-1":"wczoraj","field-weekday":"dzień tygodnia","field-day-relative+-2":"przedwczoraj","field-era":"era","field-hour":"godzina","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","field-wed-relative+-1":"w zeszłą środę","field-day-relative+0":"dzisiaj","field-day-relative+1":"jutro","eraAbbr":["Przed ROC","ROC"],"field-day-relative+2":"pojutrze","field-tue-relative+0":"w ten wtorek","field-zone":"strefa czasowa","field-tue-relative+1":"w przyszły wtorek","field-week-relative+-1":"w zeszłym tygodniu","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-sat-relative+-1":"w zeszłą sobotę","field-year-relative+-1":"w zeszłym roku","field-year":"rok","field-fri-relative+0":"w ten piątek","field-fri-relative+1":"w przyszły piątek","field-week":"tydzień","field-week-relative+0":"w tym tygodniu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+0":"w tym miesiącu","field-month":"miesiąc","field-month-relative+1":"w przyszłym miesiącu","field-fri-relative+-1":"w zeszły piątek","field-second":"sekunda","field-tue-relative+-1":"w zeszły wtorek","field-day":"dzień","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-second-relative+0":"teraz","field-thu-relative+1":"w przyszły czwartek","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-month-relative+-1":"w zeszłym miesiącu","field-thu-relative+-1":"w zeszły czwartek"}); \ No newline at end of file
+define("dojo/cldr/nls/pl/roc",{"field-quarter-short-relative+0":"w tym kwartale","field-quarter-short-relative+1":"w przyszłym kwartale","field-tue-relative+-1":"w zeszły wtorek","field-year":"rok","field-wed-relative+0":"w tę środę","field-wed-relative+1":"w przyszłą środę","field-minute":"minuta","field-month-narrow-relative+-1":"w zeszłym mies.","field-tue-narrow-relative+0":"w ten wtorek","field-tue-narrow-relative+1":"w przyszły wtorek","field-thu-short-relative+0":"w ten czwartek","field-thu-short-relative+1":"w przyszły czwartek","field-day-relative+0":"dzisiaj","field-day-short-relative+-2":"przedwczoraj","field-day-relative+1":"jutro","field-week-narrow-relative+0":"w tym tyg.","field-day-relative+2":"pojutrze","field-week-narrow-relative+1":"w przyszłym tyg.","field-wed-narrow-relative+-1":"w zeszłą środę","field-year-narrow":"r.","field-era-short":"era","field-year-narrow-relative+0":"w tym roku","field-tue-relative+0":"w ten wtorek","field-year-narrow-relative+1":"w przyszłym roku","field-tue-relative+1":"w przyszły wtorek","field-weekdayOfMonth":"dzień miesiąca","field-second-short":"sek.","field-weekdayOfMonth-narrow":"dz. mies.","field-week-relative+0":"w tym tygodniu","field-month-relative+0":"w tym miesiącu","field-week-relative+1":"w przyszłym tygodniu","field-month-relative+1":"w przyszłym miesiącu","field-sun-narrow-relative+0":"w tę niedzielę","field-mon-short-relative+0":"w ten poniedziałek","field-sun-narrow-relative+1":"w przyszłą niedzielę","field-mon-short-relative+1":"w przyszły poniedziałek","field-second-relative+0":"teraz","eraNames":["przed ROC","ROC"],"field-weekOfMonth":"tydzień miesiąca","field-month-short":"mies.","field-day":"dzień","field-dayOfYear-short":"dz. roku","field-year-relative+-1":"w zeszłym roku","field-sat-short-relative+-1":"w zeszłą sobotę","field-hour-relative+0":"ta godzina","field-wed-relative+-1":"w zeszłą środę","field-sat-narrow-relative+-1":"w zeszłą sobotę","field-second":"sekunda","field-quarter":"kwartał","field-week-short":"tydz.","field-day-narrow-relative+0":"dziś","field-day-narrow-relative+1":"jutro","field-day-narrow-relative+2":"pojutrze","field-tue-short-relative+0":"w ten wtorek","field-tue-short-relative+1":"w przyszły wtorek","field-month-short-relative+-1":"w zeszłym mies.","field-mon-relative+-1":"w zeszły poniedziałek","field-month":"miesiąc","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"rano / po południu / wieczorem","field-sat-short-relative+0":"w tę sobotę","field-sat-short-relative+1":"w przyszłą sobotę","eraAbbr":["Przed ROC","ROC"],"field-second-narrow":"s","field-mon-relative+0":"w ten poniedziałek","field-mon-relative+1":"w przyszły poniedziałek","field-day-narrow-relative+-1":"wcz.","field-year-short":"r.","field-day-narrow-relative+-2":"przedwczoraj","field-quarter-relative+-1":"w zeszłym kwartale","field-dayperiod-narrow":"rano / po poł. / wiecz.","field-week-narrow-relative+-1":"w zeszłym tyg.","field-dayOfYear":"dzień roku","field-sat-relative+-1":"w zeszłą sobotę","field-hour":"godzina","field-month-relative+-1":"w zeszłym miesiącu","field-quarter-short":"kw.","field-sat-narrow-relative+0":"w tę sobotę","field-fri-relative+0":"w ten piątek","field-sat-narrow-relative+1":"w przyszłą sobotę","field-fri-relative+1":"w przyszły piątek","field-month-narrow-relative+0":"w tym mies.","field-month-narrow-relative+1":"w przyszłym mies.","field-sun-short-relative+0":"w tę niedzielę","field-sun-short-relative+1":"w przyszłą niedzielę","field-week-relative+-1":"w zeszłym tygodniu","field-quarter-short-relative+-1":"w zeszłym kwartale","field-quarter-relative+0":"w tym kwartale","field-minute-relative+0":"ta minuta","field-quarter-relative+1":"w przyszłym kwartale","field-wed-short-relative+-1":"w zeszłą środę","field-thu-short-relative+-1":"w zeszły czwartek","field-year-narrow-relative+-1":"w zeszłym roku","field-mon-narrow-relative+-1":"w zeszły poniedziałek","field-thu-narrow-relative+-1":"w zeszły czwartek","field-tue-narrow-relative+-1":"w zeszły wtorek","field-weekOfMonth-short":"tydz. mies.","field-wed-short-relative+0":"w tę środę","field-wed-short-relative+1":"w przyszłą środę","field-sun-relative+-1":"w zeszłą niedzielę","field-weekday":"dzień tygodnia","field-quarter-narrow-relative+0":"w tym kwartale","field-sat-relative+0":"w tę sobotę","field-quarter-narrow-relative+1":"w przyszłym kwartale","field-sat-relative+1":"w przyszłą sobotę","field-day-short-relative+2":"pojutrze","field-week-short-relative+0":"w tym tyg.","field-week-short-relative+1":"w przyszłym tyg.","field-dayOfYear-narrow":"dz. r.","field-month-short-relative+0":"w tym mies.","field-month-short-relative+1":"w przyszłym mies.","field-weekdayOfMonth-short":"dzień mies.","field-zone-narrow":"str. czas.","field-thu-narrow-relative+0":"w ten czwartek","field-thu-narrow-relative+1":"w przyszły czwartek","field-sun-narrow-relative+-1":"w zeszłą niedzielę","field-mon-short-relative+-1":"w zeszły poniedziałek","field-thu-relative+0":"w ten czwartek","field-thu-relative+1":"w przyszły czwartek","field-fri-short-relative+-1":"w zeszły piątek","field-thu-relative+-1":"w zeszły czwartek","field-week":"tydzień","field-wed-narrow-relative+0":"w tę środę","field-wed-narrow-relative+1":"w przyszłą środę","field-quarter-narrow-relative+-1":"w zeszłym kwartale","field-year-short-relative+0":"w tym roku","field-dayperiod-short":"rano / po południu / wieczorem","field-year-short-relative+1":"w przyszłym roku","field-fri-short-relative+0":"w ten piątek","field-fri-short-relative+1":"w przyszły piątek","field-week-short-relative+-1":"w zeszłym tyg.","field-hour-short":"godz.","field-zone-short":"str. czasowa","field-month-narrow":"mc","field-hour-narrow":"g.","field-fri-narrow-relative+-1":"w zeszły piątek","field-year-relative+0":"w tym roku","field-year-relative+1":"w przyszłym roku","field-era-narrow":"era","field-fri-relative+-1":"w zeszły piątek","eraNarrow":["przed ROC","ROC"],"field-tue-short-relative+-1":"w zeszły wtorek","field-minute-narrow":"min","field-mon-narrow-relative+0":"w ten poniedziałek","field-mon-narrow-relative+1":"w przyszły poniedziałek","field-year-short-relative+-1":"w zeszłym roku","field-zone":"strefa czasowa","field-weekOfMonth-narrow":"tydz. mies.","field-weekday-narrow":"dz. tyg.","field-quarter-narrow":"kw.","field-sun-short-relative+-1":"w zeszłą niedzielę","field-day-relative+-1":"wczoraj","field-day-relative+-2":"przedwczoraj","field-weekday-short":"dzień tyg.","field-sun-relative+0":"w tę niedzielę","field-sun-relative+1":"w przyszłą niedzielę","field-day-short":"dz.","field-week-narrow":"tydz.","field-era":"era","field-fri-narrow-relative+0":"w ten piątek","field-fri-narrow-relative+1":"w przyszły piątek"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/buddhist.js b/lib/dojo/cldr/nls/pt-pt/buddhist.js
index cd89dc679..05c72b056 100644
--- a/lib/dojo/cldr/nls/pt-pt/buddhist.js
+++ b/lib/dojo/cldr/nls/pt-pt/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt-pt/buddhist",{"days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-weekday":"Dia da semana","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-tue-relative+-1":"terça-feira passada","days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateFormatItem-yyyyQQQ":"QQQQ 'de' y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"da tarde","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"a.m.","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"field-year":"Ano","field-hour":"Hora","months-format-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","months-standAlone-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d/MM/y G","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MM/y G","dateFormatItem-yyyyMMMd":"d/MM/y G","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"field-minute":"Minuto","field-dayperiod":"Da manhã/da tarde","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"field-day-relative+-1":"ontem","dateTimeFormat-long":"{1} 'às' {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","dateTimeFormat-full":"{1} 'às' {0}","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso horário","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","dayPeriods-format-wide-am":"da manhã","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"d/M/y G","field-second":"Segundo","field-sat-relative+-1":"sábado passado","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","field-week":"Semana","dateFormat-medium":"d 'de' MMM, y G","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","dateFormatItem-yyyyM":"MM/y GGGGG","field-year-relative+1":"próximo ano","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/pt-pt/buddhist",{"days-standAlone-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"trimestre passado","field-day-narrow-relative+0":"hoje","field-day-narrow-relative+1":"amanhã","field-day-short-relative+0":"hoje","field-day-short-relative+1":"amanhã","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-dayperiod-short":"am/pm","eraNarrow":"BE","days-format-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"dateFormat-long":"d 'de' MMMM 'de' y G","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateFormatItem-yyyyQQQ":"QQQQ 'de' y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"da tarde","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-mon-short-relative+-1":"segunda passada","field-day-short-relative+-1":"ontem","dateFormatItem-Md":"d/M","dayPeriods-standAlone-wide-pm":"tarde","dayPeriods-format-abbr-am":"a.m.","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dayPeriods-standAlone-abbr-am":"a.m.","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-yyyyMMMM":"MMMM 'de' y G","field-day-narrow-relative+-1":"ontem","months-format-abbr":["jan.","fev.","mar.","abr.","mai.","jun.","jul.","ago.","set.","out.","nov.","dez."],"field-sat-short-relative+-1":"sábado passado","dayPeriods-standAlone-narrow-am":"a.m.","field-minute-narrow":"min","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","quarters-format-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"field-mon-short-relative+0":"esta segunda","dateFormatItem-Gy":"y G","field-mon-short-relative+1":"próxima segunda","dateFormatItem-yyyyMMMEd":"E, d/MM/y G","field-wed-short-relative+-1":"quarta passada","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MM/y G","dateFormatItem-yyyyMMMd":"d/MM/y G","dateFormatItem-MMMMd":"d 'de' MMMM","field-tue-short-relative+0":"esta terça","field-tue-short-relative+1":"próxima terça","field-minute-short":"min","field-wed-short-relative+0":"esta quarta","field-wed-short-relative+1":"próxima quarta","quarters-standAlone-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"field-dayperiod":"am/pm","days-standAlone-abbr":["domingo","segunda","terça","quarta","quinta","sexta","sábado"],"dateTimeFormat-long":"{1} 'às' {0}","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d 'de' MMM","field-quarter-relative+0":"este trimestre","field-dayperiod-narrow":"am/pm","field-quarter-relative+1":"próximo trimestre","dateFormatItem-MEd":"E, dd/MM","field-zone-short":"fuso horário","dateTimeFormat-full":"{1} 'às' {0}","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-second-narrow":"s","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-thu-short-relative+0":"esta quinta","field-thu-short-relative+1":"próxima quinta","dayPeriods-format-abbr-pm":"p.m.","field-quarter-narrow-relative+0":"este trim.","field-quarter-narrow-relative+1":"próximo trim.","days-format-abbr":["domingo","segunda","terça","quarta","quinta","sexta","sábado"],"dayPeriods-standAlone-abbr-pm":"p.m.","eraNames":["BE"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-zone-narrow":"fuso horário","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dayPeriods-standAlone-narrow-pm":"p.m.","field-quarter-short-relative+0":"este trim.","field-quarter-short-relative+1":"próximo trim.","dayPeriods-format-wide-am":"da manhã","dayPeriods-standAlone-wide-am":"manhã","field-fri-short-relative+-1":"sexta passada","field-quarter-short-relative+-1":"trim. passado","dateFormat-short":"d/M/y G","field-second-short":"s","field-fri-short-relative+0":"esta sexta","field-fri-short-relative+1":"próxima sexta","field-quarter-narrow-relative+-1":"trim. passado","dateFormatItem-Ed":"E, d","field-sat-short-relative+0":"este sábado","field-sat-short-relative+1":"próximo sábado","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyM":"MM/y GGGGG","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateTimeFormat-short":"{1}, {0}","field-sun-short-relative+-1":"domingo passado","field-thu-short-relative+-1":"quinta passada","field-tue-short-relative+-1":"terça passada","dateFormatItem-GyMMM":"MMM 'de' y G","dateFormatItem-yyyy":"y G","field-sun-short-relative+0":"este domingo","field-sun-short-relative+1":"próximo domingo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/chinese.js b/lib/dojo/cldr/nls/pt-pt/chinese.js
index e312353e8..6d007e6c6 100644
--- a/lib/dojo/cldr/nls/pt-pt/chinese.js
+++ b/lib/dojo/cldr/nls/pt-pt/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt-pt/chinese",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-dayperiod":"Da manhã/da tarde","field-sun-relative+-1":"domingo passado","field-mon-relative+-1":"segunda-feira passada","field-minute":"Minuto","field-day-relative+-1":"ontem","field-weekday":"Dia da semana","field-day-relative+-2":"anteontem","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","months-standAlone-abbr":["M1","M2","M3","M4","M5","M6","M7","M8","M9","M10","M11","M12"],"field-wed-relative+-1":"quarta-feira passada","field-day-relative+0":"hoje","field-day-relative+1":"amanhã","field-day-relative+2":"depois de amanhã","dateFormat-long":"d 'de' MMMM 'de' U","field-tue-relative+0":"esta terça-feira","field-zone":"Fuso horário","field-tue-relative+1":"próxima terça-feira","field-week-relative+-1":"semana passada","dateFormat-medium":"d 'de' MMM 'de' U","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-sat-relative+-1":"sábado passado","field-year-relative+-1":"ano passado","field-year":"Ano","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","months-standAlone-wide":["Mês 1","Mês 2","Mês 3","Mês 4","Mês 5","Mês 6","Mês 7","Mês 8","Mês 9","Mês 10","Mês 11","Mês 12"],"field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana","months-format-abbr":["M1","M2","M3","M4","M5","M6","M7","M8","M9","M10","M11","M12"],"field-month-relative+0":"este mês","field-month":"Mês","field-month-relative+1":"próximo mês","field-fri-relative+-1":"sexta-feira passada","field-second":"Segundo","field-tue-relative+-1":"terça-feira passada","field-day":"Dia","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-thu-relative+0":"esta quinta-feira","dateFormat-short":"dd/MM/yy","field-thu-relative+1":"próxima quinta-feira","dateFormat-full":"EEEE, d 'de' MMMM 'de' U","months-format-wide":["Mês 1","Mês 2","Mês 3","Mês 4","Mês 5","Mês 6","Mês 7","Mês 8","Mês 9","Mês 10","Mês 11","Mês 12"],"field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-month-relative+-1":"mês passado","field-thu-relative+-1":"quinta-feira passada"}); \ No newline at end of file
+define("dojo/cldr/nls/pt-pt/chinese",{"field-dayperiod":"am/pm","field-second-short":"s","field-quarter-narrow-relative+-1":"trim. passado","field-sat-short-relative+-1":"sábado passado","field-dayperiod-short":"am/pm","field-minute-short":"min","field-zone-short":"fuso horário","field-mon-short-relative+0":"esta segunda","field-mon-short-relative+1":"próxima segunda","field-zone-narrow":"fuso horário","months-standAlone-abbr":["M1","M2","M3","M4","M5","M6","M7","M8","M9","M10","M11","M12"],"field-second-narrow":"s","dateFormat-long":"d 'de' MMMM 'de' U","field-sat-short-relative+0":"este sábado","field-sat-short-relative+1":"próximo sábado","field-quarter-relative+-1":"trimestre passado","dateFormat-medium":"d 'de' MMM 'de' U","field-sun-short-relative+0":"este domingo","field-sun-short-relative+1":"próximo domingo","field-day-short-relative+0":"hoje","field-day-narrow-relative+0":"hoje","field-day-short-relative+1":"amanhã","field-tue-short-relative+0":"esta terça","field-dayperiod-narrow":"am/pm","field-day-narrow-relative+1":"amanhã","field-wed-short-relative+0":"esta quarta","field-mon-short-relative+-1":"segunda passada","field-tue-short-relative+1":"próxima terça","field-wed-short-relative+1":"próxima quarta","field-tue-short-relative+-1":"terça passada","field-day-short-relative+-1":"ontem","field-fri-short-relative+-1":"sexta passada","months-format-abbr":["M1","M2","M3","M4","M5","M6","M7","M8","M9","M10","M11","M12"],"field-quarter-narrow-relative+0":"este trim.","field-quarter-narrow-relative+1":"próximo trim.","field-wed-short-relative+-1":"quarta passada","field-minute-narrow":"min","field-quarter-short-relative+-1":"trim. passado","field-thu-short-relative+-1":"quinta passada","dateFormat-short":"dd/MM/yy","field-quarter-short-relative+0":"este trim.","field-sun-short-relative+-1":"domingo passado","field-quarter-short-relative+1":"próximo trim.","dateFormat-full":"EEEE, d 'de' MMMM 'de' U","field-fri-short-relative+0":"esta sexta","field-quarter-relative+0":"este trimestre","field-fri-short-relative+1":"próxima sexta","field-quarter-relative+1":"próximo trimestre","field-thu-short-relative+0":"esta quinta","field-thu-short-relative+1":"próxima quinta","field-day-narrow-relative+-1":"ontem"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/currency.js b/lib/dojo/cldr/nls/pt-pt/currency.js
index 63898464d..3781a6be5 100644
--- a/lib/dojo/cldr/nls/pt-pt/currency.js
+++ b/lib/dojo/cldr/nls/pt-pt/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt-pt/currency",{"HKD_displayName":"Dólar de Hong Kong","CHF_displayName":"Franco suíço","JPY_symbol":"JP¥","CAD_displayName":"Dólar canadiano","HKD_symbol":"HK$","CNY_displayName":"Yuan chinês","USD_symbol":"US$","AUD_displayName":"Dólar australiano","JPY_displayName":"Iene japonês","CAD_symbol":"CA$","USD_displayName":"Dólar dos Estados Unidos","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"Libra esterlina britânica","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file
+define("dojo/cldr/nls/pt-pt/currency",{"HKD_displayName":"dólar de Hong Kong","CHF_displayName":"franco suíço","CAD_displayName":"dólar canadiano","CNY_displayName":"yuan","AUD_displayName":"dólar australiano","JPY_displayName":"iene japonês","USD_displayName":"dólar dos Estados Unidos","GBP_displayName":"libra esterlina britânica","EUR_displayName":"euro"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/generic.js b/lib/dojo/cldr/nls/pt-pt/generic.js
index 46d193e9f..e27d06353 100644
--- a/lib/dojo/cldr/nls/pt-pt/generic.js
+++ b/lib/dojo/cldr/nls/pt-pt/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt-pt/generic",{"dateFormatItem-yyyyMMMMEd":"E, d 'de' MMMM 'de' y G","field-weekday":"Dia da semana","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-tue-relative+-1":"terça-feira passada","dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","dateFormatItem-yyyyQQQ":"QQQQ 'de' y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","field-era":"Era","field-year":"Ano","dateFormatItem-yyyyMMMM":"MMMM 'de' y G","field-hour":"Hora","field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d/MM/y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MM/y G","dateFormatItem-yyyyMMMd":"d/MM/y G","dateFormatItem-MMMMd":"d 'de' MMMM","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","field-minute":"Minuto","field-dayperiod":"Da manhã/da tarde","dateFormatItem-d":"d","field-day-relative+-1":"ontem","dateTimeFormat-long":"{1} 'às' {0}","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","dateTimeFormat-full":"{1} 'às' {0}","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","field-zone":"Fuso horário","dateFormatItem-y":"y G","field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","dateFormatItem-yyyyMMMMd":"d 'de' MMMM 'de' y G","dateFormatItem-yyyyMMMEEEEd":"EEEE, d/MM/y","dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-month":"Mês","dateFormatItem-MMM":"LLL","field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","dateFormatItem-MMMMEd":"E, d 'de' MMMM","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"d/M/y G","field-second":"Segundo","field-sat-relative+-1":"sábado passado","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","field-week":"Semana","dateFormat-medium":"d 'de' MMM, y G","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","dateFormatItem-yyyyM":"MM/y GGGGG","field-year-relative+1":"próximo ano","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/pt-pt/generic",{"dateFormatItem-yyyyMMMEd":"E, d/MM/y G","field-dayperiod":"am/pm","field-second-short":"s","dateTimeFormat-full":"{1} 'às' {0}","dateTimeFormat-short":"{1}, {0}","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"trim. passado","field-sat-short-relative+-1":"sábado passado","field-dayperiod-short":"am/pm","field-minute-short":"min","field-zone-short":"fuso horário","field-mon-short-relative+0":"esta segunda","dateFormatItem-yyyyMMMEEEEd":"EEEE, d/MM/y","field-mon-short-relative+1":"próxima segunda","field-zone-narrow":"fuso horário","field-second-narrow":"s","dateFormat-long":"d 'de' MMMM 'de' y G","field-sat-short-relative+0":"este sábado","field-sat-short-relative+1":"próximo sábado","field-quarter-relative+-1":"trimestre passado","dateFormat-medium":"d MMM y G","field-sun-short-relative+0":"este domingo","field-sun-short-relative+1":"próximo domingo","field-day-short-relative+0":"hoje","field-day-narrow-relative+0":"hoje","field-day-short-relative+1":"amanhã","field-tue-short-relative+0":"esta terça","field-dayperiod-narrow":"am/pm","field-day-narrow-relative+1":"amanhã","field-mon-short-relative+-1":"segunda passada","field-tue-short-relative+1":"próxima terça","field-wed-short-relative+0":"esta quarta","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","field-tue-short-relative+-1":"terça passada","field-wed-short-relative+1":"próxima quarta","dateTimeFormat-long":"{1} 'às' {0}","field-day-short-relative+-1":"ontem","dateFormatItem-yyyyMMMd":"d/MM/y G","field-fri-short-relative+-1":"sexta passada","field-quarter-narrow-relative+0":"este trim.","field-quarter-narrow-relative+1":"próximo trim.","field-wed-short-relative+-1":"quarta passada","field-minute-narrow":"min","field-quarter-short-relative+-1":"trim. passado","dateFormatItem-yyyyQQQ":"QQQQ 'de' y G","field-thu-short-relative+-1":"quinta passada","dateFormat-short":"d/M/y G","field-quarter-short-relative+0":"este trim.","field-sun-short-relative+-1":"domingo passado","field-quarter-short-relative+1":"próximo trim.","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-fri-short-relative+0":"esta sexta","field-quarter-relative+0":"este trimestre","field-fri-short-relative+1":"próxima sexta","field-quarter-relative+1":"próximo trimestre","dateFormatItem-yyyyMMM":"MM/y G","field-thu-short-relative+0":"esta quinta","field-thu-short-relative+1":"próxima quinta","field-day-narrow-relative+-1":"ontem"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/gregorian.js b/lib/dojo/cldr/nls/pt-pt/gregorian.js
index 57754dfc8..22d4bf6ed 100644
--- a/lib/dojo/cldr/nls/pt-pt/gregorian.js
+++ b/lib/dojo/cldr/nls/pt-pt/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt-pt/gregorian",{"dateFormatItem-Ehm":"E, h:mm a","days-standAlone-short":["do","sg","te","qu","qi","sx","sb"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Dia da semana","dateFormatItem-yQQQ":"QQQQ 'de' y","dateFormatItem-yMEd":"E, dd/MM/y","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d/MM","eraNarrow":["a.C.","d.C."],"dateFormatItem-yMM":"MM/y","field-tue-relative+-1":"terça-feira passada","days-format-short":["do","sg","te","qu","qi","sx","sb"],"dateFormat-long":"d 'de' MMMM 'de' y","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","months-format-wide":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"dateTimeFormat-medium":"{1}, {0}","dateFormatItem-yMMMMd":"d 'de' MMMM 'de' y","dayPeriods-format-wide-pm":"da tarde","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","dayPeriods-standAlone-wide-pm":"p.m.","dayPeriods-format-abbr-am":"a.m.","dateFormatItem-yMd":"dd/MM/y","field-era":"Era","dateFormatItem-yM":"MM/y","months-standAlone-wide":["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],"timeFormat-short":"HH:mm","dayPeriods-standAlone-abbr-am":"a.m.","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-yQQQQ":"QQQQ 'de' y","timeFormat-long":"HH:mm:ss z","field-year":"Ano","dateFormatItem-yMMM":"MM/y","field-hour":"Hora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","dateFormatItem-H":"HH","months-standAlone-abbr":["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],"quarters-format-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"L","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-MMMMd":"d 'de' MMMM","dateFormatItem-yMMMEEEEd":"EEEE, d/MM/y","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"este domingo","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"próximo domingo","quarters-standAlone-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"eraAbbr":["a.C.","d.C."],"field-minute":"Minuto","field-dayperiod":"Da manhã/da tarde","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"ontem","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} 'às' {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d/MM","dateFormatItem-MEd":"E, dd/MM","dateTimeFormat-full":"{1} 'às' {0}","field-fri-relative+0":"esta sexta-feira","dateFormatItem-yMMMM":"MMMM 'de' y","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso horário","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"dateFormatItem-y":"y","field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","dateFormatItem-hm":"h:mm a","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dayPeriods-standAlone-abbr-pm":"p.m.","dateFormatItem-yMMMd":"d/MM/y","eraNames":["antes de Cristo","depois de Cristo"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-MMM":"LLL","field-month":"Mês","dateFormatItem-HHmm":"HH:mm","field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","dayPeriods-format-wide-am":"da manhã","dayPeriods-standAlone-wide-am":"a.m.","dateFormatItem-MMMMEd":"E, d 'de' MMMM","dateFormatItem-EHm":"E, HH:mm","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"dd/MM/yy","dateFormatItem-EHms":"E, HH:mm:ss","dateFormatItem-yMMMMEd":"E, d 'de' MMMM 'de' y","dateFormatItem-Ehms":"E, h:mm:ss a","field-second":"Segundo","field-sat-relative+-1":"sábado passado","dateFormatItem-yMMMEd":"E, d/MM/y","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Semana","dateFormat-medium":"dd/MM/y","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","field-year-relative+1":"próximo ano","dayPeriods-format-narrow-pm":"p.m.","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/pt-pt/gregorian",{"days-standAlone-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"field-quarter-relative+-1":"trimestre passado","dateFormatItem-yQQQ":"QQQQ 'de' y","field-day-narrow-relative+0":"hoje","field-day-narrow-relative+1":"amanhã","field-day-short-relative+0":"hoje","field-day-short-relative+1":"amanhã","dateFormatItem-MMMEd":"E, d/MM","field-dayperiod-short":"am/pm","eraNarrow":["a.C.","d.C."],"dayPeriods-format-narrow-evening1":"noite","days-format-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"dayPeriods-format-narrow-morning1":"manhã","dateFormat-long":"d 'de' MMMM 'de' y","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"da tarde","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","field-mon-short-relative+-1":"segunda passada","field-day-short-relative+-1":"ontem","dateFormatItem-Md":"dd/MM","dayPeriods-standAlone-wide-pm":"tarde","dayPeriods-format-abbr-am":"a.m.","timeFormat-short":"HH:mm","dayPeriods-standAlone-abbr-am":"a.m.","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"MM/y","field-day-narrow-relative+-1":"ontem","field-sat-short-relative+-1":"sábado passado","dayPeriods-standAlone-narrow-am":"a.m.","timeFormat-full":"HH:mm:ss zzzz","field-minute-narrow":"min","dateFormatItem-MMMMW":"W.'ª' 'semana' 'de' MMMM","quarters-format-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"field-mon-short-relative+0":"esta segunda","field-mon-short-relative+1":"próxima segunda","field-wed-short-relative+-1":"quarta passada","dateFormatItem-yMMMEEEEd":"EEEE, d/MM/y","field-tue-short-relative+0":"esta terça","field-tue-short-relative+1":"próxima terça","field-minute-short":"min","timeFormat-medium":"HH:mm:ss","field-wed-short-relative+0":"esta quarta","field-wed-short-relative+1":"próxima quarta","quarters-standAlone-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-yw":"w.'ª' 'semana' 'de' Y","eraAbbr":["a.C.","d.C."],"field-dayperiod":"am/pm","days-standAlone-abbr":["domingo","segunda","terça","quarta","quinta","sexta","sábado"],"dateTimeFormat-long":"{1} 'às' {0}","dayPeriods-format-narrow-am":"a.m.","dayPeriods-format-narrow-midnight":"meia-noite","dayPeriods-format-narrow-afternoon1":"tarde","dateFormatItem-MMMd":"d/MM","field-quarter-relative+0":"este trimestre","field-dayperiod-narrow":"am/pm","field-quarter-relative+1":"próximo trimestre","field-zone-short":"fuso horário","dateTimeFormat-full":"{1} 'às' {0}","field-second-narrow":"s","field-thu-short-relative+0":"esta quinta","field-thu-short-relative+1":"próxima quinta","dayPeriods-format-abbr-pm":"p.m.","field-quarter-narrow-relative+0":"este trim.","field-quarter-narrow-relative+1":"próximo trim.","days-format-abbr":["domingo","segunda","terça","quarta","quinta","sexta","sábado"],"dayPeriods-standAlone-abbr-pm":"p.m.","dateFormatItem-yMMMd":"d/MM/y","eraNames":["a.C.","d.C."],"days-format-narrow":["D","S","T","Q","Q","S","S"],"field-zone-narrow":"fuso horário","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dayPeriods-standAlone-narrow-pm":"p.m.","field-quarter-short-relative+0":"este trim.","field-quarter-short-relative+1":"próximo trim.","dayPeriods-format-wide-am":"da manhã","dayPeriods-standAlone-wide-am":"manhã","field-fri-short-relative+-1":"sexta passada","dateFormatItem-MMMMEd":"ccc, d 'de' MMMM","field-quarter-short-relative+-1":"trim. passado","dayPeriods-format-narrow-night1":"madrugada","dateFormat-short":"dd/MM/yy","dateFormatItem-yMMMMEd":"ccc, d 'de' MMMM 'de' y","field-second-short":"s","dayPeriods-format-narrow-noon":"meio-dia","field-fri-short-relative+0":"esta sexta","dateFormatItem-yMMMEd":"E, d/MM/y","field-fri-short-relative+1":"próxima sexta","field-quarter-narrow-relative+-1":"trim. passado","field-sat-short-relative+0":"este sábado","dateFormat-medium":"dd/MM/y","field-sat-short-relative+1":"próximo sábado","dayPeriods-format-narrow-pm":"p.m.","dateTimeFormat-short":"{1}, {0}","field-sun-short-relative+-1":"domingo passado","field-thu-short-relative+-1":"quinta passada","field-tue-short-relative+-1":"terça passada","field-sun-short-relative+0":"este domingo","field-sun-short-relative+1":"próximo domingo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/hebrew.js b/lib/dojo/cldr/nls/pt-pt/hebrew.js
index dd01b177d..88a84d494 100644
--- a/lib/dojo/cldr/nls/pt-pt/hebrew.js
+++ b/lib/dojo/cldr/nls/pt-pt/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt-pt/hebrew",{"days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"field-weekday":"Dia da semana","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-tue-relative+-1":"terça-feira passada","days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","dateFormatItem-yyyyQQQ":"QQQQ 'de' y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"da tarde","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"a.m.","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"field-year":"Ano","field-hour":"Hora","field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d/MM/y G","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MM/y G","dateFormatItem-yyyyMMMd":"d/MM/y G","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"field-minute":"Minuto","field-dayperiod":"Da manhã/da tarde","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"field-day-relative+-1":"ontem","dateTimeFormat-long":"{1} 'às' {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","dateTimeFormat-full":"{1} 'às' {0}","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso horário","dateFormatItem-y":"y G","field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","dayPeriods-format-wide-am":"da manhã","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"d/M/y G","field-second":"Segundo","field-sat-relative+-1":"sábado passado","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","field-week":"Semana","dateFormat-medium":"d 'de' MMM, y G","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","dateFormatItem-yyyyM":"MM/y GGGGG","field-year-relative+1":"próximo ano","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/pt-pt/hebrew",{"days-standAlone-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"field-quarter-relative+-1":"trimestre passado","field-day-narrow-relative+0":"hoje","field-day-narrow-relative+1":"amanhã","field-day-short-relative+0":"hoje","field-day-short-relative+1":"amanhã","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-dayperiod-short":"am/pm","days-format-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-yyyyQQQ":"QQQQ 'de' y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"da tarde","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-mon-short-relative+-1":"segunda passada","field-day-short-relative+-1":"ontem","dateFormatItem-Md":"d/M","dayPeriods-standAlone-wide-pm":"tarde","dayPeriods-format-abbr-am":"a.m.","dayPeriods-standAlone-abbr-am":"a.m.","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-yyyyMMMM":"MMMM 'de' y G","field-day-narrow-relative+-1":"ontem","field-sat-short-relative+-1":"sábado passado","dayPeriods-standAlone-narrow-am":"a.m.","field-minute-narrow":"min","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","quarters-format-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"field-mon-short-relative+0":"esta segunda","dateFormatItem-Gy":"y G","field-mon-short-relative+1":"próxima segunda","dateFormatItem-yyyyMMMEd":"E, d/MM/y G","field-wed-short-relative+-1":"quarta passada","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MM/y G","dateFormatItem-yyyyMMMd":"d/MM/y G","dateFormatItem-MMMMd":"d 'de' MMMM","field-tue-short-relative+0":"esta terça","field-tue-short-relative+1":"próxima terça","field-minute-short":"min","field-wed-short-relative+0":"esta quarta","field-wed-short-relative+1":"próxima quarta","quarters-standAlone-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"field-dayperiod":"am/pm","days-standAlone-abbr":["domingo","segunda","terça","quarta","quinta","sexta","sábado"],"dateTimeFormat-long":"{1} 'às' {0}","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d 'de' MMM","field-quarter-relative+0":"este trimestre","field-dayperiod-narrow":"am/pm","field-quarter-relative+1":"próximo trimestre","dateFormatItem-MEd":"E, dd/MM","field-zone-short":"fuso horário","dateTimeFormat-full":"{1} 'às' {0}","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-second-narrow":"s","dateFormatItem-y":"y G","field-thu-short-relative+0":"esta quinta","field-thu-short-relative+1":"próxima quinta","dayPeriods-format-abbr-pm":"p.m.","field-quarter-narrow-relative+0":"este trim.","field-quarter-narrow-relative+1":"próximo trim.","days-format-abbr":["domingo","segunda","terça","quarta","quinta","sexta","sábado"],"dayPeriods-standAlone-abbr-pm":"p.m.","days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-zone-narrow":"fuso horário","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dayPeriods-standAlone-narrow-pm":"p.m.","field-quarter-short-relative+0":"este trim.","field-quarter-short-relative+1":"próximo trim.","dayPeriods-format-wide-am":"da manhã","dayPeriods-standAlone-wide-am":"manhã","field-fri-short-relative+-1":"sexta passada","field-quarter-short-relative+-1":"trim. passado","dateFormat-short":"d/M/y G","field-second-short":"s","field-fri-short-relative+0":"esta sexta","field-fri-short-relative+1":"próxima sexta","field-quarter-narrow-relative+-1":"trim. passado","dateFormatItem-Ed":"E, d","field-sat-short-relative+0":"este sábado","field-sat-short-relative+1":"próximo sábado","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyM":"MM/y GGGGG","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateTimeFormat-short":"{1}, {0}","field-sun-short-relative+-1":"domingo passado","field-thu-short-relative+-1":"quinta passada","field-tue-short-relative+-1":"terça passada","dateFormatItem-GyMMM":"MMM 'de' y G","dateFormatItem-yyyy":"y G","field-sun-short-relative+0":"este domingo","field-sun-short-relative+1":"próximo domingo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/islamic.js b/lib/dojo/cldr/nls/pt-pt/islamic.js
index dd149c6eb..912a255e6 100644
--- a/lib/dojo/cldr/nls/pt-pt/islamic.js
+++ b/lib/dojo/cldr/nls/pt-pt/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt-pt/islamic",{"days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"field-weekday":"Dia da semana","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-tue-relative+-1":"terça-feira passada","days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","dateFormatItem-yyyyQQQ":"QQQQ 'de' y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"da tarde","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"a.m.","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"field-year":"Ano","field-hour":"Hora","field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d/MM/y G","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MM/y G","dateFormatItem-yyyyMMMd":"d/MM/y G","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"field-minute":"Minuto","field-dayperiod":"Da manhã/da tarde","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"field-day-relative+-1":"ontem","dateTimeFormat-long":"{1} 'às' {0}","dayPeriods-format-narrow-am":"a.m.","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","dateTimeFormat-full":"{1} 'às' {0}","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso horário","dateFormatItem-y":"y G","field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","dayPeriods-format-abbr-pm":"p.m.","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","dayPeriods-format-wide-am":"da manhã","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"d/M/y G","field-second":"Segundo","field-sat-relative+-1":"sábado passado","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","field-week":"Semana","dateFormat-medium":"d 'de' MMM, y G","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","dateFormatItem-yyyyM":"MM/y GGGGG","field-year-relative+1":"próximo ano","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/pt-pt/islamic",{"days-standAlone-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"field-quarter-relative+-1":"trimestre passado","field-day-narrow-relative+0":"hoje","field-day-narrow-relative+1":"amanhã","field-day-short-relative+0":"hoje","field-day-short-relative+1":"amanhã","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-dayperiod-short":"am/pm","days-format-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-yyyyQQQ":"QQQQ 'de' y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"da tarde","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-mon-short-relative+-1":"segunda passada","field-day-short-relative+-1":"ontem","dateFormatItem-Md":"d/M","dayPeriods-standAlone-wide-pm":"tarde","dayPeriods-format-abbr-am":"a.m.","dayPeriods-standAlone-abbr-am":"a.m.","quarters-format-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"dateFormatItem-yyyyMMMM":"MMMM 'de' y G","field-day-narrow-relative+-1":"ontem","field-sat-short-relative+-1":"sábado passado","dayPeriods-standAlone-narrow-am":"a.m.","field-minute-narrow":"min","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","quarters-format-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"quarters-standAlone-wide":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"field-mon-short-relative+0":"esta segunda","dateFormatItem-Gy":"y G","field-mon-short-relative+1":"próxima segunda","dateFormatItem-yyyyMMMEd":"E, d/MM/y G","field-wed-short-relative+-1":"quarta passada","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MM/y G","dateFormatItem-yyyyMMMd":"d/MM/y G","dateFormatItem-MMMMd":"d 'de' MMMM","field-tue-short-relative+0":"esta terça","field-tue-short-relative+1":"próxima terça","field-minute-short":"min","field-wed-short-relative+0":"esta quarta","field-wed-short-relative+1":"próxima quarta","quarters-standAlone-abbr":["1.º trimestre","2.º trimestre","3.º trimestre","4.º trimestre"],"field-dayperiod":"am/pm","days-standAlone-abbr":["domingo","segunda","terça","quarta","quinta","sexta","sábado"],"dateTimeFormat-long":"{1} 'às' {0}","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d 'de' MMM","field-quarter-relative+0":"este trimestre","field-dayperiod-narrow":"am/pm","field-quarter-relative+1":"próximo trimestre","dateFormatItem-MEd":"E, dd/MM","field-zone-short":"fuso horário","dateTimeFormat-full":"{1} 'às' {0}","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-second-narrow":"s","dateFormatItem-y":"y G","field-thu-short-relative+0":"esta quinta","field-thu-short-relative+1":"próxima quinta","dayPeriods-format-abbr-pm":"p.m.","field-quarter-narrow-relative+0":"este trim.","field-quarter-narrow-relative+1":"próximo trim.","days-format-abbr":["domingo","segunda","terça","quarta","quinta","sexta","sábado"],"dayPeriods-standAlone-abbr-pm":"p.m.","days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-zone-narrow":"fuso horário","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dayPeriods-standAlone-narrow-pm":"p.m.","field-quarter-short-relative+0":"este trim.","field-quarter-short-relative+1":"próximo trim.","dayPeriods-format-wide-am":"da manhã","dayPeriods-standAlone-wide-am":"manhã","field-fri-short-relative+-1":"sexta passada","field-quarter-short-relative+-1":"trim. passado","dateFormat-short":"d/M/y G","field-second-short":"s","field-fri-short-relative+0":"esta sexta","field-fri-short-relative+1":"próxima sexta","field-quarter-narrow-relative+-1":"trim. passado","dateFormatItem-Ed":"E, d","field-sat-short-relative+0":"este sábado","field-sat-short-relative+1":"próximo sábado","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyM":"MM/y GGGGG","dayPeriods-format-narrow-pm":"p.m.","dateFormatItem-yyyyQQQQ":"QQQQ 'de' y G","dateTimeFormat-short":"{1}, {0}","field-sun-short-relative+-1":"domingo passado","field-thu-short-relative+-1":"quinta passada","field-tue-short-relative+-1":"terça passada","dateFormatItem-GyMMM":"MMM 'de' y G","dateFormatItem-yyyy":"y G","field-sun-short-relative+0":"este domingo","field-sun-short-relative+1":"próximo domingo"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/japanese.js b/lib/dojo/cldr/nls/pt-pt/japanese.js
index 6603833cf..52f44a242 100644
--- a/lib/dojo/cldr/nls/pt-pt/japanese.js
+++ b/lib/dojo/cldr/nls/pt-pt/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt-pt/japanese",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-dayperiod":"Da manhã/da tarde","field-sun-relative+-1":"domingo passado","field-mon-relative+-1":"segunda-feira passada","field-minute":"Minuto","field-day-relative+-1":"ontem","field-weekday":"Dia da semana","field-day-relative+-2":"anteontem","field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","field-wed-relative+-1":"quarta-feira passada","field-day-relative+0":"hoje","field-day-relative+1":"amanhã","field-day-relative+2":"depois de amanhã","field-tue-relative+0":"esta terça-feira","field-zone":"Fuso horário","field-tue-relative+1":"próxima terça-feira","field-week-relative+-1":"semana passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-sat-relative+-1":"sábado passado","field-year-relative+-1":"ano passado","field-year":"Ano","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana","field-month-relative+0":"este mês","field-month":"Mês","field-month-relative+1":"próximo mês","field-fri-relative+-1":"sexta-feira passada","field-second":"Segundo","field-tue-relative+-1":"terça-feira passada","field-day":"Dia","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-thu-relative+0":"esta quinta-feira","dateFormat-short":"d/M/y G","field-thu-relative+1":"próxima quinta-feira","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-month-relative+-1":"mês passado","field-thu-relative+-1":"quinta-feira passada"}); \ No newline at end of file
+define("dojo/cldr/nls/pt-pt/japanese",{"field-dayperiod":"am/pm","field-second-short":"s","field-quarter-narrow-relative+-1":"trim. passado","field-sat-short-relative+-1":"sábado passado","field-dayperiod-short":"am/pm","field-minute-short":"min","field-zone-short":"fuso horário","field-mon-short-relative+0":"esta segunda","field-mon-short-relative+1":"próxima segunda","field-zone-narrow":"fuso horário","field-second-narrow":"s","field-sat-short-relative+0":"este sábado","field-sat-short-relative+1":"próximo sábado","field-quarter-relative+-1":"trimestre passado","field-sun-short-relative+0":"este domingo","field-sun-short-relative+1":"próximo domingo","field-day-short-relative+0":"hoje","field-day-narrow-relative+0":"hoje","field-day-short-relative+1":"amanhã","field-tue-short-relative+0":"esta terça","field-dayperiod-narrow":"am/pm","field-day-narrow-relative+1":"amanhã","field-wed-short-relative+0":"esta quarta","field-mon-short-relative+-1":"segunda passada","field-tue-short-relative+1":"próxima terça","field-wed-short-relative+1":"próxima quarta","field-tue-short-relative+-1":"terça passada","field-day-short-relative+-1":"ontem","field-fri-short-relative+-1":"sexta passada","field-quarter-narrow-relative+0":"este trim.","field-quarter-narrow-relative+1":"próximo trim.","field-wed-short-relative+-1":"quarta passada","field-minute-narrow":"min","field-quarter-short-relative+-1":"trim. passado","field-thu-short-relative+-1":"quinta passada","dateFormat-short":"d/M/y G","field-quarter-short-relative+0":"este trim.","field-sun-short-relative+-1":"domingo passado","field-quarter-short-relative+1":"próximo trim.","field-fri-short-relative+0":"esta sexta","field-quarter-relative+0":"este trimestre","field-fri-short-relative+1":"próxima sexta","field-quarter-relative+1":"próximo trimestre","field-thu-short-relative+0":"esta quinta","field-thu-short-relative+1":"próxima quinta","field-day-narrow-relative+-1":"ontem"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/number.js b/lib/dojo/cldr/nls/pt-pt/number.js
index 51b9b333a..b09195f11 100644
--- a/lib/dojo/cldr/nls/pt-pt/number.js
+++ b/lib/dojo/cldr/nls/pt-pt/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt-pt/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 biliões","decimalFormat-short":"000 Bi"}); \ No newline at end of file
+define("dojo/cldr/nls/pt-pt/number",{"group":" ","decimalFormat-long":"000 biliões","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","decimalFormat-short":"000 Bi","currencyFormat-short":"000 B ¤","approximatelySign":"~"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt-pt/roc.js b/lib/dojo/cldr/nls/pt-pt/roc.js
index b3078d4fb..ecbb48084 100644
--- a/lib/dojo/cldr/nls/pt-pt/roc.js
+++ b/lib/dojo/cldr/nls/pt-pt/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt-pt/roc",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-dayperiod":"Da manhã/da tarde","field-sun-relative+-1":"domingo passado","field-mon-relative+-1":"segunda-feira passada","field-minute":"Minuto","field-day-relative+-1":"ontem","field-weekday":"Dia da semana","field-day-relative+-2":"anteontem","field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","field-wed-relative+-1":"quarta-feira passada","field-day-relative+0":"hoje","field-day-relative+1":"amanhã","field-day-relative+2":"depois de amanhã","field-tue-relative+0":"esta terça-feira","field-zone":"Fuso horário","field-tue-relative+1":"próxima terça-feira","field-week-relative+-1":"semana passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-sat-relative+-1":"sábado passado","field-year-relative+-1":"ano passado","field-year":"Ano","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana","field-month-relative+0":"este mês","field-month":"Mês","field-month-relative+1":"próximo mês","field-fri-relative+-1":"sexta-feira passada","field-second":"Segundo","field-tue-relative+-1":"terça-feira passada","field-day":"Dia","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-thu-relative+0":"esta quinta-feira","dateFormat-short":"d/M/y G","field-thu-relative+1":"próxima quinta-feira","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-month-relative+-1":"mês passado","field-thu-relative+-1":"quinta-feira passada"}); \ No newline at end of file
+define("dojo/cldr/nls/pt-pt/roc",{"field-dayperiod":"am/pm","field-second-short":"s","field-quarter-narrow-relative+-1":"trim. passado","field-sat-short-relative+-1":"sábado passado","field-dayperiod-short":"am/pm","field-minute-short":"min","field-zone-short":"fuso horário","field-mon-short-relative+0":"esta segunda","field-mon-short-relative+1":"próxima segunda","field-zone-narrow":"fuso horário","field-second-narrow":"s","field-sat-short-relative+0":"este sábado","field-sat-short-relative+1":"próximo sábado","field-quarter-relative+-1":"trimestre passado","field-sun-short-relative+0":"este domingo","field-sun-short-relative+1":"próximo domingo","field-day-short-relative+0":"hoje","field-day-narrow-relative+0":"hoje","field-day-short-relative+1":"amanhã","field-tue-short-relative+0":"esta terça","field-dayperiod-narrow":"am/pm","field-day-narrow-relative+1":"amanhã","field-wed-short-relative+0":"esta quarta","field-mon-short-relative+-1":"segunda passada","field-tue-short-relative+1":"próxima terça","field-wed-short-relative+1":"próxima quarta","field-tue-short-relative+-1":"terça passada","field-day-short-relative+-1":"ontem","field-fri-short-relative+-1":"sexta passada","field-quarter-narrow-relative+0":"este trim.","field-quarter-narrow-relative+1":"próximo trim.","field-wed-short-relative+-1":"quarta passada","field-minute-narrow":"min","field-quarter-short-relative+-1":"trim. passado","field-thu-short-relative+-1":"quinta passada","dateFormat-short":"d/M/y G","field-quarter-short-relative+0":"este trim.","field-sun-short-relative+-1":"domingo passado","field-quarter-short-relative+1":"próximo trim.","field-fri-short-relative+0":"esta sexta","field-quarter-relative+0":"este trimestre","field-fri-short-relative+1":"próxima sexta","field-quarter-relative+1":"próximo trimestre","field-thu-short-relative+0":"esta quinta","field-thu-short-relative+1":"próxima quinta","field-day-narrow-relative+-1":"ontem"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/buddhist.js b/lib/dojo/cldr/nls/pt/buddhist.js
index a8744b9bb..12900d001 100644
--- a/lib/dojo/cldr/nls/pt/buddhist.js
+++ b/lib/dojo/cldr/nls/pt/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt/buddhist",{"days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"agora","field-weekday":"Dia da semana","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-tue-relative+-1":"terça-feira passada","days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-year":"Ano","field-hour":"Hora","months-format-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","months-standAlone-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d 'de' MMM 'de' y G","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MMM 'de' y G","dateFormatItem-yyyyMMMd":"d 'de' MMM 'de' y G","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["BE"],"field-minute":"Minuto","field-dayperiod":"AM/PM","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"field-day-relative+-1":"ontem","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso horário","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Segundo","field-sat-relative+-1":"sábado passado","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","field-week":"Semana","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","dateFormatItem-yyyyM":"MM/y GGGGG","field-year-relative+1":"próximo ano","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/pt/buddhist",{"field-quarter-short-relative+0":"este trimestre","field-quarter-short-relative+1":"próximo trimestre","field-tue-relative+-1":"terça-feira passada","field-year":"ano","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-minute":"minuto","field-month-narrow-relative+-1":"mês passado","field-tue-narrow-relative+0":"esta ter.","field-tue-narrow-relative+1":"próxima ter.","field-thu-short-relative+0":"esta qui.","field-thu-short-relative+1":"próxima qui.","field-day-relative+0":"hoje","field-day-short-relative+-2":"anteontem","field-day-relative+1":"amanhã","field-week-narrow-relative+0":"esta semana","field-day-relative+2":"depois de amanhã","field-week-narrow-relative+1":"próxima semana","field-wed-narrow-relative+-1":"qua. passada","field-year-narrow":"ano","field-era-short":"era","field-year-narrow-relative+0":"este ano","field-tue-relative+0":"esta terça-feira","field-year-narrow-relative+1":"próximo ano","field-tue-relative+1":"próxima terça-feira","field-weekdayOfMonth":"dia da semana do mês","field-second-short":"seg.","dateFormatItem-MMMd":"d 'de' MMM","field-weekdayOfMonth-narrow":"dia da sem. do mês","field-week-relative+0":"esta semana","field-month-relative+0":"este mês","field-week-relative+1":"próxima semana","field-month-relative+1":"próximo mês","field-sun-narrow-relative+0":"este dom.","field-mon-short-relative+0":"esta seg.","field-sun-narrow-relative+1":"próximo dom.","field-mon-short-relative+1":"próxima seg.","field-second-relative+0":"agora","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["EB"],"field-weekOfMonth":"semana do mês","field-month-short":"mês","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-day":"dia","field-dayOfYear-short":"dia do ano","field-year-relative+-1":"ano passado","field-sat-short-relative+-1":"sáb. passado","field-hour-relative+0":"esta hora","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-wed-relative+-1":"quarta-feira passada","field-sat-narrow-relative+-1":"sáb. passado","field-second":"segundo","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+2":"depois de amanhã","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"field-tue-short-relative+0":"esta ter.","field-tue-short-relative+1":"próxima ter.","field-month-short-relative+-1":"mês passado","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-GyMMM":"MMM 'de' y G","field-month":"mês","field-day-narrow":"dia","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"próximo sáb.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM 'de' y G","eraAbbr":["BE"],"quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-yyyyM":"MM/y GGGGG","field-second-narrow":"seg.","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-year-short":"ano","field-day-narrow-relative+-2":"anteontem","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"último trimestre","dateFormatItem-yyyyMMMd":"d 'de' MMM 'de' y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"semana passada","days-format-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"field-dayOfYear":"dia do ano","field-sat-relative+-1":"sábado passado","dateFormatItem-Md":"d/M","field-hour":"hora","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-month-relative+-1":"mês passado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este sáb.","field-fri-relative+0":"esta sexta-feira","field-sat-narrow-relative+1":"próximo sáb.","field-fri-relative+1":"próxima sexta-feira","field-month-narrow-relative+0":"este mês","field-month-narrow-relative+1":"próximo mês","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"próximo dom.","field-week-relative+-1":"semana passada","field-quarter-short-relative+-1":"último trimestre","months-format-abbr":["jan.","fev.","mar.","abr.","mai.","jun.","jul.","ago.","set.","out.","nov.","dez."],"field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"próximo trimestre","field-wed-short-relative+-1":"qua. passada","dateFormat-short":"dd/MM/y GGGGG","field-thu-short-relative+-1":"qui. passada","field-year-narrow-relative+-1":"ano passado","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMMEd":"E, d 'de' MMM 'de' y G","field-mon-narrow-relative+-1":"seg. passada","dateFormatItem-MMMMd":"d 'de' MMMM","field-thu-narrow-relative+-1":"qui. passada","field-tue-narrow-relative+-1":"ter. passada","field-weekOfMonth-short":"sem. do mês","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"esta qua.","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"field-wed-short-relative+1":"próxima qua.","field-sun-relative+-1":"domingo passado","days-standAlone-abbr":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"field-weekday":"dia da semana","field-quarter-narrow-relative+0":"este trimestre","field-sat-relative+0":"este sábado","field-quarter-narrow-relative+1":"próximo trimestre","field-sat-relative+1":"próximo sábado","field-day-short-relative+2":"depois de amanhã","field-week-short-relative+0":"esta semana","field-week-short-relative+1":"próxima semana","months-standAlone-abbr":["jan.","fev.","mar.","abr.","mai.","jun.","jul.","ago.","set.","out.","nov.","dez."],"field-dayOfYear-narrow":"dia do ano","field-month-short-relative+0":"este mês","field-month-short-relative+1":"próximo mês","field-weekdayOfMonth-short":"dia da sem. do mês","dateFormatItem-MEd":"E, dd/MM","field-zone-narrow":"fuso","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"esta qui.","field-thu-narrow-relative+1":"próxima qui.","field-sun-narrow-relative+-1":"dom. passado","field-mon-short-relative+-1":"seg. passada","field-thu-relative+0":"esta quinta-feira","field-thu-relative+1":"próxima quinta-feira","field-fri-short-relative+-1":"sex. passada","field-thu-relative+-1":"quinta-feira passada","field-week":"semana","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"esta qua.","field-wed-narrow-relative+1":"próxima qua.","field-quarter-narrow-relative+-1":"último trimestre","field-year-short-relative+0":"este ano","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"MMM 'de' y G","field-year-short-relative+1":"próximo ano","field-fri-short-relative+0":"esta sex.","field-fri-short-relative+1":"próxima sex.","days-standAlone-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"field-week-short-relative+-1":"semana passada","field-hour-short":"h","field-zone-short":"fuso","quarters-format-abbr":["T1","T2","T3","T4"],"field-month-narrow":"mês","field-hour-narrow":"h","field-fri-narrow-relative+-1":"sex. passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-era-narrow":"era","field-fri-relative+-1":"sexta-feira passada","eraNarrow":"EB","field-tue-short-relative+-1":"ter. passada","field-minute-narrow":"min.","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-mon-narrow-relative+0":"esta seg.","field-mon-narrow-relative+1":"próxima seg.","field-year-short-relative+-1":"ano passado","field-zone":"fuso horário","dateFormatItem-MMMEd":"E, d 'de' MMM","field-weekOfMonth-narrow":"sem. do mês","field-weekday-narrow":"dia da sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. passado","field-day-relative+-1":"ontem","field-day-relative+-2":"anteontem","field-weekday-short":"dia da sem.","days-format-abbr":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","dateFormatItem-Gy":"y G","field-day-short":"dia","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"esta sex.","field-fri-narrow-relative+1":"próxima sex."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/chinese.js b/lib/dojo/cldr/nls/pt/chinese.js
index 634e54759..425c0fec1 100644
--- a/lib/dojo/cldr/nls/pt/chinese.js
+++ b/lib/dojo/cldr/nls/pt/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt/chinese",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-dayperiod":"AM/PM","field-sun-relative+-1":"domingo passado","field-mon-relative+-1":"segunda-feira passada","field-minute":"Minuto","field-day-relative+-1":"ontem","field-weekday":"Dia da semana","field-day-relative+-2":"anteontem","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+-1":"quarta-feira passada","field-day-relative+0":"hoje","field-day-relative+1":"amanhã","field-day-relative+2":"depois de amanhã","dateFormat-long":"d 'de' MMMM 'de' U","field-tue-relative+0":"esta terça-feira","field-zone":"Fuso horário","field-tue-relative+1":"próxima terça-feira","field-week-relative+-1":"semana passada","dateFormat-medium":"dd/MM U","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-sat-relative+-1":"sábado passado","field-year-relative+-1":"ano passado","field-year":"Ano","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","months-standAlone-wide":["Mês 1","Mês 2","Mês 3","Mês 4","Mês 5","Mês 6","Mês 7","Mês 8","Mês 9","Mês 10","Mês 11","Mês 12"],"field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana","months-format-abbr":["Mês 1","Mês 2","Mês 3","Mês 4","Mês 5","Mês 6","Mês 7","Mês 8","Mês 9","Mês 10","Mês 11","Mês 12"],"field-month-relative+0":"este mês","field-month":"Mês","field-month-relative+1":"próximo mês","field-fri-relative+-1":"sexta-feira passada","field-second":"Segundo","field-tue-relative+-1":"terça-feira passada","field-day":"Dia","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-thu-relative+0":"esta quinta-feira","field-second-relative+0":"agora","dateFormat-short":"dd/MM/yy","field-thu-relative+1":"próxima quinta-feira","dateFormat-full":"EEEE, d 'de' MMMM 'de' U","months-format-wide":["Mês 1","Mês 2","Mês 3","Mês 4","Mês 5","Mês 6","Mês 7","Mês 8","Mês 9","Mês 10","Mês 11","Mês 12"],"field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-month-relative+-1":"mês passado","field-thu-relative+-1":"quinta-feira passada"}); \ No newline at end of file
+define("dojo/cldr/nls/pt/chinese",{"field-quarter-short-relative+0":"este trimestre","field-quarter-short-relative+1":"próximo trimestre","field-tue-relative+-1":"terça-feira passada","field-year":"ano","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-minute":"minuto","field-month-narrow-relative+-1":"mês passado","field-tue-narrow-relative+0":"esta ter.","field-tue-narrow-relative+1":"próxima ter.","field-thu-short-relative+0":"esta qui.","field-thu-short-relative+1":"próxima qui.","field-day-relative+0":"hoje","field-day-short-relative+-2":"anteontem","field-day-relative+1":"amanhã","field-week-narrow-relative+0":"esta semana","field-day-relative+2":"depois de amanhã","field-week-narrow-relative+1":"próxima semana","field-wed-narrow-relative+-1":"qua. passada","field-year-narrow":"ano","field-era-short":"era","field-year-narrow-relative+0":"este ano","field-tue-relative+0":"esta terça-feira","field-year-narrow-relative+1":"próximo ano","field-tue-relative+1":"próxima terça-feira","field-weekdayOfMonth":"dia da semana do mês","field-second-short":"seg.","field-weekdayOfMonth-narrow":"dia da sem. do mês","field-week-relative+0":"esta semana","field-month-relative+0":"este mês","field-week-relative+1":"próxima semana","field-month-relative+1":"próximo mês","field-sun-narrow-relative+0":"este dom.","field-mon-short-relative+0":"esta seg.","field-sun-narrow-relative+1":"próximo dom.","field-mon-short-relative+1":"próxima seg.","field-second-relative+0":"agora","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"semana do mês","field-month-short":"mês","field-day":"dia","field-dayOfYear-short":"dia do ano","field-year-relative+-1":"ano passado","field-sat-short-relative+-1":"sáb. passado","field-hour-relative+0":"esta hora","field-wed-relative+-1":"quarta-feira passada","field-sat-narrow-relative+-1":"sáb. passado","field-second":"segundo","dateFormat-long":"d 'de' MMMM 'de' U","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+2":"depois de amanhã","field-tue-short-relative+0":"esta ter.","field-tue-short-relative+1":"próxima ter.","field-month-short-relative+-1":"mês passado","field-mon-relative+-1":"segunda-feira passada","field-month":"mês","field-day-narrow":"dia","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"próximo sáb.","dateFormat-medium":"dd/MM U","field-second-narrow":"seg.","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-year-short":"ano","field-day-narrow-relative+-2":"anteontem","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"último trimestre","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"semana passada","field-dayOfYear":"dia do ano","field-sat-relative+-1":"sábado passado","field-hour":"hora","months-format-wide":["Mês 1","Mês 2","Mês 3","Mês 4","Mês 5","Mês 6","Mês 7","Mês 8","Mês 9","Mês 10","Mês 11","Mês 12"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' U","field-month-relative+-1":"mês passado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este sáb.","field-fri-relative+0":"esta sexta-feira","field-sat-narrow-relative+1":"próximo sáb.","field-fri-relative+1":"próxima sexta-feira","field-month-narrow-relative+0":"este mês","field-month-narrow-relative+1":"próximo mês","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"próximo dom.","field-week-relative+-1":"semana passada","field-quarter-short-relative+-1":"último trimestre","months-format-abbr":["Mês 1","Mês 2","Mês 3","Mês 4","Mês 5","Mês 6","Mês 7","Mês 8","Mês 9","Mês 10","Mês 11","Mês 12"],"field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"próximo trimestre","field-wed-short-relative+-1":"qua. passada","dateFormat-short":"dd/MM/yy","field-thu-short-relative+-1":"qui. passada","field-year-narrow-relative+-1":"ano passado","field-mon-narrow-relative+-1":"seg. passada","field-thu-narrow-relative+-1":"qui. passada","field-tue-narrow-relative+-1":"ter. passada","field-weekOfMonth-short":"sem. do mês","field-wed-short-relative+0":"esta qua.","months-standAlone-wide":["Mês 1","Mês 2","Mês 3","Mês 4","Mês 5","Mês 6","Mês 7","Mês 8","Mês 9","Mês 10","Mês 11","Mês 12"],"field-wed-short-relative+1":"próxima qua.","field-sun-relative+-1":"domingo passado","field-weekday":"dia da semana","field-quarter-narrow-relative+0":"este trimestre","field-sat-relative+0":"este sábado","field-quarter-narrow-relative+1":"próximo trimestre","field-sat-relative+1":"próximo sábado","field-day-short-relative+2":"depois de amanhã","field-week-short-relative+0":"esta semana","field-week-short-relative+1":"próxima semana","months-standAlone-abbr":["Mês 1","Mês 2","Mês 3","Mês 4","Mês 5","Mês 6","Mês 7","Mês 8","Mês 9","Mês 10","Mês 11","Mês 12"],"field-dayOfYear-narrow":"dia do ano","field-month-short-relative+0":"este mês","field-month-short-relative+1":"próximo mês","field-weekdayOfMonth-short":"dia da sem. do mês","field-zone-narrow":"fuso","field-thu-narrow-relative+0":"esta qui.","field-thu-narrow-relative+1":"próxima qui.","field-sun-narrow-relative+-1":"dom. passado","field-mon-short-relative+-1":"seg. passada","field-thu-relative+0":"esta quinta-feira","field-thu-relative+1":"próxima quinta-feira","field-fri-short-relative+-1":"sex. passada","field-thu-relative+-1":"quinta-feira passada","field-week":"semana","field-wed-narrow-relative+0":"esta qua.","field-wed-narrow-relative+1":"próxima qua.","field-quarter-narrow-relative+-1":"último trimestre","field-year-short-relative+0":"este ano","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"próximo ano","field-fri-short-relative+0":"esta sex.","field-fri-short-relative+1":"próxima sex.","field-week-short-relative+-1":"semana passada","field-hour-short":"h","field-zone-short":"fuso","field-month-narrow":"mês","field-hour-narrow":"h","field-fri-narrow-relative+-1":"sex. passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-era-narrow":"era","field-fri-relative+-1":"sexta-feira passada","field-tue-short-relative+-1":"ter. passada","field-minute-narrow":"min.","field-mon-narrow-relative+0":"esta seg.","field-mon-narrow-relative+1":"próxima seg.","field-year-short-relative+-1":"ano passado","field-zone":"fuso horário","field-weekOfMonth-narrow":"sem. do mês","field-weekday-narrow":"dia da sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. passado","field-day-relative+-1":"ontem","field-day-relative+-2":"anteontem","field-weekday-short":"dia da sem.","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","field-day-short":"dia","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"esta sex.","field-fri-narrow-relative+1":"próxima sex."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/coptic.js b/lib/dojo/cldr/nls/pt/coptic.js
deleted file mode 100644
index 3212e24b5..000000000
--- a/lib/dojo/cldr/nls/pt/coptic.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/pt/coptic",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-dayperiod":"AM/PM","field-sun-relative+-1":"domingo passado","field-mon-relative+-1":"segunda-feira passada","field-minute":"Minuto","field-day-relative+-1":"ontem","field-weekday":"Dia da semana","field-day-relative+-2":"anteontem","field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","months-standAlone-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-wed-relative+-1":"quarta-feira passada","field-day-relative+0":"hoje","field-day-relative+1":"amanhã","field-day-relative+2":"depois de amanhã","field-tue-relative+0":"esta terça-feira","field-zone":"Fuso horário","field-tue-relative+1":"próxima terça-feira","field-week-relative+-1":"semana passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-sat-relative+-1":"sábado passado","field-year-relative+-1":"ano passado","field-year":"Ano","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","months-standAlone-wide":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana","months-format-abbr":["Tout","Baba","Hator","Kiahk","Toba","Amshir","Baramhat","Baramouda","Bashans","Paona","Epep","Mesra","Nasie"],"field-month-relative+0":"este mês","field-month":"Mês","field-month-relative+1":"próximo mês","field-fri-relative+-1":"sexta-feira passada","field-second":"Segundo","field-tue-relative+-1":"terça-feira passada","field-day":"Dia","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-thu-relative+0":"esta quinta-feira","field-second-relative+0":"agora","field-thu-relative+1":"próxima quinta-feira","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-month-relative+-1":"mês passado","field-thu-relative+-1":"quinta-feira passada"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/currency.js b/lib/dojo/cldr/nls/pt/currency.js
index 688a7ffc7..9947c25a5 100644
--- a/lib/dojo/cldr/nls/pt/currency.js
+++ b/lib/dojo/cldr/nls/pt/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt/currency",{"HKD_displayName":"Dólar de Hong Kong","CHF_displayName":"Franco suíço","JPY_symbol":"JP¥","CAD_displayName":"Dólar canadense","HKD_symbol":"HK$","CNY_displayName":"Yuan chinês","USD_symbol":"US$","AUD_displayName":"Dólar australiano","JPY_displayName":"Iene japonês","CAD_symbol":"CA$","USD_displayName":"Dólar americano","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"Libra britânica","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file
+define("dojo/cldr/nls/pt/currency",{"HKD_displayName":"Dólar de Hong Kong","CNY_displayName":"Yuan chinês","JPY_displayName":"Iene japonês","JPY_symbol":"JP¥","USD_displayName":"Dólar americano","CAD_symbol":"CA$","GBP_displayName":"Libra esterlina","CHF_displayName":"Franco suíço","CNY_symbol":"CN¥","EUR_displayName":"Euro","GBP_symbol":"£","CAD_displayName":"Dólar canadense","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"Dólar australiano","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/ethiopic.js b/lib/dojo/cldr/nls/pt/ethiopic.js
deleted file mode 100644
index 6d5d49c8d..000000000
--- a/lib/dojo/cldr/nls/pt/ethiopic.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/pt/ethiopic",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-dayperiod":"AM/PM","field-sun-relative+-1":"domingo passado","field-mon-relative+-1":"segunda-feira passada","field-minute":"Minuto","field-day-relative+-1":"ontem","field-weekday":"Dia da semana","field-day-relative+-2":"anteontem","field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","months-standAlone-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-wed-relative+-1":"quarta-feira passada","field-day-relative+0":"hoje","field-day-relative+1":"amanhã","field-day-relative+2":"depois de amanhã","field-tue-relative+0":"esta terça-feira","field-zone":"Fuso horário","field-tue-relative+1":"próxima terça-feira","field-week-relative+-1":"semana passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-sat-relative+-1":"sábado passado","field-year-relative+-1":"ano passado","field-year":"Ano","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","months-standAlone-wide":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana","months-format-abbr":["Meskerem","Tekemt","Hedar","Tahsas","Ter","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehasse","Pagumen"],"field-month-relative+0":"este mês","field-month":"Mês","field-month-relative+1":"próximo mês","field-fri-relative+-1":"sexta-feira passada","field-second":"Segundo","field-tue-relative+-1":"terça-feira passada","field-day":"Dia","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-thu-relative+0":"esta quinta-feira","field-second-relative+0":"agora","field-thu-relative+1":"próxima quinta-feira","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-month-relative+-1":"mês passado","field-thu-relative+-1":"quinta-feira passada"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/generic.js b/lib/dojo/cldr/nls/pt/generic.js
index 59607f94d..d9dab5256 100644
--- a/lib/dojo/cldr/nls/pt/generic.js
+++ b/lib/dojo/cldr/nls/pt/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt/generic",{"field-second-relative+0":"agora","field-weekday":"Dia da semana","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-tue-relative+-1":"terça-feira passada","dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","dateFormatItem-yyyyQQQ":"G y QQQ","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","field-era":"Era","field-year":"Ano","field-hour":"Hora","field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM 'de' y G","dateFormatItem-yyyyMMMd":"d 'de' MMM 'de' y G","field-sun-relative+0":"este domingo","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"próximo domingo","field-minute":"Minuto","field-dayperiod":"AM/PM","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ontem","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","field-zone":"Fuso horário","dateFormatItem-y":"y G","field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-month":"Mês","dateFormatItem-MMM":"LLL","field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Segundo","field-sat-relative+-1":"sábado passado","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","field-week":"Semana","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","dateFormatItem-yyyyM":"MM/y GGGGG","field-year-relative+1":"próximo ano","dateFormatItem-yyyyQQQQ":"G y QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/pt/generic",{"field-quarter-short-relative+0":"este trimestre","field-quarter-short-relative+1":"próximo trimestre","field-tue-relative+-1":"terça-feira passada","field-year":"ano","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-ms":"mm:ss","field-minute":"minuto","field-month-narrow-relative+-1":"mês passado","field-tue-narrow-relative+0":"esta ter.","field-tue-narrow-relative+1":"próxima ter.","field-thu-short-relative+0":"esta qui.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"hoje","field-day-short-relative+-2":"anteontem","field-thu-short-relative+1":"próxima qui.","field-day-relative+1":"amanhã","field-week-narrow-relative+0":"esta semana","field-day-relative+2":"depois de amanhã","field-week-narrow-relative+1":"próxima semana","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"qua. passada","field-year-narrow":"ano","field-era-short":"era","field-year-narrow-relative+0":"este ano","field-tue-relative+0":"esta terça-feira","field-year-narrow-relative+1":"próximo ano","field-tue-relative+1":"próxima terça-feira","field-weekdayOfMonth":"dia da semana do mês","field-second-short":"seg.","dateFormatItem-MMMd":"d 'de' MMM","field-weekdayOfMonth-narrow":"dia da sem. do mês","field-week-relative+0":"esta semana","field-month-relative+0":"este mês","field-week-relative+1":"próxima semana","field-month-relative+1":"próximo mês","field-sun-narrow-relative+0":"este dom.","field-mon-short-relative+0":"esta seg.","field-sun-narrow-relative+1":"próximo dom.","field-mon-short-relative+1":"próxima seg.","field-second-relative+0":"agora","dateFormatItem-yyyyQQQ":"G y QQQ","field-weekOfMonth":"semana do mês","field-month-short":"mês","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-day":"dia","field-dayOfYear-short":"dia do ano","field-year-relative+-1":"ano passado","field-sat-short-relative+-1":"sáb. passado","dateFormatItem-yyyyMMMMd":"d 'de' MMMM 'de' y G","field-hour-relative+0":"esta hora","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-wed-relative+-1":"quarta-feira passada","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"sáb. passado","field-second":"segundo","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d 'de' MMMM 'de' y G","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+2":"depois de amanhã","dateFormatItem-yyyyMMMMEd":"E, d 'de' MMMM 'de' y G","field-tue-short-relative+0":"esta ter.","field-tue-short-relative+1":"próxima ter.","field-month-short-relative+-1":"mês passado","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-GyMMM":"MMM 'de' y G","field-month":"mês","field-day-narrow":"dia","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"próximo sáb.","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM 'de' y G","dateFormatItem-yyyyM":"MM/y GGGGG","field-second-narrow":"seg.","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-year-short":"ano","field-day-narrow-relative+-2":"anteontem","field-quarter-relative+-1":"último trimestre","dateFormatItem-yyyyMMMd":"d 'de' MMM 'de' y G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"semana passada","field-dayOfYear":"dia do ano","field-sat-relative+-1":"sábado passado","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d/M","field-hour":"hora","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-month-relative+-1":"mês passado","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este sáb.","field-fri-relative+0":"esta sexta-feira","field-sat-narrow-relative+1":"próximo sáb.","field-fri-relative+1":"próxima sexta-feira","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"este mês","field-month-narrow-relative+1":"próximo mês","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"próximo dom.","field-week-relative+-1":"semana passada","field-quarter-short-relative+-1":"último trimestre","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"próximo trimestre","field-wed-short-relative+-1":"qua. passada","dateFormat-short":"dd/MM/y GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"ano passado","field-thu-short-relative+-1":"qui. passada","dateFormatItem-yyyyMMMEd":"E, d 'de' MMM 'de' y G","field-mon-narrow-relative+-1":"seg. passada","dateFormatItem-MMMMd":"d 'de' MMMM","field-thu-narrow-relative+-1":"qui. passada","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"sem. do mês","field-tue-narrow-relative+-1":"ter. passada","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"esta qua.","field-wed-short-relative+1":"próxima qua.","field-sun-relative+-1":"domingo passado","dateFormatItem-MMMMEd":"E, d 'de' MMMM","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"dia da semana","field-quarter-narrow-relative+0":"este trimestre","field-sat-relative+0":"este sábado","field-quarter-narrow-relative+1":"próximo trimestre","dateFormatItem-h":"h a","field-day-short-relative+2":"depois de amanhã","field-sat-relative+1":"próximo sábado","field-week-short-relative+0":"esta semana","field-week-short-relative+1":"próxima semana","field-dayOfYear-narrow":"dia do ano","field-month-short-relative+0":"este mês","field-month-short-relative+1":"próximo mês","field-weekdayOfMonth-short":"dia da sem. do mês","dateFormatItem-MEd":"E, dd/MM","field-zone-narrow":"fuso","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"esta qui.","field-sun-narrow-relative+-1":"dom. passado","field-mon-short-relative+-1":"seg. passada","field-thu-narrow-relative+1":"próxima qui.","field-thu-relative+0":"esta quinta-feira","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"sex. passada","field-thu-relative+-1":"quinta-feira passada","field-week":"semana","dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"esta qua.","field-wed-narrow-relative+1":"próxima qua.","field-quarter-narrow-relative+-1":"último trimestre","field-year-short-relative+0":"este ano","dateFormatItem-yyyyMMM":"MMM 'de' y G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"próximo ano","field-fri-short-relative+0":"esta sex.","field-fri-short-relative+1":"próxima sex.","field-week-short-relative+-1":"semana passada","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-hour-short":"h","field-zone-short":"fuso","field-month-narrow":"mês","field-hour-narrow":"h","field-fri-narrow-relative+-1":"sex. passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-era-narrow":"era","field-fri-relative+-1":"sexta-feira passada","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"ter. passada","field-minute-narrow":"min.","field-mon-narrow-relative+0":"esta seg.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"próxima seg.","field-year-short-relative+-1":"ano passado","field-zone":"fuso horário","dateFormatItem-MMMEd":"E, d 'de' MMM","field-weekOfMonth-narrow":"sem. do mês","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"dia da sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. passado","field-day-relative+-1":"ontem","field-day-relative+-2":"anteontem","field-weekday-short":"dia da sem.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","dateFormatItem-Gy":"y G","field-day-short":"dia","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"esta sex.","field-fri-narrow-relative+1":"próxima sex."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/gregorian.js b/lib/dojo/cldr/nls/pt/gregorian.js
index 46e6377bb..cae32ab06 100644
--- a/lib/dojo/cldr/nls/pt/gregorian.js
+++ b/lib/dojo/cldr/nls/pt/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt/gregorian",{"dateFormatItem-Ehm":"E, h:mm a","days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"agora","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Dia da semana","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"E, dd/MM/y","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","eraNarrow":["a.C.","d.C."],"dateFormatItem-yMM":"MM/y","field-tue-relative+-1":"terça-feira passada","dayPeriods-format-wide-morning":"manhã","days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-long":"d 'de' MMMM 'de' y","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"AM","dayPeriods-format-wide-noon":"meio-dia","dateFormatItem-yMd":"dd/MM/y","field-era":"Era","dateFormatItem-yM":"MM/y","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"timeFormat-short":"HH:mm","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-yQQQQ":"y QQQQ","timeFormat-long":"HH:mm:ss z","field-year":"Ano","dateFormatItem-yMMM":"MMM 'de' y","field-hour":"Hora","dateFormatItem-MMdd":"dd/MM","months-format-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","dateFormatItem-H":"HH","months-standAlone-abbr":["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-HHmmss":"HH:mm:ss","dateFormatItem-M":"L","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"este domingo","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["a.C.","d.C."],"field-minute":"Minuto","field-dayperiod":"AM/PM","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"dayPeriods-format-wide-night":"noite","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"ontem","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"a","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso horário","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","dateFormatItem-hm":"h:mm a","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"eraNames":["Antes de Cristo","Ano do Senhor"],"dateFormatItem-yMMMd":"d 'de' MMM 'de' y","days-format-narrow":["D","S","T","Q","Q","S","S"],"days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-MMM":"LLL","field-month":"Mês","dateFormatItem-HHmm":"HH:mm","field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","dayPeriods-format-wide-am":"AM","dateFormatItem-EHm":"E, HH:mm","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"dd/MM/yy","dayPeriods-format-wide-afternoon":"tarde","dateFormatItem-EHms":"E, HH:mm:ss","dateFormatItem-Ehms":"E, h:mm:ss a","field-second":"Segundo","field-sat-relative+-1":"sábado passado","dateFormatItem-yMMMEd":"E, d 'de' MMM 'de' y","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Semana","dateFormat-medium":"d 'de' MMM 'de' y","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","field-year-relative+1":"próximo ano","dayPeriods-format-narrow-pm":"p","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
+define("dojo/cldr/nls/pt/gregorian",{"dateFormatItem-yMMMM":"MMMM 'de' y","field-thu-narrow-relative+0":"esta qui.","field-thu-narrow-relative+1":"próxima qui.","field-sun-narrow-relative+0":"este dom.","field-sun-narrow-relative+1":"próximo dom.","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"esta sex.","field-fri-narrow-relative+1":"próxima sex.","eraNarrow":["a.C.","d.C."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d 'de' MMM 'de' y","dayPeriods-format-abbr-night1":"da madrugada","dayPeriods-format-narrow-evening1":"da noite","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dayPeriods-format-abbr-afternoon1":"da tarde","dayPeriods-format-wide-evening1":"da noite","dateFormatItem-Ehm":"E, h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"qua. passada","dayPeriods-standAlone-wide-evening1":"noite","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yMM":"MM/y","field-month-short-relative+0":"este mês","field-month-short-relative+1":"próximo mês","dateFormatItem-Ehms":"E, h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"noite","dayPeriods-standAlone-abbr-afternoon1":"tarde","field-thu-relative+0":"esta quinta-feira","dayPeriods-standAlone-abbr-night1":"madrugada","field-thu-relative+1":"próxima quinta-feira","dayPeriods-format-wide-am":"AM","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","dateFormatItem-yMd":"dd/MM/y","field-thu-narrow-relative+-1":"qui. passada","field-quarter-relative+0":"este trimestre","field-quarter-relative+1":"próximo trimestre","field-sun-short-relative+0":"este dom.","timeFormat-short":"HH:mm","field-sun-short-relative+1":"próximo dom.","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"da tarde","dateFormatItem-Md":"d/M","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"sem.","field-hour-relative+0":"esta hora","field-day-relative+-1":"ontem","field-day-relative+-2":"anteontem","field-mon-narrow-relative+-1":"seg. passada","field-minute-narrow":"min.","dateFormatItem-MMMMEd":"E, d 'de' MMMM","field-thu-short-relative+0":"esta qui.","field-mon-relative+0":"esta segunda-feira","field-thu-short-relative+1":"próxima qui.","field-mon-relative+1":"próxima segunda-feira","field-era-short":"era","field-sat-narrow-relative+0":"este sáb.","field-day-narrow-relative+2":"depois de amanhã","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"próximo sáb.","field-week-narrow-relative+0":"esta semana","field-week-narrow-relative+1":"próxima semana","field-wed-narrow-relative+0":"esta qua.","field-wed-narrow-relative+1":"próxima qua.","field-month":"mês","months-standAlone-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"field-weekday-narrow":"dia da sem.","dayPeriods-standAlone-narrow-afternoon1":"tarde","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","dayPeriods-format-abbr-evening1":"da noite","dayPeriods-format-abbr-noon":"meio-dia","dayPeriods-format-narrow-midnight":"meia-noite","dayPeriods-format-wide-midnight":"meia-noite","field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","dayPeriods-standAlone-abbr-evening1":"noite","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"meia-noite","field-year-narrow":"ano","dayPeriods-standAlone-abbr-noon":"meio-dia","field-tue-short-relative+0":"esta ter.","dayPeriods-standAlone-narrow-midnight":"meia-noite","field-tue-short-relative+1":"próxima ter.","field-tue-narrow-relative+0":"esta ter.","field-tue-narrow-relative+1":"próxima ter.","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-M":"L","field-wed-short-relative+0":"esta qua.","field-fri-short-relative+0":"esta sex.","field-wed-short-relative+1":"próxima qua.","field-fri-short-relative+1":"próxima sex.","field-weekOfMonth-short":"sem. do mês","field-quarter-short-relative+-1":"último trimestre","field-year-short-relative+-1":"ano passado","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"da madrugada","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"último trimestre","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-weekOfMonth-narrow":"sem. do mês","dateFormatItem-y":"y","field-minute-relative+0":"este minuto","field-year-short-relative+0":"este ano","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"próximo ano","field-weekday":"dia da semana","dayPeriods-format-narrow-pm":"PM","field-tue-narrow-relative+-1":"ter. passada","dateFormatItem-yMEd":"E, dd/MM/y","dayPeriods-standAlone-wide-night1":"madrugada","field-year-narrow-relative+-1":"ano passado","field-sat-relative+-1":"sábado passado","dayPeriods-format-abbr-midnight":"meia-noite","dayPeriods-format-narrow-morning1":"da manhã","dayPeriods-format-wide-morning1":"da manhã","dayPeriods-standAlone-abbr-midnight":"meia-noite","dayPeriods-standAlone-narrow-pm":"PM","dayPeriods-standAlone-wide-morning1":"manhã","field-mon-narrow-relative+0":"esta seg.","field-mon-narrow-relative+1":"próxima seg.","field-second":"segundo","dateFormatItem-yMMMEd":"E, d 'de' MMM 'de' y","field-year-relative+-1":"ano passado","field-weekdayOfMonth-short":"dia da sem. do mês","dateFormat-short":"dd/MM/y","eraNames":["antes de Cristo","depois de Cristo"],"field-second-short":"seg.","field-thu-short-relative+-1":"qui. passada","field-zone":"fuso horário","field-dayperiod-narrow":"AM/PM","field-sun-short-relative+-1":"dom. passado","dayPeriods-standAlone-narrow-morning1":"manhã","eraAbbr":["a.C.","d.C."],"field-week-short":"sem.","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"hoje","field-day-relative+1":"amanhã","field-day-relative+2":"depois de amanhã","field-dayOfYear-short":"dia do ano","dateFormat-long":"d 'de' MMMM 'de' y","field-day-short-relative+2":"depois de amanhã","field-sun-narrow-relative+-1":"dom. passado","dayPeriods-format-wide-noon":"meio-dia","field-second-relative+0":"agora","field-quarter-relative+-1":"último trimestre","dayPeriods-format-narrow-night1":"da madrugada","quarters-format-abbr":["T1","T2","T3","T4"],"dayPeriods-standAlone-wide-noon":"meio-dia","dayPeriods-standAlone-narrow-night1":"madrugada","field-week-relative+-1":"semana passada","dayPeriods-format-abbr-morning1":"da manhã","field-month-relative+-1":"mês passado","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year":"ano","field-era":"era","dayPeriods-standAlone-abbr-morning1":"manhã","days-standAlone-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ 'de' y","field-day-short-relative+-2":"anteontem","dateFormatItem-GyMMM":"MMM 'de' y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"hora","field-dayOfYear-narrow":"dia do ano","field-quarter":"trimestre","field-month-narrow-relative+0":"este mês","field-month-narrow-relative+1":"próximo mês","dateFormatItem-MMdd":"dd/MM","field-day":"dia","field-mon-relative+-1":"segunda-feira passada","field-dayOfYear":"dia do ano","dateFormat-medium":"d 'de' MMM 'de' y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"MMM 'de' y","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","dateFormatItem-MEd":"E, dd/MM","field-tue-short-relative+-1":"ter. passada","field-year-short":"ano","field-month-short":"mês","dateFormatItem-MMMEd":"E, d 'de' MMM","dayPeriods-format-wide-afternoon1":"da tarde","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-Bh":"h B","months-format-abbr":["jan.","fev.","mar.","abr.","mai.","jun.","jul.","ago.","set.","out.","nov.","dez."],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","dayPeriods-format-wide-pm":"PM","field-zone-short":"fuso","days-standAlone-abbr":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"field-week-short-relative+0":"esta semana","dateFormatItem-yMMMMd":"d 'de' MMMM 'de' y","field-week-short-relative+1":"próxima semana","dayPeriods-standAlone-wide-afternoon1":"tarde","field-fri-short-relative+-1":"sex. passada","field-month-narrow":"mês","dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"mês passado","days-format-abbr":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"field-weekday-short":"dia da sem.","field-day-narrow-relative+-2":"anteontem","field-quarter-short":"trim.","days-format-short":["dom.","seg.","ter.","qua.","qui.","sex.","sáb."],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-EHm":"E, HH:mm","field-quarter-narrow":"trim.","field-mon-short-relative+0":"esta seg.","field-mon-short-relative+1":"próxima seg.","field-dayperiod-short":"AM/PM","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"semana passada","field-thu-relative+-1":"quinta-feira passada","field-fri-narrow-relative+-1":"sex. passada","field-mon-short-relative+-1":"seg. passada","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"este trimestre","field-quarter-short-relative+1":"próximo trimestre","dateFormatItem-Ed":"E, d","field-wed-relative+-1":"quarta-feira passada","field-weekOfMonth":"semana do mês","field-weekdayOfMonth-narrow":"dia da sem. do mês","dayPeriods-standAlone-wide-am":"AM","dateFormatItem-yQQQ":"QQQ 'de' y","field-fri-relative+-1":"sexta-feira passada","field-minute":"minuto","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-day-short":"dia","field-dayperiod":"AM/PM","field-hour-short":"h","months-standAlone-abbr":["jan.","fev.","mar.","abr.","mai.","jun.","jul.","ago.","set.","out.","nov.","dez."],"field-second-narrow":"seg.","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormat-full":"EEEE, d 'de' MMMM 'de' y","field-era-narrow":"era","field-sat-short-relative+-1":"sáb. passado","dayPeriods-format-narrow-noon":"meio-dia","field-week-short-relative+-1":"semana passada","dateFormatItem-yMMMMEd":"E, d 'de' MMMM 'de' y","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"MM/y","field-sun-relative+-1":"domingo passado","field-wed-short-relative+-1":"qua. passada","field-weekdayOfMonth":"dia da semana do mês","field-quarter-narrow-relative+0":"este trimestre","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","field-quarter-narrow-relative+1":"próximo trimestre","field-sat-short-relative+0":"este sáb.","field-hour-narrow":"h","field-sat-short-relative+1":"próximo sáb.","field-year-narrow-relative+0":"este ano","field-year-narrow-relative+1":"próximo ano","dateFormatItem-Gy":"y G","field-zone-narrow":"fuso","dayPeriods-standAlone-narrow-noon":"meio-dia","field-tue-relative+-1":"terça-feira passada","field-minute-short":"min.","dateFormatItem-yw":"w'ª' 'semana' 'de' Y","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana","dateFormatItem-MMM":"LLL","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","field-sat-narrow-relative+-1":"sáb. passado","quarters-standAlone-abbr":["T1","T2","T3","T4"],"dateFormatItem-MMMMW":"W'ª' 'semana' 'de' MMMM","field-month-short-relative+-1":"mês passado","dateFormatItem-EHms":"E, HH:mm:ss","dateFormatItem-MMMMd":"d 'de' MMMM","field-week":"semana","field-day-narrow":"dia"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/hebrew.js b/lib/dojo/cldr/nls/pt/hebrew.js
deleted file mode 100644
index 6726d4cfc..000000000
--- a/lib/dojo/cldr/nls/pt/hebrew.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/pt/hebrew",{"days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"field-second-relative+0":"agora","field-weekday":"Dia da semana","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-tue-relative+-1":"terça-feira passada","days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","months-format-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","months-standAlone-wide":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-year":"Ano","field-hour":"Hora","months-format-abbr-leap":"Adar II","months-format-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","months-standAlone-abbr":["Tishri","Heshvan","Kislev","Tevet","Shevat","Adar I","Adar","Nisan","Iyar","Sivan","Tamuz","Av","Elul"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d 'de' MMM 'de' y G","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MMM 'de' y G","dateFormatItem-yyyyMMMd":"d 'de' MMM 'de' y G","months-standAlone-wide-leap":"Adar II","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"field-minute":"Minuto","field-dayperiod":"AM/PM","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"field-day-relative+-1":"ontem","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso horário","months-standAlone-abbr-leap":"Adar II","dateFormatItem-y":"y G","field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Segundo","field-sat-relative+-1":"sábado passado","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","field-week":"Semana","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","dateFormatItem-yyyyM":"MM/y GGGGG","field-year-relative+1":"próximo ano","months-format-wide-leap":"Adar II","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/indian.js b/lib/dojo/cldr/nls/pt/indian.js
deleted file mode 100644
index 3c356f235..000000000
--- a/lib/dojo/cldr/nls/pt/indian.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/pt/indian",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-dayperiod":"AM/PM","field-sun-relative+-1":"domingo passado","field-mon-relative+-1":"segunda-feira passada","field-minute":"Minuto","field-day-relative+-1":"ontem","field-weekday":"Dia da semana","field-day-relative+-2":"anteontem","field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","months-standAlone-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-wed-relative+-1":"quarta-feira passada","field-day-relative+0":"hoje","field-day-relative+1":"amanhã","field-day-relative+2":"depois de amanhã","field-tue-relative+0":"esta terça-feira","field-zone":"Fuso horário","field-tue-relative+1":"próxima terça-feira","field-week-relative+-1":"semana passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-sat-relative+-1":"sábado passado","field-year-relative+-1":"ano passado","field-year":"Ano","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","months-standAlone-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana","months-format-abbr":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-month-relative+0":"este mês","field-month":"Mês","field-month-relative+1":"próximo mês","field-fri-relative+-1":"sexta-feira passada","field-second":"Segundo","field-tue-relative+-1":"terça-feira passada","field-day":"Dia","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-thu-relative+0":"esta quinta-feira","field-second-relative+0":"agora","field-thu-relative+1":"próxima quinta-feira","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-month-relative+-1":"mês passado","field-thu-relative+-1":"quinta-feira passada"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/islamic.js b/lib/dojo/cldr/nls/pt/islamic.js
deleted file mode 100644
index be6c07449..000000000
--- a/lib/dojo/cldr/nls/pt/islamic.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/pt/islamic",{"days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"field-second-relative+0":"agora","field-weekday":"Dia da semana","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-tue-relative+-1":"terça-feira passada","days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-year":"Ano","field-hour":"Hora","field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d 'de' MMM 'de' y G","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MMM 'de' y G","dateFormatItem-yyyyMMMd":"d 'de' MMM 'de' y G","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"eraAbbr":["AH"],"field-minute":"Minuto","field-dayperiod":"AM/PM","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"field-day-relative+-1":"ontem","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso horário","dateFormatItem-y":"y G","field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Segundo","field-sat-relative+-1":"sábado passado","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","field-week":"Semana","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","dateFormatItem-yyyyM":"MM/y GGGGG","field-year-relative+1":"próximo ano","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/japanese.js b/lib/dojo/cldr/nls/pt/japanese.js
index 4d57a6cd7..c62abdb51 100644
--- a/lib/dojo/cldr/nls/pt/japanese.js
+++ b/lib/dojo/cldr/nls/pt/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt/japanese",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-dayperiod":"AM/PM","field-sun-relative+-1":"domingo passado","field-mon-relative+-1":"segunda-feira passada","field-minute":"Minuto","field-day-relative+-1":"ontem","field-weekday":"Dia da semana","field-day-relative+-2":"anteontem","field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","field-wed-relative+-1":"quarta-feira passada","field-day-relative+0":"hoje","field-day-relative+1":"amanhã","field-day-relative+2":"depois de amanhã","dateFormat-long":"d 'de' MMMM 'de' y G","field-tue-relative+0":"esta terça-feira","field-zone":"Fuso horário","field-tue-relative+1":"próxima terça-feira","field-week-relative+-1":"semana passada","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-sat-relative+-1":"sábado passado","field-year-relative+-1":"ano passado","field-year":"Ano","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana","field-month-relative+0":"este mês","field-month":"Mês","field-month-relative+1":"próximo mês","field-fri-relative+-1":"sexta-feira passada","field-second":"Segundo","field-tue-relative+-1":"terça-feira passada","field-day":"Dia","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-thu-relative+0":"esta quinta-feira","field-second-relative+0":"agora","dateFormat-short":"dd/MM/yy GGGGG","field-thu-relative+1":"próxima quinta-feira","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-month-relative+-1":"mês passado","field-thu-relative+-1":"quinta-feira passada"}); \ No newline at end of file
+define("dojo/cldr/nls/pt/japanese",{"field-quarter-short-relative+0":"este trimestre","field-quarter-short-relative+1":"próximo trimestre","field-tue-relative+-1":"terça-feira passada","field-year":"ano","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-minute":"minuto","field-month-narrow-relative+-1":"mês passado","field-tue-narrow-relative+0":"esta ter.","field-tue-narrow-relative+1":"próxima ter.","field-thu-short-relative+0":"esta qui.","field-thu-short-relative+1":"próxima qui.","field-day-relative+0":"hoje","field-day-short-relative+-2":"anteontem","field-day-relative+1":"amanhã","field-week-narrow-relative+0":"esta semana","field-day-relative+2":"depois de amanhã","field-week-narrow-relative+1":"próxima semana","field-wed-narrow-relative+-1":"qua. passada","field-year-narrow":"ano","field-era-short":"era","field-year-narrow-relative+0":"este ano","field-tue-relative+0":"esta terça-feira","field-year-narrow-relative+1":"próximo ano","field-tue-relative+1":"próxima terça-feira","field-weekdayOfMonth":"dia da semana do mês","field-second-short":"seg.","field-weekdayOfMonth-narrow":"dia da sem. do mês","field-week-relative+0":"esta semana","field-month-relative+0":"este mês","field-week-relative+1":"próxima semana","field-month-relative+1":"próximo mês","field-sun-narrow-relative+0":"este dom.","field-mon-short-relative+0":"esta seg.","field-sun-narrow-relative+1":"próximo dom.","field-mon-short-relative+1":"próxima seg.","field-second-relative+0":"agora","field-weekOfMonth":"semana do mês","field-month-short":"mês","field-day":"dia","field-dayOfYear-short":"dia do ano","field-year-relative+-1":"ano passado","field-sat-short-relative+-1":"sáb. passado","field-hour-relative+0":"esta hora","field-wed-relative+-1":"quarta-feira passada","field-sat-narrow-relative+-1":"sáb. passado","field-second":"segundo","dateFormat-long":"d 'de' MMMM 'de' y G","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+2":"depois de amanhã","field-tue-short-relative+0":"esta ter.","field-tue-short-relative+1":"próxima ter.","field-month-short-relative+-1":"mês passado","field-mon-relative+-1":"segunda-feira passada","field-month":"mês","field-day-narrow":"dia","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"próximo sáb.","dateFormat-medium":"dd/MM/y G","field-second-narrow":"seg.","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-year-short":"ano","field-day-narrow-relative+-2":"anteontem","field-quarter-relative+-1":"último trimestre","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"semana passada","field-dayOfYear":"dia do ano","field-sat-relative+-1":"sábado passado","field-hour":"hora","dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","field-month-relative+-1":"mês passado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este sáb.","field-fri-relative+0":"esta sexta-feira","field-sat-narrow-relative+1":"próximo sáb.","field-fri-relative+1":"próxima sexta-feira","field-month-narrow-relative+0":"este mês","field-month-narrow-relative+1":"próximo mês","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"próximo dom.","field-week-relative+-1":"semana passada","field-quarter-short-relative+-1":"último trimestre","field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"próximo trimestre","field-wed-short-relative+-1":"qua. passada","dateFormat-short":"dd/MM/yy GGGGG","field-thu-short-relative+-1":"qui. passada","field-year-narrow-relative+-1":"ano passado","field-mon-narrow-relative+-1":"seg. passada","field-thu-narrow-relative+-1":"qui. passada","field-tue-narrow-relative+-1":"ter. passada","field-weekOfMonth-short":"sem. do mês","field-wed-short-relative+0":"esta qua.","field-wed-short-relative+1":"próxima qua.","field-sun-relative+-1":"domingo passado","field-weekday":"dia da semana","field-quarter-narrow-relative+0":"este trimestre","field-sat-relative+0":"este sábado","field-quarter-narrow-relative+1":"próximo trimestre","field-sat-relative+1":"próximo sábado","field-day-short-relative+2":"depois de amanhã","field-week-short-relative+0":"esta semana","field-week-short-relative+1":"próxima semana","field-dayOfYear-narrow":"dia do ano","field-month-short-relative+0":"este mês","field-month-short-relative+1":"próximo mês","field-weekdayOfMonth-short":"dia da sem. do mês","field-zone-narrow":"fuso","field-thu-narrow-relative+0":"esta qui.","field-thu-narrow-relative+1":"próxima qui.","field-sun-narrow-relative+-1":"dom. passado","field-mon-short-relative+-1":"seg. passada","field-thu-relative+0":"esta quinta-feira","field-thu-relative+1":"próxima quinta-feira","field-fri-short-relative+-1":"sex. passada","field-thu-relative+-1":"quinta-feira passada","field-week":"semana","field-wed-narrow-relative+0":"esta qua.","field-wed-narrow-relative+1":"próxima qua.","field-quarter-narrow-relative+-1":"último trimestre","field-year-short-relative+0":"este ano","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"próximo ano","field-fri-short-relative+0":"esta sex.","field-fri-short-relative+1":"próxima sex.","field-week-short-relative+-1":"semana passada","field-hour-short":"h","field-zone-short":"fuso","field-month-narrow":"mês","field-hour-narrow":"h","field-fri-narrow-relative+-1":"sex. passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-era-narrow":"era","field-fri-relative+-1":"sexta-feira passada","field-tue-short-relative+-1":"ter. passada","field-minute-narrow":"min.","field-mon-narrow-relative+0":"esta seg.","field-mon-narrow-relative+1":"próxima seg.","field-year-short-relative+-1":"ano passado","field-zone":"fuso horário","field-weekOfMonth-narrow":"sem. do mês","field-weekday-narrow":"dia da sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. passado","field-day-relative+-1":"ontem","field-day-relative+-2":"anteontem","field-weekday-short":"dia da sem.","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","field-day-short":"dia","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"esta sex.","field-fri-narrow-relative+1":"próxima sex."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/number.js b/lib/dojo/cldr/nls/pt/number.js
index 89c3c9ffd..989235031 100644
--- a/lib/dojo/cldr/nls/pt/number.js
+++ b/lib/dojo/cldr/nls/pt/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000 trilhões","decimalFormat-short":"000 tri"}); \ No newline at end of file
+define("dojo/cldr/nls/pt/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 tri","nan":"NaN","plusSign":"+","currencyFormat":"¤ #,##0.00","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 trilhões","decimalFormat":"#,##0.###","currencyFormat-short":"¤ 000 tri","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/persian.js b/lib/dojo/cldr/nls/pt/persian.js
deleted file mode 100644
index 648335090..000000000
--- a/lib/dojo/cldr/nls/pt/persian.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
-
-//>>built
-define("dojo/cldr/nls/pt/persian",{"days-standAlone-short":["dom","seg","ter","qua","qui","sex","sáb"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"agora","field-weekday":"Dia da semana","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","dateFormatItem-GyMMMEd":"E, d 'de' MMM 'de' y G","dateFormatItem-MMMEd":"E, d 'de' MMM","field-tue-relative+-1":"terça-feira passada","days-format-short":["dom","seg","ter","qua","qui","sex","sáb"],"dateFormat-long":"d 'de' MMMM 'de' y G","field-fri-relative+-1":"sexta-feira passada","field-wed-relative+-1":"quarta-feira passada","months-format-wide":["janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"dateFormat-full":"EEEE, d 'de' MMMM 'de' y G","dateFormatItem-yyyyMEd":"E, dd/MM/y GGGGG","field-thu-relative+-1":"quinta-feira passada","dateFormatItem-Md":"d/M","dayPeriods-format-wide-noon":"meio-dia","field-era":"Era","months-standAlone-wide":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"quarters-format-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"field-year":"Ano","field-hour":"Hora","months-format-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-day-relative+0":"hoje","field-thu-relative+0":"esta quinta-feira","field-day-relative+1":"amanhã","field-thu-relative+1":"próxima quinta-feira","dateFormatItem-GyMMMd":"d 'de' MMM 'de' y G","field-day-relative+2":"depois de amanhã","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"quarters-format-abbr":["T1","T2","T3","T4"],"quarters-standAlone-wide":["1º trimestre","2º trimestre","3º trimestre","4º trimestre"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d 'de' MMM 'de' y G","days-standAlone-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"dateFormatItem-yyyyMMM":"MMM 'de' y G","dateFormatItem-yyyyMMMd":"d 'de' MMM 'de' y G","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","quarters-standAlone-abbr":["T1","T2","T3","T4"],"field-minute":"Minuto","field-dayperiod":"AM/PM","days-standAlone-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"field-day-relative+-1":"ontem","field-day-relative+-2":"anteontem","dateFormatItem-MMMd":"d 'de' MMM","dateFormatItem-MEd":"E, dd/MM","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-day":"Dia","days-format-wide":["domingo","segunda-feira","terça-feira","quarta-feira","quinta-feira","sexta-feira","sábado"],"field-zone":"Fuso horário","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"ano passado","field-month-relative+-1":"mês passado","days-format-abbr":["dom","seg","ter","qua","qui","sex","sáb"],"days-format-narrow":["D","S","T","Q","Q","S","S"],"dateFormatItem-yyyyMd":"dd/MM/y GGGGG","field-month":"Mês","days-standAlone-narrow":["D","S","T","Q","Q","S","S"],"field-tue-relative+0":"esta terça-feira","field-tue-relative+1":"próxima terça-feira","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","dateFormat-short":"dd/MM/yy GGGGG","field-second":"Segundo","field-sat-relative+-1":"sábado passado","field-sun-relative+-1":"domingo passado","field-month-relative+0":"este mês","field-month-relative+1":"próximo mês","dateFormatItem-Ed":"E, d","field-week":"Semana","dateFormat-medium":"dd/MM/y G","field-year-relative+0":"este ano","field-week-relative+-1":"semana passada","dateFormatItem-yyyyM":"MM/y GGGGG","field-year-relative+1":"próximo ano","dateFormatItem-GyMMM":"MMM 'de' y G","field-mon-relative+-1":"segunda-feira passada","dateFormatItem-yyyy":"y G","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/pt/roc.js b/lib/dojo/cldr/nls/pt/roc.js
index 9ce482c5d..1dabc8c98 100644
--- a/lib/dojo/cldr/nls/pt/roc.js
+++ b/lib/dojo/cldr/nls/pt/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/pt/roc",{"field-sat-relative+0":"este sábado","field-sat-relative+1":"próximo sábado","field-dayperiod":"AM/PM","field-sun-relative+-1":"domingo passado","field-mon-relative+-1":"segunda-feira passada","field-minute":"Minuto","field-day-relative+-1":"ontem","field-weekday":"Dia da semana","field-day-relative+-2":"anteontem","field-era":"Era","field-hour":"Hora","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","field-wed-relative+-1":"quarta-feira passada","field-day-relative+0":"hoje","field-day-relative+1":"amanhã","eraAbbr":["Antes de R.O.C.","R.O.C."],"field-day-relative+2":"depois de amanhã","field-tue-relative+0":"esta terça-feira","field-zone":"Fuso horário","field-tue-relative+1":"próxima terça-feira","field-week-relative+-1":"semana passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-sat-relative+-1":"sábado passado","field-year-relative+-1":"ano passado","field-year":"Ano","field-fri-relative+0":"esta sexta-feira","field-fri-relative+1":"próxima sexta-feira","field-week":"Semana","field-week-relative+0":"esta semana","field-week-relative+1":"próxima semana","field-month-relative+0":"este mês","field-month":"Mês","field-month-relative+1":"próximo mês","field-fri-relative+-1":"sexta-feira passada","field-second":"Segundo","field-tue-relative+-1":"terça-feira passada","field-day":"Dia","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-thu-relative+0":"esta quinta-feira","field-second-relative+0":"agora","field-thu-relative+1":"próxima quinta-feira","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-month-relative+-1":"mês passado","field-thu-relative+-1":"quinta-feira passada"}); \ No newline at end of file
+define("dojo/cldr/nls/pt/roc",{"field-quarter-short-relative+0":"este trimestre","field-quarter-short-relative+1":"próximo trimestre","field-tue-relative+-1":"terça-feira passada","field-year":"ano","field-wed-relative+0":"esta quarta-feira","field-wed-relative+1":"próxima quarta-feira","field-minute":"minuto","field-month-narrow-relative+-1":"mês passado","field-tue-narrow-relative+0":"esta ter.","field-tue-narrow-relative+1":"próxima ter.","field-thu-short-relative+0":"esta qui.","field-thu-short-relative+1":"próxima qui.","field-day-relative+0":"hoje","field-day-short-relative+-2":"anteontem","field-day-relative+1":"amanhã","field-week-narrow-relative+0":"esta semana","field-day-relative+2":"depois de amanhã","field-week-narrow-relative+1":"próxima semana","field-wed-narrow-relative+-1":"qua. passada","field-year-narrow":"ano","field-era-short":"era","field-year-narrow-relative+0":"este ano","field-tue-relative+0":"esta terça-feira","field-year-narrow-relative+1":"próximo ano","field-tue-relative+1":"próxima terça-feira","field-weekdayOfMonth":"dia da semana do mês","field-second-short":"seg.","field-weekdayOfMonth-narrow":"dia da sem. do mês","field-week-relative+0":"esta semana","field-month-relative+0":"este mês","field-week-relative+1":"próxima semana","field-month-relative+1":"próximo mês","field-sun-narrow-relative+0":"este dom.","field-mon-short-relative+0":"esta seg.","field-sun-narrow-relative+1":"próximo dom.","field-mon-short-relative+1":"próxima seg.","field-second-relative+0":"agora","eraNames":["Antes da R.C.","Minguo"],"field-weekOfMonth":"semana do mês","field-month-short":"mês","field-day":"dia","field-dayOfYear-short":"dia do ano","field-year-relative+-1":"ano passado","field-sat-short-relative+-1":"sáb. passado","field-hour-relative+0":"esta hora","field-wed-relative+-1":"quarta-feira passada","field-sat-narrow-relative+-1":"sáb. passado","field-second":"segundo","field-quarter":"trimestre","field-week-short":"sem.","field-day-narrow-relative+2":"depois de amanhã","field-tue-short-relative+0":"esta ter.","field-tue-short-relative+1":"próxima ter.","field-month-short-relative+-1":"mês passado","field-mon-relative+-1":"segunda-feira passada","field-month":"mês","field-day-narrow":"dia","field-minute-short":"min.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"este sáb.","field-sat-short-relative+1":"próximo sáb.","eraAbbr":["Antes da R.C.","Minguo"],"field-second-narrow":"seg.","field-mon-relative+0":"esta segunda-feira","field-mon-relative+1":"próxima segunda-feira","field-year-short":"ano","field-day-narrow-relative+-2":"anteontem","field-quarter-relative+-1":"último trimestre","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"semana passada","field-dayOfYear":"dia do ano","field-sat-relative+-1":"sábado passado","field-hour":"hora","field-month-relative+-1":"mês passado","field-quarter-short":"trim.","field-sat-narrow-relative+0":"este sáb.","field-fri-relative+0":"esta sexta-feira","field-sat-narrow-relative+1":"próximo sáb.","field-fri-relative+1":"próxima sexta-feira","field-month-narrow-relative+0":"este mês","field-month-narrow-relative+1":"próximo mês","field-sun-short-relative+0":"este dom.","field-sun-short-relative+1":"próximo dom.","field-week-relative+-1":"semana passada","field-quarter-short-relative+-1":"último trimestre","field-quarter-relative+0":"este trimestre","field-minute-relative+0":"este minuto","field-quarter-relative+1":"próximo trimestre","field-wed-short-relative+-1":"qua. passada","field-thu-short-relative+-1":"qui. passada","field-year-narrow-relative+-1":"ano passado","field-mon-narrow-relative+-1":"seg. passada","field-thu-narrow-relative+-1":"qui. passada","field-tue-narrow-relative+-1":"ter. passada","field-weekOfMonth-short":"sem. do mês","field-wed-short-relative+0":"esta qua.","field-wed-short-relative+1":"próxima qua.","field-sun-relative+-1":"domingo passado","field-weekday":"dia da semana","field-quarter-narrow-relative+0":"este trimestre","field-sat-relative+0":"este sábado","field-quarter-narrow-relative+1":"próximo trimestre","field-sat-relative+1":"próximo sábado","field-day-short-relative+2":"depois de amanhã","field-week-short-relative+0":"esta semana","field-week-short-relative+1":"próxima semana","field-dayOfYear-narrow":"dia do ano","field-month-short-relative+0":"este mês","field-month-short-relative+1":"próximo mês","field-weekdayOfMonth-short":"dia da sem. do mês","field-zone-narrow":"fuso","field-thu-narrow-relative+0":"esta qui.","field-thu-narrow-relative+1":"próxima qui.","field-sun-narrow-relative+-1":"dom. passado","field-mon-short-relative+-1":"seg. passada","field-thu-relative+0":"esta quinta-feira","field-thu-relative+1":"próxima quinta-feira","field-fri-short-relative+-1":"sex. passada","field-thu-relative+-1":"quinta-feira passada","field-week":"semana","field-wed-narrow-relative+0":"esta qua.","field-wed-narrow-relative+1":"próxima qua.","field-quarter-narrow-relative+-1":"último trimestre","field-year-short-relative+0":"este ano","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"próximo ano","field-fri-short-relative+0":"esta sex.","field-fri-short-relative+1":"próxima sex.","field-week-short-relative+-1":"semana passada","field-hour-short":"h","field-zone-short":"fuso","field-month-narrow":"mês","field-hour-narrow":"h","field-fri-narrow-relative+-1":"sex. passada","field-year-relative+0":"este ano","field-year-relative+1":"próximo ano","field-era-narrow":"era","field-fri-relative+-1":"sexta-feira passada","eraNarrow":["Antes da R.C.","Minguo"],"field-tue-short-relative+-1":"ter. passada","field-minute-narrow":"min.","field-mon-narrow-relative+0":"esta seg.","field-mon-narrow-relative+1":"próxima seg.","field-year-short-relative+-1":"ano passado","field-zone":"fuso horário","field-weekOfMonth-narrow":"sem. do mês","field-weekday-narrow":"dia da sem.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dom. passado","field-day-relative+-1":"ontem","field-day-relative+-2":"anteontem","field-weekday-short":"dia da sem.","field-sun-relative+0":"este domingo","field-sun-relative+1":"próximo domingo","field-day-short":"dia","field-week-narrow":"sem.","field-era":"era","field-fri-narrow-relative+0":"esta sex.","field-fri-narrow-relative+1":"próxima sex."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/buddhist.js b/lib/dojo/cldr/nls/ro/buddhist.js
index a45dcdc9e..40390bd5c 100644
--- a/lib/dojo/cldr/nls/ro/buddhist.js
+++ b/lib/dojo/cldr/nls/ro/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ro/buddhist",{"days-standAlone-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"months-format-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"field-second-relative+0":"acum","field-weekday":"Zi a săptămânii","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","eraNarrow":["e.b."],"field-tue-relative+-1":"marțea trecută","days-format-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"vinerea trecută","field-wed-relative+-1":"miercurea trecută","months-format-wide":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-thu-relative+-1":"joia trecută","dateFormatItem-Md":"dd.MM","field-era":"Eră","months-standAlone-wide":["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],"quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"field-year":"An","field-hour":"Oră","months-format-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"field-sat-relative+0":"sâmbăta aceasta","field-sat-relative+1":"sâmbăta viitoare","field-day-relative+0":"azi","field-thu-relative+0":"joia aceasta","field-day-relative+1":"mâine","field-thu-relative+1":"joia viitoare","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"poimâine","months-standAlone-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"quarters-standAlone-wide":["Trimestrul I","Trimestrul al II-lea","Trimestrul al III-lea","Trimestrul al IV-lea"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Duminică","Luni","Marți","Miercuri","Joi","Vineri","Sâmbătă"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","quarters-standAlone-abbr":["Trim. I","Trim. II","Trim. III","Trim. IV"],"eraAbbr":["e.b."],"field-minute":"Minut","field-dayperiod":"a.m/p.m.","days-standAlone-abbr":["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],"field-day-relative+-1":"ieri","dateTimeFormat-long":"{1} 'la' {0}","field-day-relative+-2":"alaltăieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1} 'la' {0}","field-fri-relative+0":"vinerea aceasta","field-fri-relative+1":"vinerea viitoare","field-day":"Zi","days-format-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"field-zone":"Fus orar","dateFormatItem-y":"y","months-standAlone-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"field-year-relative+-1":"anul trecut","field-month-relative+-1":"luna trecută","days-format-abbr":["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],"eraNames":["era budistă"],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yyyyMd":"dd.MM.y G","field-month":"Lună","days-standAlone-narrow":["D","L","M","M","J","V","S"],"field-tue-relative+0":"marțea aceasta","field-tue-relative+1":"marțea viitoare","dayPeriods-format-wide-am":"a.m.","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","dateFormat-short":"dd.MM.y GGGGG","field-second":"Secundă","field-sat-relative+-1":"sâmbăta trecută","field-sun-relative+-1":"duminica trecută","field-month-relative+0":"luna aceasta","field-month-relative+1":"luna viitoare","dateFormatItem-Ed":"E d","field-week":"Săptămână","dateFormat-medium":"dd.MM.y G","field-year-relative+0":"anul acesta","field-week-relative+-1":"săptămâna trecută","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"anul viitor","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lunea trecută","dateFormatItem-yyyy":"y G","field-week-relative+0":"săptămâna aceasta","field-week-relative+1":"săptămâna viitoare"}); \ No newline at end of file
+define("dojo/cldr/nls/ro/buddhist",{"field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","field-tue-relative+-1":"marțea trecută","field-year":"an","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-minute":"minut","field-month-narrow-relative+-1":"luna trecută","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","field-thu-short-relative+0":"joia aceasta","field-day-short-relative+-1":"ieri","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"joia viitoare","field-day-relative+0":"azi","field-day-short-relative+-2":"alaltăieri","field-day-relative+1":"mâine","field-week-narrow-relative+0":"săpt. aceasta","field-day-relative+2":"poimâine","field-week-narrow-relative+1":"săpt. viitoare","field-wed-narrow-relative+-1":"mi. trecută","field-year-narrow":"an","field-era-short":"eră","field-year-narrow-relative+0":"anul acesta","field-tue-relative+0":"marțea aceasta","field-year-narrow-relative+1":"anul viitor","field-tue-relative+1":"marțea viitoare","field-weekdayOfMonth":"ziua săptămânii din lună","field-second-short":"sec.","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"ziua săpt. din lună","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"săptămâna aceasta","field-month-relative+0":"luna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+1":"luna viitoare","field-sun-narrow-relative+0":"du. aceasta","field-mon-short-relative+0":"lun. aceasta","field-sun-narrow-relative+1":"du. viitoare","field-mon-short-relative+1":"lun. viitoare","field-second-relative+0":"acum","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"eraNames":["era budistă"],"field-weekOfMonth":"săptămâna din lună","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"lună","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"dd.MM.y G","field-day":"zi","field-dayOfYear-short":"ziua din an","field-year-relative+-1":"anul trecut","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"sâm. trecută","field-hour-relative+0":"ora aceasta","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-second-short-relative+0":"acum","field-wed-relative+-1":"miercurea trecută","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"sâ. trecută","field-second":"secundă","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"ora aceasta","field-quarter":"trimestru","field-week-short":"săpt.","field-day-narrow-relative+0":"azi","field-day-narrow-relative+1":"mâine","field-day-narrow-relative+2":"poimâine","quarters-standAlone-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-tue-short-relative+0":"mar. aceasta","field-tue-short-relative+1":"mar. viitoare","field-month-short-relative+-1":"luna trecută","field-mon-relative+-1":"lunea trecută","dateFormatItem-GyMMM":"MMM y G","field-month":"lună","field-day-narrow":"zi","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"a.m/p.m.","field-sat-short-relative+0":"sâm. aceasta","field-sat-short-relative+1":"sâm. viitoare","dayPeriods-format-narrow-pm":"p.m.","dateFormat-medium":"dd.MM.y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["e.b."],"quarters-standAlone-abbr":["trim. I","trim. II","trim. III","trim. IV"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"s","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+-1":"ieri","field-year-short":"an","field-day-narrow-relative+-2":"alaltăieri","months-format-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"field-quarter-relative+-1":"trimestrul trecut","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m/p.m.","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"săpt. trecută","days-format-short":["du.","lu.","ma.","mi.","joi","vi.","sâ."],"quarters-format-narrow":["I","II","III","IV"],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"ziua din an","field-sat-relative+-1":"sâmbăta trecută","dateTimeFormat-long":"{1} 'la' {0}","dateFormatItem-Md":"dd.MM","field-minute-narrow-relative+0":"minutul acesta","field-hour":"oră","months-format-wide":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"luna trecută","field-quarter-short":"trim.","field-sat-narrow-relative+0":"sâ. aceasta","field-fri-relative+0":"vinerea aceasta","field-sat-narrow-relative+1":"sâ. viitoare","field-fri-relative+1":"vinerea viitoare","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","field-sun-short-relative+0":"dum. aceasta","field-sun-short-relative+1":"dum. viitoare","field-week-relative+-1":"săptămâna trecută","field-quarter-short-relative+-1":"trim. trecut","field-minute-short-relative+0":"minutul acesta","months-format-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"field-quarter-relative+0":"trimestrul acesta","field-minute-relative+0":"minutul acesta","field-quarter-relative+1":"trimestrul viitor","field-wed-short-relative+-1":"mie. trecută","dateFormat-short":"dd.MM.y GGGGG","field-thu-short-relative+-1":"joia trecută","field-year-narrow-relative+-1":"anul trecut","days-standAlone-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"lu. trecută","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jo. trecută","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"ma. trecută","field-weekOfMonth-short":"săpt. din lună","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-M":"L","field-wed-short-relative+0":"mie. aceasta","months-standAlone-wide":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],"field-wed-short-relative+1":"mie. viitoare","field-sun-relative+-1":"duminica trecută","dateFormatItem-MMMMEd":"E, d MMMM","days-standAlone-abbr":["dum.","lun.","mar.","mie.","joi","vin.","sâm."],"dateTimeFormat-full":"{1} 'la' {0}","field-second-narrow-relative+0":"acum","dateFormatItem-d":"d","field-weekday":"ziua din săptămână","field-day-short-relative+0":"azi","field-quarter-narrow-relative+0":"trim. acesta","field-day-short-relative+1":"mâine","field-sat-relative+0":"sâmbăta aceasta","field-quarter-narrow-relative+1":"trim. viitor","field-day-short-relative+2":"poimâine","field-sat-relative+1":"sâmbăta viitoare","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","months-standAlone-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"field-dayOfYear-narrow":"ziua din an","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","field-weekdayOfMonth-short":"ziua săpt. din lună","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"fus","dateFormatItem-y":"y","field-thu-narrow-relative+0":"jo. aceasta","field-sun-narrow-relative+-1":"du. trecută","field-mon-short-relative+-1":"lun. trecută","field-thu-narrow-relative+1":"jo. viitoare","field-thu-relative+0":"joia aceasta","field-thu-relative+1":"joia viitoare","field-fri-short-relative+-1":"vin. trecută","field-thu-relative+-1":"joia trecută","field-week":"săptămână","quarters-standAlone-narrow":["I","II","III","IV"],"quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-quarter-narrow-relative+-1":"trim. trecut","field-year-short-relative+0":"anul acesta","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m/p.m.","field-year-short-relative+1":"anul viitor","field-fri-short-relative+0":"vin. aceasta","field-fri-short-relative+1":"vin. viitoare","days-standAlone-short":["du.","lu.","ma.","mi.","joi","vi.","sâ."],"field-week-short-relative+-1":"săpt. trecută","field-hour-narrow-relative+0":"ora aceasta","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fus","quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"field-month-narrow":"lună","field-hour-narrow":"h","field-fri-narrow-relative+-1":"vi. trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-era-narrow":"eră","field-fri-relative+-1":"vinerea trecută","eraNarrow":"e.b.","field-tue-short-relative+-1":"mar. trecută","field-minute-narrow":"m","days-format-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"field-mon-narrow-relative+0":"lu. aceasta","field-mon-narrow-relative+1":"lu. viitoare","field-year-short-relative+-1":"anul trecut","field-zone":"fus orar","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"săpt. din lună","field-weekday-narrow":"ziua din săpt.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dum. trecută","field-day-relative+-1":"ieri","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"alaltăieri","field-weekday-short":"ziua din săpt.","days-format-abbr":["dum.","lun.","mar.","mie.","joi","vin.","sâm."],"field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","dateFormatItem-Gy":"y G","field-day-short":"zi","field-week-narrow":"săpt.","field-era":"eră","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/chinese.js b/lib/dojo/cldr/nls/ro/chinese.js
index e692c0ade..ff85c3c08 100644
--- a/lib/dojo/cldr/nls/ro/chinese.js
+++ b/lib/dojo/cldr/nls/ro/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ro/chinese",{"field-sat-relative+0":"sâmbăta aceasta","field-sat-relative+1":"sâmbăta viitoare","field-dayperiod":"a.m/p.m.","field-sun-relative+-1":"duminica trecută","field-mon-relative+-1":"lunea trecută","field-minute":"Minut","field-day-relative+-1":"ieri","field-weekday":"Zi a săptămânii","field-day-relative+-2":"alaltăieri","field-era":"Eră","field-hour":"Oră","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+-1":"miercurea trecută","field-day-relative+0":"azi","field-day-relative+1":"mâine","field-day-relative+2":"poimâine","field-tue-relative+0":"marțea aceasta","field-zone":"Fus orar","field-tue-relative+1":"marțea viitoare","field-week-relative+-1":"săptămâna trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-sat-relative+-1":"sâmbăta trecută","field-year-relative+-1":"anul trecut","field-year":"An","field-fri-relative+0":"vinerea aceasta","field-fri-relative+1":"vinerea viitoare","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-week":"Săptămână","field-week-relative+0":"săptămâna aceasta","field-week-relative+1":"săptămâna viitoare","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-month-relative+0":"luna aceasta","field-month":"Lună","field-month-relative+1":"luna viitoare","field-fri-relative+-1":"vinerea trecută","field-second":"Secundă","field-tue-relative+-1":"marțea trecută","field-day":"Zi","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-thu-relative+0":"joia aceasta","field-second-relative+0":"acum","field-thu-relative+1":"joia viitoare","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-month-relative+-1":"luna trecută","field-thu-relative+-1":"joia trecută"}); \ No newline at end of file
+define("dojo/cldr/nls/ro/chinese",{"field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","field-tue-relative+-1":"marțea trecută","field-year":"an","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-minute":"minut","field-month-narrow-relative+-1":"luna trecută","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","field-thu-short-relative+0":"joia aceasta","field-day-short-relative+-1":"ieri","field-thu-short-relative+1":"joia viitoare","field-day-relative+0":"azi","field-day-short-relative+-2":"alaltăieri","field-day-relative+1":"mâine","field-week-narrow-relative+0":"săpt. aceasta","field-day-relative+2":"poimâine","field-week-narrow-relative+1":"săpt. viitoare","field-wed-narrow-relative+-1":"mi. trecută","field-year-narrow":"an","field-era-short":"eră","field-year-narrow-relative+0":"anul acesta","field-tue-relative+0":"marțea aceasta","field-year-narrow-relative+1":"anul viitor","field-tue-relative+1":"marțea viitoare","field-weekdayOfMonth":"ziua săptămânii din lună","field-second-short":"sec.","field-weekdayOfMonth-narrow":"ziua săpt. din lună","field-week-relative+0":"săptămâna aceasta","field-month-relative+0":"luna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+1":"luna viitoare","field-sun-narrow-relative+0":"du. aceasta","field-mon-short-relative+0":"lun. aceasta","field-sun-narrow-relative+1":"du. viitoare","field-mon-short-relative+1":"lun. viitoare","field-second-relative+0":"acum","field-weekOfMonth":"săptămâna din lună","field-month-short":"lună","field-day":"zi","field-dayOfYear-short":"ziua din an","field-year-relative+-1":"anul trecut","field-sat-short-relative+-1":"sâm. trecută","field-hour-relative+0":"ora aceasta","field-second-short-relative+0":"acum","field-wed-relative+-1":"miercurea trecută","field-sat-narrow-relative+-1":"sâ. trecută","field-second":"secundă","field-hour-short-relative+0":"ora aceasta","field-quarter":"trimestru","field-week-short":"săpt.","field-day-narrow-relative+0":"azi","field-day-narrow-relative+1":"mâine","field-day-narrow-relative+2":"poimâine","field-tue-short-relative+0":"mar. aceasta","field-tue-short-relative+1":"mar. viitoare","field-month-short-relative+-1":"luna trecută","field-mon-relative+-1":"lunea trecută","field-month":"lună","field-day-narrow":"zi","field-minute-short":"min.","field-dayperiod":"a.m/p.m.","field-sat-short-relative+0":"sâm. aceasta","field-sat-short-relative+1":"sâm. viitoare","field-second-narrow":"s","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+-1":"ieri","field-year-short":"an","field-day-narrow-relative+-2":"alaltăieri","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"trimestrul trecut","field-dayperiod-narrow":"a.m/p.m.","field-week-narrow-relative+-1":"săpt. trecută","field-dayOfYear":"ziua din an","field-sat-relative+-1":"sâmbăta trecută","field-hour":"oră","field-minute-narrow-relative+0":"minutul acesta","field-month-relative+-1":"luna trecută","field-quarter-short":"trim.","field-sat-narrow-relative+0":"sâ. aceasta","field-fri-relative+0":"vinerea aceasta","field-sat-narrow-relative+1":"sâ. viitoare","field-fri-relative+1":"vinerea viitoare","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","field-sun-short-relative+0":"dum. aceasta","field-sun-short-relative+1":"dum. viitoare","field-week-relative+-1":"săptămâna trecută","field-quarter-short-relative+-1":"trim. trecut","field-minute-short-relative+0":"minutul acesta","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+0":"trimestrul acesta","field-minute-relative+0":"minutul acesta","field-quarter-relative+1":"trimestrul viitor","field-wed-short-relative+-1":"mie. trecută","field-thu-short-relative+-1":"joia trecută","field-year-narrow-relative+-1":"anul trecut","field-mon-narrow-relative+-1":"lu. trecută","field-thu-narrow-relative+-1":"jo. trecută","field-tue-narrow-relative+-1":"ma. trecută","field-weekOfMonth-short":"săpt. din lună","field-wed-short-relative+0":"mie. aceasta","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-short-relative+1":"mie. viitoare","field-sun-relative+-1":"duminica trecută","field-second-narrow-relative+0":"acum","field-weekday":"ziua din săptămână","field-day-short-relative+0":"azi","field-quarter-narrow-relative+0":"trim. acesta","field-sat-relative+0":"sâmbăta aceasta","field-day-short-relative+1":"mâine","field-quarter-narrow-relative+1":"trim. viitor","field-sat-relative+1":"sâmbăta viitoare","field-day-short-relative+2":"poimâine","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayOfYear-narrow":"ziua din an","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","field-weekdayOfMonth-short":"ziua săpt. din lună","field-zone-narrow":"fus","field-thu-narrow-relative+0":"jo. aceasta","field-thu-narrow-relative+1":"jo. viitoare","field-sun-narrow-relative+-1":"du. trecută","field-mon-short-relative+-1":"lun. trecută","field-thu-relative+0":"joia aceasta","field-thu-relative+1":"joia viitoare","field-fri-short-relative+-1":"vin. trecută","field-thu-relative+-1":"joia trecută","field-week":"săptămână","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-quarter-narrow-relative+-1":"trim. trecut","field-year-short-relative+0":"anul acesta","field-dayperiod-short":"a.m/p.m.","field-year-short-relative+1":"anul viitor","field-fri-short-relative+0":"vin. aceasta","field-fri-short-relative+1":"vin. viitoare","field-week-short-relative+-1":"săpt. trecută","field-hour-narrow-relative+0":"ora aceasta","field-hour-short":"h","field-zone-short":"fus","field-month-narrow":"lună","field-hour-narrow":"h","field-fri-narrow-relative+-1":"vi. trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-era-narrow":"eră","field-fri-relative+-1":"vinerea trecută","field-tue-short-relative+-1":"mar. trecută","field-minute-narrow":"m","field-mon-narrow-relative+0":"lu. aceasta","field-mon-narrow-relative+1":"lu. viitoare","field-year-short-relative+-1":"anul trecut","field-zone":"fus orar","field-weekOfMonth-narrow":"săpt. din lună","field-weekday-narrow":"ziua din săpt.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dum. trecută","field-day-relative+-1":"ieri","field-day-relative+-2":"alaltăieri","field-weekday-short":"ziua din săpt.","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","field-day-short":"zi","field-week-narrow":"săpt.","field-era":"eră","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/coptic.js b/lib/dojo/cldr/nls/ro/coptic.js
index bc63c59ec..bf4d1229b 100644
--- a/lib/dojo/cldr/nls/ro/coptic.js
+++ b/lib/dojo/cldr/nls/ro/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ro/coptic",{"field-sat-relative+0":"sâmbăta aceasta","field-sat-relative+1":"sâmbăta viitoare","field-dayperiod":"a.m/p.m.","field-sun-relative+-1":"duminica trecută","field-mon-relative+-1":"lunea trecută","field-minute":"Minut","field-day-relative+-1":"ieri","field-weekday":"Zi a săptămânii","field-day-relative+-2":"alaltăieri","field-era":"Eră","field-hour":"Oră","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","field-wed-relative+-1":"miercurea trecută","field-day-relative+0":"azi","field-day-relative+1":"mâine","field-day-relative+2":"poimâine","field-tue-relative+0":"marțea aceasta","field-zone":"Fus orar","field-tue-relative+1":"marțea viitoare","field-week-relative+-1":"săptămâna trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-sat-relative+-1":"sâmbăta trecută","field-year-relative+-1":"anul trecut","field-year":"An","field-fri-relative+0":"vinerea aceasta","field-fri-relative+1":"vinerea viitoare","field-week":"Săptămână","field-week-relative+0":"săptămâna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+0":"luna aceasta","field-month":"Lună","field-month-relative+1":"luna viitoare","field-fri-relative+-1":"vinerea trecută","field-second":"Secundă","field-tue-relative+-1":"marțea trecută","field-day":"Zi","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-thu-relative+0":"joia aceasta","field-second-relative+0":"acum","field-thu-relative+1":"joia viitoare","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-month-relative+-1":"luna trecută","field-thu-relative+-1":"joia trecută"}); \ No newline at end of file
+define("dojo/cldr/nls/ro/coptic",{"field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","field-tue-relative+-1":"marțea trecută","field-year":"an","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-minute":"minut","field-month-narrow-relative+-1":"luna trecută","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","field-thu-short-relative+0":"joia aceasta","field-day-short-relative+-1":"ieri","field-thu-short-relative+1":"joia viitoare","field-day-relative+0":"azi","field-day-short-relative+-2":"alaltăieri","field-day-relative+1":"mâine","field-week-narrow-relative+0":"săpt. aceasta","field-day-relative+2":"poimâine","field-week-narrow-relative+1":"săpt. viitoare","field-wed-narrow-relative+-1":"mi. trecută","field-year-narrow":"an","field-era-short":"eră","field-year-narrow-relative+0":"anul acesta","field-tue-relative+0":"marțea aceasta","field-year-narrow-relative+1":"anul viitor","field-tue-relative+1":"marțea viitoare","field-weekdayOfMonth":"ziua săptămânii din lună","field-second-short":"sec.","field-weekdayOfMonth-narrow":"ziua săpt. din lună","field-week-relative+0":"săptămâna aceasta","field-month-relative+0":"luna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+1":"luna viitoare","field-sun-narrow-relative+0":"du. aceasta","field-mon-short-relative+0":"lun. aceasta","field-sun-narrow-relative+1":"du. viitoare","field-mon-short-relative+1":"lun. viitoare","field-second-relative+0":"acum","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["înainte de Anno Martyrum","după Anno Martyrum"],"field-weekOfMonth":"săptămâna din lună","field-month-short":"lună","field-day":"zi","field-dayOfYear-short":"ziua din an","field-year-relative+-1":"anul trecut","field-sat-short-relative+-1":"sâm. trecută","field-hour-relative+0":"ora aceasta","field-second-short-relative+0":"acum","field-wed-relative+-1":"miercurea trecută","field-sat-narrow-relative+-1":"sâ. trecută","field-second":"secundă","field-hour-short-relative+0":"ora aceasta","field-quarter":"trimestru","field-week-short":"săpt.","field-day-narrow-relative+0":"azi","field-day-narrow-relative+1":"mâine","field-day-narrow-relative+2":"poimâine","field-tue-short-relative+0":"mar. aceasta","field-tue-short-relative+1":"mar. viitoare","field-month-short-relative+-1":"luna trecută","field-mon-relative+-1":"lunea trecută","field-month":"lună","field-day-narrow":"zi","field-minute-short":"min.","field-dayperiod":"a.m/p.m.","field-sat-short-relative+0":"sâm. aceasta","field-sat-short-relative+1":"sâm. viitoare","eraAbbr":["î.A.M.","A.M."],"field-second-narrow":"s","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+-1":"ieri","field-year-short":"an","field-day-narrow-relative+-2":"alaltăieri","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"trimestrul trecut","field-dayperiod-narrow":"a.m/p.m.","field-week-narrow-relative+-1":"săpt. trecută","field-dayOfYear":"ziua din an","field-sat-relative+-1":"sâmbăta trecută","field-hour":"oră","field-minute-narrow-relative+0":"minutul acesta","months-format-wide":["Thout","Paopi","Hathor","Koiak","Tobi","Meshir","Paremhat","Paremoude","Pashons","Paoni","Epip","Mesori","Pi Kogi Enavot"],"field-month-relative+-1":"luna trecută","field-quarter-short":"trim.","field-sat-narrow-relative+0":"sâ. aceasta","field-fri-relative+0":"vinerea aceasta","field-sat-narrow-relative+1":"sâ. viitoare","field-fri-relative+1":"vinerea viitoare","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","field-sun-short-relative+0":"dum. aceasta","field-sun-short-relative+1":"dum. viitoare","field-week-relative+-1":"săptămâna trecută","field-quarter-short-relative+-1":"trim. trecut","field-minute-short-relative+0":"minutul acesta","months-format-abbr":["Thout","Paopi","Hathor","Koiak","Tobi","Meshir","Paremhat","Paremoude","Pashons","Paoni","Epip","Mesori","Pi Kogi Enavot"],"field-quarter-relative+0":"trimestrul acesta","field-minute-relative+0":"minutul acesta","field-quarter-relative+1":"trimestrul viitor","field-wed-short-relative+-1":"mie. trecută","field-thu-short-relative+-1":"joia trecută","field-year-narrow-relative+-1":"anul trecut","field-mon-narrow-relative+-1":"lu. trecută","field-thu-narrow-relative+-1":"jo. trecută","field-tue-narrow-relative+-1":"ma. trecută","field-weekOfMonth-short":"săpt. din lună","field-wed-short-relative+0":"mie. aceasta","months-standAlone-wide":["Thout","Paopi","Hathor","Koiak","Tobi","Meshir","Paremhat","Paremoude","Pashons","Paoni","Epip","Mesori","Pi Kogi Enavot"],"field-wed-short-relative+1":"mie. viitoare","field-sun-relative+-1":"duminica trecută","field-second-narrow-relative+0":"acum","field-weekday":"ziua din săptămână","field-day-short-relative+0":"azi","field-quarter-narrow-relative+0":"trim. acesta","field-day-short-relative+1":"mâine","field-sat-relative+0":"sâmbăta aceasta","field-quarter-narrow-relative+1":"trim. viitor","field-day-short-relative+2":"poimâine","field-sat-relative+1":"sâmbăta viitoare","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","months-standAlone-abbr":["Thout","Paopi","Hathor","Koiak","Tobi","Meshir","Paremhat","Paremoude","Pashons","Paoni","Epip","Mesori","Pi Kogi Enavot"],"field-dayOfYear-narrow":"ziua din an","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","field-weekdayOfMonth-short":"ziua săpt. din lună","field-zone-narrow":"fus","field-thu-narrow-relative+0":"jo. aceasta","field-thu-narrow-relative+1":"jo. viitoare","field-sun-narrow-relative+-1":"du. trecută","field-mon-short-relative+-1":"lun. trecută","field-thu-relative+0":"joia aceasta","field-thu-relative+1":"joia viitoare","field-fri-short-relative+-1":"vin. trecută","field-thu-relative+-1":"joia trecută","field-week":"săptămână","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-quarter-narrow-relative+-1":"trim. trecut","field-year-short-relative+0":"anul acesta","field-dayperiod-short":"a.m/p.m.","field-year-short-relative+1":"anul viitor","field-fri-short-relative+0":"vin. aceasta","field-fri-short-relative+1":"vin. viitoare","field-week-short-relative+-1":"săpt. trecută","field-hour-narrow-relative+0":"ora aceasta","field-hour-short":"h","field-zone-short":"fus","field-month-narrow":"lună","field-hour-narrow":"h","field-fri-narrow-relative+-1":"vi. trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-era-narrow":"eră","field-fri-relative+-1":"vinerea trecută","eraNarrow":["î.A.M.","A.M."],"field-tue-short-relative+-1":"mar. trecută","field-minute-narrow":"m","field-mon-narrow-relative+0":"lu. aceasta","field-mon-narrow-relative+1":"lu. viitoare","field-year-short-relative+-1":"anul trecut","field-zone":"fus orar","field-weekOfMonth-narrow":"săpt. din lună","field-weekday-narrow":"ziua din săpt.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dum. trecută","field-day-relative+-1":"ieri","field-day-relative+-2":"alaltăieri","field-weekday-short":"ziua din săpt.","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","field-day-short":"zi","field-week-narrow":"săpt.","field-era":"eră","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/currency.js b/lib/dojo/cldr/nls/ro/currency.js
index 639a0d616..ce5f17494 100644
--- a/lib/dojo/cldr/nls/ro/currency.js
+++ b/lib/dojo/cldr/nls/ro/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ro/currency",{"HKD_displayName":"dolar din Hong Kong","CHF_displayName":"franc elvețian","JPY_symbol":"JPY","CAD_displayName":"dolar canadian","HKD_symbol":"HKD","CNY_displayName":"yuan chinezesc","USD_symbol":"USD","AUD_displayName":"dolar australian","JPY_displayName":"yen japonez","CAD_symbol":"CAD","USD_displayName":"dolar american","CNY_symbol":"CNY","GBP_displayName":"liră sterlină","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/ro/currency",{"HKD_displayName":"dolar din Hong Kong","CNY_displayName":"yuan chinezesc","JPY_displayName":"yen japonez","JPY_symbol":"JPY","USD_displayName":"dolar american","CAD_symbol":"CAD","GBP_displayName":"liră sterlină","CHF_displayName":"franc elvețian","CNY_symbol":"CNY","EUR_displayName":"euro","GBP_symbol":"GBP","CAD_displayName":"dolar canadian","USD_symbol":"USD","EUR_symbol":"EUR","AUD_displayName":"dolar australian","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/ethiopic.js b/lib/dojo/cldr/nls/ro/ethiopic.js
index 52aa23c79..69589a7f5 100644
--- a/lib/dojo/cldr/nls/ro/ethiopic.js
+++ b/lib/dojo/cldr/nls/ro/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ro/ethiopic",{"field-sat-relative+0":"sâmbăta aceasta","field-sat-relative+1":"sâmbăta viitoare","field-dayperiod":"a.m/p.m.","field-sun-relative+-1":"duminica trecută","field-mon-relative+-1":"lunea trecută","field-minute":"Minut","field-day-relative+-1":"ieri","field-weekday":"Zi a săptămânii","field-day-relative+-2":"alaltăieri","field-era":"Eră","field-hour":"Oră","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","field-wed-relative+-1":"miercurea trecută","field-day-relative+0":"azi","field-day-relative+1":"mâine","field-day-relative+2":"poimâine","field-tue-relative+0":"marțea aceasta","field-zone":"Fus orar","field-tue-relative+1":"marțea viitoare","field-week-relative+-1":"săptămâna trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-sat-relative+-1":"sâmbăta trecută","field-year-relative+-1":"anul trecut","field-year":"An","field-fri-relative+0":"vinerea aceasta","field-fri-relative+1":"vinerea viitoare","field-week":"Săptămână","field-week-relative+0":"săptămâna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+0":"luna aceasta","field-month":"Lună","field-month-relative+1":"luna viitoare","field-fri-relative+-1":"vinerea trecută","field-second":"Secundă","field-tue-relative+-1":"marțea trecută","field-day":"Zi","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-thu-relative+0":"joia aceasta","field-second-relative+0":"acum","field-thu-relative+1":"joia viitoare","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-month-relative+-1":"luna trecută","field-thu-relative+-1":"joia trecută"}); \ No newline at end of file
+define("dojo/cldr/nls/ro/ethiopic",{"field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","field-tue-relative+-1":"marțea trecută","field-year":"an","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-minute":"minut","field-month-narrow-relative+-1":"luna trecută","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","field-thu-short-relative+0":"joia aceasta","field-day-short-relative+-1":"ieri","field-thu-short-relative+1":"joia viitoare","field-day-relative+0":"azi","field-day-short-relative+-2":"alaltăieri","field-day-relative+1":"mâine","field-week-narrow-relative+0":"săpt. aceasta","field-day-relative+2":"poimâine","field-week-narrow-relative+1":"săpt. viitoare","field-wed-narrow-relative+-1":"mi. trecută","field-year-narrow":"an","field-era-short":"eră","field-year-narrow-relative+0":"anul acesta","field-tue-relative+0":"marțea aceasta","field-year-narrow-relative+1":"anul viitor","field-tue-relative+1":"marțea viitoare","field-weekdayOfMonth":"ziua săptămânii din lună","field-second-short":"sec.","field-weekdayOfMonth-narrow":"ziua săpt. din lună","field-week-relative+0":"săptămâna aceasta","field-month-relative+0":"luna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+1":"luna viitoare","field-sun-narrow-relative+0":"du. aceasta","field-mon-short-relative+0":"lun. aceasta","field-sun-narrow-relative+1":"du. viitoare","field-mon-short-relative+1":"lun. viitoare","field-second-relative+0":"acum","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["înainte de Întrupare","după Întrupare"],"field-weekOfMonth":"săptămâna din lună","field-month-short":"lună","field-day":"zi","field-dayOfYear-short":"ziua din an","field-year-relative+-1":"anul trecut","field-sat-short-relative+-1":"sâm. trecută","field-hour-relative+0":"ora aceasta","field-second-short-relative+0":"acum","field-wed-relative+-1":"miercurea trecută","field-sat-narrow-relative+-1":"sâ. trecută","field-second":"secundă","field-hour-short-relative+0":"ora aceasta","field-quarter":"trimestru","field-week-short":"săpt.","field-day-narrow-relative+0":"azi","field-day-narrow-relative+1":"mâine","field-day-narrow-relative+2":"poimâine","field-tue-short-relative+0":"mar. aceasta","field-tue-short-relative+1":"mar. viitoare","field-month-short-relative+-1":"luna trecută","field-mon-relative+-1":"lunea trecută","field-month":"lună","field-day-narrow":"zi","field-minute-short":"min.","field-dayperiod":"a.m/p.m.","field-sat-short-relative+0":"sâm. aceasta","field-sat-short-relative+1":"sâm. viitoare","eraAbbr":["î.Într.","d.Într."],"field-second-narrow":"s","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+-1":"ieri","field-year-short":"an","field-day-narrow-relative+-2":"alaltăieri","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"trimestrul trecut","field-dayperiod-narrow":"a.m/p.m.","field-week-narrow-relative+-1":"săpt. trecută","field-dayOfYear":"ziua din an","field-sat-relative+-1":"sâmbăta trecută","field-hour":"oră","field-minute-narrow-relative+0":"minutul acesta","months-format-wide":["meskerem","taqemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehase","pagumen"],"field-month-relative+-1":"luna trecută","field-quarter-short":"trim.","field-sat-narrow-relative+0":"sâ. aceasta","field-fri-relative+0":"vinerea aceasta","field-sat-narrow-relative+1":"sâ. viitoare","field-fri-relative+1":"vinerea viitoare","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","field-sun-short-relative+0":"dum. aceasta","field-sun-short-relative+1":"dum. viitoare","field-week-relative+-1":"săptămâna trecută","field-quarter-short-relative+-1":"trim. trecut","field-minute-short-relative+0":"minutul acesta","months-format-abbr":["meskerem","taqemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehase","pagumen"],"field-quarter-relative+0":"trimestrul acesta","field-minute-relative+0":"minutul acesta","field-quarter-relative+1":"trimestrul viitor","field-wed-short-relative+-1":"mie. trecută","field-thu-short-relative+-1":"joia trecută","field-year-narrow-relative+-1":"anul trecut","field-mon-narrow-relative+-1":"lu. trecută","field-thu-narrow-relative+-1":"jo. trecută","field-tue-narrow-relative+-1":"ma. trecută","field-weekOfMonth-short":"săpt. din lună","field-wed-short-relative+0":"mie. aceasta","months-standAlone-wide":["meskerem","taqemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehase","pagumen"],"field-wed-short-relative+1":"mie. viitoare","field-sun-relative+-1":"duminica trecută","field-second-narrow-relative+0":"acum","field-weekday":"ziua din săptămână","field-day-short-relative+0":"azi","field-quarter-narrow-relative+0":"trim. acesta","field-day-short-relative+1":"mâine","field-sat-relative+0":"sâmbăta aceasta","field-quarter-narrow-relative+1":"trim. viitor","field-day-short-relative+2":"poimâine","field-sat-relative+1":"sâmbăta viitoare","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","months-standAlone-abbr":["meskerem","taqemt","hedar","tahsas","ter","yekatit","megabit","miazia","genbot","sene","hamle","nehase","pagumen"],"field-dayOfYear-narrow":"ziua din an","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","field-weekdayOfMonth-short":"ziua săpt. din lună","field-zone-narrow":"fus","field-thu-narrow-relative+0":"jo. aceasta","field-thu-narrow-relative+1":"jo. viitoare","field-sun-narrow-relative+-1":"du. trecută","field-mon-short-relative+-1":"lun. trecută","field-thu-relative+0":"joia aceasta","field-thu-relative+1":"joia viitoare","field-fri-short-relative+-1":"vin. trecută","field-thu-relative+-1":"joia trecută","field-week":"săptămână","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-quarter-narrow-relative+-1":"trim. trecut","field-year-short-relative+0":"anul acesta","field-dayperiod-short":"a.m/p.m.","field-year-short-relative+1":"anul viitor","field-fri-short-relative+0":"vin. aceasta","field-fri-short-relative+1":"vin. viitoare","field-week-short-relative+-1":"săpt. trecută","field-hour-narrow-relative+0":"ora aceasta","field-hour-short":"h","field-zone-short":"fus","field-month-narrow":"lună","field-hour-narrow":"h","field-fri-narrow-relative+-1":"vi. trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-era-narrow":"eră","field-fri-relative+-1":"vinerea trecută","eraNarrow":["î.Într.","d.Într."],"field-tue-short-relative+-1":"mar. trecută","field-minute-narrow":"m","field-mon-narrow-relative+0":"lu. aceasta","field-mon-narrow-relative+1":"lu. viitoare","field-year-short-relative+-1":"anul trecut","field-zone":"fus orar","field-weekOfMonth-narrow":"săpt. din lună","field-weekday-narrow":"ziua din săpt.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dum. trecută","field-day-relative+-1":"ieri","field-day-relative+-2":"alaltăieri","field-weekday-short":"ziua din săpt.","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","field-day-short":"zi","field-week-narrow":"săpt.","field-era":"eră","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/generic.js b/lib/dojo/cldr/nls/ro/generic.js
index 8466aff52..c61793a0a 100644
--- a/lib/dojo/cldr/nls/ro/generic.js
+++ b/lib/dojo/cldr/nls/ro/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ro/generic",{"field-second-relative+0":"acum","field-weekday":"Zi a săptămânii","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"marțea trecută","dateFormat-long":"d MMMM y G","field-fri-relative+-1":"vinerea trecută","field-wed-relative+-1":"miercurea trecută","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-thu-relative+-1":"joia trecută","dateFormatItem-Md":"dd.MM","field-era":"Eră","field-year":"An","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"Oră","field-sat-relative+0":"sâmbăta aceasta","field-sat-relative+1":"sâmbăta viitoare","field-day-relative+0":"azi","field-day-relative+1":"mâine","field-thu-relative+0":"joia aceasta","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"poimâine","field-thu-relative+1":"joia viitoare","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"duminica aceasta","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"duminica viitoare","field-minute":"Minut","field-dayperiod":"a.m/p.m.","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"ieri","dateTimeFormat-long":"{1} 'la' {0}","field-day-relative+-2":"alaltăieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1} 'la' {0}","field-fri-relative+0":"vinerea aceasta","field-fri-relative+1":"vinerea viitoare","field-day":"Zi","field-zone":"Fus orar","dateFormatItem-y":"y","field-year-relative+-1":"anul trecut","field-month-relative+-1":"luna trecută","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"dd.MM.y G","field-month":"Lună","dateFormatItem-MMM":"LLL","field-tue-relative+0":"marțea aceasta","field-tue-relative+1":"marțea viitoare","dateFormatItem-MMMMEd":"E, d MMMM","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","dateFormat-short":"dd.MM.y GGGGG","field-second":"Secundă","field-sat-relative+-1":"sâmbăta trecută","field-sun-relative+-1":"duminica trecută","field-month-relative+0":"luna aceasta","field-month-relative+1":"luna viitoare","dateFormatItem-Ed":"E d","field-week":"Săptămână","dateFormat-medium":"dd.MM.y G","field-year-relative+0":"anul acesta","field-week-relative+-1":"săptămâna trecută","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"anul viitor","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lunea trecută","dateFormatItem-yyyy":"y G","field-week-relative+0":"săptămâna aceasta","field-week-relative+1":"săptămâna viitoare"}); \ No newline at end of file
+define("dojo/cldr/nls/ro/generic",{"field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","field-tue-relative+-1":"marțea trecută","field-year":"an","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","dateFormatItem-ms":"mm:ss","field-minute":"minut","field-month-narrow-relative+-1":"luna trecută","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","field-day-short-relative+-1":"ieri","field-thu-short-relative+0":"joia aceasta","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"azi","field-day-short-relative+-2":"alaltăieri","field-thu-short-relative+1":"joia viitoare","field-day-relative+1":"mâine","field-week-narrow-relative+0":"săpt. aceasta","field-day-relative+2":"poimâine","field-week-narrow-relative+1":"săpt. viitoare","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"mi. trecută","field-year-narrow":"an","field-era-short":"eră","field-year-narrow-relative+0":"anul acesta","field-tue-relative+0":"marțea aceasta","field-year-narrow-relative+1":"anul viitor","field-tue-relative+1":"marțea viitoare","field-weekdayOfMonth":"ziua săptămânii din lună","field-second-short":"sec.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"ziua săpt. din lună","field-week-relative+0":"săptămâna aceasta","field-month-relative+0":"luna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+1":"luna viitoare","field-sun-narrow-relative+0":"du. aceasta","field-mon-short-relative+0":"lun. aceasta","field-sun-narrow-relative+1":"du. viitoare","field-mon-short-relative+1":"lun. viitoare","field-second-relative+0":"acum","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"săptămâna din lună","field-month-short":"lună","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"dd.MM.y G","field-day":"zi","field-dayOfYear-short":"ziua din an","field-year-relative+-1":"anul trecut","field-sat-short-relative+-1":"sâm. trecută","field-hour-relative+0":"ora aceasta","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-second-short-relative+0":"acum","field-wed-relative+-1":"miercurea trecută","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"sâ. trecută","field-second":"secundă","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"ora aceasta","field-quarter":"trimestru","field-week-short":"săpt.","field-day-narrow-relative+0":"azi","field-day-narrow-relative+1":"mâine","field-day-narrow-relative+2":"poimâine","field-tue-short-relative+0":"mar. aceasta","field-tue-short-relative+1":"mar. viitoare","field-month-short-relative+-1":"luna trecută","field-mon-relative+-1":"lunea trecută","dateFormatItem-GyMMM":"MMM y G","field-month":"lună","field-day-narrow":"zi","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"a.m/p.m.","field-sat-short-relative+0":"sâm. aceasta","field-sat-short-relative+1":"sâm. viitoare","dateFormat-medium":"dd.MM.y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"s","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+-1":"ieri","field-year-short":"an","field-day-narrow-relative+-2":"alaltăieri","field-quarter-relative+-1":"trimestrul trecut","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m/p.m.","field-week-narrow-relative+-1":"săpt. trecută","field-dayOfYear":"ziua din an","field-sat-relative+-1":"sâmbăta trecută","dateTimeFormat-long":"{1} 'la' {0}","dateFormatItem-Md":"dd.MM","field-hour":"oră","field-minute-narrow-relative+0":"minutul acesta","dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"luna trecută","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"trim.","field-sat-narrow-relative+0":"sâ. aceasta","field-fri-relative+0":"vinerea aceasta","field-sat-narrow-relative+1":"sâ. viitoare","field-fri-relative+1":"vinerea viitoare","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","field-sun-short-relative+0":"dum. aceasta","field-sun-short-relative+1":"dum. viitoare","field-week-relative+-1":"săptămâna trecută","field-quarter-short-relative+-1":"trim. trecut","dateFormatItem-Ehm":"E h:mm a","field-minute-short-relative+0":"minutul acesta","field-quarter-relative+0":"trimestrul acesta","field-minute-relative+0":"minutul acesta","field-quarter-relative+1":"trimestrul viitor","field-wed-short-relative+-1":"mie. trecută","dateFormat-short":"dd.MM.y GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"anul trecut","field-thu-short-relative+-1":"joia trecută","dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"lu. trecută","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jo. trecută","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"săpt. din lună","field-tue-narrow-relative+-1":"ma. trecută","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"mie. aceasta","field-wed-short-relative+1":"mie. viitoare","field-sun-relative+-1":"duminica trecută","dateFormatItem-MMMMEd":"E, d MMMM","dateTimeFormat-full":"{1} 'la' {0}","field-second-narrow-relative+0":"acum","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"ziua din săptămână","field-day-short-relative+0":"azi","field-quarter-narrow-relative+0":"trim. acesta","field-day-short-relative+1":"mâine","field-sat-relative+0":"sâmbăta aceasta","field-quarter-narrow-relative+1":"trim. viitor","dateFormatItem-h":"h a","field-day-short-relative+2":"poimâine","field-sat-relative+1":"sâmbăta viitoare","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","field-dayOfYear-narrow":"ziua din an","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","field-weekdayOfMonth-short":"ziua săpt. din lună","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"fus","dateFormatItem-y":"y","field-thu-narrow-relative+0":"jo. aceasta","field-sun-narrow-relative+-1":"du. trecută","field-mon-short-relative+-1":"lun. trecută","field-thu-narrow-relative+1":"jo. viitoare","field-thu-relative+0":"joia aceasta","field-thu-relative+1":"joia viitoare","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"vin. trecută","field-thu-relative+-1":"joia trecută","field-week":"săptămână","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-quarter-narrow-relative+-1":"trim. trecut","field-year-short-relative+0":"anul acesta","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"a.m/p.m.","field-year-short-relative+1":"anul viitor","field-fri-short-relative+0":"vin. aceasta","field-fri-short-relative+1":"vin. viitoare","field-week-short-relative+-1":"săpt. trecută","field-hour-narrow-relative+0":"ora aceasta","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fus","field-month-narrow":"lună","field-hour-narrow":"h","field-fri-narrow-relative+-1":"vi. trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-era-narrow":"eră","field-fri-relative+-1":"vinerea trecută","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"mar. trecută","field-minute-narrow":"m","field-mon-narrow-relative+0":"lu. aceasta","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"lu. viitoare","field-year-short-relative+-1":"anul trecut","field-zone":"fus orar","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"săpt. din lună","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"ziua din săpt.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dum. trecută","field-day-relative+-1":"ieri","field-day-relative+-2":"alaltăieri","field-weekday-short":"ziua din săpt.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","dateFormatItem-Gy":"y G","field-day-short":"zi","field-week-narrow":"săpt.","field-era":"eră","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/gregorian.js b/lib/dojo/cldr/nls/ro/gregorian.js
index 97cf0f0f5..2559c52b0 100644
--- a/lib/dojo/cldr/nls/ro/gregorian.js
+++ b/lib/dojo/cldr/nls/ro/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ro/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"months-format-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"field-second-relative+0":"acum","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Zi a săptămânii","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, dd.MM.y","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","eraNarrow":["î.Hr.","d.Hr."],"dateFormatItem-yMM":"MM.y","field-tue-relative+-1":"marțea trecută","days-format-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"vinerea trecută","field-wed-relative+-1":"miercurea trecută","months-format-wide":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE, d MMMM y","field-thu-relative+-1":"joia trecută","dateFormatItem-Md":"dd.MM","dateFormatItem-yMd":"dd.MM.y","field-era":"Eră","dateFormatItem-yM":"MM.y","months-standAlone-wide":["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],"timeFormat-short":"HH:mm","quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"dateFormatItem-yQQQQ":"QQQQ y","timeFormat-long":"HH:mm:ss z","field-year":"An","dateFormatItem-yMMM":"MMM y","field-hour":"Oră","dateFormatItem-MMdd":"dd.MM","months-format-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"field-sat-relative+0":"sâmbăta aceasta","field-sat-relative+1":"sâmbăta viitoare","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"azi","field-thu-relative+0":"joia aceasta","field-day-relative+1":"mâine","field-thu-relative+1":"joia viitoare","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"poimâine","dateFormatItem-H":"HH","months-standAlone-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"quarters-standAlone-wide":["Trimestrul I","Trimestrul al II-lea","Trimestrul al III-lea","Trimestrul al IV-lea"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["Duminică","Luni","Marți","Miercuri","Joi","Vineri","Sâmbătă"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"duminica aceasta","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"duminica viitoare","quarters-standAlone-abbr":["Trim. I","Trim. II","Trim. III","Trim. IV"],"eraAbbr":["î.Hr.","d.Hr."],"field-minute":"Minut","field-dayperiod":"a.m/p.m.","days-standAlone-abbr":["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"ieri","dateFormatItem-h":"h a","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"alaltăieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"vinerea aceasta","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"vinerea viitoare","field-day":"Zi","days-format-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"field-zone":"Fus orar","dateFormatItem-y":"y","months-standAlone-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"field-year-relative+-1":"anul trecut","field-month-relative+-1":"luna trecută","dateFormatItem-hm":"h:mm a","days-format-abbr":["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],"dateFormatItem-yMMMd":"d MMM y","eraNames":["înainte de Hristos","după Hristos"],"days-format-narrow":["D","L","M","M","J","V","S"],"days-standAlone-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-MMM":"LLL","field-month":"Lună","field-tue-relative+0":"marțea aceasta","field-tue-relative+1":"marțea viitoare","dayPeriods-format-wide-am":"a.m.","dateFormatItem-MMMMEd":"E, d MMMM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","dateFormat-short":"dd.MM.y","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"Secundă","field-sat-relative+-1":"sâmbăta trecută","dateFormatItem-yMMMEd":"E, d MMM y","field-sun-relative+-1":"duminica trecută","field-month-relative+0":"luna aceasta","field-month-relative+1":"luna viitoare","dateFormatItem-Ed":"E d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Săptămână","dateFormat-medium":"d MMM y","field-year-relative+0":"anul acesta","field-week-relative+-1":"săptămâna trecută","field-year-relative+1":"anul viitor","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lunea trecută","field-week-relative+0":"săptămâna aceasta","field-week-relative+1":"săptămâna viitoare"}); \ No newline at end of file
+define("dojo/cldr/nls/ro/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"jo. aceasta","field-thu-narrow-relative+1":"jo. viitoare","field-sun-narrow-relative+0":"du. aceasta","field-sun-narrow-relative+1":"du. viitoare","months-format-wide":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],"dayPeriods-standAlone-abbr-pm":"p.m.","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare","eraNarrow":["î.Hr.","d.Hr."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM y","dayPeriods-format-abbr-night1":"noaptea","dayPeriods-format-narrow-evening1":"seara","days-standAlone-narrow":["D","L","M","M","J","V","S"],"days-standAlone-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"dayPeriods-format-abbr-afternoon1":"după-amiaza","dayPeriods-format-wide-evening1":"seara","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"mi. trecută","dayPeriods-standAlone-wide-evening1":"seara","field-minute-narrow-relative+0":"minutul acesta","days-format-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"dateFormatItem-yMM":"MM.y","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"seara","dayPeriods-standAlone-abbr-afternoon1":"după-amiaza","field-thu-relative+0":"joia aceasta","dayPeriods-standAlone-abbr-night1":"noaptea","field-thu-relative+1":"joia viitoare","dayPeriods-format-wide-am":"a.m.","field-fri-relative+0":"vinerea aceasta","field-fri-relative+1":"vinerea viitoare","dateFormatItem-yMd":"dd.MM.y","field-thu-narrow-relative+-1":"jo. trecută","field-quarter-relative+0":"trimestrul acesta","field-quarter-relative+1":"trimestrul viitor","field-sun-short-relative+0":"dum. aceasta","timeFormat-short":"HH:mm","field-sun-short-relative+1":"dum. viitoare","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"după-amiaza","dateFormatItem-Md":"dd.MM","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"săpt.","field-hour-relative+0":"ora aceasta","field-day-relative+-1":"ieri","field-day-relative+-2":"alaltăieri","field-mon-narrow-relative+-1":"lu. trecută","field-minute-narrow":"m","dateFormatItem-MMMMEd":"E, d MMMM","field-thu-short-relative+0":"joia aceasta","field-mon-relative+0":"lunea aceasta","field-thu-short-relative+1":"joia viitoare","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+0":"azi","field-era-short":"eră","field-day-narrow-relative+1":"mâine","field-sat-narrow-relative+0":"sâ. aceasta","field-day-narrow-relative+2":"poimâine","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"sâ. viitoare","field-week-narrow-relative+0":"săpt. aceasta","field-week-narrow-relative+1":"săpt. viitoare","field-hour-short-relative+0":"ora aceasta","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-month":"lună","months-standAlone-wide":["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"],"field-weekday-narrow":"ziua din săpt.","dayPeriods-standAlone-narrow-afternoon1":"după-amiaza","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","dayPeriods-format-abbr-evening1":"seara","dayPeriods-format-abbr-noon":"amiază","dayPeriods-format-narrow-midnight":"miezul nopții","dayPeriods-format-wide-midnight":"la miezul nopții","field-tue-relative+0":"marțea aceasta","field-tue-relative+1":"marțea viitoare","dayPeriods-standAlone-abbr-evening1":"seara","field-minute-short-relative+0":"minutul acesta","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"la miezul nopții","field-year-narrow":"an","dayPeriods-standAlone-abbr-noon":"amiază","field-tue-short-relative+0":"mar. aceasta","dayPeriods-standAlone-narrow-midnight":"miezul nopții","field-tue-short-relative+1":"mar. viitoare","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","dateTimeFormat-full":"{1}, {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","dateFormatItem-M":"L","field-wed-short-relative+0":"mie. aceasta","field-fri-short-relative+0":"vin. aceasta","field-wed-short-relative+1":"mie. viitoare","field-fri-short-relative+1":"vin. viitoare","field-weekOfMonth-short":"săpt. din lună","field-quarter-short-relative+-1":"trim. trecut","field-year-short-relative+-1":"anul trecut","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"noaptea","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"trim. trecut","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-h":"h a","quarters-standAlone-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"field-weekOfMonth-narrow":"săpt. din lună","dateFormatItem-y":"y","field-minute-relative+0":"minutul acesta","field-year-short-relative+0":"anul acesta","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"anul viitor","field-weekday":"ziua din săptămână","dayPeriods-format-narrow-pm":"p.m.","field-tue-narrow-relative+-1":"ma. trecută","dateFormatItem-yMEd":"E, dd.MM.y","dayPeriods-standAlone-wide-night1":"noaptea","field-year-narrow-relative+-1":"anul trecut","field-sat-relative+-1":"sâmbăta trecută","dayPeriods-format-abbr-midnight":"miezul nopții","dayPeriods-format-narrow-morning1":"dimineața","dayPeriods-format-wide-morning1":"dimineața","dayPeriods-standAlone-abbr-midnight":"miezul nopții","dayPeriods-standAlone-narrow-pm":"p.m.","dayPeriods-standAlone-wide-morning1":"dimineața","field-mon-narrow-relative+0":"lu. aceasta","field-mon-narrow-relative+1":"lu. viitoare","field-second":"secundă","dateFormatItem-yMMMEd":"E, d MMM y","field-year-relative+-1":"anul trecut","field-weekdayOfMonth-short":"ziua săpt. din lună","dateFormat-short":"dd.MM.y","eraNames":["înainte de Hristos","după Hristos"],"field-second-short":"sec.","field-thu-short-relative+-1":"joia trecută","field-zone":"fus orar","field-dayperiod-narrow":"a.m/p.m.","field-sun-short-relative+-1":"dum. trecută","dayPeriods-standAlone-narrow-morning1":"dimineața","eraAbbr":["î.Hr.","d.Hr."],"field-week-short":"săpt.","dayPeriods-standAlone-abbr-am":"a.m.","dayPeriods-standAlone-wide-pm":"p.m.","dateFormatItem-ms":"mm:ss","field-day-relative+0":"azi","field-day-relative+1":"mâine","field-day-relative+2":"poimâine","field-day-short-relative+0":"azi","field-dayOfYear-short":"ziua din an","field-day-short-relative+1":"mâine","dateFormat-long":"d MMMM y","field-day-short-relative+2":"poimâine","field-sun-narrow-relative+-1":"du. trecută","dayPeriods-format-wide-noon":"la amiază","field-second-relative+0":"acum","field-quarter-relative+-1":"trimestrul trecut","dayPeriods-format-narrow-night1":"noaptea","quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"dayPeriods-standAlone-wide-noon":"la amiază","dayPeriods-standAlone-narrow-night1":"noaptea","field-week-relative+-1":"săptămâna trecută","dayPeriods-format-abbr-morning1":"dimineața","field-month-relative+-1":"luna trecută","months-format-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"field-year":"an","field-era":"eră","dayPeriods-standAlone-abbr-morning1":"dimineața","days-standAlone-short":["du.","lu.","ma.","mi.","joi","vi.","sâ."],"quarters-format-narrow":["I","II","III","IV"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"ieri","field-day-short-relative+-2":"alaltăieri","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"oră","field-dayOfYear-narrow":"ziua din an","field-second-narrow-relative+0":"acum","field-quarter":"trimestru","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","dateFormatItem-MMdd":"dd.MM","field-day":"zi","field-mon-relative+-1":"lunea trecută","field-dayOfYear":"ziua din an","dateFormat-medium":"d MMM y","dateTimeFormat-short":"{1}, {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d MMM y G","dateFormatItem-MEd":"E, dd.MM","field-tue-short-relative+-1":"mar. trecută","field-year-short":"an","field-month-short":"lună","dateFormatItem-MMMEd":"E, d MMM","dayPeriods-format-wide-afternoon1":"după-amiaza","dateFormatItem-MMMd":"d MMM","dateFormatItem-Bh":"h B","months-format-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"dayPeriods-format-abbr-am":"a.m.","field-sat-relative+0":"sâmbăta aceasta","field-sat-relative+1":"sâmbăta viitoare","dayPeriods-format-wide-pm":"p.m.","days-standAlone-abbr":["dum.","lun.","mar.","mie.","joi","vin.","sâm."],"field-zone-short":"fus","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","dayPeriods-standAlone-wide-afternoon1":"după-amiaza","field-fri-short-relative+-1":"vin. trecută","field-month-narrow":"lună","dayPeriods-format-narrow-am":"a.m.","field-month-narrow-relative+-1":"luna trecută","days-format-abbr":["dum.","lun.","mar.","mie.","joi","vin.","sâm."],"field-weekday-short":"ziua din săpt.","field-day-narrow-relative+-1":"ieri","field-day-narrow-relative+-2":"alaltăieri","field-quarter-short":"trim.","days-format-short":["du.","lu.","ma.","mi.","joi","vi.","sâ."],"months-standAlone-narrow":["I","F","M","A","M","I","I","A","S","O","N","D"],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"trim.","field-mon-short-relative+0":"lun. aceasta","field-mon-short-relative+1":"lun. viitoare","field-dayperiod-short":"a.m/p.m.","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"săpt. trecută","field-thu-relative+-1":"joia trecută","field-fri-narrow-relative+-1":"vi. trecută","field-mon-short-relative+-1":"lun. trecută","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","dateFormatItem-Ed":"E d","field-wed-relative+-1":"miercurea trecută","field-weekOfMonth":"săptămâna din lună","field-weekdayOfMonth-narrow":"ziua săpt. din lună","dayPeriods-standAlone-wide-am":"a.m.","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"vinerea trecută","field-minute":"minut","quarters-standAlone-narrow":["I","II","III","IV"],"field-second-short-relative+0":"acum","quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"field-day-short":"zi","field-dayperiod":"a.m/p.m.","field-hour-short":"h","months-standAlone-abbr":["ian.","feb.","mar.","apr.","mai","iun.","iul.","aug.","sept.","oct.","nov.","dec."],"field-month-relative+0":"luna aceasta","field-second-narrow":"s","field-month-relative+1":"luna viitoare","dateFormat-full":"EEEE, d MMMM y","field-era-narrow":"eră","field-sat-short-relative+-1":"sâm. trecută","dayPeriods-format-narrow-noon":"la amiază","field-week-short-relative+-1":"săpt. trecută","dateTimeFormat-long":"{1}, {0}","dateFormatItem-yM":"MM.y","field-sun-relative+-1":"duminica trecută","field-wed-short-relative+-1":"mie. trecută","field-weekdayOfMonth":"ziua săptămânii din lună","field-quarter-narrow-relative+0":"trim. acesta","dateFormatItem-GyMMMEd":"E, d MMM y G","field-quarter-narrow-relative+1":"trim. viitor","field-sat-short-relative+0":"sâm. aceasta","field-hour-narrow":"h","field-sat-short-relative+1":"sâm. viitoare","field-year-narrow-relative+0":"anul acesta","field-year-narrow-relative+1":"anul viitor","dateFormatItem-Gy":"y G","field-zone-narrow":"fus","dayPeriods-standAlone-narrow-noon":"amiază","field-tue-relative+-1":"marțea trecută","field-minute-short":"min.","dateFormatItem-yw":"'săptămâna' w 'din' Y","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"săptămâna aceasta","field-week-relative+1":"săptămâna viitoare","dateFormatItem-MMM":"LLL","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","field-sat-narrow-relative+-1":"sâ. trecută","quarters-standAlone-abbr":["trim. I","trim. II","trim. III","trim. IV"],"dateFormatItem-MMMMW":"'săptămâna' W 'din' MMMM","field-month-short-relative+-1":"luna trecută","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-hour-narrow-relative+0":"ora aceasta","field-week":"săptămână","field-day-narrow":"zi"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/hebrew.js b/lib/dojo/cldr/nls/ro/hebrew.js
index 82ded3741..1b2eb92cb 100644
--- a/lib/dojo/cldr/nls/ro/hebrew.js
+++ b/lib/dojo/cldr/nls/ro/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ro/hebrew",{"days-standAlone-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"field-second-relative+0":"acum","field-weekday":"Zi a săptămânii","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"marțea trecută","days-format-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"vinerea trecută","field-wed-relative+-1":"miercurea trecută","months-format-wide":["Tișrei","Heșvan","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-thu-relative+-1":"joia trecută","dateFormatItem-Md":"dd.MM","field-era":"Eră","months-standAlone-wide":["Tișrei","Heșvan","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"field-year":"An","field-hour":"Oră","months-format-abbr-leap":"Adar II","months-format-abbr":["Tișrei","Heșvan","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"field-sat-relative+0":"sâmbăta aceasta","field-sat-relative+1":"sâmbăta viitoare","field-day-relative+0":"azi","field-thu-relative+0":"joia aceasta","field-day-relative+1":"mâine","field-thu-relative+1":"joia viitoare","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"poimâine","months-standAlone-abbr":["Tișrei","Heșvan","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"quarters-standAlone-wide":["Trimestrul I","Trimestrul al II-lea","Trimestrul al III-lea","Trimestrul al IV-lea"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Duminică","Luni","Marți","Miercuri","Joi","Vineri","Sâmbătă"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","months-standAlone-wide-leap":"Adar II","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","quarters-standAlone-abbr":["Trim. I","Trim. II","Trim. III","Trim. IV"],"field-minute":"Minut","field-dayperiod":"a.m/p.m.","days-standAlone-abbr":["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],"field-day-relative+-1":"ieri","dateTimeFormat-long":"{1} 'la' {0}","field-day-relative+-2":"alaltăieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1} 'la' {0}","field-fri-relative+0":"vinerea aceasta","field-fri-relative+1":"vinerea viitoare","field-day":"Zi","days-format-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"field-zone":"Fus orar","months-standAlone-abbr-leap":"Adar II","dateFormatItem-y":"y","field-year-relative+-1":"anul trecut","field-month-relative+-1":"luna trecută","days-format-abbr":["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yyyyMd":"dd.MM.y G","field-month":"Lună","days-standAlone-narrow":["D","L","M","M","J","V","S"],"field-tue-relative+0":"marțea aceasta","field-tue-relative+1":"marțea viitoare","dayPeriods-format-wide-am":"a.m.","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","dateFormat-short":"dd.MM.y GGGGG","field-second":"Secundă","field-sat-relative+-1":"sâmbăta trecută","field-sun-relative+-1":"duminica trecută","field-month-relative+0":"luna aceasta","field-month-relative+1":"luna viitoare","dateFormatItem-Ed":"E d","field-week":"Săptămână","dateFormat-medium":"dd.MM.y G","field-year-relative+0":"anul acesta","field-week-relative+-1":"săptămâna trecută","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"anul viitor","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","months-format-wide-leap":"Adar II","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lunea trecută","dateFormatItem-yyyy":"y G","field-week-relative+0":"săptămâna aceasta","field-week-relative+1":"săptămâna viitoare"}); \ No newline at end of file
+define("dojo/cldr/nls/ro/hebrew",{"field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","field-tue-relative+-1":"marțea trecută","field-year":"an","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-minute":"minut","field-month-narrow-relative+-1":"luna trecută","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","field-thu-short-relative+0":"joia aceasta","field-day-short-relative+-1":"ieri","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"joia viitoare","field-day-relative+0":"azi","field-day-short-relative+-2":"alaltăieri","field-day-relative+1":"mâine","field-week-narrow-relative+0":"săpt. aceasta","field-day-relative+2":"poimâine","field-week-narrow-relative+1":"săpt. viitoare","field-wed-narrow-relative+-1":"mi. trecută","field-year-narrow":"an","field-era-short":"eră","field-year-narrow-relative+0":"anul acesta","field-tue-relative+0":"marțea aceasta","field-year-narrow-relative+1":"anul viitor","field-tue-relative+1":"marțea viitoare","field-weekdayOfMonth":"ziua săptămânii din lună","field-second-short":"sec.","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"ziua săpt. din lună","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"săptămâna aceasta","field-month-relative+0":"luna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+1":"luna viitoare","field-sun-narrow-relative+0":"du. aceasta","field-mon-short-relative+0":"lun. aceasta","field-sun-narrow-relative+1":"du. viitoare","field-mon-short-relative+1":"lun. viitoare","field-second-relative+0":"acum","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["A.M."],"field-weekOfMonth":"săptămâna din lună","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"lună","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"dd.MM.y G","field-day":"zi","field-dayOfYear-short":"ziua din an","field-year-relative+-1":"anul trecut","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"sâm. trecută","field-hour-relative+0":"ora aceasta","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-second-short-relative+0":"acum","field-wed-relative+-1":"miercurea trecută","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"sâ. trecută","field-second":"secundă","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"ora aceasta","field-quarter":"trimestru","field-week-short":"săpt.","field-day-narrow-relative+0":"azi","field-day-narrow-relative+1":"mâine","field-day-narrow-relative+2":"poimâine","quarters-standAlone-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-tue-short-relative+0":"mar. aceasta","field-tue-short-relative+1":"mar. viitoare","field-month-short-relative+-1":"luna trecută","field-mon-relative+-1":"lunea trecută","dateFormatItem-GyMMM":"MMM y G","field-month":"lună","field-day-narrow":"zi","field-minute-short":"min.","field-dayperiod":"a.m/p.m.","field-sat-short-relative+0":"sâm. aceasta","field-sat-short-relative+1":"sâm. viitoare","dayPeriods-format-narrow-pm":"p.m.","dateFormat-medium":"dd.MM.y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["A.M."],"quarters-standAlone-abbr":["trim. I","trim. II","trim. III","trim. IV"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"s","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+-1":"ieri","field-year-short":"an","field-day-narrow-relative+-2":"alaltăieri","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"trimestrul trecut","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m/p.m.","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"săpt. trecută","days-format-short":["du.","lu.","ma.","mi.","joi","vi.","sâ."],"quarters-format-narrow":["I","II","III","IV"],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"ziua din an","field-sat-relative+-1":"sâmbăta trecută","dateTimeFormat-long":"{1} 'la' {0}","dateFormatItem-Md":"dd.MM","field-minute-narrow-relative+0":"minutul acesta","field-hour":"oră","months-format-wide":["Tișrei","Heșvan","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"luna trecută","field-quarter-short":"trim.","field-sat-narrow-relative+0":"sâ. aceasta","field-fri-relative+0":"vinerea aceasta","field-sat-narrow-relative+1":"sâ. viitoare","field-fri-relative+1":"vinerea viitoare","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","field-sun-short-relative+0":"dum. aceasta","field-sun-short-relative+1":"dum. viitoare","field-week-relative+-1":"săptămâna trecută","field-quarter-short-relative+-1":"trim. trecut","field-minute-short-relative+0":"minutul acesta","months-format-abbr":["Tișrei","Heșvan","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"field-quarter-relative+0":"trimestrul acesta","field-minute-relative+0":"minutul acesta","field-quarter-relative+1":"trimestrul viitor","field-wed-short-relative+-1":"mie. trecută","dateFormat-short":"dd.MM.y GGGGG","field-thu-short-relative+-1":"joia trecută","field-year-narrow-relative+-1":"anul trecut","days-standAlone-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"lu. trecută","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jo. trecută","field-tue-narrow-relative+-1":"ma. trecută","field-weekOfMonth-short":"săpt. din lună","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"mie. aceasta","months-standAlone-wide":["Tișrei","Heșvan","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"field-wed-short-relative+1":"mie. viitoare","field-sun-relative+-1":"duminica trecută","days-standAlone-abbr":["dum.","lun.","mar.","mie.","joi","vin.","sâm."],"field-second-narrow-relative+0":"acum","dateTimeFormat-full":"{1} 'la' {0}","months-format-abbr-leap":"Adar II","field-weekday":"ziua din săptămână","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"azi","field-quarter-narrow-relative+0":"trim. acesta","field-day-short-relative+1":"mâine","field-sat-relative+0":"sâmbăta aceasta","field-quarter-narrow-relative+1":"trim. viitor","field-day-short-relative+2":"poimâine","field-sat-relative+1":"sâmbăta viitoare","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","months-standAlone-abbr":["Tișrei","Heșvan","Kislev","Tevet","Șevat","Adar I","Adar","Nisan","Iyar","Sivan","Tammuz","Av","Elul"],"months-format-wide-leap":"Adar II","months-format-narrow-leap":"7","field-dayOfYear-narrow":"ziua din an","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","field-weekdayOfMonth-short":"ziua săpt. din lună","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"fus","dateFormatItem-y":"y","field-thu-narrow-relative+0":"jo. aceasta","field-thu-narrow-relative+1":"jo. viitoare","field-sun-narrow-relative+-1":"du. trecută","field-mon-short-relative+-1":"lun. trecută","field-thu-relative+0":"joia aceasta","field-thu-relative+1":"joia viitoare","field-fri-short-relative+-1":"vin. trecută","field-thu-relative+-1":"joia trecută","field-week":"săptămână","quarters-standAlone-narrow":["I","II","III","IV"],"quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-quarter-narrow-relative+-1":"trim. trecut","field-year-short-relative+0":"anul acesta","field-dayperiod-short":"a.m/p.m.","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"anul viitor","field-fri-short-relative+0":"vin. aceasta","field-fri-short-relative+1":"vin. viitoare","days-standAlone-short":["du.","lu.","ma.","mi.","joi","vi.","sâ."],"field-week-short-relative+-1":"săpt. trecută","months-standAlone-abbr-leap":"Adar II","field-hour-narrow-relative+0":"ora aceasta","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fus","quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"field-month-narrow":"lună","field-hour-narrow":"h","field-fri-narrow-relative+-1":"vi. trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-era-narrow":"eră","field-fri-relative+-1":"vinerea trecută","eraNarrow":["A.M."],"field-tue-short-relative+-1":"mar. trecută","field-minute-narrow":"m","days-format-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"field-mon-narrow-relative+0":"lu. aceasta","field-mon-narrow-relative+1":"lu. viitoare","field-year-short-relative+-1":"anul trecut","field-zone":"fus orar","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"săpt. din lună","field-weekday-narrow":"ziua din săpt.","months-standAlone-wide-leap":"Adar II","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dum. trecută","field-day-relative+-1":"ieri","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"alaltăieri","field-weekday-short":"ziua din săpt.","days-format-abbr":["dum.","lun.","mar.","mie.","joi","vin.","sâm."],"field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","dateFormatItem-Gy":"y G","field-day-short":"zi","field-week-narrow":"săpt.","field-era":"eră","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/indian.js b/lib/dojo/cldr/nls/ro/indian.js
new file mode 100644
index 000000000..e34cca352
--- /dev/null
+++ b/lib/dojo/cldr/nls/ro/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/ro/indian",{"field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","field-tue-relative+-1":"marțea trecută","field-year":"an","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-minute":"minut","field-month-narrow-relative+-1":"luna trecută","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","field-thu-short-relative+0":"joia aceasta","field-day-short-relative+-1":"ieri","field-thu-short-relative+1":"joia viitoare","field-day-relative+0":"azi","field-day-short-relative+-2":"alaltăieri","field-day-relative+1":"mâine","field-week-narrow-relative+0":"săpt. aceasta","field-day-relative+2":"poimâine","field-week-narrow-relative+1":"săpt. viitoare","field-wed-narrow-relative+-1":"mi. trecută","field-year-narrow":"an","field-era-short":"eră","field-year-narrow-relative+0":"anul acesta","field-tue-relative+0":"marțea aceasta","field-year-narrow-relative+1":"anul viitor","field-tue-relative+1":"marțea viitoare","field-weekdayOfMonth":"ziua săptămânii din lună","field-second-short":"sec.","field-weekdayOfMonth-narrow":"ziua săpt. din lună","field-week-relative+0":"săptămâna aceasta","field-month-relative+0":"luna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+1":"luna viitoare","field-sun-narrow-relative+0":"du. aceasta","field-mon-short-relative+0":"lun. aceasta","field-sun-narrow-relative+1":"du. viitoare","field-mon-short-relative+1":"lun. viitoare","field-second-relative+0":"acum","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Saka"],"field-weekOfMonth":"săptămâna din lună","field-month-short":"lună","field-day":"zi","field-dayOfYear-short":"ziua din an","field-year-relative+-1":"anul trecut","field-sat-short-relative+-1":"sâm. trecută","field-hour-relative+0":"ora aceasta","field-second-short-relative+0":"acum","field-wed-relative+-1":"miercurea trecută","field-sat-narrow-relative+-1":"sâ. trecută","field-second":"secundă","field-hour-short-relative+0":"ora aceasta","field-quarter":"trimestru","field-week-short":"săpt.","field-day-narrow-relative+0":"azi","field-day-narrow-relative+1":"mâine","field-day-narrow-relative+2":"poimâine","field-tue-short-relative+0":"mar. aceasta","field-tue-short-relative+1":"mar. viitoare","field-month-short-relative+-1":"luna trecută","field-mon-relative+-1":"lunea trecută","field-month":"lună","field-day-narrow":"zi","field-minute-short":"min.","field-dayperiod":"a.m/p.m.","field-sat-short-relative+0":"sâm. aceasta","field-sat-short-relative+1":"sâm. viitoare","eraAbbr":["Saka"],"field-second-narrow":"s","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+-1":"ieri","field-year-short":"an","field-day-narrow-relative+-2":"alaltăieri","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"trimestrul trecut","field-dayperiod-narrow":"a.m/p.m.","field-week-narrow-relative+-1":"săpt. trecută","field-dayOfYear":"ziua din an","field-sat-relative+-1":"sâmbăta trecută","field-hour":"oră","field-minute-narrow-relative+0":"minutul acesta","months-format-wide":["Chaitra","Vaisakha","Jyeshta","Aashaadha","Shraavana","Bhadrapada","Ashwin","Kartik","Margashirsha","Pausha","Magh","Phalguna"],"field-month-relative+-1":"luna trecută","field-quarter-short":"trim.","field-sat-narrow-relative+0":"sâ. aceasta","field-fri-relative+0":"vinerea aceasta","field-sat-narrow-relative+1":"sâ. viitoare","field-fri-relative+1":"vinerea viitoare","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","field-sun-short-relative+0":"dum. aceasta","field-sun-short-relative+1":"dum. viitoare","field-week-relative+-1":"săptămâna trecută","field-quarter-short-relative+-1":"trim. trecut","field-minute-short-relative+0":"minutul acesta","months-format-abbr":["Chaitra","Vaisakha","Jyeshta","Aashaadha","Shraavana","Bhadrapada","Ashwin","Kartik","Margashirsha","Pausha","Magh","Phalguna"],"field-quarter-relative+0":"trimestrul acesta","field-minute-relative+0":"minutul acesta","field-quarter-relative+1":"trimestrul viitor","field-wed-short-relative+-1":"mie. trecută","field-thu-short-relative+-1":"joia trecută","field-year-narrow-relative+-1":"anul trecut","field-mon-narrow-relative+-1":"lu. trecută","field-thu-narrow-relative+-1":"jo. trecută","field-tue-narrow-relative+-1":"ma. trecută","field-weekOfMonth-short":"săpt. din lună","field-wed-short-relative+0":"mie. aceasta","months-standAlone-wide":["Chaitra","Vaisakha","Jyeshta","Aashaadha","Shraavana","Bhadrapada","Ashwin","Kartik","Margashirsha","Pausha","Magh","Phalguna"],"field-wed-short-relative+1":"mie. viitoare","field-sun-relative+-1":"duminica trecută","field-second-narrow-relative+0":"acum","field-weekday":"ziua din săptămână","field-day-short-relative+0":"azi","field-quarter-narrow-relative+0":"trim. acesta","field-day-short-relative+1":"mâine","field-sat-relative+0":"sâmbăta aceasta","field-quarter-narrow-relative+1":"trim. viitor","field-day-short-relative+2":"poimâine","field-sat-relative+1":"sâmbăta viitoare","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","months-standAlone-abbr":["Chaitra","Vaisakha","Jyeshta","Aashaadha","Shraavana","Bhadrapada","Ashwin","Kartik","Margashirsha","Pausha","Magh","Phalguna"],"field-dayOfYear-narrow":"ziua din an","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","field-weekdayOfMonth-short":"ziua săpt. din lună","field-zone-narrow":"fus","field-thu-narrow-relative+0":"jo. aceasta","field-thu-narrow-relative+1":"jo. viitoare","field-sun-narrow-relative+-1":"du. trecută","field-mon-short-relative+-1":"lun. trecută","field-thu-relative+0":"joia aceasta","field-thu-relative+1":"joia viitoare","field-fri-short-relative+-1":"vin. trecută","field-thu-relative+-1":"joia trecută","field-week":"săptămână","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-quarter-narrow-relative+-1":"trim. trecut","field-year-short-relative+0":"anul acesta","field-dayperiod-short":"a.m/p.m.","field-year-short-relative+1":"anul viitor","field-fri-short-relative+0":"vin. aceasta","field-fri-short-relative+1":"vin. viitoare","field-week-short-relative+-1":"săpt. trecută","field-hour-narrow-relative+0":"ora aceasta","field-hour-short":"h","field-zone-short":"fus","field-month-narrow":"lună","field-hour-narrow":"h","field-fri-narrow-relative+-1":"vi. trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-era-narrow":"eră","field-fri-relative+-1":"vinerea trecută","eraNarrow":"Saka","field-tue-short-relative+-1":"mar. trecută","field-minute-narrow":"m","field-mon-narrow-relative+0":"lu. aceasta","field-mon-narrow-relative+1":"lu. viitoare","field-year-short-relative+-1":"anul trecut","field-zone":"fus orar","field-weekOfMonth-narrow":"săpt. din lună","field-weekday-narrow":"ziua din săpt.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dum. trecută","field-day-relative+-1":"ieri","field-day-relative+-2":"alaltăieri","field-weekday-short":"ziua din săpt.","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","field-day-short":"zi","field-week-narrow":"săpt.","field-era":"eră","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/islamic.js b/lib/dojo/cldr/nls/ro/islamic.js
index daeadce47..2c0f482c2 100644
--- a/lib/dojo/cldr/nls/ro/islamic.js
+++ b/lib/dojo/cldr/nls/ro/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ro/islamic",{"days-standAlone-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"field-second-relative+0":"acum","field-weekday":"Zi a săptămânii","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"E, d MMM","field-tue-relative+-1":"marțea trecută","days-format-short":["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"vinerea trecută","field-wed-relative+-1":"miercurea trecută","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"p.m.","dateFormat-full":"EEEE, d MMMM y G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-thu-relative+-1":"joia trecută","dateFormatItem-Md":"dd.MM","field-era":"Eră","quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"field-year":"An","field-hour":"Oră","field-sat-relative+0":"sâmbăta aceasta","field-sat-relative+1":"sâmbăta viitoare","field-day-relative+0":"azi","field-thu-relative+0":"joia aceasta","field-day-relative+1":"mâine","field-thu-relative+1":"joia viitoare","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"poimâine","quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"quarters-standAlone-wide":["Trimestrul I","Trimestrul al II-lea","Trimestrul al III-lea","Trimestrul al IV-lea"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Duminică","Luni","Marți","Miercuri","Joi","Vineri","Sâmbătă"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","quarters-standAlone-abbr":["Trim. I","Trim. II","Trim. III","Trim. IV"],"eraAbbr":["AH"],"field-minute":"Minut","field-dayperiod":"a.m/p.m.","days-standAlone-abbr":["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],"field-day-relative+-1":"ieri","dateTimeFormat-long":"{1} 'la' {0}","field-day-relative+-2":"alaltăieri","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1} 'la' {0}","field-fri-relative+0":"vinerea aceasta","field-fri-relative+1":"vinerea viitoare","field-day":"Zi","days-format-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"field-zone":"Fus orar","dateFormatItem-y":"y","field-year-relative+-1":"anul trecut","field-month-relative+-1":"luna trecută","days-format-abbr":["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],"days-format-narrow":["D","L","M","M","J","V","S"],"dateFormatItem-yyyyMd":"dd.MM.y G","field-month":"Lună","days-standAlone-narrow":["D","L","M","M","J","V","S"],"field-tue-relative+0":"marțea aceasta","field-tue-relative+1":"marțea viitoare","dayPeriods-format-wide-am":"a.m.","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","dateFormat-short":"dd.MM.y GGGGG","field-second":"Secundă","field-sat-relative+-1":"sâmbăta trecută","field-sun-relative+-1":"duminica trecută","field-month-relative+0":"luna aceasta","field-month-relative+1":"luna viitoare","dateFormatItem-Ed":"E d","field-week":"Săptămână","dateFormat-medium":"dd.MM.y G","field-year-relative+0":"anul acesta","field-week-relative+-1":"săptămâna trecută","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"anul viitor","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"lunea trecută","dateFormatItem-yyyy":"y G","field-week-relative+0":"săptămâna aceasta","field-week-relative+1":"săptămâna viitoare"}); \ No newline at end of file
+define("dojo/cldr/nls/ro/islamic",{"field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","field-tue-relative+-1":"marțea trecută","field-year":"an","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-minute":"minut","field-month-narrow-relative+-1":"luna trecută","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","field-thu-short-relative+0":"joia aceasta","field-day-short-relative+-1":"ieri","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"joia viitoare","field-day-relative+0":"azi","field-day-short-relative+-2":"alaltăieri","field-day-relative+1":"mâine","field-week-narrow-relative+0":"săpt. aceasta","field-day-relative+2":"poimâine","field-week-narrow-relative+1":"săpt. viitoare","field-wed-narrow-relative+-1":"mi. trecută","field-year-narrow":"an","field-era-short":"eră","field-year-narrow-relative+0":"anul acesta","field-tue-relative+0":"marțea aceasta","field-year-narrow-relative+1":"anul viitor","field-tue-relative+1":"marțea viitoare","field-weekdayOfMonth":"ziua săptămânii din lună","field-second-short":"sec.","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"ziua săpt. din lună","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"săptămâna aceasta","field-month-relative+0":"luna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+1":"luna viitoare","field-sun-narrow-relative+0":"du. aceasta","field-mon-short-relative+0":"lun. aceasta","field-sun-narrow-relative+1":"du. viitoare","field-mon-short-relative+1":"lun. viitoare","field-second-relative+0":"acum","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["A.H."],"field-weekOfMonth":"săptămâna din lună","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"lună","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"dd.MM.y G","field-day":"zi","field-dayOfYear-short":"ziua din an","field-year-relative+-1":"anul trecut","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"sâm. trecută","field-hour-relative+0":"ora aceasta","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-second-short-relative+0":"acum","field-wed-relative+-1":"miercurea trecută","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"sâ. trecută","field-second":"secundă","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"ora aceasta","field-quarter":"trimestru","field-week-short":"săpt.","field-day-narrow-relative+0":"azi","field-day-narrow-relative+1":"mâine","field-day-narrow-relative+2":"poimâine","quarters-standAlone-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-tue-short-relative+0":"mar. aceasta","field-tue-short-relative+1":"mar. viitoare","field-month-short-relative+-1":"luna trecută","field-mon-relative+-1":"lunea trecută","dateFormatItem-GyMMM":"MMM y G","field-month":"lună","field-day-narrow":"zi","field-minute-short":"min.","field-dayperiod":"a.m/p.m.","field-sat-short-relative+0":"sâm. aceasta","field-sat-short-relative+1":"sâm. viitoare","dayPeriods-format-narrow-pm":"p.m.","dateFormat-medium":"dd.MM.y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AH"],"quarters-standAlone-abbr":["trim. I","trim. II","trim. III","trim. IV"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"s","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+-1":"ieri","field-year-short":"an","field-day-narrow-relative+-2":"alaltăieri","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"trimestrul trecut","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m/p.m.","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"săpt. trecută","days-format-short":["du.","lu.","ma.","mi.","joi","vi.","sâ."],"quarters-format-narrow":["I","II","III","IV"],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"ziua din an","field-sat-relative+-1":"sâmbăta trecută","dateTimeFormat-long":"{1} 'la' {0}","dateFormatItem-Md":"dd.MM","field-minute-narrow-relative+0":"minutul acesta","field-hour":"oră","months-format-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"luna trecută","field-quarter-short":"trim.","field-sat-narrow-relative+0":"sâ. aceasta","field-fri-relative+0":"vinerea aceasta","field-sat-narrow-relative+1":"sâ. viitoare","field-fri-relative+1":"vinerea viitoare","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","field-sun-short-relative+0":"dum. aceasta","field-sun-short-relative+1":"dum. viitoare","field-week-relative+-1":"săptămâna trecută","field-quarter-short-relative+-1":"trim. trecut","field-minute-short-relative+0":"minutul acesta","months-format-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-quarter-relative+0":"trimestrul acesta","field-minute-relative+0":"minutul acesta","field-quarter-relative+1":"trimestrul viitor","field-wed-short-relative+-1":"mie. trecută","dateFormat-short":"dd.MM.y GGGGG","field-thu-short-relative+-1":"joia trecută","field-year-narrow-relative+-1":"anul trecut","days-standAlone-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"lu. trecută","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jo. trecută","field-tue-narrow-relative+-1":"ma. trecută","field-weekOfMonth-short":"săpt. din lună","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"mie. aceasta","months-standAlone-wide":["Muharram","Safar","Rabiʻ I","Rabiʻ II","Jumada I","Jumada II","Rajab","Shaʻban","Ramadan","Shawwal","Dhuʻl-Qiʻdah","Dhuʻl-Hijjah"],"field-wed-short-relative+1":"mie. viitoare","field-sun-relative+-1":"duminica trecută","days-standAlone-abbr":["dum.","lun.","mar.","mie.","joi","vin.","sâm."],"field-second-narrow-relative+0":"acum","dateTimeFormat-full":"{1} 'la' {0}","field-weekday":"ziua din săptămână","field-day-short-relative+0":"azi","field-quarter-narrow-relative+0":"trim. acesta","field-day-short-relative+1":"mâine","field-sat-relative+0":"sâmbăta aceasta","field-quarter-narrow-relative+1":"trim. viitor","field-day-short-relative+2":"poimâine","field-sat-relative+1":"sâmbăta viitoare","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","months-standAlone-abbr":["Muh.","Saf.","Rab. I","Rab. II","Jum. I","Jum. II","Raj.","Sha.","Ram.","Shaw.","Dhuʻl-Q.","Dhuʻl-H."],"field-dayOfYear-narrow":"ziua din an","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","field-weekdayOfMonth-short":"ziua săpt. din lună","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"fus","dateFormatItem-y":"y","field-thu-narrow-relative+0":"jo. aceasta","field-thu-narrow-relative+1":"jo. viitoare","field-sun-narrow-relative+-1":"du. trecută","field-mon-short-relative+-1":"lun. trecută","field-thu-relative+0":"joia aceasta","field-thu-relative+1":"joia viitoare","field-fri-short-relative+-1":"vin. trecută","field-thu-relative+-1":"joia trecută","field-week":"săptămână","quarters-standAlone-narrow":["I","II","III","IV"],"quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-quarter-narrow-relative+-1":"trim. trecut","field-year-short-relative+0":"anul acesta","field-dayperiod-short":"a.m/p.m.","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"anul viitor","field-fri-short-relative+0":"vin. aceasta","field-fri-short-relative+1":"vin. viitoare","days-standAlone-short":["du.","lu.","ma.","mi.","joi","vi.","sâ."],"field-week-short-relative+-1":"săpt. trecută","field-hour-narrow-relative+0":"ora aceasta","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fus","quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"field-month-narrow":"lună","field-hour-narrow":"h","field-fri-narrow-relative+-1":"vi. trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-era-narrow":"eră","field-fri-relative+-1":"vinerea trecută","eraNarrow":"AH","field-tue-short-relative+-1":"mar. trecută","field-minute-narrow":"m","days-format-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"field-mon-narrow-relative+0":"lu. aceasta","field-mon-narrow-relative+1":"lu. viitoare","field-year-short-relative+-1":"anul trecut","field-zone":"fus orar","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"săpt. din lună","field-weekday-narrow":"ziua din săpt.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dum. trecută","field-day-relative+-1":"ieri","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"alaltăieri","field-weekday-short":"ziua din săpt.","days-format-abbr":["dum.","lun.","mar.","mie.","joi","vin.","sâm."],"field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","dateFormatItem-Gy":"y G","field-day-short":"zi","field-week-narrow":"săpt.","field-era":"eră","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/number.js b/lib/dojo/cldr/nls/ro/number.js
index 358711068..870fb31df 100644
--- a/lib/dojo/cldr/nls/ro/number.js
+++ b/lib/dojo/cldr/nls/ro/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ro/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 de trilioane","decimalFormat-short":"000 tril'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/ro/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 tril'.'","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 de trilioane","decimalFormat":"#,##0.###","currencyFormat-short":"000 tril'.' ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/persian.js b/lib/dojo/cldr/nls/ro/persian.js
new file mode 100644
index 000000000..1c4312e2c
--- /dev/null
+++ b/lib/dojo/cldr/nls/ro/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/ro/persian",{"field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","field-tue-relative+-1":"marțea trecută","field-year":"an","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-minute":"minut","field-month-narrow-relative+-1":"luna trecută","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","field-thu-short-relative+0":"joia aceasta","field-day-short-relative+-1":"ieri","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"joia viitoare","field-day-relative+0":"azi","field-day-short-relative+-2":"alaltăieri","field-day-relative+1":"mâine","field-week-narrow-relative+0":"săpt. aceasta","field-day-relative+2":"poimâine","field-week-narrow-relative+1":"săpt. viitoare","field-wed-narrow-relative+-1":"mi. trecută","field-year-narrow":"an","field-era-short":"eră","field-year-narrow-relative+0":"anul acesta","field-tue-relative+0":"marțea aceasta","field-year-narrow-relative+1":"anul viitor","field-tue-relative+1":"marțea viitoare","field-weekdayOfMonth":"ziua săptămânii din lună","field-second-short":"sec.","dayPeriods-format-narrow-am":"a.m.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"ziua săpt. din lună","dayPeriods-format-abbr-am":"a.m.","field-week-relative+0":"săptămâna aceasta","field-month-relative+0":"luna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+1":"luna viitoare","field-sun-narrow-relative+0":"du. aceasta","field-mon-short-relative+0":"lun. aceasta","field-sun-narrow-relative+1":"du. viitoare","field-mon-short-relative+1":"lun. viitoare","field-second-relative+0":"acum","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Anno Persico"],"field-weekOfMonth":"săptămâna din lună","dayPeriods-standAlone-abbr-pm":"p.m.","field-month-short":"lună","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-yyyyMd":"dd.MM.y G","field-day":"zi","field-dayOfYear-short":"ziua din an","field-year-relative+-1":"anul trecut","dayPeriods-format-wide-am":"a.m.","field-sat-short-relative+-1":"sâm. trecută","field-hour-relative+0":"ora aceasta","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-second-short-relative+0":"acum","field-wed-relative+-1":"miercurea trecută","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"sâ. trecută","field-second":"secundă","days-standAlone-narrow":["D","L","M","M","J","V","S"],"dayPeriods-standAlone-wide-pm":"p.m.","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"ora aceasta","field-quarter":"trimestru","field-week-short":"săpt.","field-day-narrow-relative+0":"azi","field-day-narrow-relative+1":"mâine","field-day-narrow-relative+2":"poimâine","quarters-standAlone-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"days-format-narrow":["D","L","M","M","J","V","S"],"field-tue-short-relative+0":"mar. aceasta","field-tue-short-relative+1":"mar. viitoare","field-month-short-relative+-1":"luna trecută","field-mon-relative+-1":"lunea trecută","dateFormatItem-GyMMM":"MMM y G","field-month":"lună","field-day-narrow":"zi","field-minute-short":"min.","field-dayperiod":"a.m/p.m.","field-sat-short-relative+0":"sâm. aceasta","field-sat-short-relative+1":"sâm. viitoare","dayPeriods-format-narrow-pm":"p.m.","dateFormat-medium":"dd.MM.y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["A.P."],"quarters-standAlone-abbr":["trim. I","trim. II","trim. III","trim. IV"],"dayPeriods-format-abbr-pm":"p.m.","dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"s","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+-1":"ieri","field-year-short":"an","field-day-narrow-relative+-2":"alaltăieri","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"trimestrul trecut","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"a.m/p.m.","dayPeriods-standAlone-narrow-am":"a.m.","field-week-narrow-relative+-1":"săpt. trecută","days-format-short":["du.","lu.","ma.","mi.","joi","vi.","sâ."],"quarters-format-narrow":["I","II","III","IV"],"dayPeriods-format-wide-pm":"p.m.","field-dayOfYear":"ziua din an","field-sat-relative+-1":"sâmbăta trecută","dateTimeFormat-long":"{1} 'la' {0}","dateFormatItem-Md":"dd.MM","field-minute-narrow-relative+0":"minutul acesta","field-hour":"oră","months-format-wide":["Farvardin","Ordibehesht","Khordad","Tir","A-Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"dateFormat-full":"EEEE, d MMMM y G","field-month-relative+-1":"luna trecută","field-quarter-short":"trim.","field-sat-narrow-relative+0":"sâ. aceasta","field-fri-relative+0":"vinerea aceasta","field-sat-narrow-relative+1":"sâ. viitoare","field-fri-relative+1":"vinerea viitoare","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","field-sun-short-relative+0":"dum. aceasta","field-sun-short-relative+1":"dum. viitoare","field-week-relative+-1":"săptămâna trecută","field-quarter-short-relative+-1":"trim. trecut","field-minute-short-relative+0":"minutul acesta","months-format-abbr":["Farvardin","Ordibehesht","Khordad","Tir","A-Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-quarter-relative+0":"trimestrul acesta","field-minute-relative+0":"minutul acesta","field-quarter-relative+1":"trimestrul viitor","field-wed-short-relative+-1":"mie. trecută","dateFormat-short":"dd.MM.y GGGGG","field-thu-short-relative+-1":"joia trecută","field-year-narrow-relative+-1":"anul trecut","days-standAlone-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"dateFormatItem-yyyyMMMEd":"E, d MMM y G","field-mon-narrow-relative+-1":"lu. trecută","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"jo. trecută","field-tue-narrow-relative+-1":"ma. trecută","field-weekOfMonth-short":"săpt. din lună","dayPeriods-standAlone-narrow-pm":"p.m.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"mie. aceasta","months-standAlone-wide":["Farvardin","Ordibehesht","Khordad","Tir","A-Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-wed-short-relative+1":"mie. viitoare","field-sun-relative+-1":"duminica trecută","days-standAlone-abbr":["dum.","lun.","mar.","mie.","joi","vin.","sâm."],"field-second-narrow-relative+0":"acum","dateTimeFormat-full":"{1} 'la' {0}","field-weekday":"ziua din săptămână","field-day-short-relative+0":"azi","field-quarter-narrow-relative+0":"trim. acesta","field-day-short-relative+1":"mâine","field-sat-relative+0":"sâmbăta aceasta","field-quarter-narrow-relative+1":"trim. viitor","field-day-short-relative+2":"poimâine","field-sat-relative+1":"sâmbăta viitoare","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordad","Tir","A-Mordad","Shahrivar","Mehr","Aban","Azar","Dey","Bahman","Esfand"],"field-dayOfYear-narrow":"ziua din an","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","field-weekdayOfMonth-short":"ziua săpt. din lună","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"fus","dateFormatItem-y":"y","field-thu-narrow-relative+0":"jo. aceasta","field-thu-narrow-relative+1":"jo. viitoare","field-sun-narrow-relative+-1":"du. trecută","field-mon-short-relative+-1":"lun. trecută","field-thu-relative+0":"joia aceasta","field-thu-relative+1":"joia viitoare","field-fri-short-relative+-1":"vin. trecută","field-thu-relative+-1":"joia trecută","field-week":"săptămână","quarters-standAlone-narrow":["I","II","III","IV"],"quarters-format-wide":["trimestrul I","trimestrul al II-lea","trimestrul al III-lea","trimestrul al IV-lea"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-quarter-narrow-relative+-1":"trim. trecut","field-year-short-relative+0":"anul acesta","field-dayperiod-short":"a.m/p.m.","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"anul viitor","field-fri-short-relative+0":"vin. aceasta","field-fri-short-relative+1":"vin. viitoare","days-standAlone-short":["du.","lu.","ma.","mi.","joi","vi.","sâ."],"field-week-short-relative+-1":"săpt. trecută","field-hour-narrow-relative+0":"ora aceasta","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"fus","quarters-format-abbr":["trim. I","trim. II","trim. III","trim. IV"],"field-month-narrow":"lună","field-hour-narrow":"h","field-fri-narrow-relative+-1":"vi. trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-era-narrow":"eră","field-fri-relative+-1":"vinerea trecută","eraNarrow":"A.P.","field-tue-short-relative+-1":"mar. trecută","field-minute-narrow":"m","days-format-wide":["duminică","luni","marți","miercuri","joi","vineri","sâmbătă"],"field-mon-narrow-relative+0":"lu. aceasta","field-mon-narrow-relative+1":"lu. viitoare","field-year-short-relative+-1":"anul trecut","field-zone":"fus orar","dateFormatItem-MMMEd":"E, d MMM","field-weekOfMonth-narrow":"săpt. din lună","field-weekday-narrow":"ziua din săpt.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dum. trecută","field-day-relative+-1":"ieri","dayPeriods-standAlone-abbr-am":"a.m.","field-day-relative+-2":"alaltăieri","field-weekday-short":"ziua din săpt.","days-format-abbr":["dum.","lun.","mar.","mie.","joi","vin.","sâm."],"field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","dateFormatItem-Gy":"y G","field-day-short":"zi","field-week-narrow":"săpt.","field-era":"eră","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare","dayPeriods-standAlone-wide-am":"a.m."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ro/roc.js b/lib/dojo/cldr/nls/ro/roc.js
new file mode 100644
index 000000000..17becd15f
--- /dev/null
+++ b/lib/dojo/cldr/nls/ro/roc.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/ro/roc",{"field-quarter-short-relative+0":"trim. acesta","field-quarter-short-relative+1":"trim. viitor","field-tue-relative+-1":"marțea trecută","field-year":"an","field-wed-relative+0":"miercurea aceasta","field-wed-relative+1":"miercurea viitoare","field-minute":"minut","field-month-narrow-relative+-1":"luna trecută","field-tue-narrow-relative+0":"ma. aceasta","field-tue-narrow-relative+1":"ma. viitoare","field-thu-short-relative+0":"joia aceasta","field-day-short-relative+-1":"ieri","field-thu-short-relative+1":"joia viitoare","field-day-relative+0":"azi","field-day-short-relative+-2":"alaltăieri","field-day-relative+1":"mâine","field-week-narrow-relative+0":"săpt. aceasta","field-day-relative+2":"poimâine","field-week-narrow-relative+1":"săpt. viitoare","field-wed-narrow-relative+-1":"mi. trecută","field-year-narrow":"an","field-era-short":"eră","field-year-narrow-relative+0":"anul acesta","field-tue-relative+0":"marțea aceasta","field-year-narrow-relative+1":"anul viitor","field-tue-relative+1":"marțea viitoare","field-weekdayOfMonth":"ziua săptămânii din lună","field-second-short":"sec.","field-weekdayOfMonth-narrow":"ziua săpt. din lună","field-week-relative+0":"săptămâna aceasta","field-month-relative+0":"luna aceasta","field-week-relative+1":"săptămâna viitoare","field-month-relative+1":"luna viitoare","field-sun-narrow-relative+0":"du. aceasta","field-mon-short-relative+0":"lun. aceasta","field-sun-narrow-relative+1":"du. viitoare","field-mon-short-relative+1":"lun. viitoare","field-second-relative+0":"acum","eraNames":["înainte de Republica China","Republica China"],"field-weekOfMonth":"săptămâna din lună","field-month-short":"lună","field-day":"zi","field-dayOfYear-short":"ziua din an","field-year-relative+-1":"anul trecut","field-sat-short-relative+-1":"sâm. trecută","field-hour-relative+0":"ora aceasta","field-second-short-relative+0":"acum","field-wed-relative+-1":"miercurea trecută","field-sat-narrow-relative+-1":"sâ. trecută","field-second":"secundă","field-hour-short-relative+0":"ora aceasta","field-quarter":"trimestru","field-week-short":"săpt.","field-day-narrow-relative+0":"azi","field-day-narrow-relative+1":"mâine","field-day-narrow-relative+2":"poimâine","field-tue-short-relative+0":"mar. aceasta","field-tue-short-relative+1":"mar. viitoare","field-month-short-relative+-1":"luna trecută","field-mon-relative+-1":"lunea trecută","field-month":"lună","field-day-narrow":"zi","field-minute-short":"min.","field-dayperiod":"a.m/p.m.","field-sat-short-relative+0":"sâm. aceasta","field-sat-short-relative+1":"sâm. viitoare","eraAbbr":["î.R.C.","R.C."],"field-second-narrow":"s","field-mon-relative+0":"lunea aceasta","field-mon-relative+1":"lunea viitoare","field-day-narrow-relative+-1":"ieri","field-year-short":"an","field-day-narrow-relative+-2":"alaltăieri","field-quarter-relative+-1":"trimestrul trecut","field-dayperiod-narrow":"a.m/p.m.","field-week-narrow-relative+-1":"săpt. trecută","field-dayOfYear":"ziua din an","field-sat-relative+-1":"sâmbăta trecută","field-hour":"oră","field-minute-narrow-relative+0":"minutul acesta","field-month-relative+-1":"luna trecută","field-quarter-short":"trim.","field-sat-narrow-relative+0":"sâ. aceasta","field-fri-relative+0":"vinerea aceasta","field-sat-narrow-relative+1":"sâ. viitoare","field-fri-relative+1":"vinerea viitoare","field-month-narrow-relative+0":"luna aceasta","field-month-narrow-relative+1":"luna viitoare","field-sun-short-relative+0":"dum. aceasta","field-sun-short-relative+1":"dum. viitoare","field-week-relative+-1":"săptămâna trecută","field-quarter-short-relative+-1":"trim. trecut","field-minute-short-relative+0":"minutul acesta","field-quarter-relative+0":"trimestrul acesta","field-minute-relative+0":"minutul acesta","field-quarter-relative+1":"trimestrul viitor","field-wed-short-relative+-1":"mie. trecută","field-thu-short-relative+-1":"joia trecută","field-year-narrow-relative+-1":"anul trecut","field-mon-narrow-relative+-1":"lu. trecută","field-thu-narrow-relative+-1":"jo. trecută","field-tue-narrow-relative+-1":"ma. trecută","field-weekOfMonth-short":"săpt. din lună","field-wed-short-relative+0":"mie. aceasta","field-wed-short-relative+1":"mie. viitoare","field-sun-relative+-1":"duminica trecută","field-second-narrow-relative+0":"acum","field-weekday":"ziua din săptămână","field-day-short-relative+0":"azi","field-quarter-narrow-relative+0":"trim. acesta","field-sat-relative+0":"sâmbăta aceasta","field-day-short-relative+1":"mâine","field-quarter-narrow-relative+1":"trim. viitor","field-sat-relative+1":"sâmbăta viitoare","field-day-short-relative+2":"poimâine","field-week-short-relative+0":"săpt. aceasta","field-week-short-relative+1":"săpt. viitoare","field-dayOfYear-narrow":"ziua din an","field-month-short-relative+0":"luna aceasta","field-month-short-relative+1":"luna viitoare","field-weekdayOfMonth-short":"ziua săpt. din lună","field-zone-narrow":"fus","field-thu-narrow-relative+0":"jo. aceasta","field-thu-narrow-relative+1":"jo. viitoare","field-sun-narrow-relative+-1":"du. trecută","field-mon-short-relative+-1":"lun. trecută","field-thu-relative+0":"joia aceasta","field-thu-relative+1":"joia viitoare","field-fri-short-relative+-1":"vin. trecută","field-thu-relative+-1":"joia trecută","field-week":"săptămână","field-wed-narrow-relative+0":"mi. aceasta","field-wed-narrow-relative+1":"mi. viitoare","field-quarter-narrow-relative+-1":"trim. trecut","field-year-short-relative+0":"anul acesta","field-dayperiod-short":"a.m/p.m.","field-year-short-relative+1":"anul viitor","field-fri-short-relative+0":"vin. aceasta","field-fri-short-relative+1":"vin. viitoare","field-week-short-relative+-1":"săpt. trecută","field-hour-narrow-relative+0":"ora aceasta","field-hour-short":"h","field-zone-short":"fus","field-month-narrow":"lună","field-hour-narrow":"h","field-fri-narrow-relative+-1":"vi. trecută","field-year-relative+0":"anul acesta","field-year-relative+1":"anul viitor","field-era-narrow":"eră","field-fri-relative+-1":"vinerea trecută","eraNarrow":["î.R.C.","R.C."],"field-tue-short-relative+-1":"mar. trecută","field-minute-narrow":"m","field-mon-narrow-relative+0":"lu. aceasta","field-mon-narrow-relative+1":"lu. viitoare","field-year-short-relative+-1":"anul trecut","field-zone":"fus orar","field-weekOfMonth-narrow":"săpt. din lună","field-weekday-narrow":"ziua din săpt.","field-quarter-narrow":"trim.","field-sun-short-relative+-1":"dum. trecută","field-day-relative+-1":"ieri","field-day-relative+-2":"alaltăieri","field-weekday-short":"ziua din săpt.","field-sun-relative+0":"duminica aceasta","field-sun-relative+1":"duminica viitoare","field-day-short":"zi","field-week-narrow":"săpt.","field-era":"eră","field-fri-narrow-relative+0":"vi. aceasta","field-fri-narrow-relative+1":"vi. viitoare"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/roc.js b/lib/dojo/cldr/nls/roc.js
index b3d200481..a08537abc 100644
--- a/lib/dojo/cldr/nls/roc.js
+++ b/lib/dojo/cldr/nls/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/roc",{root:{"dateTimeFormats-appendItem-Year":"{1} {0}","field-tue-relative+-1":"last Tuesday","field-year":"Year","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-ms":"mm:ss","timeFormat-short":"HH:mm","field-minute":"Minute","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"today","field-day-relative+1":"tomorrow","dayPeriods@localeAlias555":{"bundle":"gregorian","target":"dayPeriods"},"field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"MMM d","dayPeriods-format-abbr-am":"AM","field-week-relative+0":"this week","field-month-relative+0":"this month","field-week-relative+1":"next week","field-month-relative+1":"next month","timeFormat-medium":"HH:mm:ss","field-second-relative+0":"now","dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","dateFormatItem-yyyyQQQ":"G y QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Before R.O.C.","R.O.C."],"dateFormatItem-GyMMMEd":"G y MMM d, E","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-day":"Day","field-year-relative+-1":"last year","dayPeriods-format-wide-am":"AM","dateTime@localeAlias562":{"bundle":"generic","target":"dateTime"},"days-format-narrow@localeAlias540":{"bundle":"gregorian","target":"days-standAlone-narrow"},"dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-wed-relative+-1":"last Wednesday","dateTimeFormat-medium":"{1} {0}","days-standAlone-narrow":["S","M","T","W","T","F","S"],"field-second":"Second","days@localeAlias538":{"bundle":"gregorian","target":"days"},"dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G y MMMM d","dateFormatItem-GyMMMd":"G y MMM d","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateTimeFormats-appendItem-Timezone":"{0} {1}","eraNames@localeAlias558":{"bundle":"roc","target":"eraAbbr"},"field-mon-relative+-1":"last Monday","dateFormatItem-GyMMM":"G y MMM","field-month":"Month","dateFormatItem-MMM":"LLL","field-dayperiod":"Dayperiod","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"G y MMM d","eraAbbr":["Before R.O.C.","R.O.C."],"quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-abbr-pm":"PM","dateFormatItem-yyyyM":"GGGGG y-MM","field-mon-relative+0":"this Monday","field-mon-relative+1":"next Monday","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-yyyyMMMd":"G y MMM d","days-standAlone-wide@localeAlias548":{"bundle":"gregorian","target":"days-format-wide"},"days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"dayPeriods-format-wide-pm":"PM","field-sat-relative+-1":"last Saturday","quarters@localeAlias549":{"bundle":"gregorian","target":"quarters"},"dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"MM-dd","days-standAlone-abbr@localeAlias543":{"bundle":"gregorian","target":"days-format-abbr"},"field-hour":"Hour","days-standAlone-abbr@localeAlias544":{"bundle":"gregorian","target":"days-format-wide"},"months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"dateFormat-full":"G y MMMM d, EEEE","field-month-relative+-1":"last month","dateFormatItem-Hms":"HH:mm:ss","field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","quarters-format-narrow@localeAlias551":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"dayPeriods-format-narrow-noon":"n","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","days-format-abbr@localeAlias539":{"bundle":"gregorian","target":"days-format-wide"},"field-week-relative+-1":"last week","dateFormatItem-Ehm":"E h:mm a","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"timeFormat-long":"HH:mm:ss z","months@localeAlias532":{"bundle":"gregorian","target":"months"},"dateFormat-short":"GGGGG y-MM-dd","months-format-abbr@localeAlias533":{"bundle":"gregorian","target":"months-format-wide"},"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Era":"{1} {0}","dateFormatItem-H":"HH","dateFormatItem-yyyy":"G y","months-format-narrow@localeAlias534":{"bundle":"gregorian","target":"months-standAlone-narrow"},"dateFormatItem-M":"L","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-sun-relative+-1":"last Sunday","days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","dateFormat@localeAlias560":{"bundle":"generic","target":"dateFormat"},"dateFormatItem-d":"d","field-weekday":"Day of the Week","field-sat-relative+0":"this Saturday","dateFormatItem-h":"h a","field-sat-relative+1":"next Saturday","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"quarters-standAlone-wide@localeAlias554":{"bundle":"gregorian","target":"quarters-format-wide"},"timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-MEd":"MM-dd, E","dateFormatItem-y":"G y","field-thu-relative+0":"this Thursday","field-thu-relative+1":"next Thursday","dateFormatItem-hms":"h:mm:ss a","dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","dayPeriods-format-abbr-noon":"noon","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-thu-relative+-1":"last Thursday","field-week":"Week","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["Q1","Q2","Q3","Q4"],"dateFormatItem-Ed":"d, E","dateFormatItem-yyyyMMM":"G y MMM","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-standAlone-abbr@localeAlias552":{"bundle":"gregorian","target":"quarters-format-abbr"},"quarters-standAlone-abbr@localeAlias553":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-yyyyQQQQ":"G y QQQQ","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"field-year-relative+0":"this year","field-year-relative+1":"next year","field-fri-relative+-1":"last Friday","eraNarrow":["Before R.O.C.","R.O.C."],"quarters-format-abbr@localeAlias550":{"bundle":"gregorian","target":"quarters-format-wide"},"days-standAlone-short@localeAlias545":{"bundle":"gregorian","target":"days-format-short"},"months-standAlone-wide@localeAlias537":{"bundle":"gregorian","target":"months-format-wide"},"days-standAlone-short@localeAlias546":{"bundle":"gregorian","target":"days-format-abbr"},"dayPeriods-format-wide-noon":"noon","days-standAlone-short@localeAlias547":{"bundle":"gregorian","target":"days-format-wide"},"dayPeriods-format-abbr@localeAlias556":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"dayPeriods-format-abbr@localeAlias557":{"bundle":"gregorian","target":"dayPeriods-format-wide"},"days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","dateFormatItem-EHm":"E HH:mm","months-standAlone-abbr@localeAlias535":{"bundle":"gregorian","target":"months-format-abbr"},"field-zone":"Zone","months-standAlone-abbr@localeAlias536":{"bundle":"gregorian","target":"months-format-wide"},"days-format-short@localeAlias541":{"bundle":"gregorian","target":"days-format-abbr"},"dateFormatItem-MMMEd":"MMM d, E","days-format-short@localeAlias542":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-EHms":"E HH:mm:ss","eraNarrow@localeAlias559":{"bundle":"roc","target":"eraAbbr"},"field-day-relative+-1":"yesterday","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","dateFormatItem-Gy":"G y","field-era":"Era","timeFormat@localeAlias561":{"bundle":"gregorian","target":"timeFormat"}},"ar":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"es":true,"fi":true,"fr":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ru":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
+define("dojo/cldr/nls/roc",{root:{"field-thu-narrow-relative+0":"this Thursday","field-thu-narrow-relative+1":"next Thursday","field-sun-narrow-relative+0":"this Sunday","field-sun-narrow-relative+1":"next Sunday","field-wed-narrow@localeAlias1815":{"bundle":"","target":"field-wed-short"},"months-format-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-wed-narrow@localeAlias1816":{"bundle":"","target":"field-wed"},"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"this Friday","eraNarrow":["Before R.O.C.","R.O.C."],"field-fri-narrow-relative+1":"next Friday","days-standAlone-narrow":["S","M","T","W","T","F","S"],"days-standAlone-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"last Wednesday","field-minute-narrow-relative+0":"this minute","days-format-wide":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-month-short-relative+0":"this month","field-month-short-relative+1":"next month","dateFormatItem-Ehms":"E h:mm:ss a","field-quarter-narrow@localeAlias1782":{"bundle":"","target":"field-quarter-short"},"field-thu-relative+0":"this Thursday","field-quarter-narrow@localeAlias1783":{"bundle":"","target":"field-quarter"},"dayPeriods-format-wide-am":"AM","field-thu-relative+1":"next Thursday","months@localeAlias1739":{"bundle":"gregorian","target":"months"},"field-fri-relative+0":"this Friday","field-fri-relative+1":"next Friday","field-quarter-relative+0":"this quarter","field-thu-narrow-relative+-1":"last Thursday","field-quarter-relative+1":"next quarter","field-month-narrow@localeAlias1785":{"bundle":"","target":"field-month-short"},"field-sun-short-relative+0":"this Sunday","timeFormat-short":"HH:mm","field-month-narrow@localeAlias1786":{"bundle":"","target":"field-month"},"field-sun-short-relative+1":"next Sunday","field-year-narrow@localeAlias1779":{"bundle":"","target":"field-year-short"},"dateFormatItem-hms":"h:mm:ss a","dateFormatItem-Md":"MM-dd","field-week-narrow":"Week","eraNames@localeAlias1770":{"bundle":"roc","target":"eraAbbr"},"days-format-short@localeAlias1748":{"bundle":"gregorian","target":"days-format-abbr"},"field-hour-relative+0":"this hour","days-format-short@localeAlias1749":{"bundle":"gregorian","target":"days-format-wide"},"field-day-relative+-1":"yesterday","field-mon-narrow-relative+-1":"last Monday","field-minute-narrow":"Minute","field-dayOfYear-short@localeAlias1796":{"bundle":"","target":"field-dayOfYear"},"field-year-narrow@localeAlias1780":{"bundle":"","target":"field-year"},"dateFormatItem-yyyyMMM":"G y MMM","field-thu-short-relative+0":"this Thursday","field-mon-relative+0":"this Monday","field-thu-short-relative+1":"next Thursday","field-mon-relative+1":"next Monday","dateTimeFormats-appendItem-Era":"{1} {0}","field-day-narrow-relative+0":"today","field-era-short":"Era","field-day-narrow-relative+1":"tomorrow","field-sat-narrow-relative+0":"this Saturday","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"next Saturday","field-week-narrow-relative+0":"this week","field-week-narrow-relative+1":"next week","field-hour-short-relative+0":"this hour","field-wed-narrow-relative+0":"this Wednesday","field-wed-narrow-relative+1":"next Wednesday","field-wed-short@localeAlias1814":{"bundle":"","target":"field-wed"},"field-month":"Month","months-standAlone-wide":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-thu-short@localeAlias1817":{"bundle":"","target":"field-thu"},"dateTimeFormats-appendItem-Second":"{0} ({2}: {1})","field-weekday-narrow":"Day of the Week","field-year-relative+0":"this year","field-year-relative+1":"next year","field-tue-relative+0":"this Tuesday","field-tue-relative+1":"next Tuesday","field-minute-short-relative+0":"this minute","dateFormatItem-hm":"h:mm a","field-year-narrow":"Year","months-format-narrow@localeAlias1741":{"bundle":"gregorian","target":"months-standAlone-narrow"},"dateTimeFormats-appendItem-Day":"{0} ({2}: {1})","field-tue-short-relative+0":"this Tuesday","field-weekday-short@localeAlias1799":{"bundle":"","target":"field-weekday"},"field-tue-short-relative+1":"next Tuesday","dateTimeFormats-appendItem-Year":"{1} {0}","dateTimeFormats-appendItem-Day-Of-Week":"{0} {1}","field-tue-narrow-relative+0":"this Tuesday","field-tue-narrow-relative+1":"next Tuesday","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","days-standAlone-abbr@localeAlias1750":{"bundle":"gregorian","target":"days-format-abbr"},"dateFormatItem-EBhm":"E h:mm B","days-standAlone-abbr@localeAlias1751":{"bundle":"gregorian","target":"days-format-wide"},"dateFormatItem-H":"HH","field-era-short@localeAlias1775":{"bundle":"","target":"field-era"},"field-wed-relative+0":"this Wednesday","field-wed-relative+1":"next Wednesday","dateFormatItem-M":"L","field-wed-short-relative+0":"this Wednesday","field-wed-short-relative+1":"next Wednesday","field-fri-short-relative+0":"this Friday","field-weekOfMonth-short":"Week Of Month","field-quarter-short@localeAlias1781":{"bundle":"","target":"field-quarter"},"field-fri-short-relative+1":"next Friday","field-quarter-short-relative+-1":"last quarter","field-year-short-relative+-1":"last year","dateFormatItem-Bhm":"h:mm B","dateTimeFormats-appendItem-Hour":"{0} ({2}: {1})","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"last quarter","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","months-format-abbr@localeAlias1740":{"bundle":"gregorian","target":"months-format-wide"},"dateFormatItem-h":"h a","quarters-standAlone-wide":["Q1","Q2","Q3","Q4"],"field-weekOfMonth-narrow":"Week Of Month","dateFormatItem-yyyyQQQ":"G y QQQ","dateFormatItem-yyyyMMMM":"G y MMMM","dateFormatItem-y":"G y","field-weekdayOfMonth-narrow@localeAlias1803":{"bundle":"","target":"field-weekdayOfMonth-short"},"field-minute-relative+0":"this minute","field-year-short-relative+0":"this year","field-weekdayOfMonth-narrow@localeAlias1804":{"bundle":"","target":"field-weekdayOfMonth"},"dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"next year","field-weekday":"Day of the Week","dayPeriods-format-narrow-pm":"PM","dateTimeFormats-appendItem-Quarter":"{0} ({2}: {1})","field-tue-narrow-relative+-1":"last Tuesday","months-standAlone-abbr@localeAlias1742":{"bundle":"gregorian","target":"months-format-abbr"},"months-standAlone-abbr@localeAlias1743":{"bundle":"gregorian","target":"months-format-wide"},"field-minute-short@localeAlias1832":{"bundle":"","target":"field-minute"},"field-year-narrow-relative+-1":"last year","dateFormatItem-yyyyMMMd":"G y MMM d","field-weekOfMonth-short@localeAlias1790":{"bundle":"","target":"field-weekOfMonth"},"field-sat-relative+-1":"last Saturday","field-mon-narrow@localeAlias1809":{"bundle":"","target":"field-mon-short"},"field-sun-narrow@localeAlias1806":{"bundle":"","target":"field-sun-short"},"field-sun-narrow@localeAlias1807":{"bundle":"","target":"field-sun"},"dayPeriods-standAlone-narrow-pm":"PM","field-mon-narrow-relative+0":"this Monday","field-mon-narrow-relative+1":"next Monday","field-second":"Second","field-year-relative+-1":"last year","field-mon-narrow@localeAlias1810":{"bundle":"","target":"field-mon"},"field-weekdayOfMonth-short":"Weekday Of Month","dateFormat-short":"GGGGG y-MM-dd","field-second-narrow@localeAlias1836":{"bundle":"","target":"field-second-short"},"eraNames":["Before R.O.C.","R.O.C."],"field-second-short":"Second","field-second-narrow@localeAlias1837":{"bundle":"","target":"field-second"},"field-thu-short-relative+-1":"last Thursday","field-zone":"Zone","field-dayperiod-narrow":"Dayperiod","field-sun-short-relative+-1":"last Sunday","eraAbbr":["Before R.O.C.","R.O.C."],"field-week-short":"Week","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"today","days-standAlone-short@localeAlias1752":{"bundle":"gregorian","target":"days-format-short"},"field-day-relative+1":"tomorrow","days-standAlone-short@localeAlias1753":{"bundle":"gregorian","target":"days-format-abbr"},"days-standAlone-short@localeAlias1754":{"bundle":"gregorian","target":"days-format-wide"},"field-tue-short@localeAlias1811":{"bundle":"","target":"field-tue"},"field-day-short-relative+0":"today","field-dayOfYear-short":"Day Of Year","field-day-short-relative+1":"tomorrow","dateFormat-long":"G y MMMM d","field-sun-narrow-relative+-1":"last Sunday","field-zone-short@localeAlias1838":{"bundle":"","target":"field-zone"},"field-week-narrow@localeAlias1788":{"bundle":"","target":"field-week-short"},"field-week-narrow@localeAlias1789":{"bundle":"","target":"field-week"},"days-format-narrow@localeAlias1747":{"bundle":"gregorian","target":"days-standAlone-narrow"},"field-second-short@localeAlias1835":{"bundle":"","target":"field-second"},"dateTime@localeAlias1774":{"bundle":"generic","target":"dateTime"},"field-second-relative+0":"now","field-weekdayOfMonth-short@localeAlias1802":{"bundle":"","target":"field-weekdayOfMonth"},"field-quarter-relative+-1":"last quarter","field-minute-narrow@localeAlias1833":{"bundle":"","target":"field-minute-short"},"field-minute-narrow@localeAlias1834":{"bundle":"","target":"field-minute"},"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"timeFormat@localeAlias1773":{"bundle":"gregorian","target":"timeFormat"},"dayPeriods-standAlone-wide@localeAlias1768":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-wide@localeAlias1769":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-week-relative+-1":"last week","field-month-relative+-1":"last month","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayOfYear-narrow@localeAlias1797":{"bundle":"","target":"field-dayOfYear-short"},"field-dayOfYear-narrow@localeAlias1798":{"bundle":"","target":"field-dayOfYear"},"field-year":"Year","field-era":"Era","days-standAlone-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow":["1","2","3","4"],"field-day-short-relative+-1":"yesterday","dateFormatItem-GyMMM":"G y MMM","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","dayPeriods@localeAlias1762":{"bundle":"gregorian","target":"dayPeriods"},"field-hour":"Hour","quarters-standAlone-wide@localeAlias1761":{"bundle":"gregorian","target":"quarters-format-wide"},"field-weekOfMonth-narrow@localeAlias1791":{"bundle":"","target":"field-weekOfMonth-short"},"field-weekOfMonth-narrow@localeAlias1792":{"bundle":"","target":"field-weekOfMonth"},"field-sat-short@localeAlias1823":{"bundle":"","target":"field-sat"},"quarters-format-abbr@localeAlias1757":{"bundle":"gregorian","target":"quarters-format-wide"},"field-dayOfYear-narrow":"Day Of Year","field-second-narrow-relative+0":"now","field-quarter":"Quarter","field-month-narrow-relative+0":"this month","field-month-narrow-relative+1":"next month","field-tue-narrow@localeAlias1812":{"bundle":"","target":"field-tue-short"},"field-tue-narrow@localeAlias1813":{"bundle":"","target":"field-tue"},"dateFormatItem-yyyy":"G y","dayPeriods-standAlone-narrow@localeAlias1766":{"bundle":"gregorian","target":"dayPeriods-standAlone-abbr"},"dayPeriods-standAlone-narrow@localeAlias1767":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"dateTimeFormats-appendItem-Minute":"{0} ({2}: {1})","field-day":"Day","field-mon-relative+-1":"last Monday","field-dayOfYear":"Day Of Year","dateFormat-medium":"G y MMM d","dateTimeFormat-short":"{1} {0}","dateFormatItem-GyMMMd":"G y MMM d","dateFormatItem-MEd":"MM-dd, E","field-tue-short-relative+-1":"last Tuesday","field-year-short":"Year","field-month-short":"Month","field-day-short@localeAlias1793":{"bundle":"","target":"field-day"},"dateFormatItem-MMMEd":"MMM d, E","dateFormatItem-MMMd":"MMM d","dateFormatItem-Bh":"h B","months-format-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-mon-short@localeAlias1808":{"bundle":"","target":"field-mon"},"dayPeriods-format-abbr-am":"AM","field-era-narrow@localeAlias1776":{"bundle":"","target":"field-era-short"},"field-era-narrow@localeAlias1777":{"bundle":"","target":"field-era"},"field-sat-relative+0":"this Saturday","dayPeriods-format-wide-pm":"PM","field-sat-relative+1":"next Saturday","days-format-abbr@localeAlias1746":{"bundle":"gregorian","target":"days-format-wide"},"days-standAlone-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"field-zone-short":"Zone","field-week-short-relative+0":"this week","field-week-short-relative+1":"next week","field-sun-short@localeAlias1805":{"bundle":"","target":"field-sun"},"dateFormatItem-yyyyMMMEd":"G y MMM d, E","dateTimeFormats-appendItem-Week":"{0} ({2}: {1})","field-fri-short-relative+-1":"last Friday","field-month-narrow":"Month","dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"last month","days-format-abbr":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"quarters-format-narrow@localeAlias1758":{"bundle":"gregorian","target":"quarters-standAlone-narrow"},"field-weekday-short":"Day of the Week","field-day-narrow-relative+-1":"yesterday","field-fri-narrow@localeAlias1821":{"bundle":"","target":"field-fri-short"},"field-fri-narrow@localeAlias1822":{"bundle":"","target":"field-fri"},"field-quarter-short":"Quarter","days-format-short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-narrow":["S","M","T","W","T","F","S"],"dateFormatItem-EHm":"E HH:mm","dayPeriods-format-wide@localeAlias1764":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-quarter-narrow":"Quarter","field-mon-short-relative+0":"this Monday","field-mon-short-relative+1":"next Monday","field-dayperiod-short":"Dayperiod","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"last week","field-thu-relative+-1":"last Thursday","field-mon-short-relative+-1":"last Monday","field-fri-narrow-relative+-1":"last Friday","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"this quarter","field-quarter-short-relative+1":"next quarter","dateFormatItem-Ed":"d, E","field-wed-relative+-1":"last Wednesday","field-weekOfMonth":"Week Of Month","field-weekdayOfMonth-narrow":"Weekday Of Month","field-hour-narrow@localeAlias1830":{"bundle":"","target":"field-hour-short"},"field-hour-narrow@localeAlias1831":{"bundle":"","target":"field-hour"},"dayPeriods-standAlone-wide-am":"AM","field-fri-relative+-1":"last Friday","field-weekday-narrow@localeAlias1800":{"bundle":"","target":"field-weekday-short"},"field-weekday-narrow@localeAlias1801":{"bundle":"","target":"field-weekday"},"field-minute":"Minute","quarters-standAlone-narrow":["1","2","3","4"],"field-day-narrow@localeAlias1794":{"bundle":"","target":"field-day-short"},"field-day-narrow@localeAlias1795":{"bundle":"","target":"field-day"},"field-second-short-relative+0":"now","quarters-format-wide":["Q1","Q2","Q3","Q4"],"field-day-short":"Day","field-dayperiod":"Dayperiod","field-hour-short":"Hour","months-standAlone-abbr":["M01","M02","M03","M04","M05","M06","M07","M08","M09","M10","M11","M12"],"field-month-relative+0":"this month","field-second-narrow":"Second","field-month-relative+1":"next month","dateFormat-full":"G y MMMM d, EEEE","dateFormatItem-yyyyMEd":"GGGGG y-MM-dd, E","field-era-narrow":"Era","field-sat-short-relative+-1":"last Saturday","dayPeriods-standAlone-abbr@localeAlias1765":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"eraNarrow@localeAlias1771":{"bundle":"roc","target":"eraAbbr"},"field-hour-short@localeAlias1829":{"bundle":"","target":"field-hour"},"field-week-short-relative+-1":"last week","dateTimeFormat-long":"{1} {0}","field-sun-relative+-1":"last Sunday","field-wed-short-relative+-1":"last Wednesday","dateFormatItem-yyyyQQQQ":"G y QQQQ","field-weekdayOfMonth":"Weekday Of Month","dateFormatItem-yyyyMd":"GGGGG y-MM-dd","field-zone-narrow@localeAlias1839":{"bundle":"","target":"field-zone-short"},"field-quarter-narrow-relative+0":"this quarter","dateFormatItem-GyMMMEd":"G y MMM d, E","field-quarter-narrow-relative+1":"next quarter","field-sat-short-relative+0":"this Saturday","field-sat-short-relative+1":"next Saturday","field-hour-narrow":"Hour","quarters-standAlone-abbr@localeAlias1759":{"bundle":"gregorian","target":"quarters-format-abbr"},"field-year-narrow-relative+0":"this year","field-year-narrow-relative+1":"next year","field-dayperiod-short@localeAlias1826":{"bundle":"","target":"field-dayperiod"},"dateFormatItem-Gy":"G y","field-zone-narrow":"Zone","dateFormatItem-yyyyM":"GGGGG y-MM","field-tue-relative+-1":"last Tuesday","field-zone-narrow@localeAlias1840":{"bundle":"","target":"field-zone"},"field-minute-short":"Minute","days-standAlone-wide@localeAlias1755":{"bundle":"gregorian","target":"days-format-wide"},"quarters-standAlone-abbr@localeAlias1760":{"bundle":"gregorian","target":"quarters-format-wide"},"dateFormatItem-Hm":"HH:mm","field-thu-narrow@localeAlias1818":{"bundle":"","target":"field-thu-short"},"field-thu-narrow@localeAlias1819":{"bundle":"","target":"field-thu"},"field-week-relative+0":"this week","field-week-relative+1":"next week","dateFormatItem-MMM":"LLL","field-sun-relative+0":"this Sunday","field-sun-relative+1":"next Sunday","dateFormat@localeAlias1772":{"bundle":"generic","target":"dateFormat"},"field-year-short@localeAlias1778":{"bundle":"","target":"field-year"},"field-sat-narrow@localeAlias1824":{"bundle":"","target":"field-sat-short"},"field-sat-narrow@localeAlias1825":{"bundle":"","target":"field-sat"},"field-week-short@localeAlias1787":{"bundle":"","target":"field-week"},"field-sat-narrow-relative+-1":"last Saturday","dateTimeFormats-appendItem-Month":"{0} ({2}: {1})","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-format-narrow@localeAlias1763":{"bundle":"gregorian","target":"dayPeriods-format-abbr"},"field-month-short@localeAlias1784":{"bundle":"","target":"field-month"},"field-month-short-relative+-1":"last month","field-fri-short@localeAlias1820":{"bundle":"","target":"field-fri"},"dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"MMMM d","field-week":"Week","field-day-narrow":"Day","field-hour-narrow-relative+0":"this hour","field-dayperiod-narrow@localeAlias1827":{"bundle":"","target":"field-dayperiod-short"},"months-standAlone-wide@localeAlias1744":{"bundle":"gregorian","target":"months-format-wide"},"field-dayperiod-narrow@localeAlias1828":{"bundle":"","target":"field-dayperiod"},"days@localeAlias1745":{"bundle":"gregorian","target":"days"},"quarters@localeAlias1756":{"bundle":"gregorian","target":"quarters"}},"ar":true,"bs":true,"ca":true,"cs":true,"da":true,"de":true,"el":true,"en":true,"es":true,"fi":true,"fr":true,"he":true,"hr":true,"hu":true,"id":true,"it":true,"ja":true,"ko":true,"mk":true,"nb":true,"nl":true,"pl":true,"pt":true,"pt-pt":true,"ro":true,"ru":true,"sk":true,"sl":true,"sr":true,"sv":true,"th":true,"tr":true,"zh":true,"zh-hant":true}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/buddhist.js b/lib/dojo/cldr/nls/ru/buddhist.js
index 3f8d84647..576dedf17 100644
--- a/lib/dojo/cldr/nls/ru/buddhist.js
+++ b/lib/dojo/cldr/nls/ru/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/buddhist",{"days-standAlone-short":["вс","пн","вт","ср","чт","пт","сб"],"months-format-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"field-second-relative+0":"сейчас","field-weekday":"День недели","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"ccc, d MMM","field-tue-relative+-1":"в прошлый вторник","days-format-short":["вс","пн","вт","ср","чт","пт","сб"],"dateFormat-long":"d MMMM y 'г'. G","field-fri-relative+-1":"в прошлую пятницу","field-wed-relative+-1":"в прошлую среду","months-format-wide":["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y 'г'. G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-thu-relative+-1":"в прошлый четверг","dateFormatItem-Md":"dd.MM","field-era":"Эра","months-standAlone-wide":["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"],"timeFormat-short":"H:mm","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"timeFormat-long":"H:mm:ss z","field-year":"Год","field-hour":"Час","months-format-abbr":["янв.","февр.","марта","апр.","мая","июня","июля","авг.","сент.","окт.","нояб.","дек."],"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"сегодня","field-thu-relative+0":"в этот четверг","field-day-relative+1":"завтра","field-thu-relative+1":"в следующий четверг","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"послезавтра","dateFormatItem-H":"H","months-standAlone-abbr":["янв.","февр.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],"quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"в это воскресенье","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"в следующее воскресенье","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"eraAbbr":["BE"],"field-minute":"Минута","field-dayperiod":"ДП/ПП","days-standAlone-abbr":["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"field-day-relative+-1":"вчера","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"позавчера","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","field-day":"День","days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"field-zone":"Часовой пояс","dateFormatItem-y":"y G","months-standAlone-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"field-year-relative+-1":"в прошлом году","field-month-relative+-1":"в прошлом месяце","days-format-abbr":["вс","пн","вт","ср","чт","пт","сб"],"days-format-narrow":["вс","пн","вт","ср","чт","пт","сб"],"dateFormatItem-yyyyMd":"dd.MM.y G","field-month":"Месяц","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"field-tue-relative+0":"в этот вторник","field-tue-relative+1":"в следующий вторник","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","dateFormat-short":"dd.MM.y G","field-second":"Секунда","field-sat-relative+-1":"в прошлую субботу","field-sun-relative+-1":"в прошлое воскресенье","field-month-relative+0":"в этом месяце","field-month-relative+1":"в следующем месяце","dateFormatItem-Ed":"E, d","field-week":"Неделя","dateFormat-medium":"d MMM y 'г'. G","field-year-relative+0":"в этому году","field-week-relative+-1":"на прошлой неделе","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"в следующем году","dayPeriods-format-narrow-pm":"PM","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-yyyy":"y G","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/buddhist",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-thu-short-relative+0":"в этот чт.","field-day-short-relative+-1":"вчера","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"в след. чт.","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","field-wed-narrow-relative+-1":"в прош. ср.","dateFormatItem-EBhms":"ccc, h:mm:ss B","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","dateFormatItem-yyyyQQQ":"QQQ y 'г'. G","months-standAlone-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"eraNames":["буддийская эра"],"field-weekOfMonth":"неделя месяца","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d MMM y 'г'. G","dateFormatItem-yyyyMd":"dd.MM.y G","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-wed-relative+-1":"в прошлую среду","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"dateFormatItem-Ehms":"ccc, h:mm:ss a","dateFormat-long":"d MMMM y 'г'. G","dateFormatItem-GyMMMd":"d MMM y 'г'. G","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"days-format-narrow":["вс","пн","вт","ср","чт","пт","сб"],"field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-GyMMM":"LLL y 'г'. G","field-month":"месяц","field-day-narrow":"дн.","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","dateFormat-medium":"d MMM y 'г'. G","dateFormatItem-yyyyMMMM":"LLLL y 'г'. G","eraAbbr":["BE"],"quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","months-format-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"field-quarter-relative+-1":"в прошлом квартале","dateFormatItem-yyyyMMMd":"d MMM y 'г'. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","days-format-short":["вс","пн","вт","ср","чт","пт","сб"],"field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"dd.MM","field-hour":"час","months-format-wide":["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"],"dateFormat-full":"EEEE, d MMMM y 'г'. G","field-month-relative+-1":"в прошлом месяце","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","dateFormatItem-EBhm":"ccc, h:mm B","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","dateFormatItem-Ehm":"ccc, h:mm a","months-format-abbr":["янв.","февр.","мар.","апр.","мая","июн.","июл.","авг.","сент.","окт.","нояб.","дек."],"field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","dateFormat-short":"dd.MM.y G","field-thu-short-relative+-1":"в прош. чт.","field-year-narrow-relative+-1":"в пр. г.","days-standAlone-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"dateFormatItem-yyyyMMMEd":"E, d MMM y 'г'. G","field-mon-narrow-relative+-1":"в прош. пн.","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"в прош. чт.","field-tue-narrow-relative+-1":"в прош. вт.","field-weekOfMonth-short":"нед. месяца","dateFormatItem-yyyy":"y 'г'. G","field-wed-short-relative+0":"в эту ср.","months-standAlone-wide":["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"],"field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","days-standAlone-abbr":["вс","пн","вт","ср","чт","пт","сб"],"dateTimeFormat-full":"{1}, {0}","field-weekday":"день недели","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-sat-relative+0":"в эту субботу","field-day-short-relative+1":"завтра","field-quarter-narrow-relative+1":"след. кв.","field-sat-relative+1":"в следующую субботу","field-day-short-relative+2":"послезавтра","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","months-standAlone-abbr":["янв.","февр.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],"field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"час. пояс","dateFormatItem-y":"y 'г'. G","field-thu-narrow-relative+0":"в этот чт.","field-thu-narrow-relative+1":"в след. чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y 'г'. G","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","days-standAlone-short":["вс","пн","вт","ср","чт","пт","сб"],"field-week-short-relative+-1":"на прошлой нед.","field-hour-narrow-relative+0":"в этот час","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","field-hour-short":"ч","field-zone-short":"час. пояс","quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","eraNarrow":"бэ","field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","dateFormatItem-EHm":"ccc HH:mm","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","dateFormatItem-MMMEd":"ccc, d MMM","field-weekOfMonth-narrow":"нед. мес.","dateFormatItem-EHms":"ccc HH:mm:ss","field-weekday-narrow":"дн. нед.","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","days-format-abbr":["вс","пн","вт","ср","чт","пт","сб"],"field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","dateFormatItem-Gy":"y 'г'. G","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/chinese.js b/lib/dojo/cldr/nls/ru/chinese.js
index de90896bb..d9144d8f8 100644
--- a/lib/dojo/cldr/nls/ru/chinese.js
+++ b/lib/dojo/cldr/nls/ru/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/chinese",{"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"сейчас","field-weekday":"День недели","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","dateFormatItem-GyMMMEd":"E, d MMM U","dateFormatItem-MMMEd":"ccc, d MMM","field-tue-relative+-1":"в прошлый вторник","dateFormat-long":"d MMMM U","field-fri-relative+-1":"в прошлую пятницу","field-wed-relative+-1":"в прошлую среду","dateFormatItem-yyyyQQQ":"QQQ U","dateFormat-full":"EEEE, d MMMM U","dateFormatItem-yyyyMEd":"E, dd.MM.y","field-thu-relative+-1":"в прошлый четверг","dateFormatItem-Md":"dd.MM","field-era":"Эра","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"Год","dateFormatItem-yyyyMMMM":"LLLL U","field-hour":"Час","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","dateFormatItem-E":"ccc","field-day-relative+0":"сегодня","field-day-relative+1":"завтра","field-thu-relative+0":"в этот четверг","dateFormatItem-GyMMMd":"d MMM U","field-day-relative+2":"послезавтра","field-thu-relative+1":"в следующий четверг","dateFormatItem-H":"H","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-Gy":"U","dateFormatItem-yyyyMMMEd":"E, d MMM U","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"LLL U","dateFormatItem-yyyyMMMd":"d MMM U","field-sun-relative+0":"в это воскресенье","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"в следующее воскресенье","field-minute":"Минута","field-dayperiod":"ДП/ПП","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"вчера","dateFormatItem-h":"h a","field-day-relative+-2":"позавчера","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","field-day":"День","field-zone":"Часовой пояс","dateFormatItem-y":"U","field-year-relative+-1":"в прошлом году","field-month-relative+-1":"в прошлом месяце","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"dd.MM.y","field-month":"Месяц","dateFormatItem-MMM":"LLL","field-tue-relative+0":"в этот вторник","field-tue-relative+1":"в следующий вторник","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","dateFormat-short":"dd.MM.y","field-second":"Секунда","field-sat-relative+-1":"в прошлую субботу","field-sun-relative+-1":"в прошлое воскресенье","field-month-relative+0":"в этом месяце","field-month-relative+1":"в следующем месяце","dateFormatItem-Ed":"E, d","field-week":"Неделя","dateFormat-medium":"dd.MM U","field-year-relative+0":"в этому году","field-week-relative+-1":"на прошлой неделе","dateFormatItem-yyyyM":"MM.y","field-year-relative+1":"в следующем году","dateFormatItem-yyyyQQQQ":"QQQQ U","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"LLL U","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-yyyy":"U","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/chinese",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","dateFormatItem-ms":"mm:ss","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-day-short-relative+-1":"вчера","field-thu-short-relative+0":"в этот чт.","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-thu-short-relative+1":"в след. чт.","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","field-wed-narrow-relative+-1":"в прош. ср.","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","dateFormatItem-yyyyQQQ":"QQQ U","field-weekOfMonth":"неделя месяца","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d MMM U","dateFormatItem-yyyyMd":"dd.MM.y","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","dateFormatItem-yyyyMEd":"E, dd.MM.y","field-wed-relative+-1":"в прошлую среду","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","dateFormat-long":"d MMMM U","dateFormatItem-GyMMMd":"d MMM U","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-GyMMM":"LLL U","field-month":"месяц","field-day-narrow":"дн.","dateFormatItem-MMM":"LLL","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","dateFormat-medium":"dd.MM U","dateFormatItem-yyyyMMMM":"LLLL U","dateFormatItem-yyyyM":"MM.y","field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"в прошлом квартале","dateFormatItem-yyyyMMMd":"d MMM U","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","dateFormatItem-Md":"dd.MM","field-hour":"час","dateFormat-full":"EEEE, d MMMM U","field-month-relative+-1":"в прошлом месяце","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","dateFormat-short":"dd.MM.y","field-year-narrow-relative+-1":"в пр. г.","field-thu-short-relative+-1":"в прош. чт.","dateFormatItem-yyyyMMMEd":"E, d MMM U","field-mon-narrow-relative+-1":"в прош. пн.","field-thu-narrow-relative+-1":"в прош. чт.","dateFormatItem-E":"ccc","dateFormatItem-H":"H","field-weekOfMonth-short":"нед. месяца","field-tue-narrow-relative+-1":"в прош. вт.","dateFormatItem-yyyy":"U","dateFormatItem-M":"L","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-short-relative+0":"в эту ср.","field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"день недели","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-day-short-relative+1":"завтра","field-sat-relative+0":"в эту субботу","field-quarter-narrow-relative+1":"след. кв.","dateFormatItem-h":"h a","field-day-short-relative+2":"послезавтра","field-sat-relative+1":"в следующую субботу","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"час. пояс","dateFormatItem-y":"U","field-thu-narrow-relative+0":"в этот чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-narrow-relative+1":"в след. чт.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","dateFormatItem-yyyyMMM":"LLL U","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","field-week-short-relative+-1":"на прошлой нед.","field-hour-narrow-relative+0":"в этот час","dateFormatItem-yyyyQQQQ":"QQQQ U","field-hour-short":"ч","field-zone-short":"час. пояс","field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","dateFormatItem-MMMEd":"ccc, d MMM","field-weekOfMonth-narrow":"нед. мес.","field-weekday-narrow":"дн. нед.","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","dateFormatItem-Gy":"U","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/coptic.js b/lib/dojo/cldr/nls/ru/coptic.js
index 50f282ce9..1c92afb76 100644
--- a/lib/dojo/cldr/nls/ru/coptic.js
+++ b/lib/dojo/cldr/nls/ru/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/coptic",{"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","field-dayperiod":"ДП/ПП","field-sun-relative+-1":"в прошлое воскресенье","field-mon-relative+-1":"в прошлый понедельник","field-minute":"Минута","field-day-relative+-1":"вчера","field-weekday":"День недели","field-day-relative+-2":"позавчера","field-era":"Эра","field-hour":"Час","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","months-standAlone-abbr":["Тот","Бабэ","Хатур","Кихак","Тубэ","Амшир","Барамхат","Бармуда","Башнас","Бауна","Абиб","Мисра","Наси"],"field-wed-relative+-1":"в прошлую среду","field-day-relative+0":"сегодня","field-day-relative+1":"завтра","field-day-relative+2":"послезавтра","field-tue-relative+0":"в этот вторник","field-zone":"Часовой пояс","field-tue-relative+1":"в следующий вторник","field-week-relative+-1":"на прошлой неделе","field-year-relative+0":"в этому году","field-year-relative+1":"в следующем году","field-sat-relative+-1":"в прошлую субботу","field-year-relative+-1":"в прошлом году","field-year":"Год","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","months-standAlone-wide":["Тот","Бабэ","Хатур","Кихак","Тубэ","Амшир","Барамхат","Бармуда","Башнас","Бауна","Абиб","Мисра","Наси"],"field-week":"Неделя","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе","months-format-abbr":["Тот","Бабэ","Хатур","Кихак","Тубэ","Амшир","Барамхат","Бармуда","Башнас","Бауна","Абиб","Мисра","Наси"],"field-month-relative+0":"в этом месяце","field-month":"Месяц","field-month-relative+1":"в следующем месяце","field-fri-relative+-1":"в прошлую пятницу","field-second":"Секунда","field-tue-relative+-1":"в прошлый вторник","field-day":"День","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-thu-relative+0":"в этот четверг","field-second-relative+0":"сейчас","field-thu-relative+1":"в следующий четверг","months-format-wide":["Тот","Бабэ","Хатур","Кихак","Тубэ","Амшир","Барамхат","Бармуда","Башнас","Бауна","Абиб","Мисра","Наси"],"field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-month-relative+-1":"в прошлом месяце","field-thu-relative+-1":"в прошлый четверг"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/coptic",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-thu-short-relative+0":"в этот чт.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"в след. чт.","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","field-wed-narrow-relative+-1":"в прош. ср.","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["до Диоклетиана","от Диоклетиана"],"field-weekOfMonth":"неделя месяца","field-month-short":"мес.","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","field-wed-relative+-1":"в прошлую среду","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","field-month":"месяц","field-day-narrow":"дн.","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","eraAbbr":["до Диокл.","от Диокл."],"field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"в прошлом квартале","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","field-hour":"час","months-format-wide":["тот","бабэ","хатур","кихак","тубэ","амшир","барамхат","бармуда","башнас","бауна","абиб","мисра","наси"],"field-month-relative+-1":"в прошлом месяце","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","months-format-abbr":["тот","бабэ","хатур","кихак","тубэ","амшир","барамхат","бармуда","башнас","бауна","абиб","мисра","наси"],"field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","field-thu-short-relative+-1":"в прош. чт.","field-year-narrow-relative+-1":"в пр. г.","field-mon-narrow-relative+-1":"в прош. пн.","field-thu-narrow-relative+-1":"в прош. чт.","field-tue-narrow-relative+-1":"в прош. вт.","field-weekOfMonth-short":"нед. месяца","field-wed-short-relative+0":"в эту ср.","months-standAlone-wide":["тот","бабэ","хатур","кихак","тубэ","амшир","барамхат","бармуда","башнас","бауна","абиб","мисра","наси"],"field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","field-weekday":"день недели","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-day-short-relative+1":"завтра","field-sat-relative+0":"в эту субботу","field-quarter-narrow-relative+1":"след. кв.","field-day-short-relative+2":"послезавтра","field-sat-relative+1":"в следующую субботу","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","months-standAlone-abbr":["тот","бабэ","хатур","кихак","тубэ","амшир","барамхат","бармуда","башнас","бауна","абиб","мисра","наси"],"field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","field-zone-narrow":"час. пояс","field-thu-narrow-relative+0":"в этот чт.","field-thu-narrow-relative+1":"в след. чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","field-week-short-relative+-1":"на прошлой нед.","field-hour-narrow-relative+0":"в этот час","field-hour-short":"ч","field-zone-short":"час. пояс","field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","eraNarrow":["до Диокл.","от Диокл."],"field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","field-weekOfMonth-narrow":"нед. мес.","field-weekday-narrow":"дн. нед.","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/currency.js b/lib/dojo/cldr/nls/ru/currency.js
index d53be87ce..bcc5e9e41 100644
--- a/lib/dojo/cldr/nls/ru/currency.js
+++ b/lib/dojo/cldr/nls/ru/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/currency",{"HKD_displayName":"Гонконгский доллар","CHF_displayName":"Швейцарский франк","JPY_symbol":"¥","CAD_displayName":"Канадский доллар","HKD_symbol":"HK$","CNY_displayName":"Китайский юань","USD_symbol":"$","AUD_displayName":"Австралийский доллар","JPY_displayName":"Японская иена","CAD_symbol":"CA$","USD_displayName":"Доллар США","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"Английский фунт","GBP_symbol":"£","AUD_symbol":"A$","EUR_displayName":"Евро"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/currency",{"HKD_displayName":"гонконгский доллар","CNY_displayName":"китайский юань","JPY_displayName":"японская иена","JPY_symbol":"¥","USD_displayName":"доллар США","CAD_symbol":"CA$","GBP_displayName":"британский фунт стерлингов","CHF_displayName":"швейцарский франк","CNY_symbol":"CN¥","EUR_displayName":"евро","GBP_symbol":"£","CAD_displayName":"канадский доллар","USD_symbol":"$","EUR_symbol":"€","AUD_displayName":"австралийский доллар","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"A$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/ethiopic.js b/lib/dojo/cldr/nls/ru/ethiopic.js
index 8519501ce..9396236d4 100644
--- a/lib/dojo/cldr/nls/ru/ethiopic.js
+++ b/lib/dojo/cldr/nls/ru/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/ethiopic",{"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","field-dayperiod":"ДП/ПП","field-sun-relative+-1":"в прошлое воскресенье","field-mon-relative+-1":"в прошлый понедельник","field-minute":"Минута","field-day-relative+-1":"вчера","field-weekday":"День недели","field-day-relative+-2":"позавчера","field-era":"Эра","field-hour":"Час","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","months-standAlone-abbr":["Мескерем","Текемт","Хедар","Тахсас","Тер","Якатит","Магабит","Миазия","Генбот","Сэнэ","Хамлэ","Нахасэ","Эпагомен"],"field-wed-relative+-1":"в прошлую среду","field-day-relative+0":"сегодня","field-day-relative+1":"завтра","field-day-relative+2":"послезавтра","field-tue-relative+0":"в этот вторник","field-zone":"Часовой пояс","field-tue-relative+1":"в следующий вторник","field-week-relative+-1":"на прошлой неделе","field-year-relative+0":"в этому году","field-year-relative+1":"в следующем году","field-sat-relative+-1":"в прошлую субботу","field-year-relative+-1":"в прошлом году","field-year":"Год","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","months-standAlone-wide":["Мескерем","Текемт","Хедар","Тахсас","Тер","Якатит","Магабит","Миазия","Генбот","Сэнэ","Хамлэ","Нахасэ","Эпагомен"],"field-week":"Неделя","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе","months-format-abbr":["Мескерем","Текемт","Хедар","Тахсас","Тер","Якатит","Магабит","Миазия","Генбот","Сэнэ","Хамлэ","Нахасэ","Эпагомен"],"field-month-relative+0":"в этом месяце","field-month":"Месяц","field-month-relative+1":"в следующем месяце","field-fri-relative+-1":"в прошлую пятницу","field-second":"Секунда","field-tue-relative+-1":"в прошлый вторник","field-day":"День","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-thu-relative+0":"в этот четверг","field-second-relative+0":"сейчас","field-thu-relative+1":"в следующий четверг","months-format-wide":["Мескерем","Текемт","Хедар","Тахсас","Тер","Якатит","Магабит","Миазия","Генбот","Сэнэ","Хамлэ","Нахасэ","Эпагомен"],"field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-month-relative+-1":"в прошлом месяце","field-thu-relative+-1":"в прошлый четверг"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/ethiopic",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-thu-short-relative+0":"в этот чт.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"в след. чт.","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","field-wed-narrow-relative+-1":"в прош. ср.","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["до воплощения Христа","от воплощения Христа"],"field-weekOfMonth":"неделя месяца","field-month-short":"мес.","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","field-wed-relative+-1":"в прошлую среду","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","field-month":"месяц","field-day-narrow":"дн.","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","eraAbbr":["до Христа","от Христа"],"field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"в прошлом квартале","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","field-hour":"час","months-format-wide":["мескерем","текемт","хедар","тахсас","тер","якатит","магабит","миазия","генбот","сэнэ","хамлэ","нахасэ","эпагомен"],"field-month-relative+-1":"в прошлом месяце","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","months-format-abbr":["мескерем","текемт","хедар","тахсас","тер","якатит","магабит","миазия","генбот","сэнэ","хамлэ","нахасэ","эпагомен"],"field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","field-thu-short-relative+-1":"в прош. чт.","field-year-narrow-relative+-1":"в пр. г.","field-mon-narrow-relative+-1":"в прош. пн.","field-thu-narrow-relative+-1":"в прош. чт.","field-tue-narrow-relative+-1":"в прош. вт.","field-weekOfMonth-short":"нед. месяца","field-wed-short-relative+0":"в эту ср.","months-standAlone-wide":["мескерем","текемт","хедар","тахсас","тер","якатит","магабит","миазия","генбот","сэнэ","хамлэ","нахасэ","эпагомен"],"field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","field-weekday":"день недели","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-day-short-relative+1":"завтра","field-sat-relative+0":"в эту субботу","field-quarter-narrow-relative+1":"след. кв.","field-day-short-relative+2":"послезавтра","field-sat-relative+1":"в следующую субботу","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","months-standAlone-abbr":["мескерем","текемт","хедар","тахсас","тер","якатит","магабит","миазия","генбот","сэнэ","хамлэ","нахасэ","эпагомен"],"field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","field-zone-narrow":"час. пояс","field-thu-narrow-relative+0":"в этот чт.","field-thu-narrow-relative+1":"в след. чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","field-week-short-relative+-1":"на прошлой нед.","field-hour-narrow-relative+0":"в этот час","field-hour-short":"ч","field-zone-short":"час. пояс","field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","eraNarrow":["до Христа","от Христа"],"field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","field-weekOfMonth-narrow":"нед. мес.","field-weekday-narrow":"дн. нед.","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/generic.js b/lib/dojo/cldr/nls/ru/generic.js
index b0b225820..015989582 100644
--- a/lib/dojo/cldr/nls/ru/generic.js
+++ b/lib/dojo/cldr/nls/ru/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/generic",{"field-second-relative+0":"сейчас","field-weekday":"День недели","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"ccc, d MMM","field-tue-relative+-1":"в прошлый вторник","dateFormat-long":"d MMMM y 'г'. G","field-fri-relative+-1":"в прошлую пятницу","field-wed-relative+-1":"в прошлую среду","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y 'г'. G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-thu-relative+-1":"в прошлый четверг","dateFormatItem-Md":"dd.MM","field-era":"Эра","field-year":"Год","dateFormatItem-yyyyMMMM":"LLLL y G","field-hour":"Час","field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","dateFormatItem-E":"ccc","field-day-relative+0":"сегодня","field-day-relative+1":"завтра","field-thu-relative+0":"в этот четверг","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"послезавтра","field-thu-relative+1":"в следующий четверг","dateFormatItem-H":"H","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"в это воскресенье","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"в следующее воскресенье","field-minute":"Минута","field-dayperiod":"ДП/ПП","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"вчера","dateFormatItem-h":"h a","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"позавчера","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","field-day":"День","field-zone":"Часовой пояс","dateFormatItem-y":"y G","field-year-relative+-1":"в прошлом году","field-month-relative+-1":"в прошлом месяце","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"dd.MM.y G","field-month":"Месяц","dateFormatItem-MMM":"LLL","field-tue-relative+0":"в этот вторник","field-tue-relative+1":"в следующий вторник","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","dateFormat-short":"dd.MM.y G","field-second":"Секунда","field-sat-relative+-1":"в прошлую субботу","field-sun-relative+-1":"в прошлое воскресенье","field-month-relative+0":"в этом месяце","field-month-relative+1":"в следующем месяце","dateFormatItem-Ed":"E, d","field-week":"Неделя","dateFormat-medium":"d MMM y 'г'. G","field-year-relative+0":"в этому году","field-week-relative+-1":"на прошлой неделе","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"в следующем году","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-yyyy":"y G","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/generic",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","dateFormatItem-ms":"mm:ss","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-day-short-relative+-1":"вчера","field-thu-short-relative+0":"в этот чт.","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-thu-short-relative+1":"в след. чт.","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","dateFormatItem-EBhms":"ccc, h:mm:ss B","field-wed-narrow-relative+-1":"в прош. ср.","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","dateFormatItem-yyyyQQQ":"QQQ y 'г'. G","field-weekOfMonth":"неделя месяца","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d MMM y 'г'. G","dateFormatItem-yyyyMd":"dd.MM.y G","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-wed-relative+-1":"в прошлую среду","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","dateFormatItem-Ehms":"ccc, h:mm:ss a","dateFormat-long":"d MMMM y 'г'. G","dateFormatItem-GyMMMd":"d MMM y 'г'. G","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-GyMMM":"LLL y 'г'. G","field-month":"месяц","field-day-narrow":"дн.","dateFormatItem-MMM":"LLL","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","dateFormat-medium":"d MMM y 'г'. G","dateFormatItem-yyyyMMMM":"LLLL y 'г'. G","dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","field-quarter-relative+-1":"в прошлом квартале","dateFormatItem-yyyyMMMd":"d MMM y 'г'. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"dd.MM","field-hour":"час","dateFormat-full":"EEEE, d MMMM y 'г'. G","field-month-relative+-1":"в прошлом месяце","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","dateFormatItem-EBhm":"ccc, h:mm B","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","dateFormatItem-Ehm":"ccc, h:mm a","field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","dateFormat-short":"dd.MM.y G","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"в пр. г.","field-thu-short-relative+-1":"в прош. чт.","dateFormatItem-yyyyMMMEd":"E, d MMM y 'г'. G","field-mon-narrow-relative+-1":"в прош. пн.","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"в прош. чт.","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"нед. месяца","field-tue-narrow-relative+-1":"в прош. вт.","dateFormatItem-yyyy":"y 'г'. G","dateFormatItem-M":"L","field-wed-short-relative+0":"в эту ср.","field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","dateTimeFormat-full":"{1}, {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"день недели","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-day-short-relative+1":"завтра","field-sat-relative+0":"в эту субботу","field-quarter-narrow-relative+1":"след. кв.","dateFormatItem-h":"h a","field-day-short-relative+2":"послезавтра","field-sat-relative+1":"в следующую субботу","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"час. пояс","dateFormatItem-y":"y 'г'. G","field-thu-narrow-relative+0":"в этот чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-narrow-relative+1":"в след. чт.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","dateFormatItem-yyyyMMM":"LLL y 'г'. G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","field-week-short-relative+-1":"на прошлой нед.","field-hour-narrow-relative+0":"в этот час","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","field-hour-short":"ч","field-zone-short":"час. пояс","field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","field-mon-narrow-relative+0":"в этот пн.","dateFormatItem-EHm":"ccc HH:mm","field-mon-narrow-relative+1":"в след. пн.","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","dateFormatItem-MMMEd":"ccc, d MMM","field-weekOfMonth-narrow":"нед. мес.","dateFormatItem-EHms":"ccc HH:mm:ss","field-weekday-narrow":"дн. нед.","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","dateFormatItem-Gy":"y 'г'. G","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/gregorian.js b/lib/dojo/cldr/nls/ru/gregorian.js
index 524bbec84..51a6c505f 100644
--- a/lib/dojo/cldr/nls/ru/gregorian.js
+++ b/lib/dojo/cldr/nls/ru/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["вс","пн","вт","ср","чт","пт","сб"],"months-format-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"field-second-relative+0":"сейчас","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"День недели","dateFormatItem-yQQQ":"QQQ y 'г'.","dateFormatItem-yMEd":"ccc, d.MM.y 'г'.","field-wed-relative+0":"в эту среду","dateFormatItem-GyMMMEd":"E, d MMM y 'г'. G","dateFormatItem-MMMEd":"ccc, d MMM","field-wed-relative+1":"в следующую среду","eraNarrow":["до н.э.","н.э."],"dateFormatItem-yMM":"MM.y","field-tue-relative+-1":"в прошлый вторник","days-format-short":["вс","пн","вт","ср","чт","пт","сб"],"dateFormat-long":"d MMMM y 'г'.","field-fri-relative+-1":"в прошлую пятницу","field-wed-relative+-1":"в прошлую среду","months-format-wide":["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"],"dateTimeFormat-medium":"{1}, {0}","dayPeriods-format-wide-pm":"PM","dateFormat-full":"EEEE, d MMMM y 'г'.","field-thu-relative+-1":"в прошлый четверг","dateFormatItem-Md":"dd.MM","dayPeriods-format-abbr-am":"AM","dateFormatItem-yMd":"dd.MM.y","dateFormatItem-yM":"MM.y","field-era":"Эра","months-standAlone-wide":["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"],"timeFormat-short":"H:mm","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"timeFormat-long":"H:mm:ss z","dateFormatItem-yMMM":"LLL y","dateFormatItem-yQQQQ":"QQQQ y 'г'.","field-year":"Год","dateFormatItem-MMdd":"dd.MM","field-hour":"Час","months-format-abbr":["янв.","февр.","марта","апр.","мая","июня","июля","авг.","сент.","окт.","нояб.","дек."],"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-E":"ccc","field-day-relative+0":"сегодня","field-day-relative+1":"завтра","field-thu-relative+0":"в этот четверг","dateFormatItem-GyMMMd":"d MMM y 'г'. G","field-day-relative+2":"послезавтра","field-thu-relative+1":"в следующий четверг","dateFormatItem-H":"H","months-standAlone-abbr":["янв.","февр.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],"quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],"dateFormatItem-yLLLL":"LLLL y","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"в это воскресенье","dateFormatItem-Hm":"H:mm","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"field-sun-relative+1":"в следующее воскресенье","eraAbbr":["до н. э.","н. э."],"field-minute":"Минута","field-dayperiod":"ДП/ПП","days-standAlone-abbr":["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"вчера","dateFormatItem-h":"h a","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"позавчера","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"в эту пятницу","dateFormatItem-yMMMM":"LLLL y","field-fri-relative+1":"в следующую пятницу","field-day":"День","days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"field-zone":"Часовой пояс","dateFormatItem-y":"y","months-standAlone-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"field-year-relative+-1":"в прошлом году","field-month-relative+-1":"в прошлом месяце","dateFormatItem-hm":"h:mm a","dayPeriods-format-abbr-pm":"PM","days-format-abbr":["вс","пн","вт","ср","чт","пт","сб"],"eraNames":["до н. э.","н. э."],"dateFormatItem-yMMMd":"d MMM y 'г'.","days-format-narrow":["вс","пн","вт","ср","чт","пт","сб"],"days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"dateFormatItem-MMM":"LLL","field-month":"Месяц","field-tue-relative+0":"в этот вторник","field-tue-relative+1":"в следующий вторник","dayPeriods-format-wide-am":"AM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","dateFormat-short":"dd.MM.yy","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"Секунда","field-sat-relative+-1":"в прошлую субботу","dateFormatItem-yMMMEd":"E, d MMM y 'г'.","field-sun-relative+-1":"в прошлое воскресенье","field-month-relative+0":"в этом месяце","field-month-relative+1":"в следующем месяце","dateFormatItem-Ed":"ccc, d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Неделя","dateFormat-medium":"d MMM y 'г'.","field-year-relative+0":"в этому году","field-week-relative+-1":"на прошлой неделе","field-year-relative+1":"в следующем году","dayPeriods-format-narrow-pm":"PM","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"в прошлый понедельник","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/gregorian",{"dateFormatItem-yMMMM":"LLLL y 'г'.","field-thu-narrow-relative+0":"в этот чт.","field-thu-narrow-relative+1":"в след. чт.","field-sun-narrow-relative+0":"в это вс.","field-sun-narrow-relative+1":"в след. вс.","months-format-wide":["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт.","eraNarrow":["до н.э.","н.э.","н. э."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM y 'г'.","dayPeriods-format-abbr-night1":"ночи","dayPeriods-format-narrow-evening1":"веч.","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"days-standAlone-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"dayPeriods-format-abbr-afternoon1":"дня","dayPeriods-format-wide-evening1":"вечера","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"в прош. ср.","dayPeriods-standAlone-wide-evening1":"вечер","days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"dateFormatItem-yMM":"MM.y","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"веч.","dayPeriods-standAlone-abbr-afternoon1":"день","field-thu-relative+0":"в этот четверг","dayPeriods-standAlone-abbr-night1":"ночь","field-thu-relative+1":"в следующий четверг","dayPeriods-format-wide-am":"AM","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","dateFormatItem-yMd":"dd.MM.y","field-thu-narrow-relative+-1":"в прош. чт.","field-quarter-relative+0":"в текущем квартале","field-quarter-relative+1":"в следующем квартале","field-sun-short-relative+0":"в это вс.","timeFormat-short":"HH:mm","field-sun-short-relative+1":"в след. вс.","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"дня","dateFormatItem-Md":"dd.MM","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"нед.","field-hour-relative+0":"в этот час","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-mon-narrow-relative+-1":"в прош. пн.","field-minute-narrow":"мин","field-thu-short-relative+0":"в этот чт.","field-mon-relative+0":"в этот понедельник","field-thu-short-relative+1":"в след. чт.","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+0":"сегодня","field-era-short":"эра","field-day-narrow-relative+1":"завтра","field-sat-narrow-relative+0":"в эту сб.","field-day-narrow-relative+2":"послезавтра","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"в след. сб.","field-week-narrow-relative+0":"на эт. нед.","field-week-narrow-relative+1":"на след. нед.","field-hour-short-relative+0":"в этот час","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-month":"месяц","months-standAlone-wide":["январь","февраль","март","апрель","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"],"field-weekday-narrow":"дн. нед.","dayPeriods-standAlone-narrow-afternoon1":"день","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","dayPeriods-format-abbr-evening1":"вечера","dayPeriods-format-abbr-noon":"полд.","dayPeriods-format-narrow-midnight":"полн.","dayPeriods-format-wide-midnight":"полночь","field-tue-relative+0":"в этот вторник","field-tue-relative+1":"в следующий вторник","dayPeriods-standAlone-abbr-evening1":"веч.","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"полночь","field-year-narrow":"г.","dayPeriods-standAlone-abbr-noon":"полд.","field-tue-short-relative+0":"в этот вт.","dayPeriods-standAlone-narrow-midnight":"полн.","field-tue-short-relative+1":"в след. вт.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","dateTimeFormat-full":"{1}, {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"ccc, h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","dateFormatItem-M":"L","field-wed-short-relative+0":"в эту ср.","field-fri-short-relative+0":"в эту пт.","field-wed-short-relative+1":"в след. ср.","field-fri-short-relative+1":"в след. пт.","field-weekOfMonth-short":"нед. месяца","field-quarter-short-relative+-1":"последний кв.","field-year-short-relative+-1":"в прошлом г.","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"ночи","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"посл. кв.","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"field-weekOfMonth-narrow":"нед. мес.","dateFormatItem-y":"y","field-minute-relative+0":"в эту минуту","field-year-short-relative+0":"в этом г.","dateFormatItem-EBhms":"ccc, h:mm:ss B","field-year-short-relative+1":"в след. г.","field-weekday":"день недели","dayPeriods-format-narrow-pm":"PM","field-tue-narrow-relative+-1":"в прош. вт.","dateFormatItem-yMEd":"ccc, dd.MM.y 'г'.","dayPeriods-standAlone-wide-night1":"ночь","field-year-narrow-relative+-1":"в пр. г.","field-sat-relative+-1":"в прошлую субботу","dayPeriods-format-abbr-midnight":"полн.","dayPeriods-format-narrow-morning1":"утра","dayPeriods-format-wide-morning1":"утра","dayPeriods-standAlone-abbr-midnight":"полн.","dayPeriods-standAlone-narrow-pm":"PM","dayPeriods-standAlone-wide-morning1":"утро","field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","field-second":"секунда","dateFormatItem-yMMMEd":"E, d MMM y 'г'.","field-year-relative+-1":"в прошлом году","field-weekdayOfMonth-short":"дн. нед. в месяце","dateFormat-short":"dd.MM.y","eraNames":["до Рождества Христова","от Рождества Христова"],"field-second-short":"сек.","field-thu-short-relative+-1":"в прош. чт.","field-zone":"часовой пояс","field-dayperiod-narrow":"AM/PM","field-sun-short-relative+-1":"в прош. вс.","dayPeriods-standAlone-narrow-morning1":"утро","eraAbbr":["до н. э.","н. э."],"field-week-short":"нед.","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"сегодня","field-day-relative+1":"завтра","field-day-relative+2":"послезавтра","field-day-short-relative+0":"сегодня","field-dayOfYear-short":"дн. года","field-day-short-relative+1":"завтра","dateFormat-long":"d MMMM y 'г'.","field-day-short-relative+2":"послезавтра","field-sun-narrow-relative+-1":"в прош. вс.","dayPeriods-format-wide-noon":"полдень","field-second-relative+0":"сейчас","field-quarter-relative+-1":"в прошлом квартале","dayPeriods-format-narrow-night1":"ночи","quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"dayPeriods-standAlone-wide-noon":"полдень","dayPeriods-standAlone-narrow-night1":"ночь","field-week-relative+-1":"на прошлой неделе","dayPeriods-format-abbr-morning1":"утра","field-month-relative+-1":"в прошлом месяце","months-format-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"field-year":"год","field-era":"эра","dayPeriods-standAlone-abbr-morning1":"утро","days-standAlone-short":["вс","пн","вт","ср","чт","пт","сб"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y 'г'.","field-day-short-relative+-1":"вчера","field-day-short-relative+-2":"позавчера","dateFormatItem-GyMMM":"LLL y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"час","field-dayOfYear-narrow":"дн. года","field-quarter":"квартал","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","dateFormatItem-MMdd":"dd.MM","field-day":"день","field-mon-relative+-1":"в прошлый понедельник","field-dayOfYear":"день года","dateFormat-medium":"d MMM y 'г'.","dateTimeFormat-short":"{1}, {0}","dateFormatItem-yMMM":"LLL y 'г'.","dateFormatItem-GyMMMd":"d MMM y 'г'. G","dateFormatItem-MEd":"E, dd.MM","field-tue-short-relative+-1":"в прош. вт.","field-year-short":"г.","field-month-short":"мес.","dateFormatItem-MMMEd":"ccc, d MMM","dayPeriods-format-wide-afternoon1":"дня","dateFormatItem-MMMd":"d MMM","dateFormatItem-Bh":"h B","months-format-abbr":["янв.","февр.","мар.","апр.","мая","июн.","июл.","авг.","сент.","окт.","нояб.","дек."],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","dayPeriods-format-wide-pm":"PM","days-standAlone-abbr":["вс","пн","вт","ср","чт","пт","сб"],"field-zone-short":"час. пояс","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","dayPeriods-standAlone-wide-afternoon1":"день","field-fri-short-relative+-1":"в прош. пт.","field-month-narrow":"мес.","dayPeriods-format-narrow-am":"AM","field-month-narrow-relative+-1":"в пр. мес.","days-format-abbr":["вс","пн","вт","ср","чт","пт","сб"],"field-weekday-short":"дн. недели","field-day-narrow-relative+-1":"вчера","field-day-narrow-relative+-2":"позавчера","field-quarter-short":"кв.","days-format-short":["вс","пн","вт","ср","чт","пт","сб"],"months-standAlone-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"days-format-narrow":["вс","пн","вт","ср","чт","пт","сб"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"кв.","field-mon-short-relative+0":"в этот пн.","field-mon-short-relative+1":"в след. пн.","field-dayperiod-short":"AM/PM","dayPeriods-standAlone-narrow-am":"AM","field-week-narrow-relative+-1":"на пр. нед.","field-thu-relative+-1":"в прошлый четверг","field-fri-narrow-relative+-1":"в прош. пт.","field-mon-short-relative+-1":"в прош. пн.","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","dateFormatItem-Ed":"ccc, d","field-wed-relative+-1":"в прошлую среду","field-weekOfMonth":"неделя месяца","field-weekdayOfMonth-narrow":"дн. нед. в мес.","dayPeriods-standAlone-wide-am":"AM","dateFormatItem-yQQQ":"QQQ y 'г'.","field-fri-relative+-1":"в прошлую пятницу","field-minute":"минута","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"field-day-short":"дн.","field-dayperiod":"AM/PM","field-hour-short":"ч","months-standAlone-abbr":["янв.","февр.","март","апр.","май","июнь","июль","авг.","сент.","окт.","нояб.","дек."],"field-month-relative+0":"в этом месяце","field-second-narrow":"с","field-month-relative+1":"в следующем месяце","dateFormat-full":"EEEE, d MMMM y 'г'.","field-era-narrow":"эра","field-sat-short-relative+-1":"в прош. сб.","dayPeriods-format-narrow-noon":"полд.","field-week-short-relative+-1":"на прошлой нед.","dateTimeFormat-long":"{1}, {0}","dateFormatItem-yM":"MM.y","field-sun-relative+-1":"в прошлое воскресенье","field-wed-short-relative+-1":"в прош. ср.","field-weekdayOfMonth":"день недели в месяце","field-quarter-narrow-relative+0":"тек. кв.","dateFormatItem-GyMMMEd":"E, d MMM y 'г'. G","field-quarter-narrow-relative+1":"след. кв.","field-sat-short-relative+0":"в эту сб.","field-hour-narrow":"ч","field-sat-short-relative+1":"в след. сб.","field-year-narrow-relative+0":"в эт. г.","field-year-narrow-relative+1":"в сл. г.","dateFormatItem-Gy":"y 'г'. G","field-zone-narrow":"час. пояс","dayPeriods-standAlone-narrow-noon":"полд.","field-tue-relative+-1":"в прошлый вторник","field-minute-short":"мин.","dateFormatItem-yw":"w-'я' 'неделя' Y 'г'.","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе","dateFormatItem-MMM":"LLL","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","field-sat-narrow-relative+-1":"в прош. сб.","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"dateFormatItem-MMMMW":"W-'я' 'неделя' MMMM","field-month-short-relative+-1":"в прошлом мес.","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-hour-narrow-relative+0":"в этот час","field-week":"неделя","field-day-narrow":"дн."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/hebrew.js b/lib/dojo/cldr/nls/ru/hebrew.js
index 54854a9d3..92832f20a 100644
--- a/lib/dojo/cldr/nls/ru/hebrew.js
+++ b/lib/dojo/cldr/nls/ru/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/hebrew",{"days-standAlone-short":["вс","пн","вт","ср","чт","пт","сб"],"field-second-relative+0":"сейчас","field-weekday":"День недели","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"ccc, d MMM","field-tue-relative+-1":"в прошлый вторник","days-format-short":["вс","пн","вт","ср","чт","пт","сб"],"dateFormat-long":"d MMMM y 'г'. G","field-fri-relative+-1":"в прошлую пятницу","field-wed-relative+-1":"в прошлую среду","months-format-wide":["Тишрей","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ияр","Сиван","Таммуз","Ав","Элул"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y 'г'. G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-thu-relative+-1":"в прошлый четверг","dateFormatItem-Md":"dd.MM","field-era":"Эра","months-standAlone-wide":["Тишрей","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ияр","Сиван","Таммуз","Ав","Элул"],"timeFormat-short":"H:mm","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"timeFormat-long":"H:mm:ss z","field-year":"Год","field-hour":"Час","months-format-abbr-leap":"Адар II","months-format-abbr":["Тишрей","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ияр","Сиван","Таммуз","Ав","Элул"],"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"сегодня","field-thu-relative+0":"в этот четверг","field-day-relative+1":"завтра","field-thu-relative+1":"в следующий четверг","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"послезавтра","dateFormatItem-H":"H","months-standAlone-abbr":["Тишрей","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ияр","Сиван","Таммуз","Ав","Элул"],"quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","months-standAlone-wide-leap":"Адар II","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"в это воскресенье","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"в следующее воскресенье","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"field-minute":"Минута","field-dayperiod":"ДП/ПП","days-standAlone-abbr":["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"field-day-relative+-1":"вчера","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"позавчера","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","field-day":"День","days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"field-zone":"Часовой пояс","months-standAlone-abbr-leap":"Адар II","dateFormatItem-y":"y G","field-year-relative+-1":"в прошлом году","field-month-relative+-1":"в прошлом месяце","days-format-abbr":["вс","пн","вт","ср","чт","пт","сб"],"days-format-narrow":["вс","пн","вт","ср","чт","пт","сб"],"dateFormatItem-yyyyMd":"dd.MM.y G","field-month":"Месяц","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"field-tue-relative+0":"в этот вторник","field-tue-relative+1":"в следующий вторник","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","dateFormat-short":"dd.MM.y G","field-second":"Секунда","field-sat-relative+-1":"в прошлую субботу","field-sun-relative+-1":"в прошлое воскресенье","field-month-relative+0":"в этом месяце","field-month-relative+1":"в следующем месяце","dateFormatItem-Ed":"E, d","field-week":"Неделя","dateFormat-medium":"d MMM y 'г'. G","field-year-relative+0":"в этому году","field-week-relative+-1":"на прошлой неделе","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"в следующем году","dayPeriods-format-narrow-pm":"PM","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","months-format-wide-leap":"Адар II","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-yyyy":"y G","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/hebrew",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-thu-short-relative+0":"в этот чт.","field-day-short-relative+-1":"вчера","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"в след. чт.","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","field-wed-narrow-relative+-1":"в прош. ср.","dateFormatItem-EBhms":"ccc, h:mm:ss B","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","dateFormatItem-yyyyQQQ":"QQQ y 'г'. G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["от сотворения мира"],"field-weekOfMonth":"неделя месяца","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d MMM y 'г'. G","dateFormatItem-yyyyMd":"dd.MM.y G","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-wed-relative+-1":"в прошлую среду","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"dateFormatItem-Ehms":"ccc, h:mm:ss a","dateFormat-long":"d MMMM y 'г'. G","dateFormatItem-GyMMMd":"d MMM y 'г'. G","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"days-format-narrow":["вс","пн","вт","ср","чт","пт","сб"],"field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-GyMMM":"LLL y 'г'. G","field-month":"месяц","field-day-narrow":"дн.","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","dateFormat-medium":"d MMM y 'г'. G","dateFormatItem-yyyyMMMM":"LLLL y 'г'. G","eraAbbr":["AM"],"quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"в прошлом квартале","dateFormatItem-yyyyMMMd":"d MMM y 'г'. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","days-format-short":["вс","пн","вт","ср","чт","пт","сб"],"field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"dd.MM","field-hour":"час","months-format-wide":["тишрей","хешван","кислев","тевет","шеват","адар I","адар","нисан","ияр","сиван","таммуз","ав","элул"],"dateFormat-full":"EEEE, d MMMM y 'г'. G","field-month-relative+-1":"в прошлом месяце","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","dateFormatItem-EBhm":"ccc, h:mm B","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","dateFormatItem-Ehm":"ccc, h:mm a","months-format-abbr":["тишрей","хешван","кислев","тевет","шеват","адар I","адар","нисан","ияр","сиван","таммуз","ав","элул"],"field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","dateFormat-short":"dd.MM.y G","field-thu-short-relative+-1":"в прош. чт.","field-year-narrow-relative+-1":"в пр. г.","days-standAlone-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"dateFormatItem-yyyyMMMEd":"E, d MMM y 'г'. G","field-mon-narrow-relative+-1":"в прош. пн.","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"в прош. чт.","field-tue-narrow-relative+-1":"в прош. вт.","field-weekOfMonth-short":"нед. месяца","dateFormatItem-yyyy":"y 'г'. G","field-wed-short-relative+0":"в эту ср.","months-standAlone-wide":["тишрей","хешван","кислев","тевет","шеват","адар I","адар","нисан","ияр","сиван","таммуз","ав","элул"],"field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","days-standAlone-abbr":["вс","пн","вт","ср","чт","пт","сб"],"dateTimeFormat-full":"{1}, {0}","months-format-abbr-leap":"адар II","field-weekday":"день недели","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-day-short-relative+1":"завтра","field-sat-relative+0":"в эту субботу","field-quarter-narrow-relative+1":"след. кв.","field-day-short-relative+2":"послезавтра","field-sat-relative+1":"в следующую субботу","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","months-standAlone-abbr":["тишрей","хешван","кислев","тевет","шеват","адар I","адар","нисан","ияр","сиван","таммуз","ав","элул"],"months-format-wide-leap":"адар II","months-format-narrow-leap":"7","field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"час. пояс","dateFormatItem-y":"y 'г'. G","field-thu-narrow-relative+0":"в этот чт.","field-thu-narrow-relative+1":"в след. чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y 'г'. G","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","days-standAlone-short":["вс","пн","вт","ср","чт","пт","сб"],"field-week-short-relative+-1":"на прошлой нед.","months-standAlone-abbr-leap":"адар II","field-hour-narrow-relative+0":"в этот час","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","field-hour-short":"ч","field-zone-short":"час. пояс","quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","eraNarrow":"AM","field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","dateFormatItem-EHm":"ccc HH:mm","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","dateFormatItem-MMMEd":"ccc, d MMM","field-weekOfMonth-narrow":"нед. мес.","dateFormatItem-EHms":"ccc HH:mm:ss","field-weekday-narrow":"дн. нед.","months-standAlone-wide-leap":"адар II","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","days-format-abbr":["вс","пн","вт","ср","чт","пт","сб"],"field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","dateFormatItem-Gy":"y 'г'. G","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/indian.js b/lib/dojo/cldr/nls/ru/indian.js
index 1ba082fcc..0c13af576 100644
--- a/lib/dojo/cldr/nls/ru/indian.js
+++ b/lib/dojo/cldr/nls/ru/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/indian",{"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","field-dayperiod":"ДП/ПП","field-sun-relative+-1":"в прошлое воскресенье","field-mon-relative+-1":"в прошлый понедельник","field-minute":"Минута","field-day-relative+-1":"вчера","field-weekday":"День недели","field-day-relative+-2":"позавчера","field-era":"Эра","field-hour":"Час","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","months-standAlone-abbr":["Чайтра","Ваисакха","Джанштха","Асадха","Сравана","Бхадра","Азвина","Картика","Аграхайана","Пауза","Магха","Пхалгуна"],"field-wed-relative+-1":"в прошлую среду","field-day-relative+0":"сегодня","field-day-relative+1":"завтра","field-day-relative+2":"послезавтра","field-tue-relative+0":"в этот вторник","field-zone":"Часовой пояс","field-tue-relative+1":"в следующий вторник","field-week-relative+-1":"на прошлой неделе","field-year-relative+0":"в этому году","field-year-relative+1":"в следующем году","field-sat-relative+-1":"в прошлую субботу","field-year-relative+-1":"в прошлом году","field-year":"Год","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","months-standAlone-wide":["Чайтра","Ваисакха","Джанштха","Асадха","Сравана","Бхадра","Азвина","Картика","Аграхайана","Пауза","Магха","Пхалгуна"],"field-week":"Неделя","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе","months-format-abbr":["Чайтра","Ваисакха","Джанштха","Асадха","Сравана","Бхадра","Азвина","Картика","Аграхайана","Пауза","Магха","Пхалгуна"],"field-month-relative+0":"в этом месяце","field-month":"Месяц","field-month-relative+1":"в следующем месяце","field-fri-relative+-1":"в прошлую пятницу","field-second":"Секунда","field-tue-relative+-1":"в прошлый вторник","field-day":"День","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-thu-relative+0":"в этот четверг","field-second-relative+0":"сейчас","field-thu-relative+1":"в следующий четверг","months-format-wide":["Чайтра","Ваисакха","Джанштха","Асадха","Сравана","Бхадра","Азвина","Картика","Аграхайана","Пауза","Магха","Пхалгуна"],"field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-month-relative+-1":"в прошлом месяце","field-thu-relative+-1":"в прошлый четверг"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/indian",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-thu-short-relative+0":"в этот чт.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"в след. чт.","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","field-wed-narrow-relative+-1":"в прош. ср.","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Сака"],"field-weekOfMonth":"неделя месяца","field-month-short":"мес.","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","field-wed-relative+-1":"в прошлую среду","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","field-month":"месяц","field-day-narrow":"дн.","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","eraAbbr":["Сака"],"field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"в прошлом квартале","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","field-hour":"час","months-format-wide":["чайтра","ваисакха","джанштха","асадха","сравана","бхадра","азвина","картика","аграхайана","пауза","магха","пхалгуна"],"field-month-relative+-1":"в прошлом месяце","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","months-format-abbr":["чайтра","ваисакха","джанштха","асадха","сравана","бхадра","азвина","картика","аграхайана","пауза","магха","пхалгуна"],"field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","field-thu-short-relative+-1":"в прош. чт.","field-year-narrow-relative+-1":"в пр. г.","field-mon-narrow-relative+-1":"в прош. пн.","field-thu-narrow-relative+-1":"в прош. чт.","field-tue-narrow-relative+-1":"в прош. вт.","field-weekOfMonth-short":"нед. месяца","field-wed-short-relative+0":"в эту ср.","months-standAlone-wide":["чайтра","ваисакха","джанштха","асадха","сравана","бхадра","азвина","картика","аграхайана","пауза","магха","пхалгуна"],"field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","field-weekday":"день недели","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-day-short-relative+1":"завтра","field-sat-relative+0":"в эту субботу","field-quarter-narrow-relative+1":"след. кв.","field-day-short-relative+2":"послезавтра","field-sat-relative+1":"в следующую субботу","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","months-standAlone-abbr":["чайтра","ваисакха","джанштха","асадха","сравана","бхадра","азвина","картика","аграхайана","пауза","магха","пхалгуна"],"field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","field-zone-narrow":"час. пояс","field-thu-narrow-relative+0":"в этот чт.","field-thu-narrow-relative+1":"в след. чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","field-week-short-relative+-1":"на прошлой нед.","field-hour-narrow-relative+0":"в этот час","field-hour-short":"ч","field-zone-short":"час. пояс","field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","eraNarrow":"Сака","field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","field-weekOfMonth-narrow":"нед. мес.","field-weekday-narrow":"дн. нед.","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/islamic.js b/lib/dojo/cldr/nls/ru/islamic.js
index 2c4b01a5f..a461526a0 100644
--- a/lib/dojo/cldr/nls/ru/islamic.js
+++ b/lib/dojo/cldr/nls/ru/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/islamic",{"days-standAlone-short":["вс","пн","вт","ср","чт","пт","сб"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"сейчас","field-weekday":"День недели","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"ccc, d MMM","field-tue-relative+-1":"в прошлый вторник","days-format-short":["вс","пн","вт","ср","чт","пт","сб"],"dateFormat-long":"d MMMM y 'г'. G","field-fri-relative+-1":"в прошлую пятницу","field-wed-relative+-1":"в прошлую среду","months-format-wide":["Мухаррам","Сафар","Раби-уль-авваль","Раби-уль-ахир","Джумад-уль-авваль","Джумад-уль-ахир","Раджаб","Шаабан","Рамадан","Шавваль","Зуль-Каада","Зуль-Хиджжа"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y 'г'. G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-thu-relative+-1":"в прошлый четверг","dateFormatItem-Md":"dd.MM","field-era":"Эра","months-standAlone-wide":["Мухаррам","Сафар","Раби-уль-авваль","Раби-уль-ахир","Джумад-уль-авваль","Джумад-уль-ахир","Раджаб","Шаабан","Рамадан","Шавваль","Зуль-Каада","Зуль-Хиджжа"],"timeFormat-short":"H:mm","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"timeFormat-long":"H:mm:ss z","field-year":"Год","field-hour":"Час","months-format-abbr":["Мухаррам","Сафар","Раби-уль-авваль","Раби-уль-ахир","Джумад-уль-авваль","Джумад-уль-ахир","Раджаб","Шаабан","Рамадан","Шавваль","Зуль-Каада","Зуль-Хиджжа"],"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"сегодня","field-thu-relative+0":"в этот четверг","field-day-relative+1":"завтра","field-thu-relative+1":"в следующий четверг","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"послезавтра","dateFormatItem-H":"H","months-standAlone-abbr":["Мухаррам","Сафар","Раби-уль-авваль","Раби-уль-ахир","Джумад-уль-авваль","Джумад-уль-ахир","Раджаб","Шаабан","Рамадан","Шавваль","Зуль-Каада","Зуль-Хиджжа"],"quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"в это воскресенье","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"в следующее воскресенье","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"field-minute":"Минута","field-dayperiod":"ДП/ПП","days-standAlone-abbr":["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"field-day-relative+-1":"вчера","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"позавчера","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","field-day":"День","days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"field-zone":"Часовой пояс","dateFormatItem-y":"y G","field-year-relative+-1":"в прошлом году","field-month-relative+-1":"в прошлом месяце","days-format-abbr":["вс","пн","вт","ср","чт","пт","сб"],"days-format-narrow":["вс","пн","вт","ср","чт","пт","сб"],"dateFormatItem-yyyyMd":"dd.MM.y G","field-month":"Месяц","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"field-tue-relative+0":"в этот вторник","field-tue-relative+1":"в следующий вторник","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","dateFormat-short":"dd.MM.y G","field-second":"Секунда","field-sat-relative+-1":"в прошлую субботу","field-sun-relative+-1":"в прошлое воскресенье","field-month-relative+0":"в этом месяце","field-month-relative+1":"в следующем месяце","dateFormatItem-Ed":"E, d","field-week":"Неделя","dateFormat-medium":"d MMM y 'г'. G","field-year-relative+0":"в этому году","field-week-relative+-1":"на прошлой неделе","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"в следующем году","dayPeriods-format-narrow-pm":"PM","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-yyyy":"y G","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/islamic",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-thu-short-relative+0":"в этот чт.","field-day-short-relative+-1":"вчера","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"в след. чт.","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","field-wed-narrow-relative+-1":"в прош. ср.","dateFormatItem-EBhms":"ccc, h:mm:ss B","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","dateFormatItem-yyyyQQQ":"QQQ y 'г'. G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["после хиджры"],"field-weekOfMonth":"неделя месяца","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d MMM y 'г'. G","dateFormatItem-yyyyMd":"dd.MM.y G","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-wed-relative+-1":"в прошлую среду","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"dateFormatItem-Ehms":"ccc, h:mm:ss a","dateFormat-long":"d MMMM y 'г'. G","dateFormatItem-GyMMMd":"d MMM y 'г'. G","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"days-format-narrow":["вс","пн","вт","ср","чт","пт","сб"],"field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-GyMMM":"LLL y 'г'. G","field-month":"месяц","field-day-narrow":"дн.","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","dateFormat-medium":"d MMM y 'г'. G","dateFormatItem-yyyyMMMM":"LLLL y 'г'. G","eraAbbr":["AH"],"quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"в прошлом квартале","dateFormatItem-yyyyMMMd":"d MMM y 'г'. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","days-format-short":["вс","пн","вт","ср","чт","пт","сб"],"field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"dd.MM","field-hour":"час","months-format-wide":["мухаррам","сафар","раби-уль-авваль","раби-уль-ахир","джумад-уль-авваль","джумад-уль-ахир","раджаб","шаабан","рамадан","шавваль","зуль-каада","зуль-хиджжа"],"dateFormat-full":"EEEE, d MMMM y 'г'. G","field-month-relative+-1":"в прошлом месяце","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","dateFormatItem-EBhm":"ccc, h:mm B","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","dateFormatItem-Ehm":"ccc, h:mm a","months-format-abbr":["мух.","саф.","раб. I","раб. II","джум. I","джум. II","радж.","шааб.","рам.","шав.","зуль-к.","зуль-х."],"field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","dateFormat-short":"dd.MM.y G","field-thu-short-relative+-1":"в прош. чт.","field-year-narrow-relative+-1":"в пр. г.","days-standAlone-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"dateFormatItem-yyyyMMMEd":"E, d MMM y 'г'. G","field-mon-narrow-relative+-1":"в прош. пн.","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"в прош. чт.","field-tue-narrow-relative+-1":"в прош. вт.","field-weekOfMonth-short":"нед. месяца","dateFormatItem-yyyy":"y 'г'. G","field-wed-short-relative+0":"в эту ср.","months-standAlone-wide":["мухаррам","сафар","раби-уль-авваль","раби-уль-ахир","джумад-уль-авваль","джумад-уль-ахир","раджаб","шаабан","рамадан","шавваль","зуль-каада","зуль-хиджжа"],"field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","days-standAlone-abbr":["вс","пн","вт","ср","чт","пт","сб"],"dateTimeFormat-full":"{1}, {0}","field-weekday":"день недели","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-day-short-relative+1":"завтра","field-sat-relative+0":"в эту субботу","field-quarter-narrow-relative+1":"след. кв.","field-day-short-relative+2":"послезавтра","field-sat-relative+1":"в следующую субботу","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","months-standAlone-abbr":["мух.","саф.","раб. I","раб. II","джум. I","джум. II","радж.","шааб.","рам.","шав.","зуль-к.","зуль-х."],"field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"час. пояс","dateFormatItem-y":"y 'г'. G","field-thu-narrow-relative+0":"в этот чт.","field-thu-narrow-relative+1":"в след. чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y 'г'. G","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","days-standAlone-short":["вс","пн","вт","ср","чт","пт","сб"],"field-week-short-relative+-1":"на прошлой нед.","field-hour-narrow-relative+0":"в этот час","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","field-hour-short":"ч","field-zone-short":"час. пояс","quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","eraNarrow":"AH","field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","dateFormatItem-EHm":"ccc HH:mm","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","dateFormatItem-MMMEd":"ccc, d MMM","field-weekOfMonth-narrow":"нед. мес.","dateFormatItem-EHms":"ccc HH:mm:ss","field-weekday-narrow":"дн. нед.","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","days-format-abbr":["вс","пн","вт","ср","чт","пт","сб"],"field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","dateFormatItem-Gy":"y 'г'. G","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/japanese.js b/lib/dojo/cldr/nls/ru/japanese.js
index aeb09cfac..75f9da3a3 100644
--- a/lib/dojo/cldr/nls/ru/japanese.js
+++ b/lib/dojo/cldr/nls/ru/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/japanese",{"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","field-dayperiod":"ДП/ПП","field-sun-relative+-1":"в прошлое воскресенье","field-mon-relative+-1":"в прошлый понедельник","field-minute":"Минута","field-day-relative+-1":"вчера","field-weekday":"День недели","field-day-relative+-2":"позавчера","field-era":"Эра","field-hour":"Час","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","field-wed-relative+-1":"в прошлую среду","field-day-relative+0":"сегодня","field-day-relative+1":"завтра","eraAbbr":["Эпоха Тайка (645-650)","Эпоха Хакути (650-671)","Эпоха Хакухо (672-686)","Эпоха Сючё (686-701)","Эпоха Тайхо (701-704)","Эпоха Кёюн (704-708)","Эпоха Вадо (708-715)","Эпоха Рэйки (715-717)","Эпоха Ёро (717-724)","Эпоха Дзинки (724-729)","Эпоха Темпьё (729-749)","Эпоха Темпьё (749-749)","Эпоха Темпьё-Сьохо (749-757)","Эпоха Темпьё-Ходзи (757-765)","Эпоха Темпьё-Ходзи (765-767)","Эпоха Джинго-Кёюн (767-770)","Эпоха Хоки (770-780)","Эпоха Теньё (781-782)","Эпоха Енряку (782-806)","Эпоха Дайдо (806-810)","Эпоха Конин (810-824)","Эпоха Тентьо (824-834)","Эпоха Шова (834-848)","Эпоха Кайо (848-851)","Эпоха Ниндзю (851-854)","Эпоха Сайко (854-857)","Эпоха Теннан (857-859)","Эпоха Йоган (859-877)","Эпоха Генкей (877-885)","Эпоха Нинна (885-889)","Эпоха Кампьё (889-898)","Эпоха Сьотай (898-901)","Эпоха Энги (901-923)","Эпоха Ентьо (923-931)","Эпоха Сьёхэй (931-938)","Эпоха Тенгьо (938-947)","Эпоха Тенрияку (947-957)","Эпоха Тентоку (957-961)","Эпоха Ова (961-964)","Эпоха Кохо (964-968)","Эпоха Анна (968-970)","Эпоха Тенроку (970-973)","Эпоха Теньен (973-976)","Эпоха Дзьоген (976-978)","Эпоха Тенген (978-983)","Эпоха Ейкан (983-985)","Эпоха Канна (985-987)","Эпоха Ейен (987-989)","Эпоха Ейсо (989-990)","Эпоха Сёряку (990-995)","Эпоха Тётоку (995-999)","Эпоха Тёхо (999-1004)","Эпоха Канко (1004-1012)","Эпоха Тёва (1012-1017)","Эпоха Каннин (1017-1021)","Эпоха Дзиан (1021-1024)","Эпоха Мандзю (1024-1028)","Эпоха Тёгэн (1028-1037)","Эпоха Тёряку (1037-1040)","Эпоха Тёкю (1040-1044)","Эпоха Катоку (1044-1046)","Эпоха Эйсо (1046-1053)","Эпоха Тэнги (1053-1058)","Эпоха Кохэй (1058-1065)","Эпоха Дзиряку (1065-1069)","Эпоха Энкю (1069-1074)","Эпоха Сёхо (1074-1077)","Эпоха Сёряку (1077-1081)","Эпоха Эйхо (1081-1084)","Эпоха Отоку (1084-1087)","Эпоха Кандзи (1087-1094)","Эпоха Кахо (1094-1096)","Эпоха Эйтё (1096-1097)","Эпоха Сётоку (1097-1099)","Эпоха Кова (1099-1104)","Эпоха Тёдзи (1104-1106)","Эпоха Касё (1106-1108)","Эпоха Тэннин (1108-1110)","Эпоха Тэнъэй (1110-1113)","Эпоха Эйкю (1113-1118)","Эпоха Гэнъэй (1118-1120)","Эпоха Хоан (1120-1124)","Эпоха Тэндзи (1124-1126)","Эпоха Дайдзи (1126-1131)","Эпоха Тэнсё (1131-1132)","Эпоха Тёсё (1132-1135)","Эпоха Хоэн (1135-1141)","Эпоха Эйдзи (1141-1142)","Эпоха Кодзи (1142-1144)","Эпоха Тэнё (1144-1145)","Эпоха Кюан (1145-1151)","Эпоха Нимпэй (1151-1154)","Эпоха Кюдзю (1154-1156)","Эпоха Хогэн (1156-1159)","Эпоха Хэйдзи (1159-1160)","Эпоха Эйряку (1160-1161)","Эпоха Охо (1161-1163)","Эпоха Тёкан (1163-1165)","Эпоха Эйман (1165-1166)","Эпоха Нинъан (1166-1169)","Эпоха Као (1169-1171)","Эпоха Сёан (1171-1175)","Эпоха Ангэн (1175-1177)","Эпоха Дзисё (1177-1181)","Эпоха Ёва (1181-1182)","Эпоха Дзюэй (1182-1184)","Эпоха Гэнрюку (1184-1185)","Эпоха Бундзи (1185-1190)","Эпоха Кэнкю (1190-1199)","Эпоха Сёдзи (1199-1201)","Эпоха Кэннин (1201-1204)","Эпоха Гэнкю (1204-1206)","Эпоха Кэнъэй (1206-1207)","Эпоха Сёгэн (1207-1211)","Эпоха Кэнряку (1211-1213)","Эпоха Кэмпо (1213-1219)","Эпоха Сёкю (1219-1222)","Эпоха Дзёо (1222-1224)","Эпоха Гэннин (1224-1225)","Эпоха Кароку (1225-1227)","Эпоха Антэй (1227-1229)","Эпоха Канки (1229-1232)","Эпоха Дзёэй (1232-1233)","Эпоха Тэмпуку (1233-1234)","Эпоха Бунряку (1234-1235)","Эпоха Катэй (1235-1238)","Эпоха Рякунин (1238-1239)","Эпоха Энъо (1239-1240)","Эпоха Ниндзи (1240-1243)","Эпоха Кангэн (1243-1247)","Эпоха Ходзи (1247-1249)","Эпоха Кэнтё (1249-1256)","Эпоха Когэн (1256-1257)","Эпоха Сёка (1257-1259)","Эпоха Сёгэн (1259-1260)","Эпоха Бунъо (1260-1261)","Эпоха Котё (1261-1264)","Эпоха Бунъэй (1264-1275)","Эпоха Кэндзи (1275-1278)","Эпоха Коан (1278-1288)","Эпоха Сёо (1288-1293)","Эпоха Эйнин (1293-1299)","Эпоха Сёан (1299-1302)","Эпоха Кэнгэн (1302-1303)","Эпоха Кагэн (1303-1306)","Эпоха Токудзи (1306-1308)","Эпоха Энкэй (1308-1311)","Эпоха Отё (1311-1312)","Эпоха Сёва (1312-1317)","Эпоха Бумпо (1317-1319)","Эпоха Гэно (1319-1321)","Эпоха Гэнкё (1321-1324)","Эпоха Сётю (1324-1326)","Эпоха Карэки (1326-1329)","Эпоха Гэнтоку (1329-1331)","Эпоха Гэнко (1331-1334)","Эпоха Кэмму (1334-1336)","Эпоха Энгэн (1336-1340)","Эпоха Кококу (1340-1346)","Эпоха Сёхэй (1346-1370)","Эпоха Кэнтоку (1370-1372)","Эпоха Бунтю (1372-1375)","Эпоха Иэндзю (1375-1379)","Эпоха Коряку (1379-1381)","Эпоха Кова (1381-1384)","Эпоха Гэнтю (1384-1392)","Эпоха Мэйтоку (1384-1387)","Эпоха Какэй (1387-1389)","Эпоха Коо (1389-1390)","Эпоха Мэйтоку (1390-1394)","Эпоха Оэй (1394-1428)","Эпоха Сётё (1428-1429)","Эпоха Эйкё (1429-1441)","Эпоха Какицу (1441-1444)","Эпоха Банъан (1444-1449)","Эпоха Хотоку (1449-1452)","Эпоха Кётоку (1452-1455)","Эпоха Косё (1455-1457)","Эпоха Тёроку (1457-1460)","Эпоха Кансё (1460-1466)","Эпоха Бунсё (1466-1467)","Эпоха Онин (1467-1469)","Эпоха Буммэй (1469-1487)","Эпоха Тёкё (1487-1489)","Эпоха Энтоку (1489-1492)","Эпоха Мэйо (1492-1501)","Эпоха Бунки (1501-1504)","Эпоха Эйсё (1504-1521)","Эпоха Тайэй (1521-1528)","Эпоха Кёроку (1528-1532)","Эпоха Тэммон (1532-1555)","Эпоха Кодзи (1555-1558)","Эпоха Эйроку (1558-1570)","Эпоха Гэнки (1570-1573)","Эпоха Тэнсё (1573-1592)","Эпоха Бунроку (1592-1596)","Эпоха Кэйтё (1596-1615)","Эпоха Гэнва (1615-1624)","Эпоха Канъэй (1624-1644)","Эпоха Сёхо (1644-1648)","Эпоха Кэйан (1648-1652)","Эпоха Сё (1652-1655)","Эпоха Мэйряку (1655-1658)","Эпоха Мандзи (1658-1661)","Эпоха Камбун (1661-1673)","Эпоха Эмпо (1673-1681)","Эпоха Тэнва (1681-1684)","Эпоха Дзёкё (1684-1688)","Эпоха Гэнроку (1688-1704)","Эпоха Хоэй (1704-1711)","Эпоха Сётоку (1711-1716)","Эпоха Кёхо (1716-1736)","Эпоха Гэмбун (1736-1741)","Эпоха Кампо (1741-1744)","Эпоха Энкё (1744-1748)","Эпоха Канъэн (1748-1751)","Эпоха Хоряку (1751-1764)","Эпоха Мэйва (1764-1772)","Эпоха Анъэй (1772-1781)","Эпоха Тэммэй (1781-1789)","Эпоха Кансэй (1789-1801)","Эпоха Кёва (1801-1804)","Эпоха Бунка (1804-1818)","Эпоха Бунсэй (1818-1830)","Эпоха Тэмпо (1830-1844)","Эпоха Кока (1844-1848)","Эпоха Каэй (1848-1854)","Эпоха Ансэй (1854-1860)","Эпоха Манъэн (1860-1861)","Эпоха Бункю (1861-1864)","Эпоха Гендзи (1864-1865)","Эпоха Кейо (1865-1868)","Эпоха Мэйдзи","Эпоха Тайсьо","Сьова","Эпоха Хэйсэй"],"field-day-relative+2":"послезавтра","field-tue-relative+0":"в этот вторник","field-zone":"Часовой пояс","field-tue-relative+1":"в следующий вторник","field-week-relative+-1":"на прошлой неделе","field-year-relative+0":"в этому году","field-year-relative+1":"в следующем году","field-sat-relative+-1":"в прошлую субботу","field-year-relative+-1":"в прошлом году","field-year":"Год","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","field-week":"Неделя","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе","field-month-relative+0":"в этом месяце","field-month":"Месяц","field-month-relative+1":"в следующем месяце","field-fri-relative+-1":"в прошлую пятницу","field-second":"Секунда","field-tue-relative+-1":"в прошлый вторник","field-day":"День","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-thu-relative+0":"в этот четверг","field-second-relative+0":"сейчас","field-thu-relative+1":"в следующий четверг","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-month-relative+-1":"в прошлом месяце","field-thu-relative+-1":"в прошлый четверг"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/japanese",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-thu-short-relative+0":"в этот чт.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"в след. чт.","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","field-wed-narrow-relative+-1":"в прош. ср.","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","field-weekOfMonth":"неделя месяца","field-month-short":"мес.","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","field-wed-relative+-1":"в прошлую среду","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","field-month":"месяц","field-day-narrow":"дн.","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","eraAbbr":["Эпоха Тайка (645–650)","Эпоха Хакути (650–671)","Эпоха Хакухо (672–686)","Эпоха Сючё (686–701)","Эпоха Тайхо (701–704)","Эпоха Кёюн (704–708)","Эпоха Вадо (708–715)","Эпоха Рэйки (715–717)","Эпоха Ёро (717–724)","Эпоха Дзинки (724–729)","Эпоха Темпьё (729–749)","Эпоха Темпьё (749–749)","Эпоха Темпьё-Сьохо (749-757)","Эпоха Темпьё-Ходзи (757-765)","Эпоха Темпьё-Ходзи (765-767)","Эпоха Джинго-Кёюн (767-770)","Эпоха Хоки (770–780)","Эпоха Теньё (781–782)","Эпоха Енряку (782–806)","Эпоха Дайдо (806–810)","Эпоха Конин (810–824)","Эпоха Тентьо (824–834)","Эпоха Шова (834–848)","Эпоха Кайо (848–851)","Эпоха Ниндзю (851–854)","Эпоха Сайко (854–857)","Эпоха Теннан (857–859)","Эпоха Йоган (859–877)","Эпоха Генкей (877–885)","Эпоха Нинна (885–889)","Эпоха Кампьё (889–898)","Эпоха Сьотай (898–901)","Эпоха Энги (901–923)","Эпоха Ентьо (923–931)","Эпоха Сьёхэй (931–938)","Эпоха Тенгьо (938–947)","Эпоха Тенрияку (947–957)","Эпоха Тентоку (957–961)","Эпоха Ова (961–964)","Эпоха Кохо (964–968)","Эпоха Анна (968–970)","Эпоха Тенроку (970–973)","Эпоха Теньен (973–976)","Эпоха Дзьоген (976–978)","Эпоха Тенген (978–983)","Эпоха Ейкан (983–985)","Эпоха Канна (985–987)","Эпоха Ейен (987–989)","Эпоха Ейсо (989–990)","Эпоха Сёряку (990–995)","Эпоха Тётоку (995–999)","Эпоха Тёхо (999–1004)","Эпоха Канко (1004–1012)","Эпоха Тёва (1012–1017)","Эпоха Каннин (1017–1021)","Эпоха Дзиан (1021–1024)","Эпоха Мандзю (1024–1028)","Эпоха Тёгэн (1028–1037)","Эпоха Тёряку (1037–1040)","Эпоха Тёкю (1040–1044)","Эпоха Катоку (1044–1046)","Эпоха Эйсо (1046–1053)","Эпоха Тэнги (1053–1058)","Эпоха Кохэй (1058–1065)","Эпоха Дзиряку (1065–1069)","Эпоха Энкю (1069–1074)","Эпоха Сёхо (1074–1077)","Эпоха Сёряку (1077–1081)","Эпоха Эйхо (1081–1084)","Эпоха Отоку (1084–1087)","Эпоха Кандзи (1087–1094)","Эпоха Кахо (1094–1096)","Эпоха Эйтё (1096–1097)","Эпоха Сётоку (1097–1099)","Эпоха Кова (1099–1104)","Эпоха Тёдзи (1104–1106)","Эпоха Касё (1106–1108)","Эпоха Тэннин (1108–1110)","Эпоха Тэнъэй (1110–1113)","Эпоха Эйкю (1113–1118)","Эпоха Гэнъэй (1118–1120)","Эпоха Хоан (1120–1124)","Эпоха Тэндзи (1124–1126)","Эпоха Дайдзи (1126–1131)","Эпоха Тэнсё (1131–1132)","Эпоха Тёсё (1132–1135)","Эпоха Хоэн (1135–1141)","Эпоха Эйдзи (1141–1142)","Эпоха Кодзи (1142–1144)","Эпоха Тэнё (1144–1145)","Эпоха Кюан (1145–1151)","Эпоха Нимпэй (1151–1154)","Эпоха Кюдзю (1154–1156)","Эпоха Хогэн (1156–1159)","Эпоха Хэйдзи (1159–1160)","Эпоха Эйряку (1160–1161)","Эпоха Охо (1161–1163)","Эпоха Тёкан (1163–1165)","Эпоха Эйман (1165–1166)","Эпоха Нинъан (1166–1169)","Эпоха Као (1169–1171)","Эпоха Сёан (1171–1175)","Эпоха Ангэн (1175–1177)","Эпоха Дзисё (1177–1181)","Эпоха Ёва (1181–1182)","Эпоха Дзюэй (1182–1184)","Эпоха Гэнрюку (1184–1185)","Эпоха Бундзи (1185–1190)","Эпоха Кэнкю (1190–1199)","Эпоха Сёдзи (1199–1201)","Эпоха Кэннин (1201–1204)","Эпоха Гэнкю (1204–1206)","Эпоха Кэнъэй (1206–1207)","Эпоха Сёгэн (1207–1211)","Эпоха Кэнряку (1211–1213)","Эпоха Кэмпо (1213–1219)","Эпоха Сёкю (1219–1222)","Эпоха Дзёо (1222–1224)","Эпоха Гэннин (1224–1225)","Эпоха Кароку (1225–1227)","Эпоха Антэй (1227–1229)","Эпоха Канки (1229–1232)","Эпоха Дзёэй (1232–1233)","Эпоха Тэмпуку (1233–1234)","Эпоха Бунряку (1234–1235)","Эпоха Катэй (1235–1238)","Эпоха Рякунин (1238–1239)","Эпоха Энъо (1239–1240)","Эпоха Ниндзи (1240–1243)","Эпоха Кангэн (1243–1247)","Эпоха Ходзи (1247–1249)","Эпоха Кэнтё (1249–1256)","Эпоха Когэн (1256–1257)","Эпоха Сёка (1257–1259)","Эпоха Сёгэн (1259–1260)","Эпоха Бунъо (1260–1261)","Эпоха Котё (1261–1264)","Эпоха Бунъэй (1264–1275)","Эпоха Кэндзи (1275–1278)","Эпоха Коан (1278–1288)","Эпоха Сёо (1288–1293)","Эпоха Эйнин (1293–1299)","Эпоха Сёан (1299–1302)","Эпоха Кэнгэн (1302–1303)","Эпоха Кагэн (1303–1306)","Эпоха Токудзи (1306–1308)","Эпоха Энкэй (1308–1311)","Эпоха Отё (1311–1312)","Эпоха Сёва (1312–1317)","Эпоха Бумпо (1317–1319)","Эпоха Гэно (1319–1321)","Эпоха Гэнкё (1321–1324)","Эпоха Сётю (1324–1326)","Эпоха Карэки (1326–1329)","Эпоха Гэнтоку (1329–1331)","Эпоха Гэнко (1331–1334)","Эпоха Кэмму (1334–1336)","Эпоха Энгэн (1336–1340)","Эпоха Кококу (1340–1346)","Эпоха Сёхэй (1346–1370)","Эпоха Кэнтоку (1370–1372)","Эпоха Бунтю (1372–1375)","Эпоха Иэндзю (1375–1379)","Эпоха Коряку (1379–1381)","Эпоха Кова (1381–1384)","Эпоха Гэнтю (1384–1392)","Эпоха Мэйтоку (1384–1387)","Эпоха Какэй (1387–1389)","Эпоха Коо (1389–1390)","Эпоха Мэйтоку (1390–1394)","Эпоха Оэй (1394–1428)","Эпоха Сётё (1428–1429)","Эпоха Эйкё (1429–1441)","Эпоха Какицу (1441–1444)","Эпоха Банъан (1444–1449)","Эпоха Хотоку (1449–1452)","Эпоха Кётоку (1452–1455)","Эпоха Косё (1455–1457)","Эпоха Тёроку (1457–1460)","Эпоха Кансё (1460–1466)","Эпоха Бунсё (1466–1467)","Эпоха Онин (1467–1469)","Эпоха Буммэй (1469–1487)","Эпоха Тёкё (1487–1489)","Эпоха Энтоку (1489–1492)","Эпоха Мэйо (1492–1501)","Эпоха Бунки (1501–1504)","Эпоха Эйсё (1504–1521)","Эпоха Тайэй (1521–1528)","Эпоха Кёроку (1528–1532)","Эпоха Тэммон (1532–1555)","Эпоха Кодзи (1555–1558)","Эпоха Эйроку (1558–1570)","Эпоха Гэнки (1570–1573)","Эпоха Тэнсё (1573–1592)","Эпоха Бунроку (1592–1596)","Эпоха Кэйтё (1596–1615)","Эпоха Гэнва (1615–1624)","Эпоха Канъэй (1624–1644)","Эпоха Сёхо (1644–1648)","Эпоха Кэйан (1648–1652)","Эпоха Сё (1652–1655)","Эпоха Мэйряку (1655–1658)","Эпоха Мандзи (1658–1661)","Эпоха Камбун (1661–1673)","Эпоха Эмпо (1673–1681)","Эпоха Тэнва (1681–1684)","Эпоха Дзёкё (1684–1688)","Эпоха Гэнроку (1688–1704)","Эпоха Хоэй (1704–1711)","Эпоха Сётоку (1711–1716)","Эпоха Кёхо (1716–1736)","Эпоха Гэмбун (1736–1741)","Эпоха Кампо (1741–1744)","Эпоха Энкё (1744–1748)","Эпоха Канъэн (1748–1751)","Эпоха Хоряку (1751–1764)","Эпоха Мэйва (1764–1772)","Эпоха Анъэй (1772–1781)","Эпоха Тэммэй (1781–1789)","Эпоха Кансэй (1789–1801)","Эпоха Кёва (1801–1804)","Эпоха Бунка (1804–1818)","Эпоха Бунсэй (1818–1830)","Эпоха Тэмпо (1830–1844)","Эпоха Кока (1844–1848)","Эпоха Каэй (1848–1854)","Эпоха Ансэй (1854–1860)","Эпоха Манъэн (1860–1861)","Эпоха Бункю (1861–1864)","Эпоха Гендзи (1864–1865)","Эпоха Кейо (1865–1868)","Эпоха Мэйдзи","Эпоха Тайсьо","Сьова","Эпоха Хэйсэй","Рэйва"],"field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","field-quarter-relative+-1":"в прошлом квартале","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","field-hour":"час","field-month-relative+-1":"в прошлом месяце","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","field-thu-short-relative+-1":"в прош. чт.","field-year-narrow-relative+-1":"в пр. г.","field-mon-narrow-relative+-1":"в прош. пн.","field-thu-narrow-relative+-1":"в прош. чт.","field-tue-narrow-relative+-1":"в прош. вт.","field-weekOfMonth-short":"нед. месяца","field-wed-short-relative+0":"в эту ср.","field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","field-weekday":"день недели","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-sat-relative+0":"в эту субботу","field-day-short-relative+1":"завтра","field-quarter-narrow-relative+1":"след. кв.","field-sat-relative+1":"в следующую субботу","field-day-short-relative+2":"послезавтра","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","field-zone-narrow":"час. пояс","field-thu-narrow-relative+0":"в этот чт.","field-thu-narrow-relative+1":"в след. чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","field-week-short-relative+-1":"на прошлой нед.","field-hour-narrow-relative+0":"в этот час","field-hour-short":"ч","field-zone-short":"час. пояс","field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","field-weekOfMonth-narrow":"нед. мес.","field-weekday-narrow":"дн. нед.","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/number.js b/lib/dojo/cldr/nls/ru/number.js
index 6d74dc52f..345febe6f 100644
--- a/lib/dojo/cldr/nls/ru/number.js
+++ b/lib/dojo/cldr/nls/ru/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"не число","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 триллиона","decimalFormat-short":"000 трлн"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 трлн","nan":"не число","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"≈","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 триллиона","decimalFormat":"#,##0.###","currencyFormat-short":"000 трлн ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/persian.js b/lib/dojo/cldr/nls/ru/persian.js
index e7df9b36d..1f3860030 100644
--- a/lib/dojo/cldr/nls/ru/persian.js
+++ b/lib/dojo/cldr/nls/ru/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/persian",{"days-standAlone-short":["вс","пн","вт","ср","чт","пт","сб"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"сейчас","field-weekday":"День недели","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","dateFormatItem-GyMMMEd":"E, d MMM y G","dateFormatItem-MMMEd":"ccc, d MMM","field-tue-relative+-1":"в прошлый вторник","days-format-short":["вс","пн","вт","ср","чт","пт","сб"],"dateFormat-long":"d MMMM y 'г'. G","field-fri-relative+-1":"в прошлую пятницу","field-wed-relative+-1":"в прошлую среду","months-format-wide":["Фарвардин","Ордибехешт","Хордад","Тир","Мордад","Шахривер","Мехр","Абан","Азер","Дей","Бахман","Эсфанд"],"dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1}, {0}","dateFormat-full":"EEEE, d MMMM y 'г'. G","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-thu-relative+-1":"в прошлый четверг","dateFormatItem-Md":"dd.MM","field-era":"Эра","months-standAlone-wide":["Фарвардин","Ордибехешт","Хордад","Тир","Мордад","Шахривер","Мехр","Абан","Азер","Дей","Бахман","Эсфанд"],"timeFormat-short":"H:mm","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"timeFormat-long":"H:mm:ss z","field-year":"Год","field-hour":"Час","months-format-abbr":["Фарвардин","Ордибехешт","Хордад","Тир","Мордад","Шахривер","Мехр","Абан","Азер","Дей","Бахман","Эсфанд"],"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"сегодня","field-thu-relative+0":"в этот четверг","field-day-relative+1":"завтра","field-thu-relative+1":"в следующий четверг","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"послезавтра","dateFormatItem-H":"H","months-standAlone-abbr":["Фарвардин","Ордибехешт","Хордад","Тир","Мордад","Шахривер","Мехр","Абан","Азер","Дей","Бахман","Эсфанд"],"quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d MMM y G","days-standAlone-wide":["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],"dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d MMM y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"в это воскресенье","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"в следующее воскресенье","quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"field-minute":"Минута","field-dayperiod":"ДП/ПП","days-standAlone-abbr":["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],"field-day-relative+-1":"вчера","dateTimeFormat-long":"{1}, {0}","dayPeriods-format-narrow-am":"AM","field-day-relative+-2":"позавчера","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, dd.MM","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","field-day":"День","days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"field-zone":"Часовой пояс","dateFormatItem-y":"y G","months-standAlone-narrow":["Я","Ф","М","А","М","И","И","А","С","О","Н","Д"],"field-year-relative+-1":"в прошлом году","field-month-relative+-1":"в прошлом месяце","days-format-abbr":["вс","пн","вт","ср","чт","пт","сб"],"days-format-narrow":["вс","пн","вт","ср","чт","пт","сб"],"dateFormatItem-yyyyMd":"dd.MM.y G","field-month":"Месяц","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"field-tue-relative+0":"в этот вторник","field-tue-relative+1":"в следующий вторник","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","dateFormat-short":"dd.MM.y G","field-second":"Секунда","field-sat-relative+-1":"в прошлую субботу","field-sun-relative+-1":"в прошлое воскресенье","field-month-relative+0":"в этом месяце","field-month-relative+1":"в следующем месяце","dateFormatItem-Ed":"E, d","field-week":"Неделя","dateFormat-medium":"d MMM y 'г'. G","field-year-relative+0":"в этому году","field-week-relative+-1":"на прошлой неделе","dateFormatItem-yyyyM":"MM.y G","field-year-relative+1":"в следующем году","dayPeriods-format-narrow-pm":"PM","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","dateTimeFormat-short":"{1}, {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-yyyy":"y G","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/persian",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-thu-short-relative+0":"в этот чт.","field-day-short-relative+-1":"вчера","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"в след. чт.","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","field-wed-narrow-relative+-1":"в прош. ср.","dateFormatItem-EBhms":"ccc, h:mm:ss B","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","dateFormatItem-yyyyQQQ":"QQQ y 'г'. G","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["персидский год"],"field-weekOfMonth":"неделя месяца","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d MMM y 'г'. G","dateFormatItem-yyyyMd":"dd.MM.y G","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","dateFormatItem-yyyyMEd":"E, dd.MM.y G","field-wed-relative+-1":"в прошлую среду","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","days-standAlone-narrow":["В","П","В","С","Ч","П","С"],"dateFormatItem-Ehms":"ccc, h:mm:ss a","dateFormat-long":"d MMMM y 'г'. G","dateFormatItem-GyMMMd":"d MMM y 'г'. G","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","quarters-standAlone-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"days-format-narrow":["вс","пн","вт","ср","чт","пт","сб"],"field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","dateFormatItem-GyMMM":"LLL y 'г'. G","field-month":"месяц","field-day-narrow":"дн.","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","dateFormat-medium":"d MMM y 'г'. G","dateFormatItem-yyyyMMMM":"LLLL y 'г'. G","eraAbbr":["перс. год"],"quarters-standAlone-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"dateFormatItem-yyyyM":"MM.y G","field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"в прошлом квартале","dateFormatItem-yyyyMMMd":"d MMM y 'г'. G","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","days-format-short":["вс","пн","вт","ср","чт","пт","сб"],"field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"dd.MM","field-hour":"час","months-format-wide":["фарвардин","ордибехешт","хордад","тир","мордад","шахривер","мехр","абан","азер","дей","бахман","эсфанд"],"dateFormat-full":"EEEE, d MMMM y 'г'. G","field-month-relative+-1":"в прошлом месяце","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","dateFormatItem-EBhm":"ccc, h:mm B","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","dateFormatItem-Ehm":"ccc, h:mm a","months-format-abbr":["фарвардин","ордибехешт","хордад","тир","мордад","шахривер","мехр","абан","азер","дей","бахман","эсфанд"],"field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","dateFormat-short":"dd.MM.y G","field-thu-short-relative+-1":"в прош. чт.","field-year-narrow-relative+-1":"в пр. г.","days-standAlone-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"dateFormatItem-yyyyMMMEd":"E, d MMM y 'г'. G","field-mon-narrow-relative+-1":"в прош. пн.","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"в прош. чт.","field-tue-narrow-relative+-1":"в прош. вт.","field-weekOfMonth-short":"нед. месяца","dateFormatItem-yyyy":"y 'г'. G","field-wed-short-relative+0":"в эту ср.","months-standAlone-wide":["фарвардин","ордибехешт","хордад","тир","мордад","шахривер","мехр","абан","азер","дей","бахман","эсфанд"],"field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","days-standAlone-abbr":["вс","пн","вт","ср","чт","пт","сб"],"dateTimeFormat-full":"{1}, {0}","field-weekday":"день недели","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-day-short-relative+1":"завтра","field-sat-relative+0":"в эту субботу","field-quarter-narrow-relative+1":"след. кв.","field-day-short-relative+2":"послезавтра","field-sat-relative+1":"в следующую субботу","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","months-standAlone-abbr":["фарвардин","ордибехешт","хордад","тир","мордад","шахривер","мехр","абан","азер","дей","бахман","эсфанд"],"field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","dateFormatItem-MEd":"E, dd.MM","field-zone-narrow":"час. пояс","dateFormatItem-y":"y 'г'. G","field-thu-narrow-relative+0":"в этот чт.","field-thu-narrow-relative+1":"в след. чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","quarters-format-wide":["1-й квартал","2-й квартал","3-й квартал","4-й квартал"],"dateFormatItem-Ed":"E, d","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y 'г'. G","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","days-standAlone-short":["вс","пн","вт","ср","чт","пт","сб"],"field-week-short-relative+-1":"на прошлой нед.","field-hour-narrow-relative+0":"в этот час","dateFormatItem-yyyyQQQQ":"QQQQ y 'г'. G","field-hour-short":"ч","field-zone-short":"час. пояс","quarters-format-abbr":["1-й кв.","2-й кв.","3-й кв.","4-й кв."],"field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","eraNarrow":"перс. год","field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","days-format-wide":["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],"field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","dateFormatItem-EHm":"ccc HH:mm","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","dateFormatItem-MMMEd":"ccc, d MMM","field-weekOfMonth-narrow":"нед. мес.","dateFormatItem-EHms":"ccc HH:mm:ss","field-weekday-narrow":"дн. нед.","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","days-format-abbr":["вс","пн","вт","ср","чт","пт","сб"],"field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","dateFormatItem-Gy":"y 'г'. G","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/ru/roc.js b/lib/dojo/cldr/nls/ru/roc.js
index b54d00b0e..c2827173e 100644
--- a/lib/dojo/cldr/nls/ru/roc.js
+++ b/lib/dojo/cldr/nls/ru/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/ru/roc",{"field-sat-relative+0":"в эту субботу","field-sat-relative+1":"в следующую субботу","field-dayperiod":"ДП/ПП","field-sun-relative+-1":"в прошлое воскресенье","field-mon-relative+-1":"в прошлый понедельник","field-minute":"Минута","field-day-relative+-1":"вчера","field-weekday":"День недели","field-day-relative+-2":"позавчера","field-era":"Эра","field-hour":"Час","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","field-wed-relative+-1":"в прошлую среду","field-day-relative+0":"сегодня","field-day-relative+1":"завтра","eraAbbr":["Before R.O.C.","Minguo"],"field-day-relative+2":"послезавтра","field-tue-relative+0":"в этот вторник","field-zone":"Часовой пояс","field-tue-relative+1":"в следующий вторник","field-week-relative+-1":"на прошлой неделе","field-year-relative+0":"в этому году","field-year-relative+1":"в следующем году","field-sat-relative+-1":"в прошлую субботу","field-year-relative+-1":"в прошлом году","field-year":"Год","field-fri-relative+0":"в эту пятницу","field-fri-relative+1":"в следующую пятницу","field-week":"Неделя","field-week-relative+0":"на этой неделе","field-week-relative+1":"на следующей неделе","field-month-relative+0":"в этом месяце","field-month":"Месяц","field-month-relative+1":"в следующем месяце","field-fri-relative+-1":"в прошлую пятницу","field-second":"Секунда","field-tue-relative+-1":"в прошлый вторник","field-day":"День","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-thu-relative+0":"в этот четверг","field-second-relative+0":"сейчас","field-thu-relative+1":"в следующий четверг","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-month-relative+-1":"в прошлом месяце","field-thu-relative+-1":"в прошлый четверг"}); \ No newline at end of file
+define("dojo/cldr/nls/ru/roc",{"field-quarter-short-relative+0":"текущий кв.","field-quarter-short-relative+1":"следующий кв.","field-tue-relative+-1":"в прошлый вторник","field-year":"год","field-wed-relative+0":"в эту среду","field-wed-relative+1":"в следующую среду","field-minute":"минута","field-month-narrow-relative+-1":"в пр. мес.","field-tue-narrow-relative+0":"в этот вт.","field-tue-narrow-relative+1":"в след. вт.","field-thu-short-relative+0":"в этот чт.","field-day-short-relative+-1":"вчера","field-thu-short-relative+1":"в след. чт.","field-day-relative+0":"сегодня","field-day-short-relative+-2":"позавчера","field-day-relative+1":"завтра","field-week-narrow-relative+0":"на эт. нед.","field-day-relative+2":"послезавтра","field-week-narrow-relative+1":"на след. нед.","field-wed-narrow-relative+-1":"в прош. ср.","field-year-narrow":"г.","field-era-short":"эра","field-year-narrow-relative+0":"в эт. г.","field-tue-relative+0":"в этот вторник","field-year-narrow-relative+1":"в сл. г.","field-tue-relative+1":"в следующий вторник","field-weekdayOfMonth":"день недели в месяце","field-second-short":"сек.","field-weekdayOfMonth-narrow":"дн. нед. в мес.","field-week-relative+0":"на этой неделе","field-month-relative+0":"в этом месяце","field-week-relative+1":"на следующей неделе","field-month-relative+1":"в следующем месяце","field-sun-narrow-relative+0":"в это вс.","field-mon-short-relative+0":"в этот пн.","field-sun-narrow-relative+1":"в след. вс.","field-mon-short-relative+1":"в след. пн.","field-second-relative+0":"сейчас","eraNames":["до основания Китайской республики","Миньго"],"field-weekOfMonth":"неделя месяца","field-month-short":"мес.","field-day":"день","field-dayOfYear-short":"дн. года","field-year-relative+-1":"в прошлом году","field-sat-short-relative+-1":"в прош. сб.","field-hour-relative+0":"в этот час","field-wed-relative+-1":"в прошлую среду","field-sat-narrow-relative+-1":"в прош. сб.","field-second":"секунда","field-hour-short-relative+0":"в этот час","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"сегодня","field-day-narrow-relative+1":"завтра","field-day-narrow-relative+2":"послезавтра","field-tue-short-relative+0":"в этот вт.","field-tue-short-relative+1":"в след. вт.","field-month-short-relative+-1":"в прошлом мес.","field-mon-relative+-1":"в прошлый понедельник","field-month":"месяц","field-day-narrow":"дн.","field-minute-short":"мин.","field-dayperiod":"AM/PM","field-sat-short-relative+0":"в эту сб.","field-sat-short-relative+1":"в след. сб.","eraAbbr":["Before R.O.C.","Minguo"],"field-second-narrow":"с","field-mon-relative+0":"в этот понедельник","field-mon-relative+1":"в следующий понедельник","field-day-narrow-relative+-1":"вчера","field-year-short":"г.","field-day-narrow-relative+-2":"позавчера","field-quarter-relative+-1":"в прошлом квартале","field-dayperiod-narrow":"AM/PM","field-week-narrow-relative+-1":"на пр. нед.","field-dayOfYear":"день года","field-sat-relative+-1":"в прошлую субботу","field-hour":"час","field-month-relative+-1":"в прошлом месяце","field-quarter-short":"кв.","field-sat-narrow-relative+0":"в эту сб.","field-fri-relative+0":"в эту пятницу","field-sat-narrow-relative+1":"в след. сб.","field-fri-relative+1":"в следующую пятницу","field-month-narrow-relative+0":"в эт. мес.","field-month-narrow-relative+1":"в след. мес.","field-sun-short-relative+0":"в это вс.","field-sun-short-relative+1":"в след. вс.","field-week-relative+-1":"на прошлой неделе","field-quarter-short-relative+-1":"последний кв.","field-quarter-relative+0":"в текущем квартале","field-minute-relative+0":"в эту минуту","field-quarter-relative+1":"в следующем квартале","field-wed-short-relative+-1":"в прош. ср.","field-thu-short-relative+-1":"в прош. чт.","field-year-narrow-relative+-1":"в пр. г.","field-mon-narrow-relative+-1":"в прош. пн.","field-thu-narrow-relative+-1":"в прош. чт.","field-tue-narrow-relative+-1":"в прош. вт.","field-weekOfMonth-short":"нед. месяца","field-wed-short-relative+0":"в эту ср.","field-wed-short-relative+1":"в след. ср.","field-sun-relative+-1":"в прошлое воскресенье","field-weekday":"день недели","field-day-short-relative+0":"сегодня","field-quarter-narrow-relative+0":"тек. кв.","field-sat-relative+0":"в эту субботу","field-day-short-relative+1":"завтра","field-quarter-narrow-relative+1":"след. кв.","field-sat-relative+1":"в следующую субботу","field-day-short-relative+2":"послезавтра","field-week-short-relative+0":"на этой нед.","field-week-short-relative+1":"на следующей нед.","field-dayOfYear-narrow":"дн. года","field-month-short-relative+0":"в этом мес.","field-month-short-relative+1":"в следующем мес.","field-weekdayOfMonth-short":"дн. нед. в месяце","field-zone-narrow":"час. пояс","field-thu-narrow-relative+0":"в этот чт.","field-thu-narrow-relative+1":"в след. чт.","field-sun-narrow-relative+-1":"в прош. вс.","field-mon-short-relative+-1":"в прош. пн.","field-thu-relative+0":"в этот четверг","field-thu-relative+1":"в следующий четверг","field-fri-short-relative+-1":"в прош. пт.","field-thu-relative+-1":"в прошлый четверг","field-week":"неделя","field-wed-narrow-relative+0":"в эту ср.","field-wed-narrow-relative+1":"в след. ср.","field-quarter-narrow-relative+-1":"посл. кв.","field-year-short-relative+0":"в этом г.","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"в след. г.","field-fri-short-relative+0":"в эту пт.","field-fri-short-relative+1":"в след. пт.","field-week-short-relative+-1":"на прошлой нед.","field-hour-narrow-relative+0":"в этот час","field-hour-short":"ч","field-zone-short":"час. пояс","field-month-narrow":"мес.","field-hour-narrow":"ч","field-fri-narrow-relative+-1":"в прош. пт.","field-year-relative+0":"в этом году","field-year-relative+1":"в следующем году","field-era-narrow":"эра","field-fri-relative+-1":"в прошлую пятницу","eraNarrow":["до респ.","Миньго"],"field-tue-short-relative+-1":"в прош. вт.","field-minute-narrow":"мин","field-mon-narrow-relative+0":"в этот пн.","field-mon-narrow-relative+1":"в след. пн.","field-year-short-relative+-1":"в прошлом г.","field-zone":"часовой пояс","field-weekOfMonth-narrow":"нед. мес.","field-weekday-narrow":"дн. нед.","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"в прош. вс.","field-day-relative+-1":"вчера","field-day-relative+-2":"позавчера","field-weekday-short":"дн. недели","field-sun-relative+0":"в это воскресенье","field-sun-relative+1":"в следующее воскресенье","field-day-short":"дн.","field-week-narrow":"нед.","field-era":"эра","field-fri-narrow-relative+0":"в эту пт.","field-fri-narrow-relative+1":"в след. пт."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/buddhist.js b/lib/dojo/cldr/nls/sk/buddhist.js
new file mode 100644
index 000000000..55a736131
--- /dev/null
+++ b/lib/dojo/cldr/nls/sk/buddhist.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sk/buddhist",{"field-quarter-short-relative+0":"tento štvrťr.","field-quarter-short-relative+1":"budúci štvrťr.","field-tue-relative+-1":"minulý utorok","field-year":"rok","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","timeFormat-short":"H:mm","field-minute":"minúta","field-tue-narrow-relative+0":"tento ut.","field-tue-narrow-relative+1":"budúci ut.","field-thu-short-relative+0":"tento št.","field-day-short-relative+-1":"včera","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"budúci št.","field-day-relative+0":"dnes","field-day-short-relative+-2":"predvčerom","field-day-relative+1":"zajtra","field-day-relative+2":"pozajtra","field-wed-narrow-relative+-1":"minulú st.","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"tento utorok","field-year-narrow-relative+1":"budúci rok","field-tue-relative+1":"budúci utorok","field-weekdayOfMonth":"deň týždňa v mesiaci","field-second-short":"s","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d.  týž. v mes.","field-week-relative+0":"tento týždeň","field-month-relative+0":"tento mesiac","field-week-relative+1":"budúci týždeň","field-month-relative+1":"budúci mesiac","field-sun-narrow-relative+0":"túto ne.","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"tento pond.","field-sun-narrow-relative+1":"budúcu ne.","field-mon-short-relative+1":"budúci pond.","field-second-relative+0":"teraz","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"eraNames":["BE"],"field-weekOfMonth":"týždeň mesiaca","field-month-short":"mes.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"deň","field-dayOfYear-short":"deň r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulú so.","field-hour-relative+0":"v tejto hodine","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-wed-relative+-1":"minulú stredu","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"minulú so.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","š","p","s"],"dateFormat-long":"d. M. y G","dateFormatItem-GyMMMd":"d. M. y G","field-quarter":"štvrťrok","field-week-short":"týž.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zajtra","field-day-narrow-relative+2":"pozajtra","quarters-standAlone-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"days-format-narrow":["n","p","u","s","š","p","s"],"field-tue-short-relative+0":"tento utor.","field-tue-short-relative+1":"budúci utor.","field-month-short-relative+-1":"minulý mes.","field-mon-relative+-1":"minulý pondelok","dateFormatItem-GyMMM":"LLL y G","field-month":"mesiac","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"túto so.","field-sat-short-relative+1":"budúcu so.","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["BE"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"predvčerom","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-quarter-relative+-1":"minulý štvrťrok","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"AM/PM","days-format-short":["ne","po","ut","st","št","pi","so"],"field-dayOfYear":"deň roka","field-sat-relative+-1":"minulú sobotu","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d. M.","field-hour":"hodina","months-format-wide":["januára","februára","marca","apríla","mája","júna","júla","augusta","septembra","októbra","novembra","decembra"],"dateFormat-full":"EEEE, d. M. y G","field-month-relative+-1":"minulý mesiac","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"Q","field-sat-narrow-relative+0":"túto so.","field-fri-relative+0":"tento piatok","field-sat-narrow-relative+1":"budúcu so.","field-fri-relative+1":"budúci piatok","field-sun-short-relative+0":"túto ned.","field-sun-short-relative+1":"budúcu ned.","field-week-relative+-1":"minulý týždeň","field-quarter-short-relative+-1":"minulý štvrťr.","months-format-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"field-quarter-relative+0":"tento štvrťrok","field-minute-relative+0":"v tejto minúte","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"budúci štvrťrok","field-wed-short-relative+-1":"minulú str.","dateFormat-short":"d.M.y GGGGG","field-thu-short-relative+-1":"minulý št.","field-year-narrow-relative+-1":"minulý rok","days-standAlone-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulý po.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý št.","field-tue-narrow-relative+-1":"minulý ut.","dateFormatItem-H":"H","field-weekOfMonth-short":"týž. mes.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"túto str.","dateFormatItem-M":"M.","months-standAlone-wide":["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],"field-wed-short-relative+1":"budúcu str.","field-sun-relative+-1":"minulú nedeľu","days-standAlone-abbr":["ne","po","ut","st","št","pi","so"],"dateTimeFormat-full":"{1}, {0}","dateFormatItem-d":"d.","field-weekday":"deň týždňa","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"tento štvrťr.","field-sat-relative+0":"túto sobotu","field-day-short-relative+1":"zajtra","field-quarter-narrow-relative+1":"budúci štvrťr.","field-sat-relative+1":"budúcu sobotu","field-day-short-relative+2":"pozajtra","field-week-short-relative+0":"tento týž.","field-week-short-relative+1":"budúci týž.","months-standAlone-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"field-dayOfYear-narrow":"deň r.","field-month-short-relative+0":"tento mes.","field-month-short-relative+1":"budúci mes.","field-weekdayOfMonth-short":"d.  týž. v mes.","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento št.","field-thu-narrow-relative+1":"budúci št.","field-sun-narrow-relative+-1":"minulú ne.","field-mon-short-relative+-1":"minulý pond.","field-thu-relative+0":"tento štvrtok","field-thu-relative+1":"budúci štvrtok","field-fri-short-relative+-1":"minulý pi.","field-thu-relative+-1":"minulý štvrtok","field-week":"týždeň","quarters-format-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"túto st.","field-wed-narrow-relative+1":"budúcu st.","field-quarter-narrow-relative+-1":"minulý štvrťr.","field-year-short-relative+0":"tento rok","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"budúci rok","field-fri-short-relative+0":"tento pi.","field-fri-short-relative+1":"budúci pi.","days-standAlone-short":["ne","po","ut","st","št","pi","so"],"field-week-short-relative+-1":"minulý týž.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"pásmo","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pi.","field-year-relative+0":"tento rok","field-year-relative+1":"budúci rok","field-era-narrow":"letop.","field-fri-relative+-1":"minulý piatok","eraNarrow":"BE","field-tue-short-relative+-1":"minulý utor.","field-minute-narrow":"min","days-format-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"field-mon-narrow-relative+0":"tento po.","field-mon-narrow-relative+1":"budúci po.","dateFormatItem-EHm":"E H:mm","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týž. mes.","dateFormatItem-EHms":"E H:mm:ss","field-weekday-narrow":"deň týž.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulú ned.","field-day-relative+-1":"včera","field-day-relative+-2":"predvčerom","field-weekday-short":"deň týž.","days-format-abbr":["ne","po","ut","st","št","pi","so"],"field-sun-relative+0":"túto nedeľu","field-sun-relative+1":"budúcu nedeľu","dateFormatItem-Gy":"y G","field-day-short":"d.","field-week-narrow":"týž.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pi.","field-fri-narrow-relative+1":"budúci pi."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/coptic.js b/lib/dojo/cldr/nls/sk/coptic.js
new file mode 100644
index 000000000..582f62e84
--- /dev/null
+++ b/lib/dojo/cldr/nls/sk/coptic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sk/coptic",{"field-quarter-short-relative+0":"tento štvrťr.","field-quarter-short-relative+1":"budúci štvrťr.","field-tue-relative+-1":"minulý utorok","field-year":"rok","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","field-minute":"minúta","field-tue-narrow-relative+0":"tento ut.","field-tue-narrow-relative+1":"budúci ut.","field-thu-short-relative+0":"tento št.","field-day-short-relative+-1":"včera","field-thu-short-relative+1":"budúci št.","field-day-relative+0":"dnes","field-day-short-relative+-2":"predvčerom","field-day-relative+1":"zajtra","field-day-relative+2":"pozajtra","field-wed-narrow-relative+-1":"minulú st.","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"tento utorok","field-year-narrow-relative+1":"budúci rok","field-tue-relative+1":"budúci utorok","field-weekdayOfMonth":"deň týždňa v mesiaci","field-second-short":"s","field-weekdayOfMonth-narrow":"d.  týž. v mes.","field-week-relative+0":"tento týždeň","field-month-relative+0":"tento mesiac","field-week-relative+1":"budúci týždeň","field-month-relative+1":"budúci mesiac","field-sun-narrow-relative+0":"túto ne.","field-mon-short-relative+0":"tento pond.","field-sun-narrow-relative+1":"budúcu ne.","field-mon-short-relative+1":"budúci pond.","field-second-relative+0":"teraz","eraNames":["ERA0","ERA1"],"field-weekOfMonth":"týždeň mesiaca","field-month-short":"mes.","field-day":"deň","field-dayOfYear-short":"deň r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulú so.","field-hour-relative+0":"v tejto hodine","field-wed-relative+-1":"minulú stredu","field-sat-narrow-relative+-1":"minulú so.","field-second":"sekunda","field-quarter":"štvrťrok","field-week-short":"týž.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zajtra","field-day-narrow-relative+2":"pozajtra","field-tue-short-relative+0":"tento utor.","field-tue-short-relative+1":"budúci utor.","field-month-short-relative+-1":"minulý mes.","field-mon-relative+-1":"minulý pondelok","field-month":"mesiac","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"túto so.","field-sat-short-relative+1":"budúcu so.","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"s","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"predvčerom","field-quarter-relative+-1":"minulý štvrťrok","field-dayperiod-narrow":"AM/PM","field-dayOfYear":"deň roka","field-sat-relative+-1":"minulú sobotu","field-hour":"hodina","months-format-wide":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","ba’ouna","abib","mesra","nasie"],"field-month-relative+-1":"minulý mesiac","field-quarter-short":"Q","field-sat-narrow-relative+0":"túto so.","field-fri-relative+0":"tento piatok","field-sat-narrow-relative+1":"budúcu so.","field-fri-relative+1":"budúci piatok","field-sun-short-relative+0":"túto ned.","field-sun-short-relative+1":"budúcu ned.","field-week-relative+-1":"minulý týždeň","field-quarter-short-relative+-1":"minulý štvrťr.","months-format-abbr":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","ba’ouna","abib","mesra","nasie"],"field-quarter-relative+0":"tento štvrťrok","field-minute-relative+0":"v tejto minúte","field-quarter-relative+1":"budúci štvrťrok","field-wed-short-relative+-1":"minulú str.","field-thu-short-relative+-1":"minulý št.","field-year-narrow-relative+-1":"minulý rok","field-mon-narrow-relative+-1":"minulý po.","field-thu-narrow-relative+-1":"minulý št.","field-tue-narrow-relative+-1":"minulý ut.","field-weekOfMonth-short":"týž. mes.","field-wed-short-relative+0":"túto str.","months-standAlone-wide":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","ba’ouna","abib","mesra","nasie"],"field-wed-short-relative+1":"budúcu str.","field-sun-relative+-1":"minulú nedeľu","field-weekday":"deň týždňa","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"tento štvrťr.","field-sat-relative+0":"túto sobotu","field-day-short-relative+1":"zajtra","field-quarter-narrow-relative+1":"budúci štvrťr.","field-sat-relative+1":"budúcu sobotu","field-day-short-relative+2":"pozajtra","field-week-short-relative+0":"tento týž.","field-week-short-relative+1":"budúci týž.","months-standAlone-abbr":["tout","baba","hator","kiahk","toba","amshir","baramhat","baramouda","bashans","ba’ouna","abib","mesra","nasie"],"field-dayOfYear-narrow":"deň r.","field-month-short-relative+0":"tento mes.","field-month-short-relative+1":"budúci mes.","field-weekdayOfMonth-short":"d.  týž. v mes.","field-zone-narrow":"pásmo","field-thu-narrow-relative+0":"tento št.","field-thu-narrow-relative+1":"budúci št.","field-sun-narrow-relative+-1":"minulú ne.","field-mon-short-relative+-1":"minulý pond.","field-thu-relative+0":"tento štvrtok","field-thu-relative+1":"budúci štvrtok","field-fri-short-relative+-1":"minulý pi.","field-thu-relative+-1":"minulý štvrtok","field-week":"týždeň","field-wed-narrow-relative+0":"túto st.","field-wed-narrow-relative+1":"budúcu st.","field-quarter-narrow-relative+-1":"minulý štvrťr.","field-year-short-relative+0":"tento rok","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"budúci rok","field-fri-short-relative+0":"tento pi.","field-fri-short-relative+1":"budúci pi.","field-week-short-relative+-1":"minulý týž.","field-hour-short":"h","field-zone-short":"pásmo","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pi.","field-year-relative+0":"tento rok","field-year-relative+1":"budúci rok","field-era-narrow":"letop.","field-fri-relative+-1":"minulý piatok","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"minulý utor.","field-minute-narrow":"min","field-mon-narrow-relative+0":"tento po.","field-mon-narrow-relative+1":"budúci po.","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","field-weekOfMonth-narrow":"týž. mes.","field-weekday-narrow":"deň týž.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulú ned.","field-day-relative+-1":"včera","field-day-relative+-2":"predvčerom","field-weekday-short":"deň týž.","field-sun-relative+0":"túto nedeľu","field-sun-relative+1":"budúcu nedeľu","field-day-short":"d.","field-week-narrow":"týž.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pi.","field-fri-narrow-relative+1":"budúci pi."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/currency.js b/lib/dojo/cldr/nls/sk/currency.js
index 6380f38c7..cf1926d28 100644
--- a/lib/dojo/cldr/nls/sk/currency.js
+++ b/lib/dojo/cldr/nls/sk/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sk/currency",{"HKD_displayName":"hongkonský dolár","CHF_displayName":"švajčiarsky frank","JPY_symbol":"JPY","CAD_displayName":"kanadský dolár","HKD_symbol":"HKD","CNY_displayName":"čínsky jüan","USD_symbol":"USD","AUD_displayName":"austrálsky dolár","JPY_displayName":"japonský jen","CAD_symbol":"CAD","USD_displayName":"americký dolár","EUR_symbol":"€","CNY_symbol":"CNY","GBP_displayName":"britská libra","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/sk/currency",{"HKD_displayName":"hongkonský dolár","CNY_displayName":"čínsky jüan","JPY_displayName":"japonský jen","JPY_symbol":"JPY","USD_displayName":"americký dolár","CAD_symbol":"CAD","GBP_displayName":"britská libra","CHF_displayName":"švajčiarsky frank","CNY_symbol":"CNY","EUR_displayName":"euro","GBP_symbol":"GBP","CAD_displayName":"kanadský dolár","USD_symbol":"USD","EUR_symbol":"€","AUD_displayName":"austrálsky dolár","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/ethiopic.js b/lib/dojo/cldr/nls/sk/ethiopic.js
new file mode 100644
index 000000000..34cbcabeb
--- /dev/null
+++ b/lib/dojo/cldr/nls/sk/ethiopic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sk/ethiopic",{"field-quarter-short-relative+0":"tento štvrťr.","field-quarter-short-relative+1":"budúci štvrťr.","field-tue-relative+-1":"minulý utorok","field-year":"rok","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","field-minute":"minúta","field-tue-narrow-relative+0":"tento ut.","field-tue-narrow-relative+1":"budúci ut.","field-thu-short-relative+0":"tento št.","field-day-short-relative+-1":"včera","field-thu-short-relative+1":"budúci št.","field-day-relative+0":"dnes","field-day-short-relative+-2":"predvčerom","field-day-relative+1":"zajtra","field-day-relative+2":"pozajtra","field-wed-narrow-relative+-1":"minulú st.","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"tento utorok","field-year-narrow-relative+1":"budúci rok","field-tue-relative+1":"budúci utorok","field-weekdayOfMonth":"deň týždňa v mesiaci","field-second-short":"s","field-weekdayOfMonth-narrow":"d.  týž. v mes.","field-week-relative+0":"tento týždeň","field-month-relative+0":"tento mesiac","field-week-relative+1":"budúci týždeň","field-month-relative+1":"budúci mesiac","field-sun-narrow-relative+0":"túto ne.","field-mon-short-relative+0":"tento pond.","field-sun-narrow-relative+1":"budúcu ne.","field-mon-short-relative+1":"budúci pond.","field-second-relative+0":"teraz","eraNames":["ERA0","ERA1"],"field-weekOfMonth":"týždeň mesiaca","field-month-short":"mes.","field-day":"deň","field-dayOfYear-short":"deň r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulú so.","field-hour-relative+0":"v tejto hodine","field-wed-relative+-1":"minulú stredu","field-sat-narrow-relative+-1":"minulú so.","field-second":"sekunda","field-quarter":"štvrťrok","field-week-short":"týž.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zajtra","field-day-narrow-relative+2":"pozajtra","field-tue-short-relative+0":"tento utor.","field-tue-short-relative+1":"budúci utor.","field-month-short-relative+-1":"minulý mes.","field-mon-relative+-1":"minulý pondelok","field-month":"mesiac","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"túto so.","field-sat-short-relative+1":"budúcu so.","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"s","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"predvčerom","field-quarter-relative+-1":"minulý štvrťrok","field-dayperiod-narrow":"AM/PM","field-dayOfYear":"deň roka","field-sat-relative+-1":"minulú sobotu","field-hour":"hodina","months-format-wide":["meskerem","tikemet","hidar","tahesas","tir","yekatit","megabit","miyaza","ginbot","sene","hamle","nehase","pagume"],"field-month-relative+-1":"minulý mesiac","field-quarter-short":"Q","field-sat-narrow-relative+0":"túto so.","field-fri-relative+0":"tento piatok","field-sat-narrow-relative+1":"budúcu so.","field-fri-relative+1":"budúci piatok","field-sun-short-relative+0":"túto ned.","field-sun-short-relative+1":"budúcu ned.","field-week-relative+-1":"minulý týždeň","field-quarter-short-relative+-1":"minulý štvrťr.","months-format-abbr":["meskerem","tikemet","hidar","tahesas","tir","yekatit","megabit","miyaza","ginbot","sene","hamle","nehase","pagume"],"field-quarter-relative+0":"tento štvrťrok","field-minute-relative+0":"v tejto minúte","field-quarter-relative+1":"budúci štvrťrok","field-wed-short-relative+-1":"minulú str.","field-thu-short-relative+-1":"minulý št.","field-year-narrow-relative+-1":"minulý rok","field-mon-narrow-relative+-1":"minulý po.","field-thu-narrow-relative+-1":"minulý št.","field-tue-narrow-relative+-1":"minulý ut.","field-weekOfMonth-short":"týž. mes.","field-wed-short-relative+0":"túto str.","months-standAlone-wide":["meskerem","tikemet","hidar","tahesas","tir","yekatit","megabit","miyaza","ginbot","sene","hamle","nehase","pagume"],"field-wed-short-relative+1":"budúcu str.","field-sun-relative+-1":"minulú nedeľu","field-weekday":"deň týždňa","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"tento štvrťr.","field-sat-relative+0":"túto sobotu","field-day-short-relative+1":"zajtra","field-quarter-narrow-relative+1":"budúci štvrťr.","field-sat-relative+1":"budúcu sobotu","field-day-short-relative+2":"pozajtra","field-week-short-relative+0":"tento týž.","field-week-short-relative+1":"budúci týž.","months-standAlone-abbr":["meskerem","tikemet","hidar","tahesas","tir","yekatit","megabit","miyaza","ginbot","sene","hamle","nehase","pagume"],"field-dayOfYear-narrow":"deň r.","field-month-short-relative+0":"tento mes.","field-month-short-relative+1":"budúci mes.","field-weekdayOfMonth-short":"d.  týž. v mes.","field-zone-narrow":"pásmo","field-thu-narrow-relative+0":"tento št.","field-thu-narrow-relative+1":"budúci št.","field-sun-narrow-relative+-1":"minulú ne.","field-mon-short-relative+-1":"minulý pond.","field-thu-relative+0":"tento štvrtok","field-thu-relative+1":"budúci štvrtok","field-fri-short-relative+-1":"minulý pi.","field-thu-relative+-1":"minulý štvrtok","field-week":"týždeň","field-wed-narrow-relative+0":"túto st.","field-wed-narrow-relative+1":"budúcu st.","field-quarter-narrow-relative+-1":"minulý štvrťr.","field-year-short-relative+0":"tento rok","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"budúci rok","field-fri-short-relative+0":"tento pi.","field-fri-short-relative+1":"budúci pi.","field-week-short-relative+-1":"minulý týž.","field-hour-short":"h","field-zone-short":"pásmo","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pi.","field-year-relative+0":"tento rok","field-year-relative+1":"budúci rok","field-era-narrow":"letop.","field-fri-relative+-1":"minulý piatok","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"minulý utor.","field-minute-narrow":"min","field-mon-narrow-relative+0":"tento po.","field-mon-narrow-relative+1":"budúci po.","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","field-weekOfMonth-narrow":"týž. mes.","field-weekday-narrow":"deň týž.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulú ned.","field-day-relative+-1":"včera","field-day-relative+-2":"predvčerom","field-weekday-short":"deň týž.","field-sun-relative+0":"túto nedeľu","field-sun-relative+1":"budúcu nedeľu","field-day-short":"d.","field-week-narrow":"týž.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pi.","field-fri-narrow-relative+1":"budúci pi."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/generic.js b/lib/dojo/cldr/nls/sk/generic.js
index 09c57eeb2..0722f34ee 100644
--- a/lib/dojo/cldr/nls/sk/generic.js
+++ b/lib/dojo/cldr/nls/sk/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sk/generic",{"field-second-relative+0":"teraz","field-weekday":"deň v týždni","field-wed-relative+0":"túto stredu","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-MMMEd":"E, d. MMM","field-wed-relative+1":"budúcu stredu","field-tue-relative+-1":"minulý utorok","dateFormat-long":"d. MMMM y G","field-fri-relative+-1":"minulý piatok","field-wed-relative+-1":"minulú stredu","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE, d. MMMM y G","dateFormatItem-yyyyMEd":"E d. M. y G","field-thu-relative+-1":"minulý štvrtok","dateFormatItem-Md":"d.M.","field-era":"letopočet","field-year":"rok","dateFormatItem-yyyyMMMM":"LLLL y G","field-hour":"hodina","field-sat-relative+0":"túto sobotu","field-sat-relative+1":"budúcu sobotu","field-day-relative+0":"dnes","field-day-relative+1":"zajtra","field-thu-relative+0":"tento štvrtok","dateFormatItem-GyMMMd":"d.M.y G","field-day-relative+2":"pozajtra","field-thu-relative+1":"budúci štvrtok","dateFormatItem-H":"H","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d. MMM y G","dateFormatItem-M":"L.","dateFormatItem-yyyyMMM":"LLL y G","dateFormatItem-yyyyMMMd":"d.M.y G","dateFormatItem-MMMMd":"d. MMMM","dateFormatItem-GyMMMMd":"d. MMMM y G","field-sun-relative+0":"túto nedeľu","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"budúcu nedeľu","field-minute":"minúta","field-dayperiod":"časť dňa","dateFormatItem-d":"d.","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"včera","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"predvčerom","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d.M.","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"tento piatok","field-fri-relative+1":"budúci piatok","field-day":"deň","field-zone":"časové pásmo","dateFormatItem-y":"y G","field-year-relative+-1":"minulý rok","field-month-relative+-1":"minulý mesiac","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMMMMd":"d. MMMM y G","dateFormatItem-yyyyMd":"d.M.y G","field-month":"mesiac","dateFormatItem-MMM":"LLL","field-tue-relative+0":"tento utorok","field-tue-relative+1":"budúci utorok","dateFormatItem-MMMMEd":"E, d. MMMM","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","dateFormat-short":"d.M.y GGGGG","field-second":"sekunda","field-sat-relative+-1":"minulú sobotu","field-sun-relative+-1":"minulú nedeľu","field-month-relative+0":"tento mesiac","field-month-relative+1":"budúci mesiac","dateFormatItem-Ed":"E d.","field-week":"týždeň","dateFormat-medium":"d.M.y G","field-year-relative+0":"tento rok","field-week-relative+-1":"minulý týždeň","dateFormatItem-yyyyM":"M.y G","field-year-relative+1":"budúci rok","dateFormatItem-mmss":"mm:ss","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"LLL y G","field-mon-relative+-1":"minulý pondelok","dateFormatItem-yyyy":"y G","field-week-relative+0":"tento týždeň","field-week-relative+1":"budúci týždeň"}); \ No newline at end of file
+define("dojo/cldr/nls/sk/generic",{"field-quarter-short-relative+0":"tento štvrťr.","field-quarter-short-relative+1":"budúci štvrťr.","field-tue-relative+-1":"minulý utorok","field-year":"rok","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","dateFormatItem-ms":"mm:ss","field-minute":"minúta","field-tue-narrow-relative+0":"tento ut.","field-tue-narrow-relative+1":"budúci ut.","field-day-short-relative+-1":"včera","field-thu-short-relative+0":"tento št.","dateTimeFormat-short":"{1}, {0}","field-day-relative+0":"dnes","field-day-short-relative+-2":"predvčerom","field-thu-short-relative+1":"budúci št.","field-day-relative+1":"zajtra","field-day-relative+2":"pozajtra","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"minulú st.","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"tento utorok","field-year-narrow-relative+1":"budúci rok","field-tue-relative+1":"budúci utorok","field-weekdayOfMonth":"deň týždňa v mesiaci","field-second-short":"s","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d.  týž. v mes.","field-week-relative+0":"tento týždeň","field-month-relative+0":"tento mesiac","field-week-relative+1":"budúci týždeň","field-month-relative+1":"budúci mesiac","field-sun-narrow-relative+0":"túto ne.","field-mon-short-relative+0":"tento pond.","field-sun-narrow-relative+1":"budúcu ne.","field-mon-short-relative+1":"budúci pond.","field-second-relative+0":"teraz","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"týždeň mesiaca","field-month-short":"mes.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"deň","field-dayOfYear-short":"deň r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulú so.","dateFormatItem-yyyyMMMMd":"d. MMMM y G","field-hour-relative+0":"v tejto hodine","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-wed-relative+-1":"minulú stredu","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"minulú so.","field-second":"sekunda","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d. M. y G","dateFormatItem-GyMMMd":"d. M. y G","field-quarter":"štvrťrok","field-week-short":"týž.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zajtra","field-day-narrow-relative+2":"pozajtra","field-tue-short-relative+0":"tento utor.","field-tue-short-relative+1":"budúci utor.","field-month-short-relative+-1":"minulý mes.","field-mon-relative+-1":"minulý pondelok","dateFormatItem-GyMMM":"LLL y G","field-month":"mesiac","field-day-narrow":"d.","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"túto so.","field-sat-short-relative+1":"budúcu so.","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"predvčerom","field-quarter-relative+-1":"minulý štvrťrok","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"AM/PM","field-dayOfYear":"deň roka","field-sat-relative+-1":"minulú sobotu","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d. M.","field-hour":"hodina","dateFormat-full":"EEEE, d. M. y G","field-month-relative+-1":"minulý mesiac","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"Q","field-sat-narrow-relative+0":"túto so.","field-fri-relative+0":"tento piatok","field-sat-narrow-relative+1":"budúcu so.","field-fri-relative+1":"budúci piatok","dateFormatItem-EBhm":"E h:mm B","field-sun-short-relative+0":"túto ned.","field-sun-short-relative+1":"budúcu ned.","field-week-relative+-1":"minulý týždeň","field-quarter-short-relative+-1":"minulý štvrťr.","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"tento štvrťrok","field-minute-relative+0":"v tejto minúte","field-quarter-relative+1":"budúci štvrťrok","field-wed-short-relative+-1":"minulú str.","dateFormat-short":"d.M.y GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"minulý rok","field-thu-short-relative+-1":"minulý št.","dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulý po.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý št.","dateFormatItem-E":"ccc","dateFormatItem-mmss":"mm:ss","dateFormatItem-H":"H","field-weekOfMonth-short":"týž. mes.","field-tue-narrow-relative+-1":"minulý ut.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"M.","field-wed-short-relative+0":"túto str.","field-wed-short-relative+1":"budúcu str.","field-sun-relative+-1":"minulú nedeľu","dateFormatItem-MMMMEd":"E d. MMMM","dateTimeFormat-full":"{1}, {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d.","field-weekday":"deň týždňa","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"tento štvrťr.","field-day-short-relative+1":"zajtra","field-sat-relative+0":"túto sobotu","field-quarter-narrow-relative+1":"budúci štvrťr.","dateFormatItem-h":"h a","field-day-short-relative+2":"pozajtra","field-sat-relative+1":"budúcu sobotu","field-week-short-relative+0":"tento týž.","field-week-short-relative+1":"budúci týž.","field-dayOfYear-narrow":"deň r.","field-month-short-relative+0":"tento mes.","field-month-short-relative+1":"budúci mes.","field-weekdayOfMonth-short":"d.  týž. v mes.","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento št.","field-sun-narrow-relative+-1":"minulú ne.","field-mon-short-relative+-1":"minulý pond.","field-thu-narrow-relative+1":"budúci št.","field-thu-relative+0":"tento štvrtok","field-thu-relative+1":"budúci štvrtok","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"minulý pi.","field-thu-relative+-1":"minulý štvrtok","field-week":"týždeň","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"túto st.","field-wed-narrow-relative+1":"budúcu st.","field-quarter-narrow-relative+-1":"minulý štvrťr.","field-year-short-relative+0":"tento rok","dateFormatItem-yyyyMMM":"LLL y G","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"budúci rok","field-fri-short-relative+0":"tento pi.","field-fri-short-relative+1":"budúci pi.","field-week-short-relative+-1":"minulý týž.","dateFormatItem-GyMMMMd":"d. M. y G","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"pásmo","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pi.","field-year-relative+0":"tento rok","field-year-relative+1":"budúci rok","field-era-narrow":"letop.","field-fri-relative+-1":"minulý piatok","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"minulý utor.","field-minute-narrow":"min","field-mon-narrow-relative+0":"tento po.","dateFormatItem-EHm":"E H:mm","field-mon-narrow-relative+1":"budúci po.","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týž. mes.","dateFormatItem-EHms":"E H:mm:ss","field-weekday-narrow":"deň týž.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulú ned.","field-day-relative+-1":"včera","field-day-relative+-2":"predvčerom","field-weekday-short":"deň týž.","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"túto nedeľu","field-sun-relative+1":"budúcu nedeľu","dateFormatItem-Gy":"y G","field-day-short":"d.","field-week-narrow":"týž.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pi.","field-fri-narrow-relative+1":"budúci pi."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/gregorian.js b/lib/dojo/cldr/nls/sk/gregorian.js
index 02d578128..c6c248dba 100644
--- a/lib/dojo/cldr/nls/sk/gregorian.js
+++ b/lib/dojo/cldr/nls/sk/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sk/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Ne","Po","Ut","St","Št","Pi","So"],"months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-second-relative+0":"teraz","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"deň v týždni","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d. M. y","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","dateFormatItem-GyMMMEd":"E, d. MMMM y G","dateFormatItem-MMMEd":"E, d. M.","eraNarrow":["pred Kr.","po Kr."],"field-tue-relative+-1":"minulý utorok","days-format-short":["Ne","Po","Ut","St","Št","Pi","So"],"dateFormat-long":"d. MMMM y","field-fri-relative+-1":"minulý piatok","field-wed-relative+-1":"minulú stredu","months-format-wide":["januára","februára","marca","apríla","mája","júna","júla","augusta","septembra","októbra","novembra","decembra"],"dateTimeFormat-medium":"{1}, {0}","dateFormatItem-yMMMMd":"d. MMMM y","dayPeriods-format-wide-pm":"odpoludnia","dateFormat-full":"EEEE, d. MMMM y","field-thu-relative+-1":"minulý štvrtok","dateFormatItem-Md":"d. M.","dateFormatItem-yMd":"d. M. y","field-era":"letopočet","dateFormatItem-yM":"M/y","months-standAlone-wide":["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],"timeFormat-short":"H:mm","quarters-format-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"dateFormatItem-yQQQQ":"QQQQ y","timeFormat-long":"H:mm:ss z","field-year":"rok","dateFormatItem-yMMM":"LLLL y","field-hour":"hodina","months-format-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"field-sat-relative+0":"túto sobotu","field-sat-relative+1":"budúcu sobotu","timeFormat-full":"H:mm:ss zzzz","field-day-relative+0":"dnes","field-thu-relative+0":"tento štvrtok","field-day-relative+1":"zajtra","field-thu-relative+1":"budúci štvrtok","dateFormatItem-GyMMMd":"d. M. y G","field-day-relative+2":"pozajtra","dateFormatItem-H":"H","months-standAlone-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L.","days-standAlone-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"dateFormatItem-MMMMd":"d. MMMM","dateFormatItem-GyMMMMd":"d. MMMM y G","timeFormat-medium":"H:mm:ss","field-sun-relative+0":"túto nedeľu","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"budúcu nedeľu","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["pred Kr.","po Kr."],"field-minute":"minúta","field-dayperiod":"časť dňa","days-standAlone-abbr":["ne","po","ut","st","št","pi","so"],"dateFormatItem-d":"d.","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"včera","dateFormatItem-h":"h a","dateTimeFormat-long":"{1}, {0}","field-day-relative+-2":"predvčerom","dateFormatItem-MMMd":"d. M","dateFormatItem-MEd":"E, d. M.","dateTimeFormat-full":"{1}, {0}","field-fri-relative+0":"tento piatok","dateFormatItem-yMMMM":"LLLL y","field-fri-relative+1":"budúci piatok","field-day":"deň","days-format-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"field-zone":"časové pásmo","dateFormatItem-y":"y","months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-year-relative+-1":"minulý rok","field-month-relative+-1":"minulý mesiac","dateFormatItem-hm":"h:mm a","days-format-abbr":["ne","po","ut","st","št","pi","so"],"dateFormatItem-yMMMd":"d. M. y","eraNames":["pred Kristom","po Kristovi"],"days-format-narrow":["N","P","U","S","Š","P","S"],"days-standAlone-narrow":["N","P","U","S","Š","P","S"],"dateFormatItem-MMM":"LLL","field-month":"mesiac","field-tue-relative+0":"tento utorok","field-tue-relative+1":"budúci utorok","dayPeriods-format-wide-am":"dopoludnia","dateFormatItem-MMMMEd":"E, d. MMMM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","dateFormat-short":"dd.MM.yy","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"sekunda","field-sat-relative+-1":"minulú sobotu","dateFormatItem-yMMMEd":"E d. M. y","field-sun-relative+-1":"minulú nedeľu","field-month-relative+0":"tento mesiac","field-month-relative+1":"budúci mesiac","dateFormatItem-Ed":"E d.","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"týždeň","dateFormat-medium":"d. M. y","field-year-relative+0":"tento rok","field-week-relative+-1":"minulý týždeň","field-year-relative+1":"budúci rok","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"LLLL y G","field-mon-relative+-1":"minulý pondelok","field-week-relative+0":"tento týždeň","field-week-relative+1":"budúci týždeň"}); \ No newline at end of file
+define("dojo/cldr/nls/sk/gregorian",{"dateFormatItem-yMMMM":"LLLL y","field-thu-narrow-relative+0":"tento št.","field-thu-narrow-relative+1":"budúci št.","field-sun-narrow-relative+0":"túto ne.","field-sun-narrow-relative+1":"budúcu ne.","months-format-wide":["januára","februára","marca","apríla","mája","júna","júla","augusta","septembra","októbra","novembra","decembra"],"dayPeriods-standAlone-abbr-pm":"PM","dateFormatItem-Hms":"H:mm:ss","field-fri-narrow-relative+0":"tento pi.","field-fri-narrow-relative+1":"budúci pi.","eraNarrow":["pred Kr.","po Kr."],"dateFormatItem-Hmv":"H:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d. M. y","dayPeriods-format-abbr-night1":"v noci","dayPeriods-format-narrow-evening1":"več.","days-standAlone-narrow":["n","p","u","s","š","p","s"],"days-standAlone-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"dayPeriods-format-abbr-afternoon1":"popol.","dayPeriods-format-wide-evening1":"večer","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"minulú st.","dayPeriods-standAlone-wide-evening1":"večer","days-format-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"field-month-short-relative+0":"tento mes.","field-month-short-relative+1":"budúci mes.","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"več.","dayPeriods-standAlone-abbr-afternoon1":"popol.","field-thu-relative+0":"tento štvrtok","dayPeriods-standAlone-abbr-night1":"noc","field-thu-relative+1":"budúci štvrtok","dayPeriods-format-wide-am":"AM","field-fri-relative+0":"tento piatok","field-fri-relative+1":"budúci piatok","dateFormatItem-yMd":"d. M. y","field-thu-narrow-relative+-1":"minulý št.","field-quarter-relative+0":"tento štvrťrok","field-quarter-relative+1":"budúci štvrťrok","field-sun-short-relative+0":"túto ned.","timeFormat-short":"H:mm","field-sun-short-relative+1":"budúcu ned.","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"pop.","dateFormatItem-Md":"d. M.","dateFormatItem-Hmsv":"H:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"týž.","field-hour-relative+0":"v tejto hodine","field-day-relative+-1":"včera","field-day-relative+-2":"predvčerom","field-mon-narrow-relative+-1":"minulý po.","field-minute-narrow":"min","dateFormatItem-MMMMEd":"E d. MMMM","field-thu-short-relative+0":"tento št.","field-mon-relative+0":"tento pondelok","field-thu-short-relative+1":"budúci št.","field-mon-relative+1":"budúci pondelok","field-day-narrow-relative+0":"dnes","field-era-short":"letop.","field-day-narrow-relative+1":"zajtra","field-sat-narrow-relative+0":"túto so.","field-day-narrow-relative+2":"pozajtra","timeFormat-long":"H:mm:ss z","field-sat-narrow-relative+1":"budúcu so.","field-wed-narrow-relative+0":"túto st.","field-wed-narrow-relative+1":"budúcu st.","field-month":"mesiac","months-standAlone-wide":["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],"field-weekday-narrow":"deň týž.","dayPeriods-standAlone-narrow-afternoon1":"pop.","field-year-relative+0":"tento rok","field-year-relative+1":"budúci rok","dayPeriods-format-abbr-evening1":"večer","dayPeriods-format-abbr-noon":"napol.","dayPeriods-format-narrow-midnight":"o poln.","dayPeriods-format-wide-midnight":"o polnoci","field-tue-relative+0":"tento utorok","dateFormatItem-GyMMMMd":"d. M. y G","field-tue-relative+1":"budúci utorok","dayPeriods-standAlone-abbr-evening1":"večer","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"polnoc","field-year-narrow":"r.","dateFormatItem-mmss":"mm:ss","dayPeriods-standAlone-abbr-noon":"pol.","field-tue-short-relative+0":"tento utor.","dayPeriods-standAlone-narrow-midnight":"poln.","field-tue-short-relative+1":"budúci utor.","field-tue-narrow-relative+0":"tento ut.","field-tue-narrow-relative+1":"budúci ut.","dateTimeFormat-full":"{1}, {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"H","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","dateFormatItem-M":"L.","field-wed-short-relative+0":"túto str.","field-fri-short-relative+0":"tento pi.","field-wed-short-relative+1":"budúcu str.","field-fri-short-relative+1":"budúci pi.","field-weekOfMonth-short":"týž. mes.","field-quarter-short-relative+-1":"minulý štvrťr.","field-year-short-relative+-1":"minulý rok","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"v noci","dateTimeFormat-medium":"{1}, {0}","field-quarter-narrow-relative+-1":"minulý štvrťr.","dateFormatItem-d":"d.","dayPeriods-format-abbr-pm":"PM","dateFormatItem-h":"h a","quarters-standAlone-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"field-weekOfMonth-narrow":"týž. mes.","dateFormatItem-y":"y","field-minute-relative+0":"v tejto minúte","field-year-short-relative+0":"tento rok","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"budúci rok","field-weekday":"deň týždňa","dayPeriods-format-narrow-pm":"PM","field-tue-narrow-relative+-1":"minulý ut.","dateFormatItem-yMEd":"E d. M. y","dayPeriods-standAlone-wide-night1":"noc","field-year-narrow-relative+-1":"minulý rok","field-sat-relative+-1":"minulú sobotu","dayPeriods-format-abbr-midnight":"o poln.","dayPeriods-format-narrow-morning1":"ráno","dayPeriods-format-narrow-morning2":"dop.","dayPeriods-format-wide-morning1":"ráno","dayPeriods-format-wide-morning2":"dopoludnia","dayPeriods-standAlone-abbr-midnight":"poln.","dayPeriods-standAlone-narrow-pm":"PM","dayPeriods-standAlone-wide-morning1":"ráno","field-mon-narrow-relative+0":"tento po.","dayPeriods-standAlone-wide-morning2":"dopoludnie","field-mon-narrow-relative+1":"budúci po.","field-second":"sekunda","dateFormatItem-yMMMEd":"E d. M. y","field-year-relative+-1":"minulý rok","field-weekdayOfMonth-short":"d.  týž. v mes.","dateFormat-short":"d. M. y","eraNames":["pred Kristom","po Kristovi"],"field-second-short":"s","field-thu-short-relative+-1":"minulý št.","field-zone":"časové pásmo","field-dayperiod-narrow":"AM/PM","field-sun-short-relative+-1":"minulú ned.","dayPeriods-standAlone-narrow-morning1":"ráno","dayPeriods-standAlone-narrow-morning2":"dop.","eraAbbr":["pred Kr.","po Kr."],"field-week-short":"týž.","dayPeriods-standAlone-abbr-am":"AM","dayPeriods-standAlone-wide-pm":"PM","dateFormatItem-ms":"mm:ss","field-day-relative+0":"dnes","field-day-relative+1":"zajtra","field-day-relative+2":"pozajtra","field-day-short-relative+0":"dnes","field-dayOfYear-short":"deň r.","field-day-short-relative+1":"zajtra","dateFormat-long":"d. MMMM y","field-day-short-relative+2":"pozajtra","field-sun-narrow-relative+-1":"minulú ne.","dayPeriods-format-wide-noon":"napoludnie","field-second-relative+0":"teraz","field-quarter-relative+-1":"minulý štvrťrok","dayPeriods-format-narrow-night1":"v n.","quarters-format-abbr":["Q1","Q2","Q3","Q4"],"dayPeriods-standAlone-wide-noon":"poludnie","dayPeriods-standAlone-narrow-night1":"noc","field-week-relative+-1":"minulý týždeň","dayPeriods-format-abbr-morning1":"ráno","field-month-relative+-1":"minulý mesiac","dayPeriods-format-abbr-morning2":"dopol.","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-year":"rok","field-era":"letopočet","dayPeriods-standAlone-abbr-morning1":"ráno","dayPeriods-standAlone-abbr-morning2":"dopol.","days-standAlone-short":["ne","po","ut","st","št","pi","so"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"včera","field-day-short-relative+-2":"predvčerom","dateFormatItem-GyMMM":"LLLL y G","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"hodina","field-dayOfYear-narrow":"deň r.","field-quarter":"štvrťrok","field-day":"deň","field-mon-relative+-1":"minulý pondelok","field-dayOfYear":"deň roka","dateFormat-medium":"d. M. y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"M/y","dateFormatItem-GyMMMd":"d. M. y G","dateFormatItem-MEd":"E d. M.","field-tue-short-relative+-1":"minulý utor.","field-year-short":"r.","field-month-short":"mes.","dateFormatItem-MMMEd":"E d. M.","dayPeriods-format-wide-afternoon1":"popoludní","dateFormatItem-MMMd":"d. M.","dateFormatItem-Bh":"h B","months-format-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"dayPeriods-format-abbr-am":"AM","field-sat-relative+0":"túto sobotu","field-sat-relative+1":"budúcu sobotu","dayPeriods-format-wide-pm":"PM","field-zone-short":"pásmo","days-standAlone-abbr":["ne","po","ut","st","št","pi","so"],"field-week-short-relative+0":"tento týž.","dateFormatItem-yMMMMd":"d. MMMM y","field-week-short-relative+1":"budúci týž.","dayPeriods-standAlone-wide-afternoon1":"popoludnie","field-fri-short-relative+-1":"minulý pi.","field-month-narrow":"mes.","dayPeriods-format-narrow-am":"AM","days-format-abbr":["ne","po","ut","st","št","pi","so"],"field-weekday-short":"deň týž.","field-day-narrow-relative+-1":"včera","field-day-narrow-relative+-2":"predvčerom","field-quarter-short":"Q","days-format-short":["ne","po","ut","st","št","pi","so"],"months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"days-format-narrow":["n","p","u","s","š","p","s"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"Q","field-mon-short-relative+0":"tento pond.","field-mon-short-relative+1":"budúci pond.","field-dayperiod-short":"AM/PM","dayPeriods-standAlone-narrow-am":"AM","field-thu-relative+-1":"minulý štvrtok","field-fri-narrow-relative+-1":"minulý pi.","field-mon-short-relative+-1":"minulý pond.","timeFormat-medium":"H:mm:ss","field-quarter-short-relative+0":"tento štvrťr.","field-quarter-short-relative+1":"budúci štvrťr.","dateFormatItem-Ed":"E d.","field-wed-relative+-1":"minulú stredu","field-weekOfMonth":"týždeň mesiaca","field-weekdayOfMonth-narrow":"d.  týž. v mes.","dayPeriods-standAlone-wide-am":"AM","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"minulý piatok","field-minute":"minúta","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"field-day-short":"d.","field-dayperiod":"AM/PM","field-hour-short":"h","months-standAlone-abbr":["jan","feb","mar","apr","máj","jún","júl","aug","sep","okt","nov","dec"],"field-second-narrow":"s","field-month-relative+0":"tento mesiac","field-month-relative+1":"budúci mesiac","dateFormat-full":"EEEE d. MMMM y","field-era-narrow":"letop.","field-sat-short-relative+-1":"minulú so.","dayPeriods-format-narrow-noon":"nap.","field-week-short-relative+-1":"minulý týž.","dateTimeFormat-long":"{1}, {0}","dateFormatItem-yM":"M/y","field-sun-relative+-1":"minulú nedeľu","field-wed-short-relative+-1":"minulú str.","field-weekdayOfMonth":"deň týždňa v mesiaci","field-quarter-narrow-relative+0":"tento štvrťr.","dateFormatItem-GyMMMEd":"E d. M. y G","field-quarter-narrow-relative+1":"budúci štvrťr.","field-sat-short-relative+0":"túto so.","field-hour-narrow":"h","field-sat-short-relative+1":"budúcu so.","field-year-narrow-relative+0":"tento rok","field-year-narrow-relative+1":"budúci rok","dateFormatItem-Gy":"y G","field-zone-narrow":"pásmo","dayPeriods-standAlone-narrow-noon":"pol.","field-tue-relative+-1":"minulý utorok","field-minute-short":"min","dateFormatItem-yw":"w. 'týždeň' 'roka' Y","dateFormatItem-Hm":"H:mm","field-week-relative+0":"tento týždeň","field-week-relative+1":"budúci týždeň","dateFormatItem-MMM":"LLL","field-sun-relative+0":"túto nedeľu","field-sun-relative+1":"budúcu nedeľu","field-sat-narrow-relative+-1":"minulú so.","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"dateFormatItem-MMMMW":"W. 'týždeň' MMMM","field-month-short-relative+-1":"minulý mes.","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d. MMMM","field-week":"týždeň","field-day-narrow":"d."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/hebrew.js b/lib/dojo/cldr/nls/sk/hebrew.js
new file mode 100644
index 000000000..7106b8e82
--- /dev/null
+++ b/lib/dojo/cldr/nls/sk/hebrew.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sk/hebrew",{"field-quarter-short-relative+0":"tento štvrťr.","field-quarter-short-relative+1":"budúci štvrťr.","field-tue-relative+-1":"minulý utorok","field-year":"rok","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","timeFormat-short":"H:mm","field-minute":"minúta","field-tue-narrow-relative+0":"tento ut.","field-tue-narrow-relative+1":"budúci ut.","field-thu-short-relative+0":"tento št.","field-day-short-relative+-1":"včera","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"budúci št.","field-day-relative+0":"dnes","field-day-short-relative+-2":"predvčerom","field-day-relative+1":"zajtra","field-day-relative+2":"pozajtra","field-wed-narrow-relative+-1":"minulú st.","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"tento utorok","field-year-narrow-relative+1":"budúci rok","field-tue-relative+1":"budúci utorok","field-weekdayOfMonth":"deň týždňa v mesiaci","field-second-short":"s","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d.  týž. v mes.","field-week-relative+0":"tento týždeň","field-month-relative+0":"tento mesiac","field-week-relative+1":"budúci týždeň","field-month-relative+1":"budúci mesiac","field-sun-narrow-relative+0":"túto ne.","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"tento pond.","field-sun-narrow-relative+1":"budúcu ne.","field-mon-short-relative+1":"budúci pond.","field-second-relative+0":"teraz","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["AM"],"field-weekOfMonth":"týždeň mesiaca","field-month-short":"mes.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"deň","field-dayOfYear-short":"deň r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulú so.","field-hour-relative+0":"v tejto hodine","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-wed-relative+-1":"minulú stredu","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"minulú so.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","š","p","s"],"dateFormat-long":"d. M. y G","dateFormatItem-GyMMMd":"d. M. y G","field-quarter":"štvrťrok","field-week-short":"týž.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zajtra","field-day-narrow-relative+2":"pozajtra","quarters-standAlone-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"days-format-narrow":["n","p","u","s","š","p","s"],"field-tue-short-relative+0":"tento utor.","field-tue-short-relative+1":"budúci utor.","field-month-short-relative+-1":"minulý mes.","field-mon-relative+-1":"minulý pondelok","dateFormatItem-GyMMM":"LLL y G","field-month":"mesiac","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"túto so.","field-sat-short-relative+1":"budúcu so.","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["AM"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"predvčerom","field-quarter-relative+-1":"minulý štvrťrok","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"AM/PM","days-format-short":["ne","po","ut","st","št","pi","so"],"field-dayOfYear":"deň roka","field-sat-relative+-1":"minulú sobotu","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d. M.","field-hour":"hodina","months-format-wide":["tišri","chešvan","kislev","tevet","ševat","adar I","adar","nisan","ijar","sivan","tamuz","av","elul"],"dateFormat-full":"EEEE, d. M. y G","field-month-relative+-1":"minulý mesiac","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"Q","field-sat-narrow-relative+0":"túto so.","field-fri-relative+0":"tento piatok","field-sat-narrow-relative+1":"budúcu so.","field-fri-relative+1":"budúci piatok","field-sun-short-relative+0":"túto ned.","field-sun-short-relative+1":"budúcu ned.","field-week-relative+-1":"minulý týždeň","field-quarter-short-relative+-1":"minulý štvrťr.","months-format-abbr":["tišri","chešvan","kislev","tevet","ševat","adar I","adar","nisan","ijar","sivan","tamuz","av","elul"],"field-quarter-relative+0":"tento štvrťrok","field-minute-relative+0":"v tejto minúte","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"budúci štvrťrok","field-wed-short-relative+-1":"minulú str.","dateFormat-short":"d.M.y GGGGG","field-thu-short-relative+-1":"minulý št.","field-year-narrow-relative+-1":"minulý rok","days-standAlone-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulý po.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý št.","field-tue-narrow-relative+-1":"minulý ut.","dateFormatItem-H":"H","field-weekOfMonth-short":"týž. mes.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"túto str.","dateFormatItem-M":"M.","months-standAlone-wide":["tišri","chešvan","kislev","tevet","ševat","adar I","adar","nisan","ijar","sivan","tamuz","av","elul"],"field-wed-short-relative+1":"budúcu str.","field-sun-relative+-1":"minulú nedeľu","days-standAlone-abbr":["ne","po","ut","st","št","pi","so"],"dateTimeFormat-full":"{1}, {0}","months-format-abbr-leap":"adar II","dateFormatItem-d":"d.","field-weekday":"deň týždňa","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"tento štvrťr.","field-sat-relative+0":"túto sobotu","field-day-short-relative+1":"zajtra","field-quarter-narrow-relative+1":"budúci štvrťr.","field-sat-relative+1":"budúcu sobotu","field-day-short-relative+2":"pozajtra","field-week-short-relative+0":"tento týž.","field-week-short-relative+1":"budúci týž.","months-standAlone-abbr":["tišri","chešvan","kislev","tevet","ševat","adar I","adar","nisan","ijar","sivan","tamuz","av","elul"],"months-format-wide-leap":"adar II","field-dayOfYear-narrow":"deň r.","field-month-short-relative+0":"tento mes.","field-month-short-relative+1":"budúci mes.","field-weekdayOfMonth-short":"d.  týž. v mes.","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento št.","field-thu-narrow-relative+1":"budúci št.","field-sun-narrow-relative+-1":"minulú ne.","field-mon-short-relative+-1":"minulý pond.","field-thu-relative+0":"tento štvrtok","field-thu-relative+1":"budúci štvrtok","field-fri-short-relative+-1":"minulý pi.","field-thu-relative+-1":"minulý štvrtok","field-week":"týždeň","quarters-format-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"túto st.","field-wed-narrow-relative+1":"budúcu st.","field-quarter-narrow-relative+-1":"minulý štvrťr.","field-year-short-relative+0":"tento rok","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"budúci rok","field-fri-short-relative+0":"tento pi.","field-fri-short-relative+1":"budúci pi.","days-standAlone-short":["ne","po","ut","st","št","pi","so"],"field-week-short-relative+-1":"minulý týž.","months-standAlone-abbr-leap":"adar II","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"pásmo","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pi.","field-year-relative+0":"tento rok","field-year-relative+1":"budúci rok","field-era-narrow":"letop.","field-fri-relative+-1":"minulý piatok","eraNarrow":"AM","field-tue-short-relative+-1":"minulý utor.","field-minute-narrow":"min","days-format-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"field-mon-narrow-relative+0":"tento po.","field-mon-narrow-relative+1":"budúci po.","dateFormatItem-EHm":"E H:mm","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týž. mes.","dateFormatItem-EHms":"E H:mm:ss","field-weekday-narrow":"deň týž.","months-standAlone-wide-leap":"adar II","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulú ned.","field-day-relative+-1":"včera","field-day-relative+-2":"predvčerom","field-weekday-short":"deň týž.","days-format-abbr":["ne","po","ut","st","št","pi","so"],"field-sun-relative+0":"túto nedeľu","field-sun-relative+1":"budúcu nedeľu","dateFormatItem-Gy":"y G","field-day-short":"d.","field-week-narrow":"týž.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pi.","field-fri-narrow-relative+1":"budúci pi."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/indian.js b/lib/dojo/cldr/nls/sk/indian.js
new file mode 100644
index 000000000..0fd04c822
--- /dev/null
+++ b/lib/dojo/cldr/nls/sk/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sk/indian",{"field-quarter-short-relative+0":"tento štvrťr.","field-quarter-short-relative+1":"budúci štvrťr.","field-tue-relative+-1":"minulý utorok","field-year":"rok","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","field-minute":"minúta","field-tue-narrow-relative+0":"tento ut.","field-tue-narrow-relative+1":"budúci ut.","field-thu-short-relative+0":"tento št.","field-day-short-relative+-1":"včera","field-thu-short-relative+1":"budúci št.","field-day-relative+0":"dnes","field-day-short-relative+-2":"predvčerom","field-day-relative+1":"zajtra","field-day-relative+2":"pozajtra","field-wed-narrow-relative+-1":"minulú st.","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"tento utorok","field-year-narrow-relative+1":"budúci rok","field-tue-relative+1":"budúci utorok","field-weekdayOfMonth":"deň týždňa v mesiaci","field-second-short":"s","field-weekdayOfMonth-narrow":"d.  týž. v mes.","field-week-relative+0":"tento týždeň","field-month-relative+0":"tento mesiac","field-week-relative+1":"budúci týždeň","field-month-relative+1":"budúci mesiac","field-sun-narrow-relative+0":"túto ne.","field-mon-short-relative+0":"tento pond.","field-sun-narrow-relative+1":"budúcu ne.","field-mon-short-relative+1":"budúci pond.","field-second-relative+0":"teraz","eraNames":["Šaka"],"field-weekOfMonth":"týždeň mesiaca","field-month-short":"mes.","field-day":"deň","field-dayOfYear-short":"deň r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulú so.","field-hour-relative+0":"v tejto hodine","field-wed-relative+-1":"minulú stredu","field-sat-narrow-relative+-1":"minulú so.","field-second":"sekunda","field-quarter":"štvrťrok","field-week-short":"týž.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zajtra","field-day-narrow-relative+2":"pozajtra","field-tue-short-relative+0":"tento utor.","field-tue-short-relative+1":"budúci utor.","field-month-short-relative+-1":"minulý mes.","field-mon-relative+-1":"minulý pondelok","field-month":"mesiac","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"túto so.","field-sat-short-relative+1":"budúcu so.","eraAbbr":["Šaka"],"field-second-narrow":"s","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"predvčerom","field-quarter-relative+-1":"minulý štvrťrok","field-dayperiod-narrow":"AM/PM","field-dayOfYear":"deň roka","field-sat-relative+-1":"minulú sobotu","field-hour":"hodina","months-format-wide":["čaitra","vaišákh","džjéšth","ášádh","šrávana","bhádrapad","ášvin","kártik","agrahajana","pauš","mágh","phálgun"],"field-month-relative+-1":"minulý mesiac","field-quarter-short":"Q","field-sat-narrow-relative+0":"túto so.","field-fri-relative+0":"tento piatok","field-sat-narrow-relative+1":"budúcu so.","field-fri-relative+1":"budúci piatok","field-sun-short-relative+0":"túto ned.","field-sun-short-relative+1":"budúcu ned.","field-week-relative+-1":"minulý týždeň","field-quarter-short-relative+-1":"minulý štvrťr.","months-format-abbr":["čaitra","vaišákh","džjéšth","ášádh","šrávana","bhádrapad","ášvin","kártik","agrahajana","pauš","mágh","phálgun"],"field-quarter-relative+0":"tento štvrťrok","field-minute-relative+0":"v tejto minúte","field-quarter-relative+1":"budúci štvrťrok","field-wed-short-relative+-1":"minulú str.","field-thu-short-relative+-1":"minulý št.","field-year-narrow-relative+-1":"minulý rok","field-mon-narrow-relative+-1":"minulý po.","field-thu-narrow-relative+-1":"minulý št.","field-tue-narrow-relative+-1":"minulý ut.","field-weekOfMonth-short":"týž. mes.","field-wed-short-relative+0":"túto str.","months-standAlone-wide":["čaitra","vaišákh","džjéšth","ášádh","šrávana","bhádrapad","ášvin","kártik","agrahajana","pauš","mágh","phálgun"],"field-wed-short-relative+1":"budúcu str.","field-sun-relative+-1":"minulú nedeľu","field-weekday":"deň týždňa","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"tento štvrťr.","field-sat-relative+0":"túto sobotu","field-day-short-relative+1":"zajtra","field-quarter-narrow-relative+1":"budúci štvrťr.","field-sat-relative+1":"budúcu sobotu","field-day-short-relative+2":"pozajtra","field-week-short-relative+0":"tento týž.","field-week-short-relative+1":"budúci týž.","months-standAlone-abbr":["čaitra","vaišákh","džjéšth","ášádh","šrávana","bhádrapad","ášvin","kártik","agrahajana","pauš","mágh","phálgun"],"field-dayOfYear-narrow":"deň r.","field-month-short-relative+0":"tento mes.","field-month-short-relative+1":"budúci mes.","field-weekdayOfMonth-short":"d.  týž. v mes.","field-zone-narrow":"pásmo","field-thu-narrow-relative+0":"tento št.","field-thu-narrow-relative+1":"budúci št.","field-sun-narrow-relative+-1":"minulú ne.","field-mon-short-relative+-1":"minulý pond.","field-thu-relative+0":"tento štvrtok","field-thu-relative+1":"budúci štvrtok","field-fri-short-relative+-1":"minulý pi.","field-thu-relative+-1":"minulý štvrtok","field-week":"týždeň","field-wed-narrow-relative+0":"túto st.","field-wed-narrow-relative+1":"budúcu st.","field-quarter-narrow-relative+-1":"minulý štvrťr.","field-year-short-relative+0":"tento rok","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"budúci rok","field-fri-short-relative+0":"tento pi.","field-fri-short-relative+1":"budúci pi.","field-week-short-relative+-1":"minulý týž.","field-hour-short":"h","field-zone-short":"pásmo","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pi.","field-year-relative+0":"tento rok","field-year-relative+1":"budúci rok","field-era-narrow":"letop.","field-fri-relative+-1":"minulý piatok","eraNarrow":"Šaka","field-tue-short-relative+-1":"minulý utor.","field-minute-narrow":"min","field-mon-narrow-relative+0":"tento po.","field-mon-narrow-relative+1":"budúci po.","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","field-weekOfMonth-narrow":"týž. mes.","field-weekday-narrow":"deň týž.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulú ned.","field-day-relative+-1":"včera","field-day-relative+-2":"predvčerom","field-weekday-short":"deň týž.","field-sun-relative+0":"túto nedeľu","field-sun-relative+1":"budúcu nedeľu","field-day-short":"d.","field-week-narrow":"týž.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pi.","field-fri-narrow-relative+1":"budúci pi."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/islamic.js b/lib/dojo/cldr/nls/sk/islamic.js
new file mode 100644
index 000000000..960036579
--- /dev/null
+++ b/lib/dojo/cldr/nls/sk/islamic.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sk/islamic",{"field-quarter-short-relative+0":"tento štvrťr.","field-quarter-short-relative+1":"budúci štvrťr.","field-tue-relative+-1":"minulý utorok","field-year":"rok","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","timeFormat-short":"H:mm","field-minute":"minúta","field-tue-narrow-relative+0":"tento ut.","field-tue-narrow-relative+1":"budúci ut.","field-thu-short-relative+0":"tento št.","field-day-short-relative+-1":"včera","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"budúci št.","field-day-relative+0":"dnes","field-day-short-relative+-2":"predvčerom","field-day-relative+1":"zajtra","field-day-relative+2":"pozajtra","field-wed-narrow-relative+-1":"minulú st.","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"tento utorok","field-year-narrow-relative+1":"budúci rok","field-tue-relative+1":"budúci utorok","field-weekdayOfMonth":"deň týždňa v mesiaci","field-second-short":"s","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d.  týž. v mes.","field-week-relative+0":"tento týždeň","field-month-relative+0":"tento mesiac","field-week-relative+1":"budúci týždeň","field-month-relative+1":"budúci mesiac","field-sun-narrow-relative+0":"túto ne.","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"tento pond.","field-sun-narrow-relative+1":"budúcu ne.","field-mon-short-relative+1":"budúci pond.","field-second-relative+0":"teraz","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["AH"],"field-weekOfMonth":"týždeň mesiaca","field-month-short":"mes.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"deň","field-dayOfYear-short":"deň r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulú so.","field-hour-relative+0":"v tejto hodine","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-wed-relative+-1":"minulú stredu","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"minulú so.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","š","p","s"],"dateFormat-long":"d. M. y G","dateFormatItem-GyMMMd":"d. M. y G","field-quarter":"štvrťrok","field-week-short":"týž.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zajtra","field-day-narrow-relative+2":"pozajtra","quarters-standAlone-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"days-format-narrow":["n","p","u","s","š","p","s"],"field-tue-short-relative+0":"tento utor.","field-tue-short-relative+1":"budúci utor.","field-month-short-relative+-1":"minulý mes.","field-mon-relative+-1":"minulý pondelok","dateFormatItem-GyMMM":"LLL y G","field-month":"mesiac","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"túto so.","field-sat-short-relative+1":"budúcu so.","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["AH"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"predvčerom","field-quarter-relative+-1":"minulý štvrťrok","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"AM/PM","days-format-short":["ne","po","ut","st","št","pi","so"],"field-dayOfYear":"deň roka","field-sat-relative+-1":"minulú sobotu","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d. M.","field-hour":"hodina","months-format-wide":["al-muharram","safar","rabí´ al-avval","rabí´ath-thání","džumádá l-úlá","džumádá l-áchira","radžab","ša´ bán","ramadán","šauvál","dhú l-ka´ da","dhú l-hidždža"],"dateFormat-full":"EEEE, d. M. y G","field-month-relative+-1":"minulý mesiac","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"Q","field-sat-narrow-relative+0":"túto so.","field-fri-relative+0":"tento piatok","field-sat-narrow-relative+1":"budúcu so.","field-fri-relative+1":"budúci piatok","field-sun-short-relative+0":"túto ned.","field-sun-short-relative+1":"budúcu ned.","field-week-relative+-1":"minulý týždeň","field-quarter-short-relative+-1":"minulý štvrťr.","months-format-abbr":["muh.","saf.","rab. I","rab. II","džum. I","džum. II","rad.","ša.","ram.","šau.","dhú l-k.","dhú l-h."],"field-quarter-relative+0":"tento štvrťrok","field-minute-relative+0":"v tejto minúte","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"budúci štvrťrok","field-wed-short-relative+-1":"minulú str.","dateFormat-short":"d.M.y GGGGG","field-thu-short-relative+-1":"minulý št.","field-year-narrow-relative+-1":"minulý rok","days-standAlone-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulý po.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý št.","field-tue-narrow-relative+-1":"minulý ut.","dateFormatItem-H":"H","field-weekOfMonth-short":"týž. mes.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"túto str.","dateFormatItem-M":"M.","months-standAlone-wide":["al-muharram","safar","rabí´ al-avval","rabí´ath-thání","džumádá l-úlá","džumádá l-áchira","radžab","ša´ bán","ramadán","šauvál","dhú l-ka´ da","dhú l-hidždža"],"field-wed-short-relative+1":"budúcu str.","field-sun-relative+-1":"minulú nedeľu","days-standAlone-abbr":["ne","po","ut","st","št","pi","so"],"dateTimeFormat-full":"{1}, {0}","dateFormatItem-d":"d.","field-weekday":"deň týždňa","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"tento štvrťr.","field-sat-relative+0":"túto sobotu","field-day-short-relative+1":"zajtra","field-quarter-narrow-relative+1":"budúci štvrťr.","field-sat-relative+1":"budúcu sobotu","field-day-short-relative+2":"pozajtra","field-week-short-relative+0":"tento týž.","field-week-short-relative+1":"budúci týž.","months-standAlone-abbr":["muh.","saf.","rab. I","rab. II","džum. I","džum. II","rad.","ša.","ram.","šau.","dhú l-k.","dhú l-h."],"field-dayOfYear-narrow":"deň r.","field-month-short-relative+0":"tento mes.","field-month-short-relative+1":"budúci mes.","field-weekdayOfMonth-short":"d.  týž. v mes.","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento št.","field-thu-narrow-relative+1":"budúci št.","field-sun-narrow-relative+-1":"minulú ne.","field-mon-short-relative+-1":"minulý pond.","field-thu-relative+0":"tento štvrtok","field-thu-relative+1":"budúci štvrtok","field-fri-short-relative+-1":"minulý pi.","field-thu-relative+-1":"minulý štvrtok","field-week":"týždeň","quarters-format-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"túto st.","field-wed-narrow-relative+1":"budúcu st.","field-quarter-narrow-relative+-1":"minulý štvrťr.","field-year-short-relative+0":"tento rok","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"budúci rok","field-fri-short-relative+0":"tento pi.","field-fri-short-relative+1":"budúci pi.","days-standAlone-short":["ne","po","ut","st","št","pi","so"],"field-week-short-relative+-1":"minulý týž.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"pásmo","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pi.","field-year-relative+0":"tento rok","field-year-relative+1":"budúci rok","field-era-narrow":"letop.","field-fri-relative+-1":"minulý piatok","eraNarrow":"AH","field-tue-short-relative+-1":"minulý utor.","field-minute-narrow":"min","days-format-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"field-mon-narrow-relative+0":"tento po.","field-mon-narrow-relative+1":"budúci po.","dateFormatItem-EHm":"E H:mm","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týž. mes.","dateFormatItem-EHms":"E H:mm:ss","field-weekday-narrow":"deň týž.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulú ned.","field-day-relative+-1":"včera","field-day-relative+-2":"predvčerom","field-weekday-short":"deň týž.","days-format-abbr":["ne","po","ut","st","št","pi","so"],"field-sun-relative+0":"túto nedeľu","field-sun-relative+1":"budúcu nedeľu","dateFormatItem-Gy":"y G","field-day-short":"d.","field-week-narrow":"týž.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pi.","field-fri-narrow-relative+1":"budúci pi."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/number.js b/lib/dojo/cldr/nls/sk/number.js
index c31d4fcce..5e02bdd90 100644
--- a/lib/dojo/cldr/nls/sk/number.js
+++ b/lib/dojo/cldr/nls/sk/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sk/number",{"group":" ","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 biliónov","decimalFormat-short":"000 bil'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/sk/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 bil'.'","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","approximatelySign":"~","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biliónov","decimalFormat":"#,##0.###","currencyFormat-short":"000 bil'.' ¤","timeSeparator":":","decimal":",","exponential":"e"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/persian.js b/lib/dojo/cldr/nls/sk/persian.js
new file mode 100644
index 000000000..40d6d1c8b
--- /dev/null
+++ b/lib/dojo/cldr/nls/sk/persian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sk/persian",{"field-quarter-short-relative+0":"tento štvrťr.","field-quarter-short-relative+1":"budúci štvrťr.","field-tue-relative+-1":"minulý utorok","field-year":"rok","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","timeFormat-short":"H:mm","field-minute":"minúta","field-tue-narrow-relative+0":"tento ut.","field-tue-narrow-relative+1":"budúci ut.","field-thu-short-relative+0":"tento št.","field-day-short-relative+-1":"včera","dateTimeFormat-short":"{1}, {0}","field-thu-short-relative+1":"budúci št.","field-day-relative+0":"dnes","field-day-short-relative+-2":"predvčerom","field-day-relative+1":"zajtra","field-day-relative+2":"pozajtra","field-wed-narrow-relative+-1":"minulú st.","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"tento utorok","field-year-narrow-relative+1":"budúci rok","field-tue-relative+1":"budúci utorok","field-weekdayOfMonth":"deň týždňa v mesiaci","field-second-short":"s","dateFormatItem-MMMd":"d. M.","field-weekdayOfMonth-narrow":"d.  týž. v mes.","field-week-relative+0":"tento týždeň","field-month-relative+0":"tento mesiac","field-week-relative+1":"budúci týždeň","field-month-relative+1":"budúci mesiac","field-sun-narrow-relative+0":"túto ne.","timeFormat-medium":"H:mm:ss","field-mon-short-relative+0":"tento pond.","field-sun-narrow-relative+1":"budúcu ne.","field-mon-short-relative+1":"budúci pond.","field-second-relative+0":"teraz","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"eraNames":["AP"],"field-weekOfMonth":"týždeň mesiaca","field-month-short":"mes.","dateFormatItem-GyMMMEd":"E d. M. y G","dateFormatItem-yyyyMd":"d. M. y GGGGG","field-day":"deň","field-dayOfYear-short":"deň r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulú so.","field-hour-relative+0":"v tejto hodine","dateFormatItem-yyyyMEd":"E d. M. y GGGGG","field-wed-relative+-1":"minulú stredu","dateTimeFormat-medium":"{1}, {0}","field-sat-narrow-relative+-1":"minulú so.","field-second":"sekunda","days-standAlone-narrow":["n","p","u","s","š","p","s"],"dateFormat-long":"d. M. y G","dateFormatItem-GyMMMd":"d. M. y G","field-quarter":"štvrťrok","field-week-short":"týž.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zajtra","field-day-narrow-relative+2":"pozajtra","quarters-standAlone-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"days-format-narrow":["n","p","u","s","š","p","s"],"field-tue-short-relative+0":"tento utor.","field-tue-short-relative+1":"budúci utor.","field-month-short-relative+-1":"minulý mes.","field-mon-relative+-1":"minulý pondelok","dateFormatItem-GyMMM":"LLL y G","field-month":"mesiac","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"túto so.","field-sat-short-relative+1":"budúcu so.","dateFormat-medium":"d. M. y G","dateFormatItem-yyyyMMMM":"LLLL y G","eraAbbr":["AP"],"dateFormatItem-yyyyM":"M/y GGGGG","field-second-narrow":"s","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"predvčerom","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-quarter-relative+-1":"minulý štvrťrok","dateFormatItem-yyyyMMMd":"d. M. y G","field-dayperiod-narrow":"AM/PM","days-format-short":["ne","po","ut","st","št","pi","so"],"field-dayOfYear":"deň roka","field-sat-relative+-1":"minulú sobotu","dateTimeFormat-long":"{1}, {0}","dateFormatItem-Md":"d. M.","field-hour":"hodina","months-format-wide":["farvardin","ordibehešt","chordád","tír","mordád","šahrívar","mehr","ábán","ázar","dei","bahman","esfand"],"dateFormat-full":"EEEE, d. M. y G","field-month-relative+-1":"minulý mesiac","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"Q","field-sat-narrow-relative+0":"túto so.","field-fri-relative+0":"tento piatok","field-sat-narrow-relative+1":"budúcu so.","field-fri-relative+1":"budúci piatok","field-sun-short-relative+0":"túto ned.","field-sun-short-relative+1":"budúcu ned.","field-week-relative+-1":"minulý týždeň","field-quarter-short-relative+-1":"minulý štvrťr.","months-format-abbr":["farvardin","ordibehešt","chordád","tír","mordád","šahrívar","mehr","ábán","ázar","dei","bahman","esfand"],"field-quarter-relative+0":"tento štvrťrok","field-minute-relative+0":"v tejto minúte","timeFormat-long":"H:mm:ss z","field-quarter-relative+1":"budúci štvrťrok","field-wed-short-relative+-1":"minulú str.","dateFormat-short":"d.M.y GGGGG","field-thu-short-relative+-1":"minulý št.","field-year-narrow-relative+-1":"minulý rok","days-standAlone-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"dateFormatItem-yyyyMMMEd":"E d. M. y G","field-mon-narrow-relative+-1":"minulý po.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"minulý št.","field-tue-narrow-relative+-1":"minulý ut.","dateFormatItem-H":"H","field-weekOfMonth-short":"týž. mes.","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"túto str.","dateFormatItem-M":"M.","months-standAlone-wide":["farvardin","ordibehešt","chordád","tír","mordád","šahrívar","mehr","ábán","ázar","dei","bahman","esfand"],"field-wed-short-relative+1":"budúcu str.","field-sun-relative+-1":"minulú nedeľu","days-standAlone-abbr":["ne","po","ut","st","št","pi","so"],"dateTimeFormat-full":"{1}, {0}","dateFormatItem-d":"d.","field-weekday":"deň týždňa","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"tento štvrťr.","field-sat-relative+0":"túto sobotu","field-day-short-relative+1":"zajtra","field-quarter-narrow-relative+1":"budúci štvrťr.","field-sat-relative+1":"budúcu sobotu","field-day-short-relative+2":"pozajtra","field-week-short-relative+0":"tento týž.","field-week-short-relative+1":"budúci týž.","months-standAlone-abbr":["farvardin","ordibehešt","chordád","tír","mordád","šahrívar","mehr","ábán","ázar","dei","bahman","esfand"],"field-dayOfYear-narrow":"deň r.","field-month-short-relative+0":"tento mes.","field-month-short-relative+1":"budúci mes.","field-weekdayOfMonth-short":"d.  týž. v mes.","timeFormat-full":"H:mm:ss zzzz","dateFormatItem-MEd":"E d. M.","field-zone-narrow":"pásmo","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"tento št.","field-thu-narrow-relative+1":"budúci št.","field-sun-narrow-relative+-1":"minulú ne.","field-mon-short-relative+-1":"minulý pond.","field-thu-relative+0":"tento štvrtok","field-thu-relative+1":"budúci štvrtok","field-fri-short-relative+-1":"minulý pi.","field-thu-relative+-1":"minulý štvrtok","field-week":"týždeň","quarters-format-wide":["1. štvrťrok","2. štvrťrok","3. štvrťrok","4. štvrťrok"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"túto st.","field-wed-narrow-relative+1":"budúcu st.","field-quarter-narrow-relative+-1":"minulý štvrťr.","field-year-short-relative+0":"tento rok","field-dayperiod-short":"AM/PM","dateFormatItem-yyyyMMM":"LLL y G","field-year-short-relative+1":"budúci rok","field-fri-short-relative+0":"tento pi.","field-fri-short-relative+1":"budúci pi.","days-standAlone-short":["ne","po","ut","st","št","pi","so"],"field-week-short-relative+-1":"minulý týž.","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"h","field-zone-short":"pásmo","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pi.","field-year-relative+0":"tento rok","field-year-relative+1":"budúci rok","field-era-narrow":"letop.","field-fri-relative+-1":"minulý piatok","eraNarrow":"AP","field-tue-short-relative+-1":"minulý utor.","field-minute-narrow":"min","days-format-wide":["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],"field-mon-narrow-relative+0":"tento po.","field-mon-narrow-relative+1":"budúci po.","dateFormatItem-EHm":"E H:mm","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","dateFormatItem-MMMEd":"E d. M.","field-weekOfMonth-narrow":"týž. mes.","dateFormatItem-EHms":"E H:mm:ss","field-weekday-narrow":"deň týž.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulú ned.","field-day-relative+-1":"včera","field-day-relative+-2":"predvčerom","field-weekday-short":"deň týž.","days-format-abbr":["ne","po","ut","st","št","pi","so"],"field-sun-relative+0":"túto nedeľu","field-sun-relative+1":"budúcu nedeľu","dateFormatItem-Gy":"y G","field-day-short":"d.","field-week-narrow":"týž.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pi.","field-fri-narrow-relative+1":"budúci pi."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sk/roc.js b/lib/dojo/cldr/nls/sk/roc.js
new file mode 100644
index 000000000..e9583129e
--- /dev/null
+++ b/lib/dojo/cldr/nls/sk/roc.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sk/roc",{"field-quarter-short-relative+0":"tento štvrťr.","field-quarter-short-relative+1":"budúci štvrťr.","field-tue-relative+-1":"minulý utorok","field-year":"rok","field-wed-relative+0":"túto stredu","field-wed-relative+1":"budúcu stredu","field-minute":"minúta","field-tue-narrow-relative+0":"tento ut.","field-tue-narrow-relative+1":"budúci ut.","field-thu-short-relative+0":"tento št.","field-day-short-relative+-1":"včera","field-thu-short-relative+1":"budúci št.","field-day-relative+0":"dnes","field-day-short-relative+-2":"predvčerom","field-day-relative+1":"zajtra","field-day-relative+2":"pozajtra","field-wed-narrow-relative+-1":"minulú st.","field-year-narrow":"r.","field-era-short":"letop.","field-year-narrow-relative+0":"tento rok","field-tue-relative+0":"tento utorok","field-year-narrow-relative+1":"budúci rok","field-tue-relative+1":"budúci utorok","field-weekdayOfMonth":"deň týždňa v mesiaci","field-second-short":"s","field-weekdayOfMonth-narrow":"d.  týž. v mes.","field-week-relative+0":"tento týždeň","field-month-relative+0":"tento mesiac","field-week-relative+1":"budúci týždeň","field-month-relative+1":"budúci mesiac","field-sun-narrow-relative+0":"túto ne.","field-mon-short-relative+0":"tento pond.","field-sun-narrow-relative+1":"budúcu ne.","field-mon-short-relative+1":"budúci pond.","field-second-relative+0":"teraz","eraNames":["pred ROC","ROC"],"field-weekOfMonth":"týždeň mesiaca","field-month-short":"mes.","field-day":"deň","field-dayOfYear-short":"deň r.","field-year-relative+-1":"minulý rok","field-sat-short-relative+-1":"minulú so.","field-hour-relative+0":"v tejto hodine","field-wed-relative+-1":"minulú stredu","field-sat-narrow-relative+-1":"minulú so.","field-second":"sekunda","field-quarter":"štvrťrok","field-week-short":"týž.","field-day-narrow-relative+0":"dnes","field-day-narrow-relative+1":"zajtra","field-day-narrow-relative+2":"pozajtra","field-tue-short-relative+0":"tento utor.","field-tue-short-relative+1":"budúci utor.","field-month-short-relative+-1":"minulý mes.","field-mon-relative+-1":"minulý pondelok","field-month":"mesiac","field-day-narrow":"d.","field-minute-short":"min","field-dayperiod":"AM/PM","field-sat-short-relative+0":"túto so.","field-sat-short-relative+1":"budúcu so.","eraAbbr":["pred ROC","ROC"],"field-second-narrow":"s","field-mon-relative+0":"tento pondelok","field-mon-relative+1":"budúci pondelok","field-day-narrow-relative+-1":"včera","field-year-short":"r.","field-day-narrow-relative+-2":"predvčerom","field-quarter-relative+-1":"minulý štvrťrok","field-dayperiod-narrow":"AM/PM","field-dayOfYear":"deň roka","field-sat-relative+-1":"minulú sobotu","field-hour":"hodina","field-month-relative+-1":"minulý mesiac","field-quarter-short":"Q","field-sat-narrow-relative+0":"túto so.","field-fri-relative+0":"tento piatok","field-sat-narrow-relative+1":"budúcu so.","field-fri-relative+1":"budúci piatok","field-sun-short-relative+0":"túto ned.","field-sun-short-relative+1":"budúcu ned.","field-week-relative+-1":"minulý týždeň","field-quarter-short-relative+-1":"minulý štvrťr.","field-quarter-relative+0":"tento štvrťrok","field-minute-relative+0":"v tejto minúte","field-quarter-relative+1":"budúci štvrťrok","field-wed-short-relative+-1":"minulú str.","field-thu-short-relative+-1":"minulý št.","field-year-narrow-relative+-1":"minulý rok","field-mon-narrow-relative+-1":"minulý po.","field-thu-narrow-relative+-1":"minulý št.","field-tue-narrow-relative+-1":"minulý ut.","field-weekOfMonth-short":"týž. mes.","field-wed-short-relative+0":"túto str.","field-wed-short-relative+1":"budúcu str.","field-sun-relative+-1":"minulú nedeľu","field-weekday":"deň týždňa","field-day-short-relative+0":"dnes","field-quarter-narrow-relative+0":"tento štvrťr.","field-sat-relative+0":"túto sobotu","field-day-short-relative+1":"zajtra","field-quarter-narrow-relative+1":"budúci štvrťr.","field-sat-relative+1":"budúcu sobotu","field-day-short-relative+2":"pozajtra","field-week-short-relative+0":"tento týž.","field-week-short-relative+1":"budúci týž.","field-dayOfYear-narrow":"deň r.","field-month-short-relative+0":"tento mes.","field-month-short-relative+1":"budúci mes.","field-weekdayOfMonth-short":"d.  týž. v mes.","field-zone-narrow":"pásmo","field-thu-narrow-relative+0":"tento št.","field-thu-narrow-relative+1":"budúci št.","field-sun-narrow-relative+-1":"minulú ne.","field-mon-short-relative+-1":"minulý pond.","field-thu-relative+0":"tento štvrtok","field-thu-relative+1":"budúci štvrtok","field-fri-short-relative+-1":"minulý pi.","field-thu-relative+-1":"minulý štvrtok","field-week":"týždeň","field-wed-narrow-relative+0":"túto st.","field-wed-narrow-relative+1":"budúcu st.","field-quarter-narrow-relative+-1":"minulý štvrťr.","field-year-short-relative+0":"tento rok","field-dayperiod-short":"AM/PM","field-year-short-relative+1":"budúci rok","field-fri-short-relative+0":"tento pi.","field-fri-short-relative+1":"budúci pi.","field-week-short-relative+-1":"minulý týž.","field-hour-short":"h","field-zone-short":"pásmo","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"minulý pi.","field-year-relative+0":"tento rok","field-year-relative+1":"budúci rok","field-era-narrow":"letop.","field-fri-relative+-1":"minulý piatok","eraNarrow":["pred ROC","ROC"],"field-tue-short-relative+-1":"minulý utor.","field-minute-narrow":"min","field-mon-narrow-relative+0":"tento po.","field-mon-narrow-relative+1":"budúci po.","field-year-short-relative+-1":"minulý rok","field-zone":"časové pásmo","field-weekOfMonth-narrow":"týž. mes.","field-weekday-narrow":"deň týž.","field-quarter-narrow":"Q","field-sun-short-relative+-1":"minulú ned.","field-day-relative+-1":"včera","field-day-relative+-2":"predvčerom","field-weekday-short":"deň týž.","field-sun-relative+0":"túto nedeľu","field-sun-relative+1":"budúcu nedeľu","field-day-short":"d.","field-week-narrow":"týž.","field-era":"letopočet","field-fri-narrow-relative+0":"tento pi.","field-fri-narrow-relative+1":"budúci pi."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sl/buddhist.js b/lib/dojo/cldr/nls/sl/buddhist.js
new file mode 100644
index 000000000..3fa238e56
--- /dev/null
+++ b/lib/dojo/cldr/nls/sl/buddhist.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sl/buddhist",{"field-quarter-short-relative+0":"to četrtletje","field-quarter-short-relative+1":"naslednje četrtletje","field-tue-relative+-1":"prejšnji torek","field-year":"leto","field-wed-relative+0":"to sredo","field-wed-relative+1":"naslednjo sredo","field-minute":"minuta","field-month-narrow-relative+-1":"prejšnji mesec","field-tue-narrow-relative+0":"ta tor.","field-tue-narrow-relative+1":"nasl. tor.","field-thu-short-relative+0":"ta čet.","field-day-short-relative+-1":"včeraj","field-thu-short-relative+1":"naslednji čet.","field-day-relative+0":"danes","field-day-short-relative+-2":"predvčerajšnjim","field-day-relative+1":"jutri","field-week-narrow-relative+0":"ta teden","field-day-relative+2":"pojutrišnjem","field-week-narrow-relative+1":"naslednji teden","field-wed-narrow-relative+-1":"prejš. sre.","field-year-narrow":"leto","field-era-short":"doba","field-year-narrow-relative+0":"letos","field-tue-relative+0":"ta torek","field-year-narrow-relative+1":"naslednje leto","field-tue-relative+1":"naslednji torek","field-weekdayOfMonth":"dan meseca","field-second-short":"sek.","dayPeriods-format-narrow-am":"d","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"dan v mes.","dayPeriods-format-abbr-am":"dop.","field-week-relative+0":"ta teden","field-month-relative+0":"ta mesec","field-week-relative+1":"naslednji teden","field-month-relative+1":"naslednji mesec","field-sun-narrow-relative+0":"to ned.","field-mon-short-relative+0":"ta pon.","field-sun-narrow-relative+1":"nasl. ned.","field-mon-short-relative+1":"naslednji pon.","field-second-relative+0":"zdaj","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"eraNames":["budistični koledar"],"field-weekOfMonth":"teden meseca","dayPeriods-standAlone-abbr-pm":"pop.","field-month-short":"mes.","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-yyyyMd":"d. M. y G","field-day":"dan","field-dayOfYear-short":"dan leta","field-year-relative+-1":"lani","dayPeriods-format-wide-am":"dop.","field-sat-short-relative+-1":"prejšnjo sob.","field-hour-relative+0":"v tej uri","dateFormatItem-yyyyMEd":"E, d. M. y G","field-wed-relative+-1":"prejšnjo sredo","field-sat-narrow-relative+-1":"prejš. sob.","field-second":"sekunda","days-standAlone-narrow":["n","p","t","s","č","p","s"],"dayPeriods-standAlone-wide-pm":"popoldne","dateFormat-long":"dd. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"četrtletje","field-week-short":"ted.","field-day-narrow-relative+0":"danes","field-day-narrow-relative+1":"jutri","field-day-narrow-relative+2":"pojutrišnjem","quarters-standAlone-wide":["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"],"days-format-narrow":["n","p","t","s","č","p","s"],"field-tue-short-relative+0":"ta tor.","field-tue-short-relative+1":"naslednji tor.","field-month-short-relative+-1":"prejšnji mesec","field-mon-relative+-1":"prejšnji ponedeljek","dateFormatItem-GyMMM":"MMM y G","field-month":"mesec","field-day-narrow":"dan","field-minute-short":"min.","field-dayperiod":"dop/pop","field-sat-short-relative+0":"to sob.","field-sat-short-relative+1":"naslednjo sob.","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["bud. kol."],"quarters-standAlone-abbr":["1. čet.","2. čet.","3. čet.","4. čet."],"dayPeriods-format-abbr-pm":"pop.","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"s","field-mon-relative+0":"ta ponedeljek","field-mon-relative+1":"naslednji ponedeljek","field-day-narrow-relative+-1":"včeraj","field-year-short":"leto","field-day-narrow-relative+-2":"predvčerajšnjim","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-quarter-relative+-1":"zadnje četrtletje","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"dop/pop","dayPeriods-standAlone-narrow-am":"d","field-week-narrow-relative+-1":"prejšnji teden","days-format-short":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"dayPeriods-format-wide-pm":"pop.","field-dayOfYear":"dan leta","field-sat-relative+-1":"prejšnjo soboto","dateFormatItem-Md":"d. M.","field-hour":"ura","months-format-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"dateFormat-full":"EEEE, dd. MMMM y G","field-month-relative+-1":"prejšnji mesec","field-quarter-short":"četrtl.","field-sat-narrow-relative+0":"to sob.","field-fri-relative+0":"ta petek","field-sat-narrow-relative+1":"nasl. sob.","field-fri-relative+1":"naslednji petek","field-month-narrow-relative+0":"ta mesec","field-month-narrow-relative+1":"naslednji mesec","field-sun-short-relative+0":"to ned.","field-sun-short-relative+1":"naslednjo ned.","field-week-relative+-1":"prejšnji teden","field-quarter-short-relative+-1":"zadnje četrtletje","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","avg.","sep.","okt.","nov.","dec."],"field-quarter-relative+0":"to četrtletje","field-minute-relative+0":"to minuto","field-quarter-relative+1":"naslednje četrtletje","field-wed-short-relative+-1":"prejšnjo sre.","dateFormat-short":"d. MM. yy GGGGG","field-thu-short-relative+-1":"prejšnji čet.","field-year-narrow-relative+-1":"lani","days-standAlone-wide":["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y G","field-mon-narrow-relative+-1":"prejš. pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prejš. čet.","field-tue-narrow-relative+-1":"prejš. tor.","field-weekOfMonth-short":"ted. v mes.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"p","field-wed-short-relative+0":"to sre.","months-standAlone-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"field-wed-short-relative+1":"naslednjo sre.","field-sun-relative+-1":"prejšnjo nedeljo","days-standAlone-abbr":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"field-weekday":"dan v tednu","field-day-short-relative+0":"danes","field-quarter-narrow-relative+0":"to četrtletje","field-sat-relative+0":"to soboto","field-day-short-relative+1":"jutri","field-quarter-narrow-relative+1":"naslednje četrtletje","field-sat-relative+1":"naslednjo soboto","field-day-short-relative+2":"pojutrišnjem","field-week-short-relative+0":"ta teden","field-week-short-relative+1":"naslednji teden","months-standAlone-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","avg.","sep.","okt.","nov.","dec."],"field-dayOfYear-narrow":"dan leta","field-month-short-relative+0":"ta mesec","field-month-short-relative+1":"naslednji mesec","field-weekdayOfMonth-short":"dan meseca","dateFormatItem-MEd":"E, d. M.","field-zone-narrow":"časovni pas","dateFormatItem-y":"y","field-thu-narrow-relative+0":"ta čet.","field-thu-narrow-relative+1":"nasl. čet.","field-sun-narrow-relative+-1":"prejš. ned.","field-mon-short-relative+-1":"prejšnji pon.","field-thu-relative+0":"ta četrtek","field-thu-relative+1":"naslednji četrtek","field-fri-short-relative+-1":"prejšnji pet.","field-thu-relative+-1":"prejšnji četrtek","field-week":"teden","quarters-format-wide":["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"],"dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"to sre.","field-wed-narrow-relative+1":"nasl. sre.","field-quarter-narrow-relative+-1":"zadnje četrtletje","field-year-short-relative+0":"letos","field-dayperiod-short":"dop/pop","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"naslednje leto","field-fri-short-relative+0":"ta pet.","field-fri-short-relative+1":"naslednji pet.","days-standAlone-short":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"field-week-short-relative+-1":"prejšnji teden","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"ura","field-zone-short":"časovni pas","quarters-format-abbr":["1. čet.","2. čet.","3. čet.","4. čet."],"field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prejš. pet.","field-year-relative+0":"letos","field-year-relative+1":"naslednje leto","field-era-narrow":"doba","field-fri-relative+-1":"prejšnji petek","eraNarrow":"BK","field-tue-short-relative+-1":"prejšnji tor.","field-minute-narrow":"min","days-format-wide":["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],"field-mon-narrow-relative+0":"ta pon.","field-mon-narrow-relative+1":"nasl. pon.","dateFormatItem-EHm":"E, HH:mm","field-year-short-relative+-1":"lani","field-zone":"časovni pas","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"teden meseca","dateFormatItem-EHms":"E, HH:mm:ss","field-weekday-narrow":"dan v tednu","field-quarter-narrow":"četr.","field-sun-short-relative+-1":"prejšnjo ned.","field-day-relative+-1":"včeraj","dayPeriods-standAlone-abbr-am":"dop.","field-day-relative+-2":"predvčerajšnjim","field-weekday-short":"dan v tednu","days-format-abbr":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"field-sun-relative+0":"to nedeljo","field-sun-relative+1":"naslednjo nedeljo","dateFormatItem-Gy":"y G","field-day-short":"dan","field-week-narrow":"ted.","field-era":"doba","field-fri-narrow-relative+0":"ta pet.","field-fri-narrow-relative+1":"nasl. pet.","dayPeriods-standAlone-wide-am":"dopoldne"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sl/currency.js b/lib/dojo/cldr/nls/sl/currency.js
index 322dac3e5..7a99b3f02 100644
--- a/lib/dojo/cldr/nls/sl/currency.js
+++ b/lib/dojo/cldr/nls/sl/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sl/currency",{"HKD_displayName":"hongkonški dolar","CHF_displayName":"švicarski frank","JPY_symbol":"¥","CAD_displayName":"kanadski dolar","CNY_displayName":"kitajski juan renminbi","USD_symbol":"$","AUD_displayName":"avstralski dolar","JPY_displayName":"japonski jen","CAD_symbol":"CAD","USD_displayName":"ameriški dolar","GBP_displayName":"britanski funt","EUR_displayName":"evro"}); \ No newline at end of file
+define("dojo/cldr/nls/sl/currency",{"HKD_displayName":"hongkonški dolar","CNY_displayName":"kitajski juan","JPY_displayName":"japonski jen","JPY_symbol":"¥","USD_displayName":"ameriški dolar","CAD_symbol":"CAD","GBP_displayName":"britanski funt","CHF_displayName":"švicarski frank","CNY_symbol":"CN¥","EUR_displayName":"evro","GBP_symbol":"GBP","CAD_displayName":"kanadski dolar","USD_symbol":"$","EUR_symbol":"€","AUD_displayName":"avstralski dolar","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sl/generic.js b/lib/dojo/cldr/nls/sl/generic.js
index 99951865c..f5f75ecd7 100644
--- a/lib/dojo/cldr/nls/sl/generic.js
+++ b/lib/dojo/cldr/nls/sl/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sl/generic",{"field-second-relative+0":"zdaj","field-weekday":"Dan v tednu","field-wed-relative+0":"To sredo","field-wed-relative+1":"Naslednjo sredo","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-MMMEd":"E, d. MMM","field-tue-relative+-1":"Prejšnji torek","dateFormat-long":"dd. MMMM y G","field-fri-relative+-1":"Prejšnji petek","field-wed-relative+-1":"Prejšnjo sredo","dateFormatItem-yyyyQQQ":"QQQ y G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE, dd. MMMM y G","dateFormatItem-yyyyMEd":"E, d. M. y G","field-thu-relative+-1":"Prejšnji četrtek","dateFormatItem-Md":"d. M.","field-era":"Doba","field-year":"Leto","dateFormatItem-yyyyMMMM":"MMMM y G","field-hour":"Ura","field-sat-relative+0":"To soboto","field-sat-relative+1":"Naslednjo soboto","field-day-relative+0":"danes","field-day-relative+1":"jutri","field-thu-relative+0":"Ta četrtek","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"pojutrišnjem","field-thu-relative+1":"Naslednji četrtek","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E, d. MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d. MMM y G","field-sun-relative+0":"to nedeljo","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"naslednjo nedeljo","field-minute":"Minuta","field-dayperiod":"Čas dneva","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"včeraj","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"predvčerajšnjim","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d. MM.","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"Ta petek","field-fri-relative+1":"Naslednji petek","field-day":"Dan","field-zone":"Časovni pas","dateFormatItem-y":"y","field-year-relative+-1":"lani","field-month-relative+-1":"prejšnji mesec","dateFormatItem-hm":"h:mm a","dateFormatItem-GyM":"M/y G","dateFormatItem-yyyyMd":"d. M. y G","field-month":"Mesec","dateFormatItem-MMM":"LLL","field-tue-relative+0":"Ta torek","field-tue-relative+1":"Naslednji torek","field-mon-relative+0":"ta ponedeljek","field-mon-relative+1":"naslednji ponedeljek","dateFormat-short":"d. MM. yy GGGGG","field-second":"Sekunda","field-sat-relative+-1":"Prejšnjo soboto","field-sun-relative+-1":"prejšnjo nedeljo","field-month-relative+0":"ta mesec","field-month-relative+1":"naslednji mesec","dateFormatItem-Ed":"E, d.","field-week":"Teden","dateFormat-medium":"d. MMM y G","field-year-relative+0":"letos","field-week-relative+-1":"prejšnji teden","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"naslednje leto","dateFormatItem-yyyyQQQQ":"QQQQ y G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"prejšnji ponedeljek","dateFormatItem-yyyy":"y G","field-week-relative+0":"ta teden","field-week-relative+1":"naslednji teden"}); \ No newline at end of file
+define("dojo/cldr/nls/sl/generic",{"field-quarter-short-relative+0":"to četrtletje","field-quarter-short-relative+1":"naslednje četrtletje","field-tue-relative+-1":"prejšnji torek","field-year":"leto","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"to sredo","field-wed-relative+1":"naslednjo sredo","dateFormatItem-ms":"mm:ss","field-minute":"minuta","field-month-narrow-relative+-1":"prejšnji mesec","field-tue-narrow-relative+0":"ta tor.","field-tue-narrow-relative+1":"nasl. tor.","field-day-short-relative+-1":"včeraj","field-thu-short-relative+0":"ta čet.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"danes","field-day-short-relative+-2":"predvčerajšnjim","field-thu-short-relative+1":"naslednji čet.","field-day-relative+1":"jutri","field-week-narrow-relative+0":"ta teden","field-day-relative+2":"pojutrišnjem","field-week-narrow-relative+1":"naslednji teden","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"prejš. sre.","field-year-narrow":"leto","field-era-short":"doba","field-year-narrow-relative+0":"letos","field-tue-relative+0":"ta torek","field-year-narrow-relative+1":"naslednje leto","field-tue-relative+1":"naslednji torek","field-weekdayOfMonth":"dan meseca","field-second-short":"sek.","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"dan v mes.","field-week-relative+0":"ta teden","field-month-relative+0":"ta mesec","field-week-relative+1":"naslednji teden","field-month-relative+1":"naslednji mesec","field-sun-narrow-relative+0":"to ned.","field-mon-short-relative+0":"ta pon.","field-sun-narrow-relative+1":"nasl. ned.","field-mon-short-relative+1":"naslednji pon.","field-second-relative+0":"zdaj","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"teden meseca","field-month-short":"mes.","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-yyyyMd":"d. M. y G","field-day":"dan","field-dayOfYear-short":"dan leta","field-year-relative+-1":"lani","field-sat-short-relative+-1":"prejšnjo sob.","field-hour-relative+0":"v tej uri","dateFormatItem-yyyyMEd":"E, d. M. y G","field-wed-relative+-1":"prejšnjo sredo","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"prejš. sob.","field-second":"sekunda","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"dd. MMMM y G","dateFormatItem-GyMMMd":"d. MMM y G","field-quarter":"četrtletje","field-week-short":"ted.","field-day-narrow-relative+0":"danes","field-day-narrow-relative+1":"jutri","field-day-narrow-relative+2":"pojutrišnjem","field-tue-short-relative+0":"ta tor.","field-tue-short-relative+1":"naslednji tor.","field-month-short-relative+-1":"prejšnji mesec","field-mon-relative+-1":"prejšnji ponedeljek","dateFormatItem-GyMMM":"MMM y G","field-month":"mesec","field-day-narrow":"dan","dateFormatItem-MMM":"LLL","field-minute-short":"min.","field-dayperiod":"dop/pop","field-sat-short-relative+0":"to sob.","field-sat-short-relative+1":"naslednjo sob.","dateFormat-medium":"d. MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"s","field-mon-relative+0":"ta ponedeljek","field-mon-relative+1":"naslednji ponedeljek","field-day-narrow-relative+-1":"včeraj","field-year-short":"leto","field-day-narrow-relative+-2":"predvčerajšnjim","field-quarter-relative+-1":"zadnje četrtletje","dateFormatItem-yyyyMMMd":"d. MMM y G","field-dayperiod-narrow":"dop/pop","field-week-narrow-relative+-1":"prejšnji teden","field-dayOfYear":"dan leta","field-sat-relative+-1":"prejšnjo soboto","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d. M.","field-hour":"ura","dateFormat-full":"EEEE, dd. MMMM y G","field-month-relative+-1":"prejšnji mesec","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"četrtl.","field-sat-narrow-relative+0":"to sob.","field-fri-relative+0":"ta petek","field-sat-narrow-relative+1":"nasl. sob.","field-fri-relative+1":"naslednji petek","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"ta mesec","field-month-narrow-relative+1":"naslednji mesec","field-sun-short-relative+0":"to ned.","field-sun-short-relative+1":"naslednjo ned.","field-week-relative+-1":"prejšnji teden","field-quarter-short-relative+-1":"zadnje četrtletje","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"to četrtletje","field-minute-relative+0":"to minuto","field-quarter-relative+1":"naslednje četrtletje","field-wed-short-relative+-1":"prejšnjo sre.","dateFormat-short":"d. MM. yy GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"lani","field-thu-short-relative+-1":"prejšnji čet.","dateFormatItem-yyyyMMMEd":"E, d. MMM y G","field-mon-narrow-relative+-1":"prejš. pon.","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"prejš. čet.","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"ted. v mes.","field-tue-narrow-relative+-1":"prejš. tor.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"to sre.","field-wed-short-relative+1":"naslednjo sre.","field-sun-relative+-1":"prejšnjo nedeljo","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"dan v tednu","field-day-short-relative+0":"danes","field-quarter-narrow-relative+0":"to četrtletje","field-day-short-relative+1":"jutri","field-sat-relative+0":"to soboto","field-quarter-narrow-relative+1":"naslednje četrtletje","dateFormatItem-h":"h a","field-day-short-relative+2":"pojutrišnjem","field-sat-relative+1":"naslednjo soboto","field-week-short-relative+0":"ta teden","field-week-short-relative+1":"naslednji teden","field-dayOfYear-narrow":"dan leta","field-month-short-relative+0":"ta mesec","field-month-short-relative+1":"naslednji mesec","field-weekdayOfMonth-short":"dan meseca","dateFormatItem-MEd":"E, d. M.","field-zone-narrow":"časovni pas","dateFormatItem-y":"y","field-thu-narrow-relative+0":"ta čet.","field-sun-narrow-relative+-1":"prejš. ned.","field-mon-short-relative+-1":"prejšnji pon.","field-thu-narrow-relative+1":"nasl. čet.","field-thu-relative+0":"ta četrtek","field-thu-relative+1":"naslednji četrtek","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"prejšnji pet.","field-thu-relative+-1":"prejšnji četrtek","field-week":"teden","dateFormatItem-Ed":"E, d.","field-wed-narrow-relative+0":"to sre.","field-wed-narrow-relative+1":"nasl. sre.","field-quarter-narrow-relative+-1":"zadnje četrtletje","field-year-short-relative+0":"letos","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"dop/pop","field-year-short-relative+1":"naslednje leto","field-fri-short-relative+0":"ta pet.","field-fri-short-relative+1":"naslednji pet.","field-week-short-relative+-1":"prejšnji teden","dateFormatItem-GyM":"M/y G","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"ura","field-zone-short":"časovni pas","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prejš. pet.","field-year-relative+0":"letos","field-year-relative+1":"naslednje leto","field-era-narrow":"doba","field-fri-relative+-1":"prejšnji petek","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"prejšnji tor.","field-minute-narrow":"min","field-mon-narrow-relative+0":"ta pon.","dateFormatItem-EHm":"E, HH:mm","field-mon-narrow-relative+1":"nasl. pon.","field-year-short-relative+-1":"lani","field-zone":"časovni pas","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"teden meseca","dateFormatItem-EHms":"E, HH:mm:ss","field-weekday-narrow":"dan v tednu","field-quarter-narrow":"četr.","field-sun-short-relative+-1":"prejšnjo ned.","field-day-relative+-1":"včeraj","field-day-relative+-2":"predvčerajšnjim","field-weekday-short":"dan v tednu","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"to nedeljo","field-sun-relative+1":"naslednjo nedeljo","dateFormatItem-Gy":"y G","field-day-short":"dan","field-week-narrow":"ted.","field-era":"doba","field-fri-narrow-relative+0":"ta pet.","field-fri-narrow-relative+1":"nasl. pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sl/gregorian.js b/lib/dojo/cldr/nls/sl/gregorian.js
index 0150d2336..1dc43d684 100644
--- a/lib/dojo/cldr/nls/sl/gregorian.js
+++ b/lib/dojo/cldr/nls/sl/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sl/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-second-relative+0":"zdaj","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Dan v tednu","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E, d. M. y","field-wed-relative+0":"To sredo","field-wed-relative+1":"Naslednjo sredo","dateFormatItem-GyMMMEd":"E, d. MMM y G","dateFormatItem-MMMEd":"E, d. MMM","eraNarrow":["pr. n. št.","po Kr.","po n. št."],"field-tue-relative+-1":"Prejšnji torek","days-format-short":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"dateFormat-long":"dd. MMMM y","field-fri-relative+-1":"Prejšnji petek","field-wed-relative+-1":"Prejšnjo sredo","months-format-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"pop.","dateFormat-full":"EEEE, dd. MMMM y","field-thu-relative+-1":"Prejšnji četrtek","dateFormatItem-Md":"d. M.","dateFormatItem-yMd":"d. M. y","field-era":"Doba","dateFormatItem-yM":"M/y","months-standAlone-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"],"dateFormatItem-yQQQQ":"QQQQ y","timeFormat-long":"HH:mm:ss z","field-year":"Leto","dateFormatItem-yMMM":"MMM y","field-hour":"Ura","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","avg.","sep.","okt.","nov.","dec."],"field-sat-relative+0":"To soboto","field-sat-relative+1":"Naslednjo soboto","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"danes","field-thu-relative+0":"Ta četrtek","field-day-relative+1":"jutri","field-thu-relative+1":"Naslednji četrtek","dateFormatItem-GyMMMd":"d. MMM y G","field-day-relative+2":"pojutrišnjem","dateFormatItem-H":"HH","months-standAlone-abbr":["jan","feb","mar","apr","maj","jun","jul","avg","sep","okt","nov","dec"],"quarters-format-abbr":["Q1","Q2","Q3","Q4"],"quarters-standAlone-wide":["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],"timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"to nedeljo","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"naslednjo nedeljo","quarters-standAlone-abbr":["Q1","Q2","Q3","Q4"],"eraAbbr":["pr. n. št.","po Kr.","po n. št."],"field-minute":"Minuta","field-dayperiod":"Čas dneva","days-standAlone-abbr":["ned","pon","tor","sre","čet","pet","sob"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"včeraj","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"predvčerajšnjim","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, d. MM.","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"Ta petek","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"Naslednji petek","field-day":"Dan","days-format-wide":["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],"field-zone":"Časovni pas","dateFormatItem-y":"y","months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-year-relative+-1":"lani","field-month-relative+-1":"prejšnji mesec","dateFormatItem-hm":"h:mm a","days-format-abbr":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"dateFormatItem-GyM":"M/y G","dateFormatItem-yMMMd":"d. MMM y","eraNames":["pred našim štetjem","naše štetje","po n. št."],"days-format-narrow":["n","p","t","s","č","p","s"],"days-standAlone-narrow":["n","p","t","s","č","p","s"],"dateFormatItem-MMM":"LLL","field-month":"Mesec","field-tue-relative+0":"Ta torek","field-tue-relative+1":"Naslednji torek","dayPeriods-format-wide-am":"dop.","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"ta ponedeljek","field-mon-relative+1":"naslednji ponedeljek","dateFormat-short":"d. MM. yy","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"Sekunda","field-sat-relative+-1":"Prejšnjo soboto","dateFormatItem-yMMMEd":"E, d. MMM y","field-sun-relative+-1":"prejšnjo nedeljo","field-month-relative+0":"ta mesec","field-month-relative+1":"naslednji mesec","dateFormatItem-Ed":"E, d.","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Teden","dateFormat-medium":"d. MMM y","field-year-relative+0":"letos","field-week-relative+-1":"prejšnji teden","field-year-relative+1":"naslednje leto","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"prejšnji ponedeljek","field-week-relative+0":"ta teden","field-week-relative+1":"naslednji teden"}); \ No newline at end of file
+define("dojo/cldr/nls/sl/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"ta čet.","field-thu-narrow-relative+1":"nasl. čet.","field-sun-narrow-relative+0":"to ned.","field-sun-narrow-relative+1":"nasl. ned.","months-format-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"dayPeriods-standAlone-abbr-pm":"pop.","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"ta pet.","field-fri-narrow-relative+1":"nasl. pet.","eraNarrow":["pr. Kr.","po Kr."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d. MMM y","dayPeriods-format-abbr-night1":"ponoči","dayPeriods-format-narrow-evening1":"zv","days-standAlone-narrow":["n","p","t","s","č","p","s"],"days-standAlone-wide":["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],"dayPeriods-format-abbr-afternoon1":"pop.","dayPeriods-format-wide-evening1":"zvečer","dateFormatItem-Ehm":"E, h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"prejš. sre.","dayPeriods-standAlone-wide-evening1":"večer","days-format-wide":["nedelja","ponedeljek","torek","sreda","četrtek","petek","sobota"],"field-month-short-relative+0":"ta mesec","field-month-short-relative+1":"naslednji mesec","dateFormatItem-Ehms":"E, h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"v","dayPeriods-standAlone-abbr-afternoon1":"pop.","field-thu-relative+0":"ta četrtek","dayPeriods-standAlone-abbr-night1":"noč","field-thu-relative+1":"naslednji četrtek","dayPeriods-format-wide-am":"dop.","field-fri-relative+0":"ta petek","field-fri-relative+1":"naslednji petek","dateFormatItem-yMd":"d. M. y","field-thu-narrow-relative+-1":"prejš. čet.","field-quarter-relative+0":"to četrtletje","field-quarter-relative+1":"naslednje četrtletje","field-sun-short-relative+0":"to ned.","timeFormat-short":"HH:mm","field-sun-short-relative+1":"naslednjo ned.","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"p","dateFormatItem-Md":"d. M.","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"ted.","field-hour-relative+0":"v tej uri","field-day-relative+-1":"včeraj","field-day-relative+-2":"predvčerajšnjim","field-mon-narrow-relative+-1":"prejš. pon.","field-minute-narrow":"min","field-thu-short-relative+0":"ta čet.","field-mon-relative+0":"ta ponedeljek","field-thu-short-relative+1":"naslednji čet.","field-mon-relative+1":"naslednji ponedeljek","field-day-narrow-relative+0":"danes","field-era-short":"doba","field-day-narrow-relative+1":"jutri","field-sat-narrow-relative+0":"to sob.","field-day-narrow-relative+2":"pojutrišnjem","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"nasl. sob.","field-week-narrow-relative+0":"ta teden","field-week-narrow-relative+1":"naslednji teden","field-wed-narrow-relative+0":"to sre.","field-wed-narrow-relative+1":"nasl. sre.","field-month":"mesec","months-standAlone-wide":["januar","februar","marec","april","maj","junij","julij","avgust","september","oktober","november","december"],"field-weekday-narrow":"dan v tednu","dayPeriods-standAlone-narrow-afternoon1":"p","field-year-relative+0":"letos","field-year-relative+1":"naslednje leto","dayPeriods-format-abbr-evening1":"zveč.","dateFormatItem-GyM":"MMM y G","dayPeriods-format-abbr-noon":"opold.","dayPeriods-format-narrow-midnight":"24.00","dayPeriods-format-wide-midnight":"opolnoči","field-tue-relative+0":"ta torek","field-tue-relative+1":"naslednji torek","dayPeriods-standAlone-abbr-evening1":"zveč.","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"polnoč","field-year-narrow":"leto","dayPeriods-standAlone-abbr-noon":"pold.","field-tue-short-relative+0":"ta tor.","dayPeriods-standAlone-narrow-midnight":"24.00","field-tue-short-relative+1":"naslednji tor.","field-tue-narrow-relative+0":"ta tor.","field-tue-narrow-relative+1":"nasl. tor.","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH'h'","field-wed-relative+0":"to sredo","field-wed-relative+1":"naslednjo sredo","dateFormatItem-M":"L","field-wed-short-relative+0":"to sre.","field-fri-short-relative+0":"ta pet.","field-wed-short-relative+1":"naslednjo sre.","field-fri-short-relative+1":"naslednji pet.","field-weekOfMonth-short":"ted. v mes.","field-quarter-short-relative+-1":"zadnje četrtletje","field-year-short-relative+-1":"lani","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"ponoči","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"zadnje četrtletje","dateFormatItem-d":"d.","dayPeriods-format-abbr-pm":"pop.","dateFormatItem-h":"h a","quarters-standAlone-wide":["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"],"field-weekOfMonth-narrow":"teden meseca","dateFormatItem-y":"y","field-minute-relative+0":"to minuto","field-year-short-relative+0":"letos","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"naslednje leto","field-weekday":"dan v tednu","dayPeriods-format-narrow-pm":"p","field-tue-narrow-relative+-1":"prejš. tor.","dateFormatItem-yMEd":"E, d. M. y","dayPeriods-standAlone-wide-night1":"noč","field-year-narrow-relative+-1":"lani","field-sat-relative+-1":"prejšnjo soboto","dayPeriods-format-abbr-midnight":"opoln.","dayPeriods-format-narrow-morning1":"zj","dayPeriods-format-narrow-morning2":"d","dayPeriods-format-wide-morning1":"zjutraj","dayPeriods-format-wide-morning2":"dopoldan","dayPeriods-standAlone-abbr-midnight":"poln.","dayPeriods-standAlone-narrow-pm":"p","dayPeriods-standAlone-wide-morning1":"jutro","field-mon-narrow-relative+0":"ta pon.","dayPeriods-standAlone-wide-morning2":"dopoldne","field-mon-narrow-relative+1":"nasl. pon.","field-second":"sekunda","dateFormatItem-yMMMEd":"E, d. MMM y","field-year-relative+-1":"lani","field-weekdayOfMonth-short":"dan meseca","dateFormat-short":"d. MM. yy","eraNames":["pred Kristusom","po Kristusu"],"field-second-short":"sek.","field-thu-short-relative+-1":"prejšnji čet.","field-zone":"časovni pas","field-dayperiod-narrow":"dop/pop","field-sun-short-relative+-1":"prejšnjo ned.","dayPeriods-standAlone-narrow-morning1":"j","dayPeriods-standAlone-narrow-morning2":"d","eraAbbr":["pr. Kr.","po Kr."],"field-week-short":"ted.","dayPeriods-standAlone-abbr-am":"dop.","dayPeriods-standAlone-wide-pm":"popoldne","dateFormatItem-ms":"mm:ss","field-day-relative+0":"danes","field-day-relative+1":"jutri","field-day-relative+2":"pojutrišnjem","field-day-short-relative+0":"danes","field-dayOfYear-short":"dan leta","field-day-short-relative+1":"jutri","dateFormat-long":"dd. MMMM y","field-day-short-relative+2":"pojutrišnjem","field-sun-narrow-relative+-1":"prejš. ned.","dayPeriods-format-wide-noon":"opoldne","field-second-relative+0":"zdaj","field-quarter-relative+-1":"zadnje četrtletje","dayPeriods-format-narrow-night1":"po","quarters-format-abbr":["1. čet.","2. čet.","3. čet.","4. čet."],"dayPeriods-standAlone-wide-noon":"poldne","dayPeriods-standAlone-narrow-night1":"n","field-week-relative+-1":"prejšnji teden","dayPeriods-format-abbr-morning1":"zjut.","field-month-relative+-1":"prejšnji mesec","dayPeriods-format-abbr-morning2":"dop.","months-format-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"field-year":"leto","field-era":"doba","dayPeriods-standAlone-abbr-morning1":"jut.","dayPeriods-standAlone-abbr-morning2":"dop.","days-standAlone-short":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"včeraj","field-day-short-relative+-2":"predvčerajšnjim","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"ura","field-dayOfYear-narrow":"dan leta","field-quarter":"četrtletje","field-month-narrow-relative+0":"ta mesec","field-month-narrow-relative+1":"naslednji mesec","field-day":"dan","field-mon-relative+-1":"prejšnji ponedeljek","field-dayOfYear":"dan leta","dateFormat-medium":"d. MMM y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d. MMM y G","dateFormatItem-MEd":"E, d. M.","field-tue-short-relative+-1":"prejšnji tor.","field-year-short":"leto","field-month-short":"mes.","dateFormatItem-MMMEd":"E, d. MMM","dayPeriods-format-wide-afternoon1":"popoldan","dateFormatItem-MMMd":"d. MMM","dateFormatItem-Bh":"h B","months-format-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","avg.","sep.","okt.","nov.","dec."],"dayPeriods-format-abbr-am":"dop.","field-sat-relative+0":"to soboto","field-sat-relative+1":"naslednjo soboto","dayPeriods-format-wide-pm":"pop.","field-zone-short":"časovni pas","days-standAlone-abbr":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"field-week-short-relative+0":"ta teden","field-week-short-relative+1":"naslednji teden","dayPeriods-standAlone-wide-afternoon1":"popoldne","field-fri-short-relative+-1":"prejšnji pet.","field-month-narrow":"mes.","dayPeriods-format-narrow-am":"d","field-month-narrow-relative+-1":"prejšnji mesec","days-format-abbr":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"field-weekday-short":"dan v tednu","field-day-narrow-relative+-1":"včeraj","field-day-narrow-relative+-2":"predvčerajšnjim","field-quarter-short":"četrtl.","days-format-short":["ned.","pon.","tor.","sre.","čet.","pet.","sob."],"months-standAlone-narrow":["j","f","m","a","m","j","j","a","s","o","n","d"],"days-format-narrow":["n","p","t","s","č","p","s"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"četr.","field-mon-short-relative+0":"ta pon.","field-mon-short-relative+1":"naslednji pon.","field-dayperiod-short":"dop/pop","dayPeriods-standAlone-narrow-am":"d","field-week-narrow-relative+-1":"prejšnji teden","field-thu-relative+-1":"prejšnji četrtek","field-fri-narrow-relative+-1":"prejš. pet.","field-mon-short-relative+-1":"prejšnji pon.","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"to četrtletje","field-quarter-short-relative+1":"naslednje četrtletje","dateFormatItem-Ed":"E, d.","field-wed-relative+-1":"prejšnjo sredo","field-weekOfMonth":"teden meseca","field-weekdayOfMonth-narrow":"dan v mes.","dayPeriods-standAlone-wide-am":"dopoldne","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"prejšnji petek","field-minute":"minuta","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["1. četrtletje","2. četrtletje","3. četrtletje","4. četrtletje"],"field-day-short":"dan","field-dayperiod":"dop/pop","field-hour-short":"ura","months-standAlone-abbr":["jan.","feb.","mar.","apr.","maj","jun.","jul.","avg.","sep.","okt.","nov.","dec."],"field-second-narrow":"s","field-month-relative+0":"ta mesec","field-month-relative+1":"naslednji mesec","dateFormat-full":"EEEE, dd. MMMM y","field-era-narrow":"doba","field-sat-short-relative+-1":"prejšnjo sob.","dayPeriods-format-narrow-noon":"12.00","field-week-short-relative+-1":"prejšnji teden","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"M/y","field-sun-relative+-1":"prejšnjo nedeljo","field-wed-short-relative+-1":"prejšnjo sre.","field-weekdayOfMonth":"dan meseca","field-quarter-narrow-relative+0":"to četrtletje","dateFormatItem-GyMMMEd":"E, d. MMM y G","field-quarter-narrow-relative+1":"naslednje četrtletje","field-sat-short-relative+0":"to sob.","field-hour-narrow":"h","field-sat-short-relative+1":"naslednjo sob.","field-year-narrow-relative+0":"letos","field-year-narrow-relative+1":"naslednje leto","dateFormatItem-Gy":"y G","field-zone-narrow":"časovni pas","dayPeriods-standAlone-narrow-noon":"12.00","field-tue-relative+-1":"prejšnji torek","field-minute-short":"min.","dateFormatItem-yw":"w. 'teden' 'leta' Y","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"ta teden","field-week-relative+1":"naslednji teden","dateFormatItem-MMM":"LLL","field-sun-relative+0":"to nedeljo","field-sun-relative+1":"naslednjo nedeljo","field-sat-narrow-relative+-1":"prejš. sob.","quarters-standAlone-abbr":["1. čet.","2. čet.","3. čet.","4. čet."],"dateFormatItem-MMMMW":"MMMM: W. 'teden'","field-month-short-relative+-1":"prejšnji mesec","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d. MMMM","field-week":"teden","field-day-narrow":"dan"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sl/number.js b/lib/dojo/cldr/nls/sl/number.js
index ae056d800..90e954a4f 100644
--- a/lib/dojo/cldr/nls/sl/number.js
+++ b/lib/dojo/cldr/nls/sl/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sl/number",{"group":".","percentSign":"%","exponential":"e","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 bilijonov","decimalFormat-short":"000 bil'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/sl/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","decimalFormat-short":"000 bil'.'","nan":"NaN","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 bilijonov","decimalFormat":"#,##0.###","currencyFormat-short":"000 bil'.' ¤","timeSeparator":":","decimal":",","exponential":"e"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sl/roc.js b/lib/dojo/cldr/nls/sl/roc.js
new file mode 100644
index 000000000..d09ec9956
--- /dev/null
+++ b/lib/dojo/cldr/nls/sl/roc.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sl/roc",{"field-quarter-short-relative+0":"to četrtletje","field-quarter-short-relative+1":"naslednje četrtletje","field-tue-relative+-1":"prejšnji torek","field-year":"leto","field-wed-relative+0":"to sredo","field-wed-relative+1":"naslednjo sredo","field-minute":"minuta","field-month-narrow-relative+-1":"prejšnji mesec","field-tue-narrow-relative+0":"ta tor.","field-tue-narrow-relative+1":"nasl. tor.","field-thu-short-relative+0":"ta čet.","field-day-short-relative+-1":"včeraj","field-thu-short-relative+1":"naslednji čet.","field-day-relative+0":"danes","field-day-short-relative+-2":"predvčerajšnjim","field-day-relative+1":"jutri","field-week-narrow-relative+0":"ta teden","field-day-relative+2":"pojutrišnjem","field-week-narrow-relative+1":"naslednji teden","field-wed-narrow-relative+-1":"prejš. sre.","field-year-narrow":"leto","field-era-short":"doba","field-year-narrow-relative+0":"letos","field-tue-relative+0":"ta torek","field-year-narrow-relative+1":"naslednje leto","field-tue-relative+1":"naslednji torek","field-weekdayOfMonth":"dan meseca","field-second-short":"sek.","field-weekdayOfMonth-narrow":"dan v mes.","field-week-relative+0":"ta teden","field-month-relative+0":"ta mesec","field-week-relative+1":"naslednji teden","field-month-relative+1":"naslednji mesec","field-sun-narrow-relative+0":"to ned.","field-mon-short-relative+0":"ta pon.","field-sun-narrow-relative+1":"nasl. ned.","field-mon-short-relative+1":"naslednji pon.","field-second-relative+0":"zdaj","eraNames":["pred RK","Minguo koledar"],"field-weekOfMonth":"teden meseca","field-month-short":"mes.","field-day":"dan","field-dayOfYear-short":"dan leta","field-year-relative+-1":"lani","field-sat-short-relative+-1":"prejšnjo sob.","field-hour-relative+0":"v tej uri","field-wed-relative+-1":"prejšnjo sredo","field-sat-narrow-relative+-1":"prejš. sob.","field-second":"sekunda","field-quarter":"četrtletje","field-week-short":"ted.","field-day-narrow-relative+0":"danes","field-day-narrow-relative+1":"jutri","field-day-narrow-relative+2":"pojutrišnjem","field-tue-short-relative+0":"ta tor.","field-tue-short-relative+1":"naslednji tor.","field-month-short-relative+-1":"prejšnji mesec","field-mon-relative+-1":"prejšnji ponedeljek","field-month":"mesec","field-day-narrow":"dan","field-minute-short":"min.","field-dayperiod":"dop/pop","field-sat-short-relative+0":"to sob.","field-sat-short-relative+1":"naslednjo sob.","eraAbbr":["pred RK","Minguo koledar"],"field-second-narrow":"s","field-mon-relative+0":"ta ponedeljek","field-mon-relative+1":"naslednji ponedeljek","field-day-narrow-relative+-1":"včeraj","field-year-short":"leto","field-day-narrow-relative+-2":"predvčerajšnjim","field-quarter-relative+-1":"zadnje četrtletje","field-dayperiod-narrow":"dop/pop","field-week-narrow-relative+-1":"prejšnji teden","field-dayOfYear":"dan leta","field-sat-relative+-1":"prejšnjo soboto","field-hour":"ura","field-month-relative+-1":"prejšnji mesec","field-quarter-short":"četrtl.","field-sat-narrow-relative+0":"to sob.","field-fri-relative+0":"ta petek","field-sat-narrow-relative+1":"nasl. sob.","field-fri-relative+1":"naslednji petek","field-month-narrow-relative+0":"ta mesec","field-month-narrow-relative+1":"naslednji mesec","field-sun-short-relative+0":"to ned.","field-sun-short-relative+1":"naslednjo ned.","field-week-relative+-1":"prejšnji teden","field-quarter-short-relative+-1":"zadnje četrtletje","field-quarter-relative+0":"to četrtletje","field-minute-relative+0":"to minuto","field-quarter-relative+1":"naslednje četrtletje","field-wed-short-relative+-1":"prejšnjo sre.","field-thu-short-relative+-1":"prejšnji čet.","field-year-narrow-relative+-1":"lani","field-mon-narrow-relative+-1":"prejš. pon.","field-thu-narrow-relative+-1":"prejš. čet.","field-tue-narrow-relative+-1":"prejš. tor.","field-weekOfMonth-short":"ted. v mes.","field-wed-short-relative+0":"to sre.","field-wed-short-relative+1":"naslednjo sre.","field-sun-relative+-1":"prejšnjo nedeljo","field-weekday":"dan v tednu","field-day-short-relative+0":"danes","field-quarter-narrow-relative+0":"to četrtletje","field-sat-relative+0":"to soboto","field-day-short-relative+1":"jutri","field-quarter-narrow-relative+1":"naslednje četrtletje","field-sat-relative+1":"naslednjo soboto","field-day-short-relative+2":"pojutrišnjem","field-week-short-relative+0":"ta teden","field-week-short-relative+1":"naslednji teden","field-dayOfYear-narrow":"dan leta","field-month-short-relative+0":"ta mesec","field-month-short-relative+1":"naslednji mesec","field-weekdayOfMonth-short":"dan meseca","field-zone-narrow":"časovni pas","field-thu-narrow-relative+0":"ta čet.","field-thu-narrow-relative+1":"nasl. čet.","field-sun-narrow-relative+-1":"prejš. ned.","field-mon-short-relative+-1":"prejšnji pon.","field-thu-relative+0":"ta četrtek","field-thu-relative+1":"naslednji četrtek","field-fri-short-relative+-1":"prejšnji pet.","field-thu-relative+-1":"prejšnji četrtek","field-week":"teden","field-wed-narrow-relative+0":"to sre.","field-wed-narrow-relative+1":"nasl. sre.","field-quarter-narrow-relative+-1":"zadnje četrtletje","field-year-short-relative+0":"letos","field-dayperiod-short":"dop/pop","field-year-short-relative+1":"naslednje leto","field-fri-short-relative+0":"ta pet.","field-fri-short-relative+1":"naslednji pet.","field-week-short-relative+-1":"prejšnji teden","field-hour-short":"ura","field-zone-short":"časovni pas","field-month-narrow":"mes.","field-hour-narrow":"h","field-fri-narrow-relative+-1":"prejš. pet.","field-year-relative+0":"letos","field-year-relative+1":"naslednje leto","field-era-narrow":"doba","field-fri-relative+-1":"prejšnji petek","eraNarrow":["pred RK","Minguo koledar"],"field-tue-short-relative+-1":"prejšnji tor.","field-minute-narrow":"min","field-mon-narrow-relative+0":"ta pon.","field-mon-narrow-relative+1":"nasl. pon.","field-year-short-relative+-1":"lani","field-zone":"časovni pas","field-weekOfMonth-narrow":"teden meseca","field-weekday-narrow":"dan v tednu","field-quarter-narrow":"četr.","field-sun-short-relative+-1":"prejšnjo ned.","field-day-relative+-1":"včeraj","field-day-relative+-2":"predvčerajšnjim","field-weekday-short":"dan v tednu","field-sun-relative+0":"to nedeljo","field-sun-relative+1":"naslednjo nedeljo","field-day-short":"dan","field-week-narrow":"ted.","field-era":"doba","field-fri-narrow-relative+0":"ta pet.","field-fri-narrow-relative+1":"nasl. pet."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/buddhist.js b/lib/dojo/cldr/nls/sr/buddhist.js
index ecb6c8253..be2764b97 100644
--- a/lib/dojo/cldr/nls/sr/buddhist.js
+++ b/lib/dojo/cldr/nls/sr/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/buddhist",{"days-standAlone-short":["не","по","ут","ср","че","пе","су"],"months-format-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-second-relative+0":"сада","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"дан у недељи","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["БЕ"],"field-tue-relative+-1":"прошлог уторка","days-format-short":["нед","пон","уто","сре","чет","пет","суб"],"dateFormat-long":"dd. MMMM y. G","field-fri-relative+-1":"прошлог петка","field-wed-relative+-1":"прошле среде","months-format-wide":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],"dateFormatItem-yyyyQQQ":"QQQ, y. G","dayPeriods-format-wide-pm":"по подне","dateFormat-full":"EEEE, dd. MMMM y. G","dateFormatItem-yyyyMEd":"E, d.M.y. G","field-thu-relative+-1":"прошлог четвртка","dateFormatItem-Md":"d/M","field-era":"ера","months-standAlone-wide":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],"timeFormat-short":"HH.mm","quarters-format-wide":["Прво тромесечје","Друго тромесечје","Треће тромесечје","Четврто тромесечје"],"timeFormat-long":"HH.mm.ss z","field-year":"година","field-hour":"сат","months-format-abbr":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],"field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"данас","field-thu-relative+0":"у четвртак","field-day-relative+1":"сутра","field-thu-relative+1":"следећег четвртка","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"прекосутра","months-standAlone-abbr":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],"quarters-format-abbr":["К1","К2","К3","К4"],"quarters-standAlone-wide":["Прво тромесечје","Друго тромесечје","Треће тромесечје","Четврто тромесечје"],"dateFormatItem-Gy":"y. G","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","days-standAlone-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dateFormatItem-yyyyMMM":"MMM y. G","dateFormatItem-yyyyMMMd":"d. MMM y. G","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"у недељу","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"следеће недеље","quarters-standAlone-abbr":["К1","К2","К3","К4"],"eraAbbr":["БЕ"],"field-minute":"минут","field-dayperiod":"пре подне/по подне","days-standAlone-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"јуче","dateFormatItem-h":"hh a","field-day-relative+-2":"прекјуче","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, M-d","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","field-day":"дан","days-format-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"field-zone":"временска зона","dateFormatItem-y":"y. G","months-standAlone-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-year-relative+-1":"прошле године","field-month-relative+-1":"прошлог месеца","dateFormatItem-hm":"hh.mm a","days-format-abbr":["нед","пон","уто","сре","чет","пет","суб"],"eraNames":["БЕ"],"days-format-narrow":["н","п","у","с","ч","п","с"],"dateFormatItem-yyyyMd":"d.M.y. G","field-month":"месец","days-standAlone-narrow":["н","п","у","с","ч","п","с"],"field-tue-relative+0":"у уторак","field-tue-relative+1":"следећег уторка","dayPeriods-format-wide-am":"пре подне","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","dateFormat-short":"d.M.y. GGGGG","field-second":"секунд","field-sat-relative+-1":"прошле суботе","field-sun-relative+-1":"прошле недеље","field-month-relative+0":"овог месеца","field-month-relative+1":"следећег месеца","dateFormatItem-Ed":"E d.","field-week":"недеља","dateFormat-medium":"dd.MM.y. G","field-year-relative+0":"ове године","field-week-relative+-1":"прошле недеље","dateFormatItem-yyyyM":"M.y. G","field-year-relative+1":"следеће године","dateFormatItem-yyyyQQQQ":"QQQQ y. G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"hh.mm.ss a","dateFormatItem-GyMMM":"MMM y. G","field-mon-relative+-1":"прошлог понедељка","dateFormatItem-yyyy":"y. G","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/buddhist",{"field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","field-tue-relative+-1":"прошлог уторка","field-year":"година","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-minute":"минут","field-month-narrow-relative+-1":"прошлог м.","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","field-thu-short-relative+0":"у чет","field-day-short-relative+-1":"јуче","field-thu-short-relative+1":"следећег чет","field-day-relative+0":"данас","field-day-short-relative+-2":"прекјуче","field-day-relative+1":"сутра","field-week-narrow-relative+0":"ове н.","field-day-relative+2":"прекосутра","field-week-narrow-relative+1":"следеће н.","field-wed-narrow-relative+-1":"прошле сре","dateFormatItem-EBhms":"E hh:mm:ss B","field-year-narrow":"г.","field-era-short":"ера","field-year-narrow-relative+0":"ове г.","field-tue-relative+0":"у уторак","field-year-narrow-relative+1":"следеће г.","field-tue-relative+1":"следећег уторка","field-weekdayOfMonth":"дан у месецу","field-second-short":"сек.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"дан у месецу","dayPeriods-format-abbr-am":"пре подне","field-week-relative+0":"ове недеље","field-month-relative+0":"овог месеца","field-week-relative+1":"следеће недеље","field-month-relative+1":"следећег месеца","field-sun-narrow-relative+0":"у нед","field-mon-short-relative+0":"у пон","field-sun-narrow-relative+1":"сл. нед.","field-mon-short-relative+1":"следећег пон","field-second-relative+0":"сада","dateFormatItem-yyyyQQQ":"QQQ, y. G","months-standAlone-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"eraNames":["БЕ"],"field-weekOfMonth":"недеља у месецу","dayPeriods-standAlone-abbr-pm":"по подне","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"d.M.y. GGGGG","field-day":"дан","field-dayOfYear-short":"дан у год.","field-year-relative+-1":"прошле године","dayPeriods-format-wide-am":"пре подне","field-sat-short-relative+-1":"прошле суб","field-hour-relative+0":"овог сата","dateFormatItem-yyyyMEd":"E, d.M.y. GGGGG","field-wed-relative+-1":"прошле среде","field-sat-narrow-relative+-1":"прошле суб","field-second":"секунд","days-standAlone-narrow":["н","п","у","с","ч","п","с"],"dayPeriods-standAlone-wide-pm":"по подне","dateFormatItem-Ehms":"E hh:mm:ss a","dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"данас","field-day-narrow-relative+1":"сутра","field-day-narrow-relative+2":"прекосутра","quarters-standAlone-wide":["први квартал","други квартал","трећи квартал","четврти квартал"],"days-format-narrow":["н","п","у","с","ч","п","с"],"field-tue-short-relative+0":"у уто","field-tue-short-relative+1":"следећег уто","field-month-short-relative+-1":"прошлог мес.","field-mon-relative+-1":"прошлог понедељка","dateFormatItem-GyMMM":"MMM y. G","field-month":"месец","field-day-narrow":"д.","field-minute-short":"мин.","field-dayperiod":"пре подне/по подне","field-sat-short-relative+0":"у суб","field-sat-short-relative+1":"следеће суб","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d.MM.y. G","dateFormatItem-yyyyMMMM":"MMMM y. G","eraAbbr":["БЕ"],"quarters-standAlone-abbr":["К1","К2","К3","К4"],"dayPeriods-format-abbr-pm":"по подне","dateFormatItem-yyyyM":"M.y. GGGGG","field-second-narrow":"с.","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+-1":"јуче","field-year-short":"год.","field-day-narrow-relative+-2":"прекјуче","months-format-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-quarter-relative+-1":"прошлог квартала","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"пре подне/по подне","dayPeriods-standAlone-narrow-am":"пре подне","field-week-narrow-relative+-1":"прошле н.","days-format-short":["не","по","ут","ср","че","пе","су"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"по подне","field-dayOfYear":"дан у години","field-sat-relative+-1":"прошле суботе","dateFormatItem-Md":"d.M.","field-hour":"сат","months-format-wide":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],"dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"прошлог месеца","field-quarter-short":"кв.","field-sat-narrow-relative+0":"у суб","field-fri-relative+0":"у петак","field-sat-narrow-relative+1":"следеће суб","field-fri-relative+1":"следећег петка","dateFormatItem-EBhm":"E hh:mm B","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","field-sun-short-relative+0":"у нед","field-sun-short-relative+1":"сл. нед.","field-week-relative+-1":"прошле недеље","field-quarter-short-relative+-1":"прошлог квартала","dateFormatItem-Ehm":"E hh:mm a","months-format-abbr":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],"field-quarter-relative+0":"овог квартала","field-minute-relative+0":"овог минута","field-quarter-relative+1":"следећег квартала","field-wed-short-relative+-1":"прошле сре","dateFormat-short":"d.M.y. GGGGG","field-thu-short-relative+-1":"прошлог чет","field-year-narrow-relative+-1":"прошле г.","days-standAlone-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"прошлог пон","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"прошлог чет","field-tue-narrow-relative+-1":"прошлог уто","field-weekOfMonth-short":"нед. у мес.","dateFormatItem-yyyy":"y. G","dayPeriods-standAlone-narrow-pm":"по подне","field-wed-short-relative+0":"у сре","months-standAlone-wide":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],"field-wed-short-relative+1":"следеће сре","field-sun-relative+-1":"прошле недеље","days-standAlone-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-hm":"hh:mm a","field-weekday":"дан у недељи","field-day-short-relative+0":"данас","field-quarter-narrow-relative+0":"овог квартала","field-sat-relative+0":"у суботу","field-day-short-relative+1":"сутра","field-quarter-narrow-relative+1":"следећег квартала","field-sat-relative+1":"следеће суботе","field-day-short-relative+2":"прекосутра","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","months-standAlone-abbr":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],"field-dayOfYear-narrow":"дан у год.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","field-weekdayOfMonth-short":"дан у месецу","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"временска зона","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"у чет","field-thu-narrow-relative+1":"следећег чет","field-sun-narrow-relative+-1":"пр. нед.","field-mon-short-relative+-1":"прошлог пон","field-thu-relative+0":"у четвртак","field-thu-relative+1":"следећег четвртка","field-fri-short-relative+-1":"прошлог пет","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"прошлог четвртка","field-week":"недеља","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["први квартал","други квартал","трећи квартал","четврти квартал"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-quarter-narrow-relative+-1":"прошлог квартала","field-year-short-relative+0":"ове год.","field-dayperiod-short":"пре подне/по подне","dateFormatItem-yyyyMMM":"MMM y. G","field-year-short-relative+1":"следеће год.","field-fri-short-relative+0":"у пет","field-fri-short-relative+1":"следећег пет","days-standAlone-short":["не","по","ут","ср","че","пе","су"],"field-week-short-relative+-1":"прошле нед.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"ч.","field-zone-short":"временска зона","quarters-format-abbr":["К1","К2","К3","К4"],"field-month-narrow":"м.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"прошлог пет","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-era-narrow":"ера","field-fri-relative+-1":"прошлог петка","eraNarrow":["БЕ"],"dateFormatItem-Bhms":"hh:mm:ss B","field-tue-short-relative+-1":"прошлог уто","field-minute-narrow":"мин.","days-format-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"field-mon-narrow-relative+0":"у пон","field-mon-narrow-relative+1":"следећег пон","field-year-short-relative+-1":"прошле год.","field-zone":"временска зона","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"нед. у мес.","field-weekday-narrow":"дан у недељи","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"пр. нед.","field-day-relative+-1":"јуче","dayPeriods-standAlone-abbr-am":"пре подне","field-day-relative+-2":"прекјуче","field-weekday-short":"дан у недељи","days-format-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-Bhm":"hh:mm B","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","dateFormatItem-Gy":"y. G","field-day-short":"д.","field-week-narrow":"н.","field-era":"ера","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет","dayPeriods-standAlone-wide-am":"пре подне"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/coptic.js b/lib/dojo/cldr/nls/sr/coptic.js
index 9d9bfa428..ac4c5e0c5 100644
--- a/lib/dojo/cldr/nls/sr/coptic.js
+++ b/lib/dojo/cldr/nls/sr/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/coptic",{"field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","field-dayperiod":"пре подне/по подне","field-sun-relative+-1":"прошле недеље","field-mon-relative+-1":"прошлог понедељка","field-minute":"минут","field-day-relative+-1":"јуче","field-weekday":"дан у недељи","field-day-relative+-2":"прекјуче","field-era":"ера","field-hour":"сат","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","field-wed-relative+-1":"прошле среде","field-day-relative+0":"данас","field-day-relative+1":"сутра","field-day-relative+2":"прекосутра","field-tue-relative+0":"у уторак","field-zone":"временска зона","field-tue-relative+1":"следећег уторка","field-week-relative+-1":"прошле недеље","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-sat-relative+-1":"прошле суботе","field-year-relative+-1":"прошле године","field-year":"година","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","field-week":"недеља","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље","field-month-relative+0":"овог месеца","field-month":"месец","field-month-relative+1":"следећег месеца","field-fri-relative+-1":"прошлог петка","field-second":"секунд","field-tue-relative+-1":"прошлог уторка","field-day":"дан","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-thu-relative+0":"у четвртак","field-second-relative+0":"сада","field-thu-relative+1":"следећег четвртка","field-wed-relative+0":"у среду","months-format-wide":["Таут","Баба","Хатор","Киахк","Тоба","Амшир","Барамхат","Барамуда","Башанс","Паона","Епеп","Месра","Наси"],"field-wed-relative+1":"следеће среде","field-month-relative+-1":"прошлог месеца","field-thu-relative+-1":"прошлог четвртка"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/coptic",{"field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","field-tue-relative+-1":"прошлог уторка","field-year":"година","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-minute":"минут","field-month-narrow-relative+-1":"прошлог м.","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","field-thu-short-relative+0":"у чет","field-day-short-relative+-1":"јуче","field-thu-short-relative+1":"следећег чет","field-day-relative+0":"данас","field-day-short-relative+-2":"прекјуче","field-day-relative+1":"сутра","field-week-narrow-relative+0":"ове н.","field-day-relative+2":"прекосутра","field-week-narrow-relative+1":"следеће н.","field-wed-narrow-relative+-1":"прошле сре","field-year-narrow":"г.","field-era-short":"ера","field-year-narrow-relative+0":"ове г.","field-tue-relative+0":"у уторак","field-year-narrow-relative+1":"следеће г.","field-tue-relative+1":"следећег уторка","field-weekdayOfMonth":"дан у месецу","field-second-short":"сек.","field-weekdayOfMonth-narrow":"дан у месецу","field-week-relative+0":"ове недеље","field-month-relative+0":"овог месеца","field-week-relative+1":"следеће недеље","field-month-relative+1":"следећег месеца","field-sun-narrow-relative+0":"у нед","field-mon-short-relative+0":"у пон","field-sun-narrow-relative+1":"сл. нед.","field-mon-short-relative+1":"следећег пон","field-second-relative+0":"сада","field-weekOfMonth":"недеља у месецу","field-month-short":"мес.","field-day":"дан","field-dayOfYear-short":"дан у год.","field-year-relative+-1":"прошле године","field-sat-short-relative+-1":"прошле суб","field-hour-relative+0":"овог сата","field-wed-relative+-1":"прошле среде","field-sat-narrow-relative+-1":"прошле суб","field-second":"секунд","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"данас","field-day-narrow-relative+1":"сутра","field-day-narrow-relative+2":"прекосутра","field-tue-short-relative+0":"у уто","field-tue-short-relative+1":"следећег уто","field-month-short-relative+-1":"прошлог мес.","field-mon-relative+-1":"прошлог понедељка","field-month":"месец","field-day-narrow":"д.","field-minute-short":"мин.","field-dayperiod":"пре подне/по подне","field-sat-short-relative+0":"у суб","field-sat-short-relative+1":"следеће суб","field-second-narrow":"с.","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+-1":"јуче","field-year-short":"год.","field-day-narrow-relative+-2":"прекјуче","field-quarter-relative+-1":"прошлог квартала","field-dayperiod-narrow":"пре подне/по подне","field-week-narrow-relative+-1":"прошле н.","field-dayOfYear":"дан у години","field-sat-relative+-1":"прошле суботе","field-hour":"сат","months-format-wide":["Таут","Баба","Хатор","Киахк","Тоба","Амшир","Барамхат","Барамуда","Башанс","Паона","Епеп","Месра","Наси"],"field-month-relative+-1":"прошлог месеца","field-quarter-short":"кв.","field-sat-narrow-relative+0":"у суб","field-fri-relative+0":"у петак","field-sat-narrow-relative+1":"следеће суб","field-fri-relative+1":"следећег петка","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","field-sun-short-relative+0":"у нед","field-sun-short-relative+1":"сл. нед.","field-week-relative+-1":"прошле недеље","field-quarter-short-relative+-1":"прошлог квартала","field-quarter-relative+0":"овог квартала","field-minute-relative+0":"овог минута","field-quarter-relative+1":"следећег квартала","field-wed-short-relative+-1":"прошле сре","field-thu-short-relative+-1":"прошлог чет","field-year-narrow-relative+-1":"прошле г.","field-mon-narrow-relative+-1":"прошлог пон","field-thu-narrow-relative+-1":"прошлог чет","field-tue-narrow-relative+-1":"прошлог уто","field-weekOfMonth-short":"нед. у мес.","field-wed-short-relative+0":"у сре","field-wed-short-relative+1":"следеће сре","field-sun-relative+-1":"прошле недеље","field-weekday":"дан у недељи","field-day-short-relative+0":"данас","field-quarter-narrow-relative+0":"овог квартала","field-sat-relative+0":"у суботу","field-day-short-relative+1":"сутра","field-quarter-narrow-relative+1":"следећег квартала","field-sat-relative+1":"следеће суботе","field-day-short-relative+2":"прекосутра","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","field-dayOfYear-narrow":"дан у год.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","field-weekdayOfMonth-short":"дан у месецу","field-zone-narrow":"временска зона","field-thu-narrow-relative+0":"у чет","field-thu-narrow-relative+1":"следећег чет","field-sun-narrow-relative+-1":"пр. нед.","field-mon-short-relative+-1":"прошлог пон","field-thu-relative+0":"у четвртак","field-thu-relative+1":"следећег четвртка","field-fri-short-relative+-1":"прошлог пет","field-thu-relative+-1":"прошлог четвртка","field-week":"недеља","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-quarter-narrow-relative+-1":"прошлог квартала","field-year-short-relative+0":"ове год.","field-dayperiod-short":"пре подне/по подне","field-year-short-relative+1":"следеће год.","field-fri-short-relative+0":"у пет","field-fri-short-relative+1":"следећег пет","field-week-short-relative+-1":"прошле нед.","field-hour-short":"ч.","field-zone-short":"временска зона","field-month-narrow":"м.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"прошлог пет","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-era-narrow":"ера","field-fri-relative+-1":"прошлог петка","field-tue-short-relative+-1":"прошлог уто","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"у пон","field-mon-narrow-relative+1":"следећег пон","field-year-short-relative+-1":"прошле год.","field-zone":"временска зона","field-weekOfMonth-narrow":"нед. у мес.","field-weekday-narrow":"дан у недељи","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"пр. нед.","field-day-relative+-1":"јуче","field-day-relative+-2":"прекјуче","field-weekday-short":"дан у недељи","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","field-day-short":"д.","field-week-narrow":"н.","field-era":"ера","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/currency.js b/lib/dojo/cldr/nls/sr/currency.js
index e254e2adb..92f8343c2 100644
--- a/lib/dojo/cldr/nls/sr/currency.js
+++ b/lib/dojo/cldr/nls/sr/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/currency",{"HKD_displayName":"Хонгконшки долар","CHF_displayName":"Швајцарски франак","JPY_symbol":"¥","CAD_displayName":"Канадски долар","HKD_symbol":"HK$","CNY_displayName":"Кинески јуан","AUD_displayName":"Аустралијски долар","JPY_displayName":"Јапански јен","USD_displayName":"Амерички долар","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"Британска фунта","GBP_symbol":"£","AUD_symbol":"AUD","EUR_displayName":"Евро"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/currency",{"HKD_displayName":"Хонгконшки долар","CNY_displayName":"Кинески јуан","JPY_displayName":"Јапански јен","JPY_symbol":"¥","USD_displayName":"Амерички долар","CAD_symbol":"CA$","GBP_displayName":"Британска фунта","CHF_displayName":"Швајцарски франак","CNY_symbol":"CN¥","EUR_displayName":"Евро","GBP_symbol":"£","CAD_displayName":"Канадски долар","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"Аустралијски долар","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/ethiopic.js b/lib/dojo/cldr/nls/sr/ethiopic.js
index be3efb307..bd5a41960 100644
--- a/lib/dojo/cldr/nls/sr/ethiopic.js
+++ b/lib/dojo/cldr/nls/sr/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/ethiopic",{"field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","field-dayperiod":"пре подне/по подне","field-sun-relative+-1":"прошле недеље","field-mon-relative+-1":"прошлог понедељка","field-minute":"минут","field-day-relative+-1":"јуче","field-weekday":"дан у недељи","field-day-relative+-2":"прекјуче","field-era":"ера","field-hour":"сат","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","field-wed-relative+-1":"прошле среде","field-day-relative+0":"данас","field-day-relative+1":"сутра","field-day-relative+2":"прекосутра","field-tue-relative+0":"у уторак","field-zone":"временска зона","field-tue-relative+1":"следећег уторка","field-week-relative+-1":"прошле недеље","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-sat-relative+-1":"прошле суботе","field-year-relative+-1":"прошле године","field-year":"година","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","field-week":"недеља","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље","field-month-relative+0":"овог месеца","field-month":"месец","field-month-relative+1":"следећег месеца","field-fri-relative+-1":"прошлог петка","field-second":"секунд","field-tue-relative+-1":"прошлог уторка","field-day":"дан","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-thu-relative+0":"у четвртак","field-second-relative+0":"сада","field-thu-relative+1":"следећег четвртка","field-wed-relative+0":"у среду","months-format-wide":["Мескерем","Текемт","Хедар","Тахсас","Тер","Јекатит","Мегабит","Миазиа","Генбот","Сене","Хамле","Нехасе","Пагумен"],"field-wed-relative+1":"следеће среде","field-month-relative+-1":"прошлог месеца","field-thu-relative+-1":"прошлог четвртка"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/ethiopic",{"field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","field-tue-relative+-1":"прошлог уторка","field-year":"година","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-minute":"минут","field-month-narrow-relative+-1":"прошлог м.","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","field-thu-short-relative+0":"у чет","field-day-short-relative+-1":"јуче","field-thu-short-relative+1":"следећег чет","field-day-relative+0":"данас","field-day-short-relative+-2":"прекјуче","field-day-relative+1":"сутра","field-week-narrow-relative+0":"ове н.","field-day-relative+2":"прекосутра","field-week-narrow-relative+1":"следеће н.","field-wed-narrow-relative+-1":"прошле сре","field-year-narrow":"г.","field-era-short":"ера","field-year-narrow-relative+0":"ове г.","field-tue-relative+0":"у уторак","field-year-narrow-relative+1":"следеће г.","field-tue-relative+1":"следећег уторка","field-weekdayOfMonth":"дан у месецу","field-second-short":"сек.","field-weekdayOfMonth-narrow":"дан у месецу","field-week-relative+0":"ове недеље","field-month-relative+0":"овог месеца","field-week-relative+1":"следеће недеље","field-month-relative+1":"следећег месеца","field-sun-narrow-relative+0":"у нед","field-mon-short-relative+0":"у пон","field-sun-narrow-relative+1":"сл. нед.","field-mon-short-relative+1":"следећег пон","field-second-relative+0":"сада","field-weekOfMonth":"недеља у месецу","field-month-short":"мес.","field-day":"дан","field-dayOfYear-short":"дан у год.","field-year-relative+-1":"прошле године","field-sat-short-relative+-1":"прошле суб","field-hour-relative+0":"овог сата","field-wed-relative+-1":"прошле среде","field-sat-narrow-relative+-1":"прошле суб","field-second":"секунд","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"данас","field-day-narrow-relative+1":"сутра","field-day-narrow-relative+2":"прекосутра","field-tue-short-relative+0":"у уто","field-tue-short-relative+1":"следећег уто","field-month-short-relative+-1":"прошлог мес.","field-mon-relative+-1":"прошлог понедељка","field-month":"месец","field-day-narrow":"д.","field-minute-short":"мин.","field-dayperiod":"пре подне/по подне","field-sat-short-relative+0":"у суб","field-sat-short-relative+1":"следеће суб","field-second-narrow":"с.","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+-1":"јуче","field-year-short":"год.","field-day-narrow-relative+-2":"прекјуче","field-quarter-relative+-1":"прошлог квартала","field-dayperiod-narrow":"пре подне/по подне","field-week-narrow-relative+-1":"прошле н.","field-dayOfYear":"дан у години","field-sat-relative+-1":"прошле суботе","field-hour":"сат","months-format-wide":["Мескерем","Текемт","Хедар","Тахсас","Тер","Јекатит","Мегабит","Миазиа","Генбот","Сене","Хамле","Нехасе","Пагумен"],"field-month-relative+-1":"прошлог месеца","field-quarter-short":"кв.","field-sat-narrow-relative+0":"у суб","field-fri-relative+0":"у петак","field-sat-narrow-relative+1":"следеће суб","field-fri-relative+1":"следећег петка","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","field-sun-short-relative+0":"у нед","field-sun-short-relative+1":"сл. нед.","field-week-relative+-1":"прошле недеље","field-quarter-short-relative+-1":"прошлог квартала","field-quarter-relative+0":"овог квартала","field-minute-relative+0":"овог минута","field-quarter-relative+1":"следећег квартала","field-wed-short-relative+-1":"прошле сре","field-thu-short-relative+-1":"прошлог чет","field-year-narrow-relative+-1":"прошле г.","field-mon-narrow-relative+-1":"прошлог пон","field-thu-narrow-relative+-1":"прошлог чет","field-tue-narrow-relative+-1":"прошлог уто","field-weekOfMonth-short":"нед. у мес.","field-wed-short-relative+0":"у сре","field-wed-short-relative+1":"следеће сре","field-sun-relative+-1":"прошле недеље","field-weekday":"дан у недељи","field-day-short-relative+0":"данас","field-quarter-narrow-relative+0":"овог квартала","field-sat-relative+0":"у суботу","field-day-short-relative+1":"сутра","field-quarter-narrow-relative+1":"следећег квартала","field-sat-relative+1":"следеће суботе","field-day-short-relative+2":"прекосутра","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","field-dayOfYear-narrow":"дан у год.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","field-weekdayOfMonth-short":"дан у месецу","field-zone-narrow":"временска зона","field-thu-narrow-relative+0":"у чет","field-thu-narrow-relative+1":"следећег чет","field-sun-narrow-relative+-1":"пр. нед.","field-mon-short-relative+-1":"прошлог пон","field-thu-relative+0":"у четвртак","field-thu-relative+1":"следећег четвртка","field-fri-short-relative+-1":"прошлог пет","field-thu-relative+-1":"прошлог четвртка","field-week":"недеља","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-quarter-narrow-relative+-1":"прошлог квартала","field-year-short-relative+0":"ове год.","field-dayperiod-short":"пре подне/по подне","field-year-short-relative+1":"следеће год.","field-fri-short-relative+0":"у пет","field-fri-short-relative+1":"следећег пет","field-week-short-relative+-1":"прошле нед.","field-hour-short":"ч.","field-zone-short":"временска зона","field-month-narrow":"м.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"прошлог пет","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-era-narrow":"ера","field-fri-relative+-1":"прошлог петка","field-tue-short-relative+-1":"прошлог уто","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"у пон","field-mon-narrow-relative+1":"следећег пон","field-year-short-relative+-1":"прошле год.","field-zone":"временска зона","field-weekOfMonth-narrow":"нед. у мес.","field-weekday-narrow":"дан у недељи","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"пр. нед.","field-day-relative+-1":"јуче","field-day-relative+-2":"прекјуче","field-weekday-short":"дан у недељи","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","field-day-short":"д.","field-week-narrow":"н.","field-era":"ера","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/generic.js b/lib/dojo/cldr/nls/sr/generic.js
index 774186c39..c8e0d8c70 100644
--- a/lib/dojo/cldr/nls/sr/generic.js
+++ b/lib/dojo/cldr/nls/sr/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/generic",{"field-second-relative+0":"сада","field-weekday":"дан у недељи","field-wed-relative+0":"у среду","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E d. MMM","field-wed-relative+1":"следеће среде","field-tue-relative+-1":"прошлог уторка","dateFormatItem-yyyyMMdd":"dd.MM.y. G","dateFormatItem-MMMdd":"dd.MMM","dateFormat-long":"dd. MMMM y. G","field-fri-relative+-1":"прошлог петка","field-wed-relative+-1":"прошле среде","dateFormatItem-yyyyQQQ":"QQQ, y. G","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE, dd. MMMM y. G","dateFormatItem-yyyyMEd":"E, d.M.y. G","field-thu-relative+-1":"прошлог четвртка","dateFormatItem-Md":"d/M","field-era":"ера","field-year":"година","dateFormatItem-yyyyMMMM":"MMMM y. G","dateFormatItem-MMdd":"MM-dd","field-hour":"сат","field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","field-day-relative+0":"данас","field-day-relative+1":"сутра","field-thu-relative+0":"у четвртак","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"прекосутра","field-thu-relative+1":"следећег четвртка","dateFormatItem-H":"HH","dateFormatItem-Gy":"y. G","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y. G","dateFormatItem-yyyyMMMd":"d. MMM y. G","dateFormatItem-MMMMd":"d. MMMM","field-sun-relative+0":"у недељу","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"следеће недеље","field-minute":"минут","field-dayperiod":"пре подне/по подне","dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","field-day-relative+-1":"јуче","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"прекјуче","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","field-day":"дан","field-zone":"временска зона","dateFormatItem-yyyyMM":"MM.y. G","dateFormatItem-y":"y. G","field-year-relative+-1":"прошле године","field-month-relative+-1":"прошлог месеца","dateFormatItem-hm":"hh.mm a","dateFormatItem-yyyyMd":"d.M.y. G","field-month":"месец","dateFormatItem-MMM":"LLL","field-tue-relative+0":"у уторак","field-tue-relative+1":"следећег уторка","dateFormatItem-MMMMEd":"E d. MMMM","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","dateFormat-short":"d.M.y. GGGGG","field-second":"секунд","field-sat-relative+-1":"прошле суботе","field-sun-relative+-1":"прошле недеље","field-month-relative+0":"овог месеца","field-month-relative+1":"следећег месеца","dateFormatItem-Ed":"E d.","field-week":"недеља","dateFormat-medium":"dd.MM.y. G","field-year-relative+0":"ове године","field-week-relative+-1":"прошле недеље","dateFormatItem-yyyyM":"M.y. G","field-year-relative+1":"следеће године","dateFormatItem-yyyyQQQQ":"QQQQ y. G","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"hh.mm.ss a","dateFormatItem-GyMMM":"MMM y. G","field-mon-relative+-1":"прошлог понедељка","dateFormatItem-yyyy":"y. G","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/generic",{"field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","field-tue-relative+-1":"прошлог уторка","field-year":"година","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","dateFormatItem-ms":"mm:ss","field-minute":"минут","field-month-narrow-relative+-1":"прошлог м.","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","field-day-short-relative+-1":"јуче","field-thu-short-relative+0":"у чет","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"данас","field-day-short-relative+-2":"прекјуче","field-thu-short-relative+1":"следећег чет","field-day-relative+1":"сутра","field-week-narrow-relative+0":"ове н.","field-day-relative+2":"прекосутра","field-week-narrow-relative+1":"следеће н.","dateFormatItem-EBhms":"E hh:mm:ss B","field-wed-narrow-relative+-1":"прошле сре","field-year-narrow":"г.","field-era-short":"ера","field-year-narrow-relative+0":"ове г.","field-tue-relative+0":"у уторак","field-year-narrow-relative+1":"следеће г.","field-tue-relative+1":"следећег уторка","field-weekdayOfMonth":"дан у месецу","field-second-short":"сек.","dateFormatItem-yyyyMM":"MM.y. G","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"дан у месецу","field-week-relative+0":"ове недеље","field-month-relative+0":"овог месеца","field-week-relative+1":"следеће недеље","field-month-relative+1":"следећег месеца","field-sun-narrow-relative+0":"у нед","field-mon-short-relative+0":"у пон","field-sun-narrow-relative+1":"сл. нед.","field-mon-short-relative+1":"следећег пон","field-second-relative+0":"сада","dateFormatItem-yyyyQQQ":"QQQ, y. G","field-weekOfMonth":"недеља у месецу","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"d.M.y. GGGGG","field-day":"дан","field-dayOfYear-short":"дан у год.","field-year-relative+-1":"прошле године","field-sat-short-relative+-1":"прошле суб","field-hour-relative+0":"овог сата","dateFormatItem-yyyyMEd":"E, d.M.y. GGGGG","field-wed-relative+-1":"прошле среде","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"прошле суб","field-second":"секунд","dateFormatItem-Ehms":"E hh:mm:ss a","dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"квартал","dateFormatItem-yyyyMMdd":"dd.MM.y. G","field-week-short":"нед.","field-day-narrow-relative+0":"данас","field-day-narrow-relative+1":"сутра","field-day-narrow-relative+2":"прекосутра","field-tue-short-relative+0":"у уто","field-tue-short-relative+1":"следећег уто","field-month-short-relative+-1":"прошлог мес.","field-mon-relative+-1":"прошлог понедељка","dateFormatItem-GyMMM":"MMM y. G","field-month":"месец","field-day-narrow":"д.","dateFormatItem-MMM":"LLL","field-minute-short":"мин.","field-dayperiod":"пре подне/по подне","field-sat-short-relative+0":"у суб","field-sat-short-relative+1":"следеће суб","dateFormat-medium":"d.MM.y. G","dateFormatItem-yyyyMMMM":"MMMM y. G","dateFormatItem-yyyyM":"M.y. GGGGG","field-second-narrow":"с.","field-mon-relative+0":"у понедељак","field-day-narrow-relative+-1":"јуче","field-year-short":"год.","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+-2":"прекјуче","field-quarter-relative+-1":"прошлог квартала","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"пре подне/по подне","field-week-narrow-relative+-1":"прошле н.","field-dayOfYear":"дан у години","field-sat-relative+-1":"прошле суботе","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d.M.","field-hour":"сат","dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"прошлог месеца","dateFormatItem-MMMdd":"dd.MMM","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"кв.","field-sat-narrow-relative+0":"у суб","field-fri-relative+0":"у петак","field-sat-narrow-relative+1":"следеће суб","field-fri-relative+1":"следећег петка","dateFormatItem-EBhm":"E hh:mm B","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","field-sun-short-relative+0":"у нед","field-sun-short-relative+1":"сл. нед.","field-week-relative+-1":"прошле недеље","field-quarter-short-relative+-1":"прошлог квартала","dateFormatItem-Ehm":"E hh:mm a","field-quarter-relative+0":"овог квартала","field-minute-relative+0":"овог минута","field-quarter-relative+1":"следећег квартала","field-wed-short-relative+-1":"прошле сре","dateFormat-short":"d.M.y. GGGGG","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"прошле г.","field-thu-short-relative+-1":"прошлог чет","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"прошлог пон","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"прошлог чет","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"нед. у мес.","field-tue-narrow-relative+-1":"прошлог уто","dateFormatItem-yyyy":"y. G","dateFormatItem-M":"L","field-wed-short-relative+0":"у сре","field-wed-short-relative+1":"следеће сре","field-sun-relative+-1":"прошле недеље","dateFormatItem-MMMMEd":"E, d. MMMM","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"hh:mm a","dateFormatItem-d":"d","field-weekday":"дан у недељи","field-day-short-relative+0":"данас","field-quarter-narrow-relative+0":"овог квартала","field-day-short-relative+1":"сутра","field-sat-relative+0":"у суботу","field-quarter-narrow-relative+1":"следећег квартала","dateFormatItem-h":"h a","field-day-short-relative+2":"прекосутра","field-sat-relative+1":"следеће суботе","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","field-dayOfYear-narrow":"дан у год.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","field-weekdayOfMonth-short":"дан у месецу","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"временска зона","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"у чет","field-sun-narrow-relative+-1":"пр. нед.","field-mon-short-relative+-1":"прошлог пон","field-thu-narrow-relative+1":"следећег чет","field-thu-relative+0":"у четвртак","field-thu-relative+1":"следећег четвртка","dateFormatItem-hms":"hh:mm:ss a","field-fri-short-relative+-1":"прошлог пет","field-thu-relative+-1":"прошлог четвртка","field-week":"недеља","dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-quarter-narrow-relative+-1":"прошлог квартала","field-year-short-relative+0":"ове год.","dateFormatItem-yyyyMMM":"MMM y. G","field-dayperiod-short":"пре подне/по подне","field-year-short-relative+1":"следеће год.","field-fri-short-relative+0":"у пет","field-fri-short-relative+1":"следећег пет","field-week-short-relative+-1":"прошле нед.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"ч.","field-zone-short":"временска зона","field-month-narrow":"м.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"прошлог пет","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-era-narrow":"ера","field-fri-relative+-1":"прошлог петка","dateFormatItem-Bhms":"hh:mm:ss B","field-tue-short-relative+-1":"прошлог уто","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"у пон","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"следећег пон","field-year-short-relative+-1":"прошле год.","field-zone":"временска зона","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"нед. у мес.","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"дан у недељи","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"пр. нед.","field-day-relative+-1":"јуче","field-day-relative+-2":"прекјуче","field-weekday-short":"дан у недељи","dateFormatItem-Bhm":"hh:mm B","field-sun-relative+0":"у недељу","dateFormatItem-MMdd":"MM-dd","field-sun-relative+1":"следеће недеље","dateFormatItem-Gy":"y. G","field-day-short":"д.","field-week-narrow":"н.","field-era":"ера","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/gregorian.js b/lib/dojo/cldr/nls/sr/gregorian.js
index 2207613c1..d1297a93c 100644
--- a/lib/dojo/cldr/nls/sr/gregorian.js
+++ b/lib/dojo/cldr/nls/sr/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/gregorian",{"dateFormatItem-Ehm":"E, h:mm a","days-standAlone-short":["не","по","ут","ср","че","пе","су"],"months-format-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-second-relative+0":"сада","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"дан у недељи","dateFormatItem-yQQQ":"QQQ. y","dateFormatItem-yMEd":"E, d.M.y.","field-wed-relative+0":"у среду","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E d. MMM","field-wed-relative+1":"следеће среде","eraNarrow":["п.н.е.","н.е."],"dateFormatItem-yMM":"MM.y.","field-tue-relative+-1":"прошлог уторка","dateFormatItem-MMMdd":"dd.MMM","days-format-short":["нед","пон","уто","сре","чет","пет","суб"],"dateFormat-long":"dd. MMMM y.","field-fri-relative+-1":"прошлог петка","field-wed-relative+-1":"прошле среде","months-format-wide":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"по подне","dateFormat-full":"EEEE, dd. MMMM y.","field-thu-relative+-1":"прошлог четвртка","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d.M.y.","dateFormatItem-yM":"M.y.","field-era":"ера","months-standAlone-wide":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],"timeFormat-short":"HH.mm","quarters-format-wide":["Прво тромесечје","Друго тромесечје","Треће тромесечје","Четврто тромесечје"],"timeFormat-long":"HH.mm.ss z","dateFormatItem-yMMM":"MMM y.","dateFormatItem-yQQQQ":"QQQQ. y","field-year":"година","dateFormatItem-MMdd":"MM-dd","field-hour":"сат","months-format-abbr":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],"field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"данас","field-day-relative+1":"сутра","field-thu-relative+0":"у четвртак","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"прекосутра","field-thu-relative+1":"следећег четвртка","dateFormatItem-H":"HH","months-standAlone-abbr":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],"quarters-format-abbr":["К1","К2","К3","К4"],"quarters-standAlone-wide":["Прво тромесечје","Друго тромесечје","Треће тромесечје","Четврто тромесечје"],"dateFormatItem-Gy":"y. G","dateFormatItem-M":"L","days-standAlone-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dateFormatItem-MMMMd":"d. MMMM","timeFormat-medium":"HH.mm.ss","dateFormatItem-yMMdd":"dd.MM.y.","field-sun-relative+0":"у недељу","dateFormatItem-Hm":"HH.mm","quarters-standAlone-abbr":["К1","К2","К3","К4"],"field-sun-relative+1":"следеће недеље","eraAbbr":["п. н. е.","н. е."],"field-minute":"минут","field-dayperiod":"пре подне/по подне","days-standAlone-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"јуче","dateFormatItem-h":"hh a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"прекјуче","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, M-d","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"у петак","dateFormatItem-yMMMM":"MMMM y.","field-fri-relative+1":"следећег петка","field-day":"дан","days-format-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"field-zone":"временска зона","dateFormatItem-y":"y.","months-standAlone-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-year-relative+-1":"прошле године","field-month-relative+-1":"прошлог месеца","dateFormatItem-hm":"hh.mm a","days-format-abbr":["нед","пон","уто","сре","чет","пет","суб"],"eraNames":["Пре нове ере","п. н. е.","Нове ере","н. е."],"dateFormatItem-yMMMd":"d. MMM y.","days-format-narrow":["н","п","у","с","ч","п","с"],"days-standAlone-narrow":["н","п","у","с","ч","п","с"],"dateFormatItem-MMM":"LLL","field-month":"месец","field-tue-relative+0":"у уторак","field-tue-relative+1":"следећег уторка","dayPeriods-format-wide-am":"пре подне","dateFormatItem-MMMMEd":"E d. MMMM","dateFormatItem-EHm":"E, HH:mm","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","dateFormat-short":"d.M.yy.","dateFormatItem-EHms":"E, HH:mm:ss","dateFormatItem-Ehms":"E, h:mm:ss a","field-second":"секунд","field-sat-relative+-1":"прошле суботе","dateFormatItem-yMMMEd":"E, d. MMM y.","field-sun-relative+-1":"прошле недеље","field-month-relative+0":"овог месеца","field-month-relative+1":"следећег месеца","dateFormatItem-Ed":"E d.","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"недеља","dateFormat-medium":"dd.MM.y.","field-year-relative+0":"ове године","field-week-relative+-1":"прошле недеље","field-year-relative+1":"следеће године","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"hh.mm.ss a","dateFormatItem-GyMMM":"MMM y. G","field-mon-relative+-1":"прошлог понедељка","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/gregorian",{"dateFormatItem-yMMMM":"MMMM y.","field-thu-narrow-relative+0":"у чет","field-thu-narrow-relative+1":"следећег чет","field-sun-narrow-relative+0":"у нед","field-sun-narrow-relative+1":"сл. нед.","months-format-wide":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],"dayPeriods-standAlone-abbr-pm":"по подне","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет","eraNarrow":["п.н.е.","н.е."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d. MMM y.","dayPeriods-format-abbr-night1":"ноћу","dayPeriods-format-narrow-evening1":"увече","days-standAlone-narrow":["н","п","у","с","ч","п","с"],"days-standAlone-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dayPeriods-format-abbr-afternoon1":"по подне","dayPeriods-format-wide-evening1":"увече","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"прошле сре","dayPeriods-standAlone-wide-evening1":"вече","days-format-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dateFormatItem-yMM":"MM.y.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"вече","dayPeriods-standAlone-abbr-afternoon1":"поподне","field-thu-relative+0":"у четвртак","dayPeriods-standAlone-abbr-night1":"ноћ","field-thu-relative+1":"следећег четвртка","dayPeriods-format-wide-am":"пре подне","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","dateFormatItem-yMd":"d.M.y.","field-thu-narrow-relative+-1":"прошлог чет","field-quarter-relative+0":"овог квартала","field-quarter-relative+1":"следећег квартала","field-sun-short-relative+0":"у нед","timeFormat-short":"HH:mm","field-sun-short-relative+1":"сл. нед.","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"по подне","dateFormatItem-Md":"d.M.","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"н.","field-hour-relative+0":"овог сата","field-day-relative+-1":"јуче","field-day-relative+-2":"прекјуче","field-mon-narrow-relative+-1":"прошлог пон","field-minute-narrow":"мин.","dateFormatItem-MMMMEd":"E, d. MMMM","field-thu-short-relative+0":"у чет","field-mon-relative+0":"у понедељак","field-thu-short-relative+1":"следећег чет","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+0":"данас","field-era-short":"ера","field-day-narrow-relative+1":"сутра","field-sat-narrow-relative+0":"у суб","field-day-narrow-relative+2":"прекосутра","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"следеће суб","field-week-narrow-relative+0":"ове н.","field-week-narrow-relative+1":"следеће н.","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-month":"месец","months-standAlone-wide":["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],"field-weekday-narrow":"дан у недељи","dayPeriods-standAlone-narrow-afternoon1":"поподне","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","dayPeriods-format-abbr-evening1":"увече","dayPeriods-format-abbr-noon":"подне","dayPeriods-format-narrow-midnight":"поноћ","dayPeriods-format-wide-midnight":"поноћ","field-tue-relative+0":"у уторак","field-tue-relative+1":"следећег уторка","dayPeriods-standAlone-abbr-evening1":"вече","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"поноћ","field-year-narrow":"г.","dayPeriods-standAlone-abbr-noon":"подне","field-tue-short-relative+0":"у уто","dayPeriods-standAlone-narrow-midnight":"поноћ","field-tue-short-relative+1":"следећег уто","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"E","dateFormatItem-EBhm":"E hh:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","dateFormatItem-M":"L","field-wed-short-relative+0":"у сре","field-fri-short-relative+0":"у пет","field-wed-short-relative+1":"следеће сре","field-fri-short-relative+1":"следећег пет","field-weekOfMonth-short":"нед. у мес.","field-quarter-short-relative+-1":"прошлог квартала","field-year-short-relative+-1":"прошле год.","dateFormatItem-Bhm":"hh:mm B","dayPeriods-format-wide-night1":"ноћу","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"прошлог квартала","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"по подне","dateFormatItem-h":"h a","quarters-standAlone-wide":["први квартал","други квартал","трећи квартал","четврти квартал"],"field-weekOfMonth-narrow":"нед. у мес.","dateFormatItem-y":"y.","field-minute-relative+0":"овог минута","field-year-short-relative+0":"ове год.","dateFormatItem-EBhms":"E hh:mm:ss B","field-year-short-relative+1":"следеће год.","field-weekday":"дан у недељи","dayPeriods-format-narrow-pm":"p","field-tue-narrow-relative+-1":"прошлог уто","dateFormatItem-yMEd":"E, d.M.y.","dayPeriods-standAlone-wide-night1":"ноћ","field-year-narrow-relative+-1":"прошле г.","field-sat-relative+-1":"прошле суботе","dayPeriods-format-abbr-midnight":"поноћ","dayPeriods-format-narrow-morning1":"ујутру","dayPeriods-format-wide-morning1":"ујутро","dayPeriods-standAlone-abbr-midnight":"поноћ","dayPeriods-standAlone-narrow-pm":"по подне","dayPeriods-standAlone-wide-morning1":"јутро","field-mon-narrow-relative+0":"у пон","field-mon-narrow-relative+1":"следећег пон","field-second":"секунд","dateFormatItem-yMMMEd":"E, d. MMM y.","field-year-relative+-1":"прошле године","field-weekdayOfMonth-short":"дан у месецу","dateFormat-short":"d.M.yy.","eraNames":["пре нове ере","нове ере"],"field-second-short":"сек.","field-thu-short-relative+-1":"прошлог чет","field-zone":"временска зона","field-dayperiod-narrow":"пре подне/по подне","field-sun-short-relative+-1":"пр. нед.","dayPeriods-standAlone-narrow-morning1":"јутро","eraAbbr":["п. н. е.","н. е."],"field-week-short":"нед.","dayPeriods-standAlone-abbr-am":"пре подне","dayPeriods-standAlone-wide-pm":"по подне","dateFormatItem-ms":"mm:ss","field-day-relative+0":"данас","field-day-relative+1":"сутра","field-day-relative+2":"прекосутра","field-day-short-relative+0":"данас","field-dayOfYear-short":"дан у год.","field-day-short-relative+1":"сутра","dateFormat-long":"dd. MMMM y.","field-day-short-relative+2":"прекосутра","field-sun-narrow-relative+-1":"пр. нед.","dayPeriods-format-wide-noon":"подне","field-second-relative+0":"сада","field-quarter-relative+-1":"прошлог квартала","dayPeriods-format-narrow-night1":"ноћу","quarters-format-abbr":["К1","К2","К3","К4"],"dayPeriods-standAlone-wide-noon":"подне","dayPeriods-standAlone-narrow-night1":"ноћ","field-week-relative+-1":"прошле недеље","dayPeriods-format-abbr-morning1":"ујутро","field-month-relative+-1":"прошлог месеца","months-format-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-year":"година","field-era":"ера","dayPeriods-standAlone-abbr-morning1":"јутро","days-standAlone-short":["не","по","ут","ср","че","пе","су"],"quarters-format-narrow":["1.","2.","3.","4."],"dateFormatItem-yQQQQ":"QQQQ y.","field-day-short-relative+-1":"јуче","field-day-short-relative+-2":"прекјуче","dateFormatItem-GyMMM":"MMM y. G","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"hh:mm:ss B","field-hour":"сат","field-dayOfYear-narrow":"дан у год.","field-quarter":"квартал","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","dateFormatItem-MMdd":"dd.MM.","field-day":"дан","field-mon-relative+-1":"прошлог понедељка","field-dayOfYear":"дан у години","dateFormat-medium":"dd.MM.y.","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"MMM y.","dateFormatItem-GyMMMd":"d. MMM y. G","dateFormatItem-MEd":"E, d.M.","field-tue-short-relative+-1":"прошлог уто","field-year-short":"год.","field-month-short":"мес.","dateFormatItem-MMMEd":"E d. MMM","dayPeriods-format-wide-afternoon1":"по подне","dateFormatItem-MMMd":"d. MMM","dateFormatItem-Bh":"h B","months-format-abbr":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],"dayPeriods-format-abbr-am":"пре подне","field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","dayPeriods-format-wide-pm":"по подне","days-standAlone-abbr":["нед","пон","уто","сре","чет","пет","суб"],"field-zone-short":"временска зона","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","dayPeriods-standAlone-wide-afternoon1":"поподне","field-fri-short-relative+-1":"прошлог пет","field-month-narrow":"м.","dayPeriods-format-narrow-am":"a","field-month-narrow-relative+-1":"прошлог м.","days-format-abbr":["нед","пон","уто","сре","чет","пет","суб"],"field-weekday-short":"дан у недељи","field-day-narrow-relative+-1":"јуче","field-day-narrow-relative+-2":"прекјуче","field-quarter-short":"кв.","days-format-short":["не","по","ут","ср","че","пе","су"],"months-standAlone-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"days-format-narrow":["н","п","у","с","ч","п","с"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"кв.","field-mon-short-relative+0":"у пон","field-mon-short-relative+1":"следећег пон","field-dayperiod-short":"пре подне/по подне","dayPeriods-standAlone-narrow-am":"пре подне","field-week-narrow-relative+-1":"прошле н.","field-thu-relative+-1":"прошлог четвртка","field-fri-narrow-relative+-1":"прошлог пет","field-mon-short-relative+-1":"прошлог пон","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","dateFormatItem-Ed":"E d.","field-wed-relative+-1":"прошле среде","field-weekOfMonth":"недеља у месецу","field-weekdayOfMonth-narrow":"дан у месецу","dayPeriods-standAlone-wide-am":"пре подне","dateFormatItem-yQQQ":"QQQ y.","field-fri-relative+-1":"прошлог петка","field-minute":"минут","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["први квартал","други квартал","трећи квартал","четврти квартал"],"field-day-short":"д.","field-dayperiod":"пре подне/по подне","field-hour-short":"ч.","months-standAlone-abbr":["јан","феб","мар","апр","мај","јун","јул","авг","сеп","окт","нов","дец"],"field-month-relative+0":"овог месеца","field-second-narrow":"с.","field-month-relative+1":"следећег месеца","dateFormat-full":"EEEE, dd. MMMM y.","field-era-narrow":"ера","field-sat-short-relative+-1":"прошле суб","dayPeriods-format-narrow-noon":"подне","field-week-short-relative+-1":"прошле нед.","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"M.y.","field-sun-relative+-1":"прошле недеље","field-wed-short-relative+-1":"прошле сре","field-weekdayOfMonth":"дан у месецу","field-quarter-narrow-relative+0":"овог квартала","dateFormatItem-GyMMMEd":"E, d. MMM y. G","field-quarter-narrow-relative+1":"следећег квартала","field-sat-short-relative+0":"у суб","field-hour-narrow":"ч.","field-sat-short-relative+1":"следеће суб","field-year-narrow-relative+0":"ове г.","field-year-narrow-relative+1":"следеће г.","dateFormatItem-Gy":"y. G","field-zone-narrow":"временска зона","dayPeriods-standAlone-narrow-noon":"подне","field-tue-relative+-1":"прошлог уторка","field-minute-short":"мин.","dateFormatItem-yw":"w. 'седмица' 'у' Y.","dateFormatItem-MMMdd":"dd.MMM","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље","dateFormatItem-MMM":"LLL","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","dateFormatItem-yMMdd":"dd.MM.y.","field-sat-narrow-relative+-1":"прошле суб","quarters-standAlone-abbr":["К1","К2","К3","К4"],"dateFormatItem-MMMMW":"W. 'седмица' 'у' MMMM.","field-month-short-relative+-1":"прошлог мес.","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d. MMMM","field-week":"недеља","field-day-narrow":"д."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/hebrew.js b/lib/dojo/cldr/nls/sr/hebrew.js
index 34032558b..bb0e4f7a0 100644
--- a/lib/dojo/cldr/nls/sr/hebrew.js
+++ b/lib/dojo/cldr/nls/sr/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/hebrew",{"days-standAlone-short":["не","по","ут","ср","че","пе","су"],"field-second-relative+0":"сада","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"дан у недељи","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E d. MMM","field-tue-relative+-1":"прошлог уторка","days-format-short":["нед","пон","уто","сре","чет","пет","суб"],"dateFormat-long":"dd. MMMM y. G","field-fri-relative+-1":"прошлог петка","field-wed-relative+-1":"прошле среде","months-format-wide":["Тишри","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ијар","Сиван","Тамуз","Ав","Елул"],"dateFormatItem-yyyyQQQ":"QQQ, y. G","dayPeriods-format-wide-pm":"по подне","dateFormat-full":"EEEE, dd. MMMM y. G","dateFormatItem-yyyyMEd":"E, d.M.y. G","field-thu-relative+-1":"прошлог четвртка","dateFormatItem-Md":"d/M","field-era":"ера","months-standAlone-wide":["Тишри","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ијар","Сиван","Тамуз","Ав","Елул"],"timeFormat-short":"HH.mm","quarters-format-wide":["Прво тромесечје","Друго тромесечје","Треће тромесечје","Четврто тромесечје"],"timeFormat-long":"HH.mm.ss z","field-year":"година","field-hour":"сат","months-format-abbr":["Тишри","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ијар","Сиван","Тамуз","Ав","Елул"],"field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"данас","field-thu-relative+0":"у четвртак","field-day-relative+1":"сутра","field-thu-relative+1":"следећег четвртка","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"прекосутра","months-standAlone-abbr":["Тишри","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ијар","Сиван","Тамуз","Ав","Елул"],"quarters-format-abbr":["К1","К2","К3","К4"],"quarters-standAlone-wide":["Прво тромесечје","Друго тромесечје","Треће тромесечје","Четврто тромесечје"],"dateFormatItem-Gy":"y. G","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","days-standAlone-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dateFormatItem-yyyyMMM":"MMM y. G","dateFormatItem-yyyyMMMd":"d. MMM y. G","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"у недељу","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"следеће недеље","quarters-standAlone-abbr":["К1","К2","К3","К4"],"field-minute":"минут","field-dayperiod":"пре подне/по подне","days-standAlone-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"јуче","dateFormatItem-h":"hh a","field-day-relative+-2":"прекјуче","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, M-d","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","field-day":"дан","days-format-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"field-zone":"временска зона","dateFormatItem-y":"y. G","field-year-relative+-1":"прошле године","field-month-relative+-1":"прошлог месеца","dateFormatItem-hm":"hh.mm a","days-format-abbr":["нед","пон","уто","сре","чет","пет","суб"],"days-format-narrow":["н","п","у","с","ч","п","с"],"dateFormatItem-yyyyMd":"d.M.y. G","field-month":"месец","days-standAlone-narrow":["н","п","у","с","ч","п","с"],"field-tue-relative+0":"у уторак","field-tue-relative+1":"следећег уторка","dayPeriods-format-wide-am":"пре подне","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","dateFormat-short":"d.M.y. GGGGG","field-second":"секунд","field-sat-relative+-1":"прошле суботе","field-sun-relative+-1":"прошле недеље","field-month-relative+0":"овог месеца","field-month-relative+1":"следећег месеца","dateFormatItem-Ed":"E d.","field-week":"недеља","dateFormat-medium":"dd.MM.y. G","field-year-relative+0":"ове године","field-week-relative+-1":"прошле недеље","dateFormatItem-yyyyM":"M.y. G","field-year-relative+1":"следеће године","dateFormatItem-yyyyQQQQ":"QQQQ y. G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"hh.mm.ss a","months-format-wide-leap":"Адар II","dateFormatItem-GyMMM":"MMM y. G","field-mon-relative+-1":"прошлог понедељка","dateFormatItem-yyyy":"y. G","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/hebrew",{"field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","field-tue-relative+-1":"прошлог уторка","field-year":"година","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-minute":"минут","field-month-narrow-relative+-1":"прошлог м.","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","field-thu-short-relative+0":"у чет","field-day-short-relative+-1":"јуче","field-thu-short-relative+1":"следећег чет","field-day-relative+0":"данас","field-day-short-relative+-2":"прекјуче","field-day-relative+1":"сутра","field-week-narrow-relative+0":"ове н.","field-day-relative+2":"прекосутра","field-week-narrow-relative+1":"следеће н.","field-wed-narrow-relative+-1":"прошле сре","dateFormatItem-EBhms":"E hh:mm:ss B","field-year-narrow":"г.","field-era-short":"ера","field-year-narrow-relative+0":"ове г.","field-tue-relative+0":"у уторак","field-year-narrow-relative+1":"следеће г.","field-tue-relative+1":"следећег уторка","field-weekdayOfMonth":"дан у месецу","field-second-short":"сек.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"дан у месецу","dayPeriods-format-abbr-am":"пре подне","field-week-relative+0":"ове недеље","field-month-relative+0":"овог месеца","field-week-relative+1":"следеће недеље","field-month-relative+1":"следећег месеца","field-sun-narrow-relative+0":"у нед","field-mon-short-relative+0":"у пон","field-sun-narrow-relative+1":"сл. нед.","field-mon-short-relative+1":"следећег пон","field-second-relative+0":"сада","dateFormatItem-yyyyQQQ":"QQQ, y. G","field-weekOfMonth":"недеља у месецу","dayPeriods-standAlone-abbr-pm":"по подне","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"d.M.y. GGGGG","field-day":"дан","field-dayOfYear-short":"дан у год.","field-year-relative+-1":"прошле године","dayPeriods-format-wide-am":"пре подне","field-sat-short-relative+-1":"прошле суб","field-hour-relative+0":"овог сата","dateFormatItem-yyyyMEd":"E, d.M.y. GGGGG","field-wed-relative+-1":"прошле среде","field-sat-narrow-relative+-1":"прошле суб","field-second":"секунд","days-standAlone-narrow":["н","п","у","с","ч","п","с"],"dayPeriods-standAlone-wide-pm":"по подне","dateFormatItem-Ehms":"E hh:mm:ss a","dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"данас","field-day-narrow-relative+1":"сутра","field-day-narrow-relative+2":"прекосутра","quarters-standAlone-wide":["први квартал","други квартал","трећи квартал","четврти квартал"],"days-format-narrow":["н","п","у","с","ч","п","с"],"field-tue-short-relative+0":"у уто","field-tue-short-relative+1":"следећег уто","field-month-short-relative+-1":"прошлог мес.","field-mon-relative+-1":"прошлог понедељка","dateFormatItem-GyMMM":"MMM y. G","field-month":"месец","field-day-narrow":"д.","field-minute-short":"мин.","field-dayperiod":"пре подне/по подне","field-sat-short-relative+0":"у суб","field-sat-short-relative+1":"следеће суб","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d.MM.y. G","dateFormatItem-yyyyMMMM":"MMMM y. G","quarters-standAlone-abbr":["К1","К2","К3","К4"],"dayPeriods-format-abbr-pm":"по подне","dateFormatItem-yyyyM":"M.y. GGGGG","field-second-narrow":"с.","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+-1":"јуче","field-year-short":"год.","field-day-narrow-relative+-2":"прекјуче","field-quarter-relative+-1":"прошлог квартала","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"пре подне/по подне","dayPeriods-standAlone-narrow-am":"пре подне","field-week-narrow-relative+-1":"прошле н.","days-format-short":["не","по","ут","ср","че","пе","су"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"по подне","field-dayOfYear":"дан у години","field-sat-relative+-1":"прошле суботе","dateFormatItem-Md":"d.M.","field-hour":"сат","months-format-wide":["Тишри","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ијар","Сиван","Тамуз","Ав","Елул"],"dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"прошлог месеца","field-quarter-short":"кв.","field-sat-narrow-relative+0":"у суб","field-fri-relative+0":"у петак","field-sat-narrow-relative+1":"следеће суб","field-fri-relative+1":"следећег петка","dateFormatItem-EBhm":"E hh:mm B","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","field-sun-short-relative+0":"у нед","field-sun-short-relative+1":"сл. нед.","field-week-relative+-1":"прошле недеље","field-quarter-short-relative+-1":"прошлог квартала","dateFormatItem-Ehm":"E hh:mm a","months-format-abbr":["Тишри","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ијар","Сиван","Тамуз","Ав","Елул"],"field-quarter-relative+0":"овог квартала","field-minute-relative+0":"овог минута","field-quarter-relative+1":"следећег квартала","field-wed-short-relative+-1":"прошле сре","dateFormat-short":"d.M.y. GGGGG","field-thu-short-relative+-1":"прошлог чет","field-year-narrow-relative+-1":"прошле г.","days-standAlone-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"прошлог пон","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"прошлог чет","field-tue-narrow-relative+-1":"прошлог уто","field-weekOfMonth-short":"нед. у мес.","dateFormatItem-yyyy":"y. G","dayPeriods-standAlone-narrow-pm":"по подне","field-wed-short-relative+0":"у сре","months-standAlone-wide":["Тишри","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ијар","Сиван","Тамуз","Ав","Елул"],"field-wed-short-relative+1":"следеће сре","field-sun-relative+-1":"прошле недеље","days-standAlone-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-hm":"hh:mm a","field-weekday":"дан у недељи","field-day-short-relative+0":"данас","field-quarter-narrow-relative+0":"овог квартала","field-sat-relative+0":"у суботу","field-day-short-relative+1":"сутра","field-quarter-narrow-relative+1":"следећег квартала","field-sat-relative+1":"следеће суботе","field-day-short-relative+2":"прекосутра","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","months-standAlone-abbr":["Тишри","Хешван","Кислев","Тевет","Шеват","Адар I","Адар","Нисан","Ијар","Сиван","Тамуз","Ав","Елул"],"months-format-wide-leap":"Адар II","field-dayOfYear-narrow":"дан у год.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","field-weekdayOfMonth-short":"дан у месецу","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"временска зона","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"у чет","field-thu-narrow-relative+1":"следећег чет","field-sun-narrow-relative+-1":"пр. нед.","field-mon-short-relative+-1":"прошлог пон","field-thu-relative+0":"у четвртак","field-thu-relative+1":"следећег четвртка","field-fri-short-relative+-1":"прошлог пет","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"прошлог четвртка","field-week":"недеља","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["први квартал","други квартал","трећи квартал","четврти квартал"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-quarter-narrow-relative+-1":"прошлог квартала","field-year-short-relative+0":"ове год.","field-dayperiod-short":"пре подне/по подне","dateFormatItem-yyyyMMM":"MMM y. G","field-year-short-relative+1":"следеће год.","field-fri-short-relative+0":"у пет","field-fri-short-relative+1":"следећег пет","days-standAlone-short":["не","по","ут","ср","че","пе","су"],"field-week-short-relative+-1":"прошле нед.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"ч.","field-zone-short":"временска зона","quarters-format-abbr":["К1","К2","К3","К4"],"field-month-narrow":"м.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"прошлог пет","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-era-narrow":"ера","field-fri-relative+-1":"прошлог петка","dateFormatItem-Bhms":"hh:mm:ss B","field-tue-short-relative+-1":"прошлог уто","field-minute-narrow":"мин.","days-format-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"field-mon-narrow-relative+0":"у пон","field-mon-narrow-relative+1":"следећег пон","field-year-short-relative+-1":"прошле год.","field-zone":"временска зона","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"нед. у мес.","field-weekday-narrow":"дан у недељи","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"пр. нед.","field-day-relative+-1":"јуче","dayPeriods-standAlone-abbr-am":"пре подне","field-day-relative+-2":"прекјуче","field-weekday-short":"дан у недељи","days-format-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-Bhm":"hh:mm B","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","dateFormatItem-Gy":"y. G","field-day-short":"д.","field-week-narrow":"н.","field-era":"ера","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет","dayPeriods-standAlone-wide-am":"пре подне"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/indian.js b/lib/dojo/cldr/nls/sr/indian.js
index a8307ba84..bf4d9d3cd 100644
--- a/lib/dojo/cldr/nls/sr/indian.js
+++ b/lib/dojo/cldr/nls/sr/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/indian",{"field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","field-dayperiod":"пре подне/по подне","field-sun-relative+-1":"прошле недеље","field-mon-relative+-1":"прошлог понедељка","field-minute":"минут","field-day-relative+-1":"јуче","field-weekday":"дан у недељи","field-day-relative+-2":"прекјуче","field-era":"ера","field-hour":"сат","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","field-wed-relative+-1":"прошле среде","field-day-relative+0":"данас","field-day-relative+1":"сутра","eraAbbr":["САКА"],"field-day-relative+2":"прекосутра","field-tue-relative+0":"у уторак","field-zone":"временска зона","field-tue-relative+1":"следећег уторка","field-week-relative+-1":"прошле недеље","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-sat-relative+-1":"прошле суботе","field-year-relative+-1":"прошле године","field-year":"година","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","field-week":"недеља","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље","field-month-relative+0":"овог месеца","field-month":"месец","field-month-relative+1":"следећег месеца","field-fri-relative+-1":"прошлог петка","field-second":"секунд","field-tue-relative+-1":"прошлог уторка","field-day":"дан","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-thu-relative+0":"у четвртак","field-second-relative+0":"сада","field-thu-relative+1":"следећег четвртка","field-wed-relative+0":"у среду","months-format-wide":["Чаитра","Ваисака","Јиаиста","Асада","Сравана","Бадра","Асвина","Картика","Аргајана","Пауза","Мага","Фалгуна"],"field-wed-relative+1":"следеће среде","field-month-relative+-1":"прошлог месеца","field-thu-relative+-1":"прошлог четвртка"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/indian",{"field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","field-tue-relative+-1":"прошлог уторка","field-year":"година","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-minute":"минут","field-month-narrow-relative+-1":"прошлог м.","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","field-thu-short-relative+0":"у чет","field-day-short-relative+-1":"јуче","field-thu-short-relative+1":"следећег чет","field-day-relative+0":"данас","field-day-short-relative+-2":"прекјуче","field-day-relative+1":"сутра","field-week-narrow-relative+0":"ове н.","field-day-relative+2":"прекосутра","field-week-narrow-relative+1":"следеће н.","field-wed-narrow-relative+-1":"прошле сре","field-year-narrow":"г.","field-era-short":"ера","field-year-narrow-relative+0":"ове г.","field-tue-relative+0":"у уторак","field-year-narrow-relative+1":"следеће г.","field-tue-relative+1":"следећег уторка","field-weekdayOfMonth":"дан у месецу","field-second-short":"сек.","field-weekdayOfMonth-narrow":"дан у месецу","field-week-relative+0":"ове недеље","field-month-relative+0":"овог месеца","field-week-relative+1":"следеће недеље","field-month-relative+1":"следећег месеца","field-sun-narrow-relative+0":"у нед","field-mon-short-relative+0":"у пон","field-sun-narrow-relative+1":"сл. нед.","field-mon-short-relative+1":"следећег пон","field-second-relative+0":"сада","field-weekOfMonth":"недеља у месецу","field-month-short":"мес.","field-day":"дан","field-dayOfYear-short":"дан у год.","field-year-relative+-1":"прошле године","field-sat-short-relative+-1":"прошле суб","field-hour-relative+0":"овог сата","field-wed-relative+-1":"прошле среде","field-sat-narrow-relative+-1":"прошле суб","field-second":"секунд","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"данас","field-day-narrow-relative+1":"сутра","field-day-narrow-relative+2":"прекосутра","field-tue-short-relative+0":"у уто","field-tue-short-relative+1":"следећег уто","field-month-short-relative+-1":"прошлог мес.","field-mon-relative+-1":"прошлог понедељка","field-month":"месец","field-day-narrow":"д.","field-minute-short":"мин.","field-dayperiod":"пре подне/по подне","field-sat-short-relative+0":"у суб","field-sat-short-relative+1":"следеће суб","eraAbbr":["САКА"],"field-second-narrow":"с.","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+-1":"јуче","field-year-short":"год.","field-day-narrow-relative+-2":"прекјуче","field-quarter-relative+-1":"прошлог квартала","field-dayperiod-narrow":"пре подне/по подне","field-week-narrow-relative+-1":"прошле н.","field-dayOfYear":"дан у години","field-sat-relative+-1":"прошле суботе","field-hour":"сат","months-format-wide":["Чаитра","Ваисака","Јиаиста","Асада","Сравана","Бадра","Асвина","Картика","Аргајана","Пауза","Мага","Фалгуна"],"field-month-relative+-1":"прошлог месеца","field-quarter-short":"кв.","field-sat-narrow-relative+0":"у суб","field-fri-relative+0":"у петак","field-sat-narrow-relative+1":"следеће суб","field-fri-relative+1":"следећег петка","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","field-sun-short-relative+0":"у нед","field-sun-short-relative+1":"сл. нед.","field-week-relative+-1":"прошле недеље","field-quarter-short-relative+-1":"прошлог квартала","field-quarter-relative+0":"овог квартала","field-minute-relative+0":"овог минута","field-quarter-relative+1":"следећег квартала","field-wed-short-relative+-1":"прошле сре","field-thu-short-relative+-1":"прошлог чет","field-year-narrow-relative+-1":"прошле г.","field-mon-narrow-relative+-1":"прошлог пон","field-thu-narrow-relative+-1":"прошлог чет","field-tue-narrow-relative+-1":"прошлог уто","field-weekOfMonth-short":"нед. у мес.","field-wed-short-relative+0":"у сре","field-wed-short-relative+1":"следеће сре","field-sun-relative+-1":"прошле недеље","field-weekday":"дан у недељи","field-day-short-relative+0":"данас","field-quarter-narrow-relative+0":"овог квартала","field-sat-relative+0":"у суботу","field-day-short-relative+1":"сутра","field-quarter-narrow-relative+1":"следећег квартала","field-sat-relative+1":"следеће суботе","field-day-short-relative+2":"прекосутра","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","field-dayOfYear-narrow":"дан у год.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","field-weekdayOfMonth-short":"дан у месецу","field-zone-narrow":"временска зона","field-thu-narrow-relative+0":"у чет","field-thu-narrow-relative+1":"следећег чет","field-sun-narrow-relative+-1":"пр. нед.","field-mon-short-relative+-1":"прошлог пон","field-thu-relative+0":"у четвртак","field-thu-relative+1":"следећег четвртка","field-fri-short-relative+-1":"прошлог пет","field-thu-relative+-1":"прошлог четвртка","field-week":"недеља","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-quarter-narrow-relative+-1":"прошлог квартала","field-year-short-relative+0":"ове год.","field-dayperiod-short":"пре подне/по подне","field-year-short-relative+1":"следеће год.","field-fri-short-relative+0":"у пет","field-fri-short-relative+1":"следећег пет","field-week-short-relative+-1":"прошле нед.","field-hour-short":"ч.","field-zone-short":"временска зона","field-month-narrow":"м.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"прошлог пет","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-era-narrow":"ера","field-fri-relative+-1":"прошлог петка","field-tue-short-relative+-1":"прошлог уто","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"у пон","field-mon-narrow-relative+1":"следећег пон","field-year-short-relative+-1":"прошле год.","field-zone":"временска зона","field-weekOfMonth-narrow":"нед. у мес.","field-weekday-narrow":"дан у недељи","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"пр. нед.","field-day-relative+-1":"јуче","field-day-relative+-2":"прекјуче","field-weekday-short":"дан у недељи","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","field-day-short":"д.","field-week-narrow":"н.","field-era":"ера","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/islamic.js b/lib/dojo/cldr/nls/sr/islamic.js
index 886434ed5..7c9335853 100644
--- a/lib/dojo/cldr/nls/sr/islamic.js
+++ b/lib/dojo/cldr/nls/sr/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/islamic",{"days-standAlone-short":["не","по","ут","ср","че","пе","су"],"field-second-relative+0":"сада","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"дан у недељи","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E d. MMM","eraNarrow":["АХ"],"field-tue-relative+-1":"прошлог уторка","days-format-short":["нед","пон","уто","сре","чет","пет","суб"],"dateFormat-long":"dd. MMMM y. G","field-fri-relative+-1":"прошлог петка","field-wed-relative+-1":"прошле среде","months-format-wide":["Мурахам","Сафар","Рабиʻ I","Рабиʻ II","Јумада I","Јумада II","Рађаб","Шаʻбан","Рамадан","Шавал","Дуʻл-Киʻда","Дуʻл-хиђа"],"dateFormatItem-yyyyQQQ":"QQQ, y. G","dayPeriods-format-wide-pm":"по подне","dateFormat-full":"EEEE, dd. MMMM y. G","dateFormatItem-yyyyMEd":"E, d.M.y. G","field-thu-relative+-1":"прошлог четвртка","dateFormatItem-Md":"d/M","field-era":"ера","months-standAlone-wide":["Мурахам","Сафар","Рабиʻ I","Рабиʻ II","Јумада I","Јумада II","Рађаб","Шаʻбан","Рамадан","Шавал","Дуʻл-Киʻда","Дуʻл-хиђа"],"timeFormat-short":"HH.mm","quarters-format-wide":["Прво тромесечје","Друго тромесечје","Треће тромесечје","Четврто тромесечје"],"timeFormat-long":"HH.mm.ss z","field-year":"година","field-hour":"сат","months-format-abbr":["Мурахам","Сафар","Рабиʻ I","Рабиʻ II","Јумада I","Јумада II","Рађаб","Шаʻбан","Рамадан","Шавал","Дуʻл-Киʻда","Дуʻл-хиђа"],"field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"данас","field-thu-relative+0":"у четвртак","field-day-relative+1":"сутра","field-thu-relative+1":"следећег четвртка","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"прекосутра","months-standAlone-abbr":["Мурахам","Сафар","Рабиʻ I","Рабиʻ II","Јумада I","Јумада II","Рађаб","Шаʻбан","Рамадан","Шавал","Дуʻл-Киʻда","Дуʻл-хиђа"],"quarters-format-abbr":["К1","К2","К3","К4"],"quarters-standAlone-wide":["Прво тромесечје","Друго тромесечје","Треће тромесечје","Четврто тромесечје"],"dateFormatItem-Gy":"y. G","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","days-standAlone-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dateFormatItem-yyyyMMM":"MMM y. G","dateFormatItem-yyyyMMMd":"d. MMM y. G","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"у недељу","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"следеће недеље","quarters-standAlone-abbr":["К1","К2","К3","К4"],"eraAbbr":["АХ"],"field-minute":"минут","field-dayperiod":"пре подне/по подне","days-standAlone-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"јуче","dateFormatItem-h":"hh a","field-day-relative+-2":"прекјуче","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, M-d","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","field-day":"дан","days-format-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"field-zone":"временска зона","dateFormatItem-y":"y. G","field-year-relative+-1":"прошле године","field-month-relative+-1":"прошлог месеца","dateFormatItem-hm":"hh.mm a","days-format-abbr":["нед","пон","уто","сре","чет","пет","суб"],"eraNames":["АХ"],"days-format-narrow":["н","п","у","с","ч","п","с"],"dateFormatItem-yyyyMd":"d.M.y. G","field-month":"месец","days-standAlone-narrow":["н","п","у","с","ч","п","с"],"field-tue-relative+0":"у уторак","field-tue-relative+1":"следећег уторка","dayPeriods-format-wide-am":"пре подне","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","dateFormat-short":"d.M.y. GGGGG","field-second":"секунд","field-sat-relative+-1":"прошле суботе","field-sun-relative+-1":"прошле недеље","field-month-relative+0":"овог месеца","field-month-relative+1":"следећег месеца","dateFormatItem-Ed":"E d.","field-week":"недеља","dateFormat-medium":"dd.MM.y. G","field-year-relative+0":"ове године","field-week-relative+-1":"прошле недеље","dateFormatItem-yyyyM":"M.y. G","field-year-relative+1":"следеће године","dateFormatItem-yyyyQQQQ":"QQQQ y. G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"hh.mm.ss a","dateFormatItem-GyMMM":"MMM y. G","field-mon-relative+-1":"прошлог понедељка","dateFormatItem-yyyy":"y. G","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/islamic",{"field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","field-tue-relative+-1":"прошлог уторка","field-year":"година","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-minute":"минут","field-month-narrow-relative+-1":"прошлог м.","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","field-thu-short-relative+0":"у чет","field-day-short-relative+-1":"јуче","field-thu-short-relative+1":"следећег чет","field-day-relative+0":"данас","field-day-short-relative+-2":"прекјуче","field-day-relative+1":"сутра","field-week-narrow-relative+0":"ове н.","field-day-relative+2":"прекосутра","field-week-narrow-relative+1":"следеће н.","field-wed-narrow-relative+-1":"прошле сре","dateFormatItem-EBhms":"E hh:mm:ss B","field-year-narrow":"г.","field-era-short":"ера","field-year-narrow-relative+0":"ове г.","field-tue-relative+0":"у уторак","field-year-narrow-relative+1":"следеће г.","field-tue-relative+1":"следећег уторка","field-weekdayOfMonth":"дан у месецу","field-second-short":"сек.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"дан у месецу","dayPeriods-format-abbr-am":"пре подне","field-week-relative+0":"ове недеље","field-month-relative+0":"овог месеца","field-week-relative+1":"следеће недеље","field-month-relative+1":"следећег месеца","field-sun-narrow-relative+0":"у нед","field-mon-short-relative+0":"у пон","field-sun-narrow-relative+1":"сл. нед.","field-mon-short-relative+1":"следећег пон","field-second-relative+0":"сада","dateFormatItem-yyyyQQQ":"QQQ, y. G","eraNames":["АХ"],"field-weekOfMonth":"недеља у месецу","dayPeriods-standAlone-abbr-pm":"по подне","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"d.M.y. GGGGG","field-day":"дан","field-dayOfYear-short":"дан у год.","field-year-relative+-1":"прошле године","dayPeriods-format-wide-am":"пре подне","field-sat-short-relative+-1":"прошле суб","field-hour-relative+0":"овог сата","dateFormatItem-yyyyMEd":"E, d.M.y. GGGGG","field-wed-relative+-1":"прошле среде","field-sat-narrow-relative+-1":"прошле суб","field-second":"секунд","days-standAlone-narrow":["н","п","у","с","ч","п","с"],"dayPeriods-standAlone-wide-pm":"по подне","dateFormatItem-Ehms":"E hh:mm:ss a","dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"данас","field-day-narrow-relative+1":"сутра","field-day-narrow-relative+2":"прекосутра","quarters-standAlone-wide":["први квартал","други квартал","трећи квартал","четврти квартал"],"days-format-narrow":["н","п","у","с","ч","п","с"],"field-tue-short-relative+0":"у уто","field-tue-short-relative+1":"следећег уто","field-month-short-relative+-1":"прошлог мес.","field-mon-relative+-1":"прошлог понедељка","dateFormatItem-GyMMM":"MMM y. G","field-month":"месец","field-day-narrow":"д.","field-minute-short":"мин.","field-dayperiod":"пре подне/по подне","field-sat-short-relative+0":"у суб","field-sat-short-relative+1":"следеће суб","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d.MM.y. G","dateFormatItem-yyyyMMMM":"MMMM y. G","eraAbbr":["АХ"],"quarters-standAlone-abbr":["К1","К2","К3","К4"],"dayPeriods-format-abbr-pm":"по подне","dateFormatItem-yyyyM":"M.y. GGGGG","field-second-narrow":"с.","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+-1":"јуче","field-year-short":"год.","field-day-narrow-relative+-2":"прекјуче","field-quarter-relative+-1":"прошлог квартала","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"пре подне/по подне","dayPeriods-standAlone-narrow-am":"пре подне","field-week-narrow-relative+-1":"прошле н.","days-format-short":["не","по","ут","ср","че","пе","су"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"по подне","field-dayOfYear":"дан у години","field-sat-relative+-1":"прошле суботе","dateFormatItem-Md":"d.M.","field-hour":"сат","months-format-wide":["Мурахам","Сафар","Рабиʻ I","Рабиʻ II","Јумада I","Јумада II","Рађаб","Шаʻбан","Рамадан","Шавал","Дуʻл-Киʻда","Дуʻл-хиђа"],"dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"прошлог месеца","field-quarter-short":"кв.","field-sat-narrow-relative+0":"у суб","field-fri-relative+0":"у петак","field-sat-narrow-relative+1":"следеће суб","field-fri-relative+1":"следећег петка","dateFormatItem-EBhm":"E hh:mm B","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","field-sun-short-relative+0":"у нед","field-sun-short-relative+1":"сл. нед.","field-week-relative+-1":"прошле недеље","field-quarter-short-relative+-1":"прошлог квартала","dateFormatItem-Ehm":"E hh:mm a","months-format-abbr":["Мурахам","Сафар","Рабиʻ I","Рабиʻ II","Јумада I","Јумада II","Рађаб","Шаʻбан","Рамадан","Шавал","Дуʻл-Киʻда","Дуʻл-хиђа"],"field-quarter-relative+0":"овог квартала","field-minute-relative+0":"овог минута","field-quarter-relative+1":"следећег квартала","field-wed-short-relative+-1":"прошле сре","dateFormat-short":"d.M.y. GGGGG","field-thu-short-relative+-1":"прошлог чет","field-year-narrow-relative+-1":"прошле г.","days-standAlone-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"прошлог пон","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"прошлог чет","field-tue-narrow-relative+-1":"прошлог уто","field-weekOfMonth-short":"нед. у мес.","dateFormatItem-yyyy":"y. G","dayPeriods-standAlone-narrow-pm":"по подне","field-wed-short-relative+0":"у сре","months-standAlone-wide":["Мурахам","Сафар","Рабиʻ I","Рабиʻ II","Јумада I","Јумада II","Рађаб","Шаʻбан","Рамадан","Шавал","Дуʻл-Киʻда","Дуʻл-хиђа"],"field-wed-short-relative+1":"следеће сре","field-sun-relative+-1":"прошле недеље","days-standAlone-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-hm":"hh:mm a","field-weekday":"дан у недељи","field-day-short-relative+0":"данас","field-quarter-narrow-relative+0":"овог квартала","field-sat-relative+0":"у суботу","field-day-short-relative+1":"сутра","field-quarter-narrow-relative+1":"следећег квартала","field-sat-relative+1":"следеће суботе","field-day-short-relative+2":"прекосутра","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","months-standAlone-abbr":["Мурахам","Сафар","Рабиʻ I","Рабиʻ II","Јумада I","Јумада II","Рађаб","Шаʻбан","Рамадан","Шавал","Дуʻл-Киʻда","Дуʻл-хиђа"],"field-dayOfYear-narrow":"дан у год.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","field-weekdayOfMonth-short":"дан у месецу","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"временска зона","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"у чет","field-thu-narrow-relative+1":"следећег чет","field-sun-narrow-relative+-1":"пр. нед.","field-mon-short-relative+-1":"прошлог пон","field-thu-relative+0":"у четвртак","field-thu-relative+1":"следећег четвртка","field-fri-short-relative+-1":"прошлог пет","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"прошлог четвртка","field-week":"недеља","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["први квартал","други квартал","трећи квартал","четврти квартал"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-quarter-narrow-relative+-1":"прошлог квартала","field-year-short-relative+0":"ове год.","field-dayperiod-short":"пре подне/по подне","dateFormatItem-yyyyMMM":"MMM y. G","field-year-short-relative+1":"следеће год.","field-fri-short-relative+0":"у пет","field-fri-short-relative+1":"следећег пет","days-standAlone-short":["не","по","ут","ср","че","пе","су"],"field-week-short-relative+-1":"прошле нед.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"ч.","field-zone-short":"временска зона","quarters-format-abbr":["К1","К2","К3","К4"],"field-month-narrow":"м.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"прошлог пет","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-era-narrow":"ера","field-fri-relative+-1":"прошлог петка","eraNarrow":["АХ"],"dateFormatItem-Bhms":"hh:mm:ss B","field-tue-short-relative+-1":"прошлог уто","field-minute-narrow":"мин.","days-format-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"field-mon-narrow-relative+0":"у пон","field-mon-narrow-relative+1":"следећег пон","field-year-short-relative+-1":"прошле год.","field-zone":"временска зона","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"нед. у мес.","field-weekday-narrow":"дан у недељи","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"пр. нед.","field-day-relative+-1":"јуче","dayPeriods-standAlone-abbr-am":"пре подне","field-day-relative+-2":"прекјуче","field-weekday-short":"дан у недељи","days-format-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-Bhm":"hh:mm B","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","dateFormatItem-Gy":"y. G","field-day-short":"д.","field-week-narrow":"н.","field-era":"ера","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет","dayPeriods-standAlone-wide-am":"пре подне"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/japanese.js b/lib/dojo/cldr/nls/sr/japanese.js
index d0a571947..ba2338168 100644
--- a/lib/dojo/cldr/nls/sr/japanese.js
+++ b/lib/dojo/cldr/nls/sr/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/japanese",{"field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","field-dayperiod":"пре подне/по подне","field-sun-relative+-1":"прошле недеље","field-mon-relative+-1":"прошлог понедељка","field-minute":"минут","field-day-relative+-1":"јуче","field-weekday":"дан у недељи","field-day-relative+-2":"прекјуче","field-era":"ера","field-hour":"сат","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","field-wed-relative+-1":"прошле среде","field-day-relative+0":"данас","field-day-relative+1":"сутра","eraAbbr":["Таика (645-650)","Хакучи (650-671)","Хакухо (672-686)","Шучо (686-701)","Таихо (701-704)","Кеиун (704-708)","Вадо (708-715)","Реики (715-717)","Јоро (717-724)","Јинки (724-729)","Темпио (729-749)","Темпио-кампо (749-749)","Темпио-шохо (749-757)","Темпио-хођи (757-765)","Темпо-ђинго (765-767)","Ђинго-кеиун (767-770)","Хоки (770-780)","Тен-о (781-782)","Енрјаку (782-806)","Даидо (806-810)","Конин (810-824)","Тенчо (824-834)","Шова (834-848)","Кајо (848-851)","Нињу (851-854)","Саико (854-857)","Тенан (857-859)","Јоган (859-877)","Генкеи (877-885)","Ниња (885-889)","Кампјо (889-898)","Шотаи (898-901)","Енђи (901-923)","Енчо (923-931)","Шохеи (931-938)","Тенгјо (938-947)","Тенриаку (947-957)","Тентоку (957-961)","Ова (961-964)","Кохо (964-968)","Ана (968-970)","Тенроку (970-973)","Тен-ен (973-976)","Јоген (976-978)","Тенген (978-983)","Еикан (983-985)","Кана (985-987)","Еи-ен (987-989)","Еисо (989-990)","Шорјаку (990-995)","Чотоку (995-999)","Чохо (999-1004)","Канко (1004-1012)","Чова (1012-1017)","Канин (1017-1021)","Ђиан (1021-1024)","Мању (1024-1028)","Чоген (1028-1037)","Чорјаку (1037-1040)","Чокју (1040-1044)","Кантоку (1044-1046)","Еишо (1046-1053)","Тенђи (1053-1058)","Кохеи (1058-1065)","Ђирјаку (1065-1069)","Енкју (1069-1074)","Шохо (1074-1077)","Шорјаку (1077-1081)","Еишо (1081-1084)","Отоку (1084-1087)","Канђи (1087-1094)","Кахо (1094-1096)","Еичо (1096-1097)","Шотоку (1097-1099)","Кова (1099-1104)","Чођи (1104-1106)","Кашо (1106-1108)","Тенин (1108-1110)","Тен-еи (1110-1113)","Еикју (1113-1118)","Ђен-еи (1118-1120)","Хоан (1120-1124)","Тенђи (1124-1126)","Даиђи (1126-1131)","Теншо (1131-1132)","Чошао (1132-1135)","Хоен (1135-1141)","Еиђи (1141-1142)","Кођи (1142-1144)","Тењо (1144-1145)","Кјуан (1145-1151)","Нинпеи (1151-1154)","Кјују (1154-1156)","Хоген (1156-1159)","Хеиђи (1159-1160)","Еирјаку (1160-1161)","Охо (1161-1163)","Чокан (1163-1165)","Еиман (1165-1166)","Нин-ан (1166-1169)","Као (1169-1171)","Шоан (1171-1175)","Анген (1175-1177)","Ђишо (1177-1181)","Јова (1181-1182)","Ђуеи (1182-1184)","Генрјуку (1184-1185)","Бунђи (1185-1190)","Кенкју (1190-1199)","Шођи (1199-1201)","Кенин (1201-1204)","Генкју (1204-1206)","Кен-еи (1206-1207)","Шоген (1207-1211)","Кенрјаку (1211-1213)","Кенпо (1213-1219)","Шокју (1219-1222)","Ђу (1222-1224)","Ђенин (1224-1225)","Кароку (1225-1227)","Антеи (1227-1229)","Канки (1229-1232)","Ђоеи (1232-1233)","Темпуку (1233-1234)","Бунрјаку (1234-1235)","Катеи (1235-1238)","Рјакунин (1238-1239)","Ен-о (1239-1240)","Нињи (1240-1243)","Канген (1243-1247)","Хођи (1247-1249)","Кенчо (1249-1256)","Коген (1256-1257)","Шока (1257-1259)","Шоген (1259-1260)","Бун-о (1260-1261)","Кочо (1261-1264)","Бун-еи (1264-1275)","Кенђи (1275-1278)","Коан (1278-1288)","Шу (1288-1293)","Еинин (1293-1299)","Шоан (1299-1302)","Кенген (1302-1303)","Каген (1303-1306)","Токуђи (1306-1308)","Енкеи (1308-1311)","Очо (1311-1312)","Шова (1312-1317)","Бунпо (1317-1319)","Ђено (1319-1321)","Ђенкјо (1321-1324)","Шочу (1324-1326)","Кареки (1326-1329)","Гентоку (1329-1331)","Генко (1331-1334)","Кему (1334-1336)","Енген (1336-1340)","Кококу (1340-1346)","Шохеи (1346-1370)","Кентоку (1370-1372)","Бучу (1372-1375)","Тењу (1375-1379)","Корјаку (1379-1381)","Кова (1381-1384)","Генчу (1384-1392)","Меитоку (1384-1387)","Какеи (1387-1389)","Ку (1389-1390)","Меитоку (1390-1394)","Оеи (1394-1428)","Шочо (1428-1429)","Еикјо (1429-1441)","Какитсу (1441-1444)","Бун-ан (1444-1449)","Хотоку (1449-1452)","Кјотоку (1452-1455)","Кошо (1455-1457)","Чороку (1457-1460)","Каншо (1460-1466)","Буншо (1466-1467)","Онин (1467-1469)","Бунмеи (1469-1487)","Чокјо (1487-1489)","Ентоку (1489-1492)","Меио (1492-1501)","Бунки (1501-1504)","Еишо (1504-1521)","Таиеи (1521-1528)","Кјороку (1528-1532)","Тенмон (1532-1555)","Кођи (1555-1558)","Еироку (1558-1570)","Генки (1570-1573)","Теншо (1573-1592)","Бунроку (1592-1596)","Кеичо (1596-1615)","Генва (1615-1624)","Кан-еи (1624-1644)","Шохо (1644-1648)","Кеиан (1648-1652)","Шу (1652-1655)","Меирјаку (1655-1658)","Мањи (1658-1661)","Канбун (1661-1673)","Енпо (1673-1681)","Тенва (1681-1684)","Јокјо (1684-1688)","Генроку (1688-1704)","Хоеи (1704-1711)","Шотоку (1711-1716)","Кјохо (1716-1736)","Генбун (1736-1741)","Канпо (1741-1744)","Енкјо (1744-1748)","Кан-ен (1748-1751)","Хорјаку (1751-1764)","Меива (1764-1772)","Ан-еи (1772-1781)","Тенмеи (1781-1789)","Кансеи (1789-1801)","Кјова (1801-1804)","Бунка (1804-1818)","Бунсеи (1818-1830)","Тенпо (1830-1844)","Кока (1844-1848)","Каеи (1848-1854)","Ансеи (1854-1860)","Ман-ен (1860-1861)","Бункју (1861-1864)","Генђи (1864-1865)","Кеико (1865-1868)","Меиђи","Таишо","Шова","Хаисеи"],"field-day-relative+2":"прекосутра","dateFormat-long":"MMMM d, y G","field-tue-relative+0":"у уторак","field-zone":"временска зона","field-tue-relative+1":"следећег уторка","field-week-relative+-1":"прошле недеље","dateFormat-medium":"MMM d, y G","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-sat-relative+-1":"прошле суботе","field-year-relative+-1":"прошле године","field-year":"година","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","field-week":"недеља","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље","field-month-relative+0":"овог месеца","field-month":"месец","field-month-relative+1":"следећег месеца","field-fri-relative+-1":"прошлог петка","field-second":"секунд","field-tue-relative+-1":"прошлог уторка","field-day":"дан","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-thu-relative+0":"у четвртак","field-second-relative+0":"сада","dateFormat-short":"M/d/yy G","field-thu-relative+1":"следећег четвртка","dateFormat-full":"EEEE, MMMM d, y G","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-month-relative+-1":"прошлог месеца","field-thu-relative+-1":"прошлог четвртка"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/japanese",{"field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","field-tue-relative+-1":"прошлог уторка","field-year":"година","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-minute":"минут","field-month-narrow-relative+-1":"прошлог м.","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","field-thu-short-relative+0":"у чет","field-day-short-relative+-1":"јуче","field-thu-short-relative+1":"следећег чет","field-day-relative+0":"данас","field-day-short-relative+-2":"прекјуче","field-day-relative+1":"сутра","field-week-narrow-relative+0":"ове н.","field-day-relative+2":"прекосутра","field-week-narrow-relative+1":"следеће н.","field-wed-narrow-relative+-1":"прошле сре","field-year-narrow":"г.","field-era-short":"ера","field-year-narrow-relative+0":"ове г.","field-tue-relative+0":"у уторак","field-year-narrow-relative+1":"следеће г.","field-tue-relative+1":"следећег уторка","field-weekdayOfMonth":"дан у месецу","field-second-short":"сек.","field-weekdayOfMonth-narrow":"дан у месецу","field-week-relative+0":"ове недеље","field-month-relative+0":"овог месеца","field-week-relative+1":"следеће недеље","field-month-relative+1":"следећег месеца","field-sun-narrow-relative+0":"у нед","field-mon-short-relative+0":"у пон","field-sun-narrow-relative+1":"сл. нед.","field-mon-short-relative+1":"следећег пон","field-second-relative+0":"сада","field-weekOfMonth":"недеља у месецу","field-month-short":"мес.","field-day":"дан","field-dayOfYear-short":"дан у год.","field-year-relative+-1":"прошле године","field-sat-short-relative+-1":"прошле суб","field-hour-relative+0":"овог сата","field-wed-relative+-1":"прошле среде","field-sat-narrow-relative+-1":"прошле суб","field-second":"секунд","dateFormat-long":"MMMM d, y G","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"данас","field-day-narrow-relative+1":"сутра","field-day-narrow-relative+2":"прекосутра","field-tue-short-relative+0":"у уто","field-tue-short-relative+1":"следећег уто","field-month-short-relative+-1":"прошлог мес.","field-mon-relative+-1":"прошлог понедељка","field-month":"месец","field-day-narrow":"д.","field-minute-short":"мин.","field-dayperiod":"пре подне/по подне","field-sat-short-relative+0":"у суб","field-sat-short-relative+1":"следеће суб","dateFormat-medium":"MMM d, y G","eraAbbr":["Таика (645–650)","Хакучи (650–671)","Хакухо (672–686)","Шучо (686–701)","Таихо (701–704)","Кеиун (704–708)","Вадо (708–715)","Реики (715–717)","Јоро (717–724)","Јинки (724–729)","Темпио (729–749)","Темпио-кампо (749-749)","Темпио-шохо (749-757)","Темпио-хођи (757-765)","Темпо-ђинго (765-767)","Ђинго-кеиун (767-770)","Хоки (770–780)","Тен-о (781-782)","Енрјаку (782–806)","Даидо (806–810)","Конин (810–824)","Тенчо (824–834)","Шова (834–848)","Кајо (848–851)","Нињу (851–854)","Саико (854–857)","Тенан (857–859)","Јоган (859–877)","Генкеи (877–885)","Ниња (885–889)","Кампјо (889–898)","Шотаи (898–901)","Енђи (901–923)","Енчо (923–931)","Шохеи (931–938)","Тенгјо (938–947)","Тенриаку (947–957)","Тентоку (957–961)","Ова (961–964)","Кохо (964–968)","Ана (968–970)","Тенроку (970–973)","Тен-ен (973-976)","Јоген (976–978)","Тенген (978–983)","Еикан (983–985)","Кана (985–987)","Еи-ен (987-989)","Еисо (989–990)","Шорјаку (990–995)","Чотоку (995–999)","Чохо (999–1004)","Канко (1004–1012)","Чова (1012–1017)","Канин (1017–1021)","Ђиан (1021–1024)","Мању (1024–1028)","Чоген (1028–1037)","Чорјаку (1037–1040)","Чокју (1040–1044)","Кантоку (1044–1046)","Еишо (1046–1053)","Тенђи (1053–1058)","Кохеи (1058–1065)","Ђирјаку (1065–1069)","Енкју (1069–1074)","Шохо (1074–1077)","Шорјаку (1077–1081)","Еишо (1081–1084)","Отоку (1084–1087)","Канђи (1087–1094)","Кахо (1094–1096)","Еичо (1096–1097)","Шотоку (1097–1099)","Кова (1099–1104)","Чођи (1104–1106)","Кашо (1106–1108)","Тенин (1108–1110)","Тен-еи (1110-1113)","Еикју (1113–1118)","Ђен-еи (1118-1120)","Хоан (1120–1124)","Тенђи (1124–1126)","Даиђи (1126–1131)","Теншо (1131–1132)","Чошао (1132–1135)","Хоен (1135–1141)","Еиђи (1141–1142)","Кођи (1142–1144)","Тењо (1144–1145)","Кјуан (1145–1151)","Нинпеи (1151–1154)","Кјују (1154–1156)","Хоген (1156–1159)","Хеиђи (1159–1160)","Еирјаку (1160–1161)","Охо (1161–1163)","Чокан (1163–1165)","Еиман (1165–1166)","Нин-ан (1166-1169)","Као (1169–1171)","Шоан (1171–1175)","Анген (1175–1177)","Ђишо (1177–1181)","Јова (1181–1182)","Ђуеи (1182–1184)","Генрјуку (1184–1185)","Бунђи (1185–1190)","Кенкју (1190–1199)","Шођи (1199–1201)","Кенин (1201–1204)","Генкју (1204–1206)","Кен-еи (1206-1207)","Шоген (1207–1211)","Кенрјаку (1211–1213)","Кенпо (1213–1219)","Шокју (1219–1222)","Ђу (1222–1224)","Ђенин (1224–1225)","Кароку (1225–1227)","Антеи (1227–1229)","Канки (1229–1232)","Ђоеи (1232–1233)","Темпуку (1233–1234)","Бунрјаку (1234–1235)","Катеи (1235–1238)","Рјакунин (1238–1239)","Ен-о (1239-1240)","Нињи (1240–1243)","Канген (1243–1247)","Хођи (1247–1249)","Кенчо (1249–1256)","Коген (1256–1257)","Шока (1257–1259)","Шоген (1259–1260)","Бун-о (1260-1261)","Кочо (1261–1264)","Бун-еи (1264-1275)","Кенђи (1275–1278)","Коан (1278–1288)","Шу (1288–1293)","Еинин (1293–1299)","Шоан (1299–1302)","Кенген (1302–1303)","Каген (1303–1306)","Токуђи (1306–1308)","Енкеи (1308–1311)","Очо (1311–1312)","Шова (1312–1317)","Бунпо (1317–1319)","Ђено (1319–1321)","Ђенкјо (1321–1324)","Шочу (1324–1326)","Кареки (1326–1329)","Гентоку (1329–1331)","Генко (1331–1334)","Кему (1334–1336)","Енген (1336–1340)","Кококу (1340–1346)","Шохеи (1346–1370)","Кентоку (1370–1372)","Бучу (1372–1375)","Тењу (1375–1379)","Корјаку (1379–1381)","Кова (1381–1384)","Генчу (1384–1392)","Меитоку (1384–1387)","Какеи (1387–1389)","Ку (1389–1390)","Меитоку (1390–1394)","Оеи (1394–1428)","Шочо (1428–1429)","Еикјо (1429–1441)","Какитсу (1441–1444)","Бун-ан (1444-1449)","Хотоку (1449–1452)","Кјотоку (1452–1455)","Кошо (1455–1457)","Чороку (1457–1460)","Каншо (1460–1466)","Буншо (1466–1467)","Онин (1467–1469)","Бунмеи (1469–1487)","Чокјо (1487–1489)","Ентоку (1489–1492)","Меио (1492–1501)","Бунки (1501–1504)","Еишо (1504–1521)","Таиеи (1521–1528)","Кјороку (1528–1532)","Тенмон (1532–1555)","Кођи (1555–1558)","Еироку (1558–1570)","Генки (1570–1573)","Теншо (1573–1592)","Бунроку (1592–1596)","Кеичо (1596–1615)","Генва (1615–1624)","Кан-еи (1624-1644)","Шохо (1644–1648)","Кеиан (1648–1652)","Шу (1652–1655)","Меирјаку (1655–1658)","Мањи (1658–1661)","Канбун (1661–1673)","Енпо (1673–1681)","Тенва (1681–1684)","Јокјо (1684–1688)","Генроку (1688–1704)","Хоеи (1704–1711)","Шотоку (1711–1716)","Кјохо (1716–1736)","Генбун (1736–1741)","Канпо (1741–1744)","Енкјо (1744–1748)","Кан-ен (1748-1751)","Хорјаку (1751–1764)","Меива (1764–1772)","Ан-еи (1772-1781)","Тенмеи (1781–1789)","Кансеи (1789–1801)","Кјова (1801–1804)","Бунка (1804–1818)","Бунсеи (1818–1830)","Тенпо (1830–1844)","Кока (1844–1848)","Каеи (1848–1854)","Ансеи (1854–1860)","Ман-ен (1860-1861)","Бункју (1861–1864)","Генђи (1864–1865)","Кеико (1865–1868)","Меиђи","Таишо","Шова","Хаисеи","Реива"],"field-second-narrow":"с.","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+-1":"јуче","field-year-short":"год.","field-day-narrow-relative+-2":"прекјуче","field-quarter-relative+-1":"прошлог квартала","field-dayperiod-narrow":"пре подне/по подне","field-week-narrow-relative+-1":"прошле н.","field-dayOfYear":"дан у години","field-sat-relative+-1":"прошле суботе","field-hour":"сат","dateFormat-full":"EEEE, MMMM d, y G","field-month-relative+-1":"прошлог месеца","field-quarter-short":"кв.","field-sat-narrow-relative+0":"у суб","field-fri-relative+0":"у петак","field-sat-narrow-relative+1":"следеће суб","field-fri-relative+1":"следећег петка","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","field-sun-short-relative+0":"у нед","field-sun-short-relative+1":"сл. нед.","field-week-relative+-1":"прошле недеље","field-quarter-short-relative+-1":"прошлог квартала","field-quarter-relative+0":"овог квартала","field-minute-relative+0":"овог минута","field-quarter-relative+1":"следећег квартала","field-wed-short-relative+-1":"прошле сре","dateFormat-short":"M/d/yy G","field-thu-short-relative+-1":"прошлог чет","field-year-narrow-relative+-1":"прошле г.","field-mon-narrow-relative+-1":"прошлог пон","field-thu-narrow-relative+-1":"прошлог чет","field-tue-narrow-relative+-1":"прошлог уто","field-weekOfMonth-short":"нед. у мес.","field-wed-short-relative+0":"у сре","field-wed-short-relative+1":"следеће сре","field-sun-relative+-1":"прошле недеље","field-weekday":"дан у недељи","field-day-short-relative+0":"данас","field-quarter-narrow-relative+0":"овог квартала","field-sat-relative+0":"у суботу","field-day-short-relative+1":"сутра","field-quarter-narrow-relative+1":"следећег квартала","field-sat-relative+1":"следеће суботе","field-day-short-relative+2":"прекосутра","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","field-dayOfYear-narrow":"дан у год.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","field-weekdayOfMonth-short":"дан у месецу","field-zone-narrow":"временска зона","field-thu-narrow-relative+0":"у чет","field-thu-narrow-relative+1":"следећег чет","field-sun-narrow-relative+-1":"пр. нед.","field-mon-short-relative+-1":"прошлог пон","field-thu-relative+0":"у четвртак","field-thu-relative+1":"следећег четвртка","field-fri-short-relative+-1":"прошлог пет","field-thu-relative+-1":"прошлог четвртка","field-week":"недеља","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-quarter-narrow-relative+-1":"прошлог квартала","field-year-short-relative+0":"ове год.","field-dayperiod-short":"пре подне/по подне","field-year-short-relative+1":"следеће год.","field-fri-short-relative+0":"у пет","field-fri-short-relative+1":"следећег пет","field-week-short-relative+-1":"прошле нед.","field-hour-short":"ч.","field-zone-short":"временска зона","field-month-narrow":"м.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"прошлог пет","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-era-narrow":"ера","field-fri-relative+-1":"прошлог петка","field-tue-short-relative+-1":"прошлог уто","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"у пон","field-mon-narrow-relative+1":"следећег пон","field-year-short-relative+-1":"прошле год.","field-zone":"временска зона","field-weekOfMonth-narrow":"нед. у мес.","field-weekday-narrow":"дан у недељи","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"пр. нед.","field-day-relative+-1":"јуче","field-day-relative+-2":"прекјуче","field-weekday-short":"дан у недељи","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","field-day-short":"д.","field-week-narrow":"н.","field-era":"ера","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/number.js b/lib/dojo/cldr/nls/sr/number.js
index 6588b7fe5..18b97b76a 100644
--- a/lib/dojo/cldr/nls/sr/number.js
+++ b/lib/dojo/cldr/nls/sr/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 трилиона","decimalFormat-short":"000 бил'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 бил'.'","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 билиона","decimalFormat":"#,##0.###","currencyFormat-short":"000 бил'.' ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/persian.js b/lib/dojo/cldr/nls/sr/persian.js
index e20863647..8d2ef1eb5 100644
--- a/lib/dojo/cldr/nls/sr/persian.js
+++ b/lib/dojo/cldr/nls/sr/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/persian",{"days-standAlone-short":["не","по","ут","ср","че","пе","су"],"months-format-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-second-relative+0":"сада","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"дан у недељи","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-MMMEd":"E d. MMM","field-tue-relative+-1":"прошлог уторка","days-format-short":["нед","пон","уто","сре","чет","пет","суб"],"dateFormat-long":"dd. MMMM y. G","field-fri-relative+-1":"прошлог петка","field-wed-relative+-1":"прошле среде","months-format-wide":["Фаравадин","Ордибехешт","Кордад","Тир","Мордад","Шахривар","Мехр","Абан","Азар","Деј","Бахман","Есфанд"],"dateFormatItem-yyyyQQQ":"QQQ, y. G","dayPeriods-format-wide-pm":"по подне","dateFormat-full":"EEEE, dd. MMMM y. G","dateFormatItem-yyyyMEd":"E, d.M.y. G","field-thu-relative+-1":"прошлог четвртка","dateFormatItem-Md":"d/M","field-era":"ера","months-standAlone-wide":["Фаравадин","Ордибехешт","Кордад","Тир","Мордад","Шахривар","Мехр","Абан","Азар","Деј","Бахман","Есфанд"],"timeFormat-short":"HH.mm","quarters-format-wide":["Прво тромесечје","Друго тромесечје","Треће тромесечје","Четврто тромесечје"],"timeFormat-long":"HH.mm.ss z","field-year":"година","field-hour":"сат","months-format-abbr":["Фаравадин","Ордибехешт","Кордад","Тир","Мордад","Шахривар","Мехр","Абан","Азар","Деј","Бахман","Есфанд"],"field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","timeFormat-full":"HH.mm.ss zzzz","field-day-relative+0":"данас","field-thu-relative+0":"у четвртак","field-day-relative+1":"сутра","field-thu-relative+1":"следећег четвртка","dateFormatItem-GyMMMd":"d. MMM y. G","field-day-relative+2":"прекосутра","months-standAlone-abbr":["Фаравадин","Ордибехешт","Кордад","Тир","Мордад","Шахривар","Мехр","Абан","Азар","Деј","Бахман","Есфанд"],"quarters-format-abbr":["К1","К2","К3","К4"],"quarters-standAlone-wide":["Прво тромесечје","Друго тромесечје","Треће тромесечје","Четврто тромесечје"],"dateFormatItem-Gy":"y. G","dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","days-standAlone-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dateFormatItem-yyyyMMM":"MMM y. G","dateFormatItem-yyyyMMMd":"d. MMM y. G","timeFormat-medium":"HH.mm.ss","field-sun-relative+0":"у недељу","dateFormatItem-Hm":"HH.mm","field-sun-relative+1":"следеће недеље","quarters-standAlone-abbr":["К1","К2","К3","К4"],"field-minute":"минут","field-dayperiod":"пре подне/по подне","days-standAlone-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-ms":"mm.ss","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"јуче","dateFormatItem-h":"hh a","field-day-relative+-2":"прекјуче","dateFormatItem-MMMd":"d. MMM","dateFormatItem-MEd":"E, M-d","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","field-day":"дан","days-format-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"field-zone":"временска зона","dateFormatItem-y":"y. G","months-standAlone-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-year-relative+-1":"прошле године","field-month-relative+-1":"прошлог месеца","dateFormatItem-hm":"hh.mm a","days-format-abbr":["нед","пон","уто","сре","чет","пет","суб"],"days-format-narrow":["н","п","у","с","ч","п","с"],"dateFormatItem-yyyyMd":"d.M.y. G","field-month":"месец","days-standAlone-narrow":["н","п","у","с","ч","п","с"],"field-tue-relative+0":"у уторак","field-tue-relative+1":"следећег уторка","dayPeriods-format-wide-am":"пре подне","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","dateFormat-short":"d.M.y. GGGGG","field-second":"секунд","field-sat-relative+-1":"прошле суботе","field-sun-relative+-1":"прошле недеље","field-month-relative+0":"овог месеца","field-month-relative+1":"следећег месеца","dateFormatItem-Ed":"E d.","field-week":"недеља","dateFormat-medium":"dd.MM.y. G","field-year-relative+0":"ове године","field-week-relative+-1":"прошле недеље","dateFormatItem-yyyyM":"M.y. G","field-year-relative+1":"следеће године","dateFormatItem-yyyyQQQQ":"QQQQ y. G","dateFormatItem-Hms":"HH.mm.ss","dateFormatItem-hms":"hh.mm.ss a","dateFormatItem-GyMMM":"MMM y. G","field-mon-relative+-1":"прошлог понедељка","dateFormatItem-yyyy":"y. G","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/persian",{"field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","field-tue-relative+-1":"прошлог уторка","field-year":"година","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-minute":"минут","field-month-narrow-relative+-1":"прошлог м.","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","field-thu-short-relative+0":"у чет","field-day-short-relative+-1":"јуче","field-thu-short-relative+1":"следећег чет","field-day-relative+0":"данас","field-day-short-relative+-2":"прекјуче","field-day-relative+1":"сутра","field-week-narrow-relative+0":"ове н.","field-day-relative+2":"прекосутра","field-week-narrow-relative+1":"следеће н.","field-wed-narrow-relative+-1":"прошле сре","dateFormatItem-EBhms":"E hh:mm:ss B","field-year-narrow":"г.","field-era-short":"ера","field-year-narrow-relative+0":"ове г.","field-tue-relative+0":"у уторак","field-year-narrow-relative+1":"следеће г.","field-tue-relative+1":"следећег уторка","field-weekdayOfMonth":"дан у месецу","field-second-short":"сек.","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d. MMM","field-weekdayOfMonth-narrow":"дан у месецу","dayPeriods-format-abbr-am":"пре подне","field-week-relative+0":"ове недеље","field-month-relative+0":"овог месеца","field-week-relative+1":"следеће недеље","field-month-relative+1":"следећег месеца","field-sun-narrow-relative+0":"у нед","field-mon-short-relative+0":"у пон","field-sun-narrow-relative+1":"сл. нед.","field-mon-short-relative+1":"следећег пон","field-second-relative+0":"сада","dateFormatItem-yyyyQQQ":"QQQ, y. G","months-standAlone-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-weekOfMonth":"недеља у месецу","dayPeriods-standAlone-abbr-pm":"по подне","field-month-short":"мес.","dateFormatItem-GyMMMEd":"E, d. MMM y. G","dateFormatItem-yyyyMd":"d.M.y. GGGGG","field-day":"дан","field-dayOfYear-short":"дан у год.","field-year-relative+-1":"прошле године","dayPeriods-format-wide-am":"пре подне","field-sat-short-relative+-1":"прошле суб","field-hour-relative+0":"овог сата","dateFormatItem-yyyyMEd":"E, d.M.y. GGGGG","field-wed-relative+-1":"прошле среде","field-sat-narrow-relative+-1":"прошле суб","field-second":"секунд","days-standAlone-narrow":["н","п","у","с","ч","п","с"],"dayPeriods-standAlone-wide-pm":"по подне","dateFormatItem-Ehms":"E hh:mm:ss a","dateFormat-long":"d. MMMM y. G","dateFormatItem-GyMMMd":"d. MMM y. G","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"данас","field-day-narrow-relative+1":"сутра","field-day-narrow-relative+2":"прекосутра","quarters-standAlone-wide":["први квартал","други квартал","трећи квартал","четврти квартал"],"days-format-narrow":["н","п","у","с","ч","п","с"],"field-tue-short-relative+0":"у уто","field-tue-short-relative+1":"следећег уто","field-month-short-relative+-1":"прошлог мес.","field-mon-relative+-1":"прошлог понедељка","dateFormatItem-GyMMM":"MMM y. G","field-month":"месец","field-day-narrow":"д.","field-minute-short":"мин.","field-dayperiod":"пре подне/по подне","field-sat-short-relative+0":"у суб","field-sat-short-relative+1":"следеће суб","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d.MM.y. G","dateFormatItem-yyyyMMMM":"MMMM y. G","quarters-standAlone-abbr":["К1","К2","К3","К4"],"dayPeriods-format-abbr-pm":"по подне","dateFormatItem-yyyyM":"M.y. GGGGG","field-second-narrow":"с.","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+-1":"јуче","field-year-short":"год.","field-day-narrow-relative+-2":"прекјуче","months-format-narrow":["ј","ф","м","а","м","ј","ј","а","с","о","н","д"],"field-quarter-relative+-1":"прошлог квартала","dateFormatItem-yyyyMMMd":"d. MMM y. G","field-dayperiod-narrow":"пре подне/по подне","dayPeriods-standAlone-narrow-am":"пре подне","field-week-narrow-relative+-1":"прошле н.","days-format-short":["не","по","ут","ср","че","пе","су"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"по подне","field-dayOfYear":"дан у години","field-sat-relative+-1":"прошле суботе","dateFormatItem-Md":"d.M.","field-hour":"сат","months-format-wide":["Фаравадин","Ордибехешт","Кордад","Тир","Мордад","Шахривар","Мехр","Абан","Азар","Деј","Бахман","Есфанд"],"dateFormat-full":"EEEE, d. MMMM y. G","field-month-relative+-1":"прошлог месеца","field-quarter-short":"кв.","field-sat-narrow-relative+0":"у суб","field-fri-relative+0":"у петак","field-sat-narrow-relative+1":"следеће суб","field-fri-relative+1":"следећег петка","dateFormatItem-EBhm":"E hh:mm B","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","field-sun-short-relative+0":"у нед","field-sun-short-relative+1":"сл. нед.","field-week-relative+-1":"прошле недеље","field-quarter-short-relative+-1":"прошлог квартала","dateFormatItem-Ehm":"E hh:mm a","months-format-abbr":["Фаравадин","Ордибехешт","Кордад","Тир","Мордад","Шахривар","Мехр","Абан","Азар","Деј","Бахман","Есфанд"],"field-quarter-relative+0":"овог квартала","field-minute-relative+0":"овог минута","field-quarter-relative+1":"следећег квартала","field-wed-short-relative+-1":"прошле сре","dateFormat-short":"d.M.y. GGGGG","field-thu-short-relative+-1":"прошлог чет","field-year-narrow-relative+-1":"прошле г.","days-standAlone-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"dateFormatItem-yyyyMMMEd":"E, d. MMM y. G","field-mon-narrow-relative+-1":"прошлог пон","dateFormatItem-MMMMd":"d. MMMM","field-thu-narrow-relative+-1":"прошлог чет","field-tue-narrow-relative+-1":"прошлог уто","field-weekOfMonth-short":"нед. у мес.","dateFormatItem-yyyy":"y. G","dayPeriods-standAlone-narrow-pm":"по подне","field-wed-short-relative+0":"у сре","months-standAlone-wide":["Фаравадин","Ордибехешт","Кордад","Тир","Мордад","Шахривар","Мехр","Абан","Азар","Деј","Бахман","Есфанд"],"field-wed-short-relative+1":"следеће сре","field-sun-relative+-1":"прошле недеље","days-standAlone-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-hm":"hh:mm a","field-weekday":"дан у недељи","field-day-short-relative+0":"данас","field-quarter-narrow-relative+0":"овог квартала","field-sat-relative+0":"у суботу","field-day-short-relative+1":"сутра","field-quarter-narrow-relative+1":"следећег квартала","field-sat-relative+1":"следеће суботе","field-day-short-relative+2":"прекосутра","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","months-standAlone-abbr":["Фаравадин","Ордибехешт","Кордад","Тир","Мордад","Шахривар","Мехр","Абан","Азар","Деј","Бахман","Есфанд"],"field-dayOfYear-narrow":"дан у год.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","field-weekdayOfMonth-short":"дан у месецу","dateFormatItem-MEd":"E, d.M.","field-zone-narrow":"временска зона","dateFormatItem-y":"y. G","field-thu-narrow-relative+0":"у чет","field-thu-narrow-relative+1":"следећег чет","field-sun-narrow-relative+-1":"пр. нед.","field-mon-short-relative+-1":"прошлог пон","field-thu-relative+0":"у четвртак","field-thu-relative+1":"следећег четвртка","field-fri-short-relative+-1":"прошлог пет","dateFormatItem-hms":"hh:mm:ss a","field-thu-relative+-1":"прошлог четвртка","field-week":"недеља","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["први квартал","други квартал","трећи квартал","четврти квартал"],"dateFormatItem-Ed":"E d.","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-quarter-narrow-relative+-1":"прошлог квартала","field-year-short-relative+0":"ове год.","field-dayperiod-short":"пре подне/по подне","dateFormatItem-yyyyMMM":"MMM y. G","field-year-short-relative+1":"следеће год.","field-fri-short-relative+0":"у пет","field-fri-short-relative+1":"следећег пет","days-standAlone-short":["не","по","ут","ср","че","пе","су"],"field-week-short-relative+-1":"прошле нед.","dateFormatItem-yyyyQQQQ":"QQQQ y. G","field-hour-short":"ч.","field-zone-short":"временска зона","quarters-format-abbr":["К1","К2","К3","К4"],"field-month-narrow":"м.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"прошлог пет","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-era-narrow":"ера","field-fri-relative+-1":"прошлог петка","dateFormatItem-Bhms":"hh:mm:ss B","field-tue-short-relative+-1":"прошлог уто","field-minute-narrow":"мин.","days-format-wide":["недеља","понедељак","уторак","среда","четвртак","петак","субота"],"field-mon-narrow-relative+0":"у пон","field-mon-narrow-relative+1":"следећег пон","field-year-short-relative+-1":"прошле год.","field-zone":"временска зона","dateFormatItem-MMMEd":"E, d. MMM","field-weekOfMonth-narrow":"нед. у мес.","field-weekday-narrow":"дан у недељи","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"пр. нед.","field-day-relative+-1":"јуче","dayPeriods-standAlone-abbr-am":"пре подне","field-day-relative+-2":"прекјуче","field-weekday-short":"дан у недељи","days-format-abbr":["нед","пон","уто","сре","чет","пет","суб"],"dateFormatItem-Bhm":"hh:mm B","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","dateFormatItem-Gy":"y. G","field-day-short":"д.","field-week-narrow":"н.","field-era":"ера","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет","dayPeriods-standAlone-wide-am":"пре подне"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sr/roc.js b/lib/dojo/cldr/nls/sr/roc.js
index c9d3ec423..45bdf9b2f 100644
--- a/lib/dojo/cldr/nls/sr/roc.js
+++ b/lib/dojo/cldr/nls/sr/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sr/roc",{"field-sat-relative+0":"у суботу","field-sat-relative+1":"следеће суботе","field-dayperiod":"пре подне/по подне","field-sun-relative+-1":"прошле недеље","field-mon-relative+-1":"прошлог понедељка","field-minute":"минут","field-day-relative+-1":"јуче","field-weekday":"дан у недељи","field-day-relative+-2":"прекјуче","field-era":"ера","field-hour":"сат","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","field-wed-relative+-1":"прошле среде","field-day-relative+0":"данас","field-day-relative+1":"сутра","eraAbbr":["Пре РК","РК"],"field-day-relative+2":"прекосутра","field-tue-relative+0":"у уторак","field-zone":"временска зона","field-tue-relative+1":"следећег уторка","field-week-relative+-1":"прошле недеље","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-sat-relative+-1":"прошле суботе","field-year-relative+-1":"прошле године","field-year":"година","field-fri-relative+0":"у петак","field-fri-relative+1":"следећег петка","field-week":"недеља","field-week-relative+0":"ове недеље","field-week-relative+1":"следеће недеље","field-month-relative+0":"овог месеца","field-month":"месец","field-month-relative+1":"следећег месеца","field-fri-relative+-1":"прошлог петка","field-second":"секунд","field-tue-relative+-1":"прошлог уторка","field-day":"дан","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-thu-relative+0":"у четвртак","field-second-relative+0":"сада","field-thu-relative+1":"следећег четвртка","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-month-relative+-1":"прошлог месеца","field-thu-relative+-1":"прошлог четвртка"}); \ No newline at end of file
+define("dojo/cldr/nls/sr/roc",{"field-quarter-short-relative+0":"овог квартала","field-quarter-short-relative+1":"следећег квартала","field-tue-relative+-1":"прошлог уторка","field-year":"година","field-wed-relative+0":"у среду","field-wed-relative+1":"следеће среде","field-minute":"минут","field-month-narrow-relative+-1":"прошлог м.","field-tue-narrow-relative+0":"у уто","field-tue-narrow-relative+1":"следећег уто","field-thu-short-relative+0":"у чет","field-day-short-relative+-1":"јуче","field-thu-short-relative+1":"следећег чет","field-day-relative+0":"данас","field-day-short-relative+-2":"прекјуче","field-day-relative+1":"сутра","field-week-narrow-relative+0":"ове н.","field-day-relative+2":"прекосутра","field-week-narrow-relative+1":"следеће н.","field-wed-narrow-relative+-1":"прошле сре","field-year-narrow":"г.","field-era-short":"ера","field-year-narrow-relative+0":"ове г.","field-tue-relative+0":"у уторак","field-year-narrow-relative+1":"следеће г.","field-tue-relative+1":"следећег уторка","field-weekdayOfMonth":"дан у месецу","field-second-short":"сек.","field-weekdayOfMonth-narrow":"дан у месецу","field-week-relative+0":"ове недеље","field-month-relative+0":"овог месеца","field-week-relative+1":"следеће недеље","field-month-relative+1":"следећег месеца","field-sun-narrow-relative+0":"у нед","field-mon-short-relative+0":"у пон","field-sun-narrow-relative+1":"сл. нед.","field-mon-short-relative+1":"следећег пон","field-second-relative+0":"сада","field-weekOfMonth":"недеља у месецу","field-month-short":"мес.","field-day":"дан","field-dayOfYear-short":"дан у год.","field-year-relative+-1":"прошле године","field-sat-short-relative+-1":"прошле суб","field-hour-relative+0":"овог сата","field-wed-relative+-1":"прошле среде","field-sat-narrow-relative+-1":"прошле суб","field-second":"секунд","field-quarter":"квартал","field-week-short":"нед.","field-day-narrow-relative+0":"данас","field-day-narrow-relative+1":"сутра","field-day-narrow-relative+2":"прекосутра","field-tue-short-relative+0":"у уто","field-tue-short-relative+1":"следећег уто","field-month-short-relative+-1":"прошлог мес.","field-mon-relative+-1":"прошлог понедељка","field-month":"месец","field-day-narrow":"д.","field-minute-short":"мин.","field-dayperiod":"пре подне/по подне","field-sat-short-relative+0":"у суб","field-sat-short-relative+1":"следеће суб","eraAbbr":["Пре РК","РК"],"field-second-narrow":"с.","field-mon-relative+0":"у понедељак","field-mon-relative+1":"следећег понедељка","field-day-narrow-relative+-1":"јуче","field-year-short":"год.","field-day-narrow-relative+-2":"прекјуче","field-quarter-relative+-1":"прошлог квартала","field-dayperiod-narrow":"пре подне/по подне","field-week-narrow-relative+-1":"прошле н.","field-dayOfYear":"дан у години","field-sat-relative+-1":"прошле суботе","field-hour":"сат","field-month-relative+-1":"прошлог месеца","field-quarter-short":"кв.","field-sat-narrow-relative+0":"у суб","field-fri-relative+0":"у петак","field-sat-narrow-relative+1":"следеће суб","field-fri-relative+1":"следећег петка","field-month-narrow-relative+0":"овог м.","field-month-narrow-relative+1":"следећег м.","field-sun-short-relative+0":"у нед","field-sun-short-relative+1":"сл. нед.","field-week-relative+-1":"прошле недеље","field-quarter-short-relative+-1":"прошлог квартала","field-quarter-relative+0":"овог квартала","field-minute-relative+0":"овог минута","field-quarter-relative+1":"следећег квартала","field-wed-short-relative+-1":"прошле сре","field-thu-short-relative+-1":"прошлог чет","field-year-narrow-relative+-1":"прошле г.","field-mon-narrow-relative+-1":"прошлог пон","field-thu-narrow-relative+-1":"прошлог чет","field-tue-narrow-relative+-1":"прошлог уто","field-weekOfMonth-short":"нед. у мес.","field-wed-short-relative+0":"у сре","field-wed-short-relative+1":"следеће сре","field-sun-relative+-1":"прошле недеље","field-weekday":"дан у недељи","field-day-short-relative+0":"данас","field-quarter-narrow-relative+0":"овог квартала","field-sat-relative+0":"у суботу","field-day-short-relative+1":"сутра","field-quarter-narrow-relative+1":"следећег квартала","field-sat-relative+1":"следеће суботе","field-day-short-relative+2":"прекосутра","field-week-short-relative+0":"ове нед.","field-week-short-relative+1":"следеће нед.","field-dayOfYear-narrow":"дан у год.","field-month-short-relative+0":"овог мес.","field-month-short-relative+1":"следећег мес.","field-weekdayOfMonth-short":"дан у месецу","field-zone-narrow":"временска зона","field-thu-narrow-relative+0":"у чет","field-thu-narrow-relative+1":"следећег чет","field-sun-narrow-relative+-1":"пр. нед.","field-mon-short-relative+-1":"прошлог пон","field-thu-relative+0":"у четвртак","field-thu-relative+1":"следећег четвртка","field-fri-short-relative+-1":"прошлог пет","field-thu-relative+-1":"прошлог четвртка","field-week":"недеља","field-wed-narrow-relative+0":"у сре","field-wed-narrow-relative+1":"следеће сре","field-quarter-narrow-relative+-1":"прошлог квартала","field-year-short-relative+0":"ове год.","field-dayperiod-short":"пре подне/по подне","field-year-short-relative+1":"следеће год.","field-fri-short-relative+0":"у пет","field-fri-short-relative+1":"следећег пет","field-week-short-relative+-1":"прошле нед.","field-hour-short":"ч.","field-zone-short":"временска зона","field-month-narrow":"м.","field-hour-narrow":"ч.","field-fri-narrow-relative+-1":"прошлог пет","field-year-relative+0":"ове године","field-year-relative+1":"следеће године","field-era-narrow":"ера","field-fri-relative+-1":"прошлог петка","field-tue-short-relative+-1":"прошлог уто","field-minute-narrow":"мин.","field-mon-narrow-relative+0":"у пон","field-mon-narrow-relative+1":"следећег пон","field-year-short-relative+-1":"прошле год.","field-zone":"временска зона","field-weekOfMonth-narrow":"нед. у мес.","field-weekday-narrow":"дан у недељи","field-quarter-narrow":"кв.","field-sun-short-relative+-1":"пр. нед.","field-day-relative+-1":"јуче","field-day-relative+-2":"прекјуче","field-weekday-short":"дан у недељи","field-sun-relative+0":"у недељу","field-sun-relative+1":"следеће недеље","field-day-short":"д.","field-week-narrow":"н.","field-era":"ера","field-fri-narrow-relative+0":"у пет","field-fri-narrow-relative+1":"следећег пет"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/buddhist.js b/lib/dojo/cldr/nls/sv/buddhist.js
index d891da937..cac1c2e14 100644
--- a/lib/dojo/cldr/nls/sv/buddhist.js
+++ b/lib/dojo/cldr/nls/sv/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/buddhist",{"days-standAlone-short":["Sö","Må","Ti","On","To","Fr","Lö"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"nu","field-weekday":"Veckodag","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"tisdag förra veckan","days-format-short":["sö","må","ti","on","to","fr","lö"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"fredag förra veckan","field-wed-relative+-1":"onsdag förra veckan","months-format-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"dayPeriods-format-wide-pm":"em","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E, y-MM-dd G","field-thu-relative+-1":"torsdag förra veckan","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"FM","field-era":"Era","months-standAlone-wide":["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],"quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"field-year":"År","field-hour":"Timme","months-format-abbr":["jan.","feb.","mars","apr.","maj","juni","juli","aug.","sep.","okt.","nov.","dec."],"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-thu-relative+0":"torsdag denna vecka","field-day-relative+1":"i morgon","field-thu-relative+1":"torsdag nästa vecka","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"i övermorgon","months-standAlone-abbr":["Jan.","Feb.","Mars","Apr.","Maj","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dec."],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["BE"],"field-minute":"Minut","field-dayperiod":"fm/em","days-standAlone-abbr":["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],"field-day-relative+-1":"i går","dayPeriods-format-narrow-am":"f","field-day-relative+-2":"i förrgår","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","field-day":"Dag","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-zone":"Tidszon","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"i fjol","field-month-relative+-1":"förra månaden","dayPeriods-format-abbr-pm":"EM","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMd":"G y-MM-dd","field-month":"Månad","days-standAlone-narrow":["S","M","T","O","T","F","L"],"field-tue-relative+0":"tisdag denna vecka","field-tue-relative+1":"tisdag nästa vecka","dayPeriods-format-wide-am":"fm","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","dateFormat-short":"G y-MM-dd","field-second":"Sekund","field-sat-relative+-1":"lördag förra veckan","field-sun-relative+-1":"söndag förra veckan","field-month-relative+0":"denna månad","field-month-relative+1":"nästa månad","dateFormatItem-Ed":"E d","field-week":"Vecka","dateFormat-medium":"d MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"förra veckan","dateFormatItem-yyyyM":"G y-MM","field-year-relative+1":"nästa år","dayPeriods-format-narrow-pm":"e","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-yyyy":"y G","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/buddhist",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","timeFormat-short":"HH.mm","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-thu-short-relative+0":"tors. denna vecka","field-day-short-relative+-1":"i går","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","dayPeriods-format-narrow-am":"fm","dateFormatItem-yyyyMM":"y-MM G","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"veckodag i mån.","dayPeriods-format-abbr-am":"fm","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["Buddhistisk era"],"field-weekOfMonth":"vecka i månaden","dayPeriods-standAlone-abbr-pm":"e.m.","field-month-short":"m","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"y-MM-dd G","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","dayPeriods-format-wide-am":"fm","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","dateFormatItem-yyyyMEd":"E y-MM-dd G","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dayPeriods-standAlone-wide-pm":"eftermiddag","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-GyMMM":"MMM y G","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","dayPeriods-format-narrow-pm":"em","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["BE"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"em","dateFormatItem-yyyyM":"y-MM G","field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"förra kvartalet","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"fm/em","dayPeriods-standAlone-narrow-am":"fm","field-week-narrow-relative+-1":"förra v.","days-format-short":["sö","må","ti","on","to","fr","lö"],"dayPeriods-format-wide-pm":"em","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"denna minut","field-hour":"timme","months-format-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","months-format-abbr":["jan.","feb.","mars","apr.","maj","juni","juli","aug.","sep.","okt.","nov.","dec."],"field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","dateFormat-short":"y-MM-dd G","field-thu-short-relative+-1":"tors. förra veckan","field-year-narrow-relative+-1":"i fjol","days-standAlone-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","dayPeriods-standAlone-narrow-pm":"em","dateFormatItem-yyyy":"y G","field-wed-short-relative+0":"ons. denna vecka","months-standAlone-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","days-standAlone-abbr":["sön","mån","tis","ons","tors","fre","lör"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nu","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-day-short-relative+1":"i morgon","field-sat-relative+0":"lördag denna vecka","field-quarter-narrow-relative+1":"nästa kv.","field-day-short-relative+2":"i övermorgon","field-sat-relative+1":"lördag nästa vecka","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","months-standAlone-abbr":["jan.","feb.","mars","apr.","maj","juni","juli","aug.","sep.","okt.","nov.","dec."],"field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","timeFormat-full":"'kl'. HH.mm.ss zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"tidszon","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"fm/em","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","days-standAlone-short":["sö","må","ti","on","to","fr","lö"],"field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"tim","field-zone-short":"tidszon","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","eraNarrow":"BE","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-year-short-relative+-1":"i fjol","field-zone":"tidszon","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","dayPeriods-standAlone-abbr-am":"f.m.","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"field-sun-relative+0":"söndag denna vecka","dateFormatItem-MMdd":"d/M","field-sun-relative+1":"söndag nästa vecka","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre.","dayPeriods-standAlone-wide-am":"förmiddag"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/chinese.js b/lib/dojo/cldr/nls/sv/chinese.js
new file mode 100644
index 000000000..48a7e3414
--- /dev/null
+++ b/lib/dojo/cldr/nls/sv/chinese.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/sv/chinese",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"tors. denna vecka","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"veckodag i mån.","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ r(U)","field-weekOfMonth":"vecka i månaden","field-month-short":"m","dateFormatItem-GyMMMEd":"E d MMM r(U)","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","dateFormatItem-yyyyMEd":"E r-MM-dd","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","dateFormat-long":"d MMMM r(U)","dateFormatItem-GyMMMd":"d MMM r","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-GyMMM":"MMM r(U)","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","dateFormat-medium":"d MMM r","dateFormatItem-yyyyMMMM":"MMMM r(U)","dateFormatItem-UMMM":"MMM U","field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","field-quarter-relative+-1":"förra kvartalet","dateFormatItem-yyyyMMMd":"d MMM r","field-dayperiod-narrow":"fm/em","field-week-narrow-relative+-1":"förra v.","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d/M","field-hour":"timme","field-minute-narrow-relative+0":"denna minut","months-format-wide":["första månaden","andra månaden","tredje månaden","fjärde månaden","femte månaden","sjätte månaden","sjunde månaden","åttonde månaden","nionde månaden","tionde månaden","elfte månaden","tolfte månaden"],"dateFormat-full":"EEEE d MMMM r(U)","dateFormatItem-UMd":"d/M U","field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","months-format-abbr":["1:a mån","2:a mån","3:e mån","4:e mån","5:e mån","6:e mån","7:e mån","8:e mån","9:e mån","10:e mån","11:e mån","12:e mån"],"field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","dateFormat-short":"r-MM-dd","field-year-narrow-relative+-1":"i fjol","field-thu-short-relative+-1":"tors. förra veckan","dateFormatItem-yyyyMMMEd":"E d MMM r(U)","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","field-wed-short-relative+0":"ons. denna vecka","field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nu","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-day-short-relative+1":"i morgon","field-sat-relative+0":"lördag denna vecka","field-quarter-narrow-relative+1":"nästa kv.","field-day-short-relative+2":"i övermorgon","field-sat-relative+1":"lördag nästa vecka","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","months-standAlone-abbr":["1:a mån","2:a mån","3:e mån","4:e mån","5:e mån","6:e mån","7:e mån","8:e mån","9:e mån","10:e mån","11:e mån","12:e mån"],"field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","dateFormatItem-MEd":"E d/M","field-zone-narrow":"tidszon","field-thu-narrow-relative+0":"denna tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-narrow-relative+1":"nästa tors.","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM r(U)","field-dayperiod-short":"fm/em","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","dateFormatItem-yyyyQQQQ":"QQQQ r(U)","dateFormatItem-UMMMd":"d MMM U","field-hour-short":"tim","field-zone-short":"tidszon","field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","field-year-short-relative+-1":"i fjol","field-zone":"tidszon","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","dateFormatItem-Gy":"r(U)","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","dateFormatItem-UM":"M/U","field-fri-narrow-relative+1":"nästa fre."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/coptic.js b/lib/dojo/cldr/nls/sv/coptic.js
index 6cc71c597..0ae854c30 100644
--- a/lib/dojo/cldr/nls/sv/coptic.js
+++ b/lib/dojo/cldr/nls/sv/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/coptic",{"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","field-dayperiod":"fm/em","field-sun-relative+-1":"söndag förra veckan","field-mon-relative+-1":"måndag förra veckan","field-minute":"Minut","field-day-relative+-1":"i går","field-weekday":"Veckodag","field-day-relative+-2":"i förrgår","field-era":"Era","field-hour":"Timme","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","months-standAlone-abbr":["Tout","Bâbâ","Hâtour","Kiahk","Toubah","Amshîr","Barmahât","Barmoudah","Bashans","Ba’ounah","Abîb","Misra","Al-nasi"],"field-wed-relative+-1":"onsdag förra veckan","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","field-day-relative+2":"i övermorgon","field-tue-relative+0":"tisdag denna vecka","field-zone":"Tidszon","field-tue-relative+1":"tisdag nästa vecka","field-week-relative+-1":"förra veckan","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-sat-relative+-1":"lördag förra veckan","field-year-relative+-1":"i fjol","field-year":"År","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","months-standAlone-wide":["Tout","Bâbâ","Hâtour","Kiahk","Toubah","Amshîr","Barmahât","Barmoudah","Bashans","Ba’ounah","Abîb","Misra","Al-nasi"],"field-week":"Vecka","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka","months-format-abbr":["tout","bâbâ","hâtour","kiahk","toubah","amshîr","barmahât","barmoudah","bashans","ba’ounah","abîb","misra","al-nasi"],"field-month-relative+0":"denna månad","field-month":"Månad","field-month-relative+1":"nästa månad","field-fri-relative+-1":"fredag förra veckan","field-second":"Sekund","field-tue-relative+-1":"tisdag förra veckan","field-day":"Dag","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-thu-relative+0":"torsdag denna vecka","field-second-relative+0":"nu","field-thu-relative+1":"torsdag nästa vecka","field-wed-relative+0":"onsdag denna vecka","months-format-wide":["tout","bâbâ","hâtour","kiahk","toubah","amshîr","barmahât","barmoudah","bashans","ba’ounah","abîb","misra","al-nasi"],"field-wed-relative+1":"onsdag nästa vecka","field-month-relative+-1":"förra månaden","field-thu-relative+-1":"torsdag förra veckan"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/coptic",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-thu-short-relative+0":"tors. denna vecka","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","field-weekdayOfMonth-narrow":"veckodag i mån.","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","field-weekOfMonth":"vecka i månaden","field-month-short":"m","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","field-quarter-relative+-1":"förra kvartalet","field-dayperiod-narrow":"fm/em","field-week-narrow-relative+-1":"förra v.","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","field-hour":"timme","field-minute-narrow-relative+0":"denna minut","months-format-wide":["tout","bâbâ","hâtour","kiahk","toubah","amshîr","barmahât","barmoudah","bashans","ba’ounah","abîb","misra","al-nasi"],"field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","months-format-abbr":["tout","bâbâ","hâtour","kiahk","toubah","amshîr","barmahât","barmoudah","bashans","ba’ounah","abîb","misra","al-nasi"],"field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","field-thu-short-relative+-1":"tors. förra veckan","field-year-narrow-relative+-1":"i fjol","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","field-wed-short-relative+0":"ons. denna vecka","months-standAlone-wide":["Tout","Bâbâ","Hâtour","Kiahk","Toubah","Amshîr","Barmahât","Barmoudah","Bashans","Ba’ounah","Abîb","Misra","Al-nasi"],"field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","field-second-narrow-relative+0":"nu","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-sat-relative+0":"lördag denna vecka","field-day-short-relative+1":"i morgon","field-quarter-narrow-relative+1":"nästa kv.","field-sat-relative+1":"lördag nästa vecka","field-day-short-relative+2":"i övermorgon","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","months-standAlone-abbr":["Tout","Bâbâ","Hâtour","Kiahk","Toubah","Amshîr","Barmahât","Barmoudah","Bashans","Ba’ounah","Abîb","Misra","Al-nasi"],"field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","field-zone-narrow":"tidszon","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"fm/em","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","field-hour-short":"tim","field-zone-short":"tidszon","field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","field-year-short-relative+-1":"i fjol","field-zone":"tidszon","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/currency.js b/lib/dojo/cldr/nls/sv/currency.js
index bacc336ab..c5e38faee 100644
--- a/lib/dojo/cldr/nls/sv/currency.js
+++ b/lib/dojo/cldr/nls/sv/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/currency",{"HKD_displayName":"Hongkongdollar","CHF_displayName":"schweizisk franc","JPY_symbol":"JPY","CAD_displayName":"kanadensisk dollar","HKD_symbol":"HKD","CNY_displayName":"kinesisk yuan","USD_symbol":"US$","AUD_displayName":"australisk dollar","JPY_displayName":"japansk yen","CAD_symbol":"CAN$","USD_displayName":"US-dollar","EUR_symbol":"€","CNY_symbol":"CNY","GBP_displayName":"brittiskt pund","GBP_symbol":"GBP","AUD_symbol":"AUD","EUR_displayName":"euro"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/currency",{"HKD_displayName":"Hongkongdollar","CNY_displayName":"kinesisk yuan","JPY_displayName":"japansk yen","JPY_symbol":"JPY","USD_displayName":"amerikansk dollar","CAD_symbol":"CA$","GBP_displayName":"brittiskt pund","CHF_displayName":"schweizisk franc","CNY_symbol":"CNY","EUR_displayName":"euro","GBP_symbol":"GBP","CAD_displayName":"kanadensisk dollar","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"australisk dollar","CHF_symbol":"CHF","HKD_symbol":"HKD","AUD_symbol":"AUD"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/dangi.js b/lib/dojo/cldr/nls/sv/dangi.js
index bac091960..f0e44d526 100644
--- a/lib/dojo/cldr/nls/sv/dangi.js
+++ b/lib/dojo/cldr/nls/sv/dangi.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/dangi",{"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","field-dayperiod":"fm/em","field-sun-relative+-1":"söndag förra veckan","field-mon-relative+-1":"måndag förra veckan","field-minute":"Minut","field-day-relative+-1":"i går","field-weekday":"Veckodag","field-day-relative+-2":"i förrgår","field-era":"Era","field-hour":"Timme","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","field-wed-relative+-1":"onsdag förra veckan","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","field-day-relative+2":"i övermorgon","field-tue-relative+0":"tisdag denna vecka","field-zone":"Tidszon","field-tue-relative+1":"tisdag nästa vecka","field-week-relative+-1":"förra veckan","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-sat-relative+-1":"lördag förra veckan","field-year-relative+-1":"i fjol","field-year":"År","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","field-week":"Vecka","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka","field-month-relative+0":"denna månad","field-month":"Månad","field-month-relative+1":"nästa månad","field-fri-relative+-1":"fredag förra veckan","field-second":"Sekund","field-tue-relative+-1":"tisdag förra veckan","field-day":"Dag","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-thu-relative+0":"torsdag denna vecka","field-second-relative+0":"nu","field-thu-relative+1":"torsdag nästa vecka","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-month-relative+-1":"förra månaden","field-thu-relative+-1":"torsdag förra veckan"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/dangi",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-thu-short-relative+0":"tors. denna vecka","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","field-weekdayOfMonth-narrow":"veckodag i mån.","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","field-weekOfMonth":"vecka i månaden","field-month-short":"m","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","field-quarter-relative+-1":"förra kvartalet","field-dayperiod-narrow":"fm/em","field-week-narrow-relative+-1":"förra v.","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","field-hour":"timme","field-minute-narrow-relative+0":"denna minut","field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","field-thu-short-relative+-1":"tors. förra veckan","field-year-narrow-relative+-1":"i fjol","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","field-wed-short-relative+0":"ons. denna vecka","field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","field-second-narrow-relative+0":"nu","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-sat-relative+0":"lördag denna vecka","field-day-short-relative+1":"i morgon","field-quarter-narrow-relative+1":"nästa kv.","field-sat-relative+1":"lördag nästa vecka","field-day-short-relative+2":"i övermorgon","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","field-zone-narrow":"tidszon","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"fm/em","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","field-hour-short":"tim","field-zone-short":"tidszon","field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","field-year-short-relative+-1":"i fjol","field-zone":"tidszon","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/ethiopic.js b/lib/dojo/cldr/nls/sv/ethiopic.js
index e7cac4f4e..f6057800c 100644
--- a/lib/dojo/cldr/nls/sv/ethiopic.js
+++ b/lib/dojo/cldr/nls/sv/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/ethiopic",{"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","field-dayperiod":"fm/em","field-sun-relative+-1":"söndag förra veckan","field-mon-relative+-1":"måndag förra veckan","field-minute":"Minut","field-day-relative+-1":"i går","field-weekday":"Veckodag","field-day-relative+-2":"i förrgår","field-era":"Era","field-hour":"Timme","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","months-standAlone-abbr":["Mäskäräm","Teqemt","Hedar","Tahesas","Ter","Yäkatit","Mägabit","Miyazya","Guenbot","Säné","Hamlé","Nähasé","Pagumén"],"field-wed-relative+-1":"onsdag förra veckan","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","field-day-relative+2":"i övermorgon","field-tue-relative+0":"tisdag denna vecka","field-zone":"Tidszon","field-tue-relative+1":"tisdag nästa vecka","field-week-relative+-1":"förra veckan","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-sat-relative+-1":"lördag förra veckan","field-year-relative+-1":"i fjol","field-year":"År","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","months-standAlone-wide":["Mäskäräm","Teqemt","Hedar","Tahesas","Ter","Yäkatit","Mägabit","Miyazya","Guenbot","Säné","Hamlé","Nähasé","Pagumén"],"field-week":"Vecka","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka","months-format-abbr":["mäskäräm","teqemt","hedar","tahesas","ter","yäkatit","mägabit","miyazya","guenbot","säné","hamlé","nähasé","pagumén"],"field-month-relative+0":"denna månad","field-month":"Månad","field-month-relative+1":"nästa månad","field-fri-relative+-1":"fredag förra veckan","field-second":"Sekund","field-tue-relative+-1":"tisdag förra veckan","field-day":"Dag","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-thu-relative+0":"torsdag denna vecka","field-second-relative+0":"nu","field-thu-relative+1":"torsdag nästa vecka","field-wed-relative+0":"onsdag denna vecka","months-format-wide":["mäskäräm","teqemt","hedar","tahesas","ter","yäkatit","mägabit","miyazya","guenbot","säné","hamlé","nähasé","pagumén"],"field-wed-relative+1":"onsdag nästa vecka","field-month-relative+-1":"förra månaden","field-thu-relative+-1":"torsdag förra veckan"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/ethiopic",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-thu-short-relative+0":"tors. denna vecka","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","field-weekdayOfMonth-narrow":"veckodag i mån.","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","field-weekOfMonth":"vecka i månaden","field-month-short":"m","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","field-quarter-relative+-1":"förra kvartalet","field-dayperiod-narrow":"fm/em","field-week-narrow-relative+-1":"förra v.","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","field-hour":"timme","field-minute-narrow-relative+0":"denna minut","months-format-wide":["mäskäräm","teqemt","hedar","tahesas","ter","yäkatit","mägabit","miyazya","guenbot","säné","hamlé","nähasé","pagumén"],"field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","months-format-abbr":["mäskäräm","teqemt","hedar","tahesas","ter","yäkatit","mägabit","miyazya","guenbot","säné","hamlé","nähasé","pagumén"],"field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","field-thu-short-relative+-1":"tors. förra veckan","field-year-narrow-relative+-1":"i fjol","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","field-wed-short-relative+0":"ons. denna vecka","months-standAlone-wide":["Mäskäräm","Teqemt","Hedar","Tahesas","Ter","Yäkatit","Mägabit","Miyazya","Guenbot","Säné","Hamlé","Nähasé","Pagumén"],"field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","field-second-narrow-relative+0":"nu","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-sat-relative+0":"lördag denna vecka","field-day-short-relative+1":"i morgon","field-quarter-narrow-relative+1":"nästa kv.","field-sat-relative+1":"lördag nästa vecka","field-day-short-relative+2":"i övermorgon","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","months-standAlone-abbr":["Mäskäräm","Teqemt","Hedar","Tahesas","Ter","Yäkatit","Mägabit","Miyazya","Guenbot","Säné","Hamlé","Nähasé","Pagumén"],"field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","field-zone-narrow":"tidszon","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"fm/em","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","field-hour-short":"tim","field-zone-short":"tidszon","field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","field-year-short-relative+-1":"i fjol","field-zone":"tidszon","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/generic.js b/lib/dojo/cldr/nls/sv/generic.js
index 2e71a6bd5..6987f31fa 100644
--- a/lib/dojo/cldr/nls/sv/generic.js
+++ b/lib/dojo/cldr/nls/sv/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/generic",{"field-second-relative+0":"nu","field-weekday":"Veckodag","field-wed-relative+0":"onsdag denna vecka","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-wed-relative+1":"onsdag nästa vecka","field-tue-relative+-1":"tisdag förra veckan","dateFormat-long":"d MMMM y G","field-fri-relative+-1":"fredag förra veckan","field-wed-relative+-1":"onsdag förra veckan","dateFormatItem-yyyyQQQ":"G y QQQ","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E, y-MM-dd G","field-thu-relative+-1":"torsdag förra veckan","dateFormatItem-Md":"d/M","field-era":"Era","field-year":"År","dateFormatItem-MMdd":"dd/MM","field-hour":"Timme","field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","field-thu-relative+0":"torsdag denna vecka","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"i övermorgon","field-thu-relative+1":"torsdag nästa vecka","dateFormatItem-H":"HH","dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"söndag denna vecka","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"söndag nästa vecka","field-minute":"Minut","field-dayperiod":"fm/em","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"i går","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"i förrgår","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","field-day":"Dag","field-zone":"Tidszon","dateFormatItem-yyyyMM":"G y-MM","dateFormatItem-y":"y G","field-year-relative+-1":"i fjol","field-month-relative+-1":"förra månaden","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"G y-MM-dd","field-month":"Månad","dateFormatItem-MMM":"LLL","field-tue-relative+0":"tisdag denna vecka","field-tue-relative+1":"tisdag nästa vecka","dateFormatItem-MMMMEd":"E d MMMM","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","dateFormat-short":"G y-MM-dd","dateFormatItem-MMd":"d/M","field-second":"Sekund","field-sat-relative+-1":"lördag förra veckan","field-sun-relative+-1":"söndag förra veckan","field-month-relative+0":"denna månad","field-month-relative+1":"nästa månad","dateFormatItem-Ed":"E d","field-week":"Vecka","dateFormat-medium":"d MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"förra veckan","dateFormatItem-yyyyM":"G y-MM","field-year-relative+1":"nästa år","dateFormatItem-yyyyQQQQ":"G y QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-yyyy":"y G","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/generic",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","dateFormatItem-ms":"mm:ss","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-day-short-relative+-1":"i går","field-thu-short-relative+0":"tors. denna vecka","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","dateFormatItem-yyyyMM":"G y-MM","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"veckodag i mån.","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","field-weekOfMonth":"vecka i månaden","field-month-short":"m","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"y-MM-dd G","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","dateFormatItem-yyyyMEd":"E y-MM-dd G","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-GyMMM":"MMM y G","field-month":"månad","field-day-narrow":"dag","dateFormatItem-MMM":"LLL","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","dateFormatItem-yyyyM":"y-MM G","field-second-narrow":"s","dateFormatItem-MMd":"d/M","field-mon-relative+0":"måndag denna vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-2":"i förrgår","field-quarter-relative+-1":"förra kvartalet","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"fm/em","field-week-narrow-relative+-1":"förra v.","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d/M","field-hour":"timme","field-minute-narrow-relative+0":"denna minut","dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"förra månaden","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","dateFormatItem-Ehm":"E h:mm a","field-minute-short-relative+0":"denna minut","field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","dateFormat-short":"G y-MM-dd","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"i fjol","field-thu-short-relative+-1":"tors. förra veckan","dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"förra tors.","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"vk. i mån.","field-tue-narrow-relative+-1":"förra tis.","dateFormatItem-yyyy":"y G","dateFormatItem-M":"L","field-wed-short-relative+0":"ons. denna vecka","field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","dateFormatItem-MMMMEd":"E d MMMM","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nu","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-day-short-relative+1":"i morgon","field-sat-relative+0":"lördag denna vecka","field-quarter-narrow-relative+1":"nästa kv.","dateFormatItem-h":"h a","field-day-short-relative+2":"i övermorgon","field-sat-relative+1":"lördag nästa vecka","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","dateFormatItem-MEd":"E d/M","field-zone-narrow":"tidszon","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denna tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-narrow-relative+1":"nästa tors.","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","dateFormatItem-yyyyMMM":"MMM y G","field-dayperiod-short":"fm/em","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"tim","field-zone-short":"tidszon","field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","dateFormatItem-EHm":"E HH:mm","field-year-short-relative+-1":"i fjol","field-zone":"tidszon","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"vk.i mån.","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"söndag denna vecka","dateFormatItem-MMdd":"dd/MM","field-sun-relative+1":"söndag nästa vecka","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/gregorian.js b/lib/dojo/cldr/nls/sv/gregorian.js
index a27a86d1b..8f1ffff59 100644
--- a/lib/dojo/cldr/nls/sv/gregorian.js
+++ b/lib/dojo/cldr/nls/sv/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["Sö","Må","Ti","On","To","Fr","Lö"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"nu","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"Veckodag","dateFormatItem-yQQQ":"y QQQ","dateFormatItem-yMEd":"E, y-MM-dd","field-wed-relative+0":"onsdag denna vecka","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-wed-relative+1":"onsdag nästa vecka","eraNarrow":["f.Kr.","fvt","e.Kr.","vt"],"dateFormatItem-yMM":"y-MM","field-tue-relative+-1":"tisdag förra veckan","days-format-short":["sö","må","ti","on","to","fr","lö"],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"fredag förra veckan","field-wed-relative+-1":"onsdag förra veckan","months-format-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"em","dateFormat-full":"EEEE d MMMM y","field-thu-relative+-1":"torsdag förra veckan","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"FM","dateFormatItem-yMd":"y-MM-dd","dateFormatItem-yM":"y-MM","field-era":"Era","months-standAlone-wide":["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],"timeFormat-short":"HH:mm","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"timeFormat-long":"HH:mm:ss z","dateFormatItem-yMMM":"MMM y","dateFormatItem-yQQQQ":"y QQQQ","field-year":"År","dateFormatItem-MMdd":"dd/MM","field-hour":"Timme","months-format-abbr":["jan.","feb.","mars","apr.","maj","juni","juli","aug.","sep.","okt.","nov.","dec."],"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","field-thu-relative+0":"torsdag denna vecka","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"i övermorgon","field-thu-relative+1":"torsdag nästa vecka","dateFormatItem-H":"HH","months-standAlone-abbr":["Jan.","Feb.","Mars","Apr.","Maj","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dec."],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-Gy":"y G","dateFormatItem-M":"L","days-standAlone-wide":["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"söndag denna vecka","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["K1","K2","K3","K4"],"field-sun-relative+1":"söndag nästa vecka","eraAbbr":["f.Kr.","e.Kr."],"field-minute":"Minut","field-dayperiod":"fm/em","days-standAlone-abbr":["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"i går","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"f","field-day-relative+-2":"i förrgår","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","field-day":"Dag","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-zone":"Tidszon","dateFormatItem-y":"y","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"i fjol","field-month-relative+-1":"förra månaden","dateFormatItem-hm":"h:mm a","dayPeriods-format-abbr-pm":"EM","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"eraNames":["före Kristus","efter Kristus"],"dateFormatItem-yMMMd":"d MMM y","days-format-narrow":["S","M","T","O","T","F","L"],"days-standAlone-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-MMM":"LLL","field-month":"Månad","field-tue-relative+0":"tisdag denna vecka","field-tue-relative+1":"tisdag nästa vecka","dayPeriods-format-wide-am":"fm","dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","dateFormat-short":"y-MM-dd","dateFormatItem-MMd":"d/M","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"Sekund","field-sat-relative+-1":"lördag förra veckan","dateFormatItem-yMMMEd":"E d MMM y","field-sun-relative+-1":"söndag förra veckan","field-month-relative+0":"denna månad","field-month-relative+1":"nästa månad","dateFormatItem-Ed":"E d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Vecka","dateFormat-medium":"d MMM y","field-year-relative+0":"i år","field-week-relative+-1":"förra veckan","field-year-relative+1":"nästa år","dayPeriods-format-narrow-pm":"e","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"måndag förra veckan","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+0":"denna sön.","field-sun-narrow-relative+1":"nästa sön.","months-format-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"dayPeriods-standAlone-abbr-pm":"e.m.","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre.","eraNarrow":["f.Kr.","e.Kr."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM y","dayPeriods-format-abbr-night1":"på natten","dayPeriods-format-narrow-evening1":"på kvällen","days-standAlone-narrow":["S","M","T","O","T","F","L"],"days-standAlone-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"dayPeriods-format-abbr-afternoon1":"på efterm.","dayPeriods-format-wide-evening1":"på kvällen","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"förra ons.","dayPeriods-standAlone-wide-evening1":"kväll","field-minute-narrow-relative+0":"denna minut","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"dateFormatItem-yMM":"y-MM","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"kväll","dayPeriods-standAlone-abbr-afternoon1":"efterm.","field-thu-relative+0":"torsdag denna vecka","dayPeriods-standAlone-abbr-night1":"natt","field-thu-relative+1":"torsdag nästa vecka","dayPeriods-format-wide-am":"fm","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","dateFormatItem-yMd":"y-MM-dd","field-thu-narrow-relative+-1":"förra tors.","field-quarter-relative+0":"detta kvartal","field-quarter-relative+1":"nästa kvartal","field-sun-short-relative+0":"sön. denna vecka","timeFormat-short":"HH.mm","field-sun-short-relative+1":"sön. nästa vecka","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"på efterm.","dateFormatItem-Md":"d/M","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm a v","field-week-narrow":"v","field-hour-relative+0":"denna timme","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-minute-narrow":"m","dateFormatItem-MMMMEd":"E d MMMM","field-thu-short-relative+0":"tors. denna vecka","field-mon-relative+0":"måndag denna vecka","field-thu-short-relative+1":"tors. nästa vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+0":"idag","field-era-short":"era","field-day-narrow-relative+1":"imorgon","field-sat-narrow-relative+0":"denna lör.","field-day-narrow-relative+2":"i övermorgon","timeFormat-long":"HH.mm.ss z","field-sat-narrow-relative+1":"nästa lör.","field-week-narrow-relative+0":"denna v.","field-week-narrow-relative+1":"nästa v.","field-hour-short-relative+0":"denna timme","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-month":"månad","months-standAlone-wide":["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],"field-weekday-narrow":"veckodag","dayPeriods-standAlone-narrow-afternoon1":"efterm.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","dayPeriods-format-abbr-evening1":"på kvällen","dayPeriods-format-narrow-midnight":"midn.","dayPeriods-format-wide-midnight":"midnatt","field-tue-relative+0":"tisdag denna vecka","field-tue-relative+1":"tisdag nästa vecka","dayPeriods-standAlone-abbr-evening1":"kväll","field-minute-short-relative+0":"denna minut","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"midnatt","field-year-narrow":"år","field-tue-short-relative+0":"tis. denna vecka","dayPeriods-standAlone-narrow-midnight":"midn.","field-tue-short-relative+1":"tis. nästa vecka","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","dateFormatItem-M":"L","field-wed-short-relative+0":"ons. denna vecka","field-fri-short-relative+0":"fre. denna vecka","field-wed-short-relative+1":"ons. nästa vecka","field-fri-short-relative+1":"fre. nästa vecka","field-weekOfMonth-short":"vk. i mån.","field-quarter-short-relative+-1":"förra kv.","field-year-short-relative+-1":"i fjol","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"på natten","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"förra kv.","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"em","dateFormatItem-h":"h a","quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"field-weekOfMonth-narrow":"vk.i mån.","dateFormatItem-y":"y","field-minute-relative+0":"denna minut","field-year-short-relative+0":"i år","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"nästa år","field-weekday":"veckodag","dayPeriods-format-narrow-pm":"em","field-tue-narrow-relative+-1":"förra tis.","dateFormatItem-yMEd":"E, y-MM-dd","dayPeriods-standAlone-wide-night1":"natt","field-year-narrow-relative+-1":"i fjol","field-sat-relative+-1":"lördag förra veckan","dayPeriods-format-abbr-midnight":"midnatt","dayPeriods-format-narrow-morning1":"på morg.","dayPeriods-format-narrow-morning2":"på förm.","dayPeriods-format-wide-morning1":"på morgonen","dayPeriods-format-wide-morning2":"på förmiddagen","dayPeriods-standAlone-abbr-midnight":"midnatt","dayPeriods-standAlone-narrow-pm":"em","dayPeriods-standAlone-wide-morning1":"morgon","dayPeriods-standAlone-wide-morning2":"förmiddag","field-second":"sekund","dateFormatItem-yMMMEd":"E d MMM y","field-year-relative+-1":"i fjol","field-weekdayOfMonth-short":"veckodag i mån.","dateFormat-short":"y-MM-dd","eraNames":["före Kristus","efter Kristus"],"field-second-short":"sek","field-thu-short-relative+-1":"tors. förra veckan","field-zone":"tidszon","field-dayperiod-narrow":"fm/em","field-sun-short-relative+-1":"sön. förra veckan","dayPeriods-standAlone-narrow-morning1":"morg.","dayPeriods-standAlone-narrow-morning2":"förm.","eraAbbr":["f.Kr.","e.Kr."],"field-week-short":"v","dayPeriods-standAlone-abbr-am":"f.m.","dayPeriods-standAlone-wide-pm":"eftermiddag","dateFormatItem-ms":"mm:ss","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","field-day-relative+2":"i övermorgon","field-day-short-relative+0":"i dag","field-dayOfYear-short":"dag under året","field-day-short-relative+1":"i morgon","dateFormat-long":"d MMMM y","field-day-short-relative+2":"i övermorgon","field-sun-narrow-relative+-1":"förra sön.","field-second-relative+0":"nu","field-quarter-relative+-1":"förra kvartalet","dayPeriods-format-narrow-night1":"på natten","quarters-format-abbr":["K1","K2","K3","K4"],"dayPeriods-standAlone-narrow-night1":"natt","field-week-relative+-1":"förra veckan","dayPeriods-format-abbr-morning1":"på morg.","field-month-relative+-1":"förra månaden","dayPeriods-format-abbr-morning2":"på förm.","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year":"år","field-era":"era","dayPeriods-standAlone-abbr-morning1":"morgon","dayPeriods-standAlone-abbr-morning2":"förm.","days-standAlone-short":["sö","må","ti","on","to","fr","lö"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ y","field-day-short-relative+-1":"i går","field-day-short-relative+-2":"i förrgår","dateFormatItem-GyMMM":"MMM y G","timeFormat-full":"'kl'. HH.mm.ss zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"timme","field-dayOfYear-narrow":"dag under året","field-second-narrow-relative+0":"nu","field-quarter":"kvartal","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","dateFormatItem-MMdd":"dd/MM","field-day":"dag","field-mon-relative+-1":"måndag förra veckan","field-dayOfYear":"dag under året","dateFormat-medium":"d MMM y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d MMM y G","dateFormatItem-MEd":"E d/M","field-tue-short-relative+-1":"tis. förra veckan","field-year-short":"år","field-month-short":"m","dateFormatItem-MMMEd":"E d MMM","dayPeriods-format-wide-afternoon1":"på eftermiddagen","dateFormatItem-MMMd":"d MMM","dateFormatItem-Bh":"h B","months-format-abbr":["jan.","feb.","mars","apr.","maj","juni","juli","aug.","sep.","okt.","nov.","dec."],"dayPeriods-format-abbr-am":"fm","field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","dayPeriods-format-wide-pm":"em","days-standAlone-abbr":["sön","mån","tis","ons","tors","fre","lör"],"field-zone-short":"tidszon","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","dayPeriods-standAlone-wide-afternoon1":"eftermiddag","field-fri-short-relative+-1":"fre. förra veckan","field-month-narrow":"mån","dayPeriods-format-narrow-am":"fm","field-month-narrow-relative+-1":"förra mån.","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"field-weekday-short":"veckodag","field-day-narrow-relative+-1":"igår","field-day-narrow-relative+-2":"i förrgår","field-quarter-short":"kv.","days-format-short":["sö","må","ti","on","to","fr","lö"],"months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"kv.","field-mon-short-relative+0":"mån. denna vecka","field-mon-short-relative+1":"mån. nästa vecka","field-dayperiod-short":"fm/em","dayPeriods-standAlone-narrow-am":"fm","field-week-narrow-relative+-1":"förra v.","field-thu-relative+-1":"torsdag förra veckan","field-fri-narrow-relative+-1":"förra fre.","field-mon-short-relative+-1":"mån. förra veckan","timeFormat-medium":"HH.mm.ss","field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","dateFormatItem-Ed":"E d","field-wed-relative+-1":"onsdag förra veckan","field-weekOfMonth":"vecka i månaden","field-weekdayOfMonth-narrow":"veckodag i mån.","dayPeriods-standAlone-wide-am":"förmiddag","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"fredag förra veckan","field-minute":"minut","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"nu","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"field-day-short":"dag","field-dayperiod":"fm/em","field-hour-short":"tim","months-standAlone-abbr":["jan.","feb.","mars","apr.","maj","juni","juli","aug.","sep.","okt.","nov.","dec."],"field-month-relative+0":"denna månad","field-second-narrow":"s","field-month-relative+1":"nästa månad","dateFormat-full":"EEEE d MMMM y","field-era-narrow":"era","field-sat-short-relative+-1":"lör. förra veckan","field-week-short-relative+-1":"förra v.","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"y-MM","field-sun-relative+-1":"söndag förra veckan","field-wed-short-relative+-1":"ons. förra veckan","field-weekdayOfMonth":"veckodag i månad","field-quarter-narrow-relative+0":"detta kv.","dateFormatItem-GyMMMEd":"E d MMM y G","field-quarter-narrow-relative+1":"nästa kv.","field-sat-short-relative+0":"lör. denna vecka","field-hour-narrow":"h","field-sat-short-relative+1":"lör. nästa vecka","field-year-narrow-relative+0":"i år","field-year-narrow-relative+1":"nästa år","dateFormatItem-Gy":"y G","field-zone-narrow":"tidszon","field-tue-relative+-1":"tisdag förra veckan","field-minute-short":"min","dateFormatItem-yw":"'vecka' w, Y","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka","dateFormatItem-MMM":"LLL","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","field-sat-narrow-relative+-1":"förra lör.","quarters-standAlone-abbr":["K1","K2","K3","K4"],"dateFormatItem-MMd":"d/M","dateFormatItem-MMMMW":"'vecka' W 'i' MMMM","field-month-short-relative+-1":"förra mån.","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-hour-narrow-relative+0":"denna timme","field-week":"vecka","field-day-narrow":"dag"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/hebrew.js b/lib/dojo/cldr/nls/sv/hebrew.js
index 32856c166..01c534fa2 100644
--- a/lib/dojo/cldr/nls/sv/hebrew.js
+++ b/lib/dojo/cldr/nls/sv/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/hebrew",{"days-standAlone-short":["Sö","Må","Ti","On","To","Fr","Lö"],"field-second-relative+0":"nu","field-weekday":"Veckodag","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"tisdag förra veckan","days-format-short":["sö","må","ti","on","to","fr","lö"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"fredag förra veckan","field-wed-relative+-1":"onsdag förra veckan","months-format-wide":["tishrí","heshván","kislév","tevét","shevát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"dayPeriods-format-wide-pm":"em","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E, y-MM-dd G","field-thu-relative+-1":"torsdag förra veckan","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"FM","field-era":"Era","months-standAlone-wide":["Tishrí","Heshván","Kislév","Tevét","Shevát","Adár I","Adár","Nisán","Ijjár","Siván","Tammúz","Ab","Elúl"],"quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"field-year":"År","field-hour":"Timme","months-format-abbr":["tishrí","heshván","kislév","tevét","shevát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-thu-relative+0":"torsdag denna vecka","field-day-relative+1":"i morgon","field-thu-relative+1":"torsdag nästa vecka","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"i övermorgon","months-standAlone-abbr":["Tishrí","Heshván","Kislév","Tevét","Shevát","Adár I","Adár","Nisán","Ijjár","Siván","Tammúz","Ab","Elúl"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","months-standAlone-wide-leap":"Adár II","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["AM"],"field-minute":"Minut","field-dayperiod":"fm/em","days-standAlone-abbr":["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],"field-day-relative+-1":"i går","dayPeriods-format-narrow-am":"f","field-day-relative+-2":"i förrgår","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","field-day":"Dag","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-zone":"Tidszon","months-standAlone-abbr-leap":"Adár II","dateFormatItem-y":"y G","field-year-relative+-1":"i fjol","field-month-relative+-1":"förra månaden","dayPeriods-format-abbr-pm":"EM","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMd":"G y-MM-dd","field-month":"Månad","days-standAlone-narrow":["S","M","T","O","T","F","L"],"field-tue-relative+0":"tisdag denna vecka","field-tue-relative+1":"tisdag nästa vecka","dayPeriods-format-wide-am":"fm","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","dateFormat-short":"G y-MM-dd","field-second":"Sekund","field-sat-relative+-1":"lördag förra veckan","field-sun-relative+-1":"söndag förra veckan","field-month-relative+0":"denna månad","field-month-relative+1":"nästa månad","dateFormatItem-Ed":"E d","field-week":"Vecka","dateFormat-medium":"d MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"förra veckan","dateFormatItem-yyyyM":"G y-MM","field-year-relative+1":"nästa år","dayPeriods-format-narrow-pm":"e","months-format-wide-leap":"adár II","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-yyyy":"y G","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/hebrew",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","timeFormat-short":"HH.mm","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-thu-short-relative+0":"tors. denna vecka","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","dayPeriods-format-narrow-am":"fm","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"veckodag i mån.","dayPeriods-format-abbr-am":"fm","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["Anno Mundi"],"field-weekOfMonth":"vecka i månaden","dayPeriods-standAlone-abbr-pm":"e.m.","field-month-short":"m","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"y-MM-dd G","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","dayPeriods-format-wide-am":"fm","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","dateFormatItem-yyyyMEd":"E y-MM-dd G","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dayPeriods-standAlone-wide-pm":"eftermiddag","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-GyMMM":"MMM y G","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","dayPeriods-format-narrow-pm":"em","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AM"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"em","dateFormatItem-yyyyM":"y-MM G","field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","field-quarter-relative+-1":"förra kvartalet","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"fm/em","dayPeriods-standAlone-narrow-am":"fm","field-week-narrow-relative+-1":"förra v.","days-format-short":["sö","må","ti","on","to","fr","lö"],"dayPeriods-format-wide-pm":"em","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"denna minut","field-hour":"timme","months-format-wide":["tishrí","heshván","kislév","tevét","shevát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","months-format-abbr":["tishrí","heshván","kislév","tevét","shevát","adár I","adár","nisán","ijjár","siván","tammúz","ab","elúl"],"field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","dateFormat-short":"G y-MM-dd","field-thu-short-relative+-1":"tors. förra veckan","field-year-narrow-relative+-1":"i fjol","days-standAlone-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"em","field-wed-short-relative+0":"ons. denna vecka","months-standAlone-wide":["Tishrí","Heshván","Kislév","Tevét","Shevát","Adár I","Adár","Nisán","Ijjár","Siván","Tammúz","Ab","Elúl"],"field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","days-standAlone-abbr":["sön","mån","tis","ons","tors","fre","lör"],"field-second-narrow-relative+0":"nu","months-format-abbr-leap":"adár II","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-day-short-relative+1":"i morgon","field-sat-relative+0":"lördag denna vecka","field-quarter-narrow-relative+1":"nästa kv.","field-day-short-relative+2":"i övermorgon","field-sat-relative+1":"lördag nästa vecka","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","months-standAlone-abbr":["Tishrí","Heshván","Kislév","Tevét","Shevát","Adár I","Adár","Nisán","Ijjár","Siván","Tammúz","Ab","Elúl"],"months-format-wide-leap":"adár II","field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","timeFormat-full":"'kl'. HH.mm.ss zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"tidszon","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"fm/em","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","days-standAlone-short":["sö","må","ti","on","to","fr","lö"],"field-week-short-relative+-1":"förra v.","months-standAlone-abbr-leap":"Adár II","field-hour-narrow-relative+0":"denna timme","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"tim","field-zone-short":"tidszon","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","eraNarrow":"AM","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-year-short-relative+-1":"i fjol","field-zone":"tidszon","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","months-standAlone-wide-leap":"Adár II","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","dayPeriods-standAlone-abbr-am":"f.m.","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre.","dayPeriods-standAlone-wide-am":"förmiddag"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/indian.js b/lib/dojo/cldr/nls/sv/indian.js
index 80fbd29fa..a351c95c8 100644
--- a/lib/dojo/cldr/nls/sv/indian.js
+++ b/lib/dojo/cldr/nls/sv/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/indian",{"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","field-dayperiod":"fm/em","field-sun-relative+-1":"söndag förra veckan","field-mon-relative+-1":"måndag förra veckan","field-minute":"Minut","field-day-relative+-1":"i går","field-weekday":"Veckodag","field-day-relative+-2":"i förrgår","field-era":"Era","field-hour":"Timme","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","months-standAlone-abbr":["Chaitra","Vaishākh","Jyaishtha","Āshādha","Shrāvana","Bhādrapad","Āshwin","Kārtik","Mārgashīrsha","Paush","Māgh","Phālgun"],"field-wed-relative+-1":"onsdag förra veckan","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","eraAbbr":["SAKA"],"field-day-relative+2":"i övermorgon","field-tue-relative+0":"tisdag denna vecka","field-zone":"Tidszon","field-tue-relative+1":"tisdag nästa vecka","field-week-relative+-1":"förra veckan","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-sat-relative+-1":"lördag förra veckan","field-year-relative+-1":"i fjol","field-year":"År","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","months-standAlone-wide":["Chaitra","Vaishākh","Jyaishtha","Āshādha","Shrāvana","Bhādrapad","Āshwin","Kārtik","Mārgashīrsha","Paush","Māgh","Phālgun"],"field-week":"Vecka","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka","months-format-abbr":["chaitra","vaishākh","jyaishtha","āshādha","shrāvana","bhādrapad","āshwin","kārtik","mārgashīrsha","paush","māgh","phālgun"],"field-month-relative+0":"denna månad","field-month":"Månad","field-month-relative+1":"nästa månad","field-fri-relative+-1":"fredag förra veckan","field-second":"Sekund","field-tue-relative+-1":"tisdag förra veckan","field-day":"Dag","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-thu-relative+0":"torsdag denna vecka","field-second-relative+0":"nu","field-thu-relative+1":"torsdag nästa vecka","months-format-wide":["chaitra","vaishākh","jyaishtha","āshādha","shrāvana","bhādrapad","āshwin","kārtik","mārgashīrsha","paush","māgh","phālgun"],"field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-month-relative+-1":"förra månaden","field-thu-relative+-1":"torsdag förra veckan"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/indian",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-thu-short-relative+0":"tors. denna vecka","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","field-weekdayOfMonth-narrow":"veckodag i mån.","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","eraNames":["Saka-eran"],"field-weekOfMonth":"vecka i månaden","field-month-short":"m","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","eraAbbr":["SAKA"],"field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","field-quarter-relative+-1":"förra kvartalet","field-dayperiod-narrow":"fm/em","field-week-narrow-relative+-1":"förra v.","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","field-hour":"timme","field-minute-narrow-relative+0":"denna minut","months-format-wide":["chaitra","vaishākh","jyaishtha","āshādha","shrāvana","bhādrapad","āshwin","kārtik","mārgashīrsha","paush","māgh","phālgun"],"field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","months-format-abbr":["chaitra","vaishākh","jyaishtha","āshādha","shrāvana","bhādrapad","āshwin","kārtik","mārgashīrsha","paush","māgh","phālgun"],"field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","field-thu-short-relative+-1":"tors. förra veckan","field-year-narrow-relative+-1":"i fjol","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","field-wed-short-relative+0":"ons. denna vecka","months-standAlone-wide":["Chaitra","Vaishākh","Jyaishtha","Āshādha","Shrāvana","Bhādrapad","Āshwin","Kārtik","Mārgashīrsha","Paush","Māgh","Phālgun"],"field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","field-second-narrow-relative+0":"nu","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-sat-relative+0":"lördag denna vecka","field-day-short-relative+1":"i morgon","field-quarter-narrow-relative+1":"nästa kv.","field-sat-relative+1":"lördag nästa vecka","field-day-short-relative+2":"i övermorgon","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","months-standAlone-abbr":["Chaitra","Vaishākh","Jyaishtha","Āshādha","Shrāvana","Bhādrapad","Āshwin","Kārtik","Mārgashīrsha","Paush","Māgh","Phālgun"],"field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","field-zone-narrow":"tidszon","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"fm/em","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","field-hour-short":"tim","field-zone-short":"tidszon","field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","eraNarrow":"SAKA","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","field-year-short-relative+-1":"i fjol","field-zone":"tidszon","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/islamic.js b/lib/dojo/cldr/nls/sv/islamic.js
index 02cb14633..a5e5372e3 100644
--- a/lib/dojo/cldr/nls/sv/islamic.js
+++ b/lib/dojo/cldr/nls/sv/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/islamic",{"days-standAlone-short":["Sö","Må","Ti","On","To","Fr","Lö"],"field-second-relative+0":"nu","field-weekday":"Veckodag","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"tisdag förra veckan","days-format-short":["sö","må","ti","on","to","fr","lö"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"fredag förra veckan","field-wed-relative+-1":"onsdag förra veckan","months-format-wide":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","jumada-l-ula","jumada-l-akhira","rajab","sha’ban","ramadan","shawwal","dhu-l-ga’da","dhu-l-hijja"],"dayPeriods-format-wide-pm":"em","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E, y-MM-dd G","field-thu-relative+-1":"torsdag förra veckan","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"FM","field-era":"Era","months-standAlone-wide":["Muharram","Safar","Rabi’ al-awwal","Rabi’ al-akhir","Jumada-l-ula","Jumada-l-akhira","Rajab","Sha’ban","Ramadan","Shawwal","Dhu-l-ga’da","Dhu-l-hijja"],"quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"field-year":"År","field-hour":"Timme","months-format-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","jumada-l-ula","jumada-l-akhira","rajab","sha’ban","ramadan","shawwal","dhu-l-ga’da","dhu-l-hijja"],"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-thu-relative+0":"torsdag denna vecka","field-day-relative+1":"i morgon","field-thu-relative+1":"torsdag nästa vecka","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"i övermorgon","months-standAlone-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","jumada-l-ula","jumada-l-akhira","rajab","sha’ban","ramadan","shawwal","dhu-l-ga’da","dhu-l-hijja"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["AH"],"field-minute":"Minut","field-dayperiod":"fm/em","days-standAlone-abbr":["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],"field-day-relative+-1":"i går","dayPeriods-format-narrow-am":"f","field-day-relative+-2":"i förrgår","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","field-day":"Dag","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-zone":"Tidszon","dateFormatItem-y":"y G","field-year-relative+-1":"i fjol","field-month-relative+-1":"förra månaden","dayPeriods-format-abbr-pm":"EM","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMd":"G y-MM-dd","field-month":"Månad","days-standAlone-narrow":["S","M","T","O","T","F","L"],"field-tue-relative+0":"tisdag denna vecka","field-tue-relative+1":"tisdag nästa vecka","dayPeriods-format-wide-am":"fm","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","dateFormat-short":"G y-MM-dd","field-second":"Sekund","field-sat-relative+-1":"lördag förra veckan","field-sun-relative+-1":"söndag förra veckan","field-month-relative+0":"denna månad","field-month-relative+1":"nästa månad","dateFormatItem-Ed":"E d","field-week":"Vecka","dateFormat-medium":"d MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"förra veckan","dateFormatItem-yyyyM":"G y-MM","field-year-relative+1":"nästa år","dayPeriods-format-narrow-pm":"e","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-yyyy":"y G","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/islamic",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","timeFormat-short":"HH.mm","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-thu-short-relative+0":"tors. denna vecka","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","dayPeriods-format-narrow-am":"fm","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"veckodag i mån.","dayPeriods-format-abbr-am":"fm","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","eraNames":["efter Hirja"],"field-weekOfMonth":"vecka i månaden","dayPeriods-standAlone-abbr-pm":"e.m.","field-month-short":"m","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"y-MM-dd G","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","dayPeriods-format-wide-am":"fm","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","dateFormatItem-yyyyMEd":"E y-MM-dd G","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dayPeriods-standAlone-wide-pm":"eftermiddag","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-GyMMM":"MMM y G","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","dayPeriods-format-narrow-pm":"em","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AH"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"em","dateFormatItem-yyyyM":"y-MM G","field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","field-quarter-relative+-1":"förra kvartalet","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"fm/em","dayPeriods-standAlone-narrow-am":"fm","field-week-narrow-relative+-1":"förra v.","days-format-short":["sö","må","ti","on","to","fr","lö"],"dayPeriods-format-wide-pm":"em","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"denna minut","field-hour":"timme","months-format-wide":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","jumada-l-ula","jumada-l-akhira","rajab","sha’ban","ramadan","shawwal","dhu-l-ga’da","dhu-l-hijja"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","months-format-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","jumada-l-ula","jumada-l-akhira","rajab","sha’ban","ramadan","shawwal","dhu-l-ga’da","dhu-l-hijja"],"field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","dateFormat-short":"G y-MM-dd","field-thu-short-relative+-1":"tors. förra veckan","field-year-narrow-relative+-1":"i fjol","days-standAlone-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"em","field-wed-short-relative+0":"ons. denna vecka","months-standAlone-wide":["Muharram","Safar","Rabi’ al-awwal","Rabi’ al-akhir","Jumada-l-ula","Jumada-l-akhira","Rajab","Sha’ban","Ramadan","Shawwal","Dhu-l-ga’da","Dhu-l-hijja"],"field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","days-standAlone-abbr":["sön","mån","tis","ons","tors","fre","lör"],"field-second-narrow-relative+0":"nu","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-sat-relative+0":"lördag denna vecka","field-day-short-relative+1":"i morgon","field-quarter-narrow-relative+1":"nästa kv.","field-sat-relative+1":"lördag nästa vecka","field-day-short-relative+2":"i övermorgon","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","months-standAlone-abbr":["muharram","safar","rabi’ al-awwal","rabi’ al-akhir","jumada-l-ula","jumada-l-akhira","rajab","sha’ban","ramadan","shawwal","dhu-l-ga’da","dhu-l-hijja"],"field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","timeFormat-full":"'kl'. HH.mm.ss zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"tidszon","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"fm/em","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","days-standAlone-short":["sö","må","ti","on","to","fr","lö"],"field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"tim","field-zone-short":"tidszon","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","eraNarrow":"AH","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-year-short-relative+-1":"i fjol","field-zone":"tidszon","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","dayPeriods-standAlone-abbr-am":"f.m.","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre.","dayPeriods-standAlone-wide-am":"förmiddag"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/japanese.js b/lib/dojo/cldr/nls/sv/japanese.js
index b7cbb5fcd..8eff89dd2 100644
--- a/lib/dojo/cldr/nls/sv/japanese.js
+++ b/lib/dojo/cldr/nls/sv/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/japanese",{"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","field-dayperiod":"fm/em","field-sun-relative+-1":"söndag förra veckan","field-mon-relative+-1":"måndag förra veckan","field-minute":"Minut","dateTimeFormat-full":"{1} {0}","field-day-relative+-1":"i går","field-weekday":"Veckodag","field-day-relative+-2":"i förrgår","dateTimeFormat-short":"{1} {0}","field-era":"Era","dateTimeFormat-medium":"{1} {0}","field-hour":"Timme","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","field-wed-relative+-1":"onsdag förra veckan","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","eraAbbr":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tempyō (729–749)","Tempyō-kampō (749–749)","Tempyō-shōhō (749–757)","Tempyō-hōji (757–765)","Temphō-jingo (765–767)","Jingo-keiun (767–770)","Hōki (770–780)","Ten-ō (781–782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saiko (854–857)","Tennan (857–859)","Jōgan (859–877)","Genkei (877–885)","Ninna (885–889)","Kampyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Shōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten-en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Ei-en (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eiho (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kaho (1094–1096)","Eichō (1096–1097)","Shōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110–1113)","Eikyū (1113–1118)","Gen-ei (1118–1120)","Hoan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hoen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Tenyō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hogen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin-an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryuku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken-ei (1206–1207)","Shōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Shōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tempuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En-ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun-ō (1260–1261)","Kōchō (1261–1264)","Bun-ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkei (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkyō (1321–1324)","Shōchū (1324–1326)","Kareki (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kemmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun-an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenmon (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genwa (1615–1624)","Kan-ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Shōō (1652–1655)","Meiryaku (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenwa (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan-en (1748–1751)","Hōryaku (1751–1764)","Meiwa (1764–1772)","An-ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man-en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","Meiji","Taishō","Shōwa","Heisei"],"field-day-relative+2":"i övermorgon","field-tue-relative+0":"tisdag denna vecka","field-zone":"Tidszon","field-tue-relative+1":"tisdag nästa vecka","field-week-relative+-1":"förra veckan","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-sat-relative+-1":"lördag förra veckan","field-year-relative+-1":"i fjol","field-year":"År","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","dateTimeFormat-long":"{1} {0}","field-week":"Vecka","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka","field-month-relative+0":"denna månad","field-month":"Månad","field-month-relative+1":"nästa månad","field-fri-relative+-1":"fredag förra veckan","field-second":"Sekund","field-tue-relative+-1":"tisdag förra veckan","field-day":"Dag","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-thu-relative+0":"torsdag denna vecka","field-second-relative+0":"nu","field-thu-relative+1":"torsdag nästa vecka","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-month-relative+-1":"förra månaden","field-thu-relative+-1":"torsdag förra veckan"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/japanese",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-thu-short-relative+0":"tors. denna vecka","field-day-short-relative+-1":"i går","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","field-weekdayOfMonth-narrow":"veckodag i mån.","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","field-weekOfMonth":"vecka i månaden","field-month-short":"m","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","eraAbbr":["Taika (645–650)","Hakuchi (650–671)","Hakuhō (672–686)","Shuchō (686–701)","Taihō (701–704)","Keiun (704–708)","Wadō (708–715)","Reiki (715–717)","Yōrō (717–724)","Jinki (724–729)","Tempyō (729–749)","Tempyō-kampō (749–749)","Tempyō-shōhō (749–757)","Tempyō-hōji (757–765)","Temphō-jingo (765–767)","Jingo-keiun (767–770)","Hōki (770–780)","Ten-ō (781–782)","Enryaku (782–806)","Daidō (806–810)","Kōnin (810–824)","Tenchō (824–834)","Jōwa (834–848)","Kajō (848–851)","Ninju (851–854)","Saiko (854–857)","Tennan (857–859)","Jōgan (859–877)","Genkei (877–885)","Ninna (885–889)","Kampyō (889–898)","Shōtai (898–901)","Engi (901–923)","Enchō (923–931)","Shōhei (931–938)","Tengyō (938–947)","Tenryaku (947–957)","Tentoku (957–961)","Ōwa (961–964)","Kōhō (964–968)","Anna (968–970)","Tenroku (970–973)","Ten-en (973–976)","Jōgen (976–978)","Tengen (978–983)","Eikan (983–985)","Kanna (985–987)","Ei-en (987–989)","Eiso (989–990)","Shōryaku (990–995)","Chōtoku (995–999)","Chōhō (999–1004)","Kankō (1004–1012)","Chōwa (1012–1017)","Kannin (1017–1021)","Jian (1021–1024)","Manju (1024–1028)","Chōgen (1028–1037)","Chōryaku (1037–1040)","Chōkyū (1040–1044)","Kantoku (1044–1046)","Eishō (1046–1053)","Tengi (1053–1058)","Kōhei (1058–1065)","Jiryaku (1065–1069)","Enkyū (1069–1074)","Shōho (1074–1077)","Shōryaku (1077–1081)","Eiho (1081–1084)","Ōtoku (1084–1087)","Kanji (1087–1094)","Kaho (1094–1096)","Eichō (1096–1097)","Shōtoku (1097–1099)","Kōwa (1099–1104)","Chōji (1104–1106)","Kashō (1106–1108)","Tennin (1108–1110)","Ten-ei (1110–1113)","Eikyū (1113–1118)","Gen-ei (1118–1120)","Hoan (1120–1124)","Tenji (1124–1126)","Daiji (1126–1131)","Tenshō (1131–1132)","Chōshō (1132–1135)","Hoen (1135–1141)","Eiji (1141–1142)","Kōji (1142–1144)","Tenyō (1144–1145)","Kyūan (1145–1151)","Ninpei (1151–1154)","Kyūju (1154–1156)","Hogen (1156–1159)","Heiji (1159–1160)","Eiryaku (1160–1161)","Ōho (1161–1163)","Chōkan (1163–1165)","Eiman (1165–1166)","Nin-an (1166–1169)","Kaō (1169–1171)","Shōan (1171–1175)","Angen (1175–1177)","Jishō (1177–1181)","Yōwa (1181–1182)","Juei (1182–1184)","Genryuku (1184–1185)","Bunji (1185–1190)","Kenkyū (1190–1199)","Shōji (1199–1201)","Kennin (1201–1204)","Genkyū (1204–1206)","Ken-ei (1206–1207)","Shōgen (1207–1211)","Kenryaku (1211–1213)","Kenpō (1213–1219)","Shōkyū (1219–1222)","Jōō (1222–1224)","Gennin (1224–1225)","Karoku (1225–1227)","Antei (1227–1229)","Kanki (1229–1232)","Jōei (1232–1233)","Tempuku (1233–1234)","Bunryaku (1234–1235)","Katei (1235–1238)","Ryakunin (1238–1239)","En-ō (1239–1240)","Ninji (1240–1243)","Kangen (1243–1247)","Hōji (1247–1249)","Kenchō (1249–1256)","Kōgen (1256–1257)","Shōka (1257–1259)","Shōgen (1259–1260)","Bun-ō (1260–1261)","Kōchō (1261–1264)","Bun-ei (1264–1275)","Kenji (1275–1278)","Kōan (1278–1288)","Shōō (1288–1293)","Einin (1293–1299)","Shōan (1299–1302)","Kengen (1302–1303)","Kagen (1303–1306)","Tokuji (1306–1308)","Enkei (1308–1311)","Ōchō (1311–1312)","Shōwa (1312–1317)","Bunpō (1317–1319)","Genō (1319–1321)","Genkyō (1321–1324)","Shōchū (1324–1326)","Kareki (1326–1329)","Gentoku (1329–1331)","Genkō (1331–1334)","Kemmu (1334–1336)","Engen (1336–1340)","Kōkoku (1340–1346)","Shōhei (1346–1370)","Kentoku (1370–1372)","Bunchū (1372–1375)","Tenju (1375–1379)","Kōryaku (1379–1381)","Kōwa (1381–1384)","Genchū (1384–1392)","Meitoku (1384–1387)","Kakei (1387–1389)","Kōō (1389–1390)","Meitoku (1390–1394)","Ōei (1394–1428)","Shōchō (1428–1429)","Eikyō (1429–1441)","Kakitsu (1441–1444)","Bun-an (1444–1449)","Hōtoku (1449–1452)","Kyōtoku (1452–1455)","Kōshō (1455–1457)","Chōroku (1457–1460)","Kanshō (1460–1466)","Bunshō (1466–1467)","Ōnin (1467–1469)","Bunmei (1469–1487)","Chōkyō (1487–1489)","Entoku (1489–1492)","Meiō (1492–1501)","Bunki (1501–1504)","Eishō (1504–1521)","Taiei (1521–1528)","Kyōroku (1528–1532)","Tenmon (1532–1555)","Kōji (1555–1558)","Eiroku (1558–1570)","Genki (1570–1573)","Tenshō (1573–1592)","Bunroku (1592–1596)","Keichō (1596–1615)","Genwa (1615–1624)","Kan-ei (1624–1644)","Shōho (1644–1648)","Keian (1648–1652)","Shōō (1652–1655)","Meiryaku (1655–1658)","Manji (1658–1661)","Kanbun (1661–1673)","Enpō (1673–1681)","Tenwa (1681–1684)","Jōkyō (1684–1688)","Genroku (1688–1704)","Hōei (1704–1711)","Shōtoku (1711–1716)","Kyōhō (1716–1736)","Genbun (1736–1741)","Kanpō (1741–1744)","Enkyō (1744–1748)","Kan-en (1748–1751)","Hōryaku (1751–1764)","Meiwa (1764–1772)","An-ei (1772–1781)","Tenmei (1781–1789)","Kansei (1789–1801)","Kyōwa (1801–1804)","Bunka (1804–1818)","Bunsei (1818–1830)","Tenpō (1830–1844)","Kōka (1844–1848)","Kaei (1848–1854)","Ansei (1854–1860)","Man-en (1860–1861)","Bunkyū (1861–1864)","Genji (1864–1865)","Keiō (1865–1868)","Meiji","Taishō","Shōwa","Heisei"],"field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","field-quarter-relative+-1":"förra kvartalet","field-dayperiod-narrow":"fm/em","field-week-narrow-relative+-1":"förra v.","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","dateTimeFormat-long":"{1} {0}","field-hour":"timme","field-minute-narrow-relative+0":"denna minut","field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","field-thu-short-relative+-1":"tors. förra veckan","field-year-narrow-relative+-1":"i fjol","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","field-wed-short-relative+0":"ons. denna vecka","field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"nu","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-sat-relative+0":"lördag denna vecka","field-day-short-relative+1":"i morgon","field-quarter-narrow-relative+1":"nästa kv.","field-sat-relative+1":"lördag nästa vecka","field-day-short-relative+2":"i övermorgon","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","field-zone-narrow":"tidszon","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"fm/em","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","field-hour-short":"tim","field-zone-short":"tidszon","field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","field-year-short-relative+-1":"i fjol","field-zone":"tidszon","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/number.js b/lib/dojo/cldr/nls/sv/number.js
index 67acc6945..5f3e0aa23 100644
--- a/lib/dojo/cldr/nls/sv/number.js
+++ b/lib/dojo/cldr/nls/sv/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/number",{"group":" ","percentSign":"%","exponential":"×10^","scientificFormat":"#E0","percentFormat":"#,##0 %","list":";","infinity":"∞","minusSign":"−","decimal":",","superscriptingExponent":"·","nan":"¤¤¤","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤","plusSign":"+","decimalFormat-long":"000 biljoner","decimalFormat-short":"000 bn"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","decimalFormat-short":"000 bn","nan":"NaN","plusSign":"+","currencyFormat":"#,##0.00 ¤","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoner","decimalFormat":"#,##0.###","currencyFormat-short":"000 bn ¤","timeSeparator":".","decimal":",","exponential":"×10^"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/persian.js b/lib/dojo/cldr/nls/sv/persian.js
index e7fcc5b27..f9e6fe6c5 100644
--- a/lib/dojo/cldr/nls/sv/persian.js
+++ b/lib/dojo/cldr/nls/sv/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/persian",{"days-standAlone-short":["Sö","Må","Ti","On","To","Fr","Lö"],"months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-second-relative+0":"nu","field-weekday":"Veckodag","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"tisdag förra veckan","days-format-short":["sö","må","ti","on","to","fr","lö"],"dateFormat-long":"d MMMM y G","field-fri-relative+-1":"fredag förra veckan","field-wed-relative+-1":"onsdag förra veckan","months-format-wide":["farvardin","ordibehesht","khordād","tir","mordād","shahrivar","mehr","ābān","āzar","dey","bahman","esfand"],"dayPeriods-format-wide-pm":"em","dateFormat-full":"EEEE d MMMM y G","dateFormatItem-yyyyMEd":"E, y-MM-dd G","field-thu-relative+-1":"torsdag förra veckan","dateFormatItem-Md":"d/M","dayPeriods-format-abbr-am":"FM","field-era":"Era","months-standAlone-wide":["Farvardin","Ordibehesht","Khordād","Tir","Mordād","Shahrivar","Mehr","Ābān","Āzar","Dey","Bahman","Esfand"],"quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"field-year":"År","field-hour":"Timme","months-format-abbr":["farvardin","ordibehesht","khordād","tir","mordād","shahrivar","mehr","ābān","āzar","dey","bahman","esfand"],"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","timeFormat-full":"'kl'. HH:mm:ss zzzz","field-day-relative+0":"i dag","field-thu-relative+0":"torsdag denna vecka","field-day-relative+1":"i morgon","field-thu-relative+1":"torsdag nästa vecka","dateFormatItem-GyMMMd":"d MMM y G","field-day-relative+2":"i övermorgon","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordād","Tir","Mordād","Shahrivar","Mehr","Ābān","Āzar","Dey","Bahman","Esfand"],"quarters-format-abbr":["K1","K2","K3","K4"],"quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-Gy":"y G","dateFormatItem-yyyyMMMEd":"E d MMM y G","days-standAlone-wide":["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],"dateFormatItem-yyyyMMM":"MMM y G","dateFormatItem-yyyyMMMd":"d MMM y G","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","quarters-standAlone-abbr":["K1","K2","K3","K4"],"eraAbbr":["AP"],"field-minute":"Minut","field-dayperiod":"fm/em","days-standAlone-abbr":["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],"field-day-relative+-1":"i går","dayPeriods-format-narrow-am":"f","field-day-relative+-2":"i förrgår","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","field-day":"Dag","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-zone":"Tidszon","dateFormatItem-y":"y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-year-relative+-1":"i fjol","field-month-relative+-1":"förra månaden","dayPeriods-format-abbr-pm":"EM","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"days-format-narrow":["S","M","T","O","T","F","L"],"dateFormatItem-yyyyMd":"G y-MM-dd","field-month":"Månad","days-standAlone-narrow":["S","M","T","O","T","F","L"],"field-tue-relative+0":"tisdag denna vecka","field-tue-relative+1":"tisdag nästa vecka","dayPeriods-format-wide-am":"fm","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","dateFormat-short":"G y-MM-dd","field-second":"Sekund","field-sat-relative+-1":"lördag förra veckan","field-sun-relative+-1":"söndag förra veckan","field-month-relative+0":"denna månad","field-month-relative+1":"nästa månad","dateFormatItem-Ed":"E d","field-week":"Vecka","dateFormat-medium":"d MMM y G","field-year-relative+0":"i år","field-week-relative+-1":"förra veckan","dateFormatItem-yyyyM":"G y-MM","field-year-relative+1":"nästa år","dayPeriods-format-narrow-pm":"e","dateFormatItem-GyMMM":"MMM y G","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-yyyy":"y G","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/persian",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","timeFormat-short":"HH.mm","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-thu-short-relative+0":"tors. denna vecka","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","dayPeriods-format-narrow-am":"fm","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"veckodag i mån.","dayPeriods-format-abbr-am":"fm","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","timeFormat-medium":"HH.mm.ss","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","dateFormatItem-yyyyQQQ":"QQQ y G","months-standAlone-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"eraNames":["Anno Persarum"],"field-weekOfMonth":"vecka i månaden","dayPeriods-standAlone-abbr-pm":"e.m.","field-month-short":"m","dateFormatItem-GyMMMEd":"E d MMM y G","dateFormatItem-yyyyMd":"y-MM-dd G","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","dayPeriods-format-wide-am":"fm","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","dateFormatItem-yyyyMEd":"E y-MM-dd G","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","days-standAlone-narrow":["S","M","T","O","T","F","L"],"dayPeriods-standAlone-wide-pm":"eftermiddag","dateFormat-long":"d MMMM y G","dateFormatItem-GyMMMd":"d MMM y G","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","quarters-standAlone-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"days-format-narrow":["S","M","T","O","T","F","L"],"field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","dateFormatItem-GyMMM":"MMM y G","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","dayPeriods-format-narrow-pm":"em","dateFormat-medium":"d MMM y G","dateFormatItem-yyyyMMMM":"MMMM y G","eraAbbr":["AP"],"quarters-standAlone-abbr":["K1","K2","K3","K4"],"dayPeriods-format-abbr-pm":"em","dateFormatItem-yyyyM":"y-MM G","field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","months-format-narrow":["J","F","M","A","M","J","J","A","S","O","N","D"],"field-quarter-relative+-1":"förra kvartalet","dateFormatItem-yyyyMMMd":"d MMM y G","field-dayperiod-narrow":"fm/em","dayPeriods-standAlone-narrow-am":"fm","field-week-narrow-relative+-1":"förra v.","days-format-short":["sö","må","ti","on","to","fr","lö"],"dayPeriods-format-wide-pm":"em","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","dateFormatItem-Md":"d/M","field-minute-narrow-relative+0":"denna minut","field-hour":"timme","months-format-wide":["farvardin","ordibehesht","khordād","tir","mordād","shahrivar","mehr","ābān","āzar","dey","bahman","esfand"],"dateFormat-full":"EEEE d MMMM y G","field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","months-format-abbr":["farvardin","ordibehesht","khordād","tir","mordād","shahrivar","mehr","ābān","āzar","dey","bahman","esfand"],"field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","timeFormat-long":"HH.mm.ss z","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","dateFormat-short":"G y-MM-dd","field-thu-short-relative+-1":"tors. förra veckan","field-year-narrow-relative+-1":"i fjol","days-standAlone-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"dateFormatItem-yyyyMMMEd":"E d MMM y G","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","dateFormatItem-yyyy":"y G","dayPeriods-standAlone-narrow-pm":"em","field-wed-short-relative+0":"ons. denna vecka","months-standAlone-wide":["Farvardin","Ordibehesht","Khordād","Tir","Mordād","Shahrivar","Mehr","Ābān","Āzar","Dey","Bahman","Esfand"],"field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","days-standAlone-abbr":["sön","mån","tis","ons","tors","fre","lör"],"field-second-narrow-relative+0":"nu","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-sat-relative+0":"lördag denna vecka","field-day-short-relative+1":"i morgon","field-quarter-narrow-relative+1":"nästa kv.","field-sat-relative+1":"lördag nästa vecka","field-day-short-relative+2":"i övermorgon","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","months-standAlone-abbr":["Farvardin","Ordibehesht","Khordād","Tir","Mordād","Shahrivar","Mehr","Ābān","Āzar","Dey","Bahman","Esfand"],"field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","timeFormat-full":"'kl'. HH.mm.ss zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"tidszon","dateFormatItem-y":"y G","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","quarters-format-wide":["1:a kvartalet","2:a kvartalet","3:e kvartalet","4:e kvartalet"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"fm/em","dateFormatItem-yyyyMMM":"MMM y G","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","days-standAlone-short":["sö","må","ti","on","to","fr","lö"],"field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","dateFormatItem-yyyyQQQQ":"QQQQ y G","field-hour-short":"tim","field-zone-short":"tidszon","quarters-format-abbr":["K1","K2","K3","K4"],"field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","eraNarrow":"AP","field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","days-format-wide":["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],"field-year-short-relative+-1":"i fjol","field-zone":"tidszon","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","dayPeriods-standAlone-abbr-am":"f.m.","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","days-format-abbr":["sön","mån","tis","ons","tors","fre","lör"],"field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","dateFormatItem-Gy":"y G","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre.","dayPeriods-standAlone-wide-am":"förmiddag"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/sv/roc.js b/lib/dojo/cldr/nls/sv/roc.js
index 9af3d7de4..7684b9453 100644
--- a/lib/dojo/cldr/nls/sv/roc.js
+++ b/lib/dojo/cldr/nls/sv/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/sv/roc",{"field-sat-relative+0":"lördag denna vecka","field-sat-relative+1":"lördag nästa vecka","field-dayperiod":"fm/em","field-sun-relative+-1":"söndag förra veckan","field-mon-relative+-1":"måndag förra veckan","field-minute":"Minut","field-day-relative+-1":"i går","field-weekday":"Veckodag","field-day-relative+-2":"i förrgår","field-era":"Era","field-hour":"Timme","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","field-wed-relative+-1":"onsdag förra veckan","field-day-relative+0":"i dag","field-day-relative+1":"i morgon","eraAbbr":["före R.K.","R.K."],"field-day-relative+2":"i övermorgon","field-tue-relative+0":"tisdag denna vecka","field-zone":"Tidszon","field-tue-relative+1":"tisdag nästa vecka","field-week-relative+-1":"förra veckan","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-sat-relative+-1":"lördag förra veckan","field-year-relative+-1":"i fjol","field-year":"År","field-fri-relative+0":"fredag denna vecka","field-fri-relative+1":"fredag nästa vecka","field-week":"Vecka","field-week-relative+0":"denna vecka","field-week-relative+1":"nästa vecka","field-month-relative+0":"denna månad","field-month":"Månad","field-month-relative+1":"nästa månad","field-fri-relative+-1":"fredag förra veckan","field-second":"Sekund","field-tue-relative+-1":"tisdag förra veckan","field-day":"Dag","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-thu-relative+0":"torsdag denna vecka","field-second-relative+0":"nu","field-thu-relative+1":"torsdag nästa vecka","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-month-relative+-1":"förra månaden","field-thu-relative+-1":"torsdag förra veckan"}); \ No newline at end of file
+define("dojo/cldr/nls/sv/roc",{"field-quarter-short-relative+0":"detta kv.","field-quarter-short-relative+1":"nästa kv.","field-tue-relative+-1":"tisdag förra veckan","field-year":"år","field-wed-relative+0":"onsdag denna vecka","field-wed-relative+1":"onsdag nästa vecka","field-minute":"minut","field-month-narrow-relative+-1":"förra mån.","field-tue-narrow-relative+0":"denna tis.","field-tue-narrow-relative+1":"nästa tis.","field-thu-short-relative+0":"tors. denna vecka","field-day-short-relative+-1":"i går","field-thu-short-relative+1":"tors. nästa vecka","field-day-relative+0":"i dag","field-day-short-relative+-2":"i förrgår","field-day-relative+1":"i morgon","field-week-narrow-relative+0":"denna v.","field-day-relative+2":"i övermorgon","field-week-narrow-relative+1":"nästa v.","field-wed-narrow-relative+-1":"förra ons.","field-year-narrow":"år","field-era-short":"era","field-year-narrow-relative+0":"i år","field-tue-relative+0":"tisdag denna vecka","field-year-narrow-relative+1":"nästa år","field-tue-relative+1":"tisdag nästa vecka","field-weekdayOfMonth":"veckodag i månad","field-second-short":"sek","field-weekdayOfMonth-narrow":"veckodag i mån.","field-week-relative+0":"denna vecka","field-month-relative+0":"denna månad","field-week-relative+1":"nästa vecka","field-month-relative+1":"nästa månad","field-sun-narrow-relative+0":"denna sön.","field-mon-short-relative+0":"mån. denna vecka","field-sun-narrow-relative+1":"nästa sön.","field-mon-short-relative+1":"mån. nästa vecka","field-second-relative+0":"nu","eraNames":["före Republiken Kina","Minguo"],"field-weekOfMonth":"vecka i månaden","field-month-short":"m","field-day":"dag","field-dayOfYear-short":"dag under året","field-year-relative+-1":"i fjol","field-sat-short-relative+-1":"lör. förra veckan","field-hour-relative+0":"denna timme","field-second-short-relative+0":"nu","field-wed-relative+-1":"onsdag förra veckan","field-sat-narrow-relative+-1":"förra lör.","field-second":"sekund","field-hour-short-relative+0":"denna timme","field-quarter":"kvartal","field-week-short":"v","field-day-narrow-relative+0":"idag","field-day-narrow-relative+1":"imorgon","field-day-narrow-relative+2":"i övermorgon","field-tue-short-relative+0":"tis. denna vecka","field-tue-short-relative+1":"tis. nästa vecka","field-month-short-relative+-1":"förra mån.","field-mon-relative+-1":"måndag förra veckan","field-month":"månad","field-day-narrow":"dag","field-minute-short":"min","field-dayperiod":"fm/em","field-sat-short-relative+0":"lör. denna vecka","field-sat-short-relative+1":"lör. nästa vecka","eraAbbr":["före R.K.","R.K."],"field-second-narrow":"s","field-mon-relative+0":"måndag denna vecka","field-mon-relative+1":"måndag nästa vecka","field-day-narrow-relative+-1":"igår","field-year-short":"år","field-day-narrow-relative+-2":"i förrgår","field-quarter-relative+-1":"förra kvartalet","field-dayperiod-narrow":"fm/em","field-week-narrow-relative+-1":"förra v.","field-dayOfYear":"dag under året","field-sat-relative+-1":"lördag förra veckan","field-hour":"timme","field-minute-narrow-relative+0":"denna minut","field-month-relative+-1":"förra månaden","field-quarter-short":"kv.","field-sat-narrow-relative+0":"denna lör.","field-fri-relative+0":"fredag denna vecka","field-sat-narrow-relative+1":"nästa lör.","field-fri-relative+1":"fredag nästa vecka","field-month-narrow-relative+0":"denna mån.","field-month-narrow-relative+1":"nästa mån.","field-sun-short-relative+0":"sön. denna vecka","field-sun-short-relative+1":"sön. nästa vecka","field-week-relative+-1":"förra veckan","field-quarter-short-relative+-1":"förra kv.","field-minute-short-relative+0":"denna minut","field-quarter-relative+0":"detta kvartal","field-minute-relative+0":"denna minut","field-quarter-relative+1":"nästa kvartal","field-wed-short-relative+-1":"ons. förra veckan","field-thu-short-relative+-1":"tors. förra veckan","field-year-narrow-relative+-1":"i fjol","field-thu-narrow-relative+-1":"förra tors.","field-tue-narrow-relative+-1":"förra tis.","field-weekOfMonth-short":"vk. i mån.","field-wed-short-relative+0":"ons. denna vecka","field-wed-short-relative+1":"ons. nästa vecka","field-sun-relative+-1":"söndag förra veckan","field-second-narrow-relative+0":"nu","field-weekday":"veckodag","field-day-short-relative+0":"i dag","field-quarter-narrow-relative+0":"detta kv.","field-sat-relative+0":"lördag denna vecka","field-day-short-relative+1":"i morgon","field-quarter-narrow-relative+1":"nästa kv.","field-sat-relative+1":"lördag nästa vecka","field-day-short-relative+2":"i övermorgon","field-week-short-relative+0":"denna v.","field-week-short-relative+1":"nästa v.","field-dayOfYear-narrow":"dag under året","field-month-short-relative+0":"denna mån.","field-month-short-relative+1":"nästa mån.","field-weekdayOfMonth-short":"veckodag i mån.","field-zone-narrow":"tidszon","field-thu-narrow-relative+0":"denna tors.","field-thu-narrow-relative+1":"nästa tors.","field-sun-narrow-relative+-1":"förra sön.","field-mon-short-relative+-1":"mån. förra veckan","field-thu-relative+0":"torsdag denna vecka","field-thu-relative+1":"torsdag nästa vecka","field-fri-short-relative+-1":"fre. förra veckan","field-thu-relative+-1":"torsdag förra veckan","field-week":"vecka","field-wed-narrow-relative+0":"denna ons.","field-wed-narrow-relative+1":"nästa ons.","field-quarter-narrow-relative+-1":"förra kv.","field-year-short-relative+0":"i år","field-dayperiod-short":"fm/em","field-year-short-relative+1":"nästa år","field-fri-short-relative+0":"fre. denna vecka","field-fri-short-relative+1":"fre. nästa vecka","field-week-short-relative+-1":"förra v.","field-hour-narrow-relative+0":"denna timme","field-hour-short":"tim","field-zone-short":"tidszon","field-month-narrow":"mån","field-hour-narrow":"h","field-fri-narrow-relative+-1":"förra fre.","field-year-relative+0":"i år","field-year-relative+1":"nästa år","field-era-narrow":"era","field-fri-relative+-1":"fredag förra veckan","eraNarrow":["f.R.K.","R.K."],"field-tue-short-relative+-1":"tis. förra veckan","field-minute-narrow":"m","field-year-short-relative+-1":"i fjol","field-zone":"tidszon","field-weekOfMonth-narrow":"vk.i mån.","field-weekday-narrow":"veckodag","field-quarter-narrow":"kv.","field-sun-short-relative+-1":"sön. förra veckan","field-day-relative+-1":"i går","field-day-relative+-2":"i förrgår","field-weekday-short":"veckodag","field-sun-relative+0":"söndag denna vecka","field-sun-relative+1":"söndag nästa vecka","field-day-short":"dag","field-week-narrow":"v","field-era":"era","field-fri-narrow-relative+0":"denna fre.","field-fri-narrow-relative+1":"nästa fre."}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/buddhist.js b/lib/dojo/cldr/nls/th/buddhist.js
index 1e5f6df50..dd3c5bda2 100644
--- a/lib/dojo/cldr/nls/th/buddhist.js
+++ b/lib/dojo/cldr/nls/th/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/buddhist",{"days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-second-relative+0":"ขณะนี้","field-weekday":"วันในสัปดาห์","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["พ.ศ."],"field-tue-relative+-1":"อังคารที่แล้ว","days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-wed-relative+-1":"พุธที่แล้ว","months-format-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"dateFormatItem-yyyyQQQ":"QQQ y","dayPeriods-format-wide-pm":"หลังเที่ยง","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-yyyyMEd":"E d/M/y","field-thu-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-Md":"d/M","field-era":"สมัย","months-standAlone-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"timeFormat-long":"H นาฬิกา mm นาที ss วินาที z","field-year":"ปี","dateFormatItem-yyyyMMMM":"MMMM y","field-hour":"ชั่วโมง","months-format-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","timeFormat-full":"H นาฬิกา mm นาที ss วินาที zzzz","field-day-relative+0":"วันนี้","field-thu-relative+0":"พฤหัสนี้","field-day-relative+1":"พรุ่งนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-GyMMMd":"d MMM G y","field-day-relative+2":"มะรืนนี้","dateFormatItem-H":"HH","months-standAlone-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-Gy":"G y","dateFormatItem-yyyyMMMEd":"E d MMM y","dateFormatItem-M":"L","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-yyyyMMM":"MMM y","dateFormatItem-yyyyMMMd":"d MMM y","dateFormatItem-MMMMd":"d MMMM","field-sun-relative+0":"อาทิตย์นี้","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"อาทิตย์หน้า","quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"eraAbbr":["พ.ศ."],"field-minute":"นาที","field-dayperiod":"ช่วงวัน","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"เมื่อวาน","dateFormatItem-h":"h a","field-day-relative+-2":"เมื่อวานซืน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","field-day":"วัน","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-zone":"เขตเวลา","dateFormatItem-y":"G y","months-standAlone-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-year-relative+-1":"ปีที่แล้ว","field-month-relative+-1":"เดือนที่แล้ว","dateFormatItem-hm":"h:mm a","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"eraNames":["พุทธศักราช"],"days-format-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dateFormatItem-yyyyMd":"d/M/y","field-month":"เดือน","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"field-tue-relative+0":"อังคารนี้","field-tue-relative+1":"อังคารหน้า","dayPeriods-format-wide-am":"ก่อนเที่ยง","dateFormatItem-MMMMEd":"E d MMMM","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","dateFormat-short":"d/M/yy","field-second":"วินาที","field-sat-relative+-1":"เสาร์ที่แล้ว","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-month-relative+0":"เดือนนี้","field-month-relative+1":"เดือนหน้า","dateFormatItem-Ed":"E d","field-week":"สัปดาห์","dateFormat-medium":"d MMM y","field-year-relative+0":"ปีนี้","field-week-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyM":"M/y","field-year-relative+1":"ปีหน้า","dateFormatItem-mmss":"mm:ss","dateFormatItem-yyyyQQQQ":"QQQQ y","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM G y","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-yyyy":"G y","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า"}); \ No newline at end of file
+define("dojo/cldr/nls/th/buddhist",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-ms":"mm:ss","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-thu-short-relative+0":"พฤหัสนี้","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"วันของเดือน","dayPeriods-format-abbr-am":"ก่อนเที่ยง","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","dateFormatItem-yyyyQQQ":"QQQ y","months-standAlone-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"eraNames":["พุทธศักราช"],"field-weekOfMonth":"สัปดาห์ของเดือน","dayPeriods-standAlone-abbr-pm":"หลังเที่ยง","field-month-short":"เดือน","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-yyyyMd":"d/M/y","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","dayPeriods-format-wide-am":"ก่อนเที่ยง","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","dateFormatItem-yyyyMEd":"E d/M/y","field-wed-relative+-1":"พุธที่แล้ว","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","days-standAlone-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dayPeriods-standAlone-wide-pm":"หลังเที่ยง","dateFormat-long":"d MMMM y","dateFormatItem-GyMMMd":"d MMM G y","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","dateFormatItem-MMMEEEEd":"EEEEที่ d MMM","quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"days-format-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-GyMMM":"MMM G y","field-month":"เดือน","field-day-narrow":"วัน","dateFormatItem-MMM":"LLL","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d MMM y","dateFormatItem-yyyyMMMM":"MMMM y","eraAbbr":["พ.ศ."],"quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dayPeriods-format-abbr-pm":"หลังเที่ยง","dateFormatItem-yyyyM":"M/y","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","months-format-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-quarter-relative+-1":"ไตรมาสที่แล้ว","dateFormatItem-yyyyMMMd":"d MMM y","field-dayperiod-narrow":"ช่วงวัน","dayPeriods-standAlone-narrow-am":"ก่อนเที่ยง","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dayPeriods-format-wide-pm":"หลังเที่ยง","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","dateFormatItem-Md":"d/M","field-hour":"ชั่วโมง","months-format-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"dateFormat-full":"EEEEที่ d MMMM G y","field-month-relative+-1":"เดือนที่แล้ว","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","months-format-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","timeFormat-long":"H นาฬิกา mm นาที ss วินาที z","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","dateFormat-short":"d/M/yy","field-thu-short-relative+-1":"พฤหัสที่แล้ว","field-year-narrow-relative+-1":"ปีที่แล้ว","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-yyyyMMMEd":"E d MMM y","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"อังคารที่แล้ว","dateFormatItem-H":"HH","field-weekOfMonth-short":"สัปดาห์ของเดือน","dateFormatItem-yyyy":"G y","dayPeriods-standAlone-narrow-pm":"หลังเที่ยง","dateFormatItem-M":"L","field-wed-short-relative+0":"พุธนี้","months-standAlone-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","dateFormatItem-MMMMEd":"E d MMMM","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-day-short-relative+1":"พรุ่งนี้","field-sat-relative+0":"เสาร์นี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","dateFormatItem-h":"h a","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","months-standAlone-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","timeFormat-full":"H นาฬิกา mm นาที ss วินาที zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"เขตเวลา","dateFormatItem-y":"G y","field-thu-narrow-relative+0":"พฤหัสนี้","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+1":"พฤหัสหน้า","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","dateFormatItem-yyyyMMMEEEEd":"EEEEที่ d MMM y","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","dateFormatItem-yyyyMMM":"MMM y","field-dayperiod-short":"ช่วงวัน","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-week-short-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyQQQQ":"QQQQ y","field-hour-short":"ชม.","field-zone-short":"โซน","quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","eraNarrow":["พ.ศ."],"field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","dateFormatItem-MMMMEEEEd":"EEEEที่ d MMMM","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","dateFormatItem-GyMMMEEEEd":"EEEEที่ d MMM G y","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","dayPeriods-standAlone-abbr-am":"ก่อนเที่ยง","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","dateFormatItem-Gy":"G y","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า","dayPeriods-standAlone-wide-am":"ก่อนเที่ยง"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/chinese.js b/lib/dojo/cldr/nls/th/chinese.js
index 5e5813d35..c4e1133e2 100644
--- a/lib/dojo/cldr/nls/th/chinese.js
+++ b/lib/dojo/cldr/nls/th/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/chinese",{"field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","field-dayperiod":"ช่วงวัน","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","field-minute":"นาที","field-day-relative+-1":"เมื่อวาน","field-weekday":"วันในสัปดาห์","field-day-relative+-2":"เมื่อวานซืน","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"สมัย","field-hour":"ชั่วโมง","field-sun-relative+0":"อาทิตย์นี้","field-sun-relative+1":"อาทิตย์หน้า","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+-1":"พุธที่แล้ว","field-day-relative+0":"วันนี้","field-day-relative+1":"พรุ่งนี้","field-day-relative+2":"มะรืนนี้","dateFormat-long":"U MMMM d","field-tue-relative+0":"อังคารนี้","field-zone":"เขตเวลา","field-tue-relative+1":"อังคารหน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","dateFormat-medium":"U MMM d","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-sat-relative+-1":"เสาร์ที่แล้ว","field-year-relative+-1":"ปีที่แล้ว","field-year":"ปี","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-week":"สัปดาห์","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-month-relative+0":"เดือนนี้","field-month":"เดือน","field-month-relative+1":"เดือนหน้า","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-second":"วินาที","field-tue-relative+-1":"อังคารที่แล้ว","field-day":"วัน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-thu-relative+0":"พฤหัสนี้","field-second-relative+0":"ขณะนี้","dateFormat-short":"y-M-d","field-thu-relative+1":"พฤหัสหน้า","dateFormat-full":"EEEE, U MMMM d","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-month-relative+-1":"เดือนที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว"}); \ No newline at end of file
+define("dojo/cldr/nls/th/chinese",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-thu-short-relative+0":"พฤหัสนี้","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","field-weekdayOfMonth-narrow":"วันของเดือน","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"สัปดาห์ของเดือน","field-month-short":"เดือน","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","field-wed-relative+-1":"พุธที่แล้ว","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","dateFormat-long":"U MMMM d","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","field-month":"เดือน","field-day-narrow":"วัน","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","dateFormat-medium":"U MMM d","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"ไตรมาสที่แล้ว","field-dayperiod-narrow":"ช่วงวัน","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","field-hour":"ชั่วโมง","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormat-full":"EEEE, U MMMM d","field-month-relative+-1":"เดือนที่แล้ว","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","dateFormat-short":"y-M-d","field-thu-short-relative+-1":"พฤหัสที่แล้ว","field-year-narrow-relative+-1":"ปีที่แล้ว","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","field-tue-narrow-relative+-1":"อังคารที่แล้ว","field-weekOfMonth-short":"สัปดาห์ของเดือน","field-wed-short-relative+0":"พุธนี้","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-day-short-relative+1":"พรุ่งนี้","field-sat-relative+0":"เสาร์นี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","field-zone-narrow":"เขตเวลา","field-thu-narrow-relative+0":"พฤหัสนี้","field-thu-narrow-relative+1":"พฤหัสหน้า","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","field-dayperiod-short":"ช่วงวัน","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","field-week-short-relative+-1":"สัปดาห์ที่แล้ว","field-hour-short":"ชม.","field-zone-short":"โซน","field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/coptic.js b/lib/dojo/cldr/nls/th/coptic.js
index 27ec89d67..d7a8542d5 100644
--- a/lib/dojo/cldr/nls/th/coptic.js
+++ b/lib/dojo/cldr/nls/th/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/coptic",{"field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","field-dayperiod":"ช่วงวัน","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","field-minute":"นาที","field-day-relative+-1":"เมื่อวาน","field-weekday":"วันในสัปดาห์","field-day-relative+-2":"เมื่อวานซืน","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"สมัย","field-hour":"ชั่วโมง","field-sun-relative+0":"อาทิตย์นี้","field-sun-relative+1":"อาทิตย์หน้า","months-standAlone-abbr":["เทาท์","บาบา","ฮาเทอร์","เคียฟ","โทบา","อัมเชอร์","บารัมฮัท","บาราเมาดา","บาชันส์","พาโอนา","อีเปป","เมสรา","นาซี"],"field-wed-relative+-1":"พุธที่แล้ว","field-day-relative+0":"วันนี้","field-day-relative+1":"พรุ่งนี้","field-day-relative+2":"มะรืนนี้","field-tue-relative+0":"อังคารนี้","field-zone":"เขตเวลา","field-tue-relative+1":"อังคารหน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-sat-relative+-1":"เสาร์ที่แล้ว","field-year-relative+-1":"ปีที่แล้ว","field-year":"ปี","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","months-standAlone-wide":["เทาท์","บาบา","ฮาเทอร์","เคียฟ","โทบา","อัมเชอร์","บารัมฮัท","บาราเมาดา","บาชันส์","พาโอนา","อีเปป","เมสรา","นาซี"],"field-week":"สัปดาห์","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า","months-format-abbr":["เทาท์","บาบา","ฮาเทอร์","เคียฟ","โทบา","อัมเชอร์","บารัมฮัท","บาราเมาดา","บาชันส์","พาโอนา","อีเปป","เมสรา","นาซี"],"field-month-relative+0":"เดือนนี้","field-month":"เดือน","field-month-relative+1":"เดือนหน้า","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-second":"วินาที","field-tue-relative+-1":"อังคารที่แล้ว","field-day":"วัน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-thu-relative+0":"พฤหัสนี้","field-second-relative+0":"ขณะนี้","field-thu-relative+1":"พฤหัสหน้า","months-format-wide":["เทาท์","บาบา","ฮาเทอร์","เคียฟ","โทบา","อัมเชอร์","บารัมฮัท","บาราเมาดา","บาชันส์","พาโอนา","อีเปป","เมสรา","นาซี"],"field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-month-relative+-1":"เดือนที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว"}); \ No newline at end of file
+define("dojo/cldr/nls/th/coptic",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-thu-short-relative+0":"พฤหัสนี้","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","field-weekdayOfMonth-narrow":"วันของเดือน","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-weekOfMonth":"สัปดาห์ของเดือน","field-month-short":"เดือน","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","field-wed-relative+-1":"พุธที่แล้ว","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","field-month":"เดือน","field-day-narrow":"วัน","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"ไตรมาสที่แล้ว","field-dayperiod-narrow":"ช่วงวัน","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","field-hour":"ชั่วโมง","months-format-wide":["เทาท์","บาบา","ฮาเทอร์","เคียฟ","โทบา","อัมเชอร์","บารัมฮัท","บาราเมาดา","บาชันส์","พาโอนา","อีเปป","เมสรา","นาซี"],"field-month-relative+-1":"เดือนที่แล้ว","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","months-format-abbr":["เทาท์","บาบา","ฮาเทอร์","เคียฟ","โทบา","อัมเชอร์","บารัมฮัท","บาราเมาดา","บาชันส์","พาโอนา","อีเปป","เมสรา","นาซี"],"field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","field-thu-short-relative+-1":"พฤหัสที่แล้ว","field-year-narrow-relative+-1":"ปีที่แล้ว","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","field-tue-narrow-relative+-1":"อังคารที่แล้ว","field-weekOfMonth-short":"สัปดาห์ของเดือน","field-wed-short-relative+0":"พุธนี้","months-standAlone-wide":["เทาท์","บาบา","ฮาเทอร์","เคียฟ","โทบา","อัมเชอร์","บารัมฮัท","บาราเมาดา","บาชันส์","พาโอนา","อีเปป","เมสรา","นาซี"],"field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-sat-relative+0":"เสาร์นี้","field-day-short-relative+1":"พรุ่งนี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","months-standAlone-abbr":["เทาท์","บาบา","ฮาเทอร์","เคียฟ","โทบา","อัมเชอร์","บารัมฮัท","บาราเมาดา","บาชันส์","พาโอนา","อีเปป","เมสรา","นาซี"],"field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","field-zone-narrow":"เขตเวลา","field-thu-narrow-relative+0":"พฤหัสนี้","field-thu-narrow-relative+1":"พฤหัสหน้า","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","field-dayperiod-short":"ช่วงวัน","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","field-week-short-relative+-1":"สัปดาห์ที่แล้ว","field-hour-short":"ชม.","field-zone-short":"โซน","field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/currency.js b/lib/dojo/cldr/nls/th/currency.js
index ac20273f9..97a55dbdf 100644
--- a/lib/dojo/cldr/nls/th/currency.js
+++ b/lib/dojo/cldr/nls/th/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/currency",{"HKD_displayName":"ดอลลาร์ฮ่องกง","CHF_displayName":"ฟรังก์สวิส","JPY_symbol":"¥","CAD_displayName":"ดอลลาร์แคนาดา","HKD_symbol":"HK$","CNY_displayName":"หยวนจีน","USD_symbol":"US$","AUD_displayName":"ดอลลาร์ออสเตรเลีย","JPY_displayName":"เยนญี่ปุ่น","CAD_symbol":"CA$","USD_displayName":"ดอลลาร์สหรัฐ","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"ปอนด์สเตอร์ลิง (สหราชอาณาจักร)","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"ยูโร"}); \ No newline at end of file
+define("dojo/cldr/nls/th/currency",{"HKD_displayName":"ดอลลาร์ฮ่องกง","CNY_displayName":"หยวนจีน","JPY_displayName":"เยนญี่ปุ่น","JPY_symbol":"¥","USD_displayName":"ดอลลาร์สหรัฐ","CAD_symbol":"CA$","GBP_displayName":"ปอนด์สเตอร์ลิง (สหราชอาณาจักร)","CHF_displayName":"ฟรังก์สวิส","CNY_symbol":"CN¥","EUR_displayName":"ยูโร","GBP_symbol":"£","CAD_displayName":"ดอลลาร์แคนาดา","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"ดอลลาร์ออสเตรเลีย","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/dangi.js b/lib/dojo/cldr/nls/th/dangi.js
index 827507b5b..f72756957 100644
--- a/lib/dojo/cldr/nls/th/dangi.js
+++ b/lib/dojo/cldr/nls/th/dangi.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/dangi",{"field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","field-dayperiod":"ช่วงวัน","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","field-minute":"นาที","field-day-relative+-1":"เมื่อวาน","field-weekday":"วันในสัปดาห์","field-day-relative+-2":"เมื่อวานซืน","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"สมัย","field-hour":"ชั่วโมง","field-sun-relative+0":"อาทิตย์นี้","field-sun-relative+1":"อาทิตย์หน้า","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+-1":"พุธที่แล้ว","field-day-relative+0":"วันนี้","field-day-relative+1":"พรุ่งนี้","field-day-relative+2":"มะรืนนี้","dateFormat-long":"U MMMM d","field-tue-relative+0":"อังคารนี้","field-zone":"เขตเวลา","field-tue-relative+1":"อังคารหน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","dateFormat-medium":"U MMM d","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-sat-relative+-1":"เสาร์ที่แล้ว","field-year-relative+-1":"ปีที่แล้ว","field-year":"ปี","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-week":"สัปดาห์","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-month-relative+0":"เดือนนี้","field-month":"เดือน","field-month-relative+1":"เดือนหน้า","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-second":"วินาที","field-tue-relative+-1":"อังคารที่แล้ว","field-day":"วัน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-thu-relative+0":"พฤหัสนี้","field-second-relative+0":"ขณะนี้","dateFormat-short":"y-M-d","field-thu-relative+1":"พฤหัสหน้า","dateFormat-full":"EEEE, U MMMM d","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-month-relative+-1":"เดือนที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว"}); \ No newline at end of file
+define("dojo/cldr/nls/th/dangi",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-thu-short-relative+0":"พฤหัสนี้","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","field-weekdayOfMonth-narrow":"วันของเดือน","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"สัปดาห์ของเดือน","field-month-short":"เดือน","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","field-wed-relative+-1":"พุธที่แล้ว","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","dateFormat-long":"U MMMM d","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","field-month":"เดือน","field-day-narrow":"วัน","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","dateFormat-medium":"U MMM d","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"ไตรมาสที่แล้ว","field-dayperiod-narrow":"ช่วงวัน","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","field-hour":"ชั่วโมง","months-format-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormat-full":"EEEE, U MMMM d","field-month-relative+-1":"เดือนที่แล้ว","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","months-format-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","dateFormat-short":"y-M-d","field-thu-short-relative+-1":"พฤหัสที่แล้ว","field-year-narrow-relative+-1":"ปีที่แล้ว","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","field-tue-narrow-relative+-1":"อังคารที่แล้ว","field-weekOfMonth-short":"สัปดาห์ของเดือน","field-wed-short-relative+0":"พุธนี้","months-standAlone-wide":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-day-short-relative+1":"พรุ่งนี้","field-sat-relative+0":"เสาร์นี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","months-standAlone-abbr":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","field-zone-narrow":"เขตเวลา","field-thu-narrow-relative+0":"พฤหัสนี้","field-thu-narrow-relative+1":"พฤหัสหน้า","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","field-dayperiod-short":"ช่วงวัน","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","field-week-short-relative+-1":"สัปดาห์ที่แล้ว","field-hour-short":"ชม.","field-zone-short":"โซน","field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/ethiopic.js b/lib/dojo/cldr/nls/th/ethiopic.js
index e54a57477..8de128a22 100644
--- a/lib/dojo/cldr/nls/th/ethiopic.js
+++ b/lib/dojo/cldr/nls/th/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/ethiopic",{"field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","field-dayperiod":"ช่วงวัน","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","field-minute":"นาที","field-day-relative+-1":"เมื่อวาน","field-weekday":"วันในสัปดาห์","field-day-relative+-2":"เมื่อวานซืน","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"สมัย","field-hour":"ชั่วโมง","field-sun-relative+0":"อาทิตย์นี้","field-sun-relative+1":"อาทิตย์หน้า","months-standAlone-abbr":["เมสเคอเรม","เตเกมท","เฮดาร์","ทาฮ์ซัส","เทอร์","เยคาทิท","เมกาบิต","เมียเซีย","เจนบอต","เซเน","ฮัมเล","เนแฮซ","พากูเมน"],"field-wed-relative+-1":"พุธที่แล้ว","field-day-relative+0":"วันนี้","field-day-relative+1":"พรุ่งนี้","field-day-relative+2":"มะรืนนี้","field-tue-relative+0":"อังคารนี้","field-zone":"เขตเวลา","field-tue-relative+1":"อังคารหน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-sat-relative+-1":"เสาร์ที่แล้ว","field-year-relative+-1":"ปีที่แล้ว","field-year":"ปี","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","months-standAlone-wide":["เมสเคอเรม","เตเกมท","เฮดาร์","ทาฮ์ซัส","เทอร์","เยคาทิท","เมกาบิต","เมียเซีย","เจนบอต","เซเน","ฮัมเล","เนแฮซ","พากูเมน"],"field-week":"สัปดาห์","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า","months-format-abbr":["เมสเคอเรม","เตเกมท","เฮดาร์","ทาฮ์ซัส","เทอร์","เยคาทิท","เมกาบิต","เมียเซีย","เจนบอต","เซเน","ฮัมเล","เนแฮซ","พากูเมน"],"field-month-relative+0":"เดือนนี้","field-month":"เดือน","field-month-relative+1":"เดือนหน้า","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-second":"วินาที","field-tue-relative+-1":"อังคารที่แล้ว","field-day":"วัน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-thu-relative+0":"พฤหัสนี้","field-second-relative+0":"ขณะนี้","field-thu-relative+1":"พฤหัสหน้า","months-format-wide":["เมสเคอเรม","เตเกมท","เฮดาร์","ทาฮ์ซัส","เทอร์","เยคาทิท","เมกาบิต","เมียเซีย","เจนบอต","เซเน","ฮัมเล","เนแฮซ","พากูเมน"],"field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-month-relative+-1":"เดือนที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว"}); \ No newline at end of file
+define("dojo/cldr/nls/th/ethiopic",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-thu-short-relative+0":"พฤหัสนี้","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","field-weekdayOfMonth-narrow":"วันของเดือน","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-weekOfMonth":"สัปดาห์ของเดือน","field-month-short":"เดือน","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","field-wed-relative+-1":"พุธที่แล้ว","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","field-month":"เดือน","field-day-narrow":"วัน","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"ไตรมาสที่แล้ว","field-dayperiod-narrow":"ช่วงวัน","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","field-hour":"ชั่วโมง","months-format-wide":["เมสเคอเรม","เตเกมท","เฮดาร์","ทาฮ์ซัส","เทอร์","เยคาทิท","เมกาบิต","เมียเซีย","เจนบอต","เซเน","ฮัมเล","เนแฮซ","พากูเมน"],"field-month-relative+-1":"เดือนที่แล้ว","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","months-format-abbr":["เมสเคอเรม","เตเกมท","เฮดาร์","ทาฮ์ซัส","เทอร์","เยคาทิท","เมกาบิต","เมียเซีย","เจนบอต","เซเน","ฮัมเล","เนแฮซ","พากูเมน"],"field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","field-thu-short-relative+-1":"พฤหัสที่แล้ว","field-year-narrow-relative+-1":"ปีที่แล้ว","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","field-tue-narrow-relative+-1":"อังคารที่แล้ว","field-weekOfMonth-short":"สัปดาห์ของเดือน","field-wed-short-relative+0":"พุธนี้","months-standAlone-wide":["เมสเคอเรม","เตเกมท","เฮดาร์","ทาฮ์ซัส","เทอร์","เยคาทิท","เมกาบิต","เมียเซีย","เจนบอต","เซเน","ฮัมเล","เนแฮซ","พากูเมน"],"field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-sat-relative+0":"เสาร์นี้","field-day-short-relative+1":"พรุ่งนี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","months-standAlone-abbr":["เมสเคอเรม","เตเกมท","เฮดาร์","ทาฮ์ซัส","เทอร์","เยคาทิท","เมกาบิต","เมียเซีย","เจนบอต","เซเน","ฮัมเล","เนแฮซ","พากูเมน"],"field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","field-zone-narrow":"เขตเวลา","field-thu-narrow-relative+0":"พฤหัสนี้","field-thu-narrow-relative+1":"พฤหัสหน้า","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","field-dayperiod-short":"ช่วงวัน","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","field-week-short-relative+-1":"สัปดาห์ที่แล้ว","field-hour-short":"ชม.","field-zone-short":"โซน","field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/generic.js b/lib/dojo/cldr/nls/th/generic.js
index 80045b504..454c98b48 100644
--- a/lib/dojo/cldr/nls/th/generic.js
+++ b/lib/dojo/cldr/nls/th/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/generic",{"field-second-relative+0":"ขณะนี้","field-weekday":"วันในสัปดาห์","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"อังคารที่แล้ว","dateFormat-long":"d MMMM G y","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-wed-relative+-1":"พุธที่แล้ว","dateFormatItem-yyyyQQQ":"QQQ G y","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-Md":"d/M","field-era":"สมัย","field-year":"ปี","field-hour":"ชั่วโมง","field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","field-day-relative+0":"วันนี้","field-thu-relative+0":"พฤหัสนี้","field-day-relative+1":"พรุ่งนี้","dateFormatItem-GyMMMd":"d MMM G y","field-day-relative+2":"มะรืนนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-H":"HH","dateFormatItem-Gy":"G y","dateFormatItem-yyyyMMMEd":"E d MMM G y","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM G y","dateFormatItem-yyyyMMMd":"d MMM G y","field-sun-relative+0":"อาทิตย์นี้","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"อาทิตย์หน้า","field-minute":"นาที","field-dayperiod":"ช่วงวัน","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"เมื่อวาน","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"เมื่อวานซืน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","field-day":"วัน","field-zone":"เขตเวลา","dateFormatItem-y":"G y","field-year-relative+-1":"ปีที่แล้ว","field-month-relative+-1":"เดือนที่แล้ว","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"เดือน","dateFormatItem-MMM":"LLL","field-tue-relative+0":"อังคารนี้","field-tue-relative+1":"อังคารหน้า","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","dateFormat-short":"d/M/y G","field-second":"วินาที","field-sat-relative+-1":"เสาร์ที่แล้ว","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-month-relative+0":"เดือนนี้","field-month-relative+1":"เดือนหน้า","dateFormatItem-Ed":"E d","field-week":"สัปดาห์","dateFormat-medium":"d MMM G y","field-year-relative+0":"ปีนี้","field-week-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"ปีหน้า","dateFormatItem-yyyyQQQQ":"QQQQ G y","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM G y","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-yyyy":"G y","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า"}); \ No newline at end of file
+define("dojo/cldr/nls/th/generic",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-ms":"mm:ss","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+0":"พฤหัสนี้","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","dateFormatItem-EBhms":"E h:mm:ss B","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"วันของเดือน","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","dateFormatItem-yyyyQQQ":"QQQ G y","field-weekOfMonth":"สัปดาห์ของเดือน","field-month-short":"เดือน","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"พุธที่แล้ว","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"d MMMM G y","dateFormatItem-GyMMMd":"d MMM G y","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","dateFormatItem-MMMEEEEd":"EEEEที่ d MMM","field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-GyMMM":"MMM G y","field-month":"เดือน","field-day-narrow":"วัน","dateFormatItem-MMM":"LLL","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","dateFormat-medium":"d MMM G y","dateFormatItem-yyyyMMMM":"MMMM G y","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-2":"เมื่อวานซืน","field-quarter-relative+-1":"ไตรมาสที่แล้ว","dateFormatItem-yyyyMMMd":"d MMM G y","field-dayperiod-narrow":"ช่วงวัน","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d/M","field-hour":"ชั่วโมง","dateFormat-full":"EEEEที่ d MMMM G y","field-month-relative+-1":"เดือนที่แล้ว","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","dateFormatItem-EBhm":"E h:mm B","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","dateFormat-short":"d/M/y G","dateFormatItem-Bh":"h B","field-year-narrow-relative+-1":"ปีที่แล้ว","field-thu-short-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-yyyyMMMEd":"E d MMM G y","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"สัปดาห์ของเดือน","field-tue-narrow-relative+-1":"อังคารที่แล้ว","dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","field-wed-short-relative+0":"พุธนี้","field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-day-short-relative+1":"พรุ่งนี้","field-sat-relative+0":"เสาร์นี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","dateFormatItem-h":"h a","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","dateFormatItem-MEd":"E d/M","field-zone-narrow":"เขตเวลา","dateFormatItem-y":"G y","field-thu-narrow-relative+0":"พฤหัสนี้","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+1":"พฤหัสหน้า","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","dateFormatItem-yyyyMMMEEEEd":"EEEEที่ d MMM G y","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","dateFormatItem-yyyyMMM":"MMM G y","field-dayperiod-short":"ช่วงวัน","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","field-week-short-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyQQQQ":"QQQQ G y","field-hour-short":"ชม.","field-zone-short":"โซน","field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","dateFormatItem-Bhms":"h:mm:ss B","field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","field-mon-narrow-relative+0":"จันทร์นี้","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"จันทร์หน้า","dateFormatItem-GyMMMEEEEd":"EEEEที่ d MMM G y","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","dateFormatItem-Bhm":"h:mm B","field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","dateFormatItem-Gy":"G y","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/gregorian.js b/lib/dojo/cldr/nls/th/gregorian.js
index a8d9b74b1..8cce628b7 100644
--- a/lib/dojo/cldr/nls/th/gregorian.js
+++ b/lib/dojo/cldr/nls/th/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/gregorian",{"dateFormatItem-Ehm":"E h:mm a","days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"months-format-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-second-relative+0":"ขณะนี้","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"วันในสัปดาห์","dateFormatItem-yQQQ":"QQQ y","dateFormatItem-yMEd":"E d/M/y","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["ก่อน ค.ศ.","ก.ส.ศ.","ค.ศ.","ส.ศ."],"field-tue-relative+-1":"อังคารที่แล้ว","days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormat-long":"d MMMM G y","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-wed-relative+-1":"พุธที่แล้ว","months-format-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"หลังเที่ยง","dateFormat-full":"EEEEที่ d MMMM G y","field-thu-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-Md":"d/M","dateFormatItem-yMd":"d/M/y","field-era":"สมัย","dateFormatItem-yM":"M/y","months-standAlone-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"timeFormat-short":"HH:mm","quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-yQQQQ":"QQQQ G y","timeFormat-long":"H นาฬิกา mm นาที ss วินาที z","field-year":"ปี","dateFormatItem-yMMM":"MMM y","field-hour":"ชั่วโมง","months-format-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","timeFormat-full":"H นาฬิกา mm นาที ss วินาที zzzz","field-day-relative+0":"วันนี้","field-thu-relative+0":"พฤหัสนี้","field-day-relative+1":"พรุ่งนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-GyMMMd":"d MMM G y","field-day-relative+2":"มะรืนนี้","dateFormatItem-H":"HH","months-standAlone-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-Gy":"G y","dateFormatItem-M":"L","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-MMMMd":"d MMMM","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"อาทิตย์นี้","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"อาทิตย์หน้า","quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"eraAbbr":["ปีก่อน ค.ศ.","ค.ศ."],"field-minute":"นาที","field-dayperiod":"ช่วงวัน","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"เมื่อวาน","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"เมื่อวานซืน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"ศุกร์นี้","dateFormatItem-yMMMM":"MMMM G y","field-fri-relative+1":"ศุกร์หน้า","field-day":"วัน","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-zone":"เขตเวลา","dateFormatItem-y":"y","months-standAlone-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-year-relative+-1":"ปีที่แล้ว","field-month-relative+-1":"เดือนที่แล้ว","dateFormatItem-hm":"h:mm a","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-yMMMd":"d MMM y","eraNames":["ปีก่อนคริสต์ศักราช","คริสต์ศักราช"],"days-format-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"days-standAlone-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dateFormatItem-MMM":"LLL","field-month":"เดือน","field-tue-relative+0":"อังคารนี้","field-tue-relative+1":"อังคารหน้า","dayPeriods-format-wide-am":"ก่อนเที่ยง","dateFormatItem-MMMMEd":"E d MMMM","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","dateFormat-short":"d/M/yy","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E h:mm:ss a","field-second":"วินาที","field-sat-relative+-1":"เสาร์ที่แล้ว","dateFormatItem-yMMMEd":"E d MMM y","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-month-relative+0":"เดือนนี้","field-month-relative+1":"เดือนหน้า","dateFormatItem-Ed":"E d","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"สัปดาห์","dateFormat-medium":"d MMM y","field-year-relative+0":"ปีนี้","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-year-relative+1":"ปีหน้า","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM G y","field-mon-relative+-1":"จันทร์ที่แล้ว","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า"}); \ No newline at end of file
+define("dojo/cldr/nls/th/gregorian",{"dateFormatItem-yMMMM":"MMMM G y","field-thu-narrow-relative+0":"พฤหัสนี้","field-thu-narrow-relative+1":"พฤหัสหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","months-format-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"dayPeriods-standAlone-abbr-pm":"หลังเที่ยง","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า","eraNarrow":["ก่อน ค.ศ.","ก.ส.ศ.","ค.ศ.","ส.ศ."],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"h:mm:ss a v","dateFormatItem-yMMMd":"d MMM y","dayPeriods-format-abbr-night1":"กลางคืน","dayPeriods-format-narrow-evening1":"เย็น","days-standAlone-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dayPeriods-format-narrow-evening2":"ค่ำ","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dayPeriods-format-abbr-afternoon1":"ในตอนบ่าย","dayPeriods-format-wide-evening1":"ในตอนเย็น","dayPeriods-format-abbr-afternoon2":"บ่าย","dayPeriods-format-wide-evening2":"ค่ำ","dateFormatItem-Ehm":"E h:mm a","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"พุธที่แล้ว","dayPeriods-standAlone-wide-evening1":"ในตอนเย็น","dayPeriods-standAlone-wide-evening2":"ค่ำ","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","dateFormatItem-Ehms":"E h:mm:ss a","dayPeriods-standAlone-narrow-evening1":"เย็น","dayPeriods-standAlone-narrow-evening2":"ค่ำ","dayPeriods-standAlone-abbr-afternoon1":"ในตอนบ่าย","dayPeriods-standAlone-abbr-afternoon2":"บ่าย","field-thu-relative+0":"พฤหัสนี้","dayPeriods-standAlone-abbr-night1":"กลางคืน","field-thu-relative+1":"พฤหัสหน้า","dayPeriods-format-wide-am":"ก่อนเที่ยง","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","dateFormatItem-yMd":"d/M/y","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","field-quarter-relative+0":"ไตรมาสนี้","field-quarter-relative+1":"ไตรมาสหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","timeFormat-short":"HH:mm","field-sun-short-relative+1":"วันอาทิตย์หน้า","dateFormatItem-hms":"h:mm:ss a","dayPeriods-format-narrow-afternoon1":"เที่ยง","dateFormatItem-Md":"d/M","dayPeriods-format-narrow-afternoon2":"บ่าย","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"h:mm น. a v","field-week-narrow":"สัปดาห์","dateFormatItem-GyMMMEEEEd":"EEEEที่ d MMM G y","field-hour-relative+0":"ชั่วโมงนี้","field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","field-minute-narrow":"นาที","dateFormatItem-MMMMEd":"E d MMMM","field-thu-short-relative+0":"พฤหัสนี้","field-mon-relative+0":"จันทร์นี้","field-thu-short-relative+1":"พฤหัสหน้า","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+0":"วันนี้","field-era-short":"สมัย","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","field-sat-narrow-relative+0":"เสาร์นี้","timeFormat-long":"H นาฬิกา mm นาที ss วินาที z","field-sat-narrow-relative+1":"เสาร์หน้า","field-week-narrow-relative+0":"สัปดาห์นี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-month":"เดือน","months-standAlone-wide":["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],"field-weekday-narrow":"วันของสัปดาห์","dayPeriods-standAlone-narrow-afternoon1":"ช่วงเที่ยง","dayPeriods-standAlone-narrow-afternoon2":"บ่าย","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","dayPeriods-format-abbr-evening1":"ในตอนเย็น","dayPeriods-format-abbr-evening2":"ค่ำ","dayPeriods-format-abbr-noon":"เที่ยง","dayPeriods-format-narrow-midnight":"เที่ยงคืน","dayPeriods-format-wide-midnight":"เที่ยงคืน","field-tue-relative+0":"อังคารนี้","field-tue-relative+1":"อังคารหน้า","dayPeriods-standAlone-abbr-evening1":"ในตอนเย็น","dayPeriods-standAlone-abbr-evening2":"ค่ำ","dateFormatItem-hm":"h:mm a","dayPeriods-standAlone-wide-midnight":"เที่ยงคืน","field-year-narrow":"ปี","dateFormatItem-mmss":"mm:ss","dayPeriods-standAlone-abbr-noon":"เที่ยง","field-tue-short-relative+0":"อังคารนี้","dayPeriods-standAlone-narrow-midnight":"เที่ยงคืน","field-tue-short-relative+1":"อังคารหน้า","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E h:mm B","dateFormatItem-H":"HH","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-M":"L","field-wed-short-relative+0":"พุธนี้","field-fri-short-relative+0":"ศุกร์นี้","field-wed-short-relative+1":"พุธหน้า","field-fri-short-relative+1":"ศุกร์หน้า","field-weekOfMonth-short":"สัปดาห์ของเดือน","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+-1":"ปีที่แล้ว","dateFormatItem-yMMMEEEEd":"EEEEที่ d MMM y","dateFormatItem-Bhm":"h:mm B","dayPeriods-format-wide-night1":"กลางคืน","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"หลังเที่ยง","dateFormatItem-h":"h a","quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"field-weekOfMonth-narrow":"สัปดาห์ของเดือน","dateFormatItem-y":"y","field-minute-relative+0":"นาทีนี้","field-year-short-relative+0":"ปีนี้","dateFormatItem-EBhms":"E h:mm:ss B","field-year-short-relative+1":"ปีหน้า","field-weekday":"วันของสัปดาห์","dayPeriods-format-narrow-pm":"p","field-tue-narrow-relative+-1":"อังคารที่แล้ว","dateFormatItem-yMEd":"E d/M/y","dayPeriods-standAlone-wide-night1":"กลางคืน","field-year-narrow-relative+-1":"ปีที่แล้ว","field-sat-relative+-1":"เสาร์ที่แล้ว","dayPeriods-format-abbr-midnight":"เที่ยงคืน","dayPeriods-format-narrow-morning1":"เช้า","dayPeriods-format-wide-morning1":"ในตอนเช้า","dayPeriods-standAlone-abbr-midnight":"เที่ยงคืน","dayPeriods-standAlone-narrow-pm":"หลังเที่ยง","dayPeriods-standAlone-wide-morning1":"ในตอนเช้า","field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-second":"วินาที","dateFormatItem-yMMMEd":"E d MMM y","field-year-relative+-1":"ปีที่แล้ว","field-weekdayOfMonth-short":"วันของเดือน","dateFormat-short":"d/M/yy","eraNames":["ปีก่อนคริสตกาล","คริสต์ศักราช"],"field-second-short":"วิ","field-thu-short-relative+-1":"พฤหัสที่แล้ว","field-zone":"เขตเวลา","field-dayperiod-narrow":"ช่วงวัน","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","dayPeriods-standAlone-narrow-morning1":"เช้า","eraAbbr":["ก่อน ค.ศ.","ค.ศ."],"field-week-short":"สัปดาห์","dayPeriods-standAlone-abbr-am":"ก่อนเที่ยง","dayPeriods-standAlone-wide-pm":"หลังเที่ยง","dateFormatItem-ms":"mm:ss","field-day-relative+0":"วันนี้","field-day-relative+1":"พรุ่งนี้","field-day-relative+2":"มะรืนนี้","field-day-short-relative+0":"วันนี้","field-dayOfYear-short":"วันของปี","field-day-short-relative+1":"พรุ่งนี้","dateFormat-long":"d MMMM G y","field-day-short-relative+2":"มะรืนนี้","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","dayPeriods-format-wide-noon":"เที่ยง","field-second-relative+0":"ขณะนี้","field-quarter-relative+-1":"ไตรมาสที่แล้ว","dayPeriods-format-narrow-night1":"กลางคืน","quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dayPeriods-standAlone-wide-noon":"เที่ยง","dayPeriods-standAlone-narrow-night1":"กลางคืน","field-week-relative+-1":"สัปดาห์ที่แล้ว","dayPeriods-format-abbr-morning1":"ในตอนเช้า","field-month-relative+-1":"เดือนที่แล้ว","months-format-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-year":"ปี","field-era":"สมัย","dayPeriods-standAlone-abbr-morning1":"ในตอนเช้า","days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"QQQQ G y","field-day-short-relative+-1":"เมื่อวาน","field-day-short-relative+-2":"เมื่อวานซืน","dateFormatItem-GyMMM":"MMM G y","timeFormat-full":"H นาฬิกา mm นาที ss วินาที zzzz","dateFormatItem-Bhms":"h:mm:ss B","field-hour":"ชั่วโมง","field-dayOfYear-narrow":"วันของปี","field-quarter":"ไตรมาส","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-day":"วัน","dateFormatItem-yMMMMEEEEd":"EEEEที่ d MMMM G y","field-mon-relative+-1":"จันทร์ที่แล้ว","field-dayOfYear":"วันของปี","dateFormat-medium":"d MMM y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"d MMM G y","dateFormatItem-MEd":"E d/M","field-tue-short-relative+-1":"อังคารที่แล้ว","field-year-short":"ปี","field-month-short":"เดือน","dateFormatItem-MMMEd":"E d MMM","dayPeriods-format-wide-afternoon1":"ในตอนบ่าย","dateFormatItem-MMMd":"d MMM","dayPeriods-format-wide-afternoon2":"บ่าย","dateFormatItem-Bh":"h B","months-format-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"dayPeriods-format-abbr-am":"ก่อนเที่ยง","field-sat-relative+0":"เสาร์นี้","dayPeriods-format-wide-pm":"หลังเที่ยง","field-sat-relative+1":"เสาร์หน้า","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-zone-short":"โซน","field-week-short-relative+0":"สัปดาห์นี้","dateFormatItem-yMMMMd":"d MMMM G y","field-week-short-relative+1":"สัปดาห์หน้า","dayPeriods-standAlone-wide-afternoon1":"ในตอนบ่าย","dayPeriods-standAlone-wide-afternoon2":"บ่าย","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-month-narrow":"เดือน","dayPeriods-format-narrow-am":"a","field-month-narrow-relative+-1":"เดือนที่แล้ว","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-weekday-short":"วันของสัปดาห์","field-day-narrow-relative+-1":"เมื่อวาน","field-day-narrow-relative+-2":"เมื่อวานซืน","field-quarter-short":"ไตรมาส","days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"months-standAlone-narrow":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"days-format-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dateFormatItem-EHm":"E HH:mm น.","field-quarter-narrow":"ไตรมาส","field-mon-short-relative+0":"จันทร์นี้","field-mon-short-relative+1":"จันทร์หน้า","field-dayperiod-short":"ช่วงวัน","dayPeriods-standAlone-narrow-am":"ก่อนเที่ยง","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","dateFormatItem-Ed":"E d","field-wed-relative+-1":"พุธที่แล้ว","field-weekOfMonth":"สัปดาห์ของเดือน","field-weekdayOfMonth-narrow":"วันของเดือน","dayPeriods-standAlone-wide-am":"ก่อนเที่ยง","dateFormatItem-yQQQ":"QQQ y","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-minute":"นาที","quarters-standAlone-narrow":["1","2","3","4"],"quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"field-day-short":"วัน","field-dayperiod":"ช่วงวัน","field-hour-short":"ชม.","months-standAlone-abbr":["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],"field-month-relative+0":"เดือนนี้","field-second-narrow":"วิ","field-month-relative+1":"เดือนหน้า","dateFormat-full":"EEEEที่ d MMMM G y","field-era-narrow":"สมัย","field-sat-short-relative+-1":"เสาร์ที่แล้ว","dayPeriods-format-narrow-noon":"เที่ยง","field-week-short-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yMMMMEd":"E d MMMM G y","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"M/y","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","field-wed-short-relative+-1":"พุธที่แล้ว","field-weekdayOfMonth":"วันของเดือน","dateFormatItem-MMMEEEEd":"EEEEที่ d MMM","field-quarter-narrow-relative+0":"ไตรมาสนี้","dateFormatItem-GyMMMEd":"E d MMM G y","field-quarter-narrow-relative+1":"ไตรมาสหน้า","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","field-hour-narrow":"ชม.","field-year-narrow-relative+0":"ปีนี้","field-year-narrow-relative+1":"ปีหน้า","dateFormatItem-Gy":"G y","field-zone-narrow":"เขตเวลา","dayPeriods-standAlone-narrow-noon":"เที่ยง","field-tue-relative+-1":"อังคารที่แล้ว","dateFormatItem-yw":"สัปดาห์ที่ w ของปี Y","dateFormatItem-Hm":"HH:mm น.","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า","dateFormatItem-MMMMEEEEd":"EEEEที่ d MMMM","dateFormatItem-MMM":"LLL","field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-MMMMW":"สัปดาห์ที่ W ของเดือนMMMM","field-month-short-relative+-1":"เดือนที่แล้ว","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-week":"สัปดาห์","field-day-narrow":"วัน"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/hebrew.js b/lib/dojo/cldr/nls/th/hebrew.js
index 9ea12a4df..35f4ea67b 100644
--- a/lib/dojo/cldr/nls/th/hebrew.js
+++ b/lib/dojo/cldr/nls/th/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/hebrew",{"days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-second-relative+0":"ขณะนี้","field-weekday":"วันในสัปดาห์","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["ย.ศ."],"field-tue-relative+-1":"อังคารที่แล้ว","days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormat-long":"d MMMM G y","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-wed-relative+-1":"พุธที่แล้ว","months-format-wide":["ทิชรี","เฮวาน","กีสเลฟ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"dateFormatItem-yyyyQQQ":"QQQ G y","dayPeriods-format-wide-pm":"หลังเที่ยง","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-Md":"d/M","field-era":"สมัย","months-standAlone-wide":["ทิชรี","เฮวาน","กีสเลฟ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"timeFormat-long":"H นาฬิกา mm นาที ss วินาที z","field-year":"ปี","field-hour":"ชั่วโมง","months-format-abbr-leap":"อาดาร์ II","months-format-abbr":["ทิชรี","เฮวาน","กีสเลฟ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","timeFormat-full":"H นาฬิกา mm นาที ss วินาที zzzz","field-day-relative+0":"วันนี้","field-thu-relative+0":"พฤหัสนี้","field-day-relative+1":"พรุ่งนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-GyMMMd":"d MMM G y","field-day-relative+2":"มะรืนนี้","months-standAlone-abbr":["ทิชรี","เฮวาน","กีสเลฟ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-yyyyMMMEd":"E d MMM G y","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-yyyyMMM":"MMM G y","dateFormatItem-yyyyMMMd":"d MMM G y","months-standAlone-wide-leap":"อาดาร์ II","field-sun-relative+0":"อาทิตย์นี้","field-sun-relative+1":"อาทิตย์หน้า","quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"eraAbbr":["ย.ศ."],"field-minute":"นาที","field-dayperiod":"ช่วงวัน","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","field-day":"วัน","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-zone":"เขตเวลา","months-standAlone-abbr-leap":"อาดาร์ II","field-year-relative+-1":"ปีที่แล้ว","field-month-relative+-1":"เดือนที่แล้ว","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"eraNames":["ย.ศ."],"days-format-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"เดือน","days-standAlone-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"field-tue-relative+0":"อังคารนี้","field-tue-relative+1":"อังคารหน้า","dayPeriods-format-wide-am":"ก่อนเที่ยง","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","dateFormat-short":"d/M/y G","field-second":"วินาที","field-sat-relative+-1":"เสาร์ที่แล้ว","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-month-relative+0":"เดือนนี้","field-month-relative+1":"เดือนหน้า","dateFormatItem-Ed":"E d","field-week":"สัปดาห์","dateFormat-medium":"d MMM G y","field-year-relative+0":"ปีนี้","field-week-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"ปีหน้า","dateFormatItem-yyyyQQQQ":"QQQQ G y","months-format-wide-leap":"อาดาร์ II","dateFormatItem-GyMMM":"MMM G y","field-mon-relative+-1":"จันทร์ที่แล้ว","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า"}); \ No newline at end of file
+define("dojo/cldr/nls/th/hebrew",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-thu-short-relative+0":"พฤหัสนี้","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"วันของเดือน","dayPeriods-format-abbr-am":"ก่อนเที่ยง","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","dateFormatItem-yyyyQQQ":"QQQ G y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ย.ศ."],"field-weekOfMonth":"สัปดาห์ของเดือน","dayPeriods-standAlone-abbr-pm":"หลังเที่ยง","field-month-short":"เดือน","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","dayPeriods-format-wide-am":"ก่อนเที่ยง","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"พุธที่แล้ว","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","days-standAlone-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dayPeriods-standAlone-wide-pm":"หลังเที่ยง","dateFormat-long":"d MMMM G y","dateFormatItem-GyMMMd":"d MMM G y","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"days-format-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-GyMMM":"MMM G y","field-month":"เดือน","field-day-narrow":"วัน","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d MMM G y","dateFormatItem-yyyyMMMM":"MMMM G y","eraAbbr":["ย.ศ."],"quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dayPeriods-format-abbr-pm":"หลังเที่ยง","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"ไตรมาสที่แล้ว","dateFormatItem-yyyyMMMd":"d MMM G y","field-dayperiod-narrow":"ช่วงวัน","dayPeriods-standAlone-narrow-am":"ก่อนเที่ยง","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dayPeriods-format-wide-pm":"หลังเที่ยง","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","dateFormatItem-Md":"d/M","field-hour":"ชั่วโมง","months-format-wide":["ทิชรี","เฮวาน","กีสเลฟ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"dateFormat-full":"EEEEที่ d MMMM G y","field-month-relative+-1":"เดือนที่แล้ว","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","months-format-abbr":["ทิชรี","เฮวาน","กีสเลฟ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","timeFormat-long":"H นาฬิกา mm นาที ss วินาที z","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","dateFormat-short":"d/M/y G","field-thu-short-relative+-1":"พฤหัสที่แล้ว","field-year-narrow-relative+-1":"ปีที่แล้ว","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-yyyyMMMEd":"E d MMM G y","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","field-tue-narrow-relative+-1":"อังคารที่แล้ว","field-weekOfMonth-short":"สัปดาห์ของเดือน","dayPeriods-standAlone-narrow-pm":"หลังเที่ยง","field-wed-short-relative+0":"พุธนี้","months-standAlone-wide":["ทิชรี","เฮวาน","กีสเลฟ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"months-format-abbr-leap":"อาดาร์ II","field-weekday":"วันของสัปดาห์","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-day-short-relative+1":"พรุ่งนี้","field-sat-relative+0":"เสาร์นี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","months-standAlone-abbr":["ทิชรี","เฮวาน","กีสเลฟ","เตเวต","เชวัต","อาดาร์ I","อาดาร์","นิสซาน","อิยาร์","สีวัน","ตามูซ","อัฟ","เอลอุล"],"months-format-wide-leap":"อาดาร์ II","months-format-narrow-leap":"7","field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","timeFormat-full":"H นาฬิกา mm นาที ss วินาที zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"เขตเวลา","field-thu-narrow-relative+0":"พฤหัสนี้","field-thu-narrow-relative+1":"พฤหัสหน้า","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","field-dayperiod-short":"ช่วงวัน","dateFormatItem-yyyyMMM":"MMM G y","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-week-short-relative+-1":"สัปดาห์ที่แล้ว","months-standAlone-abbr-leap":"อาดาร์ II","dateFormatItem-yyyyQQQQ":"QQQQ G y","field-hour-short":"ชม.","field-zone-short":"โซน","quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","eraNarrow":["ย.ศ."],"field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","months-standAlone-wide-leap":"อาดาร์ II","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","dayPeriods-standAlone-abbr-am":"ก่อนเที่ยง","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า","dayPeriods-standAlone-wide-am":"ก่อนเที่ยง"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/indian.js b/lib/dojo/cldr/nls/th/indian.js
index 6351ec356..759a8f9bb 100644
--- a/lib/dojo/cldr/nls/th/indian.js
+++ b/lib/dojo/cldr/nls/th/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/indian",{"field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","field-dayperiod":"ช่วงวัน","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","field-minute":"นาที","field-day-relative+-1":"เมื่อวาน","field-weekday":"วันในสัปดาห์","field-day-relative+-2":"เมื่อวานซืน","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"สมัย","field-hour":"ชั่วโมง","field-sun-relative+0":"อาทิตย์นี้","field-sun-relative+1":"อาทิตย์หน้า","months-standAlone-abbr":["จิตรา","วิสาขา","เชษฐา","อัษฎา","ศรวณา","พัตรา","อัศวิชา","การติกา","มฤคศิรา","ปุษยา","มาฆะ","ผลคุณี"],"field-wed-relative+-1":"พุธที่แล้ว","field-day-relative+0":"วันนี้","field-day-relative+1":"พรุ่งนี้","eraAbbr":["ม.ศ."],"field-day-relative+2":"มะรืนนี้","field-tue-relative+0":"อังคารนี้","field-zone":"เขตเวลา","field-tue-relative+1":"อังคารหน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-sat-relative+-1":"เสาร์ที่แล้ว","field-year-relative+-1":"ปีที่แล้ว","field-year":"ปี","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","months-standAlone-wide":["จิตรา","วิสาขา","เชษฐา","อัษฎา","ศรวณา","พัตรา","อัศวิชา","การติกา","มฤคศิรา","ปุษยา","มาฆะ","ผลคุณี"],"field-week":"สัปดาห์","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า","months-format-abbr":["จิตรา","วิสาขา","เชษฐา","อัษฎา","ศรวณา","พัตรา","อัศวิชา","การติกา","มฤคศิรา","ปุษยา","มาฆะ","ผลคุณี"],"field-month-relative+0":"เดือนนี้","field-month":"เดือน","field-month-relative+1":"เดือนหน้า","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-second":"วินาที","field-tue-relative+-1":"อังคารที่แล้ว","field-day":"วัน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-thu-relative+0":"พฤหัสนี้","field-second-relative+0":"ขณะนี้","field-thu-relative+1":"พฤหัสหน้า","months-format-wide":["จิตรา","วิสาขา","เชษฐา","อัษฎา","ศรวณา","พัตรา","อัศวิชา","การติกา","มฤคศิรา","ปุษยา","มาฆะ","ผลคุณี"],"field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-month-relative+-1":"เดือนที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว"}); \ No newline at end of file
+define("dojo/cldr/nls/th/indian",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-thu-short-relative+0":"พฤหัสนี้","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","field-weekdayOfMonth-narrow":"วันของเดือน","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-weekOfMonth":"สัปดาห์ของเดือน","field-month-short":"เดือน","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","field-wed-relative+-1":"พุธที่แล้ว","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","field-month":"เดือน","field-day-narrow":"วัน","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","eraAbbr":["ม.ศ."],"field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"ไตรมาสที่แล้ว","field-dayperiod-narrow":"ช่วงวัน","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","field-hour":"ชั่วโมง","months-format-wide":["จิตรา","วิสาขา","เชษฐา","อัษฎา","ศรวณา","พัตรา","อัศวิชา","การติกา","มฤคศิรา","ปุษยา","มาฆะ","ผลคุณี"],"field-month-relative+-1":"เดือนที่แล้ว","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","months-format-abbr":["จิตรา","วิสาขา","เชษฐา","อัษฎา","ศรวณา","พัตรา","อัศวิชา","การติกา","มฤคศิรา","ปุษยา","มาฆะ","ผลคุณี"],"field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","field-thu-short-relative+-1":"พฤหัสที่แล้ว","field-year-narrow-relative+-1":"ปีที่แล้ว","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","field-tue-narrow-relative+-1":"อังคารที่แล้ว","field-weekOfMonth-short":"สัปดาห์ของเดือน","field-wed-short-relative+0":"พุธนี้","months-standAlone-wide":["จิตรา","วิสาขา","เชษฐา","อัษฎา","ศรวณา","พัตรา","อัศวิชา","การติกา","มฤคศิรา","ปุษยา","มาฆะ","ผลคุณี"],"field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-day-short-relative+1":"พรุ่งนี้","field-sat-relative+0":"เสาร์นี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","months-standAlone-abbr":["จิตรา","วิสาขา","เชษฐา","อัษฎา","ศรวณา","พัตรา","อัศวิชา","การติกา","มฤคศิรา","ปุษยา","มาฆะ","ผลคุณี"],"field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","field-zone-narrow":"เขตเวลา","field-thu-narrow-relative+0":"พฤหัสนี้","field-thu-narrow-relative+1":"พฤหัสหน้า","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","field-dayperiod-short":"ช่วงวัน","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","field-week-short-relative+-1":"สัปดาห์ที่แล้ว","field-hour-short":"ชม.","field-zone-short":"โซน","field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/islamic.js b/lib/dojo/cldr/nls/th/islamic.js
index ff2b2d9e5..7d0cbf606 100644
--- a/lib/dojo/cldr/nls/th/islamic.js
+++ b/lib/dojo/cldr/nls/th/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/islamic",{"days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"ขณะนี้","field-weekday":"วันในสัปดาห์","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["ฮ.ศ."],"field-tue-relative+-1":"อังคารที่แล้ว","days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormat-long":"d MMMM G y","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-wed-relative+-1":"พุธที่แล้ว","months-format-wide":["มุฮะร์รอม","ซอฟาร์","รอบี I","รอบี II","จุมาดา I","จุมาดา II","รอจับ","ชะอะบาน","รอมะดอน","เชาวัล","ซุลกิอฺดะฮฺ","ซุลหิจญะฮฺ"],"dateFormatItem-yyyyQQQ":"QQQ G y","dayPeriods-format-wide-pm":"หลังเที่ยง","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-Md":"d/M","field-era":"สมัย","months-standAlone-wide":["มุฮะร์รอม","ซอฟาร์","รอบี I","รอบี II","จุมาดา I","จุมาดา II","รอจับ","ชะอะบาน","รอมะดอน","เชาวัล","ซุลกิอฺดะฮฺ","ซุลหิจญะฮฺ"],"quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"timeFormat-long":"H นาฬิกา mm นาที ss วินาที z","field-year":"ปี","field-hour":"ชั่วโมง","months-format-abbr":["มุฮัร.","เศาะ.","รอบี 1","รอบี 2","ญุมา 1","ญุมา 2","เราะ.","ชะอ์.","เราะมะ.","เชาว.","ซุลกิอฺ.","ซุลหิจ."],"field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","timeFormat-full":"H นาฬิกา mm นาที ss วินาที zzzz","field-day-relative+0":"วันนี้","field-thu-relative+0":"พฤหัสนี้","field-day-relative+1":"พรุ่งนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-GyMMMd":"d MMM G y","field-day-relative+2":"มะรืนนี้","months-standAlone-abbr":["มุฮัร.","เศาะ.","รอบี 1","รอบี 2","ญุมา 1","ญุมา 2","เราะ.","ชะอ์.","เราะมะ.","เชาว.","ซุลกิอฺ.","ซุลหิจ."],"quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-yyyyMMMEd":"E d MMM G y","dateFormatItem-M":"L","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-yyyyMMM":"MMM G y","dateFormatItem-yyyyMMMd":"d MMM G y","field-sun-relative+0":"อาทิตย์นี้","field-sun-relative+1":"อาทิตย์หน้า","quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"eraAbbr":["ฮ.ศ."],"field-minute":"นาที","field-dayperiod":"ช่วงวัน","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-d":"d","field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","field-day":"วัน","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-zone":"เขตเวลา","dateFormatItem-y":"G y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"ปีที่แล้ว","field-month-relative+-1":"เดือนที่แล้ว","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"eraNames":["ฮิจเราะห์ศักราช"],"days-format-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"เดือน","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"field-tue-relative+0":"อังคารนี้","field-tue-relative+1":"อังคารหน้า","dayPeriods-format-wide-am":"ก่อนเที่ยง","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","dateFormat-short":"d/M/y G","field-second":"วินาที","field-sat-relative+-1":"เสาร์ที่แล้ว","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-month-relative+0":"เดือนนี้","field-month-relative+1":"เดือนหน้า","dateFormatItem-Ed":"E d","field-week":"สัปดาห์","dateFormat-medium":"d MMM G y","field-year-relative+0":"ปีนี้","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-year-relative+1":"ปีหน้า","dateFormatItem-yyyyM":"M/y G","dateFormatItem-yyyyQQQQ":"QQQQ G y","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-GyMMM":"MMM G y","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า"}); \ No newline at end of file
+define("dojo/cldr/nls/th/islamic",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-thu-short-relative+0":"พฤหัสนี้","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"วันของเดือน","dayPeriods-format-abbr-am":"ก่อนเที่ยง","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","dateFormatItem-yyyyQQQ":"QQQ G y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["ฮิจเราะห์ศักราช"],"field-weekOfMonth":"สัปดาห์ของเดือน","dayPeriods-standAlone-abbr-pm":"หลังเที่ยง","field-month-short":"เดือน","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","dayPeriods-format-wide-am":"ก่อนเที่ยง","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"พุธที่แล้ว","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","days-standAlone-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dayPeriods-standAlone-wide-pm":"หลังเที่ยง","dateFormat-long":"d MMMM G y","dateFormatItem-GyMMMd":"d MMM G y","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"days-format-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-GyMMM":"MMM G y","field-month":"เดือน","field-day-narrow":"วัน","dateFormatItem-MMM":"LLL","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d MMM G y","dateFormatItem-yyyyMMMM":"MMMM G y","eraAbbr":["ฮ.ศ."],"quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dayPeriods-format-abbr-pm":"หลังเที่ยง","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"ไตรมาสที่แล้ว","dateFormatItem-yyyyMMMd":"d MMM G y","field-dayperiod-narrow":"ช่วงวัน","dayPeriods-standAlone-narrow-am":"ก่อนเที่ยง","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dayPeriods-format-wide-pm":"หลังเที่ยง","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","dateFormatItem-Md":"d/M","field-hour":"ชั่วโมง","months-format-wide":["มุฮะร์รอม","ซอฟาร์","รอบี I","รอบี II","จุมาดา I","จุมาดา II","รอจับ","ชะอะบาน","รอมะดอน","เชาวัล","ซุลกิอฺดะฮฺ","ซุลหิจญะฮฺ"],"dateFormat-full":"EEEEที่ d MMMM G y","field-month-relative+-1":"เดือนที่แล้ว","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","months-format-abbr":["มุฮัร.","เศาะ.","รอบี I","รอบี II","จุมาดา I","จุมาดา II","เราะ.","ชะอ์.","เราะมะ.","เชาว.","ซุลกิอฺ.","ซุลหิจ."],"field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","timeFormat-long":"H นาฬิกา mm นาที ss วินาที z","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","dateFormat-short":"d/M/y G","field-thu-short-relative+-1":"พฤหัสที่แล้ว","field-year-narrow-relative+-1":"ปีที่แล้ว","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-yyyyMMMEd":"E d MMM G y","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","field-tue-narrow-relative+-1":"อังคารที่แล้ว","field-weekOfMonth-short":"สัปดาห์ของเดือน","dateFormatItem-yyyy":"G y","dayPeriods-standAlone-narrow-pm":"หลังเที่ยง","field-wed-short-relative+0":"พุธนี้","dateFormatItem-M":"L","months-standAlone-wide":["มุฮะร์รอม","ซอฟาร์","รอบี I","รอบี II","จุมาดา I","จุมาดา II","รอจับ","ชะอะบาน","รอมะดอน","เชาวัล","ซุลกิอฺดะฮฺ","ซุลหิจญะฮฺ"],"field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormatItem-d":"d","field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-day-short-relative+1":"พรุ่งนี้","field-sat-relative+0":"เสาร์นี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","months-standAlone-abbr":["มุฮัร.","เศาะ.","รอบี I","รอบี II","จุมาดา I","จุมาดา II","เราะ.","ชะอ์.","เราะมะ.","เชาว.","ซุลกิอฺ.","ซุลหิจ."],"field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","timeFormat-full":"H นาฬิกา mm นาที ss วินาที zzzz","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"เขตเวลา","dateFormatItem-y":"G y","field-thu-narrow-relative+0":"พฤหัสนี้","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+1":"พฤหัสหน้า","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","dateFormatItem-yyyyMMM":"MMM G y","field-dayperiod-short":"ช่วงวัน","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-week-short-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyQQQQ":"QQQQ G y","field-hour-short":"ชม.","field-zone-short":"โซน","quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","eraNarrow":["ฮ.ศ."],"field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","dayPeriods-standAlone-abbr-am":"ก่อนเที่ยง","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","dateFormatItem-Gy":"G y","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า","dayPeriods-standAlone-wide-am":"ก่อนเที่ยง"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/japanese.js b/lib/dojo/cldr/nls/th/japanese.js
index 5dbe8f640..af67ded97 100644
--- a/lib/dojo/cldr/nls/th/japanese.js
+++ b/lib/dojo/cldr/nls/th/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/japanese",{"field-second-relative+0":"ขณะนี้","field-weekday":"วันในสัปดาห์","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"อังคารที่แล้ว","dateFormat-long":"d MMMM ปีG y","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-wed-relative+-1":"พุธที่แล้ว","dateFormatItem-yyyyQQQ":"QQQ G y","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"EEEEที่ d MMMM ปีGที่ y","dateFormatItem-yyyyMEd":"E d/M/GGGGG y","field-thu-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-Md":"d/M","field-era":"สมัย","field-year":"ปี","field-hour":"ชั่วโมง","field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","field-day-relative+0":"วันนี้","field-day-relative+1":"พรุ่งนี้","field-thu-relative+0":"พฤหัสนี้","dateFormatItem-GyMMMd":"d MMM G y","field-day-relative+2":"มะรืนนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-H":"HH","dateFormatItem-Gy":"G y","dateFormatItem-yyyyMMMEd":"E d MMM G y","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM G y","dateFormatItem-yyyyMMMd":"d MMM G y","field-sun-relative+0":"อาทิตย์นี้","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"อาทิตย์หน้า","eraAbbr":["ทะอิกะ (645-650)","ฮะกุชิ (650-671)","ฮากุโฮ (672-686)","ชุโช (686-701)","ทะอิโฮ (701-704)","เคอุง (704-708)","วะโด (708-715)","เรกิ (715-717)","โยโร (717-724)","จิงกิ (724-729)","เท็มเพียว (729-749)","เท็มเพียว-คัมโป (749-749)","เท็มเพียว-โชโฮ (749-757)","เท็มเพียว-โฮจิ (757-765)","เท็มเพียว-จิงโงะ (765-767)","จิงโงะ-เคอุง (767-770)","โฮกิ (770-780)","เท็นโอ (781-782)","เอ็นเรียะกุ (782-806)","ดะอิโด (806-810)","โคนิง (810-824)","เท็นโช (824-834)","โชวะ (834-848)","คะโจ (848-851)","นินจุ (851-854)","ซะอิโกะ (854-857)","เท็นนัง (857-859)","โจงัง (859-877)","เก็งเก (877-885)","นินนะ (885-889)","คัมเพียว (889-898)","โชตะอิ (898-901)","เอ็งงิ (901-923)","เอ็นโช (923-931)","โชเฮ (931-938)","เท็งเงียว (938-947)","เท็นเรียะกุ (947-957)","เท็นโตะกุ (957-961)","โอวะ (961-964)","โคโฮ (964-968)","อันนะ (968-970)","เท็นโระกุ (970-973)","เท็นเอ็ง (973-976)","โจเง็ง (976-978)","เท็งเง็ง (978-983)","เอกัง (983-985)","คันนะ (985-987)","เอเอ็ง (987-989)","เอโซ (989-990)","โชเรียะกุ (990-995)","โชโตะกุ (995-999)","โชโฮ (999-1004)","คันโก (1004-1012)","โชวะ (1012-1017)","คันนิง (1017-1021)","จิอัง (1021-1024)","มันจุ (1024-1028)","โชเง็ง (1028-1037)","โชเรียะกุ (1037-1040)","โชคีว (1040-1044)","คันโตะกุ (1044-1046)","เอโช (1046-1053)","เท็งงิ (1053-1058)","โคเฮ (1058-1065)","จิเรียะกุ (1065-1069)","เอ็งคีว (1069-1074)","โชโฮ (1074-1077)","โชเรียะกุ (1077-1081)","เอโฮะ (1081-1084)","โอโตะกุ (1084-1087)","คันจิ (1087-1094)","คะโฮะ (1094-1096)","เอโช (1096-1097)","โชโตะกุ (1097-1099)","โควะ (1099-1104)","โชจิ (1104-1106)","คะโช (1106-1108)","เท็นนิง (1108-1110)","เท็นเอ (1110-1113)","เอกีว (1113-1118)","เก็นเอ (1118-1120)","โฮะอัง (1120-1124)","เท็นจิ (1124-1126)","ดะอิจิ (1126-1131)","เท็นโช (1131-1132)","โชโช (1132-1135)","โฮะเอ็ง (1135-1141)","เอจิ (1141-1142)","โคจิ (1142-1144)","เท็นโย (1144-1145)","คีวอัง (1145-1151)","นิมเป (1151-1154)","คีวจุ (1154-1156)","โฮะเง็ง (1156-1159)","เฮจิ (1159-1160)","เอเรียะกุ (1160-1161)","โอโฮ (1161-1163)","โชกัง (1163-1165)","เอมัง (1165-1166)","นินอัง (1166-1169)","คะโอ (1169-1171)","โชอัง (1171-1175)","อังเง็ง (1175-1177)","จิโช (1177-1181)","โยวะ (1181-1182)","จุเอ (1182-1184)","เก็นเรียะกุ (1184-1185)","บุนจิ (1185-1190)","เค็งกีว (1190-1199)","โชจิ (1199-1201)","เค็นนิง (1201-1204)","เก็งกีว (1204-1206)","เค็นเอ (1206-1207)","โชเก็ง (1207-1211)","เค็นเรียะกุ (1211-1213)","เค็มโป (1213-1219)","โชกีว (1219-1222)","โจโอ (1222-1224)","เก็นนิง (1224-1225)","คะโระกุ (1225-1227)","อันเต (1227-1229)","คังกิ (1229-1232)","โจเอ (1232-1233)","เท็มปุกุ (1233-1234)","บุนเรียะกุ (1234-1235)","คะเต (1235-1238)","เรียะกุนิง (1238-1239)","เอ็นโอ (1239-1240)","นินจิ (1240-1243)","คังเง็ง (1243-1247)","โฮจิ (1247-1249)","เค็นโช (1249-1256)","โคเง็ง (1256-1257)","โชกะ (1257-1259)","โชเง็ง (1259-1260)","บุนโอ (1260-1261)","โคโช (1261-1264)","บุนเอ (1264-1275)","เค็นจิ (1275-1278)","โคอัง (1278-1288)","โชโอ (1288-1293)","เอนิง (1293-1299)","โชอัง (1299-1302)","เค็งเง็ง (1302-1303)","คะเง็ง (1303-1306)","โทะกุจิ (1306-1308)","เอ็งเก (1308-1311)","โอโช (1311-1312)","โชวะ (1312-1317)","บุมโป (1317-1319)","เก็นโอ (1319-1321)","เก็งเกียว (1321-1324)","โชชู (1324-1326)","คะเระกิ (1326-1329)","เก็นโตะกุ (1329-1331)","เก็งโก (1331-1334)","เค็มมุ (1334-1336)","เอ็งเง็ง (1336-1340)","โคโกะกุ (1340-1346)","โชเฮ (1346-1370)","เค็นโตะกุ (1370-1372)","บุนชู (1372-1375)","เท็นจุ (1375-1379)","โคเรียะกุ (1379-1381)","โควะ (1381-1384)","เก็นชู (1384-1392)","เมโตะกุ (1384-1387)","คะเค (1387-1389)","โคโอ (1389-1390)","เมโตะกุ (1390-1394)","โอเอ (1394-1428)","โชโช (1428-1429)","เอเกียว (1429-1441)","คะกิสึ (1441-1444)","บุนอัง (1444-1449)","โฮโตะกุ (1449-1452)","เคียวโตะกุ (1452-1455)","โคโช (1455-1457)","โชโระกุ (1457-1460)","คันโช (1460-1466)","บุนโช (1466-1467)","โอนิง (1467-1469)","บุมเม (1469-1487)","โชเกียว (1487-1489)","เอ็นโตะกุ (1489-1492)","เมโอ (1492-1501)","บุงกิ (1501-1504)","เอโช (1504-1521)","ทะอิเอ (1521-1528)","เคียวโระกุ (1528-1532)","เท็มมน (1532-1555)","โคจิ (1555-1558)","เอโระกุ (1558-1570)","เก็งกิ (1570-1573)","เท็นโช (1573-1592)","บุนโระกุ (1592-1596)","เคโช (1596-1615)","เก็งวะ (1615-1624)","คันเอ (1624-1644)","โชโฮ (1644-1648)","เคอัง (1648-1652)","โชโอ (1652-1655)","เมเรียะกุ (1655-1658)","มันจิ (1658-1661)","คัมบุง (1661-1673)","เอ็มโป (1673-1681)","เท็นวะ (1681-1684)","โจเกียว (1684-1688)","เก็นโระกุ (1688-1704)","โฮเอ (1704-1711)","โชโตะกุ (1711-1716)","เคียวโฮ (1716-1736)","เก็มบุง (1736-1741)","คัมโป (1741-1744)","เอ็งเกียว (1744-1748)","คันเอ็ง (1748-1751)","โฮเรียะกุ (1751-1764)","เมวะ (1764-1772)","อันเอ (1772-1781)","เท็มเม (1781-1789)","คันเซ (1789-1801)","เคียววะ (1801-1804)","บุงกะ (1804-1818)","บุนเซ (1818-1830)","เท็มโป (1830-1844)","โคกะ (1844-1848)","คะเอ (1848-1854)","อันเซ (1854-1860)","มันเอ็ง (1860-1861)","บุงกีว (1861-1864)","เก็นจิ (1864-1865)","เคโอ (1865-1868)","เมจิ","ทะอิโช","โชวะ","เฮเซ"],"field-minute":"นาที","field-dayperiod":"ช่วงวัน","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"เมื่อวาน","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"เมื่อวานซืน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","field-day":"วัน","field-zone":"เขตเวลา","dateFormatItem-y":"G y","field-year-relative+-1":"ปีที่แล้ว","field-month-relative+-1":"เดือนที่แล้ว","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d/M/GGGGG y","field-month":"เดือน","dateFormatItem-MMM":"LLL","field-tue-relative+0":"อังคารนี้","field-tue-relative+1":"อังคารหน้า","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","dateFormat-short":"d/M/yy G","field-second":"วินาที","field-sat-relative+-1":"เสาร์ที่แล้ว","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-month-relative+0":"เดือนนี้","field-month-relative+1":"เดือนหน้า","dateFormatItem-Ed":"E d","field-week":"สัปดาห์","dateFormat-medium":"d MMM G y","field-year-relative+0":"ปีนี้","field-week-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyM":"M/GGGGG y","field-year-relative+1":"ปีหน้า","dateFormatItem-yyyyQQQQ":"QQQQ G y","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM G y","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-yyyy":"G y","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า"}); \ No newline at end of file
+define("dojo/cldr/nls/th/japanese",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-ms":"mm:ss","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+0":"พฤหัสนี้","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"วันของเดือน","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","dateFormatItem-yyyyQQQ":"QQQ G y","field-weekOfMonth":"สัปดาห์ของเดือน","field-month-short":"เดือน","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-yyyyMd":"d/M/GGGGG y","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","dateFormatItem-yyyyMEd":"E d/M/GGGGG y","field-wed-relative+-1":"พุธที่แล้ว","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","dateFormat-long":"d MMMM ปีG y","dateFormatItem-GyMMMd":"d MMM G y","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-GyMMM":"MMM G y","field-month":"เดือน","field-day-narrow":"วัน","dateFormatItem-MMM":"LLL","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","dateFormat-medium":"d MMM G y","eraAbbr":["ทะอิกะ (645–650)","ฮะกุชิ (650–671)","ฮากุโฮ (672–686)","ชุโช (686–701)","ทะอิโฮ (701–704)","เคอุง (704–708)","วะโด (708–715)","เรกิ (715–717)","โยโร (717–724)","จิงกิ (724–729)","เท็มเพียว (729–749)","เท็มเพียว-คัมโป (749-749)","เท็มเพียว-โชโฮ (749-757)","เท็มเพียว-โฮจิ (757-765)","เท็มเพียว-จิงโงะ (765-767)","จิงโงะ-เคอุง (767-770)","โฮกิ (770–780)","เท็นโอ (781–782)","เอ็นเรียะกุ (782–806)","ดะอิโด (806–810)","โคนิง (810–824)","เท็นโช (824–834)","โชวะ (834–848)","คะโจ (848–851)","นินจุ (851–854)","ซะอิโกะ (854–857)","เท็นนัง (857–859)","โจงัง (859–877)","เก็งเก (877–885)","นินนะ (885–889)","คัมเพียว (889–898)","โชตะอิ (898–901)","เอ็งงิ (901–923)","เอ็นโช (923–931)","โชเฮ (931–938)","เท็งเงียว (938–947)","เท็นเรียะกุ (947–957)","เท็นโตะกุ (957–961)","โอวะ (961–964)","โคโฮ (964–968)","อันนะ (968–970)","เท็นโระกุ (970–973)","เท็นเอ็ง (973–976)","โจเง็ง (976–978)","เท็งเง็ง (978–983)","เอกัง (983–985)","คันนะ (985–987)","เอเอ็ง (987–989)","เอโซ (989–990)","โชเรียะกุ (990–995)","โชโตะกุ (995–999)","โชโฮ (999–1004)","คันโก (1004–1012)","โชวะ (1012–1017)","คันนิง (1017–1021)","จิอัง (1021–1024)","มันจุ (1024–1028)","โชเง็ง (1028–1037)","โชเรียะกุ (1037–1040)","โชคีว (1040–1044)","คันโตะกุ (1044–1046)","เอโช (1046–1053)","เท็งงิ (1053–1058)","โคเฮ (1058–1065)","จิเรียะกุ (1065–1069)","เอ็งคีว (1069–1074)","โชโฮ (1074–1077)","โชเรียะกุ (1077–1081)","เอโฮะ (1081–1084)","โอโตะกุ (1084–1087)","คันจิ (1087–1094)","คะโฮะ (1094–1096)","เอโช (1096–1097)","โชโตะกุ (1097–1099)","โควะ (1099–1104)","โชจิ (1104–1106)","คะโช (1106–1108)","เท็นนิง (1108–1110)","เท็นเอ (1110–1113)","เอกีว (1113–1118)","เก็นเอ (1118–1120)","โฮะอัง (1120–1124)","เท็นจิ (1124–1126)","ดะอิจิ (1126–1131)","เท็นโช (1131–1132)","โชโช (1132–1135)","โฮะเอ็ง (1135–1141)","เอจิ (1141–1142)","โคจิ (1142–1144)","เท็นโย (1144–1145)","คีวอัง (1145–1151)","นิมเป (1151–1154)","คีวจุ (1154–1156)","โฮะเง็ง (1156–1159)","เฮจิ (1159–1160)","เอเรียะกุ (1160–1161)","โอโฮ (1161–1163)","โชกัง (1163–1165)","เอมัง (1165–1166)","นินอัง (1166–1169)","คะโอ (1169–1171)","โชอัง (1171–1175)","อังเง็ง (1175–1177)","จิโช (1177–1181)","โยวะ (1181–1182)","จุเอ (1182–1184)","เก็นเรียะกุ (1184–1185)","บุนจิ (1185–1190)","เค็งกีว (1190–1199)","โชจิ (1199–1201)","เค็นนิง (1201–1204)","เก็งกีว (1204–1206)","เค็นเอ (1206–1207)","โชเก็ง (1207–1211)","เค็นเรียะกุ (1211–1213)","เค็มโป (1213–1219)","โชกีว (1219–1222)","โจโอ (1222–1224)","เก็นนิง (1224–1225)","คะโระกุ (1225–1227)","อันเต (1227–1229)","คังกิ (1229–1232)","โจเอ (1232–1233)","เท็มปุกุ (1233–1234)","บุนเรียะกุ (1234–1235)","คะเต (1235–1238)","เรียะกุนิง (1238–1239)","เอ็นโอ (1239–1240)","นินจิ (1240–1243)","คังเง็ง (1243–1247)","โฮจิ (1247–1249)","เค็นโช (1249–1256)","โคเง็ง (1256–1257)","โชกะ (1257–1259)","โชเง็ง (1259–1260)","บุนโอ (1260–1261)","โคโช (1261–1264)","บุนเอ (1264–1275)","เค็นจิ (1275–1278)","โคอัง (1278–1288)","โชโอ (1288–1293)","เอนิง (1293–1299)","โชอัง (1299–1302)","เค็งเง็ง (1302–1303)","คะเง็ง (1303–1306)","โทะกุจิ (1306–1308)","เอ็งเก (1308–1311)","โอโช (1311–1312)","โชวะ (1312–1317)","บุมโป (1317–1319)","เก็นโอ (1319–1321)","เก็งเกียว (1321–1324)","โชชู (1324–1326)","คะเระกิ (1326–1329)","เก็นโตะกุ (1329–1331)","เก็งโก (1331–1334)","เค็มมุ (1334–1336)","เอ็งเง็ง (1336–1340)","โคโกะกุ (1340–1346)","โชเฮ (1346–1370)","เค็นโตะกุ (1370–1372)","บุนชู (1372–1375)","เท็นจุ (1375–1379)","โคเรียะกุ (1379–1381)","โควะ (1381–1384)","เก็นชู (1384–1392)","เมโตะกุ (1384–1387)","คะเค (1387–1389)","โคโอ (1389–1390)","เมโตะกุ (1390–1394)","โอเอ (1394–1428)","โชโช (1428–1429)","เอเกียว (1429–1441)","คะกิสึ (1441–1444)","บุนอัง (1444–1449)","โฮโตะกุ (1449–1452)","เคียวโตะกุ (1452–1455)","โคโช (1455–1457)","โชโระกุ (1457–1460)","คันโช (1460–1466)","บุนโช (1466–1467)","โอนิง (1467–1469)","บุมเม (1469–1487)","โชเกียว (1487–1489)","เอ็นโตะกุ (1489–1492)","เมโอ (1492–1501)","บุงกิ (1501–1504)","เอโช (1504–1521)","ทะอิเอ (1521–1528)","เคียวโระกุ (1528–1532)","เท็มมน (1532–1555)","โคจิ (1555–1558)","เอโระกุ (1558–1570)","เก็งกิ (1570–1573)","เท็นโช (1573–1592)","บุนโระกุ (1592–1596)","เคโช (1596–1615)","เก็งวะ (1615–1624)","คันเอ (1624–1644)","โชโฮ (1644–1648)","เคอัง (1648–1652)","โชโอ (1652–1655)","เมเรียะกุ (1655–1658)","มันจิ (1658–1661)","คัมบุง (1661–1673)","เอ็มโป (1673–1681)","เท็นวะ (1681–1684)","โจเกียว (1684–1688)","เก็นโระกุ (1688–1704)","โฮเอ (1704–1711)","โชโตะกุ (1711–1716)","เคียวโฮ (1716–1736)","เก็มบุง (1736–1741)","คัมโป (1741–1744)","เอ็งเกียว (1744–1748)","คันเอ็ง (1748–1751)","โฮเรียะกุ (1751–1764)","เมวะ (1764–1772)","อันเอ (1772–1781)","เท็มเม (1781–1789)","คันเซ (1789–1801)","เคียววะ (1801–1804)","บุงกะ (1804–1818)","บุนเซ (1818–1830)","เท็มโป (1830–1844)","โคกะ (1844–1848)","คะเอ (1848–1854)","อันเซ (1854–1860)","มันเอ็ง (1860–1861)","บุงกีว (1861–1864)","เก็นจิ (1864–1865)","เคโอ (1865–1868)","เมจิ","ทะอิโช","โชวะ","เฮเซ","เรวะ"],"dateFormatItem-yyyyM":"M/GGGGG y","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","field-quarter-relative+-1":"ไตรมาสที่แล้ว","dateFormatItem-yyyyMMMd":"d MMM G y","field-dayperiod-narrow":"ช่วงวัน","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"d/M","field-hour":"ชั่วโมง","dateFormat-full":"EEEEที่ d MMMM ปีGที่ y","field-month-relative+-1":"เดือนที่แล้ว","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","dateFormat-short":"d/M/yy G","field-year-narrow-relative+-1":"ปีที่แล้ว","field-thu-short-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-yyyyMMMEd":"E d MMM G y","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-H":"HH","field-weekOfMonth-short":"สัปดาห์ของเดือน","field-tue-narrow-relative+-1":"อังคารที่แล้ว","dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","field-wed-short-relative+0":"พุธนี้","field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-day-short-relative+1":"พรุ่งนี้","field-sat-relative+0":"เสาร์นี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","dateFormatItem-h":"h a","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"เขตเวลา","dateFormatItem-y":"G y","field-thu-narrow-relative+0":"พฤหัสนี้","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+1":"พฤหัสหน้า","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","dateFormatItem-yyyyMMM":"MMM G y","field-dayperiod-short":"ช่วงวัน","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","field-week-short-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyQQQQ":"QQQQ G y","field-hour-short":"ชม.","field-zone-short":"โซน","field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","dateFormatItem-Gy":"G y","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/number.js b/lib/dojo/cldr/nls/th/number.js
index 99a8b8d45..f0e52b1dd 100644
--- a/lib/dojo/cldr/nls/th/number.js
+++ b/lib/dojo/cldr/nls/th/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000 ล้านล้าน","decimalFormat-short":"000 ล'.'ล'.'"}); \ No newline at end of file
+define("dojo/cldr/nls/th/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000T","nan":"NaN","plusSign":"+","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 ล้านล้าน","decimalFormat":"#,##0.###","currencyFormat-short":"¤000T","timeSeparator":":","decimal":".","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/persian.js b/lib/dojo/cldr/nls/th/persian.js
index 2a2256c65..29fd6d12a 100644
--- a/lib/dojo/cldr/nls/th/persian.js
+++ b/lib/dojo/cldr/nls/th/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/persian",{"days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"ขณะนี้","field-weekday":"วันในสัปดาห์","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-MMMEd":"E d MMM","eraNarrow":["ปีเปอร์เซีย"],"field-tue-relative+-1":"อังคารที่แล้ว","days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dateFormat-long":"d MMMM G y","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-wed-relative+-1":"พุธที่แล้ว","months-format-wide":["ฟาร์วาร์ดิน","ออร์ดิเบเฮชต์","คอร์แดด","เตอร์","มอร์แดด","ชาหริวาร์","เมฮร์","อะบาน","อะซาร์","เดย์","บาฮ์มาน","เอสฟานด์"],"dateFormatItem-yyyyQQQ":"QQQ G y","dayPeriods-format-wide-pm":"หลังเที่ยง","dateFormat-full":"EEEEที่ d MMMM G y","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-thu-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-Md":"d/M","field-era":"สมัย","months-standAlone-wide":["ฟาร์วาร์ดิน","ออร์ดิเบเฮชต์","คอร์แดด","เตอร์","มอร์แดด","ชาหริวาร์","เมฮร์","อะบาน","อะซาร์","เดย์","บาฮ์มาน","เอสฟานด์"],"quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"timeFormat-long":"H นาฬิกา mm นาที ss วินาที z","field-year":"ปี","field-hour":"ชั่วโมง","months-format-abbr":["ฟาร์วาร์ดิน","ออร์ดิเบเฮชต์","คอร์แดด","เตอร์","มอร์แดด","ชาหริวาร์","เมฮร์","อะบาน","อะซาร์","เดย์","บาฮ์มาน","เอสฟานด์"],"field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","timeFormat-full":"H นาฬิกา mm นาที ss วินาที zzzz","field-day-relative+0":"วันนี้","field-thu-relative+0":"พฤหัสนี้","field-day-relative+1":"พรุ่งนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-GyMMMd":"d MMM G y","field-day-relative+2":"มะรืนนี้","months-standAlone-abbr":["ฟาร์วาร์ดิน","ออร์ดิเบเฮชต์","คอร์แดด","เตอร์","มอร์แดด","ชาหริวาร์","เมฮร์","อะบาน","อะซาร์","เดย์","บาฮ์มาน","เอสฟานด์"],"quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-yyyyMMMEd":"E d MMM G y","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-yyyyMMM":"MMM G y","dateFormatItem-yyyyMMMd":"d MMM G y","field-sun-relative+0":"อาทิตย์นี้","field-sun-relative+1":"อาทิตย์หน้า","quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"eraAbbr":["ปีเปอร์เซีย"],"field-minute":"นาที","field-dayperiod":"ช่วงวัน","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E d/M","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","field-day":"วัน","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-zone":"เขตเวลา","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"ปีที่แล้ว","field-month-relative+-1":"เดือนที่แล้ว","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"eraNames":["ปีเปอร์เซีย"],"days-format-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dateFormatItem-yyyyMd":"d/M/y GGGGG","field-month":"เดือน","days-standAlone-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"field-tue-relative+0":"อังคารนี้","field-tue-relative+1":"อังคารหน้า","dayPeriods-format-wide-am":"ก่อนเที่ยง","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","dateFormat-short":"d/M/y G","field-second":"วินาที","field-sat-relative+-1":"เสาร์ที่แล้ว","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-month-relative+0":"เดือนนี้","field-month-relative+1":"เดือนหน้า","dateFormatItem-Ed":"E d","field-week":"สัปดาห์","dateFormat-medium":"d MMM G y","field-year-relative+0":"ปีนี้","field-week-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyM":"M/y G","field-year-relative+1":"ปีหน้า","dateFormatItem-yyyyQQQQ":"QQQQ G y","dateFormatItem-GyMMM":"MMM G y","field-mon-relative+-1":"จันทร์ที่แล้ว","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า"}); \ No newline at end of file
+define("dojo/cldr/nls/th/persian",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-thu-short-relative+0":"พฤหัสนี้","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","dayPeriods-format-narrow-am":"a","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"วันของเดือน","dayPeriods-format-abbr-am":"ก่อนเที่ยง","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","dateFormatItem-yyyyQQQ":"QQQ G y","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["ปีเปอร์เซีย"],"field-weekOfMonth":"สัปดาห์ของเดือน","dayPeriods-standAlone-abbr-pm":"หลังเที่ยง","field-month-short":"เดือน","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-yyyyMd":"d/M/y GGGGG","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","dayPeriods-format-wide-am":"ก่อนเที่ยง","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","dateFormatItem-yyyyMEd":"E d/M/y GGGGG","field-wed-relative+-1":"พุธที่แล้ว","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","days-standAlone-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"dayPeriods-standAlone-wide-pm":"หลังเที่ยง","dateFormat-long":"d MMMM G y","dateFormatItem-GyMMMd":"d MMM G y","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","quarters-standAlone-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"days-format-narrow":["อา","จ","อ","พ","พฤ","ศ","ส"],"field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-GyMMM":"MMM G y","field-month":"เดือน","field-day-narrow":"วัน","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","dayPeriods-format-narrow-pm":"p","dateFormat-medium":"d MMM G y","dateFormatItem-yyyyMMMM":"MMMM G y","eraAbbr":["ปีเปอร์เซีย"],"quarters-standAlone-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dayPeriods-format-abbr-pm":"หลังเที่ยง","dateFormatItem-yyyyM":"M/y G","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"ไตรมาสที่แล้ว","dateFormatItem-yyyyMMMd":"d MMM G y","field-dayperiod-narrow":"ช่วงวัน","dayPeriods-standAlone-narrow-am":"ก่อนเที่ยง","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","days-format-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"dayPeriods-format-wide-pm":"หลังเที่ยง","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","dateFormatItem-Md":"d/M","field-hour":"ชั่วโมง","months-format-wide":["ฟาร์วาร์ดิน","ออร์ดิเบเฮชต์","คอร์แดด","เตอร์","มอร์แดด","ชาหริวาร์","เมฮร์","อะบาน","อะซาร์","เดย์","บาฮ์มาน","เอสฟานด์"],"dateFormat-full":"EEEEที่ d MMMM G y","field-month-relative+-1":"เดือนที่แล้ว","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","months-format-abbr":["ฟาร์วาร์ดิน","ออร์ดิเบเฮชต์","คอร์แดด","เตอร์","มอร์แดด","ชาหริวาร์","เมฮร์","อะบาน","อะซาร์","เดย์","บาฮ์มาน","เอสฟานด์"],"field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","timeFormat-long":"H นาฬิกา mm นาที ss วินาที z","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","dateFormat-short":"d/M/y G","field-thu-short-relative+-1":"พฤหัสที่แล้ว","field-year-narrow-relative+-1":"ปีที่แล้ว","days-standAlone-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"dateFormatItem-yyyyMMMEd":"E d MMM G y","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-MMMMd":"d MMMM","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","field-tue-narrow-relative+-1":"อังคารที่แล้ว","field-weekOfMonth-short":"สัปดาห์ของเดือน","dayPeriods-standAlone-narrow-pm":"หลังเที่ยง","field-wed-short-relative+0":"พุธนี้","months-standAlone-wide":["ฟาร์วาร์ดิน","ออร์ดิเบเฮชต์","คอร์แดด","เตอร์","มอร์แดด","ชาหริวาร์","เมฮร์","อะบาน","อะซาร์","เดย์","บาฮ์มาน","เอสฟานด์"],"field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","days-standAlone-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-day-short-relative+1":"พรุ่งนี้","field-sat-relative+0":"เสาร์นี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","months-standAlone-abbr":["ฟาร์วาร์ดิน","ออร์ดิเบเฮชต์","คอร์แดด","เตอร์","มอร์แดด","ชาหริวาร์","เมฮร์","อะบาน","อะซาร์","เดย์","บาฮ์มาน","เอสฟานด์"],"field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","timeFormat-full":"H นาฬิกา mm นาที ss วินาที zzzz","dateFormatItem-MEd":"E d/M","field-zone-narrow":"เขตเวลา","field-thu-narrow-relative+0":"พฤหัสนี้","field-thu-narrow-relative+1":"พฤหัสหน้า","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","quarters-format-wide":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","field-dayperiod-short":"ช่วงวัน","dateFormatItem-yyyyMMM":"MMM G y","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","days-standAlone-short":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-week-short-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyQQQQ":"QQQQ G y","field-hour-short":"ชม.","field-zone-short":"โซน","quarters-format-abbr":["ไตรมาส 1","ไตรมาส 2","ไตรมาส 3","ไตรมาส 4"],"field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","eraNarrow":["ปีเปอร์เซีย"],"field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","days-format-wide":["วันอาทิตย์","วันจันทร์","วันอังคาร","วันพุธ","วันพฤหัสบดี","วันศุกร์","วันเสาร์"],"field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","dayPeriods-standAlone-abbr-am":"ก่อนเที่ยง","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","days-format-abbr":["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],"field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า","dayPeriods-standAlone-wide-am":"ก่อนเที่ยง"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/th/roc.js b/lib/dojo/cldr/nls/th/roc.js
index 71f4708d6..c8ef893b9 100644
--- a/lib/dojo/cldr/nls/th/roc.js
+++ b/lib/dojo/cldr/nls/th/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/th/roc",{"field-second-relative+0":"ขณะนี้","field-weekday":"วันในสัปดาห์","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-MMMEd":"E d MMM","field-tue-relative+-1":"อังคารที่แล้ว","dateFormat-long":"d MMMM ปีG y","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-wed-relative+-1":"พุธที่แล้ว","dateFormatItem-yyyyQQQ":"QQQ G y","dateFormat-full":"EEEEที่ d MMMM ปีGที่ y","dateFormatItem-yyyyMEd":"E d/M/GGGGG y","field-thu-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-Md":"d/M","field-era":"สมัย","field-year":"ปี","field-hour":"ชั่วโมง","field-sat-relative+0":"เสาร์นี้","field-sat-relative+1":"เสาร์หน้า","field-day-relative+0":"วันนี้","field-thu-relative+0":"พฤหัสนี้","field-day-relative+1":"พรุ่งนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-GyMMMd":"d MMM G y","field-day-relative+2":"มะรืนนี้","dateFormatItem-H":"HH","dateFormatItem-Gy":"ปีGที่ y","dateFormatItem-yyyyMMMEd":"E d MMM G y","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"MMM G y","dateFormatItem-yyyyMMMd":"d MMM G y","field-sun-relative+0":"อาทิตย์นี้","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"อาทิตย์หน้า","eraAbbr":["ปีก่อนไต้หวัน","ไต้หวัน"],"field-minute":"นาที","field-dayperiod":"ช่วงวัน","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"เมื่อวาน","dateFormatItem-h":"h a","field-day-relative+-2":"เมื่อวานซืน","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"E, d/M","field-fri-relative+0":"ศุกร์นี้","field-fri-relative+1":"ศุกร์หน้า","field-day":"วัน","field-zone":"เขตเวลา","dateFormatItem-y":"ปีGที่ y","field-year-relative+-1":"ปีที่แล้ว","field-month-relative+-1":"เดือนที่แล้ว","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"d/M/GGGGG y","field-month":"เดือน","dateFormatItem-MMM":"LLL","field-tue-relative+0":"อังคารนี้","field-tue-relative+1":"อังคารหน้า","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","dateFormat-short":"d/M/y G","field-second":"วินาที","field-sat-relative+-1":"เสาร์ที่แล้ว","field-sun-relative+-1":"อาทิตย์ที่แล้ว","field-month-relative+0":"เดือนนี้","field-month-relative+1":"เดือนหน้า","dateFormatItem-Ed":"E d","field-week":"สัปดาห์","dateFormat-medium":"d MMM G y","field-year-relative+0":"ปีนี้","field-week-relative+-1":"สัปดาห์ที่แล้ว","dateFormatItem-yyyyM":"M/GGGGG y","field-year-relative+1":"ปีหน้า","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"MMM G y","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-yyyy":"ปีGที่ y","field-week-relative+0":"สัปดาห์นี้","field-week-relative+1":"สัปดาห์หน้า"}); \ No newline at end of file
+define("dojo/cldr/nls/th/roc",{"field-quarter-short-relative+0":"ไตรมาสนี้","field-quarter-short-relative+1":"ไตรมาสหน้า","field-tue-relative+-1":"อังคารที่แล้ว","field-year":"ปี","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"พุธนี้","field-wed-relative+1":"พุธหน้า","dateFormatItem-ms":"mm:ss","field-minute":"นาที","field-month-narrow-relative+-1":"เดือนที่แล้ว","field-tue-narrow-relative+0":"อังคารนี้","field-tue-narrow-relative+1":"อังคารหน้า","field-day-short-relative+-1":"เมื่อวาน","field-thu-short-relative+0":"พฤหัสนี้","field-day-relative+0":"วันนี้","field-day-short-relative+-2":"เมื่อวานซืน","field-thu-short-relative+1":"พฤหัสหน้า","field-day-relative+1":"พรุ่งนี้","field-week-narrow-relative+0":"สัปดาห์นี้","field-day-relative+2":"มะรืนนี้","field-week-narrow-relative+1":"สัปดาห์หน้า","field-wed-narrow-relative+-1":"พุธที่แล้ว","field-year-narrow":"ปี","field-era-short":"สมัย","field-year-narrow-relative+0":"ปีนี้","field-tue-relative+0":"อังคารนี้","field-year-narrow-relative+1":"ปีหน้า","field-tue-relative+1":"อังคารหน้า","field-weekdayOfMonth":"วันของเดือน","field-second-short":"วิ","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"วันของเดือน","field-week-relative+0":"สัปดาห์นี้","field-month-relative+0":"เดือนนี้","field-week-relative+1":"สัปดาห์หน้า","field-month-relative+1":"เดือนหน้า","field-sun-narrow-relative+0":"วันอาทิตย์นี้","field-mon-short-relative+0":"จันทร์นี้","field-sun-narrow-relative+1":"วันอาทิตย์หน้า","field-mon-short-relative+1":"จันทร์หน้า","field-second-relative+0":"ขณะนี้","dateFormatItem-yyyyQQQ":"QQQ G y","field-weekOfMonth":"สัปดาห์ของเดือน","field-month-short":"เดือน","dateFormatItem-GyMMMEd":"E d MMM G y","dateFormatItem-yyyyMd":"d/M/GGGGG y","field-day":"วัน","field-dayOfYear-short":"วันของปี","field-year-relative+-1":"ปีที่แล้ว","field-sat-short-relative+-1":"เสาร์ที่แล้ว","field-hour-relative+0":"ชั่วโมงนี้","dateFormatItem-yyyyMEd":"E d/M/GGGGG y","field-wed-relative+-1":"พุธที่แล้ว","field-sat-narrow-relative+-1":"เสาร์ที่แล้ว","field-second":"วินาที","dateFormat-long":"d MMMM ปีG y","dateFormatItem-GyMMMd":"d MMM G y","field-quarter":"ไตรมาส","field-week-short":"สัปดาห์","field-day-narrow-relative+0":"วันนี้","field-day-narrow-relative+1":"พรุ่งนี้","field-day-narrow-relative+2":"มะรืนนี้","field-tue-short-relative+0":"อังคารนี้","field-tue-short-relative+1":"อังคารหน้า","field-month-short-relative+-1":"เดือนที่แล้ว","field-mon-relative+-1":"จันทร์ที่แล้ว","dateFormatItem-GyMMM":"MMM G y","field-month":"เดือน","field-day-narrow":"วัน","dateFormatItem-MMM":"LLL","field-dayperiod":"ช่วงวัน","field-sat-short-relative+0":"เสาร์นี้","field-sat-short-relative+1":"เสาร์หน้า","dateFormat-medium":"d MMM G y","eraAbbr":["ปีก่อนไต้หวัน","ไต้หวัน"],"dateFormatItem-yyyyM":"M/GGGGG y","field-second-narrow":"วิ","field-mon-relative+0":"จันทร์นี้","field-mon-relative+1":"จันทร์หน้า","field-day-narrow-relative+-1":"เมื่อวาน","field-year-short":"ปี","field-day-narrow-relative+-2":"เมื่อวานซืน","field-quarter-relative+-1":"ไตรมาสที่แล้ว","dateFormatItem-yyyyMMMd":"d MMM G y","field-dayperiod-narrow":"ช่วงวัน","field-week-narrow-relative+-1":"สัปดาห์ที่แล้ว","field-dayOfYear":"วันของปี","field-sat-relative+-1":"เสาร์ที่แล้ว","dateFormatItem-Md":"d/M","field-hour":"ชั่วโมง","dateFormat-full":"EEEEที่ d MMMM ปีGที่ y","field-month-relative+-1":"เดือนที่แล้ว","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"ไตรมาส","field-sat-narrow-relative+0":"เสาร์นี้","field-fri-relative+0":"ศุกร์นี้","field-sat-narrow-relative+1":"เสาร์หน้า","field-fri-relative+1":"ศุกร์หน้า","field-month-narrow-relative+0":"เดือนนี้","field-month-narrow-relative+1":"เดือนหน้า","field-sun-short-relative+0":"วันอาทิตย์นี้","field-sun-short-relative+1":"วันอาทิตย์หน้า","field-week-relative+-1":"สัปดาห์ที่แล้ว","field-quarter-short-relative+-1":"ไตรมาสที่แล้ว","field-quarter-relative+0":"ไตรมาสนี้","field-minute-relative+0":"นาทีนี้","field-quarter-relative+1":"ไตรมาสหน้า","field-wed-short-relative+-1":"พุธที่แล้ว","dateFormat-short":"d/M/y G","field-year-narrow-relative+-1":"ปีที่แล้ว","field-thu-short-relative+-1":"พฤหัสที่แล้ว","dateFormatItem-yyyyMMMEd":"E d MMM G y","field-mon-narrow-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+-1":"พฤหัสที่แล้ว","field-tue-narrow-relative+-1":"อังคารที่แล้ว","dateFormatItem-H":"HH","field-weekOfMonth-short":"สัปดาห์ของเดือน","dateFormatItem-yyyy":"ปีGที่ y","dateFormatItem-M":"L","field-wed-short-relative+0":"พุธนี้","field-wed-short-relative+1":"พุธหน้า","field-sun-relative+-1":"วันอาทิตย์ที่แล้ว","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"วันของสัปดาห์","field-day-short-relative+0":"วันนี้","field-quarter-narrow-relative+0":"ไตรมาสนี้","field-day-short-relative+1":"พรุ่งนี้","field-sat-relative+0":"เสาร์นี้","field-quarter-narrow-relative+1":"ไตรมาสหน้า","dateFormatItem-h":"h a","field-day-short-relative+2":"มะรืนนี้","field-sat-relative+1":"เสาร์หน้า","field-week-short-relative+0":"สัปดาห์นี้","field-week-short-relative+1":"สัปดาห์หน้า","field-dayOfYear-narrow":"วันของปี","field-month-short-relative+0":"เดือนนี้","field-month-short-relative+1":"เดือนหน้า","field-weekdayOfMonth-short":"วันของเดือน","dateFormatItem-MEd":"E, d/M","field-zone-narrow":"เขตเวลา","dateFormatItem-y":"ปีGที่ y","field-thu-narrow-relative+0":"พฤหัสนี้","field-sun-narrow-relative+-1":"วันอาทิตย์ที่แล้ว","field-mon-short-relative+-1":"จันทร์ที่แล้ว","field-thu-narrow-relative+1":"พฤหัสหน้า","field-thu-relative+0":"พฤหัสนี้","field-thu-relative+1":"พฤหัสหน้า","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"ศุกร์ที่แล้ว","field-thu-relative+-1":"พฤหัสที่แล้ว","field-week":"สัปดาห์","dateFormatItem-Ed":"E d","field-wed-narrow-relative+0":"พุธนี้","field-wed-narrow-relative+1":"พุธหน้า","field-quarter-narrow-relative+-1":"ไตรมาสที่แล้ว","field-year-short-relative+0":"ปีนี้","dateFormatItem-yyyyMMM":"MMM G y","field-dayperiod-short":"ช่วงวัน","field-year-short-relative+1":"ปีหน้า","field-fri-short-relative+0":"ศุกร์นี้","field-fri-short-relative+1":"ศุกร์หน้า","field-week-short-relative+-1":"สัปดาห์ที่แล้ว","field-hour-short":"ชม.","field-zone-short":"โซน","field-month-narrow":"เดือน","field-hour-narrow":"ชม.","field-fri-narrow-relative+-1":"ศุกร์ที่แล้ว","field-year-relative+0":"ปีนี้","field-year-relative+1":"ปีหน้า","field-era-narrow":"สมัย","field-fri-relative+-1":"ศุกร์ที่แล้ว","field-tue-short-relative+-1":"อังคารที่แล้ว","field-minute-narrow":"นาที","field-mon-narrow-relative+0":"จันทร์นี้","field-mon-narrow-relative+1":"จันทร์หน้า","field-year-short-relative+-1":"ปีที่แล้ว","field-zone":"เขตเวลา","dateFormatItem-MMMEd":"E d MMM","field-weekOfMonth-narrow":"สัปดาห์ของเดือน","field-weekday-narrow":"วันของสัปดาห์","field-quarter-narrow":"ไตรมาส","field-sun-short-relative+-1":"วันอาทิตย์ที่แล้ว","field-day-relative+-1":"เมื่อวาน","field-day-relative+-2":"เมื่อวานซืน","field-weekday-short":"วันของสัปดาห์","field-sun-relative+0":"วันอาทิตย์นี้","field-sun-relative+1":"วันอาทิตย์หน้า","dateFormatItem-Gy":"ปีGที่ y","field-day-short":"วัน","field-week-narrow":"สัปดาห์","field-era":"สมัย","field-fri-narrow-relative+0":"ศุกร์นี้","field-fri-narrow-relative+1":"ศุกร์หน้า"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/buddhist.js b/lib/dojo/cldr/nls/tr/buddhist.js
index 103d5780f..441d2879c 100644
--- a/lib/dojo/cldr/nls/tr/buddhist.js
+++ b/lib/dojo/cldr/nls/tr/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/buddhist",{"days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"months-format-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-second-relative+0":"şimdi","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"Haftanın Günü","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-MMMEd":"d MMM E","field-tue-relative+-1":"geçen salı","days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"dateFormat-long":"G d MMMM y","field-fri-relative+-1":"geçen cuma","field-wed-relative+-1":"geçen çarşamba","months-format-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"dateFormatItem-yyyyQQQ":"G y/QQQ","dayPeriods-format-wide-pm":"ÖS","dateFormat-full":"G d MMMM y EEEE","dateFormatItem-yyyyMEd":"GGGGG dd.MM.y E","field-thu-relative+-1":"geçen perşembe","dateFormatItem-Md":"dd/MM","field-era":"Miladi Dönem","months-standAlone-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"field-year":"Yıl","field-hour":"Saat","months-format-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","field-day-relative+0":"bugün","field-thu-relative+0":"bu perşembe","field-day-relative+1":"yarın","field-thu-relative+1":"gelecek perşembe","dateFormatItem-GyMMMd":"G d MMM y","field-day-relative+2":"öbür gün","months-standAlone-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-yyyyMMMEd":"G d MMM y E","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-yyyyMMM":"G MMM y","dateFormatItem-yyyyMMMd":"G dd MMM y","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"eraAbbr":["BE"],"field-minute":"Dakika","field-dayperiod":"ÖÖ/ÖS","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"dd/MM E","field-fri-relative+0":"bu cuma","field-fri-relative+1":"gelecek cuma","field-day":"Gün","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-zone":"Saat Dilimi","months-standAlone-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-year-relative+-1":"geçen yıl","field-month-relative+-1":"geçen ay","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-yyyyMd":"GGGGG dd.MM.y","field-month":"Ay","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"field-tue-relative+0":"bu salı","field-tue-relative+1":"gelecek salı","dayPeriods-format-wide-am":"ÖÖ","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","dateFormat-short":"GGGGG d.MM.y","field-second":"Saniye","field-sat-relative+-1":"geçen cumartesi","field-sun-relative+-1":"geçen pazar","field-month-relative+0":"bu ay","field-month-relative+1":"gelecek ay","dateFormatItem-Ed":"d E","field-week":"Hafta","dateFormat-medium":"G d MMM y","field-year-relative+0":"bu yıl","field-week-relative+-1":"geçen hafta","dateFormatItem-yyyyM":"GGGGG M/y","field-year-relative+1":"gelecek yıl","dateFormatItem-yyyyQQQQ":"G y/QQQQ","dateFormatItem-GyMMM":"G MMM y","field-mon-relative+-1":"geçen pazartesi","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/buddhist",{"field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","field-tue-relative+-1":"geçen salı","field-year":"yıl","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-minute":"dakika","field-month-narrow-relative+-1":"geçen ay","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","field-thu-short-relative+0":"bu per.","field-day-short-relative+-1":"dün","field-thu-short-relative+1":"gelecek per.","field-day-relative+0":"bugün","field-day-short-relative+-2":"evvelsi gün","field-day-relative+1":"yarın","field-week-narrow-relative+0":"bu hf.","field-day-relative+2":"öbür gün","field-week-narrow-relative+1":"gelecek hf.","field-wed-narrow-relative+-1":"geçen çar.","dateFormatItem-EBhms":"E B h:mm:ss","field-year-narrow":"yıl","field-era-short":"çağ","field-year-narrow-relative+0":"bu yıl","field-tue-relative+0":"bu salı","field-year-narrow-relative+1":"gelecek yıl","field-tue-relative+1":"gelecek salı","field-weekdayOfMonth":"ayın günü","field-second-short":"sn.","dayPeriods-format-narrow-am":"öö","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"ayın günü","dayPeriods-format-abbr-am":"ÖÖ","field-week-relative+0":"bu hafta","field-month-relative+0":"bu ay","field-week-relative+1":"gelecek hafta","field-month-relative+1":"gelecek ay","field-sun-narrow-relative+0":"bu paz.","field-mon-short-relative+0":"bu pzt.","field-sun-narrow-relative+1":"gelecek paz.","field-mon-short-relative+1":"gelecek pzt.","field-second-relative+0":"şimdi","dateFormatItem-yyyyQQQ":"G y/QQQ","months-standAlone-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"eraNames":["BE"],"field-weekOfMonth":"ayın haftası","dayPeriods-standAlone-abbr-pm":"ÖS","field-month-short":"ay","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-yyyyMd":"GGGGG dd.MM.y","field-day":"gün","field-dayOfYear-short":"yılın günü","field-year-relative+-1":"geçen yıl","dayPeriods-format-wide-am":"ÖÖ","field-sat-short-relative+-1":"geçen cmt.","field-hour-relative+0":"bu saat","dateFormatItem-yyyyMEd":"GGGGG dd.MM.y E","field-wed-relative+-1":"geçen çarşamba","field-sat-narrow-relative+-1":"geçen cmt.","field-second":"saniye","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dayPeriods-standAlone-wide-pm":"ÖS","dateFormat-long":"G d MMMM y","dateFormatItem-GyMMMd":"G d MMM y","field-quarter":"çeyrek","field-week-short":"hf.","field-day-narrow-relative+0":"bugün","field-day-narrow-relative+1":"yarın","field-day-narrow-relative+2":"öbür gün","quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"field-tue-short-relative+0":"bu salı","field-tue-short-relative+1":"gelecek salı","field-month-short-relative+-1":"geçen ay","field-mon-relative+-1":"geçen pazartesi","dateFormatItem-GyMMM":"G MMM y","field-month":"ay","field-day-narrow":"gün","field-minute-short":"dk.","field-dayperiod":"ÖÖ/ÖS","field-sat-short-relative+0":"bu cmt.","field-sat-short-relative+1":"gelecek cmt.","dayPeriods-format-narrow-pm":"ös","dateFormat-medium":"G d MMM y","dateFormatItem-yyyyMMMM":"G MMMM y","eraAbbr":["BE"],"quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"dayPeriods-format-abbr-pm":"ÖS","dateFormatItem-yyyyM":"GGGGG M/y","field-second-narrow":"sn.","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+-1":"dün","field-year-short":"yıl","field-day-narrow-relative+-2":"evvelsi gün","months-format-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-quarter-relative+-1":"geçen çeyrek","dateFormatItem-yyyyMMMd":"G dd MMM y","field-dayperiod-narrow":"ÖÖ/ÖS","dayPeriods-standAlone-narrow-am":"ÖÖ","field-week-narrow-relative+-1":"geçen hf.","days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"ÖS","field-dayOfYear":"yılın günü","field-sat-relative+-1":"geçen cumartesi","dateFormatItem-Md":"dd/MM","field-hour":"saat","months-format-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"dateFormat-full":"G d MMMM y EEEE","field-month-relative+-1":"geçen ay","field-quarter-short":"çyr.","field-sat-narrow-relative+0":"bu cmt.","field-fri-relative+0":"bu cuma","field-sat-narrow-relative+1":"gelecek cmt.","field-fri-relative+1":"gelecek cuma","dateFormatItem-EBhm":"E B h:mm","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-sun-short-relative+0":"bu paz.","field-sun-short-relative+1":"gelecek paz.","field-week-relative+-1":"geçen hafta","field-quarter-short-relative+-1":"geçen çyr.","months-format-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"field-quarter-relative+0":"bu çeyrek","field-minute-relative+0":"bu dakika","field-quarter-relative+1":"gelecek çeyrek","field-wed-short-relative+-1":"geçen çar.","dateFormat-short":"GGGGG d.MM.y","dateFormatItem-Bh":"B h","field-thu-short-relative+-1":"geçen per.","field-year-narrow-relative+-1":"geçen yıl","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-yyyyMMMEd":"G d MMM y E","field-mon-narrow-relative+-1":"geçen pzt.","dateFormatItem-MMMMd":"dd MMMM","field-thu-narrow-relative+-1":"geçen per.","field-tue-narrow-relative+-1":"geçen salı","field-weekOfMonth-short":"ayın haftası","dayPeriods-standAlone-narrow-pm":"ÖS","field-wed-short-relative+0":"bu çar.","months-standAlone-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"field-wed-short-relative+1":"gelecek çar.","field-sun-relative+-1":"geçen pazar","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"field-weekday":"haftanın günü","field-day-short-relative+0":"bugün","field-quarter-narrow-relative+0":"bu çyr.","field-sat-relative+0":"bu cumartesi","field-day-short-relative+1":"yarın","field-quarter-narrow-relative+1":"gelecek çyr.","field-sat-relative+1":"gelecek cumartesi","field-day-short-relative+2":"öbür gün","field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","months-standAlone-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"field-dayOfYear-narrow":"yılın günü","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","field-weekdayOfMonth-short":"ayın günü","dateFormatItem-MEd":"dd/MM E","field-zone-narrow":"dilim","field-thu-narrow-relative+0":"bu per.","field-thu-narrow-relative+1":"gelecek per.","field-sun-narrow-relative+-1":"geçen paz.","field-mon-short-relative+-1":"geçen pzt.","field-thu-relative+0":"bu perşembe","field-thu-relative+1":"gelecek perşembe","field-fri-short-relative+-1":"geçen cuma","field-thu-relative+-1":"geçen perşembe","field-week":"hafta","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-quarter-narrow-relative+-1":"geçen çyr.","field-year-short-relative+0":"bu yıl","field-dayperiod-short":"ÖÖ/ÖS","dateFormatItem-yyyyMMM":"G MMM y","field-year-short-relative+1":"gelecek yıl","field-fri-short-relative+0":"bu cuma","field-fri-short-relative+1":"gelecek cuma","days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"field-week-short-relative+-1":"geçen hf.","dateFormatItem-yyyyQQQQ":"G y/QQQQ","field-hour-short":"sa.","field-zone-short":"dilim","quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"field-month-narrow":"ay","field-hour-narrow":"sa.","field-fri-narrow-relative+-1":"geçen cuma","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-era-narrow":"çağ","field-fri-relative+-1":"geçen cuma","eraNarrow":"BE","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"geçen salı","field-minute-narrow":"dk.","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-mon-narrow-relative+0":"bu pzt.","field-mon-narrow-relative+1":"gelecek pzt.","field-year-short-relative+-1":"geçen yıl","field-zone":"saat dilimi","dateFormatItem-MMMEd":"d MMM E","field-weekOfMonth-narrow":"ayın haftası","field-weekday-narrow":"haftanın günü","field-quarter-narrow":"çyr.","field-sun-short-relative+-1":"geçen paz.","field-day-relative+-1":"dün","dayPeriods-standAlone-abbr-am":"ÖÖ","field-day-relative+-2":"evvelsi gün","field-weekday-short":"haftanın günü","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-day-short":"gün","field-week-narrow":"hf.","field-era":"çağ","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma","dayPeriods-standAlone-wide-am":"ÖÖ"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/coptic.js b/lib/dojo/cldr/nls/tr/coptic.js
index 4e6665152..cc6c6659f 100644
--- a/lib/dojo/cldr/nls/tr/coptic.js
+++ b/lib/dojo/cldr/nls/tr/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/coptic",{"field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","field-dayperiod":"ÖÖ/ÖS","field-sun-relative+-1":"geçen pazar","field-mon-relative+-1":"geçen pazartesi","field-minute":"Dakika","field-day-relative+-1":"dün","field-weekday":"Haftanın Günü","field-day-relative+-2":"evvelsi gün","field-era":"Miladi Dönem","field-hour":"Saat","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-wed-relative+-1":"geçen çarşamba","field-day-relative+0":"bugün","field-day-relative+1":"yarın","field-day-relative+2":"öbür gün","field-tue-relative+0":"bu salı","field-zone":"Saat Dilimi","field-tue-relative+1":"gelecek salı","field-week-relative+-1":"geçen hafta","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-sat-relative+-1":"geçen cumartesi","field-year-relative+-1":"geçen yıl","field-year":"Yıl","field-fri-relative+0":"bu cuma","field-fri-relative+1":"gelecek cuma","field-week":"Hafta","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta","field-month-relative+0":"bu ay","field-month":"Ay","field-month-relative+1":"gelecek ay","field-fri-relative+-1":"geçen cuma","field-second":"Saniye","field-tue-relative+-1":"geçen salı","field-day":"Gün","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-thu-relative+0":"bu perşembe","field-second-relative+0":"şimdi","field-thu-relative+1":"gelecek perşembe","field-wed-relative+0":"bu çarşamba","months-format-wide":["Tût","Bâbe","Hatur","Keyhek","Tûbe","Imşir","Bermuhat","Bermude","Peyştes","Bune","Ebip","Mısrî","Nesî"],"field-wed-relative+1":"gelecek çarşamba","field-month-relative+-1":"geçen ay","field-thu-relative+-1":"geçen perşembe"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/coptic",{"field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","field-tue-relative+-1":"geçen salı","field-year":"yıl","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-minute":"dakika","field-month-narrow-relative+-1":"geçen ay","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","field-thu-short-relative+0":"bu per.","field-day-short-relative+-1":"dün","field-thu-short-relative+1":"gelecek per.","field-day-relative+0":"bugün","field-day-short-relative+-2":"evvelsi gün","field-day-relative+1":"yarın","field-week-narrow-relative+0":"bu hf.","field-day-relative+2":"öbür gün","field-week-narrow-relative+1":"gelecek hf.","field-wed-narrow-relative+-1":"geçen çar.","field-year-narrow":"yıl","field-era-short":"çağ","field-year-narrow-relative+0":"bu yıl","field-tue-relative+0":"bu salı","field-year-narrow-relative+1":"gelecek yıl","field-tue-relative+1":"gelecek salı","field-weekdayOfMonth":"ayın günü","field-second-short":"sn.","field-weekdayOfMonth-narrow":"ayın günü","field-week-relative+0":"bu hafta","field-month-relative+0":"bu ay","field-week-relative+1":"gelecek hafta","field-month-relative+1":"gelecek ay","field-sun-narrow-relative+0":"bu paz.","field-mon-short-relative+0":"bu pzt.","field-sun-narrow-relative+1":"gelecek paz.","field-mon-short-relative+1":"gelecek pzt.","field-second-relative+0":"şimdi","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"field-weekOfMonth":"ayın haftası","field-month-short":"ay","field-day":"gün","field-dayOfYear-short":"yılın günü","field-year-relative+-1":"geçen yıl","field-sat-short-relative+-1":"geçen cmt.","field-hour-relative+0":"bu saat","field-wed-relative+-1":"geçen çarşamba","field-sat-narrow-relative+-1":"geçen cmt.","field-second":"saniye","field-quarter":"çeyrek","field-week-short":"hf.","field-day-narrow-relative+0":"bugün","field-day-narrow-relative+1":"yarın","field-day-narrow-relative+2":"öbür gün","field-tue-short-relative+0":"bu salı","field-tue-short-relative+1":"gelecek salı","field-month-short-relative+-1":"geçen ay","field-mon-relative+-1":"geçen pazartesi","field-month":"ay","field-day-narrow":"gün","field-minute-short":"dk.","field-dayperiod":"ÖÖ/ÖS","field-sat-short-relative+0":"bu cmt.","field-sat-short-relative+1":"gelecek cmt.","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"sn.","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+-1":"dün","field-year-short":"yıl","field-day-narrow-relative+-2":"evvelsi gün","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"geçen çeyrek","field-dayperiod-narrow":"ÖÖ/ÖS","field-week-narrow-relative+-1":"geçen hf.","field-dayOfYear":"yılın günü","field-sat-relative+-1":"geçen cumartesi","field-hour":"saat","months-format-wide":["Tût","Bâbe","Hatur","Keyhek","Tûbe","Imşir","Bermuhat","Bermude","Peyştes","Bune","Ebip","Mısrî","Nesî"],"field-month-relative+-1":"geçen ay","field-quarter-short":"çyr.","field-sat-narrow-relative+0":"bu cmt.","field-fri-relative+0":"bu cuma","field-sat-narrow-relative+1":"gelecek cmt.","field-fri-relative+1":"gelecek cuma","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-sun-short-relative+0":"bu paz.","field-sun-short-relative+1":"gelecek paz.","field-week-relative+-1":"geçen hafta","field-quarter-short-relative+-1":"geçen çyr.","months-format-abbr":["Tût","Bâbe","Hatur","Keyhek","Tûbe","Imşir","Bermuhat","Bermude","Peyştes","Bune","Ebip","Mısrî","Nesî"],"field-quarter-relative+0":"bu çeyrek","field-minute-relative+0":"bu dakika","field-quarter-relative+1":"gelecek çeyrek","field-wed-short-relative+-1":"geçen çar.","field-thu-short-relative+-1":"geçen per.","field-year-narrow-relative+-1":"geçen yıl","field-mon-narrow-relative+-1":"geçen pzt.","field-thu-narrow-relative+-1":"geçen per.","field-tue-narrow-relative+-1":"geçen salı","field-weekOfMonth-short":"ayın haftası","field-wed-short-relative+0":"bu çar.","months-standAlone-wide":["Tût","Bâbe","Hatur","Keyhek","Tûbe","Imşir","Bermuhat","Bermude","Peyştes","Bune","Ebip","Mısrî","Nesî"],"field-wed-short-relative+1":"gelecek çar.","field-sun-relative+-1":"geçen pazar","field-weekday":"haftanın günü","field-day-short-relative+0":"bugün","field-quarter-narrow-relative+0":"bu çyr.","field-day-short-relative+1":"yarın","field-sat-relative+0":"bu cumartesi","field-quarter-narrow-relative+1":"gelecek çyr.","field-day-short-relative+2":"öbür gün","field-sat-relative+1":"gelecek cumartesi","field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","months-standAlone-abbr":["Tût","Bâbe","Hatur","Keyhek","Tûbe","Imşir","Bermuhat","Bermude","Peyştes","Bune","Ebip","Mısrî","Nesî"],"field-dayOfYear-narrow":"yılın günü","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","field-weekdayOfMonth-short":"ayın günü","field-zone-narrow":"dilim","field-thu-narrow-relative+0":"bu per.","field-thu-narrow-relative+1":"gelecek per.","field-sun-narrow-relative+-1":"geçen paz.","field-mon-short-relative+-1":"geçen pzt.","field-thu-relative+0":"bu perşembe","field-thu-relative+1":"gelecek perşembe","field-fri-short-relative+-1":"geçen cuma","field-thu-relative+-1":"geçen perşembe","field-week":"hafta","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-quarter-narrow-relative+-1":"geçen çyr.","field-year-short-relative+0":"bu yıl","field-dayperiod-short":"ÖÖ/ÖS","field-year-short-relative+1":"gelecek yıl","field-fri-short-relative+0":"bu cuma","field-fri-short-relative+1":"gelecek cuma","field-week-short-relative+-1":"geçen hf.","field-hour-short":"sa.","field-zone-short":"dilim","field-month-narrow":"ay","field-hour-narrow":"sa.","field-fri-narrow-relative+-1":"geçen cuma","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-era-narrow":"çağ","field-fri-relative+-1":"geçen cuma","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"geçen salı","field-minute-narrow":"dk.","field-mon-narrow-relative+0":"bu pzt.","field-mon-narrow-relative+1":"gelecek pzt.","field-year-short-relative+-1":"geçen yıl","field-zone":"saat dilimi","field-weekOfMonth-narrow":"ayın haftası","field-weekday-narrow":"haftanın günü","field-quarter-narrow":"çyr.","field-sun-short-relative+-1":"geçen paz.","field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","field-weekday-short":"haftanın günü","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-day-short":"gün","field-week-narrow":"hf.","field-era":"çağ","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/currency.js b/lib/dojo/cldr/nls/tr/currency.js
index a9f0a05f1..b908b5d8b 100644
--- a/lib/dojo/cldr/nls/tr/currency.js
+++ b/lib/dojo/cldr/nls/tr/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/currency",{"HKD_displayName":"Hong Kong Doları","CHF_displayName":"İsviçre Frangı","JPY_symbol":"¥","CAD_displayName":"Kanada Doları","HKD_symbol":"HK$","CNY_displayName":"Çin Yuanı","USD_symbol":"$","AUD_displayName":"Avustralya Doları","JPY_displayName":"Japon Yeni","CAD_symbol":"CA$","USD_displayName":"ABD Doları","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"İngiliz Sterlini","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"Euro"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/currency",{"HKD_displayName":"Hong Kong Doları","CNY_displayName":"Çin Yuanı","JPY_displayName":"Japon Yeni","JPY_symbol":"¥","USD_displayName":"ABD Doları","CAD_symbol":"CA$","GBP_displayName":"İngiliz Sterlini","CHF_displayName":"İsviçre Frangı","CNY_symbol":"CN¥","EUR_displayName":"Euro","GBP_symbol":"£","CAD_displayName":"Kanada Doları","USD_symbol":"$","EUR_symbol":"€","AUD_displayName":"Avustralya Doları","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/ethiopic.js b/lib/dojo/cldr/nls/tr/ethiopic.js
index bfbd1989e..1a9cb198d 100644
--- a/lib/dojo/cldr/nls/tr/ethiopic.js
+++ b/lib/dojo/cldr/nls/tr/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/ethiopic",{"field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","field-dayperiod":"ÖÖ/ÖS","field-sun-relative+-1":"geçen pazar","field-mon-relative+-1":"geçen pazartesi","field-minute":"Dakika","field-day-relative+-1":"dün","field-weekday":"Haftanın Günü","field-day-relative+-2":"evvelsi gün","field-era":"Miladi Dönem","field-hour":"Saat","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-wed-relative+-1":"geçen çarşamba","field-day-relative+0":"bugün","field-day-relative+1":"yarın","field-day-relative+2":"öbür gün","field-tue-relative+0":"bu salı","field-zone":"Saat Dilimi","field-tue-relative+1":"gelecek salı","field-week-relative+-1":"geçen hafta","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-sat-relative+-1":"geçen cumartesi","field-year-relative+-1":"geçen yıl","field-year":"Yıl","field-fri-relative+0":"bu cuma","field-fri-relative+1":"gelecek cuma","field-week":"Hafta","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta","field-month-relative+0":"bu ay","field-month":"Ay","field-month-relative+1":"gelecek ay","field-fri-relative+-1":"geçen cuma","field-second":"Saniye","field-tue-relative+-1":"geçen salı","field-day":"Gün","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-thu-relative+0":"bu perşembe","field-second-relative+0":"şimdi","field-thu-relative+1":"gelecek perşembe","field-wed-relative+0":"bu çarşamba","months-format-wide":["Meskerem","Tikimt","Hidar","Tahsas","Tir","Yakatit","Magabit","Miyazya","Ginbot","Sene","Hamle","Nehasa","Pagumiene"],"field-wed-relative+1":"gelecek çarşamba","field-month-relative+-1":"geçen ay","field-thu-relative+-1":"geçen perşembe"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/ethiopic",{"field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","field-tue-relative+-1":"geçen salı","field-year":"yıl","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-minute":"dakika","field-month-narrow-relative+-1":"geçen ay","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","field-thu-short-relative+0":"bu per.","field-day-short-relative+-1":"dün","field-thu-short-relative+1":"gelecek per.","field-day-relative+0":"bugün","field-day-short-relative+-2":"evvelsi gün","field-day-relative+1":"yarın","field-week-narrow-relative+0":"bu hf.","field-day-relative+2":"öbür gün","field-week-narrow-relative+1":"gelecek hf.","field-wed-narrow-relative+-1":"geçen çar.","field-year-narrow":"yıl","field-era-short":"çağ","field-year-narrow-relative+0":"bu yıl","field-tue-relative+0":"bu salı","field-year-narrow-relative+1":"gelecek yıl","field-tue-relative+1":"gelecek salı","field-weekdayOfMonth":"ayın günü","field-second-short":"sn.","field-weekdayOfMonth-narrow":"ayın günü","field-week-relative+0":"bu hafta","field-month-relative+0":"bu ay","field-week-relative+1":"gelecek hafta","field-month-relative+1":"gelecek ay","field-sun-narrow-relative+0":"bu paz.","field-mon-short-relative+0":"bu pzt.","field-sun-narrow-relative+1":"gelecek paz.","field-mon-short-relative+1":"gelecek pzt.","field-second-relative+0":"şimdi","eraNames":["ERA0","ERA1"],"field-weekOfMonth":"ayın haftası","field-month-short":"ay","field-day":"gün","field-dayOfYear-short":"yılın günü","field-year-relative+-1":"geçen yıl","field-sat-short-relative+-1":"geçen cmt.","field-hour-relative+0":"bu saat","field-wed-relative+-1":"geçen çarşamba","field-sat-narrow-relative+-1":"geçen cmt.","field-second":"saniye","field-quarter":"çeyrek","field-week-short":"hf.","field-day-narrow-relative+0":"bugün","field-day-narrow-relative+1":"yarın","field-day-narrow-relative+2":"öbür gün","field-tue-short-relative+0":"bu salı","field-tue-short-relative+1":"gelecek salı","field-month-short-relative+-1":"geçen ay","field-mon-relative+-1":"geçen pazartesi","field-month":"ay","field-day-narrow":"gün","field-minute-short":"dk.","field-dayperiod":"ÖÖ/ÖS","field-sat-short-relative+0":"bu cmt.","field-sat-short-relative+1":"gelecek cmt.","eraAbbr":["ERA0","ERA1"],"field-second-narrow":"sn.","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+-1":"dün","field-year-short":"yıl","field-day-narrow-relative+-2":"evvelsi gün","field-quarter-relative+-1":"geçen çeyrek","field-dayperiod-narrow":"ÖÖ/ÖS","field-week-narrow-relative+-1":"geçen hf.","field-dayOfYear":"yılın günü","field-sat-relative+-1":"geçen cumartesi","field-hour":"saat","months-format-wide":["Meskerem","Tikimt","Hidar","Tahsas","Tir","Yakatit","Magabit","Miyazya","Ginbot","Sene","Hamle","Nehasa","Pagumiene"],"field-month-relative+-1":"geçen ay","field-quarter-short":"çyr.","field-sat-narrow-relative+0":"bu cmt.","field-fri-relative+0":"bu cuma","field-sat-narrow-relative+1":"gelecek cmt.","field-fri-relative+1":"gelecek cuma","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-sun-short-relative+0":"bu paz.","field-sun-short-relative+1":"gelecek paz.","field-week-relative+-1":"geçen hafta","field-quarter-short-relative+-1":"geçen çyr.","field-quarter-relative+0":"bu çeyrek","field-minute-relative+0":"bu dakika","field-quarter-relative+1":"gelecek çeyrek","field-wed-short-relative+-1":"geçen çar.","field-thu-short-relative+-1":"geçen per.","field-year-narrow-relative+-1":"geçen yıl","field-mon-narrow-relative+-1":"geçen pzt.","field-thu-narrow-relative+-1":"geçen per.","field-tue-narrow-relative+-1":"geçen salı","field-weekOfMonth-short":"ayın haftası","field-wed-short-relative+0":"bu çar.","months-standAlone-wide":["Meskerem","Tikimt","Hidar","Tahsas","Tir","Yakatit","Magabit","Miyazya","Ginbot","Sene","Hamle","Nehasa","Pagumiene"],"field-wed-short-relative+1":"gelecek çar.","field-sun-relative+-1":"geçen pazar","field-weekday":"haftanın günü","field-day-short-relative+0":"bugün","field-quarter-narrow-relative+0":"bu çyr.","field-sat-relative+0":"bu cumartesi","field-day-short-relative+1":"yarın","field-quarter-narrow-relative+1":"gelecek çyr.","field-sat-relative+1":"gelecek cumartesi","field-day-short-relative+2":"öbür gün","field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","field-dayOfYear-narrow":"yılın günü","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","field-weekdayOfMonth-short":"ayın günü","field-zone-narrow":"dilim","field-thu-narrow-relative+0":"bu per.","field-thu-narrow-relative+1":"gelecek per.","field-sun-narrow-relative+-1":"geçen paz.","field-mon-short-relative+-1":"geçen pzt.","field-thu-relative+0":"bu perşembe","field-thu-relative+1":"gelecek perşembe","field-fri-short-relative+-1":"geçen cuma","field-thu-relative+-1":"geçen perşembe","field-week":"hafta","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-quarter-narrow-relative+-1":"geçen çyr.","field-year-short-relative+0":"bu yıl","field-dayperiod-short":"ÖÖ/ÖS","field-year-short-relative+1":"gelecek yıl","field-fri-short-relative+0":"bu cuma","field-fri-short-relative+1":"gelecek cuma","field-week-short-relative+-1":"geçen hf.","field-hour-short":"sa.","field-zone-short":"dilim","field-month-narrow":"ay","field-hour-narrow":"sa.","field-fri-narrow-relative+-1":"geçen cuma","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-era-narrow":"çağ","field-fri-relative+-1":"geçen cuma","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"geçen salı","field-minute-narrow":"dk.","field-mon-narrow-relative+0":"bu pzt.","field-mon-narrow-relative+1":"gelecek pzt.","field-year-short-relative+-1":"geçen yıl","field-zone":"saat dilimi","field-weekOfMonth-narrow":"ayın haftası","field-weekday-narrow":"haftanın günü","field-quarter-narrow":"çyr.","field-sun-short-relative+-1":"geçen paz.","field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","field-weekday-short":"haftanın günü","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-day-short":"gün","field-week-narrow":"hf.","field-era":"çağ","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/generic.js b/lib/dojo/cldr/nls/tr/generic.js
index 32d2ac779..6822e2223 100644
--- a/lib/dojo/cldr/nls/tr/generic.js
+++ b/lib/dojo/cldr/nls/tr/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/generic",{"field-second-relative+0":"şimdi","field-weekday":"Haftanın Günü","field-wed-relative+0":"bu çarşamba","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-MMMEd":"d MMM E","field-wed-relative+1":"gelecek çarşamba","field-tue-relative+-1":"geçen salı","dateFormat-long":"G d MMMM y","field-fri-relative+-1":"geçen cuma","field-wed-relative+-1":"geçen çarşamba","dateFormatItem-yyyyQQQ":"G y/QQQ","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"G d MMMM y EEEE","dateFormatItem-yyyyMEd":"GGGGG dd.MM.y E","field-thu-relative+-1":"geçen perşembe","dateFormatItem-Md":"dd/MM","field-era":"Miladi Dönem","field-year":"Yıl","dateFormatItem-yyyyMMMM":"G MMMM y","field-hour":"Saat","field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","field-day-relative+0":"bugün","field-day-relative+1":"yarın","field-thu-relative+0":"bu perşembe","dateFormatItem-GyMMMd":"G d MMM y","field-day-relative+2":"öbür gün","field-thu-relative+1":"gelecek perşembe","dateFormatItem-H":"HH","dateFormatItem-Gy":"G y","dateFormatItem-yyyyMMMEd":"G d MMM y E","dateFormatItem-M":"L","dateFormatItem-yyyyMMM":"G MMM y","dateFormatItem-yyyyMMMd":"G dd MMM y","dateFormatItem-MMMMd":"dd MMMM","field-sun-relative+0":"bu pazar","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"gelecek pazar","field-minute":"Dakika","field-dayperiod":"ÖÖ/ÖS","dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"dün","dateFormatItem-h":"h a","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"evvelsi gün","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"dd/MM E","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"bu cuma","field-fri-relative+1":"gelecek cuma","field-day":"Gün","field-zone":"Saat Dilimi","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-y":"G y","field-year-relative+-1":"geçen yıl","field-month-relative+-1":"geçen ay","dateFormatItem-hm":"h:mm a","dateFormatItem-yyyyMd":"GGGGG dd.MM.y","field-month":"Ay","dateFormatItem-MMM":"LLL","field-tue-relative+0":"bu salı","field-tue-relative+1":"gelecek salı","dateFormatItem-MMMMEd":"dd MMMM E","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","dateFormat-short":"GGGGG d.MM.y","field-second":"Saniye","field-sat-relative+-1":"geçen cumartesi","field-sun-relative+-1":"geçen pazar","field-month-relative+0":"bu ay","field-month-relative+1":"gelecek ay","dateFormatItem-Ed":"d E","field-week":"Hafta","dateFormat-medium":"G d MMM y","field-year-relative+0":"bu yıl","field-week-relative+-1":"geçen hafta","dateFormatItem-yyyyM":"GGGGG M/y","field-year-relative+1":"gelecek yıl","dateFormatItem-mmss":"mm:ss","dateFormatItem-yyyyQQQQ":"G y/QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"h:mm:ss a","dateFormatItem-GyMMM":"G MMM y","field-mon-relative+-1":"geçen pazartesi","dateFormatItem-yyyy":"G y","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/generic",{"field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","field-tue-relative+-1":"geçen salı","field-year":"yıl","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","dateFormatItem-ms":"mm:ss","field-minute":"dakika","field-month-narrow-relative+-1":"geçen ay","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","field-day-short-relative+-1":"dün","field-thu-short-relative+0":"bu per.","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"bugün","field-day-short-relative+-2":"evvelsi gün","field-thu-short-relative+1":"gelecek per.","field-day-relative+1":"yarın","field-week-narrow-relative+0":"bu hf.","field-day-relative+2":"öbür gün","field-week-narrow-relative+1":"gelecek hf.","dateFormatItem-EBhms":"E B h:mm:ss","field-wed-narrow-relative+-1":"geçen çar.","field-year-narrow":"yıl","field-era-short":"çağ","field-year-narrow-relative+0":"bu yıl","field-tue-relative+0":"bu salı","field-year-narrow-relative+1":"gelecek yıl","field-tue-relative+1":"gelecek salı","field-weekdayOfMonth":"ayın günü","field-second-short":"sn.","dateFormatItem-yyyyMM":"MM.y G","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"ayın günü","field-week-relative+0":"bu hafta","field-month-relative+0":"bu ay","field-week-relative+1":"gelecek hafta","field-month-relative+1":"gelecek ay","field-sun-narrow-relative+0":"bu paz.","field-mon-short-relative+0":"bu pzt.","field-sun-narrow-relative+1":"gelecek paz.","field-mon-short-relative+1":"gelecek pzt.","field-second-relative+0":"şimdi","dateFormatItem-yyyyQQQ":"G y/QQQ","field-weekOfMonth":"ayın haftası","field-month-short":"ay","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-yyyyMd":"GGGGG dd.MM.y","field-day":"gün","field-dayOfYear-short":"yılın günü","field-year-relative+-1":"geçen yıl","field-sat-short-relative+-1":"geçen cmt.","field-hour-relative+0":"bu saat","dateFormatItem-yyyyMEd":"GGGGG dd.MM.y E","field-wed-relative+-1":"geçen çarşamba","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"geçen cmt.","field-second":"saniye","dateFormatItem-Ehms":"E h:mm:ss a","dateFormat-long":"G d MMMM y","dateFormatItem-GyMMMd":"G d MMM y","field-quarter":"çeyrek","field-week-short":"hf.","field-day-narrow-relative+0":"bugün","field-day-narrow-relative+1":"yarın","field-day-narrow-relative+2":"öbür gün","field-tue-short-relative+0":"bu salı","field-tue-short-relative+1":"gelecek salı","field-month-short-relative+-1":"geçen ay","field-mon-relative+-1":"geçen pazartesi","dateFormatItem-GyMMM":"G MMM y","field-month":"ay","field-day-narrow":"gün","dateFormatItem-MMM":"LLL","field-minute-short":"dk.","field-dayperiod":"ÖÖ/ÖS","field-sat-short-relative+0":"bu cmt.","field-sat-short-relative+1":"gelecek cmt.","dateFormat-medium":"G d MMM y","dateFormatItem-yyyyMMMM":"G MMMM y","dateFormatItem-yyyyM":"GGGGG M/y","field-second-narrow":"sn.","field-mon-relative+0":"bu pazartesi","field-day-narrow-relative+-1":"dün","field-year-short":"yıl","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+-2":"evvelsi gün","field-quarter-relative+-1":"geçen çeyrek","dateFormatItem-yyyyMMMd":"G dd MMM y","field-dayperiod-narrow":"ÖÖ/ÖS","field-week-narrow-relative+-1":"geçen hf.","field-dayOfYear":"yılın günü","field-sat-relative+-1":"geçen cumartesi","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"dd/MM","field-hour":"saat","dateFormat-full":"G d MMMM y EEEE","field-month-relative+-1":"geçen ay","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"çyr.","field-sat-narrow-relative+0":"bu cmt.","field-fri-relative+0":"bu cuma","field-sat-narrow-relative+1":"gelecek cmt.","field-fri-relative+1":"gelecek cuma","dateFormatItem-EBhm":"E B h:mm","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-sun-short-relative+0":"bu paz.","field-sun-short-relative+1":"gelecek paz.","field-week-relative+-1":"geçen hafta","field-quarter-short-relative+-1":"geçen çyr.","dateFormatItem-Ehm":"E h:mm a","field-quarter-relative+0":"bu çeyrek","field-minute-relative+0":"bu dakika","field-quarter-relative+1":"gelecek çeyrek","field-wed-short-relative+-1":"geçen çar.","dateFormat-short":"GGGGG d.MM.y","dateFormatItem-Bh":"B h","field-year-narrow-relative+-1":"geçen yıl","field-thu-short-relative+-1":"geçen per.","dateFormatItem-yyyyMMMEd":"G d MMM y E","field-mon-narrow-relative+-1":"geçen pzt.","dateFormatItem-MMMMd":"dd MMMM","field-thu-narrow-relative+-1":"geçen per.","dateFormatItem-E":"ccc","dateFormatItem-mmss":"mm:ss","dateFormatItem-H":"HH","field-weekOfMonth-short":"ayın haftası","field-tue-narrow-relative+-1":"geçen salı","dateFormatItem-yyyy":"G y","dateFormatItem-M":"L","field-wed-short-relative+0":"bu çar.","field-wed-short-relative+1":"gelecek çar.","field-sun-relative+-1":"geçen pazar","dateFormatItem-MMMMEd":"dd MMMM E","dateTimeFormat-full":"{1} {0}","dateFormatItem-hm":"h:mm a","dateFormatItem-d":"d","field-weekday":"haftanın günü","field-day-short-relative+0":"bugün","field-quarter-narrow-relative+0":"bu çyr.","field-day-short-relative+1":"yarın","field-sat-relative+0":"bu cumartesi","field-quarter-narrow-relative+1":"gelecek çyr.","dateFormatItem-h":"h a","field-day-short-relative+2":"öbür gün","field-sat-relative+1":"gelecek cumartesi","field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","field-dayOfYear-narrow":"yılın günü","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","field-weekdayOfMonth-short":"ayın günü","dateFormatItem-MEd":"dd/MM E","field-zone-narrow":"dilim","dateFormatItem-y":"G y","field-thu-narrow-relative+0":"bu per.","field-sun-narrow-relative+-1":"geçen paz.","field-mon-short-relative+-1":"geçen pzt.","field-thu-narrow-relative+1":"gelecek per.","field-thu-relative+0":"bu perşembe","field-thu-relative+1":"gelecek perşembe","dateFormatItem-hms":"h:mm:ss a","field-fri-short-relative+-1":"geçen cuma","field-thu-relative+-1":"geçen perşembe","field-week":"hafta","dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-quarter-narrow-relative+-1":"geçen çyr.","field-year-short-relative+0":"bu yıl","dateFormatItem-yyyyMMM":"G MMM y","field-dayperiod-short":"ÖÖ/ÖS","field-year-short-relative+1":"gelecek yıl","field-fri-short-relative+0":"bu cuma","field-fri-short-relative+1":"gelecek cuma","field-week-short-relative+-1":"geçen hf.","dateFormatItem-yyyyQQQQ":"G y/QQQQ","field-hour-short":"sa.","field-zone-short":"dilim","field-month-narrow":"ay","field-hour-narrow":"sa.","field-fri-narrow-relative+-1":"geçen cuma","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-era-narrow":"çağ","field-fri-relative+-1":"geçen cuma","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"geçen salı","field-minute-narrow":"dk.","field-mon-narrow-relative+0":"bu pzt.","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"gelecek pzt.","field-year-short-relative+-1":"geçen yıl","field-zone":"saat dilimi","dateFormatItem-MMMEd":"d MMM E","field-weekOfMonth-narrow":"ayın haftası","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"haftanın günü","field-quarter-narrow":"çyr.","field-sun-short-relative+-1":"geçen paz.","field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","field-weekday-short":"haftanın günü","dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","dateFormatItem-Gy":"G y","field-day-short":"gün","field-week-narrow":"hf.","field-era":"çağ","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/gregorian.js b/lib/dojo/cldr/nls/tr/gregorian.js
index 7fc35b209..ba9812799 100644
--- a/lib/dojo/cldr/nls/tr/gregorian.js
+++ b/lib/dojo/cldr/nls/tr/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/gregorian",{"dateFormatItem-Ehm":"E a h:mm","days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"months-format-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-second-relative+0":"şimdi","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"Haftanın Günü","dateFormatItem-yQQQ":"y/QQQ","dateFormatItem-yMEd":"dd.MM.y E","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-MMMEd":"d MMMM E","eraNarrow":["MÖ","MS"],"dateFormatItem-yMM":"MM.y","field-tue-relative+-1":"geçen salı","days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"dateFormat-long":"d MMMM y","field-fri-relative+-1":"geçen cuma","field-wed-relative+-1":"geçen çarşamba","months-format-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"ÖS","dateFormat-full":"d MMMM y EEEE","field-thu-relative+-1":"geçen perşembe","dateFormatItem-Md":"dd/MM","dateFormatItem-yMd":"dd.MM.y","field-era":"Miladi Dönem","dateFormatItem-yM":"MM/y","months-standAlone-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"timeFormat-short":"HH:mm","quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-yQQQQ":"y/QQQQ","timeFormat-long":"HH:mm:ss z","field-year":"Yıl","dateFormatItem-yMMM":"MMM y","field-hour":"Saat","months-format-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","timeFormat-full":"HH:mm:ss zzzz","field-day-relative+0":"bugün","field-thu-relative+0":"bu perşembe","field-day-relative+1":"yarın","field-thu-relative+1":"gelecek perşembe","dateFormatItem-GyMMMd":"G dd MMM y","field-day-relative+2":"öbür gün","dateFormatItem-H":"HH","months-standAlone-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-Gy":"G y","dateFormatItem-M":"L","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-MMMMd":"dd MMMM","timeFormat-medium":"HH:mm:ss","field-sun-relative+0":"bu pazar","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"gelecek pazar","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"eraAbbr":["MÖ","MS"],"field-minute":"Dakika","field-dayperiod":"ÖÖ/ÖS","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-d":"d","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"dün","dateFormatItem-h":"a h","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"evvelsi gün","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"dd/MM E","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"bu cuma","dateFormatItem-yMMMM":"MMMM y","field-fri-relative+1":"gelecek cuma","field-day":"Gün","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-zone":"Saat Dilimi","dateFormatItem-y":"y","months-standAlone-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-year-relative+-1":"geçen yıl","field-month-relative+-1":"geçen ay","dateFormatItem-hm":"a h:mm","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-yMMMd":"dd MMM y","eraNames":["Milattan Önce","Milattan Sonra"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-MMM":"LLL","field-month":"Ay","field-tue-relative+0":"bu salı","field-tue-relative+1":"gelecek salı","dayPeriods-format-wide-am":"ÖÖ","dateFormatItem-MMMMEd":"dd MMMM E","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","dateFormat-short":"d.MM.y","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E a h:mm:ss","field-second":"Saniye","field-sat-relative+-1":"geçen cumartesi","dateFormatItem-yMMMEd":"d MMM y E","field-sun-relative+-1":"geçen pazar","field-month-relative+0":"bu ay","field-month-relative+1":"gelecek ay","dateFormatItem-Ed":"d E","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"Hafta","dateFormat-medium":"d MMM y","field-year-relative+0":"bu yıl","field-week-relative+-1":"geçen hafta","field-year-relative+1":"gelecek yıl","dateFormatItem-mmss":"mm:ss","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"a h:mm:ss","dateFormatItem-GyMMM":"G MMM y","field-mon-relative+-1":"geçen pazartesi","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/gregorian",{"dateFormatItem-yMMMM":"MMMM y","field-thu-narrow-relative+0":"bu per.","field-thu-narrow-relative+1":"gelecek per.","field-sun-narrow-relative+0":"bu paz.","field-sun-narrow-relative+1":"gelecek paz.","months-format-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"dayPeriods-standAlone-abbr-pm":"ÖS","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma","eraNarrow":["MÖ","MS"],"dateFormatItem-Hmv":"HH:mm v","dateFormatItem-hmsv":"a h:mm:ss v","dateFormatItem-yMMMd":"d MMM y","dayPeriods-format-abbr-night1":"gece","dayPeriods-format-narrow-evening1":"akşam","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dayPeriods-format-abbr-afternoon1":"öğleden sonra","dayPeriods-format-wide-evening1":"akşam","dayPeriods-format-abbr-afternoon2":"akşamüstü","dateFormatItem-Ehm":"E a h:mm","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"geçen çar.","dayPeriods-standAlone-wide-evening1":"akşam","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-yMM":"MM.y","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","dateFormatItem-Ehms":"E a h:mm:ss","dayPeriods-standAlone-narrow-evening1":"akşam","dayPeriods-standAlone-abbr-afternoon1":"öğleden sonra","dayPeriods-standAlone-abbr-afternoon2":"akşamüstü","field-thu-relative+0":"bu perşembe","dayPeriods-standAlone-abbr-night1":"gece","field-thu-relative+1":"gelecek perşembe","dayPeriods-format-wide-am":"ÖÖ","field-fri-relative+0":"bu cuma","field-fri-relative+1":"gelecek cuma","dateFormatItem-yMd":"dd.MM.y","field-thu-narrow-relative+-1":"geçen per.","field-quarter-relative+0":"bu çeyrek","field-quarter-relative+1":"gelecek çeyrek","field-sun-short-relative+0":"bu paz.","timeFormat-short":"HH:mm","field-sun-short-relative+1":"gelecek paz.","dateFormatItem-hms":"a h:mm:ss","dayPeriods-format-narrow-afternoon1":"öğleden sonra","dateFormatItem-Md":"d/M","dayPeriods-format-narrow-afternoon2":"akşamüstü","dateFormatItem-Hmsv":"HH:mm:ss v","dateFormatItem-hmv":"a h:mm v","field-week-narrow":"hf.","field-hour-relative+0":"bu saat","field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","field-mon-narrow-relative+-1":"geçen pzt.","field-minute-narrow":"dk.","dateFormatItem-MMMMEd":"d MMMM E","field-thu-short-relative+0":"bu per.","field-mon-relative+0":"bu pazartesi","field-thu-short-relative+1":"gelecek per.","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+0":"bugün","field-era-short":"çağ","field-day-narrow-relative+1":"yarın","field-sat-narrow-relative+0":"bu cmt.","field-day-narrow-relative+2":"öbür gün","timeFormat-long":"HH:mm:ss z","field-sat-narrow-relative+1":"gelecek cmt.","field-week-narrow-relative+0":"bu hf.","field-week-narrow-relative+1":"gelecek hf.","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-month":"ay","months-standAlone-wide":["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],"field-weekday-narrow":"haftanın günü","dayPeriods-standAlone-narrow-afternoon1":"öğleden sonra","dayPeriods-standAlone-narrow-afternoon2":"akşamüstü","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","dayPeriods-format-abbr-evening1":"akşam","dayPeriods-format-abbr-noon":"öğle","dayPeriods-format-narrow-midnight":"gece","dayPeriods-format-wide-midnight":"gece yarısı","field-tue-relative+0":"bu salı","field-tue-relative+1":"gelecek salı","dayPeriods-standAlone-abbr-evening1":"akşam","dateFormatItem-hm":"a h:mm","dayPeriods-standAlone-wide-midnight":"gece yarısı","field-year-narrow":"yıl","dateFormatItem-mmss":"mm:ss","dayPeriods-standAlone-abbr-noon":"öğle","field-tue-short-relative+0":"bu salı","dayPeriods-standAlone-narrow-midnight":"gece yarısı","field-tue-short-relative+1":"gelecek salı","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E B h:mm","dateFormatItem-H":"HH","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","dateFormatItem-M":"L","field-wed-short-relative+0":"bu çar.","field-fri-short-relative+0":"bu cuma","field-wed-short-relative+1":"gelecek çar.","field-fri-short-relative+1":"gelecek cuma","field-weekOfMonth-short":"ayın haftası","field-quarter-short-relative+-1":"geçen çyr.","field-year-short-relative+-1":"geçen yıl","dateFormatItem-Bhm":"B h:mm","dayPeriods-format-wide-night1":"gece","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"geçen çyr.","dateFormatItem-d":"d","dayPeriods-format-abbr-pm":"ÖS","dateFormatItem-h":"a h","quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"field-weekOfMonth-narrow":"ayın haftası","dateFormatItem-y":"y","field-minute-relative+0":"bu dakika","field-year-short-relative+0":"bu yıl","dateFormatItem-EBhms":"E B h:mm:ss","field-year-short-relative+1":"gelecek yıl","field-weekday":"haftanın günü","dayPeriods-format-narrow-pm":"ös","field-tue-narrow-relative+-1":"geçen salı","dateFormatItem-yMEd":"d.M.y E","dayPeriods-standAlone-wide-night1":"gece","field-year-narrow-relative+-1":"geçen yıl","field-sat-relative+-1":"geçen cumartesi","dayPeriods-format-abbr-midnight":"gece yarısı","dayPeriods-format-narrow-morning1":"sabah","dayPeriods-format-narrow-morning2":"öğleden önce","dayPeriods-format-wide-morning1":"sabah","dayPeriods-format-wide-morning2":"öğleden önce","dayPeriods-standAlone-abbr-midnight":"gece yarısı","dayPeriods-standAlone-narrow-pm":"ÖS","dayPeriods-standAlone-wide-morning1":"sabah","field-mon-narrow-relative+0":"bu pzt.","dayPeriods-standAlone-wide-morning2":"öğleden önce","field-mon-narrow-relative+1":"gelecek pzt.","field-second":"saniye","dateFormatItem-yMMMEd":"d MMM y E","field-year-relative+-1":"geçen yıl","field-weekdayOfMonth-short":"ayın günü","dateFormat-short":"d.MM.y","eraNames":["Milattan Önce","Milattan Sonra"],"field-second-short":"sn.","field-thu-short-relative+-1":"geçen per.","field-zone":"saat dilimi","field-dayperiod-narrow":"ÖÖ/ÖS","field-sun-short-relative+-1":"geçen paz.","dayPeriods-standAlone-narrow-morning1":"sabah","dayPeriods-standAlone-narrow-morning2":"öğleden önce","eraAbbr":["MÖ","MS"],"field-week-short":"hf.","dayPeriods-standAlone-abbr-am":"ÖÖ","dayPeriods-standAlone-wide-pm":"ÖS","dateFormatItem-ms":"mm:ss","field-day-relative+0":"bugün","field-day-relative+1":"yarın","field-day-relative+2":"öbür gün","field-day-short-relative+0":"bugün","field-dayOfYear-short":"yılın günü","field-day-short-relative+1":"yarın","dateFormat-long":"d MMMM y","field-day-short-relative+2":"öbür gün","field-sun-narrow-relative+-1":"geçen paz.","dayPeriods-format-wide-noon":"öğle","field-second-relative+0":"şimdi","field-quarter-relative+-1":"geçen çeyrek","dayPeriods-format-narrow-night1":"gece","quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"dayPeriods-standAlone-wide-noon":"öğle","dayPeriods-standAlone-narrow-night1":"gece","field-week-relative+-1":"geçen hafta","dayPeriods-format-abbr-morning1":"sabah","field-month-relative+-1":"geçen ay","dayPeriods-format-abbr-morning2":"öğleden önce","months-format-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-year":"yıl","field-era":"çağ","dayPeriods-standAlone-abbr-morning1":"sabah","dayPeriods-standAlone-abbr-morning2":"öğleden önce","days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"quarters-format-narrow":["1.","2.","3.","4."],"dateFormatItem-yQQQQ":"y QQQQ","field-day-short-relative+-1":"dün","field-day-short-relative+-2":"evvelsi gün","dateFormatItem-GyMMM":"G MMM y","timeFormat-full":"HH:mm:ss zzzz","dateFormatItem-Bhms":"B h:mm:ss","field-hour":"saat","field-dayOfYear-narrow":"yılın günü","field-quarter":"çeyrek","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-day":"gün","field-mon-relative+-1":"geçen pazartesi","field-dayOfYear":"yılın günü","dateFormat-medium":"d MMM y","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"MMM y","dateFormatItem-GyMMMd":"G d MMM y","dateFormatItem-MEd":"d/MM E","field-tue-short-relative+-1":"geçen salı","field-year-short":"yıl","field-month-short":"ay","dateFormatItem-MMMEd":"d MMMM E","dayPeriods-format-wide-afternoon1":"öğleden sonra","dateFormatItem-MMMd":"d MMM","dayPeriods-format-wide-afternoon2":"akşamüstü","dateFormatItem-Bh":"B h","months-format-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"dayPeriods-format-abbr-am":"ÖÖ","field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","dayPeriods-format-wide-pm":"ÖS","field-zone-short":"dilim","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","dayPeriods-standAlone-wide-afternoon1":"öğleden sonra","dayPeriods-standAlone-wide-afternoon2":"akşamüstü","field-fri-short-relative+-1":"geçen cuma","field-month-narrow":"ay","dayPeriods-format-narrow-am":"öö","field-month-narrow-relative+-1":"geçen ay","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"field-weekday-short":"haftanın günü","field-day-narrow-relative+-1":"dün","field-day-narrow-relative+-2":"evvelsi gün","field-quarter-short":"çyr.","days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"months-standAlone-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"çyr.","field-mon-short-relative+0":"bu pzt.","field-mon-short-relative+1":"gelecek pzt.","field-dayperiod-short":"ÖÖ/ÖS","dayPeriods-standAlone-narrow-am":"ÖÖ","field-week-narrow-relative+-1":"geçen hf.","field-thu-relative+-1":"geçen perşembe","field-fri-narrow-relative+-1":"geçen cuma","field-mon-short-relative+-1":"geçen pzt.","timeFormat-medium":"HH:mm:ss","field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","dateFormatItem-Ed":"d E","field-wed-relative+-1":"geçen çarşamba","field-weekOfMonth":"ayın haftası","field-weekdayOfMonth-narrow":"ayın günü","dayPeriods-standAlone-wide-am":"ÖÖ","dateFormatItem-yQQQ":"y QQQ","field-fri-relative+-1":"geçen cuma","field-minute":"dakika","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"field-day-short":"gün","field-dayperiod":"ÖÖ/ÖS","field-hour-short":"sa.","months-standAlone-abbr":["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],"field-second-narrow":"sn.","field-month-relative+0":"bu ay","field-month-relative+1":"gelecek ay","dateFormat-full":"d MMMM y EEEE","field-era-narrow":"çağ","field-sat-short-relative+-1":"geçen cmt.","dayPeriods-format-narrow-noon":"ö","field-week-short-relative+-1":"geçen hf.","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"MM/y","field-sun-relative+-1":"geçen pazar","field-wed-short-relative+-1":"geçen çar.","field-weekdayOfMonth":"ayın günü","field-quarter-narrow-relative+0":"bu çyr.","dateFormatItem-GyMMMEd":"G d MMM y E","field-quarter-narrow-relative+1":"gelecek çyr.","field-sat-short-relative+0":"bu cmt.","field-hour-narrow":"sa.","field-sat-short-relative+1":"gelecek cmt.","field-year-narrow-relative+0":"bu yıl","field-year-narrow-relative+1":"gelecek yıl","dateFormatItem-Gy":"G y","field-zone-narrow":"dilim","dayPeriods-standAlone-narrow-noon":"öğle","field-tue-relative+-1":"geçen salı","field-minute-short":"dk.","dateFormatItem-yw":"Y 'yılının' w. 'haftası'","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta","dateFormatItem-MMM":"LLL","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-sat-narrow-relative+-1":"geçen cmt.","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"dateFormatItem-MMMMW":"MMMM 'ayının' W. 'haftası'","field-month-short-relative+-1":"geçen ay","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"d MMMM","field-week":"hafta","field-day-narrow":"gün"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/hebrew.js b/lib/dojo/cldr/nls/tr/hebrew.js
index e5bf665af..11b16de62 100644
--- a/lib/dojo/cldr/nls/tr/hebrew.js
+++ b/lib/dojo/cldr/nls/tr/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/hebrew",{"days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"field-second-relative+0":"şimdi","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"Haftanın Günü","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-MMMEd":"d MMM E","field-tue-relative+-1":"geçen salı","days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"dateFormat-long":"G d MMMM y","field-fri-relative+-1":"geçen cuma","field-wed-relative+-1":"geçen çarşamba","months-format-wide":["Tişri","Heşvan","Kislev","Tevet","Şevat","Veadar","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"dateFormatItem-yyyyQQQ":"G y/QQQ","dayPeriods-format-wide-pm":"ÖS","dateFormat-full":"G d MMMM y EEEE","dateFormatItem-yyyyMEd":"GGGGG dd.MM.y E","field-thu-relative+-1":"geçen perşembe","dateFormatItem-Md":"dd/MM","field-era":"Miladi Dönem","months-standAlone-wide":["Tişri","Heşvan","Kislev","Tevet","Şevat","Veadar","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"field-year":"Yıl","field-hour":"Saat","months-format-abbr":["Tişri","Heşvan","Kislev","Tevet","Şevat","Veadar","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","field-day-relative+0":"bugün","field-thu-relative+0":"bu perşembe","field-day-relative+1":"yarın","field-thu-relative+1":"gelecek perşembe","dateFormatItem-GyMMMd":"G d MMM y","field-day-relative+2":"öbür gün","months-standAlone-abbr":["Tişri","Heşvan","Kislev","Tevet","Şevat","Veadar","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-yyyyMMMEd":"G d MMM y E","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-yyyyMMM":"G MMM y","dateFormatItem-yyyyMMMd":"G dd MMM y","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"field-minute":"Dakika","field-dayperiod":"ÖÖ/ÖS","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"dd/MM E","field-fri-relative+0":"bu cuma","field-fri-relative+1":"gelecek cuma","field-day":"Gün","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-zone":"Saat Dilimi","field-year-relative+-1":"geçen yıl","field-month-relative+-1":"geçen ay","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-yyyyMd":"GGGGG dd.MM.y","field-month":"Ay","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"field-tue-relative+0":"bu salı","field-tue-relative+1":"gelecek salı","dayPeriods-format-wide-am":"ÖÖ","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","dateFormat-short":"GGGGG d.MM.y","field-second":"Saniye","field-sat-relative+-1":"geçen cumartesi","field-sun-relative+-1":"geçen pazar","field-month-relative+0":"bu ay","field-month-relative+1":"gelecek ay","dateFormatItem-Ed":"d E","field-week":"Hafta","dateFormat-medium":"G d MMM y","field-year-relative+0":"bu yıl","field-week-relative+-1":"geçen hafta","dateFormatItem-yyyyM":"GGGGG M/y","field-year-relative+1":"gelecek yıl","dateFormatItem-yyyyQQQQ":"G y/QQQQ","months-format-wide-leap":"Adar II","dateFormatItem-GyMMM":"G MMM y","field-mon-relative+-1":"geçen pazartesi","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/hebrew",{"field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","field-tue-relative+-1":"geçen salı","field-year":"yıl","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-minute":"dakika","field-month-narrow-relative+-1":"geçen ay","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","field-thu-short-relative+0":"bu per.","field-day-short-relative+-1":"dün","field-thu-short-relative+1":"gelecek per.","field-day-relative+0":"bugün","field-day-short-relative+-2":"evvelsi gün","field-day-relative+1":"yarın","field-week-narrow-relative+0":"bu hf.","field-day-relative+2":"öbür gün","field-week-narrow-relative+1":"gelecek hf.","field-wed-narrow-relative+-1":"geçen çar.","dateFormatItem-EBhms":"E B h:mm:ss","field-year-narrow":"yıl","field-era-short":"çağ","field-year-narrow-relative+0":"bu yıl","field-tue-relative+0":"bu salı","field-year-narrow-relative+1":"gelecek yıl","field-tue-relative+1":"gelecek salı","field-weekdayOfMonth":"ayın günü","field-second-short":"sn.","dayPeriods-format-narrow-am":"öö","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"ayın günü","dayPeriods-format-abbr-am":"ÖÖ","field-week-relative+0":"bu hafta","field-month-relative+0":"bu ay","field-week-relative+1":"gelecek hafta","field-month-relative+1":"gelecek ay","field-sun-narrow-relative+0":"bu paz.","field-mon-short-relative+0":"bu pzt.","field-sun-narrow-relative+1":"gelecek paz.","field-mon-short-relative+1":"gelecek pzt.","field-second-relative+0":"şimdi","dateFormatItem-yyyyQQQ":"G y/QQQ","eraNames":["AM"],"field-weekOfMonth":"ayın haftası","dayPeriods-standAlone-abbr-pm":"ÖS","field-month-short":"ay","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-yyyyMd":"GGGGG dd.MM.y","field-day":"gün","field-dayOfYear-short":"yılın günü","field-year-relative+-1":"geçen yıl","dayPeriods-format-wide-am":"ÖÖ","field-sat-short-relative+-1":"geçen cmt.","field-hour-relative+0":"bu saat","dateFormatItem-yyyyMEd":"GGGGG dd.MM.y E","field-wed-relative+-1":"geçen çarşamba","field-sat-narrow-relative+-1":"geçen cmt.","field-second":"saniye","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dayPeriods-standAlone-wide-pm":"ÖS","dateFormat-long":"G d MMMM y","dateFormatItem-GyMMMd":"G d MMM y","field-quarter":"çeyrek","field-week-short":"hf.","field-day-narrow-relative+0":"bugün","field-day-narrow-relative+1":"yarın","field-day-narrow-relative+2":"öbür gün","quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"field-tue-short-relative+0":"bu salı","field-tue-short-relative+1":"gelecek salı","field-month-short-relative+-1":"geçen ay","field-mon-relative+-1":"geçen pazartesi","dateFormatItem-GyMMM":"G MMM y","field-month":"ay","field-day-narrow":"gün","field-minute-short":"dk.","field-dayperiod":"ÖÖ/ÖS","field-sat-short-relative+0":"bu cmt.","field-sat-short-relative+1":"gelecek cmt.","dayPeriods-format-narrow-pm":"ös","dateFormat-medium":"G d MMM y","dateFormatItem-yyyyMMMM":"G MMMM y","eraAbbr":["AM"],"quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"dayPeriods-format-abbr-pm":"ÖS","dateFormatItem-yyyyM":"GGGGG M/y","field-second-narrow":"sn.","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+-1":"dün","field-year-short":"yıl","field-day-narrow-relative+-2":"evvelsi gün","field-quarter-relative+-1":"geçen çeyrek","dateFormatItem-yyyyMMMd":"G dd MMM y","field-dayperiod-narrow":"ÖÖ/ÖS","dayPeriods-standAlone-narrow-am":"ÖÖ","field-week-narrow-relative+-1":"geçen hf.","days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"ÖS","field-dayOfYear":"yılın günü","field-sat-relative+-1":"geçen cumartesi","dateFormatItem-Md":"dd/MM","field-hour":"saat","months-format-wide":["Tişri","Heşvan","Kislev","Tevet","Şevat","Adar Rişon","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"dateFormat-full":"G d MMMM y EEEE","field-month-relative+-1":"geçen ay","field-quarter-short":"çyr.","field-sat-narrow-relative+0":"bu cmt.","field-fri-relative+0":"bu cuma","field-sat-narrow-relative+1":"gelecek cmt.","field-fri-relative+1":"gelecek cuma","dateFormatItem-EBhm":"E B h:mm","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-sun-short-relative+0":"bu paz.","field-sun-short-relative+1":"gelecek paz.","field-week-relative+-1":"geçen hafta","field-quarter-short-relative+-1":"geçen çyr.","months-format-abbr":["Tişri","Heşvan","Kislev","Tevet","Şevat","Adar Rişon","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"field-quarter-relative+0":"bu çeyrek","field-minute-relative+0":"bu dakika","field-quarter-relative+1":"gelecek çeyrek","field-wed-short-relative+-1":"geçen çar.","dateFormat-short":"GGGGG d.MM.y","dateFormatItem-Bh":"B h","field-thu-short-relative+-1":"geçen per.","field-year-narrow-relative+-1":"geçen yıl","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-yyyyMMMEd":"G d MMM y E","field-mon-narrow-relative+-1":"geçen pzt.","dateFormatItem-MMMMd":"dd MMMM","field-thu-narrow-relative+-1":"geçen per.","field-tue-narrow-relative+-1":"geçen salı","field-weekOfMonth-short":"ayın haftası","dayPeriods-standAlone-narrow-pm":"ÖS","field-wed-short-relative+0":"bu çar.","months-standAlone-wide":["Tişri","Heşvan","Kislev","Tevet","Şevat","Adar Rişon","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"field-wed-short-relative+1":"gelecek çar.","field-sun-relative+-1":"geçen pazar","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"months-format-abbr-leap":"Veadar","field-weekday":"haftanın günü","field-day-short-relative+0":"bugün","field-quarter-narrow-relative+0":"bu çyr.","field-day-short-relative+1":"yarın","field-sat-relative+0":"bu cumartesi","field-quarter-narrow-relative+1":"gelecek çyr.","field-day-short-relative+2":"öbür gün","field-sat-relative+1":"gelecek cumartesi","field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","months-standAlone-abbr":["Tişri","Heşvan","Kislev","Tevet","Şevat","Adar Rişon","Adar","Nisan","İyar","Sivan","Tamuz","Av","Elul"],"months-format-wide-leap":"Veadar","field-dayOfYear-narrow":"yılın günü","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","field-weekdayOfMonth-short":"ayın günü","dateFormatItem-MEd":"dd/MM E","field-zone-narrow":"dilim","field-thu-narrow-relative+0":"bu per.","field-thu-narrow-relative+1":"gelecek per.","field-sun-narrow-relative+-1":"geçen paz.","field-mon-short-relative+-1":"geçen pzt.","field-thu-relative+0":"bu perşembe","field-thu-relative+1":"gelecek perşembe","field-fri-short-relative+-1":"geçen cuma","field-thu-relative+-1":"geçen perşembe","field-week":"hafta","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-quarter-narrow-relative+-1":"geçen çyr.","field-year-short-relative+0":"bu yıl","field-dayperiod-short":"ÖÖ/ÖS","dateFormatItem-yyyyMMM":"G MMM y","field-year-short-relative+1":"gelecek yıl","field-fri-short-relative+0":"bu cuma","field-fri-short-relative+1":"gelecek cuma","days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"field-week-short-relative+-1":"geçen hf.","months-standAlone-abbr-leap":"Veadar","dateFormatItem-yyyyQQQQ":"G y/QQQQ","field-hour-short":"sa.","field-zone-short":"dilim","quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"field-month-narrow":"ay","field-hour-narrow":"sa.","field-fri-narrow-relative+-1":"geçen cuma","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-era-narrow":"çağ","field-fri-relative+-1":"geçen cuma","eraNarrow":"AM","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"geçen salı","field-minute-narrow":"dk.","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-mon-narrow-relative+0":"bu pzt.","field-mon-narrow-relative+1":"gelecek pzt.","field-year-short-relative+-1":"geçen yıl","field-zone":"saat dilimi","dateFormatItem-MMMEd":"d MMM E","field-weekOfMonth-narrow":"ayın haftası","field-weekday-narrow":"haftanın günü","months-standAlone-wide-leap":"Veadar","field-quarter-narrow":"çyr.","field-sun-short-relative+-1":"geçen paz.","field-day-relative+-1":"dün","dayPeriods-standAlone-abbr-am":"ÖÖ","field-day-relative+-2":"evvelsi gün","field-weekday-short":"haftanın günü","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-day-short":"gün","field-week-narrow":"hf.","field-era":"çağ","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma","dayPeriods-standAlone-wide-am":"ÖÖ"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/indian.js b/lib/dojo/cldr/nls/tr/indian.js
new file mode 100644
index 000000000..2e6af07f6
--- /dev/null
+++ b/lib/dojo/cldr/nls/tr/indian.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/tr/indian",{"field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","field-tue-relative+-1":"geçen salı","field-year":"yıl","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-minute":"dakika","field-month-narrow-relative+-1":"geçen ay","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","field-thu-short-relative+0":"bu per.","field-day-short-relative+-1":"dün","field-thu-short-relative+1":"gelecek per.","field-day-relative+0":"bugün","field-day-short-relative+-2":"evvelsi gün","field-day-relative+1":"yarın","field-week-narrow-relative+0":"bu hf.","field-day-relative+2":"öbür gün","field-week-narrow-relative+1":"gelecek hf.","field-wed-narrow-relative+-1":"geçen çar.","field-year-narrow":"yıl","field-era-short":"çağ","field-year-narrow-relative+0":"bu yıl","field-tue-relative+0":"bu salı","field-year-narrow-relative+1":"gelecek yıl","field-tue-relative+1":"gelecek salı","field-weekdayOfMonth":"ayın günü","field-second-short":"sn.","field-weekdayOfMonth-narrow":"ayın günü","field-week-relative+0":"bu hafta","field-month-relative+0":"bu ay","field-week-relative+1":"gelecek hafta","field-month-relative+1":"gelecek ay","field-sun-narrow-relative+0":"bu paz.","field-mon-short-relative+0":"bu pzt.","field-sun-narrow-relative+1":"gelecek paz.","field-mon-short-relative+1":"gelecek pzt.","field-second-relative+0":"şimdi","eraNames":["Saka"],"field-weekOfMonth":"ayın haftası","field-month-short":"ay","field-day":"gün","field-dayOfYear-short":"yılın günü","field-year-relative+-1":"geçen yıl","field-sat-short-relative+-1":"geçen cmt.","field-hour-relative+0":"bu saat","field-wed-relative+-1":"geçen çarşamba","field-sat-narrow-relative+-1":"geçen cmt.","field-second":"saniye","field-quarter":"çeyrek","field-week-short":"hf.","field-day-narrow-relative+0":"bugün","field-day-narrow-relative+1":"yarın","field-day-narrow-relative+2":"öbür gün","field-tue-short-relative+0":"bu salı","field-tue-short-relative+1":"gelecek salı","field-month-short-relative+-1":"geçen ay","field-mon-relative+-1":"geçen pazartesi","field-month":"ay","field-day-narrow":"gün","field-minute-short":"dk.","field-dayperiod":"ÖÖ/ÖS","field-sat-short-relative+0":"bu cmt.","field-sat-short-relative+1":"gelecek cmt.","eraAbbr":["Saka"],"field-second-narrow":"sn.","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+-1":"dün","field-year-short":"yıl","field-day-narrow-relative+-2":"evvelsi gün","field-quarter-relative+-1":"geçen çeyrek","field-dayperiod-narrow":"ÖÖ/ÖS","field-week-narrow-relative+-1":"geçen hf.","field-dayOfYear":"yılın günü","field-sat-relative+-1":"geçen cumartesi","field-hour":"saat","months-format-wide":["Chaitra","Vaisakha","Jyaistha","Asadha","Sravana","Bhadra","Asvina","Kartika","Agrahayana","Pausa","Magha","Phalguna"],"field-month-relative+-1":"geçen ay","field-quarter-short":"çyr.","field-sat-narrow-relative+0":"bu cmt.","field-fri-relative+0":"bu cuma","field-sat-narrow-relative+1":"gelecek cmt.","field-fri-relative+1":"gelecek cuma","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-sun-short-relative+0":"bu paz.","field-sun-short-relative+1":"gelecek paz.","field-week-relative+-1":"geçen hafta","field-quarter-short-relative+-1":"geçen çyr.","field-quarter-relative+0":"bu çeyrek","field-minute-relative+0":"bu dakika","field-quarter-relative+1":"gelecek çeyrek","field-wed-short-relative+-1":"geçen çar.","field-thu-short-relative+-1":"geçen per.","field-year-narrow-relative+-1":"geçen yıl","field-mon-narrow-relative+-1":"geçen pzt.","field-thu-narrow-relative+-1":"geçen per.","field-tue-narrow-relative+-1":"geçen salı","field-weekOfMonth-short":"ayın haftası","field-wed-short-relative+0":"bu çar.","field-wed-short-relative+1":"gelecek çar.","field-sun-relative+-1":"geçen pazar","field-weekday":"haftanın günü","field-day-short-relative+0":"bugün","field-quarter-narrow-relative+0":"bu çyr.","field-sat-relative+0":"bu cumartesi","field-day-short-relative+1":"yarın","field-quarter-narrow-relative+1":"gelecek çyr.","field-sat-relative+1":"gelecek cumartesi","field-day-short-relative+2":"öbür gün","field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","field-dayOfYear-narrow":"yılın günü","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","field-weekdayOfMonth-short":"ayın günü","field-zone-narrow":"dilim","field-thu-narrow-relative+0":"bu per.","field-thu-narrow-relative+1":"gelecek per.","field-sun-narrow-relative+-1":"geçen paz.","field-mon-short-relative+-1":"geçen pzt.","field-thu-relative+0":"bu perşembe","field-thu-relative+1":"gelecek perşembe","field-fri-short-relative+-1":"geçen cuma","field-thu-relative+-1":"geçen perşembe","field-week":"hafta","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-quarter-narrow-relative+-1":"geçen çyr.","field-year-short-relative+0":"bu yıl","field-dayperiod-short":"ÖÖ/ÖS","field-year-short-relative+1":"gelecek yıl","field-fri-short-relative+0":"bu cuma","field-fri-short-relative+1":"gelecek cuma","field-week-short-relative+-1":"geçen hf.","field-hour-short":"sa.","field-zone-short":"dilim","field-month-narrow":"ay","field-hour-narrow":"sa.","field-fri-narrow-relative+-1":"geçen cuma","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-era-narrow":"çağ","field-fri-relative+-1":"geçen cuma","eraNarrow":"Saka","field-tue-short-relative+-1":"geçen salı","field-minute-narrow":"dk.","field-mon-narrow-relative+0":"bu pzt.","field-mon-narrow-relative+1":"gelecek pzt.","field-year-short-relative+-1":"geçen yıl","field-zone":"saat dilimi","field-weekOfMonth-narrow":"ayın haftası","field-weekday-narrow":"haftanın günü","field-quarter-narrow":"çyr.","field-sun-short-relative+-1":"geçen paz.","field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","field-weekday-short":"haftanın günü","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-day-short":"gün","field-week-narrow":"hf.","field-era":"çağ","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/islamic.js b/lib/dojo/cldr/nls/tr/islamic.js
index d1717fb8b..29913090a 100644
--- a/lib/dojo/cldr/nls/tr/islamic.js
+++ b/lib/dojo/cldr/nls/tr/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/islamic",{"days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"field-second-relative+0":"şimdi","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"Haftanın Günü","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-MMMEd":"d MMM E","eraNarrow":["Hicri"],"field-tue-relative+-1":"geçen salı","days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"dateFormat-long":"G d MMMM y","field-fri-relative+-1":"geçen cuma","field-wed-relative+-1":"geçen çarşamba","months-format-wide":["Muharrem","Safer","Rebiülevvel","Rebiülahir","Cemaziyelevvel","Cemaziyelahir","Recep","Şaban","Ramazan","Şevval","Zilkade","Zilhicce"],"dateFormatItem-yyyyQQQ":"G y/QQQ","dayPeriods-format-wide-pm":"ÖS","dateFormat-full":"G d MMMM y EEEE","dateFormatItem-yyyyMEd":"GGGGG dd.MM.y E","field-thu-relative+-1":"geçen perşembe","dateFormatItem-Md":"dd/MM","field-era":"Miladi Dönem","months-standAlone-wide":["Muharrem","Safer","Rebiülevvel","Rebiülahir","Cemaziyelevvel","Cemaziyelahir","Recep","Şaban","Ramazan","Şevval","Zilkade","Zilhicce"],"quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"field-year":"Yıl","field-hour":"Saat","months-format-abbr":["Muharrem","Safer","Rebiülevvel","Rebiülahir","Cemaziyelevvel","Cemaziyelahir","Recep","Şaban","Ramazan","Şevval","Zilkade","Zilhicce"],"field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","field-day-relative+0":"bugün","field-thu-relative+0":"bu perşembe","field-day-relative+1":"yarın","field-thu-relative+1":"gelecek perşembe","dateFormatItem-GyMMMd":"G d MMM y","field-day-relative+2":"öbür gün","months-standAlone-abbr":["Muharrem","Safer","Rebiülevvel","Rebiülahir","Cemaziyelevvel","Cemaziyelahir","Recep","Şaban","Ramazan","Şevval","Zilkade","Zilhicce"],"quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-yyyyMMMEd":"G d MMM y E","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-yyyyMMM":"G MMM y","dateFormatItem-yyyyMMMd":"G dd MMM y","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"eraAbbr":["Hicri"],"field-minute":"Dakika","field-dayperiod":"ÖÖ/ÖS","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"dd/MM E","field-fri-relative+0":"bu cuma","field-fri-relative+1":"gelecek cuma","field-day":"Gün","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-zone":"Saat Dilimi","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"geçen yıl","field-month-relative+-1":"geçen ay","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"eraNames":["Hicri"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-yyyyMd":"GGGGG dd.MM.y","field-month":"Ay","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"field-tue-relative+0":"bu salı","field-tue-relative+1":"gelecek salı","dayPeriods-format-wide-am":"ÖÖ","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","dateFormat-short":"GGGGG d.MM.y","field-second":"Saniye","field-sat-relative+-1":"geçen cumartesi","field-sun-relative+-1":"geçen pazar","field-month-relative+0":"bu ay","field-month-relative+1":"gelecek ay","dateFormatItem-Ed":"d E","field-week":"Hafta","dateFormat-medium":"G d MMM y","field-year-relative+0":"bu yıl","field-week-relative+-1":"geçen hafta","dateFormatItem-yyyyM":"GGGGG M/y","field-year-relative+1":"gelecek yıl","dateFormatItem-yyyyQQQQ":"G y/QQQQ","dateFormatItem-GyMMM":"G MMM y","field-mon-relative+-1":"geçen pazartesi","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/islamic",{"field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","field-tue-relative+-1":"geçen salı","field-year":"yıl","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-minute":"dakika","field-month-narrow-relative+-1":"geçen ay","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","field-thu-short-relative+0":"bu per.","field-day-short-relative+-1":"dün","field-thu-short-relative+1":"gelecek per.","field-day-relative+0":"bugün","field-day-short-relative+-2":"evvelsi gün","field-day-relative+1":"yarın","field-week-narrow-relative+0":"bu hf.","field-day-relative+2":"öbür gün","field-week-narrow-relative+1":"gelecek hf.","field-wed-narrow-relative+-1":"geçen çar.","dateFormatItem-EBhms":"E B h:mm:ss","field-year-narrow":"yıl","field-era-short":"çağ","field-year-narrow-relative+0":"bu yıl","field-tue-relative+0":"bu salı","field-year-narrow-relative+1":"gelecek yıl","field-tue-relative+1":"gelecek salı","field-weekdayOfMonth":"ayın günü","field-second-short":"sn.","dayPeriods-format-narrow-am":"öö","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"ayın günü","dayPeriods-format-abbr-am":"ÖÖ","field-week-relative+0":"bu hafta","field-month-relative+0":"bu ay","field-week-relative+1":"gelecek hafta","field-month-relative+1":"gelecek ay","field-sun-narrow-relative+0":"bu paz.","field-mon-short-relative+0":"bu pzt.","field-sun-narrow-relative+1":"gelecek paz.","field-mon-short-relative+1":"gelecek pzt.","field-second-relative+0":"şimdi","dateFormatItem-yyyyQQQ":"G y/QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["Hicri"],"field-weekOfMonth":"ayın haftası","dayPeriods-standAlone-abbr-pm":"ÖS","field-month-short":"ay","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-yyyyMd":"GGGGG dd.MM.y","field-day":"gün","field-dayOfYear-short":"yılın günü","field-year-relative+-1":"geçen yıl","dayPeriods-format-wide-am":"ÖÖ","field-sat-short-relative+-1":"geçen cmt.","field-hour-relative+0":"bu saat","dateFormatItem-yyyyMEd":"GGGGG dd.MM.y E","field-wed-relative+-1":"geçen çarşamba","field-sat-narrow-relative+-1":"geçen cmt.","field-second":"saniye","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dayPeriods-standAlone-wide-pm":"ÖS","dateFormat-long":"G d MMMM y","dateFormatItem-GyMMMd":"G d MMM y","field-quarter":"çeyrek","field-week-short":"hf.","field-day-narrow-relative+0":"bugün","field-day-narrow-relative+1":"yarın","field-day-narrow-relative+2":"öbür gün","quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"field-tue-short-relative+0":"bu salı","field-tue-short-relative+1":"gelecek salı","field-month-short-relative+-1":"geçen ay","field-mon-relative+-1":"geçen pazartesi","dateFormatItem-GyMMM":"G MMM y","field-month":"ay","field-day-narrow":"gün","field-minute-short":"dk.","field-dayperiod":"ÖÖ/ÖS","field-sat-short-relative+0":"bu cmt.","field-sat-short-relative+1":"gelecek cmt.","dayPeriods-format-narrow-pm":"ös","dateFormat-medium":"G d MMM y","dateFormatItem-yyyyMMMM":"G MMMM y","eraAbbr":["Hicri"],"quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"dayPeriods-format-abbr-pm":"ÖS","dateFormatItem-yyyyM":"GGGGG M/y","field-second-narrow":"sn.","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+-1":"dün","field-year-short":"yıl","field-day-narrow-relative+-2":"evvelsi gün","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"geçen çeyrek","dateFormatItem-yyyyMMMd":"G dd MMM y","field-dayperiod-narrow":"ÖÖ/ÖS","dayPeriods-standAlone-narrow-am":"ÖÖ","field-week-narrow-relative+-1":"geçen hf.","days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"ÖS","field-dayOfYear":"yılın günü","field-sat-relative+-1":"geçen cumartesi","dateFormatItem-Md":"dd/MM","field-hour":"saat","months-format-wide":["Muharrem","Safer","Rebiülevvel","Rebiülahir","Cemaziyelevvel","Cemaziyelahir","Recep","Şaban","Ramazan","Şevval","Zilkade","Zilhicce"],"dateFormat-full":"G d MMMM y EEEE","field-month-relative+-1":"geçen ay","field-quarter-short":"çyr.","field-sat-narrow-relative+0":"bu cmt.","field-fri-relative+0":"bu cuma","field-sat-narrow-relative+1":"gelecek cmt.","field-fri-relative+1":"gelecek cuma","dateFormatItem-EBhm":"E B h:mm","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-sun-short-relative+0":"bu paz.","field-sun-short-relative+1":"gelecek paz.","field-week-relative+-1":"geçen hafta","field-quarter-short-relative+-1":"geçen çyr.","months-format-abbr":["Muhar.","Safer","R.evvel","R.ahir","C.evvel","C.ahir","Recep","Şaban","Ram.","Şevval","Zilkade","Zilhicce"],"field-quarter-relative+0":"bu çeyrek","field-minute-relative+0":"bu dakika","field-quarter-relative+1":"gelecek çeyrek","field-wed-short-relative+-1":"geçen çar.","dateFormat-short":"GGGGG d.MM.y","dateFormatItem-Bh":"B h","field-thu-short-relative+-1":"geçen per.","field-year-narrow-relative+-1":"geçen yıl","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-yyyyMMMEd":"G d MMM y E","field-mon-narrow-relative+-1":"geçen pzt.","dateFormatItem-MMMMd":"dd MMMM","field-thu-narrow-relative+-1":"geçen per.","field-tue-narrow-relative+-1":"geçen salı","field-weekOfMonth-short":"ayın haftası","dayPeriods-standAlone-narrow-pm":"ÖS","field-wed-short-relative+0":"bu çar.","months-standAlone-wide":["Muharrem","Safer","Rebiülevvel","Rebiülahir","Cemaziyelevvel","Cemaziyelahir","Recep","Şaban","Ramazan","Şevval","Zilkade","Zilhicce"],"field-wed-short-relative+1":"gelecek çar.","field-sun-relative+-1":"geçen pazar","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"field-weekday":"haftanın günü","field-day-short-relative+0":"bugün","field-quarter-narrow-relative+0":"bu çyr.","field-day-short-relative+1":"yarın","field-sat-relative+0":"bu cumartesi","field-quarter-narrow-relative+1":"gelecek çyr.","field-day-short-relative+2":"öbür gün","field-sat-relative+1":"gelecek cumartesi","field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","months-standAlone-abbr":["Muhar.","Safer","R.evvel","R.ahir","C.evvel","C.ahir","Recep","Şaban","Ram.","Şevval","Zilkade","Zilhicce"],"field-dayOfYear-narrow":"yılın günü","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","field-weekdayOfMonth-short":"ayın günü","dateFormatItem-MEd":"dd/MM E","field-zone-narrow":"dilim","field-thu-narrow-relative+0":"bu per.","field-thu-narrow-relative+1":"gelecek per.","field-sun-narrow-relative+-1":"geçen paz.","field-mon-short-relative+-1":"geçen pzt.","field-thu-relative+0":"bu perşembe","field-thu-relative+1":"gelecek perşembe","field-fri-short-relative+-1":"geçen cuma","field-thu-relative+-1":"geçen perşembe","field-week":"hafta","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-quarter-narrow-relative+-1":"geçen çyr.","field-year-short-relative+0":"bu yıl","field-dayperiod-short":"ÖÖ/ÖS","dateFormatItem-yyyyMMM":"G MMM y","field-year-short-relative+1":"gelecek yıl","field-fri-short-relative+0":"bu cuma","field-fri-short-relative+1":"gelecek cuma","days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"field-week-short-relative+-1":"geçen hf.","dateFormatItem-yyyyQQQQ":"G y/QQQQ","field-hour-short":"sa.","field-zone-short":"dilim","quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"field-month-narrow":"ay","field-hour-narrow":"sa.","field-fri-narrow-relative+-1":"geçen cuma","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-era-narrow":"çağ","field-fri-relative+-1":"geçen cuma","eraNarrow":"Hicri","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"geçen salı","field-minute-narrow":"dk.","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-mon-narrow-relative+0":"bu pzt.","field-mon-narrow-relative+1":"gelecek pzt.","field-year-short-relative+-1":"geçen yıl","field-zone":"saat dilimi","dateFormatItem-MMMEd":"d MMM E","field-weekOfMonth-narrow":"ayın haftası","field-weekday-narrow":"haftanın günü","field-quarter-narrow":"çyr.","field-sun-short-relative+-1":"geçen paz.","field-day-relative+-1":"dün","dayPeriods-standAlone-abbr-am":"ÖÖ","field-day-relative+-2":"evvelsi gün","field-weekday-short":"haftanın günü","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-day-short":"gün","field-week-narrow":"hf.","field-era":"çağ","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma","dayPeriods-standAlone-wide-am":"ÖÖ"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/japanese.js b/lib/dojo/cldr/nls/tr/japanese.js
index dc9bddbb7..c66f28f7b 100644
--- a/lib/dojo/cldr/nls/tr/japanese.js
+++ b/lib/dojo/cldr/nls/tr/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/japanese",{"field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","field-dayperiod":"ÖÖ/ÖS","field-sun-relative+-1":"geçen pazar","field-mon-relative+-1":"geçen pazartesi","field-minute":"Dakika","field-day-relative+-1":"dün","field-weekday":"Haftanın Günü","field-day-relative+-2":"evvelsi gün","field-era":"Miladi Dönem","field-hour":"Saat","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-wed-relative+-1":"geçen çarşamba","field-day-relative+0":"bugün","field-day-relative+1":"yarın","field-day-relative+2":"öbür gün","dateFormat-long":"d MMMM y G","field-tue-relative+0":"bu salı","field-zone":"Saat Dilimi","field-tue-relative+1":"gelecek salı","field-week-relative+-1":"geçen hafta","dateFormat-medium":"d MMM y G","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-sat-relative+-1":"geçen cumartesi","field-year-relative+-1":"geçen yıl","field-year":"Yıl","field-fri-relative+0":"bu cuma","field-fri-relative+1":"gelecek cuma","field-week":"Hafta","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta","field-month-relative+0":"bu ay","field-month":"Ay","field-month-relative+1":"gelecek ay","field-fri-relative+-1":"geçen cuma","field-second":"Saniye","field-tue-relative+-1":"geçen salı","field-day":"Gün","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-thu-relative+0":"bu perşembe","field-second-relative+0":"şimdi","dateFormat-short":"d.MM.y G","field-thu-relative+1":"gelecek perşembe","dateFormat-full":"d MMMM y G EEEE","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-month-relative+-1":"geçen ay","field-thu-relative+-1":"geçen perşembe"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/japanese",{"field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","field-tue-relative+-1":"geçen salı","field-year":"yıl","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-minute":"dakika","field-month-narrow-relative+-1":"geçen ay","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","field-thu-short-relative+0":"bu per.","field-day-short-relative+-1":"dün","field-thu-short-relative+1":"gelecek per.","field-day-relative+0":"bugün","field-day-short-relative+-2":"evvelsi gün","field-day-relative+1":"yarın","field-week-narrow-relative+0":"bu hf.","field-day-relative+2":"öbür gün","field-week-narrow-relative+1":"gelecek hf.","field-wed-narrow-relative+-1":"geçen çar.","field-year-narrow":"yıl","field-era-short":"çağ","field-year-narrow-relative+0":"bu yıl","field-tue-relative+0":"bu salı","field-year-narrow-relative+1":"gelecek yıl","field-tue-relative+1":"gelecek salı","field-weekdayOfMonth":"ayın günü","field-second-short":"sn.","field-weekdayOfMonth-narrow":"ayın günü","field-week-relative+0":"bu hafta","field-month-relative+0":"bu ay","field-week-relative+1":"gelecek hafta","field-month-relative+1":"gelecek ay","field-sun-narrow-relative+0":"bu paz.","field-mon-short-relative+0":"bu pzt.","field-sun-narrow-relative+1":"gelecek paz.","field-mon-short-relative+1":"gelecek pzt.","field-second-relative+0":"şimdi","field-weekOfMonth":"ayın haftası","field-month-short":"ay","field-day":"gün","field-dayOfYear-short":"yılın günü","field-year-relative+-1":"geçen yıl","field-sat-short-relative+-1":"geçen cmt.","field-hour-relative+0":"bu saat","field-wed-relative+-1":"geçen çarşamba","field-sat-narrow-relative+-1":"geçen cmt.","field-second":"saniye","dateFormat-long":"d MMMM y G","field-quarter":"çeyrek","field-week-short":"hf.","field-day-narrow-relative+0":"bugün","field-day-narrow-relative+1":"yarın","field-day-narrow-relative+2":"öbür gün","field-tue-short-relative+0":"bu salı","field-tue-short-relative+1":"gelecek salı","field-month-short-relative+-1":"geçen ay","field-mon-relative+-1":"geçen pazartesi","field-month":"ay","field-day-narrow":"gün","field-minute-short":"dk.","field-dayperiod":"ÖÖ/ÖS","field-sat-short-relative+0":"bu cmt.","field-sat-short-relative+1":"gelecek cmt.","dateFormat-medium":"d MMM y G","field-second-narrow":"sn.","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+-1":"dün","field-year-short":"yıl","field-day-narrow-relative+-2":"evvelsi gün","field-quarter-relative+-1":"geçen çeyrek","field-dayperiod-narrow":"ÖÖ/ÖS","field-week-narrow-relative+-1":"geçen hf.","field-dayOfYear":"yılın günü","field-sat-relative+-1":"geçen cumartesi","field-hour":"saat","dateFormat-full":"d MMMM y G EEEE","field-month-relative+-1":"geçen ay","field-quarter-short":"çyr.","field-sat-narrow-relative+0":"bu cmt.","field-fri-relative+0":"bu cuma","field-sat-narrow-relative+1":"gelecek cmt.","field-fri-relative+1":"gelecek cuma","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-sun-short-relative+0":"bu paz.","field-sun-short-relative+1":"gelecek paz.","field-week-relative+-1":"geçen hafta","field-quarter-short-relative+-1":"geçen çyr.","field-quarter-relative+0":"bu çeyrek","field-minute-relative+0":"bu dakika","field-quarter-relative+1":"gelecek çeyrek","field-wed-short-relative+-1":"geçen çar.","dateFormat-short":"d.MM.y G","field-thu-short-relative+-1":"geçen per.","field-year-narrow-relative+-1":"geçen yıl","field-mon-narrow-relative+-1":"geçen pzt.","field-thu-narrow-relative+-1":"geçen per.","field-tue-narrow-relative+-1":"geçen salı","field-weekOfMonth-short":"ayın haftası","field-wed-short-relative+0":"bu çar.","field-wed-short-relative+1":"gelecek çar.","field-sun-relative+-1":"geçen pazar","field-weekday":"haftanın günü","field-day-short-relative+0":"bugün","field-quarter-narrow-relative+0":"bu çyr.","field-sat-relative+0":"bu cumartesi","field-day-short-relative+1":"yarın","field-quarter-narrow-relative+1":"gelecek çyr.","field-sat-relative+1":"gelecek cumartesi","field-day-short-relative+2":"öbür gün","field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","field-dayOfYear-narrow":"yılın günü","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","field-weekdayOfMonth-short":"ayın günü","field-zone-narrow":"dilim","field-thu-narrow-relative+0":"bu per.","field-thu-narrow-relative+1":"gelecek per.","field-sun-narrow-relative+-1":"geçen paz.","field-mon-short-relative+-1":"geçen pzt.","field-thu-relative+0":"bu perşembe","field-thu-relative+1":"gelecek perşembe","field-fri-short-relative+-1":"geçen cuma","field-thu-relative+-1":"geçen perşembe","field-week":"hafta","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-quarter-narrow-relative+-1":"geçen çyr.","field-year-short-relative+0":"bu yıl","field-dayperiod-short":"ÖÖ/ÖS","field-year-short-relative+1":"gelecek yıl","field-fri-short-relative+0":"bu cuma","field-fri-short-relative+1":"gelecek cuma","field-week-short-relative+-1":"geçen hf.","field-hour-short":"sa.","field-zone-short":"dilim","field-month-narrow":"ay","field-hour-narrow":"sa.","field-fri-narrow-relative+-1":"geçen cuma","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-era-narrow":"çağ","field-fri-relative+-1":"geçen cuma","field-tue-short-relative+-1":"geçen salı","field-minute-narrow":"dk.","field-mon-narrow-relative+0":"bu pzt.","field-mon-narrow-relative+1":"gelecek pzt.","field-year-short-relative+-1":"geçen yıl","field-zone":"saat dilimi","field-weekOfMonth-narrow":"ayın haftası","field-weekday-narrow":"haftanın günü","field-quarter-narrow":"çyr.","field-sun-short-relative+-1":"geçen paz.","field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","field-weekday-short":"haftanın günü","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-day-short":"gün","field-week-narrow":"hf.","field-era":"çağ","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/number.js b/lib/dojo/cldr/nls/tr/number.js
index d6354dd11..64951e085 100644
--- a/lib/dojo/cldr/nls/tr/number.js
+++ b/lib/dojo/cldr/nls/tr/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/number",{"group":".","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"%#,##0","list":";","infinity":"∞","minusSign":"-","decimal":",","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","plusSign":"+","decimalFormat-long":"000 trilyon","decimalFormat-short":"000 Tn"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000 Tn","nan":"NaN","plusSign":"+","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":".","percentFormat":"%#,##0","decimalFormat-long":"000 trilyon","decimalFormat":"#,##0.###","currencyFormat-short":"000 Tn ¤","timeSeparator":":","decimal":",","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/persian.js b/lib/dojo/cldr/nls/tr/persian.js
index 6183a5ada..3e5b2fb79 100644
--- a/lib/dojo/cldr/nls/tr/persian.js
+++ b/lib/dojo/cldr/nls/tr/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/persian",{"days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"months-format-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-second-relative+0":"şimdi","quarters-standAlone-narrow":["1.","2.","3.","4."],"field-weekday":"Haftanın Günü","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-MMMEd":"d MMM E","field-tue-relative+-1":"geçen salı","days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"dateFormat-long":"G d MMMM y","field-fri-relative+-1":"geçen cuma","field-wed-relative+-1":"geçen çarşamba","months-format-wide":["Ferverdin","Ordibeheşt","Hordad","Tir","Mordad","Şehriver","Mehr","Aban","Azer","Dey","Behmen","Esfend"],"dateFormatItem-yyyyQQQ":"G y/QQQ","dayPeriods-format-wide-pm":"ÖS","dateFormat-full":"G d MMMM y EEEE","dateFormatItem-yyyyMEd":"GGGGG dd.MM.y E","field-thu-relative+-1":"geçen perşembe","dateFormatItem-Md":"dd/MM","field-era":"Miladi Dönem","months-standAlone-wide":["Ferverdin","Ordibeheşt","Hordad","Tir","Mordad","Şehriver","Mehr","Aban","Azer","Dey","Behmen","Esfend"],"quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"field-year":"Yıl","field-hour":"Saat","months-format-abbr":["Ferverdin","Ordibeheşt","Hordad","Tir","Mordad","Şehriver","Mehr","Aban","Azer","Dey","Behmen","Esfend"],"field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","field-day-relative+0":"bugün","field-thu-relative+0":"bu perşembe","field-day-relative+1":"yarın","field-thu-relative+1":"gelecek perşembe","dateFormatItem-GyMMMd":"G d MMM y","field-day-relative+2":"öbür gün","months-standAlone-abbr":["Ferverdin","Ordibeheşt","Hordad","Tir","Mordad","Şehriver","Mehr","Aban","Azer","Dey","Behmen","Esfend"],"quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-yyyyMMMEd":"G d MMM y E","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-yyyyMMM":"G MMM y","dateFormatItem-yyyyMMMd":"G dd MMM y","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"field-minute":"Dakika","field-dayperiod":"ÖÖ/ÖS","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"quarters-format-narrow":["1.","2.","3.","4."],"field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","dateFormatItem-MMMd":"d MMM","dateFormatItem-MEd":"dd/MM E","field-fri-relative+0":"bu cuma","field-fri-relative+1":"gelecek cuma","field-day":"Gün","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-zone":"Saat Dilimi","months-standAlone-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-year-relative+-1":"geçen yıl","field-month-relative+-1":"geçen ay","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"dateFormatItem-yyyyMd":"GGGGG dd.MM.y","field-month":"Ay","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"field-tue-relative+0":"bu salı","field-tue-relative+1":"gelecek salı","dayPeriods-format-wide-am":"ÖÖ","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","dateFormat-short":"GGGGG d.MM.y","field-second":"Saniye","field-sat-relative+-1":"geçen cumartesi","field-sun-relative+-1":"geçen pazar","field-month-relative+0":"bu ay","field-month-relative+1":"gelecek ay","dateFormatItem-Ed":"d E","field-week":"Hafta","dateFormat-medium":"G d MMM y","field-year-relative+0":"bu yıl","field-week-relative+-1":"geçen hafta","dateFormatItem-yyyyM":"GGGGG M/y","field-year-relative+1":"gelecek yıl","dateFormatItem-yyyyQQQQ":"G y/QQQQ","dateFormatItem-GyMMM":"G MMM y","field-mon-relative+-1":"geçen pazartesi","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/persian",{"field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","field-tue-relative+-1":"geçen salı","field-year":"yıl","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-minute":"dakika","field-month-narrow-relative+-1":"geçen ay","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","field-thu-short-relative+0":"bu per.","field-day-short-relative+-1":"dün","field-thu-short-relative+1":"gelecek per.","field-day-relative+0":"bugün","field-day-short-relative+-2":"evvelsi gün","field-day-relative+1":"yarın","field-week-narrow-relative+0":"bu hf.","field-day-relative+2":"öbür gün","field-week-narrow-relative+1":"gelecek hf.","field-wed-narrow-relative+-1":"geçen çar.","dateFormatItem-EBhms":"E B h:mm:ss","field-year-narrow":"yıl","field-era-short":"çağ","field-year-narrow-relative+0":"bu yıl","field-tue-relative+0":"bu salı","field-year-narrow-relative+1":"gelecek yıl","field-tue-relative+1":"gelecek salı","field-weekdayOfMonth":"ayın günü","field-second-short":"sn.","dayPeriods-format-narrow-am":"öö","dateFormatItem-MMMd":"d MMM","field-weekdayOfMonth-narrow":"ayın günü","dayPeriods-format-abbr-am":"ÖÖ","field-week-relative+0":"bu hafta","field-month-relative+0":"bu ay","field-week-relative+1":"gelecek hafta","field-month-relative+1":"gelecek ay","field-sun-narrow-relative+0":"bu paz.","field-mon-short-relative+0":"bu pzt.","field-sun-narrow-relative+1":"gelecek paz.","field-mon-short-relative+1":"gelecek pzt.","field-second-relative+0":"şimdi","dateFormatItem-yyyyQQQ":"G y/QQQ","months-standAlone-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"eraNames":["AP"],"field-weekOfMonth":"ayın haftası","dayPeriods-standAlone-abbr-pm":"ÖS","field-month-short":"ay","dateFormatItem-GyMMMEd":"G d MMM y E","dateFormatItem-yyyyMd":"GGGGG dd.MM.y","field-day":"gün","field-dayOfYear-short":"yılın günü","field-year-relative+-1":"geçen yıl","dayPeriods-format-wide-am":"ÖÖ","field-sat-short-relative+-1":"geçen cmt.","field-hour-relative+0":"bu saat","dateFormatItem-yyyyMEd":"GGGGG dd.MM.y E","field-wed-relative+-1":"geçen çarşamba","field-sat-narrow-relative+-1":"geçen cmt.","field-second":"saniye","days-standAlone-narrow":["P","P","S","Ç","P","C","C"],"dayPeriods-standAlone-wide-pm":"ÖS","dateFormat-long":"G d MMMM y","dateFormatItem-GyMMMd":"G d MMM y","field-quarter":"çeyrek","field-week-short":"hf.","field-day-narrow-relative+0":"bugün","field-day-narrow-relative+1":"yarın","field-day-narrow-relative+2":"öbür gün","quarters-standAlone-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"days-format-narrow":["P","P","S","Ç","P","C","C"],"field-tue-short-relative+0":"bu salı","field-tue-short-relative+1":"gelecek salı","field-month-short-relative+-1":"geçen ay","field-mon-relative+-1":"geçen pazartesi","dateFormatItem-GyMMM":"G MMM y","field-month":"ay","field-day-narrow":"gün","field-minute-short":"dk.","field-dayperiod":"ÖÖ/ÖS","field-sat-short-relative+0":"bu cmt.","field-sat-short-relative+1":"gelecek cmt.","dayPeriods-format-narrow-pm":"ös","dateFormat-medium":"G d MMM y","dateFormatItem-yyyyMMMM":"G MMMM y","eraAbbr":["AP"],"quarters-standAlone-abbr":["Ç1","Ç2","Ç3","Ç4"],"dayPeriods-format-abbr-pm":"ÖS","dateFormatItem-yyyyM":"GGGGG M/y","field-second-narrow":"sn.","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+-1":"dün","field-year-short":"yıl","field-day-narrow-relative+-2":"evvelsi gün","months-format-narrow":["O","Ş","M","N","M","H","T","A","E","E","K","A"],"field-quarter-relative+-1":"geçen çeyrek","dateFormatItem-yyyyMMMd":"G dd MMM y","field-dayperiod-narrow":"ÖÖ/ÖS","dayPeriods-standAlone-narrow-am":"ÖÖ","field-week-narrow-relative+-1":"geçen hf.","days-format-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"quarters-format-narrow":["1.","2.","3.","4."],"dayPeriods-format-wide-pm":"ÖS","field-dayOfYear":"yılın günü","field-sat-relative+-1":"geçen cumartesi","dateFormatItem-Md":"dd/MM","field-hour":"saat","months-format-wide":["Ferverdin","Ordibeheşt","Hordad","Tir","Mordad","Şehriver","Mehr","Aban","Azer","Dey","Behmen","Esfend"],"dateFormat-full":"G d MMMM y EEEE","field-month-relative+-1":"geçen ay","field-quarter-short":"çyr.","field-sat-narrow-relative+0":"bu cmt.","field-fri-relative+0":"bu cuma","field-sat-narrow-relative+1":"gelecek cmt.","field-fri-relative+1":"gelecek cuma","dateFormatItem-EBhm":"E B h:mm","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-sun-short-relative+0":"bu paz.","field-sun-short-relative+1":"gelecek paz.","field-week-relative+-1":"geçen hafta","field-quarter-short-relative+-1":"geçen çyr.","months-format-abbr":["Ferverdin","Ordibeheşt","Hordad","Tir","Mordad","Şehriver","Mehr","Aban","Azer","Dey","Behmen","Esfend"],"field-quarter-relative+0":"bu çeyrek","field-minute-relative+0":"bu dakika","field-quarter-relative+1":"gelecek çeyrek","field-wed-short-relative+-1":"geçen çar.","dateFormat-short":"GGGGG d.MM.y","dateFormatItem-Bh":"B h","field-thu-short-relative+-1":"geçen per.","field-year-narrow-relative+-1":"geçen yıl","days-standAlone-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"dateFormatItem-yyyyMMMEd":"G d MMM y E","field-mon-narrow-relative+-1":"geçen pzt.","dateFormatItem-MMMMd":"dd MMMM","field-thu-narrow-relative+-1":"geçen per.","field-tue-narrow-relative+-1":"geçen salı","field-weekOfMonth-short":"ayın haftası","dayPeriods-standAlone-narrow-pm":"ÖS","field-wed-short-relative+0":"bu çar.","months-standAlone-wide":["Ferverdin","Ordibeheşt","Hordad","Tir","Mordad","Şehriver","Mehr","Aban","Azer","Dey","Behmen","Esfend"],"field-wed-short-relative+1":"gelecek çar.","field-sun-relative+-1":"geçen pazar","days-standAlone-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"field-weekday":"haftanın günü","field-day-short-relative+0":"bugün","field-quarter-narrow-relative+0":"bu çyr.","field-sat-relative+0":"bu cumartesi","field-day-short-relative+1":"yarın","field-quarter-narrow-relative+1":"gelecek çyr.","field-sat-relative+1":"gelecek cumartesi","field-day-short-relative+2":"öbür gün","field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","months-standAlone-abbr":["Ferverdin","Ordibeheşt","Hordad","Tir","Mordad","Şehriver","Mehr","Aban","Azer","Dey","Behmen","Esfend"],"field-dayOfYear-narrow":"yılın günü","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","field-weekdayOfMonth-short":"ayın günü","dateFormatItem-MEd":"dd/MM E","field-zone-narrow":"dilim","field-thu-narrow-relative+0":"bu per.","field-thu-narrow-relative+1":"gelecek per.","field-sun-narrow-relative+-1":"geçen paz.","field-mon-short-relative+-1":"geçen pzt.","field-thu-relative+0":"bu perşembe","field-thu-relative+1":"gelecek perşembe","field-fri-short-relative+-1":"geçen cuma","field-thu-relative+-1":"geçen perşembe","field-week":"hafta","quarters-standAlone-narrow":["1.","2.","3.","4."],"quarters-format-wide":["1. çeyrek","2. çeyrek","3. çeyrek","4. çeyrek"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-quarter-narrow-relative+-1":"geçen çyr.","field-year-short-relative+0":"bu yıl","field-dayperiod-short":"ÖÖ/ÖS","dateFormatItem-yyyyMMM":"G MMM y","field-year-short-relative+1":"gelecek yıl","field-fri-short-relative+0":"bu cuma","field-fri-short-relative+1":"gelecek cuma","days-standAlone-short":["Pa","Pt","Sa","Ça","Pe","Cu","Ct"],"field-week-short-relative+-1":"geçen hf.","dateFormatItem-yyyyQQQQ":"G y/QQQQ","field-hour-short":"sa.","field-zone-short":"dilim","quarters-format-abbr":["Ç1","Ç2","Ç3","Ç4"],"field-month-narrow":"ay","field-hour-narrow":"sa.","field-fri-narrow-relative+-1":"geçen cuma","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-era-narrow":"çağ","field-fri-relative+-1":"geçen cuma","eraNarrow":"AP","dateFormatItem-Bhms":"B h:mm:ss","field-tue-short-relative+-1":"geçen salı","field-minute-narrow":"dk.","days-format-wide":["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],"field-mon-narrow-relative+0":"bu pzt.","field-mon-narrow-relative+1":"gelecek pzt.","field-year-short-relative+-1":"geçen yıl","field-zone":"saat dilimi","dateFormatItem-MMMEd":"d MMM E","field-weekOfMonth-narrow":"ayın haftası","field-weekday-narrow":"haftanın günü","field-quarter-narrow":"çyr.","field-sun-short-relative+-1":"geçen paz.","field-day-relative+-1":"dün","dayPeriods-standAlone-abbr-am":"ÖÖ","field-day-relative+-2":"evvelsi gün","field-weekday-short":"haftanın günü","days-format-abbr":["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],"dateFormatItem-Bhm":"B h:mm","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-day-short":"gün","field-week-narrow":"hf.","field-era":"çağ","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma","dayPeriods-standAlone-wide-am":"ÖÖ"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/tr/roc.js b/lib/dojo/cldr/nls/tr/roc.js
index 131122194..35450b726 100644
--- a/lib/dojo/cldr/nls/tr/roc.js
+++ b/lib/dojo/cldr/nls/tr/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/tr/roc",{"field-sat-relative+0":"bu cumartesi","field-sat-relative+1":"gelecek cumartesi","field-dayperiod":"ÖÖ/ÖS","field-sun-relative+-1":"geçen pazar","field-mon-relative+-1":"geçen pazartesi","field-minute":"Dakika","field-day-relative+-1":"dün","field-weekday":"Haftanın Günü","field-day-relative+-2":"evvelsi gün","field-era":"Miladi Dönem","field-hour":"Saat","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-wed-relative+-1":"geçen çarşamba","field-day-relative+0":"bugün","field-day-relative+1":"yarın","eraAbbr":["Before R.O.C.","Minguo"],"field-day-relative+2":"öbür gün","field-tue-relative+0":"bu salı","field-zone":"Saat Dilimi","field-tue-relative+1":"gelecek salı","field-week-relative+-1":"geçen hafta","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-sat-relative+-1":"geçen cumartesi","field-year-relative+-1":"geçen yıl","field-year":"Yıl","field-fri-relative+0":"bu cuma","field-fri-relative+1":"gelecek cuma","field-week":"Hafta","field-week-relative+0":"bu hafta","field-week-relative+1":"gelecek hafta","field-month-relative+0":"bu ay","field-month":"Ay","field-month-relative+1":"gelecek ay","field-fri-relative+-1":"geçen cuma","field-second":"Saniye","field-tue-relative+-1":"geçen salı","field-day":"Gün","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-thu-relative+0":"bu perşembe","field-second-relative+0":"şimdi","field-thu-relative+1":"gelecek perşembe","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-month-relative+-1":"geçen ay","field-thu-relative+-1":"geçen perşembe"}); \ No newline at end of file
+define("dojo/cldr/nls/tr/roc",{"field-quarter-short-relative+0":"bu çyr.","field-quarter-short-relative+1":"gelecek çyr.","field-tue-relative+-1":"geçen salı","field-year":"yıl","field-wed-relative+0":"bu çarşamba","field-wed-relative+1":"gelecek çarşamba","field-minute":"dakika","field-month-narrow-relative+-1":"geçen ay","field-tue-narrow-relative+0":"bu salı","field-tue-narrow-relative+1":"gelecek salı","field-thu-short-relative+0":"bu per.","field-day-short-relative+-1":"dün","field-thu-short-relative+1":"gelecek per.","field-day-relative+0":"bugün","field-day-short-relative+-2":"evvelsi gün","field-day-relative+1":"yarın","field-week-narrow-relative+0":"bu hf.","field-day-relative+2":"öbür gün","field-week-narrow-relative+1":"gelecek hf.","field-wed-narrow-relative+-1":"geçen çar.","field-year-narrow":"yıl","field-era-short":"çağ","field-year-narrow-relative+0":"bu yıl","field-tue-relative+0":"bu salı","field-year-narrow-relative+1":"gelecek yıl","field-tue-relative+1":"gelecek salı","field-weekdayOfMonth":"ayın günü","field-second-short":"sn.","field-weekdayOfMonth-narrow":"ayın günü","field-week-relative+0":"bu hafta","field-month-relative+0":"bu ay","field-week-relative+1":"gelecek hafta","field-month-relative+1":"gelecek ay","field-sun-narrow-relative+0":"bu paz.","field-mon-short-relative+0":"bu pzt.","field-sun-narrow-relative+1":"gelecek paz.","field-mon-short-relative+1":"gelecek pzt.","field-second-relative+0":"şimdi","eraNames":["R.O.C. Öncesi","Minguo"],"field-weekOfMonth":"ayın haftası","field-month-short":"ay","field-day":"gün","field-dayOfYear-short":"yılın günü","field-year-relative+-1":"geçen yıl","field-sat-short-relative+-1":"geçen cmt.","field-hour-relative+0":"bu saat","field-wed-relative+-1":"geçen çarşamba","field-sat-narrow-relative+-1":"geçen cmt.","field-second":"saniye","field-quarter":"çeyrek","field-week-short":"hf.","field-day-narrow-relative+0":"bugün","field-day-narrow-relative+1":"yarın","field-day-narrow-relative+2":"öbür gün","field-tue-short-relative+0":"bu salı","field-tue-short-relative+1":"gelecek salı","field-month-short-relative+-1":"geçen ay","field-mon-relative+-1":"geçen pazartesi","field-month":"ay","field-day-narrow":"gün","field-minute-short":"dk.","field-dayperiod":"ÖÖ/ÖS","field-sat-short-relative+0":"bu cmt.","field-sat-short-relative+1":"gelecek cmt.","eraAbbr":["Before R.O.C.","Minguo"],"field-second-narrow":"sn.","field-mon-relative+0":"bu pazartesi","field-mon-relative+1":"gelecek pazartesi","field-day-narrow-relative+-1":"dün","field-year-short":"yıl","field-day-narrow-relative+-2":"evvelsi gün","field-quarter-relative+-1":"geçen çeyrek","field-dayperiod-narrow":"ÖÖ/ÖS","field-week-narrow-relative+-1":"geçen hf.","field-dayOfYear":"yılın günü","field-sat-relative+-1":"geçen cumartesi","field-hour":"saat","field-month-relative+-1":"geçen ay","field-quarter-short":"çyr.","field-sat-narrow-relative+0":"bu cmt.","field-fri-relative+0":"bu cuma","field-sat-narrow-relative+1":"gelecek cmt.","field-fri-relative+1":"gelecek cuma","field-month-narrow-relative+0":"bu ay","field-month-narrow-relative+1":"gelecek ay","field-sun-short-relative+0":"bu paz.","field-sun-short-relative+1":"gelecek paz.","field-week-relative+-1":"geçen hafta","field-quarter-short-relative+-1":"geçen çyr.","field-quarter-relative+0":"bu çeyrek","field-minute-relative+0":"bu dakika","field-quarter-relative+1":"gelecek çeyrek","field-wed-short-relative+-1":"geçen çar.","field-thu-short-relative+-1":"geçen per.","field-year-narrow-relative+-1":"geçen yıl","field-mon-narrow-relative+-1":"geçen pzt.","field-thu-narrow-relative+-1":"geçen per.","field-tue-narrow-relative+-1":"geçen salı","field-weekOfMonth-short":"ayın haftası","field-wed-short-relative+0":"bu çar.","field-wed-short-relative+1":"gelecek çar.","field-sun-relative+-1":"geçen pazar","field-weekday":"haftanın günü","field-day-short-relative+0":"bugün","field-quarter-narrow-relative+0":"bu çyr.","field-sat-relative+0":"bu cumartesi","field-day-short-relative+1":"yarın","field-quarter-narrow-relative+1":"gelecek çyr.","field-sat-relative+1":"gelecek cumartesi","field-day-short-relative+2":"öbür gün","field-week-short-relative+0":"bu hf.","field-week-short-relative+1":"gelecek hf.","field-dayOfYear-narrow":"yılın günü","field-month-short-relative+0":"bu ay","field-month-short-relative+1":"gelecek ay","field-weekdayOfMonth-short":"ayın günü","field-zone-narrow":"dilim","field-thu-narrow-relative+0":"bu per.","field-thu-narrow-relative+1":"gelecek per.","field-sun-narrow-relative+-1":"geçen paz.","field-mon-short-relative+-1":"geçen pzt.","field-thu-relative+0":"bu perşembe","field-thu-relative+1":"gelecek perşembe","field-fri-short-relative+-1":"geçen cuma","field-thu-relative+-1":"geçen perşembe","field-week":"hafta","field-wed-narrow-relative+0":"bu çar.","field-wed-narrow-relative+1":"gelecek çar.","field-quarter-narrow-relative+-1":"geçen çyr.","field-year-short-relative+0":"bu yıl","field-dayperiod-short":"ÖÖ/ÖS","field-year-short-relative+1":"gelecek yıl","field-fri-short-relative+0":"bu cuma","field-fri-short-relative+1":"gelecek cuma","field-week-short-relative+-1":"geçen hf.","field-hour-short":"sa.","field-zone-short":"dilim","field-month-narrow":"ay","field-hour-narrow":"sa.","field-fri-narrow-relative+-1":"geçen cuma","field-year-relative+0":"bu yıl","field-year-relative+1":"gelecek yıl","field-era-narrow":"çağ","field-fri-relative+-1":"geçen cuma","field-tue-short-relative+-1":"geçen salı","field-minute-narrow":"dk.","field-mon-narrow-relative+0":"bu pzt.","field-mon-narrow-relative+1":"gelecek pzt.","field-year-short-relative+-1":"geçen yıl","field-zone":"saat dilimi","field-weekOfMonth-narrow":"ayın haftası","field-weekday-narrow":"haftanın günü","field-quarter-narrow":"çyr.","field-sun-short-relative+-1":"geçen paz.","field-day-relative+-1":"dün","field-day-relative+-2":"evvelsi gün","field-weekday-short":"haftanın günü","field-sun-relative+0":"bu pazar","field-sun-relative+1":"gelecek pazar","field-day-short":"gün","field-week-narrow":"hf.","field-era":"çağ","field-fri-narrow-relative+0":"bu cuma","field-fri-narrow-relative+1":"gelecek cuma"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/buddhist.js b/lib/dojo/cldr/nls/zh-hant/buddhist.js
index e820902b2..144c4b03f 100644
--- a/lib/dojo/cldr/nls/zh-hant/buddhist.js
+++ b/lib/dojo/cldr/nls/zh-hant/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/buddhist",{"days-standAlone-short":["日","一","二","三","四","五","六"],"field-second-relative+0":"現在","field-weekday":"週天","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","eraNarrow":["佛曆"],"field-tue-relative+-1":"上週二","days-format-short":["日","一","二","三","四","五","六"],"dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyyyQQQ":"Gy年QQQ","dayPeriods-format-wide-pm":"下午","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-thu-relative+-1":"上週四","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"中午","field-era":"年代","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第1季","第2季","第3季","第4季"],"timeFormat-long":"ah:mm:ss [z]","field-year":"年","field-hour":"小時","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","timeFormat-full":"ah:mm:ss [zzzz]","field-day-relative+0":"今天","field-thu-relative+0":"本週四","field-day-relative+1":"明天","field-thu-relative+1":"下週四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"後天","dateFormatItem-H":"H時","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["1季","2季","3季","4季"],"quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","timeFormat-medium":"ah:mm:ss","field-sun-relative+0":"本週日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"下週日","quarters-standAlone-abbr":["1季","2季","3季","4季"],"eraAbbr":["佛曆"],"field-minute":"分鐘","field-dayperiod":"上午/下午","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨天","dateFormatItem-h":"ah時","dayPeriods-format-narrow-am":"上午","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1}{0}","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"時區","dateFormatItem-y":"Gy年","field-year-relative+-1":"去年","field-month-relative+-1":"上個月","dateFormatItem-hm":"ah:mm","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"eraNames":["佛曆"],"days-format-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","dayPeriods-format-wide-am":"上午","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormat-short":"Gy/M/d","dayPeriods-format-narrow-noon":"中午","field-second":"秒","field-sat-relative+-1":"上週六","field-sun-relative+-1":"上週日","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上週","dateFormatItem-yyyyM":"Gy/M","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下午","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上週一","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/buddhist",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","timeFormat-short":"ah:mm","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-thu-short-relative+0":"本週四","field-day-short-relative+-1":"昨天","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"下週四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","dateFormatItem-EBhms":"E Bh:mm:ss","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dayPeriods-format-narrow-am":"上午","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"每月平日","dayPeriods-format-abbr-am":"上午","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","timeFormat-medium":"ah:mm:ss","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"Gy年QQQ","eraNames":["佛曆"],"field-weekOfMonth":"週","dayPeriods-standAlone-abbr-pm":"下午","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-yyyyMd":"Gy/M/d","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","dayPeriods-format-wide-am":"上午","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dayPeriods-standAlone-wide-pm":"下午","dateFormatItem-Ehms":"E ah:mm:ss","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dayPeriods-format-narrow-pm":"下午","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["佛曆"],"quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"dayPeriods-format-abbr-pm":"下午","dateFormatItem-yyyyM":"Gy/M","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"上午/下午","dayPeriods-standAlone-narrow-am":"上午","field-week-narrow-relative+-1":"上週","days-format-short":["日","一","二","三","四","五","六"],"dayPeriods-format-wide-pm":"下午","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-minute-narrow-relative+0":"這一分鐘","field-hour":"小時","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上個月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","dateFormatItem-EBhm":"E Bh:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","dateFormatItem-Ehm":"E ah:mm","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","timeFormat-long":"ah:mm:ss [z]","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"Gy/M/d","dateFormatItem-Bh":"Bh時","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"上週二","field-weekOfMonth-short":"週","dateFormatItem-H":"H時","dateFormatItem-yyyy":"Gy年","dayPeriods-standAlone-narrow-pm":"下午","dateFormatItem-M":"M月","field-wed-short-relative+0":"本週三","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateTimeFormat-full":"{1}{0}","field-second-narrow-relative+0":"現在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","dateFormatItem-h":"ah時","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","timeFormat-full":"ah:mm:ss [zzzz]","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"時區","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-fri-short-relative+-1":"上週五","dateFormatItem-hms":"ah:mm:ss","field-thu-relative+-1":"上週四","field-week":"週","quarters-format-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-Ed":"d日(E)","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","days-standAlone-short":["日","一","二","三","四","五","六"],"field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"小時","field-zone-short":"時區","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","eraNarrow":"佛曆","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","dayPeriods-standAlone-abbr-am":"上午","field-day-relative+-2":"前天","field-weekday-short":"週天","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五","dayPeriods-standAlone-wide-am":"上午"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/chinese.js b/lib/dojo/cldr/nls/zh-hant/chinese.js
index b5ac228d9..fb80da5d8 100644
--- a/lib/dojo/cldr/nls/zh-hant/chinese.js
+++ b/lib/dojo/cldr/nls/zh-hant/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/chinese",{"months-format-narrow":["正","二","三","四","五","六","七","八","九","十","冬","臘"],"field-second-relative+0":"現在","field-weekday":"週天","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-GyMMMEd":"rU年MMMdE","dateFormatItem-MMMEd":"MMMd日E","field-tue-relative+-1":"上週二","dateFormat-long":"rU年MMMd","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","months-format-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","臘月"],"dateFormatItem-yyyyQQQ":"rU年QQQQ","dateFormat-full":"rU年MMMdEEEE","dateFormatItem-yyyyMEd":"rU年MMMd,E","field-thu-relative+-1":"上週四","dateFormatItem-Md":"M/d","dateFormatItem-yMd":"r年MMMd","field-era":"年代","months-standAlone-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","臘月"],"field-year":"年","field-hour":"小時","months-format-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","臘月"],"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","field-day-relative+0":"今天","field-thu-relative+0":"本週四","field-day-relative+1":"明天","field-thu-relative+1":"下週四","dateFormatItem-GyMMMd":"r年MMMd","field-day-relative+2":"後天","months-standAlone-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","臘月"],"dateFormatItem-Gy":"rU年","dateFormatItem-yyyyMMMEd":"rU年MMMdE","dateFormatItem-M":"MMM","dateFormatItem-yyyyMMM":"rU年MMM","dateFormatItem-yyyyMMMd":"r年MMMd","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","field-minute":"分鐘","field-dayperiod":"上午/下午","dateFormatItem-d":"d日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","dateFormatItem-MMMd":"MMMd日","dateFormatItem-MEd":"M/dE","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","field-day":"日","field-zone":"時區","dateFormatItem-y":"rU年","months-standAlone-narrow":["正","二","三","四","五","六","七","八","九","十","冬","臘"],"field-year-relative+-1":"去年","field-month-relative+-1":"上個月","dateFormatItem-yyyyMd":"r年MMMd","field-month":"月","field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormat-short":"r/M/d","field-second":"秒","field-sat-relative+-1":"上週六","field-sun-relative+-1":"上週日","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormatItem-Ed":"d日E","field-week":"週","dateFormat-medium":"r年MMMd","field-year-relative+0":"今年","field-week-relative+-1":"上週","dateFormatItem-yyyyM":"rU年MMM","field-year-relative+1":"明年","dateFormatItem-yyyyQQQQ":"rU年QQQQ","dateFormatItem-GyMMM":"rU年MMM","field-mon-relative+-1":"上週一","dateFormatItem-yyyy":"rU年","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/chinese",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-ms":"mm:ss","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本週四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下週四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","dateFormatItem-EBhms":"E Bh:mm:ss","field-wed-narrow-relative+-1":"上週三","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dateFormatItem-MMMd":"MMMd日","field-weekdayOfMonth-narrow":"每月平日","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"rU年QQQQ","months-standAlone-narrow":["正","二","三","四","五","六","七","八","九","十","冬","臘"],"field-weekOfMonth":"週","field-month-short":"月","dateFormatItem-GyMMMEd":"rU年MMMdE","dateFormatItem-yyyyMd":"r年MMMd","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"rU年MMMd,E","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","dateFormat-long":"rU年MMMd","dateFormatItem-GyMMMd":"r年MMMd","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"rU年MMM","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dateFormat-medium":"r年MMMd","dateFormatItem-yyyyMMMM":"rU年MMMM","dateFormatItem-UMMM":"U年MMM","dateFormatItem-yyyyM":"rU年MMM","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-mon-relative+1":"下週一","field-day-narrow-relative+-2":"前天","months-format-narrow":["正","二","三","四","五","六","七","八","九","十","冬","臘"],"field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"r年MMMd","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上週","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"小時","field-minute-narrow-relative+0":"這一分鐘","months-format-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","臘月"],"dateFormat-full":"rU年MMMd EEEE","dateFormatItem-UMd":"U年MMMd","field-month-relative+-1":"上個月","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","dateFormatItem-EBhm":"E Bh:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","months-format-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","臘月"],"field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"r/M/d","dateFormatItem-Bh":"Bh時","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"rU年MMMdE","field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"MMMMd日","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","dateFormatItem-H":"HH時","field-weekOfMonth-short":"週","field-tue-narrow-relative+-1":"上週二","dateFormatItem-yyyy":"rU年","dateFormatItem-M":"MMM","months-standAlone-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","臘月"],"field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"現在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","dateFormatItem-h":"ah時","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","months-standAlone-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","臘月"],"field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","dateFormatItem-MEd":"M/dE","field-zone-narrow":"時區","dateFormatItem-y":"rU年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","dateFormatItem-hms":"ah:mm:ss","field-fri-short-relative+-1":"上週五","field-thu-relative+-1":"上週四","dateFormatItem-yMd":"r年MMMd","field-week":"週","dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"rU年MMM","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"rU年QQQQ","dateFormatItem-UMMMd":"U年MMMd","field-hour-short":"小時","field-zone-short":"時區","field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"MMMd日E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"週天","dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"rU年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","dateFormatItem-UM":"U年MMM","field-fri-narrow-relative+1":"下週五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/coptic.js b/lib/dojo/cldr/nls/zh-hant/coptic.js
index 778b728ac..2187e832f 100644
--- a/lib/dojo/cldr/nls/zh-hant/coptic.js
+++ b/lib/dojo/cldr/nls/zh-hant/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/coptic",{"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","field-dayperiod":"上午/下午","field-sun-relative+-1":"上週日","field-mon-relative+-1":"上週一","field-minute":"分鐘","field-day-relative+-1":"昨天","field-weekday":"週天","field-day-relative+-2":"前天","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"年代","field-hour":"小時","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-wed-relative+-1":"上週三","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"後天","field-tue-relative+0":"本週二","field-zone":"時區","field-tue-relative+1":"下週二","field-week-relative+-1":"上週","field-year-relative+0":"今年","field-year-relative+1":"明年","field-sat-relative+-1":"上週六","field-year-relative+-1":"去年","field-year":"年","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-week":"週","field-week-relative+0":"本週","field-week-relative+1":"下週","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-month-relative+0":"本月","field-month":"月","field-month-relative+1":"下個月","field-fri-relative+-1":"上週五","field-second":"秒","field-tue-relative+-1":"上週二","field-day":"日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-thu-relative+0":"本週四","field-second-relative+0":"現在","field-thu-relative+1":"下週四","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","field-month-relative+-1":"上個月","field-thu-relative+-1":"上週四"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/coptic",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本週四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下週四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"每月平日","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"G y年QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"field-weekOfMonth":"週","field-month-short":"月","dateFormatItem-GyMMMEd":"G y年M月d日 E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"G y/M/d(E)","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","dateFormat-long":"G y年M月d日","dateFormatItem-GyMMMd":"G y年M月d日","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"G y年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dateFormat-medium":"G y年M月d日","dateFormatItem-yyyyMMMM":"G y年M月","eraAbbr":["ERA0","ERA1"],"dateFormatItem-yyyyM":"G y/M","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"G y年M月d日","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上週","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"小時","field-minute-narrow-relative+0":"這一分鐘","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"dateFormat-full":"G y年M月d日 EEEE","field-month-relative+-1":"上個月","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"G y/M/d","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"G y年M月d日 E","field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","field-weekOfMonth-short":"週","field-tue-narrow-relative+-1":"上週二","dateFormatItem-yyyy":"G y年","dateFormatItem-M":"M月","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","dateTimeFormat-full":"{1}{0}","field-second-narrow-relative+0":"現在","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"時區","dateFormatItem-y":"G y年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-fri-short-relative+-1":"上週五","field-thu-relative+-1":"上週四","field-week":"週","dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"G y年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"G y年QQQQ","field-hour-short":"小時","field-zone-short":"時區","field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"M月d日 E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"週天","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"G y年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/currency.js b/lib/dojo/cldr/nls/zh-hant/currency.js
index fcbccbc09..05aff1ec9 100644
--- a/lib/dojo/cldr/nls/zh-hant/currency.js
+++ b/lib/dojo/cldr/nls/zh-hant/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/currency",{"HKD_displayName":"港幣","CHF_displayName":"瑞士法郎","JPY_symbol":"¥","CAD_displayName":"加幣","HKD_symbol":"HK$","CNY_displayName":"人民幣","USD_symbol":"$","AUD_displayName":"澳幣","JPY_displayName":"日圓","CAD_symbol":"CA$","USD_displayName":"美元","EUR_symbol":"€","CNY_symbol":"CN¥","GBP_displayName":"英鎊","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"歐元"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/currency",{"HKD_displayName":"港幣","CNY_displayName":"人民幣","JPY_displayName":"日圓","JPY_symbol":"¥","USD_displayName":"美元","CAD_symbol":"CA$","GBP_displayName":"英鎊","CHF_displayName":"瑞士法郎","CNY_symbol":"CN¥","EUR_displayName":"歐元","GBP_symbol":"£","CAD_displayName":"加幣","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"澳幣","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/dangi.js b/lib/dojo/cldr/nls/zh-hant/dangi.js
index 5d66faa45..69d50d0fa 100644
--- a/lib/dojo/cldr/nls/zh-hant/dangi.js
+++ b/lib/dojo/cldr/nls/zh-hant/dangi.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/dangi",{"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","field-dayperiod":"上午/下午","field-sun-relative+-1":"上週日","field-mon-relative+-1":"上週一","field-minute":"分鐘","field-day-relative+-1":"昨天","field-weekday":"週天","field-day-relative+-2":"前天","months-standAlone-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-era":"年代","field-hour":"小時","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","months-standAlone-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-relative+-1":"上週三","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"後天","dateFormat-long":"U年MMMd日","field-tue-relative+0":"本週二","field-zone":"時區","field-tue-relative+1":"下週二","field-week-relative+-1":"上週","dateFormat-medium":"U年MMMd日","field-year-relative+0":"今年","field-year-relative+1":"明年","field-sat-relative+-1":"上週六","field-year-relative+-1":"去年","field-year":"年","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","months-standAlone-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-week":"週","field-week-relative+0":"本週","field-week-relative+1":"下週","months-format-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-month-relative+0":"本月","field-month":"月","field-month-relative+1":"下個月","field-fri-relative+-1":"上週五","field-second":"秒","field-tue-relative+-1":"上週二","field-day":"日","months-format-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-thu-relative+0":"本週四","field-second-relative+0":"現在","dateFormat-short":"U/M/d","field-thu-relative+1":"下週四","dateFormat-full":"U年MMMd日EEEE","months-format-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","field-month-relative+-1":"上個月","field-thu-relative+-1":"上週四"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/dangi",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本週四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下週四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dateFormatItem-MMMd":"MMMd日","field-weekdayOfMonth-narrow":"每月平日","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"rU年QQQQ","months-standAlone-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-weekOfMonth":"週","field-month-short":"月","dateFormatItem-GyMMMEd":"rU年MMMdE","dateFormatItem-yyyyMd":"r年MMMd","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"rU年MMMd,E","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","dateFormat-long":"U年MMMd日","dateFormatItem-GyMMMd":"r年MMMd","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"rU年MMM","field-month":"月","field-day-narrow":"日","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dateFormat-medium":"U年MMMd日","dateFormatItem-yyyyMMMM":"rU年MMMM","dateFormatItem-UMMM":"U年MMM","dateFormatItem-yyyyM":"rU年MMM","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["正","二","三","四","五","六","七","八","九","十","十一","十二"],"field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"r年MMMd","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上週","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"小時","field-minute-narrow-relative+0":"這一分鐘","months-format-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormat-full":"U年MMMd日EEEE","dateFormatItem-UMd":"U年MMMd","field-month-relative+-1":"上個月","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","months-format-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"U/M/d","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"rU年MMMdE","field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"MMMMd日","field-thu-narrow-relative+-1":"上週四","field-weekOfMonth-short":"週","field-tue-narrow-relative+-1":"上週二","dateFormatItem-yyyy":"rU年","dateFormatItem-M":"MMM","months-standAlone-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"現在","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","months-standAlone-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","dateFormatItem-MEd":"M/dE","field-zone-narrow":"時區","dateFormatItem-y":"rU年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-fri-short-relative+-1":"上週五","field-thu-relative+-1":"上週四","dateFormatItem-yMd":"r年MMMd","field-week":"週","dateFormatItem-Ed":"d日E","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"rU年MMM","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"rU年QQQQ","dateFormatItem-UMMMd":"U年MMMd","field-hour-short":"小時","field-zone-short":"時區","field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"MMMd日E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"週天","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"rU年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","dateFormatItem-UM":"U年MMM","field-fri-narrow-relative+1":"下週五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/ethiopic-amete-alem.js b/lib/dojo/cldr/nls/zh-hant/ethiopic-amete-alem.js
new file mode 100644
index 000000000..a529c9cce
--- /dev/null
+++ b/lib/dojo/cldr/nls/zh-hant/ethiopic-amete-alem.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/zh-hant/ethiopic-amete-alem",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-thu-short-relative+0":"本週四","field-day-short-relative+-1":"昨天","field-thu-short-relative+1":"下週四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","field-weekdayOfMonth-narrow":"每月平日","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","eraNames":["ERA0"],"field-weekOfMonth":"週","field-month-short":"月","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","field-sat-narrow-relative+-1":"上週六","field-second":"秒","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","field-month":"月","field-day-narrow":"日","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","eraAbbr":["ERA0"],"field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上一季","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上週","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","field-hour":"小時","field-minute-narrow-relative+0":"這一分鐘","field-month-relative+-1":"上個月","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","field-thu-short-relative+-1":"上週四","field-year-narrow-relative+-1":"去年","field-mon-narrow-relative+-1":"上週一","field-thu-narrow-relative+-1":"上週四","field-tue-narrow-relative+-1":"上週二","field-weekOfMonth-short":"週","field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","field-second-narrow-relative+0":"現在","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-sat-relative+0":"本週六","field-day-short-relative+1":"明天","field-quarter-narrow-relative+1":"下一季","field-sat-relative+1":"下週六","field-day-short-relative+2":"後天","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","field-zone-narrow":"時區","field-thu-narrow-relative+0":"本週四","field-thu-narrow-relative+1":"下週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-fri-short-relative+-1":"上週五","field-thu-relative+-1":"上週四","field-week":"週","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","field-hour-short":"小時","field-zone-short":"時區","field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","eraNarrow":"ERA0","field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"週天","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/ethiopic.js b/lib/dojo/cldr/nls/zh-hant/ethiopic.js
index cabe176fa..ab82d7a31 100644
--- a/lib/dojo/cldr/nls/zh-hant/ethiopic.js
+++ b/lib/dojo/cldr/nls/zh-hant/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/ethiopic",{"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","field-dayperiod":"上午/下午","field-sun-relative+-1":"上週日","field-mon-relative+-1":"上週一","field-minute":"分鐘","field-day-relative+-1":"昨天","field-weekday":"週天","field-day-relative+-2":"前天","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"年代","field-hour":"小時","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-wed-relative+-1":"上週三","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"後天","field-tue-relative+0":"本週二","field-zone":"時區","field-tue-relative+1":"下週二","field-week-relative+-1":"上週","field-year-relative+0":"今年","field-year-relative+1":"明年","field-sat-relative+-1":"上週六","field-year-relative+-1":"去年","field-year":"年","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-week":"週","field-week-relative+0":"本週","field-week-relative+1":"下週","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-month-relative+0":"本月","field-month":"月","field-month-relative+1":"下個月","field-fri-relative+-1":"上週五","field-second":"秒","field-tue-relative+-1":"上週二","field-day":"日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-thu-relative+0":"本週四","field-second-relative+0":"現在","field-thu-relative+1":"下週四","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","field-month-relative+-1":"上個月","field-thu-relative+-1":"上週四"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/ethiopic",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本週四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下週四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"每月平日","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"G y年QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["ERA0","ERA1"],"field-weekOfMonth":"週","field-month-short":"月","dateFormatItem-GyMMMEd":"G y年M月d日 E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"G y/M/d(E)","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","dateFormat-long":"G y年M月d日","dateFormatItem-GyMMMd":"G y年M月d日","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"G y年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dateFormat-medium":"G y年M月d日","dateFormatItem-yyyyMMMM":"G y年M月","eraAbbr":["ERA0","ERA1"],"dateFormatItem-yyyyM":"G y/M","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"G y年M月d日","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上週","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"小時","field-minute-narrow-relative+0":"這一分鐘","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"dateFormat-full":"G y年M月d日 EEEE","field-month-relative+-1":"上個月","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"G y/M/d","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"G y年M月d日 E","field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","field-weekOfMonth-short":"週","field-tue-narrow-relative+-1":"上週二","dateFormatItem-yyyy":"G y年","dateFormatItem-M":"M月","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","dateTimeFormat-full":"{1}{0}","field-second-narrow-relative+0":"現在","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"時區","dateFormatItem-y":"G y年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-fri-short-relative+-1":"上週五","field-thu-relative+-1":"上週四","field-week":"週","dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"G y年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"G y年QQQQ","field-hour-short":"小時","field-zone-short":"時區","field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","eraNarrow":["ERA0","ERA1"],"field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"M月d日 E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"週天","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"G y年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/generic.js b/lib/dojo/cldr/nls/zh-hant/generic.js
index 78ea73190..48417a8a8 100644
--- a/lib/dojo/cldr/nls/zh-hant/generic.js
+++ b/lib/dojo/cldr/nls/zh-hant/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/generic",{"field-second-relative+0":"現在","field-weekday":"週天","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-GyMMMEd":"G y年M月d日 E","dateFormatItem-MMMEd":"M月d日 E","field-tue-relative+-1":"上週二","dateFormat-long":"G y年M月d日","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","dateFormatItem-yyyyQQQ":"G y年QQQ","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"G y年M月d日 EEEE","dateFormatItem-yyyyMEd":"G y/M/d(E)","field-thu-relative+-1":"上週四","dateFormatItem-Md":"M/d","field-era":"年代","field-year":"年","field-hour":"小時","field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","field-day-relative+0":"今天","field-thu-relative+0":"本週四","field-day-relative+1":"明天","dateFormatItem-GyMMMd":"G y年M月d日","field-day-relative+2":"後天","field-thu-relative+1":"下週四","dateFormatItem-H":"H時","dateFormatItem-Gy":"G y年","dateFormatItem-yyyyMMMEd":"G y年M月d日 E","dateFormatItem-M":"M月","dateFormatItem-yyyyMMM":"G y年M月","dateFormatItem-yyyyMMMd":"G y年M月d日","field-sun-relative+0":"本週日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"下週日","field-minute":"分鐘","field-dayperiod":"上午/下午","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨天","dateFormatItem-h":"ah時","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","field-day":"日","field-zone":"時區","dateFormatItem-y":"G y年","field-year-relative+-1":"去年","field-month-relative+-1":"上個月","dateFormatItem-hm":"ah:mm","dateFormatItem-yyyyMd":"G y/M/d","field-month":"月","dateFormatItem-MMM":"LLL","field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormat-short":"G y/M/d","field-second":"秒","field-sat-relative+-1":"上週六","field-sun-relative+-1":"上週日","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"G y年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上週","dateFormatItem-yyyyM":"G y/M","field-year-relative+1":"明年","dateFormatItem-yyyyQQQQ":"G y年QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-GyMMM":"G y年M月","field-mon-relative+-1":"上週一","dateFormatItem-yyyy":"G y年","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/generic",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-ms":"mm:ss","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本週四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下週四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","dateFormatItem-EBhms":"E Bh:mm:ss","field-wed-narrow-relative+-1":"上週三","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"每月平日","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"G y年QQQ","field-weekOfMonth":"週","field-month-short":"月","dateFormatItem-GyMMMEd":"G y年M月d日 E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"G y/M/d(E)","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","dateFormatItem-Ehms":"E ah:mm:ss","dateFormat-long":"G y年M月d日","dateFormatItem-GyMMMd":"G y年M月d日","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"G y年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dateFormat-medium":"G y年M月d日","dateFormatItem-yyyyMMMM":"G y年M月","dateFormatItem-yyyyM":"G y/M","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"G y年M月d日","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上週","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"小時","field-minute-narrow-relative+0":"這一分鐘","dateFormat-full":"G y年M月d日 EEEE","field-month-relative+-1":"上個月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","dateFormatItem-EBhm":"E Bh:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","dateFormatItem-Ehm":"E ah:mm","field-minute-short-relative+0":"這一分鐘","field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"G y/M/d","dateFormatItem-Bh":"Bh時","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"G y年M月d日 E","field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","dateFormatItem-H":"H時","field-weekOfMonth-short":"週","field-tue-narrow-relative+-1":"上週二","dateFormatItem-yyyy":"G y年","dateFormatItem-M":"M月","field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","dateTimeFormat-full":"{1}{0}","field-second-narrow-relative+0":"現在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","dateFormatItem-h":"ah時","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"時區","dateFormatItem-y":"G y年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","dateFormatItem-hms":"ah:mm:ss","field-fri-short-relative+-1":"上週五","field-thu-relative+-1":"上週四","field-week":"週","dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"G y年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"G y年QQQQ","field-hour-short":"小時","field-zone-short":"時區","field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","field-mon-narrow-relative+0":"本週一","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"M月d日 E","field-weekOfMonth-narrow":"週","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"週天","dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"G y年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/gregorian.js b/lib/dojo/cldr/nls/zh-hant/gregorian.js
index 89460819d..e942e5f51 100644
--- a/lib/dojo/cldr/nls/zh-hant/gregorian.js
+++ b/lib/dojo/cldr/nls/zh-hant/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/gregorian",{"dateFormatItem-Ehm":"E a h:mm","days-standAlone-short":["日","一","二","三","四","五","六"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"現在","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"週天","dateFormatItem-yQQQ":"y年QQQ","dateFormatItem-yMEd":"y/M/d(E)","field-wed-relative+0":"本週三","dateFormatItem-GyMMMEd":"Gy年M月d日 E","dateFormatItem-MMMEd":"M月d日 E","field-wed-relative+1":"下週三","eraNarrow":["西元前","公元前","西元","公元"],"dateFormatItem-yMM":"y-MM","dayPeriods-format-wide-earlyMorning":"清晨","field-tue-relative+-1":"上週二","dayPeriods-format-wide-morning":"上午","days-format-short":["日","一","二","三","四","五","六"],"dateFormat-long":"y年M月d日","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"下午","dateFormat-full":"y年M月d日 EEEE","field-thu-relative+-1":"上週四","dateFormatItem-Md":"M/d","dayPeriods-format-narrow-midDay":"中午","dayPeriods-format-wide-noon":"中午","dateFormatItem-yMd":"y/M/d","dateFormatItem-yM":"y/M","field-era":"年代","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第1季","第2季","第3季","第4季"],"timeFormat-long":"ah:mm:ss [z]","dateFormatItem-yMMM":"y年M月","dateFormatItem-yQQQQ":"y年QQQQ","field-year":"年","dateFormatItem-MMdd":"MM/dd","field-hour":"小時","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","timeFormat-full":"ah:mm:ss [zzzz]","dayPeriods-format-narrow-morning":"上午","field-day-relative+0":"今天","field-day-relative+1":"明天","field-thu-relative+0":"本週四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"後天","field-thu-relative+1":"下週四","dateFormatItem-H":"H時","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["1季","2季","3季","4季"],"quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-Gy":"Gy年","dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"timeFormat-medium":"ah:mm:ss","field-sun-relative+0":"本週日","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1季","2季","3季","4季"],"field-sun-relative+1":"下週日","eraAbbr":["西元前","西元"],"field-minute":"分鐘","field-dayperiod":"上午/下午","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dayPeriods-format-wide-night":"晚上","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"昨天","dateFormatItem-h":"ah時","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"上午","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dayPeriods-format-wide-midDay":"中午","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"本週五","dateFormatItem-yMMMM":"y年M月","field-fri-relative+1":"下週五","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"時區","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-y":"y年","field-year-relative+-1":"去年","dayPeriods-format-narrow-night":"晚上","field-month-relative+-1":"上個月","dateFormatItem-hm":"ah:mm","dayPeriods-format-narrow-weeHours":"凌晨","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"eraNames":["西元前","西元"],"dateFormatItem-yMMMd":"y年M月d日","days-format-narrow":["日","一","二","三","四","五","六"],"dayPeriods-format-narrow-earlyMorning":"清晨","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-MMM":"LLL","field-month":"月","field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","dayPeriods-format-wide-am":"上午","dateFormatItem-EHm":"E HH:mm","dayPeriods-format-wide-weeHours":"凌晨","dateFormatItem-MMMMdd":"M月dd日","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormat-short":"y/M/d","dayPeriods-format-wide-afternoon":"下午","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E a h:mm:ss","dayPeriods-format-narrow-afternoon":"下午","dayPeriods-format-narrow-noon":"中午","field-second":"秒","field-sat-relative+-1":"上週六","dateFormatItem-yMMMEd":"y年M月d日 E","field-sun-relative+-1":"上週日","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormatItem-Ed":"d日(E)","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"週","dateFormat-medium":"y年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上週","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下午","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上週一","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/gregorian",{"dateFormatItem-yMMMM":"y年M月","field-thu-narrow-relative+0":"本週四","field-thu-narrow-relative+1":"下週四","field-sun-narrow-relative+0":"本週日","field-sun-narrow-relative+1":"下週日","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dayPeriods-standAlone-abbr-pm":"下午","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五","eraNarrow":["西元前","公元前","西元","公元"],"dateFormatItem-Hmv":"HH:mm [v]","dateFormatItem-hmsv":"ah:mm:ss [v]","dateFormatItem-yMMMd":"y年M月d日","dayPeriods-format-abbr-night1":"凌晨","dayPeriods-format-narrow-evening1":"晚上","days-standAlone-narrow":["日","一","二","三","四","五","六"],"days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dayPeriods-format-abbr-afternoon1":"中午","dayPeriods-format-wide-evening1":"晚上","dayPeriods-format-abbr-afternoon2":"下午","dateFormatItem-Ehm":"E ah:mm","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-wed-narrow-relative+-1":"上週三","dayPeriods-standAlone-wide-evening1":"晚上","field-minute-narrow-relative+0":"這一分鐘","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yMM":"y/MM","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","dateFormatItem-Ehms":"E ah:mm:ss","dayPeriods-standAlone-narrow-evening1":"晚上","dayPeriods-standAlone-abbr-afternoon1":"中午","dayPeriods-standAlone-abbr-afternoon2":"下午","field-thu-relative+0":"本週四","dayPeriods-standAlone-abbr-night1":"凌晨","field-thu-relative+1":"下週四","dayPeriods-format-wide-am":"上午","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","dateFormatItem-yMd":"y/M/d","field-thu-narrow-relative+-1":"上週四","field-quarter-relative+0":"這一季","field-quarter-relative+1":"下一季","field-sun-short-relative+0":"本週日","timeFormat-short":"ah:mm","field-sun-short-relative+1":"下週日","dateFormatItem-hms":"ah:mm:ss","dayPeriods-format-narrow-afternoon1":"中午","dateFormatItem-Md":"M/d","dayPeriods-format-narrow-afternoon2":"下午","dateFormatItem-Hmsv":"HH:mm:ss [v]","dateFormatItem-hmv":"ah:mm [v]","field-week-narrow":"週","field-hour-relative+0":"這一小時","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-mon-narrow-relative+-1":"上週一","field-minute-narrow":"分鐘","field-thu-short-relative+0":"本週四","field-mon-relative+0":"本週一","field-thu-short-relative+1":"下週四","field-mon-relative+1":"下週一","field-day-narrow-relative+0":"今天","field-era-short":"年代","field-day-narrow-relative+1":"明天","field-sat-narrow-relative+0":"本週六","field-day-narrow-relative+2":"後天","timeFormat-long":"ah:mm:ss [z]","field-sat-narrow-relative+1":"下週六","field-week-narrow-relative+0":"本週","field-week-narrow-relative+1":"下週","field-hour-short-relative+0":"這一小時","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-month":"月","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-weekday-narrow":"週天","dayPeriods-standAlone-narrow-afternoon1":"中午","dayPeriods-standAlone-narrow-afternoon2":"下午","field-year-relative+0":"今年","field-year-relative+1":"明年","dayPeriods-format-abbr-evening1":"晚上","dayPeriods-format-narrow-midnight":"午夜","dayPeriods-format-wide-midnight":"午夜","field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","dayPeriods-standAlone-abbr-evening1":"晚上","field-minute-short-relative+0":"這一分鐘","dateFormatItem-hm":"ah:mm","dayPeriods-standAlone-wide-midnight":"午夜","field-year-narrow":"年","field-tue-short-relative+0":"本週二","dayPeriods-standAlone-narrow-midnight":"午夜","field-tue-short-relative+1":"下週二","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","dateTimeFormat-full":"{1} {0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"E Bh:mm","dateFormatItem-H":"H時","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-M":"M月","field-wed-short-relative+0":"本週三","field-fri-short-relative+0":"本週五","field-wed-short-relative+1":"下週三","field-fri-short-relative+1":"下週五","field-weekOfMonth-short":"週","field-quarter-short-relative+-1":"上一季","field-year-short-relative+-1":"去年","dateFormatItem-Bhm":"Bh:mm","dayPeriods-format-wide-night1":"凌晨","dateTimeFormat-medium":"{1} {0}","field-quarter-narrow-relative+-1":"上一季","dateFormatItem-d":"d日","dayPeriods-format-abbr-pm":"下午","dateFormatItem-h":"ah時","quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"field-weekOfMonth-narrow":"週","dateFormatItem-y":"y年","field-minute-relative+0":"這一分鐘","field-year-short-relative+0":"今年","dateFormatItem-EBhms":"E Bh:mm:ss","field-year-short-relative+1":"明年","field-weekday":"週天","dayPeriods-format-narrow-pm":"下午","field-tue-narrow-relative+-1":"上週二","dateFormatItem-yMEd":"y/M/d(E)","dayPeriods-standAlone-wide-night1":"凌晨","field-year-narrow-relative+-1":"去年","field-sat-relative+-1":"上週六","dayPeriods-format-abbr-midnight":"午夜","dayPeriods-format-narrow-morning1":"清晨","dayPeriods-format-narrow-morning2":"上午","dayPeriods-format-wide-morning1":"清晨","dayPeriods-format-wide-morning2":"上午","dayPeriods-standAlone-abbr-midnight":"午夜","dayPeriods-standAlone-narrow-pm":"下午","dayPeriods-standAlone-wide-morning1":"清晨","field-mon-narrow-relative+0":"本週一","dayPeriods-standAlone-wide-morning2":"上午","field-mon-narrow-relative+1":"下週一","field-second":"秒","dateFormatItem-yMMMEd":"y年M月d日 E","field-year-relative+-1":"去年","field-weekdayOfMonth-short":"每月平日","dateFormat-short":"y/M/d","eraNames":["西元前","西元"],"field-second-short":"秒","field-thu-short-relative+-1":"上週四","field-zone":"時區","field-dayperiod-narrow":"上午/下午","field-sun-short-relative+-1":"上週日","dayPeriods-standAlone-narrow-morning1":"清晨","dayPeriods-standAlone-narrow-morning2":"上午","eraAbbr":["西元前","西元"],"field-week-short":"週","dayPeriods-standAlone-abbr-am":"上午","dayPeriods-standAlone-wide-pm":"下午","dateFormatItem-ms":"mm:ss","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"後天","field-day-short-relative+0":"今天","field-dayOfYear-short":"年天","field-day-short-relative+1":"明天","dateFormat-long":"y年M月d日","field-day-short-relative+2":"後天","field-sun-narrow-relative+-1":"上週日","field-second-relative+0":"現在","field-quarter-relative+-1":"上一季","dayPeriods-format-narrow-night1":"凌晨","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"dayPeriods-standAlone-narrow-night1":"凌晨","field-week-relative+-1":"上週","dayPeriods-format-abbr-morning1":"清晨","field-month-relative+-1":"上個月","dayPeriods-format-abbr-morning2":"上午","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"年","field-era":"年代","dayPeriods-standAlone-abbr-morning1":"清晨","dayPeriods-standAlone-abbr-morning2":"上午","days-standAlone-short":["日","一","二","三","四","五","六"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"y年QQQQ","field-day-short-relative+-1":"昨天","field-day-short-relative+-2":"前天","dateFormatItem-GyMMM":"Gy年M月","timeFormat-full":"ah:mm:ss [zzzz]","dateFormatItem-Bhms":"Bh:mm:ss","field-hour":"小時","field-dayOfYear-narrow":"年天","field-second-narrow-relative+0":"現在","field-quarter":"季","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","dateFormatItem-MMdd":"MM/dd","field-day":"日","field-mon-relative+-1":"上週一","field-dayOfYear":"年天","dateFormat-medium":"y年M月d日","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"y年M月","dateFormatItem-GyMMMd":"Gy年M月d日","dateFormatItem-MEd":"M/d(E)","field-tue-short-relative+-1":"上週二","field-year-short":"年","field-month-short":"月","dateFormatItem-MMMEd":"M月d日 E","dayPeriods-format-wide-afternoon1":"中午","dateFormatItem-MMMd":"M月d日","dayPeriods-format-wide-afternoon2":"下午","dateFormatItem-Bh":"Bh時","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dayPeriods-format-abbr-am":"上午","field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","dayPeriods-format-wide-pm":"下午","field-zone-short":"時區","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","dayPeriods-standAlone-wide-afternoon1":"中午","dayPeriods-standAlone-wide-afternoon2":"下午","field-fri-short-relative+-1":"上週五","field-month-narrow":"月","dayPeriods-format-narrow-am":"上午","field-month-narrow-relative+-1":"上個月","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"field-weekday-short":"週天","field-day-narrow-relative+-1":"昨天","field-day-narrow-relative+-2":"前天","field-quarter-short":"季","days-format-short":["日","一","二","三","四","五","六"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-EHm":"E HH:mm","field-quarter-narrow":"季","field-mon-short-relative+0":"本週一","field-mon-short-relative+1":"下週一","field-dayperiod-short":"上午/下午","dayPeriods-standAlone-narrow-am":"上午","field-week-narrow-relative+-1":"上週","field-thu-relative+-1":"上週四","field-fri-narrow-relative+-1":"上週五","field-mon-short-relative+-1":"上週一","timeFormat-medium":"ah:mm:ss","field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","dateFormatItem-Ed":"d E","field-wed-relative+-1":"上週三","field-weekOfMonth":"週","field-weekdayOfMonth-narrow":"每月平日","dayPeriods-standAlone-wide-am":"上午","dateFormatItem-yQQQ":"y年QQQ","field-fri-relative+-1":"上週五","field-minute":"分鐘","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"現在","quarters-format-wide":["第1季","第2季","第3季","第4季"],"field-day-short":"日","field-dayperiod":"上午/下午","field-hour-short":"小時","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-second-narrow":"秒","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormat-full":"y年M月d日 EEEE","field-era-narrow":"年代","field-sat-short-relative+-1":"上週六","field-week-short-relative+-1":"上週","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"y/M","field-sun-relative+-1":"上週日","field-wed-short-relative+-1":"上週三","field-weekdayOfMonth":"每月平日","field-quarter-narrow-relative+0":"這一季","dateFormatItem-GyMMMEd":"Gy年M月d日 E","field-quarter-narrow-relative+1":"下一季","field-sat-short-relative+0":"本週六","field-hour-narrow":"小時","field-sat-short-relative+1":"下週六","field-year-narrow-relative+0":"今年","field-year-narrow-relative+1":"明年","dateFormatItem-Gy":"Gy年","field-zone-narrow":"時區","field-tue-relative+-1":"上週二","field-minute-short":"分鐘","dateFormatItem-yw":"Y年的第w週","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"本週","field-week-relative+1":"下週","dateFormatItem-MMM":"LLL","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","field-sat-narrow-relative+-1":"上週六","quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"dateFormatItem-MMMMW":"MMMM的第W週","field-month-short-relative+-1":"上個月","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-MMMMd":"M月d日","field-week":"週","field-day-narrow":"日","field-hour-narrow-relative+0":"這一小時"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/hebrew.js b/lib/dojo/cldr/nls/zh-hant/hebrew.js
index 62bb55ba4..e4ae4500b 100644
--- a/lib/dojo/cldr/nls/zh-hant/hebrew.js
+++ b/lib/dojo/cldr/nls/zh-hant/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/hebrew",{"days-standAlone-short":["日","一","二","三","四","五","六"],"field-second-relative+0":"現在","field-weekday":"週天","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-GyMMMEd":"G y年M月d日 E","dateFormatItem-MMMEd":"M月d日 E","eraNarrow":["創世紀元"],"field-tue-relative+-1":"上週二","days-format-short":["日","一","二","三","四","五","六"],"dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","months-format-wide":["提斯利月","瑪西班月","基斯流月","提別月","細罷特月","亞達月 I","亞達月","尼散月","以珥月","西彎月","搭模斯月","埃波月","以祿月"],"dateFormatItem-yyyyQQQ":"G y年QQQ","dayPeriods-format-wide-pm":"下午","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"G y/M/d(E)","field-thu-relative+-1":"上週四","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"中午","field-era":"年代","months-standAlone-wide":["提斯利月","瑪西班月","基斯流月","提別月","細罷特月","亞達月 I","亞達月","尼散月","以珥月","西彎月","搭模斯月","埃波月","以祿月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第1季","第2季","第3季","第4季"],"timeFormat-long":"ah:mm:ss [z]","field-year":"年","field-hour":"小時","months-format-abbr-leap":"亞達月 II","months-format-abbr":["提斯利月","瑪西班月","基斯流月","提別月","細罷特月","亞達月 I","亞達月","尼散月","以珥月","西彎月","搭模斯月","埃波月","以祿月"],"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","timeFormat-full":"ah:mm:ss [zzzz]","field-day-relative+0":"今天","field-thu-relative+0":"本週四","field-day-relative+1":"明天","field-thu-relative+1":"下週四","dateFormatItem-GyMMMd":"G y年M月d日","field-day-relative+2":"後天","dateFormatItem-H":"H時","months-standAlone-abbr":["提斯利月","瑪西班月","基斯流月","提別月","細罷特月","亞達月 I","亞達月","尼散月","以珥月","西彎月","搭模斯月","埃波月","以祿月"],"quarters-format-abbr":["1季","2季","3季","4季"],"quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-Gy":"G y年","dateFormatItem-yyyyMMMEd":"G y年M月d日 E","dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMM":"G y年M月","dateFormatItem-yyyyMMMd":"G y年M月d日","months-standAlone-wide-leap":"亞達月 II","timeFormat-medium":"ah:mm:ss","field-sun-relative+0":"本週日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"下週日","quarters-standAlone-abbr":["1季","2季","3季","4季"],"eraAbbr":["創世紀元"],"field-minute":"分鐘","field-dayperiod":"上午/下午","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨天","dateFormatItem-h":"ah時","dayPeriods-format-narrow-am":"上午","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1}{0}","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"時區","months-standAlone-abbr-leap":"亞達月 II","dateFormatItem-y":"G y年","field-year-relative+-1":"去年","field-month-relative+-1":"上個月","dateFormatItem-hm":"ah:mm","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"eraNames":["創世紀元"],"days-format-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-yyyyMd":"G y/M/d","field-month":"月","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","dayPeriods-format-wide-am":"上午","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormat-short":"Gy/M/d","dayPeriods-format-narrow-noon":"中午","field-second":"秒","field-sat-relative+-1":"上週六","field-sun-relative+-1":"上週日","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上週","dateFormatItem-yyyyM":"G y/M","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下午","dateFormatItem-yyyyQQQQ":"G y年QQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","months-format-wide-leap":"亞達月 II","dateFormatItem-GyMMM":"G y年M月","field-mon-relative+-1":"上週一","dateFormatItem-yyyy":"G y年","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/hebrew",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","timeFormat-short":"ah:mm","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-thu-short-relative+0":"本週四","field-day-short-relative+-1":"昨天","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"下週四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","dateFormatItem-EBhms":"E Bh:mm:ss","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dayPeriods-format-narrow-am":"上午","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"每月平日","dayPeriods-format-abbr-am":"上午","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","timeFormat-medium":"ah:mm:ss","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"G y年QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["創世紀元"],"field-weekOfMonth":"週","dayPeriods-standAlone-abbr-pm":"下午","field-month-short":"月","dateFormatItem-GyMMMEd":"G y年M月d日 E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","dayPeriods-format-wide-am":"上午","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"G y/M/d(E)","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dayPeriods-standAlone-wide-pm":"下午","dateFormatItem-Ehms":"E ah:mm:ss","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"G y年M月d日","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"G y年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dayPeriods-format-narrow-pm":"下午","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"G y年M月","eraAbbr":["創世紀元"],"quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"dayPeriods-format-abbr-pm":"下午","dateFormatItem-yyyyM":"G y/M","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"G y年M月d日","field-dayperiod-narrow":"上午/下午","dayPeriods-standAlone-narrow-am":"上午","field-week-narrow-relative+-1":"上週","days-format-short":["日","一","二","三","四","五","六"],"dayPeriods-format-wide-pm":"下午","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-minute-narrow-relative+0":"這一分鐘","field-hour":"小時","months-format-wide":["提斯利月","瑪西班月","基斯流月","提別月","細罷特月","亞達月 I","亞達月","尼散月","以珥月","西彎月","搭模斯月","埃波月","以祿月"],"dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上個月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","dateFormatItem-EBhm":"E Bh:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","dateFormatItem-Ehm":"E ah:mm","months-format-abbr":["提斯利月","瑪西班月","基斯流月","提別月","細罷特月","亞達月 I","亞達月","尼散月","以珥月","西彎月","搭模斯月","埃波月","以祿月"],"field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","timeFormat-long":"ah:mm:ss [z]","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"Gy/M/d","dateFormatItem-Bh":"Bh時","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"G y年M月d日 E","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","field-weekOfMonth-short":"週","field-tue-narrow-relative+-1":"上週二","dateFormatItem-H":"H時","dateFormatItem-yyyy":"G y年","dayPeriods-standAlone-narrow-pm":"下午","dateFormatItem-M":"M月","months-standAlone-wide":["提斯利月","瑪西班月","基斯流月","提別月","細罷特月","亞達月 I","亞達月","尼散月","以珥月","西彎月","搭模斯月","埃波月","以祿月"],"field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateTimeFormat-full":"{1}{0}","field-second-narrow-relative+0":"現在","dateFormatItem-hm":"ah:mm","months-format-abbr-leap":"亞達月 II","dateFormatItem-d":"d日","field-weekday":"週天","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","dateFormatItem-h":"ah時","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","months-standAlone-abbr":["提斯利月","瑪西班月","基斯流月","提別月","細罷特月","亞達月 I","亞達月","尼散月","以珥月","西彎月","搭模斯月","埃波月","以祿月"],"months-format-wide-leap":"亞達月 II","months-format-narrow-leap":"7","field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","timeFormat-full":"ah:mm:ss [zzzz]","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"時區","dateFormatItem-y":"G y年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-fri-short-relative+-1":"上週五","dateFormatItem-hms":"ah:mm:ss","field-thu-relative+-1":"上週四","field-week":"週","quarters-format-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"G y年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","days-standAlone-short":["日","一","二","三","四","五","六"],"field-week-short-relative+-1":"上週","months-standAlone-abbr-leap":"亞達月 II","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"G y年QQQQ","field-hour-short":"小時","field-zone-short":"時區","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","eraNarrow":"創世紀元","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"M月d日 E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","months-standAlone-wide-leap":"亞達月 II","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","dayPeriods-standAlone-abbr-am":"上午","field-day-relative+-2":"前天","field-weekday-short":"週天","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"G y年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五","dayPeriods-standAlone-wide-am":"上午"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/indian.js b/lib/dojo/cldr/nls/zh-hant/indian.js
index 605642297..5d62b8eea 100644
--- a/lib/dojo/cldr/nls/zh-hant/indian.js
+++ b/lib/dojo/cldr/nls/zh-hant/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/indian",{"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","field-dayperiod":"上午/下午","field-sun-relative+-1":"上週日","field-mon-relative+-1":"上週一","field-minute":"分鐘","field-day-relative+-1":"昨天","field-weekday":"週天","field-day-relative+-2":"前天","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"年代","field-hour":"小時","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","months-standAlone-abbr":["制檀邏月","吠舍佉月","逝瑟吒月","頞沙荼月","室羅伐拏月","婆羅鉢陀月","頞涇縛庚闍月","迦剌底迦月","末伽始羅月","報沙月","磨祛月","頗勒窶拏月"],"field-wed-relative+-1":"上週三","field-day-relative+0":"今天","field-day-relative+1":"明天","eraAbbr":["印度曆"],"field-day-relative+2":"後天","field-tue-relative+0":"本週二","field-zone":"時區","field-tue-relative+1":"下週二","field-week-relative+-1":"上週","field-year-relative+0":"今年","field-year-relative+1":"明年","field-sat-relative+-1":"上週六","field-year-relative+-1":"去年","field-year":"年","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","months-standAlone-wide":["制檀邏月","吠舍佉月","逝瑟吒月","頞沙荼月","室羅伐拏月","婆羅鉢陀月","頞涇縛庚闍月","迦剌底迦月","末伽始羅月","報沙月","磨祛月","頗勒窶拏月"],"field-week":"週","field-week-relative+0":"本週","field-week-relative+1":"下週","months-format-abbr":["制檀邏月","吠舍佉月","逝瑟吒月","頞沙荼月","室羅伐拏月","婆羅鉢陀月","頞涇縛庚闍月","迦剌底迦月","末伽始羅月","報沙月","磨祛月","頗勒窶拏月"],"field-month-relative+0":"本月","field-month":"月","field-month-relative+1":"下個月","field-fri-relative+-1":"上週五","field-second":"秒","field-tue-relative+-1":"上週二","field-day":"日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-thu-relative+0":"本週四","field-second-relative+0":"現在","field-thu-relative+1":"下週四","months-format-wide":["制檀邏月","吠舍佉月","逝瑟吒月","頞沙荼月","室羅伐拏月","婆羅鉢陀月","頞涇縛庚闍月","迦剌底迦月","末伽始羅月","報沙月","磨祛月","頗勒窶拏月"],"field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","field-month-relative+-1":"上個月","field-thu-relative+-1":"上週四"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/indian",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本週四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下週四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"每月平日","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"G y年QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["印度曆"],"field-weekOfMonth":"週","field-month-short":"月","dateFormatItem-GyMMMEd":"G y年M月d日 E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"G y/M/d(E)","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","dateFormat-long":"G y年M月d日","dateFormatItem-GyMMMd":"G y年M月d日","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"G y年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dateFormat-medium":"G y年M月d日","dateFormatItem-yyyyMMMM":"G y年M月","eraAbbr":["印度曆"],"dateFormatItem-yyyyM":"G y/M","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"G y年M月d日","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上週","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"小時","field-minute-narrow-relative+0":"這一分鐘","months-format-wide":["制檀邏月","吠舍佉月","逝瑟吒月","頞沙荼月","室羅伐拏月","婆羅鉢陀月","頞涇縛庚闍月","迦剌底迦月","末伽始羅月","報沙月","磨祛月","頗勒窶拏月"],"dateFormat-full":"G y年M月d日 EEEE","field-month-relative+-1":"上個月","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","months-format-abbr":["制檀邏月","吠舍佉月","逝瑟吒月","頞沙荼月","室羅伐拏月","婆羅鉢陀月","頞涇縛庚闍月","迦剌底迦月","末伽始羅月","報沙月","磨祛月","頗勒窶拏月"],"field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"G y/M/d","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"G y年M月d日 E","field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","field-weekOfMonth-short":"週","field-tue-narrow-relative+-1":"上週二","dateFormatItem-yyyy":"G y年","dateFormatItem-M":"M月","months-standAlone-wide":["制檀邏月","吠舍佉月","逝瑟吒月","頞沙荼月","室羅伐拏月","婆羅鉢陀月","頞涇縛庚闍月","迦剌底迦月","末伽始羅月","報沙月","磨祛月","頗勒窶拏月"],"field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","dateTimeFormat-full":"{1}{0}","field-second-narrow-relative+0":"現在","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","months-standAlone-abbr":["制檀邏月","吠舍佉月","逝瑟吒月","頞沙荼月","室羅伐拏月","婆羅鉢陀月","頞涇縛庚闍月","迦剌底迦月","末伽始羅月","報沙月","磨祛月","頗勒窶拏月"],"field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"時區","dateFormatItem-y":"G y年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-fri-short-relative+-1":"上週五","field-thu-relative+-1":"上週四","field-week":"週","dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"G y年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"G y年QQQQ","field-hour-short":"小時","field-zone-short":"時區","field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","eraNarrow":"印度曆","field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"M月d日 E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"週天","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"G y年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/islamic.js b/lib/dojo/cldr/nls/zh-hant/islamic.js
index a2f86ea31..50a67486c 100644
--- a/lib/dojo/cldr/nls/zh-hant/islamic.js
+++ b/lib/dojo/cldr/nls/zh-hant/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/islamic",{"days-standAlone-short":["日","一","二","三","四","五","六"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"現在","field-weekday":"週天","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","eraNarrow":["伊斯蘭曆"],"field-tue-relative+-1":"上週二","days-format-short":["日","一","二","三","四","五","六"],"dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","months-format-wide":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","主馬達月 I","主馬達月 II","賴哲卜月","舍爾邦月","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"dateFormatItem-yyyyQQQ":"Gy年QQQ","dayPeriods-format-wide-pm":"下午","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-thu-relative+-1":"上週四","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"中午","field-era":"年代","months-standAlone-wide":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","主馬達月 I","主馬達月 II","賴哲卜月","舍爾邦月","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第1季","第2季","第3季","第4季"],"timeFormat-long":"ah:mm:ss [z]","field-year":"年","field-hour":"小時","months-format-abbr":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","主馬達月 I","主馬達月 II","賴哲卜月","舍爾邦月","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","timeFormat-full":"ah:mm:ss [zzzz]","field-day-relative+0":"今天","field-thu-relative+0":"本週四","field-day-relative+1":"明天","field-thu-relative+1":"下週四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"後天","dateFormatItem-H":"H時","months-standAlone-abbr":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","主馬達月 I","主馬達月 II","賴哲卜月","舍爾邦月","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"quarters-format-abbr":["1季","2季","3季","4季"],"quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","timeFormat-medium":"ah:mm:ss","field-sun-relative+0":"本週日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"下週日","quarters-standAlone-abbr":["1季","2季","3季","4季"],"eraAbbr":["伊斯蘭曆"],"field-minute":"分鐘","field-dayperiod":"上午/下午","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨天","dateFormatItem-h":"ah時","dayPeriods-format-narrow-am":"上午","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1}{0}","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"時區","dateFormatItem-y":"Gy年","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"去年","field-month-relative+-1":"上個月","dateFormatItem-hm":"ah:mm","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"eraNames":["伊斯蘭曆"],"days-format-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","dayPeriods-format-wide-am":"上午","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormat-short":"Gy/M/d","dayPeriods-format-narrow-noon":"中午","field-second":"秒","field-sat-relative+-1":"上週六","field-sun-relative+-1":"上週日","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上週","dateFormatItem-yyyyM":"Gy/M","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下午","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上週一","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/islamic",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","timeFormat-short":"ah:mm","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-thu-short-relative+0":"本週四","field-day-short-relative+-1":"昨天","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"下週四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","dateFormatItem-EBhms":"E Bh:mm:ss","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dayPeriods-format-narrow-am":"上午","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"每月平日","dayPeriods-format-abbr-am":"上午","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","timeFormat-medium":"ah:mm:ss","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"Gy年QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["伊斯蘭曆"],"field-weekOfMonth":"週","dayPeriods-standAlone-abbr-pm":"下午","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-yyyyMd":"Gy/M/d","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","dayPeriods-format-wide-am":"上午","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dayPeriods-standAlone-wide-pm":"下午","dateFormatItem-Ehms":"E ah:mm:ss","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dayPeriods-format-narrow-pm":"下午","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["伊斯蘭曆"],"quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"dayPeriods-format-abbr-pm":"下午","dateFormatItem-yyyyM":"Gy/M","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"上午/下午","dayPeriods-standAlone-narrow-am":"上午","field-week-narrow-relative+-1":"上週","days-format-short":["日","一","二","三","四","五","六"],"dayPeriods-format-wide-pm":"下午","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-minute-narrow-relative+0":"這一分鐘","field-hour":"小時","months-format-wide":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","主馬達月 I","主馬達月 II","賴哲卜月","舍爾邦月","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上個月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","dateFormatItem-EBhm":"E Bh:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","dateFormatItem-Ehm":"E ah:mm","months-format-abbr":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","主馬達月 I","主馬達月 II","賴哲卜月","舍爾邦月","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","timeFormat-long":"ah:mm:ss [z]","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"Gy/M/d","dateFormatItem-Bh":"Bh時","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","field-weekOfMonth-short":"週","field-tue-narrow-relative+-1":"上週二","dateFormatItem-H":"H時","dateFormatItem-yyyy":"Gy年","dayPeriods-standAlone-narrow-pm":"下午","dateFormatItem-M":"M月","months-standAlone-wide":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","主馬達月 I","主馬達月 II","賴哲卜月","舍爾邦月","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateTimeFormat-full":"{1}{0}","field-second-narrow-relative+0":"現在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","dateFormatItem-h":"ah時","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","months-standAlone-abbr":["穆哈蘭姆月","色法爾月","賴比月 I","賴比月 II","主馬達月 I","主馬達月 II","賴哲卜月","舍爾邦月","賴買丹月","閃瓦魯月","都爾喀爾德月","都爾黑哲月"],"field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","timeFormat-full":"ah:mm:ss [zzzz]","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"時區","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-fri-short-relative+-1":"上週五","dateFormatItem-hms":"ah:mm:ss","field-thu-relative+-1":"上週四","field-week":"週","quarters-format-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-Ed":"d日(E)","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","days-standAlone-short":["日","一","二","三","四","五","六"],"field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"小時","field-zone-short":"時區","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","eraNarrow":"伊斯蘭曆","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","dayPeriods-standAlone-abbr-am":"上午","field-day-relative+-2":"前天","field-weekday-short":"週天","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五","dayPeriods-standAlone-wide-am":"上午"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/japanese.js b/lib/dojo/cldr/nls/zh-hant/japanese.js
index bb9c5c67d..ce4897b41 100644
--- a/lib/dojo/cldr/nls/zh-hant/japanese.js
+++ b/lib/dojo/cldr/nls/zh-hant/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/japanese",{"field-second-relative+0":"現在","field-weekday":"週天","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","field-tue-relative+-1":"上週二","dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","dateFormatItem-yyyyQQQ":"Gy年QQQ","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-thu-relative+-1":"上週四","dateFormatItem-Md":"M/d","field-era":"年代","field-year":"年","field-hour":"小時","field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","field-day-relative+0":"今天","field-day-relative+1":"明天","field-thu-relative+0":"本週四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"後天","field-thu-relative+1":"下週四","dateFormatItem-H":"H時","dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-sun-relative+0":"本週日","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"下週日","eraAbbr":["大化","白雉","白鳳","朱鳥","大寶","慶雲","和銅","靈龜","養老","神龜","天平","天平感寶","天平勝寶","天平寶字","天平神護","神護景雲","寶龜","天應","延曆","大同","弘仁","天長","承和","嘉祥","仁壽","齊衡","天安","貞觀","元慶","仁和","寬平","昌泰","延喜","延長","承平","天慶","天曆","天德","應和","康保","安和","天祿","天延","貞元","天元","永觀","寬和","永延","永祚","正曆","長德","長保","寬弘","長和","寬仁","治安","萬壽","長元","長曆","長久","寬德","永承","天喜","康平","治曆","延久","承保","承曆","永保","應德","寬治","嘉保","永長","承德","康和","長治","嘉承","天仁","天永","永久","元永","保安","天治","大治","天承","長承","保延","永治","康治","天養","久安","仁平","久壽","保元","平治","永曆","應保","長寬","永萬","仁安","嘉應","承安","安元","治承","養和","壽永","元曆","文治","建久","正治","建仁","元久","建永","承元","建曆","建保","承久","貞應","元仁","嘉祿","安貞","寬喜","貞永","天福","文曆","嘉禎","曆仁","延應","仁治","寬元","寶治","建長","康元","正嘉","正元","文應","弘長","文永","建治","弘安","正應","永仁","正安","乾元","嘉元","德治","延慶","應長","正和","文保","元應","元亨","正中","嘉曆","元德","元弘","建武","延元","興國","正平","建德","文中","天授","康曆","弘和","元中","至德","嘉慶","康應","明德","應永","正長","永享","嘉吉","文安","寶德","享德","康正","長祿","寬正","文正","應仁","文明","長享","延德","明應","文龜","永正","大永","享祿","天文","弘治","永祿","元龜","天正","文祿","慶長","元和","寬永","正保","慶安","承應","明曆","萬治","寬文","延寶","天和","貞享","元祿","寶永","正德","享保","元文","寬保","延享","寬延","寶曆","明和","安永","天明","寬政","享和","文化","文政","天保","弘化","嘉永","安政","萬延","文久","元治","慶應","明治","大正","昭和","平成"],"field-minute":"分鐘","field-dayperiod":"上午/下午","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨天","dateFormatItem-h":"ah時","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"前天","dateFormatItem-MMMd":"MMM d","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","field-day":"日","field-zone":"時區","dateFormatItem-y":"Gy年","field-year-relative+-1":"去年","field-month-relative+-1":"上個月","dateFormatItem-hm":"ah:mm","dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"LLL","field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormat-short":"Gy/M/d","field-second":"秒","field-sat-relative+-1":"上週六","field-sun-relative+-1":"上週日","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上週","dateFormatItem-yyyyM":"Gy/M","field-year-relative+1":"明年","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上週一","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/japanese",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-ms":"mm:ss","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本週四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下週四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","field-weekdayOfMonth-narrow":"每月平日","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"Gy年QQQ","eraNames":["大化","白雉","白鳳","朱鳥","大寶","慶雲","和銅","靈龜","養老","神龜","天平","天平感寶","天平勝寶","天平寶字","天平神護","神護景雲","寶龜","天應","延曆","大同","弘仁","天長","承和","嘉祥","仁壽","齊衡","天安","貞觀","元慶","仁和","寬平","昌泰","延喜","延長","承平","天慶","天曆","天德","應和","康保","安和","天祿","天延","貞元","天元","永觀","寬和","永延","永祚","正曆","長德","長保","寬弘","長和","寬仁","治安","萬壽","長元","長曆","長久","寬德","永承","天喜","康平","治曆","延久","承保","承曆","永保","應德","寬治","嘉保","永長","承德","康和","長治","嘉承","天仁","天永","永久","元永","保安","天治","大治","天承","長承","保延","永治","康治","天養","久安","仁平","久壽","保元","平治","永曆","應保","長寬","永萬","仁安","嘉應","承安","安元","治承","養和","壽永","元曆","文治","建久","正治","建仁","元久","建永","承元","建曆","建保","承久","貞應","元仁","嘉祿","安貞","寬喜","貞永","天福","文曆","嘉禎","曆仁","延應","仁治","寬元","寶治","建長","康元","正嘉","正元","文應","弘長","文永","建治","弘安","正應","永仁","正安","乾元","嘉元","德治","延慶","應長","正和","文保","元應","元亨","正中","嘉曆","元德","元弘","建武","延元","興國","正平","建德","文中","天授","康曆","弘和","元中","至德","嘉慶","康應","明德","應永","正長","永享","嘉吉","文安","寶德","享德","康正","長祿","寬正","文正","應仁","文明","長享","延德","明應","文龜","永正","大永","享祿","天文","弘治","永祿","元龜","天正","文祿","慶長","元和","寬永","正保","慶安","承應","明曆","萬治","寬文","延寶","天和","貞享","元祿","寶永","正德","享保","元文","寬保","延享","寬延","寶曆","明和","安永","天明","寬政","享和","文化","文政","天保","弘化","嘉永","安政","萬延","文久","元治","慶應","明治","大正","昭和","平成","令和"],"field-weekOfMonth":"週","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-yyyyMd":"Gy/M/d","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["大化","白雉","白鳳","朱鳥","大寶","慶雲","和銅","靈龜","養老","神龜","天平","天平感寶","天平勝寶","天平寶字","天平神護","神護景雲","寶龜","天應","延曆","大同","弘仁","天長","承和","嘉祥","仁壽","齊衡","天安","貞觀","元慶","仁和","寬平","昌泰","延喜","延長","承平","天慶","天曆","天德","應和","康保","安和","天祿","天延","貞元","天元","永觀","寬和","永延","永祚","正曆","長德","長保","寬弘","長和","寬仁","治安","萬壽","長元","長曆","長久","寬德","永承","天喜","康平","治曆","延久","承保","承曆","永保","應德","寬治","嘉保","永長","承德","康和","長治","嘉承","天仁","天永","永久","元永","保安","天治","大治","天承","長承","保延","永治","康治","天養","久安","仁平","久壽","保元","平治","永曆","應保","長寬","永萬","仁安","嘉應","承安","安元","治承","養和","壽永","元曆","文治","建久","正治","建仁","元久","建永","承元","建曆","建保","承久","貞應","元仁","嘉祿","安貞","寬喜","貞永","天福","文曆","嘉禎","曆仁","延應","仁治","寬元","寶治","建長","康元","正嘉","正元","文應","弘長","文永","建治","弘安","正應","永仁","正安","乾元","嘉元","德治","延慶","應長","正和","文保","元應","元亨","正中","嘉曆","元德","元弘","建武","延元","興國","正平","建德","文中","天授","康曆","弘和","元中","至德","嘉慶","康應","明德","應永","正長","永享","嘉吉","文安","寶德","享德","康正","長祿","寬正","文正","應仁","文明","長享","延德","明應","文龜","永正","大永","享祿","天文","弘治","永祿","元龜","天正","文祿","慶長","元和","寬永","正保","慶安","承應","明曆","萬治","寬文","延寶","天和","貞享","元祿","寶永","正德","享保","元文","寬保","延享","寬延","寶曆","明和","安永","天明","寬政","享和","文化","文政","天保","弘化","嘉永","安政","萬延","文久","元治","慶應","明治","大正","昭和","平成","令和"],"dateFormatItem-yyyyM":"Gy/M","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上週","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"小時","field-minute-narrow-relative+0":"這一分鐘","dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上個月","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"Gy/M/d","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","field-mon-narrow-relative+-1":"上週一","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","dateFormatItem-H":"H時","field-weekOfMonth-short":"週","field-tue-narrow-relative+-1":"上週二","dateFormatItem-yyyy":"Gy年","dateFormatItem-M":"M月","field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","field-second-narrow-relative+0":"現在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","dateFormatItem-h":"ah時","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"時區","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","dateFormatItem-hms":"ah:mm:ss","field-fri-short-relative+-1":"上週五","field-thu-relative+-1":"上週四","field-week":"週","dateFormatItem-Ed":"d日(E)","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"小時","field-zone-short":"時區","field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","eraNarrow":["大化","白雉","白鳳","朱鳥","大寶","慶雲","和銅","靈龜","養老","神龜","天平","天平感寶","天平勝寶","天平寶字","天平神護","神護景雲","寶龜","天應","延曆","大同","弘仁","天長","承和","嘉祥","仁壽","齊衡","天安","貞觀","元慶","仁和","寬平","昌泰","延喜","延長","承平","天慶","天曆","天德","應和","康保","安和","天祿","天延","貞元","天元","永觀","寬和","永延","永祚","正曆","長德","長保","寬弘","長和","寬仁","治安","萬壽","長元","長曆","長久","寬德","永承","天喜","康平","治曆","延久","承保","承曆","永保","應德","寬治","嘉保","永長","承德","康和","長治","嘉承","天仁","天永","永久","元永","保安","天治","大治","天承","長承","保延","永治","康治","天養","久安","仁平","久壽","保元","平治","永曆","應保","長寬","永萬","仁安","嘉應","承安","安元","治承","養和","壽永","元曆","文治","建久","正治","建仁","元久","建永","承元","建曆","建保","承久","貞應","元仁","嘉祿","安貞","寬喜","貞永","天福","文曆","嘉禎","曆仁","延應","仁治","寬元","寶治","建長","康元","正嘉","正元","文應","弘長","文永","建治","弘安","正應","永仁","正安","乾元","嘉元","德治","延慶","應長","正和","文保","元應","元亨","正中","嘉曆","元德","元弘","建武","延元","興國","正平","建德","文中","天授","康曆","弘和","元中","至德","嘉慶","康應","明德","應永","正長","永享","嘉吉","文安","寶德","享德","康正","長祿","寬正","文正","應仁","文明","長享","延德","明應","文龜","永正","大永","享祿","天文","弘治","永祿","元龜","天正","文祿","慶長","元和","寬永","正保","慶安","承應","明曆","萬治","寬文","延寶","天和","貞享","元祿","寶永","正德","享保","元文","寬保","延享","寬延","寶曆","明和","安永","天明","寬政","享和","文化","文政","天保","弘化","嘉永","安政","萬延","文久","元治","慶應","明治","大正","昭和","平成","令和"],"field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"週天","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/number.js b/lib/dojo/cldr/nls/zh-hant/number.js
index 68f5b0380..0ce46070d 100644
--- a/lib/dojo/cldr/nls/zh-hant/number.js
+++ b/lib/dojo/cldr/nls/zh-hant/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","superscriptingExponent":"×","nan":"非數值","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000兆","decimalFormat-short":"000T"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000兆","nan":"非數值","plusSign":"+","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000兆","decimalFormat":"#,##0.###","currencyFormat-short":"¤000兆","timeSeparator":":","decimal":".","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/persian.js b/lib/dojo/cldr/nls/zh-hant/persian.js
index aec56e2da..c46a0c62d 100644
--- a/lib/dojo/cldr/nls/zh-hant/persian.js
+++ b/lib/dojo/cldr/nls/zh-hant/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/persian",{"days-standAlone-short":["日","一","二","三","四","五","六"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"現在","field-weekday":"週天","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-GyMMMEd":"G y年M月d日 E","dateFormatItem-MMMEd":"M月d日 E","eraNarrow":["波斯曆"],"field-tue-relative+-1":"上週二","days-format-short":["日","一","二","三","四","五","六"],"dateFormat-long":"G y年M月d日","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormatItem-yyyyQQQ":"G y年QQQ","dayPeriods-format-wide-pm":"下午","dateFormat-full":"G y年M月d日 EEEE","dateFormatItem-yyyyMEd":"G y/M/d(E)","field-thu-relative+-1":"上週四","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"中午","field-era":"年代","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第1季","第2季","第3季","第4季"],"timeFormat-long":"ah:mm:ss [z]","field-year":"年","field-hour":"小時","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","timeFormat-full":"ah:mm:ss [zzzz]","field-day-relative+0":"今天","field-thu-relative+0":"本週四","field-day-relative+1":"明天","field-thu-relative+1":"下週四","dateFormatItem-GyMMMd":"G y年M月d日","field-day-relative+2":"後天","dateFormatItem-H":"H時","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["1季","2季","3季","4季"],"quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-Gy":"G y年","dateFormatItem-yyyyMMMEd":"G y年M月d日 E","dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMM":"G y年M月","dateFormatItem-yyyyMMMd":"G y年M月d日","timeFormat-medium":"ah:mm:ss","field-sun-relative+0":"本週日","dateFormatItem-Hm":"H:mm","field-sun-relative+1":"下週日","quarters-standAlone-abbr":["1季","2季","3季","4季"],"eraAbbr":["波斯曆"],"field-minute":"分鐘","field-dayperiod":"上午/下午","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨天","dateFormatItem-h":"ah時","dayPeriods-format-narrow-am":"上午","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1}{0}","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"時區","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-y":"G y年","field-year-relative+-1":"去年","field-month-relative+-1":"上個月","dateFormatItem-hm":"ah:mm","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"eraNames":["波斯曆"],"days-format-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-yyyyMd":"G y/M/d","field-month":"月","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","dayPeriods-format-wide-am":"上午","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormat-short":"G y/M/d","dayPeriods-format-narrow-noon":"中午","field-second":"秒","field-sat-relative+-1":"上週六","field-sun-relative+-1":"上週日","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"G y年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上週","dateFormatItem-yyyyM":"G y/M","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下午","dateFormatItem-yyyyQQQQ":"G y年QQQQ","dateFormatItem-Hms":"H:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-GyMMM":"G y年M月","field-mon-relative+-1":"上週一","dateFormatItem-yyyy":"G y年","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/persian",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","dateFormatItem-Hm":"H:mm","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","timeFormat-short":"ah:mm","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-thu-short-relative+0":"本週四","field-day-short-relative+-1":"昨天","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"下週四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","dateFormatItem-EBhms":"E Bh:mm:ss","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dayPeriods-format-narrow-am":"上午","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"每月平日","dayPeriods-format-abbr-am":"上午","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","timeFormat-medium":"ah:mm:ss","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"G y年QQQ","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["波斯曆"],"field-weekOfMonth":"週","dayPeriods-standAlone-abbr-pm":"下午","field-month-short":"月","dateFormatItem-GyMMMEd":"G y年M月d日 E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","dayPeriods-format-wide-am":"上午","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"G y/M/d(E)","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dayPeriods-standAlone-wide-pm":"下午","dateFormatItem-Ehms":"E ah:mm:ss","dateFormat-long":"G y年M月d日","dateFormatItem-GyMMMd":"G y年M月d日","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"G y年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dayPeriods-format-narrow-pm":"下午","dateFormat-medium":"G y年M月d日","dateFormatItem-yyyyMMMM":"G y年M月","eraAbbr":["波斯曆"],"quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"dayPeriods-format-abbr-pm":"下午","dateFormatItem-yyyyM":"G y/M","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"G y年M月d日","field-dayperiod-narrow":"上午/下午","dayPeriods-standAlone-narrow-am":"上午","field-week-narrow-relative+-1":"上週","days-format-short":["日","一","二","三","四","五","六"],"dayPeriods-format-wide-pm":"下午","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-minute-narrow-relative+0":"這一分鐘","field-hour":"小時","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateFormat-full":"G y年M月d日 EEEE","field-month-relative+-1":"上個月","dateFormatItem-Hms":"H:mm:ss","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","dateFormatItem-EBhm":"E Bh:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","dateFormatItem-Ehm":"E ah:mm","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","timeFormat-long":"ah:mm:ss [z]","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"G y/M/d","dateFormatItem-Bh":"Bh時","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"G y年M月d日 E","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","field-weekOfMonth-short":"週","field-tue-narrow-relative+-1":"上週二","dateFormatItem-H":"H時","dateFormatItem-yyyy":"G y年","dayPeriods-standAlone-narrow-pm":"下午","dateFormatItem-M":"M月","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","days-standAlone-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateTimeFormat-full":"{1}{0}","field-second-narrow-relative+0":"現在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","dateFormatItem-h":"ah時","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","timeFormat-full":"ah:mm:ss [zzzz]","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"時區","dateFormatItem-y":"G y年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-fri-short-relative+-1":"上週五","dateFormatItem-hms":"ah:mm:ss","field-thu-relative+-1":"上週四","field-week":"週","quarters-format-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"G y年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","days-standAlone-short":["日","一","二","三","四","五","六"],"field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"G y年QQQQ","field-hour-short":"小時","field-zone-short":"時區","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","eraNarrow":"波斯曆","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"M月d日 E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","dayPeriods-standAlone-abbr-am":"上午","field-day-relative+-2":"前天","field-weekday-short":"週天","days-format-abbr":["週日","週一","週二","週三","週四","週五","週六"],"dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"G y年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五","dayPeriods-standAlone-wide-am":"上午"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hant/roc.js b/lib/dojo/cldr/nls/zh-hant/roc.js
index 452b0fc54..dfc4a80b8 100644
--- a/lib/dojo/cldr/nls/zh-hant/roc.js
+++ b/lib/dojo/cldr/nls/zh-hant/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hant/roc",{"field-second-relative+0":"現在","field-weekday":"週天","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","field-tue-relative+-1":"上週二","dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","dateFormatItem-yyyyQQQ":"Gy年QQQ","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-thu-relative+-1":"上週四","dateFormatItem-Md":"M/d","field-era":"年代","field-year":"年","field-hour":"小時","field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","field-day-relative+0":"今天","field-thu-relative+0":"本週四","field-day-relative+1":"明天","field-thu-relative+1":"下週四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"後天","dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","eraAbbr":["民國前","民國"],"field-minute":"分鐘","field-dayperiod":"上午/下午","dateFormatItem-d":"d日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/d(E)","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","field-day":"日","field-zone":"時區","dateFormatItem-y":"Gy年","field-year-relative+-1":"去年","field-month-relative+-1":"上個月","dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"LLL","field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormat-short":"Gy/M/d","field-second":"秒","field-sat-relative+-1":"上週六","field-sun-relative+-1":"上週日","field-month-relative+0":"本月","field-month-relative+1":"下個月","dateFormatItem-Ed":"d日(E)","field-week":"週","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上週","dateFormatItem-yyyyM":"Gy/M","field-year-relative+1":"明年","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上週一","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hant/roc",{"field-quarter-short-relative+0":"這一季","field-quarter-short-relative+1":"下一季","field-tue-relative+-1":"上週二","field-year":"年","field-wed-relative+0":"本週三","field-wed-relative+1":"下週三","field-minute":"分鐘","field-month-narrow-relative+-1":"上個月","field-tue-narrow-relative+0":"本週二","field-tue-narrow-relative+1":"下週二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本週四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下週四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本週","field-day-relative+2":"後天","field-week-narrow-relative+1":"下週","field-wed-narrow-relative+-1":"上週三","field-year-narrow":"年","field-era-short":"年代","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本週二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下週二","field-weekdayOfMonth":"每月平日","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"每月平日","field-week-relative+0":"本週","field-month-relative+0":"本月","field-week-relative+1":"下週","field-month-relative+1":"下個月","field-sun-narrow-relative+0":"本週日","field-mon-short-relative+0":"本週一","field-sun-narrow-relative+1":"下週日","field-mon-short-relative+1":"下週一","field-second-relative+0":"現在","dateFormatItem-yyyyQQQ":"Gy年QQQ","eraNames":["民國前","民國"],"field-weekOfMonth":"週","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-yyyyMd":"Gy/M/d","field-day":"日","field-dayOfYear-short":"年天","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上週六","field-hour-relative+0":"這一小時","dateFormatItem-yyyyMEd":"Gy/M/d(E)","field-second-short-relative+0":"現在","field-wed-relative+-1":"上週三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上週六","field-second":"秒","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-hour-short-relative+0":"這一小時","field-quarter":"季","field-week-short":"週","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"後天","field-tue-short-relative+0":"本週二","field-tue-short-relative+1":"下週二","field-month-short-relative+-1":"上個月","field-mon-relative+-1":"上週一","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分鐘","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本週六","field-sat-short-relative+1":"下週六","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["民國前","民國"],"dateFormatItem-yyyyM":"Gy/M","field-second-narrow":"秒","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上一季","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上週","field-dayOfYear":"年天","field-sat-relative+-1":"上週六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"小時","field-minute-narrow-relative+0":"這一分鐘","dateFormat-full":"Gy年M月d日 EEEE","field-month-relative+-1":"上個月","field-quarter-short":"季","field-sat-narrow-relative+0":"本週六","field-fri-relative+0":"本週五","field-sat-narrow-relative+1":"下週六","field-fri-relative+1":"下週五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下個月","field-sun-short-relative+0":"本週日","field-sun-short-relative+1":"下週日","field-week-relative+-1":"上週","field-quarter-short-relative+-1":"上一季","field-minute-short-relative+0":"這一分鐘","field-quarter-relative+0":"這一季","field-minute-relative+0":"這一分鐘","field-quarter-relative+1":"下一季","field-wed-short-relative+-1":"上週三","dateFormat-short":"Gy/M/d","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上週四","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","field-mon-narrow-relative+-1":"上週一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上週四","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"上週二","field-weekOfMonth-short":"週","dateFormatItem-yyyy":"Gy年","dateFormatItem-M":"M月","field-wed-short-relative+0":"本週三","field-wed-short-relative+1":"下週三","field-sun-relative+-1":"上週日","dateTimeFormat-full":"{1}{0}","field-second-narrow-relative+0":"現在","dateFormatItem-d":"d日","field-weekday":"週天","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"這一季","field-day-short-relative+1":"明天","field-sat-relative+0":"本週六","field-quarter-narrow-relative+1":"下一季","field-day-short-relative+2":"後天","field-sat-relative+1":"下週六","field-week-short-relative+0":"本週","field-week-short-relative+1":"下週","field-dayOfYear-narrow":"年天","field-month-short-relative+0":"本月","field-month-short-relative+1":"下個月","field-weekdayOfMonth-short":"每月平日","dateFormatItem-MEd":"M/d(E)","field-zone-narrow":"時區","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本週四","field-sun-narrow-relative+-1":"上週日","field-mon-short-relative+-1":"上週一","field-thu-narrow-relative+1":"下週四","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-fri-short-relative+-1":"上週五","field-thu-relative+-1":"上週四","field-week":"週","dateFormatItem-Ed":"d E","field-wed-narrow-relative+0":"本週三","field-wed-narrow-relative+1":"下週三","field-quarter-narrow-relative+-1":"上一季","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本週五","field-fri-short-relative+1":"下週五","field-week-short-relative+-1":"上週","field-hour-narrow-relative+0":"這一小時","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"小時","field-zone-short":"時區","field-month-narrow":"月","field-hour-narrow":"小時","field-fri-narrow-relative+-1":"上週五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"年代","field-fri-relative+-1":"上週五","eraNarrow":["民國前","民國"],"field-tue-short-relative+-1":"上週二","field-minute-narrow":"分鐘","field-mon-narrow-relative+0":"本週一","field-mon-narrow-relative+1":"下週一","field-year-short-relative+-1":"去年","field-zone":"時區","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"週","field-weekday-narrow":"週天","field-quarter-narrow":"季","field-sun-short-relative+-1":"上週日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"週天","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"週","field-era":"年代","field-fri-narrow-relative+0":"本週五","field-fri-narrow-relative+1":"下週五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hk/currency.js b/lib/dojo/cldr/nls/zh-hk/currency.js
index 7fea48012..83b090fee 100644
--- a/lib/dojo/cldr/nls/zh-hk/currency.js
+++ b/lib/dojo/cldr/nls/zh-hk/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hk/currency",{"HKD_displayName":"港幣","JPY_symbol":"¥","CAD_displayName":"加幣","CNY_displayName":"人民幣","USD_symbol":"$","AUD_displayName":"澳幣","JPY_displayName":"日圓","$locale":"zh-hant-hk","CNY_symbol":"CN¥","GBP_displayName":"英鎊","EUR_displayName":"歐元"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hk/currency",{"HKD_displayName":"港幣","JPY_symbol":"¥","CAD_displayName":"加幣","CNY_displayName":"人民幣","AUD_displayName":"澳幣","JPY_displayName":"日圓","$locale":"zh-hant-hk","CNY_symbol":"CN¥","GBP_displayName":"英鎊","EUR_displayName":"歐元"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hk/gregorian.js b/lib/dojo/cldr/nls/zh-hk/gregorian.js
index 74c53f6db..742a74892 100644
--- a/lib/dojo/cldr/nls/zh-hk/gregorian.js
+++ b/lib/dojo/cldr/nls/zh-hk/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hk/gregorian",{"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","field-sun-relative+-1":"上週日","field-mon-relative+-1":"上週一","field-minute":"分鐘","eraNames":["西元前","西元"],"dateTimeFormat-full":"{1}{0}","field-weekday":"週天","dateFormatItem-yQQQ":"y年QQQ","field-era":"年代","dateFormatItem-Gy":"G y 年","field-hour":"小時","quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"timeFormat-full":"ah:mm:ss [zzzz]","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormatItem-yMM":"y-MM","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","field-wed-relative+-1":"上週三","dateFormatItem-Ed":"d日(E)","eraAbbr":["西元前","西元"],"field-day-relative+2":"後天","dateFormatItem-GyMMMd":"G y 年 M 月 d 日","field-zone":"時區","field-tue-relative+0":"本週二","dateFormatItem-Ehm":"E a h:mm","field-tue-relative+1":"下週二","field-week-relative+-1":"上週","field-sat-relative+-1":"上週六","$locale":"zh-hant-hk","quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-week":"週","field-week-relative+0":"本週","dateFormatItem-Ehms":"E a h:mm:ss","field-week-relative+1":"下週","timeFormat-long":"ah:mm:ss [z]","dateFormatItem-yQQQQ":"y年QQQQ","field-month-relative+1":"下個月","dateFormatItem-H":"H時","field-fri-relative+-1":"上週五","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"field-second":"秒","dateFormatItem-GyMMMEd":"Gy年M月d日 E","field-tue-relative+-1":"上週二","dateFormatItem-GyMMM":"G y 年 M 月","dateFormatItem-MEd":"M/d(E)","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-second-relative+0":"現在","field-thu-relative+0":"本週四","dateFormat-short":"y/M/d","field-thu-relative+1":"下週四","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-EHm":"E HH:mm","dateFormatItem-yMEd":"y/M/d(E)","field-wed-relative+0":"本週三","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-wed-relative+1":"下週三","field-month-relative+-1":"上個月","quarters-format-wide":["第1季","第2季","第3季","第4季"],"eraNarrow":["西元前","西元"],"dateFormatItem-h":"ah時","field-thu-relative+-1":"上週四"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hk/gregorian",{"dateFormatItem-Ehm":"E ah:mm","field-second-relative+0":"現在","field-quarter-relative+-1":"上一季","field-weekday":"週天","$locale":"zh-hant-hk","dateFormatItem-yQQQ":"y年QQQ","dateFormatItem-yMEd":"y/M/d(E)","field-wed-relative+0":"本週三","dateFormatItem-hmsv":"ah:mm:ss [v]","field-wed-relative+1":"下週三","dateFormatItem-GyMMMEd":"Gy年M月d日 E","dateFormatItem-MMMEd":"M月d日 E","eraNarrow":["西元前","西元"],"dateFormatItem-yMM":"y/MM","field-tue-relative+-1":"上週二","field-hour-relative+0":"這一小時","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","field-dayOfYear":"年天","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dateFormat-full":"y年M月d日 EEEE","field-thu-relative+-1":"上週四","field-era":"年代","dateFormatItem-yM":"y/M","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-yQQQQ":"y年QQQQ","timeFormat-long":"ah:mm:ss [z]","field-hour":"小時","field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","dateFormatItem-EBhms":"E Bh:mm:ss","timeFormat-full":"ah:mm:ss [zzzz]","dateFormatItem-MMMMW":"MMMM的第W週","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-day-relative+2":"後天","dateFormatItem-H":"H時","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"field-sun-relative+0":"本週日","dateFormatItem-Bh":"Bh時","field-sun-relative+1":"下週日","quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"dateFormatItem-yw":"Y年的第w週","eraAbbr":["西元前","西元"],"field-minute":"分鐘","dateFormatItem-h":"ah時","field-minute-relative+0":"這一分鐘","field-quarter-relative+0":"這一季","field-quarter-relative+1":"下一季","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","field-zone":"時區","field-month-relative+-1":"上個月","eraNames":["西元前","西元"],"field-quarter":"季","field-weekOfMonth":"週","field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","dateFormatItem-EBhm":"E Bh:mm","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E ah:mm:ss","field-sat-relative+-1":"上週六","dateFormatItem-yMMMEd":"y年M月d日 E","field-sun-relative+-1":"上週日","field-weekdayOfMonth":"每月平日","field-month-relative+1":"下個月","dateFormatItem-Ed":"d E","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"週","dateFormatItem-Hmsv":"HH:mm:ss [v]","field-week-relative+-1":"上週","dateFormatItem-Hmv":"HH:mm [v]","dateFormatItem-hmv":"ah:mm [v]","field-mon-relative+-1":"上週一","dayPeriods-format-abbr-morning1":"清晨","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-hk/number.js b/lib/dojo/cldr/nls/zh-hk/number.js
index 555238cd7..828b7ac91 100644
--- a/lib/dojo/cldr/nls/zh-hk/number.js
+++ b/lib/dojo/cldr/nls/zh-hk/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-hk/number",{"$locale":"zh-hant-hk","decimalFormat-short":"000T","nan":"非數值"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-hk/number",{"decimalFormat-long":"000兆","nan":"非數值","$locale":"zh-hant-hk","decimalFormat-short":"000兆","currencyFormat-short":"¤000兆"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-tw/currency.js b/lib/dojo/cldr/nls/zh-tw/currency.js
index 743157a95..ad4b807ec 100644
--- a/lib/dojo/cldr/nls/zh-tw/currency.js
+++ b/lib/dojo/cldr/nls/zh-tw/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-tw/currency",{"HKD_displayName":"港幣","JPY_symbol":"¥","CAD_displayName":"加幣","CNY_displayName":"人民幣","USD_symbol":"$","AUD_displayName":"澳幣","JPY_displayName":"日圓","$locale":"zh-hant-tw","CNY_symbol":"CN¥","GBP_displayName":"英鎊","EUR_displayName":"歐元"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-tw/currency",{"HKD_displayName":"港幣","JPY_symbol":"¥","CAD_displayName":"加幣","CNY_displayName":"人民幣","AUD_displayName":"澳幣","JPY_displayName":"日圓","$locale":"zh-hant-tw","CNY_symbol":"CN¥","GBP_displayName":"英鎊","EUR_displayName":"歐元"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-tw/gregorian.js b/lib/dojo/cldr/nls/zh-tw/gregorian.js
index fd17c3d01..fb145bd2d 100644
--- a/lib/dojo/cldr/nls/zh-tw/gregorian.js
+++ b/lib/dojo/cldr/nls/zh-tw/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-tw/gregorian",{"field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","field-sun-relative+-1":"上週日","field-mon-relative+-1":"上週一","field-minute":"分鐘","eraNames":["西元前","西元"],"dateTimeFormat-full":"{1}{0}","field-weekday":"週天","dateFormatItem-yQQQ":"y年QQQ","field-era":"年代","dateFormatItem-Gy":"G y 年","field-hour":"小時","quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"timeFormat-full":"ah:mm:ss [zzzz]","dateTimeFormats-appendItem-Timezone":"{0} {1}","dateFormatItem-yMM":"y-MM","field-sun-relative+0":"本週日","field-sun-relative+1":"下週日","field-wed-relative+-1":"上週三","dateFormatItem-Ed":"d日(E)","eraAbbr":["西元前","西元"],"field-day-relative+2":"後天","dateFormatItem-GyMMMd":"G y 年 M 月 d 日","field-zone":"時區","field-tue-relative+0":"本週二","dateFormatItem-Ehm":"E a h:mm","field-tue-relative+1":"下週二","field-week-relative+-1":"上週","field-sat-relative+-1":"上週六","$locale":"zh-hant-tw","quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-week":"週","field-week-relative+0":"本週","dateFormatItem-Ehms":"E a h:mm:ss","field-week-relative+1":"下週","timeFormat-long":"ah:mm:ss [z]","dateFormatItem-yQQQQ":"y年QQQQ","field-month-relative+1":"下個月","dateFormatItem-H":"H時","field-fri-relative+-1":"上週五","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"field-second":"秒","dateFormatItem-GyMMMEd":"Gy年M月d日 E","field-tue-relative+-1":"上週二","dateFormatItem-GyMMM":"G y 年 M 月","dateFormatItem-MEd":"M/d(E)","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","field-second-relative+0":"現在","field-thu-relative+0":"本週四","dateFormat-short":"y/M/d","field-thu-relative+1":"下週四","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-EHm":"E HH:mm","dateFormatItem-yMEd":"y/M/d(E)","field-wed-relative+0":"本週三","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-wed-relative+1":"下週三","field-month-relative+-1":"上個月","quarters-format-wide":["第1季","第2季","第3季","第4季"],"eraNarrow":["西元前","西元"],"dateFormatItem-h":"ah時","field-thu-relative+-1":"上週四"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-tw/gregorian",{"dateFormatItem-Ehm":"E ah:mm","field-second-relative+0":"現在","field-quarter-relative+-1":"上一季","field-weekday":"週天","$locale":"zh-hant-tw","dateFormatItem-yQQQ":"y年QQQ","dateFormatItem-yMEd":"y/M/d(E)","field-wed-relative+0":"本週三","dateFormatItem-hmsv":"ah:mm:ss [v]","field-wed-relative+1":"下週三","dateFormatItem-GyMMMEd":"Gy年M月d日 E","dateFormatItem-MMMEd":"M月d日 E","eraNarrow":["西元前","西元"],"dateFormatItem-yMM":"y/MM","field-tue-relative+-1":"上週二","field-hour-relative+0":"這一小時","field-fri-relative+-1":"上週五","field-wed-relative+-1":"上週三","field-dayOfYear":"年天","months-format-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dateTimeFormat-medium":"{1} {0}","dateFormat-full":"y年M月d日 EEEE","field-thu-relative+-1":"上週四","field-era":"年代","dateFormatItem-yM":"y/M","months-standAlone-wide":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-wide":["第1季","第2季","第3季","第4季"],"dateFormatItem-yQQQQ":"y年QQQQ","timeFormat-long":"ah:mm:ss [z]","field-hour":"小時","field-sat-relative+0":"本週六","field-sat-relative+1":"下週六","dateFormatItem-EBhms":"E Bh:mm:ss","timeFormat-full":"ah:mm:ss [zzzz]","dateFormatItem-MMMMW":"MMMM的第W週","field-thu-relative+0":"本週四","field-thu-relative+1":"下週四","field-day-relative+2":"後天","dateFormatItem-H":"H時","quarters-format-abbr":["第1季","第2季","第3季","第4季"],"quarters-standAlone-wide":["第1季","第2季","第3季","第4季"],"field-sun-relative+0":"本週日","dateFormatItem-Bh":"Bh時","field-sun-relative+1":"下週日","quarters-standAlone-abbr":["第1季","第2季","第3季","第4季"],"dateFormatItem-yw":"Y年的第w週","eraAbbr":["西元前","西元"],"field-minute":"分鐘","dateFormatItem-h":"ah時","field-minute-relative+0":"這一分鐘","field-quarter-relative+0":"這一季","field-quarter-relative+1":"下一季","dateFormatItem-MEd":"M/d(E)","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"本週五","field-fri-relative+1":"下週五","field-zone":"時區","field-month-relative+-1":"上個月","eraNames":["西元前","西元"],"field-quarter":"季","field-weekOfMonth":"週","field-tue-relative+0":"本週二","field-tue-relative+1":"下週二","dateFormatItem-EBhm":"E Bh:mm","dateFormatItem-EHm":"E HH:mm","field-mon-relative+0":"本週一","field-mon-relative+1":"下週一","dateFormatItem-EHms":"E HH:mm:ss","dateFormatItem-Ehms":"E ah:mm:ss","field-sat-relative+-1":"上週六","dateFormatItem-yMMMEd":"y年M月d日 E","field-sun-relative+-1":"上週日","field-weekdayOfMonth":"每月平日","field-month-relative+1":"下個月","dateFormatItem-Ed":"d E","dateTimeFormats-appendItem-Timezone":"{0} {1}","field-week":"週","dateFormatItem-Hmsv":"HH:mm:ss [v]","field-week-relative+-1":"上週","dateFormatItem-Hmv":"HH:mm [v]","dateFormatItem-hmv":"ah:mm [v]","field-mon-relative+-1":"上週一","dayPeriods-format-abbr-morning1":"清晨","field-week-relative+0":"本週","field-week-relative+1":"下週"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh-tw/number.js b/lib/dojo/cldr/nls/zh-tw/number.js
index 52d8a653d..d6f348c59 100644
--- a/lib/dojo/cldr/nls/zh-tw/number.js
+++ b/lib/dojo/cldr/nls/zh-tw/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh-tw/number",{"$locale":"zh-hant-tw","decimalFormat-short":"000T","nan":"非數值"}); \ No newline at end of file
+define("dojo/cldr/nls/zh-tw/number",{"decimalFormat-long":"000兆","nan":"非數值","$locale":"zh-hant-tw","decimalFormat-short":"000兆","currencyFormat-short":"¤000兆"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/buddhist.js b/lib/dojo/cldr/nls/zh/buddhist.js
index 919bcd511..23d465d45 100644
--- a/lib/dojo/cldr/nls/zh/buddhist.js
+++ b/lib/dojo/cldr/nls/zh/buddhist.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/buddhist",{"days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"field-second-relative+0":"现在","field-weekday":"工作日","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","eraNarrow":["佛历"],"field-tue-relative+-1":"上周二","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上周五","field-wed-relative+-1":"上周三","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormatItem-yyyyQQQ":"Gy年第Q季度","dayPeriods-format-wide-pm":"下午","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy-M-d(E)","field-thu-relative+-1":"上周四","dateFormatItem-Md":"M-d","dayPeriods-format-wide-noon":"中午","field-era":"纪元","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"timeFormat-long":"z ah:mm:ss","field-year":"年","dateFormatItem-yyyyMMMM":"Gy年M月","field-hour":"小时","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","timeFormat-full":"zzzz ah:mm:ss","field-day-relative+0":"今天","field-thu-relative+0":"本周四","field-day-relative+1":"明天","field-thu-relative+1":"下周四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"后天","dateFormatItem-H":"H时","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["1季度","2季度","3季度","4季度"],"quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","timeFormat-medium":"ah:mm:ss","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"eraAbbr":["佛历"],"field-minute":"分钟","field-dayperiod":"上午/下午","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨天","dateFormatItem-h":"ah时","dayPeriods-format-narrow-am":"上午","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M-dE","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"时区","dateFormatItem-y":"Gy年","field-year-relative+-1":"去年","field-month-relative+-1":"上个月","dateFormatItem-hm":"ah:mm","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"eraNames":["佛历"],"days-format-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-yyyyMd":"Gy-M-d","field-month":"月","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-tue-relative+0":"本周二","field-tue-relative+1":"下周二","dayPeriods-format-wide-am":"上午","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","dateFormat-short":"Gy-M-d","dayPeriods-format-narrow-noon":"中午","field-second":"秒钟","field-sat-relative+-1":"上周六","field-sun-relative+-1":"上周日","field-month-relative+0":"本月","field-month-relative+1":"下个月","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上周","dateFormatItem-yyyyM":"Gy-M","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下午","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","dateFormatItem-hms":"ah:mm:ss","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"Gy年M月","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本周","field-week-relative+1":"下周"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/buddhist",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","timeFormat-short":"ah:mm","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-thu-short-relative+0":"本周四","field-day-short-relative+-1":"昨天","dateTimeFormat-short":"{1} {0}","field-thu-short-relative+1":"下周四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","dateFormatItem-EBhms":"EB h:mm:ss","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","dayPeriods-format-narrow-am":"上午","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月中日","dayPeriods-format-abbr-am":"上午","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","timeFormat-medium":"ah:mm:ss","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","dateFormatItem-yyyyQQQ":"Gy年第Q季度","eraNames":["佛历"],"field-weekOfMonth":"月中周","dayPeriods-standAlone-abbr-pm":"下午","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年MM月d日E","dateFormatItem-yyyyMd":"Gy-M-d","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","dayPeriods-format-wide-am":"上午","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","dateFormatItem-yyyyMEd":"Gy-M-d(E)","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上周六","field-second":"秒","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dayPeriods-standAlone-wide-pm":"下午","dateFormatItem-Ehms":"Ea h:mm:ss","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年MM月d日","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"Gy年MM月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LL","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","dayPeriods-format-narrow-pm":"下午","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["佛历"],"quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dayPeriods-format-abbr-pm":"下午","dateFormatItem-yyyyM":"Gy-M","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上季度","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"上午/下午","dayPeriods-standAlone-narrow-am":"上午","field-week-narrow-relative+-1":"上周","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dayPeriods-format-wide-pm":"下午","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M-d","field-minute-narrow-relative+0":"此刻","field-hour":"小时","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上个月","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","dateFormatItem-EBhm":"EB h:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","dateFormatItem-Ehm":"Ea h:mm","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","timeFormat-long":"z ah:mm:ss","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","dateFormat-short":"Gy-M-d","dateFormatItem-Bh":"Bh时","field-thu-short-relative+-1":"上周四","field-year-narrow-relative+-1":"去年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+-1":"上周一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上周四","field-tue-narrow-relative+-1":"上周二","field-weekOfMonth-short":"月中周","dateFormatItem-H":"H时","dateFormatItem-yyyy":"Gy年","dayPeriods-standAlone-narrow-pm":"下午","dateFormatItem-M":"M月","field-wed-short-relative+0":"本周三","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"现在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","dateFormatItem-h":"ah时","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","timeFormat-full":"zzzz ah:mm:ss","dateFormatItem-MEd":"M-dE","field-zone-narrow":"时区","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-narrow-relative+1":"下周四","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","field-fri-short-relative+-1":"上周五","dateFormatItem-hms":"ah:mm:ss","field-thu-relative+-1":"上周四","field-week":"周","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-Ed":"d日E","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"小时","field-zone-short":"时区","quarters-format-abbr":["1季度","2季度","3季度","4季度"],"field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","eraNarrow":"佛历","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","dayPeriods-standAlone-abbr-am":"上午","field-day-relative+-2":"前天","field-weekday-short":"工作日","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五","dayPeriods-standAlone-wide-am":"上午"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/chinese.js b/lib/dojo/cldr/nls/zh/chinese.js
index 9daad9f47..e9242f2c8 100644
--- a/lib/dojo/cldr/nls/zh/chinese.js
+++ b/lib/dojo/cldr/nls/zh/chinese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/chinese",{"months-format-narrow":["正","二","三","四","五","六","七","八","九","十","冬","腊"],"field-second-relative+0":"现在","field-weekday":"工作日","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-GyMMMEd":"rU年MMMdE","dateFormatItem-MMMEd":"MMMd日E","field-tue-relative+-1":"上周二","dateFormat-long":"rU年MMMd","field-fri-relative+-1":"上周五","field-wed-relative+-1":"上周三","months-format-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","腊月"],"dateFormatItem-yyyyQQQ":"rU年QQQQ","dateFormat-full":"rU年MMMdEEEE","dateFormatItem-yyyyMEd":"rU年MMMd,E","field-thu-relative+-1":"上周四","dateFormatItem-Md":"M-d","dateFormatItem-yMd":"r年MMMd","field-era":"纪元","months-standAlone-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","腊月"],"field-year":"年","field-hour":"小时","months-format-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","腊月"],"field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","field-day-relative+0":"今天","field-thu-relative+0":"本周四","field-day-relative+1":"明天","field-thu-relative+1":"下周四","dateFormatItem-GyMMMd":"r年MMMd","field-day-relative+2":"后天","months-standAlone-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","冬月","腊月"],"dateFormatItem-Gy":"rU年","dateFormatItem-yyyyMMMEd":"rU年MMMdE","dateFormatItem-M":"MMM","dateFormatItem-yyyyMMM":"rU年MMM","dateFormatItem-yyyyMMMd":"r年MMMd","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","field-minute":"分钟","field-dayperiod":"上午/下午","dateFormatItem-d":"d日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","dateFormatItem-MMMd":"MMMd日","dateFormatItem-MEd":"M-dE","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","field-day":"日","field-zone":"时区","dateFormatItem-y":"rU年","months-standAlone-narrow":["正","二","三","四","五","六","七","八","九","十","冬","腊"],"field-year-relative+-1":"去年","field-month-relative+-1":"上个月","dateFormatItem-yyyyMd":"r年MMMd","field-month":"月","field-tue-relative+0":"本周二","field-tue-relative+1":"下周二","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","dateFormat-short":"r-M-d","field-second":"秒钟","field-sat-relative+-1":"上周六","field-sun-relative+-1":"上周日","field-month-relative+0":"本月","field-month-relative+1":"下个月","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"r年MMMd","field-year-relative+0":"今年","field-week-relative+-1":"上周","dateFormatItem-yyyyM":"rU年MMM","field-year-relative+1":"明年","dateFormatItem-yyyyQQQQ":"rU年QQQQ","dateFormatItem-GyMMM":"rU年MMM","field-mon-relative+-1":"上周一","dateFormatItem-yyyy":"rU年","field-week-relative+0":"本周","field-week-relative+1":"下周"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/chinese",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-ms":"mm:ss","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本周四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下周四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","dateFormatItem-EBhms":"EB h:mm:ss","field-wed-narrow-relative+-1":"上周三","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","dateFormatItem-MMMd":"MMMd日","field-weekdayOfMonth-narrow":"月中日","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","dateFormatItem-yyyyQQQ":"rU年QQQQ","months-standAlone-narrow":["正","二","三","四","五","六","七","八","九","十","冬","腊"],"field-weekOfMonth":"月中周","field-month-short":"月","dateFormatItem-GyMMMEd":"rU年MMMdE","dateFormatItem-yyyyMd":"r年MMMd","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","dateFormatItem-yyyyMEd":"rU年MMMd,E","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上周六","field-second":"秒","dateFormat-long":"rU年MMMd","dateFormatItem-GyMMMd":"r年MMMd","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"rU年MMM","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","dateFormat-medium":"r年MMMd","dateFormatItem-yyyyMMMM":"rU年MMMM","dateFormatItem-UMMM":"U年MMM","dateFormatItem-yyyyM":"rU年MMM","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-mon-relative+1":"下周一","field-day-narrow-relative+-2":"前天","months-format-narrow":["正","二","三","四","五","六","七","八","九","十","十一","腊"],"field-quarter-relative+-1":"上季度","dateFormatItem-yyyyMMMd":"r年MMMd","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上周","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M-d","field-hour":"小时","field-minute-narrow-relative+0":"此刻","months-format-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","腊月"],"dateFormat-full":"rU年MMMdEEEE","dateFormatItem-UMd":"U年MMMd","field-month-relative+-1":"上个月","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","dateFormatItem-EBhm":"EB h:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","months-format-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","腊月"],"field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","dateFormat-short":"r/M/d","dateFormatItem-Bh":"Bh时","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上周四","dateFormatItem-yyyyMMMEd":"rU年MMMdE","field-mon-narrow-relative+-1":"上周一","dateFormatItem-MMMMd":"MMMMd日","field-thu-narrow-relative+-1":"上周四","dateFormatItem-E":"ccc","dateFormatItem-H":"HH","field-weekOfMonth-short":"月中周","field-tue-narrow-relative+-1":"上周二","dateFormatItem-yyyy":"rU年","dateFormatItem-M":"MMM","months-standAlone-wide":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","腊月"],"field-wed-short-relative+0":"本周三","field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"现在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","dateFormatItem-h":"ah时","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","months-standAlone-abbr":["正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","腊月"],"field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","dateFormatItem-MEd":"M-dE","field-zone-narrow":"时区","dateFormatItem-y":"rU年","field-thu-narrow-relative+0":"本周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-narrow-relative+1":"下周四","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","dateFormatItem-hms":"ah:mm:ss","field-fri-short-relative+-1":"上周五","field-thu-relative+-1":"上周四","dateFormatItem-yMd":"r年MMMd","field-week":"周","dateFormatItem-Ed":"d日E","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"rU年MMM","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","dateFormatItem-yyyyQQQQ":"rU年QQQQ","dateFormatItem-UMMMd":"U年MMMd","field-hour-short":"小时","field-zone-short":"时区","field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","dateFormatItem-MMMEd":"MMMd日E","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"工作日","dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","dateFormatItem-Gy":"rU年","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","dateFormatItem-UM":"U年MMM","field-fri-narrow-relative+1":"下周五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/coptic.js b/lib/dojo/cldr/nls/zh/coptic.js
index 8db4246b8..6e7d8c2fb 100644
--- a/lib/dojo/cldr/nls/zh/coptic.js
+++ b/lib/dojo/cldr/nls/zh/coptic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/coptic",{"field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","field-dayperiod":"上午/下午","field-sun-relative+-1":"上周日","field-mon-relative+-1":"上周一","field-minute":"分钟","field-day-relative+-1":"昨天","field-weekday":"工作日","field-day-relative+-2":"前天","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"纪元","field-hour":"小时","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-wed-relative+-1":"上周三","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"后天","field-tue-relative+0":"本周二","field-zone":"时区","field-tue-relative+1":"下周二","field-week-relative+-1":"上周","field-year-relative+0":"今年","field-year-relative+1":"明年","field-sat-relative+-1":"上周六","field-year-relative+-1":"去年","field-year":"年","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"field-week":"周","field-week-relative+0":"本周","field-week-relative+1":"下周","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-month-relative+0":"本月","field-month":"月","field-month-relative+1":"下个月","field-fri-relative+-1":"上周五","field-second":"秒钟","field-tue-relative+-1":"上周二","field-day":"日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-thu-relative+0":"本周四","field-second-relative+0":"现在","field-thu-relative+1":"下周四","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","field-month-relative+-1":"上个月","field-thu-relative+-1":"上周四"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/coptic",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-thu-short-relative+0":"本周四","field-day-short-relative+-1":"昨天","field-thu-short-relative+1":"下周四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","field-weekdayOfMonth-narrow":"月中日","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["科普特历前","科普特历"],"field-weekOfMonth":"月中周","field-month-short":"月","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","field-sat-narrow-relative+-1":"上周六","field-second":"秒","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","field-month":"月","field-day-narrow":"日","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","eraAbbr":["科普特历前","科普特历"],"field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"上季度","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上周","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","field-hour":"小时","field-minute-narrow-relative+0":"此刻","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"dateFormat-full":"Gy年MM月d日EEEE","field-month-relative+-1":"上个月","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","field-thu-short-relative+-1":"上周四","field-year-narrow-relative+-1":"去年","field-mon-narrow-relative+-1":"上周一","field-thu-narrow-relative+-1":"上周四","field-tue-narrow-relative+-1":"上周二","field-weekOfMonth-short":"月中周","field-wed-short-relative+0":"本周三","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","field-second-narrow-relative+0":"现在","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","field-zone-narrow":"时区","field-thu-narrow-relative+0":"本周四","field-thu-narrow-relative+1":"下周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","field-fri-short-relative+-1":"上周五","field-thu-relative+-1":"上周四","field-week":"周","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","field-hour-short":"小时","field-zone-short":"时区","field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","eraNarrow":["科普特历前","科普特历"],"field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"工作日","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/currency.js b/lib/dojo/cldr/nls/zh/currency.js
index 3d59693bc..8c1fa4d03 100644
--- a/lib/dojo/cldr/nls/zh/currency.js
+++ b/lib/dojo/cldr/nls/zh/currency.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/currency",{"HKD_displayName":"港元","CHF_displayName":"瑞士法郎","JPY_symbol":"JP¥","CAD_displayName":"加拿大元","HKD_symbol":"HK$","CNY_displayName":"人民币","USD_symbol":"US$","AUD_displayName":"澳大利亚元","JPY_displayName":"日元","CAD_symbol":"CA$","USD_displayName":"美元","EUR_symbol":"€","CNY_symbol":"¥","GBP_displayName":"英镑","GBP_symbol":"£","AUD_symbol":"AU$","EUR_displayName":"欧元"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/currency",{"HKD_displayName":"港元","CNY_displayName":"人民币","JPY_displayName":"日元","JPY_symbol":"JP¥","USD_displayName":"美元","CAD_symbol":"CA$","GBP_displayName":"英镑","CHF_displayName":"瑞士法郎","CNY_symbol":"¥","EUR_displayName":"欧元","GBP_symbol":"£","CAD_displayName":"加拿大元","USD_symbol":"US$","EUR_symbol":"€","AUD_displayName":"澳大利亚元","CHF_symbol":"CHF","HKD_symbol":"HK$","AUD_symbol":"AU$"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/dangi.js b/lib/dojo/cldr/nls/zh/dangi.js
new file mode 100644
index 000000000..e1ea030bd
--- /dev/null
+++ b/lib/dojo/cldr/nls/zh/dangi.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/zh/dangi",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-thu-short-relative+0":"本周四","field-day-short-relative+-1":"昨天","field-thu-short-relative+1":"下周四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","field-weekdayOfMonth-narrow":"月中日","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","field-weekOfMonth":"月中周","field-month-short":"月","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","field-sat-narrow-relative+-1":"上周六","field-second":"秒","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","field-month":"月","field-day-narrow":"日","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上季度","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上周","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","field-hour":"小时","field-minute-narrow-relative+0":"此刻","field-month-relative+-1":"上个月","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","field-thu-short-relative+-1":"上周四","field-year-narrow-relative+-1":"去年","field-mon-narrow-relative+-1":"上周一","field-thu-narrow-relative+-1":"上周四","field-tue-narrow-relative+-1":"上周二","field-weekOfMonth-short":"月中周","field-wed-short-relative+0":"本周三","field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","field-second-narrow-relative+0":"现在","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-sat-relative+0":"本周六","field-day-short-relative+1":"明天","field-quarter-narrow-relative+1":"下季度","field-sat-relative+1":"下周六","field-day-short-relative+2":"后天","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","field-zone-narrow":"时区","field-thu-narrow-relative+0":"本周四","field-thu-narrow-relative+1":"下周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","field-fri-short-relative+-1":"上周五","field-thu-relative+-1":"上周四","field-week":"周","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","field-hour-short":"小时","field-zone-short":"时区","field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"工作日","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/ethiopic-amete-alem.js b/lib/dojo/cldr/nls/zh/ethiopic-amete-alem.js
new file mode 100644
index 000000000..5a43f59c4
--- /dev/null
+++ b/lib/dojo/cldr/nls/zh/ethiopic-amete-alem.js
@@ -0,0 +1,8 @@
+/*
+ Copyright (c) 2004-2016, The JS Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+//>>built
+define("dojo/cldr/nls/zh/ethiopic-amete-alem",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-thu-short-relative+0":"本周四","field-day-short-relative+-1":"昨天","field-thu-short-relative+1":"下周四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","field-weekdayOfMonth-narrow":"月中日","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","eraNames":["埃塞俄比亚阿米特阿莱姆历"],"field-weekOfMonth":"月中周","field-month-short":"月","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","field-sat-narrow-relative+-1":"上周六","field-second":"秒","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","field-month":"月","field-day-narrow":"日","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上季度","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上周","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","field-hour":"小时","field-minute-narrow-relative+0":"此刻","field-month-relative+-1":"上个月","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","field-thu-short-relative+-1":"上周四","field-year-narrow-relative+-1":"去年","field-mon-narrow-relative+-1":"上周一","field-thu-narrow-relative+-1":"上周四","field-tue-narrow-relative+-1":"上周二","field-weekOfMonth-short":"月中周","field-wed-short-relative+0":"本周三","field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","field-second-narrow-relative+0":"现在","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-sat-relative+0":"本周六","field-day-short-relative+1":"明天","field-quarter-narrow-relative+1":"下季度","field-sat-relative+1":"下周六","field-day-short-relative+2":"后天","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","field-zone-narrow":"时区","field-thu-narrow-relative+0":"本周四","field-thu-narrow-relative+1":"下周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","field-fri-short-relative+-1":"上周五","field-thu-relative+-1":"上周四","field-week":"周","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","field-hour-short":"小时","field-zone-short":"时区","field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"工作日","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/ethiopic.js b/lib/dojo/cldr/nls/zh/ethiopic.js
index b6a6ed72c..49e5d0b28 100644
--- a/lib/dojo/cldr/nls/zh/ethiopic.js
+++ b/lib/dojo/cldr/nls/zh/ethiopic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/ethiopic",{"field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","field-dayperiod":"上午/下午","field-sun-relative+-1":"上周日","field-mon-relative+-1":"上周一","field-minute":"分钟","field-day-relative+-1":"昨天","field-weekday":"工作日","field-day-relative+-2":"前天","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-era":"纪元","field-hour":"小时","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-wed-relative+-1":"上周三","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"后天","field-tue-relative+0":"本周二","field-zone":"时区","field-tue-relative+1":"下周二","field-week-relative+-1":"上周","field-year-relative+0":"今年","field-year-relative+1":"明年","field-sat-relative+-1":"上周六","field-year-relative+-1":"去年","field-year":"年","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"field-week":"周","field-week-relative+0":"本周","field-week-relative+1":"下周","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-month-relative+0":"本月","field-month":"月","field-month-relative+1":"下个月","field-fri-relative+-1":"上周五","field-second":"秒钟","field-tue-relative+-1":"上周二","field-day":"日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-thu-relative+0":"本周四","field-second-relative+0":"现在","field-thu-relative+1":"下周四","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","field-month-relative+-1":"上个月","field-thu-relative+-1":"上周四"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/ethiopic",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-thu-short-relative+0":"本周四","field-day-short-relative+-1":"昨天","field-thu-short-relative+1":"下周四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","field-weekdayOfMonth-narrow":"月中日","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["埃塞俄比亚历前","埃塞俄比亚历"],"field-weekOfMonth":"月中周","field-month-short":"月","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","field-sat-narrow-relative+-1":"上周六","field-second":"秒","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","field-month":"月","field-day-narrow":"日","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","eraAbbr":["埃历前","埃历"],"field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"field-quarter-relative+-1":"上季度","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上周","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","field-hour":"小时","field-minute-narrow-relative+0":"此刻","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"dateFormat-full":"Gy年MM月d日EEEE","field-month-relative+-1":"上个月","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","field-thu-short-relative+-1":"上周四","field-year-narrow-relative+-1":"去年","field-mon-narrow-relative+-1":"上周一","field-thu-narrow-relative+-1":"上周四","field-tue-narrow-relative+-1":"上周二","field-weekOfMonth-short":"月中周","field-wed-short-relative+0":"本周三","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","field-second-narrow-relative+0":"现在","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","field-zone-narrow":"时区","field-thu-narrow-relative+0":"本周四","field-thu-narrow-relative+1":"下周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","field-fri-short-relative+-1":"上周五","field-thu-relative+-1":"上周四","field-week":"周","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","field-hour-short":"小时","field-zone-short":"时区","field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","eraNarrow":["埃历前","埃历"],"field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"工作日","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/generic.js b/lib/dojo/cldr/nls/zh/generic.js
index 1328230b5..0a3786422 100644
--- a/lib/dojo/cldr/nls/zh/generic.js
+++ b/lib/dojo/cldr/nls/zh/generic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/generic",{"field-second-relative+0":"现在","field-weekday":"工作日","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","field-tue-relative+-1":"上周二","dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上周五","field-wed-relative+-1":"上周三","dateFormatItem-yyyyQQQ":"Gy年第Q季度","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/dE","field-thu-relative+-1":"上周四","dateFormatItem-Md":"M/d","field-era":"纪元","field-year":"年","dateFormatItem-yyyyMMMM":"Gy年M月","field-hour":"小时","field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","field-day-relative+0":"今天","field-day-relative+1":"明天","field-thu-relative+0":"本周四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"后天","field-thu-relative+1":"下周四","dateFormatItem-H":"H时","dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-sun-relative+0":"本周日","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"下周日","field-minute":"分钟","field-dayperiod":"上午/下午","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨天","dateFormatItem-h":"ah时","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/dE","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","field-day":"日","field-zone":"时区","dateFormatItem-y":"Gy年","field-year-relative+-1":"去年","field-month-relative+-1":"上个月","dateFormatItem-hm":"ah:mm","dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"LLL","field-tue-relative+0":"本周二","field-tue-relative+1":"下周二","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","dateFormat-short":"Gy/M/d","field-second":"秒钟","field-sat-relative+-1":"上周六","field-sun-relative+-1":"上周日","field-month-relative+0":"本月","field-month-relative+1":"下个月","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上周","dateFormatItem-yyyyM":"Gy年M月","field-year-relative+1":"明年","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上周一","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本周","field-week-relative+1":"下周"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/generic",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-ms":"mm:ss","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本周四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下周四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","dateFormatItem-EBhms":"EB h:mm:ss","field-wed-narrow-relative+-1":"上周三","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月中日","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","dateFormatItem-yyyyQQQ":"Gy年第Q季度","field-weekOfMonth":"月中周","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","dateFormatItem-yyyyMEd":"G y/M/dE","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上周六","field-second":"秒","dateFormatItem-Ehms":"Ea h:mm:ss","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LL","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","dateFormatItem-yyyyM":"Gy年M月","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上季度","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上周","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M/d","field-hour":"小时","field-minute-narrow-relative+0":"此刻","dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上个月","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","dateFormatItem-EBhm":"EB h:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","dateFormatItem-Ehm":"Ea h:mm","field-minute-short-relative+0":"此刻","field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","dateFormat-short":"Gy/M/d","dateFormatItem-Bh":"Bh时","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上周四","dateFormatItem-yyyyMMMEd":"Gy年MM月d日E","field-mon-narrow-relative+-1":"上周一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上周四","dateFormatItem-E":"ccc","dateFormatItem-H":"H时","field-weekOfMonth-short":"月中周","field-tue-narrow-relative+-1":"上周二","dateFormatItem-yyyy":"Gy年","dateFormatItem-M":"L","field-wed-short-relative+0":"本周三","field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"现在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","dateFormatItem-h":"ah时","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","dateFormatItem-MEd":"M/dE","field-zone-narrow":"时区","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-narrow-relative+1":"下周四","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","dateFormatItem-hms":"ah:mm:ss","field-fri-short-relative+-1":"上周五","field-thu-relative+-1":"上周四","field-week":"周","dateFormatItem-Ed":"d日E","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","field-hour-short":"小时","field-zone-short":"时区","field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","field-mon-narrow-relative+0":"本周一","dateFormatItem-EHm":"E HH:mm","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"月中周","dateFormatItem-EHms":"E HH:mm:ss","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"工作日","dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/gregorian.js b/lib/dojo/cldr/nls/zh/gregorian.js
index a7d86f404..6a3947d33 100644
--- a/lib/dojo/cldr/nls/zh/gregorian.js
+++ b/lib/dojo/cldr/nls/zh/gregorian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/gregorian",{"dateFormatItem-Ehm":"Eah:mm","days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"现在","quarters-standAlone-narrow":["1","2","3","4"],"field-weekday":"工作日","dateFormatItem-yQQQ":"y年第Q季度","dateFormatItem-yMEd":"y/M/dE","field-wed-relative+0":"本周三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","field-wed-relative+1":"下周三","eraNarrow":["公元前","公元"],"dateFormatItem-yMM":"y年M月","dayPeriods-format-wide-earlyMorning":"清晨","field-tue-relative+-1":"上周二","dayPeriods-format-wide-morning":"上午","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormat-long":"y年M月d日","field-fri-relative+-1":"上周五","field-wed-relative+-1":"上周三","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateTimeFormat-medium":"{1} {0}","dayPeriods-format-wide-pm":"下午","dateFormat-full":"y年M月d日EEEE","field-thu-relative+-1":"上周四","dateFormatItem-Md":"M/d","dayPeriods-format-narrow-midDay":"中午","dayPeriods-format-wide-noon":"中午","dateFormatItem-yMd":"y/M/d","dateFormatItem-yM":"y年M月","field-era":"纪元","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"timeFormat-long":"z ah:mm:ss","dateFormatItem-yMMM":"y年M月","dateFormatItem-yQQQQ":"y年第Q季度","field-year":"年","dateFormatItem-MMdd":"MM/dd","field-hour":"小时","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","timeFormat-full":"zzzz ah:mm:ss","dayPeriods-format-narrow-morning":"上午","field-day-relative+0":"今天","field-day-relative+1":"明天","field-thu-relative+0":"本周四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"后天","field-thu-relative+1":"下周四","dateFormatItem-H":"H时","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["1季度","2季度","3季度","4季度"],"quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-Gy":"Gy年","dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"timeFormat-medium":"ah:mm:ss","field-sun-relative+0":"本周日","dateFormatItem-Hm":"HH:mm","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"field-sun-relative+1":"下周日","eraAbbr":["公元前","公元"],"field-minute":"分钟","field-dayperiod":"上午/下午","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dayPeriods-format-wide-night":"晚上","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","quarters-format-narrow":["1","2","3","4"],"field-day-relative+-1":"昨天","dateFormatItem-h":"ah时","dateTimeFormat-long":"{1} {0}","dayPeriods-format-narrow-am":"上午","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dayPeriods-format-wide-midDay":"中午","dateFormatItem-MEd":"M/dE","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"本周五","dateFormatItem-yMMMM":"y年M月","field-fri-relative+1":"下周五","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"时区","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"dateFormatItem-y":"y年","field-year-relative+-1":"去年","dayPeriods-format-narrow-night":"晚上","field-month-relative+-1":"上个月","dateFormatItem-hm":"ah:mm","dayPeriods-format-narrow-weeHours":"凌晨","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"eraNames":["公元前","公元"],"dateFormatItem-yMMMd":"y年M月d日","days-format-narrow":["日","一","二","三","四","五","六"],"dayPeriods-format-narrow-earlyMorning":"清晨","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-MMM":"LLL","field-month":"月","field-tue-relative+0":"本周二","field-tue-relative+1":"下周二","dayPeriods-format-wide-am":"上午","dateFormatItem-EHm":"EHH:mm","dayPeriods-format-wide-weeHours":"凌晨","dateFormatItem-MMMMdd":"M月dd日","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","dateFormat-short":"yy/M/d","dayPeriods-format-wide-afternoon":"下午","dateFormatItem-EHms":"EHH:mm:ss","dateFormatItem-Ehms":"Eah:mm:ss","dayPeriods-format-narrow-afternoon":"下午","dayPeriods-format-narrow-noon":"中午","field-second":"秒钟","field-sat-relative+-1":"上周六","dateFormatItem-yMMMEd":"y年M月d日E","field-sun-relative+-1":"上周日","field-month-relative+0":"本月","field-month-relative+1":"下个月","dateFormatItem-Ed":"d日E","dateTimeFormats-appendItem-Timezone":"{1}{0}","field-week":"周","dateFormat-medium":"y年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上周","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下午","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上周一","field-week-relative+0":"本周","field-week-relative+1":"下周"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/gregorian",{"dateFormatItem-yMMMM":"y年M月","field-thu-narrow-relative+0":"本周四","field-thu-narrow-relative+1":"下周四","field-sun-narrow-relative+0":"本周日","field-sun-narrow-relative+1":"下周日","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dayPeriods-standAlone-abbr-pm":"下午","dateFormatItem-Hms":"HH:mm:ss","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五","eraNarrow":["公元前","公元"],"dateFormatItem-Hmv":"v HH:mm","dateFormatItem-hmsv":"v ah:mm:ss","dateFormatItem-yMMMd":"y年M月d日","dayPeriods-format-abbr-night1":"凌晨","dayPeriods-format-narrow-evening1":"晚上","days-standAlone-narrow":["日","一","二","三","四","五","六"],"days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dayPeriods-format-abbr-afternoon1":"中午","dayPeriods-format-wide-evening1":"晚上","dayPeriods-format-abbr-afternoon2":"下午","dateFormatItem-Ehm":"Eah:mm","dateTimeFormats-appendItem-Timezone":"{1}{0}","field-wed-narrow-relative+-1":"上周三","dayPeriods-standAlone-wide-evening1":"晚上","field-minute-narrow-relative+0":"此刻","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yMM":"y年M月","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","dateFormatItem-Ehms":"Eah:mm:ss","dayPeriods-standAlone-narrow-evening1":"晚上","dayPeriods-standAlone-abbr-afternoon1":"中午","dayPeriods-standAlone-abbr-afternoon2":"下午","field-thu-relative+0":"本周四","dayPeriods-standAlone-abbr-night1":"凌晨","field-thu-relative+1":"下周四","dayPeriods-format-wide-am":"上午","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","dateFormatItem-yMd":"y/M/d","field-thu-narrow-relative+-1":"上周四","field-quarter-relative+0":"本季度","field-quarter-relative+1":"下季度","field-sun-short-relative+0":"本周日","timeFormat-short":"ah:mm","field-sun-short-relative+1":"下周日","dateFormatItem-hms":"ah:mm:ss","dayPeriods-format-narrow-afternoon1":"中午","dateFormatItem-Md":"M/d","dayPeriods-format-narrow-afternoon2":"下午","dateFormatItem-Hmsv":"v HH:mm:ss","dateFormatItem-hmv":"v ah:mm","field-week-narrow":"周","field-hour-relative+0":"这一时间 / 此时","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-mon-narrow-relative+-1":"上周一","field-minute-narrow":"分","field-thu-short-relative+0":"本周四","field-mon-relative+0":"本周一","field-thu-short-relative+1":"下周四","field-mon-relative+1":"下周一","field-day-narrow-relative+0":"今天","field-era-short":"纪元","field-day-narrow-relative+1":"明天","field-sat-narrow-relative+0":"本周六","field-day-narrow-relative+2":"后天","timeFormat-long":"z ah:mm:ss","field-sat-narrow-relative+1":"下周六","field-week-narrow-relative+0":"本周","field-week-narrow-relative+1":"下周","field-hour-short-relative+0":"这一时间 / 此时","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-month":"月","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-weekday-narrow":"工作日","dayPeriods-standAlone-narrow-afternoon1":"中午","dayPeriods-standAlone-narrow-afternoon2":"下午","field-year-relative+0":"今年","field-year-relative+1":"明年","dayPeriods-format-abbr-evening1":"晚上","dayPeriods-format-narrow-midnight":"午夜","dayPeriods-format-wide-midnight":"午夜","field-tue-relative+0":"本周二","field-tue-relative+1":"下周二","dayPeriods-standAlone-abbr-evening1":"晚上","field-minute-short-relative+0":"此刻","dateFormatItem-hm":"ah:mm","dayPeriods-standAlone-wide-midnight":"午夜","field-year-narrow":"年","field-tue-short-relative+0":"本周二","dayPeriods-standAlone-narrow-midnight":"午夜","field-tue-short-relative+1":"下周二","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","dateTimeFormat-full":"{1}{0}","dateFormatItem-E":"ccc","dateFormatItem-EBhm":"EBh:mm","dateFormatItem-H":"H时","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-M":"M月","field-wed-short-relative+0":"本周三","field-fri-short-relative+0":"本周五","field-wed-short-relative+1":"下周三","field-fri-short-relative+1":"下周五","field-weekOfMonth-short":"月中周","field-quarter-short-relative+-1":"上季度","field-year-short-relative+-1":"去年","dateFormatItem-Bhm":"Bh:mm","dayPeriods-format-wide-night1":"凌晨","dateTimeFormat-medium":"{1}{0}","field-quarter-narrow-relative+-1":"上季度","dateFormatItem-d":"d日","dayPeriods-format-abbr-pm":"下午","dateFormatItem-h":"ah时","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"field-weekOfMonth-narrow":"月中周","dateFormatItem-y":"y年","field-minute-relative+0":"此刻","field-year-short-relative+0":"今年","dateFormatItem-EBhms":"EBh:mm:ss","field-year-short-relative+1":"明年","field-weekday":"工作日","dayPeriods-format-narrow-pm":"下午","field-tue-narrow-relative+-1":"上周二","dateFormatItem-yMEd":"y/M/dE","dayPeriods-standAlone-wide-night1":"凌晨","field-year-narrow-relative+-1":"去年","field-sat-relative+-1":"上周六","dayPeriods-format-abbr-midnight":"午夜","dayPeriods-format-narrow-morning1":"早上","dayPeriods-format-narrow-morning2":"上午","dayPeriods-format-wide-morning1":"清晨","dayPeriods-format-wide-morning2":"上午","dayPeriods-standAlone-abbr-midnight":"午夜","dayPeriods-standAlone-narrow-pm":"下午","dayPeriods-standAlone-wide-morning1":"早上","field-mon-narrow-relative+0":"本周一","dayPeriods-standAlone-wide-morning2":"上午","field-mon-narrow-relative+1":"下周一","field-second":"秒","dateFormatItem-yMMMEd":"y年M月d日E","field-year-relative+-1":"去年","field-weekdayOfMonth-short":"月中日","dateFormat-short":"y/M/d","eraNames":["公元前","公元"],"field-second-short":"秒","field-thu-short-relative+-1":"上周四","field-zone":"时区","field-dayperiod-narrow":"上午/下午","field-sun-short-relative+-1":"上周日","dayPeriods-standAlone-narrow-morning1":"早上","dayPeriods-standAlone-narrow-morning2":"上午","eraAbbr":["公元前","公元"],"field-week-short":"周","dayPeriods-standAlone-abbr-am":"上午","dayPeriods-standAlone-wide-pm":"下午","dateFormatItem-ms":"mm:ss","field-day-relative+0":"今天","field-day-relative+1":"明天","field-day-relative+2":"后天","field-day-short-relative+0":"今天","field-dayOfYear-short":"年中日","field-day-short-relative+1":"明天","dateFormat-long":"y年M月d日","field-day-short-relative+2":"后天","field-sun-narrow-relative+-1":"上周日","field-second-relative+0":"现在","field-quarter-relative+-1":"上季度","dayPeriods-format-narrow-night1":"凌晨","quarters-format-abbr":["1季度","2季度","3季度","4季度"],"dayPeriods-standAlone-narrow-night1":"凌晨","field-week-relative+-1":"上周","dayPeriods-format-abbr-morning1":"早上","field-month-relative+-1":"上个月","dayPeriods-format-abbr-morning2":"上午","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year":"年","field-era":"纪元","dayPeriods-standAlone-abbr-morning1":"早上","dayPeriods-standAlone-abbr-morning2":"上午","days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"quarters-format-narrow":["1","2","3","4"],"dateFormatItem-yQQQQ":"y年第Q季度","field-day-short-relative+-1":"昨天","field-day-short-relative+-2":"前天","dateFormatItem-GyMMM":"Gy年M月","timeFormat-full":"zzzz ah:mm:ss","dateFormatItem-Bhms":"Bh:mm:ss","field-hour":"小时","field-dayOfYear-narrow":"年中日","field-second-narrow-relative+0":"现在","field-quarter":"季度","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","dateFormatItem-MMdd":"MM/dd","field-day":"日","field-mon-relative+-1":"上周一","field-dayOfYear":"年中日","dateFormat-medium":"y年M月d日","dateTimeFormat-short":"{1} {0}","dateFormatItem-yMMM":"y年M月","dateFormatItem-GyMMMd":"Gy年M月d日","dateFormatItem-MEd":"M/dE","field-tue-short-relative+-1":"上周二","field-year-short":"年","field-month-short":"月","dateFormatItem-MMMEd":"M月d日E","dayPeriods-format-wide-afternoon1":"中午","dateFormatItem-MMMd":"M月d日","dayPeriods-format-wide-afternoon2":"下午","dateFormatItem-Bh":"Bh时","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"dayPeriods-format-abbr-am":"上午","field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","dayPeriods-format-wide-pm":"下午","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"field-zone-short":"时区","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","dayPeriods-standAlone-wide-afternoon1":"中午","dayPeriods-standAlone-wide-afternoon2":"下午","field-fri-short-relative+-1":"上周五","field-month-narrow":"月","dayPeriods-format-narrow-am":"上午","field-month-narrow-relative+-1":"上个月","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"field-weekday-short":"工作日","field-day-narrow-relative+-1":"昨天","field-day-narrow-relative+-2":"前天","field-quarter-short":"季","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"days-format-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-EHm":"EHH:mm","field-quarter-narrow":"季","field-mon-short-relative+0":"本周一","field-mon-short-relative+1":"下周一","field-dayperiod-short":"上午/下午","dayPeriods-standAlone-narrow-am":"上午","field-week-narrow-relative+-1":"上周","field-thu-relative+-1":"上周四","field-fri-narrow-relative+-1":"上周五","field-mon-short-relative+-1":"上周一","timeFormat-medium":"ah:mm:ss","field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","dateFormatItem-Ed":"d日E","field-wed-relative+-1":"上周三","field-weekOfMonth":"月中周","field-weekdayOfMonth-narrow":"月中日","dayPeriods-standAlone-wide-am":"上午","dateFormatItem-yQQQ":"y年第Q季度","field-fri-relative+-1":"上周五","field-minute":"分钟","quarters-standAlone-narrow":["1","2","3","4"],"field-second-short-relative+0":"现在","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"field-day-short":"日","field-dayperiod":"上午/下午","field-hour-short":"小时","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-month-relative+0":"本月","field-second-narrow":"秒","field-month-relative+1":"下个月","dateFormat-full":"y年M月d日EEEE","field-era-narrow":"纪元","field-sat-short-relative+-1":"上周六","field-week-short-relative+-1":"上周","dateTimeFormat-long":"{1} {0}","dateFormatItem-yM":"y年M月","field-sun-relative+-1":"上周日","field-wed-short-relative+-1":"上周三","field-weekdayOfMonth":"月中日","field-quarter-narrow-relative+0":"本季度","dateFormatItem-GyMMMEd":"Gy年M月d日E","field-quarter-narrow-relative+1":"下季度","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","field-hour-narrow":"小时","field-year-narrow-relative+0":"今年","field-year-narrow-relative+1":"明年","dateFormatItem-Gy":"Gy年","field-zone-narrow":"时区","field-tue-relative+-1":"上周二","field-minute-short":"分","dateFormatItem-yw":"Y年第w周","dateFormatItem-Hm":"HH:mm","field-week-relative+0":"本周","field-week-relative+1":"下周","dateFormatItem-MMM":"LLL","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","field-sat-narrow-relative+-1":"上周六","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dateFormatItem-MMMMW":"MMMM第W周","field-month-short-relative+-1":"上个月","dateFormatItem-EHms":"EHH:mm:ss","dateFormatItem-MMMMd":"M月d日","field-week":"周","field-day-narrow":"日","field-hour-narrow-relative+0":"这一时间 / 此时"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/hebrew.js b/lib/dojo/cldr/nls/zh/hebrew.js
index a5c0b3bd7..d60615c3b 100644
--- a/lib/dojo/cldr/nls/zh/hebrew.js
+++ b/lib/dojo/cldr/nls/zh/hebrew.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/hebrew",{"days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"field-second-relative+0":"现在","field-weekday":"工作日","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","eraNarrow":["希伯来历"],"field-tue-relative+-1":"上周二","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上周五","field-wed-relative+-1":"上周三","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"dateFormatItem-yyyyQQQ":"Gy年第Q季度","dayPeriods-format-wide-pm":"下午","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/dE","field-thu-relative+-1":"上周四","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"中午","field-era":"纪元","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"timeFormat-long":"z ah:mm:ss","field-year":"年","field-hour":"小时","months-format-abbr-leap":"闰7月","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","timeFormat-full":"zzzz ah:mm:ss","field-day-relative+0":"今天","field-thu-relative+0":"本周四","field-day-relative+1":"明天","field-thu-relative+1":"下周四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"后天","dateFormatItem-H":"H时","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"quarters-format-abbr":["1季度","2季度","3季度","4季度"],"quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","months-standAlone-wide-leap":"闰七月","timeFormat-medium":"ah:mm:ss","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"eraAbbr":["希伯来历"],"field-minute":"分钟","field-dayperiod":"上午/下午","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨天","dateFormatItem-h":"ah时","dayPeriods-format-narrow-am":"上午","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/dE","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"时区","months-standAlone-abbr-leap":"闰7月","dateFormatItem-y":"Gy年","field-year-relative+-1":"去年","field-month-relative+-1":"上个月","dateFormatItem-hm":"ah:mm","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"eraNames":["希伯来历"],"days-format-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-tue-relative+0":"本周二","field-tue-relative+1":"下周二","dayPeriods-format-wide-am":"上午","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","dateFormat-short":"Gy-M-d","dayPeriods-format-narrow-noon":"中午","field-second":"秒钟","field-sat-relative+-1":"上周六","field-sun-relative+-1":"上周日","field-month-relative+0":"本月","field-month-relative+1":"下个月","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上周","dateFormatItem-yyyyM":"Gy年M月","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下午","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","dateFormatItem-hms":"ah:mm:ss","months-format-wide-leap":"闰七月","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上周一","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本周","field-week-relative+1":"下周"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/hebrew",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","timeFormat-short":"ah:mm","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-thu-short-relative+0":"本周四","field-day-short-relative+-1":"昨天","field-thu-short-relative+1":"下周四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","dateFormatItem-EBhms":"EB h:mm:ss","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","dayPeriods-format-narrow-am":"上午","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月中日","dayPeriods-format-abbr-am":"上午","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","timeFormat-medium":"ah:mm:ss","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","dateFormatItem-yyyyQQQ":"Gy年第Q季度","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12","13"],"eraNames":["希伯来历"],"field-weekOfMonth":"月中周","dayPeriods-standAlone-abbr-pm":"下午","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年MM月d日E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","dayPeriods-format-wide-am":"上午","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","dateFormatItem-yyyyMEd":"G y/M/dE","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","field-sat-narrow-relative+-1":"上周六","field-second":"秒","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dayPeriods-standAlone-wide-pm":"下午","dateFormatItem-Ehms":"Ea h:mm:ss","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年MM月d日","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"Gy年MM月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LL","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","dayPeriods-format-narrow-pm":"下午","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["希伯来历"],"quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dayPeriods-format-abbr-pm":"下午","dateFormatItem-yyyyM":"Gy年M月","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上季度","dateFormatItem-yyyyMMMd":"Gy年MM月d日","field-dayperiod-narrow":"上午/下午","dayPeriods-standAlone-narrow-am":"上午","field-week-narrow-relative+-1":"上周","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dayPeriods-format-wide-pm":"下午","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","dateFormatItem-Md":"M/d","field-minute-narrow-relative+0":"此刻","field-hour":"小时","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上个月","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","dateFormatItem-EBhm":"EB h:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","dateFormatItem-Ehm":"Ea h:mm","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","timeFormat-long":"z ah:mm:ss","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","dateFormat-short":"Gy-M-d","dateFormatItem-Bh":"Bh时","field-thu-short-relative+-1":"上周四","field-year-narrow-relative+-1":"去年","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMMEd":"Gy年MM月d日E","field-mon-narrow-relative+-1":"上周一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上周四","field-weekOfMonth-short":"月中周","field-tue-narrow-relative+-1":"上周二","dateFormatItem-H":"H时","dateFormatItem-yyyy":"Gy年","dayPeriods-standAlone-narrow-pm":"下午","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月","十三月"],"field-wed-short-relative+0":"本周三","field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"field-second-narrow-relative+0":"现在","dateFormatItem-hm":"ah:mm","months-format-abbr-leap":"闰7月","dateFormatItem-d":"d日","field-weekday":"工作日","months-standAlone-narrow-leap":"7","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","dateFormatItem-h":"ah时","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月","13月"],"months-format-wide-leap":"闰七月","field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","timeFormat-full":"zzzz ah:mm:ss","dateFormatItem-MEd":"M/dE","field-zone-narrow":"时区","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-narrow-relative+1":"下周四","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","field-fri-short-relative+-1":"上周五","dateFormatItem-hms":"ah:mm:ss","field-thu-relative+-1":"上周四","field-week":"周","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-Ed":"d日E","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年MM月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"field-week-short-relative+-1":"上周","months-standAlone-abbr-leap":"闰7月","field-hour-narrow-relative+0":"这一时间 / 此时","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","field-hour-short":"小时","field-zone-short":"时区","quarters-format-abbr":["1季度","2季度","3季度","4季度"],"field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","eraNarrow":"希伯来历","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","months-standAlone-wide-leap":"闰七月","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","dayPeriods-standAlone-abbr-am":"上午","field-day-relative+-2":"前天","field-weekday-short":"工作日","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五","dayPeriods-standAlone-wide-am":"上午"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/indian.js b/lib/dojo/cldr/nls/zh/indian.js
index 427831dd3..9ecd48ea5 100644
--- a/lib/dojo/cldr/nls/zh/indian.js
+++ b/lib/dojo/cldr/nls/zh/indian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/indian",{"field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","field-dayperiod":"上午/下午","field-sun-relative+-1":"上周日","field-mon-relative+-1":"上周一","field-minute":"分钟","field-day-relative+-1":"昨天","field-weekday":"工作日","field-day-relative+-2":"前天","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-era":"纪元","field-hour":"小时","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-wed-relative+-1":"上周三","field-day-relative+0":"今天","field-day-relative+1":"明天","eraAbbr":["印度历"],"field-day-relative+2":"后天","field-tue-relative+0":"本周二","field-zone":"时区","field-tue-relative+1":"下周二","field-week-relative+-1":"上周","field-year-relative+0":"今年","field-year-relative+1":"明年","field-sat-relative+-1":"上周六","field-year-relative+-1":"去年","field-year":"年","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-week":"周","field-week-relative+0":"本周","field-week-relative+1":"下周","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-month-relative+0":"本月","field-month":"月","field-month-relative+1":"下个月","field-fri-relative+-1":"上周五","field-second":"秒钟","field-tue-relative+-1":"上周二","field-day":"日","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-thu-relative+0":"本周四","field-second-relative+0":"现在","field-thu-relative+1":"下周四","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","field-month-relative+-1":"上个月","field-thu-relative+-1":"上周四"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/indian",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本周四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下周四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月中日","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","dateFormatItem-yyyyQQQ":"Gy年第Q季度","eraNames":["印度历"],"field-weekOfMonth":"月中周","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年MM月d日E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","dateFormatItem-yyyyMEd":"G y/M/dE","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","field-sat-narrow-relative+-1":"上周六","field-second":"秒","dateFormat-long":"Gy年MM月d日","dateFormatItem-GyMMMd":"Gy年MM月d日","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"Gy年MM月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LL","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","dateFormat-medium":"Gy年MM月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["印度历"],"dateFormatItem-yyyyM":"Gy年M月","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上季度","dateFormatItem-yyyyMMMd":"Gy年MM月d日","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上周","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","dateFormatItem-Md":"M/d","field-hour":"小时","field-minute-narrow-relative+0":"此刻","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormat-full":"Gy年MM月d日EEEE","field-month-relative+-1":"上个月","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","dateFormat-short":"Gy/M/d","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上周四","dateFormatItem-yyyyMMMEd":"Gy年MM月d日E","field-mon-narrow-relative+-1":"上周一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上周四","field-tue-narrow-relative+-1":"上周二","field-weekOfMonth-short":"月中周","dateFormatItem-yyyy":"Gy年","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-short-relative+0":"本周三","field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","field-second-narrow-relative+0":"现在","dateFormatItem-d":"d日","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","dateFormatItem-MEd":"M/dE","field-zone-narrow":"时区","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-narrow-relative+1":"下周四","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","field-fri-short-relative+-1":"上周五","field-thu-relative+-1":"上周四","field-week":"周","dateFormatItem-Ed":"d日E","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年MM月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","field-hour-short":"小时","field-zone-short":"时区","field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","eraNarrow":"印度历","field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"工作日","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/islamic.js b/lib/dojo/cldr/nls/zh/islamic.js
index 5eec5c7c4..aa672ce1f 100644
--- a/lib/dojo/cldr/nls/zh/islamic.js
+++ b/lib/dojo/cldr/nls/zh/islamic.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/islamic",{"days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"现在","field-weekday":"工作日","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","eraNarrow":["回历"],"field-tue-relative+-1":"上周二","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上周五","field-wed-relative+-1":"上周三","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormatItem-yyyyQQQ":"Gy年第Q季度","dayPeriods-format-wide-pm":"下午","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/dE","field-thu-relative+-1":"上周四","dateFormatItem-Md":"M-d","dayPeriods-format-wide-noon":"中午","field-era":"纪元","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"timeFormat-long":"z ah:mm:ss","field-year":"年","field-hour":"小时","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","timeFormat-full":"zzzz ah:mm:ss","field-day-relative+0":"今天","field-thu-relative+0":"本周四","field-day-relative+1":"明天","field-thu-relative+1":"下周四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"后天","dateFormatItem-H":"H时","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["1季度","2季度","3季度","4季度"],"quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","timeFormat-medium":"ah:mm:ss","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"eraAbbr":["回历"],"field-minute":"分钟","field-dayperiod":"上午/下午","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨天","dateFormatItem-h":"ah时","dayPeriods-format-narrow-am":"上午","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M-dE","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"时区","dateFormatItem-y":"Gy年","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"去年","field-month-relative+-1":"上个月","dateFormatItem-hm":"ah:mm","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"eraNames":["回历"],"days-format-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"LLL","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-tue-relative+0":"本周二","field-tue-relative+1":"下周二","dayPeriods-format-wide-am":"上午","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","dateFormat-short":"Gy/M/d","dayPeriods-format-narrow-noon":"中午","field-second":"秒钟","field-sat-relative+-1":"上周六","field-sun-relative+-1":"上周日","field-month-relative+0":"本月","field-month-relative+1":"下个月","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上周","field-year-relative+1":"明年","dateFormatItem-yyyyM":"Gy年M月","dayPeriods-format-narrow-pm":"下午","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","dateFormatItem-hms":"ah:mm:ss","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"Gy年M月","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本周","field-week-relative+1":"下周"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/islamic",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","timeFormat-short":"ah:mm","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-thu-short-relative+0":"本周四","field-day-short-relative+-1":"昨天","field-thu-short-relative+1":"下周四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","dateFormatItem-EBhms":"EB h:mm:ss","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","dayPeriods-format-narrow-am":"上午","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月中日","dayPeriods-format-abbr-am":"上午","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","timeFormat-medium":"ah:mm:ss","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","dateFormatItem-yyyyQQQ":"Gy年第Q季度","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["伊斯兰历"],"field-weekOfMonth":"月中周","dayPeriods-standAlone-abbr-pm":"下午","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","dayPeriods-format-wide-am":"上午","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","dateFormatItem-yyyyMEd":"G y/M/dE","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","field-sat-narrow-relative+-1":"上周六","field-second":"秒","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dayPeriods-standAlone-wide-pm":"下午","dateFormatItem-Ehms":"Ea h:mm:ss","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","dayPeriods-format-narrow-pm":"下午","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["伊斯兰历"],"quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dayPeriods-format-abbr-pm":"下午","dateFormatItem-yyyyM":"Gy年M月","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"上季度","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"上午/下午","dayPeriods-standAlone-narrow-am":"上午","field-week-narrow-relative+-1":"上周","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dayPeriods-format-wide-pm":"下午","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","dateFormatItem-Md":"M-d","field-minute-narrow-relative+0":"此刻","field-hour":"小时","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上个月","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","dateFormatItem-EBhm":"EB h:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","dateFormatItem-Ehm":"Ea h:mm","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","timeFormat-long":"z ah:mm:ss","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","dateFormat-short":"Gy/M/d","dateFormatItem-Bh":"Bh时","field-thu-short-relative+-1":"上周四","field-year-narrow-relative+-1":"去年","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMMEd":"Gy年MM月d日E","field-mon-narrow-relative+-1":"上周一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上周四","field-tue-narrow-relative+-1":"上周二","field-weekOfMonth-short":"月中周","dateFormatItem-H":"H时","dayPeriods-standAlone-narrow-pm":"下午","dateFormatItem-yyyy":"Gy年","field-wed-short-relative+0":"本周三","dateFormatItem-M":"M月","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"field-second-narrow-relative+0":"现在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","dateFormatItem-h":"ah时","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","timeFormat-full":"zzzz ah:mm:ss","dateFormatItem-MEd":"M-dE","field-zone-narrow":"时区","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-narrow-relative+1":"下周四","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","field-fri-short-relative+-1":"上周五","dateFormatItem-hms":"ah:mm:ss","field-thu-relative+-1":"上周四","field-week":"周","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-Ed":"d日E","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","field-dayperiod-short":"上午/下午","dateFormatItem-yyyyMMM":"Gy年M月","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","field-hour-short":"小时","field-zone-short":"时区","quarters-format-abbr":["1季度","2季度","3季度","4季度"],"field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","eraNarrow":["伊斯兰历"],"dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","dayPeriods-standAlone-abbr-am":"上午","field-day-relative+-2":"前天","field-weekday-short":"工作日","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五","dayPeriods-standAlone-wide-am":"上午"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/japanese.js b/lib/dojo/cldr/nls/zh/japanese.js
index 584722a3e..ac9094852 100644
--- a/lib/dojo/cldr/nls/zh/japanese.js
+++ b/lib/dojo/cldr/nls/zh/japanese.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/japanese",{"field-second-relative+0":"现在","field-weekday":"工作日","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","field-tue-relative+-1":"上周二","dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上周五","field-wed-relative+-1":"上周三","dateFormatItem-yyyyQQQ":"Gy年第Q季度","dateTimeFormat-medium":"{1} {0}","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy-M-d(E)","field-thu-relative+-1":"上周四","dateFormatItem-Md":"M-d","field-era":"纪元","field-year":"年","field-hour":"小时","field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","field-day-relative+0":"今天","field-day-relative+1":"明天","field-thu-relative+0":"本周四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"后天","field-thu-relative+1":"下周四","dateFormatItem-H":"H时","dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-sun-relative+0":"本周日","dateFormatItem-Hm":"HH:mm","field-sun-relative+1":"下周日","eraAbbr":["大化 (645–650)","白雉 (650–671)","白凤 (672–686)","朱鸟 (686–701)","大宝 (701–704)","庆云 (704–708)","和铜 (708–715)","灵龟 (715–717)","养老 (717–724)","神龟 (724–729)","天平 (729–749)","天平感宝 (749–749)","天平胜宝 (749–757)","天平宝字 (757–765)","天平神护 (765–767)","神护景云 (767–770)","宝龟 (770–780)","天应 (781–782)","延历 (782–806)","大同 (806–810)","弘仁 (810–824)","天长 (824–834)","承和 (834–848)","嘉祥 (848–851)","仁寿 (851–854)","齐衡 (854–857)","天安 (857–859)","贞观 (859–877)","元庆 (877–885)","仁和 (885–889)","宽平 (889–898)","昌泰 (898–901)","延喜 (901–923)","延长 (923–931)","承平 (931–938)","天庆 (938–947)","天历 (947–957)","天德 (957–961)","应和 (961–964)","康保 (964–968)","安和 (968–970)","天禄 (970–973)","天延 (973–976)","贞元 (976–978)","天元 (978–983)","永观 (983–985)","宽和 (985–987)","永延 (987–989)","永祚 (989–990)","正历 (990–995)","长德 (995–999)","长保 (999–1004)","宽弘 (1004–1012)","长和 (1012–1017)","宽仁 (1017–1021)","治安 (1021–1024)","万寿 (1024–1028)","长元 (1028–1037)","长历 (1037–1040)","长久 (1040–1044)","宽德 (1044–1046)","永承 (1046–1053)","天喜 (1053–1058)","康平 (1058–1065)","治历 (1065–1069)","延久 (1069–1074)","承保 (1074–1077)","正历 (1077–1081)","永保 (1081–1084)","应德 (1084–1087)","宽治 (1087–1094)","嘉保 (1094–1096)","永长 (1096–1097)","承德 (1097–1099)","康和 (1099–1104)","长治 (1104–1106)","嘉承 (1106–1108)","天仁 (1108–1110)","天永 (1110–1113)","永久 (1113–1118)","元永 (1118–1120)","保安 (1120–1124)","天治 (1124–1126)","大治 (1126–1131)","天承 (1131–1132)","长承 (1132–1135)","保延 (1135–1141)","永治 (1141–1142)","康治 (1142–1144)","天养 (1144–1145)","久安 (1145–1151)","仁平 (1151–1154)","久寿 (1154–1156)","保元 (1156–1159)","平治 (1159–1160)","永历 (1160–1161)","应保 (1161–1163)","长宽 (1163–1165)","永万 (1165–1166)","仁安 (1166–1169)","嘉应 (1169–1171)","承安 (1171–1175)","安元 (1175–1177)","治承 (1177–1181)","养和 (1181–1182)","寿永 (1182–1184)","元历 (1184–1185)","文治 (1185–1190)","建久 (1190–1199)","正治 (1199–1201)","建仁 (1201–1204)","元久 (1204–1206)","建永 (1206–1207)","承元 (1207–1211)","建历 (1211–1213)","建保 (1213–1219)","承久 (1219–1222)","贞应 (1222–1224)","元仁 (1224–1225)","嘉禄 (1225–1227)","安贞 (1227–1229)","宽喜 (1229–1232)","贞永 (1232–1233)","天福 (1233–1234)","文历 (1234–1235)","嘉祯 (1235–1238)","历仁 (1238–1239)","延应 (1239–1240)","仁治 (1240–1243)","宽元 (1243–1247)","宝治 (1247–1249)","建长 (1249–1256)","康元 (1256–1257)","正嘉 (1257–1259)","正元 (1259–1260)","文应 (1260–1261)","弘长 (1261–1264)","文永 (1264–1275)","建治 (1275–1278)","弘安 (1278–1288)","正应 (1288–1293)","永仁 (1293–1299)","正安 (1299–1302)","干元 (1302–1303)","嘉元 (1303–1306)","德治 (1306–1308)","延庆 (1308–1311)","应长 (1311–1312)","正和 (1312–1317)","文保 (1317–1319)","元应 (1319–1321)","元亨 (1321–1324)","正中 (1324–1326)","嘉历 (1326–1329)","元德 (1329–1331)","元弘 (1331–1334)","建武 (1334–1336)","延元 (1336–1340)","兴国 (1340–1346)","正平 (1346–1370)","建德 (1370–1372)","文中 (1372–1375)","天授 (1375–1379)","康历 (1379–1381)","弘和 (1381–1384)","元中 (1384–1392)","至德 (1384–1387)","嘉庆 (1387–1389)","康应 (1389–1390)","明德 (1390–1394)","应永 (1394–1428)","正长 (1428–1429)","永享 (1429–1441)","嘉吉 (1441–1444)","文安 (1444–1449)","宝德 (1449–1452)","享德 (1452–1455)","康正 (1455–1457)","长禄 (1457–1460)","宽正 (1460–1466)","文正 (1466–1467)","应仁 (1467–1469)","文明 (1469–1487)","长享 (1487–1489)","延德 (1489–1492)","明应 (1492–1501)","文龟 (1501–1504)","永正 (1504–1521)","大永 (1521–1528)","享禄 (1528–1532)","天文 (1532–1555)","弘治 (1555–1558)","永禄 (1558–1570)","元龟 (1570–1573)","天正 (1573–1592)","文禄 (1592–1596)","庆长 (1596–1615)","元和 (1615–1624)","宽永 (1624–1644)","正保 (1644–1648)","庆安 (1648–1652)","承应 (1652–1655)","明历 (1655–1658)","万治 (1658–1661)","宽文 (1661–1673)","延宝 (1673–1681)","天和 (1681–1684)","贞享 (1684–1688)","元禄 (1688–1704)","宝永 (1704–1711)","正德 (1711–1716)","享保 (1716–1736)","元文 (1736–1741)","宽保 (1741–1744)","延享 (1744–1748)","宽延 (1748–1751)","宝历 (1751–1764)","明和 (1764–1772)","安永 (1772–1781)","天明 (1781–1789)","宽政 (1789–1801)","享和 (1801–1804)","文化 (1804–1818)","文政 (1818–1830)","天保 (1830–1844)","弘化 (1844–1848)","嘉永 (1848–1854)","安政 (1854–1860)","万延 (1860–1861)","文久 (1861–1864)","元治 (1864–1865)","庆应 (1865–1868)","明治","大正","昭和","平成"],"field-minute":"分钟","field-dayperiod":"上午/下午","dateFormatItem-d":"d日","dateFormatItem-ms":"mm:ss","field-day-relative+-1":"昨天","dateFormatItem-h":"ah时","dateTimeFormat-long":"{1} {0}","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M-dE","dateTimeFormat-full":"{1} {0}","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","field-day":"日","field-zone":"时区","dateFormatItem-y":"Gy年","field-year-relative+-1":"去年","field-month-relative+-1":"上个月","dateFormatItem-hm":"ah:mm","dateFormatItem-yyyyMd":"Gy-MM-dd","field-month":"月","dateFormatItem-MMM":"LLL","field-tue-relative+0":"本周二","field-tue-relative+1":"下周二","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","dateFormat-short":"Gyy-MM-dd","field-second":"秒钟","field-sat-relative+-1":"上周六","field-sun-relative+-1":"上周日","field-month-relative+0":"本月","field-month-relative+1":"下个月","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上周","dateFormatItem-yyyyM":"Gy-MM","field-year-relative+1":"明年","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","dateTimeFormat-short":"{1} {0}","dateFormatItem-Hms":"HH:mm:ss","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上周一","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本周","field-week-relative+1":"下周"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/japanese",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","dateFormatItem-Hm":"HH:mm","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-ms":"mm:ss","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本周四","dateTimeFormat-short":"{1} {0}","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下周四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月中日","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","dateFormatItem-yyyyQQQ":"Gy年第Q季度","eraNames":["大化 (645–650)","白雉 (650–671)","白凤 (672–686)","朱鸟 (686–701)","大宝 (701–704)","庆云 (704–708)","和铜 (708–715)","灵龟 (715–717)","养老 (717–724)","神龟 (724–729)","天平 (729–749)","天平感宝 (749–749)","天平胜宝 (749–757)","天平宝字 (757–765)","天平神护 (765–767)","神护景云 (767–770)","宝龟 (770–780)","天应 (781–782)","延历 (782–806)","大同 (806–810)","弘仁 (810–824)","天长 (824–834)","承和 (834–848)","嘉祥 (848–851)","仁寿 (851–854)","齐衡 (854–857)","天安 (857–859)","贞观 (859–877)","元庆 (877–885)","仁和 (885–889)","宽平 (889–898)","昌泰 (898–901)","延喜 (901–923)","延长 (923–931)","承平 (931–938)","天庆 (938–947)","天历 (947–957)","天德 (957–961)","应和 (961–964)","康保 (964–968)","安和 (968–970)","天禄 (970–973)","天延 (973–976)","贞元 (976–978)","天元 (978–983)","永观 (983–985)","宽和 (985–987)","永延 (987–989)","永祚 (989–990)","正历 (990–995)","长德 (995–999)","长保 (999–1004)","宽弘 (1004–1012)","长和 (1012–1017)","宽仁 (1017–1021)","治安 (1021–1024)","万寿 (1024–1028)","长元 (1028–1037)","长历 (1037–1040)","长久 (1040–1044)","宽德 (1044–1046)","永承 (1046–1053)","天喜 (1053–1058)","康平 (1058–1065)","治历 (1065–1069)","延久 (1069–1074)","承保 (1074–1077)","正历 (1077–1081)","永保 (1081–1084)","应德 (1084–1087)","宽治 (1087–1094)","嘉保 (1094–1096)","永长 (1096–1097)","承德 (1097–1099)","康和 (1099–1104)","长治 (1104–1106)","嘉承 (1106–1108)","天仁 (1108–1110)","天永 (1110–1113)","永久 (1113–1118)","元永 (1118–1120)","保安 (1120–1124)","天治 (1124–1126)","大治 (1126–1131)","天承 (1131–1132)","长承 (1132–1135)","保延 (1135–1141)","永治 (1141–1142)","康治 (1142–1144)","天养 (1144–1145)","久安 (1145–1151)","仁平 (1151–1154)","久寿 (1154–1156)","保元 (1156–1159)","平治 (1159–1160)","永历 (1160–1161)","应保 (1161–1163)","长宽 (1163–1165)","永万 (1165–1166)","仁安 (1166–1169)","嘉应 (1169–1171)","承安 (1171–1175)","安元 (1175–1177)","治承 (1177–1181)","养和 (1181–1182)","寿永 (1182–1184)","元历 (1184–1185)","文治 (1185–1190)","建久 (1190–1199)","正治 (1199–1201)","建仁 (1201–1204)","元久 (1204–1206)","建永 (1206–1207)","承元 (1207–1211)","建历 (1211–1213)","建保 (1213–1219)","承久 (1219–1222)","贞应 (1222–1224)","元仁 (1224–1225)","嘉禄 (1225–1227)","安贞 (1227–1229)","宽喜 (1229–1232)","贞永 (1232–1233)","天福 (1233–1234)","文历 (1234–1235)","嘉祯 (1235–1238)","历仁 (1238–1239)","延应 (1239–1240)","仁治 (1240–1243)","宽元 (1243–1247)","宝治 (1247–1249)","建长 (1249–1256)","康元 (1256–1257)","正嘉 (1257–1259)","正元 (1259–1260)","文应 (1260–1261)","弘长 (1261–1264)","文永 (1264–1275)","建治 (1275–1278)","弘安 (1278–1288)","正应 (1288–1293)","永仁 (1293–1299)","正安 (1299–1302)","干元 (1302–1303)","嘉元 (1303–1306)","德治 (1306–1308)","延庆 (1308–1311)","应长 (1311–1312)","正和 (1312–1317)","文保 (1317–1319)","元应 (1319–1321)","元亨 (1321–1324)","正中 (1324–1326)","嘉历 (1326–1329)","元德 (1329–1331)","元弘 (1331–1334)","建武 (1334–1336)","延元 (1336–1340)","兴国 (1340–1346)","正平 (1346–1370)","建德 (1370–1372)","文中 (1372–1375)","天授 (1375–1379)","康历 (1379–1381)","弘和 (1381–1384)","元中 (1384–1392)","至德 (1384–1387)","嘉庆 (1387–1389)","康应 (1389–1390)","明德 (1390–1394)","应永 (1394–1428)","正长 (1428–1429)","永享 (1429–1441)","嘉吉 (1441–1444)","文安 (1444–1449)","宝德 (1449–1452)","享德 (1452–1455)","康正 (1455–1457)","长禄 (1457–1460)","宽正 (1460–1466)","文正 (1466–1467)","应仁 (1467–1469)","文明 (1469–1487)","长享 (1487–1489)","延德 (1489–1492)","明应 (1492–1501)","文龟 (1501–1504)","永正 (1504–1521)","大永 (1521–1528)","享禄 (1528–1532)","天文 (1532–1555)","弘治 (1555–1558)","永禄 (1558–1570)","元龟 (1570–1573)","天正 (1573–1592)","文禄 (1592–1596)","庆长 (1596–1615)","元和 (1615–1624)","宽永 (1624–1644)","正保 (1644–1648)","庆安 (1648–1652)","承应 (1652–1655)","明历 (1655–1658)","万治 (1658–1661)","宽文 (1661–1673)","延宝 (1673–1681)","天和 (1681–1684)","贞享 (1684–1688)","元禄 (1688–1704)","宝永 (1704–1711)","正德 (1711–1716)","享保 (1716–1736)","元文 (1736–1741)","宽保 (1741–1744)","延享 (1744–1748)","宽延 (1748–1751)","宝历 (1751–1764)","明和 (1764–1772)","安永 (1772–1781)","天明 (1781–1789)","宽政 (1789–1801)","享和 (1801–1804)","文化 (1804–1818)","文政 (1818–1830)","天保 (1830–1844)","弘化 (1844–1848)","嘉永 (1848–1854)","安政 (1854–1860)","万延 (1860–1861)","文久 (1861–1864)","元治 (1864–1865)","庆应 (1865–1868)","明治","大正","昭和","平成","令和"],"field-weekOfMonth":"月中周","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-yyyyMd":"Gy-MM-dd","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","dateFormatItem-yyyyMEd":"Gy-M-d(E)","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","dateTimeFormat-medium":"{1} {0}","field-sat-narrow-relative+-1":"上周六","field-second":"秒","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["大化 (645–650)","白雉 (650–671)","白凤 (672–686)","朱鸟 (686–701)","大宝 (701–704)","庆云 (704–708)","和铜 (708–715)","灵龟 (715–717)","养老 (717–724)","神龟 (724–729)","天平 (729–749)","天平感宝 (749–749)","天平胜宝 (749–757)","天平宝字 (757–765)","天平神护 (765–767)","神护景云 (767–770)","宝龟 (770–780)","天应 (781–782)","延历 (782–806)","大同 (806–810)","弘仁 (810–824)","天长 (824–834)","承和 (834–848)","嘉祥 (848–851)","仁寿 (851–854)","齐衡 (854–857)","天安 (857–859)","贞观 (859–877)","元庆 (877–885)","仁和 (885–889)","宽平 (889–898)","昌泰 (898–901)","延喜 (901–923)","延长 (923–931)","承平 (931–938)","天庆 (938–947)","天历 (947–957)","天德 (957–961)","应和 (961–964)","康保 (964–968)","安和 (968–970)","天禄 (970–973)","天延 (973–976)","贞元 (976–978)","天元 (978–983)","永观 (983–985)","宽和 (985–987)","永延 (987–989)","永祚 (989–990)","正历 (990–995)","长德 (995–999)","长保 (999–1004)","宽弘 (1004–1012)","长和 (1012–1017)","宽仁 (1017–1021)","治安 (1021–1024)","万寿 (1024–1028)","长元 (1028–1037)","长历 (1037–1040)","长久 (1040–1044)","宽德 (1044–1046)","永承 (1046–1053)","天喜 (1053–1058)","康平 (1058–1065)","治历 (1065–1069)","延久 (1069–1074)","承保 (1074–1077)","正历 (1077–1081)","永保 (1081–1084)","应德 (1084–1087)","宽治 (1087–1094)","嘉保 (1094–1096)","永长 (1096–1097)","承德 (1097–1099)","康和 (1099–1104)","长治 (1104–1106)","嘉承 (1106–1108)","天仁 (1108–1110)","天永 (1110–1113)","永久 (1113–1118)","元永 (1118–1120)","保安 (1120–1124)","天治 (1124–1126)","大治 (1126–1131)","天承 (1131–1132)","长承 (1132–1135)","保延 (1135–1141)","永治 (1141–1142)","康治 (1142–1144)","天养 (1144–1145)","久安 (1145–1151)","仁平 (1151–1154)","久寿 (1154–1156)","保元 (1156–1159)","平治 (1159–1160)","永历 (1160–1161)","应保 (1161–1163)","长宽 (1163–1165)","永万 (1165–1166)","仁安 (1166–1169)","嘉应 (1169–1171)","承安 (1171–1175)","安元 (1175–1177)","治承 (1177–1181)","养和 (1181–1182)","寿永 (1182–1184)","元历 (1184–1185)","文治 (1185–1190)","建久 (1190–1199)","正治 (1199–1201)","建仁 (1201–1204)","元久 (1204–1206)","建永 (1206–1207)","承元 (1207–1211)","建历 (1211–1213)","建保 (1213–1219)","承久 (1219–1222)","贞应 (1222–1224)","元仁 (1224–1225)","嘉禄 (1225–1227)","安贞 (1227–1229)","宽喜 (1229–1232)","贞永 (1232–1233)","天福 (1233–1234)","文历 (1234–1235)","嘉祯 (1235–1238)","历仁 (1238–1239)","延应 (1239–1240)","仁治 (1240–1243)","宽元 (1243–1247)","宝治 (1247–1249)","建长 (1249–1256)","康元 (1256–1257)","正嘉 (1257–1259)","正元 (1259–1260)","文应 (1260–1261)","弘长 (1261–1264)","文永 (1264–1275)","建治 (1275–1278)","弘安 (1278–1288)","正应 (1288–1293)","永仁 (1293–1299)","正安 (1299–1302)","干元 (1302–1303)","嘉元 (1303–1306)","德治 (1306–1308)","延庆 (1308–1311)","应长 (1311–1312)","正和 (1312–1317)","文保 (1317–1319)","元应 (1319–1321)","元亨 (1321–1324)","正中 (1324–1326)","嘉历 (1326–1329)","元德 (1329–1331)","元弘 (1331–1334)","建武 (1334–1336)","延元 (1336–1340)","兴国 (1340–1346)","正平 (1346–1370)","建德 (1370–1372)","文中 (1372–1375)","天授 (1375–1379)","康历 (1379–1381)","弘和 (1381–1384)","元中 (1384–1392)","至德 (1384–1387)","嘉庆 (1387–1389)","康应 (1389–1390)","明德 (1390–1394)","应永 (1394–1428)","正长 (1428–1429)","永享 (1429–1441)","嘉吉 (1441–1444)","文安 (1444–1449)","宝德 (1449–1452)","享德 (1452–1455)","康正 (1455–1457)","长禄 (1457–1460)","宽正 (1460–1466)","文正 (1466–1467)","应仁 (1467–1469)","文明 (1469–1487)","长享 (1487–1489)","延德 (1489–1492)","明应 (1492–1501)","文龟 (1501–1504)","永正 (1504–1521)","大永 (1521–1528)","享禄 (1528–1532)","天文 (1532–1555)","弘治 (1555–1558)","永禄 (1558–1570)","元龟 (1570–1573)","天正 (1573–1592)","文禄 (1592–1596)","庆长 (1596–1615)","元和 (1615–1624)","宽永 (1624–1644)","正保 (1644–1648)","庆安 (1648–1652)","承应 (1652–1655)","明历 (1655–1658)","万治 (1658–1661)","宽文 (1661–1673)","延宝 (1673–1681)","天和 (1681–1684)","贞享 (1684–1688)","元禄 (1688–1704)","宝永 (1704–1711)","正德 (1711–1716)","享保 (1716–1736)","元文 (1736–1741)","宽保 (1741–1744)","延享 (1744–1748)","宽延 (1748–1751)","宝历 (1751–1764)","明和 (1764–1772)","安永 (1772–1781)","天明 (1781–1789)","宽政 (1789–1801)","享和 (1801–1804)","文化 (1804–1818)","文政 (1818–1830)","天保 (1830–1844)","弘化 (1844–1848)","嘉永 (1848–1854)","安政 (1854–1860)","万延 (1860–1861)","文久 (1861–1864)","元治 (1864–1865)","庆应 (1865–1868)","明治","大正","昭和","平成","令和"],"dateFormatItem-yyyyM":"Gy-MM","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上季度","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上周","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","dateTimeFormat-long":"{1} {0}","dateFormatItem-Md":"M-d","field-hour":"小时","field-minute-narrow-relative+0":"此刻","dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上个月","dateFormatItem-Hms":"HH:mm:ss","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","dateFormat-short":"Gy-MM-dd","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上周四","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","field-mon-narrow-relative+-1":"上周一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上周四","dateFormatItem-H":"H时","field-weekOfMonth-short":"月中周","field-tue-narrow-relative+-1":"上周二","dateFormatItem-yyyy":"Gy年","dateFormatItem-M":"M月","field-wed-short-relative+0":"本周三","field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","dateTimeFormat-full":"{1} {0}","field-second-narrow-relative+0":"现在","dateFormatItem-hm":"ah:mm","dateFormatItem-d":"d日","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","dateFormatItem-h":"ah时","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","dateFormatItem-MEd":"M-dE","field-zone-narrow":"时区","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-narrow-relative+1":"下周四","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","dateFormatItem-hms":"ah:mm:ss","field-fri-short-relative+-1":"上周五","field-thu-relative+-1":"上周四","field-week":"周","dateFormatItem-Ed":"d日E","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","dateFormatItem-yyyyQQQQ":"Gy年QQQQ","field-hour-short":"小时","field-zone-short":"时区","field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","eraNarrow":["大化(645–650)","白雉(650–671)","白凤(672–686)","朱鸟(686–701)","大宝(701–704)","庆云(704–708)","和铜(708–715)","灵龟(715–717)","养老(717–724)","神龟(724–729)","天平(729–749)","天平感宝(749–749)","天平胜宝(749–757)","天平宝字(757–765)","天平神护(765–767)","神护景云(767–770)","宝龟(770–780)","天应(781–782)","延历(782–806)","大同(806–810)","弘仁(810–824)","天长(824–834)","承和(834–848)","嘉祥(848–851)","仁寿(851–854)","齐衡(854–857)","天安(857–859)","贞观(859–877)","元庆(877–885)","仁和(885–889)","宽平(889–898)","昌泰(898–901)","延喜(901–923)","延长(923–931)","承平(931–938)","天庆(938–947)","天历(947–957)","天德(957–961)","应和(961–964)","康保(964–968)","安和(968–970)","天禄(970–973)","天延(973–976)","贞元(976–978)","天元(978–983)","永观(983–985)","宽和(985–987)","永延(987–989)","永祚(989–990)","正历(990–995)","长德(995–999)","长保(999–1004)","宽弘(1004–1012)","长和(1012–1017)","宽仁(1017–1021)","治安(1021–1024)","万寿(1024–1028)","长元(1028–1037)","长历(1037–1040)","长久(1040–1044)","宽德(1044–1046)","永承(1046–1053)","天喜(1053–1058)","康平(1058–1065)","治历(1065–1069)","延久(1069–1074)","承保(1074–1077)","承历(1077–1081)","永保(1081–1084)","应德(1084–1087)","宽治(1087–1094)","嘉保(1094–1096)","永长(1096–1097)","承德(1097–1099)","康和(1099–1104)","长治(1104–1106)","嘉承(1106–1108)","天仁(1108–1110)","天永(1110–1113)","永久(1113–1118)","元永(1118–1120)","保安(1120–1124)","天治(1124–1126)","大治(1126–1131)","天承(1131–1132)","长承(1132–1135)","保延(1135–1141)","永治(1141–1142)","康治(1142–1144)","天养(1144–1145)","久安(1145–1151)","仁平(1151–1154)","久寿(1154–1156)","保元(1156–1159)","平治(1159–1160)","永历(1160–1161)","应保(1161–1163)","长宽(1163–1165)","永万(1165–1166)","仁安(1166–1169)","嘉应(1169–1171)","承安(1171–1175)","安元(1175–1177)","治承(1177–1181)","养和(1181–1182)","寿永(1182–1184)","元历(1184–1185)","文治(1185–1190)","建久(1190–1199)","正治(1199–1201)","建仁(1201–1204)","元久(1204–1206)","建永(1206–1207)","承元(1207–1211)","建历(1211–1213)","建保(1213–1219)","承久(1219–1222)","贞应(1222–1224)","元仁(1224–1225)","嘉禄(1225–1227)","安贞(1227–1229)","宽喜(1229–1232)","贞永(1232–1233)","天福(1233–1234)","文历(1234–1235)","嘉祯(1235–1238)","历仁(1238–1239)","延应(1239–1240)","仁治(1240–1243)","宽元(1243–1247)","宝治(1247–1249)","建长(1249–1256)","康元(1256–1257)","正嘉(1257–1259)","正元(1259–1260)","文应(1260–1261)","弘长(1261–1264)","文永(1264–1275)","建治(1275–1278)","弘安(1278–1288)","正应(1288–1293)","永仁(1293–1299)","正安(1299–1302)","乾元(1302–1303)","嘉元(1303–1306)","德治(1306–1308)","延庆(1308–1311)","应长(1311–1312)","正和(1312–1317)","文保(1317–1319)","元应(1319–1321)","元亨(1321–1324)","正中(1324–1326)","嘉历(1326–1329)","元德(1329–1331)","元弘(1331–1334)","建武(1334–1336)","延元(1336–1340)","兴国(1340–1346)","正平(1346–1370)","建德(1370–1372)","文中(1372–1375)","天授(1375–1379)","康历(1379–1381)","弘和(1381–1384)","元中(1384–1392)","明德(1384–1387)"],"field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"工作日","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/number.js b/lib/dojo/cldr/nls/zh/number.js
index 30de06ef5..1e3267d3f 100644
--- a/lib/dojo/cldr/nls/zh/number.js
+++ b/lib/dojo/cldr/nls/zh/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/number",{"group":",","percentSign":"%","exponential":"E","scientificFormat":"#E0","percentFormat":"#,##0%","list":";","infinity":"∞","minusSign":"-","decimal":".","superscriptingExponent":"×","nan":"NaN","perMille":"‰","decimalFormat":"#,##0.###","currencyFormat":"¤#,##0.00;(¤#,##0.00)","plusSign":"+","decimalFormat-long":"000兆","decimalFormat-short":"000兆"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/number",{"scientificFormat":"#E0","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","decimalFormat-short":"000万亿","nan":"NaN","plusSign":"+","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000万亿","decimalFormat":"#,##0.###","currencyFormat-short":"¤000万亿","timeSeparator":":","decimal":".","exponential":"E"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/persian.js b/lib/dojo/cldr/nls/zh/persian.js
index 4e46176e4..0e40517eb 100644
--- a/lib/dojo/cldr/nls/zh/persian.js
+++ b/lib/dojo/cldr/nls/zh/persian.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/persian",{"days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-second-relative+0":"现在","field-weekday":"工作日","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","eraNarrow":["波斯历"],"field-tue-relative+-1":"上周二","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上周五","field-wed-relative+-1":"上周三","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormatItem-yyyyQQQ":"Gy年第Q季度","dayPeriods-format-wide-pm":"下午","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/dE","field-thu-relative+-1":"上周四","dateFormatItem-Md":"M/d","dayPeriods-format-wide-noon":"中午","field-era":"纪元","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"timeFormat-short":"ah:mm","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"timeFormat-long":"z ah:mm:ss","field-year":"年","field-hour":"小时","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","timeFormat-full":"zzzz ah:mm:ss","field-day-relative+0":"今天","field-thu-relative+0":"本周四","field-day-relative+1":"明天","field-thu-relative+1":"下周四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"后天","dateFormatItem-H":"H时","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"quarters-format-abbr":["1季度","2季度","3季度","4季度"],"quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","timeFormat-medium":"ah:mm:ss","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"eraAbbr":["波斯历"],"field-minute":"分钟","field-dayperiod":"上午/下午","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-d":"d日","field-day-relative+-1":"昨天","dateFormatItem-h":"ah时","dayPeriods-format-narrow-am":"上午","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/dE","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","field-day":"日","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-zone":"时区","dateFormatItem-y":"Gy年","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-year-relative+-1":"去年","field-month-relative+-1":"上个月","dateFormatItem-hm":"ah:mm","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"eraNames":["波斯历"],"days-format-narrow":["日","一","二","三","四","五","六"],"dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","days-standAlone-narrow":["日","一","二","三","四","五","六"],"field-tue-relative+0":"本周二","field-tue-relative+1":"下周二","dayPeriods-format-wide-am":"上午","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","dateFormat-short":"Gy/M/d","dayPeriods-format-narrow-noon":"中午","field-second":"秒钟","field-sat-relative+-1":"上周六","field-sun-relative+-1":"上周日","field-month-relative+0":"本月","field-month-relative+1":"下个月","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上周","dateFormatItem-yyyyM":"Gy年M月","field-year-relative+1":"明年","dayPeriods-format-narrow-pm":"下午","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","dateFormatItem-hms":"ah:mm:ss","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上周一","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本周","field-week-relative+1":"下周"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/persian",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","timeFormat-short":"ah:mm","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-thu-short-relative+0":"本周四","field-day-short-relative+-1":"昨天","field-thu-short-relative+1":"下周四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","dateFormatItem-EBhms":"EB h:mm:ss","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","dayPeriods-format-narrow-am":"上午","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月中日","dayPeriods-format-abbr-am":"上午","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","timeFormat-medium":"ah:mm:ss","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","dateFormatItem-yyyyQQQ":"Gy年第Q季度","months-standAlone-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"eraNames":["波斯历"],"field-weekOfMonth":"月中周","dayPeriods-standAlone-abbr-pm":"下午","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-yyyyMd":"G y/M/d","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","dayPeriods-format-wide-am":"上午","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","dateFormatItem-yyyyMEd":"G y/M/dE","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","field-sat-narrow-relative+-1":"上周六","field-second":"秒","days-standAlone-narrow":["日","一","二","三","四","五","六"],"dayPeriods-standAlone-wide-pm":"下午","dateFormatItem-Ehms":"Ea h:mm:ss","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","quarters-standAlone-wide":["第一季度","第二季度","第三季度","第四季度"],"days-format-narrow":["日","一","二","三","四","五","六"],"field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LL","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","dayPeriods-format-narrow-pm":"下午","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["波斯历"],"quarters-standAlone-abbr":["1季度","2季度","3季度","4季度"],"dayPeriods-format-abbr-pm":"下午","dateFormatItem-yyyyM":"Gy年M月","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","months-format-narrow":["1","2","3","4","5","6","7","8","9","10","11","12"],"field-quarter-relative+-1":"上季度","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"上午/下午","dayPeriods-standAlone-narrow-am":"上午","field-week-narrow-relative+-1":"上周","days-format-short":["周日","周一","周二","周三","周四","周五","周六"],"dayPeriods-format-wide-pm":"下午","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","dateFormatItem-Md":"M/d","field-minute-narrow-relative+0":"此刻","field-hour":"小时","months-format-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上个月","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","dateFormatItem-EBhm":"EB h:mm","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","dateFormatItem-Ehm":"Ea h:mm","months-format-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","timeFormat-long":"z ah:mm:ss","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","dateFormat-short":"Gy/M/d","dateFormatItem-Bh":"Bh时","field-thu-short-relative+-1":"上周四","field-year-narrow-relative+-1":"去年","days-standAlone-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"dateFormatItem-yyyyMMMEd":"Gy年MM月d日E","field-mon-narrow-relative+-1":"上周一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上周四","field-tue-narrow-relative+-1":"上周二","field-weekOfMonth-short":"月中周","dateFormatItem-H":"H时","dayPeriods-standAlone-narrow-pm":"下午","dateFormatItem-yyyy":"Gy年","field-wed-short-relative+0":"本周三","months-standAlone-wide":["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],"field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","days-standAlone-abbr":["周日","周一","周二","周三","周四","周五","周六"],"field-second-narrow-relative+0":"现在","dateFormatItem-hm":"ah:mm","field-weekday":"工作日","dateFormatItem-d":"d日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","dateFormatItem-h":"ah时","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","months-standAlone-abbr":["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],"field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","timeFormat-full":"zzzz ah:mm:ss","dateFormatItem-MEd":"M/dE","field-zone-narrow":"时区","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本周四","field-thu-narrow-relative+1":"下周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","field-fri-short-relative+-1":"上周五","dateFormatItem-hms":"ah:mm:ss","field-thu-relative+-1":"上周四","field-week":"周","quarters-format-wide":["第一季度","第二季度","第三季度","第四季度"],"dateFormatItem-Ed":"d日E","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","field-dayperiod-short":"上午/下午","dateFormatItem-yyyyMMM":"Gy年M月","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","days-standAlone-short":["周日","周一","周二","周三","周四","周五","周六"],"field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","field-hour-short":"小时","field-zone-short":"时区","quarters-format-abbr":["1季度","2季度","3季度","4季度"],"field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","eraNarrow":"波斯历","dateFormatItem-Bhms":"Bh:mm:ss","field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","days-format-wide":["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],"field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","dayPeriods-standAlone-abbr-am":"上午","field-day-relative+-2":"前天","field-weekday-short":"工作日","days-format-abbr":["周日","周一","周二","周三","周四","周五","周六"],"dateFormatItem-Bhm":"Bh:mm","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五","dayPeriods-standAlone-wide-am":"上午"}); \ No newline at end of file
diff --git a/lib/dojo/cldr/nls/zh/roc.js b/lib/dojo/cldr/nls/zh/roc.js
index 1b1b0a740..0fe8924a2 100644
--- a/lib/dojo/cldr/nls/zh/roc.js
+++ b/lib/dojo/cldr/nls/zh/roc.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/cldr/nls/zh/roc",{"field-second-relative+0":"现在","field-weekday":"工作日","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-MMMEd":"M月d日E","field-tue-relative+-1":"上周二","dateFormat-long":"Gy年M月d日","field-fri-relative+-1":"上周五","field-wed-relative+-1":"上周三","dateFormatItem-yyyyQQQ":"Gy年第Q季度","dateFormat-full":"Gy年M月d日EEEE","dateFormatItem-yyyyMEd":"Gy/M/dE","field-thu-relative+-1":"上周四","dateFormatItem-Md":"M/d","field-era":"纪元","field-year":"年","dateFormatItem-yyyyMMMM":"Gy年M月","field-hour":"小时","field-sat-relative+0":"本周六","field-sat-relative+1":"下周六","field-day-relative+0":"今天","field-thu-relative+0":"本周四","field-day-relative+1":"明天","field-thu-relative+1":"下周四","dateFormatItem-GyMMMd":"Gy年M月d日","field-day-relative+2":"后天","dateFormatItem-Gy":"Gy年","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","dateFormatItem-M":"M月","dateFormatItem-yyyyMMM":"Gy年M月","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","eraAbbr":["民国前","民国"],"field-minute":"分钟","field-dayperiod":"上午/下午","dateFormatItem-d":"d日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","dateFormatItem-MMMd":"M月d日","dateFormatItem-MEd":"M/dE","field-fri-relative+0":"本周五","field-fri-relative+1":"下周五","field-day":"日","field-zone":"时区","dateFormatItem-y":"Gy年","field-year-relative+-1":"去年","field-month-relative+-1":"上个月","dateFormatItem-yyyyMd":"Gy/M/d","field-month":"月","dateFormatItem-MMM":"LLL","field-tue-relative+0":"本周二","field-tue-relative+1":"下周二","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","dateFormat-short":"Gyy/M/d","field-second":"秒钟","field-sat-relative+-1":"上周六","field-sun-relative+-1":"上周日","field-month-relative+0":"本月","field-month-relative+1":"下个月","dateFormatItem-Ed":"d日E","field-week":"周","dateFormat-medium":"Gy年M月d日","field-year-relative+0":"今年","field-week-relative+-1":"上周","dateFormatItem-yyyyM":"Gy年M月","field-year-relative+1":"明年","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","dateFormatItem-GyMMM":"Gy年M月","field-mon-relative+-1":"上周一","dateFormatItem-yyyy":"Gy年","field-week-relative+0":"本周","field-week-relative+1":"下周"}); \ No newline at end of file
+define("dojo/cldr/nls/zh/roc",{"field-quarter-short-relative+0":"本季度","field-quarter-short-relative+1":"下季度","field-tue-relative+-1":"上周二","field-year":"年","field-wed-relative+0":"本周三","field-wed-relative+1":"下周三","field-minute":"分钟","field-month-narrow-relative+-1":"上个月","field-tue-narrow-relative+0":"本周二","field-tue-narrow-relative+1":"下周二","field-day-short-relative+-1":"昨天","field-thu-short-relative+0":"本周四","field-day-relative+0":"今天","field-day-short-relative+-2":"前天","field-thu-short-relative+1":"下周四","field-day-relative+1":"明天","field-week-narrow-relative+0":"本周","field-day-relative+2":"后天","field-week-narrow-relative+1":"下周","field-wed-narrow-relative+-1":"上周三","field-year-narrow":"年","field-era-short":"纪元","field-year-narrow-relative+0":"今年","field-tue-relative+0":"本周二","field-year-narrow-relative+1":"明年","field-tue-relative+1":"下周二","field-weekdayOfMonth":"月中日","field-second-short":"秒","dateFormatItem-MMMd":"M月d日","field-weekdayOfMonth-narrow":"月中日","field-week-relative+0":"本周","field-month-relative+0":"本月","field-week-relative+1":"下周","field-month-relative+1":"下个月","field-sun-narrow-relative+0":"本周日","field-mon-short-relative+0":"本周一","field-sun-narrow-relative+1":"下周日","field-mon-short-relative+1":"下周一","field-second-relative+0":"现在","dateFormatItem-yyyyQQQ":"Gy年第Q季度","eraNames":["民国前","民国"],"field-weekOfMonth":"月中周","field-month-short":"月","dateFormatItem-GyMMMEd":"Gy年M月d日E","dateFormatItem-yyyyMd":"Gy/M/d","field-day":"日","field-dayOfYear-short":"年中日","field-year-relative+-1":"去年","field-sat-short-relative+-1":"上周六","field-hour-relative+0":"这一时间 / 此时","dateFormatItem-yyyyMEd":"Gy/M/dE","field-second-short-relative+0":"现在","field-wed-relative+-1":"上周三","field-sat-narrow-relative+-1":"上周六","field-second":"秒","dateFormat-long":"Gy年M月d日","dateFormatItem-GyMMMd":"Gy年M月d日","field-hour-short-relative+0":"这一时间 / 此时","field-quarter":"季度","field-week-short":"周","field-day-narrow-relative+0":"今天","field-day-narrow-relative+1":"明天","field-day-narrow-relative+2":"后天","field-tue-short-relative+0":"本周二","field-tue-short-relative+1":"下周二","field-month-short-relative+-1":"上个月","field-mon-relative+-1":"上周一","dateFormatItem-GyMMM":"Gy年M月","field-month":"月","field-day-narrow":"日","dateFormatItem-MMM":"LLL","field-minute-short":"分","field-dayperiod":"上午/下午","field-sat-short-relative+0":"本周六","field-sat-short-relative+1":"下周六","dateFormat-medium":"Gy年M月d日","dateFormatItem-yyyyMMMM":"Gy年M月","eraAbbr":["民国前","民国"],"dateFormatItem-yyyyM":"Gy年M月","field-second-narrow":"秒","field-mon-relative+0":"本周一","field-mon-relative+1":"下周一","field-day-narrow-relative+-1":"昨天","field-year-short":"年","field-day-narrow-relative+-2":"前天","field-quarter-relative+-1":"上季度","dateFormatItem-yyyyMMMd":"Gy年M月d日","field-dayperiod-narrow":"上午/下午","field-week-narrow-relative+-1":"上周","field-dayOfYear":"年中日","field-sat-relative+-1":"上周六","dateFormatItem-Md":"M/d","field-hour":"小时","field-minute-narrow-relative+0":"此刻","dateFormat-full":"Gy年M月d日EEEE","field-month-relative+-1":"上个月","field-quarter-short":"季","field-sat-narrow-relative+0":"本周六","field-fri-relative+0":"本周五","field-sat-narrow-relative+1":"下周六","field-fri-relative+1":"下周五","field-month-narrow-relative+0":"本月","field-month-narrow-relative+1":"下个月","field-sun-short-relative+0":"本周日","field-sun-short-relative+1":"下周日","field-week-relative+-1":"上周","field-quarter-short-relative+-1":"上季度","field-minute-short-relative+0":"此刻","field-quarter-relative+0":"本季度","field-minute-relative+0":"此刻","field-quarter-relative+1":"下季度","field-wed-short-relative+-1":"上周三","dateFormat-short":"Gy/M/d","field-year-narrow-relative+-1":"去年","field-thu-short-relative+-1":"上周四","dateFormatItem-yyyyMMMEd":"Gy年M月d日E","field-mon-narrow-relative+-1":"上周一","dateFormatItem-MMMMd":"M月d日","field-thu-narrow-relative+-1":"上周四","dateFormatItem-E":"ccc","field-tue-narrow-relative+-1":"上周二","field-weekOfMonth-short":"月中周","dateFormatItem-yyyy":"Gy年","dateFormatItem-M":"M月","field-wed-short-relative+0":"本周三","field-wed-short-relative+1":"下周三","field-sun-relative+-1":"上周日","field-second-narrow-relative+0":"现在","dateFormatItem-d":"d日","field-weekday":"工作日","field-day-short-relative+0":"今天","field-quarter-narrow-relative+0":"本季度","field-day-short-relative+1":"明天","field-sat-relative+0":"本周六","field-quarter-narrow-relative+1":"下季度","field-day-short-relative+2":"后天","field-sat-relative+1":"下周六","field-week-short-relative+0":"本周","field-week-short-relative+1":"下周","field-dayOfYear-narrow":"年中日","field-month-short-relative+0":"本月","field-month-short-relative+1":"下个月","field-weekdayOfMonth-short":"月中日","dateFormatItem-MEd":"M/dE","field-zone-narrow":"时区","dateFormatItem-y":"Gy年","field-thu-narrow-relative+0":"本周四","field-sun-narrow-relative+-1":"上周日","field-mon-short-relative+-1":"上周一","field-thu-narrow-relative+1":"下周四","field-thu-relative+0":"本周四","field-thu-relative+1":"下周四","field-fri-short-relative+-1":"上周五","field-thu-relative+-1":"上周四","field-week":"周","dateFormatItem-Ed":"d日E","field-wed-narrow-relative+0":"本周三","field-wed-narrow-relative+1":"下周三","field-quarter-narrow-relative+-1":"上季度","field-year-short-relative+0":"今年","dateFormatItem-yyyyMMM":"Gy年M月","field-dayperiod-short":"上午/下午","field-year-short-relative+1":"明年","field-fri-short-relative+0":"本周五","field-fri-short-relative+1":"下周五","field-week-short-relative+-1":"上周","field-hour-narrow-relative+0":"这一时间 / 此时","dateFormatItem-yyyyQQQQ":"Gy年第Q季度","field-hour-short":"小时","field-zone-short":"时区","field-month-narrow":"月","field-hour-narrow":"小时","field-fri-narrow-relative+-1":"上周五","field-year-relative+0":"今年","field-year-relative+1":"明年","field-era-narrow":"纪元","field-fri-relative+-1":"上周五","eraNarrow":["民国前","民国"],"field-tue-short-relative+-1":"上周二","field-minute-narrow":"分","field-mon-narrow-relative+0":"本周一","field-mon-narrow-relative+1":"下周一","field-year-short-relative+-1":"去年","field-zone":"时区","dateFormatItem-MMMEd":"M月d日E","field-weekOfMonth-narrow":"月中周","field-weekday-narrow":"工作日","field-quarter-narrow":"季","field-sun-short-relative+-1":"上周日","field-day-relative+-1":"昨天","field-day-relative+-2":"前天","field-weekday-short":"工作日","field-sun-relative+0":"本周日","field-sun-relative+1":"下周日","dateFormatItem-Gy":"Gy年","field-day-short":"日","field-week-narrow":"周","field-era":"纪元","field-fri-narrow-relative+0":"本周五","field-fri-narrow-relative+1":"下周五"}); \ No newline at end of file
diff --git a/lib/dojo/dojo.js b/lib/dojo/dojo.js
index 5e0e89c23..14bfe1164 100644
--- a/lib/dojo/dojo.js
+++ b/lib/dojo/dojo.js
@@ -5,4 +5,4 @@
*/
//>>built
-(function(_1,_2){var _3=(function(){if(typeof _4!=="undefined"&&typeof _4!=="function"){return _4;}else{if(typeof window!=="undefined"){return window;}else{if(typeof self!=="undefined"){return self;}}}return this;})();var _5=function(){},_6=function(it){for(var p in it){return 0;}return 1;},_7={}.toString,_8=function(it){return _7.call(it)=="[object Function]";},_9=function(it){return _7.call(it)=="[object String]";},_a=function(it){return _7.call(it)=="[object Array]";},_b=function(_c,_d){if(_c){for(var i=0;i<_c.length;){_d(_c[i++]);}}},_e=function(_f,src){for(var p in src){_f[p]=src[p];}return _f;},_10=function(_11,_12){return _e(new Error(_11),{src:"dojoLoader",info:_12});},_13=1,uid=function(){return "_"+_13++;},req=function(_14,_15,_16){return _17(_14,_15,_16,0,req);},_4=_3,doc=_4.document,_18=doc&&doc.createElement("DiV"),has=req.has=function(_19){return _8(_1a[_19])?(_1a[_19]=_1a[_19](_4,doc,_18)):_1a[_19];},_1a=has.cache=_2.hasCache;if(_8(_1)){_1=_1(_3);}has.add=function(_1b,_1c,now,_1d){(_1a[_1b]===undefined||_1d)&&(_1a[_1b]=_1c);return now&&has(_1b);};0&&has.add("host-node",_1.has&&"host-node" in _1.has?_1.has["host-node"]:(typeof process=="object"&&process.versions&&process.versions.node&&process.versions.v8));if(0){require("./_base/configNode.js").config(_2);_2.loaderPatch.nodeRequire=require;}0&&has.add("host-rhino",_1.has&&"host-rhino" in _1.has?_1.has["host-rhino"]:(typeof load=="function"&&(typeof Packages=="function"||typeof Packages=="object")));if(0){for(var _1e=_1.baseUrl||".",arg,_1f=this.arguments,i=0;i<_1f.length;){arg=(_1f[i++]+"").split("=");if(arg[0]=="baseUrl"){_1e=arg[1];break;}}load(_1e+"/_base/configRhino.js");rhinoDojoConfig(_2,_1e,_1f);}has.add("host-webworker",((typeof WorkerGlobalScope!=="undefined")&&(self instanceof WorkerGlobalScope)));if(has("host-webworker")){_e(_2.hasCache,{"host-browser":0,"dom":0,"dojo-dom-ready-api":0,"dojo-sniff":0,"dojo-inject-api":1,"host-webworker":1,"dojo-guarantee-console":0});_2.loaderPatch={injectUrl:function(url,_20){try{importScripts(url);_20();}catch(e){console.error(e);}}};}for(var p in _1.has){has.add(p,_1.has[p],0,1);}var _21=1,_22=2,_23=3,_24=4,_25=5;if(0){_21="requested";_22="arrived";_23="not-a-module";_24="executing";_25="executed";}var _26=0,_27="sync",xd="xd",_28=[],_29=0,_2a=_5,_2b=_5,_2c;if(1){req.isXdUrl=_5;req.initSyncLoader=function(_2d,_2e,_2f){if(!_29){_29=_2d;_2a=_2e;_2b=_2f;}return {sync:_27,requested:_21,arrived:_22,nonmodule:_23,executing:_24,executed:_25,syncExecStack:_28,modules:_30,execQ:_31,getModule:_32,injectModule:_33,setArrived:_34,signal:_35,finishExec:_36,execModule:_37,dojoRequirePlugin:_29,getLegacyMode:function(){return _26;},guardCheckComplete:_38};};if(1||has("host-webworker")){var _39=location.protocol,_3a=location.host;req.isXdUrl=function(url){if(/^\./.test(url)){return false;}if(/^\/\//.test(url)){return true;}var _3b=url.match(/^([^\/\:]+\:)\/+([^\/]+)/);return _3b&&(_3b[1]!=_39||(_3a&&_3b[2]!=_3a));};1||has.add("dojo-xhr-factory",1);has.add("dojo-force-activex-xhr",1&&!doc.addEventListener&&window.location.protocol=="file:");has.add("native-xhr",typeof XMLHttpRequest!="undefined");if(has("native-xhr")&&!has("dojo-force-activex-xhr")){_2c=function(){return new XMLHttpRequest();};}else{for(var _3c=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],_3d,i=0;i<3;){try{_3d=_3c[i++];if(new ActiveXObject(_3d)){break;}}catch(e){}}_2c=function(){return new ActiveXObject(_3d);};}req.getXhr=_2c;has.add("dojo-gettext-api",1);req.getText=function(url,_3e,_3f){var xhr=_2c();xhr.open("GET",_40(url),false);xhr.send(null);if(xhr.status==200||(!location.host&&!xhr.status)){if(_3f){_3f(xhr.responseText,_3e);}}else{throw _10("xhrFailed",xhr.status);}return xhr.responseText;};}}else{req.async=1;}var _41=has("csp-restrictions")?function(){}:new Function("return eval(arguments[0]);");req.eval=function(_42,_43){return _41(_42+"\r\n//# sourceURL="+_43);};var _44={},_45="error",_35=req.signal=function(_46,_47){var _48=_44[_46];_b(_48&&_48.slice(0),function(_49){_49.apply(null,_a(_47)?_47:[_47]);});},on=req.on=function(_4a,_4b){var _4c=_44[_4a]||(_44[_4a]=[]);_4c.push(_4b);return {remove:function(){for(var i=0;i<_4c.length;i++){if(_4c[i]===_4b){_4c.splice(i,1);return;}}}};};var _4d=[],_4e={},_4f=[],_50={},map=req.map={},_51=[],_30={},_52="",_53={},_54="url:",_55={},_56={},_57=0;if(1){if(!has("foreign-loader")){var _58=function(_59,_5a){_5a=_5a!==false;var p,_5b,_5c,now,m;for(p in _55){_5b=_55[p];_5c=p.match(/^url\:(.+)/);if(_5c){_53[_54+_5d(_5c[1],_59)]=_5b;}else{if(p=="*now"){now=_5b;}else{if(p!="*noref"){m=_5e(p,_59,true);_53[m.mid]=_53[_54+m.url]=_5b;}}}}if(now){now(_5f(_59));}if(_5a){_55={};}};}var _60=function(s){return s.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(c){return "\\"+c;});},_61=function(map,_62){_62.splice(0,_62.length);for(var p in map){_62.push([p,map[p],new RegExp("^"+_60(p)+"(/|$)"),p.length]);}_62.sort(function(lhs,rhs){return rhs[3]-lhs[3];});return _62;},_63=function(_64,_65){_b(_64,function(_66){_65.push([_9(_66[0])?new RegExp("^"+_60(_66[0])+"$"):_66[0],_66[1]]);});},_67=function(_68){var _69=_68.name;if(!_69){_69=_68;_68={name:_69};}_68=_e({main:"main"},_68);_68.location=_68.location?_68.location:_69;if(_68.packageMap){map[_69]=_68.packageMap;}if(!_68.main.indexOf("./")){_68.main=_68.main.substring(2);}_50[_69]=_68;},_6a=[],_6b=function(_6c,_6d,_6e){for(var p in _6c){if(p=="waitSeconds"){req.waitms=(_6c[p]||0)*1000;}if(p=="cacheBust"){_52=_6c[p]?(_9(_6c[p])?_6c[p]:(new Date()).getTime()+""):"";}if(p=="baseUrl"||p=="combo"){req[p]=_6c[p];}if(1&&p=="async"){var _6f=_6c[p];req.legacyMode=_26=(_9(_6f)&&/sync|legacyAsync/.test(_6f)?_6f:(!_6f?_27:false));req.async=!_26;}if(_6c[p]!==_1a){req.rawConfig[p]=_6c[p];p!="has"&&has.add("config-"+p,_6c[p],0,_6d);}}if(!req.baseUrl){req.baseUrl="./";}if(!/\/$/.test(req.baseUrl)){req.baseUrl+="/";}for(p in _6c.has){has.add(p,_6c.has[p],0,_6d);}_b(_6c.packages,_67);for(var _70 in _6c.packagePaths){_b(_6c.packagePaths[_70],function(_71){var _72=_70+"/"+_71;if(_9(_71)){_71={name:_71};}_71.location=_72;_67(_71);});}_61(_e(map,_6c.map),_51);_b(_51,function(_73){_73[1]=_61(_73[1],[]);if(_73[0]=="*"){_51.star=_73;}});_61(_e(_4e,_6c.paths),_4f);_63(_6c.aliases,_4d);if(!has("foreign-loader")){if(_6d){_6a.push({config:_6c.config});}else{for(p in _6c.config){var _74=_32(p,_6e);_74.config=_e(_74.config||{},_6c.config[p]);}}if(_6c.cache){_58();_55=_6c.cache;_58(0,!!_6c.cache["*noref"]);}}_35("config",[_6c,req.rawConfig]);};if(has("dojo-cdn")||1){var _75=doc.getElementsByTagName("script"),i=0,_76,_77,src,_78;while(i<_75.length){_76=_75[i++];if((src=_76.getAttribute("src"))&&(_78=src.match(/(((.*)\/)|^)dojo\.js(\W|$)/i))){_77=_78[3]||"";_2.baseUrl=_2.baseUrl||_77;_57=_76;}if((src=(_76.getAttribute("data-dojo-config")||_76.getAttribute("djConfig")))){_56=req.eval("({ "+src+" })","data-dojo-config");_57=_76;}if(0){if((src=_76.getAttribute("data-main"))){_56.deps=_56.deps||[src];}}}}if(0){try{if(window.parent!=window&&window.parent.require){var doh=window.parent.require("doh");doh&&_e(_56,doh.testConfig);}}catch(e){}}req.rawConfig={};_6b(_2,1);if(has("dojo-cdn")){_50.dojo.location=_77;if(_77){_77+="/";}_50.dijit.location=_77+"../dijit/";_50.dojox.location=_77+"../dojox/";}_6b(_1,1);_6b(_56,1);}else{_4e=_2.paths;_4f=_2.pathsMapProg;_50=_2.packs;_4d=_2.aliases;_51=_2.mapProgs;_30=_2.modules;_53=_2.cache;_52=_2.cacheBust;req.rawConfig=_2;}if(!has("foreign-loader")){if(0){req.combo=req.combo||{add:_5};var _79=0,_7a=[],_7b=null;}var _7c=function(_7d){_38(function(){_b(_7d.deps,_33);if(0&&_79&&!_7b){_7b=setTimeout(function(){_79=0;_7b=null;req.combo.done(function(_7e,url){var _7f=function(){_80(0,_7e);_81();};_7a.push(_7e);_82=_7e;req.injectUrl(url,_7f,_7e);_82=0;},req);},0);}});},_17=function(a1,a2,a3,_83,_84){var _85,_86;if(_9(a1)){_85=_32(a1,_83,true);if(_85&&_85.executed){return _85.result;}throw _10("undefinedModule",a1);}if(!_a(a1)){_6b(a1,0,_83);a1=a2;a2=a3;}if(_a(a1)){if(!a1.length){a2&&a2();}else{_86="require*"+uid();for(var mid,_87=[],i=0;i<a1.length;){mid=a1[i++];_87.push(_32(mid,_83));}_85=_e(_88("",_86,0,""),{injected:_22,deps:_87,def:a2||_5,require:_83?_83.require:req,gc:1});_30[_85.mid]=_85;_7c(_85);var _89=_8a&&_26!=_27;_38(function(){_37(_85,_89);});if(!_85.executed){_31.push(_85);}_81();}}return _84;},_5f=function(_8b){if(!_8b){return req;}var _8c=_8b.require;if(!_8c){_8c=function(a1,a2,a3){return _17(a1,a2,a3,_8b,_8c);};_8b.require=_e(_8c,req);_8c.module=_8b;_8c.toUrl=function(_8d){return _5d(_8d,_8b);};_8c.toAbsMid=function(mid){return _bc(mid,_8b);};if(0){_8c.undef=function(mid){req.undef(mid,_8b);};}if(1){_8c.syncLoadNls=function(mid){var _8e=_5e(mid,_8b),_8f=_30[_8e.mid];if(!_8f||!_8f.executed){_90=_53[_8e.mid]||_53[_54+_8e.url];if(_90){_91(_90);_8f=_30[_8e.mid];}}return _8f&&_8f.executed&&_8f.result;};}}return _8c;},_31=[],_92=[],_93={},_94=function(_95){_95.injected=_21;_93[_95.mid]=1;if(_95.url){_93[_95.url]=_95.pack||1;}_96();},_34=function(_97){_97.injected=_22;delete _93[_97.mid];if(_97.url){delete _93[_97.url];}if(_6(_93)){_98();1&&_26==xd&&(_26=_27);}},_99=req.idle=function(){return !_92.length&&_6(_93)&&!_31.length&&!_8a;};}var _9a=function(_9b,map){if(map){for(var i=0;i<map.length;i++){if(map[i][2].test(_9b)){return map[i];}}}return 0;},_9c=function(_9d){var _9e=[],_9f,_a0;_9d=_9d.replace(/\\/g,"/").split("/");while(_9d.length){_9f=_9d.shift();if(_9f==".."&&_9e.length&&_a0!=".."){_9e.pop();_a0=_9e[_9e.length-1];}else{if(_9f!="."){_9e.push(_a0=_9f);}}}return _9e.join("/");},_88=function(pid,mid,_a1,url){if(1){var xd=req.isXdUrl(url);return {pid:pid,mid:mid,pack:_a1,url:url,executed:0,def:0,isXd:xd,isAmd:!!(xd||(_50[pid]&&_50[pid].isAmd))};}else{return {pid:pid,mid:mid,pack:_a1,url:url,executed:0,def:0};}},_a2=function(mid,_a3,_a4,_a5,_a6,_a7,_a8,_a9,_aa,_ab){var pid,_ac,_ad,_ae,url,_af,_b0,_b1;_b1=mid;_b0=/^\./.test(mid);if(/(^\/)|(\:)|(\.js$)/.test(mid)||(_b0&&!_a3)){return _88(0,mid,0,mid);}else{mid=_9c(_b0?(_a3.mid+"/../"+mid):mid);if(/^\./.test(mid)){throw _10("irrationalPath",mid);}if(!_ab&&!_b0&&_a7.star){_ae=_9a(mid,_a7.star[1]);}if(!_ae&&_a3){_ae=_9a(_a3.mid,_a7);_ae=_ae&&_9a(mid,_ae[1]);}if(_ae){mid=_ae[1]+mid.substring(_ae[3]);}_78=mid.match(/^([^\/]+)(\/(.+))?$/);pid=_78?_78[1]:"";if((_ac=_a4[pid])){mid=pid+"/"+(_ad=(_78[3]||_ac.main));}else{pid="";}var _b2=0,_b3=0;_b(_a9,function(_b4){var _b5=mid.match(_b4[0]);if(_b5&&_b5.length>_b2){_b3=_8(_b4[1])?mid.replace(_b4[0],_b4[1]):_b4[1];}});if(_b3){return _a2(_b3,0,_a4,_a5,_a6,_a7,_a8,_a9,_aa);}_af=_a5[mid];if(_af){return _aa?_88(_af.pid,_af.mid,_af.pack,_af.url):_a5[mid];}}_ae=_9a(mid,_a8);if(_ae){url=_ae[1]+mid.substring(_ae[3]);}else{if(pid){url=(_ac.location.slice(-1)==="/"?_ac.location.slice(0,-1):_ac.location)+"/"+_ad;}else{if(has("config-tlmSiblingOfDojo")){url="../"+mid;}else{url=mid;}}}if(!(/(^\/)|(\:)/.test(url))){url=_a6+url;}url+=".js";return _88(pid,mid,_ac,_9c(url));},_5e=function(mid,_b6,_b7){return _a2(mid,_b6,_50,_30,req.baseUrl,_51,_4f,_4d,undefined,_b7);};if(!has("foreign-loader")){var _b8=function(_b9,_ba,_bb){return _b9.normalize?_b9.normalize(_ba,function(mid){return _bc(mid,_bb);}):_bc(_ba,_bb);},_bd=0,_32=function(mid,_be,_bf){var _c0,_c1,_c2,_c3;_c0=mid.match(/^(.+?)\!(.*)$/);if(_c0){_c1=_32(_c0[1],_be,_bf);if(1&&_26==_27&&!_c1.executed){_33(_c1);if(_c1.injected===_22&&!_c1.executed){_38(function(){_37(_c1);});}if(_c1.executed){_c4(_c1);}else{_31.unshift(_c1);}}if(_c1.executed===_25&&!_c1.load){_c4(_c1);}if(_c1.load){_c2=_b8(_c1,_c0[2],_be);mid=(_c1.mid+"!"+(_c1.dynamic?++_bd+"!":"")+_c2);}else{_c2=_c0[2];mid=_c1.mid+"!"+(++_bd)+"!waitingForPlugin";}_c3={plugin:_c1,mid:mid,req:_5f(_be),prid:_c2};}else{_c3=_5e(mid,_be);}return _30[_c3.mid]||(!_bf&&(_30[_c3.mid]=_c3));};}var _bc=req.toAbsMid=function(mid,_c5){return _5e(mid,_c5).mid;},_5d=req.toUrl=function(_c6,_c7){var _c8=_5e(_c6+"/x",_c7),url=_c8.url;return _40(_c8.pid===0?_c6:url.substring(0,url.length-5));};if(!has("foreign-loader")){var _c9={injected:_22,executed:_25,def:_23,result:_23},_ca=function(mid){return _30[mid]=_e({mid:mid},_c9);},_cb=_ca("require"),_cc=_ca("exports"),_cd=_ca("module"),_ce=function(_cf,_d0){req.trace("loader-run-factory",[_cf.mid]);var _d1=_cf.def,_d2;1&&_28.unshift(_cf);if(has("config-dojo-loader-catches")){try{_d2=_8(_d1)?_d1.apply(null,_d0):_d1;}catch(e){_35(_45,_cf.result=_10("factoryThrew",[_cf,e]));}}else{_d2=_8(_d1)?_d1.apply(null,_d0):_d1;}_cf.result=_d2===undefined&&_cf.cjs?_cf.cjs.exports:_d2;1&&_28.shift(_cf);},_d3={},_d4=0,_c4=function(_d5){var _d6=_d5.result;_d5.dynamic=_d6.dynamic;_d5.normalize=_d6.normalize;_d5.load=_d6.load;return _d5;},_d7=function(_d8){var map={};_b(_d8.loadQ,function(_d9){var _da=_b8(_d8,_d9.prid,_d9.req.module),mid=_d8.dynamic?_d9.mid.replace(/waitingForPlugin$/,_da):(_d8.mid+"!"+_da),_db=_e(_e({},_d9),{mid:mid,prid:_da,injected:0});if(!_30[mid]||!_30[mid].injected){_ed(_30[mid]=_db);}map[_d9.mid]=_30[mid];_34(_d9);delete _30[_d9.mid];});_d8.loadQ=0;var _dc=function(_dd){for(var _de,_df=_dd.deps||[],i=0;i<_df.length;i++){_de=map[_df[i].mid];if(_de){_df[i]=_de;}}};for(var p in _30){_dc(_30[p]);}_b(_31,_dc);},_36=function(_e0){req.trace("loader-finish-exec",[_e0.mid]);_e0.executed=_25;_e0.defOrder=_d4++;1&&_b(_e0.provides,function(cb){cb();});if(_e0.loadQ){_c4(_e0);_d7(_e0);}for(i=0;i<_31.length;){if(_31[i]===_e0){_31.splice(i,1);}else{i++;}}if(/^require\*/.test(_e0.mid)){delete _30[_e0.mid];}},_e1=[],_37=function(_e2,_e3){if(_e2.executed===_24){req.trace("loader-circular-dependency",[_e1.concat(_e2.mid).join("->")]);return (!_e2.def||_e3)?_d3:(_e2.cjs&&_e2.cjs.exports);}if(!_e2.executed){if(!_e2.def){return _d3;}var mid=_e2.mid,_e4=_e2.deps||[],arg,_e5,_e6=[],i=0;if(0){_e1.push(mid);req.trace("loader-exec-module",["exec",_e1.length,mid]);}_e2.executed=_24;while((arg=_e4[i++])){_e5=((arg===_cb)?_5f(_e2):((arg===_cc)?_e2.cjs.exports:((arg===_cd)?_e2.cjs:_37(arg,_e3))));if(_e5===_d3){_e2.executed=0;req.trace("loader-exec-module",["abort",mid]);0&&_e1.pop();return _d3;}_e6.push(_e5);}_ce(_e2,_e6);_36(_e2);0&&_e1.pop();}return _e2.result;},_8a=0,_38=function(_e7){try{_8a++;_e7();}catch(e){throw e;}finally{_8a--;}if(_99()){_35("idle",[]);}},_81=function(){if(_8a){return;}_38(function(){_2a();for(var _e8,_e9,i=0;i<_31.length;){_e8=_d4;_e9=_31[i];_37(_e9);if(_e8!=_d4){_2a();i=0;}else{i++;}}});};}var _40=typeof _1.fixupUrl=="function"?_1.fixupUrl:function(url){url+="";return url+(_52?((/\?/.test(url)?"&":"?")+_52):"");};if(0){req.undef=function(_ea,_eb){var _ec=_32(_ea,_eb);_34(_ec);_e(_ec,{def:0,executed:0,injected:0,node:0,load:0});};}if(1){if(has("dojo-loader-eval-hint-url")===undefined){has.add("dojo-loader-eval-hint-url",1);}var _ed=function(_ee){var _ef=_ee.plugin;if(_ef.executed===_25&&!_ef.load){_c4(_ef);}var _f0=function(def){_ee.result=def;_34(_ee);_36(_ee);_81();};if(_ef.load){_ef.load(_ee.prid,_ee.req,_f0);}else{if(_ef.loadQ){_ef.loadQ.push(_ee);}else{_ef.loadQ=[_ee];_31.unshift(_ef);_33(_ef);}}},_90=0,_82=0,_f1=0,_91=function(_f2,_f3){if(has("config-stripStrict")){_f2=_f2.replace(/(["'])use strict\1/g,"");}_f1=1;if(has("config-dojo-loader-catches")){try{if(_f2===_90){_90.call(null);}else{req.eval(_f2,has("dojo-loader-eval-hint-url")?_f3.url:_f3.mid);}}catch(e){_35(_45,_10("evalModuleThrew",_f3));}}else{if(_f2===_90){_90.call(null);}else{req.eval(_f2,has("dojo-loader-eval-hint-url")?_f3.url:_f3.mid);}}_f1=0;},_33=function(_f4){var mid=_f4.mid,url=_f4.url;if(_f4.executed||_f4.injected||_93[mid]||(_f4.url&&((_f4.pack&&_93[_f4.url]===_f4.pack)||_93[_f4.url]==1))){return;}_94(_f4);if(0){var _f5=0;if(_f4.plugin&&_f4.plugin.isCombo){req.combo.add(_f4.plugin.mid,_f4.prid,0,req);_f5=1;}else{if(!_f4.plugin){_f5=req.combo.add(0,_f4.mid,_f4.url,req);}}if(_f5){_79=1;return;}}if(_f4.plugin){_ed(_f4);return;}var _f6=function(){_80(_f4);if(_f4.injected!==_22){if(has("dojo-enforceDefine")){_35(_45,_10("noDefine",_f4));return;}_34(_f4);_e(_f4,_c9);req.trace("loader-define-nonmodule",[_f4.url]);}if(1&&_26){!_28.length&&_81();}else{_81();}};_90=_53[mid]||_53[_54+_f4.url];if(_90){req.trace("loader-inject",["cache",_f4.mid,url]);_91(_90,_f4);_f6();return;}if(1&&_26){if(_f4.isXd){_26==_27&&(_26=xd);}else{if(_f4.isAmd&&_26!=_27){}else{var _f7=function(_f8){if(_26==_27){_28.unshift(_f4);_91(_f8,_f4);_28.shift();_80(_f4);if(!_f4.cjs){_34(_f4);_36(_f4);}if(_f4.finish){var _f9=mid+"*finish",_fa=_f4.finish;delete _f4.finish;def(_f9,["dojo",("dojo/require!"+_fa.join(",")).replace(/\./g,"/")],function(_fb){_b(_fa,function(mid){_fb.require(mid);});});_31.unshift(_32(_f9));}_f6();}else{_f8=_2b(_f4,_f8);if(_f8){_91(_f8,_f4);_f6();}else{_82=_f4;req.injectUrl(_40(url),_f6,_f4);_82=0;}}};req.trace("loader-inject",["xhr",_f4.mid,url,_26!=_27]);if(has("config-dojo-loader-catches")){try{req.getText(url,_26!=_27,_f7);}catch(e){_35(_45,_10("xhrInjectFailed",[_f4,e]));}}else{req.getText(url,_26!=_27,_f7);}return;}}}req.trace("loader-inject",["script",_f4.mid,url]);_82=_f4;req.injectUrl(_40(url),_f6,_f4);_82=0;},_fc=function(_fd,_fe,def){req.trace("loader-define-module",[_fd.mid,_fe]);if(0&&_fd.plugin&&_fd.plugin.isCombo){_fd.result=_8(def)?def():def;_34(_fd);_36(_fd);return _fd;}var mid=_fd.mid;if(_fd.injected===_22){_35(_45,_10("multipleDefine",_fd));return _fd;}_e(_fd,{deps:_fe,def:def,cjs:{id:_fd.mid,uri:_fd.url,exports:(_fd.result={}),setExports:function(_ff){_fd.cjs.exports=_ff;},config:function(){return _fd.config;}}});for(var i=0;_fe[i];i++){_fe[i]=_32(_fe[i],_fd);}if(1&&_26&&!_93[mid]){_7c(_fd);_31.push(_fd);_81();}_34(_fd);if(!_8(def)&&!_fe.length){_fd.result=def;_36(_fd);}return _fd;},_80=function(_100,mids){var _101=[],_102,args;while(_92.length){args=_92.shift();mids&&(args[0]=mids.shift());_102=(args[0]&&_32(args[0]))||_100;_101.push([_102,args[1],args[2]]);}_58(_100);_b(_101,function(args){_7c(_fc.apply(null,args));});};}var _103=0,_98=_5,_96=_5;if(1){_98=function(){_103&&clearTimeout(_103);_103=0;};_96=function(){_98();if(req.waitms){_103=_4.setTimeout(function(){_98();_35(_45,_10("timeout",_93));},req.waitms);}};}if(1){has.add("ie-event-behavior",doc.attachEvent&&typeof Windows==="undefined"&&(typeof opera==="undefined"||opera.toString()!="[object Opera]"));}if(1&&(1||1)){var _104=function(node,_105,_106,_107){if(!has("ie-event-behavior")){node.addEventListener(_105,_107,false);return function(){node.removeEventListener(_105,_107,false);};}else{node.attachEvent(_106,_107);return function(){node.detachEvent(_106,_107);};}},_108=_104(window,"load","onload",function(){req.pageLoaded=1;try{doc.readyState!="complete"&&(doc.readyState="complete");}catch(e){}_108();});if(1){var _75=doc.getElementsByTagName("script"),i=0,_76;while(!_57){if(!/^dojo/.test((_76=_75[i++])&&_76.type)){_57=_76;}}req.injectUrl=function(url,_109,_10a){var node=_10a.node=doc.createElement("script"),_10b=function(e){e=e||window.event;var node=e.target||e.srcElement;if(e.type==="load"||/complete|loaded/.test(node.readyState)){_10c();_10d();_109&&_109();}},_10c=_104(node,"load","onreadystatechange",_10b),_10d=_104(node,"error","onerror",function(e){_10c();_10d();_35(_45,_10("scriptError: "+url,[url,e]));});node.type="text/javascript";node.charset="utf-8";node.src=url;_57.parentNode.insertBefore(node,_57);return node;};}}if(1){req.log=function(){try{for(var i=0;i<arguments.length;i++){}}catch(e){}};}else{req.log=_5;}if(0){var _10e=req.trace=function(_10f,args){if(_10e.on&&_10e.group[_10f]){_35("trace",[_10f,args]);for(var arg,dump=[],text="trace:"+_10f+(args.length?(":"+args[0]):""),i=1;i<args.length;){arg=args[i++];if(_9(arg)){text+=", "+arg;}else{dump.push(arg);}}req.log(text);dump.length&&dump.push(".");req.log.apply(req,dump);}};_e(_10e,{on:1,group:{},set:function(_110,_111){if(_9(_110)){_10e.group[_110]=_111;}else{_e(_10e.group,_110);}}});_10e.set(_e(_e(_e({},_2.trace),_1.trace),_56.trace));on("config",function(_112){_112.trace&&_10e.set(_112.trace);});}else{req.trace=_5;}if(!has("foreign-loader")){var def=function(mid,_113,_114){var _115=arguments.length,_116=["require","exports","module"],args=[0,mid,_113];if(_115==1){args=[0,(_8(mid)?_116:[]),mid];}else{if(_115==2&&_9(mid)){args=[mid,(_8(_113)?_116:[]),_113];}else{if(_115==3){args=[mid,_113,_114];}}}if(0&&args[1]===_116){args[2].toString().replace(/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,"").replace(/require\(["']([\w\!\-_\.\/]+)["']\)/g,function(_117,dep){args[1].push(dep);});}req.trace("loader-define",args.slice(0,2));var _118=args[0]&&_32(args[0]),_119;if(_118&&!_93[_118.mid]){_7c(_fc(_118,args[1],args[2]));}else{if(!has("ie-event-behavior")||!1||_f1){_92.push(args);}else{_118=_118||_82;if(!_118){for(mid in _93){_119=_30[mid];if(_119&&_119.node&&_119.node.readyState==="interactive"){_118=_119;break;}}if(0&&!_118){for(var i=0;i<_7a.length;i++){_118=_7a[i];if(_118.node&&_118.node.readyState==="interactive"){break;}_118=0;}}}if(0&&_a(_118)){_7c(_fc(_32(_118.shift()),args[1],args[2]));if(!_118.length){_7a.splice(i,1);}}else{if(_118){_58(_118);_7c(_fc(_118,args[1],args[2]));}else{_35(_45,_10("ieDefineFailed",args[0]));}}_81();}}};def.amd={vendor:"dojotoolkit.org"};if(0){req.def=def;}}else{var def=_5;}_e(_e(req,_2.loaderPatch),_1.loaderPatch);on(_45,function(arg){try{console.error(arg);if(arg instanceof Error){for(var p in arg){}}}catch(e){}});_e(req,{uid:uid,cache:_53,packs:_50});if(0){_e(req,{paths:_4e,aliases:_4d,modules:_30,legacyMode:_26,execQ:_31,defQ:_92,waiting:_93,packs:_50,mapProgs:_51,pathsMapProg:_4f,listenerQueues:_44,computeMapProg:_61,computeAliases:_63,runMapProg:_9a,compactPath:_9c,getModuleInfo:_a2});}if(_4.define){if(1){_35(_45,_10("defineAlreadyDefined",0));}return;}else{_4.define=def;_4.require=req;if(0){require=req;}}if(0&&req.combo&&req.combo.plugins){var _11a=req.combo.plugins,_11b;for(_11b in _11a){_e(_e(_32(_11b),_11a[_11b]),{isCombo:1,executed:"executed",load:1});}}if(1&&!has("foreign-loader")){_b(_6a,function(c){_6b(c);});var _11c=_56.deps||_1.deps||_2.deps,_11d=_56.callback||_1.callback||_2.callback;req.boot=(_11c||_11d)?[_11c||[],_11d]:0;}if(!1){!req.async&&req(["dojo"]);req.boot&&req.apply(null,req.boot);}})(function(_11e){return _11e.dojoConfig||_11e.djConfig||_11e.require||{};},{async:0,hasCache:{"config-selectorEngine":"acme","config-tlmSiblingOfDojo":1,"dojo-built":1,"dojo-loader":1,dom:1,"host-browser":1},packages:[{location:"../dijit",name:"dijit"},{location:".",name:"dojo"}]});require({cache:{"dojo/_base/fx":function(){define(["./kernel","./config","./lang","../Evented","./Color","../aspect","../sniff","../dom","../dom-style"],function(dojo,_11f,lang,_120,_121,_122,has,dom,_123){var _124=lang.mixin;var _125={};var _126=_125._Line=function(_127,end){this.start=_127;this.end=end;};_126.prototype.getValue=function(n){return ((this.end-this.start)*n)+this.start;};var _128=_125.Animation=function(args){_124(this,args);if(lang.isArray(this.curve)){this.curve=new _126(this.curve[0],this.curve[1]);}};_128.prototype=new _120();lang.extend(_128,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var _129=this._percent,_12a=this.easing;return _12a?_12a(_129):_129;},_fire:function(evt,args){var a=args||[];if(this[evt]){if(_11f.debugAtAllCosts){this[evt].apply(this,a);}else{try{this[evt].apply(this,a);}catch(e){console.error("exception in animation handler for:",evt);console.error(e);}}}return this;},play:function(_12b,_12c){var _12d=this;if(_12d._delayTimer){_12d._clearTimer();}if(_12c){_12d._stopTimer();_12d._active=_12d._paused=false;_12d._percent=0;}else{if(_12d._active&&!_12d._paused){return _12d;}}_12d._fire("beforeBegin",[_12d.node]);var de=_12b||_12d.delay,_12e=lang.hitch(_12d,"_play",_12c);if(de>0){_12d._delayTimer=setTimeout(_12e,de);return _12d;}_12e();return _12d;},_play:function(_12f){var _130=this;if(_130._delayTimer){_130._clearTimer();}_130._startTime=new Date().valueOf();if(_130._paused){_130._startTime-=_130.duration*_130._percent;}_130._active=true;_130._paused=false;var _131=_130.curve.getValue(_130._getStep());if(!_130._percent){if(!_130._startRepeatCount){_130._startRepeatCount=_130.repeat;}_130._fire("onBegin",[_131]);}_130._fire("onPlay",[_131]);_130._cycle();return _130;},pause:function(){var _132=this;if(_132._delayTimer){_132._clearTimer();}_132._stopTimer();if(!_132._active){return _132;}_132._paused=true;_132._fire("onPause",[_132.curve.getValue(_132._getStep())]);return _132;},gotoPercent:function(_133,_134){var _135=this;_135._stopTimer();_135._active=_135._paused=true;_135._percent=_133;if(_134){_135.play();}return _135;},stop:function(_136){var _137=this;if(_137._delayTimer){_137._clearTimer();}if(!_137._timer){return _137;}_137._stopTimer();if(_136){_137._percent=1;}_137._fire("onStop",[_137.curve.getValue(_137._getStep())]);_137._active=_137._paused=false;return _137;},destroy:function(){this.stop();},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _138=this;if(_138._active){var curr=new Date().valueOf();var step=_138.duration===0?1:(curr-_138._startTime)/(_138.duration);if(step>=1){step=1;}_138._percent=step;if(_138.easing){step=_138.easing(step);}_138._fire("onAnimate",[_138.curve.getValue(step)]);if(_138._percent<1){_138._startTimer();}else{_138._active=false;if(_138.repeat>0){_138.repeat--;_138.play(null,true);}else{if(_138.repeat==-1){_138.play(null,true);}else{if(_138._startRepeatCount){_138.repeat=_138._startRepeatCount;_138._startRepeatCount=0;}}}_138._percent=0;_138._fire("onEnd",[_138.node]);!_138.repeat&&_138._stopTimer();}}return _138;},_clearTimer:function(){clearTimeout(this._delayTimer);delete this._delayTimer;}});var ctr=0,_139=null,_13a={run:function(){}};lang.extend(_128,{_startTimer:function(){if(!this._timer){this._timer=_122.after(_13a,"run",lang.hitch(this,"_cycle"),true);ctr++;}if(!_139){_139=setInterval(lang.hitch(_13a,"run"),this.rate);}},_stopTimer:function(){if(this._timer){this._timer.remove();this._timer=null;ctr--;}if(ctr<=0){clearInterval(_139);_139=null;ctr=0;}}});var _13b=has("ie")?function(node){var ns=node.style;if(!ns.width.length&&_123.get(node,"width")=="auto"){ns.width="auto";}}:function(){};_125._fade=function(args){args.node=dom.byId(args.node);var _13c=_124({properties:{}},args),_13d=(_13c.properties.opacity={});_13d.start=!("start" in _13c)?function(){return +_123.get(_13c.node,"opacity")||0;}:_13c.start;_13d.end=_13c.end;var anim=_125.animateProperty(_13c);_122.after(anim,"beforeBegin",lang.partial(_13b,_13c.node),true);return anim;};_125.fadeIn=function(args){return _125._fade(_124({end:1},args));};_125.fadeOut=function(args){return _125._fade(_124({end:0},args));};_125._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _13e=function(_13f){this._properties=_13f;for(var p in _13f){var prop=_13f[p];if(prop.start instanceof _121){prop.tempColor=new _121();}}};_13e.prototype.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p],_140=prop.start;if(_140 instanceof _121){ret[p]=_121.blendColors(_140,prop.end,r,prop.tempColor).toCss();}else{if(!lang.isArray(_140)){ret[p]=((prop.end-_140)*r)+_140+(p!="opacity"?prop.units||"px":0);}}}return ret;};_125.animateProperty=function(args){var n=args.node=dom.byId(args.node);if(!args.easing){args.easing=dojo._defaultEasing;}var anim=new _128(args);_122.after(anim,"beforeBegin",lang.hitch(anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];if(lang.isFunction(prop)){prop=prop(n);}prop=pm[p]=_124({},(lang.isObject(prop)?prop:{end:prop}));if(lang.isFunction(prop.start)){prop.start=prop.start(n);}if(lang.isFunction(prop.end)){prop.end=prop.end(n);}var _141=(p.toLowerCase().indexOf("color")>=0);function _142(node,p){var v={height:node.offsetHeight,width:node.offsetWidth}[p];if(v!==undefined){return v;}v=_123.get(node,p);return (p=="opacity")?+v:(_141?v:parseFloat(v));};if(!("end" in prop)){prop.end=_142(n,p);}else{if(!("start" in prop)){prop.start=_142(n,p);}}if(_141){prop.start=new _121(prop.start);prop.end=new _121(prop.end);}else{prop.start=(p=="opacity")?+prop.start:parseFloat(prop.start);}}this.curve=new _13e(pm);}),true);_122.after(anim,"onAnimate",lang.hitch(_123,"set",anim.node),true);return anim;};_125.anim=function(node,_143,_144,_145,_146,_147){return _125.animateProperty({node:node,duration:_144||_128.prototype.duration,properties:_143,easing:_145,onEnd:_146}).play(_147||0);};if(1){_124(dojo,_125);dojo._Animation=_128;}return _125;});},"dojo/dom-form":function(){define(["./_base/lang","./dom","./io-query","./json"],function(lang,dom,ioq,json){function _148(obj,name,_149){if(_149===null){return;}var val=obj[name];if(typeof val=="string"){obj[name]=[val,_149];}else{if(lang.isArray(val)){val.push(_149);}else{obj[name]=_149;}}};var _14a="file|submit|image|reset|button";var form={fieldToObject:function fieldToObject(_14b){var ret=null;_14b=dom.byId(_14b);if(_14b){var _14c=_14b.name,type=(_14b.type||"").toLowerCase();if(_14c&&type&&!_14b.disabled){if(type=="radio"||type=="checkbox"){if(_14b.checked){ret=_14b.value;}}else{if(_14b.multiple){ret=[];var _14d=[_14b.firstChild];while(_14d.length){for(var node=_14d.pop();node;node=node.nextSibling){if(node.nodeType==1&&node.tagName.toLowerCase()=="option"){if(node.selected){ret.push(node.value);}}else{if(node.nextSibling){_14d.push(node.nextSibling);}if(node.firstChild){_14d.push(node.firstChild);}break;}}}}else{ret=_14b.value;}}}}return ret;},toObject:function formToObject(_14e){var ret={},_14f=dom.byId(_14e).elements;for(var i=0,l=_14f.length;i<l;++i){var item=_14f[i],_150=item.name,type=(item.type||"").toLowerCase();if(_150&&type&&_14a.indexOf(type)<0&&!item.disabled){_148(ret,_150,form.fieldToObject(item));if(type=="image"){ret[_150+".x"]=ret[_150+".y"]=ret[_150].x=ret[_150].y=0;}}}return ret;},toQuery:function formToQuery(_151){return ioq.objectToQuery(form.toObject(_151));},toJson:function formToJson(_152,_153){return json.stringify(form.toObject(_152),null,_153?4:0);}};return form;});},"dojo/promise/tracer":function(){define(["../_base/lang","./Promise","../Evented"],function(lang,_154,_155){"use strict";var _156=new _155;var emit=_156.emit;_156.emit=null;function _157(args){setTimeout(function(){emit.apply(_156,args);},0);};_154.prototype.trace=function(){var args=lang._toArray(arguments);this.then(function(_158){_157(["resolved",_158].concat(args));},function(_159){_157(["rejected",_159].concat(args));},function(_15a){_157(["progress",_15a].concat(args));});return this;};_154.prototype.traceRejected=function(){var args=lang._toArray(arguments);this.otherwise(function(_15b){_157(["rejected",_15b].concat(args));});return this;};return _156;});},"dojo/errors/RequestError":function(){define(["./create"],function(_15c){return _15c("RequestError",function(_15d,_15e){this.response=_15e;});});},"dojo/_base/html":function(){define(["./kernel","../dom","../dom-style","../dom-attr","../dom-prop","../dom-class","../dom-construct","../dom-geometry"],function(dojo,dom,_15f,attr,prop,cls,ctr,geom){dojo.byId=dom.byId;dojo.isDescendant=dom.isDescendant;dojo.setSelectable=dom.setSelectable;dojo.getAttr=attr.get;dojo.setAttr=attr.set;dojo.hasAttr=attr.has;dojo.removeAttr=attr.remove;dojo.getNodeProp=attr.getNodeProp;dojo.attr=function(node,name,_160){if(arguments.length==2){return attr[typeof name=="string"?"get":"set"](node,name);}return attr.set(node,name,_160);};dojo.hasClass=cls.contains;dojo.addClass=cls.add;dojo.removeClass=cls.remove;dojo.toggleClass=cls.toggle;dojo.replaceClass=cls.replace;dojo._toDom=dojo.toDom=ctr.toDom;dojo.place=ctr.place;dojo.create=ctr.create;dojo.empty=function(node){ctr.empty(node);};dojo._destroyElement=dojo.destroy=function(node){ctr.destroy(node);};dojo._getPadExtents=dojo.getPadExtents=geom.getPadExtents;dojo._getBorderExtents=dojo.getBorderExtents=geom.getBorderExtents;dojo._getPadBorderExtents=dojo.getPadBorderExtents=geom.getPadBorderExtents;dojo._getMarginExtents=dojo.getMarginExtents=geom.getMarginExtents;dojo._getMarginSize=dojo.getMarginSize=geom.getMarginSize;dojo._getMarginBox=dojo.getMarginBox=geom.getMarginBox;dojo.setMarginBox=geom.setMarginBox;dojo._getContentBox=dojo.getContentBox=geom.getContentBox;dojo.setContentSize=geom.setContentSize;dojo._isBodyLtr=dojo.isBodyLtr=geom.isBodyLtr;dojo._docScroll=dojo.docScroll=geom.docScroll;dojo._getIeDocumentElementOffset=dojo.getIeDocumentElementOffset=geom.getIeDocumentElementOffset;dojo._fixIeBiDiScrollLeft=dojo.fixIeBiDiScrollLeft=geom.fixIeBiDiScrollLeft;dojo.position=geom.position;dojo.marginBox=function marginBox(node,box){return box?geom.setMarginBox(node,box):geom.getMarginBox(node);};dojo.contentBox=function contentBox(node,box){return box?geom.setContentSize(node,box):geom.getContentBox(node);};dojo.coords=function(node,_161){dojo.deprecated("dojo.coords()","Use dojo.position() or dojo.marginBox().");node=dom.byId(node);var s=_15f.getComputedStyle(node),mb=geom.getMarginBox(node,s);var abs=geom.position(node,_161);mb.x=abs.x;mb.y=abs.y;return mb;};dojo.getProp=prop.get;dojo.setProp=prop.set;dojo.prop=function(node,name,_162){if(arguments.length==2){return prop[typeof name=="string"?"get":"set"](node,name);}return prop.set(node,name,_162);};dojo.getStyle=_15f.get;dojo.setStyle=_15f.set;dojo.getComputedStyle=_15f.getComputedStyle;dojo.__toPixelValue=dojo.toPixelValue=_15f.toPixelValue;dojo.style=function(node,name,_163){switch(arguments.length){case 1:return _15f.get(node);case 2:return _15f[typeof name=="string"?"get":"set"](node,name);}return _15f.set(node,name,_163);};return dojo;});},"dojo/_base/kernel":function(){define(["../global","../has","./config","require","module"],function(_164,has,_165,_166,_167){var i,p,_168={},_169={},dojo={config:_165,global:_164,dijit:_168,dojox:_169};var _16a={dojo:["dojo",dojo],dijit:["dijit",_168],dojox:["dojox",_169]},_16b=(_166.map&&_166.map[_167.id.match(/[^\/]+/)[0]]),item;for(p in _16b){if(_16a[p]){_16a[p][0]=_16b[p];}else{_16a[p]=[_16b[p],{}];}}for(p in _16a){item=_16a[p];item[1]._scopeName=item[0];if(!_165.noGlobals){_164[item[0]]=item[1];}}dojo.scopeMap=_16a;dojo.baseUrl=dojo.config.baseUrl=_166.baseUrl;dojo.isAsync=!1||_166.async;dojo.locale=_165.locale;var rev="$Rev: d6e8ff38 $".match(/[0-9a-f]{7,}/);dojo.version={major:1,minor:14,patch:2,flag:"",revision:rev?rev[0]:NaN,toString:function(){var v=dojo.version;return v.major+"."+v.minor+"."+v.patch+v.flag+" ("+v.revision+")";}};1||has.add("extend-dojo",1);if(!has("csp-restrictions")){(Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}"))(dojo);}if(0){dojo.exit=function(_16c){quit(_16c);};}else{dojo.exit=function(){};}if(!has("host-webworker")){1||has.add("dojo-guarantee-console",1);}if(1){has.add("console-as-object",function(){return Function.prototype.bind&&console&&typeof console.log==="object";});typeof console!="undefined"||(console={});var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var tn;i=0;while((tn=cn[i++])){if(!console[tn]){(function(){var tcn=tn+"";console[tcn]=("log" in console)?function(){var a=Array.prototype.slice.call(arguments);a.unshift(tcn+":");console["log"](a.join(" "));}:function(){};console[tcn]._fake=true;})();}else{if(has("console-as-object")){console[tn]=Function.prototype.bind.call(console[tn],console);}}}}has.add("dojo-debug-messages",!!_165.isDebug);dojo.deprecated=dojo.experimental=function(){};if(has("dojo-debug-messages")){dojo.deprecated=function(_16d,_16e,_16f){var _170="DEPRECATED: "+_16d;if(_16e){_170+=" "+_16e;}if(_16f){_170+=" -- will be removed in version: "+_16f;}console.warn(_170);};dojo.experimental=function(_171,_172){var _173="EXPERIMENTAL: "+_171+" -- APIs subject to change without notice.";if(_172){_173+=" "+_172;}console.warn(_173);};}1||has.add("dojo-modulePaths",1);if(1){if(_165.modulePaths){dojo.deprecated("dojo.modulePaths","use paths configuration");var _174={};for(p in _165.modulePaths){_174[p.replace(/\./g,"/")]=_165.modulePaths[p];}_166({paths:_174});}}1||has.add("dojo-moduleUrl",1);if(1){dojo.moduleUrl=function(_175,url){dojo.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var _176=null;if(_175){_176=_166.toUrl(_175.replace(/\./g,"/")+(url?("/"+url):"")+"/*.*").replace(/\/\*\.\*/,"")+(url?"":"/");}return _176;};}dojo._hasResource={};return dojo;});},"dojo/io-query":function(){define(["./_base/lang"],function(lang){var _177={};return {objectToQuery:function objectToQuery(map){var enc=encodeURIComponent,_178=[];for(var name in map){var _179=map[name];if(_179!=_177[name]){var _17a=enc(name)+"=";if(lang.isArray(_179)){for(var i=0,l=_179.length;i<l;++i){_178.push(_17a+enc(_179[i]));}}else{_178.push(_17a+enc(_179));}}}return _178.join("&");},queryToObject:function queryToObject(str){var dec=decodeURIComponent,qp=str.split("&"),ret={},name,val;for(var i=0,l=qp.length,item;i<l;++i){item=qp[i];if(item.length){var s=item.indexOf("=");if(s<0){name=dec(item);val="";}else{name=dec(item.slice(0,s));val=dec(item.slice(s+1));}if(typeof ret[name]=="string"){ret[name]=[ret[name]];}if(lang.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}}return ret;}};});},"dojo/_base/Deferred":function(){define(["./kernel","../Deferred","../promise/Promise","../errors/CancelError","../has","./lang","../when"],function(dojo,_17b,_17c,_17d,has,lang,when){var _17e=function(){};var _17f=Object.freeze||function(){};var _180=dojo.Deferred=function(_181){var _182,_183,_184,_185,_186,head,_187;var _188=(this.promise=new _17c());function _189(_18a){if(_183){throw new Error("This deferred has already been resolved");}_182=_18a;_183=true;_18b();};function _18b(){var _18c;while(!_18c&&_187){var _18d=_187;_187=_187.next;if((_18c=(_18d.progress==_17e))){_183=false;}var func=(_186?_18d.error:_18d.resolved);if(has("config-useDeferredInstrumentation")){if(_186&&_17b.instrumentRejected){_17b.instrumentRejected(_182,!!func);}}if(func){try{var _18e=func(_182);if(_18e&&typeof _18e.then==="function"){_18e.then(lang.hitch(_18d.deferred,"resolve"),lang.hitch(_18d.deferred,"reject"),lang.hitch(_18d.deferred,"progress"));continue;}var _18f=_18c&&_18e===undefined;if(_18c&&!_18f){_186=_18e instanceof Error;}_18d.deferred[_18f&&_186?"reject":"resolve"](_18f?_182:_18e);}catch(e){_18d.deferred.reject(e);}}else{if(_186){_18d.deferred.reject(_182);}else{_18d.deferred.resolve(_182);}}}};this.isResolved=_188.isResolved=function(){return _185==0;};this.isRejected=_188.isRejected=function(){return _185==1;};this.isFulfilled=_188.isFulfilled=function(){return _185>=0;};this.isCanceled=_188.isCanceled=function(){return _184;};this.resolve=this.callback=function(_190){this.fired=_185=0;this.results=[_190,null];_189(_190);};this.reject=this.errback=function(_191){_186=true;this.fired=_185=1;if(has("config-useDeferredInstrumentation")){if(_17b.instrumentRejected){_17b.instrumentRejected(_191,!!_187);}}_189(_191);this.results=[null,_191];};this.progress=function(_192){var _193=_187;while(_193){var _194=_193.progress;_194&&_194(_192);_193=_193.next;}};this.addCallbacks=function(_195,_196){this.then(_195,_196,_17e);return this;};_188.then=this.then=function(_197,_198,_199){var _19a=_199==_17e?this:new _180(_188.cancel);var _19b={resolved:_197,error:_198,progress:_199,deferred:_19a};if(_187){head=head.next=_19b;}else{_187=head=_19b;}if(_183){_18b();}return _19a.promise;};var _19c=this;_188.cancel=this.cancel=function(){if(!_183){var _19d=_181&&_181(_19c);if(!_183){if(!(_19d instanceof Error)){_19d=new _17d(_19d);}_19d.log=false;_19c.reject(_19d);}}_184=true;};_17f(_188);};lang.extend(_180,{addCallback:function(_19e){return this.addCallbacks(lang.hitch.apply(dojo,arguments));},addErrback:function(_19f){return this.addCallbacks(null,lang.hitch.apply(dojo,arguments));},addBoth:function(_1a0){var _1a1=lang.hitch.apply(dojo,arguments);return this.addCallbacks(_1a1,_1a1);},fired:-1});_180.when=dojo.when=when;return _180;});},"dojo/NodeList-dom":function(){define(["./_base/kernel","./query","./_base/array","./_base/lang","./dom-class","./dom-construct","./dom-geometry","./dom-attr","./dom-style"],function(dojo,_1a2,_1a3,lang,_1a4,_1a5,_1a6,_1a7,_1a8){var _1a9=function(a){return a.length==1&&(typeof a[0]=="string");};var _1aa=function(node){var p=node.parentNode;if(p){p.removeChild(node);}};var _1ab=_1a2.NodeList,awc=_1ab._adaptWithCondition,aafe=_1ab._adaptAsForEach,aam=_1ab._adaptAsMap;function _1ac(_1ad){return function(node,name,_1ae){if(arguments.length==2){return _1ad[typeof name=="string"?"get":"set"](node,name);}return _1ad.set(node,name,_1ae);};};lang.extend(_1ab,{_normalize:function(_1af,_1b0){var _1b1=_1af.parse===true;if(typeof _1af.template=="string"){var _1b2=_1af.templateFunc||(dojo.string&&dojo.string.substitute);_1af=_1b2?_1b2(_1af.template,_1af):_1af;}var type=(typeof _1af);if(type=="string"||type=="number"){_1af=_1a5.toDom(_1af,(_1b0&&_1b0.ownerDocument));if(_1af.nodeType==11){_1af=lang._toArray(_1af.childNodes);}else{_1af=[_1af];}}else{if(!lang.isArrayLike(_1af)){_1af=[_1af];}else{if(!lang.isArray(_1af)){_1af=lang._toArray(_1af);}}}if(_1b1){_1af._runParse=true;}return _1af;},_cloneNode:function(node){return node.cloneNode(true);},_place:function(ary,_1b3,_1b4,_1b5){if(_1b3.nodeType!=1&&_1b4=="only"){return;}var _1b6=_1b3,_1b7;var _1b8=ary.length;for(var i=_1b8-1;i>=0;i--){var node=(_1b5?this._cloneNode(ary[i]):ary[i]);if(ary._runParse&&dojo.parser&&dojo.parser.parse){if(!_1b7){_1b7=_1b6.ownerDocument.createElement("div");}_1b7.appendChild(node);dojo.parser.parse(_1b7);node=_1b7.firstChild;while(_1b7.firstChild){_1b7.removeChild(_1b7.firstChild);}}if(i==_1b8-1){_1a5.place(node,_1b6,_1b4);}else{_1b6.parentNode.insertBefore(node,_1b6);}_1b6=node;}},position:aam(_1a6.position),attr:awc(_1ac(_1a7),_1a9),style:awc(_1ac(_1a8),_1a9),addClass:aafe(_1a4.add),removeClass:aafe(_1a4.remove),toggleClass:aafe(_1a4.toggle),replaceClass:aafe(_1a4.replace),empty:aafe(_1a5.empty),removeAttr:aafe(_1a7.remove),marginBox:aam(_1a6.getMarginBox),place:function(_1b9,_1ba){var item=_1a2(_1b9)[0];return this.forEach(function(node){_1a5.place(node,item,_1ba);});},orphan:function(_1bb){return (_1bb?_1a2._filterResult(this,_1bb):this).forEach(_1aa);},adopt:function(_1bc,_1bd){return _1a2(_1bc).place(this[0],_1bd)._stash(this);},query:function(_1be){if(!_1be){return this;}var ret=new _1ab;this.map(function(node){_1a2(_1be,node).forEach(function(_1bf){if(_1bf!==undefined){ret.push(_1bf);}});});return ret._stash(this);},filter:function(_1c0){var a=arguments,_1c1=this,_1c2=0;if(typeof _1c0=="string"){_1c1=_1a2._filterResult(this,a[0]);if(a.length==1){return _1c1._stash(this);}_1c2=1;}return this._wrap(_1a3.filter(_1c1,a[_1c2],a[_1c2+1]),this);},addContent:function(_1c3,_1c4){_1c3=this._normalize(_1c3,this[0]);for(var i=0,node;(node=this[i]);i++){if(_1c3.length){this._place(_1c3,node,_1c4,i>0);}else{_1a5.empty(node);}}return this;}});return _1ab;});},"dojo/query":function(){define(["./_base/kernel","./has","./dom","./on","./_base/array","./_base/lang","./selector/_loader","./selector/_loader!default"],function(dojo,has,dom,on,_1c5,lang,_1c6,_1c7){"use strict";has.add("array-extensible",function(){return lang.delegate([],{length:1}).length==1&&!has("bug-for-in-skips-shadowed");});var ap=Array.prototype,aps=ap.slice,apc=ap.concat,_1c8=_1c5.forEach;var tnl=function(a,_1c9,_1ca){var _1cb=new (_1ca||this._NodeListCtor||nl)(a);return _1c9?_1cb._stash(_1c9):_1cb;};var _1cc=function(f,a,o){a=[0].concat(aps.call(a,0));o=o||dojo.global;return function(node){a[0]=node;return f.apply(o,a);};};var _1cd=function(f,o){return function(){this.forEach(_1cc(f,arguments,o));return this;};};var _1ce=function(f,o){return function(){return this.map(_1cc(f,arguments,o));};};var _1cf=function(f,o){return function(){return this.filter(_1cc(f,arguments,o));};};var _1d0=function(f,g,o){return function(){var a=arguments,body=_1cc(f,a,o);if(g.call(o||dojo.global,a)){return this.map(body);}this.forEach(body);return this;};};var _1d1=function(_1d2){var _1d3=this instanceof nl&&has("array-extensible");if(typeof _1d2=="number"){_1d2=Array(_1d2);}var _1d4=(_1d2&&"length" in _1d2)?_1d2:arguments;if(_1d3||!_1d4.sort){var _1d5=_1d3?this:[],l=_1d5.length=_1d4.length;for(var i=0;i<l;i++){_1d5[i]=_1d4[i];}if(_1d3){return _1d5;}_1d4=_1d5;}lang._mixin(_1d4,nlp);_1d4._NodeListCtor=function(_1d6){return nl(_1d6);};return _1d4;};var nl=_1d1,nlp=nl.prototype=has("array-extensible")?[]:{};nl._wrap=nlp._wrap=tnl;nl._adaptAsMap=_1ce;nl._adaptAsForEach=_1cd;nl._adaptAsFilter=_1cf;nl._adaptWithCondition=_1d0;_1c8(["slice","splice"],function(name){var f=ap[name];nlp[name]=function(){return this._wrap(f.apply(this,arguments),name=="slice"?this:null);};});_1c8(["indexOf","lastIndexOf","every","some"],function(name){var f=_1c5[name];nlp[name]=function(){return f.apply(dojo,[this].concat(aps.call(arguments,0)));};});lang.extend(_1d1,{constructor:nl,_NodeListCtor:nl,toString:function(){return this.join(",");},_stash:function(_1d7){this._parent=_1d7;return this;},on:function(_1d8,_1d9){var _1da=this.map(function(node){return on(node,_1d8,_1d9);});_1da.remove=function(){for(var i=0;i<_1da.length;i++){_1da[i].remove();}};return _1da;},end:function(){if(this._parent){return this._parent;}else{return new this._NodeListCtor(0);}},concat:function(item){var t=aps.call(this,0),m=_1c5.map(arguments,function(a){return aps.call(a,0);});return this._wrap(apc.apply(t,m),this);},map:function(func,obj){return this._wrap(_1c5.map(this,func,obj),this);},forEach:function(_1db,_1dc){_1c8(this,_1db,_1dc);return this;},filter:function(_1dd){var a=arguments,_1de=this,_1df=0;if(typeof _1dd=="string"){_1de=_1e0._filterResult(this,a[0]);if(a.length==1){return _1de._stash(this);}_1df=1;}return this._wrap(_1c5.filter(_1de,a[_1df],a[_1df+1]),this);},instantiate:function(_1e1,_1e2){var c=lang.isFunction(_1e1)?_1e1:lang.getObject(_1e1);_1e2=_1e2||{};return this.forEach(function(node){new c(_1e2,node);});},at:function(){var t=new this._NodeListCtor(0);_1c8(arguments,function(i){if(i<0){i=this.length+i;}if(this[i]){t.push(this[i]);}},this);return t._stash(this);}});function _1e3(_1e4,_1e5){var _1e6=function(_1e7,root){if(typeof root=="string"){root=dom.byId(root);if(!root){return new _1e5([]);}}var _1e8=typeof _1e7=="string"?_1e4(_1e7,root):_1e7?(_1e7.end&&_1e7.on)?_1e7:[_1e7]:[];if(_1e8.end&&_1e8.on){return _1e8;}return new _1e5(_1e8);};_1e6.matches=_1e4.match||function(node,_1e9,root){return _1e6.filter([node],_1e9,root).length>0;};_1e6.filter=_1e4.filter||function(_1ea,_1eb,root){return _1e6(_1eb,root).filter(function(node){return _1c5.indexOf(_1ea,node)>-1;});};if(typeof _1e4!="function"){var _1ec=_1e4.search;_1e4=function(_1ed,root){return _1ec(root||document,_1ed);};}return _1e6;};var _1e0=_1e3(_1c7,_1d1);dojo.query=_1e3(_1c7,function(_1ee){return _1d1(_1ee);});_1e0.load=function(id,_1ef,_1f0){_1c6.load(id,_1ef,function(_1f1){_1f0(_1e3(_1f1,_1d1));});};dojo._filterQueryResult=_1e0._filterResult=function(_1f2,_1f3,root){return new _1d1(_1e0.filter(_1f2,_1f3,root));};dojo.NodeList=_1e0.NodeList=_1d1;return _1e0;});},"dojo/has":function(){define(["./global","require","module"],function(_1f4,_1f5,_1f6){var has=_1f5.has||function(){};if(!1){var _1f7=typeof window!="undefined"&&typeof location!="undefined"&&typeof document!="undefined"&&window.location==location&&window.document==document,doc=_1f7&&document,_1f8=doc&&doc.createElement("DiV"),_1f9=(_1f6.config&&_1f6.config())||{};has=function(name){return typeof _1f9[name]=="function"?(_1f9[name]=_1f9[name](_1f4,doc,_1f8)):_1f9[name];};has.cache=_1f9;has.add=function(name,test,now,_1fa){(typeof _1f9[name]=="undefined"||_1fa)&&(_1f9[name]=test);return now&&has(name);};1||has.add("host-browser",_1f7);0&&has.add("host-node",(typeof process=="object"&&process.versions&&process.versions.node&&process.versions.v8));0&&has.add("host-rhino",(typeof load=="function"&&(typeof Packages=="function"||typeof Packages=="object")));1||has.add("dom",_1f7);1||has.add("dojo-dom-ready-api",1);1||has.add("dojo-sniff",1);}if(1){has.add("dom-addeventlistener",!!document.addEventListener);has.add("touch","ontouchstart" in document||("onpointerdown" in document&&navigator.maxTouchPoints>0)||window.navigator.msMaxTouchPoints);has.add("touch-events","ontouchstart" in document);has.add("pointer-events","pointerEnabled" in window.navigator?window.navigator.pointerEnabled:"PointerEvent" in window);has.add("MSPointer",window.navigator.msPointerEnabled);has.add("touch-action",has("touch")&&has("pointer-events"));has.add("device-width",screen.availWidth||innerWidth);var form=document.createElement("form");has.add("dom-attributes-explicit",form.attributes.length==0);has.add("dom-attributes-specified-flag",form.attributes.length>0&&form.attributes.length<40);}has.clearElement=function(_1fb){_1fb.innerHTML="";return _1fb;};has.normalize=function(id,_1fc){var _1fd=id.match(/[\?:]|[^:\?]*/g),i=0,get=function(skip){var term=_1fd[i++];if(term==":"){return 0;}else{if(_1fd[i++]=="?"){if(!skip&&has(term)){return get();}else{get(true);return get(skip);}}return term||0;}};id=get();return id&&_1fc(id);};has.load=function(id,_1fe,_1ff){if(id){_1fe([id],_1ff);}else{_1ff();}};return has;});},"dojo/_base/loader":function(){define(["./kernel","../has","require","module","../json","./lang","./array"],function(dojo,has,_200,_201,json,lang,_202){if(!1){console.error("cannot load the Dojo v1.x loader with a foreign loader");return 0;}1||has.add("dojo-fast-sync-require",1);var _203=function(id){return {src:_201.id,id:id};},_204=function(name){return name.replace(/\./g,"/");},_205=/\/\/>>built/,_206=[],_207=[],_208=function(mid,_209,_20a){_206.push(_20a);_202.forEach(mid.split(","),function(mid){var _20b=_20c(mid,_209.module);_207.push(_20b);_20d(_20b);});_20e();},_20e=(1?function(){var _20f,mid;for(mid in _210){_20f=_210[mid];if(_20f.noReqPluginCheck===undefined){_20f.noReqPluginCheck=/loadInit\!/.test(mid)||/require\!/.test(mid)?1:0;}if(!_20f.executed&&!_20f.noReqPluginCheck&&_20f.injected==_211){return;}}_212(function(){var _213=_206;_206=[];_202.forEach(_213,function(cb){cb(1);});});}:(function(){var _214,_215=function(m){_214[m.mid]=1;for(var t,_216,deps=m.deps||[],i=0;i<deps.length;i++){_216=deps[i];if(!(t=_214[_216.mid])){if(t===0||!_215(_216)){_214[m.mid]=0;return false;}}}return true;};return function(){var _217,mid;_214={};for(mid in _210){_217=_210[mid];if(_217.executed||_217.noReqPluginCheck){_214[mid]=1;}else{if(_217.noReqPluginCheck!==0){_217.noReqPluginCheck=/loadInit\!/.test(mid)||/require\!/.test(mid)?1:0;}if(_217.noReqPluginCheck){_214[mid]=1;}else{if(_217.injected!==_242){_214[mid]=0;}}}}for(var t,i=0,end=_207.length;i<end;i++){_217=_207[i];if(!(t=_214[_217.mid])){if(t===0||!_215(_217)){return;}}}_212(function(){var _218=_206;_206=[];_202.forEach(_218,function(cb){cb(1);});});};})()),_219=function(mid,_21a,_21b){_21a([mid],function(_21c){_21a(_21c.names,function(){for(var _21d="",args=[],i=0;i<arguments.length;i++){_21d+="var "+_21c.names[i]+"= arguments["+i+"]; ";args.push(arguments[i]);}eval(_21d);var _21e=_21a.module,_21f=[],_220,_221={provide:function(_222){_222=_204(_222);var _223=_20c(_222,_21e);if(_223!==_21e){_248(_223);}},require:function(_224,_225){_224=_204(_224);_225&&(_20c(_224,_21e).result=_243);_21f.push(_224);},requireLocalization:function(_226,_227,_228){if(!_220){_220=["dojo/i18n"];}_228=(_228||dojo.locale).toLowerCase();_226=_204(_226)+"/nls/"+(/root/i.test(_228)?"":_228+"/")+_204(_227);if(_20c(_226,_21e).isXd){_220.push("dojo/i18n!"+_226);}},loadInit:function(f){f();}},hold={},p;try{for(p in _221){hold[p]=dojo[p];dojo[p]=_221[p];}_21c.def.apply(null,args);}catch(e){_229("error",[_203("failedDojoLoadInit"),e]);}finally{for(p in _221){dojo[p]=hold[p];}}if(_220){_21f=_21f.concat(_220);}if(_21f.length){_208(_21f.join(","),_21a,_21b);}else{_21b();}});});},_22a=function(text,_22b,_22c){var _22d=/\(|\)/g,_22e=1,_22f;_22d.lastIndex=_22b;while((_22f=_22d.exec(text))){if(_22f[0]==")"){_22e-=1;}else{_22e+=1;}if(_22e==0){break;}}if(_22e!=0){throw "unmatched paren around character "+_22d.lastIndex+" in: "+text;}return [dojo.trim(text.substring(_22c,_22d.lastIndex))+";\n",_22d.lastIndex];},_230=/\/\/.*|\/\*[\s\S]*?\*\/|("(?:\\.|[^"])*"|'(?:\\.|[^'])*'|`(?:\\.|[^`])*`)/mg,_231=/(^|\s)dojo\.(loadInit|require|provide|requireLocalization|requireIf|requireAfterIf|platformRequire)\s*\(/mg,_232=/(^|\s)(require|define)\s*\(/m,_233=function(text,_234){var _235,_236,_237,_238,_239=[],_23a=[],_23b=[];_234=_234||text.replace(_230,"$1");while((_235=_231.exec(_234))){_236=_231.lastIndex;_237=_236-_235[0].length;_238=_22a(_234,_236,_237);if(_235[2]=="loadInit"){_239.push(_238[0]);}else{_23a.push(_238[0]);}_231.lastIndex=_238[1];}_23b=_239.concat(_23a);if(_23b.length||!_232.test(_234)){return [text.replace(/(^|\s)dojo\.loadInit\s*\(/g,"\n0 && dojo.loadInit("),_23b.join(""),_23b];}else{return 0;}},_23c=function(_23d,text){var _23e,id,_23f=[],_240=[];if(_205.test(text)||!(_23e=_233(text))){return 0;}id=_23d.mid+"-*loadInit";for(var p in _20c("dojo",_23d).result.scopeMap){_23f.push(p);_240.push("\""+p+"\"");}return "// xdomain rewrite of "+_23d.mid+"\n"+"define('"+id+"',{\n"+"\tnames:"+json.stringify(_23f)+",\n"+"\tdef:function("+_23f.join(",")+"){"+_23e[1]+"}"+"});\n\n"+"define("+json.stringify(_23f.concat(["dojo/loadInit!"+id]))+", function("+_23f.join(",")+"){\n"+_23e[0]+"});";},_241=_200.initSyncLoader(_208,_20e,_23c),sync=_241.sync,_211=_241.requested,_242=_241.arrived,_243=_241.nonmodule,_244=_241.executing,_245=_241.executed,_246=_241.syncExecStack,_210=_241.modules,_247=_241.execQ,_20c=_241.getModule,_20d=_241.injectModule,_248=_241.setArrived,_229=_241.signal,_249=_241.finishExec,_24a=_241.execModule,_24b=_241.getLegacyMode,_212=_241.guardCheckComplete;_208=_241.dojoRequirePlugin;dojo.provide=function(mid){var _24c=_246[0],_24d=lang.mixin(_20c(_204(mid),_200.module),{executed:_244,result:lang.getObject(mid,true)});_248(_24d);if(_24c){(_24c.provides||(_24c.provides=[])).push(function(){_24d.result=lang.getObject(mid);delete _24d.provides;_24d.executed!==_245&&_249(_24d);});}return _24d.result;};has.add("config-publishRequireResult",1,0,0);dojo.require=function(_24e,_24f){function _250(mid,_251){var _252=_20c(_204(mid),_200.module);if(_246.length&&_246[0].finish){_246[0].finish.push(mid);return undefined;}if(_252.executed){return _252.result;}_251&&(_252.result=_243);var _253=_24b();_20d(_252);_253=_24b();if(_252.executed!==_245&&_252.injected===_242){_241.guardCheckComplete(function(){_24a(_252);});}if(_252.executed){return _252.result;}if(_253==sync){if(_252.cjs){_247.unshift(_252);}else{_246.length&&(_246[0].finish=[mid]);}}else{_247.push(_252);}return undefined;};var _254=_250(_24e,_24f);if(has("config-publishRequireResult")&&!lang.exists(_24e)&&_254!==undefined){lang.setObject(_24e,_254);}return _254;};dojo.loadInit=function(f){f();};dojo.registerModulePath=function(_255,_256){var _257={};_257[_255.replace(/\./g,"/")]=_256;_200({paths:_257});};dojo.platformRequire=function(_258){var _259=(_258.common||[]).concat(_258[dojo._name]||_258["default"]||[]),temp;while(_259.length){if(lang.isArray(temp=_259.shift())){dojo.require.apply(dojo,temp);}else{dojo.require(temp);}}};dojo.requireIf=dojo.requireAfterIf=function(_25a,_25b,_25c){if(_25a){dojo.require(_25b,_25c);}};dojo.requireLocalization=function(_25d,_25e,_25f){_200(["../i18n"],function(i18n){i18n.getLocalization(_25d,_25e,_25f);});};return {extractLegacyApiApplications:_233,require:_208,loadInit:_219};});},"dojo/json":function(){define(["./has"],function(has){"use strict";var _260=typeof JSON!="undefined";has.add("json-parse",_260);has.add("json-stringify",_260&&JSON.stringify({a:0},function(k,v){return v||1;})=="{\"a\":1}");if(has("json-stringify")){return JSON;}else{var _261=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};return {parse:has("json-parse")?JSON.parse:function(str,_262){if(_262&&!/^([\s\[\{]*(?:"(?:\\.|[^"])*"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(str)){throw new SyntaxError("Invalid characters in JSON");}return eval("("+str+")");},stringify:function(_263,_264,_265){var _266;if(typeof _264=="string"){_265=_264;_264=null;}function _267(it,_268,key){if(_264){it=_264(key,it);}var val,_269=typeof it;if(_269=="number"){return isFinite(it)?it+"":"null";}if(_269=="boolean"){return it+"";}if(it===null){return "null";}if(typeof it=="string"){return _261(it);}if(_269=="function"||_269=="undefined"){return _266;}if(typeof it.toJSON=="function"){return _267(it.toJSON(key),_268,key);}if(it instanceof Date){return "\"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z\"".replace(/\{(\w+)(\+)?\}/g,function(t,prop,plus){var num=it["getUTC"+prop]()+(plus?1:0);return num<10?"0"+num:num;});}if(it.valueOf()!==it){return _267(it.valueOf(),_268,key);}var _26a=_265?(_268+_265):"";var sep=_265?" ":"";var _26b=_265?"\n":"";if(it instanceof Array){var itl=it.length,res=[];for(key=0;key<itl;key++){var obj=it[key];val=_267(obj,_26a,key);if(typeof val!="string"){val="null";}res.push(_26b+_26a+val);}return "["+res.join(",")+_26b+_268+"]";}var _26c=[];for(key in it){var _26d;if(it.hasOwnProperty(key)){if(typeof key=="number"){_26d="\""+key+"\"";}else{if(typeof key=="string"){_26d=_261(key);}else{continue;}}val=_267(it[key],_26a,key);if(typeof val!="string"){continue;}_26c.push(_26b+_26a+_26d+":"+sep+val);}}return "{"+_26c.join(",")+_26b+_268+"}";};return _267(_263,"","");}};}});},"dojo/_base/declare":function(){define(["./kernel","../has","./lang"],function(dojo,has,lang){var mix=lang.mixin,op=Object.prototype,opts=op.toString,xtor,_26e=0,_26f="constructor";if(!has("csp-restrictions")){xtor=new Function;}else{xtor=function(){};}function err(msg,cls){throw new Error("declare"+(cls?" "+cls:"")+": "+msg);};function _270(_271,_272){var _273=[],_274=[{cls:0,refs:[]}],_275={},_276=1,l=_271.length,i=0,j,lin,base,top,_277,rec,name,refs;for(;i<l;++i){base=_271[i];if(!base){err("mixin #"+i+" is unknown. Did you use dojo.require to pull it in?",_272);}else{if(opts.call(base)!="[object Function]"){err("mixin #"+i+" is not a callable constructor.",_272);}}lin=base._meta?base._meta.bases:[base];top=0;for(j=lin.length-1;j>=0;--j){_277=lin[j].prototype;if(!_277.hasOwnProperty("declaredClass")){_277.declaredClass="uniqName_"+(_26e++);}name=_277.declaredClass;if(!_275.hasOwnProperty(name)){_275[name]={count:0,refs:[],cls:lin[j]};++_276;}rec=_275[name];if(top&&top!==rec){rec.refs.push(top);++top.count;}top=rec;}++top.count;_274[0].refs.push(top);}while(_274.length){top=_274.pop();_273.push(top.cls);--_276;while(refs=top.refs,refs.length==1){top=refs[0];if(!top||--top.count){top=0;break;}_273.push(top.cls);--_276;}if(top){for(i=0,l=refs.length;i<l;++i){top=refs[i];if(!--top.count){_274.push(top);}}}}if(_276){err("can't build consistent linearization",_272);}base=_271[0];_273[0]=base?base._meta&&base===_273[_273.length-base._meta.bases.length]?base._meta.bases.length:1:0;return _273;};function _278(args,a,f,g){var name,_279,_27a,_27b,meta,base,_27c,opf,pos,_27d=this._inherited=this._inherited||{};if(typeof args==="string"){name=args;args=a;a=f;f=g;}if(typeof args==="function"){_27b=args;args=a;a=f;}else{try{_27b=args.callee;}catch(e){if(e instanceof TypeError){err("strict mode inherited() requires the caller function to be passed before arguments",this.declaredClass);}else{throw e;}}}name=name||_27b.nom;if(!name){err("can't deduce a name to call inherited()",this.declaredClass);}f=g=0;meta=this.constructor._meta;_27a=meta.bases;pos=_27d.p;if(name!=_26f){if(_27d.c!==_27b){pos=0;base=_27a[0];meta=base._meta;if(meta.hidden[name]!==_27b){_279=meta.chains;if(_279&&typeof _279[name]=="string"){err("calling chained method with inherited: "+name,this.declaredClass);}do{meta=base._meta;_27c=base.prototype;if(meta&&(_27c[name]===_27b&&_27c.hasOwnProperty(name)||meta.hidden[name]===_27b)){break;}}while(base=_27a[++pos]);pos=base?pos:-1;}}base=_27a[++pos];if(base){_27c=base.prototype;if(base._meta&&_27c.hasOwnProperty(name)){f=_27c[name];}else{opf=op[name];do{_27c=base.prototype;f=_27c[name];if(f&&(base._meta?_27c.hasOwnProperty(name):f!==opf)){break;}}while(base=_27a[++pos]);}}f=base&&f||op[name];}else{if(_27d.c!==_27b){pos=0;meta=_27a[0]._meta;if(meta&&meta.ctor!==_27b){_279=meta.chains;if(!_279||_279.constructor!=="manual"){err("calling chained constructor with inherited",this.declaredClass);}while(base=_27a[++pos]){meta=base._meta;if(meta&&meta.ctor===_27b){break;}}pos=base?pos:-1;}}while(base=_27a[++pos]){meta=base._meta;f=meta?meta.ctor:base;if(f){break;}}f=base&&f;}_27d.c=f;_27d.p=pos;if(f){return a===true?f:f.apply(this,a||args);}};function _27e(name,args,a){if(typeof name==="string"){if(typeof args==="function"){return this.__inherited(name,args,a,true);}return this.__inherited(name,args,true);}else{if(typeof name==="function"){return this.__inherited(name,args,true);}}return this.__inherited(name,true);};function _27f(args,a1,a2,a3){var f=this.getInherited(args,a1,a2);if(f){return f.apply(this,a3||a2||a1||args);}};var _280=dojo.config.isDebug?_27f:_278;function _281(cls){var _282=this.constructor._meta.bases;for(var i=0,l=_282.length;i<l;++i){if(_282[i]===cls){return true;}}return this instanceof cls;};function _283(_284,_285){for(var name in _285){if(name!=_26f&&_285.hasOwnProperty(name)){_284[name]=_285[name];}}if(has("bug-for-in-skips-shadowed")){for(var _286=lang._extraNames,i=_286.length;i;){name=_286[--i];if(name!=_26f&&_285.hasOwnProperty(name)){_284[name]=_285[name];}}}};function _287(_288,_289){var name,t;for(name in _289){t=_289[name];if((t!==op[name]||!(name in op))&&name!=_26f){if(opts.call(t)=="[object Function]"){t.nom=name;}_288[name]=t;}}if(has("bug-for-in-skips-shadowed")&&_289){for(var _28a=lang._extraNames,i=_28a.length;i;){name=_28a[--i];t=_289[name];if((t!==op[name]||!(name in op))&&name!=_26f){if(opts.call(t)=="[object Function]"){t.nom=name;}_288[name]=t;}}}return _288;};function _28b(_28c){_28d.safeMixin(this.prototype,_28c);return this;};function _28e(_28f,_290){if(!(_28f instanceof Array||typeof _28f==="function")){_290=_28f;_28f=undefined;}_290=_290||{};_28f=_28f||[];return _28d([this].concat(_28f),_290);};function _291(_292,_293){return function(){var a=arguments,args=a,a0=a[0],f,i,m,l=_292.length,_294;if(!(this instanceof a.callee)){return _295(a);}if(_293&&(a0&&a0.preamble||this.preamble)){_294=new Array(_292.length);_294[0]=a;for(i=0;;){a0=a[0];if(a0){f=a0.preamble;if(f){a=f.apply(this,a)||a;}}f=_292[i].prototype;f=f.hasOwnProperty("preamble")&&f.preamble;if(f){a=f.apply(this,a)||a;}if(++i==l){break;}_294[i]=a;}}for(i=l-1;i>=0;--i){f=_292[i];m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,_294?_294[i]:a);}}f=this.postscript;if(f){f.apply(this,args);}};};function _296(ctor,_297){return function(){var a=arguments,t=a,a0=a[0],f;if(!(this instanceof a.callee)){return _295(a);}if(_297){if(a0){f=a0.preamble;if(f){t=f.apply(this,t)||t;}}f=this.preamble;if(f){f.apply(this,t);}}if(ctor){ctor.apply(this,a);}f=this.postscript;if(f){f.apply(this,a);}};};function _298(_299){return function(){var a=arguments,i=0,f,m;if(!(this instanceof a.callee)){return _295(a);}for(;f=_299[i];++i){m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,a);break;}}f=this.postscript;if(f){f.apply(this,a);}};};function _29a(name,_29b,_29c){return function(){var b,m,f,i=0,step=1;if(_29c){i=_29b.length-1;step=-1;}for(;b=_29b[i];i+=step){m=b._meta;f=(m?m.hidden:b.prototype)[name];if(f){f.apply(this,arguments);}}};};function _29d(ctor){xtor.prototype=ctor.prototype;var t=new xtor;xtor.prototype=null;return t;};function _295(args){var ctor=args.callee,t=_29d(ctor);ctor.apply(t,args);return t;};function _28d(_29e,_29f,_2a0){if(typeof _29e!="string"){_2a0=_29f;_29f=_29e;_29e="";}_2a0=_2a0||{};var _2a1,i,t,ctor,name,_2a2,_2a3,_2a4=1,_2a5=_29f;if(opts.call(_29f)=="[object Array]"){_2a2=_270(_29f,_29e);t=_2a2[0];_2a4=_2a2.length-t;_29f=_2a2[_2a4];}else{_2a2=[0];if(_29f){if(opts.call(_29f)=="[object Function]"){t=_29f._meta;_2a2=_2a2.concat(t?t.bases:_29f);}else{err("base class is not a callable constructor.",_29e);}}else{if(_29f!==null){err("unknown base class. Did you use dojo.require to pull it in?",_29e);}}}if(_29f){for(i=_2a4-1;;--i){_2a1=_29d(_29f);if(!i){break;}t=_2a2[i];(t._meta?_283:mix)(_2a1,t.prototype);if(has("csp-restrictions")){ctor=function(){};}else{ctor=new Function;}ctor.superclass=_29f;ctor.prototype=_2a1;_29f=_2a1.constructor=ctor;}}else{_2a1={};}_28d.safeMixin(_2a1,_2a0);t=_2a0.constructor;if(t!==op.constructor){t.nom=_26f;_2a1.constructor=t;}for(i=_2a4-1;i;--i){t=_2a2[i]._meta;if(t&&t.chains){_2a3=mix(_2a3||{},t.chains);}}if(_2a1["-chains-"]){_2a3=mix(_2a3||{},_2a1["-chains-"]);}if(_29f&&_29f.prototype&&_29f.prototype["-chains-"]){_2a3=mix(_2a3||{},_29f.prototype["-chains-"]);}t=!_2a3||!_2a3.hasOwnProperty(_26f);_2a2[0]=ctor=(_2a3&&_2a3.constructor==="manual")?_298(_2a2):(_2a2.length==1?_296(_2a0.constructor,t):_291(_2a2,t));ctor._meta={bases:_2a2,hidden:_2a0,chains:_2a3,parents:_2a5,ctor:_2a0.constructor};ctor.superclass=_29f&&_29f.prototype;ctor.extend=_28b;ctor.createSubclass=_28e;ctor.prototype=_2a1;_2a1.constructor=ctor;_2a1.getInherited=_27e;_2a1.isInstanceOf=_281;_2a1.inherited=_280;_2a1.__inherited=_278;if(_29e){_2a1.declaredClass=_29e;lang.setObject(_29e,ctor);}if(_2a3){for(name in _2a3){if(_2a1[name]&&typeof _2a3[name]=="string"&&name!=_26f){t=_2a1[name]=_29a(name,_2a2,_2a3[name]==="after");t.nom=name;}}}return ctor;};dojo.safeMixin=_28d.safeMixin=_287;dojo.declare=_28d;return _28d;});},"dojo/dom":function(){define(["./sniff","./_base/window","./_base/kernel"],function(has,win,_2a6){if(has("ie")<=7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}}var dom={};if(has("ie")){dom.byId=function(id,doc){if(typeof id!="string"){return id;}var _2a7=doc||win.doc,te=id&&_2a7.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var eles=_2a7.all[id];if(!eles||eles.nodeName){eles=[eles];}var i=0;while((te=eles[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}};}else{dom.byId=function(id,doc){return ((typeof id=="string")?(doc||win.doc).getElementById(id):id)||null;};}var doc=_2a6.global["document"]||null;has.add("dom-contains",!!(doc&&doc.contains));dom.isDescendant=has("dom-contains")?function(node,_2a8){return !!((_2a8=dom.byId(_2a8))&&_2a8.contains(dom.byId(node)));}:function(node,_2a9){try{node=dom.byId(node);_2a9=dom.byId(_2a9);while(node){if(node==_2a9){return true;}node=node.parentNode;}}catch(e){}return false;};has.add("css-user-select",function(_2aa,doc,_2ab){if(!_2ab){return false;}var _2ac=_2ab.style;var _2ad=["Khtml","O","Moz","Webkit"],i=_2ad.length,name="userSelect",_2ae;do{if(typeof _2ac[name]!=="undefined"){return name;}}while(i--&&(name=_2ad[i]+"UserSelect"));return false;});var _2af=has("css-user-select");dom.setSelectable=_2af?function(node,_2b0){dom.byId(node).style[_2af]=_2b0?"":"none";}:function(node,_2b1){node=dom.byId(node);var _2b2=node.getElementsByTagName("*"),i=_2b2.length;if(_2b1){node.removeAttribute("unselectable");while(i--){_2b2[i].removeAttribute("unselectable");}}else{node.setAttribute("unselectable","on");while(i--){_2b2[i].setAttribute("unselectable","on");}}};return dom;});},"dojo/_base/browser":function(){if(require.has){require.has.add("config-selectorEngine","acme");}define(["../ready","./kernel","./connect","./unload","./window","./event","./html","./NodeList","../query","./xhr","./fx"],function(dojo){return dojo;});},"dojo/errors/RequestTimeoutError":function(){define(["./create","./RequestError"],function(_2b3,_2b4){return _2b3("RequestTimeoutError",null,_2b4,{dojoType:"timeout"});});},"dojo/dom-style":function(){define(["./sniff","./dom","./_base/window"],function(has,dom,win){var _2b5,_2b6={};if(has("webkit")){_2b5=function(node){var s;if(node.nodeType==1){var dv=node.ownerDocument.defaultView;s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}}return s||{};};}else{if(has("ie")&&(has("ie")<9||has("quirks"))){_2b5=function(node){return node.nodeType==1&&node.currentStyle?node.currentStyle:{};};}else{_2b5=function(node){if(node.nodeType===1){var dv=node.ownerDocument.defaultView,w=dv.opener?dv:win.global.window;return w.getComputedStyle(node,null);}return {};};}}_2b6.getComputedStyle=_2b5;var _2b7;if(!has("ie")){_2b7=function(_2b8,_2b9){return parseFloat(_2b9)||0;};}else{_2b7=function(_2ba,_2bb){if(!_2bb){return 0;}if(_2bb=="medium"){return 4;}if(_2bb.slice&&_2bb.slice(-2)=="px"){return parseFloat(_2bb);}var s=_2ba.style,rs=_2ba.runtimeStyle,cs=_2ba.currentStyle,_2bc=s.left,_2bd=rs.left;rs.left=cs.left;try{s.left=_2bb;_2bb=s.pixelLeft;}catch(e){_2bb=0;}s.left=_2bc;rs.left=_2bd;return _2bb;};}_2b6.toPixelValue=_2b7;var astr="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(astr);}catch(e){return f?{}:null;}};var _2be=has("ie")<9||(has("ie")<10&&has("quirks"))?function(node){try{return af(node).Opacity/100;}catch(e){return 1;}}:function(node){return _2b5(node).opacity;};var _2bf=has("ie")<9||(has("ie")<10&&has("quirks"))?function(node,_2c0){if(_2c0===""){_2c0=1;}var ov=_2c0*100,_2c1=_2c0===1;if(_2c1){node.style.zoom="";if(af(node)){node.style.filter=node.style.filter.replace(new RegExp("\\s*progid:"+astr+"\\([^\\)]+?\\)","i"),"");}}else{node.style.zoom=1;if(af(node)){af(node,1).Opacity=ov;}else{node.style.filter+=" progid:"+astr+"(Opacity="+ov+")";}af(node,1).Enabled=true;}if(node.tagName.toLowerCase()=="tr"){for(var td=node.firstChild;td;td=td.nextSibling){if(td.tagName.toLowerCase()=="td"){_2bf(td,_2c0);}}}return _2c0;}:function(node,_2c2){return node.style.opacity=_2c2;};var _2c3={left:true,top:true};var _2c4=/margin|padding|width|height|max|min|offset/;function _2c5(node,type,_2c6){type=type.toLowerCase();if(_2c6=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_2c6){case 700:return "bold";case 400:default:return "normal";}}if(!(type in _2c3)){_2c3[type]=_2c4.test(type);}return _2c3[type]?_2b7(node,_2c6):_2c6;};var _2c7={cssFloat:1,styleFloat:1,"float":1};_2b6.get=function getStyle(node,name){var n=dom.byId(node),l=arguments.length,op=(name=="opacity");if(l==2&&op){return _2be(n);}name=_2c7[name]?"cssFloat" in n.style?"cssFloat":"styleFloat":name;var s=_2b6.getComputedStyle(n);return (l==1)?s:_2c5(n,name,s[name]||n.style[name]);};_2b6.set=function setStyle(node,name,_2c8){var n=dom.byId(node),l=arguments.length,op=(name=="opacity");name=_2c7[name]?"cssFloat" in n.style?"cssFloat":"styleFloat":name;if(l==3){return op?_2bf(n,_2c8):n.style[name]=_2c8;}for(var x in name){_2b6.set(node,x,name[x]);}return _2b6.getComputedStyle(n);};return _2b6;});},"dojo/dom-geometry":function(){define(["./sniff","./_base/window","./dom","./dom-style"],function(has,win,dom,_2c9){var geom={};geom.boxModel="content-box";if(has("ie")){geom.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";}geom.getPadExtents=function getPadExtents(node,_2ca){node=dom.byId(node);var s=_2ca||_2c9.getComputedStyle(node),px=_2c9.toPixelValue,l=px(node,s.paddingLeft),t=px(node,s.paddingTop),r=px(node,s.paddingRight),b=px(node,s.paddingBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};var none="none";geom.getBorderExtents=function getBorderExtents(node,_2cb){node=dom.byId(node);var px=_2c9.toPixelValue,s=_2cb||_2c9.getComputedStyle(node),l=s.borderLeftStyle!=none?px(node,s.borderLeftWidth):0,t=s.borderTopStyle!=none?px(node,s.borderTopWidth):0,r=s.borderRightStyle!=none?px(node,s.borderRightWidth):0,b=s.borderBottomStyle!=none?px(node,s.borderBottomWidth):0;return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};geom.getPadBorderExtents=function getPadBorderExtents(node,_2cc){node=dom.byId(node);var s=_2cc||_2c9.getComputedStyle(node),p=geom.getPadExtents(node,s),b=geom.getBorderExtents(node,s);return {l:p.l+b.l,t:p.t+b.t,r:p.r+b.r,b:p.b+b.b,w:p.w+b.w,h:p.h+b.h};};geom.getMarginExtents=function getMarginExtents(node,_2cd){node=dom.byId(node);var s=_2cd||_2c9.getComputedStyle(node),px=_2c9.toPixelValue,l=px(node,s.marginLeft),t=px(node,s.marginTop),r=px(node,s.marginRight),b=px(node,s.marginBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};geom.getMarginBox=function getMarginBox(node,_2ce){node=dom.byId(node);var s=_2ce||_2c9.getComputedStyle(node),me=geom.getMarginExtents(node,s),l=node.offsetLeft-me.l,t=node.offsetTop-me.t,p=node.parentNode,px=_2c9.toPixelValue,pcs;if((has("ie")==8&&!has("quirks"))){if(p){pcs=_2c9.getComputedStyle(p);l-=pcs.borderLeftStyle!=none?px(node,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=none?px(node,pcs.borderTopWidth):0;}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};geom.getContentBox=function getContentBox(node,_2cf){node=dom.byId(node);var s=_2cf||_2c9.getComputedStyle(node),w=node.clientWidth,h,pe=geom.getPadExtents(node,s),be=geom.getBorderExtents(node,s),l=node.offsetLeft+pe.l+be.l,t=node.offsetTop+pe.t+be.t;if(!w){w=node.offsetWidth-be.w;h=node.offsetHeight-be.h;}else{h=node.clientHeight;}if((has("ie")==8&&!has("quirks"))){var p=node.parentNode,px=_2c9.toPixelValue,pcs;if(p){pcs=_2c9.getComputedStyle(p);l-=pcs.borderLeftStyle!=none?px(node,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=none?px(node,pcs.borderTopWidth):0;}}return {l:l,t:t,w:w-pe.w,h:h-pe.h};};function _2d0(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};function _2d1(node){return node.tagName.toLowerCase()=="button"||node.tagName.toLowerCase()=="input"&&(node.getAttribute("type")||"").toLowerCase()=="button";};function _2d2(node){return geom.boxModel=="border-box"||node.tagName.toLowerCase()=="table"||_2d1(node);};geom.setContentSize=function setContentSize(node,box,_2d3){node=dom.byId(node);var w=box.w,h=box.h;if(_2d2(node)){var pb=geom.getPadBorderExtents(node,_2d3);if(w>=0){w+=pb.w;}if(h>=0){h+=pb.h;}}_2d0(node,NaN,NaN,w,h);};var _2d4={l:0,t:0,w:0,h:0};geom.setMarginBox=function setMarginBox(node,box,_2d5){node=dom.byId(node);var s=_2d5||_2c9.getComputedStyle(node),w=box.w,h=box.h,pb=_2d2(node)?_2d4:geom.getPadBorderExtents(node,s),mb=geom.getMarginExtents(node,s);if(has("webkit")){if(_2d1(node)){var ns=node.style;if(w>=0&&!ns.width){ns.width="4px";}if(h>=0&&!ns.height){ns.height="4px";}}}if(w>=0){w=Math.max(w-pb.w-mb.w,0);}if(h>=0){h=Math.max(h-pb.h-mb.h,0);}_2d0(node,box.l,box.t,w,h);};geom.isBodyLtr=function isBodyLtr(doc){doc=doc||win.doc;return (win.body(doc).dir||doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};geom.docScroll=function docScroll(doc){doc=doc||win.doc;var node=win.doc.parentWindow||win.doc.defaultView;return "pageXOffset" in node?{x:node.pageXOffset,y:node.pageYOffset}:(node=has("quirks")?win.body(doc):doc.documentElement)&&{x:geom.fixIeBiDiScrollLeft(node.scrollLeft||0,doc),y:node.scrollTop||0};};geom.getIeDocumentElementOffset=function(doc){return {x:0,y:0};};geom.fixIeBiDiScrollLeft=function fixIeBiDiScrollLeft(_2d6,doc){doc=doc||win.doc;var ie=has("ie");if(ie&&!geom.isBodyLtr(doc)){var qk=has("quirks"),de=qk?win.body(doc):doc.documentElement,pwin=win.global;if(ie==6&&!qk&&pwin.frameElement&&de.scrollHeight>de.clientHeight){_2d6+=de.clientLeft;}return (ie<8||qk)?(_2d6+de.clientWidth-de.scrollWidth):-_2d6;}return _2d6;};geom.position=function(node,_2d7){node=dom.byId(node);var db=win.body(node.ownerDocument),ret=node.getBoundingClientRect();ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(has("ie")<9){ret.x-=(has("quirks")?db.clientLeft+db.offsetLeft:0);ret.y-=(has("quirks")?db.clientTop+db.offsetTop:0);}if(_2d7){var _2d8=geom.docScroll(node.ownerDocument);ret.x+=_2d8.x;ret.y+=_2d8.y;}return ret;};geom.getMarginSize=function getMarginSize(node,_2d9){node=dom.byId(node);var me=geom.getMarginExtents(node,_2d9||_2c9.getComputedStyle(node));var size=node.getBoundingClientRect();return {w:(size.right-size.left)+me.w,h:(size.bottom-size.top)+me.h};};geom.normalizeEvent=function(_2da){if(!("layerX" in _2da)){_2da.layerX=_2da.offsetX;_2da.layerY=_2da.offsetY;}if(!("pageX" in _2da)){var se=_2da.target;var doc=(se&&se.ownerDocument)||document;var _2db=has("quirks")?doc.body:doc.documentElement;_2da.pageX=_2da.clientX+geom.fixIeBiDiScrollLeft(_2db.scrollLeft||0,doc);_2da.pageY=_2da.clientY+(_2db.scrollTop||0);}};return geom;});},"dojo/global":function(){define(function(){if(typeof global!=="undefined"&&typeof global!=="function"){return global;}else{if(typeof window!=="undefined"){return window;}else{if(typeof self!=="undefined"){return self;}}}return this;});},"dojo/dom-prop":function(){define(["exports","./_base/kernel","./sniff","./_base/lang","./dom","./dom-style","./dom-construct","./_base/connect"],function(_2dc,dojo,has,lang,dom,_2dd,ctr,conn){var _2de={},_2df=1,_2e0=dojo._scopeName+"attrid";has.add("dom-textContent",function(_2e1,doc,_2e2){return "textContent" in _2e2;});_2dc.names={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",textcontent:"textContent",valuetype:"valueType"};function _2e3(node){var text="",ch=node.childNodes;for(var i=0,n;n=ch[i];i++){if(n.nodeType!=8){if(n.nodeType==1){text+=_2e3(n);}else{text+=n.nodeValue;}}}return text;};_2dc.get=function getProp(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_2e4=_2dc.names[lc]||name;if(_2e4=="textContent"&&!has("dom-textContent")){return _2e3(node);}return node[_2e4];};_2dc.set=function setProp(node,name,_2e5){node=dom.byId(node);var l=arguments.length;if(l==2&&typeof name!="string"){for(var x in name){_2dc.set(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_2e6=_2dc.names[lc]||name;if(_2e6=="style"&&typeof _2e5!="string"){_2dd.set(node,_2e5);return node;}if(_2e6=="innerHTML"){if(has("ie")&&node.tagName.toLowerCase() in {col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1}){ctr.empty(node);node.appendChild(ctr.toDom(_2e5,node.ownerDocument));}else{node[_2e6]=_2e5;}return node;}if(_2e6=="textContent"&&!has("dom-textContent")){ctr.empty(node);node.appendChild(node.ownerDocument.createTextNode(_2e5));return node;}if(lang.isFunction(_2e5)){var _2e7=node[_2e0];if(!_2e7){_2e7=_2df++;node[_2e0]=_2e7;}if(!_2de[_2e7]){_2de[_2e7]={};}var h=_2de[_2e7][_2e6];if(h){conn.disconnect(h);}else{try{delete node[_2e6];}catch(e){}}if(_2e5){_2de[_2e7][_2e6]=conn.connect(node,_2e6,_2e5);}else{node[_2e6]=null;}return node;}node[_2e6]=_2e5;return node;};});},"dojo/when":function(){define(["./Deferred","./promise/Promise"],function(_2e8,_2e9){"use strict";return function when(_2ea,_2eb,_2ec,_2ed){var _2ee=_2ea&&typeof _2ea.then==="function";var _2ef=_2ee&&_2ea instanceof _2e9;if(!_2ee){if(arguments.length>1){return _2eb?_2eb(_2ea):_2ea;}else{return new _2e8().resolve(_2ea);}}else{if(!_2ef){var _2f0=new _2e8(_2ea.cancel);_2ea.then(_2f0.resolve,_2f0.reject,_2f0.progress);_2ea=_2f0.promise;}}if(_2eb||_2ec||_2ed){return _2ea.then(_2eb,_2ec,_2ed);}return _2ea;};});},"dojo/dom-attr":function(){define(["exports","./sniff","./_base/lang","./dom","./dom-style","./dom-prop"],function(_2f1,has,lang,dom,_2f2,prop){var _2f3={innerHTML:1,textContent:1,className:1,htmlFor:has("ie"),value:1},_2f4={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};function _2f5(node,name){var attr=node.getAttributeNode&&node.getAttributeNode(name);return !!attr&&attr.specified;};_2f1.has=function hasAttr(node,name){var lc=name.toLowerCase();return _2f3[prop.names[lc]||name]||_2f5(dom.byId(node),_2f4[lc]||name);};_2f1.get=function getAttr(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_2f6=prop.names[lc]||name,_2f7=_2f3[_2f6],_2f8=node[_2f6];if(_2f7&&typeof _2f8!="undefined"){return _2f8;}if(_2f6=="textContent"){return prop.get(node,_2f6);}if(_2f6!="href"&&(typeof _2f8=="boolean"||lang.isFunction(_2f8))){return _2f8;}var _2f9=_2f4[lc]||name;return _2f5(node,_2f9)?node.getAttribute(_2f9):null;};_2f1.set=function setAttr(node,name,_2fa){node=dom.byId(node);if(arguments.length==2){for(var x in name){_2f1.set(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_2fb=prop.names[lc]||name,_2fc=_2f3[_2fb];if(_2fb=="style"&&typeof _2fa!="string"){_2f2.set(node,_2fa);return node;}if(_2fc||typeof _2fa=="boolean"||lang.isFunction(_2fa)){return prop.set(node,name,_2fa);}node.setAttribute(_2f4[lc]||name,_2fa);return node;};_2f1.remove=function removeAttr(node,name){dom.byId(node).removeAttribute(_2f4[name.toLowerCase()]||name);};_2f1.getNodeProp=function getNodeProp(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_2fd=prop.names[lc]||name;if((_2fd in node)&&_2fd!="href"){return node[_2fd];}var _2fe=_2f4[lc]||name;return _2f5(node,_2fe)?node.getAttribute(_2fe):null;};});},"dojo/dom-construct":function(){define(["exports","./_base/kernel","./sniff","./_base/window","./dom","./dom-attr"],function(_2ff,dojo,has,win,dom,attr){var _300={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_301=/<\s*([\w\:]+)/,_302={},_303=0,_304="__"+dojo._scopeName+"ToDomId";for(var _305 in _300){if(_300.hasOwnProperty(_305)){var tw=_300[_305];tw.pre=_305=="option"?"<select multiple=\"multiple\">":"<"+tw.join("><")+">";tw.post="</"+tw.reverse().join("></")+">";}}var _306;if(has("ie")<=8){_306=function(doc){doc.__dojo_html5_tested="yes";var div=_307("div",{innerHTML:"<nav>a</nav>",style:{visibility:"hidden"}},doc.body);if(div.childNodes.length!==1){("abbr article aside audio canvas details figcaption figure footer header "+"hgroup mark meter nav output progress section summary time video").replace(/\b\w+\b/g,function(n){doc.createElement(n);});}_308(div);};}function _309(node,ref){var _30a=ref.parentNode;if(_30a){_30a.insertBefore(node,ref);}};function _30b(node,ref){var _30c=ref.parentNode;if(_30c){if(_30c.lastChild==ref){_30c.appendChild(node);}else{_30c.insertBefore(node,ref.nextSibling);}}};_2ff.toDom=function toDom(frag,doc){doc=doc||win.doc;var _30d=doc[_304];if(!_30d){doc[_304]=_30d=++_303+"";_302[_30d]=doc.createElement("div");}if(has("ie")<=8){if(!doc.__dojo_html5_tested&&doc.body){_306(doc);}}frag+="";var _30e=frag.match(_301),tag=_30e?_30e[1].toLowerCase():"",_30f=_302[_30d],wrap,i,fc,df;if(_30e&&_300[tag]){wrap=_300[tag];_30f.innerHTML=wrap.pre+frag+wrap.post;for(i=wrap.length;i;--i){_30f=_30f.firstChild;}}else{_30f.innerHTML=frag;}if(_30f.childNodes.length==1){return _30f.removeChild(_30f.firstChild);}df=doc.createDocumentFragment();while((fc=_30f.firstChild)){df.appendChild(fc);}return df;};_2ff.place=function place(node,_310,_311){_310=dom.byId(_310);if(typeof node=="string"){node=/^\s*</.test(node)?_2ff.toDom(node,_310.ownerDocument):dom.byId(node);}if(typeof _311=="number"){var cn=_310.childNodes;if(!cn.length||cn.length<=_311){_310.appendChild(node);}else{_309(node,cn[_311<0?0:_311]);}}else{switch(_311){case "before":_309(node,_310);break;case "after":_30b(node,_310);break;case "replace":_310.parentNode.replaceChild(node,_310);break;case "only":_2ff.empty(_310);_310.appendChild(node);break;case "first":if(_310.firstChild){_309(node,_310.firstChild);break;}default:_310.appendChild(node);}}return node;};var _307=_2ff.create=function _307(tag,_312,_313,pos){var doc=win.doc;if(_313){_313=dom.byId(_313);doc=_313.ownerDocument;}if(typeof tag=="string"){tag=doc.createElement(tag);}if(_312){attr.set(tag,_312);}if(_313){_2ff.place(tag,_313,pos);}return tag;};function _314(node){if("innerHTML" in node){try{node.innerHTML="";return;}catch(e){}}for(var c;c=node.lastChild;){node.removeChild(c);}};_2ff.empty=function empty(node){_314(dom.byId(node));};function _315(node,_316){if(node.firstChild){_314(node);}if(_316){has("ie")&&_316.canHaveChildren&&"removeNode" in node?node.removeNode(false):_316.removeChild(node);}};var _308=_2ff.destroy=function _308(node){node=dom.byId(node);if(!node){return;}_315(node,node.parentNode);};});},"dojo/request/xhr":function(){define(["../errors/RequestError","./watch","./handlers","./util","../has"],function(_317,_318,_319,util,has){has.add("native-xhr",function(){return typeof XMLHttpRequest!=="undefined";});has.add("dojo-force-activex-xhr",function(){return has("activex")&&window.location.protocol==="file:";});has.add("native-xhr2",function(){if(!has("native-xhr")||has("dojo-force-activex-xhr")){return;}var x=new XMLHttpRequest();return typeof x["addEventListener"]!=="undefined"&&(typeof opera==="undefined"||typeof x["upload"]!=="undefined");});has.add("native-formdata",function(){return typeof FormData!=="undefined";});has.add("native-response-type",function(){return has("native-xhr")&&typeof new XMLHttpRequest().responseType!=="undefined";});has.add("native-xhr2-blob",function(){if(!has("native-response-type")){return;}var x=new XMLHttpRequest();x.open("GET","https://dojotoolkit.org/",true);x.responseType="blob";var _31a=x.responseType;x.abort();return _31a==="blob";});var _31b={"blob":has("native-xhr2-blob")?"blob":"arraybuffer","document":"document","arraybuffer":"arraybuffer"};function _31c(_31d,_31e){var _31f=_31d.xhr;_31d.status=_31d.xhr.status;try{_31d.text=_31f.responseText;}catch(e){}if(_31d.options.handleAs==="xml"){_31d.data=_31f.responseXML;}var _320;if(_31e){this.reject(_31e);}else{try{_319(_31d);}catch(e){_320=e;}if(util.checkStatus(_31f.status)){if(!_320){this.resolve(_31d);}else{this.reject(_320);}}else{if(!_320){_31e=new _317("Unable to load "+_31d.url+" status: "+_31f.status,_31d);this.reject(_31e);}else{_31e=new _317("Unable to load "+_31d.url+" status: "+_31f.status+" and an error in handleAs: transformation of response",_31d);this.reject(_31e);}}}};var _321,_322,_323,_324;if(has("native-xhr2")){_321=function(_325){return !this.isFulfilled();};_324=function(dfd,_326){_326.xhr.abort();};_323=function(_327,dfd,_328,_329){function _32a(evt){dfd.handleResponse(_328);};function _32b(evt){var _32c=evt.target;var _32d=new _317("Unable to load "+_328.url+" status: "+_32c.status,_328);dfd.handleResponse(_328,_32d);};function _32e(_32f,evt){_328.transferType=_32f;if(evt.lengthComputable){_328.loaded=evt.loaded;_328.total=evt.total;dfd.progress(_328);}else{if(_328.xhr.readyState===3){_328.loaded=("loaded" in evt)?evt.loaded:evt.position;dfd.progress(_328);}}};function _330(evt){return _32e("download",evt);};function _331(evt){return _32e("upload",evt);};_327.addEventListener("load",_32a,false);_327.addEventListener("error",_32b,false);_327.addEventListener("progress",_330,false);if(_329&&_327.upload){_327.upload.addEventListener("progress",_331,false);}return function(){_327.removeEventListener("load",_32a,false);_327.removeEventListener("error",_32b,false);_327.removeEventListener("progress",_330,false);_327.upload.removeEventListener("progress",_331,false);_327=null;};};}else{_321=function(_332){return _332.xhr.readyState;};_322=function(_333){return 4===_333.xhr.readyState;};_324=function(dfd,_334){var xhr=_334.xhr;var _335=typeof xhr.abort;if(_335==="function"||_335==="object"||_335==="unknown"){xhr.abort();}};}function _336(_337){return this.xhr.getResponseHeader(_337);};var _338,_339={data:null,query:null,sync:false,method:"GET"};function xhr(url,_33a,_33b){var _33c=has("native-formdata")&&_33a&&_33a.data&&_33a.data instanceof FormData;var _33d=util.parseArgs(url,util.deepCreate(_339,_33a),_33c);url=_33d.url;_33a=_33d.options;var _33e=!_33a.data&&_33a.method!=="POST"&&_33a.method!=="PUT";if(has("ie")<=10){url=url.split("#")[0];}var _33f,last=function(){_33f&&_33f();};var dfd=util.deferred(_33d,_324,_321,_322,_31c,last);var _340=_33d.xhr=xhr._create();if(!_340){dfd.cancel(new _317("XHR was not created"));return _33b?dfd:dfd.promise;}_33d.getHeader=_336;if(_323){_33f=_323(_340,dfd,_33d,_33a.uploadProgress);}var data=typeof (_33a.data)==="undefined"?null:_33a.data,_341=!_33a.sync,_342=_33a.method;try{_340.open(_342,url,_341,_33a.user||_338,_33a.password||_338);if(_33a.withCredentials){_340.withCredentials=_33a.withCredentials;}if(has("native-response-type")&&_33a.handleAs in _31b){_340.responseType=_31b[_33a.handleAs];}var _343=_33a.headers,_344=(_33c||_33e)?false:"application/x-www-form-urlencoded";if(_343){for(var hdr in _343){if(hdr.toLowerCase()==="content-type"){_344=_343[hdr];}else{if(_343[hdr]){_340.setRequestHeader(hdr,_343[hdr]);}}}}if(_344&&_344!==false){_340.setRequestHeader("Content-Type",_344);}if(!_343||!("X-Requested-With" in _343)){_340.setRequestHeader("X-Requested-With","XMLHttpRequest");}if(util.notify){util.notify.emit("send",_33d,dfd.promise.cancel);}_340.send(data);}catch(e){dfd.reject(e);}_318(dfd);_340=null;return _33b?dfd:dfd.promise;};xhr._create=function(){throw new Error("XMLHTTP not available");};if(has("native-xhr")&&!has("dojo-force-activex-xhr")){xhr._create=function(){return new XMLHttpRequest();};}else{if(has("activex")){try{new ActiveXObject("Msxml2.XMLHTTP");xhr._create=function(){return new ActiveXObject("Msxml2.XMLHTTP");};}catch(e){try{new ActiveXObject("Microsoft.XMLHTTP");xhr._create=function(){return new ActiveXObject("Microsoft.XMLHTTP");};}catch(e){}}}}util.addCommonMethods(xhr);return xhr;});},"dojo/keys":function(){define(["./_base/kernel","./sniff"],function(dojo,has){return dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:has("webkit")?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,UP_DPAD:175,DOWN_DPAD:176,LEFT_DPAD:177,RIGHT_DPAD:178,copyKey:has("mac")&&!has("air")?(has("safari")?91:224):17};});},"dojo/domReady":function(){define(["./global","./has"],function(_345,has){var doc=document,_346={"loaded":1,"complete":1},_347=typeof doc.readyState!="string",_348=!!_346[doc.readyState],_349=[],_34a;function _34b(_34c){_349.push(_34c);if(_348){_34d();}};_34b.load=function(id,req,load){_34b(load);};_34b._Q=_349;_34b._onQEmpty=function(){};if(_347){doc.readyState="loading";}function _34d(){if(_34a){return;}_34a=true;while(_349.length){try{(_349.shift())(doc);}catch(err){console.error(err,"in domReady callback",err.stack);}}_34a=false;_34b._onQEmpty();};if(!_348){var _34e=[],_34f=function(evt){evt=evt||_345.event;if(_348||(evt.type=="readystatechange"&&!_346[doc.readyState])){return;}if(_347){doc.readyState="complete";}_348=1;_34d();},on=function(node,_350){node.addEventListener(_350,_34f,false);_349.push(function(){node.removeEventListener(_350,_34f,false);});};if(!has("dom-addeventlistener")){on=function(node,_351){_351="on"+_351;node.attachEvent(_351,_34f);_349.push(function(){node.detachEvent(_351,_34f);});};var div=doc.createElement("div");try{if(div.doScroll&&_345.frameElement===null){_34e.push(function(){try{div.doScroll("left");return 1;}catch(e){}});}}catch(e){}}on(doc,"DOMContentLoaded");on(_345,"load");if("onreadystatechange" in doc){on(doc,"readystatechange");}else{if(!_347){_34e.push(function(){return _346[doc.readyState];});}}if(_34e.length){var _352=function(){if(_348){return;}var i=_34e.length;while(i--){if(_34e[i]()){_34f("poller");return;}}setTimeout(_352,30);};_352();}}return _34b;});},"dojo/_base/lang":function(){define(["./kernel","../has","../sniff"],function(dojo,has){has.add("bug-for-in-skips-shadowed",function(){for(var i in {toString:1}){return 0;}return 1;});var _353=has("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],_354=_353.length,_355=function(_356,_357,_358){if(!_358){if(_356[0]&&dojo.scopeMap[_356[0]]){_358=dojo.scopeMap[_356.shift()][1];}else{_358=dojo.global;}}try{for(var i=0;i<_356.length;i++){var p=_356[i];if(!(p in _358)){if(_357){_358[p]={};}else{return;}}_358=_358[p];}return _358;}catch(e){}},opts=Object.prototype.toString,_359=function(obj,_35a,_35b){return (_35b||[]).concat(Array.prototype.slice.call(obj,_35a||0));},_35c=/\{([^\}]+)\}/g;var lang={_extraNames:_353,_mixin:function(dest,_35d,_35e){var name,s,i,_35f={};for(name in _35d){s=_35d[name];if(!(name in dest)||(dest[name]!==s&&(!(name in _35f)||_35f[name]!==s))){dest[name]=_35e?_35e(s):s;}}if(has("bug-for-in-skips-shadowed")){if(_35d){for(i=0;i<_354;++i){name=_353[i];s=_35d[name];if(!(name in dest)||(dest[name]!==s&&(!(name in _35f)||_35f[name]!==s))){dest[name]=_35e?_35e(s):s;}}}}return dest;},mixin:function(dest,_360){if(!dest){dest={};}for(var i=1,l=arguments.length;i<l;i++){lang._mixin(dest,arguments[i]);}return dest;},setObject:function(name,_361,_362){var _363=name.split("."),p=_363.pop(),obj=_355(_363,true,_362);return obj&&p?(obj[p]=_361):undefined;},getObject:function(name,_364,_365){return !name?_365:_355(name.split("."),_364,_365);},exists:function(name,obj){return lang.getObject(name,false,obj)!==undefined;},isString:function(it){return (typeof it=="string"||it instanceof String);},isArray:Array.isArray||function(it){return opts.call(it)=="[object Array]";},isFunction:function(it){return opts.call(it)==="[object Function]";},isObject:function(it){return it!==undefined&&(it===null||typeof it=="object"||lang.isArray(it)||lang.isFunction(it));},isArrayLike:function(it){return !!it&&!lang.isString(it)&&!lang.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(lang.isArray(it)||isFinite(it.length));},isAlien:function(it){return it&&!lang.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));},extend:function(ctor,_366){for(var i=1,l=arguments.length;i<l;i++){lang._mixin(ctor.prototype,arguments[i]);}return ctor;},_hitchArgs:function(_367,_368){var pre=lang._toArray(arguments,2);var _369=lang.isString(_368);return function(){var args=lang._toArray(arguments);var f=_369?(_367||dojo.global)[_368]:_368;return f&&f.apply(_367||this,pre.concat(args));};},hitch:function(_36a,_36b){if(arguments.length>2){return lang._hitchArgs.apply(dojo,arguments);}if(!_36b){_36b=_36a;_36a=null;}if(lang.isString(_36b)){_36a=_36a||dojo.global;if(!_36a[_36b]){throw (["lang.hitch: scope[\"",_36b,"\"] is null (scope=\"",_36a,"\")"].join(""));}return function(){return _36a[_36b].apply(_36a,arguments||[]);};}return !_36a?_36b:function(){return _36b.apply(_36a,arguments||[]);};},delegate:(function(){function TMP(){};return function(obj,_36c){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_36c){lang._mixin(tmp,_36c);}return tmp;};})(),_toArray:has("ie")?(function(){function slow(obj,_36d,_36e){var arr=_36e||[];for(var x=_36d||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};return function(obj){return ((obj.item)?slow:_359).apply(this,arguments);};})():_359,partial:function(_36f){var arr=[null];return lang.hitch.apply(dojo,arr.concat(lang._toArray(arguments)));},clone:function(src){if(!src||typeof src!="object"||lang.isFunction(src)){return src;}if(src.nodeType&&"cloneNode" in src){return src.cloneNode(true);}if(src instanceof Date){return new Date(src.getTime());}if(src instanceof RegExp){return new RegExp(src);}var r,i,l;if(lang.isArray(src)){r=[];for(i=0,l=src.length;i<l;++i){if(i in src){r[i]=lang.clone(src[i]);}}}else{r=src.constructor?new src.constructor():{};}return lang._mixin(r,src,lang.clone);},trim:String.prototype.trim?function(str){return str.trim();}:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");},replace:function(tmpl,map,_370){return tmpl.replace(_370||_35c,lang.isFunction(map)?map:function(_371,k){return lang.getObject(k,false,map);});}};1&&lang.mixin(dojo,lang);return lang;});},"dojo/request/util":function(){define(["exports","../errors/RequestError","../errors/CancelError","../Deferred","../io-query","../_base/array","../_base/lang","../promise/Promise","../has"],function(_372,_373,_374,_375,_376,_377,lang,_378,has){_372.deepCopy=function(_379,_37a){for(var name in _37a){var tval=_379[name],sval=_37a[name];if(tval!==sval){if(sval&&typeof sval==="object"&&!(has("native-formdata")&&sval instanceof FormData)){if(Object.prototype.toString.call(sval)==="[object Date]"){_379[name]=new Date(sval);}else{if(lang.isArray(sval)){_379[name]=_372.deepCopyArray(sval);}else{if(tval&&typeof tval==="object"){_372.deepCopy(tval,sval);}else{_379[name]=_372.deepCopy({},sval);}}}}else{_379[name]=sval;}}}return _379;};_372.deepCopyArray=function(_37b){var _37c=[];_37b.forEach(function(_37d){if(typeof _37d==="object"){_37c.push(_372.deepCopy({},_37d));}else{_37c.push(_37d);}});return _37c;};_372.deepCreate=function deepCreate(_37e,_37f){_37f=_37f||{};var _380=lang.delegate(_37e),name,_381;for(name in _37e){_381=_37e[name];if(_381&&typeof _381==="object"){_380[name]=_372.deepCreate(_381,_37f[name]);}}return _372.deepCopy(_380,_37f);};var _382=Object.freeze||function(obj){return obj;};function _383(_384){return _382(_384);};function _385(_386){return _386.data!==undefined?_386.data:_386.text;};_372.deferred=function deferred(_387,_388,_389,_38a,_38b,last){var def=new _375(function(_38c){_388&&_388(def,_387);if(!_38c||!(_38c instanceof _373)&&!(_38c instanceof _374)){return new _374("Request canceled",_387);}return _38c;});def.response=_387;def.isValid=_389;def.isReady=_38a;def.handleResponse=_38b;function _38d(_38e){_38e.response=_387;throw _38e;};var _38f=def.then(_383).otherwise(_38d);if(_372.notify){_38f.then(lang.hitch(_372.notify,"emit","load"),lang.hitch(_372.notify,"emit","error"));}var _390=_38f.then(_385);var _391=new _378();for(var prop in _390){if(_390.hasOwnProperty(prop)){_391[prop]=_390[prop];}}_391.response=_38f;_382(_391);if(last){def.then(function(_392){last.call(def,_392);},function(_393){last.call(def,_387,_393);});}def.promise=_391;def.then=_391.then;return def;};_372.addCommonMethods=function addCommonMethods(_394,_395){_377.forEach(_395||["GET","POST","PUT","DELETE"],function(_396){_394[(_396==="DELETE"?"DEL":_396).toLowerCase()]=function(url,_397){_397=lang.delegate(_397||{});_397.method=_396;return _394(url,_397);};});};_372.parseArgs=function parseArgs(url,_398,_399){var data=_398.data,_39a=_398.query;if(data&&!_399){if(typeof data==="object"&&(!(has("native-xhr2"))||!(data instanceof ArrayBuffer||data instanceof Blob))){_398.data=_376.objectToQuery(data);}}if(_39a){if(typeof _39a==="object"){_39a=_376.objectToQuery(_39a);}if(_398.preventCache){_39a+=(_39a?"&":"")+"request.preventCache="+(+(new Date));}}else{if(_398.preventCache){_39a="request.preventCache="+(+(new Date));}}if(url&&_39a){url+=(~url.indexOf("?")?"&":"?")+_39a;}return {url:url,options:_398,getHeader:function(_39b){return null;}};};_372.checkStatus=function(stat){stat=stat||0;return (stat>=200&&stat<300)||stat===304||stat===1223||!stat;};});},"dojo/Evented":function(){define(["./aspect","./on"],function(_39c,on){"use strict";var _39d=_39c.after;function _39e(){};_39e.prototype={on:function(type,_39f){return on.parse(this,type,_39f,function(_3a0,type){return _39d(_3a0,"on"+type,_39f,true);});},emit:function(type,_3a1){var args=[this];args.push.apply(args,arguments);return on.emit.apply(on,args);}};return _39e;});},"dojo/mouse":function(){define(["./_base/kernel","./on","./has","./dom","./_base/window"],function(dojo,on,has,dom,win){has.add("dom-quirks",win.doc&&win.doc.compatMode=="BackCompat");has.add("events-mouseenter",win.doc&&"onmouseenter" in win.doc.createElement("div"));has.add("events-mousewheel",win.doc&&"onmousewheel" in win.doc);var _3a2;if((has("dom-quirks")&&has("ie"))||!has("dom-addeventlistener")){_3a2={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_3a3){return e.button&_3a3;},isLeft:function(e){return e.button&1;},isMiddle:function(e){return e.button&4;},isRight:function(e){return e.button&2;}};}else{_3a2={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_3a4){return e.button==_3a4;},isLeft:function(e){return e.button==0;},isMiddle:function(e){return e.button==1;},isRight:function(e){return e.button==2;}};}dojo.mouseButtons=_3a2;function _3a5(type,_3a6){var _3a7=function(node,_3a8){return on(node,type,function(evt){if(_3a6){return _3a6(evt,_3a8);}if(!dom.isDescendant(evt.relatedTarget,node)){return _3a8.call(this,evt);}});};_3a7.bubble=function(_3a9){return _3a5(type,function(evt,_3aa){var _3ab=_3a9(evt.target);var _3ac=evt.relatedTarget;if(_3ab&&(_3ab!=(_3ac&&_3ac.nodeType==1&&_3a9(_3ac)))){return _3aa.call(_3ab,evt);}});};return _3a7;};var _3ad;if(has("events-mousewheel")){_3ad="mousewheel";}else{_3ad=function(node,_3ae){return on(node,"DOMMouseScroll",function(evt){evt.wheelDelta=-evt.detail;_3ae.call(this,evt);});};}return {_eventHandler:_3a5,enter:_3a5("mouseover"),leave:_3a5("mouseout"),wheel:_3ad,isLeft:_3a2.isLeft,isMiddle:_3a2.isMiddle,isRight:_3a2.isRight};});},"dojo/topic":function(){define(["./Evented"],function(_3af){var hub=new _3af;return {publish:function(_3b0,_3b1){return hub.emit.apply(hub,arguments);},subscribe:function(_3b2,_3b3){return hub.on.apply(hub,arguments);}};});},"dojo/_base/xhr":function(){define(["./kernel","./sniff","require","../io-query","../dom","../dom-form","./Deferred","./config","./json","./lang","./array","../on","../aspect","../request/watch","../request/xhr","../request/util"],function(dojo,has,_3b4,ioq,dom,_3b5,_3b6,_3b7,json,lang,_3b8,on,_3b9,_3ba,_3bb,util){dojo._xhrObj=_3bb._create;var cfg=dojo.config;dojo.objectToQuery=ioq.objectToQuery;dojo.queryToObject=ioq.queryToObject;dojo.fieldToObject=_3b5.fieldToObject;dojo.formToObject=_3b5.toObject;dojo.formToQuery=_3b5.toQuery;dojo.formToJson=_3b5.toJson;dojo._blockAsync=false;var _3bc=dojo._contentHandlers=dojo.contentHandlers={"text":function(xhr){return xhr.responseText;},"json":function(xhr){return json.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){if(!_3b7.useCommentedJson){console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");}var _3bd=xhr.responseText;var _3be=_3bd.indexOf("/*");var _3bf=_3bd.lastIndexOf("*/");if(_3be==-1||_3bf==-1){throw new Error("JSON was not comment filtered");}return json.fromJson(_3bd.substring(_3be+2,_3bf));},"javascript":function(xhr){return dojo.eval(xhr.responseText);},"xml":function(xhr){var _3c0=xhr.responseXML;if(_3c0&&has("dom-qsa2.1")&&!_3c0.querySelectorAll&&has("dom-parser")){_3c0=new DOMParser().parseFromString(xhr.responseText,"application/xml");}if(has("ie")){if((!_3c0||!_3c0.documentElement)){var ms=function(n){return "MSXML"+n+".DOMDocument";};var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];_3b8.some(dp,function(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(xhr.responseText);_3c0=dom;}catch(e){return false;}return true;});}}return _3c0;},"json-comment-optional":function(xhr){if(xhr.responseText&&/^[^{\[]*\/\*/.test(xhr.responseText)){return _3bc["json-comment-filtered"](xhr);}else{return _3bc["json"](xhr);}}};dojo._ioSetArgs=function(args,_3c1,_3c2,_3c3){var _3c4={args:args,url:args.url};var _3c5=null;if(args.form){var form=dom.byId(args.form);var _3c6=form.getAttributeNode("action");_3c4.url=_3c4.url||(_3c6?_3c6.value:(dojo.doc?dojo.doc.URL:null));_3c5=_3b5.toObject(form);}var _3c7={};if(_3c5){lang.mixin(_3c7,_3c5);}if(args.content){lang.mixin(_3c7,args.content);}if(args.preventCache){_3c7["dojo.preventCache"]=new Date().valueOf();}_3c4.query=ioq.objectToQuery(_3c7);_3c4.handleAs=args.handleAs||"text";var d=new _3b6(function(dfd){dfd.canceled=true;_3c1&&_3c1(dfd);var err=dfd.ioArgs.error;if(!err){err=new Error("request cancelled");err.dojoType="cancel";dfd.ioArgs.error=err;}return err;});d.addCallback(_3c2);var ld=args.load;if(ld&&lang.isFunction(ld)){d.addCallback(function(_3c8){return ld.call(args,_3c8,_3c4);});}var err=args.error;if(err&&lang.isFunction(err)){d.addErrback(function(_3c9){return err.call(args,_3c9,_3c4);});}var _3ca=args.handle;if(_3ca&&lang.isFunction(_3ca)){d.addBoth(function(_3cb){return _3ca.call(args,_3cb,_3c4);});}d.addErrback(function(_3cc){return _3c3(_3cc,d);});if(cfg.ioPublish&&dojo.publish&&_3c4.args.ioPublish!==false){d.addCallbacks(function(res){dojo.publish("/dojo/io/load",[d,res]);return res;},function(res){dojo.publish("/dojo/io/error",[d,res]);return res;});d.addBoth(function(res){dojo.publish("/dojo/io/done",[d,res]);return res;});}d.ioArgs=_3c4;return d;};var _3cd=function(dfd){var ret=_3bc[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);return ret===undefined?null:ret;};var _3ce=function(_3cf,dfd){if(!dfd.ioArgs.args.failOk){console.error(_3cf);}return _3cf;};var _3d0=function(dfd){if(_3d1<=0){_3d1=0;if(cfg.ioPublish&&dojo.publish&&(!dfd||dfd&&dfd.ioArgs.args.ioPublish!==false)){dojo.publish("/dojo/io/stop");}}};var _3d1=0;_3b9.after(_3ba,"_onAction",function(){_3d1-=1;});_3b9.after(_3ba,"_onInFlight",_3d0);dojo._ioCancelAll=_3ba.cancelAll;dojo._ioNotifyStart=function(dfd){if(cfg.ioPublish&&dojo.publish&&dfd.ioArgs.args.ioPublish!==false){if(!_3d1){dojo.publish("/dojo/io/start");}_3d1+=1;dojo.publish("/dojo/io/send",[dfd]);}};dojo._ioWatch=function(dfd,_3d2,_3d3,_3d4){var args=dfd.ioArgs.options=dfd.ioArgs.args;lang.mixin(dfd,{response:dfd.ioArgs,isValid:function(_3d5){return _3d2(dfd);},isReady:function(_3d6){return _3d3(dfd);},handleResponse:function(_3d7){return _3d4(dfd);}});_3ba(dfd);_3d0(dfd);};var _3d8="application/x-www-form-urlencoded";dojo._ioAddQueryToUrl=function(_3d9){if(_3d9.query.length){_3d9.url+=(_3d9.url.indexOf("?")==-1?"?":"&")+_3d9.query;_3d9.query=null;}};dojo.xhr=function(_3da,args,_3db){var rDfd;var dfd=dojo._ioSetArgs(args,function(dfd){rDfd&&rDfd.cancel();},_3cd,_3ce);var _3dc=dfd.ioArgs;if("postData" in args){_3dc.query=args.postData;}else{if("putData" in args){_3dc.query=args.putData;}else{if("rawBody" in args){_3dc.query=args.rawBody;}else{if((arguments.length>2&&!_3db)||"POST|PUT".indexOf(_3da.toUpperCase())===-1){dojo._ioAddQueryToUrl(_3dc);}}}}var _3dd={method:_3da,handleAs:"text",timeout:args.timeout,withCredentials:args.withCredentials,ioArgs:_3dc};if(typeof args.headers!=="undefined"){_3dd.headers=args.headers;}if(typeof args.contentType!=="undefined"){if(!_3dd.headers){_3dd.headers={};}_3dd.headers["Content-Type"]=args.contentType;}if(typeof _3dc.query!=="undefined"){_3dd.data=_3dc.query;}if(typeof args.sync!=="undefined"){_3dd.sync=args.sync;}dojo._ioNotifyStart(dfd);try{rDfd=_3bb(_3dc.url,_3dd,true);}catch(e){dfd.cancel();return dfd;}dfd.ioArgs.xhr=rDfd.response.xhr;rDfd.then(function(){dfd.resolve(dfd);}).otherwise(function(_3de){_3dc.error=_3de;if(_3de.response){_3de.status=_3de.response.status;_3de.responseText=_3de.response.text;_3de.xhr=_3de.response.xhr;}dfd.reject(_3de);});return dfd;};dojo.xhrGet=function(args){return dojo.xhr("GET",args);};dojo.rawXhrPost=dojo.xhrPost=function(args){return dojo.xhr("POST",args,true);};dojo.rawXhrPut=dojo.xhrPut=function(args){return dojo.xhr("PUT",args,true);};dojo.xhrDelete=function(args){return dojo.xhr("DELETE",args);};dojo._isDocumentOk=function(x){return util.checkStatus(x.status);};dojo._getText=function(url){var _3df;dojo.xhrGet({url:url,sync:true,load:function(text){_3df=text;}});return _3df;};lang.mixin(dojo.xhr,{_xhrObj:dojo._xhrObj,fieldToObject:_3b5.fieldToObject,formToObject:_3b5.toObject,objectToQuery:ioq.objectToQuery,formToQuery:_3b5.toQuery,formToJson:_3b5.toJson,queryToObject:ioq.queryToObject,contentHandlers:_3bc,_ioSetArgs:dojo._ioSetArgs,_ioCancelAll:dojo._ioCancelAll,_ioNotifyStart:dojo._ioNotifyStart,_ioWatch:dojo._ioWatch,_ioAddQueryToUrl:dojo._ioAddQueryToUrl,_isDocumentOk:dojo._isDocumentOk,_getText:dojo._getText,get:dojo.xhrGet,post:dojo.xhrPost,put:dojo.xhrPut,del:dojo.xhrDelete});return dojo.xhr;});},"dojo/_base/unload":function(){define(["./kernel","./lang","../on"],function(dojo,lang,on){var win=window;var _3e0={addOnWindowUnload:function(obj,_3e1){if(!dojo.windowUnloaded){on(win,"unload",(dojo.windowUnloaded=function(){}));}on(win,"unload",lang.hitch(obj,_3e1));},addOnUnload:function(obj,_3e2){on(win,"beforeunload",lang.hitch(obj,_3e2));}};dojo.addOnWindowUnload=_3e0.addOnWindowUnload;dojo.addOnUnload=_3e0.addOnUnload;return _3e0;});},"dojo/Deferred":function(){define(["./has","./_base/lang","./errors/CancelError","./promise/Promise","./promise/instrumentation"],function(has,lang,_3e3,_3e4,_3e5){"use strict";var _3e6=0,_3e7=1,_3e8=2;var _3e9="This deferred has already been fulfilled.";var _3ea=Object.freeze||function(){};var _3eb=function(_3ec,type,_3ed,_3ee,_3ef){if(1){if(type===_3e8&&_3f0.instrumentRejected&&_3ec.length===0){_3f0.instrumentRejected(_3ed,false,_3ee,_3ef);}}for(var i=0;i<_3ec.length;i++){_3f1(_3ec[i],type,_3ed,_3ee);}};var _3f1=function(_3f2,type,_3f3,_3f4){var func=_3f2[type];var _3f5=_3f2.deferred;if(func){try{var _3f6=func(_3f3);if(type===_3e6){if(typeof _3f6!=="undefined"){_3f7(_3f5,type,_3f6);}}else{if(_3f6&&typeof _3f6.then==="function"){_3f2.cancel=_3f6.cancel;_3f6.then(_3f8(_3f5,_3e7),_3f8(_3f5,_3e8),_3f8(_3f5,_3e6));return;}_3f7(_3f5,_3e7,_3f6);}}catch(error){_3f7(_3f5,_3e8,error);}}else{_3f7(_3f5,type,_3f3);}if(1){if(type===_3e8&&_3f0.instrumentRejected){_3f0.instrumentRejected(_3f3,!!func,_3f4,_3f5.promise);}}};var _3f8=function(_3f9,type){return function(_3fa){_3f7(_3f9,type,_3fa);};};var _3f7=function(_3fb,type,_3fc){if(!_3fb.isCanceled()){switch(type){case _3e6:_3fb.progress(_3fc);break;case _3e7:_3fb.resolve(_3fc);break;case _3e8:_3fb.reject(_3fc);break;}}};var _3f0=function(_3fd){var _3fe=this.promise=new _3e4();var _3ff=this;var _400,_401,_402;var _403=false;var _404=[];if(1&&Error.captureStackTrace){Error.captureStackTrace(_3ff,_3f0);Error.captureStackTrace(_3fe,_3f0);}this.isResolved=_3fe.isResolved=function(){return _400===_3e7;};this.isRejected=_3fe.isRejected=function(){return _400===_3e8;};this.isFulfilled=_3fe.isFulfilled=function(){return !!_400;};this.isCanceled=_3fe.isCanceled=function(){return _403;};this.progress=function(_405,_406){if(!_400){_3eb(_404,_3e6,_405,null,_3ff);return _3fe;}else{if(_406===true){throw new Error(_3e9);}else{return _3fe;}}};this.resolve=function(_407,_408){if(!_400){_3eb(_404,_400=_3e7,_401=_407,null,_3ff);_404=null;return _3fe;}else{if(_408===true){throw new Error(_3e9);}else{return _3fe;}}};var _409=this.reject=function(_40a,_40b){if(!_400){if(1&&Error.captureStackTrace){Error.captureStackTrace(_402={},_409);}_3eb(_404,_400=_3e8,_401=_40a,_402,_3ff);_404=null;return _3fe;}else{if(_40b===true){throw new Error(_3e9);}else{return _3fe;}}};this.then=_3fe.then=function(_40c,_40d,_40e){var _40f=[_40e,_40c,_40d];_40f.cancel=_3fe.cancel;_40f.deferred=new _3f0(function(_410){return _40f.cancel&&_40f.cancel(_410);});if(_400&&!_404){_3f1(_40f,_400,_401,_402);}else{_404.push(_40f);}return _40f.deferred.promise;};this.cancel=_3fe.cancel=function(_411,_412){if(!_400){if(_3fd){var _413=_3fd(_411);_411=typeof _413==="undefined"?_411:_413;}_403=true;if(!_400){if(typeof _411==="undefined"){_411=new _3e3();}_409(_411);return _411;}else{if(_400===_3e8&&_401===_411){return _411;}}}else{if(_412===true){throw new Error(_3e9);}}};_3ea(_3fe);};_3f0.prototype.toString=function(){return "[object Deferred]";};if(_3e5){_3e5(_3f0);}return _3f0;});},"dojo/_base/NodeList":function(){define(["./kernel","../query","./array","./html","../NodeList-dom"],function(dojo,_414,_415){var _416=_414.NodeList,nlp=_416.prototype;nlp.connect=_416._adaptAsForEach(function(){return dojo.connect.apply(this,arguments);});nlp.coords=_416._adaptAsMap(dojo.coords);_416.events=["blur","focus","change","click","error","keydown","keypress","keyup","load","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit"];_415.forEach(_416.events,function(evt){var _417="on"+evt;nlp[_417]=function(a,b){return this.connect(_417,a,b);};});dojo.NodeList=_416;return _416;});},"dojo/_base/Color":function(){define(["./kernel","./lang","./array","./config"],function(dojo,lang,_418,_419){var _41a=dojo.Color=function(_41b){if(_41b){this.setColor(_41b);}};_41a.named={"black":[0,0,0],"silver":[192,192,192],"gray":[128,128,128],"white":[255,255,255],"maroon":[128,0,0],"red":[255,0,0],"purple":[128,0,128],"fuchsia":[255,0,255],"green":[0,128,0],"lime":[0,255,0],"olive":[128,128,0],"yellow":[255,255,0],"navy":[0,0,128],"blue":[0,0,255],"teal":[0,128,128],"aqua":[0,255,255],"transparent":_419.transparentColor||[0,0,0,0]};lang.extend(_41a,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_41c){if(lang.isString(_41c)){_41a.fromString(_41c,this);}else{if(lang.isArray(_41c)){_41a.fromArray(_41c,this);}else{this._set(_41c.r,_41c.g,_41c.b,_41c.a);if(!(_41c instanceof _41a)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var arr=_418.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+arr.join("");},toCss:function(_41d){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_41d?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});_41a.blendColors=dojo.blendColors=function(_41e,end,_41f,obj){var t=obj||new _41a();t.r=Math.round(_41e.r+(end.r-_41e.r)*_41f);t.g=Math.round(_41e.g+(end.g-_41e.g)*_41f);t.b=Math.round(_41e.b+(end.b-_41e.b)*_41f);t.a=_41e.a+(end.a-_41e.a)*_41f;return t.sanitize();};_41a.fromRgb=dojo.colorFromRgb=function(_420,obj){var m=_420.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&_41a.fromArray(m[1].split(/\s*,\s*/),obj);};_41a.fromHex=dojo.colorFromHex=function(_421,obj){var t=obj||new _41a(),bits=(_421.length==4)?4:8,mask=(1<<bits)-1;_421=Number("0x"+_421.substr(1));if(isNaN(_421)){return null;}_418.forEach(["b","g","r"],function(x){var c=_421&mask;_421>>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};_41a.fromArray=dojo.colorFromArray=function(a,obj){var t=obj||new _41a();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};_41a.fromString=dojo.colorFromString=function(str,obj){var a=_41a.named[str];return a&&_41a.fromArray(a,obj)||_41a.fromRgb(str,obj)||_41a.fromHex(str,obj);};return _41a;});},"dojo/promise/instrumentation":function(){define(["./tracer","../has","../_base/lang","../_base/array"],function(_422,has,lang,_423){has.add("config-useDeferredInstrumentation","report-unhandled-rejections");function _424(_425,_426,_427){if(_425&&_425.log===false){return;}var _428="";if(_425&&_425.stack){_428+=_425.stack;}if(_426&&_426.stack){_428+="\n ----------------------------------------\n rejected"+_426.stack.split("\n").slice(1).join("\n").replace(/^\s+/," ");}if(_427&&_427.stack){_428+="\n ----------------------------------------\n"+_427.stack;}console.error(_425,_428);};function _429(_42a,_42b,_42c,_42d){if(!_42b){_424(_42a,_42c,_42d);}};var _42e=[];var _42f=false;var _430=1000;function _431(_432,_433,_434,_435){if(!_423.some(_42e,function(obj){if(obj.error===_432){if(_433){obj.handled=true;}return true;}})){_42e.push({error:_432,rejection:_434,handled:_433,deferred:_435,timestamp:new Date().getTime()});}if(!_42f){_42f=setTimeout(_436,_430);}};function _436(){var now=new Date().getTime();var _437=now-_430;_42e=_423.filter(_42e,function(obj){if(obj.timestamp<_437){if(!obj.handled){_424(obj.error,obj.rejection,obj.deferred);}return false;}return true;});if(_42e.length){_42f=setTimeout(_436,_42e[0].timestamp+_430-now);}else{_42f=false;}};return function(_438){var _439=has("config-useDeferredInstrumentation");if(_439){_422.on("resolved",lang.hitch(console,"log","resolved"));_422.on("rejected",lang.hitch(console,"log","rejected"));_422.on("progress",lang.hitch(console,"log","progress"));var args=[];if(typeof _439==="string"){args=_439.split(",");_439=args.shift();}if(_439==="report-rejections"){_438.instrumentRejected=_429;}else{if(_439==="report-unhandled-rejections"||_439===true||_439===1){_438.instrumentRejected=_431;_430=parseInt(args[0],10)||_430;}else{throw new Error("Unsupported instrumentation usage <"+_439+">");}}}};});},"dojo/selector/_loader":function(){define(["../has","require"],function(has,_43a){"use strict";if(typeof document!=="undefined"){var _43b=document.createElement("div");has.add("dom-qsa2.1",!!_43b.querySelectorAll);has.add("dom-qsa3",function(){try{_43b.innerHTML="<p class='TEST'></p>";return _43b.querySelectorAll(".TEST:empty").length==1;}catch(e){}});}var _43c;var acme="./acme",lite="./lite";return {load:function(id,_43d,_43e,_43f){if(_43f&&_43f.isBuild){_43e();return;}var req=_43a;id=id=="default"?has("config-selectorEngine")||"css3":id;id=id=="css2"||id=="lite"?lite:id=="css2.1"?has("dom-qsa2.1")?lite:acme:id=="css3"?has("dom-qsa3")?lite:acme:id=="acme"?acme:(req=_43d)&&id;if(id.charAt(id.length-1)=="?"){id=id.substring(0,id.length-1);var _440=true;}if(_440&&(has("dom-compliant-qsa")||_43c)){return _43e(_43c);}req([id],function(_441){if(id!="./lite"){_43c=_441;}_43e(_441);});}};});},"dojo/promise/Promise":function(){define(["../_base/lang"],function(lang){"use strict";function _442(){throw new TypeError("abstract");};return lang.extend(function Promise(){},{then:function(_443,_444,_445){_442();},cancel:function(_446,_447){_442();},isResolved:function(){_442();},isRejected:function(){_442();},isFulfilled:function(){_442();},isCanceled:function(){_442();},always:function(_448){return this.then(_448,_448);},"catch":function(_449){return this.then(null,_449);},otherwise:function(_44a){return this.then(null,_44a);},trace:function(){return this;},traceRejected:function(){return this;},toString:function(){return "[object Promise]";}});});},"dojo/request/watch":function(){define(["./util","../errors/RequestTimeoutError","../errors/CancelError","../_base/array","../_base/window","../has!host-browser?dom-addeventlistener?:../on:"],function(util,_44b,_44c,_44d,win,on){var _44e=null,_44f=[];function _450(){var now=+(new Date);for(var i=0,dfd;i<_44f.length&&(dfd=_44f[i]);i++){var _451=dfd.response,_452=_451.options;if((dfd.isCanceled&&dfd.isCanceled())||(dfd.isValid&&!dfd.isValid(_451))){_44f.splice(i--,1);_453._onAction&&_453._onAction();}else{if(dfd.isReady&&dfd.isReady(_451)){_44f.splice(i--,1);dfd.handleResponse(_451);_453._onAction&&_453._onAction();}else{if(dfd.startTime){if(dfd.startTime+(_452.timeout||0)<now){_44f.splice(i--,1);dfd.cancel(new _44b("Timeout exceeded",_451));_453._onAction&&_453._onAction();}}}}}_453._onInFlight&&_453._onInFlight(dfd);if(!_44f.length){clearInterval(_44e);_44e=null;}};function _453(dfd){if(dfd.response.options.timeout){dfd.startTime=+(new Date);}if(dfd.isFulfilled()){return;}_44f.push(dfd);if(!_44e){_44e=setInterval(_450,50);}if(dfd.response.options.sync){_450();}};_453.cancelAll=function cancelAll(){try{_44d.forEach(_44f,function(dfd){try{dfd.cancel(new _44c("All requests canceled."));}catch(e){}});}catch(e){}};if(win&&on&&win.doc.attachEvent){on(win.global,"unload",function(){_453.cancelAll();});}return _453;});},"dojo/on":function(){define(["./has!dom-addeventlistener?:./aspect","./_base/kernel","./sniff"],function(_454,dojo,has){"use strict";if(1){var _455=window.ScriptEngineMajorVersion;has.add("jscript",_455&&(_455()+ScriptEngineMinorVersion()/10));has.add("event-orientationchange",has("touch")&&!has("android"));has.add("event-stopimmediatepropagation",window.Event&&!!window.Event.prototype&&!!window.Event.prototype.stopImmediatePropagation);has.add("event-focusin",function(_456,doc,_457){return "onfocusin" in _457;});if(has("touch")){has.add("touch-can-modify-event-delegate",function(){var _458=function(){};_458.prototype=document.createEvent("MouseEvents");try{var _459=new _458;_459.target=null;return _459.target===null;}catch(e){return false;}});}}var on=function(_45a,type,_45b,_45c){if(typeof _45a.on=="function"&&typeof type!="function"&&!_45a.nodeType){return _45a.on(type,_45b);}return on.parse(_45a,type,_45b,_45d,_45c,this);};on.pausable=function(_45e,type,_45f,_460){var _461;var _462=on(_45e,type,function(){if(!_461){return _45f.apply(this,arguments);}},_460);_462.pause=function(){_461=true;};_462.resume=function(){_461=false;};return _462;};on.once=function(_463,type,_464,_465){var _466=on(_463,type,function(){_466.remove();return _464.apply(this,arguments);});return _466;};on.parse=function(_467,type,_468,_469,_46a,_46b){var _46c;if(type.call){return type.call(_46b,_467,_468);}if(type instanceof Array){_46c=type;}else{if(type.indexOf(",")>-1){_46c=type.split(/\s*,\s*/);}}if(_46c){var _46d=[];var i=0;var _46e;while(_46e=_46c[i++]){_46d.push(on.parse(_467,_46e,_468,_469,_46a,_46b));}_46d.remove=function(){for(var i=0;i<_46d.length;i++){_46d[i].remove();}};return _46d;}return _469(_467,type,_468,_46a,_46b);};var _46f=/^touch/;function _45d(_470,type,_471,_472,_473){var _474=type.match(/(.*):(.*)/);if(_474){type=_474[2];_474=_474[1];return on.selector(_474,type).call(_473,_470,_471);}if(has("touch")){if(_46f.test(type)){_471=_475(_471);}if(!has("event-orientationchange")&&(type=="orientationchange")){type="resize";_470=window;_471=_475(_471);}}if(_476){_471=_476(_471);}if(_470.addEventListener){var _477=type in _478,_479=_477?_478[type]:type;_470.addEventListener(_479,_471,_477);return {remove:function(){_470.removeEventListener(_479,_471,_477);}};}type="on"+type;if(_47a&&_470.attachEvent){return _47a(_470,type,_471);}throw new Error("Target must be an event emitter");};on.matches=function(node,_47b,_47c,_47d,_47e){_47e=_47e&&(typeof _47e.matches=="function")?_47e:dojo.query;_47d=_47d!==false;if(node.nodeType!=1){node=node.parentNode;}while(!_47e.matches(node,_47b,_47c)){if(node==_47c||_47d===false||!(node=node.parentNode)||node.nodeType!=1){return false;}}return node;};on.selector=function(_47f,_480,_481){return function(_482,_483){var _484=typeof _47f=="function"?{matches:_47f}:this,_485=_480.bubble;function _486(_487){return on.matches(_487,_47f,_482,_481,_484);};if(_485){return on(_482,_485(_486),_483);}return on(_482,_480,function(_488){var _489=_486(_488.target);if(_489){_488.selectorTarget=_489;return _483.call(_489,_488);}});};};function _48a(){this.cancelable=false;this.defaultPrevented=true;};function _48b(){this.bubbles=false;};var _48c=[].slice,_48d=on.emit=function(_48e,type,_48f){var args=_48c.call(arguments,2);var _490="on"+type;if("parentNode" in _48e){var _491=args[0]={};for(var i in _48f){_491[i]=_48f[i];}_491.preventDefault=_48a;_491.stopPropagation=_48b;_491.target=_48e;_491.type=type;_48f=_491;}do{_48e[_490]&&_48e[_490].apply(_48e,args);}while(_48f&&_48f.bubbles&&(_48e=_48e.parentNode));return _48f&&_48f.cancelable&&_48f;};var _478=has("event-focusin")?{}:{focusin:"focus",focusout:"blur"};if(!has("event-stopimmediatepropagation")){var _492=function(){this.immediatelyStopped=true;this.modified=true;};var _476=function(_493){return function(_494){if(!_494.immediatelyStopped){_494.stopImmediatePropagation=_492;return _493.apply(this,arguments);}};};}if(has("dom-addeventlistener")){on.emit=function(_495,type,_496){if(_495.dispatchEvent&&document.createEvent){var _497=_495.ownerDocument||document;var _498=_497.createEvent("HTMLEvents");_498.initEvent(type,!!_496.bubbles,!!_496.cancelable);for(var i in _496){if(!(i in _498)){_498[i]=_496[i];}}return _495.dispatchEvent(_498)&&_498;}return _48d.apply(on,arguments);};}else{on._fixEvent=function(evt,_499){if(!evt){var w=_499&&(_499.ownerDocument||_499.document||_499).parentWindow||window;evt=w.event;}if(!evt){return evt;}try{if(_49a&&evt.type==_49a.type&&evt.srcElement==_49a.target){evt=_49a;}}catch(e){}if(!evt.target){evt.target=evt.srcElement;evt.currentTarget=(_499||evt.srcElement);if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}if(!evt.stopPropagation){evt.stopPropagation=_49b;evt.preventDefault=_49c;}switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;_49d(evt);break;}}return evt;};var _49a,_49e=function(_49f){this.handle=_49f;};_49e.prototype.remove=function(){delete _dojoIEListeners_[this.handle];};var _4a0=function(_4a1){return function(evt){evt=on._fixEvent(evt,this);var _4a2=_4a1.call(this,evt);if(evt.modified){if(!_49a){setTimeout(function(){_49a=null;});}_49a=evt;}return _4a2;};};var _47a=function(_4a3,type,_4a4){_4a4=_4a0(_4a4);if(((_4a3.ownerDocument?_4a3.ownerDocument.parentWindow:_4a3.parentWindow||_4a3.window||window)!=top||has("jscript")<5.8)&&!has("config-_allow_leaks")){if(typeof _dojoIEListeners_=="undefined"){_dojoIEListeners_=[];}var _4a5=_4a3[type];if(!_4a5||!_4a5.listeners){var _4a6=_4a5;_4a5=Function("event","var callee = arguments.callee; for(var i = 0; i<callee.listeners.length; i++){var listener = _dojoIEListeners_[callee.listeners[i]]; if(listener){listener.call(this,event);}}");_4a5.listeners=[];_4a3[type]=_4a5;_4a5.global=this;if(_4a6){_4a5.listeners.push(_dojoIEListeners_.push(_4a6)-1);}}var _4a7;_4a5.listeners.push(_4a7=(_4a5.global._dojoIEListeners_.push(_4a4)-1));return new _49e(_4a7);}return _454.after(_4a3,type,_4a4,true);};var _49d=function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;};var _49b=function(){this.cancelBubble=true;};var _49c=on._preventDefault=function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){try{this.keyCode=0;}catch(e){}}this.defaultPrevented=true;this.returnValue=false;this.modified=true;};}if(has("touch")){var _4a8=function(){};var _4a9=window.orientation;var _475=function(_4aa){return function(_4ab){var _4ac=_4ab.corrected;if(!_4ac){var type=_4ab.type;try{delete _4ab.type;}catch(e){}if(_4ab.type){if(has("touch-can-modify-event-delegate")){_4a8.prototype=_4ab;_4ac=new _4a8;}else{_4ac={};for(var name in _4ab){_4ac[name]=_4ab[name];}}_4ac.preventDefault=function(){_4ab.preventDefault();};_4ac.stopPropagation=function(){_4ab.stopPropagation();};}else{_4ac=_4ab;_4ac.type=type;}_4ab.corrected=_4ac;if(type=="resize"){if(_4a9==window.orientation){return null;}_4a9=window.orientation;_4ac.type="orientationchange";return _4aa.call(this,_4ac);}if(!("rotation" in _4ac)){_4ac.rotation=0;_4ac.scale=1;}if(window.TouchEvent&&_4ab instanceof TouchEvent){var _4ad=_4ac.changedTouches[0];for(var i in _4ad){delete _4ac[i];_4ac[i]=_4ad[i];}}}return _4aa.call(this,_4ac);};};}return on;});},"dojo/_base/sniff":function(){define(["./kernel","./lang","../sniff"],function(dojo,lang,has){if(!1){return has;}dojo._name="browser";lang.mixin(dojo,{isBrowser:true,isFF:has("ff"),isIE:has("ie"),isKhtml:has("khtml"),isWebKit:has("webkit"),isMozilla:has("mozilla"),isMoz:has("mozilla"),isOpera:has("opera"),isSafari:has("safari"),isChrome:has("chrome"),isMac:has("mac"),isIos:has("ios"),isAndroid:has("android"),isWii:has("wii"),isQuirks:has("quirks"),isAir:has("air")});return has;});},"dojo/errors/create":function(){define(["../_base/lang"],function(lang){return function(name,ctor,base,_4ae){base=base||Error;var _4af=function(_4b0){if(base===Error){if(Error.captureStackTrace){Error.captureStackTrace(this,_4af);}var err=Error.call(this,_4b0),prop;for(prop in err){if(err.hasOwnProperty(prop)){this[prop]=err[prop];}}this.message=_4b0;this.stack=err.stack;}else{base.apply(this,arguments);}if(ctor){ctor.apply(this,arguments);}};_4af.prototype=lang.delegate(base.prototype,_4ae);_4af.prototype.name=name;_4af.prototype.constructor=_4af;return _4af;};});},"dojo/_base/array":function(){define(["./kernel","../has","./lang"],function(dojo,has,lang){var _4b1={},u;function _4b2(fn){return _4b1[fn]=new Function("item","index","array",fn);};function _4b3(some){var _4b4=!some;return function(a,fn,o){var i=0,l=a&&a.length||0,_4b5;if(l&&typeof a=="string"){a=a.split("");}if(typeof fn=="string"){fn=_4b1[fn]||_4b2(fn);}if(o){for(;i<l;++i){_4b5=!fn.call(o,a[i],i,a);if(some^_4b5){return !_4b5;}}}else{for(;i<l;++i){_4b5=!fn(a[i],i,a);if(some^_4b5){return !_4b5;}}}return _4b4;};};function _4b6(up){var _4b7=1,_4b8=0,_4b9=0;if(!up){_4b7=_4b8=_4b9=-1;}return function(a,x,from,last){if(last&&_4b7>0){return _4ba.lastIndexOf(a,x,from);}var l=a&&a.length||0,end=up?l+_4b9:_4b8,i;if(from===u){i=up?_4b8:l+_4b9;}else{if(from<0){i=l+from;if(i<0){i=_4b8;}}else{i=from>=l?l+_4b9:from;}}if(l&&typeof a=="string"){a=a.split("");}for(;i!=end;i+=_4b7){if(a[i]==x){return i;}}return -1;};};var _4ba={every:_4b3(false),some:_4b3(true),indexOf:_4b6(true),lastIndexOf:_4b6(false),forEach:function(arr,_4bb,_4bc){var i=0,l=arr&&arr.length||0;if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _4bb=="string"){_4bb=_4b1[_4bb]||_4b2(_4bb);}if(_4bc){for(;i<l;++i){_4bb.call(_4bc,arr[i],i,arr);}}else{for(;i<l;++i){_4bb(arr[i],i,arr);}}},map:function(arr,_4bd,_4be,Ctr){var i=0,l=arr&&arr.length||0,out=new (Ctr||Array)(l);if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _4bd=="string"){_4bd=_4b1[_4bd]||_4b2(_4bd);}if(_4be){for(;i<l;++i){out[i]=_4bd.call(_4be,arr[i],i,arr);}}else{for(;i<l;++i){out[i]=_4bd(arr[i],i,arr);}}return out;},filter:function(arr,_4bf,_4c0){var i=0,l=arr&&arr.length||0,out=[],_4c1;if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _4bf=="string"){_4bf=_4b1[_4bf]||_4b2(_4bf);}if(_4c0){for(;i<l;++i){_4c1=arr[i];if(_4bf.call(_4c0,_4c1,i,arr)){out.push(_4c1);}}}else{for(;i<l;++i){_4c1=arr[i];if(_4bf(_4c1,i,arr)){out.push(_4c1);}}}return out;},clearCache:function(){_4b1={};}};1&&lang.mixin(dojo,_4ba);return _4ba;});},"dojo/_base/json":function(){define(["./kernel","../json"],function(dojo,json){dojo.fromJson=function(js){return eval("("+js+")");};dojo._escapeString=json.stringify;dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_4c2){return json.stringify(it,function(key,_4c3){if(_4c3){var tf=_4c3.__json__||_4c3.json;if(typeof tf=="function"){return tf.call(_4c3);}}return _4c3;},_4c2&&dojo.toJsonIndentStr);};return dojo;});},"dojo/_base/window":function(){define(["./kernel","./lang","../sniff"],function(dojo,lang,has){var ret={global:dojo.global,doc:dojo.global["document"]||null,body:function(doc){doc=doc||dojo.doc;return doc.body||doc.getElementsByTagName("body")[0];},setContext:function(_4c4,_4c5){dojo.global=ret.global=_4c4;dojo.doc=ret.doc=_4c5;},withGlobal:function(_4c6,_4c7,_4c8,_4c9){var _4ca=dojo.global;try{dojo.global=ret.global=_4c6;return ret.withDoc.call(null,_4c6.document,_4c7,_4c8,_4c9);}finally{dojo.global=ret.global=_4ca;}},withDoc:function(_4cb,_4cc,_4cd,_4ce){var _4cf=ret.doc,oldQ=has("quirks"),_4d0=has("ie"),isIE,mode,pwin;try{dojo.doc=ret.doc=_4cb;dojo.isQuirks=has.add("quirks",dojo.doc.compatMode=="BackCompat",true,true);if(has("ie")){if((pwin=_4cb.parentWindow)&&pwin.navigator){isIE=parseFloat(pwin.navigator.appVersion.split("MSIE ")[1])||undefined;mode=_4cb.documentMode;if(mode&&mode!=5&&Math.floor(isIE)!=mode){isIE=mode;}dojo.isIE=has.add("ie",isIE,true,true);}}if(_4cd&&typeof _4cc=="string"){_4cc=_4cd[_4cc];}return _4cc.apply(_4cd,_4ce||[]);}finally{dojo.doc=ret.doc=_4cf;dojo.isQuirks=has.add("quirks",oldQ,true,true);dojo.isIE=has.add("ie",_4d0,true,true);}}};1&&lang.mixin(dojo,ret);return ret;});},"dojo/dom-class":function(){define(["./_base/lang","./_base/array","./dom"],function(lang,_4d1,dom){var _4d2="className";var cls,_4d3=/\s+/,a1=[""];function _4d4(s){if(typeof s=="string"||s instanceof String){if(s&&!_4d3.test(s)){a1[0]=s;return a1;}var a=s.split(_4d3);if(a.length&&!a[0]){a.shift();}if(a.length&&!a[a.length-1]){a.pop();}return a;}if(!s){return [];}return _4d1.filter(s,function(x){return x;});};var _4d5={};cls={contains:function containsClass(node,_4d6){return ((" "+dom.byId(node)[_4d2]+" ").indexOf(" "+_4d6+" ")>=0);},add:function addClass(node,_4d7){node=dom.byId(node);_4d7=_4d4(_4d7);var cls=node[_4d2],_4d8;cls=cls?" "+cls+" ":" ";_4d8=cls.length;for(var i=0,len=_4d7.length,c;i<len;++i){c=_4d7[i];if(c&&cls.indexOf(" "+c+" ")<0){cls+=c+" ";}}if(_4d8<cls.length){node[_4d2]=cls.substr(1,cls.length-2);}},remove:function removeClass(node,_4d9){node=dom.byId(node);var cls;if(_4d9!==undefined){_4d9=_4d4(_4d9);cls=" "+node[_4d2]+" ";for(var i=0,len=_4d9.length;i<len;++i){cls=cls.replace(" "+_4d9[i]+" "," ");}cls=lang.trim(cls);}else{cls="";}if(node[_4d2]!=cls){node[_4d2]=cls;}},replace:function replaceClass(node,_4da,_4db){node=dom.byId(node);_4d5[_4d2]=node[_4d2];cls.remove(_4d5,_4db);cls.add(_4d5,_4da);if(node[_4d2]!==_4d5[_4d2]){node[_4d2]=_4d5[_4d2];}},toggle:function toggleClass(node,_4dc,_4dd){node=dom.byId(node);if(_4dd===undefined){_4dc=_4d4(_4dc);for(var i=0,len=_4dc.length,c;i<len;++i){c=_4dc[i];cls[cls.contains(node,c)?"remove":"add"](node,c);}}else{cls[_4dd?"add":"remove"](node,_4dc);}return _4dd;}};return cls;});},"dojo/_base/config":function(){define(["../global","../has","require"],function(_4de,has,_4df){var _4e0={};if(1){var src=_4df.rawConfig,p;for(p in src){_4e0[p]=src[p];}}else{var _4e1=function(_4e2,_4e3,_4e4){for(p in _4e2){p!="has"&&has.add(_4e3+p,_4e2[p],0,_4e4);}};_4e0=1?_4df.rawConfig:_4de.dojoConfig||_4de.djConfig||{};_4e1(_4e0,"config",1);_4e1(_4e0.has,"",1);}if(!_4e0.locale&&typeof navigator!="undefined"){var _4e5=(navigator.languages&&navigator.languages.length)?navigator.languages[0]:(navigator.language||navigator.userLanguage);if(_4e5){_4e0.locale=_4e5.toLowerCase();}}return _4e0;});},"dojo/_base/event":function(){define(["./kernel","../on","../has","../dom-geometry"],function(dojo,on,has,dom){if(on._fixEvent){var _4e6=on._fixEvent;on._fixEvent=function(evt,se){evt=_4e6(evt,se);if(evt){dom.normalizeEvent(evt);}return evt;};}var ret={fix:function(evt,_4e7){if(on._fixEvent){return on._fixEvent(evt,_4e7);}return evt;},stop:function(evt){if(has("dom-addeventlistener")||(evt&&evt.preventDefault)){evt.preventDefault();evt.stopPropagation();}else{evt=evt||window.event;evt.cancelBubble=true;on._preventDefault.call(evt);}}};if(1){dojo.fixEvent=ret.fix;dojo.stopEvent=ret.stop;}return ret;});},"dojo/main":function(){define(["./_base/kernel","./has","require","./sniff","./_base/lang","./_base/array","./_base/config","./ready","./_base/declare","./_base/connect","./_base/Deferred","./_base/json","./_base/Color","./has!dojo-firebug?./_firebug/firebug","./_base/browser","./_base/loader"],function(_4e8,has,_4e9,_4ea,lang,_4eb,_4ec,_4ed){if(_4ec.isDebug){_4e9(["./_firebug/firebug"]);}1||has.add("dojo-config-require",1);if(1){var deps=_4ec.require;if(deps){deps=_4eb.map(lang.isArray(deps)?deps:[deps],function(item){return item.replace(/\./g,"/");});if(_4e8.isAsync){_4e9(deps);}else{_4ed(1,function(){_4e9(deps);});}}}return _4e8;});},"dojo/sniff":function(){define(["./has"],function(has){if(1){var n=navigator,dua=n.userAgent,dav=n.appVersion,tv=parseFloat(dav);has.add("air",dua.indexOf("AdobeAIR")>=0);has.add("wp",parseFloat(dua.split("Windows Phone")[1])||undefined);has.add("msapp",parseFloat(dua.split("MSAppHost/")[1])||undefined);has.add("khtml",dav.indexOf("Konqueror")>=0?tv:undefined);has.add("edge",parseFloat(dua.split("Edge/")[1])||undefined);has.add("opr",parseFloat(dua.split("OPR/")[1])||undefined);has.add("webkit",!has("wp")&&!has("edge")&&parseFloat(dua.split("WebKit/")[1])||undefined);has.add("chrome",!has("edge")&&!has("opr")&&parseFloat(dua.split("Chrome/")[1])||undefined);has.add("android",!has("wp")&&parseFloat(dua.split("Android ")[1])||undefined);has.add("safari",dav.indexOf("Safari")>=0&&!has("wp")&&!has("chrome")&&!has("android")&&!has("edge")&&!has("opr")?parseFloat(dav.split("Version/")[1]):undefined);has.add("mac",dav.indexOf("Macintosh")>=0);has.add("quirks",document.compatMode=="BackCompat");if(!has("wp")&&dua.match(/(iPhone|iPod|iPad)/)){var p=RegExp.$1.replace(/P/,"p");var v=dua.match(/OS ([\d_]+)/)?RegExp.$1:"1";var os=parseFloat(v.replace(/_/,".").replace(/_/g,""));has.add(p,os);has.add("ios",os);}has.add("bb",(dua.indexOf("BlackBerry")>=0||dua.indexOf("BB10")>=0)&&parseFloat(dua.split("Version/")[1])||undefined);has.add("trident",parseFloat(dav.split("Trident/")[1])||undefined);has.add("svg",typeof SVGAngle!=="undefined");if(!has("webkit")){if(dua.indexOf("Opera")>=0){has.add("opera",tv>=9.8?parseFloat(dua.split("Version/")[1])||tv:tv);}if(dua.indexOf("Gecko")>=0&&!has("wp")&&!has("khtml")&&!has("trident")&&!has("edge")){has.add("mozilla",tv);}if(has("mozilla")){has.add("ff",parseFloat(dua.split("Firefox/")[1]||dua.split("Minefield/")[1])||undefined);}if(document.all&&!has("opera")){var isIE=parseFloat(dav.split("MSIE ")[1])||undefined;var mode=document.documentMode;if(mode&&mode!=5&&Math.floor(isIE)!=mode){isIE=mode;}has.add("ie",isIE);}has.add("wii",typeof opera!="undefined"&&opera.wiiremote);}}return has;});},"dojo/request/handlers":function(){define(["../json","../_base/kernel","../_base/array","../has","../selector/_loader"],function(JSON,_4ee,_4ef,has){has.add("activex",typeof ActiveXObject!=="undefined");has.add("dom-parser",function(_4f0){return "DOMParser" in _4f0;});var _4f1;if(has("activex")){var dp=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML.DOMDocument"];var _4f2;_4f1=function(_4f3){var _4f4=_4f3.data;var text=_4f3.text;if(_4f4&&has("dom-qsa2.1")&&!_4f4.querySelectorAll&&has("dom-parser")){_4f4=new DOMParser().parseFromString(text,"application/xml");}function _4f5(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(text);_4f4=dom;_4f2=p;}catch(e){return false;}return true;};if(!_4f4||!_4f4.documentElement){if(!_4f2||!_4f5(_4f2)){_4ef.some(dp,_4f5);}}return _4f4;};}var _4f6=function(_4f7){if(!has("native-xhr2-blob")&&_4f7.options.handleAs==="blob"&&typeof Blob!=="undefined"){return new Blob([_4f7.xhr.response],{type:_4f7.xhr.getResponseHeader("Content-Type")});}return _4f7.xhr.response;};var _4f8={"javascript":function(_4f9){return _4ee.eval(_4f9.text||"");},"json":function(_4fa){return JSON.parse(_4fa.text||null);},"xml":_4f1,"blob":_4f6,"arraybuffer":_4f6,"document":_4f6};function _4fb(_4fc){var _4fd=_4f8[_4fc.options.handleAs];_4fc.data=_4fd?_4fd(_4fc):(_4fc.data||_4fc.text);return _4fc;};_4fb.register=function(name,_4fe){_4f8[name]=_4fe;};return _4fb;});},"dojo/ready":function(){define(["./_base/kernel","./has","require","./domReady","./_base/lang"],function(dojo,has,_4ff,_500,lang){var _501=0,_502=[],_503=0,_504=function(){_501=1;dojo._postLoad=dojo.config.afterOnLoad=true;_505();},_505=function(){if(_503){return;}_503=1;while(_501&&(!_500||_500._Q.length==0)&&(_4ff.idle?_4ff.idle():true)&&_502.length){var f=_502.shift();try{f();}catch(e){e.info=e.message;if(_4ff.signal){_4ff.signal("error",e);}else{throw e;}}}_503=0;};_4ff.on&&_4ff.on("idle",_505);if(_500){_500._onQEmpty=_505;}var _506=dojo.ready=dojo.addOnLoad=function(_507,_508,_509){var _50a=lang._toArray(arguments);if(typeof _507!="number"){_509=_508;_508=_507;_507=1000;}else{_50a.shift();}_509=_509?lang.hitch.apply(dojo,_50a):function(){_508();};_509.priority=_507;for(var i=0;i<_502.length&&_507>=_502[i].priority;i++){}_502.splice(i,0,_509);_505();};1||has.add("dojo-config-addOnLoad",1);if(1){var dca=dojo.config.addOnLoad;if(dca){_506[(lang.isArray(dca)?"apply":"call")](dojo,dca);}}if(1&&dojo.config.parseOnLoad&&!dojo.isAsync){_506(99,function(){if(!dojo.parser){dojo.deprecated("Add explicit require(['dojo/parser']);","","2.0");_4ff(["dojo/parser"]);}});}if(_500){_500(_504);}else{_504();}return _506;});},"dojo/aspect":function(){define([],function(){"use strict";var _50b;function _50c(_50d,type,_50e,_50f){var _510=_50d[type];var _511=type=="around";var _512;if(_511){var _513=_50e(function(){return _510.advice(this,arguments);});_512={remove:function(){if(_513){_513=_50d=_50e=null;}},advice:function(_514,args){return _513?_513.apply(_514,args):_510.advice(_514,args);}};}else{_512={remove:function(){if(_512.advice){var _515=_512.previous;var next=_512.next;if(!next&&!_515){delete _50d[type];}else{if(_515){_515.next=next;}else{_50d[type]=next;}if(next){next.previous=_515;}}_50d=_50e=_512.advice=null;}},id:_50d.nextId++,advice:_50e,receiveArguments:_50f};}if(_510&&!_511){if(type=="after"){while(_510.next&&(_510=_510.next)){}_510.next=_512;_512.previous=_510;}else{if(type=="before"){_50d[type]=_512;_512.next=_510;_510.previous=_512;}}}else{_50d[type]=_512;}return _512;};function _516(type){return function(_517,_518,_519,_51a){var _51b=_517[_518],_51c;if(!_51b||_51b.target!=_517){_517[_518]=_51c=function(){var _51d=_51c.nextId;var args=arguments;var _51e=_51c.before;while(_51e){if(_51e.advice){args=_51e.advice.apply(this,args)||args;}_51e=_51e.next;}if(_51c.around){var _51f=_51c.around.advice(this,args);}var _520=_51c.after;while(_520&&_520.id<_51d){if(_520.advice){if(_520.receiveArguments){var _521=_520.advice.apply(this,args);_51f=_521===_50b?_51f:_521;}else{_51f=_520.advice.call(this,_51f,args);}}_520=_520.next;}return _51f;};if(_51b){_51c.around={advice:function(_522,args){return _51b.apply(_522,args);}};}_51c.target=_517;_51c.nextId=_51c.nextId||0;}var _523=_50c((_51c||_51b),type,_519,_51a);_519=null;return _523;};};var _524=_516("after");var _525=_516("before");var _526=_516("around");return {before:_525,around:_526,after:_524};});},"dojo/_base/connect":function(){define(["./kernel","../on","../topic","../aspect","./event","../mouse","./sniff","./lang","../keys"],function(dojo,on,hub,_527,_528,_529,has,lang){has.add("events-keypress-typed",function(){var _52a={charCode:0};try{_52a=document.createEvent("KeyboardEvent");(_52a.initKeyboardEvent||_52a.initKeyEvent).call(_52a,"keypress",true,true,null,false,false,false,false,9,3);}catch(e){}return _52a.charCode==0&&!has("opera");});function _52b(obj,_52c,_52d,_52e,_52f){_52e=lang.hitch(_52d,_52e);if(!obj||!(obj.addEventListener||obj.attachEvent)){return _527.after(obj||dojo.global,_52c,_52e,true);}if(typeof _52c=="string"&&_52c.substring(0,2)=="on"){_52c=_52c.substring(2);}if(!obj){obj=dojo.global;}if(!_52f){switch(_52c){case "keypress":_52c=_530;break;case "mouseenter":_52c=_529.enter;break;case "mouseleave":_52c=_529.leave;break;}}return on(obj,_52c,_52e,_52f);};var _531={106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39,229:113};var _532=has("mac")?"metaKey":"ctrlKey";var _533=function(evt,_534){var faux=lang.mixin({},evt,_534);_535(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};function _535(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;};var _530;if(has("events-keypress-typed")){var _536=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};_530=function(_537,_538){var _539=on(_537,"keydown",function(evt){var k=evt.keyCode;var _53a=(k!=13)&&k!=32&&(k!=27||!has("ie"))&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222)&&k!=229;if(_53a||evt.ctrlKey){var c=_53a?0:k;if(evt.ctrlKey){if(k==3||k==13){return _538.call(evt.currentTarget,evt);}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=_531[c]||c;}}}}var faux=_533(evt,{type:"keypress",faux:true,charCode:c});_538.call(evt.currentTarget,faux);if(has("ie")){_536(evt,faux.keyCode);}}});var _53b=on(_537,"keypress",function(evt){var c=evt.charCode;c=c>=32?c:0;evt=_533(evt,{charCode:c,faux:true});return _538.call(this,evt);});return {remove:function(){_539.remove();_53b.remove();}};};}else{if(has("opera")){_530=function(_53c,_53d){return on(_53c,"keypress",function(evt){var c=evt.which;if(c==3){c=99;}c=c<32&&!evt.shiftKey?0:c;if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){c+=32;}return _53d.call(this,_533(evt,{charCode:c}));});};}else{_530=function(_53e,_53f){return on(_53e,"keypress",function(evt){_535(evt);return _53f.call(this,evt);});};}}var _540={_keypress:_530,connect:function(obj,_541,_542,_543,_544){var a=arguments,args=[],i=0;args.push(typeof a[0]=="string"?null:a[i++],a[i++]);var a1=a[i+1];args.push(typeof a1=="string"||typeof a1=="function"?a[i++]:null,a[i++]);for(var l=a.length;i<l;i++){args.push(a[i]);}return _52b.apply(this,args);},disconnect:function(_545){if(_545){_545.remove();}},subscribe:function(_546,_547,_548){return hub.subscribe(_546,lang.hitch(_547,_548));},publish:function(_549,args){return hub.publish.apply(hub,[_549].concat(args));},connectPublisher:function(_54a,obj,_54b){var pf=function(){_540.publish(_54a,arguments);};return _54b?_540.connect(obj,_54b,pf):_540.connect(obj,pf);},isCopyKey:function(e){return e[_532];}};_540.unsubscribe=_540.disconnect;1&&lang.mixin(dojo,_540);return _540;});},"dojo/errors/CancelError":function(){define(["./create"],function(_54c){return _54c("CancelError",null,null,{dojoType:"cancel",log:false});});}}});(function(){var _54d=this.require;_54d({cache:{}});!_54d.async&&_54d(["dojo"]);_54d.boot&&_54d.apply(null,_54d.boot);})(); \ No newline at end of file
+(function(_1,_2){var _3=(function(){if(typeof _4!=="undefined"&&typeof _4!=="function"){return _4;}else{if(typeof window!=="undefined"){return window;}else{if(typeof self!=="undefined"){return self;}}}return this;})();var _5=function(){},_6=function(it){for(var p in it){return 0;}return 1;},_7={}.toString,_8=function(it){return _7.call(it)=="[object Function]";},_9=function(it){return _7.call(it)=="[object String]";},_a=function(it){return _7.call(it)=="[object Array]";},_b=function(_c,_d){if(_c){for(var i=0;i<_c.length;){_d(_c[i++]);}}},_e=function(_f,src){for(var p in src){_f[p]=src[p];}return _f;},_10=function(_11,_12){return _e(new Error(_11),{src:"dojoLoader",info:_12});},_13=1,uid=function(){return "_"+_13++;},req=function(_14,_15,_16){return _17(_14,_15,_16,0,req);},_4=_3,doc=_4.document,_18=doc&&doc.createElement("DiV"),has=req.has=function(_19){return _8(_1a[_19])?(_1a[_19]=_1a[_19](_4,doc,_18)):_1a[_19];},_1a=has.cache=_2.hasCache;if(_8(_1)){_1=_1(_3);}has.add=function(_1b,_1c,now,_1d){(_1a[_1b]===undefined||_1d)&&(_1a[_1b]=_1c);return now&&has(_1b);};0&&has.add("host-node",_1.has&&"host-node" in _1.has?_1.has["host-node"]:(typeof process=="object"&&process.versions&&process.versions.node&&process.versions.v8));if(0){require("./_base/configNode.js").config(_2);_2.loaderPatch.nodeRequire=require;}0&&has.add("host-rhino",_1.has&&"host-rhino" in _1.has?_1.has["host-rhino"]:(typeof load=="function"&&(typeof Packages=="function"||typeof Packages=="object")));if(0){for(var _1e=_1.baseUrl||".",arg,_1f=this.arguments,i=0;i<_1f.length;){arg=(_1f[i++]+"").split("=");if(arg[0]=="baseUrl"){_1e=arg[1];break;}}load(_1e+"/_base/configRhino.js");rhinoDojoConfig(_2,_1e,_1f);}has.add("host-webworker",((typeof WorkerGlobalScope!=="undefined")&&(self instanceof WorkerGlobalScope)));if(has("host-webworker")){_e(_2.hasCache,{"host-browser":0,"dom":0,"dojo-dom-ready-api":0,"dojo-sniff":0,"dojo-inject-api":1,"host-webworker":1,"dojo-guarantee-console":0});_2.loaderPatch={injectUrl:function(url,_20){try{importScripts(url);_20();}catch(e){console.error(e);}}};}for(var p in _1.has){has.add(p,_1.has[p],0,1);}var _21=1,_22=2,_23=3,_24=4,_25=5;if(0){_21="requested";_22="arrived";_23="not-a-module";_24="executing";_25="executed";}var _26=0,_27="sync",xd="xd",_28=[],_29=0,_2a=_5,_2b=_5,_2c;if(1){req.isXdUrl=_5;req.initSyncLoader=function(_2d,_2e,_2f){if(!_29){_29=_2d;_2a=_2e;_2b=_2f;}return {sync:_27,requested:_21,arrived:_22,nonmodule:_23,executing:_24,executed:_25,syncExecStack:_28,modules:_30,execQ:_31,getModule:_32,injectModule:_33,setArrived:_34,signal:_35,finishExec:_36,execModule:_37,dojoRequirePlugin:_29,getLegacyMode:function(){return _26;},guardCheckComplete:_38};};if(1||has("host-webworker")){var _39=location.protocol,_3a=location.host;req.isXdUrl=function(url){if(/^\./.test(url)){return false;}if(/^\/\//.test(url)){return true;}var _3b=url.match(/^([^\/\:]+\:)\/+([^\/]+)/);return _3b&&(_3b[1]!=_39||(_3a&&_3b[2]!=_3a));};1||has.add("dojo-xhr-factory",1);has.add("dojo-force-activex-xhr",1&&!doc.addEventListener&&window.location.protocol=="file:");has.add("native-xhr",typeof XMLHttpRequest!="undefined");if(has("native-xhr")&&!has("dojo-force-activex-xhr")){_2c=function(){return new XMLHttpRequest();};}else{for(var _3c=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],_3d,i=0;i<3;){try{_3d=_3c[i++];if(new ActiveXObject(_3d)){break;}}catch(e){}}_2c=function(){return new ActiveXObject(_3d);};}req.getXhr=_2c;has.add("dojo-gettext-api",1);req.getText=function(url,_3e,_3f){var xhr=_2c();xhr.open("GET",_40(url),false);xhr.send(null);if(xhr.status==200||(!location.host&&!xhr.status)){if(_3f){_3f(xhr.responseText,_3e);}}else{throw _10("xhrFailed",xhr.status);}return xhr.responseText;};}}else{req.async=1;}var _41=has("csp-restrictions")?function(){}:new Function("return eval(arguments[0]);");req.eval=function(_42,_43){return _41(_42+"\r\n//# sourceURL="+_43);};var _44={},_45="error",_35=req.signal=function(_46,_47){var _48=_44[_46];_b(_48&&_48.slice(0),function(_49){_49.apply(null,_a(_47)?_47:[_47]);});},on=req.on=function(_4a,_4b){var _4c=_44[_4a]||(_44[_4a]=[]);_4c.push(_4b);return {remove:function(){for(var i=0;i<_4c.length;i++){if(_4c[i]===_4b){_4c.splice(i,1);return;}}}};};var _4d=[],_4e={},_4f=[],_50={},map=req.map={},_51=[],_30={},_52="",_53={},_54="url:",_55={},_56={},_57=0;if(1){if(!has("foreign-loader")){var _58=function(_59,_5a){_5a=_5a!==false;var p,_5b,_5c,now,m;for(p in _55){_5b=_55[p];_5c=p.match(/^url\:(.+)/);if(_5c){_53[_54+_5d(_5c[1],_59)]=_5b;}else{if(p=="*now"){now=_5b;}else{if(p!="*noref"){m=_5e(p,_59,true);_53[m.mid]=_53[_54+m.url]=_5b;}}}}if(now){now(_5f(_59));}if(_5a){_55={};}};}var _60=function(s){return s.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,function(c){return "\\"+c;});},_61=function(map,_62){_62.splice(0,_62.length);for(var p in map){_62.push([p,map[p],new RegExp("^"+_60(p)+"(/|$)"),p.length]);}_62.sort(function(lhs,rhs){return rhs[3]-lhs[3];});return _62;},_63=function(_64,_65){_b(_64,function(_66){_65.push([_9(_66[0])?new RegExp("^"+_60(_66[0])+"$"):_66[0],_66[1]]);});},_67=function(_68){var _69=_68.name;if(!_69){_69=_68;_68={name:_69};}_68=_e({main:"main"},_68);_68.location=_68.location?_68.location:_69;if(_68.packageMap){map[_69]=_68.packageMap;}if(!_68.main.indexOf("./")){_68.main=_68.main.substring(2);}_50[_69]=_68;},_6a=[],_6b=function(_6c,_6d,_6e){for(var p in _6c){if(p=="waitSeconds"){req.waitms=(_6c[p]||0)*1000;}if(p=="cacheBust"){_52=_6c[p]?(_9(_6c[p])?_6c[p]:(new Date()).getTime()+""):"";}if(p=="baseUrl"||p=="combo"){req[p]=_6c[p];}if(1&&p=="async"){var _6f=_6c[p];req.legacyMode=_26=(_9(_6f)&&/sync|legacyAsync/.test(_6f)?_6f:(!_6f?_27:false));req.async=!_26;}if(_6c[p]!==_1a){req.rawConfig[p]=_6c[p];p!="has"&&has.add("config-"+p,_6c[p],0,_6d);}}if(!req.baseUrl){req.baseUrl="./";}if(!/\/$/.test(req.baseUrl)){req.baseUrl+="/";}for(p in _6c.has){has.add(p,_6c.has[p],0,_6d);}_b(_6c.packages,_67);for(var _70 in _6c.packagePaths){_b(_6c.packagePaths[_70],function(_71){var _72=_70+"/"+_71;if(_9(_71)){_71={name:_71};}_71.location=_72;_67(_71);});}_61(_e(map,_6c.map),_51);_b(_51,function(_73){_73[1]=_61(_73[1],[]);if(_73[0]=="*"){_51.star=_73;}});_61(_e(_4e,_6c.paths),_4f);_63(_6c.aliases,_4d);if(!has("foreign-loader")){if(_6d){_6a.push({config:_6c.config});}else{for(p in _6c.config){var _74=_32(p,_6e);_74.config=_e(_74.config||{},_6c.config[p]);}}if(_6c.cache){_58();_55=_6c.cache;_58(0,!!_6c.cache["*noref"]);}}_35("config",[_6c,req.rawConfig]);};if(has("dojo-cdn")||1){var _75=doc.getElementsByTagName("script"),i=0,_76,_77,src,_78;while(i<_75.length){_76=_75[i++];if((src=_76.getAttribute("src"))&&(_78=src.match(/(((.*)\/)|^)dojo\.js(\W|$)/i))){_77=_78[3]||"";_2.baseUrl=_2.baseUrl||_77;_57=_76;}if((src=(_76.getAttribute("data-dojo-config")||_76.getAttribute("djConfig")))){_56=req.eval("({ "+src+" })","data-dojo-config");_57=_76;}if(0){if((src=_76.getAttribute("data-main"))){_56.deps=_56.deps||[src];}}}}if(0){try{if(window.parent!=window&&window.parent.require){var doh=window.parent.require("doh");doh&&_e(_56,doh.testConfig);}}catch(e){}}req.rawConfig={};_6b(_2,1);if(has("dojo-cdn")){_50.dojo.location=_77;if(_77){_77+="/";}_50.dijit.location=_77+"../dijit/";_50.dojox.location=_77+"../dojox/";}_6b(_1,1);_6b(_56,1);}else{_4e=_2.paths;_4f=_2.pathsMapProg;_50=_2.packs;_4d=_2.aliases;_51=_2.mapProgs;_30=_2.modules;_53=_2.cache;_52=_2.cacheBust;req.rawConfig=_2;}if(!has("foreign-loader")){if(0){req.combo=req.combo||{add:_5};var _79=0,_7a=[],_7b=null;}var _7c=function(_7d){_38(function(){_b(_7d.deps,_33);if(0&&_79&&!_7b){_7b=setTimeout(function(){_79=0;_7b=null;req.combo.done(function(_7e,url){var _7f=function(){_80(0,_7e);_81();};_7a.push(_7e);_82=_7e;req.injectUrl(url,_7f,_7e);_82=0;},req);},0);}});},_17=function(a1,a2,a3,_83,_84){var _85,_86;if(_9(a1)){_85=_32(a1,_83,true);if(_85&&_85.executed){return _85.result;}throw _10("undefinedModule",a1);}if(!_a(a1)){_6b(a1,0,_83);a1=a2;a2=a3;}if(_a(a1)){if(!a1.length){a2&&a2();}else{_86="require*"+uid();for(var mid,_87=[],i=0;i<a1.length;){mid=a1[i++];_87.push(_32(mid,_83));}_85=_e(_88("",_86,0,""),{injected:_22,deps:_87,def:a2||_5,require:_83?_83.require:req,gc:1});_30[_85.mid]=_85;_7c(_85);var _89=_8a&&_26!=_27;_38(function(){_37(_85,_89);});if(!_85.executed){_31.push(_85);}_81();}}return _84;},_5f=function(_8b){if(!_8b){return req;}var _8c=_8b.require;if(!_8c){_8c=function(a1,a2,a3){return _17(a1,a2,a3,_8b,_8c);};_8b.require=_e(_8c,req);_8c.module=_8b;_8c.toUrl=function(_8d){return _5d(_8d,_8b);};_8c.toAbsMid=function(mid){return _bc(mid,_8b);};if(0){_8c.undef=function(mid){req.undef(mid,_8b);};}if(1){_8c.syncLoadNls=function(mid){var _8e=_5e(mid,_8b),_8f=_30[_8e.mid];if(!_8f||!_8f.executed){_90=_53[_8e.mid]||_53[_54+_8e.url];if(_90){_91(_90);_8f=_30[_8e.mid];}}return _8f&&_8f.executed&&_8f.result;};}}return _8c;},_31=[],_92=[],_93={},_94=function(_95){_95.injected=_21;_93[_95.mid]=1;if(_95.url){_93[_95.url]=_95.pack||1;}_96();},_34=function(_97){_97.injected=_22;delete _93[_97.mid];if(_97.url){delete _93[_97.url];}if(_6(_93)){_98();1&&_26==xd&&(_26=_27);}},_99=req.idle=function(){return !_92.length&&_6(_93)&&!_31.length&&!_8a;};}var _9a=function(_9b,map){if(map){for(var i=0;i<map.length;i++){if(map[i][2].test(_9b)){return map[i];}}}return 0;},_9c=function(_9d){var _9e=[],_9f,_a0;_9d=_9d.replace(/\\/g,"/").split("/");while(_9d.length){_9f=_9d.shift();if(_9f==".."&&_9e.length&&_a0!=".."){_9e.pop();_a0=_9e[_9e.length-1];}else{if(_9f!="."){_9e.push(_a0=_9f);}}}return _9e.join("/");},_88=function(pid,mid,_a1,url){if(1){var xd=req.isXdUrl(url);return {pid:pid,mid:mid,pack:_a1,url:url,executed:0,def:0,isXd:xd,isAmd:!!(xd||(_50[pid]&&_50[pid].isAmd))};}else{return {pid:pid,mid:mid,pack:_a1,url:url,executed:0,def:0};}},_a2=function(mid,_a3,_a4,_a5,_a6,_a7,_a8,_a9,_aa,_ab){var pid,_ac,_ad,_ae,url,_af,_b0,_b1;_b1=mid;_b0=/^\./.test(mid);if(/(^\/)|(\:)|(\.js$)/.test(mid)||(_b0&&!_a3)){return _88(0,mid,0,mid);}else{mid=_9c(_b0?(_a3.mid+"/../"+mid):mid);if(/^\./.test(mid)){throw _10("irrationalPath",mid);}if(!_ab&&!_b0&&_a7.star){_ae=_9a(mid,_a7.star[1]);}if(!_ae&&_a3){_ae=_9a(_a3.mid,_a7);_ae=_ae&&_9a(mid,_ae[1]);}if(_ae){mid=_ae[1]+mid.substring(_ae[3]);}_78=mid.match(/^([^\/]+)(\/(.+))?$/);pid=_78?_78[1]:"";if((_ac=_a4[pid])){mid=pid+"/"+(_ad=(_78[3]||_ac.main));}else{pid="";}var _b2=0,_b3=0;_b(_a9,function(_b4){var _b5=mid.match(_b4[0]);if(_b5&&_b5.length>_b2){_b3=_8(_b4[1])?mid.replace(_b4[0],_b4[1]):_b4[1];}});if(_b3){return _a2(_b3,0,_a4,_a5,_a6,_a7,_a8,_a9,_aa);}_af=_a5[mid];if(_af){return _aa?_88(_af.pid,_af.mid,_af.pack,_af.url):_a5[mid];}}_ae=_9a(mid,_a8);if(_ae){url=_ae[1]+mid.substring(_ae[3]);}else{if(pid){url=(_ac.location.slice(-1)==="/"?_ac.location.slice(0,-1):_ac.location)+"/"+_ad;}else{if(has("config-tlmSiblingOfDojo")){url="../"+mid;}else{url=mid;}}}if(!(/(^\/)|(\:)/.test(url))){url=_a6+url;}url+=".js";return _88(pid,mid,_ac,_9c(url));},_5e=function(mid,_b6,_b7){return _a2(mid,_b6,_50,_30,req.baseUrl,_51,_4f,_4d,undefined,_b7);};if(!has("foreign-loader")){var _b8=function(_b9,_ba,_bb){return _b9.normalize?_b9.normalize(_ba,function(mid){return _bc(mid,_bb);}):_bc(_ba,_bb);},_bd=0,_32=function(mid,_be,_bf){var _c0,_c1,_c2,_c3;_c0=mid.match(/^(.+?)\!(.*)$/);if(_c0){_c1=_32(_c0[1],_be,_bf);if(1&&_26==_27&&!_c1.executed){_33(_c1);if(_c1.injected===_22&&!_c1.executed){_38(function(){_37(_c1);});}if(_c1.executed){_c4(_c1);}else{_31.unshift(_c1);}}if(_c1.executed===_25&&!_c1.load){_c4(_c1);}if(_c1.load){_c2=_b8(_c1,_c0[2],_be);mid=(_c1.mid+"!"+(_c1.dynamic?++_bd+"!":"")+_c2);}else{_c2=_c0[2];mid=_c1.mid+"!"+(++_bd)+"!waitingForPlugin";}_c3={plugin:_c1,mid:mid,req:_5f(_be),prid:_c2};}else{_c3=_5e(mid,_be);}return _30[_c3.mid]||(!_bf&&(_30[_c3.mid]=_c3));};}var _bc=req.toAbsMid=function(mid,_c5){return _5e(mid,_c5).mid;},_5d=req.toUrl=function(_c6,_c7){var _c8=_5e(_c6+"/x",_c7),url=_c8.url;return _40(_c8.pid===0?_c6:url.substring(0,url.length-5));};if(!has("foreign-loader")){var _c9={injected:_22,executed:_25,def:_23,result:_23},_ca=function(mid){return _30[mid]=_e({mid:mid},_c9);},_cb=_ca("require"),_cc=_ca("exports"),_cd=_ca("module"),_ce=function(_cf,_d0){req.trace("loader-run-factory",[_cf.mid]);var _d1=_cf.def,_d2;1&&_28.unshift(_cf);if(has("config-dojo-loader-catches")){try{_d2=_8(_d1)?_d1.apply(null,_d0):_d1;}catch(e){_35(_45,_cf.result=_10("factoryThrew",[_cf,e]));}}else{_d2=_8(_d1)?_d1.apply(null,_d0):_d1;}_cf.result=_d2===undefined&&_cf.cjs?_cf.cjs.exports:_d2;1&&_28.shift(_cf);},_d3={},_d4=0,_c4=function(_d5){var _d6=_d5.result;_d5.dynamic=_d6.dynamic;_d5.normalize=_d6.normalize;_d5.load=_d6.load;return _d5;},_d7=function(_d8){var map={};_b(_d8.loadQ,function(_d9){var _da=_b8(_d8,_d9.prid,_d9.req.module),mid=_d8.dynamic?_d9.mid.replace(/waitingForPlugin$/,_da):(_d8.mid+"!"+_da),_db=_e(_e({},_d9),{mid:mid,prid:_da,injected:0});if(!_30[mid]||!_30[mid].injected){_ed(_30[mid]=_db);}map[_d9.mid]=_30[mid];_34(_d9);delete _30[_d9.mid];});_d8.loadQ=0;var _dc=function(_dd){for(var _de,_df=_dd.deps||[],i=0;i<_df.length;i++){_de=map[_df[i].mid];if(_de){_df[i]=_de;}}};for(var p in _30){_dc(_30[p]);}_b(_31,_dc);},_36=function(_e0){req.trace("loader-finish-exec",[_e0.mid]);_e0.executed=_25;_e0.defOrder=_d4++;1&&_b(_e0.provides,function(cb){cb();});if(_e0.loadQ){_c4(_e0);_d7(_e0);}for(i=0;i<_31.length;){if(_31[i]===_e0){_31.splice(i,1);}else{i++;}}if(/^require\*/.test(_e0.mid)){delete _30[_e0.mid];}},_e1=[],_37=function(_e2,_e3){if(_e2.executed===_24){req.trace("loader-circular-dependency",[_e1.concat(_e2.mid).join("->")]);return (!_e2.def||_e3)?_d3:(_e2.cjs&&_e2.cjs.exports);}if(!_e2.executed){if(!_e2.def){return _d3;}var mid=_e2.mid,_e4=_e2.deps||[],arg,_e5,_e6=[],i=0;if(0){_e1.push(mid);req.trace("loader-exec-module",["exec",_e1.length,mid]);}_e2.executed=_24;while((arg=_e4[i++])){_e5=((arg===_cb)?_5f(_e2):((arg===_cc)?_e2.cjs.exports:((arg===_cd)?_e2.cjs:_37(arg,_e3))));if(_e5===_d3){_e2.executed=0;req.trace("loader-exec-module",["abort",mid]);0&&_e1.pop();return _d3;}_e6.push(_e5);}_ce(_e2,_e6);_36(_e2);0&&_e1.pop();}return _e2.result;},_8a=0,_38=function(_e7){try{_8a++;_e7();}catch(e){throw e;}finally{_8a--;}if(_99()){_35("idle",[]);}},_81=function(){if(_8a){return;}_38(function(){_2a();for(var _e8,_e9,i=0;i<_31.length;){_e8=_d4;_e9=_31[i];_37(_e9);if(_e8!=_d4){_2a();i=0;}else{i++;}}});};}var _40=typeof _1.fixupUrl=="function"?_1.fixupUrl:function(url){url+="";return url+(_52?((/\?/.test(url)?"&":"?")+_52):"");};if(0){req.undef=function(_ea,_eb){var _ec=_32(_ea,_eb);_34(_ec);_e(_ec,{def:0,executed:0,injected:0,node:0,load:0});};}if(1){if(has("dojo-loader-eval-hint-url")===undefined){has.add("dojo-loader-eval-hint-url",1);}var _ed=function(_ee){var _ef=_ee.plugin;if(_ef.executed===_25&&!_ef.load){_c4(_ef);}var _f0=function(def){_ee.result=def;_34(_ee);_36(_ee);_81();};if(_ef.load){_ef.load(_ee.prid,_ee.req,_f0);}else{if(_ef.loadQ){_ef.loadQ.push(_ee);}else{_ef.loadQ=[_ee];_31.unshift(_ef);_33(_ef);}}},_90=0,_82=0,_f1=0,_91=function(_f2,_f3){if(has("config-stripStrict")){_f2=_f2.replace(/(["'])use strict\1/g,"");}_f1=1;if(has("config-dojo-loader-catches")){try{if(_f2===_90){_90.call(null);}else{req.eval(_f2,has("dojo-loader-eval-hint-url")?_f3.url:_f3.mid);}}catch(e){_35(_45,_10("evalModuleThrew",_f3));}}else{if(_f2===_90){_90.call(null);}else{req.eval(_f2,has("dojo-loader-eval-hint-url")?_f3.url:_f3.mid);}}_f1=0;},_33=function(_f4){var mid=_f4.mid,url=_f4.url;if(_f4.executed||_f4.injected||_93[mid]||(_f4.url&&((_f4.pack&&_93[_f4.url]===_f4.pack)||_93[_f4.url]==1))){return;}_94(_f4);if(0){var _f5=0;if(_f4.plugin&&_f4.plugin.isCombo){req.combo.add(_f4.plugin.mid,_f4.prid,0,req);_f5=1;}else{if(!_f4.plugin){_f5=req.combo.add(0,_f4.mid,_f4.url,req);}}if(_f5){_79=1;return;}}if(_f4.plugin){_ed(_f4);return;}var _f6=function(){_80(_f4);if(_f4.injected!==_22){if(has("dojo-enforceDefine")){_35(_45,_10("noDefine",_f4));return;}_34(_f4);_e(_f4,_c9);req.trace("loader-define-nonmodule",[_f4.url]);}if(1&&_26){!_28.length&&_81();}else{_81();}};_90=_53[mid]||_53[_54+_f4.url];if(_90){req.trace("loader-inject",["cache",_f4.mid,url]);_91(_90,_f4);_f6();return;}if(1&&_26){if(_f4.isXd){_26==_27&&(_26=xd);}else{if(_f4.isAmd&&_26!=_27){}else{var _f7=function(_f8){if(_26==_27){_28.unshift(_f4);_91(_f8,_f4);_28.shift();_80(_f4);if(!_f4.cjs){_34(_f4);_36(_f4);}if(_f4.finish){var _f9=mid+"*finish",_fa=_f4.finish;delete _f4.finish;def(_f9,["dojo",("dojo/require!"+_fa.join(",")).replace(/\./g,"/")],function(_fb){_b(_fa,function(mid){_fb.require(mid);});});_31.unshift(_32(_f9));}_f6();}else{_f8=_2b(_f4,_f8);if(_f8){_91(_f8,_f4);_f6();}else{_82=_f4;req.injectUrl(_40(url),_f6,_f4);_82=0;}}};req.trace("loader-inject",["xhr",_f4.mid,url,_26!=_27]);if(has("config-dojo-loader-catches")){try{req.getText(url,_26!=_27,_f7);}catch(e){_35(_45,_10("xhrInjectFailed",[_f4,e]));}}else{req.getText(url,_26!=_27,_f7);}return;}}}req.trace("loader-inject",["script",_f4.mid,url]);_82=_f4;req.injectUrl(_40(url),_f6,_f4);_82=0;},_fc=function(_fd,_fe,def){req.trace("loader-define-module",[_fd.mid,_fe]);if(0&&_fd.plugin&&_fd.plugin.isCombo){_fd.result=_8(def)?def():def;_34(_fd);_36(_fd);return _fd;}var mid=_fd.mid;if(_fd.injected===_22){_35(_45,_10("multipleDefine",_fd));return _fd;}_e(_fd,{deps:_fe,def:def,cjs:{id:_fd.mid,uri:_fd.url,exports:(_fd.result={}),setExports:function(_ff){_fd.cjs.exports=_ff;},config:function(){return _fd.config;}}});for(var i=0;_fe[i];i++){_fe[i]=_32(_fe[i],_fd);}if(1&&_26&&!_93[mid]){_7c(_fd);_31.push(_fd);_81();}_34(_fd);if(!_8(def)&&!_fe.length){_fd.result=def;_36(_fd);}return _fd;},_80=function(_100,mids){var _101=[],_102,args;while(_92.length){args=_92.shift();mids&&(args[0]=mids.shift());_102=(args[0]&&_32(args[0]))||_100;_101.push([_102,args[1],args[2]]);}_58(_100);_b(_101,function(args){_7c(_fc.apply(null,args));});};}var _103=0,_98=_5,_96=_5;if(1){_98=function(){_103&&clearTimeout(_103);_103=0;};_96=function(){_98();if(req.waitms){_103=_4.setTimeout(function(){_98();_35(_45,_10("timeout",_93));},req.waitms);}};}if(1){has.add("ie-event-behavior",doc.attachEvent&&typeof Windows==="undefined"&&(typeof opera==="undefined"||opera.toString()!="[object Opera]"));}if(1&&(1||1)){var _104=function(node,_105,_106,_107){if(!has("ie-event-behavior")){node.addEventListener(_105,_107,false);return function(){node.removeEventListener(_105,_107,false);};}else{node.attachEvent(_106,_107);return function(){node.detachEvent(_106,_107);};}},_108=_104(window,"load","onload",function(){req.pageLoaded=1;try{doc.readyState!="complete"&&(doc.readyState="complete");}catch(e){}_108();});if(1){var _75=doc.getElementsByTagName("script"),i=0,_76;while(!_57){if(!/^dojo/.test((_76=_75[i++])&&_76.type)){_57=_76;}}req.injectUrl=function(url,_109,_10a){var node=_10a.node=doc.createElement("script"),_10b=function(e){e=e||window.event;var node=e.target||e.srcElement;if(e.type==="load"||/complete|loaded/.test(node.readyState)){_10c();_10d();_109&&_109();}},_10c=_104(node,"load","onreadystatechange",_10b),_10d=_104(node,"error","onerror",function(e){_10c();_10d();_35(_45,_10("scriptError: "+url,[url,e]));});node.type="text/javascript";node.charset="utf-8";node.src=url;_57.parentNode.insertBefore(node,_57);return node;};}}if(1){req.log=function(){try{for(var i=0;i<arguments.length;i++){}}catch(e){}};}else{req.log=_5;}if(0){var _10e=req.trace=function(_10f,args){if(_10e.on&&_10e.group[_10f]){_35("trace",[_10f,args]);for(var arg,dump=[],text="trace:"+_10f+(args.length?(":"+args[0]):""),i=1;i<args.length;){arg=args[i++];if(_9(arg)){text+=", "+arg;}else{dump.push(arg);}}req.log(text);dump.length&&dump.push(".");req.log.apply(req,dump);}};_e(_10e,{on:1,group:{},set:function(_110,_111){if(_9(_110)){_10e.group[_110]=_111;}else{_e(_10e.group,_110);}}});_10e.set(_e(_e(_e({},_2.trace),_1.trace),_56.trace));on("config",function(_112){_112.trace&&_10e.set(_112.trace);});}else{req.trace=_5;}if(!has("foreign-loader")){var def=function(mid,_113,_114){var _115=arguments.length,_116=["require","exports","module"],args=[0,mid,_113];if(_115==1){args=[0,(_8(mid)?_116:[]),mid];}else{if(_115==2&&_9(mid)){args=[mid,(_8(_113)?_116:[]),_113];}else{if(_115==3){args=[mid,_113,_114];}}}if(0&&args[1]===_116){args[2].toString().replace(/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,"").replace(/require\(["']([\w\!\-_\.\/]+)["']\)/g,function(_117,dep){args[1].push(dep);});}req.trace("loader-define",args.slice(0,2));var _118=args[0]&&_32(args[0]),_119;if(_118&&!_93[_118.mid]){_7c(_fc(_118,args[1],args[2]));}else{if(!has("ie-event-behavior")||!1||_f1){_92.push(args);}else{_118=_118||_82;if(!_118){for(mid in _93){_119=_30[mid];if(_119&&_119.node&&_119.node.readyState==="interactive"){_118=_119;break;}}if(0&&!_118){for(var i=0;i<_7a.length;i++){_118=_7a[i];if(_118.node&&_118.node.readyState==="interactive"){break;}_118=0;}}}if(0&&_a(_118)){_7c(_fc(_32(_118.shift()),args[1],args[2]));if(!_118.length){_7a.splice(i,1);}}else{if(_118){_58(_118);_7c(_fc(_118,args[1],args[2]));}else{_35(_45,_10("ieDefineFailed",args[0]));}}_81();}}};def.amd={vendor:"dojotoolkit.org"};if(0){req.def=def;}}else{var def=_5;}_e(_e(req,_2.loaderPatch),_1.loaderPatch);on(_45,function(arg){try{console.error(arg);if(arg instanceof Error){for(var p in arg){}}}catch(e){}});_e(req,{uid:uid,cache:_53,packs:_50});if(0){_e(req,{paths:_4e,aliases:_4d,modules:_30,legacyMode:_26,execQ:_31,defQ:_92,waiting:_93,packs:_50,mapProgs:_51,pathsMapProg:_4f,listenerQueues:_44,computeMapProg:_61,computeAliases:_63,runMapProg:_9a,compactPath:_9c,getModuleInfo:_a2});}if(_4.define){if(1){_35(_45,_10("defineAlreadyDefined",0));}return;}else{_4.define=def;_4.require=req;if(0){require=req;}}if(0&&req.combo&&req.combo.plugins){var _11a=req.combo.plugins,_11b;for(_11b in _11a){_e(_e(_32(_11b),_11a[_11b]),{isCombo:1,executed:"executed",load:1});}}if(1&&!has("foreign-loader")){_b(_6a,function(c){_6b(c);});var _11c=_56.deps||_1.deps||_2.deps,_11d=_56.callback||_1.callback||_2.callback;req.boot=(_11c||_11d)?[_11c||[],_11d]:0;}if(!1){!req.async&&req(["dojo"]);req.boot&&req.apply(null,req.boot);}})(function(_11e){return _11e.dojoConfig||_11e.djConfig||_11e.require||{};},{async:0,hasCache:{"config-selectorEngine":"acme","config-tlmSiblingOfDojo":1,"dojo-built":1,"dojo-loader":1,dom:1,"host-browser":1},packages:[{location:"../dijit",name:"dijit"},{location:".",name:"dojo"}]});require({cache:{"dojo/main":function(){define(["./_base/kernel","./has","require","./sniff","./_base/lang","./_base/array","./_base/config","./ready","./_base/declare","./_base/connect","./_base/Deferred","./_base/json","./_base/Color","./has!dojo-firebug?./_firebug/firebug","./_base/browser","./_base/loader"],function(_11f,has,_120,_121,lang,_122,_123,_124){if(_123.isDebug){_120(["./_firebug/firebug"]);}1||has.add("dojo-config-require",1);if(1){var deps=_123.require;if(deps){deps=_122.map(lang.isArray(deps)?deps:[deps],function(item){return item.replace(/\./g,"/");});if(_11f.isAsync){_120(deps);}else{_124(1,function(){_120(deps);});}}}return _11f;});},"dojo/_base/kernel":function(){define(["../global","../has","./config","require","module"],function(_125,has,_126,_127,_128){var i,p,_129={},_12a={},dojo={config:_126,global:_125,dijit:_129,dojox:_12a};var _12b={dojo:["dojo",dojo],dijit:["dijit",_129],dojox:["dojox",_12a]},_12c=(_127.map&&_127.map[_128.id.match(/[^\/]+/)[0]]),item;for(p in _12c){if(_12b[p]){_12b[p][0]=_12c[p];}else{_12b[p]=[_12c[p],{}];}}for(p in _12b){item=_12b[p];item[1]._scopeName=item[0];if(!_126.noGlobals){_125[item[0]]=item[1];}}dojo.scopeMap=_12b;dojo.baseUrl=dojo.config.baseUrl=_127.baseUrl;dojo.isAsync=!1||_127.async;dojo.locale=_126.locale;var rev="$Rev:$".match(/[0-9a-f]{7,}/);dojo.version={major:1,minor:16,patch:4,flag:"",revision:rev?rev[0]:NaN,toString:function(){var v=dojo.version;return v.major+"."+v.minor+"."+v.patch+v.flag+" ("+v.revision+")";}};1||has.add("extend-dojo",1);if(!has("csp-restrictions")){(Function("d","d.eval = function(){return d.global.eval ? d.global.eval(arguments[0]) : eval(arguments[0]);}"))(dojo);}if(0){dojo.exit=function(_12d){quit(_12d);};}else{dojo.exit=function(){};}if(!has("host-webworker")){1||has.add("dojo-guarantee-console",1);}if(1){has.add("console-as-object",function(){return Function.prototype.bind&&console&&typeof console.log==="object";});typeof console!="undefined"||(console={});var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var tn;i=0;while((tn=cn[i++])){if(!console[tn]){(function(){var tcn=tn+"";console[tcn]=("log" in console)?function(){var a=Array.prototype.slice.call(arguments);a.unshift(tcn+":");console["log"](a.join(" "));}:function(){};console[tcn]._fake=true;})();}else{if(has("console-as-object")){console[tn]=Function.prototype.bind.call(console[tn],console);}}}}has.add("dojo-debug-messages",!!_126.isDebug);dojo.deprecated=dojo.experimental=function(){};if(has("dojo-debug-messages")){dojo.deprecated=function(_12e,_12f,_130){var _131="DEPRECATED: "+_12e;if(_12f){_131+=" "+_12f;}if(_130){_131+=" -- will be removed in version: "+_130;}console.warn(_131);};dojo.experimental=function(_132,_133){var _134="EXPERIMENTAL: "+_132+" -- APIs subject to change without notice.";if(_133){_134+=" "+_133;}console.warn(_134);};}1||has.add("dojo-modulePaths",1);if(1){if(_126.modulePaths){dojo.deprecated("dojo.modulePaths","use paths configuration");var _135={};for(p in _126.modulePaths){_135[p.replace(/\./g,"/")]=_126.modulePaths[p];}_127({paths:_135});}}1||has.add("dojo-moduleUrl",1);if(1){dojo.moduleUrl=function(_136,url){dojo.deprecated("dojo.moduleUrl()","use require.toUrl","2.0");var _137=null;if(_136){_137=_127.toUrl(_136.replace(/\./g,"/")+(url?("/"+url):"")+"/*.*").replace(/\/\*\.\*/,"")+(url?"":"/");}return _137;};}dojo._hasResource={};return dojo;});},"dojo/global":function(){define(function(){if(typeof global!=="undefined"&&typeof global!=="function"){return global;}else{if(typeof window!=="undefined"){return window;}else{if(typeof self!=="undefined"){return self;}}}return this;});},"dojo/has":function(){define(["./global","require","module"],function(_138,_139,_13a){var has=_139.has||function(){};if(!1){var _13b=typeof window!="undefined"&&typeof location!="undefined"&&typeof document!="undefined"&&window.location==location&&window.document==document,doc=_13b&&document,_13c=doc&&doc.createElement("DiV"),_13d=(_13a.config&&_13a.config())||{};has=function(name){return typeof _13d[name]=="function"?(_13d[name]=_13d[name](_138,doc,_13c)):_13d[name];};has.cache=_13d;has.add=function(name,test,now,_13e){(typeof _13d[name]=="undefined"||_13e)&&(_13d[name]=test);return now&&has(name);};1||has.add("host-browser",_13b);0&&has.add("host-node",(typeof process=="object"&&process.versions&&process.versions.node&&process.versions.v8));0&&has.add("host-rhino",(typeof load=="function"&&(typeof Packages=="function"||typeof Packages=="object")));1||has.add("dom",_13b);1||has.add("dojo-dom-ready-api",1);1||has.add("dojo-sniff",1);}if(1){has.add("dom-addeventlistener",!!document.addEventListener);has.add("touch","ontouchstart" in document||("onpointerdown" in document&&navigator.maxTouchPoints>0)||window.navigator.msMaxTouchPoints);has.add("touch-events","ontouchstart" in document);has.add("pointer-events","pointerEnabled" in window.navigator?window.navigator.pointerEnabled:"PointerEvent" in window);has.add("MSPointer",window.navigator.msPointerEnabled);has.add("touch-action",has("touch")&&has("pointer-events"));has.add("device-width",screen.availWidth||innerWidth);var form=document.createElement("form");has.add("dom-attributes-explicit",form.attributes.length==0);has.add("dom-attributes-specified-flag",form.attributes.length>0&&form.attributes.length<40);}has.clearElement=function(_13f){_13f.innerHTML="";return _13f;};has.normalize=function(id,_140){var _141=id.match(/[\?:]|[^:\?]*/g),i=0,get=function(skip){var term=_141[i++];if(term==":"){return 0;}else{if(_141[i++]=="?"){if(!skip&&has(term)){return get();}else{get(true);return get(skip);}}return term||0;}};id=get();return id&&_140(id);};has.load=function(id,_142,_143){if(id){_142([id],_143);}else{_143();}};return has;});},"dojo/_base/config":function(){define(["../global","../has","require"],function(_144,has,_145){var _146={};if(1){var src=_145.rawConfig,p;for(p in src){_146[p]=src[p];}}else{var _147=function(_148,_149,_14a){for(p in _148){p!="has"&&has.add(_149+p,_148[p],0,_14a);}};_146=1?_145.rawConfig:_144.dojoConfig||_144.djConfig||{};_147(_146,"config",1);_147(_146.has,"",1);}if(!_146.locale&&typeof navigator!="undefined"){var _14b=(navigator.languages&&navigator.languages.length)?navigator.languages[0]:(navigator.language||navigator.userLanguage);if(_14b){_146.locale=_14b.toLowerCase();}}return _146;});},"dojo/sniff":function(){define(["./has"],function(has){if(1){var n=navigator,dua=n.userAgent,dav=n.appVersion,tv=parseFloat(dav);has.add("air",dua.indexOf("AdobeAIR")>=0);has.add("wp",parseFloat(dua.split("Windows Phone")[1])||undefined);has.add("msapp",parseFloat(dua.split("MSAppHost/")[1])||undefined);has.add("khtml",dav.indexOf("Konqueror")>=0?tv:undefined);has.add("edge",parseFloat(dua.split("Edge/")[1])||undefined);has.add("opr",parseFloat(dua.split("OPR/")[1])||undefined);has.add("webkit",!has("wp")&&!has("edge")&&parseFloat(dua.split("WebKit/")[1])||undefined);has.add("chrome",!has("edge")&&!has("opr")&&parseFloat(dua.split("Chrome/")[1])||undefined);has.add("android",!has("wp")&&parseFloat(dua.split("Android ")[1])||undefined);has.add("safari",dav.indexOf("Safari")>=0&&!has("wp")&&!has("chrome")&&!has("android")&&!has("edge")&&!has("opr")?parseFloat(dav.split("Version/")[1]):undefined);has.add("mac",dav.indexOf("Macintosh")>=0);has.add("quirks",document.compatMode=="BackCompat");if(!has("wp")&&dua.match(/(iPhone|iPod|iPad)/)){var p=RegExp.$1.replace(/P/,"p");var v=dua.match(/OS ([\d_]+)/)?RegExp.$1:"1";var os=parseFloat(v.replace(/_/,".").replace(/_/g,""));has.add(p,os);has.add("ios",os);}has.add("bb",(dua.indexOf("BlackBerry")>=0||dua.indexOf("BB10")>=0)&&parseFloat(dua.split("Version/")[1])||undefined);has.add("trident",parseFloat(dav.split("Trident/")[1])||undefined);has.add("svg",typeof SVGAngle!=="undefined");if(!has("webkit")){if(dua.indexOf("Opera")>=0){has.add("opera",tv>=9.8?parseFloat(dua.split("Version/")[1])||tv:tv);}if(dua.indexOf("Gecko")>=0&&!has("wp")&&!has("khtml")&&!has("trident")&&!has("edge")){has.add("mozilla",tv);}if(has("mozilla")){has.add("ff",parseFloat(dua.split("Firefox/")[1]||dua.split("Minefield/")[1])||undefined);}if(document.all&&!has("opera")){var isIE=parseFloat(dav.split("MSIE ")[1])||undefined;var mode=document.documentMode;if(mode&&mode!=5&&Math.floor(isIE)!=mode){isIE=mode;}has.add("ie",isIE);}has.add("wii",typeof opera!="undefined"&&opera.wiiremote);}}return has;});},"dojo/_base/lang":function(){define(["./kernel","../has","../sniff"],function(dojo,has){has.add("bug-for-in-skips-shadowed",function(){for(var i in {toString:1}){return 0;}return 1;});var _14c=has("bug-for-in-skips-shadowed")?"hasOwnProperty.valueOf.isPrototypeOf.propertyIsEnumerable.toLocaleString.toString.constructor".split("."):[],_14d=_14c.length,_14e=function(_14f,_150,_151){if(!_151){if(_14f[0]&&dojo.scopeMap[_14f[0]]){_151=dojo.scopeMap[_14f.shift()][1];}else{_151=dojo.global;}}try{for(var i=0;i<_14f.length;i++){var p=_14f[i];if(!(p in _151)){if(_150){_151[p]={};}else{return;}}_151=_151[p];}return _151;}catch(e){}},opts=Object.prototype.toString,_152=function(obj,_153,_154){return (_154||[]).concat(Array.prototype.slice.call(obj,_153||0));},_155=/\{([^\}]+)\}/g;var lang={_extraNames:_14c,_mixin:function(dest,_156,_157){var name,s,i,_158={};for(name in _156){s=_156[name];if(!(name in dest)||(dest[name]!==s&&(!(name in _158)||_158[name]!==s))){dest[name]=_157?_157(s):s;}}if(has("bug-for-in-skips-shadowed")){if(_156){for(i=0;i<_14d;++i){name=_14c[i];s=_156[name];if(!(name in dest)||(dest[name]!==s&&(!(name in _158)||_158[name]!==s))){dest[name]=_157?_157(s):s;}}}}return dest;},mixin:function(dest,_159){if(!dest){dest={};}for(var i=1,l=arguments.length;i<l;i++){lang._mixin(dest,arguments[i]);}return dest;},setObject:function(name,_15a,_15b){var _15c=name.split("."),p=_15c.pop(),obj=_14e(_15c,true,_15b);return obj&&p?(obj[p]=_15a):undefined;},getObject:function(name,_15d,_15e){return !name?_15e:_14e(name.split("."),_15d,_15e);},exists:function(name,obj){return lang.getObject(name,false,obj)!==undefined;},isString:function(it){return (typeof it=="string"||it instanceof String);},isArray:Array.isArray||function(it){return opts.call(it)=="[object Array]";},isFunction:function(it){return opts.call(it)==="[object Function]";},isObject:function(it){return it!==undefined&&(it===null||typeof it=="object"||lang.isArray(it)||lang.isFunction(it));},isArrayLike:function(it){return !!it&&!lang.isString(it)&&!lang.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(lang.isArray(it)||isFinite(it.length));},isAlien:function(it){return it&&!lang.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));},extend:function(ctor,_15f){for(var i=1,l=arguments.length;i<l;i++){lang._mixin(ctor.prototype,arguments[i]);}return ctor;},_hitchArgs:function(_160,_161){var pre=lang._toArray(arguments,2);var _162=lang.isString(_161);return function(){var args=lang._toArray(arguments);var f=_162?(_160||dojo.global)[_161]:_161;return f&&f.apply(_160||this,pre.concat(args));};},hitch:function(_163,_164){if(arguments.length>2){return lang._hitchArgs.apply(dojo,arguments);}if(!_164){_164=_163;_163=null;}if(lang.isString(_164)){_163=_163||dojo.global;if(!_163[_164]){throw (["lang.hitch: scope[\"",_164,"\"] is null (scope=\"",_163,"\")"].join(""));}return function(){return _163[_164].apply(_163,arguments||[]);};}return !_163?_164:function(){return _164.apply(_163,arguments||[]);};},delegate:(function(){function TMP(){};return function(obj,_165){TMP.prototype=obj;var tmp=new TMP();TMP.prototype=null;if(_165){lang._mixin(tmp,_165);}return tmp;};})(),_toArray:has("ie")?(function(){function slow(obj,_166,_167){var arr=_167||[];for(var x=_166||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};return function(obj){return ((obj.item)?slow:_152).apply(this,arguments);};})():_152,partial:function(_168){var arr=[null];return lang.hitch.apply(dojo,arr.concat(lang._toArray(arguments)));},clone:function(src){if(!src||typeof src!="object"||lang.isFunction(src)){return src;}if(src.nodeType&&"cloneNode" in src){return src.cloneNode(true);}if(src instanceof Date){return new Date(src.getTime());}if(src instanceof RegExp){return new RegExp(src);}var r,i,l;if(lang.isArray(src)){r=[];for(i=0,l=src.length;i<l;++i){if(i in src){r[i]=lang.clone(src[i]);}}}else{r=src.constructor?new src.constructor():{};}return lang._mixin(r,src,lang.clone);},trim:String.prototype.trim?function(str){return str.trim();}:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");},replace:function(tmpl,map,_169){return tmpl.replace(_169||_155,lang.isFunction(map)?map:function(_16a,k){return lang.getObject(k,false,map);});}};1&&lang.mixin(dojo,lang);return lang;});},"dojo/_base/array":function(){define(["./kernel","../has","./lang"],function(dojo,has,lang){var _16b={},u;function _16c(fn){return _16b[fn]=new Function("item","index","array",fn);};function _16d(some){var _16e=!some;return function(a,fn,o){var i=0,l=a&&a.length||0,_16f;if(l&&typeof a=="string"){a=a.split("");}if(typeof fn=="string"){fn=_16b[fn]||_16c(fn);}if(o){for(;i<l;++i){_16f=!fn.call(o,a[i],i,a);if(some^_16f){return !_16f;}}}else{for(;i<l;++i){_16f=!fn(a[i],i,a);if(some^_16f){return !_16f;}}}return _16e;};};function _170(up){var _171=1,_172=0,_173=0;if(!up){_171=_172=_173=-1;}return function(a,x,from,last){if(last&&_171>0){return _174.lastIndexOf(a,x,from);}var l=a&&a.length||0,end=up?l+_173:_172,i;if(from===u){i=up?_172:l+_173;}else{if(from<0){i=l+from;if(i<0){i=_172;}}else{i=from>=l?l+_173:from;}}if(l&&typeof a=="string"){a=a.split("");}for(;i!=end;i+=_171){if(a[i]==x){return i;}}return -1;};};var _174={every:_16d(false),some:_16d(true),indexOf:_170(true),lastIndexOf:_170(false),forEach:function(arr,_175,_176){var i=0,l=arr&&arr.length||0;if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _175=="string"){_175=_16b[_175]||_16c(_175);}if(_176){for(;i<l;++i){_175.call(_176,arr[i],i,arr);}}else{for(;i<l;++i){_175(arr[i],i,arr);}}},map:function(arr,_177,_178,Ctr){var i=0,l=arr&&arr.length||0,out=new (Ctr||Array)(l);if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _177=="string"){_177=_16b[_177]||_16c(_177);}if(_178){for(;i<l;++i){out[i]=_177.call(_178,arr[i],i,arr);}}else{for(;i<l;++i){out[i]=_177(arr[i],i,arr);}}return out;},filter:function(arr,_179,_17a){var i=0,l=arr&&arr.length||0,out=[],_17b;if(l&&typeof arr=="string"){arr=arr.split("");}if(typeof _179=="string"){_179=_16b[_179]||_16c(_179);}if(_17a){for(;i<l;++i){_17b=arr[i];if(_179.call(_17a,_17b,i,arr)){out.push(_17b);}}}else{for(;i<l;++i){_17b=arr[i];if(_179(_17b,i,arr)){out.push(_17b);}}}return out;},clearCache:function(){_16b={};}};1&&lang.mixin(dojo,_174);return _174;});},"dojo/ready":function(){define(["./_base/kernel","./has","require","./domReady","./_base/lang"],function(dojo,has,_17c,_17d,lang){var _17e=0,_17f=[],_180=0,_181=function(){_17e=1;dojo._postLoad=dojo.config.afterOnLoad=true;_182();},_182=function(){if(_180){return;}_180=1;while(_17e&&(!_17d||_17d._Q.length==0)&&(_17c.idle?_17c.idle():true)&&_17f.length){var f=_17f.shift();try{f();}catch(e){e.info=e.message;if(_17c.signal){_17c.signal("error",e);}else{throw e;}}}_180=0;};_17c.on&&_17c.on("idle",_182);if(_17d){_17d._onQEmpty=_182;}var _183=dojo.ready=dojo.addOnLoad=function(_184,_185,_186){var _187=lang._toArray(arguments);if(typeof _184!="number"){_186=_185;_185=_184;_184=1000;}else{_187.shift();}_186=_186?lang.hitch.apply(dojo,_187):function(){_185();};_186.priority=_184;for(var i=0;i<_17f.length&&_184>=_17f[i].priority;i++){}_17f.splice(i,0,_186);_182();};1||has.add("dojo-config-addOnLoad",1);if(1){var dca=dojo.config.addOnLoad;if(dca){_183[(lang.isArray(dca)?"apply":"call")](dojo,dca);}}if(1&&dojo.config.parseOnLoad&&!dojo.isAsync){_183(99,function(){if(!dojo.parser){dojo.deprecated("Add explicit require(['dojo/parser']);","","2.0");_17c(["dojo/parser"]);}});}if(_17d){_17d(_181);}else{_181();}return _183;});},"dojo/domReady":function(){define(["./global","./has"],function(_188,has){var doc=document,_189={"loaded":1,"complete":1},_18a=typeof doc.readyState!="string",_18b=!!_189[doc.readyState],_18c=[],_18d;function _18e(_18f){_18c.push(_18f);if(_18b){_190();}};_18e.load=function(id,req,load){_18e(load);};_18e._Q=_18c;_18e._onQEmpty=function(){};if(_18a){doc.readyState="loading";}function _190(){if(_18d){return;}_18d=true;while(_18c.length){try{(_18c.shift())(doc);}catch(err){console.error(err,"in domReady callback",err.stack);}}_18d=false;_18e._onQEmpty();};if(!_18b){var _191=[],_192=function(evt){evt=evt||_188.event;if(_18b||(evt.type=="readystatechange"&&!_189[doc.readyState])){return;}if(_18a){doc.readyState="complete";}_18b=1;_190();},on=function(node,_193){node.addEventListener(_193,_192,false);_18c.push(function(){node.removeEventListener(_193,_192,false);});};if(!has("dom-addeventlistener")){on=function(node,_194){_194="on"+_194;node.attachEvent(_194,_192);_18c.push(function(){node.detachEvent(_194,_192);});};var div=doc.createElement("div");try{if(div.doScroll&&_188.frameElement===null){_191.push(function(){try{div.doScroll("left");return 1;}catch(e){}});}}catch(e){}}on(doc,"DOMContentLoaded");on(_188,"load");if("onreadystatechange" in doc){on(doc,"readystatechange");}else{if(!_18a){_191.push(function(){return _189[doc.readyState];});}}if(_191.length){var _195=function(){if(_18b){return;}var i=_191.length;while(i--){if(_191[i]()){_192("poller");return;}}setTimeout(_195,30);};_195();}}return _18e;});},"dojo/_base/declare":function(){define(["./kernel","../has","./lang"],function(dojo,has,lang){var mix=lang.mixin,op=Object.prototype,opts=op.toString,xtor,_196=0,_197="constructor";if(!has("csp-restrictions")){xtor=new Function;}else{xtor=function(){};}function err(msg,cls){throw new Error("declare"+(cls?" "+cls:"")+": "+msg);};function _198(_199,_19a){var _19b=[],_19c=[{cls:0,refs:[]}],_19d={},_19e=1,l=_199.length,i=0,j,lin,base,top,_19f,rec,name,refs;for(;i<l;++i){base=_199[i];if(!base){err("mixin #"+i+" is unknown. Did you use dojo.require to pull it in?",_19a);}else{if(opts.call(base)!="[object Function]"){err("mixin #"+i+" is not a callable constructor.",_19a);}}lin=base._meta?base._meta.bases:[base];top=0;for(j=lin.length-1;j>=0;--j){_19f=lin[j].prototype;if(!_19f.hasOwnProperty("declaredClass")){_19f.declaredClass="uniqName_"+(_196++);}name=_19f.declaredClass;if(!_19d.hasOwnProperty(name)){_19d[name]={count:0,refs:[],cls:lin[j]};++_19e;}rec=_19d[name];if(top&&top!==rec){rec.refs.push(top);++top.count;}top=rec;}++top.count;_19c[0].refs.push(top);}while(_19c.length){top=_19c.pop();_19b.push(top.cls);--_19e;while(refs=top.refs,refs.length==1){top=refs[0];if(!top||--top.count){top=0;break;}_19b.push(top.cls);--_19e;}if(top){for(i=0,l=refs.length;i<l;++i){top=refs[i];if(!--top.count){_19c.push(top);}}}}if(_19e){err("can't build consistent linearization",_19a);}base=_199[0];_19b[0]=base?base._meta&&base===_19b[_19b.length-base._meta.bases.length]?base._meta.bases.length:1:0;return _19b;};function _1a0(args,a,f,g){var name,_1a1,_1a2,_1a3,meta,base,_1a4,opf,pos,_1a5=this._inherited=this._inherited||{};if(typeof args==="string"){name=args;args=a;a=f;f=g;}if(typeof args==="function"){_1a3=args;args=a;a=f;}else{try{_1a3=args.callee;}catch(e){if(e instanceof TypeError){err("strict mode inherited() requires the caller function to be passed before arguments",this.declaredClass);}else{throw e;}}}name=name||_1a3.nom;if(!name){err("can't deduce a name to call inherited()",this.declaredClass);}f=g=0;meta=this.constructor._meta;_1a2=meta.bases;pos=_1a5.p;if(name!=_197){if(_1a5.c!==_1a3){pos=0;base=_1a2[0];meta=base._meta;if(meta.hidden[name]!==_1a3){_1a1=meta.chains;if(_1a1&&typeof _1a1[name]=="string"){err("calling chained method with inherited: "+name,this.declaredClass);}do{meta=base._meta;_1a4=base.prototype;if(meta&&(_1a4[name]===_1a3&&_1a4.hasOwnProperty(name)||meta.hidden[name]===_1a3)){break;}}while(base=_1a2[++pos]);pos=base?pos:-1;}}base=_1a2[++pos];if(base){_1a4=base.prototype;if(base._meta&&_1a4.hasOwnProperty(name)){f=_1a4[name];}else{opf=op[name];do{_1a4=base.prototype;f=_1a4[name];if(f&&(base._meta?_1a4.hasOwnProperty(name):f!==opf)){break;}}while(base=_1a2[++pos]);}}f=base&&f||op[name];}else{if(_1a5.c!==_1a3){pos=0;meta=_1a2[0]._meta;if(meta&&meta.ctor!==_1a3){_1a1=meta.chains;if(!_1a1||_1a1.constructor!=="manual"){err("calling chained constructor with inherited",this.declaredClass);}while(base=_1a2[++pos]){meta=base._meta;if(meta&&meta.ctor===_1a3){break;}}pos=base?pos:-1;}}while(base=_1a2[++pos]){meta=base._meta;f=meta?meta.ctor:base;if(f){break;}}f=base&&f;}_1a5.c=f;_1a5.p=pos;if(f){return a===true?f:f.apply(this,a||args);}};function _1a6(name,args,a){if(typeof name==="string"){if(typeof args==="function"){return this.__inherited(name,args,a,true);}return this.__inherited(name,args,true);}else{if(typeof name==="function"){return this.__inherited(name,args,true);}}return this.__inherited(name,true);};function _1a7(args,a1,a2,a3){var f=this.getInherited(args,a1,a2);if(f){return f.apply(this,a3||a2||a1||args);}};var _1a8=dojo.config.isDebug?_1a7:_1a0;function _1a9(cls){var _1aa=this.constructor._meta.bases;for(var i=0,l=_1aa.length;i<l;++i){if(_1aa[i]===cls){return true;}}return this instanceof cls;};function _1ab(_1ac,_1ad){for(var name in _1ad){if(name!=_197&&_1ad.hasOwnProperty(name)){_1ac[name]=_1ad[name];}}if(has("bug-for-in-skips-shadowed")){for(var _1ae=lang._extraNames,i=_1ae.length;i;){name=_1ae[--i];if(name!=_197&&_1ad.hasOwnProperty(name)){_1ac[name]=_1ad[name];}}}};function _1af(_1b0,_1b1){var name,t;for(name in _1b1){t=_1b1[name];if((t!==op[name]||!(name in op))&&name!=_197){if(opts.call(t)=="[object Function]"){t.nom=name;}_1b0[name]=t;}}if(has("bug-for-in-skips-shadowed")&&_1b1){for(var _1b2=lang._extraNames,i=_1b2.length;i;){name=_1b2[--i];t=_1b1[name];if((t!==op[name]||!(name in op))&&name!=_197){if(opts.call(t)=="[object Function]"){t.nom=name;}_1b0[name]=t;}}}return _1b0;};function _1b3(_1b4){_1b5.safeMixin(this.prototype,_1b4);return this;};function _1b6(_1b7,_1b8){if(!(_1b7 instanceof Array||typeof _1b7==="function")){_1b8=_1b7;_1b7=undefined;}_1b8=_1b8||{};_1b7=_1b7||[];return _1b5([this].concat(_1b7),_1b8);};function _1b9(_1ba,_1bb){return function(){var a=arguments,args=a,a0=a[0],f,i,m,l=_1ba.length,_1bc;if(!(this instanceof a.callee)){return _1bd(a);}if(_1bb&&(a0&&a0.preamble||this.preamble)){_1bc=new Array(_1ba.length);_1bc[0]=a;for(i=0;;){a0=a[0];if(a0){f=a0.preamble;if(f){a=f.apply(this,a)||a;}}f=_1ba[i].prototype;f=f.hasOwnProperty("preamble")&&f.preamble;if(f){a=f.apply(this,a)||a;}if(++i==l){break;}_1bc[i]=a;}}for(i=l-1;i>=0;--i){f=_1ba[i];m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,_1bc?_1bc[i]:a);}}f=this.postscript;if(f){f.apply(this,args);}};};function _1be(ctor,_1bf){return function(){var a=arguments,t=a,a0=a[0],f;if(!(this instanceof a.callee)){return _1bd(a);}if(_1bf){if(a0){f=a0.preamble;if(f){t=f.apply(this,t)||t;}}f=this.preamble;if(f){f.apply(this,t);}}if(ctor){ctor.apply(this,a);}f=this.postscript;if(f){f.apply(this,a);}};};function _1c0(_1c1){return function(){var a=arguments,i=0,f,m;if(!(this instanceof a.callee)){return _1bd(a);}for(;f=_1c1[i];++i){m=f._meta;f=m?m.ctor:f;if(f){f.apply(this,a);break;}}f=this.postscript;if(f){f.apply(this,a);}};};function _1c2(name,_1c3,_1c4){return function(){var b,m,f,i=0,step=1;if(_1c4){i=_1c3.length-1;step=-1;}for(;b=_1c3[i];i+=step){m=b._meta;f=(m?m.hidden:b.prototype)[name];if(f){f.apply(this,arguments);}}};};function _1c5(ctor){xtor.prototype=ctor.prototype;var t=new xtor;xtor.prototype=null;return t;};function _1bd(args){var ctor=args.callee,t=_1c5(ctor);ctor.apply(t,args);return t;};function _1b5(_1c6,_1c7,_1c8){if(typeof _1c6!="string"){_1c8=_1c7;_1c7=_1c6;_1c6="";}_1c8=_1c8||{};var _1c9,i,t,ctor,name,_1ca,_1cb,_1cc=1,_1cd=_1c7;if(opts.call(_1c7)=="[object Array]"){_1ca=_198(_1c7,_1c6);t=_1ca[0];_1cc=_1ca.length-t;_1c7=_1ca[_1cc];}else{_1ca=[0];if(_1c7){if(opts.call(_1c7)=="[object Function]"){t=_1c7._meta;_1ca=_1ca.concat(t?t.bases:_1c7);}else{err("base class is not a callable constructor.",_1c6);}}else{if(_1c7!==null){err("unknown base class. Did you use dojo.require to pull it in?",_1c6);}}}if(_1c7){for(i=_1cc-1;;--i){_1c9=_1c5(_1c7);if(!i){break;}t=_1ca[i];(t._meta?_1ab:mix)(_1c9,t.prototype);if(has("csp-restrictions")){ctor=function(){};}else{ctor=new Function;}ctor.superclass=_1c7;ctor.prototype=_1c9;_1c7=_1c9.constructor=ctor;}}else{_1c9={};}_1b5.safeMixin(_1c9,_1c8);t=_1c8.constructor;if(t!==op.constructor){t.nom=_197;_1c9.constructor=t;}for(i=_1cc-1;i;--i){t=_1ca[i]._meta;if(t&&t.chains){_1cb=mix(_1cb||{},t.chains);}}if(_1c9["-chains-"]){_1cb=mix(_1cb||{},_1c9["-chains-"]);}if(_1c7&&_1c7.prototype&&_1c7.prototype["-chains-"]){_1cb=mix(_1cb||{},_1c7.prototype["-chains-"]);}t=!_1cb||!_1cb.hasOwnProperty(_197);_1ca[0]=ctor=(_1cb&&_1cb.constructor==="manual")?_1c0(_1ca):(_1ca.length==1?_1be(_1c8.constructor,t):_1b9(_1ca,t));ctor._meta={bases:_1ca,hidden:_1c8,chains:_1cb,parents:_1cd,ctor:_1c8.constructor};ctor.superclass=_1c7&&_1c7.prototype;ctor.extend=_1b3;ctor.createSubclass=_1b6;ctor.prototype=_1c9;_1c9.constructor=ctor;_1c9.getInherited=_1a6;_1c9.isInstanceOf=_1a9;_1c9.inherited=_1a8;_1c9.__inherited=_1a0;if(_1c6){_1c9.declaredClass=_1c6;lang.setObject(_1c6,ctor);}if(_1cb){for(name in _1cb){if(_1c9[name]&&typeof _1cb[name]=="string"&&name!=_197){t=_1c9[name]=_1c2(name,_1ca,_1cb[name]==="after");t.nom=name;}}}return ctor;};dojo.safeMixin=_1b5.safeMixin=_1af;dojo.declare=_1b5;return _1b5;});},"dojo/_base/connect":function(){define(["./kernel","../on","../topic","../aspect","./event","../mouse","./sniff","./lang","../keys"],function(dojo,on,hub,_1ce,_1cf,_1d0,has,lang){has.add("events-keypress-typed",function(){var _1d1={charCode:0};try{_1d1=document.createEvent("KeyboardEvent");(_1d1.initKeyboardEvent||_1d1.initKeyEvent).call(_1d1,"keypress",true,true,null,false,false,false,false,9,3);}catch(e){}return _1d1.charCode==0&&!has("opera");});function _1d2(obj,_1d3,_1d4,_1d5,_1d6){_1d5=lang.hitch(_1d4,_1d5);if(!obj||!(obj.addEventListener||obj.attachEvent)){return _1ce.after(obj||dojo.global,_1d3,_1d5,true);}if(typeof _1d3=="string"&&_1d3.substring(0,2)=="on"){_1d3=_1d3.substring(2);}if(!obj){obj=dojo.global;}if(!_1d6){switch(_1d3){case "keypress":_1d3=_1d7;break;case "mouseenter":_1d3=_1d0.enter;break;case "mouseleave":_1d3=_1d0.leave;break;}}return on(obj,_1d3,_1d5,_1d6);};var _1d8={106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39,229:113};var _1d9=has("mac")?"metaKey":"ctrlKey";var _1da=function(evt,_1db){var faux=lang.mixin({},evt,_1db);_1dc(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};function _1dc(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;};var _1d7;if(has("events-keypress-typed")){var _1dd=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};_1d7=function(_1de,_1df){var _1e0=on(_1de,"keydown",function(evt){var k=evt.keyCode;var _1e1=(k!=13)&&k!=32&&(k!=27||!has("ie"))&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222)&&k!=229;if(_1e1||evt.ctrlKey){var c=_1e1?0:k;if(evt.ctrlKey){if(k==3||k==13){return _1df.call(evt.currentTarget,evt);}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=_1d8[c]||c;}}}}var faux=_1da(evt,{type:"keypress",faux:true,charCode:c});_1df.call(evt.currentTarget,faux);if(has("ie")){_1dd(evt,faux.keyCode);}}});var _1e2=on(_1de,"keypress",function(evt){var c=evt.charCode;c=c>=32?c:0;evt=_1da(evt,{charCode:c,faux:true});return _1df.call(this,evt);});return {remove:function(){_1e0.remove();_1e2.remove();}};};}else{if(has("opera")){_1d7=function(_1e3,_1e4){return on(_1e3,"keypress",function(evt){var c=evt.which;if(c==3){c=99;}c=c<32&&!evt.shiftKey?0:c;if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){c+=32;}return _1e4.call(this,_1da(evt,{charCode:c}));});};}else{_1d7=function(_1e5,_1e6){return on(_1e5,"keypress",function(evt){_1dc(evt);return _1e6.call(this,evt);});};}}var _1e7={_keypress:_1d7,connect:function(obj,_1e8,_1e9,_1ea,_1eb){var a=arguments,args=[],i=0;args.push(typeof a[0]=="string"?null:a[i++],a[i++]);var a1=a[i+1];args.push(typeof a1=="string"||typeof a1=="function"?a[i++]:null,a[i++]);for(var l=a.length;i<l;i++){args.push(a[i]);}return _1d2.apply(this,args);},disconnect:function(_1ec){if(_1ec){_1ec.remove();}},subscribe:function(_1ed,_1ee,_1ef){return hub.subscribe(_1ed,lang.hitch(_1ee,_1ef));},publish:function(_1f0,args){return hub.publish.apply(hub,[_1f0].concat(args));},connectPublisher:function(_1f1,obj,_1f2){var pf=function(){_1e7.publish(_1f1,arguments);};return _1f2?_1e7.connect(obj,_1f2,pf):_1e7.connect(obj,pf);},isCopyKey:function(e){return e[_1d9];}};_1e7.unsubscribe=_1e7.disconnect;1&&lang.mixin(dojo,_1e7);return _1e7;});},"dojo/on":function(){define(["./has!dom-addeventlistener?:./aspect","./_base/kernel","./sniff"],function(_1f3,dojo,has){"use strict";if(1){var _1f4=window.ScriptEngineMajorVersion;has.add("jscript",_1f4&&(_1f4()+ScriptEngineMinorVersion()/10));has.add("event-orientationchange",has("touch")&&!has("android"));has.add("event-stopimmediatepropagation",window.Event&&!!window.Event.prototype&&!!window.Event.prototype.stopImmediatePropagation);has.add("event-focusin",function(_1f5,doc,_1f6){return "onfocusin" in _1f6;});if(has("touch")){has.add("touch-can-modify-event-delegate",function(){var _1f7=function(){};_1f7.prototype=document.createEvent("MouseEvents");try{var _1f8=new _1f7;_1f8.target=null;return _1f8.target===null;}catch(e){return false;}});}}var on=function(_1f9,type,_1fa,_1fb){if(typeof _1f9.on=="function"&&typeof type!="function"&&!_1f9.nodeType){return _1f9.on(type,_1fa);}return on.parse(_1f9,type,_1fa,_1fc,_1fb,this);};on.pausable=function(_1fd,type,_1fe,_1ff){var _200;var _201=on(_1fd,type,function(){if(!_200){return _1fe.apply(this,arguments);}},_1ff);_201.pause=function(){_200=true;};_201.resume=function(){_200=false;};return _201;};on.once=function(_202,type,_203,_204){var _205=on(_202,type,function(){_205.remove();return _203.apply(this,arguments);});return _205;};on.parse=function(_206,type,_207,_208,_209,_20a){var _20b;if(type.call){return type.call(_20a,_206,_207);}if(type instanceof Array){_20b=type;}else{if(type.indexOf(",")>-1){_20b=type.split(/\s*,\s*/);}}if(_20b){var _20c=[];var i=0;var _20d;while(_20d=_20b[i++]){_20c.push(on.parse(_206,_20d,_207,_208,_209,_20a));}_20c.remove=function(){for(var i=0;i<_20c.length;i++){_20c[i].remove();}};return _20c;}return _208(_206,type,_207,_209,_20a);};var _20e=/^touch/;function _1fc(_20f,type,_210,_211,_212){var _213=type.match(/(.*):(.*)/);if(_213){type=_213[2];_213=_213[1];return on.selector(_213,type).call(_212,_20f,_210);}if(has("touch")){if(_20e.test(type)){_210=_214(_210);}if(!has("event-orientationchange")&&(type=="orientationchange")){type="resize";_20f=window;_210=_214(_210);}}if(_215){_210=_215(_210);}if(_20f.addEventListener){var _216=type in _217,_218=_216?_217[type]:type;_20f.addEventListener(_218,_210,_216);return {remove:function(){_20f.removeEventListener(_218,_210,_216);}};}type="on"+type;if(_219&&_20f.attachEvent){return _219(_20f,type,_210);}throw new Error("Target must be an event emitter");};on.matches=function(node,_21a,_21b,_21c,_21d){_21d=_21d&&(typeof _21d.matches=="function")?_21d:dojo.query;_21c=_21c!==false;if(node.nodeType!=1){node=node.parentNode;}while(!_21d.matches(node,_21a,_21b)){if(node==_21b||_21c===false||!(node=node.parentNode)||node.nodeType!=1){return false;}}return node;};on.selector=function(_21e,_21f,_220){return function(_221,_222){var _223=typeof _21e=="function"?{matches:_21e}:this,_224=_21f.bubble;function _225(_226){return on.matches(_226,_21e,_221,_220,_223);};if(_224){return on(_221,_224(_225),_222);}return on(_221,_21f,function(_227){var _228=_225(_227.target);if(_228){_227.selectorTarget=_228;return _222.call(_228,_227);}});};};function _229(){this.cancelable=false;this.defaultPrevented=true;};function _22a(){this.bubbles=false;};var _22b=[].slice,_22c=on.emit=function(_22d,type,_22e){var args=_22b.call(arguments,2);var _22f="on"+type;if("parentNode" in _22d){var _230=args[0]={};for(var i in _22e){_230[i]=_22e[i];}_230.preventDefault=_229;_230.stopPropagation=_22a;_230.target=_22d;_230.type=type;_22e=_230;}do{_22d[_22f]&&_22d[_22f].apply(_22d,args);}while(_22e&&_22e.bubbles&&(_22d=_22d.parentNode));return _22e&&_22e.cancelable&&_22e;};var _217=has("event-focusin")?{}:{focusin:"focus",focusout:"blur"};if(!has("event-stopimmediatepropagation")){var _231=function(){this.immediatelyStopped=true;this.modified=true;};var _215=function(_232){return function(_233){if(!_233.immediatelyStopped){_233.stopImmediatePropagation=_231;return _232.apply(this,arguments);}};};}if(has("dom-addeventlistener")){on.emit=function(_234,type,_235){if(_234.dispatchEvent&&document.createEvent){var _236=_234.ownerDocument||document;var _237=_236.createEvent("HTMLEvents");_237.initEvent(type,!!_235.bubbles,!!_235.cancelable);for(var i in _235){if(!(i in _237)){_237[i]=_235[i];}}return _234.dispatchEvent(_237)&&_237;}return _22c.apply(on,arguments);};}else{on._fixEvent=function(evt,_238){if(!evt){var w=_238&&(_238.ownerDocument||_238.document||_238).parentWindow||window;evt=w.event;}if(!evt){return evt;}try{if(_239&&evt.type==_239.type&&evt.srcElement==_239.target){evt=_239;}}catch(e){}if(!evt.target){evt.target=evt.srcElement;evt.currentTarget=(_238||evt.srcElement);if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}if(!evt.stopPropagation){evt.stopPropagation=_23a;evt.preventDefault=_23b;}switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;_23c(evt);break;}}return evt;};var _239,_23d=function(_23e){this.handle=_23e;};_23d.prototype.remove=function(){delete _dojoIEListeners_[this.handle];};var _23f=function(_240){return function(evt){evt=on._fixEvent(evt,this);var _241=_240.call(this,evt);if(evt.modified){if(!_239){setTimeout(function(){_239=null;});}_239=evt;}return _241;};};var _219=function(_242,type,_243){_243=_23f(_243);if(((_242.ownerDocument?_242.ownerDocument.parentWindow:_242.parentWindow||_242.window||window)!=top||has("jscript")<5.8)&&!has("config-_allow_leaks")){if(typeof _dojoIEListeners_=="undefined"){_dojoIEListeners_=[];}var _244=_242[type];if(!_244||!_244.listeners){var _245=_244;_244=Function("event","var callee = arguments.callee; for(var i = 0; i<callee.listeners.length; i++){var listener = _dojoIEListeners_[callee.listeners[i]]; if(listener){listener.call(this,event);}}");_244.listeners=[];_242[type]=_244;_244.global=this;if(_245){_244.listeners.push(_dojoIEListeners_.push(_245)-1);}}var _246;_244.listeners.push(_246=(_244.global._dojoIEListeners_.push(_243)-1));return new _23d(_246);}return _1f3.after(_242,type,_243,true);};var _23c=function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;};var _23a=function(){this.cancelBubble=true;};var _23b=on._preventDefault=function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){try{this.keyCode=0;}catch(e){}}this.defaultPrevented=true;this.returnValue=false;this.modified=true;};}if(has("touch")){var _247=function(){};var _248=window.orientation;var _214=function(_249){return function(_24a){var _24b=_24a.corrected;if(!_24b){var type=_24a.type;try{delete _24a.type;}catch(e){}if(_24a.type){if(has("touch-can-modify-event-delegate")){_247.prototype=_24a;_24b=new _247;}else{_24b={};for(var name in _24a){_24b[name]=_24a[name];}}_24b.preventDefault=function(){_24a.preventDefault();};_24b.stopPropagation=function(){_24a.stopPropagation();};}else{_24b=_24a;_24b.type=type;}_24a.corrected=_24b;if(type=="resize"){if(_248==window.orientation){return null;}_248=window.orientation;_24b.type="orientationchange";return _249.call(this,_24b);}if(!("rotation" in _24b)){_24b.rotation=0;_24b.scale=1;}if(window.TouchEvent&&_24a instanceof TouchEvent){var _24c=_24b.changedTouches[0];for(var i in _24c){delete _24b[i];_24b[i]=_24c[i];}}}return _249.call(this,_24b);};};}return on;});},"dojo/topic":function(){define(["./Evented"],function(_24d){var hub=new _24d;return {publish:function(_24e,_24f){return hub.emit.apply(hub,arguments);},subscribe:function(_250,_251){return hub.on.apply(hub,arguments);}};});},"dojo/Evented":function(){define(["./aspect","./on"],function(_252,on){"use strict";var _253=_252.after;function _254(){};_254.prototype={on:function(type,_255){return on.parse(this,type,_255,function(_256,type){return _253(_256,"on"+type,_255,true);});},emit:function(type,_257){var args=[this];args.push.apply(args,arguments);return on.emit.apply(on,args);}};return _254;});},"dojo/aspect":function(){define([],function(){"use strict";var _258;function _259(_25a,type,_25b,_25c){var _25d=_25a[type];var _25e=type=="around";var _25f;if(_25e){var _260=_25b(function(){return _25d.advice(this,arguments);});_25f={remove:function(){if(_260){_260=_25a=_25b=null;}},advice:function(_261,args){return _260?_260.apply(_261,args):_25d.advice(_261,args);}};}else{_25f={remove:function(){if(_25f.advice){var _262=_25f.previous;var next=_25f.next;if(!next&&!_262){delete _25a[type];}else{if(_262){_262.next=next;}else{_25a[type]=next;}if(next){next.previous=_262;}}_25a=_25b=_25f.advice=null;}},id:_25a.nextId++,advice:_25b,receiveArguments:_25c};}if(_25d&&!_25e){if(type=="after"){while(_25d.next&&(_25d=_25d.next)){}_25d.next=_25f;_25f.previous=_25d;}else{if(type=="before"){_25a[type]=_25f;_25f.next=_25d;_25d.previous=_25f;}}}else{_25a[type]=_25f;}return _25f;};function _263(type){return function(_264,_265,_266,_267){var _268=_264[_265],_269;if(!_268||_268.target!=_264){_264[_265]=_269=function(){var _26a=_269.nextId;var args=arguments;var _26b=_269.before;while(_26b){if(_26b.advice){args=_26b.advice.apply(this,args)||args;}_26b=_26b.next;}if(_269.around){var _26c=_269.around.advice(this,args);}var _26d=_269.after;while(_26d&&_26d.id<_26a){if(_26d.advice){if(_26d.receiveArguments){var _26e=_26d.advice.apply(this,args);_26c=_26e===_258?_26c:_26e;}else{_26c=_26d.advice.call(this,_26c,args);}}_26d=_26d.next;}return _26c;};if(_268){_269.around={advice:function(_26f,args){return _268.apply(_26f,args);}};}_269.target=_264;_269.nextId=_269.nextId||0;}var _270=_259((_269||_268),type,_266,_267);_266=null;return _270;};};var _271=_263("after");var _272=_263("before");var _273=_263("around");return {before:_272,around:_273,after:_271};});},"dojo/_base/event":function(){define(["./kernel","../on","../has","../dom-geometry"],function(dojo,on,has,dom){if(on._fixEvent){var _274=on._fixEvent;on._fixEvent=function(evt,se){evt=_274(evt,se);if(evt){dom.normalizeEvent(evt);}return evt;};}var ret={fix:function(evt,_275){if(on._fixEvent){return on._fixEvent(evt,_275);}return evt;},stop:function(evt){if(has("dom-addeventlistener")||(evt&&evt.preventDefault)){evt.preventDefault();evt.stopPropagation();}else{evt=evt||window.event;evt.cancelBubble=true;on._preventDefault.call(evt);}}};if(1){dojo.fixEvent=ret.fix;dojo.stopEvent=ret.stop;}return ret;});},"dojo/dom-geometry":function(){define(["./sniff","./_base/window","./dom","./dom-style"],function(has,win,dom,_276){var geom={};geom.boxModel="content-box";if(has("ie")){geom.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";}geom.getPadExtents=function getPadExtents(node,_277){node=dom.byId(node);var s=_277||_276.getComputedStyle(node),px=_276.toPixelValue,l=px(node,s.paddingLeft),t=px(node,s.paddingTop),r=px(node,s.paddingRight),b=px(node,s.paddingBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};var none="none";geom.getBorderExtents=function getBorderExtents(node,_278){node=dom.byId(node);var px=_276.toPixelValue,s=_278||_276.getComputedStyle(node),l=s.borderLeftStyle!=none?px(node,s.borderLeftWidth):0,t=s.borderTopStyle!=none?px(node,s.borderTopWidth):0,r=s.borderRightStyle!=none?px(node,s.borderRightWidth):0,b=s.borderBottomStyle!=none?px(node,s.borderBottomWidth):0;return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};geom.getPadBorderExtents=function getPadBorderExtents(node,_279){node=dom.byId(node);var s=_279||_276.getComputedStyle(node),p=geom.getPadExtents(node,s),b=geom.getBorderExtents(node,s);return {l:p.l+b.l,t:p.t+b.t,r:p.r+b.r,b:p.b+b.b,w:p.w+b.w,h:p.h+b.h};};geom.getMarginExtents=function getMarginExtents(node,_27a){node=dom.byId(node);var s=_27a||_276.getComputedStyle(node),px=_276.toPixelValue,l=px(node,s.marginLeft),t=px(node,s.marginTop),r=px(node,s.marginRight),b=px(node,s.marginBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};geom.getMarginBox=function getMarginBox(node,_27b){node=dom.byId(node);var s=_27b||_276.getComputedStyle(node),me=geom.getMarginExtents(node,s),l=node.offsetLeft-me.l,t=node.offsetTop-me.t,p=node.parentNode,px=_276.toPixelValue,pcs;if((has("ie")==8&&!has("quirks"))){if(p){pcs=_276.getComputedStyle(p);l-=pcs.borderLeftStyle!=none?px(node,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=none?px(node,pcs.borderTopWidth):0;}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};geom.getContentBox=function getContentBox(node,_27c){node=dom.byId(node);var s=_27c||_276.getComputedStyle(node),w=node.clientWidth,h,pe=geom.getPadExtents(node,s),be=geom.getBorderExtents(node,s),l=node.offsetLeft+pe.l+be.l,t=node.offsetTop+pe.t+be.t;if(!w){w=node.offsetWidth-be.w;h=node.offsetHeight-be.h;}else{h=node.clientHeight;}if((has("ie")==8&&!has("quirks"))){var p=node.parentNode,px=_276.toPixelValue,pcs;if(p){pcs=_276.getComputedStyle(p);l-=pcs.borderLeftStyle!=none?px(node,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=none?px(node,pcs.borderTopWidth):0;}}return {l:l,t:t,w:w-pe.w,h:h-pe.h};};function _27d(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};function _27e(node){return node.tagName.toLowerCase()=="button"||node.tagName.toLowerCase()=="input"&&(node.getAttribute("type")||"").toLowerCase()=="button";};function _27f(node){return geom.boxModel=="border-box"||node.tagName.toLowerCase()=="table"||_27e(node);};function _280(node){var _281={x:0,y:0,width:0,height:0,top:0,right:0,bottom:0,left:0},ret;try{ret=node.getBoundingClientRect();}catch(e){return _281;}if(typeof ret.left==="undefined"){return _281;}return ret;};geom.setContentSize=function setContentSize(node,box,_282){node=dom.byId(node);var w=box.w,h=box.h;if(_27f(node)){var pb=geom.getPadBorderExtents(node,_282);if(w>=0){w+=pb.w;}if(h>=0){h+=pb.h;}}_27d(node,NaN,NaN,w,h);};var _283={l:0,t:0,w:0,h:0};geom.setMarginBox=function setMarginBox(node,box,_284){node=dom.byId(node);var s=_284||_276.getComputedStyle(node),w=box.w,h=box.h,pb=_27f(node)?_283:geom.getPadBorderExtents(node,s),mb=geom.getMarginExtents(node,s);if(has("webkit")){if(_27e(node)){var ns=node.style;if(w>=0&&!ns.width){ns.width="4px";}if(h>=0&&!ns.height){ns.height="4px";}}}if(w>=0){w=Math.max(w-pb.w-mb.w,0);}if(h>=0){h=Math.max(h-pb.h-mb.h,0);}_27d(node,box.l,box.t,w,h);};geom.isBodyLtr=function isBodyLtr(doc){doc=doc||win.doc;return (win.body(doc).dir||doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};geom.docScroll=function docScroll(doc){doc=doc||win.doc;var node=doc.parentWindow||doc.defaultView;return "pageXOffset" in node?{x:node.pageXOffset,y:node.pageYOffset}:(node=has("quirks")?win.body(doc):doc.documentElement)&&{x:geom.fixIeBiDiScrollLeft(node.scrollLeft||0,doc),y:node.scrollTop||0};};geom.getIeDocumentElementOffset=function(doc){return {x:0,y:0};};geom.fixIeBiDiScrollLeft=function fixIeBiDiScrollLeft(_285,doc){doc=doc||win.doc;var ie=has("ie");if(ie&&!geom.isBodyLtr(doc)){var qk=has("quirks"),de=qk?win.body(doc):doc.documentElement,pwin=win.global;if(ie==6&&!qk&&pwin.frameElement&&de.scrollHeight>de.clientHeight){_285+=de.clientLeft;}return (ie<8||qk)?(_285+de.clientWidth-de.scrollWidth):-_285;}return _285;};geom.position=function(node,_286){node=dom.byId(node);var db=win.body(node.ownerDocument),ret=_280(node);ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(has("ie")<9){ret.x-=(has("quirks")?db.clientLeft+db.offsetLeft:0);ret.y-=(has("quirks")?db.clientTop+db.offsetTop:0);}if(_286){var _287=geom.docScroll(node.ownerDocument);ret.x+=_287.x;ret.y+=_287.y;}return ret;};geom.getMarginSize=function getMarginSize(node,_288){node=dom.byId(node);var me=geom.getMarginExtents(node,_288||_276.getComputedStyle(node));var size=_280(node);return {w:(size.right-size.left)+me.w,h:(size.bottom-size.top)+me.h};};geom.normalizeEvent=function(_289){if(!("layerX" in _289)){_289.layerX=_289.offsetX;_289.layerY=_289.offsetY;}if(!("pageX" in _289)){var se=_289.target;var doc=(se&&se.ownerDocument)||document;var _28a=has("quirks")?doc.body:doc.documentElement;_289.pageX=_289.clientX+geom.fixIeBiDiScrollLeft(_28a.scrollLeft||0,doc);_289.pageY=_289.clientY+(_28a.scrollTop||0);}};return geom;});},"dojo/_base/window":function(){define(["./kernel","./lang","../sniff"],function(dojo,lang,has){var ret={global:dojo.global,doc:dojo.global["document"]||null,body:function(doc){doc=doc||dojo.doc;return doc.body||doc.getElementsByTagName("body")[0];},setContext:function(_28b,_28c){dojo.global=ret.global=_28b;dojo.doc=ret.doc=_28c;},withGlobal:function(_28d,_28e,_28f,_290){var _291=dojo.global;try{dojo.global=ret.global=_28d;return ret.withDoc.call(null,_28d.document,_28e,_28f,_290);}finally{dojo.global=ret.global=_291;}},withDoc:function(_292,_293,_294,_295){var _296=ret.doc,oldQ=has("quirks"),_297=has("ie"),isIE,mode,pwin;try{dojo.doc=ret.doc=_292;dojo.isQuirks=has.add("quirks",dojo.doc.compatMode=="BackCompat",true,true);if(has("ie")){if((pwin=_292.parentWindow)&&pwin.navigator){isIE=parseFloat(pwin.navigator.appVersion.split("MSIE ")[1])||undefined;mode=_292.documentMode;if(mode&&mode!=5&&Math.floor(isIE)!=mode){isIE=mode;}dojo.isIE=has.add("ie",isIE,true,true);}}if(_294&&typeof _293=="string"){_293=_294[_293];}return _293.apply(_294,_295||[]);}finally{dojo.doc=ret.doc=_296;dojo.isQuirks=has.add("quirks",oldQ,true,true);dojo.isIE=has.add("ie",_297,true,true);}}};1&&lang.mixin(dojo,ret);return ret;});},"dojo/dom":function(){define(["./sniff","./_base/window","./_base/kernel"],function(has,win,_298){if(has("ie")<=7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}}var dom={};if(has("ie")){dom.byId=function(id,doc){if(typeof id!="string"){return id||null;}var _299=doc||win.doc,te=id&&_299.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var eles=_299.all[id];if(!eles||eles.nodeName){eles=[eles];}var i=0;while((te=eles[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}return null;};}else{dom.byId=function(id,doc){return ((typeof id=="string")?(doc||win.doc).getElementById(id):id)||null;};}var doc=_298.global["document"]||null;has.add("dom-contains",!!(doc&&doc.contains));dom.isDescendant=has("dom-contains")?function(node,_29a){return !!((_29a=dom.byId(_29a))&&_29a.contains(dom.byId(node)));}:function(node,_29b){try{node=dom.byId(node);_29b=dom.byId(_29b);while(node){if(node==_29b){return true;}node=node.parentNode;}}catch(e){}return false;};has.add("css-user-select",function(_29c,doc,_29d){if(!_29d){return false;}var _29e=_29d.style;var _29f=["Khtml","O","Moz","Webkit"],i=_29f.length,name="userSelect",_2a0;do{if(typeof _29e[name]!=="undefined"){return name;}}while(i--&&(name=_29f[i]+"UserSelect"));return false;});var _2a1=has("css-user-select");dom.setSelectable=_2a1?function(node,_2a2){dom.byId(node).style[_2a1]=_2a2?"":"none";}:function(node,_2a3){node=dom.byId(node);var _2a4=node.getElementsByTagName("*"),i=_2a4.length;if(_2a3){node.removeAttribute("unselectable");while(i--){_2a4[i].removeAttribute("unselectable");}}else{node.setAttribute("unselectable","on");while(i--){_2a4[i].setAttribute("unselectable","on");}}};return dom;});},"dojo/dom-style":function(){define(["./sniff","./dom","./_base/window"],function(has,dom,win){var _2a5,_2a6={};if(has("webkit")){_2a5=function(node){var s;if(node.nodeType==1){var dv=node.ownerDocument.defaultView;s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}}return s||{};};}else{if(has("ie")&&(has("ie")<9||has("quirks"))){_2a5=function(node){return node.nodeType==1&&node.currentStyle?node.currentStyle:{};};}else{_2a5=function(node){if(node.nodeType===1){var dv=node.ownerDocument.defaultView,w=dv.opener?dv:win.global.window;return w.getComputedStyle(node,null);}return {};};}}_2a6.getComputedStyle=_2a5;var _2a7;if(!has("ie")){_2a7=function(_2a8,_2a9){return parseFloat(_2a9)||0;};}else{_2a7=function(_2aa,_2ab){if(!_2ab){return 0;}if(_2ab=="medium"){return 4;}if(_2ab.slice&&_2ab.slice(-2)=="px"){return parseFloat(_2ab);}var s=_2aa.style,rs=_2aa.runtimeStyle,cs=_2aa.currentStyle,_2ac=s.left,_2ad=rs.left;rs.left=cs.left;try{s.left=_2ab;_2ab=s.pixelLeft;}catch(e){_2ab=0;}s.left=_2ac;rs.left=_2ad;return _2ab;};}_2a6.toPixelValue=_2a7;var astr="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(astr);}catch(e){return f?{}:null;}};var _2ae=has("ie")<9||(has("ie")<10&&has("quirks"))?function(node){try{return af(node).Opacity/100;}catch(e){return 1;}}:function(node){return _2a5(node).opacity;};var _2af=has("ie")<9||(has("ie")<10&&has("quirks"))?function(node,_2b0){if(_2b0===""){_2b0=1;}var ov=_2b0*100,_2b1=_2b0===1;if(_2b1){node.style.zoom="";if(af(node)){node.style.filter=node.style.filter.replace(new RegExp("\\s*progid:"+astr+"\\([^\\)]+?\\)","i"),"");}}else{node.style.zoom=1;if(af(node)){af(node,1).Opacity=ov;}else{node.style.filter+=" progid:"+astr+"(Opacity="+ov+")";}af(node,1).Enabled=true;}if(node.tagName.toLowerCase()=="tr"){for(var td=node.firstChild;td;td=td.nextSibling){if(td.tagName.toLowerCase()=="td"){_2af(td,_2b0);}}}return _2b0;}:function(node,_2b2){return node.style.opacity=_2b2;};var _2b3={left:true,top:true};var _2b4=/margin|padding|width|height|max|min|offset/;function _2b5(node,type,_2b6){type=type.toLowerCase();if(_2b6=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_2b6){case 700:return "bold";case 400:default:return "normal";}}if(!(type in _2b3)){_2b3[type]=_2b4.test(type);}return _2b3[type]?_2a7(node,_2b6):_2b6;};var _2b7={cssFloat:1,styleFloat:1,"float":1};_2a6.get=function getStyle(node,name){var n=dom.byId(node),l=arguments.length,op=(name=="opacity");if(l==2&&op){return _2ae(n);}name=_2b7[name]?"cssFloat" in n.style?"cssFloat":"styleFloat":name;var s=_2a6.getComputedStyle(n);return (l==1)?s:_2b5(n,name,s[name]||n.style[name]);};_2a6.set=function setStyle(node,name,_2b8){var n=dom.byId(node),l=arguments.length,op=(name=="opacity");name=_2b7[name]?"cssFloat" in n.style?"cssFloat":"styleFloat":name;if(l==3){return op?_2af(n,_2b8):n.style[name]=_2b8;}for(var x in name){_2a6.set(node,x,name[x]);}return _2a6.getComputedStyle(n);};return _2a6;});},"dojo/mouse":function(){define(["./_base/kernel","./on","./has","./dom","./_base/window"],function(dojo,on,has,dom,win){has.add("dom-quirks",win.doc&&win.doc.compatMode=="BackCompat");has.add("events-mouseenter",win.doc&&"onmouseenter" in win.doc.createElement("div"));has.add("events-mousewheel",win.doc&&"onmousewheel" in win.doc);var _2b9;if((has("dom-quirks")&&has("ie"))||!has("dom-addeventlistener")){_2b9={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_2ba){return e.button&_2ba;},isLeft:function(e){return e.button&1;},isMiddle:function(e){return e.button&4;},isRight:function(e){return e.button&2;}};}else{_2b9={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_2bb){return e.button==_2bb;},isLeft:function(e){return e.button==0;},isMiddle:function(e){return e.button==1;},isRight:function(e){return e.button==2;}};}dojo.mouseButtons=_2b9;function _2bc(type,_2bd){var _2be=function(node,_2bf){return on(node,type,function(evt){if(_2bd){return _2bd(evt,_2bf);}if(!dom.isDescendant(evt.relatedTarget,node)){return _2bf.call(this,evt);}});};_2be.bubble=function(_2c0){return _2bc(type,function(evt,_2c1){var _2c2=_2c0(evt.target);var _2c3=evt.relatedTarget;if(_2c2&&(_2c2!=(_2c3&&_2c3.nodeType==1&&_2c0(_2c3)))){return _2c1.call(_2c2,evt);}});};return _2be;};var _2c4;if(has("events-mousewheel")){_2c4="mousewheel";}else{_2c4=function(node,_2c5){return on(node,"DOMMouseScroll",function(evt){evt.wheelDelta=-evt.detail;_2c5.call(this,evt);});};}return {_eventHandler:_2bc,enter:_2bc("mouseover"),leave:_2bc("mouseout"),wheel:_2c4,isLeft:_2b9.isLeft,isMiddle:_2b9.isMiddle,isRight:_2b9.isRight};});},"dojo/_base/sniff":function(){define(["./kernel","./lang","../sniff"],function(dojo,lang,has){if(!1){return has;}dojo._name="browser";lang.mixin(dojo,{isBrowser:true,isFF:has("ff"),isIE:has("ie"),isKhtml:has("khtml"),isWebKit:has("webkit"),isMozilla:has("mozilla"),isMoz:has("mozilla"),isOpera:has("opera"),isSafari:has("safari"),isChrome:has("chrome"),isMac:has("mac"),isIos:has("ios"),isAndroid:has("android"),isWii:has("wii"),isQuirks:has("quirks"),isAir:has("air")});return has;});},"dojo/keys":function(){define(["./_base/kernel","./sniff"],function(dojo,has){return dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,META:has("webkit")?91:224,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE:111,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145,UP_DPAD:175,DOWN_DPAD:176,LEFT_DPAD:177,RIGHT_DPAD:178,copyKey:has("mac")&&!has("air")?(has("safari")?91:224):17};});},"dojo/_base/Deferred":function(){define(["./kernel","../Deferred","../promise/Promise","../errors/CancelError","../has","./lang","../when"],function(dojo,_2c6,_2c7,_2c8,has,lang,when){var _2c9=function(){};var _2ca=Object.freeze||function(){};var _2cb=dojo.Deferred=function(_2cc){var _2cd,_2ce,_2cf,_2d0,_2d1,head,_2d2;var _2d3=(this.promise=new _2c7());function _2d4(_2d5){if(_2ce){throw new Error("This deferred has already been resolved");}_2cd=_2d5;_2ce=true;_2d6();};function _2d6(){var _2d7;while(!_2d7&&_2d2){var _2d8=_2d2;_2d2=_2d2.next;if((_2d7=(_2d8.progress==_2c9))){_2ce=false;}var func=(_2d1?_2d8.error:_2d8.resolved);if(has("config-useDeferredInstrumentation")){if(_2d1&&_2c6.instrumentRejected){_2c6.instrumentRejected(_2cd,!!func);}}if(func){try{var _2d9=func(_2cd);if(_2d9&&typeof _2d9.then==="function"){_2d9.then(lang.hitch(_2d8.deferred,"resolve"),lang.hitch(_2d8.deferred,"reject"),lang.hitch(_2d8.deferred,"progress"));continue;}var _2da=_2d7&&_2d9===undefined;if(_2d7&&!_2da){_2d1=_2d9 instanceof Error;}_2d8.deferred[_2da&&_2d1?"reject":"resolve"](_2da?_2cd:_2d9);}catch(e){_2d8.deferred.reject(e);}}else{if(_2d1){_2d8.deferred.reject(_2cd);}else{_2d8.deferred.resolve(_2cd);}}}};this.isResolved=_2d3.isResolved=function(){return _2d0==0;};this.isRejected=_2d3.isRejected=function(){return _2d0==1;};this.isFulfilled=_2d3.isFulfilled=function(){return _2d0>=0;};this.isCanceled=_2d3.isCanceled=function(){return _2cf;};this.resolve=this.callback=function(_2db){this.fired=_2d0=0;this.results=[_2db,null];_2d4(_2db);};this.reject=this.errback=function(_2dc){_2d1=true;this.fired=_2d0=1;if(has("config-useDeferredInstrumentation")){if(_2c6.instrumentRejected){_2c6.instrumentRejected(_2dc,!!_2d2);}}_2d4(_2dc);this.results=[null,_2dc];};this.progress=function(_2dd){var _2de=_2d2;while(_2de){var _2df=_2de.progress;_2df&&_2df(_2dd);_2de=_2de.next;}};this.addCallbacks=function(_2e0,_2e1){this.then(_2e0,_2e1,_2c9);return this;};_2d3.then=this.then=function(_2e2,_2e3,_2e4){var _2e5=_2e4==_2c9?this:new _2cb(_2d3.cancel);var _2e6={resolved:_2e2,error:_2e3,progress:_2e4,deferred:_2e5};if(_2d2){head=head.next=_2e6;}else{_2d2=head=_2e6;}if(_2ce){_2d6();}return _2e5.promise;};var _2e7=this;_2d3.cancel=this.cancel=function(){if(!_2ce){var _2e8=_2cc&&_2cc(_2e7);if(!_2ce){if(!(_2e8 instanceof Error)){_2e8=new _2c8(_2e8);}_2e8.log=false;_2e7.reject(_2e8);}}_2cf=true;};_2ca(_2d3);};lang.extend(_2cb,{addCallback:function(_2e9){return this.addCallbacks(lang.hitch.apply(dojo,arguments));},addErrback:function(_2ea){return this.addCallbacks(null,lang.hitch.apply(dojo,arguments));},addBoth:function(_2eb){var _2ec=lang.hitch.apply(dojo,arguments);return this.addCallbacks(_2ec,_2ec);},fired:-1});_2cb.when=dojo.when=when;return _2cb;});},"dojo/Deferred":function(){define(["./has","./_base/lang","./errors/CancelError","./promise/Promise","./promise/instrumentation"],function(has,lang,_2ed,_2ee,_2ef){"use strict";var _2f0=0,_2f1=1,_2f2=2;var _2f3="This deferred has already been fulfilled.";var _2f4=Object.freeze||function(){};var _2f5=function(_2f6,type,_2f7,_2f8,_2f9){if(1){if(type===_2f2&&_2fa.instrumentRejected&&_2f6.length===0){_2fa.instrumentRejected(_2f7,false,_2f8,_2f9);}}for(var i=0;i<_2f6.length;i++){_2fb(_2f6[i],type,_2f7,_2f8);}};var _2fb=function(_2fc,type,_2fd,_2fe){var func=_2fc[type];var _2ff=_2fc.deferred;if(func){try{var _300=func(_2fd);if(type===_2f0){if(typeof _300!=="undefined"){_301(_2ff,type,_300);}}else{if(_300&&typeof _300.then==="function"){_2fc.cancel=_300.cancel;_300.then(_302(_2ff,_2f1),_302(_2ff,_2f2),_302(_2ff,_2f0));return;}_301(_2ff,_2f1,_300);}}catch(error){_301(_2ff,_2f2,error);}}else{_301(_2ff,type,_2fd);}if(1){if(type===_2f2&&_2fa.instrumentRejected){_2fa.instrumentRejected(_2fd,!!func,_2fe,_2ff.promise);}}};var _302=function(_303,type){return function(_304){_301(_303,type,_304);};};var _301=function(_305,type,_306){if(!_305.isCanceled()){switch(type){case _2f0:_305.progress(_306);break;case _2f1:_305.resolve(_306);break;case _2f2:_305.reject(_306);break;}}};var _2fa=function(_307){var _308=this.promise=new _2ee();var _309=this;var _30a,_30b,_30c;var _30d=false;var _30e=[];if(1&&Error.captureStackTrace){Error.captureStackTrace(_309,_2fa);Error.captureStackTrace(_308,_2fa);}this.isResolved=_308.isResolved=function(){return _30a===_2f1;};this.isRejected=_308.isRejected=function(){return _30a===_2f2;};this.isFulfilled=_308.isFulfilled=function(){return !!_30a;};this.isCanceled=_308.isCanceled=function(){return _30d;};this.progress=function(_30f,_310){if(!_30a){_2f5(_30e,_2f0,_30f,null,_309);return _308;}else{if(_310===true){throw new Error(_2f3);}else{return _308;}}};this.resolve=function(_311,_312){if(!_30a){_2f5(_30e,_30a=_2f1,_30b=_311,null,_309);_30e=null;return _308;}else{if(_312===true){throw new Error(_2f3);}else{return _308;}}};var _313=this.reject=function(_314,_315){if(!_30a){if(1&&Error.captureStackTrace){Error.captureStackTrace(_30c={},_313);}_2f5(_30e,_30a=_2f2,_30b=_314,_30c,_309);_30e=null;return _308;}else{if(_315===true){throw new Error(_2f3);}else{return _308;}}};this.then=_308.then=function(_316,_317,_318){var _319=[_318,_316,_317];_319.cancel=_308.cancel;_319.deferred=new _2fa(function(_31a){return _319.cancel&&_319.cancel(_31a);});if(_30a&&!_30e){_2fb(_319,_30a,_30b,_30c);}else{_30e.push(_319);}return _319.deferred.promise;};this.cancel=_308.cancel=function(_31b,_31c){if(!_30a){if(_307){var _31d=_307(_31b);_31b=typeof _31d==="undefined"?_31b:_31d;}_30d=true;if(!_30a){if(typeof _31b==="undefined"){_31b=new _2ed();}_313(_31b);return _31b;}else{if(_30a===_2f2&&_30b===_31b){return _31b;}}}else{if(_31c===true){throw new Error(_2f3);}}};_2f4(_308);};_2fa.prototype.toString=function(){return "[object Deferred]";};if(_2ef){_2ef(_2fa);}return _2fa;});},"dojo/errors/CancelError":function(){define(["./create"],function(_31e){return _31e("CancelError",null,null,{dojoType:"cancel",log:false});});},"dojo/errors/create":function(){define(["../_base/lang"],function(lang){return function(name,ctor,base,_31f){base=base||Error;var _320=function(_321){if(base===Error){if(Error.captureStackTrace){Error.captureStackTrace(this,_320);}var err=Error.call(this,_321),prop;for(prop in err){if(err.hasOwnProperty(prop)){this[prop]=err[prop];}}this.message=_321;this.stack=err.stack;}else{base.apply(this,arguments);}if(ctor){ctor.apply(this,arguments);}};_320.prototype=lang.delegate(base.prototype,_31f);_320.prototype.name=name;_320.prototype.constructor=_320;return _320;};});},"dojo/promise/Promise":function(){define(["../_base/lang"],function(lang){"use strict";function _322(){throw new TypeError("abstract");};return lang.extend(function Promise(){},{then:function(_323,_324,_325){_322();},cancel:function(_326,_327){_322();},isResolved:function(){_322();},isRejected:function(){_322();},isFulfilled:function(){_322();},isCanceled:function(){_322();},"finally":function(_328){return this.then(function(_329){var _32a=_328();if(_32a&&typeof _32a.then==="function"){return _32a.then(function(){return _329;});}return _329;},function(_32b){var _32c=_328();if(_32c&&typeof _32c.then==="function"){return _32c.then(function(){throw _32b;});}throw _32b;});},always:function(_32d){return this.then(_32d,_32d);},"catch":function(_32e){return this.then(null,_32e);},otherwise:function(_32f){return this.then(null,_32f);},trace:function(){return this;},traceRejected:function(){return this;},toString:function(){return "[object Promise]";}});});},"dojo/promise/instrumentation":function(){define(["./tracer","../has","../_base/lang","../_base/array"],function(_330,has,lang,_331){has.add("config-useDeferredInstrumentation","report-unhandled-rejections");function _332(_333,_334,_335){if(_333&&_333.log===false){return;}var _336="";if(_333&&_333.stack){_336+=_333.stack;}if(_334&&_334.stack){_336+="\n ----------------------------------------\n rejected"+_334.stack.split("\n").slice(1).join("\n").replace(/^\s+/," ");}if(_335&&_335.stack){_336+="\n ----------------------------------------\n"+_335.stack;}console.error(_333,_336);};function _337(_338,_339,_33a,_33b){if(!_339){_332(_338,_33a,_33b);}};var _33c=[];var _33d=false;var _33e=1000;function _33f(_340,_341,_342,_343){if(!_331.some(_33c,function(obj){if(obj.error===_340){if(_341){obj.handled=true;}return true;}})){_33c.push({error:_340,rejection:_342,handled:_341,deferred:_343,timestamp:new Date().getTime()});}if(!_33d){_33d=setTimeout(_344,_33e);}};function _344(){var now=new Date().getTime();var _345=now-_33e;_33c=_331.filter(_33c,function(obj){if(obj.timestamp<_345){if(!obj.handled){_332(obj.error,obj.rejection,obj.deferred);}return false;}return true;});if(_33c.length){_33d=setTimeout(_344,_33c[0].timestamp+_33e-now);}else{_33d=false;}};return function(_346){var _347=has("config-useDeferredInstrumentation");if(_347){_330.on("resolved",lang.hitch(console,"log","resolved"));_330.on("rejected",lang.hitch(console,"log","rejected"));_330.on("progress",lang.hitch(console,"log","progress"));var args=[];if(typeof _347==="string"){args=_347.split(",");_347=args.shift();}if(_347==="report-rejections"){_346.instrumentRejected=_337;}else{if(_347==="report-unhandled-rejections"||_347===true||_347===1){_346.instrumentRejected=_33f;_33e=parseInt(args[0],10)||_33e;}else{throw new Error("Unsupported instrumentation usage <"+_347+">");}}}};});},"dojo/promise/tracer":function(){define(["../_base/lang","./Promise","../Evented"],function(lang,_348,_349){"use strict";var _34a=new _349;var emit=_34a.emit;_34a.emit=null;function _34b(args){setTimeout(function(){emit.apply(_34a,args);},0);};_348.prototype.trace=function(){var args=lang._toArray(arguments);this.then(function(_34c){_34b(["resolved",_34c].concat(args));},function(_34d){_34b(["rejected",_34d].concat(args));},function(_34e){_34b(["progress",_34e].concat(args));});return this;};_348.prototype.traceRejected=function(){var args=lang._toArray(arguments);this.otherwise(function(_34f){_34b(["rejected",_34f].concat(args));});return this;};return _34a;});},"dojo/when":function(){define(["./Deferred","./promise/Promise"],function(_350,_351){"use strict";return function when(_352,_353,_354,_355){var _356=_352&&typeof _352.then==="function";var _357=_356&&_352 instanceof _351;if(!_356){if(arguments.length>1){return _353?_353(_352):_352;}else{return new _350().resolve(_352);}}else{if(!_357){var _358=new _350(_352.cancel);_352.then(_358.resolve,_358.reject,_358.progress);_352=_358.promise;}}if(_353||_354||_355){return _352.then(_353,_354,_355);}return _352;};});},"dojo/_base/json":function(){define(["./kernel","../json"],function(dojo,json){dojo.fromJson=function(js){return eval("("+js+")");};dojo._escapeString=json.stringify;dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_359){return json.stringify(it,function(key,_35a){if(_35a){var tf=_35a.__json__||_35a.json;if(typeof tf=="function"){return tf.call(_35a);}}return _35a;},_359&&dojo.toJsonIndentStr);};return dojo;});},"dojo/json":function(){define(["./has"],function(has){"use strict";var _35b=typeof JSON!="undefined";has.add("json-parse",_35b);has.add("json-stringify",_35b&&JSON.stringify({a:0},function(k,v){return v||1;})=="{\"a\":1}");if(has("json-stringify")){return JSON;}else{var _35c=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};return {parse:has("json-parse")?JSON.parse:function(str,_35d){if(_35d&&!/^([\s\[\{]*(?:"(?:\\.|[^"])*"|-?\d[\d\.]*(?:[Ee][+-]?\d+)?|null|true|false|)[\s\]\}]*(?:,|:|$))+$/.test(str)){throw new SyntaxError("Invalid characters in JSON");}return eval("("+str+")");},stringify:function(_35e,_35f,_360){var _361;if(typeof _35f=="string"){_360=_35f;_35f=null;}function _362(it,_363,key){if(_35f){it=_35f(key,it);}var val,_364=typeof it;if(_364=="number"){return isFinite(it)?it+"":"null";}if(_364=="boolean"){return it+"";}if(it===null){return "null";}if(typeof it=="string"){return _35c(it);}if(_364=="function"||_364=="undefined"){return _361;}if(typeof it.toJSON=="function"){return _362(it.toJSON(key),_363,key);}if(it instanceof Date){return "\"{FullYear}-{Month+}-{Date}T{Hours}:{Minutes}:{Seconds}Z\"".replace(/\{(\w+)(\+)?\}/g,function(t,prop,plus){var num=it["getUTC"+prop]()+(plus?1:0);return num<10?"0"+num:num;});}if(it.valueOf()!==it){return _362(it.valueOf(),_363,key);}var _365=_360?(_363+_360):"";var sep=_360?" ":"";var _366=_360?"\n":"";if(it instanceof Array){var itl=it.length,res=[];for(key=0;key<itl;key++){var obj=it[key];val=_362(obj,_365,key);if(typeof val!="string"){val="null";}res.push(_366+_365+val);}return "["+res.join(",")+_366+_363+"]";}var _367=[];for(key in it){var _368;if(it.hasOwnProperty(key)){if(typeof key=="number"){_368="\""+key+"\"";}else{if(typeof key=="string"){_368=_35c(key);}else{continue;}}val=_362(it[key],_365,key);if(typeof val!="string"){continue;}_367.push(_366+_365+_368+":"+sep+val);}}return "{"+_367.join(",")+_366+_363+"}";};return _362(_35e,"","");}};}});},"dojo/_base/Color":function(){define(["./kernel","./lang","./array","./config"],function(dojo,lang,_369,_36a){var _36b=dojo.Color=function(_36c){if(_36c){this.setColor(_36c);}};_36b.named={"black":[0,0,0],"silver":[192,192,192],"gray":[128,128,128],"white":[255,255,255],"maroon":[128,0,0],"red":[255,0,0],"purple":[128,0,128],"fuchsia":[255,0,255],"green":[0,128,0],"lime":[0,255,0],"olive":[128,128,0],"yellow":[255,255,0],"navy":[0,0,128],"blue":[0,0,255],"teal":[0,128,128],"aqua":[0,255,255],"transparent":_36a.transparentColor||[0,0,0,0]};lang.extend(_36b,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_36d){if(lang.isString(_36d)){_36b.fromString(_36d,this);}else{if(lang.isArray(_36d)){_36b.fromArray(_36d,this);}else{this._set(_36d.r,_36d.g,_36d.b,_36d.a);if(!(_36d instanceof _36b)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var arr=_369.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+arr.join("");},toCss:function(_36e){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_36e?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});_36b.blendColors=dojo.blendColors=function(_36f,end,_370,obj){var t=obj||new _36b();t.r=Math.round(_36f.r+(end.r-_36f.r)*_370);t.g=Math.round(_36f.g+(end.g-_36f.g)*_370);t.b=Math.round(_36f.b+(end.b-_36f.b)*_370);t.a=_36f.a+(end.a-_36f.a)*_370;return t.sanitize();};_36b.fromRgb=dojo.colorFromRgb=function(_371,obj){var m=_371.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&_36b.fromArray(m[1].split(/\s*,\s*/),obj);};_36b.fromHex=dojo.colorFromHex=function(_372,obj){var t=obj||new _36b(),bits=(_372.length==4)?4:8,mask=(1<<bits)-1;_372=Number("0x"+_372.substr(1));if(isNaN(_372)){return null;}_369.forEach(["b","g","r"],function(x){var c=_372&mask;_372>>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};_36b.fromArray=dojo.colorFromArray=function(a,obj){var t=obj||new _36b();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};_36b.fromString=dojo.colorFromString=function(str,obj){var a=_36b.named[str];return a&&_36b.fromArray(a,obj)||_36b.fromRgb(str,obj)||_36b.fromHex(str,obj);};return _36b;});},"dojo/_base/browser":function(){if(require.has){require.has.add("config-selectorEngine","acme");}define(["../ready","./kernel","./connect","./unload","./window","./event","./html","./NodeList","../query","./xhr","./fx"],function(dojo){return dojo;});},"dojo/_base/unload":function(){define(["./kernel","./lang","../on"],function(dojo,lang,on){var win=window;var _373={addOnWindowUnload:function(obj,_374){if(!dojo.windowUnloaded){on(win,"unload",(dojo.windowUnloaded=function(){}));}on(win,"unload",lang.hitch(obj,_374));},addOnUnload:function(obj,_375){on(win,"beforeunload",lang.hitch(obj,_375));}};dojo.addOnWindowUnload=_373.addOnWindowUnload;dojo.addOnUnload=_373.addOnUnload;return _373;});},"dojo/_base/html":function(){define(["./kernel","../dom","../dom-style","../dom-attr","../dom-prop","../dom-class","../dom-construct","../dom-geometry"],function(dojo,dom,_376,attr,prop,cls,ctr,geom){dojo.byId=dom.byId;dojo.isDescendant=dom.isDescendant;dojo.setSelectable=dom.setSelectable;dojo.getAttr=attr.get;dojo.setAttr=attr.set;dojo.hasAttr=attr.has;dojo.removeAttr=attr.remove;dojo.getNodeProp=attr.getNodeProp;dojo.attr=function(node,name,_377){if(arguments.length==2){return attr[typeof name=="string"?"get":"set"](node,name);}return attr.set(node,name,_377);};dojo.hasClass=cls.contains;dojo.addClass=cls.add;dojo.removeClass=cls.remove;dojo.toggleClass=cls.toggle;dojo.replaceClass=cls.replace;dojo._toDom=dojo.toDom=ctr.toDom;dojo.place=ctr.place;dojo.create=ctr.create;dojo.empty=function(node){ctr.empty(node);};dojo._destroyElement=dojo.destroy=function(node){ctr.destroy(node);};dojo._getPadExtents=dojo.getPadExtents=geom.getPadExtents;dojo._getBorderExtents=dojo.getBorderExtents=geom.getBorderExtents;dojo._getPadBorderExtents=dojo.getPadBorderExtents=geom.getPadBorderExtents;dojo._getMarginExtents=dojo.getMarginExtents=geom.getMarginExtents;dojo._getMarginSize=dojo.getMarginSize=geom.getMarginSize;dojo._getMarginBox=dojo.getMarginBox=geom.getMarginBox;dojo.setMarginBox=geom.setMarginBox;dojo._getContentBox=dojo.getContentBox=geom.getContentBox;dojo.setContentSize=geom.setContentSize;dojo._isBodyLtr=dojo.isBodyLtr=geom.isBodyLtr;dojo._docScroll=dojo.docScroll=geom.docScroll;dojo._getIeDocumentElementOffset=dojo.getIeDocumentElementOffset=geom.getIeDocumentElementOffset;dojo._fixIeBiDiScrollLeft=dojo.fixIeBiDiScrollLeft=geom.fixIeBiDiScrollLeft;dojo.position=geom.position;dojo.marginBox=function marginBox(node,box){return box?geom.setMarginBox(node,box):geom.getMarginBox(node);};dojo.contentBox=function contentBox(node,box){return box?geom.setContentSize(node,box):geom.getContentBox(node);};dojo.coords=function(node,_378){dojo.deprecated("dojo.coords()","Use dojo.position() or dojo.marginBox().");node=dom.byId(node);var s=_376.getComputedStyle(node),mb=geom.getMarginBox(node,s);var abs=geom.position(node,_378);mb.x=abs.x;mb.y=abs.y;return mb;};dojo.getProp=prop.get;dojo.setProp=prop.set;dojo.prop=function(node,name,_379){if(arguments.length==2){return prop[typeof name=="string"?"get":"set"](node,name);}return prop.set(node,name,_379);};dojo.getStyle=_376.get;dojo.setStyle=_376.set;dojo.getComputedStyle=_376.getComputedStyle;dojo.__toPixelValue=dojo.toPixelValue=_376.toPixelValue;dojo.style=function(node,name,_37a){switch(arguments.length){case 1:return _376.get(node);case 2:return _376[typeof name=="string"?"get":"set"](node,name);}return _376.set(node,name,_37a);};return dojo;});},"dojo/dom-attr":function(){define(["exports","./sniff","./_base/lang","./dom","./dom-style","./dom-prop"],function(_37b,has,lang,dom,_37c,prop){var _37d={innerHTML:1,textContent:1,className:1,htmlFor:has("ie")?1:0,value:1},_37e={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};function _37f(node,name){var attr=node.getAttributeNode&&node.getAttributeNode(name);return !!attr&&attr.specified;};_37b.has=function hasAttr(node,name){var lc=name.toLowerCase();return !!_37d[prop.names[lc]||name]||_37f(dom.byId(node),_37e[lc]||name);};_37b.get=function getAttr(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_380=prop.names[lc]||name,_381=_37d[_380],_382=node[_380];if(_381&&typeof _382!="undefined"){return _382;}if(_380=="textContent"){return prop.get(node,_380);}if(_380!="href"&&(typeof _382=="boolean"||lang.isFunction(_382))){return _382;}var _383=_37e[lc]||name;return _37f(node,_383)?node.getAttribute(_383):null;};_37b.set=function setAttr(node,name,_384){node=dom.byId(node);if(arguments.length==2){for(var x in name){_37b.set(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_385=prop.names[lc]||name,_386=_37d[_385];if(_385=="style"&&typeof _384!="string"){_37c.set(node,_384);return node;}if(_386||typeof _384=="boolean"||lang.isFunction(_384)){return prop.set(node,name,_384);}node.setAttribute(_37e[lc]||name,_384);return node;};_37b.remove=function removeAttr(node,name){dom.byId(node).removeAttribute(_37e[name.toLowerCase()]||name);};_37b.getNodeProp=function getNodeProp(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_387=prop.names[lc]||name;if((_387 in node)&&_387!="href"){return node[_387];}var _388=_37e[lc]||name;return _37f(node,_388)?node.getAttribute(_388):null;};});},"dojo/dom-prop":function(){define(["exports","./_base/kernel","./sniff","./_base/lang","./dom","./dom-style","./dom-construct","./_base/connect"],function(_389,dojo,has,lang,dom,_38a,ctr,conn){var _38b={},_38c=1,_38d=dojo._scopeName+"attrid";has.add("dom-textContent",function(_38e,doc,_38f){return "textContent" in _38f;});_389.names={"class":"className","for":"htmlFor",tabindex:"tabIndex",readonly:"readOnly",colspan:"colSpan",frameborder:"frameBorder",rowspan:"rowSpan",textcontent:"textContent",valuetype:"valueType"};function _390(node){var text="",ch=node.childNodes;for(var i=0,n;n=ch[i];i++){if(n.nodeType!=8){if(n.nodeType==1){text+=_390(n);}else{text+=n.nodeValue;}}}return text;};_389.get=function getProp(node,name){node=dom.byId(node);var lc=name.toLowerCase(),_391=_389.names[lc]||name;if(_391=="textContent"&&!has("dom-textContent")){return _390(node);}return node[_391];};_389.set=function setProp(node,name,_392){node=dom.byId(node);var l=arguments.length;if(l==2&&typeof name!="string"){for(var x in name){_389.set(node,x,name[x]);}return node;}var lc=name.toLowerCase(),_393=_389.names[lc]||name;if(_393=="style"&&typeof _392!="string"){_38a.set(node,_392);return node;}if(_393=="innerHTML"){if(has("ie")&&node.tagName.toLowerCase() in {col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1}){ctr.empty(node);node.appendChild(ctr.toDom(_392,node.ownerDocument));}else{node[_393]=_392;}return node;}if(_393=="textContent"&&!has("dom-textContent")){ctr.empty(node);node.appendChild(node.ownerDocument.createTextNode(_392));return node;}if(lang.isFunction(_392)){var _394=node[_38d];if(!_394){_394=_38c++;node[_38d]=_394;}if(!_38b[_394]){_38b[_394]={};}var h=_38b[_394][_393];if(h){conn.disconnect(h);}else{try{delete node[_393];}catch(e){}}if(_392){_38b[_394][_393]=conn.connect(node,_393,_392);}else{node[_393]=null;}return node;}node[_393]=_392;return node;};});},"dojo/dom-construct":function(){define(["exports","./_base/kernel","./sniff","./_base/window","./dom","./dom-attr"],function(_395,dojo,has,win,dom,attr){var _396={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_397=/<\s*([\w\:]+)/,_398={},_399=0,_39a="__"+dojo._scopeName+"ToDomId";for(var _39b in _396){if(_396.hasOwnProperty(_39b)){var tw=_396[_39b];tw.pre=_39b=="option"?"<select multiple=\"multiple\">":"<"+tw.join("><")+">";tw.post="</"+tw.reverse().join("></")+">";}}var _39c;if(has("ie")<=8){_39c=function(doc){doc.__dojo_html5_tested="yes";var div=_39d("div",{innerHTML:"<nav>a</nav>",style:{visibility:"hidden"}},doc.body);if(div.childNodes.length!==1){("abbr article aside audio canvas details figcaption figure footer header "+"hgroup mark meter nav output progress section summary time video").replace(/\b\w+\b/g,function(n){doc.createElement(n);});}_39e(div);};}function _39f(node,ref){var _3a0=ref.parentNode;if(_3a0){_3a0.insertBefore(node,ref);}};function _3a1(node,ref){var _3a2=ref.parentNode;if(_3a2){if(_3a2.lastChild==ref){_3a2.appendChild(node);}else{_3a2.insertBefore(node,ref.nextSibling);}}};_395.toDom=function toDom(frag,doc){doc=doc||win.doc;var _3a3=doc[_39a];if(!_3a3){doc[_39a]=_3a3=++_399+"";_398[_3a3]=doc.createElement("div");}if(has("ie")<=8){if(!doc.__dojo_html5_tested&&doc.body){_39c(doc);}}frag+="";var _3a4=frag.match(_397),tag=_3a4?_3a4[1].toLowerCase():"",_3a5=_398[_3a3],wrap,i,fc,df;if(_3a4&&_396[tag]){wrap=_396[tag];_3a5.innerHTML=wrap.pre+frag+wrap.post;for(i=wrap.length;i;--i){_3a5=_3a5.firstChild;}}else{_3a5.innerHTML=frag;}if(_3a5.childNodes.length==1){return _3a5.removeChild(_3a5.firstChild);}df=doc.createDocumentFragment();while((fc=_3a5.firstChild)){df.appendChild(fc);}return df;};_395.place=function place(node,_3a6,_3a7){_3a6=dom.byId(_3a6);if(typeof node=="string"){node=/^\s*</.test(node)?_395.toDom(node,_3a6.ownerDocument):dom.byId(node);}if(typeof _3a7=="number"){var cn=_3a6.childNodes;if(!cn.length||cn.length<=_3a7){_3a6.appendChild(node);}else{_39f(node,cn[_3a7<0?0:_3a7]);}}else{switch(_3a7){case "before":_39f(node,_3a6);break;case "after":_3a1(node,_3a6);break;case "replace":_3a6.parentNode.replaceChild(node,_3a6);break;case "only":_395.empty(_3a6);_3a6.appendChild(node);break;case "first":if(_3a6.firstChild){_39f(node,_3a6.firstChild);break;}default:_3a6.appendChild(node);}}return node;};var _39d=_395.create=function _39d(tag,_3a8,_3a9,pos){var doc=win.doc;if(_3a9){_3a9=dom.byId(_3a9);doc=_3a9.ownerDocument;}if(typeof tag=="string"){tag=doc.createElement(tag);}if(_3a8){attr.set(tag,_3a8);}if(_3a9){_395.place(tag,_3a9,pos);}return tag;};function _3aa(node){if("innerHTML" in node){try{node.innerHTML="";return;}catch(e){}}for(var c;c=node.lastChild;){node.removeChild(c);}};_395.empty=function empty(node){_3aa(dom.byId(node));};function _3ab(node,_3ac){if(node.firstChild){_3aa(node);}if(_3ac){has("ie")&&_3ac.canHaveChildren&&"removeNode" in node?node.removeNode(false):_3ac.removeChild(node);}};var _39e=_395.destroy=function _39e(node){node=dom.byId(node);if(!node){return;}_3ab(node,node.parentNode);};});},"dojo/dom-class":function(){define(["./_base/lang","./_base/array","./dom"],function(lang,_3ad,dom){var _3ae="className";var cls,_3af=/\s+/,a1=[""];function _3b0(s){if(typeof s=="string"||s instanceof String){if(s&&!_3af.test(s)){a1[0]=s;return a1;}var a=s.split(_3af);if(a.length&&!a[0]){a.shift();}if(a.length&&!a[a.length-1]){a.pop();}return a;}if(!s){return [];}return _3ad.filter(s,function(x){return x;});};var _3b1={};cls={contains:function containsClass(node,_3b2){return ((" "+dom.byId(node)[_3ae]+" ").indexOf(" "+_3b2+" ")>=0);},add:function addClass(node,_3b3){node=dom.byId(node);_3b3=_3b0(_3b3);var cls=node[_3ae],_3b4;cls=cls?" "+cls+" ":" ";_3b4=cls.length;for(var i=0,len=_3b3.length,c;i<len;++i){c=_3b3[i];if(c&&cls.indexOf(" "+c+" ")<0){cls+=c+" ";}}if(_3b4<cls.length){node[_3ae]=cls.substr(1,cls.length-2);}},remove:function removeClass(node,_3b5){node=dom.byId(node);var cls;if(_3b5!==undefined){_3b5=_3b0(_3b5);cls=" "+node[_3ae]+" ";for(var i=0,len=_3b5.length;i<len;++i){cls=cls.replace(" "+_3b5[i]+" "," ");}cls=lang.trim(cls);}else{cls="";}if(node[_3ae]!=cls){node[_3ae]=cls;}},replace:function replaceClass(node,_3b6,_3b7){node=dom.byId(node);_3b1[_3ae]=node[_3ae];cls.remove(_3b1,_3b7);cls.add(_3b1,_3b6);if(node[_3ae]!==_3b1[_3ae]){node[_3ae]=_3b1[_3ae];}},toggle:function toggleClass(node,_3b8,_3b9){node=dom.byId(node);if(_3b9===undefined){_3b8=_3b0(_3b8);for(var i=0,len=_3b8.length,c;i<len;++i){c=_3b8[i];cls[cls.contains(node,c)?"remove":"add"](node,c);}}else{cls[_3b9?"add":"remove"](node,_3b8);}return _3b9;}};return cls;});},"dojo/_base/NodeList":function(){define(["./kernel","../query","./array","./html","../NodeList-dom"],function(dojo,_3ba,_3bb){var _3bc=_3ba.NodeList,nlp=_3bc.prototype;nlp.connect=_3bc._adaptAsForEach(function(){return dojo.connect.apply(this,arguments);});nlp.coords=_3bc._adaptAsMap(dojo.coords);_3bc.events=["blur","focus","change","click","error","keydown","keypress","keyup","load","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit"];_3bb.forEach(_3bc.events,function(evt){var _3bd="on"+evt;nlp[_3bd]=function(a,b){return this.connect(_3bd,a,b);};});dojo.NodeList=_3bc;return _3bc;});},"dojo/query":function(){define(["./_base/kernel","./has","./dom","./on","./_base/array","./_base/lang","./selector/_loader","./selector/_loader!default"],function(dojo,has,dom,on,_3be,lang,_3bf,_3c0){"use strict";has.add("array-extensible",function(){return lang.delegate([],{length:1}).length==1&&!has("bug-for-in-skips-shadowed");});var ap=Array.prototype,aps=ap.slice,apc=ap.concat,_3c1=_3be.forEach;var tnl=function(a,_3c2,_3c3){var _3c4=new (_3c3||this._NodeListCtor||nl)(a);return _3c2?_3c4._stash(_3c2):_3c4;};var _3c5=function(f,a,o){a=[0].concat(aps.call(a,0));o=o||dojo.global;return function(node){a[0]=node;return f.apply(o,a);};};var _3c6=function(f,o){return function(){this.forEach(_3c5(f,arguments,o));return this;};};var _3c7=function(f,o){return function(){return this.map(_3c5(f,arguments,o));};};var _3c8=function(f,o){return function(){return this.filter(_3c5(f,arguments,o));};};var _3c9=function(f,g,o){return function(){var a=arguments,body=_3c5(f,a,o);if(g.call(o||dojo.global,a)){return this.map(body);}this.forEach(body);return this;};};var _3ca=function(_3cb){var _3cc=this instanceof nl&&has("array-extensible");if(typeof _3cb=="number"){_3cb=Array(_3cb);}var _3cd=(_3cb&&"length" in _3cb)?_3cb:arguments;if(_3cc||!_3cd.sort){var _3ce=_3cc?this:[],l=_3ce.length=_3cd.length;for(var i=0;i<l;i++){_3ce[i]=_3cd[i];}if(_3cc){return _3ce;}_3cd=_3ce;}lang._mixin(_3cd,nlp);_3cd._NodeListCtor=function(_3cf){return nl(_3cf);};return _3cd;};var nl=_3ca,nlp=nl.prototype=has("array-extensible")?[]:{};nl._wrap=nlp._wrap=tnl;nl._adaptAsMap=_3c7;nl._adaptAsForEach=_3c6;nl._adaptAsFilter=_3c8;nl._adaptWithCondition=_3c9;_3c1(["slice","splice"],function(name){var f=ap[name];nlp[name]=function(){return this._wrap(f.apply(this,arguments),name=="slice"?this:null);};});_3c1(["indexOf","lastIndexOf","every","some"],function(name){var f=_3be[name];nlp[name]=function(){return f.apply(dojo,[this].concat(aps.call(arguments,0)));};});lang.extend(_3ca,{constructor:nl,_NodeListCtor:nl,toString:function(){return this.join(",");},_stash:function(_3d0){this._parent=_3d0;return this;},on:function(_3d1,_3d2){var _3d3=this.map(function(node){return on(node,_3d1,_3d2);});_3d3.remove=function(){for(var i=0;i<_3d3.length;i++){_3d3[i].remove();}};return _3d3;},end:function(){if(this._parent){return this._parent;}else{return new this._NodeListCtor(0);}},concat:function(item){var t=aps.call(this,0),m=_3be.map(arguments,function(a){return aps.call(a,0);});return this._wrap(apc.apply(t,m),this);},map:function(func,obj){return this._wrap(_3be.map(this,func,obj),this);},forEach:function(_3d4,_3d5){_3c1(this,_3d4,_3d5);return this;},filter:function(_3d6){var a=arguments,_3d7=this,_3d8=0;if(typeof _3d6=="string"){_3d7=_3d9._filterResult(this,a[0]);if(a.length==1){return _3d7._stash(this);}_3d8=1;}return this._wrap(_3be.filter(_3d7,a[_3d8],a[_3d8+1]),this);},instantiate:function(_3da,_3db){var c=lang.isFunction(_3da)?_3da:lang.getObject(_3da);_3db=_3db||{};return this.forEach(function(node){new c(_3db,node);});},at:function(){var t=new this._NodeListCtor(0);_3c1(arguments,function(i){if(i<0){i=this.length+i;}if(this[i]){t.push(this[i]);}},this);return t._stash(this);}});function _3dc(_3dd,_3de){var _3df=function(_3e0,root){if(typeof root=="string"){root=dom.byId(root);if(!root){return new _3de([]);}}var _3e1=typeof _3e0=="string"?_3dd(_3e0,root):_3e0?(_3e0.end&&_3e0.on)?_3e0:[_3e0]:[];if(_3e1.end&&_3e1.on){return _3e1;}return new _3de(_3e1);};_3df.matches=_3dd.match||function(node,_3e2,root){return _3df.filter([node],_3e2,root).length>0;};_3df.filter=_3dd.filter||function(_3e3,_3e4,root){return _3df(_3e4,root).filter(function(node){return _3be.indexOf(_3e3,node)>-1;});};if(typeof _3dd!="function"){var _3e5=_3dd.search;_3dd=function(_3e6,root){return _3e5(root||document,_3e6);};}return _3df;};var _3d9=_3dc(_3c0,_3ca);dojo.query=_3dc(_3c0,function(_3e7){return _3ca(_3e7);});_3d9.load=function(id,_3e8,_3e9){_3bf.load(id,_3e8,function(_3ea){_3e9(_3dc(_3ea,_3ca));});};dojo._filterQueryResult=_3d9._filterResult=function(_3eb,_3ec,root){return new _3ca(_3d9.filter(_3eb,_3ec,root));};dojo.NodeList=_3d9.NodeList=_3ca;return _3d9;});},"dojo/selector/_loader":function(){define(["../has","require"],function(has,_3ed){"use strict";if(typeof document!=="undefined"){var _3ee=document.createElement("div");has.add("dom-qsa2.1",!!_3ee.querySelectorAll);has.add("dom-qsa3",function(){try{_3ee.innerHTML="<p class='TEST'></p>";return _3ee.querySelectorAll(".TEST:empty").length==1;}catch(e){}});}var _3ef;var acme="./acme",lite="./lite";return {load:function(id,_3f0,_3f1,_3f2){if(_3f2&&_3f2.isBuild){_3f1();return;}var req=_3ed;id=id=="default"?has("config-selectorEngine")||"css3":id;id=id=="css2"||id=="lite"?lite:id=="css2.1"?has("dom-qsa2.1")?lite:acme:id=="css3"?has("dom-qsa3")?lite:acme:id=="acme"?acme:(req=_3f0)&&id;if(id.charAt(id.length-1)=="?"){id=id.substring(0,id.length-1);var _3f3=true;}if(_3f3&&(has("dom-compliant-qsa")||_3ef)){return _3f1(_3ef);}req([id],function(_3f4){if(id!="./lite"){_3ef=_3f4;}_3f1(_3f4);});}};});},"dojo/NodeList-dom":function(){define(["./_base/kernel","./query","./_base/array","./_base/lang","./dom-class","./dom-construct","./dom-geometry","./dom-attr","./dom-style"],function(dojo,_3f5,_3f6,lang,_3f7,_3f8,_3f9,_3fa,_3fb){var _3fc=function(a){return a.length==1&&(typeof a[0]=="string");};var _3fd=function(node){var p=node.parentNode;if(p){p.removeChild(node);}};var _3fe=_3f5.NodeList,awc=_3fe._adaptWithCondition,aafe=_3fe._adaptAsForEach,aam=_3fe._adaptAsMap;function _3ff(_400){return function(node,name,_401){if(arguments.length==2){return _400[typeof name=="string"?"get":"set"](node,name);}return _400.set(node,name,_401);};};lang.extend(_3fe,{_normalize:function(_402,_403){var _404=_402.parse===true;if(typeof _402.template=="string"){var _405=_402.templateFunc||(dojo.string&&dojo.string.substitute);_402=_405?_405(_402.template,_402):_402;}var type=(typeof _402);if(type=="string"||type=="number"){_402=_3f8.toDom(_402,(_403&&_403.ownerDocument));if(_402.nodeType==11){_402=lang._toArray(_402.childNodes);}else{_402=[_402];}}else{if(!lang.isArrayLike(_402)){_402=[_402];}else{if(!lang.isArray(_402)){_402=lang._toArray(_402);}}}if(_404){_402._runParse=true;}return _402;},_cloneNode:function(node){return node.cloneNode(true);},_place:function(ary,_406,_407,_408){if(_406.nodeType!=1&&_407=="only"){return;}var _409=_406,_40a;var _40b=ary.length;for(var i=_40b-1;i>=0;i--){var node=(_408?this._cloneNode(ary[i]):ary[i]);if(ary._runParse&&dojo.parser&&dojo.parser.parse){if(!_40a){_40a=_409.ownerDocument.createElement("div");}_40a.appendChild(node);dojo.parser.parse(_40a);node=_40a.firstChild;while(_40a.firstChild){_40a.removeChild(_40a.firstChild);}}if(i==_40b-1){_3f8.place(node,_409,_407);}else{_409.parentNode.insertBefore(node,_409);}_409=node;}},position:aam(_3f9.position),attr:awc(_3ff(_3fa),_3fc),style:awc(_3ff(_3fb),_3fc),addClass:aafe(_3f7.add),removeClass:aafe(_3f7.remove),toggleClass:aafe(_3f7.toggle),replaceClass:aafe(_3f7.replace),empty:aafe(_3f8.empty),removeAttr:aafe(_3fa.remove),marginBox:aam(_3f9.getMarginBox),place:function(_40c,_40d){var item=_3f5(_40c)[0];return this.forEach(function(node){_3f8.place(node,item,_40d);});},orphan:function(_40e){return (_40e?_3f5._filterResult(this,_40e):this).forEach(_3fd);},adopt:function(_40f,_410){return _3f5(_40f).place(this[0],_410)._stash(this);},query:function(_411){if(!_411){return this;}var ret=new _3fe;this.map(function(node){_3f5(_411,node).forEach(function(_412){if(_412!==undefined){ret.push(_412);}});});return ret._stash(this);},filter:function(_413){var a=arguments,_414=this,_415=0;if(typeof _413=="string"){_414=_3f5._filterResult(this,a[0]);if(a.length==1){return _414._stash(this);}_415=1;}return this._wrap(_3f6.filter(_414,a[_415],a[_415+1]),this);},addContent:function(_416,_417){_416=this._normalize(_416,this[0]);for(var i=0,node;(node=this[i]);i++){if(_416.length){this._place(_416,node,_417,i>0);}else{_3f8.empty(node);}}return this;}});return _3fe;});},"dojo/_base/xhr":function(){define(["./kernel","./sniff","require","../io-query","../dom","../dom-form","./Deferred","./config","./json","./lang","./array","../on","../aspect","../request/watch","../request/xhr","../request/util"],function(dojo,has,_418,ioq,dom,_419,_41a,_41b,json,lang,_41c,on,_41d,_41e,_41f,util){dojo._xhrObj=_41f._create;var cfg=dojo.config;dojo.objectToQuery=ioq.objectToQuery;dojo.queryToObject=ioq.queryToObject;dojo.fieldToObject=_419.fieldToObject;dojo.formToObject=_419.toObject;dojo.formToQuery=_419.toQuery;dojo.formToJson=_419.toJson;dojo._blockAsync=false;var _420=dojo._contentHandlers=dojo.contentHandlers={"text":function(xhr){return xhr.responseText;},"json":function(xhr){return json.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){if(!_41b.useCommentedJson){console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");}var _421=xhr.responseText;var _422=_421.indexOf("/*");var _423=_421.lastIndexOf("*/");if(_422==-1||_423==-1){throw new Error("JSON was not comment filtered");}return json.fromJson(_421.substring(_422+2,_423));},"javascript":function(xhr){return dojo.eval(xhr.responseText);},"xml":function(xhr){var _424=xhr.responseXML;if(_424&&has("dom-qsa2.1")&&!_424.querySelectorAll&&has("dom-parser")){_424=new DOMParser().parseFromString(xhr.responseText,"application/xml");}if(has("ie")){if((!_424||!_424.documentElement)){var ms=function(n){return "MSXML"+n+".DOMDocument";};var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];_41c.some(dp,function(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(xhr.responseText);_424=dom;}catch(e){return false;}return true;});}}return _424;},"json-comment-optional":function(xhr){if(xhr.responseText&&/^[^{\[]*\/\*/.test(xhr.responseText)){return _420["json-comment-filtered"](xhr);}else{return _420["json"](xhr);}}};dojo._ioSetArgs=function(args,_425,_426,_427){var _428={args:args,url:args.url};var _429=null;if(args.form){var form=dom.byId(args.form);var _42a=form.getAttributeNode("action");_428.url=_428.url||(_42a?_42a.value:(dojo.doc?dojo.doc.URL:null));_429=_419.toObject(form);}var _42b={};if(_429){lang.mixin(_42b,_429);}if(args.content){lang.mixin(_42b,args.content);}if(args.preventCache){_42b["dojo.preventCache"]=new Date().valueOf();}_428.query=ioq.objectToQuery(_42b);_428.handleAs=args.handleAs||"text";var d=new _41a(function(dfd){dfd.canceled=true;_425&&_425(dfd);var err=dfd.ioArgs.error;if(!err){err=new Error("request cancelled");err.dojoType="cancel";dfd.ioArgs.error=err;}return err;});d.addCallback(_426);var ld=args.load;if(ld&&lang.isFunction(ld)){d.addCallback(function(_42c){return ld.call(args,_42c,_428);});}var err=args.error;if(err&&lang.isFunction(err)){d.addErrback(function(_42d){return err.call(args,_42d,_428);});}var _42e=args.handle;if(_42e&&lang.isFunction(_42e)){d.addBoth(function(_42f){return _42e.call(args,_42f,_428);});}d.addErrback(function(_430){return _427(_430,d);});if(cfg.ioPublish&&dojo.publish&&_428.args.ioPublish!==false){d.addCallbacks(function(res){dojo.publish("/dojo/io/load",[d,res]);return res;},function(res){dojo.publish("/dojo/io/error",[d,res]);return res;});d.addBoth(function(res){dojo.publish("/dojo/io/done",[d,res]);return res;});}d.ioArgs=_428;return d;};var _431=function(dfd){var ret=_420[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);return ret===undefined?null:ret;};var _432=function(_433,dfd){if(!dfd.ioArgs.args.failOk){console.error(_433);}return _433;};var _434=function(dfd){if(_435<=0){_435=0;if(cfg.ioPublish&&dojo.publish&&(!dfd||dfd&&dfd.ioArgs.args.ioPublish!==false)){dojo.publish("/dojo/io/stop");}}};var _435=0;_41d.after(_41e,"_onAction",function(){_435-=1;});_41d.after(_41e,"_onInFlight",_434);dojo._ioCancelAll=_41e.cancelAll;dojo._ioNotifyStart=function(dfd){if(cfg.ioPublish&&dojo.publish&&dfd.ioArgs.args.ioPublish!==false){if(!_435){dojo.publish("/dojo/io/start");}_435+=1;dojo.publish("/dojo/io/send",[dfd]);}};dojo._ioWatch=function(dfd,_436,_437,_438){var args=dfd.ioArgs.options=dfd.ioArgs.args;lang.mixin(dfd,{response:dfd.ioArgs,isValid:function(_439){return _436(dfd);},isReady:function(_43a){return _437(dfd);},handleResponse:function(_43b){return _438(dfd);}});_41e(dfd);_434(dfd);};var _43c="application/x-www-form-urlencoded";dojo._ioAddQueryToUrl=function(_43d){if(_43d.query.length){_43d.url+=(_43d.url.indexOf("?")==-1?"?":"&")+_43d.query;_43d.query=null;}};dojo.xhr=function(_43e,args,_43f){var rDfd;var dfd=dojo._ioSetArgs(args,function(dfd){rDfd&&rDfd.cancel();},_431,_432);var _440=dfd.ioArgs;if("postData" in args){_440.query=args.postData;}else{if("putData" in args){_440.query=args.putData;}else{if("rawBody" in args){_440.query=args.rawBody;}else{if((arguments.length>2&&!_43f)||"POST|PUT".indexOf(_43e.toUpperCase())===-1){dojo._ioAddQueryToUrl(_440);}}}}var _441={method:_43e,handleAs:"text",timeout:args.timeout,withCredentials:args.withCredentials,ioArgs:_440};if(typeof args.headers!=="undefined"){_441.headers=args.headers;}if(typeof args.contentType!=="undefined"){if(!_441.headers){_441.headers={};}_441.headers["Content-Type"]=args.contentType;}if(typeof _440.query!=="undefined"){_441.data=_440.query;}if(typeof args.sync!=="undefined"){_441.sync=args.sync;}dojo._ioNotifyStart(dfd);try{rDfd=_41f(_440.url,_441,true);}catch(e){dfd.cancel();return dfd;}dfd.ioArgs.xhr=rDfd.response.xhr;rDfd.then(function(){dfd.resolve(dfd);}).otherwise(function(_442){_440.error=_442;if(_442.response){_442.status=_442.response.status;_442.responseText=_442.response.text;_442.xhr=_442.response.xhr;}dfd.reject(_442);});return dfd;};dojo.xhrGet=function(args){return dojo.xhr("GET",args);};dojo.rawXhrPost=dojo.xhrPost=function(args){return dojo.xhr("POST",args,true);};dojo.rawXhrPut=dojo.xhrPut=function(args){return dojo.xhr("PUT",args,true);};dojo.xhrDelete=function(args){return dojo.xhr("DELETE",args);};dojo._isDocumentOk=function(x){return util.checkStatus(x.status);};dojo._getText=function(url){var _443;dojo.xhrGet({url:url,sync:true,load:function(text){_443=text;}});return _443;};lang.mixin(dojo.xhr,{_xhrObj:dojo._xhrObj,fieldToObject:_419.fieldToObject,formToObject:_419.toObject,objectToQuery:ioq.objectToQuery,formToQuery:_419.toQuery,formToJson:_419.toJson,queryToObject:ioq.queryToObject,contentHandlers:_420,_ioSetArgs:dojo._ioSetArgs,_ioCancelAll:dojo._ioCancelAll,_ioNotifyStart:dojo._ioNotifyStart,_ioWatch:dojo._ioWatch,_ioAddQueryToUrl:dojo._ioAddQueryToUrl,_isDocumentOk:dojo._isDocumentOk,_getText:dojo._getText,get:dojo.xhrGet,post:dojo.xhrPost,put:dojo.xhrPut,del:dojo.xhrDelete});return dojo.xhr;});},"dojo/io-query":function(){define(["./_base/lang"],function(lang){var _444={};return {objectToQuery:function objectToQuery(map){var enc=encodeURIComponent,_445=[];for(var name in map){var _446=map[name];if(_446!=_444[name]){var _447=enc(name)+"=";if(lang.isArray(_446)){for(var i=0,l=_446.length;i<l;++i){_445.push(_447+enc(_446[i]));}}else{_445.push(_447+enc(_446));}}}return _445.join("&");},queryToObject:function queryToObject(str){var dec=decodeURIComponent,qp=str.split("&"),ret={},name,val;for(var i=0,l=qp.length,item;i<l;++i){item=qp[i];if(item.length){var s=item.indexOf("=");if(s<0){name=dec(item);val="";}else{name=dec(item.slice(0,s));val=dec(item.slice(s+1));}if(typeof ret[name]=="string"){ret[name]=[ret[name]];}if(lang.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}}return ret;}};});},"dojo/dom-form":function(){define(["./_base/lang","./dom","./io-query","./json"],function(lang,dom,ioq,json){function _448(obj,name,_449){if(_449===null){return;}var val=obj[name];if(typeof val=="string"){obj[name]=[val,_449];}else{if(lang.isArray(val)){val.push(_449);}else{obj[name]=_449;}}};var _44a="file|submit|image|reset|button";var form={fieldToObject:function fieldToObject(_44b){var ret=null;_44b=dom.byId(_44b);if(_44b){var _44c=_44b.name,type=(_44b.type||"").toLowerCase();if(_44c&&type&&!_44b.disabled){if(type=="radio"||type=="checkbox"){if(_44b.checked){ret=_44b.value;}}else{if(_44b.multiple){ret=[];var _44d=[_44b.firstChild];while(_44d.length){for(var node=_44d.pop();node;node=node.nextSibling){if(node.nodeType==1&&node.tagName.toLowerCase()=="option"){if(node.selected){ret.push(node.value);}}else{if(node.nextSibling){_44d.push(node.nextSibling);}if(node.firstChild){_44d.push(node.firstChild);}break;}}}}else{ret=_44b.value;}}}}return ret;},toObject:function formToObject(_44e){var ret={},_44f=dom.byId(_44e).elements;for(var i=0,l=_44f.length;i<l;++i){var item=_44f[i],_450=item.name,type=(item.type||"").toLowerCase();if(_450&&type&&_44a.indexOf(type)<0&&!item.disabled){_448(ret,_450,form.fieldToObject(item));if(type=="image"){ret[_450+".x"]=ret[_450+".y"]=ret[_450].x=ret[_450].y=0;}}}return ret;},toQuery:function formToQuery(_451){return ioq.objectToQuery(form.toObject(_451));},toJson:function formToJson(_452,_453){return json.stringify(form.toObject(_452),null,_453?4:0);}};return form;});},"dojo/request/watch":function(){define(["./util","../errors/RequestTimeoutError","../errors/CancelError","../_base/array","../_base/window","../has!host-browser?dom-addeventlistener?:../on:"],function(util,_454,_455,_456,win,on){var _457=null,_458=[];function _459(){var now=+(new Date);for(var i=0,dfd;i<_458.length&&(dfd=_458[i]);i++){var _45a=dfd.response,_45b=_45a.options;if((dfd.isCanceled&&dfd.isCanceled())||(dfd.isValid&&!dfd.isValid(_45a))){_458.splice(i--,1);_45c._onAction&&_45c._onAction();}else{if(dfd.isReady&&dfd.isReady(_45a)){_458.splice(i--,1);dfd.handleResponse(_45a);_45c._onAction&&_45c._onAction();}else{if(dfd.startTime){if(dfd.startTime+(_45b.timeout||0)<now){_458.splice(i--,1);dfd.cancel(new _454("Timeout exceeded",_45a));_45c._onAction&&_45c._onAction();}}}}}_45c._onInFlight&&_45c._onInFlight(dfd);if(!_458.length){clearInterval(_457);_457=null;}};function _45c(dfd){if(dfd.response.options.timeout){dfd.startTime=+(new Date);}if(dfd.isFulfilled()){return;}_458.push(dfd);if(!_457){_457=setInterval(_459,50);}if(dfd.response.options.sync){_459();}};_45c.cancelAll=function cancelAll(){try{_456.forEach(_458,function(dfd){try{dfd.cancel(new _455("All requests canceled."));}catch(e){}});}catch(e){}};if(win&&on&&win.doc.attachEvent){on(win.global,"unload",function(){_45c.cancelAll();});}return _45c;});},"dojo/request/util":function(){define(["exports","../errors/RequestError","../errors/CancelError","../Deferred","../io-query","../_base/array","../_base/lang","../promise/Promise","../has"],function(_45d,_45e,_45f,_460,_461,_462,lang,_463,has){function _464(_465){return has("native-arraybuffer")&&_465 instanceof ArrayBuffer;};function _466(_467){return has("native-blob")&&_467 instanceof Blob;};function _468(_469){if(typeof Element!=="undefined"){return _469 instanceof Element;}return _469.nodeType===1;};function _46a(_46b){return has("native-formdata")&&_46b instanceof FormData;};function _46c(_46d){return _46d&&typeof _46d==="object"&&!_46a(_46d)&&!_468(_46d)&&!_466(_46d)&&!_464(_46d);};_45d.deepCopy=function(_46e,_46f){for(var name in _46f){var tval=_46e[name],sval=_46f[name];if(name!=="__proto__"&&tval!==sval){if(_46c(sval)){if(Object.prototype.toString.call(sval)==="[object Date]"){_46e[name]=new Date(sval);}else{if(lang.isArray(sval)){_46e[name]=_45d.deepCopyArray(sval);}else{if(tval&&typeof tval==="object"){_45d.deepCopy(tval,sval);}else{_46e[name]=_45d.deepCopy({},sval);}}}}else{_46e[name]=sval;}}}return _46e;};_45d.deepCopyArray=function(_470){var _471=[];for(var i=0,l=_470.length;i<l;i++){var _472=_470[i];if(typeof _472==="object"){_471.push(_45d.deepCopy({},_472));}else{_471.push(_472);}}return _471;};_45d.deepCreate=function deepCreate(_473,_474){_474=_474||{};var _475=lang.delegate(_473),name,_476;for(name in _473){_476=_473[name];if(_476&&typeof _476==="object"){_475[name]=_45d.deepCreate(_476,_474[name]);}}return _45d.deepCopy(_475,_474);};var _477=Object.freeze||function(obj){return obj;};function _478(_479){return _477(_479);};function _47a(_47b){return _47b.data!==undefined?_47b.data:_47b.text;};_45d.deferred=function deferred(_47c,_47d,_47e,_47f,_480,last){var def=new _460(function(_481){_47d&&_47d(def,_47c);if(!_481||!(_481 instanceof _45e)&&!(_481 instanceof _45f)){return new _45f("Request canceled",_47c);}return _481;});def.response=_47c;def.isValid=_47e;def.isReady=_47f;def.handleResponse=_480;function _482(_483){_483.response=_47c;throw _483;};var _484=def.then(_478).otherwise(_482);if(_45d.notify){_484.then(lang.hitch(_45d.notify,"emit","load"),lang.hitch(_45d.notify,"emit","error"));}var _485=_484.then(_47a);var _486=new _463();for(var prop in _485){if(_485.hasOwnProperty(prop)){_486[prop]=_485[prop];}}_486.response=_484;_477(_486);if(last){def.then(function(_487){last.call(def,_487);},function(_488){last.call(def,_47c,_488);});}def.promise=_486;def.then=_486.then;return def;};_45d.addCommonMethods=function addCommonMethods(_489,_48a){_462.forEach(_48a||["GET","POST","PUT","DELETE"],function(_48b){_489[(_48b==="DELETE"?"DEL":_48b).toLowerCase()]=function(url,_48c){_48c=lang.delegate(_48c||{});_48c.method=_48b;return _489(url,_48c);};});};_45d.parseArgs=function parseArgs(url,_48d,_48e){var data=_48d.data,_48f=_48d.query;if(data&&!_48e){if(typeof data==="object"&&(!(has("native-xhr2"))||!(_464(data)||_466(data)))){_48d.data=_461.objectToQuery(data);}}if(_48f){if(typeof _48f==="object"){_48f=_461.objectToQuery(_48f);}if(_48d.preventCache){_48f+=(_48f?"&":"")+"request.preventCache="+(+(new Date));}}else{if(_48d.preventCache){_48f="request.preventCache="+(+(new Date));}}if(url&&_48f){url+=(~url.indexOf("?")?"&":"?")+_48f;}return {url:url,options:_48d,getHeader:function(_490){return null;}};};_45d.checkStatus=function(stat){stat=stat||0;return (stat>=200&&stat<300)||stat===304||stat===1223||!stat;};});},"dojo/errors/RequestError":function(){define(["./create"],function(_491){return _491("RequestError",function(_492,_493){this.response=_493;});});},"dojo/errors/RequestTimeoutError":function(){define(["./create","./RequestError"],function(_494,_495){return _494("RequestTimeoutError",null,_495,{dojoType:"timeout"});});},"dojo/request/xhr":function(){define(["../errors/RequestError","./watch","./handlers","./util","../has"],function(_496,_497,_498,util,has){has.add("native-xhr",function(){return typeof XMLHttpRequest!=="undefined";});has.add("dojo-force-activex-xhr",function(){return has("activex")&&window.location.protocol==="file:";});has.add("native-xhr2",function(){if(!has("native-xhr")||has("dojo-force-activex-xhr")){return;}var x=new XMLHttpRequest();return typeof x["addEventListener"]!=="undefined"&&(typeof opera==="undefined"||typeof x["upload"]!=="undefined");});has.add("native-formdata",function(){return typeof FormData!=="undefined";});has.add("native-blob",function(){return typeof Blob!=="undefined";});has.add("native-arraybuffer",function(){return typeof ArrayBuffer!=="undefined";});has.add("native-response-type",function(){return has("native-xhr")&&typeof new XMLHttpRequest().responseType!=="undefined";});has.add("native-xhr2-blob",function(){if(!has("native-response-type")){return;}var x=new XMLHttpRequest();x.open("GET","https://dojotoolkit.org/",true);x.responseType="blob";var _499=x.responseType;x.abort();return _499==="blob";});var _49a={"blob":has("native-xhr2-blob")?"blob":"arraybuffer","document":"document","arraybuffer":"arraybuffer"};function _49b(_49c,_49d){var _49e=_49c.xhr;_49c.status=_49c.xhr.status;try{_49c.text=_49e.responseText;}catch(e){}if(_49c.options.handleAs==="xml"){_49c.data=_49e.responseXML;}var _49f;if(_49d){this.reject(_49d);}else{try{_498(_49c);}catch(e){_49f=e;}if(util.checkStatus(_49e.status)){if(!_49f){this.resolve(_49c);}else{this.reject(_49f);}}else{if(!_49f){_49d=new _496("Unable to load "+_49c.url+" status: "+_49e.status,_49c);this.reject(_49d);}else{_49d=new _496("Unable to load "+_49c.url+" status: "+_49e.status+" and an error in handleAs: transformation of response",_49c);this.reject(_49d);}}}};var _4a0,_4a1,_4a2,_4a3;if(has("native-xhr2")){_4a0=function(_4a4){return !this.isFulfilled();};_4a3=function(dfd,_4a5){_4a5.xhr.abort();};_4a2=function(_4a6,dfd,_4a7,_4a8){function _4a9(evt){dfd.handleResponse(_4a7);};function _4aa(evt){var _4ab=evt.target;var _4ac=new _496("Unable to load "+_4a7.url+" status: "+_4ab.status,_4a7);dfd.handleResponse(_4a7,_4ac);};function _4ad(_4ae,evt){_4a7.transferType=_4ae;if(evt.lengthComputable){_4a7.loaded=evt.loaded;_4a7.total=evt.total;dfd.progress(_4a7);}else{if(_4a7.xhr.readyState===3){_4a7.loaded=("loaded" in evt)?evt.loaded:evt.position;dfd.progress(_4a7);}}};function _4af(evt){return _4ad("download",evt);};function _4b0(evt){return _4ad("upload",evt);};_4a6.addEventListener("load",_4a9,false);_4a6.addEventListener("error",_4aa,false);_4a6.addEventListener("progress",_4af,false);if(_4a8&&_4a6.upload){_4a6.upload.addEventListener("progress",_4b0,false);}return function(){_4a6.removeEventListener("load",_4a9,false);_4a6.removeEventListener("error",_4aa,false);_4a6.removeEventListener("progress",_4af,false);_4a6.upload.removeEventListener("progress",_4b0,false);_4a6=null;};};}else{_4a0=function(_4b1){return _4b1.xhr.readyState;};_4a1=function(_4b2){return 4===_4b2.xhr.readyState;};_4a3=function(dfd,_4b3){var xhr=_4b3.xhr;var _4b4=typeof xhr.abort;if(_4b4==="function"||_4b4==="object"||_4b4==="unknown"){xhr.abort();}};}function _4b5(_4b6){return this.xhr.getResponseHeader(_4b6);};var _4b7,_4b8={data:null,query:null,sync:false,method:"GET"};function xhr(url,_4b9,_4ba){var _4bb=has("native-formdata")&&_4b9&&_4b9.data&&_4b9.data instanceof FormData;var _4bc=util.parseArgs(url,util.deepCreate(_4b8,_4b9),_4bb);url=_4bc.url;_4b9=_4bc.options;var _4bd=!_4b9.data&&_4b9.method!=="POST"&&_4b9.method!=="PUT";if(has("ie")<=10){url=url.split("#")[0];}var _4be,last=function(){_4be&&_4be();};var dfd=util.deferred(_4bc,_4a3,_4a0,_4a1,_49b,last);var _4bf=_4bc.xhr=xhr._create();if(!_4bf){dfd.cancel(new _496("XHR was not created"));return _4ba?dfd:dfd.promise;}_4bc.getHeader=_4b5;if(_4a2){_4be=_4a2(_4bf,dfd,_4bc,_4b9.uploadProgress);}var data=typeof (_4b9.data)==="undefined"?null:_4b9.data,_4c0=!_4b9.sync,_4c1=_4b9.method;try{_4bf.open(_4c1,url,_4c0,_4b9.user||_4b7,_4b9.password||_4b7);if(_4b9.withCredentials){_4bf.withCredentials=_4b9.withCredentials;}if(has("native-response-type")&&_4b9.handleAs in _49a){_4bf.responseType=_49a[_4b9.handleAs];}var _4c2=_4b9.headers,_4c3=(_4bb||_4bd)?false:"application/x-www-form-urlencoded";if(_4c2){for(var hdr in _4c2){if(hdr.toLowerCase()==="content-type"){_4c3=_4c2[hdr];}else{if(_4c2[hdr]){_4bf.setRequestHeader(hdr,_4c2[hdr]);}}}}if(_4c3&&_4c3!==false){_4bf.setRequestHeader("Content-Type",_4c3);}if(!_4c2||!("X-Requested-With" in _4c2)){_4bf.setRequestHeader("X-Requested-With","XMLHttpRequest");}if(util.notify){util.notify.emit("send",_4bc,dfd.promise.cancel);}_4bf.send(data);}catch(e){dfd.reject(e);}_497(dfd);_4bf=null;return _4ba?dfd:dfd.promise;};xhr._create=function(){throw new Error("XMLHTTP not available");};if(has("native-xhr")&&!has("dojo-force-activex-xhr")){xhr._create=function(){return new XMLHttpRequest();};}else{if(has("activex")){try{new ActiveXObject("Msxml2.XMLHTTP");xhr._create=function(){return new ActiveXObject("Msxml2.XMLHTTP");};}catch(e){try{new ActiveXObject("Microsoft.XMLHTTP");xhr._create=function(){return new ActiveXObject("Microsoft.XMLHTTP");};}catch(e){}}}}util.addCommonMethods(xhr);return xhr;});},"dojo/request/handlers":function(){define(["../json","../_base/kernel","../_base/array","../has","../selector/_loader"],function(JSON,_4c4,_4c5,has){has.add("activex",typeof ActiveXObject!=="undefined");has.add("dom-parser",function(_4c6){return "DOMParser" in _4c6;});var _4c7;if(has("activex")){var dp=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML.DOMDocument"];var _4c8;_4c7=function(_4c9){var _4ca=_4c9.data;var text=_4c9.text;if(_4ca&&has("dom-qsa2.1")&&!_4ca.querySelectorAll&&has("dom-parser")){_4ca=new DOMParser().parseFromString(text,"application/xml");}function _4cb(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(text);_4ca=dom;_4c8=p;}catch(e){return false;}return true;};if(!_4ca||!_4ca.documentElement){if(!_4c8||!_4cb(_4c8)){_4c5.some(dp,_4cb);}}return _4ca;};}var _4cc=function(_4cd){if(!has("native-xhr2-blob")&&_4cd.options.handleAs==="blob"&&typeof Blob!=="undefined"){return new Blob([_4cd.xhr.response],{type:_4cd.xhr.getResponseHeader("Content-Type")});}return _4cd.xhr.response;};var _4ce={"javascript":function(_4cf){return _4c4.eval(_4cf.text||"");},"json":function(_4d0){return JSON.parse(_4d0.text||null);},"xml":_4c7,"blob":_4cc,"arraybuffer":_4cc,"document":_4cc};function _4d1(_4d2){var _4d3=_4ce[_4d2.options.handleAs];_4d2.data=_4d3?_4d3(_4d2):(_4d2.data||_4d2.text);return _4d2;};_4d1.register=function(name,_4d4){_4ce[name]=_4d4;};return _4d1;});},"dojo/_base/fx":function(){define(["./kernel","./config","./lang","../Evented","./Color","../aspect","../sniff","../dom","../dom-style"],function(dojo,_4d5,lang,_4d6,_4d7,_4d8,has,dom,_4d9){var _4da=lang.mixin;var _4db={};var _4dc=_4db._Line=function(_4dd,end){this.start=_4dd;this.end=end;};_4dc.prototype.getValue=function(n){return ((this.end-this.start)*n)+this.start;};var _4de=_4db.Animation=function(args){_4da(this,args);if(lang.isArray(this.curve)){this.curve=new _4dc(this.curve[0],this.curve[1]);}};_4de.prototype=new _4d6();lang.extend(_4de,{duration:350,repeat:0,rate:20,_percent:0,_startRepeatCount:0,_getStep:function(){var _4df=this._percent,_4e0=this.easing;return _4e0?_4e0(_4df):_4df;},_fire:function(evt,args){var a=args||[];if(this[evt]){if(_4d5.debugAtAllCosts){this[evt].apply(this,a);}else{try{this[evt].apply(this,a);}catch(e){console.error("exception in animation handler for:",evt);console.error(e);}}}return this;},play:function(_4e1,_4e2){var _4e3=this;if(_4e3._delayTimer){_4e3._clearTimer();}if(_4e2){_4e3._stopTimer();_4e3._active=_4e3._paused=false;_4e3._percent=0;}else{if(_4e3._active&&!_4e3._paused){return _4e3;}}_4e3._fire("beforeBegin",[_4e3.node]);var de=_4e1||_4e3.delay,_4e4=lang.hitch(_4e3,"_play",_4e2);if(de>0){_4e3._delayTimer=setTimeout(_4e4,de);return _4e3;}_4e4();return _4e3;},_play:function(_4e5){var _4e6=this;if(_4e6._delayTimer){_4e6._clearTimer();}_4e6._startTime=new Date().valueOf();if(_4e6._paused){_4e6._startTime-=_4e6.duration*_4e6._percent;}_4e6._active=true;_4e6._paused=false;var _4e7=_4e6.curve.getValue(_4e6._getStep());if(!_4e6._percent){if(!_4e6._startRepeatCount){_4e6._startRepeatCount=_4e6.repeat;}_4e6._fire("onBegin",[_4e7]);}_4e6._fire("onPlay",[_4e7]);_4e6._cycle();return _4e6;},pause:function(){var _4e8=this;if(_4e8._delayTimer){_4e8._clearTimer();}_4e8._stopTimer();if(!_4e8._active){return _4e8;}_4e8._paused=true;_4e8._fire("onPause",[_4e8.curve.getValue(_4e8._getStep())]);return _4e8;},gotoPercent:function(_4e9,_4ea){var _4eb=this;_4eb._stopTimer();_4eb._active=_4eb._paused=true;_4eb._percent=_4e9;if(_4ea){_4eb.play();}return _4eb;},stop:function(_4ec){var _4ed=this;if(_4ed._delayTimer){_4ed._clearTimer();}if(!_4ed._timer){return _4ed;}_4ed._stopTimer();if(_4ec){_4ed._percent=1;}_4ed._fire("onStop",[_4ed.curve.getValue(_4ed._getStep())]);_4ed._active=_4ed._paused=false;return _4ed;},destroy:function(){this.stop();},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _4ee=this;if(_4ee._active){var curr=new Date().valueOf();var step=_4ee.duration===0?1:(curr-_4ee._startTime)/(_4ee.duration);if(step>=1){step=1;}_4ee._percent=step;if(_4ee.easing){step=_4ee.easing(step);}_4ee._fire("onAnimate",[_4ee.curve.getValue(step)]);if(_4ee._percent<1){_4ee._startTimer();}else{_4ee._active=false;if(_4ee.repeat>0){_4ee.repeat--;_4ee.play(null,true);}else{if(_4ee.repeat==-1){_4ee.play(null,true);}else{if(_4ee._startRepeatCount){_4ee.repeat=_4ee._startRepeatCount;_4ee._startRepeatCount=0;}}}_4ee._percent=0;_4ee._fire("onEnd",[_4ee.node]);!_4ee.repeat&&_4ee._stopTimer();}}return _4ee;},_clearTimer:function(){clearTimeout(this._delayTimer);delete this._delayTimer;}});var ctr=0,_4ef=null,_4f0={run:function(){}};lang.extend(_4de,{_startTimer:function(){if(!this._timer){this._timer=_4d8.after(_4f0,"run",lang.hitch(this,"_cycle"),true);ctr++;}if(!_4ef){_4ef=setInterval(lang.hitch(_4f0,"run"),this.rate);}},_stopTimer:function(){if(this._timer){this._timer.remove();this._timer=null;ctr--;}if(ctr<=0){clearInterval(_4ef);_4ef=null;ctr=0;}}});var _4f1=has("ie")?function(node){var ns=node.style;if(!ns.width.length&&_4d9.get(node,"width")=="auto"){ns.width="auto";}}:function(){};_4db._fade=function(args){args.node=dom.byId(args.node);var _4f2=_4da({properties:{}},args),_4f3=(_4f2.properties.opacity={});_4f3.start=!("start" in _4f2)?function(){return +_4d9.get(_4f2.node,"opacity")||0;}:_4f2.start;_4f3.end=_4f2.end;var anim=_4db.animateProperty(_4f2);_4d8.after(anim,"beforeBegin",lang.partial(_4f1,_4f2.node),true);return anim;};_4db.fadeIn=function(args){return _4db._fade(_4da({end:1},args));};_4db.fadeOut=function(args){return _4db._fade(_4da({end:0},args));};_4db._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _4f4=function(_4f5){this._properties=_4f5;for(var p in _4f5){var prop=_4f5[p];if(prop.start instanceof _4d7){prop.tempColor=new _4d7();}}};_4f4.prototype.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p],_4f6=prop.start;if(_4f6 instanceof _4d7){ret[p]=_4d7.blendColors(_4f6,prop.end,r,prop.tempColor).toCss();}else{if(!lang.isArray(_4f6)){ret[p]=((prop.end-_4f6)*r)+_4f6+(p!="opacity"?prop.units||"px":0);}}}return ret;};_4db.animateProperty=function(args){var n=args.node=dom.byId(args.node);if(!args.easing){args.easing=dojo._defaultEasing;}var anim=new _4de(args);_4d8.after(anim,"beforeBegin",lang.hitch(anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];if(lang.isFunction(prop)){prop=prop(n);}prop=pm[p]=_4da({},(lang.isObject(prop)?prop:{end:prop}));if(lang.isFunction(prop.start)){prop.start=prop.start(n);}if(lang.isFunction(prop.end)){prop.end=prop.end(n);}var _4f7=(p.toLowerCase().indexOf("color")>=0);function _4f8(node,p){var v={height:node.offsetHeight,width:node.offsetWidth}[p];if(v!==undefined){return v;}v=_4d9.get(node,p);return (p=="opacity")?+v:(_4f7?v:parseFloat(v));};if(!("end" in prop)){prop.end=_4f8(n,p);}else{if(!("start" in prop)){prop.start=_4f8(n,p);}}if(_4f7){prop.start=new _4d7(prop.start);prop.end=new _4d7(prop.end);}else{prop.start=(p=="opacity")?+prop.start:parseFloat(prop.start);}}this.curve=new _4f4(pm);}),true);_4d8.after(anim,"onAnimate",lang.hitch(_4d9,"set",anim.node),true);return anim;};_4db.anim=function(node,_4f9,_4fa,_4fb,_4fc,_4fd){return _4db.animateProperty({node:node,duration:_4fa||_4de.prototype.duration,properties:_4f9,easing:_4fb,onEnd:_4fc}).play(_4fd||0);};if(1){_4da(dojo,_4db);dojo._Animation=_4de;}return _4db;});},"dojo/_base/loader":function(){define(["./kernel","../has","require","module","../json","./lang","./array"],function(dojo,has,_4fe,_4ff,json,lang,_500){if(!1){console.error("cannot load the Dojo v1.x loader with a foreign loader");return 0;}1||has.add("dojo-fast-sync-require",1);var _501=function(id){return {src:_4ff.id,id:id};},_502=function(name){return name.replace(/\./g,"/");},_503=/\/\/>>built/,_504=[],_505=[],_506=function(mid,_507,_508){_504.push(_508);_500.forEach(mid.split(","),function(mid){var _509=_50a(mid,_507.module);_505.push(_509);_50b(_509);});_50c();},_50c=(1?function(){var _50d,mid;for(mid in _50e){_50d=_50e[mid];if(_50d.noReqPluginCheck===undefined){_50d.noReqPluginCheck=/loadInit\!/.test(mid)||/require\!/.test(mid)?1:0;}if(!_50d.executed&&!_50d.noReqPluginCheck&&_50d.injected==_50f){return;}}_510(function(){var _511=_504;_504=[];_500.forEach(_511,function(cb){cb(1);});});}:(function(){var _512,_513=function(m){_512[m.mid]=1;for(var t,_514,deps=m.deps||[],i=0;i<deps.length;i++){_514=deps[i];if(!(t=_512[_514.mid])){if(t===0||!_513(_514)){_512[m.mid]=0;return false;}}}return true;};return function(){var _515,mid;_512={};for(mid in _50e){_515=_50e[mid];if(_515.executed||_515.noReqPluginCheck){_512[mid]=1;}else{if(_515.noReqPluginCheck!==0){_515.noReqPluginCheck=/loadInit\!/.test(mid)||/require\!/.test(mid)?1:0;}if(_515.noReqPluginCheck){_512[mid]=1;}else{if(_515.injected!==_540){_512[mid]=0;}}}}for(var t,i=0,end=_505.length;i<end;i++){_515=_505[i];if(!(t=_512[_515.mid])){if(t===0||!_513(_515)){return;}}}_510(function(){var _516=_504;_504=[];_500.forEach(_516,function(cb){cb(1);});});};})()),_517=function(mid,_518,_519){_518([mid],function(_51a){_518(_51a.names,function(){for(var _51b="",args=[],i=0;i<arguments.length;i++){_51b+="var "+_51a.names[i]+"= arguments["+i+"]; ";args.push(arguments[i]);}eval(_51b);var _51c=_518.module,_51d=[],_51e,_51f={provide:function(_520){_520=_502(_520);var _521=_50a(_520,_51c);if(_521!==_51c){_546(_521);}},require:function(_522,_523){_522=_502(_522);_523&&(_50a(_522,_51c).result=_541);_51d.push(_522);},requireLocalization:function(_524,_525,_526){if(!_51e){_51e=["dojo/i18n"];}_526=(_526||dojo.locale).toLowerCase();_524=_502(_524)+"/nls/"+(/root/i.test(_526)?"":_526+"/")+_502(_525);if(_50a(_524,_51c).isXd){_51e.push("dojo/i18n!"+_524);}},loadInit:function(f){f();}},hold={},p;try{for(p in _51f){hold[p]=dojo[p];dojo[p]=_51f[p];}_51a.def.apply(null,args);}catch(e){_527("error",[_501("failedDojoLoadInit"),e]);}finally{for(p in _51f){dojo[p]=hold[p];}}if(_51e){_51d=_51d.concat(_51e);}if(_51d.length){_506(_51d.join(","),_518,_519);}else{_519();}});});},_528=function(text,_529,_52a){var _52b=/\(|\)/g,_52c=1,_52d;_52b.lastIndex=_529;while((_52d=_52b.exec(text))){if(_52d[0]==")"){_52c-=1;}else{_52c+=1;}if(_52c==0){break;}}if(_52c!=0){throw "unmatched paren around character "+_52b.lastIndex+" in: "+text;}return [dojo.trim(text.substring(_52a,_52b.lastIndex))+";\n",_52b.lastIndex];},_52e=/\/\/.*|\/\*[\s\S]*?\*\/|("(?:\\.|[^"])*"|'(?:\\.|[^'])*'|`(?:\\.|[^`])*`)/mg,_52f=/(^|\s)dojo\.(loadInit|require|provide|requireLocalization|requireIf|requireAfterIf|platformRequire)\s*\(/mg,_530=/(^|\s)(require|define)\s*\(/m,_531=function(text,_532){var _533,_534,_535,_536,_537=[],_538=[],_539=[];_532=_532||text.replace(_52e,"$1");while((_533=_52f.exec(_532))){_534=_52f.lastIndex;_535=_534-_533[0].length;_536=_528(_532,_534,_535);if(_533[2]=="loadInit"){_537.push(_536[0]);}else{_538.push(_536[0]);}_52f.lastIndex=_536[1];}_539=_537.concat(_538);if(_539.length||!_530.test(_532)){return [text.replace(/(^|\s)dojo\.loadInit\s*\(/g,"\n0 && dojo.loadInit("),_539.join(""),_539];}else{return 0;}},_53a=function(_53b,text){var _53c,id,_53d=[],_53e=[];if(_503.test(text)||!(_53c=_531(text))){return 0;}id=_53b.mid+"-*loadInit";for(var p in _50a("dojo",_53b).result.scopeMap){_53d.push(p);_53e.push("\""+p+"\"");}return "// xdomain rewrite of "+_53b.mid+"\n"+"define('"+id+"',{\n"+"\tnames:"+json.stringify(_53d)+",\n"+"\tdef:function("+_53d.join(",")+"){"+_53c[1]+"}"+"});\n\n"+"define("+json.stringify(_53d.concat(["dojo/loadInit!"+id]))+", function("+_53d.join(",")+"){\n"+_53c[0]+"});";},_53f=_4fe.initSyncLoader(_506,_50c,_53a),sync=_53f.sync,_50f=_53f.requested,_540=_53f.arrived,_541=_53f.nonmodule,_542=_53f.executing,_543=_53f.executed,_544=_53f.syncExecStack,_50e=_53f.modules,_545=_53f.execQ,_50a=_53f.getModule,_50b=_53f.injectModule,_546=_53f.setArrived,_527=_53f.signal,_547=_53f.finishExec,_548=_53f.execModule,_549=_53f.getLegacyMode,_510=_53f.guardCheckComplete;_506=_53f.dojoRequirePlugin;dojo.provide=function(mid){var _54a=_544[0],_54b=lang.mixin(_50a(_502(mid),_4fe.module),{executed:_542,result:lang.getObject(mid,true)});_546(_54b);if(_54a){(_54a.provides||(_54a.provides=[])).push(function(){_54b.result=lang.getObject(mid);delete _54b.provides;_54b.executed!==_543&&_547(_54b);});}return _54b.result;};has.add("config-publishRequireResult",1,0,0);dojo.require=function(_54c,_54d){function _54e(mid,_54f){var _550=_50a(_502(mid),_4fe.module);if(_544.length&&_544[0].finish){_544[0].finish.push(mid);return undefined;}if(_550.executed){return _550.result;}_54f&&(_550.result=_541);var _551=_549();_50b(_550);_551=_549();if(_550.executed!==_543&&_550.injected===_540){_53f.guardCheckComplete(function(){_548(_550);});}if(_550.executed){return _550.result;}if(_551==sync){if(_550.cjs){_545.unshift(_550);}else{_544.length&&(_544[0].finish=[mid]);}}else{_545.push(_550);}return undefined;};var _552=_54e(_54c,_54d);if(has("config-publishRequireResult")&&!lang.exists(_54c)&&_552!==undefined){lang.setObject(_54c,_552);}return _552;};dojo.loadInit=function(f){f();};dojo.registerModulePath=function(_553,_554){var _555={};_555[_553.replace(/\./g,"/")]=_554;_4fe({paths:_555});};dojo.platformRequire=function(_556){var _557=(_556.common||[]).concat(_556[dojo._name]||_556["default"]||[]),temp;while(_557.length){if(lang.isArray(temp=_557.shift())){dojo.require.apply(dojo,temp);}else{dojo.require(temp);}}};dojo.requireIf=dojo.requireAfterIf=function(_558,_559,_55a){if(_558){dojo.require(_559,_55a);}};dojo.requireLocalization=function(_55b,_55c,_55d){_4fe(["../i18n"],function(i18n){i18n.getLocalization(_55b,_55c,_55d);});};return {extractLegacyApiApplications:_531,require:_506,loadInit:_517};});}}});(function(){var _55e=this.require;_55e({cache:{}});!_55e.async&&_55e(["dojo"]);_55e.boot&&_55e.apply(null,_55e.boot);})(); \ No newline at end of file
diff --git a/lib/dojo/dom-attr.js b/lib/dojo/dom-attr.js
index 381192c5e..2dfb6887f 100644
--- a/lib/dojo/dom-attr.js
+++ b/lib/dojo/dom-attr.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/dom-attr",["exports","./sniff","./_base/lang","./dom","./dom-style","./dom-prop"],function(_1,_2,_3,_4,_5,_6){var _7={innerHTML:1,textContent:1,className:1,htmlFor:_2("ie"),value:1},_8={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};function _9(_a,_b){var _c=_a.getAttributeNode&&_a.getAttributeNode(_b);return !!_c&&_c.specified;};_1.has=function hasAttr(_d,_e){var lc=_e.toLowerCase();return _7[_6.names[lc]||_e]||_9(_4.byId(_d),_8[lc]||_e);};_1.get=function getAttr(_f,_10){_f=_4.byId(_f);var lc=_10.toLowerCase(),_11=_6.names[lc]||_10,_12=_7[_11],_13=_f[_11];if(_12&&typeof _13!="undefined"){return _13;}if(_11=="textContent"){return _6.get(_f,_11);}if(_11!="href"&&(typeof _13=="boolean"||_3.isFunction(_13))){return _13;}var _14=_8[lc]||_10;return _9(_f,_14)?_f.getAttribute(_14):null;};_1.set=function setAttr(_15,_16,_17){_15=_4.byId(_15);if(arguments.length==2){for(var x in _16){_1.set(_15,x,_16[x]);}return _15;}var lc=_16.toLowerCase(),_18=_6.names[lc]||_16,_19=_7[_18];if(_18=="style"&&typeof _17!="string"){_5.set(_15,_17);return _15;}if(_19||typeof _17=="boolean"||_3.isFunction(_17)){return _6.set(_15,_16,_17);}_15.setAttribute(_8[lc]||_16,_17);return _15;};_1.remove=function removeAttr(_1a,_1b){_4.byId(_1a).removeAttribute(_8[_1b.toLowerCase()]||_1b);};_1.getNodeProp=function getNodeProp(_1c,_1d){_1c=_4.byId(_1c);var lc=_1d.toLowerCase(),_1e=_6.names[lc]||_1d;if((_1e in _1c)&&_1e!="href"){return _1c[_1e];}var _1f=_8[lc]||_1d;return _9(_1c,_1f)?_1c.getAttribute(_1f):null;};}); \ No newline at end of file
+define("dojo/dom-attr",["exports","./sniff","./_base/lang","./dom","./dom-style","./dom-prop"],function(_1,_2,_3,_4,_5,_6){var _7={innerHTML:1,textContent:1,className:1,htmlFor:_2("ie")?1:0,value:1},_8={classname:"class",htmlfor:"for",tabindex:"tabIndex",readonly:"readOnly"};function _9(_a,_b){var _c=_a.getAttributeNode&&_a.getAttributeNode(_b);return !!_c&&_c.specified;};_1.has=function hasAttr(_d,_e){var lc=_e.toLowerCase();return !!_7[_6.names[lc]||_e]||_9(_4.byId(_d),_8[lc]||_e);};_1.get=function getAttr(_f,_10){_f=_4.byId(_f);var lc=_10.toLowerCase(),_11=_6.names[lc]||_10,_12=_7[_11],_13=_f[_11];if(_12&&typeof _13!="undefined"){return _13;}if(_11=="textContent"){return _6.get(_f,_11);}if(_11!="href"&&(typeof _13=="boolean"||_3.isFunction(_13))){return _13;}var _14=_8[lc]||_10;return _9(_f,_14)?_f.getAttribute(_14):null;};_1.set=function setAttr(_15,_16,_17){_15=_4.byId(_15);if(arguments.length==2){for(var x in _16){_1.set(_15,x,_16[x]);}return _15;}var lc=_16.toLowerCase(),_18=_6.names[lc]||_16,_19=_7[_18];if(_18=="style"&&typeof _17!="string"){_5.set(_15,_17);return _15;}if(_19||typeof _17=="boolean"||_3.isFunction(_17)){return _6.set(_15,_16,_17);}_15.setAttribute(_8[lc]||_16,_17);return _15;};_1.remove=function removeAttr(_1a,_1b){_4.byId(_1a).removeAttribute(_8[_1b.toLowerCase()]||_1b);};_1.getNodeProp=function getNodeProp(_1c,_1d){_1c=_4.byId(_1c);var lc=_1d.toLowerCase(),_1e=_6.names[lc]||_1d;if((_1e in _1c)&&_1e!="href"){return _1c[_1e];}var _1f=_8[lc]||_1d;return _9(_1c,_1f)?_1c.getAttribute(_1f):null;};}); \ No newline at end of file
diff --git a/lib/dojo/dom-geometry.js b/lib/dojo/dom-geometry.js
index 5abc66292..a5c422583 100644
--- a/lib/dojo/dom-geometry.js
+++ b/lib/dojo/dom-geometry.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/dom-geometry",["./sniff","./_base/window","./dom","./dom-style"],function(_1,_2,_3,_4){var _5={};_5.boxModel="content-box";if(_1("ie")){_5.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";}_5.getPadExtents=function getPadExtents(_6,_7){_6=_3.byId(_6);var s=_7||_4.getComputedStyle(_6),px=_4.toPixelValue,l=px(_6,s.paddingLeft),t=px(_6,s.paddingTop),r=px(_6,s.paddingRight),b=px(_6,s.paddingBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};var _8="none";_5.getBorderExtents=function getBorderExtents(_9,_a){_9=_3.byId(_9);var px=_4.toPixelValue,s=_a||_4.getComputedStyle(_9),l=s.borderLeftStyle!=_8?px(_9,s.borderLeftWidth):0,t=s.borderTopStyle!=_8?px(_9,s.borderTopWidth):0,r=s.borderRightStyle!=_8?px(_9,s.borderRightWidth):0,b=s.borderBottomStyle!=_8?px(_9,s.borderBottomWidth):0;return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};_5.getPadBorderExtents=function getPadBorderExtents(_b,_c){_b=_3.byId(_b);var s=_c||_4.getComputedStyle(_b),p=_5.getPadExtents(_b,s),b=_5.getBorderExtents(_b,s);return {l:p.l+b.l,t:p.t+b.t,r:p.r+b.r,b:p.b+b.b,w:p.w+b.w,h:p.h+b.h};};_5.getMarginExtents=function getMarginExtents(_d,_e){_d=_3.byId(_d);var s=_e||_4.getComputedStyle(_d),px=_4.toPixelValue,l=px(_d,s.marginLeft),t=px(_d,s.marginTop),r=px(_d,s.marginRight),b=px(_d,s.marginBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};_5.getMarginBox=function getMarginBox(_f,_10){_f=_3.byId(_f);var s=_10||_4.getComputedStyle(_f),me=_5.getMarginExtents(_f,s),l=_f.offsetLeft-me.l,t=_f.offsetTop-me.t,p=_f.parentNode,px=_4.toPixelValue,pcs;if((_1("ie")==8&&!_1("quirks"))){if(p){pcs=_4.getComputedStyle(p);l-=pcs.borderLeftStyle!=_8?px(_f,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=_8?px(_f,pcs.borderTopWidth):0;}}return {l:l,t:t,w:_f.offsetWidth+me.w,h:_f.offsetHeight+me.h};};_5.getContentBox=function getContentBox(_11,_12){_11=_3.byId(_11);var s=_12||_4.getComputedStyle(_11),w=_11.clientWidth,h,pe=_5.getPadExtents(_11,s),be=_5.getBorderExtents(_11,s),l=_11.offsetLeft+pe.l+be.l,t=_11.offsetTop+pe.t+be.t;if(!w){w=_11.offsetWidth-be.w;h=_11.offsetHeight-be.h;}else{h=_11.clientHeight;}if((_1("ie")==8&&!_1("quirks"))){var p=_11.parentNode,px=_4.toPixelValue,pcs;if(p){pcs=_4.getComputedStyle(p);l-=pcs.borderLeftStyle!=_8?px(_11,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=_8?px(_11,pcs.borderTopWidth):0;}}return {l:l,t:t,w:w-pe.w,h:h-pe.h};};function _13(_14,l,t,w,h,u){u=u||"px";var s=_14.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};function _15(_16){return _16.tagName.toLowerCase()=="button"||_16.tagName.toLowerCase()=="input"&&(_16.getAttribute("type")||"").toLowerCase()=="button";};function _17(_18){return _5.boxModel=="border-box"||_18.tagName.toLowerCase()=="table"||_15(_18);};_5.setContentSize=function setContentSize(_19,box,_1a){_19=_3.byId(_19);var w=box.w,h=box.h;if(_17(_19)){var pb=_5.getPadBorderExtents(_19,_1a);if(w>=0){w+=pb.w;}if(h>=0){h+=pb.h;}}_13(_19,NaN,NaN,w,h);};var _1b={l:0,t:0,w:0,h:0};_5.setMarginBox=function setMarginBox(_1c,box,_1d){_1c=_3.byId(_1c);var s=_1d||_4.getComputedStyle(_1c),w=box.w,h=box.h,pb=_17(_1c)?_1b:_5.getPadBorderExtents(_1c,s),mb=_5.getMarginExtents(_1c,s);if(_1("webkit")){if(_15(_1c)){var ns=_1c.style;if(w>=0&&!ns.width){ns.width="4px";}if(h>=0&&!ns.height){ns.height="4px";}}}if(w>=0){w=Math.max(w-pb.w-mb.w,0);}if(h>=0){h=Math.max(h-pb.h-mb.h,0);}_13(_1c,box.l,box.t,w,h);};_5.isBodyLtr=function isBodyLtr(doc){doc=doc||_2.doc;return (_2.body(doc).dir||doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};_5.docScroll=function docScroll(doc){doc=doc||_2.doc;var _1e=_2.doc.parentWindow||_2.doc.defaultView;return "pageXOffset" in _1e?{x:_1e.pageXOffset,y:_1e.pageYOffset}:(_1e=_1("quirks")?_2.body(doc):doc.documentElement)&&{x:_5.fixIeBiDiScrollLeft(_1e.scrollLeft||0,doc),y:_1e.scrollTop||0};};_5.getIeDocumentElementOffset=function(doc){return {x:0,y:0};};_5.fixIeBiDiScrollLeft=function fixIeBiDiScrollLeft(_1f,doc){doc=doc||_2.doc;var ie=_1("ie");if(ie&&!_5.isBodyLtr(doc)){var qk=_1("quirks"),de=qk?_2.body(doc):doc.documentElement,_20=_2.global;if(ie==6&&!qk&&_20.frameElement&&de.scrollHeight>de.clientHeight){_1f+=de.clientLeft;}return (ie<8||qk)?(_1f+de.clientWidth-de.scrollWidth):-_1f;}return _1f;};_5.position=function(_21,_22){_21=_3.byId(_21);var db=_2.body(_21.ownerDocument),ret=_21.getBoundingClientRect();ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(_1("ie")<9){ret.x-=(_1("quirks")?db.clientLeft+db.offsetLeft:0);ret.y-=(_1("quirks")?db.clientTop+db.offsetTop:0);}if(_22){var _23=_5.docScroll(_21.ownerDocument);ret.x+=_23.x;ret.y+=_23.y;}return ret;};_5.getMarginSize=function getMarginSize(_24,_25){_24=_3.byId(_24);var me=_5.getMarginExtents(_24,_25||_4.getComputedStyle(_24));var _26=_24.getBoundingClientRect();return {w:(_26.right-_26.left)+me.w,h:(_26.bottom-_26.top)+me.h};};_5.normalizeEvent=function(_27){if(!("layerX" in _27)){_27.layerX=_27.offsetX;_27.layerY=_27.offsetY;}if(!("pageX" in _27)){var se=_27.target;var doc=(se&&se.ownerDocument)||document;var _28=_1("quirks")?doc.body:doc.documentElement;_27.pageX=_27.clientX+_5.fixIeBiDiScrollLeft(_28.scrollLeft||0,doc);_27.pageY=_27.clientY+(_28.scrollTop||0);}};return _5;}); \ No newline at end of file
+define("dojo/dom-geometry",["./sniff","./_base/window","./dom","./dom-style"],function(_1,_2,_3,_4){var _5={};_5.boxModel="content-box";if(_1("ie")){_5.boxModel=document.compatMode=="BackCompat"?"border-box":"content-box";}_5.getPadExtents=function getPadExtents(_6,_7){_6=_3.byId(_6);var s=_7||_4.getComputedStyle(_6),px=_4.toPixelValue,l=px(_6,s.paddingLeft),t=px(_6,s.paddingTop),r=px(_6,s.paddingRight),b=px(_6,s.paddingBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};var _8="none";_5.getBorderExtents=function getBorderExtents(_9,_a){_9=_3.byId(_9);var px=_4.toPixelValue,s=_a||_4.getComputedStyle(_9),l=s.borderLeftStyle!=_8?px(_9,s.borderLeftWidth):0,t=s.borderTopStyle!=_8?px(_9,s.borderTopWidth):0,r=s.borderRightStyle!=_8?px(_9,s.borderRightWidth):0,b=s.borderBottomStyle!=_8?px(_9,s.borderBottomWidth):0;return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};_5.getPadBorderExtents=function getPadBorderExtents(_b,_c){_b=_3.byId(_b);var s=_c||_4.getComputedStyle(_b),p=_5.getPadExtents(_b,s),b=_5.getBorderExtents(_b,s);return {l:p.l+b.l,t:p.t+b.t,r:p.r+b.r,b:p.b+b.b,w:p.w+b.w,h:p.h+b.h};};_5.getMarginExtents=function getMarginExtents(_d,_e){_d=_3.byId(_d);var s=_e||_4.getComputedStyle(_d),px=_4.toPixelValue,l=px(_d,s.marginLeft),t=px(_d,s.marginTop),r=px(_d,s.marginRight),b=px(_d,s.marginBottom);return {l:l,t:t,r:r,b:b,w:l+r,h:t+b};};_5.getMarginBox=function getMarginBox(_f,_10){_f=_3.byId(_f);var s=_10||_4.getComputedStyle(_f),me=_5.getMarginExtents(_f,s),l=_f.offsetLeft-me.l,t=_f.offsetTop-me.t,p=_f.parentNode,px=_4.toPixelValue,pcs;if((_1("ie")==8&&!_1("quirks"))){if(p){pcs=_4.getComputedStyle(p);l-=pcs.borderLeftStyle!=_8?px(_f,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=_8?px(_f,pcs.borderTopWidth):0;}}return {l:l,t:t,w:_f.offsetWidth+me.w,h:_f.offsetHeight+me.h};};_5.getContentBox=function getContentBox(_11,_12){_11=_3.byId(_11);var s=_12||_4.getComputedStyle(_11),w=_11.clientWidth,h,pe=_5.getPadExtents(_11,s),be=_5.getBorderExtents(_11,s),l=_11.offsetLeft+pe.l+be.l,t=_11.offsetTop+pe.t+be.t;if(!w){w=_11.offsetWidth-be.w;h=_11.offsetHeight-be.h;}else{h=_11.clientHeight;}if((_1("ie")==8&&!_1("quirks"))){var p=_11.parentNode,px=_4.toPixelValue,pcs;if(p){pcs=_4.getComputedStyle(p);l-=pcs.borderLeftStyle!=_8?px(_11,pcs.borderLeftWidth):0;t-=pcs.borderTopStyle!=_8?px(_11,pcs.borderTopWidth):0;}}return {l:l,t:t,w:w-pe.w,h:h-pe.h};};function _13(_14,l,t,w,h,u){u=u||"px";var s=_14.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};function _15(_16){return _16.tagName.toLowerCase()=="button"||_16.tagName.toLowerCase()=="input"&&(_16.getAttribute("type")||"").toLowerCase()=="button";};function _17(_18){return _5.boxModel=="border-box"||_18.tagName.toLowerCase()=="table"||_15(_18);};function _19(_1a){var _1b={x:0,y:0,width:0,height:0,top:0,right:0,bottom:0,left:0},ret;try{ret=_1a.getBoundingClientRect();}catch(e){return _1b;}if(typeof ret.left==="undefined"){return _1b;}return ret;};_5.setContentSize=function setContentSize(_1c,box,_1d){_1c=_3.byId(_1c);var w=box.w,h=box.h;if(_17(_1c)){var pb=_5.getPadBorderExtents(_1c,_1d);if(w>=0){w+=pb.w;}if(h>=0){h+=pb.h;}}_13(_1c,NaN,NaN,w,h);};var _1e={l:0,t:0,w:0,h:0};_5.setMarginBox=function setMarginBox(_1f,box,_20){_1f=_3.byId(_1f);var s=_20||_4.getComputedStyle(_1f),w=box.w,h=box.h,pb=_17(_1f)?_1e:_5.getPadBorderExtents(_1f,s),mb=_5.getMarginExtents(_1f,s);if(_1("webkit")){if(_15(_1f)){var ns=_1f.style;if(w>=0&&!ns.width){ns.width="4px";}if(h>=0&&!ns.height){ns.height="4px";}}}if(w>=0){w=Math.max(w-pb.w-mb.w,0);}if(h>=0){h=Math.max(h-pb.h-mb.h,0);}_13(_1f,box.l,box.t,w,h);};_5.isBodyLtr=function isBodyLtr(doc){doc=doc||_2.doc;return (_2.body(doc).dir||doc.documentElement.dir||"ltr").toLowerCase()=="ltr";};_5.docScroll=function docScroll(doc){doc=doc||_2.doc;var _21=doc.parentWindow||doc.defaultView;return "pageXOffset" in _21?{x:_21.pageXOffset,y:_21.pageYOffset}:(_21=_1("quirks")?_2.body(doc):doc.documentElement)&&{x:_5.fixIeBiDiScrollLeft(_21.scrollLeft||0,doc),y:_21.scrollTop||0};};_5.getIeDocumentElementOffset=function(doc){return {x:0,y:0};};_5.fixIeBiDiScrollLeft=function fixIeBiDiScrollLeft(_22,doc){doc=doc||_2.doc;var ie=_1("ie");if(ie&&!_5.isBodyLtr(doc)){var qk=_1("quirks"),de=qk?_2.body(doc):doc.documentElement,_23=_2.global;if(ie==6&&!qk&&_23.frameElement&&de.scrollHeight>de.clientHeight){_22+=de.clientLeft;}return (ie<8||qk)?(_22+de.clientWidth-de.scrollWidth):-_22;}return _22;};_5.position=function(_24,_25){_24=_3.byId(_24);var db=_2.body(_24.ownerDocument),ret=_19(_24);ret={x:ret.left,y:ret.top,w:ret.right-ret.left,h:ret.bottom-ret.top};if(_1("ie")<9){ret.x-=(_1("quirks")?db.clientLeft+db.offsetLeft:0);ret.y-=(_1("quirks")?db.clientTop+db.offsetTop:0);}if(_25){var _26=_5.docScroll(_24.ownerDocument);ret.x+=_26.x;ret.y+=_26.y;}return ret;};_5.getMarginSize=function getMarginSize(_27,_28){_27=_3.byId(_27);var me=_5.getMarginExtents(_27,_28||_4.getComputedStyle(_27));var _29=_19(_27);return {w:(_29.right-_29.left)+me.w,h:(_29.bottom-_29.top)+me.h};};_5.normalizeEvent=function(_2a){if(!("layerX" in _2a)){_2a.layerX=_2a.offsetX;_2a.layerY=_2a.offsetY;}if(!("pageX" in _2a)){var se=_2a.target;var doc=(se&&se.ownerDocument)||document;var _2b=_1("quirks")?doc.body:doc.documentElement;_2a.pageX=_2a.clientX+_5.fixIeBiDiScrollLeft(_2b.scrollLeft||0,doc);_2a.pageY=_2a.clientY+(_2b.scrollTop||0);}};return _5;}); \ No newline at end of file
diff --git a/lib/dojo/dom.js b/lib/dojo/dom.js
index 04f2cad67..3cde9a3ad 100644
--- a/lib/dojo/dom.js
+++ b/lib/dojo/dom.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/dom",["./sniff","./_base/window","./_base/kernel"],function(_1,_2,_3){if(_1("ie")<=7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}}var _4={};if(_1("ie")){_4.byId=function(id,_5){if(typeof id!="string"){return id;}var _6=_5||_2.doc,te=id&&_6.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var _7=_6.all[id];if(!_7||_7.nodeName){_7=[_7];}var i=0;while((te=_7[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}};}else{_4.byId=function(id,_8){return ((typeof id=="string")?(_8||_2.doc).getElementById(id):id)||null;};}var _9=_3.global["document"]||null;_1.add("dom-contains",!!(_9&&_9.contains));_4.isDescendant=_1("dom-contains")?function(_a,_b){return !!((_b=_4.byId(_b))&&_b.contains(_4.byId(_a)));}:function(_c,_d){try{_c=_4.byId(_c);_d=_4.byId(_d);while(_c){if(_c==_d){return true;}_c=_c.parentNode;}}catch(e){}return false;};_1.add("css-user-select",function(_e,_f,_10){if(!_10){return false;}var _11=_10.style;var _12=["Khtml","O","Moz","Webkit"],i=_12.length,_13="userSelect",_14;do{if(typeof _11[_13]!=="undefined"){return _13;}}while(i--&&(_13=_12[i]+"UserSelect"));return false;});var _15=_1("css-user-select");_4.setSelectable=_15?function(_16,_17){_4.byId(_16).style[_15]=_17?"":"none";}:function(_18,_19){_18=_4.byId(_18);var _1a=_18.getElementsByTagName("*"),i=_1a.length;if(_19){_18.removeAttribute("unselectable");while(i--){_1a[i].removeAttribute("unselectable");}}else{_18.setAttribute("unselectable","on");while(i--){_1a[i].setAttribute("unselectable","on");}}};return _4;}); \ No newline at end of file
+define("dojo/dom",["./sniff","./_base/window","./_base/kernel"],function(_1,_2,_3){if(_1("ie")<=7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}}var _4={};if(_1("ie")){_4.byId=function(id,_5){if(typeof id!="string"){return id||null;}var _6=_5||_2.doc,te=id&&_6.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var _7=_6.all[id];if(!_7||_7.nodeName){_7=[_7];}var i=0;while((te=_7[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}return null;};}else{_4.byId=function(id,_8){return ((typeof id=="string")?(_8||_2.doc).getElementById(id):id)||null;};}var _9=_3.global["document"]||null;_1.add("dom-contains",!!(_9&&_9.contains));_4.isDescendant=_1("dom-contains")?function(_a,_b){return !!((_b=_4.byId(_b))&&_b.contains(_4.byId(_a)));}:function(_c,_d){try{_c=_4.byId(_c);_d=_4.byId(_d);while(_c){if(_c==_d){return true;}_c=_c.parentNode;}}catch(e){}return false;};_1.add("css-user-select",function(_e,_f,_10){if(!_10){return false;}var _11=_10.style;var _12=["Khtml","O","Moz","Webkit"],i=_12.length,_13="userSelect",_14;do{if(typeof _11[_13]!=="undefined"){return _13;}}while(i--&&(_13=_12[i]+"UserSelect"));return false;});var _15=_1("css-user-select");_4.setSelectable=_15?function(_16,_17){_4.byId(_16).style[_15]=_17?"":"none";}:function(_18,_19){_18=_4.byId(_18);var _1a=_18.getElementsByTagName("*"),i=_1a.length;if(_19){_18.removeAttribute("unselectable");while(i--){_1a[i].removeAttribute("unselectable");}}else{_18.setAttribute("unselectable","on");while(i--){_1a[i].setAttribute("unselectable","on");}}};return _4;}); \ No newline at end of file
diff --git a/lib/dojo/i18n.js b/lib/dojo/i18n.js
index 0bd4c2fe9..2c2ed3dc6 100644
--- a/lib/dojo/i18n.js
+++ b/lib/dojo/i18n.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/i18n",["./_base/kernel","require","./has","./_base/array","./_base/config","./_base/lang","./_base/xhr","./json","module"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9){_3.add("dojo-preload-i18n-Api",1);1||_3.add("dojo-v1x-i18n-Api",1);var _a=_1.i18n={},_b=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,_c=function(_d,_e,_f,_10){for(var _11=[_f+_10],_12=_e.split("-"),_13="",i=0;i<_12.length;i++){_13+=(_13?"-":"")+_12[i];if(!_d||_d[_13]){_11.push(_f+_13+"/"+_10);_11.specificity=_13;}}return _11;},_14={},_15=function(_16,_17,_18){_18=_18?_18.toLowerCase():_1.locale;_16=_16.replace(/\./g,"/");_17=_17.replace(/\./g,"/");return (/root/i.test(_18))?(_16+"/nls/"+_17):(_16+"/nls/"+_18+"/"+_17);},_19=_1.getL10nName=function(_1a,_1b,_1c){return _1a=_9.id+"!"+_15(_1a,_1b,_1c);},_1d=function(_1e,_1f,_20,_21,_22,_23){_1e([_1f],function(_24){var _25=_6.clone(_24.root||_24.ROOT),_26=_c(!_24._v1x&&_24,_22,_20,_21);_1e(_26,function(){for(var i=1;i<_26.length;i++){_25=_6.mixin(_6.clone(_25),arguments[i]);}var _27=_1f+"/"+_22;_14[_27]=_25;_25.$locale=_26.specificity;_23();});});},_28=function(id,_29){return /^\./.test(id)?_29(id):id;},_2a=function(_2b){var _2c=_5.extraLocale||[];_2c=_6.isArray(_2c)?_2c:[_2c];_2c.push(_2b);return _2c;},_2d=function(id,_2e,_2f){var _30=_b.exec(id),_31=_30[1]+"/",_32=_30[5]||_30[4],_33=_31+_32,_34=(_30[5]&&_30[4]),_35=_34||_1.locale||"",_36=_33+"/"+_35,_37=_34?[_35]:_2a(_35),_38=_37.length,_39=function(){if(!--_38){_2f(_6.delegate(_14[_36]));}},_3a=id.split("*"),_3b=_3a[1]=="preload";if(_3("dojo-preload-i18n-Api")){if(_3b){if(!_14[id]){_14[id]=1;_46(_3a[2],_8.parse(_3a[3]),1,_2e);}_2f(1);}if(_3b||(_67(id,_2e,_2f)&&!_14[_36])){return;}}else{if(_3b){_2f(1);return;}}_4.forEach(_37,function(_3c){var _3d=_33+"/"+_3c;if(_3("dojo-preload-i18n-Api")){_3e(_3d);}if(!_14[_3d]){_1d(_2e,_33,_31,_32,_3c,_39);}else{_39();}});};if(_3("dojo-preload-i18n-Api")||1){var _3f=_a.normalizeLocale=function(_40){var _41=_40?_40.toLowerCase():_1.locale;return _41=="root"?"ROOT":_41;},_42=function(mid,_43){return (1&&1)?_43.isXdUrl(_2.toUrl(mid+".js")):true;},_44=0,_45=[],_46=_a._preloadLocalizations=function(_47,_48,_49,_4a){_4a=_4a||_2;function _4b(mid,_4c){if(_42(mid,_4a)||_49){_4a([mid],_4c);}else{_6c([mid],_4c,_4a);}};function _4d(_4e,_4f){var _50=_4e.split("-");while(_50.length){if(_4f(_50.join("-"))){return;}_50.pop();}_4f("ROOT");};function _51(){_44++;};function _52(){--_44;while(!_44&&_45.length){_2d.apply(null,_45.shift());}};function _53(_54,_55,loc,_56){return _56.toAbsMid(_54+_55+"/"+loc);};function _57(_58){_58=_3f(_58);_4d(_58,function(loc){if(_4.indexOf(_48,loc)>=0){var mid=_47.replace(/\./g,"/")+"_"+loc;_51();_4b(mid,function(_59){for(var p in _59){var _5a=_59[p],_5b=p.match(/(.+)\/([^\/]+)$/),_5c,_5d;if(!_5b){continue;}_5c=_5b[2];_5d=_5b[1]+"/";if(!_5a._localized){continue;}var _5e;if(loc==="ROOT"){var _5f=_5e=_5a._localized;delete _5a._localized;_5f.root=_5a;_14[_2.toAbsMid(p)]=_5f;}else{_5e=_5a._localized;_14[_53(_5d,_5c,loc,_2)]=_5a;}if(loc!==_58){function _60(_61,_62,_63,_64){var _65=[],_66=[];_4d(_58,function(loc){if(_64[loc]){_65.push(_2.toAbsMid(_61+loc+"/"+_62));_66.push(_53(_61,_62,loc,_2));}});if(_65.length){_51();_4a(_65,function(){for(var i=_65.length-1;i>=0;i--){_63=_6.mixin(_6.clone(_63),arguments[i]);_14[_66[i]]=_63;}_14[_53(_61,_62,_58,_2)]=_6.clone(_63);_52();});}else{_14[_53(_61,_62,_58,_2)]=_63;}};_60(_5d,_5c,_5a,_5e);}}_52();});return true;}return false;});};_57();_4.forEach(_1.config.extraLocale,_57);},_67=function(id,_68,_69){if(_44){_45.push([id,_68,_69]);}return _44;},_3e=function(){};}if(1){var _6a={},_6b,_6c=function(_6d,_6e,_6f){var _70=[];_4.forEach(_6d,function(mid){var url=_6f.toUrl(mid+".js");function _2d(_71){if(!_6b){_6b=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},"+"\t require = function(){define.called = 1;};"+"try{"+"define.called = 0;"+"eval(__bundle);"+"if(define.called==1)"+"return __amdValue;"+"if((__checkForLegacyModules = __checkForLegacyModules(__mid)))"+"return __checkForLegacyModules;"+"}catch(e){}"+"try{"+"return eval('('+__bundle+')');"+"}catch(e){"+"return e;"+"}");}var _72=_6b(_71,_3e,mid,_6a);if(_72===_6a){_70.push(_14[url]=_6a.result);}else{if(_72 instanceof Error){console.error("failed to evaluate i18n bundle; url="+url,_72);_72={};}_70.push(_14[url]=(/nls\/[^\/]+\/[^\/]+$/.test(url)?_72:{root:_72,_v1x:1}));}};if(_14[url]){_70.push(_14[url]);}else{var _73=_6f.syncLoadNls(mid);if(!_73){_73=_3e(mid.replace(/nls\/([^\/]*)\/([^\/]*)$/,"nls/$2/$1"));}if(_73){_70.push(_73);}else{if(!_7){try{_6f.getText(url,true,_2d);}catch(e){_70.push(_14[url]={});}}else{_7.get({url:url,sync:true,load:_2d,error:function(){_70.push(_14[url]={});}});}}}});_6e&&_6e.apply(null,_70);};_3e=function(_74){for(var _75,_76=_74.split("/"),_77=_1.global[_76[0]],i=1;_77&&i<_76.length-1;_77=_77[_76[i++]]){}if(_77){_75=_77[_76[i]];if(!_75){_75=_77[_76[i].replace(/-/g,"_")];}if(_75){_14[_74]=_75;}}return _75;};_a.getLocalization=function(_78,_79,_7a){var _7b,_7c=_15(_78,_79,_7a);_2d(_7c,(!_42(_7c,_2)?function(_7d,_7e){_6c(_7d,_7e,_2);}:_2),function(_7f){_7b=_7f;});return _7b;};}return _6.mixin(_a,{dynamic:true,normalize:_28,load:_2d,cache:_14,getL10nName:_19});}); \ No newline at end of file
+define("dojo/i18n",["./_base/kernel","require","./has","./_base/array","./_base/config","./_base/lang","./_base/xhr","./json","module"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9){_3.add("dojo-preload-i18n-Api",1);1||_3.add("dojo-v1x-i18n-Api",1);var _a=_1.i18n={},_b=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,_c=function(_d,_e,_f,_10){for(var _11=[_f+_10],_12=_e.split("-"),_13="",i=0;i<_12.length;i++){_13+=(_13?"-":"")+_12[i];if(!_d||_d[_13]){_11.push(_f+_13+"/"+_10);_11.specificity=_13;}}return _11;},_14={},_15=function(_16,_17,_18){_18=_18?_18.toLowerCase():_1.locale;_16=_16.replace(/\./g,"/");_17=_17.replace(/\./g,"/");return (/root/i.test(_18))?(_16+"/nls/"+_17):(_16+"/nls/"+_18+"/"+_17);},_19=_1.getL10nName=function(_1a,_1b,_1c){return _1a=_9.id+"!"+_15(_1a,_1b,_1c);},_1d=function(_1e,_1f,_20,_21,_22,_23){_1e([_1f],function(_24){var _25=_6.clone(_24.root||_24.ROOT),_26=_c(!_24._v1x&&_24,_22,_20,_21);_1e(_26,function(){for(var i=1;i<_26.length;i++){_25=_6.mixin(_6.clone(_25),arguments[i]);}var _27=_1f+"/"+_22;_14[_27]=_25;_25.$locale=_26.specificity;_23();});});},_28=function(id,_29){return /^\./.test(id)?_29(id):id;},_2a=function(_2b){var _2c=_5.extraLocale||[];_2c=_6.isArray(_2c)?_2c:[_2c];_2c.push(_2b);return _2c;},_2d=function(id,_2e,_2f){var _30=_b.exec(id),_31=_30[1]+"/",_32=_30[5]||_30[4],_33=_31+_32,_34=(_30[5]&&_30[4]),_35=_34||_1.locale||"",_36=_33+"/"+_35,_37=_34?[_35]:_2a(_35),_38=_37.length,_39=function(){if(!--_38){_2f(_6.delegate(_14[_36]));}},_3a=id.split("*"),_3b=_3a[1]=="preload";if(_3("dojo-preload-i18n-Api")){if(_3b){if(!_14[id]){_14[id]=1;_46(_3a[2],_8.parse(_3a[3]),1,_2e);}_2f(1);}if(_3b||(_67(id,_2e,_2f)&&!_14[_36])){return;}}else{if(_3b){_2f(1);return;}}_4.forEach(_37,function(_3c){var _3d=_33+"/"+_3c;if(_3("dojo-preload-i18n-Api")){_3e(_3d);}if(!_14[_3d]){_1d(_2e,_33,_31,_32,_3c,_39);}else{_39();}});};if(_3("dojo-preload-i18n-Api")||1){var _3f=_a.normalizeLocale=function(_40){var _41=_40?_40.toLowerCase():_1.locale;return _41=="root"?"ROOT":_41;},_42=function(mid,_43){return (1&&1)?_43.isXdUrl(_2.toUrl(mid+".js")):true;},_44=0,_45=[],_46=_a._preloadLocalizations=function(_47,_48,_49,_4a){_4a=_4a||_2;function _4b(mid,_4c){if(_42(mid,_4a)||_49){_4a([mid],_4c);}else{_6d([mid],_4c,_4a);}};function _4d(_4e,_4f){var _50=_4e.split("-");while(_50.length){if(_4f(_50.join("-"))){return;}_50.pop();}_4f("ROOT");};function _51(){_44++;};function _52(){--_44;while(!_44&&_45.length){_2d.apply(null,_45.shift());}};function _53(_54,_55,loc,_56){return _56.toAbsMid(_54+_55+"/"+loc);};function _57(_58){_58=_3f(_58);_4d(_58,function(loc){if(_4.indexOf(_48,loc)>=0){var mid=_47.replace(/\./g,"/")+"_"+loc;_51();_4b(mid,function(_59){for(var p in _59){var _5a=_59[p],_5b=p.match(/(.+)\/([^\/]+)$/),_5c,_5d;if(!_5b){continue;}_5c=_5b[2];_5d=_5b[1]+"/";if(!_5a._localized){continue;}var _5e;if(loc==="ROOT"){var _5f=_5e=_5a._localized;delete _5a._localized;_5f.root=_5a;_14[_2.toAbsMid(p)]=_5f;}else{_5e=_5a._localized;_14[_53(_5d,_5c,loc,_2)]=_5a;}if(loc!==_58){function _60(_61,_62,_63,_64){var _65=[],_66=[];_4d(_58,function(loc){if(_64[loc]){_65.push(_2.toAbsMid(_61+loc+"/"+_62));_66.push(_53(_61,_62,loc,_2));}});if(_65.length){_51();_4a(_65,function(){for(var i=_65.length-1;i>=0;i--){_63=_6.mixin(_6.clone(_63),arguments[i]);_14[_66[i]]=_63;}_14[_53(_61,_62,_58,_2)]=_6.clone(_63);_52();});}else{_14[_53(_61,_62,_58,_2)]=_63;}};_60(_5d,_5c,_5a,_5e);}}_52();});return true;}return false;});};_57();_4.forEach(_1.config.extraLocale,_57);},_67=function(id,_68,_69){if(_44){_45.push([id,_68,_69]);}return _44;},_3e=function(){};}if(1){var _6a={},_6b={},_6c,_6d=function(_6e,_6f,_70){var _71=[];_4.forEach(_6e,function(mid){var url=_70.toUrl(mid+".js");function _2d(_72){if(!_6c){_6c=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},"+"\t require = function(){define.called = 1;};"+"try{"+"define.called = 0;"+"eval(__bundle);"+"if(define.called==1)"+"return __amdValue;"+"if((__checkForLegacyModules = __checkForLegacyModules(__mid)))"+"return __checkForLegacyModules;"+"}catch(e){}"+"try{"+"return eval('('+__bundle+')');"+"}catch(e){"+"return e;"+"}");}var _73=_6c(_72,_3e,mid,_6a);if(_73===_6a){_71.push(_14[url]=_6a.result);}else{if(_73 instanceof Error){console.error("failed to evaluate i18n bundle; url="+url,_73);_73={};}_71.push(_14[url]=(/nls\/[^\/]+\/[^\/]+$/.test(url)?_73:{root:_73,_v1x:1}));}};if(_14[url]){_71.push(_14[url]);}else{var _74=_70.syncLoadNls(mid);if(!_74){_74=_3e(mid.replace(/nls\/([^\/]*)\/([^\/]*)$/,"nls/$2/$1"));}if(_74){_71.push(_74);}else{if(!_7){try{_70.getText(url,true,_2d);}catch(e){_71.push(_14[url]={});}}else{_7.get({url:url,sync:true,load:_2d,error:function(){_71.push(_14[url]={});}});}}}});_6f&&_6f.apply(null,_71);};_3e=function(_75){for(var _76,_77=_75.split("/"),_78=_1.global[_77[0]],i=1;_78&&i<_77.length-1;_78=_78[_77[i++]]){}if(_78){_76=_78[_77[i]];if(!_76){_76=_78[_77[i].replace(/-/g,"_")];}if(_76){_14[_75]=_76;}}return _76;};_a.getLocalization=function(_79,_7a,_7b){var _7c,_7d=_15(_79,_7a,_7b);if(_6b[_7d]){return _6b[_7d];}_2d(_7d,(!_42(_7d,_2)?function(_7e,_7f){_6d(_7e,_7f,_2);}:_2),function(_80){_6b[_7d]=_80;_7c=_80;});return _7c;};}else{_a.getLocalization=function(_81,_82,_83){var key=_81.replace(/\./g,"/")+"/nls/"+_82+"/"+(_83||_5.locale);return this.cache[key];};}return _6.mixin(_a,{dynamic:true,normalize:_28,load:_2d,cache:_14,getL10nName:_19});}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_ROOT.js b/lib/dojo/nls/tt-rss-layer_ROOT.js
index 7d1203315..7f59a685b 100644
--- a/lib/dojo/nls/tt-rss-layer_ROOT.js
+++ b/lib/dojo/nls/tt-rss-layer_ROOT.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_ROOT",{"dijit/form/nls/validate":{"invalidMessage":"The value entered is not valid.","rangeMessage":"This value is out of range.","_localized":{"he":1,"zh-tw":1,"pt-pt":1,"nl":1,"kk":1,"tr":1,"bg":1,"ko":1,"el":1,"hr":1,"hu":1,"es":1,"eu":1,"bs":1,"uk":1,"id":1,"ca":1,"ro":1,"fi":1,"ru":1,"it":1,"fr":1,"cs":1,"ja":1,"sk":1,"da":1,"sl":1,"pl":1,"mk":1,"de":1,"sr":1,"sv":1,"pt":1,"ar":1,"zh":1,"nb":1,"az":1,"th":1},"missingMessage":"This value is required."},"dijit/nls/loading":{"_localized":{"he":1,"zh-tw":1,"pt-pt":1,"nl":1,"kk":1,"tr":1,"bg":1,"ko":1,"el":1,"hr":1,"hu":1,"es":1,"eu":1,"bs":1,"uk":1,"id":1,"ca":1,"ro":1,"fi":1,"ru":1,"it":1,"fr":1,"cs":1,"ja":1,"sk":1,"da":1,"sl":1,"pl":1,"mk":1,"de":1,"sr":1,"sv":1,"pt":1,"ar":1,"zh":1,"nb":1,"az":1,"th":1},"loadingState":"Loading...","errorState":"Sorry, an error occurred"},"dojo/nls/colors":{"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","transparent":"transparent","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","_localized":{"he":1,"zh-tw":1,"pt-pt":1,"nl":1,"kk":1,"tr":1,"bg":1,"ko":1,"el":1,"hr":1,"hu":1,"es":1,"eu":1,"bs":1,"uk":1,"id":1,"ca":1,"ro":1,"fi":1,"ru":1,"it":1,"fr":1,"cs":1,"ja":1,"sk":1,"da":1,"sl":1,"pl":1,"mk":1,"de":1,"sr":1,"sv":1,"pt":1,"ar":1,"zh":1,"nb":1,"az":1,"th":1},"gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{"he":1,"zh-hant":1,"zh-tw":1,"pt-pt":1,"nl":1,"tr":1,"ko":1,"el":1,"en":1,"hr":1,"hu":1,"es":1,"bs":1,"id":1,"ca":1,"ro":1,"fi":1,"ru":1,"it":1,"fr":1,"cs":1,"en-au":1,"ja":1,"sk":1,"da":1,"sl":1,"pl":1,"mk":1,"de":1,"fr-ch":1,"sr":1,"sv":1,"pt":1,"ar":1,"zh":1,"nb":1,"th":1,"zh-hk":1},"decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000T","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Previous choices","_localized":{"he":1,"zh-tw":1,"pt-pt":1,"nl":1,"kk":1,"tr":1,"bg":1,"ko":1,"el":1,"hr":1,"hu":1,"es":1,"eu":1,"bs":1,"uk":1,"id":1,"ca":1,"ro":1,"fi":1,"ru":1,"it":1,"fr":1,"cs":1,"ja":1,"sk":1,"da":1,"sl":1,"pl":1,"mk":1,"de":1,"sr":1,"sv":1,"pt":1,"ar":1,"zh":1,"nb":1,"az":1,"th":1},"nextMessage":"More choices"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancel","_localized":{"he":1,"zh-tw":1,"pt-pt":1,"nl":1,"kk":1,"tr":1,"bg":1,"ko":1,"el":1,"hr":1,"hu":1,"es":1,"eu":1,"bs":1,"uk":1,"id":1,"ca":1,"ro":1,"fi":1,"ru":1,"it":1,"fr":1,"cs":1,"ja":1,"sk":1,"da":1,"sl":1,"pl":1,"mk":1,"de":1,"sr":1,"sv":1,"pt":1,"ar":1,"zh":1,"nb":1,"az":1,"th":1},"buttonSave":"Save","itemClose":"Close"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_ROOT",{"dojo/nls/colors":{"aliceblue":"alice blue","antiquewhite":"antique white","aqua":"aqua","aquamarine":"aquamarine","azure":"azure","beige":"beige","bisque":"bisque","black":"black","blanchedalmond":"blanched almond","blue":"blue","blueviolet":"blue-violet","brown":"brown","burlywood":"burlywood","cadetblue":"cadet blue","chartreuse":"chartreuse","chocolate":"chocolate","coral":"coral","cornflowerblue":"cornflower blue","cornsilk":"cornsilk","crimson":"crimson","cyan":"cyan","darkblue":"dark blue","darkcyan":"dark cyan","darkgoldenrod":"dark goldenrod","darkgray":"dark gray","darkgreen":"dark green","darkgrey":"dark gray","darkkhaki":"dark khaki","darkmagenta":"dark magenta","darkolivegreen":"dark olive green","darkorange":"dark orange","darkorchid":"dark orchid","darkred":"dark red","darksalmon":"dark salmon","darkseagreen":"dark sea green","darkslateblue":"dark slate blue","darkslategray":"dark slate gray","darkslategrey":"dark slate gray","darkturquoise":"dark turquoise","darkviolet":"dark violet","deeppink":"deep pink","deepskyblue":"deep sky blue","dimgray":"dim gray","dimgrey":"dim gray","dodgerblue":"dodger blue","firebrick":"fire brick","floralwhite":"floral white","forestgreen":"forest green","fuchsia":"fuchsia","gainsboro":"gainsboro","ghostwhite":"ghost white","gold":"gold","goldenrod":"goldenrod","gray":"gray","green":"green","greenyellow":"green-yellow","grey":"gray","honeydew":"honeydew","hotpink":"hot pink","indianred":"indian red","indigo":"indigo","ivory":"ivory","khaki":"khaki","lavender":"lavender","lavenderblush":"lavender blush","lawngreen":"lawn green","lemonchiffon":"lemon chiffon","lightblue":"light blue","lightcoral":"light coral","lightcyan":"light cyan","lightgoldenrodyellow":"light goldenrod yellow","lightgray":"light gray","lightgreen":"light green","lightgrey":"light gray","lightpink":"light pink","lightsalmon":"light salmon","lightseagreen":"light sea green","lightskyblue":"light sky blue","lightslategray":"light slate gray","lightslategrey":"light slate gray","lightsteelblue":"light steel blue","lightyellow":"light yellow","lime":"lime","limegreen":"lime green","linen":"linen","magenta":"magenta","maroon":"maroon","mediumaquamarine":"medium aquamarine","mediumblue":"medium blue","mediumorchid":"medium orchid","mediumpurple":"medium purple","mediumseagreen":"medium sea green","mediumslateblue":"medium slate blue","mediumspringgreen":"medium spring green","mediumturquoise":"medium turquoise","mediumvioletred":"medium violet-red","midnightblue":"midnight blue","mintcream":"mint cream","mistyrose":"misty rose","moccasin":"moccasin","navajowhite":"navajo white","navy":"navy","oldlace":"old lace","olive":"olive","olivedrab":"olive drab","orange":"orange","orangered":"orange red","orchid":"orchid","palegoldenrod":"pale goldenrod","palegreen":"pale green","paleturquoise":"pale turquoise","palevioletred":"pale violet-red","papayawhip":"papaya whip","peachpuff":"peach puff","peru":"peru","pink":"pink","plum":"plum","powderblue":"powder blue","purple":"purple","red":"red","rosybrown":"rosy brown","royalblue":"royal blue","saddlebrown":"saddle brown","salmon":"salmon","sandybrown":"sandy brown","seagreen":"sea green","seashell":"seashell","sienna":"sienna","silver":"silver","skyblue":"sky blue","slateblue":"slate blue","slategray":"slate gray","slategrey":"slate gray","snow":"snow","springgreen":"spring green","steelblue":"steel blue","tan":"tan","teal":"teal","thistle":"thistle","tomato":"tomato","transparent":"transparent","turquoise":"turquoise","violet":"violet","wheat":"wheat","white":"white","whitesmoke":"white smoke","yellow":"yellow","yellowgreen":"yellow green","_localized":{"ar":1,"az":1,"bg":1,"bs":1,"ca":1,"cs":1,"da":1,"de":1,"el":1,"es":1,"eu":1,"fi":1,"fr":1,"he":1,"hr":1,"hu":1,"id":1,"it":1,"ja":1,"kk":1,"ko":1,"mk":1,"nb":1,"nl":1,"pl":1,"pt":1,"pt-pt":1,"ro":1,"ru":1,"sk":1,"sl":1,"sr":1,"sv":1,"th":1,"tr":1,"uk":1,"zh":1,"zh-tw":1}},"dijit/nls/loading":{"loadingState":"Loading...","errorState":"Sorry, an error occurred","_localized":{"al":1,"ar":1,"az":1,"bg":1,"bs":1,"ca":1,"cs":1,"da":1,"de":1,"el":1,"es":1,"eu":1,"fi":1,"fr":1,"he":1,"hr":1,"hu":1,"id":1,"it":1,"ja":1,"kk":1,"ko":1,"mk":1,"nb":1,"nl":1,"pl":1,"pt":1,"pt-pt":1,"ro":1,"ru":1,"sk":1,"sl":1,"sr":1,"sv":1,"th":1,"tr":1,"uk":1,"zh":1,"zh-tw":1}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close","_localized":{"al":1,"ar":1,"az":1,"bg":1,"bs":1,"ca":1,"cs":1,"da":1,"de":1,"el":1,"es":1,"eu":1,"fi":1,"fr":1,"he":1,"hr":1,"hu":1,"id":1,"it":1,"ja":1,"kk":1,"ko":1,"mk":1,"nb":1,"nl":1,"pl":1,"pt":1,"pt-pt":1,"ro":1,"ru":1,"sk":1,"sl":1,"sr":1,"sv":1,"th":1,"tr":1,"uk":1,"zh":1,"zh-tw":1}},"dijit/form/nls/validate":{"invalidMessage":"The value entered is not valid.","missingMessage":"This value is required.","rangeMessage":"This value is out of range.","_localized":{"al":1,"ar":1,"az":1,"bg":1,"bs":1,"ca":1,"cs":1,"da":1,"de":1,"el":1,"es":1,"eu":1,"fi":1,"fr":1,"he":1,"hr":1,"hu":1,"id":1,"it":1,"ja":1,"kk":1,"ko":1,"mk":1,"nb":1,"nl":1,"pl":1,"pt":1,"pt-pt":1,"ro":1,"ru":1,"sk":1,"sl":1,"sr":1,"sv":1,"th":1,"tr":1,"uk":1,"zh":1,"zh-tw":1}},"dijit/form/nls/ComboBox":{"previousMessage":"Previous choices","nextMessage":"More choices","_localized":{"al":1,"ar":1,"az":1,"bg":1,"bs":1,"ca":1,"cs":1,"da":1,"de":1,"el":1,"es":1,"eu":1,"fi":1,"fr":1,"he":1,"hr":1,"hu":1,"id":1,"it":1,"ja":1,"kk":1,"ko":1,"mk":1,"nb":1,"nl":1,"pl":1,"pt":1,"pt-pt":1,"ro":1,"ru":1,"sk":1,"sl":1,"sr":1,"sv":1,"th":1,"tr":1,"uk":1,"zh":1,"zh-tw":1}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤ #,##0.00","perMille":"‰","approximatelySign":"~","group":",","percentFormat":"#,##0%","decimalFormat-long":"000T","decimalFormat":"#,##0.###","currencyFormat-short":"¤ 000T","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{"ar":1,"bs":1,"ca":1,"cs":1,"da":1,"de":1,"el":1,"en":1,"en-au":1,"en-ca":1,"es":1,"fi":1,"fr":1,"fr-ch":1,"he":1,"hr":1,"hu":1,"id":1,"it":1,"ja":1,"ko":1,"mk":1,"nb":1,"nl":1,"pl":1,"pt":1,"pt-pt":1,"ro":1,"ru":1,"sk":1,"sl":1,"sr":1,"sv":1,"th":1,"tr":1,"zh":1,"zh-hant":1,"zh-hk":1,"zh-tw":1}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_ar.js b/lib/dojo/nls/tt-rss-layer_ar.js
index 826e23a91..45cc339d1 100644
--- a/lib/dojo/nls/tt-rss-layer_ar.js
+++ b/lib/dojo/nls/tt-rss-layer_ar.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_ar",{"dijit/form/nls/validate":{"invalidMessage":"القيمة التي تم ادخالها غير صحيحة.","rangeMessage":"هذه القيمة ليس بالمدى الصحيح.","_localized":{},"missingMessage":"يجب ادخال هذه القيمة."},"dijit/nls/loading":{"_localized":{},"loadingState":"جاري التحميل...","errorState":"عفوا، حدث خطأ"},"dojo/nls/colors":{"lightsteelblue":"أزرق معدني فاتح","orangered":"أحمر مائل للبرتقالي","midnightblue":"أزرق بحري","cadetblue":"أزرق ملون بالرمادي","seashell":"أبيض مائل للأصفر فاتح","slategrey":"رمادي اردوازي","coral":"مرجاني","darkturquoise":"تركواز داكن","antiquewhite":"أبيض عتيق","mediumspringgreen":"أخضر ربيعي متوسط","transparent":"شفاف","salmon":"برتقالي وردي شاحب","darkgrey":"رمادي داكن","ivory":"عاجي","greenyellow":"أخضر مائل للأصفر","mistyrose":"وردي","lightsalmon":"فضي فاتح","silver":"فضي","dimgrey":"رمادي شاحب","orange":"برتقالي","white":"أبيض","navajowhite":"أبيض ملاحي","royalblue":"أزرق ملكي","deeppink":"أحمر وردي غامق","lime":"ليموني","oldlace":"برتقالي مائل للأصفر شاحب","chartreuse":"أخضر مائل للصفرة","darkcyan":"أزرق سماوي داكن","yellow":"أصفر","linen":"كتاني","olive":"أخضر زيتوني داكن","gold":"ذهبي","lawngreen":"أخضر بلون العشب","lightyellow":"أصفر فاتح","tan":"خمري","darkviolet":"بنفسجي داكن","lightslategrey":"رمادي اردوازي فاتح","grey":"رمادي","darkkhaki":"كاكي داكن","green":"أخضر","deepskyblue":"أزرق سماوي غامق","aqua":"أزرق مائي","sienna":"بني محروق","mintcream":"أصفر شاحب مائل للأخضر الزرعي","rosybrown":"بني وردي","mediumslateblue":"أزرق اردوازي متوسط","magenta":"أحمر قرمزي","lightseagreen":"أخضر مائل للأزرق فاتح","cyan":"أزرق سماوي","olivedrab":"أسود فاتح","darkgoldenrod":"أصفر ذهبي داكن","slateblue":"أزرق اردوازي","mediumaquamarine":"أزرق مائل للأخضر (زبرجد) متوسط","lavender":"أرجواني شاحب","mediumseagreen":"أخضر مائل للأزرق متوسط","maroon":"أحمر داكن","darkslategray":"رمادي اردوازي داكن","mediumturquoise":"تركواز متوسط","ghostwhite":"أبيض شفاف","darkblue":"أزرق داكن","mediumvioletred":"أحمر-بنفسجي متوسط","brown":"بني","lightgray":"رمادي فاتح","sandybrown":"بني مائل للصفرة","pink":"وردي","firebrick":"أصفر زاهي","indigo":"نيلي","snow":"أبيض ثلجي","darkorchid":"أرجواني داكن","turquoise":"تركواز","chocolate":"بني غامق","springgreen":"أخضر ربيعي","moccasin":"نحاسي أحمر","navy":"أزرق داكن","lemonchiffon":"أصفر شفاف","teal":"بترولي","floralwhite":"أبيض زهري","cornflowerblue":"أزرق عنبري","paleturquoise":"تركواز شاحب","purple":"ارجواني","_localized":{},"gainsboro":"رمادي مائل للأزرق فاتح","plum":"أرجواني داكن","red":"أحمر","blue":"أزرق","forestgreen":"أخضر بلون أشجار الغابات","darkgreen":"أخضر داكن","honeydew":"أبيض مائل للأخضر","darkseagreen":"أخضر مائل للأزرق داكن","lightcoral":"مرجاني فاتح","palevioletred":"أحمر-بنفسجي شاحب","mediumpurple":"قرمزي متوسط","saddlebrown":"بني فاتح","darkmagenta":"قرمزي داكن","thistle":"ارجواني شاحب","whitesmoke":"دخان أبيض","wheat":"أخضر قمحي","violet":"بنفسجي","lightskyblue":"أزرق سماوي فاتح","goldenrod":"أصفر ذهبي","mediumblue":"أزرق متوسط","skyblue":"أزرق سماوي","crimson":"قرمزي","darksalmon":"فضي داكن","darkred":"أحمر داكن","darkslategrey":"رمادي اردوازي داكن","peru":"بني جملي","lightgrey":"رمادي فاتح","lightgoldenrodyellow":"أصفر ذهبي فاتح","blanchedalmond":"أخضر مائل للبياض","aliceblue":"أزرق فاتح","bisque":"أصفر برتقالي الى رمادي مصفر","slategray":"رمادي اردوازي","palegoldenrod":"أصفر ذهبي شاحب","darkorange":"برتقالي داكن","aquamarine":"أزرق مائل للأخضر (زبرجد)","lightgreen":"أخضر فاتح","burlywood":"خشبي","dodgerblue":"أزرق عنبري","darkgray":"رمادي داكن","lightcyan":"سماوي فاتح","powderblue":"أزرق مائل للأصفر","blueviolet":"أزرق-بنفسجي","orchid":"أرجواني فاتح","dimgray":"رمادي شاحب","beige":"بيج","fuchsia":"فوشيا","lavenderblush":"أحمر أرجواني","hotpink":"أحمر وردي زاهي","steelblue":"أزرق معدني","tomato":"أحمر مائل للأصفر","lightpink":"وردي فاتح","limegreen":"أخضر ليموني","indianred":"أحمر هندي","papayawhip":"خوخي فاتح","lightslategray":"رمادي اردوازي فاتح","gray":"رمادي","mediumorchid":"أرجواني متوسط","cornsilk":"حريري","black":"أسود","seagreen":"أخضر مائل للأزرق","darkslateblue":"أزرق اردوازي داكن","khaki":"كاكي","lightblue":"أزرق فاتح","palegreen":"أخضر شاحب","azure":"أزرق سماوي","peachpuff":"خوخي مائل للأصفر","darkolivegreen":"أخضر زيتوني داكن","yellowgreen":"أخضر مائل للأصفر"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 ترليو","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 تريليون","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"الاختيارات السابقة","_localized":{},"nextMessage":"مزيد من الاختيارات"},"dijit/nls/common":{"buttonOk":"حسنا","buttonCancel":"الغاء","_localized":{},"buttonSave":"حفظ","itemClose":"اغلاق"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_ar",{"dojo/nls/colors":{"aliceblue":"أزرق فاتح","antiquewhite":"أبيض عتيق","aqua":"أزرق مائي","aquamarine":"أزرق مائل للأخضر (زبرجد)","azure":"أزرق سماوي","beige":"بيج","bisque":"أصفر برتقالي الى رمادي مصفر","black":"أسود","blanchedalmond":"أخضر مائل للبياض","blue":"أزرق","blueviolet":"أزرق-بنفسجي","brown":"بني","burlywood":"خشبي","cadetblue":"أزرق ملون بالرمادي","chartreuse":"أخضر مائل للصفرة","chocolate":"بني غامق","coral":"مرجاني","cornflowerblue":"أزرق عنبري","cornsilk":"حريري","crimson":"قرمزي","cyan":"أزرق سماوي","darkblue":"أزرق داكن","darkcyan":"أزرق سماوي داكن","darkgoldenrod":"أصفر ذهبي داكن","darkgray":"رمادي داكن","darkgreen":"أخضر داكن","darkgrey":"رمادي داكن","darkkhaki":"كاكي داكن","darkmagenta":"قرمزي داكن","darkolivegreen":"أخضر زيتوني داكن","darkorange":"برتقالي داكن","darkorchid":"أرجواني داكن","darkred":"أحمر داكن","darksalmon":"فضي داكن","darkseagreen":"أخضر مائل للأزرق داكن","darkslateblue":"أزرق اردوازي داكن","darkslategray":"رمادي اردوازي داكن","darkslategrey":"رمادي اردوازي داكن","darkturquoise":"تركواز داكن","darkviolet":"بنفسجي داكن","deeppink":"أحمر وردي غامق","deepskyblue":"أزرق سماوي غامق","dimgray":"رمادي شاحب","dimgrey":"رمادي شاحب","dodgerblue":"أزرق عنبري","firebrick":"أصفر زاهي","floralwhite":"أبيض زهري","forestgreen":"أخضر بلون أشجار الغابات","fuchsia":"فوشيا","gainsboro":"رمادي مائل للأزرق فاتح","ghostwhite":"أبيض شفاف","gold":"ذهبي","goldenrod":"أصفر ذهبي","gray":"رمادي","green":"أخضر","greenyellow":"أخضر مائل للأصفر","grey":"رمادي","honeydew":"أبيض مائل للأخضر","hotpink":"أحمر وردي زاهي","indianred":"أحمر هندي","indigo":"نيلي","ivory":"عاجي","khaki":"كاكي","lavender":"أرجواني شاحب","lavenderblush":"أحمر أرجواني","lawngreen":"أخضر بلون العشب","lemonchiffon":"أصفر شفاف","lightblue":"أزرق فاتح","lightcoral":"مرجاني فاتح","lightcyan":"سماوي فاتح","lightgoldenrodyellow":"أصفر ذهبي فاتح","lightgray":"رمادي فاتح","lightgreen":"أخضر فاتح","lightgrey":"رمادي فاتح","lightpink":"وردي فاتح","lightsalmon":"فضي فاتح","lightseagreen":"أخضر مائل للأزرق فاتح","lightskyblue":"أزرق سماوي فاتح","lightslategray":"رمادي اردوازي فاتح","lightslategrey":"رمادي اردوازي فاتح","lightsteelblue":"أزرق معدني فاتح","lightyellow":"أصفر فاتح","lime":"ليموني","limegreen":"أخضر ليموني","linen":"كتاني","magenta":"أحمر قرمزي","maroon":"أحمر داكن","mediumaquamarine":"أزرق مائل للأخضر (زبرجد) متوسط","mediumblue":"أزرق متوسط","mediumorchid":"أرجواني متوسط","mediumpurple":"قرمزي متوسط","mediumseagreen":"أخضر مائل للأزرق متوسط","mediumslateblue":"أزرق اردوازي متوسط","mediumspringgreen":"أخضر ربيعي متوسط","mediumturquoise":"تركواز متوسط","mediumvioletred":"أحمر-بنفسجي متوسط","midnightblue":"أزرق بحري","mintcream":"أصفر شاحب مائل للأخضر الزرعي","mistyrose":"وردي","moccasin":"نحاسي أحمر","navajowhite":"أبيض ملاحي","navy":"أزرق داكن","oldlace":"برتقالي مائل للأصفر شاحب","olive":"أخضر زيتوني داكن","olivedrab":"أسود فاتح","orange":"برتقالي","orangered":"أحمر مائل للبرتقالي","orchid":"أرجواني فاتح","palegoldenrod":"أصفر ذهبي شاحب","palegreen":"أخضر شاحب","paleturquoise":"تركواز شاحب","palevioletred":"أحمر-بنفسجي شاحب","papayawhip":"خوخي فاتح","peachpuff":"خوخي مائل للأصفر","peru":"بني جملي","pink":"وردي","plum":"أرجواني داكن","powderblue":"أزرق مائل للأصفر","purple":"ارجواني","red":"أحمر","rosybrown":"بني وردي","royalblue":"أزرق ملكي","saddlebrown":"بني فاتح","salmon":"برتقالي وردي شاحب","sandybrown":"بني مائل للصفرة","seagreen":"أخضر مائل للأزرق","seashell":"أبيض مائل للأصفر فاتح","sienna":"بني محروق","silver":"فضي","skyblue":"أزرق سماوي","slateblue":"أزرق اردوازي","slategray":"رمادي اردوازي","slategrey":"رمادي اردوازي","snow":"أبيض ثلجي","springgreen":"أخضر ربيعي","steelblue":"أزرق معدني","tan":"خمري","teal":"بترولي","thistle":"ارجواني شاحب","tomato":"أحمر مائل للأصفر","transparent":"شفاف","turquoise":"تركواز","violet":"بنفسجي","wheat":"أخضر قمحي","white":"أبيض","whitesmoke":"دخان أبيض","yellow":"أصفر","yellowgreen":"أخضر مائل للأصفر","_localized":{}},"dijit/nls/loading":{"loadingState":"جاري التحميل...","errorState":"عفوا، حدث خطأ","_localized":{}},"dijit/nls/common":{"buttonOk":"حسنا","buttonCancel":"الغاء","buttonSave":"حفظ","itemClose":"اغلاق","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"القيمة التي تم ادخالها غير صحيحة.","missingMessage":"يجب ادخال هذه القيمة.","rangeMessage":"هذه القيمة ليس بالمدى الصحيح.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"الاختيارات السابقة","nextMessage":"مزيد من الاختيارات","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":"؛","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 ترليون","currencySpacing-afterCurrency-insertBetween":" ","nan":"ليس رقمًا","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","approximatelySign":"~","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 ترليون","decimalFormat":"#,##0.###","currencyFormat-short":"000 ترليون ¤","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_ca.js b/lib/dojo/nls/tt-rss-layer_ca.js
index 29dc87ec3..039e9f4d2 100644
--- a/lib/dojo/nls/tt-rss-layer_ca.js
+++ b/lib/dojo/nls/tt-rss-layer_ca.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_ca",{"dijit/form/nls/validate":{"invalidMessage":"El valor introduït no és vàlid","rangeMessage":"Aquest valor és fora de l'interval","_localized":{},"missingMessage":"Aquest valor és necessari"},"dijit/nls/loading":{"_localized":{},"loadingState":"S'està carregant...","errorState":"Ens sap greu. S'ha produït un error."},"dojo/nls/colors":{"lightsteelblue":"blau acer clar","orangered":"taronja vermellós","midnightblue":"blau mitjanit","cadetblue":"blau marí","seashell":"petxina marina","slategrey":"gris pissarra","coral":"corall","darkturquoise":"turquesa fosc","antiquewhite":"blanc antic","mediumspringgreen":"verd primavera mitjà","transparent":"transparent","salmon":"salmó","darkgrey":"gris fosc","ivory":"marbre","greenyellow":"verd grogós","mistyrose":"rosa dens","lightsalmon":"salmó clar","silver":"argent","dimgrey":"gris fosc","orange":"taronja","white":"blanc","navajowhite":"blanc Navajo","royalblue":"blau marí intens","deeppink":"rosa profund","lime":"verd llimona","oldlace":"rosa cremós","chartreuse":"Llimona pàl·lid","darkcyan":"cian fosc","yellow":"groc","linen":"lli","olive":"oliva","gold":"daurat","lawngreen":"verd gespa","lightyellow":"groc clar","tan":"tan","darkviolet":"violeta fosc","lightslategrey":"gris pissarra clar","grey":"gris","darkkhaki":"caqui fosc","green":"verd","deepskyblue":"blau cel profund","aqua":"aigua","sienna":"siena","mintcream":"menta pàl·lid","rosybrown":"marró rosat","mediumslateblue":"blau pissarra mitjà","magenta":"magenta","lightseagreen":"verd marí clar","cyan":"cian","olivedrab":"gris oliva","darkgoldenrod":"ocre fosc","slateblue":"blau pissarra","mediumaquamarine":"aiguamarina mitjana","lavender":"lavanda","mediumseagreen":"verd marí mitjà","maroon":"marró vermellós","darkslategray":"gris pissarra fosc","mediumturquoise":"turquesa mitjana","ghostwhite":"blanc fantasma","darkblue":"blau fosc","mediumvioletred":"vermell violeta mitjà","brown":"marró","lightgray":"gris clar","sandybrown":"marró arenós","pink":"rosa","firebrick":"maó refractari","indigo":"índigo","snow":"neu","darkorchid":"orquídia fosc","turquoise":"turquesa","chocolate":"xocolata","springgreen":"verd de primavera","moccasin":"mocassí","navy":"blau marí","lemonchiffon":"groc brisa","teal":"verd blavós","floralwhite":"blanc floral","cornflowerblue":"blau blauet","paleturquoise":"turquesa pàl·lid","purple":"porpra","_localized":{},"gainsboro":"gainsboro","plum":"pruna","red":"vermell","blue":"blau","forestgreen":"verd bosc","darkgreen":"verd fosc","honeydew":"rosada de mel","darkseagreen":"verd marí fosc","lightcoral":"corall clar","palevioletred":"vermell porpra pàl·lid","mediumpurple":"porpra mitjana","saddlebrown":"marró mitjà","darkmagenta":"magenta fosc","thistle":"card","whitesmoke":"blanc fumat","wheat":"blat","violet":"violeta","lightskyblue":"blau cel clar","goldenrod":"ocre","mediumblue":"blau mitjà","skyblue":"blau cel","crimson":"carmesí","darksalmon":"salmó fosc","darkred":"vermell fosc","darkslategrey":"gris pissarra fosc","peru":"Perú","lightgrey":"gris clar","lightgoldenrodyellow":"groc ocre clar","blanchedalmond":"ametlla pàl·lid","aliceblue":"blau cian clar","bisque":"crema","slategray":"gris pissarra","palegoldenrod":"ocre pàl·lid","darkorange":"taronja fosc","aquamarine":"aiguamarina","lightgreen":"verd clar","burlywood":"marró arenós","dodgerblue":"blau Dodger","darkgray":"gris fosc","lightcyan":"cian clar","powderblue":"blau grisós","blueviolet":"blau violeta","orchid":"orquídia","dimgray":"gris fosc","beige":"beix","fuchsia":"fúcsia","lavenderblush":"lavanda vermellosa","hotpink":"rosa fúcsia","steelblue":"blau acer","tomato":"tomàquet","lightpink":"rosa clar","limegreen":"verd llimona verda","indianred":"vermell indi","papayawhip":"préssec pastel","lightslategray":"gris pissarra clar","gray":"gris","mediumorchid":"orquídia mitjana","cornsilk":"cru","black":"negre","seagreen":"verd marí","darkslateblue":"blau pissarra fosc","khaki":"caqui","lightblue":"blau clar","palegreen":"verd pàl·lid","azure":"atzur","peachpuff":"préssec","darkolivegreen":"verd oliva fosc","yellowgreen":"verd grogós"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 bilions","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Opcions anteriors","_localized":{},"nextMessage":"Més opcions"},"dijit/nls/common":{"buttonOk":"D'acord","buttonCancel":"Cancel·la","_localized":{},"buttonSave":"Desa","itemClose":"Tanca"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_ca",{"dojo/nls/colors":{"aliceblue":"blau cian clar","antiquewhite":"blanc antic","aqua":"aigua","aquamarine":"aiguamarina","azure":"atzur","beige":"beix","bisque":"crema","black":"negre","blanchedalmond":"ametlla pàl·lid","blue":"blau","blueviolet":"blau violeta","brown":"marró","burlywood":"marró arenós","cadetblue":"blau marí","chartreuse":"Llimona pàl·lid","chocolate":"xocolata","coral":"corall","cornflowerblue":"blau blauet","cornsilk":"cru","crimson":"carmesí","cyan":"cian","darkblue":"blau fosc","darkcyan":"cian fosc","darkgoldenrod":"ocre fosc","darkgray":"gris fosc","darkgreen":"verd fosc","darkgrey":"gris fosc","darkkhaki":"caqui fosc","darkmagenta":"magenta fosc","darkolivegreen":"verd oliva fosc","darkorange":"taronja fosc","darkorchid":"orquídia fosc","darkred":"vermell fosc","darksalmon":"salmó fosc","darkseagreen":"verd marí fosc","darkslateblue":"blau pissarra fosc","darkslategray":"gris pissarra fosc","darkslategrey":"gris pissarra fosc","darkturquoise":"turquesa fosc","darkviolet":"violeta fosc","deeppink":"rosa profund","deepskyblue":"blau cel profund","dimgray":"gris fosc","dimgrey":"gris fosc","dodgerblue":"blau Dodger","firebrick":"maó refractari","floralwhite":"blanc floral","forestgreen":"verd bosc","fuchsia":"fúcsia","gainsboro":"gainsboro","ghostwhite":"blanc fantasma","gold":"daurat","goldenrod":"ocre","gray":"gris","green":"verd","greenyellow":"verd grogós","grey":"gris","honeydew":"rosada de mel","hotpink":"rosa fúcsia","indianred":"vermell indi","indigo":"índigo","ivory":"marbre","khaki":"caqui","lavender":"lavanda","lavenderblush":"lavanda vermellosa","lawngreen":"verd gespa","lemonchiffon":"groc brisa","lightblue":"blau clar","lightcoral":"corall clar","lightcyan":"cian clar","lightgoldenrodyellow":"groc ocre clar","lightgray":"gris clar","lightgreen":"verd clar","lightgrey":"gris clar","lightpink":"rosa clar","lightsalmon":"salmó clar","lightseagreen":"verd marí clar","lightskyblue":"blau cel clar","lightslategray":"gris pissarra clar","lightslategrey":"gris pissarra clar","lightsteelblue":"blau acer clar","lightyellow":"groc clar","lime":"verd llimona","limegreen":"verd llimona verda","linen":"lli","magenta":"magenta","maroon":"marró vermellós","mediumaquamarine":"aiguamarina mitjana","mediumblue":"blau mitjà","mediumorchid":"orquídia mitjana","mediumpurple":"porpra mitjana","mediumseagreen":"verd marí mitjà","mediumslateblue":"blau pissarra mitjà","mediumspringgreen":"verd primavera mitjà","mediumturquoise":"turquesa mitjana","mediumvioletred":"vermell violeta mitjà","midnightblue":"blau mitjanit","mintcream":"menta pàl·lid","mistyrose":"rosa dens","moccasin":"mocassí","navajowhite":"blanc Navajo","navy":"blau marí","oldlace":"rosa cremós","olive":"oliva","olivedrab":"gris oliva","orange":"taronja","orangered":"taronja vermellós","orchid":"orquídia","palegoldenrod":"ocre pàl·lid","palegreen":"verd pàl·lid","paleturquoise":"turquesa pàl·lid","palevioletred":"vermell porpra pàl·lid","papayawhip":"préssec pastel","peachpuff":"préssec","peru":"Perú","pink":"rosa","plum":"pruna","powderblue":"blau grisós","purple":"porpra","red":"vermell","rosybrown":"marró rosat","royalblue":"blau marí intens","saddlebrown":"marró mitjà","salmon":"salmó","sandybrown":"marró arenós","seagreen":"verd marí","seashell":"petxina marina","sienna":"siena","silver":"argent","skyblue":"blau cel","slateblue":"blau pissarra","slategray":"gris pissarra","slategrey":"gris pissarra","snow":"neu","springgreen":"verd de primavera","steelblue":"blau acer","tan":"tan","teal":"verd blavós","thistle":"card","tomato":"tomàquet","transparent":"transparent","turquoise":"turquesa","violet":"violeta","wheat":"blat","white":"blanc","whitesmoke":"blanc fumat","yellow":"groc","yellowgreen":"verd grogós","_localized":{}},"dijit/nls/loading":{"loadingState":"S'està carregant...","errorState":"Ens sap greu. S'ha produït un error.","_localized":{}},"dijit/nls/common":{"buttonOk":"D'acord","buttonCancel":"Cancel·la","buttonSave":"Desa","itemClose":"Tanca","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"El valor introduït no és vàlid","missingMessage":"Aquest valor és necessari","rangeMessage":"Aquest valor és fora de l'interval","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Opcions anteriors","nextMessage":"Més opcions","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 bilions","decimalFormat":"#,##0.###","currencyFormat-short":"000 B ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_cs.js b/lib/dojo/nls/tt-rss-layer_cs.js
index 970ad0e7e..0c09a2874 100644
--- a/lib/dojo/nls/tt-rss-layer_cs.js
+++ b/lib/dojo/nls/tt-rss-layer_cs.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_cs",{"dijit/form/nls/validate":{"invalidMessage":"Zadaná hodnota není platná.","rangeMessage":"Tato hodnota je mimo rozsah.","_localized":{},"missingMessage":"Tato hodnota je vyžadována."},"dijit/nls/loading":{"_localized":{},"loadingState":"Probíhá načítání...","errorState":"Omlouváme se, došlo k chybě"},"dojo/nls/colors":{"lightsteelblue":"světlá ocelová modrá","orangered":"oranžovočervená","midnightblue":"temně modrá","cadetblue":"šedomodrá","seashell":"lasturová","slategrey":"břidlicová šedá","coral":"korálová červená","darkturquoise":"tmavě tyrkysová","antiquewhite":"krémově bílá","mediumspringgreen":"střední jarní zelená","transparent":"průhledná","salmon":"lososová","darkgrey":"tmavě šedá","ivory":"slonovinová","greenyellow":"zelenožlutá","mistyrose":"růžovobílá","lightsalmon":"světle lososová","silver":"stříbrná","dimgrey":"kouřově šedá","orange":"oranžová","white":"bílá","navajowhite":"světle krémová","royalblue":"královská modrá","deeppink":"sytě růžová","lime":"limetková","oldlace":"světle béžová","chartreuse":"chartreuska","darkcyan":"tmavě azurová","yellow":"žlutá","linen":"bledě šedobéžová","olive":"olivová","gold":"zlatá","lawngreen":"jasně zelená","lightyellow":"bledě žlutá","tan":"šedobéžová","darkviolet":"tmavě fialová","lightslategrey":"světlá břidlicová šedá","grey":"šedá","darkkhaki":"pískově hnědá","green":"zelená","deepskyblue":"sytá nebeská modrá","aqua":"azurová","sienna":"siena","mintcream":"mentolová","rosybrown":"růžovohnědá","mediumslateblue":"střední břidlicová modrá","magenta":"purpurová","lightseagreen":"světlá mořská zelená","cyan":"azurová","olivedrab":"khaki","darkgoldenrod":"tmavě béžová","slateblue":"břidlicová modrá","mediumaquamarine":"střední akvamarínová","lavender":"levandulová","mediumseagreen":"střední mořská zelená","maroon":"kaštanová","darkslategray":"tmavá břidlicová šedá","mediumturquoise":"středně tyrkysová","ghostwhite":"modravě bílá","darkblue":"tmavě modrá","mediumvioletred":"středně fialovočervená","brown":"červenohnědá","lightgray":"světle šedá","sandybrown":"oranžovohnědá","pink":"růžová","firebrick":"cihlová","indigo":"indigově modrá","snow":"sněhobílá","darkorchid":"tmavě orchidejová","turquoise":"tyrkysová","chocolate":"hnědobéžová","springgreen":"jarní zelená","moccasin":"bledě krémová","navy":"námořnická modrá","lemonchiffon":"světle citrónová","teal":"šedozelená","floralwhite":"květinově bílá","cornflowerblue":"chrpově modrá","paleturquoise":"bledě tyrkysová","purple":"nachová","_localized":{},"gainsboro":"bledě šedá","plum":"švestková","red":"červená","blue":"modrá","forestgreen":"lesní zelená","darkgreen":"tmavě zelená","honeydew":"nazelenalá","darkseagreen":"tmavá mořská zelená","lightcoral":"světle korálová","palevioletred":"bledě fialovočervená","mediumpurple":"středně nachová","saddlebrown":"hnědá","darkmagenta":"tmavě purpurová","thistle":"bodláková","whitesmoke":"kouřově bílá","wheat":"zlatohnědá","violet":"fialová","lightskyblue":"světlá nebeská modrá","goldenrod":"béžová","mediumblue":"středně modrá","skyblue":"nebeská modrá","crimson":"karmínová","darksalmon":"tmavě lososová","darkred":"tmavě červená","darkslategrey":"tmavá břidlicová šedá","peru":"karamelová","lightgrey":"světle šedá","lightgoldenrodyellow":"světle žlutá","blanchedalmond":"mandlová","aliceblue":"modravá","bisque":"bledě oranžová","slategray":"břidlicová šedá","palegoldenrod":"bledě písková","darkorange":"tmavě oranžová","aquamarine":"akvamarínová","lightgreen":"světle zelená","burlywood":"krémová","dodgerblue":"jasně modrá","darkgray":"tmavě šedá","lightcyan":"světle azurová","powderblue":"bledě modrá","blueviolet":"modrofialová","orchid":"orchidejová","dimgray":"kouřově šedá","beige":"bledě béžová","fuchsia":"fuchsiová","lavenderblush":"levandulová růžová","hotpink":"jasně růžová","steelblue":"ocelová modrá","tomato":"tomatová","lightpink":"světle růžová","limegreen":"limetkově zelená","indianred":"indiánská červená","papayawhip":"papájová","lightslategray":"světlá břidlicová šedá","gray":"šedá","mediumorchid":"středně orchidejová","cornsilk":"režná","black":"černá","seagreen":"mořská zelená","darkslateblue":"tmavá břidlicová modrá","khaki":"písková","lightblue":"světle modrá","palegreen":"bledě zelená","azure":"bledě azurová","peachpuff":"broskvová","darkolivegreen":"tmavě olivová","yellowgreen":"žlutozelená"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 bilionů","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Předchozí volby","_localized":{},"nextMessage":"Další volby"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Storno","_localized":{},"buttonSave":"Uložit","itemClose":"Zavřít"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_cs",{"dojo/nls/colors":{"aliceblue":"modravá","antiquewhite":"krémově bílá","aqua":"azurová","aquamarine":"akvamarínová","azure":"bledě azurová","beige":"bledě béžová","bisque":"bledě oranžová","black":"černá","blanchedalmond":"mandlová","blue":"modrá","blueviolet":"modrofialová","brown":"červenohnědá","burlywood":"krémová","cadetblue":"šedomodrá","chartreuse":"chartreuska","chocolate":"hnědobéžová","coral":"korálová červená","cornflowerblue":"chrpově modrá","cornsilk":"režná","crimson":"karmínová","cyan":"azurová","darkblue":"tmavě modrá","darkcyan":"tmavě azurová","darkgoldenrod":"tmavě béžová","darkgray":"tmavě šedá","darkgreen":"tmavě zelená","darkgrey":"tmavě šedá","darkkhaki":"pískově hnědá","darkmagenta":"tmavě purpurová","darkolivegreen":"tmavě olivová","darkorange":"tmavě oranžová","darkorchid":"tmavě orchidejová","darkred":"tmavě červená","darksalmon":"tmavě lososová","darkseagreen":"tmavá mořská zelená","darkslateblue":"tmavá břidlicová modrá","darkslategray":"tmavá břidlicová šedá","darkslategrey":"tmavá břidlicová šedá","darkturquoise":"tmavě tyrkysová","darkviolet":"tmavě fialová","deeppink":"sytě růžová","deepskyblue":"sytá nebeská modrá","dimgray":"kouřově šedá","dimgrey":"kouřově šedá","dodgerblue":"jasně modrá","firebrick":"cihlová","floralwhite":"květinově bílá","forestgreen":"lesní zelená","fuchsia":"fuchsiová","gainsboro":"bledě šedá","ghostwhite":"modravě bílá","gold":"zlatá","goldenrod":"béžová","gray":"šedá","green":"zelená","greenyellow":"zelenožlutá","grey":"šedá","honeydew":"nazelenalá","hotpink":"jasně růžová","indianred":"indiánská červená","indigo":"indigově modrá","ivory":"slonovinová","khaki":"písková","lavender":"levandulová","lavenderblush":"levandulová růžová","lawngreen":"jasně zelená","lemonchiffon":"světle citrónová","lightblue":"světle modrá","lightcoral":"světle korálová","lightcyan":"světle azurová","lightgoldenrodyellow":"světle žlutá","lightgray":"světle šedá","lightgreen":"světle zelená","lightgrey":"světle šedá","lightpink":"světle růžová","lightsalmon":"světle lososová","lightseagreen":"světlá mořská zelená","lightskyblue":"světlá nebeská modrá","lightslategray":"světlá břidlicová šedá","lightslategrey":"světlá břidlicová šedá","lightsteelblue":"světlá ocelová modrá","lightyellow":"bledě žlutá","lime":"limetková","limegreen":"limetkově zelená","linen":"bledě šedobéžová","magenta":"purpurová","maroon":"kaštanová","mediumaquamarine":"střední akvamarínová","mediumblue":"středně modrá","mediumorchid":"středně orchidejová","mediumpurple":"středně nachová","mediumseagreen":"střední mořská zelená","mediumslateblue":"střední břidlicová modrá","mediumspringgreen":"střední jarní zelená","mediumturquoise":"středně tyrkysová","mediumvioletred":"středně fialovočervená","midnightblue":"temně modrá","mintcream":"mentolová","mistyrose":"růžovobílá","moccasin":"bledě krémová","navajowhite":"světle krémová","navy":"námořnická modrá","oldlace":"světle béžová","olive":"olivová","olivedrab":"khaki","orange":"oranžová","orangered":"oranžovočervená","orchid":"orchidejová","palegoldenrod":"bledě písková","palegreen":"bledě zelená","paleturquoise":"bledě tyrkysová","palevioletred":"bledě fialovočervená","papayawhip":"papájová","peachpuff":"broskvová","peru":"karamelová","pink":"růžová","plum":"švestková","powderblue":"bledě modrá","purple":"nachová","red":"červená","rosybrown":"růžovohnědá","royalblue":"královská modrá","saddlebrown":"hnědá","salmon":"lososová","sandybrown":"oranžovohnědá","seagreen":"mořská zelená","seashell":"lasturová","sienna":"siena","silver":"stříbrná","skyblue":"nebeská modrá","slateblue":"břidlicová modrá","slategray":"břidlicová šedá","slategrey":"břidlicová šedá","snow":"sněhobílá","springgreen":"jarní zelená","steelblue":"ocelová modrá","tan":"šedobéžová","teal":"šedozelená","thistle":"bodláková","tomato":"tomatová","transparent":"průhledná","turquoise":"tyrkysová","violet":"fialová","wheat":"zlatohnědá","white":"bílá","whitesmoke":"kouřově bílá","yellow":"žlutá","yellowgreen":"žlutozelená","_localized":{}},"dijit/nls/loading":{"loadingState":"Probíhá načítání...","errorState":"Omlouváme se, došlo k chybě","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Storno","buttonSave":"Uložit","itemClose":"Zavřít","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Zadaná hodnota není platná.","missingMessage":"Tato hodnota je vyžadována.","rangeMessage":"Tato hodnota je mimo rozsah.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Předchozí volby","nextMessage":"Další volby","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 bilionů","decimalFormat":"#,##0.###","currencyFormat-short":"000 bil'.' ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_da.js b/lib/dojo/nls/tt-rss-layer_da.js
index 4e29a33b8..9a99d7523 100644
--- a/lib/dojo/nls/tt-rss-layer_da.js
+++ b/lib/dojo/nls/tt-rss-layer_da.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_da",{"dijit/form/nls/validate":{"invalidMessage":"Den angivne værdi er ugyldig.","rangeMessage":"Værdien er uden for intervallet.","_localized":{},"missingMessage":"Værdien er påkrævet."},"dijit/nls/loading":{"_localized":{},"loadingState":"Indlæser...","errorState":"Der er opstået en fejl"},"dojo/nls/colors":{"lightsteelblue":"lys stålblå","orangered":"orangerød","midnightblue":"midnatsblå","cadetblue":"kadetblå","seashell":"muslingeskal","slategrey":"skifergrå","coral":"koralrød","darkturquoise":"mørk turkis","antiquewhite":"antikhvid","mediumspringgreen":"mellemforårsgrøn","transparent":"transparent","salmon":"laksefarvet","darkgrey":"mørkegrå","ivory":"elfenben","greenyellow":"grøngul","mistyrose":"blegrosa","lightsalmon":"lys laksefarvet","silver":"sølv","dimgrey":"svag grå","orange":"orange","white":"hvid","navajowhite":"navajo-hvid","royalblue":"kongeblå","deeppink":"dyb pink","lime":"lime","oldlace":"kniplingshvid","chartreuse":"chartreuse","darkcyan":"mørk cyan","yellow":"gul","linen":"lærred","olive":"olivengrøn","gold":"guld","lawngreen":"græsgrøn","lightyellow":"lysegul","tan":"tan","darkviolet":"mørkelilla","lightslategrey":"lys skifergrå","grey":"grå","darkkhaki":"mørk khaki","green":"grøn","deepskyblue":"dyb himmelblå","aqua":"akvablå","sienna":"sienna","mintcream":"pebermyntecreme","rosybrown":"rosabrun","mediumslateblue":"mellemskiferblå","magenta":"magenta","lightseagreen":"lys havgrøn","cyan":"cyan","olivedrab":"brungrøn","darkgoldenrod":"mørk gyldenris","slateblue":"skiferblå","mediumaquamarine":"mellem akvamarin","lavender":"lysviolet","mediumseagreen":"mellemhavgrøn","maroon":"rødbrun","darkslategray":"mørk skifergrå","mediumturquoise":"mellemturkis","ghostwhite":"spøgelseshvid","darkblue":"mørkeblå","mediumvioletred":"mellemviolet","brown":"brun","lightgray":"lysegrå","sandybrown":"sandbrun","pink":"pink","firebrick":"chamottesten","indigo":"indigo","snow":"sne","darkorchid":"mørk orkide","turquoise":"turkis","chocolate":"rust","springgreen":"forårsgrøn","moccasin":"fruesko","navy":"marineblå","lemonchiffon":"citronfromage","teal":"blågrøn","floralwhite":"blomsterhvid","cornflowerblue":"kornblomstblå","paleturquoise":"bleg turkis","purple":"lilla","_localized":{},"gainsboro":"gainsboro","plum":"blomme","red":"rød","blue":"blå","forestgreen":"skovgrøn","darkgreen":"mørkegrøn","honeydew":"honningdug","darkseagreen":"mørk havgrøn","lightcoral":"lys koralrød","palevioletred":"blegviolet","mediumpurple":"mellemlilla","saddlebrown":"saddelbrun","darkmagenta":"mørk magenta","thistle":"tidsel","whitesmoke":"hvid røg","wheat":"korngul","violet":"lilla","lightskyblue":"lys himmelblå","goldenrod":"gyldenris","mediumblue":"mellemblå","skyblue":"himmelblå","crimson":"blodrød","darksalmon":"mørk laksefarvet","darkred":"mørkerød","darkslategrey":"mørk skifergrå","peru":"peru","lightgrey":"lysegrå","lightgoldenrodyellow":"lys gyldenrisgul","blanchedalmond":"blanceret mandel","aliceblue":"babyblå","bisque":"gulgrå","slategray":"skifergrå","palegoldenrod":"bleg gyldenris","darkorange":"mørk orange","aquamarine":"akvamarin","lightgreen":"lysegrøn","burlywood":"tobak","dodgerblue":"dodgerblå","darkgray":"mørkegrå","lightcyan":"lys cyan","powderblue":"pudderblå","blueviolet":"blåviolet","orchid":"orkide","dimgray":"svag grå","beige":"beige","fuchsia":"lyslilla","lavenderblush":"lavendelrød","hotpink":"mørk rosa","steelblue":"metalblå","tomato":"tomat","lightpink":"lys pink","limegreen":"limegrøn","indianred":"lys rødbrun","papayawhip":"papaya","lightslategray":"lys skifergrå","gray":"grå","mediumorchid":"mellem orkide","cornsilk":"majs","black":"sort","seagreen":"havgrøn","darkslateblue":"mørk skiferblå","khaki":"khaki","lightblue":"lyseblå","palegreen":"bleggrøn","azure":"azurblå","peachpuff":"fersken","darkolivegreen":"mørk olivengrøn","yellowgreen":"gulgrøn"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 bill","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 billioner","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Forrige valg","_localized":{},"nextMessage":"Flere valg"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Annullér","_localized":{},"buttonSave":"Gem","itemClose":"Luk"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_da",{"dojo/nls/colors":{"aliceblue":"babyblå","antiquewhite":"antikhvid","aqua":"akvablå","aquamarine":"akvamarin","azure":"azurblå","beige":"beige","bisque":"gulgrå","black":"sort","blanchedalmond":"blanceret mandel","blue":"blå","blueviolet":"blåviolet","brown":"brun","burlywood":"tobak","cadetblue":"kadetblå","chartreuse":"chartreuse","chocolate":"rust","coral":"koralrød","cornflowerblue":"kornblomstblå","cornsilk":"majs","crimson":"blodrød","cyan":"cyan","darkblue":"mørkeblå","darkcyan":"mørk cyan","darkgoldenrod":"mørk gyldenris","darkgray":"mørkegrå","darkgreen":"mørkegrøn","darkgrey":"mørkegrå","darkkhaki":"mørk khaki","darkmagenta":"mørk magenta","darkolivegreen":"mørk olivengrøn","darkorange":"mørk orange","darkorchid":"mørk orkide","darkred":"mørkerød","darksalmon":"mørk laksefarvet","darkseagreen":"mørk havgrøn","darkslateblue":"mørk skiferblå","darkslategray":"mørk skifergrå","darkslategrey":"mørk skifergrå","darkturquoise":"mørk turkis","darkviolet":"mørkelilla","deeppink":"dyb pink","deepskyblue":"dyb himmelblå","dimgray":"svag grå","dimgrey":"svag grå","dodgerblue":"dodgerblå","firebrick":"chamottesten","floralwhite":"blomsterhvid","forestgreen":"skovgrøn","fuchsia":"lyslilla","gainsboro":"gainsboro","ghostwhite":"spøgelseshvid","gold":"guld","goldenrod":"gyldenris","gray":"grå","green":"grøn","greenyellow":"grøngul","grey":"grå","honeydew":"honningdug","hotpink":"mørk rosa","indianred":"lys rødbrun","indigo":"indigo","ivory":"elfenben","khaki":"khaki","lavender":"lysviolet","lavenderblush":"lavendelrød","lawngreen":"græsgrøn","lemonchiffon":"citronfromage","lightblue":"lyseblå","lightcoral":"lys koralrød","lightcyan":"lys cyan","lightgoldenrodyellow":"lys gyldenrisgul","lightgray":"lysegrå","lightgreen":"lysegrøn","lightgrey":"lysegrå","lightpink":"lys pink","lightsalmon":"lys laksefarvet","lightseagreen":"lys havgrøn","lightskyblue":"lys himmelblå","lightslategray":"lys skifergrå","lightslategrey":"lys skifergrå","lightsteelblue":"lys stålblå","lightyellow":"lysegul","lime":"lime","limegreen":"limegrøn","linen":"lærred","magenta":"magenta","maroon":"rødbrun","mediumaquamarine":"mellem akvamarin","mediumblue":"mellemblå","mediumorchid":"mellem orkide","mediumpurple":"mellemlilla","mediumseagreen":"mellemhavgrøn","mediumslateblue":"mellemskiferblå","mediumspringgreen":"mellemforårsgrøn","mediumturquoise":"mellemturkis","mediumvioletred":"mellemviolet","midnightblue":"midnatsblå","mintcream":"pebermyntecreme","mistyrose":"blegrosa","moccasin":"fruesko","navajowhite":"navajo-hvid","navy":"marineblå","oldlace":"kniplingshvid","olive":"olivengrøn","olivedrab":"brungrøn","orange":"orange","orangered":"orangerød","orchid":"orkide","palegoldenrod":"bleg gyldenris","palegreen":"bleggrøn","paleturquoise":"bleg turkis","palevioletred":"blegviolet","papayawhip":"papaya","peachpuff":"fersken","peru":"peru","pink":"pink","plum":"blomme","powderblue":"pudderblå","purple":"lilla","red":"rød","rosybrown":"rosabrun","royalblue":"kongeblå","saddlebrown":"saddelbrun","salmon":"laksefarvet","sandybrown":"sandbrun","seagreen":"havgrøn","seashell":"muslingeskal","sienna":"sienna","silver":"sølv","skyblue":"himmelblå","slateblue":"skiferblå","slategray":"skifergrå","slategrey":"skifergrå","snow":"sne","springgreen":"forårsgrøn","steelblue":"metalblå","tan":"tan","teal":"blågrøn","thistle":"tidsel","tomato":"tomat","transparent":"transparent","turquoise":"turkis","violet":"lilla","wheat":"korngul","white":"hvid","whitesmoke":"hvid røg","yellow":"gul","yellowgreen":"gulgrøn","_localized":{}},"dijit/nls/loading":{"loadingState":"Indlæser...","errorState":"Der er opstået en fejl","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Annullér","buttonSave":"Gem","itemClose":"Luk","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Den angivne værdi er ugyldig.","missingMessage":"Værdien er påkrævet.","rangeMessage":"Værdien er uden for intervallet.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Forrige valg","nextMessage":"Flere valg","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bio'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 billioner","decimalFormat":"#,##0.###","currencyFormat-short":"000 bio'.' ¤","timeSeparator":".","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_de.js b/lib/dojo/nls/tt-rss-layer_de.js
index 1ad3e107b..7e9257a9a 100644
--- a/lib/dojo/nls/tt-rss-layer_de.js
+++ b/lib/dojo/nls/tt-rss-layer_de.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_de",{"dijit/form/nls/validate":{"invalidMessage":"Der eingegebene Wert ist ungültig. ","rangeMessage":"Dieser Wert liegt außerhalb des gültigen Bereichs. ","_localized":{},"missingMessage":"Dieser Wert ist erforderlich."},"dijit/nls/loading":{"_localized":{},"loadingState":"Wird geladen...","errorState":"Es ist ein Fehler aufgetreten."},"dojo/nls/colors":{"lightsteelblue":"Helles Stahlblau","orangered":"Orangerot","midnightblue":"Mitternachtblau","cadetblue":"Kadettenblau","seashell":"Muschelweiß","slategrey":"Schiefergrau","coral":"Koralle","darkturquoise":"Dunkeltürkis","antiquewhite":"Antikweiß","mediumspringgreen":"Mittelfrühlingsgrün","transparent":"Transparent","salmon":"Lachs","darkgrey":"Dunkelgrau","ivory":"Elfenbein","greenyellow":"Grüngelb","mistyrose":"Blassrose","lightsalmon":"Helllachs","silver":"Silbergrau","dimgrey":"Blassgrau","orange":"Orange","white":"Weiß","navajowhite":"Navajo-weiß","royalblue":"Königsblau","deeppink":"Tiefrosa","lime":"Limone","oldlace":"Alte Spitze","chartreuse":"Helles Gelbgrün","darkcyan":"Dunkelzyan","yellow":"Gelb","linen":"Leinen","olive":"Oliv","gold":"Gold","lawngreen":"Grasgrün","lightyellow":"Hellgelb","tan":"Hautfarben","darkviolet":"Dunkelviolett","lightslategrey":"Helles Schiefergrau","grey":"Grau","darkkhaki":"Dunkelkhaki","green":"Grün","deepskyblue":"Dunkles Himmelblau","aqua":"Wasserblau","sienna":"Sienna","mintcream":"Mintcreme","rosybrown":"Rosigbraun","mediumslateblue":"Mittelschieferblau ","magenta":"Magenta","lightseagreen":"Helles Meergrün","cyan":"Zyan","olivedrab":"Olivgrau","darkgoldenrod":"Dunkelgoldgelb","slateblue":"Schieferblau","mediumaquamarine":"Mittelaquamarin","lavender":"Lavendelblau","mediumseagreen":"Mittelmeeresgrün","maroon":"Kastanienbraun","darkslategray":"Dunkelschiefergrau","mediumturquoise":"Mitteltürkis ","ghostwhite":"Geisterweiß","darkblue":"Dunkelblau","mediumvioletred":"Mittelviolettrot ","brown":"Braun","lightgray":"Hellgrau","sandybrown":"Sandbraun","pink":"Rosa","firebrick":"Schamottestein","indigo":"Indigoblau","snow":"Schneeweiß","darkorchid":"Dunkelorchidee","turquoise":"Türkis","chocolate":"Schokoladenbraun","springgreen":"Frühlingsgrün","moccasin":"Mokassin","navy":"Marineblau","lemonchiffon":"Zitronenchiffon","teal":"Smaragdgrün","floralwhite":"Blütenweiß","cornflowerblue":"Kornblumenblau","paleturquoise":"Blasstürkis","purple":"Purpurrot","_localized":{},"gainsboro":"Gainsboro","plum":"Pflaume","red":"Rot","blue":"Blau","forestgreen":"Forstgrün","darkgreen":"Dunkelgrün","honeydew":"Honigtau","darkseagreen":"Dunkles Meergrün","lightcoral":"Hellkoralle","palevioletred":"Blassviolettrot ","mediumpurple":"Mittelpurpur","saddlebrown":"Sattelbraun","darkmagenta":"Dunkelmagenta","thistle":"Distel","whitesmoke":"Rauchweiß","wheat":"Weizen","violet":"Violett","lightskyblue":"Helles Himmelblau","goldenrod":"Goldgelb","mediumblue":"Mittelblau","skyblue":"Himmelblau","crimson":"Karmesinrot","darksalmon":"Dunkellachs","darkred":"Dunkelrot","darkslategrey":"Dunkelschiefergrau","peru":"Peru","lightgrey":"Hellgrau","lightgoldenrodyellow":"Hellgoldgelb","blanchedalmond":"Mandelweiß","aliceblue":"Alice-blau","bisque":"Bisquit","slategray":"Schiefergrau","palegoldenrod":"Blassgoldgelb","darkorange":"Dunkelorange","aquamarine":"Aquamarin","lightgreen":"Hellgrün","burlywood":"Burlywood","dodgerblue":"Dodger-blau","darkgray":"Dunkelgrau","lightcyan":"Hellzyan","powderblue":"Pulverblau","blueviolet":"Blauviolett","orchid":"Orchidee","dimgray":"Blassgrau","beige":"Beige","fuchsia":"Fuchsia","lavenderblush":"Lavendelhauch","hotpink":"Knallrosa","steelblue":"Stahlblau","tomato":"Tomatenrot","lightpink":"Hellrosa","limegreen":"Limonengrün","indianred":"Indischrot","papayawhip":"Papayacreme","lightslategray":"Helles Schiefergrau","gray":"Grau","mediumorchid":"Mittelorchidee","cornsilk":"Kornseide","black":"Schwarz","seagreen":"Meeresgrün","darkslateblue":"Dunkelschieferblau","khaki":"Khaki","lightblue":"Hellblau","palegreen":"Blassgrün","azure":"Azur","peachpuff":"Pfirsich","darkolivegreen":"Dunkelolivgrün","yellowgreen":"Gelbgrün"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"·","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 Bio'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 Billionen","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Vorherige Auswahl","_localized":{},"nextMessage":"Weitere Auswahlmöglichkeiten"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Abbrechen","_localized":{},"buttonSave":"Speichern","itemClose":"Schließen"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_de",{"dojo/nls/colors":{"aliceblue":"Alice-blau","antiquewhite":"Antikweiß","aqua":"Wasserblau","aquamarine":"Aquamarin","azure":"Azur","beige":"Beige","bisque":"Bisquit","black":"Schwarz","blanchedalmond":"Mandelweiß","blue":"Blau","blueviolet":"Blauviolett","brown":"Braun","burlywood":"Burlywood","cadetblue":"Kadettenblau","chartreuse":"Helles Gelbgrün","chocolate":"Schokoladenbraun","coral":"Koralle","cornflowerblue":"Kornblumenblau","cornsilk":"Kornseide","crimson":"Karmesinrot","cyan":"Zyan","darkblue":"Dunkelblau","darkcyan":"Dunkelzyan","darkgoldenrod":"Dunkelgoldgelb","darkgray":"Dunkelgrau","darkgreen":"Dunkelgrün","darkgrey":"Dunkelgrau","darkkhaki":"Dunkelkhaki","darkmagenta":"Dunkelmagenta","darkolivegreen":"Dunkelolivgrün","darkorange":"Dunkelorange","darkorchid":"Dunkelorchidee","darkred":"Dunkelrot","darksalmon":"Dunkellachs","darkseagreen":"Dunkles Meergrün","darkslateblue":"Dunkelschieferblau","darkslategray":"Dunkelschiefergrau","darkslategrey":"Dunkelschiefergrau","darkturquoise":"Dunkeltürkis","darkviolet":"Dunkelviolett","deeppink":"Tiefrosa","deepskyblue":"Dunkles Himmelblau","dimgray":"Blassgrau","dimgrey":"Blassgrau","dodgerblue":"Dodger-blau","firebrick":"Schamottestein","floralwhite":"Blütenweiß","forestgreen":"Forstgrün","fuchsia":"Fuchsia","gainsboro":"Gainsboro","ghostwhite":"Geisterweiß","gold":"Gold","goldenrod":"Goldgelb","gray":"Grau","green":"Grün","greenyellow":"Grüngelb","grey":"Grau","honeydew":"Honigtau","hotpink":"Knallrosa","indianred":"Indischrot","indigo":"Indigoblau","ivory":"Elfenbein","khaki":"Khaki","lavender":"Lavendelblau","lavenderblush":"Lavendelhauch","lawngreen":"Grasgrün","lemonchiffon":"Zitronenchiffon","lightblue":"Hellblau","lightcoral":"Hellkoralle","lightcyan":"Hellzyan","lightgoldenrodyellow":"Hellgoldgelb","lightgray":"Hellgrau","lightgreen":"Hellgrün","lightgrey":"Hellgrau","lightpink":"Hellrosa","lightsalmon":"Helllachs","lightseagreen":"Helles Meergrün","lightskyblue":"Helles Himmelblau","lightslategray":"Helles Schiefergrau","lightslategrey":"Helles Schiefergrau","lightsteelblue":"Helles Stahlblau","lightyellow":"Hellgelb","lime":"Limone","limegreen":"Limonengrün","linen":"Leinen","magenta":"Magenta","maroon":"Kastanienbraun","mediumaquamarine":"Mittelaquamarin","mediumblue":"Mittelblau","mediumorchid":"Mittelorchidee","mediumpurple":"Mittelpurpur","mediumseagreen":"Mittelmeeresgrün","mediumslateblue":"Mittelschieferblau ","mediumspringgreen":"Mittelfrühlingsgrün","mediumturquoise":"Mitteltürkis ","mediumvioletred":"Mittelviolettrot ","midnightblue":"Mitternachtblau","mintcream":"Mintcreme","mistyrose":"Blassrose","moccasin":"Mokassin","navajowhite":"Navajo-weiß","navy":"Marineblau","oldlace":"Alte Spitze","olive":"Oliv","olivedrab":"Olivgrau","orange":"Orange","orangered":"Orangerot","orchid":"Orchidee","palegoldenrod":"Blassgoldgelb","palegreen":"Blassgrün","paleturquoise":"Blasstürkis","palevioletred":"Blassviolettrot ","papayawhip":"Papayacreme","peachpuff":"Pfirsich","peru":"Peru","pink":"Rosa","plum":"Pflaume","powderblue":"Pulverblau","purple":"Purpurrot","red":"Rot","rosybrown":"Rosigbraun","royalblue":"Königsblau","saddlebrown":"Sattelbraun","salmon":"Lachs","sandybrown":"Sandbraun","seagreen":"Meeresgrün","seashell":"Muschelweiß","sienna":"Sienna","silver":"Silbergrau","skyblue":"Himmelblau","slateblue":"Schieferblau","slategray":"Schiefergrau","slategrey":"Schiefergrau","snow":"Schneeweiß","springgreen":"Frühlingsgrün","steelblue":"Stahlblau","tan":"Hautfarben","teal":"Smaragdgrün","thistle":"Distel","tomato":"Tomatenrot","transparent":"Transparent","turquoise":"Türkis","violet":"Violett","wheat":"Weizen","white":"Weiß","whitesmoke":"Rauchweiß","yellow":"Gelb","yellowgreen":"Gelbgrün","_localized":{}},"dijit/nls/loading":{"loadingState":"Wird geladen...","errorState":"Es ist ein Fehler aufgetreten.","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Abbrechen","buttonSave":"Speichern","itemClose":"Schließen","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Der eingegebene Wert ist ungültig. ","missingMessage":"Dieser Wert ist erforderlich.","rangeMessage":"Dieser Wert liegt außerhalb des gültigen Bereichs. ","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Vorherige Auswahl","nextMessage":"Weitere Auswahlmöglichkeiten","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"·","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Bio'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"≈","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 Billionen","decimalFormat":"#,##0.###","currencyFormat-short":"000 Bio'.' ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_el.js b/lib/dojo/nls/tt-rss-layer_el.js
index 4fe405252..ea43ad7d3 100644
--- a/lib/dojo/nls/tt-rss-layer_el.js
+++ b/lib/dojo/nls/tt-rss-layer_el.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_el",{"dijit/form/nls/validate":{"invalidMessage":"Η τιμή που καταχωρήσατε δεν είναι έγκυρη.","rangeMessage":"Η τιμή αυτή δεν ανήκει στο εύρος έγκυρων τιμών.","_localized":{},"missingMessage":"Η τιμή αυτή πρέπει απαραίτητα να καθοριστεί."},"dijit/nls/loading":{"_localized":{},"loadingState":"Φόρτωση...","errorState":"Σας ζητούμε συγνώμη, παρουσιάστηκε σφάλμα"},"dojo/nls/colors":{"lightsteelblue":"ανοιχτό μπλε ατσαλιού","orangered":"πορτοκαλοκόκκινο","midnightblue":"πολύ σκούρο μπλε","cadetblue":"μπλε του στρατού","seashell":"κοχύλι","slategrey":"μεταλλικό γκρι","coral":"κοραλί","darkturquoise":"σκούρο τυρκουάζ","antiquewhite":"ξεθωριασμένο λευκό","mediumspringgreen":"μεσαίο πράσινο της άνοιξης","transparent":"διαφανές","salmon":"σομόν","darkgrey":"σκούρο γκρι","ivory":"ιβουάρ","greenyellow":"πρασινοκίτρινο","mistyrose":"τριανταφυλλί","lightsalmon":"ανοιχτό σομόν","silver":"ασημί","dimgrey":"αχνό γκρι","orange":"πορτοκαλί","white":"λευκό","navajowhite":"άσπρο Ναβάχο","royalblue":"έντονο μπλε","deeppink":"βαθύ ροζ","lime":"λαχανί","oldlace":"εκρού","chartreuse":"φωτεινό κιτρινοπράσινο","darkcyan":"σκούρο κυανό","yellow":"κίτρινο","linen":"σπαγγί","olive":"πράσινο λαδί","gold":"χρυσαφί","lawngreen":"σκούρο πράσινο","lightyellow":"ανοιχτό κίτρινο","tan":"ώχρα","darkviolet":"σκούρο βιολετί","lightslategrey":"ανοιχτό μεταλλικό γκρι","grey":"γκρι","darkkhaki":"σκούρο χακί","green":"πράσινο","deepskyblue":"βαθύ μπλε το ουρανού","aqua":"γαλάζιο","sienna":"καφεκίτρινο","mintcream":"βεραμάν","rosybrown":"καστανό","mediumslateblue":"μεσαίο μεταλλικό μπλε","magenta":"ματζέντα","lightseagreen":"ανοιχτό πράσινο της θάλασσας","cyan":"κυανό","olivedrab":"λαδί","darkgoldenrod":"σκούρο χρυσοκίτρινο","slateblue":"μεταλλικό μπλε","mediumaquamarine":"μεσαίο γαλαζοπράσινο","lavender":"λίλα","mediumseagreen":"μεσαίο πράσινο της θάλασσας","maroon":"βυσσινί","darkslategray":"σκούρο μεταλλικό γκρι","mediumturquoise":"μεσαίο τυρκουάζ","ghostwhite":"άσπρο","darkblue":"σκούρο μπλε","mediumvioletred":"μεσαίο κόκκινο βιολετί","brown":"καφέ","lightgray":"ανοιχτό γκρι","sandybrown":"μπεζ της άμμου","pink":"ροζ","firebrick":"κεραμιδί","indigo":"λουλακί","snow":"χιονί","darkorchid":"σκούρα ορχιδέα","turquoise":"τυρκουάζ","chocolate":"σοκολατί","springgreen":"πράσινο της άνοιξης","moccasin":"μόκα","navy":"μπλε του ναυτικού","lemonchiffon":"λεμονί","teal":"πετρόλ","floralwhite":"λευκό των ανθών","cornflowerblue":"μεσαίο μπλε","paleturquoise":"αχνό τυρκουάζ","purple":"μωβ","_localized":{},"gainsboro":"γκρι σιέλ","plum":"δαμασκηνί","red":"κόκκινο","blue":"μπλε","forestgreen":"πράσινο του δάσους","darkgreen":"σκούρο πράσινο","honeydew":"μελί","darkseagreen":"σκούρο πράσινο της θάλασσας","lightcoral":"ανοιχτό κοραλί","palevioletred":"αχνό κόκκινο βιολετί","mediumpurple":"μεσαίο μωβ","saddlebrown":"βαθύ καφέ","darkmagenta":"σκούρο ματζέντα","thistle":"μωβ βιολετί","whitesmoke":"λευκός καπνός","wheat":"σταρένιο","violet":"βιολετί","lightskyblue":"ανοιχτό μπλε το ουρανού","goldenrod":"χρυσοκίτρινο","mediumblue":"μεσαίο μπλε","skyblue":"μπλε του ουρανού","crimson":"βαθύ κόκκινο","darksalmon":"σκούρο σομόν","darkred":"σκούρο κόκκινο","darkslategrey":"σκούρο μεταλλικό γκρι","peru":"περού","lightgrey":"ανοιχτό γκρι","lightgoldenrodyellow":"ανοιχτό χρυσοκίτρινο","blanchedalmond":"ζαχαρί","aliceblue":"σιέλ","bisque":"σκούρο κρεμ","slategray":"μεταλλικό γκρι","palegoldenrod":"αχνό χρυσοκίτρινο","darkorange":"σκούρο πορτοκαλί","aquamarine":"γαλαζοπράσινο","lightgreen":"ανοιχτό πράσινο","burlywood":"καφέ του ξύλου","dodgerblue":"σκούρο ελεκτρίκ","darkgray":"σκούρο γκρι","lightcyan":"ανοιχτό κυανό","powderblue":"αχνό μπλε","blueviolet":"βιολετί","orchid":"ορχιδέα","dimgray":"αχνό γκρι","beige":"μπεζ","fuchsia":"φούξια","lavenderblush":"μωβ λεβάντας","hotpink":"έντονο ροζ","steelblue":"μπλε ατσαλιού","tomato":"κόκκινο της ντομάτας","lightpink":"ανοιχτό ροζ","limegreen":"πράσινο λαχανί","indianred":"ινδικό κόκκινο","papayawhip":"αχνό ροζ","lightslategray":"ανοιχτό μεταλλικό γκρι","gray":"γκρι","mediumorchid":"μεσαία ορχιδέα","cornsilk":"ασημί του καλαμποκιού","black":"μαύρο","seagreen":"πράσινο της θάλασσας","darkslateblue":"σκούρο μεταλλικό μπλε","khaki":"χακί","lightblue":"ανοιχτό μπλε","palegreen":"αχνό πράσινο","azure":"μπλε του ουρανού","peachpuff":"ροδακινί","darkolivegreen":"σκούρο πράσινο λαδί","yellowgreen":"κιτρινοπράσινο"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 τρισ'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 τρισεκατομμύρια","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"e"},"dijit/form/nls/ComboBox":{"previousMessage":"Προηγούμενες επιλογές","_localized":{},"nextMessage":"Περισσότερες επιλογές"},"dijit/nls/common":{"buttonOk":"ΟΚ","buttonCancel":"Ακύρωση","_localized":{},"buttonSave":"Αποθήκευση","itemClose":"Κλείσιμο"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_el",{"dojo/nls/colors":{"aliceblue":"σιέλ","antiquewhite":"ξεθωριασμένο λευκό","aqua":"γαλάζιο","aquamarine":"γαλαζοπράσινο","azure":"μπλε του ουρανού","beige":"μπεζ","bisque":"σκούρο κρεμ","black":"μαύρο","blanchedalmond":"ζαχαρί","blue":"μπλε","blueviolet":"βιολετί","brown":"καφέ","burlywood":"καφέ του ξύλου","cadetblue":"μπλε του στρατού","chartreuse":"φωτεινό κιτρινοπράσινο","chocolate":"σοκολατί","coral":"κοραλί","cornflowerblue":"μεσαίο μπλε","cornsilk":"ασημί του καλαμποκιού","crimson":"βαθύ κόκκινο","cyan":"κυανό","darkblue":"σκούρο μπλε","darkcyan":"σκούρο κυανό","darkgoldenrod":"σκούρο χρυσοκίτρινο","darkgray":"σκούρο γκρι","darkgreen":"σκούρο πράσινο","darkgrey":"σκούρο γκρι","darkkhaki":"σκούρο χακί","darkmagenta":"σκούρο ματζέντα","darkolivegreen":"σκούρο πράσινο λαδί","darkorange":"σκούρο πορτοκαλί","darkorchid":"σκούρα ορχιδέα","darkred":"σκούρο κόκκινο","darksalmon":"σκούρο σομόν","darkseagreen":"σκούρο πράσινο της θάλασσας","darkslateblue":"σκούρο μεταλλικό μπλε","darkslategray":"σκούρο μεταλλικό γκρι","darkslategrey":"σκούρο μεταλλικό γκρι","darkturquoise":"σκούρο τυρκουάζ","darkviolet":"σκούρο βιολετί","deeppink":"βαθύ ροζ","deepskyblue":"βαθύ μπλε το ουρανού","dimgray":"αχνό γκρι","dimgrey":"αχνό γκρι","dodgerblue":"σκούρο ελεκτρίκ","firebrick":"κεραμιδί","floralwhite":"λευκό των ανθών","forestgreen":"πράσινο του δάσους","fuchsia":"φούξια","gainsboro":"γκρι σιέλ","ghostwhite":"άσπρο","gold":"χρυσαφί","goldenrod":"χρυσοκίτρινο","gray":"γκρι","green":"πράσινο","greenyellow":"πρασινοκίτρινο","grey":"γκρι","honeydew":"μελί","hotpink":"έντονο ροζ","indianred":"ινδικό κόκκινο","indigo":"λουλακί","ivory":"ιβουάρ","khaki":"χακί","lavender":"λίλα","lavenderblush":"μωβ λεβάντας","lawngreen":"σκούρο πράσινο","lemonchiffon":"λεμονί","lightblue":"ανοιχτό μπλε","lightcoral":"ανοιχτό κοραλί","lightcyan":"ανοιχτό κυανό","lightgoldenrodyellow":"ανοιχτό χρυσοκίτρινο","lightgray":"ανοιχτό γκρι","lightgreen":"ανοιχτό πράσινο","lightgrey":"ανοιχτό γκρι","lightpink":"ανοιχτό ροζ","lightsalmon":"ανοιχτό σομόν","lightseagreen":"ανοιχτό πράσινο της θάλασσας","lightskyblue":"ανοιχτό μπλε το ουρανού","lightslategray":"ανοιχτό μεταλλικό γκρι","lightslategrey":"ανοιχτό μεταλλικό γκρι","lightsteelblue":"ανοιχτό μπλε ατσαλιού","lightyellow":"ανοιχτό κίτρινο","lime":"λαχανί","limegreen":"πράσινο λαχανί","linen":"σπαγγί","magenta":"ματζέντα","maroon":"βυσσινί","mediumaquamarine":"μεσαίο γαλαζοπράσινο","mediumblue":"μεσαίο μπλε","mediumorchid":"μεσαία ορχιδέα","mediumpurple":"μεσαίο μωβ","mediumseagreen":"μεσαίο πράσινο της θάλασσας","mediumslateblue":"μεσαίο μεταλλικό μπλε","mediumspringgreen":"μεσαίο πράσινο της άνοιξης","mediumturquoise":"μεσαίο τυρκουάζ","mediumvioletred":"μεσαίο κόκκινο βιολετί","midnightblue":"πολύ σκούρο μπλε","mintcream":"βεραμάν","mistyrose":"τριανταφυλλί","moccasin":"μόκα","navajowhite":"άσπρο Ναβάχο","navy":"μπλε του ναυτικού","oldlace":"εκρού","olive":"πράσινο λαδί","olivedrab":"λαδί","orange":"πορτοκαλί","orangered":"πορτοκαλοκόκκινο","orchid":"ορχιδέα","palegoldenrod":"αχνό χρυσοκίτρινο","palegreen":"αχνό πράσινο","paleturquoise":"αχνό τυρκουάζ","palevioletred":"αχνό κόκκινο βιολετί","papayawhip":"αχνό ροζ","peachpuff":"ροδακινί","peru":"περού","pink":"ροζ","plum":"δαμασκηνί","powderblue":"αχνό μπλε","purple":"μωβ","red":"κόκκινο","rosybrown":"καστανό","royalblue":"έντονο μπλε","saddlebrown":"βαθύ καφέ","salmon":"σομόν","sandybrown":"μπεζ της άμμου","seagreen":"πράσινο της θάλασσας","seashell":"κοχύλι","sienna":"καφεκίτρινο","silver":"ασημί","skyblue":"μπλε του ουρανού","slateblue":"μεταλλικό μπλε","slategray":"μεταλλικό γκρι","slategrey":"μεταλλικό γκρι","snow":"χιονί","springgreen":"πράσινο της άνοιξης","steelblue":"μπλε ατσαλιού","tan":"ώχρα","teal":"πετρόλ","thistle":"μωβ βιολετί","tomato":"κόκκινο της ντομάτας","transparent":"διαφανές","turquoise":"τυρκουάζ","violet":"βιολετί","wheat":"σταρένιο","white":"λευκό","whitesmoke":"λευκός καπνός","yellow":"κίτρινο","yellowgreen":"κιτρινοπράσινο","_localized":{}},"dijit/nls/loading":{"loadingState":"Φόρτωση...","errorState":"Σας ζητούμε συγνώμη, παρουσιάστηκε σφάλμα","_localized":{}},"dijit/nls/common":{"buttonOk":"ΟΚ","buttonCancel":"Ακύρωση","buttonSave":"Αποθήκευση","itemClose":"Κλείσιμο","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Η τιμή που καταχωρήσατε δεν είναι έγκυρη.","missingMessage":"Η τιμή αυτή πρέπει απαραίτητα να καθοριστεί.","rangeMessage":"Η τιμή αυτή δεν ανήκει στο εύρος έγκυρων τιμών.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Προηγούμενες επιλογές","nextMessage":"Περισσότερες επιλογές","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 τρισ'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 τρισεκατομμύρια","decimalFormat":"#,##0.###","currencyFormat-short":"000 τρισ'.' ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"e","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_en-gb.js b/lib/dojo/nls/tt-rss-layer_en-gb.js
index f11d0ac79..61ec7f7f6 100644
--- a/lib/dojo/nls/tt-rss-layer_en-gb.js
+++ b/lib/dojo/nls/tt-rss-layer_en-gb.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_en-gb",{"dijit/form/nls/validate":{"invalidMessage":"The value entered is not valid.","rangeMessage":"This value is out of range.","_localized":{},"missingMessage":"This value is required."},"dijit/nls/loading":{"_localized":{},"loadingState":"Loading...","errorState":"Sorry, an error occurred"},"dojo/nls/colors":{"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","transparent":"transparent","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","_localized":{},"gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 trillion","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Previous choices","_localized":{},"nextMessage":"More choices"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancel","_localized":{},"buttonSave":"Save","itemClose":"Close"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_en-gb",{"dojo/nls/colors":{"aliceblue":"alice blue","antiquewhite":"antique white","aqua":"aqua","aquamarine":"aquamarine","azure":"azure","beige":"beige","bisque":"bisque","black":"black","blanchedalmond":"blanched almond","blue":"blue","blueviolet":"blue-violet","brown":"brown","burlywood":"burlywood","cadetblue":"cadet blue","chartreuse":"chartreuse","chocolate":"chocolate","coral":"coral","cornflowerblue":"cornflower blue","cornsilk":"cornsilk","crimson":"crimson","cyan":"cyan","darkblue":"dark blue","darkcyan":"dark cyan","darkgoldenrod":"dark goldenrod","darkgray":"dark gray","darkgreen":"dark green","darkgrey":"dark gray","darkkhaki":"dark khaki","darkmagenta":"dark magenta","darkolivegreen":"dark olive green","darkorange":"dark orange","darkorchid":"dark orchid","darkred":"dark red","darksalmon":"dark salmon","darkseagreen":"dark sea green","darkslateblue":"dark slate blue","darkslategray":"dark slate gray","darkslategrey":"dark slate gray","darkturquoise":"dark turquoise","darkviolet":"dark violet","deeppink":"deep pink","deepskyblue":"deep sky blue","dimgray":"dim gray","dimgrey":"dim gray","dodgerblue":"dodger blue","firebrick":"fire brick","floralwhite":"floral white","forestgreen":"forest green","fuchsia":"fuchsia","gainsboro":"gainsboro","ghostwhite":"ghost white","gold":"gold","goldenrod":"goldenrod","gray":"gray","green":"green","greenyellow":"green-yellow","grey":"gray","honeydew":"honeydew","hotpink":"hot pink","indianred":"indian red","indigo":"indigo","ivory":"ivory","khaki":"khaki","lavender":"lavender","lavenderblush":"lavender blush","lawngreen":"lawn green","lemonchiffon":"lemon chiffon","lightblue":"light blue","lightcoral":"light coral","lightcyan":"light cyan","lightgoldenrodyellow":"light goldenrod yellow","lightgray":"light gray","lightgreen":"light green","lightgrey":"light gray","lightpink":"light pink","lightsalmon":"light salmon","lightseagreen":"light sea green","lightskyblue":"light sky blue","lightslategray":"light slate gray","lightslategrey":"light slate gray","lightsteelblue":"light steel blue","lightyellow":"light yellow","lime":"lime","limegreen":"lime green","linen":"linen","magenta":"magenta","maroon":"maroon","mediumaquamarine":"medium aquamarine","mediumblue":"medium blue","mediumorchid":"medium orchid","mediumpurple":"medium purple","mediumseagreen":"medium sea green","mediumslateblue":"medium slate blue","mediumspringgreen":"medium spring green","mediumturquoise":"medium turquoise","mediumvioletred":"medium violet-red","midnightblue":"midnight blue","mintcream":"mint cream","mistyrose":"misty rose","moccasin":"moccasin","navajowhite":"navajo white","navy":"navy","oldlace":"old lace","olive":"olive","olivedrab":"olive drab","orange":"orange","orangered":"orange red","orchid":"orchid","palegoldenrod":"pale goldenrod","palegreen":"pale green","paleturquoise":"pale turquoise","palevioletred":"pale violet-red","papayawhip":"papaya whip","peachpuff":"peach puff","peru":"peru","pink":"pink","plum":"plum","powderblue":"powder blue","purple":"purple","red":"red","rosybrown":"rosy brown","royalblue":"royal blue","saddlebrown":"saddle brown","salmon":"salmon","sandybrown":"sandy brown","seagreen":"sea green","seashell":"seashell","sienna":"sienna","silver":"silver","skyblue":"sky blue","slateblue":"slate blue","slategray":"slate gray","slategrey":"slate gray","snow":"snow","springgreen":"spring green","steelblue":"steel blue","tan":"tan","teal":"teal","thistle":"thistle","tomato":"tomato","transparent":"transparent","turquoise":"turquoise","violet":"violet","wheat":"wheat","white":"white","whitesmoke":"white smoke","yellow":"yellow","yellowgreen":"yellow green","_localized":{}},"dijit/nls/loading":{"loadingState":"Loading...","errorState":"Sorry, an error occurred","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"The value entered is not valid.","missingMessage":"This value is required.","rangeMessage":"This value is out of range.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Previous choices","nextMessage":"More choices","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","approximatelySign":"~","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 trillion","decimalFormat":"#,##0.###","currencyFormat-short":"¤000T","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_en-us.js b/lib/dojo/nls/tt-rss-layer_en-us.js
index 53aac81f9..0e13090b6 100644
--- a/lib/dojo/nls/tt-rss-layer_en-us.js
+++ b/lib/dojo/nls/tt-rss-layer_en-us.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_en-us",{"dijit/form/nls/validate":{"invalidMessage":"The value entered is not valid.","rangeMessage":"This value is out of range.","_localized":{},"missingMessage":"This value is required."},"dijit/nls/loading":{"_localized":{},"loadingState":"Loading...","errorState":"Sorry, an error occurred"},"dojo/nls/colors":{"lightsteelblue":"light steel blue","orangered":"orange red","midnightblue":"midnight blue","cadetblue":"cadet blue","seashell":"seashell","slategrey":"slate gray","coral":"coral","darkturquoise":"dark turquoise","antiquewhite":"antique white","mediumspringgreen":"medium spring green","transparent":"transparent","salmon":"salmon","darkgrey":"dark gray","ivory":"ivory","greenyellow":"green-yellow","mistyrose":"misty rose","lightsalmon":"light salmon","silver":"silver","dimgrey":"dim gray","orange":"orange","white":"white","navajowhite":"navajo white","royalblue":"royal blue","deeppink":"deep pink","lime":"lime","oldlace":"old lace","chartreuse":"chartreuse","darkcyan":"dark cyan","yellow":"yellow","linen":"linen","olive":"olive","gold":"gold","lawngreen":"lawn green","lightyellow":"light yellow","tan":"tan","darkviolet":"dark violet","lightslategrey":"light slate gray","grey":"gray","darkkhaki":"dark khaki","green":"green","deepskyblue":"deep sky blue","aqua":"aqua","sienna":"sienna","mintcream":"mint cream","rosybrown":"rosy brown","mediumslateblue":"medium slate blue","magenta":"magenta","lightseagreen":"light sea green","cyan":"cyan","olivedrab":"olive drab","darkgoldenrod":"dark goldenrod","slateblue":"slate blue","mediumaquamarine":"medium aquamarine","lavender":"lavender","mediumseagreen":"medium sea green","maroon":"maroon","darkslategray":"dark slate gray","mediumturquoise":"medium turquoise","ghostwhite":"ghost white","darkblue":"dark blue","mediumvioletred":"medium violet-red","brown":"brown","lightgray":"light gray","sandybrown":"sandy brown","pink":"pink","firebrick":"fire brick","indigo":"indigo","snow":"snow","darkorchid":"dark orchid","turquoise":"turquoise","chocolate":"chocolate","springgreen":"spring green","moccasin":"moccasin","navy":"navy","lemonchiffon":"lemon chiffon","teal":"teal","floralwhite":"floral white","cornflowerblue":"cornflower blue","paleturquoise":"pale turquoise","purple":"purple","_localized":{},"gainsboro":"gainsboro","plum":"plum","red":"red","blue":"blue","forestgreen":"forest green","darkgreen":"dark green","honeydew":"honeydew","darkseagreen":"dark sea green","lightcoral":"light coral","palevioletred":"pale violet-red","mediumpurple":"medium purple","saddlebrown":"saddle brown","darkmagenta":"dark magenta","thistle":"thistle","whitesmoke":"white smoke","wheat":"wheat","violet":"violet","lightskyblue":"light sky blue","goldenrod":"goldenrod","mediumblue":"medium blue","skyblue":"sky blue","crimson":"crimson","darksalmon":"dark salmon","darkred":"dark red","darkslategrey":"dark slate gray","peru":"peru","lightgrey":"light gray","lightgoldenrodyellow":"light goldenrod yellow","blanchedalmond":"blanched almond","aliceblue":"alice blue","bisque":"bisque","slategray":"slate gray","palegoldenrod":"pale goldenrod","darkorange":"dark orange","aquamarine":"aquamarine","lightgreen":"light green","burlywood":"burlywood","dodgerblue":"dodger blue","darkgray":"dark gray","lightcyan":"light cyan","powderblue":"powder blue","blueviolet":"blue-violet","orchid":"orchid","dimgray":"dim gray","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavender blush","hotpink":"hot pink","steelblue":"steel blue","tomato":"tomato","lightpink":"light pink","limegreen":"lime green","indianred":"indian red","papayawhip":"papaya whip","lightslategray":"light slate gray","gray":"gray","mediumorchid":"medium orchid","cornsilk":"cornsilk","black":"black","seagreen":"sea green","darkslateblue":"dark slate blue","khaki":"khaki","lightblue":"light blue","palegreen":"pale green","azure":"azure","peachpuff":"peach puff","darkolivegreen":"dark olive green","yellowgreen":"yellow green"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 trillion","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Previous choices","_localized":{},"nextMessage":"More choices"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancel","_localized":{},"buttonSave":"Save","itemClose":"Close"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_en-us",{"dojo/nls/colors":{"aliceblue":"alice blue","antiquewhite":"antique white","aqua":"aqua","aquamarine":"aquamarine","azure":"azure","beige":"beige","bisque":"bisque","black":"black","blanchedalmond":"blanched almond","blue":"blue","blueviolet":"blue-violet","brown":"brown","burlywood":"burlywood","cadetblue":"cadet blue","chartreuse":"chartreuse","chocolate":"chocolate","coral":"coral","cornflowerblue":"cornflower blue","cornsilk":"cornsilk","crimson":"crimson","cyan":"cyan","darkblue":"dark blue","darkcyan":"dark cyan","darkgoldenrod":"dark goldenrod","darkgray":"dark gray","darkgreen":"dark green","darkgrey":"dark gray","darkkhaki":"dark khaki","darkmagenta":"dark magenta","darkolivegreen":"dark olive green","darkorange":"dark orange","darkorchid":"dark orchid","darkred":"dark red","darksalmon":"dark salmon","darkseagreen":"dark sea green","darkslateblue":"dark slate blue","darkslategray":"dark slate gray","darkslategrey":"dark slate gray","darkturquoise":"dark turquoise","darkviolet":"dark violet","deeppink":"deep pink","deepskyblue":"deep sky blue","dimgray":"dim gray","dimgrey":"dim gray","dodgerblue":"dodger blue","firebrick":"fire brick","floralwhite":"floral white","forestgreen":"forest green","fuchsia":"fuchsia","gainsboro":"gainsboro","ghostwhite":"ghost white","gold":"gold","goldenrod":"goldenrod","gray":"gray","green":"green","greenyellow":"green-yellow","grey":"gray","honeydew":"honeydew","hotpink":"hot pink","indianred":"indian red","indigo":"indigo","ivory":"ivory","khaki":"khaki","lavender":"lavender","lavenderblush":"lavender blush","lawngreen":"lawn green","lemonchiffon":"lemon chiffon","lightblue":"light blue","lightcoral":"light coral","lightcyan":"light cyan","lightgoldenrodyellow":"light goldenrod yellow","lightgray":"light gray","lightgreen":"light green","lightgrey":"light gray","lightpink":"light pink","lightsalmon":"light salmon","lightseagreen":"light sea green","lightskyblue":"light sky blue","lightslategray":"light slate gray","lightslategrey":"light slate gray","lightsteelblue":"light steel blue","lightyellow":"light yellow","lime":"lime","limegreen":"lime green","linen":"linen","magenta":"magenta","maroon":"maroon","mediumaquamarine":"medium aquamarine","mediumblue":"medium blue","mediumorchid":"medium orchid","mediumpurple":"medium purple","mediumseagreen":"medium sea green","mediumslateblue":"medium slate blue","mediumspringgreen":"medium spring green","mediumturquoise":"medium turquoise","mediumvioletred":"medium violet-red","midnightblue":"midnight blue","mintcream":"mint cream","mistyrose":"misty rose","moccasin":"moccasin","navajowhite":"navajo white","navy":"navy","oldlace":"old lace","olive":"olive","olivedrab":"olive drab","orange":"orange","orangered":"orange red","orchid":"orchid","palegoldenrod":"pale goldenrod","palegreen":"pale green","paleturquoise":"pale turquoise","palevioletred":"pale violet-red","papayawhip":"papaya whip","peachpuff":"peach puff","peru":"peru","pink":"pink","plum":"plum","powderblue":"powder blue","purple":"purple","red":"red","rosybrown":"rosy brown","royalblue":"royal blue","saddlebrown":"saddle brown","salmon":"salmon","sandybrown":"sandy brown","seagreen":"sea green","seashell":"seashell","sienna":"sienna","silver":"silver","skyblue":"sky blue","slateblue":"slate blue","slategray":"slate gray","slategrey":"slate gray","snow":"snow","springgreen":"spring green","steelblue":"steel blue","tan":"tan","teal":"teal","thistle":"thistle","tomato":"tomato","transparent":"transparent","turquoise":"turquoise","violet":"violet","wheat":"wheat","white":"white","whitesmoke":"white smoke","yellow":"yellow","yellowgreen":"yellow green","_localized":{}},"dijit/nls/loading":{"loadingState":"Loading...","errorState":"Sorry, an error occurred","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancel","buttonSave":"Save","itemClose":"Close","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"The value entered is not valid.","missingMessage":"This value is required.","rangeMessage":"This value is out of range.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Previous choices","nextMessage":"More choices","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","approximatelySign":"~","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 trillion","decimalFormat":"#,##0.###","currencyFormat-short":"¤000T","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_es-es.js b/lib/dojo/nls/tt-rss-layer_es-es.js
index f5ab27a3c..02b1a3967 100644
--- a/lib/dojo/nls/tt-rss-layer_es-es.js
+++ b/lib/dojo/nls/tt-rss-layer_es-es.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_es-es",{"dijit/form/nls/validate":{"invalidMessage":"El valor especificado no es válido.","rangeMessage":"Este valor está fuera del intervalo.","_localized":{},"missingMessage":"Este valor es necesario."},"dijit/nls/loading":{"_localized":{},"loadingState":"Cargando...","errorState":"Lo siento, se ha producido un error"},"dojo/nls/colors":{"lightsteelblue":"azul acero claro","orangered":"rojo anaranjado","midnightblue":"azul medianoche","cadetblue":"azul cadete","seashell":"blanco marfil","slategrey":"gris pizarra","coral":"coral","darkturquoise":"turquesa oscuro","antiquewhite":"blanco antiguo","mediumspringgreen":"verde primavera medio","transparent":"transparente","salmon":"salmón","darkgrey":"gris oscuro","ivory":"marfil","greenyellow":"amarillo verdoso","mistyrose":"rosa difuminado","lightsalmon":"salmón claro","silver":"plateado","dimgrey":"gris marengo","orange":"naranja","white":"blanco","navajowhite":"blanco navajo","royalblue":"azul real","deeppink":"rosa fuerte","lime":"lima","oldlace":"encaje antiguo","chartreuse":"verde pálido 2","darkcyan":"cian oscuro","yellow":"amarillo","linen":"blanco arena","olive":"verde oliva","gold":"oro","lawngreen":"verde césped","lightyellow":"amarillo claro","tan":"canela","darkviolet":"violeta oscuro","lightslategrey":"gris pizarra claro","grey":"gris","darkkhaki":"caqui oscuro","green":"verde","deepskyblue":"azul cielo fuerte","aqua":"aguamarina","sienna":"siena","mintcream":"crema menta","rosybrown":"marrón rosáceo","mediumslateblue":"azul pizarra medio","magenta":"magenta","lightseagreen":"verde mar claro","cyan":"cian","olivedrab":"verde oliva pardusco","darkgoldenrod":"ocre oscuro","slateblue":"azul pizarra","mediumaquamarine":"aguamarina medio","lavender":"lavanda","mediumseagreen":"verde mar medio","maroon":"granate","darkslategray":"gris pizarra oscuro","mediumturquoise":"turquesa medio","ghostwhite":"blanco ligero","darkblue":"azul oscuro","mediumvioletred":"rojo violáceo medio","brown":"marrón","lightgray":"gris claro","sandybrown":"marrón arcilla","pink":"rosa","firebrick":"teja","indigo":"añil","snow":"nieve","darkorchid":"orquídea oscuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde fuerte","moccasin":"arena","navy":"azul marino","lemonchiffon":"amarillo pastel","teal":"verde azulado","floralwhite":"blanco manteca","cornflowerblue":"azul aciano","paleturquoise":"turquesa pálido","purple":"púrpura","_localized":{},"gainsboro":"azul gainsboro","plum":"ciruela","red":"rojo","blue":"azul","forestgreen":"verde pino","darkgreen":"verde oscuro","honeydew":"flor de rocío","darkseagreen":"verde mar oscuro","lightcoral":"coral claro","palevioletred":"rojo violáceo pálido","mediumpurple":"púrpura medio","saddlebrown":"cuero","darkmagenta":"magenta oscuro","thistle":"cardo","whitesmoke":"blanco ahumado","wheat":"trigo","violet":"violeta","lightskyblue":"azul cielo claro","goldenrod":"ocre","mediumblue":"azul medio","skyblue":"azul cielo","crimson":"carmesí","darksalmon":"salmón oscuro","darkred":"rojo oscuro","darkslategrey":"gris pizarra oscuro","peru":"perú","lightgrey":"gris claro","lightgoldenrodyellow":"ocre claro","blanchedalmond":"almendra pálido","aliceblue":"blanco azulado","bisque":"miel","slategray":"gris pizarra","palegoldenrod":"ocre pálido","darkorange":"naranja oscuro","aquamarine":"aguamarina 2","lightgreen":"verde claro","burlywood":"madera","dodgerblue":"azul fuerte","darkgray":"gris oscuro","lightcyan":"cian claro","powderblue":"azul suave","blueviolet":"azul violáceo","orchid":"orquídea","dimgray":"gris marengo","beige":"beige","fuchsia":"fucsia","lavenderblush":"lavanda rosácea","hotpink":"rosa oscuro","steelblue":"azul acero","tomato":"tomate","lightpink":"rosa claro","limegreen":"lima limón","indianred":"rojo teja","papayawhip":"papaya claro","lightslategray":"gris pizarra claro","gray":"gris","mediumorchid":"orquídea medio","cornsilk":"crudo","black":"negro","seagreen":"verde mar","darkslateblue":"azul pizarra oscuro","khaki":"caqui","lightblue":"azul claro","palegreen":"verde pálido","azure":"blanco cielo","peachpuff":"melocotón","darkolivegreen":"verde oliva oscuro","yellowgreen":"verde amarillento"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 billones","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Opciones anteriores","_localized":{},"nextMessage":"Más opciones"},"dijit/nls/common":{"buttonOk":"Aceptar","buttonCancel":"Cancelar","_localized":{},"buttonSave":"Guardar","itemClose":"Cerrar"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_es-es",{"dojo/nls/colors":{"aliceblue":"blanco azulado","antiquewhite":"blanco antiguo","aqua":"aguamarina","aquamarine":"aguamarina 2","azure":"blanco cielo","beige":"beige","bisque":"miel","black":"negro","blanchedalmond":"almendra pálido","blue":"azul","blueviolet":"azul violáceo","brown":"marrón","burlywood":"madera","cadetblue":"azul cadete","chartreuse":"verde pálido 2","chocolate":"chocolate","coral":"coral","cornflowerblue":"azul aciano","cornsilk":"crudo","crimson":"carmesí","cyan":"cian","darkblue":"azul oscuro","darkcyan":"cian oscuro","darkgoldenrod":"ocre oscuro","darkgray":"gris oscuro","darkgreen":"verde oscuro","darkgrey":"gris oscuro","darkkhaki":"caqui oscuro","darkmagenta":"magenta oscuro","darkolivegreen":"verde oliva oscuro","darkorange":"naranja oscuro","darkorchid":"orquídea oscuro","darkred":"rojo oscuro","darksalmon":"salmón oscuro","darkseagreen":"verde mar oscuro","darkslateblue":"azul pizarra oscuro","darkslategray":"gris pizarra oscuro","darkslategrey":"gris pizarra oscuro","darkturquoise":"turquesa oscuro","darkviolet":"violeta oscuro","deeppink":"rosa fuerte","deepskyblue":"azul cielo fuerte","dimgray":"gris marengo","dimgrey":"gris marengo","dodgerblue":"azul fuerte","firebrick":"teja","floralwhite":"blanco manteca","forestgreen":"verde pino","fuchsia":"fucsia","gainsboro":"azul gainsboro","ghostwhite":"blanco ligero","gold":"oro","goldenrod":"ocre","gray":"gris","green":"verde","greenyellow":"amarillo verdoso","grey":"gris","honeydew":"flor de rocío","hotpink":"rosa oscuro","indianred":"rojo teja","indigo":"añil","ivory":"marfil","khaki":"caqui","lavender":"lavanda","lavenderblush":"lavanda rosácea","lawngreen":"verde césped","lemonchiffon":"amarillo pastel","lightblue":"azul claro","lightcoral":"coral claro","lightcyan":"cian claro","lightgoldenrodyellow":"ocre claro","lightgray":"gris claro","lightgreen":"verde claro","lightgrey":"gris claro","lightpink":"rosa claro","lightsalmon":"salmón claro","lightseagreen":"verde mar claro","lightskyblue":"azul cielo claro","lightslategray":"gris pizarra claro","lightslategrey":"gris pizarra claro","lightsteelblue":"azul acero claro","lightyellow":"amarillo claro","lime":"lima","limegreen":"lima limón","linen":"blanco arena","magenta":"magenta","maroon":"granate","mediumaquamarine":"aguamarina medio","mediumblue":"azul medio","mediumorchid":"orquídea medio","mediumpurple":"púrpura medio","mediumseagreen":"verde mar medio","mediumslateblue":"azul pizarra medio","mediumspringgreen":"verde primavera medio","mediumturquoise":"turquesa medio","mediumvioletred":"rojo violáceo medio","midnightblue":"azul medianoche","mintcream":"crema menta","mistyrose":"rosa difuminado","moccasin":"arena","navajowhite":"blanco navajo","navy":"azul marino","oldlace":"encaje antiguo","olive":"verde oliva","olivedrab":"verde oliva pardusco","orange":"naranja","orangered":"rojo anaranjado","orchid":"orquídea","palegoldenrod":"ocre pálido","palegreen":"verde pálido","paleturquoise":"turquesa pálido","palevioletred":"rojo violáceo pálido","papayawhip":"papaya claro","peachpuff":"melocotón","peru":"perú","pink":"rosa","plum":"ciruela","powderblue":"azul suave","purple":"púrpura","red":"rojo","rosybrown":"marrón rosáceo","royalblue":"azul real","saddlebrown":"cuero","salmon":"salmón","sandybrown":"marrón arcilla","seagreen":"verde mar","seashell":"blanco marfil","sienna":"siena","silver":"plateado","skyblue":"azul cielo","slateblue":"azul pizarra","slategray":"gris pizarra","slategrey":"gris pizarra","snow":"nieve","springgreen":"verde fuerte","steelblue":"azul acero","tan":"canela","teal":"verde azulado","thistle":"cardo","tomato":"tomate","transparent":"transparente","turquoise":"turquesa","violet":"violeta","wheat":"trigo","white":"blanco","whitesmoke":"blanco ahumado","yellow":"amarillo","yellowgreen":"verde amarillento","_localized":{}},"dijit/nls/loading":{"loadingState":"Cargando...","errorState":"Lo siento, se ha producido un error","_localized":{}},"dijit/nls/common":{"buttonOk":"Aceptar","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Cerrar","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"El valor especificado no es válido.","missingMessage":"Este valor es necesario.","rangeMessage":"Este valor está fuera del intervalo.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Opciones anteriores","nextMessage":"Más opciones","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 billones","decimalFormat":"#,##0.###","currencyFormat-short":"000 B¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_fi-fi.js b/lib/dojo/nls/tt-rss-layer_fi-fi.js
index 6ddcc67cc..8f4ac2bb0 100644
--- a/lib/dojo/nls/tt-rss-layer_fi-fi.js
+++ b/lib/dojo/nls/tt-rss-layer_fi-fi.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_fi-fi",{"dijit/form/nls/validate":{"invalidMessage":"Annettu arvo ei kelpaa.","rangeMessage":"Tämä arvo on sallitun alueen ulkopuolella.","_localized":{},"missingMessage":"Tämä arvo on pakollinen."},"dijit/nls/loading":{"_localized":{},"loadingState":"Lataus on meneillään...","errorState":"On ilmennyt virhe."},"dojo/nls/colors":{"lightsteelblue":"vaalea teräksensininen","orangered":"oranssinpunainen","midnightblue":"yönsininen","cadetblue":"meren vihreä","seashell":"simpukankuori","slategrey":"savenharmaa","coral":"koralli","darkturquoise":"tumma turkoosi","antiquewhite":"antiikinvalkoinen","mediumspringgreen":"keskivaalea keväänvihreä","transparent":"läpinäkyvä","salmon":"lohenpunainen","darkgrey":"tummanharmaa","ivory":"norsunluu","greenyellow":"vihreänkeltainen","mistyrose":"utuinen ruusu","lightsalmon":"vaalea lohenpunainen","silver":"hopea","dimgrey":"himmeänharmaa","orange":"oranssi","white":"valkoinen","navajowhite":"navajonvalkoinen","royalblue":"syvänsininen","deeppink":"syvä vaaleanpunainen","lime":"vaaleanvihreä","oldlace":"vanha pitsi","chartreuse":"kellanvihreä","darkcyan":"tumma turkoosi","yellow":"keltainen","linen":"pellavanvaalea","olive":"oliivinvihreä","gold":"kulta","lawngreen":"ruohonvihreä","lightyellow":"vaaleankeltainen","tan":"kellanruskea","darkviolet":"tummanvioletti","lightslategrey":"vaaleanharmaa","grey":"harmaa","darkkhaki":"tumma khaki","green":"vihreä","deepskyblue":"tumma taivaansininen","aqua":"sinivihreä","sienna":"siena","mintcream":"minttukreemi","rosybrown":"punertavanruskea","mediumslateblue":"keskivaalea siniharmaa","magenta":"magenta","lightseagreen":"vaalea merenvihreä","cyan":"syaani","olivedrab":"oliivinruskea","darkgoldenrod":"tumma kultapiisku","slateblue":"savensininen","mediumaquamarine":"keskivaalea vedenvihreä","lavender":"laventeli","mediumseagreen":"keskivaalea merenvihreä","maroon":"kastanjanruskea","darkslategray":"tummanharmaa","mediumturquoise":"keskivaalea turkoosi","ghostwhite":"lakananvalkoinen","darkblue":"tummansininen","mediumvioletred":"keskivaalea lila","brown":"ruskea","lightgray":"vaaleanharmaa","sandybrown":"hiekanruskea","pink":"vaaleanpunainen","firebrick":"poltetun tiilen punainen","indigo":"indigo","snow":"lumivalkoinen","darkorchid":"tumma orkidea","turquoise":"turkoosi","chocolate":"suklaanruskea","springgreen":"keväänvihreä","moccasin":"nahanruskea","navy":"laivastonsininen","lemonchiffon":"sitruunankeltainen","teal":"sinivihreä","floralwhite":"kukanvalkoinen","cornflowerblue":"syvänsininen","paleturquoise":"haalea turkoosi","purple":"violetti","_localized":{},"gainsboro":"gainsboro","plum":"luumunpunainen","red":"punainen","blue":"sininen","forestgreen":"metsänvihreä","darkgreen":"tummanvihreä","honeydew":"hunajameloninvihreä","darkseagreen":"tumma merenvihreä","lightcoral":"vaalea koralli","palevioletred":"haalea lila","mediumpurple":"keskivaalea violetti","saddlebrown":"satulanruskea","darkmagenta":"tumma magenta","thistle":"ohdake","whitesmoke":"savunvalkea","wheat":"vehnänkeltainen","violet":"violetti","lightskyblue":"vaalea taivaansininen","goldenrod":"kullanruskea","mediumblue":"keskisininen","skyblue":"taivaansininen","crimson":"karmiininpunainen","darksalmon":"tumma lohenpunainen","darkred":"tummanpunainen","darkslategrey":"tummanharmaa","peru":"peru","lightgrey":"vaaleanharmaa","lightgoldenrodyellow":"vaalea kultapiiskunkeltainen","blanchedalmond":"kuorittu manteli","aliceblue":"vaaleanharmaansininen","bisque":"vaaleanruskea","slategray":"savenharmaa","palegoldenrod":"haalea kultapiisku","darkorange":"tummanoranssi","aquamarine":"vedenvihreä","lightgreen":"vaaleanvihreä","burlywood":"puunruskea","dodgerblue":"Dodger-sininen","darkgray":"tummanharmaa","lightcyan":"vaalea syaani","powderblue":"harmaansininen","blueviolet":"sinivioletti","orchid":"orkidea","dimgray":"himmeänharmaa","beige":"vaaleanruskea","fuchsia":"purppura","lavenderblush":"laventelinpunainen","hotpink":"pinkki","steelblue":"teräksensininen","tomato":"tomaatinpunainen","lightpink":"vaaleanpunainen","limegreen":"limetinvihreä","indianred":"kirkkaanpunainen","papayawhip":"papaijavaahto","lightslategray":"vaaleanharmaa","gray":"harmaa","mediumorchid":"keskivaalea orkidea","cornsilk":"maissinkeltainen","black":"musta","seagreen":"merenvihreä","darkslateblue":"tumma siniharmaa","khaki":"khaki","lightblue":"vaaleansininen","palegreen":"haalea vihreä","azure":"taivaansininen","peachpuff":"persikka","darkolivegreen":"tummanoliivinvihreä","yellowgreen":"kellanvihreä"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 bilj'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"epäluku","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoonaa","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Edelliset valinnat","_localized":{},"nextMessage":"Lisää valintoja"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Peruuta","_localized":{},"buttonSave":"Tallenna","itemClose":"Sulje"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_fi-fi",{"dojo/nls/colors":{"aliceblue":"vaaleanharmaansininen","antiquewhite":"antiikinvalkoinen","aqua":"sinivihreä","aquamarine":"vedenvihreä","azure":"taivaansininen","beige":"vaaleanruskea","bisque":"vaaleanruskea","black":"musta","blanchedalmond":"kuorittu manteli","blue":"sininen","blueviolet":"sinivioletti","brown":"ruskea","burlywood":"puunruskea","cadetblue":"meren vihreä","chartreuse":"kellanvihreä","chocolate":"suklaanruskea","coral":"koralli","cornflowerblue":"syvänsininen","cornsilk":"maissinkeltainen","crimson":"karmiininpunainen","cyan":"syaani","darkblue":"tummansininen","darkcyan":"tumma turkoosi","darkgoldenrod":"tumma kultapiisku","darkgray":"tummanharmaa","darkgreen":"tummanvihreä","darkgrey":"tummanharmaa","darkkhaki":"tumma khaki","darkmagenta":"tumma magenta","darkolivegreen":"tummanoliivinvihreä","darkorange":"tummanoranssi","darkorchid":"tumma orkidea","darkred":"tummanpunainen","darksalmon":"tumma lohenpunainen","darkseagreen":"tumma merenvihreä","darkslateblue":"tumma siniharmaa","darkslategray":"tummanharmaa","darkslategrey":"tummanharmaa","darkturquoise":"tumma turkoosi","darkviolet":"tummanvioletti","deeppink":"syvä vaaleanpunainen","deepskyblue":"tumma taivaansininen","dimgray":"himmeänharmaa","dimgrey":"himmeänharmaa","dodgerblue":"Dodger-sininen","firebrick":"poltetun tiilen punainen","floralwhite":"kukanvalkoinen","forestgreen":"metsänvihreä","fuchsia":"purppura","gainsboro":"gainsboro","ghostwhite":"lakananvalkoinen","gold":"kulta","goldenrod":"kullanruskea","gray":"harmaa","green":"vihreä","greenyellow":"vihreänkeltainen","grey":"harmaa","honeydew":"hunajameloninvihreä","hotpink":"pinkki","indianred":"kirkkaanpunainen","indigo":"indigo","ivory":"norsunluu","khaki":"khaki","lavender":"laventeli","lavenderblush":"laventelinpunainen","lawngreen":"ruohonvihreä","lemonchiffon":"sitruunankeltainen","lightblue":"vaaleansininen","lightcoral":"vaalea koralli","lightcyan":"vaalea syaani","lightgoldenrodyellow":"vaalea kultapiiskunkeltainen","lightgray":"vaaleanharmaa","lightgreen":"vaaleanvihreä","lightgrey":"vaaleanharmaa","lightpink":"vaaleanpunainen","lightsalmon":"vaalea lohenpunainen","lightseagreen":"vaalea merenvihreä","lightskyblue":"vaalea taivaansininen","lightslategray":"vaaleanharmaa","lightslategrey":"vaaleanharmaa","lightsteelblue":"vaalea teräksensininen","lightyellow":"vaaleankeltainen","lime":"vaaleanvihreä","limegreen":"limetinvihreä","linen":"pellavanvaalea","magenta":"magenta","maroon":"kastanjanruskea","mediumaquamarine":"keskivaalea vedenvihreä","mediumblue":"keskisininen","mediumorchid":"keskivaalea orkidea","mediumpurple":"keskivaalea violetti","mediumseagreen":"keskivaalea merenvihreä","mediumslateblue":"keskivaalea siniharmaa","mediumspringgreen":"keskivaalea keväänvihreä","mediumturquoise":"keskivaalea turkoosi","mediumvioletred":"keskivaalea lila","midnightblue":"yönsininen","mintcream":"minttukreemi","mistyrose":"utuinen ruusu","moccasin":"nahanruskea","navajowhite":"navajonvalkoinen","navy":"laivastonsininen","oldlace":"vanha pitsi","olive":"oliivinvihreä","olivedrab":"oliivinruskea","orange":"oranssi","orangered":"oranssinpunainen","orchid":"orkidea","palegoldenrod":"haalea kultapiisku","palegreen":"haalea vihreä","paleturquoise":"haalea turkoosi","palevioletred":"haalea lila","papayawhip":"papaijavaahto","peachpuff":"persikka","peru":"peru","pink":"vaaleanpunainen","plum":"luumunpunainen","powderblue":"harmaansininen","purple":"violetti","red":"punainen","rosybrown":"punertavanruskea","royalblue":"syvänsininen","saddlebrown":"satulanruskea","salmon":"lohenpunainen","sandybrown":"hiekanruskea","seagreen":"merenvihreä","seashell":"simpukankuori","sienna":"siena","silver":"hopea","skyblue":"taivaansininen","slateblue":"savensininen","slategray":"savenharmaa","slategrey":"savenharmaa","snow":"lumivalkoinen","springgreen":"keväänvihreä","steelblue":"teräksensininen","tan":"kellanruskea","teal":"sinivihreä","thistle":"ohdake","tomato":"tomaatinpunainen","transparent":"läpinäkyvä","turquoise":"turkoosi","violet":"violetti","wheat":"vehnänkeltainen","white":"valkoinen","whitesmoke":"savunvalkea","yellow":"keltainen","yellowgreen":"kellanvihreä","_localized":{}},"dijit/nls/loading":{"loadingState":"Lataus on meneillään...","errorState":"On ilmennyt virhe.","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Peruuta","buttonSave":"Tallenna","itemClose":"Sulje","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Annettu arvo ei kelpaa.","missingMessage":"Tämä arvo on pakollinen.","rangeMessage":"Tämä arvo on sallitun alueen ulkopuolella.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Edelliset valinnat","nextMessage":"Lisää valintoja","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bilj'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"epäluku","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoonaa","decimalFormat":"#,##0.###","currencyFormat-short":"000 bilj'.' ¤","timeSeparator":".","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_fr-fr.js b/lib/dojo/nls/tt-rss-layer_fr-fr.js
index 2d748e61b..e96ff3b71 100644
--- a/lib/dojo/nls/tt-rss-layer_fr-fr.js
+++ b/lib/dojo/nls/tt-rss-layer_fr-fr.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_fr-fr",{"dijit/form/nls/validate":{"invalidMessage":"La valeur indiquée n'est pas correcte.","rangeMessage":"Cette valeur n'est pas comprise dans la plage autorisée.","_localized":{},"missingMessage":"Cette valeur est requise."},"dijit/nls/loading":{"_localized":{},"loadingState":"Chargement...","errorState":"Une erreur est survenue"},"dojo/nls/colors":{"lightsteelblue":"bleu acier clair","orangered":"rouge orangé","midnightblue":"bleu nuit","cadetblue":"bleu pétrole","seashell":"coquillage","slategrey":"gris ardoise","coral":"corail","darkturquoise":"turquoise foncé","antiquewhite":"blanc antique","mediumspringgreen":"vert printemps moyen","transparent":"transparent","salmon":"saumon","darkgrey":"gris foncé","ivory":"ivoire","greenyellow":"vert-jaune","mistyrose":"rose pâle","lightsalmon":"saumon clair","silver":"argent","dimgrey":"gris soutenu","orange":"orange","white":"blanc","navajowhite":"chair","royalblue":"bleu roi","deeppink":"rose soutenu","lime":"vert citron","oldlace":"blanc cassé","chartreuse":"vert vif","darkcyan":"cyan foncé","yellow":"jaune","linen":"écru","olive":"olive","gold":"or","lawngreen":"vert prairie","lightyellow":"jaune clair","tan":"grège","darkviolet":"violet foncé","lightslategrey":"gris ardoise clair","grey":"gris","darkkhaki":"kaki foncé","green":"vert","deepskyblue":"bleu ciel soutenu","aqua":"bleu-vert","sienna":"terre de sienne","mintcream":"crème de menthe","rosybrown":"vieux rose","mediumslateblue":"bleu ardoise moyen","magenta":"magenta","lightseagreen":"vert d'eau clair","cyan":"cyan","olivedrab":"brun verdâtre","darkgoldenrod":"jaune paille foncé","slateblue":"bleu ardoise","mediumaquamarine":"aigue-marine moyen","lavender":"lavande","mediumseagreen":"vert d'eau moyen","maroon":"marron","darkslategray":"gris ardoise foncé","mediumturquoise":"turquoise moyen","ghostwhite":"blanc laiteux","darkblue":"bleu foncé","mediumvioletred":"rouge violacé moyen","brown":"brun","lightgray":"gris clair","sandybrown":"sable","pink":"rose","firebrick":"rouge brique","indigo":"indigo","snow":"neige","darkorchid":"lilas foncé","turquoise":"turquoise","chocolate":"chocolat","springgreen":"vert printemps","moccasin":"chamois","navy":"bleu marine","lemonchiffon":"mousse de citron","teal":"sarcelle","floralwhite":"lys","cornflowerblue":"bleuet","paleturquoise":"turquoise pâle","purple":"pourpre","_localized":{},"gainsboro":"gris souris","plum":"prune","red":"rouge","blue":"bleu","forestgreen":"vert sapin","darkgreen":"vert foncé","honeydew":"opalin","darkseagreen":"vert d'eau foncé","lightcoral":"corail clair","palevioletred":"rouge violacé pâle","mediumpurple":"pourpre moyen","saddlebrown":"brun cuir","darkmagenta":"magenta foncé","thistle":"chardon","whitesmoke":"blanc cendré","wheat":"blé","violet":"violet","lightskyblue":"bleu ciel clair","goldenrod":"jaune paille","mediumblue":"bleu moyen","skyblue":"bleu ciel","crimson":"cramoisi","darksalmon":"saumon foncé","darkred":"rouge foncé","darkslategrey":"gris ardoise foncé","peru":"caramel","lightgrey":"gris clair","lightgoldenrodyellow":"jaune paille clair","blanchedalmond":"coquille d'œuf","aliceblue":"bleu gris","bisque":"beige rosé","slategray":"gris ardoise","palegoldenrod":"jaune paille pâle","darkorange":"orange foncé","aquamarine":"aigue-marine","lightgreen":"vert clair","burlywood":"bois précieux","dodgerblue":"bleu France","darkgray":"gris foncé","lightcyan":"cyan clair","powderblue":"bleu de smalt","blueviolet":"bleu-violet","orchid":"lilas","dimgray":"gris soutenu","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavandin","hotpink":"rose intense","steelblue":"bleu acier","tomato":"tomate","lightpink":"rose clair","limegreen":"citron vert","indianred":"rose indien","papayawhip":"crème de papaye","lightslategray":"gris ardoise clair","gray":"gris","mediumorchid":"lilas moyen","cornsilk":"vanille","black":"noir","seagreen":"vert d'eau","darkslateblue":"bleu ardoise foncé","khaki":"kaki","lightblue":"bleu clair","palegreen":"vert pâle","azure":"bleu azur","peachpuff":"pêche","darkolivegreen":"olive foncé","yellowgreen":"vert jaunâtre"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 Bn","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 billions","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Choix précédents","_localized":{},"nextMessage":"Plus de choix"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Annuler","_localized":{},"buttonSave":"Enregistrer","itemClose":"Fermer"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_fr-fr",{"dojo/nls/colors":{"aliceblue":"bleu gris","antiquewhite":"blanc antique","aqua":"bleu-vert","aquamarine":"aigue-marine","azure":"bleu azur","beige":"beige","bisque":"beige rosé","black":"noir","blanchedalmond":"coquille d'œuf","blue":"bleu","blueviolet":"bleu-violet","brown":"brun","burlywood":"bois précieux","cadetblue":"bleu pétrole","chartreuse":"vert vif","chocolate":"chocolat","coral":"corail","cornflowerblue":"bleuet","cornsilk":"vanille","crimson":"cramoisi","cyan":"cyan","darkblue":"bleu foncé","darkcyan":"cyan foncé","darkgoldenrod":"jaune paille foncé","darkgray":"gris foncé","darkgreen":"vert foncé","darkgrey":"gris foncé","darkkhaki":"kaki foncé","darkmagenta":"magenta foncé","darkolivegreen":"olive foncé","darkorange":"orange foncé","darkorchid":"lilas foncé","darkred":"rouge foncé","darksalmon":"saumon foncé","darkseagreen":"vert d'eau foncé","darkslateblue":"bleu ardoise foncé","darkslategray":"gris ardoise foncé","darkslategrey":"gris ardoise foncé","darkturquoise":"turquoise foncé","darkviolet":"violet foncé","deeppink":"rose soutenu","deepskyblue":"bleu ciel soutenu","dimgray":"gris soutenu","dimgrey":"gris soutenu","dodgerblue":"bleu France","firebrick":"rouge brique","floralwhite":"lys","forestgreen":"vert sapin","fuchsia":"fuchsia","gainsboro":"gris souris","ghostwhite":"blanc laiteux","gold":"or","goldenrod":"jaune paille","gray":"gris","green":"vert","greenyellow":"vert-jaune","grey":"gris","honeydew":"opalin","hotpink":"rose intense","indianred":"rose indien","indigo":"indigo","ivory":"ivoire","khaki":"kaki","lavender":"lavande","lavenderblush":"lavandin","lawngreen":"vert prairie","lemonchiffon":"mousse de citron","lightblue":"bleu clair","lightcoral":"corail clair","lightcyan":"cyan clair","lightgoldenrodyellow":"jaune paille clair","lightgray":"gris clair","lightgreen":"vert clair","lightgrey":"gris clair","lightpink":"rose clair","lightsalmon":"saumon clair","lightseagreen":"vert d'eau clair","lightskyblue":"bleu ciel clair","lightslategray":"gris ardoise clair","lightslategrey":"gris ardoise clair","lightsteelblue":"bleu acier clair","lightyellow":"jaune clair","lime":"vert citron","limegreen":"citron vert","linen":"écru","magenta":"magenta","maroon":"marron","mediumaquamarine":"aigue-marine moyen","mediumblue":"bleu moyen","mediumorchid":"lilas moyen","mediumpurple":"pourpre moyen","mediumseagreen":"vert d'eau moyen","mediumslateblue":"bleu ardoise moyen","mediumspringgreen":"vert printemps moyen","mediumturquoise":"turquoise moyen","mediumvioletred":"rouge violacé moyen","midnightblue":"bleu nuit","mintcream":"crème de menthe","mistyrose":"rose pâle","moccasin":"chamois","navajowhite":"chair","navy":"bleu marine","oldlace":"blanc cassé","olive":"olive","olivedrab":"brun verdâtre","orange":"orange","orangered":"rouge orangé","orchid":"lilas","palegoldenrod":"jaune paille pâle","palegreen":"vert pâle","paleturquoise":"turquoise pâle","palevioletred":"rouge violacé pâle","papayawhip":"crème de papaye","peachpuff":"pêche","peru":"caramel","pink":"rose","plum":"prune","powderblue":"bleu de smalt","purple":"pourpre","red":"rouge","rosybrown":"vieux rose","royalblue":"bleu roi","saddlebrown":"brun cuir","salmon":"saumon","sandybrown":"sable","seagreen":"vert d'eau","seashell":"coquillage","sienna":"terre de sienne","silver":"argent","skyblue":"bleu ciel","slateblue":"bleu ardoise","slategray":"gris ardoise","slategrey":"gris ardoise","snow":"neige","springgreen":"vert printemps","steelblue":"bleu acier","tan":"grège","teal":"sarcelle","thistle":"chardon","tomato":"tomate","transparent":"transparent","turquoise":"turquoise","violet":"violet","wheat":"blé","white":"blanc","whitesmoke":"blanc cendré","yellow":"jaune","yellowgreen":"vert jaunâtre","_localized":{}},"dijit/nls/loading":{"loadingState":"Chargement...","errorState":"Une erreur est survenue","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Annuler","buttonSave":"Enregistrer","itemClose":"Fermer","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"La valeur indiquée n'est pas correcte.","missingMessage":"Cette valeur est requise.","rangeMessage":"Cette valeur n'est pas comprise dans la plage autorisée.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Choix précédents","nextMessage":"Plus de choix","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Bn","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","approximatelySign":"≃","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 billions","decimalFormat":"#,##0.###","currencyFormat-short":"000 Bn ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_he-il.js b/lib/dojo/nls/tt-rss-layer_he-il.js
index 6830da54d..3450c80c0 100644
--- a/lib/dojo/nls/tt-rss-layer_he-il.js
+++ b/lib/dojo/nls/tt-rss-layer_he-il.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_he-il",{"dijit/form/nls/validate":{"invalidMessage":"הערך שצוין אינו חוקי.","rangeMessage":"הערך מחוץ לטווח.","_localized":{},"missingMessage":"זהו ערך דרוש."},"dijit/nls/loading":{"_localized":{},"loadingState":"טעינה...","errorState":"אירעה שגיאה"},"dojo/nls/colors":{"lightsteelblue":"כחול פלדה בהיר","orangered":"כתום אדום","midnightblue":"כחול כהה","cadetblue":"כחול ים","seashell":"צדף","slategrey":"אפור צפחה","coral":"אלמוג","darkturquoise":"טורקיז כהה","antiquewhite":"לבן עתיק","mediumspringgreen":"ירוק אביב בינוני","transparent":"שקוף","salmon":"סלמון","darkgrey":"אפור כהה","ivory":"שנהב","greenyellow":"ירוק-צהוב","mistyrose":"ורוד מעורפל","lightsalmon":"סלמון בהיר","silver":"כסף","dimgrey":"אפור עמום","orange":"כתום","white":"לבן","navajowhite":"לבן נוואחו","royalblue":"כחול מלכותי","deeppink":"ורוד עמוק","lime":"לימון","oldlace":"תחרה עתיקה","chartreuse":"ירוק-צהוב","darkcyan":"טורקיז כהה","yellow":"צהוב","linen":"פשתן","olive":"זית","gold":"זהב","lawngreen":"ירוק דשא","lightyellow":"צהוב בהיר","tan":"חום אדמדם","darkviolet":"סגול כהה","lightslategrey":"אפור צפחה בהיר","grey":"אפור","darkkhaki":"חאקי כהה","green":"ירוק","deepskyblue":"כחול שמיים עמוק","aqua":"אקווה","sienna":"סיינה","mintcream":"קרם מנטה","rosybrown":"חום ורדרד","mediumslateblue":"כחול צפחה בינוני","magenta":"בורדו","lightseagreen":"ירוק ים בהיר","cyan":"טורקיז","olivedrab":"זית עמום","darkgoldenrod":"זהוב כהה","slateblue":"כחול צפחה","mediumaquamarine":"כחול בינוני","lavender":"לבנדר","mediumseagreen":"ירוק ים בינוני","maroon":"חום אדמדם","darkslategray":"אפור צפחה כהה","mediumturquoise":"טורקיז בינוני","ghostwhite":"לבן רפאים","darkblue":"כחול כהה","mediumvioletred":"סגול-אדום בינוני","brown":"חום","lightgray":"אפור בהיר","sandybrown":"חום חולי","pink":"ורוד","firebrick":"לבנה שרופה","indigo":"אינדיגו","snow":"שלג","darkorchid":"סחלב כהה","turquoise":"טורקיז","chocolate":"שוקולד","springgreen":"ירוק אביב","moccasin":"מוקסין","navy":"כחול כהה","lemonchiffon":"ירוק לימון","teal":"כחול-ירוק כהה","floralwhite":"לבן פרחוני","cornflowerblue":"כחול דרדר","paleturquoise":"טורקיז בהיר","purple":"סגול","_localized":{},"gainsboro":"גיינסבורו","plum":"שזיף","red":"אדום","blue":"כחול","forestgreen":"ירוק יער","darkgreen":"ירוק כהה","honeydew":"ירקרק","darkseagreen":"ירוק ים כהה","lightcoral":"אלמוג בהיר","palevioletred":"סגול-אדום בהיר","mediumpurple":"סגול בינוני","saddlebrown":"חום דהוי","darkmagenta":"בורדו כהה","thistle":"דרדר","whitesmoke":"עשן לבן","wheat":"חיוט","violet":"סגול","lightskyblue":"כחול שמיים בהיר","goldenrod":"זהוב","mediumblue":"תכלת בינוני","skyblue":"כחול שמיים","crimson":"ארגמן","darksalmon":"סלמון כהה","darkred":"אדום כהה","darkslategrey":"אפור צפחה כהה","peru":"פרו","lightgrey":"אפור בהיר","lightgoldenrodyellow":"צהוב בהיר","blanchedalmond":"שקד","aliceblue":"כחול פלדה","bisque":"לבן שקד","slategray":"אפור צפחה","palegoldenrod":"זהוב בהיר","darkorange":"כתום כהה","aquamarine":"אקוומארין","lightgreen":"ירוק בהיר","burlywood":"חום דהוי","dodgerblue":"כחול","darkgray":"אפור כהה","lightcyan":"טורקיז בהיר","powderblue":"כחול חיוור","blueviolet":"כחול-סגול","orchid":"סחלב","dimgray":"אפור עמום","beige":"בז'","fuchsia":"ורוד בהיר","lavenderblush":"סומק לבנדר","hotpink":"ורוד לוהט","steelblue":"כחול פלדה","tomato":"עגבניה","lightpink":"ורוד בהיר","limegreen":"ירוק לימוני","indianred":"אדום דהוי","papayawhip":"פפאיה","lightslategray":"אפור צפחה בהיר","gray":"אפור","mediumorchid":"סחלב בינוני","cornsilk":"צהבהב","black":"שחור","seagreen":"ירוק ים","darkslateblue":"כחול צפחה כהה","khaki":"חאקי","lightblue":"תכלת","palegreen":"ירוק בהיר","azure":"תכלת עז","peachpuff":"קציפת אפרסק","darkolivegreen":"ירוק זית כהה","yellowgreen":"ירוק צהוב"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 ביל׳","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 טריליון","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"האפשרויות הקודמות","_localized":{},"nextMessage":"אפשרויות נוספות"},"dijit/nls/common":{"buttonOk":"אישור","buttonCancel":"ביטול","_localized":{},"buttonSave":"שמירה","itemClose":"סגירה"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_he-il",{"dojo/nls/colors":{"aliceblue":"כחול פלדה","antiquewhite":"לבן עתיק","aqua":"אקווה","aquamarine":"אקוומארין","azure":"תכלת עז","beige":"בז'","bisque":"לבן שקד","black":"שחור","blanchedalmond":"שקד","blue":"כחול","blueviolet":"כחול-סגול","brown":"חום","burlywood":"חום דהוי","cadetblue":"כחול ים","chartreuse":"ירוק-צהוב","chocolate":"שוקולד","coral":"אלמוג","cornflowerblue":"כחול דרדר","cornsilk":"צהבהב","crimson":"ארגמן","cyan":"טורקיז","darkblue":"כחול כהה","darkcyan":"טורקיז כהה","darkgoldenrod":"זהוב כהה","darkgray":"אפור כהה","darkgreen":"ירוק כהה","darkgrey":"אפור כהה","darkkhaki":"חאקי כהה","darkmagenta":"בורדו כהה","darkolivegreen":"ירוק זית כהה","darkorange":"כתום כהה","darkorchid":"סחלב כהה","darkred":"אדום כהה","darksalmon":"סלמון כהה","darkseagreen":"ירוק ים כהה","darkslateblue":"כחול צפחה כהה","darkslategray":"אפור צפחה כהה","darkslategrey":"אפור צפחה כהה","darkturquoise":"טורקיז כהה","darkviolet":"סגול כהה","deeppink":"ורוד עמוק","deepskyblue":"כחול שמיים עמוק","dimgray":"אפור עמום","dimgrey":"אפור עמום","dodgerblue":"כחול","firebrick":"לבנה שרופה","floralwhite":"לבן פרחוני","forestgreen":"ירוק יער","fuchsia":"ורוד בהיר","gainsboro":"גיינסבורו","ghostwhite":"לבן רפאים","gold":"זהב","goldenrod":"זהוב","gray":"אפור","green":"ירוק","greenyellow":"ירוק-צהוב","grey":"אפור","honeydew":"ירקרק","hotpink":"ורוד לוהט","indianred":"אדום דהוי","indigo":"אינדיגו","ivory":"שנהב","khaki":"חאקי","lavender":"לבנדר","lavenderblush":"סומק לבנדר","lawngreen":"ירוק דשא","lemonchiffon":"ירוק לימון","lightblue":"תכלת","lightcoral":"אלמוג בהיר","lightcyan":"טורקיז בהיר","lightgoldenrodyellow":"צהוב בהיר","lightgray":"אפור בהיר","lightgreen":"ירוק בהיר","lightgrey":"אפור בהיר","lightpink":"ורוד בהיר","lightsalmon":"סלמון בהיר","lightseagreen":"ירוק ים בהיר","lightskyblue":"כחול שמיים בהיר","lightslategray":"אפור צפחה בהיר","lightslategrey":"אפור צפחה בהיר","lightsteelblue":"כחול פלדה בהיר","lightyellow":"צהוב בהיר","lime":"לימון","limegreen":"ירוק לימוני","linen":"פשתן","magenta":"בורדו","maroon":"חום אדמדם","mediumaquamarine":"כחול בינוני","mediumblue":"תכלת בינוני","mediumorchid":"סחלב בינוני","mediumpurple":"סגול בינוני","mediumseagreen":"ירוק ים בינוני","mediumslateblue":"כחול צפחה בינוני","mediumspringgreen":"ירוק אביב בינוני","mediumturquoise":"טורקיז בינוני","mediumvioletred":"סגול-אדום בינוני","midnightblue":"כחול כהה","mintcream":"קרם מנטה","mistyrose":"ורוד מעורפל","moccasin":"מוקסין","navajowhite":"לבן נוואחו","navy":"כחול כהה","oldlace":"תחרה עתיקה","olive":"זית","olivedrab":"זית עמום","orange":"כתום","orangered":"כתום אדום","orchid":"סחלב","palegoldenrod":"זהוב בהיר","palegreen":"ירוק בהיר","paleturquoise":"טורקיז בהיר","palevioletred":"סגול-אדום בהיר","papayawhip":"פפאיה","peachpuff":"קציפת אפרסק","peru":"פרו","pink":"ורוד","plum":"שזיף","powderblue":"כחול חיוור","purple":"סגול","red":"אדום","rosybrown":"חום ורדרד","royalblue":"כחול מלכותי","saddlebrown":"חום דהוי","salmon":"סלמון","sandybrown":"חום חולי","seagreen":"ירוק ים","seashell":"צדף","sienna":"סיינה","silver":"כסף","skyblue":"כחול שמיים","slateblue":"כחול צפחה","slategray":"אפור צפחה","slategrey":"אפור צפחה","snow":"שלג","springgreen":"ירוק אביב","steelblue":"כחול פלדה","tan":"חום אדמדם","teal":"כחול-ירוק כהה","thistle":"דרדר","tomato":"עגבניה","transparent":"שקוף","turquoise":"טורקיז","violet":"סגול","wheat":"חיוט","white":"לבן","whitesmoke":"עשן לבן","yellow":"צהוב","yellowgreen":"ירוק צהוב","_localized":{}},"dijit/nls/loading":{"loadingState":"טעינה...","errorState":"אירעה שגיאה","_localized":{}},"dijit/nls/common":{"buttonOk":"אישור","buttonCancel":"ביטול","buttonSave":"שמירה","itemClose":"סגירה","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"הערך שצוין אינו חוקי.","missingMessage":"זהו ערך דרוש.","rangeMessage":"הערך מחוץ לטווח.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"האפשרויות הקודמות","nextMessage":"אפשרויות נוספות","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 טריליון","decimalFormat":"#,##0.###","currencyFormat-short":"¤000T","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_hu.js b/lib/dojo/nls/tt-rss-layer_hu.js
index 0521876f2..5e4b99fa2 100644
--- a/lib/dojo/nls/tt-rss-layer_hu.js
+++ b/lib/dojo/nls/tt-rss-layer_hu.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_hu",{"dijit/form/nls/validate":{"invalidMessage":"A megadott érték érvénytelen.","rangeMessage":"Az érték kívül van a megengedett tartományon.","_localized":{},"missingMessage":"Meg kell adni egy értéket."},"dijit/nls/loading":{"_localized":{},"loadingState":"Betöltés...","errorState":"Sajnálom, hiba történt"},"dojo/nls/colors":{"lightsteelblue":"világos acélkék","orangered":"narancsvörös","midnightblue":"éjkék","cadetblue":"kadétkék","seashell":"kagyló","slategrey":"palaszürke","coral":"korall","darkturquoise":"sötét türkizkék","antiquewhite":"antik fehér","mediumspringgreen":"közepes tavaszzöld","transparent":"átlátszó","salmon":"lazacszín","darkgrey":"sötétszürke","ivory":"elefántcsont","greenyellow":"zöldessárga","mistyrose":"halvány rózsaszín","lightsalmon":"világos lazacszín","silver":"ezüst","dimgrey":"halványszürke","orange":"narancssárga","white":"fehér","navajowhite":"navajo fehér","royalblue":"királykék","deeppink":"sötétrózsaszín","lime":"lime","oldlace":"régi csipke","chartreuse":"chartreuse","darkcyan":"sötét ciánkék","yellow":"sárga","linen":"vászonfehér","olive":"olajzöld","gold":"arany","lawngreen":"fűzöld","lightyellow":"világossárga","tan":"rozsdabarna","darkviolet":"sötét ibolyaszín","lightslategrey":"világos palaszürke","grey":"szürke","darkkhaki":"sötét khakiszín","green":"zöld","deepskyblue":"sötét égszínkék","aqua":"vízszín","sienna":"vörösesbarna","mintcream":"mentaszósz","rosybrown":"barnásrózsaszín","mediumslateblue":"közepes palakék","magenta":"bíbor","lightseagreen":"világos tengerzöld","cyan":"ciánkék","olivedrab":"olajzöld drapp","darkgoldenrod":"sötét aranyvessző","slateblue":"palakék","mediumaquamarine":"közepes akvamarin","lavender":"levendula","mediumseagreen":"közepes tengerzöld","maroon":"gesztenyebarna","darkslategray":"sötét palaszürke","mediumturquoise":"közepes türkizkék","ghostwhite":"szellemfehér","darkblue":"sötétkék","mediumvioletred":"közepes ibolyavörös","brown":"barna","lightgray":"világosszürke","sandybrown":"homokbarna","pink":"rózsaszín","firebrick":"téglavörös","indigo":"indigó","snow":"hó","darkorchid":"sötét orchidea","turquoise":"türkizkék","chocolate":"csokoládé","springgreen":"tavaszzöld","moccasin":"mokkaszín","navy":"tengerészkék","lemonchiffon":"sárga műselyem","teal":"pávakék","floralwhite":"virágfehér","cornflowerblue":"búzavirágkék","paleturquoise":"halvány türkizkék","purple":"lila","_localized":{},"gainsboro":"gainsboro","plum":"szilvakék","red":"vörös","blue":"kék","forestgreen":"erdőzöld","darkgreen":"sötétzöld","honeydew":"mézharmat","darkseagreen":"sötét tengerzöld","lightcoral":"világos korall","palevioletred":"halvány ibolyavörös","mediumpurple":"közepes lila","saddlebrown":"nyeregbarna","darkmagenta":"sötétbíbor","thistle":"bogáncs","whitesmoke":"fehér füst","wheat":"búza","violet":"ibolyaszín","lightskyblue":"világos égszínkék","goldenrod":"aranyvessző","mediumblue":"közepes kék","skyblue":"égszínkék","crimson":"karmazsinvörös","darksalmon":"sötét lazacszín","darkred":"sötétvörös","darkslategrey":"sötét palaszürke","peru":"peru","lightgrey":"világosszürke","lightgoldenrodyellow":"világos aranyvessző sárga","blanchedalmond":"hámozott mandula","aliceblue":"Alice kék","bisque":"porcelán","slategray":"palaszürke","palegoldenrod":"halvány aranyvessző","darkorange":"sötét narancssárga","aquamarine":"akvamarin","lightgreen":"világoszöld","burlywood":"nyersfa","dodgerblue":"dodger kék","darkgray":"sötétszürke","lightcyan":"világos ciánkék","powderblue":"púderkék","blueviolet":"ibolyakék","orchid":"orchidea","dimgray":"halványszürke","beige":"bézs","fuchsia":"fukszia","lavenderblush":"pirosas levendula","hotpink":"meleg rózsaszín","steelblue":"acélkék","tomato":"paradicsom","lightpink":"világos rózsaszín","limegreen":"limezöld","indianred":"indiánvörös","papayawhip":"papayahab","lightslategray":"világos palaszürke","gray":"szürke","mediumorchid":"közepes orchidea","cornsilk":"kukoricahaj","black":"fekete","seagreen":"tengerzöld","darkslateblue":"sötét palakék","khaki":"khakiszín","lightblue":"világoskék","palegreen":"halványzöld","azure":"azúrkék","peachpuff":"barackszín","darkolivegreen":"sötét olajzöld","yellowgreen":"sárgászöld"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 billió","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Előző menüpontok","_localized":{},"nextMessage":"További menüpontok"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Mégse","_localized":{},"buttonSave":"Mentés","itemClose":"Bezárás"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_hu",{"dojo/nls/colors":{"aliceblue":"Alice kék","antiquewhite":"antik fehér","aqua":"vízszín","aquamarine":"akvamarin","azure":"azúrkék","beige":"bézs","bisque":"porcelán","black":"fekete","blanchedalmond":"hámozott mandula","blue":"kék","blueviolet":"ibolyakék","brown":"barna","burlywood":"nyersfa","cadetblue":"kadétkék","chartreuse":"chartreuse","chocolate":"csokoládé","coral":"korall","cornflowerblue":"búzavirágkék","cornsilk":"kukoricahaj","crimson":"karmazsinvörös","cyan":"ciánkék","darkblue":"sötétkék","darkcyan":"sötét ciánkék","darkgoldenrod":"sötét aranyvessző","darkgray":"sötétszürke","darkgreen":"sötétzöld","darkgrey":"sötétszürke","darkkhaki":"sötét khakiszín","darkmagenta":"sötétbíbor","darkolivegreen":"sötét olajzöld","darkorange":"sötét narancssárga","darkorchid":"sötét orchidea","darkred":"sötétvörös","darksalmon":"sötét lazacszín","darkseagreen":"sötét tengerzöld","darkslateblue":"sötét palakék","darkslategray":"sötét palaszürke","darkslategrey":"sötét palaszürke","darkturquoise":"sötét türkizkék","darkviolet":"sötét ibolyaszín","deeppink":"sötétrózsaszín","deepskyblue":"sötét égszínkék","dimgray":"halványszürke","dimgrey":"halványszürke","dodgerblue":"dodger kék","firebrick":"téglavörös","floralwhite":"virágfehér","forestgreen":"erdőzöld","fuchsia":"fukszia","gainsboro":"gainsboro","ghostwhite":"szellemfehér","gold":"arany","goldenrod":"aranyvessző","gray":"szürke","green":"zöld","greenyellow":"zöldessárga","grey":"szürke","honeydew":"mézharmat","hotpink":"meleg rózsaszín","indianred":"indiánvörös","indigo":"indigó","ivory":"elefántcsont","khaki":"khakiszín","lavender":"levendula","lavenderblush":"pirosas levendula","lawngreen":"fűzöld","lemonchiffon":"sárga műselyem","lightblue":"világoskék","lightcoral":"világos korall","lightcyan":"világos ciánkék","lightgoldenrodyellow":"világos aranyvessző sárga","lightgray":"világosszürke","lightgreen":"világoszöld","lightgrey":"világosszürke","lightpink":"világos rózsaszín","lightsalmon":"világos lazacszín","lightseagreen":"világos tengerzöld","lightskyblue":"világos égszínkék","lightslategray":"világos palaszürke","lightslategrey":"világos palaszürke","lightsteelblue":"világos acélkék","lightyellow":"világossárga","lime":"lime","limegreen":"limezöld","linen":"vászonfehér","magenta":"bíbor","maroon":"gesztenyebarna","mediumaquamarine":"közepes akvamarin","mediumblue":"közepes kék","mediumorchid":"közepes orchidea","mediumpurple":"közepes lila","mediumseagreen":"közepes tengerzöld","mediumslateblue":"közepes palakék","mediumspringgreen":"közepes tavaszzöld","mediumturquoise":"közepes türkizkék","mediumvioletred":"közepes ibolyavörös","midnightblue":"éjkék","mintcream":"mentaszósz","mistyrose":"halvány rózsaszín","moccasin":"mokkaszín","navajowhite":"navajo fehér","navy":"tengerészkék","oldlace":"régi csipke","olive":"olajzöld","olivedrab":"olajzöld drapp","orange":"narancssárga","orangered":"narancsvörös","orchid":"orchidea","palegoldenrod":"halvány aranyvessző","palegreen":"halványzöld","paleturquoise":"halvány türkizkék","palevioletred":"halvány ibolyavörös","papayawhip":"papayahab","peachpuff":"barackszín","peru":"peru","pink":"rózsaszín","plum":"szilvakék","powderblue":"púderkék","purple":"lila","red":"vörös","rosybrown":"barnásrózsaszín","royalblue":"királykék","saddlebrown":"nyeregbarna","salmon":"lazacszín","sandybrown":"homokbarna","seagreen":"tengerzöld","seashell":"kagyló","sienna":"vörösesbarna","silver":"ezüst","skyblue":"égszínkék","slateblue":"palakék","slategray":"palaszürke","slategrey":"palaszürke","snow":"hó","springgreen":"tavaszzöld","steelblue":"acélkék","tan":"rozsdabarna","teal":"pávakék","thistle":"bogáncs","tomato":"paradicsom","transparent":"átlátszó","turquoise":"türkizkék","violet":"ibolyaszín","wheat":"búza","white":"fehér","whitesmoke":"fehér füst","yellow":"sárga","yellowgreen":"sárgászöld","_localized":{}},"dijit/nls/loading":{"loadingState":"Betöltés...","errorState":"Sajnálom, hiba történt","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Mégse","buttonSave":"Mentés","itemClose":"Bezárás","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"A megadott érték érvénytelen.","missingMessage":"Meg kell adni egy értéket.","rangeMessage":"Az érték kívül van a megengedett tartományon.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Előző menüpontok","nextMessage":"További menüpontok","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 B","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 billió","decimalFormat":"#,##0.###","currencyFormat-short":"000 B ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_it-it.js b/lib/dojo/nls/tt-rss-layer_it-it.js
index 0eade05a1..79eaa2976 100644
--- a/lib/dojo/nls/tt-rss-layer_it-it.js
+++ b/lib/dojo/nls/tt-rss-layer_it-it.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_it-it",{"dijit/form/nls/validate":{"invalidMessage":"Il valore immesso non è valido.","rangeMessage":"Questo valore è fuori dall'intervallo consentito.","_localized":{},"missingMessage":"Questo valore è obbligatorio."},"dijit/nls/loading":{"_localized":{},"loadingState":"Caricamento in corso...","errorState":"Si è verificato un errore"},"dojo/nls/colors":{"lightsteelblue":"blu acciaio chiaro","orangered":"vermiglio","midnightblue":"blu notte","cadetblue":"verde petrolio","seashell":"sabbia rosa","slategrey":"grigio ardesia","coral":"corallo","darkturquoise":"turchese scuro","antiquewhite":"rosa antico","mediumspringgreen":"verde brillante medio","transparent":"trasparente","salmon":"salmone","darkgrey":"grigio scuro","ivory":"avorio","greenyellow":"verde-giallo","mistyrose":"rosa pallido","lightsalmon":"salmone chiaro","silver":"argento","dimgrey":"grigio tenue","orange":"arancione","white":"bianco","navajowhite":"sabbia","royalblue":"royal blue","deeppink":"ciclamino","lime":"lime","oldlace":"mandorla","chartreuse":"verde brillante","darkcyan":"celeste scuro","yellow":"giallo","linen":"lino","olive":"verde oliva","gold":"oro","lawngreen":"verde brillante chiaro","lightyellow":"giallo chiaro","tan":"tan","darkviolet":"viola scuro","lightslategrey":"grigio ardesia chiaro","grey":"grigio","darkkhaki":"cachi scuro","green":"verde","deepskyblue":"azzurro intenso","aqua":"verde acqua","sienna":"terra di siena","mintcream":"bianco nuvola","rosybrown":"caffè latte","mediumslateblue":"blu ardesia medio","magenta":"magenta","lightseagreen":"verde acqua chiaro","cyan":"ciano","olivedrab":"verde bottiglia","darkgoldenrod":"ocra scuro","slateblue":"blu ardesia","mediumaquamarine":"acquamarina medio","lavender":"lavanda","mediumseagreen":"verde acqua medio","maroon":"Bordeaux","darkslategray":"grigio ardesia scuro","mediumturquoise":"turchese medio","ghostwhite":"bianco gesso","darkblue":"blu scuro","mediumvioletred":"violetto rosso medio","brown":"marrone","lightgray":"grigio chiaro","sandybrown":"argilla","pink":"rosa","firebrick":"mattone","indigo":"indaco","snow":"neve","darkorchid":"orchidea scuro","turquoise":"turchese","chocolate":"cioccolato","springgreen":"verde brillante","moccasin":"mocassino","navy":"blu scuro","lemonchiffon":"lemon chiffon","teal":"verde acqua","floralwhite":"bianco grigio","cornflowerblue":"blu fiordaliso","paleturquoise":"turchese pallido","purple":"viola","_localized":{},"gainsboro":"gainsboro","plum":"prugna","red":"rosso","blue":"blu","forestgreen":"verde pino scuro","darkgreen":"verde scuro","honeydew":"miele","darkseagreen":"verde acqua scuro","lightcoral":"corallo chiaro","palevioletred":"violetto rosso pallido","mediumpurple":"viola medio","saddlebrown":"cacao","darkmagenta":"magenta scuro","thistle":"rosa cenere","whitesmoke":"bianco fumo","wheat":"tabacco","violet":"violetto","lightskyblue":"azzurro chiaro","goldenrod":"dorato","mediumblue":"blu medio","skyblue":"azzurro","crimson":"rosso scarlatto","darksalmon":"salmone scuro","darkred":"rosso scuro","darkslategrey":"grigio ardesia scuro","peru":"perù","lightgrey":"grigio chiaro","lightgoldenrodyellow":"giallo dorato chiaro","blanchedalmond":"beige 2","aliceblue":"bianco ghiaccio","bisque":"terracotta","slategray":"grigio ardesia","palegoldenrod":"dorato pallido","darkorange":"arancione scuro","aquamarine":"acquamarina","lightgreen":"verde chiaro","burlywood":"legno massiccio","dodgerblue":"dodger blue","darkgray":"grigio scuro","lightcyan":"ciano chiaro","powderblue":"azzurro polvere","blueviolet":"violetto bluastro","orchid":"orchidea","dimgray":"grigio tenue","beige":"beige","fuchsia":"fucsia","lavenderblush":"lavanda rosa","hotpink":"rosa acceso","steelblue":"blu brillante","tomato":"pomodoro","lightpink":"rosa chiaro","limegreen":"verde lime","indianred":"terra indiana","papayawhip":"papaya","lightslategray":"grigio ardesia chiaro","gray":"grigio","mediumorchid":"orchidea medio","cornsilk":"crema","black":"nero","seagreen":"verde acqua","darkslateblue":"blu ardesia scuro","khaki":"cachi","lightblue":"blu chiaro","palegreen":"verde pallido","azure":"azure","peachpuff":"pesche","darkolivegreen":"verde oliva scuro","yellowgreen":"giallo verde"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 Bln","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 mila di miliardi","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Scelte precedenti","_localized":{},"nextMessage":"Scelte successive"},"dijit/nls/common":{"buttonOk":"Ok","buttonCancel":"Annulla","_localized":{},"buttonSave":"Salva","itemClose":"Chiudi"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_it-it",{"dojo/nls/colors":{"aliceblue":"bianco ghiaccio","antiquewhite":"rosa antico","aqua":"verde acqua","aquamarine":"acquamarina","azure":"azure","beige":"beige","bisque":"terracotta","black":"nero","blanchedalmond":"beige 2","blue":"blu","blueviolet":"violetto bluastro","brown":"marrone","burlywood":"legno massiccio","cadetblue":"verde petrolio","chartreuse":"verde brillante","chocolate":"cioccolato","coral":"corallo","cornflowerblue":"blu fiordaliso","cornsilk":"crema","crimson":"rosso scarlatto","cyan":"ciano","darkblue":"blu scuro","darkcyan":"celeste scuro","darkgoldenrod":"ocra scuro","darkgray":"grigio scuro","darkgreen":"verde scuro","darkgrey":"grigio scuro","darkkhaki":"cachi scuro","darkmagenta":"magenta scuro","darkolivegreen":"verde oliva scuro","darkorange":"arancione scuro","darkorchid":"orchidea scuro","darkred":"rosso scuro","darksalmon":"salmone scuro","darkseagreen":"verde acqua scuro","darkslateblue":"blu ardesia scuro","darkslategray":"grigio ardesia scuro","darkslategrey":"grigio ardesia scuro","darkturquoise":"turchese scuro","darkviolet":"viola scuro","deeppink":"ciclamino","deepskyblue":"azzurro intenso","dimgray":"grigio tenue","dimgrey":"grigio tenue","dodgerblue":"dodger blue","firebrick":"mattone","floralwhite":"bianco grigio","forestgreen":"verde pino scuro","fuchsia":"fucsia","gainsboro":"gainsboro","ghostwhite":"bianco gesso","gold":"oro","goldenrod":"dorato","gray":"grigio","green":"verde","greenyellow":"verde-giallo","grey":"grigio","honeydew":"miele","hotpink":"rosa acceso","indianred":"terra indiana","indigo":"indaco","ivory":"avorio","khaki":"cachi","lavender":"lavanda","lavenderblush":"lavanda rosa","lawngreen":"verde brillante chiaro","lemonchiffon":"lemon chiffon","lightblue":"blu chiaro","lightcoral":"corallo chiaro","lightcyan":"ciano chiaro","lightgoldenrodyellow":"giallo dorato chiaro","lightgray":"grigio chiaro","lightgreen":"verde chiaro","lightgrey":"grigio chiaro","lightpink":"rosa chiaro","lightsalmon":"salmone chiaro","lightseagreen":"verde acqua chiaro","lightskyblue":"azzurro chiaro","lightslategray":"grigio ardesia chiaro","lightslategrey":"grigio ardesia chiaro","lightsteelblue":"blu acciaio chiaro","lightyellow":"giallo chiaro","lime":"lime","limegreen":"verde lime","linen":"lino","magenta":"magenta","maroon":"Bordeaux","mediumaquamarine":"acquamarina medio","mediumblue":"blu medio","mediumorchid":"orchidea medio","mediumpurple":"viola medio","mediumseagreen":"verde acqua medio","mediumslateblue":"blu ardesia medio","mediumspringgreen":"verde brillante medio","mediumturquoise":"turchese medio","mediumvioletred":"violetto rosso medio","midnightblue":"blu notte","mintcream":"bianco nuvola","mistyrose":"rosa pallido","moccasin":"mocassino","navajowhite":"sabbia","navy":"blu scuro","oldlace":"mandorla","olive":"verde oliva","olivedrab":"verde bottiglia","orange":"arancione","orangered":"vermiglio","orchid":"orchidea","palegoldenrod":"dorato pallido","palegreen":"verde pallido","paleturquoise":"turchese pallido","palevioletred":"violetto rosso pallido","papayawhip":"papaya","peachpuff":"pesche","peru":"perù","pink":"rosa","plum":"prugna","powderblue":"azzurro polvere","purple":"viola","red":"rosso","rosybrown":"caffè latte","royalblue":"royal blue","saddlebrown":"cacao","salmon":"salmone","sandybrown":"argilla","seagreen":"verde acqua","seashell":"sabbia rosa","sienna":"terra di siena","silver":"argento","skyblue":"azzurro","slateblue":"blu ardesia","slategray":"grigio ardesia","slategrey":"grigio ardesia","snow":"neve","springgreen":"verde brillante","steelblue":"blu brillante","tan":"tan","teal":"verde acqua","thistle":"rosa cenere","tomato":"pomodoro","transparent":"trasparente","turquoise":"turchese","violet":"violetto","wheat":"tabacco","white":"bianco","whitesmoke":"bianco fumo","yellow":"giallo","yellowgreen":"giallo verde","_localized":{}},"dijit/nls/loading":{"loadingState":"Caricamento in corso...","errorState":"Si è verificato un errore","_localized":{}},"dijit/nls/common":{"buttonOk":"Ok","buttonCancel":"Annulla","buttonSave":"Salva","itemClose":"Chiudi","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Il valore immesso non è valido.","missingMessage":"Questo valore è obbligatorio.","rangeMessage":"Questo valore è fuori dall'intervallo consentito.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Scelte precedenti","nextMessage":"Scelte successive","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Bln","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 mila miliardi","decimalFormat":"#,##0.###","currencyFormat-short":"000 Bln ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_ja-jp.js b/lib/dojo/nls/tt-rss-layer_ja-jp.js
index b7d46fb7f..ecc37eafc 100644
--- a/lib/dojo/nls/tt-rss-layer_ja-jp.js
+++ b/lib/dojo/nls/tt-rss-layer_ja-jp.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_ja-jp",{"dijit/form/nls/validate":{"invalidMessage":"入力した値は無効です。","rangeMessage":"この値は範囲外です。","_localized":{},"missingMessage":"この値は必須です。"},"dijit/nls/loading":{"_localized":{},"loadingState":"ロード中...","errorState":"エラーが発生しました。"},"dojo/nls/colors":{"lightsteelblue":"ライトスチールブルー","orangered":"オレンジレッド","midnightblue":"ミッドナイトブルー","cadetblue":"くすんだ青","seashell":"シーシェル","slategrey":"スレートグレイ","coral":"珊瑚","darkturquoise":"ダークターコイズ","antiquewhite":"アンティークホワイト","mediumspringgreen":"ミディアムスプリンググリーン","transparent":"透明","salmon":"サーモン","darkgrey":"ダークグレイ","ivory":"アイボリー","greenyellow":"緑黄色","mistyrose":"ミスティローズ","lightsalmon":"ライトサーモン","silver":"銀","dimgrey":"くすんだグレイ","orange":"オレンジ","white":"白","navajowhite":"ナバホホワイト","royalblue":"藤色","deeppink":"濃いピンク","lime":"ライム","oldlace":"オールドレイス","chartreuse":"淡黄緑","darkcyan":"ダークシアンブルー","yellow":"黄","linen":"亜麻色","olive":"オリーブ","gold":"金","lawngreen":"ローングリーン","lightyellow":"ライトイエロー","tan":"茶褐色","darkviolet":"ダークバイオレット","lightslategrey":"ライトスレートグレイ","grey":"グレイ","darkkhaki":"ダークカーキ","green":"緑","deepskyblue":"濃い空色","aqua":"アクア","sienna":"黄褐色","mintcream":"ミントクリーム","rosybrown":"ロージーブラウン","mediumslateblue":"ミディアムスレートブルー","magenta":"赤紫","lightseagreen":"ライトシーグリーン","cyan":"シアンブルー","olivedrab":"濃黄緑","darkgoldenrod":"ダークゴールデンロッド","slateblue":"スレートブルー","mediumaquamarine":"ミディアムアクアマリーン","lavender":"ラベンダー","mediumseagreen":"ミディアムシーグリーン","maroon":"えび茶","darkslategray":"ダークスレートグレイ","mediumturquoise":"ミディアムターコイズ","ghostwhite":"ゴーストホワイト","darkblue":"ダークブルー","mediumvioletred":"ミディアムバイオレットレッド","brown":"茶","lightgray":"ライトグレイ","sandybrown":"砂褐色","pink":"ピンク","firebrick":"赤煉瓦色","indigo":"藍色","snow":"雪色","darkorchid":"ダークオーキッド","turquoise":"ターコイズ","chocolate":"チョコレート","springgreen":"スプリンググリーン","moccasin":"モカシン","navy":"濃紺","lemonchiffon":"レモンシフォン","teal":"ティール","floralwhite":"フローラルホワイト","cornflowerblue":"コーンフラワーブルー","paleturquoise":"ペイルターコイズ","purple":"紫","_localized":{},"gainsboro":"ゲインズボーロ","plum":"深紫","red":"赤","blue":"青","forestgreen":"フォレストグリーン","darkgreen":"ダークグリーン","honeydew":"ハニーデュー","darkseagreen":"ダークシーグリーン","lightcoral":"ライトコーラル","palevioletred":"ペイルバイオレットレッド","mediumpurple":"ミディアムパープル","saddlebrown":"サドルブラウン","darkmagenta":"ダークマジェンタ","thistle":"シスル","whitesmoke":"ホワイトスモーク","wheat":"小麦色","violet":"すみれ色","lightskyblue":"ライトスカイブルー","goldenrod":"ゴールデンロッド","mediumblue":"ミディアムブルー","skyblue":"スカイブルー","crimson":"深紅","darksalmon":"ダークサーモン","darkred":"ダークレッド","darkslategrey":"ダークスレートグレイ","peru":"ペルー","lightgrey":"ライトグレイ","lightgoldenrodyellow":"ライトゴールデンロッドイエロー","blanchedalmond":"皮なしアーモンド","aliceblue":"アリスブルー","bisque":"ビスク","slategray":"スレートグレイ","palegoldenrod":"ペイルゴールデンロッド","darkorange":"ダークオレンジ","aquamarine":"碧緑","lightgreen":"ライトグリーン","burlywood":"バーリーウッド","dodgerblue":"ドッジャーブルー","darkgray":"ダークグレイ","lightcyan":"ライトシアン","powderblue":"淡青","blueviolet":"青紫","orchid":"薄紫","dimgray":"くすんだグレイ","beige":"ベージュ","fuchsia":"紫紅色","lavenderblush":"ラベンダーブラッシ","hotpink":"ホットピンク","steelblue":"鋼色","tomato":"トマト色","lightpink":"ライトピンク","limegreen":"ライムグリーン","indianred":"インディアンレッド","papayawhip":"パパイアホイップ","lightslategray":"ライトスレートグレイ","gray":"グレイ","mediumorchid":"ミディアムオーキッド","cornsilk":"コーンシルク","black":"黒","seagreen":"シーグリーン","darkslateblue":"ダークスレートブルー","khaki":"カーキ","lightblue":"ライトブルー","palegreen":"ペイルグリーン","azure":"薄い空色","peachpuff":"ピーチパフ","darkolivegreen":"ダークオリーブグリーン","yellowgreen":"黄緑"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000兆","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000兆","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"以前の選択項目","_localized":{},"nextMessage":"追加の選択項目"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"キャンセル","_localized":{},"buttonSave":"保存","itemClose":"閉じる"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_ja-jp",{"dojo/nls/colors":{"aliceblue":"アリスブルー","antiquewhite":"アンティークホワイト","aqua":"アクア","aquamarine":"碧緑","azure":"薄い空色","beige":"ベージュ","bisque":"ビスク","black":"黒","blanchedalmond":"皮なしアーモンド","blue":"青","blueviolet":"青紫","brown":"茶","burlywood":"バーリーウッド","cadetblue":"くすんだ青","chartreuse":"淡黄緑","chocolate":"チョコレート","coral":"珊瑚","cornflowerblue":"コーンフラワーブルー","cornsilk":"コーンシルク","crimson":"深紅","cyan":"シアンブルー","darkblue":"ダークブルー","darkcyan":"ダークシアンブルー","darkgoldenrod":"ダークゴールデンロッド","darkgray":"ダークグレイ","darkgreen":"ダークグリーン","darkgrey":"ダークグレイ","darkkhaki":"ダークカーキ","darkmagenta":"ダークマジェンタ","darkolivegreen":"ダークオリーブグリーン","darkorange":"ダークオレンジ","darkorchid":"ダークオーキッド","darkred":"ダークレッド","darksalmon":"ダークサーモン","darkseagreen":"ダークシーグリーン","darkslateblue":"ダークスレートブルー","darkslategray":"ダークスレートグレイ","darkslategrey":"ダークスレートグレイ","darkturquoise":"ダークターコイズ","darkviolet":"ダークバイオレット","deeppink":"濃いピンク","deepskyblue":"濃い空色","dimgray":"くすんだグレイ","dimgrey":"くすんだグレイ","dodgerblue":"ドッジャーブルー","firebrick":"赤煉瓦色","floralwhite":"フローラルホワイト","forestgreen":"フォレストグリーン","fuchsia":"紫紅色","gainsboro":"ゲインズボーロ","ghostwhite":"ゴーストホワイト","gold":"金","goldenrod":"ゴールデンロッド","gray":"グレイ","green":"緑","greenyellow":"緑黄色","grey":"グレイ","honeydew":"ハニーデュー","hotpink":"ホットピンク","indianred":"インディアンレッド","indigo":"藍色","ivory":"アイボリー","khaki":"カーキ","lavender":"ラベンダー","lavenderblush":"ラベンダーブラッシ","lawngreen":"ローングリーン","lemonchiffon":"レモンシフォン","lightblue":"ライトブルー","lightcoral":"ライトコーラル","lightcyan":"ライトシアン","lightgoldenrodyellow":"ライトゴールデンロッドイエロー","lightgray":"ライトグレイ","lightgreen":"ライトグリーン","lightgrey":"ライトグレイ","lightpink":"ライトピンク","lightsalmon":"ライトサーモン","lightseagreen":"ライトシーグリーン","lightskyblue":"ライトスカイブルー","lightslategray":"ライトスレートグレイ","lightslategrey":"ライトスレートグレイ","lightsteelblue":"ライトスチールブルー","lightyellow":"ライトイエロー","lime":"ライム","limegreen":"ライムグリーン","linen":"亜麻色","magenta":"赤紫","maroon":"えび茶","mediumaquamarine":"ミディアムアクアマリーン","mediumblue":"ミディアムブルー","mediumorchid":"ミディアムオーキッド","mediumpurple":"ミディアムパープル","mediumseagreen":"ミディアムシーグリーン","mediumslateblue":"ミディアムスレートブルー","mediumspringgreen":"ミディアムスプリンググリーン","mediumturquoise":"ミディアムターコイズ","mediumvioletred":"ミディアムバイオレットレッド","midnightblue":"ミッドナイトブルー","mintcream":"ミントクリーム","mistyrose":"ミスティローズ","moccasin":"モカシン","navajowhite":"ナバホホワイト","navy":"濃紺","oldlace":"オールドレイス","olive":"オリーブ","olivedrab":"濃黄緑","orange":"オレンジ","orangered":"オレンジレッド","orchid":"薄紫","palegoldenrod":"ペイルゴールデンロッド","palegreen":"ペイルグリーン","paleturquoise":"ペイルターコイズ","palevioletred":"ペイルバイオレットレッド","papayawhip":"パパイアホイップ","peachpuff":"ピーチパフ","peru":"ペルー","pink":"ピンク","plum":"深紫","powderblue":"淡青","purple":"紫","red":"赤","rosybrown":"ロージーブラウン","royalblue":"藤色","saddlebrown":"サドルブラウン","salmon":"サーモン","sandybrown":"砂褐色","seagreen":"シーグリーン","seashell":"シーシェル","sienna":"黄褐色","silver":"銀","skyblue":"スカイブルー","slateblue":"スレートブルー","slategray":"スレートグレイ","slategrey":"スレートグレイ","snow":"雪色","springgreen":"スプリンググリーン","steelblue":"鋼色","tan":"茶褐色","teal":"ティール","thistle":"シスル","tomato":"トマト色","transparent":"透明","turquoise":"ターコイズ","violet":"すみれ色","wheat":"小麦色","white":"白","whitesmoke":"ホワイトスモーク","yellow":"黄","yellowgreen":"黄緑","_localized":{}},"dijit/nls/loading":{"loadingState":"ロード中...","errorState":"エラーが発生しました。","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"キャンセル","buttonSave":"保存","itemClose":"閉じる","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"入力した値は無効です。","missingMessage":"この値は必須です。","rangeMessage":"この値は範囲外です。","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"以前の選択項目","nextMessage":"追加の選択項目","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000兆","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","approximatelySign":"約 ","group":",","percentFormat":"#,##0%","decimalFormat-long":"000兆","decimalFormat":"#,##0.###","currencyFormat-short":"¤000兆","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_ko-kr.js b/lib/dojo/nls/tt-rss-layer_ko-kr.js
index d0ba668c9..cee1e8b4e 100644
--- a/lib/dojo/nls/tt-rss-layer_ko-kr.js
+++ b/lib/dojo/nls/tt-rss-layer_ko-kr.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_ko-kr",{"dijit/form/nls/validate":{"invalidMessage":"입력된 값이 올바르지 않습니다.","rangeMessage":"이 값은 범위를 벗어납니다.","_localized":{},"missingMessage":"이 값은 필수입니다."},"dijit/nls/loading":{"_localized":{},"loadingState":"로드 중...","errorState":"죄송합니다. 오류가 발생했습니다."},"dojo/nls/colors":{"lightsteelblue":"라이트 스틸 블루(light steel blue)","orangered":"오렌지 레드(orange red)","midnightblue":"미드나잇 블루(midnight blue)","cadetblue":"카뎃 블루(cadet blue)","seashell":"씨쉘(seashell)","slategrey":"슬레이트 그레이(slate gray)","coral":"코랄(coral)","darkturquoise":"다크 터콰즈(dark turquoise)","antiquewhite":"앤틱 화이트(antique white)","mediumspringgreen":"미디엄 스프링 그린(medium spring green)","transparent":"투명(transparent)","salmon":"샐몬(salmon)","darkgrey":"다크 그레이(dark gray)","ivory":"아이보리(ivory)","greenyellow":"그린 옐로우(green-yellow)","mistyrose":"미스티 로즈(misty rose)","lightsalmon":"라이트 샐몬(light salmon)","silver":"실버(silver)","dimgrey":"딤 그레이(dim gray)","orange":"오렌지(orange)","white":"화이트(white)","navajowhite":"나바호 화이트(navajo white)","royalblue":"로얄 블루(royal blue)","deeppink":"딥 핑크(deep pink)","lime":"라임(lime)","oldlace":"올드 레이스(old lace)","chartreuse":"샤르트뢰즈(chartreuse)","darkcyan":"다크 시안(dark cyan)","yellow":"옐로우(yellow)","linen":"리넨(linen)","olive":"올리브(olive)","gold":"골드(gold)","lawngreen":"론 그린(lawn green)","lightyellow":"라이트 옐로우(light yellow)","tan":"탠(tan)","darkviolet":"다크 바이올렛(dark violet)","lightslategrey":"라이트 슬레이트 그레이(light slate gray)","grey":"그레이(gray)","darkkhaki":"다크 카키(dark khaki)","green":"그린(green)","deepskyblue":"딥 스카이 블루(deep sky blue)","aqua":"아쿠아(aqua)","sienna":"시에나(sienna)","mintcream":"민트 크림(mint cream)","rosybrown":"로지 브라운(rosy brown)","mediumslateblue":"미디엄 슬레이트 블루(medium slate blue)","magenta":"마젠타(magenta)","lightseagreen":"라이트 씨 그린(light sea green)","cyan":"시안(cyan)","olivedrab":"올리브 드랩(olive drab)","darkgoldenrod":"다크 골든로드(dark goldenrod)","slateblue":"슬레이트 블루(slate blue)","mediumaquamarine":"미디엄 아쿠아마린(medium aquamarine)","lavender":"라벤더(lavender)","mediumseagreen":"미디엄 씨 그린(medium sea green)","maroon":"마룬(maroon)","darkslategray":"다크 슬레이트 그레이(dark slate gray)","mediumturquoise":"미디엄 터콰즈(medium turquoise)","ghostwhite":"고스트 화이트(ghost white)","darkblue":"다크 블루(dark blue)","mediumvioletred":"미디엄 바이올렛 레드(medium violet-red)","brown":"브라운(brown)","lightgray":"라이트 그레이(light gray)","sandybrown":"샌디 브라운(sandy brown)","pink":"핑크(pink)","firebrick":"파이어 브릭(fire brick)","indigo":"인디고(indigo)","snow":"스노우(snow)","darkorchid":"다크 오키드(dark orchid)","turquoise":"터콰즈(turquoise)","chocolate":"초콜렛(chocolate)","springgreen":"스프링 그린(spring green)","moccasin":"모카신(moccasin)","navy":"네이비(navy)","lemonchiffon":"레몬 쉬폰(lemon chiffon)","teal":"틸(teal)","floralwhite":"플로랄 화이트(floral white)","cornflowerblue":"콘플라워 블루(cornflower blue)","paleturquoise":"페일 터콰즈(pale turquoise)","purple":"퍼플(purple)","_localized":{},"gainsboro":"게인스브로(gainsboro)","plum":"플럼(plum)","red":"레드(red)","blue":"블루(blue)","forestgreen":"포레스트 그린(forest green)","darkgreen":"다크 그린(dark green)","honeydew":"허니듀(honeydew)","darkseagreen":"다크 씨 그린(dark sea green)","lightcoral":"라이트 코랄(light coral)","palevioletred":"페일 바이올렛 레드(pale violet-red)","mediumpurple":"미디엄 퍼플(medium purple)","saddlebrown":"새들 브라운(saddle brown)","darkmagenta":"다크 마젠타(dark magenta)","thistle":"시슬(thistle)","whitesmoke":"화이트 스모크(white smoke)","wheat":"휘트(wheat)","violet":"바이올렛(violet)","lightskyblue":"라이트 스카이 블루(light sky blue)","goldenrod":"골든로드(goldenrod)","mediumblue":"미디엄 블루(medium blue)","skyblue":"스카이 블루(sky blue)","crimson":"크림슨(crimson)","darksalmon":"다크 샐몬(dark salmon)","darkred":"다크 레드(dark red)","darkslategrey":"다크 슬레이트 그레이(dark slate gray)","peru":"페루(peru)","lightgrey":"라이트 그레이(light gray)","lightgoldenrodyellow":"라이트 골든로드 옐로우(light goldenrod yellow)","blanchedalmond":"블랜치 아몬드(blanched almond)","aliceblue":"앨리스 블루(alice blue)","bisque":"비스크(bisque)","slategray":"슬레이트 그레이(slate gray)","palegoldenrod":"페일 골든로드(pale goldenrod)","darkorange":"다크 오렌지(dark orange)","aquamarine":"아쿠아마린(aquamarine)","lightgreen":"라이트 그린(light green)","burlywood":"벌리우드(burlywood)","dodgerblue":"다저 블루(dodger blue)","darkgray":"다크 그레이(dark gray)","lightcyan":"라이트 시안(light cyan)","powderblue":"파우더 블루(powder blue)","blueviolet":"블루 바이올렛(blue-violet)","orchid":"오키드(orchid)","dimgray":"딤 그레이(dim gray)","beige":"베이지(beige)","fuchsia":"후크샤(fuchsia)","lavenderblush":"라벤더 블러쉬(lavender blush)","hotpink":"핫 핑크(hot pink)","steelblue":"스틸 블루(steel blue)","tomato":"토마토(tomato)","lightpink":"라이트 핑크(light pink)","limegreen":"라임 그린(lime green)","indianred":"인디안 레드(indian red)","papayawhip":"파파야 휩(papaya whip)","lightslategray":"라이트 슬레이트 그레이(light slate gray)","gray":"그레이(gray)","mediumorchid":"미디엄 오키드(medium orchid)","cornsilk":"콘실크(cornsilk)","black":"블랙(black)","seagreen":"씨 그린(sea green)","darkslateblue":"다크 슬레이트 블루(dark slate blue)","khaki":"카키(khaki)","lightblue":"라이트 블루(light blue)","palegreen":"페일 그린(pale green)","azure":"애쥬어(azure)","peachpuff":"피치 퍼프(peach puff)","darkolivegreen":"다크 올리브 그린(dark olive green)","yellowgreen":"옐로우 그린(yellow green)"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000조","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000조","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"이전 선택사항","_localized":{},"nextMessage":"기타 선택사항"},"dijit/nls/common":{"buttonOk":"확인","buttonCancel":"취소","_localized":{},"buttonSave":"저장","itemClose":"닫기"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_ko-kr",{"dojo/nls/colors":{"aliceblue":"앨리스 블루(alice blue)","antiquewhite":"앤틱 화이트(antique white)","aqua":"아쿠아(aqua)","aquamarine":"아쿠아마린(aquamarine)","azure":"애쥬어(azure)","beige":"베이지(beige)","bisque":"비스크(bisque)","black":"블랙(black)","blanchedalmond":"블랜치 아몬드(blanched almond)","blue":"블루(blue)","blueviolet":"블루 바이올렛(blue-violet)","brown":"브라운(brown)","burlywood":"벌리우드(burlywood)","cadetblue":"카뎃 블루(cadet blue)","chartreuse":"샤르트뢰즈(chartreuse)","chocolate":"초콜렛(chocolate)","coral":"코랄(coral)","cornflowerblue":"콘플라워 블루(cornflower blue)","cornsilk":"콘실크(cornsilk)","crimson":"크림슨(crimson)","cyan":"시안(cyan)","darkblue":"다크 블루(dark blue)","darkcyan":"다크 시안(dark cyan)","darkgoldenrod":"다크 골든로드(dark goldenrod)","darkgray":"다크 그레이(dark gray)","darkgreen":"다크 그린(dark green)","darkgrey":"다크 그레이(dark gray)","darkkhaki":"다크 카키(dark khaki)","darkmagenta":"다크 마젠타(dark magenta)","darkolivegreen":"다크 올리브 그린(dark olive green)","darkorange":"다크 오렌지(dark orange)","darkorchid":"다크 오키드(dark orchid)","darkred":"다크 레드(dark red)","darksalmon":"다크 샐몬(dark salmon)","darkseagreen":"다크 씨 그린(dark sea green)","darkslateblue":"다크 슬레이트 블루(dark slate blue)","darkslategray":"다크 슬레이트 그레이(dark slate gray)","darkslategrey":"다크 슬레이트 그레이(dark slate gray)","darkturquoise":"다크 터콰즈(dark turquoise)","darkviolet":"다크 바이올렛(dark violet)","deeppink":"딥 핑크(deep pink)","deepskyblue":"딥 스카이 블루(deep sky blue)","dimgray":"딤 그레이(dim gray)","dimgrey":"딤 그레이(dim gray)","dodgerblue":"다저 블루(dodger blue)","firebrick":"파이어 브릭(fire brick)","floralwhite":"플로랄 화이트(floral white)","forestgreen":"포레스트 그린(forest green)","fuchsia":"후크샤(fuchsia)","gainsboro":"게인스브로(gainsboro)","ghostwhite":"고스트 화이트(ghost white)","gold":"골드(gold)","goldenrod":"골든로드(goldenrod)","gray":"그레이(gray)","green":"그린(green)","greenyellow":"그린 옐로우(green-yellow)","grey":"그레이(gray)","honeydew":"허니듀(honeydew)","hotpink":"핫 핑크(hot pink)","indianred":"인디안 레드(indian red)","indigo":"인디고(indigo)","ivory":"아이보리(ivory)","khaki":"카키(khaki)","lavender":"라벤더(lavender)","lavenderblush":"라벤더 블러쉬(lavender blush)","lawngreen":"론 그린(lawn green)","lemonchiffon":"레몬 쉬폰(lemon chiffon)","lightblue":"라이트 블루(light blue)","lightcoral":"라이트 코랄(light coral)","lightcyan":"라이트 시안(light cyan)","lightgoldenrodyellow":"라이트 골든로드 옐로우(light goldenrod yellow)","lightgray":"라이트 그레이(light gray)","lightgreen":"라이트 그린(light green)","lightgrey":"라이트 그레이(light gray)","lightpink":"라이트 핑크(light pink)","lightsalmon":"라이트 샐몬(light salmon)","lightseagreen":"라이트 씨 그린(light sea green)","lightskyblue":"라이트 스카이 블루(light sky blue)","lightslategray":"라이트 슬레이트 그레이(light slate gray)","lightslategrey":"라이트 슬레이트 그레이(light slate gray)","lightsteelblue":"라이트 스틸 블루(light steel blue)","lightyellow":"라이트 옐로우(light yellow)","lime":"라임(lime)","limegreen":"라임 그린(lime green)","linen":"리넨(linen)","magenta":"마젠타(magenta)","maroon":"마룬(maroon)","mediumaquamarine":"미디엄 아쿠아마린(medium aquamarine)","mediumblue":"미디엄 블루(medium blue)","mediumorchid":"미디엄 오키드(medium orchid)","mediumpurple":"미디엄 퍼플(medium purple)","mediumseagreen":"미디엄 씨 그린(medium sea green)","mediumslateblue":"미디엄 슬레이트 블루(medium slate blue)","mediumspringgreen":"미디엄 스프링 그린(medium spring green)","mediumturquoise":"미디엄 터콰즈(medium turquoise)","mediumvioletred":"미디엄 바이올렛 레드(medium violet-red)","midnightblue":"미드나잇 블루(midnight blue)","mintcream":"민트 크림(mint cream)","mistyrose":"미스티 로즈(misty rose)","moccasin":"모카신(moccasin)","navajowhite":"나바호 화이트(navajo white)","navy":"네이비(navy)","oldlace":"올드 레이스(old lace)","olive":"올리브(olive)","olivedrab":"올리브 드랩(olive drab)","orange":"오렌지(orange)","orangered":"오렌지 레드(orange red)","orchid":"오키드(orchid)","palegoldenrod":"페일 골든로드(pale goldenrod)","palegreen":"페일 그린(pale green)","paleturquoise":"페일 터콰즈(pale turquoise)","palevioletred":"페일 바이올렛 레드(pale violet-red)","papayawhip":"파파야 휩(papaya whip)","peachpuff":"피치 퍼프(peach puff)","peru":"페루(peru)","pink":"핑크(pink)","plum":"플럼(plum)","powderblue":"파우더 블루(powder blue)","purple":"퍼플(purple)","red":"레드(red)","rosybrown":"로지 브라운(rosy brown)","royalblue":"로얄 블루(royal blue)","saddlebrown":"새들 브라운(saddle brown)","salmon":"샐몬(salmon)","sandybrown":"샌디 브라운(sandy brown)","seagreen":"씨 그린(sea green)","seashell":"씨쉘(seashell)","sienna":"시에나(sienna)","silver":"실버(silver)","skyblue":"스카이 블루(sky blue)","slateblue":"슬레이트 블루(slate blue)","slategray":"슬레이트 그레이(slate gray)","slategrey":"슬레이트 그레이(slate gray)","snow":"스노우(snow)","springgreen":"스프링 그린(spring green)","steelblue":"스틸 블루(steel blue)","tan":"탠(tan)","teal":"틸(teal)","thistle":"시슬(thistle)","tomato":"토마토(tomato)","transparent":"투명(transparent)","turquoise":"터콰즈(turquoise)","violet":"바이올렛(violet)","wheat":"휘트(wheat)","white":"화이트(white)","whitesmoke":"화이트 스모크(white smoke)","yellow":"옐로우(yellow)","yellowgreen":"옐로우 그린(yellow green)","_localized":{}},"dijit/nls/loading":{"loadingState":"로드 중...","errorState":"죄송합니다. 오류가 발생했습니다.","_localized":{}},"dijit/nls/common":{"buttonOk":"확인","buttonCancel":"취소","buttonSave":"저장","itemClose":"닫기","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"입력된 값이 올바르지 않습니다.","missingMessage":"이 값은 필수입니다.","rangeMessage":"이 값은 범위를 벗어납니다.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"이전 선택사항","nextMessage":"기타 선택사항","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000조","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","approximatelySign":"~","group":",","percentFormat":"#,##0%","decimalFormat-long":"000조","decimalFormat":"#,##0.###","currencyFormat-short":"¤000조","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_nb.js b/lib/dojo/nls/tt-rss-layer_nb.js
index f79c2c5f0..eb963913e 100644
--- a/lib/dojo/nls/tt-rss-layer_nb.js
+++ b/lib/dojo/nls/tt-rss-layer_nb.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_nb",{"dijit/form/nls/validate":{"invalidMessage":"Den angitte verdien er ikke gyldig.","rangeMessage":"Denne verdien er utenfor gyldig område.","_localized":{},"missingMessage":"Denne verdien er obligatorisk."},"dijit/nls/loading":{"_localized":{},"loadingState":"Laster inn...","errorState":"Det oppsto en feil"},"dojo/nls/colors":{"lightsteelblue":"lys stålblå","orangered":"rødoransje","midnightblue":"midnattsblå","cadetblue":"mørk grønnblå","seashell":"skjellhvit","slategrey":"skifergrå","coral":"korall","darkturquoise":"mørk turkis","antiquewhite":"antikk hvit","mediumspringgreen":"middels vårgrønn","transparent":"gjennomsiktig","salmon":"lakserosa","darkgrey":"mørk grå","ivory":"elfenbenshvit","greenyellow":"gulgrønn","mistyrose":"lys rosenrød","lightsalmon":"lys lakserosa","silver":"sølvfarget","dimgrey":"mørk mørkegrå","orange":"oransje","white":"hvit","navajowhite":"gulbrun","royalblue":"kongeblå","deeppink":"dyp rosa","lime":"lime","oldlace":"kniplingshvit","chartreuse":"løvgrønn","darkcyan":"mørk cyan","yellow":"gul","linen":"lin","olive":"oliven","gold":"gull","lawngreen":"plengrønn","lightyellow":"lys gul","tan":"matt mellombrun","darkviolet":"mørk fiolett","lightslategrey":"lys skifergrå","grey":"grå","darkkhaki":"mørk khaki","green":"grønn","deepskyblue":"dyp himmelblå","aqua":"akva","sienna":"nøttebrun","mintcream":"mintkrem","rosybrown":"brunlilla","mediumslateblue":"middels skiferblå","magenta":"magenta","lightseagreen":"lys sjøgrønn","cyan":"cyan","olivedrab":"middels olivengrønn","darkgoldenrod":"mørk gyldenris","slateblue":"skiferblå","mediumaquamarine":"middels akvamarin","lavender":"lavendel","mediumseagreen":"middels sjøgrønn","maroon":"rødbrun","darkslategray":"mørk skifergrå","mediumturquoise":"middels turkis","ghostwhite":"egghvit","darkblue":"mørk blå","mediumvioletred":"middels fiolettrød","brown":"brun","lightgray":"lys grå","sandybrown":"sandbrun","pink":"rosa","firebrick":"mursteinsrød","indigo":"indigo","snow":"snøhvit","darkorchid":"mørk orkide","turquoise":"turkis","chocolate":"sjokolade","springgreen":"vårgrønn","moccasin":"lys gulbrun","navy":"marineblå","lemonchiffon":"ferskenfarget","teal":"mørk grønnblå","floralwhite":"blomsterhvit","cornflowerblue":"kornblå","paleturquoise":"svak turkis","purple":"purpur","_localized":{},"gainsboro":"lys lys grå","plum":"plommefarget","red":"rød","blue":"blå","forestgreen":"skoggrønn","darkgreen":"mørk grønn","honeydew":"grønnhvit","darkseagreen":"mørk sjøgrønn","lightcoral":"lys korall","palevioletred":"svak fiolettrød","mediumpurple":"middels purpur","saddlebrown":"mørk nøttebrun","darkmagenta":"mørk magenta","thistle":"lys grålilla","whitesmoke":"røykhvit","wheat":"varm sienna","violet":"fiolett","lightskyblue":"lys himmelblå","goldenrod":"gyldenris","mediumblue":"mellomblå","skyblue":"himmelblå","crimson":"karmosinrødt","darksalmon":"mørk lakserosa","darkred":"mørk rød","darkslategrey":"mørk skifergrå","peru":"lys nøttebrun","lightgrey":"lys grå","lightgoldenrodyellow":"lys gyldenrisgul","blanchedalmond":"lys mandel","aliceblue":"blåhvit","bisque":"gulrosa","slategray":"skifergrå","palegoldenrod":"svak gyldenris","darkorange":"mørk oransje","aquamarine":"akvamarin","lightgreen":"lys grønn","burlywood":"matt mellombrun","dodgerblue":"lys havblå","darkgray":"mørk grå","lightcyan":"lys cyan","powderblue":"lys grønnblå","blueviolet":"blåfiolett","orchid":"orkide","dimgray":"mørk mørkegrå","beige":"beige","fuchsia":"fuksia","lavenderblush":"lillahvit","hotpink":"halvmørk rosa","steelblue":"stålblå","tomato":"tomatrød","lightpink":"lys rosa","limegreen":"limegrønn","indianred":"rustrød","papayawhip":"lys papaya","lightslategray":"lys skifergrå","gray":"grå","mediumorchid":"middels orkide","cornsilk":"cornsilk","black":"svart","seagreen":"sjøgrønn","darkslateblue":"mørk skiferblå","khaki":"khaki","lightblue":"lys blå","palegreen":"svak grønn","azure":"asur","peachpuff":"brunrosa","darkolivegreen":"mørk olivengrønn","yellowgreen":"gulgrønn"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 bill","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 billioner","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Tidligere valg","_localized":{},"nextMessage":"Flere valg"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Avbryt","_localized":{},"buttonSave":"Lagre","itemClose":"Lukk"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_nb",{"dojo/nls/colors":{"aliceblue":"blåhvit","antiquewhite":"antikk hvit","aqua":"akva","aquamarine":"akvamarin","azure":"asur","beige":"beige","bisque":"gulrosa","black":"svart","blanchedalmond":"lys mandel","blue":"blå","blueviolet":"blåfiolett","brown":"brun","burlywood":"matt mellombrun","cadetblue":"mørk grønnblå","chartreuse":"løvgrønn","chocolate":"sjokolade","coral":"korall","cornflowerblue":"kornblå","cornsilk":"cornsilk","crimson":"karmosinrødt","cyan":"cyan","darkblue":"mørk blå","darkcyan":"mørk cyan","darkgoldenrod":"mørk gyldenris","darkgray":"mørk grå","darkgreen":"mørk grønn","darkgrey":"mørk grå","darkkhaki":"mørk khaki","darkmagenta":"mørk magenta","darkolivegreen":"mørk olivengrønn","darkorange":"mørk oransje","darkorchid":"mørk orkide","darkred":"mørk rød","darksalmon":"mørk lakserosa","darkseagreen":"mørk sjøgrønn","darkslateblue":"mørk skiferblå","darkslategray":"mørk skifergrå","darkslategrey":"mørk skifergrå","darkturquoise":"mørk turkis","darkviolet":"mørk fiolett","deeppink":"dyp rosa","deepskyblue":"dyp himmelblå","dimgray":"mørk mørkegrå","dimgrey":"mørk mørkegrå","dodgerblue":"lys havblå","firebrick":"mursteinsrød","floralwhite":"blomsterhvit","forestgreen":"skoggrønn","fuchsia":"fuksia","gainsboro":"lys lys grå","ghostwhite":"egghvit","gold":"gull","goldenrod":"gyldenris","gray":"grå","green":"grønn","greenyellow":"gulgrønn","grey":"grå","honeydew":"grønnhvit","hotpink":"halvmørk rosa","indianred":"rustrød","indigo":"indigo","ivory":"elfenbenshvit","khaki":"khaki","lavender":"lavendel","lavenderblush":"lillahvit","lawngreen":"plengrønn","lemonchiffon":"ferskenfarget","lightblue":"lys blå","lightcoral":"lys korall","lightcyan":"lys cyan","lightgoldenrodyellow":"lys gyldenrisgul","lightgray":"lys grå","lightgreen":"lys grønn","lightgrey":"lys grå","lightpink":"lys rosa","lightsalmon":"lys lakserosa","lightseagreen":"lys sjøgrønn","lightskyblue":"lys himmelblå","lightslategray":"lys skifergrå","lightslategrey":"lys skifergrå","lightsteelblue":"lys stålblå","lightyellow":"lys gul","lime":"lime","limegreen":"limegrønn","linen":"lin","magenta":"magenta","maroon":"rødbrun","mediumaquamarine":"middels akvamarin","mediumblue":"mellomblå","mediumorchid":"middels orkide","mediumpurple":"middels purpur","mediumseagreen":"middels sjøgrønn","mediumslateblue":"middels skiferblå","mediumspringgreen":"middels vårgrønn","mediumturquoise":"middels turkis","mediumvioletred":"middels fiolettrød","midnightblue":"midnattsblå","mintcream":"mintkrem","mistyrose":"lys rosenrød","moccasin":"lys gulbrun","navajowhite":"gulbrun","navy":"marineblå","oldlace":"kniplingshvit","olive":"oliven","olivedrab":"middels olivengrønn","orange":"oransje","orangered":"rødoransje","orchid":"orkide","palegoldenrod":"svak gyldenris","palegreen":"svak grønn","paleturquoise":"svak turkis","palevioletred":"svak fiolettrød","papayawhip":"lys papaya","peachpuff":"brunrosa","peru":"lys nøttebrun","pink":"rosa","plum":"plommefarget","powderblue":"lys grønnblå","purple":"purpur","red":"rød","rosybrown":"brunlilla","royalblue":"kongeblå","saddlebrown":"mørk nøttebrun","salmon":"lakserosa","sandybrown":"sandbrun","seagreen":"sjøgrønn","seashell":"skjellhvit","sienna":"nøttebrun","silver":"sølvfarget","skyblue":"himmelblå","slateblue":"skiferblå","slategray":"skifergrå","slategrey":"skifergrå","snow":"snøhvit","springgreen":"vårgrønn","steelblue":"stålblå","tan":"matt mellombrun","teal":"mørk grønnblå","thistle":"lys grålilla","tomato":"tomatrød","transparent":"gjennomsiktig","turquoise":"turkis","violet":"fiolett","wheat":"varm sienna","white":"hvit","whitesmoke":"røykhvit","yellow":"gul","yellowgreen":"gulgrønn","_localized":{}},"dijit/nls/loading":{"loadingState":"Laster inn...","errorState":"Det oppsto en feil","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Lagre","itemClose":"Lukk","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Den angitte verdien er ikke gyldig.","missingMessage":"Denne verdien er obligatorisk.","rangeMessage":"Denne verdien er utenfor gyldig område.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Tidligere valg","nextMessage":"Flere valg","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bill'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤ #,##0.00","perMille":"‰","approximatelySign":"ca.","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 billioner","decimalFormat":"#,##0.###","currencyFormat-short":"¤ 000 bill'.'","timeSeparator":".","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_nl-nl.js b/lib/dojo/nls/tt-rss-layer_nl-nl.js
index d33705a0a..2697f9dac 100644
--- a/lib/dojo/nls/tt-rss-layer_nl-nl.js
+++ b/lib/dojo/nls/tt-rss-layer_nl-nl.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_nl-nl",{"dijit/form/nls/validate":{"invalidMessage":"De opgegeven waarde is ongeldig.","rangeMessage":"Deze waarde is niet toegestaan.","_localized":{},"missingMessage":"Deze waarde is verplicht."},"dijit/nls/loading":{"_localized":{},"loadingState":"Bezig met laden...","errorState":"Er is een fout opgetreden"},"dojo/nls/colors":{"lightsteelblue":"lichtstaalblauw","orangered":"oranjerood","midnightblue":"nachtblauw","cadetblue":"donkerstaalblauw","seashell":"schelp","slategrey":"leigrijs","coral":"koraalrood","darkturquoise":"donkerturquoise","antiquewhite":"antiekwit","mediumspringgreen":"midlentegroen","transparent":"transparant","salmon":"zalm","darkgrey":"donkergrijs","ivory":"ivoorwit","greenyellow":"groengeel","mistyrose":"matroze","lightsalmon":"lichtzalm","silver":"zilvergrijs","dimgrey":"dofgrijs","orange":"oranje","white":"wit","navajowhite":"navajowit","royalblue":"koningsblauw","deeppink":"donkerroze","lime":"limoen","oldlace":"kant","chartreuse":"groengeel","darkcyan":"donkercyaan","yellow":"geel","linen":"linnen","olive":"olijfgroen","gold":"goud","lawngreen":"grasgroen","lightyellow":"lichtgeel","tan":"geelbruin","darkviolet":"donkerviolet","lightslategrey":"lichtblauwgrijs","grey":"grijs","darkkhaki":"donkerkaki","green":"groen","deepskyblue":"diephemelblauw","aqua":"aqua","sienna":"sienna","mintcream":"mintroomgeel","rosybrown":"roodbruin","mediumslateblue":"midgrijsblauw","magenta":"magenta","lightseagreen":"lichtzeegroen","cyan":"cyaan","olivedrab":"grijsbruin","darkgoldenrod":"donkergoud","slateblue":"leiblauw","mediumaquamarine":"midaquamarijn","lavender":"lavendelblauw","mediumseagreen":"midzeegroen","maroon":"kastanjebruin","darkslategray":"donkerblauwgrijs","mediumturquoise":"midturquoise","ghostwhite":"spierwit","darkblue":"donkerblauw","mediumvioletred":"midvioletrood","brown":"bruin","lightgray":"lichtgrijs","sandybrown":"zandbruin","pink":"roze","firebrick":"vuursteenrood","indigo":"indigo","snow":"sneeuwwit","darkorchid":"donkerorchidee","turquoise":"turquoise","chocolate":"chocoladebruin","springgreen":"lentegroen","moccasin":"moccasin","navy":"marineblauw","lemonchiffon":"citroengeel","teal":"grijsblauw","floralwhite":"rozewit","cornflowerblue":"korenbloemblauw","paleturquoise":"bleekturquoise","purple":"purper","_localized":{},"gainsboro":"lichtblauwgrijs","plum":"pruim","red":"rood","blue":"blauw","forestgreen":"bosgroen","darkgreen":"donkergroen","honeydew":"meloen","darkseagreen":"donkerzeegroen","lightcoral":"lichtkoraal","palevioletred":"bleekvioletrood","mediumpurple":"midpurper","saddlebrown":"leerbruin","darkmagenta":"donkermagenta","thistle":"distel","whitesmoke":"rookwit","wheat":"tarwebruin","violet":"violet","lightskyblue":"lichthemelsblauw","goldenrod":"goudbruin","mediumblue":"midblauw","skyblue":"hemelsblauw","crimson":"karmozijnrood","darksalmon":"donkerzalm","darkred":"donkerrood","darkslategrey":"donkerblauwgrijs","peru":"bruin","lightgrey":"lichtgrijs","lightgoldenrodyellow":"lichtgoudgeel","blanchedalmond":"amandel","aliceblue":"lichtblauw","bisque":"oranjegeel","slategray":"leigrijs","palegoldenrod":"bleekgeel","darkorange":"donkeroranje","aquamarine":"aquamarijn","lightgreen":"lichtgroen","burlywood":"lichtbruin","dodgerblue":"helderblauw","darkgray":"donkergrijs","lightcyan":"lichtcyaan","powderblue":"lichtblauw-wit","blueviolet":"violet","orchid":"orchidee","dimgray":"dofgrijs","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavendelblos","hotpink":"acaciaroze","steelblue":"staalblauw","tomato":"tomaat","lightpink":"lichtroze","limegreen":"limoengroen","indianred":"indisch rood","papayawhip":"papajaroze","lightslategray":"lichtblauwgrijs","gray":"grijs","mediumorchid":"midorchidee","cornsilk":"maïsgeel","black":"zwart","seagreen":"zeegroen","darkslateblue":"donkergrijsblauw","khaki":"kaki","lightblue":"lichtblauw","palegreen":"bleekgroen","azure":"azuur","peachpuff":"perzikroze","darkolivegreen":"donkerolijfgroen","yellowgreen":"geelgroen"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 bln'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤ #,##0.00;(¤ #,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 biljoen","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Eerdere opties","_localized":{},"nextMessage":"Meer opties"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Annuleren","_localized":{},"buttonSave":"Opslaan","itemClose":"Sluiten"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_nl-nl",{"dojo/nls/colors":{"aliceblue":"lichtblauw","antiquewhite":"antiekwit","aqua":"aqua","aquamarine":"aquamarijn","azure":"azuur","beige":"beige","bisque":"oranjegeel","black":"zwart","blanchedalmond":"amandel","blue":"blauw","blueviolet":"violet","brown":"bruin","burlywood":"lichtbruin","cadetblue":"donkerstaalblauw","chartreuse":"groengeel","chocolate":"chocoladebruin","coral":"koraalrood","cornflowerblue":"korenbloemblauw","cornsilk":"maïsgeel","crimson":"karmozijnrood","cyan":"cyaan","darkblue":"donkerblauw","darkcyan":"donkercyaan","darkgoldenrod":"donkergoud","darkgray":"donkergrijs","darkgreen":"donkergroen","darkgrey":"donkergrijs","darkkhaki":"donkerkaki","darkmagenta":"donkermagenta","darkolivegreen":"donkerolijfgroen","darkorange":"donkeroranje","darkorchid":"donkerorchidee","darkred":"donkerrood","darksalmon":"donkerzalm","darkseagreen":"donkerzeegroen","darkslateblue":"donkergrijsblauw","darkslategray":"donkerblauwgrijs","darkslategrey":"donkerblauwgrijs","darkturquoise":"donkerturquoise","darkviolet":"donkerviolet","deeppink":"donkerroze","deepskyblue":"diephemelblauw","dimgray":"dofgrijs","dimgrey":"dofgrijs","dodgerblue":"helderblauw","firebrick":"vuursteenrood","floralwhite":"rozewit","forestgreen":"bosgroen","fuchsia":"fuchsia","gainsboro":"lichtblauwgrijs","ghostwhite":"spierwit","gold":"goud","goldenrod":"goudbruin","gray":"grijs","green":"groen","greenyellow":"groengeel","grey":"grijs","honeydew":"meloen","hotpink":"acaciaroze","indianred":"indisch rood","indigo":"indigo","ivory":"ivoorwit","khaki":"kaki","lavender":"lavendelblauw","lavenderblush":"lavendelblos","lawngreen":"grasgroen","lemonchiffon":"citroengeel","lightblue":"lichtblauw","lightcoral":"lichtkoraal","lightcyan":"lichtcyaan","lightgoldenrodyellow":"lichtgoudgeel","lightgray":"lichtgrijs","lightgreen":"lichtgroen","lightgrey":"lichtgrijs","lightpink":"lichtroze","lightsalmon":"lichtzalm","lightseagreen":"lichtzeegroen","lightskyblue":"lichthemelsblauw","lightslategray":"lichtblauwgrijs","lightslategrey":"lichtblauwgrijs","lightsteelblue":"lichtstaalblauw","lightyellow":"lichtgeel","lime":"limoen","limegreen":"limoengroen","linen":"linnen","magenta":"magenta","maroon":"kastanjebruin","mediumaquamarine":"midaquamarijn","mediumblue":"midblauw","mediumorchid":"midorchidee","mediumpurple":"midpurper","mediumseagreen":"midzeegroen","mediumslateblue":"midgrijsblauw","mediumspringgreen":"midlentegroen","mediumturquoise":"midturquoise","mediumvioletred":"midvioletrood","midnightblue":"nachtblauw","mintcream":"mintroomgeel","mistyrose":"matroze","moccasin":"moccasin","navajowhite":"navajowit","navy":"marineblauw","oldlace":"kant","olive":"olijfgroen","olivedrab":"grijsbruin","orange":"oranje","orangered":"oranjerood","orchid":"orchidee","palegoldenrod":"bleekgeel","palegreen":"bleekgroen","paleturquoise":"bleekturquoise","palevioletred":"bleekvioletrood","papayawhip":"papajaroze","peachpuff":"perzikroze","peru":"bruin","pink":"roze","plum":"pruim","powderblue":"lichtblauw-wit","purple":"purper","red":"rood","rosybrown":"roodbruin","royalblue":"koningsblauw","saddlebrown":"leerbruin","salmon":"zalm","sandybrown":"zandbruin","seagreen":"zeegroen","seashell":"schelp","sienna":"sienna","silver":"zilvergrijs","skyblue":"hemelsblauw","slateblue":"leiblauw","slategray":"leigrijs","slategrey":"leigrijs","snow":"sneeuwwit","springgreen":"lentegroen","steelblue":"staalblauw","tan":"geelbruin","teal":"grijsblauw","thistle":"distel","tomato":"tomaat","transparent":"transparant","turquoise":"turquoise","violet":"violet","wheat":"tarwebruin","white":"wit","whitesmoke":"rookwit","yellow":"geel","yellowgreen":"geelgroen","_localized":{}},"dijit/nls/loading":{"loadingState":"Bezig met laden...","errorState":"Er is een fout opgetreden","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Annuleren","buttonSave":"Opslaan","itemClose":"Sluiten","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"De opgegeven waarde is ongeldig.","missingMessage":"Deze waarde is verplicht.","rangeMessage":"Deze waarde is niet toegestaan.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Eerdere opties","nextMessage":"Meer opties","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bln'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤ #,##0.00;(¤ #,##0.00)","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 biljoen","decimalFormat":"#,##0.###","currencyFormat-short":"¤ 000 bln'.'","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_pl.js b/lib/dojo/nls/tt-rss-layer_pl.js
index 0f5d08125..fe24ff78d 100644
--- a/lib/dojo/nls/tt-rss-layer_pl.js
+++ b/lib/dojo/nls/tt-rss-layer_pl.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_pl",{"dijit/form/nls/validate":{"invalidMessage":"Wprowadzona wartość jest nieprawidłowa.","rangeMessage":"Ta wartość jest spoza zakresu.","_localized":{},"missingMessage":"Ta wartość jest wymagana."},"dijit/nls/loading":{"_localized":{},"loadingState":"Ładowanie...","errorState":"Niestety, wystąpił błąd"},"dojo/nls/colors":{"lightsteelblue":"jasnostalowoniebieski","orangered":"czerwona pomarańcza","midnightblue":"atramentowoniebieski","cadetblue":"szaroniebieski","seashell":"matowoliliowy","slategrey":"mysi","coral":"koralowy","darkturquoise":"ciemnoturkusowy","antiquewhite":"biel antyczna","mediumspringgreen":"średnia wiosenna zieleń","transparent":"przezroczysty","salmon":"łososiowy","darkgrey":"ciemnoszary","ivory":"kość słoniowa","greenyellow":"zielonożółty","mistyrose":"mglistoróżany","lightsalmon":"jasnołososiowy","silver":"srebrny","dimgrey":"przyciemniony szary","orange":"pomarańczowy","white":"biały","navajowhite":"biel Nawaho","royalblue":"królewska purpura","deeppink":"głęboki róż","lime":"limonkowy","oldlace":"ecru","chartreuse":"żółtooliwkowy","darkcyan":"ciemnoniebieskozielony","yellow":"żółty","linen":"lniany","olive":"oliwkowy","gold":"złoty","lawngreen":"trawiasty","lightyellow":"jasnożółty","tan":"śniady","darkviolet":"ciemnofiołkowy","lightslategrey":"jasny mysi","grey":"szary","darkkhaki":"ciemny khaki","green":"zielony","deepskyblue":"intensywny błękit nieba","aqua":"morski","sienna":"sjena","mintcream":"miętowokremowy","rosybrown":"różanobrązowy","mediumslateblue":"średni gołębi","magenta":"amarantowy","lightseagreen":"jasna zieleń morska","cyan":"niebieskozielony","olivedrab":"oliwkowozielony","darkgoldenrod":"ciemne stare złoto","slateblue":"gołębi","mediumaquamarine":"średnia akwamaryna","lavender":"lawendowy","mediumseagreen":"średnia zieleń morska","maroon":"rdzawoczerwony","darkslategray":"ciemny mysi","mediumturquoise":"średni turkusowy","ghostwhite":"sina biel","darkblue":"ciemnoniebieski","mediumvioletred":"średni fiołkowowoczerwony","brown":"brązowy","lightgray":"jasnoszary","sandybrown":"piaskowobrązowy","pink":"różowy","firebrick":"podpalana cegła","indigo":"indygo","snow":"śnieżny","darkorchid":"ciemna orchidea","turquoise":"turkusowy","chocolate":"czekoladowy","springgreen":"wiosenna zieleń","moccasin":"mokasynowy","navy":"granatowy","lemonchiffon":"babka cytrynowa","teal":"zielonomodry","floralwhite":"złamana biel","cornflowerblue":"niebieskochabrowy","paleturquoise":"bladoturkusowy","purple":"fioletowy","_localized":{},"gainsboro":"jasnoniebieskawoszary","plum":"śliwkowy","red":"czerwony","blue":"niebieski","forestgreen":"leśna zieleń","darkgreen":"ciemnozielony","honeydew":"miodowy","darkseagreen":"ciemna zieleń morska","lightcoral":"jasnokoralowy","palevioletred":"bladofiołkowoczerwony","mediumpurple":"średni fioletowy","saddlebrown":"brąz skórzany","darkmagenta":"ciemnoamarantowy","thistle":"kwiat ostu","whitesmoke":"siwy","wheat":"pszeniczny","violet":"fiołkowy","lightskyblue":"jasny błękit nieba","goldenrod":"stare złoto","mediumblue":"średni niebieski","skyblue":"błękit nieba","crimson":"karmazynowy","darksalmon":"ciemnołososiowy","darkred":"ciemnoczerwony","darkslategrey":"ciemny mysi","peru":"palona glina","lightgrey":"jasnoszary","lightgoldenrodyellow":"jasne stare złoto","blanchedalmond":"obrany migdał","aliceblue":"bladoniebieski","bisque":"cielistobeżowy","slategray":"mysi","palegoldenrod":"blade stare złoto","darkorange":"ciemnopomarańczowy","aquamarine":"akwamaryna","lightgreen":"jasnozielony","burlywood":"piaskowobeżowy","dodgerblue":"niebieski Dodgersów","darkgray":"ciemnoszary","lightcyan":"jasnoniebieskozielony","powderblue":"jasnobladobłękitny","blueviolet":"błękitnofiołkowy","orchid":"orchidea","dimgray":"przyciemniony szary","beige":"beżowy","fuchsia":"fuksjowy","lavenderblush":"lawendoworóżowy","hotpink":"odblaskoworóżowy","steelblue":"stalowoniebieski","tomato":"pomidorowy","lightpink":"jasnoróżowy","limegreen":"limonkowozielony","indianred":"kasztanowy","papayawhip":"kremowa papaja","lightslategray":"jasny mysi","gray":"szary","mediumorchid":"średnia orchidea","cornsilk":"białożółty","black":"czarny","seagreen":"zieleń morska","darkslateblue":"ciemny gołębi","khaki":"khaki","lightblue":"jasnoniebieski","palegreen":"bladozielony","azure":"lazurowy","peachpuff":"cielisty brzoskwiniowy","darkolivegreen":"ciemnooliwkowozielony","yellowgreen":"żółtozielony"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 bln","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 biliona","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Poprzednie wybory","_localized":{},"nextMessage":"Więcej wyborów"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Anuluj","_localized":{},"buttonSave":"Zapisz","itemClose":"Zamknij"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_pl",{"dojo/nls/colors":{"aliceblue":"bladoniebieski","antiquewhite":"biel antyczna","aqua":"morski","aquamarine":"akwamaryna","azure":"lazurowy","beige":"beżowy","bisque":"cielistobeżowy","black":"czarny","blanchedalmond":"obrany migdał","blue":"niebieski","blueviolet":"błękitnofiołkowy","brown":"brązowy","burlywood":"piaskowobeżowy","cadetblue":"szaroniebieski","chartreuse":"żółtooliwkowy","chocolate":"czekoladowy","coral":"koralowy","cornflowerblue":"niebieskochabrowy","cornsilk":"białożółty","crimson":"karmazynowy","cyan":"niebieskozielony","darkblue":"ciemnoniebieski","darkcyan":"ciemnoniebieskozielony","darkgoldenrod":"ciemne stare złoto","darkgray":"ciemnoszary","darkgreen":"ciemnozielony","darkgrey":"ciemnoszary","darkkhaki":"ciemny khaki","darkmagenta":"ciemnoamarantowy","darkolivegreen":"ciemnooliwkowozielony","darkorange":"ciemnopomarańczowy","darkorchid":"ciemna orchidea","darkred":"ciemnoczerwony","darksalmon":"ciemnołososiowy","darkseagreen":"ciemna zieleń morska","darkslateblue":"ciemny gołębi","darkslategray":"ciemny mysi","darkslategrey":"ciemny mysi","darkturquoise":"ciemnoturkusowy","darkviolet":"ciemnofiołkowy","deeppink":"głęboki róż","deepskyblue":"intensywny błękit nieba","dimgray":"przyciemniony szary","dimgrey":"przyciemniony szary","dodgerblue":"niebieski Dodgersów","firebrick":"podpalana cegła","floralwhite":"złamana biel","forestgreen":"leśna zieleń","fuchsia":"fuksjowy","gainsboro":"jasnoniebieskawoszary","ghostwhite":"sina biel","gold":"złoty","goldenrod":"stare złoto","gray":"szary","green":"zielony","greenyellow":"zielonożółty","grey":"szary","honeydew":"miodowy","hotpink":"odblaskoworóżowy","indianred":"kasztanowy","indigo":"indygo","ivory":"kość słoniowa","khaki":"khaki","lavender":"lawendowy","lavenderblush":"lawendoworóżowy","lawngreen":"trawiasty","lemonchiffon":"babka cytrynowa","lightblue":"jasnoniebieski","lightcoral":"jasnokoralowy","lightcyan":"jasnoniebieskozielony","lightgoldenrodyellow":"jasne stare złoto","lightgray":"jasnoszary","lightgreen":"jasnozielony","lightgrey":"jasnoszary","lightpink":"jasnoróżowy","lightsalmon":"jasnołososiowy","lightseagreen":"jasna zieleń morska","lightskyblue":"jasny błękit nieba","lightslategray":"jasny mysi","lightslategrey":"jasny mysi","lightsteelblue":"jasnostalowoniebieski","lightyellow":"jasnożółty","lime":"limonkowy","limegreen":"limonkowozielony","linen":"lniany","magenta":"amarantowy","maroon":"rdzawoczerwony","mediumaquamarine":"średnia akwamaryna","mediumblue":"średni niebieski","mediumorchid":"średnia orchidea","mediumpurple":"średni fioletowy","mediumseagreen":"średnia zieleń morska","mediumslateblue":"średni gołębi","mediumspringgreen":"średnia wiosenna zieleń","mediumturquoise":"średni turkusowy","mediumvioletred":"średni fiołkowowoczerwony","midnightblue":"atramentowoniebieski","mintcream":"miętowokremowy","mistyrose":"mglistoróżany","moccasin":"mokasynowy","navajowhite":"biel Nawaho","navy":"granatowy","oldlace":"ecru","olive":"oliwkowy","olivedrab":"oliwkowozielony","orange":"pomarańczowy","orangered":"czerwona pomarańcza","orchid":"orchidea","palegoldenrod":"blade stare złoto","palegreen":"bladozielony","paleturquoise":"bladoturkusowy","palevioletred":"bladofiołkowoczerwony","papayawhip":"kremowa papaja","peachpuff":"cielisty brzoskwiniowy","peru":"palona glina","pink":"różowy","plum":"śliwkowy","powderblue":"jasnobladobłękitny","purple":"fioletowy","red":"czerwony","rosybrown":"różanobrązowy","royalblue":"królewska purpura","saddlebrown":"brąz skórzany","salmon":"łososiowy","sandybrown":"piaskowobrązowy","seagreen":"zieleń morska","seashell":"matowoliliowy","sienna":"sjena","silver":"srebrny","skyblue":"błękit nieba","slateblue":"gołębi","slategray":"mysi","slategrey":"mysi","snow":"śnieżny","springgreen":"wiosenna zieleń","steelblue":"stalowoniebieski","tan":"śniady","teal":"zielonomodry","thistle":"kwiat ostu","tomato":"pomidorowy","transparent":"przezroczysty","turquoise":"turkusowy","violet":"fiołkowy","wheat":"pszeniczny","white":"biały","whitesmoke":"siwy","yellow":"żółty","yellowgreen":"żółtozielony","_localized":{}},"dijit/nls/loading":{"loadingState":"Ładowanie...","errorState":"Niestety, wystąpił błąd","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Anuluj","buttonSave":"Zapisz","itemClose":"Zamknij","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Wprowadzona wartość jest nieprawidłowa.","missingMessage":"Ta wartość jest wymagana.","rangeMessage":"Ta wartość jest spoza zakresu.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Poprzednie wybory","nextMessage":"Więcej wyborów","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bln","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","approximatelySign":"~","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 biliona","decimalFormat":"#,##0.###","currencyFormat-short":"000 bln ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_pt-br.js b/lib/dojo/nls/tt-rss-layer_pt-br.js
index e7bee5ab0..ddc939e64 100644
--- a/lib/dojo/nls/tt-rss-layer_pt-br.js
+++ b/lib/dojo/nls/tt-rss-layer_pt-br.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_pt-br",{"dijit/form/nls/validate":{"invalidMessage":"O valor inserido não é válido.","rangeMessage":"Este valor está fora do intervalo. ","_localized":{},"missingMessage":"Este valor é necessário."},"dijit/nls/loading":{"_localized":{},"loadingState":"Carregando...","errorState":"Desculpe, ocorreu um erro"},"dojo/nls/colors":{"lightsteelblue":"azul aço claro","orangered":"vermelho alaranjado","midnightblue":"azul meia-noite","cadetblue":"azul cadet","seashell":"seashell","slategrey":"cinza ardósia","coral":"coral","darkturquoise":"turquesa escuro","antiquewhite":"branco antigo","mediumspringgreen":"verde primavera médio","transparent":"transparente","salmon":"salmão","darkgrey":"cinza escuro","ivory":"marfim","greenyellow":"amarelo esverdeado","mistyrose":"rosa enevoado","lightsalmon":"salmão claro","silver":"prateado","dimgrey":"cinza turvo","orange":"laranja","white":"branco","navajowhite":"branco navajo","royalblue":"azul royal","deeppink":"rosa profundo","lime":"lima","oldlace":"cadarço velho","chartreuse":"chartreuse","darkcyan":"ciano escuro","yellow":"amarelo","linen":"linho","olive":"oliva","gold":"dourado","lawngreen":"verde grama","lightyellow":"amarelo claro","tan":"tan","darkviolet":"violeta escuro","lightslategrey":"cinza ardósia claro","grey":"cinza","darkkhaki":"cáqui escuro","green":"verde","deepskyblue":"azul céu intenso","aqua":"aqua","sienna":"sienna","mintcream":"creme de menta","rosybrown":"marrom rosado","mediumslateblue":"azul ardósia médio","magenta":"magenta","lightseagreen":"verde marinho claro","cyan":"ciano","olivedrab":"verde oliva","darkgoldenrod":"goldenrod escuro","slateblue":"azul ardósia","mediumaquamarine":"água marinha médio","lavender":"lavanda","mediumseagreen":"verde marinho médio","maroon":"castanho","darkslategray":"cinza ardósia escuro","mediumturquoise":"turquesa médio","ghostwhite":"branco ghost","darkblue":"azul escuro","mediumvioletred":"vermelho violeta médio","brown":"marrom","lightgray":"cinza claro","sandybrown":"marrom cor de areia","pink":"rosa","firebrick":"firebrick","indigo":"índigo","snow":"branco neve","darkorchid":"orquídea escuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde primavera","moccasin":"moccasin","navy":"marinho","lemonchiffon":"limão chiffon","teal":"azul esverdeado","floralwhite":"branco floral","cornflowerblue":"azul centaurea","paleturquoise":"turquesa esbranquiçado","purple":"roxo","_localized":{},"gainsboro":"gainsboro","plum":"ameixa","red":"vermelho","blue":"azul","forestgreen":"verde floresta","darkgreen":"verde escuro","honeydew":"honeydew","darkseagreen":"verde marinho escuro","lightcoral":"coral claro","palevioletred":"vermelho violeta esbranquiçado","mediumpurple":"roxo médio","saddlebrown":"marrom saddle","darkmagenta":"magenta escuro","thistle":"thistle","whitesmoke":"fumaça branca","wheat":"trigo","violet":"violeta","lightskyblue":"azul céu claro","goldenrod":"goldenrod","mediumblue":"azul médio","skyblue":"azul céu","crimson":"carmesim","darksalmon":"salmão escuro","darkred":"vermelho escuro","darkslategrey":"cinza ardósia escuro","peru":"peru","lightgrey":"cinza claro","lightgoldenrodyellow":"amarelo goldenrod claro","blanchedalmond":"amêndoa pelada","aliceblue":"azul alice","bisque":"bisque","slategray":"cinza ardósia","palegoldenrod":"goldenrod esbranquiçado","darkorange":"laranja escuro","aquamarine":"água marinha","lightgreen":"verde claro","burlywood":"burlywood","dodgerblue":"azul dodger","darkgray":"cinza escuro","lightcyan":"ciano claro","powderblue":"azul talco","blueviolet":"azul violeta","orchid":"orquídea","dimgray":"cinza turvo","beige":"bege","fuchsia":"fúcsia","lavenderblush":"lavanda avermelhada","hotpink":"rosa quente","steelblue":"azul aço","tomato":"tomate","lightpink":"rosa claro","limegreen":"verde lima","indianred":"vermelho indiano","papayawhip":"creme de papaya","lightslategray":"cinza ardósia claro","gray":"cinza","mediumorchid":"orquídea médio","cornsilk":"cornsilk","black":"preto","seagreen":"verde marinho","darkslateblue":"azul ardósia escuro","khaki":"cáqui","lightblue":"azul claro","palegreen":"verde esbranquiçado","azure":"azul celeste","peachpuff":"peach puff","darkolivegreen":"verde oliva escuro","yellowgreen":"verde amarelado"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 tri","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 trilhões","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Opções anteriores","_localized":{},"nextMessage":"Mais opções"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancelar","_localized":{},"buttonSave":"Salvar","itemClose":"Fechar"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_pt-br",{"dojo/nls/colors":{"aliceblue":"azul alice","antiquewhite":"branco antigo","aqua":"aqua","aquamarine":"água marinha","azure":"azul celeste","beige":"bege","bisque":"bisque","black":"preto","blanchedalmond":"amêndoa pelada","blue":"azul","blueviolet":"azul violeta","brown":"marrom","burlywood":"burlywood","cadetblue":"azul cadet","chartreuse":"chartreuse","chocolate":"chocolate","coral":"coral","cornflowerblue":"azul centaurea","cornsilk":"cornsilk","crimson":"carmesim","cyan":"ciano","darkblue":"azul escuro","darkcyan":"ciano escuro","darkgoldenrod":"goldenrod escuro","darkgray":"cinza escuro","darkgreen":"verde escuro","darkgrey":"cinza escuro","darkkhaki":"cáqui escuro","darkmagenta":"magenta escuro","darkolivegreen":"verde oliva escuro","darkorange":"laranja escuro","darkorchid":"orquídea escuro","darkred":"vermelho escuro","darksalmon":"salmão escuro","darkseagreen":"verde marinho escuro","darkslateblue":"azul ardósia escuro","darkslategray":"cinza ardósia escuro","darkslategrey":"cinza ardósia escuro","darkturquoise":"turquesa escuro","darkviolet":"violeta escuro","deeppink":"rosa profundo","deepskyblue":"azul céu intenso","dimgray":"cinza turvo","dimgrey":"cinza turvo","dodgerblue":"azul dodger","firebrick":"firebrick","floralwhite":"branco floral","forestgreen":"verde floresta","fuchsia":"fúcsia","gainsboro":"gainsboro","ghostwhite":"branco ghost","gold":"dourado","goldenrod":"goldenrod","gray":"cinza","green":"verde","greenyellow":"amarelo esverdeado","grey":"cinza","honeydew":"honeydew","hotpink":"rosa quente","indianred":"vermelho indiano","indigo":"índigo","ivory":"marfim","khaki":"cáqui","lavender":"lavanda","lavenderblush":"lavanda avermelhada","lawngreen":"verde grama","lemonchiffon":"limão chiffon","lightblue":"azul claro","lightcoral":"coral claro","lightcyan":"ciano claro","lightgoldenrodyellow":"amarelo goldenrod claro","lightgray":"cinza claro","lightgreen":"verde claro","lightgrey":"cinza claro","lightpink":"rosa claro","lightsalmon":"salmão claro","lightseagreen":"verde marinho claro","lightskyblue":"azul céu claro","lightslategray":"cinza ardósia claro","lightslategrey":"cinza ardósia claro","lightsteelblue":"azul aço claro","lightyellow":"amarelo claro","lime":"lima","limegreen":"verde lima","linen":"linho","magenta":"magenta","maroon":"castanho","mediumaquamarine":"água marinha médio","mediumblue":"azul médio","mediumorchid":"orquídea médio","mediumpurple":"roxo médio","mediumseagreen":"verde marinho médio","mediumslateblue":"azul ardósia médio","mediumspringgreen":"verde primavera médio","mediumturquoise":"turquesa médio","mediumvioletred":"vermelho violeta médio","midnightblue":"azul meia-noite","mintcream":"creme de menta","mistyrose":"rosa enevoado","moccasin":"moccasin","navajowhite":"branco navajo","navy":"marinho","oldlace":"cadarço velho","olive":"oliva","olivedrab":"verde oliva","orange":"laranja","orangered":"vermelho alaranjado","orchid":"orquídea","palegoldenrod":"goldenrod esbranquiçado","palegreen":"verde esbranquiçado","paleturquoise":"turquesa esbranquiçado","palevioletred":"vermelho violeta esbranquiçado","papayawhip":"creme de papaya","peachpuff":"peach puff","peru":"peru","pink":"rosa","plum":"ameixa","powderblue":"azul talco","purple":"roxo","red":"vermelho","rosybrown":"marrom rosado","royalblue":"azul royal","saddlebrown":"marrom saddle","salmon":"salmão","sandybrown":"marrom cor de areia","seagreen":"verde marinho","seashell":"seashell","sienna":"sienna","silver":"prateado","skyblue":"azul céu","slateblue":"azul ardósia","slategray":"cinza ardósia","slategrey":"cinza ardósia","snow":"branco neve","springgreen":"verde primavera","steelblue":"azul aço","tan":"tan","teal":"azul esverdeado","thistle":"thistle","tomato":"tomate","transparent":"transparente","turquoise":"turquesa","violet":"violeta","wheat":"trigo","white":"branco","whitesmoke":"fumaça branca","yellow":"amarelo","yellowgreen":"verde amarelado","_localized":{}},"dijit/nls/loading":{"loadingState":"Carregando...","errorState":"Desculpe, ocorreu um erro","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Salvar","itemClose":"Fechar","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"O valor inserido não é válido.","missingMessage":"Este valor é necessário.","rangeMessage":"Este valor está fora do intervalo. ","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Opções anteriores","nextMessage":"Mais opções","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 tri","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤ #,##0.00","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 trilhões","decimalFormat":"#,##0.###","currencyFormat-short":"¤ 000 tri","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_pt-pt.js b/lib/dojo/nls/tt-rss-layer_pt-pt.js
index 8a97b353b..5f4965f74 100644
--- a/lib/dojo/nls/tt-rss-layer_pt-pt.js
+++ b/lib/dojo/nls/tt-rss-layer_pt-pt.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_pt-pt",{"dijit/form/nls/validate":{"invalidMessage":"O valor introduzido não é válido.","rangeMessage":"Este valor encontra-se fora do intervalo.","_localized":{},"missingMessage":"Este valor é requerido."},"dijit/nls/loading":{"_localized":{},"loadingState":"A carregar...","errorState":"Lamentamos, mas ocorreu um erro"},"dojo/nls/colors":{"lightsteelblue":"azul-aço claro","orangered":"vermelho alaranjado","midnightblue":"azul meia-noite","cadetblue":"azul cadete","seashell":"concha","slategrey":"cinzento ardósia","coral":"coral","darkturquoise":"turquesa escuro","antiquewhite":"branco antigo","mediumspringgreen":"verde primavera médio","transparent":"transparente","salmon":"salmão","darkgrey":"cinzento escuro","ivory":"marfim","greenyellow":"amarelo esverdeado","mistyrose":"rosa pálido","lightsalmon":"salmão claro","silver":"prateado","dimgrey":"cinzento esbatido","orange":"laranja","white":"branco","navajowhite":"branco navajo","royalblue":"azul real","deeppink":"rosa profundo","lime":"lima","oldlace":"renda antiga","chartreuse":"amarelo esverdeado","darkcyan":"ciano escuro","yellow":"amarelo","linen":"linho","olive":"azeitona","gold":"dourado","lawngreen":"verde relva","lightyellow":"amarelo claro","tan":"castanho claro","darkviolet":"violeta escuro","lightslategrey":"cinzento ardósia claro","grey":"cinzento","darkkhaki":"caqui escuro","green":"verde","deepskyblue":"azul céu profundo","aqua":"verde-água","sienna":"castanho-avermelhado","mintcream":"creme de menta","rosybrown":"castanho rosado","mediumslateblue":"azul ardósia médio","magenta":"magenta","lightseagreen":"verde marinho claro","cyan":"ciano","olivedrab":"azeitona claro","darkgoldenrod":"ouro velho escuro","slateblue":"azul ardósia","mediumaquamarine":"verde-azulado médio","lavender":"alfazema","mediumseagreen":"verde marinho médio","maroon":"bordeaux","darkslategray":"cinzento ardósia escuro","mediumturquoise":"turquesa médio","ghostwhite":"branco sombreado","darkblue":"azul escuro","mediumvioletred":"violeta avermelhado médio","brown":"castanho","lightgray":"cinzento claro","sandybrown":"castanho areia","pink":"rosa","firebrick":"tijolo fogo","indigo":"índigo","snow":"branco-neve","darkorchid":"orquídea escuro","turquoise":"turquesa","chocolate":"chocolate","springgreen":"verde primavera","moccasin":"mocassim","navy":"azul marinho","lemonchiffon":"limão chiffon","teal":"verde-azulado","floralwhite":"branco floral","cornflowerblue":"azul-violáceo","paleturquoise":"turquesa pálido","purple":"roxo","_localized":{},"gainsboro":"cinzento azulado claro","plum":"cor-de-ameixa","red":"vermelho","blue":"azul","forestgreen":"verde floresta","darkgreen":"verde escuro","honeydew":"mel","darkseagreen":"verde marinho escuro","lightcoral":"coral claro","palevioletred":"violeta avermelhado pálido","mediumpurple":"roxo médio","saddlebrown":"castanho sela","darkmagenta":"magenta escuro","thistle":"cardo","whitesmoke":"fumo branco","wheat":"trigo","violet":"violeta","lightskyblue":"azul céu claro","goldenrod":"ouro velho","mediumblue":"azul médio","skyblue":"azul céu","crimson":"carmesim","darksalmon":"salmão escuro","darkred":"vermelho escuro","darkslategrey":"cinzento ardósia escuro","peru":"peru","lightgrey":"cinzento claro","lightgoldenrodyellow":"ouro velho amarelado claro","blanchedalmond":"amêndoa claro","aliceblue":"azul alice","bisque":"rosa-velho","slategray":"cinzento ardósia","palegoldenrod":"ouro velho pálido","darkorange":"laranja escuro","aquamarine":"verde-azulado","lightgreen":"verde claro","burlywood":"castanho pinho","dodgerblue":"azul furtivo","darkgray":"cinzento escuro","lightcyan":"ciano claro","powderblue":"azul de esmalte","blueviolet":"azul violeta","orchid":"orquídea","dimgray":"cinzento esbatido","beige":"bege","fuchsia":"fúcsia","lavenderblush":"alfazema rosado","hotpink":"rosa forte","steelblue":"azul-aço","tomato":"vermelho tomate","lightpink":"rosa claro","limegreen":"verde-lima","indianred":"almagre","papayawhip":"creme de papaia","lightslategray":"cinzento ardósia claro","gray":"cinzento","mediumorchid":"orquídea médio","cornsilk":"branco seda","black":"preto","seagreen":"verde marinho","darkslateblue":"azul ardósia escuro","khaki":"caqui","lightblue":"azul claro","palegreen":"verde pálido","azure":"azul-celeste","peachpuff":"pêssego","darkolivegreen":"verde-azeitona escuro","yellowgreen":"verde amarelado"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 Bi","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 biliões","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Opções anteriores","_localized":{},"nextMessage":"Mais opções"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancelar","_localized":{},"buttonSave":"Guardar","itemClose":"Fechar"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_pt-pt",{"dojo/nls/colors":{"aliceblue":"azul alice","antiquewhite":"branco antigo","aqua":"verde-água","aquamarine":"verde-azulado","azure":"azul-celeste","beige":"bege","bisque":"rosa-velho","black":"preto","blanchedalmond":"amêndoa claro","blue":"azul","blueviolet":"azul violeta","brown":"castanho","burlywood":"castanho pinho","cadetblue":"azul cadete","chartreuse":"amarelo esverdeado","chocolate":"chocolate","coral":"coral","cornflowerblue":"azul-violáceo","cornsilk":"branco seda","crimson":"carmesim","cyan":"ciano","darkblue":"azul escuro","darkcyan":"ciano escuro","darkgoldenrod":"ouro velho escuro","darkgray":"cinzento escuro","darkgreen":"verde escuro","darkgrey":"cinzento escuro","darkkhaki":"caqui escuro","darkmagenta":"magenta escuro","darkolivegreen":"verde-azeitona escuro","darkorange":"laranja escuro","darkorchid":"orquídea escuro","darkred":"vermelho escuro","darksalmon":"salmão escuro","darkseagreen":"verde marinho escuro","darkslateblue":"azul ardósia escuro","darkslategray":"cinzento ardósia escuro","darkslategrey":"cinzento ardósia escuro","darkturquoise":"turquesa escuro","darkviolet":"violeta escuro","deeppink":"rosa profundo","deepskyblue":"azul céu profundo","dimgray":"cinzento esbatido","dimgrey":"cinzento esbatido","dodgerblue":"azul furtivo","firebrick":"tijolo fogo","floralwhite":"branco floral","forestgreen":"verde floresta","fuchsia":"fúcsia","gainsboro":"cinzento azulado claro","ghostwhite":"branco sombreado","gold":"dourado","goldenrod":"ouro velho","gray":"cinzento","green":"verde","greenyellow":"amarelo esverdeado","grey":"cinzento","honeydew":"mel","hotpink":"rosa forte","indianred":"almagre","indigo":"índigo","ivory":"marfim","khaki":"caqui","lavender":"alfazema","lavenderblush":"alfazema rosado","lawngreen":"verde relva","lemonchiffon":"limão chiffon","lightblue":"azul claro","lightcoral":"coral claro","lightcyan":"ciano claro","lightgoldenrodyellow":"ouro velho amarelado claro","lightgray":"cinzento claro","lightgreen":"verde claro","lightgrey":"cinzento claro","lightpink":"rosa claro","lightsalmon":"salmão claro","lightseagreen":"verde marinho claro","lightskyblue":"azul céu claro","lightslategray":"cinzento ardósia claro","lightslategrey":"cinzento ardósia claro","lightsteelblue":"azul-aço claro","lightyellow":"amarelo claro","lime":"lima","limegreen":"verde-lima","linen":"linho","magenta":"magenta","maroon":"bordeaux","mediumaquamarine":"verde-azulado médio","mediumblue":"azul médio","mediumorchid":"orquídea médio","mediumpurple":"roxo médio","mediumseagreen":"verde marinho médio","mediumslateblue":"azul ardósia médio","mediumspringgreen":"verde primavera médio","mediumturquoise":"turquesa médio","mediumvioletred":"violeta avermelhado médio","midnightblue":"azul meia-noite","mintcream":"creme de menta","mistyrose":"rosa pálido","moccasin":"mocassim","navajowhite":"branco navajo","navy":"azul marinho","oldlace":"renda antiga","olive":"azeitona","olivedrab":"azeitona claro","orange":"laranja","orangered":"vermelho alaranjado","orchid":"orquídea","palegoldenrod":"ouro velho pálido","palegreen":"verde pálido","paleturquoise":"turquesa pálido","palevioletred":"violeta avermelhado pálido","papayawhip":"creme de papaia","peachpuff":"pêssego","peru":"peru","pink":"rosa","plum":"cor-de-ameixa","powderblue":"azul de esmalte","purple":"roxo","red":"vermelho","rosybrown":"castanho rosado","royalblue":"azul real","saddlebrown":"castanho sela","salmon":"salmão","sandybrown":"castanho areia","seagreen":"verde marinho","seashell":"concha","sienna":"castanho-avermelhado","silver":"prateado","skyblue":"azul céu","slateblue":"azul ardósia","slategray":"cinzento ardósia","slategrey":"cinzento ardósia","snow":"branco-neve","springgreen":"verde primavera","steelblue":"azul-aço","tan":"castanho claro","teal":"verde-azulado","thistle":"cardo","tomato":"vermelho tomate","transparent":"transparente","turquoise":"turquesa","violet":"violeta","wheat":"trigo","white":"branco","whitesmoke":"fumo branco","yellow":"amarelo","yellowgreen":"verde amarelado","_localized":{}},"dijit/nls/loading":{"loadingState":"A carregar...","errorState":"Lamentamos, mas ocorreu um erro","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Cancelar","buttonSave":"Guardar","itemClose":"Fechar","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"O valor introduzido não é válido.","missingMessage":"Este valor é requerido.","rangeMessage":"Este valor encontra-se fora do intervalo.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Opções anteriores","nextMessage":"Mais opções","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Bi","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","approximatelySign":"~","group":" ","percentFormat":"#,##0%","decimalFormat-long":"000 biliões","decimalFormat":"#,##0.###","currencyFormat-short":"000 B ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_ru.js b/lib/dojo/nls/tt-rss-layer_ru.js
index 7530ff8b7..207cd4a30 100644
--- a/lib/dojo/nls/tt-rss-layer_ru.js
+++ b/lib/dojo/nls/tt-rss-layer_ru.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_ru",{"dijit/form/nls/validate":{"invalidMessage":"Указано недопустимое значение.","rangeMessage":"Это значение вне диапазона.","_localized":{},"missingMessage":"Это обязательное значение."},"dijit/nls/loading":{"_localized":{},"loadingState":"Загрузка...","errorState":"Извините, возникла ошибка"},"dojo/nls/colors":{"lightsteelblue":"светлый стальной","orangered":"оранжево-красный","midnightblue":"полуночно-синий","cadetblue":"серо-синий","seashell":"морская раковина","slategrey":"грифельно-серый","coral":"коралловый","darkturquoise":"темный бирюзовый","antiquewhite":"белый антик","mediumspringgreen":"нейтральный весенне-зеленый","transparent":"прозрачный","salmon":"лососевый","darkgrey":"темно-серый","ivory":"слоновой кости","greenyellow":"зелено-желтый","mistyrose":"блекло-розовый","lightsalmon":"светло-лососевый","silver":"серебристый","dimgrey":"тускло-серый","orange":"оранжевый","white":"белый","navajowhite":"белый навахо","royalblue":"королевский голубой","deeppink":"темно-розовый","lime":"лайм","oldlace":"матово-белый","chartreuse":"желто-салатный","darkcyan":"темный циан","yellow":"желтый","linen":"хлопковый","olive":"оливковый","gold":"золотой","lawngreen":"зеленая лужайка","lightyellow":"светло-желтый","tan":"рыжевато-коричневый","darkviolet":"темно-фиолетовый","lightslategrey":"светлый грифельно-серый","grey":"серый","darkkhaki":"темный хаки","green":"зеленый","deepskyblue":"темный небесно-голубой","aqua":"зеленовато-голубой","sienna":"охра","mintcream":"мятно-кремовый","rosybrown":"розово-коричневый","mediumslateblue":"нейтральный грифельно-синий","magenta":"пурпурный","lightseagreen":"светлый морской волны","cyan":"циан","olivedrab":"желтовато-серый","darkgoldenrod":"темно-золотистый","slateblue":"грифельно-синий","mediumaquamarine":"нейтральный аквамарин","lavender":"бледно-лиловый","mediumseagreen":"нейтральный морской волны","maroon":"темно-бордовый","darkslategray":"темный грифельно-серый","mediumturquoise":"нейтральный бирюзовый","ghostwhite":"призрачно-белый","darkblue":"темно-синий","mediumvioletred":"нейтральный фиолетово-красный","brown":"коричневый","lightgray":"светло-серый","sandybrown":"коричнево-песчаный","pink":"розовый","firebrick":"кирпичный","indigo":"индиго","snow":"белоснежный","darkorchid":"темный орсель","turquoise":"бирюзовый","chocolate":"шоколадный","springgreen":"весенний зеленый","moccasin":"мокасин","navy":"темно-синий","lemonchiffon":"бледно-лимонный","teal":"чирок","floralwhite":"цветочно-белый","cornflowerblue":"фиолетово-синий","paleturquoise":"бледно-бирюзовый","purple":"фиолетовый","_localized":{},"gainsboro":"бледно-серый","plum":"сливовый","red":"красный","blue":"синий","forestgreen":"зеленый лесной","darkgreen":"темно-зеленый","honeydew":"медовый","darkseagreen":"темный морской волны","lightcoral":"светло-коралловый","palevioletred":"бледный фиолетово-красный","mediumpurple":"нейтральный фиолетовый","saddlebrown":"кожано-коричневый","darkmagenta":"темно-пурпурный","thistle":"чертополох","whitesmoke":"дымчато-белый","wheat":"пшеница","violet":"фиолетовый","lightskyblue":"светлый небесно-голубой","goldenrod":"золотистый","mediumblue":"нейтральный синий","skyblue":"небесно-голубой","crimson":"малиновый","darksalmon":"темно-лососевый","darkred":"темно-красный","darkslategrey":"темный грифельно-серый","peru":"перу","lightgrey":"светло-серый","lightgoldenrodyellow":"светло-золотистый","blanchedalmond":"светло-миндальный","aliceblue":"серо-голубой","bisque":"бисквитный","slategray":"грифельно-серый","palegoldenrod":"бледно-золотистый","darkorange":"темно-оранжевый","aquamarine":"аквамарин","lightgreen":"светло-зеленый","burlywood":"светло-коричневый","dodgerblue":"бледно-синий","darkgray":"темно-серый","lightcyan":"светлый циан","powderblue":"пороховой","blueviolet":"сине-фиолетовый","orchid":"орсель","dimgray":"тускло-серый","beige":"бежевый","fuchsia":"фуксин","lavenderblush":"розовато-лиловый","hotpink":"красно-розовый","steelblue":"стальной","tomato":"помидор","lightpink":"светло-розовый","limegreen":"зеленый лайм","indianred":"индийский красный","papayawhip":"черенок папайи","lightslategray":"светлый грифельно-серый","gray":"серый","mediumorchid":"нейтральный орсель","cornsilk":"шелковый оттенок","black":"черный","seagreen":"морской волны","darkslateblue":"темный грифельно-синий","khaki":"хаки","lightblue":"светло-синий","palegreen":"бледно-зеленый","azure":"лазурный","peachpuff":"персиковый","darkolivegreen":"темно-оливковый","yellowgreen":"желто-зеленый"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 трлн","currencySpacing-afterCurrency-insertBetween":" ","nan":"не число","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 триллиона","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Предыдущие варианты","_localized":{},"nextMessage":"Следующие варианты"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Отмена","_localized":{},"buttonSave":"Сохранить","itemClose":"Закрыть"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_ru",{"dojo/nls/colors":{"aliceblue":"серо-голубой","antiquewhite":"белый антик","aqua":"зеленовато-голубой","aquamarine":"аквамарин","azure":"лазурный","beige":"бежевый","bisque":"бисквитный","black":"черный","blanchedalmond":"светло-миндальный","blue":"синий","blueviolet":"сине-фиолетовый","brown":"коричневый","burlywood":"светло-коричневый","cadetblue":"серо-синий","chartreuse":"желто-салатный","chocolate":"шоколадный","coral":"коралловый","cornflowerblue":"фиолетово-синий","cornsilk":"шелковый оттенок","crimson":"малиновый","cyan":"циан","darkblue":"темно-синий","darkcyan":"темный циан","darkgoldenrod":"темно-золотистый","darkgray":"темно-серый","darkgreen":"темно-зеленый","darkgrey":"темно-серый","darkkhaki":"темный хаки","darkmagenta":"темно-пурпурный","darkolivegreen":"темно-оливковый","darkorange":"темно-оранжевый","darkorchid":"темный орсель","darkred":"темно-красный","darksalmon":"темно-лососевый","darkseagreen":"темный морской волны","darkslateblue":"темный грифельно-синий","darkslategray":"темный грифельно-серый","darkslategrey":"темный грифельно-серый","darkturquoise":"темный бирюзовый","darkviolet":"темно-фиолетовый","deeppink":"темно-розовый","deepskyblue":"темный небесно-голубой","dimgray":"тускло-серый","dimgrey":"тускло-серый","dodgerblue":"бледно-синий","firebrick":"кирпичный","floralwhite":"цветочно-белый","forestgreen":"зеленый лесной","fuchsia":"фуксин","gainsboro":"бледно-серый","ghostwhite":"призрачно-белый","gold":"золотой","goldenrod":"золотистый","gray":"серый","green":"зеленый","greenyellow":"зелено-желтый","grey":"серый","honeydew":"медовый","hotpink":"красно-розовый","indianred":"индийский красный","indigo":"индиго","ivory":"слоновой кости","khaki":"хаки","lavender":"бледно-лиловый","lavenderblush":"розовато-лиловый","lawngreen":"зеленая лужайка","lemonchiffon":"бледно-лимонный","lightblue":"светло-синий","lightcoral":"светло-коралловый","lightcyan":"светлый циан","lightgoldenrodyellow":"светло-золотистый","lightgray":"светло-серый","lightgreen":"светло-зеленый","lightgrey":"светло-серый","lightpink":"светло-розовый","lightsalmon":"светло-лососевый","lightseagreen":"светлый морской волны","lightskyblue":"светлый небесно-голубой","lightslategray":"светлый грифельно-серый","lightslategrey":"светлый грифельно-серый","lightsteelblue":"светлый стальной","lightyellow":"светло-желтый","lime":"лайм","limegreen":"зеленый лайм","linen":"хлопковый","magenta":"пурпурный","maroon":"темно-бордовый","mediumaquamarine":"нейтральный аквамарин","mediumblue":"нейтральный синий","mediumorchid":"нейтральный орсель","mediumpurple":"нейтральный фиолетовый","mediumseagreen":"нейтральный морской волны","mediumslateblue":"нейтральный грифельно-синий","mediumspringgreen":"нейтральный весенне-зеленый","mediumturquoise":"нейтральный бирюзовый","mediumvioletred":"нейтральный фиолетово-красный","midnightblue":"полуночно-синий","mintcream":"мятно-кремовый","mistyrose":"блекло-розовый","moccasin":"мокасин","navajowhite":"белый навахо","navy":"темно-синий","oldlace":"матово-белый","olive":"оливковый","olivedrab":"желтовато-серый","orange":"оранжевый","orangered":"оранжево-красный","orchid":"орсель","palegoldenrod":"бледно-золотистый","palegreen":"бледно-зеленый","paleturquoise":"бледно-бирюзовый","palevioletred":"бледный фиолетово-красный","papayawhip":"черенок папайи","peachpuff":"персиковый","peru":"перу","pink":"розовый","plum":"сливовый","powderblue":"пороховой","purple":"фиолетовый","red":"красный","rosybrown":"розово-коричневый","royalblue":"королевский голубой","saddlebrown":"кожано-коричневый","salmon":"лососевый","sandybrown":"коричнево-песчаный","seagreen":"морской волны","seashell":"морская раковина","sienna":"охра","silver":"серебристый","skyblue":"небесно-голубой","slateblue":"грифельно-синий","slategray":"грифельно-серый","slategrey":"грифельно-серый","snow":"белоснежный","springgreen":"весенний зеленый","steelblue":"стальной","tan":"рыжевато-коричневый","teal":"чирок","thistle":"чертополох","tomato":"помидор","transparent":"прозрачный","turquoise":"бирюзовый","violet":"фиолетовый","wheat":"пшеница","white":"белый","whitesmoke":"дымчато-белый","yellow":"желтый","yellowgreen":"желто-зеленый","_localized":{}},"dijit/nls/loading":{"loadingState":"Загрузка...","errorState":"Извините, возникла ошибка","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Отмена","buttonSave":"Сохранить","itemClose":"Закрыть","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Указано недопустимое значение.","missingMessage":"Это обязательное значение.","rangeMessage":"Это значение вне диапазона.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Предыдущие варианты","nextMessage":"Следующие варианты","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 трлн","currencySpacing-afterCurrency-insertBetween":" ","nan":"не число","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"≈","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 триллиона","decimalFormat":"#,##0.###","currencyFormat-short":"000 трлн ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_sk.js b/lib/dojo/nls/tt-rss-layer_sk.js
index f06b29b97..620631324 100644
--- a/lib/dojo/nls/tt-rss-layer_sk.js
+++ b/lib/dojo/nls/tt-rss-layer_sk.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_sk",{"dijit/form/nls/validate":{"invalidMessage":"Zadaná hodnota nie je platná.","rangeMessage":"Táto hodnota je mimo rozsah.","_localized":{},"missingMessage":"Táto hodnota je povinná."},"dijit/nls/loading":{"_localized":{},"loadingState":"Zavádza sa...","errorState":"Ľutujeme, ale vyskytla sa chyba"},"dojo/nls/colors":{"lightsteelblue":"svetlá oceľovomodrá","orangered":"oranžovo červená","midnightblue":"polnočná modrá","cadetblue":"červeno modrá","seashell":"lastúrová","slategrey":"bridlicová sivá","coral":"koralová","darkturquoise":"tmavá tyrkysová","antiquewhite":"antická biela","mediumspringgreen":"stredná jarná zelená","transparent":"priesvitná","salmon":"lososová","darkgrey":"tmavosivá","ivory":"slonovina","greenyellow":"zelenožltá","mistyrose":"zahmlená ruža","lightsalmon":"svetlá lososová","silver":"strieborná","dimgrey":"matná sivá","orange":"oranžová","white":"biela","navajowhite":"navajská biela","royalblue":"kráľovská modrá","deeppink":"hlboká ružová","lime":"limetková","oldlace":"stará čipka","chartreuse":"kartúzska","darkcyan":"tmavá zelenomodrá","yellow":"žltá","linen":"ľan","olive":"olivová","gold":"zlatá","lawngreen":"trávová zelená","lightyellow":"svetložltá","tan":"žltohnedá","darkviolet":"tmavofialová","lightslategrey":"svetlá bridlicová sivá","grey":"sivá","darkkhaki":"tmavá žltohnedá","green":"zelená","deepskyblue":"hlboká modrá obloha","aqua":"vodová","sienna":"sienská","mintcream":"mätová krémová","rosybrown":"ružovo hnedá","mediumslateblue":"stredná bridlicová modrá","magenta":"purpurová","lightseagreen":"svetlá morská zelená","cyan":"zelenomodrá","olivedrab":"fádna olivová","darkgoldenrod":"tmavá zlatobyľ","slateblue":"bridlicová modrá","mediumaquamarine":"stredná akvamarínová","lavender":"levanduľa","mediumseagreen":"stredná morská zelená","maroon":"gaštanová hnedá","darkslategray":"tmavá bridlicová sivá","mediumturquoise":"stredná tyrkysová","ghostwhite":"biela (ghost white)","darkblue":"tmavomodrá","mediumvioletred":"stredná fialovočervená","brown":"hnedá","lightgray":"svetlosivá","sandybrown":"piesková hnedá","pink":"ružová","firebrick":"pálená tehla","indigo":"indigo","snow":"snehová","darkorchid":"tmavá orchidea","turquoise":"tyrkysová","chocolate":"čokoládová","springgreen":"jarná zelená","moccasin":"mokasínová","navy":"námornícka","lemonchiffon":"citrónový šifón","teal":"zelenomodrá","floralwhite":"biely kvet","cornflowerblue":"nevädzová modrá","paleturquoise":"bledá tyrkysová","purple":"purpurová","_localized":{},"gainsboro":"sivá - gainsboro","plum":"slivková","red":"červená","blue":"modrá","forestgreen":"lesná zelená","darkgreen":"tmavozelená","honeydew":"ambrózia","darkseagreen":"tmavá morská zelená","lightcoral":"svetlá koralová","palevioletred":"bledá fialovo červená","mediumpurple":"stredná purpurová","saddlebrown":"sedlová hnedá","darkmagenta":"tmavá purpurová","thistle":"bodliaková","whitesmoke":"biely dym","wheat":"pšeničná","violet":"fialová","lightskyblue":"svetlá modrá obloha","goldenrod":"zlatobyľ","mediumblue":"stredná modrá","skyblue":"modré nebo","crimson":"karmínová","darksalmon":"tmavá lososová","darkred":"tmavočervená","darkslategrey":"tmavá bridlicová sivá","peru":"peru","lightgrey":"svetlosivá","lightgoldenrodyellow":"svetlá zlatobyľová žltá","blanchedalmond":"bledá mandľová","aliceblue":"modrá (alice)","bisque":"porcelánová","slategray":"bridlicová sivá","palegoldenrod":"bledá zlatobyľová","darkorange":"tmavá oranžová","aquamarine":"akvamarínová","lightgreen":"svetlozelená","burlywood":"drevená hnedá","dodgerblue":"modrá (dodger)","darkgray":"tmavosivá","lightcyan":"svetlá zelenomodrá","powderblue":"prášková modrá","blueviolet":"modro-fialová","orchid":"orchideová","dimgray":"matná sivá","beige":"béžová","fuchsia":"fuchsia","lavenderblush":"rumencová levanduľa","hotpink":"horúca ružová","steelblue":"oceľovomodrá","tomato":"paradajková","lightpink":"svetloružová","limegreen":"limetková zelená","indianred":"indiánska červená","papayawhip":"papájový krém","lightslategray":"svetlá bridlicová sivá","gray":"sivá","mediumorchid":"stredná orchideová","cornsilk":"ôstie kukurice","black":"čierna","seagreen":"morská zelená","darkslateblue":"tmavá bridlicová modrá","khaki":"kaki","lightblue":"svetlomodrá","palegreen":"bledá zelená","azure":"azúrová","peachpuff":"broskyňový nádych","darkolivegreen":"tmavá olivovo zelená","yellowgreen":"žltozelená"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biliónov","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Predchádzajúce možnosti","_localized":{},"nextMessage":"Viac možností"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Zrušiť","_localized":{},"buttonSave":"Uložiť","itemClose":"Zatvoriť"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_sk",{"dojo/nls/colors":{"aliceblue":"modrá (alice)","antiquewhite":"antická biela","aqua":"vodová","aquamarine":"akvamarínová","azure":"azúrová","beige":"béžová","bisque":"porcelánová","black":"čierna","blanchedalmond":"bledá mandľová","blue":"modrá","blueviolet":"modro-fialová","brown":"hnedá","burlywood":"drevená hnedá","cadetblue":"červeno modrá","chartreuse":"kartúzska","chocolate":"čokoládová","coral":"koralová","cornflowerblue":"nevädzová modrá","cornsilk":"ôstie kukurice","crimson":"karmínová","cyan":"zelenomodrá","darkblue":"tmavomodrá","darkcyan":"tmavá zelenomodrá","darkgoldenrod":"tmavá zlatobyľ","darkgray":"tmavosivá","darkgreen":"tmavozelená","darkgrey":"tmavosivá","darkkhaki":"tmavá žltohnedá","darkmagenta":"tmavá purpurová","darkolivegreen":"tmavá olivovo zelená","darkorange":"tmavá oranžová","darkorchid":"tmavá orchidea","darkred":"tmavočervená","darksalmon":"tmavá lososová","darkseagreen":"tmavá morská zelená","darkslateblue":"tmavá bridlicová modrá","darkslategray":"tmavá bridlicová sivá","darkslategrey":"tmavá bridlicová sivá","darkturquoise":"tmavá tyrkysová","darkviolet":"tmavofialová","deeppink":"hlboká ružová","deepskyblue":"hlboká modrá obloha","dimgray":"matná sivá","dimgrey":"matná sivá","dodgerblue":"modrá (dodger)","firebrick":"pálená tehla","floralwhite":"biely kvet","forestgreen":"lesná zelená","fuchsia":"fuchsia","gainsboro":"sivá - gainsboro","ghostwhite":"biela (ghost white)","gold":"zlatá","goldenrod":"zlatobyľ","gray":"sivá","green":"zelená","greenyellow":"zelenožltá","grey":"sivá","honeydew":"ambrózia","hotpink":"horúca ružová","indianred":"indiánska červená","indigo":"indigo","ivory":"slonovina","khaki":"kaki","lavender":"levanduľa","lavenderblush":"rumencová levanduľa","lawngreen":"trávová zelená","lemonchiffon":"citrónový šifón","lightblue":"svetlomodrá","lightcoral":"svetlá koralová","lightcyan":"svetlá zelenomodrá","lightgoldenrodyellow":"svetlá zlatobyľová žltá","lightgray":"svetlosivá","lightgreen":"svetlozelená","lightgrey":"svetlosivá","lightpink":"svetloružová","lightsalmon":"svetlá lososová","lightseagreen":"svetlá morská zelená","lightskyblue":"svetlá modrá obloha","lightslategray":"svetlá bridlicová sivá","lightslategrey":"svetlá bridlicová sivá","lightsteelblue":"svetlá oceľovomodrá","lightyellow":"svetložltá","lime":"limetková","limegreen":"limetková zelená","linen":"ľan","magenta":"purpurová","maroon":"gaštanová hnedá","mediumaquamarine":"stredná akvamarínová","mediumblue":"stredná modrá","mediumorchid":"stredná orchideová","mediumpurple":"stredná purpurová","mediumseagreen":"stredná morská zelená","mediumslateblue":"stredná bridlicová modrá","mediumspringgreen":"stredná jarná zelená","mediumturquoise":"stredná tyrkysová","mediumvioletred":"stredná fialovočervená","midnightblue":"polnočná modrá","mintcream":"mätová krémová","mistyrose":"zahmlená ruža","moccasin":"mokasínová","navajowhite":"navajská biela","navy":"námornícka","oldlace":"stará čipka","olive":"olivová","olivedrab":"fádna olivová","orange":"oranžová","orangered":"oranžovo červená","orchid":"orchideová","palegoldenrod":"bledá zlatobyľová","palegreen":"bledá zelená","paleturquoise":"bledá tyrkysová","palevioletred":"bledá fialovo červená","papayawhip":"papájový krém","peachpuff":"broskyňový nádych","peru":"peru","pink":"ružová","plum":"slivková","powderblue":"prášková modrá","purple":"purpurová","red":"červená","rosybrown":"ružovo hnedá","royalblue":"kráľovská modrá","saddlebrown":"sedlová hnedá","salmon":"lososová","sandybrown":"piesková hnedá","seagreen":"morská zelená","seashell":"lastúrová","sienna":"sienská","silver":"strieborná","skyblue":"modré nebo","slateblue":"bridlicová modrá","slategray":"bridlicová sivá","slategrey":"bridlicová sivá","snow":"snehová","springgreen":"jarná zelená","steelblue":"oceľovomodrá","tan":"žltohnedá","teal":"zelenomodrá","thistle":"bodliaková","tomato":"paradajková","transparent":"priesvitná","turquoise":"tyrkysová","violet":"fialová","wheat":"pšeničná","white":"biela","whitesmoke":"biely dym","yellow":"žltá","yellowgreen":"žltozelená","_localized":{}},"dijit/nls/loading":{"loadingState":"Zavádza sa...","errorState":"Ľutujeme, ale vyskytla sa chyba","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Zrušiť","buttonSave":"Uložiť","itemClose":"Zatvoriť","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Zadaná hodnota nie je platná.","missingMessage":"Táto hodnota je povinná.","rangeMessage":"Táto hodnota je mimo rozsah.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Predchádzajúce možnosti","nextMessage":"Viac možností","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","approximatelySign":"~","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biliónov","decimalFormat":"#,##0.###","currencyFormat-short":"000 bil'.' ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"e","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_sl.js b/lib/dojo/nls/tt-rss-layer_sl.js
index d040b2db0..ef60b57bd 100644
--- a/lib/dojo/nls/tt-rss-layer_sl.js
+++ b/lib/dojo/nls/tt-rss-layer_sl.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_sl",{"dijit/form/nls/validate":{"invalidMessage":"Vnesena vrednost ni veljavna.","rangeMessage":"Ta vrednost je izven območja.","_localized":{},"missingMessage":"Ta vrednost je zahtevana."},"dijit/nls/loading":{"_localized":{},"loadingState":"Nalaganje ...","errorState":"Oprostite, prišlo je do napake."},"dojo/nls/colors":{"lightsteelblue":"svetlo kovinsko modra","orangered":"oranžno-rdeča","midnightblue":"polnočno modra","cadetblue":"kadetsko modra","seashell":"morska lupina","slategrey":"skrilasto siva","coral":"koralna","darkturquoise":"temno turkizna","antiquewhite":"antično bela","mediumspringgreen":"srednje pomladno zelena","transparent":"prosojno","salmon":"lososova","darkgrey":"temno siva","ivory":"slonokoščena","greenyellow":"zeleno-rumena","mistyrose":"megleno rožnata","lightsalmon":"svetlo lososova","silver":"srebrna","dimgrey":"pepelnato siva","orange":"oranžna","white":"bela","navajowhite":"navajo bela","royalblue":"kraljevsko modra","deeppink":"temno rožnata","lime":"svetlo zelena","oldlace":"stara čipka","chartreuse":"chartreuse","darkcyan":"temno cijan","yellow":"rumena","linen":"lanena","olive":"olivno zelena","gold":"zlata","lawngreen":"travniško zelena","lightyellow":"svetlo rumena","tan":"rumeno-rjava","darkviolet":"temno vijolična","lightslategrey":"svetlo skrilasto siva","grey":"siva","darkkhaki":"temno kaki","green":"zelena","deepskyblue":"temno nebeško modra","aqua":"svetlo modra","sienna":"sienna","mintcream":"metina krema","rosybrown":"rožnato rjava","mediumslateblue":"srednje skrilasto modra","magenta":"magenta","lightseagreen":"svetlo morsko zelena","cyan":"cijan","olivedrab":"umazano olivna","darkgoldenrod":"temna zlata rozga","slateblue":"skrilasto modra","mediumaquamarine":"srednji akvamarin","lavender":"sivka","mediumseagreen":"srednje morsko zelena","maroon":"kostanjeva","darkslategray":"temno skrilasto siva","mediumturquoise":"srednje turkizna","ghostwhite":"senčnato bela","darkblue":"temno modra","mediumvioletred":"srednje vijolično rdeča","brown":"rjava","lightgray":"svetlo siva","sandybrown":"peščeno rjava","pink":"rožnata","firebrick":"opečnata","indigo":"indigo","snow":"snežena","darkorchid":"temno orhidejasta","turquoise":"turkizna","chocolate":"čokoladna","springgreen":"pomladno zelena","moccasin":"mokasinasta","navy":"mornarsko modra","lemonchiffon":"limonast šifon","teal":"modrozelena","floralwhite":"cvetno bela","cornflowerblue":"plavičasto modra","paleturquoise":"bledo turkizna","purple":"škrlatna","_localized":{},"gainsboro":"gainsboro","plum":"slivova","red":"rdeča","blue":"modra","forestgreen":"gozdno zelena","darkgreen":"temno zelena","honeydew":"medena rosa","darkseagreen":"temno morsko zelena","lightcoral":"svetlo koralna","palevioletred":"bledo vijolično-rdeča","mediumpurple":"srednje škrlatna","saddlebrown":"sedlasto rjava","darkmagenta":"temna magenta","thistle":"osatna","whitesmoke":"megleno bela","wheat":"pšenična","violet":"vijolična","lightskyblue":"svetlo nebeško modra","goldenrod":"zlata rozga","mediumblue":"srednje modra","skyblue":"nebeško modra","crimson":"karminasta","darksalmon":"temno lososova","darkred":"temno rdeča","darkslategrey":"temno skrilasto siva","peru":"perujska","lightgrey":"svetlo siva","lightgoldenrodyellow":"svetlo rumena zlata rozga","blanchedalmond":"obledelo mandljeva","aliceblue":"alice blue modra","bisque":"porcelanasta","slategray":"skrilasto siva","palegoldenrod":"bleda zlata rozga","darkorange":"temno oranžna","aquamarine":"akvamarin","lightgreen":"svetlo zelena","burlywood":"peščeno sivo-rjava","dodgerblue":"dodgersko modra","darkgray":"temno siva","lightcyan":"svetlo cijan","powderblue":"kobaltovo modra","blueviolet":"modro vijolična","orchid":"orhidejasta","dimgray":"pepelnato siva","beige":"bež","fuchsia":"roza","lavenderblush":"rožnato sivka","hotpink":"kričeče rožnata","steelblue":"kovinsko modra","tomato":"paradižnikova","lightpink":"svetlo rožnata","limegreen":"apneno zelena","indianred":"indijansko rdeča","papayawhip":"papaja","lightslategray":"svetlo skrilasto siva","gray":"siva","mediumorchid":"srednje orhidejasta","cornsilk":"koruzna","black":"črna","seagreen":"morsko zelena","darkslateblue":"temno skrilasto modra","khaki":"kaki","lightblue":"svetlo modra","palegreen":"bledo zelena","azure":"azurno modra","peachpuff":"breskova","darkolivegreen":"temna olivno zelena","yellowgreen":"rumeno-zelena"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":".","percentFormat":"#,##0%","decimalFormat-long":"000 bilijonov","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"e"},"dijit/form/nls/ComboBox":{"previousMessage":"Prejšnje izbire","_localized":{},"nextMessage":"Dodatne izbire"},"dijit/nls/common":{"buttonOk":"V redu","buttonCancel":"Prekliči","_localized":{},"buttonSave":"Shrani","itemClose":"Zapri"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_sl",{"dojo/nls/colors":{"aliceblue":"alice blue modra","antiquewhite":"antično bela","aqua":"svetlo modra","aquamarine":"akvamarin","azure":"azurno modra","beige":"bež","bisque":"porcelanasta","black":"črna","blanchedalmond":"obledelo mandljeva","blue":"modra","blueviolet":"modro vijolična","brown":"rjava","burlywood":"peščeno sivo-rjava","cadetblue":"kadetsko modra","chartreuse":"chartreuse","chocolate":"čokoladna","coral":"koralna","cornflowerblue":"plavičasto modra","cornsilk":"koruzna","crimson":"karminasta","cyan":"cijan","darkblue":"temno modra","darkcyan":"temno cijan","darkgoldenrod":"temna zlata rozga","darkgray":"temno siva","darkgreen":"temno zelena","darkgrey":"temno siva","darkkhaki":"temno kaki","darkmagenta":"temna magenta","darkolivegreen":"temna olivno zelena","darkorange":"temno oranžna","darkorchid":"temno orhidejasta","darkred":"temno rdeča","darksalmon":"temno lososova","darkseagreen":"temno morsko zelena","darkslateblue":"temno skrilasto modra","darkslategray":"temno skrilasto siva","darkslategrey":"temno skrilasto siva","darkturquoise":"temno turkizna","darkviolet":"temno vijolična","deeppink":"temno rožnata","deepskyblue":"temno nebeško modra","dimgray":"pepelnato siva","dimgrey":"pepelnato siva","dodgerblue":"dodgersko modra","firebrick":"opečnata","floralwhite":"cvetno bela","forestgreen":"gozdno zelena","fuchsia":"roza","gainsboro":"gainsboro","ghostwhite":"senčnato bela","gold":"zlata","goldenrod":"zlata rozga","gray":"siva","green":"zelena","greenyellow":"zeleno-rumena","grey":"siva","honeydew":"medena rosa","hotpink":"kričeče rožnata","indianred":"indijansko rdeča","indigo":"indigo","ivory":"slonokoščena","khaki":"kaki","lavender":"sivka","lavenderblush":"rožnato sivka","lawngreen":"travniško zelena","lemonchiffon":"limonast šifon","lightblue":"svetlo modra","lightcoral":"svetlo koralna","lightcyan":"svetlo cijan","lightgoldenrodyellow":"svetlo rumena zlata rozga","lightgray":"svetlo siva","lightgreen":"svetlo zelena","lightgrey":"svetlo siva","lightpink":"svetlo rožnata","lightsalmon":"svetlo lososova","lightseagreen":"svetlo morsko zelena","lightskyblue":"svetlo nebeško modra","lightslategray":"svetlo skrilasto siva","lightslategrey":"svetlo skrilasto siva","lightsteelblue":"svetlo kovinsko modra","lightyellow":"svetlo rumena","lime":"svetlo zelena","limegreen":"apneno zelena","linen":"lanena","magenta":"magenta","maroon":"kostanjeva","mediumaquamarine":"srednji akvamarin","mediumblue":"srednje modra","mediumorchid":"srednje orhidejasta","mediumpurple":"srednje škrlatna","mediumseagreen":"srednje morsko zelena","mediumslateblue":"srednje skrilasto modra","mediumspringgreen":"srednje pomladno zelena","mediumturquoise":"srednje turkizna","mediumvioletred":"srednje vijolično rdeča","midnightblue":"polnočno modra","mintcream":"metina krema","mistyrose":"megleno rožnata","moccasin":"mokasinasta","navajowhite":"navajo bela","navy":"mornarsko modra","oldlace":"stara čipka","olive":"olivno zelena","olivedrab":"umazano olivna","orange":"oranžna","orangered":"oranžno-rdeča","orchid":"orhidejasta","palegoldenrod":"bleda zlata rozga","palegreen":"bledo zelena","paleturquoise":"bledo turkizna","palevioletred":"bledo vijolično-rdeča","papayawhip":"papaja","peachpuff":"breskova","peru":"perujska","pink":"rožnata","plum":"slivova","powderblue":"kobaltovo modra","purple":"škrlatna","red":"rdeča","rosybrown":"rožnato rjava","royalblue":"kraljevsko modra","saddlebrown":"sedlasto rjava","salmon":"lososova","sandybrown":"peščeno rjava","seagreen":"morsko zelena","seashell":"morska lupina","sienna":"sienna","silver":"srebrna","skyblue":"nebeško modra","slateblue":"skrilasto modra","slategray":"skrilasto siva","slategrey":"skrilasto siva","snow":"snežena","springgreen":"pomladno zelena","steelblue":"kovinsko modra","tan":"rumeno-rjava","teal":"modrozelena","thistle":"osatna","tomato":"paradižnikova","transparent":"prosojno","turquoise":"turkizna","violet":"vijolična","wheat":"pšenična","white":"bela","whitesmoke":"megleno bela","yellow":"rumena","yellowgreen":"rumeno-zelena","_localized":{}},"dijit/nls/loading":{"loadingState":"Nalaganje ...","errorState":"Oprostite, prišlo je do napake.","_localized":{}},"dijit/nls/common":{"buttonOk":"V redu","buttonCancel":"Prekliči","buttonSave":"Shrani","itemClose":"Zapri","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Vnesena vrednost ni veljavna.","missingMessage":"Ta vrednost je zahtevana.","rangeMessage":"Ta vrednost je izven območja.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Prejšnje izbire","nextMessage":"Dodatne izbire","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bil'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"#,##0 %","decimalFormat-long":"000 bilijonov","decimalFormat":"#,##0.###","currencyFormat-short":"000 bil'.' ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"e","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_sv.js b/lib/dojo/nls/tt-rss-layer_sv.js
index 001070a8b..cea162359 100644
--- a/lib/dojo/nls/tt-rss-layer_sv.js
+++ b/lib/dojo/nls/tt-rss-layer_sv.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_sv",{"dijit/form/nls/validate":{"invalidMessage":"Angivet värde är inte giltigt.","rangeMessage":"Värdet ligger utanför intervallet.","_localized":{},"missingMessage":"Värdet krävs."},"dijit/nls/loading":{"_localized":{},"loadingState":"Läser in...","errorState":"Det har inträffat ett fel."},"dojo/nls/colors":{"lightsteelblue":"ljust stålblått","orangered":"orangerött","midnightblue":"midnattsblått","cadetblue":"kadettblått","seashell":"snäckskal","slategrey":"skiffergrått","coral":"korall","darkturquoise":"mörkturkost","antiquewhite":"antikvitt","mediumspringgreen":"mellanvårgrönt","transparent":"transparent","salmon":"laxfärgat","darkgrey":"mörkgrått","ivory":"elfenbensvitt","greenyellow":"gröngult","mistyrose":"dunkelrosa","lightsalmon":"ljust laxfärgat","silver":"silver","dimgrey":"smutsgrått","orange":"orange","white":"vitt","navajowhite":"navajovitt","royalblue":"kungligt blått","deeppink":"djuprosa","lime":"lime","oldlace":"spetsvitt","chartreuse":"chartreuse","darkcyan":"mörkt cyan","yellow":"gult","linen":"linne","olive":"olivfärgat","gold":"guld","lawngreen":"gräsmattegrönt","lightyellow":"ljusgult","tan":"mellanbrunt","darkviolet":"mörkviolett","lightslategrey":"ljust skiffergrått","grey":"grått","darkkhaki":"mörkt kaki","green":"grönt","deepskyblue":"mörkt himmelsblått","aqua":"akvamarin","sienna":"sienna","mintcream":"mintgrädde","rosybrown":"rosenbrunt","mediumslateblue":"mellanskifferblått","magenta":"magenta","lightseagreen":"ljust havsgrönt","cyan":"cyan","olivedrab":"olivsmutsgult","darkgoldenrod":"mörkt gullris","slateblue":"skifferblått","mediumaquamarine":"mellanakvamarin","lavender":"lavendel","mediumseagreen":"mellanhavsgrönt","maroon":"rödbrunt","darkslategray":"mörkt skiffergrått","mediumturquoise":"mellanturkost","ghostwhite":"spökvitt","darkblue":"mörkblått","mediumvioletred":"mellanviolettrött","brown":"brunt","lightgray":"ljusgrått","sandybrown":"sandbrunt","pink":"rosa","firebrick":"tegelstensrött","indigo":"indigo","snow":"snö","darkorchid":"mörkt orkidé","turquoise":"turkost","chocolate":"choklad","springgreen":"vårgrönt","moccasin":"mockasin","navy":"marinblått","lemonchiffon":"citronchiffong","teal":"blågrönt","floralwhite":"blomvitt","cornflowerblue":"kornblått","paleturquoise":"blekturkost","purple":"lila","_localized":{},"gainsboro":"gainsboro","plum":"plommon","red":"rött","blue":"blått","forestgreen":"skogsgrönt","darkgreen":"mörkgrönt","honeydew":"honungsdagg","darkseagreen":"mörkt havsgrönt","lightcoral":"ljuskorall","palevioletred":"blekviolettrött","mediumpurple":"mellanlila","saddlebrown":"sadelbrunt","darkmagenta":"mörk magenta","thistle":"tistel","whitesmoke":"vit rök","wheat":"vete","violet":"violett","lightskyblue":"ljust himmelsblått","goldenrod":"gullris","mediumblue":"mellanblått","skyblue":"himmelsblått","crimson":"karmosinrött","darksalmon":"mörkt laxfärgat","darkred":"mörkrött","darkslategrey":"mörkt skiffergrått","peru":"peru","lightgrey":"ljusgrått","lightgoldenrodyellow":"ljust gullrisgult","blanchedalmond":"skållad mandel","aliceblue":"aliceblå","bisque":"biskvi","slategray":"skiffergrått","palegoldenrod":"blekt gullris","darkorange":"mörkorange","aquamarine":"akvamarin","lightgreen":"ljusgrönt","burlywood":"träfärgat","dodgerblue":"dodgerblått","darkgray":"mörkgrått","lightcyan":"ljust cyan","powderblue":"pulverblått","blueviolet":"blåviolett","orchid":"orkidé","dimgray":"smutsgrått","beige":"beige","fuchsia":"fuchsia","lavenderblush":"lavendelskimrande","hotpink":"varmrosa","steelblue":"stålblått","tomato":"tomatrött","lightpink":"ljusrosa","limegreen":"limegrönt","indianred":"indianrött","papayawhip":"papayaröra","lightslategray":"ljust skiffergrått","gray":"grått","mediumorchid":"mellanorkidé","cornsilk":"gulvitt","black":"svart","seagreen":"havsgrönt","darkslateblue":"mörkt skifferblått","khaki":"kaki","lightblue":"ljusblått","palegreen":"blekgrönt","azure":"azurblått","peachpuff":"persika","darkolivegreen":"mörkt olivgrönt","yellowgreen":"gulgrönt"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"·","list":";","percentSign":"%","minusSign":"−","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 bn","currencySpacing-afterCurrency-insertBetween":" ","nan":"¤¤¤","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoner","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"×10^"},"dijit/form/nls/ComboBox":{"previousMessage":"Tidigare val","_localized":{},"nextMessage":"Fler val"},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Avbryt","_localized":{},"buttonSave":"Spara","itemClose":"Stäng"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_sv",{"dojo/nls/colors":{"aliceblue":"aliceblå","antiquewhite":"antikvitt","aqua":"akvamarin","aquamarine":"akvamarin","azure":"azurblått","beige":"beige","bisque":"biskvi","black":"svart","blanchedalmond":"skållad mandel","blue":"blått","blueviolet":"blåviolett","brown":"brunt","burlywood":"träfärgat","cadetblue":"kadettblått","chartreuse":"chartreuse","chocolate":"choklad","coral":"korall","cornflowerblue":"kornblått","cornsilk":"gulvitt","crimson":"karmosinrött","cyan":"cyan","darkblue":"mörkblått","darkcyan":"mörkt cyan","darkgoldenrod":"mörkt gullris","darkgray":"mörkgrått","darkgreen":"mörkgrönt","darkgrey":"mörkgrått","darkkhaki":"mörkt kaki","darkmagenta":"mörk magenta","darkolivegreen":"mörkt olivgrönt","darkorange":"mörkorange","darkorchid":"mörkt orkidé","darkred":"mörkrött","darksalmon":"mörkt laxfärgat","darkseagreen":"mörkt havsgrönt","darkslateblue":"mörkt skifferblått","darkslategray":"mörkt skiffergrått","darkslategrey":"mörkt skiffergrått","darkturquoise":"mörkturkost","darkviolet":"mörkviolett","deeppink":"djuprosa","deepskyblue":"mörkt himmelsblått","dimgray":"smutsgrått","dimgrey":"smutsgrått","dodgerblue":"dodgerblått","firebrick":"tegelstensrött","floralwhite":"blomvitt","forestgreen":"skogsgrönt","fuchsia":"fuchsia","gainsboro":"gainsboro","ghostwhite":"spökvitt","gold":"guld","goldenrod":"gullris","gray":"grått","green":"grönt","greenyellow":"gröngult","grey":"grått","honeydew":"honungsdagg","hotpink":"varmrosa","indianred":"indianrött","indigo":"indigo","ivory":"elfenbensvitt","khaki":"kaki","lavender":"lavendel","lavenderblush":"lavendelskimrande","lawngreen":"gräsmattegrönt","lemonchiffon":"citronchiffong","lightblue":"ljusblått","lightcoral":"ljuskorall","lightcyan":"ljust cyan","lightgoldenrodyellow":"ljust gullrisgult","lightgray":"ljusgrått","lightgreen":"ljusgrönt","lightgrey":"ljusgrått","lightpink":"ljusrosa","lightsalmon":"ljust laxfärgat","lightseagreen":"ljust havsgrönt","lightskyblue":"ljust himmelsblått","lightslategray":"ljust skiffergrått","lightslategrey":"ljust skiffergrått","lightsteelblue":"ljust stålblått","lightyellow":"ljusgult","lime":"lime","limegreen":"limegrönt","linen":"linne","magenta":"magenta","maroon":"rödbrunt","mediumaquamarine":"mellanakvamarin","mediumblue":"mellanblått","mediumorchid":"mellanorkidé","mediumpurple":"mellanlila","mediumseagreen":"mellanhavsgrönt","mediumslateblue":"mellanskifferblått","mediumspringgreen":"mellanvårgrönt","mediumturquoise":"mellanturkost","mediumvioletred":"mellanviolettrött","midnightblue":"midnattsblått","mintcream":"mintgrädde","mistyrose":"dunkelrosa","moccasin":"mockasin","navajowhite":"navajovitt","navy":"marinblått","oldlace":"spetsvitt","olive":"olivfärgat","olivedrab":"olivsmutsgult","orange":"orange","orangered":"orangerött","orchid":"orkidé","palegoldenrod":"blekt gullris","palegreen":"blekgrönt","paleturquoise":"blekturkost","palevioletred":"blekviolettrött","papayawhip":"papayaröra","peachpuff":"persika","peru":"peru","pink":"rosa","plum":"plommon","powderblue":"pulverblått","purple":"lila","red":"rött","rosybrown":"rosenbrunt","royalblue":"kungligt blått","saddlebrown":"sadelbrunt","salmon":"laxfärgat","sandybrown":"sandbrunt","seagreen":"havsgrönt","seashell":"snäckskal","sienna":"sienna","silver":"silver","skyblue":"himmelsblått","slateblue":"skifferblått","slategray":"skiffergrått","slategrey":"skiffergrått","snow":"snö","springgreen":"vårgrönt","steelblue":"stålblått","tan":"mellanbrunt","teal":"blågrönt","thistle":"tistel","tomato":"tomatrött","transparent":"transparent","turquoise":"turkost","violet":"violett","wheat":"vete","white":"vitt","whitesmoke":"vit rök","yellow":"gult","yellowgreen":"gulgrönt","_localized":{}},"dijit/nls/loading":{"loadingState":"Läser in...","errorState":"Det har inträffat ett fel.","_localized":{}},"dijit/nls/common":{"buttonOk":"OK","buttonCancel":"Avbryt","buttonSave":"Spara","itemClose":"Stäng","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Angivet värde är inte giltigt.","missingMessage":"Värdet krävs.","rangeMessage":"Värdet ligger utanför intervallet.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Tidigare val","nextMessage":"Fler val","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"−","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 bn","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"#,##0.00 ¤","perMille":"‰","approximatelySign":"~","group":" ","percentFormat":"#,##0 %","decimalFormat-long":"000 biljoner","decimalFormat":"#,##0.###","currencyFormat-short":"000 bn ¤","timeSeparator":".","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"×10^","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_th.js b/lib/dojo/nls/tt-rss-layer_th.js
index 6fa121bfd..331a2c48e 100644
--- a/lib/dojo/nls/tt-rss-layer_th.js
+++ b/lib/dojo/nls/tt-rss-layer_th.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_th",{"dijit/form/nls/validate":{"invalidMessage":"ค่าที่ป้อนไม่ถูกต้อง","rangeMessage":"ค่านี้เกินช่วง","_localized":{},"missingMessage":"จำเป็นต้องมีค่านี้"},"dijit/nls/loading":{"_localized":{},"loadingState":"กำลังโหลด...","errorState":"ขออภัย เกิดข้อผิดพลาด"},"dojo/nls/colors":{"lightsteelblue":"น้ำเงินนวลอ่อน","orangered":"ส้มแกมแดง","midnightblue":"น้ำเงินทึบ","cadetblue":"เขียวน้ำเงินหม่น","seashell":"สีขาวหอยทะเล","slategrey":"เทาอมน้ำเงินนวล","coral":"แสดเข้มนวล","darkturquoise":"ฟ้าขี้นกการเวกเข้ม","antiquewhite":"สีเนื้อ","mediumspringgreen":"สีเขียวนวลกลางๆ","transparent":"สีใส","salmon":"ส้มอ่อน","darkgrey":"เทาเข้ม","ivory":"งาช้าง","greenyellow":"เขียวแกมเหลือง","mistyrose":"ชมพูหม่น","lightsalmon":"ส้มจาง","silver":"เงิน","dimgrey":"เทาทึม","orange":"ส้ม","white":"ขาว","navajowhite":"ส้มหนังกลับ","royalblue":"น้ำเงินเข้ม","deeppink":"ชมพูเข้ม","lime":"เหลืองมะนาว","oldlace":"ขาวนวล","chartreuse":"เขียวสะท้อนแสง","darkcyan":"เขียวแกมน้ำเงินเข้ม","yellow":"เหลือง","linen":"ลินนิน","olive":"โอลีฟ","gold":"ทอง","lawngreen":"เขียวหญ้าอ่อน","lightyellow":"เหลืองอ่อน","tan":"แทน","darkviolet":"ม่วงเข้ม","lightslategrey":"เทานวลอ่อน","grey":"เทา","darkkhaki":"กากีเข้ม","green":"เขียว","deepskyblue":"ฟ้าสด","aqua":"ฟ้าน้ำทะเล","sienna":"น้ำตาลอมแดง","mintcream":"ขาวกะทิ","rosybrown":"กะปิ","mediumslateblue":"น้ำเงินนวลกลางๆ","magenta":"แดงแกมม่วง","lightseagreen":"เขียวทะเลอ่อน","cyan":"เขียวแกมน้ำเงิน","olivedrab":"เขียวมะกอกแก่","darkgoldenrod":"ทองเหลืองเข้ม","slateblue":"น้ำเงินนวล","mediumaquamarine":"อะความารีนกลางๆ","lavender":"ม่วงลาเวนเดอร์","mediumseagreen":" เขียวทะเลกลางๆ","maroon":"น้ำตาลแดง","darkslategray":"เทานวลเข้ม","mediumturquoise":"ฟ้าขี้นกการเวกกลางๆ","ghostwhite":"น้ำข้าว","darkblue":"น้ำเงินเข้ม","mediumvioletred":"แดงอมม่วงกลางๆ","brown":"น้ำตาล","lightgray":"เทาอ่อน","sandybrown":"น้ำตาลลูกรัง","pink":"ชมพู","firebrick":"สีอิฐ","indigo":"คราม","snow":"ขาวหิมะ","darkorchid":"สีม่วงกล้วยไม้เข้ม","turquoise":"ฟ้าขี้นกการเวก","chocolate":"ช็อกโกแลต","springgreen":"เขียว","moccasin":"ม็อคค่า","navy":"น้ำเงินเข้ม","lemonchiffon":"lemon chiffon","teal":"เขียวหัวเป็ด","floralwhite":"ขาวแกมชมพู","cornflowerblue":"สีคอร์นฟลาวเวอร์บลู","paleturquoise":"ฟ้าขี้นกการเวกจาง","purple":"ม่วง","_localized":{},"gainsboro":"เทานวล","plum":"ม่วงอ่อน","red":"แดง","blue":"น้ำเงิน","forestgreen":"หยก","darkgreen":"เขียวเข้ม","honeydew":"ขาวแกมเขียว","darkseagreen":"เขียวทะเลเข้ม","lightcoral":"ชมพูอมแดง","palevioletred":"แดงอมม่วงจาง","mediumpurple":"ม่วงอัญชัญ","saddlebrown":"น้ำตาล","darkmagenta":"แดงแกมม่วงเข้ม","thistle":"ม่วงจาง","whitesmoke":"ขาวควัน","wheat":"เหลืองรำข้าว","violet":"ม่วง","lightskyblue":"ฟ้าอ่อน","goldenrod":"ทองเหลือง","mediumblue":"น้ำเงินกลางๆ","skyblue":"ฟ้า","crimson":"แดงเลือดหมู","darksalmon":"ส้มเข้ม","darkred":"แดงเข้ม","darkslategrey":"เทานวลเข้ม","peru":"ส้มดินเผา","lightgrey":"เทาอ่อน","lightgoldenrodyellow":"ทองเหลืองอ่อน","blanchedalmond":"เนื้ออ่อน","aliceblue":"ฟ้าจาง","bisque":"ขาวข้าวสาร","slategray":"เทาอมน้ำเงินนวล","palegoldenrod":"ทองเหลืองจาง","darkorange":"ส้มเข้ม","aquamarine":"อะความารีน","lightgreen":"เขียวอ่อน","burlywood":"น้ำตาลอ่อน","dodgerblue":"ฟ้าสะท้อนแสง","darkgray":"เทาเข้ม","lightcyan":"เขียวแกมน้ำเงินอ่อน","powderblue":"ฟ้าหม่น","blueviolet":"น้ำเงินม่วง","orchid":"สีกล้วยไม้","dimgray":"เทาทึม","beige":"น้ำตาลเบจ","fuchsia":"บานเย็น","lavenderblush":"นมเย็น","hotpink":"ชมพูจัด","steelblue":"น้ำเงินด้าน","tomato":"แสด","lightpink":"ชมพูอ่อน","limegreen":"เขียวมะนาว","indianred":"แดงอมเหลือง","papayawhip":"ชมพูจาง","lightslategray":"เทานวลอ่อน","gray":"เทา","mediumorchid":"ม่วงกล้วยไม้กลางๆ","cornsilk":"cornsilk","black":"ดำ","seagreen":"เขียวทะเล","darkslateblue":"น้ำเงินนวลเข้ม","khaki":"กากี","lightblue":"น้ำเงินอ่อน","palegreen":"เขียวจาง","azure":"น้ำเงินฟ้า","peachpuff":" สีพีช","darkolivegreen":"เขียวโอลีฟเข้ม","yellowgreen":"เหลืองแกมเขียว"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 ล'.'ล'.'","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 ล้านล้าน","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"การเลือกก่อนหน้า","_localized":{},"nextMessage":"การเลือกเพิ่มเติม"},"dijit/nls/common":{"buttonOk":"ตกลง","buttonCancel":"ยกเลิก","_localized":{},"buttonSave":"บันทึก","itemClose":"ปิด"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_th",{"dojo/nls/colors":{"aliceblue":"ฟ้าจาง","antiquewhite":"สีเนื้อ","aqua":"ฟ้าน้ำทะเล","aquamarine":"อะความารีน","azure":"น้ำเงินฟ้า","beige":"น้ำตาลเบจ","bisque":"ขาวข้าวสาร","black":"ดำ","blanchedalmond":"เนื้ออ่อน","blue":"น้ำเงิน","blueviolet":"น้ำเงินม่วง","brown":"น้ำตาล","burlywood":"น้ำตาลอ่อน","cadetblue":"เขียวน้ำเงินหม่น","chartreuse":"เขียวสะท้อนแสง","chocolate":"ช็อกโกแลต","coral":"แสดเข้มนวล","cornflowerblue":"สีคอร์นฟลาวเวอร์บลู","cornsilk":"cornsilk","crimson":"แดงเลือดหมู","cyan":"เขียวแกมน้ำเงิน","darkblue":"น้ำเงินเข้ม","darkcyan":"เขียวแกมน้ำเงินเข้ม","darkgoldenrod":"ทองเหลืองเข้ม","darkgray":"เทาเข้ม","darkgreen":"เขียวเข้ม","darkgrey":"เทาเข้ม","darkkhaki":"กากีเข้ม","darkmagenta":"แดงแกมม่วงเข้ม","darkolivegreen":"เขียวโอลีฟเข้ม","darkorange":"ส้มเข้ม","darkorchid":"สีม่วงกล้วยไม้เข้ม","darkred":"แดงเข้ม","darksalmon":"ส้มเข้ม","darkseagreen":"เขียวทะเลเข้ม","darkslateblue":"น้ำเงินนวลเข้ม","darkslategray":"เทานวลเข้ม","darkslategrey":"เทานวลเข้ม","darkturquoise":"ฟ้าขี้นกการเวกเข้ม","darkviolet":"ม่วงเข้ม","deeppink":"ชมพูเข้ม","deepskyblue":"ฟ้าสด","dimgray":"เทาทึม","dimgrey":"เทาทึม","dodgerblue":"ฟ้าสะท้อนแสง","firebrick":"สีอิฐ","floralwhite":"ขาวแกมชมพู","forestgreen":"หยก","fuchsia":"บานเย็น","gainsboro":"เทานวล","ghostwhite":"น้ำข้าว","gold":"ทอง","goldenrod":"ทองเหลือง","gray":"เทา","green":"เขียว","greenyellow":"เขียวแกมเหลือง","grey":"เทา","honeydew":"ขาวแกมเขียว","hotpink":"ชมพูจัด","indianred":"แดงอมเหลือง","indigo":"คราม","ivory":"งาช้าง","khaki":"กากี","lavender":"ม่วงลาเวนเดอร์","lavenderblush":"นมเย็น","lawngreen":"เขียวหญ้าอ่อน","lemonchiffon":"lemon chiffon","lightblue":"น้ำเงินอ่อน","lightcoral":"ชมพูอมแดง","lightcyan":"เขียวแกมน้ำเงินอ่อน","lightgoldenrodyellow":"ทองเหลืองอ่อน","lightgray":"เทาอ่อน","lightgreen":"เขียวอ่อน","lightgrey":"เทาอ่อน","lightpink":"ชมพูอ่อน","lightsalmon":"ส้มจาง","lightseagreen":"เขียวทะเลอ่อน","lightskyblue":"ฟ้าอ่อน","lightslategray":"เทานวลอ่อน","lightslategrey":"เทานวลอ่อน","lightsteelblue":"น้ำเงินนวลอ่อน","lightyellow":"เหลืองอ่อน","lime":"เหลืองมะนาว","limegreen":"เขียวมะนาว","linen":"ลินนิน","magenta":"แดงแกมม่วง","maroon":"น้ำตาลแดง","mediumaquamarine":"อะความารีนกลางๆ","mediumblue":"น้ำเงินกลางๆ","mediumorchid":"ม่วงกล้วยไม้กลางๆ","mediumpurple":"ม่วงอัญชัญ","mediumseagreen":" เขียวทะเลกลางๆ","mediumslateblue":"น้ำเงินนวลกลางๆ","mediumspringgreen":"สีเขียวนวลกลางๆ","mediumturquoise":"ฟ้าขี้นกการเวกกลางๆ","mediumvioletred":"แดงอมม่วงกลางๆ","midnightblue":"น้ำเงินทึบ","mintcream":"ขาวกะทิ","mistyrose":"ชมพูหม่น","moccasin":"ม็อคค่า","navajowhite":"ส้มหนังกลับ","navy":"น้ำเงินเข้ม","oldlace":"ขาวนวล","olive":"โอลีฟ","olivedrab":"เขียวมะกอกแก่","orange":"ส้ม","orangered":"ส้มแกมแดง","orchid":"สีกล้วยไม้","palegoldenrod":"ทองเหลืองจาง","palegreen":"เขียวจาง","paleturquoise":"ฟ้าขี้นกการเวกจาง","palevioletred":"แดงอมม่วงจาง","papayawhip":"ชมพูจาง","peachpuff":" สีพีช","peru":"ส้มดินเผา","pink":"ชมพู","plum":"ม่วงอ่อน","powderblue":"ฟ้าหม่น","purple":"ม่วง","red":"แดง","rosybrown":"กะปิ","royalblue":"น้ำเงินเข้ม","saddlebrown":"น้ำตาล","salmon":"ส้มอ่อน","sandybrown":"น้ำตาลลูกรัง","seagreen":"เขียวทะเล","seashell":"สีขาวหอยทะเล","sienna":"น้ำตาลอมแดง","silver":"เงิน","skyblue":"ฟ้า","slateblue":"น้ำเงินนวล","slategray":"เทาอมน้ำเงินนวล","slategrey":"เทาอมน้ำเงินนวล","snow":"ขาวหิมะ","springgreen":"เขียว","steelblue":"น้ำเงินด้าน","tan":"แทน","teal":"เขียวหัวเป็ด","thistle":"ม่วงจาง","tomato":"แสด","transparent":"สีใส","turquoise":"ฟ้าขี้นกการเวก","violet":"ม่วง","wheat":"เหลืองรำข้าว","white":"ขาว","whitesmoke":"ขาวควัน","yellow":"เหลือง","yellowgreen":"เหลืองแกมเขียว","_localized":{}},"dijit/nls/loading":{"loadingState":"กำลังโหลด...","errorState":"ขออภัย เกิดข้อผิดพลาด","_localized":{}},"dijit/nls/common":{"buttonOk":"ตกลง","buttonCancel":"ยกเลิก","buttonSave":"บันทึก","itemClose":"ปิด","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"ค่าที่ป้อนไม่ถูกต้อง","missingMessage":"จำเป็นต้องมีค่านี้","rangeMessage":"ค่านี้เกินช่วง","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"การเลือกก่อนหน้า","nextMessage":"การเลือกเพิ่มเติม","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","approximatelySign":"~","group":",","percentFormat":"#,##0%","decimalFormat-long":"000 ล้านล้าน","decimalFormat":"#,##0.###","currencyFormat-short":"¤000T","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_tr.js b/lib/dojo/nls/tt-rss-layer_tr.js
index d2dee85cb..e6a583d98 100644
--- a/lib/dojo/nls/tt-rss-layer_tr.js
+++ b/lib/dojo/nls/tt-rss-layer_tr.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_tr",{"dijit/form/nls/validate":{"invalidMessage":"Girilen değer geçersiz.","rangeMessage":"Bu değer aralık dışında.","_localized":{},"missingMessage":"Bu değer gerekli."},"dijit/nls/loading":{"_localized":{},"loadingState":"Yükleniyor...","errorState":"Üzgünüz, bir hata oluştu"},"dojo/nls/colors":{"lightsteelblue":"açık metalik mavi","orangered":"turuncu kırmızı","midnightblue":"gece mavisi","cadetblue":"denizci mavisi","seashell":"deniz kabuğu","slategrey":"arduvaz grisi","coral":"mercan","darkturquoise":"koyu turkuaz","antiquewhite":"antik beyaz","mediumspringgreen":"orta bahar yeşili","transparent":"saydam","salmon":"somon","darkgrey":"koyu gri","ivory":"fildişi","greenyellow":"yeşil-sarı","mistyrose":"gülkurusu","lightsalmon":"açık somon","silver":"gümüş","dimgrey":"soluk gri","orange":"turuncu","white":"beyaz","navajowhite":"navajo beyazı","royalblue":"parlak koyu mavi","deeppink":"koyu pembe","lime":"limon yeşili","oldlace":"eski dantel","chartreuse":"chartreuse","darkcyan":"koyu camgöbeği","yellow":"sarı","linen":"keten","olive":"zeytin","gold":"altın","lawngreen":"çimen yeşili","lightyellow":"açık sarı","tan":"güneş yanığı","darkviolet":"koyu eflatun","lightslategrey":"açık arduvaz grisi","grey":"gri","darkkhaki":"koyu haki","green":"yeşil","deepskyblue":"koyu gök mavisi","aqua":"deniz mavisi","sienna":"koyu kahve","mintcream":"naneli krem","rosybrown":"pembemsi kahverengi","mediumslateblue":"orta arduvaz mavisi","magenta":"macenta","lightseagreen":"açık deniz yeşili","cyan":"camgöbeği","olivedrab":"asker yeşili","darkgoldenrod":"koyu sarı","slateblue":"arduvaz mavisi","mediumaquamarine":"orta akuamarin","lavender":"lavanta","mediumseagreen":"orta deniz yeşili","maroon":"kestane","darkslategray":"koyu arduvaz grisi","mediumturquoise":"orta turkuaz","ghostwhite":"silik beyaz","darkblue":"koyu mavi","mediumvioletred":"orta menekşe kırmızısı","brown":"kahverengi","lightgray":"açık gri","sandybrown":"kum rengi","pink":"pembe","firebrick":"canlı kiremit","indigo":"çivit mavisi","snow":"kar","darkorchid":"koyu orkide","turquoise":"turkuaz","chocolate":"çikolata","springgreen":"bahar yeşili","moccasin":"mokosen","navy":"lacivert","lemonchiffon":"limoni","teal":"Teal mavi","floralwhite":"çiçek beyazı","cornflowerblue":"peygamber çiçeği mavisi","paleturquoise":"soluk turkuaz","purple":"mor","_localized":{},"gainsboro":"gainsboro","plum":"erik","red":"kırmızı","blue":"mavi","forestgreen":"koyu deniz yeşili","darkgreen":"koyu yeşil","honeydew":"çam sakızı","darkseagreen":"koyu deniz yeşili","lightcoral":"açık mercan","palevioletred":"soluk menekşe kırmızısı","mediumpurple":"orta mor","saddlebrown":"açık kahve","darkmagenta":"koyu mor","thistle":"devedikeni","whitesmoke":"beyaz duman","wheat":"buğday","violet":"eflatun","lightskyblue":"açık gök mavisi","goldenrod":"sarısabır","mediumblue":"orta mavi","skyblue":"gök mavisi","crimson":"crimson","darksalmon":"koyu somon","darkred":"koyu kırmızı","darkslategrey":"koyu arduvaz grisi","peru":"peru","lightgrey":"açık gri","lightgoldenrodyellow":"açık sarısabır","blanchedalmond":"soluk badem","aliceblue":"alice mavisi","bisque":"bisküvi","slategray":"arduvaz grisi","palegoldenrod":"soluk sarısabır","darkorange":"koyu turuncu","aquamarine":"akuamarin","lightgreen":"açık yeşil","burlywood":"sarımsı kahverengi","dodgerblue":"toz mavisi","darkgray":"koyu gri","lightcyan":"açık camgöbeği","powderblue":"pudra mavisi","blueviolet":"mavi-mor","orchid":"orkide","dimgray":"soluk gri","beige":"bej","fuchsia":"fuşya","lavenderblush":"lavanta pembesi","hotpink":"sıcak pembe","steelblue":"metalik mavi","tomato":"domates","lightpink":"açık pembe","limegreen":"küf yeşili","indianred":"kızılderili kırmızısı","papayawhip":"papaya sapı","lightslategray":"açık arduvaz grisi","gray":"gri","mediumorchid":"orta orkide","cornsilk":"mısır rengi","black":"siyah","seagreen":"deniz yeşili","darkslateblue":"koyu arduvaz mavisi","khaki":"haki","lightblue":"açık mavi","palegreen":"soluk yeşil","azure":"azur mavisi","peachpuff":"açık şeftali","darkolivegreen":"koyu zeytin yeşili","yellowgreen":"sarı yeşil"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000 Tn","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"#,##0.00 ¤;(#,##0.00 ¤)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":".","percentFormat":"%#,##0","decimalFormat-long":"000 trilyon","decimalFormat":"#,##0.###","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"Önceki seçenekler","_localized":{},"nextMessage":"Diğer seçenekler"},"dijit/nls/common":{"buttonOk":"Tamam","buttonCancel":"İptal","_localized":{},"buttonSave":"Kaydet","itemClose":"Kapat"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_tr",{"dojo/nls/colors":{"aliceblue":"alice mavisi","antiquewhite":"antik beyaz","aqua":"deniz mavisi","aquamarine":"akuamarin","azure":"azur mavisi","beige":"bej","bisque":"bisküvi","black":"siyah","blanchedalmond":"soluk badem","blue":"mavi","blueviolet":"mavi-mor","brown":"kahverengi","burlywood":"sarımsı kahverengi","cadetblue":"denizci mavisi","chartreuse":"chartreuse","chocolate":"çikolata","coral":"mercan","cornflowerblue":"peygamber çiçeği mavisi","cornsilk":"mısır rengi","crimson":"crimson","cyan":"camgöbeği","darkblue":"koyu mavi","darkcyan":"koyu camgöbeği","darkgoldenrod":"koyu sarı","darkgray":"koyu gri","darkgreen":"koyu yeşil","darkgrey":"koyu gri","darkkhaki":"koyu haki","darkmagenta":"koyu mor","darkolivegreen":"koyu zeytin yeşili","darkorange":"koyu turuncu","darkorchid":"koyu orkide","darkred":"koyu kırmızı","darksalmon":"koyu somon","darkseagreen":"koyu deniz yeşili","darkslateblue":"koyu arduvaz mavisi","darkslategray":"koyu arduvaz grisi","darkslategrey":"koyu arduvaz grisi","darkturquoise":"koyu turkuaz","darkviolet":"koyu eflatun","deeppink":"koyu pembe","deepskyblue":"koyu gök mavisi","dimgray":"soluk gri","dimgrey":"soluk gri","dodgerblue":"toz mavisi","firebrick":"canlı kiremit","floralwhite":"çiçek beyazı","forestgreen":"koyu deniz yeşili","fuchsia":"fuşya","gainsboro":"gainsboro","ghostwhite":"silik beyaz","gold":"altın","goldenrod":"sarısabır","gray":"gri","green":"yeşil","greenyellow":"yeşil-sarı","grey":"gri","honeydew":"çam sakızı","hotpink":"sıcak pembe","indianred":"kızılderili kırmızısı","indigo":"çivit mavisi","ivory":"fildişi","khaki":"haki","lavender":"lavanta","lavenderblush":"lavanta pembesi","lawngreen":"çimen yeşili","lemonchiffon":"limoni","lightblue":"açık mavi","lightcoral":"açık mercan","lightcyan":"açık camgöbeği","lightgoldenrodyellow":"açık sarısabır","lightgray":"açık gri","lightgreen":"açık yeşil","lightgrey":"açık gri","lightpink":"açık pembe","lightsalmon":"açık somon","lightseagreen":"açık deniz yeşili","lightskyblue":"açık gök mavisi","lightslategray":"açık arduvaz grisi","lightslategrey":"açık arduvaz grisi","lightsteelblue":"açık metalik mavi","lightyellow":"açık sarı","lime":"limon yeşili","limegreen":"küf yeşili","linen":"keten","magenta":"macenta","maroon":"kestane","mediumaquamarine":"orta akuamarin","mediumblue":"orta mavi","mediumorchid":"orta orkide","mediumpurple":"orta mor","mediumseagreen":"orta deniz yeşili","mediumslateblue":"orta arduvaz mavisi","mediumspringgreen":"orta bahar yeşili","mediumturquoise":"orta turkuaz","mediumvioletred":"orta menekşe kırmızısı","midnightblue":"gece mavisi","mintcream":"naneli krem","mistyrose":"gülkurusu","moccasin":"mokosen","navajowhite":"navajo beyazı","navy":"lacivert","oldlace":"eski dantel","olive":"zeytin","olivedrab":"asker yeşili","orange":"turuncu","orangered":"turuncu kırmızı","orchid":"orkide","palegoldenrod":"soluk sarısabır","palegreen":"soluk yeşil","paleturquoise":"soluk turkuaz","palevioletred":"soluk menekşe kırmızısı","papayawhip":"papaya sapı","peachpuff":"açık şeftali","peru":"peru","pink":"pembe","plum":"erik","powderblue":"pudra mavisi","purple":"mor","red":"kırmızı","rosybrown":"pembemsi kahverengi","royalblue":"parlak koyu mavi","saddlebrown":"açık kahve","salmon":"somon","sandybrown":"kum rengi","seagreen":"deniz yeşili","seashell":"deniz kabuğu","sienna":"koyu kahve","silver":"gümüş","skyblue":"gök mavisi","slateblue":"arduvaz mavisi","slategray":"arduvaz grisi","slategrey":"arduvaz grisi","snow":"kar","springgreen":"bahar yeşili","steelblue":"metalik mavi","tan":"güneş yanığı","teal":"Teal mavi","thistle":"devedikeni","tomato":"domates","transparent":"saydam","turquoise":"turkuaz","violet":"eflatun","wheat":"buğday","white":"beyaz","whitesmoke":"beyaz duman","yellow":"sarı","yellowgreen":"sarı yeşil","_localized":{}},"dijit/nls/loading":{"loadingState":"Yükleniyor...","errorState":"Üzgünüz, bir hata oluştu","_localized":{}},"dijit/nls/common":{"buttonOk":"Tamam","buttonCancel":"İptal","buttonSave":"Kaydet","itemClose":"Kapat","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"Girilen değer geçersiz.","missingMessage":"Bu değer gerekli.","rangeMessage":"Bu değer aralık dışında.","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"Önceki seçenekler","nextMessage":"Diğer seçenekler","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000 Tn","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","approximatelySign":"~","group":".","percentFormat":"%#,##0","decimalFormat-long":"000 trilyon","decimalFormat":"#,##0.###","currencyFormat-short":"000 Tn ¤","timeSeparator":":","decimal":",","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_zh-cn.js b/lib/dojo/nls/tt-rss-layer_zh-cn.js
index 6c6411493..a16e528ef 100644
--- a/lib/dojo/nls/tt-rss-layer_zh-cn.js
+++ b/lib/dojo/nls/tt-rss-layer_zh-cn.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_zh-cn",{"dijit/form/nls/validate":{"invalidMessage":"输入的值无效。","rangeMessage":"此值超出范围。","_localized":{},"missingMessage":"该值是必需的。"},"dijit/nls/loading":{"_localized":{},"loadingState":"正在加载...","errorState":"对不起,发生了错误"},"dojo/nls/colors":{"lightsteelblue":"浅钢蓝色","orangered":"橙红色","midnightblue":"深蓝色","cadetblue":"灰蓝色","seashell":"海贝色","slategrey":"灰石色","coral":"珊瑚色","darkturquoise":"深粉蓝","antiquewhite":"古董白","mediumspringgreen":"间春绿色","transparent":"透明的","salmon":"橙红","darkgrey":"深灰色","ivory":"象牙色","greenyellow":"绿黄色","mistyrose":"浅玫瑰色","lightsalmon":"淡橙色","silver":"银白色","dimgrey":"暗灰色","orange":"橙色","white":"白色","navajowhite":"纳瓦白","royalblue":"品蓝","deeppink":"深粉红色","lime":"淡黄绿色","oldlace":"老白色","chartreuse":"黄绿色","darkcyan":"深青绿","yellow":"黄色","linen":"亚麻色","olive":"橄榄绿","gold":"金黄色","lawngreen":"草绿色","lightyellow":"浅黄色","tan":"棕褐色","darkviolet":"深紫色","lightslategrey":"浅青灰","grey":"灰色","darkkhaki":"深卡其色","green":"绿色","deepskyblue":"深天蓝色","aqua":"浅绿色","sienna":"赭色","mintcream":"薄荷色","rosybrown":"褐玫瑰红","mediumslateblue":"间暗蓝色","magenta":"洋红色","lightseagreen":"浅海藻绿","cyan":"青蓝色","olivedrab":"草绿色","darkgoldenrod":"深金黄","slateblue":"石蓝色","mediumaquamarine":"间绿色","lavender":"淡紫色","mediumseagreen":"间海蓝色","maroon":"栗色","darkslategray":"深青灰","mediumturquoise":"间绿宝石色","ghostwhite":"苍白","darkblue":"深蓝","mediumvioletred":"间紫罗兰色","brown":"棕色","lightgray":"浅灰色","sandybrown":"沙褐色","pink":"粉红色","firebrick":"砖红","indigo":"靛青","snow":"雪白色","darkorchid":"深紫色","turquoise":"绿宝石色","chocolate":"巧克力色","springgreen":"春绿色","moccasin":"鹿皮色","navy":"藏青色","lemonchiffon":"柠檬绸色","teal":"水鸭色","floralwhite":"花白色","cornflowerblue":"浅蓝色","paleturquoise":"苍绿色","purple":"紫色","_localized":{},"gainsboro":"淡灰色","plum":"杨李色","red":"红色","blue":"蓝色","forestgreen":"森林绿","darkgreen":"深绿色","honeydew":"蜜汁色","darkseagreen":"深海藻绿","lightcoral":"浅珊瑚色","palevioletred":"苍紫罗兰色","mediumpurple":"间紫色","saddlebrown":"重褐色","darkmagenta":"深洋红色","thistle":"蓟色","whitesmoke":"烟白色","wheat":"浅黄色","violet":"紫色","lightskyblue":"浅天蓝色","goldenrod":"金麒麟色","mediumblue":"间蓝色","skyblue":"天蓝色","crimson":"绯红色","darksalmon":"深橙红","darkred":"深红色","darkslategrey":"深青灰","peru":"秘鲁色","lightgrey":"浅灰色","lightgoldenrodyellow":"浅金黄色","blanchedalmond":"白杏色","aliceblue":"爱丽丝蓝","bisque":"桔黄色","slategray":"灰石色","palegoldenrod":"淡金黄色","darkorange":"深橙色","aquamarine":"碧绿色","lightgreen":"浅绿色","burlywood":"实木色","dodgerblue":"闪蓝色","darkgray":"深灰色","lightcyan":"浅青色","powderblue":"铁蓝","blueviolet":"蓝紫色","orchid":"紫色","dimgray":"暗灰色","beige":"米色","fuchsia":"紫红色","lavenderblush":"淡紫红","hotpink":"深粉红","steelblue":"钢蓝色","tomato":"西红柿色","lightpink":"浅粉红色","limegreen":"橙绿色","indianred":"印度红","papayawhip":"木瓜色","lightslategray":"浅青灰","gray":"灰色","mediumorchid":"间紫色","cornsilk":"米绸色","black":"黑色","seagreen":"海绿色","darkslateblue":"深青蓝","khaki":"卡其色","lightblue":"淡蓝色","palegreen":"淡绿色","azure":"天蓝色","peachpuff":"桃色","darkolivegreen":"深橄榄绿","yellowgreen":"黄绿色"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000兆","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000兆","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"先前选项","_localized":{},"nextMessage":"更多选项"},"dijit/nls/common":{"buttonOk":"确定","buttonCancel":"取消","_localized":{},"buttonSave":"保存","itemClose":"关闭"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_zh-cn",{"dojo/nls/colors":{"aliceblue":"爱丽丝蓝","antiquewhite":"古董白","aqua":"浅绿色","aquamarine":"碧绿色","azure":"天蓝色","beige":"米色","bisque":"桔黄色","black":"黑色","blanchedalmond":"白杏色","blue":"蓝色","blueviolet":"蓝紫色","brown":"棕色","burlywood":"实木色","cadetblue":"灰蓝色","chartreuse":"黄绿色","chocolate":"巧克力色","coral":"珊瑚色","cornflowerblue":"浅蓝色","cornsilk":"米绸色","crimson":"绯红色","cyan":"青蓝色","darkblue":"深蓝","darkcyan":"深青绿","darkgoldenrod":"深金黄","darkgray":"深灰色","darkgreen":"深绿色","darkgrey":"深灰色","darkkhaki":"深卡其色","darkmagenta":"深洋红色","darkolivegreen":"深橄榄绿","darkorange":"深橙色","darkorchid":"深紫色","darkred":"深红色","darksalmon":"深橙红","darkseagreen":"深海藻绿","darkslateblue":"深青蓝","darkslategray":"深青灰","darkslategrey":"深青灰","darkturquoise":"深粉蓝","darkviolet":"深紫色","deeppink":"深粉红色","deepskyblue":"深天蓝色","dimgray":"暗灰色","dimgrey":"暗灰色","dodgerblue":"闪蓝色","firebrick":"砖红","floralwhite":"花白色","forestgreen":"森林绿","fuchsia":"紫红色","gainsboro":"淡灰色","ghostwhite":"苍白","gold":"金黄色","goldenrod":"金麒麟色","gray":"灰色","green":"绿色","greenyellow":"绿黄色","grey":"灰色","honeydew":"蜜汁色","hotpink":"深粉红","indianred":"印度红","indigo":"靛青","ivory":"象牙色","khaki":"卡其色","lavender":"淡紫色","lavenderblush":"淡紫红","lawngreen":"草绿色","lemonchiffon":"柠檬绸色","lightblue":"淡蓝色","lightcoral":"浅珊瑚色","lightcyan":"浅青色","lightgoldenrodyellow":"浅金黄色","lightgray":"浅灰色","lightgreen":"浅绿色","lightgrey":"浅灰色","lightpink":"浅粉红色","lightsalmon":"淡橙色","lightseagreen":"浅海藻绿","lightskyblue":"浅天蓝色","lightslategray":"浅青灰","lightslategrey":"浅青灰","lightsteelblue":"浅钢蓝色","lightyellow":"浅黄色","lime":"淡黄绿色","limegreen":"橙绿色","linen":"亚麻色","magenta":"洋红色","maroon":"栗色","mediumaquamarine":"间绿色","mediumblue":"间蓝色","mediumorchid":"间紫色","mediumpurple":"间紫色","mediumseagreen":"间海蓝色","mediumslateblue":"间暗蓝色","mediumspringgreen":"间春绿色","mediumturquoise":"间绿宝石色","mediumvioletred":"间紫罗兰色","midnightblue":"深蓝色","mintcream":"薄荷色","mistyrose":"浅玫瑰色","moccasin":"鹿皮色","navajowhite":"纳瓦白","navy":"藏青色","oldlace":"老白色","olive":"橄榄绿","olivedrab":"草绿色","orange":"橙色","orangered":"橙红色","orchid":"紫色","palegoldenrod":"淡金黄色","palegreen":"淡绿色","paleturquoise":"苍绿色","palevioletred":"苍紫罗兰色","papayawhip":"木瓜色","peachpuff":"桃色","peru":"秘鲁色","pink":"粉红色","plum":"杨李色","powderblue":"铁蓝","purple":"紫色","red":"红色","rosybrown":"褐玫瑰红","royalblue":"品蓝","saddlebrown":"重褐色","salmon":"橙红","sandybrown":"沙褐色","seagreen":"海绿色","seashell":"海贝色","sienna":"赭色","silver":"银白色","skyblue":"天蓝色","slateblue":"石蓝色","slategray":"灰石色","slategrey":"灰石色","snow":"雪白色","springgreen":"春绿色","steelblue":"钢蓝色","tan":"棕褐色","teal":"水鸭色","thistle":"蓟色","tomato":"西红柿色","transparent":"透明的","turquoise":"绿宝石色","violet":"紫色","wheat":"浅黄色","white":"白色","whitesmoke":"烟白色","yellow":"黄色","yellowgreen":"黄绿色","_localized":{}},"dijit/nls/loading":{"loadingState":"正在加载...","errorState":"对不起,发生了错误","_localized":{}},"dijit/nls/common":{"buttonOk":"确定","buttonCancel":"取消","buttonSave":"保存","itemClose":"关闭","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"输入的值无效。","missingMessage":"该值是必需的。","rangeMessage":"此值超出范围。","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"先前选项","nextMessage":"更多选项","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000万亿","currencySpacing-afterCurrency-insertBetween":" ","nan":"NaN","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","approximatelySign":"~","group":",","percentFormat":"#,##0%","decimalFormat-long":"000万亿","decimalFormat":"#,##0.###","currencyFormat-short":"¤000万亿","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/nls/tt-rss-layer_zh-tw.js b/lib/dojo/nls/tt-rss-layer_zh-tw.js
index 374b0d921..546815f19 100644
--- a/lib/dojo/nls/tt-rss-layer_zh-tw.js
+++ b/lib/dojo/nls/tt-rss-layer_zh-tw.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/nls/tt-rss-layer_zh-tw",{"dijit/form/nls/validate":{"invalidMessage":"輸入的值無效。","rangeMessage":"此值超出範圍。","_localized":{},"missingMessage":"必須提供此值。"},"dijit/nls/loading":{"_localized":{},"loadingState":"載入中...","errorState":"抱歉,發生錯誤"},"dojo/nls/colors":{"lightsteelblue":"淡鐵藍色","orangered":"橙紅色","midnightblue":"午夜藍","cadetblue":"軍服藍","seashell":"海貝色","slategrey":"岩灰色","coral":"珊瑚紅","darkturquoise":"暗松石綠","antiquewhite":"米白色","mediumspringgreen":"中春綠色","transparent":"透明","salmon":"鮭紅色","darkgrey":"暗灰色","ivory":"象牙色","greenyellow":"綠黃色","mistyrose":"霧玫瑰色","lightsalmon":"淡鮭紅","silver":"銀色","dimgrey":"昏灰色","orange":"橙色","white":"白色","navajowhite":"印地安黃色","royalblue":"品藍色","deeppink":"深粉紅色","lime":"檸檬色","oldlace":"舊蕾絲色","chartreuse":"淡黃綠色","darkcyan":"暗青色","yellow":"黃色","linen":"亞麻色","olive":"橄欖色","gold":"金色","lawngreen":"草綠色","lightyellow":"淡黃色","tan":"皮革色","darkviolet":"暗紫羅蘭色","lightslategrey":"淡岩灰色","grey":"灰色","darkkhaki":"暗卡其色","green":"綠色","deepskyblue":"深天藍色","aqua":"水色","sienna":"黃土赭色","mintcream":"薄荷乳白色","rosybrown":"玫瑰褐","mediumslateblue":"中岩藍色","magenta":"紫紅色","lightseagreen":"淡海綠色","cyan":"青色","olivedrab":"橄欖綠","darkgoldenrod":"暗金菊色","slateblue":"岩藍色","mediumaquamarine":"中碧綠色","lavender":"薰衣草紫","mediumseagreen":"中海綠色","maroon":"栗色","darkslategray":"暗岩灰色","mediumturquoise":"中松石綠","ghostwhite":"幽靈色","darkblue":"暗藍色","mediumvioletred":"中紫羅蘭紅","brown":"褐色","lightgray":"淡灰色","sandybrown":"沙褐色","pink":"粉紅色","firebrick":"紅磚色","indigo":"靛藍色","snow":"雪白色","darkorchid":"暗蘭花色","turquoise":"松石綠","chocolate":"巧克力色","springgreen":"春綠色","moccasin":"鹿皮黃色","navy":"海軍藍","lemonchiffon":"奶油黃","teal":"深藍綠色","floralwhite":"花卉白","cornflowerblue":"矢車菊藍","paleturquoise":"灰松石綠","purple":"紫色","_localized":{},"gainsboro":"石板灰","plum":"李紫色","red":"紅色","blue":"藍色","forestgreen":"森綠色","darkgreen":"暗綠色","honeydew":"密瓜色","darkseagreen":"暗海綠色","lightcoral":"淡珊瑚紅","palevioletred":"灰紫羅蘭紅","mediumpurple":"中紫色","saddlebrown":"鞍褐色","darkmagenta":"暗紫紅色","thistle":"薊色","whitesmoke":"白煙色","wheat":"小麥色","violet":"紫羅蘭色","lightskyblue":"淡天藍色","goldenrod":"金菊色","mediumblue":"中藍色","skyblue":"天藍色","crimson":"暗深紅色","darksalmon":"暗鮭紅","darkred":"暗紅色","darkslategrey":"暗岩灰色","peru":"祕魯色","lightgrey":"淡灰色","lightgoldenrodyellow":"淡金菊黃","blanchedalmond":"杏仁白","aliceblue":"愛麗絲藍","bisque":"橘黃色","slategray":"岩灰色","palegoldenrod":"灰金菊色","darkorange":"暗橙色","aquamarine":"碧綠色","lightgreen":"淡綠色","burlywood":"實木色","dodgerblue":"道奇藍","darkgray":"暗灰色","lightcyan":"淡青色","powderblue":"粉藍色","blueviolet":"藍紫色","orchid":"蘭花色","dimgray":"昏灰色","beige":"灰棕色","fuchsia":"海棠紅","lavenderblush":"薰衣草紫紅","hotpink":"暖粉紅色","steelblue":"鐵藍色","tomato":"蕃茄紅","lightpink":"淡粉紅色","limegreen":"檸檬綠","indianred":"印度紅","papayawhip":"番木瓜色","lightslategray":"淡岩灰色","gray":"灰色","mediumorchid":"中蘭紫色","cornsilk":"玉米黃","black":"黑色","seagreen":"海綠色","darkslateblue":"暗岩藍色","khaki":"卡其色","lightblue":"淡藍色","palegreen":"灰綠色","azure":"天藍色","peachpuff":"粉撲桃色","darkolivegreen":"暗橄欖綠","yellowgreen":"黃綠色"},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[:^S:]","infinity":"∞","$locale":"zh-hant-tw","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","_localized":{},"decimalFormat-short":"000T","currencySpacing-afterCurrency-insertBetween":" ","nan":"非數值","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","currencySpacing-beforeCurrency-currencyMatch":"[:^S:]","perMille":"‰","group":",","percentFormat":"#,##0%","decimalFormat-long":"000兆","decimalFormat":"#,##0.###","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E"},"dijit/form/nls/ComboBox":{"previousMessage":"前一個選擇項","_localized":{},"nextMessage":"其他選擇項"},"dijit/nls/common":{"buttonOk":"確定","buttonCancel":"取消","_localized":{},"buttonSave":"儲存","itemClose":"關閉"}}); \ No newline at end of file
+define("dojo/nls/tt-rss-layer_zh-tw",{"dojo/nls/colors":{"aliceblue":"愛麗絲藍","antiquewhite":"米白色","aqua":"水色","aquamarine":"碧綠色","azure":"天藍色","beige":"灰棕色","bisque":"橘黃色","black":"黑色","blanchedalmond":"杏仁白","blue":"藍色","blueviolet":"藍紫色","brown":"褐色","burlywood":"實木色","cadetblue":"軍服藍","chartreuse":"淡黃綠色","chocolate":"巧克力色","coral":"珊瑚紅","cornflowerblue":"矢車菊藍","cornsilk":"玉米黃","crimson":"暗深紅色","cyan":"青色","darkblue":"暗藍色","darkcyan":"暗青色","darkgoldenrod":"暗金菊色","darkgray":"暗灰色","darkgreen":"暗綠色","darkgrey":"暗灰色","darkkhaki":"暗卡其色","darkmagenta":"暗紫紅色","darkolivegreen":"暗橄欖綠","darkorange":"暗橙色","darkorchid":"暗蘭花色","darkred":"暗紅色","darksalmon":"暗鮭紅","darkseagreen":"暗海綠色","darkslateblue":"暗岩藍色","darkslategray":"暗岩灰色","darkslategrey":"暗岩灰色","darkturquoise":"暗松石綠","darkviolet":"暗紫羅蘭色","deeppink":"深粉紅色","deepskyblue":"深天藍色","dimgray":"昏灰色","dimgrey":"昏灰色","dodgerblue":"道奇藍","firebrick":"紅磚色","floralwhite":"花卉白","forestgreen":"森綠色","fuchsia":"海棠紅","gainsboro":"石板灰","ghostwhite":"幽靈色","gold":"金色","goldenrod":"金菊色","gray":"灰色","green":"綠色","greenyellow":"綠黃色","grey":"灰色","honeydew":"密瓜色","hotpink":"暖粉紅色","indianred":"印度紅","indigo":"靛藍色","ivory":"象牙色","khaki":"卡其色","lavender":"薰衣草紫","lavenderblush":"薰衣草紫紅","lawngreen":"草綠色","lemonchiffon":"奶油黃","lightblue":"淡藍色","lightcoral":"淡珊瑚紅","lightcyan":"淡青色","lightgoldenrodyellow":"淡金菊黃","lightgray":"淡灰色","lightgreen":"淡綠色","lightgrey":"淡灰色","lightpink":"淡粉紅色","lightsalmon":"淡鮭紅","lightseagreen":"淡海綠色","lightskyblue":"淡天藍色","lightslategray":"淡岩灰色","lightslategrey":"淡岩灰色","lightsteelblue":"淡鐵藍色","lightyellow":"淡黃色","lime":"檸檬色","limegreen":"檸檬綠","linen":"亞麻色","magenta":"紫紅色","maroon":"栗色","mediumaquamarine":"中碧綠色","mediumblue":"中藍色","mediumorchid":"中蘭紫色","mediumpurple":"中紫色","mediumseagreen":"中海綠色","mediumslateblue":"中岩藍色","mediumspringgreen":"中春綠色","mediumturquoise":"中松石綠","mediumvioletred":"中紫羅蘭紅","midnightblue":"午夜藍","mintcream":"薄荷乳白色","mistyrose":"霧玫瑰色","moccasin":"鹿皮黃色","navajowhite":"印地安黃色","navy":"海軍藍","oldlace":"舊蕾絲色","olive":"橄欖色","olivedrab":"橄欖綠","orange":"橙色","orangered":"橙紅色","orchid":"蘭花色","palegoldenrod":"灰金菊色","palegreen":"灰綠色","paleturquoise":"灰松石綠","palevioletred":"灰紫羅蘭紅","papayawhip":"番木瓜色","peachpuff":"粉撲桃色","peru":"祕魯色","pink":"粉紅色","plum":"李紫色","powderblue":"粉藍色","purple":"紫色","red":"紅色","rosybrown":"玫瑰褐","royalblue":"品藍色","saddlebrown":"鞍褐色","salmon":"鮭紅色","sandybrown":"沙褐色","seagreen":"海綠色","seashell":"海貝色","sienna":"黃土赭色","silver":"銀色","skyblue":"天藍色","slateblue":"岩藍色","slategray":"岩灰色","slategrey":"岩灰色","snow":"雪白色","springgreen":"春綠色","steelblue":"鐵藍色","tan":"皮革色","teal":"深藍綠色","thistle":"薊色","tomato":"蕃茄紅","transparent":"透明","turquoise":"松石綠","violet":"紫羅蘭色","wheat":"小麥色","white":"白色","whitesmoke":"白煙色","yellow":"黃色","yellowgreen":"黃綠色","_localized":{}},"dijit/nls/loading":{"loadingState":"載入中...","errorState":"抱歉,發生錯誤","_localized":{}},"dijit/nls/common":{"buttonOk":"確定","buttonCancel":"取消","buttonSave":"儲存","itemClose":"關閉","_localized":{}},"dijit/form/nls/validate":{"invalidMessage":"輸入的值無效。","missingMessage":"必須提供此值。","rangeMessage":"此值超出範圍。","_localized":{}},"dijit/form/nls/ComboBox":{"previousMessage":"前一個選擇項","nextMessage":"其他選擇項","_localized":{}},"dojo/cldr/nls/number":{"scientificFormat":"#E0","currencySpacing-afterCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","infinity":"∞","superscriptingExponent":"×","list":";","percentSign":"%","minusSign":"-","currencySpacing-beforeCurrency-surroundingMatch":"[:digit:]","decimalFormat-short":"000兆","currencySpacing-afterCurrency-insertBetween":" ","nan":"非數值","plusSign":"+","currencySpacing-afterCurrency-surroundingMatch":"[:digit:]","currencySpacing-beforeCurrency-currencyMatch":"[[:^S:]&[:^Z:]]","currencyFormat":"¤#,##0.00;(¤#,##0.00)","perMille":"‰","approximatelySign":"~","group":",","percentFormat":"#,##0%","decimalFormat-long":"000兆","decimalFormat":"#,##0.###","currencyFormat-short":"¤000兆","timeSeparator":":","decimal":".","currencySpacing-beforeCurrency-insertBetween":" ","exponential":"E","$locale":"zh-hant-tw","_localized":{}}}); \ No newline at end of file
diff --git a/lib/dojo/number.js b/lib/dojo/number.js
index 2cb3bdd95..d09196bff 100644
--- a/lib/dojo/number.js
+++ b/lib/dojo/number.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/number",["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(_1,_2,_3,_4,_5){var _6={};_1.setObject("dojo.number",_6);_6.format=function(_7,_8){_8=_1.mixin({},_8||{});var _9=_2.normalizeLocale(_8.locale),_a=_2.getLocalization("dojo.cldr","number",_9);_8.customs=_a;var _b=_8.pattern||_a[(_8.type||"decimal")+"Format"];if(isNaN(_7)||Math.abs(_7)==Infinity){return null;}return _6._applyPattern(_7,_b,_8);};_6._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;_6._applyPattern=function(_c,_d,_e){_e=_e||{};var _f=_e.customs.group,_10=_e.customs.decimal,_11=_d.split(";"),_12=_11[0];_d=_11[(_c<0)?1:0]||("-"+_12);if(_d.indexOf("%")!=-1){_c*=100;}else{if(_d.indexOf("‰")!=-1){_c*=1000;}else{if(_d.indexOf("¤")!=-1){_f=_e.customs.currencyGroup||_f;_10=_e.customs.currencyDecimal||_10;_d=_d.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/,function(_13,_14,_15,_16){var _17=["symbol","currency","displayName"][_15.length-1],_18=_e[_17]||_e.currency||"";if(!_18){return "";}return _14+_18+_16;});}else{if(_d.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _19=_6._numberPatternRE;var _1a=_12.match(_19);if(!_1a){throw new Error("unable to find a number expression in pattern: "+_d);}if(_e.fractional===false){_e.places=0;}return _d.replace(_19,_6._formatAbsolute(_c,_1a[0],{decimal:_10,group:_f,places:_e.places,round:_e.round}));};_6.round=function(_1b,_1c,_1d){var _1e=10/(_1d||10);return (_1e*+_1b).toFixed(_1c)/_1e;};if((0.9).toFixed()==0){var _1f=_6.round;_6.round=function(v,p,m){var d=Math.pow(10,-p||0),a=Math.abs(v);if(!v||a>=d){d=0;}else{a/=d;if(a<0.5||a>=0.95){d=0;}}return _1f(v,p,m)+(v>0?d:-d);};}_6._formatAbsolute=function(_20,_21,_22){_22=_22||{};if(_22.places===true){_22.places=0;}if(_22.places===Infinity){_22.places=6;}var _23=_21.split("."),_24=typeof _22.places=="string"&&_22.places.indexOf(","),_25=_22.places;if(_24){_25=_22.places.substring(_24+1);}else{if(!(_25>=0)){_25=(_23[1]||[]).length;}}if(!(_22.round<0)){_20=_6.round(_20,_25,_22.round);}var _26=String(Math.abs(_20)).split("."),_27=_26[1]||"";if(_23[1]||_22.places){if(_24){_22.places=_22.places.substring(0,_24);}var pad=_22.places!==undefined?_22.places:(_23[1]&&_23[1].lastIndexOf("0")+1);if(pad>_27.length){_26[1]=_4.pad(_27,pad,"0",true);}if(_25<_27.length){_26[1]=_27.substr(0,_25);}}else{if(_26[1]){_26.pop();}}var _28=_23[0].replace(",","");pad=_28.indexOf("0");if(pad!=-1){pad=_28.length-pad;if(pad>_26[0].length){_26[0]=_4.pad(_26[0],pad);}if(_28.indexOf("#")==-1){_26[0]=_26[0].substr(_26[0].length-pad);}}var _29=_23[0].lastIndexOf(","),_2a,_2b;if(_29!=-1){_2a=_23[0].length-_29-1;var _2c=_23[0].substr(0,_29);_29=_2c.lastIndexOf(",");if(_29!=-1){_2b=_2c.length-_29-1;}}var _2d=[];for(var _2e=_26[0];_2e;){var off=_2e.length-_2a;_2d.push((off>0)?_2e.substr(off):_2e);_2e=(off>0)?_2e.slice(0,off):"";if(_2b){_2a=_2b;_2b=undefined;}}_26[0]=_2d.reverse().join(_22.group||",");return _26.join(_22.decimal||".");};_6.regexp=function(_2f){return _6._parseInfo(_2f).regexp;};_6._parseInfo=function(_30){_30=_30||{};var _31=_2.normalizeLocale(_30.locale),_32=_2.getLocalization("dojo.cldr","number",_31),_33=_30.pattern||_32[(_30.type||"decimal")+"Format"],_34=_32.group,_35=_32.decimal,_36=1;if(_33.indexOf("%")!=-1){_36/=100;}else{if(_33.indexOf("‰")!=-1){_36/=1000;}else{var _37=_33.indexOf("¤")!=-1;if(_37){_34=_32.currencyGroup||_34;_35=_32.currencyDecimal||_35;}}}var _38=_33.split(";");if(_38.length==1){_38.push("-"+_38[0]);}var re=_5.buildGroupRE(_38,function(_39){_39="(?:"+_5.escapeString(_39,".")+")";return _39.replace(_6._numberPatternRE,function(_3a){var _3b={signed:false,separator:_30.strict?_34:[_34,""],fractional:_30.fractional,decimal:_35,exponent:false},_3c=_3a.split("."),_3d=_30.places;if(_3c.length==1&&_36!=1){_3c[1]="###";}if(_3c.length==1||_3d===0){_3b.fractional=false;}else{if(_3d===undefined){_3d=_30.pattern?_3c[1].lastIndexOf("0")+1:Infinity;}if(_3d&&_30.fractional==undefined){_3b.fractional=true;}if(!_30.places&&(_3d<_3c[1].length)){_3d+=","+_3c[1].length;}_3b.places=_3d;}var _3e=_3c[0].split(",");if(_3e.length>1){_3b.groupSize=_3e.pop().length;if(_3e.length>1){_3b.groupSize2=_3e.pop().length;}}return "("+_6._realNumberRegexp(_3b)+")";});},true);if(_37){re=re.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(_3f,_40,_41,_42){var _43=["symbol","currency","displayName"][_41.length-1],_44=_5.escapeString(_30[_43]||_30.currency||"");if(!_44){return "";}_40=_40?"[\\s\\xa0]":"";_42=_42?"[\\s\\xa0]":"";if(!_30.strict){if(_40){_40+="*";}if(_42){_42+="*";}return "(?:"+_40+_44+_42+")?";}return _40+_44+_42;});}return {regexp:re.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:_34,decimal:_35,factor:_36};};_6.parse=function(_45,_46){var _47=_6._parseInfo(_46),_48=(new RegExp("^"+_47.regexp+"$")).exec(_45);if(!_48){return NaN;}var _49=_48[1];if(!_48[1]){if(!_48[2]){return NaN;}_49=_48[2];_47.factor*=-1;}_49=_49.replace(new RegExp("["+_47.group+"\\s\\xa0"+"]","g"),"").replace(_47.decimal,".");return _49*_47.factor;};_6._realNumberRegexp=function(_4a){_4a=_4a||{};if(!("places" in _4a)){_4a.places=Infinity;}if(typeof _4a.decimal!="string"){_4a.decimal=".";}if(!("fractional" in _4a)||/^0/.test(_4a.places)){_4a.fractional=[true,false];}if(!("exponent" in _4a)){_4a.exponent=[true,false];}if(!("eSigned" in _4a)){_4a.eSigned=[true,false];}var _4b=_6._integerRegexp(_4a),_4c=_5.buildGroupRE(_4a.fractional,function(q){var re="";if(q&&(_4a.places!==0)){re="\\"+_4a.decimal;if(_4a.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_4a.places+"}";}}return re;},true);var _4d=_5.buildGroupRE(_4a.exponent,function(q){if(q){return "([eE]"+_6._integerRegexp({signed:_4a.eSigned})+")";}return "";});var _4e=_4b+_4c;if(_4c){_4e="(?:(?:"+_4e+")|(?:"+_4c+"))";}return _4e+_4d;};_6._integerRegexp=function(_4f){_4f=_4f||{};if(!("signed" in _4f)){_4f.signed=[true,false];}if(!("separator" in _4f)){_4f.separator="";}else{if(!("groupSize" in _4f)){_4f.groupSize=3;}}var _50=_5.buildGroupRE(_4f.signed,function(q){return q?"[-+]":"";},true);var _51=_5.buildGroupRE(_4f.separator,function(sep){if(!sep){return "(?:\\d+)";}sep=_5.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}}var grp=_4f.groupSize,_52=_4f.groupSize2;if(_52){var _53="(?:0|[1-9]\\d{0,"+(_52-1)+"}(?:["+sep+"]\\d{"+_52+"})*["+sep+"]\\d{"+grp+"})";return ((grp-_52)>0)?"(?:"+_53+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_53;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _50+_51;};return _6;}); \ No newline at end of file
+define("dojo/number",["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(_1,_2,_3,_4,_5){var _6={};_1.setObject("dojo.number",_6);_6.format=function(_7,_8){_8=_1.mixin({},_8||{});var _9=_2.normalizeLocale(_8.locale),_a=_2.getLocalization("dojo.cldr","number",_9);_8.customs=_a;var _b=_8.pattern||_a[(_8.type||"decimal")+"Format"];if(isNaN(_7)||Math.abs(_7)==Infinity){return null;}return _6._applyPattern(_7,_b,_8);};_6._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;_6._applyPattern=function(_c,_d,_e){_e=_e||{};var _f=_e.customs.group,_10=_e.customs.decimal,_11=_d.split(";"),_12=_11[0];_d=_11[(_c<0)?1:0]||("-"+_12);if(_d.indexOf("%")!=-1){_c*=100;}else{if(_d.indexOf("‰")!=-1){_c*=1000;}else{if(_d.indexOf("¤")!=-1){_f=_e.customs.currencyGroup||_f;_10=_e.customs.currencyDecimal||_10;_d=_d.replace(/([\s\xa0\u202f]*)(\u00a4{1,3})([\s\xa0\u202f]*)/,function(_13,_14,_15,_16){var _17=["symbol","currency","displayName"][_15.length-1],_18=_e[_17]||_e.currency||"";if(!_18){return "";}return _14+_18+_16;});}else{if(_d.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _19=_6._numberPatternRE;var _1a=_12.match(_19);if(!_1a){throw new Error("unable to find a number expression in pattern: "+_d);}if(_e.fractional===false){_e.places=0;}return _d.replace(_19,_6._formatAbsolute(_c,_1a[0],{decimal:_10,group:_f,places:_e.places,round:_e.round}));};_6.round=function(_1b,_1c,_1d){var _1e=10/(_1d||10);return (_1e*+_1b).toFixed(_1c)/_1e;};if((0.9).toFixed()==0){var _1f=_6.round;_6.round=function(v,p,m){var d=Math.pow(10,-p||0),a=Math.abs(v);if(!v||a>=d){d=0;}else{a/=d;if(a<0.5||a>=0.95){d=0;}}return _1f(v,p,m)+(v>0?d:-d);};}_6._formatAbsolute=function(_20,_21,_22){_22=_22||{};if(_22.places===true){_22.places=0;}if(_22.places===Infinity){_22.places=6;}var _23=_21.split("."),_24=typeof _22.places=="string"&&_22.places.indexOf(","),_25=_22.places;if(_24){_25=_22.places.substring(_24+1);}else{if(!(_25>=0)){_25=(_23[1]||[]).length;}}if(!(_22.round<0)){_20=_6.round(_20,_25,_22.round);}var _26=String(Math.abs(_20)).split("."),_27=_26[1]||"";if(_23[1]||_22.places){if(_24){_22.places=_22.places.substring(0,_24);}var pad=_22.places!==undefined?_22.places:(_23[1]&&_23[1].lastIndexOf("0")+1);if(pad>_27.length){_26[1]=_4.pad(_27,pad,"0",true);}if(_25<_27.length){_26[1]=_27.substr(0,_25);}}else{if(_26[1]){_26.pop();}}var _28=_23[0].replace(",","");pad=_28.indexOf("0");if(pad!=-1){pad=_28.length-pad;if(pad>_26[0].length){_26[0]=_4.pad(_26[0],pad);}if(_28.indexOf("#")==-1){_26[0]=_26[0].substr(_26[0].length-pad);}}var _29=_23[0].lastIndexOf(","),_2a,_2b;if(_29!=-1){_2a=_23[0].length-_29-1;var _2c=_23[0].substr(0,_29);_29=_2c.lastIndexOf(",");if(_29!=-1){_2b=_2c.length-_29-1;}}var _2d=[];for(var _2e=_26[0];_2e;){var off=_2e.length-_2a;_2d.push((off>0)?_2e.substr(off):_2e);_2e=(off>0)?_2e.slice(0,off):"";if(_2b){_2a=_2b;_2b=undefined;}}_26[0]=_2d.reverse().join(_22.group||",");return _26.join(_22.decimal||".");};_6.regexp=function(_2f){return _6._parseInfo(_2f).regexp;};_6._parseInfo=function(_30){_30=_30||{};var _31=_2.normalizeLocale(_30.locale),_32=_2.getLocalization("dojo.cldr","number",_31),_33=_30.pattern||_32[(_30.type||"decimal")+"Format"],_34=_32.group,_35=_32.decimal,_36=1;if(_33.indexOf("%")!=-1){_36/=100;}else{if(_33.indexOf("‰")!=-1){_36/=1000;}else{var _37=_33.indexOf("¤")!=-1;if(_37){_34=_32.currencyGroup||_34;_35=_32.currencyDecimal||_35;}}}var _38=_33.split(";");if(_38.length==1){_38.push("-"+_38[0]);}var re=_5.buildGroupRE(_38,function(_39){_39="(?:"+_5.escapeString(_39,".")+")";return _39.replace(_6._numberPatternRE,function(_3a){var _3b={signed:false,separator:_30.strict?_34:[_34,""],fractional:_30.fractional,decimal:_35,exponent:false},_3c=_3a.split("."),_3d=_30.places;if(_3c.length==1&&_36!=1){_3c[1]="###";}if(_3c.length==1||_3d===0){_3b.fractional=false;}else{if(_3d===undefined){_3d=_30.pattern?_3c[1].lastIndexOf("0")+1:Infinity;}if(_3d&&_30.fractional==undefined){_3b.fractional=true;}if(!_30.places&&(_3d<_3c[1].length)){_3d+=","+_3c[1].length;}_3b.places=_3d;}var _3e=_3c[0].split(",");if(_3e.length>1){_3b.groupSize=_3e.pop().length;if(_3e.length>1){_3b.groupSize2=_3e.pop().length;}}return "("+_6._realNumberRegexp(_3b)+")";});},true);if(_37){re=re.replace(/([\s\xa0\u202f]*)(\u00a4{1,3})([\s\xa0\u202f]*)/g,function(_3f,_40,_41,_42){var _43=["symbol","currency","displayName"][_41.length-1],_44=_5.escapeString(_30[_43]||_30.currency||"");if(!_44){return "";}_40=_40?"[\\s\\xa0\\u202f]":"";_42=_42?"[\\s\\xa0\\u202f]":"";if(!_30.strict){if(_40){_40+="*";}if(_42){_42+="*";}return "(?:"+_40+_44+_42+")?";}return _40+_44+_42;});}return {regexp:re.replace(/[\xa0\u202f ]/g,"[\\s\\xa0\\u202f]"),group:_34,decimal:_35,factor:_36};};_6.parse=function(_45,_46){var _47=_6._parseInfo(_46),_48=(new RegExp("^"+_47.regexp+"$")).exec(_45);if(!_48){return NaN;}var _49=_48[1];if(!_48[1]){if(!_48[2]){return NaN;}_49=_48[2];_47.factor*=-1;}_49=_49.replace(new RegExp("["+_47.group+"\\s\\xa0\\u202f"+"]","g"),"").replace(_47.decimal,".");return _49*_47.factor;};_6._realNumberRegexp=function(_4a){_4a=_4a||{};if(!("places" in _4a)){_4a.places=Infinity;}if(typeof _4a.decimal!="string"){_4a.decimal=".";}if(!("fractional" in _4a)||/^0/.test(_4a.places)){_4a.fractional=[true,false];}if(!("exponent" in _4a)){_4a.exponent=[true,false];}if(!("eSigned" in _4a)){_4a.eSigned=[true,false];}var _4b=_6._integerRegexp(_4a),_4c=_5.buildGroupRE(_4a.fractional,function(q){var re="";if(q&&(_4a.places!==0)){re="\\"+_4a.decimal;if(_4a.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_4a.places+"}";}}return re;},true);var _4d=_5.buildGroupRE(_4a.exponent,function(q){if(q){return "([eE]"+_6._integerRegexp({signed:_4a.eSigned})+")";}return "";});var _4e=_4b+_4c;if(_4c){_4e="(?:(?:"+_4e+")|(?:"+_4c+"))";}return _4e+_4d;};_6._integerRegexp=function(_4f){_4f=_4f||{};if(!("signed" in _4f)){_4f.signed=[true,false];}if(!("separator" in _4f)){_4f.separator="";}else{if(!("groupSize" in _4f)){_4f.groupSize=3;}}var _50=_5.buildGroupRE(_4f.signed,function(q){return q?"[-+]":"";},true);var _51=_5.buildGroupRE(_4f.separator,function(sep){if(!sep){return "(?:\\d+)";}sep=_5.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}else{if(sep==" "){sep="\\s\\u202f";}}}var grp=_4f.groupSize,_52=_4f.groupSize2;if(_52){var _53="(?:0|[1-9]\\d{0,"+(_52-1)+"}(?:["+sep+"]\\d{"+_52+"})*["+sep+"]\\d{"+grp+"})";return ((grp-_52)>0)?"(?:"+_53+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_53;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _50+_51;};return _6;}); \ No newline at end of file
diff --git a/lib/dojo/package-lock.json b/lib/dojo/package-lock.json
new file mode 100644
index 000000000..417e80a6b
--- /dev/null
+++ b/lib/dojo/package-lock.json
@@ -0,0 +1,1086 @@
+{
+ "name": "dojo",
+ "version": "1.17.0-pre",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+ "dev": true
+ },
+ "adm-zip": {
+ "version": "0.4.14",
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz",
+ "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==",
+ "dev": true
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
+ "dev": true
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "async": {
+ "version": "0.1.22",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
+ "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.0"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "charm": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/charm/-/charm-0.2.0.tgz",
+ "integrity": "sha1-us0G2HF3WTYvemYqHpZ691N/2os=",
+ "dev": true
+ },
+ "colors": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz",
+ "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=",
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "decompress": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/decompress/-/decompress-0.2.3.tgz",
+ "integrity": "sha1-rUcaD8UbcZO3L2DJ4EDOGnpLn8w=",
+ "dev": true,
+ "requires": {
+ "adm-zip": "^0.4.3",
+ "extname": "^0.1.1",
+ "get-stdin": "^0.1.0",
+ "map-key": "^0.1.1",
+ "mkdirp": "^0.3.5",
+ "nopt": "^2.2.0",
+ "rimraf": "^2.2.2",
+ "stream-combiner": "^0.0.4",
+ "tar": "^0.1.18",
+ "tempfile": "^0.1.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "mkdirp": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz",
+ "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.1.tgz",
+ "integrity": "sha512-7Et6r6XfNW61CPPCIYfm1YPGSmh6+CliYeL4km7GWJcpX5LTAflGF8drLLR+MZX+2P3NZfAfSduutBbSWqER4g==",
+ "dev": true,
+ "requires": {
+ "es-abstract": "^1.16.3",
+ "es-get-iterator": "^1.0.1",
+ "is-arguments": "^1.0.4",
+ "is-date-object": "^1.0.1",
+ "is-regex": "^1.0.4",
+ "isarray": "^2.0.5",
+ "object-is": "^1.0.1",
+ "object-keys": "^1.1.1",
+ "regexp.prototype.flags": "^1.2.0",
+ "side-channel": "^1.0.1",
+ "which-boxed-primitive": "^1.0.1",
+ "which-collection": "^1.0.0"
+ }
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "diff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-1.1.0.tgz",
+ "integrity": "sha1-eYpJOBqkZBUem08Ob/Kwmooa0j8=",
+ "dev": true
+ },
+ "digdug": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/digdug/-/digdug-1.2.1.tgz",
+ "integrity": "sha1-n40FC9dy5A1W7Oz4pJopo4v42Ag=",
+ "dev": true,
+ "requires": {
+ "decompress": "0.2.3",
+ "dojo": "2.0.0-alpha4"
+ },
+ "dependencies": {
+ "dojo": {
+ "version": "2.0.0-alpha4",
+ "resolved": "https://registry.npmjs.org/dojo/-/dojo-2.0.0-alpha4.tgz",
+ "integrity": "sha1-OUTRjZ9pS/hOZBqtTH1PNDfLBFk=",
+ "dev": true
+ }
+ }
+ },
+ "dojo": {
+ "version": "1.17.0-pre",
+ "resolved": "https://registry.npmjs.org/dojo/-/dojo-1.17.0-pre.tgz",
+ "integrity": "sha512-AAyKHIthBYMQbOE4SdXxXSBKt7DE4Y7GFCAjbKwDwetSFGw7G+9Ng8rC29K2p5w9oOjBdMprQcPmxgLktsiB3A==",
+ "dev": true
+ },
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "dev": true
+ },
+ "es-abstract": {
+ "version": "1.17.4",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz",
+ "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1",
+ "is-callable": "^1.1.5",
+ "is-regex": "^1.0.5",
+ "object-inspect": "^1.7.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.0",
+ "string.prototype.trimleft": "^2.1.1",
+ "string.prototype.trimright": "^2.1.1"
+ }
+ },
+ "es-get-iterator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz",
+ "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==",
+ "dev": true,
+ "requires": {
+ "es-abstract": "^1.17.4",
+ "has-symbols": "^1.0.1",
+ "is-arguments": "^1.0.4",
+ "is-map": "^2.0.1",
+ "is-set": "^2.0.1",
+ "is-string": "^1.0.5",
+ "isarray": "^2.0.5"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "escodegen": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.3.3.tgz",
+ "integrity": "sha1-8CQBb1qI4Eb9EgBQVek5gC5sXyM=",
+ "dev": true,
+ "requires": {
+ "esprima": "~1.1.1",
+ "estraverse": "~1.5.0",
+ "esutils": "~1.0.0",
+ "source-map": "~0.1.33"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.1.1.tgz",
+ "integrity": "sha1-W28VR/TRAuZw4UDFCb5ncdautUk=",
+ "dev": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz",
+ "integrity": "sha1-CZNQL+r2aBODJXVvMPmlH+7sEek=",
+ "dev": true
+ },
+ "estraverse": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz",
+ "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz",
+ "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=",
+ "dev": true
+ },
+ "ext-list": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-0.2.0.tgz",
+ "integrity": "sha1-NhTV8pn0pZKolinn3oJfF3TRmr0=",
+ "dev": true,
+ "requires": {
+ "got": "^0.2.0"
+ }
+ },
+ "extname": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/extname/-/extname-0.1.5.tgz",
+ "integrity": "sha1-PLs4jQ2sYIbFMTPN+hCAdNinVS4=",
+ "dev": true,
+ "requires": {
+ "ext-list": "^0.2.0",
+ "map-key": "^0.1.1",
+ "underscore.string": "~2.3.3"
+ }
+ },
+ "fileset": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/fileset/-/fileset-0.1.8.tgz",
+ "integrity": "sha1-UGuRqTluqn4y+0KoQHfHoMc2t0E=",
+ "dev": true,
+ "requires": {
+ "glob": "3.x",
+ "minimatch": "0.x"
+ }
+ },
+ "formatio": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz",
+ "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=",
+ "dev": true,
+ "requires": {
+ "samsam": "~1.1"
+ }
+ },
+ "formidable": {
+ "version": "1.0.17",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.17.tgz",
+ "integrity": "sha1-71SRSQ+UM7cF+qdyScmQKa40hVk=",
+ "dev": true
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fstream": {
+ "version": "0.1.31",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz",
+ "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "~3.0.2",
+ "inherits": "~2.0.0",
+ "mkdirp": "0.5",
+ "rimraf": "2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
+ "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "get-stdin": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-0.1.0.tgz",
+ "integrity": "sha1-WZivJKr8gC0VyCxoVlfuuLENSpE=",
+ "dev": true
+ },
+ "glob": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.7.tgz",
+ "integrity": "sha1-J185oO7oBWlHkJJPNurDjh222AI=",
+ "dev": true,
+ "requires": {
+ "inherits": "2",
+ "minimatch": "~0.2.11"
+ }
+ },
+ "got": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-0.2.0.tgz",
+ "integrity": "sha1-0Awkiyn9zK6pQN+coJlev/MbUaU=",
+ "dev": true,
+ "requires": {
+ "object-assign": "^0.3.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "3.0.12",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz",
+ "integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==",
+ "dev": true,
+ "requires": {
+ "natives": "^1.1.3"
+ }
+ },
+ "handlebars": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-1.3.0.tgz",
+ "integrity": "sha1-npsTCpPjiUkTItl1zz7BgYw3zjQ=",
+ "dev": true,
+ "requires": {
+ "optimist": "~0.3",
+ "uglify-js": "~2.3"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-symbols": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
+ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+ "dev": true
+ },
+ "http-proxy": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-0.10.3.tgz",
+ "integrity": "sha1-csqdUDp14GRlAITFjKEbguSwGW0=",
+ "dev": true,
+ "requires": {
+ "colors": "0.x.x",
+ "optimist": "0.3.x",
+ "pkginfo": "0.2.x",
+ "utile": "~0.1.7"
+ }
+ },
+ "i": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz",
+ "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "intern-geezer": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/intern-geezer/-/intern-geezer-2.2.2.tgz",
+ "integrity": "sha1-u+Hx7DAanBNpN7KqbbVB2IygMhQ=",
+ "dev": true,
+ "requires": {
+ "charm": "0.2.0",
+ "diff": "1.1.0",
+ "digdug": "1.2.1",
+ "dojo": "1.9.4",
+ "istanbul": "0.2.16",
+ "leadfoot": "1.2.1",
+ "source-map": "0.1.33"
+ },
+ "dependencies": {
+ "dojo": {
+ "version": "1.9.4",
+ "resolved": "https://registry.npmjs.org/dojo/-/dojo-1.9.4.tgz",
+ "integrity": "sha1-cq/VxZUgbQjv8tsnk2/g9FQ/ebM=",
+ "dev": true
+ }
+ }
+ },
+ "is-arguments": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
+ "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
+ "dev": true
+ },
+ "is-bigint": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.0.tgz",
+ "integrity": "sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g==",
+ "dev": true
+ },
+ "is-boolean-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.1.tgz",
+ "integrity": "sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==",
+ "dev": true
+ },
+ "is-callable": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
+ "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
+ "dev": true
+ },
+ "is-date-object": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
+ "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
+ "dev": true
+ },
+ "is-generator-function": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz",
+ "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==",
+ "dev": true
+ },
+ "is-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz",
+ "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==",
+ "dev": true
+ },
+ "is-number-object": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz",
+ "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==",
+ "dev": true
+ },
+ "is-regex": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
+ "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-set": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz",
+ "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==",
+ "dev": true
+ },
+ "is-string": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
+ "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
+ "dev": true
+ },
+ "is-symbol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "is-weakmap": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
+ "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
+ "dev": true
+ },
+ "is-weakset": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz",
+ "integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw==",
+ "dev": true
+ },
+ "isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ },
+ "istanbul": {
+ "version": "0.2.16",
+ "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.2.16.tgz",
+ "integrity": "sha1-hwVFoNT0tM4WEDnp6AWpjCxwC9k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1.0.x",
+ "async": "0.9.x",
+ "escodegen": "1.3.x",
+ "esprima": "1.2.x",
+ "fileset": "0.1.x",
+ "handlebars": "1.3.x",
+ "js-yaml": "3.x",
+ "mkdirp": "0.5.x",
+ "nopt": "3.x",
+ "resolve": "0.7.x",
+ "which": "1.0.x",
+ "wordwrap": "0.0.x"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
+ "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
+ "dev": true
+ },
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "dev": true
+ },
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
+ "integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ }
+ }
+ },
+ "js-yaml": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ }
+ }
+ },
+ "jsgi-node": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/jsgi-node/-/jsgi-node-0.3.1.tgz",
+ "integrity": "sha1-hTK4huuB7MLjDqkr6BaMOE2bOW4=",
+ "dev": true
+ },
+ "leadfoot": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/leadfoot/-/leadfoot-1.2.1.tgz",
+ "integrity": "sha1-HU9UeNlIi2WDKPPp/B7YrnF2yYs=",
+ "dev": true,
+ "requires": {
+ "dojo": "2.0.0-alpha4"
+ },
+ "dependencies": {
+ "dojo": {
+ "version": "2.0.0-alpha4",
+ "resolved": "https://registry.npmjs.org/dojo/-/dojo-2.0.0-alpha4.tgz",
+ "integrity": "sha1-OUTRjZ9pS/hOZBqtTH1PNDfLBFk=",
+ "dev": true
+ }
+ }
+ },
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+ "dev": true
+ },
+ "lolex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.1.0.tgz",
+ "integrity": "sha1-Xbu8hQOV51I8dLNYb3+9JibSWxs=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+ "dev": true
+ },
+ "map-key": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/map-key/-/map-key-0.1.5.tgz",
+ "integrity": "sha1-ivsTTyoyGk3im+/LWqujNIs3vfw=",
+ "dev": true,
+ "requires": {
+ "lodash": "^2.4.1",
+ "underscore.string": "^2.3.3"
+ }
+ },
+ "minimatch": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
+ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.4.2.tgz",
+ "integrity": "sha1-QnyMGOzjmLky9vZm9OHlt3QOeMg=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "natives": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz",
+ "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==",
+ "dev": true
+ },
+ "ncp": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.2.7.tgz",
+ "integrity": "sha1-RvrCt92iVgpMt+YoZ3vV9k6sW+E=",
+ "dev": true
+ },
+ "nopt": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.2.1.tgz",
+ "integrity": "sha1-KqCbfRdoSHs7ianFqlIzW/8Lrqc=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "object-assign": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-0.3.1.tgz",
+ "integrity": "sha1-Bg4qKifXwNd+x3t48Rqkf9iACNI=",
+ "dev": true
+ },
+ "object-inspect": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
+ "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
+ "dev": true
+ },
+ "object-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz",
+ "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==",
+ "dev": true
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ }
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "optimist": {
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz",
+ "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=",
+ "dev": true,
+ "requires": {
+ "wordwrap": "~0.0.2"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "pkginfo": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.2.3.tgz",
+ "integrity": "sha1-cjnEKl72wwuPMoQ52bn/cQQkkPg=",
+ "dev": true
+ },
+ "regexp.prototype.flags": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
+ "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.0-next.1"
+ }
+ },
+ "resolve": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.7.4.tgz",
+ "integrity": "sha1-OVqe+ehz+/4SvRRAi9kbuTYAPWk=",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-1.0.9.tgz",
+ "integrity": "sha1-vkgB/3bCum8cUMeOlwDrHSHyOfE=",
+ "dev": true
+ },
+ "safe-buffer": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
+ "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
+ "dev": true
+ },
+ "samsam": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.3.tgz",
+ "integrity": "sha1-n1CHQZtNCR8jJXHn+lLpCw9VJiE=",
+ "dev": true
+ },
+ "side-channel": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz",
+ "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==",
+ "dev": true,
+ "requires": {
+ "es-abstract": "^1.17.0-next.1",
+ "object-inspect": "^1.7.0"
+ }
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+ "dev": true
+ },
+ "sinon": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/sinon/-/sinon-1.12.2.tgz",
+ "integrity": "sha1-3Yk9H5O/plKufCoIxuqkKJhFLJQ=",
+ "dev": true,
+ "requires": {
+ "formatio": "1.1.1",
+ "lolex": "1.1.0",
+ "util": ">=0.10.3 <1"
+ }
+ },
+ "source-map": {
+ "version": "0.1.33",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.33.tgz",
+ "integrity": "sha1-xlkpenOvGMBzsKoufMkeMWtcVww=",
+ "dev": true,
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
+ "stream-combiner": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
+ "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
+ "dev": true,
+ "requires": {
+ "duplexer": "~0.1.1"
+ }
+ },
+ "string.prototype.trimleft": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz",
+ "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "function-bind": "^1.1.1"
+ }
+ },
+ "string.prototype.trimright": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz",
+ "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "function-bind": "^1.1.1"
+ }
+ },
+ "tar": {
+ "version": "0.1.20",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz",
+ "integrity": "sha1-QpQLrltfIsdEg2mRJvnz8nRJyxM=",
+ "dev": true,
+ "requires": {
+ "block-stream": "*",
+ "fstream": "~0.1.28",
+ "inherits": "2"
+ }
+ },
+ "tempfile": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-0.1.3.tgz",
+ "integrity": "sha1-fWtxAEcznTn4RzJ6BW2t8YMQMBA=",
+ "dev": true,
+ "requires": {
+ "uuid": "~1.4.0"
+ }
+ },
+ "uglify-js": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz",
+ "integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "async": "~0.2.6",
+ "optimist": "~0.3.5",
+ "source-map": "~0.1.7"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "underscore.string": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
+ "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.12.2",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.2.tgz",
+ "integrity": "sha512-XE+MkWQvglYa+IOfBt5UFG93EmncEMP23UqpgDvVZVFBPxwmkK10QRp6pgU4xICPnWRf/t0zPv4noYSUq9gqUQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "utile": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/utile/-/utile-0.1.7.tgz",
+ "integrity": "sha1-VdsYDVRHUzn9bdni0UpMC1JiS2k=",
+ "dev": true,
+ "requires": {
+ "async": "0.1.x",
+ "deep-equal": "*",
+ "i": "0.3.x",
+ "mkdirp": "0.x.x",
+ "ncp": "0.2.x",
+ "rimraf": "1.x.x"
+ }
+ },
+ "uuid": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-1.4.2.tgz",
+ "integrity": "sha1-RTAZ9oaWam34PNxSROfJkOzDMvw=",
+ "dev": true
+ },
+ "which": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.0.9.tgz",
+ "integrity": "sha1-RgwdoPgQED0DIam2M6+eV15kSG8=",
+ "dev": true
+ },
+ "which-boxed-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz",
+ "integrity": "sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ==",
+ "dev": true,
+ "requires": {
+ "is-bigint": "^1.0.0",
+ "is-boolean-object": "^1.0.0",
+ "is-number-object": "^1.0.3",
+ "is-string": "^1.0.4",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "which-collection": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
+ "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+ "dev": true,
+ "requires": {
+ "is-map": "^2.0.1",
+ "is-set": "^2.0.1",
+ "is-weakmap": "^2.0.1",
+ "is-weakset": "^2.0.1"
+ }
+ },
+ "wordwrap": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
+ "dev": true
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ }
+ }
+}
diff --git a/lib/dojo/package.json b/lib/dojo/package.json
index 310076180..410e6ecf3 100644
--- a/lib/dojo/package.json
+++ b/lib/dojo/package.json
@@ -1,6 +1,6 @@
{
"name": "dojo",
- "version": "1.14.2",
+ "version": "1.16.4",
"directories": {
"lib": "."
},
@@ -11,7 +11,7 @@
"jsgi-node": "0.3.1",
"formidable": "1.0.17",
"sinon": "1.12.2",
- "dojo": "1.14.2"
+ "dojo": "1.16.4"
},
"main": "main",
"scripts": {
diff --git a/lib/dojo/promise/Promise.js b/lib/dojo/promise/Promise.js
index 7b62cdd43..322987732 100644
--- a/lib/dojo/promise/Promise.js
+++ b/lib/dojo/promise/Promise.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/promise/Promise",["../_base/lang"],function(_1){"use strict";function _2(){throw new TypeError("abstract");};return _1.extend(function Promise(){},{then:function(_3,_4,_5){_2();},cancel:function(_6,_7){_2();},isResolved:function(){_2();},isRejected:function(){_2();},isFulfilled:function(){_2();},isCanceled:function(){_2();},always:function(_8){return this.then(_8,_8);},"catch":function(_9){return this.then(null,_9);},otherwise:function(_a){return this.then(null,_a);},trace:function(){return this;},traceRejected:function(){return this;},toString:function(){return "[object Promise]";}});}); \ No newline at end of file
+define("dojo/promise/Promise",["../_base/lang"],function(_1){"use strict";function _2(){throw new TypeError("abstract");};return _1.extend(function Promise(){},{then:function(_3,_4,_5){_2();},cancel:function(_6,_7){_2();},isResolved:function(){_2();},isRejected:function(){_2();},isFulfilled:function(){_2();},isCanceled:function(){_2();},"finally":function(_8){return this.then(function(_9){var _a=_8();if(_a&&typeof _a.then==="function"){return _a.then(function(){return _9;});}return _9;},function(_b){var _c=_8();if(_c&&typeof _c.then==="function"){return _c.then(function(){throw _b;});}throw _b;});},always:function(_d){return this.then(_d,_d);},"catch":function(_e){return this.then(null,_e);},otherwise:function(_f){return this.then(null,_f);},trace:function(){return this;},traceRejected:function(){return this;},toString:function(){return "[object Promise]";}});}); \ No newline at end of file
diff --git a/lib/dojo/request/registry.js b/lib/dojo/request/registry.js
index de333df90..5c25a25d4 100644
--- a/lib/dojo/request/registry.js
+++ b/lib/dojo/request/registry.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/request/registry",["require","../_base/array","./default!platform","./util"],function(_1,_2,_3,_4){var _5=[];function _6(_7,_8){var _9=_5.slice(0),i=0,_a;while(_a=_9[i++]){if(_a(_7,_8)){return _a.request.call(null,_7,_8);}}return _3.apply(null,arguments);};function _b(_c,_d){var _e;if(_d){if(_c.test){_e=function(_f){return _c.test(_f);};}else{if(_c.apply&&_c.call){_e=function(){return _c.apply(null,arguments);};}else{_e=function(url){return url===_c;};}}_e.request=_d;}else{_e=function(){return true;};_e.request=_c;}return _e;};_6.register=function(url,_10,_11){var _12=_b(url,_10);_5[(_11?"unshift":"push")](_12);return {remove:function(){var idx;if(~(idx=_2.indexOf(_5,_12))){_5.splice(idx,1);}}};};_6.load=function(id,_13,_14,_15){if(id){_1([id],function(_16){_3=_16;_14(_6);});}else{_14(_6);}};_4.addCommonMethods(_6);return _6;}); \ No newline at end of file
+define("dojo/request/registry",["require","../_base/array","./default!platform","./util"],function(_1,_2,_3,_4){var _5=[];function _6(_7,_8){var _9=_5.slice(0),i=0,_a;while(_a=_9[i++]){if(_a(_7,_8)){return _a.request.apply(null,arguments);}}return _3.apply(null,arguments);};function _b(_c,_d){var _e;if(_d){if(_c.test){_e=function(_f){return _c.test(_f);};}else{if(_c.apply&&_c.call){_e=function(){return _c.apply(null,arguments);};}else{_e=function(url){return url===_c;};}}_e.request=_d;}else{_e=function(){return true;};_e.request=_c;}return _e;};_6.register=function(url,_10,_11){var _12=_b(url,_10);_5[(_11?"unshift":"push")](_12);return {remove:function(){var idx;if(~(idx=_2.indexOf(_5,_12))){_5.splice(idx,1);}}};};_6.load=function(id,_13,_14,_15){if(id){_1([id],function(_16){_3=_16;_14(_6);});}else{_14(_6);}};_4.addCommonMethods(_6);return _6;}); \ No newline at end of file
diff --git a/lib/dojo/request/util.js b/lib/dojo/request/util.js
index 763e7d374..a9987d929 100644
--- a/lib/dojo/request/util.js
+++ b/lib/dojo/request/util.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/request/util",["exports","../errors/RequestError","../errors/CancelError","../Deferred","../io-query","../_base/array","../_base/lang","../promise/Promise","../has"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9){_1.deepCopy=function(_a,_b){for(var _c in _b){var _d=_a[_c],_e=_b[_c];if(_d!==_e){if(_e&&typeof _e==="object"&&!(_9("native-formdata")&&_e instanceof FormData)){if(Object.prototype.toString.call(_e)==="[object Date]"){_a[_c]=new Date(_e);}else{if(_7.isArray(_e)){_a[_c]=_1.deepCopyArray(_e);}else{if(_d&&typeof _d==="object"){_1.deepCopy(_d,_e);}else{_a[_c]=_1.deepCopy({},_e);}}}}else{_a[_c]=_e;}}}return _a;};_1.deepCopyArray=function(_f){var _10=[];_f.forEach(function(_11){if(typeof _11==="object"){_10.push(_1.deepCopy({},_11));}else{_10.push(_11);}});return _10;};_1.deepCreate=function deepCreate(_12,_13){_13=_13||{};var _14=_7.delegate(_12),_15,_16;for(_15 in _12){_16=_12[_15];if(_16&&typeof _16==="object"){_14[_15]=_1.deepCreate(_16,_13[_15]);}}return _1.deepCopy(_14,_13);};var _17=Object.freeze||function(obj){return obj;};function _18(_19){return _17(_19);};function _1a(_1b){return _1b.data!==undefined?_1b.data:_1b.text;};_1.deferred=function deferred(_1c,_1d,_1e,_1f,_20,_21){var def=new _4(function(_22){_1d&&_1d(def,_1c);if(!_22||!(_22 instanceof _2)&&!(_22 instanceof _3)){return new _3("Request canceled",_1c);}return _22;});def.response=_1c;def.isValid=_1e;def.isReady=_1f;def.handleResponse=_20;function _23(_24){_24.response=_1c;throw _24;};var _25=def.then(_18).otherwise(_23);if(_1.notify){_25.then(_7.hitch(_1.notify,"emit","load"),_7.hitch(_1.notify,"emit","error"));}var _26=_25.then(_1a);var _27=new _8();for(var _28 in _26){if(_26.hasOwnProperty(_28)){_27[_28]=_26[_28];}}_27.response=_25;_17(_27);if(_21){def.then(function(_29){_21.call(def,_29);},function(_2a){_21.call(def,_1c,_2a);});}def.promise=_27;def.then=_27.then;return def;};_1.addCommonMethods=function addCommonMethods(_2b,_2c){_6.forEach(_2c||["GET","POST","PUT","DELETE"],function(_2d){_2b[(_2d==="DELETE"?"DEL":_2d).toLowerCase()]=function(url,_2e){_2e=_7.delegate(_2e||{});_2e.method=_2d;return _2b(url,_2e);};});};_1.parseArgs=function parseArgs(url,_2f,_30){var _31=_2f.data,_32=_2f.query;if(_31&&!_30){if(typeof _31==="object"&&(!(_9("native-xhr2"))||!(_31 instanceof ArrayBuffer||_31 instanceof Blob))){_2f.data=_5.objectToQuery(_31);}}if(_32){if(typeof _32==="object"){_32=_5.objectToQuery(_32);}if(_2f.preventCache){_32+=(_32?"&":"")+"request.preventCache="+(+(new Date));}}else{if(_2f.preventCache){_32="request.preventCache="+(+(new Date));}}if(url&&_32){url+=(~url.indexOf("?")?"&":"?")+_32;}return {url:url,options:_2f,getHeader:function(_33){return null;}};};_1.checkStatus=function(_34){_34=_34||0;return (_34>=200&&_34<300)||_34===304||_34===1223||!_34;};}); \ No newline at end of file
+define("dojo/request/util",["exports","../errors/RequestError","../errors/CancelError","../Deferred","../io-query","../_base/array","../_base/lang","../promise/Promise","../has"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9){function _a(_b){return _9("native-arraybuffer")&&_b instanceof ArrayBuffer;};function _c(_d){return _9("native-blob")&&_d instanceof Blob;};function _e(_f){if(typeof Element!=="undefined"){return _f instanceof Element;}return _f.nodeType===1;};function _10(_11){return _9("native-formdata")&&_11 instanceof FormData;};function _12(_13){return _13&&typeof _13==="object"&&!_10(_13)&&!_e(_13)&&!_c(_13)&&!_a(_13);};_1.deepCopy=function(_14,_15){for(var _16 in _15){var _17=_14[_16],_18=_15[_16];if(_16!=="__proto__"&&_17!==_18){if(_12(_18)){if(Object.prototype.toString.call(_18)==="[object Date]"){_14[_16]=new Date(_18);}else{if(_7.isArray(_18)){_14[_16]=_1.deepCopyArray(_18);}else{if(_17&&typeof _17==="object"){_1.deepCopy(_17,_18);}else{_14[_16]=_1.deepCopy({},_18);}}}}else{_14[_16]=_18;}}}return _14;};_1.deepCopyArray=function(_19){var _1a=[];for(var i=0,l=_19.length;i<l;i++){var _1b=_19[i];if(typeof _1b==="object"){_1a.push(_1.deepCopy({},_1b));}else{_1a.push(_1b);}}return _1a;};_1.deepCreate=function deepCreate(_1c,_1d){_1d=_1d||{};var _1e=_7.delegate(_1c),_1f,_20;for(_1f in _1c){_20=_1c[_1f];if(_20&&typeof _20==="object"){_1e[_1f]=_1.deepCreate(_20,_1d[_1f]);}}return _1.deepCopy(_1e,_1d);};var _21=Object.freeze||function(obj){return obj;};function _22(_23){return _21(_23);};function _24(_25){return _25.data!==undefined?_25.data:_25.text;};_1.deferred=function deferred(_26,_27,_28,_29,_2a,_2b){var def=new _4(function(_2c){_27&&_27(def,_26);if(!_2c||!(_2c instanceof _2)&&!(_2c instanceof _3)){return new _3("Request canceled",_26);}return _2c;});def.response=_26;def.isValid=_28;def.isReady=_29;def.handleResponse=_2a;function _2d(_2e){_2e.response=_26;throw _2e;};var _2f=def.then(_22).otherwise(_2d);if(_1.notify){_2f.then(_7.hitch(_1.notify,"emit","load"),_7.hitch(_1.notify,"emit","error"));}var _30=_2f.then(_24);var _31=new _8();for(var _32 in _30){if(_30.hasOwnProperty(_32)){_31[_32]=_30[_32];}}_31.response=_2f;_21(_31);if(_2b){def.then(function(_33){_2b.call(def,_33);},function(_34){_2b.call(def,_26,_34);});}def.promise=_31;def.then=_31.then;return def;};_1.addCommonMethods=function addCommonMethods(_35,_36){_6.forEach(_36||["GET","POST","PUT","DELETE"],function(_37){_35[(_37==="DELETE"?"DEL":_37).toLowerCase()]=function(url,_38){_38=_7.delegate(_38||{});_38.method=_37;return _35(url,_38);};});};_1.parseArgs=function parseArgs(url,_39,_3a){var _3b=_39.data,_3c=_39.query;if(_3b&&!_3a){if(typeof _3b==="object"&&(!(_9("native-xhr2"))||!(_a(_3b)||_c(_3b)))){_39.data=_5.objectToQuery(_3b);}}if(_3c){if(typeof _3c==="object"){_3c=_5.objectToQuery(_3c);}if(_39.preventCache){_3c+=(_3c?"&":"")+"request.preventCache="+(+(new Date));}}else{if(_39.preventCache){_3c="request.preventCache="+(+(new Date));}}if(url&&_3c){url+=(~url.indexOf("?")?"&":"?")+_3c;}return {url:url,options:_39,getHeader:function(_3d){return null;}};};_1.checkStatus=function(_3e){_3e=_3e||0;return (_3e>=200&&_3e<300)||_3e===304||_3e===1223||!_3e;};}); \ No newline at end of file
diff --git a/lib/dojo/request/xhr.js b/lib/dojo/request/xhr.js
index dc9570f4c..aa7a66daa 100644
--- a/lib/dojo/request/xhr.js
+++ b/lib/dojo/request/xhr.js
@@ -5,4 +5,4 @@
*/
//>>built
-define("dojo/request/xhr",["../errors/RequestError","./watch","./handlers","./util","../has"],function(_1,_2,_3,_4,_5){_5.add("native-xhr",function(){return typeof XMLHttpRequest!=="undefined";});_5.add("dojo-force-activex-xhr",function(){return _5("activex")&&window.location.protocol==="file:";});_5.add("native-xhr2",function(){if(!_5("native-xhr")||_5("dojo-force-activex-xhr")){return;}var x=new XMLHttpRequest();return typeof x["addEventListener"]!=="undefined"&&(typeof opera==="undefined"||typeof x["upload"]!=="undefined");});_5.add("native-formdata",function(){return typeof FormData!=="undefined";});_5.add("native-response-type",function(){return _5("native-xhr")&&typeof new XMLHttpRequest().responseType!=="undefined";});_5.add("native-xhr2-blob",function(){if(!_5("native-response-type")){return;}var x=new XMLHttpRequest();x.open("GET","https://dojotoolkit.org/",true);x.responseType="blob";var _6=x.responseType;x.abort();return _6==="blob";});var _7={"blob":_5("native-xhr2-blob")?"blob":"arraybuffer","document":"document","arraybuffer":"arraybuffer"};function _8(_9,_a){var _b=_9.xhr;_9.status=_9.xhr.status;try{_9.text=_b.responseText;}catch(e){}if(_9.options.handleAs==="xml"){_9.data=_b.responseXML;}var _c;if(_a){this.reject(_a);}else{try{_3(_9);}catch(e){_c=e;}if(_4.checkStatus(_b.status)){if(!_c){this.resolve(_9);}else{this.reject(_c);}}else{if(!_c){_a=new _1("Unable to load "+_9.url+" status: "+_b.status,_9);this.reject(_a);}else{_a=new _1("Unable to load "+_9.url+" status: "+_b.status+" and an error in handleAs: transformation of response",_9);this.reject(_a);}}}};var _d,_e,_f,_10;if(_5("native-xhr2")){_d=function(_11){return !this.isFulfilled();};_10=function(dfd,_12){_12.xhr.abort();};_f=function(_13,dfd,_14,_15){function _16(evt){dfd.handleResponse(_14);};function _17(evt){var _18=evt.target;var _19=new _1("Unable to load "+_14.url+" status: "+_18.status,_14);dfd.handleResponse(_14,_19);};function _1a(_1b,evt){_14.transferType=_1b;if(evt.lengthComputable){_14.loaded=evt.loaded;_14.total=evt.total;dfd.progress(_14);}else{if(_14.xhr.readyState===3){_14.loaded=("loaded" in evt)?evt.loaded:evt.position;dfd.progress(_14);}}};function _1c(evt){return _1a("download",evt);};function _1d(evt){return _1a("upload",evt);};_13.addEventListener("load",_16,false);_13.addEventListener("error",_17,false);_13.addEventListener("progress",_1c,false);if(_15&&_13.upload){_13.upload.addEventListener("progress",_1d,false);}return function(){_13.removeEventListener("load",_16,false);_13.removeEventListener("error",_17,false);_13.removeEventListener("progress",_1c,false);_13.upload.removeEventListener("progress",_1d,false);_13=null;};};}else{_d=function(_1e){return _1e.xhr.readyState;};_e=function(_1f){return 4===_1f.xhr.readyState;};_10=function(dfd,_20){var xhr=_20.xhr;var _21=typeof xhr.abort;if(_21==="function"||_21==="object"||_21==="unknown"){xhr.abort();}};}function _22(_23){return this.xhr.getResponseHeader(_23);};var _24,_25={data:null,query:null,sync:false,method:"GET"};function xhr(url,_26,_27){var _28=_5("native-formdata")&&_26&&_26.data&&_26.data instanceof FormData;var _29=_4.parseArgs(url,_4.deepCreate(_25,_26),_28);url=_29.url;_26=_29.options;var _2a=!_26.data&&_26.method!=="POST"&&_26.method!=="PUT";if(_5("ie")<=10){url=url.split("#")[0];}var _2b,_2c=function(){_2b&&_2b();};var dfd=_4.deferred(_29,_10,_d,_e,_8,_2c);var _2d=_29.xhr=xhr._create();if(!_2d){dfd.cancel(new _1("XHR was not created"));return _27?dfd:dfd.promise;}_29.getHeader=_22;if(_f){_2b=_f(_2d,dfd,_29,_26.uploadProgress);}var _2e=typeof (_26.data)==="undefined"?null:_26.data,_2f=!_26.sync,_30=_26.method;try{_2d.open(_30,url,_2f,_26.user||_24,_26.password||_24);if(_26.withCredentials){_2d.withCredentials=_26.withCredentials;}if(_5("native-response-type")&&_26.handleAs in _7){_2d.responseType=_7[_26.handleAs];}var _31=_26.headers,_32=(_28||_2a)?false:"application/x-www-form-urlencoded";if(_31){for(var hdr in _31){if(hdr.toLowerCase()==="content-type"){_32=_31[hdr];}else{if(_31[hdr]){_2d.setRequestHeader(hdr,_31[hdr]);}}}}if(_32&&_32!==false){_2d.setRequestHeader("Content-Type",_32);}if(!_31||!("X-Requested-With" in _31)){_2d.setRequestHeader("X-Requested-With","XMLHttpRequest");}if(_4.notify){_4.notify.emit("send",_29,dfd.promise.cancel);}_2d.send(_2e);}catch(e){dfd.reject(e);}_2(dfd);_2d=null;return _27?dfd:dfd.promise;};xhr._create=function(){throw new Error("XMLHTTP not available");};if(_5("native-xhr")&&!_5("dojo-force-activex-xhr")){xhr._create=function(){return new XMLHttpRequest();};}else{if(_5("activex")){try{new ActiveXObject("Msxml2.XMLHTTP");xhr._create=function(){return new ActiveXObject("Msxml2.XMLHTTP");};}catch(e){try{new ActiveXObject("Microsoft.XMLHTTP");xhr._create=function(){return new ActiveXObject("Microsoft.XMLHTTP");};}catch(e){}}}}_4.addCommonMethods(xhr);return xhr;}); \ No newline at end of file
+define("dojo/request/xhr",["../errors/RequestError","./watch","./handlers","./util","../has"],function(_1,_2,_3,_4,_5){_5.add("native-xhr",function(){return typeof XMLHttpRequest!=="undefined";});_5.add("dojo-force-activex-xhr",function(){return _5("activex")&&window.location.protocol==="file:";});_5.add("native-xhr2",function(){if(!_5("native-xhr")||_5("dojo-force-activex-xhr")){return;}var x=new XMLHttpRequest();return typeof x["addEventListener"]!=="undefined"&&(typeof opera==="undefined"||typeof x["upload"]!=="undefined");});_5.add("native-formdata",function(){return typeof FormData!=="undefined";});_5.add("native-blob",function(){return typeof Blob!=="undefined";});_5.add("native-arraybuffer",function(){return typeof ArrayBuffer!=="undefined";});_5.add("native-response-type",function(){return _5("native-xhr")&&typeof new XMLHttpRequest().responseType!=="undefined";});_5.add("native-xhr2-blob",function(){if(!_5("native-response-type")){return;}var x=new XMLHttpRequest();x.open("GET","https://dojotoolkit.org/",true);x.responseType="blob";var _6=x.responseType;x.abort();return _6==="blob";});var _7={"blob":_5("native-xhr2-blob")?"blob":"arraybuffer","document":"document","arraybuffer":"arraybuffer"};function _8(_9,_a){var _b=_9.xhr;_9.status=_9.xhr.status;try{_9.text=_b.responseText;}catch(e){}if(_9.options.handleAs==="xml"){_9.data=_b.responseXML;}var _c;if(_a){this.reject(_a);}else{try{_3(_9);}catch(e){_c=e;}if(_4.checkStatus(_b.status)){if(!_c){this.resolve(_9);}else{this.reject(_c);}}else{if(!_c){_a=new _1("Unable to load "+_9.url+" status: "+_b.status,_9);this.reject(_a);}else{_a=new _1("Unable to load "+_9.url+" status: "+_b.status+" and an error in handleAs: transformation of response",_9);this.reject(_a);}}}};var _d,_e,_f,_10;if(_5("native-xhr2")){_d=function(_11){return !this.isFulfilled();};_10=function(dfd,_12){_12.xhr.abort();};_f=function(_13,dfd,_14,_15){function _16(evt){dfd.handleResponse(_14);};function _17(evt){var _18=evt.target;var _19=new _1("Unable to load "+_14.url+" status: "+_18.status,_14);dfd.handleResponse(_14,_19);};function _1a(_1b,evt){_14.transferType=_1b;if(evt.lengthComputable){_14.loaded=evt.loaded;_14.total=evt.total;dfd.progress(_14);}else{if(_14.xhr.readyState===3){_14.loaded=("loaded" in evt)?evt.loaded:evt.position;dfd.progress(_14);}}};function _1c(evt){return _1a("download",evt);};function _1d(evt){return _1a("upload",evt);};_13.addEventListener("load",_16,false);_13.addEventListener("error",_17,false);_13.addEventListener("progress",_1c,false);if(_15&&_13.upload){_13.upload.addEventListener("progress",_1d,false);}return function(){_13.removeEventListener("load",_16,false);_13.removeEventListener("error",_17,false);_13.removeEventListener("progress",_1c,false);_13.upload.removeEventListener("progress",_1d,false);_13=null;};};}else{_d=function(_1e){return _1e.xhr.readyState;};_e=function(_1f){return 4===_1f.xhr.readyState;};_10=function(dfd,_20){var xhr=_20.xhr;var _21=typeof xhr.abort;if(_21==="function"||_21==="object"||_21==="unknown"){xhr.abort();}};}function _22(_23){return this.xhr.getResponseHeader(_23);};var _24,_25={data:null,query:null,sync:false,method:"GET"};function xhr(url,_26,_27){var _28=_5("native-formdata")&&_26&&_26.data&&_26.data instanceof FormData;var _29=_4.parseArgs(url,_4.deepCreate(_25,_26),_28);url=_29.url;_26=_29.options;var _2a=!_26.data&&_26.method!=="POST"&&_26.method!=="PUT";if(_5("ie")<=10){url=url.split("#")[0];}var _2b,_2c=function(){_2b&&_2b();};var dfd=_4.deferred(_29,_10,_d,_e,_8,_2c);var _2d=_29.xhr=xhr._create();if(!_2d){dfd.cancel(new _1("XHR was not created"));return _27?dfd:dfd.promise;}_29.getHeader=_22;if(_f){_2b=_f(_2d,dfd,_29,_26.uploadProgress);}var _2e=typeof (_26.data)==="undefined"?null:_26.data,_2f=!_26.sync,_30=_26.method;try{_2d.open(_30,url,_2f,_26.user||_24,_26.password||_24);if(_26.withCredentials){_2d.withCredentials=_26.withCredentials;}if(_5("native-response-type")&&_26.handleAs in _7){_2d.responseType=_7[_26.handleAs];}var _31=_26.headers,_32=(_28||_2a)?false:"application/x-www-form-urlencoded";if(_31){for(var hdr in _31){if(hdr.toLowerCase()==="content-type"){_32=_31[hdr];}else{if(_31[hdr]){_2d.setRequestHeader(hdr,_31[hdr]);}}}}if(_32&&_32!==false){_2d.setRequestHeader("Content-Type",_32);}if(!_31||!("X-Requested-With" in _31)){_2d.setRequestHeader("X-Requested-With","XMLHttpRequest");}if(_4.notify){_4.notify.emit("send",_29,dfd.promise.cancel);}_2d.send(_2e);}catch(e){dfd.reject(e);}_2(dfd);_2d=null;return _27?dfd:dfd.promise;};xhr._create=function(){throw new Error("XMLHTTP not available");};if(_5("native-xhr")&&!_5("dojo-force-activex-xhr")){xhr._create=function(){return new XMLHttpRequest();};}else{if(_5("activex")){try{new ActiveXObject("Msxml2.XMLHTTP");xhr._create=function(){return new ActiveXObject("Msxml2.XMLHTTP");};}catch(e){try{new ActiveXObject("Microsoft.XMLHTTP");xhr._create=function(){return new ActiveXObject("Microsoft.XMLHTTP");};}catch(e){}}}}_4.addCommonMethods(xhr);return xhr;}); \ No newline at end of file
diff --git a/lib/dojo/tt-rss-layer.js b/lib/dojo/tt-rss-layer.js
index 567323944..7737ede83 100644
--- a/lib/dojo/tt-rss-layer.js
+++ b/lib/dojo/tt-rss-layer.js
@@ -5,4 +5,4 @@
*/
//>>built
-require({cache:{"dijit/form/TextBox":function(){define(["dojo/_base/declare","dojo/dom-construct","dojo/dom-style","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/sniff","./_FormValueWidget","./_TextBoxMixin","dojo/text!./templates/TextBox.html","../main"],function(_1,_2,_3,_4,_5,on,_6,_7,_8,_9,_a){var _b=_1("dijit.form.TextBox"+(_6("dojo-bidi")?"_NoBidi":""),[_7,_8],{templateString:_9,_singleNodeTemplate:"<input class=\"dijit dijitReset dijitLeft dijitInputField\" data-dojo-attach-point=\"textbox,focusNode\" autocomplete=\"off\" type=\"${type}\" ${!nameAttrSetting} />",_buttonInputDisabled:_6("ie")?"disabled":"",baseClass:"dijitTextBox",postMixInProperties:function(){var _c=this.type.toLowerCase();if(this.templateString&&this.templateString.toLowerCase()=="input"||((_c=="hidden"||_c=="file")&&this.templateString==this.constructor.prototype.templateString)){this.templateString=this._singleNodeTemplate;}this.inherited(arguments);},postCreate:function(){this.inherited(arguments);if(_6("ie")<9){this.defer(function(){try{var s=_3.getComputedStyle(this.domNode);if(s){var ff=s.fontFamily;if(ff){var _d=this.domNode.getElementsByTagName("INPUT");if(_d){for(var i=0;i<_d.length;i++){_d[i].style.fontFamily=ff;}}}}}catch(e){}});}},_setPlaceHolderAttr:function(v){this._set("placeHolder",v);if(!this._phspan){this._attachPoints.push("_phspan");this._phspan=_2.create("span",{className:"dijitPlaceHolder dijitInputField"},this.textbox,"after");this.own(on(this._phspan,"mousedown",function(_e){_e.preventDefault();}),on(this._phspan,"touchend, pointerup, MSPointerUp",_5.hitch(this,function(){this.focus();})));}this._phspan.innerHTML="";this._phspan.appendChild(this._phspan.ownerDocument.createTextNode(v));this._updatePlaceHolder();},_onInput:function(_f){this.inherited(arguments);this._updatePlaceHolder();},_updatePlaceHolder:function(){if(this._phspan){this._phspan.style.display=(this.placeHolder&&!this.textbox.value)?"":"none";}},_setValueAttr:function(_10,_11,_12){this.inherited(arguments);this._updatePlaceHolder();},getDisplayedValue:function(){_4.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use get('displayedValue') instead.","","2.0");return this.get("displayedValue");},setDisplayedValue:function(_13){_4.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");this.set("displayedValue",_13);},_onBlur:function(e){if(this.disabled){return;}this.inherited(arguments);this._updatePlaceHolder();if(_6("mozilla")){if(this.selectOnClick){this.textbox.selectionStart=this.textbox.selectionEnd=undefined;}}},_onFocus:function(by){if(this.disabled||this.readOnly){return;}this.inherited(arguments);this._updatePlaceHolder();}});if(_6("ie")<9){_b.prototype._isTextSelected=function(){var _14=this.ownerDocument.selection.createRange();var _15=_14.parentElement();return _15==this.textbox&&_14.text.length>0;};_a._setSelectionRange=_8._setSelectionRange=function(_16,_17,_18){if(_16.createTextRange){var r=_16.createTextRange();r.collapse(true);r.moveStart("character",-99999);r.moveStart("character",_17);r.moveEnd("character",_18-_17);r.select();}};}if(_6("dojo-bidi")){_b=_1("dijit.form.TextBox",_b,{_setPlaceHolderAttr:function(v){this.inherited(arguments);this.applyTextDir(this._phspan);}});}return _b;});},"dijit/_base/scroll":function(){define(["dojo/window","../main"],function(_19,_1a){_1a.scrollIntoView=function(_1b,pos){_19.scrollIntoView(_1b,pos);};});},"dijit/_TemplatedMixin":function(){define(["dojo/cache","dojo/_base/declare","dojo/dom-construct","dojo/_base/lang","dojo/on","dojo/sniff","dojo/string","./_AttachMixin"],function(_1c,_1d,_1e,_1f,on,has,_20,_21){var _22=_1d("dijit._TemplatedMixin",_21,{templateString:null,templatePath:null,_skipNodeCache:false,searchContainerNode:true,_stringRepl:function(_23){var _24=this.declaredClass,_25=this;return _20.substitute(_23,this,function(_26,key){if(key.charAt(0)=="!"){_26=_1f.getObject(key.substr(1),false,_25);}if(typeof _26=="undefined"){throw new Error(_24+" template:"+key);}if(_26==null){return "";}return key.charAt(0)=="!"?_26:this._escapeValue(""+_26);},this);},_escapeValue:function(val){return val.replace(/["'<>&]/g,function(val){return {"&":"&amp;","<":"&lt;",">":"&gt;","\"":"&quot;","'":"&#x27;"}[val];});},buildRendering:function(){if(!this._rendered){if(!this.templateString){this.templateString=_1c(this.templatePath,{sanitize:true});}var _27=_22.getCachedTemplate(this.templateString,this._skipNodeCache,this.ownerDocument);var _28;if(_1f.isString(_27)){_28=_1e.toDom(this._stringRepl(_27),this.ownerDocument);if(_28.nodeType!=1){throw new Error("Invalid template: "+_27);}}else{_28=_27.cloneNode(true);}this.domNode=_28;}this.inherited(arguments);if(!this._rendered){this._fillContent(this.srcNodeRef);}this._rendered=true;},_fillContent:function(_29){var _2a=this.containerNode;if(_29&&_2a){while(_29.hasChildNodes()){_2a.appendChild(_29.firstChild);}}}});_22._templateCache={};_22.getCachedTemplate=function(_2b,_2c,doc){var _2d=_22._templateCache;var key=_2b;var _2e=_2d[key];if(_2e){try{if(!_2e.ownerDocument||_2e.ownerDocument==(doc||document)){return _2e;}}catch(e){}_1e.destroy(_2e);}_2b=_20.trim(_2b);if(_2c||_2b.match(/\$\{([^\}]+)\}/g)){return (_2d[key]=_2b);}else{var _2f=_1e.toDom(_2b,doc);if(_2f.nodeType!=1){throw new Error("Invalid template: "+_2b);}return (_2d[key]=_2f);}};if(has("ie")){on(window,"unload",function(){var _30=_22._templateCache;for(var key in _30){var _31=_30[key];if(typeof _31=="object"){_1e.destroy(_31);}delete _30[key];}});}return _22;});},"dijit/_CssStateMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/has","dojo/_base/lang","dojo/on","dojo/domReady","dojo/touch","dojo/_base/window","./a11yclick","./registry"],function(_32,_33,dom,_34,has,_35,on,_36,_37,win,_38,_39){var _3a=_33("dijit._CssStateMixin",[],{hovering:false,active:false,_applyAttributes:function(){this.inherited(arguments);_32.forEach(["disabled","readOnly","checked","selected","focused","state","hovering","active","_opened"],function(_3b){this.watch(_3b,_35.hitch(this,"_setStateClass"));},this);for(var ap in this.cssStateNodes||{}){this._trackMouseState(this[ap],this.cssStateNodes[ap]);}this._trackMouseState(this.domNode,this.baseClass);this._setStateClass();},_cssMouseEvent:function(_3c){if(!this.disabled){switch(_3c.type){case "mouseover":case "MSPointerOver":case "pointerover":this._set("hovering",true);this._set("active",this._mouseDown);break;case "mouseout":case "MSPointerOut":case "pointerout":this._set("hovering",false);this._set("active",false);break;case "mousedown":case "touchstart":case "MSPointerDown":case "pointerdown":case "keydown":this._set("active",true);break;case "mouseup":case "dojotouchend":case "MSPointerUp":case "pointerup":case "keyup":this._set("active",false);break;}}},_setStateClass:function(){var _3d=this.baseClass.split(" ");function _3e(_3f){_3d=_3d.concat(_32.map(_3d,function(c){return c+_3f;}),"dijit"+_3f);};if(!this.isLeftToRight()){_3e("Rtl");}var _40=this.checked=="mixed"?"Mixed":(this.checked?"Checked":"");if(this.checked){_3e(_40);}if(this.state){_3e(this.state);}if(this.selected){_3e("Selected");}if(this._opened){_3e("Opened");}if(this.disabled){_3e("Disabled");}else{if(this.readOnly){_3e("ReadOnly");}else{if(this.active){_3e("Active");}else{if(this.hovering){_3e("Hover");}}}}if(this.focused){_3e("Focused");}var tn=this.stateNode||this.domNode,_41={};_32.forEach(tn.className.split(" "),function(c){_41[c]=true;});if("_stateClasses" in this){_32.forEach(this._stateClasses,function(c){delete _41[c];});}_32.forEach(_3d,function(c){_41[c]=true;});var _42=[];for(var c in _41){_42.push(c);}tn.className=_42.join(" ");this._stateClasses=_3d;},_subnodeCssMouseEvent:function(_43,_44,evt){if(this.disabled||this.readOnly){return;}function _45(_46){_34.toggle(_43,_44+"Hover",_46);};function _47(_48){_34.toggle(_43,_44+"Active",_48);};function _49(_4a){_34.toggle(_43,_44+"Focused",_4a);};switch(evt.type){case "mouseover":case "MSPointerOver":case "pointerover":_45(true);break;case "mouseout":case "MSPointerOut":case "pointerout":_45(false);_47(false);break;case "mousedown":case "touchstart":case "MSPointerDown":case "pointerdown":case "keydown":_47(true);break;case "mouseup":case "MSPointerUp":case "pointerup":case "dojotouchend":case "keyup":_47(false);break;case "focus":case "focusin":_49(true);break;case "blur":case "focusout":_49(false);break;}},_trackMouseState:function(_4b,_4c){_4b._cssState=_4c;}});_36(function(){function _4d(evt,_4e,_4f){if(_4f&&dom.isDescendant(_4f,_4e)){return;}for(var _50=_4e;_50&&_50!=_4f;_50=_50.parentNode){if(_50._cssState){var _51=_39.getEnclosingWidget(_50);if(_51){if(_50==_51.domNode){_51._cssMouseEvent(evt);}else{_51._subnodeCssMouseEvent(_50,_50._cssState,evt);}}}}};var _52=win.body(),_53;on(_52,_37.over,function(evt){_4d(evt,evt.target,evt.relatedTarget);});on(_52,_37.out,function(evt){_4d(evt,evt.target,evt.relatedTarget);});on(_52,_38.press,function(evt){_53=evt.target;_4d(evt,_53);});on(_52,_38.release,function(evt){_4d(evt,_53);_53=null;});on(_52,"focusin, focusout",function(evt){var _54=evt.target;if(_54._cssState&&!_54.getAttribute("widgetId")){var _55=_39.getEnclosingWidget(_54);if(_55){_55._subnodeCssMouseEvent(_54,_54._cssState,evt);}}});});return _3a;});},"dijit/layout/ScrollingTabController":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/fx","dojo/_base/lang","dojo/on","dojo/query","dojo/sniff","../registry","dojo/text!./templates/ScrollingTabController.html","dojo/text!./templates/_ScrollingTabControllerButton.html","./TabController","./utils","../_WidgetsInTemplateMixin","../Menu","../MenuItem","../form/Button","../_HasDropDown","dojo/NodeList-dom","../a11yclick"],function(_56,_57,_58,_59,_5a,fx,_5b,on,_5c,has,_5d,_5e,_5f,_60,_61,_62,_63,_64,_65,_66){var _67=_57("dijit.layout.ScrollingTabController",[_60,_62],{baseClass:"dijitTabController dijitScrollingTabController",templateString:_5e,useMenu:true,useSlider:true,tabStripClass:"",_minScroll:5,_setClassAttr:{node:"containerNode",type:"class"},buildRendering:function(){this.inherited(arguments);var n=this.domNode;this.scrollNode=this.tablistWrapper;this._initButtons();if(!this.tabStripClass){this.tabStripClass="dijitTabContainer"+this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"")+"None";_58.add(n,"tabStrip-disabled");}_58.add(this.tablistWrapper,this.tabStripClass);},onStartup:function(){this.inherited(arguments);_5a.set(this.domNode,"visibility","");this._postStartup=true;this.own(on(this.containerNode,"attrmodified-label, attrmodified-iconclass",_5b.hitch(this,function(evt){if(this._dim){this.resize(this._dim);}})));},onAddChild:function(_68,_69){this.inherited(arguments);_5a.set(this.containerNode,"width",(_5a.get(this.containerNode,"width")+200)+"px");},onRemoveChild:function(_6a,_6b){var _6c=this.pane2button(_6a.id);if(this._selectedTab===_6c.domNode){this._selectedTab=null;}this.inherited(arguments);},_initButtons:function(){this._btnWidth=0;this._buttons=_5c("> .tabStripButton",this.domNode).filter(function(btn){if((this.useMenu&&btn==this._menuBtn.domNode)||(this.useSlider&&(btn==this._rightBtn.domNode||btn==this._leftBtn.domNode))){this._btnWidth+=_59.getMarginSize(btn).w;return true;}else{_5a.set(btn,"display","none");return false;}},this);},_getTabsWidth:function(){var _6d=this.getChildren();if(_6d.length){var _6e=_6d[this.isLeftToRight()?0:_6d.length-1].domNode,_6f=_6d[this.isLeftToRight()?_6d.length-1:0].domNode;return _6f.offsetLeft+_6f.offsetWidth-_6e.offsetLeft;}else{return 0;}},_enableBtn:function(_70){var _71=this._getTabsWidth();_70=_70||_5a.get(this.scrollNode,"width");return _71>0&&_70<_71;},resize:function(dim){this._dim=dim;this.scrollNode.style.height="auto";var cb=this._contentBox=_61.marginBox2contentBox(this.domNode,{h:0,w:dim.w});cb.h=this.scrollNode.offsetHeight;_59.setContentSize(this.domNode,cb);var _72=this._enableBtn(this._contentBox.w);this._buttons.style("display",_72?"":"none");this._leftBtn.region="left";this._rightBtn.region="right";this._menuBtn.region=this.isLeftToRight()?"right":"left";_61.layoutChildren(this.domNode,this._contentBox,[this._menuBtn,this._leftBtn,this._rightBtn,{domNode:this.scrollNode,region:"center"}]);if(this._selectedTab){if(this._anim&&this._anim.status()=="playing"){this._anim.stop();}this.scrollNode.scrollLeft=this._convertToScrollLeft(this._getScrollForSelectedTab());}this._setButtonClass(this._getScroll());this._postResize=true;return {h:this._contentBox.h,w:dim.w};},_getScroll:function(){return (this.isLeftToRight()||has("ie")<8||(has("trident")&&has("quirks"))||has("webkit"))?this.scrollNode.scrollLeft:_5a.get(this.containerNode,"width")-_5a.get(this.scrollNode,"width")+(has("trident")||has("edge")?-1:1)*this.scrollNode.scrollLeft;},_convertToScrollLeft:function(val){if(this.isLeftToRight()||has("ie")<8||(has("trident")&&has("quirks"))||has("webkit")){return val;}else{var _73=_5a.get(this.containerNode,"width")-_5a.get(this.scrollNode,"width");return (has("trident")||has("edge")?-1:1)*(val-_73);}},onSelectChild:function(_74,_75){var tab=this.pane2button(_74.id);if(!tab){return;}var _76=tab.domNode;if(_76!=this._selectedTab){this._selectedTab=_76;if(this._postResize){var sl=this._getScroll();if(sl>_76.offsetLeft||sl+_5a.get(this.scrollNode,"width")<_76.offsetLeft+_5a.get(_76,"width")){var _77=this.createSmoothScroll();if(_75){_77.onEnd=function(){tab.focus();};}_77.play();}else{if(_75){tab.focus();}}}}this.inherited(arguments);},_getScrollBounds:function(){var _78=this.getChildren(),_79=_5a.get(this.scrollNode,"width"),_7a=_5a.get(this.containerNode,"width"),_7b=_7a-_79,_7c=this._getTabsWidth();if(_78.length&&_7c>_79){return {min:this.isLeftToRight()?0:_78[_78.length-1].domNode.offsetLeft,max:this.isLeftToRight()?(_78[_78.length-1].domNode.offsetLeft+_78[_78.length-1].domNode.offsetWidth)-_79:_7b};}else{var _7d=this.isLeftToRight()?0:_7b;return {min:_7d,max:_7d};}},_getScrollForSelectedTab:function(){var w=this.scrollNode,n=this._selectedTab,_7e=_5a.get(this.scrollNode,"width"),_7f=this._getScrollBounds();var pos=(n.offsetLeft+_5a.get(n,"width")/2)-_7e/2;pos=Math.min(Math.max(pos,_7f.min),_7f.max);return pos;},createSmoothScroll:function(x){if(arguments.length>0){var _80=this._getScrollBounds();x=Math.min(Math.max(x,_80.min),_80.max);}else{x=this._getScrollForSelectedTab();}if(this._anim&&this._anim.status()=="playing"){this._anim.stop();}var _81=this,w=this.scrollNode,_82=new fx.Animation({beforeBegin:function(){if(this.curve){delete this.curve;}var _83=w.scrollLeft,_84=_81._convertToScrollLeft(x);_82.curve=new fx._Line(_83,_84);},onAnimate:function(val){w.scrollLeft=val;}});this._anim=_82;this._setButtonClass(x);return _82;},_getBtnNode:function(e){var n=e.target;while(n&&!_58.contains(n,"tabStripButton")){n=n.parentNode;}return n;},doSlideRight:function(e){this.doSlide(1,this._getBtnNode(e));},doSlideLeft:function(e){this.doSlide(-1,this._getBtnNode(e));},doSlide:function(_85,_86){if(_86&&_58.contains(_86,"dijitTabDisabled")){return;}var _87=_5a.get(this.scrollNode,"width");var d=(_87*0.75)*_85;var to=this._getScroll()+d;this._setButtonClass(to);this.createSmoothScroll(to).play();},_setButtonClass:function(_88){var _89=this._getScrollBounds();this._leftBtn.set("disabled",_88<=_89.min);this._rightBtn.set("disabled",_88>=_89.max);}});var _8a=_57("dijit.layout._ScrollingTabControllerButtonMixin",null,{baseClass:"dijitTab tabStripButton",templateString:_5f,tabIndex:"",isFocusable:function(){return false;}});_57("dijit.layout._ScrollingTabControllerButton",[_65,_8a]);_57("dijit.layout._ScrollingTabControllerMenuButton",[_65,_66,_8a],{containerId:"",tabIndex:"-1",isLoaded:function(){return false;},loadDropDown:function(_8b){this.dropDown=new _63({id:this.containerId+"_menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir});var _8c=_5d.byId(this.containerId);_56.forEach(_8c.getChildren(),function(_8d){var _8e=new _64({id:_8d.id+"_stcMi",label:_8d.title,iconClass:_8d.iconClass,disabled:_8d.disabled,ownerDocument:this.ownerDocument,dir:_8d.dir,lang:_8d.lang,textDir:_8d.textDir||_8c.textDir,onClick:function(){_8c.selectChild(_8d);}});this.dropDown.addChild(_8e);},this);_8b();},closeDropDown:function(_8f){this.inherited(arguments);if(this.dropDown){this._popupStateNode.removeAttribute("aria-owns");this.dropDown.destroyRecursive();delete this.dropDown;}}});return _67;});},"dijit/DialogUnderlay":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/aspect","dojo/dom-attr","dojo/dom-style","dojo/on","dojo/window","./_Widget","./_TemplatedMixin","./BackgroundIframe","./Viewport","./main"],function(_90,_91,_92,_93,_94,on,_95,_96,_97,_98,_99,_9a){var _9b=_90("dijit.DialogUnderlay",[_96,_97],{templateString:"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' tabIndex='-1' data-dojo-attach-point='node'></div></div>",dialogId:"","class":"",_modalConnects:[],_setDialogIdAttr:function(id){_93.set(this.node,"id",id+"_underlay");this._set("dialogId",id);},_setClassAttr:function(_9c){this.node.className="dijitDialogUnderlay "+_9c;this._set("class",_9c);},postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);this.own(on(this.domNode,"keydown",_91.hitch(this,"_onKeyDown")));this.inherited(arguments);},layout:function(){var is=this.node.style,os=this.domNode.style;os.display="none";var _9d=_95.getBox(this.ownerDocument);os.top=_9d.t+"px";os.left=_9d.l+"px";is.width=_9d.w+"px";is.height=_9d.h+"px";os.display="block";},show:function(){this.domNode.style.display="block";this.open=true;this.layout();this.bgIframe=new _98(this.domNode);var win=_95.get(this.ownerDocument);this._modalConnects=[_99.on("resize",_91.hitch(this,"layout")),on(win,"scroll",_91.hitch(this,"layout"))];},hide:function(){this.bgIframe.destroy();delete this.bgIframe;this.domNode.style.display="none";while(this._modalConnects.length){(this._modalConnects.pop()).remove();}this.open=false;},destroy:function(){while(this._modalConnects.length){(this._modalConnects.pop()).remove();}this.inherited(arguments);},_onKeyDown:function(){}});_9b.show=function(_9e,_9f){var _a0=_9b._singleton;if(!_a0||_a0._destroyed){_a0=_9a._underlay=_9b._singleton=new _9b(_9e);}else{if(_9e){_a0.set(_9e);}}_94.set(_a0.domNode,"zIndex",_9f);if(!_a0.open){_a0.show();}};_9b.hide=function(){var _a1=_9b._singleton;if(_a1&&!_a1._destroyed){_a1.hide();}};return _9b;});},"dijit/place":function(){define(["dojo/_base/array","dojo/dom-geometry","dojo/dom-style","dojo/_base/kernel","dojo/_base/window","./Viewport","./main"],function(_a2,_a3,_a4,_a5,win,_a6,_a7){function _a8(_a9,_aa,_ab,_ac){var _ad=_a6.getEffectiveBox(_a9.ownerDocument);if(!_a9.parentNode||String(_a9.parentNode.tagName).toLowerCase()!="body"){win.body(_a9.ownerDocument).appendChild(_a9);}var _ae=null;_a2.some(_aa,function(_af){var _b0=_af.corner;var pos=_af.pos;var _b1=0;var _b2={w:{"L":_ad.l+_ad.w-pos.x,"R":pos.x-_ad.l,"M":_ad.w}[_b0.charAt(1)],h:{"T":_ad.t+_ad.h-pos.y,"B":pos.y-_ad.t,"M":_ad.h}[_b0.charAt(0)]};var s=_a9.style;s.left=s.right="auto";if(_ab){var res=_ab(_a9,_af.aroundCorner,_b0,_b2,_ac);_b1=typeof res=="undefined"?0:res;}var _b3=_a9.style;var _b4=_b3.display;var _b5=_b3.visibility;if(_b3.display=="none"){_b3.visibility="hidden";_b3.display="";}var bb=_a3.position(_a9);_b3.display=_b4;_b3.visibility=_b5;var _b6={"L":pos.x,"R":pos.x-bb.w,"M":Math.max(_ad.l,Math.min(_ad.l+_ad.w,pos.x+(bb.w>>1))-bb.w)}[_b0.charAt(1)],_b7={"T":pos.y,"B":pos.y-bb.h,"M":Math.max(_ad.t,Math.min(_ad.t+_ad.h,pos.y+(bb.h>>1))-bb.h)}[_b0.charAt(0)],_b8=Math.max(_ad.l,_b6),_b9=Math.max(_ad.t,_b7),_ba=Math.min(_ad.l+_ad.w,_b6+bb.w),_bb=Math.min(_ad.t+_ad.h,_b7+bb.h),_bc=_ba-_b8,_bd=_bb-_b9;_b1+=(bb.w-_bc)+(bb.h-_bd);if(_ae==null||_b1<_ae.overflow){_ae={corner:_b0,aroundCorner:_af.aroundCorner,x:_b8,y:_b9,w:_bc,h:_bd,overflow:_b1,spaceAvailable:_b2};}return !_b1;});if(_ae.overflow&&_ab){_ab(_a9,_ae.aroundCorner,_ae.corner,_ae.spaceAvailable,_ac);}var top=_ae.y,_be=_ae.x,_bf=win.body(_a9.ownerDocument);if(/relative|absolute/.test(_a4.get(_bf,"position"))){top-=_a4.get(_bf,"marginTop");_be-=_a4.get(_bf,"marginLeft");}var s=_a9.style;s.top=top+"px";s.left=_be+"px";s.right="auto";return _ae;};var _c0={"TL":"BR","TR":"BL","BL":"TR","BR":"TL"};var _c1={at:function(_c2,pos,_c3,_c4,_c5){var _c6=_a2.map(_c3,function(_c7){var c={corner:_c7,aroundCorner:_c0[_c7],pos:{x:pos.x,y:pos.y}};if(_c4){c.pos.x+=_c7.charAt(1)=="L"?_c4.x:-_c4.x;c.pos.y+=_c7.charAt(0)=="T"?_c4.y:-_c4.y;}return c;});return _a8(_c2,_c6,_c5);},around:function(_c8,_c9,_ca,_cb,_cc){var _cd;if(typeof _c9=="string"||"offsetWidth" in _c9||"ownerSVGElement" in _c9){_cd=_a3.position(_c9,true);if(/^(above|below)/.test(_ca[0])){var _ce=_a3.getBorderExtents(_c9),_cf=_c9.firstChild?_a3.getBorderExtents(_c9.firstChild):{t:0,l:0,b:0,r:0},_d0=_a3.getBorderExtents(_c8),_d1=_c8.firstChild?_a3.getBorderExtents(_c8.firstChild):{t:0,l:0,b:0,r:0};_cd.y+=Math.min(_ce.t+_cf.t,_d0.t+_d1.t);_cd.h-=Math.min(_ce.t+_cf.t,_d0.t+_d1.t)+Math.min(_ce.b+_cf.b,_d0.b+_d1.b);}}else{_cd=_c9;}if(_c9.parentNode){var _d2=_a4.getComputedStyle(_c9).position=="absolute";var _d3=_c9.parentNode;while(_d3&&_d3.nodeType==1&&_d3.nodeName!="BODY"){var _d4=_a3.position(_d3,true),pcs=_a4.getComputedStyle(_d3);if(/relative|absolute/.test(pcs.position)){_d2=false;}if(!_d2&&/hidden|auto|scroll/.test(pcs.overflow)){var _d5=Math.min(_cd.y+_cd.h,_d4.y+_d4.h);var _d6=Math.min(_cd.x+_cd.w,_d4.x+_d4.w);_cd.x=Math.max(_cd.x,_d4.x);_cd.y=Math.max(_cd.y,_d4.y);_cd.h=_d5-_cd.y;_cd.w=_d6-_cd.x;}if(pcs.position=="absolute"){_d2=true;}_d3=_d3.parentNode;}}var x=_cd.x,y=_cd.y,_d7="w" in _cd?_cd.w:(_cd.w=_cd.width),_d8="h" in _cd?_cd.h:(_a5.deprecated("place.around: dijit/place.__Rectangle: { x:"+x+", y:"+y+", height:"+_cd.height+", width:"+_d7+" } has been deprecated. Please use { x:"+x+", y:"+y+", h:"+_cd.height+", w:"+_d7+" }","","2.0"),_cd.h=_cd.height);var _d9=[];function _da(_db,_dc){_d9.push({aroundCorner:_db,corner:_dc,pos:{x:{"L":x,"R":x+_d7,"M":x+(_d7>>1)}[_db.charAt(1)],y:{"T":y,"B":y+_d8,"M":y+(_d8>>1)}[_db.charAt(0)]}});};_a2.forEach(_ca,function(pos){var ltr=_cb;switch(pos){case "above-centered":_da("TM","BM");break;case "below-centered":_da("BM","TM");break;case "after-centered":ltr=!ltr;case "before-centered":_da(ltr?"ML":"MR",ltr?"MR":"ML");break;case "after":ltr=!ltr;case "before":_da(ltr?"TL":"TR",ltr?"TR":"TL");_da(ltr?"BL":"BR",ltr?"BR":"BL");break;case "below-alt":ltr=!ltr;case "below":_da(ltr?"BL":"BR",ltr?"TL":"TR");_da(ltr?"BR":"BL",ltr?"TR":"TL");break;case "above-alt":ltr=!ltr;case "above":_da(ltr?"TL":"TR",ltr?"BL":"BR");_da(ltr?"TR":"TL",ltr?"BR":"BL");break;default:_da(pos.aroundCorner,pos.corner);}});var _dd=_a8(_c8,_d9,_cc,{w:_d7,h:_d8});_dd.aroundNodePos=_cd;return _dd;}};return _a7.place=_c1;});},"dijit/_HasDropDown":function(){define(["dojo/_base/declare","dojo/_base/Deferred","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","dojo/touch","./registry","./focus","./popup","./_FocusMixin"],function(_de,_df,dom,_e0,_e1,_e2,_e3,has,_e4,_e5,on,_e6,_e7,_e8,_e9,_ea){return _de("dijit._HasDropDown",_ea,{_buttonNode:null,_arrowWrapperNode:null,_popupStateNode:null,_aroundNode:null,dropDown:null,autoWidth:true,forceWidth:false,maxHeight:-1,dropDownPosition:["below","above"],_stopClickEvents:true,_onDropDownMouseDown:function(e){if(this.disabled||this.readOnly){return;}if(e.type!="MSPointerDown"){e.preventDefault();}this.own(on.once(this.ownerDocument,_e6.release,_e5.hitch(this,"_onDropDownMouseUp")));this.toggleDropDown();},_onDropDownMouseUp:function(e){var _eb=this.dropDown,_ec=false;if(e&&this._opened){var c=_e2.position(this._buttonNode,true);if(!(e.pageX>=c.x&&e.pageX<=c.x+c.w)||!(e.pageY>=c.y&&e.pageY<=c.y+c.h)){var t=e.target;while(t&&!_ec){if(_e1.contains(t,"dijitPopup")){_ec=true;}else{t=t.parentNode;}}if(_ec){t=e.target;if(_eb.onItemClick){var _ed;while(t&&!(_ed=_e7.byNode(t))){t=t.parentNode;}if(_ed&&_ed.onClick&&_ed.getParent){_ed.getParent().onItemClick(_ed,e);}}return;}}}if(this._opened){if(_eb.focus&&(_eb.autoFocus!==false||(e.type=="mouseup"&&!this.hovering))){this._focusDropDownTimer=this.defer(function(){_eb.focus();delete this._focusDropDownTimer;});}}else{if(this.focus){this.defer("focus");}}},_onDropDownClick:function(e){if(this._stopClickEvents){e.stopPropagation();e.preventDefault();}},buildRendering:function(){this.inherited(arguments);this._buttonNode=this._buttonNode||this.focusNode||this.domNode;this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;var _ee={"after":this.isLeftToRight()?"Right":"Left","before":this.isLeftToRight()?"Left":"Right","above":"Up","below":"Down","left":"Left","right":"Right"}[this.dropDownPosition[0]]||this.dropDownPosition[0]||"Down";_e1.add(this._arrowWrapperNode||this._buttonNode,"dijit"+_ee+"ArrowButton");},postCreate:function(){this.inherited(arguments);var _ef=this.focusNode||this.domNode;this.own(on(this._buttonNode,_e6.press,_e5.hitch(this,"_onDropDownMouseDown")),on(this._buttonNode,"click",_e5.hitch(this,"_onDropDownClick")),on(_ef,"keydown",_e5.hitch(this,"_onKey")),on(_ef,"keyup",_e5.hitch(this,"_onKeyUp")));},destroy:function(){if(this._opened){this.closeDropDown(true);}if(this.dropDown){if(!this.dropDown._destroyed){this.dropDown.destroyRecursive();}delete this.dropDown;}this.inherited(arguments);},_onKey:function(e){if(this.disabled||this.readOnly){return;}var d=this.dropDown,_f0=e.target;if(d&&this._opened&&d.handleKey){if(d.handleKey(e)===false){e.stopPropagation();e.preventDefault();return;}}if(d&&this._opened&&e.keyCode==_e4.ESCAPE){this.closeDropDown();e.stopPropagation();e.preventDefault();}else{if(!this._opened&&(e.keyCode==_e4.DOWN_ARROW||((e.keyCode==_e4.ENTER||(e.keyCode==_e4.SPACE&&(!this._searchTimer||(e.ctrlKey||e.altKey||e.metaKey))))&&((_f0.tagName||"").toLowerCase()!=="input"||(_f0.type&&_f0.type.toLowerCase()!=="text"))))){this._toggleOnKeyUp=true;e.stopPropagation();e.preventDefault();}}},_onKeyUp:function(){if(this._toggleOnKeyUp){delete this._toggleOnKeyUp;this.toggleDropDown();var d=this.dropDown;if(d&&d.focus){this.defer(_e5.hitch(d,"focus"),1);}}},_onBlur:function(){this.closeDropDown(false);this.inherited(arguments);},isLoaded:function(){return true;},loadDropDown:function(_f1){_f1();},loadAndOpenDropDown:function(){var d=new _df(),_f2=_e5.hitch(this,function(){this.openDropDown();d.resolve(this.dropDown);});if(!this.isLoaded()){this.loadDropDown(_f2);}else{_f2();}return d;},toggleDropDown:function(){if(this.disabled||this.readOnly){return;}if(!this._opened){this.loadAndOpenDropDown();}else{this.closeDropDown(true);}},openDropDown:function(){var _f3=this.dropDown,_f4=_f3.domNode,_f5=this._aroundNode||this.domNode,_f6=this;var _f7=_e9.open({parent:this,popup:_f3,around:_f5,orient:this.dropDownPosition,maxHeight:this.maxHeight,onExecute:function(){_f6.closeDropDown(true);},onCancel:function(){_f6.closeDropDown(true);},onClose:function(){_e0.set(_f6._popupStateNode,"popupActive",false);_e1.remove(_f6._popupStateNode,"dijitHasDropDownOpen");_f6._set("_opened",false);}});if(this.forceWidth||(this.autoWidth&&_f5.offsetWidth>_f3._popupWrapper.offsetWidth)){var _f8=_f5.offsetWidth-_f3._popupWrapper.offsetWidth;var _f9={w:_f3.domNode.offsetWidth+_f8};this._origStyle=_f4.style.cssText;if(_e5.isFunction(_f3.resize)){_f3.resize(_f9);}else{_e2.setMarginBox(_f4,_f9);}if(_f7.corner[1]=="R"){_f3._popupWrapper.style.left=(_f3._popupWrapper.style.left.replace("px","")-_f8)+"px";}}_e0.set(this._popupStateNode,"popupActive","true");_e1.add(this._popupStateNode,"dijitHasDropDownOpen");this._set("_opened",true);this._popupStateNode.setAttribute("aria-expanded","true");this._popupStateNode.setAttribute("aria-owns",_f3.id);if(_f4.getAttribute("role")!=="presentation"&&!_f4.getAttribute("aria-labelledby")){_f4.setAttribute("aria-labelledby",this.id);}return _f7;},closeDropDown:function(_fa){if(this._focusDropDownTimer){this._focusDropDownTimer.remove();delete this._focusDropDownTimer;}if(this._opened){this._popupStateNode.setAttribute("aria-expanded","false");if(_fa&&this.focus){this.focus();}_e9.close(this.dropDown);this._opened=false;}if(this._origStyle){this.dropDown.domNode.style.cssText=this._origStyle;delete this._origStyle;}}});});},"dijit/tree/TreeStoreModel":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/_base/lang"],function(_fb,_fc,_fd,_fe){return _fd("dijit.tree.TreeStoreModel",null,{store:null,childrenAttrs:["children"],newItemIdAttr:"id",labelAttr:"",root:null,query:null,deferItemLoadingUntilExpand:false,constructor:function(_ff){_fe.mixin(this,_ff);this.connects=[];var _100=this.store;if(!_100.getFeatures()["dojo.data.api.Identity"]){throw new Error("dijit.tree.TreeStoreModel: store must support dojo.data.Identity");}if(_100.getFeatures()["dojo.data.api.Notification"]){this.connects=this.connects.concat([_fc.after(_100,"onNew",_fe.hitch(this,"onNewItem"),true),_fc.after(_100,"onDelete",_fe.hitch(this,"onDeleteItem"),true),_fc.after(_100,"onSet",_fe.hitch(this,"onSetItem"),true)]);}},destroy:function(){var h;while(h=this.connects.pop()){h.remove();}},getRoot:function(_101,_102){if(this.root){_101(this.root);}else{this.store.fetch({query:this.query,onComplete:_fe.hitch(this,function(_103){if(_103.length!=1){throw new Error("dijit.tree.TreeStoreModel: root query returned "+_103.length+" items, but must return exactly one");}this.root=_103[0];_101(this.root);}),onError:_102});}},mayHaveChildren:function(item){return _fb.some(this.childrenAttrs,function(attr){return this.store.hasAttribute(item,attr);},this);},getChildren:function(_104,_105,_106){var _107=this.store;if(!_107.isItemLoaded(_104)){var _108=_fe.hitch(this,arguments.callee);_107.loadItem({item:_104,onItem:function(_109){_108(_109,_105,_106);},onError:_106});return;}var _10a=[];for(var i=0;i<this.childrenAttrs.length;i++){var vals=_107.getValues(_104,this.childrenAttrs[i]);_10a=_10a.concat(vals);}var _10b=0;if(!this.deferItemLoadingUntilExpand){_fb.forEach(_10a,function(item){if(!_107.isItemLoaded(item)){_10b++;}});}if(_10b==0){_105(_10a);}else{_fb.forEach(_10a,function(item,idx){if(!_107.isItemLoaded(item)){_107.loadItem({item:item,onItem:function(item){_10a[idx]=item;if(--_10b==0){_105(_10a);}},onError:_106});}});}},isItem:function(_10c){return this.store.isItem(_10c);},fetchItemByIdentity:function(_10d){this.store.fetchItemByIdentity(_10d);},getIdentity:function(item){return this.store.getIdentity(item);},getLabel:function(item){if(this.labelAttr){return this.store.getValue(item,this.labelAttr);}else{return this.store.getLabel(item);}},newItem:function(args,_10e,_10f){var _110={parent:_10e,attribute:this.childrenAttrs[0]},_111;if(this.newItemIdAttr&&args[this.newItemIdAttr]){this.fetchItemByIdentity({identity:args[this.newItemIdAttr],scope:this,onItem:function(item){if(item){this.pasteItem(item,null,_10e,true,_10f);}else{_111=this.store.newItem(args,_110);if(_111&&(_10f!=undefined)){this.pasteItem(_111,_10e,_10e,false,_10f);}}}});}else{_111=this.store.newItem(args,_110);if(_111&&(_10f!=undefined)){this.pasteItem(_111,_10e,_10e,false,_10f);}}},pasteItem:function(_112,_113,_114,_115,_116){var _117=this.store,_118=this.childrenAttrs[0];if(_113){_fb.forEach(this.childrenAttrs,function(attr){if(_117.containsValue(_113,attr,_112)){if(!_115){var _119=_fb.filter(_117.getValues(_113,attr),function(x){return x!=_112;});_117.setValues(_113,attr,_119);}_118=attr;}});}if(_114){if(typeof _116=="number"){var _11a=_117.getValues(_114,_118).slice();_11a.splice(_116,0,_112);_117.setValues(_114,_118,_11a);}else{_117.setValues(_114,_118,_117.getValues(_114,_118).concat(_112));}}},onChange:function(){},onChildrenChange:function(){},onDelete:function(){},onNewItem:function(item,_11b){if(!_11b){return;}this.getChildren(_11b.item,_fe.hitch(this,function(_11c){this.onChildrenChange(_11b.item,_11c);}));},onDeleteItem:function(item){this.onDelete(item);},onSetItem:function(item,_11d){if(_fb.indexOf(this.childrenAttrs,_11d)!=-1){this.getChildren(item,_fe.hitch(this,function(_11e){this.onChildrenChange(item,_11e);}));}else{this.onChange(item);}}});});},"dijit/_MenuBase":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/_base/lang","dojo/mouse","dojo/on","dojo/window","./a11yclick","./registry","./_Widget","./_CssStateMixin","./_KeyNavContainer","./_TemplatedMixin"],function(_11f,_120,dom,_121,_122,lang,_123,on,_124,_125,_126,_127,_128,_129,_12a){return _120("dijit._MenuBase",[_127,_12a,_129,_128],{selected:null,_setSelectedAttr:function(item){if(this.selected!=item){if(this.selected){this.selected._setSelected(false);this._onChildDeselect(this.selected);}if(item){item._setSelected(true);}this._set("selected",item);}},activated:false,_setActivatedAttr:function(val){_122.toggle(this.domNode,"dijitMenuActive",val);_122.toggle(this.domNode,"dijitMenuPassive",!val);this._set("activated",val);},parentMenu:null,popupDelay:500,passivePopupDelay:Infinity,autoFocus:false,childSelector:function(node){var _12b=_126.byNode(node);return node.parentNode==this.containerNode&&_12b&&_12b.focus;},postCreate:function(){var self=this,_12c=typeof this.childSelector=="string"?this.childSelector:lang.hitch(this,"childSelector");this.own(on(this.containerNode,on.selector(_12c,_123.enter),function(){self.onItemHover(_126.byNode(this));}),on(this.containerNode,on.selector(_12c,_123.leave),function(){self.onItemUnhover(_126.byNode(this));}),on(this.containerNode,on.selector(_12c,_125),function(evt){self.onItemClick(_126.byNode(this),evt);evt.stopPropagation();}),on(this.containerNode,on.selector(_12c,"focusin"),function(){self._onItemFocus(_126.byNode(this));}));this.inherited(arguments);},onKeyboardSearch:function(item,evt,_12d,_12e){this.inherited(arguments);if(!!item&&(_12e==-1||(!!item.popup&&_12e==1))){this.onItemClick(item,evt);}},_keyboardSearchCompare:function(item,_12f){if(!!item.shortcutKey){return _12f==item.shortcutKey.toLowerCase()?-1:0;}return this.inherited(arguments)?1:0;},onExecute:function(){},onCancel:function(){},_moveToPopup:function(evt){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){this.onItemClick(this.focusedChild,evt);}else{var _130=this._getTopMenu();if(_130&&_130._isMenuBar){_130.focusNext();}}},_onPopupHover:function(){this.set("selected",this.currentPopupItem);this._stopPendingCloseTimer();},onItemHover:function(item){if(this.activated){this.set("selected",item);if(item.popup&&!item.disabled&&!this.hover_timer){this.hover_timer=this.defer(function(){this._openItemPopup(item);},this.popupDelay);}}else{if(this.passivePopupDelay<Infinity){if(this.passive_hover_timer){this.passive_hover_timer.remove();}this.passive_hover_timer=this.defer(function(){this.onItemClick(item,{type:"click"});},this.passivePopupDelay);}}this._hoveredChild=item;item._set("hovering",true);},_onChildDeselect:function(item){this._stopPopupTimer();if(this.currentPopupItem==item){this._stopPendingCloseTimer();this._pendingClose_timer=this.defer(function(){this._pendingClose_timer=null;this.currentPopupItem=null;item._closePopup();},this.popupDelay);}},onItemUnhover:function(item){if(this._hoveredChild==item){this._hoveredChild=null;}if(this.passive_hover_timer){this.passive_hover_timer.remove();this.passive_hover_timer=null;}item._set("hovering",false);},_stopPopupTimer:function(){if(this.hover_timer){this.hover_timer=this.hover_timer.remove();}},_stopPendingCloseTimer:function(){if(this._pendingClose_timer){this._pendingClose_timer=this._pendingClose_timer.remove();}},_getTopMenu:function(){for(var top=this;top.parentMenu;top=top.parentMenu){}return top;},onItemClick:function(item,evt){if(this.passive_hover_timer){this.passive_hover_timer.remove();}this.focusChild(item);if(item.disabled){return false;}if(item.popup){this.set("selected",item);this.set("activated",true);var _131=/^key/.test(evt._origType||evt.type)||(evt.clientX==0&&evt.clientY==0);this._openItemPopup(item,_131);}else{this.onExecute();item._onClick?item._onClick(evt):item.onClick(evt);}},_openItemPopup:function(_132,_133){if(_132==this.currentPopupItem){return;}if(this.currentPopupItem){this._stopPendingCloseTimer();this.currentPopupItem._closePopup();}this._stopPopupTimer();var _134=_132.popup;_134.parentMenu=this;this.own(this._mouseoverHandle=on.once(_134.domNode,"mouseover",lang.hitch(this,"_onPopupHover")));var self=this;_132._openPopup({parent:this,orient:this._orient||["after","before"],onCancel:function(){if(_133){self.focusChild(_132);}self._cleanUp();},onExecute:lang.hitch(this,"_cleanUp",true),onClose:function(){if(self._mouseoverHandle){self._mouseoverHandle.remove();delete self._mouseoverHandle;}}},_133);this.currentPopupItem=_132;},onOpen:function(){this.isShowingNow=true;this.set("activated",true);},onClose:function(){this.set("activated",false);this.set("selected",null);this.isShowingNow=false;this.parentMenu=null;},_closeChild:function(){this._stopPopupTimer();if(this.currentPopupItem){if(this.focused){_121.set(this.selected.focusNode,"tabIndex",this.tabIndex);this.selected.focusNode.focus();}this.currentPopupItem._closePopup();this.currentPopupItem=null;}},_onItemFocus:function(item){if(this._hoveredChild&&this._hoveredChild!=item){this.onItemUnhover(this._hoveredChild);}this.set("selected",item);},_onBlur:function(){this._cleanUp(true);this.inherited(arguments);},_cleanUp:function(_135){this._closeChild();if(typeof this.isShowingNow=="undefined"){this.set("activated",false);}if(_135){this.set("selected",null);}}});});},"dijit/focus":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/Evented","dojo/_base/lang","dojo/on","dojo/domReady","dojo/sniff","dojo/Stateful","dojo/_base/window","dojo/window","./a11y","./registry","./main"],function(_136,_137,dom,_138,_139,_13a,_13b,lang,on,_13c,has,_13d,win,_13e,a11y,_13f,_140){var _141;var _142;var _143=_137([_13d,_13b],{curNode:null,activeStack:[],constructor:function(){var _144=lang.hitch(this,function(node){if(dom.isDescendant(this.curNode,node)){this.set("curNode",null);}if(dom.isDescendant(this.prevNode,node)){this.set("prevNode",null);}});_136.before(_13a,"empty",_144);_136.before(_13a,"destroy",_144);},registerIframe:function(_145){return this.registerWin(_145.contentWindow,_145);},registerWin:function(_146,_147){var _148=this,body=_146.document&&_146.document.body;if(body){var _149=has("pointer-events")?"pointerdown":has("MSPointer")?"MSPointerDown":has("touch-events")?"mousedown, touchstart":"mousedown";var mdh=on(_146.document,_149,function(evt){if(evt&&evt.target&&evt.target.parentNode==null){return;}_148._onTouchNode(_147||evt.target,"mouse");});var fih=on(body,"focusin",function(evt){if(!evt.target.tagName){return;}var tag=evt.target.tagName.toLowerCase();if(tag=="#document"||tag=="body"){return;}if(a11y.isFocusable(evt.target)){_148._onFocusNode(_147||evt.target);}else{_148._onTouchNode(_147||evt.target);}});var foh=on(body,"focusout",function(evt){_148._onBlurNode(_147||evt.target);});return {remove:function(){mdh.remove();fih.remove();foh.remove();mdh=fih=foh=null;body=null;}};}},_onBlurNode:function(node){var now=(new Date()).getTime();if(now<_141+100){return;}if(this._clearFocusTimer){clearTimeout(this._clearFocusTimer);}this._clearFocusTimer=setTimeout(lang.hitch(this,function(){this.set("prevNode",this.curNode);this.set("curNode",null);}),0);if(this._clearActiveWidgetsTimer){clearTimeout(this._clearActiveWidgetsTimer);}if(now<_142+100){return;}this._clearActiveWidgetsTimer=setTimeout(lang.hitch(this,function(){delete this._clearActiveWidgetsTimer;this._setStack([]);}),0);},_onTouchNode:function(node,by){_142=(new Date()).getTime();if(this._clearActiveWidgetsTimer){clearTimeout(this._clearActiveWidgetsTimer);delete this._clearActiveWidgetsTimer;}if(_139.contains(node,"dijitPopup")){node=node.firstChild;}var _14a=[];try{while(node){var _14b=_138.get(node,"dijitPopupParent");if(_14b){node=_13f.byId(_14b).domNode;}else{if(node.tagName&&node.tagName.toLowerCase()=="body"){if(node===win.body()){break;}node=_13e.get(node.ownerDocument).frameElement;}else{var id=node.getAttribute&&node.getAttribute("widgetId"),_14c=id&&_13f.byId(id);if(_14c&&!(by=="mouse"&&_14c.get("disabled"))){_14a.unshift(id);}node=node.parentNode;}}}}catch(e){}this._setStack(_14a,by);},_onFocusNode:function(node){if(!node){return;}if(node.nodeType==9){return;}_141=(new Date()).getTime();if(this._clearFocusTimer){clearTimeout(this._clearFocusTimer);delete this._clearFocusTimer;}this._onTouchNode(node);if(node==this.curNode){return;}this.set("prevNode",this.curNode);this.set("curNode",node);},_setStack:function(_14d,by){var _14e=this.activeStack,_14f=_14e.length-1,_150=_14d.length-1;if(_14d[_150]==_14e[_14f]){return;}this.set("activeStack",_14d);var _151,i;for(i=_14f;i>=0&&_14e[i]!=_14d[i];i--){_151=_13f.byId(_14e[i]);if(_151){_151._hasBeenBlurred=true;_151.set("focused",false);if(_151._focusManager==this){_151._onBlur(by);}this.emit("widget-blur",_151,by);}}for(i++;i<=_150;i++){_151=_13f.byId(_14d[i]);if(_151){_151.set("focused",true);if(_151._focusManager==this){_151._onFocus(by);}this.emit("widget-focus",_151,by);}}},focus:function(node){if(node){try{node.focus();}catch(e){}}}});var _152=new _143();_13c(function(){var _153=_152.registerWin(_13e.get(document));if(has("ie")){on(window,"unload",function(){if(_153){_153.remove();_153=null;}});}});_140.focus=function(node){_152.focus(node);};for(var attr in _152){if(!/^_/.test(attr)){_140.focus[attr]=typeof _152[attr]=="function"?lang.hitch(_152,attr):_152[attr];}}_152.watch(function(attr,_154,_155){_140.focus[attr]=_155;});return _152;});},"dojo/i18n":function(){define(["./_base/kernel","require","./has","./_base/array","./_base/config","./_base/lang","./_base/xhr","./json","module"],function(dojo,_156,has,_157,_158,lang,xhr,json,_159){has.add("dojo-preload-i18n-Api",1);1||has.add("dojo-v1x-i18n-Api",1);var _15a=dojo.i18n={},_15b=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,_15c=function(root,_15d,_15e,_15f){for(var _160=[_15e+_15f],_161=_15d.split("-"),_162="",i=0;i<_161.length;i++){_162+=(_162?"-":"")+_161[i];if(!root||root[_162]){_160.push(_15e+_162+"/"+_15f);_160.specificity=_162;}}return _160;},_163={},_164=function(_165,_166,_167){_167=_167?_167.toLowerCase():dojo.locale;_165=_165.replace(/\./g,"/");_166=_166.replace(/\./g,"/");return (/root/i.test(_167))?(_165+"/nls/"+_166):(_165+"/nls/"+_167+"/"+_166);},_168=dojo.getL10nName=function(_169,_16a,_16b){return _169=_159.id+"!"+_164(_169,_16a,_16b);},_16c=function(_16d,_16e,_16f,_170,_171,load){_16d([_16e],function(root){var _172=lang.clone(root.root||root.ROOT),_173=_15c(!root._v1x&&root,_171,_16f,_170);_16d(_173,function(){for(var i=1;i<_173.length;i++){_172=lang.mixin(lang.clone(_172),arguments[i]);}var _174=_16e+"/"+_171;_163[_174]=_172;_172.$locale=_173.specificity;load();});});},_175=function(id,_176){return /^\./.test(id)?_176(id):id;},_177=function(_178){var list=_158.extraLocale||[];list=lang.isArray(list)?list:[list];list.push(_178);return list;},load=function(id,_179,load){var _17a=_15b.exec(id),_17b=_17a[1]+"/",_17c=_17a[5]||_17a[4],_17d=_17b+_17c,_17e=(_17a[5]&&_17a[4]),_17f=_17e||dojo.locale||"",_180=_17d+"/"+_17f,_181=_17e?[_17f]:_177(_17f),_182=_181.length,_183=function(){if(!--_182){load(lang.delegate(_163[_180]));}},_184=id.split("*"),_185=_184[1]=="preload";if(has("dojo-preload-i18n-Api")){if(_185){if(!_163[id]){_163[id]=1;_18f(_184[2],json.parse(_184[3]),1,_179);}load(1);}if(_185||(_1ac(id,_179,load)&&!_163[_180])){return;}}else{if(_185){load(1);return;}}_157.forEach(_181,function(_186){var _187=_17d+"/"+_186;if(has("dojo-preload-i18n-Api")){_188(_187);}if(!_163[_187]){_16c(_179,_17d,_17b,_17c,_186,_183);}else{_183();}});};if(has("dojo-preload-i18n-Api")||1){var _189=_15a.normalizeLocale=function(_18a){var _18b=_18a?_18a.toLowerCase():dojo.locale;return _18b=="root"?"ROOT":_18b;},isXd=function(mid,_18c){return (1&&1)?_18c.isXdUrl(_156.toUrl(mid+".js")):true;},_18d=0,_18e=[],_18f=_15a._preloadLocalizations=function(_190,_191,_192,_193){_193=_193||_156;function _194(mid,_195){if(isXd(mid,_193)||_192){_193([mid],_195);}else{_1b0([mid],_195,_193);}};function _196(_197,func){var _198=_197.split("-");while(_198.length){if(func(_198.join("-"))){return;}_198.pop();}func("ROOT");};function _199(){_18d++;};function _19a(){--_18d;while(!_18d&&_18e.length){load.apply(null,_18e.shift());}};function _19b(path,name,loc,_19c){return _19c.toAbsMid(path+name+"/"+loc);};function _19d(_19e){_19e=_189(_19e);_196(_19e,function(loc){if(_157.indexOf(_191,loc)>=0){var mid=_190.replace(/\./g,"/")+"_"+loc;_199();_194(mid,function(_19f){for(var p in _19f){var _1a0=_19f[p],_1a1=p.match(/(.+)\/([^\/]+)$/),_1a2,_1a3;if(!_1a1){continue;}_1a2=_1a1[2];_1a3=_1a1[1]+"/";if(!_1a0._localized){continue;}var _1a4;if(loc==="ROOT"){var root=_1a4=_1a0._localized;delete _1a0._localized;root.root=_1a0;_163[_156.toAbsMid(p)]=root;}else{_1a4=_1a0._localized;_163[_19b(_1a3,_1a2,loc,_156)]=_1a0;}if(loc!==_19e){function _1a5(_1a6,_1a7,_1a8,_1a9){var _1aa=[],_1ab=[];_196(_19e,function(loc){if(_1a9[loc]){_1aa.push(_156.toAbsMid(_1a6+loc+"/"+_1a7));_1ab.push(_19b(_1a6,_1a7,loc,_156));}});if(_1aa.length){_199();_193(_1aa,function(){for(var i=_1aa.length-1;i>=0;i--){_1a8=lang.mixin(lang.clone(_1a8),arguments[i]);_163[_1ab[i]]=_1a8;}_163[_19b(_1a6,_1a7,_19e,_156)]=lang.clone(_1a8);_19a();});}else{_163[_19b(_1a6,_1a7,_19e,_156)]=_1a8;}};_1a5(_1a3,_1a2,_1a0,_1a4);}}_19a();});return true;}return false;});};_19d();_157.forEach(dojo.config.extraLocale,_19d);},_1ac=function(id,_1ad,load){if(_18d){_18e.push([id,_1ad,load]);}return _18d;},_188=function(){};}if(1){var _1ae={},_1af,_1b0=function(deps,_1b1,_1b2){var _1b3=[];_157.forEach(deps,function(mid){var url=_1b2.toUrl(mid+".js");function load(text){if(!_1af){_1af=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},"+"\t require = function(){define.called = 1;};"+"try{"+"define.called = 0;"+"eval(__bundle);"+"if(define.called==1)"+"return __amdValue;"+"if((__checkForLegacyModules = __checkForLegacyModules(__mid)))"+"return __checkForLegacyModules;"+"}catch(e){}"+"try{"+"return eval('('+__bundle+')');"+"}catch(e){"+"return e;"+"}");}var _1b4=_1af(text,_188,mid,_1ae);if(_1b4===_1ae){_1b3.push(_163[url]=_1ae.result);}else{if(_1b4 instanceof Error){console.error("failed to evaluate i18n bundle; url="+url,_1b4);_1b4={};}_1b3.push(_163[url]=(/nls\/[^\/]+\/[^\/]+$/.test(url)?_1b4:{root:_1b4,_v1x:1}));}};if(_163[url]){_1b3.push(_163[url]);}else{var _1b5=_1b2.syncLoadNls(mid);if(!_1b5){_1b5=_188(mid.replace(/nls\/([^\/]*)\/([^\/]*)$/,"nls/$2/$1"));}if(_1b5){_1b3.push(_1b5);}else{if(!xhr){try{_1b2.getText(url,true,load);}catch(e){_1b3.push(_163[url]={});}}else{xhr.get({url:url,sync:true,load:load,error:function(){_1b3.push(_163[url]={});}});}}}});_1b1&&_1b1.apply(null,_1b3);};_188=function(_1b6){for(var _1b7,_1b8=_1b6.split("/"),_1b9=dojo.global[_1b8[0]],i=1;_1b9&&i<_1b8.length-1;_1b9=_1b9[_1b8[i++]]){}if(_1b9){_1b7=_1b9[_1b8[i]];if(!_1b7){_1b7=_1b9[_1b8[i].replace(/-/g,"_")];}if(_1b7){_163[_1b6]=_1b7;}}return _1b7;};_15a.getLocalization=function(_1ba,_1bb,_1bc){var _1bd,_1be=_164(_1ba,_1bb,_1bc);load(_1be,(!isXd(_1be,_156)?function(deps,_1bf){_1b0(deps,_1bf,_156);}:_156),function(_1c0){_1bd=_1c0;});return _1bd;};}return lang.mixin(_15a,{dynamic:true,normalize:_175,load:load,cache:_163,getL10nName:_168});});},"dijit/hccss":function(){define(["dojo/dom-class","dojo/hccss","dojo/domReady","dojo/_base/window"],function(_1c1,has,_1c2,win){_1c2(function(){if(has("highcontrast")){_1c1.add(win.body(),"dijit_a11y");}});return has;});},"dijit/tree/ForestStoreModel":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","./TreeStoreModel"],function(_1c3,_1c4,_1c5,lang,_1c6){return _1c4("dijit.tree.ForestStoreModel",_1c6,{rootId:"$root$",rootLabel:"ROOT",query:null,constructor:function(_1c7){this.root={store:this,root:true,id:_1c7.rootId,label:_1c7.rootLabel,children:_1c7.rootChildren};},mayHaveChildren:function(item){return item===this.root||this.inherited(arguments);},getChildren:function(_1c8,_1c9,_1ca){if(_1c8===this.root){if(this.root.children){_1c9(this.root.children);}else{this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_1cb){this.root.children=_1cb;_1c9(_1cb);}),onError:_1ca});}}else{this.inherited(arguments);}},isItem:function(_1cc){return (_1cc===this.root)?true:this.inherited(arguments);},fetchItemByIdentity:function(_1cd){if(_1cd.identity==this.root.id){var _1ce=_1cd.scope||_1c5.global;if(_1cd.onItem){_1cd.onItem.call(_1ce,this.root);}}else{this.inherited(arguments);}},getIdentity:function(item){return (item===this.root)?this.root.id:this.inherited(arguments);},getLabel:function(item){return (item===this.root)?this.root.label:this.inherited(arguments);},newItem:function(args,_1cf,_1d0){if(_1cf===this.root){this.onNewRootItem(args);return this.store.newItem(args);}else{return this.inherited(arguments);}},onNewRootItem:function(){},pasteItem:function(_1d1,_1d2,_1d3,_1d4,_1d5){if(_1d2===this.root){if(!_1d4){this.onLeaveRoot(_1d1);}}this.inherited(arguments,[_1d1,_1d2===this.root?null:_1d2,_1d3===this.root?null:_1d3,_1d4,_1d5]);if(_1d3===this.root){this.onAddToRoot(_1d1);}},onAddToRoot:function(item){},onLeaveRoot:function(item){},_requeryTop:function(){var _1d6=this.root.children||[];this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_1d7){this.root.children=_1d7;if(_1d6.length!=_1d7.length||_1c3.some(_1d6,function(item,idx){return _1d7[idx]!=item;})){this.onChildrenChange(this.root,_1d7);}})});},onNewItem:function(item,_1d8){this._requeryTop();this.inherited(arguments);},onDeleteItem:function(item){if(_1c3.indexOf(this.root.children,item)!=-1){this._requeryTop();}this.inherited(arguments);},onSetItem:function(item,_1d9,_1da,_1db){this._requeryTop();this.inherited(arguments);}});});},"dojo/node":function(){define(["./_base/kernel","./has","require"],function(_1dc,has,_1dd){var _1de=_1dc.global.require&&_1dc.global.require.nodeRequire;if(!_1de){throw new Error("Cannot find the Node.js require");}var _1df=_1de("module");return {load:function(id,_1e0,load){if(_1df._findPath&&_1df._nodeModulePaths){var _1e1=_1df._findPath(id,_1df._nodeModulePaths(_1e0.toUrl(".")));if(_1e1!==false){id=_1e1;}}var _1e2=define,_1e3;define=undefined;try{_1e3=_1de(id);}finally{define=_1e2;}load(_1e3);},normalize:function(id,_1e4){if(id.charAt(0)==="."){id=_1dd.toUrl(_1e4("./"+id));}return id;}};});},"dijit/form/_ComboBoxMenuMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/has","dojo/i18n","dojo/i18n!./nls/ComboBox"],function(_1e5,_1e6,_1e7,has,i18n){var _1e8=_1e6("dijit.form._ComboBoxMenuMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{_messages:null,postMixInProperties:function(){this.inherited(arguments);this._messages=i18n.getLocalization("dijit.form","ComboBox",this.lang);},buildRendering:function(){this.inherited(arguments);this.previousButton.innerHTML=this._messages["previousMessage"];this.nextButton.innerHTML=this._messages["nextMessage"];},_setValueAttr:function(_1e9){this._set("value",_1e9);this.onChange(_1e9);},onClick:function(node){if(node==this.previousButton){this._setSelectedAttr(null);this.onPage(-1);}else{if(node==this.nextButton){this._setSelectedAttr(null);this.onPage(1);}else{this.onChange(node);}}},onChange:function(){},onPage:function(){},onClose:function(){this._setSelectedAttr(null);},_createOption:function(item,_1ea){var _1eb=this._createMenuItem();var _1ec=_1ea(item);if(_1ec.html){_1eb.innerHTML=_1ec.label;}else{_1eb.appendChild(_1eb.ownerDocument.createTextNode(_1ec.label));}if(_1eb.innerHTML==""){_1eb.innerHTML="&#160;";}return _1eb;},createOptions:function(_1ed,_1ee,_1ef){this.items=_1ed;this.previousButton.style.display=(_1ee.start==0)?"none":"";_1e7.set(this.previousButton,"id",this.id+"_prev");_1e5.forEach(_1ed,function(item,i){var _1f0=this._createOption(item,_1ef);_1f0.setAttribute("item",i);_1e7.set(_1f0,"id",this.id+i);this.nextButton.parentNode.insertBefore(_1f0,this.nextButton);},this);var _1f1=false;if(_1ed.total&&!_1ed.total.then&&_1ed.total!=-1){if((_1ee.start+_1ee.count)<_1ed.total){_1f1=true;}else{if((_1ee.start+_1ee.count)>_1ed.total&&_1ee.count==_1ed.length){_1f1=true;}}}else{if(_1ee.count==_1ed.length){_1f1=true;}}this.nextButton.style.display=_1f1?"":"none";_1e7.set(this.nextButton,"id",this.id+"_next");},clearResultList:function(){var _1f2=this.containerNode;while(_1f2.childNodes.length>2){_1f2.removeChild(_1f2.childNodes[_1f2.childNodes.length-2]);}this._setSelectedAttr(null);},highlightFirstOption:function(){this.selectFirstNode();},highlightLastOption:function(){this.selectLastNode();},selectFirstNode:function(){this.inherited(arguments);if(this.getHighlightedOption()==this.previousButton){this.selectNextNode();}},selectLastNode:function(){this.inherited(arguments);if(this.getHighlightedOption()==this.nextButton){this.selectPreviousNode();}},getHighlightedOption:function(){return this.selected;}});if(has("dojo-bidi")){_1e8=_1e6("dijit.form._ComboBoxMenuMixin",_1e8,{_createOption:function(){var _1f3=this.inherited(arguments);this.applyTextDir(_1f3);return _1f3;}});}return _1e8;});},"dijit/form/_SearchMixin":function(){define(["dojo/_base/declare","dojo/keys","dojo/_base/lang","dojo/query","dojo/string","dojo/when","../registry"],function(_1f4,keys,lang,_1f5,_1f6,when,_1f7){return _1f4("dijit.form._SearchMixin",null,{pageSize:Infinity,store:null,fetchProperties:{},query:{},list:"",_setListAttr:function(list){this._set("list",list);},searchDelay:200,searchAttr:"name",queryExpr:"${0}*",ignoreCase:true,_patternToRegExp:function(_1f8){return new RegExp("^"+_1f8.replace(/(\\.)|(\*)|(\?)|\W/g,function(str,_1f9,star,_1fa){return star?".*":_1fa?".":_1f9?_1f9:"\\"+str;})+"$",this.ignoreCase?"mi":"m");},_abortQuery:function(){if(this.searchTimer){this.searchTimer=this.searchTimer.remove();}if(this._queryDeferHandle){this._queryDeferHandle=this._queryDeferHandle.remove();}if(this._fetchHandle){if(this._fetchHandle.abort){this._cancelingQuery=true;this._fetchHandle.abort();this._cancelingQuery=false;}if(this._fetchHandle.cancel){this._cancelingQuery=true;this._fetchHandle.cancel();this._cancelingQuery=false;}this._fetchHandle=null;}},_processInput:function(evt){if(this.disabled||this.readOnly){return;}var key=evt.charOrCode;this._prev_key_backspace=false;if(key==keys.DELETE||key==keys.BACKSPACE){this._prev_key_backspace=true;this._maskValidSubsetError=true;}if(!this.store){this.onSearch();}else{this.searchTimer=this.defer("_startSearchFromInput",1);}},onSearch:function(){},_startSearchFromInput:function(){this._startSearch(this.focusNode.value);},_startSearch:function(text){this._abortQuery();var _1fb=this,_1f5=lang.clone(this.query),_1fc={start:0,count:this.pageSize,queryOptions:{ignoreCase:this.ignoreCase,deep:true}},qs=_1f6.substitute(this.queryExpr,[text.replace(/([\\\*\?])/g,"\\$1")]),q,_1fd=function(){var _1fe=_1fb._fetchHandle=_1fb.store.query(_1f5,_1fc);if(_1fb.disabled||_1fb.readOnly||(q!==_1fb._lastQuery)){return;}when(_1fe,function(res){_1fb._fetchHandle=null;if(!_1fb.disabled&&!_1fb.readOnly&&(q===_1fb._lastQuery)){when(_1fe.total,function(_1ff){res.total=_1ff;var _200=_1fb.pageSize;if(isNaN(_200)||_200>res.total){_200=res.total;}res.nextPage=function(_201){_1fc.direction=_201=_201!==false;_1fc.count=_200;if(_201){_1fc.start+=res.length;if(_1fc.start>=res.total){_1fc.count=0;}}else{_1fc.start-=_200;if(_1fc.start<0){_1fc.count=Math.max(_200+_1fc.start,0);_1fc.start=0;}}if(_1fc.count<=0){res.length=0;_1fb.onSearch(res,_1f5,_1fc);}else{_1fd();}};_1fb.onSearch(res,_1f5,_1fc);});}},function(err){_1fb._fetchHandle=null;if(!_1fb._cancelingQuery){console.error(_1fb.declaredClass+" "+err.toString());}});};lang.mixin(_1fc,this.fetchProperties);if(this.store._oldAPI){q=qs;}else{q=this._patternToRegExp(qs);q.toString=function(){return qs;};}this._lastQuery=_1f5[this.searchAttr]=q;this._queryDeferHandle=this.defer(_1fd,this.searchDelay);},constructor:function(){this.query={};this.fetchProperties={};},postMixInProperties:function(){if(!this.store){var list=this.list;if(list){this.store=_1f7.byId(list);}}this.inherited(arguments);}});});},"dojo/parser":function(){define(["require","./_base/kernel","./_base/lang","./_base/array","./_base/config","./dom","./_base/window","./_base/url","./aspect","./promise/all","./date/stamp","./Deferred","./has","./query","./on","./ready"],function(_202,dojo,_203,_204,_205,dom,_206,_207,_208,all,_209,_20a,has,_20b,don,_20c){new Date("X");function _20d(text){return eval("("+text+")");};var _20e=0;_208.after(_203,"extend",function(){_20e++;},true);function _20f(ctor){var map=ctor._nameCaseMap,_210=ctor.prototype;if(!map||map._extendCnt<_20e){map=ctor._nameCaseMap={};for(var name in _210){if(name.charAt(0)==="_"){continue;}map[name.toLowerCase()]=name;}map._extendCnt=_20e;}return map;};function _211(_212,_213){if(!_213){_213=_202;}var _214=_213._dojoParserCtorMap||(_213._dojoParserCtorMap={});var ts=_212.join();if(!_214[ts]){var _215=[];for(var i=0,l=_212.length;i<l;i++){var t=_212[i];_215[_215.length]=(_214[t]=_214[t]||(_203.getObject(t)||(~t.indexOf("/")&&_213(t))));}var ctor=_215.shift();_214[ts]=_215.length?(ctor.createSubclass?ctor.createSubclass(_215):ctor.extend.apply(ctor,_215)):ctor;}return _214[ts];};var _216={_clearCache:function(){_20e++;_ctorMap={};},_functionFromScript:function(_217,_218){var _219="",_21a="",_21b=(_217.getAttribute(_218+"args")||_217.getAttribute("args")),_21c=_217.getAttribute("with");var _21d=(_21b||"").split(/\s*,\s*/);if(_21c&&_21c.length){_204.forEach(_21c.split(/\s*,\s*/),function(part){_219+="with("+part+"){";_21a+="}";});}return new Function(_21d,_219+_217.innerHTML+_21a);},instantiate:function(_21e,_21f,_220){_21f=_21f||{};_220=_220||{};var _221=(_220.scope||dojo._scopeName)+"Type",_222="data-"+(_220.scope||dojo._scopeName)+"-",_223=_222+"type",_224=_222+"mixins";var list=[];_204.forEach(_21e,function(node){var type=_221 in _21f?_21f[_221]:node.getAttribute(_223)||node.getAttribute(_221);if(type){var _225=node.getAttribute(_224),_226=_225?[type].concat(_225.split(/\s*,\s*/)):[type];list.push({node:node,types:_226});}});return this._instantiate(list,_21f,_220);},_instantiate:function(_227,_228,_229,_22a){var _22b=_204.map(_227,function(obj){var ctor=obj.ctor||_211(obj.types,_229.contextRequire);if(!ctor){throw new Error("Unable to resolve constructor for: '"+obj.types.join()+"'");}return this.construct(ctor,obj.node,_228,_229,obj.scripts,obj.inherited);},this);function _22c(_22d){if(!_228._started&&!_229.noStart){_204.forEach(_22d,function(_22e){if(typeof _22e.startup==="function"&&!_22e._started){_22e.startup();}});}return _22d;};if(_22a){return all(_22b).then(_22c);}else{return _22c(_22b);}},construct:function(ctor,node,_22f,_230,_231,_232){var _233=ctor&&ctor.prototype;_230=_230||{};var _234={};if(_230.defaults){_203.mixin(_234,_230.defaults);}if(_232){_203.mixin(_234,_232);}var _235;if(has("dom-attributes-explicit")){_235=node.attributes;}else{if(has("dom-attributes-specified-flag")){_235=_204.filter(node.attributes,function(a){return a.specified;});}else{var _236=/^input$|^img$/i.test(node.nodeName)?node:node.cloneNode(false),_237=_236.outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g,"").replace(/^\s*<[a-zA-Z0-9]*\s*/,"").replace(/\s*>.*$/,"");_235=_204.map(_237.split(/\s+/),function(name){var _238=name.toLowerCase();return {name:name,value:(node.nodeName=="LI"&&name=="value")||_238=="enctype"?node.getAttribute(_238):node.getAttributeNode(_238).value};});}}var _239=_230.scope||dojo._scopeName,_23a="data-"+_239+"-",hash={};if(_239!=="dojo"){hash[_23a+"props"]="data-dojo-props";hash[_23a+"type"]="data-dojo-type";hash[_23a+"mixins"]="data-dojo-mixins";hash[_239+"type"]="dojotype";hash[_23a+"id"]="data-dojo-id";}var i=0,item,_23b=[],_23c,_23d;while(item=_235[i++]){var name=item.name,_23e=name.toLowerCase(),_23f=item.value;switch(hash[_23e]||_23e){case "data-dojo-type":case "dojotype":case "data-dojo-mixins":break;case "data-dojo-props":_23d=_23f;break;case "data-dojo-id":case "jsid":_23c=_23f;break;case "data-dojo-attach-point":case "dojoattachpoint":_234.dojoAttachPoint=_23f;break;case "data-dojo-attach-event":case "dojoattachevent":_234.dojoAttachEvent=_23f;break;case "class":_234["class"]=node.className;break;case "style":_234["style"]=node.style&&node.style.cssText;break;default:if(!(name in _233)){var map=_20f(ctor);name=map[_23e]||name;}if(name in _233){switch(typeof _233[name]){case "string":_234[name]=_23f;break;case "number":_234[name]=_23f.length?Number(_23f):NaN;break;case "boolean":_234[name]=_23f.toLowerCase()!="false";break;case "function":if(_23f===""||_23f.search(/[^\w\.]+/i)!=-1){_234[name]=new Function(_23f);}else{_234[name]=_203.getObject(_23f,false)||new Function(_23f);}_23b.push(name);break;default:var pVal=_233[name];_234[name]=(pVal&&"length" in pVal)?(_23f?_23f.split(/\s*,\s*/):[]):(pVal instanceof Date)?(_23f==""?new Date(""):_23f=="now"?new Date():_209.fromISOString(_23f)):(pVal instanceof _207)?(dojo.baseUrl+_23f):_20d(_23f);}}else{_234[name]=_23f;}}}for(var j=0;j<_23b.length;j++){var _240=_23b[j].toLowerCase();node.removeAttribute(_240);node[_240]=null;}if(_23d){try{_23d=_20d.call(_230.propsThis,"{"+_23d+"}");_203.mixin(_234,_23d);}catch(e){throw new Error(e.toString()+" in data-dojo-props='"+_23d+"'");}}_203.mixin(_234,_22f);if(!_231){_231=(ctor&&(ctor._noScript||_233._noScript)?[]:_20b("> script[type^='dojo/']",node));}var _241=[],_242=[],_243=[],ons=[];if(_231){for(i=0;i<_231.length;i++){var _244=_231[i];node.removeChild(_244);var _245=(_244.getAttribute(_23a+"event")||_244.getAttribute("event")),prop=_244.getAttribute(_23a+"prop"),_246=_244.getAttribute(_23a+"method"),_247=_244.getAttribute(_23a+"advice"),_248=_244.getAttribute("type"),nf=this._functionFromScript(_244,_23a);if(_245){if(_248=="dojo/connect"){_241.push({method:_245,func:nf});}else{if(_248=="dojo/on"){ons.push({event:_245,func:nf});}else{_234[_245]=nf;}}}else{if(_248=="dojo/aspect"){_241.push({method:_246,advice:_247,func:nf});}else{if(_248=="dojo/watch"){_243.push({prop:prop,func:nf});}else{_242.push(nf);}}}}}var _249=ctor.markupFactory||_233.markupFactory;var _24a=_249?_249(_234,node,ctor):new ctor(_234,node);function _24b(_24c){if(_23c){_203.setObject(_23c,_24c);}for(i=0;i<_241.length;i++){_208[_241[i].advice||"after"](_24c,_241[i].method,_203.hitch(_24c,_241[i].func),true);}for(i=0;i<_242.length;i++){_242[i].call(_24c);}for(i=0;i<_243.length;i++){_24c.watch(_243[i].prop,_243[i].func);}for(i=0;i<ons.length;i++){don(_24c,ons[i].event,ons[i].func);}return _24c;};if(_24a.then){return _24a.then(_24b);}else{return _24b(_24a);}},scan:function(root,_24d){var list=[],mids=[],_24e={};var _24f=(_24d.scope||dojo._scopeName)+"Type",_250="data-"+(_24d.scope||dojo._scopeName)+"-",_251=_250+"type",_252=_250+"textdir",_253=_250+"mixins";var node=root.firstChild;var _254=_24d.inherited;if(!_254){function _255(node,attr){return (node.getAttribute&&node.getAttribute(attr))||(node.parentNode&&_255(node.parentNode,attr));};_254={dir:_255(root,"dir"),lang:_255(root,"lang"),textDir:_255(root,_252)};for(var key in _254){if(!_254[key]){delete _254[key];}}}var _256={inherited:_254};var _257;var _258;function _259(_25a){if(!_25a.inherited){_25a.inherited={};var node=_25a.node,_25b=_259(_25a.parent);var _25c={dir:node.getAttribute("dir")||_25b.dir,lang:node.getAttribute("lang")||_25b.lang,textDir:node.getAttribute(_252)||_25b.textDir};for(var key in _25c){if(_25c[key]){_25a.inherited[key]=_25c[key];}}}return _25a.inherited;};while(true){if(!node){if(!_256||!_256.node){break;}node=_256.node.nextSibling;_258=false;_256=_256.parent;_257=_256.scripts;continue;}if(node.nodeType!=1){node=node.nextSibling;continue;}if(_257&&node.nodeName.toLowerCase()=="script"){type=node.getAttribute("type");if(type&&/^dojo\/\w/i.test(type)){_257.push(node);}node=node.nextSibling;continue;}if(_258){node=node.nextSibling;continue;}var type=node.getAttribute(_251)||node.getAttribute(_24f);var _25d=node.firstChild;if(!type&&(!_25d||(_25d.nodeType==3&&!_25d.nextSibling))){node=node.nextSibling;continue;}var _25e;var ctor=null;if(type){var _25f=node.getAttribute(_253),_260=_25f?[type].concat(_25f.split(/\s*,\s*/)):[type];try{ctor=_211(_260,_24d.contextRequire);}catch(e){}if(!ctor){_204.forEach(_260,function(t){if(~t.indexOf("/")&&!_24e[t]){_24e[t]=true;mids[mids.length]=t;}});}var _261=ctor&&!ctor.prototype._noScript?[]:null;_25e={types:_260,ctor:ctor,parent:_256,node:node,scripts:_261};_25e.inherited=_259(_25e);list.push(_25e);}else{_25e={node:node,scripts:_257,parent:_256};}_257=_261;_258=node.stopParser||(ctor&&ctor.prototype.stopParser&&!(_24d.template));_256=_25e;node=_25d;}var d=new _20a();if(mids.length){if(has("dojo-debug-messages")){console.warn("WARNING: Modules being Auto-Required: "+mids.join(", "));}var r=_24d.contextRequire||_202;r(mids,function(){d.resolve(_204.filter(list,function(_262){if(!_262.ctor){try{_262.ctor=_211(_262.types,_24d.contextRequire);}catch(e){}}var _263=_262.parent;while(_263&&!_263.types){_263=_263.parent;}var _264=_262.ctor&&_262.ctor.prototype;_262.instantiateChildren=!(_264&&_264.stopParser&&!(_24d.template));_262.instantiate=!_263||(_263.instantiate&&_263.instantiateChildren);return _262.instantiate;}));});}else{d.resolve(list);}return d.promise;},_require:function(_265,_266){var hash=_20d("{"+_265.innerHTML+"}"),vars=[],mids=[],d=new _20a();var _267=(_266&&_266.contextRequire)||_202;for(var name in hash){vars.push(name);mids.push(hash[name]);}_267(mids,function(){for(var i=0;i<vars.length;i++){_203.setObject(vars[i],arguments[i]);}d.resolve(arguments);});return d.promise;},_scanAmd:function(root,_268){var _269=new _20a(),_26a=_269.promise;_269.resolve(true);var self=this;_20b("script[type='dojo/require']",root).forEach(function(node){_26a=_26a.then(function(){return self._require(node,_268);});node.parentNode.removeChild(node);});return _26a;},parse:function(_26b,_26c){if(_26b&&typeof _26b!="string"&&!("nodeType" in _26b)){_26c=_26b;_26b=_26c.rootNode;}var root=_26b?dom.byId(_26b):_206.body();_26c=_26c||{};var _26d=_26c.template?{template:true}:{},_26e=[],self=this;var p=this._scanAmd(root,_26c).then(function(){return self.scan(root,_26c);}).then(function(_26f){return self._instantiate(_26f,_26d,_26c,true);}).then(function(_270){return _26e=_26e.concat(_270);}).otherwise(function(e){console.error("dojo/parser::parse() error",e);throw e;});_203.mixin(_26e,p);return _26e;}};if(1){dojo.parser=_216;}if(_205.parseOnLoad){_20c(100,_216,"parse");}return _216;});},"dojo/dnd/Manager":function(){define(["../_base/array","../_base/declare","../_base/lang","../_base/window","../dom-class","../Evented","../has","../keys","../on","../topic","../touch","./common","./autoscroll","./Avatar"],function(_271,_272,lang,win,_273,_274,has,keys,on,_275,_276,dnd,_277,_278){var _279=_272("dojo.dnd.Manager",[_274],{constructor:function(){this.avatar=null;this.source=null;this.nodes=[];this.copy=true;this.target=null;this.canDropFlag=false;this.events=[];},OFFSET_X:has("touch")?4:16,OFFSET_Y:has("touch")?4:16,overSource:function(_27a){if(this.avatar){this.target=(_27a&&_27a.targetState!="Disabled")?_27a:null;this.canDropFlag=Boolean(this.target);this.avatar.update();}_275.publish("/dnd/source/over",_27a);},outSource:function(_27b){if(this.avatar){if(this.target==_27b){this.target=null;this.canDropFlag=false;this.avatar.update();_275.publish("/dnd/source/over",null);}}else{_275.publish("/dnd/source/over",null);}},startDrag:function(_27c,_27d,copy){_277.autoScrollStart(win.doc);this.source=_27c;this.nodes=_27d;this.copy=Boolean(copy);this.avatar=this.makeAvatar();win.body().appendChild(this.avatar.node);_275.publish("/dnd/start",_27c,_27d,this.copy);function _27e(e){e.preventDefault();e.stopPropagation();};this.events=[on(win.doc,_276.move,lang.hitch(this,"onMouseMove")),on(win.doc,_276.release,lang.hitch(this,"onMouseUp")),on(win.doc,"keydown",lang.hitch(this,"onKeyDown")),on(win.doc,"keyup",lang.hitch(this,"onKeyUp")),on(win.doc,"dragstart",_27e),on(win.body(),"selectstart",_27e)];var c="dojoDnd"+(copy?"Copy":"Move");_273.add(win.body(),c);},canDrop:function(flag){var _27f=Boolean(this.target&&flag);if(this.canDropFlag!=_27f){this.canDropFlag=_27f;this.avatar.update();}},stopDrag:function(){_273.remove(win.body(),["dojoDndCopy","dojoDndMove"]);_271.forEach(this.events,function(_280){_280.remove();});this.events=[];this.avatar.destroy();this.avatar=null;this.source=this.target=null;this.nodes=[];},makeAvatar:function(){return new _278(this);},updateAvatar:function(){this.avatar.update();},onMouseMove:function(e){var a=this.avatar;if(a){_277.autoScrollNodes(e);var s=a.node.style;s.left=(e.pageX+this.OFFSET_X)+"px";s.top=(e.pageY+this.OFFSET_Y)+"px";var copy=Boolean(this.source.copyState(dnd.getCopyKeyState(e)));if(this.copy!=copy){this._setCopyStatus(copy);}}if(has("touch")){e.preventDefault();}},onMouseUp:function(e){if(this.avatar){if(this.target&&this.canDropFlag){var copy=Boolean(this.source.copyState(dnd.getCopyKeyState(e)));_275.publish("/dnd/drop/before",this.source,this.nodes,copy,this.target,e);_275.publish("/dnd/drop",this.source,this.nodes,copy,this.target,e);}else{_275.publish("/dnd/cancel");}this.stopDrag();}},onKeyDown:function(e){if(this.avatar){switch(e.keyCode){case keys.CTRL:var copy=Boolean(this.source.copyState(true));if(this.copy!=copy){this._setCopyStatus(copy);}break;case keys.ESCAPE:_275.publish("/dnd/cancel");this.stopDrag();break;}}},onKeyUp:function(e){if(this.avatar&&e.keyCode==keys.CTRL){var copy=Boolean(this.source.copyState(false));if(this.copy!=copy){this._setCopyStatus(copy);}}},_setCopyStatus:function(copy){this.copy=copy;this.source._markDndStatus(this.copy);this.updateAvatar();_273.replace(win.body(),"dojoDnd"+(this.copy?"Copy":"Move"),"dojoDnd"+(this.copy?"Move":"Copy"));}});dnd._manager=null;_279.manager=dnd.manager=function(){if(!dnd._manager){dnd._manager=new _279();}return dnd._manager;};return _279;});},"dijit/form/ToggleButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","./Button","./_ToggleButtonMixin"],function(_281,_282,_283,_284){return _281("dijit.form.ToggleButton",[_283,_284],{baseClass:"dijitToggleButton",setChecked:function(_285){_282.deprecated("setChecked("+_285+") is deprecated. Use set('checked',"+_285+") instead.","","2.0");this.set("checked",_285);}});});},"dojo/date/stamp":function(){define(["../_base/lang","../_base/array"],function(lang,_286){var _287={};lang.setObject("dojo.date.stamp",_287);_287.fromISOString=function(_288,_289){if(!_287._isoRegExp){_287._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;}var _28a=_287._isoRegExp.exec(_288),_28b=null;if(_28a){_28a.shift();if(_28a[1]){_28a[1]--;}if(_28a[6]){_28a[6]*=1000;}if(_289){_289=new Date(_289);_286.forEach(_286.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(prop){return _289["get"+prop]();}),function(_28c,_28d){_28a[_28d]=_28a[_28d]||_28c;});}_28b=new Date(_28a[0]||1970,_28a[1]||0,_28a[2]||1,_28a[3]||0,_28a[4]||0,_28a[5]||0,_28a[6]||0);if(_28a[0]<100){_28b.setFullYear(_28a[0]||1970);}var _28e=0,_28f=_28a[7]&&_28a[7].charAt(0);if(_28f!="Z"){_28e=((_28a[8]||0)*60)+(Number(_28a[9])||0);if(_28f!="-"){_28e*=-1;}}if(_28f){_28e-=_28b.getTimezoneOffset();}if(_28e){_28b.setTime(_28b.getTime()+_28e*60000);}}return _28b;};_287.toISOString=function(_290,_291){var _292=function(n){return (n<10)?"0"+n:n;};_291=_291||{};var _293=[],_294=_291.zulu?"getUTC":"get",date="";if(_291.selector!="time"){var year=_290[_294+"FullYear"]();date=["0000".substr((year+"").length)+year,_292(_290[_294+"Month"]()+1),_292(_290[_294+"Date"]())].join("-");}_293.push(date);if(_291.selector!="date"){var time=[_292(_290[_294+"Hours"]()),_292(_290[_294+"Minutes"]()),_292(_290[_294+"Seconds"]())].join(":");var _295=_290[_294+"Milliseconds"]();if(_291.milliseconds){time+="."+(_295<100?"0":"")+_292(_295);}if(_291.zulu){time+="Z";}else{if(_291.selector!="time"){var _296=_290.getTimezoneOffset();var _297=Math.abs(_296);time+=(_296>0?"-":"+")+_292(Math.floor(_297/60))+":"+_292(_297%60);}}_293.push(time);}return _293.join("T");};return _287;});},"dojo/Stateful":function(){define(["./_base/declare","./_base/lang","./_base/array","./when"],function(_298,lang,_299,when){return _298("dojo.Stateful",null,{_attrPairNames:{},_getAttrNames:function(name){var apn=this._attrPairNames;if(apn[name]){return apn[name];}return (apn[name]={s:"_"+name+"Setter",g:"_"+name+"Getter"});},postscript:function(_29a){if(_29a){this.set(_29a);}},_get:function(name,_29b){return typeof this[_29b.g]==="function"?this[_29b.g]():this[name];},get:function(name){return this._get(name,this._getAttrNames(name));},set:function(name,_29c){if(typeof name==="object"){for(var x in name){if(name.hasOwnProperty(x)&&x!="_watchCallbacks"){this.set(x,name[x]);}}return this;}var _29d=this._getAttrNames(name),_29e=this._get(name,_29d),_29f=this[_29d.s],_2a0;if(typeof _29f==="function"){_2a0=_29f.apply(this,Array.prototype.slice.call(arguments,1));}else{this[name]=_29c;}if(this._watchCallbacks){var self=this;when(_2a0,function(){self._watchCallbacks(name,_29e,_29c);});}return this;},_changeAttrValue:function(name,_2a1){var _2a2=this.get(name);this[name]=_2a1;if(this._watchCallbacks){this._watchCallbacks(name,_2a2,_2a1);}return this;},watch:function(name,_2a3){var _2a4=this._watchCallbacks;if(!_2a4){var self=this;_2a4=this._watchCallbacks=function(name,_2a5,_2a6,_2a7){var _2a8=function(_2a9){if(_2a9){_2a9=_2a9.slice();for(var i=0,l=_2a9.length;i<l;i++){_2a9[i].call(self,name,_2a5,_2a6);}}};_2a8(_2a4["_"+name]);if(!_2a7){_2a8(_2a4["*"]);}};}if(!_2a3&&typeof name==="function"){_2a3=name;name="*";}else{name="_"+name;}var _2aa=_2a4[name];if(typeof _2aa!=="object"){_2aa=_2a4[name]=[];}_2aa.push(_2a3);var _2ab={};_2ab.unwatch=_2ab.remove=function(){var _2ac=_299.indexOf(_2aa,_2a3);if(_2ac>-1){_2aa.splice(_2ac,1);}};return _2ab;}});});},"dijit/layout/AccordionContainer":function(){define(["require","dojo/_base/array","dojo/_base/declare","dojo/_base/fx","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/keys","dojo/_base/lang","dojo/sniff","dojo/topic","../focus","../_base/manager","dojo/ready","../_Widget","../_Container","../_TemplatedMixin","../_CssStateMixin","./StackContainer","./ContentPane","dojo/text!./templates/AccordionButton.html","../a11yclick"],function(_2ad,_2ae,_2af,fx,dom,_2b0,_2b1,_2b2,_2b3,keys,lang,has,_2b4,_2b5,_2b6,_2b7,_2b8,_2b9,_2ba,_2bb,_2bc,_2bd,_2be){function size(_2bf,dim){_2bf.resize?_2bf.resize(dim):_2b3.setMarginBox(_2bf.domNode,dim);};var _2c0=_2af("dijit.layout._AccordionButton",[_2b8,_2ba,_2bb],{templateString:_2be,label:"",_setLabelAttr:{node:"titleTextNode",type:"innerHTML"},title:"",_setTitleAttr:{node:"titleTextNode",type:"attribute",attribute:"title"},iconClassAttr:"",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitAccordionTitle",getParent:function(){return this.parent;},buildRendering:function(){this.inherited(arguments);var _2c1=this.id.replace(" ","_");_2b0.set(this.titleTextNode,"id",_2c1+"_title");this.focusNode.setAttribute("aria-labelledby",_2b0.get(this.titleTextNode,"id"));dom.setSelectable(this.domNode,false);},getTitleHeight:function(){return _2b3.getMarginSize(this.domNode).h;},_onTitleClick:function(){var _2c2=this.getParent();_2c2.selectChild(this.contentWidget,true);_2b5.focus(this.focusNode);},_onTitleKeyDown:function(evt){return this.getParent()._onKeyDown(evt,this.contentWidget);},_setSelectedAttr:function(_2c3){this._set("selected",_2c3);this.focusNode.setAttribute("aria-expanded",_2c3?"true":"false");this.focusNode.setAttribute("aria-selected",_2c3?"true":"false");this.focusNode.setAttribute("tabIndex",_2c3?"0":"-1");}});if(has("dojo-bidi")){_2c0.extend({_setLabelAttr:function(_2c4){this._set("label",_2c4);_2b0.set(this.titleTextNode,"innerHTML",_2c4);this.applyTextDir(this.titleTextNode);},_setTitleAttr:function(_2c5){this._set("title",_2c5);_2b0.set(this.titleTextNode,"title",_2c5);this.applyTextDir(this.titleTextNode);}});}var _2c6=_2af("dijit.layout._AccordionInnerContainer"+(has("dojo-bidi")?"_NoBidi":""),[_2b8,_2bb],{baseClass:"dijitAccordionInnerContainer",isLayoutContainer:true,buildRendering:function(){this.domNode=_2b2.place("<div class='"+this.baseClass+"' role='presentation'>",this.contentWidget.domNode,"after");var _2c7=this.contentWidget,cls=lang.isString(this.buttonWidget)?lang.getObject(this.buttonWidget):this.buttonWidget;this.button=_2c7._buttonWidget=(new cls({contentWidget:_2c7,label:_2c7.title,title:_2c7.tooltip,dir:_2c7.dir,lang:_2c7.lang,textDir:_2c7.textDir||this.textDir,iconClass:_2c7.iconClass,id:_2c7.id+"_button",parent:this.parent})).placeAt(this.domNode);this.containerNode=_2b2.place("<div class='dijitAccordionChildWrapper' role='tabpanel' style='display:none'>",this.domNode);this.containerNode.setAttribute("aria-labelledby",this.button.id);_2b2.place(this.contentWidget.domNode,this.containerNode);},postCreate:function(){this.inherited(arguments);var _2c8=this.button,cw=this.contentWidget;this._contentWidgetWatches=[cw.watch("title",lang.hitch(this,function(name,_2c9,_2ca){_2c8.set("label",_2ca);})),cw.watch("tooltip",lang.hitch(this,function(name,_2cb,_2cc){_2c8.set("title",_2cc);})),cw.watch("iconClass",lang.hitch(this,function(name,_2cd,_2ce){_2c8.set("iconClass",_2ce);}))];},_setSelectedAttr:function(_2cf){this._set("selected",_2cf);this.button.set("selected",_2cf);if(_2cf){var cw=this.contentWidget;if(cw.onSelected){cw.onSelected();}}},startup:function(){this.contentWidget.startup();},destroy:function(){this.button.destroyRecursive();_2ae.forEach(this._contentWidgetWatches||[],function(w){w.unwatch();});delete this.contentWidget._buttonWidget;delete this.contentWidget._wrapperWidget;this.inherited(arguments);},destroyDescendants:function(_2d0){this.contentWidget.destroyRecursive(_2d0);}});if(has("dojo-bidi")){_2c6=_2af("dijit.layout._AccordionInnerContainer",_2c6,{postCreate:function(){this.inherited(arguments);var _2d1=this.button;this._contentWidgetWatches.push(this.contentWidget.watch("textDir",function(name,_2d2,_2d3){_2d1.set("textDir",_2d3);}));}});}var _2d4=_2af("dijit.layout.AccordionContainer",_2bc,{duration:_2b6.defaultDuration,buttonWidget:_2c0,baseClass:"dijitAccordionContainer",buildRendering:function(){this.inherited(arguments);this.domNode.style.overflow="hidden";this.domNode.setAttribute("role","tablist");},startup:function(){if(this._started){return;}this.inherited(arguments);if(this.selectedChildWidget){this.selectedChildWidget._wrapperWidget.set("selected",true);}},layout:function(){var _2d5=this.selectedChildWidget;if(!_2d5){return;}var _2d6=_2d5._wrapperWidget.domNode,_2d7=_2b3.getMarginExtents(_2d6),_2d8=_2b3.getPadBorderExtents(_2d6),_2d9=_2d5._wrapperWidget.containerNode,_2da=_2b3.getMarginExtents(_2d9),_2db=_2b3.getPadBorderExtents(_2d9),_2dc=this._contentBox;var _2dd=0;_2ae.forEach(this.getChildren(),function(_2de){if(_2de!=_2d5){_2dd+=_2b3.getMarginSize(_2de._wrapperWidget.domNode).h;}});this._verticalSpace=_2dc.h-_2dd-_2d7.h-_2d8.h-_2da.h-_2db.h-_2d5._buttonWidget.getTitleHeight();this._containerContentBox={h:this._verticalSpace,w:this._contentBox.w-_2d7.w-_2d8.w-_2da.w-_2db.w};if(_2d5){size(_2d5,this._containerContentBox);}},_setupChild:function(_2df){_2df._wrapperWidget=_2c6({contentWidget:_2df,buttonWidget:this.buttonWidget,id:_2df.id+"_wrapper",dir:_2df.dir,lang:_2df.lang,textDir:_2df.textDir||this.textDir,parent:this});this.inherited(arguments);_2b2.place(_2df.domNode,_2df._wrapper,"replace");},removeChild:function(_2e0){if(_2e0._wrapperWidget){_2b2.place(_2e0.domNode,_2e0._wrapperWidget.domNode,"after");_2e0._wrapperWidget.destroy();delete _2e0._wrapperWidget;}_2b1.remove(_2e0.domNode,"dijitHidden");this.inherited(arguments);},getChildren:function(){return _2ae.map(this.inherited(arguments),function(_2e1){return _2e1.declaredClass=="dijit.layout._AccordionInnerContainer"?_2e1.contentWidget:_2e1;},this);},destroy:function(){if(this._animation){this._animation.stop();}_2ae.forEach(this.getChildren(),function(_2e2){if(_2e2._wrapperWidget){_2e2._wrapperWidget.destroy();}else{_2e2.destroyRecursive();}});this.inherited(arguments);},_showChild:function(_2e3){_2e3._wrapperWidget.containerNode.style.display="block";return this.inherited(arguments);},_hideChild:function(_2e4){_2e4._wrapperWidget.containerNode.style.display="none";this.inherited(arguments);},_transition:function(_2e5,_2e6,_2e7){if(has("ie")<8){_2e7=false;}if(this._animation){this._animation.stop(true);delete this._animation;}var self=this;if(_2e5){_2e5._wrapperWidget.set("selected",true);var d=this._showChild(_2e5);if(this.doLayout){size(_2e5,this._containerContentBox);}}if(_2e6){_2e6._wrapperWidget.set("selected",false);if(!_2e7){this._hideChild(_2e6);}}if(_2e7){var _2e8=_2e5._wrapperWidget.containerNode,_2e9=_2e6._wrapperWidget.containerNode;var _2ea=_2e5._wrapperWidget.containerNode,_2eb=_2b3.getMarginExtents(_2ea),_2ec=_2b3.getPadBorderExtents(_2ea),_2ed=_2eb.h+_2ec.h;_2e9.style.height=(self._verticalSpace-_2ed)+"px";this._animation=new fx.Animation({node:_2e8,duration:this.duration,curve:[1,this._verticalSpace-_2ed-1],onAnimate:function(_2ee){_2ee=Math.floor(_2ee);_2e8.style.height=_2ee+"px";_2e9.style.height=(self._verticalSpace-_2ed-_2ee)+"px";},onEnd:function(){delete self._animation;_2e8.style.height="auto";_2e6._wrapperWidget.containerNode.style.display="none";_2e9.style.height="auto";self._hideChild(_2e6);}});this._animation.onStop=this._animation.onEnd;this._animation.play();}return d;},_onKeyDown:function(e,_2ef){if(this.disabled||e.altKey||!(_2ef||e.ctrlKey)){return;}var c=e.keyCode;if((_2ef&&(c==keys.LEFT_ARROW||c==keys.UP_ARROW))||(e.ctrlKey&&c==keys.PAGE_UP)){this._adjacent(false)._buttonWidget._onTitleClick();e.stopPropagation();e.preventDefault();}else{if((_2ef&&(c==keys.RIGHT_ARROW||c==keys.DOWN_ARROW))||(e.ctrlKey&&(c==keys.PAGE_DOWN||c==keys.TAB))){this._adjacent(true)._buttonWidget._onTitleClick();e.stopPropagation();e.preventDefault();}}}});if(has("dijit-legacy-requires")){_2b7(0,function(){var _2f0=["dijit/layout/AccordionPane"];_2ad(_2f0);});}_2d4._InnerContainer=_2c6;_2d4._Button=_2c0;return _2d4;});},"dijit/form/ComboButton":function(){define(["dojo/_base/declare","dojo/keys","../focus","./DropDownButton","dojo/text!./templates/ComboButton.html","../a11yclick"],function(_2f1,keys,_2f2,_2f3,_2f4){return _2f1("dijit.form.ComboButton",_2f3,{templateString:_2f4,_setIdAttr:"",_setTabIndexAttr:["focusNode","titleNode"],_setTitleAttr:"titleNode",optionsTitle:"",baseClass:"dijitComboButton",cssStateNodes:{"buttonNode":"dijitButtonNode","titleNode":"dijitButtonContents","_popupStateNode":"dijitDownArrowButton"},_focusedNode:null,_onButtonKeyDown:function(evt){if(evt.keyCode==keys[this.isLeftToRight()?"RIGHT_ARROW":"LEFT_ARROW"]){_2f2.focus(this._popupStateNode);evt.stopPropagation();evt.preventDefault();}},_onArrowKeyDown:function(evt){if(evt.keyCode==keys[this.isLeftToRight()?"LEFT_ARROW":"RIGHT_ARROW"]){_2f2.focus(this.titleNode);evt.stopPropagation();evt.preventDefault();}},focus:function(_2f5){if(!this.disabled){_2f2.focus(_2f5=="start"?this.titleNode:this._popupStateNode);}}});});},"dijit/form/_AutoCompleterMixin":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/query","dojo/regexp","dojo/sniff","./DataList","./_TextBoxMixin","./_SearchMixin"],function(_2f6,_2f7,_2f8,keys,lang,_2f9,_2fa,has,_2fb,_2fc,_2fd){var _2fe=_2f7("dijit.form._AutoCompleterMixin",_2fd,{item:null,autoComplete:true,highlightMatch:"first",labelAttr:"",labelType:"text",maxHeight:-1,_stopClickEvents:false,_getCaretPos:function(_2ff){var pos=0;if(typeof (_2ff.selectionStart)=="number"){pos=_2ff.selectionStart;}else{if(has("ie")){var tr=_2ff.ownerDocument.selection.createRange().duplicate();var ntr=_2ff.createTextRange();tr.move("character",0);ntr.move("character",0);try{ntr.setEndPoint("EndToEnd",tr);pos=String(ntr.text).replace(/\r/g,"").length;}catch(e){}}}return pos;},_setCaretPos:function(_300,_301){_301=parseInt(_301);_2fc.selectInputText(_300,_301,_301);},_setDisabledAttr:function(_302){this.inherited(arguments);this.domNode.setAttribute("aria-disabled",_302?"true":"false");},_onKey:function(evt){if(evt.charCode>=32){return;}var key=evt.charCode||evt.keyCode;if(key==keys.ALT||key==keys.CTRL||key==keys.META||key==keys.SHIFT){return;}var pw=this.dropDown;var _303=null;this._abortQuery();this.inherited(arguments);if(evt.altKey||evt.ctrlKey||evt.metaKey){return;}if(this._opened){_303=pw.getHighlightedOption();}switch(key){case keys.PAGE_DOWN:case keys.DOWN_ARROW:case keys.PAGE_UP:case keys.UP_ARROW:if(this._opened){this._announceOption(_303);}evt.stopPropagation();evt.preventDefault();break;case keys.ENTER:if(_303){if(_303==pw.nextButton){this._nextSearch(1);evt.stopPropagation();evt.preventDefault();break;}else{if(_303==pw.previousButton){this._nextSearch(-1);evt.stopPropagation();evt.preventDefault();break;}}evt.stopPropagation();evt.preventDefault();}else{this._setBlurValue();this._setCaretPos(this.focusNode,this.focusNode.value.length);}case keys.TAB:var _304=this.get("displayedValue");if(pw&&(_304==pw._messages["previousMessage"]||_304==pw._messages["nextMessage"])){break;}if(_303){this._selectOption(_303);}case keys.ESCAPE:if(this._opened){this._lastQuery=null;this.closeDropDown();}break;}},_autoCompleteText:function(text){var fn=this.focusNode;_2fc.selectInputText(fn,fn.value.length);var _305=this.ignoreCase?"toLowerCase":"substr";if(text[_305](0).indexOf(this.focusNode.value[_305](0))==0){var cpos=this.autoComplete?this._getCaretPos(fn):fn.value.length;if((cpos+1)>fn.value.length){fn.value=text;_2fc.selectInputText(fn,cpos);}}else{fn.value=text;_2fc.selectInputText(fn);}},_openResultList:function(_306,_307,_308){var _309=this.dropDown.getHighlightedOption();this.dropDown.clearResultList();if(!_306.length&&_308.start==0){this.closeDropDown();return;}this._nextSearch=this.dropDown.onPage=lang.hitch(this,function(_30a){_306.nextPage(_30a!==-1);this.focus();});this.dropDown.createOptions(_306,_308,lang.hitch(this,"_getMenuLabelFromItem"));this._showResultList();if("direction" in _308){if(_308.direction){this.dropDown.highlightFirstOption();}else{if(!_308.direction){this.dropDown.highlightLastOption();}}if(_309){this._announceOption(this.dropDown.getHighlightedOption());}}else{if(this.autoComplete&&!this._prev_key_backspace&&!/^[*]+$/.test(_307[this.searchAttr].toString())){this._announceOption(this.dropDown.containerNode.firstChild.nextSibling);}}},_showResultList:function(){this.closeDropDown(true);this.openDropDown();this.domNode.setAttribute("aria-expanded","true");},loadDropDown:function(){this._startSearchAll();},isLoaded:function(){return false;},closeDropDown:function(){this._abortQuery();if(this._opened){this.inherited(arguments);this.domNode.setAttribute("aria-expanded","false");}},_setBlurValue:function(){var _30b=this.get("displayedValue");var pw=this.dropDown;if(pw&&(_30b==pw._messages["previousMessage"]||_30b==pw._messages["nextMessage"])){this._setValueAttr(this._lastValueReported,true);}else{if(typeof this.item=="undefined"){this.item=null;this.set("displayedValue",_30b);}else{if(this.value!=this._lastValueReported){this._handleOnChange(this.value,true);}this._refreshState();}}this.focusNode.removeAttribute("aria-activedescendant");},_setItemAttr:function(item,_30c,_30d){var _30e="";if(item){if(!_30d){_30d=this.store._oldAPI?this.store.getValue(item,this.searchAttr):item[this.searchAttr];}_30e=this._getValueField()!=this.searchAttr?this.store.getIdentity(item):_30d;}this.set("value",_30e,_30c,_30d,item);},_announceOption:function(node){if(!node){return;}var _30f;if(node==this.dropDown.nextButton||node==this.dropDown.previousButton){_30f=node.innerHTML;this.item=undefined;this.value="";}else{var item=this.dropDown.items[node.getAttribute("item")];_30f=(this.store._oldAPI?this.store.getValue(item,this.searchAttr):item[this.searchAttr]).toString();this.set("item",item,false,_30f);}this.focusNode.value=this.focusNode.value.substring(0,this._lastInput.length);this.focusNode.setAttribute("aria-activedescendant",_2f8.get(node,"id"));this._autoCompleteText(_30f);},_selectOption:function(_310){this.closeDropDown();if(_310){this._announceOption(_310);}this._setCaretPos(this.focusNode,this.focusNode.value.length);this._handleOnChange(this.value,true);this.focusNode.removeAttribute("aria-activedescendant");},_startSearchAll:function(){this._startSearch("");},_startSearchFromInput:function(){this.item=undefined;this.inherited(arguments);},_startSearch:function(key){if(!this.dropDown){var _311=this.id+"_popup",_312=lang.isString(this.dropDownClass)?lang.getObject(this.dropDownClass,false):this.dropDownClass;this.dropDown=new _312({onChange:lang.hitch(this,this._selectOption),id:_311,dir:this.dir,textDir:this.textDir});}this._lastInput=key;this.inherited(arguments);},_getValueField:function(){return this.searchAttr;},postMixInProperties:function(){this.inherited(arguments);if(!this.store&&this.srcNodeRef){var _313=this.srcNodeRef;this.store=new _2fb({},_313);if(!("value" in this.params)){var item=(this.item=this.store.fetchSelectedItem());if(item){var _314=this._getValueField();this.value=this.store._oldAPI?this.store.getValue(item,_314):item[_314];}}}},postCreate:function(){var _315=_2f9("label[for=\""+this.id+"\"]");if(_315.length){if(!_315[0].id){_315[0].id=this.id+"_label";}this.domNode.setAttribute("aria-labelledby",_315[0].id);}this.inherited(arguments);_2f6.after(this,"onSearch",lang.hitch(this,"_openResultList"),true);},_getMenuLabelFromItem:function(item){var _316=this.labelFunc(item,this.store),_317=this.labelType;if(this.highlightMatch!="none"&&this.labelType=="text"&&this._lastInput){_316=this.doHighlight(_316,this._lastInput);_317="html";}return {html:_317=="html",label:_316};},doHighlight:function(_318,find){var _319=(this.ignoreCase?"i":"")+(this.highlightMatch=="all"?"g":""),i=this.queryExpr.indexOf("${0}");find=_2fa.escapeString(find);return this._escapeHtml(_318.replace(new RegExp((i==0?"^":"")+"("+find+")"+(i==(this.queryExpr.length-4)?"$":""),_319),"\uffff$1\uffff")).replace(/\uFFFF([^\uFFFF]+)\uFFFF/g,"<span class=\"dijitComboBoxHighlightMatch\">$1</span>");},_escapeHtml:function(str){str=String(str).replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");return str;},reset:function(){this.item=null;this.inherited(arguments);},labelFunc:function(item,_31a){return (_31a._oldAPI?_31a.getValue(item,this.labelAttr||this.searchAttr):item[this.labelAttr||this.searchAttr]).toString();},_setValueAttr:function(_31b,_31c,_31d,item){this._set("item",item||null);if(_31b==null){_31b="";}this.inherited(arguments);}});if(has("dojo-bidi")){_2fe.extend({_setTextDirAttr:function(_31e){this.inherited(arguments);if(this.dropDown){this.dropDown._set("textDir",_31e);}}});}return _2fe;});},"dijit/form/MappedTextBox":function(){define(["dojo/_base/declare","dojo/sniff","dojo/dom-construct","./ValidationTextBox"],function(_31f,has,_320,_321){return _31f("dijit.form.MappedTextBox",_321,{postMixInProperties:function(){this.inherited(arguments);this.nameAttrSetting="";},_setNameAttr:"valueNode",serialize:function(val){return val.toString?val.toString():"";},toString:function(){var val=this.filter(this.get("value"));return val!=null?(typeof val=="string"?val:this.serialize(val,this.constraints)):"";},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);this.valueNode=_320.place("<input type='hidden'"+((this.name&&!has("msapp"))?" name=\""+this.name.replace(/"/g,"&quot;")+"\"":"")+"/>",this.textbox,"after");},reset:function(){this.valueNode.value="";this.inherited(arguments);}});});},"dijit/form/ComboBoxMixin":function(){define(["dojo/_base/declare","dojo/Deferred","dojo/_base/kernel","dojo/_base/lang","dojo/store/util/QueryResults","./_AutoCompleterMixin","./_ComboBoxMenu","../_HasDropDown","dojo/text!./templates/DropDownBox.html"],function(_322,_323,_324,lang,_325,_326,_327,_328,_329){return _322("dijit.form.ComboBoxMixin",[_328,_326],{dropDownClass:_327,hasDownArrow:true,templateString:_329,baseClass:"dijitTextBox dijitComboBox",cssStateNodes:{"_buttonNode":"dijitDownArrowButton"},_setHasDownArrowAttr:function(val){this._set("hasDownArrow",val);this._buttonNode.style.display=val?"":"none";},_showResultList:function(){this.displayMessage("");this.inherited(arguments);},_setStoreAttr:function(_32a){if(!_32a.get){lang.mixin(_32a,{_oldAPI:true,get:function(id){var _32b=new _323();this.fetchItemByIdentity({identity:id,onItem:function(_32c){_32b.resolve(_32c);},onError:function(_32d){_32b.reject(_32d);}});return _32b.promise;},query:function(_32e,_32f){var _330=new _323(function(){_331.abort&&_331.abort();});_330.total=new _323();var _331=this.fetch(lang.mixin({query:_32e,onBegin:function(_332){_330.total.resolve(_332);},onComplete:function(_333){_330.resolve(_333);},onError:function(_334){_330.reject(_334);}},_32f));return _325(_330);}});}this._set("store",_32a);},postMixInProperties:function(){var _335=this.params.store||this.store;if(_335){this._setStoreAttr(_335);}this.inherited(arguments);if(!this.params.store&&this.store&&!this.store._oldAPI){var _336=this.declaredClass;lang.mixin(this.store,{getValue:function(item,attr){_324.deprecated(_336+".store.getValue(item, attr) is deprecated for builtin store. Use item.attr directly","","2.0");return item[attr];},getLabel:function(item){_324.deprecated(_336+".store.getLabel(item) is deprecated for builtin store. Use item.label directly","","2.0");return item.name;},fetch:function(args){_324.deprecated(_336+".store.fetch() is deprecated for builtin store.","Use store.query()","2.0");var shim=["dojo/data/ObjectStore"];require(shim,lang.hitch(this,function(_337){new _337({objectStore:this}).fetch(args);}));}});}},buildRendering:function(){this.inherited(arguments);this.focusNode.setAttribute("aria-autocomplete",this.autoComplete?"both":"list");}});});},"dijit/form/_TextBoxMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/sniff","dojo/keys","dojo/_base/lang","dojo/on","../main"],function(_338,_339,dom,has,keys,lang,on,_33a){var _33b=_339("dijit.form._TextBoxMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{trim:false,uppercase:false,lowercase:false,propercase:false,maxLength:"",selectOnClick:false,placeHolder:"",_getValueAttr:function(){return this.parse(this.get("displayedValue"),this.constraints);},_setValueAttr:function(_33c,_33d,_33e){var _33f;if(_33c!==undefined){_33f=this.filter(_33c);if(typeof _33e!="string"){if(_33f!==null&&((typeof _33f!="number")||!isNaN(_33f))){_33e=this.filter(this.format(_33f,this.constraints));}else{_33e="";}if(this.compare(_33f,this.filter(this.parse(_33e,this.constraints)))!=0){_33e=null;}}}if(_33e!=null&&((typeof _33e)!="number"||!isNaN(_33e))&&this.textbox.value!=_33e){this.textbox.value=_33e;this._set("displayedValue",this.get("displayedValue"));}this.inherited(arguments,[_33f,_33d]);},displayedValue:"",_getDisplayedValueAttr:function(){return this.filter(this.textbox.value);},_setDisplayedValueAttr:function(_340){if(_340==null){_340="";}else{if(typeof _340!="string"){_340=String(_340);}}this.textbox.value=_340;this._setValueAttr(this.get("value"),undefined);this._set("displayedValue",this.get("displayedValue"));},format:function(_341){return _341==null?"":(_341.toString?_341.toString():_341);},parse:function(_342){return _342;},_refreshState:function(){},onInput:function(){},_onInput:function(evt){this._lastInputEventValue=this.textbox.value;this._processInput(this._lastInputProducingEvent||evt);delete this._lastInputProducingEvent;if(this.intermediateChanges){this._handleOnChange(this.get("value"),false);}},_processInput:function(){this._refreshState();this._set("displayedValue",this.get("displayedValue"));},postCreate:function(){this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);function _343(e){var _344;if(e.type=="keydown"&&e.keyCode!=229){_344=e.keyCode;switch(_344){case keys.SHIFT:case keys.ALT:case keys.CTRL:case keys.META:case keys.CAPS_LOCK:case keys.NUM_LOCK:case keys.SCROLL_LOCK:return;}if(!e.ctrlKey&&!e.metaKey&&!e.altKey){switch(_344){case keys.NUMPAD_0:case keys.NUMPAD_1:case keys.NUMPAD_2:case keys.NUMPAD_3:case keys.NUMPAD_4:case keys.NUMPAD_5:case keys.NUMPAD_6:case keys.NUMPAD_7:case keys.NUMPAD_8:case keys.NUMPAD_9:case keys.NUMPAD_MULTIPLY:case keys.NUMPAD_PLUS:case keys.NUMPAD_ENTER:case keys.NUMPAD_MINUS:case keys.NUMPAD_PERIOD:case keys.NUMPAD_DIVIDE:return;}if((_344>=65&&_344<=90)||(_344>=48&&_344<=57)||_344==keys.SPACE){return;}var _345=false;for(var i in keys){if(keys[i]===e.keyCode){_345=true;break;}}if(!_345){return;}}}_344=e.charCode>=32?String.fromCharCode(e.charCode):e.charCode;if(!_344){_344=(e.keyCode>=65&&e.keyCode<=90)||(e.keyCode>=48&&e.keyCode<=57)||e.keyCode==keys.SPACE?String.fromCharCode(e.keyCode):e.keyCode;}if(!_344){_344=229;}if(e.type=="keypress"){if(typeof _344!="string"){return;}if((_344>="a"&&_344<="z")||(_344>="A"&&_344<="Z")||(_344>="0"&&_344<="9")||(_344===" ")){if(e.ctrlKey||e.metaKey||e.altKey){return;}}}var faux={faux:true},attr;for(attr in e){if(!/^(layer[XY]|returnValue|keyLocation)$/.test(attr)){var v=e[attr];if(typeof v!="function"&&typeof v!="undefined"){faux[attr]=v;}}}lang.mixin(faux,{charOrCode:_344,_wasConsumed:false,preventDefault:function(){faux._wasConsumed=true;e.preventDefault();},stopPropagation:function(){e.stopPropagation();}});this._lastInputProducingEvent=faux;if(this.onInput(faux)===false){faux.preventDefault();faux.stopPropagation();}if(faux._wasConsumed){return;}if(has("ie")<=9){switch(e.keyCode){case keys.TAB:case keys.ESCAPE:case keys.DOWN_ARROW:case keys.UP_ARROW:case keys.LEFT_ARROW:case keys.RIGHT_ARROW:break;default:if(e.keyCode==keys.ENTER&&this.textbox.tagName.toLowerCase()!="textarea"){break;}this.defer(function(){if(this.textbox.value!==this._lastInputEventValue){on.emit(this.textbox,"input",{bubbles:true});}});}}};this.own(on(this.textbox,"keydown, keypress, paste, cut, compositionend",lang.hitch(this,_343)),on(this.textbox,"input",lang.hitch(this,"_onInput")),on(this.domNode,"keypress",function(e){e.stopPropagation();}));},_blankValue:"",filter:function(val){if(val===null){return this._blankValue;}if(typeof val!="string"){return val;}if(this.trim){val=lang.trim(val);}if(this.uppercase){val=val.toUpperCase();}if(this.lowercase){val=val.toLowerCase();}if(this.propercase){val=val.replace(/[^\s]+/g,function(word){return word.substring(0,1).toUpperCase()+word.substring(1);});}return val;},_setBlurValue:function(){this._setValueAttr(this.get("value"),true);},_onBlur:function(e){if(this.disabled){return;}this._setBlurValue();this.inherited(arguments);},_isTextSelected:function(){return this.textbox.selectionStart!=this.textbox.selectionEnd;},_onFocus:function(by){if(this.disabled||this.readOnly){return;}if(this.selectOnClick&&by=="mouse"){this._selectOnClickHandle=on.once(this.domNode,"mouseup, touchend",lang.hitch(this,function(evt){if(!this._isTextSelected()){_33b.selectInputText(this.textbox);}}));this.own(this._selectOnClickHandle);this.defer(function(){if(this._selectOnClickHandle){this._selectOnClickHandle.remove();this._selectOnClickHandle=null;}},500);}this.inherited(arguments);this._refreshState();},reset:function(){this.textbox.value="";this.inherited(arguments);}});if(has("dojo-bidi")){_33b=_339("dijit.form._TextBoxMixin",_33b,{_setValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.focusNode);},_setDisplayedValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.focusNode);},_onInput:function(){this.applyTextDir(this.focusNode);this.inherited(arguments);}});}_33b._setSelectionRange=_33a._setSelectionRange=function(_346,_347,stop){if(_346.setSelectionRange){_346.setSelectionRange(_347,stop);}};_33b.selectInputText=_33a.selectInputText=function(_348,_349,stop){_348=dom.byId(_348);if(isNaN(_349)){_349=0;}if(isNaN(stop)){stop=_348.value?_348.value.length:0;}try{_348.focus();_33b._setSelectionRange(_348,_349,stop);}catch(e){}};return _33b;});},"dijit/form/SimpleTextarea":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/sniff","./TextBox"],function(_34a,_34b,has,_34c){return _34a("dijit.form.SimpleTextarea",_34c,{baseClass:"dijitTextBox dijitTextArea",rows:"3",cols:"20",templateString:"<textarea ${!nameAttrSetting} data-dojo-attach-point='focusNode,containerNode,textbox' autocomplete='off'></textarea>",postMixInProperties:function(){if(!this.value&&this.srcNodeRef){this.value=this.srcNodeRef.value;}this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);if(has("ie")&&this.cols){_34b.add(this.textbox,"dijitTextAreaCols");}},filter:function(_34d){if(_34d){_34d=_34d.replace(/\r/g,"");}return this.inherited(arguments);},_onInput:function(e){if(this.maxLength){var _34e=parseInt(this.maxLength);var _34f=this.textbox.value.replace(/\r/g,"");var _350=_34f.length-_34e;if(_350>0){var _351=this.textbox;if(_351.selectionStart){var pos=_351.selectionStart;var cr=0;if(has("opera")){cr=(this.textbox.value.substring(0,pos).match(/\r/g)||[]).length;}this.textbox.value=_34f.substring(0,pos-_350-cr)+_34f.substring(pos-cr);_351.setSelectionRange(pos-_350,pos-_350);}else{if(this.ownerDocument.selection){_351.focus();var _352=this.ownerDocument.selection.createRange();_352.moveStart("character",-_350);_352.text="";_352.select();}}}}this.inherited(arguments);}});});},"dijit/_base/window":function(){define(["dojo/window","../main"],function(_353,_354){_354.getDocumentWindow=function(doc){return _353.get(doc);};});},"dijit/PopupMenuItem":function(){define(["dojo/_base/declare","dojo/dom-style","dojo/_base/lang","dojo/query","./popup","./registry","./MenuItem","./hccss"],function(_355,_356,lang,_357,pm,_358,_359){return _355("dijit.PopupMenuItem",_359,{baseClass:"dijitMenuItem dijitPopupMenuItem",_fillContent:function(){if(this.srcNodeRef){var _35a=_357("*",this.srcNodeRef);this.inherited(arguments,[_35a[0]]);this.dropDownContainer=this.srcNodeRef;}},_openPopup:function(_35b,_35c){var _35d=this.popup;pm.open(lang.delegate(_35b,{popup:this.popup,around:this.domNode}));if(_35c&&_35d.focus){_35d.focus();}},_closePopup:function(){pm.close(this.popup);this.popup.parentMenu=null;},startup:function(){if(this._started){return;}this.inherited(arguments);if(!this.popup){var node=_357("[widgetId]",this.dropDownContainer)[0];this.popup=_358.byNode(node);}this.ownerDocumentBody.appendChild(this.popup.domNode);this.popup.domNode.setAttribute("aria-labelledby",this.containerNode.id);this.popup.startup();this.popup.domNode.style.display="none";if(this.arrowWrapper){_356.set(this.arrowWrapper,"visibility","");}this.focusNode.setAttribute("aria-haspopup","true");},destroyDescendants:function(_35e){if(this.popup){if(!this.popup._destroyed){this.popup.destroyRecursive(_35e);}delete this.popup;}this.inherited(arguments);}});});},"dojo/hccss":function(){define(["require","./_base/config","./dom-class","./dom-style","./has","./domReady","./_base/window"],function(_35f,_360,_361,_362,has,_363,win){has.add("highcontrast",function(){var div=win.doc.createElement("div");try{div.style.cssText="border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;"+"background-image: url(\""+(_360.blankGif||_35f.toUrl("./resources/blank.gif"))+"\");";win.body().appendChild(div);var cs=_362.getComputedStyle(div),_364=cs.backgroundImage;return cs.borderTopColor==cs.borderRightColor||(_364&&(_364=="none"||_364=="url(invalid-url:)"));}catch(e){console.warn("hccss: exception detecting high-contrast mode, document is likely hidden: "+e.toString());return false;}finally{if(has("ie")<=8){div.outerHTML="";}else{win.body().removeChild(div);}}});_363(function(){if(has("highcontrast")){_361.add(win.body(),"dj_a11y");}});return has;});},"dijit/form/RadioButton":function(){define(["dojo/_base/declare","./CheckBox","./_RadioButtonMixin"],function(_365,_366,_367){return _365("dijit.form.RadioButton",[_366,_367],{baseClass:"dijitRadio"});});},"dijit/main":function(){define(["dojo/_base/kernel"],function(dojo){return dojo.dijit;});},"dijit/_OnDijitClickMixin":function(){define(["dojo/on","dojo/_base/array","dojo/keys","dojo/_base/declare","dojo/has","./a11yclick"],function(on,_368,keys,_369,has,_36a){var ret=_369("dijit._OnDijitClickMixin",null,{connect:function(obj,_36b,_36c){return this.inherited(arguments,[obj,_36b=="ondijitclick"?_36a:_36b,_36c]);}});ret.a11yclick=_36a;return ret;});},"dijit/InlineEditBox":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-style","dojo/i18n","dojo/_base/kernel","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/when","./a11yclick","./focus","./_Widget","./_TemplatedMixin","./_WidgetsInTemplateMixin","./_Container","./form/Button","./form/_TextBoxMixin","./form/TextBox","dojo/text!./templates/InlineEditBox.html","dojo/i18n!./nls/common"],function(_36d,_36e,_36f,_370,_371,_372,_373,_374,i18n,_375,keys,lang,on,has,when,_376,fm,_377,_378,_379,_37a,_37b,_37c,_37d,_37e){var _37f=_370("dijit._InlineEditor",[_377,_378,_379],{templateString:_37e,contextRequire:_36d,postMixInProperties:function(){this.inherited(arguments);this.messages=i18n.getLocalization("dijit","common",this.lang);_36e.forEach(["buttonSave","buttonCancel"],function(prop){if(!this[prop]){this[prop]=this.messages[prop];}},this);},buildRendering:function(){this.inherited(arguments);var Cls=typeof this.editor=="string"?(lang.getObject(this.editor)||_36d(this.editor)):this.editor;var _380=this.sourceStyle,_381="line-height:"+_380.lineHeight+";",_382=_374.getComputedStyle(this.domNode);_36e.forEach(["Weight","Family","Size","Style"],function(prop){var _383=_380["font"+prop],_384=_382["font"+prop];if(_384!=_383){_381+="font-"+prop+":"+_380["font"+prop]+";";}},this);_36e.forEach(["marginTop","marginBottom","marginLeft","marginRight","position","left","top","right","bottom","float","clear","display"],function(prop){this.domNode.style[prop]=_380[prop];},this);var _385=this.inlineEditBox.width;if(_385=="100%"){_381+="width:100%;";this.domNode.style.display="block";}else{_381+="width:"+(_385+(Number(_385)==_385?"px":""))+";";}var _386=lang.delegate(this.inlineEditBox.editorParams,{style:_381,dir:this.dir,lang:this.lang,textDir:this.textDir});this.editWidget=new Cls(_386,this.editorPlaceholder);if(this.inlineEditBox.autoSave){this.saveButton.destroy();this.cancelButton.destroy();this.saveButton=this.cancelButton=null;_373.destroy(this.buttonContainer);}},postCreate:function(){this.inherited(arguments);var ew=this.editWidget;if(this.inlineEditBox.autoSave){this.own(_36f.after(ew,"onChange",lang.hitch(this,"_onChange"),true),on(ew,"keydown",lang.hitch(this,"_onKeyDown")));}else{if("intermediateChanges" in ew){ew.set("intermediateChanges",true);this.own(_36f.after(ew,"onChange",lang.hitch(this,"_onIntermediateChange"),true));this.saveButton.set("disabled",true);}}},startup:function(){this.editWidget.startup();this.inherited(arguments);},_onIntermediateChange:function(){this.saveButton.set("disabled",(this.getValue()==this._resetValue)||!this.enableSave());},destroy:function(){this.editWidget.destroy(true);this.inherited(arguments);},getValue:function(){var ew=this.editWidget;return String(ew.get(("displayedValue" in ew||"_getDisplayedValueAttr" in ew)?"displayedValue":"value"));},_onKeyDown:function(e){if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){if(e.altKey||e.ctrlKey){return;}if(e.keyCode==keys.ESCAPE){e.stopPropagation();e.preventDefault();this.cancel(true);}else{if(e.keyCode==keys.ENTER&&e.target.tagName=="INPUT"){e.stopPropagation();e.preventDefault();this._onChange();}}}},_onBlur:function(){this.inherited(arguments);if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){if(this.getValue()==this._resetValue){this.cancel(false);}else{if(this.enableSave()){this.save(false);}}}},_onChange:function(){if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing&&this.enableSave()){fm.focus(this.inlineEditBox.displayNode);}},enableSave:function(){return this.editWidget.isValid?this.editWidget.isValid():true;},focus:function(){this.editWidget.focus();if(this.editWidget.focusNode){fm._onFocusNode(this.editWidget.focusNode);if(this.editWidget.focusNode.tagName=="INPUT"){this.defer(function(){_37c.selectInputText(this.editWidget.focusNode);});}}}});var _387=_370("dijit.InlineEditBox"+(has("dojo-bidi")?"_NoBidi":""),_377,{editing:false,autoSave:true,buttonSave:"",buttonCancel:"",renderAsHtml:false,editor:_37d,editorWrapper:_37f,editorParams:{},disabled:false,onChange:function(){},onCancel:function(){},width:"100%",value:"",noValueIndicator:has("ie")<=6?"<span style='font-family: wingdings; text-decoration: underline;'>&#160;&#160;&#160;&#160;&#x270d;&#160;&#160;&#160;&#160;</span>":"<span style='text-decoration: underline;'>&#160;&#160;&#160;&#160;&#x270d;&#160;&#160;&#160;&#160;</span>",constructor:function(){this.editorParams={};},postMixInProperties:function(){this.inherited(arguments);this.displayNode=this.srcNodeRef;this.own(on(this.displayNode,_376,lang.hitch(this,"_onClick")),on(this.displayNode,"mouseover, focus",lang.hitch(this,"_onMouseOver")),on(this.displayNode,"mouseout, blur",lang.hitch(this,"_onMouseOut")));this.displayNode.setAttribute("role","button");if(!this.displayNode.getAttribute("tabIndex")){this.displayNode.setAttribute("tabIndex",0);}if(!this.value&&!("value" in this.params)){this.value=lang.trim(this.renderAsHtml?this.displayNode.innerHTML:(this.displayNode.innerText||this.displayNode.textContent||""));}if(!this.value){this.displayNode.innerHTML=this.noValueIndicator;}_372.add(this.displayNode,"dijitInlineEditBoxDisplayMode");},setDisabled:function(_388){_375.deprecated("dijit.InlineEditBox.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",_388);},_setDisabledAttr:function(_389){this.domNode.setAttribute("aria-disabled",_389?"true":"false");if(_389){this.displayNode.removeAttribute("tabIndex");}else{this.displayNode.setAttribute("tabIndex",0);}_372.toggle(this.displayNode,"dijitInlineEditBoxDisplayModeDisabled",_389);this._set("disabled",_389);},_onMouseOver:function(){if(!this.disabled){_372.add(this.displayNode,"dijitInlineEditBoxDisplayModeHover");}},_onMouseOut:function(){_372.remove(this.displayNode,"dijitInlineEditBoxDisplayModeHover");},_onClick:function(e){if(this.disabled){return;}if(e){e.stopPropagation();e.preventDefault();}this._onMouseOut();this.defer("edit");},edit:function(){if(this.disabled||this.editing){return;}this._set("editing",true);this._savedTabIndex=_371.get(this.displayNode,"tabIndex")||"0";if(!this.wrapperWidget){var _38a=_373.create("span",null,this.domNode,"before");var Ewc=typeof this.editorWrapper=="string"?lang.getObject(this.editorWrapper):this.editorWrapper;this.wrapperWidget=new Ewc({value:this.value,buttonSave:this.buttonSave,buttonCancel:this.buttonCancel,dir:this.dir,lang:this.lang,tabIndex:this._savedTabIndex,editor:this.editor,inlineEditBox:this,sourceStyle:_374.getComputedStyle(this.displayNode),save:lang.hitch(this,"save"),cancel:lang.hitch(this,"cancel"),textDir:this.textDir},_38a);if(!this.wrapperWidget._started){this.wrapperWidget.startup();}if(!this._started){this.startup();}}var ww=this.wrapperWidget;_372.add(this.displayNode,"dijitOffScreen");_372.remove(ww.domNode,"dijitOffScreen");_374.set(ww.domNode,{visibility:"visible"});_371.set(this.displayNode,"tabIndex","-1");var ew=ww.editWidget;var self=this;when(ew.onLoadDeferred,lang.hitch(ww,function(){ew.set(("displayedValue" in ew||"_setDisplayedValueAttr" in ew)?"displayedValue":"value",self.value);this.defer(function(){if(ww.saveButton){ww.saveButton.set("disabled","intermediateChanges" in ew);}this.focus();this._resetValue=this.getValue();});}));},_onBlur:function(){this.inherited(arguments);if(!this.editing){}},destroy:function(){if(this.wrapperWidget&&!this.wrapperWidget._destroyed){this.wrapperWidget.destroy();delete this.wrapperWidget;}this.inherited(arguments);},_showText:function(_38b){var ww=this.wrapperWidget;_374.set(ww.domNode,{visibility:"hidden"});_372.add(ww.domNode,"dijitOffScreen");_372.remove(this.displayNode,"dijitOffScreen");_371.set(this.displayNode,"tabIndex",this._savedTabIndex);if(_38b){fm.focus(this.displayNode);}},save:function(_38c){if(this.disabled||!this.editing){return;}this._set("editing",false);var ww=this.wrapperWidget;var _38d=ww.getValue();this.set("value",_38d);this._showText(_38c);},setValue:function(val){_375.deprecated("dijit.InlineEditBox.setValue() is deprecated. Use set('value', ...) instead.","","2.0");return this.set("value",val);},_setValueAttr:function(val){val=lang.trim(val);var _38e=this.renderAsHtml?val:val.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;").replace(/\n/g,"<br>");if(this.editorParams&&this.editorParams.type==="password"){this.displayNode.innerHTML="********";}else{this.displayNode.innerHTML=_38e||this.noValueIndicator;}this._set("value",val);if(this._started){this.defer(function(){this.onChange(val);});}},getValue:function(){_375.deprecated("dijit.InlineEditBox.getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},cancel:function(_38f){if(this.disabled||!this.editing){return;}this._set("editing",false);this.defer("onCancel");this._showText(_38f);}});if(has("dojo-bidi")){_387=_370("dijit.InlineEditBox",_387,{_setValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.displayNode);}});}_387._InlineEditor=_37f;return _387;});},"dojo/selector/acme":function(){define(["../dom","../sniff","../_base/array","../_base/lang","../_base/window"],function(dom,has,_390,lang,win){var trim=lang.trim;var each=_390.forEach;var _391=function(){return win.doc;};var _392=(_391().compatMode)=="BackCompat";var _393=">~+";var _394=false;var _395=function(){return true;};var _396=function(_397){if(_393.indexOf(_397.slice(-1))>=0){_397+=" * ";}else{_397+=" ";}var ts=function(s,e){return trim(_397.slice(s,e));};var _398=[];var _399=-1,_39a=-1,_39b=-1,_39c=-1,_39d=-1,inId=-1,_39e=-1,_39f,lc="",cc="",_3a0;var x=0,ql=_397.length,_3a1=null,_3a2=null;var _3a3=function(){if(_39e>=0){var tv=(_39e==x)?null:ts(_39e,x);_3a1[(_393.indexOf(tv)<0)?"tag":"oper"]=tv;_39e=-1;}};var _3a4=function(){if(inId>=0){_3a1.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _3a5=function(){if(_39d>=0){_3a1.classes.push(ts(_39d+1,x).replace(/\\/g,""));_39d=-1;}};var _3a6=function(){_3a4();_3a3();_3a5();};var _3a7=function(){_3a6();if(_39c>=0){_3a1.pseudos.push({name:ts(_39c+1,x)});}_3a1.loops=(_3a1.pseudos.length||_3a1.attrs.length||_3a1.classes.length);_3a1.oquery=_3a1.query=ts(_3a0,x);_3a1.otag=_3a1.tag=(_3a1["oper"])?null:(_3a1.tag||"*");if(_3a1.tag){_3a1.tag=_3a1.tag.toUpperCase();}if(_398.length&&(_398[_398.length-1].oper)){_3a1.infixOper=_398.pop();_3a1.query=_3a1.infixOper.query+" "+_3a1.query;}_398.push(_3a1);_3a1=null;};for(;lc=cc,cc=_397.charAt(x),x<ql;x++){if(lc=="\\"){continue;}if(!_3a1){_3a0=x;_3a1={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return _394?this.otag:this.tag;}};_39e=x;}if(_39f){if(cc==_39f){_39f=null;}continue;}else{if(cc=="'"||cc=="\""){_39f=cc;continue;}}if(_399>=0){if(cc=="]"){if(!_3a2.attr){_3a2.attr=ts(_399+1,x);}else{_3a2.matchFor=ts((_39b||_399+1),x);}var cmf=_3a2.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_3a2.matchFor=cmf.slice(1,-1);}}if(_3a2.matchFor){_3a2.matchFor=_3a2.matchFor.replace(/\\/g,"");}_3a1.attrs.push(_3a2);_3a2=null;_399=_39b=-1;}else{if(cc=="="){var _3a8=("|~^$*".indexOf(lc)>=0)?lc:"";_3a2.type=_3a8+cc;_3a2.attr=ts(_399+1,x-_3a8.length);_39b=x+1;}}}else{if(_39a>=0){if(cc==")"){if(_39c>=0){_3a2.value=ts(_39a+1,x);}_39c=_39a=-1;}}else{if(cc=="#"){_3a6();inId=x+1;}else{if(cc=="."){_3a6();_39d=x;}else{if(cc==":"){_3a6();_39c=x;}else{if(cc=="["){_3a6();_399=x;_3a2={};}else{if(cc=="("){if(_39c>=0){_3a2={name:ts(_39c+1,x),value:null};_3a1.pseudos.push(_3a2);}_39a=x;}else{if((cc==" ")&&(lc!=cc)){_3a7();}}}}}}}}}return _398;};var _3a9=function(_3aa,_3ab){if(!_3aa){return _3ab;}if(!_3ab){return _3aa;}return function(){return _3aa.apply(window,arguments)&&_3ab.apply(window,arguments);};};var _3ac=function(i,arr){var r=arr||[];if(i){r.push(i);}return r;};var _3ad=function(n){return (1==n.nodeType);};var _3ae="";var _3af=function(elem,attr){if(!elem){return _3ae;}if(attr=="class"){return elem.className||_3ae;}if(attr=="for"){return elem.htmlFor||_3ae;}if(attr=="style"){return elem.style.cssText||_3ae;}return (_394?elem.getAttribute(attr):elem.getAttribute(attr,2))||_3ae;};var _3b0={"*=":function(attr,_3b1){return function(elem){return (_3af(elem,attr).indexOf(_3b1)>=0);};},"^=":function(attr,_3b2){return function(elem){return (_3af(elem,attr).indexOf(_3b2)==0);};},"$=":function(attr,_3b3){return function(elem){var ea=" "+_3af(elem,attr);var _3b4=ea.lastIndexOf(_3b3);return _3b4>-1&&(_3b4==(ea.length-_3b3.length));};},"~=":function(attr,_3b5){var tval=" "+_3b5+" ";return function(elem){var ea=" "+_3af(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_3b6){var _3b7=_3b6+"-";return function(elem){var ea=_3af(elem,attr);return ((ea==_3b6)||(ea.indexOf(_3b7)==0));};},"=":function(attr,_3b8){return function(elem){return (_3af(elem,attr)==_3b8);};}};var _3b9=_391().documentElement;var _3ba=!(_3b9.nextElementSibling||"nextElementSibling" in _3b9);var _3bb=!_3ba?"nextElementSibling":"nextSibling";var _3bc=!_3ba?"previousElementSibling":"previousSibling";var _3bd=(_3ba?_3ad:_395);var _3be=function(node){while(node=node[_3bc]){if(_3bd(node)){return false;}}return true;};var _3bf=function(node){while(node=node[_3bb]){if(_3bd(node)){return false;}}return true;};var _3c0=function(node){var root=node.parentNode;root=root.nodeType!=7?root:root.nextSibling;var i=0,tret=root.children||root.childNodes,ci=(node["_i"]||node.getAttribute("_i")||-1),cl=(root["_l"]||(typeof root.getAttribute!=="undefined"?root.getAttribute("_l"):-1));if(!tret){return -1;}var l=tret.length;if(cl==l&&ci>=0&&cl>=0){return ci;}if(has("ie")&&typeof root.setAttribute!=="undefined"){root.setAttribute("_l",l);}else{root["_l"]=l;}ci=-1;for(var te=root["firstElementChild"]||root["firstChild"];te;te=te[_3bb]){if(_3bd(te)){if(has("ie")){te.setAttribute("_i",++i);}else{te["_i"]=++i;}if(node===te){ci=i;}}}return ci;};var _3c1=function(elem){return !((_3c0(elem))%2);};var _3c2=function(elem){return ((_3c0(elem))%2);};var _3c3={"checked":function(name,_3c4){return function(elem){return !!("checked" in elem?elem.checked:elem.selected);};},"disabled":function(name,_3c5){return function(elem){return elem.disabled;};},"enabled":function(name,_3c6){return function(elem){return !elem.disabled;};},"first-child":function(){return _3be;},"last-child":function(){return _3bf;},"only-child":function(name,_3c7){return function(node){return _3be(node)&&_3bf(node);};},"empty":function(name,_3c8){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt===1)||(nt==3)){return false;}}return true;};},"contains":function(name,_3c9){var cz=_3c9.charAt(0);if(cz=="\""||cz=="'"){_3c9=_3c9.slice(1,-1);}return function(elem){return (elem.innerHTML.indexOf(_3c9)>=0);};},"not":function(name,_3ca){var p=_396(_3ca)[0];var _3cb={el:1};if(p.tag!="*"){_3cb.tag=1;}if(!p.classes.length){_3cb.classes=1;}var ntf=_3cc(p,_3cb);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_3cd){var pi=parseInt;if(_3cd=="odd"){return _3c2;}else{if(_3cd=="even"){return _3c1;}}if(_3cd.indexOf("n")!=-1){var _3ce=_3cd.split("n",2);var pred=_3ce[0]?((_3ce[0]=="-")?-1:pi(_3ce[0])):1;var idx=_3ce[1]?pi(_3ce[1]):0;var lb=0,ub=-1;if(pred>0){if(idx<0){idx=(idx%pred)&&(pred+(idx%pred));}else{if(idx>0){if(idx>=pred){lb=idx-idx%pred;}idx=idx%pred;}}}else{if(pred<0){pred*=-1;if(idx>0){ub=idx;idx=idx%pred;}}}if(pred>0){return function(elem){var i=_3c0(elem);return (i>=lb)&&(ub<0||i<=ub)&&((i%pred)==idx);};}else{_3cd=idx;}}var _3cf=pi(_3cd);return function(elem){return (_3c0(elem)==_3cf);};}};var _3d0=(has("ie")<9||has("ie")==9&&has("quirks"))?function(cond){var clc=cond.toLowerCase();if(clc=="class"){cond="className";}return function(elem){return (_394?elem.getAttribute(cond):elem[cond]||elem[clc]);};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _3cc=function(_3d1,_3d2){if(!_3d1){return _395;}_3d2=_3d2||{};var ff=null;if(!("el" in _3d2)){ff=_3a9(ff,_3ad);}if(!("tag" in _3d2)){if(_3d1.tag!="*"){ff=_3a9(ff,function(elem){return (elem&&((_394?elem.tagName:elem.tagName.toUpperCase())==_3d1.getTag()));});}}if(!("classes" in _3d2)){each(_3d1.classes,function(_3d3,idx,arr){var re=new RegExp("(?:^|\\s)"+_3d3+"(?:\\s|$)");ff=_3a9(ff,function(elem){return re.test(elem.className);});ff.count=idx;});}if(!("pseudos" in _3d2)){each(_3d1.pseudos,function(_3d4){var pn=_3d4.name;if(_3c3[pn]){ff=_3a9(ff,_3c3[pn](pn,_3d4.value));}});}if(!("attrs" in _3d2)){each(_3d1.attrs,function(attr){var _3d5;var a=attr.attr;if(attr.type&&_3b0[attr.type]){_3d5=_3b0[attr.type](a,attr.matchFor);}else{if(a.length){_3d5=_3d0(a);}}if(_3d5){ff=_3a9(ff,_3d5);}});}if(!("id" in _3d2)){if(_3d1.id){ff=_3a9(ff,function(elem){return (!!elem&&(elem.id==_3d1.id));});}}if(!ff){if(!("default" in _3d2)){ff=_395;}}return ff;};var _3d6=function(_3d7){return function(node,ret,bag){while(node=node[_3bb]){if(_3ba&&(!_3ad(node))){continue;}if((!bag||_3d8(node,bag))&&_3d7(node)){ret.push(node);}break;}return ret;};};var _3d9=function(_3da){return function(root,ret,bag){var te=root[_3bb];while(te){if(_3bd(te)){if(bag&&!_3d8(te,bag)){break;}if(_3da(te)){ret.push(te);}}te=te[_3bb];}return ret;};};var _3db=function(_3dc,_3dd){var _3de=function(_3df){var _3e0=[];try{_3e0=Array.prototype.slice.call(_3df);}catch(e){for(var i=0,len=_3df.length;i<len;i++){_3e0.push(_3df[i]);}}return _3e0;};_3dc=_3dc||_395;return function(root,ret,bag){var te,x=0,tret=[];tret=_3de(root.children||root.childNodes);if(_3dd){_390.forEach(tret,function(node){if(node.nodeType===1){tret=tret.concat(_3de(node.getElementsByTagName("*")));}});}while(te=tret[x++]){if(_3bd(te)&&(!bag||_3d8(te,bag))&&(_3dc(te,x))){ret.push(te);}}return ret;};};var _3e1=function(node,root){var pn=node.parentNode;while(pn){if(pn==root){break;}pn=pn.parentNode;}return !!pn;};var _3e2={};var _3e3=function(_3e4){var _3e5=_3e2[_3e4.query];if(_3e5){return _3e5;}var io=_3e4.infixOper;var oper=(io?io.oper:"");var _3e6=_3cc(_3e4,{el:1});var qt=_3e4.tag;var _3e7=("*"==qt);var ecs=_391()["getElementsByClassName"];if(!oper){if(_3e4.id){_3e6=(!_3e4.loops&&_3e7)?_395:_3cc(_3e4,{el:1,id:1});_3e5=function(root,arr){var te=dom.byId(_3e4.id,(root.ownerDocument||root));if(root.ownerDocument&&!_3e1(root,root.ownerDocument)){var _3e8=root.nodeType===11?root.childNodes:[root];_390.some(_3e8,function(_3e9){var _3ea=_3db(function(node){return node.id===_3e4.id;},true)(_3e9,[]);if(_3ea.length){te=_3ea[0];return false;}});}if(!te||!_3e6(te)){return;}if(9==root.nodeType){return _3ac(te,arr);}else{if(_3e1(te,root)){return _3ac(te,arr);}}};}else{if(ecs&&/\{\s*\[native code\]\s*\}/.test(String(ecs))&&_3e4.classes.length&&!_392){_3e6=_3cc(_3e4,{el:1,classes:1,id:1});var _3eb=_3e4.classes.join(" ");_3e5=function(root,arr,bag){var ret=_3ac(0,arr),te,x=0;var tret=root.getElementsByClassName(_3eb);while((te=tret[x++])){if(_3e6(te,root)&&_3d8(te,bag)){ret.push(te);}}return ret;};}else{if(!_3e7&&!_3e4.loops){_3e5=function(root,arr,bag){var ret=_3ac(0,arr),te,x=0;var tag=_3e4.getTag(),tret=tag?root.getElementsByTagName(tag):[];while((te=tret[x++])){if(_3d8(te,bag)){ret.push(te);}}return ret;};}else{_3e6=_3cc(_3e4,{el:1,tag:1,id:1});_3e5=function(root,arr,bag){var ret=_3ac(0,arr),te,x=0;var tag=_3e4.getTag(),tret=tag?root.getElementsByTagName(tag):[];while((te=tret[x++])){if(_3e6(te,root)&&_3d8(te,bag)){ret.push(te);}}return ret;};}}}}else{var _3ec={el:1};if(_3e7){_3ec.tag=1;}_3e6=_3cc(_3e4,_3ec);if("+"==oper){_3e5=_3d6(_3e6);}else{if("~"==oper){_3e5=_3d9(_3e6);}else{if(">"==oper){_3e5=_3db(_3e6);}}}}return _3e2[_3e4.query]=_3e5;};var _3ed=function(root,_3ee){var _3ef=_3ac(root),qp,x,te,qpl=_3ee.length,bag,ret;for(var i=0;i<qpl;i++){ret=[];qp=_3ee[i];x=_3ef.length-1;if(x>0){bag={};ret.nozip=true;}var gef=_3e3(qp);for(var j=0;(te=_3ef[j]);j++){gef(te,ret,bag);}if(!ret.length){break;}_3ef=ret;}return ret;};var _3f0={},_3f1={};var _3f2=function(_3f3){var _3f4=_396(trim(_3f3));if(_3f4.length==1){var tef=_3e3(_3f4[0]);return function(root){var r=tef(root,[]);if(r){r.nozip=true;}return r;};}return function(root){return _3ed(root,_3f4);};};var _3f5=has("ie")?"commentStrip":"nozip";var qsa="querySelectorAll";var _3f6=!!_391()[qsa];var _3f7=/\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g;var _3f8=function(_3f9,pre,ch,post){return ch?(pre?pre+" ":"")+ch+(post?" "+post:""):_3f9;};var _3fa=/([^[]*)([^\]]*])?/g;var _3fb=function(_3fc,_3fd,att){return _3fd.replace(_3f7,_3f8)+(att||"");};var _3fe=function(_3ff,_400){_3ff=_3ff.replace(_3fa,_3fb);if(_3f6){var _401=_3f1[_3ff];if(_401&&!_400){return _401;}}var _402=_3f0[_3ff];if(_402){return _402;}var qcz=_3ff.charAt(0);var _403=(-1==_3ff.indexOf(" "));if((_3ff.indexOf("#")>=0)&&(_403)){_400=true;}var _404=(_3f6&&(!_400)&&(_393.indexOf(qcz)==-1)&&(!has("ie")||(_3ff.indexOf(":")==-1))&&(!(_392&&(_3ff.indexOf(".")>=0)))&&(_3ff.indexOf(":contains")==-1)&&(_3ff.indexOf(":checked")==-1)&&(_3ff.indexOf("|=")==-1));if(_404){var tq=(_393.indexOf(_3ff.charAt(_3ff.length-1))>=0)?(_3ff+" *"):_3ff;return _3f1[_3ff]=function(root){if(9==root.nodeType||_403){try{var r=root[qsa](tq);r[_3f5]=true;return r;}catch(e){}}return _3fe(_3ff,true)(root);};}else{var _405=_3ff.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g);return _3f0[_3ff]=((_405.length<2)?_3f2(_3ff):function(root){var _406=0,ret=[],tp;while((tp=_405[_406++])){ret=ret.concat(_3f2(tp)(root));}return ret;});}};var _407=0;var _408=has("ie")?function(node){if(_394){return (node.getAttribute("_uid")||node.setAttribute("_uid",++_407)||_407);}else{return node.uniqueID;}}:function(node){return (node._uid||(node._uid=++_407));};var _3d8=function(node,bag){if(!bag){return 1;}var id=_408(node);if(!bag[id]){return bag[id]=1;}return 0;};var _409="_zipIdx";var _40a=function(arr){if(arr&&arr.nozip){return arr;}if(!arr||!arr.length){return [];}if(arr.length<2){return [arr[0]];}var ret=[];_407++;var x,te;if(has("ie")&&_394){var _40b=_407+"";for(x=0;x<arr.length;x++){if((te=arr[x])&&te.getAttribute(_409)!=_40b){ret.push(te);te.setAttribute(_409,_40b);}}}else{if(has("ie")&&arr.commentStrip){try{for(x=0;x<arr.length;x++){if((te=arr[x])&&_3ad(te)){ret.push(te);}}}catch(e){}}else{for(x=0;x<arr.length;x++){if((te=arr[x])&&te[_409]!=_407){ret.push(te);te[_409]=_407;}}}}return ret;};var _40c=function(_40d,root){root=root||_391();var od=root.ownerDocument||root;_394=(od.createElement("div").tagName==="div");var r=_3fe(_40d)(root);if(r&&r.nozip){return r;}return _40a(r);};_40c.filter=function(_40e,_40f,root){var _410=[],_411=_396(_40f),_412=(_411.length==1&&!/[^\w#\.]/.test(_40f))?_3cc(_411[0]):function(node){return _390.indexOf(_40c(_40f,dom.byId(root)),node)!=-1;};for(var x=0,te;te=_40e[x];x++){if(_412(te)){_410.push(te);}}return _410;};return _40c;});},"dojo/dnd/autoscroll":function(){define(["../_base/lang","../sniff","../_base/window","../dom-geometry","../dom-style","../window"],function(lang,has,win,_413,_414,_415){var _416={};lang.setObject("dojo.dnd.autoscroll",_416);_416.getViewport=_415.getBox;_416.V_TRIGGER_AUTOSCROLL=32;_416.H_TRIGGER_AUTOSCROLL=32;_416.V_AUTOSCROLL_VALUE=16;_416.H_AUTOSCROLL_VALUE=16;var _417,doc=win.doc,_418=Infinity,_419=Infinity;_416.autoScrollStart=function(d){doc=d;_417=_415.getBox(doc);var html=win.body(doc).parentNode;_418=Math.max(html.scrollHeight-_417.h,0);_419=Math.max(html.scrollWidth-_417.w,0);};_416.autoScroll=function(e){var v=_417||_415.getBox(doc),html=win.body(doc).parentNode,dx=0,dy=0;if(e.clientX<_416.H_TRIGGER_AUTOSCROLL){dx=-_416.H_AUTOSCROLL_VALUE;}else{if(e.clientX>v.w-_416.H_TRIGGER_AUTOSCROLL){dx=Math.min(_416.H_AUTOSCROLL_VALUE,_419-html.scrollLeft);}}if(e.clientY<_416.V_TRIGGER_AUTOSCROLL){dy=-_416.V_AUTOSCROLL_VALUE;}else{if(e.clientY>v.h-_416.V_TRIGGER_AUTOSCROLL){dy=Math.min(_416.V_AUTOSCROLL_VALUE,_418-html.scrollTop);}}window.scrollBy(dx,dy);};_416._validNodes={"div":1,"p":1,"td":1};_416._validOverflow={"auto":1,"scroll":1};_416.autoScrollNodes=function(e){var b,t,w,h,rx,ry,dx=0,dy=0,_41a,_41b;for(var n=e.target;n;){if(n.nodeType==1&&(n.tagName.toLowerCase() in _416._validNodes)){var s=_414.getComputedStyle(n),_41c=(s.overflowX.toLowerCase() in _416._validOverflow),_41d=(s.overflowY.toLowerCase() in _416._validOverflow);if(_41c||_41d){b=_413.getContentBox(n,s);t=_413.position(n,true);}if(_41c){w=Math.min(_416.H_TRIGGER_AUTOSCROLL,b.w/2);rx=e.pageX-t.x;if(has("webkit")||has("opera")){rx+=win.body().scrollLeft;}dx=0;if(rx>0&&rx<b.w){if(rx<w){dx=-w;}else{if(rx>b.w-w){dx=w;}}_41a=n.scrollLeft;n.scrollLeft=n.scrollLeft+dx;}}if(_41d){h=Math.min(_416.V_TRIGGER_AUTOSCROLL,b.h/2);ry=e.pageY-t.y;if(has("webkit")||has("opera")){ry+=win.body().scrollTop;}dy=0;if(ry>0&&ry<b.h){if(ry<h){dy=-h;}else{if(ry>b.h-h){dy=h;}}_41b=n.scrollTop;n.scrollTop=n.scrollTop+dy;}}if(dx||dy){return;}}try{n=n.parentNode;}catch(x){n=null;}}_416.autoScroll(e);};return _416;});},"dijit/form/_RadioButtonMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/_base/lang","dojo/query!css2","../registry"],function(_41e,_41f,_420,lang,_421,_422){return _41f("dijit.form._RadioButtonMixin",null,{type:"radio",_getRelatedWidgets:function(){var ary=[];_421("input[type=radio]",this.focusNode.form||this.ownerDocument).forEach(lang.hitch(this,function(_423){if(_423.name==this.name&&_423.form==this.focusNode.form){var _424=_422.getEnclosingWidget(_423);if(_424){ary.push(_424);}}}));return ary;},_setCheckedAttr:function(_425){this.inherited(arguments);if(!this._created){return;}if(_425){_41e.forEach(this._getRelatedWidgets(),lang.hitch(this,function(_426){if(_426!=this&&_426.checked){_426.set("checked",false);}}));}},_getSubmitValue:function(_427){return _427==null?"on":_427;},_onClick:function(e){if(this.checked||this.disabled){e.stopPropagation();e.preventDefault();return false;}if(this.readOnly){e.stopPropagation();e.preventDefault();_41e.forEach(this._getRelatedWidgets(),lang.hitch(this,function(_428){_420.set(this.focusNode||this.domNode,"checked",_428.checked);}));return false;}var _429=false;var _42a;_41e.some(this._getRelatedWidgets(),function(_42b){if(_42b.checked){_42a=_42b;return true;}return false;});this.checked=true;_42a&&(_42a.checked=false);if(this.onClick(e)===false||e.defaultPrevented){_429=true;}this.checked=false;_42a&&(_42a.checked=true);if(_429){e.preventDefault();}else{this.set("checked",true);}return !_429;}});});},"dojo/data/ItemFileWriteStore":function(){define(["../_base/lang","../_base/declare","../_base/array","../_base/json","../_base/kernel","./ItemFileReadStore","../date/stamp"],function(lang,_42c,_42d,_42e,_42f,_430,_431){return _42c("dojo.data.ItemFileWriteStore",_430,{constructor:function(_432){this._features["dojo.data.api.Write"]=true;this._features["dojo.data.api.Notification"]=true;this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};if(!this._datatypeMap["Date"].serialize){this._datatypeMap["Date"].serialize=function(obj){return _431.toISOString(obj,{zulu:true});};}if(_432&&(_432.referenceIntegrity===false)){this.referenceIntegrity=false;}this._saveInProgress=false;},referenceIntegrity:true,_assert:function(_433){if(!_433){throw new Error("assertion failed in ItemFileWriteStore");}},_getIdentifierAttribute:function(){return this.getFeatures()["dojo.data.api.Identity"];},newItem:function(_434,_435){this._assert(!this._saveInProgress);if(!this._loadFinished){this._forceLoad();}if(typeof _434!="object"&&typeof _434!="undefined"){throw new Error("newItem() was passed something other than an object");}var _436=null;var _437=this._getIdentifierAttribute();if(_437===Number){_436=this._arrayOfAllItems.length;}else{_436=_434[_437];if(typeof _436==="undefined"){throw new Error("newItem() was not passed an identity for the new item");}if(lang.isArray(_436)){throw new Error("newItem() was not passed an single-valued identity");}}if(this._itemsByIdentity){this._assert(typeof this._itemsByIdentity[_436]==="undefined");}this._assert(typeof this._pending._newItems[_436]==="undefined");this._assert(typeof this._pending._deletedItems[_436]==="undefined");var _438={};_438[this._storeRefPropName]=this;_438[this._itemNumPropName]=this._arrayOfAllItems.length;if(this._itemsByIdentity){this._itemsByIdentity[_436]=_438;_438[_437]=[_436];}this._arrayOfAllItems.push(_438);var _439=null;if(_435&&_435.parent&&_435.attribute){_439={item:_435.parent,attribute:_435.attribute,oldValue:undefined};var _43a=this.getValues(_435.parent,_435.attribute);if(_43a&&_43a.length>0){var _43b=_43a.slice(0,_43a.length);if(_43a.length===1){_439.oldValue=_43a[0];}else{_439.oldValue=_43a.slice(0,_43a.length);}_43b.push(_438);this._setValueOrValues(_435.parent,_435.attribute,_43b,false);_439.newValue=this.getValues(_435.parent,_435.attribute);}else{this._setValueOrValues(_435.parent,_435.attribute,_438,false);_439.newValue=_438;}}else{_438[this._rootItemPropName]=true;this._arrayOfTopLevelItems.push(_438);}this._pending._newItems[_436]=_438;for(var key in _434){if(key===this._storeRefPropName||key===this._itemNumPropName){throw new Error("encountered bug in ItemFileWriteStore.newItem");}var _43c=_434[key];if(!lang.isArray(_43c)){_43c=[_43c];}_438[key]=_43c;if(this.referenceIntegrity){for(var i=0;i<_43c.length;i++){var val=_43c[i];if(this.isItem(val)){this._addReferenceToMap(val,_438,key);}}}}this.onNew(_438,_439);return _438;},_removeArrayElement:function(_43d,_43e){var _43f=_42d.indexOf(_43d,_43e);if(_43f!=-1){_43d.splice(_43f,1);return true;}return false;},deleteItem:function(item){this._assert(!this._saveInProgress);this._assertIsItem(item);var _440=item[this._itemNumPropName];var _441=this.getIdentity(item);if(this.referenceIntegrity){var _442=this.getAttributes(item);if(item[this._reverseRefMap]){item["backup_"+this._reverseRefMap]=lang.clone(item[this._reverseRefMap]);}_42d.forEach(_442,function(_443){_42d.forEach(this.getValues(item,_443),function(_444){if(this.isItem(_444)){if(!item["backupRefs_"+this._reverseRefMap]){item["backupRefs_"+this._reverseRefMap]=[];}item["backupRefs_"+this._reverseRefMap].push({id:this.getIdentity(_444),attr:_443});this._removeReferenceFromMap(_444,item,_443);}},this);},this);var _445=item[this._reverseRefMap];if(_445){for(var _446 in _445){var _447=null;if(this._itemsByIdentity){_447=this._itemsByIdentity[_446];}else{_447=this._arrayOfAllItems[_446];}if(_447){for(var _448 in _445[_446]){var _449=this.getValues(_447,_448)||[];var _44a=_42d.filter(_449,function(_44b){return !(this.isItem(_44b)&&this.getIdentity(_44b)==_441);},this);this._removeReferenceFromMap(item,_447,_448);if(_44a.length<_449.length){this._setValueOrValues(_447,_448,_44a,true);}}}}}}this._arrayOfAllItems[_440]=null;item[this._storeRefPropName]=null;if(this._itemsByIdentity){delete this._itemsByIdentity[_441];}this._pending._deletedItems[_441]=item;if(item[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,item);}this.onDelete(item);return true;},setValue:function(item,_44c,_44d){return this._setValueOrValues(item,_44c,_44d,true);},setValues:function(item,_44e,_44f){return this._setValueOrValues(item,_44e,_44f,true);},unsetAttribute:function(item,_450){return this._setValueOrValues(item,_450,[],true);},_setValueOrValues:function(item,_451,_452,_453){this._assert(!this._saveInProgress);this._assertIsItem(item);this._assert(lang.isString(_451));this._assert(typeof _452!=="undefined");var _454=this._getIdentifierAttribute();if(_451==_454){throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier.");}var _455=this._getValueOrValues(item,_451);var _456=this.getIdentity(item);if(!this._pending._modifiedItems[_456]){var _457={};for(var key in item){if((key===this._storeRefPropName)||(key===this._itemNumPropName)||(key===this._rootItemPropName)){_457[key]=item[key];}else{if(key===this._reverseRefMap){_457[key]=lang.clone(item[key]);}else{_457[key]=item[key].slice(0,item[key].length);}}}this._pending._modifiedItems[_456]=_457;}var _458=false;if(lang.isArray(_452)&&_452.length===0){_458=delete item[_451];_452=undefined;if(this.referenceIntegrity&&_455){var _459=_455;if(!lang.isArray(_459)){_459=[_459];}for(var i=0;i<_459.length;i++){var _45a=_459[i];if(this.isItem(_45a)){this._removeReferenceFromMap(_45a,item,_451);}}}}else{var _45b;if(lang.isArray(_452)){_45b=_452.slice(0,_452.length);}else{_45b=[_452];}if(this.referenceIntegrity){if(_455){var _459=_455;if(!lang.isArray(_459)){_459=[_459];}var map={};_42d.forEach(_459,function(_45c){if(this.isItem(_45c)){var id=this.getIdentity(_45c);map[id.toString()]=true;}},this);_42d.forEach(_45b,function(_45d){if(this.isItem(_45d)){var id=this.getIdentity(_45d);if(map[id.toString()]){delete map[id.toString()];}else{this._addReferenceToMap(_45d,item,_451);}}},this);for(var rId in map){var _45e;if(this._itemsByIdentity){_45e=this._itemsByIdentity[rId];}else{_45e=this._arrayOfAllItems[rId];}this._removeReferenceFromMap(_45e,item,_451);}}else{for(var i=0;i<_45b.length;i++){var _45a=_45b[i];if(this.isItem(_45a)){this._addReferenceToMap(_45a,item,_451);}}}}item[_451]=_45b;_458=true;}if(_453){this.onSet(item,_451,_455,_452);}return _458;},_addReferenceToMap:function(_45f,_460,_461){var _462=this.getIdentity(_460);var _463=_45f[this._reverseRefMap];if(!_463){_463=_45f[this._reverseRefMap]={};}var _464=_463[_462];if(!_464){_464=_463[_462]={};}_464[_461]=true;},_removeReferenceFromMap:function(_465,_466,_467){var _468=this.getIdentity(_466);var _469=_465[this._reverseRefMap];var _46a;if(_469){for(_46a in _469){if(_46a==_468){delete _469[_46a][_467];if(this._isEmpty(_469[_46a])){delete _469[_46a];}}}if(this._isEmpty(_469)){delete _465[this._reverseRefMap];}}},_dumpReferenceMap:function(){var i;for(i=0;i<this._arrayOfAllItems.length;i++){var item=this._arrayOfAllItems[i];if(item&&item[this._reverseRefMap]){}}},_getValueOrValues:function(item,_46b){var _46c=undefined;if(this.hasAttribute(item,_46b)){var _46d=this.getValues(item,_46b);if(_46d.length==1){_46c=_46d[0];}else{_46c=_46d;}}return _46c;},_flatten:function(_46e){if(this.isItem(_46e)){return {_reference:this.getIdentity(_46e)};}else{if(typeof _46e==="object"){for(var type in this._datatypeMap){var _46f=this._datatypeMap[type];if(lang.isObject(_46f)&&!lang.isFunction(_46f)){if(_46e instanceof _46f.type){if(!_46f.serialize){throw new Error("ItemFileWriteStore: No serializer defined for type mapping: ["+type+"]");}return {_type:type,_value:_46f.serialize(_46e)};}}else{if(_46e instanceof _46f){return {_type:type,_value:_46e.toString()};}}}}return _46e;}},_getNewFileContentString:function(){var _470={};var _471=this._getIdentifierAttribute();if(_471!==Number){_470.identifier=_471;}if(this._labelAttr){_470.label=this._labelAttr;}_470.items=[];for(var i=0;i<this._arrayOfAllItems.length;++i){var item=this._arrayOfAllItems[i];if(item!==null){var _472={};for(var key in item){if(key!==this._storeRefPropName&&key!==this._itemNumPropName&&key!==this._reverseRefMap&&key!==this._rootItemPropName){var _473=this.getValues(item,key);if(_473.length==1){_472[key]=this._flatten(_473[0]);}else{var _474=[];for(var j=0;j<_473.length;++j){_474.push(this._flatten(_473[j]));_472[key]=_474;}}}}_470.items.push(_472);}}var _475=true;return _42e.toJson(_470,_475);},_isEmpty:function(_476){var _477=true;if(lang.isObject(_476)){var i;for(i in _476){_477=false;break;}}else{if(lang.isArray(_476)){if(_476.length>0){_477=false;}}}return _477;},save:function(_478){this._assert(!this._saveInProgress);this._saveInProgress=true;var self=this;var _479=function(){self._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};self._saveInProgress=false;if(_478&&_478.onComplete){var _47a=_478.scope||_42f.global;_478.onComplete.call(_47a);}};var _47b=function(err){self._saveInProgress=false;if(_478&&_478.onError){var _47c=_478.scope||_42f.global;_478.onError.call(_47c,err);}};if(this._saveEverything){var _47d=this._getNewFileContentString();this._saveEverything(_479,_47b,_47d);}if(this._saveCustom){this._saveCustom(_479,_47b);}if(!this._saveEverything&&!this._saveCustom){_479();}},revert:function(){this._assert(!this._saveInProgress);var _47e;for(_47e in this._pending._modifiedItems){var _47f=this._pending._modifiedItems[_47e];var _480=null;if(this._itemsByIdentity){_480=this._itemsByIdentity[_47e];}else{_480=this._arrayOfAllItems[_47e];}_47f[this._storeRefPropName]=this;for(var key in _480){delete _480[key];}lang.mixin(_480,_47f);}var _481;for(_47e in this._pending._deletedItems){_481=this._pending._deletedItems[_47e];_481[this._storeRefPropName]=this;var _482=_481[this._itemNumPropName];if(_481["backup_"+this._reverseRefMap]){_481[this._reverseRefMap]=_481["backup_"+this._reverseRefMap];delete _481["backup_"+this._reverseRefMap];}this._arrayOfAllItems[_482]=_481;if(this._itemsByIdentity){this._itemsByIdentity[_47e]=_481;}if(_481[this._rootItemPropName]){this._arrayOfTopLevelItems.push(_481);}}for(_47e in this._pending._deletedItems){_481=this._pending._deletedItems[_47e];if(_481["backupRefs_"+this._reverseRefMap]){_42d.forEach(_481["backupRefs_"+this._reverseRefMap],function(_483){var _484;if(this._itemsByIdentity){_484=this._itemsByIdentity[_483.id];}else{_484=this._arrayOfAllItems[_483.id];}this._addReferenceToMap(_484,_481,_483.attr);},this);delete _481["backupRefs_"+this._reverseRefMap];}}for(_47e in this._pending._newItems){var _485=this._pending._newItems[_47e];_485[this._storeRefPropName]=null;this._arrayOfAllItems[_485[this._itemNumPropName]]=null;if(_485[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_485);}if(this._itemsByIdentity){delete this._itemsByIdentity[_47e];}}this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};return true;},isDirty:function(item){if(item){var _486=this.getIdentity(item);return new Boolean(this._pending._newItems[_486]||this._pending._modifiedItems[_486]||this._pending._deletedItems[_486]).valueOf();}else{return !this._isEmpty(this._pending._newItems)||!this._isEmpty(this._pending._modifiedItems)||!this._isEmpty(this._pending._deletedItems);}},onSet:function(item,_487,_488,_489){},onNew:function(_48a,_48b){},onDelete:function(_48c){},close:function(_48d){if(this.clearOnClose){if(!this.isDirty()){this.inherited(arguments);}else{throw new Error("dojo.data.ItemFileWriteStore: There are unsaved changes present in the store. Please save or revert the changes before invoking close.");}}}});});},"dojo/dnd/TimedMoveable":function(){define(["../_base/declare","./Moveable"],function(_48e,_48f){var _490=_48f.prototype.onMove;return _48e("dojo.dnd.TimedMoveable",_48f,{timeout:40,constructor:function(node,_491){if(!_491){_491={};}if(_491.timeout&&typeof _491.timeout=="number"&&_491.timeout>=0){this.timeout=_491.timeout;}},onMoveStop:function(_492){if(_492._timer){clearTimeout(_492._timer);_490.call(this,_492,_492._leftTop);}_48f.prototype.onMoveStop.apply(this,arguments);},onMove:function(_493,_494){_493._leftTop=_494;if(!_493._timer){var _495=this;_493._timer=setTimeout(function(){_493._timer=null;_490.call(_495,_493,_493._leftTop);},this.timeout);}}});});},"dojo/NodeList-fx":function(){define(["./query","./_base/lang","./aspect","./_base/fx","./fx"],function(_496,lang,_497,_498,_499){var _49a=_496.NodeList;lang.extend(_49a,{_anim:function(obj,_49b,args){args=args||{};var a=_499.combine(this.map(function(item){var _49c={node:item};lang.mixin(_49c,args);return obj[_49b](_49c);}));return args.auto?a.play()&&this:a;},wipeIn:function(args){return this._anim(_499,"wipeIn",args);},wipeOut:function(args){return this._anim(_499,"wipeOut",args);},slideTo:function(args){return this._anim(_499,"slideTo",args);},fadeIn:function(args){return this._anim(_498,"fadeIn",args);},fadeOut:function(args){return this._anim(_498,"fadeOut",args);},animateProperty:function(args){return this._anim(_498,"animateProperty",args);},anim:function(_49d,_49e,_49f,_4a0,_4a1){var _4a2=_499.combine(this.map(function(item){return _498.animateProperty({node:item,properties:_49d,duration:_49e||350,easing:_49f});}));if(_4a0){_497.after(_4a2,"onEnd",_4a0,true);}return _4a2.play(_4a1||0);}});return _49a;});},"dijit/form/_ListMouseMixin":function(){define(["dojo/_base/declare","dojo/on","dojo/touch","./_ListBase"],function(_4a3,on,_4a4,_4a5){return _4a3("dijit.form._ListMouseMixin",_4a5,{postCreate:function(){this.inherited(arguments);this.domNode.dojoClick=true;this._listConnect("click","_onClick");this._listConnect("mousedown","_onMouseDown");this._listConnect("mouseup","_onMouseUp");this._listConnect("mouseover","_onMouseOver");this._listConnect("mouseout","_onMouseOut");},_onClick:function(evt,_4a6){this._setSelectedAttr(_4a6,false);if(this._deferredClick){this._deferredClick.remove();}this._deferredClick=this.defer(function(){this._deferredClick=null;this.onClick(_4a6);});},_onMouseDown:function(evt,_4a7){if(this._hoveredNode){this.onUnhover(this._hoveredNode);this._hoveredNode=null;}this._isDragging=true;this._setSelectedAttr(_4a7,false);},_onMouseUp:function(evt,_4a8){this._isDragging=false;var _4a9=this.selected;var _4aa=this._hoveredNode;if(_4a9&&_4a8==_4a9){this.defer(function(){this._onClick(evt,_4a9);});}else{if(_4aa){this.defer(function(){this._onClick(evt,_4aa);});}}},_onMouseOut:function(evt,_4ab){if(this._hoveredNode){this.onUnhover(this._hoveredNode);this._hoveredNode=null;}if(this._isDragging){this._cancelDrag=(new Date()).getTime()+1000;}},_onMouseOver:function(evt,_4ac){if(this._cancelDrag){var time=(new Date()).getTime();if(time>this._cancelDrag){this._isDragging=false;}this._cancelDrag=null;}this._hoveredNode=_4ac;this.onHover(_4ac);if(this._isDragging){this._setSelectedAttr(_4ac,false);}}});});},"dojo/cookie":function(){define(["./_base/kernel","./regexp"],function(dojo,_4ad){dojo.cookie=function(name,_4ae,_4af){var c=document.cookie,ret;if(arguments.length==1){var _4b0=c.match(new RegExp("(?:^|; )"+_4ad.escapeString(name)+"=([^;]*)"));ret=_4b0?decodeURIComponent(_4b0[1]):undefined;}else{_4af=_4af||{};var exp=_4af.expires;if(typeof exp=="number"){var d=new Date();d.setTime(d.getTime()+exp*24*60*60*1000);exp=_4af.expires=d;}if(exp&&exp.toUTCString){_4af.expires=exp.toUTCString();}_4ae=encodeURIComponent(_4ae);var _4b1=name+"="+_4ae,_4b2;for(_4b2 in _4af){_4b1+="; "+_4b2;var _4b3=_4af[_4b2];if(_4b3!==true){_4b1+="="+_4b3;}}document.cookie=_4b1;}return ret;};dojo.cookie.isSupported=function(){if(!("cookieEnabled" in navigator)){this("__djCookieTest__","CookiesAllowed");navigator.cookieEnabled=this("__djCookieTest__")=="CookiesAllowed";if(navigator.cookieEnabled){this("__djCookieTest__","",{expires:-1});}}return navigator.cookieEnabled;};return dojo.cookie;});},"dojo/cache":function(){define(["./_base/kernel","./text"],function(dojo){return dojo.cache;});},"dijit/ProgressBar":function(){define(["require","dojo/_base/declare","dojo/dom-class","dojo/_base/lang","dojo/number","./_Widget","./_TemplatedMixin","dojo/text!./templates/ProgressBar.html"],function(_4b4,_4b5,_4b6,lang,_4b7,_4b8,_4b9,_4ba){return _4b5("dijit.ProgressBar",[_4b8,_4b9],{progress:"0",value:"",maximum:100,places:0,indeterminate:false,label:"",name:"",templateString:_4ba,_indeterminateHighContrastImagePath:_4b4.toUrl("./themes/a11y/indeterminate_progress.gif"),postMixInProperties:function(){this.inherited(arguments);if(!(this.params&&"value" in this.params)){this.value=this.indeterminate?Infinity:this.progress;}},buildRendering:function(){this.inherited(arguments);this.indeterminateHighContrastImage.setAttribute("src",this._indeterminateHighContrastImagePath.toString());this.update();},_setDirAttr:function(val){var rtl=val.toLowerCase()=="rtl";_4b6.toggle(this.domNode,"dijitProgressBarRtl",rtl);_4b6.toggle(this.domNode,"dijitProgressBarIndeterminateRtl",this.indeterminate&&rtl);this.inherited(arguments);},update:function(_4bb){lang.mixin(this,_4bb||{});var tip=this.internalProgress,ap=this.domNode;var _4bc=1;if(this.indeterminate){ap.removeAttribute("aria-valuenow");}else{if(String(this.progress).indexOf("%")!=-1){_4bc=Math.min(parseFloat(this.progress)/100,1);this.progress=_4bc*this.maximum;}else{this.progress=Math.min(this.progress,this.maximum);_4bc=this.maximum?this.progress/this.maximum:0;}ap.setAttribute("aria-valuenow",this.progress);}ap.setAttribute("aria-labelledby",this.labelNode.id);ap.setAttribute("aria-valuemin",0);ap.setAttribute("aria-valuemax",this.maximum);this.labelNode.innerHTML=this.report(_4bc);_4b6.toggle(this.domNode,"dijitProgressBarIndeterminate",this.indeterminate);_4b6.toggle(this.domNode,"dijitProgressBarIndeterminateRtl",this.indeterminate&&!this.isLeftToRight());tip.style.width=(_4bc*100)+"%";this.onChange();},_setValueAttr:function(v){this._set("value",v);if(v==Infinity){this.update({indeterminate:true});}else{this.update({indeterminate:false,progress:v});}},_setLabelAttr:function(_4bd){this._set("label",_4bd);this.update();},_setIndeterminateAttr:function(_4be){this._set("indeterminate",_4be);this.update();},report:function(_4bf){return this.label?this.label:(this.indeterminate?"&#160;":_4b7.format(_4bf,{type:"percent",places:this.places,locale:this.lang}));},onChange:function(){}});});},"dijit/_base/popup":function(){define(["dojo/dom-class","dojo/_base/window","../popup","../BackgroundIframe"],function(_4c0,win,_4c1){var _4c2=_4c1._createWrapper;_4c1._createWrapper=function(_4c3){if(!_4c3.declaredClass){_4c3={_popupWrapper:(_4c3.parentNode&&_4c0.contains(_4c3.parentNode,"dijitPopup"))?_4c3.parentNode:null,domNode:_4c3,destroy:function(){},ownerDocument:_4c3.ownerDocument,ownerDocumentBody:win.body(_4c3.ownerDocument)};}return _4c2.call(this,_4c3);};var _4c4=_4c1.open;_4c1.open=function(args){if(args.orient&&typeof args.orient!="string"&&!("length" in args.orient)){var ary=[];for(var key in args.orient){ary.push({aroundCorner:key,corner:args.orient[key]});}args.orient=ary;}return _4c4.call(this,args);};return _4c1;});},"dojo/promise/all":function(){define(["../_base/array","../_base/lang","../Deferred","../when"],function(_4c5,lang,_4c6,when){"use strict";var some=_4c5.some;return function all(_4c7){var _4c8,_4c5;if(lang.isArray(_4c7)){_4c5=_4c7;}else{if(_4c7&&typeof _4c7==="object"){_4c8=_4c7;}}var _4c9;var _4ca=[];if(_4c8){_4c5=[];for(var key in _4c8){if(Object.hasOwnProperty.call(_4c8,key)){_4ca.push(key);_4c5.push(_4c8[key]);}}_4c9={};}else{if(_4c5){_4c9=[];}}if(!_4c5||!_4c5.length){return new _4c6().resolve(_4c9);}var _4cb=new _4c6();_4cb.promise.always(function(){_4c9=_4ca=null;});var _4cc=_4c5.length;some(_4c5,function(_4cd,_4ce){if(!_4c8){_4ca.push(_4ce);}when(_4cd,function(_4cf){if(!_4cb.isFulfilled()){_4c9[_4ca[_4ce]]=_4cf;if(--_4cc===0){_4cb.resolve(_4c9);}}},_4cb.reject);return _4cb.isFulfilled();});return _4cb.promise;};});},"dijit/ColorPalette":function(){define(["require","dojo/text!./templates/ColorPalette.html","./_Widget","./_TemplatedMixin","./_PaletteMixin","./hccss","dojo/i18n","dojo/_base/Color","dojo/_base/declare","dojo/dom-construct","dojo/string","dojo/i18n!dojo/nls/colors","dojo/colors"],function(_4d0,_4d1,_4d2,_4d3,_4d4,has,i18n,_4d5,_4d6,_4d7,_4d8){var _4d9=_4d6("dijit.ColorPalette",[_4d2,_4d3,_4d4],{palette:"7x10",_palettes:{"7x10":[["white","seashell","cornsilk","lemonchiffon","lightyellow","palegreen","paleturquoise","lightcyan","lavender","plum"],["lightgray","pink","bisque","moccasin","khaki","lightgreen","lightseagreen","lightskyblue","cornflowerblue","violet"],["silver","lightcoral","sandybrown","orange","palegoldenrod","chartreuse","mediumturquoise","skyblue","mediumslateblue","orchid"],["gray","red","orangered","darkorange","yellow","limegreen","darkseagreen","royalblue","slateblue","mediumorchid"],["dimgray","crimson","chocolate","coral","gold","forestgreen","seagreen","blue","blueviolet","darkorchid"],["darkslategray","firebrick","saddlebrown","sienna","olive","green","darkcyan","mediumblue","darkslateblue","darkmagenta"],["black","darkred","maroon","brown","darkolivegreen","darkgreen","midnightblue","navy","indigo","purple"]],"3x4":[["white","lime","green","blue"],["silver","yellow","fuchsia","navy"],["gray","red","purple","black"]]},templateString:_4d1,baseClass:"dijitColorPalette",_dyeFactory:function(_4da,row,col,_4db){return new this._dyeClass(_4da,row,col,_4db);},buildRendering:function(){this.inherited(arguments);this._dyeClass=_4d6(_4d9._Color,{palette:this.palette});this._preparePalette(this._palettes[this.palette],i18n.getLocalization("dojo","colors",this.lang));}});_4d9._Color=_4d6("dijit._Color",_4d5,{template:"<span class='dijitInline dijitPaletteImg'>"+"<img src='${blankGif}' alt='${alt}' title='${title}' class='dijitColorPaletteSwatch' style='background-color: ${color}'/>"+"</span>",hcTemplate:"<span class='dijitInline dijitPaletteImg' style='position: relative; overflow: hidden; height: 12px; width: 14px;'>"+"<img src='${image}' alt='${alt}' title='${title}' style='position: absolute; left: ${left}px; top: ${top}px; ${size}'/>"+"</span>",_imagePaths:{"7x10":_4d0.toUrl("./themes/a11y/colors7x10.png"),"3x4":_4d0.toUrl("./themes/a11y/colors3x4.png")},constructor:function(_4dc,row,col,_4dd){this._title=_4dd;this._row=row;this._col=col;this.setColor(_4d5.named[_4dc]);},getValue:function(){return this.toHex();},fillCell:function(cell,_4de){var html=_4d8.substitute(has("highcontrast")?this.hcTemplate:this.template,{color:this.toHex(),blankGif:_4de,alt:this._title,title:this._title,image:this._imagePaths[this.palette].toString(),left:this._col*-20-5,top:this._row*-20-5,size:this.palette=="7x10"?"height: 145px; width: 206px":"height: 64px; width: 86px"});_4d7.place(html,cell);}});return _4d9;});},"dojo/_base/url":function(){define(["./kernel"],function(dojo){var ore=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),ire=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"),_4df=function(){var n=null,_4e0=arguments,uri=[_4e0[0]];for(var i=1;i<_4e0.length;i++){if(!_4e0[i]){continue;}var _4e1=new _4df(_4e0[i]+""),_4e2=new _4df(uri[0]+"");if(_4e1.path==""&&!_4e1.scheme&&!_4e1.authority&&!_4e1.query){if(_4e1.fragment!=n){_4e2.fragment=_4e1.fragment;}_4e1=_4e2;}else{if(!_4e1.scheme){_4e1.scheme=_4e2.scheme;if(!_4e1.authority){_4e1.authority=_4e2.authority;if(_4e1.path.charAt(0)!="/"){var path=_4e2.path.substring(0,_4e2.path.lastIndexOf("/")+1)+_4e1.path;var segs=path.split("/");for(var j=0;j<segs.length;j++){if(segs[j]=="."){if(j==segs.length-1){segs[j]="";}else{segs.splice(j,1);j--;}}else{if(j>0&&!(j==1&&segs[0]=="")&&segs[j]==".."&&segs[j-1]!=".."){if(j==(segs.length-1)){segs.splice(j,1);segs[j-1]="";}else{segs.splice(j-1,2);j-=2;}}}}_4e1.path=segs.join("/");}}}}uri=[];if(_4e1.scheme){uri.push(_4e1.scheme,":");}if(_4e1.authority){uri.push("//",_4e1.authority);}uri.push(_4e1.path);if(_4e1.query){uri.push("?",_4e1.query);}if(_4e1.fragment){uri.push("#",_4e1.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};_4df.prototype.toString=function(){return this.uri;};return dojo._Url=_4df;});},"dojo/text":function(){define(["./_base/kernel","require","./has","./request"],function(dojo,_4e3,has,_4e4){var _4e5;if(1){_4e5=function(url,sync,load){_4e4(url,{sync:!!sync,headers:{"X-Requested-With":null}}).then(load);};}else{if(_4e3.getText){_4e5=_4e3.getText;}else{console.error("dojo/text plugin failed to load because loader does not support getText");}}var _4e6={},_4e7=function(text){if(text){text=text.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");var _4e8=text.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_4e8){text=_4e8[1];}}else{text="";}return text;},_4e9={},_4ea={};dojo.cache=function(_4eb,url,_4ec){var key;if(typeof _4eb=="string"){if(/\//.test(_4eb)){key=_4eb;_4ec=url;}else{key=_4e3.toUrl(_4eb.replace(/\./g,"/")+(url?("/"+url):""));}}else{key=_4eb+"";_4ec=url;}var val=(_4ec!=undefined&&typeof _4ec!="string")?_4ec.value:_4ec,_4ed=_4ec&&_4ec.sanitize;if(typeof val=="string"){_4e6[key]=val;return _4ed?_4e7(val):val;}else{if(val===null){delete _4e6[key];return null;}else{if(!(key in _4e6)){_4e5(key,true,function(text){_4e6[key]=text;});}return _4ed?_4e7(_4e6[key]):_4e6[key];}}};return {dynamic:true,normalize:function(id,_4ee){var _4ef=id.split("!"),url=_4ef[0];return (/^\./.test(url)?_4ee(url):url)+(_4ef[1]?"!"+_4ef[1]:"");},load:function(id,_4f0,load){var _4f1=id.split("!"),_4f2=_4f1.length>1,_4f3=_4f1[0],url=_4f0.toUrl(_4f1[0]),_4f4="url:"+url,text=_4e9,_4f5=function(text){load(_4f2?_4e7(text):text);};if(_4f3 in _4e6){text=_4e6[_4f3];}else{if(_4f0.cache&&_4f4 in _4f0.cache){text=_4f0.cache[_4f4];}else{if(url in _4e6){text=_4e6[url];}}}if(text===_4e9){if(_4ea[url]){_4ea[url].push(_4f5);}else{var _4f6=_4ea[url]=[_4f5];_4e5(url,!_4f0.async,function(text){_4e6[_4f3]=_4e6[url]=text;for(var i=0;i<_4f6.length;){_4f6[i++](text);}delete _4ea[url];});}}else{_4f5(text);}}};});},"dijit/layout/LayoutContainer":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-style","dojo/_base/lang","../_WidgetBase","./_LayoutWidget","./utils"],function(_4f7,_4f8,_4f9,_4fa,lang,_4fb,_4fc,_4fd){var _4fe=_4f8("dijit.layout.LayoutContainer",_4fc,{design:"headline",baseClass:"dijitLayoutContainer",startup:function(){if(this._started){return;}_4f7.forEach(this.getChildren(),this._setupChild,this);this.inherited(arguments);},_setupChild:function(_4ff){this.inherited(arguments);var _500=_4ff.region;if(_500){_4f9.add(_4ff.domNode,this.baseClass+"Pane");}},_getOrderedChildren:function(){var _501=_4f7.map(this.getChildren(),function(_502,idx){return {pane:_502,weight:[_502.region=="center"?Infinity:0,_502.layoutPriority,(this.design=="sidebar"?1:-1)*(/top|bottom/.test(_502.region)?1:-1),idx]};},this);_501.sort(function(a,b){var aw=a.weight,bw=b.weight;for(var i=0;i<aw.length;i++){if(aw[i]!=bw[i]){return aw[i]-bw[i];}}return 0;});return _4f7.map(_501,function(w){return w.pane;});},layout:function(){_4fd.layoutChildren(this.domNode,this._contentBox,this._getOrderedChildren());},addChild:function(_503,_504){this.inherited(arguments);if(this._started){this.layout();}},removeChild:function(_505){this.inherited(arguments);if(this._started){this.layout();}_4f9.remove(_505.domNode,this.baseClass+"Pane");_4fa.set(_505.domNode,{top:"auto",bottom:"auto",left:"auto",right:"auto",position:"static"});_4fa.set(_505.domNode,/top|bottom/.test(_505.region)?"width":"height","auto");}});_4fe.ChildWidgetProperties={region:"",layoutAlign:"",layoutPriority:0};lang.extend(_4fb,_4fe.ChildWidgetProperties);return _4fe;});},"dojo/uacss":function(){define(["./dom-geometry","./_base/lang","./domReady","./sniff","./_base/window"],function(_506,lang,_507,has,_508){var html=_508.doc.documentElement,ie=has("ie"),_509=has("trident"),_50a=has("opera"),maj=Math.floor,ff=has("ff"),_50b=_506.boxModel.replace(/-/,""),_50c={"dj_quirks":has("quirks"),"dj_opera":_50a,"dj_khtml":has("khtml"),"dj_webkit":has("webkit"),"dj_safari":has("safari"),"dj_chrome":has("chrome"),"dj_edge":has("edge"),"dj_gecko":has("mozilla"),"dj_ios":has("ios"),"dj_android":has("android")};if(ie){_50c["dj_ie"]=true;_50c["dj_ie"+maj(ie)]=true;_50c["dj_iequirks"]=has("quirks");}if(_509){_50c["dj_trident"]=true;_50c["dj_trident"+maj(_509)]=true;}if(ff){_50c["dj_ff"+maj(ff)]=true;}_50c["dj_"+_50b]=true;var _50d="";for(var clz in _50c){if(_50c[clz]){_50d+=clz+" ";}}html.className=lang.trim(html.className+" "+_50d);_507(function(){if(!_506.isBodyLtr()){var _50e="dj_rtl dijitRtl "+_50d.replace(/ /g,"-rtl ");html.className=lang.trim(html.className+" "+_50e+"dj_rtl dijitRtl "+_50d.replace(/ /g,"-rtl "));}});return has;});},"dijit/Tooltip":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/fx","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang","dojo/mouse","dojo/on","dojo/sniff","./_base/manager","./place","./_Widget","./_TemplatedMixin","./BackgroundIframe","dojo/text!./templates/Tooltip.html","./main"],function(_50f,_510,fx,dom,_511,_512,_513,lang,_514,on,has,_515,_516,_517,_518,_519,_51a,_51b){var _51c=_510("dijit._MasterTooltip",[_517,_518],{duration:_515.defaultDuration,templateString:_51a,postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);this.bgIframe=new _519(this.domNode);this.fadeIn=fx.fadeIn({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,"_onShow")});this.fadeOut=fx.fadeOut({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,"_onHide")});},show:function(_51d,_51e,_51f,rtl,_520,_521,_522){if(this.aroundNode&&this.aroundNode===_51e&&this.containerNode.innerHTML==_51d){return;}if(this.fadeOut.status()=="playing"){this._onDeck=arguments;return;}this.containerNode.innerHTML=_51d;if(_520){this.set("textDir",_520);}this.containerNode.align=rtl?"right":"left";var pos=_516.around(this.domNode,_51e,_51f&&_51f.length?_51f:_523.defaultPosition,!rtl,lang.hitch(this,"orient"));var _524=pos.aroundNodePos;if(pos.corner.charAt(0)=="M"&&pos.aroundCorner.charAt(0)=="M"){this.connectorNode.style.top=_524.y+((_524.h-this.connectorNode.offsetHeight)>>1)-pos.y+"px";this.connectorNode.style.left="";}else{if(pos.corner.charAt(1)=="M"&&pos.aroundCorner.charAt(1)=="M"){this.connectorNode.style.left=_524.x+((_524.w-this.connectorNode.offsetWidth)>>1)-pos.x+"px";}else{this.connectorNode.style.left="";this.connectorNode.style.top="";}}_513.set(this.domNode,"opacity",0);this.fadeIn.play();this.isShowingNow=true;this.aroundNode=_51e;this.onMouseEnter=_521||noop;this.onMouseLeave=_522||noop;},orient:function(node,_525,_526,_527,_528){this.connectorNode.style.top="";var _529=_527.h,_52a=_527.w;node.className="dijitTooltip "+{"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[_525+"-"+_526];this.domNode.style.width="auto";var size=_512.position(this.domNode);if(has("ie")||has("trident")){size.w+=2;}var _52b=Math.min((Math.max(_52a,1)),size.w);_512.setMarginBox(this.domNode,{w:_52b});if(_526.charAt(0)=="B"&&_525.charAt(0)=="B"){var bb=_512.position(node);var _52c=this.connectorNode.offsetHeight;if(bb.h>_529){var _52d=_529-((_528.h+_52c)>>1);this.connectorNode.style.top=_52d+"px";this.connectorNode.style.bottom="";}else{this.connectorNode.style.bottom=Math.min(Math.max(_528.h/2-_52c/2,0),bb.h-_52c)+"px";this.connectorNode.style.top="";}}else{this.connectorNode.style.top="";this.connectorNode.style.bottom="";}return Math.max(0,size.w-_52a);},_onShow:function(){if(has("ie")){this.domNode.style.filter="";}},hide:function(_52e){if(this._onDeck&&this._onDeck[1]==_52e){this._onDeck=null;}else{if(this.aroundNode===_52e){this.fadeIn.stop();this.isShowingNow=false;this.aroundNode=null;this.fadeOut.play();}else{}}this.onMouseEnter=this.onMouseLeave=noop;},_onHide:function(){this.domNode.style.cssText="";this.containerNode.innerHTML="";if(this._onDeck){this.show.apply(this,this._onDeck);this._onDeck=null;}}});if(has("dojo-bidi")){_51c.extend({_setAutoTextDir:function(node){this.applyTextDir(node);_50f.forEach(node.children,function(_52f){this._setAutoTextDir(_52f);},this);},_setTextDirAttr:function(_530){this._set("textDir",_530);if(_530=="auto"){this._setAutoTextDir(this.containerNode);}else{this.containerNode.dir=this.textDir;}}});}_51b.showTooltip=function(_531,_532,_533,rtl,_534,_535,_536){if(_533){_533=_50f.map(_533,function(val){return {after:"after-centered",before:"before-centered"}[val]||val;});}if(!_523._masterTT){_51b._masterTT=_523._masterTT=new _51c();}return _523._masterTT.show(_531,_532,_533,rtl,_534,_535,_536);};_51b.hideTooltip=function(_537){return _523._masterTT&&_523._masterTT.hide(_537);};var _538="DORMANT",_539="SHOW TIMER",_53a="SHOWING",_53b="HIDE TIMER";function noop(){};var _523=_510("dijit.Tooltip",_517,{label:"",showDelay:400,hideDelay:400,connectId:[],position:[],selector:"",_setConnectIdAttr:function(_53c){_50f.forEach(this._connections||[],function(_53d){_50f.forEach(_53d,function(_53e){_53e.remove();});},this);this._connectIds=_50f.filter(lang.isArrayLike(_53c)?_53c:(_53c?[_53c]:[]),function(id){return dom.byId(id,this.ownerDocument);},this);this._connections=_50f.map(this._connectIds,function(id){var node=dom.byId(id,this.ownerDocument),_53f=this.selector,_540=_53f?function(_541){return on.selector(_53f,_541);}:function(_542){return _542;},self=this;return [on(node,_540(_514.enter),function(){self._onHover(this);}),on(node,_540("focusin"),function(){self._onHover(this);}),on(node,_540(_514.leave),lang.hitch(self,"_onUnHover")),on(node,_540("focusout"),lang.hitch(self,"set","state",_538))];},this);this._set("connectId",_53c);},addTarget:function(node){var id=node.id||node;if(_50f.indexOf(this._connectIds,id)==-1){this.set("connectId",this._connectIds.concat(id));}},removeTarget:function(node){var id=node.id||node,idx=_50f.indexOf(this._connectIds,id);if(idx>=0){this._connectIds.splice(idx,1);this.set("connectId",this._connectIds);}},buildRendering:function(){this.inherited(arguments);_511.add(this.domNode,"dijitTooltipData");},startup:function(){this.inherited(arguments);var ids=this.connectId;_50f.forEach(lang.isArrayLike(ids)?ids:[ids],this.addTarget,this);},getContent:function(node){return this.label||this.domNode.innerHTML;},state:_538,_setStateAttr:function(val){if(this.state==val||(val==_539&&this.state==_53a)||(val==_53b&&this.state==_538)){return;}if(this._hideTimer){this._hideTimer.remove();delete this._hideTimer;}if(this._showTimer){this._showTimer.remove();delete this._showTimer;}switch(val){case _538:if(this._connectNode){_523.hide(this._connectNode);delete this._connectNode;this.onHide();}break;case _539:if(this.state!=_53a){this._showTimer=this.defer(function(){this.set("state",_53a);},this.showDelay);}break;case _53a:var _543=this.getContent(this._connectNode);if(!_543){this.set("state",_538);return;}_523.show(_543,this._connectNode,this.position,!this.isLeftToRight(),this.textDir,lang.hitch(this,"set","state",_53a),lang.hitch(this,"set","state",_53b));this.onShow(this._connectNode,this.position);break;case _53b:this._hideTimer=this.defer(function(){this.set("state",_538);},this.hideDelay);break;}this._set("state",val);},_onHover:function(_544){if(this._connectNode&&_544!=this._connectNode){this.set("state",_538);}this._connectNode=_544;this.set("state",_539);},_onUnHover:function(_545){this.set("state",_53b);},open:function(_546){this.set("state",_538);this._connectNode=_546;this.set("state",_53a);},close:function(){this.set("state",_538);},onShow:function(){},onHide:function(){},destroy:function(){this.set("state",_538);_50f.forEach(this._connections||[],function(_547){_50f.forEach(_547,function(_548){_548.remove();});},this);this.inherited(arguments);}});_523._MasterTooltip=_51c;_523.show=_51b.showTooltip;_523.hide=_51b.hideTooltip;_523.defaultPosition=["after-centered","before-centered"];return _523;});},"dojo/string":function(){define(["./_base/kernel","./_base/lang"],function(_549,lang){var _54a=/[&<>'"\/]/g;var _54b={"&":"&amp;","<":"&lt;",">":"&gt;","\"":"&quot;","'":"&#x27;","/":"&#x2F;"};var _54c={};lang.setObject("dojo.string",_54c);_54c.escape=function(str){if(!str){return "";}return str.replace(_54a,function(c){return _54b[c];});};_54c.rep=function(str,num){if(num<=0||!str){return "";}var buf=[];for(;;){if(num&1){buf.push(str);}if(!(num>>=1)){break;}str+=str;}return buf.join("");};_54c.pad=function(text,size,ch,end){if(!ch){ch="0";}var out=String(text),pad=_54c.rep(ch,Math.ceil((size-out.length)/ch.length));return end?out+pad:pad+out;};_54c.substitute=function(_54d,map,_54e,_54f){_54f=_54f||_549.global;_54e=_54e?lang.hitch(_54f,_54e):function(v){return v;};return _54d.replace(/\$\{([^\s\:\}]*)(?:\:([^\s\:\}]+))?\}/g,function(_550,key,_551){if(key==""){return "$";}var _552=lang.getObject(key,false,map);if(_551){_552=lang.getObject(_551,false,_54f).call(_54f,_552,key);}var _553=_54e(_552,key);if(typeof _553==="undefined"){throw new Error("string.substitute could not find key \""+key+"\" in template");}return _553.toString();});};_54c.trim=String.prototype.trim?lang.trim:function(str){str=str.replace(/^\s+/,"");for(var i=str.length-1;i>=0;i--){if(/\S/.test(str.charAt(i))){str=str.substring(0,i+1);break;}}return str;};return _54c;});},"dijit/layout/AccordionPane":function(){define(["dojo/_base/declare","dojo/_base/kernel","./ContentPane"],function(_554,_555,_556){return _554("dijit.layout.AccordionPane",_556,{constructor:function(){_555.deprecated("dijit.layout.AccordionPane deprecated, use ContentPane instead","","2.0");},onSelected:function(){}});});},"dijit/dijit":function(){define(["./main","./_base","dojo/parser","./_Widget","./_TemplatedMixin","./_Container","./layout/_LayoutWidget","./form/_FormWidget","./form/_FormValueWidget"],function(_557){return _557;});},"dijit/form/DropDownButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/query","../registry","../popup","./Button","../_Container","../_HasDropDown","dojo/text!./templates/DropDownButton.html","../a11yclick"],function(_558,_559,lang,_55a,_55b,_55c,_55d,_55e,_55f,_560){return _558("dijit.form.DropDownButton",[_55d,_55e,_55f],{baseClass:"dijitDropDownButton",templateString:_560,_fillContent:function(){var _561=this.srcNodeRef;var dest=this.containerNode;if(_561&&dest){while(_561.hasChildNodes()){var _562=_561.firstChild;if(_562.hasAttribute&&(_562.hasAttribute("data-dojo-type")||_562.hasAttribute("dojoType")||_562.hasAttribute("data-"+_559._scopeName+"-type")||_562.hasAttribute(_559._scopeName+"Type"))){this.dropDownContainer=this.ownerDocument.createElement("div");this.dropDownContainer.appendChild(_562);}else{dest.appendChild(_562);}}}},startup:function(){if(this._started){return;}if(!this.dropDown&&this.dropDownContainer){this.dropDown=_55b.byNode(this.dropDownContainer.firstChild);delete this.dropDownContainer;}if(this.dropDown){_55c.hide(this.dropDown);}this.inherited(arguments);},isLoaded:function(){var _563=this.dropDown;return (!!_563&&(!_563.href||_563.isLoaded));},loadDropDown:function(_564){var _565=this.dropDown;var _566=_565.on("load",lang.hitch(this,function(){_566.remove();_564();}));_565.refresh();},isFocusable:function(){return this.inherited(arguments)&&!this._mouseDown;}});});},"dijit/form/_FormValueMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","./_FormWidgetMixin"],function(_567,_568,keys,lang,on,has,_569){return _567("dijit.form._FormValueMixin",_569,{readOnly:false,_setReadOnlyAttr:function(_56a){if(has("trident")&&"disabled" in this){_568.set(this.focusNode,"readOnly",_56a||this.disabled);}else{_568.set(this.focusNode,"readOnly",_56a);}this._set("readOnly",_56a);},postCreate:function(){this.inherited(arguments);if(this._resetValue===undefined){this._lastValueReported=this._resetValue=this.value;}},_setValueAttr:function(_56b,_56c){this._handleOnChange(_56b,_56c);},_handleOnChange:function(_56d,_56e){this._set("value",_56d);this.inherited(arguments);},undo:function(){this._setValueAttr(this._lastValueReported,false);},reset:function(){this._hasBeenBlurred=false;this._setValueAttr(this._resetValue,true);}});});},"dijit/form/_FormWidgetMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/dom-style","dojo/_base/lang","dojo/mouse","dojo/on","dojo/sniff","dojo/window","../a11y"],function(_56f,_570,_571,_572,lang,_573,on,has,_574,a11y){return _570("dijit.form._FormWidgetMixin",null,{name:"",alt:"",value:"",type:"text","aria-label":"focusNode",tabIndex:"0",_setTabIndexAttr:"focusNode",disabled:false,intermediateChanges:false,scrollOnFocus:true,_setIdAttr:"focusNode",_setDisabledAttr:function(_575){this._set("disabled",_575);if(/^(button|input|select|textarea|optgroup|option|fieldset)$/i.test(this.focusNode.tagName)){_571.set(this.focusNode,"disabled",_575);if(has("trident")&&"readOnly" in this){_571.set(this.focusNode,"readonly",_575||this.readOnly);}}else{this.focusNode.setAttribute("aria-disabled",_575?"true":"false");}if(this.valueNode){_571.set(this.valueNode,"disabled",_575);}if(_575){this._set("hovering",false);this._set("active",false);var _576="tabIndex" in this.attributeMap?this.attributeMap.tabIndex:("_setTabIndexAttr" in this)?this._setTabIndexAttr:"focusNode";_56f.forEach(lang.isArray(_576)?_576:[_576],function(_577){var node=this[_577];if(has("webkit")||a11y.hasDefaultTabStop(node)){node.setAttribute("tabIndex","-1");}else{node.removeAttribute("tabIndex");}},this);}else{if(this.tabIndex!=""){this.set("tabIndex",this.tabIndex);}}},_onFocus:function(by){if(by=="mouse"&&this.isFocusable()){var _578=this.own(on(this.focusNode,"focus",function(){_579.remove();_578.remove();}))[0];var _57a=has("pointer-events")?"pointerup":has("MSPointer")?"MSPointerUp":has("touch-events")?"touchend, mouseup":"mouseup";var _579=this.own(on(this.ownerDocumentBody,_57a,lang.hitch(this,function(evt){_579.remove();_578.remove();if(this.focused){if(evt.type=="touchend"){this.defer("focus");}else{this.focus();}}})))[0];}if(this.scrollOnFocus){this.defer(function(){_574.scrollIntoView(this.domNode);});}this.inherited(arguments);},isFocusable:function(){return !this.disabled&&this.focusNode&&(_572.get(this.domNode,"display")!="none");},focus:function(){if(!this.disabled&&this.focusNode.focus){try{this.focusNode.focus();}catch(e){}}},compare:function(val1,val2){if(typeof val1=="number"&&typeof val2=="number"){return (isNaN(val1)&&isNaN(val2))?0:val1-val2;}else{if(val1>val2){return 1;}else{if(val1<val2){return -1;}else{return 0;}}}},onChange:function(){},_onChangeActive:false,_handleOnChange:function(_57b,_57c){if(this._lastValueReported==undefined&&(_57c===null||!this._onChangeActive)){this._resetValue=this._lastValueReported=_57b;}this._pendingOnChange=this._pendingOnChange||(typeof _57b!=typeof this._lastValueReported)||(this.compare(_57b,this._lastValueReported)!=0);if((this.intermediateChanges||_57c||_57c===undefined)&&this._pendingOnChange){this._lastValueReported=_57b;this._pendingOnChange=false;if(this._onChangeActive){if(this._onChangeHandle){this._onChangeHandle.remove();}this._onChangeHandle=this.defer(function(){this._onChangeHandle=null;this.onChange(_57b);});}}},create:function(){this.inherited(arguments);this._onChangeActive=true;},destroy:function(){if(this._onChangeHandle){this._onChangeHandle.remove();this.onChange(this._lastValueReported);}this.inherited(arguments);}});});},"dijit/a11yclick":function(){define(["dojo/keys","dojo/mouse","dojo/on","dojo/touch"],function(keys,_57d,on,_57e){function _57f(e){if((e.keyCode===keys.ENTER||e.keyCode===keys.SPACE)&&!/input|button|textarea/i.test(e.target.nodeName)){for(var node=e.target;node;node=node.parentNode){if(node.dojoClick){return true;}}}};var _580;on(document,"keydown",function(e){if(_57f(e)){_580=e.target;e.preventDefault();}else{_580=null;}});on(document,"keyup",function(e){if(_57f(e)&&e.target==_580){_580=null;on.emit(e.target,"click",{cancelable:true,bubbles:true,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,altKey:e.altKey,_origType:e.type});}});var _581=function(node,_582){node.dojoClick=true;return on(node,"click",_582);};_581.click=_581;_581.press=function(node,_583){var _584=on(node,_57e.press,function(evt){if(evt.type=="mousedown"&&!_57d.isLeft(evt)){return;}_583(evt);}),_585=on(node,"keydown",function(evt){if(evt.keyCode===keys.ENTER||evt.keyCode===keys.SPACE){_583(evt);}});return {remove:function(){_584.remove();_585.remove();}};};_581.release=function(node,_586){var _587=on(node,_57e.release,function(evt){if(evt.type=="mouseup"&&!_57d.isLeft(evt)){return;}_586(evt);}),_588=on(node,"keyup",function(evt){if(evt.keyCode===keys.ENTER||evt.keyCode===keys.SPACE){_586(evt);}});return {remove:function(){_587.remove();_588.remove();}};};_581.move=_57e.move;return _581;});},"dijit/Destroyable":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare"],function(_589,_58a,_58b){return _58b("dijit.Destroyable",null,{destroy:function(_58c){this._destroyed=true;},own:function(){var _58d=["destroyRecursive","destroy","remove"];_589.forEach(arguments,function(_58e){var _58f;var odh=_58a.before(this,"destroy",function(_590){_58e[_58f](_590);});var hdhs=[];function _591(){odh.remove();_589.forEach(hdhs,function(hdh){hdh.remove();});};if(_58e.then){_58f="cancel";_58e.then(_591,_591);}else{_589.forEach(_58d,function(_592){if(typeof _58e[_592]==="function"){if(!_58f){_58f=_592;}hdhs.push(_58a.after(_58e,_592,_591,true));}});}},this);return arguments;}});});},"dijit/layout/_ContentPaneResizeMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang","dojo/query","../registry","../Viewport","./utils"],function(_593,_594,_595,_596,_597,lang,_598,_599,_59a,_59b){return _594("dijit.layout._ContentPaneResizeMixin",null,{doLayout:true,isLayoutContainer:true,startup:function(){if(this._started){return;}var _59c=this.getParent();this._childOfLayoutWidget=_59c&&_59c.isLayoutContainer;this._needLayout=!this._childOfLayoutWidget;this.inherited(arguments);if(this._isShown()){this._onShow();}if(!this._childOfLayoutWidget){this.own(_59a.on("resize",lang.hitch(this,"resize")));}},_checkIfSingleChild:function(){if(!this.doLayout){return;}var _59d=[],_59e=false;_598("> *",this.containerNode).some(function(node){var _59f=_599.byNode(node);if(_59f&&_59f.resize){_59d.push(_59f);}else{if(!/script|link|style/i.test(node.nodeName)&&node.offsetHeight){_59e=true;}}});this._singleChild=_59d.length==1&&!_59e?_59d[0]:null;_595.toggle(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild);},resize:function(_5a0,_5a1){this._resizeCalled=true;this._scheduleLayout(_5a0,_5a1);},_scheduleLayout:function(_5a2,_5a3){if(this._isShown()){this._layout(_5a2,_5a3);}else{this._needLayout=true;this._changeSize=_5a2;this._resultSize=_5a3;}},_layout:function(_5a4,_5a5){delete this._needLayout;if(!this._wasShown&&this.open!==false){this._onShow();}if(_5a4){_596.setMarginBox(this.domNode,_5a4);}var cn=this.containerNode;if(cn===this.domNode){var mb=_5a5||{};lang.mixin(mb,_5a4||{});if(!("h" in mb)||!("w" in mb)){mb=lang.mixin(_596.getMarginBox(cn),mb);}this._contentBox=_59b.marginBox2contentBox(cn,mb);}else{this._contentBox=_596.getContentBox(cn);}this._layoutChildren();},_layoutChildren:function(){this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){var cb=this._contentBox||_596.getContentBox(this.containerNode);this._singleChild.resize({w:cb.w,h:cb.h});}else{var _5a6=this.getChildren(),_5a7,i=0;while(_5a7=_5a6[i++]){if(_5a7.resize){_5a7.resize();}}}},_isShown:function(){if(this._childOfLayoutWidget){if(this._resizeCalled&&"open" in this){return this.open;}return this._resizeCalled;}else{if("open" in this){return this.open;}else{var node=this.domNode,_5a8=this.domNode.parentNode;return (node.style.display!="none")&&(node.style.visibility!="hidden")&&!_595.contains(node,"dijitHidden")&&_5a8&&_5a8.style&&(_5a8.style.display!="none");}}},_onShow:function(){this._wasShown=true;if(this._needLayout){this._layout(this._changeSize,this._resultSize);}this.inherited(arguments);}});});},"dijit/WidgetSet":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","./registry"],function(_5a9,_5aa,_5ab,_5ac){var _5ad=_5aa("dijit.WidgetSet",null,{constructor:function(){this._hash={};this.length=0;},add:function(_5ae){if(this._hash[_5ae.id]){throw new Error("Tried to register widget with id=="+_5ae.id+" but that id is already registered");}this._hash[_5ae.id]=_5ae;this.length++;},remove:function(id){if(this._hash[id]){delete this._hash[id];this.length--;}},forEach:function(func,_5af){_5af=_5af||_5ab.global;var i=0,id;for(id in this._hash){func.call(_5af,this._hash[id],i++,this._hash);}return this;},filter:function(_5b0,_5b1){_5b1=_5b1||_5ab.global;var res=new _5ad(),i=0,id;for(id in this._hash){var w=this._hash[id];if(_5b0.call(_5b1,w,i++,this._hash)){res.add(w);}}return res;},byId:function(id){return this._hash[id];},byClass:function(cls){var res=new _5ad(),id,_5b2;for(id in this._hash){_5b2=this._hash[id];if(_5b2.declaredClass==cls){res.add(_5b2);}}return res;},toArray:function(){var ar=[];for(var id in this._hash){ar.push(this._hash[id]);}return ar;},map:function(func,_5b3){return _5a9.map(this.toArray(),func,_5b3);},every:function(func,_5b4){_5b4=_5b4||_5ab.global;var x=0,i;for(i in this._hash){if(!func.call(_5b4,this._hash[i],x++,this._hash)){return false;}}return true;},some:function(func,_5b5){_5b5=_5b5||_5ab.global;var x=0,i;for(i in this._hash){if(func.call(_5b5,this._hash[i],x++,this._hash)){return true;}}return false;}});_5a9.forEach(["forEach","filter","byClass","map","every","some"],function(func){_5ac[func]=_5ad.prototype[func];});return _5ad;});},"dojo/dnd/Moveable":function(){define(["../_base/array","../_base/declare","../_base/lang","../dom","../dom-class","../Evented","../has","../on","../topic","../touch","./common","./Mover","../_base/window"],function(_5b6,_5b7,lang,dom,_5b8,_5b9,has,on,_5ba,_5bb,dnd,_5bc,win){var _5bd;var _5be=function(){};function _5bf(){if("touchAction" in document.body.style){_5bd="touchAction";}else{if("msTouchAction" in document.body.style){_5bd="msTouchAction";}}_5be=function _5be(node,_5c0){node.style[_5bd]=_5c0;};_5be(arguments[0],arguments[1]);};if(has("touch-action")){_5be=_5bf;}var _5c1=_5b7("dojo.dnd.Moveable",[_5b9],{handle:"",delay:0,skip:false,constructor:function(node,_5c2){this.node=dom.byId(node);_5be(this.node,"none");if(!_5c2){_5c2={};}this.handle=_5c2.handle?dom.byId(_5c2.handle):null;if(!this.handle){this.handle=this.node;}this.delay=_5c2.delay>0?_5c2.delay:0;this.skip=_5c2.skip;this.mover=_5c2.mover?_5c2.mover:_5bc;this.events=[on(this.handle,_5bb.press,lang.hitch(this,"onMouseDown")),on(this.handle,"dragstart",lang.hitch(this,"onSelectStart")),on(this.handle,"selectstart",lang.hitch(this,"onSelectStart"))];},markupFactory:function(_5c3,node,Ctor){return new Ctor(node,_5c3);},destroy:function(){_5b6.forEach(this.events,function(_5c4){_5c4.remove();});_5be(this.node,"");this.events=this.node=this.handle=null;},onMouseDown:function(e){if(this.skip&&dnd.isFormElement(e)){return;}if(this.delay){this.events.push(on(this.handle,_5bb.move,lang.hitch(this,"onMouseMove")),on(this.handle.ownerDocument,_5bb.release,lang.hitch(this,"onMouseUp")));this._lastX=e.pageX;this._lastY=e.pageY;}else{this.onDragDetected(e);}e.stopPropagation();e.preventDefault();},onMouseMove:function(e){if(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.pageY-this._lastY)>this.delay){this.onMouseUp(e);this.onDragDetected(e);}e.stopPropagation();e.preventDefault();},onMouseUp:function(e){for(var i=0;i<2;++i){this.events.pop().remove();}e.stopPropagation();e.preventDefault();},onSelectStart:function(e){if(!this.skip||!dnd.isFormElement(e)){e.stopPropagation();e.preventDefault();}},onDragDetected:function(e){new this.mover(this.node,e,this);},onMoveStart:function(_5c5){_5ba.publish("/dnd/move/start",_5c5);_5b8.add(win.body(),"dojoMove");_5b8.add(this.node,"dojoMoveItem");},onMoveStop:function(_5c6){_5ba.publish("/dnd/move/stop",_5c6);_5b8.remove(win.body(),"dojoMove");_5b8.remove(this.node,"dojoMoveItem");},onFirstMove:function(){},onMove:function(_5c7,_5c8){this.onMoving(_5c7,_5c8);var s=_5c7.node.style;s.left=_5c8.l+"px";s.top=_5c8.t+"px";this.onMoved(_5c7,_5c8);},onMoving:function(){},onMoved:function(){}});return _5c1;});},"dijit/TooltipDialog":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","./focus","./layout/ContentPane","./_DialogMixin","./form/_FormMixin","./_TemplatedMixin","dojo/text!./templates/TooltipDialog.html","./main"],function(_5c9,_5ca,has,keys,lang,on,_5cb,_5cc,_5cd,_5ce,_5cf,_5d0,_5d1){var _5d2=_5c9("dijit.TooltipDialog",[_5cc,_5cf,_5ce,_5cd],{title:"",doLayout:false,autofocus:true,baseClass:"dijitTooltipDialog",_firstFocusItem:null,_lastFocusItem:null,templateString:_5d0,_setTitleAttr:"containerNode",postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKey")));},orient:function(node,_5d3,_5d4){var newC={"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft","BR-TL":"dijitTooltipBelow dijitTooltipABLeft","BL-TR":"dijitTooltipBelow dijitTooltipABRight","TL-BR":"dijitTooltipAbove dijitTooltipABRight","TR-BL":"dijitTooltipAbove dijitTooltipABLeft"}[_5d3+"-"+_5d4];_5ca.replace(this.domNode,newC,this._currentOrientClass||"");this._currentOrientClass=newC;},focus:function(){this._getFocusItems();_5cb.focus(this._firstFocusItem);},onOpen:function(pos){this.orient(this.domNode,pos.aroundCorner,pos.corner);var _5d5=pos.aroundNodePos;if(pos.corner.charAt(0)=="M"&&pos.aroundCorner.charAt(0)=="M"){this.connectorNode.style.top=_5d5.y+((_5d5.h-this.connectorNode.offsetHeight)>>1)-pos.y+"px";this.connectorNode.style.left="";}else{if(pos.corner.charAt(1)=="M"&&pos.aroundCorner.charAt(1)=="M"){this.connectorNode.style.left=_5d5.x+((_5d5.w-this.connectorNode.offsetWidth)>>1)-pos.x+"px";}}this._onShow();},onClose:function(){this.onHide();},_onKey:function(evt){if(evt.keyCode==keys.ESCAPE){this.defer("onCancel");evt.stopPropagation();evt.preventDefault();}else{if(evt.keyCode==keys.TAB){var node=evt.target;this._getFocusItems();if(this._firstFocusItem==this._lastFocusItem){evt.stopPropagation();evt.preventDefault();}else{if(node==this._firstFocusItem&&evt.shiftKey){_5cb.focus(this._lastFocusItem);evt.stopPropagation();evt.preventDefault();}else{if(node==this._lastFocusItem&&!evt.shiftKey){_5cb.focus(this._firstFocusItem);evt.stopPropagation();evt.preventDefault();}else{evt.stopPropagation();}}}}}}});if(has("dojo-bidi")){_5d2.extend({_setTitleAttr:function(_5d6){this.containerNode.title=(this.textDir&&this.enforceTextDirWithUcc)?this.enforceTextDirWithUcc(null,_5d6):_5d6;this._set("title",_5d6);},_setTextDirAttr:function(_5d7){if(!this._created||this.textDir!=_5d7){this._set("textDir",_5d7);if(this.textDir&&this.title){this.containerNode.title=this.enforceTextDirWithUcc(null,this.title);}}}});}return _5d2;});},"dojo/store/util/SimpleQueryEngine":function(){define(["../../_base/array"],function(_5d8){return function(_5d9,_5da){switch(typeof _5d9){default:throw new Error("Can not query with a "+typeof _5d9);case "object":case "undefined":var _5db=_5d9;_5d9=function(_5dc){for(var key in _5db){var _5dd=_5db[key];if(_5dd&&_5dd.test){if(!_5dd.test(_5dc[key],_5dc)){return false;}}else{if(_5dd!=_5dc[key]){return false;}}}return true;};break;case "string":if(!this[_5d9]){throw new Error("No filter function "+_5d9+" was found in store");}_5d9=this[_5d9];case "function":}function _5de(_5df){var _5e0=_5d8.filter(_5df,_5d9);var _5e1=_5da&&_5da.sort;if(_5e1){_5e0.sort(typeof _5e1=="function"?_5e1:function(a,b){for(var sort,i=0;sort=_5e1[i];i++){var _5e2=a[sort.attribute];var _5e3=b[sort.attribute];_5e2=_5e2!=null?_5e2.valueOf():_5e2;_5e3=_5e3!=null?_5e3.valueOf():_5e3;if(_5e2!=_5e3){return !!sort.descending==(_5e2==null||_5e2>_5e3)?-1:1;}}return 0;});}if(_5da&&(_5da.start||_5da.count)){var _5e4=_5e0.length;_5e0=_5e0.slice(_5da.start||0,(_5da.start||0)+(_5da.count||Infinity));_5e0.total=_5e4;}return _5e0;};_5de.matches=_5d9;return _5de;};});},"dijit/typematic":function(){define(["dojo/_base/array","dojo/_base/connect","dojo/_base/lang","dojo/on","dojo/sniff","./main"],function(_5e5,_5e6,lang,on,has,_5e7){var _5e8=(_5e7.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=Math.max(this._currentTimeout<0?this._initialDelay:(this._subsequentDelay>1?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay)),this._minDelay);this._timer=setTimeout(lang.hitch(this,"_fireEventAndReload"),this._currentTimeout);},trigger:function(evt,_5e9,node,_5ea,obj,_5eb,_5ec,_5ed){if(obj!=this._obj){this.stop();this._initialDelay=_5ec||500;this._subsequentDelay=_5eb||0.9;this._minDelay=_5ed||10;this._obj=obj;this._node=node;this._currentTimeout=-1;this._count=-1;this._callback=lang.hitch(_5e9,_5ea);this._evt={faux:true};for(var attr in evt){if(attr!="layerX"&&attr!="layerY"){var v=evt[attr];if(typeof v!="function"&&typeof v!="undefined"){this._evt[attr]=v;}}}this._fireEventAndReload();}},stop:function(){if(this._timer){clearTimeout(this._timer);this._timer=null;}if(this._obj){this._callback(-1,this._node,this._evt);this._obj=null;}},addKeyListener:function(node,_5ee,_5ef,_5f0,_5f1,_5f2,_5f3){var type="keyCode" in _5ee?"keydown":"charCode" in _5ee?"keypress":_5e6._keypress,attr="keyCode" in _5ee?"keyCode":"charCode" in _5ee?"charCode":"charOrCode";var _5f4=[on(node,type,lang.hitch(this,function(evt){if(evt[attr]==_5ee[attr]&&(_5ee.ctrlKey===undefined||_5ee.ctrlKey==evt.ctrlKey)&&(_5ee.altKey===undefined||_5ee.altKey==evt.altKey)&&(_5ee.metaKey===undefined||_5ee.metaKey==(evt.metaKey||false))&&(_5ee.shiftKey===undefined||_5ee.shiftKey==evt.shiftKey)){evt.stopPropagation();evt.preventDefault();_5e8.trigger(evt,_5ef,node,_5f0,_5ee,_5f1,_5f2,_5f3);}else{if(_5e8._obj==_5ee){_5e8.stop();}}})),on(node,"keyup",lang.hitch(this,function(){if(_5e8._obj==_5ee){_5e8.stop();}}))];return {remove:function(){_5e5.forEach(_5f4,function(h){h.remove();});}};},addMouseListener:function(node,_5f5,_5f6,_5f7,_5f8,_5f9){var _5fa=[on(node,"mousedown",lang.hitch(this,function(evt){evt.preventDefault();_5e8.trigger(evt,_5f5,node,_5f6,node,_5f7,_5f8,_5f9);})),on(node,"mouseup",lang.hitch(this,function(evt){if(this._obj){evt.preventDefault();}_5e8.stop();})),on(node,"mouseout",lang.hitch(this,function(evt){if(this._obj){evt.preventDefault();}_5e8.stop();})),on(node,"dblclick",lang.hitch(this,function(evt){evt.preventDefault();if(has("ie")<9){_5e8.trigger(evt,_5f5,node,_5f6,node,_5f7,_5f8,_5f9);setTimeout(lang.hitch(this,_5e8.stop),50);}}))];return {remove:function(){_5e5.forEach(_5fa,function(h){h.remove();});}};},addListener:function(_5fb,_5fc,_5fd,_5fe,_5ff,_600,_601,_602){var _603=[this.addKeyListener(_5fc,_5fd,_5fe,_5ff,_600,_601,_602),this.addMouseListener(_5fb,_5fe,_5ff,_600,_601,_602)];return {remove:function(){_5e5.forEach(_603,function(h){h.remove();});}};}});return _5e8;});},"dijit/MenuItem":function(){define(["dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/_base/kernel","dojo/sniff","dojo/_base/lang","./_Widget","./_TemplatedMixin","./_Contained","./_CssStateMixin","dojo/text!./templates/MenuItem.html"],function(_604,dom,_605,_606,_607,has,lang,_608,_609,_60a,_60b,_60c){var _60d=_604("dijit.MenuItem"+(has("dojo-bidi")?"_NoBidi":""),[_608,_609,_60a,_60b],{templateString:_60c,baseClass:"dijitMenuItem",label:"",_setLabelAttr:function(val){this._set("label",val);var _60e="";var text;var ndx=val.search(/{\S}/);if(ndx>=0){_60e=val.charAt(ndx+1);var _60f=val.substr(0,ndx);var _610=val.substr(ndx+3);text=_60f+_60e+_610;val=_60f+"<span class=\"dijitMenuItemShortcutKey\">"+_60e+"</span>"+_610;}else{text=val;}this.domNode.setAttribute("aria-label",text+" "+this.accelKey);this.containerNode.innerHTML=val;this._set("shortcutKey",_60e);},iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},accelKey:"",disabled:false,_fillContent:function(_611){if(_611&&!("label" in this.params)){this._set("label",_611.innerHTML);}},buildRendering:function(){this.inherited(arguments);var _612=this.id+"_text";_605.set(this.containerNode,"id",_612);if(this.accelKeyNode){_605.set(this.accelKeyNode,"id",this.id+"_accel");}dom.setSelectable(this.domNode,false);},onClick:function(){},focus:function(){try{if(has("ie")==8){this.containerNode.focus();}this.focusNode.focus();}catch(e){}},_setSelected:function(_613){_606.toggle(this.domNode,"dijitMenuItemSelected",_613);},setLabel:function(_614){_607.deprecated("dijit.MenuItem.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",_614);},setDisabled:function(_615){_607.deprecated("dijit.Menu.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",_615);},_setDisabledAttr:function(_616){this.focusNode.setAttribute("aria-disabled",_616?"true":"false");this._set("disabled",_616);},_setAccelKeyAttr:function(_617){if(this.accelKeyNode){this.accelKeyNode.style.display=_617?"":"none";this.accelKeyNode.innerHTML=_617;_605.set(this.containerNode,"colSpan",_617?"1":"2");}this._set("accelKey",_617);}});if(has("dojo-bidi")){_60d=_604("dijit.MenuItem",_60d,{_setLabelAttr:function(val){this.inherited(arguments);if(this.textDir==="auto"){this.applyTextDir(this.textDirNode);}}});}return _60d;});},"dijit/layout/TabController":function(){define(["dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/has","dojo/i18n","dojo/_base/lang","./StackController","../registry","../Menu","../MenuItem","dojo/text!./templates/_TabButton.html","dojo/i18n!../nls/common"],function(_618,dom,_619,_61a,has,i18n,lang,_61b,_61c,Menu,_61d,_61e){var _61f=_618("dijit.layout._TabButton"+(has("dojo-bidi")?"_NoBidi":""),_61b.StackButton,{baseClass:"dijitTab",cssStateNodes:{closeNode:"dijitTabCloseButton"},templateString:_61e,_setNameAttr:"focusNode",scrollOnFocus:false,buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.containerNode,false);},startup:function(){this.inherited(arguments);var n=this.domNode;this.defer(function(){n.className=n.className;},1);},_setCloseButtonAttr:function(disp){this._set("closeButton",disp);_61a.toggle(this.domNode,"dijitClosable",disp);this.closeNode.style.display=disp?"":"none";if(disp){var _620=i18n.getLocalization("dijit","common");if(this.closeNode){_619.set(this.closeNode,"title",_620.itemClose);}}},_setDisabledAttr:function(_621){this.inherited(arguments);if(this.closeNode){if(_621){_619.remove(this.closeNode,"title");}else{var _622=i18n.getLocalization("dijit","common");_619.set(this.closeNode,"title",_622.itemClose);}}},_setLabelAttr:function(_623){this.inherited(arguments);if(!this.showLabel&&!this.params.title){this.iconNode.alt=lang.trim(this.containerNode.innerText||this.containerNode.textContent||"");}}});if(has("dojo-bidi")){_61f=_618("dijit.layout._TabButton",_61f,{_setLabelAttr:function(_624){this.inherited(arguments);this.applyTextDir(this.iconNode,this.iconNode.alt);}});}var _625=_618("dijit.layout.TabController",_61b,{baseClass:"dijitTabController",templateString:"<div role='tablist' data-dojo-attach-event='onkeydown:onkeydown'></div>",tabPosition:"top",buttonWidget:_61f,buttonWidgetCloseClass:"dijitTabCloseButton",postCreate:function(){this.inherited(arguments);var _626=new Menu({id:this.id+"_Menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,targetNodeIds:[this.domNode],selector:function(node){return _61a.contains(node,"dijitClosable")&&!_61a.contains(node,"dijitTabDisabled");}});this.own(_626);var _627=i18n.getLocalization("dijit","common"),_628=this;_626.addChild(new _61d({label:_627.itemClose,ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,onClick:function(evt){var _629=_61c.byNode(this.getParent().currentTarget);_628.onCloseButtonClick(_629.page);}}));}});_625.TabButton=_61f;return _625;});},"dijit/ToolbarSeparator":function(){define(["dojo/_base/declare","dojo/dom","./_Widget","./_TemplatedMixin"],function(_62a,dom,_62b,_62c){return _62a("dijit.ToolbarSeparator",[_62b,_62c],{templateString:"<div class=\"dijitToolbarSeparator dijitInline\" role=\"presentation\"></div>",buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});});},"dijit/layout/_LayoutWidget":function(){define(["dojo/_base/lang","../_Widget","../_Container","../_Contained","../Viewport","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style"],function(lang,_62d,_62e,_62f,_630,_631,_632,_633,_634){return _631("dijit.layout._LayoutWidget",[_62d,_62e,_62f],{baseClass:"dijitLayoutContainer",isLayoutContainer:true,_setTitleAttr:null,buildRendering:function(){this.inherited(arguments);_632.add(this.domNode,"dijitContainer");},startup:function(){if(this._started){return;}this.inherited(arguments);var _635=this.getParent&&this.getParent();if(!(_635&&_635.isLayoutContainer)){this.resize();this.own(_630.on("resize",lang.hitch(this,"resize")));}},resize:function(_636,_637){var node=this.domNode;if(_636){_633.setMarginBox(node,_636);}var mb=_637||{};lang.mixin(mb,_636||{});if(!("h" in mb)||!("w" in mb)){mb=lang.mixin(_633.getMarginBox(node),mb);}var cs=_634.getComputedStyle(node);var me=_633.getMarginExtents(node,cs);var be=_633.getBorderExtents(node,cs);var bb=(this._borderBox={w:mb.w-(me.w+be.w),h:mb.h-(me.h+be.h)});var pe=_633.getPadExtents(node,cs);this._contentBox={l:_634.toPixelValue(node,cs.paddingLeft),t:_634.toPixelValue(node,cs.paddingTop),w:bb.w-pe.w,h:bb.h-pe.h};this.layout();},layout:function(){},_setupChild:function(_638){var cls=this.baseClass+"-child "+(_638.baseClass?this.baseClass+"-"+_638.baseClass:"");_632.add(_638.domNode,cls);},addChild:function(_639,_63a){this.inherited(arguments);if(this._started){this._setupChild(_639);}},removeChild:function(_63b){var cls=this.baseClass+"-child"+(_63b.baseClass?" "+this.baseClass+"-"+_63b.baseClass:"");_632.remove(_63b.domNode,cls);this.inherited(arguments);}});});},"dojo/selector/lite":function(){define(["../has","../_base/kernel"],function(has,dojo){"use strict";var _63c=document.createElement("div");var _63d=_63c.matches||_63c.webkitMatchesSelector||_63c.mozMatchesSelector||_63c.msMatchesSelector||_63c.oMatchesSelector;var _63e=_63c.querySelectorAll;var _63f=/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g;has.add("dom-matches-selector",!!_63d);has.add("dom-qsa",!!_63e);var _640=function(_641,root){if(_642&&_641.indexOf(",")>-1){return _642(_641,root);}var doc=root?root.ownerDocument||root:dojo.doc||document,_643=(_63e?/^([\w]*)#([\w\-]+$)|^(\.)([\w\-\*]+$)|^(\w+$)/:/^([\w]*)#([\w\-]+)(?:\s+(.*))?$|(?:^|(>|.+\s+))([\w\-\*]+)(\S*$)/).exec(_641);root=root||doc;if(_643){var _644=has("ie")===8&&has("quirks")?root.nodeType===doc.nodeType:root.parentNode!==null&&root.nodeType!==9&&root.parentNode===doc;if(_643[2]&&_644){var _645=dojo.byId?dojo.byId(_643[2],doc):doc.getElementById(_643[2]);if(!_645||(_643[1]&&_643[1]!=_645.tagName.toLowerCase())){return [];}if(root!=doc){var _646=_645;while(_646!=root){_646=_646.parentNode;if(!_646){return [];}}}return _643[3]?_640(_643[3],_645):[_645];}if(_643[3]&&root.getElementsByClassName){return root.getElementsByClassName(_643[4]);}var _645;if(_643[5]){_645=root.getElementsByTagName(_643[5]);if(_643[4]||_643[6]){_641=(_643[4]||"")+_643[6];}else{return _645;}}}if(_63e){if(root.nodeType===1&&root.nodeName.toLowerCase()!=="object"){return _647(root,_641,root.querySelectorAll);}else{return root.querySelectorAll(_641);}}else{if(!_645){_645=root.getElementsByTagName("*");}}var _648=[];for(var i=0,l=_645.length;i<l;i++){var node=_645[i];if(node.nodeType==1&&_649(node,_641,root)){_648.push(node);}}return _648;};var _647=function(_64a,_64b,_64c){var _64d=_64a,old=_64a.getAttribute("id"),nid=old||"__dojo__",_64e=_64a.parentNode,_64f=/^\s*[+~]/.test(_64b);if(_64f&&!_64e){return [];}if(!old){_64a.setAttribute("id",nid);}else{nid=nid.replace(/'/g,"\\$&");}if(_64f&&_64e){_64a=_64a.parentNode;}var _650=_64b.match(_63f);for(var i=0;i<_650.length;i++){_650[i]="[id='"+nid+"'] "+_650[i];}_64b=_650.join(",");try{return _64c.call(_64a,_64b);}finally{if(!old){_64d.removeAttribute("id");}}};if(!has("dom-matches-selector")){var _649=(function(){var _651=_63c.tagName=="div"?"toLowerCase":"toUpperCase";var _652={"":function(_653){_653=_653[_651]();return function(node){return node.tagName==_653;};},".":function(_654){var _655=" "+_654+" ";return function(node){return node.className.indexOf(_654)>-1&&(" "+node.className+" ").indexOf(_655)>-1;};},"#":function(id){return function(node){return node.id==id;};}};var _656={"^=":function(_657,_658){return _657.indexOf(_658)==0;},"*=":function(_659,_65a){return _659.indexOf(_65a)>-1;},"$=":function(_65b,_65c){return _65b.substring(_65b.length-_65c.length,_65b.length)==_65c;},"~=":function(_65d,_65e){return (" "+_65d+" ").indexOf(" "+_65e+" ")>-1;},"|=":function(_65f,_660){return (_65f+"-").indexOf(_660+"-")==0;},"=":function(_661,_662){return _661==_662;},"":function(_663,_664){return true;}};function attr(name,_665,type){var _666=_665.charAt(0);if(_666=="\""||_666=="'"){_665=_665.slice(1,-1);}_665=_665.replace(/\\/g,"");var _667=_656[type||""];return function(node){var _668=node.getAttribute(name);return _668&&_667(_668,_665);};};function _669(_66a){return function(node,root){while((node=node.parentNode)!=root){if(_66a(node,root)){return true;}}};};function _66b(_66c){return function(node,root){node=node.parentNode;return _66c?node!=root&&_66c(node,root):node==root;};};var _66d={};function and(_66e,next){return _66e?function(node,root){return next(node)&&_66e(node,root);}:next;};return function(node,_66f,root){var _670=_66d[_66f];if(!_670){if(_66f.replace(/(?:\s*([> ])\s*)|(#|\.)?((?:\\.|[\w-])+)|\[\s*([\w-]+)\s*(.?=)?\s*("(?:\\.|[^"])+"|'(?:\\.|[^'])+'|(?:\\.|[^\]])*)\s*\]/g,function(t,_671,type,_672,_673,_674,_675){if(_672){_670=and(_670,_652[type||""](_672.replace(/\\/g,"")));}else{if(_671){_670=(_671==" "?_669:_66b)(_670);}else{if(_673){_670=and(_670,attr(_673,_675,_674));}}}return "";})){throw new Error("Syntax error in query");}if(!_670){return true;}_66d[_66f]=_670;}return _670(node,root);};})();}if(!has("dom-qsa")){var _642=function(_676,root){var _677=_676.match(_63f);var _678=[];for(var i=0;i<_677.length;i++){_676=new String(_677[i].replace(/\s*$/,""));_676.indexOf=escape;var _679=_640(_676,root);for(var j=0,l=_679.length;j<l;j++){var node=_679[j];_678[node.sourceIndex]=node;}}var _67a=[];for(i in _678){_67a.push(_678[i]);}return _67a;};}_640.match=_63d?function(node,_67b,root){if(root&&root.nodeType!=9){return _647(root,_67b,function(_67c){return _63d.call(node,_67c);});}return _63d.call(node,_67b);}:_649;return _640;});},"dijit/popup":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","./place","./BackgroundIframe","./Viewport","./main","dojo/touch"],function(_67d,_67e,_67f,dom,_680,_681,_682,_683,has,keys,lang,on,_684,_685,_686,_687){function _688(){if(this._popupWrapper){_681.destroy(this._popupWrapper);delete this._popupWrapper;}};var _689=_67f(null,{_stack:[],_beginZIndex:1000,_idGen:1,_repositionAll:function(){if(this._firstAroundNode){var _68a=this._firstAroundPosition,_68b=_682.position(this._firstAroundNode,true),dx=_68b.x-_68a.x,dy=_68b.y-_68a.y;if(dx||dy){this._firstAroundPosition=_68b;for(var i=0;i<this._stack.length;i++){var _68c=this._stack[i].wrapper.style;_68c.top=(parseFloat(_68c.top)+dy)+"px";if(_68c.right=="auto"){_68c.left=(parseFloat(_68c.left)+dx)+"px";}else{_68c.right=(parseFloat(_68c.right)-dx)+"px";}}}this._aroundMoveListener=setTimeout(lang.hitch(this,"_repositionAll"),dx||dy?10:50);}},_createWrapper:function(_68d){var _68e=_68d._popupWrapper,node=_68d.domNode;if(!_68e){_68e=_681.create("div",{"class":"dijitPopup",style:{display:"none"},role:"region","aria-label":_68d["aria-label"]||_68d.label||_68d.name||_68d.id},_68d.ownerDocumentBody);_68e.appendChild(node);var s=node.style;s.display="";s.visibility="";s.position="";s.top="0px";_68d._popupWrapper=_68e;_67e.after(_68d,"destroy",_688,true);if("ontouchend" in document){on(_68e,"touchend",function(evt){if(!/^(input|button|textarea)$/i.test(evt.target.tagName)){evt.preventDefault();}});}_68e.dojoClick=true;}return _68e;},moveOffScreen:function(_68f){var _690=this._createWrapper(_68f);var ltr=_682.isBodyLtr(_68f.ownerDocument),_691={visibility:"hidden",top:"-9999px",display:""};_691[ltr?"left":"right"]="-9999px";_691[ltr?"right":"left"]="auto";_683.set(_690,_691);return _690;},hide:function(_692){var _693=this._createWrapper(_692);_683.set(_693,{display:"none",height:"auto",overflowY:"visible",border:""});var node=_692.domNode;if("_originalStyle" in node){node.style.cssText=node._originalStyle;}},getTopPopup:function(){var _694=this._stack;for(var pi=_694.length-1;pi>0&&_694[pi].parent===_694[pi-1].widget;pi--){}return _694[pi];},open:function(args){var _695=this._stack,_696=args.popup,node=_696.domNode,_697=args.orient||["below","below-alt","above","above-alt"],ltr=args.parent?args.parent.isLeftToRight():_682.isBodyLtr(_696.ownerDocument),_698=args.around,id=(args.around&&args.around.id)?(args.around.id+"_dropdown"):("popup_"+this._idGen++);while(_695.length&&(!args.parent||!dom.isDescendant(args.parent.domNode,_695[_695.length-1].widget.domNode))){this.close(_695[_695.length-1].widget);}var _699=this.moveOffScreen(_696);if(_696.startup&&!_696._started){_696.startup();}var _69a,_69b=_682.position(node);if("maxHeight" in args&&args.maxHeight!=-1){_69a=args.maxHeight||Infinity;}else{var _69c=_686.getEffectiveBox(this.ownerDocument),_69d=_698?_682.position(_698,false):{y:args.y-(args.padding||0),h:(args.padding||0)*2};_69a=Math.floor(Math.max(_69d.y,_69c.h-(_69d.y+_69d.h)));}if(_69b.h>_69a){var cs=_683.getComputedStyle(node),_69e=cs.borderLeftWidth+" "+cs.borderLeftStyle+" "+cs.borderLeftColor;_683.set(_699,{overflowY:"scroll",height:_69a+"px",border:_69e});node._originalStyle=node.style.cssText;node.style.border="none";}_680.set(_699,{id:id,style:{zIndex:this._beginZIndex+_695.length},"class":"dijitPopup "+(_696.baseClass||_696["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:args.parent?args.parent.id:""});if(_695.length==0&&_698){this._firstAroundNode=_698;this._firstAroundPosition=_682.position(_698,true);this._aroundMoveListener=setTimeout(lang.hitch(this,"_repositionAll"),50);}if(has("config-bgIframe")&&!_696.bgIframe){_696.bgIframe=new _685(_699);}var _69f=_696.orient?lang.hitch(_696,"orient"):null,best=_698?_684.around(_699,_698,_697,ltr,_69f):_684.at(_699,args,_697=="R"?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],args.padding,_69f);_699.style.visibility="visible";node.style.visibility="visible";var _6a0=[];_6a0.push(on(_699,"keydown",lang.hitch(this,function(evt){if(evt.keyCode==keys.ESCAPE&&args.onCancel){evt.stopPropagation();evt.preventDefault();args.onCancel();}else{if(evt.keyCode==keys.TAB){evt.stopPropagation();evt.preventDefault();var _6a1=this.getTopPopup();if(_6a1&&_6a1.onCancel){_6a1.onCancel();}}}})));if(_696.onCancel&&args.onCancel){_6a0.push(_696.on("cancel",args.onCancel));}_6a0.push(_696.on(_696.onExecute?"execute":"change",lang.hitch(this,function(){var _6a2=this.getTopPopup();if(_6a2&&_6a2.onExecute){_6a2.onExecute();}})));_695.push({widget:_696,wrapper:_699,parent:args.parent,onExecute:args.onExecute,onCancel:args.onCancel,onClose:args.onClose,handlers:_6a0});if(_696.onOpen){_696.onOpen(best);}return best;},close:function(_6a3){var _6a4=this._stack;while((_6a3&&_67d.some(_6a4,function(elem){return elem.widget==_6a3;}))||(!_6a3&&_6a4.length)){var top=_6a4.pop(),_6a5=top.widget,_6a6=top.onClose;if(_6a5.bgIframe){_6a5.bgIframe.destroy();delete _6a5.bgIframe;}if(_6a5.onClose){_6a5.onClose();}var h;while(h=top.handlers.pop()){h.remove();}if(_6a5&&_6a5.domNode){this.hide(_6a5);}if(_6a6){_6a6();}}if(_6a4.length==0&&this._aroundMoveListener){clearTimeout(this._aroundMoveListener);this._firstAroundNode=this._firstAroundPosition=this._aroundMoveListener=null;}}});return (_687.popup=new _689());});},"dijit/_base/manager":function(){define(["dojo/_base/array","dojo/_base/config","dojo/_base/lang","../registry","../main"],function(_6a7,_6a8,lang,_6a9,_6aa){var _6ab={};_6a7.forEach(["byId","getUniqueId","findWidgets","_destroyAll","byNode","getEnclosingWidget"],function(name){_6ab[name]=_6a9[name];});lang.mixin(_6ab,{defaultDuration:_6a8["defaultDuration"]||200});lang.mixin(_6aa,_6ab);return _6aa;});},"dijit/layout/StackController":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/keys","dojo/_base/lang","dojo/on","dojo/topic","../focus","../registry","../_Widget","../_TemplatedMixin","../_Container","../form/ToggleButton","dojo/touch"],function(_6ac,_6ad,_6ae,_6af,keys,lang,on,_6b0,_6b1,_6b2,_6b3,_6b4,_6b5,_6b6){var _6b7=_6ad("dijit.layout._StackButton",_6b6,{tabIndex:"-1",closeButton:false,_aria_attr:"aria-selected",buildRendering:function(evt){this.inherited(arguments);(this.focusNode||this.domNode).setAttribute("role","tab");}});var _6b8=_6ad("dijit.layout.StackController",[_6b3,_6b4,_6b5],{baseClass:"dijitStackController",templateString:"<span role='tablist' data-dojo-attach-event='onkeydown'></span>",containerId:"",buttonWidget:_6b7,buttonWidgetCloseClass:"dijitStackCloseButton",pane2button:function(id){return _6b2.byId(this.id+"_"+id);},postCreate:function(){this.inherited(arguments);this.own(_6b0.subscribe(this.containerId+"-startup",lang.hitch(this,"onStartup")),_6b0.subscribe(this.containerId+"-addChild",lang.hitch(this,"onAddChild")),_6b0.subscribe(this.containerId+"-removeChild",lang.hitch(this,"onRemoveChild")),_6b0.subscribe(this.containerId+"-selectChild",lang.hitch(this,"onSelectChild")),_6b0.subscribe(this.containerId+"-containerKeyDown",lang.hitch(this,"onContainerKeyDown")));this.containerNode.dojoClick=true;this.own(on(this.containerNode,"click",lang.hitch(this,function(evt){var _6b9=_6b2.getEnclosingWidget(evt.target);if(_6b9!=this.containerNode&&!_6b9.disabled&&_6b9.page){for(var _6ba=evt.target;_6ba!==this.containerNode;_6ba=_6ba.parentNode){if(_6ae.contains(_6ba,this.buttonWidgetCloseClass)){this.onCloseButtonClick(_6b9.page);break;}else{if(_6ba==_6b9.domNode){this.onButtonClick(_6b9.page);break;}}}}})));},onStartup:function(info){this.textDir=info.textDir;_6ac.forEach(info.children,this.onAddChild,this);if(info.selected){this.onSelectChild(info.selected);}var _6bb=_6b2.byId(this.containerId).containerNode,_6bc=lang.hitch(this,"pane2button"),_6bd={"title":"label","showtitle":"showLabel","iconclass":"iconClass","closable":"closeButton","tooltip":"title","disabled":"disabled","textdir":"textdir"},_6be=function(attr,_6bf){return on(_6bb,"attrmodified-"+attr,function(evt){var _6c0=_6bc(evt.detail&&evt.detail.widget&&evt.detail.widget.id);if(_6c0){_6c0.set(_6bf,evt.detail.newValue);}});};for(var attr in _6bd){this.own(_6be(attr,_6bd[attr]));}},destroy:function(_6c1){this.destroyDescendants(_6c1);this.inherited(arguments);},onAddChild:function(page,_6c2){var Cls=lang.isString(this.buttonWidget)?lang.getObject(this.buttonWidget):this.buttonWidget;var _6c3=new Cls({id:this.id+"_"+page.id,name:this.id+"_"+page.id,label:page.title,disabled:page.disabled,ownerDocument:this.ownerDocument,dir:page.dir,lang:page.lang,textDir:page.textDir||this.textDir,showLabel:page.showTitle,iconClass:page.iconClass,closeButton:page.closable,title:page.tooltip,page:page});this.addChild(_6c3,_6c2);page.controlButton=_6c3;if(!this._currentChild){this.onSelectChild(page);}var _6c4=page._wrapper.getAttribute("aria-labelledby")?page._wrapper.getAttribute("aria-labelledby")+" "+_6c3.id:_6c3.id;page._wrapper.removeAttribute("aria-label");page._wrapper.setAttribute("aria-labelledby",_6c4);},onRemoveChild:function(page){if(this._currentChild===page){this._currentChild=null;}var _6c5=this.pane2button(page.id);if(_6c5){this.removeChild(_6c5);_6c5.destroy();}delete page.controlButton;},onSelectChild:function(page){if(!page){return;}if(this._currentChild){var _6c6=this.pane2button(this._currentChild.id);_6c6.set("checked",false);_6c6.focusNode.setAttribute("tabIndex","-1");}var _6c7=this.pane2button(page.id);_6c7.set("checked",true);this._currentChild=page;_6c7.focusNode.setAttribute("tabIndex","0");var _6c8=_6b2.byId(this.containerId);},onButtonClick:function(page){var _6c9=this.pane2button(page.id);_6b1.focus(_6c9.focusNode);if(this._currentChild&&this._currentChild.id===page.id){_6c9.set("checked",true);}var _6ca=_6b2.byId(this.containerId);_6ca.selectChild(page);},onCloseButtonClick:function(page){var _6cb=_6b2.byId(this.containerId);_6cb.closeChild(page);if(this._currentChild){var b=this.pane2button(this._currentChild.id);if(b){_6b1.focus(b.focusNode||b.domNode);}}},adjacent:function(_6cc){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition))){_6cc=!_6cc;}var _6cd=this.getChildren();var idx=_6ac.indexOf(_6cd,this.pane2button(this._currentChild.id)),_6ce=_6cd[idx];var _6cf;do{idx=(idx+(_6cc?1:_6cd.length-1))%_6cd.length;_6cf=_6cd[idx];}while(_6cf.disabled&&_6cf!=_6ce);return _6cf;},onkeydown:function(e,_6d0){if(this.disabled||e.altKey){return;}var _6d1=null;if(e.ctrlKey||!e._djpage){switch(e.keyCode){case keys.LEFT_ARROW:case keys.UP_ARROW:if(!e._djpage){_6d1=false;}break;case keys.PAGE_UP:if(e.ctrlKey){_6d1=false;}break;case keys.RIGHT_ARROW:case keys.DOWN_ARROW:if(!e._djpage){_6d1=true;}break;case keys.PAGE_DOWN:if(e.ctrlKey){_6d1=true;}break;case keys.HOME:var _6d2=this.getChildren();for(var idx=0;idx<_6d2.length;idx++){var _6d3=_6d2[idx];if(!_6d3.disabled){this.onButtonClick(_6d3.page);break;}}e.stopPropagation();e.preventDefault();break;case keys.END:var _6d2=this.getChildren();for(var idx=_6d2.length-1;idx>=0;idx--){var _6d3=_6d2[idx];if(!_6d3.disabled){this.onButtonClick(_6d3.page);break;}}e.stopPropagation();e.preventDefault();break;case keys.DELETE:case "W".charCodeAt(0):if(this._currentChild.closable&&(e.keyCode==keys.DELETE||e.ctrlKey)){this.onCloseButtonClick(this._currentChild);e.stopPropagation();e.preventDefault();}break;case keys.TAB:if(e.ctrlKey){this.onButtonClick(this.adjacent(!e.shiftKey).page);e.stopPropagation();e.preventDefault();}break;}if(_6d1!==null){this.onButtonClick(this.adjacent(_6d1).page);e.stopPropagation();e.preventDefault();}}},onContainerKeyDown:function(info){info.e._djpage=info.page;this.onkeydown(info.e);}});_6b8.StackButton=_6b7;return _6b8;});},"dojo/dnd/Mover":function(){define(["../_base/array","../_base/declare","../_base/lang","../sniff","../_base/window","../dom","../dom-geometry","../dom-style","../Evented","../on","../touch","./common","./autoscroll"],function(_6d4,_6d5,lang,has,win,dom,_6d6,_6d7,_6d8,on,_6d9,dnd,_6da){return _6d5("dojo.dnd.Mover",[_6d8],{constructor:function(node,e,host){this.node=dom.byId(node);this.marginBox={l:e.pageX,t:e.pageY};this.mouseButton=e.button;var h=(this.host=host),d=node.ownerDocument;function _6db(e){e.preventDefault();e.stopPropagation();};this.events=[on(d,_6d9.move,lang.hitch(this,"onFirstMove")),on(d,_6d9.move,lang.hitch(this,"onMouseMove")),on(d,_6d9.release,lang.hitch(this,"onMouseUp")),on(d,"dragstart",_6db),on(d.body,"selectstart",_6db)];_6da.autoScrollStart(d);if(h&&h.onMoveStart){h.onMoveStart(this);}},onMouseMove:function(e){_6da.autoScroll(e);var m=this.marginBox;this.host.onMove(this,{l:m.l+e.pageX,t:m.t+e.pageY},e);e.preventDefault();e.stopPropagation();},onMouseUp:function(e){if(has("webkit")&&has("mac")&&this.mouseButton==2?e.button==0:this.mouseButton==e.button){this.destroy();}e.preventDefault();e.stopPropagation();},onFirstMove:function(e){var s=this.node.style,l,t,h=this.host;switch(s.position){case "relative":case "absolute":l=Math.round(parseFloat(s.left))||0;t=Math.round(parseFloat(s.top))||0;break;default:s.position="absolute";var m=_6d6.getMarginBox(this.node);var b=win.doc.body;var bs=_6d7.getComputedStyle(b);var bm=_6d6.getMarginBox(b,bs);var bc=_6d6.getContentBox(b,bs);l=m.l-(bc.l-bm.l);t=m.t-(bc.t-bm.t);break;}this.marginBox.l=l-this.marginBox.l;this.marginBox.t=t-this.marginBox.t;if(h&&h.onFirstMove){h.onFirstMove(this,e);}this.events.shift().remove();},destroy:function(){_6d4.forEach(this.events,function(_6dc){_6dc.remove();});var h=this.host;if(h&&h.onMoveStop){h.onMoveStop(this);}this.events=this.node=this.host=null;}});});},"dojo/request/default":function(){define(["exports","require","../has"],function(_6dd,_6de,has){var _6df=has("config-requestProvider"),_6e0;if(1||has("host-webworker")){_6e0="./xhr";}else{if(0){_6e0="./node";}}if(!_6df){_6df=_6e0;}_6dd.getPlatformDefaultId=function(){return _6e0;};_6dd.load=function(id,_6e1,_6e2,_6e3){_6de([id=="platform"?_6e0:_6df],function(_6e4){_6e2(_6e4);});};});},"dijit/layout/TabContainer":function(){define(["dojo/_base/lang","dojo/_base/declare","./_TabContainerBase","./TabController","./ScrollingTabController"],function(lang,_6e5,_6e6,_6e7,_6e8){return _6e5("dijit.layout.TabContainer",_6e6,{useMenu:true,useSlider:true,controllerWidget:"",_makeController:function(_6e9){var cls=this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout"),_6e7=typeof this.controllerWidget=="string"?lang.getObject(this.controllerWidget):this.controllerWidget;return new _6e7({id:this.id+"_tablist",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":cls,nested:this.nested,useMenu:this.useMenu,useSlider:this.useSlider,tabStripClass:this.tabStrip?this.baseClass+(this.tabStrip?"":"No")+"Strip":null},_6e9);},postMixInProperties:function(){this.inherited(arguments);if(!this.controllerWidget){this.controllerWidget=(this.tabPosition=="top"||this.tabPosition=="bottom")&&!this.nested?_6e8:_6e7;}}});});},"dijit/BackgroundIframe":function(){define(["require","./main","dojo/_base/config","dojo/dom-construct","dojo/dom-style","dojo/_base/lang","dojo/on","dojo/sniff"],function(_6ea,_6eb,_6ec,_6ed,_6ee,lang,on,has){has.add("config-bgIframe",(has("ie")||has("trident"))&&!/IEMobile\/10\.0/.test(navigator.userAgent));var _6ef=new function(){var _6f0=[];this.pop=function(){var _6f1;if(_6f0.length){_6f1=_6f0.pop();_6f1.style.display="";}else{if(has("ie")<9){var burl=_6ec["dojoBlankHtmlUrl"]||_6ea.toUrl("dojo/resources/blank.html")||"javascript:\"\"";var html="<iframe src='"+burl+"' role='presentation'"+" style='position: absolute; left: 0px; top: 0px;"+"z-index: -1; filter:Alpha(Opacity=\"0\");'>";_6f1=document.createElement(html);}else{_6f1=_6ed.create("iframe");_6f1.src="javascript:\"\"";_6f1.className="dijitBackgroundIframe";_6f1.setAttribute("role","presentation");_6ee.set(_6f1,"opacity",0.1);}_6f1.tabIndex=-1;}return _6f1;};this.push=function(_6f2){_6f2.style.display="none";_6f0.push(_6f2);};}();_6eb.BackgroundIframe=function(node){if(!node.id){throw new Error("no id");}if(has("config-bgIframe")){var _6f3=(this.iframe=_6ef.pop());node.appendChild(_6f3);if(has("ie")<7||has("quirks")){this.resize(node);this._conn=on(node,"resize",lang.hitch(this,"resize",node));}else{_6ee.set(_6f3,{width:"100%",height:"100%"});}}};lang.extend(_6eb.BackgroundIframe,{resize:function(node){if(this.iframe){_6ee.set(this.iframe,{width:node.offsetWidth+"px",height:node.offsetHeight+"px"});}},destroy:function(){if(this._conn){this._conn.remove();this._conn=null;}if(this.iframe){this.iframe.parentNode.removeChild(this.iframe);_6ef.push(this.iframe);delete this.iframe;}}});return _6eb.BackgroundIframe;});},"dojo/dnd/Avatar":function(){define(["../_base/declare","../_base/window","../dom","../dom-attr","../dom-class","../dom-construct","../hccss","../query"],function(_6f4,win,dom,_6f5,_6f6,_6f7,has,_6f8){return _6f4("dojo.dnd.Avatar",null,{constructor:function(_6f9){this.manager=_6f9;this.construct();},construct:function(){var a=_6f7.create("table",{"class":"dojoDndAvatar",style:{position:"absolute",zIndex:"1999",margin:"0px"}}),_6fa=this.manager.source,node,b=_6f7.create("tbody",null,a),tr=_6f7.create("tr",null,b),td=_6f7.create("td",null,tr),k=Math.min(5,this.manager.nodes.length),i=0;if(has("highcontrast")){_6f7.create("span",{id:"a11yIcon",innerHTML:this.manager.copy?"+":"<"},td);}_6f7.create("span",{innerHTML:_6fa.generateText?this._generateText():""},td);_6f5.set(tr,{"class":"dojoDndAvatarHeader",style:{opacity:0.9}});for(;i<k;++i){if(_6fa.creator){node=_6fa._normalizedCreator(_6fa.getItem(this.manager.nodes[i].id).data,"avatar").node;}else{node=this.manager.nodes[i].cloneNode(true);if(node.tagName.toLowerCase()=="tr"){var _6fb=_6f7.create("table"),_6fc=_6f7.create("tbody",null,_6fb);_6fc.appendChild(node);node=_6fb;}}node.id="";tr=_6f7.create("tr",null,b);td=_6f7.create("td",null,tr);td.appendChild(node);_6f5.set(tr,{"class":"dojoDndAvatarItem",style:{opacity:(9-i)/10}});}this.node=a;},destroy:function(){_6f7.destroy(this.node);this.node=false;},update:function(){_6f6.toggle(this.node,"dojoDndAvatarCanDrop",this.manager.canDropFlag);if(has("highcontrast")){var icon=dom.byId("a11yIcon");var text="+";if(this.manager.canDropFlag&&!this.manager.copy){text="< ";}else{if(!this.manager.canDropFlag&&!this.manager.copy){text="o";}else{if(!this.manager.canDropFlag){text="x";}}}icon.innerHTML=text;}_6f8(("tr.dojoDndAvatarHeader td span"+(has("highcontrast")?" span":"")),this.node).forEach(function(node){node.innerHTML=this.manager.source.generateText?this._generateText():"";},this);},_generateText:function(){return this.manager.nodes.length.toString();}});});},"dijit/form/Button":function(){define(["require","dojo/_base/declare","dojo/dom-class","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/ready","./_FormWidget","./_ButtonMixin","dojo/text!./templates/Button.html","../a11yclick"],function(_6fd,_6fe,_6ff,has,_700,lang,_701,_702,_703,_704){if(has("dijit-legacy-requires")){_701(0,function(){var _705=["dijit/form/DropDownButton","dijit/form/ComboButton","dijit/form/ToggleButton"];_6fd(_705);});}var _706=_6fe("dijit.form.Button"+(has("dojo-bidi")?"_NoBidi":""),[_702,_703],{showLabel:true,iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitButton",templateString:_704,_setValueAttr:"valueNode",_setNameAttr:function(name){if(this.valueNode){this.valueNode.setAttribute("name",name);}},postCreate:function(){this.inherited(arguments);this._setLabelFromContainer();},_setLabelFromContainer:function(){if(this.containerNode&&!this.label){this.label=lang.trim(this.containerNode.innerHTML);this.onLabelSet();}},_setShowLabelAttr:function(val){if(this.containerNode){_6ff.toggle(this.containerNode,"dijitDisplayNone",!val);}this._set("showLabel",val);},setLabel:function(_707){_700.deprecated("dijit.form.Button.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",_707);},onLabelSet:function(){this.inherited(arguments);if(!this.showLabel&&!("title" in this.params)){this.titleNode.title=lang.trim(this.containerNode.innerText||this.containerNode.textContent||"");}}});if(has("dojo-bidi")){_706=_6fe("dijit.form.Button",_706,{onLabelSet:function(){this.inherited(arguments);if(this.titleNode.title){this.applyTextDir(this.titleNode,this.titleNode.title);}},_setTextDirAttr:function(_708){if(this._created&&this.textDir!=_708){this._set("textDir",_708);this._setLabelAttr(this.label);}}});}return _706;});},"dojo/dnd/move":function(){define(["../_base/declare","../dom-geometry","../dom-style","./common","./Mover","./Moveable"],function(_709,_70a,_70b,dnd,_70c,_70d){var _70e=_709("dojo.dnd.move.constrainedMoveable",_70d,{constraints:function(){},within:false,constructor:function(node,_70f){if(!_70f){_70f={};}this.constraints=_70f.constraints;this.within=_70f.within;},onFirstMove:function(_710){var c=this.constraintBox=this.constraints.call(this,_710);c.r=c.l+c.w;c.b=c.t+c.h;if(this.within){var mb=_70a.getMarginSize(_710.node);c.r-=mb.w;c.b-=mb.h;}},onMove:function(_711,_712){var c=this.constraintBox,s=_711.node.style;this.onMoving(_711,_712);_712.l=_712.l<c.l?c.l:c.r<_712.l?c.r:_712.l;_712.t=_712.t<c.t?c.t:c.b<_712.t?c.b:_712.t;s.left=_712.l+"px";s.top=_712.t+"px";this.onMoved(_711,_712);}});var _713=_709("dojo.dnd.move.boxConstrainedMoveable",_70e,{box:{},constructor:function(node,_714){var box=_714&&_714.box;this.constraints=function(){return box;};}});var _715=_709("dojo.dnd.move.parentConstrainedMoveable",_70e,{area:"content",constructor:function(node,_716){var area=_716&&_716.area;this.constraints=function(){var n=this.node.parentNode,s=_70b.getComputedStyle(n),mb=_70a.getMarginBox(n,s);if(area=="margin"){return mb;}var t=_70a.getMarginExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;if(area=="border"){return mb;}t=_70a.getBorderExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;if(area=="padding"){return mb;}t=_70a.getPadExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;return mb;};}});return {constrainedMoveable:_70e,boxConstrainedMoveable:_713,parentConstrainedMoveable:_715};});},"dijit/_WidgetBase":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/config","dojo/_base/connect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/ready","dojo/Stateful","dojo/topic","dojo/_base/window","./Destroyable","dojo/has!dojo-bidi?./_BidiMixin","./registry"],function(_717,_718,_719,_71a,_71b,_71c,dom,_71d,_71e,_71f,_720,_721,has,_722,lang,on,_723,_724,_725,win,_726,_727,_728){has.add("dijit-legacy-requires",!_722.isAsync);has.add("dojo-bidi",false);if(has("dijit-legacy-requires")){_723(0,function(){var _729=["dijit/_base/manager"];_717(_729);});}var _72a={};function _72b(obj){var ret={};for(var attr in obj){ret[attr.toLowerCase()]=true;}return ret;};function _72c(attr){return function(val){_71d[val?"set":"remove"](this.domNode,attr,val);this._set(attr,val);};};function _72d(a,b){return a===b||(a!==a&&b!==b);};var _72e=_71c("dijit._WidgetBase",[_724,_726],{id:"",_setIdAttr:"domNode",lang:"",_setLangAttr:_72c("lang"),dir:"",_setDirAttr:_72c("dir"),"class":"",_setClassAttr:{node:"domNode",type:"class"},_setTypeAttr:null,style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,ownerDocument:null,_setOwnerDocumentAttr:function(val){this._set("ownerDocument",val);},attributeMap:{},_blankGif:_71a.blankGif||_717.toUrl("dojo/resources/blank.gif"),textDir:"",_introspect:function(){var ctor=this.constructor;if(!ctor._setterAttrs){var _72f=ctor.prototype,_730=ctor._setterAttrs=[],_731=(ctor._onMap={});for(var name in _72f.attributeMap){_730.push(name);}for(name in _72f){if(/^on/.test(name)){_731[name.substring(2).toLowerCase()]=name;}if(/^_set[A-Z](.*)Attr$/.test(name)){name=name.charAt(4).toLowerCase()+name.substr(5,name.length-9);if(!_72f.attributeMap||!(name in _72f.attributeMap)){_730.push(name);}}}}},postscript:function(_732,_733){this.create(_732,_733);},create:function(_734,_735){this._introspect();this.srcNodeRef=dom.byId(_735);this._connects=[];this._supportingWidgets=[];if(this.srcNodeRef&&this.srcNodeRef.id&&(typeof this.srcNodeRef.id=="string")){this.id=this.srcNodeRef.id;}if(_734){this.params=_734;lang.mixin(this,_734);}this.postMixInProperties();if(!this.id){this.id=_728.getUniqueId(this.declaredClass.replace(/\./g,"_"));if(this.params){delete this.params.id;}}this.ownerDocument=this.ownerDocument||(this.srcNodeRef?this.srcNodeRef.ownerDocument:document);this.ownerDocumentBody=win.body(this.ownerDocument);_728.add(this);this.buildRendering();var _736;if(this.domNode){this._applyAttributes();var _737=this.srcNodeRef;if(_737&&_737.parentNode&&this.domNode!==_737){_737.parentNode.replaceChild(this.domNode,_737);_736=true;}this.domNode.setAttribute("widgetId",this.id);}this.postCreate();if(_736){delete this.srcNodeRef;}this._created=true;},_applyAttributes:function(){var _738={};for(var key in this.params||{}){_738[key]=this._get(key);}_718.forEach(this.constructor._setterAttrs,function(key){if(!(key in _738)){var val=this._get(key);if(val){this.set(key,val);}}},this);for(key in _738){this.set(key,_738[key]);}},postMixInProperties:function(){},buildRendering:function(){if(!this.domNode){this.domNode=this.srcNodeRef||this.ownerDocument.createElement("div");}if(this.baseClass){var _739=this.baseClass.split(" ");if(!this.isLeftToRight()){_739=_739.concat(_718.map(_739,function(name){return name+"Rtl";}));}_71e.add(this.domNode,_739);}},postCreate:function(){},startup:function(){if(this._started){return;}this._started=true;_718.forEach(this.getChildren(),function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}});},destroyRecursive:function(_73a){this._beingDestroyed=true;this.destroyDescendants(_73a);this.destroy(_73a);},destroy:function(_73b){this._beingDestroyed=true;this.uninitialize();function _73c(w){if(w.destroyRecursive){w.destroyRecursive(_73b);}else{if(w.destroy){w.destroy(_73b);}}};_718.forEach(this._connects,lang.hitch(this,"disconnect"));_718.forEach(this._supportingWidgets,_73c);if(this.domNode){_718.forEach(_728.findWidgets(this.domNode,this.containerNode),_73c);}this.destroyRendering(_73b);_728.remove(this.id);this._destroyed=true;},destroyRendering:function(_73d){if(this.bgIframe){this.bgIframe.destroy(_73d);delete this.bgIframe;}if(this.domNode){if(_73d){_71d.remove(this.domNode,"widgetId");}else{_71f.destroy(this.domNode);}delete this.domNode;}if(this.srcNodeRef){if(!_73d){_71f.destroy(this.srcNodeRef);}delete this.srcNodeRef;}},destroyDescendants:function(_73e){_718.forEach(this.getChildren(),function(_73f){if(_73f.destroyRecursive){_73f.destroyRecursive(_73e);}});},uninitialize:function(){return false;},_setStyleAttr:function(_740){var _741=this.domNode;if(lang.isObject(_740)){_721.set(_741,_740);}else{if(_741.style.cssText){_741.style.cssText+="; "+_740;}else{_741.style.cssText=_740;}}this._set("style",_740);},_attrToDom:function(attr,_742,_743){_743=arguments.length>=3?_743:this.attributeMap[attr];_718.forEach(lang.isArray(_743)?_743:[_743],function(_744){var _745=this[_744.node||_744||"domNode"];var type=_744.type||"attribute";switch(type){case "attribute":if(lang.isFunction(_742)){_742=lang.hitch(this,_742);}var _746=_744.attribute?_744.attribute:(/^on[A-Z][a-zA-Z]*$/.test(attr)?attr.toLowerCase():attr);if(_745.tagName){_71d.set(_745,_746,_742);}else{_745.set(_746,_742);}break;case "innerText":_745.innerHTML="";_745.appendChild(this.ownerDocument.createTextNode(_742));break;case "textContent":_745.textContent=_742;break;case "innerHTML":_745.innerHTML=_742;break;case "class":_71e.replace(_745,_742,this[attr]);break;case "toggleClass":_71e.toggle(_745,_744.className||attr,_742);break;}},this);},get:function(name){var _747=this._getAttrNames(name);return this[_747.g]?this[_747.g]():this._get(name);},set:function(name,_748){if(typeof name==="object"){for(var x in name){this.set(x,name[x]);}return this;}var _749=this._getAttrNames(name),_74a=this[_749.s];if(lang.isFunction(_74a)){var _74b=_74a.apply(this,Array.prototype.slice.call(arguments,1));}else{var _74c=this.focusNode&&!lang.isFunction(this.focusNode)?"focusNode":"domNode",tag=this[_74c]&&this[_74c].tagName,_74d=tag&&(_72a[tag]||(_72a[tag]=_72b(this[_74c]))),map=name in this.attributeMap?this.attributeMap[name]:_749.s in this?this[_749.s]:((_74d&&_749.l in _74d&&typeof _748!="function")||/^aria-|^data-|^role$/.test(name))?_74c:null;if(map!=null){this._attrToDom(name,_748,map);}this._set(name,_748);}return _74b||this;},_attrPairNames:{},_getAttrNames:function(name){var apn=this._attrPairNames;if(apn[name]){return apn[name];}var uc=name.replace(/^[a-z]|-[a-zA-Z]/g,function(c){return c.charAt(c.length-1).toUpperCase();});return (apn[name]={n:name+"Node",s:"_set"+uc+"Attr",g:"_get"+uc+"Attr",l:uc.toLowerCase()});},_set:function(name,_74e){var _74f=this[name];this[name]=_74e;if(this._created&&!_72d(_74f,_74e)){if(this._watchCallbacks){this._watchCallbacks(name,_74f,_74e);}this.emit("attrmodified-"+name,{detail:{prevValue:_74f,newValue:_74e}});}},_get:function(name){return this[name];},emit:function(type,_750,_751){_750=_750||{};if(_750.bubbles===undefined){_750.bubbles=true;}if(_750.cancelable===undefined){_750.cancelable=true;}if(!_750.detail){_750.detail={};}_750.detail.widget=this;var ret,_752=this["on"+type];if(_752){ret=_752.apply(this,_751?_751:[_750]);}if(this._started&&!this._beingDestroyed){on.emit(this.domNode,type.toLowerCase(),_750);}return ret;},on:function(type,func){var _753=this._onMap(type);if(_753){return _719.after(this,_753,func,true);}return this.own(on(this.domNode,type,func))[0];},_onMap:function(type){var ctor=this.constructor,map=ctor._onMap;if(!map){map=(ctor._onMap={});for(var attr in ctor.prototype){if(/^on/.test(attr)){map[attr.replace(/^on/,"").toLowerCase()]=attr;}}}return map[typeof type=="string"&&type.toLowerCase()];},toString:function(){return "[Widget "+this.declaredClass+", "+(this.id||"NO ID")+"]";},getChildren:function(){return this.containerNode?_728.findWidgets(this.containerNode):[];},getParent:function(){return _728.getEnclosingWidget(this.domNode.parentNode);},connect:function(obj,_754,_755){return this.own(_71b.connect(obj,_754,this,_755))[0];},disconnect:function(_756){_756.remove();},subscribe:function(t,_757){return this.own(_725.subscribe(t,lang.hitch(this,_757)))[0];},unsubscribe:function(_758){_758.remove();},isLeftToRight:function(){return this.dir?(this.dir.toLowerCase()=="ltr"):_720.isBodyLtr(this.ownerDocument);},isFocusable:function(){return this.focus&&(_721.get(this.domNode,"display")!="none");},placeAt:function(_759,_75a){var _75b=!_759.tagName&&_728.byId(_759);if(_75b&&_75b.addChild&&(!_75a||typeof _75a==="number")){_75b.addChild(this,_75a);}else{var ref=_75b&&("domNode" in _75b)?(_75b.containerNode&&!/after|before|replace/.test(_75a||"")?_75b.containerNode:_75b.domNode):dom.byId(_759,this.ownerDocument);_71f.place(this.domNode,ref,_75a);if(!this._started&&(this.getParent()||{})._started){this.startup();}}return this;},defer:function(fcn,_75c){var _75d=setTimeout(lang.hitch(this,function(){if(!_75d){return;}_75d=null;if(!this._destroyed){lang.hitch(this,fcn)();}}),_75c||0);return {remove:function(){if(_75d){clearTimeout(_75d);_75d=null;}return null;}};}});if(has("dojo-bidi")){_72e.extend(_727);}return _72e;});},"dijit/layout/_TabContainerBase":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","./StackContainer","./utils","../_TemplatedMixin","dojo/text!./templates/TabContainer.html"],function(_75e,_75f,_760,_761,_762,_763,_764,_765){return _75e("dijit.layout._TabContainerBase",[_762,_764],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:false,nested:false,templateString:_765,postMixInProperties:function(){this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");this.srcNodeRef&&_761.set(this.srcNodeRef,"visibility","hidden");this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);this.tablist=this._makeController(this.tablistNode);if(!this.doLayout){_75f.add(this.domNode,"dijitTabContainerNoLayout");}if(this.nested){_75f.add(this.domNode,"dijitTabContainerNested");_75f.add(this.tablist.containerNode,"dijitTabContainerTabListNested");_75f.add(this.tablistSpacer,"dijitTabContainerSpacerNested");_75f.add(this.containerNode,"dijitTabPaneWrapperNested");}else{_75f.add(this.domNode,"tabStrip-"+(this.tabStrip?"enabled":"disabled"));}},_setupChild:function(tab){_75f.add(tab.domNode,"dijitTabPane");this.inherited(arguments);},removeChild:function(_766){_75f.remove(_766.domNode,"dijitTabPane");this.inherited(arguments);},startup:function(){if(this._started){return;}this.tablist.startup();this.inherited(arguments);},layout:function(){if(!this._contentBox||typeof (this._contentBox.l)=="undefined"){return;}var sc=this.selectedChildWidget;if(this.doLayout){var _767=this.tabPosition.replace(/-h/,"");this.tablist.region=_767;var _768=[this.tablist,{domNode:this.tablistSpacer,region:_767},{domNode:this.containerNode,region:"center"}];_763.layoutChildren(this.domNode,this._contentBox,_768);this._containerContentBox=_763.marginBox2contentBox(this.containerNode,_768[2]);if(sc&&sc.resize){sc.resize(this._containerContentBox);}}else{if(this.tablist.resize){var s=this.tablist.domNode.style;s.width="0";var _769=_760.getContentBox(this.domNode).w;s.width="";this.tablist.resize({w:_769});}if(sc&&sc.resize){sc.resize();}}},destroy:function(_76a){if(this.tablist){this.tablist.destroy(_76a);}this.inherited(arguments);}});});},"dijit/form/Form":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/_base/kernel","dojo/sniff","../_Widget","../_TemplatedMixin","./_FormMixin","../layout/_ContentPaneResizeMixin"],function(_76b,_76c,_76d,has,_76e,_76f,_770,_771){return _76b("dijit.form.Form",[_76e,_76f,_770,_771],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"<form data-dojo-attach-point='containerNode' data-dojo-attach-event='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",postMixInProperties:function(){this.nameAttrSetting=this.name?("name='"+this.name+"'"):"";this.inherited(arguments);},execute:function(){},onExecute:function(){},_setEncTypeAttr:function(_772){_76c.set(this.domNode,"encType",_772);if(has("ie")){this.domNode.encoding=_772;}this._set("encType",_772);},reset:function(e){var faux={returnValue:true,preventDefault:function(){this.returnValue=false;},stopPropagation:function(){},currentTarget:e?e.target:this.domNode,target:e?e.target:this.domNode};if(!(this.onReset(faux)===false)&&faux.returnValue){this.inherited(arguments,[]);}},onReset:function(){return true;},_onReset:function(e){this.reset(e);e.stopPropagation();e.preventDefault();return false;},_onSubmit:function(e){var fp=this.constructor.prototype;if(this.execute!=fp.execute||this.onExecute!=fp.onExecute){_76d.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.","","2.0");this.onExecute();this.execute(this.getValues());}if(this.onSubmit(e)===false){e.stopPropagation();e.preventDefault();}},onSubmit:function(){return this.isValid();},submit:function(){if(!(this.onSubmit()===false)){this.containerNode.submit();}}});});},"dojo/store/Memory":function(){define(["../_base/declare","./util/QueryResults","./util/SimpleQueryEngine"],function(_773,_774,_775){var base=null;return _773("dojo.store.Memory",base,{constructor:function(_776){for(var i in _776){this[i]=_776[i];}this.setData(this.data||[]);},data:null,idProperty:"id",index:null,queryEngine:_775,get:function(id){return this.data[this.index[id]];},getIdentity:function(_777){return _777[this.idProperty];},put:function(_778,_779){var data=this.data,_77a=this.index,_77b=this.idProperty;var id=_778[_77b]=(_779&&"id" in _779)?_779.id:_77b in _778?_778[_77b]:Math.random();if(id in _77a){if(_779&&_779.overwrite===false){throw new Error("Object already exists");}data[_77a[id]]=_778;}else{_77a[id]=data.push(_778)-1;}return id;},add:function(_77c,_77d){(_77d=_77d||{}).overwrite=false;return this.put(_77c,_77d);},remove:function(id){var _77e=this.index;var data=this.data;if(id in _77e){data.splice(_77e[id],1);this.setData(data);return true;}},query:function(_77f,_780){return _774(this.queryEngine(_77f,_780)(this.data));},setData:function(data){if(data.items){this.idProperty=data.identifier||this.idProperty;data=this.data=data.items;}else{this.data=data;}this.index={};for(var i=0,l=data.length;i<l;i++){this.index[data[i][this.idProperty]]=i;}}});});},"dijit/_base/sniff":function(){define(["dojo/uacss"],function(){});},"dijit/Toolbar":function(){define(["require","dojo/_base/declare","dojo/has","dojo/keys","dojo/ready","./_Widget","./_KeyNavContainer","./_TemplatedMixin"],function(_781,_782,has,keys,_783,_784,_785,_786){if(has("dijit-legacy-requires")){_783(0,function(){var _787=["dijit/ToolbarSeparator"];_781(_787);});}return _782("dijit.Toolbar",[_784,_786,_785],{templateString:"<div class=\"dijit\" role=\"toolbar\" tabIndex=\"${tabIndex}\" data-dojo-attach-point=\"containerNode\">"+"</div>",baseClass:"dijitToolbar",_onLeftArrow:function(){this.focusPrev();},_onRightArrow:function(){this.focusNext();}});});},"dijit/layout/StackContainer":function(){define(["dojo/_base/array","dojo/cookie","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/has","dojo/_base/lang","dojo/on","dojo/ready","dojo/topic","dojo/when","../registry","../_WidgetBase","./_LayoutWidget"],function(_788,_789,_78a,_78b,_78c,has,lang,on,_78d,_78e,when,_78f,_790,_791){if(has("dijit-legacy-requires")){_78d(0,function(){var _792=["dijit/layout/StackController"];require(_792);});}var _793=_78a("dijit.layout.StackContainer",_791,{doLayout:true,persist:false,baseClass:"dijitStackContainer",buildRendering:function(){this.inherited(arguments);_78b.add(this.domNode,"dijitLayoutContainer");},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKeyDown")));},startup:function(){if(this._started){return;}var _794=this.getChildren();_788.forEach(_794,this._setupChild,this);if(this.persist){this.selectedChildWidget=_78f.byId(_789(this.id+"_selectedChild"));}else{_788.some(_794,function(_795){if(_795.selected){this.selectedChildWidget=_795;}return _795.selected;},this);}var _796=this.selectedChildWidget;if(!_796&&_794[0]){_796=this.selectedChildWidget=_794[0];_796.selected=true;}_78e.publish(this.id+"-startup",{children:_794,selected:_796,textDir:this.textDir});this.inherited(arguments);},resize:function(){if(!this._hasBeenShown){this._hasBeenShown=true;var _797=this.selectedChildWidget;if(_797){this._showChild(_797);}}this.inherited(arguments);},_setupChild:function(_798){var _799=_798.domNode,_79a=_78c.place("<div role='tabpanel' class='"+this.baseClass+"ChildWrapper dijitHidden'>",_798.domNode,"replace"),_79b=_798["aria-label"]||_798.title||_798.label;if(_79b){_79a.setAttribute("aria-label",_79b);}_78c.place(_799,_79a);_798._wrapper=_79a;this.inherited(arguments);if(_799.style.display=="none"){_799.style.display="block";}_798.domNode.removeAttribute("title");},addChild:function(_79c,_79d){this.inherited(arguments);if(this._started){_78e.publish(this.id+"-addChild",_79c,_79d);this.layout();if(!this.selectedChildWidget){this.selectChild(_79c);}}},removeChild:function(page){var idx=_788.indexOf(this.getChildren(),page);this.inherited(arguments);_78c.destroy(page._wrapper);delete page._wrapper;if(this._started){_78e.publish(this.id+"-removeChild",page);}if(this._descendantsBeingDestroyed){return;}if(this.selectedChildWidget===page){this.selectedChildWidget=undefined;if(this._started){var _79e=this.getChildren();if(_79e.length){this.selectChild(_79e[Math.max(idx-1,0)]);}}}if(this._started){this.layout();}},selectChild:function(page,_79f){var d;page=_78f.byId(page);if(this.selectedChildWidget!=page){d=this._transition(page,this.selectedChildWidget,_79f);this._set("selectedChildWidget",page);_78e.publish(this.id+"-selectChild",page,this._focused);if(this.persist){_789(this.id+"_selectedChild",this.selectedChildWidget.id);}}return when(d||true);},_transition:function(_7a0,_7a1){if(_7a1){this._hideChild(_7a1);}var d=this._showChild(_7a0);if(_7a0.resize){if(this.doLayout){_7a0.resize(this._containerContentBox||this._contentBox);}else{_7a0.resize();}}return d;},_adjacent:function(_7a2){var _7a3=this.getChildren();var _7a4=_788.indexOf(_7a3,this.selectedChildWidget);_7a4+=_7a2?1:_7a3.length-1;return _7a3[_7a4%_7a3.length];},forward:function(){return this.selectChild(this._adjacent(true),true);},back:function(){return this.selectChild(this._adjacent(false),true);},_onKeyDown:function(e){_78e.publish(this.id+"-containerKeyDown",{e:e,page:this});},layout:function(){var _7a5=this.selectedChildWidget;if(_7a5&&_7a5.resize){if(this.doLayout){_7a5.resize(this._containerContentBox||this._contentBox);}else{_7a5.resize();}}},_showChild:function(page){var _7a6=this.getChildren();page.isFirstChild=(page==_7a6[0]);page.isLastChild=(page==_7a6[_7a6.length-1]);page._set("selected",true);if(page._wrapper){_78b.replace(page._wrapper,"dijitVisible","dijitHidden");}return (page._onShow&&page._onShow())||true;},_hideChild:function(page){page._set("selected",false);if(page._wrapper){_78b.replace(page._wrapper,"dijitHidden","dijitVisible");}page.onHide&&page.onHide();},closeChild:function(page){var _7a7=!page.onClose||page.onClose(this,page);if(_7a7){this.removeChild(page);page.destroyRecursive();}},destroyDescendants:function(_7a8){this._descendantsBeingDestroyed=true;this.selectedChildWidget=undefined;_788.forEach(this.getChildren(),function(_7a9){if(!_7a8){this.removeChild(_7a9);}_7a9.destroyRecursive(_7a8);},this);this._descendantsBeingDestroyed=false;}});_793.ChildWidgetProperties={selected:false,disabled:false,closable:false,iconClass:"dijitNoIcon",showTitle:true};lang.extend(_790,_793.ChildWidgetProperties);return _793;});},"dojo/regexp":function(){define(["./_base/kernel","./_base/lang"],function(dojo,lang){var _7aa={};lang.setObject("dojo.regexp",_7aa);_7aa.escapeString=function(str,_7ab){return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+\-^])/g,function(ch){if(_7ab&&_7ab.indexOf(ch)!=-1){return ch;}return "\\"+ch;});};_7aa.buildGroupRE=function(arr,re,_7ac){if(!(arr instanceof Array)){return re(arr);}var b=[];for(var i=0;i<arr.length;i++){b.push(re(arr[i]));}return _7aa.group(b.join("|"),_7ac);};_7aa.group=function(_7ad,_7ae){return "("+(_7ae?"?:":"")+_7ad+")";};return _7aa;});},"dijit/form/ComboBox":function(){define(["dojo/_base/declare","./ValidationTextBox","./ComboBoxMixin"],function(_7af,_7b0,_7b1){return _7af("dijit.form.ComboBox",[_7b0,_7b1],{});});},"dijit/DropDownMenu":function(){define(["dojo/_base/declare","dojo/keys","dojo/text!./templates/Menu.html","./_MenuBase"],function(_7b2,keys,_7b3,_7b4){return _7b2("dijit.DropDownMenu",_7b4,{templateString:_7b3,baseClass:"dijitMenu",_onUpArrow:function(){this.focusPrev();},_onDownArrow:function(){this.focusNext();},_onRightArrow:function(evt){this._moveToPopup(evt);evt.stopPropagation();evt.preventDefault();},_onLeftArrow:function(evt){if(this.parentMenu){if(this.parentMenu._isMenuBar){this.parentMenu.focusPrev();}else{this.onCancel(false);}}else{evt.stopPropagation();evt.preventDefault();}}});});},"dijit/_AttachMixin":function(){define(["require","dojo/_base/array","dojo/_base/connect","dojo/_base/declare","dojo/_base/lang","dojo/mouse","dojo/on","dojo/touch","./_WidgetBase"],function(_7b5,_7b6,_7b7,_7b8,lang,_7b9,on,_7ba,_7bb){var _7bc=lang.delegate(_7ba,{"mouseenter":_7b9.enter,"mouseleave":_7b9.leave,"keypress":_7b7._keypress});var _7bd;var _7be=_7b8("dijit._AttachMixin",null,{constructor:function(){this._attachPoints=[];this._attachEvents=[];},buildRendering:function(){this.inherited(arguments);this._attachTemplateNodes(this.domNode);this._beforeFillContent();},_beforeFillContent:function(){},_attachTemplateNodes:function(_7bf){var node=_7bf;while(true){if(node.nodeType==1&&(this._processTemplateNode(node,function(n,p){return n.getAttribute(p);},this._attach)||this.searchContainerNode)&&node.firstChild){node=node.firstChild;}else{if(node==_7bf){return;}while(!node.nextSibling){node=node.parentNode;if(node==_7bf){return;}}node=node.nextSibling;}}},_processTemplateNode:function(_7c0,_7c1,_7c2){var ret=true;var _7c3=this.attachScope||this,_7c4=_7c1(_7c0,"dojoAttachPoint")||_7c1(_7c0,"data-dojo-attach-point");if(_7c4){var _7c5,_7c6=_7c4.split(/\s*,\s*/);while((_7c5=_7c6.shift())){if(lang.isArray(_7c3[_7c5])){_7c3[_7c5].push(_7c0);}else{_7c3[_7c5]=_7c0;}ret=(_7c5!="containerNode");this._attachPoints.push(_7c5);}}var _7c7=_7c1(_7c0,"dojoAttachEvent")||_7c1(_7c0,"data-dojo-attach-event");if(_7c7){var _7c8,_7c9=_7c7.split(/\s*,\s*/);var trim=lang.trim;while((_7c8=_7c9.shift())){if(_7c8){var _7ca=null;if(_7c8.indexOf(":")!=-1){var _7cb=_7c8.split(":");_7c8=trim(_7cb[0]);_7ca=trim(_7cb[1]);}else{_7c8=trim(_7c8);}if(!_7ca){_7ca=_7c8;}this._attachEvents.push(_7c2(_7c0,_7c8,lang.hitch(_7c3,_7ca)));}}}return ret;},_attach:function(node,type,func){type=type.replace(/^on/,"").toLowerCase();if(type=="dijitclick"){type=_7bd||(_7bd=_7b5("./a11yclick"));}else{type=_7bc[type]||type;}return on(node,type,func);},_detachTemplateNodes:function(){var _7cc=this.attachScope||this;_7b6.forEach(this._attachPoints,function(_7cd){delete _7cc[_7cd];});this._attachPoints=[];_7b6.forEach(this._attachEvents,function(_7ce){_7ce.remove();});this._attachEvents=[];},destroyRendering:function(){this._detachTemplateNodes();this.inherited(arguments);}});lang.extend(_7bb,{dojoAttachEvent:"",dojoAttachPoint:""});return _7be;});},"dijit/form/_FormMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/window"],function(_7cf,_7d0,_7d1,lang,on,_7d2){return _7d0("dijit.form._FormMixin",null,{state:"",_getDescendantFormWidgets:function(_7d3){var res=[];_7cf.forEach(_7d3||this.getChildren(),function(_7d4){if("value" in _7d4){res.push(_7d4);}else{res=res.concat(this._getDescendantFormWidgets(_7d4.getChildren()));}},this);return res;},reset:function(){_7cf.forEach(this._getDescendantFormWidgets(),function(_7d5){if(_7d5.reset){_7d5.reset();}});},validate:function(){var _7d6=false;return _7cf.every(_7cf.map(this._getDescendantFormWidgets(),function(_7d7){_7d7._hasBeenBlurred=true;var _7d8=_7d7.disabled||!_7d7.validate||_7d7.validate();if(!_7d8&&!_7d6){_7d2.scrollIntoView(_7d7.containerNode||_7d7.domNode);_7d7.focus();_7d6=true;}return _7d8;}),function(item){return item;});},setValues:function(val){_7d1.deprecated(this.declaredClass+"::setValues() is deprecated. Use set('value', val) instead.","","2.0");return this.set("value",val);},_setValueAttr:function(obj){var map={};_7cf.forEach(this._getDescendantFormWidgets(),function(_7d9){if(!_7d9.name){return;}var _7da=map[_7d9.name]||(map[_7d9.name]=[]);_7da.push(_7d9);});for(var name in map){if(!map.hasOwnProperty(name)){continue;}var _7db=map[name],_7dc=lang.getObject(name,false,obj);if(_7dc===undefined){continue;}_7dc=[].concat(_7dc);if(typeof _7db[0].checked=="boolean"){_7cf.forEach(_7db,function(w){w.set("value",_7cf.indexOf(_7dc,w._get("value"))!=-1);});}else{if(_7db[0].multiple){_7db[0].set("value",_7dc);}else{_7cf.forEach(_7db,function(w,i){w.set("value",_7dc[i]);});}}}},getValues:function(){_7d1.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},_getValueAttr:function(){var obj={};_7cf.forEach(this._getDescendantFormWidgets(),function(_7dd){var name=_7dd.name;if(!name||_7dd.disabled){return;}var _7de=_7dd.get("value");if(typeof _7dd.checked=="boolean"){if(/Radio/.test(_7dd.declaredClass)){if(_7de!==false){lang.setObject(name,_7de,obj);}else{_7de=lang.getObject(name,false,obj);if(_7de===undefined){lang.setObject(name,null,obj);}}}else{var ary=lang.getObject(name,false,obj);if(!ary){ary=[];lang.setObject(name,ary,obj);}if(_7de!==false){ary.push(_7de);}}}else{var prev=lang.getObject(name,false,obj);if(typeof prev!="undefined"){if(lang.isArray(prev)){prev.push(_7de);}else{lang.setObject(name,[prev,_7de],obj);}}else{lang.setObject(name,_7de,obj);}}});return obj;},isValid:function(){return this.state=="";},onValidStateChange:function(){},_getState:function(){var _7df=_7cf.map(this._descendants,function(w){return w.get("state")||"";});return _7cf.indexOf(_7df,"Error")>=0?"Error":_7cf.indexOf(_7df,"Incomplete")>=0?"Incomplete":"";},disconnectChildren:function(){},connectChildren:function(_7e0){this._descendants=this._getDescendantFormWidgets();_7cf.forEach(this._descendants,function(_7e1){if(!_7e1._started){_7e1.startup();}});if(!_7e0){this._onChildChange();}},_onChildChange:function(attr){if(!attr||attr=="state"||attr=="disabled"){this._set("state",this._getState());}if(!attr||attr=="value"||attr=="disabled"||attr=="checked"){if(this._onChangeDelayTimer){this._onChangeDelayTimer.remove();}this._onChangeDelayTimer=this.defer(function(){delete this._onChangeDelayTimer;this._set("value",this.get("value"));},10);}},startup:function(){this.inherited(arguments);this._descendants=this._getDescendantFormWidgets();this.value=this.get("value");this.state=this._getState();var self=this;this.own(on(this.containerNode,"attrmodified-state, attrmodified-disabled, attrmodified-value, attrmodified-checked",function(evt){if(evt.target==self.domNode){return;}self._onChildChange(evt.type.replace("attrmodified-",""));}));this.watch("state",function(attr,_7e2,_7e3){this.onValidStateChange(_7e3=="");});},destroy:function(){this.inherited(arguments);}});});},"dojo/data/util/simpleFetch":function(){define(["../../_base/lang","../../_base/kernel","./sorter"],function(lang,_7e4,_7e5){var _7e6={};lang.setObject("dojo.data.util.simpleFetch",_7e6);_7e6.errorHandler=function(_7e7,_7e8){if(_7e8.onError){var _7e9=_7e8.scope||_7e4.global;_7e8.onError.call(_7e9,_7e7,_7e8);}};_7e6.fetchHandler=function(_7ea,_7eb){var _7ec=_7eb.abort||null,_7ed=false,_7ee=_7eb.start?_7eb.start:0,_7ef=(_7eb.count&&(_7eb.count!==Infinity))?(_7ee+_7eb.count):_7ea.length;_7eb.abort=function(){_7ed=true;if(_7ec){_7ec.call(_7eb);}};var _7f0=_7eb.scope||_7e4.global;if(!_7eb.store){_7eb.store=this;}if(_7eb.onBegin){_7eb.onBegin.call(_7f0,_7ea.length,_7eb);}if(_7eb.sort){_7ea.sort(_7e5.createSortFunction(_7eb.sort,this));}if(_7eb.onItem){for(var i=_7ee;(i<_7ea.length)&&(i<_7ef);++i){var item=_7ea[i];if(!_7ed){_7eb.onItem.call(_7f0,item,_7eb);}}}if(_7eb.onComplete&&!_7ed){var _7f1=null;if(!_7eb.onItem){_7f1=_7ea.slice(_7ee,_7ef);}_7eb.onComplete.call(_7f0,_7f1,_7eb);}};_7e6.fetch=function(_7f2){_7f2=_7f2||{};if(!_7f2.store){_7f2.store=this;}this._fetchItems(_7f2,lang.hitch(this,"fetchHandler"),lang.hitch(this,"errorHandler"));return _7f2;};return _7e6;});},"dijit/Menu":function(){define(["require","dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-geometry","dojo/dom-style","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/_base/window","dojo/window","./popup","./DropDownMenu","dojo/ready"],function(_7f3,_7f4,_7f5,dom,_7f6,_7f7,_7f8,keys,lang,on,has,win,_7f9,pm,_7fa,_7fb){if(has("dijit-legacy-requires")){_7fb(0,function(){var _7fc=["dijit/MenuItem","dijit/PopupMenuItem","dijit/CheckedMenuItem","dijit/MenuSeparator"];_7f3(_7fc);});}return _7f5("dijit.Menu",_7fa,{constructor:function(){this._bindings=[];},targetNodeIds:[],selector:"",contextMenuForWindow:false,leftClickToOpen:false,refocus:true,postCreate:function(){if(this.contextMenuForWindow){this.bindDomNode(this.ownerDocumentBody);}else{_7f4.forEach(this.targetNodeIds,this.bindDomNode,this);}this.inherited(arguments);},_iframeContentWindow:function(_7fd){return _7f9.get(this._iframeContentDocument(_7fd))||this._iframeContentDocument(_7fd)["__parent__"]||(_7fd.name&&document.frames[_7fd.name])||null;},_iframeContentDocument:function(_7fe){return _7fe.contentDocument||(_7fe.contentWindow&&_7fe.contentWindow.document)||(_7fe.name&&document.frames[_7fe.name]&&document.frames[_7fe.name].document)||null;},bindDomNode:function(node){node=dom.byId(node,this.ownerDocument);var cn;if(node.tagName.toLowerCase()=="iframe"){var _7ff=node,_800=this._iframeContentWindow(_7ff);cn=win.body(_800.document);}else{cn=(node==win.body(this.ownerDocument)?this.ownerDocument.documentElement:node);}var _801={node:node,iframe:_7ff};_7f6.set(node,"_dijitMenu"+this.id,this._bindings.push(_801));var _802=lang.hitch(this,function(cn){var _803=this.selector,_804=_803?function(_805){return on.selector(_803,_805);}:function(_806){return _806;},self=this;return [on(cn,_804(this.leftClickToOpen?"click":"contextmenu"),function(evt){evt.stopPropagation();evt.preventDefault();if((new Date()).getTime()<self._lastKeyDown+500){return;}self._scheduleOpen(this,_7ff,{x:evt.pageX,y:evt.pageY},evt.target);}),on(cn,_804("keydown"),function(evt){if(evt.keyCode==93||(evt.shiftKey&&evt.keyCode==keys.F10)||(self.leftClickToOpen&&evt.keyCode==keys.SPACE)){evt.stopPropagation();evt.preventDefault();self._scheduleOpen(this,_7ff,null,evt.target);self._lastKeyDown=(new Date()).getTime();}})];});_801.connects=cn?_802(cn):[];if(_7ff){_801.onloadHandler=lang.hitch(this,function(){var _807=this._iframeContentWindow(_7ff),cn=win.body(_807.document);_801.connects=_802(cn);});if(_7ff.addEventListener){_7ff.addEventListener("load",_801.onloadHandler,false);}else{_7ff.attachEvent("onload",_801.onloadHandler);}}},unBindDomNode:function(_808){var node;try{node=dom.byId(_808,this.ownerDocument);}catch(e){return;}var _809="_dijitMenu"+this.id;if(node&&_7f6.has(node,_809)){var bid=_7f6.get(node,_809)-1,b=this._bindings[bid],h;while((h=b.connects.pop())){h.remove();}var _80a=b.iframe;if(_80a){if(_80a.removeEventListener){_80a.removeEventListener("load",b.onloadHandler,false);}else{_80a.detachEvent("onload",b.onloadHandler);}}_7f6.remove(node,_809);delete this._bindings[bid];}},_scheduleOpen:function(_80b,_80c,_80d,_80e){if(!this._openTimer){this._openTimer=this.defer(function(){delete this._openTimer;this._openMyself({target:_80e,delegatedTarget:_80b,iframe:_80c,coords:_80d});},1);}},_openMyself:function(args){var _80f=args.target,_810=args.iframe,_811=args.coords,_812=!_811;this.currentTarget=args.delegatedTarget;if(_811){if(_810){var ifc=_7f7.position(_810,true),_813=this._iframeContentWindow(_810),_814=_7f7.docScroll(_813.document);var cs=_7f8.getComputedStyle(_810),tp=_7f8.toPixelValue,left=(has("ie")&&has("quirks")?0:tp(_810,cs.paddingLeft))+(has("ie")&&has("quirks")?tp(_810,cs.borderLeftWidth):0),top=(has("ie")&&has("quirks")?0:tp(_810,cs.paddingTop))+(has("ie")&&has("quirks")?tp(_810,cs.borderTopWidth):0);_811.x+=ifc.x+left-_814.x;_811.y+=ifc.y+top-_814.y;}}else{_811=_7f7.position(_80f,true);_811.x+=10;_811.y+=10;}var self=this;var _815=this._focusManager.get("prevNode");var _816=this._focusManager.get("curNode");var _817=!_816||(dom.isDescendant(_816,this.domNode))?_815:_816;function _818(){if(self.refocus&&_817){_817.focus();}pm.close(self);};pm.open({popup:this,x:_811.x,y:_811.y,onExecute:_818,onCancel:_818,orient:this.isLeftToRight()?"L":"R"});this.focus();if(!_812){this.defer(function(){this._cleanUp(true);});}this._onBlur=function(){this.inherited("_onBlur",arguments);pm.close(this);};},destroy:function(){_7f4.forEach(this._bindings,function(b){if(b){this.unBindDomNode(b.node);}},this);this.inherited(arguments);}});});},"dijit/form/_CheckBoxMixin":function(){define(["dojo/_base/declare","dojo/dom-attr"],function(_819,_81a){return _819("dijit.form._CheckBoxMixin",null,{type:"checkbox",value:"on",readOnly:false,_aria_attr:"aria-checked",_setReadOnlyAttr:function(_81b){this._set("readOnly",_81b);_81a.set(this.focusNode,"readOnly",_81b);},_setLabelAttr:undefined,_getSubmitValue:function(_81c){return (_81c==null||_81c==="")?"on":_81c;},_setValueAttr:function(_81d){_81d=this._getSubmitValue(_81d);this._set("value",_81d);_81a.set(this.focusNode,"value",_81d);},reset:function(){this.inherited(arguments);this._set("value",this._getSubmitValue(this.params.value));_81a.set(this.focusNode,"value",this.value);},_onClick:function(e){if(this.readOnly){e.stopPropagation();e.preventDefault();return false;}return this.inherited(arguments);}});});},"dijit/layout/ContentPane":function(){define(["dojo/_base/kernel","dojo/_base/lang","../_Widget","../_Container","./_ContentPaneResizeMixin","dojo/string","dojo/html","dojo/_base/array","dojo/_base/declare","dojo/_base/Deferred","dojo/dom","dojo/dom-attr","dojo/dom-construct","dojo/_base/xhr","dojo/i18n","dojo/when","dojo/i18n!../nls/loading"],function(_81e,lang,_81f,_820,_821,_822,html,_823,_824,_825,dom,_826,_827,xhr,i18n,when){return _824("dijit.layout.ContentPane",[_81f,_820,_821],{href:"",content:"",extractContent:false,parseOnLoad:true,parserScope:_81e._scopeName,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>",isLoaded:false,baseClass:"dijitContentPane",ioArgs:{},onLoadDeferred:null,_setTitleAttr:null,stopParser:true,template:false,markupFactory:function(_828,node,ctor){var self=new ctor(_828,node);return !self.href&&self._contentSetter&&self._contentSetter.parseDeferred&&!self._contentSetter.parseDeferred.isFulfilled()?self._contentSetter.parseDeferred.then(function(){return self;}):self;},create:function(_829,_82a){if((!_829||!_829.template)&&_82a&&!("href" in _829)&&!("content" in _829)){_82a=dom.byId(_82a);var df=_82a.ownerDocument.createDocumentFragment();while(_82a.firstChild){df.appendChild(_82a.firstChild);}_829=lang.delegate(_829,{content:df});}this.inherited(arguments,[_829,_82a]);},postMixInProperties:function(){this.inherited(arguments);var _82b=i18n.getLocalization("dijit","loading",this.lang);this.loadingMessage=_822.substitute(this.loadingMessage,_82b);this.errorMessage=_822.substitute(this.errorMessage,_82b);},buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}this.domNode.removeAttribute("title");},startup:function(){this.inherited(arguments);if(this._contentSetter){_823.forEach(this._contentSetter.parseResults,function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}},this);}},_startChildren:function(){_823.forEach(this.getChildren(),function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}});if(this._contentSetter){_823.forEach(this._contentSetter.parseResults,function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}},this);}},setHref:function(href){_81e.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");return this.set("href",href);},_setHrefAttr:function(href){this.cancel();this.onLoadDeferred=new _825(lang.hitch(this,"cancel"));this.onLoadDeferred.then(lang.hitch(this,"onLoad"));this._set("href",href);if(this.preload||(this._created&&this._isShown())){this._load();}else{this._hrefChanged=true;}return this.onLoadDeferred;},setContent:function(data){_81e.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.","","2.0");this.set("content",data);},_setContentAttr:function(data){this._set("href","");this.cancel();this.onLoadDeferred=new _825(lang.hitch(this,"cancel"));if(this._created){this.onLoadDeferred.then(lang.hitch(this,"onLoad"));}this._setContent(data||"");this._isDownloaded=false;return this.onLoadDeferred;},_getContentAttr:function(){return this.containerNode.innerHTML;},cancel:function(){if(this._xhrDfd&&(this._xhrDfd.fired==-1)){this._xhrDfd.cancel();}delete this._xhrDfd;this.onLoadDeferred=null;},destroy:function(){this.cancel();this.inherited(arguments);},destroyRecursive:function(_82c){if(this._beingDestroyed){return;}this.inherited(arguments);},_onShow:function(){this.inherited(arguments);if(this.href){if(!this._xhrDfd&&(!this.isLoaded||this._hrefChanged||this.refreshOnShow)){return this.refresh();}}},refresh:function(){this.cancel();this.onLoadDeferred=new _825(lang.hitch(this,"cancel"));this.onLoadDeferred.then(lang.hitch(this,"onLoad"));this._load();return this.onLoadDeferred;},_load:function(){this._setContent(this.onDownloadStart(),true);var self=this;var _82d={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"};if(lang.isObject(this.ioArgs)){lang.mixin(_82d,this.ioArgs);}var hand=(this._xhrDfd=(this.ioMethod||xhr.get)(_82d)),_82e;hand.then(function(html){_82e=html;try{self._isDownloaded=true;return self._setContent(html,false);}catch(err){self._onError("Content",err);}},function(err){if(!hand.canceled){self._onError("Download",err);}delete self._xhrDfd;return err;}).then(function(){self.onDownloadEnd();delete self._xhrDfd;return _82e;});delete this._hrefChanged;},_onLoadHandler:function(data){this._set("isLoaded",true);try{this.onLoadDeferred.resolve(data);}catch(e){console.error("Error "+(this.widgetId||this.id)+" running custom onLoad code: "+e.message);}},_onUnloadHandler:function(){this._set("isLoaded",false);try{this.onUnload();}catch(e){console.error("Error "+this.widgetId+" running custom onUnload code: "+e.message);}},destroyDescendants:function(_82f){if(this.isLoaded){this._onUnloadHandler();}var _830=this._contentSetter;_823.forEach(this.getChildren(),function(_831){if(_831.destroyRecursive){_831.destroyRecursive(_82f);}else{if(_831.destroy){_831.destroy(_82f);}}_831._destroyed=true;});if(_830){_823.forEach(_830.parseResults,function(_832){if(!_832._destroyed){if(_832.destroyRecursive){_832.destroyRecursive(_82f);}else{if(_832.destroy){_832.destroy(_82f);}}_832._destroyed=true;}});delete _830.parseResults;}if(!_82f){_827.empty(this.containerNode);}delete this._singleChild;},_setContent:function(cont,_833){cont=this.preprocessContent(cont);this.destroyDescendants();var _834=this._contentSetter;if(!(_834&&_834 instanceof html._ContentSetter)){_834=this._contentSetter=new html._ContentSetter({node:this.containerNode,_onError:lang.hitch(this,this._onError),onContentError:lang.hitch(this,function(e){var _835=this.onContentError(e);try{this.containerNode.innerHTML=_835;}catch(e){console.error("Fatal "+this.id+" could not change content due to "+e.message,e);}})});}var _836=lang.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:!cont.domNode&&this.parseOnLoad,parserScope:this.parserScope,startup:false,dir:this.dir,lang:this.lang,textDir:this.textDir},this._contentSetterParams||{});var p=_834.set((lang.isObject(cont)&&cont.domNode)?cont.domNode:cont,_836);var self=this;return when(p&&p.then?p:_834.parseDeferred,function(){delete self._contentSetterParams;if(!_833){if(self._started){self._startChildren();self._scheduleLayout();}self._onLoadHandler(cont);}});},preprocessContent:function(_837){return _837;},_onError:function(type,err,_838){this.onLoadDeferred.reject(err);var _839=this["on"+type+"Error"].call(this,err);if(_838){console.error(_838,err);}else{if(_839){this._setContent(_839,true);}}},onLoad:function(){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage;},onContentError:function(){},onDownloadError:function(){return this.errorMessage;},onDownloadEnd:function(){}});});},"dijit/_KeyNavContainer":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/_base/kernel","dojo/keys","dojo/_base/lang","./registry","./_Container","./_FocusMixin","./_KeyNavMixin"],function(_83a,_83b,_83c,_83d,keys,lang,_83e,_83f,_840,_841){return _83b("dijit._KeyNavContainer",[_840,_841,_83f],{connectKeyNavHandlers:function(_842,_843){var _844=(this._keyNavCodes={});var prev=lang.hitch(this,"focusPrev");var next=lang.hitch(this,"focusNext");_83a.forEach(_842,function(code){_844[code]=prev;});_83a.forEach(_843,function(code){_844[code]=next;});_844[keys.HOME]=lang.hitch(this,"focusFirstChild");_844[keys.END]=lang.hitch(this,"focusLastChild");},startupKeyNavChildren:function(){_83d.deprecated("startupKeyNavChildren() call no longer needed","","2.0");},startup:function(){this.inherited(arguments);_83a.forEach(this.getChildren(),lang.hitch(this,"_startupChild"));},addChild:function(_845,_846){this.inherited(arguments);this._startupChild(_845);},_startupChild:function(_847){_847.set("tabIndex","-1");},_getFirst:function(){var _848=this.getChildren();return _848.length?_848[0]:null;},_getLast:function(){var _849=this.getChildren();return _849.length?_849[_849.length-1]:null;},focusNext:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,1));},focusPrev:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,-1),true);},childSelector:function(node){var node=_83e.byNode(node);return node&&node.getParent()==this;}});});},"dijit/layout/utils":function(){define(["dojo/_base/array","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang"],function(_84a,_84b,_84c,_84d,lang){function _84e(word){return word.substring(0,1).toUpperCase()+word.substring(1);};function size(_84f,dim){var _850=_84f.resize?_84f.resize(dim):_84c.setMarginBox(_84f.domNode,dim);if(_850){lang.mixin(_84f,_850);}else{lang.mixin(_84f,_84c.getMarginBox(_84f.domNode));lang.mixin(_84f,dim);}};var _851={marginBox2contentBox:function(node,mb){var cs=_84d.getComputedStyle(node);var me=_84c.getMarginExtents(node,cs);var pb=_84c.getPadBorderExtents(node,cs);return {l:_84d.toPixelValue(node,cs.paddingLeft),t:_84d.toPixelValue(node,cs.paddingTop),w:mb.w-(me.w+pb.w),h:mb.h-(me.h+pb.h)};},layoutChildren:function(_852,dim,_853,_854,_855){dim=lang.mixin({},dim);_84b.add(_852,"dijitLayoutContainer");_853=_84a.filter(_853,function(item){return item.region!="center"&&item.layoutAlign!="client";}).concat(_84a.filter(_853,function(item){return item.region=="center"||item.layoutAlign=="client";}));_84a.forEach(_853,function(_856){var elm=_856.domNode,pos=(_856.region||_856.layoutAlign);if(!pos){throw new Error("No region setting for "+_856.id);}var _857=elm.style;_857.left=dim.l+"px";_857.top=dim.t+"px";_857.position="absolute";_84b.add(elm,"dijitAlign"+_84e(pos));var _858={};if(_854&&_854==_856.id){_858[_856.region=="top"||_856.region=="bottom"?"h":"w"]=_855;}if(pos=="leading"){pos=_856.isLeftToRight()?"left":"right";}if(pos=="trailing"){pos=_856.isLeftToRight()?"right":"left";}if(pos=="top"||pos=="bottom"){_858.w=dim.w;size(_856,_858);dim.h-=_856.h;if(pos=="top"){dim.t+=_856.h;}else{_857.top=dim.t+dim.h+"px";}}else{if(pos=="left"||pos=="right"){_858.h=dim.h;size(_856,_858);dim.w-=_856.w;if(pos=="left"){dim.l+=_856.w;}else{_857.left=dim.l+dim.w+"px";}}else{if(pos=="client"||pos=="center"){size(_856,dim);}}}});}};lang.setObject("dijit.layout.utils",_851);return _851;});},"dijit/_Contained":function(){define(["dojo/_base/declare","./registry"],function(_859,_85a){return _859("dijit._Contained",null,{_getSibling:function(_85b){var p=this.getParent();return (p&&p._getSiblingOfChild&&p._getSiblingOfChild(this,_85b=="previous"?-1:1))||null;},getPreviousSibling:function(){return this._getSibling("previous");},getNextSibling:function(){return this._getSibling("next");},getIndexInParent:function(){var p=this.getParent();if(!p||!p.getIndexOfChild){return -1;}return p.getIndexOfChild(this);}});});},"dijit/form/DataList":function(){define(["dojo/_base/declare","dojo/dom","dojo/_base/lang","dojo/query","dojo/store/Memory","../registry"],function(_85c,dom,lang,_85d,_85e,_85f){function _860(_861){return {id:_861.value,value:_861.value,name:lang.trim(_861.innerText||_861.textContent||"")};};return _85c("dijit.form.DataList",_85e,{constructor:function(_862,_863){this.domNode=dom.byId(_863);lang.mixin(this,_862);if(this.id){_85f.add(this);}this.domNode.style.display="none";this.inherited(arguments,[{data:_85d("option",this.domNode).map(_860)}]);},destroy:function(){_85f.remove(this.id);},fetchSelectedItem:function(){var _864=_85d("> option[selected]",this.domNode)[0]||_85d("> option",this.domNode)[0];return _864&&_860(_864);}});});},"dijit/form/CheckBox":function(){define(["require","dojo/_base/declare","dojo/dom-attr","dojo/has","dojo/query","dojo/ready","./ToggleButton","./_CheckBoxMixin","dojo/text!./templates/CheckBox.html","dojo/NodeList-dom","../a11yclick"],function(_865,_866,_867,has,_868,_869,_86a,_86b,_86c){if(has("dijit-legacy-requires")){_869(0,function(){var _86d=["dijit/form/RadioButton"];_865(_86d);});}return _866("dijit.form.CheckBox",[_86a,_86b],{templateString:_86c,baseClass:"dijitCheckBox",_setValueAttr:function(_86e,_86f){if(typeof _86e=="string"){this.inherited(arguments);_86e=true;}if(this._created){this.set("checked",_86e,_86f);}},_getValueAttr:function(){return this.checked&&this._get("value");},_setIconClassAttr:null,_setNameAttr:"focusNode",postMixInProperties:function(){this.inherited(arguments);this.checkedAttrSetting="";},_fillContent:function(){},_onFocus:function(){if(this.id){_868("label[for='"+this.id+"']").addClass("dijitFocusedLabel");}this.inherited(arguments);},_onBlur:function(){if(this.id){_868("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");}this.inherited(arguments);}});});},"dijit/tree/_dndSelector":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/dnd/common","dojo/dom","dojo/mouse","dojo/on","dojo/touch","../a11yclick","./_dndContainer"],function(_870,_871,_872,lang,_873,dom,_874,on,_875,_876,_877){return _871("dijit.tree._dndSelector",_877,{constructor:function(){this.selection={};this.anchor=null;this.events.push(on(this.tree.domNode,_875.press,lang.hitch(this,"onMouseDown")),on(this.tree.domNode,_875.release,lang.hitch(this,"onMouseUp")),on(this.tree.domNode,_875.move,lang.hitch(this,"onMouseMove")),on(this.tree.domNode,_876.press,lang.hitch(this,"onClickPress")),on(this.tree.domNode,_876.release,lang.hitch(this,"onClickRelease")));},singular:false,getSelectedTreeNodes:function(){var _878=[],sel=this.selection;for(var i in sel){_878.push(sel[i]);}return _878;},selectNone:function(){this.setSelection([]);return this;},destroy:function(){this.inherited(arguments);this.selection=this.anchor=null;},addTreeNode:function(node,_879){this.setSelection(this.getSelectedTreeNodes().concat([node]));if(_879){this.anchor=node;}return node;},removeTreeNode:function(node){var _87a=_870.filter(this.getSelectedTreeNodes(),function(_87b){return !dom.isDescendant(_87b.domNode,node.domNode);});this.setSelection(_87a);return node;},isTreeNodeSelected:function(node){return node.id&&!!this.selection[node.id];},setSelection:function(_87c){var _87d=this.getSelectedTreeNodes();_870.forEach(this._setDifference(_87d,_87c),lang.hitch(this,function(node){node.setSelected(false);if(this.anchor==node){delete this.anchor;}delete this.selection[node.id];}));_870.forEach(this._setDifference(_87c,_87d),lang.hitch(this,function(node){node.setSelected(true);this.selection[node.id]=node;}));this._updateSelectionProperties();},_setDifference:function(xs,ys){_870.forEach(ys,function(y){y.__exclude__=true;});var ret=_870.filter(xs,function(x){return !x.__exclude__;});_870.forEach(ys,function(y){delete y["__exclude__"];});return ret;},_updateSelectionProperties:function(){var _87e=this.getSelectedTreeNodes();var _87f=[],_880=[];_870.forEach(_87e,function(node){var ary=node.getTreePath();_880.push(node);_87f.push(ary);},this);var _881=_870.map(_880,function(node){return node.item;});this.tree._set("paths",_87f);this.tree._set("path",_87f[0]||[]);this.tree._set("selectedNodes",_880);this.tree._set("selectedNode",_880[0]||null);this.tree._set("selectedItems",_881);this.tree._set("selectedItem",_881[0]||null);},onClickPress:function(e){if(this.current&&this.current.isExpandable&&this.tree.isExpandoNode(e.target,this.current)){return;}if(e.type=="mousedown"&&_874.isLeft(e)){e.preventDefault();}var _882=e.type=="keydown"?this.tree.focusedChild:this.current;if(!_882){return;}var copy=_873.getCopyKeyState(e),id=_882.id;if(!this.singular&&!e.shiftKey&&this.selection[id]){this._doDeselect=true;return;}else{this._doDeselect=false;}this.userSelect(_882,copy,e.shiftKey);},onClickRelease:function(e){if(!this._doDeselect){return;}this._doDeselect=false;this.userSelect(e.type=="keyup"?this.tree.focusedChild:this.current,_873.getCopyKeyState(e),e.shiftKey);},onMouseMove:function(){this._doDeselect=false;},onMouseDown:function(){},onMouseUp:function(){},_compareNodes:function(n1,n2){if(n1===n2){return 0;}if("sourceIndex" in document.documentElement){return n1.sourceIndex-n2.sourceIndex;}else{if("compareDocumentPosition" in document.documentElement){return n1.compareDocumentPosition(n2)&2?1:-1;}else{if(document.createRange){var r1=doc.createRange();r1.setStartBefore(n1);var r2=doc.createRange();r2.setStartBefore(n2);return r1.compareBoundaryPoints(r1.END_TO_END,r2);}else{throw Error("dijit.tree._compareNodes don't know how to compare two different nodes in this browser");}}}},userSelect:function(node,_883,_884){if(this.singular){if(this.anchor==node&&_883){this.selectNone();}else{this.setSelection([node]);this.anchor=node;}}else{if(_884&&this.anchor){var cr=this._compareNodes(this.anchor.rowNode,node.rowNode),_885,end,_886=this.anchor;if(cr<0){_885=_886;end=node;}else{_885=node;end=_886;}var _887=[];while(_885!=end){_887.push(_885);_885=this.tree._getNext(_885);}_887.push(end);this.setSelection(_887);}else{if(this.selection[node.id]&&_883){this.removeTreeNode(node);}else{if(_883){this.addTreeNode(node,true);}else{this.setSelection([node]);this.anchor=node;}}}}},getItem:function(key){var _888=this.selection[key];return {data:_888,type:["treeNode"]};},forInSelectedItems:function(f,o){o=o||_872.global;for(var id in this.selection){f.call(o,this.getItem(id),id,this);}}});});},"dijit/_Container":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-construct","dojo/_base/kernel"],function(_889,_88a,_88b,_88c){return _88a("dijit._Container",null,{buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}},addChild:function(_88d,_88e){var _88f=this.containerNode;if(_88e>0){_88f=_88f.firstChild;while(_88e>0){if(_88f.nodeType==1){_88e--;}_88f=_88f.nextSibling;}if(_88f){_88e="before";}else{_88f=this.containerNode;_88e="last";}}_88b.place(_88d.domNode,_88f,_88e);if(this._started&&!_88d._started){_88d.startup();}},removeChild:function(_890){if(typeof _890=="number"){_890=this.getChildren()[_890];}if(_890){var node=_890.domNode;if(node&&node.parentNode){node.parentNode.removeChild(node);}}},hasChildren:function(){return this.getChildren().length>0;},_getSiblingOfChild:function(_891,dir){var _892=this.getChildren(),idx=_889.indexOf(_892,_891);return _892[idx+dir];},getIndexOfChild:function(_893){return _889.indexOf(this.getChildren(),_893);}});});},"dojo/data/ItemFileReadStore":function(){define(["../_base/kernel","../_base/lang","../_base/declare","../_base/array","../_base/xhr","../Evented","./util/filter","./util/simpleFetch","../date/stamp"],function(_894,lang,_895,_896,xhr,_897,_898,_899,_89a){var _89b=_895("dojo.data.ItemFileReadStore",[_897],{constructor:function(_89c){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_89c.url;this._ccUrl=_89c.url;this.url=_89c.url;this._jsonData=_89c.data;this.data=null;this._datatypeMap=_89c.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_89d){return _89a.fromISOString(_89d);}};}this._features={"dojo.data.api.Read":true,"dojo.data.api.Identity":true};this._itemsByIdentity=null;this._storeRefPropName="_S";this._itemNumPropName="_0";this._rootItemPropName="_RI";this._reverseRefMap="_RRM";this._loadInProgress=false;this._queuedFetches=[];if(_89c.urlPreventCache!==undefined){this.urlPreventCache=_89c.urlPreventCache?true:false;}if(_89c.hierarchical!==undefined){this.hierarchical=_89c.hierarchical?true:false;}if(_89c.clearOnClose){this.clearOnClose=true;}if("failOk" in _89c){this.failOk=_89c.failOk?true:false;}},url:"",_ccUrl:"",data:null,typeMap:null,clearOnClose:false,urlPreventCache:false,failOk:false,hierarchical:true,_assertIsItem:function(item){if(!this.isItem(item)){throw new Error(this.declaredClass+": Invalid item argument.");}},_assertIsAttribute:function(_89e){if(typeof _89e!=="string"){throw new Error(this.declaredClass+": Invalid attribute argument.");}},getValue:function(item,_89f,_8a0){var _8a1=this.getValues(item,_89f);return (_8a1.length>0)?_8a1[0]:_8a0;},getValues:function(item,_8a2){this._assertIsItem(item);this._assertIsAttribute(_8a2);return (item[_8a2]||[]).slice(0);},getAttributes:function(item){this._assertIsItem(item);var _8a3=[];for(var key in item){if((key!==this._storeRefPropName)&&(key!==this._itemNumPropName)&&(key!==this._rootItemPropName)&&(key!==this._reverseRefMap)){_8a3.push(key);}}return _8a3;},hasAttribute:function(item,_8a4){this._assertIsItem(item);this._assertIsAttribute(_8a4);return (_8a4 in item);},containsValue:function(item,_8a5,_8a6){var _8a7=undefined;if(typeof _8a6==="string"){_8a7=_898.patternToRegExp(_8a6,false);}return this._containsValue(item,_8a5,_8a6,_8a7);},_containsValue:function(item,_8a8,_8a9,_8aa){return _896.some(this.getValues(item,_8a8),function(_8ab){if(_8ab!==null&&!lang.isObject(_8ab)&&_8aa){if(_8ab.toString().match(_8aa)){return true;}}else{if(_8a9===_8ab){return true;}}});},isItem:function(_8ac){if(_8ac&&_8ac[this._storeRefPropName]===this){if(this._arrayOfAllItems[_8ac[this._itemNumPropName]]===_8ac){return true;}}return false;},isItemLoaded:function(_8ad){return this.isItem(_8ad);},loadItem:function(_8ae){this._assertIsItem(_8ae.item);},getFeatures:function(){return this._features;},getLabel:function(item){if(this._labelAttr&&this.isItem(item)){return this.getValue(item,this._labelAttr);}return undefined;},getLabelAttributes:function(item){if(this._labelAttr){return [this._labelAttr];}return null;},filter:function(_8af,_8b0,_8b1){var _8b2=[],i,key;if(_8af.query){var _8b3,_8b4=_8af.queryOptions?_8af.queryOptions.ignoreCase:false;var _8b5={};for(key in _8af.query){_8b3=_8af.query[key];if(typeof _8b3==="string"){_8b5[key]=_898.patternToRegExp(_8b3,_8b4);}else{if(_8b3 instanceof RegExp){_8b5[key]=_8b3;}}}for(i=0;i<_8b0.length;++i){var _8b6=true;var _8b7=_8b0[i];if(_8b7===null){_8b6=false;}else{for(key in _8af.query){_8b3=_8af.query[key];if(!this._containsValue(_8b7,key,_8b3,_8b5[key])){_8b6=false;}}}if(_8b6){_8b2.push(_8b7);}}_8b1(_8b2,_8af);}else{for(i=0;i<_8b0.length;++i){var item=_8b0[i];if(item!==null){_8b2.push(item);}}_8b1(_8b2,_8af);}},_fetchItems:function(_8b8,_8b9,_8ba){var self=this;if(this._loadFinished){this.filter(_8b8,this._getItemsArray(_8b8.queryOptions),_8b9);}else{if(this._jsonFileUrl!==this._ccUrl){_894.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_8b8,filter:lang.hitch(self,"filter"),findCallback:lang.hitch(self,_8b9)});}else{this._loadInProgress=true;var _8bb={url:self._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _8bc=xhr.get(_8bb);_8bc.addCallback(function(data){try{self._getItemsFromLoadedData(data);self._loadFinished=true;self._loadInProgress=false;self.filter(_8b8,self._getItemsArray(_8b8.queryOptions),_8b9);self._handleQueuedFetches();}catch(e){self._loadFinished=true;self._loadInProgress=false;_8ba(e,_8b8);}});_8bc.addErrback(function(_8bd){self._loadInProgress=false;_8ba(_8bd,_8b8);});var _8be=null;if(_8b8.abort){_8be=_8b8.abort;}_8b8.abort=function(){var df=_8bc;if(df&&df.fired===-1){df.cancel();df=null;}if(_8be){_8be.call(_8b8);}};}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;self.filter(_8b8,this._getItemsArray(_8b8.queryOptions),_8b9);}catch(e){_8ba(e,_8b8);}}else{_8ba(new Error(this.declaredClass+": No JSON source data was provided as either URL or a nested Javascript object."),_8b8);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i<this._queuedFetches.length;i++){var _8bf=this._queuedFetches[i],_8c0=_8bf.args,_8c1=_8bf.filter,_8c2=_8bf.findCallback;if(_8c1){_8c1(_8c0,this._getItemsArray(_8c0.queryOptions),_8c2);}else{this.fetchItemByIdentity(_8c0);}}this._queuedFetches=[];}},_getItemsArray:function(_8c3){if(_8c3&&_8c3.deep){return this._arrayOfAllItems;}return this._arrayOfTopLevelItems;},close:function(_8c4){if(this.clearOnClose&&this._loadFinished&&!this._loadInProgress){if(((this._jsonFileUrl==""||this._jsonFileUrl==null)&&(this.url==""||this.url==null))&&this.data==null){}this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._itemsByIdentity=null;this._loadInProgress=false;this._queuedFetches=[];}},_getItemsFromLoadedData:function(_8c5){var _8c6=false,self=this;function _8c7(_8c8){return (_8c8!==null)&&(typeof _8c8==="object")&&(!lang.isArray(_8c8)||_8c6)&&(!lang.isFunction(_8c8))&&(_8c8.constructor==Object||lang.isArray(_8c8))&&(typeof _8c8._reference==="undefined")&&(typeof _8c8._type==="undefined")&&(typeof _8c8._value==="undefined")&&self.hierarchical;};function _8c9(_8ca){self._arrayOfAllItems.push(_8ca);for(var _8cb in _8ca){var _8cc=_8ca[_8cb];if(_8cc){if(lang.isArray(_8cc)){var _8cd=_8cc;for(var k=0;k<_8cd.length;++k){var _8ce=_8cd[k];if(_8c7(_8ce)){_8c9(_8ce);}}}else{if(_8c7(_8cc)){_8c9(_8cc);}}}}};this._labelAttr=_8c5.label;var i,item;this._arrayOfAllItems=[];this._arrayOfTopLevelItems=_8c5.items;for(i=0;i<this._arrayOfTopLevelItems.length;++i){item=this._arrayOfTopLevelItems[i];if(lang.isArray(item)){_8c6=true;}_8c9(item);item[this._rootItemPropName]=true;}var _8cf={},key;for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];for(key in item){if(key!==this._rootItemPropName){var _8d0=item[key];if(_8d0!==null){if(!lang.isArray(_8d0)){item[key]=[_8d0];}}else{item[key]=[null];}}_8cf[key]=key;}}while(_8cf[this._storeRefPropName]){this._storeRefPropName+="_";}while(_8cf[this._itemNumPropName]){this._itemNumPropName+="_";}while(_8cf[this._reverseRefMap]){this._reverseRefMap+="_";}var _8d1;var _8d2=_8c5.identifier;if(_8d2){this._itemsByIdentity={};this._features["dojo.data.api.Identity"]=_8d2;for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];_8d1=item[_8d2];var _8d3=_8d1[0];if(!Object.hasOwnProperty.call(this._itemsByIdentity,_8d3)){this._itemsByIdentity[_8d3]=item;}else{if(this._jsonFileUrl){throw new Error(this.declaredClass+": The json data as specified by: ["+this._jsonFileUrl+"] is malformed. Items within the list have identifier: ["+_8d2+"]. Value collided: ["+_8d3+"]");}else{if(this._jsonData){throw new Error(this.declaredClass+": The json data provided by the creation arguments is malformed. Items within the list have identifier: ["+_8d2+"]. Value collided: ["+_8d3+"]");}}}}}else{this._features["dojo.data.api.Identity"]=Number;}for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];item[this._storeRefPropName]=this;item[this._itemNumPropName]=i;}for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];for(key in item){_8d1=item[key];for(var j=0;j<_8d1.length;++j){_8d0=_8d1[j];if(_8d0!==null&&typeof _8d0=="object"){if(("_type" in _8d0)&&("_value" in _8d0)){var type=_8d0._type;var _8d4=this._datatypeMap[type];if(!_8d4){throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '"+type+"'");}else{if(lang.isFunction(_8d4)){_8d1[j]=new _8d4(_8d0._value);}else{if(lang.isFunction(_8d4.deserialize)){_8d1[j]=_8d4.deserialize(_8d0._value);}else{throw new Error("dojo.data.ItemFileReadStore: Value provided in typeMap was neither a constructor, nor a an object with a deserialize function");}}}}if(_8d0._reference){var _8d5=_8d0._reference;if(!lang.isObject(_8d5)){_8d1[j]=this._getItemByIdentity(_8d5);}else{for(var k=0;k<this._arrayOfAllItems.length;++k){var _8d6=this._arrayOfAllItems[k],_8d7=true;for(var _8d8 in _8d5){if(_8d6[_8d8]!=_8d5[_8d8]){_8d7=false;}}if(_8d7){_8d1[j]=_8d6;}}}if(this.referenceIntegrity){var _8d9=_8d1[j];if(this.isItem(_8d9)){this._addReferenceToMap(_8d9,item,key);}}}else{if(this.isItem(_8d0)){if(this.referenceIntegrity){this._addReferenceToMap(_8d0,item,key);}}}}}}}},_addReferenceToMap:function(_8da,_8db,_8dc){},getIdentity:function(item){var _8dd=this._features["dojo.data.api.Identity"];if(_8dd===Number){return item[this._itemNumPropName];}else{var _8de=item[_8dd];if(_8de){return _8de[0];}}return null;},fetchItemByIdentity:function(_8df){var item,_8e0;if(!this._loadFinished){var self=this;if(this._jsonFileUrl!==this._ccUrl){_894.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null&&this._jsonData==null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_8df});}else{this._loadInProgress=true;var _8e1={url:self._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _8e2=xhr.get(_8e1);_8e2.addCallback(function(data){var _8e3=_8df.scope?_8df.scope:_894.global;try{self._getItemsFromLoadedData(data);self._loadFinished=true;self._loadInProgress=false;item=self._getItemByIdentity(_8df.identity);if(_8df.onItem){_8df.onItem.call(_8e3,item);}self._handleQueuedFetches();}catch(error){self._loadInProgress=false;if(_8df.onError){_8df.onError.call(_8e3,error);}}});_8e2.addErrback(function(_8e4){self._loadInProgress=false;if(_8df.onError){var _8e5=_8df.scope?_8df.scope:_894.global;_8df.onError.call(_8e5,_8e4);}});}}else{if(this._jsonData){self._getItemsFromLoadedData(self._jsonData);self._jsonData=null;self._loadFinished=true;item=self._getItemByIdentity(_8df.identity);if(_8df.onItem){_8e0=_8df.scope?_8df.scope:_894.global;_8df.onItem.call(_8e0,item);}}}}else{item=this._getItemByIdentity(_8df.identity);if(_8df.onItem){_8e0=_8df.scope?_8df.scope:_894.global;_8df.onItem.call(_8e0,item);}}},_getItemByIdentity:function(_8e6){var item=null;if(this._itemsByIdentity){if(Object.hasOwnProperty.call(this._itemsByIdentity,_8e6)){item=this._itemsByIdentity[_8e6];}}else{if(Object.hasOwnProperty.call(this._arrayOfAllItems,_8e6)){item=this._arrayOfAllItems[_8e6];}}if(item===undefined){item=null;}return item;},getIdentityAttributes:function(item){var _8e7=this._features["dojo.data.api.Identity"];if(_8e7===Number){return null;}else{return [_8e7];}},_forceLoad:function(){var self=this;if(this._jsonFileUrl!==this._ccUrl){_894.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){var _8e8={url:this._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk,sync:true};var _8e9=xhr.get(_8e8);_8e9.addCallback(function(data){try{if(self._loadInProgress!==true&&!self._loadFinished){self._getItemsFromLoadedData(data);self._loadFinished=true;}else{if(self._loadInProgress){throw new Error(this.declaredClass+": Unable to perform a synchronous load, an async load is in progress.");}}}catch(e){throw e;}});_8e9.addErrback(function(_8ea){throw _8ea;});}else{if(this._jsonData){self._getItemsFromLoadedData(self._jsonData);self._jsonData=null;self._loadFinished=true;}}}});lang.extend(_89b,_899);return _89b;});},"dojo/html":function(){define(["./_base/kernel","./_base/lang","./_base/array","./_base/declare","./dom","./dom-construct","./parser"],function(_8eb,lang,_8ec,_8ed,dom,_8ee,_8ef){var _8f0=0;var html={_secureForInnerHtml:function(cont){return cont.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"");},_emptyNode:_8ee.empty,_setNodeContent:function(node,cont){_8ee.empty(node);if(cont){if(typeof cont=="number"){cont=cont.toString();}if(typeof cont=="string"){cont=_8ee.toDom(cont,node.ownerDocument);}if(!cont.nodeType&&lang.isArrayLike(cont)){for(var _8f1=cont.length,i=0;i<cont.length;i=_8f1==cont.length?i+1:0){_8ee.place(cont[i],node,"last");}}else{_8ee.place(cont,node,"last");}}return node;},_ContentSetter:_8ed("dojo.html._ContentSetter",null,{node:"",content:"",id:"",cleanContent:false,extractContent:false,parseContent:false,parserScope:_8eb._scopeName,startup:true,constructor:function(_8f2,node){lang.mixin(this,_8f2||{});node=this.node=dom.byId(this.node||node);if(!this.id){this.id=["Setter",(node)?node.id||node.tagName:"",_8f0++].join("_");}},set:function(cont,_8f3){if(undefined!==cont){this.content=cont;}if(typeof cont=="number"){cont=cont.toString();}if(_8f3){this._mixin(_8f3);}this.onBegin();this.setContent();var ret=this.onEnd();if(ret&&ret.then){return ret;}else{return this.node;}},setContent:function(){var node=this.node;if(!node){throw new Error(this.declaredClass+": setContent given no node");}try{node=html._setNodeContent(node,this.content);}catch(e){var _8f4=this.onContentError(e);try{node.innerHTML=_8f4;}catch(e){console.error("Fatal "+this.declaredClass+".setContent could not change content due to "+e.message,e);}}this.node=node;},empty:function(){if(this.parseDeferred){if(!this.parseDeferred.isResolved()){this.parseDeferred.cancel();}delete this.parseDeferred;}if(this.parseResults&&this.parseResults.length){_8ec.forEach(this.parseResults,function(w){if(w.destroy){w.destroy();}});delete this.parseResults;}_8ee.empty(this.node);},onBegin:function(){var cont=this.content;if(lang.isString(cont)){if(this.cleanContent){cont=html._secureForInnerHtml(cont);}if(this.extractContent){var _8f5=cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_8f5){cont=_8f5[1];}}}this.empty();this.content=cont;return this.node;},onEnd:function(){if(this.parseContent){this._parse();}return this.node;},tearDown:function(){delete this.parseResults;delete this.parseDeferred;delete this.node;delete this.content;},onContentError:function(err){return "Error occurred setting content: "+err;},onExecError:function(err){return "Error occurred executing scripts: "+err;},_mixin:function(_8f6){var _8f7={},key;for(key in _8f6){if(key in _8f7){continue;}this[key]=_8f6[key];}},_parse:function(){var _8f8=this.node;try{var _8f9={};_8ec.forEach(["dir","lang","textDir"],function(name){if(this[name]){_8f9[name]=this[name];}},this);var self=this;this.parseDeferred=_8ef.parse({rootNode:_8f8,noStart:!this.startup,inherited:_8f9,scope:this.parserScope}).then(function(_8fa){return self.parseResults=_8fa;},function(e){self._onError("Content",e,"Error parsing in _ContentSetter#"+self.id);});}catch(e){this._onError("Content",e,"Error parsing in _ContentSetter#"+this.id);}},_onError:function(type,err,_8fb){var _8fc=this["on"+type+"Error"].call(this,err);if(_8fb){console.error(_8fb,err);}else{if(_8fc){html._setNodeContent(this.node,_8fc,true);}}}}),set:function(node,cont,_8fd){if(undefined==cont){console.warn("dojo.html.set: no cont argument provided, using empty string");cont="";}if(typeof cont=="number"){cont=cont.toString();}if(!_8fd){return html._setNodeContent(node,cont,true);}else{var op=new html._ContentSetter(lang.mixin(_8fd,{content:cont,node:node}));return op.set();}}};lang.setObject("dojo.html",html);return html;});},"dijit/_PaletteMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/keys","dojo/_base/lang","dojo/on","./_CssStateMixin","./a11yclick","./focus","./typematic"],function(_8fe,_8ff,_900,_901,keys,lang,on,_902,_903,_904,_905){var _906=_8fe("dijit._PaletteMixin",_902,{defaultTimeout:500,timeoutChangeRate:0.9,value:"",_selectedCell:-1,tabIndex:"0",cellClass:"dijitPaletteCell",dyeClass:null,_dyeFactory:function(_907){var _908=typeof this.dyeClass=="string"?lang.getObject(this.dyeClass):this.dyeClass;return new _908(_907);},_preparePalette:function(_909,_90a){this._cells=[];var url=this._blankGif;this.own(on(this.gridNode,_903,lang.hitch(this,"_onCellClick")));for(var row=0;row<_909.length;row++){var _90b=_901.create("tr",{tabIndex:"-1",role:"row"},this.gridNode);for(var col=0;col<_909[row].length;col++){var _90c=_909[row][col];if(_90c){var _90d=this._dyeFactory(_90c,row,col,_90a[_90c]);var _90e=_901.create("td",{"class":this.cellClass,tabIndex:"-1",title:_90a[_90c],role:"gridcell"},_90b);_90d.fillCell(_90e,url);_90e.idx=this._cells.length;this._cells.push({node:_90e,dye:_90d});}}}this._xDim=_909[0].length;this._yDim=_909.length;var _90f={UP_ARROW:-this._xDim,DOWN_ARROW:this._xDim,RIGHT_ARROW:this.isLeftToRight()?1:-1,LEFT_ARROW:this.isLeftToRight()?-1:1};for(var key in _90f){this.own(_905.addKeyListener(this.domNode,{keyCode:keys[key],ctrlKey:false,altKey:false,shiftKey:false},this,function(){var _910=_90f[key];return function(_911){this._navigateByKey(_910,_911);};}(),this.timeoutChangeRate,this.defaultTimeout));}},postCreate:function(){this.inherited(arguments);this._setCurrent(this._cells[0].node);},focus:function(){_904.focus(this._currentFocus);},_onCellClick:function(evt){var _912=evt.target;while(_912.tagName!="TD"){if(!_912.parentNode||_912==this.gridNode){return;}_912=_912.parentNode;}var _913=this._getDye(_912).getValue();this._setCurrent(_912);_904.focus(_912);this._setValueAttr(_913,true);evt.stopPropagation();evt.preventDefault();},_setCurrent:function(node){if("_currentFocus" in this){_8ff.set(this._currentFocus,"tabIndex","-1");}this._currentFocus=node;if(node){_8ff.set(node,"tabIndex",this.tabIndex);}},_setValueAttr:function(_914,_915){if(this._selectedCell>=0){_900.remove(this._cells[this._selectedCell].node,this.cellClass+"Selected");}this._selectedCell=-1;if(_914){for(var i=0;i<this._cells.length;i++){if(_914==this._cells[i].dye.getValue()){this._selectedCell=i;_900.add(this._cells[i].node,this.cellClass+"Selected");break;}}}this._set("value",this._selectedCell>=0?_914:null);if(_915||_915===undefined){this.onChange(_914);}},onChange:function(){},_navigateByKey:function(_916,_917){if(_917==-1){return;}var _918=this._currentFocus.idx+_916;if(_918<this._cells.length&&_918>-1){var _919=this._cells[_918].node;this._setCurrent(_919);this.defer(lang.hitch(_904,"focus",_919));}},_getDye:function(cell){return this._cells[cell.idx].dye;}});return _906;});},"dijit/form/ValidationTextBox":function(){define(["dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/i18n","./TextBox","../Tooltip","dojo/text!./templates/ValidationTextBox.html","dojo/i18n!./nls/validate"],function(_91a,_91b,lang,i18n,_91c,_91d,_91e){var _91f=_91a("dijit.form.ValidationTextBox",_91c,{templateString:_91e,required:false,promptMessage:"",invalidMessage:"$_unset_$",missingMessage:"$_unset_$",message:"",constraints:{},pattern:".*",regExp:"",regExpGen:function(){},state:"",tooltipPosition:[],_deprecateRegExp:function(attr,_920){if(_920!=_91f.prototype[attr]){_91b.deprecated("ValidationTextBox id="+this.id+", set('"+attr+"', ...) is deprecated. Use set('pattern', ...) instead.","","2.0");this.set("pattern",_920);}},_setRegExpGenAttr:function(_921){this._deprecateRegExp("regExpGen",_921);this._set("regExpGen",this._computeRegexp);},_setRegExpAttr:function(_922){this._deprecateRegExp("regExp",_922);},_setValueAttr:function(){this.inherited(arguments);this._refreshState();},validator:function(_923,_924){return (new RegExp("^(?:"+this._computeRegexp(_924)+")"+(this.required?"":"?")+"$")).test(_923)&&(!this.required||!this._isEmpty(_923))&&(this._isEmpty(_923)||this.parse(_923,_924)!==undefined);},_isValidSubset:function(){return this.textbox.value.search(this._partialre)==0;},isValid:function(){return this.validator(this.textbox.value,this.get("constraints"));},_isEmpty:function(_925){return (this.trim?/^\s*$/:/^$/).test(_925);},getErrorMessage:function(){var _926=this.invalidMessage=="$_unset_$"?this.messages.invalidMessage:!this.invalidMessage?this.promptMessage:this.invalidMessage;var _927=this.missingMessage=="$_unset_$"?this.messages.missingMessage:!this.missingMessage?_926:this.missingMessage;return (this.required&&this._isEmpty(this.textbox.value))?_927:_926;},getPromptMessage:function(){return this.promptMessage;},_maskValidSubsetError:true,validate:function(_928){var _929="";var _92a=this.disabled||this.isValid(_928);if(_92a){this._maskValidSubsetError=true;}var _92b=this._isEmpty(this.textbox.value);var _92c=!_92a&&_928&&this._isValidSubset();this._set("state",_92a?"":(((((!this._hasBeenBlurred||_928)&&_92b)||_92c)&&(this._maskValidSubsetError||(_92c&&!this._hasBeenBlurred&&_928)))?"Incomplete":"Error"));this.focusNode.setAttribute("aria-invalid",this.state=="Error"?"true":"false");if(this.state=="Error"){this._maskValidSubsetError=_928&&_92c;_929=this.getErrorMessage(_928);}else{if(this.state=="Incomplete"){_929=this.getPromptMessage(_928);this._maskValidSubsetError=!this._hasBeenBlurred||_928;}else{if(_92b){_929=this.getPromptMessage(_928);}}}this.set("message",_929);return _92a;},displayMessage:function(_92d){if(_92d&&this.focused){_91d.show(_92d,this.domNode,this.tooltipPosition,!this.isLeftToRight());}else{_91d.hide(this.domNode);}},_refreshState:function(){if(this._created){this.validate(this.focused);}this.inherited(arguments);},constructor:function(_92e){this.constraints=lang.clone(this.constraints);this.baseClass+=" dijitValidationTextBox";},startup:function(){this.inherited(arguments);this._refreshState();},_setConstraintsAttr:function(_92f){if(!_92f.locale&&this.lang){_92f.locale=this.lang;}this._set("constraints",_92f);this._refreshState();},_setPatternAttr:function(_930){this._set("pattern",_930);this._refreshState();},_computeRegexp:function(_931){var p=this.pattern;if(typeof p=="function"){p=p.call(this,_931);}if(p!=this._lastRegExp){var _932="";this._lastRegExp=p;if(p!=".*"){p.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,function(re){switch(re.charAt(0)){case "{":case "+":case "?":case "*":case "^":case "$":case "|":case "(":_932+=re;break;case ")":_932+="|$)";break;default:_932+="(?:"+re+"|$)";break;}});}try{"".search(_932);}catch(e){_932=this.pattern;console.warn("RegExp error in "+this.declaredClass+": "+this.pattern);}this._partialre="^(?:"+_932+")$";}return p;},postMixInProperties:function(){this.inherited(arguments);this.messages=i18n.getLocalization("dijit.form","validate",this.lang);this._setConstraintsAttr(this.constraints);},_setDisabledAttr:function(_933){this.inherited(arguments);this._refreshState();},_setRequiredAttr:function(_934){this._set("required",_934);this.focusNode.setAttribute("aria-required",_934);this._refreshState();},_setMessageAttr:function(_935){this._set("message",_935);this.displayMessage(_935);},reset:function(){this._maskValidSubsetError=true;this.inherited(arguments);},_onBlur:function(){this.displayMessage("");this.inherited(arguments);},destroy:function(){_91d.hide(this.domNode);this.inherited(arguments);}});return _91f;});},"dijit/selection":function(){define(["dojo/_base/array","dojo/dom","dojo/_base/lang","dojo/sniff","dojo/_base/window","dijit/focus"],function(_936,dom,lang,has,_937,_938){var _939=function(win){var doc=win.document;this.getType=function(){if(doc.getSelection){var _93a="text";var oSel;try{oSel=win.getSelection();}catch(e){}if(oSel&&oSel.rangeCount==1){var _93b=oSel.getRangeAt(0);if((_93b.startContainer==_93b.endContainer)&&((_93b.endOffset-_93b.startOffset)==1)&&(_93b.startContainer.nodeType!=3)){_93a="control";}}return _93a;}else{return doc.selection.type.toLowerCase();}};this.getSelectedText=function(){if(doc.getSelection){var _93c=win.getSelection();return _93c?_93c.toString():"";}else{if(this.getType()=="control"){return null;}return doc.selection.createRange().text;}};this.getSelectedHtml=function(){if(doc.getSelection){var _93d=win.getSelection();if(_93d&&_93d.rangeCount){var i;var html="";for(i=0;i<_93d.rangeCount;i++){var frag=_93d.getRangeAt(i).cloneContents();var div=doc.createElement("div");div.appendChild(frag);html+=div.innerHTML;}return html;}return null;}else{if(this.getType()=="control"){return null;}return doc.selection.createRange().htmlText;}};this.getSelectedElement=function(){if(this.getType()=="control"){if(doc.getSelection){var _93e=win.getSelection();return _93e.anchorNode.childNodes[_93e.anchorOffset];}else{var _93f=doc.selection.createRange();if(_93f&&_93f.item){return doc.selection.createRange().item(0);}}}return null;};this.getParentElement=function(){if(this.getType()=="control"){var p=this.getSelectedElement();if(p){return p.parentNode;}}else{if(doc.getSelection){var _940=doc.getSelection();if(_940){var node=_940.anchorNode;while(node&&(node.nodeType!=1)){node=node.parentNode;}return node;}}else{var r=doc.selection.createRange();r.collapse(true);return r.parentElement();}}return null;};this.hasAncestorElement=function(_941){return this.getAncestorElement.apply(this,arguments)!=null;};this.getAncestorElement=function(_942){var node=this.getSelectedElement()||this.getParentElement();return this.getParentOfType(node,arguments);};this.isTag=function(node,tags){if(node&&node.tagName){var _943=node.tagName.toLowerCase();for(var i=0;i<tags.length;i++){var _944=String(tags[i]).toLowerCase();if(_943==_944){return _944;}}}return "";};this.getParentOfType=function(node,tags){while(node){if(this.isTag(node,tags).length){return node;}node=node.parentNode;}return null;};this.collapse=function(_945){if(doc.getSelection){var _946=win.getSelection();if(_946.removeAllRanges){if(_945){_946.collapseToStart();}else{_946.collapseToEnd();}}else{_946.collapse(_945);}}else{var _947=doc.selection.createRange();_947.collapse(_945);_947.select();}};this.remove=function(){var sel=doc.selection;if(doc.getSelection){sel=win.getSelection();sel.deleteFromDocument();return sel;}else{if(sel.type.toLowerCase()!="none"){sel.clear();}return sel;}};this.selectElementChildren=function(_948,_949){var _94a;_948=dom.byId(_948);if(doc.getSelection){var _94b=win.getSelection();if(has("opera")){if(_94b.rangeCount){_94a=_94b.getRangeAt(0);}else{_94a=doc.createRange();}_94a.setStart(_948,0);_94a.setEnd(_948,(_948.nodeType==3)?_948.length:_948.childNodes.length);_94b.addRange(_94a);}else{_94b.selectAllChildren(_948);}}else{_94a=_948.ownerDocument.body.createTextRange();_94a.moveToElementText(_948);if(!_949){try{_94a.select();}catch(e){}}}};this.selectElement=function(_94c,_94d){var _94e;_94c=dom.byId(_94c);if(doc.getSelection){var _94f=doc.getSelection();_94e=doc.createRange();if(_94f.removeAllRanges){if(has("opera")){if(_94f.getRangeAt(0)){_94e=_94f.getRangeAt(0);}}_94e.selectNode(_94c);_94f.removeAllRanges();_94f.addRange(_94e);}}else{try{var tg=_94c.tagName?_94c.tagName.toLowerCase():"";if(tg==="img"||tg==="table"){_94e=_937.body(doc).createControlRange();}else{_94e=_937.body(doc).createRange();}_94e.addElement(_94c);if(!_94d){_94e.select();}}catch(e){this.selectElementChildren(_94c,_94d);}}};this.inSelection=function(node){if(node){var _950;var _951;if(doc.getSelection){var sel=win.getSelection();if(sel&&sel.rangeCount>0){_951=sel.getRangeAt(0);}if(_951&&_951.compareBoundaryPoints&&doc.createRange){try{_950=doc.createRange();_950.setStart(node,0);if(_951.compareBoundaryPoints(_951.START_TO_END,_950)===1){return true;}}catch(e){}}}else{_951=doc.selection.createRange();try{_950=node.ownerDocument.body.createTextRange();_950.moveToElementText(node);}catch(e2){}if(_951&&_950){if(_951.compareEndPoints("EndToStart",_950)===1){return true;}}}}return false;};this.getBookmark=function(){var bm,rg,tg,sel=doc.selection,cf=_938.curNode;if(doc.getSelection){sel=win.getSelection();if(sel){if(sel.isCollapsed){tg=cf?cf.tagName:"";if(tg){tg=tg.toLowerCase();if(tg=="textarea"||(tg=="input"&&(!cf.type||cf.type.toLowerCase()=="text"))){sel={start:cf.selectionStart,end:cf.selectionEnd,node:cf,pRange:true};return {isCollapsed:(sel.end<=sel.start),mark:sel};}}bm={isCollapsed:true};if(sel.rangeCount){bm.mark=sel.getRangeAt(0).cloneRange();}}else{rg=sel.getRangeAt(0);bm={isCollapsed:false,mark:rg.cloneRange()};}}}else{if(sel){tg=cf?cf.tagName:"";tg=tg.toLowerCase();if(cf&&tg&&(tg=="button"||tg=="textarea"||tg=="input")){if(sel.type&&sel.type.toLowerCase()=="none"){return {isCollapsed:true,mark:null};}else{rg=sel.createRange();return {isCollapsed:rg.text&&rg.text.length?false:true,mark:{range:rg,pRange:true}};}}bm={};try{rg=sel.createRange();bm.isCollapsed=!(sel.type=="Text"?rg.htmlText.length:rg.length);}catch(e){bm.isCollapsed=true;return bm;}if(sel.type.toUpperCase()=="CONTROL"){if(rg.length){bm.mark=[];var i=0,len=rg.length;while(i<len){bm.mark.push(rg.item(i++));}}else{bm.isCollapsed=true;bm.mark=null;}}else{bm.mark=rg.getBookmark();}}else{console.warn("No idea how to store the current selection for this browser!");}}return bm;};this.moveToBookmark=function(_952){var mark=_952.mark;if(mark){if(doc.getSelection){var sel=win.getSelection();if(sel&&sel.removeAllRanges){if(mark.pRange){var n=mark.node;n.selectionStart=mark.start;n.selectionEnd=mark.end;}else{sel.removeAllRanges();sel.addRange(mark);}}else{console.warn("No idea how to restore selection for this browser!");}}else{if(doc.selection&&mark){var rg;if(mark.pRange){rg=mark.range;}else{if(lang.isArray(mark)){rg=doc.body.createControlRange();_936.forEach(mark,function(n){rg.addElement(n);});}else{rg=doc.body.createTextRange();rg.moveToBookmark(mark);}}rg.select();}}}};this.isCollapsed=function(){return this.getBookmark().isCollapsed;};};var _953=new _939(window);_953.SelectionManager=_939;return _953;});},"dijit/_base/typematic":function(){define(["../typematic"],function(){});},"dijit/layout/BorderContainer":function(){define(["dojo/_base/array","dojo/cookie","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/keys","dojo/_base/lang","dojo/on","dojo/touch","../_WidgetBase","../_Widget","../_TemplatedMixin","./LayoutContainer","./utils"],function(_954,_955,_956,_957,_958,_959,_95a,keys,lang,on,_95b,_95c,_95d,_95e,_95f,_960){var _961=_956("dijit.layout._Splitter",[_95d,_95e],{live:true,templateString:"<div class=\"dijitSplitter\" data-dojo-attach-event=\"onkeydown:_onKeyDown,press:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse\" tabIndex=\"0\" role=\"separator\"><div class=\"dijitSplitterThumb\"></div></div>",constructor:function(){this._handlers=[];},postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);this._factor=/top|left/.test(this.region)?1:-1;this._cookieName=this.container.id+"_"+this.region;},buildRendering:function(){this.inherited(arguments);_957.add(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));if(this.container.persist){var _962=_955(this._cookieName);if(_962){this.child.domNode.style[this.horizontal?"height":"width"]=_962;}}},_computeMaxSize:function(){var dim=this.horizontal?"h":"w",_963=_959.getMarginBox(this.child.domNode)[dim],_964=_954.filter(this.container.getChildren(),function(_965){return _965.region=="center";})[0];var _966=_959.getContentBox(_964.domNode)[dim]-10;return Math.min(this.child.maxSize,_963+_966);},_startDrag:function(e){if(!this.cover){this.cover=_958.place("<div class=dijitSplitterCover></div>",this.child.domNode,"after");}_957.add(this.cover,"dijitSplitterCoverActive");if(this.fake){_958.destroy(this.fake);}if(!(this._resize=this.live)){(this.fake=this.domNode.cloneNode(true)).removeAttribute("id");_957.add(this.domNode,"dijitSplitterShadow");_958.place(this.fake,this.domNode,"after");}_957.add(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active");if(this.fake){_957.remove(this.fake,"dijitSplitterHover dijitSplitter"+(this.horizontal?"H":"V")+"Hover");}var _967=this._factor,_968=this.horizontal,axis=_968?"pageY":"pageX",_969=e[axis],_96a=this.domNode.style,dim=_968?"h":"w",_96b=_95a.getComputedStyle(this.child.domNode),_96c=_959.getMarginBox(this.child.domNode,_96b)[dim],max=this._computeMaxSize(),min=Math.max(this.child.minSize,_959.getPadBorderExtents(this.child.domNode,_96b)[dim]+10),_96d=this.region,_96e=_96d=="top"||_96d=="bottom"?"top":"left",_96f=parseInt(_96a[_96e],10),_970=this._resize,_971=lang.hitch(this.container,"_layoutChildren",this.child.id),de=this.ownerDocument;this._handlers=this._handlers.concat([on(de,_95b.move,this._drag=function(e,_972){var _973=e[axis]-_969,_974=_967*_973+_96c,_975=Math.max(Math.min(_974,max),min);if(_970||_972){_971(_975);}_96a[_96e]=_973+_96f+_967*(_975-_974)+"px";}),on(de,"dragstart",function(e){e.stopPropagation();e.preventDefault();}),on(this.ownerDocumentBody,"selectstart",function(e){e.stopPropagation();e.preventDefault();}),on(de,_95b.release,lang.hitch(this,"_stopDrag"))]);e.stopPropagation();e.preventDefault();},_onMouse:function(e){var o=(e.type=="mouseover"||e.type=="mouseenter");_957.toggle(this.domNode,"dijitSplitterHover",o);_957.toggle(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover",o);},_stopDrag:function(e){try{if(this.cover){_957.remove(this.cover,"dijitSplitterCoverActive");}if(this.fake){_958.destroy(this.fake);}_957.remove(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active dijitSplitterShadow");this._drag(e);this._drag(e,true);}finally{this._cleanupHandlers();delete this._drag;}if(this.container.persist){_955(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"],{expires:365});}},_cleanupHandlers:function(){var h;while(h=this._handlers.pop()){h.remove();}},_onKeyDown:function(e){this._resize=true;var _976=this.horizontal;var tick=1;switch(e.keyCode){case _976?keys.UP_ARROW:keys.LEFT_ARROW:tick*=-1;case _976?keys.DOWN_ARROW:keys.RIGHT_ARROW:break;default:return;}var _977=_959.getMarginSize(this.child.domNode)[_976?"h":"w"]+this._factor*tick;this.container._layoutChildren(this.child.id,Math.max(Math.min(_977,this._computeMaxSize()),this.child.minSize));e.stopPropagation();e.preventDefault();},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.cover;delete this.fake;this.inherited(arguments);}});var _978=_956("dijit.layout._Gutter",[_95d,_95e],{templateString:"<div class=\"dijitGutter\" role=\"presentation\"></div>",postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);},buildRendering:function(){this.inherited(arguments);_957.add(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"));}});var _979=_956("dijit.layout.BorderContainer",_95f,{gutters:true,liveSplitters:true,persist:false,baseClass:"dijitBorderContainer",_splitterClass:_961,postMixInProperties:function(){if(!this.gutters){this.baseClass+="NoGutter";}this.inherited(arguments);},_setupChild:function(_97a){this.inherited(arguments);var _97b=_97a.region,ltr=_97a.isLeftToRight();if(_97b=="leading"){_97b=ltr?"left":"right";}if(_97b=="trailing"){_97b=ltr?"right":"left";}if(_97b){if(_97b!="center"&&(_97a.splitter||this.gutters)&&!_97a._splitterWidget){var _97c=_97a.splitter?this._splitterClass:_978;if(lang.isString(_97c)){_97c=lang.getObject(_97c);}var _97d=new _97c({id:_97a.id+"_splitter",container:this,child:_97a,region:_97b,live:this.liveSplitters});_97d.isSplitter=true;_97a._splitterWidget=_97d;var _97e=_97b=="bottom"||_97b==(this.isLeftToRight()?"right":"left");_958.place(_97d.domNode,_97a.domNode,_97e?"before":"after");_97d.startup();}}},layout:function(){this._layoutChildren();},removeChild:function(_97f){var _980=_97f._splitterWidget;if(_980){_980.destroy();delete _97f._splitterWidget;}this.inherited(arguments);},getChildren:function(){return _954.filter(this.inherited(arguments),function(_981){return !_981.isSplitter;});},getSplitter:function(_982){return _954.filter(this.getChildren(),function(_983){return _983.region==_982;})[0]._splitterWidget;},resize:function(_984,_985){if(!this.cs||!this.pe){var node=this.domNode;this.cs=_95a.getComputedStyle(node);this.pe=_959.getPadExtents(node,this.cs);this.pe.r=_95a.toPixelValue(node,this.cs.paddingRight);this.pe.b=_95a.toPixelValue(node,this.cs.paddingBottom);_95a.set(node,"padding","0px");}this.inherited(arguments);},_layoutChildren:function(_986,_987){if(!this._borderBox||!this._borderBox.h){return;}var _988=[];_954.forEach(this._getOrderedChildren(),function(pane){_988.push(pane);if(pane._splitterWidget){_988.push(pane._splitterWidget);}});var dim={l:this.pe.l,t:this.pe.t,w:this._borderBox.w-this.pe.w,h:this._borderBox.h-this.pe.h};_960.layoutChildren(this.domNode,dim,_988,_986,_987);},destroyRecursive:function(){_954.forEach(this.getChildren(),function(_989){var _98a=_989._splitterWidget;if(_98a){_98a.destroy();}delete _989._splitterWidget;});this.inherited(arguments);}});_979.ChildWidgetProperties={splitter:false,minSize:0,maxSize:Infinity};lang.mixin(_979.ChildWidgetProperties,_95f.ChildWidgetProperties);lang.extend(_95c,_979.ChildWidgetProperties);_979._Splitter=_961;_979._Gutter=_978;return _979;});},"dijit/_base":function(){define(["./main","./a11y","./WidgetSet","./_base/focus","./_base/manager","./_base/place","./_base/popup","./_base/scroll","./_base/sniff","./_base/typematic","./_base/wai","./_base/window"],function(_98b){return _98b._base;});},"dojo/window":function(){define(["./_base/lang","./sniff","./_base/window","./dom","./dom-geometry","./dom-style","./dom-construct"],function(lang,has,_98c,dom,geom,_98d,_98e){has.add("rtl-adjust-position-for-verticalScrollBar",function(win,doc){var body=_98c.body(doc),_98f=_98e.create("div",{style:{overflow:"scroll",overflowX:"visible",direction:"rtl",visibility:"hidden",position:"absolute",left:"0",top:"0",width:"64px",height:"64px"}},body,"last"),div=_98e.create("div",{style:{overflow:"hidden",direction:"ltr"}},_98f,"last"),ret=geom.position(div).x!=0;_98f.removeChild(div);body.removeChild(_98f);return ret;});has.add("position-fixed-support",function(win,doc){var body=_98c.body(doc),_990=_98e.create("span",{style:{visibility:"hidden",position:"fixed",left:"1px",top:"1px"}},body,"last"),_991=_98e.create("span",{style:{position:"fixed",left:"0",top:"0"}},_990,"last"),ret=geom.position(_991).x!=geom.position(_990).x;_990.removeChild(_991);body.removeChild(_990);return ret;});var _992={getBox:function(doc){doc=doc||_98c.doc;var _993=(doc.compatMode=="BackCompat")?_98c.body(doc):doc.documentElement,_994=geom.docScroll(doc),w,h;if(has("touch")){var _995=_992.get(doc);w=_995.innerWidth||_993.clientWidth;h=_995.innerHeight||_993.clientHeight;}else{w=_993.clientWidth;h=_993.clientHeight;}return {l:_994.x,t:_994.y,w:w,h:h};},get:function(doc){if(has("ie")&&_992!==document.parentWindow){doc.parentWindow.execScript("document._parentWindow = window;","Javascript");var win=doc._parentWindow;doc._parentWindow=null;return win;}return doc.parentWindow||doc.defaultView;},scrollIntoView:function(node,pos){try{node=dom.byId(node);var doc=node.ownerDocument||_98c.doc,body=_98c.body(doc),html=doc.documentElement||body.parentNode,isIE=has("ie")||has("trident"),isWK=has("webkit");if(node==body||node==html){return;}if(!(has("mozilla")||isIE||isWK||has("opera")||has("trident")||has("edge"))&&("scrollIntoView" in node)){node.scrollIntoView(false);return;}var _996=doc.compatMode=="BackCompat",_997=Math.min(body.clientWidth||html.clientWidth,html.clientWidth||body.clientWidth),_998=Math.min(body.clientHeight||html.clientHeight,html.clientHeight||body.clientHeight),_999=(isWK||_996)?body:html,_99a=pos||geom.position(node),el=node.parentNode,_99b=function(el){return (isIE<=6||(isIE==7&&_996))?false:(has("position-fixed-support")&&(_98d.get(el,"position").toLowerCase()=="fixed"));},self=this,_99c=function(el,x,y){if(el.tagName=="BODY"||el.tagName=="HTML"){self.get(el.ownerDocument).scrollBy(x,y);}else{x&&(el.scrollLeft+=x);y&&(el.scrollTop+=y);}};if(_99b(node)){return;}while(el){if(el==body){el=_999;}var _99d=geom.position(el),_99e=_99b(el),rtl=_98d.getComputedStyle(el).direction.toLowerCase()=="rtl";if(el==_999){_99d.w=_997;_99d.h=_998;if(_999==html&&(isIE||has("trident"))&&rtl){_99d.x+=_999.offsetWidth-_99d.w;}_99d.x=0;_99d.y=0;}else{var pb=geom.getPadBorderExtents(el);_99d.w-=pb.w;_99d.h-=pb.h;_99d.x+=pb.l;_99d.y+=pb.t;var _99f=el.clientWidth,_9a0=_99d.w-_99f;if(_99f>0&&_9a0>0){if(rtl&&has("rtl-adjust-position-for-verticalScrollBar")){_99d.x+=_9a0;}_99d.w=_99f;}_99f=el.clientHeight;_9a0=_99d.h-_99f;if(_99f>0&&_9a0>0){_99d.h=_99f;}}if(_99e){if(_99d.y<0){_99d.h+=_99d.y;_99d.y=0;}if(_99d.x<0){_99d.w+=_99d.x;_99d.x=0;}if(_99d.y+_99d.h>_998){_99d.h=_998-_99d.y;}if(_99d.x+_99d.w>_997){_99d.w=_997-_99d.x;}}var l=_99a.x-_99d.x,t=_99a.y-_99d.y,r=l+_99a.w-_99d.w,bot=t+_99a.h-_99d.h;var s,old;if(r*l>0&&(!!el.scrollLeft||el==_999||el.scrollWidth>el.offsetHeight)){s=Math[l<0?"max":"min"](l,r);if(rtl&&((isIE==8&&!_996)||has("trident")>=5)){s=-s;}old=el.scrollLeft;_99c(el,s,0);s=el.scrollLeft-old;_99a.x-=s;}if(bot*t>0&&(!!el.scrollTop||el==_999||el.scrollHeight>el.offsetHeight)){s=Math.ceil(Math[t<0?"max":"min"](t,bot));old=el.scrollTop;_99c(el,0,s);s=el.scrollTop-old;_99a.y-=s;}el=(el!=_999)&&!_99e&&el.parentNode;}}catch(error){console.error("scrollIntoView: "+error);node.scrollIntoView(false);}}};1&&lang.setObject("dojo.window",_992);return _992;});},"dojo/number":function(){define(["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(lang,i18n,_9a1,_9a2,_9a3){var _9a4={};lang.setObject("dojo.number",_9a4);_9a4.format=function(_9a5,_9a6){_9a6=lang.mixin({},_9a6||{});var _9a7=i18n.normalizeLocale(_9a6.locale),_9a8=i18n.getLocalization("dojo.cldr","number",_9a7);_9a6.customs=_9a8;var _9a9=_9a6.pattern||_9a8[(_9a6.type||"decimal")+"Format"];if(isNaN(_9a5)||Math.abs(_9a5)==Infinity){return null;}return _9a4._applyPattern(_9a5,_9a9,_9a6);};_9a4._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;_9a4._applyPattern=function(_9aa,_9ab,_9ac){_9ac=_9ac||{};var _9ad=_9ac.customs.group,_9ae=_9ac.customs.decimal,_9af=_9ab.split(";"),_9b0=_9af[0];_9ab=_9af[(_9aa<0)?1:0]||("-"+_9b0);if(_9ab.indexOf("%")!=-1){_9aa*=100;}else{if(_9ab.indexOf("‰")!=-1){_9aa*=1000;}else{if(_9ab.indexOf("¤")!=-1){_9ad=_9ac.customs.currencyGroup||_9ad;_9ae=_9ac.customs.currencyDecimal||_9ae;_9ab=_9ab.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/,function(_9b1,_9b2,_9b3,_9b4){var prop=["symbol","currency","displayName"][_9b3.length-1],_9b5=_9ac[prop]||_9ac.currency||"";if(!_9b5){return "";}return _9b2+_9b5+_9b4;});}else{if(_9ab.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _9b6=_9a4._numberPatternRE;var _9b7=_9b0.match(_9b6);if(!_9b7){throw new Error("unable to find a number expression in pattern: "+_9ab);}if(_9ac.fractional===false){_9ac.places=0;}return _9ab.replace(_9b6,_9a4._formatAbsolute(_9aa,_9b7[0],{decimal:_9ae,group:_9ad,places:_9ac.places,round:_9ac.round}));};_9a4.round=function(_9b8,_9b9,_9ba){var _9bb=10/(_9ba||10);return (_9bb*+_9b8).toFixed(_9b9)/_9bb;};if((0.9).toFixed()==0){var _9bc=_9a4.round;_9a4.round=function(v,p,m){var d=Math.pow(10,-p||0),a=Math.abs(v);if(!v||a>=d){d=0;}else{a/=d;if(a<0.5||a>=0.95){d=0;}}return _9bc(v,p,m)+(v>0?d:-d);};}_9a4._formatAbsolute=function(_9bd,_9be,_9bf){_9bf=_9bf||{};if(_9bf.places===true){_9bf.places=0;}if(_9bf.places===Infinity){_9bf.places=6;}var _9c0=_9be.split("."),_9c1=typeof _9bf.places=="string"&&_9bf.places.indexOf(","),_9c2=_9bf.places;if(_9c1){_9c2=_9bf.places.substring(_9c1+1);}else{if(!(_9c2>=0)){_9c2=(_9c0[1]||[]).length;}}if(!(_9bf.round<0)){_9bd=_9a4.round(_9bd,_9c2,_9bf.round);}var _9c3=String(Math.abs(_9bd)).split("."),_9c4=_9c3[1]||"";if(_9c0[1]||_9bf.places){if(_9c1){_9bf.places=_9bf.places.substring(0,_9c1);}var pad=_9bf.places!==undefined?_9bf.places:(_9c0[1]&&_9c0[1].lastIndexOf("0")+1);if(pad>_9c4.length){_9c3[1]=_9a2.pad(_9c4,pad,"0",true);}if(_9c2<_9c4.length){_9c3[1]=_9c4.substr(0,_9c2);}}else{if(_9c3[1]){_9c3.pop();}}var _9c5=_9c0[0].replace(",","");pad=_9c5.indexOf("0");if(pad!=-1){pad=_9c5.length-pad;if(pad>_9c3[0].length){_9c3[0]=_9a2.pad(_9c3[0],pad);}if(_9c5.indexOf("#")==-1){_9c3[0]=_9c3[0].substr(_9c3[0].length-pad);}}var _9c6=_9c0[0].lastIndexOf(","),_9c7,_9c8;if(_9c6!=-1){_9c7=_9c0[0].length-_9c6-1;var _9c9=_9c0[0].substr(0,_9c6);_9c6=_9c9.lastIndexOf(",");if(_9c6!=-1){_9c8=_9c9.length-_9c6-1;}}var _9ca=[];for(var _9cb=_9c3[0];_9cb;){var off=_9cb.length-_9c7;_9ca.push((off>0)?_9cb.substr(off):_9cb);_9cb=(off>0)?_9cb.slice(0,off):"";if(_9c8){_9c7=_9c8;_9c8=undefined;}}_9c3[0]=_9ca.reverse().join(_9bf.group||",");return _9c3.join(_9bf.decimal||".");};_9a4.regexp=function(_9cc){return _9a4._parseInfo(_9cc).regexp;};_9a4._parseInfo=function(_9cd){_9cd=_9cd||{};var _9ce=i18n.normalizeLocale(_9cd.locale),_9cf=i18n.getLocalization("dojo.cldr","number",_9ce),_9d0=_9cd.pattern||_9cf[(_9cd.type||"decimal")+"Format"],_9d1=_9cf.group,_9d2=_9cf.decimal,_9d3=1;if(_9d0.indexOf("%")!=-1){_9d3/=100;}else{if(_9d0.indexOf("‰")!=-1){_9d3/=1000;}else{var _9d4=_9d0.indexOf("¤")!=-1;if(_9d4){_9d1=_9cf.currencyGroup||_9d1;_9d2=_9cf.currencyDecimal||_9d2;}}}var _9d5=_9d0.split(";");if(_9d5.length==1){_9d5.push("-"+_9d5[0]);}var re=_9a3.buildGroupRE(_9d5,function(_9d6){_9d6="(?:"+_9a3.escapeString(_9d6,".")+")";return _9d6.replace(_9a4._numberPatternRE,function(_9d7){var _9d8={signed:false,separator:_9cd.strict?_9d1:[_9d1,""],fractional:_9cd.fractional,decimal:_9d2,exponent:false},_9d9=_9d7.split("."),_9da=_9cd.places;if(_9d9.length==1&&_9d3!=1){_9d9[1]="###";}if(_9d9.length==1||_9da===0){_9d8.fractional=false;}else{if(_9da===undefined){_9da=_9cd.pattern?_9d9[1].lastIndexOf("0")+1:Infinity;}if(_9da&&_9cd.fractional==undefined){_9d8.fractional=true;}if(!_9cd.places&&(_9da<_9d9[1].length)){_9da+=","+_9d9[1].length;}_9d8.places=_9da;}var _9db=_9d9[0].split(",");if(_9db.length>1){_9d8.groupSize=_9db.pop().length;if(_9db.length>1){_9d8.groupSize2=_9db.pop().length;}}return "("+_9a4._realNumberRegexp(_9d8)+")";});},true);if(_9d4){re=re.replace(/([\s\xa0]*)(\u00a4{1,3})([\s\xa0]*)/g,function(_9dc,_9dd,_9de,_9df){var prop=["symbol","currency","displayName"][_9de.length-1],_9e0=_9a3.escapeString(_9cd[prop]||_9cd.currency||"");if(!_9e0){return "";}_9dd=_9dd?"[\\s\\xa0]":"";_9df=_9df?"[\\s\\xa0]":"";if(!_9cd.strict){if(_9dd){_9dd+="*";}if(_9df){_9df+="*";}return "(?:"+_9dd+_9e0+_9df+")?";}return _9dd+_9e0+_9df;});}return {regexp:re.replace(/[\xa0 ]/g,"[\\s\\xa0]"),group:_9d1,decimal:_9d2,factor:_9d3};};_9a4.parse=function(_9e1,_9e2){var info=_9a4._parseInfo(_9e2),_9e3=(new RegExp("^"+info.regexp+"$")).exec(_9e1);if(!_9e3){return NaN;}var _9e4=_9e3[1];if(!_9e3[1]){if(!_9e3[2]){return NaN;}_9e4=_9e3[2];info.factor*=-1;}_9e4=_9e4.replace(new RegExp("["+info.group+"\\s\\xa0"+"]","g"),"").replace(info.decimal,".");return _9e4*info.factor;};_9a4._realNumberRegexp=function(_9e5){_9e5=_9e5||{};if(!("places" in _9e5)){_9e5.places=Infinity;}if(typeof _9e5.decimal!="string"){_9e5.decimal=".";}if(!("fractional" in _9e5)||/^0/.test(_9e5.places)){_9e5.fractional=[true,false];}if(!("exponent" in _9e5)){_9e5.exponent=[true,false];}if(!("eSigned" in _9e5)){_9e5.eSigned=[true,false];}var _9e6=_9a4._integerRegexp(_9e5),_9e7=_9a3.buildGroupRE(_9e5.fractional,function(q){var re="";if(q&&(_9e5.places!==0)){re="\\"+_9e5.decimal;if(_9e5.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_9e5.places+"}";}}return re;},true);var _9e8=_9a3.buildGroupRE(_9e5.exponent,function(q){if(q){return "([eE]"+_9a4._integerRegexp({signed:_9e5.eSigned})+")";}return "";});var _9e9=_9e6+_9e7;if(_9e7){_9e9="(?:(?:"+_9e9+")|(?:"+_9e7+"))";}return _9e9+_9e8;};_9a4._integerRegexp=function(_9ea){_9ea=_9ea||{};if(!("signed" in _9ea)){_9ea.signed=[true,false];}if(!("separator" in _9ea)){_9ea.separator="";}else{if(!("groupSize" in _9ea)){_9ea.groupSize=3;}}var _9eb=_9a3.buildGroupRE(_9ea.signed,function(q){return q?"[-+]":"";},true);var _9ec=_9a3.buildGroupRE(_9ea.separator,function(sep){if(!sep){return "(?:\\d+)";}sep=_9a3.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}}var grp=_9ea.groupSize,grp2=_9ea.groupSize2;if(grp2){var _9ed="(?:0|[1-9]\\d{0,"+(grp2-1)+"}(?:["+sep+"]\\d{"+grp2+"})*["+sep+"]\\d{"+grp+"})";return ((grp-grp2)>0)?"(?:"+_9ed+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_9ed;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _9eb+_9ec;};return _9a4;});},"dijit/_FocusMixin":function(){define(["./focus","./_WidgetBase","dojo/_base/declare","dojo/_base/lang"],function(_9ee,_9ef,_9f0,lang){lang.extend(_9ef,{focused:false,onFocus:function(){},onBlur:function(){},_onFocus:function(){this.onFocus();},_onBlur:function(){this.onBlur();}});return _9f0("dijit._FocusMixin",null,{_focusManager:_9ee});});},"dojo/data/util/filter":function(){define(["../../_base/lang"],function(lang){var _9f1={};lang.setObject("dojo.data.util.filter",_9f1);_9f1.patternToRegExp=function(_9f2,_9f3){var rxp="^";var c=null;for(var i=0;i<_9f2.length;i++){c=_9f2.charAt(i);switch(c){case "\\":rxp+=c;i++;rxp+=_9f2.charAt(i);break;case "*":rxp+=".*";break;case "?":rxp+=".";break;case "$":case "^":case "/":case "+":case ".":case "|":case "(":case ")":case "{":case "}":case "[":case "]":rxp+="\\";default:rxp+=c;}}rxp+="$";if(_9f3){return new RegExp(rxp,"mi");}else{return new RegExp(rxp,"m");}};return _9f1;});},"dijit/_WidgetsInTemplateMixin":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/_base/lang","dojo/parser"],function(_9f4,_9f5,_9f6,lang,_9f7){return _9f6("dijit._WidgetsInTemplateMixin",null,{_earlyTemplatedStartup:false,contextRequire:null,_beforeFillContent:function(){if(/dojoType|data-dojo-type/i.test(this.domNode.innerHTML)){var node=this.domNode;if(this.containerNode&&!this.searchContainerNode){this.containerNode.stopParser=true;}_9f7.parse(node,{noStart:!this._earlyTemplatedStartup,template:true,inherited:{dir:this.dir,lang:this.lang,textDir:this.textDir},propsThis:this,contextRequire:this.contextRequire,scope:"dojo"}).then(lang.hitch(this,function(_9f8){this._startupWidgets=_9f8;for(var i=0;i<_9f8.length;i++){this._processTemplateNode(_9f8[i],function(n,p){return n[p];},function(_9f9,type,_9fa){if(type in _9f9){return _9f9.connect(_9f9,type,_9fa);}else{return _9f9.on(type,_9fa,true);}});}if(this.containerNode&&this.containerNode.stopParser){delete this.containerNode.stopParser;}}));if(!this._startupWidgets){throw new Error(this.declaredClass+": parser returned unfilled promise (probably waiting for module auto-load), "+"unsupported by _WidgetsInTemplateMixin. Must pre-load all supporting widgets before instantiation.");}}},_processTemplateNode:function(_9fb,_9fc,_9fd){if(_9fc(_9fb,"dojoType")||_9fc(_9fb,"data-dojo-type")){return true;}return this.inherited(arguments);},startup:function(){_9f4.forEach(this._startupWidgets,function(w){if(w&&!w._started&&w.startup){w.startup();}});this._startupWidgets=null;this.inherited(arguments);}});});},"dojo/fx/Toggler":function(){define(["../_base/lang","../_base/declare","../_base/fx","../aspect"],function(lang,_9fe,_9ff,_a00){return _9fe("dojo.fx.Toggler",null,{node:null,showFunc:_9ff.fadeIn,hideFunc:_9ff.fadeOut,showDuration:200,hideDuration:200,constructor:function(args){var _a01=this;lang.mixin(_a01,args);_a01.node=args.node;_a01._showArgs=lang.mixin({},args);_a01._showArgs.node=_a01.node;_a01._showArgs.duration=_a01.showDuration;_a01.showAnim=_a01.showFunc(_a01._showArgs);_a01._hideArgs=lang.mixin({},args);_a01._hideArgs.node=_a01.node;_a01._hideArgs.duration=_a01.hideDuration;_a01.hideAnim=_a01.hideFunc(_a01._hideArgs);_a00.after(_a01.showAnim,"beforeBegin",lang.hitch(_a01.hideAnim,"stop",true),true);_a00.after(_a01.hideAnim,"beforeBegin",lang.hitch(_a01.showAnim,"stop",true),true);},show:function(_a02){return this.showAnim.play(_a02||0);},hide:function(_a03){return this.hideAnim.play(_a03||0);}});});},"dijit/form/FilteringSelect":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/when","./MappedTextBox","./ComboBoxMixin"],function(_a04,lang,when,_a05,_a06){return _a04("dijit.form.FilteringSelect",[_a05,_a06],{required:true,_lastDisplayedValue:"",_isValidSubset:function(){return this._opened;},isValid:function(){return !!this.item||(!this.required&&this.get("displayedValue")=="");},_refreshState:function(){if(!this.searchTimer){this.inherited(arguments);}},_callbackSetLabel:function(_a07,_a08,_a09,_a0a){if((_a08&&_a08[this.searchAttr]!==this._lastQuery)||(!_a08&&_a07.length&&this.store.getIdentity(_a07[0])!=this._lastQuery)){return;}if(!_a07.length){this.set("value","",_a0a||(_a0a===undefined&&!this.focused),this.textbox.value,null);}else{this.set("item",_a07[0],_a0a);}},_openResultList:function(_a0b,_a0c,_a0d){if(_a0c[this.searchAttr]!==this._lastQuery){return;}this.inherited(arguments);if(this.item===undefined){this.validate(true);}},_getValueAttr:function(){return this.valueNode.value;},_getValueField:function(){return "value";},_setValueAttr:function(_a0e,_a0f,_a10,item){if(!this._onChangeActive){_a0f=null;}if(item===undefined){if(_a0e===null||_a0e===""){_a0e="";if(!lang.isString(_a10)){this._setDisplayedValueAttr(_a10||"",_a0f);return;}}var self=this;this._lastQuery=_a0e;when(this.store.get(_a0e),function(item){self._callbackSetLabel(item?[item]:[],undefined,undefined,_a0f);});}else{this.valueNode.value=_a0e;this.inherited(arguments,[_a0e,_a0f,_a10,item]);}},_setItemAttr:function(item,_a11,_a12){this.inherited(arguments);this._lastDisplayedValue=this.textbox.value;},_getDisplayQueryString:function(text){return text.replace(/([\\\*\?])/g,"\\$1");},_setDisplayedValueAttr:function(_a13,_a14){if(_a13==null){_a13="";}if(!this._created){if(!("displayedValue" in this.params)){return;}_a14=false;}if(this.store){this.closeDropDown();var _a15=lang.clone(this.query);var qs=this._getDisplayQueryString(_a13),q;if(this.store._oldAPI){q=qs;}else{q=this._patternToRegExp(qs);q.toString=function(){return qs;};}this._lastQuery=_a15[this.searchAttr]=q;this.textbox.value=_a13;this._lastDisplayedValue=_a13;this._set("displayedValue",_a13);var _a16=this;var _a17={queryOptions:{ignoreCase:this.ignoreCase,deep:true}};lang.mixin(_a17,this.fetchProperties);this._fetchHandle=this.store.query(_a15,_a17);when(this._fetchHandle,function(_a18){_a16._fetchHandle=null;_a16._callbackSetLabel(_a18||[],_a15,_a17,_a14);},function(err){_a16._fetchHandle=null;if(!_a16._cancelingQuery){console.error("dijit.form.FilteringSelect: "+err.toString());}});}},undo:function(){this.set("displayedValue",this._lastDisplayedValue);}});});},"dojo/data/util/sorter":function(){define(["../../_base/lang"],function(lang){var _a19={};lang.setObject("dojo.data.util.sorter",_a19);_a19.basicComparator=function(a,b){var r=-1;if(a===null){a=undefined;}if(b===null){b=undefined;}if(a==b){r=0;}else{if(a>b||a==null){r=1;}}return r;};_a19.createSortFunction=function(_a1a,_a1b){var _a1c=[];function _a1d(attr,dir,comp,s){return function(_a1e,_a1f){var a=s.getValue(_a1e,attr);var b=s.getValue(_a1f,attr);return dir*comp(a,b);};};var _a20;var map=_a1b.comparatorMap;var bc=_a19.basicComparator;for(var i=0;i<_a1a.length;i++){_a20=_a1a[i];var attr=_a20.attribute;if(attr){var dir=(_a20.descending)?-1:1;var comp=bc;if(map){if(typeof attr!=="string"&&("toString" in attr)){attr=attr.toString();}comp=map[attr]||bc;}_a1c.push(_a1d(attr,dir,comp,_a1b));}}return function(rowA,rowB){var i=0;while(i<_a1c.length){var ret=_a1c[i++](rowA,rowB);if(ret!==0){return ret;}}return 0;};};return _a19;});},"dijit/form/_ButtonMixin":function(){define(["dojo/_base/declare","dojo/dom","dojo/has","../registry"],function(_a21,dom,has,_a22){var _a23=_a21("dijit.form._ButtonMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{label:"",type:"button",__onClick:function(e){e.stopPropagation();e.preventDefault();if(!this.disabled){this.valueNode.click(e);}return false;},_onClick:function(e){if(this.disabled){e.stopPropagation();e.preventDefault();return false;}if(this.onClick(e)===false){e.preventDefault();}var _a24=e.defaultPrevented;if(!_a24&&this.type=="submit"&&!(this.valueNode||this.focusNode).form){for(var node=this.domNode;node.parentNode;node=node.parentNode){var _a25=_a22.byNode(node);if(_a25&&typeof _a25._onSubmit=="function"){_a25._onSubmit(e);e.preventDefault();_a24=true;break;}}}return !_a24;},postCreate:function(){this.inherited(arguments);dom.setSelectable(this.focusNode,false);},onClick:function(){return true;},_setLabelAttr:function(_a26){this._set("label",_a26);var _a27=this.containerNode||this.focusNode;_a27.innerHTML=_a26;this.onLabelSet();},onLabelSet:function(){}});if(has("dojo-bidi")){_a23=_a21("dijit.form._ButtonMixin",_a23,{onLabelSet:function(){this.inherited(arguments);var _a28=this.containerNode||this.focusNode;this.applyTextDir(_a28);}});}return _a23;});},"dojo/colors":function(){define(["./_base/kernel","./_base/lang","./_base/Color","./_base/array"],function(dojo,lang,_a29,_a2a){var _a2b={};lang.setObject("dojo.colors",_a2b);var _a2c=function(m1,m2,h){if(h<0){++h;}if(h>1){--h;}var h6=6*h;if(h6<1){return m1+(m2-m1)*h6;}if(2*h<1){return m2;}if(3*h<2){return m1+(m2-m1)*(2/3-h)*6;}return m1;};dojo.colorFromRgb=_a29.fromRgb=function(_a2d,obj){var m=_a2d.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(m){var c=m[2].split(/\s*,\s*/),l=c.length,t=m[1],a;if((t=="rgb"&&l==3)||(t=="rgba"&&l==4)){var r=c[0];if(r.charAt(r.length-1)=="%"){a=_a2a.map(c,function(x){return parseFloat(x)*2.56;});if(l==4){a[3]=c[3];}return _a29.fromArray(a,obj);}return _a29.fromArray(c,obj);}if((t=="hsl"&&l==3)||(t=="hsla"&&l==4)){var H=((parseFloat(c[0])%360)+360)%360/360,S=parseFloat(c[1])/100,L=parseFloat(c[2])/100,m2=L<=0.5?L*(S+1):L+S-L*S,m1=2*L-m2;a=[_a2c(m1,m2,H+1/3)*256,_a2c(m1,m2,H)*256,_a2c(m1,m2,H-1/3)*256,1];if(l==4){a[3]=c[3];}return _a29.fromArray(a,obj);}}return null;};var _a2e=function(c,low,high){c=Number(c);return isNaN(c)?high:c<low?low:c>high?high:c;};_a29.prototype.sanitize=function(){var t=this;t.r=Math.round(_a2e(t.r,0,255));t.g=Math.round(_a2e(t.g,0,255));t.b=Math.round(_a2e(t.b,0,255));t.a=_a2e(t.a,0,1);return this;};_a2b.makeGrey=_a29.makeGrey=function(g,a){return _a29.fromArray([g,g,g,a]);};lang.mixin(_a29.named,{"aliceblue":[240,248,255],"antiquewhite":[250,235,215],"aquamarine":[127,255,212],"azure":[240,255,255],"beige":[245,245,220],"bisque":[255,228,196],"blanchedalmond":[255,235,205],"blueviolet":[138,43,226],"brown":[165,42,42],"burlywood":[222,184,135],"cadetblue":[95,158,160],"chartreuse":[127,255,0],"chocolate":[210,105,30],"coral":[255,127,80],"cornflowerblue":[100,149,237],"cornsilk":[255,248,220],"crimson":[220,20,60],"cyan":[0,255,255],"darkblue":[0,0,139],"darkcyan":[0,139,139],"darkgoldenrod":[184,134,11],"darkgray":[169,169,169],"darkgreen":[0,100,0],"darkgrey":[169,169,169],"darkkhaki":[189,183,107],"darkmagenta":[139,0,139],"darkolivegreen":[85,107,47],"darkorange":[255,140,0],"darkorchid":[153,50,204],"darkred":[139,0,0],"darksalmon":[233,150,122],"darkseagreen":[143,188,143],"darkslateblue":[72,61,139],"darkslategray":[47,79,79],"darkslategrey":[47,79,79],"darkturquoise":[0,206,209],"darkviolet":[148,0,211],"deeppink":[255,20,147],"deepskyblue":[0,191,255],"dimgray":[105,105,105],"dimgrey":[105,105,105],"dodgerblue":[30,144,255],"firebrick":[178,34,34],"floralwhite":[255,250,240],"forestgreen":[34,139,34],"gainsboro":[220,220,220],"ghostwhite":[248,248,255],"gold":[255,215,0],"goldenrod":[218,165,32],"greenyellow":[173,255,47],"grey":[128,128,128],"honeydew":[240,255,240],"hotpink":[255,105,180],"indianred":[205,92,92],"indigo":[75,0,130],"ivory":[255,255,240],"khaki":[240,230,140],"lavender":[230,230,250],"lavenderblush":[255,240,245],"lawngreen":[124,252,0],"lemonchiffon":[255,250,205],"lightblue":[173,216,230],"lightcoral":[240,128,128],"lightcyan":[224,255,255],"lightgoldenrodyellow":[250,250,210],"lightgray":[211,211,211],"lightgreen":[144,238,144],"lightgrey":[211,211,211],"lightpink":[255,182,193],"lightsalmon":[255,160,122],"lightseagreen":[32,178,170],"lightskyblue":[135,206,250],"lightslategray":[119,136,153],"lightslategrey":[119,136,153],"lightsteelblue":[176,196,222],"lightyellow":[255,255,224],"limegreen":[50,205,50],"linen":[250,240,230],"magenta":[255,0,255],"mediumaquamarine":[102,205,170],"mediumblue":[0,0,205],"mediumorchid":[186,85,211],"mediumpurple":[147,112,219],"mediumseagreen":[60,179,113],"mediumslateblue":[123,104,238],"mediumspringgreen":[0,250,154],"mediumturquoise":[72,209,204],"mediumvioletred":[199,21,133],"midnightblue":[25,25,112],"mintcream":[245,255,250],"mistyrose":[255,228,225],"moccasin":[255,228,181],"navajowhite":[255,222,173],"oldlace":[253,245,230],"olivedrab":[107,142,35],"orange":[255,165,0],"orangered":[255,69,0],"orchid":[218,112,214],"palegoldenrod":[238,232,170],"palegreen":[152,251,152],"paleturquoise":[175,238,238],"palevioletred":[219,112,147],"papayawhip":[255,239,213],"peachpuff":[255,218,185],"peru":[205,133,63],"pink":[255,192,203],"plum":[221,160,221],"powderblue":[176,224,230],"rosybrown":[188,143,143],"royalblue":[65,105,225],"saddlebrown":[139,69,19],"salmon":[250,128,114],"sandybrown":[244,164,96],"seagreen":[46,139,87],"seashell":[255,245,238],"sienna":[160,82,45],"skyblue":[135,206,235],"slateblue":[106,90,205],"slategray":[112,128,144],"slategrey":[112,128,144],"snow":[255,250,250],"springgreen":[0,255,127],"steelblue":[70,130,180],"tan":[210,180,140],"thistle":[216,191,216],"tomato":[255,99,71],"turquoise":[64,224,208],"violet":[238,130,238],"wheat":[245,222,179],"whitesmoke":[245,245,245],"yellowgreen":[154,205,50]});return _a29;});},"dijit/registry":function(){define(["dojo/_base/array","dojo/_base/window","./main"],function(_a2f,win,_a30){var _a31={},hash={};var _a32={length:0,add:function(_a33){if(hash[_a33.id]){throw new Error("Tried to register widget with id=="+_a33.id+" but that id is already registered");}hash[_a33.id]=_a33;this.length++;},remove:function(id){if(hash[id]){delete hash[id];this.length--;}},byId:function(id){return typeof id=="string"?hash[id]:id;},byNode:function(node){return hash[node.getAttribute("widgetId")];},toArray:function(){var ar=[];for(var id in hash){ar.push(hash[id]);}return ar;},getUniqueId:function(_a34){var id;do{id=_a34+"_"+(_a34 in _a31?++_a31[_a34]:_a31[_a34]=0);}while(hash[id]);return _a30._scopeName=="dijit"?id:_a30._scopeName+"_"+id;},findWidgets:function(root,_a35){var _a36=[];function _a37(root){for(var node=root.firstChild;node;node=node.nextSibling){if(node.nodeType==1){var _a38=node.getAttribute("widgetId");if(_a38){var _a39=hash[_a38];if(_a39){_a36.push(_a39);}}else{if(node!==_a35){_a37(node);}}}}};_a37(root);return _a36;},_destroyAll:function(){_a30._curFocus=null;_a30._prevFocus=null;_a30._activeStack=[];_a2f.forEach(_a32.findWidgets(win.body()),function(_a3a){if(!_a3a._destroyed){if(_a3a.destroyRecursive){_a3a.destroyRecursive();}else{if(_a3a.destroy){_a3a.destroy();}}}});},getEnclosingWidget:function(node){while(node){var id=node.nodeType==1&&node.getAttribute("widgetId");if(id){return hash[id];}node=node.parentNode;}return null;},_hash:hash};_a30.registry=_a32;return _a32;});},"dijit/tree/_dndContainer":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom-class","dojo/_base/lang","dojo/on","dojo/touch"],function(_a3b,_a3c,_a3d,lang,on,_a3e){return _a3c("dijit.tree._dndContainer",null,{constructor:function(tree,_a3f){this.tree=tree;this.node=tree.domNode;lang.mixin(this,_a3f);this.containerState="";_a3d.add(this.node,"dojoDndContainer");this.events=[on(this.node,_a3e.enter,lang.hitch(this,"onOverEvent")),on(this.node,_a3e.leave,lang.hitch(this,"onOutEvent")),_a3b.after(this.tree,"_onNodeMouseEnter",lang.hitch(this,"onMouseOver"),true),_a3b.after(this.tree,"_onNodeMouseLeave",lang.hitch(this,"onMouseOut"),true),on(this.node,"dragstart, selectstart",function(evt){evt.preventDefault();})];},destroy:function(){var h;while(h=this.events.pop()){h.remove();}this.node=this.parent=null;},onMouseOver:function(_a40){this.current=_a40;},onMouseOut:function(){this.current=null;},_changeState:function(type,_a41){var _a42="dojoDnd"+type;var _a43=type.toLowerCase()+"State";_a3d.replace(this.node,_a42+_a41,_a42+this[_a43]);this[_a43]=_a41;},_addItemClass:function(node,type){_a3d.add(node,"dojoDndItem"+type);},_removeItemClass:function(node,type){_a3d.remove(node,"dojoDndItem"+type);},onOverEvent:function(){this._changeState("Container","Over");},onOutEvent:function(){this._changeState("Container","");}});});},"dijit/_base/wai":function(){define(["dojo/dom-attr","dojo/_base/lang","../main","../hccss"],function(_a44,lang,_a45){var _a46={hasWaiRole:function(elem,role){var _a47=this.getWaiRole(elem);return role?(_a47.indexOf(role)>-1):(_a47.length>0);},getWaiRole:function(elem){return lang.trim((_a44.get(elem,"role")||"").replace("wairole:",""));},setWaiRole:function(elem,role){_a44.set(elem,"role",role);},removeWaiRole:function(elem,role){var _a48=_a44.get(elem,"role");if(!_a48){return;}if(role){var t=lang.trim((" "+_a48+" ").replace(" "+role+" "," "));_a44.set(elem,"role",t);}else{elem.removeAttribute("role");}},hasWaiState:function(elem,_a49){return elem.hasAttribute?elem.hasAttribute("aria-"+_a49):!!elem.getAttribute("aria-"+_a49);},getWaiState:function(elem,_a4a){return elem.getAttribute("aria-"+_a4a)||"";},setWaiState:function(elem,_a4b,_a4c){elem.setAttribute("aria-"+_a4b,_a4c);},removeWaiState:function(elem,_a4d){elem.removeAttribute("aria-"+_a4d);}};lang.mixin(_a45,_a46);return _a45;});},"dijit/form/_FormSelectWidget":function(){define(["dojo/_base/array","dojo/_base/Deferred","dojo/aspect","dojo/data/util/sorter","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/_base/kernel","dojo/_base/lang","dojo/query","dojo/when","dojo/store/util/QueryResults","./_FormValueWidget"],function(_a4e,_a4f,_a50,_a51,_a52,dom,_a53,_a54,lang,_a55,when,_a56,_a57){var _a58=_a52("dijit.form._FormSelectWidget",_a57,{multiple:false,options:null,store:null,_setStoreAttr:function(val){if(this._created){this._deprecatedSetStore(val);}},query:null,_setQueryAttr:function(_a59){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{query:_a59});}},queryOptions:null,_setQueryOptionsAttr:function(_a5a){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{queryOptions:_a5a});}},labelAttr:"",onFetch:null,sortByLabel:true,loadChildrenOnOpen:false,onLoadDeferred:null,getOptions:function(_a5b){var opts=this.options||[];if(_a5b==null){return opts;}if(lang.isArrayLike(_a5b)){return _a4e.map(_a5b,"return this.getOptions(item);",this);}if(lang.isString(_a5b)){_a5b={value:_a5b};}if(lang.isObject(_a5b)){if(!_a4e.some(opts,function(_a5c,idx){for(var a in _a5b){if(!(a in _a5c)||_a5c[a]!=_a5b[a]){return false;}}_a5b=idx;return true;})){_a5b=-1;}}if(_a5b>=0&&_a5b<opts.length){return opts[_a5b];}return null;},addOption:function(_a5d){_a4e.forEach(lang.isArrayLike(_a5d)?_a5d:[_a5d],function(i){if(i&&lang.isObject(i)){this.options.push(i);}},this);this._loadChildren();},removeOption:function(_a5e){var _a5f=this.getOptions(lang.isArrayLike(_a5e)?_a5e:[_a5e]);_a4e.forEach(_a5f,function(_a60){if(_a60){this.options=_a4e.filter(this.options,function(node){return (node.value!==_a60.value||node.label!==_a60.label);});this._removeOptionItem(_a60);}},this);this._loadChildren();},updateOption:function(_a61){_a4e.forEach(lang.isArrayLike(_a61)?_a61:[_a61],function(i){var _a62=this.getOptions({value:i.value}),k;if(_a62){for(k in i){_a62[k]=i[k];}}},this);this._loadChildren();},setStore:function(_a63,_a64,_a65){_a54.deprecated(this.declaredClass+"::setStore(store, selectedValue, fetchArgs) is deprecated. Use set('query', fetchArgs.query), set('queryOptions', fetchArgs.queryOptions), set('store', store), or set('value', selectedValue) instead.","","2.0");this._deprecatedSetStore(_a63,_a64,_a65);},_deprecatedSetStore:function(_a66,_a67,_a68){var _a69=this.store;_a68=_a68||{};if(_a69!==_a66){var h;while((h=this._notifyConnections.pop())){h.remove();}if(!_a66.get){lang.mixin(_a66,{_oldAPI:true,get:function(id){var _a6a=new _a4f();this.fetchItemByIdentity({identity:id,onItem:function(_a6b){_a6a.resolve(_a6b);},onError:function(_a6c){_a6a.reject(_a6c);}});return _a6a.promise;},query:function(_a6d,_a6e){var _a6f=new _a4f(function(){if(_a70.abort){_a70.abort();}});_a6f.total=new _a4f();var _a70=this.fetch(lang.mixin({query:_a6d,onBegin:function(_a71){_a6f.total.resolve(_a71);},onComplete:function(_a72){_a6f.resolve(_a72);},onError:function(_a73){_a6f.reject(_a73);}},_a6e));return new _a56(_a6f);}});if(_a66.getFeatures()["dojo.data.api.Notification"]){this._notifyConnections=[_a50.after(_a66,"onNew",lang.hitch(this,"_onNewItem"),true),_a50.after(_a66,"onDelete",lang.hitch(this,"_onDeleteItem"),true),_a50.after(_a66,"onSet",lang.hitch(this,"_onSetItem"),true)];}}this._set("store",_a66);}if(this.options&&this.options.length){this.removeOption(this.options);}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}if(_a68.query){this._set("query",_a68.query);}if(_a68.queryOptions){this._set("queryOptions",_a68.queryOptions);}if(_a66&&_a66.query){this._loadingStore=true;this.onLoadDeferred=new _a4f();this._queryRes=_a66.query(this.query,this.queryOptions);when(this._queryRes,lang.hitch(this,function(_a74){if(this.sortByLabel&&!_a68.sort&&_a74.length){if(_a66.getValue){_a74.sort(_a51.createSortFunction([{attribute:_a66.getLabelAttributes(_a74[0])[0]}],_a66));}else{var _a75=this.labelAttr;_a74.sort(function(a,b){return a[_a75]>b[_a75]?1:b[_a75]>a[_a75]?-1:0;});}}if(_a68.onFetch){_a74=_a68.onFetch.call(this,_a74,_a68);}_a4e.forEach(_a74,function(i){this._addOptionForItem(i);},this);if(this._queryRes.observe){this._observeHandle=this._queryRes.observe(lang.hitch(this,function(_a76,_a77,_a78){if(_a77==_a78){this._onSetItem(_a76);}else{if(_a77!=-1){this._onDeleteItem(_a76);}if(_a78!=-1){this._onNewItem(_a76);}}}),true);}this._loadingStore=false;this.set("value","_pendingValue" in this?this._pendingValue:_a67);delete this._pendingValue;if(!this.loadChildrenOnOpen){this._loadChildren();}else{this._pseudoLoadChildren(_a74);}this.onLoadDeferred.resolve(true);this.onSetStore();}),lang.hitch(this,function(err){console.error("dijit.form.Select: "+err.toString());this.onLoadDeferred.reject(err);}));}return _a69;},_setValueAttr:function(_a79,_a7a){if(!this._onChangeActive){_a7a=null;}if(this._loadingStore){this._pendingValue=_a79;return;}if(_a79==null){return;}if(lang.isArrayLike(_a79)){_a79=_a4e.map(_a79,function(_a7b){return lang.isObject(_a7b)?_a7b:{value:_a7b};});}else{if(lang.isObject(_a79)){_a79=[_a79];}else{_a79=[{value:_a79}];}}_a79=_a4e.filter(this.getOptions(_a79),function(i){return i&&i.value;});var opts=this.getOptions()||[];if(!this.multiple&&(!_a79[0]||!_a79[0].value)&&!!opts.length){_a79[0]=opts[0];}_a4e.forEach(opts,function(opt){opt.selected=_a4e.some(_a79,function(v){return v.value===opt.value;});});var val=_a4e.map(_a79,function(opt){return opt.value;});if(typeof val=="undefined"||typeof val[0]=="undefined"){return;}var disp=_a4e.map(_a79,function(opt){return opt.label;});this._setDisplay(this.multiple?disp:disp[0]);this.inherited(arguments,[this.multiple?val:val[0],_a7a]);this._updateSelection();},_getDisplayedValueAttr:function(){var ret=_a4e.map([].concat(this.get("selectedOptions")),function(v){if(v&&"label" in v){return v.label;}else{if(v){return v.value;}}return null;},this);return this.multiple?ret:ret[0];},_setDisplayedValueAttr:function(_a7c){this.set("value",this.getOptions(typeof _a7c=="string"?{label:_a7c}:_a7c));},_loadChildren:function(){if(this._loadingStore){return;}_a4e.forEach(this._getChildren(),function(_a7d){_a7d.destroyRecursive();});_a4e.forEach(this.options,this._addOptionItem,this);this._updateSelection();},_updateSelection:function(){this.focusedChild=null;this._set("value",this._getValueFromOpts());var val=[].concat(this.value);if(val&&val[0]){var self=this;_a4e.forEach(this._getChildren(),function(_a7e){var _a7f=_a4e.some(val,function(v){return _a7e.option&&(v===_a7e.option.value);});if(_a7f&&!self.multiple){self.focusedChild=_a7e;}_a53.toggle(_a7e.domNode,this.baseClass.replace(/\s+|$/g,"SelectedOption "),_a7f);_a7e.domNode.setAttribute("aria-selected",_a7f?"true":"false");},this);}},_getValueFromOpts:function(){var opts=this.getOptions()||[];if(!this.multiple&&opts.length){var opt=_a4e.filter(opts,function(i){return i.selected;})[0];if(opt&&opt.value){return opt.value;}else{opts[0].selected=true;return opts[0].value;}}else{if(this.multiple){return _a4e.map(_a4e.filter(opts,function(i){return i.selected;}),function(i){return i.value;})||[];}}return "";},_onNewItem:function(item,_a80){if(!_a80||!_a80.parent){this._addOptionForItem(item);}},_onDeleteItem:function(item){var _a81=this.store;this.removeOption({value:_a81.getIdentity(item)});},_onSetItem:function(item){this.updateOption(this._getOptionObjForItem(item));},_getOptionObjForItem:function(item){var _a82=this.store,_a83=(this.labelAttr&&this.labelAttr in item)?item[this.labelAttr]:_a82.getLabel(item),_a84=(_a83?_a82.getIdentity(item):null);return {value:_a84,label:_a83,item:item};},_addOptionForItem:function(item){var _a85=this.store;if(_a85.isItemLoaded&&!_a85.isItemLoaded(item)){_a85.loadItem({item:item,onItem:function(i){this._addOptionForItem(i);},scope:this});return;}var _a86=this._getOptionObjForItem(item);this.addOption(_a86);},constructor:function(_a87){this._oValue=(_a87||{}).value||null;this._notifyConnections=[];},buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.focusNode,false);},_fillContent:function(){if(!this.options){this.options=this.srcNodeRef?_a55("> *",this.srcNodeRef).map(function(node){if(node.getAttribute("type")==="separator"){return {value:"",label:"",selected:false,disabled:false};}return {value:(node.getAttribute("data-"+_a54._scopeName+"-value")||node.getAttribute("value")),label:String(node.innerHTML),selected:node.getAttribute("selected")||false,disabled:node.getAttribute("disabled")||false};},this):[];}if(!this.value){this._set("value",this._getValueFromOpts());}else{if(this.multiple&&typeof this.value=="string"){this._set("value",this.value.split(","));}}},postCreate:function(){this.inherited(arguments);_a50.after(this,"onChange",lang.hitch(this,"_updateSelection"));var _a88=this.store;if(_a88&&(_a88.getIdentity||_a88.getFeatures()["dojo.data.api.Identity"])){this.store=null;this._deprecatedSetStore(_a88,this._oValue,{query:this.query,queryOptions:this.queryOptions});}this._storeInitialized=true;},startup:function(){this._loadChildren();this.inherited(arguments);},destroy:function(){var h;while((h=this._notifyConnections.pop())){h.remove();}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}this.inherited(arguments);},_addOptionItem:function(){},_removeOptionItem:function(){},_setDisplay:function(){},_getChildren:function(){return [];},_getSelectedOptionsAttr:function(){return this.getOptions({selected:true});},_pseudoLoadChildren:function(){},onSetStore:function(){}});return _a58;});},"dijit/form/Select":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","./_FormSelectWidget","../_HasDropDown","../DropDownMenu","../MenuItem","../MenuSeparator","../Tooltip","../_KeyNavMixin","../registry","dojo/text!./templates/Select.html","dojo/i18n!./nls/validate"],function(_a89,_a8a,_a8b,_a8c,_a8d,i18n,keys,lang,on,has,_a8e,_a8f,_a90,_a91,_a92,_a93,_a94,_a95,_a96){var _a97=_a8a("dijit.form._SelectMenu",_a90,{autoFocus:true,buildRendering:function(){this.inherited(arguments);this.domNode.setAttribute("role","listbox");},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"selectstart",function(evt){evt.preventDefault();evt.stopPropagation();}));},focus:function(){var _a98=false,val=this.parentWidget.value;if(lang.isArray(val)){val=val[val.length-1];}if(val){_a89.forEach(this.parentWidget._getChildren(),function(_a99){if(_a99.option&&(val===_a99.option.value)){_a98=true;this.focusChild(_a99,false);}},this);}if(!_a98){this.inherited(arguments);}}});var _a9a=_a8a("dijit.form.Select"+(has("dojo-bidi")?"_NoBidi":""),[_a8e,_a8f,_a94],{baseClass:"dijitSelect dijitValidationTextBox",templateString:_a96,_buttonInputDisabled:has("ie")?"disabled":"",required:false,state:"",message:"",tooltipPosition:[],emptyLabel:"&#160;",_isLoaded:false,_childrenLoaded:false,labelType:"html",_fillContent:function(){this.inherited(arguments);if(this.options.length&&!this.value&&this.srcNodeRef){var si=this.srcNodeRef.selectedIndex||0;this._set("value",this.options[si>=0?si:0].value);}this.dropDown=new _a97({id:this.id+"_menu",parentWidget:this});_a8c.add(this.dropDown.domNode,this.baseClass.replace(/\s+|$/g,"Menu "));},_getMenuItemForOption:function(_a9b){if(!_a9b.value&&!_a9b.label){return new _a92({ownerDocument:this.ownerDocument});}else{var _a9c=lang.hitch(this,"_setValueAttr",_a9b);var item=new _a91({option:_a9b,label:(this.labelType==="text"?(_a9b.label||"").toString().replace(/&/g,"&amp;").replace(/</g,"&lt;"):_a9b.label)||this.emptyLabel,onClick:_a9c,ownerDocument:this.ownerDocument,dir:this.dir,textDir:this.textDir,disabled:_a9b.disabled||false});item.focusNode.setAttribute("role","option");return item;}},_addOptionItem:function(_a9d){if(this.dropDown){this.dropDown.addChild(this._getMenuItemForOption(_a9d));}},_getChildren:function(){if(!this.dropDown){return [];}return this.dropDown.getChildren();},focus:function(){if(!this.disabled&&this.focusNode.focus){try{this.focusNode.focus();}catch(e){}}},focusChild:function(_a9e){if(_a9e){this.set("value",_a9e.option);}},_getFirst:function(){var _a9f=this._getChildren();return _a9f.length?_a9f[0]:null;},_getLast:function(){var _aa0=this._getChildren();return _aa0.length?_aa0[_aa0.length-1]:null;},childSelector:function(node){var node=_a95.byNode(node);return node&&node.getParent()==this.dropDown;},onKeyboardSearch:function(item,evt,_aa1,_aa2){if(item){this.focusChild(item);}},_loadChildren:function(_aa3){if(_aa3===true){if(this.dropDown){delete this.dropDown.focusedChild;this.focusedChild=null;}if(this.options.length){this.inherited(arguments);}else{_a89.forEach(this._getChildren(),function(_aa4){_aa4.destroyRecursive();});var item=new _a91({ownerDocument:this.ownerDocument,label:this.emptyLabel});this.dropDown.addChild(item);}}else{this._updateSelection();}this._isLoaded=false;this._childrenLoaded=true;if(!this._loadingStore){this._setValueAttr(this.value,false);}},_refreshState:function(){if(this._started){this.validate(this.focused);}},startup:function(){this.inherited(arguments);this._refreshState();},_setValueAttr:function(_aa5){this.inherited(arguments);_a8b.set(this.valueNode,"value",this.get("value"));this._refreshState();},_setNameAttr:"valueNode",_setDisabledAttr:function(_aa6){this.inherited(arguments);this._refreshState();},_setRequiredAttr:function(_aa7){this._set("required",_aa7);this.focusNode.setAttribute("aria-required",_aa7);this._refreshState();},_setOptionsAttr:function(_aa8){this._isLoaded=false;this._set("options",_aa8);},_setDisplay:function(_aa9){var lbl=(this.labelType==="text"?(_aa9||"").replace(/&/g,"&amp;").replace(/</g,"&lt;"):_aa9)||this.emptyLabel;this.containerNode.innerHTML="<span role=\"option\" aria-selected=\"true\" class=\"dijitReset dijitInline "+this.baseClass.replace(/\s+|$/g,"Label ")+"\">"+lbl+"</span>";},validate:function(_aaa){var _aab=this.disabled||this.isValid(_aaa);this._set("state",_aab?"":(this._hasBeenBlurred?"Error":"Incomplete"));this.focusNode.setAttribute("aria-invalid",_aab?"false":"true");var _aac=_aab?"":this._missingMsg;if(_aac&&this.focused&&this._hasBeenBlurred){_a93.show(_aac,this.domNode,this.tooltipPosition,!this.isLeftToRight());}else{_a93.hide(this.domNode);}this._set("message",_aac);return _aab;},isValid:function(){return (!this.required||this.value===0||!(/^\s*$/.test(this.value||"")));},reset:function(){this.inherited(arguments);_a93.hide(this.domNode);this._refreshState();},postMixInProperties:function(){this.inherited(arguments);this._missingMsg=i18n.getLocalization("dijit.form","validate",this.lang).missingMessage;},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"selectstart",function(evt){evt.preventDefault();evt.stopPropagation();}));this.domNode.setAttribute("aria-expanded","false");var _aad=this._keyNavCodes;delete _aad[keys.LEFT_ARROW];delete _aad[keys.RIGHT_ARROW];},_setStyleAttr:function(_aae){this.inherited(arguments);_a8c.toggle(this.domNode,this.baseClass.replace(/\s+|$/g,"FixedWidth "),!!this.domNode.style.width);},isLoaded:function(){return this._isLoaded;},loadDropDown:function(_aaf){this._loadChildren(true);this._isLoaded=true;_aaf();},destroy:function(_ab0){if(this.dropDown&&!this.dropDown._destroyed){this.dropDown.destroyRecursive(_ab0);delete this.dropDown;}_a93.hide(this.domNode);this.inherited(arguments);},_onFocus:function(){this.validate(true);},_onBlur:function(){_a93.hide(this.domNode);this.inherited(arguments);this.validate(false);}});if(has("dojo-bidi")){_a9a=_a8a("dijit.form.Select",_a9a,{_setDisplay:function(_ab1){this.inherited(arguments);this.applyTextDir(this.containerNode);}});}_a9a._Menu=_a97;function _ab2(_ab3){return function(evt){if(!this._isLoaded){this.loadDropDown(lang.hitch(this,_ab3,evt));}else{this.inherited(_ab3,arguments);}};};_a9a.prototype._onContainerKeydown=_ab2("_onContainerKeydown");_a9a.prototype._onContainerKeypress=_ab2("_onContainerKeypress");return _a9a;});},"dojo/store/util/QueryResults":function(){define(["../../_base/array","../../_base/lang","../../when"],function(_ab4,lang,when){var _ab5=function(_ab6){if(!_ab6){return _ab6;}var _ab7=!!_ab6.then;if(_ab7){_ab6=lang.delegate(_ab6);}function _ab8(_ab9){_ab6[_ab9]=function(){var args=arguments;var _aba=when(_ab6,function(_abb){Array.prototype.unshift.call(args,_abb);return _ab5(_ab4[_ab9].apply(_ab4,args));});if(_ab9!=="forEach"||_ab7){return _aba;}};};_ab8("forEach");_ab8("filter");_ab8("map");if(_ab6.total==null){_ab6.total=when(_ab6,function(_abc){return _abc.length;});}return _ab6;};lang.setObject("dojo.store.util.QueryResults",_ab5);return _ab5;});},"dijit/_KeyNavMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/on","dijit/registry","dijit/_FocusMixin"],function(_abd,_abe,_abf,keys,lang,on,_ac0,_ac1){return _abe("dijit._KeyNavMixin",_ac1,{tabIndex:"0",childSelector:null,postCreate:function(){this.inherited(arguments);_abf.set(this.domNode,"tabIndex",this.tabIndex);if(!this._keyNavCodes){var _ac2=this._keyNavCodes={};_ac2[keys.HOME]=lang.hitch(this,"focusFirstChild");_ac2[keys.END]=lang.hitch(this,"focusLastChild");_ac2[this.isLeftToRight()?keys.LEFT_ARROW:keys.RIGHT_ARROW]=lang.hitch(this,"_onLeftArrow");_ac2[this.isLeftToRight()?keys.RIGHT_ARROW:keys.LEFT_ARROW]=lang.hitch(this,"_onRightArrow");_ac2[keys.UP_ARROW]=lang.hitch(this,"_onUpArrow");_ac2[keys.DOWN_ARROW]=lang.hitch(this,"_onDownArrow");}var self=this,_ac3=typeof this.childSelector=="string"?this.childSelector:lang.hitch(this,"childSelector");this.own(on(this.domNode,"keypress",lang.hitch(this,"_onContainerKeypress")),on(this.domNode,"keydown",lang.hitch(this,"_onContainerKeydown")),on(this.domNode,"focus",lang.hitch(this,"_onContainerFocus")),on(this.containerNode,on.selector(_ac3,"focusin"),function(evt){self._onChildFocus(_ac0.getEnclosingWidget(this),evt);}));},_onLeftArrow:function(){},_onRightArrow:function(){},_onUpArrow:function(){},_onDownArrow:function(){},focus:function(){this.focusFirstChild();},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1);},_getLastFocusableChild:function(){return this._getNextFocusableChild(null,-1);},focusFirstChild:function(){this.focusChild(this._getFirstFocusableChild());},focusLastChild:function(){this.focusChild(this._getLastFocusableChild());},focusChild:function(_ac4,last){if(!_ac4){return;}if(this.focusedChild&&_ac4!==this.focusedChild){this._onChildBlur(this.focusedChild);}_ac4.set("tabIndex",this.tabIndex);_ac4.focus(last?"end":"start");},_onContainerFocus:function(evt){if(evt.target!==this.domNode||this.focusedChild){return;}this.focus();},_onFocus:function(){_abf.set(this.domNode,"tabIndex","-1");this.inherited(arguments);},_onBlur:function(evt){_abf.set(this.domNode,"tabIndex",this.tabIndex);if(this.focusedChild){this.focusedChild.set("tabIndex","-1");this.lastFocusedChild=this.focusedChild;this._set("focusedChild",null);}this.inherited(arguments);},_onChildFocus:function(_ac5){if(_ac5&&_ac5!=this.focusedChild){if(this.focusedChild&&!this.focusedChild._destroyed){this.focusedChild.set("tabIndex","-1");}_ac5.set("tabIndex",this.tabIndex);this.lastFocused=_ac5;this._set("focusedChild",_ac5);}},_searchString:"",multiCharSearchDuration:1000,onKeyboardSearch:function(item,evt,_ac6,_ac7){if(item){this.focusChild(item);}},_keyboardSearchCompare:function(item,_ac8){var _ac9=item.domNode,text=item.label||(_ac9.focusNode?_ac9.focusNode.label:"")||_ac9.innerText||_ac9.textContent||"",_aca=text.replace(/^\s+/,"").substr(0,_ac8.length).toLowerCase();return (!!_ac8.length&&_aca==_ac8)?-1:0;},_onContainerKeydown:function(evt){var func=this._keyNavCodes[evt.keyCode];if(func){func(evt,this.focusedChild);evt.stopPropagation();evt.preventDefault();this._searchString="";}else{if(evt.keyCode==keys.SPACE&&this._searchTimer&&!(evt.ctrlKey||evt.altKey||evt.metaKey)){evt.stopImmediatePropagation();evt.preventDefault();this._keyboardSearch(evt," ");}}},_onContainerKeypress:function(evt){if(evt.charCode<=keys.SPACE||evt.ctrlKey||evt.altKey||evt.metaKey){return;}evt.preventDefault();evt.stopPropagation();this._keyboardSearch(evt,String.fromCharCode(evt.charCode).toLowerCase());},_keyboardSearch:function(evt,_acb){var _acc=null,_acd,_ace=0,_acf=lang.hitch(this,function(){if(this._searchTimer){this._searchTimer.remove();}this._searchString+=_acb;var _ad0=/^(.)\1*$/.test(this._searchString);var _ad1=_ad0?1:this._searchString.length;_acd=this._searchString.substr(0,_ad1);this._searchTimer=this.defer(function(){this._searchTimer=null;this._searchString="";},this.multiCharSearchDuration);var _ad2=this.focusedChild||null;if(_ad1==1||!_ad2){_ad2=this._getNextFocusableChild(_ad2,1);if(!_ad2){return;}}var stop=_ad2;do{var rc=this._keyboardSearchCompare(_ad2,_acd);if(!!rc&&_ace++==0){_acc=_ad2;}if(rc==-1){_ace=-1;break;}_ad2=this._getNextFocusableChild(_ad2,1);}while(_ad2&&_ad2!=stop);});_acf();this.onKeyboardSearch(_acc,evt,_acd,_ace);},_onChildBlur:function(){},_getNextFocusableChild:function(_ad3,dir){var _ad4=_ad3;do{if(!_ad3){_ad3=this[dir>0?"_getFirst":"_getLast"]();if(!_ad3){break;}}else{_ad3=this._getNext(_ad3,dir);}if(_ad3!=null&&_ad3!=_ad4&&_ad3.isFocusable()){return _ad3;}}while(_ad3!=_ad4);return null;},_getFirst:function(){return null;},_getLast:function(){return null;},_getNext:function(_ad5,dir){if(_ad5){_ad5=_ad5.domNode;while(_ad5){_ad5=_ad5[dir<0?"previousSibling":"nextSibling"];if(_ad5&&"getAttribute" in _ad5){var w=_ac0.byNode(_ad5);if(w){return w;}}}}return null;}});});},"dijit/form/_ListBase":function(){define(["dojo/_base/declare","dojo/on","dojo/window"],function(_ad6,on,_ad7){return _ad6("dijit.form._ListBase",null,{selected:null,_listConnect:function(_ad8,_ad9){var self=this;return self.own(on(self.containerNode,on.selector(function(_ada,_adb,_adc){return _ada.parentNode==_adc;},_ad8),function(evt){self[_ad9](evt,this);}));},selectFirstNode:function(){var _add=this.containerNode.firstChild;while(_add&&_add.style.display=="none"){_add=_add.nextSibling;}this._setSelectedAttr(_add,true);},selectLastNode:function(){var last=this.containerNode.lastChild;while(last&&last.style.display=="none"){last=last.previousSibling;}this._setSelectedAttr(last,true);},selectNextNode:function(){var _ade=this.selected;if(!_ade){this.selectFirstNode();}else{var next=_ade.nextSibling;while(next&&next.style.display=="none"){next=next.nextSibling;}if(!next){this.selectFirstNode();}else{this._setSelectedAttr(next,true);}}},selectPreviousNode:function(){var _adf=this.selected;if(!_adf){this.selectLastNode();}else{var prev=_adf.previousSibling;while(prev&&prev.style.display=="none"){prev=prev.previousSibling;}if(!prev){this.selectLastNode();}else{this._setSelectedAttr(prev,true);}}},_setSelectedAttr:function(node,_ae0){if(this.selected!=node){var _ae1=this.selected;if(_ae1){this.onDeselect(_ae1);}if(node){if(_ae0){_ad7.scrollIntoView(node);}this.onSelect(node);}this._set("selected",node);}else{if(node){this.onSelect(node);}}}});});},"dijit/form/_FormWidget":function(){define(["dojo/_base/declare","dojo/sniff","dojo/_base/kernel","dojo/ready","../_Widget","../_CssStateMixin","../_TemplatedMixin","./_FormWidgetMixin"],function(_ae2,has,_ae3,_ae4,_ae5,_ae6,_ae7,_ae8){if(has("dijit-legacy-requires")){_ae4(0,function(){var _ae9=["dijit/form/_FormValueWidget"];require(_ae9);});}return _ae2("dijit.form._FormWidget",[_ae5,_ae7,_ae6,_ae8],{setDisabled:function(_aea){_ae3.deprecated("setDisabled("+_aea+") is deprecated. Use set('disabled',"+_aea+") instead.","","2.0");this.set("disabled",_aea);},setValue:function(_aeb){_ae3.deprecated("dijit.form._FormWidget:setValue("+_aeb+") is deprecated. Use set('value',"+_aeb+") instead.","","2.0");this.set("value",_aeb);},getValue:function(){_ae3.deprecated(this.declaredClass+"::getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},postMixInProperties:function(){this.nameAttrSetting=(this.name&&!has("msapp"))?("name=\""+this.name.replace(/"/g,"&quot;")+"\""):"";this.inherited(arguments);}});});},"dojo/dnd/common":function(){define(["../sniff","../_base/kernel","../_base/lang","../dom"],function(has,_aec,lang,dom){var _aed=lang.getObject("dojo.dnd",true);_aed.getCopyKeyState=function(evt){return evt[has("mac")?"metaKey":"ctrlKey"];};_aed._uniqueId=0;_aed.getUniqueId=function(){var id;do{id=_aec._scopeName+"Unique"+(++_aed._uniqueId);}while(dom.byId(id));return id;};_aed._empty={};_aed.isFormElement=function(e){var t=e.target;if(t.nodeType==3){t=t.parentNode;}return " a button textarea input select option ".indexOf(" "+t.tagName.toLowerCase()+" ")>=0;};return _aed;});},"dijit/CheckedMenuItem":function(){define(["dojo/_base/declare","dojo/dom-class","./MenuItem","dojo/text!./templates/CheckedMenuItem.html","./hccss"],function(_aee,_aef,_af0,_af1){return _aee("dijit.CheckedMenuItem",_af0,{baseClass:"dijitMenuItem dijitCheckedMenuItem",templateString:_af1,checked:false,_setCheckedAttr:function(_af2){this.domNode.setAttribute("aria-checked",_af2?"true":"false");this._set("checked",_af2);},iconClass:"",role:"menuitemcheckbox",checkedChar:"&#10003;",onChange:function(){},_onClick:function(evt){if(!this.disabled){this.set("checked",!this.checked);this.onChange(this.checked);}this.onClick(evt);}});});},"dijit/Viewport":function(){define(["dojo/Evented","dojo/on","dojo/domReady","dojo/sniff","dojo/window"],function(_af3,on,_af4,has,_af5){var _af6=new _af3();var _af7;_af4(function(){var _af8=_af5.getBox();_af6._rlh=on(window,"resize",function(){var _af9=_af5.getBox();if(_af8.h==_af9.h&&_af8.w==_af9.w){return;}_af8=_af9;_af6.emit("resize");});if(has("ie")==8){var _afa=screen.deviceXDPI;setInterval(function(){if(screen.deviceXDPI!=_afa){_afa=screen.deviceXDPI;_af6.emit("resize");}},500);}if(has("ios")){on(document,"focusin",function(evt){_af7=evt.target;});on(document,"focusout",function(evt){_af7=null;});}});_af6.getEffectiveBox=function(doc){var box=_af5.getBox(doc);var tag=_af7&&_af7.tagName&&_af7.tagName.toLowerCase();if(has("ios")&&_af7&&!_af7.readOnly&&(tag=="textarea"||(tag=="input"&&/^(color|email|number|password|search|tel|text|url)$/.test(_af7.type)))){box.h*=(orientation==0||orientation==180?0.66:0.4);var rect=_af7.getBoundingClientRect();box.h=Math.max(box.h,rect.top+rect.height);}return box;};return _af6;});},"dijit/_base/place":function(){define(["dojo/_base/array","dojo/_base/lang","dojo/window","../place","../main"],function(_afb,lang,_afc,_afd,_afe){var _aff={};_aff.getViewport=function(){return _afc.getBox();};_aff.placeOnScreen=_afd.at;_aff.placeOnScreenAroundElement=function(node,_b00,_b01,_b02){var _b03;if(lang.isArray(_b01)){_b03=_b01;}else{_b03=[];for(var key in _b01){_b03.push({aroundCorner:key,corner:_b01[key]});}}return _afd.around(node,_b00,_b03,true,_b02);};_aff.placeOnScreenAroundNode=_aff.placeOnScreenAroundElement;_aff.placeOnScreenAroundRectangle=_aff.placeOnScreenAroundElement;_aff.getPopupAroundAlignment=function(_b04,_b05){var _b06={};_afb.forEach(_b04,function(pos){var ltr=_b05;switch(pos){case "after":_b06[_b05?"BR":"BL"]=_b05?"BL":"BR";break;case "before":_b06[_b05?"BL":"BR"]=_b05?"BR":"BL";break;case "below-alt":ltr=!ltr;case "below":_b06[ltr?"BL":"BR"]=ltr?"TL":"TR";_b06[ltr?"BR":"BL"]=ltr?"TR":"TL";break;case "above-alt":ltr=!ltr;case "above":default:_b06[ltr?"TL":"TR"]=ltr?"BL":"BR";_b06[ltr?"TR":"TL"]=ltr?"BR":"BL";break;}});return _b06;};lang.mixin(_afe,_aff);return _afe;});},"dijit/MenuSeparator":function(){define(["dojo/_base/declare","dojo/dom","./_WidgetBase","./_TemplatedMixin","./_Contained","dojo/text!./templates/MenuSeparator.html"],function(_b07,dom,_b08,_b09,_b0a,_b0b){return _b07("dijit.MenuSeparator",[_b08,_b09,_b0a],{templateString:_b0b,buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});});},"dijit/form/_ComboBoxMenu":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/dom-style","dojo/keys","../_WidgetBase","../_TemplatedMixin","./_ComboBoxMenuMixin","./_ListMouseMixin"],function(_b0c,_b0d,_b0e,keys,_b0f,_b10,_b11,_b12){return _b0c("dijit.form._ComboBoxMenu",[_b0f,_b10,_b12,_b11],{templateString:"<div class='dijitReset dijitMenu' data-dojo-attach-point='containerNode' style='overflow: auto; overflow-x: hidden;' role='listbox'>"+"<div class='dijitMenuItem dijitMenuPreviousButton' data-dojo-attach-point='previousButton' role='option'></div>"+"<div class='dijitMenuItem dijitMenuNextButton' data-dojo-attach-point='nextButton' role='option'></div>"+"</div>",baseClass:"dijitComboBoxMenu",postCreate:function(){this.inherited(arguments);if(!this.isLeftToRight()){_b0d.add(this.previousButton,"dijitMenuItemRtl");_b0d.add(this.nextButton,"dijitMenuItemRtl");}this.containerNode.setAttribute("role","listbox");},_createMenuItem:function(){var item=this.ownerDocument.createElement("div");item.className="dijitReset dijitMenuItem"+(this.isLeftToRight()?"":" dijitMenuItemRtl");item.setAttribute("role","option");return item;},onHover:function(node){_b0d.add(node,"dijitMenuItemHover");},onUnhover:function(node){_b0d.remove(node,"dijitMenuItemHover");},onSelect:function(node){_b0d.add(node,"dijitMenuItemSelected");},onDeselect:function(node){_b0d.remove(node,"dijitMenuItemSelected");},_page:function(up){var _b13=0;var _b14=this.domNode.scrollTop;var _b15=_b0e.get(this.domNode,"height");if(!this.getHighlightedOption()){this.selectNextNode();}while(_b13<_b15){var _b16=this.getHighlightedOption();if(up){if(!_b16.previousSibling||_b16.previousSibling.style.display=="none"){break;}this.selectPreviousNode();}else{if(!_b16.nextSibling||_b16.nextSibling.style.display=="none"){break;}this.selectNextNode();}var _b17=this.domNode.scrollTop;_b13+=(_b17-_b14)*(up?-1:1);_b14=_b17;}},handleKey:function(evt){switch(evt.keyCode){case keys.DOWN_ARROW:this.selectNextNode();return false;case keys.PAGE_DOWN:this._page(false);return false;case keys.UP_ARROW:this.selectPreviousNode();return false;case keys.PAGE_UP:this._page(true);return false;default:return true;}}});});},"dijit/Dialog":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/Deferred","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/fx","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/ready","dojo/sniff","dojo/touch","dojo/window","dojo/dnd/Moveable","dojo/dnd/TimedMoveable","./focus","./_base/manager","./_Widget","./_TemplatedMixin","./_CssStateMixin","./form/_FormMixin","./_DialogMixin","./DialogUnderlay","./layout/ContentPane","./layout/utils","dojo/text!./templates/Dialog.html","./a11yclick","dojo/i18n!./nls/common"],function(_b18,_b19,_b1a,_b1b,_b1c,dom,_b1d,_b1e,_b1f,fx,i18n,keys,lang,on,_b20,has,_b21,_b22,_b23,_b24,_b25,_b26,_b27,_b28,_b29,_b2a,_b2b,_b2c,_b2d,_b2e,_b2f){var _b30=new _b1c();_b30.resolve(true);function nop(){};var _b31=_b1b("dijit._DialogBase"+(has("dojo-bidi")?"_NoBidi":""),[_b28,_b2a,_b2b,_b29],{templateString:_b2f,baseClass:"dijitDialog",cssStateNodes:{closeButtonNode:"dijitDialogCloseIcon"},_setTitleAttr:{node:"titleNode",type:"innerHTML"},open:false,duration:_b26.defaultDuration,refocus:true,autofocus:true,_firstFocusItem:null,_lastFocusItem:null,draggable:true,_setDraggableAttr:function(val){this._set("draggable",val);},maxRatio:0.9,closable:true,_setClosableAttr:function(val){this.closeButtonNode.style.display=val?"":"none";this._set("closable",val);},postMixInProperties:function(){var _b32=i18n.getLocalization("dijit","common");lang.mixin(this,_b32);this.inherited(arguments);},postCreate:function(){_b1f.set(this.domNode,{display:"none",position:"absolute"});this.ownerDocumentBody.appendChild(this.domNode);this.inherited(arguments);_b1a.after(this,"onExecute",lang.hitch(this,"hide"),true);_b1a.after(this,"onCancel",lang.hitch(this,"hide"),true);on(this.closeButtonNode,_b21.press,function(e){e.stopPropagation();});this._modalconnects=[];},onLoad:function(){this.resize();this._position();if(this.autofocus&&_b33.isTop(this)){this._getFocusItems();_b25.focus(this._firstFocusItem);}this.inherited(arguments);},focus:function(){this._getFocusItems();_b25.focus(this._firstFocusItem);},_endDrag:function(){var _b34=_b1e.position(this.domNode),_b35=_b22.getBox(this.ownerDocument);_b34.y=Math.min(Math.max(_b34.y,0),(_b35.h-_b34.h));_b34.x=Math.min(Math.max(_b34.x,0),(_b35.w-_b34.w));this._relativePosition=_b34;this._position();},_setup:function(){var node=this.domNode;if(this.titleBar&&this.draggable){this._moveable=new ((has("ie")==6)?_b24:_b23)(node,{handle:this.titleBar});_b1a.after(this._moveable,"onMoveStop",lang.hitch(this,"_endDrag"),true);}else{_b1d.add(node,"dijitDialogFixed");}this.underlayAttrs={dialogId:this.id,"class":_b19.map(this["class"].split(/\s/),function(s){return s+"_underlay";}).join(" "),_onKeyDown:lang.hitch(this,"_onKey"),ownerDocument:this.ownerDocument};},_size:function(){this.resize();},_position:function(){if(!_b1d.contains(this.ownerDocumentBody,"dojoMove")){var node=this.domNode,_b36=_b22.getBox(this.ownerDocument),p=this._relativePosition,bb=_b1e.position(node),l=Math.floor(_b36.l+(p?Math.min(p.x,_b36.w-bb.w):(_b36.w-bb.w)/2)),t=Math.floor(_b36.t+(p?Math.min(p.y,_b36.h-bb.h):(_b36.h-bb.h)/2));_b1f.set(node,{left:l+"px",top:t+"px"});}},_onKey:function(evt){if(evt.keyCode==keys.TAB){this._getFocusItems();var node=evt.target;if(this._firstFocusItem==this._lastFocusItem){evt.stopPropagation();evt.preventDefault();}else{if(node==this._firstFocusItem&&evt.shiftKey){_b25.focus(this._lastFocusItem);evt.stopPropagation();evt.preventDefault();}else{if(node==this._lastFocusItem&&!evt.shiftKey){_b25.focus(this._firstFocusItem);evt.stopPropagation();evt.preventDefault();}}}}else{if(this.closable&&evt.keyCode==keys.ESCAPE){this.onCancel();evt.stopPropagation();evt.preventDefault();}}},show:function(){if(this.open){return _b30.promise;}if(!this._started){this.startup();}if(!this._alreadyInitialized){this._setup();this._alreadyInitialized=true;}if(this._fadeOutDeferred){this._fadeOutDeferred.cancel();_b33.hide(this);}var win=_b22.get(this.ownerDocument);this._modalconnects.push(on(win,"scroll",lang.hitch(this,"resize",null)));this._modalconnects.push(on(this.domNode,"keydown",lang.hitch(this,"_onKey")));_b1f.set(this.domNode,{opacity:0,display:""});this._set("open",true);this._onShow();this.resize();this._position();var _b37;this._fadeInDeferred=new _b1c(lang.hitch(this,function(){_b37.stop();delete this._fadeInDeferred;}));this._fadeInDeferred.then(undefined,nop);var _b38=this._fadeInDeferred.promise;_b37=fx.fadeIn({node:this.domNode,duration:this.duration,beforeBegin:lang.hitch(this,function(){_b33.show(this,this.underlayAttrs);}),onEnd:lang.hitch(this,function(){if(this.autofocus&&_b33.isTop(this)){this._getFocusItems();_b25.focus(this._firstFocusItem);}this._fadeInDeferred.resolve(true);delete this._fadeInDeferred;})}).play();return _b38;},hide:function(){if(!this._alreadyInitialized||!this.open){return _b30.promise;}if(this._fadeInDeferred){this._fadeInDeferred.cancel();}var _b39;this._fadeOutDeferred=new _b1c(lang.hitch(this,function(){_b39.stop();delete this._fadeOutDeferred;}));this._fadeOutDeferred.then(undefined,nop);this._fadeOutDeferred.then(lang.hitch(this,"onHide"));var _b3a=this._fadeOutDeferred.promise;_b39=fx.fadeOut({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,function(){this.domNode.style.display="none";_b33.hide(this);this._fadeOutDeferred.resolve(true);delete this._fadeOutDeferred;})}).play();if(this._scrollConnected){this._scrollConnected=false;}var h;while(h=this._modalconnects.pop()){h.remove();}if(this._relativePosition){delete this._relativePosition;}this._set("open",false);return _b3a;},resize:function(dim){if(this.domNode.style.display!="none"){this._checkIfSingleChild();if(!dim){if(this._shrunk){if(this._singleChild){if(typeof this._singleChildOriginalStyle!="undefined"){this._singleChild.domNode.style.cssText=this._singleChildOriginalStyle;delete this._singleChildOriginalStyle;}}_b19.forEach([this.domNode,this.containerNode,this.titleBar,this.actionBarNode],function(node){if(node){_b1f.set(node,{position:"static",width:"auto",height:"auto"});}});this.domNode.style.position="absolute";}var _b3b=_b22.getBox(this.ownerDocument);_b3b.w*=this.maxRatio;_b3b.h*=this.maxRatio;var bb=_b1e.position(this.domNode);this._shrunk=false;if(bb.w>=_b3b.w){dim={w:_b3b.w};_b1e.setMarginBox(this.domNode,dim);bb=_b1e.position(this.domNode);this._shrunk=true;}if(bb.h>=_b3b.h){if(!dim){dim={w:bb.w};}dim.h=_b3b.h;this._shrunk=true;}if(dim){if(!dim.w){dim.w=bb.w;}if(!dim.h){dim.h=bb.h;}}}if(dim){_b1e.setMarginBox(this.domNode,dim);var _b3c=[];if(this.titleBar){_b3c.push({domNode:this.titleBar,region:"top"});}if(this.actionBarNode){_b3c.push({domNode:this.actionBarNode,region:"bottom"});}var _b3d={domNode:this.containerNode,region:"center"};_b3c.push(_b3d);var _b3e=_b2e.marginBox2contentBox(this.domNode,dim);_b2e.layoutChildren(this.domNode,_b3e,_b3c);if(this._singleChild){var cb=_b2e.marginBox2contentBox(this.containerNode,_b3d);this._singleChild.resize({w:cb.w,h:cb.h});}else{this.containerNode.style.overflow="auto";this._layoutChildren();}}else{this._layoutChildren();}if(!has("touch")&&!dim){this._position();}}},_layoutChildren:function(){_b19.forEach(this.getChildren(),function(_b3f){if(_b3f.resize){_b3f.resize();}});},destroy:function(){if(this._fadeInDeferred){this._fadeInDeferred.cancel();}if(this._fadeOutDeferred){this._fadeOutDeferred.cancel();}if(this._moveable){this._moveable.destroy();}var h;while(h=this._modalconnects.pop()){h.remove();}_b33.hide(this);this.inherited(arguments);}});if(has("dojo-bidi")){_b31=_b1b("dijit._DialogBase",_b31,{_setTitleAttr:function(_b40){this._set("title",_b40);this.titleNode.innerHTML=_b40;this.applyTextDir(this.titleNode);},_setTextDirAttr:function(_b41){if(this._created&&this.textDir!=_b41){this._set("textDir",_b41);this.set("title",this.title);}}});}var _b42=_b1b("dijit.Dialog",[_b2d,_b31],{});_b42._DialogBase=_b31;var _b33=_b42._DialogLevelManager={_beginZIndex:950,show:function(_b43,_b44){ds[ds.length-1].focus=_b25.curNode;var _b45=ds[ds.length-1].dialog?ds[ds.length-1].zIndex+2:_b42._DialogLevelManager._beginZIndex;_b1f.set(_b43.domNode,"zIndex",_b45);_b2c.show(_b44,_b45-1);ds.push({dialog:_b43,underlayAttrs:_b44,zIndex:_b45});},hide:function(_b46){if(ds[ds.length-1].dialog==_b46){ds.pop();var pd=ds[ds.length-1];if(ds.length==1){_b2c.hide();}else{_b2c.show(pd.underlayAttrs,pd.zIndex-1);}if(_b46.refocus){var _b47=pd.focus;if(pd.dialog&&(!_b47||!dom.isDescendant(_b47,pd.dialog.domNode))){pd.dialog._getFocusItems();_b47=pd.dialog._firstFocusItem;}if(_b47){try{_b47.focus();}catch(e){}}}}else{var idx=_b19.indexOf(_b19.map(ds,function(elem){return elem.dialog;}),_b46);if(idx!=-1){ds.splice(idx,1);}}},isTop:function(_b48){return ds[ds.length-1].dialog==_b48;}};var ds=_b42._dialogStack=[{dialog:null,focus:null,underlayAttrs:null}];_b25.watch("curNode",function(attr,_b49,node){var _b4a=ds[ds.length-1].dialog;if(node&&_b4a&&!_b4a._fadeOutDeferred&&node.ownerDocument==_b4a.ownerDocument){do{if(node==_b4a.domNode||_b1d.contains(node,"dijitPopup")){return;}}while(node=node.parentNode);_b4a.focus();}});if(has("dijit-legacy-requires")){_b20(0,function(){var _b4b=["dijit/TooltipDialog"];_b18(_b4b);});}return _b42;});},"dijit/form/MultiSelect":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-geometry","dojo/sniff","dojo/query","./_FormValueWidget","dojo/NodeList-dom"],function(_b4c,_b4d,_b4e,has,_b4f,_b50){var _b51=_b4d("dijit.form.MultiSelect"+(has("dojo-bidi")?"_NoBidi":""),_b50,{size:7,baseClass:"dijitMultiSelect",templateString:"<select multiple='multiple' ${!nameAttrSetting} data-dojo-attach-point='containerNode,focusNode' data-dojo-attach-event='onchange: _onChange'></select>",addSelected:function(_b52){_b52.getSelected().forEach(function(n){this.containerNode.appendChild(n);this.domNode.scrollTop=this.domNode.offsetHeight;var _b53=_b52.domNode.scrollTop;_b52.domNode.scrollTop=0;_b52.domNode.scrollTop=_b53;},this);this._set("value",this.get("value"));},getSelected:function(){return _b4f("option",this.containerNode).filter(function(n){return n.selected;});},_getValueAttr:function(){return _b4c.map(this.getSelected(),function(n){return n.value;});},multiple:true,_setMultipleAttr:function(val){},_setValueAttr:function(_b54){if(has("android")){_b4f("option",this.containerNode).orphan().forEach(function(n){var _b55=n.ownerDocument.createElement("option");_b55.value=n.value;_b55.selected=(_b4c.indexOf(_b54,n.value)!=-1);_b55.text=n.text;_b55.originalText=n.originalText;this.containerNode.appendChild(_b55);},this);}else{_b4f("option",this.containerNode).forEach(function(n){n.selected=(_b4c.indexOf(_b54,n.value)!=-1);});}this.inherited(arguments);},invertSelection:function(_b56){var val=[];_b4f("option",this.containerNode).forEach(function(n){if(!n.selected){val.push(n.value);}});this._setValueAttr(val,!(_b56===false||_b56==null));},_onChange:function(){this._handleOnChange(this.get("value"),true);},resize:function(size){if(size){_b4e.setMarginBox(this.domNode,size);}},postCreate:function(){this._set("value",this.get("value"));this.inherited(arguments);}});if(has("dojo-bidi")){_b51=_b4d("dijit.form.MultiSelect",_b51,{addSelected:function(_b57){_b57.getSelected().forEach(function(n){n.text=this.enforceTextDirWithUcc(this.restoreOriginalText(n),n.text);},this);this.inherited(arguments);},_setTextDirAttr:function(_b58){if((this.textDir!=_b58||!this._created)&&this.enforceTextDirWithUcc){this._set("textDir",_b58);_b4f("option",this.containerNode).forEach(function(_b59){if(!this._created&&_b59.value===_b59.text){_b59.value=_b59.text;}_b59.text=this.enforceTextDirWithUcc(_b59,_b59.originalText||_b59.text);},this);}}});}return _b51;});},"dijit/_base/focus":function(){define(["dojo/_base/array","dojo/dom","dojo/_base/lang","dojo/topic","dojo/_base/window","../focus","../selection","../main"],function(_b5a,dom,lang,_b5b,win,_b5c,_b5d,_b5e){var _b5f={_curFocus:null,_prevFocus:null,isCollapsed:function(){return _b5e.getBookmark().isCollapsed;},getBookmark:function(){var sel=win.global==window?_b5d:new _b5d.SelectionManager(win.global);return sel.getBookmark();},moveToBookmark:function(_b60){var sel=win.global==window?_b5d:new _b5d.SelectionManager(win.global);return sel.moveToBookmark(_b60);},getFocus:function(menu,_b61){var node=!_b5c.curNode||(menu&&dom.isDescendant(_b5c.curNode,menu.domNode))?_b5e._prevFocus:_b5c.curNode;return {node:node,bookmark:node&&(node==_b5c.curNode)&&win.withGlobal(_b61||win.global,_b5e.getBookmark),openedForWindow:_b61};},_activeStack:[],registerIframe:function(_b62){return _b5c.registerIframe(_b62);},unregisterIframe:function(_b63){_b63&&_b63.remove();},registerWin:function(_b64,_b65){return _b5c.registerWin(_b64,_b65);},unregisterWin:function(_b66){_b66&&_b66.remove();}};_b5c.focus=function(_b67){if(!_b67){return;}var node="node" in _b67?_b67.node:_b67,_b68=_b67.bookmark,_b69=_b67.openedForWindow,_b6a=_b68?_b68.isCollapsed:false;if(node){var _b6b=(node.tagName.toLowerCase()=="iframe")?node.contentWindow:node;if(_b6b&&_b6b.focus){try{_b6b.focus();}catch(e){}}_b5c._onFocusNode(node);}if(_b68&&win.withGlobal(_b69||win.global,_b5e.isCollapsed)&&!_b6a){if(_b69){_b69.focus();}try{win.withGlobal(_b69||win.global,_b5e.moveToBookmark,null,[_b68]);}catch(e2){}}};_b5c.watch("curNode",function(name,_b6c,_b6d){_b5e._curFocus=_b6d;_b5e._prevFocus=_b6c;if(_b6d){_b5b.publish("focusNode",_b6d);}});_b5c.watch("activeStack",function(name,_b6e,_b6f){_b5e._activeStack=_b6f;});_b5c.on("widget-blur",function(_b70,by){_b5b.publish("widgetBlur",_b70,by);});_b5c.on("widget-focus",function(_b71,by){_b5b.publish("widgetFocus",_b71,by);});lang.mixin(_b5e,_b5f);return _b5e;});},"dijit/tree/dndSource":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dnd/common","dojo/dom-class","dojo/dom-geometry","dojo/_base/lang","dojo/mouse","dojo/on","dojo/touch","dojo/topic","dojo/dnd/Manager","./_dndSelector"],function(_b72,_b73,_b74,_b75,_b76,lang,_b77,on,_b78,_b79,_b7a,_b7b){var _b7c=_b73("dijit.tree.dndSource",_b7b,{isSource:true,accept:["text","treeNode"],copyOnly:false,dragThreshold:5,betweenThreshold:0,generateText:true,constructor:function(tree,_b7d){if(!_b7d){_b7d={};}lang.mixin(this,_b7d);var type=_b7d.accept instanceof Array?_b7d.accept:["text","treeNode"];this.accept=null;if(type.length){this.accept={};for(var i=0;i<type.length;++i){this.accept[type[i]]=1;}}this.isDragging=false;this.mouseDown=false;this.targetAnchor=null;this.targetBox=null;this.dropPosition="";this._lastX=0;this._lastY=0;this.sourceState="";if(this.isSource){_b75.add(this.node,"dojoDndSource");}this.targetState="";if(this.accept){_b75.add(this.node,"dojoDndTarget");}this.topics=[_b79.subscribe("/dnd/source/over",lang.hitch(this,"onDndSourceOver")),_b79.subscribe("/dnd/start",lang.hitch(this,"onDndStart")),_b79.subscribe("/dnd/drop",lang.hitch(this,"onDndDrop")),_b79.subscribe("/dnd/cancel",lang.hitch(this,"onDndCancel"))];},checkAcceptance:function(){return true;},copyState:function(_b7e){return this.copyOnly||_b7e;},destroy:function(){this.inherited(arguments);var h;while(h=this.topics.pop()){h.remove();}this.targetAnchor=null;},_onDragMouse:function(e,_b7f){var m=_b7a.manager(),_b80=this.targetAnchor,_b81=this.current,_b82=this.dropPosition;var _b83="Over";if(_b81&&this.betweenThreshold>0){if(!this.targetBox||_b80!=_b81){this.targetBox=_b76.position(_b81.rowNode,true);}if((e.pageY-this.targetBox.y)<=this.betweenThreshold){_b83="Before";}else{if((e.pageY-this.targetBox.y)>=(this.targetBox.h-this.betweenThreshold)){_b83="After";}}}if(_b7f||_b81!=_b80||_b83!=_b82){if(_b80){this._removeItemClass(_b80.rowNode,_b82);}if(_b81){this._addItemClass(_b81.rowNode,_b83);}if(!_b81){m.canDrop(false);}else{if(_b81==this.tree.rootNode&&_b83!="Over"){m.canDrop(false);}else{var _b84=false,_b85=false;if(m.source==this){_b85=(_b83==="Over");for(var _b86 in this.selection){var _b87=this.selection[_b86];if(_b87.item===_b81.item){_b84=true;break;}if(_b87.getParent().id!==_b81.id){_b85=false;}}}m.canDrop(!_b84&&!_b85&&!this._isParentChildDrop(m.source,_b81.rowNode)&&this.checkItemAcceptance(_b81.rowNode,m.source,_b83.toLowerCase()));}}this.targetAnchor=_b81;this.dropPosition=_b83;}},onMouseMove:function(e){if(this.isDragging&&this.targetState=="Disabled"){return;}this.inherited(arguments);var m=_b7a.manager();if(this.isDragging){this._onDragMouse(e);}else{if(this.mouseDown&&this.isSource&&(Math.abs(e.pageX-this._lastX)>=this.dragThreshold||Math.abs(e.pageY-this._lastY)>=this.dragThreshold)){var _b88=this.getSelectedTreeNodes();if(_b88.length){if(_b88.length>1){var seen=this.selection,i=0,r=[],n,p;nextitem:while((n=_b88[i++])){for(p=n.getParent();p&&p!==this.tree;p=p.getParent()){if(seen[p.id]){continue nextitem;}}r.push(n);}_b88=r;}_b88=_b72.map(_b88,function(n){return n.domNode;});m.startDrag(this,_b88,this.copyState(_b74.getCopyKeyState(e)));this._onDragMouse(e,true);}}}},onMouseDown:function(e){if(e.type=="touchstart"||_b77.isLeft(e)){this.mouseDown=true;this.mouseButton=e.button;this._lastX=e.pageX;this._lastY=e.pageY;}this.inherited(arguments);},onMouseUp:function(e){if(this.mouseDown){this.mouseDown=false;this.inherited(arguments);}},onMouseOut:function(){this.inherited(arguments);this._unmarkTargetAnchor();},checkItemAcceptance:function(){return true;},onDndSourceOver:function(_b89){if(this!=_b89){this.mouseDown=false;this._unmarkTargetAnchor();}else{if(this.isDragging){var m=_b7a.manager();m.canDrop(false);}}},onDndStart:function(_b8a,_b8b,copy){if(this.isSource){this._changeState("Source",this==_b8a?(copy?"Copied":"Moved"):"");}var _b8c=this.checkAcceptance(_b8a,_b8b);this._changeState("Target",_b8c?"":"Disabled");if(this==_b8a){_b7a.manager().overSource(this);}this.isDragging=true;},itemCreator:function(_b8d){return _b72.map(_b8d,function(node){return {"id":node.id,"name":node.textContent||node.innerText||""};});},onDndDrop:function(_b8e,_b8f,copy){if(this.containerState=="Over"){var tree=this.tree,_b90=tree.model,_b91=this.targetAnchor,_b92=false;this.isDragging=false;var _b93;var _b94;var _b95;_b93=(_b91&&_b91.item)||tree.item;if(this.dropPosition=="Before"||this.dropPosition=="After"){_b93=(_b91.getParent()&&_b91.getParent().item)||tree.item;_b94=_b91.getIndexInParent();if(this.dropPosition=="After"){_b94=_b91.getIndexInParent()+1;_b95=_b91.getNextSibling()&&_b91.getNextSibling().item;}else{_b95=_b91.item;}}else{_b93=(_b91&&_b91.item)||tree.item;_b92=true;}var _b96;_b72.forEach(_b8f,function(node,idx){var _b97=_b8e.getItem(node.id);if(_b72.indexOf(_b97.type,"treeNode")!=-1){var _b98=_b97.data,_b99=_b98.item,_b9a=_b98.getParent().item;}if(_b8e==this){if(typeof _b94=="number"){if(_b93==_b9a&&_b98.getIndexInParent()<_b94){_b94-=1;}}_b90.pasteItem(_b99,_b9a,_b93,copy,_b94,_b95);}else{if(_b90.isItem(_b99)){_b90.pasteItem(_b99,_b9a,_b93,copy,_b94,_b95);}else{if(!_b96){_b96=this.itemCreator(_b8f,_b91.rowNode,_b8e);}_b90.newItem(_b96[idx],_b93,_b94,_b95);}}},this);if(_b92){this.tree._expandNode(_b91);}}this.onDndCancel();},onDndCancel:function(){this._unmarkTargetAnchor();this.isDragging=false;this.mouseDown=false;delete this.mouseButton;this._changeState("Source","");this._changeState("Target","");},onOverEvent:function(){this.inherited(arguments);_b7a.manager().overSource(this);},onOutEvent:function(){this._unmarkTargetAnchor();var m=_b7a.manager();if(this.isDragging){m.canDrop(false);}m.outSource(this);this.inherited(arguments);},_isParentChildDrop:function(_b9b,_b9c){if(!_b9b.tree||_b9b.tree!=this.tree){return false;}var root=_b9b.tree.domNode;var ids=_b9b.selection;var node=_b9c.parentNode;while(node!=root&&!ids[node.id]){node=node.parentNode;}return node.id&&ids[node.id];},_unmarkTargetAnchor:function(){if(!this.targetAnchor){return;}this._removeItemClass(this.targetAnchor.rowNode,this.dropPosition);this.targetAnchor=null;this.targetBox=null;this.dropPosition=null;},_markDndStatus:function(copy){this._changeState("Source",copy?"Copied":"Moved");}});return _b7c;});},"dijit/a11y":function(){define(["dojo/_base/array","dojo/dom","dojo/dom-attr","dojo/dom-style","dojo/_base/lang","dojo/sniff","./main"],function(_b9d,dom,_b9e,_b9f,lang,has,_ba0){var _ba1;var a11y={_isElementShown:function(elem){var s=_b9f.get(elem);return (s.visibility!="hidden")&&(s.visibility!="collapsed")&&(s.display!="none")&&(_b9e.get(elem,"type")!="hidden");},hasDefaultTabStop:function(elem){switch(elem.nodeName.toLowerCase()){case "a":return _b9e.has(elem,"href");case "area":case "button":case "input":case "object":case "select":case "textarea":return true;case "iframe":var body;try{var _ba2=elem.contentDocument;if("designMode" in _ba2&&_ba2.designMode=="on"){return true;}body=_ba2.body;}catch(e1){try{body=elem.contentWindow.document.body;}catch(e2){return false;}}return body&&(body.contentEditable=="true"||(body.firstChild&&body.firstChild.contentEditable=="true"));default:return elem.contentEditable=="true";}},effectiveTabIndex:function(elem){if(_b9e.get(elem,"disabled")){return _ba1;}else{if(_b9e.has(elem,"tabIndex")){return +_b9e.get(elem,"tabIndex");}else{return a11y.hasDefaultTabStop(elem)?0:_ba1;}}},isTabNavigable:function(elem){return a11y.effectiveTabIndex(elem)>=0;},isFocusable:function(elem){return a11y.effectiveTabIndex(elem)>=-1;},_getTabNavigable:function(root){var _ba3,last,_ba4,_ba5,_ba6,_ba7,_ba8={};function _ba9(node){return node&&node.tagName.toLowerCase()=="input"&&node.type&&node.type.toLowerCase()=="radio"&&node.name&&node.name.toLowerCase();};var _baa=a11y._isElementShown,_bab=a11y.effectiveTabIndex;var _bac=function(_bad){for(var _bae=_bad.firstChild;_bae;_bae=_bae.nextSibling){if(_bae.nodeType!=1||(has("ie")<=9&&_bae.scopeName!=="HTML")||!_baa(_bae)){continue;}var _baf=_bab(_bae);if(_baf>=0){if(_baf==0){if(!_ba3){_ba3=_bae;}last=_bae;}else{if(_baf>0){if(!_ba4||_baf<_ba5){_ba5=_baf;_ba4=_bae;}if(!_ba6||_baf>=_ba7){_ba7=_baf;_ba6=_bae;}}}var rn=_ba9(_bae);if(_b9e.get(_bae,"checked")&&rn){_ba8[rn]=_bae;}}if(_bae.nodeName.toUpperCase()!="SELECT"){_bac(_bae);}}};if(_baa(root)){_bac(root);}function rs(node){return _ba8[_ba9(node)]||node;};return {first:rs(_ba3),last:rs(last),lowest:rs(_ba4),highest:rs(_ba6)};},getFirstInTabbingOrder:function(root,doc){var _bb0=a11y._getTabNavigable(dom.byId(root,doc));return _bb0.lowest?_bb0.lowest:_bb0.first;},getLastInTabbingOrder:function(root,doc){var _bb1=a11y._getTabNavigable(dom.byId(root,doc));return _bb1.last?_bb1.last:_bb1.highest;}};1&&lang.mixin(_ba0,a11y);return a11y;});},"dijit/form/_ToggleButtonMixin":function(){define(["dojo/_base/declare","dojo/dom-attr"],function(_bb2,_bb3){return _bb2("dijit.form._ToggleButtonMixin",null,{checked:false,_aria_attr:"aria-pressed",_onClick:function(evt){var _bb4=this.checked;this._set("checked",!_bb4);var ret=this.inherited(arguments);this.set("checked",ret?this.checked:_bb4);return ret;},_setCheckedAttr:function(_bb5,_bb6){this._set("checked",_bb5);var node=this.focusNode||this.domNode;if(this._created){if(_bb3.get(node,"checked")!=!!_bb5){_bb3.set(node,"checked",!!_bb5);}}node.setAttribute(this._aria_attr,String(_bb5));this._handleOnChange(_bb5,_bb6);},postCreate:function(){this.inherited(arguments);var node=this.focusNode||this.domNode;if(this.checked){node.setAttribute("checked","checked");}if(this._resetValue===undefined){this._lastValueReported=this._resetValue=this.checked;}},reset:function(){this._hasBeenBlurred=false;this.set("checked",this.params.checked||false);}});});},"dijit/_Widget":function(){define(["dojo/aspect","dojo/_base/config","dojo/_base/connect","dojo/_base/declare","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/query","dojo/ready","./registry","./_WidgetBase","./_OnDijitClickMixin","./_FocusMixin","dojo/uacss","./hccss"],function(_bb7,_bb8,_bb9,_bba,has,_bbb,lang,_bbc,_bbd,_bbe,_bbf,_bc0,_bc1){function _bc2(){};function _bc3(_bc4){return function(obj,_bc5,_bc6,_bc7){if(obj&&typeof _bc5=="string"&&obj[_bc5]==_bc2){return obj.on(_bc5.substring(2).toLowerCase(),lang.hitch(_bc6,_bc7));}return _bc4.apply(_bb9,arguments);};};_bb7.around(_bb9,"connect",_bc3);if(_bbb.connect){_bb7.around(_bbb,"connect",_bc3);}var _bc8=_bba("dijit._Widget",[_bbf,_bc0,_bc1],{onClick:_bc2,onDblClick:_bc2,onKeyDown:_bc2,onKeyPress:_bc2,onKeyUp:_bc2,onMouseDown:_bc2,onMouseMove:_bc2,onMouseOut:_bc2,onMouseOver:_bc2,onMouseLeave:_bc2,onMouseEnter:_bc2,onMouseUp:_bc2,constructor:function(_bc9){this._toConnect={};for(var name in _bc9){if(this[name]===_bc2){this._toConnect[name.replace(/^on/,"").toLowerCase()]=_bc9[name];delete _bc9[name];}}},postCreate:function(){this.inherited(arguments);for(var name in this._toConnect){this.on(name,this._toConnect[name]);}delete this._toConnect;},on:function(type,func){if(this[this._onMap(type)]===_bc2){return _bb9.connect(this.domNode,type.toLowerCase(),this,func);}return this.inherited(arguments);},_setFocusedAttr:function(val){this._focused=val;this._set("focused",val);},setAttribute:function(attr,_bca){_bbb.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");this.set(attr,_bca);},attr:function(name,_bcb){var args=arguments.length;if(args>=2||typeof name==="object"){return this.set.apply(this,arguments);}else{return this.get(name);}},getDescendants:function(){_bbb.deprecated(this.declaredClass+"::getDescendants() is deprecated. Use getChildren() instead.","","2.0");return this.containerNode?_bbc("[widgetId]",this.containerNode).map(_bbe.byNode):[];},_onShow:function(){this.onShow();},onShow:function(){},onHide:function(){},onClose:function(){return true;}});if(has("dijit-legacy-requires")){_bbd(0,function(){var _bcc=["dijit/_base"];require(_bcc);});}return _bc8;});},"dojo/touch":function(){define(["./_base/kernel","./aspect","./dom","./dom-class","./_base/lang","./on","./has","./mouse","./domReady","./_base/window"],function(dojo,_bcd,dom,_bce,lang,on,has,_bcf,_bd0,win){var ios4=has("ios")<5;var _bd1=has("pointer-events")||has("MSPointer"),_bd2=(function(){var _bd3={};for(var type in {down:1,move:1,up:1,cancel:1,over:1,out:1}){_bd3[type]=has("MSPointer")?"MSPointer"+type.charAt(0).toUpperCase()+type.slice(1):"pointer"+type;}return _bd3;})();var _bd4=has("touch-events");var _bd5,_bd6,_bd7=false,_bd8,_bd9,_bda,_bdb,_bdc,_bdd;var _bde;function _bdf(_be0,_be1,_be2){if(_bd1&&_be2){return function(node,_be3){return on(node,_be2,_be3);};}else{if(_bd4){return function(node,_be4){var _be5=on(node,_be1,function(evt){_be4.call(this,evt);_bde=(new Date()).getTime();}),_be6=on(node,_be0,function(evt){if(!_bde||(new Date()).getTime()>_bde+1000){_be4.call(this,evt);}});return {remove:function(){_be5.remove();_be6.remove();}};};}else{return function(node,_be7){return on(node,_be0,_be7);};}}};function _be8(node){do{if(node.dojoClick!==undefined){return node;}}while(node=node.parentNode);};function _be9(e,_bea,_beb){if(_bcf.isRight(e)){return;}var _bec=_be8(e.target);_bd6=!e.target.disabled&&_bec&&_bec.dojoClick;if(_bd6){_bd7=(_bd6=="useTarget");_bd8=(_bd7?_bec:e.target);if(_bd7){e.preventDefault();}_bd9=e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX;_bda=e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY;_bdb=(typeof _bd6=="object"?_bd6.x:(typeof _bd6=="number"?_bd6:0))||4;_bdc=(typeof _bd6=="object"?_bd6.y:(typeof _bd6=="number"?_bd6:0))||4;if(!_bd5){_bd5=true;function _bed(e){if(_bd7){_bd6=dom.isDescendant(win.doc.elementFromPoint((e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX),(e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY)),_bd8);}else{_bd6=_bd6&&(e.changedTouches?e.changedTouches[0].target:e.target)==_bd8&&Math.abs((e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX)-_bd9)<=_bdb&&Math.abs((e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY)-_bda)<=_bdc;}};win.doc.addEventListener(_bea,function(e){if(_bcf.isRight(e)){return;}_bed(e);if(_bd7){e.preventDefault();}},true);win.doc.addEventListener(_beb,function(e){if(_bcf.isRight(e)){return;}_bed(e);if(_bd6){_bdd=(new Date()).getTime();var _bee=(_bd7?_bd8:e.target);if(_bee.tagName==="LABEL"){_bee=dom.byId(_bee.getAttribute("for"))||_bee;}var src=(e.changedTouches)?e.changedTouches[0]:e;function _bef(type){var evt=document.createEvent("MouseEvents");evt._dojo_click=true;evt.initMouseEvent(type,true,true,e.view,e.detail,src.screenX,src.screenY,src.clientX,src.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,0,null);return evt;};var _bf0=_bef("mousedown");var _bf1=_bef("mouseup");var _bf2=_bef("click");setTimeout(function(){on.emit(_bee,"mousedown",_bf0);on.emit(_bee,"mouseup",_bf1);on.emit(_bee,"click",_bf2);_bdd=(new Date()).getTime();},0);}},true);function _bf3(type){win.doc.addEventListener(type,function(e){var _bf4=e.target;if(_bd6&&!e._dojo_click&&(new Date()).getTime()<=_bdd+1000&&!(_bf4.tagName=="INPUT"&&_bce.contains(_bf4,"dijitOffScreen"))){e.stopPropagation();e.stopImmediatePropagation&&e.stopImmediatePropagation();if(type=="click"&&(_bf4.tagName!="INPUT"||(_bf4.type=="radio"&&(_bce.contains(_bf4,"dijitCheckBoxInput")||_bce.contains(_bf4,"mblRadioButton")))||(_bf4.type=="checkbox"&&(_bce.contains(_bf4,"dijitCheckBoxInput")||_bce.contains(_bf4,"mblCheckBox"))))&&_bf4.tagName!="TEXTAREA"&&_bf4.tagName!="AUDIO"&&_bf4.tagName!="VIDEO"){e.preventDefault();}}},true);};_bf3("click");_bf3("mousedown");_bf3("mouseup");}}};var _bf5;if(has("touch")){if(_bd1){_bd0(function(){win.doc.addEventListener(_bd2.down,function(evt){_be9(evt,_bd2.move,_bd2.up);},true);});}else{_bd0(function(){_bf5=win.body();win.doc.addEventListener("touchstart",function(evt){_bde=(new Date()).getTime();var _bf6=_bf5;_bf5=evt.target;on.emit(_bf6,"dojotouchout",{relatedTarget:_bf5,bubbles:true});on.emit(_bf5,"dojotouchover",{relatedTarget:_bf6,bubbles:true});_be9(evt,"touchmove","touchend");},true);function _bf7(evt){var _bf8=lang.delegate(evt,{bubbles:true});if(has("ios")>=6){_bf8.touches=evt.touches;_bf8.altKey=evt.altKey;_bf8.changedTouches=evt.changedTouches;_bf8.ctrlKey=evt.ctrlKey;_bf8.metaKey=evt.metaKey;_bf8.shiftKey=evt.shiftKey;_bf8.targetTouches=evt.targetTouches;}return _bf8;};on(win.doc,"touchmove",function(evt){_bde=(new Date()).getTime();var _bf9=win.doc.elementFromPoint(evt.pageX-(ios4?0:win.global.pageXOffset),evt.pageY-(ios4?0:win.global.pageYOffset));if(_bf9){if(_bf5!==_bf9){on.emit(_bf5,"dojotouchout",{relatedTarget:_bf9,bubbles:true});on.emit(_bf9,"dojotouchover",{relatedTarget:_bf5,bubbles:true});_bf5=_bf9;}if(!on.emit(_bf9,"dojotouchmove",_bf7(evt))){evt.preventDefault();}}});on(win.doc,"touchend",function(evt){_bde=(new Date()).getTime();var node=win.doc.elementFromPoint(evt.pageX-(ios4?0:win.global.pageXOffset),evt.pageY-(ios4?0:win.global.pageYOffset))||win.body();on.emit(node,"dojotouchend",_bf7(evt));});});}}var _bfa={press:_bdf("mousedown","touchstart",_bd2.down),move:_bdf("mousemove","dojotouchmove",_bd2.move),release:_bdf("mouseup","dojotouchend",_bd2.up),cancel:_bdf(_bcf.leave,"touchcancel",_bd1?_bd2.cancel:null),over:_bdf("mouseover","dojotouchover",_bd2.over),out:_bdf("mouseout","dojotouchout",_bd2.out),enter:_bcf._eventHandler(_bdf("mouseover","dojotouchover",_bd2.over)),leave:_bcf._eventHandler(_bdf("mouseout","dojotouchout",_bd2.out))};1&&(dojo.touch=_bfa);return _bfa;});},"dojo/fx":function(){define(["./_base/lang","./Evented","./_base/kernel","./_base/array","./aspect","./_base/fx","./dom","./dom-style","./dom-geometry","./ready","require"],function(lang,_bfb,dojo,_bfc,_bfd,_bfe,dom,_bff,geom,_c00,_c01){if(!dojo.isAsync){_c00(0,function(){var _c02=["./fx/Toggler"];_c01(_c02);});}var _c03=dojo.fx={};var _c04={_fire:function(evt,args){if(this[evt]){this[evt].apply(this,args||[]);}return this;}};var _c05=function(_c06){this._index=-1;this._animations=_c06||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;_bfc.forEach(this._animations,function(a){if(a){if(typeof a.duration!="undefined"){this.duration+=a.duration;}if(a.delay){this.duration+=a.delay;}}},this);};_c05.prototype=new _bfb();lang.extend(_c05,{_onAnimate:function(){this._fire("onAnimate",arguments);},_onEnd:function(){this._onAnimateCtx.remove();this._onEndCtx.remove();this._onAnimateCtx=this._onEndCtx=null;if(this._index+1==this._animations.length){this._fire("onEnd");}else{this._current=this._animations[++this._index];this._onAnimateCtx=_bfd.after(this._current,"onAnimate",lang.hitch(this,"_onAnimate"),true);this._onEndCtx=_bfd.after(this._current,"onEnd",lang.hitch(this,"_onEnd"),true);this._current.play(0,true);}},play:function(_c07,_c08){if(!this._current){this._current=this._animations[this._index=0];}if(!_c08&&this._current.status()=="playing"){return this;}var _c09=_bfd.after(this._current,"beforeBegin",lang.hitch(this,function(){this._fire("beforeBegin");}),true),_c0a=_bfd.after(this._current,"onBegin",lang.hitch(this,function(arg){this._fire("onBegin",arguments);}),true),_c0b=_bfd.after(this._current,"onPlay",lang.hitch(this,function(arg){this._fire("onPlay",arguments);_c09.remove();_c0a.remove();_c0b.remove();}));if(this._onAnimateCtx){this._onAnimateCtx.remove();}this._onAnimateCtx=_bfd.after(this._current,"onAnimate",lang.hitch(this,"_onAnimate"),true);if(this._onEndCtx){this._onEndCtx.remove();}this._onEndCtx=_bfd.after(this._current,"onEnd",lang.hitch(this,"_onEnd"),true);this._current.play.apply(this._current,arguments);return this;},pause:function(){if(this._current){var e=_bfd.after(this._current,"onPause",lang.hitch(this,function(arg){this._fire("onPause",arguments);e.remove();}),true);this._current.pause();}return this;},gotoPercent:function(_c0c,_c0d){this.pause();var _c0e=this.duration*_c0c;this._current=null;_bfc.some(this._animations,function(a,_c0f){if(_c0e<=a.duration){this._current=a;this._index=_c0f;return true;}_c0e-=a.duration;return false;},this);if(this._current){this._current.gotoPercent(_c0e/this._current.duration);}if(_c0d){this.play();}return this;},stop:function(_c10){if(this._current){if(_c10){for(;this._index+1<this._animations.length;++this._index){this._animations[this._index].stop(true);}this._current=this._animations[this._index];}var e=_bfd.after(this._current,"onStop",lang.hitch(this,function(arg){this._fire("onStop",arguments);e.remove();}),true);this._current.stop();}return this;},status:function(){return this._current?this._current.status():"stopped";},destroy:function(){this.stop();if(this._onAnimateCtx){this._onAnimateCtx.remove();}if(this._onEndCtx){this._onEndCtx.remove();}}});lang.extend(_c05,_c04);_c03.chain=function(_c11){return new _c05(lang.isArray(_c11)?_c11:Array.prototype.slice.call(_c11,0));};var _c12=function(_c13){this._animations=_c13||[];this._connects=[];this._finished=0;this.duration=0;_bfc.forEach(_c13,function(a){var _c14=a.duration;if(a.delay){_c14+=a.delay;}if(this.duration<_c14){this.duration=_c14;}this._connects.push(_bfd.after(a,"onEnd",lang.hitch(this,"_onEnd"),true));},this);this._pseudoAnimation=new _bfe.Animation({curve:[0,1],duration:this.duration});var self=this;_bfc.forEach(["beforeBegin","onBegin","onPlay","onAnimate","onPause","onStop","onEnd"],function(evt){self._connects.push(_bfd.after(self._pseudoAnimation,evt,function(){self._fire(evt,arguments);},true));});};lang.extend(_c12,{_doAction:function(_c15,args){_bfc.forEach(this._animations,function(a){a[_c15].apply(a,args);});return this;},_onEnd:function(){if(++this._finished>this._animations.length){this._fire("onEnd");}},_call:function(_c16,args){var t=this._pseudoAnimation;t[_c16].apply(t,args);},play:function(_c17,_c18){this._finished=0;this._doAction("play",arguments);this._call("play",arguments);return this;},pause:function(){this._doAction("pause",arguments);this._call("pause",arguments);return this;},gotoPercent:function(_c19,_c1a){var ms=this.duration*_c19;_bfc.forEach(this._animations,function(a){a.gotoPercent(a.duration<ms?1:(ms/a.duration),_c1a);});this._call("gotoPercent",arguments);return this;},stop:function(_c1b){this._doAction("stop",arguments);this._call("stop",arguments);return this;},status:function(){return this._pseudoAnimation.status();},destroy:function(){this.stop();_bfc.forEach(this._connects,function(_c1c){_c1c.remove();});}});lang.extend(_c12,_c04);_c03.combine=function(_c1d){return new _c12(lang.isArray(_c1d)?_c1d:Array.prototype.slice.call(_c1d,0));};_c03.wipeIn=function(args){var node=args.node=dom.byId(args.node),s=node.style,o;var anim=_bfe.animateProperty(lang.mixin({properties:{height:{start:function(){o=s.overflow;s.overflow="hidden";if(s.visibility=="hidden"||s.display=="none"){s.height="1px";s.display="";s.visibility="";return 1;}else{var _c1e=_bff.get(node,"height");return Math.max(_c1e,1);}},end:function(){return node.scrollHeight;}}}},args));var fini=function(){s.height="auto";s.overflow=o;};_bfd.after(anim,"onStop",fini,true);_bfd.after(anim,"onEnd",fini,true);return anim;};_c03.wipeOut=function(args){var node=args.node=dom.byId(args.node),s=node.style,o;var anim=_bfe.animateProperty(lang.mixin({properties:{height:{end:1}}},args));_bfd.after(anim,"beforeBegin",function(){o=s.overflow;s.overflow="hidden";s.display="";},true);var fini=function(){s.overflow=o;s.height="auto";s.display="none";};_bfd.after(anim,"onStop",fini,true);_bfd.after(anim,"onEnd",fini,true);return anim;};_c03.slideTo=function(args){var node=args.node=dom.byId(args.node),top=null,left=null;var init=(function(n){return function(){var cs=_bff.getComputedStyle(n);var pos=cs.position;top=(pos=="absolute"?n.offsetTop:parseInt(cs.top)||0);left=(pos=="absolute"?n.offsetLeft:parseInt(cs.left)||0);if(pos!="absolute"&&pos!="relative"){var ret=geom.position(n,true);top=ret.y;left=ret.x;n.style.position="absolute";n.style.top=top+"px";n.style.left=left+"px";}};})(node);init();var anim=_bfe.animateProperty(lang.mixin({properties:{top:args.top||0,left:args.left||0}},args));_bfd.after(anim,"beforeBegin",init,true);return anim;};return _c03;});},"dojo/request":function(){define(["./request/default!"],function(_c1f){return _c1f;});},"dijit/_DialogMixin":function(){define(["dojo/_base/declare","./a11y"],function(_c20,a11y){return _c20("dijit._DialogMixin",null,{actionBarTemplate:"",execute:function(){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();this.execute(this.get("value"));},_getFocusItems:function(){var _c21=a11y._getTabNavigable(this.domNode);this._firstFocusItem=_c21.lowest||_c21.first||this.closeButtonNode||this.domNode;this._lastFocusItem=_c21.last||_c21.highest||this._firstFocusItem;}});});},"dijit/Tree":function(){define(["dojo/_base/array","dojo/aspect","dojo/cookie","dojo/_base/declare","dojo/Deferred","dojo/promise/all","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/errors/create","dojo/fx","dojo/has","dojo/_base/kernel","dojo/keys","dojo/_base/lang","dojo/on","dojo/topic","dojo/touch","dojo/when","./a11yclick","./focus","./registry","./_base/manager","./_Widget","./_TemplatedMixin","./_Container","./_Contained","./_CssStateMixin","./_KeyNavMixin","dojo/text!./templates/TreeNode.html","dojo/text!./templates/Tree.html","./tree/TreeStoreModel","./tree/ForestStoreModel","./tree/_dndSelector","dojo/query!css2"],function(_c22,_c23,_c24,_c25,_c26,all,dom,_c27,_c28,_c29,_c2a,_c2b,has,_c2c,keys,lang,on,_c2d,_c2e,when,_c2f,_c30,_c31,_c32,_c33,_c34,_c35,_c36,_c37,_c38,_c39,_c3a,_c3b,_c3c,_c3d){function _c3e(d){return lang.delegate(d.promise||d,{addCallback:function(_c3f){this.then(_c3f);},addErrback:function(_c40){this.otherwise(_c40);}});};var _c41=_c25("dijit._TreeNode",[_c33,_c34,_c35,_c36,_c37],{item:null,isTreeNode:true,label:"",_setLabelAttr:function(val){this.labelNode[this.labelType=="html"?"innerHTML":"innerText" in this.labelNode?"innerText":"textContent"]=val;this._set("label",val);if(has("dojo-bidi")){this.applyTextDir(this.labelNode);}},labelType:"text",isExpandable:null,isExpanded:false,state:"NotLoaded",templateString:_c39,baseClass:"dijitTreeNode",cssStateNodes:{rowNode:"dijitTreeRow"},_setTooltipAttr:{node:"rowNode",type:"attribute",attribute:"title"},buildRendering:function(){this.inherited(arguments);this._setExpando();this._updateItemClasses(this.item);if(this.isExpandable){this.labelNode.setAttribute("aria-expanded",this.isExpanded);}this.setSelected(false);},_setIndentAttr:function(_c42){var _c43=(Math.max(_c42,0)*this.tree._nodePixelIndent)+"px";_c29.set(this.domNode,"backgroundPosition",_c43+" 0px");_c29.set(this.rowNode,this.isLeftToRight()?"paddingLeft":"paddingRight",_c43);_c22.forEach(this.getChildren(),function(_c44){_c44.set("indent",_c42+1);});this._set("indent",_c42);},markProcessing:function(){this.state="Loading";this._setExpando(true);},unmarkProcessing:function(){this._setExpando(false);},_updateItemClasses:function(item){var tree=this.tree,_c45=tree.model;if(tree._v10Compat&&item===_c45.root){item=null;}this._applyClassAndStyle(item,"icon","Icon");this._applyClassAndStyle(item,"label","Label");this._applyClassAndStyle(item,"row","Row");this.tree._startPaint(true);},_applyClassAndStyle:function(item,_c46,_c47){var _c48="_"+_c46+"Class";var _c49=_c46+"Node";var _c4a=this[_c48];this[_c48]=this.tree["get"+_c47+"Class"](item,this.isExpanded);_c27.replace(this[_c49],this[_c48]||"",_c4a||"");_c29.set(this[_c49],this.tree["get"+_c47+"Style"](item,this.isExpanded)||{});},_updateLayout:function(){var _c4b=this.getParent(),_c4c=!_c4b||!_c4b.rowNode||_c4b.rowNode.style.display=="none";_c27.toggle(this.domNode,"dijitTreeIsRoot",_c4c);_c27.toggle(this.domNode,"dijitTreeIsLast",!_c4c&&!this.getNextSibling());},_setExpando:function(_c4d){var _c4e=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"],_c4f=["*","-","+","*"],idx=_c4d?0:(this.isExpandable?(this.isExpanded?1:2):3);_c27.replace(this.expandoNode,_c4e[idx],_c4e);this.expandoNodeText.innerHTML=_c4f[idx];},expand:function(){if(this._expandDeferred){return _c3e(this._expandDeferred);}if(this._collapseDeferred){this._collapseDeferred.cancel();delete this._collapseDeferred;}this.isExpanded=true;this.labelNode.setAttribute("aria-expanded","true");if(this.tree.showRoot||this!==this.tree.rootNode){this.containerNode.setAttribute("role","group");}_c27.add(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","true");}var _c50=_c2b.wipeIn({node:this.containerNode,duration:_c32.defaultDuration});var def=(this._expandDeferred=new _c26(function(){_c50.stop();}));_c23.after(_c50,"onEnd",function(){def.resolve(true);},true);_c50.play();return _c3e(def);},collapse:function(){if(this._collapseDeferred){return _c3e(this._collapseDeferred);}if(this._expandDeferred){this._expandDeferred.cancel();delete this._expandDeferred;}this.isExpanded=false;this.labelNode.setAttribute("aria-expanded","false");if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","false");}_c27.remove(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);var _c51=_c2b.wipeOut({node:this.containerNode,duration:_c32.defaultDuration});var def=(this._collapseDeferred=new _c26(function(){_c51.stop();}));_c23.after(_c51,"onEnd",function(){def.resolve(true);},true);_c51.play();return _c3e(def);},indent:0,setChildItems:function(_c52){var tree=this.tree,_c53=tree.model,defs=[];var _c54=tree.focusedChild;var _c55=this.getChildren();_c22.forEach(_c55,function(_c56){_c35.prototype.removeChild.call(this,_c56);},this);this.defer(function(){_c22.forEach(_c55,function(node){if(!node._destroyed&&!node.getParent()){tree.dndController.removeTreeNode(node);function _c57(node){var id=_c53.getIdentity(node.item),ary=tree._itemNodesMap[id];if(ary.length==1){delete tree._itemNodesMap[id];}else{var _c58=_c22.indexOf(ary,node);if(_c58!=-1){ary.splice(_c58,1);}}_c22.forEach(node.getChildren(),_c57);};_c57(node);if(tree.persist){var _c59=_c22.map(node.getTreePath(),function(item){return tree.model.getIdentity(item);}).join("/");for(var path in tree._openedNodes){if(path.substr(0,_c59.length)==_c59){delete tree._openedNodes[path];}}tree._saveExpandedNodes();}if(tree.lastFocusedChild&&!dom.isDescendant(tree.lastFocusedChild.domNode,tree.domNode)){delete tree.lastFocusedChild;}if(_c54&&!dom.isDescendant(_c54.domNode,tree.domNode)){tree.focus();}node.destroyRecursive();}});});this.state="Loaded";if(_c52&&_c52.length>0){this.isExpandable=true;_c22.forEach(_c52,function(item){var id=_c53.getIdentity(item),_c5a=tree._itemNodesMap[id],node;if(_c5a){for(var i=0;i<_c5a.length;i++){if(_c5a[i]&&!_c5a[i].getParent()){node=_c5a[i];node.set("indent",this.indent+1);break;}}}if(!node){node=this.tree._createTreeNode({item:item,tree:tree,isExpandable:_c53.mayHaveChildren(item),label:tree.getLabel(item),labelType:(tree.model&&tree.model.labelType)||"text",tooltip:tree.getTooltip(item),ownerDocument:tree.ownerDocument,dir:tree.dir,lang:tree.lang,textDir:tree.textDir,indent:this.indent+1});if(_c5a){_c5a.push(node);}else{tree._itemNodesMap[id]=[node];}}this.addChild(node);if(this.tree.autoExpand||this.tree._state(node)){defs.push(tree._expandNode(node));}},this);_c22.forEach(this.getChildren(),function(_c5b){_c5b._updateLayout();});}else{this.isExpandable=false;}if(this._setExpando){this._setExpando(false);}this._updateItemClasses(this.item);var def=all(defs);this.tree._startPaint(def);return _c3e(def);},getTreePath:function(){var node=this;var path=[];while(node&&node!==this.tree.rootNode){path.unshift(node.item);node=node.getParent();}path.unshift(this.tree.rootNode.item);return path;},getIdentity:function(){return this.tree.model.getIdentity(this.item);},removeChild:function(node){this.inherited(arguments);var _c5c=this.getChildren();if(_c5c.length==0){this.isExpandable=false;this.collapse();}_c22.forEach(_c5c,function(_c5d){_c5d._updateLayout();});},makeExpandable:function(){this.isExpandable=true;this._setExpando(false);},setSelected:function(_c5e){this.labelNode.setAttribute("aria-selected",_c5e?"true":"false");_c27.toggle(this.rowNode,"dijitTreeRowSelected",_c5e);},focus:function(){_c30.focus(this.focusNode);}});if(has("dojo-bidi")){_c41.extend({_setTextDirAttr:function(_c5f){if(_c5f&&((this.textDir!=_c5f)||!this._created)){this._set("textDir",_c5f);this.applyTextDir(this.labelNode);_c22.forEach(this.getChildren(),function(_c60){_c60.set("textDir",_c5f);},this);}}});}var Tree=_c25("dijit.Tree",[_c33,_c38,_c34,_c37],{baseClass:"dijitTree",store:null,model:null,query:null,label:"",showRoot:true,childrenAttr:["children"],paths:[],path:[],selectedItems:null,selectedItem:null,openOnClick:false,openOnDblClick:false,templateString:_c3a,persist:false,autoExpand:false,dndController:_c3d,dndParams:["onDndDrop","itemCreator","onDndCancel","checkAcceptance","checkItemAcceptance","dragThreshold","betweenThreshold"],onDndDrop:null,itemCreator:null,onDndCancel:null,checkAcceptance:null,checkItemAcceptance:null,dragThreshold:5,betweenThreshold:0,_nodePixelIndent:19,_publish:function(_c61,_c62){_c2d.publish(this.id,lang.mixin({tree:this,event:_c61},_c62||{}));},postMixInProperties:function(){this.tree=this;if(this.autoExpand){this.persist=false;}this._itemNodesMap={};if(!this.cookieName&&this.id){this.cookieName=this.id+"SaveStateCookie";}this.expandChildrenDeferred=new _c26();this.pendingCommandsPromise=this.expandChildrenDeferred.promise;this.inherited(arguments);},postCreate:function(){this._initState();var self=this;this.own(on(this.containerNode,on.selector(".dijitTreeNode",_c2e.enter),function(evt){self._onNodeMouseEnter(_c31.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeNode",_c2e.leave),function(evt){self._onNodeMouseLeave(_c31.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_c2f.press),function(evt){self._onNodePress(_c31.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_c2f),function(evt){self._onClick(_c31.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow","dblclick"),function(evt){self._onDblClick(_c31.getEnclosingWidget(this),evt);}));if(!this.model){this._store2model();}this.own(_c23.after(this.model,"onChange",lang.hitch(this,"_onItemChange"),true),_c23.after(this.model,"onChildrenChange",lang.hitch(this,"_onItemChildrenChange"),true),_c23.after(this.model,"onDelete",lang.hitch(this,"_onItemDelete"),true));this.inherited(arguments);if(this.dndController){if(lang.isString(this.dndController)){this.dndController=lang.getObject(this.dndController);}var _c63={};for(var i=0;i<this.dndParams.length;i++){if(this[this.dndParams[i]]){_c63[this.dndParams[i]]=this[this.dndParams[i]];}}this.dndController=new this.dndController(this,_c63);}this._load();this.onLoadDeferred=_c3e(this.pendingCommandsPromise);this.onLoadDeferred.then(lang.hitch(this,"onLoad"));},_store2model:function(){this._v10Compat=true;_c2c.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");var _c64={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};if(this.params.mayHaveChildren){_c64.mayHaveChildren=lang.hitch(this,"mayHaveChildren");}if(this.params.getItemChildren){_c64.getChildren=lang.hitch(this,function(item,_c65,_c66){this.getItemChildren((this._v10Compat&&item===this.model.root)?null:item,_c65,_c66);});}this.model=new _c3c(_c64);this.showRoot=Boolean(this.label);},onLoad:function(){},_load:function(){this.model.getRoot(lang.hitch(this,function(item){var rn=(this.rootNode=this.tree._createTreeNode({item:item,tree:this,isExpandable:true,label:this.label||this.getLabel(item),labelType:this.model.labelType||"text",textDir:this.textDir,indent:this.showRoot?0:-1}));if(!this.showRoot){rn.rowNode.style.display="none";this.domNode.setAttribute("role","presentation");this.domNode.removeAttribute("aria-expanded");this.domNode.removeAttribute("aria-multiselectable");if(this["aria-label"]){rn.containerNode.setAttribute("aria-label",this["aria-label"]);this.domNode.removeAttribute("aria-label");}else{if(this["aria-labelledby"]){rn.containerNode.setAttribute("aria-labelledby",this["aria-labelledby"]);this.domNode.removeAttribute("aria-labelledby");}}rn.labelNode.setAttribute("role","presentation");rn.labelNode.removeAttribute("aria-selected");rn.containerNode.setAttribute("role","tree");rn.containerNode.setAttribute("aria-expanded","true");rn.containerNode.setAttribute("aria-multiselectable",!this.dndController.singular);}else{this.domNode.setAttribute("aria-multiselectable",!this.dndController.singular);this.rootLoadingIndicator.style.display="none";}this.containerNode.appendChild(rn.domNode);var _c67=this.model.getIdentity(item);if(this._itemNodesMap[_c67]){this._itemNodesMap[_c67].push(rn);}else{this._itemNodesMap[_c67]=[rn];}rn._updateLayout();this._expandNode(rn).then(lang.hitch(this,function(){if(!this._destroyed){this.rootLoadingIndicator.style.display="none";this.expandChildrenDeferred.resolve(true);}}));}),lang.hitch(this,function(err){console.error(this,": error loading root: ",err);}));},getNodesByItem:function(item){if(!item){return [];}var _c68=lang.isString(item)?item:this.model.getIdentity(item);return [].concat(this._itemNodesMap[_c68]);},_setSelectedItemAttr:function(item){this.set("selectedItems",[item]);},_setSelectedItemsAttr:function(_c69){var tree=this;return this.pendingCommandsPromise=this.pendingCommandsPromise.always(lang.hitch(this,function(){var _c6a=_c22.map(_c69,function(item){return (!item||lang.isString(item))?item:tree.model.getIdentity(item);});var _c6b=[];_c22.forEach(_c6a,function(id){_c6b=_c6b.concat(tree._itemNodesMap[id]||[]);});this.set("selectedNodes",_c6b);}));},_setPathAttr:function(path){if(path.length){return _c3e(this.set("paths",[path]).then(function(_c6c){return _c6c[0];}));}else{return _c3e(this.set("paths",[]).then(function(_c6d){return _c6d[0];}));}},_setPathsAttr:function(_c6e){var tree=this;function _c6f(path,_c70){var _c71=path.shift();var _c72=_c22.filter(_c70,function(node){return node.getIdentity()==_c71;})[0];if(!!_c72){if(path.length){return tree._expandNode(_c72).then(function(){return _c6f(path,_c72.getChildren());});}else{return _c72;}}else{throw new Tree.PathError("Could not expand path at "+_c71);}};return _c3e(this.pendingCommandsPromise=this.pendingCommandsPromise.always(function(){return all(_c22.map(_c6e,function(path){path=_c22.map(path,function(item){return item&&lang.isObject(item)?tree.model.getIdentity(item):item;});if(path.length){return _c6f(path,[tree.rootNode]);}else{throw new Tree.PathError("Empty path");}}));}).then(function setNodes(_c73){tree.set("selectedNodes",_c73);return tree.paths;}));},_setSelectedNodeAttr:function(node){this.set("selectedNodes",[node]);},_setSelectedNodesAttr:function(_c74){this.dndController.setSelection(_c74);},expandAll:function(){var _c75=this;function _c76(node){return _c75._expandNode(node).then(function(){var _c77=_c22.filter(node.getChildren()||[],function(node){return node.isExpandable;});return all(_c22.map(_c77,_c76));});};return _c3e(_c76(this.rootNode));},collapseAll:function(){var _c78=this;function _c79(node){var _c7a=_c22.filter(node.getChildren()||[],function(node){return node.isExpandable;}),defs=all(_c22.map(_c7a,_c79));if(!node.isExpanded||(node==_c78.rootNode&&!_c78.showRoot)){return defs;}else{return defs.then(function(){return _c78._collapseNode(node);});}};return _c3e(_c79(this.rootNode));},mayHaveChildren:function(){},getItemChildren:function(){},getLabel:function(item){return this.model.getLabel(item);},getIconClass:function(item,_c7b){return (!item||this.model.mayHaveChildren(item))?(_c7b?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";},getLabelClass:function(){},getRowClass:function(){},getIconStyle:function(){},getLabelStyle:function(){},getRowStyle:function(){},getTooltip:function(){return "";},_onDownArrow:function(evt,node){var _c7c=this._getNext(node);if(_c7c&&_c7c.isTreeNode){this.focusNode(_c7c);}},_onUpArrow:function(evt,node){var _c7d=node.getPreviousSibling();if(_c7d){node=_c7d;while(node.isExpandable&&node.isExpanded&&node.hasChildren()){var _c7e=node.getChildren();node=_c7e[_c7e.length-1];}}else{var _c7f=node.getParent();if(!(!this.showRoot&&_c7f===this.rootNode)){node=_c7f;}}if(node&&node.isTreeNode){this.focusNode(node);}},_onRightArrow:function(evt,node){if(node.isExpandable&&!node.isExpanded){this._expandNode(node);}else{if(node.hasChildren()){node=node.getChildren()[0];if(node&&node.isTreeNode){this.focusNode(node);}}}},_onLeftArrow:function(evt,node){if(node.isExpandable&&node.isExpanded){this._collapseNode(node);}else{var _c80=node.getParent();if(_c80&&_c80.isTreeNode&&!(!this.showRoot&&_c80===this.rootNode)){this.focusNode(_c80);}}},focusLastChild:function(){var node=this._getLast();if(node&&node.isTreeNode){this.focusNode(node);}},_getFirst:function(){return this.showRoot?this.rootNode:this.rootNode.getChildren()[0];},_getLast:function(){var node=this.rootNode;while(node.isExpanded){var c=node.getChildren();if(!c.length){break;}node=c[c.length-1];}return node;},_getNext:function(node){if(node.isExpandable&&node.isExpanded&&node.hasChildren()){return node.getChildren()[0];}else{while(node&&node.isTreeNode){var _c81=node.getNextSibling();if(_c81){return _c81;}node=node.getParent();}return null;}},childSelector:".dijitTreeRow",isExpandoNode:function(node,_c82){return dom.isDescendant(node,_c82.expandoNode)||dom.isDescendant(node,_c82.expandoNodeText);},_onNodePress:function(_c83,e){this.focusNode(_c83);},__click:function(_c84,e,_c85,func){var _c86=e.target,_c87=this.isExpandoNode(_c86,_c84);if(_c84.isExpandable&&(_c85||_c87)){this._onExpandoClick({node:_c84});}else{this._publish("execute",{item:_c84.item,node:_c84,evt:e});this[func](_c84.item,_c84,e);this.focusNode(_c84);}e.stopPropagation();e.preventDefault();},_onClick:function(_c88,e){this.__click(_c88,e,this.openOnClick,"onClick");},_onDblClick:function(_c89,e){this.__click(_c89,e,this.openOnDblClick,"onDblClick");},_onExpandoClick:function(_c8a){var node=_c8a.node;this.focusNode(node);if(node.isExpanded){this._collapseNode(node);}else{this._expandNode(node);}},onClick:function(){},onDblClick:function(){},onOpen:function(){},onClose:function(){},_getNextNode:function(node){_c2c.deprecated(this.declaredClass+"::_getNextNode(node) is deprecated. Use _getNext(node) instead.","","2.0");return this._getNext(node);},_getRootOrFirstNode:function(){_c2c.deprecated(this.declaredClass+"::_getRootOrFirstNode() is deprecated. Use _getFirst() instead.","","2.0");return this._getFirst();},_collapseNode:function(node){if(node._expandNodeDeferred){delete node._expandNodeDeferred;}if(node.state=="Loading"){return;}if(node.isExpanded){var ret=node.collapse();this.onClose(node.item,node);this._state(node,false);this._startPaint(ret);return ret;}},_expandNode:function(node){if(node._expandNodeDeferred){return node._expandNodeDeferred;}var _c8b=this.model,item=node.item,_c8c=this;if(!node._loadDeferred){node.markProcessing();node._loadDeferred=new _c26();_c8b.getChildren(item,function(_c8d){node.unmarkProcessing();node.setChildItems(_c8d).then(function(){node._loadDeferred.resolve(_c8d);});},function(err){console.error(_c8c,": error loading "+node.label+" children: ",err);node._loadDeferred.reject(err);});}var def=node._loadDeferred.then(lang.hitch(this,function(){var def2=node.expand();this.onOpen(node.item,node);this._state(node,true);return def2;}));this._startPaint(def);return def;},focusNode:function(node){var tmp=[];for(var _c8e=this.domNode;_c8e&&_c8e.tagName&&_c8e.tagName.toUpperCase()!=="IFRAME";_c8e=_c8e.parentNode){tmp.push({domNode:_c8e.contentWindow||_c8e,scrollLeft:_c8e.scrollLeft||0,scrollTop:_c8e.scrollTop||0});}this.focusChild(node);this.defer(function(){for(var i=0,max=tmp.length;i<max;i++){tmp[i].domNode.scrollLeft=tmp[i].scrollLeft;tmp[i].domNode.scrollTop=tmp[i].scrollTop;}},0);},_onNodeMouseEnter:function(){},_onNodeMouseLeave:function(){},_onItemChange:function(item){var _c8f=this.model,_c90=_c8f.getIdentity(item),_c91=this._itemNodesMap[_c90];if(_c91){var _c92=this.getLabel(item),_c93=this.getTooltip(item);_c22.forEach(_c91,function(node){node.set({item:item,label:_c92,tooltip:_c93});node._updateItemClasses(item);});}},_onItemChildrenChange:function(_c94,_c95){var _c96=this.model,_c97=_c96.getIdentity(_c94),_c98=this._itemNodesMap[_c97];if(_c98){_c22.forEach(_c98,function(_c99){_c99.setChildItems(_c95);});}},_onItemDelete:function(item){var _c9a=this.model,_c9b=_c9a.getIdentity(item),_c9c=this._itemNodesMap[_c9b];if(_c9c){_c22.forEach(_c9c,function(node){this.dndController.removeTreeNode(node);var _c9d=node.getParent();if(_c9d){_c9d.removeChild(node);}if(this.lastFocusedChild&&!dom.isDescendant(this.lastFocusedChild.domNode,this.domNode)){delete this.lastFocusedChild;}if(this.focusedChild&&!dom.isDescendant(this.focusedChild.domNode,this.domNode)){this.focus();}node.destroyRecursive();},this);delete this._itemNodesMap[_c9b];}},_initState:function(){this._openedNodes={};if(this.persist&&this.cookieName){var oreo=_c24(this.cookieName);if(oreo){_c22.forEach(oreo.split(","),function(item){this._openedNodes[item]=true;},this);}}},_state:function(node,_c9e){if(!this.persist){return false;}var path=_c22.map(node.getTreePath(),function(item){return this.model.getIdentity(item);},this).join("/");if(arguments.length===1){return this._openedNodes[path];}else{if(_c9e){this._openedNodes[path]=true;}else{delete this._openedNodes[path];}this._saveExpandedNodes();}},_saveExpandedNodes:function(){if(this.persist&&this.cookieName){var ary=[];for(var id in this._openedNodes){ary.push(id);}_c24(this.cookieName,ary.join(","),{expires:365});}},destroy:function(){if(this._curSearch){this._curSearch.timer.remove();delete this._curSearch;}if(this.rootNode){this.rootNode.destroyRecursive();}if(this.dndController&&!lang.isString(this.dndController)){this.dndController.destroy();}this.rootNode=null;this.inherited(arguments);},destroyRecursive:function(){this.destroy();},resize:function(_c9f){if(_c9f){_c28.setMarginBox(this.domNode,_c9f);}this._nodePixelIndent=_c28.position(this.tree.indentDetector).w||this._nodePixelIndent;this.expandChildrenDeferred.then(lang.hitch(this,function(){this.rootNode.set("indent",this.showRoot?0:-1);this._adjustWidths();}));},_outstandingPaintOperations:0,_startPaint:function(p){this._outstandingPaintOperations++;if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}var oc=lang.hitch(this,function(){this._outstandingPaintOperations--;if(this._outstandingPaintOperations<=0&&!this._adjustWidthsTimer&&this._started){this._adjustWidthsTimer=this.defer("_adjustWidths");}});when(p,oc,oc);},_adjustWidths:function(){if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}this.containerNode.style.width="auto";this.containerNode.style.width=this.domNode.scrollWidth>this.domNode.offsetWidth?"auto":"100%";},_createTreeNode:function(args){return new _c41(args);},focus:function(){if(this.lastFocusedChild){this.focusNode(this.lastFocusedChild);}else{this.focusFirstChild();}}});if(has("dojo-bidi")){Tree.extend({_setTextDirAttr:function(_ca0){if(_ca0&&this.textDir!=_ca0){this._set("textDir",_ca0);this.rootNode.set("textDir",_ca0);}}});}Tree.PathError=_c2a("TreePathError");Tree._TreeNode=_c41;return Tree;});},"dijit/form/_FormValueWidget":function(){define(["dojo/_base/declare","dojo/sniff","./_FormWidget","./_FormValueMixin"],function(_ca1,has,_ca2,_ca3){return _ca1("dijit.form._FormValueWidget",[_ca2,_ca3],{_layoutHackIE7:function(){if(has("ie")==7){var _ca4=this.domNode;var _ca5=_ca4.parentNode;var _ca6=_ca4.firstChild||_ca4;var _ca7=_ca6.style.filter;var _ca8=this;while(_ca5&&_ca5.clientHeight==0){(function ping(){var _ca9=_ca8.connect(_ca5,"onscroll",function(){_ca8.disconnect(_ca9);_ca6.style.filter=(new Date()).getMilliseconds();_ca8.defer(function(){_ca6.style.filter=_ca7;});});})();_ca5=_ca5.parentNode;}}}});});},"url:dijit/templates/Menu.html":"<table class=\"dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable\" role=\"menu\" tabIndex=\"${tabIndex}\"\n\t cellspacing=\"0\">\n\t<tbody class=\"dijitReset\" data-dojo-attach-point=\"containerNode\"></tbody>\n</table>\n","url:dijit/templates/TreeNode.html":"<div class=\"dijitTreeNode\" role=\"presentation\"\n\t><div data-dojo-attach-point=\"rowNode\" class=\"dijitTreeRow\" role=\"presentation\"\n\t\t><span data-dojo-attach-point=\"expandoNode\" class=\"dijitInline dijitTreeExpando\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"expandoNodeText\" class=\"dijitExpandoText\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" role=\"presentation\">\n\t\t\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitTreeIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span data-dojo-attach-point=\"labelNode,focusNode\" class=\"dijitTreeLabel\" role=\"treeitem\"\n\t\t\t\t tabindex=\"-1\" aria-selected=\"false\" id=\"${id}_label\"></span>\n\t\t</span\n\t></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeNodeContainer\" role=\"presentation\"\n\t\t style=\"display: none;\" aria-labelledby=\"${id}_label\"></div>\n</div>\n","url:dijit/layout/templates/AccordionButton.html":"<div data-dojo-attach-event='ondijitclick:_onTitleClick' class='dijitAccordionTitle' role=\"presentation\">\n\t<div data-dojo-attach-point='titleNode,focusNode' data-dojo-attach-event='onkeydown:_onTitleKeyDown'\n\t\t\tclass='dijitAccordionTitleFocus' role=\"tab\" aria-expanded=\"false\"\n\t\t><span class='dijitInline dijitAccordionArrow' role=\"presentation\"></span\n\t\t><span class='arrowTextUp' role=\"presentation\">+</span\n\t\t><span class='arrowTextDown' role=\"presentation\">-</span\n\t\t><span role=\"presentation\" class=\"dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t\t<span role=\"presentation\" data-dojo-attach-point='titleTextNode, textDirNode' class='dijitAccordionText'></span>\n\t</div>\n</div>\n","url:dijit/templates/MenuSeparator.html":"<tr class=\"dijitMenuSeparator\" role=\"separator\">\n\t<td class=\"dijitMenuSeparatorIconCell\">\n\t\t<div class=\"dijitMenuSeparatorTop\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n\t<td colspan=\"3\" class=\"dijitMenuSeparatorLabelCell\">\n\t\t<div class=\"dijitMenuSeparatorTop dijitMenuSeparatorLabel\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n</tr>\n","url:dijit/templates/ProgressBar.html":"<div class=\"dijitProgressBar dijitProgressBarEmpty\" role=\"progressbar\"\n\t><div data-dojo-attach-point=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\" role=\"presentation\"></div\n\t\t><span style=\"visibility:hidden\">&#160;</span\n\t></div\n\t><div data-dojo-attach-point=\"labelNode\" class=\"dijitProgressBarLabel\" id=\"${id}_label\"></div\n\t><span data-dojo-attach-point=\"indeterminateHighContrastImage\"\n\t\t class=\"dijitInline dijitProgressBarIndeterminateHighContrastImage\"></span\n></div>\n","url:dijit/form/templates/DropDownButton.html":"<span class=\"dijit dijitReset dijitInline\"\n\t><span class='dijitReset dijitInline dijitButtonNode'\n\t\tdata-dojo-attach-event=\"ondijitclick:__onClick\" data-dojo-attach-point=\"_buttonNode\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"focusNode,titleNode,_arrowWrapperNode,_popupStateNode\"\n\t\t\trole=\"button\" aria-haspopup=\"true\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\"\n\t\t\t\tdata-dojo-attach-point=\"iconNode\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonInner\"></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonChar\">&#9660;</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\" tabIndex=\"-1\"\n\t\tdata-dojo-attach-event=\"onclick:_onClick\" data-dojo-attach-point=\"valueNode\" aria-hidden=\"true\"\n/></span>\n","url:dijit/form/templates/DropDownBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\"\n\trole=\"combobox\"\n\taria-haspopup=\"true\"\n\tdata-dojo-attach-point=\"_popupStateNode\"\n\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer'\n\t\tdata-dojo-attach-point=\"_buttonNode\" role=\"presentation\"\n\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"button presentation\" aria-hidden=\"true\"\n\t\t\t${_buttonInputDisabled}\n\t/></div\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class='dijitReset dijitInputInner' ${!nameAttrSetting} type=\"${type}\" autocomplete=\"off\"\n\t\t\tdata-dojo-attach-point=\"textbox,focusNode\" role=\"textbox\"\n\t/></div\n></div>\n","url:dijit/templates/CheckedMenuItem.html":"<tr class=\"dijitReset\" data-dojo-attach-point=\"focusNode\" role=\"${role}\" tabIndex=\"-1\" aria-checked=\"${checked}\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<span class=\"dijitInline dijitIcon dijitMenuItemIcon dijitCheckedMenuItemIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t\t<span class=\"dijitMenuItemIconChar dijitCheckedMenuItemIconChar\">${!checkedChar}</span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode,labelNode,textDirNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">&#160;</td>\n</tr>\n","url:dijit/templates/Tooltip.html":"<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\" data-dojo-attach-event=\"mouseenter:onMouseEnter,mouseleave:onMouseLeave\"\n\t><div class=\"dijitTooltipConnector\" data-dojo-attach-point=\"connectorNode\"></div\n\t><div class=\"dijitTooltipContainer dijitTooltipContents\" data-dojo-attach-point=\"containerNode\" role='alert'></div\n></div>\n","url:dijit/form/templates/ValidationTextBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\" role=\"presentation\"\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n","url:dijit/templates/InlineEditBox.html":"<span data-dojo-attach-point=\"editNode\" role=\"presentation\" class=\"dijitReset dijitInline dijitOffScreen\"\n\t><span data-dojo-attach-point=\"editorPlaceholder\"></span\n\t><span data-dojo-attach-point=\"buttonContainer\"\n\t\t><button data-dojo-type=\"./form/Button\" data-dojo-props=\"label: '${buttonSave}', 'class': 'saveButton'\"\n\t\t\tdata-dojo-attach-point=\"saveButton\" data-dojo-attach-event=\"onClick:save\"></button\n\t\t><button data-dojo-type=\"./form/Button\" data-dojo-props=\"label: '${buttonCancel}', 'class': 'cancelButton'\"\n\t\t\tdata-dojo-attach-point=\"cancelButton\" data-dojo-attach-event=\"onClick:cancel\"></button\n\t></span\n></span>\n","url:dijit/templates/ColorPalette.html":"<div class=\"dijitInline dijitColorPalette\" role=\"grid\">\n\t<table data-dojo-attach-point=\"paletteTableNode\" class=\"dijitPaletteTable\" cellSpacing=\"0\" cellPadding=\"0\" role=\"presentation\">\n\t\t<tbody data-dojo-attach-point=\"gridNode\"></tbody>\n\t</table>\n</div>\n","url:dijit/layout/templates/_ScrollingTabControllerButton.html":"<div data-dojo-attach-event=\"ondijitclick:_onClick\" class=\"dijitTabInnerDiv dijitTabContent dijitButtonContents\" data-dojo-attach-point=\"focusNode\" role=\"button\">\n\t<span role=\"presentation\" class=\"dijitInline dijitTabStripIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t<span data-dojo-attach-point=\"containerNode,titleNode\" class=\"dijitButtonText\"></span>\n</div>","url:dijit/layout/templates/TabContainer.html":"<div class=\"dijitTabContainer\">\n\t<div class=\"dijitTabListWrapper\" data-dojo-attach-point=\"tablistNode\"></div>\n\t<div data-dojo-attach-point=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" data-dojo-attach-point=\"containerNode\"></div>\n</div>\n","url:dijit/form/templates/ComboButton.html":"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tcellspacing='0' cellpadding='0' role=\"presentation\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonNode\" data-dojo-attach-point=\"buttonNode\" data-dojo-attach-event=\"ondijitclick:__onClick,onkeydown:_onButtonKeyDown\"\n\t\t><div id=\"${id}_button\" class=\"dijitReset dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" data-dojo-attach-point=\"containerNode\" role=\"presentation\"></div\n\t\t></div\n\t\t></td\n\t\t><td id=\"${id}_arrow\" class='dijitReset dijitRight dijitButtonNode dijitArrowButton'\n\t\t\tdata-dojo-attach-point=\"_popupStateNode,focusNode,_buttonNode\"\n\t\t\tdata-dojo-attach-event=\"onkeydown:_onArrowKeyDown\"\n\t\t\ttitle=\"${optionsTitle}\"\n\t\t\trole=\"button\" aria-haspopup=\"true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" role=\"presentation\">&#9660;</div\n\t\t></td\n\t\t><td style=\"display:none !important;\"\n\t\t\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" data-dojo-attach-point=\"valueNode\"\n\t\t\t\tclass=\"dijitOffScreen\" aria-hidden=\"true\" data-dojo-attach-event=\"onclick:_onClick\"\n\t\t/></td></tr></tbody\n></table>\n","url:dijit/templates/Tree.html":"<div role=\"tree\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" data-dojo-attach-point=\"indentDetector\"></div>\n\t<div class=\"dijitTreeExpando dijitTreeExpandoLoading\" data-dojo-attach-point=\"rootLoadingIndicator\"></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeContainer\" role=\"presentation\">\n\t</div>\n</div>\n","url:dijit/templates/Dialog.html":"<div class=\"dijitDialog\" role=\"dialog\" aria-labelledby=\"${id}_title\">\n\t<div data-dojo-attach-point=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t\t<span data-dojo-attach-point=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\"\n\t\t\t\trole=\"heading\" level=\"1\"></span>\n\t\t<span data-dojo-attach-point=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" data-dojo-attach-event=\"ondijitclick: onCancel\" title=\"${buttonCancel}\" role=\"button\" tabindex=\"-1\">\n\t\t\t<span data-dojo-attach-point=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t\t</span>\n\t</div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\n\t${!actionBarTemplate}\n</div>\n\n","url:dijit/form/templates/TextBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\" id=\"widget_${id}\" role=\"presentation\"\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n","url:dijit/form/templates/Select.html":"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tdata-dojo-attach-point=\"_buttonNode,tableNode,focusNode,_popupStateNode\" cellspacing='0' cellpadding='0'\n\trole=\"listbox\" aria-haspopup=\"true\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonContents\" role=\"presentation\"\n\t\t\t><div class=\"dijitReset dijitInputField dijitButtonText\" data-dojo-attach-point=\"containerNode,textDirNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitValidationContainer\"\n\t\t\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t/></div\n\t\t\t><input type=\"hidden\" ${!nameAttrSetting} data-dojo-attach-point=\"valueNode\" value=\"${value}\" aria-hidden=\"true\"\n\t\t/></td\n\t\t><td class=\"dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer\"\n\t\t\tdata-dojo-attach-point=\"titleNode\" role=\"presentation\"\n\t\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t\t${_buttonInputDisabled}\n\t\t/></td\n\t></tr></tbody\n></table>\n","url:dijit/templates/MenuItem.html":"<tr class=\"dijitReset\" data-dojo-attach-point=\"focusNode\" role=\"menuitem\" tabIndex=\"-1\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitMenuItemIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode,textDirNode\"\n\t\trole=\"presentation\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">\n\t\t<span data-dojo-attach-point=\"arrowWrapper\" style=\"visibility: hidden\">\n\t\t\t<span class=\"dijitInline dijitIcon dijitMenuExpand\"></span>\n\t\t\t<span class=\"dijitMenuExpandA11y\">+</span>\n\t\t</span>\n\t</td>\n</tr>\n","url:dijit/layout/templates/_TabButton.html":"<div role=\"presentation\" data-dojo-attach-point=\"titleNode,innerDiv,tabContent\" class=\"dijitTabInner dijitTabContent\">\n\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitTabButtonIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t<span data-dojo-attach-point='containerNode,focusNode' class='tabLabel'></span>\n\t<span class=\"dijitInline dijitTabCloseButton dijitTabCloseIcon\" data-dojo-attach-point='closeNode'\n\t\t role=\"presentation\">\n\t\t<span data-dojo-attach-point='closeText' class='dijitTabCloseText'>[x]</span\n\t\t\t\t></span>\n</div>\n","url:dijit/form/templates/CheckBox.html":"<div class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><input\n\t \t${!nameAttrSetting} type=\"${type}\" role=\"${type}\" aria-checked=\"false\" ${checkedAttrSetting}\n\t\tclass=\"dijitReset dijitCheckBoxInput\"\n\t\tdata-dojo-attach-point=\"focusNode\"\n\t \tdata-dojo-attach-event=\"ondijitclick:_onClick\"\n/></div>\n","url:dijit/layout/templates/ScrollingTabController.html":"<div class=\"dijitTabListContainer-${tabPosition}\" style=\"visibility:hidden\">\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerMenuButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_menuBtn\"\n\t\t data-dojo-props=\"containerId: '${containerId}', iconClass: 'dijitTabStripMenuIcon',\n\t\t\t\t\tdropDownPosition: ['below-alt', 'above-alt']\"\n\t\t data-dojo-attach-point=\"_menuBtn\" showLabel=\"false\" title=\"\">&#9660;</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_leftBtn\"\n\t\t data-dojo-props=\"iconClass:'dijitTabStripSlideLeftIcon', showLabel:false, title:''\"\n\t\t data-dojo-attach-point=\"_leftBtn\" data-dojo-attach-event=\"onClick: doSlideLeft\">&#9664;</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_rightBtn\"\n\t\t data-dojo-props=\"iconClass:'dijitTabStripSlideRightIcon', showLabel:false, title:''\"\n\t\t data-dojo-attach-point=\"_rightBtn\" data-dojo-attach-event=\"onClick: doSlideRight\">&#9654;</div>\n\t<div class='dijitTabListWrapper' data-dojo-attach-point='tablistWrapper'>\n\t\t<div role='tablist' data-dojo-attach-event='onkeydown:onkeydown'\n\t\t\t data-dojo-attach-point='containerNode' class='nowrapTabStrip'></div>\n\t</div>\n</div>","url:dijit/form/templates/Button.html":"<span class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><span class=\"dijitReset dijitInline dijitButtonNode\"\n\t\tdata-dojo-attach-event=\"ondijitclick:__onClick\" role=\"presentation\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode,focusNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span class=\"dijitReset dijitToggleButtonIconChar\">&#x25CF;</span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode\"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\"\n\t\tdata-dojo-attach-event=\"onclick:_onClick\"\n\t\ttabIndex=\"-1\" aria-hidden=\"true\" data-dojo-attach-point=\"valueNode\"\n/></span>\n","url:dijit/templates/TooltipDialog.html":"<div role=\"alertdialog\" tabIndex=\"-1\">\n\t<div class=\"dijitTooltipContainer\" role=\"presentation\">\n\t\t<div data-dojo-attach-point=\"contentsNode\" class=\"dijitTooltipContents dijitTooltipFocusNode\">\n\t\t\t<div data-dojo-attach-point=\"containerNode\"></div>\n\t\t\t${!actionBarTemplate}\n\t\t</div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" role=\"presentation\" data-dojo-attach-point=\"connectorNode\"></div>\n</div>\n","*now":function(r){r(["dojo/i18n!*preload*dojo/nls/tt-rss-layer*[\"ar\",\"ca\",\"cs\",\"da\",\"de\",\"el\",\"en-gb\",\"en-us\",\"es-es\",\"fi-fi\",\"fr-fr\",\"he-il\",\"hu\",\"it-it\",\"ja-jp\",\"ko-kr\",\"nl-nl\",\"nb\",\"pl\",\"pt-br\",\"pt-pt\",\"ru\",\"sk\",\"sl\",\"sv\",\"th\",\"tr\",\"zh-tw\",\"zh-cn\",\"ROOT\"]"]);}}});define("dojo/tt-rss-layer",[],1); \ No newline at end of file
+require({cache:{"dojo/_base/url":function(){define(["./kernel"],function(_1){var _2=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),_3=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"),_4=function(){var n=null,_5=arguments,_6=[_5[0]];for(var i=1;i<_5.length;i++){if(!_5[i]){continue;}var _7=new _4(_5[i]+""),_8=new _4(_6[0]+"");if(_7.path==""&&!_7.scheme&&!_7.authority&&!_7.query){if(_7.fragment!=n){_8.fragment=_7.fragment;}_7=_8;}else{if(!_7.scheme){_7.scheme=_8.scheme;if(!_7.authority){_7.authority=_8.authority;if(_7.path.charAt(0)!="/"){var _9=_8.path.substring(0,_8.path.lastIndexOf("/")+1)+_7.path;var _a=_9.split("/");for(var j=0;j<_a.length;j++){if(_a[j]=="."){if(j==_a.length-1){_a[j]="";}else{_a.splice(j,1);j--;}}else{if(j>0&&!(j==1&&_a[0]=="")&&_a[j]==".."&&_a[j-1]!=".."){if(j==(_a.length-1)){_a.splice(j,1);_a[j-1]="";}else{_a.splice(j-1,2);j-=2;}}}}_7.path=_a.join("/");}}}}_6=[];if(_7.scheme){_6.push(_7.scheme,":");}if(_7.authority){_6.push("//",_7.authority);}_6.push(_7.path);if(_7.query){_6.push("?",_7.query);}if(_7.fragment){_6.push("#",_7.fragment);}}this.uri=_6.join("");var r=this.uri.match(_2);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(_3);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};_4.prototype.toString=function(){return this.uri;};return _1._Url=_4;});},"dojo/cache":function(){define(["./_base/kernel","./text"],function(_b){return _b.cache;});},"dojo/text":function(){define(["./_base/kernel","require","./has","./request"],function(_c,_d,_e,_f){var _10;if(1){_10=function(url,_11,_12){_f(url,{sync:!!_11,headers:{"X-Requested-With":null}}).then(_12);};}else{if(_d.getText){_10=_d.getText;}else{console.error("dojo/text plugin failed to load because loader does not support getText");}}var _13={},_14=function(_15){if(_15){_15=_15.replace(/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,"");var _16=_15.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_16){_15=_16[1];}}else{_15="";}return _15;},_17={},_18={};_c.cache=function(_19,url,_1a){var key;if(typeof _19=="string"){if(/\//.test(_19)){key=_19;_1a=url;}else{key=_d.toUrl(_19.replace(/\./g,"/")+(url?("/"+url):""));}}else{key=_19+"";_1a=url;}var val=(_1a!=undefined&&typeof _1a!="string")?_1a.value:_1a,_1b=_1a&&_1a.sanitize;if(typeof val=="string"){_13[key]=val;return _1b?_14(val):val;}else{if(val===null){delete _13[key];return null;}else{if(!(key in _13)){_10(key,true,function(_1c){_13[key]=_1c;});}return _1b?_14(_13[key]):_13[key];}}};return {dynamic:true,normalize:function(id,_1d){var _1e=id.split("!"),url=_1e[0];return (/^\./.test(url)?_1d(url):url)+(_1e[1]?"!"+_1e[1]:"");},load:function(id,_1f,_20){var _21=id.split("!"),_22=_21.length>1,_23=_21[0],url=_1f.toUrl(_21[0]),_24="url:"+url,_25=_17,_26=function(_27){_20(_22?_14(_27):_27);};if(_23 in _13){_25=_13[_23];}else{if(_1f.cache&&_24 in _1f.cache){_25=_1f.cache[_24];}else{if(url in _13){_25=_13[url];}}}if(_25===_17){if(_18[url]){_18[url].push(_26);}else{var _28=_18[url]=[_26];_10(url,!_1f.async,function(_29){_13[_23]=_13[url]=_29;for(var i=0;i<_28.length;){_28[i++](_29);}delete _18[url];});}}else{_26(_25);}}};});},"dojo/request":function(){define(["./request/default!"],function(_2a){return _2a;});},"dojo/request/default":function(){define(["exports","require","../has"],function(_2b,_2c,has){var _2d=has("config-requestProvider"),_2e;if(1||has("host-webworker")){_2e="./xhr";}else{if(0){_2e="./node";}}if(!_2d){_2d=_2e;}_2b.getPlatformDefaultId=function(){return _2e;};_2b.load=function(id,_2f,_30,_31){_2c([id=="platform"?_2e:_2d],function(_32){_30(_32);});};});},"dojo/parser":function(){define(["require","./_base/kernel","./_base/lang","./_base/array","./_base/config","./dom","./_base/window","./_base/url","./aspect","./promise/all","./date/stamp","./Deferred","./has","./query","./on","./ready"],function(_33,_34,_35,_36,_37,dom,_38,_39,_3a,all,_3b,_3c,has,_3d,don,_3e){new Date("X");function _3f(_40){return eval("("+_40+")");};var _41=0;_3a.after(_35,"extend",function(){_41++;},true);function _42(_43){var map=_43._nameCaseMap,_44=_43.prototype;if(!map||map._extendCnt<_41){map=_43._nameCaseMap={};for(var _45 in _44){if(_45.charAt(0)==="_"){continue;}map[_45.toLowerCase()]=_45;}map._extendCnt=_41;}return map;};function _46(_47,_48){if(!_48){_48=_33;}var _49=_48._dojoParserCtorMap||(_48._dojoParserCtorMap={});var ts=_47.join();if(!_49[ts]){var _4a=[];for(var i=0,l=_47.length;i<l;i++){var t=_47[i];_4a[_4a.length]=(_49[t]=_49[t]||(_35.getObject(t)||(~t.indexOf("/")&&_48(t))));}var _4b=_4a.shift();_49[ts]=_4a.length?(_4b.createSubclass?_4b.createSubclass(_4a):_4b.extend.apply(_4b,_4a)):_4b;}return _49[ts];};var _4c={_clearCache:function(){_41++;_ctorMap={};},_functionFromScript:function(_4d,_4e){var _4f="",_50="",_51=(_4d.getAttribute(_4e+"args")||_4d.getAttribute("args")),_52=_4d.getAttribute("with");var _53=(_51||"").split(/\s*,\s*/);if(_52&&_52.length){_36.forEach(_52.split(/\s*,\s*/),function(_54){_4f+="with("+_54+"){";_50+="}";});}return new Function(_53,_4f+_4d.innerHTML+_50);},instantiate:function(_55,_56,_57){_56=_56||{};_57=_57||{};var _58=(_57.scope||_34._scopeName)+"Type",_59="data-"+(_57.scope||_34._scopeName)+"-",_5a=_59+"type",_5b=_59+"mixins";var _5c=[];_36.forEach(_55,function(_5d){var _5e=_58 in _56?_56[_58]:_5d.getAttribute(_5a)||_5d.getAttribute(_58);if(_5e){var _5f=_5d.getAttribute(_5b),_60=_5f?[_5e].concat(_5f.split(/\s*,\s*/)):[_5e];_5c.push({node:_5d,types:_60});}});return this._instantiate(_5c,_56,_57);},_instantiate:function(_61,_62,_63,_64){var _65=_36.map(_61,function(obj){var _66=obj.ctor||_46(obj.types,_63.contextRequire);if(!_66){throw new Error("Unable to resolve constructor for: '"+obj.types.join()+"'");}return this.construct(_66,obj.node,_62,_63,obj.scripts,obj.inherited);},this);function _67(_68){if(!_62._started&&!_63.noStart){_36.forEach(_68,function(_69){if(typeof _69.startup==="function"&&!_69._started){_69.startup();}});}return _68;};if(_64){return all(_65).then(_67);}else{return _67(_65);}},construct:function(_6a,_6b,_6c,_6d,_6e,_6f){var _70=_6a&&_6a.prototype;_6d=_6d||{};var _71={};if(_6d.defaults){_35.mixin(_71,_6d.defaults);}if(_6f){_35.mixin(_71,_6f);}var _72;if(has("dom-attributes-explicit")){_72=_6b.attributes;}else{if(has("dom-attributes-specified-flag")){_72=_36.filter(_6b.attributes,function(a){return a.specified;});}else{var _73=/^input$|^img$/i.test(_6b.nodeName)?_6b:_6b.cloneNode(false),_74=_73.outerHTML.replace(/=[^\s"']+|="[^"]*"|='[^']*'/g,"").replace(/^\s*<[a-zA-Z0-9]*\s*/,"").replace(/\s*>.*$/,"");_72=_36.map(_74.split(/\s+/),function(_75){var _76=_75.toLowerCase();return {name:_75,value:(_6b.nodeName=="LI"&&_75=="value")||_76=="enctype"?_6b.getAttribute(_76):_6b.getAttributeNode(_76).value};});}}var _77=_6d.scope||_34._scopeName,_78="data-"+_77+"-",_79={};if(_77!=="dojo"){_79[_78+"props"]="data-dojo-props";_79[_78+"type"]="data-dojo-type";_79[_78+"mixins"]="data-dojo-mixins";_79[_77+"type"]="dojotype";_79[_78+"id"]="data-dojo-id";}var i=0,_7a,_7b=[],_7c,_7d;while(_7a=_72[i++]){var _7e=_7a.name,_7f=_7e.toLowerCase(),_80=_7a.value;switch(_79[_7f]||_7f){case "data-dojo-type":case "dojotype":case "data-dojo-mixins":break;case "data-dojo-props":_7d=_80;break;case "data-dojo-id":case "jsid":_7c=_80;break;case "data-dojo-attach-point":case "dojoattachpoint":_71.dojoAttachPoint=_80;break;case "data-dojo-attach-event":case "dojoattachevent":_71.dojoAttachEvent=_80;break;case "class":_71["class"]=_6b.className;break;case "style":_71["style"]=_6b.style&&_6b.style.cssText;break;default:if(!(_7e in _70)){var map=_42(_6a);_7e=map[_7f]||_7e;}if(_7e in _70){switch(typeof _70[_7e]){case "string":_71[_7e]=_80;break;case "number":_71[_7e]=_80.length?Number(_80):NaN;break;case "boolean":_71[_7e]=_80.toLowerCase()!="false";break;case "function":if(_80===""||_80.search(/[^\w\.]+/i)!=-1){_71[_7e]=new Function(_80);}else{_71[_7e]=_35.getObject(_80,false)||new Function(_80);}_7b.push(_7e);break;default:var _81=_70[_7e];_71[_7e]=(_81&&"length" in _81)?(_80?_80.split(/\s*,\s*/):[]):(_81 instanceof Date)?(_80==""?new Date(""):_80=="now"?new Date():_3b.fromISOString(_80)):(_81 instanceof _39)?(_34.baseUrl+_80):_3f(_80);}}else{_71[_7e]=_80;}}}for(var j=0;j<_7b.length;j++){var _82=_7b[j].toLowerCase();_6b.removeAttribute(_82);_6b[_82]=null;}if(_7d){try{_7d=_3f.call(_6d.propsThis,"{"+_7d+"}");_35.mixin(_71,_7d);}catch(e){throw new Error(e.toString()+" in data-dojo-props='"+_7d+"'");}}_35.mixin(_71,_6c);if(!_6e){_6e=(_6a&&(_6a._noScript||_70._noScript)?[]:_3d("> script[type^='dojo/']",_6b));}var _83=[],_84=[],_85=[],ons=[];if(_6e){for(i=0;i<_6e.length;i++){var _86=_6e[i];_6b.removeChild(_86);var _87=(_86.getAttribute(_78+"event")||_86.getAttribute("event")),_88=_86.getAttribute(_78+"prop"),_89=_86.getAttribute(_78+"method"),_8a=_86.getAttribute(_78+"advice"),_8b=_86.getAttribute("type"),nf=this._functionFromScript(_86,_78);if(_87){if(_8b=="dojo/connect"){_83.push({method:_87,func:nf});}else{if(_8b=="dojo/on"){ons.push({event:_87,func:nf});}else{_71[_87]=nf;}}}else{if(_8b=="dojo/aspect"){_83.push({method:_89,advice:_8a,func:nf});}else{if(_8b=="dojo/watch"){_85.push({prop:_88,func:nf});}else{_84.push(nf);}}}}}var _8c=_6a.markupFactory||_70.markupFactory;var _8d=_8c?_8c(_71,_6b,_6a):new _6a(_71,_6b);function _8e(_8f){if(_7c){_35.setObject(_7c,_8f);}for(i=0;i<_83.length;i++){_3a[_83[i].advice||"after"](_8f,_83[i].method,_35.hitch(_8f,_83[i].func),true);}for(i=0;i<_84.length;i++){_84[i].call(_8f);}for(i=0;i<_85.length;i++){_8f.watch(_85[i].prop,_85[i].func);}for(i=0;i<ons.length;i++){don(_8f,ons[i].event,ons[i].func);}return _8f;};if(_8d.then){return _8d.then(_8e);}else{return _8e(_8d);}},scan:function(_90,_91){var _92=[],_93=[],_94={};var _95=(_91.scope||_34._scopeName)+"Type",_96="data-"+(_91.scope||_34._scopeName)+"-",_97=_96+"type",_98=_96+"textdir",_99=_96+"mixins";var _9a=_90.firstChild;var _9b=_91.inherited;if(!_9b){function _9c(_9d,_9e){return (_9d.getAttribute&&_9d.getAttribute(_9e))||(_9d.parentNode&&_9c(_9d.parentNode,_9e));};_9b={dir:_9c(_90,"dir"),lang:_9c(_90,"lang"),textDir:_9c(_90,_98)};for(var key in _9b){if(!_9b[key]){delete _9b[key];}}}var _9f={inherited:_9b};var _a0;var _a1;function _a2(_a3){if(!_a3.inherited){_a3.inherited={};var _a4=_a3.node,_a5=_a2(_a3.parent);var _a6={dir:_a4.getAttribute("dir")||_a5.dir,lang:_a4.getAttribute("lang")||_a5.lang,textDir:_a4.getAttribute(_98)||_a5.textDir};for(var key in _a6){if(_a6[key]){_a3.inherited[key]=_a6[key];}}}return _a3.inherited;};while(true){if(!_9a){if(!_9f||!_9f.node){break;}_9a=_9f.node.nextSibling;_a1=false;_9f=_9f.parent;_a0=_9f.scripts;continue;}if(_9a.nodeType!=1){_9a=_9a.nextSibling;continue;}if(_a0&&_9a.nodeName.toLowerCase()=="script"){_a7=_9a.getAttribute("type");if(_a7&&/^dojo\/\w/i.test(_a7)){_a0.push(_9a);}_9a=_9a.nextSibling;continue;}if(_a1){_9a=_9a.nextSibling;continue;}var _a7=_9a.getAttribute(_97)||_9a.getAttribute(_95);var _a8=_9a.firstChild;if(!_a7&&(!_a8||(_a8.nodeType==3&&!_a8.nextSibling))){_9a=_9a.nextSibling;continue;}var _a9;var _aa=null;if(_a7){var _ab=_9a.getAttribute(_99),_ac=_ab?[_a7].concat(_ab.split(/\s*,\s*/)):[_a7];try{_aa=_46(_ac,_91.contextRequire);}catch(e){}if(!_aa){_36.forEach(_ac,function(t){if(~t.indexOf("/")&&!_94[t]){_94[t]=true;_93[_93.length]=t;}});}var _ad=_aa&&!_aa.prototype._noScript?[]:null;_a9={types:_ac,ctor:_aa,parent:_9f,node:_9a,scripts:_ad};_a9.inherited=_a2(_a9);_92.push(_a9);}else{_a9={node:_9a,scripts:_a0,parent:_9f};}_a0=_ad;_a1=_9a.stopParser||(_aa&&_aa.prototype.stopParser&&!(_91.template));_9f=_a9;_9a=_a8;}var d=new _3c();if(_93.length){if(has("dojo-debug-messages")){console.warn("WARNING: Modules being Auto-Required: "+_93.join(", "));}var r=_91.contextRequire||_33;r(_93,function(){d.resolve(_36.filter(_92,function(_ae){if(!_ae.ctor){try{_ae.ctor=_46(_ae.types,_91.contextRequire);}catch(e){}}var _af=_ae.parent;while(_af&&!_af.types){_af=_af.parent;}var _b0=_ae.ctor&&_ae.ctor.prototype;_ae.instantiateChildren=!(_b0&&_b0.stopParser&&!(_91.template));_ae.instantiate=!_af||(_af.instantiate&&_af.instantiateChildren);return _ae.instantiate;}));});}else{d.resolve(_92);}return d.promise;},_require:function(_b1,_b2){var _b3=_3f("{"+_b1.innerHTML+"}"),_b4=[],_b5=[],d=new _3c();var _b6=(_b2&&_b2.contextRequire)||_33;for(var _b7 in _b3){_b4.push(_b7);_b5.push(_b3[_b7]);}_b6(_b5,function(){for(var i=0;i<_b4.length;i++){_35.setObject(_b4[i],arguments[i]);}d.resolve(arguments);});return d.promise;},_scanAmd:function(_b8,_b9){var _ba=new _3c(),_bb=_ba.promise;_ba.resolve(true);var _bc=this;_3d("script[type='dojo/require']",_b8).forEach(function(_bd){_bb=_bb.then(function(){return _bc._require(_bd,_b9);});_bd.parentNode.removeChild(_bd);});return _bb;},parse:function(_be,_bf){if(_be&&typeof _be!="string"&&!("nodeType" in _be)){_bf=_be;_be=_bf.rootNode;}var _c0=_be?dom.byId(_be):_38.body();_bf=_bf||{};var _c1=_bf.template?{template:true}:{},_c2=[],_c3=this;var p=this._scanAmd(_c0,_bf).then(function(){return _c3.scan(_c0,_bf);}).then(function(_c4){return _c3._instantiate(_c4,_c1,_bf,true);}).then(function(_c5){return _c2=_c2.concat(_c5);}).otherwise(function(e){console.error("dojo/parser::parse() error",e);throw e;});_35.mixin(_c2,p);return _c2;}};if(1){_34.parser=_4c;}if(_37.parseOnLoad){_3e(100,_4c,"parse");}return _4c;});},"dojo/promise/all":function(){define(["../_base/array","../_base/lang","../Deferred","../when"],function(_c6,_c7,_c8,_c9){"use strict";var _ca=_c6.some;return function all(_cb){var _cc,_c6;if(_c7.isArray(_cb)){_c6=_cb;}else{if(_cb&&typeof _cb==="object"){_cc=_cb;}}var _cd;var _ce=[];if(_cc){_c6=[];for(var key in _cc){if(Object.hasOwnProperty.call(_cc,key)){_ce.push(key);_c6.push(_cc[key]);}}_cd={};}else{if(_c6){_cd=[];}}if(!_c6||!_c6.length){return new _c8().resolve(_cd);}var _cf=new _c8();_cf.promise.always(function(){_cd=_ce=null;});var _d0=_c6.length;_ca(_c6,function(_d1,_d2){if(!_cc){_ce.push(_d2);}_c9(_d1,function(_d3){if(!_cf.isFulfilled()){_cd[_ce[_d2]]=_d3;if(--_d0===0){_cf.resolve(_cd);}}},_cf.reject);return _cf.isFulfilled();});return _cf.promise;};});},"dojo/date/stamp":function(){define(["../_base/lang","../_base/array"],function(_d4,_d5){var _d6={};_d4.setObject("dojo.date.stamp",_d6);_d6.fromISOString=function(_d7,_d8){if(!_d6._isoRegExp){_d6._isoRegExp=/^(?:(\d{4})(?:-(\d{2})(?:-(\d{2}))?)?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(.\d+)?)?((?:[+-](\d{2}):(\d{2}))|Z)?)?$/;}var _d9=_d6._isoRegExp.exec(_d7),_da=null;if(_d9){_d9.shift();if(_d9[1]){_d9[1]--;}if(_d9[6]){_d9[6]*=1000;}if(_d8){_d8=new Date(_d8);_d5.forEach(_d5.map(["FullYear","Month","Date","Hours","Minutes","Seconds","Milliseconds"],function(_db){return _d8["get"+_db]();}),function(_dc,_dd){_d9[_dd]=_d9[_dd]||_dc;});}_da=new Date(_d9[0]||1970,_d9[1]||0,_d9[2]||1,_d9[3]||0,_d9[4]||0,_d9[5]||0,_d9[6]||0);if(_d9[0]<100){_da.setFullYear(_d9[0]||1970);}var _de=0,_df=_d9[7]&&_d9[7].charAt(0);if(_df!="Z"){_de=((_d9[8]||0)*60)+(Number(_d9[9])||0);if(_df!="-"){_de*=-1;}}if(_df){_de-=_da.getTimezoneOffset();}if(_de){_da.setTime(_da.getTime()+_de*60000);}}return _da;};_d6.toISOString=function(_e0,_e1){var _e2=function(n){return (n<10)?"0"+n:n;};_e1=_e1||{};var _e3=[],_e4=_e1.zulu?"getUTC":"get",_e5="";if(_e1.selector!="time"){var _e6=_e0[_e4+"FullYear"]();_e5=["0000".substr((_e6+"").length)+_e6,_e2(_e0[_e4+"Month"]()+1),_e2(_e0[_e4+"Date"]())].join("-");}_e3.push(_e5);if(_e1.selector!="date"){var _e7=[_e2(_e0[_e4+"Hours"]()),_e2(_e0[_e4+"Minutes"]()),_e2(_e0[_e4+"Seconds"]())].join(":");var _e8=_e0[_e4+"Milliseconds"]();if(_e1.milliseconds){_e7+="."+(_e8<100?"0":"")+_e2(_e8);}if(_e1.zulu){_e7+="Z";}else{if(_e1.selector!="time"){var _e9=_e0.getTimezoneOffset();var _ea=Math.abs(_e9);_e7+=(_e9>0?"-":"+")+_e2(Math.floor(_ea/60))+":"+_e2(_ea%60);}}_e3.push(_e7);}return _e3.join("T");};return _d6;});},"dojo/node":function(){define(["./_base/kernel","./has","require"],function(_eb,has,_ec){var _ed=_eb.global.require&&_eb.global.require.nodeRequire;if(!_ed){throw new Error("Cannot find the Node.js require");}var _ee=_ed("module");return {load:function(id,_ef,_f0){if(_ee._findPath&&_ee._nodeModulePaths){var _f1=_ee._findPath(id,_ee._nodeModulePaths(_ef.toUrl(".")));if(_f1!==false){id=_f1;}}var _f2=define,_f3;define=undefined;try{_f3=_ed(id);}finally{define=_f2;}_f0(_f3);},normalize:function(id,_f4){if(id.charAt(0)==="."){id=_ec.toUrl(_f4("./"+id));}return id;}};});},"dojo/data/ItemFileWriteStore":function(){define(["../_base/lang","../_base/declare","../_base/array","../_base/json","../_base/kernel","./ItemFileReadStore","../date/stamp"],function(_f5,_f6,_f7,_f8,_f9,_fa,_fb){return _f6("dojo.data.ItemFileWriteStore",_fa,{constructor:function(_fc){this._features["dojo.data.api.Write"]=true;this._features["dojo.data.api.Notification"]=true;this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};if(!this._datatypeMap["Date"].serialize){this._datatypeMap["Date"].serialize=function(obj){return _fb.toISOString(obj,{zulu:true});};}if(_fc&&(_fc.referenceIntegrity===false)){this.referenceIntegrity=false;}this._saveInProgress=false;},referenceIntegrity:true,_assert:function(_fd){if(!_fd){throw new Error("assertion failed in ItemFileWriteStore");}},_getIdentifierAttribute:function(){return this.getFeatures()["dojo.data.api.Identity"];},newItem:function(_fe,_ff){this._assert(!this._saveInProgress);if(!this._loadFinished){this._forceLoad();}if(typeof _fe!="object"&&typeof _fe!="undefined"){throw new Error("newItem() was passed something other than an object");}var _100=null;var _101=this._getIdentifierAttribute();if(_101===Number){_100=this._arrayOfAllItems.length;}else{_100=_fe[_101];if(typeof _100==="undefined"){throw new Error("newItem() was not passed an identity for the new item");}if(_f5.isArray(_100)){throw new Error("newItem() was not passed an single-valued identity");}}if(this._itemsByIdentity){this._assert(typeof this._itemsByIdentity[_100]==="undefined");}this._assert(typeof this._pending._newItems[_100]==="undefined");this._assert(typeof this._pending._deletedItems[_100]==="undefined");var _102={};_102[this._storeRefPropName]=this;_102[this._itemNumPropName]=this._arrayOfAllItems.length;if(this._itemsByIdentity){this._itemsByIdentity[_100]=_102;_102[_101]=[_100];}this._arrayOfAllItems.push(_102);var _103=null;if(_ff&&_ff.parent&&_ff.attribute){_103={item:_ff.parent,attribute:_ff.attribute,oldValue:undefined};var _104=this.getValues(_ff.parent,_ff.attribute);if(_104&&_104.length>0){var _105=_104.slice(0,_104.length);if(_104.length===1){_103.oldValue=_104[0];}else{_103.oldValue=_104.slice(0,_104.length);}_105.push(_102);this._setValueOrValues(_ff.parent,_ff.attribute,_105,false);_103.newValue=this.getValues(_ff.parent,_ff.attribute);}else{this._setValueOrValues(_ff.parent,_ff.attribute,_102,false);_103.newValue=_102;}}else{_102[this._rootItemPropName]=true;this._arrayOfTopLevelItems.push(_102);}this._pending._newItems[_100]=_102;for(var key in _fe){if(key===this._storeRefPropName||key===this._itemNumPropName){throw new Error("encountered bug in ItemFileWriteStore.newItem");}var _106=_fe[key];if(!_f5.isArray(_106)){_106=[_106];}_102[key]=_106;if(this.referenceIntegrity){for(var i=0;i<_106.length;i++){var val=_106[i];if(this.isItem(val)){this._addReferenceToMap(val,_102,key);}}}}this.onNew(_102,_103);return _102;},_removeArrayElement:function(_107,_108){var _109=_f7.indexOf(_107,_108);if(_109!=-1){_107.splice(_109,1);return true;}return false;},deleteItem:function(item){this._assert(!this._saveInProgress);this._assertIsItem(item);var _10a=item[this._itemNumPropName];var _10b=this.getIdentity(item);if(this.referenceIntegrity){var _10c=this.getAttributes(item);if(item[this._reverseRefMap]){item["backup_"+this._reverseRefMap]=_f5.clone(item[this._reverseRefMap]);}_f7.forEach(_10c,function(_10d){_f7.forEach(this.getValues(item,_10d),function(_10e){if(this.isItem(_10e)){if(!item["backupRefs_"+this._reverseRefMap]){item["backupRefs_"+this._reverseRefMap]=[];}item["backupRefs_"+this._reverseRefMap].push({id:this.getIdentity(_10e),attr:_10d});this._removeReferenceFromMap(_10e,item,_10d);}},this);},this);var _10f=item[this._reverseRefMap];if(_10f){for(var _110 in _10f){var _111=null;if(this._itemsByIdentity){_111=this._itemsByIdentity[_110];}else{_111=this._arrayOfAllItems[_110];}if(_111){for(var _112 in _10f[_110]){var _113=this.getValues(_111,_112)||[];var _114=_f7.filter(_113,function(_115){return !(this.isItem(_115)&&this.getIdentity(_115)==_10b);},this);this._removeReferenceFromMap(item,_111,_112);if(_114.length<_113.length){this._setValueOrValues(_111,_112,_114,true);}}}}}}this._arrayOfAllItems[_10a]=null;item[this._storeRefPropName]=null;if(this._itemsByIdentity){delete this._itemsByIdentity[_10b];}this._pending._deletedItems[_10b]=item;if(item[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,item);}this.onDelete(item);return true;},setValue:function(item,_116,_117){return this._setValueOrValues(item,_116,_117,true);},setValues:function(item,_118,_119){return this._setValueOrValues(item,_118,_119,true);},unsetAttribute:function(item,_11a){return this._setValueOrValues(item,_11a,[],true);},_setValueOrValues:function(item,_11b,_11c,_11d){this._assert(!this._saveInProgress);this._assertIsItem(item);this._assert(_f5.isString(_11b));this._assert(typeof _11c!=="undefined");var _11e=this._getIdentifierAttribute();if(_11b==_11e){throw new Error("ItemFileWriteStore does not have support for changing the value of an item's identifier.");}var _11f=this._getValueOrValues(item,_11b);var _120=this.getIdentity(item);if(!this._pending._modifiedItems[_120]){var _121={};for(var key in item){if((key===this._storeRefPropName)||(key===this._itemNumPropName)||(key===this._rootItemPropName)){_121[key]=item[key];}else{if(key===this._reverseRefMap){_121[key]=_f5.clone(item[key]);}else{_121[key]=item[key].slice(0,item[key].length);}}}this._pending._modifiedItems[_120]=_121;}var _122=false;if(_f5.isArray(_11c)&&_11c.length===0){_122=delete item[_11b];_11c=undefined;if(this.referenceIntegrity&&_11f){var _123=_11f;if(!_f5.isArray(_123)){_123=[_123];}for(var i=0;i<_123.length;i++){var _124=_123[i];if(this.isItem(_124)){this._removeReferenceFromMap(_124,item,_11b);}}}}else{var _125;if(_f5.isArray(_11c)){_125=_11c.slice(0,_11c.length);}else{_125=[_11c];}if(this.referenceIntegrity){if(_11f){var _123=_11f;if(!_f5.isArray(_123)){_123=[_123];}var map={};_f7.forEach(_123,function(_126){if(this.isItem(_126)){var id=this.getIdentity(_126);map[id.toString()]=true;}},this);_f7.forEach(_125,function(_127){if(this.isItem(_127)){var id=this.getIdentity(_127);if(map[id.toString()]){delete map[id.toString()];}else{this._addReferenceToMap(_127,item,_11b);}}},this);for(var rId in map){var _128;if(this._itemsByIdentity){_128=this._itemsByIdentity[rId];}else{_128=this._arrayOfAllItems[rId];}this._removeReferenceFromMap(_128,item,_11b);}}else{for(var i=0;i<_125.length;i++){var _124=_125[i];if(this.isItem(_124)){this._addReferenceToMap(_124,item,_11b);}}}}item[_11b]=_125;_122=true;}if(_11d){this.onSet(item,_11b,_11f,_11c);}return _122;},_addReferenceToMap:function(_129,_12a,_12b){var _12c=this.getIdentity(_12a);var _12d=_129[this._reverseRefMap];if(!_12d){_12d=_129[this._reverseRefMap]={};}var _12e=_12d[_12c];if(!_12e){_12e=_12d[_12c]={};}_12e[_12b]=true;},_removeReferenceFromMap:function(_12f,_130,_131){var _132=this.getIdentity(_130);var _133=_12f[this._reverseRefMap];var _134;if(_133){for(_134 in _133){if(_134==_132){delete _133[_134][_131];if(this._isEmpty(_133[_134])){delete _133[_134];}}}if(this._isEmpty(_133)){delete _12f[this._reverseRefMap];}}},_dumpReferenceMap:function(){var i;for(i=0;i<this._arrayOfAllItems.length;i++){var item=this._arrayOfAllItems[i];if(item&&item[this._reverseRefMap]){}}},_getValueOrValues:function(item,_135){var _136=undefined;if(this.hasAttribute(item,_135)){var _137=this.getValues(item,_135);if(_137.length==1){_136=_137[0];}else{_136=_137;}}return _136;},_flatten:function(_138){if(this.isItem(_138)){return {_reference:this.getIdentity(_138)};}else{if(typeof _138==="object"){for(var type in this._datatypeMap){var _139=this._datatypeMap[type];if(_f5.isObject(_139)&&!_f5.isFunction(_139)){if(_138 instanceof _139.type){if(!_139.serialize){throw new Error("ItemFileWriteStore: No serializer defined for type mapping: ["+type+"]");}return {_type:type,_value:_139.serialize(_138)};}}else{if(_138 instanceof _139){return {_type:type,_value:_138.toString()};}}}}return _138;}},_getNewFileContentString:function(){var _13a={};var _13b=this._getIdentifierAttribute();if(_13b!==Number){_13a.identifier=_13b;}if(this._labelAttr){_13a.label=this._labelAttr;}_13a.items=[];for(var i=0;i<this._arrayOfAllItems.length;++i){var item=this._arrayOfAllItems[i];if(item!==null){var _13c={};for(var key in item){if(key!==this._storeRefPropName&&key!==this._itemNumPropName&&key!==this._reverseRefMap&&key!==this._rootItemPropName){var _13d=this.getValues(item,key);if(_13d.length==1){_13c[key]=this._flatten(_13d[0]);}else{var _13e=[];for(var j=0;j<_13d.length;++j){_13e.push(this._flatten(_13d[j]));_13c[key]=_13e;}}}}_13a.items.push(_13c);}}var _13f=true;return _f8.toJson(_13a,_13f);},_isEmpty:function(_140){var _141=true;if(_f5.isObject(_140)){var i;for(i in _140){_141=false;break;}}else{if(_f5.isArray(_140)){if(_140.length>0){_141=false;}}}return _141;},save:function(_142){this._assert(!this._saveInProgress);this._saveInProgress=true;var self=this;var _143=function(){self._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};self._saveInProgress=false;if(_142&&_142.onComplete){var _144=_142.scope||_f9.global;_142.onComplete.call(_144);}};var _145=function(err){self._saveInProgress=false;if(_142&&_142.onError){var _146=_142.scope||_f9.global;_142.onError.call(_146,err);}};if(this._saveEverything){var _147=this._getNewFileContentString();this._saveEverything(_143,_145,_147);}if(this._saveCustom){this._saveCustom(_143,_145);}if(!this._saveEverything&&!this._saveCustom){_143();}},revert:function(){this._assert(!this._saveInProgress);var _148;for(_148 in this._pending._modifiedItems){var _149=this._pending._modifiedItems[_148];var _14a=null;if(this._itemsByIdentity){_14a=this._itemsByIdentity[_148];}else{_14a=this._arrayOfAllItems[_148];}_149[this._storeRefPropName]=this;for(var key in _14a){delete _14a[key];}_f5.mixin(_14a,_149);}var _14b;for(_148 in this._pending._deletedItems){_14b=this._pending._deletedItems[_148];_14b[this._storeRefPropName]=this;var _14c=_14b[this._itemNumPropName];if(_14b["backup_"+this._reverseRefMap]){_14b[this._reverseRefMap]=_14b["backup_"+this._reverseRefMap];delete _14b["backup_"+this._reverseRefMap];}this._arrayOfAllItems[_14c]=_14b;if(this._itemsByIdentity){this._itemsByIdentity[_148]=_14b;}if(_14b[this._rootItemPropName]){this._arrayOfTopLevelItems.push(_14b);}}for(_148 in this._pending._deletedItems){_14b=this._pending._deletedItems[_148];if(_14b["backupRefs_"+this._reverseRefMap]){_f7.forEach(_14b["backupRefs_"+this._reverseRefMap],function(_14d){var _14e;if(this._itemsByIdentity){_14e=this._itemsByIdentity[_14d.id];}else{_14e=this._arrayOfAllItems[_14d.id];}this._addReferenceToMap(_14e,_14b,_14d.attr);},this);delete _14b["backupRefs_"+this._reverseRefMap];}}for(_148 in this._pending._newItems){var _14f=this._pending._newItems[_148];_14f[this._storeRefPropName]=null;this._arrayOfAllItems[_14f[this._itemNumPropName]]=null;if(_14f[this._rootItemPropName]){this._removeArrayElement(this._arrayOfTopLevelItems,_14f);}if(this._itemsByIdentity){delete this._itemsByIdentity[_148];}}this._pending={_newItems:{},_modifiedItems:{},_deletedItems:{}};return true;},isDirty:function(item){if(item){var _150=this.getIdentity(item);return new Boolean(this._pending._newItems[_150]||this._pending._modifiedItems[_150]||this._pending._deletedItems[_150]).valueOf();}else{return !this._isEmpty(this._pending._newItems)||!this._isEmpty(this._pending._modifiedItems)||!this._isEmpty(this._pending._deletedItems);}},onSet:function(item,_151,_152,_153){},onNew:function(_154,_155){},onDelete:function(_156){},close:function(_157){if(this.clearOnClose){if(!this.isDirty()){this.inherited(arguments);}else{throw new Error("dojo.data.ItemFileWriteStore: There are unsaved changes present in the store. Please save or revert the changes before invoking close.");}}}});});},"dojo/data/ItemFileReadStore":function(){define(["../_base/kernel","../_base/lang","../_base/declare","../_base/array","../_base/xhr","../Evented","./util/filter","./util/simpleFetch","../date/stamp"],function(_158,lang,_159,_15a,xhr,_15b,_15c,_15d,_15e){var _15f=_159("dojo.data.ItemFileReadStore",[_15b],{constructor:function(_160){this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._jsonFileUrl=_160.url;this._ccUrl=_160.url;this.url=_160.url;this._jsonData=_160.data;this.data=null;this._datatypeMap=_160.typeMap||{};if(!this._datatypeMap["Date"]){this._datatypeMap["Date"]={type:Date,deserialize:function(_161){return _15e.fromISOString(_161);}};}this._features={"dojo.data.api.Read":true,"dojo.data.api.Identity":true};this._itemsByIdentity=null;this._storeRefPropName="_S";this._itemNumPropName="_0";this._rootItemPropName="_RI";this._reverseRefMap="_RRM";this._loadInProgress=false;this._queuedFetches=[];if(_160.urlPreventCache!==undefined){this.urlPreventCache=_160.urlPreventCache?true:false;}if(_160.hierarchical!==undefined){this.hierarchical=_160.hierarchical?true:false;}if(_160.clearOnClose){this.clearOnClose=true;}if("failOk" in _160){this.failOk=_160.failOk?true:false;}},url:"",_ccUrl:"",data:null,typeMap:null,clearOnClose:false,urlPreventCache:false,failOk:false,hierarchical:true,_assertIsItem:function(item){if(!this.isItem(item)){throw new Error(this.declaredClass+": Invalid item argument.");}},_assertIsAttribute:function(_162){if(typeof _162!=="string"){throw new Error(this.declaredClass+": Invalid attribute argument.");}},getValue:function(item,_163,_164){var _165=this.getValues(item,_163);return (_165.length>0)?_165[0]:_164;},getValues:function(item,_166){this._assertIsItem(item);this._assertIsAttribute(_166);return (item[_166]||[]).slice(0);},getAttributes:function(item){this._assertIsItem(item);var _167=[];for(var key in item){if((key!==this._storeRefPropName)&&(key!==this._itemNumPropName)&&(key!==this._rootItemPropName)&&(key!==this._reverseRefMap)){_167.push(key);}}return _167;},hasAttribute:function(item,_168){this._assertIsItem(item);this._assertIsAttribute(_168);return (_168 in item);},containsValue:function(item,_169,_16a){var _16b=undefined;if(typeof _16a==="string"){_16b=_15c.patternToRegExp(_16a,false);}return this._containsValue(item,_169,_16a,_16b);},_containsValue:function(item,_16c,_16d,_16e){return _15a.some(this.getValues(item,_16c),function(_16f){if(_16f!==null&&!lang.isObject(_16f)&&_16e){if(_16f.toString().match(_16e)){return true;}}else{if(_16d===_16f){return true;}}});},isItem:function(_170){if(_170&&_170[this._storeRefPropName]===this){if(this._arrayOfAllItems[_170[this._itemNumPropName]]===_170){return true;}}return false;},isItemLoaded:function(_171){return this.isItem(_171);},loadItem:function(_172){this._assertIsItem(_172.item);},getFeatures:function(){return this._features;},getLabel:function(item){if(this._labelAttr&&this.isItem(item)){return this.getValue(item,this._labelAttr);}return undefined;},getLabelAttributes:function(item){if(this._labelAttr){return [this._labelAttr];}return null;},filter:function(_173,_174,_175){var _176=[],i,key;if(_173.query){var _177,_178=_173.queryOptions?_173.queryOptions.ignoreCase:false;var _179={};for(key in _173.query){_177=_173.query[key];if(typeof _177==="string"){_179[key]=_15c.patternToRegExp(_177,_178);}else{if(_177 instanceof RegExp){_179[key]=_177;}}}for(i=0;i<_174.length;++i){var _17a=true;var _17b=_174[i];if(_17b===null){_17a=false;}else{for(key in _173.query){_177=_173.query[key];if(!this._containsValue(_17b,key,_177,_179[key])){_17a=false;}}}if(_17a){_176.push(_17b);}}_175(_176,_173);}else{for(i=0;i<_174.length;++i){var item=_174[i];if(item!==null){_176.push(item);}}_175(_176,_173);}},_fetchItems:function(_17c,_17d,_17e){var self=this;if(this._loadFinished){this.filter(_17c,this._getItemsArray(_17c.queryOptions),_17d);}else{if(this._jsonFileUrl!==this._ccUrl){_158.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_17c,filter:lang.hitch(self,"filter"),findCallback:lang.hitch(self,_17d)});}else{this._loadInProgress=true;var _17f={url:self._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _180=xhr.get(_17f);_180.addCallback(function(data){try{self._getItemsFromLoadedData(data);self._loadFinished=true;self._loadInProgress=false;self.filter(_17c,self._getItemsArray(_17c.queryOptions),_17d);self._handleQueuedFetches();}catch(e){self._loadFinished=true;self._loadInProgress=false;_17e(e,_17c);}});_180.addErrback(function(_181){self._loadInProgress=false;_17e(_181,_17c);});var _182=null;if(_17c.abort){_182=_17c.abort;}_17c.abort=function(){var df=_180;if(df&&df.fired===-1){df.cancel();df=null;}if(_182){_182.call(_17c);}};}}else{if(this._jsonData){try{this._loadFinished=true;this._getItemsFromLoadedData(this._jsonData);this._jsonData=null;self.filter(_17c,this._getItemsArray(_17c.queryOptions),_17d);}catch(e){_17e(e,_17c);}}else{_17e(new Error(this.declaredClass+": No JSON source data was provided as either URL or a nested Javascript object."),_17c);}}}},_handleQueuedFetches:function(){if(this._queuedFetches.length>0){for(var i=0;i<this._queuedFetches.length;i++){var _183=this._queuedFetches[i],_184=_183.args,_185=_183.filter,_186=_183.findCallback;if(_185){_185(_184,this._getItemsArray(_184.queryOptions),_186);}else{this.fetchItemByIdentity(_184);}}this._queuedFetches=[];}},_getItemsArray:function(_187){if(_187&&_187.deep){return this._arrayOfAllItems;}return this._arrayOfTopLevelItems;},close:function(_188){if(this.clearOnClose&&this._loadFinished&&!this._loadInProgress){if(((this._jsonFileUrl==""||this._jsonFileUrl==null)&&(this.url==""||this.url==null))&&this.data==null){}this._arrayOfAllItems=[];this._arrayOfTopLevelItems=[];this._loadFinished=false;this._itemsByIdentity=null;this._loadInProgress=false;this._queuedFetches=[];}},_getItemsFromLoadedData:function(_189){var _18a=false,self=this;function _18b(_18c){return (_18c!==null)&&(typeof _18c==="object")&&(!lang.isArray(_18c)||_18a)&&(!lang.isFunction(_18c))&&(_18c.constructor==Object||lang.isArray(_18c))&&(typeof _18c._reference==="undefined")&&(typeof _18c._type==="undefined")&&(typeof _18c._value==="undefined")&&self.hierarchical;};function _18d(_18e){self._arrayOfAllItems.push(_18e);for(var _18f in _18e){var _190=_18e[_18f];if(_190){if(lang.isArray(_190)){var _191=_190;for(var k=0;k<_191.length;++k){var _192=_191[k];if(_18b(_192)){_18d(_192);}}}else{if(_18b(_190)){_18d(_190);}}}}};this._labelAttr=_189.label;var i,item;this._arrayOfAllItems=[];this._arrayOfTopLevelItems=_189.items;for(i=0;i<this._arrayOfTopLevelItems.length;++i){item=this._arrayOfTopLevelItems[i];if(lang.isArray(item)){_18a=true;}_18d(item);item[this._rootItemPropName]=true;}var _193={},key;for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];for(key in item){if(key!==this._rootItemPropName){var _194=item[key];if(_194!==null){if(!lang.isArray(_194)){item[key]=[_194];}}else{item[key]=[null];}}_193[key]=key;}}while(_193[this._storeRefPropName]){this._storeRefPropName+="_";}while(_193[this._itemNumPropName]){this._itemNumPropName+="_";}while(_193[this._reverseRefMap]){this._reverseRefMap+="_";}var _195;var _196=_189.identifier;if(_196){this._itemsByIdentity={};this._features["dojo.data.api.Identity"]=_196;for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];_195=item[_196];var _197=_195[0];if(!Object.hasOwnProperty.call(this._itemsByIdentity,_197)){this._itemsByIdentity[_197]=item;}else{if(this._jsonFileUrl){throw new Error(this.declaredClass+": The json data as specified by: ["+this._jsonFileUrl+"] is malformed. Items within the list have identifier: ["+_196+"]. Value collided: ["+_197+"]");}else{if(this._jsonData){throw new Error(this.declaredClass+": The json data provided by the creation arguments is malformed. Items within the list have identifier: ["+_196+"]. Value collided: ["+_197+"]");}}}}}else{this._features["dojo.data.api.Identity"]=Number;}for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];item[this._storeRefPropName]=this;item[this._itemNumPropName]=i;}for(i=0;i<this._arrayOfAllItems.length;++i){item=this._arrayOfAllItems[i];for(key in item){_195=item[key];for(var j=0;j<_195.length;++j){_194=_195[j];if(_194!==null&&typeof _194=="object"){if(("_type" in _194)&&("_value" in _194)){var type=_194._type;var _198=this._datatypeMap[type];if(!_198){throw new Error("dojo.data.ItemFileReadStore: in the typeMap constructor arg, no object class was specified for the datatype '"+type+"'");}else{if(lang.isFunction(_198)){_195[j]=new _198(_194._value);}else{if(lang.isFunction(_198.deserialize)){_195[j]=_198.deserialize(_194._value);}else{throw new Error("dojo.data.ItemFileReadStore: Value provided in typeMap was neither a constructor, nor a an object with a deserialize function");}}}}if(_194._reference){var _199=_194._reference;if(!lang.isObject(_199)){_195[j]=this._getItemByIdentity(_199);}else{for(var k=0;k<this._arrayOfAllItems.length;++k){var _19a=this._arrayOfAllItems[k],_19b=true;for(var _19c in _199){if(_19a[_19c]!=_199[_19c]){_19b=false;}}if(_19b){_195[j]=_19a;}}}if(this.referenceIntegrity){var _19d=_195[j];if(this.isItem(_19d)){this._addReferenceToMap(_19d,item,key);}}}else{if(this.isItem(_194)){if(this.referenceIntegrity){this._addReferenceToMap(_194,item,key);}}}}}}}},_addReferenceToMap:function(_19e,_19f,_1a0){},getIdentity:function(item){var _1a1=this._features["dojo.data.api.Identity"];if(_1a1===Number){return item[this._itemNumPropName];}else{var _1a2=item[_1a1];if(_1a2){return _1a2[0];}}return null;},fetchItemByIdentity:function(_1a3){var item,_1a4;if(!this._loadFinished){var self=this;if(this._jsonFileUrl!==this._ccUrl){_158.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null&&this._jsonData==null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){if(this._loadInProgress){this._queuedFetches.push({args:_1a3});}else{this._loadInProgress=true;var _1a5={url:self._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk};var _1a6=xhr.get(_1a5);_1a6.addCallback(function(data){var _1a7=_1a3.scope?_1a3.scope:_158.global;try{self._getItemsFromLoadedData(data);self._loadFinished=true;self._loadInProgress=false;item=self._getItemByIdentity(_1a3.identity);if(_1a3.onItem){_1a3.onItem.call(_1a7,item);}self._handleQueuedFetches();}catch(error){self._loadInProgress=false;if(_1a3.onError){_1a3.onError.call(_1a7,error);}}});_1a6.addErrback(function(_1a8){self._loadInProgress=false;if(_1a3.onError){var _1a9=_1a3.scope?_1a3.scope:_158.global;_1a3.onError.call(_1a9,_1a8);}});}}else{if(this._jsonData){self._getItemsFromLoadedData(self._jsonData);self._jsonData=null;self._loadFinished=true;item=self._getItemByIdentity(_1a3.identity);if(_1a3.onItem){_1a4=_1a3.scope?_1a3.scope:_158.global;_1a3.onItem.call(_1a4,item);}}}}else{item=this._getItemByIdentity(_1a3.identity);if(_1a3.onItem){_1a4=_1a3.scope?_1a3.scope:_158.global;_1a3.onItem.call(_1a4,item);}}},_getItemByIdentity:function(_1aa){var item=null;if(this._itemsByIdentity){if(Object.hasOwnProperty.call(this._itemsByIdentity,_1aa)){item=this._itemsByIdentity[_1aa];}}else{if(Object.hasOwnProperty.call(this._arrayOfAllItems,_1aa)){item=this._arrayOfAllItems[_1aa];}}if(item===undefined){item=null;}return item;},getIdentityAttributes:function(item){var _1ab=this._features["dojo.data.api.Identity"];if(_1ab===Number){return null;}else{return [_1ab];}},_forceLoad:function(){var self=this;if(this._jsonFileUrl!==this._ccUrl){_158.deprecated(this.declaredClass+": ","To change the url, set the url property of the store,"+" not _jsonFileUrl. _jsonFileUrl support will be removed in 2.0");this._ccUrl=this._jsonFileUrl;this.url=this._jsonFileUrl;}else{if(this.url!==this._ccUrl){this._jsonFileUrl=this.url;this._ccUrl=this.url;}}if(this.data!=null){this._jsonData=this.data;this.data=null;}if(this._jsonFileUrl){var _1ac={url:this._jsonFileUrl,handleAs:"json-comment-optional",preventCache:this.urlPreventCache,failOk:this.failOk,sync:true};var _1ad=xhr.get(_1ac);_1ad.addCallback(function(data){try{if(self._loadInProgress!==true&&!self._loadFinished){self._getItemsFromLoadedData(data);self._loadFinished=true;}else{if(self._loadInProgress){throw new Error(this.declaredClass+": Unable to perform a synchronous load, an async load is in progress.");}}}catch(e){throw e;}});_1ad.addErrback(function(_1ae){throw _1ae;});}else{if(this._jsonData){self._getItemsFromLoadedData(self._jsonData);self._jsonData=null;self._loadFinished=true;}}}});lang.extend(_15f,_15d);return _15f;});},"dojo/data/util/filter":function(){define(["../../_base/lang"],function(lang){var _1af={};lang.setObject("dojo.data.util.filter",_1af);_1af.patternToRegExp=function(_1b0,_1b1){var rxp="^";var c=null;for(var i=0;i<_1b0.length;i++){c=_1b0.charAt(i);switch(c){case "\\":rxp+=c;i++;rxp+=_1b0.charAt(i);break;case "*":rxp+=".*";break;case "?":rxp+=".";break;case "$":case "^":case "/":case "+":case ".":case "|":case "(":case ")":case "{":case "}":case "[":case "]":rxp+="\\";default:rxp+=c;}}rxp+="$";if(_1b1){return new RegExp(rxp,"mi");}else{return new RegExp(rxp,"m");}};return _1af;});},"dojo/data/util/simpleFetch":function(){define(["../../_base/lang","../../_base/kernel","./sorter"],function(lang,_1b2,_1b3){var _1b4={};lang.setObject("dojo.data.util.simpleFetch",_1b4);_1b4.errorHandler=function(_1b5,_1b6){if(_1b6.onError){var _1b7=_1b6.scope||_1b2.global;_1b6.onError.call(_1b7,_1b5,_1b6);}};_1b4.fetchHandler=function(_1b8,_1b9){var _1ba=_1b9.abort||null,_1bb=false,_1bc=_1b9.start?_1b9.start:0,_1bd=(_1b9.count&&(_1b9.count!==Infinity))?(_1bc+_1b9.count):_1b8.length;_1b9.abort=function(){_1bb=true;if(_1ba){_1ba.call(_1b9);}};var _1be=_1b9.scope||_1b2.global;if(!_1b9.store){_1b9.store=this;}if(_1b9.onBegin){_1b9.onBegin.call(_1be,_1b8.length,_1b9);}if(_1b9.sort){_1b8.sort(_1b3.createSortFunction(_1b9.sort,this));}if(_1b9.onItem){for(var i=_1bc;(i<_1b8.length)&&(i<_1bd);++i){var item=_1b8[i];if(!_1bb){_1b9.onItem.call(_1be,item,_1b9);}}}if(_1b9.onComplete&&!_1bb){var _1bf=null;if(!_1b9.onItem){_1bf=_1b8.slice(_1bc,_1bd);}_1b9.onComplete.call(_1be,_1bf,_1b9);}};_1b4.fetch=function(_1c0){_1c0=_1c0||{};if(!_1c0.store){_1c0.store=this;}this._fetchItems(_1c0,lang.hitch(this,"fetchHandler"),lang.hitch(this,"errorHandler"));return _1c0;};return _1b4;});},"dojo/data/util/sorter":function(){define(["../../_base/lang"],function(lang){var _1c1={};lang.setObject("dojo.data.util.sorter",_1c1);_1c1.basicComparator=function(a,b){var r=-1;if(a===null){a=undefined;}if(b===null){b=undefined;}if(a==b){r=0;}else{if(a>b||a==null){r=1;}}return r;};_1c1.createSortFunction=function(_1c2,_1c3){var _1c4=[];function _1c5(attr,dir,comp,s){return function(_1c6,_1c7){var a=s.getValue(_1c6,attr);var b=s.getValue(_1c7,attr);return dir*comp(a,b);};};var _1c8;var map=_1c3.comparatorMap;var bc=_1c1.basicComparator;for(var i=0;i<_1c2.length;i++){_1c8=_1c2[i];var attr=_1c8.attribute;if(attr){var dir=(_1c8.descending)?-1:1;var comp=bc;if(map){if(typeof attr!=="string"&&("toString" in attr)){attr=attr.toString();}comp=map[attr]||bc;}_1c4.push(_1c5(attr,dir,comp,_1c3));}}return function(rowA,rowB){var i=0;while(i<_1c4.length){var ret=_1c4[i++](rowA,rowB);if(ret!==0){return ret;}}return 0;};};return _1c1;});},"dojo/selector/acme":function(){define(["../dom","../sniff","../_base/array","../_base/lang","../_base/window"],function(dom,has,_1c9,lang,win){var trim=lang.trim;var each=_1c9.forEach;var _1ca=function(){return win.doc;};var _1cb=(_1ca().compatMode)=="BackCompat";var _1cc=">~+";var _1cd=false;var _1ce=function(){return true;};var _1cf=function(_1d0){if(_1cc.indexOf(_1d0.slice(-1))>=0){_1d0+=" * ";}else{_1d0+=" ";}var ts=function(s,e){return trim(_1d0.slice(s,e));};var _1d1=[];var _1d2=-1,_1d3=-1,_1d4=-1,_1d5=-1,_1d6=-1,inId=-1,_1d7=-1,_1d8,lc="",cc="",_1d9;var x=0,ql=_1d0.length,_1da=null,_1db=null;var _1dc=function(){if(_1d7>=0){var tv=(_1d7==x)?null:ts(_1d7,x);_1da[(_1cc.indexOf(tv)<0)?"tag":"oper"]=tv;_1d7=-1;}};var _1dd=function(){if(inId>=0){_1da.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _1de=function(){if(_1d6>=0){_1da.classes.push(ts(_1d6+1,x).replace(/\\/g,""));_1d6=-1;}};var _1df=function(){_1dd();_1dc();_1de();};var _1e0=function(){_1df();if(_1d5>=0){_1da.pseudos.push({name:ts(_1d5+1,x)});}_1da.loops=(_1da.pseudos.length||_1da.attrs.length||_1da.classes.length);_1da.oquery=_1da.query=ts(_1d9,x);_1da.otag=_1da.tag=(_1da["oper"])?null:(_1da.tag||"*");if(_1da.tag){_1da.tag=_1da.tag.toUpperCase();}if(_1d1.length&&(_1d1[_1d1.length-1].oper)){_1da.infixOper=_1d1.pop();_1da.query=_1da.infixOper.query+" "+_1da.query;}_1d1.push(_1da);_1da=null;};for(;lc=cc,cc=_1d0.charAt(x),x<ql;x++){if(lc=="\\"){continue;}if(!_1da){_1d9=x;_1da={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return _1cd?this.otag:this.tag;}};_1d7=x;}if(_1d8){if(cc==_1d8){_1d8=null;}continue;}else{if(cc=="'"||cc=="\""){_1d8=cc;continue;}}if(_1d2>=0){if(cc=="]"){if(!_1db.attr){_1db.attr=ts(_1d2+1,x);}else{_1db.matchFor=ts((_1d4||_1d2+1),x);}var cmf=_1db.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_1db.matchFor=cmf.slice(1,-1);}}if(_1db.matchFor){_1db.matchFor=_1db.matchFor.replace(/\\/g,"");}_1da.attrs.push(_1db);_1db=null;_1d2=_1d4=-1;}else{if(cc=="="){var _1e1=("|~^$*".indexOf(lc)>=0)?lc:"";_1db.type=_1e1+cc;_1db.attr=ts(_1d2+1,x-_1e1.length);_1d4=x+1;}}}else{if(_1d3>=0){if(cc==")"){if(_1d5>=0){_1db.value=ts(_1d3+1,x);}_1d5=_1d3=-1;}}else{if(cc=="#"){_1df();inId=x+1;}else{if(cc=="."){_1df();_1d6=x;}else{if(cc==":"){_1df();_1d5=x;}else{if(cc=="["){_1df();_1d2=x;_1db={};}else{if(cc=="("){if(_1d5>=0){_1db={name:ts(_1d5+1,x),value:null};_1da.pseudos.push(_1db);}_1d3=x;}else{if((cc==" ")&&(lc!=cc)){_1e0();}}}}}}}}}return _1d1;};var _1e2=function(_1e3,_1e4){if(!_1e3){return _1e4;}if(!_1e4){return _1e3;}return function(){return _1e3.apply(window,arguments)&&_1e4.apply(window,arguments);};};var _1e5=function(i,arr){var r=arr||[];if(i){r.push(i);}return r;};var _1e6=function(n){return (1==n.nodeType);};var _1e7="";var _1e8=function(elem,attr){if(!elem){return _1e7;}if(attr=="class"){return elem.className||_1e7;}if(attr=="for"){return elem.htmlFor||_1e7;}if(attr=="style"){return elem.style.cssText||_1e7;}return (_1cd?elem.getAttribute(attr):elem.getAttribute(attr,2))||_1e7;};var _1e9={"*=":function(attr,_1ea){return function(elem){return (_1e8(elem,attr).indexOf(_1ea)>=0);};},"^=":function(attr,_1eb){return function(elem){return (_1e8(elem,attr).indexOf(_1eb)==0);};},"$=":function(attr,_1ec){return function(elem){var ea=" "+_1e8(elem,attr);var _1ed=ea.lastIndexOf(_1ec);return _1ed>-1&&(_1ed==(ea.length-_1ec.length));};},"~=":function(attr,_1ee){var tval=" "+_1ee+" ";return function(elem){var ea=" "+_1e8(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_1ef){var _1f0=_1ef+"-";return function(elem){var ea=_1e8(elem,attr);return ((ea==_1ef)||(ea.indexOf(_1f0)==0));};},"=":function(attr,_1f1){return function(elem){return (_1e8(elem,attr)==_1f1);};}};var _1f2=_1ca().documentElement;var _1f3=!(_1f2.nextElementSibling||"nextElementSibling" in _1f2);var _1f4=!_1f3?"nextElementSibling":"nextSibling";var _1f5=!_1f3?"previousElementSibling":"previousSibling";var _1f6=(_1f3?_1e6:_1ce);var _1f7=function(node){while(node=node[_1f5]){if(_1f6(node)){return false;}}return true;};var _1f8=function(node){while(node=node[_1f4]){if(_1f6(node)){return false;}}return true;};var _1f9=function(node){var root=node.parentNode;root=root.nodeType!=7?root:root.nextSibling;var i=0,tret=root.children||root.childNodes,ci=(node["_i"]||node.getAttribute("_i")||-1),cl=(root["_l"]||(typeof root.getAttribute!=="undefined"?root.getAttribute("_l"):-1));if(!tret){return -1;}var l=tret.length;if(cl==l&&ci>=0&&cl>=0){return ci;}if(has("ie")&&typeof root.setAttribute!=="undefined"){root.setAttribute("_l",l);}else{root["_l"]=l;}ci=-1;for(var te=root["firstElementChild"]||root["firstChild"];te;te=te[_1f4]){if(_1f6(te)){if(has("ie")){te.setAttribute("_i",++i);}else{te["_i"]=++i;}if(node===te){ci=i;}}}return ci;};var _1fa=function(elem){return !((_1f9(elem))%2);};var _1fb=function(elem){return ((_1f9(elem))%2);};var _1fc={"checked":function(name,_1fd){return function(elem){return !!("checked" in elem?elem.checked:elem.selected);};},"disabled":function(name,_1fe){return function(elem){return elem.disabled;};},"enabled":function(name,_1ff){return function(elem){return !elem.disabled;};},"first-child":function(){return _1f7;},"last-child":function(){return _1f8;},"only-child":function(name,_200){return function(node){return _1f7(node)&&_1f8(node);};},"empty":function(name,_201){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt===1)||(nt==3)){return false;}}return true;};},"contains":function(name,_202){var cz=_202.charAt(0);if(cz=="\""||cz=="'"){_202=_202.slice(1,-1);}return function(elem){return (elem.innerHTML.indexOf(_202)>=0);};},"not":function(name,_203){var p=_1cf(_203)[0];var _204={el:1};if(p.tag!="*"){_204.tag=1;}if(!p.classes.length){_204.classes=1;}var ntf=_205(p,_204);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_206){var pi=parseInt;if(_206=="odd"){return _1fb;}else{if(_206=="even"){return _1fa;}}if(_206.indexOf("n")!=-1){var _207=_206.split("n",2);var pred=_207[0]?((_207[0]=="-")?-1:pi(_207[0])):1;var idx=_207[1]?pi(_207[1]):0;var lb=0,ub=-1;if(pred>0){if(idx<0){idx=(idx%pred)&&(pred+(idx%pred));}else{if(idx>0){if(idx>=pred){lb=idx-idx%pred;}idx=idx%pred;}}}else{if(pred<0){pred*=-1;if(idx>0){ub=idx;idx=idx%pred;}}}if(pred>0){return function(elem){var i=_1f9(elem);return (i>=lb)&&(ub<0||i<=ub)&&((i%pred)==idx);};}else{_206=idx;}}var _208=pi(_206);return function(elem){return (_1f9(elem)==_208);};}};var _209=(has("ie")<9||has("ie")==9&&has("quirks"))?function(cond){var clc=cond.toLowerCase();if(clc=="class"){cond="className";}return function(elem){return (_1cd?elem.getAttribute(cond):elem[cond]||elem[clc]);};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _205=function(_20a,_20b){if(!_20a){return _1ce;}_20b=_20b||{};var ff=null;if(!("el" in _20b)){ff=_1e2(ff,_1e6);}if(!("tag" in _20b)){if(_20a.tag!="*"){ff=_1e2(ff,function(elem){return (elem&&((_1cd?elem.tagName:elem.tagName.toUpperCase())==_20a.getTag()));});}}if(!("classes" in _20b)){each(_20a.classes,function(_20c,idx,arr){var re=new RegExp("(?:^|\\s)"+_20c+"(?:\\s|$)");ff=_1e2(ff,function(elem){return re.test(elem.className);});ff.count=idx;});}if(!("pseudos" in _20b)){each(_20a.pseudos,function(_20d){var pn=_20d.name;if(_1fc[pn]){ff=_1e2(ff,_1fc[pn](pn,_20d.value));}});}if(!("attrs" in _20b)){each(_20a.attrs,function(attr){var _20e;var a=attr.attr;if(attr.type&&_1e9[attr.type]){_20e=_1e9[attr.type](a,attr.matchFor);}else{if(a.length){_20e=_209(a);}}if(_20e){ff=_1e2(ff,_20e);}});}if(!("id" in _20b)){if(_20a.id){ff=_1e2(ff,function(elem){return (!!elem&&(elem.id==_20a.id));});}}if(!ff){if(!("default" in _20b)){ff=_1ce;}}return ff;};var _20f=function(_210){return function(node,ret,bag){while(node=node[_1f4]){if(_1f3&&(!_1e6(node))){continue;}if((!bag||_211(node,bag))&&_210(node)){ret.push(node);}break;}return ret;};};var _212=function(_213){return function(root,ret,bag){var te=root[_1f4];while(te){if(_1f6(te)){if(bag&&!_211(te,bag)){break;}if(_213(te)){ret.push(te);}}te=te[_1f4];}return ret;};};var _214=function(_215,_216){var _217=function(_218){var _219=[];try{_219=Array.prototype.slice.call(_218);}catch(e){for(var i=0,len=_218.length;i<len;i++){_219.push(_218[i]);}}return _219;};_215=_215||_1ce;return function(root,ret,bag){var te,x=0,tret=[];tret=_217(root.children||root.childNodes);if(_216){_1c9.forEach(tret,function(node){if(node.nodeType===1){tret=tret.concat(_217(node.getElementsByTagName("*")));}});}while(te=tret[x++]){if(_1f6(te)&&(!bag||_211(te,bag))&&(_215(te,x))){ret.push(te);}}return ret;};};var _21a=function(node,root){var pn=node.parentNode;while(pn){if(pn==root){break;}pn=pn.parentNode;}return !!pn;};var _21b={};var _21c=function(_21d){var _21e=_21b[_21d.query];if(_21e){return _21e;}var io=_21d.infixOper;var oper=(io?io.oper:"");var _21f=_205(_21d,{el:1});var qt=_21d.tag;var _220=("*"==qt);var ecs=_1ca()["getElementsByClassName"];if(!oper){if(_21d.id){_21f=(!_21d.loops&&_220)?_1ce:_205(_21d,{el:1,id:1});_21e=function(root,arr){var te=dom.byId(_21d.id,(root.ownerDocument||root));if(root.ownerDocument&&!_21a(root,root.ownerDocument)){var _221=root.nodeType===11?root.childNodes:[root];_1c9.some(_221,function(_222){var _223=_214(function(node){return node.id===_21d.id;},true)(_222,[]);if(_223.length){te=_223[0];return false;}});}if(!te||!_21f(te)){return;}if(9==root.nodeType){return _1e5(te,arr);}else{if(_21a(te,root)){return _1e5(te,arr);}}};}else{if(ecs&&/\{\s*\[native code\]\s*\}/.test(String(ecs))&&_21d.classes.length&&!_1cb){_21f=_205(_21d,{el:1,classes:1,id:1});var _224=_21d.classes.join(" ");_21e=function(root,arr,bag){var ret=_1e5(0,arr),te,x=0;var tret=root.getElementsByClassName(_224);while((te=tret[x++])){if(_21f(te,root)&&_211(te,bag)){ret.push(te);}}return ret;};}else{if(!_220&&!_21d.loops){_21e=function(root,arr,bag){var ret=_1e5(0,arr),te,x=0;var tag=_21d.getTag(),tret=tag?root.getElementsByTagName(tag):[];while((te=tret[x++])){if(_211(te,bag)){ret.push(te);}}return ret;};}else{_21f=_205(_21d,{el:1,tag:1,id:1});_21e=function(root,arr,bag){var ret=_1e5(0,arr),te,x=0;var tag=_21d.getTag(),tret=tag?root.getElementsByTagName(tag):[];while((te=tret[x++])){if(_21f(te,root)&&_211(te,bag)){ret.push(te);}}return ret;};}}}}else{var _225={el:1};if(_220){_225.tag=1;}_21f=_205(_21d,_225);if("+"==oper){_21e=_20f(_21f);}else{if("~"==oper){_21e=_212(_21f);}else{if(">"==oper){_21e=_214(_21f);}}}}return _21b[_21d.query]=_21e;};var _226=function(root,_227){var _228=_1e5(root),qp,x,te,qpl=_227.length,bag,ret;for(var i=0;i<qpl;i++){ret=[];qp=_227[i];x=_228.length-1;if(x>0){bag={};ret.nozip=true;}var gef=_21c(qp);for(var j=0;(te=_228[j]);j++){gef(te,ret,bag);}if(!ret.length){break;}_228=ret;}return ret;};var _229={},_22a={};var _22b=function(_22c){var _22d=_1cf(trim(_22c));if(_22d.length==1){var tef=_21c(_22d[0]);return function(root){var r=tef(root,[]);if(r){r.nozip=true;}return r;};}return function(root){return _226(root,_22d);};};var _22e=has("ie")?"commentStrip":"nozip";var qsa="querySelectorAll";var _22f=!!_1ca()[qsa];var _230=/\\[>~+]|n\+\d|([^ \\])?([>~+])([^ =])?/g;var _231=function(_232,pre,ch,post){return ch?(pre?pre+" ":"")+ch+(post?" "+post:""):_232;};var _233=/([^[]*)([^\]]*])?/g;var _234=function(_235,_236,att){return _236.replace(_230,_231)+(att||"");};var _237=function(_238,_239){_238=_238.replace(_233,_234);if(_22f){var _23a=_22a[_238];if(_23a&&!_239){return _23a;}}var _23b=_229[_238];if(_23b){return _23b;}var qcz=_238.charAt(0);var _23c=(-1==_238.indexOf(" "));if((_238.indexOf("#")>=0)&&(_23c)){_239=true;}var _23d=(_22f&&(!_239)&&(_1cc.indexOf(qcz)==-1)&&(!has("ie")||(_238.indexOf(":")==-1))&&(!(_1cb&&(_238.indexOf(".")>=0)))&&(_238.indexOf(":contains")==-1)&&(_238.indexOf(":checked")==-1)&&(_238.indexOf("|=")==-1));if(_23d){var tq=(_1cc.indexOf(_238.charAt(_238.length-1))>=0)?(_238+" *"):_238;return _22a[_238]=function(root){if(9==root.nodeType||_23c){try{var r=root[qsa](tq);r[_22e]=true;return r;}catch(e){}}return _237(_238,true)(root);};}else{var _23e=_238.match(/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g);return _229[_238]=((_23e.length<2)?_22b(_238):function(root){var _23f=0,ret=[],tp;while((tp=_23e[_23f++])){ret=ret.concat(_22b(tp)(root));}return ret;});}};var _240=0;var _241=has("ie")?function(node){if(_1cd){return (node.getAttribute("_uid")||node.setAttribute("_uid",++_240)||_240);}else{return node.uniqueID;}}:function(node){return (node._uid||(node._uid=++_240));};var _211=function(node,bag){if(!bag){return 1;}var id=_241(node);if(!bag[id]){return bag[id]=1;}return 0;};var _242="_zipIdx";var _243=function(arr){if(arr&&arr.nozip){return arr;}if(!arr||!arr.length){return [];}if(arr.length<2){return [arr[0]];}var ret=[];_240++;var x,te;if(has("ie")&&_1cd){var _244=_240+"";for(x=0;x<arr.length;x++){if((te=arr[x])&&te.getAttribute(_242)!=_244){ret.push(te);te.setAttribute(_242,_244);}}}else{if(has("ie")&&arr.commentStrip){try{for(x=0;x<arr.length;x++){if((te=arr[x])&&_1e6(te)){ret.push(te);}}}catch(e){}}else{for(x=0;x<arr.length;x++){if((te=arr[x])&&te[_242]!=_240){ret.push(te);te[_242]=_240;}}}}return ret;};var _245=function(_246,root){root=root||_1ca();var od=root.ownerDocument||root;_1cd=(od.createElement("div").tagName==="div");var r=_237(_246)(root);if(r&&r.nozip){return r;}return _243(r);};_245.filter=function(_247,_248,root){var _249=[],_24a=_1cf(_248),_24b=(_24a.length==1&&!/[^\w#\.]/.test(_248))?_205(_24a[0]):function(node){return _1c9.indexOf(_245(_248,dom.byId(root)),node)!=-1;};for(var x=0,te;te=_247[x];x++){if(_24b(te)){_249.push(te);}}return _249;};return _245;});},"dojo/selector/lite":function(){define(["../has","../_base/kernel"],function(has,dojo){"use strict";var _24c=document.createElement("div");var _24d=_24c.matches||_24c.webkitMatchesSelector||_24c.mozMatchesSelector||_24c.msMatchesSelector||_24c.oMatchesSelector;var _24e=_24c.querySelectorAll;var _24f=/([^\s,](?:"(?:\\.|[^"])+"|'(?:\\.|[^'])+'|[^,])*)/g;has.add("dom-matches-selector",!!_24d);has.add("dom-qsa",!!_24e);var _250=function(_251,root){if(_252&&_251.indexOf(",")>-1){return _252(_251,root);}var doc=root?root.ownerDocument||root:dojo.doc||document,_253=(_24e?/^([\w]*)#([\w\-]+$)|^(\.)([\w\-\*]+$)|^(\w+$)/:/^([\w]*)#([\w\-]+)(?:\s+(.*))?$|(?:^|(>|.+\s+))([\w\-\*]+)(\S*$)/).exec(_251);root=root||doc;if(_253){var _254=has("ie")===8&&has("quirks")?root.nodeType===doc.nodeType:root.parentNode!==null&&root.nodeType!==9&&root.parentNode===doc;if(_253[2]&&_254){var _255=dojo.byId?dojo.byId(_253[2],doc):doc.getElementById(_253[2]);if(!_255||(_253[1]&&_253[1]!=_255.tagName.toLowerCase())){return [];}if(root!=doc){var _256=_255;while(_256!=root){_256=_256.parentNode;if(!_256){return [];}}}return _253[3]?_250(_253[3],_255):[_255];}if(_253[3]&&root.getElementsByClassName){return root.getElementsByClassName(_253[4]);}var _255;if(_253[5]){_255=root.getElementsByTagName(_253[5]);if(_253[4]||_253[6]){_251=(_253[4]||"")+_253[6];}else{return _255;}}}if(_24e){if(root.nodeType===1&&root.nodeName.toLowerCase()!=="object"){return _257(root,_251,root.querySelectorAll);}else{return root.querySelectorAll(_251);}}else{if(!_255){_255=root.getElementsByTagName("*");}}var _258=[];for(var i=0,l=_255.length;i<l;i++){var node=_255[i];if(node.nodeType==1&&_259(node,_251,root)){_258.push(node);}}return _258;};var _257=function(_25a,_25b,_25c){var _25d=_25a,old=_25a.getAttribute("id"),nid=old||"__dojo__",_25e=_25a.parentNode,_25f=/^\s*[+~]/.test(_25b);if(_25f&&!_25e){return [];}if(!old){_25a.setAttribute("id",nid);}else{nid=nid.replace(/'/g,"\\$&");}if(_25f&&_25e){_25a=_25a.parentNode;}var _260=_25b.match(_24f);for(var i=0;i<_260.length;i++){_260[i]="[id='"+nid+"'] "+_260[i];}_25b=_260.join(",");try{return _25c.call(_25a,_25b);}finally{if(!old){_25d.removeAttribute("id");}}};if(!has("dom-matches-selector")){var _259=(function(){var _261=_24c.tagName=="div"?"toLowerCase":"toUpperCase";var _262={"":function(_263){_263=_263[_261]();return function(node){return node.tagName==_263;};},".":function(_264){var _265=" "+_264+" ";return function(node){return node.className.indexOf(_264)>-1&&(" "+node.className+" ").indexOf(_265)>-1;};},"#":function(id){return function(node){return node.id==id;};}};var _266={"^=":function(_267,_268){return _267.indexOf(_268)==0;},"*=":function(_269,_26a){return _269.indexOf(_26a)>-1;},"$=":function(_26b,_26c){return _26b.substring(_26b.length-_26c.length,_26b.length)==_26c;},"~=":function(_26d,_26e){return (" "+_26d+" ").indexOf(" "+_26e+" ")>-1;},"|=":function(_26f,_270){return (_26f+"-").indexOf(_270+"-")==0;},"=":function(_271,_272){return _271==_272;},"":function(_273,_274){return true;}};function attr(name,_275,type){var _276=_275.charAt(0);if(_276=="\""||_276=="'"){_275=_275.slice(1,-1);}_275=_275.replace(/\\/g,"");var _277=_266[type||""];return function(node){var _278=node.getAttribute(name);return _278&&_277(_278,_275);};};function _279(_27a){return function(node,root){while((node=node.parentNode)!=root){if(_27a(node,root)){return true;}}};};function _27b(_27c){return function(node,root){node=node.parentNode;return _27c?node!=root&&_27c(node,root):node==root;};};var _27d={};function and(_27e,next){return _27e?function(node,root){return next(node)&&_27e(node,root);}:next;};return function(node,_27f,root){var _280=_27d[_27f];if(!_280){if(_27f.replace(/(?:\s*([> ])\s*)|(#|\.)?((?:\\.|[\w-])+)|\[\s*([\w-]+)\s*(.?=)?\s*("(?:\\.|[^"])+"|'(?:\\.|[^'])+'|(?:\\.|[^\]])*)\s*\]/g,function(t,_281,type,_282,_283,_284,_285){if(_282){_280=and(_280,_262[type||""](_282.replace(/\\/g,"")));}else{if(_281){_280=(_281==" "?_279:_27b)(_280);}else{if(_283){_280=and(_280,attr(_283,_285,_284));}}}return "";})){throw new Error("Syntax error in query");}if(!_280){return true;}_27d[_27f]=_280;}return _280(node,root);};})();}if(!has("dom-qsa")){var _252=function(_286,root){var _287=_286.match(_24f);var _288=[];for(var i=0;i<_287.length;i++){_286=new String(_287[i].replace(/\s*$/,""));_286.indexOf=escape;var _289=_250(_286,root);for(var j=0,l=_289.length;j<l;j++){var node=_289[j];_288[node.sourceIndex]=node;}}var _28a=[];for(i in _288){_28a.push(_288[i]);}return _28a;};}_250.match=_24d?function(node,_28b,root){if(root&&root.nodeType!=9){return _257(root,_28b,function(_28c){return _24d.call(node,_28c);});}return _24d.call(node,_28b);}:_259;return _250;});},"dojo/Stateful":function(){define(["./_base/declare","./_base/lang","./_base/array","./when"],function(_28d,lang,_28e,when){return _28d("dojo.Stateful",null,{_attrPairNames:{},_getAttrNames:function(name){var apn=this._attrPairNames;if(apn[name]){return apn[name];}return (apn[name]={s:"_"+name+"Setter",g:"_"+name+"Getter"});},postscript:function(_28f){if(_28f){this.set(_28f);}},_get:function(name,_290){return typeof this[_290.g]==="function"?this[_290.g]():this[name];},get:function(name){return this._get(name,this._getAttrNames(name));},set:function(name,_291){if(typeof name==="object"){for(var x in name){if(name.hasOwnProperty(x)&&x!="_watchCallbacks"){this.set(x,name[x]);}}return this;}var _292=this._getAttrNames(name),_293=this._get(name,_292),_294=this[_292.s],_295;if(typeof _294==="function"){_295=_294.apply(this,Array.prototype.slice.call(arguments,1));}else{this[name]=_291;}if(this._watchCallbacks){var self=this;when(_295,function(){self._watchCallbacks(name,_293,_291);});}return this;},_changeAttrValue:function(name,_296){var _297=this.get(name);this[name]=_296;if(this._watchCallbacks){this._watchCallbacks(name,_297,_296);}return this;},watch:function(name,_298){var _299=this._watchCallbacks;if(!_299){var self=this;_299=this._watchCallbacks=function(name,_29a,_29b,_29c){var _29d=function(_29e){if(_29e){_29e=_29e.slice();for(var i=0,l=_29e.length;i<l;i++){_29e[i].call(self,name,_29a,_29b);}}};_29d(_299["_"+name]);if(!_29c){_29d(_299["*"]);}};}if(!_298&&typeof name==="function"){_298=name;name="*";}else{name="_"+name;}var _29f=_299[name];if(typeof _29f!=="object"){_29f=_299[name]=[];}_29f.push(_298);var _2a0={};_2a0.unwatch=_2a0.remove=function(){var _2a1=_28e.indexOf(_29f,_298);if(_2a1>-1){_29f.splice(_2a1,1);}};return _2a0;}});});},"dojo/string":function(){define(["./_base/kernel","./_base/lang"],function(_2a2,lang){var _2a3=/[&<>'"\/]/g;var _2a4={"&":"&amp;","<":"&lt;",">":"&gt;","\"":"&quot;","'":"&#x27;","/":"&#x2F;"};var _2a5={};lang.setObject("dojo.string",_2a5);_2a5.escape=function(str){if(!str){return "";}return str.replace(_2a3,function(c){return _2a4[c];});};_2a5.rep=function(str,num){if(num<=0||!str){return "";}var buf=[];for(;;){if(num&1){buf.push(str);}if(!(num>>=1)){break;}str+=str;}return buf.join("");};_2a5.pad=function(text,size,ch,end){if(!ch){ch="0";}var out=String(text),pad=_2a5.rep(ch,Math.ceil((size-out.length)/ch.length));return end?out+pad:pad+out;};_2a5.substitute=function(_2a6,map,_2a7,_2a8){_2a8=_2a8||_2a2.global;_2a7=_2a7?lang.hitch(_2a8,_2a7):function(v){return v;};return _2a6.replace(/\$\{([^\s\:\}]*)(?:\:([^\s\:\}]+))?\}/g,function(_2a9,key,_2aa){if(key==""){return "$";}var _2ab=lang.getObject(key,false,map);if(_2aa){_2ab=lang.getObject(_2aa,false,_2a8).call(_2a8,_2ab,key);}var _2ac=_2a7(_2ab,key);if(typeof _2ac==="undefined"){throw new Error("string.substitute could not find key \""+key+"\" in template");}return _2ac.toString();});};_2a5.trim=String.prototype.trim?lang.trim:function(str){str=str.replace(/^\s+/,"");for(var i=str.length-1;i>=0;i--){if(/\S/.test(str.charAt(i))){str=str.substring(0,i+1);break;}}return str;};return _2a5;});},"dojo/touch":function(){define(["./_base/kernel","./aspect","./dom","./dom-class","./_base/lang","./on","./has","./mouse","./domReady","./_base/window"],function(dojo,_2ad,dom,_2ae,lang,on,has,_2af,_2b0,win){var ios4=has("ios")<5;var _2b1=has("pointer-events")||has("MSPointer"),_2b2=(function(){var _2b3={};for(var type in {down:1,move:1,up:1,cancel:1,over:1,out:1}){_2b3[type]=has("MSPointer")?"MSPointer"+type.charAt(0).toUpperCase()+type.slice(1):"pointer"+type;}return _2b3;})();var _2b4=has("touch-events");var _2b5,_2b6,_2b7=false,_2b8,_2b9,_2ba,_2bb,_2bc,_2bd;var _2be;function _2bf(_2c0,_2c1,_2c2){if(_2b1&&_2c2){return function(node,_2c3){return on(node,_2c2,_2c3);};}else{if(_2b4){return function(node,_2c4){var _2c5=on(node,_2c1,function(evt){_2c4.call(this,evt);_2be=(new Date()).getTime();}),_2c6=on(node,_2c0,function(evt){if(!_2be||(new Date()).getTime()>_2be+1000){_2c4.call(this,evt);}});return {remove:function(){_2c5.remove();_2c6.remove();}};};}else{return function(node,_2c7){return on(node,_2c0,_2c7);};}}};function _2c8(node){do{if(node.dojoClick!==undefined){return node;}}while(node=node.parentNode);};function _2c9(e,_2ca,_2cb){if(_2af.isRight(e)){return;}var _2cc=_2c8(e.target);_2b6=!e.target.disabled&&_2cc&&_2cc.dojoClick;if(_2b6){_2b7=(_2b6=="useTarget");_2b8=(_2b7?_2cc:e.target);if(_2b7){e.preventDefault();}_2b9=e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX;_2ba=e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY;_2bb=(typeof _2b6=="object"?_2b6.x:(typeof _2b6=="number"?_2b6:0))||4;_2bc=(typeof _2b6=="object"?_2b6.y:(typeof _2b6=="number"?_2b6:0))||4;if(!_2b5){_2b5=true;function _2cd(e){if(_2b7){_2b6=dom.isDescendant(win.doc.elementFromPoint((e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX),(e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY)),_2b8);}else{_2b6=_2b6&&(e.changedTouches?e.changedTouches[0].target:e.target)==_2b8&&Math.abs((e.changedTouches?e.changedTouches[0].pageX-win.global.pageXOffset:e.clientX)-_2b9)<=_2bb&&Math.abs((e.changedTouches?e.changedTouches[0].pageY-win.global.pageYOffset:e.clientY)-_2ba)<=_2bc;}};win.doc.addEventListener(_2ca,function(e){if(_2af.isRight(e)){return;}_2cd(e);if(_2b7){e.preventDefault();}},true);win.doc.addEventListener(_2cb,function(e){if(_2af.isRight(e)){return;}_2cd(e);if(_2b6){_2bd=(new Date()).getTime();var _2ce=(_2b7?_2b8:e.target);if(_2ce.tagName==="LABEL"){_2ce=dom.byId(_2ce.getAttribute("for"))||_2ce;}var src=(e.changedTouches)?e.changedTouches[0]:e;function _2cf(type){var evt=document.createEvent("MouseEvents");evt._dojo_click=true;evt.initMouseEvent(type,true,true,e.view,e.detail,src.screenX,src.screenY,src.clientX,src.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,0,null);return evt;};var _2d0=_2cf("mousedown");var _2d1=_2cf("mouseup");var _2d2=_2cf("click");setTimeout(function(){on.emit(_2ce,"mousedown",_2d0);on.emit(_2ce,"mouseup",_2d1);on.emit(_2ce,"click",_2d2);_2bd=(new Date()).getTime();},0);}},true);function _2d3(type){win.doc.addEventListener(type,function(e){var _2d4=e.target;if(_2b6&&!e._dojo_click&&(new Date()).getTime()<=_2bd+1000&&!(_2d4.tagName=="INPUT"&&_2ae.contains(_2d4,"dijitOffScreen"))){e.stopPropagation();e.stopImmediatePropagation&&e.stopImmediatePropagation();if(type=="click"&&(_2d4.tagName!="INPUT"||(_2d4.type=="radio"&&(_2ae.contains(_2d4,"dijitCheckBoxInput")||_2ae.contains(_2d4,"mblRadioButton")))||(_2d4.type=="checkbox"&&(_2ae.contains(_2d4,"dijitCheckBoxInput")||_2ae.contains(_2d4,"mblCheckBox"))))&&_2d4.tagName!="TEXTAREA"&&_2d4.tagName!="AUDIO"&&_2d4.tagName!="VIDEO"){e.preventDefault();}}},true);};_2d3("click");_2d3("mousedown");_2d3("mouseup");}}};var _2d5;if(has("touch")){if(_2b1){_2b0(function(){win.doc.addEventListener(_2b2.down,function(evt){_2c9(evt,_2b2.move,_2b2.up);},true);});}else{_2b0(function(){_2d5=win.body();win.doc.addEventListener("touchstart",function(evt){_2be=(new Date()).getTime();var _2d6=_2d5;_2d5=evt.target;on.emit(_2d6,"dojotouchout",{relatedTarget:_2d5,bubbles:true});on.emit(_2d5,"dojotouchover",{relatedTarget:_2d6,bubbles:true});_2c9(evt,"touchmove","touchend");},true);function _2d7(evt){var _2d8=lang.delegate(evt,{bubbles:true});if(has("ios")>=6){_2d8.touches=evt.touches;_2d8.altKey=evt.altKey;_2d8.changedTouches=evt.changedTouches;_2d8.ctrlKey=evt.ctrlKey;_2d8.metaKey=evt.metaKey;_2d8.shiftKey=evt.shiftKey;_2d8.targetTouches=evt.targetTouches;}return _2d8;};on(win.doc,"touchmove",function(evt){_2be=(new Date()).getTime();var _2d9=win.doc.elementFromPoint(evt.pageX-(ios4?0:win.global.pageXOffset),evt.pageY-(ios4?0:win.global.pageYOffset));if(_2d9){if(_2d5!==_2d9){on.emit(_2d5,"dojotouchout",{relatedTarget:_2d9,bubbles:true});on.emit(_2d9,"dojotouchover",{relatedTarget:_2d5,bubbles:true});_2d5=_2d9;}if(!on.emit(_2d9,"dojotouchmove",_2d7(evt))){evt.preventDefault();}}});on(win.doc,"touchend",function(evt){_2be=(new Date()).getTime();var node=win.doc.elementFromPoint(evt.pageX-(ios4?0:win.global.pageXOffset),evt.pageY-(ios4?0:win.global.pageYOffset))||win.body();on.emit(node,"dojotouchend",_2d7(evt));});});}}var _2da={press:_2bf("mousedown","touchstart",_2b2.down),move:_2bf("mousemove","dojotouchmove",_2b2.move),release:_2bf("mouseup","dojotouchend",_2b2.up),cancel:_2bf(_2af.leave,"touchcancel",_2b1?_2b2.cancel:null),over:_2bf("mouseover","dojotouchover",_2b2.over),out:_2bf("mouseout","dojotouchout",_2b2.out),enter:_2af._eventHandler(_2bf("mouseover","dojotouchover",_2b2.over)),leave:_2af._eventHandler(_2bf("mouseout","dojotouchout",_2b2.out))};1&&(dojo.touch=_2da);return _2da;});},"dojo/uacss":function(){define(["./dom-geometry","./_base/lang","./domReady","./sniff","./_base/window"],function(_2db,lang,_2dc,has,_2dd){var html=_2dd.doc.documentElement,ie=has("ie"),_2de=has("trident"),_2df=has("opera"),maj=Math.floor,ff=has("ff"),_2e0=_2db.boxModel.replace(/-/,""),_2e1={"dj_quirks":has("quirks"),"dj_opera":_2df,"dj_khtml":has("khtml"),"dj_webkit":has("webkit"),"dj_safari":has("safari"),"dj_chrome":has("chrome"),"dj_edge":has("edge"),"dj_gecko":has("mozilla"),"dj_ios":has("ios"),"dj_android":has("android")};if(ie){_2e1["dj_ie"]=true;_2e1["dj_ie"+maj(ie)]=true;_2e1["dj_iequirks"]=has("quirks");}if(_2de){_2e1["dj_trident"]=true;_2e1["dj_trident"+maj(_2de)]=true;}if(ff){_2e1["dj_ff"+maj(ff)]=true;}_2e1["dj_"+_2e0]=true;var _2e2="";for(var clz in _2e1){if(_2e1[clz]){_2e2+=clz+" ";}}html.className=lang.trim(html.className+" "+_2e2);_2dc(function(){if(!_2db.isBodyLtr()){var _2e3="dj_rtl dijitRtl "+_2e2.replace(/ /g,"-rtl ");html.className=lang.trim(html.className+" "+_2e3+"dj_rtl dijitRtl "+_2e2.replace(/ /g,"-rtl "));}});return has;});},"dojo/window":function(){define(["./_base/lang","./sniff","./_base/window","./dom","./dom-geometry","./dom-style","./dom-construct"],function(lang,has,_2e4,dom,geom,_2e5,_2e6){has.add("rtl-adjust-position-for-verticalScrollBar",function(win,doc){var body=_2e4.body(doc),_2e7=_2e6.create("div",{style:{overflow:"scroll",overflowX:"visible",direction:"rtl",visibility:"hidden",position:"absolute",left:"0",top:"0",width:"64px",height:"64px"}},body,"last"),div=_2e6.create("div",{style:{overflow:"hidden",direction:"ltr"}},_2e7,"last"),ret=geom.position(div).x!=0;_2e7.removeChild(div);body.removeChild(_2e7);return ret;});has.add("position-fixed-support",function(win,doc){var body=_2e4.body(doc),_2e8=_2e6.create("span",{style:{visibility:"hidden",position:"fixed",left:"1px",top:"1px"}},body,"last"),_2e9=_2e6.create("span",{style:{position:"fixed",left:"0",top:"0"}},_2e8,"last"),ret=geom.position(_2e9).x!=geom.position(_2e8).x;_2e8.removeChild(_2e9);body.removeChild(_2e8);return ret;});var _2ea={getBox:function(doc){doc=doc||_2e4.doc;var _2eb=(doc.compatMode=="BackCompat")?_2e4.body(doc):doc.documentElement,_2ec=geom.docScroll(doc),w,h;if(has("touch")){var _2ed=_2ea.get(doc);w=_2ed.innerWidth||_2eb.clientWidth;h=_2ed.innerHeight||_2eb.clientHeight;}else{w=_2eb.clientWidth;h=_2eb.clientHeight;}return {l:_2ec.x,t:_2ec.y,w:w,h:h};},get:function(doc){if(has("ie")&&_2ea!==document.parentWindow){doc.parentWindow.execScript("document._parentWindow = window;","Javascript");var win=doc._parentWindow;doc._parentWindow=null;return win;}return doc.parentWindow||doc.defaultView;},scrollIntoView:function(node,pos){try{node=dom.byId(node);var doc=node.ownerDocument||_2e4.doc,body=_2e4.body(doc),html=doc.documentElement||body.parentNode,isIE=has("ie")||has("trident"),isWK=has("webkit");if(node==body||node==html){return;}if(!(has("mozilla")||isIE||isWK||has("opera")||has("trident")||has("edge"))&&("scrollIntoView" in node)){node.scrollIntoView(false);return;}var _2ee=doc.compatMode=="BackCompat",_2ef=Math.min(body.clientWidth||html.clientWidth,html.clientWidth||body.clientWidth),_2f0=Math.min(body.clientHeight||html.clientHeight,html.clientHeight||body.clientHeight),_2f1=(isWK||_2ee)?body:html,_2f2=pos||geom.position(node),el=node.parentNode,_2f3=function(el){return (isIE<=6||(isIE==7&&_2ee))?false:(has("position-fixed-support")&&(_2e5.get(el,"position").toLowerCase()=="fixed"));},self=this,_2f4=function(el,x,y){if(el.tagName=="BODY"||el.tagName=="HTML"){self.get(el.ownerDocument).scrollBy(x,y);}else{x&&(el.scrollLeft+=x);y&&(el.scrollTop+=y);}};if(_2f3(node)){return;}while(el){if(el==body){el=_2f1;}var _2f5=geom.position(el),_2f6=_2f3(el),rtl=_2e5.getComputedStyle(el).direction.toLowerCase()=="rtl";if(el==_2f1){_2f5.w=_2ef;_2f5.h=_2f0;if(_2f1==html&&(isIE||has("trident"))&&rtl){_2f5.x+=_2f1.offsetWidth-_2f5.w;}_2f5.x=0;_2f5.y=0;}else{var pb=geom.getPadBorderExtents(el);_2f5.w-=pb.w;_2f5.h-=pb.h;_2f5.x+=pb.l;_2f5.y+=pb.t;var _2f7=el.clientWidth,_2f8=_2f5.w-_2f7;if(_2f7>0&&_2f8>0){if(rtl&&has("rtl-adjust-position-for-verticalScrollBar")){_2f5.x+=_2f8;}_2f5.w=_2f7;}_2f7=el.clientHeight;_2f8=_2f5.h-_2f7;if(_2f7>0&&_2f8>0){_2f5.h=_2f7;}}if(_2f6){if(_2f5.y<0){_2f5.h+=_2f5.y;_2f5.y=0;}if(_2f5.x<0){_2f5.w+=_2f5.x;_2f5.x=0;}if(_2f5.y+_2f5.h>_2f0){_2f5.h=_2f0-_2f5.y;}if(_2f5.x+_2f5.w>_2ef){_2f5.w=_2ef-_2f5.x;}}var l=_2f2.x-_2f5.x,t=_2f2.y-_2f5.y,r=l+_2f2.w-_2f5.w,bot=t+_2f2.h-_2f5.h;var s,old;if(r*l>0&&(!!el.scrollLeft||el==_2f1||el.scrollWidth>el.offsetHeight)){s=Math[l<0?"max":"min"](l,r);if(rtl&&((isIE==8&&!_2ee)||has("trident")>=5)){s=-s;}old=el.scrollLeft;_2f4(el,s,0);s=el.scrollLeft-old;_2f2.x-=s;}if(bot*t>0&&(!!el.scrollTop||el==_2f1||el.scrollHeight>el.offsetHeight)){s=Math.ceil(Math[t<0?"max":"min"](t,bot));old=el.scrollTop;_2f4(el,0,s);s=el.scrollTop-old;_2f2.y-=s;}el=(el!=_2f1)&&!_2f6&&el.parentNode;}}catch(error){console.error("scrollIntoView: "+error);node.scrollIntoView(false);}}};1&&lang.setObject("dojo.window",_2ea);return _2ea;});},"dojo/NodeList-fx":function(){define(["./query","./_base/lang","./aspect","./_base/fx","./fx"],function(_2f9,lang,_2fa,_2fb,_2fc){var _2fd=_2f9.NodeList;lang.extend(_2fd,{_anim:function(obj,_2fe,args){args=args||{};var a=_2fc.combine(this.map(function(item){var _2ff={node:item};lang.mixin(_2ff,args);return obj[_2fe](_2ff);}));return args.auto?a.play()&&this:a;},wipeIn:function(args){return this._anim(_2fc,"wipeIn",args);},wipeOut:function(args){return this._anim(_2fc,"wipeOut",args);},slideTo:function(args){return this._anim(_2fc,"slideTo",args);},fadeIn:function(args){return this._anim(_2fb,"fadeIn",args);},fadeOut:function(args){return this._anim(_2fb,"fadeOut",args);},animateProperty:function(args){return this._anim(_2fb,"animateProperty",args);},anim:function(_300,_301,_302,_303,_304){var _305=_2fc.combine(this.map(function(item){return _2fb.animateProperty({node:item,properties:_300,duration:_301||350,easing:_302});}));if(_303){_2fa.after(_305,"onEnd",_303,true);}return _305.play(_304||0);}});return _2fd;});},"dojo/fx":function(){define(["./_base/lang","./Evented","./_base/kernel","./_base/array","./aspect","./_base/fx","./dom","./dom-style","./dom-geometry","./ready","require"],function(lang,_306,dojo,_307,_308,_309,dom,_30a,geom,_30b,_30c){if(!dojo.isAsync){_30b(0,function(){var _30d=["./fx/Toggler"];_30c(_30d);});}var _30e=dojo.fx={};var _30f={_fire:function(evt,args){if(this[evt]){this[evt].apply(this,args||[]);}return this;}};var _310=function(_311){this._index=-1;this._animations=_311||[];this._current=this._onAnimateCtx=this._onEndCtx=null;this.duration=0;_307.forEach(this._animations,function(a){if(a){if(typeof a.duration!="undefined"){this.duration+=a.duration;}if(a.delay){this.duration+=a.delay;}}},this);};_310.prototype=new _306();lang.extend(_310,{_onAnimate:function(){this._fire("onAnimate",arguments);},_onEnd:function(){this._onAnimateCtx.remove();this._onEndCtx.remove();this._onAnimateCtx=this._onEndCtx=null;if(this._index+1==this._animations.length){this._fire("onEnd");}else{this._current=this._animations[++this._index];this._onAnimateCtx=_308.after(this._current,"onAnimate",lang.hitch(this,"_onAnimate"),true);this._onEndCtx=_308.after(this._current,"onEnd",lang.hitch(this,"_onEnd"),true);this._current.play(0,true);}},play:function(_312,_313){if(!this._current){this._current=this._animations[this._index=0];}if(!_313&&this._current.status()=="playing"){return this;}var _314=_308.after(this._current,"beforeBegin",lang.hitch(this,function(){this._fire("beforeBegin");}),true),_315=_308.after(this._current,"onBegin",lang.hitch(this,function(arg){this._fire("onBegin",arguments);}),true),_316=_308.after(this._current,"onPlay",lang.hitch(this,function(arg){this._fire("onPlay",arguments);_314.remove();_315.remove();_316.remove();}));if(this._onAnimateCtx){this._onAnimateCtx.remove();}this._onAnimateCtx=_308.after(this._current,"onAnimate",lang.hitch(this,"_onAnimate"),true);if(this._onEndCtx){this._onEndCtx.remove();}this._onEndCtx=_308.after(this._current,"onEnd",lang.hitch(this,"_onEnd"),true);this._current.play.apply(this._current,arguments);return this;},pause:function(){if(this._current){var e=_308.after(this._current,"onPause",lang.hitch(this,function(arg){this._fire("onPause",arguments);e.remove();}),true);this._current.pause();}return this;},gotoPercent:function(_317,_318){this.pause();var _319=this.duration*_317;this._current=null;_307.some(this._animations,function(a,_31a){if(_319<=a.duration){this._current=a;this._index=_31a;return true;}_319-=a.duration;return false;},this);if(this._current){this._current.gotoPercent(_319/this._current.duration);}if(_318){this.play();}return this;},stop:function(_31b){if(this._current){if(_31b){for(;this._index+1<this._animations.length;++this._index){this._animations[this._index].stop(true);}this._current=this._animations[this._index];}var e=_308.after(this._current,"onStop",lang.hitch(this,function(arg){this._fire("onStop",arguments);e.remove();}),true);this._current.stop();}return this;},status:function(){return this._current?this._current.status():"stopped";},destroy:function(){this.stop();if(this._onAnimateCtx){this._onAnimateCtx.remove();}if(this._onEndCtx){this._onEndCtx.remove();}}});lang.extend(_310,_30f);_30e.chain=function(_31c){return new _310(lang.isArray(_31c)?_31c:Array.prototype.slice.call(_31c,0));};var _31d=function(_31e){this._animations=_31e||[];this._connects=[];this._finished=0;this.duration=0;_307.forEach(_31e,function(a){var _31f=a.duration;if(a.delay){_31f+=a.delay;}if(this.duration<_31f){this.duration=_31f;}this._connects.push(_308.after(a,"onEnd",lang.hitch(this,"_onEnd"),true));},this);this._pseudoAnimation=new _309.Animation({curve:[0,1],duration:this.duration});var self=this;_307.forEach(["beforeBegin","onBegin","onPlay","onAnimate","onPause","onStop","onEnd"],function(evt){self._connects.push(_308.after(self._pseudoAnimation,evt,function(){self._fire(evt,arguments);},true));});};lang.extend(_31d,{_doAction:function(_320,args){_307.forEach(this._animations,function(a){a[_320].apply(a,args);});return this;},_onEnd:function(){if(++this._finished>this._animations.length){this._fire("onEnd");}},_call:function(_321,args){var t=this._pseudoAnimation;t[_321].apply(t,args);},play:function(_322,_323){this._finished=0;this._doAction("play",arguments);this._call("play",arguments);return this;},pause:function(){this._doAction("pause",arguments);this._call("pause",arguments);return this;},gotoPercent:function(_324,_325){var ms=this.duration*_324;_307.forEach(this._animations,function(a){a.gotoPercent(a.duration<ms?1:(ms/a.duration),_325);});this._call("gotoPercent",arguments);return this;},stop:function(_326){this._doAction("stop",arguments);this._call("stop",arguments);return this;},status:function(){return this._pseudoAnimation.status();},destroy:function(){this.stop();_307.forEach(this._connects,function(_327){_327.remove();});}});lang.extend(_31d,_30f);_30e.combine=function(_328){return new _31d(lang.isArray(_328)?_328:Array.prototype.slice.call(_328,0));};_30e.wipeIn=function(args){var node=args.node=dom.byId(args.node),s=node.style,o;var anim=_309.animateProperty(lang.mixin({properties:{height:{start:function(){o=s.overflow;s.overflow="hidden";if(s.visibility=="hidden"||s.display=="none"){s.height="1px";s.display="";s.visibility="";return 1;}else{var _329=_30a.get(node,"height");return Math.max(_329,1);}},end:function(){return node.scrollHeight;}}}},args));var fini=function(){s.height="auto";s.overflow=o;};_308.after(anim,"onStop",fini,true);_308.after(anim,"onEnd",fini,true);return anim;};_30e.wipeOut=function(args){var node=args.node=dom.byId(args.node),s=node.style,o;var anim=_309.animateProperty(lang.mixin({properties:{height:{end:1}}},args));_308.after(anim,"beforeBegin",function(){o=s.overflow;s.overflow="hidden";s.display="";},true);var fini=function(){s.overflow=o;s.height="auto";s.display="none";};_308.after(anim,"onStop",fini,true);_308.after(anim,"onEnd",fini,true);return anim;};_30e.slideTo=function(args){var node=args.node=dom.byId(args.node),top=null,left=null;var init=(function(n){return function(){var cs=_30a.getComputedStyle(n);var pos=cs.position;top=(pos=="absolute"?n.offsetTop:parseInt(cs.top)||0);left=(pos=="absolute"?n.offsetLeft:parseInt(cs.left)||0);if(pos!="absolute"&&pos!="relative"){var ret=geom.position(n,true);top=ret.y;left=ret.x;n.style.position="absolute";n.style.top=top+"px";n.style.left=left+"px";}};})(node);init();var anim=_309.animateProperty(lang.mixin({properties:{top:args.top||0,left:args.left||0}},args));_308.after(anim,"beforeBegin",init,true);return anim;};return _30e;});},"dojo/dnd/Moveable":function(){define(["../_base/array","../_base/declare","../_base/lang","../dom","../dom-class","../Evented","../has","../on","../topic","../touch","./common","./Mover","../_base/window"],function(_32a,_32b,lang,dom,_32c,_32d,has,on,_32e,_32f,dnd,_330,win){var _331;var _332=function(){};function _333(){if("touchAction" in document.body.style){_331="touchAction";}else{if("msTouchAction" in document.body.style){_331="msTouchAction";}}_332=function _332(node,_334){node.style[_331]=_334;};_332(arguments[0],arguments[1]);};if(has("touch-action")){_332=_333;}var _335=_32b("dojo.dnd.Moveable",[_32d],{handle:"",delay:0,skip:false,constructor:function(node,_336){this.node=dom.byId(node);_332(this.node,"none");if(!_336){_336={};}this.handle=_336.handle?dom.byId(_336.handle):null;if(!this.handle){this.handle=this.node;}this.delay=_336.delay>0?_336.delay:0;this.skip=_336.skip;this.mover=_336.mover?_336.mover:_330;this.events=[on(this.handle,_32f.press,lang.hitch(this,"onMouseDown")),on(this.handle,"dragstart",lang.hitch(this,"onSelectStart")),on(this.handle,"selectstart",lang.hitch(this,"onSelectStart"))];},markupFactory:function(_337,node,Ctor){return new Ctor(node,_337);},destroy:function(){_32a.forEach(this.events,function(_338){_338.remove();});_332(this.node,"");this.events=this.node=this.handle=null;},onMouseDown:function(e){if(this.skip&&dnd.isFormElement(e)){return;}if(this.delay){this.events.push(on(this.handle,_32f.move,lang.hitch(this,"onMouseMove")),on(this.handle.ownerDocument,_32f.release,lang.hitch(this,"onMouseUp")));this._lastX=e.pageX;this._lastY=e.pageY;}else{this.onDragDetected(e);}e.stopPropagation();e.preventDefault();},onMouseMove:function(e){if(Math.abs(e.pageX-this._lastX)>this.delay||Math.abs(e.pageY-this._lastY)>this.delay){this.onMouseUp(e);this.onDragDetected(e);}e.stopPropagation();e.preventDefault();},onMouseUp:function(e){for(var i=0;i<2;++i){this.events.pop().remove();}e.stopPropagation();e.preventDefault();},onSelectStart:function(e){if(!this.skip||!dnd.isFormElement(e)){e.stopPropagation();e.preventDefault();}},onDragDetected:function(e){new this.mover(this.node,e,this);},onMoveStart:function(_339){_32e.publish("/dnd/move/start",_339);_32c.add(win.body(),"dojoMove");_32c.add(this.node,"dojoMoveItem");},onMoveStop:function(_33a){_32e.publish("/dnd/move/stop",_33a);_32c.remove(win.body(),"dojoMove");_32c.remove(this.node,"dojoMoveItem");},onFirstMove:function(){},onMove:function(_33b,_33c){this.onMoving(_33b,_33c);var s=_33b.node.style;s.left=_33c.l+"px";s.top=_33c.t+"px";this.onMoved(_33b,_33c);},onMoving:function(){},onMoved:function(){}});return _335;});},"dojo/dnd/common":function(){define(["../sniff","../_base/kernel","../_base/lang","../dom"],function(has,_33d,lang,dom){var _33e=lang.getObject("dojo.dnd",true);_33e.getCopyKeyState=function(evt){return evt[has("mac")?"metaKey":"ctrlKey"];};_33e._uniqueId=0;_33e.getUniqueId=function(){var id;do{id=_33d._scopeName+"Unique"+(++_33e._uniqueId);}while(dom.byId(id));return id;};_33e._empty={};_33e.isFormElement=function(e){var t=e.target;if(t.nodeType==3){t=t.parentNode;}return " a button textarea input select option ".indexOf(" "+t.tagName.toLowerCase()+" ")>=0;};return _33e;});},"dojo/dnd/Mover":function(){define(["../_base/array","../_base/declare","../_base/lang","../sniff","../_base/window","../dom","../dom-geometry","../dom-style","../Evented","../on","../touch","./common","./autoscroll"],function(_33f,_340,lang,has,win,dom,_341,_342,_343,on,_344,dnd,_345){return _340("dojo.dnd.Mover",[_343],{constructor:function(node,e,host){this.node=dom.byId(node);this.marginBox={l:e.pageX,t:e.pageY};this.mouseButton=e.button;var h=(this.host=host),d=node.ownerDocument;function _346(e){e.preventDefault();e.stopPropagation();};this.events=[on(d,_344.move,lang.hitch(this,"onFirstMove")),on(d,_344.move,lang.hitch(this,"onMouseMove")),on(d,_344.release,lang.hitch(this,"onMouseUp")),on(d,"dragstart",_346),on(d.body,"selectstart",_346)];_345.autoScrollStart(d);if(h&&h.onMoveStart){h.onMoveStart(this);}},onMouseMove:function(e){_345.autoScroll(e);var m=this.marginBox;this.host.onMove(this,{l:m.l+e.pageX,t:m.t+e.pageY},e);e.preventDefault();e.stopPropagation();},onMouseUp:function(e){if(has("webkit")&&has("mac")&&this.mouseButton==2?e.button==0:this.mouseButton==e.button){this.destroy();}e.preventDefault();e.stopPropagation();},onFirstMove:function(e){var s=this.node.style,l,t,h=this.host;switch(s.position){case "relative":case "absolute":l=Math.round(parseFloat(s.left))||0;t=Math.round(parseFloat(s.top))||0;break;default:s.position="absolute";var m=_341.getMarginBox(this.node);var b=win.doc.body;var bs=_342.getComputedStyle(b);var bm=_341.getMarginBox(b,bs);var bc=_341.getContentBox(b,bs);l=m.l-(bc.l-bm.l);t=m.t-(bc.t-bm.t);break;}this.marginBox.l=l-this.marginBox.l;this.marginBox.t=t-this.marginBox.t;if(h&&h.onFirstMove){h.onFirstMove(this,e);}this.events.shift().remove();},destroy:function(){_33f.forEach(this.events,function(_347){_347.remove();});var h=this.host;if(h&&h.onMoveStop){h.onMoveStop(this);}this.events=this.node=this.host=null;}});});},"dojo/dnd/autoscroll":function(){define(["../_base/lang","../sniff","../_base/window","../dom-geometry","../dom-style","../window"],function(lang,has,win,_348,_349,_34a){var _34b={};lang.setObject("dojo.dnd.autoscroll",_34b);_34b.getViewport=_34a.getBox;_34b.V_TRIGGER_AUTOSCROLL=32;_34b.H_TRIGGER_AUTOSCROLL=32;_34b.V_AUTOSCROLL_VALUE=16;_34b.H_AUTOSCROLL_VALUE=16;var _34c,doc=win.doc,_34d=Infinity,_34e=Infinity;_34b.autoScrollStart=function(d){doc=d;_34c=_34a.getBox(doc);var html=win.body(doc).parentNode;_34d=Math.max(html.scrollHeight-_34c.h,0);_34e=Math.max(html.scrollWidth-_34c.w,0);};_34b.autoScroll=function(e){var v=_34c||_34a.getBox(doc),html=win.body(doc).parentNode,dx=0,dy=0;if(e.clientX<_34b.H_TRIGGER_AUTOSCROLL){dx=-_34b.H_AUTOSCROLL_VALUE;}else{if(e.clientX>v.w-_34b.H_TRIGGER_AUTOSCROLL){dx=Math.min(_34b.H_AUTOSCROLL_VALUE,_34e-html.scrollLeft);}}if(e.clientY<_34b.V_TRIGGER_AUTOSCROLL){dy=-_34b.V_AUTOSCROLL_VALUE;}else{if(e.clientY>v.h-_34b.V_TRIGGER_AUTOSCROLL){dy=Math.min(_34b.V_AUTOSCROLL_VALUE,_34d-html.scrollTop);}}window.scrollBy(dx,dy);};_34b._validNodes={"div":1,"p":1,"td":1};_34b._validOverflow={"auto":1,"scroll":1};_34b.autoScrollNodes=function(e){var b,t,w,h,rx,ry,dx=0,dy=0,_34f,_350;for(var n=e.target;n;){if(n.nodeType==1&&(n.tagName.toLowerCase() in _34b._validNodes)){var s=_349.getComputedStyle(n),_351=(s.overflowX.toLowerCase() in _34b._validOverflow),_352=(s.overflowY.toLowerCase() in _34b._validOverflow);if(_351||_352){b=_348.getContentBox(n,s);t=_348.position(n,true);}if(_351){w=Math.min(_34b.H_TRIGGER_AUTOSCROLL,b.w/2);rx=e.pageX-t.x;if(has("webkit")||has("opera")){rx+=win.body().scrollLeft;}dx=0;if(rx>0&&rx<b.w){if(rx<w){dx=-w;}else{if(rx>b.w-w){dx=w;}}_34f=n.scrollLeft;n.scrollLeft=n.scrollLeft+dx;}}if(_352){h=Math.min(_34b.V_TRIGGER_AUTOSCROLL,b.h/2);ry=e.pageY-t.y;if(has("webkit")||has("opera")){ry+=win.body().scrollTop;}dy=0;if(ry>0&&ry<b.h){if(ry<h){dy=-h;}else{if(ry>b.h-h){dy=h;}}_350=n.scrollTop;n.scrollTop=n.scrollTop+dy;}}if(dx||dy){return;}}try{n=n.parentNode;}catch(x){n=null;}}_34b.autoScroll(e);};return _34b;});},"dojo/dnd/move":function(){define(["../_base/declare","../dom-geometry","../dom-style","./common","./Mover","./Moveable"],function(_353,_354,_355,dnd,_356,_357){var _358=_353("dojo.dnd.move.constrainedMoveable",_357,{constraints:function(){},within:false,constructor:function(node,_359){if(!_359){_359={};}this.constraints=_359.constraints;this.within=_359.within;},onFirstMove:function(_35a){var c=this.constraintBox=this.constraints.call(this,_35a);c.r=c.l+c.w;c.b=c.t+c.h;if(this.within){var mb=_354.getMarginSize(_35a.node);c.r-=mb.w;c.b-=mb.h;}},onMove:function(_35b,_35c){var c=this.constraintBox,s=_35b.node.style;this.onMoving(_35b,_35c);_35c.l=_35c.l<c.l?c.l:c.r<_35c.l?c.r:_35c.l;_35c.t=_35c.t<c.t?c.t:c.b<_35c.t?c.b:_35c.t;s.left=_35c.l+"px";s.top=_35c.t+"px";this.onMoved(_35b,_35c);}});var _35d=_353("dojo.dnd.move.boxConstrainedMoveable",_358,{box:{},constructor:function(node,_35e){var box=_35e&&_35e.box;this.constraints=function(){return box;};}});var _35f=_353("dojo.dnd.move.parentConstrainedMoveable",_358,{area:"content",constructor:function(node,_360){var area=_360&&_360.area;this.constraints=function(){var n=this.node.parentNode,s=_355.getComputedStyle(n),mb=_354.getMarginBox(n,s);if(area=="margin"){return mb;}var t=_354.getMarginExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;if(area=="border"){return mb;}t=_354.getBorderExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;if(area=="padding"){return mb;}t=_354.getPadExtents(n,s);mb.l+=t.l,mb.t+=t.t,mb.w-=t.w,mb.h-=t.h;return mb;};}});return {constrainedMoveable:_358,boxConstrainedMoveable:_35d,parentConstrainedMoveable:_35f};});},"dojo/dnd/TimedMoveable":function(){define(["../_base/declare","./Moveable"],function(_361,_362){var _363=_362.prototype.onMove;return _361("dojo.dnd.TimedMoveable",_362,{timeout:40,constructor:function(node,_364){if(!_364){_364={};}if(_364.timeout&&typeof _364.timeout=="number"&&_364.timeout>=0){this.timeout=_364.timeout;}},onMoveStop:function(_365){if(_365._timer){clearTimeout(_365._timer);_363.call(this,_365,_365._leftTop);}_362.prototype.onMoveStop.apply(this,arguments);},onMove:function(_366,_367){_366._leftTop=_367;if(!_366._timer){var _368=this;_366._timer=setTimeout(function(){_366._timer=null;_363.call(_368,_366,_366._leftTop);},this.timeout);}}});});},"dojo/fx/Toggler":function(){define(["../_base/lang","../_base/declare","../_base/fx","../aspect"],function(lang,_369,_36a,_36b){return _369("dojo.fx.Toggler",null,{node:null,showFunc:_36a.fadeIn,hideFunc:_36a.fadeOut,showDuration:200,hideDuration:200,constructor:function(args){var _36c=this;lang.mixin(_36c,args);_36c.node=args.node;_36c._showArgs=lang.mixin({},args);_36c._showArgs.node=_36c.node;_36c._showArgs.duration=_36c.showDuration;_36c.showAnim=_36c.showFunc(_36c._showArgs);_36c._hideArgs=lang.mixin({},args);_36c._hideArgs.node=_36c.node;_36c._hideArgs.duration=_36c.hideDuration;_36c.hideAnim=_36c.hideFunc(_36c._hideArgs);_36b.after(_36c.showAnim,"beforeBegin",lang.hitch(_36c.hideAnim,"stop",true),true);_36b.after(_36c.hideAnim,"beforeBegin",lang.hitch(_36c.showAnim,"stop",true),true);},show:function(_36d){return this.showAnim.play(_36d||0);},hide:function(_36e){return this.hideAnim.play(_36e||0);}});});},"dojo/html":function(){define(["./_base/kernel","./_base/lang","./_base/array","./_base/declare","./dom","./dom-construct","./parser"],function(_36f,lang,_370,_371,dom,_372,_373){var _374=0;var html={_secureForInnerHtml:function(cont){return cont.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"");},_emptyNode:_372.empty,_setNodeContent:function(node,cont){_372.empty(node);if(cont){if(typeof cont=="number"){cont=cont.toString();}if(typeof cont=="string"){cont=_372.toDom(cont,node.ownerDocument);}if(!cont.nodeType&&lang.isArrayLike(cont)){for(var _375=cont.length,i=0;i<cont.length;i=_375==cont.length?i+1:0){_372.place(cont[i],node,"last");}}else{_372.place(cont,node,"last");}}return node;},_ContentSetter:_371("dojo.html._ContentSetter",null,{node:"",content:"",id:"",cleanContent:false,extractContent:false,parseContent:false,parserScope:_36f._scopeName,startup:true,constructor:function(_376,node){lang.mixin(this,_376||{});node=this.node=dom.byId(this.node||node);if(!this.id){this.id=["Setter",(node)?node.id||node.tagName:"",_374++].join("_");}},set:function(cont,_377){if(undefined!==cont){this.content=cont;}if(typeof cont=="number"){cont=cont.toString();}if(_377){this._mixin(_377);}this.onBegin();this.setContent();var ret=this.onEnd();if(ret&&ret.then){return ret;}else{return this.node;}},setContent:function(){var node=this.node;if(!node){throw new Error(this.declaredClass+": setContent given no node");}try{node=html._setNodeContent(node,this.content);}catch(e){var _378=this.onContentError(e);try{node.innerHTML=_378;}catch(e){console.error("Fatal "+this.declaredClass+".setContent could not change content due to "+e.message,e);}}this.node=node;},empty:function(){if(this.parseDeferred){if(!this.parseDeferred.isResolved()){this.parseDeferred.cancel();}delete this.parseDeferred;}if(this.parseResults&&this.parseResults.length){_370.forEach(this.parseResults,function(w){if(w.destroy){w.destroy();}});delete this.parseResults;}_372.empty(this.node);},onBegin:function(){var cont=this.content;if(lang.isString(cont)){if(this.cleanContent){cont=html._secureForInnerHtml(cont);}if(this.extractContent){var _379=cont.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_379){cont=_379[1];}}}this.empty();this.content=cont;return this.node;},onEnd:function(){if(this.parseContent){this._parse();}return this.node;},tearDown:function(){delete this.parseResults;delete this.parseDeferred;delete this.node;delete this.content;},onContentError:function(err){return "Error occurred setting content: "+err;},onExecError:function(err){return "Error occurred executing scripts: "+err;},_mixin:function(_37a){var _37b={},key;for(key in _37a){if(key in _37b){continue;}this[key]=_37a[key];}},_parse:function(){var _37c=this.node;try{var _37d={};_370.forEach(["dir","lang","textDir"],function(name){if(this[name]){_37d[name]=this[name];}},this);var self=this;this.parseDeferred=_373.parse({rootNode:_37c,noStart:!this.startup,inherited:_37d,scope:this.parserScope}).then(function(_37e){return self.parseResults=_37e;},function(e){self._onError("Content",e,"Error parsing in _ContentSetter#"+self.id);});}catch(e){this._onError("Content",e,"Error parsing in _ContentSetter#"+this.id);}},_onError:function(type,err,_37f){var _380=this["on"+type+"Error"].call(this,err);if(_37f){console.error(_37f,err);}else{if(_380){html._setNodeContent(this.node,_380,true);}}}}),set:function(node,cont,_381){if(undefined==cont){console.warn("dojo.html.set: no cont argument provided, using empty string");cont="";}if(typeof cont=="number"){cont=cont.toString();}if(!_381){return html._setNodeContent(node,cont,true);}else{var op=new html._ContentSetter(lang.mixin(_381,{content:cont,node:node}));return op.set();}}};lang.setObject("dojo.html",html);return html;});},"dojo/i18n":function(){define(["./_base/kernel","require","./has","./_base/array","./_base/config","./_base/lang","./_base/xhr","./json","module"],function(dojo,_382,has,_383,_384,lang,xhr,json,_385){has.add("dojo-preload-i18n-Api",1);1||has.add("dojo-v1x-i18n-Api",1);var _386=dojo.i18n={},_387=/(^.*(^|\/)nls)(\/|$)([^\/]*)\/?([^\/]*)/,_388=function(root,_389,_38a,_38b){for(var _38c=[_38a+_38b],_38d=_389.split("-"),_38e="",i=0;i<_38d.length;i++){_38e+=(_38e?"-":"")+_38d[i];if(!root||root[_38e]){_38c.push(_38a+_38e+"/"+_38b);_38c.specificity=_38e;}}return _38c;},_38f={},_390=function(_391,_392,_393){_393=_393?_393.toLowerCase():dojo.locale;_391=_391.replace(/\./g,"/");_392=_392.replace(/\./g,"/");return (/root/i.test(_393))?(_391+"/nls/"+_392):(_391+"/nls/"+_393+"/"+_392);},_394=dojo.getL10nName=function(_395,_396,_397){return _395=_385.id+"!"+_390(_395,_396,_397);},_398=function(_399,_39a,_39b,_39c,_39d,load){_399([_39a],function(root){var _39e=lang.clone(root.root||root.ROOT),_39f=_388(!root._v1x&&root,_39d,_39b,_39c);_399(_39f,function(){for(var i=1;i<_39f.length;i++){_39e=lang.mixin(lang.clone(_39e),arguments[i]);}var _3a0=_39a+"/"+_39d;_38f[_3a0]=_39e;_39e.$locale=_39f.specificity;load();});});},_3a1=function(id,_3a2){return /^\./.test(id)?_3a2(id):id;},_3a3=function(_3a4){var list=_384.extraLocale||[];list=lang.isArray(list)?list:[list];list.push(_3a4);return list;},load=function(id,_3a5,load){var _3a6=_387.exec(id),_3a7=_3a6[1]+"/",_3a8=_3a6[5]||_3a6[4],_3a9=_3a7+_3a8,_3aa=(_3a6[5]&&_3a6[4]),_3ab=_3aa||dojo.locale||"",_3ac=_3a9+"/"+_3ab,_3ad=_3aa?[_3ab]:_3a3(_3ab),_3ae=_3ad.length,_3af=function(){if(!--_3ae){load(lang.delegate(_38f[_3ac]));}},_3b0=id.split("*"),_3b1=_3b0[1]=="preload";if(has("dojo-preload-i18n-Api")){if(_3b1){if(!_38f[id]){_38f[id]=1;_3bb(_3b0[2],json.parse(_3b0[3]),1,_3a5);}load(1);}if(_3b1||(_3d8(id,_3a5,load)&&!_38f[_3ac])){return;}}else{if(_3b1){load(1);return;}}_383.forEach(_3ad,function(_3b2){var _3b3=_3a9+"/"+_3b2;if(has("dojo-preload-i18n-Api")){_3b4(_3b3);}if(!_38f[_3b3]){_398(_3a5,_3a9,_3a7,_3a8,_3b2,_3af);}else{_3af();}});};if(has("dojo-preload-i18n-Api")||1){var _3b5=_386.normalizeLocale=function(_3b6){var _3b7=_3b6?_3b6.toLowerCase():dojo.locale;return _3b7=="root"?"ROOT":_3b7;},isXd=function(mid,_3b8){return (1&&1)?_3b8.isXdUrl(_382.toUrl(mid+".js")):true;},_3b9=0,_3ba=[],_3bb=_386._preloadLocalizations=function(_3bc,_3bd,_3be,_3bf){_3bf=_3bf||_382;function _3c0(mid,_3c1){if(isXd(mid,_3bf)||_3be){_3bf([mid],_3c1);}else{_3dd([mid],_3c1,_3bf);}};function _3c2(_3c3,func){var _3c4=_3c3.split("-");while(_3c4.length){if(func(_3c4.join("-"))){return;}_3c4.pop();}func("ROOT");};function _3c5(){_3b9++;};function _3c6(){--_3b9;while(!_3b9&&_3ba.length){load.apply(null,_3ba.shift());}};function _3c7(path,name,loc,_3c8){return _3c8.toAbsMid(path+name+"/"+loc);};function _3c9(_3ca){_3ca=_3b5(_3ca);_3c2(_3ca,function(loc){if(_383.indexOf(_3bd,loc)>=0){var mid=_3bc.replace(/\./g,"/")+"_"+loc;_3c5();_3c0(mid,function(_3cb){for(var p in _3cb){var _3cc=_3cb[p],_3cd=p.match(/(.+)\/([^\/]+)$/),_3ce,_3cf;if(!_3cd){continue;}_3ce=_3cd[2];_3cf=_3cd[1]+"/";if(!_3cc._localized){continue;}var _3d0;if(loc==="ROOT"){var root=_3d0=_3cc._localized;delete _3cc._localized;root.root=_3cc;_38f[_382.toAbsMid(p)]=root;}else{_3d0=_3cc._localized;_38f[_3c7(_3cf,_3ce,loc,_382)]=_3cc;}if(loc!==_3ca){function _3d1(_3d2,_3d3,_3d4,_3d5){var _3d6=[],_3d7=[];_3c2(_3ca,function(loc){if(_3d5[loc]){_3d6.push(_382.toAbsMid(_3d2+loc+"/"+_3d3));_3d7.push(_3c7(_3d2,_3d3,loc,_382));}});if(_3d6.length){_3c5();_3bf(_3d6,function(){for(var i=_3d6.length-1;i>=0;i--){_3d4=lang.mixin(lang.clone(_3d4),arguments[i]);_38f[_3d7[i]]=_3d4;}_38f[_3c7(_3d2,_3d3,_3ca,_382)]=lang.clone(_3d4);_3c6();});}else{_38f[_3c7(_3d2,_3d3,_3ca,_382)]=_3d4;}};_3d1(_3cf,_3ce,_3cc,_3d0);}}_3c6();});return true;}return false;});};_3c9();_383.forEach(dojo.config.extraLocale,_3c9);},_3d8=function(id,_3d9,load){if(_3b9){_3ba.push([id,_3d9,load]);}return _3b9;},_3b4=function(){};}if(1){var _3da={},_3db={},_3dc,_3dd=function(deps,_3de,_3df){var _3e0=[];_383.forEach(deps,function(mid){var url=_3df.toUrl(mid+".js");function load(text){if(!_3dc){_3dc=new Function("__bundle","__checkForLegacyModules","__mid","__amdValue","var define = function(mid, factory){define.called = 1; __amdValue.result = factory || mid;},"+"\t require = function(){define.called = 1;};"+"try{"+"define.called = 0;"+"eval(__bundle);"+"if(define.called==1)"+"return __amdValue;"+"if((__checkForLegacyModules = __checkForLegacyModules(__mid)))"+"return __checkForLegacyModules;"+"}catch(e){}"+"try{"+"return eval('('+__bundle+')');"+"}catch(e){"+"return e;"+"}");}var _3e1=_3dc(text,_3b4,mid,_3da);if(_3e1===_3da){_3e0.push(_38f[url]=_3da.result);}else{if(_3e1 instanceof Error){console.error("failed to evaluate i18n bundle; url="+url,_3e1);_3e1={};}_3e0.push(_38f[url]=(/nls\/[^\/]+\/[^\/]+$/.test(url)?_3e1:{root:_3e1,_v1x:1}));}};if(_38f[url]){_3e0.push(_38f[url]);}else{var _3e2=_3df.syncLoadNls(mid);if(!_3e2){_3e2=_3b4(mid.replace(/nls\/([^\/]*)\/([^\/]*)$/,"nls/$2/$1"));}if(_3e2){_3e0.push(_3e2);}else{if(!xhr){try{_3df.getText(url,true,load);}catch(e){_3e0.push(_38f[url]={});}}else{xhr.get({url:url,sync:true,load:load,error:function(){_3e0.push(_38f[url]={});}});}}}});_3de&&_3de.apply(null,_3e0);};_3b4=function(_3e3){for(var _3e4,_3e5=_3e3.split("/"),_3e6=dojo.global[_3e5[0]],i=1;_3e6&&i<_3e5.length-1;_3e6=_3e6[_3e5[i++]]){}if(_3e6){_3e4=_3e6[_3e5[i]];if(!_3e4){_3e4=_3e6[_3e5[i].replace(/-/g,"_")];}if(_3e4){_38f[_3e3]=_3e4;}}return _3e4;};_386.getLocalization=function(_3e7,_3e8,_3e9){var _3ea,_3eb=_390(_3e7,_3e8,_3e9);if(_3db[_3eb]){return _3db[_3eb];}load(_3eb,(!isXd(_3eb,_382)?function(deps,_3ec){_3dd(deps,_3ec,_382);}:_382),function(_3ed){_3db[_3eb]=_3ed;_3ea=_3ed;});return _3ea;};}else{_386.getLocalization=function(_3ee,_3ef,_3f0){var key=_3ee.replace(/\./g,"/")+"/nls/"+_3ef+"/"+(_3f0||_384.locale);return this.cache[key];};}return lang.mixin(_386,{dynamic:true,normalize:_3a1,load:load,cache:_38f,getL10nName:_394});});},"dijit/dijit":function(){define(["./main","./_base","dojo/parser","./_Widget","./_TemplatedMixin","./_Container","./layout/_LayoutWidget","./form/_FormWidget","./form/_FormValueWidget"],function(_3f1){return _3f1;});},"dijit/main":function(){define(["dojo/_base/kernel"],function(dojo){return dojo.dijit;});},"dijit/_base":function(){define(["./main","./a11y","./WidgetSet","./_base/focus","./_base/manager","./_base/place","./_base/popup","./_base/scroll","./_base/sniff","./_base/typematic","./_base/wai","./_base/window"],function(_3f2){return _3f2._base;});},"dijit/a11y":function(){define(["dojo/_base/array","dojo/dom","dojo/dom-attr","dojo/dom-style","dojo/_base/lang","dojo/sniff","./main"],function(_3f3,dom,_3f4,_3f5,lang,has,_3f6){var _3f7;var a11y={_isElementShown:function(elem){var s=_3f5.get(elem);return (s.visibility!="hidden")&&(s.visibility!="collapsed")&&(s.display!="none")&&(_3f4.get(elem,"type")!="hidden");},hasDefaultTabStop:function(elem){switch(elem.nodeName.toLowerCase()){case "a":return _3f4.has(elem,"href");case "area":case "button":case "input":case "object":case "select":case "textarea":return true;case "iframe":var body;try{var _3f8=elem.contentDocument;if("designMode" in _3f8&&_3f8.designMode=="on"){return true;}body=_3f8.body;}catch(e1){try{body=elem.contentWindow.document.body;}catch(e2){return false;}}return body&&(body.contentEditable=="true"||(body.firstChild&&body.firstChild.contentEditable=="true"));default:return elem.contentEditable=="true";}},effectiveTabIndex:function(elem){if(_3f4.get(elem,"disabled")){return _3f7;}else{if(_3f4.has(elem,"tabIndex")){return +_3f4.get(elem,"tabIndex");}else{return a11y.hasDefaultTabStop(elem)?0:_3f7;}}},isTabNavigable:function(elem){return a11y.effectiveTabIndex(elem)>=0;},isFocusable:function(elem){return a11y.effectiveTabIndex(elem)>=-1;},_getTabNavigable:function(root){var _3f9,last,_3fa,_3fb,_3fc,_3fd,_3fe={};function _3ff(node){return node&&node.tagName.toLowerCase()=="input"&&node.type&&node.type.toLowerCase()=="radio"&&node.name&&node.name.toLowerCase();};var _400=a11y._isElementShown,_401=a11y.effectiveTabIndex;var _402=function(_403){for(var _404=_403.firstChild;_404;_404=_404.nextSibling){if(_404.nodeType!=1||(has("ie")<=9&&_404.scopeName!=="HTML")||!_400(_404)){continue;}var _405=_401(_404);if(_405>=0){if(_405==0){if(!_3f9){_3f9=_404;}last=_404;}else{if(_405>0){if(!_3fa||_405<_3fb){_3fb=_405;_3fa=_404;}if(!_3fc||_405>=_3fd){_3fd=_405;_3fc=_404;}}}var rn=_3ff(_404);if(_3f4.get(_404,"checked")&&rn){_3fe[rn]=_404;}}if(_404.nodeName.toUpperCase()!="SELECT"){_402(_404);}}};if(_400(root)){_402(root);}function rs(node){return _3fe[_3ff(node)]||node;};return {first:rs(_3f9),last:rs(last),lowest:rs(_3fa),highest:rs(_3fc)};},getFirstInTabbingOrder:function(root,doc){var _406=a11y._getTabNavigable(dom.byId(root,doc));return _406.lowest?_406.lowest:_406.first;},getLastInTabbingOrder:function(root,doc){var _407=a11y._getTabNavigable(dom.byId(root,doc));return _407.last?_407.last:_407.highest;}};1&&lang.mixin(_3f6,a11y);return a11y;});},"dijit/WidgetSet":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","./registry"],function(_408,_409,_40a,_40b){var _40c=_409("dijit.WidgetSet",null,{constructor:function(){this._hash={};this.length=0;},add:function(_40d){if(this._hash[_40d.id]){throw new Error("Tried to register widget with id=="+_40d.id+" but that id is already registered");}this._hash[_40d.id]=_40d;this.length++;},remove:function(id){if(this._hash[id]){delete this._hash[id];this.length--;}},forEach:function(func,_40e){_40e=_40e||_40a.global;var i=0,id;for(id in this._hash){func.call(_40e,this._hash[id],i++,this._hash);}return this;},filter:function(_40f,_410){_410=_410||_40a.global;var res=new _40c(),i=0,id;for(id in this._hash){var w=this._hash[id];if(_40f.call(_410,w,i++,this._hash)){res.add(w);}}return res;},byId:function(id){return this._hash[id];},byClass:function(cls){var res=new _40c(),id,_411;for(id in this._hash){_411=this._hash[id];if(_411.declaredClass==cls){res.add(_411);}}return res;},toArray:function(){var ar=[];for(var id in this._hash){ar.push(this._hash[id]);}return ar;},map:function(func,_412){return _408.map(this.toArray(),func,_412);},every:function(func,_413){_413=_413||_40a.global;var x=0,i;for(i in this._hash){if(!func.call(_413,this._hash[i],x++,this._hash)){return false;}}return true;},some:function(func,_414){_414=_414||_40a.global;var x=0,i;for(i in this._hash){if(func.call(_414,this._hash[i],x++,this._hash)){return true;}}return false;}});_408.forEach(["forEach","filter","byClass","map","every","some"],function(func){_40b[func]=_40c.prototype[func];});return _40c;});},"dijit/registry":function(){define(["dojo/_base/array","dojo/_base/window","./main"],function(_415,win,_416){var _417={},hash={};var _418={length:0,add:function(_419){if(hash[_419.id]){throw new Error("Tried to register widget with id=="+_419.id+" but that id is already registered");}hash[_419.id]=_419;this.length++;},remove:function(id){if(hash[id]){delete hash[id];this.length--;}},byId:function(id){return typeof id=="string"?hash[id]:id;},byNode:function(node){return hash[node.getAttribute("widgetId")];},toArray:function(){var ar=[];for(var id in hash){ar.push(hash[id]);}return ar;},getUniqueId:function(_41a){var id;do{id=_41a+"_"+(_41a in _417?++_417[_41a]:_417[_41a]=0);}while(hash[id]);return _416._scopeName=="dijit"?id:_416._scopeName+"_"+id;},findWidgets:function(root,_41b){var _41c=[];function _41d(root){for(var node=root.firstChild;node;node=node.nextSibling){if(node.nodeType==1){var _41e=node.getAttribute("widgetId");if(_41e){var _41f=hash[_41e];if(_41f){_41c.push(_41f);}}else{if(node!==_41b){_41d(node);}}}}};_41d(root);return _41c;},_destroyAll:function(){_416._curFocus=null;_416._prevFocus=null;_416._activeStack=[];_415.forEach(_418.findWidgets(win.body()),function(_420){if(!_420._destroyed){if(_420.destroyRecursive){_420.destroyRecursive();}else{if(_420.destroy){_420.destroy();}}}});},getEnclosingWidget:function(node){while(node){var id=node.nodeType==1&&node.getAttribute("widgetId");if(id){return hash[id];}node=node.parentNode;}return null;},_hash:hash};_416.registry=_418;return _418;});},"dijit/_base/focus":function(){define(["dojo/_base/array","dojo/dom","dojo/_base/lang","dojo/topic","dojo/_base/window","../focus","../selection","../main"],function(_421,dom,lang,_422,win,_423,_424,_425){var _426={_curFocus:null,_prevFocus:null,isCollapsed:function(){return _425.getBookmark().isCollapsed;},getBookmark:function(){var sel=win.global==window?_424:new _424.SelectionManager(win.global);return sel.getBookmark();},moveToBookmark:function(_427){var sel=win.global==window?_424:new _424.SelectionManager(win.global);return sel.moveToBookmark(_427);},getFocus:function(menu,_428){var node=!_423.curNode||(menu&&dom.isDescendant(_423.curNode,menu.domNode))?_425._prevFocus:_423.curNode;return {node:node,bookmark:node&&(node==_423.curNode)&&win.withGlobal(_428||win.global,_425.getBookmark),openedForWindow:_428};},_activeStack:[],registerIframe:function(_429){return _423.registerIframe(_429);},unregisterIframe:function(_42a){_42a&&_42a.remove();},registerWin:function(_42b,_42c){return _423.registerWin(_42b,_42c);},unregisterWin:function(_42d){_42d&&_42d.remove();}};_423.focus=function(_42e){if(!_42e){return;}var node="node" in _42e?_42e.node:_42e,_42f=_42e.bookmark,_430=_42e.openedForWindow,_431=_42f?_42f.isCollapsed:false;if(node){var _432=(node.tagName.toLowerCase()=="iframe")?node.contentWindow:node;if(_432&&_432.focus){try{_432.focus();}catch(e){}}_423._onFocusNode(node);}if(_42f&&win.withGlobal(_430||win.global,_425.isCollapsed)&&!_431){if(_430){_430.focus();}try{win.withGlobal(_430||win.global,_425.moveToBookmark,null,[_42f]);}catch(e2){}}};_423.watch("curNode",function(name,_433,_434){_425._curFocus=_434;_425._prevFocus=_433;if(_434){_422.publish("focusNode",_434);}});_423.watch("activeStack",function(name,_435,_436){_425._activeStack=_436;});_423.on("widget-blur",function(_437,by){_422.publish("widgetBlur",_437,by);});_423.on("widget-focus",function(_438,by){_422.publish("widgetFocus",_438,by);});lang.mixin(_425,_426);return _425;});},"dijit/focus":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/Evented","dojo/_base/lang","dojo/on","dojo/domReady","dojo/sniff","dojo/Stateful","dojo/_base/window","dojo/window","./a11y","./registry","./main"],function(_439,_43a,dom,_43b,_43c,_43d,_43e,lang,on,_43f,has,_440,win,_441,a11y,_442,_443){var _444;var _445;var _446=_43a([_440,_43e],{curNode:null,activeStack:[],constructor:function(){var _447=lang.hitch(this,function(node){if(dom.isDescendant(this.curNode,node)){this.set("curNode",null);}if(dom.isDescendant(this.prevNode,node)){this.set("prevNode",null);}});_439.before(_43d,"empty",_447);_439.before(_43d,"destroy",_447);},registerIframe:function(_448){return this.registerWin(_448.contentWindow,_448);},registerWin:function(_449,_44a){var _44b=this,body=_449.document&&_449.document.body;if(body){var _44c=has("pointer-events")?"pointerdown":has("MSPointer")?"MSPointerDown":has("touch-events")?"mousedown, touchstart":"mousedown";var mdh=on(_449.document,_44c,function(evt){if(evt&&evt.target&&evt.target.parentNode==null){return;}_44b._onTouchNode(_44a||evt.target,"mouse");});var fih=on(body,"focusin",function(evt){if(!evt.target.tagName){return;}var tag=evt.target.tagName.toLowerCase();if(tag=="#document"||tag=="body"){return;}if(a11y.isFocusable(evt.target)){_44b._onFocusNode(_44a||evt.target);}else{_44b._onTouchNode(_44a||evt.target);}});var foh=on(body,"focusout",function(evt){_44b._onBlurNode(_44a||evt.target);});return {remove:function(){mdh.remove();fih.remove();foh.remove();mdh=fih=foh=null;body=null;}};}},_onBlurNode:function(node){var now=(new Date()).getTime();if(now<_444+100){return;}if(this._clearFocusTimer){clearTimeout(this._clearFocusTimer);}this._clearFocusTimer=setTimeout(lang.hitch(this,function(){this.set("prevNode",this.curNode);this.set("curNode",null);}),0);if(this._clearActiveWidgetsTimer){clearTimeout(this._clearActiveWidgetsTimer);}if(now<_445+100){return;}this._clearActiveWidgetsTimer=setTimeout(lang.hitch(this,function(){delete this._clearActiveWidgetsTimer;this._setStack([]);}),0);},_onTouchNode:function(node,by){_445=(new Date()).getTime();if(this._clearActiveWidgetsTimer){clearTimeout(this._clearActiveWidgetsTimer);delete this._clearActiveWidgetsTimer;}if(_43c.contains(node,"dijitPopup")){node=node.firstChild;}var _44d=[];try{while(node){var _44e=_43b.get(node,"dijitPopupParent");if(_44e){node=_442.byId(_44e).domNode;}else{if(node.tagName&&node.tagName.toLowerCase()=="body"){if(node===win.body()){break;}node=_441.get(node.ownerDocument).frameElement;}else{var id=node.getAttribute&&node.getAttribute("widgetId"),_44f=id&&_442.byId(id);if(_44f&&!(by=="mouse"&&_44f.get("disabled"))){_44d.unshift(id);}node=node.parentNode;}}}}catch(e){}this._setStack(_44d,by);},_onFocusNode:function(node){if(!node){return;}if(node.nodeType==9){return;}_444=(new Date()).getTime();if(this._clearFocusTimer){clearTimeout(this._clearFocusTimer);delete this._clearFocusTimer;}this._onTouchNode(node);if(node==this.curNode){return;}this.set("prevNode",this.curNode);this.set("curNode",node);},_setStack:function(_450,by){var _451=this.activeStack,_452=_451.length-1,_453=_450.length-1;if(_450[_453]==_451[_452]){return;}this.set("activeStack",_450);var _454,i;for(i=_452;i>=0&&_451[i]!=_450[i];i--){_454=_442.byId(_451[i]);if(_454){_454._hasBeenBlurred=true;_454.set("focused",false);if(_454._focusManager==this){_454._onBlur(by);}this.emit("widget-blur",_454,by);}}for(i++;i<=_453;i++){_454=_442.byId(_450[i]);if(_454){_454.set("focused",true);if(_454._focusManager==this){_454._onFocus(by);}this.emit("widget-focus",_454,by);}}},focus:function(node){if(node){try{node.focus();}catch(e){}}}});var _455=new _446();_43f(function(){var _456=_455.registerWin(_441.get(document));if(has("ie")){on(window,"unload",function(){if(_456){_456.remove();_456=null;}});}});_443.focus=function(node){_455.focus(node);};for(var attr in _455){if(!/^_/.test(attr)){_443.focus[attr]=typeof _455[attr]=="function"?lang.hitch(_455,attr):_455[attr];}}_455.watch(function(attr,_457,_458){_443.focus[attr]=_458;});return _455;});},"dijit/selection":function(){define(["dojo/_base/array","dojo/dom","dojo/_base/lang","dojo/sniff","dojo/_base/window","dijit/focus"],function(_459,dom,lang,has,_45a,_45b){var _45c=function(win){var doc=win.document;this.getType=function(){if(doc.getSelection){var _45d="text";var oSel;try{oSel=win.getSelection();}catch(e){}if(oSel&&oSel.rangeCount==1){var _45e=oSel.getRangeAt(0);if((_45e.startContainer==_45e.endContainer)&&((_45e.endOffset-_45e.startOffset)==1)&&(_45e.startContainer.nodeType!=3)){_45d="control";}}return _45d;}else{return doc.selection.type.toLowerCase();}};this.getSelectedText=function(){if(doc.getSelection){var _45f=win.getSelection();return _45f?_45f.toString():"";}else{if(this.getType()=="control"){return null;}return doc.selection.createRange().text;}};this.getSelectedHtml=function(){if(doc.getSelection){var _460=win.getSelection();if(_460&&_460.rangeCount){var i;var html="";for(i=0;i<_460.rangeCount;i++){var frag=_460.getRangeAt(i).cloneContents();var div=doc.createElement("div");div.appendChild(frag);html+=div.innerHTML;}return html;}return null;}else{if(this.getType()=="control"){return null;}return doc.selection.createRange().htmlText;}};this.getSelectedElement=function(){if(this.getType()=="control"){if(doc.getSelection){var _461=win.getSelection();return _461.anchorNode.childNodes[_461.anchorOffset];}else{var _462=doc.selection.createRange();if(_462&&_462.item){return doc.selection.createRange().item(0);}}}return null;};this.getParentElement=function(){if(this.getType()=="control"){var p=this.getSelectedElement();if(p){return p.parentNode;}}else{if(doc.getSelection){var _463=doc.getSelection();if(_463){var node=_463.anchorNode;while(node&&(node.nodeType!=1)){node=node.parentNode;}return node;}}else{var r=doc.selection.createRange();r.collapse(true);return r.parentElement();}}return null;};this.hasAncestorElement=function(_464){return this.getAncestorElement.apply(this,arguments)!=null;};this.getAncestorElement=function(_465){var node=this.getSelectedElement()||this.getParentElement();return this.getParentOfType(node,arguments);};this.isTag=function(node,tags){if(node&&node.tagName){var _466=node.tagName.toLowerCase();for(var i=0;i<tags.length;i++){var _467=String(tags[i]).toLowerCase();if(_466==_467){return _467;}}}return "";};this.getParentOfType=function(node,tags){while(node){if(this.isTag(node,tags).length){return node;}node=node.parentNode;}return null;};this.collapse=function(_468){if(doc.getSelection){var _469=win.getSelection();if(_469.removeAllRanges){if(_468){_469.collapseToStart();}else{_469.collapseToEnd();}}else{_469.collapse(_468);}}else{var _46a=doc.selection.createRange();_46a.collapse(_468);_46a.select();}};this.remove=function(){var sel=doc.selection;if(doc.getSelection){sel=win.getSelection();sel.deleteFromDocument();return sel;}else{if(sel.type.toLowerCase()!="none"){sel.clear();}return sel;}};this.selectElementChildren=function(_46b,_46c){var _46d;_46b=dom.byId(_46b);if(doc.getSelection){var _46e=win.getSelection();if(has("opera")){if(_46e.rangeCount){_46d=_46e.getRangeAt(0);}else{_46d=doc.createRange();}_46d.setStart(_46b,0);_46d.setEnd(_46b,(_46b.nodeType==3)?_46b.length:_46b.childNodes.length);_46e.addRange(_46d);}else{_46e.selectAllChildren(_46b);}}else{_46d=_46b.ownerDocument.body.createTextRange();_46d.moveToElementText(_46b);if(!_46c){try{_46d.select();}catch(e){}}}};this.selectElement=function(_46f,_470){var _471;_46f=dom.byId(_46f);if(doc.getSelection){var _472=doc.getSelection();_471=doc.createRange();if(_472.removeAllRanges){if(has("opera")){if(_472.getRangeAt(0)){_471=_472.getRangeAt(0);}}_471.selectNode(_46f);_472.removeAllRanges();_472.addRange(_471);}}else{try{var tg=_46f.tagName?_46f.tagName.toLowerCase():"";if(tg==="img"||tg==="table"){_471=_45a.body(doc).createControlRange();}else{_471=_45a.body(doc).createRange();}_471.addElement(_46f);if(!_470){_471.select();}}catch(e){this.selectElementChildren(_46f,_470);}}};this.inSelection=function(node){if(node){var _473;var _474;if(doc.getSelection){var sel=win.getSelection();if(sel&&sel.rangeCount>0){_474=sel.getRangeAt(0);}if(_474&&_474.compareBoundaryPoints&&doc.createRange){try{_473=doc.createRange();_473.setStart(node,0);if(_474.compareBoundaryPoints(_474.START_TO_END,_473)===1){return true;}}catch(e){}}}else{_474=doc.selection.createRange();try{_473=node.ownerDocument.body.createTextRange();_473.moveToElementText(node);}catch(e2){}if(_474&&_473){if(_474.compareEndPoints("EndToStart",_473)===1){return true;}}}}return false;};this.getBookmark=function(){var bm,rg,tg,sel=doc.selection,cf=_45b.curNode;if(doc.getSelection){sel=win.getSelection();if(sel){if(sel.isCollapsed){tg=cf?cf.tagName:"";if(tg){tg=tg.toLowerCase();if(tg=="textarea"||(tg=="input"&&(!cf.type||cf.type.toLowerCase()=="text"))){sel={start:cf.selectionStart,end:cf.selectionEnd,node:cf,pRange:true};return {isCollapsed:(sel.end<=sel.start),mark:sel};}}bm={isCollapsed:true};if(sel.rangeCount){bm.mark=sel.getRangeAt(0).cloneRange();}}else{rg=sel.getRangeAt(0);bm={isCollapsed:false,mark:rg.cloneRange()};}}}else{if(sel){tg=cf?cf.tagName:"";tg=tg.toLowerCase();if(cf&&tg&&(tg=="button"||tg=="textarea"||tg=="input")){if(sel.type&&sel.type.toLowerCase()=="none"){return {isCollapsed:true,mark:null};}else{rg=sel.createRange();return {isCollapsed:rg.text&&rg.text.length?false:true,mark:{range:rg,pRange:true}};}}bm={};try{rg=sel.createRange();bm.isCollapsed=!(sel.type=="Text"?rg.htmlText.length:rg.length);}catch(e){bm.isCollapsed=true;return bm;}if(sel.type.toUpperCase()=="CONTROL"){if(rg.length){bm.mark=[];var i=0,len=rg.length;while(i<len){bm.mark.push(rg.item(i++));}}else{bm.isCollapsed=true;bm.mark=null;}}else{bm.mark=rg.getBookmark();}}else{console.warn("No idea how to store the current selection for this browser!");}}return bm;};this.moveToBookmark=function(_475){var mark=_475.mark;if(mark){if(doc.getSelection){var sel=win.getSelection();if(sel&&sel.removeAllRanges){if(mark.pRange){var n=mark.node;n.selectionStart=mark.start;n.selectionEnd=mark.end;}else{sel.removeAllRanges();sel.addRange(mark);}}else{console.warn("No idea how to restore selection for this browser!");}}else{if(doc.selection&&mark){var rg;if(mark.pRange){rg=mark.range;}else{if(lang.isArray(mark)){rg=doc.body.createControlRange();_459.forEach(mark,function(n){rg.addElement(n);});}else{rg=doc.body.createTextRange();rg.moveToBookmark(mark);}}rg.select();}}}};this.isCollapsed=function(){return this.getBookmark().isCollapsed;};};var _476=new _45c(window);_476.SelectionManager=_45c;return _476;});},"dijit/_base/manager":function(){define(["dojo/_base/array","dojo/_base/config","dojo/_base/lang","../registry","../main"],function(_477,_478,lang,_479,_47a){var _47b={};_477.forEach(["byId","getUniqueId","findWidgets","_destroyAll","byNode","getEnclosingWidget"],function(name){_47b[name]=_479[name];});lang.mixin(_47b,{defaultDuration:_478["defaultDuration"]||200});lang.mixin(_47a,_47b);return _47a;});},"dijit/_base/place":function(){define(["dojo/_base/array","dojo/_base/lang","dojo/window","../place","../main"],function(_47c,lang,_47d,_47e,_47f){var _480={};_480.getViewport=function(){return _47d.getBox();};_480.placeOnScreen=_47e.at;_480.placeOnScreenAroundElement=function(node,_481,_482,_483){var _484;if(lang.isArray(_482)){_484=_482;}else{_484=[];for(var key in _482){_484.push({aroundCorner:key,corner:_482[key]});}}return _47e.around(node,_481,_484,true,_483);};_480.placeOnScreenAroundNode=_480.placeOnScreenAroundElement;_480.placeOnScreenAroundRectangle=_480.placeOnScreenAroundElement;_480.getPopupAroundAlignment=function(_485,_486){var _487={};_47c.forEach(_485,function(pos){var ltr=_486;switch(pos){case "after":_487[_486?"BR":"BL"]=_486?"BL":"BR";break;case "before":_487[_486?"BL":"BR"]=_486?"BR":"BL";break;case "below-alt":ltr=!ltr;case "below":_487[ltr?"BL":"BR"]=ltr?"TL":"TR";_487[ltr?"BR":"BL"]=ltr?"TR":"TL";break;case "above-alt":ltr=!ltr;case "above":default:_487[ltr?"TL":"TR"]=ltr?"BL":"BR";_487[ltr?"TR":"TL"]=ltr?"BR":"BL";break;}});return _487;};lang.mixin(_47f,_480);return _47f;});},"dijit/place":function(){define(["dojo/_base/array","dojo/dom-geometry","dojo/dom-style","dojo/_base/kernel","dojo/_base/window","./Viewport","./main"],function(_488,_489,_48a,_48b,win,_48c,_48d){function _48e(node,_48f,_490,_491){var view=_48c.getEffectiveBox(node.ownerDocument);if(!node.parentNode||String(node.parentNode.tagName).toLowerCase()!="body"){win.body(node.ownerDocument).appendChild(node);}var best=null;_488.some(_48f,function(_492){var _493=_492.corner;var pos=_492.pos;var _494=0;var _495={w:{"L":view.l+view.w-pos.x,"R":pos.x-view.l,"M":view.w}[_493.charAt(1)],h:{"T":view.t+view.h-pos.y,"B":pos.y-view.t,"M":view.h}[_493.charAt(0)]};var s=node.style;s.left=s.right="auto";if(_490){var res=_490(node,_492.aroundCorner,_493,_495,_491);_494=typeof res=="undefined"?0:res;}var _496=node.style;var _497=_496.display;var _498=_496.visibility;if(_496.display=="none"){_496.visibility="hidden";_496.display="";}var bb=_489.position(node);_496.display=_497;_496.visibility=_498;var _499={"L":pos.x,"R":pos.x-bb.w,"M":Math.max(view.l,Math.min(view.l+view.w,pos.x+(bb.w>>1))-bb.w)}[_493.charAt(1)],_49a={"T":pos.y,"B":pos.y-bb.h,"M":Math.max(view.t,Math.min(view.t+view.h,pos.y+(bb.h>>1))-bb.h)}[_493.charAt(0)],_49b=Math.max(view.l,_499),_49c=Math.max(view.t,_49a),endX=Math.min(view.l+view.w,_499+bb.w),endY=Math.min(view.t+view.h,_49a+bb.h),_49d=endX-_49b,_49e=endY-_49c;_494+=(bb.w-_49d)+(bb.h-_49e);if(best==null||_494<best.overflow){best={corner:_493,aroundCorner:_492.aroundCorner,x:_49b,y:_49c,w:_49d,h:_49e,overflow:_494,spaceAvailable:_495};}return !_494;});if(best.overflow&&_490){_490(node,best.aroundCorner,best.corner,best.spaceAvailable,_491);}var top=best.y,side=best.x,body=win.body(node.ownerDocument);if(/relative|absolute/.test(_48a.get(body,"position"))){top-=_48a.get(body,"marginTop");side-=_48a.get(body,"marginLeft");}var s=node.style;s.top=top+"px";s.left=side+"px";s.right="auto";return best;};var _49f={"TL":"BR","TR":"BL","BL":"TR","BR":"TL"};var _4a0={at:function(node,pos,_4a1,_4a2,_4a3){var _4a4=_488.map(_4a1,function(_4a5){var c={corner:_4a5,aroundCorner:_49f[_4a5],pos:{x:pos.x,y:pos.y}};if(_4a2){c.pos.x+=_4a5.charAt(1)=="L"?_4a2.x:-_4a2.x;c.pos.y+=_4a5.charAt(0)=="T"?_4a2.y:-_4a2.y;}return c;});return _48e(node,_4a4,_4a3);},around:function(node,_4a6,_4a7,_4a8,_4a9){var _4aa;if(typeof _4a6=="string"||"offsetWidth" in _4a6||"ownerSVGElement" in _4a6){_4aa=_489.position(_4a6,true);if(/^(above|below)/.test(_4a7[0])){var _4ab=_489.getBorderExtents(_4a6),_4ac=_4a6.firstChild?_489.getBorderExtents(_4a6.firstChild):{t:0,l:0,b:0,r:0},_4ad=_489.getBorderExtents(node),_4ae=node.firstChild?_489.getBorderExtents(node.firstChild):{t:0,l:0,b:0,r:0};_4aa.y+=Math.min(_4ab.t+_4ac.t,_4ad.t+_4ae.t);_4aa.h-=Math.min(_4ab.t+_4ac.t,_4ad.t+_4ae.t)+Math.min(_4ab.b+_4ac.b,_4ad.b+_4ae.b);}}else{_4aa=_4a6;}if(_4a6.parentNode){var _4af=_48a.getComputedStyle(_4a6).position=="absolute";var _4b0=_4a6.parentNode;while(_4b0&&_4b0.nodeType==1&&_4b0.nodeName!="BODY"){var _4b1=_489.position(_4b0,true),pcs=_48a.getComputedStyle(_4b0);if(/relative|absolute/.test(pcs.position)){_4af=false;}if(!_4af&&/hidden|auto|scroll/.test(pcs.overflow)){var _4b2=Math.min(_4aa.y+_4aa.h,_4b1.y+_4b1.h);var _4b3=Math.min(_4aa.x+_4aa.w,_4b1.x+_4b1.w);_4aa.x=Math.max(_4aa.x,_4b1.x);_4aa.y=Math.max(_4aa.y,_4b1.y);_4aa.h=_4b2-_4aa.y;_4aa.w=_4b3-_4aa.x;}if(pcs.position=="absolute"){_4af=true;}_4b0=_4b0.parentNode;}}var x=_4aa.x,y=_4aa.y,_4b4="w" in _4aa?_4aa.w:(_4aa.w=_4aa.width),_4b5="h" in _4aa?_4aa.h:(_48b.deprecated("place.around: dijit/place.__Rectangle: { x:"+x+", y:"+y+", height:"+_4aa.height+", width:"+_4b4+" } has been deprecated. Please use { x:"+x+", y:"+y+", h:"+_4aa.height+", w:"+_4b4+" }","","2.0"),_4aa.h=_4aa.height);var _4b6=[];function push(_4b7,_4b8){_4b6.push({aroundCorner:_4b7,corner:_4b8,pos:{x:{"L":x,"R":x+_4b4,"M":x+(_4b4>>1)}[_4b7.charAt(1)],y:{"T":y,"B":y+_4b5,"M":y+(_4b5>>1)}[_4b7.charAt(0)]}});};_488.forEach(_4a7,function(pos){var ltr=_4a8;switch(pos){case "above-centered":push("TM","BM");break;case "below-centered":push("BM","TM");break;case "after-centered":ltr=!ltr;case "before-centered":push(ltr?"ML":"MR",ltr?"MR":"ML");break;case "after":ltr=!ltr;case "before":push(ltr?"TL":"TR",ltr?"TR":"TL");push(ltr?"BL":"BR",ltr?"BR":"BL");break;case "below-alt":ltr=!ltr;case "below":push(ltr?"BL":"BR",ltr?"TL":"TR");push(ltr?"BR":"BL",ltr?"TR":"TL");break;case "above-alt":ltr=!ltr;case "above":push(ltr?"TL":"TR",ltr?"BL":"BR");push(ltr?"TR":"TL",ltr?"BR":"BL");break;default:push(pos.aroundCorner,pos.corner);}});var _4b9=_48e(node,_4b6,_4a9,{w:_4b4,h:_4b5});_4b9.aroundNodePos=_4aa;return _4b9;}};return _48d.place=_4a0;});},"dijit/Viewport":function(){define(["dojo/Evented","dojo/on","dojo/domReady","dojo/sniff","dojo/window"],function(_4ba,on,_4bb,has,_4bc){var _4bd=new _4ba();var _4be;_4bb(function(){var _4bf=_4bc.getBox();_4bd._rlh=on(window,"resize",function(){var _4c0=_4bc.getBox();if(_4bf.h==_4c0.h&&_4bf.w==_4c0.w){return;}_4bf=_4c0;_4bd.emit("resize");});if(has("ie")==8){var _4c1=screen.deviceXDPI;setInterval(function(){if(screen.deviceXDPI!=_4c1){_4c1=screen.deviceXDPI;_4bd.emit("resize");}},500);}if(has("ios")){on(document,"focusin",function(evt){_4be=evt.target;});on(document,"focusout",function(evt){_4be=null;});}});_4bd.getEffectiveBox=function(doc){var box=_4bc.getBox(doc);var tag=_4be&&_4be.tagName&&_4be.tagName.toLowerCase();if(has("ios")&&_4be&&!_4be.readOnly&&(tag=="textarea"||(tag=="input"&&/^(color|email|number|password|search|tel|text|url)$/.test(_4be.type)))){box.h*=(orientation==0||orientation==180?0.66:0.4);var rect=_4be.getBoundingClientRect();box.h=Math.max(box.h,rect.top+rect.height);}return box;};return _4bd;});},"dijit/_base/popup":function(){define(["dojo/dom-class","dojo/_base/window","../popup","../BackgroundIframe"],function(_4c2,win,_4c3){var _4c4=_4c3._createWrapper;_4c3._createWrapper=function(_4c5){if(!_4c5.declaredClass){_4c5={_popupWrapper:(_4c5.parentNode&&_4c2.contains(_4c5.parentNode,"dijitPopup"))?_4c5.parentNode:null,domNode:_4c5,destroy:function(){},ownerDocument:_4c5.ownerDocument,ownerDocumentBody:win.body(_4c5.ownerDocument)};}return _4c4.call(this,_4c5);};var _4c6=_4c3.open;_4c3.open=function(args){if(args.orient&&typeof args.orient!="string"&&!("length" in args.orient)){var ary=[];for(var key in args.orient){ary.push({aroundCorner:key,corner:args.orient[key]});}args.orient=ary;}return _4c6.call(this,args);};return _4c3;});},"dijit/popup":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","./place","./BackgroundIframe","./Viewport","./main","dojo/touch"],function(_4c7,_4c8,_4c9,dom,_4ca,_4cb,_4cc,_4cd,has,keys,lang,on,_4ce,_4cf,_4d0,_4d1){function _4d2(){if(this._popupWrapper){_4cb.destroy(this._popupWrapper);delete this._popupWrapper;}};var _4d3=_4c9(null,{_stack:[],_beginZIndex:1000,_idGen:1,_repositionAll:function(){if(this._firstAroundNode){var _4d4=this._firstAroundPosition,_4d5=_4cc.position(this._firstAroundNode,true),dx=_4d5.x-_4d4.x,dy=_4d5.y-_4d4.y;if(dx||dy){this._firstAroundPosition=_4d5;for(var i=0;i<this._stack.length;i++){var _4d6=this._stack[i].wrapper.style;_4d6.top=(parseFloat(_4d6.top)+dy)+"px";if(_4d6.right=="auto"){_4d6.left=(parseFloat(_4d6.left)+dx)+"px";}else{_4d6.right=(parseFloat(_4d6.right)-dx)+"px";}}}this._aroundMoveListener=setTimeout(lang.hitch(this,"_repositionAll"),dx||dy?10:50);}},_createWrapper:function(_4d7){var _4d8=_4d7._popupWrapper,node=_4d7.domNode;if(!_4d8){_4d8=_4cb.create("div",{"class":"dijitPopup",style:{display:"none"},role:"region","aria-label":_4d7["aria-label"]||_4d7.label||_4d7.name||_4d7.id},_4d7.ownerDocumentBody);_4d8.appendChild(node);var s=node.style;s.display="";s.visibility="";s.position="";s.top="0px";_4d7._popupWrapper=_4d8;_4c8.after(_4d7,"destroy",_4d2,true);if("ontouchend" in document){on(_4d8,"touchend",function(evt){if(!/^(input|button|textarea)$/i.test(evt.target.tagName)){evt.preventDefault();}});}_4d8.dojoClick=true;}return _4d8;},moveOffScreen:function(_4d9){var _4da=this._createWrapper(_4d9);var ltr=_4cc.isBodyLtr(_4d9.ownerDocument),_4db={visibility:"hidden",top:"-9999px",display:""};_4db[ltr?"left":"right"]="-9999px";_4db[ltr?"right":"left"]="auto";_4cd.set(_4da,_4db);return _4da;},hide:function(_4dc){var _4dd=this._createWrapper(_4dc);_4cd.set(_4dd,{display:"none",height:"auto",overflowY:"visible",border:""});var node=_4dc.domNode;if("_originalStyle" in node){node.style.cssText=node._originalStyle;}},getTopPopup:function(){var _4de=this._stack;for(var pi=_4de.length-1;pi>0&&_4de[pi].parent===_4de[pi-1].widget;pi--){}return _4de[pi];},open:function(args){var _4df=this._stack,_4e0=args.popup,node=_4e0.domNode,_4e1=args.orient||["below","below-alt","above","above-alt"],ltr=args.parent?args.parent.isLeftToRight():_4cc.isBodyLtr(_4e0.ownerDocument),_4e2=args.around,id=(args.around&&args.around.id)?(args.around.id+"_dropdown"):("popup_"+this._idGen++);while(_4df.length&&(!args.parent||!dom.isDescendant(args.parent.domNode,_4df[_4df.length-1].widget.domNode))){this.close(_4df[_4df.length-1].widget);}var _4e3=this.moveOffScreen(_4e0);if(_4e0.startup&&!_4e0._started){_4e0.startup();}var _4e4,_4e5=_4cc.position(node);if("maxHeight" in args&&args.maxHeight!=-1){_4e4=args.maxHeight||Infinity;}else{var _4e6=_4d0.getEffectiveBox(this.ownerDocument),_4e7=_4e2?_4cc.position(_4e2,false):{y:args.y-(args.padding||0),h:(args.padding||0)*2};_4e4=Math.floor(Math.max(_4e7.y,_4e6.h-(_4e7.y+_4e7.h)));}if(_4e5.h>_4e4){var cs=_4cd.getComputedStyle(node),_4e8=cs.borderLeftWidth+" "+cs.borderLeftStyle+" "+cs.borderLeftColor;_4cd.set(_4e3,{overflowY:"scroll",height:_4e4+"px",border:_4e8});node._originalStyle=node.style.cssText;node.style.border="none";}_4ca.set(_4e3,{id:id,style:{zIndex:this._beginZIndex+_4df.length},"class":"dijitPopup "+(_4e0.baseClass||_4e0["class"]||"").split(" ")[0]+"Popup",dijitPopupParent:args.parent?args.parent.id:""});if(_4df.length==0&&_4e2){this._firstAroundNode=_4e2;this._firstAroundPosition=_4cc.position(_4e2,true);this._aroundMoveListener=setTimeout(lang.hitch(this,"_repositionAll"),50);}if(has("config-bgIframe")&&!_4e0.bgIframe){_4e0.bgIframe=new _4cf(_4e3);}var _4e9=_4e0.orient?lang.hitch(_4e0,"orient"):null,best=_4e2?_4ce.around(_4e3,_4e2,_4e1,ltr,_4e9):_4ce.at(_4e3,args,_4e1=="R"?["TR","BR","TL","BL"]:["TL","BL","TR","BR"],args.padding,_4e9);_4e3.style.visibility="visible";node.style.visibility="visible";var _4ea=[];_4ea.push(on(_4e3,"keydown",lang.hitch(this,function(evt){if(evt.keyCode==keys.ESCAPE&&args.onCancel){evt.stopPropagation();evt.preventDefault();args.onCancel();}else{if(evt.keyCode==keys.TAB){evt.stopPropagation();evt.preventDefault();var _4eb=this.getTopPopup();if(_4eb&&_4eb.onCancel){_4eb.onCancel();}}}})));if(_4e0.onCancel&&args.onCancel){_4ea.push(_4e0.on("cancel",args.onCancel));}_4ea.push(_4e0.on(_4e0.onExecute?"execute":"change",lang.hitch(this,function(){var _4ec=this.getTopPopup();if(_4ec&&_4ec.onExecute){_4ec.onExecute();}})));_4df.push({widget:_4e0,wrapper:_4e3,parent:args.parent,onExecute:args.onExecute,onCancel:args.onCancel,onClose:args.onClose,handlers:_4ea});if(_4e0.onOpen){_4e0.onOpen(best);}return best;},close:function(_4ed){var _4ee=this._stack;while((_4ed&&_4c7.some(_4ee,function(elem){return elem.widget==_4ed;}))||(!_4ed&&_4ee.length)){var top=_4ee.pop(),_4ef=top.widget,_4f0=top.onClose;if(_4ef.bgIframe){_4ef.bgIframe.destroy();delete _4ef.bgIframe;}if(_4ef.onClose){_4ef.onClose();}var h;while(h=top.handlers.pop()){h.remove();}if(_4ef&&_4ef.domNode){this.hide(_4ef);}if(_4f0){_4f0();}}if(_4ee.length==0&&this._aroundMoveListener){clearTimeout(this._aroundMoveListener);this._firstAroundNode=this._firstAroundPosition=this._aroundMoveListener=null;}}});return (_4d1.popup=new _4d3());});},"dijit/BackgroundIframe":function(){define(["require","./main","dojo/_base/config","dojo/dom-construct","dojo/dom-style","dojo/_base/lang","dojo/on","dojo/sniff"],function(_4f1,_4f2,_4f3,_4f4,_4f5,lang,on,has){has.add("config-bgIframe",(has("ie")||has("trident"))&&!/IEMobile\/10\.0/.test(navigator.userAgent));var _4f6=new function(){var _4f7=[];this.pop=function(){var _4f8;if(_4f7.length){_4f8=_4f7.pop();_4f8.style.display="";}else{if(has("ie")<9){var burl=_4f3["dojoBlankHtmlUrl"]||_4f1.toUrl("dojo/resources/blank.html")||"javascript:\"\"";var html="<iframe src='"+burl+"' role='presentation'"+" style='position: absolute; left: 0px; top: 0px;"+"z-index: -1; filter:Alpha(Opacity=\"0\");'>";_4f8=document.createElement(html);}else{_4f8=_4f4.create("iframe");_4f8.src="javascript:\"\"";_4f8.className="dijitBackgroundIframe";_4f8.setAttribute("role","presentation");_4f5.set(_4f8,"opacity",0.1);}_4f8.tabIndex=-1;}return _4f8;};this.push=function(_4f9){_4f9.style.display="none";_4f7.push(_4f9);};}();_4f2.BackgroundIframe=function(node){if(!node.id){throw new Error("no id");}if(has("config-bgIframe")){var _4fa=(this.iframe=_4f6.pop());node.appendChild(_4fa);if(has("ie")<7||has("quirks")){this.resize(node);this._conn=on(node,"resize",lang.hitch(this,"resize",node));}else{_4f5.set(_4fa,{width:"100%",height:"100%"});}}};lang.extend(_4f2.BackgroundIframe,{resize:function(node){if(this.iframe){_4f5.set(this.iframe,{width:node.offsetWidth+"px",height:node.offsetHeight+"px"});}},destroy:function(){if(this._conn){this._conn.remove();this._conn=null;}if(this.iframe){this.iframe.parentNode.removeChild(this.iframe);_4f6.push(this.iframe);delete this.iframe;}}});return _4f2.BackgroundIframe;});},"dijit/_base/scroll":function(){define(["dojo/window","../main"],function(_4fb,_4fc){_4fc.scrollIntoView=function(node,pos){_4fb.scrollIntoView(node,pos);};});},"dijit/_base/sniff":function(){define(["dojo/uacss"],function(){});},"dijit/_base/typematic":function(){define(["../typematic"],function(){});},"dijit/typematic":function(){define(["dojo/_base/array","dojo/_base/connect","dojo/_base/lang","dojo/on","dojo/sniff","./main"],function(_4fd,_4fe,lang,on,has,_4ff){var _500=(_4ff.typematic={_fireEventAndReload:function(){this._timer=null;this._callback(++this._count,this._node,this._evt);this._currentTimeout=Math.max(this._currentTimeout<0?this._initialDelay:(this._subsequentDelay>1?this._subsequentDelay:Math.round(this._currentTimeout*this._subsequentDelay)),this._minDelay);this._timer=setTimeout(lang.hitch(this,"_fireEventAndReload"),this._currentTimeout);},trigger:function(evt,_501,node,_502,obj,_503,_504,_505){if(obj!=this._obj){this.stop();this._initialDelay=_504||500;this._subsequentDelay=_503||0.9;this._minDelay=_505||10;this._obj=obj;this._node=node;this._currentTimeout=-1;this._count=-1;this._callback=lang.hitch(_501,_502);this._evt={faux:true};for(var attr in evt){if(attr!="layerX"&&attr!="layerY"){var v=evt[attr];if(typeof v!="function"&&typeof v!="undefined"){this._evt[attr]=v;}}}this._fireEventAndReload();}},stop:function(){if(this._timer){clearTimeout(this._timer);this._timer=null;}if(this._obj){this._callback(-1,this._node,this._evt);this._obj=null;}},addKeyListener:function(node,_506,_507,_508,_509,_50a,_50b){var type="keyCode" in _506?"keydown":"charCode" in _506?"keypress":_4fe._keypress,attr="keyCode" in _506?"keyCode":"charCode" in _506?"charCode":"charOrCode";var _50c=[on(node,type,lang.hitch(this,function(evt){if(evt[attr]==_506[attr]&&(_506.ctrlKey===undefined||_506.ctrlKey==evt.ctrlKey)&&(_506.altKey===undefined||_506.altKey==evt.altKey)&&(_506.metaKey===undefined||_506.metaKey==(evt.metaKey||false))&&(_506.shiftKey===undefined||_506.shiftKey==evt.shiftKey)){evt.stopPropagation();evt.preventDefault();_500.trigger(evt,_507,node,_508,_506,_509,_50a,_50b);}else{if(_500._obj==_506){_500.stop();}}})),on(node,"keyup",lang.hitch(this,function(){if(_500._obj==_506){_500.stop();}}))];return {remove:function(){_4fd.forEach(_50c,function(h){h.remove();});}};},addMouseListener:function(node,_50d,_50e,_50f,_510,_511){var _512=[on(node,"mousedown",lang.hitch(this,function(evt){evt.preventDefault();_500.trigger(evt,_50d,node,_50e,node,_50f,_510,_511);})),on(node,"mouseup",lang.hitch(this,function(evt){if(this._obj){evt.preventDefault();}_500.stop();})),on(node,"mouseout",lang.hitch(this,function(evt){if(this._obj){evt.preventDefault();}_500.stop();})),on(node,"dblclick",lang.hitch(this,function(evt){evt.preventDefault();if(has("ie")<9){_500.trigger(evt,_50d,node,_50e,node,_50f,_510,_511);setTimeout(lang.hitch(this,_500.stop),50);}}))];return {remove:function(){_4fd.forEach(_512,function(h){h.remove();});}};},addListener:function(_513,_514,_515,_516,_517,_518,_519,_51a){var _51b=[this.addKeyListener(_514,_515,_516,_517,_518,_519,_51a),this.addMouseListener(_513,_516,_517,_518,_519,_51a)];return {remove:function(){_4fd.forEach(_51b,function(h){h.remove();});}};}});return _500;});},"dijit/_base/wai":function(){define(["dojo/dom-attr","dojo/_base/lang","../main","../hccss"],function(_51c,lang,_51d){var _51e={hasWaiRole:function(elem,role){var _51f=this.getWaiRole(elem);return role?(_51f.indexOf(role)>-1):(_51f.length>0);},getWaiRole:function(elem){return lang.trim((_51c.get(elem,"role")||"").replace("wairole:",""));},setWaiRole:function(elem,role){_51c.set(elem,"role",role);},removeWaiRole:function(elem,role){var _520=_51c.get(elem,"role");if(!_520){return;}if(role){var t=lang.trim((" "+_520+" ").replace(" "+role+" "," "));_51c.set(elem,"role",t);}else{elem.removeAttribute("role");}},hasWaiState:function(elem,_521){return elem.hasAttribute?elem.hasAttribute("aria-"+_521):!!elem.getAttribute("aria-"+_521);},getWaiState:function(elem,_522){return elem.getAttribute("aria-"+_522)||"";},setWaiState:function(elem,_523,_524){elem.setAttribute("aria-"+_523,_524);},removeWaiState:function(elem,_525){elem.removeAttribute("aria-"+_525);}};lang.mixin(_51d,_51e);return _51d;});},"dijit/hccss":function(){define(["dojo/dom-class","dojo/hccss","dojo/domReady","dojo/_base/window"],function(_526,has,_527,win){_527(function(){if(has("highcontrast")){_526.add(win.body(),"dijit_a11y");}});return has;});},"dojo/hccss":function(){define(["require","./_base/config","./dom-class","./dom-style","./has","./domReady","./_base/window"],function(_528,_529,_52a,_52b,has,_52c,win){has.add("highcontrast",function(){var div=win.doc.createElement("div");try{div.style.cssText="border: 1px solid; border-color:red green; position: absolute; height: 5px; top: -999px;"+"background-image: url(\""+(_529.blankGif||_528.toUrl("./resources/blank.gif"))+"\");";win.body().appendChild(div);var cs=_52b.getComputedStyle(div),_52d=cs.backgroundImage;return cs.borderTopColor==cs.borderRightColor||(_52d&&(_52d=="none"||_52d=="url(invalid-url:)"));}catch(e){console.warn("hccss: exception detecting high-contrast mode, document is likely hidden: "+e.toString());return false;}finally{if(has("ie")<=8){div.outerHTML="";}else{win.body().removeChild(div);}}});_52c(function(){if(has("highcontrast")){_52a.add(win.body(),"dj_a11y");}});return has;});},"dijit/_base/window":function(){define(["dojo/window","../main"],function(_52e,_52f){_52f.getDocumentWindow=function(doc){return _52e.get(doc);};});},"dijit/_Widget":function(){define(["dojo/aspect","dojo/_base/config","dojo/_base/connect","dojo/_base/declare","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/query","dojo/ready","./registry","./_WidgetBase","./_OnDijitClickMixin","./_FocusMixin","dojo/uacss","./hccss"],function(_530,_531,_532,_533,has,_534,lang,_535,_536,_537,_538,_539,_53a){function _53b(){};function _53c(_53d){return function(obj,_53e,_53f,_540){if(obj&&typeof _53e=="string"&&obj[_53e]==_53b){return obj.on(_53e.substring(2).toLowerCase(),lang.hitch(_53f,_540));}return _53d.apply(_532,arguments);};};_530.around(_532,"connect",_53c);if(_534.connect){_530.around(_534,"connect",_53c);}var _541=_533("dijit._Widget",[_538,_539,_53a],{onClick:_53b,onDblClick:_53b,onKeyDown:_53b,onKeyPress:_53b,onKeyUp:_53b,onMouseDown:_53b,onMouseMove:_53b,onMouseOut:_53b,onMouseOver:_53b,onMouseLeave:_53b,onMouseEnter:_53b,onMouseUp:_53b,constructor:function(_542){this._toConnect={};for(var name in _542){if(this[name]===_53b){this._toConnect[name.replace(/^on/,"").toLowerCase()]=_542[name];delete _542[name];}}},postCreate:function(){this.inherited(arguments);for(var name in this._toConnect){this.on(name,this._toConnect[name]);}delete this._toConnect;},on:function(type,func){if(this[this._onMap(type)]===_53b){return _532.connect(this.domNode,type.toLowerCase(),this,func);}return this.inherited(arguments);},_setFocusedAttr:function(val){this._focused=val;this._set("focused",val);},setAttribute:function(attr,_543){_534.deprecated(this.declaredClass+"::setAttribute(attr, value) is deprecated. Use set() instead.","","2.0");this.set(attr,_543);},attr:function(name,_544){var args=arguments.length;if(args>=2||typeof name==="object"){return this.set.apply(this,arguments);}else{return this.get(name);}},getDescendants:function(){_534.deprecated(this.declaredClass+"::getDescendants() is deprecated. Use getChildren() instead.","","2.0");return this.containerNode?_535("[widgetId]",this.containerNode).map(_537.byNode):[];},_onShow:function(){this.onShow();},onShow:function(){},onHide:function(){},onClose:function(){return true;}});if(has("dijit-legacy-requires")){_536(0,function(){var _545=["dijit/_base"];require(_545);});}return _541;});},"dijit/_WidgetBase":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/config","dojo/_base/connect","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/ready","dojo/Stateful","dojo/topic","dojo/_base/window","./Destroyable","dojo/has!dojo-bidi?./_BidiMixin","./registry"],function(_546,_547,_548,_549,_54a,_54b,dom,_54c,_54d,_54e,_54f,_550,has,_551,lang,on,_552,_553,_554,win,_555,_556,_557){has.add("dijit-legacy-requires",!_551.isAsync);has.add("dojo-bidi",false);if(has("dijit-legacy-requires")){_552(0,function(){var _558=["dijit/_base/manager"];_546(_558);});}var _559={};function _55a(obj){var ret={};for(var attr in obj){ret[attr.toLowerCase()]=true;}return ret;};function _55b(attr){return function(val){_54c[val?"set":"remove"](this.domNode,attr,val);this._set(attr,val);};};function _55c(a,b){return a===b||(a!==a&&b!==b);};var _55d=_54b("dijit._WidgetBase",[_553,_555],{id:"",_setIdAttr:"domNode",lang:"",_setLangAttr:_55b("lang"),dir:"",_setDirAttr:_55b("dir"),"class":"",_setClassAttr:{node:"domNode",type:"class"},_setTypeAttr:null,style:"",title:"",tooltip:"",baseClass:"",srcNodeRef:null,domNode:null,containerNode:null,ownerDocument:null,_setOwnerDocumentAttr:function(val){this._set("ownerDocument",val);},attributeMap:{},_blankGif:_549.blankGif||_546.toUrl("dojo/resources/blank.gif"),textDir:"",_introspect:function(){var ctor=this.constructor;if(!ctor._setterAttrs){var _55e=ctor.prototype,_55f=ctor._setterAttrs=[],_560=(ctor._onMap={});for(var name in _55e.attributeMap){_55f.push(name);}for(name in _55e){if(/^on/.test(name)){_560[name.substring(2).toLowerCase()]=name;}if(/^_set[A-Z](.*)Attr$/.test(name)){name=name.charAt(4).toLowerCase()+name.substr(5,name.length-9);if(!_55e.attributeMap||!(name in _55e.attributeMap)){_55f.push(name);}}}}},postscript:function(_561,_562){this.create(_561,_562);},create:function(_563,_564){this._introspect();this.srcNodeRef=dom.byId(_564);this._connects=[];this._supportingWidgets=[];if(this.srcNodeRef&&this.srcNodeRef.id&&(typeof this.srcNodeRef.id=="string")){this.id=this.srcNodeRef.id;}if(_563){this.params=_563;lang.mixin(this,_563);}this.postMixInProperties();if(!this.id){this.id=_557.getUniqueId(this.declaredClass.replace(/\./g,"_"));if(this.params){delete this.params.id;}}this.ownerDocument=this.ownerDocument||(this.srcNodeRef?this.srcNodeRef.ownerDocument:document);this.ownerDocumentBody=win.body(this.ownerDocument);_557.add(this);this.buildRendering();var _565;if(this.domNode){this._applyAttributes();var _566=this.srcNodeRef;if(_566&&_566.parentNode&&this.domNode!==_566){_566.parentNode.replaceChild(this.domNode,_566);_565=true;}this.domNode.setAttribute("widgetId",this.id);}this.postCreate();if(_565){delete this.srcNodeRef;}this._created=true;},_applyAttributes:function(){var _567={};for(var key in this.params||{}){_567[key]=this._get(key);}_547.forEach(this.constructor._setterAttrs,function(key){if(!(key in _567)){var val=this._get(key);if(val){this.set(key,val);}}},this);for(key in _567){this.set(key,_567[key]);}},postMixInProperties:function(){},buildRendering:function(){if(!this.domNode){this.domNode=this.srcNodeRef||this.ownerDocument.createElement("div");}if(this.baseClass){var _568=this.baseClass.split(" ");if(!this.isLeftToRight()){_568=_568.concat(_547.map(_568,function(name){return name+"Rtl";}));}_54d.add(this.domNode,_568);}},postCreate:function(){},startup:function(){if(this._started){return;}this._started=true;_547.forEach(this.getChildren(),function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}});},destroyRecursive:function(_569){this._beingDestroyed=true;this.destroyDescendants(_569);this.destroy(_569);},destroy:function(_56a){this._beingDestroyed=true;this.uninitialize();function _56b(w){if(w.destroyRecursive){w.destroyRecursive(_56a);}else{if(w.destroy){w.destroy(_56a);}}};_547.forEach(this._connects,lang.hitch(this,"disconnect"));_547.forEach(this._supportingWidgets,_56b);if(this.domNode){_547.forEach(_557.findWidgets(this.domNode,this.containerNode),_56b);}this.destroyRendering(_56a);_557.remove(this.id);this._destroyed=true;},destroyRendering:function(_56c){if(this.bgIframe){this.bgIframe.destroy(_56c);delete this.bgIframe;}if(this.domNode){if(_56c){_54c.remove(this.domNode,"widgetId");}else{_54e.destroy(this.domNode);}delete this.domNode;}if(this.srcNodeRef){if(!_56c){_54e.destroy(this.srcNodeRef);}delete this.srcNodeRef;}},destroyDescendants:function(_56d){_547.forEach(this.getChildren(),function(_56e){if(_56e.destroyRecursive){_56e.destroyRecursive(_56d);}});},uninitialize:function(){return false;},_setStyleAttr:function(_56f){var _570=this.domNode;if(lang.isObject(_56f)){_550.set(_570,_56f);}else{if(_570.style.cssText){_570.style.cssText+="; "+_56f;}else{_570.style.cssText=_56f;}}this._set("style",_56f);},_attrToDom:function(attr,_571,_572){_572=arguments.length>=3?_572:this.attributeMap[attr];_547.forEach(lang.isArray(_572)?_572:[_572],function(_573){var _574=this[_573.node||_573||"domNode"];var type=_573.type||"attribute";switch(type){case "attribute":if(lang.isFunction(_571)){_571=lang.hitch(this,_571);}var _575=_573.attribute?_573.attribute:(/^on[A-Z][a-zA-Z]*$/.test(attr)?attr.toLowerCase():attr);if(_574.tagName){_54c.set(_574,_575,_571);}else{_574.set(_575,_571);}break;case "innerText":_574.innerHTML="";_574.appendChild(this.ownerDocument.createTextNode(_571));break;case "textContent":_574.textContent=_571;break;case "innerHTML":_574.innerHTML=_571;break;case "class":_54d.replace(_574,_571,this[attr]);break;case "toggleClass":_54d.toggle(_574,_573.className||attr,_571);break;}},this);},get:function(name){var _576=this._getAttrNames(name);return this[_576.g]?this[_576.g]():this._get(name);},set:function(name,_577){if(typeof name==="object"){for(var x in name){this.set(x,name[x]);}return this;}var _578=this._getAttrNames(name),_579=this[_578.s];if(lang.isFunction(_579)){var _57a=_579.apply(this,Array.prototype.slice.call(arguments,1));}else{var _57b=this.focusNode&&!lang.isFunction(this.focusNode)?"focusNode":"domNode",tag=this[_57b]&&this[_57b].tagName,_57c=tag&&(_559[tag]||(_559[tag]=_55a(this[_57b]))),map=name in this.attributeMap?this.attributeMap[name]:_578.s in this?this[_578.s]:((_57c&&_578.l in _57c&&typeof _577!="function")||/^aria-|^data-|^role$/.test(name))?_57b:null;if(map!=null){this._attrToDom(name,_577,map);}this._set(name,_577);}return _57a||this;},_attrPairNames:{},_getAttrNames:function(name){var apn=this._attrPairNames;if(apn[name]){return apn[name];}var uc=name.replace(/^[a-z]|-[a-zA-Z]/g,function(c){return c.charAt(c.length-1).toUpperCase();});return (apn[name]={n:name+"Node",s:"_set"+uc+"Attr",g:"_get"+uc+"Attr",l:uc.toLowerCase()});},_set:function(name,_57d){var _57e=this[name];this[name]=_57d;if(this._created&&!_55c(_57e,_57d)){if(this._watchCallbacks){this._watchCallbacks(name,_57e,_57d);}this.emit("attrmodified-"+name,{detail:{prevValue:_57e,newValue:_57d}});}},_get:function(name){return this[name];},emit:function(type,_57f,_580){_57f=_57f||{};if(_57f.bubbles===undefined){_57f.bubbles=true;}if(_57f.cancelable===undefined){_57f.cancelable=true;}if(!_57f.detail){_57f.detail={};}_57f.detail.widget=this;var ret,_581=this["on"+type];if(_581){ret=_581.apply(this,_580?_580:[_57f]);}if(this._started&&!this._beingDestroyed){on.emit(this.domNode,type.toLowerCase(),_57f);}return ret;},on:function(type,func){var _582=this._onMap(type);if(_582){return _548.after(this,_582,func,true);}return this.own(on(this.domNode,type,func))[0];},_onMap:function(type){var ctor=this.constructor,map=ctor._onMap;if(!map){map=(ctor._onMap={});for(var attr in ctor.prototype){if(/^on/.test(attr)){map[attr.replace(/^on/,"").toLowerCase()]=attr;}}}return map[typeof type=="string"&&type.toLowerCase()];},toString:function(){return "[Widget "+this.declaredClass+", "+(this.id||"NO ID")+"]";},getChildren:function(){return this.containerNode?_557.findWidgets(this.containerNode):[];},getParent:function(){return _557.getEnclosingWidget(this.domNode.parentNode);},connect:function(obj,_583,_584){return this.own(_54a.connect(obj,_583,this,_584))[0];},disconnect:function(_585){_585.remove();},subscribe:function(t,_586){return this.own(_554.subscribe(t,lang.hitch(this,_586)))[0];},unsubscribe:function(_587){_587.remove();},isLeftToRight:function(){return this.dir?(this.dir.toLowerCase()=="ltr"):_54f.isBodyLtr(this.ownerDocument);},isFocusable:function(){return this.focus&&(_550.get(this.domNode,"display")!="none");},placeAt:function(_588,_589){var _58a=!_588.tagName&&_557.byId(_588);if(_58a&&_58a.addChild&&(!_589||typeof _589==="number")){_58a.addChild(this,_589);}else{var ref=_58a&&("domNode" in _58a)?(_58a.containerNode&&!/after|before|replace/.test(_589||"")?_58a.containerNode:_58a.domNode):dom.byId(_588,this.ownerDocument);_54e.place(this.domNode,ref,_589);if(!this._started&&(this.getParent()||{})._started){this.startup();}}return this;},defer:function(fcn,_58b){var _58c=setTimeout(lang.hitch(this,function(){if(!_58c){return;}_58c=null;if(!this._destroyed){lang.hitch(this,fcn)();}}),_58b||0);return {remove:function(){if(_58c){clearTimeout(_58c);_58c=null;}return null;}};}});if(has("dojo-bidi")){_55d.extend(_556);}return _55d;});},"dijit/Destroyable":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare"],function(_58d,_58e,_58f){return _58f("dijit.Destroyable",null,{destroy:function(_590){this._destroyed=true;},own:function(){var _591=["destroyRecursive","destroy","remove"];_58d.forEach(arguments,function(_592){var _593;var odh=_58e.before(this,"destroy",function(_594){_592[_593](_594);});var hdhs=[];function _595(){odh.remove();_58d.forEach(hdhs,function(hdh){hdh.remove();});};if(_592.then){_593="cancel";_592.then(_595,_595);}else{_58d.forEach(_591,function(_596){if(typeof _592[_596]==="function"){if(!_593){_593=_596;}hdhs.push(_58e.after(_592,_596,_595,true));}});}},this);return arguments;}});});},"dijit/_OnDijitClickMixin":function(){define(["dojo/on","dojo/_base/array","dojo/keys","dojo/_base/declare","dojo/has","./a11yclick"],function(on,_597,keys,_598,has,_599){var ret=_598("dijit._OnDijitClickMixin",null,{connect:function(obj,_59a,_59b){return this.inherited(arguments,[obj,_59a=="ondijitclick"?_599:_59a,_59b]);}});ret.a11yclick=_599;return ret;});},"dijit/a11yclick":function(){define(["dojo/keys","dojo/mouse","dojo/on","dojo/touch"],function(keys,_59c,on,_59d){function _59e(e){if((e.keyCode===keys.ENTER||e.keyCode===keys.SPACE)&&!/input|button|textarea/i.test(e.target.nodeName)){for(var node=e.target;node;node=node.parentNode){if(node.dojoClick){return true;}}}};var _59f;on(document,"keydown",function(e){if(_59e(e)){_59f=e.target;e.preventDefault();}else{_59f=null;}});on(document,"keyup",function(e){if(_59e(e)&&e.target==_59f){_59f=null;on.emit(e.target,"click",{cancelable:true,bubbles:true,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,altKey:e.altKey,_origType:e.type});}});var _5a0=function(node,_5a1){node.dojoClick=true;return on(node,"click",_5a1);};_5a0.click=_5a0;_5a0.press=function(node,_5a2){var _5a3=on(node,_59d.press,function(evt){if(evt.type=="mousedown"&&!_59c.isLeft(evt)){return;}_5a2(evt);}),_5a4=on(node,"keydown",function(evt){if(evt.keyCode===keys.ENTER||evt.keyCode===keys.SPACE){_5a2(evt);}});return {remove:function(){_5a3.remove();_5a4.remove();}};};_5a0.release=function(node,_5a5){var _5a6=on(node,_59d.release,function(evt){if(evt.type=="mouseup"&&!_59c.isLeft(evt)){return;}_5a5(evt);}),_5a7=on(node,"keyup",function(evt){if(evt.keyCode===keys.ENTER||evt.keyCode===keys.SPACE){_5a5(evt);}});return {remove:function(){_5a6.remove();_5a7.remove();}};};_5a0.move=_59d.move;return _5a0;});},"dijit/_FocusMixin":function(){define(["./focus","./_WidgetBase","dojo/_base/declare","dojo/_base/lang"],function(_5a8,_5a9,_5aa,lang){lang.extend(_5a9,{focused:false,onFocus:function(){},onBlur:function(){},_onFocus:function(){this.onFocus();},_onBlur:function(){this.onBlur();}});return _5aa("dijit._FocusMixin",null,{_focusManager:_5a8});});},"dijit/_TemplatedMixin":function(){define(["dojo/cache","dojo/_base/declare","dojo/dom-construct","dojo/_base/lang","dojo/on","dojo/sniff","dojo/string","./_AttachMixin"],function(_5ab,_5ac,_5ad,lang,on,has,_5ae,_5af){var _5b0=_5ac("dijit._TemplatedMixin",_5af,{templateString:null,templatePath:null,_skipNodeCache:false,searchContainerNode:true,_stringRepl:function(tmpl){var _5b1=this.declaredClass,_5b2=this;return _5ae.substitute(tmpl,this,function(_5b3,key){if(key.charAt(0)=="!"){_5b3=lang.getObject(key.substr(1),false,_5b2);}if(typeof _5b3=="undefined"){throw new Error(_5b1+" template:"+key);}if(_5b3==null){return "";}return key.charAt(0)=="!"?_5b3:this._escapeValue(""+_5b3);},this);},_escapeValue:function(val){return val.replace(/["'<>&]/g,function(val){return {"&":"&amp;","<":"&lt;",">":"&gt;","\"":"&quot;","'":"&#x27;"}[val];});},buildRendering:function(){if(!this._rendered){if(!this.templateString){this.templateString=_5ab(this.templatePath,{sanitize:true});}var _5b4=_5b0.getCachedTemplate(this.templateString,this._skipNodeCache,this.ownerDocument);var node;if(lang.isString(_5b4)){node=_5ad.toDom(this._stringRepl(_5b4),this.ownerDocument);if(node.nodeType!=1){throw new Error("Invalid template: "+_5b4);}}else{node=_5b4.cloneNode(true);}this.domNode=node;}this.inherited(arguments);if(!this._rendered){this._fillContent(this.srcNodeRef);}this._rendered=true;},_fillContent:function(_5b5){var dest=this.containerNode;if(_5b5&&dest){while(_5b5.hasChildNodes()){dest.appendChild(_5b5.firstChild);}}}});_5b0._templateCache={};_5b0.getCachedTemplate=function(_5b6,_5b7,doc){var _5b8=_5b0._templateCache;var key=_5b6;var _5b9=_5b8[key];if(_5b9){try{if(!_5b9.ownerDocument||_5b9.ownerDocument==(doc||document)){return _5b9;}}catch(e){}_5ad.destroy(_5b9);}_5b6=_5ae.trim(_5b6);if(_5b7||_5b6.match(/\$\{([^\}]+)\}/g)){return (_5b8[key]=_5b6);}else{var node=_5ad.toDom(_5b6,doc);if(node.nodeType!=1){throw new Error("Invalid template: "+_5b6);}return (_5b8[key]=node);}};if(has("ie")){on(window,"unload",function(){var _5ba=_5b0._templateCache;for(var key in _5ba){var _5bb=_5ba[key];if(typeof _5bb=="object"){_5ad.destroy(_5bb);}delete _5ba[key];}});}return _5b0;});},"dijit/_AttachMixin":function(){define(["require","dojo/_base/array","dojo/_base/connect","dojo/_base/declare","dojo/_base/lang","dojo/mouse","dojo/on","dojo/touch","./_WidgetBase"],function(_5bc,_5bd,_5be,_5bf,lang,_5c0,on,_5c1,_5c2){var _5c3=lang.delegate(_5c1,{"mouseenter":_5c0.enter,"mouseleave":_5c0.leave,"keypress":_5be._keypress});var _5c4;var _5c5=_5bf("dijit._AttachMixin",null,{constructor:function(){this._attachPoints=[];this._attachEvents=[];},buildRendering:function(){this.inherited(arguments);this._attachTemplateNodes(this.domNode);this._beforeFillContent();},_beforeFillContent:function(){},_attachTemplateNodes:function(_5c6){var node=_5c6;while(true){if(node.nodeType==1&&(this._processTemplateNode(node,function(n,p){return n.getAttribute(p);},this._attach)||this.searchContainerNode)&&node.firstChild){node=node.firstChild;}else{if(node==_5c6){return;}while(!node.nextSibling){node=node.parentNode;if(node==_5c6){return;}}node=node.nextSibling;}}},_processTemplateNode:function(_5c7,_5c8,_5c9){var ret=true;var _5ca=this.attachScope||this,_5cb=_5c8(_5c7,"dojoAttachPoint")||_5c8(_5c7,"data-dojo-attach-point");if(_5cb){var _5cc,_5cd=_5cb.split(/\s*,\s*/);while((_5cc=_5cd.shift())){if(lang.isArray(_5ca[_5cc])){_5ca[_5cc].push(_5c7);}else{_5ca[_5cc]=_5c7;}ret=(_5cc!="containerNode");this._attachPoints.push(_5cc);}}var _5ce=_5c8(_5c7,"dojoAttachEvent")||_5c8(_5c7,"data-dojo-attach-event");if(_5ce){var _5cf,_5d0=_5ce.split(/\s*,\s*/);var trim=lang.trim;while((_5cf=_5d0.shift())){if(_5cf){var _5d1=null;if(_5cf.indexOf(":")!=-1){var _5d2=_5cf.split(":");_5cf=trim(_5d2[0]);_5d1=trim(_5d2[1]);}else{_5cf=trim(_5cf);}if(!_5d1){_5d1=_5cf;}this._attachEvents.push(_5c9(_5c7,_5cf,lang.hitch(_5ca,_5d1)));}}}return ret;},_attach:function(node,type,func){type=type.replace(/^on/,"").toLowerCase();if(type=="dijitclick"){type=_5c4||(_5c4=_5bc("./a11yclick"));}else{type=_5c3[type]||type;}return on(node,type,func);},_detachTemplateNodes:function(){var _5d3=this.attachScope||this;_5bd.forEach(this._attachPoints,function(_5d4){delete _5d3[_5d4];});this._attachPoints=[];_5bd.forEach(this._attachEvents,function(_5d5){_5d5.remove();});this._attachEvents=[];},destroyRendering:function(){this._detachTemplateNodes();this.inherited(arguments);}});lang.extend(_5c2,{dojoAttachEvent:"",dojoAttachPoint:""});return _5c5;});},"dijit/_Container":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-construct","dojo/_base/kernel"],function(_5d6,_5d7,_5d8,_5d9){return _5d7("dijit._Container",null,{buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}},addChild:function(_5da,_5db){var _5dc=this.containerNode;if(_5db>0){_5dc=_5dc.firstChild;while(_5db>0){if(_5dc.nodeType==1){_5db--;}_5dc=_5dc.nextSibling;}if(_5dc){_5db="before";}else{_5dc=this.containerNode;_5db="last";}}_5d8.place(_5da.domNode,_5dc,_5db);if(this._started&&!_5da._started){_5da.startup();}},removeChild:function(_5dd){if(typeof _5dd=="number"){_5dd=this.getChildren()[_5dd];}if(_5dd){var node=_5dd.domNode;if(node&&node.parentNode){node.parentNode.removeChild(node);}}},hasChildren:function(){return this.getChildren().length>0;},_getSiblingOfChild:function(_5de,dir){var _5df=this.getChildren(),idx=_5d6.indexOf(_5df,_5de);return _5df[idx+dir];},getIndexOfChild:function(_5e0){return _5d6.indexOf(this.getChildren(),_5e0);}});});},"dijit/layout/_LayoutWidget":function(){define(["dojo/_base/lang","../_Widget","../_Container","../_Contained","../Viewport","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style"],function(lang,_5e1,_5e2,_5e3,_5e4,_5e5,_5e6,_5e7,_5e8){return _5e5("dijit.layout._LayoutWidget",[_5e1,_5e2,_5e3],{baseClass:"dijitLayoutContainer",isLayoutContainer:true,_setTitleAttr:null,buildRendering:function(){this.inherited(arguments);_5e6.add(this.domNode,"dijitContainer");},startup:function(){if(this._started){return;}this.inherited(arguments);var _5e9=this.getParent&&this.getParent();if(!(_5e9&&_5e9.isLayoutContainer)){this.resize();this.own(_5e4.on("resize",lang.hitch(this,"resize")));}},resize:function(_5ea,_5eb){var node=this.domNode;if(_5ea){_5e7.setMarginBox(node,_5ea);}var mb=_5eb||{};lang.mixin(mb,_5ea||{});if(!("h" in mb)||!("w" in mb)){mb=lang.mixin(_5e7.getMarginBox(node),mb);}var cs=_5e8.getComputedStyle(node);var me=_5e7.getMarginExtents(node,cs);var be=_5e7.getBorderExtents(node,cs);var bb=(this._borderBox={w:mb.w-(me.w+be.w),h:mb.h-(me.h+be.h)});var pe=_5e7.getPadExtents(node,cs);this._contentBox={l:_5e8.toPixelValue(node,cs.paddingLeft),t:_5e8.toPixelValue(node,cs.paddingTop),w:bb.w-pe.w,h:bb.h-pe.h};this.layout();},layout:function(){},_setupChild:function(_5ec){var cls=this.baseClass+"-child "+(_5ec.baseClass?this.baseClass+"-"+_5ec.baseClass:"");_5e6.add(_5ec.domNode,cls);},addChild:function(_5ed,_5ee){this.inherited(arguments);if(this._started){this._setupChild(_5ed);}},removeChild:function(_5ef){var cls=this.baseClass+"-child"+(_5ef.baseClass?" "+this.baseClass+"-"+_5ef.baseClass:"");_5e6.remove(_5ef.domNode,cls);this.inherited(arguments);}});});},"dijit/_Contained":function(){define(["dojo/_base/declare","./registry"],function(_5f0,_5f1){return _5f0("dijit._Contained",null,{_getSibling:function(_5f2){var p=this.getParent();return (p&&p._getSiblingOfChild&&p._getSiblingOfChild(this,_5f2=="previous"?-1:1))||null;},getPreviousSibling:function(){return this._getSibling("previous");},getNextSibling:function(){return this._getSibling("next");},getIndexInParent:function(){var p=this.getParent();if(!p||!p.getIndexOfChild){return -1;}return p.getIndexOfChild(this);}});});},"dijit/form/_FormWidget":function(){define(["dojo/_base/declare","dojo/sniff","dojo/_base/kernel","dojo/ready","../_Widget","../_CssStateMixin","../_TemplatedMixin","./_FormWidgetMixin"],function(_5f3,has,_5f4,_5f5,_5f6,_5f7,_5f8,_5f9){if(has("dijit-legacy-requires")){_5f5(0,function(){var _5fa=["dijit/form/_FormValueWidget"];require(_5fa);});}return _5f3("dijit.form._FormWidget",[_5f6,_5f8,_5f7,_5f9],{setDisabled:function(_5fb){_5f4.deprecated("setDisabled("+_5fb+") is deprecated. Use set('disabled',"+_5fb+") instead.","","2.0");this.set("disabled",_5fb);},setValue:function(_5fc){_5f4.deprecated("dijit.form._FormWidget:setValue("+_5fc+") is deprecated. Use set('value',"+_5fc+") instead.","","2.0");this.set("value",_5fc);},getValue:function(){_5f4.deprecated(this.declaredClass+"::getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},postMixInProperties:function(){this.nameAttrSetting=(this.name&&!has("msapp"))?("name=\""+this.name.replace(/"/g,"&quot;")+"\""):"";this.inherited(arguments);}});});},"dijit/_CssStateMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/has","dojo/_base/lang","dojo/on","dojo/domReady","dojo/touch","dojo/_base/window","./a11yclick","./registry"],function(_5fd,_5fe,dom,_5ff,has,lang,on,_600,_601,win,_602,_603){var _604=_5fe("dijit._CssStateMixin",[],{hovering:false,active:false,_applyAttributes:function(){this.inherited(arguments);_5fd.forEach(["disabled","readOnly","checked","selected","focused","state","hovering","active","_opened"],function(attr){this.watch(attr,lang.hitch(this,"_setStateClass"));},this);for(var ap in this.cssStateNodes||{}){this._trackMouseState(this[ap],this.cssStateNodes[ap]);}this._trackMouseState(this.domNode,this.baseClass);this._setStateClass();},_cssMouseEvent:function(_605){if(!this.disabled){switch(_605.type){case "mouseover":case "MSPointerOver":case "pointerover":this._set("hovering",true);this._set("active",this._mouseDown);break;case "mouseout":case "MSPointerOut":case "pointerout":this._set("hovering",false);this._set("active",false);break;case "mousedown":case "touchstart":case "MSPointerDown":case "pointerdown":case "keydown":this._set("active",true);break;case "mouseup":case "dojotouchend":case "MSPointerUp":case "pointerup":case "keyup":this._set("active",false);break;}}},_setStateClass:function(){var _606=this.baseClass.split(" ");function _607(_608){_606=_606.concat(_5fd.map(_606,function(c){return c+_608;}),"dijit"+_608);};if(!this.isLeftToRight()){_607("Rtl");}var _609=this.checked=="mixed"?"Mixed":(this.checked?"Checked":"");if(this.checked){_607(_609);}if(this.state){_607(this.state);}if(this.selected){_607("Selected");}if(this._opened){_607("Opened");}if(this.disabled){_607("Disabled");}else{if(this.readOnly){_607("ReadOnly");}else{if(this.active){_607("Active");}else{if(this.hovering){_607("Hover");}}}}if(this.focused){_607("Focused");}var tn=this.stateNode||this.domNode,_60a={};_5fd.forEach(tn.className.split(" "),function(c){_60a[c]=true;});if("_stateClasses" in this){_5fd.forEach(this._stateClasses,function(c){delete _60a[c];});}_5fd.forEach(_606,function(c){_60a[c]=true;});var _60b=[];for(var c in _60a){_60b.push(c);}tn.className=_60b.join(" ");this._stateClasses=_606;},_subnodeCssMouseEvent:function(node,_60c,evt){if(this.disabled||this.readOnly){return;}function _60d(_60e){_5ff.toggle(node,_60c+"Hover",_60e);};function _60f(_610){_5ff.toggle(node,_60c+"Active",_610);};function _611(_612){_5ff.toggle(node,_60c+"Focused",_612);};switch(evt.type){case "mouseover":case "MSPointerOver":case "pointerover":_60d(true);break;case "mouseout":case "MSPointerOut":case "pointerout":_60d(false);_60f(false);break;case "mousedown":case "touchstart":case "MSPointerDown":case "pointerdown":case "keydown":_60f(true);break;case "mouseup":case "MSPointerUp":case "pointerup":case "dojotouchend":case "keyup":_60f(false);break;case "focus":case "focusin":_611(true);break;case "blur":case "focusout":_611(false);break;}},_trackMouseState:function(node,_613){node._cssState=_613;}});_600(function(){function _614(evt,_615,_616){if(_616&&dom.isDescendant(_616,_615)){return;}for(var node=_615;node&&node!=_616;node=node.parentNode){if(node._cssState){var _617=_603.getEnclosingWidget(node);if(_617){if(node==_617.domNode){_617._cssMouseEvent(evt);}else{_617._subnodeCssMouseEvent(node,node._cssState,evt);}}}}};var body=win.body(),_618;on(body,_601.over,function(evt){_614(evt,evt.target,evt.relatedTarget);});on(body,_601.out,function(evt){_614(evt,evt.target,evt.relatedTarget);});on(body,_602.press,function(evt){_618=evt.target;_614(evt,_618);});on(body,_602.release,function(evt){_614(evt,_618);_618=null;});on(body,"focusin, focusout",function(evt){var node=evt.target;if(node._cssState&&!node.getAttribute("widgetId")){var _619=_603.getEnclosingWidget(node);if(_619){_619._subnodeCssMouseEvent(node,node._cssState,evt);}}});});return _604;});},"dijit/form/_FormWidgetMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/dom-style","dojo/_base/lang","dojo/mouse","dojo/on","dojo/sniff","dojo/window","../a11y"],function(_61a,_61b,_61c,_61d,lang,_61e,on,has,_61f,a11y){return _61b("dijit.form._FormWidgetMixin",null,{name:"",alt:"",value:"",type:"text","aria-label":"focusNode",tabIndex:"0",_setTabIndexAttr:"focusNode",disabled:false,intermediateChanges:false,scrollOnFocus:true,_setIdAttr:"focusNode",_setDisabledAttr:function(_620){this._set("disabled",_620);if(/^(button|input|select|textarea|optgroup|option|fieldset)$/i.test(this.focusNode.tagName)){_61c.set(this.focusNode,"disabled",_620);if(has("trident")&&"readOnly" in this){_61c.set(this.focusNode,"readonly",_620||this.readOnly);}}else{this.focusNode.setAttribute("aria-disabled",_620?"true":"false");}if(this.valueNode){_61c.set(this.valueNode,"disabled",_620);}if(_620){this._set("hovering",false);this._set("active",false);var _621="tabIndex" in this.attributeMap?this.attributeMap.tabIndex:("_setTabIndexAttr" in this)?this._setTabIndexAttr:"focusNode";_61a.forEach(lang.isArray(_621)?_621:[_621],function(_622){var node=this[_622];if(has("webkit")||a11y.hasDefaultTabStop(node)){node.setAttribute("tabIndex","-1");}else{node.removeAttribute("tabIndex");}},this);}else{if(this.tabIndex!=""){this.set("tabIndex",this.tabIndex);}}},_onFocus:function(by){if(by=="mouse"&&this.isFocusable()){var _623=this.own(on(this.focusNode,"focus",function(){_624.remove();_623.remove();}))[0];var _625=has("pointer-events")?"pointerup":has("MSPointer")?"MSPointerUp":has("touch-events")?"touchend, mouseup":"mouseup";var _624=this.own(on(this.ownerDocumentBody,_625,lang.hitch(this,function(evt){_624.remove();_623.remove();if(this.focused){if(evt.type=="touchend"){this.defer("focus");}else{this.focus();}}})))[0];}if(this.scrollOnFocus){this.defer(function(){_61f.scrollIntoView(this.domNode);});}this.inherited(arguments);},isFocusable:function(){return !this.disabled&&this.focusNode&&(_61d.get(this.domNode,"display")!="none");},focus:function(){if(!this.disabled&&this.focusNode.focus){try{this.focusNode.focus();}catch(e){}}},compare:function(val1,val2){if(typeof val1=="number"&&typeof val2=="number"){return (isNaN(val1)&&isNaN(val2))?0:val1-val2;}else{if(val1>val2){return 1;}else{if(val1<val2){return -1;}else{return 0;}}}},onChange:function(){},_onChangeActive:false,_handleOnChange:function(_626,_627){if(this._lastValueReported==undefined&&(_627===null||!this._onChangeActive)){this._resetValue=this._lastValueReported=_626;}this._pendingOnChange=this._pendingOnChange||(typeof _626!=typeof this._lastValueReported)||(this.compare(_626,this._lastValueReported)!=0);if((this.intermediateChanges||_627||_627===undefined)&&this._pendingOnChange){this._lastValueReported=_626;this._pendingOnChange=false;if(this._onChangeActive){if(this._onChangeHandle){this._onChangeHandle.remove();}this._onChangeHandle=this.defer(function(){this._onChangeHandle=null;this.onChange(_626);});}}},create:function(){this.inherited(arguments);this._onChangeActive=true;},destroy:function(){if(this._onChangeHandle){this._onChangeHandle.remove();this.onChange(this._lastValueReported);}this.inherited(arguments);}});});},"dijit/form/_FormValueWidget":function(){define(["dojo/_base/declare","dojo/sniff","./_FormWidget","./_FormValueMixin"],function(_628,has,_629,_62a){return _628("dijit.form._FormValueWidget",[_629,_62a],{_layoutHackIE7:function(){if(has("ie")==7){var _62b=this.domNode;var _62c=_62b.parentNode;var _62d=_62b.firstChild||_62b;var _62e=_62d.style.filter;var _62f=this;while(_62c&&_62c.clientHeight==0){(function ping(){var _630=_62f.connect(_62c,"onscroll",function(){_62f.disconnect(_630);_62d.style.filter=(new Date()).getMilliseconds();_62f.defer(function(){_62d.style.filter=_62e;});});})();_62c=_62c.parentNode;}}}});});},"dijit/form/_FormValueMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","./_FormWidgetMixin"],function(_631,_632,keys,lang,on,has,_633){return _631("dijit.form._FormValueMixin",_633,{readOnly:false,_setReadOnlyAttr:function(_634){if(has("trident")&&"disabled" in this){_632.set(this.focusNode,"readOnly",_634||this.disabled);}else{_632.set(this.focusNode,"readOnly",_634);}this._set("readOnly",_634);},postCreate:function(){this.inherited(arguments);if(this._resetValue===undefined){this._lastValueReported=this._resetValue=this.value;}},_setValueAttr:function(_635,_636){this._handleOnChange(_635,_636);},_handleOnChange:function(_637,_638){this._set("value",_637);this.inherited(arguments);},undo:function(){this._setValueAttr(this._lastValueReported,false);},reset:function(){this._hasBeenBlurred=false;this._setValueAttr(this._resetValue,true);}});});},"dijit/ColorPalette":function(){define(["require","dojo/text!./templates/ColorPalette.html","./_Widget","./_TemplatedMixin","./_PaletteMixin","./hccss","dojo/i18n","dojo/_base/Color","dojo/_base/declare","dojo/dom-construct","dojo/string","dojo/i18n!dojo/nls/colors","dojo/colors"],function(_639,_63a,_63b,_63c,_63d,has,i18n,_63e,_63f,_640,_641){var _642=_63f("dijit.ColorPalette",[_63b,_63c,_63d],{palette:"7x10",_palettes:{"7x10":[["white","seashell","cornsilk","lemonchiffon","lightyellow","palegreen","paleturquoise","lightcyan","lavender","plum"],["lightgray","pink","bisque","moccasin","khaki","lightgreen","lightseagreen","lightskyblue","cornflowerblue","violet"],["silver","lightcoral","sandybrown","orange","palegoldenrod","chartreuse","mediumturquoise","skyblue","mediumslateblue","orchid"],["gray","red","orangered","darkorange","yellow","limegreen","darkseagreen","royalblue","slateblue","mediumorchid"],["dimgray","crimson","chocolate","coral","gold","forestgreen","seagreen","blue","blueviolet","darkorchid"],["darkslategray","firebrick","saddlebrown","sienna","olive","green","darkcyan","mediumblue","darkslateblue","darkmagenta"],["black","darkred","maroon","brown","darkolivegreen","darkgreen","midnightblue","navy","indigo","purple"]],"3x4":[["white","lime","green","blue"],["silver","yellow","fuchsia","navy"],["gray","red","purple","black"]]},templateString:_63a,baseClass:"dijitColorPalette",_dyeFactory:function(_643,row,col,_644){return new this._dyeClass(_643,row,col,_644);},buildRendering:function(){this.inherited(arguments);this._dyeClass=_63f(_642._Color,{palette:this.palette});this._preparePalette(this._palettes[this.palette],i18n.getLocalization("dojo","colors",this.lang));}});_642._Color=_63f("dijit._Color",_63e,{template:"<span class='dijitInline dijitPaletteImg'>"+"<img src='${blankGif}' alt='${alt}' title='${title}' class='dijitColorPaletteSwatch' style='background-color: ${color}'/>"+"</span>",hcTemplate:"<span class='dijitInline dijitPaletteImg' style='position: relative; overflow: hidden; height: 12px; width: 14px;'>"+"<img src='${image}' alt='${alt}' title='${title}' style='position: absolute; left: ${left}px; top: ${top}px; ${size}'/>"+"</span>",_imagePaths:{"7x10":_639.toUrl("./themes/a11y/colors7x10.png"),"3x4":_639.toUrl("./themes/a11y/colors3x4.png")},constructor:function(_645,row,col,_646){this._title=_646;this._row=row;this._col=col;this.setColor(_63e.named[_645]);},getValue:function(){return this.toHex();},fillCell:function(cell,_647){var html=_641.substitute(has("highcontrast")?this.hcTemplate:this.template,{color:this.toHex(),blankGif:_647,alt:this._title,title:this._title,image:this._imagePaths[this.palette].toString(),left:this._col*-20-5,top:this._row*-20-5,size:this.palette=="7x10"?"height: 145px; width: 206px":"height: 64px; width: 86px"});_640.place(html,cell);}});return _642;});},"dijit/_PaletteMixin":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/keys","dojo/_base/lang","dojo/on","./_CssStateMixin","./a11yclick","./focus","./typematic"],function(_648,_649,_64a,_64b,keys,lang,on,_64c,_64d,_64e,_64f){var _650=_648("dijit._PaletteMixin",_64c,{defaultTimeout:500,timeoutChangeRate:0.9,value:"",_selectedCell:-1,tabIndex:"0",cellClass:"dijitPaletteCell",dyeClass:null,_dyeFactory:function(_651){var _652=typeof this.dyeClass=="string"?lang.getObject(this.dyeClass):this.dyeClass;return new _652(_651);},_preparePalette:function(_653,_654){this._cells=[];var url=this._blankGif;this.own(on(this.gridNode,_64d,lang.hitch(this,"_onCellClick")));for(var row=0;row<_653.length;row++){var _655=_64b.create("tr",{tabIndex:"-1",role:"row"},this.gridNode);for(var col=0;col<_653[row].length;col++){var _656=_653[row][col];if(_656){var _657=this._dyeFactory(_656,row,col,_654[_656]);var _658=_64b.create("td",{"class":this.cellClass,tabIndex:"-1",title:_654[_656],role:"gridcell"},_655);_657.fillCell(_658,url);_658.idx=this._cells.length;this._cells.push({node:_658,dye:_657});}}}this._xDim=_653[0].length;this._yDim=_653.length;var _659={UP_ARROW:-this._xDim,DOWN_ARROW:this._xDim,RIGHT_ARROW:this.isLeftToRight()?1:-1,LEFT_ARROW:this.isLeftToRight()?-1:1};for(var key in _659){this.own(_64f.addKeyListener(this.domNode,{keyCode:keys[key],ctrlKey:false,altKey:false,shiftKey:false},this,function(){var _65a=_659[key];return function(_65b){this._navigateByKey(_65a,_65b);};}(),this.timeoutChangeRate,this.defaultTimeout));}},postCreate:function(){this.inherited(arguments);this._setCurrent(this._cells[0].node);},focus:function(){_64e.focus(this._currentFocus);},_onCellClick:function(evt){var _65c=evt.target;while(_65c.tagName!="TD"){if(!_65c.parentNode||_65c==this.gridNode){return;}_65c=_65c.parentNode;}var _65d=this._getDye(_65c).getValue();this._setCurrent(_65c);_64e.focus(_65c);this._setValueAttr(_65d,true);evt.stopPropagation();evt.preventDefault();},_setCurrent:function(node){if("_currentFocus" in this){_649.set(this._currentFocus,"tabIndex","-1");}this._currentFocus=node;if(node){_649.set(node,"tabIndex",this.tabIndex);}},_setValueAttr:function(_65e,_65f){if(this._selectedCell>=0){_64a.remove(this._cells[this._selectedCell].node,this.cellClass+"Selected");}this._selectedCell=-1;if(_65e){for(var i=0;i<this._cells.length;i++){if(_65e==this._cells[i].dye.getValue()){this._selectedCell=i;_64a.add(this._cells[i].node,this.cellClass+"Selected");break;}}}this._set("value",this._selectedCell>=0?_65e:null);if(_65f||_65f===undefined){this.onChange(_65e);}},onChange:function(){},_navigateByKey:function(_660,_661){if(_661==-1){return;}var _662=this._currentFocus.idx+_660;if(_662<this._cells.length&&_662>-1){var _663=this._cells[_662].node;this._setCurrent(_663);this.defer(lang.hitch(_64e,"focus",_663));}},_getDye:function(cell){return this._cells[cell.idx].dye;}});return _650;});},"dojo/colors":function(){define(["./_base/kernel","./_base/lang","./_base/Color","./_base/array"],function(dojo,lang,_664,_665){var _666={};lang.setObject("dojo.colors",_666);var _667=function(m1,m2,h){if(h<0){++h;}if(h>1){--h;}var h6=6*h;if(h6<1){return m1+(m2-m1)*h6;}if(2*h<1){return m2;}if(3*h<2){return m1+(m2-m1)*(2/3-h)*6;}return m1;};dojo.colorFromRgb=_664.fromRgb=function(_668,obj){var m=_668.toLowerCase().match(/^(rgba?|hsla?)\(([\s\.\-,%0-9]+)\)/);if(m){var c=m[2].split(/\s*,\s*/),l=c.length,t=m[1],a;if((t=="rgb"&&l==3)||(t=="rgba"&&l==4)){var r=c[0];if(r.charAt(r.length-1)=="%"){a=_665.map(c,function(x){return parseFloat(x)*2.56;});if(l==4){a[3]=c[3];}return _664.fromArray(a,obj);}return _664.fromArray(c,obj);}if((t=="hsl"&&l==3)||(t=="hsla"&&l==4)){var H=((parseFloat(c[0])%360)+360)%360/360,S=parseFloat(c[1])/100,L=parseFloat(c[2])/100,m2=L<=0.5?L*(S+1):L+S-L*S,m1=2*L-m2;a=[_667(m1,m2,H+1/3)*256,_667(m1,m2,H)*256,_667(m1,m2,H-1/3)*256,1];if(l==4){a[3]=c[3];}return _664.fromArray(a,obj);}}return null;};var _669=function(c,low,high){c=Number(c);return isNaN(c)?high:c<low?low:c>high?high:c;};_664.prototype.sanitize=function(){var t=this;t.r=Math.round(_669(t.r,0,255));t.g=Math.round(_669(t.g,0,255));t.b=Math.round(_669(t.b,0,255));t.a=_669(t.a,0,1);return this;};_666.makeGrey=_664.makeGrey=function(g,a){return _664.fromArray([g,g,g,a]);};lang.mixin(_664.named,{"aliceblue":[240,248,255],"antiquewhite":[250,235,215],"aquamarine":[127,255,212],"azure":[240,255,255],"beige":[245,245,220],"bisque":[255,228,196],"blanchedalmond":[255,235,205],"blueviolet":[138,43,226],"brown":[165,42,42],"burlywood":[222,184,135],"cadetblue":[95,158,160],"chartreuse":[127,255,0],"chocolate":[210,105,30],"coral":[255,127,80],"cornflowerblue":[100,149,237],"cornsilk":[255,248,220],"crimson":[220,20,60],"cyan":[0,255,255],"darkblue":[0,0,139],"darkcyan":[0,139,139],"darkgoldenrod":[184,134,11],"darkgray":[169,169,169],"darkgreen":[0,100,0],"darkgrey":[169,169,169],"darkkhaki":[189,183,107],"darkmagenta":[139,0,139],"darkolivegreen":[85,107,47],"darkorange":[255,140,0],"darkorchid":[153,50,204],"darkred":[139,0,0],"darksalmon":[233,150,122],"darkseagreen":[143,188,143],"darkslateblue":[72,61,139],"darkslategray":[47,79,79],"darkslategrey":[47,79,79],"darkturquoise":[0,206,209],"darkviolet":[148,0,211],"deeppink":[255,20,147],"deepskyblue":[0,191,255],"dimgray":[105,105,105],"dimgrey":[105,105,105],"dodgerblue":[30,144,255],"firebrick":[178,34,34],"floralwhite":[255,250,240],"forestgreen":[34,139,34],"gainsboro":[220,220,220],"ghostwhite":[248,248,255],"gold":[255,215,0],"goldenrod":[218,165,32],"greenyellow":[173,255,47],"grey":[128,128,128],"honeydew":[240,255,240],"hotpink":[255,105,180],"indianred":[205,92,92],"indigo":[75,0,130],"ivory":[255,255,240],"khaki":[240,230,140],"lavender":[230,230,250],"lavenderblush":[255,240,245],"lawngreen":[124,252,0],"lemonchiffon":[255,250,205],"lightblue":[173,216,230],"lightcoral":[240,128,128],"lightcyan":[224,255,255],"lightgoldenrodyellow":[250,250,210],"lightgray":[211,211,211],"lightgreen":[144,238,144],"lightgrey":[211,211,211],"lightpink":[255,182,193],"lightsalmon":[255,160,122],"lightseagreen":[32,178,170],"lightskyblue":[135,206,250],"lightslategray":[119,136,153],"lightslategrey":[119,136,153],"lightsteelblue":[176,196,222],"lightyellow":[255,255,224],"limegreen":[50,205,50],"linen":[250,240,230],"magenta":[255,0,255],"mediumaquamarine":[102,205,170],"mediumblue":[0,0,205],"mediumorchid":[186,85,211],"mediumpurple":[147,112,219],"mediumseagreen":[60,179,113],"mediumslateblue":[123,104,238],"mediumspringgreen":[0,250,154],"mediumturquoise":[72,209,204],"mediumvioletred":[199,21,133],"midnightblue":[25,25,112],"mintcream":[245,255,250],"mistyrose":[255,228,225],"moccasin":[255,228,181],"navajowhite":[255,222,173],"oldlace":[253,245,230],"olivedrab":[107,142,35],"orange":[255,165,0],"orangered":[255,69,0],"orchid":[218,112,214],"palegoldenrod":[238,232,170],"palegreen":[152,251,152],"paleturquoise":[175,238,238],"palevioletred":[219,112,147],"papayawhip":[255,239,213],"peachpuff":[255,218,185],"peru":[205,133,63],"pink":[255,192,203],"plum":[221,160,221],"powderblue":[176,224,230],"rosybrown":[188,143,143],"royalblue":[65,105,225],"saddlebrown":[139,69,19],"salmon":[250,128,114],"sandybrown":[244,164,96],"seagreen":[46,139,87],"seashell":[255,245,238],"sienna":[160,82,45],"skyblue":[135,206,235],"slateblue":[106,90,205],"slategray":[112,128,144],"slategrey":[112,128,144],"snow":[255,250,250],"springgreen":[0,255,127],"steelblue":[70,130,180],"tan":[210,180,140],"thistle":[216,191,216],"tomato":[255,99,71],"turquoise":[64,224,208],"violet":[238,130,238],"wheat":[245,222,179],"whitesmoke":[245,245,245],"yellowgreen":[154,205,50]});return _664;});},"dijit/Dialog":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/Deferred","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/fx","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/ready","dojo/sniff","dojo/touch","dojo/window","dojo/dnd/Moveable","dojo/dnd/TimedMoveable","./focus","./_base/manager","./_Widget","./_TemplatedMixin","./_CssStateMixin","./form/_FormMixin","./_DialogMixin","./DialogUnderlay","./layout/ContentPane","./layout/utils","dojo/text!./templates/Dialog.html","./a11yclick","dojo/i18n!./nls/common"],function(_66a,_66b,_66c,_66d,_66e,dom,_66f,_670,_671,fx,i18n,keys,lang,on,_672,has,_673,_674,_675,_676,_677,_678,_679,_67a,_67b,_67c,_67d,_67e,_67f,_680,_681){var _682=new _66e();_682.resolve(true);function nop(){};var _683=_66d("dijit._DialogBase"+(has("dojo-bidi")?"_NoBidi":""),[_67a,_67c,_67d,_67b],{templateString:_681,baseClass:"dijitDialog",cssStateNodes:{closeButtonNode:"dijitDialogCloseIcon"},_setTitleAttr:{node:"titleNode",type:"innerHTML"},open:false,duration:_678.defaultDuration,refocus:true,autofocus:true,_firstFocusItem:null,_lastFocusItem:null,draggable:true,_setDraggableAttr:function(val){this._set("draggable",val);},maxRatio:0.9,closable:true,_setClosableAttr:function(val){this.closeButtonNode.style.display=val?"":"none";this._set("closable",val);},postMixInProperties:function(){var _684=i18n.getLocalization("dijit","common");lang.mixin(this,_684);this.inherited(arguments);},postCreate:function(){_671.set(this.domNode,{display:"none",position:"absolute"});this.ownerDocumentBody.appendChild(this.domNode);this.inherited(arguments);_66c.after(this,"onExecute",lang.hitch(this,"hide"),true);_66c.after(this,"onCancel",lang.hitch(this,"hide"),true);on(this.closeButtonNode,_673.press,function(e){e.stopPropagation();});this._modalconnects=[];},onLoad:function(){this.resize();this._position();if(this.autofocus&&_685.isTop(this)){this._getFocusItems();_677.focus(this._firstFocusItem);}this.inherited(arguments);},focus:function(){this._getFocusItems();_677.focus(this._firstFocusItem);},_endDrag:function(){var _686=_670.position(this.domNode),_687=_674.getBox(this.ownerDocument);_686.y=Math.min(Math.max(_686.y,0),(_687.h-_686.h));_686.x=Math.min(Math.max(_686.x,0),(_687.w-_686.w));this._relativePosition=_686;this._position();},_setup:function(){var node=this.domNode;if(this.titleBar&&this.draggable){this._moveable=new ((has("ie")==6)?_676:_675)(node,{handle:this.titleBar});_66c.after(this._moveable,"onMoveStop",lang.hitch(this,"_endDrag"),true);}else{_66f.add(node,"dijitDialogFixed");}this.underlayAttrs={dialogId:this.id,"class":_66b.map(this["class"].split(/\s/),function(s){return s+"_underlay";}).join(" "),_onKeyDown:lang.hitch(this,"_onKey"),ownerDocument:this.ownerDocument};},_size:function(){this.resize();},_position:function(){if(!_66f.contains(this.ownerDocumentBody,"dojoMove")){var node=this.domNode,_688=_674.getBox(this.ownerDocument),p=this._relativePosition,bb=_670.position(node),l=Math.floor(_688.l+(p?Math.min(p.x,_688.w-bb.w):(_688.w-bb.w)/2)),t=Math.floor(_688.t+(p?Math.min(p.y,_688.h-bb.h):(_688.h-bb.h)/2));_671.set(node,{left:l+"px",top:t+"px"});}},_onKey:function(evt){if(evt.keyCode==keys.TAB){this._getFocusItems();var node=evt.target;if(this._firstFocusItem==this._lastFocusItem){evt.stopPropagation();evt.preventDefault();}else{if(node==this._firstFocusItem&&evt.shiftKey){_677.focus(this._lastFocusItem);evt.stopPropagation();evt.preventDefault();}else{if(node==this._lastFocusItem&&!evt.shiftKey){_677.focus(this._firstFocusItem);evt.stopPropagation();evt.preventDefault();}}}}else{if(this.closable&&evt.keyCode==keys.ESCAPE){this.onCancel();evt.stopPropagation();evt.preventDefault();}}},show:function(){if(this.open){return _682.promise;}if(!this._started){this.startup();}if(!this._alreadyInitialized){this._setup();this._alreadyInitialized=true;}if(this._fadeOutDeferred){this._fadeOutDeferred.cancel();_685.hide(this);}var win=_674.get(this.ownerDocument);this._modalconnects.push(on(win,"scroll",lang.hitch(this,"resize",null)));this._modalconnects.push(on(this.domNode,"keydown",lang.hitch(this,"_onKey")));_671.set(this.domNode,{opacity:0,display:""});this._set("open",true);this._onShow();this.resize();this._position();var _689;this._fadeInDeferred=new _66e(lang.hitch(this,function(){_689.stop();delete this._fadeInDeferred;}));this._fadeInDeferred.then(undefined,nop);var _68a=this._fadeInDeferred.promise;_689=fx.fadeIn({node:this.domNode,duration:this.duration,beforeBegin:lang.hitch(this,function(){_685.show(this,this.underlayAttrs);}),onEnd:lang.hitch(this,function(){if(this.autofocus&&_685.isTop(this)){this._getFocusItems();_677.focus(this._firstFocusItem);}this._fadeInDeferred.resolve(true);delete this._fadeInDeferred;})}).play();return _68a;},hide:function(){if(!this._alreadyInitialized||!this.open){return _682.promise;}if(this._fadeInDeferred){this._fadeInDeferred.cancel();}var _68b;this._fadeOutDeferred=new _66e(lang.hitch(this,function(){_68b.stop();delete this._fadeOutDeferred;}));this._fadeOutDeferred.then(undefined,nop);this._fadeOutDeferred.then(lang.hitch(this,"onHide"));var _68c=this._fadeOutDeferred.promise;_68b=fx.fadeOut({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,function(){this.domNode.style.display="none";_685.hide(this);this._fadeOutDeferred.resolve(true);delete this._fadeOutDeferred;})}).play();if(this._scrollConnected){this._scrollConnected=false;}var h;while(h=this._modalconnects.pop()){h.remove();}if(this._relativePosition){delete this._relativePosition;}this._set("open",false);return _68c;},resize:function(dim){if(this.domNode.style.display!="none"){this._checkIfSingleChild();if(!dim){if(this._shrunk){if(this._singleChild){if(typeof this._singleChildOriginalStyle!="undefined"){this._singleChild.domNode.style.cssText=this._singleChildOriginalStyle;delete this._singleChildOriginalStyle;}}_66b.forEach([this.domNode,this.containerNode,this.titleBar,this.actionBarNode],function(node){if(node){_671.set(node,{position:"static",width:"auto",height:"auto"});}});this.domNode.style.position="absolute";}var _68d=_674.getBox(this.ownerDocument);_68d.w*=this.maxRatio;_68d.h*=this.maxRatio;var bb=_670.position(this.domNode);this._shrunk=false;if(bb.w>=_68d.w){dim={w:_68d.w};_670.setMarginBox(this.domNode,dim);bb=_670.position(this.domNode);this._shrunk=true;}if(bb.h>=_68d.h){if(!dim){dim={w:bb.w};}dim.h=_68d.h;this._shrunk=true;}if(dim){if(!dim.w){dim.w=bb.w;}if(!dim.h){dim.h=bb.h;}}}if(dim){_670.setMarginBox(this.domNode,dim);var _68e=[];if(this.titleBar){_68e.push({domNode:this.titleBar,region:"top"});}if(this.actionBarNode){_68e.push({domNode:this.actionBarNode,region:"bottom"});}var _68f={domNode:this.containerNode,region:"center"};_68e.push(_68f);var _690=_680.marginBox2contentBox(this.domNode,dim);_680.layoutChildren(this.domNode,_690,_68e);if(this._singleChild){var cb=_680.marginBox2contentBox(this.containerNode,_68f);this._singleChild.resize({w:cb.w,h:cb.h});}else{this.containerNode.style.overflow="auto";this._layoutChildren();}}else{this._layoutChildren();}if(!has("touch")&&!dim){this._position();}}},_layoutChildren:function(){_66b.forEach(this.getChildren(),function(_691){if(_691.resize){_691.resize();}});},destroy:function(){if(this._fadeInDeferred){this._fadeInDeferred.cancel();}if(this._fadeOutDeferred){this._fadeOutDeferred.cancel();}if(this._moveable){this._moveable.destroy();}var h;while(h=this._modalconnects.pop()){h.remove();}_685.hide(this);this.inherited(arguments);}});if(has("dojo-bidi")){_683=_66d("dijit._DialogBase",_683,{_setTitleAttr:function(_692){this._set("title",_692);this.titleNode.innerHTML=_692;this.applyTextDir(this.titleNode);},_setTextDirAttr:function(_693){if(this._created&&this.textDir!=_693){this._set("textDir",_693);this.set("title",this.title);}}});}var _694=_66d("dijit.Dialog",[_67f,_683],{});_694._DialogBase=_683;var _685=_694._DialogLevelManager={_beginZIndex:950,show:function(_695,_696){ds[ds.length-1].focus=_677.curNode;var _697=ds[ds.length-1].dialog?ds[ds.length-1].zIndex+2:_694._DialogLevelManager._beginZIndex;_671.set(_695.domNode,"zIndex",_697);_67e.show(_696,_697-1);ds.push({dialog:_695,underlayAttrs:_696,zIndex:_697});},hide:function(_698){if(ds[ds.length-1].dialog==_698){ds.pop();var pd=ds[ds.length-1];if(ds.length==1){_67e.hide();}else{_67e.show(pd.underlayAttrs,pd.zIndex-1);}if(_698.refocus){var _699=pd.focus;if(pd.dialog&&(!_699||!dom.isDescendant(_699,pd.dialog.domNode))){pd.dialog._getFocusItems();_699=pd.dialog._firstFocusItem;}if(_699){try{_699.focus();}catch(e){}}}}else{var idx=_66b.indexOf(_66b.map(ds,function(elem){return elem.dialog;}),_698);if(idx!=-1){ds.splice(idx,1);}}},isTop:function(_69a){return ds[ds.length-1].dialog==_69a;}};var ds=_694._dialogStack=[{dialog:null,focus:null,underlayAttrs:null}];_677.watch("curNode",function(attr,_69b,node){var _69c=ds[ds.length-1].dialog;if(node&&_69c&&!_69c._fadeOutDeferred&&node.ownerDocument==_69c.ownerDocument){do{if(node==_69c.domNode||_66f.contains(node,"dijitPopup")){return;}}while(node=node.parentNode);_69c.focus();}});if(has("dijit-legacy-requires")){_672(0,function(){var _69d=["dijit/TooltipDialog"];_66a(_69d);});}return _694;});},"dijit/form/_FormMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/window"],function(_69e,_69f,_6a0,lang,on,_6a1){return _69f("dijit.form._FormMixin",null,{state:"",_getDescendantFormWidgets:function(_6a2){var res=[];_69e.forEach(_6a2||this.getChildren(),function(_6a3){if("value" in _6a3){res.push(_6a3);}else{res=res.concat(this._getDescendantFormWidgets(_6a3.getChildren()));}},this);return res;},reset:function(){_69e.forEach(this._getDescendantFormWidgets(),function(_6a4){if(_6a4.reset){_6a4.reset();}});},validate:function(){var _6a5=false;return _69e.every(_69e.map(this._getDescendantFormWidgets(),function(_6a6){_6a6._hasBeenBlurred=true;var _6a7=_6a6.disabled||!_6a6.validate||_6a6.validate();if(!_6a7&&!_6a5){_6a1.scrollIntoView(_6a6.containerNode||_6a6.domNode);_6a6.focus();_6a5=true;}return _6a7;}),function(item){return item;});},setValues:function(val){_6a0.deprecated(this.declaredClass+"::setValues() is deprecated. Use set('value', val) instead.","","2.0");return this.set("value",val);},_setValueAttr:function(obj){var map={};_69e.forEach(this._getDescendantFormWidgets(),function(_6a8){if(!_6a8.name){return;}var _6a9=map[_6a8.name]||(map[_6a8.name]=[]);_6a9.push(_6a8);});for(var name in map){if(!map.hasOwnProperty(name)){continue;}var _6aa=map[name],_6ab=lang.getObject(name,false,obj);if(_6ab===undefined){continue;}_6ab=[].concat(_6ab);if(typeof _6aa[0].checked=="boolean"){_69e.forEach(_6aa,function(w){w.set("value",_69e.indexOf(_6ab,w._get("value"))!=-1);});}else{if(_6aa[0].multiple){_6aa[0].set("value",_6ab);}else{_69e.forEach(_6aa,function(w,i){w.set("value",_6ab[i]);});}}}},getValues:function(){_6a0.deprecated(this.declaredClass+"::getValues() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},_getValueAttr:function(){var obj={};_69e.forEach(this._getDescendantFormWidgets(),function(_6ac){var name=_6ac.name;if(!name||_6ac.disabled){return;}var _6ad=_6ac.get("value");if(typeof _6ac.checked=="boolean"){if(/Radio/.test(_6ac.declaredClass)){if(_6ad!==false){lang.setObject(name,_6ad,obj);}else{_6ad=lang.getObject(name,false,obj);if(_6ad===undefined){lang.setObject(name,null,obj);}}}else{var ary=lang.getObject(name,false,obj);if(!ary){ary=[];lang.setObject(name,ary,obj);}if(_6ad!==false){ary.push(_6ad);}}}else{var prev=lang.getObject(name,false,obj);if(typeof prev!="undefined"){if(lang.isArray(prev)){prev.push(_6ad);}else{lang.setObject(name,[prev,_6ad],obj);}}else{lang.setObject(name,_6ad,obj);}}});return obj;},isValid:function(){return this.state=="";},onValidStateChange:function(){},_getState:function(){var _6ae=_69e.map(this._descendants,function(w){return w.get("state")||"";});return _69e.indexOf(_6ae,"Error")>=0?"Error":_69e.indexOf(_6ae,"Incomplete")>=0?"Incomplete":"";},disconnectChildren:function(){},connectChildren:function(_6af){this._descendants=this._getDescendantFormWidgets();_69e.forEach(this._descendants,function(_6b0){if(!_6b0._started){_6b0.startup();}});if(!_6af){this._onChildChange();}},_onChildChange:function(attr){if(!attr||attr=="state"||attr=="disabled"){this._set("state",this._getState());}if(!attr||attr=="value"||attr=="disabled"||attr=="checked"){if(this._onChangeDelayTimer){this._onChangeDelayTimer.remove();}this._onChangeDelayTimer=this.defer(function(){delete this._onChangeDelayTimer;this._set("value",this.get("value"));},10);}},startup:function(){this.inherited(arguments);this._descendants=this._getDescendantFormWidgets();this.value=this.get("value");this.state=this._getState();var self=this;this.own(on(this.containerNode,"attrmodified-state, attrmodified-disabled, attrmodified-value, attrmodified-checked",function(evt){if(evt.target==self.domNode){return;}self._onChildChange(evt.type.replace("attrmodified-",""));}));this.watch("state",function(attr,_6b1,_6b2){this.onValidStateChange(_6b2=="");});},destroy:function(){this.inherited(arguments);}});});},"dijit/_DialogMixin":function(){define(["dojo/_base/declare","./a11y"],function(_6b3,a11y){return _6b3("dijit._DialogMixin",null,{actionBarTemplate:"",execute:function(){},onCancel:function(){},onExecute:function(){},_onSubmit:function(){this.onExecute();this.execute(this.get("value"));},_getFocusItems:function(){var _6b4=a11y._getTabNavigable(this.domNode);this._firstFocusItem=_6b4.lowest||_6b4.first||this.closeButtonNode||this.domNode;this._lastFocusItem=_6b4.last||_6b4.highest||this._firstFocusItem;}});});},"dijit/DialogUnderlay":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/aspect","dojo/dom-attr","dojo/dom-style","dojo/on","dojo/window","./_Widget","./_TemplatedMixin","./BackgroundIframe","./Viewport","./main"],function(_6b5,lang,_6b6,_6b7,_6b8,on,_6b9,_6ba,_6bb,_6bc,_6bd,_6be){var _6bf=_6b5("dijit.DialogUnderlay",[_6ba,_6bb],{templateString:"<div class='dijitDialogUnderlayWrapper'><div class='dijitDialogUnderlay' tabIndex='-1' data-dojo-attach-point='node'></div></div>",dialogId:"","class":"",_modalConnects:[],_setDialogIdAttr:function(id){_6b7.set(this.node,"id",id+"_underlay");this._set("dialogId",id);},_setClassAttr:function(_6c0){this.node.className="dijitDialogUnderlay "+_6c0;this._set("class",_6c0);},postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKeyDown")));this.inherited(arguments);},layout:function(){var is=this.node.style,os=this.domNode.style;os.display="none";var _6c1=_6b9.getBox(this.ownerDocument);os.top=_6c1.t+"px";os.left=_6c1.l+"px";is.width=_6c1.w+"px";is.height=_6c1.h+"px";os.display="block";},show:function(){this.domNode.style.display="block";this.open=true;this.layout();this.bgIframe=new _6bc(this.domNode);var win=_6b9.get(this.ownerDocument);this._modalConnects=[_6bd.on("resize",lang.hitch(this,"layout")),on(win,"scroll",lang.hitch(this,"layout"))];},hide:function(){this.bgIframe.destroy();delete this.bgIframe;this.domNode.style.display="none";while(this._modalConnects.length){(this._modalConnects.pop()).remove();}this.open=false;},destroy:function(){while(this._modalConnects.length){(this._modalConnects.pop()).remove();}this.inherited(arguments);},_onKeyDown:function(){}});_6bf.show=function(_6c2,_6c3){var _6c4=_6bf._singleton;if(!_6c4||_6c4._destroyed){_6c4=_6be._underlay=_6bf._singleton=new _6bf(_6c2);}else{if(_6c2){_6c4.set(_6c2);}}_6b8.set(_6c4.domNode,"zIndex",_6c3);if(!_6c4.open){_6c4.show();}};_6bf.hide=function(){var _6c5=_6bf._singleton;if(_6c5&&!_6c5._destroyed){_6c5.hide();}};return _6bf;});},"dijit/layout/ContentPane":function(){define(["dojo/_base/kernel","dojo/_base/lang","../_Widget","../_Container","./_ContentPaneResizeMixin","dojo/string","dojo/html","dojo/_base/array","dojo/_base/declare","dojo/_base/Deferred","dojo/dom","dojo/dom-attr","dojo/dom-construct","dojo/_base/xhr","dojo/i18n","dojo/when","dojo/i18n!../nls/loading"],function(_6c6,lang,_6c7,_6c8,_6c9,_6ca,html,_6cb,_6cc,_6cd,dom,_6ce,_6cf,xhr,i18n,when){return _6cc("dijit.layout.ContentPane",[_6c7,_6c8,_6c9],{href:"",content:"",extractContent:false,parseOnLoad:true,parserScope:_6c6._scopeName,preventCache:false,preload:false,refreshOnShow:false,loadingMessage:"<span class='dijitContentPaneLoading'><span class='dijitInline dijitIconLoading'></span>${loadingState}</span>",errorMessage:"<span class='dijitContentPaneError'><span class='dijitInline dijitIconError'></span>${errorState}</span>",isLoaded:false,baseClass:"dijitContentPane",ioArgs:{},onLoadDeferred:null,_setTitleAttr:null,stopParser:true,template:false,markupFactory:function(_6d0,node,ctor){var self=new ctor(_6d0,node);return !self.href&&self._contentSetter&&self._contentSetter.parseDeferred&&!self._contentSetter.parseDeferred.isFulfilled()?self._contentSetter.parseDeferred.then(function(){return self;}):self;},create:function(_6d1,_6d2){if((!_6d1||!_6d1.template)&&_6d2&&!("href" in _6d1)&&!("content" in _6d1)){_6d2=dom.byId(_6d2);var df=_6d2.ownerDocument.createDocumentFragment();while(_6d2.firstChild){df.appendChild(_6d2.firstChild);}_6d1=lang.delegate(_6d1,{content:df});}this.inherited(arguments,[_6d1,_6d2]);},postMixInProperties:function(){this.inherited(arguments);var _6d3=i18n.getLocalization("dijit","loading",this.lang);this.loadingMessage=_6ca.substitute(this.loadingMessage,_6d3);this.errorMessage=_6ca.substitute(this.errorMessage,_6d3);},buildRendering:function(){this.inherited(arguments);if(!this.containerNode){this.containerNode=this.domNode;}this.domNode.removeAttribute("title");},startup:function(){this.inherited(arguments);if(this._contentSetter){_6cb.forEach(this._contentSetter.parseResults,function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}},this);}},_startChildren:function(){_6cb.forEach(this.getChildren(),function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}});if(this._contentSetter){_6cb.forEach(this._contentSetter.parseResults,function(obj){if(!obj._started&&!obj._destroyed&&lang.isFunction(obj.startup)){obj.startup();obj._started=true;}},this);}},setHref:function(href){_6c6.deprecated("dijit.layout.ContentPane.setHref() is deprecated. Use set('href', ...) instead.","","2.0");return this.set("href",href);},_setHrefAttr:function(href){this.cancel();this.onLoadDeferred=new _6cd(lang.hitch(this,"cancel"));this.onLoadDeferred.then(lang.hitch(this,"onLoad"));this._set("href",href);if(this.preload||(this._created&&this._isShown())){this._load();}else{this._hrefChanged=true;}return this.onLoadDeferred;},setContent:function(data){_6c6.deprecated("dijit.layout.ContentPane.setContent() is deprecated. Use set('content', ...) instead.","","2.0");this.set("content",data);},_setContentAttr:function(data){this._set("href","");this.cancel();this.onLoadDeferred=new _6cd(lang.hitch(this,"cancel"));if(this._created){this.onLoadDeferred.then(lang.hitch(this,"onLoad"));}this._setContent(data||"");this._isDownloaded=false;return this.onLoadDeferred;},_getContentAttr:function(){return this.containerNode.innerHTML;},cancel:function(){if(this._xhrDfd&&(this._xhrDfd.fired==-1)){this._xhrDfd.cancel();}delete this._xhrDfd;this.onLoadDeferred=null;},destroy:function(){this.cancel();this.inherited(arguments);},destroyRecursive:function(_6d4){if(this._beingDestroyed){return;}this.inherited(arguments);},_onShow:function(){this.inherited(arguments);if(this.href){if(!this._xhrDfd&&(!this.isLoaded||this._hrefChanged||this.refreshOnShow)){return this.refresh();}}},refresh:function(){this.cancel();this.onLoadDeferred=new _6cd(lang.hitch(this,"cancel"));this.onLoadDeferred.then(lang.hitch(this,"onLoad"));this._load();return this.onLoadDeferred;},_load:function(){this._setContent(this.onDownloadStart(),true);var self=this;var _6d5={preventCache:(this.preventCache||this.refreshOnShow),url:this.href,handleAs:"text"};if(lang.isObject(this.ioArgs)){lang.mixin(_6d5,this.ioArgs);}var hand=(this._xhrDfd=(this.ioMethod||xhr.get)(_6d5)),_6d6;hand.then(function(html){_6d6=html;try{self._isDownloaded=true;return self._setContent(html,false);}catch(err){self._onError("Content",err);}},function(err){if(!hand.canceled){self._onError("Download",err);}delete self._xhrDfd;return err;}).then(function(){self.onDownloadEnd();delete self._xhrDfd;return _6d6;});delete this._hrefChanged;},_onLoadHandler:function(data){this._set("isLoaded",true);try{this.onLoadDeferred.resolve(data);}catch(e){console.error("Error "+(this.widgetId||this.id)+" running custom onLoad code: "+e.message);}},_onUnloadHandler:function(){this._set("isLoaded",false);try{this.onUnload();}catch(e){console.error("Error "+this.widgetId+" running custom onUnload code: "+e.message);}},destroyDescendants:function(_6d7){if(this.isLoaded){this._onUnloadHandler();}var _6d8=this._contentSetter;_6cb.forEach(this.getChildren(),function(_6d9){if(_6d9.destroyRecursive){_6d9.destroyRecursive(_6d7);}else{if(_6d9.destroy){_6d9.destroy(_6d7);}}_6d9._destroyed=true;});if(_6d8){_6cb.forEach(_6d8.parseResults,function(_6da){if(!_6da._destroyed){if(_6da.destroyRecursive){_6da.destroyRecursive(_6d7);}else{if(_6da.destroy){_6da.destroy(_6d7);}}_6da._destroyed=true;}});delete _6d8.parseResults;}if(!_6d7){_6cf.empty(this.containerNode);}delete this._singleChild;},_setContent:function(cont,_6db){cont=this.preprocessContent(cont);this.destroyDescendants();var _6dc=this._contentSetter;if(!(_6dc&&_6dc instanceof html._ContentSetter)){_6dc=this._contentSetter=new html._ContentSetter({node:this.containerNode,_onError:lang.hitch(this,this._onError),onContentError:lang.hitch(this,function(e){var _6dd=this.onContentError(e);try{this.containerNode.innerHTML=_6dd;}catch(e){console.error("Fatal "+this.id+" could not change content due to "+e.message,e);}})});}var _6de=lang.mixin({cleanContent:this.cleanContent,extractContent:this.extractContent,parseContent:!cont.domNode&&this.parseOnLoad,parserScope:this.parserScope,startup:false,dir:this.dir,lang:this.lang,textDir:this.textDir},this._contentSetterParams||{});var p=_6dc.set((lang.isObject(cont)&&cont.domNode)?cont.domNode:cont,_6de);var self=this;return when(p&&p.then?p:_6dc.parseDeferred,function(){delete self._contentSetterParams;if(!_6db){if(self._started){self._startChildren();self._scheduleLayout();}self._onLoadHandler(cont);}});},preprocessContent:function(_6df){return _6df;},_onError:function(type,err,_6e0){this.onLoadDeferred.reject(err);var _6e1=this["on"+type+"Error"].call(this,err);if(_6e0){console.error(_6e0,err);}else{if(_6e1){this._setContent(_6e1,true);}}},onLoad:function(){},onUnload:function(){},onDownloadStart:function(){return this.loadingMessage;},onContentError:function(){},onDownloadError:function(){return this.errorMessage;},onDownloadEnd:function(){}});});},"dijit/layout/_ContentPaneResizeMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang","dojo/query","../registry","../Viewport","./utils"],function(_6e2,_6e3,_6e4,_6e5,_6e6,lang,_6e7,_6e8,_6e9,_6ea){return _6e3("dijit.layout._ContentPaneResizeMixin",null,{doLayout:true,isLayoutContainer:true,startup:function(){if(this._started){return;}var _6eb=this.getParent();this._childOfLayoutWidget=_6eb&&_6eb.isLayoutContainer;this._needLayout=!this._childOfLayoutWidget;this.inherited(arguments);if(this._isShown()){this._onShow();}if(!this._childOfLayoutWidget){this.own(_6e9.on("resize",lang.hitch(this,"resize")));}},_checkIfSingleChild:function(){if(!this.doLayout){return;}var _6ec=[],_6ed=false;_6e7("> *",this.containerNode).some(function(node){var _6ee=_6e8.byNode(node);if(_6ee&&_6ee.resize){_6ec.push(_6ee);}else{if(!/script|link|style/i.test(node.nodeName)&&node.offsetHeight){_6ed=true;}}});this._singleChild=_6ec.length==1&&!_6ed?_6ec[0]:null;_6e4.toggle(this.containerNode,this.baseClass+"SingleChild",!!this._singleChild);},resize:function(_6ef,_6f0){this._resizeCalled=true;this._scheduleLayout(_6ef,_6f0);},_scheduleLayout:function(_6f1,_6f2){if(this._isShown()){this._layout(_6f1,_6f2);}else{this._needLayout=true;this._changeSize=_6f1;this._resultSize=_6f2;}},_layout:function(_6f3,_6f4){delete this._needLayout;if(!this._wasShown&&this.open!==false){this._onShow();}if(_6f3){_6e5.setMarginBox(this.domNode,_6f3);}var cn=this.containerNode;if(cn===this.domNode){var mb=_6f4||{};lang.mixin(mb,_6f3||{});if(!("h" in mb)||!("w" in mb)){mb=lang.mixin(_6e5.getMarginBox(cn),mb);}this._contentBox=_6ea.marginBox2contentBox(cn,mb);}else{this._contentBox=_6e5.getContentBox(cn);}this._layoutChildren();},_layoutChildren:function(){this._checkIfSingleChild();if(this._singleChild&&this._singleChild.resize){var cb=this._contentBox||_6e5.getContentBox(this.containerNode);this._singleChild.resize({w:cb.w,h:cb.h});}else{var _6f5=this.getChildren(),_6f6,i=0;while(_6f6=_6f5[i++]){if(_6f6.resize){_6f6.resize();}}}},_isShown:function(){if(this._childOfLayoutWidget){if(this._resizeCalled&&"open" in this){return this.open;}return this._resizeCalled;}else{if("open" in this){return this.open;}else{var node=this.domNode,_6f7=this.domNode.parentNode;return (node.style.display!="none")&&(node.style.visibility!="hidden")&&!_6e4.contains(node,"dijitHidden")&&_6f7&&_6f7.style&&(_6f7.style.display!="none");}}},_onShow:function(){this._wasShown=true;if(this._needLayout){this._layout(this._changeSize,this._resultSize);}this.inherited(arguments);}});});},"dijit/layout/utils":function(){define(["dojo/_base/array","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang"],function(_6f8,_6f9,_6fa,_6fb,lang){function _6fc(word){return word.substring(0,1).toUpperCase()+word.substring(1);};function size(_6fd,dim){var _6fe=_6fd.resize?_6fd.resize(dim):_6fa.setMarginBox(_6fd.domNode,dim);if(_6fe){lang.mixin(_6fd,_6fe);}else{lang.mixin(_6fd,_6fa.getMarginBox(_6fd.domNode));lang.mixin(_6fd,dim);}};var _6ff={marginBox2contentBox:function(node,mb){var cs=_6fb.getComputedStyle(node);var me=_6fa.getMarginExtents(node,cs);var pb=_6fa.getPadBorderExtents(node,cs);return {l:_6fb.toPixelValue(node,cs.paddingLeft),t:_6fb.toPixelValue(node,cs.paddingTop),w:mb.w-(me.w+pb.w),h:mb.h-(me.h+pb.h)};},layoutChildren:function(_700,dim,_701,_702,_703){dim=lang.mixin({},dim);_6f9.add(_700,"dijitLayoutContainer");_701=_6f8.filter(_701,function(item){return item.region!="center"&&item.layoutAlign!="client";}).concat(_6f8.filter(_701,function(item){return item.region=="center"||item.layoutAlign=="client";}));_6f8.forEach(_701,function(_704){var elm=_704.domNode,pos=(_704.region||_704.layoutAlign);if(!pos){throw new Error("No region setting for "+_704.id);}var _705=elm.style;_705.left=dim.l+"px";_705.top=dim.t+"px";_705.position="absolute";_6f9.add(elm,"dijitAlign"+_6fc(pos));var _706={};if(_702&&_702==_704.id){_706[_704.region=="top"||_704.region=="bottom"?"h":"w"]=_703;}if(pos=="leading"){pos=_704.isLeftToRight()?"left":"right";}if(pos=="trailing"){pos=_704.isLeftToRight()?"right":"left";}if(pos=="top"||pos=="bottom"){_706.w=dim.w;size(_704,_706);dim.h-=_704.h;if(pos=="top"){dim.t+=_704.h;}else{_705.top=dim.t+dim.h+"px";}}else{if(pos=="left"||pos=="right"){_706.h=dim.h;size(_704,_706);dim.w-=_704.w;if(pos=="left"){dim.l+=_704.w;}else{_705.left=dim.l+dim.w+"px";}}else{if(pos=="client"||pos=="center"){size(_704,dim);}}}});}};lang.setObject("dijit.layout.utils",_6ff);return _6ff;});},"dijit/form/Button":function(){define(["require","dojo/_base/declare","dojo/dom-class","dojo/has","dojo/_base/kernel","dojo/_base/lang","dojo/ready","./_FormWidget","./_ButtonMixin","dojo/text!./templates/Button.html","../a11yclick"],function(_707,_708,_709,has,_70a,lang,_70b,_70c,_70d,_70e){if(has("dijit-legacy-requires")){_70b(0,function(){var _70f=["dijit/form/DropDownButton","dijit/form/ComboButton","dijit/form/ToggleButton"];_707(_70f);});}var _710=_708("dijit.form.Button"+(has("dojo-bidi")?"_NoBidi":""),[_70c,_70d],{showLabel:true,iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitButton",templateString:_70e,_setValueAttr:"valueNode",_setNameAttr:function(name){if(this.valueNode){this.valueNode.setAttribute("name",name);}},postCreate:function(){this.inherited(arguments);this._setLabelFromContainer();},_setLabelFromContainer:function(){if(this.containerNode&&!this.label){this.label=lang.trim(this.containerNode.innerHTML);this.onLabelSet();}},_setShowLabelAttr:function(val){if(this.containerNode){_709.toggle(this.containerNode,"dijitDisplayNone",!val);}this._set("showLabel",val);},setLabel:function(_711){_70a.deprecated("dijit.form.Button.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",_711);},onLabelSet:function(){this.inherited(arguments);if(!this.showLabel&&!("title" in this.params)){this.titleNode.title=lang.trim(this.containerNode.innerText||this.containerNode.textContent||"");}}});if(has("dojo-bidi")){_710=_708("dijit.form.Button",_710,{onLabelSet:function(){this.inherited(arguments);if(this.titleNode.title){this.applyTextDir(this.titleNode,this.titleNode.title);}},_setTextDirAttr:function(_712){if(this._created&&this.textDir!=_712){this._set("textDir",_712);this._setLabelAttr(this.label);}}});}return _710;});},"dijit/form/_ButtonMixin":function(){define(["dojo/_base/declare","dojo/dom","dojo/has","../registry"],function(_713,dom,has,_714){var _715=_713("dijit.form._ButtonMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{label:"",type:"button",__onClick:function(e){e.stopPropagation();e.preventDefault();if(!this.disabled){this.valueNode.click(e);}return false;},_onClick:function(e){if(this.disabled){e.stopPropagation();e.preventDefault();return false;}if(this.onClick(e)===false){e.preventDefault();}var _716=e.defaultPrevented;if(!_716&&this.type=="submit"&&!(this.valueNode||this.focusNode).form){for(var node=this.domNode;node.parentNode;node=node.parentNode){var _717=_714.byNode(node);if(_717&&typeof _717._onSubmit=="function"){_717._onSubmit(e);e.preventDefault();_716=true;break;}}}return !_716;},postCreate:function(){this.inherited(arguments);dom.setSelectable(this.focusNode,false);},onClick:function(){return true;},_setLabelAttr:function(_718){this._set("label",_718);var _719=this.containerNode||this.focusNode;_719.innerHTML=_718;this.onLabelSet();},onLabelSet:function(){}});if(has("dojo-bidi")){_715=_713("dijit.form._ButtonMixin",_715,{onLabelSet:function(){this.inherited(arguments);var _71a=this.containerNode||this.focusNode;this.applyTextDir(_71a);}});}return _715;});},"dijit/form/CheckBox":function(){define(["require","dojo/_base/declare","dojo/dom-attr","dojo/has","dojo/query","dojo/ready","./ToggleButton","./_CheckBoxMixin","dojo/text!./templates/CheckBox.html","dojo/NodeList-dom","../a11yclick"],function(_71b,_71c,_71d,has,_71e,_71f,_720,_721,_722){if(has("dijit-legacy-requires")){_71f(0,function(){var _723=["dijit/form/RadioButton"];_71b(_723);});}return _71c("dijit.form.CheckBox",[_720,_721],{templateString:_722,baseClass:"dijitCheckBox",_setValueAttr:function(_724,_725){if(typeof _724=="string"){this.inherited(arguments);_724=true;}if(this._created){this.set("checked",_724,_725);}},_getValueAttr:function(){return this.checked&&this._get("value");},_setIconClassAttr:null,_setNameAttr:"focusNode",postMixInProperties:function(){this.inherited(arguments);this.checkedAttrSetting="";},_fillContent:function(){},_onFocus:function(){if(this.id){_71e("label[for='"+this.id+"']").addClass("dijitFocusedLabel");}this.inherited(arguments);},_onBlur:function(){if(this.id){_71e("label[for='"+this.id+"']").removeClass("dijitFocusedLabel");}this.inherited(arguments);}});});},"dijit/form/ToggleButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","./Button","./_ToggleButtonMixin"],function(_726,_727,_728,_729){return _726("dijit.form.ToggleButton",[_728,_729],{baseClass:"dijitToggleButton",setChecked:function(_72a){_727.deprecated("setChecked("+_72a+") is deprecated. Use set('checked',"+_72a+") instead.","","2.0");this.set("checked",_72a);}});});},"dijit/form/_ToggleButtonMixin":function(){define(["dojo/_base/declare","dojo/dom-attr"],function(_72b,_72c){return _72b("dijit.form._ToggleButtonMixin",null,{checked:false,_aria_attr:"aria-pressed",_onClick:function(evt){var _72d=this.checked;this._set("checked",!_72d);var ret=this.inherited(arguments);this.set("checked",ret?this.checked:_72d);return ret;},_setCheckedAttr:function(_72e,_72f){this._set("checked",_72e);var node=this.focusNode||this.domNode;if(this._created){if(_72c.get(node,"checked")!=!!_72e){_72c.set(node,"checked",!!_72e);}}node.setAttribute(this._aria_attr,String(_72e));this._handleOnChange(_72e,_72f);},postCreate:function(){this.inherited(arguments);var node=this.focusNode||this.domNode;if(this.checked){node.setAttribute("checked","checked");}if(this._resetValue===undefined){this._lastValueReported=this._resetValue=this.checked;}},reset:function(){this._hasBeenBlurred=false;this.set("checked",this.params.checked||false);}});});},"dijit/form/_CheckBoxMixin":function(){define(["dojo/_base/declare","dojo/dom-attr"],function(_730,_731){return _730("dijit.form._CheckBoxMixin",null,{type:"checkbox",value:"on",readOnly:false,_aria_attr:"aria-checked",_setReadOnlyAttr:function(_732){this._set("readOnly",_732);_731.set(this.focusNode,"readOnly",_732);},_setLabelAttr:undefined,_getSubmitValue:function(_733){return (_733==null||_733==="")?"on":_733;},_setValueAttr:function(_734){_734=this._getSubmitValue(_734);this._set("value",_734);_731.set(this.focusNode,"value",_734);},reset:function(){this.inherited(arguments);this._set("value",this._getSubmitValue(this.params.value));_731.set(this.focusNode,"value",this.value);},_onClick:function(e){if(this.readOnly){e.stopPropagation();e.preventDefault();return false;}return this.inherited(arguments);}});});},"dijit/form/ComboButton":function(){define(["dojo/_base/declare","dojo/keys","../focus","./DropDownButton","dojo/text!./templates/ComboButton.html","../a11yclick"],function(_735,keys,_736,_737,_738){return _735("dijit.form.ComboButton",_737,{templateString:_738,_setIdAttr:"",_setTabIndexAttr:["focusNode","titleNode"],_setTitleAttr:"titleNode",optionsTitle:"",baseClass:"dijitComboButton",cssStateNodes:{"buttonNode":"dijitButtonNode","titleNode":"dijitButtonContents","_popupStateNode":"dijitDownArrowButton"},_focusedNode:null,_onButtonKeyDown:function(evt){if(evt.keyCode==keys[this.isLeftToRight()?"RIGHT_ARROW":"LEFT_ARROW"]){_736.focus(this._popupStateNode);evt.stopPropagation();evt.preventDefault();}},_onArrowKeyDown:function(evt){if(evt.keyCode==keys[this.isLeftToRight()?"LEFT_ARROW":"RIGHT_ARROW"]){_736.focus(this.titleNode);evt.stopPropagation();evt.preventDefault();}},focus:function(_739){if(!this.disabled){_736.focus(_739=="start"?this.titleNode:this._popupStateNode);}}});});},"dijit/form/DropDownButton":function(){define(["dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/query","../registry","../popup","./Button","../_Container","../_HasDropDown","dojo/text!./templates/DropDownButton.html","../a11yclick"],function(_73a,_73b,lang,_73c,_73d,_73e,_73f,_740,_741,_742){return _73a("dijit.form.DropDownButton",[_73f,_740,_741],{baseClass:"dijitDropDownButton",templateString:_742,_fillContent:function(){var _743=this.srcNodeRef;var dest=this.containerNode;if(_743&&dest){while(_743.hasChildNodes()){var _744=_743.firstChild;if(_744.hasAttribute&&(_744.hasAttribute("data-dojo-type")||_744.hasAttribute("dojoType")||_744.hasAttribute("data-"+_73b._scopeName+"-type")||_744.hasAttribute(_73b._scopeName+"Type"))){this.dropDownContainer=this.ownerDocument.createElement("div");this.dropDownContainer.appendChild(_744);}else{dest.appendChild(_744);}}}},startup:function(){if(this._started){return;}if(!this.dropDown&&this.dropDownContainer){this.dropDown=_73d.byNode(this.dropDownContainer.firstChild);delete this.dropDownContainer;}if(this.dropDown){_73e.hide(this.dropDown);}this.inherited(arguments);},isLoaded:function(){var _745=this.dropDown;return (!!_745&&(!_745.href||_745.isLoaded));},loadDropDown:function(_746){var _747=this.dropDown;var _748=_747.on("load",lang.hitch(this,function(){_748.remove();_746();}));_747.refresh();},isFocusable:function(){return this.inherited(arguments)&&!this._mouseDown;}});});},"dijit/_HasDropDown":function(){define(["dojo/_base/declare","dojo/_base/Deferred","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","dojo/touch","./registry","./focus","./popup","./_FocusMixin"],function(_749,_74a,dom,_74b,_74c,_74d,_74e,has,keys,lang,on,_74f,_750,_751,_752,_753){return _749("dijit._HasDropDown",_753,{_buttonNode:null,_arrowWrapperNode:null,_popupStateNode:null,_aroundNode:null,dropDown:null,autoWidth:true,forceWidth:false,maxHeight:-1,dropDownPosition:["below","above"],_stopClickEvents:true,_onDropDownMouseDown:function(e){if(this.disabled||this.readOnly){return;}if(e.type!="MSPointerDown"){e.preventDefault();}this.own(on.once(this.ownerDocument,_74f.release,lang.hitch(this,"_onDropDownMouseUp")));this.toggleDropDown();},_onDropDownMouseUp:function(e){var _754=this.dropDown,_755=false;if(e&&this._opened){var c=_74d.position(this._buttonNode,true);if(!(e.pageX>=c.x&&e.pageX<=c.x+c.w)||!(e.pageY>=c.y&&e.pageY<=c.y+c.h)){var t=e.target;while(t&&!_755){if(_74c.contains(t,"dijitPopup")){_755=true;}else{t=t.parentNode;}}if(_755){t=e.target;if(_754.onItemClick){var _756;while(t&&!(_756=_750.byNode(t))){t=t.parentNode;}if(_756&&_756.onClick&&_756.getParent){_756.getParent().onItemClick(_756,e);}}return;}}}if(this._opened){if(_754.focus&&(_754.autoFocus!==false||(e.type=="mouseup"&&!this.hovering))){this._focusDropDownTimer=this.defer(function(){_754.focus();delete this._focusDropDownTimer;});}}else{if(this.focus){this.defer("focus");}}},_onDropDownClick:function(e){if(this._stopClickEvents){e.stopPropagation();e.preventDefault();}},buildRendering:function(){this.inherited(arguments);this._buttonNode=this._buttonNode||this.focusNode||this.domNode;this._popupStateNode=this._popupStateNode||this.focusNode||this._buttonNode;var _757={"after":this.isLeftToRight()?"Right":"Left","before":this.isLeftToRight()?"Left":"Right","above":"Up","below":"Down","left":"Left","right":"Right"}[this.dropDownPosition[0]]||this.dropDownPosition[0]||"Down";_74c.add(this._arrowWrapperNode||this._buttonNode,"dijit"+_757+"ArrowButton");},postCreate:function(){this.inherited(arguments);var _758=this.focusNode||this.domNode;this.own(on(this._buttonNode,_74f.press,lang.hitch(this,"_onDropDownMouseDown")),on(this._buttonNode,"click",lang.hitch(this,"_onDropDownClick")),on(_758,"keydown",lang.hitch(this,"_onKey")),on(_758,"keyup",lang.hitch(this,"_onKeyUp")));},destroy:function(){if(this._opened){this.closeDropDown(true);}if(this.dropDown){if(!this.dropDown._destroyed){this.dropDown.destroyRecursive();}delete this.dropDown;}this.inherited(arguments);},_onKey:function(e){if(this.disabled||this.readOnly){return;}var d=this.dropDown,_759=e.target;if(d&&this._opened&&d.handleKey){if(d.handleKey(e)===false){e.stopPropagation();e.preventDefault();return;}}if(d&&this._opened&&e.keyCode==keys.ESCAPE){this.closeDropDown();e.stopPropagation();e.preventDefault();}else{if(!this._opened&&(e.keyCode==keys.DOWN_ARROW||((e.keyCode==keys.ENTER||(e.keyCode==keys.SPACE&&(!this._searchTimer||(e.ctrlKey||e.altKey||e.metaKey))))&&((_759.tagName||"").toLowerCase()!=="input"||(_759.type&&_759.type.toLowerCase()!=="text"))))){this._toggleOnKeyUp=true;e.stopPropagation();e.preventDefault();}}},_onKeyUp:function(){if(this._toggleOnKeyUp){delete this._toggleOnKeyUp;this.toggleDropDown();var d=this.dropDown;if(d&&d.focus){this.defer(lang.hitch(d,"focus"),1);}}},_onBlur:function(){this.closeDropDown(false);this.inherited(arguments);},isLoaded:function(){return true;},loadDropDown:function(_75a){_75a();},loadAndOpenDropDown:function(){var d=new _74a(),_75b=lang.hitch(this,function(){this.openDropDown();d.resolve(this.dropDown);});if(!this.isLoaded()){this.loadDropDown(_75b);}else{_75b();}return d;},toggleDropDown:function(){if(this.disabled||this.readOnly){return;}if(!this._opened){this.loadAndOpenDropDown();}else{this.closeDropDown(true);}},openDropDown:function(){var _75c=this.dropDown,_75d=_75c.domNode,_75e=this._aroundNode||this.domNode,self=this;var _75f=_752.open({parent:this,popup:_75c,around:_75e,orient:this.dropDownPosition,maxHeight:this.maxHeight,onExecute:function(){self.closeDropDown(true);},onCancel:function(){self.closeDropDown(true);},onClose:function(){_74b.set(self._popupStateNode,"popupActive",false);_74c.remove(self._popupStateNode,"dijitHasDropDownOpen");self._set("_opened",false);}});if(this.forceWidth||(this.autoWidth&&_75e.offsetWidth>_75c._popupWrapper.offsetWidth)){var _760=_75e.offsetWidth-_75c._popupWrapper.offsetWidth;var _761={w:_75c.domNode.offsetWidth+_760};this._origStyle=_75d.style.cssText;if(lang.isFunction(_75c.resize)){_75c.resize(_761);}else{_74d.setMarginBox(_75d,_761);}if(_75f.corner[1]=="R"){_75c._popupWrapper.style.left=(_75c._popupWrapper.style.left.replace("px","")-_760)+"px";}}_74b.set(this._popupStateNode,"popupActive","true");_74c.add(this._popupStateNode,"dijitHasDropDownOpen");this._set("_opened",true);this._popupStateNode.setAttribute("aria-expanded","true");this._popupStateNode.setAttribute("aria-owns",_75c.id);if(_75d.getAttribute("role")!=="presentation"&&!_75d.getAttribute("aria-labelledby")){_75d.setAttribute("aria-labelledby",this.id);}return _75f;},closeDropDown:function(_762){if(this._focusDropDownTimer){this._focusDropDownTimer.remove();delete this._focusDropDownTimer;}if(this._opened){this._popupStateNode.setAttribute("aria-expanded","false");if(_762&&this.focus){this.focus();}_752.close(this.dropDown);this._opened=false;}if(this._origStyle){this.dropDown.domNode.style.cssText=this._origStyle;delete this._origStyle;}}});});},"dijit/form/FilteringSelect":function(){define(["dojo/_base/declare","dojo/_base/lang","dojo/when","./MappedTextBox","./ComboBoxMixin"],function(_763,lang,when,_764,_765){return _763("dijit.form.FilteringSelect",[_764,_765],{required:true,_lastDisplayedValue:"",_isValidSubset:function(){return this._opened;},isValid:function(){return !!this.item||(!this.required&&this.get("displayedValue")=="");},_refreshState:function(){if(!this.searchTimer){this.inherited(arguments);}},_callbackSetLabel:function(_766,_767,_768,_769){if((_767&&_767[this.searchAttr]!==this._lastQuery)||(!_767&&_766.length&&this.store.getIdentity(_766[0])!=this._lastQuery)){return;}if(!_766.length){this.set("value","",_769||(_769===undefined&&!this.focused),this.textbox.value,null);}else{this.set("item",_766[0],_769);}},_openResultList:function(_76a,_76b,_76c){if(_76b[this.searchAttr]!==this._lastQuery){return;}this.inherited(arguments);if(this.item===undefined){this.validate(true);}},_getValueAttr:function(){return this.valueNode.value;},_getValueField:function(){return "value";},_setValueAttr:function(_76d,_76e,_76f,item){if(!this._onChangeActive){_76e=null;}if(item===undefined){if(_76d===null||_76d===""){_76d="";if(!lang.isString(_76f)){this._setDisplayedValueAttr(_76f||"",_76e);return;}}var self=this;this._lastQuery=_76d;when(this.store.get(_76d),function(item){self._callbackSetLabel(item?[item]:[],undefined,undefined,_76e);});}else{this.valueNode.value=_76d;this.inherited(arguments,[_76d,_76e,_76f,item]);}},_setItemAttr:function(item,_770,_771){this.inherited(arguments);this._lastDisplayedValue=this.textbox.value;},_getDisplayQueryString:function(text){return text.replace(/([\\\*\?])/g,"\\$1");},_setDisplayedValueAttr:function(_772,_773){if(_772==null){_772="";}if(!this._created){if(!("displayedValue" in this.params)){return;}_773=false;}if(this.store){this.closeDropDown();var _774=lang.clone(this.query);var qs=this._getDisplayQueryString(_772),q;if(this.store._oldAPI){q=qs;}else{q=this._patternToRegExp(qs);q.toString=function(){return qs;};}this._lastQuery=_774[this.searchAttr]=q;this.textbox.value=_772;this._lastDisplayedValue=_772;this._set("displayedValue",_772);var _775=this;var _776={queryOptions:{ignoreCase:this.ignoreCase,deep:true}};lang.mixin(_776,this.fetchProperties);this._fetchHandle=this.store.query(_774,_776);when(this._fetchHandle,function(_777){_775._fetchHandle=null;_775._callbackSetLabel(_777||[],_774,_776,_773);},function(err){_775._fetchHandle=null;if(!_775._cancelingQuery){console.error("dijit.form.FilteringSelect: "+err.toString());}});}},undo:function(){this.set("displayedValue",this._lastDisplayedValue);}});});},"dijit/form/MappedTextBox":function(){define(["dojo/_base/declare","dojo/sniff","dojo/dom-construct","./ValidationTextBox"],function(_778,has,_779,_77a){return _778("dijit.form.MappedTextBox",_77a,{postMixInProperties:function(){this.inherited(arguments);this.nameAttrSetting="";},_setNameAttr:"valueNode",serialize:function(val){return val.toString?val.toString():"";},toString:function(){var val=this.filter(this.get("value"));return val!=null?(typeof val=="string"?val:this.serialize(val,this.constraints)):"";},validate:function(){this.valueNode.value=this.toString();return this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);this.valueNode=_779.place("<input type='hidden'"+((this.name&&!has("msapp"))?" name=\""+this.name.replace(/"/g,"&quot;")+"\"":"")+"/>",this.textbox,"after");},reset:function(){this.valueNode.value="";this.inherited(arguments);}});});},"dijit/form/ValidationTextBox":function(){define(["dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/i18n","./TextBox","../Tooltip","dojo/text!./templates/ValidationTextBox.html","dojo/i18n!./nls/validate"],function(_77b,_77c,lang,i18n,_77d,_77e,_77f){var _780=_77b("dijit.form.ValidationTextBox",_77d,{templateString:_77f,required:false,promptMessage:"",invalidMessage:"$_unset_$",missingMessage:"$_unset_$",message:"",constraints:{},pattern:".*",regExp:"",regExpGen:function(){},state:"",tooltipPosition:[],_deprecateRegExp:function(attr,_781){if(_781!=_780.prototype[attr]){_77c.deprecated("ValidationTextBox id="+this.id+", set('"+attr+"', ...) is deprecated. Use set('pattern', ...) instead.","","2.0");this.set("pattern",_781);}},_setRegExpGenAttr:function(_782){this._deprecateRegExp("regExpGen",_782);this._set("regExpGen",this._computeRegexp);},_setRegExpAttr:function(_783){this._deprecateRegExp("regExp",_783);},_setValueAttr:function(){this.inherited(arguments);this._refreshState();},validator:function(_784,_785){return (new RegExp("^(?:"+this._computeRegexp(_785)+")"+(this.required?"":"?")+"$")).test(_784)&&(!this.required||!this._isEmpty(_784))&&(this._isEmpty(_784)||this.parse(_784,_785)!==undefined);},_isValidSubset:function(){return this.textbox.value.search(this._partialre)==0;},isValid:function(){return this.validator(this.textbox.value,this.get("constraints"));},_isEmpty:function(_786){return (this.trim?/^\s*$/:/^$/).test(_786);},getErrorMessage:function(){var _787=this.invalidMessage=="$_unset_$"?this.messages.invalidMessage:!this.invalidMessage?this.promptMessage:this.invalidMessage;var _788=this.missingMessage=="$_unset_$"?this.messages.missingMessage:!this.missingMessage?_787:this.missingMessage;return (this.required&&this._isEmpty(this.textbox.value))?_788:_787;},getPromptMessage:function(){return this.promptMessage;},_maskValidSubsetError:true,validate:function(_789){var _78a="";var _78b=this.disabled||this.isValid(_789);if(_78b){this._maskValidSubsetError=true;}var _78c=this._isEmpty(this.textbox.value);var _78d=!_78b&&_789&&this._isValidSubset();this._set("state",_78b?"":(((((!this._hasBeenBlurred||_789)&&_78c)||_78d)&&(this._maskValidSubsetError||(_78d&&!this._hasBeenBlurred&&_789)))?"Incomplete":"Error"));this.focusNode.setAttribute("aria-invalid",this.state=="Error"?"true":"false");if(this.state=="Error"){this._maskValidSubsetError=_789&&_78d;_78a=this.getErrorMessage(_789);}else{if(this.state=="Incomplete"){_78a=this.getPromptMessage(_789);this._maskValidSubsetError=!this._hasBeenBlurred||_789;}else{if(_78c){_78a=this.getPromptMessage(_789);}}}this.set("message",_78a);return _78b;},displayMessage:function(_78e){if(_78e&&this.focused){_77e.show(_78e,this.domNode,this.tooltipPosition,!this.isLeftToRight());}else{_77e.hide(this.domNode);}},_refreshState:function(){if(this._created){this.validate(this.focused);}this.inherited(arguments);},constructor:function(_78f){this.constraints=lang.clone(this.constraints);this.baseClass+=" dijitValidationTextBox";},startup:function(){this.inherited(arguments);this._refreshState();},_setConstraintsAttr:function(_790){if(!_790.locale&&this.lang){_790.locale=this.lang;}this._set("constraints",_790);this._refreshState();},_setPatternAttr:function(_791){this._set("pattern",_791);this._refreshState();},_computeRegexp:function(_792){var p=this.pattern;if(typeof p=="function"){p=p.call(this,_792);}if(p!=this._lastRegExp){var _793="";this._lastRegExp=p;if(p!=".*"){p.replace(/\\.|\[\]|\[.*?[^\\]{1}\]|\{.*?\}|\(\?[=:!]|./g,function(re){switch(re.charAt(0)){case "{":case "+":case "?":case "*":case "^":case "$":case "|":case "(":_793+=re;break;case ")":_793+="|$)";break;default:_793+="(?:"+re+"|$)";break;}});}try{"".search(_793);}catch(e){_793=this.pattern;console.warn("RegExp error in "+this.declaredClass+": "+this.pattern);}this._partialre="^(?:"+_793+")$";}return p;},postMixInProperties:function(){this.inherited(arguments);this.messages=i18n.getLocalization("dijit.form","validate",this.lang);this._setConstraintsAttr(this.constraints);},_setDisabledAttr:function(_794){this.inherited(arguments);this._refreshState();},_setRequiredAttr:function(_795){this._set("required",_795);this.focusNode.setAttribute("aria-required",_795);this._refreshState();},_setMessageAttr:function(_796){this._set("message",_796);this.displayMessage(_796);},reset:function(){this._maskValidSubsetError=true;this.inherited(arguments);},_onBlur:function(){this.displayMessage("");this.inherited(arguments);},destroy:function(){_77e.hide(this.domNode);this.inherited(arguments);}});return _780;});},"dijit/form/TextBox":function(){define(["dojo/_base/declare","dojo/dom-construct","dojo/dom-style","dojo/_base/kernel","dojo/_base/lang","dojo/on","dojo/sniff","./_FormValueWidget","./_TextBoxMixin","dojo/text!./templates/TextBox.html","../main"],function(_797,_798,_799,_79a,lang,on,has,_79b,_79c,_79d,_79e){var _79f=_797("dijit.form.TextBox"+(has("dojo-bidi")?"_NoBidi":""),[_79b,_79c],{templateString:_79d,_singleNodeTemplate:"<input class=\"dijit dijitReset dijitLeft dijitInputField\" data-dojo-attach-point=\"textbox,focusNode\" autocomplete=\"off\" type=\"${type}\" ${!nameAttrSetting} />",_buttonInputDisabled:has("ie")?"disabled":"",baseClass:"dijitTextBox",postMixInProperties:function(){var type=this.type.toLowerCase();if(this.templateString&&this.templateString.toLowerCase()=="input"||((type=="hidden"||type=="file")&&this.templateString==this.constructor.prototype.templateString)){this.templateString=this._singleNodeTemplate;}this.inherited(arguments);},postCreate:function(){this.inherited(arguments);if(has("ie")<9){this.defer(function(){try{var s=_799.getComputedStyle(this.domNode);if(s){var ff=s.fontFamily;if(ff){var _7a0=this.domNode.getElementsByTagName("INPUT");if(_7a0){for(var i=0;i<_7a0.length;i++){_7a0[i].style.fontFamily=ff;}}}}}catch(e){}});}},_setPlaceHolderAttr:function(v){this._set("placeHolder",v);if(!this._phspan){this._attachPoints.push("_phspan");this._phspan=_798.create("span",{className:"dijitPlaceHolder dijitInputField"},this.textbox,"after");this.own(on(this._phspan,"mousedown",function(evt){evt.preventDefault();}),on(this._phspan,"touchend, pointerup, MSPointerUp",lang.hitch(this,function(){this.focus();})));}this._phspan.innerHTML="";this._phspan.appendChild(this._phspan.ownerDocument.createTextNode(v));this._updatePlaceHolder();},_onInput:function(evt){this.inherited(arguments);this._updatePlaceHolder();},_updatePlaceHolder:function(){if(this._phspan){this._phspan.style.display=(this.placeHolder&&!this.textbox.value)?"":"none";}},_setValueAttr:function(_7a1,_7a2,_7a3){this.inherited(arguments);this._updatePlaceHolder();},getDisplayedValue:function(){_79a.deprecated(this.declaredClass+"::getDisplayedValue() is deprecated. Use get('displayedValue') instead.","","2.0");return this.get("displayedValue");},setDisplayedValue:function(_7a4){_79a.deprecated(this.declaredClass+"::setDisplayedValue() is deprecated. Use set('displayedValue', ...) instead.","","2.0");this.set("displayedValue",_7a4);},_onBlur:function(e){if(this.disabled){return;}this.inherited(arguments);this._updatePlaceHolder();if(has("mozilla")){if(this.selectOnClick){this.textbox.selectionStart=this.textbox.selectionEnd=undefined;}}},_onFocus:function(by){if(this.disabled||this.readOnly){return;}this.inherited(arguments);this._updatePlaceHolder();}});if(has("ie")<9){_79f.prototype._isTextSelected=function(){var _7a5=this.ownerDocument.selection.createRange();var _7a6=_7a5.parentElement();return _7a6==this.textbox&&_7a5.text.length>0;};_79e._setSelectionRange=_79c._setSelectionRange=function(_7a7,_7a8,stop){if(_7a7.createTextRange){var r=_7a7.createTextRange();r.collapse(true);r.moveStart("character",-99999);r.moveStart("character",_7a8);r.moveEnd("character",stop-_7a8);r.select();}};}if(has("dojo-bidi")){_79f=_797("dijit.form.TextBox",_79f,{_setPlaceHolderAttr:function(v){this.inherited(arguments);this.applyTextDir(this._phspan);}});}return _79f;});},"dijit/form/_TextBoxMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/sniff","dojo/keys","dojo/_base/lang","dojo/on","../main"],function(_7a9,_7aa,dom,has,keys,lang,on,_7ab){var _7ac=_7aa("dijit.form._TextBoxMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{trim:false,uppercase:false,lowercase:false,propercase:false,maxLength:"",selectOnClick:false,placeHolder:"",_getValueAttr:function(){return this.parse(this.get("displayedValue"),this.constraints);},_setValueAttr:function(_7ad,_7ae,_7af){var _7b0;if(_7ad!==undefined){_7b0=this.filter(_7ad);if(typeof _7af!="string"){if(_7b0!==null&&((typeof _7b0!="number")||!isNaN(_7b0))){_7af=this.filter(this.format(_7b0,this.constraints));}else{_7af="";}if(this.compare(_7b0,this.filter(this.parse(_7af,this.constraints)))!=0){_7af=null;}}}if(_7af!=null&&((typeof _7af)!="number"||!isNaN(_7af))&&this.textbox.value!=_7af){this.textbox.value=_7af;this._set("displayedValue",this.get("displayedValue"));}this.inherited(arguments,[_7b0,_7ae]);},displayedValue:"",_getDisplayedValueAttr:function(){return this.filter(this.textbox.value);},_setDisplayedValueAttr:function(_7b1){if(_7b1==null){_7b1="";}else{if(typeof _7b1!="string"){_7b1=String(_7b1);}}this.textbox.value=_7b1;this._setValueAttr(this.get("value"),undefined);this._set("displayedValue",this.get("displayedValue"));},format:function(_7b2){return _7b2==null?"":(_7b2.toString?_7b2.toString():_7b2);},parse:function(_7b3){return _7b3;},_refreshState:function(){},onInput:function(){},_onInput:function(evt){this._lastInputEventValue=this.textbox.value;this._processInput(this._lastInputProducingEvent||evt);delete this._lastInputProducingEvent;if(this.intermediateChanges){this._handleOnChange(this.get("value"),false);}},_processInput:function(){this._refreshState();this._set("displayedValue",this.get("displayedValue"));},postCreate:function(){this.textbox.setAttribute("value",this.textbox.value);this.inherited(arguments);function _7b4(e){var _7b5;if(e.type=="keydown"&&e.keyCode!=229){_7b5=e.keyCode;switch(_7b5){case keys.SHIFT:case keys.ALT:case keys.CTRL:case keys.META:case keys.CAPS_LOCK:case keys.NUM_LOCK:case keys.SCROLL_LOCK:return;}if(!e.ctrlKey&&!e.metaKey&&!e.altKey){switch(_7b5){case keys.NUMPAD_0:case keys.NUMPAD_1:case keys.NUMPAD_2:case keys.NUMPAD_3:case keys.NUMPAD_4:case keys.NUMPAD_5:case keys.NUMPAD_6:case keys.NUMPAD_7:case keys.NUMPAD_8:case keys.NUMPAD_9:case keys.NUMPAD_MULTIPLY:case keys.NUMPAD_PLUS:case keys.NUMPAD_ENTER:case keys.NUMPAD_MINUS:case keys.NUMPAD_PERIOD:case keys.NUMPAD_DIVIDE:return;}if((_7b5>=65&&_7b5<=90)||(_7b5>=48&&_7b5<=57)||_7b5==keys.SPACE){return;}var _7b6=false;for(var i in keys){if(keys[i]===e.keyCode){_7b6=true;break;}}if(!_7b6){return;}}}_7b5=e.charCode>=32?String.fromCharCode(e.charCode):e.charCode;if(!_7b5){_7b5=(e.keyCode>=65&&e.keyCode<=90)||(e.keyCode>=48&&e.keyCode<=57)||e.keyCode==keys.SPACE?String.fromCharCode(e.keyCode):e.keyCode;}if(!_7b5){_7b5=229;}if(e.type=="keypress"){if(typeof _7b5!="string"){return;}if((_7b5>="a"&&_7b5<="z")||(_7b5>="A"&&_7b5<="Z")||(_7b5>="0"&&_7b5<="9")||(_7b5===" ")){if(e.ctrlKey||e.metaKey||e.altKey){return;}}}var faux={faux:true},attr;for(attr in e){if(!/^(layer[XY]|returnValue|keyLocation)$/.test(attr)){var v=e[attr];if(typeof v!="function"&&typeof v!="undefined"){faux[attr]=v;}}}lang.mixin(faux,{charOrCode:_7b5,_wasConsumed:false,preventDefault:function(){faux._wasConsumed=true;e.preventDefault();},stopPropagation:function(){e.stopPropagation();}});this._lastInputProducingEvent=faux;if(this.onInput(faux)===false){faux.preventDefault();faux.stopPropagation();}if(faux._wasConsumed){return;}if(has("ie")<=9){switch(e.keyCode){case keys.TAB:case keys.ESCAPE:case keys.DOWN_ARROW:case keys.UP_ARROW:case keys.LEFT_ARROW:case keys.RIGHT_ARROW:break;default:if(e.keyCode==keys.ENTER&&this.textbox.tagName.toLowerCase()!="textarea"){break;}this.defer(function(){if(this.textbox.value!==this._lastInputEventValue){on.emit(this.textbox,"input",{bubbles:true});}});}}};this.own(on(this.textbox,"keydown, keypress, paste, cut, compositionend",lang.hitch(this,_7b4)),on(this.textbox,"input",lang.hitch(this,"_onInput")),on(this.domNode,"keypress",function(e){e.stopPropagation();}));},_blankValue:"",filter:function(val){if(val===null){return this._blankValue;}if(typeof val!="string"){return val;}if(this.trim){val=lang.trim(val);}if(this.uppercase){val=val.toUpperCase();}if(this.lowercase){val=val.toLowerCase();}if(this.propercase){val=val.replace(/[^\s]+/g,function(word){return word.substring(0,1).toUpperCase()+word.substring(1);});}return val;},_setBlurValue:function(){this._setValueAttr(this.get("value"),true);},_onBlur:function(e){if(this.disabled){return;}this._setBlurValue();this.inherited(arguments);},_isTextSelected:function(){return this.textbox.selectionStart!=this.textbox.selectionEnd;},_onFocus:function(by){if(this.disabled||this.readOnly){return;}if(this.selectOnClick&&by=="mouse"){this._selectOnClickHandle=on.once(this.domNode,"mouseup, touchend",lang.hitch(this,function(evt){if(!this._isTextSelected()){_7ac.selectInputText(this.textbox);}}));this.own(this._selectOnClickHandle);this.defer(function(){if(this._selectOnClickHandle){this._selectOnClickHandle.remove();this._selectOnClickHandle=null;}},500);}this.inherited(arguments);this._refreshState();},reset:function(){this.textbox.value="";this.inherited(arguments);}});if(has("dojo-bidi")){_7ac=_7aa("dijit.form._TextBoxMixin",_7ac,{_setValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.focusNode);},_setDisplayedValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.focusNode);},_onInput:function(){this.applyTextDir(this.focusNode);this.inherited(arguments);}});}_7ac._setSelectionRange=_7ab._setSelectionRange=function(_7b7,_7b8,stop){if(_7b7.setSelectionRange){_7b7.setSelectionRange(_7b8,stop);}};_7ac.selectInputText=_7ab.selectInputText=function(_7b9,_7ba,stop){_7b9=dom.byId(_7b9);if(isNaN(_7ba)){_7ba=0;}if(isNaN(stop)){stop=_7b9.value?_7b9.value.length:0;}try{_7b9.focus();_7ac._setSelectionRange(_7b9,_7ba,stop);}catch(e){}};return _7ac;});},"dijit/Tooltip":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/fx","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/lang","dojo/mouse","dojo/on","dojo/sniff","./_base/manager","./place","./_Widget","./_TemplatedMixin","./BackgroundIframe","dojo/text!./templates/Tooltip.html","./main"],function(_7bb,_7bc,fx,dom,_7bd,_7be,_7bf,lang,_7c0,on,has,_7c1,_7c2,_7c3,_7c4,_7c5,_7c6,_7c7){var _7c8=_7bc("dijit._MasterTooltip",[_7c3,_7c4],{duration:_7c1.defaultDuration,templateString:_7c6,postCreate:function(){this.ownerDocumentBody.appendChild(this.domNode);this.bgIframe=new _7c5(this.domNode);this.fadeIn=fx.fadeIn({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,"_onShow")});this.fadeOut=fx.fadeOut({node:this.domNode,duration:this.duration,onEnd:lang.hitch(this,"_onHide")});},show:function(_7c9,_7ca,_7cb,rtl,_7cc,_7cd,_7ce){if(this.aroundNode&&this.aroundNode===_7ca&&this.containerNode.innerHTML==_7c9){return;}if(this.fadeOut.status()=="playing"){this._onDeck=arguments;return;}this.containerNode.innerHTML=_7c9;if(_7cc){this.set("textDir",_7cc);}this.containerNode.align=rtl?"right":"left";var pos=_7c2.around(this.domNode,_7ca,_7cb&&_7cb.length?_7cb:_7cf.defaultPosition,!rtl,lang.hitch(this,"orient"));var _7d0=pos.aroundNodePos;if(pos.corner.charAt(0)=="M"&&pos.aroundCorner.charAt(0)=="M"){this.connectorNode.style.top=_7d0.y+((_7d0.h-this.connectorNode.offsetHeight)>>1)-pos.y+"px";this.connectorNode.style.left="";}else{if(pos.corner.charAt(1)=="M"&&pos.aroundCorner.charAt(1)=="M"){this.connectorNode.style.left=_7d0.x+((_7d0.w-this.connectorNode.offsetWidth)>>1)-pos.x+"px";}else{this.connectorNode.style.left="";this.connectorNode.style.top="";}}_7bf.set(this.domNode,"opacity",0);this.fadeIn.play();this.isShowingNow=true;this.aroundNode=_7ca;this.onMouseEnter=_7cd||noop;this.onMouseLeave=_7ce||noop;},orient:function(node,_7d1,_7d2,_7d3,_7d4){this.connectorNode.style.top="";var _7d5=_7d3.h,_7d6=_7d3.w;node.className="dijitTooltip "+{"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[_7d1+"-"+_7d2];this.domNode.style.width="auto";var size=_7be.position(this.domNode);if(has("ie")||has("trident")){size.w+=2;}var _7d7=Math.min((Math.max(_7d6,1)),size.w);_7be.setMarginBox(this.domNode,{w:_7d7});if(_7d2.charAt(0)=="B"&&_7d1.charAt(0)=="B"){var bb=_7be.position(node);var _7d8=this.connectorNode.offsetHeight;if(bb.h>_7d5){var _7d9=_7d5-((_7d4.h+_7d8)>>1);this.connectorNode.style.top=_7d9+"px";this.connectorNode.style.bottom="";}else{this.connectorNode.style.bottom=Math.min(Math.max(_7d4.h/2-_7d8/2,0),bb.h-_7d8)+"px";this.connectorNode.style.top="";}}else{this.connectorNode.style.top="";this.connectorNode.style.bottom="";}return Math.max(0,size.w-_7d6);},_onShow:function(){if(has("ie")){this.domNode.style.filter="";}},hide:function(_7da){if(this._onDeck&&this._onDeck[1]==_7da){this._onDeck=null;}else{if(this.aroundNode===_7da){this.fadeIn.stop();this.isShowingNow=false;this.aroundNode=null;this.fadeOut.play();}else{}}this.onMouseEnter=this.onMouseLeave=noop;},_onHide:function(){this.domNode.style.cssText="";this.containerNode.innerHTML="";if(this._onDeck){this.show.apply(this,this._onDeck);this._onDeck=null;}}});if(has("dojo-bidi")){_7c8.extend({_setAutoTextDir:function(node){this.applyTextDir(node);_7bb.forEach(node.children,function(_7db){this._setAutoTextDir(_7db);},this);},_setTextDirAttr:function(_7dc){this._set("textDir",_7dc);if(_7dc=="auto"){this._setAutoTextDir(this.containerNode);}else{this.containerNode.dir=this.textDir;}}});}_7c7.showTooltip=function(_7dd,_7de,_7df,rtl,_7e0,_7e1,_7e2){if(_7df){_7df=_7bb.map(_7df,function(val){return {after:"after-centered",before:"before-centered"}[val]||val;});}if(!_7cf._masterTT){_7c7._masterTT=_7cf._masterTT=new _7c8();}return _7cf._masterTT.show(_7dd,_7de,_7df,rtl,_7e0,_7e1,_7e2);};_7c7.hideTooltip=function(_7e3){return _7cf._masterTT&&_7cf._masterTT.hide(_7e3);};var _7e4="DORMANT",_7e5="SHOW TIMER",_7e6="SHOWING",_7e7="HIDE TIMER";function noop(){};var _7cf=_7bc("dijit.Tooltip",_7c3,{label:"",showDelay:400,hideDelay:400,connectId:[],position:[],selector:"",_setConnectIdAttr:function(_7e8){_7bb.forEach(this._connections||[],function(_7e9){_7bb.forEach(_7e9,function(_7ea){_7ea.remove();});},this);this._connectIds=_7bb.filter(lang.isArrayLike(_7e8)?_7e8:(_7e8?[_7e8]:[]),function(id){return dom.byId(id,this.ownerDocument);},this);this._connections=_7bb.map(this._connectIds,function(id){var node=dom.byId(id,this.ownerDocument),_7eb=this.selector,_7ec=_7eb?function(_7ed){return on.selector(_7eb,_7ed);}:function(_7ee){return _7ee;},self=this;return [on(node,_7ec(_7c0.enter),function(){self._onHover(this);}),on(node,_7ec("focusin"),function(){self._onHover(this);}),on(node,_7ec(_7c0.leave),lang.hitch(self,"_onUnHover")),on(node,_7ec("focusout"),lang.hitch(self,"set","state",_7e4))];},this);this._set("connectId",_7e8);},addTarget:function(node){var id=node.id||node;if(_7bb.indexOf(this._connectIds,id)==-1){this.set("connectId",this._connectIds.concat(id));}},removeTarget:function(node){var id=node.id||node,idx=_7bb.indexOf(this._connectIds,id);if(idx>=0){this._connectIds.splice(idx,1);this.set("connectId",this._connectIds);}},buildRendering:function(){this.inherited(arguments);_7bd.add(this.domNode,"dijitTooltipData");},startup:function(){this.inherited(arguments);var ids=this.connectId;_7bb.forEach(lang.isArrayLike(ids)?ids:[ids],this.addTarget,this);},getContent:function(node){return this.label||this.domNode.innerHTML;},state:_7e4,_setStateAttr:function(val){if(this.state==val||(val==_7e5&&this.state==_7e6)||(val==_7e7&&this.state==_7e4)){return;}if(this._hideTimer){this._hideTimer.remove();delete this._hideTimer;}if(this._showTimer){this._showTimer.remove();delete this._showTimer;}switch(val){case _7e4:if(this._connectNode){_7cf.hide(this._connectNode);delete this._connectNode;this.onHide();}break;case _7e5:if(this.state!=_7e6){this._showTimer=this.defer(function(){this.set("state",_7e6);},this.showDelay);}break;case _7e6:var _7ef=this.getContent(this._connectNode);if(!_7ef){this.set("state",_7e4);return;}_7cf.show(_7ef,this._connectNode,this.position,!this.isLeftToRight(),this.textDir,lang.hitch(this,"set","state",_7e6),lang.hitch(this,"set","state",_7e7));this.onShow(this._connectNode,this.position);break;case _7e7:this._hideTimer=this.defer(function(){this.set("state",_7e4);},this.hideDelay);break;}this._set("state",val);},_onHover:function(_7f0){if(this._connectNode&&_7f0!=this._connectNode){this.set("state",_7e4);}this._connectNode=_7f0;this.set("state",_7e5);},_onUnHover:function(_7f1){this.set("state",_7e7);},open:function(_7f2){this.set("state",_7e4);this._connectNode=_7f2;this.set("state",_7e6);},close:function(){this.set("state",_7e4);},onShow:function(){},onHide:function(){},destroy:function(){this.set("state",_7e4);_7bb.forEach(this._connections||[],function(_7f3){_7bb.forEach(_7f3,function(_7f4){_7f4.remove();});},this);this.inherited(arguments);}});_7cf._MasterTooltip=_7c8;_7cf.show=_7c7.showTooltip;_7cf.hide=_7c7.hideTooltip;_7cf.defaultPosition=["after-centered","before-centered"];return _7cf;});},"dijit/form/ComboBoxMixin":function(){define(["dojo/_base/declare","dojo/Deferred","dojo/_base/kernel","dojo/_base/lang","dojo/store/util/QueryResults","./_AutoCompleterMixin","./_ComboBoxMenu","../_HasDropDown","dojo/text!./templates/DropDownBox.html"],function(_7f5,_7f6,_7f7,lang,_7f8,_7f9,_7fa,_7fb,_7fc){return _7f5("dijit.form.ComboBoxMixin",[_7fb,_7f9],{dropDownClass:_7fa,hasDownArrow:true,templateString:_7fc,baseClass:"dijitTextBox dijitComboBox",cssStateNodes:{"_buttonNode":"dijitDownArrowButton"},_setHasDownArrowAttr:function(val){this._set("hasDownArrow",val);this._buttonNode.style.display=val?"":"none";},_showResultList:function(){this.displayMessage("");this.inherited(arguments);},_setStoreAttr:function(_7fd){if(!_7fd.get){lang.mixin(_7fd,{_oldAPI:true,get:function(id){var _7fe=new _7f6();this.fetchItemByIdentity({identity:id,onItem:function(_7ff){_7fe.resolve(_7ff);},onError:function(_800){_7fe.reject(_800);}});return _7fe.promise;},query:function(_801,_802){var _803=new _7f6(function(){_804.abort&&_804.abort();});_803.total=new _7f6();var _804=this.fetch(lang.mixin({query:_801,onBegin:function(_805){_803.total.resolve(_805);},onComplete:function(_806){_803.resolve(_806);},onError:function(_807){_803.reject(_807);}},_802));return _7f8(_803);}});}this._set("store",_7fd);},postMixInProperties:function(){var _808=this.params.store||this.store;if(_808){this._setStoreAttr(_808);}this.inherited(arguments);if(!this.params.store&&this.store&&!this.store._oldAPI){var _809=this.declaredClass;lang.mixin(this.store,{getValue:function(item,attr){_7f7.deprecated(_809+".store.getValue(item, attr) is deprecated for builtin store. Use item.attr directly","","2.0");return item[attr];},getLabel:function(item){_7f7.deprecated(_809+".store.getLabel(item) is deprecated for builtin store. Use item.label directly","","2.0");return item.name;},fetch:function(args){_7f7.deprecated(_809+".store.fetch() is deprecated for builtin store.","Use store.query()","2.0");var shim=["dojo/data/ObjectStore"];require(shim,lang.hitch(this,function(_80a){new _80a({objectStore:this}).fetch(args);}));}});}},buildRendering:function(){this.inherited(arguments);this.focusNode.setAttribute("aria-autocomplete",this.autoComplete?"both":"list");}});});},"dojo/store/util/QueryResults":function(){define(["../../_base/array","../../_base/lang","../../when"],function(_80b,lang,when){var _80c=function(_80d){if(!_80d){return _80d;}var _80e=!!_80d.then;if(_80e){_80d=lang.delegate(_80d);}function _80f(_810){_80d[_810]=function(){var args=arguments;var _811=when(_80d,function(_812){Array.prototype.unshift.call(args,_812);return _80c(_80b[_810].apply(_80b,args));});if(_810!=="forEach"||_80e){return _811;}};};_80f("forEach");_80f("filter");_80f("map");if(_80d.total==null){_80d.total=when(_80d,function(_813){return _813.length;});}return _80d;};lang.setObject("dojo.store.util.QueryResults",_80c);return _80c;});},"dijit/form/_AutoCompleterMixin":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/query","dojo/regexp","dojo/sniff","./DataList","./_TextBoxMixin","./_SearchMixin"],function(_814,_815,_816,keys,lang,_817,_818,has,_819,_81a,_81b){var _81c=_815("dijit.form._AutoCompleterMixin",_81b,{item:null,autoComplete:true,highlightMatch:"first",labelAttr:"",labelType:"text",maxHeight:-1,_stopClickEvents:false,_getCaretPos:function(_81d){var pos=0;if(typeof (_81d.selectionStart)=="number"){pos=_81d.selectionStart;}else{if(has("ie")){var tr=_81d.ownerDocument.selection.createRange().duplicate();var ntr=_81d.createTextRange();tr.move("character",0);ntr.move("character",0);try{ntr.setEndPoint("EndToEnd",tr);pos=String(ntr.text).replace(/\r/g,"").length;}catch(e){}}}return pos;},_setCaretPos:function(_81e,_81f){_81f=parseInt(_81f);_81a.selectInputText(_81e,_81f,_81f);},_setDisabledAttr:function(_820){this.inherited(arguments);this.domNode.setAttribute("aria-disabled",_820?"true":"false");},_onKey:function(evt){if(evt.charCode>=32){return;}var key=evt.charCode||evt.keyCode;if(key==keys.ALT||key==keys.CTRL||key==keys.META||key==keys.SHIFT){return;}var pw=this.dropDown;var _821=null;this._abortQuery();this.inherited(arguments);if(evt.altKey||evt.ctrlKey||evt.metaKey){return;}if(this._opened){_821=pw.getHighlightedOption();}switch(key){case keys.PAGE_DOWN:case keys.DOWN_ARROW:case keys.PAGE_UP:case keys.UP_ARROW:if(this._opened){this._announceOption(_821);}evt.stopPropagation();evt.preventDefault();break;case keys.ENTER:if(_821){if(_821==pw.nextButton){this._nextSearch(1);evt.stopPropagation();evt.preventDefault();break;}else{if(_821==pw.previousButton){this._nextSearch(-1);evt.stopPropagation();evt.preventDefault();break;}}evt.stopPropagation();evt.preventDefault();}else{this._setBlurValue();this._setCaretPos(this.focusNode,this.focusNode.value.length);}case keys.TAB:var _822=this.get("displayedValue");if(pw&&(_822==pw._messages["previousMessage"]||_822==pw._messages["nextMessage"])){break;}if(_821){this._selectOption(_821);}case keys.ESCAPE:if(this._opened){this._lastQuery=null;this.closeDropDown();}break;}},_autoCompleteText:function(text){var fn=this.focusNode;_81a.selectInputText(fn,fn.value.length);var _823=this.ignoreCase?"toLowerCase":"substr";if(text[_823](0).indexOf(this.focusNode.value[_823](0))==0){var cpos=this.autoComplete?this._getCaretPos(fn):fn.value.length;if((cpos+1)>fn.value.length){fn.value=text;_81a.selectInputText(fn,cpos);}}else{fn.value=text;_81a.selectInputText(fn);}},_openResultList:function(_824,_825,_826){var _827=this.dropDown.getHighlightedOption();this.dropDown.clearResultList();if(!_824.length&&_826.start==0){this.closeDropDown();return;}this._nextSearch=this.dropDown.onPage=lang.hitch(this,function(_828){_824.nextPage(_828!==-1);this.focus();});this.dropDown.createOptions(_824,_826,lang.hitch(this,"_getMenuLabelFromItem"));this._showResultList();if("direction" in _826){if(_826.direction){this.dropDown.highlightFirstOption();}else{if(!_826.direction){this.dropDown.highlightLastOption();}}if(_827){this._announceOption(this.dropDown.getHighlightedOption());}}else{if(this.autoComplete&&!this._prev_key_backspace&&!/^[*]+$/.test(_825[this.searchAttr].toString())){this._announceOption(this.dropDown.containerNode.firstChild.nextSibling);}}},_showResultList:function(){this.closeDropDown(true);this.openDropDown();this.domNode.setAttribute("aria-expanded","true");},loadDropDown:function(){this._startSearchAll();},isLoaded:function(){return false;},closeDropDown:function(){this._abortQuery();if(this._opened){this.inherited(arguments);this.domNode.setAttribute("aria-expanded","false");}},_setBlurValue:function(){var _829=this.get("displayedValue");var pw=this.dropDown;if(pw&&(_829==pw._messages["previousMessage"]||_829==pw._messages["nextMessage"])){this._setValueAttr(this._lastValueReported,true);}else{if(typeof this.item=="undefined"){this.item=null;this.set("displayedValue",_829);}else{if(this.value!=this._lastValueReported){this._handleOnChange(this.value,true);}this._refreshState();}}this.focusNode.removeAttribute("aria-activedescendant");},_setItemAttr:function(item,_82a,_82b){var _82c="";if(item){if(!_82b){_82b=this.store._oldAPI?this.store.getValue(item,this.searchAttr):item[this.searchAttr];}_82c=this._getValueField()!=this.searchAttr?this.store.getIdentity(item):_82b;}this.set("value",_82c,_82a,_82b,item);},_announceOption:function(node){if(!node){return;}var _82d;if(node==this.dropDown.nextButton||node==this.dropDown.previousButton){_82d=node.innerHTML;this.item=undefined;this.value="";}else{var item=this.dropDown.items[node.getAttribute("item")];_82d=(this.store._oldAPI?this.store.getValue(item,this.searchAttr):item[this.searchAttr]).toString();this.set("item",item,false,_82d);}this.focusNode.value=this.focusNode.value.substring(0,this._lastInput.length);this.focusNode.setAttribute("aria-activedescendant",_816.get(node,"id"));this._autoCompleteText(_82d);},_selectOption:function(_82e){this.closeDropDown();if(_82e){this._announceOption(_82e);}this._setCaretPos(this.focusNode,this.focusNode.value.length);this._handleOnChange(this.value,true);this.focusNode.removeAttribute("aria-activedescendant");},_startSearchAll:function(){this._startSearch("");},_startSearchFromInput:function(){this.item=undefined;this.inherited(arguments);},_startSearch:function(key){if(!this.dropDown){var _82f=this.id+"_popup",_830=lang.isString(this.dropDownClass)?lang.getObject(this.dropDownClass,false):this.dropDownClass;this.dropDown=new _830({onChange:lang.hitch(this,this._selectOption),id:_82f,dir:this.dir,textDir:this.textDir});}this._lastInput=key;this.inherited(arguments);},_getValueField:function(){return this.searchAttr;},postMixInProperties:function(){this.inherited(arguments);if(!this.store&&this.srcNodeRef){var _831=this.srcNodeRef;this.store=new _819({},_831);if(!("value" in this.params)){var item=(this.item=this.store.fetchSelectedItem());if(item){var _832=this._getValueField();this.value=this.store._oldAPI?this.store.getValue(item,_832):item[_832];}}}},postCreate:function(){var _833=_817("label[for=\""+this.id+"\"]");if(_833.length){if(!_833[0].id){_833[0].id=this.id+"_label";}this.domNode.setAttribute("aria-labelledby",_833[0].id);}this.inherited(arguments);_814.after(this,"onSearch",lang.hitch(this,"_openResultList"),true);},_getMenuLabelFromItem:function(item){var _834=this.labelFunc(item,this.store),_835=this.labelType;if(this.highlightMatch!="none"&&this.labelType=="text"&&this._lastInput){_834=this.doHighlight(_834,this._lastInput);_835="html";}return {html:_835=="html",label:_834};},doHighlight:function(_836,find){var _837=(this.ignoreCase?"i":"")+(this.highlightMatch=="all"?"g":""),i=this.queryExpr.indexOf("${0}");find=_818.escapeString(find);return this._escapeHtml(_836.replace(new RegExp((i==0?"^":"")+"("+find+")"+(i==(this.queryExpr.length-4)?"$":""),_837),"\uffff$1\uffff")).replace(/\uFFFF([^\uFFFF]+)\uFFFF/g,"<span class=\"dijitComboBoxHighlightMatch\">$1</span>");},_escapeHtml:function(str){str=String(str).replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");return str;},reset:function(){this.item=null;this.inherited(arguments);},labelFunc:function(item,_838){return (_838._oldAPI?_838.getValue(item,this.labelAttr||this.searchAttr):item[this.labelAttr||this.searchAttr]).toString();},_setValueAttr:function(_839,_83a,_83b,item){this._set("item",item||null);if(_839==null){_839="";}this.inherited(arguments);}});if(has("dojo-bidi")){_81c.extend({_setTextDirAttr:function(_83c){this.inherited(arguments);if(this.dropDown){this.dropDown._set("textDir",_83c);}}});}return _81c;});},"dojo/regexp":function(){define(["./_base/kernel","./_base/lang"],function(dojo,lang){var _83d={};lang.setObject("dojo.regexp",_83d);_83d.escapeString=function(str,_83e){return str.replace(/([\.$?*|{}\(\)\[\]\\\/\+\-^])/g,function(ch){if(_83e&&_83e.indexOf(ch)!=-1){return ch;}return "\\"+ch;});};_83d.buildGroupRE=function(arr,re,_83f){if(!(arr instanceof Array)){return re(arr);}var b=[];for(var i=0;i<arr.length;i++){b.push(re(arr[i]));}return _83d.group(b.join("|"),_83f);};_83d.group=function(_840,_841){return "("+(_841?"?:":"")+_840+")";};return _83d;});},"dijit/form/DataList":function(){define(["dojo/_base/declare","dojo/dom","dojo/_base/lang","dojo/query","dojo/store/Memory","../registry"],function(_842,dom,lang,_843,_844,_845){function _846(_847){return {id:_847.value,value:_847.value,name:lang.trim(_847.innerText||_847.textContent||"")};};return _842("dijit.form.DataList",_844,{constructor:function(_848,_849){this.domNode=dom.byId(_849);lang.mixin(this,_848);if(this.id){_845.add(this);}this.domNode.style.display="none";this.inherited(arguments,[{data:_843("option",this.domNode).map(_846)}]);},destroy:function(){_845.remove(this.id);},fetchSelectedItem:function(){var _84a=_843("> option[selected]",this.domNode)[0]||_843("> option",this.domNode)[0];return _84a&&_846(_84a);}});});},"dojo/store/Memory":function(){define(["../_base/declare","./util/QueryResults","./util/SimpleQueryEngine"],function(_84b,_84c,_84d){var base=null;return _84b("dojo.store.Memory",base,{constructor:function(_84e){for(var i in _84e){this[i]=_84e[i];}this.setData(this.data||[]);},data:null,idProperty:"id",index:null,queryEngine:_84d,get:function(id){return this.data[this.index[id]];},getIdentity:function(_84f){return _84f[this.idProperty];},put:function(_850,_851){var data=this.data,_852=this.index,_853=this.idProperty;var id=_850[_853]=(_851&&"id" in _851)?_851.id:_853 in _850?_850[_853]:Math.random();if(id in _852){if(_851&&_851.overwrite===false){throw new Error("Object already exists");}data[_852[id]]=_850;}else{_852[id]=data.push(_850)-1;}return id;},add:function(_854,_855){(_855=_855||{}).overwrite=false;return this.put(_854,_855);},remove:function(id){var _856=this.index;var data=this.data;if(id in _856){data.splice(_856[id],1);this.setData(data);return true;}},query:function(_857,_858){return _84c(this.queryEngine(_857,_858)(this.data));},setData:function(data){if(data.items){this.idProperty=data.identifier||this.idProperty;data=this.data=data.items;}else{this.data=data;}this.index={};for(var i=0,l=data.length;i<l;i++){this.index[data[i][this.idProperty]]=i;}}});});},"dojo/store/util/SimpleQueryEngine":function(){define(["../../_base/array"],function(_859){return function(_85a,_85b){switch(typeof _85a){default:throw new Error("Can not query with a "+typeof _85a);case "object":case "undefined":var _85c=_85a;_85a=function(_85d){for(var key in _85c){var _85e=_85c[key];if(_85e&&_85e.test){if(!_85e.test(_85d[key],_85d)){return false;}}else{if(_85e!=_85d[key]){return false;}}}return true;};break;case "string":if(!this[_85a]){throw new Error("No filter function "+_85a+" was found in store");}_85a=this[_85a];case "function":}function _85f(_860){var _861=_859.filter(_860,_85a);var _862=_85b&&_85b.sort;if(_862){_861.sort(typeof _862=="function"?_862:function(a,b){for(var sort,i=0;sort=_862[i];i++){var _863=a[sort.attribute];var _864=b[sort.attribute];_863=_863!=null?_863.valueOf():_863;_864=_864!=null?_864.valueOf():_864;if(_863!=_864){return !!sort.descending==(_863==null||_863>_864)?-1:1;}}return 0;});}if(_85b&&(_85b.start||_85b.count)){var _865=_861.length;_861=_861.slice(_85b.start||0,(_85b.start||0)+(_85b.count||Infinity));_861.total=_865;}return _861;};_85f.matches=_85a;return _85f;};});},"dijit/form/_SearchMixin":function(){define(["dojo/_base/declare","dojo/keys","dojo/_base/lang","dojo/query","dojo/string","dojo/when","../registry"],function(_866,keys,lang,_867,_868,when,_869){return _866("dijit.form._SearchMixin",null,{pageSize:Infinity,store:null,fetchProperties:{},query:{},list:"",_setListAttr:function(list){this._set("list",list);},searchDelay:200,searchAttr:"name",queryExpr:"${0}*",ignoreCase:true,_patternToRegExp:function(_86a){return new RegExp("^"+_86a.replace(/(\\.)|(\*)|(\?)|\W/g,function(str,_86b,star,_86c){return star?".*":_86c?".":_86b?_86b:"\\"+str;})+"$",this.ignoreCase?"mi":"m");},_abortQuery:function(){if(this.searchTimer){this.searchTimer=this.searchTimer.remove();}if(this._queryDeferHandle){this._queryDeferHandle=this._queryDeferHandle.remove();}if(this._fetchHandle){if(this._fetchHandle.abort){this._cancelingQuery=true;this._fetchHandle.abort();this._cancelingQuery=false;}if(this._fetchHandle.cancel){this._cancelingQuery=true;this._fetchHandle.cancel();this._cancelingQuery=false;}this._fetchHandle=null;}},_processInput:function(evt){if(this.disabled||this.readOnly){return;}var key=evt.charOrCode;this._prev_key_backspace=false;if(key===keys.DELETE||key===keys.BACKSPACE){this._prev_key_backspace=true;this._maskValidSubsetError=true;}if(!this.store){this.onSearch();}else{this.searchTimer=this.defer("_startSearchFromInput",1);}},onSearch:function(){},_startSearchFromInput:function(){this._startSearch(this.focusNode.value);},_startSearch:function(text){this._abortQuery();var _86d=this,_867=lang.clone(this.query),_86e={start:0,count:this.pageSize,queryOptions:{ignoreCase:this.ignoreCase,deep:true}},qs=_868.substitute(this.queryExpr,[text.replace(/([\\\*\?])/g,"\\$1")]),q,_86f=function(){var _870=_86d._fetchHandle=_86d.store.query(_867,_86e);if(_86d.disabled||_86d.readOnly||(q!==_86d._lastQuery)){return;}when(_870,function(res){_86d._fetchHandle=null;if(!_86d.disabled&&!_86d.readOnly&&(q===_86d._lastQuery)){when(_870.total,function(_871){res.total=_871;var _872=_86d.pageSize;if(isNaN(_872)||_872>res.total){_872=res.total;}res.nextPage=function(_873){_86e.direction=_873=_873!==false;_86e.count=_872;if(_873){_86e.start+=res.length;if(_86e.start>=res.total){_86e.count=0;}}else{_86e.start-=_872;if(_86e.start<0){_86e.count=Math.max(_872+_86e.start,0);_86e.start=0;}}if(_86e.count<=0){res.length=0;_86d.onSearch(res,_867,_86e);}else{_86f();}};_86d.onSearch(res,_867,_86e);});}},function(err){_86d._fetchHandle=null;if(!_86d._cancelingQuery){console.error(_86d.declaredClass+" "+err.toString());}});};lang.mixin(_86e,this.fetchProperties);if(this.store._oldAPI){q=qs;}else{q=this._patternToRegExp(qs);q.toString=function(){return qs;};}this._lastQuery=_867[this.searchAttr]=q;this._queryDeferHandle=this.defer(_86f,this.searchDelay);},constructor:function(){this.query={};this.fetchProperties={};},postMixInProperties:function(){if(!this.store){var list=this.list;if(list){this.store=_869.byId(list);}}this.inherited(arguments);}});});},"dijit/form/_ComboBoxMenu":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/dom-style","dojo/keys","../_WidgetBase","../_TemplatedMixin","./_ComboBoxMenuMixin","./_ListMouseMixin"],function(_874,_875,_876,keys,_877,_878,_879,_87a){return _874("dijit.form._ComboBoxMenu",[_877,_878,_87a,_879],{templateString:"<div class='dijitReset dijitMenu' data-dojo-attach-point='containerNode' style='overflow: auto; overflow-x: hidden;' role='listbox'>"+"<div class='dijitMenuItem dijitMenuPreviousButton' data-dojo-attach-point='previousButton' role='option'></div>"+"<div class='dijitMenuItem dijitMenuNextButton' data-dojo-attach-point='nextButton' role='option'></div>"+"</div>",baseClass:"dijitComboBoxMenu",postCreate:function(){this.inherited(arguments);if(!this.isLeftToRight()){_875.add(this.previousButton,"dijitMenuItemRtl");_875.add(this.nextButton,"dijitMenuItemRtl");}this.containerNode.setAttribute("role","listbox");},_createMenuItem:function(){var item=this.ownerDocument.createElement("div");item.className="dijitReset dijitMenuItem"+(this.isLeftToRight()?"":" dijitMenuItemRtl");item.setAttribute("role","option");return item;},onHover:function(node){_875.add(node,"dijitMenuItemHover");},onUnhover:function(node){_875.remove(node,"dijitMenuItemHover");},onSelect:function(node){_875.add(node,"dijitMenuItemSelected");},onDeselect:function(node){_875.remove(node,"dijitMenuItemSelected");},_page:function(up){var _87b=0;var _87c=this.domNode.scrollTop;var _87d=_876.get(this.domNode,"height");if(!this.getHighlightedOption()){this.selectNextNode();}while(_87b<_87d){var _87e=this.getHighlightedOption();if(up){if(!_87e.previousSibling||_87e.previousSibling.style.display=="none"){break;}this.selectPreviousNode();}else{if(!_87e.nextSibling||_87e.nextSibling.style.display=="none"){break;}this.selectNextNode();}var _87f=this.domNode.scrollTop;_87b+=(_87f-_87c)*(up?-1:1);_87c=_87f;}},handleKey:function(evt){switch(evt.keyCode){case keys.DOWN_ARROW:this.selectNextNode();return false;case keys.PAGE_DOWN:this._page(false);return false;case keys.UP_ARROW:this.selectPreviousNode();return false;case keys.PAGE_UP:this._page(true);return false;default:return true;}}});});},"dijit/form/_ComboBoxMenuMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/has","dojo/i18n","dojo/i18n!./nls/ComboBox"],function(_880,_881,_882,has,i18n){var _883=_881("dijit.form._ComboBoxMenuMixin"+(has("dojo-bidi")?"_NoBidi":""),null,{_messages:null,postMixInProperties:function(){this.inherited(arguments);this._messages=i18n.getLocalization("dijit.form","ComboBox",this.lang);},buildRendering:function(){this.inherited(arguments);this.previousButton.innerHTML=this._messages["previousMessage"];this.nextButton.innerHTML=this._messages["nextMessage"];},_setValueAttr:function(_884){this._set("value",_884);this.onChange(_884);},onClick:function(node){if(node==this.previousButton){this._setSelectedAttr(null);this.onPage(-1);}else{if(node==this.nextButton){this._setSelectedAttr(null);this.onPage(1);}else{this.onChange(node);}}},onChange:function(){},onPage:function(){},onClose:function(){this._setSelectedAttr(null);},_createOption:function(item,_885){var _886=this._createMenuItem();var _887=_885(item);if(_887.html){_886.innerHTML=_887.label;}else{_886.appendChild(_886.ownerDocument.createTextNode(_887.label));}if(_886.innerHTML==""){_886.innerHTML="&#160;";}return _886;},createOptions:function(_888,_889,_88a){this.items=_888;this.previousButton.style.display=(_889.start==0)?"none":"";_882.set(this.previousButton,"id",this.id+"_prev");_880.forEach(_888,function(item,i){var _88b=this._createOption(item,_88a);_88b.setAttribute("item",i);_882.set(_88b,"id",this.id+i);this.nextButton.parentNode.insertBefore(_88b,this.nextButton);},this);var _88c=false;if(_888.total&&!_888.total.then&&_888.total!=-1){if((_889.start+_889.count)<_888.total){_88c=true;}else{if((_889.start+_889.count)>_888.total&&_889.count==_888.length){_88c=true;}}}else{if(_889.count==_888.length){_88c=true;}}this.nextButton.style.display=_88c?"":"none";_882.set(this.nextButton,"id",this.id+"_next");},clearResultList:function(){var _88d=this.containerNode;while(_88d.childNodes.length>2){_88d.removeChild(_88d.childNodes[_88d.childNodes.length-2]);}this._setSelectedAttr(null);},highlightFirstOption:function(){this.selectFirstNode();},highlightLastOption:function(){this.selectLastNode();},selectFirstNode:function(){this.inherited(arguments);if(this.getHighlightedOption()==this.previousButton){this.selectNextNode();}},selectLastNode:function(){this.inherited(arguments);if(this.getHighlightedOption()==this.nextButton){this.selectPreviousNode();}},getHighlightedOption:function(){return this.selected;}});if(has("dojo-bidi")){_883=_881("dijit.form._ComboBoxMenuMixin",_883,{_createOption:function(){var _88e=this.inherited(arguments);this.applyTextDir(_88e);return _88e;}});}return _883;});},"dijit/form/_ListMouseMixin":function(){define(["dojo/_base/declare","dojo/on","dojo/touch","./_ListBase"],function(_88f,on,_890,_891){return _88f("dijit.form._ListMouseMixin",_891,{postCreate:function(){this.inherited(arguments);this.domNode.dojoClick=true;this._listConnect("click","_onClick");this._listConnect("mousedown","_onMouseDown");this._listConnect("mouseup","_onMouseUp");this._listConnect("mouseover","_onMouseOver");this._listConnect("mouseout","_onMouseOut");},_onClick:function(evt,_892){this._setSelectedAttr(_892,false);if(this._deferredClick){this._deferredClick.remove();}this._deferredClick=this.defer(function(){this._deferredClick=null;this.onClick(_892);});},_onMouseDown:function(evt,_893){if(this._hoveredNode){this.onUnhover(this._hoveredNode);this._hoveredNode=null;}this._isDragging=true;this._setSelectedAttr(_893,false);},_onMouseUp:function(evt,_894){this._isDragging=false;var _895=this.selected;var _896=this._hoveredNode;if(_895&&_894==_895){this.defer(function(){this._onClick(evt,_895);});}else{if(_896){this.defer(function(){this._onClick(evt,_896);});}}},_onMouseOut:function(evt,_897){if(this._hoveredNode){this.onUnhover(this._hoveredNode);this._hoveredNode=null;}if(this._isDragging){this._cancelDrag=(new Date()).getTime()+1000;}},_onMouseOver:function(evt,_898){if(this._cancelDrag){var time=(new Date()).getTime();if(time>this._cancelDrag){this._isDragging=false;}this._cancelDrag=null;}this._hoveredNode=_898;this.onHover(_898);if(this._isDragging){this._setSelectedAttr(_898,false);}}});});},"dijit/form/_ListBase":function(){define(["dojo/_base/declare","dojo/on","dojo/window"],function(_899,on,_89a){return _899("dijit.form._ListBase",null,{selected:null,_listConnect:function(_89b,_89c){var self=this;return self.own(on(self.containerNode,on.selector(function(_89d,_89e,_89f){return _89d.parentNode==_89f;},_89b),function(evt){self[_89c](evt,this);}));},selectFirstNode:function(){var _8a0=this.containerNode.firstChild;while(_8a0&&_8a0.style.display=="none"){_8a0=_8a0.nextSibling;}this._setSelectedAttr(_8a0,true);},selectLastNode:function(){var last=this.containerNode.lastChild;while(last&&last.style.display=="none"){last=last.previousSibling;}this._setSelectedAttr(last,true);},selectNextNode:function(){var _8a1=this.selected;if(!_8a1){this.selectFirstNode();}else{var next=_8a1.nextSibling;while(next&&next.style.display=="none"){next=next.nextSibling;}if(!next){this.selectFirstNode();}else{this._setSelectedAttr(next,true);}}},selectPreviousNode:function(){var _8a2=this.selected;if(!_8a2){this.selectLastNode();}else{var prev=_8a2.previousSibling;while(prev&&prev.style.display=="none"){prev=prev.previousSibling;}if(!prev){this.selectLastNode();}else{this._setSelectedAttr(prev,true);}}},_setSelectedAttr:function(node,_8a3){if(this.selected!=node){var _8a4=this.selected;if(_8a4){this.onDeselect(_8a4);}if(node){if(_8a3){_89a.scrollIntoView(node);}this.onSelect(node);}this._set("selected",node);}else{if(node){this.onSelect(node);}}}});});},"dijit/form/Form":function(){define(["dojo/_base/declare","dojo/dom-attr","dojo/_base/kernel","dojo/sniff","../_Widget","../_TemplatedMixin","./_FormMixin","../layout/_ContentPaneResizeMixin"],function(_8a5,_8a6,_8a7,has,_8a8,_8a9,_8aa,_8ab){return _8a5("dijit.form.Form",[_8a8,_8a9,_8aa,_8ab],{name:"",action:"",method:"",encType:"","accept-charset":"",accept:"",target:"",templateString:"<form data-dojo-attach-point='containerNode' data-dojo-attach-event='onreset:_onReset,onsubmit:_onSubmit' ${!nameAttrSetting}></form>",postMixInProperties:function(){this.nameAttrSetting=this.name?("name='"+this.name+"'"):"";this.inherited(arguments);},execute:function(){},onExecute:function(){},_setEncTypeAttr:function(_8ac){_8a6.set(this.domNode,"encType",_8ac);if(has("ie")){this.domNode.encoding=_8ac;}this._set("encType",_8ac);},reset:function(e){var faux={returnValue:true,preventDefault:function(){this.returnValue=false;},stopPropagation:function(){},currentTarget:e?e.target:this.domNode,target:e?e.target:this.domNode};if(!(this.onReset(faux)===false)&&faux.returnValue){this.inherited(arguments,[]);}},onReset:function(){return true;},_onReset:function(e){this.reset(e);e.stopPropagation();e.preventDefault();return false;},_onSubmit:function(e){var fp=this.constructor.prototype;if(this.execute!=fp.execute||this.onExecute!=fp.onExecute){_8a7.deprecated("dijit.form.Form:execute()/onExecute() are deprecated. Use onSubmit() instead.","","2.0");this.onExecute();this.execute(this.getValues());}if(this.onSubmit(e)===false){e.stopPropagation();e.preventDefault();}},onSubmit:function(){return this.isValid();},submit:function(){if(!(this.onSubmit()===false)){this.containerNode.submit();}}});});},"dijit/form/RadioButton":function(){define(["dojo/_base/declare","./CheckBox","./_RadioButtonMixin"],function(_8ad,_8ae,_8af){return _8ad("dijit.form.RadioButton",[_8ae,_8af],{baseClass:"dijitRadio"});});},"dijit/form/_RadioButtonMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/_base/lang","dojo/query!css2","../registry"],function(_8b0,_8b1,_8b2,lang,_8b3,_8b4){return _8b1("dijit.form._RadioButtonMixin",null,{type:"radio",_getRelatedWidgets:function(){var ary=[];_8b3("input[type=radio]",this.focusNode.form||this.ownerDocument).forEach(lang.hitch(this,function(_8b5){if(_8b5.name==this.name&&_8b5.form==this.focusNode.form){var _8b6=_8b4.getEnclosingWidget(_8b5);if(_8b6){ary.push(_8b6);}}}));return ary;},_setCheckedAttr:function(_8b7){this.inherited(arguments);if(!this._created){return;}if(_8b7){_8b0.forEach(this._getRelatedWidgets(),lang.hitch(this,function(_8b8){if(_8b8!=this&&_8b8.checked){_8b8.set("checked",false);}}));}},_getSubmitValue:function(_8b9){return _8b9==null?"on":_8b9;},_onClick:function(e){if(this.checked||this.disabled){e.stopPropagation();e.preventDefault();return false;}if(this.readOnly){e.stopPropagation();e.preventDefault();_8b0.forEach(this._getRelatedWidgets(),lang.hitch(this,function(_8ba){_8b2.set(this.focusNode||this.domNode,"checked",_8ba.checked);}));return false;}var _8bb=false;var _8bc;_8b0.some(this._getRelatedWidgets(),function(_8bd){if(_8bd.checked){_8bc=_8bd;return true;}return false;});this.checked=true;_8bc&&(_8bc.checked=false);if(this.onClick(e)===false||e.defaultPrevented){_8bb=true;}this.checked=false;_8bc&&(_8bc.checked=true);if(_8bb){e.preventDefault();}else{this.set("checked",true);}return !_8bb;}});});},"dijit/form/Select":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/i18n","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","./_FormSelectWidget","../_HasDropDown","../DropDownMenu","../MenuItem","../MenuSeparator","../Tooltip","../_KeyNavMixin","../registry","dojo/text!./templates/Select.html","dojo/i18n!./nls/validate"],function(_8be,_8bf,_8c0,_8c1,_8c2,i18n,keys,lang,on,has,_8c3,_8c4,_8c5,_8c6,_8c7,_8c8,_8c9,_8ca,_8cb){var _8cc=_8bf("dijit.form._SelectMenu",_8c5,{autoFocus:true,buildRendering:function(){this.inherited(arguments);this.domNode.setAttribute("role","listbox");},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"selectstart",function(evt){evt.preventDefault();evt.stopPropagation();}));},focus:function(){var _8cd=false,val=this.parentWidget.value;if(lang.isArray(val)){val=val[val.length-1];}if(val){_8be.forEach(this.parentWidget._getChildren(),function(_8ce){if(_8ce.option&&(val===_8ce.option.value)){_8cd=true;this.focusChild(_8ce,false);}},this);}if(!_8cd){this.inherited(arguments);}}});var _8cf=_8bf("dijit.form.Select"+(has("dojo-bidi")?"_NoBidi":""),[_8c3,_8c4,_8c9],{baseClass:"dijitSelect dijitValidationTextBox",templateString:_8cb,_buttonInputDisabled:has("ie")?"disabled":"",required:false,state:"",message:"",tooltipPosition:[],emptyLabel:"&#160;",_isLoaded:false,_childrenLoaded:false,labelType:"html",_fillContent:function(){this.inherited(arguments);if(this.options.length&&!this.value&&this.srcNodeRef){var si=this.srcNodeRef.selectedIndex||0;this._set("value",this.options[si>=0?si:0].value);}this.dropDown=new _8cc({id:this.id+"_menu",parentWidget:this});_8c1.add(this.dropDown.domNode,this.baseClass.replace(/\s+|$/g,"Menu "));},_getMenuItemForOption:function(_8d0){if(!_8d0.value&&!_8d0.label){return new _8c7({ownerDocument:this.ownerDocument});}else{var _8d1=lang.hitch(this,"_setValueAttr",_8d0);var item=new _8c6({option:_8d0,label:(this.labelType==="text"?(_8d0.label||"").toString().replace(/&/g,"&amp;").replace(/</g,"&lt;"):_8d0.label)||this.emptyLabel,onClick:_8d1,ownerDocument:this.ownerDocument,dir:this.dir,textDir:this.textDir,disabled:_8d0.disabled||false});item.focusNode.setAttribute("role","option");return item;}},_addOptionItem:function(_8d2){if(this.dropDown){this.dropDown.addChild(this._getMenuItemForOption(_8d2));}},_getChildren:function(){if(!this.dropDown){return [];}return this.dropDown.getChildren();},focus:function(){if(!this.disabled&&this.focusNode.focus){try{this.focusNode.focus();}catch(e){}}},focusChild:function(_8d3){if(_8d3){this.set("value",_8d3.option);}},_getFirst:function(){var _8d4=this._getChildren();return _8d4.length?_8d4[0]:null;},_getLast:function(){var _8d5=this._getChildren();return _8d5.length?_8d5[_8d5.length-1]:null;},childSelector:function(node){var node=_8ca.byNode(node);return node&&node.getParent()==this.dropDown;},onKeyboardSearch:function(item,evt,_8d6,_8d7){if(item){this.focusChild(item);}},_loadChildren:function(_8d8){if(_8d8===true){if(this.dropDown){delete this.dropDown.focusedChild;this.focusedChild=null;}if(this.options.length){this.inherited(arguments);}else{_8be.forEach(this._getChildren(),function(_8d9){_8d9.destroyRecursive();});var item=new _8c6({ownerDocument:this.ownerDocument,label:this.emptyLabel});this.dropDown.addChild(item);}}else{this._updateSelection();}this._isLoaded=false;this._childrenLoaded=true;if(!this._loadingStore){this._setValueAttr(this.value,false);}},_refreshState:function(){if(this._started){this.validate(this.focused);}},startup:function(){this.inherited(arguments);this._refreshState();},_setValueAttr:function(_8da){this.inherited(arguments);_8c0.set(this.valueNode,"value",this.get("value"));this._refreshState();},_setNameAttr:"valueNode",_setDisabledAttr:function(_8db){this.inherited(arguments);this._refreshState();},_setRequiredAttr:function(_8dc){this._set("required",_8dc);this.focusNode.setAttribute("aria-required",_8dc);this._refreshState();},_setOptionsAttr:function(_8dd){this._isLoaded=false;this._set("options",_8dd);},_setDisplay:function(_8de){var lbl=(this.labelType==="text"?(_8de||"").replace(/&/g,"&amp;").replace(/</g,"&lt;"):_8de)||this.emptyLabel;this.containerNode.innerHTML="<span role=\"option\" aria-selected=\"true\" class=\"dijitReset dijitInline "+this.baseClass.replace(/\s+|$/g,"Label ")+"\">"+lbl+"</span>";},validate:function(_8df){var _8e0=this.disabled||this.isValid(_8df);this._set("state",_8e0?"":(this._hasBeenBlurred?"Error":"Incomplete"));this.focusNode.setAttribute("aria-invalid",_8e0?"false":"true");var _8e1=_8e0?"":this._missingMsg;if(_8e1&&this.focused&&this._hasBeenBlurred){_8c8.show(_8e1,this.domNode,this.tooltipPosition,!this.isLeftToRight());}else{_8c8.hide(this.domNode);}this._set("message",_8e1);return _8e0;},isValid:function(){return (!this.required||this.value===0||!(/^\s*$/.test(this.value||"")));},reset:function(){this.inherited(arguments);_8c8.hide(this.domNode);this._refreshState();},postMixInProperties:function(){this.inherited(arguments);this._missingMsg=i18n.getLocalization("dijit.form","validate",this.lang).missingMessage;},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"selectstart",function(evt){evt.preventDefault();evt.stopPropagation();}));this.domNode.setAttribute("aria-expanded","false");var _8e2=this._keyNavCodes;delete _8e2[keys.LEFT_ARROW];delete _8e2[keys.RIGHT_ARROW];},_setStyleAttr:function(_8e3){this.inherited(arguments);_8c1.toggle(this.domNode,this.baseClass.replace(/\s+|$/g,"FixedWidth "),!!this.domNode.style.width);},isLoaded:function(){return this._isLoaded;},loadDropDown:function(_8e4){this._loadChildren(true);this._isLoaded=true;_8e4();},destroy:function(_8e5){if(this.dropDown&&!this.dropDown._destroyed){this.dropDown.destroyRecursive(_8e5);delete this.dropDown;}_8c8.hide(this.domNode);this.inherited(arguments);},_onFocus:function(){this.validate(true);},_onBlur:function(){_8c8.hide(this.domNode);this.inherited(arguments);this.validate(false);}});if(has("dojo-bidi")){_8cf=_8bf("dijit.form.Select",_8cf,{_setDisplay:function(_8e6){this.inherited(arguments);this.applyTextDir(this.containerNode);}});}_8cf._Menu=_8cc;function _8e7(_8e8){return function(evt){if(!this._isLoaded){this.loadDropDown(lang.hitch(this,_8e8,evt));}else{this.inherited(_8e8,arguments);}};};_8cf.prototype._onContainerKeydown=_8e7("_onContainerKeydown");_8cf.prototype._onContainerKeypress=_8e7("_onContainerKeypress");return _8cf;});},"dijit/form/_FormSelectWidget":function(){define(["dojo/_base/array","dojo/_base/Deferred","dojo/aspect","dojo/data/util/sorter","dojo/_base/declare","dojo/dom","dojo/dom-class","dojo/_base/kernel","dojo/_base/lang","dojo/query","dojo/when","dojo/store/util/QueryResults","./_FormValueWidget"],function(_8e9,_8ea,_8eb,_8ec,_8ed,dom,_8ee,_8ef,lang,_8f0,when,_8f1,_8f2){var _8f3=_8ed("dijit.form._FormSelectWidget",_8f2,{multiple:false,options:null,store:null,_setStoreAttr:function(val){if(this._created){this._deprecatedSetStore(val);}},query:null,_setQueryAttr:function(_8f4){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{query:_8f4});}},queryOptions:null,_setQueryOptionsAttr:function(_8f5){if(this._created){this._deprecatedSetStore(this.store,this.selectedValue,{queryOptions:_8f5});}},labelAttr:"",onFetch:null,sortByLabel:true,loadChildrenOnOpen:false,onLoadDeferred:null,getOptions:function(_8f6){var opts=this.options||[];if(_8f6==null){return opts;}if(lang.isArrayLike(_8f6)){return _8e9.map(_8f6,"return this.getOptions(item);",this);}if(lang.isString(_8f6)){_8f6={value:_8f6};}if(lang.isObject(_8f6)){if(!_8e9.some(opts,function(_8f7,idx){for(var a in _8f6){if(!(a in _8f7)||_8f7[a]!=_8f6[a]){return false;}}_8f6=idx;return true;})){_8f6=-1;}}if(_8f6>=0&&_8f6<opts.length){return opts[_8f6];}return null;},addOption:function(_8f8){_8e9.forEach(lang.isArrayLike(_8f8)?_8f8:[_8f8],function(i){if(i&&lang.isObject(i)){this.options.push(i);}},this);this._loadChildren();},removeOption:function(_8f9){var _8fa=this.getOptions(lang.isArrayLike(_8f9)?_8f9:[_8f9]);_8e9.forEach(_8fa,function(_8fb){if(_8fb){this.options=_8e9.filter(this.options,function(node){return (node.value!==_8fb.value||node.label!==_8fb.label);});this._removeOptionItem(_8fb);}},this);this._loadChildren();},updateOption:function(_8fc){_8e9.forEach(lang.isArrayLike(_8fc)?_8fc:[_8fc],function(i){var _8fd=this.getOptions({value:i.value}),k;if(_8fd){for(k in i){_8fd[k]=i[k];}}},this);this._loadChildren();},setStore:function(_8fe,_8ff,_900){_8ef.deprecated(this.declaredClass+"::setStore(store, selectedValue, fetchArgs) is deprecated. Use set('query', fetchArgs.query), set('queryOptions', fetchArgs.queryOptions), set('store', store), or set('value', selectedValue) instead.","","2.0");this._deprecatedSetStore(_8fe,_8ff,_900);},_deprecatedSetStore:function(_901,_902,_903){var _904=this.store;_903=_903||{};if(_904!==_901){var h;while((h=this._notifyConnections.pop())){h.remove();}if(!_901.get){lang.mixin(_901,{_oldAPI:true,get:function(id){var _905=new _8ea();this.fetchItemByIdentity({identity:id,onItem:function(_906){_905.resolve(_906);},onError:function(_907){_905.reject(_907);}});return _905.promise;},query:function(_908,_909){var _90a=new _8ea(function(){if(_90b.abort){_90b.abort();}});_90a.total=new _8ea();var _90b=this.fetch(lang.mixin({query:_908,onBegin:function(_90c){_90a.total.resolve(_90c);},onComplete:function(_90d){_90a.resolve(_90d);},onError:function(_90e){_90a.reject(_90e);}},_909));return new _8f1(_90a);}});if(_901.getFeatures()["dojo.data.api.Notification"]){this._notifyConnections=[_8eb.after(_901,"onNew",lang.hitch(this,"_onNewItem"),true),_8eb.after(_901,"onDelete",lang.hitch(this,"_onDeleteItem"),true),_8eb.after(_901,"onSet",lang.hitch(this,"_onSetItem"),true)];}}this._set("store",_901);}if(this.options&&this.options.length){this.removeOption(this.options);}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}if(_903.query){this._set("query",_903.query);}if(_903.queryOptions){this._set("queryOptions",_903.queryOptions);}if(_901&&_901.query){this._loadingStore=true;this.onLoadDeferred=new _8ea();this._queryRes=_901.query(this.query,this.queryOptions);when(this._queryRes,lang.hitch(this,function(_90f){if(this.sortByLabel&&!_903.sort&&_90f.length){if(_901.getValue){_90f.sort(_8ec.createSortFunction([{attribute:_901.getLabelAttributes(_90f[0])[0]}],_901));}else{var _910=this.labelAttr;_90f.sort(function(a,b){return a[_910]>b[_910]?1:b[_910]>a[_910]?-1:0;});}}if(_903.onFetch){_90f=_903.onFetch.call(this,_90f,_903);}_8e9.forEach(_90f,function(i){this._addOptionForItem(i);},this);if(this._queryRes.observe){this._observeHandle=this._queryRes.observe(lang.hitch(this,function(_911,_912,_913){if(_912==_913){this._onSetItem(_911);}else{if(_912!=-1){this._onDeleteItem(_911);}if(_913!=-1){this._onNewItem(_911);}}}),true);}this._loadingStore=false;this.set("value","_pendingValue" in this?this._pendingValue:_902);delete this._pendingValue;if(!this.loadChildrenOnOpen){this._loadChildren();}else{this._pseudoLoadChildren(_90f);}this.onLoadDeferred.resolve(true);this.onSetStore();}),lang.hitch(this,function(err){console.error("dijit.form.Select: "+err.toString());this.onLoadDeferred.reject(err);}));}return _904;},_setValueAttr:function(_914,_915){if(!this._onChangeActive){_915=null;}if(this._loadingStore){this._pendingValue=_914;return;}if(_914==null){return;}if(lang.isArrayLike(_914)){_914=_8e9.map(_914,function(_916){return lang.isObject(_916)?_916:{value:_916};});}else{if(lang.isObject(_914)){_914=[_914];}else{_914=[{value:_914}];}}_914=_8e9.filter(this.getOptions(_914),function(i){return i&&i.value;});var opts=this.getOptions()||[];if(!this.multiple&&(!_914[0]||!_914[0].value)&&!!opts.length){_914[0]=opts[0];}_8e9.forEach(opts,function(opt){opt.selected=_8e9.some(_914,function(v){return v.value===opt.value;});});var val=_8e9.map(_914,function(opt){return opt.value;});if(typeof val=="undefined"||typeof val[0]=="undefined"){return;}var disp=_8e9.map(_914,function(opt){return opt.label;});this._setDisplay(this.multiple?disp:disp[0]);this.inherited(arguments,[this.multiple?val:val[0],_915]);this._updateSelection();},_getDisplayedValueAttr:function(){var ret=_8e9.map([].concat(this.get("selectedOptions")),function(v){if(v&&"label" in v){return v.label;}else{if(v){return v.value;}}return null;},this);return this.multiple?ret:ret[0];},_setDisplayedValueAttr:function(_917){this.set("value",this.getOptions(typeof _917=="string"?{label:_917}:_917));},_loadChildren:function(){if(this._loadingStore){return;}_8e9.forEach(this._getChildren(),function(_918){_918.destroyRecursive();});_8e9.forEach(this.options,this._addOptionItem,this);this._updateSelection();},_updateSelection:function(){this.focusedChild=null;this._set("value",this._getValueFromOpts());var val=[].concat(this.value);if(val&&val[0]){var self=this;_8e9.forEach(this._getChildren(),function(_919){var _91a=_8e9.some(val,function(v){return _919.option&&(v===_919.option.value);});if(_91a&&!self.multiple){self.focusedChild=_919;}_8ee.toggle(_919.domNode,this.baseClass.replace(/\s+|$/g,"SelectedOption "),_91a);_919.domNode.setAttribute("aria-selected",_91a?"true":"false");},this);}},_getValueFromOpts:function(){var opts=this.getOptions()||[];if(!this.multiple&&opts.length){var opt=_8e9.filter(opts,function(i){return i.selected;})[0];if(opt&&opt.value){return opt.value;}else{opts[0].selected=true;return opts[0].value;}}else{if(this.multiple){return _8e9.map(_8e9.filter(opts,function(i){return i.selected;}),function(i){return i.value;})||[];}}return "";},_onNewItem:function(item,_91b){if(!_91b||!_91b.parent){this._addOptionForItem(item);}},_onDeleteItem:function(item){var _91c=this.store;this.removeOption({value:_91c.getIdentity(item)});},_onSetItem:function(item){this.updateOption(this._getOptionObjForItem(item));},_getOptionObjForItem:function(item){var _91d=this.store,_91e=(this.labelAttr&&this.labelAttr in item)?item[this.labelAttr]:_91d.getLabel(item),_91f=(_91e?_91d.getIdentity(item):null);return {value:_91f,label:_91e,item:item};},_addOptionForItem:function(item){var _920=this.store;if(_920.isItemLoaded&&!_920.isItemLoaded(item)){_920.loadItem({item:item,onItem:function(i){this._addOptionForItem(i);},scope:this});return;}var _921=this._getOptionObjForItem(item);this.addOption(_921);},constructor:function(_922){this._oValue=(_922||{}).value||null;this._notifyConnections=[];},buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.focusNode,false);},_fillContent:function(){if(!this.options){this.options=this.srcNodeRef?_8f0("> *",this.srcNodeRef).map(function(node){if(node.getAttribute("type")==="separator"){return {value:"",label:"",selected:false,disabled:false};}return {value:(node.getAttribute("data-"+_8ef._scopeName+"-value")||node.getAttribute("value")),label:String(node.innerHTML),selected:node.getAttribute("selected")||false,disabled:node.getAttribute("disabled")||false};},this):[];}if(!this.value){this._set("value",this._getValueFromOpts());}else{if(this.multiple&&typeof this.value=="string"){this._set("value",this.value.split(","));}}},postCreate:function(){this.inherited(arguments);_8eb.after(this,"onChange",lang.hitch(this,"_updateSelection"));var _923=this.store;if(_923&&(_923.getIdentity||_923.getFeatures()["dojo.data.api.Identity"])){this.store=null;this._deprecatedSetStore(_923,this._oValue,{query:this.query,queryOptions:this.queryOptions});}this._storeInitialized=true;},startup:function(){this._loadChildren();this.inherited(arguments);},destroy:function(){var h;while((h=this._notifyConnections.pop())){h.remove();}if(this._queryRes&&this._queryRes.close){this._queryRes.close();}if(this._observeHandle&&this._observeHandle.remove){this._observeHandle.remove();this._observeHandle=null;}this.inherited(arguments);},_addOptionItem:function(){},_removeOptionItem:function(){},_setDisplay:function(){},_getChildren:function(){return [];},_getSelectedOptionsAttr:function(){return this.getOptions({selected:true});},_pseudoLoadChildren:function(){},onSetStore:function(){}});return _8f3;});},"dijit/DropDownMenu":function(){define(["dojo/_base/declare","dojo/keys","dojo/text!./templates/Menu.html","./_MenuBase"],function(_924,keys,_925,_926){return _924("dijit.DropDownMenu",_926,{templateString:_925,baseClass:"dijitMenu",_onUpArrow:function(){this.focusPrev();},_onDownArrow:function(){this.focusNext();},_onRightArrow:function(evt){this._moveToPopup(evt);evt.stopPropagation();evt.preventDefault();},_onLeftArrow:function(evt){if(this.parentMenu){if(this.parentMenu._isMenuBar){this.parentMenu.focusPrev();}else{this.onCancel(false);}}else{evt.stopPropagation();evt.preventDefault();}}});});},"dijit/_MenuBase":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/_base/lang","dojo/mouse","dojo/on","dojo/window","./a11yclick","./registry","./_Widget","./_CssStateMixin","./_KeyNavContainer","./_TemplatedMixin"],function(_927,_928,dom,_929,_92a,lang,_92b,on,_92c,_92d,_92e,_92f,_930,_931,_932){return _928("dijit._MenuBase",[_92f,_932,_931,_930],{selected:null,_setSelectedAttr:function(item){if(this.selected!=item){if(this.selected){this.selected._setSelected(false);this._onChildDeselect(this.selected);}if(item){item._setSelected(true);}this._set("selected",item);}},activated:false,_setActivatedAttr:function(val){_92a.toggle(this.domNode,"dijitMenuActive",val);_92a.toggle(this.domNode,"dijitMenuPassive",!val);this._set("activated",val);},parentMenu:null,popupDelay:500,passivePopupDelay:Infinity,autoFocus:false,childSelector:function(node){var _933=_92e.byNode(node);return node.parentNode==this.containerNode&&_933&&_933.focus;},postCreate:function(){var self=this,_934=typeof this.childSelector=="string"?this.childSelector:lang.hitch(this,"childSelector");this.own(on(this.containerNode,on.selector(_934,_92b.enter),function(){self.onItemHover(_92e.byNode(this));}),on(this.containerNode,on.selector(_934,_92b.leave),function(){self.onItemUnhover(_92e.byNode(this));}),on(this.containerNode,on.selector(_934,_92d),function(evt){self.onItemClick(_92e.byNode(this),evt);evt.stopPropagation();}),on(this.containerNode,on.selector(_934,"focusin"),function(){self._onItemFocus(_92e.byNode(this));}));this.inherited(arguments);},onKeyboardSearch:function(item,evt,_935,_936){this.inherited(arguments);if(!!item&&(_936==-1||(!!item.popup&&_936==1))){this.onItemClick(item,evt);}},_keyboardSearchCompare:function(item,_937){if(!!item.shortcutKey){return _937==item.shortcutKey.toLowerCase()?-1:0;}return this.inherited(arguments)?1:0;},onExecute:function(){},onCancel:function(){},_moveToPopup:function(evt){if(this.focusedChild&&this.focusedChild.popup&&!this.focusedChild.disabled){this.onItemClick(this.focusedChild,evt);}else{var _938=this._getTopMenu();if(_938&&_938._isMenuBar){_938.focusNext();}}},_onPopupHover:function(){this.set("selected",this.currentPopupItem);this._stopPendingCloseTimer();},onItemHover:function(item){if(this.activated){this.set("selected",item);if(item.popup&&!item.disabled&&!this.hover_timer){this.hover_timer=this.defer(function(){this._openItemPopup(item);},this.popupDelay);}}else{if(this.passivePopupDelay<Infinity){if(this.passive_hover_timer){this.passive_hover_timer.remove();}this.passive_hover_timer=this.defer(function(){this.onItemClick(item,{type:"click"});},this.passivePopupDelay);}}this._hoveredChild=item;item._set("hovering",true);},_onChildDeselect:function(item){this._stopPopupTimer();if(this.currentPopupItem==item){this._stopPendingCloseTimer();this._pendingClose_timer=this.defer(function(){this._pendingClose_timer=null;this.currentPopupItem=null;item._closePopup();},this.popupDelay);}},onItemUnhover:function(item){if(this._hoveredChild==item){this._hoveredChild=null;}if(this.passive_hover_timer){this.passive_hover_timer.remove();this.passive_hover_timer=null;}item._set("hovering",false);},_stopPopupTimer:function(){if(this.hover_timer){this.hover_timer=this.hover_timer.remove();}},_stopPendingCloseTimer:function(){if(this._pendingClose_timer){this._pendingClose_timer=this._pendingClose_timer.remove();}},_getTopMenu:function(){for(var top=this;top.parentMenu;top=top.parentMenu){}return top;},onItemClick:function(item,evt){if(this.passive_hover_timer){this.passive_hover_timer.remove();}this.focusChild(item);if(item.disabled){return false;}if(item.popup){this.set("selected",item);this.set("activated",true);var _939=/^key/.test(evt._origType||evt.type)||(evt.clientX==0&&evt.clientY==0);this._openItemPopup(item,_939);}else{this.onExecute();item._onClick?item._onClick(evt):item.onClick(evt);}},_openItemPopup:function(_93a,_93b){if(_93a==this.currentPopupItem){return;}if(this.currentPopupItem){this._stopPendingCloseTimer();this.currentPopupItem._closePopup();}this._stopPopupTimer();var _93c=_93a.popup;_93c.parentMenu=this;this.own(this._mouseoverHandle=on.once(_93c.domNode,"mouseover",lang.hitch(this,"_onPopupHover")));var self=this;_93a._openPopup({parent:this,orient:this._orient||["after","before"],onCancel:function(){if(_93b){self.focusChild(_93a);}self._cleanUp();},onExecute:lang.hitch(this,"_cleanUp",true),onClose:function(){if(self._mouseoverHandle){self._mouseoverHandle.remove();delete self._mouseoverHandle;}}},_93b);this.currentPopupItem=_93a;},onOpen:function(){this.isShowingNow=true;this.set("activated",true);},onClose:function(){this.set("activated",false);this.set("selected",null);this.isShowingNow=false;this.parentMenu=null;},_closeChild:function(){this._stopPopupTimer();if(this.currentPopupItem){if(this.focused){_929.set(this.selected.focusNode,"tabIndex",this.tabIndex);this.selected.focusNode.focus();}this.currentPopupItem._closePopup();this.currentPopupItem=null;}},_onItemFocus:function(item){if(this._hoveredChild&&this._hoveredChild!=item){this.onItemUnhover(this._hoveredChild);}this.set("selected",item);},_onBlur:function(){this._cleanUp(true);this.inherited(arguments);},_cleanUp:function(_93d){this._closeChild();if(typeof this.isShowingNow=="undefined"){this.set("activated",false);}if(_93d){this.set("selected",null);}}});});},"dijit/_KeyNavContainer":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/_base/kernel","dojo/keys","dojo/_base/lang","./registry","./_Container","./_FocusMixin","./_KeyNavMixin"],function(_93e,_93f,_940,_941,keys,lang,_942,_943,_944,_945){return _93f("dijit._KeyNavContainer",[_944,_945,_943],{connectKeyNavHandlers:function(_946,_947){var _948=(this._keyNavCodes={});var prev=lang.hitch(this,"focusPrev");var next=lang.hitch(this,"focusNext");_93e.forEach(_946,function(code){_948[code]=prev;});_93e.forEach(_947,function(code){_948[code]=next;});_948[keys.HOME]=lang.hitch(this,"focusFirstChild");_948[keys.END]=lang.hitch(this,"focusLastChild");},startupKeyNavChildren:function(){_941.deprecated("startupKeyNavChildren() call no longer needed","","2.0");},startup:function(){this.inherited(arguments);_93e.forEach(this.getChildren(),lang.hitch(this,"_startupChild"));},addChild:function(_949,_94a){this.inherited(arguments);this._startupChild(_949);},_startupChild:function(_94b){_94b.set("tabIndex","-1");},_getFirst:function(){var _94c=this.getChildren();return _94c.length?_94c[0]:null;},_getLast:function(){var _94d=this.getChildren();return _94d.length?_94d[_94d.length-1]:null;},focusNext:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,1));},focusPrev:function(){this.focusChild(this._getNextFocusableChild(this.focusedChild,-1),true);},childSelector:function(node){var node=_942.byNode(node);return node&&node.getParent()==this;}});});},"dijit/_KeyNavMixin":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-attr","dojo/keys","dojo/_base/lang","dojo/on","dijit/registry","dijit/_FocusMixin"],function(_94e,_94f,_950,keys,lang,on,_951,_952){return _94f("dijit._KeyNavMixin",_952,{tabIndex:"0",childSelector:null,postCreate:function(){this.inherited(arguments);_950.set(this.domNode,"tabIndex",this.tabIndex);if(!this._keyNavCodes){var _953=this._keyNavCodes={};_953[keys.HOME]=lang.hitch(this,"focusFirstChild");_953[keys.END]=lang.hitch(this,"focusLastChild");_953[this.isLeftToRight()?keys.LEFT_ARROW:keys.RIGHT_ARROW]=lang.hitch(this,"_onLeftArrow");_953[this.isLeftToRight()?keys.RIGHT_ARROW:keys.LEFT_ARROW]=lang.hitch(this,"_onRightArrow");_953[keys.UP_ARROW]=lang.hitch(this,"_onUpArrow");_953[keys.DOWN_ARROW]=lang.hitch(this,"_onDownArrow");}var self=this,_954=typeof this.childSelector=="string"?this.childSelector:lang.hitch(this,"childSelector");this.own(on(this.domNode,"keypress",lang.hitch(this,"_onContainerKeypress")),on(this.domNode,"keydown",lang.hitch(this,"_onContainerKeydown")),on(this.domNode,"focus",lang.hitch(this,"_onContainerFocus")),on(this.containerNode,on.selector(_954,"focusin"),function(evt){self._onChildFocus(_951.getEnclosingWidget(this),evt);}));},_onLeftArrow:function(){},_onRightArrow:function(){},_onUpArrow:function(){},_onDownArrow:function(){},focus:function(){this.focusFirstChild();},_getFirstFocusableChild:function(){return this._getNextFocusableChild(null,1);},_getLastFocusableChild:function(){return this._getNextFocusableChild(null,-1);},focusFirstChild:function(){this.focusChild(this._getFirstFocusableChild());},focusLastChild:function(){this.focusChild(this._getLastFocusableChild());},focusChild:function(_955,last){if(!_955){return;}if(this.focusedChild&&_955!==this.focusedChild){this._onChildBlur(this.focusedChild);}_955.set("tabIndex",this.tabIndex);_955.focus(last?"end":"start");},_onContainerFocus:function(evt){if(evt.target!==this.domNode||this.focusedChild){return;}this.focus();},_onFocus:function(){_950.set(this.domNode,"tabIndex","-1");this.inherited(arguments);},_onBlur:function(evt){_950.set(this.domNode,"tabIndex",this.tabIndex);if(this.focusedChild){this.focusedChild.set("tabIndex","-1");this.lastFocusedChild=this.focusedChild;this._set("focusedChild",null);}this.inherited(arguments);},_onChildFocus:function(_956){if(_956&&_956!=this.focusedChild){if(this.focusedChild&&!this.focusedChild._destroyed){this.focusedChild.set("tabIndex","-1");}_956.set("tabIndex",this.tabIndex);this.lastFocused=_956;this._set("focusedChild",_956);}},_searchString:"",multiCharSearchDuration:1000,onKeyboardSearch:function(item,evt,_957,_958){if(item){this.focusChild(item);}},_keyboardSearchCompare:function(item,_959){var _95a=item.domNode,text=item.label||(_95a.focusNode?_95a.focusNode.label:"")||_95a.innerText||_95a.textContent||"",_95b=text.replace(/^\s+/,"").substr(0,_959.length).toLowerCase();return (!!_959.length&&_95b==_959)?-1:0;},_onContainerKeydown:function(evt){var func=this._keyNavCodes[evt.keyCode];if(func){func(evt,this.focusedChild);evt.stopPropagation();evt.preventDefault();this._searchString="";}else{if(evt.keyCode==keys.SPACE&&this._searchTimer&&!(evt.ctrlKey||evt.altKey||evt.metaKey)){evt.stopImmediatePropagation();evt.preventDefault();this._keyboardSearch(evt," ");}}},_onContainerKeypress:function(evt){if(evt.charCode<=keys.SPACE||evt.ctrlKey||evt.altKey||evt.metaKey){return;}evt.preventDefault();evt.stopPropagation();this._keyboardSearch(evt,String.fromCharCode(evt.charCode).toLowerCase());},_keyboardSearch:function(evt,_95c){var _95d=null,_95e,_95f=0,_960=lang.hitch(this,function(){if(this._searchTimer){this._searchTimer.remove();}this._searchString+=_95c;var _961=/^(.)\1*$/.test(this._searchString);var _962=_961?1:this._searchString.length;_95e=this._searchString.substr(0,_962);this._searchTimer=this.defer(function(){this._searchTimer=null;this._searchString="";},this.multiCharSearchDuration);var _963=this.focusedChild||null;if(_962==1||!_963){_963=this._getNextFocusableChild(_963,1);if(!_963){return;}}var stop=_963;do{var rc=this._keyboardSearchCompare(_963,_95e);if(!!rc&&_95f++==0){_95d=_963;}if(rc==-1){_95f=-1;break;}_963=this._getNextFocusableChild(_963,1);}while(_963&&_963!=stop);});_960();this.onKeyboardSearch(_95d,evt,_95e,_95f);},_onChildBlur:function(){},_getNextFocusableChild:function(_964,dir){var _965=_964;do{if(!_964){_964=this[dir>0?"_getFirst":"_getLast"]();if(!_964){break;}}else{_964=this._getNext(_964,dir);}if(_964!=null&&_964!=_965&&_964.isFocusable()){return _964;}}while(_964!=_965);return null;},_getFirst:function(){return null;},_getLast:function(){return null;},_getNext:function(_966,dir){if(_966){_966=_966.domNode;while(_966){_966=_966[dir<0?"previousSibling":"nextSibling"];if(_966&&"getAttribute" in _966){var w=_951.byNode(_966);if(w){return w;}}}}return null;}});});},"dijit/MenuItem":function(){define(["dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/_base/kernel","dojo/sniff","dojo/_base/lang","./_Widget","./_TemplatedMixin","./_Contained","./_CssStateMixin","dojo/text!./templates/MenuItem.html"],function(_967,dom,_968,_969,_96a,has,lang,_96b,_96c,_96d,_96e,_96f){var _970=_967("dijit.MenuItem"+(has("dojo-bidi")?"_NoBidi":""),[_96b,_96c,_96d,_96e],{templateString:_96f,baseClass:"dijitMenuItem",label:"",_setLabelAttr:function(val){this._set("label",val);var _971="";var text;var ndx=val.search(/{\S}/);if(ndx>=0){_971=val.charAt(ndx+1);var _972=val.substr(0,ndx);var _973=val.substr(ndx+3);text=_972+_971+_973;val=_972+"<span class=\"dijitMenuItemShortcutKey\">"+_971+"</span>"+_973;}else{text=val;}this.domNode.setAttribute("aria-label",text+" "+this.accelKey);this.containerNode.innerHTML=val;this._set("shortcutKey",_971);},iconClass:"dijitNoIcon",_setIconClassAttr:{node:"iconNode",type:"class"},accelKey:"",disabled:false,_fillContent:function(_974){if(_974&&!("label" in this.params)){this._set("label",_974.innerHTML);}},buildRendering:function(){this.inherited(arguments);var _975=this.id+"_text";_968.set(this.containerNode,"id",_975);if(this.accelKeyNode){_968.set(this.accelKeyNode,"id",this.id+"_accel");}dom.setSelectable(this.domNode,false);},onClick:function(){},focus:function(){try{if(has("ie")==8){this.containerNode.focus();}this.focusNode.focus();}catch(e){}},_setSelected:function(_976){_969.toggle(this.domNode,"dijitMenuItemSelected",_976);},setLabel:function(_977){_96a.deprecated("dijit.MenuItem.setLabel() is deprecated. Use set('label', ...) instead.","","2.0");this.set("label",_977);},setDisabled:function(_978){_96a.deprecated("dijit.Menu.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",_978);},_setDisabledAttr:function(_979){this.focusNode.setAttribute("aria-disabled",_979?"true":"false");this._set("disabled",_979);},_setAccelKeyAttr:function(_97a){if(this.accelKeyNode){this.accelKeyNode.style.display=_97a?"":"none";this.accelKeyNode.innerHTML=_97a;_968.set(this.containerNode,"colSpan",_97a?"1":"2");}this._set("accelKey",_97a);}});if(has("dojo-bidi")){_970=_967("dijit.MenuItem",_970,{_setLabelAttr:function(val){this.inherited(arguments);if(this.textDir==="auto"){this.applyTextDir(this.textDirNode);}}});}return _970;});},"dijit/MenuSeparator":function(){define(["dojo/_base/declare","dojo/dom","./_WidgetBase","./_TemplatedMixin","./_Contained","dojo/text!./templates/MenuSeparator.html"],function(_97b,dom,_97c,_97d,_97e,_97f){return _97b("dijit.MenuSeparator",[_97c,_97d,_97e],{templateString:_97f,buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});});},"dijit/form/SimpleTextarea":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/sniff","./TextBox"],function(_980,_981,has,_982){return _980("dijit.form.SimpleTextarea",_982,{baseClass:"dijitTextBox dijitTextArea",rows:"3",cols:"20",templateString:"<textarea ${!nameAttrSetting} data-dojo-attach-point='focusNode,containerNode,textbox' autocomplete='off'></textarea>",postMixInProperties:function(){if(!this.value&&this.srcNodeRef){this.value=this.srcNodeRef.value;}this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);if(has("ie")&&this.cols){_981.add(this.textbox,"dijitTextAreaCols");}},filter:function(_983){if(_983){_983=_983.replace(/\r/g,"");}return this.inherited(arguments);},_onInput:function(e){if(this.maxLength){var _984=parseInt(this.maxLength);var _985=this.textbox.value.replace(/\r/g,"");var _986=_985.length-_984;if(_986>0){var _987=this.textbox;if(_987.selectionStart){var pos=_987.selectionStart;var cr=0;if(has("opera")){cr=(this.textbox.value.substring(0,pos).match(/\r/g)||[]).length;}this.textbox.value=_985.substring(0,pos-_986-cr)+_985.substring(pos-cr);_987.setSelectionRange(pos-_986,pos-_986);}else{if(this.ownerDocument.selection){_987.focus();var _988=this.ownerDocument.selection.createRange();_988.moveStart("character",-_986);_988.text="";_988.select();}}}}this.inherited(arguments);}});});},"dijit/form/MultiSelect":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-geometry","dojo/sniff","dojo/query","./_FormValueWidget","dojo/NodeList-dom"],function(_989,_98a,_98b,has,_98c,_98d){var _98e=_98a("dijit.form.MultiSelect"+(has("dojo-bidi")?"_NoBidi":""),_98d,{size:7,baseClass:"dijitMultiSelect",templateString:"<select multiple='multiple' ${!nameAttrSetting} data-dojo-attach-point='containerNode,focusNode' data-dojo-attach-event='onchange: _onChange'></select>",addSelected:function(_98f){_98f.getSelected().forEach(function(n){this.containerNode.appendChild(n);this.domNode.scrollTop=this.domNode.offsetHeight;var _990=_98f.domNode.scrollTop;_98f.domNode.scrollTop=0;_98f.domNode.scrollTop=_990;},this);this._set("value",this.get("value"));},getSelected:function(){return _98c("option",this.containerNode).filter(function(n){return n.selected;});},_getValueAttr:function(){return _989.map(this.getSelected(),function(n){return n.value;});},multiple:true,_setMultipleAttr:function(val){},_setValueAttr:function(_991){if(has("android")){_98c("option",this.containerNode).orphan().forEach(function(n){var _992=n.ownerDocument.createElement("option");_992.value=n.value;_992.selected=(_989.indexOf(_991,n.value)!=-1);_992.text=n.text;_992.originalText=n.originalText;this.containerNode.appendChild(_992);},this);}else{_98c("option",this.containerNode).forEach(function(n){n.selected=(_989.indexOf(_991,n.value)!=-1);});}this.inherited(arguments);},invertSelection:function(_993){var val=[];_98c("option",this.containerNode).forEach(function(n){if(!n.selected){val.push(n.value);}});this._setValueAttr(val,!(_993===false||_993==null));},_onChange:function(){this._handleOnChange(this.get("value"),true);},resize:function(size){if(size){_98b.setMarginBox(this.domNode,size);}},postCreate:function(){this._set("value",this.get("value"));this.inherited(arguments);}});if(has("dojo-bidi")){_98e=_98a("dijit.form.MultiSelect",_98e,{addSelected:function(_994){_994.getSelected().forEach(function(n){n.text=this.enforceTextDirWithUcc(this.restoreOriginalText(n),n.text);},this);this.inherited(arguments);},_setTextDirAttr:function(_995){if((this.textDir!=_995||!this._created)&&this.enforceTextDirWithUcc){this._set("textDir",_995);_98c("option",this.containerNode).forEach(function(_996){if(!this._created&&_996.value===_996.text){_996.value=_996.text;}_996.text=this.enforceTextDirWithUcc(_996,_996.originalText||_996.text);},this);}}});}return _98e;});},"dijit/form/ComboBox":function(){define(["dojo/_base/declare","./ValidationTextBox","./ComboBoxMixin"],function(_997,_998,_999){return _997("dijit.form.ComboBox",[_998,_999],{});});},"dijit/InlineEditBox":function(){define(["require","dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-style","dojo/i18n","dojo/_base/kernel","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/when","./a11yclick","./focus","./_Widget","./_TemplatedMixin","./_WidgetsInTemplateMixin","./_Container","./form/Button","./form/_TextBoxMixin","./form/TextBox","dojo/text!./templates/InlineEditBox.html","dojo/i18n!./nls/common"],function(_99a,_99b,_99c,_99d,_99e,_99f,_9a0,_9a1,i18n,_9a2,keys,lang,on,has,when,_9a3,fm,_9a4,_9a5,_9a6,_9a7,_9a8,_9a9,_9aa,_9ab){var _9ac=_99d("dijit._InlineEditor",[_9a4,_9a5,_9a6],{templateString:_9ab,contextRequire:_99a,postMixInProperties:function(){this.inherited(arguments);this.messages=i18n.getLocalization("dijit","common",this.lang);_99b.forEach(["buttonSave","buttonCancel"],function(prop){if(!this[prop]){this[prop]=this.messages[prop];}},this);},buildRendering:function(){this.inherited(arguments);var Cls=typeof this.editor=="string"?(lang.getObject(this.editor)||_99a(this.editor)):this.editor;var _9ad=this.sourceStyle,_9ae="line-height:"+_9ad.lineHeight+";",_9af=_9a1.getComputedStyle(this.domNode);_99b.forEach(["Weight","Family","Size","Style"],function(prop){var _9b0=_9ad["font"+prop],_9b1=_9af["font"+prop];if(_9b1!=_9b0){_9ae+="font-"+prop+":"+_9ad["font"+prop]+";";}},this);_99b.forEach(["marginTop","marginBottom","marginLeft","marginRight","position","left","top","right","bottom","float","clear","display"],function(prop){this.domNode.style[prop]=_9ad[prop];},this);var _9b2=this.inlineEditBox.width;if(_9b2=="100%"){_9ae+="width:100%;";this.domNode.style.display="block";}else{_9ae+="width:"+(_9b2+(Number(_9b2)==_9b2?"px":""))+";";}var _9b3=lang.delegate(this.inlineEditBox.editorParams,{style:_9ae,dir:this.dir,lang:this.lang,textDir:this.textDir});this.editWidget=new Cls(_9b3,this.editorPlaceholder);if(this.inlineEditBox.autoSave){this.saveButton.destroy();this.cancelButton.destroy();this.saveButton=this.cancelButton=null;_9a0.destroy(this.buttonContainer);}},postCreate:function(){this.inherited(arguments);var ew=this.editWidget;if(this.inlineEditBox.autoSave){this.own(_99c.after(ew,"onChange",lang.hitch(this,"_onChange"),true),on(ew,"keydown",lang.hitch(this,"_onKeyDown")));}else{if("intermediateChanges" in ew){ew.set("intermediateChanges",true);this.own(_99c.after(ew,"onChange",lang.hitch(this,"_onIntermediateChange"),true));this.saveButton.set("disabled",true);}}},startup:function(){this.editWidget.startup();this.inherited(arguments);},_onIntermediateChange:function(){this.saveButton.set("disabled",(this.getValue()==this._resetValue)||!this.enableSave());},destroy:function(){this.editWidget.destroy(true);this.inherited(arguments);},getValue:function(){var ew=this.editWidget;return String(ew.get(("displayedValue" in ew||"_getDisplayedValueAttr" in ew)?"displayedValue":"value"));},_onKeyDown:function(e){if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){if(e.altKey||e.ctrlKey){return;}if(e.keyCode==keys.ESCAPE){e.stopPropagation();e.preventDefault();this.cancel(true);}else{if(e.keyCode==keys.ENTER&&e.target.tagName=="INPUT"){e.stopPropagation();e.preventDefault();this._onChange();}}}},_onBlur:function(){this.inherited(arguments);if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing){if(this.getValue()==this._resetValue){this.cancel(false);}else{if(this.enableSave()){this.save(false);}}}},_onChange:function(){if(this.inlineEditBox.autoSave&&this.inlineEditBox.editing&&this.enableSave()){fm.focus(this.inlineEditBox.displayNode);}},enableSave:function(){return this.editWidget.isValid?this.editWidget.isValid():true;},focus:function(){this.editWidget.focus();if(this.editWidget.focusNode){fm._onFocusNode(this.editWidget.focusNode);if(this.editWidget.focusNode.tagName=="INPUT"){this.defer(function(){_9a9.selectInputText(this.editWidget.focusNode);});}}}});var _9b4=_99d("dijit.InlineEditBox"+(has("dojo-bidi")?"_NoBidi":""),_9a4,{editing:false,autoSave:true,buttonSave:"",buttonCancel:"",renderAsHtml:false,editor:_9aa,editorWrapper:_9ac,editorParams:{},disabled:false,onChange:function(){},onCancel:function(){},width:"100%",value:"",noValueIndicator:has("ie")<=6?"<span style='font-family: wingdings; text-decoration: underline;'>&#160;&#160;&#160;&#160;&#x270d;&#160;&#160;&#160;&#160;</span>":"<span style='text-decoration: underline;'>&#160;&#160;&#160;&#160;&#x270d;&#160;&#160;&#160;&#160;</span>",constructor:function(){this.editorParams={};},postMixInProperties:function(){this.inherited(arguments);this.displayNode=this.srcNodeRef;this.own(on(this.displayNode,_9a3,lang.hitch(this,"_onClick")),on(this.displayNode,"mouseover, focus",lang.hitch(this,"_onMouseOver")),on(this.displayNode,"mouseout, blur",lang.hitch(this,"_onMouseOut")));this.displayNode.setAttribute("role","button");if(!this.displayNode.getAttribute("tabIndex")){this.displayNode.setAttribute("tabIndex",0);}if(!this.value&&!("value" in this.params)){this.value=lang.trim(this.renderAsHtml?this.displayNode.innerHTML:(this.displayNode.innerText||this.displayNode.textContent||""));}if(!this.value){this.displayNode.innerHTML=this.noValueIndicator;}_99f.add(this.displayNode,"dijitInlineEditBoxDisplayMode");},setDisabled:function(_9b5){_9a2.deprecated("dijit.InlineEditBox.setDisabled() is deprecated. Use set('disabled', bool) instead.","","2.0");this.set("disabled",_9b5);},_setDisabledAttr:function(_9b6){this.domNode.setAttribute("aria-disabled",_9b6?"true":"false");if(_9b6){this.displayNode.removeAttribute("tabIndex");}else{this.displayNode.setAttribute("tabIndex",0);}_99f.toggle(this.displayNode,"dijitInlineEditBoxDisplayModeDisabled",_9b6);this._set("disabled",_9b6);},_onMouseOver:function(){if(!this.disabled){_99f.add(this.displayNode,"dijitInlineEditBoxDisplayModeHover");}},_onMouseOut:function(){_99f.remove(this.displayNode,"dijitInlineEditBoxDisplayModeHover");},_onClick:function(e){if(this.disabled){return;}if(e){e.stopPropagation();e.preventDefault();}this._onMouseOut();this.defer("edit");},edit:function(){if(this.disabled||this.editing){return;}this._set("editing",true);this._savedTabIndex=_99e.get(this.displayNode,"tabIndex")||"0";if(!this.wrapperWidget){var _9b7=_9a0.create("span",null,this.domNode,"before");var Ewc=typeof this.editorWrapper=="string"?lang.getObject(this.editorWrapper):this.editorWrapper;this.wrapperWidget=new Ewc({value:this.value,buttonSave:this.buttonSave,buttonCancel:this.buttonCancel,dir:this.dir,lang:this.lang,tabIndex:this._savedTabIndex,editor:this.editor,inlineEditBox:this,sourceStyle:_9a1.getComputedStyle(this.displayNode),save:lang.hitch(this,"save"),cancel:lang.hitch(this,"cancel"),textDir:this.textDir},_9b7);if(!this.wrapperWidget._started){this.wrapperWidget.startup();}if(!this._started){this.startup();}}var ww=this.wrapperWidget;_99f.add(this.displayNode,"dijitOffScreen");_99f.remove(ww.domNode,"dijitOffScreen");_9a1.set(ww.domNode,{visibility:"visible"});_99e.set(this.displayNode,"tabIndex","-1");var ew=ww.editWidget;var self=this;when(ew.onLoadDeferred,lang.hitch(ww,function(){ew.set(("displayedValue" in ew||"_setDisplayedValueAttr" in ew)?"displayedValue":"value",self.value);this.defer(function(){if(ww.saveButton){ww.saveButton.set("disabled","intermediateChanges" in ew);}this.focus();this._resetValue=this.getValue();});}));},_onBlur:function(){this.inherited(arguments);if(!this.editing){}},destroy:function(){if(this.wrapperWidget&&!this.wrapperWidget._destroyed){this.wrapperWidget.destroy();delete this.wrapperWidget;}this.inherited(arguments);},_showText:function(_9b8){var ww=this.wrapperWidget;_9a1.set(ww.domNode,{visibility:"hidden"});_99f.add(ww.domNode,"dijitOffScreen");_99f.remove(this.displayNode,"dijitOffScreen");_99e.set(this.displayNode,"tabIndex",this._savedTabIndex);if(_9b8){fm.focus(this.displayNode);}},save:function(_9b9){if(this.disabled||!this.editing){return;}this._set("editing",false);var ww=this.wrapperWidget;var _9ba=ww.getValue();this.set("value",_9ba);this._showText(_9b9);},setValue:function(val){_9a2.deprecated("dijit.InlineEditBox.setValue() is deprecated. Use set('value', ...) instead.","","2.0");return this.set("value",val);},_setValueAttr:function(val){val=lang.trim(val);var _9bb=this.renderAsHtml?val:val.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;").replace(/\n/g,"<br>");if(this.editorParams&&this.editorParams.type==="password"){this.displayNode.innerHTML="********";}else{this.displayNode.innerHTML=_9bb||this.noValueIndicator;}this._set("value",val);if(this._started){this.defer(function(){this.onChange(val);});}},getValue:function(){_9a2.deprecated("dijit.InlineEditBox.getValue() is deprecated. Use get('value') instead.","","2.0");return this.get("value");},cancel:function(_9bc){if(this.disabled||!this.editing){return;}this._set("editing",false);this.defer("onCancel");this._showText(_9bc);}});if(has("dojo-bidi")){_9b4=_99d("dijit.InlineEditBox",_9b4,{_setValueAttr:function(){this.inherited(arguments);this.applyTextDir(this.displayNode);}});}_9b4._InlineEditor=_9ac;return _9b4;});},"dijit/_WidgetsInTemplateMixin":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/_base/lang","dojo/parser"],function(_9bd,_9be,_9bf,lang,_9c0){return _9bf("dijit._WidgetsInTemplateMixin",null,{_earlyTemplatedStartup:false,contextRequire:null,_beforeFillContent:function(){if(/dojoType|data-dojo-type/i.test(this.domNode.innerHTML)){var node=this.domNode;if(this.containerNode&&!this.searchContainerNode){this.containerNode.stopParser=true;}_9c0.parse(node,{noStart:!this._earlyTemplatedStartup,template:true,inherited:{dir:this.dir,lang:this.lang,textDir:this.textDir},propsThis:this,contextRequire:this.contextRequire,scope:"dojo"}).then(lang.hitch(this,function(_9c1){this._startupWidgets=_9c1;for(var i=0;i<_9c1.length;i++){this._processTemplateNode(_9c1[i],function(n,p){return n[p];},function(_9c2,type,_9c3){if(type in _9c2){return _9c2.connect(_9c2,type,_9c3);}else{return _9c2.on(type,_9c3,true);}});}if(this.containerNode&&this.containerNode.stopParser){delete this.containerNode.stopParser;}}));if(!this._startupWidgets){throw new Error(this.declaredClass+": parser returned unfilled promise (probably waiting for module auto-load), "+"unsupported by _WidgetsInTemplateMixin. Must pre-load all supporting widgets before instantiation.");}}},_processTemplateNode:function(_9c4,_9c5,_9c6){if(_9c5(_9c4,"dojoType")||_9c5(_9c4,"data-dojo-type")){return true;}return this.inherited(arguments);},startup:function(){_9bd.forEach(this._startupWidgets,function(w){if(w&&!w._started&&w.startup){w.startup();}});this._startupWidgets=null;this.inherited(arguments);}});});},"dijit/ToolbarSeparator":function(){define(["dojo/_base/declare","dojo/dom","./_Widget","./_TemplatedMixin"],function(_9c7,dom,_9c8,_9c9){return _9c7("dijit.ToolbarSeparator",[_9c8,_9c9],{templateString:"<div class=\"dijitToolbarSeparator dijitInline\" role=\"presentation\"></div>",buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.domNode,false);},isFocusable:function(){return false;}});});},"dijit/PopupMenuItem":function(){define(["dojo/_base/declare","dojo/dom-style","dojo/_base/lang","dojo/query","./popup","./registry","./MenuItem","./hccss"],function(_9ca,_9cb,lang,_9cc,pm,_9cd,_9ce){return _9ca("dijit.PopupMenuItem",_9ce,{baseClass:"dijitMenuItem dijitPopupMenuItem",_fillContent:function(){if(this.srcNodeRef){var _9cf=_9cc("*",this.srcNodeRef);this.inherited(arguments,[_9cf[0]]);this.dropDownContainer=this.srcNodeRef;}},_openPopup:function(_9d0,_9d1){var _9d2=this.popup;pm.open(lang.delegate(_9d0,{popup:this.popup,around:this.domNode}));if(_9d1&&_9d2.focus){_9d2.focus();}},_closePopup:function(){pm.close(this.popup);this.popup.parentMenu=null;},startup:function(){if(this._started){return;}this.inherited(arguments);if(!this.popup){var node=_9cc("[widgetId]",this.dropDownContainer)[0];this.popup=_9cd.byNode(node);}this.ownerDocumentBody.appendChild(this.popup.domNode);this.popup.domNode.setAttribute("aria-labelledby",this.containerNode.id);this.popup.startup();this.popup.domNode.style.display="none";if(this.arrowWrapper){_9cb.set(this.arrowWrapper,"visibility","");}this.focusNode.setAttribute("aria-haspopup","true");},destroyDescendants:function(_9d3){if(this.popup){if(!this.popup._destroyed){this.popup.destroyRecursive(_9d3);}delete this.popup;}this.inherited(arguments);}});});},"dijit/CheckedMenuItem":function(){define(["dojo/_base/declare","dojo/dom-class","./MenuItem","dojo/text!./templates/CheckedMenuItem.html","./hccss"],function(_9d4,_9d5,_9d6,_9d7){return _9d4("dijit.CheckedMenuItem",_9d6,{baseClass:"dijitMenuItem dijitCheckedMenuItem",templateString:_9d7,checked:false,_setCheckedAttr:function(_9d8){this.domNode.setAttribute("aria-checked",_9d8?"true":"false");this._set("checked",_9d8);},iconClass:"",role:"menuitemcheckbox",checkedChar:"&#10003;",onChange:function(){},_onClick:function(evt){if(!this.disabled){this.set("checked",!this.checked);this.onChange(this.checked);}this.onClick(evt);}});});},"dijit/layout/AccordionContainer":function(){define(["require","dojo/_base/array","dojo/_base/declare","dojo/_base/fx","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/keys","dojo/_base/lang","dojo/sniff","dojo/topic","../focus","../_base/manager","dojo/ready","../_Widget","../_Container","../_TemplatedMixin","../_CssStateMixin","./StackContainer","./ContentPane","dojo/text!./templates/AccordionButton.html","../a11yclick"],function(_9d9,_9da,_9db,fx,dom,_9dc,_9dd,_9de,_9df,keys,lang,has,_9e0,_9e1,_9e2,_9e3,_9e4,_9e5,_9e6,_9e7,_9e8,_9e9,_9ea){function size(_9eb,dim){_9eb.resize?_9eb.resize(dim):_9df.setMarginBox(_9eb.domNode,dim);};var _9ec=_9db("dijit.layout._AccordionButton",[_9e4,_9e6,_9e7],{templateString:_9ea,label:"",_setLabelAttr:{node:"titleTextNode",type:"innerHTML"},title:"",_setTitleAttr:{node:"titleTextNode",type:"attribute",attribute:"title"},iconClassAttr:"",_setIconClassAttr:{node:"iconNode",type:"class"},baseClass:"dijitAccordionTitle",getParent:function(){return this.parent;},buildRendering:function(){this.inherited(arguments);var _9ed=this.id.replace(" ","_");_9dc.set(this.titleTextNode,"id",_9ed+"_title");this.focusNode.setAttribute("aria-labelledby",_9dc.get(this.titleTextNode,"id"));dom.setSelectable(this.domNode,false);},getTitleHeight:function(){return _9df.getMarginSize(this.domNode).h;},_onTitleClick:function(){var _9ee=this.getParent();_9ee.selectChild(this.contentWidget,true);_9e1.focus(this.focusNode);},_onTitleKeyDown:function(evt){return this.getParent()._onKeyDown(evt,this.contentWidget);},_setSelectedAttr:function(_9ef){this._set("selected",_9ef);this.focusNode.setAttribute("aria-expanded",_9ef?"true":"false");this.focusNode.setAttribute("aria-selected",_9ef?"true":"false");this.focusNode.setAttribute("tabIndex",_9ef?"0":"-1");}});if(has("dojo-bidi")){_9ec.extend({_setLabelAttr:function(_9f0){this._set("label",_9f0);_9dc.set(this.titleTextNode,"innerHTML",_9f0);this.applyTextDir(this.titleTextNode);},_setTitleAttr:function(_9f1){this._set("title",_9f1);_9dc.set(this.titleTextNode,"title",_9f1);this.applyTextDir(this.titleTextNode);}});}var _9f2=_9db("dijit.layout._AccordionInnerContainer"+(has("dojo-bidi")?"_NoBidi":""),[_9e4,_9e7],{baseClass:"dijitAccordionInnerContainer",isLayoutContainer:true,buildRendering:function(){this.domNode=_9de.place("<div class='"+this.baseClass+"' role='presentation'>",this.contentWidget.domNode,"after");var _9f3=this.contentWidget,cls=lang.isString(this.buttonWidget)?lang.getObject(this.buttonWidget):this.buttonWidget;this.button=_9f3._buttonWidget=(new cls({contentWidget:_9f3,label:_9f3.title,title:_9f3.tooltip,dir:_9f3.dir,lang:_9f3.lang,textDir:_9f3.textDir||this.textDir,iconClass:_9f3.iconClass,id:_9f3.id+"_button",parent:this.parent})).placeAt(this.domNode);this.containerNode=_9de.place("<div class='dijitAccordionChildWrapper' role='tabpanel' style='display:none'>",this.domNode);this.containerNode.setAttribute("aria-labelledby",this.button.id);_9de.place(this.contentWidget.domNode,this.containerNode);},postCreate:function(){this.inherited(arguments);var _9f4=this.button,cw=this.contentWidget;this._contentWidgetWatches=[cw.watch("title",lang.hitch(this,function(name,_9f5,_9f6){_9f4.set("label",_9f6);})),cw.watch("tooltip",lang.hitch(this,function(name,_9f7,_9f8){_9f4.set("title",_9f8);})),cw.watch("iconClass",lang.hitch(this,function(name,_9f9,_9fa){_9f4.set("iconClass",_9fa);}))];},_setSelectedAttr:function(_9fb){this._set("selected",_9fb);this.button.set("selected",_9fb);if(_9fb){var cw=this.contentWidget;if(cw.onSelected){cw.onSelected();}}},startup:function(){this.contentWidget.startup();},destroy:function(){this.button.destroyRecursive();_9da.forEach(this._contentWidgetWatches||[],function(w){w.unwatch();});delete this.contentWidget._buttonWidget;delete this.contentWidget._wrapperWidget;this.inherited(arguments);},destroyDescendants:function(_9fc){this.contentWidget.destroyRecursive(_9fc);}});if(has("dojo-bidi")){_9f2=_9db("dijit.layout._AccordionInnerContainer",_9f2,{postCreate:function(){this.inherited(arguments);var _9fd=this.button;this._contentWidgetWatches.push(this.contentWidget.watch("textDir",function(name,_9fe,_9ff){_9fd.set("textDir",_9ff);}));}});}var _a00=_9db("dijit.layout.AccordionContainer",_9e8,{duration:_9e2.defaultDuration,buttonWidget:_9ec,baseClass:"dijitAccordionContainer",buildRendering:function(){this.inherited(arguments);this.domNode.style.overflow="hidden";this.domNode.setAttribute("role","tablist");},startup:function(){if(this._started){return;}this.inherited(arguments);if(this.selectedChildWidget){this.selectedChildWidget._wrapperWidget.set("selected",true);}},layout:function(){var _a01=this.selectedChildWidget;if(!_a01){return;}var _a02=_a01._wrapperWidget.domNode,_a03=_9df.getMarginExtents(_a02),_a04=_9df.getPadBorderExtents(_a02),_a05=_a01._wrapperWidget.containerNode,_a06=_9df.getMarginExtents(_a05),_a07=_9df.getPadBorderExtents(_a05),_a08=this._contentBox;var _a09=0;_9da.forEach(this.getChildren(),function(_a0a){if(_a0a!=_a01){_a09+=_9df.getMarginSize(_a0a._wrapperWidget.domNode).h;}});this._verticalSpace=_a08.h-_a09-_a03.h-_a04.h-_a06.h-_a07.h-_a01._buttonWidget.getTitleHeight();this._containerContentBox={h:this._verticalSpace,w:this._contentBox.w-_a03.w-_a04.w-_a06.w-_a07.w};if(_a01){size(_a01,this._containerContentBox);}},_setupChild:function(_a0b){_a0b._wrapperWidget=_9f2({contentWidget:_a0b,buttonWidget:this.buttonWidget,id:_a0b.id+"_wrapper",dir:_a0b.dir,lang:_a0b.lang,textDir:_a0b.textDir||this.textDir,parent:this});this.inherited(arguments);_9de.place(_a0b.domNode,_a0b._wrapper,"replace");},removeChild:function(_a0c){if(_a0c._wrapperWidget){_9de.place(_a0c.domNode,_a0c._wrapperWidget.domNode,"after");_a0c._wrapperWidget.destroy();delete _a0c._wrapperWidget;}_9dd.remove(_a0c.domNode,"dijitHidden");this.inherited(arguments);},getChildren:function(){return _9da.map(this.inherited(arguments),function(_a0d){return _a0d.declaredClass=="dijit.layout._AccordionInnerContainer"?_a0d.contentWidget:_a0d;},this);},destroy:function(){if(this._animation){this._animation.stop();}_9da.forEach(this.getChildren(),function(_a0e){if(_a0e._wrapperWidget){_a0e._wrapperWidget.destroy();}else{_a0e.destroyRecursive();}});this.inherited(arguments);},_showChild:function(_a0f){_a0f._wrapperWidget.containerNode.style.display="block";return this.inherited(arguments);},_hideChild:function(_a10){_a10._wrapperWidget.containerNode.style.display="none";this.inherited(arguments);},_transition:function(_a11,_a12,_a13){if(has("ie")<8){_a13=false;}if(this._animation){this._animation.stop(true);delete this._animation;}var self=this;if(_a11){_a11._wrapperWidget.set("selected",true);var d=this._showChild(_a11);if(this.doLayout){size(_a11,this._containerContentBox);}}if(_a12){_a12._wrapperWidget.set("selected",false);if(!_a13){this._hideChild(_a12);}}if(_a13){var _a14=_a11._wrapperWidget.containerNode,_a15=_a12._wrapperWidget.containerNode;var _a16=_a11._wrapperWidget.containerNode,_a17=_9df.getMarginExtents(_a16),_a18=_9df.getPadBorderExtents(_a16),_a19=_a17.h+_a18.h;_a15.style.height=(self._verticalSpace-_a19)+"px";this._animation=new fx.Animation({node:_a14,duration:this.duration,curve:[1,this._verticalSpace-_a19-1],onAnimate:function(_a1a){_a1a=Math.floor(_a1a);_a14.style.height=_a1a+"px";_a15.style.height=(self._verticalSpace-_a19-_a1a)+"px";},onEnd:function(){delete self._animation;_a14.style.height="auto";_a12._wrapperWidget.containerNode.style.display="none";_a15.style.height="auto";self._hideChild(_a12);}});this._animation.onStop=this._animation.onEnd;this._animation.play();}return d;},_onKeyDown:function(e,_a1b){if(this.disabled||e.altKey||!(_a1b||e.ctrlKey)){return;}var c=e.keyCode;if((_a1b&&(c==keys.LEFT_ARROW||c==keys.UP_ARROW))||(e.ctrlKey&&c==keys.PAGE_UP)){this._adjacent(false)._buttonWidget._onTitleClick();e.stopPropagation();e.preventDefault();}else{if((_a1b&&(c==keys.RIGHT_ARROW||c==keys.DOWN_ARROW))||(e.ctrlKey&&(c==keys.PAGE_DOWN||c==keys.TAB))){this._adjacent(true)._buttonWidget._onTitleClick();e.stopPropagation();e.preventDefault();}}}});if(has("dijit-legacy-requires")){_9e3(0,function(){var _a1c=["dijit/layout/AccordionPane"];_9d9(_a1c);});}_a00._InnerContainer=_9f2;_a00._Button=_9ec;return _a00;});},"dijit/layout/StackContainer":function(){define(["dojo/_base/array","dojo/cookie","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/has","dojo/_base/lang","dojo/on","dojo/ready","dojo/topic","dojo/when","../registry","../_WidgetBase","./_LayoutWidget"],function(_a1d,_a1e,_a1f,_a20,_a21,has,lang,on,_a22,_a23,when,_a24,_a25,_a26){if(has("dijit-legacy-requires")){_a22(0,function(){var _a27=["dijit/layout/StackController"];require(_a27);});}var _a28=_a1f("dijit.layout.StackContainer",_a26,{doLayout:true,persist:false,baseClass:"dijitStackContainer",buildRendering:function(){this.inherited(arguments);_a20.add(this.domNode,"dijitLayoutContainer");},postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKeyDown")));},startup:function(){if(this._started){return;}var _a29=this.getChildren();_a1d.forEach(_a29,this._setupChild,this);if(this.persist){this.selectedChildWidget=_a24.byId(_a1e(this.id+"_selectedChild"));}else{_a1d.some(_a29,function(_a2a){if(_a2a.selected){this.selectedChildWidget=_a2a;}return _a2a.selected;},this);}var _a2b=this.selectedChildWidget;if(!_a2b&&_a29[0]){_a2b=this.selectedChildWidget=_a29[0];_a2b.selected=true;}_a23.publish(this.id+"-startup",{children:_a29,selected:_a2b,textDir:this.textDir});this.inherited(arguments);},resize:function(){if(!this._hasBeenShown){this._hasBeenShown=true;var _a2c=this.selectedChildWidget;if(_a2c){this._showChild(_a2c);}}this.inherited(arguments);},_setupChild:function(_a2d){var _a2e=_a2d.domNode,_a2f=_a21.place("<div role='tabpanel' class='"+this.baseClass+"ChildWrapper dijitHidden'>",_a2d.domNode,"replace"),_a30=_a2d["aria-label"]||_a2d.title||_a2d.label;if(_a30){_a2f.setAttribute("aria-label",_a30);}_a21.place(_a2e,_a2f);_a2d._wrapper=_a2f;this.inherited(arguments);if(_a2e.style.display=="none"){_a2e.style.display="block";}_a2d.domNode.removeAttribute("title");},addChild:function(_a31,_a32){this.inherited(arguments);if(this._started){_a23.publish(this.id+"-addChild",_a31,_a32);this.layout();if(!this.selectedChildWidget){this.selectChild(_a31);}}},removeChild:function(page){var idx=_a1d.indexOf(this.getChildren(),page);this.inherited(arguments);_a21.destroy(page._wrapper);delete page._wrapper;if(this._started){_a23.publish(this.id+"-removeChild",page);}if(this._descendantsBeingDestroyed){return;}if(this.selectedChildWidget===page){this.selectedChildWidget=undefined;if(this._started){var _a33=this.getChildren();if(_a33.length){this.selectChild(_a33[Math.max(idx-1,0)]);}}}if(this._started){this.layout();}},selectChild:function(page,_a34){var d;page=_a24.byId(page);if(this.selectedChildWidget!=page){d=this._transition(page,this.selectedChildWidget,_a34);this._set("selectedChildWidget",page);_a23.publish(this.id+"-selectChild",page,this._focused);if(this.persist){_a1e(this.id+"_selectedChild",this.selectedChildWidget.id);}}return when(d||true);},_transition:function(_a35,_a36){if(_a36){this._hideChild(_a36);}var d=this._showChild(_a35);if(_a35.resize){if(this.doLayout){_a35.resize(this._containerContentBox||this._contentBox);}else{_a35.resize();}}return d;},_adjacent:function(_a37){var _a38=this.getChildren();var _a39=_a1d.indexOf(_a38,this.selectedChildWidget);_a39+=_a37?1:_a38.length-1;return _a38[_a39%_a38.length];},forward:function(){return this.selectChild(this._adjacent(true),true);},back:function(){return this.selectChild(this._adjacent(false),true);},_onKeyDown:function(e){_a23.publish(this.id+"-containerKeyDown",{e:e,page:this});},layout:function(){var _a3a=this.selectedChildWidget;if(_a3a&&_a3a.resize){if(this.doLayout){_a3a.resize(this._containerContentBox||this._contentBox);}else{_a3a.resize();}}},_showChild:function(page){var _a3b=this.getChildren();page.isFirstChild=(page==_a3b[0]);page.isLastChild=(page==_a3b[_a3b.length-1]);page._set("selected",true);if(page._wrapper){_a20.replace(page._wrapper,"dijitVisible","dijitHidden");}return (page._onShow&&page._onShow())||true;},_hideChild:function(page){page._set("selected",false);if(page._wrapper){_a20.replace(page._wrapper,"dijitHidden","dijitVisible");}page.onHide&&page.onHide();},closeChild:function(page){var _a3c=!page.onClose||page.onClose(this,page);if(_a3c){this.removeChild(page);page.destroyRecursive();}},destroyDescendants:function(_a3d){this._descendantsBeingDestroyed=true;this.selectedChildWidget=undefined;_a1d.forEach(this.getChildren(),function(_a3e){if(!_a3d){this.removeChild(_a3e);}_a3e.destroyRecursive(_a3d);},this);this._descendantsBeingDestroyed=false;}});_a28.ChildWidgetProperties={selected:false,disabled:false,closable:false,iconClass:"dijitNoIcon",showTitle:true};lang.extend(_a25,_a28.ChildWidgetProperties);return _a28;});},"dojo/cookie":function(){define(["./_base/kernel","./regexp"],function(dojo,_a3f){dojo.cookie=function(name,_a40,_a41){var c=document.cookie,ret;if(arguments.length==1){var _a42=c.match(new RegExp("(?:^|; )"+_a3f.escapeString(name)+"=([^;]*)"));ret=_a42?decodeURIComponent(_a42[1]):undefined;}else{_a41=_a41||{};var exp=_a41.expires;if(typeof exp=="number"){var d=new Date();d.setTime(d.getTime()+exp*24*60*60*1000);exp=_a41.expires=d;}if(exp&&exp.toUTCString){_a41.expires=exp.toUTCString();}_a40=encodeURIComponent(_a40);var _a43=name+"="+_a40,_a44;for(_a44 in _a41){_a43+="; "+_a44;var _a45=_a41[_a44];if(_a45!==true){_a43+="="+_a45;}}document.cookie=_a43;}return ret;};dojo.cookie.isSupported=function(){if(!("cookieEnabled" in navigator)){this("__djCookieTest__","CookiesAllowed");navigator.cookieEnabled=this("__djCookieTest__")=="CookiesAllowed";if(navigator.cookieEnabled){this("__djCookieTest__","",{expires:-1});}}return navigator.cookieEnabled;};return dojo.cookie;});},"dijit/layout/AccordionPane":function(){define(["dojo/_base/declare","dojo/_base/kernel","./ContentPane"],function(_a46,_a47,_a48){return _a46("dijit.layout.AccordionPane",_a48,{constructor:function(){_a47.deprecated("dijit.layout.AccordionPane deprecated, use ContentPane instead","","2.0");},onSelected:function(){}});});},"dijit/layout/BorderContainer":function(){define(["dojo/_base/array","dojo/cookie","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/dom-geometry","dojo/dom-style","dojo/keys","dojo/_base/lang","dojo/on","dojo/touch","../_WidgetBase","../_Widget","../_TemplatedMixin","./LayoutContainer","./utils"],function(_a49,_a4a,_a4b,_a4c,_a4d,_a4e,_a4f,keys,lang,on,_a50,_a51,_a52,_a53,_a54,_a55){var _a56=_a4b("dijit.layout._Splitter",[_a52,_a53],{live:true,templateString:"<div class=\"dijitSplitter\" data-dojo-attach-event=\"onkeydown:_onKeyDown,press:_startDrag,onmouseenter:_onMouse,onmouseleave:_onMouse\" tabIndex=\"0\" role=\"separator\"><div class=\"dijitSplitterThumb\"></div></div>",constructor:function(){this._handlers=[];},postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);this._factor=/top|left/.test(this.region)?1:-1;this._cookieName=this.container.id+"_"+this.region;},buildRendering:function(){this.inherited(arguments);_a4c.add(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V"));if(this.container.persist){var _a57=_a4a(this._cookieName);if(_a57){this.child.domNode.style[this.horizontal?"height":"width"]=_a57;}}},_computeMaxSize:function(){var dim=this.horizontal?"h":"w",_a58=_a4e.getMarginBox(this.child.domNode)[dim],_a59=_a49.filter(this.container.getChildren(),function(_a5a){return _a5a.region=="center";})[0];var _a5b=_a4e.getContentBox(_a59.domNode)[dim]-10;return Math.min(this.child.maxSize,_a58+_a5b);},_startDrag:function(e){if(!this.cover){this.cover=_a4d.place("<div class=dijitSplitterCover></div>",this.child.domNode,"after");}_a4c.add(this.cover,"dijitSplitterCoverActive");if(this.fake){_a4d.destroy(this.fake);}if(!(this._resize=this.live)){(this.fake=this.domNode.cloneNode(true)).removeAttribute("id");_a4c.add(this.domNode,"dijitSplitterShadow");_a4d.place(this.fake,this.domNode,"after");}_a4c.add(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active");if(this.fake){_a4c.remove(this.fake,"dijitSplitterHover dijitSplitter"+(this.horizontal?"H":"V")+"Hover");}var _a5c=this._factor,_a5d=this.horizontal,axis=_a5d?"pageY":"pageX",_a5e=e[axis],_a5f=this.domNode.style,dim=_a5d?"h":"w",_a60=_a4f.getComputedStyle(this.child.domNode),_a61=_a4e.getMarginBox(this.child.domNode,_a60)[dim],max=this._computeMaxSize(),min=Math.max(this.child.minSize,_a4e.getPadBorderExtents(this.child.domNode,_a60)[dim]+10),_a62=this.region,_a63=_a62=="top"||_a62=="bottom"?"top":"left",_a64=parseInt(_a5f[_a63],10),_a65=this._resize,_a66=lang.hitch(this.container,"_layoutChildren",this.child.id),de=this.ownerDocument;this._handlers=this._handlers.concat([on(de,_a50.move,this._drag=function(e,_a67){var _a68=e[axis]-_a5e,_a69=_a5c*_a68+_a61,_a6a=Math.max(Math.min(_a69,max),min);if(_a65||_a67){_a66(_a6a);}_a5f[_a63]=_a68+_a64+_a5c*(_a6a-_a69)+"px";}),on(de,"dragstart",function(e){e.stopPropagation();e.preventDefault();}),on(this.ownerDocumentBody,"selectstart",function(e){e.stopPropagation();e.preventDefault();}),on(de,_a50.release,lang.hitch(this,"_stopDrag"))]);e.stopPropagation();e.preventDefault();},_onMouse:function(e){var o=(e.type=="mouseover"||e.type=="mouseenter");_a4c.toggle(this.domNode,"dijitSplitterHover",o);_a4c.toggle(this.domNode,"dijitSplitter"+(this.horizontal?"H":"V")+"Hover",o);},_stopDrag:function(e){try{if(this.cover){_a4c.remove(this.cover,"dijitSplitterCoverActive");}if(this.fake){_a4d.destroy(this.fake);}_a4c.remove(this.domNode,"dijitSplitterActive dijitSplitter"+(this.horizontal?"H":"V")+"Active dijitSplitterShadow");this._drag(e);this._drag(e,true);}finally{this._cleanupHandlers();delete this._drag;}if(this.container.persist){_a4a(this._cookieName,this.child.domNode.style[this.horizontal?"height":"width"],{expires:365});}},_cleanupHandlers:function(){var h;while(h=this._handlers.pop()){h.remove();}},_onKeyDown:function(e){this._resize=true;var _a6b=this.horizontal;var tick=1;switch(e.keyCode){case _a6b?keys.UP_ARROW:keys.LEFT_ARROW:tick*=-1;case _a6b?keys.DOWN_ARROW:keys.RIGHT_ARROW:break;default:return;}var _a6c=_a4e.getMarginSize(this.child.domNode)[_a6b?"h":"w"]+this._factor*tick;this.container._layoutChildren(this.child.id,Math.max(Math.min(_a6c,this._computeMaxSize()),this.child.minSize));e.stopPropagation();e.preventDefault();},destroy:function(){this._cleanupHandlers();delete this.child;delete this.container;delete this.cover;delete this.fake;this.inherited(arguments);}});var _a6d=_a4b("dijit.layout._Gutter",[_a52,_a53],{templateString:"<div class=\"dijitGutter\" role=\"presentation\"></div>",postMixInProperties:function(){this.inherited(arguments);this.horizontal=/top|bottom/.test(this.region);},buildRendering:function(){this.inherited(arguments);_a4c.add(this.domNode,"dijitGutter"+(this.horizontal?"H":"V"));}});var _a6e=_a4b("dijit.layout.BorderContainer",_a54,{gutters:true,liveSplitters:true,persist:false,baseClass:"dijitBorderContainer",_splitterClass:_a56,postMixInProperties:function(){if(!this.gutters){this.baseClass+="NoGutter";}this.inherited(arguments);},_setupChild:function(_a6f){this.inherited(arguments);var _a70=_a6f.region,ltr=_a6f.isLeftToRight();if(_a70=="leading"){_a70=ltr?"left":"right";}if(_a70=="trailing"){_a70=ltr?"right":"left";}if(_a70){if(_a70!="center"&&(_a6f.splitter||this.gutters)&&!_a6f._splitterWidget){var _a71=_a6f.splitter?this._splitterClass:_a6d;if(lang.isString(_a71)){_a71=lang.getObject(_a71);}var _a72=new _a71({id:_a6f.id+"_splitter",container:this,child:_a6f,region:_a70,live:this.liveSplitters});_a72.isSplitter=true;_a6f._splitterWidget=_a72;var _a73=_a70=="bottom"||_a70==(this.isLeftToRight()?"right":"left");_a4d.place(_a72.domNode,_a6f.domNode,_a73?"before":"after");_a72.startup();}}},layout:function(){this._layoutChildren();},removeChild:function(_a74){var _a75=_a74._splitterWidget;if(_a75){_a75.destroy();delete _a74._splitterWidget;}this.inherited(arguments);},getChildren:function(){return _a49.filter(this.inherited(arguments),function(_a76){return !_a76.isSplitter;});},getSplitter:function(_a77){return _a49.filter(this.getChildren(),function(_a78){return _a78.region==_a77;})[0]._splitterWidget;},resize:function(_a79,_a7a){if(!this.cs||!this.pe){var node=this.domNode;this.cs=_a4f.getComputedStyle(node);this.pe=_a4e.getPadExtents(node,this.cs);this.pe.r=_a4f.toPixelValue(node,this.cs.paddingRight);this.pe.b=_a4f.toPixelValue(node,this.cs.paddingBottom);_a4f.set(node,"padding","0px");}this.inherited(arguments);},_layoutChildren:function(_a7b,_a7c){if(!this._borderBox||!this._borderBox.h){return;}var _a7d=[];_a49.forEach(this._getOrderedChildren(),function(pane){_a7d.push(pane);if(pane._splitterWidget){_a7d.push(pane._splitterWidget);}});var dim={l:this.pe.l,t:this.pe.t,w:this._borderBox.w-this.pe.w,h:this._borderBox.h-this.pe.h};_a55.layoutChildren(this.domNode,dim,_a7d,_a7b,_a7c);},destroyRecursive:function(){_a49.forEach(this.getChildren(),function(_a7e){var _a7f=_a7e._splitterWidget;if(_a7f){_a7f.destroy();}delete _a7e._splitterWidget;});this.inherited(arguments);}});_a6e.ChildWidgetProperties={splitter:false,minSize:0,maxSize:Infinity};lang.mixin(_a6e.ChildWidgetProperties,_a54.ChildWidgetProperties);lang.extend(_a51,_a6e.ChildWidgetProperties);_a6e._Splitter=_a56;_a6e._Gutter=_a6d;return _a6e;});},"dijit/layout/LayoutContainer":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-style","dojo/_base/lang","../_WidgetBase","./_LayoutWidget","./utils"],function(_a80,_a81,_a82,_a83,lang,_a84,_a85,_a86){var _a87=_a81("dijit.layout.LayoutContainer",_a85,{design:"headline",baseClass:"dijitLayoutContainer",startup:function(){if(this._started){return;}_a80.forEach(this.getChildren(),this._setupChild,this);this.inherited(arguments);},_setupChild:function(_a88){this.inherited(arguments);var _a89=_a88.region;if(_a89){_a82.add(_a88.domNode,this.baseClass+"Pane");}},_getOrderedChildren:function(){var _a8a=_a80.map(this.getChildren(),function(_a8b,idx){return {pane:_a8b,weight:[_a8b.region=="center"?Infinity:0,_a8b.layoutPriority,(this.design=="sidebar"?1:-1)*(/top|bottom/.test(_a8b.region)?1:-1),idx]};},this);_a8a.sort(function(a,b){var aw=a.weight,bw=b.weight;for(var i=0;i<aw.length;i++){if(aw[i]!=bw[i]){return aw[i]-bw[i];}}return 0;});return _a80.map(_a8a,function(w){return w.pane;});},layout:function(){_a86.layoutChildren(this.domNode,this._contentBox,this._getOrderedChildren());},addChild:function(_a8c,_a8d){this.inherited(arguments);if(this._started){this.layout();}},removeChild:function(_a8e){this.inherited(arguments);if(this._started){this.layout();}_a82.remove(_a8e.domNode,this.baseClass+"Pane");_a83.set(_a8e.domNode,{top:"auto",bottom:"auto",left:"auto",right:"auto",position:"static"});_a83.set(_a8e.domNode,/top|bottom/.test(_a8e.region)?"width":"height","auto");}});_a87.ChildWidgetProperties={region:"",layoutAlign:"",layoutPriority:0};lang.extend(_a84,_a87.ChildWidgetProperties);return _a87;});},"dijit/layout/TabContainer":function(){define(["dojo/_base/lang","dojo/_base/declare","./_TabContainerBase","./TabController","./ScrollingTabController"],function(lang,_a8f,_a90,_a91,_a92){return _a8f("dijit.layout.TabContainer",_a90,{useMenu:true,useSlider:true,controllerWidget:"",_makeController:function(_a93){var cls=this.baseClass+"-tabs"+(this.doLayout?"":" dijitTabNoLayout"),_a91=typeof this.controllerWidget=="string"?lang.getObject(this.controllerWidget):this.controllerWidget;return new _a91({id:this.id+"_tablist",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,tabPosition:this.tabPosition,doLayout:this.doLayout,containerId:this.id,"class":cls,nested:this.nested,useMenu:this.useMenu,useSlider:this.useSlider,tabStripClass:this.tabStrip?this.baseClass+(this.tabStrip?"":"No")+"Strip":null},_a93);},postMixInProperties:function(){this.inherited(arguments);if(!this.controllerWidget){this.controllerWidget=(this.tabPosition=="top"||this.tabPosition=="bottom")&&!this.nested?_a92:_a91;}}});});},"dijit/layout/_TabContainerBase":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","./StackContainer","./utils","../_TemplatedMixin","dojo/text!./templates/TabContainer.html"],function(_a94,_a95,_a96,_a97,_a98,_a99,_a9a,_a9b){return _a94("dijit.layout._TabContainerBase",[_a98,_a9a],{tabPosition:"top",baseClass:"dijitTabContainer",tabStrip:false,nested:false,templateString:_a9b,postMixInProperties:function(){this.baseClass+=this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"");this.srcNodeRef&&_a97.set(this.srcNodeRef,"visibility","hidden");this.inherited(arguments);},buildRendering:function(){this.inherited(arguments);this.tablist=this._makeController(this.tablistNode);if(!this.doLayout){_a95.add(this.domNode,"dijitTabContainerNoLayout");}if(this.nested){_a95.add(this.domNode,"dijitTabContainerNested");_a95.add(this.tablist.containerNode,"dijitTabContainerTabListNested");_a95.add(this.tablistSpacer,"dijitTabContainerSpacerNested");_a95.add(this.containerNode,"dijitTabPaneWrapperNested");}else{_a95.add(this.domNode,"tabStrip-"+(this.tabStrip?"enabled":"disabled"));}},_setupChild:function(tab){_a95.add(tab.domNode,"dijitTabPane");this.inherited(arguments);},removeChild:function(_a9c){_a95.remove(_a9c.domNode,"dijitTabPane");this.inherited(arguments);},startup:function(){if(this._started){return;}this.tablist.startup();this.inherited(arguments);},layout:function(){if(!this._contentBox||typeof (this._contentBox.l)=="undefined"){return;}var sc=this.selectedChildWidget;if(this.doLayout){var _a9d=this.tabPosition.replace(/-h/,"");this.tablist.region=_a9d;var _a9e=[this.tablist,{domNode:this.tablistSpacer,region:_a9d},{domNode:this.containerNode,region:"center"}];_a99.layoutChildren(this.domNode,this._contentBox,_a9e);this._containerContentBox=_a99.marginBox2contentBox(this.containerNode,_a9e[2]);if(sc&&sc.resize){sc.resize(this._containerContentBox);}}else{if(this.tablist.resize){var s=this.tablist.domNode.style;s.width="0";var _a9f=_a96.getContentBox(this.domNode).w;s.width="";this.tablist.resize({w:_a9f});}if(sc&&sc.resize){sc.resize();}}},destroy:function(_aa0){if(this.tablist){this.tablist.destroy(_aa0);}this.inherited(arguments);}});});},"dijit/layout/TabController":function(){define(["dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-class","dojo/has","dojo/i18n","dojo/_base/lang","./StackController","../registry","../Menu","../MenuItem","dojo/text!./templates/_TabButton.html","dojo/i18n!../nls/common"],function(_aa1,dom,_aa2,_aa3,has,i18n,lang,_aa4,_aa5,Menu,_aa6,_aa7){var _aa8=_aa1("dijit.layout._TabButton"+(has("dojo-bidi")?"_NoBidi":""),_aa4.StackButton,{baseClass:"dijitTab",cssStateNodes:{closeNode:"dijitTabCloseButton"},templateString:_aa7,_setNameAttr:"focusNode",scrollOnFocus:false,buildRendering:function(){this.inherited(arguments);dom.setSelectable(this.containerNode,false);},startup:function(){this.inherited(arguments);var n=this.domNode;this.defer(function(){n.className=n.className;},1);},_setCloseButtonAttr:function(disp){this._set("closeButton",disp);_aa3.toggle(this.domNode,"dijitClosable",disp);this.closeNode.style.display=disp?"":"none";if(disp){var _aa9=i18n.getLocalization("dijit","common");if(this.closeNode){_aa2.set(this.closeNode,"title",_aa9.itemClose);}}},_setDisabledAttr:function(_aaa){this.inherited(arguments);if(this.closeNode){if(_aaa){_aa2.remove(this.closeNode,"title");}else{var _aab=i18n.getLocalization("dijit","common");_aa2.set(this.closeNode,"title",_aab.itemClose);}}},_setLabelAttr:function(_aac){this.inherited(arguments);if(!this.showLabel&&!this.params.title){this.iconNode.alt=lang.trim(this.containerNode.innerText||this.containerNode.textContent||"");}}});if(has("dojo-bidi")){_aa8=_aa1("dijit.layout._TabButton",_aa8,{_setLabelAttr:function(_aad){this.inherited(arguments);this.applyTextDir(this.iconNode,this.iconNode.alt);}});}var _aae=_aa1("dijit.layout.TabController",_aa4,{baseClass:"dijitTabController",templateString:"<div role='tablist' data-dojo-attach-event='onkeydown:onkeydown'></div>",tabPosition:"top",buttonWidget:_aa8,buttonWidgetCloseClass:"dijitTabCloseButton",postCreate:function(){this.inherited(arguments);var _aaf=new Menu({id:this.id+"_Menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,targetNodeIds:[this.domNode],selector:function(node){return _aa3.contains(node,"dijitClosable")&&!_aa3.contains(node,"dijitTabDisabled");}});this.own(_aaf);var _ab0=i18n.getLocalization("dijit","common"),_ab1=this;_aaf.addChild(new _aa6({label:_ab0.itemClose,ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir,onClick:function(evt){var _ab2=_aa5.byNode(this.getParent().currentTarget);_ab1.onCloseButtonClick(_ab2.page);}}));}});_aae.TabButton=_aa8;return _aae;});},"dijit/layout/StackController":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-construct","dojo/keys","dojo/_base/lang","dojo/on","dojo/topic","../focus","../registry","../_Widget","../_TemplatedMixin","../_Container","../form/ToggleButton","dojo/touch"],function(_ab3,_ab4,_ab5,_ab6,keys,lang,on,_ab7,_ab8,_ab9,_aba,_abb,_abc,_abd){var _abe=_ab4("dijit.layout._StackButton",_abd,{tabIndex:"-1",closeButton:false,_aria_attr:"aria-selected",buildRendering:function(evt){this.inherited(arguments);(this.focusNode||this.domNode).setAttribute("role","tab");}});var _abf=_ab4("dijit.layout.StackController",[_aba,_abb,_abc],{baseClass:"dijitStackController",templateString:"<span role='tablist' data-dojo-attach-event='onkeydown'></span>",containerId:"",buttonWidget:_abe,buttonWidgetCloseClass:"dijitStackCloseButton",pane2button:function(id){return _ab9.byId(this.id+"_"+id);},postCreate:function(){this.inherited(arguments);this.own(_ab7.subscribe(this.containerId+"-startup",lang.hitch(this,"onStartup")),_ab7.subscribe(this.containerId+"-addChild",lang.hitch(this,"onAddChild")),_ab7.subscribe(this.containerId+"-removeChild",lang.hitch(this,"onRemoveChild")),_ab7.subscribe(this.containerId+"-selectChild",lang.hitch(this,"onSelectChild")),_ab7.subscribe(this.containerId+"-containerKeyDown",lang.hitch(this,"onContainerKeyDown")));this.containerNode.dojoClick=true;this.own(on(this.containerNode,"click",lang.hitch(this,function(evt){var _ac0=_ab9.getEnclosingWidget(evt.target);if(_ac0!=this.containerNode&&!_ac0.disabled&&_ac0.page){for(var _ac1=evt.target;_ac1!==this.containerNode;_ac1=_ac1.parentNode){if(_ab5.contains(_ac1,this.buttonWidgetCloseClass)){this.onCloseButtonClick(_ac0.page);break;}else{if(_ac1==_ac0.domNode){this.onButtonClick(_ac0.page);break;}}}}})));},onStartup:function(info){this.textDir=info.textDir;_ab3.forEach(info.children,this.onAddChild,this);if(info.selected){this.onSelectChild(info.selected);}var _ac2=_ab9.byId(this.containerId).containerNode,_ac3=lang.hitch(this,"pane2button"),_ac4={"title":"label","showtitle":"showLabel","iconclass":"iconClass","closable":"closeButton","tooltip":"title","disabled":"disabled","textdir":"textdir"},_ac5=function(attr,_ac6){return on(_ac2,"attrmodified-"+attr,function(evt){var _ac7=_ac3(evt.detail&&evt.detail.widget&&evt.detail.widget.id);if(_ac7){_ac7.set(_ac6,evt.detail.newValue);}});};for(var attr in _ac4){this.own(_ac5(attr,_ac4[attr]));}},destroy:function(_ac8){this.destroyDescendants(_ac8);this.inherited(arguments);},onAddChild:function(page,_ac9){var Cls=lang.isString(this.buttonWidget)?lang.getObject(this.buttonWidget):this.buttonWidget;var _aca=new Cls({id:this.id+"_"+page.id,name:this.id+"_"+page.id,label:page.title,disabled:page.disabled,ownerDocument:this.ownerDocument,dir:page.dir,lang:page.lang,textDir:page.textDir||this.textDir,showLabel:page.showTitle,iconClass:page.iconClass,closeButton:page.closable,title:page.tooltip,page:page});this.addChild(_aca,_ac9);page.controlButton=_aca;if(!this._currentChild){this.onSelectChild(page);}var _acb=page._wrapper.getAttribute("aria-labelledby")?page._wrapper.getAttribute("aria-labelledby")+" "+_aca.id:_aca.id;page._wrapper.removeAttribute("aria-label");page._wrapper.setAttribute("aria-labelledby",_acb);},onRemoveChild:function(page){if(this._currentChild===page){this._currentChild=null;}var _acc=this.pane2button(page.id);if(_acc){this.removeChild(_acc);_acc.destroy();}delete page.controlButton;},onSelectChild:function(page){if(!page){return;}if(this._currentChild){var _acd=this.pane2button(this._currentChild.id);_acd.set("checked",false);_acd.focusNode.setAttribute("tabIndex","-1");}var _ace=this.pane2button(page.id);_ace.set("checked",true);this._currentChild=page;_ace.focusNode.setAttribute("tabIndex","0");var _acf=_ab9.byId(this.containerId);},onButtonClick:function(page){var _ad0=this.pane2button(page.id);_ab8.focus(_ad0.focusNode);if(this._currentChild&&this._currentChild.id===page.id){_ad0.set("checked",true);}var _ad1=_ab9.byId(this.containerId);_ad1.selectChild(page);},onCloseButtonClick:function(page){var _ad2=_ab9.byId(this.containerId);_ad2.closeChild(page);if(this._currentChild){var b=this.pane2button(this._currentChild.id);if(b){_ab8.focus(b.focusNode||b.domNode);}}},adjacent:function(_ad3){if(!this.isLeftToRight()&&(!this.tabPosition||/top|bottom/.test(this.tabPosition))){_ad3=!_ad3;}var _ad4=this.getChildren();var idx=_ab3.indexOf(_ad4,this.pane2button(this._currentChild.id)),_ad5=_ad4[idx];var _ad6;do{idx=(idx+(_ad3?1:_ad4.length-1))%_ad4.length;_ad6=_ad4[idx];}while(_ad6.disabled&&_ad6!=_ad5);return _ad6;},onkeydown:function(e,_ad7){if(this.disabled||e.altKey){return;}var _ad8=null;if(e.ctrlKey||!e._djpage){switch(e.keyCode){case keys.LEFT_ARROW:case keys.UP_ARROW:if(!e._djpage){_ad8=false;}break;case keys.PAGE_UP:if(e.ctrlKey){_ad8=false;}break;case keys.RIGHT_ARROW:case keys.DOWN_ARROW:if(!e._djpage){_ad8=true;}break;case keys.PAGE_DOWN:if(e.ctrlKey){_ad8=true;}break;case keys.HOME:var _ad9=this.getChildren();for(var idx=0;idx<_ad9.length;idx++){var _ada=_ad9[idx];if(!_ada.disabled){this.onButtonClick(_ada.page);break;}}e.stopPropagation();e.preventDefault();break;case keys.END:var _ad9=this.getChildren();for(var idx=_ad9.length-1;idx>=0;idx--){var _ada=_ad9[idx];if(!_ada.disabled){this.onButtonClick(_ada.page);break;}}e.stopPropagation();e.preventDefault();break;case keys.DELETE:case "W".charCodeAt(0):if(this._currentChild.closable&&(e.keyCode==keys.DELETE||e.ctrlKey)){this.onCloseButtonClick(this._currentChild);e.stopPropagation();e.preventDefault();}break;case keys.TAB:if(e.ctrlKey){this.onButtonClick(this.adjacent(!e.shiftKey).page);e.stopPropagation();e.preventDefault();}break;}if(_ad8!==null){this.onButtonClick(this.adjacent(_ad8).page);e.stopPropagation();e.preventDefault();}}},onContainerKeyDown:function(info){info.e._djpage=info.page;this.onkeydown(info.e);}});_abf.StackButton=_abe;return _abf;});},"dijit/Menu":function(){define(["require","dojo/_base/array","dojo/_base/declare","dojo/dom","dojo/dom-attr","dojo/dom-geometry","dojo/dom-style","dojo/keys","dojo/_base/lang","dojo/on","dojo/sniff","dojo/_base/window","dojo/window","./popup","./DropDownMenu","dojo/ready"],function(_adb,_adc,_add,dom,_ade,_adf,_ae0,keys,lang,on,has,win,_ae1,pm,_ae2,_ae3){if(has("dijit-legacy-requires")){_ae3(0,function(){var _ae4=["dijit/MenuItem","dijit/PopupMenuItem","dijit/CheckedMenuItem","dijit/MenuSeparator"];_adb(_ae4);});}return _add("dijit.Menu",_ae2,{constructor:function(){this._bindings=[];},targetNodeIds:[],selector:"",contextMenuForWindow:false,leftClickToOpen:false,refocus:true,postCreate:function(){if(this.contextMenuForWindow){this.bindDomNode(this.ownerDocumentBody);}else{_adc.forEach(this.targetNodeIds,this.bindDomNode,this);}this.inherited(arguments);},_iframeContentWindow:function(_ae5){return _ae1.get(this._iframeContentDocument(_ae5))||this._iframeContentDocument(_ae5)["__parent__"]||(_ae5.name&&document.frames[_ae5.name])||null;},_iframeContentDocument:function(_ae6){return _ae6.contentDocument||(_ae6.contentWindow&&_ae6.contentWindow.document)||(_ae6.name&&document.frames[_ae6.name]&&document.frames[_ae6.name].document)||null;},bindDomNode:function(node){node=dom.byId(node,this.ownerDocument);var cn;if(node.tagName.toLowerCase()=="iframe"){var _ae7=node,_ae8=this._iframeContentWindow(_ae7);cn=win.body(_ae8.document);}else{cn=(node==win.body(this.ownerDocument)?this.ownerDocument.documentElement:node);}var _ae9={node:node,iframe:_ae7};_ade.set(node,"_dijitMenu"+this.id,this._bindings.push(_ae9));var _aea=lang.hitch(this,function(cn){var _aeb=this.selector,_aec=_aeb?function(_aed){return on.selector(_aeb,_aed);}:function(_aee){return _aee;},self=this;return [on(cn,_aec(this.leftClickToOpen?"click":"contextmenu"),function(evt){evt.stopPropagation();evt.preventDefault();if((new Date()).getTime()<self._lastKeyDown+500){return;}self._scheduleOpen(this,_ae7,{x:evt.pageX,y:evt.pageY},evt.target);}),on(cn,_aec("keydown"),function(evt){if(evt.keyCode==93||(evt.shiftKey&&evt.keyCode==keys.F10)||(self.leftClickToOpen&&evt.keyCode==keys.SPACE)){evt.stopPropagation();evt.preventDefault();self._scheduleOpen(this,_ae7,null,evt.target);self._lastKeyDown=(new Date()).getTime();}})];});_ae9.connects=cn?_aea(cn):[];if(_ae7){_ae9.onloadHandler=lang.hitch(this,function(){var _aef=this._iframeContentWindow(_ae7),cn=win.body(_aef.document);_ae9.connects=_aea(cn);});if(_ae7.addEventListener){_ae7.addEventListener("load",_ae9.onloadHandler,false);}else{_ae7.attachEvent("onload",_ae9.onloadHandler);}}},unBindDomNode:function(_af0){var node;try{node=dom.byId(_af0,this.ownerDocument);}catch(e){return;}var _af1="_dijitMenu"+this.id;if(node&&_ade.has(node,_af1)){var bid=_ade.get(node,_af1)-1,b=this._bindings[bid],h;while((h=b.connects.pop())){h.remove();}var _af2=b.iframe;if(_af2){if(_af2.removeEventListener){_af2.removeEventListener("load",b.onloadHandler,false);}else{_af2.detachEvent("onload",b.onloadHandler);}}_ade.remove(node,_af1);delete this._bindings[bid];}},_scheduleOpen:function(_af3,_af4,_af5,_af6){if(!this._openTimer){this._openTimer=this.defer(function(){delete this._openTimer;this._openMyself({target:_af6,delegatedTarget:_af3,iframe:_af4,coords:_af5});},1);}},_openMyself:function(args){var _af7=args.target,_af8=args.iframe,_af9=args.coords,_afa=!_af9;this.currentTarget=args.delegatedTarget;if(_af9){if(_af8){var ifc=_adf.position(_af8,true),_afb=this._iframeContentWindow(_af8),_afc=_adf.docScroll(_afb.document);var cs=_ae0.getComputedStyle(_af8),tp=_ae0.toPixelValue,left=(has("ie")&&has("quirks")?0:tp(_af8,cs.paddingLeft))+(has("ie")&&has("quirks")?tp(_af8,cs.borderLeftWidth):0),top=(has("ie")&&has("quirks")?0:tp(_af8,cs.paddingTop))+(has("ie")&&has("quirks")?tp(_af8,cs.borderTopWidth):0);_af9.x+=ifc.x+left-_afc.x;_af9.y+=ifc.y+top-_afc.y;}}else{_af9=_adf.position(_af7,true);_af9.x+=10;_af9.y+=10;}var self=this;var _afd=this._focusManager.get("prevNode");var _afe=this._focusManager.get("curNode");var _aff=!_afe||(dom.isDescendant(_afe,this.domNode))?_afd:_afe;function _b00(){if(self.refocus&&_aff){_aff.focus();}pm.close(self);};pm.open({popup:this,x:_af9.x,y:_af9.y,onExecute:_b00,onCancel:_b00,orient:this.isLeftToRight()?"L":"R"});this.focus();if(!_afa){this.defer(function(){this._cleanUp(true);});}this._onBlur=function(){this.inherited("_onBlur",arguments);pm.close(this);};},destroy:function(){_adc.forEach(this._bindings,function(b){if(b){this.unBindDomNode(b.node);}},this);this.inherited(arguments);}});});},"dijit/layout/ScrollingTabController":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/fx","dojo/_base/lang","dojo/on","dojo/query","dojo/sniff","../registry","dojo/text!./templates/ScrollingTabController.html","dojo/text!./templates/_ScrollingTabControllerButton.html","./TabController","./utils","../_WidgetsInTemplateMixin","../Menu","../MenuItem","../form/Button","../_HasDropDown","dojo/NodeList-dom","../a11yclick"],function(_b01,_b02,_b03,_b04,_b05,fx,lang,on,_b06,has,_b07,_b08,_b09,_b0a,_b0b,_b0c,Menu,_b0d,_b0e,_b0f){var _b10=_b02("dijit.layout.ScrollingTabController",[_b0a,_b0c],{baseClass:"dijitTabController dijitScrollingTabController",templateString:_b08,useMenu:true,useSlider:true,tabStripClass:"",_minScroll:5,_setClassAttr:{node:"containerNode",type:"class"},buildRendering:function(){this.inherited(arguments);var n=this.domNode;this.scrollNode=this.tablistWrapper;this._initButtons();if(!this.tabStripClass){this.tabStripClass="dijitTabContainer"+this.tabPosition.charAt(0).toUpperCase()+this.tabPosition.substr(1).replace(/-.*/,"")+"None";_b03.add(n,"tabStrip-disabled");}_b03.add(this.tablistWrapper,this.tabStripClass);},onStartup:function(){this.inherited(arguments);_b05.set(this.domNode,"visibility","");this._postStartup=true;this.own(on(this.containerNode,"attrmodified-label, attrmodified-iconclass",lang.hitch(this,function(evt){if(this._dim){this.resize(this._dim);}})));},onAddChild:function(page,_b11){this.inherited(arguments);_b05.set(this.containerNode,"width",(_b05.get(this.containerNode,"width")+200)+"px");},onRemoveChild:function(page,_b12){var _b13=this.pane2button(page.id);if(this._selectedTab===_b13.domNode){this._selectedTab=null;}this.inherited(arguments);},_initButtons:function(){this._btnWidth=0;this._buttons=_b06("> .tabStripButton",this.domNode).filter(function(btn){if((this.useMenu&&btn==this._menuBtn.domNode)||(this.useSlider&&(btn==this._rightBtn.domNode||btn==this._leftBtn.domNode))){this._btnWidth+=_b04.getMarginSize(btn).w;return true;}else{_b05.set(btn,"display","none");return false;}},this);},_getTabsWidth:function(){var _b14=this.getChildren();if(_b14.length){var _b15=_b14[this.isLeftToRight()?0:_b14.length-1].domNode,_b16=_b14[this.isLeftToRight()?_b14.length-1:0].domNode;return _b16.offsetLeft+_b16.offsetWidth-_b15.offsetLeft;}else{return 0;}},_enableBtn:function(_b17){var _b18=this._getTabsWidth();_b17=_b17||_b05.get(this.scrollNode,"width");return _b18>0&&_b17<_b18;},resize:function(dim){this._dim=dim;this.scrollNode.style.height="auto";var cb=this._contentBox=_b0b.marginBox2contentBox(this.domNode,{h:0,w:dim.w});cb.h=this.scrollNode.offsetHeight;_b04.setContentSize(this.domNode,cb);var _b19=this._enableBtn(this._contentBox.w);this._buttons.style("display",_b19?"":"none");this._leftBtn.region="left";this._rightBtn.region="right";this._menuBtn.region=this.isLeftToRight()?"right":"left";_b0b.layoutChildren(this.domNode,this._contentBox,[this._menuBtn,this._leftBtn,this._rightBtn,{domNode:this.scrollNode,region:"center"}]);if(this._selectedTab){if(this._anim&&this._anim.status()=="playing"){this._anim.stop();}this.scrollNode.scrollLeft=this._convertToScrollLeft(this._getScrollForSelectedTab());}this._setButtonClass(this._getScroll());this._postResize=true;return {h:this._contentBox.h,w:dim.w};},_getScroll:function(){return (this.isLeftToRight()||has("ie")<8||(has("trident")&&has("quirks"))||has("webkit"))?this.scrollNode.scrollLeft:_b05.get(this.containerNode,"width")-_b05.get(this.scrollNode,"width")+(has("trident")||has("edge")?-1:1)*this.scrollNode.scrollLeft;},_convertToScrollLeft:function(val){if(this.isLeftToRight()||has("ie")<8||(has("trident")&&has("quirks"))||has("webkit")){return val;}else{var _b1a=_b05.get(this.containerNode,"width")-_b05.get(this.scrollNode,"width");return (has("trident")||has("edge")?-1:1)*(val-_b1a);}},onSelectChild:function(page,_b1b){var tab=this.pane2button(page.id);if(!tab){return;}var node=tab.domNode;if(node!=this._selectedTab){this._selectedTab=node;if(this._postResize){var sl=this._getScroll();if(sl>node.offsetLeft||sl+_b05.get(this.scrollNode,"width")<node.offsetLeft+_b05.get(node,"width")){var anim=this.createSmoothScroll();if(_b1b){anim.onEnd=function(){tab.focus();};}anim.play();}else{if(_b1b){tab.focus();}}}}this.inherited(arguments);},_getScrollBounds:function(){var _b1c=this.getChildren(),_b1d=_b05.get(this.scrollNode,"width"),_b1e=_b05.get(this.containerNode,"width"),_b1f=_b1e-_b1d,_b20=this._getTabsWidth();if(_b1c.length&&_b20>_b1d){return {min:this.isLeftToRight()?0:_b1c[_b1c.length-1].domNode.offsetLeft,max:this.isLeftToRight()?(_b1c[_b1c.length-1].domNode.offsetLeft+_b1c[_b1c.length-1].domNode.offsetWidth)-_b1d:_b1f};}else{var _b21=this.isLeftToRight()?0:_b1f;return {min:_b21,max:_b21};}},_getScrollForSelectedTab:function(){var w=this.scrollNode,n=this._selectedTab,_b22=_b05.get(this.scrollNode,"width"),_b23=this._getScrollBounds();var pos=(n.offsetLeft+_b05.get(n,"width")/2)-_b22/2;pos=Math.min(Math.max(pos,_b23.min),_b23.max);return pos;},createSmoothScroll:function(x){if(arguments.length>0){var _b24=this._getScrollBounds();x=Math.min(Math.max(x,_b24.min),_b24.max);}else{x=this._getScrollForSelectedTab();}if(this._anim&&this._anim.status()=="playing"){this._anim.stop();}var self=this,w=this.scrollNode,anim=new fx.Animation({beforeBegin:function(){if(this.curve){delete this.curve;}var oldS=w.scrollLeft,newS=self._convertToScrollLeft(x);anim.curve=new fx._Line(oldS,newS);},onAnimate:function(val){w.scrollLeft=val;}});this._anim=anim;this._setButtonClass(x);return anim;},_getBtnNode:function(e){var n=e.target;while(n&&!_b03.contains(n,"tabStripButton")){n=n.parentNode;}return n;},doSlideRight:function(e){this.doSlide(1,this._getBtnNode(e));},doSlideLeft:function(e){this.doSlide(-1,this._getBtnNode(e));},doSlide:function(_b25,node){if(node&&_b03.contains(node,"dijitTabDisabled")){return;}var _b26=_b05.get(this.scrollNode,"width");var d=(_b26*0.75)*_b25;var to=this._getScroll()+d;this._setButtonClass(to);this.createSmoothScroll(to).play();},_setButtonClass:function(_b27){var _b28=this._getScrollBounds();this._leftBtn.set("disabled",_b27<=_b28.min);this._rightBtn.set("disabled",_b27>=_b28.max);}});var _b29=_b02("dijit.layout._ScrollingTabControllerButtonMixin",null,{baseClass:"dijitTab tabStripButton",templateString:_b09,tabIndex:"",isFocusable:function(){return false;}});_b02("dijit.layout._ScrollingTabControllerButton",[_b0e,_b29]);_b02("dijit.layout._ScrollingTabControllerMenuButton",[_b0e,_b0f,_b29],{containerId:"",tabIndex:"-1",isLoaded:function(){return false;},loadDropDown:function(_b2a){this.dropDown=new Menu({id:this.containerId+"_menu",ownerDocument:this.ownerDocument,dir:this.dir,lang:this.lang,textDir:this.textDir});var _b2b=_b07.byId(this.containerId);_b01.forEach(_b2b.getChildren(),function(page){var _b2c=new _b0d({id:page.id+"_stcMi",label:page.title,iconClass:page.iconClass,disabled:page.disabled,ownerDocument:this.ownerDocument,dir:page.dir,lang:page.lang,textDir:page.textDir||_b2b.textDir,onClick:function(){_b2b.selectChild(page);}});this.dropDown.addChild(_b2c);},this);_b2a();},closeDropDown:function(_b2d){this.inherited(arguments);if(this.dropDown){this._popupStateNode.removeAttribute("aria-owns");this.dropDown.destroyRecursive();delete this.dropDown;}}});return _b10;});},"dijit/ProgressBar":function(){define(["require","dojo/_base/declare","dojo/dom-class","dojo/_base/lang","dojo/number","./_Widget","./_TemplatedMixin","dojo/text!./templates/ProgressBar.html"],function(_b2e,_b2f,_b30,lang,_b31,_b32,_b33,_b34){return _b2f("dijit.ProgressBar",[_b32,_b33],{progress:"0",value:"",maximum:100,places:0,indeterminate:false,label:"",name:"",templateString:_b34,_indeterminateHighContrastImagePath:_b2e.toUrl("./themes/a11y/indeterminate_progress.gif"),postMixInProperties:function(){this.inherited(arguments);if(!(this.params&&"value" in this.params)){this.value=this.indeterminate?Infinity:this.progress;}},buildRendering:function(){this.inherited(arguments);this.indeterminateHighContrastImage.setAttribute("src",this._indeterminateHighContrastImagePath.toString());this.update();},_setDirAttr:function(val){var rtl=val.toLowerCase()=="rtl";_b30.toggle(this.domNode,"dijitProgressBarRtl",rtl);_b30.toggle(this.domNode,"dijitProgressBarIndeterminateRtl",this.indeterminate&&rtl);this.inherited(arguments);},update:function(_b35){lang.mixin(this,_b35||{});var tip=this.internalProgress,ap=this.domNode;var _b36=1;if(this.indeterminate){ap.removeAttribute("aria-valuenow");}else{if(String(this.progress).indexOf("%")!=-1){_b36=Math.min(parseFloat(this.progress)/100,1);this.progress=_b36*this.maximum;}else{this.progress=Math.min(this.progress,this.maximum);_b36=this.maximum?this.progress/this.maximum:0;}ap.setAttribute("aria-valuenow",this.progress);}ap.setAttribute("aria-labelledby",this.labelNode.id);ap.setAttribute("aria-valuemin",0);ap.setAttribute("aria-valuemax",this.maximum);this.labelNode.innerHTML=this.report(_b36);_b30.toggle(this.domNode,"dijitProgressBarIndeterminate",this.indeterminate);_b30.toggle(this.domNode,"dijitProgressBarIndeterminateRtl",this.indeterminate&&!this.isLeftToRight());tip.style.width=(_b36*100)+"%";this.onChange();},_setValueAttr:function(v){this._set("value",v);if(v==Infinity){this.update({indeterminate:true});}else{this.update({indeterminate:false,progress:v});}},_setLabelAttr:function(_b37){this._set("label",_b37);this.update();},_setIndeterminateAttr:function(_b38){this._set("indeterminate",_b38);this.update();},report:function(_b39){return this.label?this.label:(this.indeterminate?"&#160;":_b31.format(_b39,{type:"percent",places:this.places,locale:this.lang}));},onChange:function(){}});});},"dojo/number":function(){define(["./_base/lang","./i18n","./i18n!./cldr/nls/number","./string","./regexp"],function(lang,i18n,_b3a,_b3b,_b3c){var _b3d={};lang.setObject("dojo.number",_b3d);_b3d.format=function(_b3e,_b3f){_b3f=lang.mixin({},_b3f||{});var _b40=i18n.normalizeLocale(_b3f.locale),_b41=i18n.getLocalization("dojo.cldr","number",_b40);_b3f.customs=_b41;var _b42=_b3f.pattern||_b41[(_b3f.type||"decimal")+"Format"];if(isNaN(_b3e)||Math.abs(_b3e)==Infinity){return null;}return _b3d._applyPattern(_b3e,_b42,_b3f);};_b3d._numberPatternRE=/[#0,]*[#0](?:\.0*#*)?/;_b3d._applyPattern=function(_b43,_b44,_b45){_b45=_b45||{};var _b46=_b45.customs.group,_b47=_b45.customs.decimal,_b48=_b44.split(";"),_b49=_b48[0];_b44=_b48[(_b43<0)?1:0]||("-"+_b49);if(_b44.indexOf("%")!=-1){_b43*=100;}else{if(_b44.indexOf("‰")!=-1){_b43*=1000;}else{if(_b44.indexOf("¤")!=-1){_b46=_b45.customs.currencyGroup||_b46;_b47=_b45.customs.currencyDecimal||_b47;_b44=_b44.replace(/([\s\xa0\u202f]*)(\u00a4{1,3})([\s\xa0\u202f]*)/,function(_b4a,_b4b,_b4c,_b4d){var prop=["symbol","currency","displayName"][_b4c.length-1],_b4e=_b45[prop]||_b45.currency||"";if(!_b4e){return "";}return _b4b+_b4e+_b4d;});}else{if(_b44.indexOf("E")!=-1){throw new Error("exponential notation not supported");}}}}var _b4f=_b3d._numberPatternRE;var _b50=_b49.match(_b4f);if(!_b50){throw new Error("unable to find a number expression in pattern: "+_b44);}if(_b45.fractional===false){_b45.places=0;}return _b44.replace(_b4f,_b3d._formatAbsolute(_b43,_b50[0],{decimal:_b47,group:_b46,places:_b45.places,round:_b45.round}));};_b3d.round=function(_b51,_b52,_b53){var _b54=10/(_b53||10);return (_b54*+_b51).toFixed(_b52)/_b54;};if((0.9).toFixed()==0){var _b55=_b3d.round;_b3d.round=function(v,p,m){var d=Math.pow(10,-p||0),a=Math.abs(v);if(!v||a>=d){d=0;}else{a/=d;if(a<0.5||a>=0.95){d=0;}}return _b55(v,p,m)+(v>0?d:-d);};}_b3d._formatAbsolute=function(_b56,_b57,_b58){_b58=_b58||{};if(_b58.places===true){_b58.places=0;}if(_b58.places===Infinity){_b58.places=6;}var _b59=_b57.split("."),_b5a=typeof _b58.places=="string"&&_b58.places.indexOf(","),_b5b=_b58.places;if(_b5a){_b5b=_b58.places.substring(_b5a+1);}else{if(!(_b5b>=0)){_b5b=(_b59[1]||[]).length;}}if(!(_b58.round<0)){_b56=_b3d.round(_b56,_b5b,_b58.round);}var _b5c=String(Math.abs(_b56)).split("."),_b5d=_b5c[1]||"";if(_b59[1]||_b58.places){if(_b5a){_b58.places=_b58.places.substring(0,_b5a);}var pad=_b58.places!==undefined?_b58.places:(_b59[1]&&_b59[1].lastIndexOf("0")+1);if(pad>_b5d.length){_b5c[1]=_b3b.pad(_b5d,pad,"0",true);}if(_b5b<_b5d.length){_b5c[1]=_b5d.substr(0,_b5b);}}else{if(_b5c[1]){_b5c.pop();}}var _b5e=_b59[0].replace(",","");pad=_b5e.indexOf("0");if(pad!=-1){pad=_b5e.length-pad;if(pad>_b5c[0].length){_b5c[0]=_b3b.pad(_b5c[0],pad);}if(_b5e.indexOf("#")==-1){_b5c[0]=_b5c[0].substr(_b5c[0].length-pad);}}var _b5f=_b59[0].lastIndexOf(","),_b60,_b61;if(_b5f!=-1){_b60=_b59[0].length-_b5f-1;var _b62=_b59[0].substr(0,_b5f);_b5f=_b62.lastIndexOf(",");if(_b5f!=-1){_b61=_b62.length-_b5f-1;}}var _b63=[];for(var _b64=_b5c[0];_b64;){var off=_b64.length-_b60;_b63.push((off>0)?_b64.substr(off):_b64);_b64=(off>0)?_b64.slice(0,off):"";if(_b61){_b60=_b61;_b61=undefined;}}_b5c[0]=_b63.reverse().join(_b58.group||",");return _b5c.join(_b58.decimal||".");};_b3d.regexp=function(_b65){return _b3d._parseInfo(_b65).regexp;};_b3d._parseInfo=function(_b66){_b66=_b66||{};var _b67=i18n.normalizeLocale(_b66.locale),_b68=i18n.getLocalization("dojo.cldr","number",_b67),_b69=_b66.pattern||_b68[(_b66.type||"decimal")+"Format"],_b6a=_b68.group,_b6b=_b68.decimal,_b6c=1;if(_b69.indexOf("%")!=-1){_b6c/=100;}else{if(_b69.indexOf("‰")!=-1){_b6c/=1000;}else{var _b6d=_b69.indexOf("¤")!=-1;if(_b6d){_b6a=_b68.currencyGroup||_b6a;_b6b=_b68.currencyDecimal||_b6b;}}}var _b6e=_b69.split(";");if(_b6e.length==1){_b6e.push("-"+_b6e[0]);}var re=_b3c.buildGroupRE(_b6e,function(_b6f){_b6f="(?:"+_b3c.escapeString(_b6f,".")+")";return _b6f.replace(_b3d._numberPatternRE,function(_b70){var _b71={signed:false,separator:_b66.strict?_b6a:[_b6a,""],fractional:_b66.fractional,decimal:_b6b,exponent:false},_b72=_b70.split("."),_b73=_b66.places;if(_b72.length==1&&_b6c!=1){_b72[1]="###";}if(_b72.length==1||_b73===0){_b71.fractional=false;}else{if(_b73===undefined){_b73=_b66.pattern?_b72[1].lastIndexOf("0")+1:Infinity;}if(_b73&&_b66.fractional==undefined){_b71.fractional=true;}if(!_b66.places&&(_b73<_b72[1].length)){_b73+=","+_b72[1].length;}_b71.places=_b73;}var _b74=_b72[0].split(",");if(_b74.length>1){_b71.groupSize=_b74.pop().length;if(_b74.length>1){_b71.groupSize2=_b74.pop().length;}}return "("+_b3d._realNumberRegexp(_b71)+")";});},true);if(_b6d){re=re.replace(/([\s\xa0\u202f]*)(\u00a4{1,3})([\s\xa0\u202f]*)/g,function(_b75,_b76,_b77,_b78){var prop=["symbol","currency","displayName"][_b77.length-1],_b79=_b3c.escapeString(_b66[prop]||_b66.currency||"");if(!_b79){return "";}_b76=_b76?"[\\s\\xa0\\u202f]":"";_b78=_b78?"[\\s\\xa0\\u202f]":"";if(!_b66.strict){if(_b76){_b76+="*";}if(_b78){_b78+="*";}return "(?:"+_b76+_b79+_b78+")?";}return _b76+_b79+_b78;});}return {regexp:re.replace(/[\xa0\u202f ]/g,"[\\s\\xa0\\u202f]"),group:_b6a,decimal:_b6b,factor:_b6c};};_b3d.parse=function(_b7a,_b7b){var info=_b3d._parseInfo(_b7b),_b7c=(new RegExp("^"+info.regexp+"$")).exec(_b7a);if(!_b7c){return NaN;}var _b7d=_b7c[1];if(!_b7c[1]){if(!_b7c[2]){return NaN;}_b7d=_b7c[2];info.factor*=-1;}_b7d=_b7d.replace(new RegExp("["+info.group+"\\s\\xa0\\u202f"+"]","g"),"").replace(info.decimal,".");return _b7d*info.factor;};_b3d._realNumberRegexp=function(_b7e){_b7e=_b7e||{};if(!("places" in _b7e)){_b7e.places=Infinity;}if(typeof _b7e.decimal!="string"){_b7e.decimal=".";}if(!("fractional" in _b7e)||/^0/.test(_b7e.places)){_b7e.fractional=[true,false];}if(!("exponent" in _b7e)){_b7e.exponent=[true,false];}if(!("eSigned" in _b7e)){_b7e.eSigned=[true,false];}var _b7f=_b3d._integerRegexp(_b7e),_b80=_b3c.buildGroupRE(_b7e.fractional,function(q){var re="";if(q&&(_b7e.places!==0)){re="\\"+_b7e.decimal;if(_b7e.places==Infinity){re="(?:"+re+"\\d+)?";}else{re+="\\d{"+_b7e.places+"}";}}return re;},true);var _b81=_b3c.buildGroupRE(_b7e.exponent,function(q){if(q){return "([eE]"+_b3d._integerRegexp({signed:_b7e.eSigned})+")";}return "";});var _b82=_b7f+_b80;if(_b80){_b82="(?:(?:"+_b82+")|(?:"+_b80+"))";}return _b82+_b81;};_b3d._integerRegexp=function(_b83){_b83=_b83||{};if(!("signed" in _b83)){_b83.signed=[true,false];}if(!("separator" in _b83)){_b83.separator="";}else{if(!("groupSize" in _b83)){_b83.groupSize=3;}}var _b84=_b3c.buildGroupRE(_b83.signed,function(q){return q?"[-+]":"";},true);var _b85=_b3c.buildGroupRE(_b83.separator,function(sep){if(!sep){return "(?:\\d+)";}sep=_b3c.escapeString(sep);if(sep==" "){sep="\\s";}else{if(sep==" "){sep="\\s\\xa0";}else{if(sep==" "){sep="\\s\\u202f";}}}var grp=_b83.groupSize,grp2=_b83.groupSize2;if(grp2){var _b86="(?:0|[1-9]\\d{0,"+(grp2-1)+"}(?:["+sep+"]\\d{"+grp2+"})*["+sep+"]\\d{"+grp+"})";return ((grp-grp2)>0)?"(?:"+_b86+"|(?:0|[1-9]\\d{0,"+(grp-1)+"}))":_b86;}return "(?:0|[1-9]\\d{0,"+(grp-1)+"}(?:["+sep+"]\\d{"+grp+"})*)";},true);return _b84+_b85;};return _b3d;});},"dijit/Toolbar":function(){define(["require","dojo/_base/declare","dojo/has","dojo/keys","dojo/ready","./_Widget","./_KeyNavContainer","./_TemplatedMixin"],function(_b87,_b88,has,keys,_b89,_b8a,_b8b,_b8c){if(has("dijit-legacy-requires")){_b89(0,function(){var _b8d=["dijit/ToolbarSeparator"];_b87(_b8d);});}return _b88("dijit.Toolbar",[_b8a,_b8c,_b8b],{templateString:"<div class=\"dijit\" role=\"toolbar\" tabIndex=\"${tabIndex}\" data-dojo-attach-point=\"containerNode\">"+"</div>",baseClass:"dijitToolbar",_onLeftArrow:function(){this.focusPrev();},_onRightArrow:function(){this.focusNext();}});});},"dijit/TooltipDialog":function(){define(["dojo/_base/declare","dojo/dom-class","dojo/has","dojo/keys","dojo/_base/lang","dojo/on","./focus","./layout/ContentPane","./_DialogMixin","./form/_FormMixin","./_TemplatedMixin","dojo/text!./templates/TooltipDialog.html","./main"],function(_b8e,_b8f,has,keys,lang,on,_b90,_b91,_b92,_b93,_b94,_b95,_b96){var _b97=_b8e("dijit.TooltipDialog",[_b91,_b94,_b93,_b92],{title:"",doLayout:false,autofocus:true,baseClass:"dijitTooltipDialog",_firstFocusItem:null,_lastFocusItem:null,templateString:_b95,_setTitleAttr:"containerNode",postCreate:function(){this.inherited(arguments);this.own(on(this.domNode,"keydown",lang.hitch(this,"_onKey")));},orient:function(node,_b98,_b99){var newC={"MR-ML":"dijitTooltipRight","ML-MR":"dijitTooltipLeft","TM-BM":"dijitTooltipAbove","BM-TM":"dijitTooltipBelow","BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft","BR-TL":"dijitTooltipBelow dijitTooltipABLeft","BL-TR":"dijitTooltipBelow dijitTooltipABRight","TL-BR":"dijitTooltipAbove dijitTooltipABRight","TR-BL":"dijitTooltipAbove dijitTooltipABLeft"}[_b98+"-"+_b99];_b8f.replace(this.domNode,newC,this._currentOrientClass||"");this._currentOrientClass=newC;},focus:function(){this._getFocusItems();_b90.focus(this._firstFocusItem);},onOpen:function(pos){this.orient(this.domNode,pos.aroundCorner,pos.corner);var _b9a=pos.aroundNodePos;if(pos.corner.charAt(0)=="M"&&pos.aroundCorner.charAt(0)=="M"){this.connectorNode.style.top=_b9a.y+((_b9a.h-this.connectorNode.offsetHeight)>>1)-pos.y+"px";this.connectorNode.style.left="";}else{if(pos.corner.charAt(1)=="M"&&pos.aroundCorner.charAt(1)=="M"){this.connectorNode.style.left=_b9a.x+((_b9a.w-this.connectorNode.offsetWidth)>>1)-pos.x+"px";}}this._onShow();},onClose:function(){this.onHide();},_onKey:function(evt){if(evt.keyCode==keys.ESCAPE){this.defer("onCancel");evt.stopPropagation();evt.preventDefault();}else{if(evt.keyCode==keys.TAB){var node=evt.target;this._getFocusItems();if(this._firstFocusItem==this._lastFocusItem){evt.stopPropagation();evt.preventDefault();}else{if(node==this._firstFocusItem&&evt.shiftKey){_b90.focus(this._lastFocusItem);evt.stopPropagation();evt.preventDefault();}else{if(node==this._lastFocusItem&&!evt.shiftKey){_b90.focus(this._firstFocusItem);evt.stopPropagation();evt.preventDefault();}else{evt.stopPropagation();}}}}}}});if(has("dojo-bidi")){_b97.extend({_setTitleAttr:function(_b9b){this.containerNode.title=(this.textDir&&this.enforceTextDirWithUcc)?this.enforceTextDirWithUcc(null,_b9b):_b9b;this._set("title",_b9b);},_setTextDirAttr:function(_b9c){if(!this._created||this.textDir!=_b9c){this._set("textDir",_b9c);if(this.textDir&&this.title){this.containerNode.title=this.enforceTextDirWithUcc(null,this.title);}}}});}return _b97;});},"dijit/Tree":function(){define(["dojo/_base/array","dojo/aspect","dojo/cookie","dojo/_base/declare","dojo/Deferred","dojo/promise/all","dojo/dom","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/errors/create","dojo/fx","dojo/has","dojo/_base/kernel","dojo/keys","dojo/_base/lang","dojo/on","dojo/topic","dojo/touch","dojo/when","./a11yclick","./focus","./registry","./_base/manager","./_Widget","./_TemplatedMixin","./_Container","./_Contained","./_CssStateMixin","./_KeyNavMixin","dojo/text!./templates/TreeNode.html","dojo/text!./templates/Tree.html","./tree/TreeStoreModel","./tree/ForestStoreModel","./tree/_dndSelector","dojo/query!css2"],function(_b9d,_b9e,_b9f,_ba0,_ba1,all,dom,_ba2,_ba3,_ba4,_ba5,_ba6,has,_ba7,keys,lang,on,_ba8,_ba9,when,_baa,_bab,_bac,_bad,_bae,_baf,_bb0,_bb1,_bb2,_bb3,_bb4,_bb5,_bb6,_bb7,_bb8){function _bb9(d){return lang.delegate(d.promise||d,{addCallback:function(_bba){this.then(_bba);},addErrback:function(_bbb){this.otherwise(_bbb);}});};var _bbc=_ba0("dijit._TreeNode",[_bae,_baf,_bb0,_bb1,_bb2],{item:null,isTreeNode:true,label:"",_setLabelAttr:function(val){this.labelNode[this.labelType=="html"?"innerHTML":"innerText" in this.labelNode?"innerText":"textContent"]=val;this._set("label",val);if(has("dojo-bidi")){this.applyTextDir(this.labelNode);}},labelType:"text",isExpandable:null,isExpanded:false,state:"NotLoaded",templateString:_bb4,baseClass:"dijitTreeNode",cssStateNodes:{rowNode:"dijitTreeRow"},_setTooltipAttr:{node:"rowNode",type:"attribute",attribute:"title"},buildRendering:function(){this.inherited(arguments);this._setExpando();this._updateItemClasses(this.item);if(this.isExpandable){this.labelNode.setAttribute("aria-expanded",this.isExpanded);}this.setSelected(false);},_setIndentAttr:function(_bbd){var _bbe=(Math.max(_bbd,0)*this.tree._nodePixelIndent)+"px";_ba4.set(this.domNode,"backgroundPosition",_bbe+" 0px");_ba4.set(this.rowNode,this.isLeftToRight()?"paddingLeft":"paddingRight",_bbe);_b9d.forEach(this.getChildren(),function(_bbf){_bbf.set("indent",_bbd+1);});this._set("indent",_bbd);},markProcessing:function(){this.state="Loading";this._setExpando(true);},unmarkProcessing:function(){this._setExpando(false);},_updateItemClasses:function(item){var tree=this.tree,_bc0=tree.model;if(tree._v10Compat&&item===_bc0.root){item=null;}this._applyClassAndStyle(item,"icon","Icon");this._applyClassAndStyle(item,"label","Label");this._applyClassAndStyle(item,"row","Row");this.tree._startPaint(true);},_applyClassAndStyle:function(item,_bc1,_bc2){var _bc3="_"+_bc1+"Class";var _bc4=_bc1+"Node";var _bc5=this[_bc3];this[_bc3]=this.tree["get"+_bc2+"Class"](item,this.isExpanded);_ba2.replace(this[_bc4],this[_bc3]||"",_bc5||"");_ba4.set(this[_bc4],this.tree["get"+_bc2+"Style"](item,this.isExpanded)||{});},_updateLayout:function(){var _bc6=this.getParent(),_bc7=!_bc6||!_bc6.rowNode||_bc6.rowNode.style.display=="none";_ba2.toggle(this.domNode,"dijitTreeIsRoot",_bc7);_ba2.toggle(this.domNode,"dijitTreeIsLast",!_bc7&&!this.getNextSibling());},_setExpando:function(_bc8){var _bc9=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"],_bca=["*","-","+","*"],idx=_bc8?0:(this.isExpandable?(this.isExpanded?1:2):3);_ba2.replace(this.expandoNode,_bc9[idx],_bc9);this.expandoNodeText.innerHTML=_bca[idx];},expand:function(){if(this._expandDeferred){return _bb9(this._expandDeferred);}if(this._collapseDeferred){this._collapseDeferred.cancel();delete this._collapseDeferred;}this.isExpanded=true;this.labelNode.setAttribute("aria-expanded","true");if(this.tree.showRoot||this!==this.tree.rootNode){this.containerNode.setAttribute("role","group");}_ba2.add(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","true");}var _bcb=_ba6.wipeIn({node:this.containerNode,duration:_bad.defaultDuration});var def=(this._expandDeferred=new _ba1(function(){_bcb.stop();}));_b9e.after(_bcb,"onEnd",function(){def.resolve(true);},true);_bcb.play();return _bb9(def);},collapse:function(){if(this._collapseDeferred){return _bb9(this._collapseDeferred);}if(this._expandDeferred){this._expandDeferred.cancel();delete this._expandDeferred;}this.isExpanded=false;this.labelNode.setAttribute("aria-expanded","false");if(this==this.tree.rootNode&&this.tree.showRoot){this.tree.domNode.setAttribute("aria-expanded","false");}_ba2.remove(this.contentNode,"dijitTreeContentExpanded");this._setExpando();this._updateItemClasses(this.item);var _bcc=_ba6.wipeOut({node:this.containerNode,duration:_bad.defaultDuration});var def=(this._collapseDeferred=new _ba1(function(){_bcc.stop();}));_b9e.after(_bcc,"onEnd",function(){def.resolve(true);},true);_bcc.play();return _bb9(def);},indent:0,setChildItems:function(_bcd){var tree=this.tree,_bce=tree.model,defs=[];var _bcf=tree.focusedChild;var _bd0=this.getChildren();_b9d.forEach(_bd0,function(_bd1){_bb0.prototype.removeChild.call(this,_bd1);},this);this.defer(function(){_b9d.forEach(_bd0,function(node){if(!node._destroyed&&!node.getParent()){tree.dndController.removeTreeNode(node);function _bd2(node){var id=_bce.getIdentity(node.item),ary=tree._itemNodesMap[id];if(ary.length==1){delete tree._itemNodesMap[id];}else{var _bd3=_b9d.indexOf(ary,node);if(_bd3!=-1){ary.splice(_bd3,1);}}_b9d.forEach(node.getChildren(),_bd2);};_bd2(node);if(tree.persist){var _bd4=_b9d.map(node.getTreePath(),function(item){return tree.model.getIdentity(item);}).join("/");for(var path in tree._openedNodes){if(path.substr(0,_bd4.length)==_bd4){delete tree._openedNodes[path];}}tree._saveExpandedNodes();}if(tree.lastFocusedChild&&!dom.isDescendant(tree.lastFocusedChild.domNode,tree.domNode)){delete tree.lastFocusedChild;}if(_bcf&&!dom.isDescendant(_bcf.domNode,tree.domNode)){tree.focus();}node.destroyRecursive();}});});this.state="Loaded";if(_bcd&&_bcd.length>0){this.isExpandable=true;_b9d.forEach(_bcd,function(item){var id=_bce.getIdentity(item),_bd5=tree._itemNodesMap[id],node;if(_bd5){for(var i=0;i<_bd5.length;i++){if(_bd5[i]&&!_bd5[i].getParent()){node=_bd5[i];node.set("indent",this.indent+1);break;}}}if(!node){node=this.tree._createTreeNode({item:item,tree:tree,isExpandable:_bce.mayHaveChildren(item),label:tree.getLabel(item),labelType:(tree.model&&tree.model.labelType)||"text",tooltip:tree.getTooltip(item),ownerDocument:tree.ownerDocument,dir:tree.dir,lang:tree.lang,textDir:tree.textDir,indent:this.indent+1});if(_bd5){_bd5.push(node);}else{tree._itemNodesMap[id]=[node];}}this.addChild(node);if(this.tree.autoExpand||this.tree._state(node)){defs.push(tree._expandNode(node));}},this);_b9d.forEach(this.getChildren(),function(_bd6){_bd6._updateLayout();});}else{this.isExpandable=false;}if(this._setExpando){this._setExpando(false);}this._updateItemClasses(this.item);var def=all(defs);this.tree._startPaint(def);return _bb9(def);},getTreePath:function(){var node=this;var path=[];while(node&&node!==this.tree.rootNode){path.unshift(node.item);node=node.getParent();}path.unshift(this.tree.rootNode.item);return path;},getIdentity:function(){return this.tree.model.getIdentity(this.item);},removeChild:function(node){this.inherited(arguments);var _bd7=this.getChildren();if(_bd7.length==0){this.isExpandable=false;this.collapse();}_b9d.forEach(_bd7,function(_bd8){_bd8._updateLayout();});},makeExpandable:function(){this.isExpandable=true;this._setExpando(false);},setSelected:function(_bd9){this.labelNode.setAttribute("aria-selected",_bd9?"true":"false");_ba2.toggle(this.rowNode,"dijitTreeRowSelected",_bd9);},focus:function(){_bab.focus(this.focusNode);}});if(has("dojo-bidi")){_bbc.extend({_setTextDirAttr:function(_bda){if(_bda&&((this.textDir!=_bda)||!this._created)){this._set("textDir",_bda);this.applyTextDir(this.labelNode);_b9d.forEach(this.getChildren(),function(_bdb){_bdb.set("textDir",_bda);},this);}}});}var Tree=_ba0("dijit.Tree",[_bae,_bb3,_baf,_bb2],{baseClass:"dijitTree",store:null,model:null,query:null,label:"",showRoot:true,childrenAttr:["children"],paths:[],path:[],selectedItems:null,selectedItem:null,openOnClick:false,openOnDblClick:false,templateString:_bb5,persist:false,autoExpand:false,dndController:_bb8,dndParams:["onDndDrop","itemCreator","onDndCancel","checkAcceptance","checkItemAcceptance","dragThreshold","betweenThreshold"],onDndDrop:null,itemCreator:null,onDndCancel:null,checkAcceptance:null,checkItemAcceptance:null,dragThreshold:5,betweenThreshold:0,_nodePixelIndent:19,_publish:function(_bdc,_bdd){_ba8.publish(this.id,lang.mixin({tree:this,event:_bdc},_bdd||{}));},postMixInProperties:function(){this.tree=this;if(this.autoExpand){this.persist=false;}this._itemNodesMap={};if(!this.cookieName&&this.id){this.cookieName=this.id+"SaveStateCookie";}this.expandChildrenDeferred=new _ba1();this.pendingCommandsPromise=this.expandChildrenDeferred.promise;this.inherited(arguments);},postCreate:function(){this._initState();var self=this;this.own(on(this.containerNode,on.selector(".dijitTreeNode",_ba9.enter),function(evt){self._onNodeMouseEnter(_bac.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeNode",_ba9.leave),function(evt){self._onNodeMouseLeave(_bac.byNode(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_baa.press),function(evt){self._onNodePress(_bac.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow",_baa),function(evt){self._onClick(_bac.getEnclosingWidget(this),evt);}),on(this.containerNode,on.selector(".dijitTreeRow","dblclick"),function(evt){self._onDblClick(_bac.getEnclosingWidget(this),evt);}));if(!this.model){this._store2model();}this.own(_b9e.after(this.model,"onChange",lang.hitch(this,"_onItemChange"),true),_b9e.after(this.model,"onChildrenChange",lang.hitch(this,"_onItemChildrenChange"),true),_b9e.after(this.model,"onDelete",lang.hitch(this,"_onItemDelete"),true));this.inherited(arguments);if(this.dndController){if(lang.isString(this.dndController)){this.dndController=lang.getObject(this.dndController);}var _bde={};for(var i=0;i<this.dndParams.length;i++){if(this[this.dndParams[i]]){_bde[this.dndParams[i]]=this[this.dndParams[i]];}}this.dndController=new this.dndController(this,_bde);}this._load();this.onLoadDeferred=_bb9(this.pendingCommandsPromise);this.onLoadDeferred.then(lang.hitch(this,"onLoad"));},_store2model:function(){this._v10Compat=true;_ba7.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");var _bdf={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};if(this.params.mayHaveChildren){_bdf.mayHaveChildren=lang.hitch(this,"mayHaveChildren");}if(this.params.getItemChildren){_bdf.getChildren=lang.hitch(this,function(item,_be0,_be1){this.getItemChildren((this._v10Compat&&item===this.model.root)?null:item,_be0,_be1);});}this.model=new _bb7(_bdf);this.showRoot=Boolean(this.label);},onLoad:function(){},_load:function(){this.model.getRoot(lang.hitch(this,function(item){var rn=(this.rootNode=this.tree._createTreeNode({item:item,tree:this,isExpandable:true,label:this.label||this.getLabel(item),labelType:this.model.labelType||"text",textDir:this.textDir,indent:this.showRoot?0:-1}));if(!this.showRoot){rn.rowNode.style.display="none";this.domNode.setAttribute("role","presentation");this.domNode.removeAttribute("aria-expanded");this.domNode.removeAttribute("aria-multiselectable");if(this["aria-label"]){rn.containerNode.setAttribute("aria-label",this["aria-label"]);this.domNode.removeAttribute("aria-label");}else{if(this["aria-labelledby"]){rn.containerNode.setAttribute("aria-labelledby",this["aria-labelledby"]);this.domNode.removeAttribute("aria-labelledby");}}rn.labelNode.setAttribute("role","presentation");rn.labelNode.removeAttribute("aria-selected");rn.containerNode.setAttribute("role","tree");rn.containerNode.setAttribute("aria-expanded","true");rn.containerNode.setAttribute("aria-multiselectable",!this.dndController.singular);}else{this.domNode.setAttribute("aria-multiselectable",!this.dndController.singular);this.rootLoadingIndicator.style.display="none";}this.containerNode.appendChild(rn.domNode);var _be2=this.model.getIdentity(item);if(this._itemNodesMap[_be2]){this._itemNodesMap[_be2].push(rn);}else{this._itemNodesMap[_be2]=[rn];}rn._updateLayout();this._expandNode(rn).then(lang.hitch(this,function(){if(!this._destroyed){this.rootLoadingIndicator.style.display="none";this.expandChildrenDeferred.resolve(true);}}));}),lang.hitch(this,function(err){console.error(this,": error loading root: ",err);}));},getNodesByItem:function(item){if(!item){return [];}var _be3=lang.isString(item)?item:this.model.getIdentity(item);return [].concat(this._itemNodesMap[_be3]);},_setSelectedItemAttr:function(item){this.set("selectedItems",[item]);},_setSelectedItemsAttr:function(_be4){var tree=this;return this.pendingCommandsPromise=this.pendingCommandsPromise.always(lang.hitch(this,function(){var _be5=_b9d.map(_be4,function(item){return (!item||lang.isString(item))?item:tree.model.getIdentity(item);});var _be6=[];_b9d.forEach(_be5,function(id){_be6=_be6.concat(tree._itemNodesMap[id]||[]);});this.set("selectedNodes",_be6);}));},_setPathAttr:function(path){if(path.length){return _bb9(this.set("paths",[path]).then(function(_be7){return _be7[0];}));}else{return _bb9(this.set("paths",[]).then(function(_be8){return _be8[0];}));}},_setPathsAttr:function(_be9){var tree=this;function _bea(path,_beb){var _bec=path.shift();var _bed=_b9d.filter(_beb,function(node){return node.getIdentity()==_bec;})[0];if(!!_bed){if(path.length){return tree._expandNode(_bed).then(function(){return _bea(path,_bed.getChildren());});}else{return _bed;}}else{throw new Tree.PathError("Could not expand path at "+_bec);}};return _bb9(this.pendingCommandsPromise=this.pendingCommandsPromise.always(function(){return all(_b9d.map(_be9,function(path){path=_b9d.map(path,function(item){return item&&lang.isObject(item)?tree.model.getIdentity(item):item;});if(path.length){return _bea(path,[tree.rootNode]);}else{throw new Tree.PathError("Empty path");}}));}).then(function setNodes(_bee){tree.set("selectedNodes",_bee);return tree.paths;}));},_setSelectedNodeAttr:function(node){this.set("selectedNodes",[node]);},_setSelectedNodesAttr:function(_bef){this.dndController.setSelection(_bef);},expandAll:function(){var _bf0=this;function _bf1(node){return _bf0._expandNode(node).then(function(){var _bf2=_b9d.filter(node.getChildren()||[],function(node){return node.isExpandable;});return all(_b9d.map(_bf2,_bf1));});};return _bb9(_bf1(this.rootNode));},collapseAll:function(){var _bf3=this;function _bf4(node){var _bf5=_b9d.filter(node.getChildren()||[],function(node){return node.isExpandable;}),defs=all(_b9d.map(_bf5,_bf4));if(!node.isExpanded||(node==_bf3.rootNode&&!_bf3.showRoot)){return defs;}else{return defs.then(function(){return _bf3._collapseNode(node);});}};return _bb9(_bf4(this.rootNode));},mayHaveChildren:function(){},getItemChildren:function(){},getLabel:function(item){return this.model.getLabel(item);},getIconClass:function(item,_bf6){return (!item||this.model.mayHaveChildren(item))?(_bf6?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";},getLabelClass:function(){},getRowClass:function(){},getIconStyle:function(){},getLabelStyle:function(){},getRowStyle:function(){},getTooltip:function(){return "";},_onDownArrow:function(evt,node){var _bf7=this._getNext(node);if(_bf7&&_bf7.isTreeNode){this.focusNode(_bf7);}},_onUpArrow:function(evt,node){var _bf8=node.getPreviousSibling();if(_bf8){node=_bf8;while(node.isExpandable&&node.isExpanded&&node.hasChildren()){var _bf9=node.getChildren();node=_bf9[_bf9.length-1];}}else{var _bfa=node.getParent();if(!(!this.showRoot&&_bfa===this.rootNode)){node=_bfa;}}if(node&&node.isTreeNode){this.focusNode(node);}},_onRightArrow:function(evt,node){if(node.isExpandable&&!node.isExpanded){this._expandNode(node);}else{if(node.hasChildren()){node=node.getChildren()[0];if(node&&node.isTreeNode){this.focusNode(node);}}}},_onLeftArrow:function(evt,node){if(node.isExpandable&&node.isExpanded){this._collapseNode(node);}else{var _bfb=node.getParent();if(_bfb&&_bfb.isTreeNode&&!(!this.showRoot&&_bfb===this.rootNode)){this.focusNode(_bfb);}}},focusLastChild:function(){var node=this._getLast();if(node&&node.isTreeNode){this.focusNode(node);}},_getFirst:function(){return this.showRoot?this.rootNode:this.rootNode.getChildren()[0];},_getLast:function(){var node=this.rootNode;while(node.isExpanded){var c=node.getChildren();if(!c.length){break;}node=c[c.length-1];}return node;},_getNext:function(node){if(node.isExpandable&&node.isExpanded&&node.hasChildren()){return node.getChildren()[0];}else{while(node&&node.isTreeNode){var _bfc=node.getNextSibling();if(_bfc){return _bfc;}node=node.getParent();}return null;}},childSelector:".dijitTreeRow",isExpandoNode:function(node,_bfd){return dom.isDescendant(node,_bfd.expandoNode)||dom.isDescendant(node,_bfd.expandoNodeText);},_onNodePress:function(_bfe,e){this.focusNode(_bfe);},__click:function(_bff,e,_c00,func){var _c01=e.target,_c02=this.isExpandoNode(_c01,_bff);if(_bff.isExpandable&&(_c00||_c02)){this._onExpandoClick({node:_bff});}else{this._publish("execute",{item:_bff.item,node:_bff,evt:e});this[func](_bff.item,_bff,e);this.focusNode(_bff);}e.stopPropagation();e.preventDefault();},_onClick:function(_c03,e){this.__click(_c03,e,this.openOnClick,"onClick");},_onDblClick:function(_c04,e){this.__click(_c04,e,this.openOnDblClick,"onDblClick");},_onExpandoClick:function(_c05){var node=_c05.node;this.focusNode(node);if(node.isExpanded){this._collapseNode(node);}else{this._expandNode(node);}},onClick:function(){},onDblClick:function(){},onOpen:function(){},onClose:function(){},_getNextNode:function(node){_ba7.deprecated(this.declaredClass+"::_getNextNode(node) is deprecated. Use _getNext(node) instead.","","2.0");return this._getNext(node);},_getRootOrFirstNode:function(){_ba7.deprecated(this.declaredClass+"::_getRootOrFirstNode() is deprecated. Use _getFirst() instead.","","2.0");return this._getFirst();},_collapseNode:function(node){if(node._expandNodeDeferred){delete node._expandNodeDeferred;}if(node.state=="Loading"){return;}if(node.isExpanded){var ret=node.collapse();this.onClose(node.item,node);this._state(node,false);this._startPaint(ret);return ret;}},_expandNode:function(node){if(node._expandNodeDeferred){return node._expandNodeDeferred;}var _c06=this.model,item=node.item,_c07=this;if(!node._loadDeferred){node.markProcessing();node._loadDeferred=new _ba1();_c06.getChildren(item,function(_c08){node.unmarkProcessing();node.setChildItems(_c08).then(function(){node._loadDeferred.resolve(_c08);});},function(err){console.error(_c07,": error loading "+node.label+" children: ",err);node._loadDeferred.reject(err);});}var def=node._loadDeferred.then(lang.hitch(this,function(){var def2=node.expand();this.onOpen(node.item,node);this._state(node,true);return def2;}));this._startPaint(def);return def;},focusNode:function(node){var tmp=[];for(var _c09=this.domNode;_c09&&_c09.tagName&&_c09.tagName.toUpperCase()!=="IFRAME";_c09=_c09.parentNode){tmp.push({domNode:_c09.contentWindow||_c09,scrollLeft:_c09.scrollLeft||0,scrollTop:_c09.scrollTop||0});}this.focusChild(node);this.defer(function(){for(var i=0,max=tmp.length;i<max;i++){tmp[i].domNode.scrollLeft=tmp[i].scrollLeft;tmp[i].domNode.scrollTop=tmp[i].scrollTop;}},0);},_onNodeMouseEnter:function(){},_onNodeMouseLeave:function(){},_onItemChange:function(item){var _c0a=this.model,_c0b=_c0a.getIdentity(item),_c0c=this._itemNodesMap[_c0b];if(_c0c){var _c0d=this.getLabel(item),_c0e=this.getTooltip(item);_b9d.forEach(_c0c,function(node){node.set({item:item,label:_c0d,tooltip:_c0e});node._updateItemClasses(item);});}},_onItemChildrenChange:function(_c0f,_c10){var _c11=this.model,_c12=_c11.getIdentity(_c0f),_c13=this._itemNodesMap[_c12];if(_c13){_b9d.forEach(_c13,function(_c14){_c14.setChildItems(_c10);});}},_onItemDelete:function(item){var _c15=this.model,_c16=_c15.getIdentity(item),_c17=this._itemNodesMap[_c16];if(_c17){_b9d.forEach(_c17,function(node){this.dndController.removeTreeNode(node);var _c18=node.getParent();if(_c18){_c18.removeChild(node);}if(this.lastFocusedChild&&!dom.isDescendant(this.lastFocusedChild.domNode,this.domNode)){delete this.lastFocusedChild;}if(this.focusedChild&&!dom.isDescendant(this.focusedChild.domNode,this.domNode)){this.focus();}node.destroyRecursive();},this);delete this._itemNodesMap[_c16];}},_initState:function(){this._openedNodes={};if(this.persist&&this.cookieName){var oreo=_b9f(this.cookieName);if(oreo){_b9d.forEach(oreo.split(","),function(item){this._openedNodes[item]=true;},this);}}},_state:function(node,_c19){if(!this.persist){return false;}var path=_b9d.map(node.getTreePath(),function(item){return this.model.getIdentity(item);},this).join("/");if(arguments.length===1){return this._openedNodes[path];}else{if(_c19){this._openedNodes[path]=true;}else{delete this._openedNodes[path];}this._saveExpandedNodes();}},_saveExpandedNodes:function(){if(this.persist&&this.cookieName){var ary=[];for(var id in this._openedNodes){ary.push(id);}_b9f(this.cookieName,ary.join(","),{expires:365});}},destroy:function(){if(this._curSearch){this._curSearch.timer.remove();delete this._curSearch;}if(this.rootNode){this.rootNode.destroyRecursive();}if(this.dndController&&!lang.isString(this.dndController)){this.dndController.destroy();}this.rootNode=null;this.inherited(arguments);},destroyRecursive:function(){this.destroy();},resize:function(_c1a){if(_c1a){_ba3.setMarginBox(this.domNode,_c1a);}this._nodePixelIndent=_ba3.position(this.tree.indentDetector).w||this._nodePixelIndent;this.expandChildrenDeferred.then(lang.hitch(this,function(){this.rootNode.set("indent",this.showRoot?0:-1);this._adjustWidths();}));},_outstandingPaintOperations:0,_startPaint:function(p){this._outstandingPaintOperations++;if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}var oc=lang.hitch(this,function(){this._outstandingPaintOperations--;if(this._outstandingPaintOperations<=0&&!this._adjustWidthsTimer&&this._started){this._adjustWidthsTimer=this.defer("_adjustWidths");}});when(p,oc,oc);},_adjustWidths:function(){if(this._adjustWidthsTimer){this._adjustWidthsTimer.remove();delete this._adjustWidthsTimer;}this.containerNode.style.width="auto";this.containerNode.style.width=this.domNode.scrollWidth>this.domNode.offsetWidth?"auto":"100%";},_createTreeNode:function(args){return new _bbc(args);},focus:function(){if(this.lastFocusedChild){this.focusNode(this.lastFocusedChild);}else{this.focusFirstChild();}}});if(has("dojo-bidi")){Tree.extend({_setTextDirAttr:function(_c1b){if(_c1b&&this.textDir!=_c1b){this._set("textDir",_c1b);this.rootNode.set("textDir",_c1b);}}});}Tree.PathError=_ba5("TreePathError");Tree._TreeNode=_bbc;return Tree;});},"dijit/tree/TreeStoreModel":function(){define(["dojo/_base/array","dojo/aspect","dojo/_base/declare","dojo/_base/lang"],function(_c1c,_c1d,_c1e,lang){return _c1e("dijit.tree.TreeStoreModel",null,{store:null,childrenAttrs:["children"],newItemIdAttr:"id",labelAttr:"",root:null,query:null,deferItemLoadingUntilExpand:false,constructor:function(args){lang.mixin(this,args);this.connects=[];var _c1f=this.store;if(!_c1f.getFeatures()["dojo.data.api.Identity"]){throw new Error("dijit.tree.TreeStoreModel: store must support dojo.data.Identity");}if(_c1f.getFeatures()["dojo.data.api.Notification"]){this.connects=this.connects.concat([_c1d.after(_c1f,"onNew",lang.hitch(this,"onNewItem"),true),_c1d.after(_c1f,"onDelete",lang.hitch(this,"onDeleteItem"),true),_c1d.after(_c1f,"onSet",lang.hitch(this,"onSetItem"),true)]);}},destroy:function(){var h;while(h=this.connects.pop()){h.remove();}},getRoot:function(_c20,_c21){if(this.root){_c20(this.root);}else{this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_c22){if(_c22.length!=1){throw new Error("dijit.tree.TreeStoreModel: root query returned "+_c22.length+" items, but must return exactly one");}this.root=_c22[0];_c20(this.root);}),onError:_c21});}},mayHaveChildren:function(item){return _c1c.some(this.childrenAttrs,function(attr){return this.store.hasAttribute(item,attr);},this);},getChildren:function(_c23,_c24,_c25){var _c26=this.store;if(!_c26.isItemLoaded(_c23)){var _c27=lang.hitch(this,arguments.callee);_c26.loadItem({item:_c23,onItem:function(_c28){_c27(_c28,_c24,_c25);},onError:_c25});return;}var _c29=[];for(var i=0;i<this.childrenAttrs.length;i++){var vals=_c26.getValues(_c23,this.childrenAttrs[i]);_c29=_c29.concat(vals);}var _c2a=0;if(!this.deferItemLoadingUntilExpand){_c1c.forEach(_c29,function(item){if(!_c26.isItemLoaded(item)){_c2a++;}});}if(_c2a==0){_c24(_c29);}else{_c1c.forEach(_c29,function(item,idx){if(!_c26.isItemLoaded(item)){_c26.loadItem({item:item,onItem:function(item){_c29[idx]=item;if(--_c2a==0){_c24(_c29);}},onError:_c25});}});}},isItem:function(_c2b){return this.store.isItem(_c2b);},fetchItemByIdentity:function(_c2c){this.store.fetchItemByIdentity(_c2c);},getIdentity:function(item){return this.store.getIdentity(item);},getLabel:function(item){if(this.labelAttr){return this.store.getValue(item,this.labelAttr);}else{return this.store.getLabel(item);}},newItem:function(args,_c2d,_c2e){var _c2f={parent:_c2d,attribute:this.childrenAttrs[0]},_c30;if(this.newItemIdAttr&&args[this.newItemIdAttr]){this.fetchItemByIdentity({identity:args[this.newItemIdAttr],scope:this,onItem:function(item){if(item){this.pasteItem(item,null,_c2d,true,_c2e);}else{_c30=this.store.newItem(args,_c2f);if(_c30&&(_c2e!=undefined)){this.pasteItem(_c30,_c2d,_c2d,false,_c2e);}}}});}else{_c30=this.store.newItem(args,_c2f);if(_c30&&(_c2e!=undefined)){this.pasteItem(_c30,_c2d,_c2d,false,_c2e);}}},pasteItem:function(_c31,_c32,_c33,_c34,_c35){var _c36=this.store,_c37=this.childrenAttrs[0];if(_c32){_c1c.forEach(this.childrenAttrs,function(attr){if(_c36.containsValue(_c32,attr,_c31)){if(!_c34){var _c38=_c1c.filter(_c36.getValues(_c32,attr),function(x){return x!=_c31;});_c36.setValues(_c32,attr,_c38);}_c37=attr;}});}if(_c33){if(typeof _c35=="number"){var _c39=_c36.getValues(_c33,_c37).slice();_c39.splice(_c35,0,_c31);_c36.setValues(_c33,_c37,_c39);}else{_c36.setValues(_c33,_c37,_c36.getValues(_c33,_c37).concat(_c31));}}},onChange:function(){},onChildrenChange:function(){},onDelete:function(){},onNewItem:function(item,_c3a){if(!_c3a){return;}this.getChildren(_c3a.item,lang.hitch(this,function(_c3b){this.onChildrenChange(_c3a.item,_c3b);}));},onDeleteItem:function(item){this.onDelete(item);},onSetItem:function(item,_c3c){if(_c1c.indexOf(this.childrenAttrs,_c3c)!=-1){this.getChildren(item,lang.hitch(this,function(_c3d){this.onChildrenChange(item,_c3d);}));}else{this.onChange(item);}}});});},"dijit/tree/ForestStoreModel":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","./TreeStoreModel"],function(_c3e,_c3f,_c40,lang,_c41){return _c3f("dijit.tree.ForestStoreModel",_c41,{rootId:"$root$",rootLabel:"ROOT",query:null,constructor:function(_c42){this.root={store:this,root:true,id:_c42.rootId,label:_c42.rootLabel,children:_c42.rootChildren};},mayHaveChildren:function(item){return item===this.root||this.inherited(arguments);},getChildren:function(_c43,_c44,_c45){if(_c43===this.root){if(this.root.children){_c44(this.root.children);}else{this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_c46){this.root.children=_c46;_c44(_c46);}),onError:_c45});}}else{this.inherited(arguments);}},isItem:function(_c47){return (_c47===this.root)?true:this.inherited(arguments);},fetchItemByIdentity:function(_c48){if(_c48.identity==this.root.id){var _c49=_c48.scope||_c40.global;if(_c48.onItem){_c48.onItem.call(_c49,this.root);}}else{this.inherited(arguments);}},getIdentity:function(item){return (item===this.root)?this.root.id:this.inherited(arguments);},getLabel:function(item){return (item===this.root)?this.root.label:this.inherited(arguments);},newItem:function(args,_c4a,_c4b){if(_c4a===this.root){this.onNewRootItem(args);return this.store.newItem(args);}else{return this.inherited(arguments);}},onNewRootItem:function(){},pasteItem:function(_c4c,_c4d,_c4e,_c4f,_c50){if(_c4d===this.root){if(!_c4f){this.onLeaveRoot(_c4c);}}this.inherited(arguments,[_c4c,_c4d===this.root?null:_c4d,_c4e===this.root?null:_c4e,_c4f,_c50]);if(_c4e===this.root){this.onAddToRoot(_c4c);}},onAddToRoot:function(item){},onLeaveRoot:function(item){},_requeryTop:function(){var _c51=this.root.children||[];this.store.fetch({query:this.query,onComplete:lang.hitch(this,function(_c52){this.root.children=_c52;if(_c51.length!=_c52.length||_c3e.some(_c51,function(item,idx){return _c52[idx]!=item;})){this.onChildrenChange(this.root,_c52);}})});},onNewItem:function(item,_c53){this._requeryTop();this.inherited(arguments);},onDeleteItem:function(item){if(_c3e.indexOf(this.root.children,item)!=-1){this._requeryTop();}this.inherited(arguments);},onSetItem:function(item,_c54,_c55,_c56){this._requeryTop();this.inherited(arguments);}});});},"dijit/tree/_dndSelector":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/_base/kernel","dojo/_base/lang","dojo/dnd/common","dojo/dom","dojo/mouse","dojo/on","dojo/touch","../a11yclick","./_dndContainer"],function(_c57,_c58,_c59,lang,_c5a,dom,_c5b,on,_c5c,_c5d,_c5e){return _c58("dijit.tree._dndSelector",_c5e,{constructor:function(){this.selection={};this.anchor=null;this.events.push(on(this.tree.domNode,_c5c.press,lang.hitch(this,"onMouseDown")),on(this.tree.domNode,_c5c.release,lang.hitch(this,"onMouseUp")),on(this.tree.domNode,_c5c.move,lang.hitch(this,"onMouseMove")),on(this.tree.domNode,_c5d.press,lang.hitch(this,"onClickPress")),on(this.tree.domNode,_c5d.release,lang.hitch(this,"onClickRelease")));},singular:false,getSelectedTreeNodes:function(){var _c5f=[],sel=this.selection;for(var i in sel){_c5f.push(sel[i]);}return _c5f;},selectNone:function(){this.setSelection([]);return this;},destroy:function(){this.inherited(arguments);this.selection=this.anchor=null;},addTreeNode:function(node,_c60){this.setSelection(this.getSelectedTreeNodes().concat([node]));if(_c60){this.anchor=node;}return node;},removeTreeNode:function(node){var _c61=_c57.filter(this.getSelectedTreeNodes(),function(_c62){return !dom.isDescendant(_c62.domNode,node.domNode);});this.setSelection(_c61);return node;},isTreeNodeSelected:function(node){return node.id&&!!this.selection[node.id];},setSelection:function(_c63){var _c64=this.getSelectedTreeNodes();_c57.forEach(this._setDifference(_c64,_c63),lang.hitch(this,function(node){node.setSelected(false);if(this.anchor==node){delete this.anchor;}delete this.selection[node.id];}));_c57.forEach(this._setDifference(_c63,_c64),lang.hitch(this,function(node){node.setSelected(true);this.selection[node.id]=node;}));this._updateSelectionProperties();},_setDifference:function(xs,ys){_c57.forEach(ys,function(y){y.__exclude__=true;});var ret=_c57.filter(xs,function(x){return !x.__exclude__;});_c57.forEach(ys,function(y){delete y["__exclude__"];});return ret;},_updateSelectionProperties:function(){var _c65=this.getSelectedTreeNodes();var _c66=[],_c67=[];_c57.forEach(_c65,function(node){var ary=node.getTreePath();_c67.push(node);_c66.push(ary);},this);var _c68=_c57.map(_c67,function(node){return node.item;});this.tree._set("paths",_c66);this.tree._set("path",_c66[0]||[]);this.tree._set("selectedNodes",_c67);this.tree._set("selectedNode",_c67[0]||null);this.tree._set("selectedItems",_c68);this.tree._set("selectedItem",_c68[0]||null);},onClickPress:function(e){if(this.current&&this.current.isExpandable&&this.tree.isExpandoNode(e.target,this.current)){return;}if(e.type=="mousedown"&&_c5b.isLeft(e)){e.preventDefault();}var _c69=e.type=="keydown"?this.tree.focusedChild:this.current;if(!_c69){return;}var copy=_c5a.getCopyKeyState(e),id=_c69.id;if(!this.singular&&!e.shiftKey&&this.selection[id]){this._doDeselect=true;return;}else{this._doDeselect=false;}this.userSelect(_c69,copy,e.shiftKey);},onClickRelease:function(e){if(!this._doDeselect){return;}this._doDeselect=false;this.userSelect(e.type=="keyup"?this.tree.focusedChild:this.current,_c5a.getCopyKeyState(e),e.shiftKey);},onMouseMove:function(){this._doDeselect=false;},onMouseDown:function(){},onMouseUp:function(){},_compareNodes:function(n1,n2){if(n1===n2){return 0;}if("sourceIndex" in document.documentElement){return n1.sourceIndex-n2.sourceIndex;}else{if("compareDocumentPosition" in document.documentElement){return n1.compareDocumentPosition(n2)&2?1:-1;}else{if(document.createRange){var r1=doc.createRange();r1.setStartBefore(n1);var r2=doc.createRange();r2.setStartBefore(n2);return r1.compareBoundaryPoints(r1.END_TO_END,r2);}else{throw Error("dijit.tree._compareNodes don't know how to compare two different nodes in this browser");}}}},userSelect:function(node,_c6a,_c6b){if(this.singular){if(this.anchor==node&&_c6a){this.selectNone();}else{this.setSelection([node]);this.anchor=node;}}else{if(_c6b&&this.anchor){var cr=this._compareNodes(this.anchor.rowNode,node.rowNode),_c6c,end,_c6d=this.anchor;if(cr<0){_c6c=_c6d;end=node;}else{_c6c=node;end=_c6d;}var _c6e=[];while(_c6c!=end){_c6e.push(_c6c);_c6c=this.tree._getNext(_c6c);}_c6e.push(end);this.setSelection(_c6e);}else{if(this.selection[node.id]&&_c6a){this.removeTreeNode(node);}else{if(_c6a){this.addTreeNode(node,true);}else{this.setSelection([node]);this.anchor=node;}}}}},getItem:function(key){var _c6f=this.selection[key];return {data:_c6f,type:["treeNode"]};},forInSelectedItems:function(f,o){o=o||_c59.global;for(var id in this.selection){f.call(o,this.getItem(id),id,this);}}});});},"dijit/tree/_dndContainer":function(){define(["dojo/aspect","dojo/_base/declare","dojo/dom-class","dojo/_base/lang","dojo/on","dojo/touch"],function(_c70,_c71,_c72,lang,on,_c73){return _c71("dijit.tree._dndContainer",null,{constructor:function(tree,_c74){this.tree=tree;this.node=tree.domNode;lang.mixin(this,_c74);this.containerState="";_c72.add(this.node,"dojoDndContainer");this.events=[on(this.node,_c73.enter,lang.hitch(this,"onOverEvent")),on(this.node,_c73.leave,lang.hitch(this,"onOutEvent")),_c70.after(this.tree,"_onNodeMouseEnter",lang.hitch(this,"onMouseOver"),true),_c70.after(this.tree,"_onNodeMouseLeave",lang.hitch(this,"onMouseOut"),true),on(this.node,"dragstart, selectstart",function(evt){evt.preventDefault();})];},destroy:function(){var h;while(h=this.events.pop()){h.remove();}this.node=this.parent=null;},onMouseOver:function(_c75){this.current=_c75;},onMouseOut:function(){this.current=null;},_changeState:function(type,_c76){var _c77="dojoDnd"+type;var _c78=type.toLowerCase()+"State";_c72.replace(this.node,_c77+_c76,_c77+this[_c78]);this[_c78]=_c76;},_addItemClass:function(node,type){_c72.add(node,"dojoDndItem"+type);},_removeItemClass:function(node,type){_c72.remove(node,"dojoDndItem"+type);},onOverEvent:function(){this._changeState("Container","Over");},onOutEvent:function(){this._changeState("Container","");}});});},"dijit/tree/dndSource":function(){define(["dojo/_base/array","dojo/_base/declare","dojo/dnd/common","dojo/dom-class","dojo/dom-geometry","dojo/_base/lang","dojo/mouse","dojo/on","dojo/touch","dojo/topic","dojo/dnd/Manager","./_dndSelector"],function(_c79,_c7a,_c7b,_c7c,_c7d,lang,_c7e,on,_c7f,_c80,_c81,_c82){var _c83=_c7a("dijit.tree.dndSource",_c82,{isSource:true,accept:["text","treeNode"],copyOnly:false,dragThreshold:5,betweenThreshold:0,generateText:true,constructor:function(tree,_c84){if(!_c84){_c84={};}lang.mixin(this,_c84);var type=_c84.accept instanceof Array?_c84.accept:["text","treeNode"];this.accept=null;if(type.length){this.accept={};for(var i=0;i<type.length;++i){this.accept[type[i]]=1;}}this.isDragging=false;this.mouseDown=false;this.targetAnchor=null;this.targetBox=null;this.dropPosition="";this._lastX=0;this._lastY=0;this.sourceState="";if(this.isSource){_c7c.add(this.node,"dojoDndSource");}this.targetState="";if(this.accept){_c7c.add(this.node,"dojoDndTarget");}this.topics=[_c80.subscribe("/dnd/source/over",lang.hitch(this,"onDndSourceOver")),_c80.subscribe("/dnd/start",lang.hitch(this,"onDndStart")),_c80.subscribe("/dnd/drop",lang.hitch(this,"onDndDrop")),_c80.subscribe("/dnd/cancel",lang.hitch(this,"onDndCancel"))];},checkAcceptance:function(){return true;},copyState:function(_c85){return this.copyOnly||_c85;},destroy:function(){this.inherited(arguments);var h;while(h=this.topics.pop()){h.remove();}this.targetAnchor=null;},_onDragMouse:function(e,_c86){var m=_c81.manager(),_c87=this.targetAnchor,_c88=this.current,_c89=this.dropPosition;var _c8a="Over";if(_c88&&this.betweenThreshold>0){if(!this.targetBox||_c87!=_c88){this.targetBox=_c7d.position(_c88.rowNode,true);}if((e.pageY-this.targetBox.y)<=this.betweenThreshold){_c8a="Before";}else{if((e.pageY-this.targetBox.y)>=(this.targetBox.h-this.betweenThreshold)){_c8a="After";}}}if(_c86||_c88!=_c87||_c8a!=_c89){if(_c87){this._removeItemClass(_c87.rowNode,_c89);}if(_c88){this._addItemClass(_c88.rowNode,_c8a);}if(!_c88){m.canDrop(false);}else{if(_c88==this.tree.rootNode&&_c8a!="Over"){m.canDrop(false);}else{var _c8b=false,_c8c=false;if(m.source==this){_c8c=(_c8a==="Over");for(var _c8d in this.selection){var _c8e=this.selection[_c8d];if(_c8e.item===_c88.item){_c8b=true;break;}if(_c8e.getParent().id!==_c88.id){_c8c=false;}}}m.canDrop(!_c8b&&!_c8c&&!this._isParentChildDrop(m.source,_c88.rowNode)&&this.checkItemAcceptance(_c88.rowNode,m.source,_c8a.toLowerCase()));}}this.targetAnchor=_c88;this.dropPosition=_c8a;}},onMouseMove:function(e){if(this.isDragging&&this.targetState=="Disabled"){return;}this.inherited(arguments);var m=_c81.manager();if(this.isDragging){this._onDragMouse(e);}else{if(this.mouseDown&&this.isSource&&(Math.abs(e.pageX-this._lastX)>=this.dragThreshold||Math.abs(e.pageY-this._lastY)>=this.dragThreshold)){var _c8f=this.getSelectedTreeNodes();if(_c8f.length){if(_c8f.length>1){var seen=this.selection,i=0,r=[],n,p;nextitem:while((n=_c8f[i++])){for(p=n.getParent();p&&p!==this.tree;p=p.getParent()){if(seen[p.id]){continue nextitem;}}r.push(n);}_c8f=r;}_c8f=_c79.map(_c8f,function(n){return n.domNode;});m.startDrag(this,_c8f,this.copyState(_c7b.getCopyKeyState(e)));this._onDragMouse(e,true);}}}},onMouseDown:function(e){if(e.type=="touchstart"||_c7e.isLeft(e)){this.mouseDown=true;this.mouseButton=e.button;this._lastX=e.pageX;this._lastY=e.pageY;}this.inherited(arguments);},onMouseUp:function(e){if(this.mouseDown){this.mouseDown=false;this.inherited(arguments);}},onMouseOut:function(){this.inherited(arguments);this._unmarkTargetAnchor();},checkItemAcceptance:function(){return true;},onDndSourceOver:function(_c90){if(this!=_c90){this.mouseDown=false;this._unmarkTargetAnchor();}else{if(this.isDragging){var m=_c81.manager();m.canDrop(false);}}},onDndStart:function(_c91,_c92,copy){if(this.isSource){this._changeState("Source",this==_c91?(copy?"Copied":"Moved"):"");}var _c93=this.checkAcceptance(_c91,_c92);this._changeState("Target",_c93?"":"Disabled");if(this==_c91){_c81.manager().overSource(this);}this.isDragging=true;},itemCreator:function(_c94){return _c79.map(_c94,function(node){return {"id":node.id,"name":node.textContent||node.innerText||""};});},onDndDrop:function(_c95,_c96,copy){if(this.containerState=="Over"){var tree=this.tree,_c97=tree.model,_c98=this.targetAnchor,_c99=false;this.isDragging=false;var _c9a;var _c9b;var _c9c;_c9a=(_c98&&_c98.item)||tree.item;if(this.dropPosition=="Before"||this.dropPosition=="After"){_c9a=(_c98.getParent()&&_c98.getParent().item)||tree.item;_c9b=_c98.getIndexInParent();if(this.dropPosition=="After"){_c9b=_c98.getIndexInParent()+1;_c9c=_c98.getNextSibling()&&_c98.getNextSibling().item;}else{_c9c=_c98.item;}}else{_c9a=(_c98&&_c98.item)||tree.item;_c99=true;}var _c9d;_c79.forEach(_c96,function(node,idx){var _c9e=_c95.getItem(node.id);if(_c79.indexOf(_c9e.type,"treeNode")!=-1){var _c9f=_c9e.data,_ca0=_c9f.item,_ca1=_c9f.getParent().item;}if(_c95==this){if(typeof _c9b=="number"){if(_c9a==_ca1&&_c9f.getIndexInParent()<_c9b){_c9b-=1;}}_c97.pasteItem(_ca0,_ca1,_c9a,copy,_c9b,_c9c);}else{if(_c97.isItem(_ca0)){_c97.pasteItem(_ca0,_ca1,_c9a,copy,_c9b,_c9c);}else{if(!_c9d){_c9d=this.itemCreator(_c96,_c98.rowNode,_c95);}_c97.newItem(_c9d[idx],_c9a,_c9b,_c9c);}}},this);if(_c99){this.tree._expandNode(_c98);}}this.onDndCancel();},onDndCancel:function(){this._unmarkTargetAnchor();this.isDragging=false;this.mouseDown=false;delete this.mouseButton;this._changeState("Source","");this._changeState("Target","");},onOverEvent:function(){this.inherited(arguments);_c81.manager().overSource(this);},onOutEvent:function(){this._unmarkTargetAnchor();var m=_c81.manager();if(this.isDragging){m.canDrop(false);}m.outSource(this);this.inherited(arguments);},_isParentChildDrop:function(_ca2,_ca3){if(!_ca2.tree||_ca2.tree!=this.tree){return false;}var root=_ca2.tree.domNode;var ids=_ca2.selection;var node=_ca3.parentNode;while(node!=root&&!ids[node.id]){node=node.parentNode;}return node.id&&ids[node.id];},_unmarkTargetAnchor:function(){if(!this.targetAnchor){return;}this._removeItemClass(this.targetAnchor.rowNode,this.dropPosition);this.targetAnchor=null;this.targetBox=null;this.dropPosition=null;},_markDndStatus:function(copy){this._changeState("Source",copy?"Copied":"Moved");}});return _c83;});},"dojo/dnd/Manager":function(){define(["../_base/array","../_base/declare","../_base/lang","../_base/window","../dom-class","../Evented","../has","../keys","../on","../topic","../touch","./common","./autoscroll","./Avatar"],function(_ca4,_ca5,lang,win,_ca6,_ca7,has,keys,on,_ca8,_ca9,dnd,_caa,_cab){var _cac=_ca5("dojo.dnd.Manager",[_ca7],{constructor:function(){this.avatar=null;this.source=null;this.nodes=[];this.copy=true;this.target=null;this.canDropFlag=false;this.events=[];},OFFSET_X:has("touch")?4:16,OFFSET_Y:has("touch")?4:16,overSource:function(_cad){if(this.avatar){this.target=(_cad&&_cad.targetState!="Disabled")?_cad:null;this.canDropFlag=Boolean(this.target);this.avatar.update();}_ca8.publish("/dnd/source/over",_cad);},outSource:function(_cae){if(this.avatar){if(this.target==_cae){this.target=null;this.canDropFlag=false;this.avatar.update();_ca8.publish("/dnd/source/over",null);}}else{_ca8.publish("/dnd/source/over",null);}},startDrag:function(_caf,_cb0,copy){_caa.autoScrollStart(win.doc);this.source=_caf;this.nodes=_cb0;this.copy=Boolean(copy);this.avatar=this.makeAvatar();win.body().appendChild(this.avatar.node);_ca8.publish("/dnd/start",_caf,_cb0,this.copy);function _cb1(e){e.preventDefault();e.stopPropagation();};this.events=[on(win.doc,_ca9.move,lang.hitch(this,"onMouseMove")),on(win.doc,_ca9.release,lang.hitch(this,"onMouseUp")),on(win.doc,"keydown",lang.hitch(this,"onKeyDown")),on(win.doc,"keyup",lang.hitch(this,"onKeyUp")),on(win.doc,"dragstart",_cb1),on(win.body(),"selectstart",_cb1)];var c="dojoDnd"+(copy?"Copy":"Move");_ca6.add(win.body(),c);},canDrop:function(flag){var _cb2=Boolean(this.target&&flag);if(this.canDropFlag!=_cb2){this.canDropFlag=_cb2;this.avatar.update();}},stopDrag:function(){_ca6.remove(win.body(),["dojoDndCopy","dojoDndMove"]);_ca4.forEach(this.events,function(_cb3){_cb3.remove();});this.events=[];this.avatar.destroy();this.avatar=null;this.source=this.target=null;this.nodes=[];},makeAvatar:function(){return new _cab(this);},updateAvatar:function(){this.avatar.update();},onMouseMove:function(e){var a=this.avatar;if(a){_caa.autoScrollNodes(e);var s=a.node.style;s.left=(e.pageX+this.OFFSET_X)+"px";s.top=(e.pageY+this.OFFSET_Y)+"px";var copy=Boolean(this.source.copyState(dnd.getCopyKeyState(e)));if(this.copy!=copy){this._setCopyStatus(copy);}}if(has("touch")){e.preventDefault();}},onMouseUp:function(e){if(this.avatar){if(this.target&&this.canDropFlag){var copy=Boolean(this.source.copyState(dnd.getCopyKeyState(e)));_ca8.publish("/dnd/drop/before",this.source,this.nodes,copy,this.target,e);_ca8.publish("/dnd/drop",this.source,this.nodes,copy,this.target,e);}else{_ca8.publish("/dnd/cancel");}this.stopDrag();}},onKeyDown:function(e){if(this.avatar){switch(e.keyCode){case keys.CTRL:var copy=Boolean(this.source.copyState(true));if(this.copy!=copy){this._setCopyStatus(copy);}break;case keys.ESCAPE:_ca8.publish("/dnd/cancel");this.stopDrag();break;}}},onKeyUp:function(e){if(this.avatar&&e.keyCode==keys.CTRL){var copy=Boolean(this.source.copyState(false));if(this.copy!=copy){this._setCopyStatus(copy);}}},_setCopyStatus:function(copy){this.copy=copy;this.source._markDndStatus(this.copy);this.updateAvatar();_ca6.replace(win.body(),"dojoDnd"+(this.copy?"Copy":"Move"),"dojoDnd"+(this.copy?"Move":"Copy"));}});dnd._manager=null;_cac.manager=dnd.manager=function(){if(!dnd._manager){dnd._manager=new _cac();}return dnd._manager;};return _cac;});},"dojo/dnd/Avatar":function(){define(["../_base/declare","../_base/window","../dom","../dom-attr","../dom-class","../dom-construct","../hccss","../query"],function(_cb4,win,dom,_cb5,_cb6,_cb7,has,_cb8){return _cb4("dojo.dnd.Avatar",null,{constructor:function(_cb9){this.manager=_cb9;this.construct();},construct:function(){var a=_cb7.create("table",{"class":"dojoDndAvatar",style:{position:"absolute",zIndex:"1999",margin:"0px"}}),_cba=this.manager.source,node,b=_cb7.create("tbody",null,a),tr=_cb7.create("tr",null,b),td=_cb7.create("td",null,tr),k=Math.min(5,this.manager.nodes.length),i=0;if(has("highcontrast")){_cb7.create("span",{id:"a11yIcon",innerHTML:this.manager.copy?"+":"<"},td);}_cb7.create("span",{innerHTML:_cba.generateText?this._generateText():""},td);_cb5.set(tr,{"class":"dojoDndAvatarHeader",style:{opacity:0.9}});for(;i<k;++i){if(_cba.creator){node=_cba._normalizedCreator(_cba.getItem(this.manager.nodes[i].id).data,"avatar").node;}else{node=this.manager.nodes[i].cloneNode(true);if(node.tagName.toLowerCase()=="tr"){var _cbb=_cb7.create("table"),_cbc=_cb7.create("tbody",null,_cbb);_cbc.appendChild(node);node=_cbb;}}node.id="";tr=_cb7.create("tr",null,b);td=_cb7.create("td",null,tr);td.appendChild(node);_cb5.set(tr,{"class":"dojoDndAvatarItem",style:{opacity:(9-i)/10}});}this.node=a;},destroy:function(){_cb7.destroy(this.node);this.node=false;},update:function(){_cb6.toggle(this.node,"dojoDndAvatarCanDrop",this.manager.canDropFlag);if(has("highcontrast")){var icon=dom.byId("a11yIcon");var text="+";if(this.manager.canDropFlag&&!this.manager.copy){text="< ";}else{if(!this.manager.canDropFlag&&!this.manager.copy){text="o";}else{if(!this.manager.canDropFlag){text="x";}}}icon.innerHTML=text;}_cb8(("tr.dojoDndAvatarHeader td span"+(has("highcontrast")?" span":"")),this.node).forEach(function(node){node.innerHTML=this.manager.source.generateText?this._generateText():"";},this);},_generateText:function(){return this.manager.nodes.length.toString();}});});},"url:dijit/templates/ColorPalette.html":"<div class=\"dijitInline dijitColorPalette\" role=\"grid\">\n\t<table data-dojo-attach-point=\"paletteTableNode\" class=\"dijitPaletteTable\" cellSpacing=\"0\" cellPadding=\"0\" role=\"presentation\">\n\t\t<tbody data-dojo-attach-point=\"gridNode\"></tbody>\n\t</table>\n</div>\n","url:dijit/templates/Dialog.html":"<div class=\"dijitDialog\" role=\"dialog\" aria-labelledby=\"${id}_title\">\n\t<div data-dojo-attach-point=\"titleBar\" class=\"dijitDialogTitleBar\">\n\t\t<span data-dojo-attach-point=\"titleNode\" class=\"dijitDialogTitle\" id=\"${id}_title\"\n\t\t\t\trole=\"heading\" level=\"1\"></span>\n\t\t<span data-dojo-attach-point=\"closeButtonNode\" class=\"dijitDialogCloseIcon\" data-dojo-attach-event=\"ondijitclick: onCancel\" title=\"${buttonCancel}\" role=\"button\" tabindex=\"-1\">\n\t\t\t<span data-dojo-attach-point=\"closeText\" class=\"closeText\" title=\"${buttonCancel}\">x</span>\n\t\t</span>\n\t</div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitDialogPaneContent\"></div>\n\t${!actionBarTemplate}\n</div>\n\n","url:dijit/form/templates/Button.html":"<span class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><span class=\"dijitReset dijitInline dijitButtonNode\"\n\t\tdata-dojo-attach-event=\"ondijitclick:__onClick\" role=\"presentation\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode,focusNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span class=\"dijitReset dijitToggleButtonIconChar\">&#x25CF;</span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode\"\n\t\t\t></span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\"\n\t\tdata-dojo-attach-event=\"onclick:_onClick\"\n\t\ttabIndex=\"-1\" aria-hidden=\"true\" data-dojo-attach-point=\"valueNode\"\n/></span>\n","url:dijit/form/templates/CheckBox.html":"<div class=\"dijit dijitReset dijitInline\" role=\"presentation\"\n\t><input\n\t \t${!nameAttrSetting} type=\"${type}\" role=\"${type}\" aria-checked=\"false\" ${checkedAttrSetting}\n\t\tclass=\"dijitReset dijitCheckBoxInput\"\n\t\tdata-dojo-attach-point=\"focusNode\"\n\t \tdata-dojo-attach-event=\"ondijitclick:_onClick\"\n/></div>\n","url:dijit/form/templates/DropDownButton.html":"<span class=\"dijit dijitReset dijitInline\"\n\t><span class='dijitReset dijitInline dijitButtonNode'\n\t\tdata-dojo-attach-event=\"ondijitclick:__onClick\" data-dojo-attach-point=\"_buttonNode\"\n\t\t><span class=\"dijitReset dijitStretch dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"focusNode,titleNode,_arrowWrapperNode,_popupStateNode\"\n\t\t\trole=\"button\" aria-haspopup=\"true\" aria-labelledby=\"${id}_label\"\n\t\t\t><span class=\"dijitReset dijitInline dijitIcon\"\n\t\t\t\tdata-dojo-attach-point=\"iconNode\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitButtonText\"\n\t\t\t\tdata-dojo-attach-point=\"containerNode\"\n\t\t\t\tid=\"${id}_label\"\n\t\t\t></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonInner\"></span\n\t\t\t><span class=\"dijitReset dijitInline dijitArrowButtonChar\">&#9660;</span\n\t\t></span\n\t></span\n\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" class=\"dijitOffScreen\" tabIndex=\"-1\"\n\t\tdata-dojo-attach-event=\"onclick:_onClick\" data-dojo-attach-point=\"valueNode\" aria-hidden=\"true\"\n/></span>\n","url:dijit/form/templates/ComboButton.html":"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tcellspacing='0' cellpadding='0' role=\"presentation\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonNode\" data-dojo-attach-point=\"buttonNode\" data-dojo-attach-event=\"ondijitclick:__onClick,onkeydown:_onButtonKeyDown\"\n\t\t><div id=\"${id}_button\" class=\"dijitReset dijitButtonContents\"\n\t\t\tdata-dojo-attach-point=\"titleNode\"\n\t\t\trole=\"button\" aria-labelledby=\"${id}_label\"\n\t\t\t><div class=\"dijitReset dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitInline dijitButtonText\" id=\"${id}_label\" data-dojo-attach-point=\"containerNode\" role=\"presentation\"></div\n\t\t></div\n\t\t></td\n\t\t><td id=\"${id}_arrow\" class='dijitReset dijitRight dijitButtonNode dijitArrowButton'\n\t\t\tdata-dojo-attach-point=\"_popupStateNode,focusNode,_buttonNode\"\n\t\t\tdata-dojo-attach-event=\"onkeydown:_onArrowKeyDown\"\n\t\t\ttitle=\"${optionsTitle}\"\n\t\t\trole=\"button\" aria-haspopup=\"true\"\n\t\t\t><div class=\"dijitReset dijitArrowButtonInner\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitArrowButtonChar\" role=\"presentation\">&#9660;</div\n\t\t></td\n\t\t><td style=\"display:none !important;\"\n\t\t\t><input ${!nameAttrSetting} type=\"${type}\" value=\"${value}\" data-dojo-attach-point=\"valueNode\"\n\t\t\t\tclass=\"dijitOffScreen\" aria-hidden=\"true\" data-dojo-attach-event=\"onclick:_onClick\"\n\t\t/></td></tr></tbody\n></table>\n","url:dijit/form/templates/TextBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\" id=\"widget_${id}\" role=\"presentation\"\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n","url:dijit/templates/Tooltip.html":"<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\" data-dojo-attach-event=\"mouseenter:onMouseEnter,mouseleave:onMouseLeave\"\n\t><div class=\"dijitTooltipConnector\" data-dojo-attach-point=\"connectorNode\"></div\n\t><div class=\"dijitTooltipContainer dijitTooltipContents\" data-dojo-attach-point=\"containerNode\" role='alert'></div\n></div>\n","url:dijit/form/templates/ValidationTextBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\" role=\"presentation\"\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class=\"dijitReset dijitInputInner\" data-dojo-attach-point='textbox,focusNode' autocomplete=\"off\"\n\t\t\t${!nameAttrSetting} type='${type}'\n\t/></div\n></div>\n","url:dijit/form/templates/DropDownBox.html":"<div class=\"dijit dijitReset dijitInline dijitLeft\"\n\tid=\"widget_${id}\"\n\trole=\"combobox\"\n\taria-haspopup=\"true\"\n\tdata-dojo-attach-point=\"_popupStateNode\"\n\t><div class='dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer'\n\t\tdata-dojo-attach-point=\"_buttonNode\" role=\"presentation\"\n\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"button presentation\" aria-hidden=\"true\"\n\t\t\t${_buttonInputDisabled}\n\t/></div\n\t><div class='dijitReset dijitValidationContainer'\n\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t/></div\n\t><div class=\"dijitReset dijitInputField dijitInputContainer\"\n\t\t><input class='dijitReset dijitInputInner' ${!nameAttrSetting} type=\"${type}\" autocomplete=\"off\"\n\t\t\tdata-dojo-attach-point=\"textbox,focusNode\" role=\"textbox\"\n\t/></div\n></div>\n","url:dijit/templates/Menu.html":"<table class=\"dijit dijitMenu dijitMenuPassive dijitReset dijitMenuTable\" role=\"menu\" tabIndex=\"${tabIndex}\"\n\t cellspacing=\"0\">\n\t<tbody class=\"dijitReset\" data-dojo-attach-point=\"containerNode\"></tbody>\n</table>\n","url:dijit/templates/MenuItem.html":"<tr class=\"dijitReset\" data-dojo-attach-point=\"focusNode\" role=\"menuitem\" tabIndex=\"-1\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitMenuItemIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode,textDirNode\"\n\t\trole=\"presentation\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">\n\t\t<span data-dojo-attach-point=\"arrowWrapper\" style=\"visibility: hidden\">\n\t\t\t<span class=\"dijitInline dijitIcon dijitMenuExpand\"></span>\n\t\t\t<span class=\"dijitMenuExpandA11y\">+</span>\n\t\t</span>\n\t</td>\n</tr>\n","url:dijit/templates/MenuSeparator.html":"<tr class=\"dijitMenuSeparator\" role=\"separator\">\n\t<td class=\"dijitMenuSeparatorIconCell\">\n\t\t<div class=\"dijitMenuSeparatorTop\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n\t<td colspan=\"3\" class=\"dijitMenuSeparatorLabelCell\">\n\t\t<div class=\"dijitMenuSeparatorTop dijitMenuSeparatorLabel\"></div>\n\t\t<div class=\"dijitMenuSeparatorBottom\"></div>\n\t</td>\n</tr>\n","url:dijit/form/templates/Select.html":"<table class=\"dijit dijitReset dijitInline dijitLeft\"\n\tdata-dojo-attach-point=\"_buttonNode,tableNode,focusNode,_popupStateNode\" cellspacing='0' cellpadding='0'\n\trole=\"listbox\" aria-haspopup=\"true\"\n\t><tbody role=\"presentation\"><tr role=\"presentation\"\n\t\t><td class=\"dijitReset dijitStretch dijitButtonContents\" role=\"presentation\"\n\t\t\t><div class=\"dijitReset dijitInputField dijitButtonText\" data-dojo-attach-point=\"containerNode,textDirNode\" role=\"presentation\"></div\n\t\t\t><div class=\"dijitReset dijitValidationContainer\"\n\t\t\t\t><input class=\"dijitReset dijitInputField dijitValidationIcon dijitValidationInner\" value=\"&#935; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t/></div\n\t\t\t><input type=\"hidden\" ${!nameAttrSetting} data-dojo-attach-point=\"valueNode\" value=\"${value}\" aria-hidden=\"true\"\n\t\t/></td\n\t\t><td class=\"dijitReset dijitRight dijitButtonNode dijitArrowButton dijitDownArrowButton dijitArrowButtonContainer\"\n\t\t\tdata-dojo-attach-point=\"titleNode\" role=\"presentation\"\n\t\t\t><input class=\"dijitReset dijitInputField dijitArrowButtonInner\" value=\"&#9660; \" type=\"text\" tabIndex=\"-1\" readonly=\"readonly\" role=\"presentation\"\n\t\t\t\t${_buttonInputDisabled}\n\t\t/></td\n\t></tr></tbody\n></table>\n","url:dijit/templates/InlineEditBox.html":"<span data-dojo-attach-point=\"editNode\" role=\"presentation\" class=\"dijitReset dijitInline dijitOffScreen\"\n\t><span data-dojo-attach-point=\"editorPlaceholder\"></span\n\t><span data-dojo-attach-point=\"buttonContainer\"\n\t\t><button data-dojo-type=\"./form/Button\" data-dojo-props=\"label: '${buttonSave}', 'class': 'saveButton'\"\n\t\t\tdata-dojo-attach-point=\"saveButton\" data-dojo-attach-event=\"onClick:save\"></button\n\t\t><button data-dojo-type=\"./form/Button\" data-dojo-props=\"label: '${buttonCancel}', 'class': 'cancelButton'\"\n\t\t\tdata-dojo-attach-point=\"cancelButton\" data-dojo-attach-event=\"onClick:cancel\"></button\n\t></span\n></span>\n","url:dijit/templates/CheckedMenuItem.html":"<tr class=\"dijitReset\" data-dojo-attach-point=\"focusNode\" role=\"${role}\" tabIndex=\"-1\" aria-checked=\"${checked}\">\n\t<td class=\"dijitReset dijitMenuItemIconCell\" role=\"presentation\">\n\t\t<span class=\"dijitInline dijitIcon dijitMenuItemIcon dijitCheckedMenuItemIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t\t<span class=\"dijitMenuItemIconChar dijitCheckedMenuItemIconChar\">${!checkedChar}</span>\n\t</td>\n\t<td class=\"dijitReset dijitMenuItemLabel\" colspan=\"2\" data-dojo-attach-point=\"containerNode,labelNode,textDirNode\"></td>\n\t<td class=\"dijitReset dijitMenuItemAccelKey\" style=\"display: none\" data-dojo-attach-point=\"accelKeyNode\"></td>\n\t<td class=\"dijitReset dijitMenuArrowCell\" role=\"presentation\">&#160;</td>\n</tr>\n","url:dijit/layout/templates/AccordionButton.html":"<div data-dojo-attach-event='ondijitclick:_onTitleClick' class='dijitAccordionTitle' role=\"presentation\">\n\t<div data-dojo-attach-point='titleNode,focusNode' data-dojo-attach-event='onkeydown:_onTitleKeyDown'\n\t\t\tclass='dijitAccordionTitleFocus' role=\"tab\" aria-expanded=\"false\"\n\t\t><span class='dijitInline dijitAccordionArrow' role=\"presentation\"></span\n\t\t><span class='arrowTextUp' role=\"presentation\">+</span\n\t\t><span class='arrowTextDown' role=\"presentation\">-</span\n\t\t><span role=\"presentation\" class=\"dijitInline dijitIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t\t<span role=\"presentation\" data-dojo-attach-point='titleTextNode, textDirNode' class='dijitAccordionText'></span>\n\t</div>\n</div>\n","url:dijit/layout/templates/TabContainer.html":"<div class=\"dijitTabContainer\">\n\t<div class=\"dijitTabListWrapper\" data-dojo-attach-point=\"tablistNode\"></div>\n\t<div data-dojo-attach-point=\"tablistSpacer\" class=\"dijitTabSpacer ${baseClass}-spacer\"></div>\n\t<div class=\"dijitTabPaneWrapper ${baseClass}-container\" data-dojo-attach-point=\"containerNode\"></div>\n</div>\n","url:dijit/layout/templates/_TabButton.html":"<div role=\"presentation\" data-dojo-attach-point=\"titleNode,innerDiv,tabContent\" class=\"dijitTabInner dijitTabContent\">\n\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitTabButtonIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t<span data-dojo-attach-point='containerNode,focusNode' class='tabLabel'></span>\n\t<span class=\"dijitInline dijitTabCloseButton dijitTabCloseIcon\" data-dojo-attach-point='closeNode'\n\t\t role=\"presentation\">\n\t\t<span data-dojo-attach-point='closeText' class='dijitTabCloseText'>[x]</span\n\t\t\t\t></span>\n</div>\n","url:dijit/layout/templates/ScrollingTabController.html":"<div class=\"dijitTabListContainer-${tabPosition}\" style=\"visibility:hidden\">\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerMenuButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_menuBtn\"\n\t\t data-dojo-props=\"containerId: '${containerId}', iconClass: 'dijitTabStripMenuIcon',\n\t\t\t\t\tdropDownPosition: ['below-alt', 'above-alt']\"\n\t\t data-dojo-attach-point=\"_menuBtn\" showLabel=\"false\" title=\"\">&#9660;</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_leftBtn\"\n\t\t data-dojo-props=\"iconClass:'dijitTabStripSlideLeftIcon', showLabel:false, title:''\"\n\t\t data-dojo-attach-point=\"_leftBtn\" data-dojo-attach-event=\"onClick: doSlideLeft\">&#9664;</div>\n\t<div data-dojo-type=\"dijit.layout._ScrollingTabControllerButton\"\n\t\t class=\"tabStripButton-${tabPosition}\"\n\t\t id=\"${id}_rightBtn\"\n\t\t data-dojo-props=\"iconClass:'dijitTabStripSlideRightIcon', showLabel:false, title:''\"\n\t\t data-dojo-attach-point=\"_rightBtn\" data-dojo-attach-event=\"onClick: doSlideRight\">&#9654;</div>\n\t<div class='dijitTabListWrapper' data-dojo-attach-point='tablistWrapper'>\n\t\t<div role='tablist' data-dojo-attach-event='onkeydown:onkeydown'\n\t\t\t data-dojo-attach-point='containerNode' class='nowrapTabStrip'></div>\n\t</div>\n</div>","url:dijit/layout/templates/_ScrollingTabControllerButton.html":"<div data-dojo-attach-event=\"ondijitclick:_onClick\" class=\"dijitTabInnerDiv dijitTabContent dijitButtonContents\" data-dojo-attach-point=\"focusNode\" role=\"button\">\n\t<span role=\"presentation\" class=\"dijitInline dijitTabStripIcon\" data-dojo-attach-point=\"iconNode\"></span>\n\t<span data-dojo-attach-point=\"containerNode,titleNode\" class=\"dijitButtonText\"></span>\n</div>","url:dijit/templates/ProgressBar.html":"<div class=\"dijitProgressBar dijitProgressBarEmpty\" role=\"progressbar\"\n\t><div data-dojo-attach-point=\"internalProgress\" class=\"dijitProgressBarFull\"\n\t\t><div class=\"dijitProgressBarTile\" role=\"presentation\"></div\n\t\t><span style=\"visibility:hidden\">&#160;</span\n\t></div\n\t><div data-dojo-attach-point=\"labelNode\" class=\"dijitProgressBarLabel\" id=\"${id}_label\"></div\n\t><span data-dojo-attach-point=\"indeterminateHighContrastImage\"\n\t\t class=\"dijitInline dijitProgressBarIndeterminateHighContrastImage\"></span\n></div>\n","url:dijit/templates/TooltipDialog.html":"<div role=\"alertdialog\" tabIndex=\"-1\">\n\t<div class=\"dijitTooltipContainer\" role=\"presentation\">\n\t\t<div data-dojo-attach-point=\"contentsNode\" class=\"dijitTooltipContents dijitTooltipFocusNode\">\n\t\t\t<div data-dojo-attach-point=\"containerNode\"></div>\n\t\t\t${!actionBarTemplate}\n\t\t</div>\n\t</div>\n\t<div class=\"dijitTooltipConnector\" role=\"presentation\" data-dojo-attach-point=\"connectorNode\"></div>\n</div>\n","url:dijit/templates/TreeNode.html":"<div class=\"dijitTreeNode\" role=\"presentation\"\n\t><div data-dojo-attach-point=\"rowNode\" class=\"dijitTreeRow\" role=\"presentation\"\n\t\t><span data-dojo-attach-point=\"expandoNode\" class=\"dijitInline dijitTreeExpando\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"expandoNodeText\" class=\"dijitExpandoText\" role=\"presentation\"></span\n\t\t><span data-dojo-attach-point=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" role=\"presentation\">\n\t\t\t<span role=\"presentation\" class=\"dijitInline dijitIcon dijitTreeIcon\" data-dojo-attach-point=\"iconNode\"></span\n\t\t\t><span data-dojo-attach-point=\"labelNode,focusNode\" class=\"dijitTreeLabel\" role=\"treeitem\"\n\t\t\t\t tabindex=\"-1\" aria-selected=\"false\" id=\"${id}_label\"></span>\n\t\t</span\n\t></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeNodeContainer\" role=\"presentation\"\n\t\t style=\"display: none;\" aria-labelledby=\"${id}_label\"></div>\n</div>\n","url:dijit/templates/Tree.html":"<div role=\"tree\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" data-dojo-attach-point=\"indentDetector\"></div>\n\t<div class=\"dijitTreeExpando dijitTreeExpandoLoading\" data-dojo-attach-point=\"rootLoadingIndicator\"></div>\n\t<div data-dojo-attach-point=\"containerNode\" class=\"dijitTreeContainer\" role=\"presentation\">\n\t</div>\n</div>\n","*now":function(r){r(["dojo/i18n!*preload*dojo/nls/tt-rss-layer*[\"ar\",\"ca\",\"cs\",\"da\",\"de\",\"el\",\"en-gb\",\"en-us\",\"es-es\",\"fi-fi\",\"fr-fr\",\"he-il\",\"hu\",\"it-it\",\"ja-jp\",\"ko-kr\",\"nl-nl\",\"nb\",\"pl\",\"pt-br\",\"pt-pt\",\"ru\",\"sk\",\"sl\",\"sv\",\"th\",\"tr\",\"zh-tw\",\"zh-cn\",\"ROOT\"]"]);}}});define("dojo/tt-rss-layer",[],1); \ No newline at end of file
diff --git a/lib/jimIcon.php b/lib/jimIcon.php
index eaa768272..eb9a51458 100644
--- a/lib/jimIcon.php
+++ b/lib/jimIcon.php
@@ -31,7 +31,7 @@ class jimIcon {
}
if ($a != 127)
$this->all_transaprent = 0;
- return imagecolorallocatealpha($img, $r, $g, $b, $a);
+ return imagecolorallocatealpha($img, $r, $g, $b, (int) $a);
}
// Given a string with the contents of an .ICO,
diff --git a/phpstan.neon b/phpstan.neon
index 818f99577..63132d801 100644
--- a/phpstan.neon
+++ b/phpstan.neon
@@ -1,13 +1,8 @@
parameters:
- level: 5
+ level: 6
ignoreErrors:
-# - '#Constant.*not found#'
- '#Constant.*\b(SUBSTRING_FOR_DATE|SCHEMA_VERSION|SELF_USER_AGENT|LABEL_BASE_INDEX|PLUGIN_FEED_BASE_INDEX)\b.*not found#'
- '#Comparison operation ">" between int<1, max> and 0 is always true.#'
- - '#Access to an undefined property DOMNode::\$tagName.#'
- - '#Call to an undefined method DOMNode::(get|remove|set|has)Attribute\(\).#'
- - '#Call to an undefined method DOMNode::(getElementsByTagName)\(\).#'
- - '#PHPDoc tag @param has invalid value#'
- message: '##'
paths:
- lib/*
diff --git a/phpunit.xml b/phpunit.xml
new file mode 100644
index 000000000..73efc552c
--- /dev/null
+++ b/phpunit.xml
@@ -0,0 +1,10 @@
+<phpunit
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/latest/phpunit.xsd"
+ bootstrap="tests/autoload.php"
+ verbose="true">
+ <testsuite name="tt-rss">
+ <directory>tests</directory>
+</testsuite>
+
+</phpunit>
diff --git a/plugins/af_comics/filter_base.php b/plugins/af_comics/filter_base.php
index d6a697bb4..83bc48184 100644
--- a/plugins/af_comics/filter_base.php
+++ b/plugins/af_comics/filter_base.php
@@ -1,16 +1,38 @@
<?php
abstract class Af_ComicFilter {
+ /** @return array<string> */
public abstract function supported();
+
+ /**
+ * @param array<string,mixed> $article
+ * @return bool
+ */
public abstract function process(&$article);
+ public function __construct(/*PluginHost $host*/) {
+
+ }
+
+ /**
+ * @param string $url
+ * @return string|false
+ */
public function on_subscribe($url) {
return false;
}
+ /**
+ * @param string $url
+ * @return array{"title": string, "site_url": string}|false
+ */
public function on_basic_info($url) {
return false;
}
+ /**
+ * @param string $url
+ * @return string|false
+ */
public function on_fetch($url) {
return false;
}
diff --git a/plugins/af_comics/filters/af_comics_comicpress.php b/plugins/af_comics/filters/af_comics_comicpress.php
index 741d59672..b963b2ae7 100755
--- a/plugins/af_comics/filters/af_comics_comicpress.php
+++ b/plugins/af_comics/filters/af_comics_comicpress.php
@@ -3,13 +3,16 @@ class Af_Comics_ComicPress extends Af_ComicFilter {
function supported() {
return array("Buni", "Buttersafe", "Happy Jar", "CSection",
- "Extra Fabulous Comics", "Nedroid", "Stonetoss");
+ "Extra Fabulous Comics", "Nedroid", "Stonetoss",
+ "Danby Draws", "Powerup Comics");
}
function process(&$article) {
if (strpos($article["guid"], "bunicomic.com") !== false ||
strpos($article["guid"], "buttersafe.com") !== false ||
strpos($article["guid"], "extrafabulouscomics.com") !== false ||
+ strpos($article["guid"], "danbydraws.com") !== false ||
+ strpos($article["guid"], "theduckwebcomics.com/Powerup_Comics") !== false ||
strpos($article["guid"], "happyjar.com") !== false ||
strpos($article["guid"], "nedroid.com") !== false ||
strpos($article["guid"], "stonetoss.com") !== false ||
@@ -32,7 +35,7 @@ class Af_Comics_ComicPress extends Af_ComicFilter {
return true;
}
- // buni-specific
+ /** @var DOMElement|null $webtoon_link (buni specific) */
$webtoon_link = $xpath->query("//a[contains(@href,'www.webtoons.com')]")->item(0);
if ($webtoon_link) {
diff --git a/plugins/af_comics/filters/af_comics_dilbert.php b/plugins/af_comics/filters/af_comics_dilbert.php
index 49fa54cfa..a1c59b94c 100644
--- a/plugins/af_comics/filters/af_comics_dilbert.php
+++ b/plugins/af_comics/filters/af_comics_dilbert.php
@@ -22,7 +22,7 @@ class Af_Comics_Dilbert extends Af_ComicFilter {
if ($res && $doc->loadHTML($res)) {
$xpath = new DOMXPath($doc);
- // Get the image container
+ /** @var DOMElement|null $basenode (image container) */
$basenode = $xpath->query('(//div[@class="img-comic-container"]/a[@class="img-comic-link"])')->item(0);
// Get the comic title
diff --git a/plugins/af_comics/filters/af_comics_explosm.php b/plugins/af_comics/filters/af_comics_explosm.php
index bfe38e53b..3f8b49726 100644
--- a/plugins/af_comics/filters/af_comics_explosm.php
+++ b/plugins/af_comics/filters/af_comics_explosm.php
@@ -13,7 +13,7 @@ class Af_Comics_Explosm extends Af_ComicFilter {
if (@$doc->loadHTML(UrlHelper::fetch($article["link"]))) {
$xpath = new DOMXPath($doc);
- $basenode = $xpath->query('(//img[@id="main-comic"])')->item(0);
+ $basenode = $xpath->query('//div[contains(@class, "MainComic__ComicImage")]//img')->item(0);
if ($basenode) {
$article["content"] = $doc->saveHTML($basenode);
diff --git a/plugins/af_comics/filters/af_comics_gocomics.php b/plugins/af_comics/filters/af_comics_gocomics.php
index 71d387918..732f7d0b8 100644
--- a/plugins/af_comics/filters/af_comics_gocomics.php
+++ b/plugins/af_comics/filters/af_comics_gocomics.php
@@ -50,6 +50,7 @@ class Af_Comics_Gocomics extends Af_ComicFilter {
if (@$doc->loadHTML($body)) {
$xpath = new DOMXPath($doc);
+ /** @var DOMElement|null $node */
$node = $xpath->query('//picture[contains(@class, "item-comic-image")]/img')->item(0);
if ($node) {
diff --git a/plugins/af_comics/filters/af_comics_gocomics_farside.php b/plugins/af_comics/filters/af_comics_gocomics_farside.php
index 0399015ab..e4e230516 100644
--- a/plugins/af_comics/filters/af_comics_gocomics_farside.php
+++ b/plugins/af_comics/filters/af_comics_gocomics_farside.php
@@ -50,8 +50,22 @@ class Af_Comics_Gocomics_FarSide extends Af_ComicFilter {
if ($content_node) {
$imgs = $xpath->query('//img[@data-src]', $content_node);
+ $cache = new DiskCache("images");
+
foreach ($imgs as $img) {
- $img->setAttribute('src', $img->getAttribute('data-src'));
+ $image_url = $img->getAttribute('data-src');
+ $local_filename = sha1($image_url);
+
+ if ($image_url) {
+ $img->setAttribute('src', $image_url);
+
+ // try to cache image locally because they just 401 us otherwise
+ if (!$cache->exists($local_filename)) {
+ Debug::log("[Af_Comics_Gocomics_FarSide] caching: $image_url", Debug::LOG_VERBOSE);
+ $res = $cache->download($image_url, sha1($image_url), ["http_referrer" => $image_url]);
+ Debug::log("[Af_Comics_Gocomics_FarSide] cache result: $res", Debug::LOG_VERBOSE);
+ }
+ }
}
$junk_elems = $xpath->query("//*[@data-shareable-popover]");
diff --git a/plugins/af_comics/filters/af_comics_tfd.php b/plugins/af_comics/filters/af_comics_tfd.php
index 19ca43a24..2010da37e 100644
--- a/plugins/af_comics/filters/af_comics_tfd.php
+++ b/plugins/af_comics/filters/af_comics_tfd.php
@@ -12,7 +12,7 @@ class Af_Comics_Tfd extends Af_ComicFilter {
false, false, 0,
"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)");
- if (!$res) return $article;
+ if (!$res) return false;
$doc = new DOMDocument();
diff --git a/plugins/af_comics/init.php b/plugins/af_comics/init.php
index 8aba1416b..a9a8f3faa 100755
--- a/plugins/af_comics/init.php
+++ b/plugins/af_comics/init.php
@@ -1,7 +1,7 @@
<?php
class Af_Comics extends Plugin {
- private $host;
+ /** @var array<object> $filters */
private $filters = array();
function about() {
@@ -11,8 +11,6 @@ class Af_Comics extends Plugin {
}
function init($host) {
- $this->host = $host;
-
$host->add_hook($host::HOOK_FETCH_FEED, $this);
$host->add_hook($host::HOOK_FEED_BASIC_INFO, $this);
$host->add_hook($host::HOOK_SUBSCRIBE_FEED, $this);
@@ -34,7 +32,7 @@ class Af_Comics extends Plugin {
array_push($names, $filter_name);
- $filter = new $filter_name();
+ $filter = new $filter_name($host);
if (is_subclass_of($filter, "Af_ComicFilter")) {
array_push($this->filters, $filter);
diff --git a/plugins/af_psql_trgm/init.php b/plugins/af_psql_trgm/init.php
index 87415450b..d12f50713 100644
--- a/plugins/af_psql_trgm/init.php
+++ b/plugins/af_psql_trgm/init.php
@@ -1,9 +1,13 @@
<?php
class Af_Psql_Trgm extends Plugin {
- /* @var PluginHost $host */
+ /** @var PluginHost $host */
private $host;
+
+ /** @var float */
private $default_similarity = 0.75;
+
+ /** @var int */
private $default_min_length = 32;
function about() {
@@ -12,6 +16,7 @@ class Af_Psql_Trgm extends Plugin {
"fox");
}
+ /** @return void */
function save() {
$similarity = (float) $_POST["similarity"];
$min_title_length = (int) $_POST["min_title_length"];
@@ -45,6 +50,7 @@ class Af_Psql_Trgm extends Plugin {
return file_get_contents(__DIR__ . "/init.js");
}
+ /** @return void */
function showrelated() {
$id = (int) $_REQUEST['id'];
$owner_uid = $_SESSION["uid"];
@@ -118,7 +124,7 @@ class Af_Psql_Trgm extends Plugin {
function hook_article_button($line) {
return "<i style=\"cursor : pointer\" class='material-icons'
onclick=\"Plugins.Psql_Trgm.showRelated(".$line["id"].")\"
- title='".__('Show related articles')."'>bookmark_outline</i>";
+ title=\"".__('Show related articles')."\">bookmark_outline</i>";
}
function hook_prefs_tab($args) {
@@ -196,7 +202,7 @@ class Af_Psql_Trgm extends Plugin {
<?php
/* cleanup */
$enabled_feeds = $this->filter_unknown_feeds(
- $this->get_stored_array("enabled_feeds"));
+ $this->host->get_array($this, "enabled_feeds"));
$this->host->set($this, "enabled_feeds", $enabled_feeds);
?>
@@ -221,7 +227,7 @@ class Af_Psql_Trgm extends Plugin {
}
function hook_prefs_edit_feed($feed_id) {
- $enabled_feeds = $this->get_stored_array("enabled_feeds");
+ $enabled_feeds = $this->host->get_array($this, "enabled_feeds");
?>
<header><?= __("Similarity (af_psql_trgm)") ?></header>
@@ -238,7 +244,7 @@ class Af_Psql_Trgm extends Plugin {
}
function hook_prefs_save_feed($feed_id) {
- $enabled_feeds = $this->get_stored_array("enabled_feeds");
+ $enabled_feeds = $this->host->get_array($this, "enabled_feeds");
$enable = checkbox_to_sql_bool($_POST["trgm_similarity_enabled"] ?? "");
$key = array_search($feed_id, $enabled_feeds);
@@ -267,7 +273,7 @@ class Af_Psql_Trgm extends Plugin {
if (!$enable_globally &&
!in_array($article["feed"]["id"],
- $this->get_stored_array("enabled_feeds"))) {
+ $this->host->get_array($this,"enabled_feeds"))) {
return $article;
}
@@ -275,14 +281,14 @@ class Af_Psql_Trgm extends Plugin {
$similarity = (float) $this->host->get($this, "similarity", $this->default_similarity);
if ($similarity < 0.01) {
- Debug::log("af_psql_trgm: similarity is set too low ($similarity)", Debug::$LOG_EXTENDED);
+ Debug::log("af_psql_trgm: similarity is set too low ($similarity)", Debug::LOG_EXTENDED);
return $article;
}
$min_title_length = (int) $this->host->get($this, "min_title_length", $this->default_min_length);
if (mb_strlen($article["title"]) < $min_title_length) {
- Debug::log("af_psql_trgm: article title is too short (min: $min_title_length)", Debug::$LOG_EXTENDED);
+ Debug::log("af_psql_trgm: article title is too short (min: $min_title_length)", Debug::LOG_EXTENDED);
return $article;
}
@@ -321,10 +327,10 @@ class Af_Psql_Trgm extends Plugin {
$row = $sth->fetch();
$similarity_result = $row['ms'];
- Debug::log("af_psql_trgm: similarity result for $title_escaped: $similarity_result", Debug::$LOG_EXTENDED);
+ Debug::log("af_psql_trgm: similarity result for $title_escaped: $similarity_result", Debug::LOG_EXTENDED);
if ($similarity_result >= $similarity) {
- Debug::log("af_psql_trgm: marking article as read ($similarity_result >= $similarity)", Debug::$LOG_EXTENDED);
+ Debug::log("af_psql_trgm: marking article as read ($similarity_result >= $similarity)", Debug::LOG_EXTENDED);
$article["force_catchup"] = true;
}
@@ -336,7 +342,12 @@ class Af_Psql_Trgm extends Plugin {
return 2;
}
- private function filter_unknown_feeds($enabled_feeds) {
+ /**
+ * @param array<int> $enabled_feeds
+ * @return array<int>
+ * @throws PDOException
+ */
+ private function filter_unknown_feeds($enabled_feeds) : array {
$tmp = array();
foreach ($enabled_feeds as $feed) {
@@ -351,14 +362,4 @@ class Af_Psql_Trgm extends Plugin {
return $tmp;
}
-
- private function get_stored_array($name) {
- $tmp = $this->host->get($this, $name);
-
- if (!is_array($tmp)) $tmp = [];
-
- return $tmp;
- }
-
-
}
diff --git a/plugins/af_readability/composer.json b/plugins/af_readability/composer.json
index 71acf9b0f..f23f50db9 100644
--- a/plugins/af_readability/composer.json
+++ b/plugins/af_readability/composer.json
@@ -1,5 +1,5 @@
{
"require": {
- "andreskrey/readability.php": "^2.1"
+ "fivefilters/readability.php": "^2.1"
}
}
diff --git a/plugins/af_readability/composer.lock b/plugins/af_readability/composer.lock
index f8e1237c5..8001f054e 100644
--- a/plugins/af_readability/composer.lock
+++ b/plugins/af_readability/composer.lock
@@ -4,19 +4,19 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "2a37019b27f1590966011df3bf6e135b",
+ "content-hash": "985d4bb2caa672420e280a0b2bbb4715",
"packages": [
{
- "name": "andreskrey/readability.php",
+ "name": "fivefilters/readability.php",
"version": "v2.1.0",
"source": {
"type": "git",
- "url": "https://github.com/andreskrey/readability.php.git",
+ "url": "https://github.com/fivefilters/readability.php.git",
"reference": "7617a912b6c527909168f5d41d263792f171c42a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/andreskrey/readability.php/zipball/7617a912b6c527909168f5d41d263792f171c42a",
+ "url": "https://api.github.com/repos/fivefilters/readability.php/zipball/7617a912b6c527909168f5d41d263792f171c42a",
"reference": "7617a912b6c527909168f5d41d263792f171c42a",
"shasum": ""
},
@@ -58,23 +58,22 @@
"readability"
],
"support": {
- "issues": "https://github.com/andreskrey/readability.php/issues",
- "source": "https://github.com/andreskrey/readability.php/tree/v2.1.0"
+ "source": "https://github.com/fivefilters/readability.php/tree/v2.1.0"
},
"time": "2019-07-22T21:42:25+00:00"
},
{
"name": "psr/log",
- "version": "1.1.3",
+ "version": "1.1.4",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"shasum": ""
},
"require": {
@@ -98,7 +97,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
@@ -109,9 +108,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/1.1.3"
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
},
- "time": "2020-03-23T09:12:05+00:00"
+ "time": "2021-05-03T11:20:27+00:00"
}
],
"packages-dev": [],
diff --git a/plugins/af_readability/init.php b/plugins/af_readability/init.php
index a39cc278e..7027db4a7 100755
--- a/plugins/af_readability/init.php
+++ b/plugins/af_readability/init.php
@@ -6,7 +6,7 @@ use \andreskrey\Readability\Configuration;
class Af_Readability extends Plugin {
- /* @var PluginHost $host */
+ /** @var PluginHost $host */
private $host;
function about() {
@@ -19,6 +19,7 @@ class Af_Readability extends Plugin {
return array("needs_curl" => true);
}
+ /** @return void */
function save() {
$enable_share_anything = checkbox_to_sql_bool($_POST["enable_share_anything"] ?? "");
@@ -51,7 +52,7 @@ class Af_Readability extends Plugin {
function hook_article_button($line) {
return "<i class='material-icons' onclick=\"Plugins.Af_Readability.embed(".$line["id"].")\"
- style='cursor : pointer' title='".__('Toggle full article text')."'>description</i>";
+ style='cursor : pointer' title=\"".__('Toggle full article text')."\">description</i>";
}
function hook_prefs_tab($args) {
@@ -186,9 +187,14 @@ class Af_Readability extends Plugin {
case "action_append":
return $this->process_article($article, true);
}
+ return $article;
}
- public function extract_content($url) {
+ /**
+ * @param string $url
+ * @return string|false
+ */
+ public function extract_content(string $url) {
$tmp = UrlHelper::fetch([
"url" => $url,
@@ -212,7 +218,11 @@ class Af_Readability extends Plugin {
}
try {
- $r = new Readability(new Configuration());
+
+ $r = new Readability(new Configuration([
+ 'fixRelativeURLs' => true,
+ 'originalURL' => $url,
+ ]));
if ($r->parse($tmp)) {
@@ -222,13 +232,18 @@ class Af_Readability extends Plugin {
foreach ($entries as $entry) {
if ($entry->hasAttribute("href")) {
$entry->setAttribute("href",
- rewrite_relative_url(UrlHelper::$fetch_effective_url, $entry->getAttribute("href")));
+ UrlHelper::rewrite_relative(UrlHelper::$fetch_effective_url, $entry->getAttribute("href")));
}
if ($entry->hasAttribute("src")) {
+ if ($entry->hasAttribute("data-src")) {
+ $src = $entry->getAttribute("data-src");
+ } else {
+ $src = $entry->getAttribute("src");
+ }
$entry->setAttribute("src",
- rewrite_relative_url(UrlHelper::$fetch_effective_url, $entry->getAttribute("src")));
+ UrlHelper::rewrite_relative(UrlHelper::$fetch_effective_url, $src));
}
}
@@ -244,7 +259,13 @@ class Af_Readability extends Plugin {
return false;
}
- function process_article($article, $append_mode) {
+ /**
+ * @param array<string, mixed> $article
+ * @param bool $append_mode
+ * @return array<string,mixed>
+ * @throws PDOException
+ */
+ function process_article(array $article, bool $append_mode) : array {
$extracted_content = $this->extract_content($article["link"]);
@@ -261,12 +282,14 @@ class Af_Readability extends Plugin {
return $article;
}
- private function get_stored_array($name) {
- $tmp = $this->host->get($this, $name);
-
- if (!is_array($tmp)) $tmp = [];
-
- return $tmp;
+ /**
+ * @param string $name
+ * @return array<int|string, mixed>
+ * @throws PDOException
+ * @deprecated
+ */
+ private function get_stored_array(string $name) : array {
+ return $this->host->get_array($this, $name);
}
function hook_article_filter($article) {
@@ -304,7 +327,12 @@ class Af_Readability extends Plugin {
return 2;
}
- private function filter_unknown_feeds($enabled_feeds) {
+ /**
+ * @param array<int> $enabled_feeds
+ * @return array<int>
+ * @throws PDOException
+ */
+ private function filter_unknown_feeds(array $enabled_feeds) : array {
$tmp = array();
foreach ($enabled_feeds as $feed) {
@@ -320,7 +348,7 @@ class Af_Readability extends Plugin {
return $tmp;
}
- function embed() {
+ function embed() : void {
$article_id = (int) $_REQUEST["id"];
$sth = $this->pdo->prepare("SELECT link FROM ttrss_entries WHERE id = ?");
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Readability.php b/plugins/af_readability/vendor/andreskrey/readability.php/src/Readability.php
deleted file mode 100644
index 332c96288..000000000
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Readability.php
+++ /dev/null
@@ -1,1804 +0,0 @@
-<?php
-
-namespace andreskrey\Readability;
-
-use andreskrey\Readability\Nodes\DOM\DOMDocument;
-use andreskrey\Readability\Nodes\DOM\DOMElement;
-use andreskrey\Readability\Nodes\DOM\DOMNode;
-use andreskrey\Readability\Nodes\DOM\DOMText;
-use andreskrey\Readability\Nodes\NodeUtility;
-use Psr\Log\LoggerInterface;
-
-/**
- * Class Readability.
- */
-class Readability
-{
- /**
- * Main DOMDocument where all the magic happens.
- *
- * @var DOMDocument
- */
- protected $dom;
-
- /**
- * Title of the article.
- *
- * @var string|null
- */
- protected $title = null;
-
- /**
- * Final DOMDocument with the fully parsed HTML.
- *
- * @var DOMDocument|null
- */
- protected $content = null;
-
- /**
- * Excerpt of the article.
- *
- * @var string|null
- */
- protected $excerpt = null;
-
- /**
- * Main image of the article.
- *
- * @var string|null
- */
- protected $image = null;
-
- /**
- * Author of the article. Extracted from the byline tags and other social media properties.
- *
- * @var string|null
- */
- protected $author = null;
-
- /**
- * Website name.
- *
- * @var string|null
- */
- protected $siteName = null;
-
- /**
- * Direction of the text.
- *
- * @var string|null
- */
- protected $direction = null;
-
- /**
- * Configuration object.
- *
- * @var Configuration
- */
- private $configuration;
-
- /**
- * Logger object.
- *
- * @var LoggerInterface
- */
- private $logger;
-
- /**
- * Collection of attempted text extractions.
- *
- * @var array
- */
- private $attempts = [];
-
- /**
- * @var array
- */
- private $defaultTagsToScore = [
- 'section',
- 'h2',
- 'h3',
- 'h4',
- 'h5',
- 'h6',
- 'p',
- 'td',
- 'pre',
- ];
-
- /**
- * @var array
- */
- private $alterToDIVExceptions = [
- 'div',
- 'article',
- 'section',
- 'p',
- ];
-
- /**
- * Readability constructor.
- *
- * @param Configuration $configuration
- */
- public function __construct(Configuration $configuration)
- {
- $this->configuration = $configuration;
- $this->logger = $this->configuration->getLogger();
- }
-
- /**
- * Main parse function.
- *
- * @param $html
- *
- * @throws ParseException
- *
- * @return bool
- */
- public function parse($html)
- {
- $this->logger->info('*** Starting parse process...');
-
- $this->dom = $this->loadHTML($html);
-
- // Checking for minimum HTML to work with.
- if (!($root = $this->dom->getElementsByTagName('body')->item(0)) || !$root->firstChild) {
- $this->logger->emergency('No body tag present or body tag empty');
-
- throw new ParseException('Invalid or incomplete HTML.');
- }
-
- $this->getMetadata();
-
- $this->getMainImage();
-
- while (true) {
- $root = $root->firstChild;
-
- $elementsToScore = $this->getNodes($root);
- $this->logger->debug(sprintf('Elements to score: \'%s\'', count($elementsToScore)));
-
- $result = $this->rateNodes($elementsToScore);
-
- /*
- * Now that we've gone through the full algorithm, check to see if
- * we got any meaningful content. If we didn't, we may need to re-run
- * grabArticle with different flags set. This gives us a higher likelihood of
- * finding the content, and the sieve approach gives us a higher likelihood of
- * finding the -right- content.
- */
-
- $length = mb_strlen(preg_replace(NodeUtility::$regexps['onlyWhitespace'], '', $result->textContent));
-
- $this->logger->info(sprintf('[Parsing] Article parsed. Amount of words: %s. Current threshold is: %s', $length, $this->configuration->getCharThreshold()));
-
- if ($result && $length < $this->configuration->getCharThreshold()) {
- $this->dom = $this->loadHTML($html);
- $root = $this->dom->getElementsByTagName('body')->item(0);
-
- if ($this->configuration->getStripUnlikelyCandidates()) {
- $this->logger->debug('[Parsing] Threshold not met, trying again setting StripUnlikelyCandidates as false');
- $this->configuration->setStripUnlikelyCandidates(false);
- $this->attempts[] = ['articleContent' => $result, 'textLength' => $length];
- } elseif ($this->configuration->getWeightClasses()) {
- $this->logger->debug('[Parsing] Threshold not met, trying again setting WeightClasses as false');
- $this->configuration->setWeightClasses(false);
- $this->attempts[] = ['articleContent' => $result, 'textLength' => $length];
- } elseif ($this->configuration->getCleanConditionally()) {
- $this->logger->debug('[Parsing] Threshold not met, trying again setting CleanConditionally as false');
- $this->configuration->setCleanConditionally(false);
- $this->attempts[] = ['articleContent' => $result, 'textLength' => $length];
- } else {
- $this->logger->debug('[Parsing] Threshold not met, searching across attempts for some content.');
- $this->attempts[] = ['articleContent' => $result, 'textLength' => $length];
-
- // No luck after removing flags, just return the longest text we found during the different loops
- usort($this->attempts, function ($a, $b) {
- return $b['textLength'] - $a['textLength'];
- });
-
- // But first check if we actually have something
- if (!$this->attempts[0]['textLength']) {
- $this->logger->emergency('[Parsing] Could not parse text, giving up :(');
-
- throw new ParseException('Could not parse text.');
- }
-
- $this->logger->debug('[Parsing] Threshold not met, but found some content in previous attempts.');
-
- $result = $this->attempts[0]['articleContent'];
- break;
- }
- } else {
- break;
- }
- }
-
- $result = $this->postProcessContent($result);
-
- // If we haven't found an excerpt in the article's metadata, use the article's
- // first paragraph as the excerpt. This can be used for displaying a preview of
- // the article's content.
- if (!$this->getExcerpt()) {
- $this->logger->debug('[Parsing] No excerpt text found on metadata, extracting first p node and using it as excerpt.');
- $paragraphs = $result->getElementsByTagName('p');
- if ($paragraphs->length > 0) {
- $this->setExcerpt(trim($paragraphs->item(0)->textContent));
- }
- }
-
- $this->setContent($result);
-
- $this->logger->info('*** Parse successful :)');
-
- return true;
- }
-
- /**
- * Creates a DOM Document object and loads the provided HTML on it.
- *
- * Used for the first load of Readability and subsequent reloads (when disabling flags and rescanning the text)
- * Previous versions of Readability used this method one time and cloned the DOM to keep a backup. This caused bugs
- * because cloning the DOM object keeps a relation between the clone and the original one, doing changes in both
- * objects and ruining the backup.
- *
- * @param string $html
- *
- * @return DOMDocument
- */
- private function loadHTML($html)
- {
- $this->logger->debug('[Loading] Loading HTML...');
-
- // To avoid throwing a gazillion of errors on malformed HTMLs
- libxml_use_internal_errors(true);
-
- $dom = new DOMDocument('1.0', 'utf-8');
-
- if (!$this->configuration->getSubstituteEntities()) {
- // Keep the original HTML entities
- $dom->substituteEntities = false;
- }
-
- if ($this->configuration->getNormalizeEntities()) {
- $this->logger->debug('[Loading] Normalized entities via mb_convert_encoding.');
- // Replace UTF-8 characters with the HTML Entity equivalent. Useful to fix html with mixed content
- $html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');
- }
-
- if ($this->configuration->getSummonCthulhu()) {
- $this->logger->debug('[Loading] Removed script tags via regex H̶͈̩̟̬̱͠E̡̨̬͔̳̜͢͠ ̡̧̯͉̩͙̩̹̞̠͎͈̹̥̠͞ͅͅC̶͉̞̘̖̝̗͓̬̯͍͉̤̬͢͢͞Ò̟̘͉͖͎͉̱̭̣̕M̴̯͈̻̱̱̣̗͈̠̙̲̥͘͞E̷̛͙̼̲͍͕̹͍͇̗̻̬̮̭̱̥͢Ş̛̟͔̙̜̤͇̮͍̙̝̀͘');
- $html = preg_replace('/<script\b[^>]*>([\s\S]*?)<\/script>/', '', $html);
- }
-
- // Prepend the XML tag to avoid having issues with special characters. Should be harmless.
- $dom->loadHTML('<?xml encoding="UTF-8">' . $html);
- $dom->encoding = 'UTF-8';
-
- $this->removeScripts($dom);
-
- $this->prepDocument($dom);
-
- $this->logger->debug('[Loading] Loaded HTML successfully.');
-
- return $dom;
- }
-
- /**
- * Tries to guess relevant info from metadata of the html. Sets the results in the Readability properties.
- */
- private function getMetadata()
- {
- $this->logger->debug('[Metadata] Retrieving metadata...');
-
- $values = [];
- // property is a space-separated list of values
- $propertyPattern = '/\s*(dc|dcterm|og|twitter)\s*:\s*(author|creator|description|title|image|site_name)(?!:)\s*/i';
-
- // name is a single value
- $namePattern = '/^\s*(?:(dc|dcterm|og|twitter|weibo:(article|webpage))\s*[\.:]\s*)?(author|creator|description|title|image|site_name)(?!:)\s*$/i';
-
- // Find description tags.
- foreach ($this->dom->getElementsByTagName('meta') as $meta) {
- /* @var DOMNode $meta */
- $elementName = $meta->getAttribute('name');
- $elementProperty = $meta->getAttribute('property');
- $content = $meta->getAttribute('content');
- $matches = null;
- $name = null;
-
- if ($elementProperty) {
- if (preg_match($propertyPattern, $elementProperty, $matches)) {
- for ($i = count($matches) - 1; $i >= 0; $i--) {
- // Convert to lowercase, and remove any whitespace
- // so we can match below.
- $name = preg_replace('/\s/', '', mb_strtolower($matches[$i]));
- // multiple authors
- $values[$name] = trim($content);
- }
- }
- }
-
- if (!$matches && $elementName && preg_match($namePattern, $elementName)) {
- $name = $elementName;
- if ($content) {
- // Convert to lowercase, remove any whitespace, and convert dots
- // to colons so we can match below.
- $name = preg_replace(['/\s/', '/\./'], ['', ':'], mb_strtolower($name));
- $values[$name] = trim($content);
- }
- }
- }
-
- // get title
- /*
- * This is a very convoluted way of extracting the first matching key of the $values array
- * against a set of options.
- *
- * This could be easily replaced with an ugly set of isset($values['key']) or a bunch of ??s.
- * Will probably replace it with ??s after dropping support of PHP5.6
- */
- $key = current(array_intersect([
- 'dc:title',
- 'dcterm:title',
- 'og:title',
- 'weibo:article:title',
- 'weibo:webpage:title',
- 'title',
- 'twitter:title'
- ], array_keys($values)));
-
- $this->setTitle(isset($values[$key]) ? trim($values[$key]) : null);
-
- if (!$this->getTitle()) {
- $this->setTitle($this->getArticleTitle());
- }
-
- // get author
- $key = current(array_intersect([
- 'dc:creator',
- 'dcterm:creator',
- 'author'
- ], array_keys($values)));
-
- $this->setAuthor(isset($values[$key]) ? $values[$key] : null);
-
- // get description
- $key = current(array_intersect([
- 'dc:description',
- 'dcterm:description',
- 'og:description',
- 'weibo:article:description',
- 'weibo:webpage:description',
- 'description',
- 'twitter:description'
- ], array_keys($values)));
-
- $this->setExcerpt(isset($values[$key]) ? $values[$key] : null);
-
- // get main image
- $key = current(array_intersect([
- 'image',
- 'og:image',
- 'twitter:image'
- ], array_keys($values)));
-
- $this->setImage(isset($values[$key]) ? $values[$key] : null);
-
- $key = current(array_intersect([
- 'og:site_name'
- ], array_keys($values)));
-
- $this->setSiteName(isset($values[$key]) ? $values[$key] : null);
- }
-
- /**
- * Returns all the images of the parsed article.
- *
- * @return array
- */
- public function getImages()
- {
- $result = [];
- if ($this->getImage()) {
- $result[] = $this->getImage();
- }
-
- if (null == $this->getDOMDocument()) {
- return $result;
- }
-
- foreach ($this->getDOMDocument()->getElementsByTagName('img') as $img) {
- if ($src = $img->getAttribute('src')) {
- $result[] = $src;
- }
- }
-
- if ($this->configuration->getFixRelativeURLs()) {
- foreach ($result as &$imgSrc) {
- $imgSrc = $this->toAbsoluteURI($imgSrc);
- }
- }
-
- $result = array_unique(array_filter($result));
-
- return $result;
- }
-
- /**
- * Tries to get the main article image. Will only update the metadata if the getMetadata function couldn't
- * find a correct image.
- */
- public function getMainImage()
- {
- $imgUrl = false;
-
- if ($this->getImage() !== null) {
- $imgUrl = $this->getImage();
- }
-
- if (!$imgUrl) {
- foreach ($this->dom->getElementsByTagName('link') as $link) {
- /** @var \DOMElement $link */
- /*
- * Check for the rel attribute, then check if the rel attribute is either img_src or image_src, and
- * finally check for the existence of the href attribute, which should hold the image url.
- */
- if ($link->hasAttribute('rel') && ($link->getAttribute('rel') === 'img_src' || $link->getAttribute('rel') === 'image_src') && $link->hasAttribute('href')) {
- $imgUrl = $link->getAttribute('href');
- break;
- }
- }
- }
-
- if (!empty($imgUrl) && $this->configuration->getFixRelativeURLs()) {
- $this->setImage($this->toAbsoluteURI($imgUrl));
- }
- }
-
- /**
- * Returns the title of the html. Prioritizes the title from the metadata against the title tag.
- *
- * @return string|null
- */
- private function getArticleTitle()
- {
- $originalTitle = null;
-
- if ($this->getTitle()) {
- $originalTitle = $this->getTitle();
- } else {
- $this->logger->debug('[Metadata] Could not find title in metadata, searching for the title tag...');
- $titleTag = $this->dom->getElementsByTagName('title');
- if ($titleTag->length > 0) {
- $this->logger->info(sprintf('[Metadata] Using title tag as article title: \'%s\'', $titleTag->item(0)->nodeValue));
- $originalTitle = $titleTag->item(0)->nodeValue;
- }
- }
-
- if ($originalTitle === null) {
- return null;
- }
-
- $curTitle = $originalTitle = trim($originalTitle);
- $titleHadHierarchicalSeparators = false;
-
- /*
- * If there's a separator in the title, first remove the final part
- *
- * Sanity warning: if you eval this match in PHPStorm's "Evaluate expression" box, it will return false
- * I can assure you it works properly if you let the code run.
- */
- if (preg_match('/ [\|\-\\\\\/>»] /i', $curTitle)) {
- $titleHadHierarchicalSeparators = (bool)preg_match('/ [\\\\\/>»] /', $curTitle);
- $curTitle = preg_replace('/(.*)[\|\-\\\\\/>»] .*/i', '$1', $originalTitle);
-
- $this->logger->info(sprintf('[Metadata] Found hierarchical separators in title, new title is: \'%s\'', $curTitle));
-
- // If the resulting title is too short (3 words or fewer), remove
- // the first part instead:
- if (count(preg_split('/\s+/', $curTitle)) < 3) {
- $curTitle = preg_replace('/[^\|\-\\\\\/>»]*[\|\-\\\\\/>»](.*)/i', '$1', $originalTitle);
- $this->logger->info(sprintf('[Metadata] Title too short, using the first part of the title instead: \'%s\'', $curTitle));
- }
- } elseif (strpos($curTitle, ': ') !== false) {
- // Check if we have an heading containing this exact string, so we
- // could assume it's the full title.
- $match = false;
- for ($i = 1; $i <= 2; $i++) {
- foreach ($this->dom->getElementsByTagName('h' . $i) as $hTag) {
- // Trim texts to avoid having false negatives when the title is surrounded by spaces or tabs
- if (trim($hTag->nodeValue) === trim($curTitle)) {
- $match = true;
- }
- }
- }
-
- // If we don't, let's extract the title out of the original title string.
- if (!$match) {
- $curTitle = substr($originalTitle, strrpos($originalTitle, ':') + 1);
-
- $this->logger->info(sprintf('[Metadata] Title has a colon in the middle, new title is: \'%s\'', $curTitle));
-
- // If the title is now too short, try the first colon instead:
- if (count(preg_split('/\s+/', $curTitle)) < 3) {
- $curTitle = substr($originalTitle, strpos($originalTitle, ':') + 1);
- $this->logger->info(sprintf('[Metadata] Title too short, using the first part of the title instead: \'%s\'', $curTitle));
- } elseif (count(preg_split('/\s+/', substr($curTitle, 0, strpos($curTitle, ':')))) > 5) {
- // But if we have too many words before the colon there's something weird
- // with the titles and the H tags so let's just use the original title instead
- $curTitle = $originalTitle;
- }
- }
- } elseif (mb_strlen($curTitle) > 150 || mb_strlen($curTitle) < 15) {
- $hOnes = $this->dom->getElementsByTagName('h1');
-
- if ($hOnes->length === 1) {
- $curTitle = $hOnes->item(0)->nodeValue;
- $this->logger->info(sprintf('[Metadata] Using title from an H1 node: \'%s\'', $curTitle));
- }
- }
-
- $curTitle = trim($curTitle);
-
- /*
- * If we now have 4 words or fewer as our title, and either no
- * 'hierarchical' separators (\, /, > or ») were found in the original
- * title or we decreased the number of words by more than 1 word, use
- * the original title.
- */
- $curTitleWordCount = count(preg_split('/\s+/', $curTitle));
- $originalTitleWordCount = count(preg_split('/\s+/', preg_replace('/[\|\-\\\\\/>»]+/', '', $originalTitle))) - 1;
-
- if ($curTitleWordCount <= 4 &&
- (!$titleHadHierarchicalSeparators || $curTitleWordCount !== $originalTitleWordCount)) {
- $curTitle = $originalTitle;
-
- $this->logger->info(sprintf('Using title from an H1 node: \'%s\'', $curTitle));
- }
-
- return $curTitle;
- }
-
- /**
- * Convert URI to an absolute URI.
- *
- * @param $uri string URI to convert
- *
- * @return string
- */
- private function toAbsoluteURI($uri)
- {
- list($pathBase, $scheme, $prePath) = $this->getPathInfo($this->configuration->getOriginalURL());
-
- // If this is already an absolute URI, return it.
- if (preg_match('/^[a-zA-Z][a-zA-Z0-9\+\-\.]*:/', $uri)) {
- return $uri;
- }
-
- // Scheme-rooted relative URI.
- if (substr($uri, 0, 2) === '//') {
- return $scheme . '://' . substr($uri, 2);
- }
-
- // Prepath-rooted relative URI.
- if (substr($uri, 0, 1) === '/') {
- return $prePath . $uri;
- }
-
- // Dotslash relative URI.
- if (strpos($uri, './') === 0) {
- return $pathBase . substr($uri, 2);
- }
- // Ignore hash URIs:
- if (substr($uri, 0, 1) === '#') {
- return $uri;
- }
-
- // Standard relative URI; add entire path. pathBase already includes a
- // trailing "/".
- return $pathBase . $uri;
- }
-
- /**
- * Returns full path info of an URL.
- *
- * @param string $url
- *
- * @return array [$pathBase, $scheme, $prePath]
- */
- public function getPathInfo($url)
- {
- // Check for base URLs
- if ($this->dom->baseURI !== null) {
- if (substr($this->dom->baseURI, 0, 1) === '/') {
- // URLs starting with '/' override completely the URL defined in the link
- $pathBase = parse_url($url, PHP_URL_SCHEME) . '://' . parse_url($url, PHP_URL_HOST) . $this->dom->baseURI;
- } else {
- // Otherwise just prepend the base to the actual path
- $pathBase = parse_url($url, PHP_URL_SCHEME) . '://' . parse_url($url, PHP_URL_HOST) . dirname(parse_url($url, PHP_URL_PATH)) . '/' . rtrim($this->dom->baseURI, '/') . '/';
- }
- } else {
- $pathBase = parse_url($url, PHP_URL_SCHEME) . '://' . parse_url($url, PHP_URL_HOST) . dirname(parse_url($url, PHP_URL_PATH)) . '/';
- }
-
- $scheme = parse_url($pathBase, PHP_URL_SCHEME);
- $prePath = $scheme . '://' . parse_url($pathBase, PHP_URL_HOST);
-
- return [$pathBase, $scheme, $prePath];
- }
-
- /**
- * Gets nodes from the root element.
- *
- * @param $node DOMNode|DOMText
- *
- * @return array
- */
- private function getNodes($node)
- {
- $this->logger->info('[Get Nodes] Retrieving nodes...');
-
- $stripUnlikelyCandidates = $this->configuration->getStripUnlikelyCandidates();
-
- $elementsToScore = [];
-
- /*
- * First, node prepping. Trash nodes that look cruddy (like ones with the
- * class name "comment", etc), and turn divs into P tags where they have been
- * used inappropriately (as in, where they contain no other block level elements.)
- */
-
- while ($node) {
- // Remove DOMComments nodes as we don't need them and mess up children counting
- if ($node->nodeType === XML_COMMENT_NODE) {
- $this->logger->debug(sprintf('[Get Nodes] Found comment node, removing... Node content was: \'%s\'', substr($node->nodeValue, 0, 128)));
- $node = NodeUtility::removeAndGetNext($node);
- continue;
- }
-
- $matchString = $node->getAttribute('class') . ' ' . $node->getAttribute('id');
-
- if (!$node->isProbablyVisible()) {
- $this->logger->debug(sprintf('[Get Nodes] Removing hidden node... Match string was: \'%s\'', $matchString));
- $node = NodeUtility::removeAndGetNext($node);
- continue;
- }
-
- // Check to see if this node is a byline, and remove it if it is.
- if ($this->checkByline($node, $matchString)) {
- $this->logger->debug(sprintf('[Get Nodes] Found byline, removing... Node content was: \'%s\'', substr($node->nodeValue, 0, 128)));
- $node = NodeUtility::removeAndGetNext($node);
- continue;
- }
-
- // Remove unlikely candidates
- if ($stripUnlikelyCandidates) {
- if (
- preg_match(NodeUtility::$regexps['unlikelyCandidates'], $matchString) &&
- !preg_match(NodeUtility::$regexps['okMaybeItsACandidate'], $matchString) &&
- $node->nodeName !== 'body' &&
- $node->nodeName !== 'a'
- ) {
- $this->logger->debug(sprintf('[Get Nodes] Removing unlikely candidate. Node content was: \'%s\'', substr($node->nodeValue, 0, 128)));
- $node = NodeUtility::removeAndGetNext($node);
- continue;
- }
- }
-
- // Remove DIV, SECTION, and HEADER nodes without any content(e.g. text, image, video, or iframe).
- if (($node->nodeName === 'div' || $node->nodeName === 'section' || $node->nodeName === 'header' ||
- $node->nodeName === 'h1' || $node->nodeName === 'h2' || $node->nodeName === 'h3' ||
- $node->nodeName === 'h4' || $node->nodeName === 'h5' || $node->nodeName === 'h6' ||
- $node->nodeName === 'p') &&
- $node->isElementWithoutContent()) {
- $this->logger->debug(sprintf('[Get Nodes] Removing empty \'%s\' node.', $node->nodeName));
- $node = NodeUtility::removeAndGetNext($node);
- continue;
- }
-
- if (in_array(strtolower($node->nodeName), $this->defaultTagsToScore)) {
- $this->logger->debug(sprintf('[Get Nodes] Adding node to score list, node content is: \'%s\'', substr($node->nodeValue, 0, 128)));
- $elementsToScore[] = $node;
- }
-
- // Turn all divs that don't have children block level elements into p's
- if ($node->nodeName === 'div') {
- // Put phrasing content into paragraphs.
- $p = null;
- $childNode = $node->firstChild;
- while ($childNode) {
- $nextSibling = $childNode->nextSibling;
- if ($childNode->isPhrasingContent()) {
- if ($p !== null) {
- $p->appendChild($childNode);
- } elseif (!$childNode->isWhitespace()) {
- $p = $this->dom->createElement('p');
- $node->replaceChild($p, $childNode);
- $p->appendChild($childNode);
- }
- } elseif ($p !== null) {
- while ($p->lastChild && $p->lastChild->isWhitespace()) {
- $p->removeChild($p->lastChild);
- }
- $p = null;
- }
- $childNode = $nextSibling;
- }
-
- /*
- * Sites like http://mobile.slate.com encloses each paragraph with a DIV
- * element. DIVs with only a P element inside and no text content can be
- * safely converted into plain P elements to avoid confusing the scoring
- * algorithm with DIVs with are, in practice, paragraphs.
- */
- if ($node->hasSingleTagInsideElement('p') && $node->getLinkDensity() < 0.25) {
- $this->logger->debug(sprintf('[Get Nodes] Found DIV with a single P node, removing DIV. Node content is: \'%s\'', substr($node->nodeValue, 0, 128)));
- $pNode = NodeUtility::filterTextNodes($node->childNodes)->item(0);
- $node->parentNode->replaceChild($pNode, $node);
- $node = $pNode;
- $elementsToScore[] = $node;
- } elseif (!$node->hasSingleChildBlockElement()) {
- $this->logger->debug(sprintf('[Get Nodes] Found DIV with a single child block element, converting to a P node. Node content is: \'%s\'', substr($node->nodeValue, 0, 128)));
- $node = NodeUtility::setNodeTag($node, 'p');
- $elementsToScore[] = $node;
- }
- }
-
- $node = NodeUtility::getNextNode($node);
- }
-
- return $elementsToScore;
- }
-
- /**
- * Checks if the node is a byline.
- *
- * @param DOMNode $node
- * @param string $matchString
- *
- * @return bool
- */
- private function checkByline($node, $matchString)
- {
- if (!$this->configuration->getArticleByLine()) {
- return false;
- }
-
- /*
- * Check if the byline is already set
- */
- if ($this->getAuthor()) {
- return false;
- }
-
- $rel = $node->getAttribute('rel');
-
- if ($rel === 'author' || preg_match(NodeUtility::$regexps['byline'], $matchString) && $this->isValidByline($node->getTextContent())) {
- $this->logger->info(sprintf('[Metadata] Found article author: \'%s\'', $node->getTextContent()));
- $this->setAuthor(trim($node->getTextContent()));
-
- return true;
- }
-
- return false;
- }
-
- /**
- * Checks the validity of a byLine. Based on string length.
- *
- * @param string $text
- *
- * @return bool
- */
- private function isValidByline($text)
- {
- if (gettype($text) == 'string') {
- $byline = trim($text);
-
- return (mb_strlen($byline) > 0) && (mb_strlen($byline) < 100);
- }
-
- return false;
- }
-
- /**
- * Removes all the scripts of the html.
- *
- * @param DOMDocument $dom
- */
- private function removeScripts(DOMDocument $dom)
- {
- foreach (['script', 'noscript'] as $tag) {
- $nodes = $dom->getElementsByTagName($tag);
- foreach (iterator_to_array($nodes) as $node) {
- NodeUtility::removeNode($node);
- }
- }
- }
-
- /**
- * Prepares the document for parsing.
- *
- * @param DOMDocument $dom
- */
- private function prepDocument(DOMDocument $dom)
- {
- $this->logger->info('[PrepDocument] Preparing document for parsing...');
-
- foreach ($dom->shiftingAwareGetElementsByTagName('br') as $br) {
- $next = $br->nextSibling;
-
- /*
- * Whether 2 or more <br> elements have been found and replaced with a
- * <p> block.
- */
- $replaced = false;
-
- /*
- * If we find a <br> chain, remove the <br>s until we hit another element
- * or non-whitespace. This leaves behind the first <br> in the chain
- * (which will be replaced with a <p> later).
- */
- while (($next = NodeUtility::nextElement($next)) && ($next->nodeName === 'br')) {
- $this->logger->debug('[PrepDocument] Removing chain of BR nodes...');
-
- $replaced = true;
- $brSibling = $next->nextSibling;
- $next->parentNode->removeChild($next);
- $next = $brSibling;
- }
-
- /*
- * If we removed a <br> chain, replace the remaining <br> with a <p>. Add
- * all sibling nodes as children of the <p> until we hit another <br>
- * chain.
- */
-
- if ($replaced) {
- $p = $dom->createElement('p');
- $br->parentNode->replaceChild($p, $br);
-
- $next = $p->nextSibling;
- while ($next) {
- // If we've hit another <br><br>, we're done adding children to this <p>.
- if ($next->nodeName === 'br') {
- $nextElem = NodeUtility::nextElement($next->nextSibling);
- if ($nextElem && $nextElem->nodeName === 'br') {
- break;
- }
- }
-
- if (!$next->isPhrasingContent()) {
- break;
- }
-
- $this->logger->debug('[PrepDocument] Replacing BR with a P node...');
-
- // Otherwise, make this node a child of the new <p>.
- $sibling = $next->nextSibling;
- $p->appendChild($next);
- $next = $sibling;
- }
-
- while ($p->lastChild && $p->lastChild->isWhitespace()) {
- $p->removeChild($p->lastChild);
- }
-
- if ($p->parentNode->tagName === 'p') {
- NodeUtility::setNodeTag($p->parentNode, 'div');
- }
- }
- }
-
- // Replace font tags with span
- $fonts = $dom->getElementsByTagName('font');
- $length = $fonts->length;
- for ($i = 0; $i < $length; $i++) {
- $this->logger->debug('[PrepDocument] Converting font tag into a span tag.');
- $font = $fonts->item($length - 1 - $i);
- NodeUtility::setNodeTag($font, 'span');
- }
- }
-
- /**
- * Assign scores to each node. Returns full article parsed or false on error.
- *
- * @param array $nodes
- *
- * @return DOMDocument|bool
- */
- private function rateNodes($nodes)
- {
- $this->logger->info('[Rating] Rating nodes...');
-
- $candidates = [];
-
- /** @var DOMElement $node */
- foreach ($nodes as $node) {
- if (is_null($node->parentNode)) {
- continue;
- }
-
- // Discard nodes with less than 25 characters, without blank space
- if (mb_strlen($node->getTextContent(true)) < 25) {
- continue;
- }
-
- $ancestors = $node->getNodeAncestors();
-
- // Exclude nodes with no ancestor
- if (count($ancestors) === 0) {
- continue;
- }
-
- // Start with a point for the paragraph itself as a base.
- $contentScore = 1;
-
- // Add points for any commas within this paragraph.
- $contentScore += count(explode(',', $node->getTextContent(true)));
-
- // For every 100 characters in this paragraph, add another point. Up to 3 points.
- $contentScore += min(floor(mb_strlen($node->getTextContent(true)) / 100), 3);
-
- $this->logger->debug(sprintf('[Rating] Node score %s, content: \'%s\'', $contentScore, substr($node->nodeValue, 0, 128)));
-
- /** @var $ancestor DOMElement */
- foreach ($ancestors as $level => $ancestor) {
- $this->logger->debug('[Rating] Found ancestor, initializing and adding it as a candidate...');
- if (!$ancestor->isInitialized()) {
- $ancestor->initializeNode($this->configuration->getWeightClasses());
- $candidates[] = $ancestor;
- }
-
- /*
- * Node score divider:
- * - parent: 1 (no division)
- * - grandparent: 2
- * - great grandparent+: ancestor level * 3
- */
-
- if ($level === 0) {
- $scoreDivider = 1;
- } elseif ($level === 1) {
- $scoreDivider = 2;
- } else {
- $scoreDivider = $level * 3;
- }
-
- $currentScore = $ancestor->contentScore;
- $ancestor->contentScore = $currentScore + ($contentScore / $scoreDivider);
-
- $this->logger->debug(sprintf('[Rating] Ancestor score %s, value: \'%s\'', $ancestor->contentScore, substr($ancestor->nodeValue, 0, 128)));
- }
- }
-
- /*
- * After we've calculated scores, loop through all of the possible
- * candidate nodes we found and find the one with the highest score.
- */
-
- $topCandidates = [];
- foreach ($candidates as $candidate) {
-
- /*
- * Scale the final candidates score based on link density. Good content
- * should have a relatively small link density (5% or less) and be mostly
- * unaffected by this operation.
- */
-
- $candidate->contentScore = $candidate->contentScore * (1 - $candidate->getLinkDensity());
-
- for ($i = 0; $i < $this->configuration->getMaxTopCandidates(); $i++) {
- $aTopCandidate = isset($topCandidates[$i]) ? $topCandidates[$i] : null;
-
- if (!$aTopCandidate || $candidate->contentScore > $aTopCandidate->contentScore) {
- array_splice($topCandidates, $i, 0, [$candidate]);
- if (count($topCandidates) > $this->configuration->getMaxTopCandidates()) {
- array_pop($topCandidates);
- }
- break;
- }
- }
- }
-
- $topCandidate = isset($topCandidates[0]) ? $topCandidates[0] : null;
- $parentOfTopCandidate = null;
-
- /*
- * If we still have no top candidate, just use the body as a last resort.
- * We also have to copy the body node so it is something we can modify.
- */
-
- if ($topCandidate === null || $topCandidate->nodeName === 'body') {
- $this->logger->info('[Rating] No top candidate found or top candidate is the body tag. Moving all child nodes to a new DIV node.');
-
- // Move all of the page's children into topCandidate
- $topCandidate = new DOMDocument('1.0', 'utf-8');
- $topCandidate->encoding = 'UTF-8';
- $topCandidate->appendChild($topCandidate->createElement('div', ''));
- $kids = $this->dom->getElementsByTagName('body')->item(0)->childNodes;
-
- // Cannot be foreached, don't ask me why.
- for ($i = 0; $i < $kids->length; $i++) {
- $import = $topCandidate->importNode($kids->item($i), true);
- $topCandidate->firstChild->appendChild($import);
- }
-
- // Candidate must be created using firstChild to grab the DOMElement instead of the DOMDocument.
- $topCandidate = $topCandidate->firstChild;
- } elseif ($topCandidate) {
- $this->logger->info(sprintf('[Rating] Found top candidate, score: %s', $topCandidate->contentScore));
- // Find a better top candidate node if it contains (at least three) nodes which belong to `topCandidates` array
- // and whose scores are quite closed with current `topCandidate` node.
- $alternativeCandidateAncestors = [];
- for ($i = 1; $i < count($topCandidates); $i++) {
- // In some cases we may end up with a top candidate with zero content score. To avoid dividing by zero
- // we have to use max() and replace zero with a low value like 0.1
- if ($topCandidates[$i]->contentScore / max($topCandidate->contentScore, 0.1) >= 0.75) {
- array_push($alternativeCandidateAncestors, $topCandidates[$i]->getNodeAncestors(false));
- }
- }
-
- $MINIMUM_TOPCANDIDATES = 3;
- if (count($alternativeCandidateAncestors) >= $MINIMUM_TOPCANDIDATES) {
- $parentOfTopCandidate = $topCandidate->parentNode;
-
- // Check if we are actually dealing with a DOMNode and not a DOMDocument node or higher
- while ($parentOfTopCandidate->nodeName !== 'body' && $parentOfTopCandidate->nodeType === XML_ELEMENT_NODE) {
- $listsContainingThisAncestor = 0;
- for ($ancestorIndex = 0; $ancestorIndex < count($alternativeCandidateAncestors) && $listsContainingThisAncestor < $MINIMUM_TOPCANDIDATES; $ancestorIndex++) {
- $listsContainingThisAncestor += (int)in_array($parentOfTopCandidate, $alternativeCandidateAncestors[$ancestorIndex]);
- }
- if ($listsContainingThisAncestor >= $MINIMUM_TOPCANDIDATES) {
- $topCandidate = $parentOfTopCandidate;
- break;
- }
- $parentOfTopCandidate = $parentOfTopCandidate->parentNode;
- }
- }
-
- /*
- * Because of our bonus system, parents of candidates might have scores
- * themselves. They get half of the node. There won't be nodes with higher
- * scores than our topCandidate, but if we see the score going *up* in the first
- * few steps up the tree, that's a decent sign that there might be more content
- * lurking in other places that we want to unify in. The sibling stuff
- * below does some of that - but only if we've looked high enough up the DOM
- * tree.
- */
-
- $parentOfTopCandidate = $topCandidate->parentNode;
- $lastScore = $topCandidate->contentScore;
-
- // The scores shouldn't get too low.
- $scoreThreshold = $lastScore / 3;
-
- /* @var DOMElement $parentOfTopCandidate */
- while ($parentOfTopCandidate->nodeName !== 'body') {
- $parentScore = $parentOfTopCandidate->contentScore;
- if ($parentScore < $scoreThreshold) {
- break;
- }
-
- if ($parentScore > $lastScore) {
- // Alright! We found a better parent to use.
- $topCandidate = $parentOfTopCandidate;
- $this->logger->info('[Rating] Found a better top candidate.');
- break;
- }
- $lastScore = $parentOfTopCandidate->contentScore;
- $parentOfTopCandidate = $parentOfTopCandidate->parentNode;
- }
-
- // If the top candidate is the only child, use parent instead. This will help sibling
- // joining logic when adjacent content is actually located in parent's sibling node.
- $parentOfTopCandidate = $topCandidate->parentNode;
- while ($parentOfTopCandidate->nodeName !== 'body' && count(NodeUtility::filterTextNodes($parentOfTopCandidate->childNodes)) === 1) {
- $topCandidate = $parentOfTopCandidate;
- $parentOfTopCandidate = $topCandidate->parentNode;
- }
- }
-
- /*
- * Now that we have the top candidate, look through its siblings for content
- * that might also be related. Things like preambles, content split by ads
- * that we removed, etc.
- */
-
- $this->logger->info('[Rating] Creating final article content document...');
-
- $articleContent = new DOMDocument('1.0', 'utf-8');
- $articleContent->createElement('div');
-
- $siblingScoreThreshold = max(10, $topCandidate->contentScore * 0.2);
- // Keep potential top candidate's parent node to try to get text direction of it later.
- $parentOfTopCandidate = $topCandidate->parentNode;
- $siblings = $parentOfTopCandidate->childNodes;
-
- $hasContent = false;
-
- $this->logger->info('[Rating] Adding top candidate siblings...');
-
- /* @var DOMElement $sibling */
- // Can't foreach here because down there we might change the tag name and that causes the foreach to skip items
- for ($i = 0; $i < $siblings->length; $i++) {
- $sibling = $siblings[$i];
- $append = false;
-
- if ($sibling === $topCandidate) {
- $this->logger->debug('[Rating] Sibling is equal to the top candidate, adding to the final article...');
-
- $append = true;
- } else {
- $contentBonus = 0;
-
- // Give a bonus if sibling nodes and top candidates have the example same classname
- if ($sibling->getAttribute('class') === $topCandidate->getAttribute('class') && $topCandidate->getAttribute('class') !== '') {
- $contentBonus += $topCandidate->contentScore * 0.2;
- }
- if ($sibling->contentScore + $contentBonus >= $siblingScoreThreshold) {
- $append = true;
- } elseif ($sibling->nodeName === 'p') {
- $linkDensity = $sibling->getLinkDensity();
- $nodeContent = $sibling->getTextContent(true);
-
- if (mb_strlen($nodeContent) > 80 && $linkDensity < 0.25) {
- $append = true;
- } elseif ($nodeContent && mb_strlen($nodeContent) < 80 && $linkDensity === 0 && preg_match('/\.( |$)/', $nodeContent)) {
- $append = true;
- }
- }
- }
-
- if ($append) {
- $this->logger->debug(sprintf('[Rating] Appending sibling to final article, content is: \'%s\'', substr($sibling->nodeValue, 0, 128)));
-
- $hasContent = true;
-
- if (!in_array(strtolower($sibling->nodeName), $this->alterToDIVExceptions)) {
- /*
- * We have a node that isn't a common block level element, like a form or td tag.
- * Turn it into a div so it doesn't get filtered out later by accident.
- */
- $sibling = NodeUtility::setNodeTag($sibling, 'div');
- }
-
- $import = $articleContent->importNode($sibling, true);
- $articleContent->appendChild($import);
-
- /*
- * No node shifting needs to be check because when calling getChildren, an array is made with the
- * children of the parent node, instead of using the DOMElement childNodes function, which, when used
- * along with appendChild, would shift the nodes position and the current foreach will behave in
- * unpredictable ways.
- */
- }
- }
-
- $articleContent = $this->prepArticle($articleContent);
-
- if ($hasContent) {
- // Find out text direction from ancestors of final top candidate.
- $ancestors = array_merge([$parentOfTopCandidate, $topCandidate], $parentOfTopCandidate->getNodeAncestors());
- foreach ($ancestors as $ancestor) {
- $articleDir = $ancestor->getAttribute('dir');
- if ($articleDir) {
- $this->setDirection($articleDir);
- $this->logger->debug(sprintf('[Rating] Found article direction: %s', $articleDir));
- break;
- }
- }
-
- return $articleContent;
- } else {
- return false;
- }
- }
-
- /**
- * Cleans up the final article.
- *
- * @param DOMDocument $article
- *
- * @return DOMDocument
- */
- public function prepArticle(DOMDocument $article)
- {
- $this->logger->info('[PrepArticle] Preparing final article...');
-
- $this->_cleanStyles($article);
- $this->_clean($article, 'style');
-
- // Check for data tables before we continue, to avoid removing items in
- // those tables, which will often be isolated even though they're
- // visually linked to other content-ful elements (text, images, etc.).
- $this->_markDataTables($article);
-
- // Clean out junk from the article content
- $this->_cleanConditionally($article, 'form');
- $this->_cleanConditionally($article, 'fieldset');
- $this->_clean($article, 'object');
- $this->_clean($article, 'embed');
- $this->_clean($article, 'h1');
- $this->_clean($article, 'footer');
- $this->_clean($article, 'link');
- $this->_clean($article, 'aside');
-
- // Clean out elements have "share" in their id/class combinations from final top candidates,
- // which means we don't remove the top candidates even they have "share".
- foreach ($article->childNodes as $child) {
- $this->_cleanMatchedNodes($child, '/share/i');
- }
-
- /*
- * If there is only one h2 and its text content substantially equals article title,
- * they are probably using it as a header and not a subheader,
- * so remove it since we already extract the title separately.
- */
- $h2 = $article->getElementsByTagName('h2');
- if ($h2->length === 1) {
- $lengthSimilarRate = (mb_strlen($h2->item(0)->textContent) - mb_strlen($this->getTitle())) / max(mb_strlen($this->getTitle()), 1);
-
- if (abs($lengthSimilarRate) < 0.5) {
- if ($lengthSimilarRate > 0) {
- $titlesMatch = strpos($h2->item(0)->textContent, $this->getTitle()) !== false;
- } else {
- $titlesMatch = strpos($this->getTitle(), $h2->item(0)->textContent) !== false;
- }
- if ($titlesMatch) {
- $this->logger->info('[PrepArticle] Found title repeated in an H2 node, removing...');
- $this->_clean($article, 'h2');
- }
- }
- }
-
- $this->_clean($article, 'iframe');
- $this->_clean($article, 'input');
- $this->_clean($article, 'textarea');
- $this->_clean($article, 'select');
- $this->_clean($article, 'button');
- $this->_cleanHeaders($article);
-
- // Do these last as the previous stuff may have removed junk
- // that will affect these
- $this->_cleanConditionally($article, 'table');
- $this->_cleanConditionally($article, 'ul');
- $this->_cleanConditionally($article, 'div');
-
- $this->_cleanExtraParagraphs($article);
-
- foreach (iterator_to_array($article->getElementsByTagName('br')) as $br) {
- $next = $br->nextSibling;
- if ($next && $next->nodeName === 'p') {
- $this->logger->debug('[PrepArticle] Removing br node next to a p node.');
- $br->parentNode->removeChild($br);
- }
- }
-
- // Remove single-cell tables
- foreach ($article->shiftingAwareGetElementsByTagName('table') as $table) {
- /** @var DOMNode $table */
- $tbody = $table->hasSingleTagInsideElement('tbody') ? $table->getFirstElementChild() : $table;
- if ($tbody->hasSingleTagInsideElement('tr')) {
- $row = $tbody->getFirstElementChild();
- if ($row->hasSingleTagInsideElement('td')) {
- $cell = $row->getFirstElementChild();
- $cell = NodeUtility::setNodeTag($cell, (array_reduce(iterator_to_array($cell->childNodes), function ($carry, $node) {
- return $node->isPhrasingContent() && $carry;
- }, true)) ? 'p' : 'div');
- $table->parentNode->replaceChild($cell, $table);
- }
- }
- }
-
- return $article;
- }
-
- /**
- * Look for 'data' (as opposed to 'layout') tables, for which we use
- * similar checks as
- * https://dxr.mozilla.org/mozilla-central/rev/71224049c0b52ab190564d3ea0eab089a159a4cf/accessible/html/HTMLTableAccessible.cpp#920.
- *
- * @param DOMDocument $article
- *
- * @return void
- */
- public function _markDataTables(DOMDocument $article)
- {
- $tables = $article->getElementsByTagName('table');
- foreach ($tables as $table) {
- /** @var DOMElement $table */
- $role = $table->getAttribute('role');
- if ($role === 'presentation') {
- $table->setReadabilityDataTable(false);
- continue;
- }
- $datatable = $table->getAttribute('datatable');
- if ($datatable == '0') {
- $table->setReadabilityDataTable(false);
- continue;
- }
- $summary = $table->getAttribute('summary');
- if ($summary) {
- $table->setReadabilityDataTable(true);
- continue;
- }
-
- $caption = $table->getElementsByTagName('caption');
- if ($caption->length > 0 && $caption->item(0)->childNodes->length > 0) {
- $table->setReadabilityDataTable(true);
- continue;
- }
-
- // If the table has a descendant with any of these tags, consider a data table:
- foreach (['col', 'colgroup', 'tfoot', 'thead', 'th'] as $dataTableDescendants) {
- if ($table->getElementsByTagName($dataTableDescendants)->length > 0) {
- $table->setReadabilityDataTable(true);
- continue 2;
- }
- }
-
- // Nested tables indicate a layout table:
- if ($table->getElementsByTagName('table')->length > 0) {
- $table->setReadabilityDataTable(false);
- continue;
- }
-
- $sizeInfo = $table->getRowAndColumnCount();
- if ($sizeInfo['rows'] >= 10 || $sizeInfo['columns'] > 4) {
- $table->setReadabilityDataTable(true);
- continue;
- }
- // Now just go by size entirely:
- $table->setReadabilityDataTable($sizeInfo['rows'] * $sizeInfo['columns'] > 10);
- }
- }
-
- /**
- * Remove the style attribute on every e and under.
- *
- * @param $node DOMDocument|DOMNode
- **/
- public function _cleanStyles($node)
- {
- if (property_exists($node, 'tagName') && $node->tagName === 'svg') {
- return;
- }
-
- // Do not bother if there's no method to remove an attribute
- if (method_exists($node, 'removeAttribute')) {
- $presentational_attributes = ['align', 'background', 'bgcolor', 'border', 'cellpadding', 'cellspacing', 'frame', 'hspace', 'rules', 'style', 'valign', 'vspace'];
- // Remove `style` and deprecated presentational attributes
- foreach ($presentational_attributes as $presentational_attribute) {
- $node->removeAttribute($presentational_attribute);
- }
-
- $deprecated_size_attribute_elems = ['table', 'th', 'td', 'hr', 'pre'];
- if (property_exists($node, 'tagName') && in_array($node->tagName, $deprecated_size_attribute_elems)) {
- $node->removeAttribute('width');
- $node->removeAttribute('height');
- }
- }
-
- $cur = $node->firstChild;
- while ($cur !== null) {
- $this->_cleanStyles($cur);
- $cur = $cur->nextSibling;
- }
- }
-
- /**
- * Clean out elements whose id/class combinations match specific string.
- *
- * @param $node DOMElement Node to clean
- * @param $regex string Match id/class combination.
- *
- * @return void
- **/
- public function _cleanMatchedNodes($node, $regex)
- {
- $endOfSearchMarkerNode = NodeUtility::getNextNode($node, true);
- $next = NodeUtility::getNextNode($node);
- while ($next && $next !== $endOfSearchMarkerNode) {
- if (preg_match($regex, sprintf('%s %s', $next->getAttribute('class'), $next->getAttribute('id')))) {
- $this->logger->debug(sprintf('Removing matched node with regex: \'%s\', node class was: \'%s\', id: \'%s\'', $regex, $next->getAttribute('class'), $next->getAttribute('id')));
- $next = NodeUtility::removeAndGetNext($next);
- } else {
- $next = NodeUtility::getNextNode($next);
- }
- }
- }
-
- /**
- * @param DOMDocument $article
- *
- * @return void
- */
- public function _cleanExtraParagraphs(DOMDocument $article)
- {
- $paragraphs = $article->getElementsByTagName('p');
- $length = $paragraphs->length;
-
- for ($i = 0; $i < $length; $i++) {
- $paragraph = $paragraphs->item($length - 1 - $i);
-
- $imgCount = $paragraph->getElementsByTagName('img')->length;
- $embedCount = $paragraph->getElementsByTagName('embed')->length;
- $objectCount = $paragraph->getElementsByTagName('object')->length;
- // At this point, nasty iframes have been removed, only remain embedded video ones.
- $iframeCount = $paragraph->getElementsByTagName('iframe')->length;
- $totalCount = $imgCount + $embedCount + $objectCount + $iframeCount;
-
- if ($totalCount === 0 && !preg_replace(NodeUtility::$regexps['onlyWhitespace'], '', $paragraph->textContent)) {
- $this->logger->debug(sprintf('[PrepArticle] Removing extra paragraph. Text content was: \'%s\'', substr($paragraph->textContent, 0, 128)));
- $paragraph->parentNode->removeChild($paragraph);
- }
- }
- }
-
- /**
- * @param DOMDocument $article
- * @param string $tag Tag to clean conditionally
- *
- * @return void
- */
- public function _cleanConditionally(DOMDocument $article, $tag)
- {
- if (!$this->configuration->getCleanConditionally()) {
- return;
- }
-
- $isList = in_array($tag, ['ul', 'ol']);
-
- /*
- * Gather counts for other typical elements embedded within.
- * Traverse backwards so we can remove nodes at the same time
- * without effecting the traversal.
- */
-
- $DOMNodeList = $article->getElementsByTagName($tag);
- $length = $DOMNodeList->length;
- for ($i = 0; $i < $length; $i++) {
- /** @var $node DOMElement */
- $node = $DOMNodeList->item($length - 1 - $i);
-
- // First check if we're in a data table, in which case don't remove us.
- if ($node->hasAncestorTag('table', -1, function ($node) {
- return $node->isReadabilityDataTable();
- })) {
- continue;
- }
-
- $weight = 0;
- if ($this->configuration->getWeightClasses()) {
- $weight = $node->getClassWeight();
- }
-
- if ($weight < 0) {
- $this->logger->debug(sprintf('[PrepArticle] Removing tag \'%s\' with 0 or less weight', $tag));
-
- NodeUtility::removeNode($node);
- continue;
- }
-
- if (substr_count($node->getTextContent(), ',') < 10) {
- /*
- * If there are not very many commas, and the number of
- * non-paragraph elements is more than paragraphs or other
- * ominous signs, remove the element.
- */
-
- $p = $node->getElementsByTagName('p')->length;
- $img = $node->getElementsByTagName('img')->length;
- $li = $node->getElementsByTagName('li')->length - 100;
- $input = $node->getElementsByTagName('input')->length;
-
- $embedCount = 0;
- $embeds = $node->getElementsByTagName('embed');
-
- foreach ($embeds as $embedNode) {
- if (preg_match(NodeUtility::$regexps['videos'], $embedNode->C14N())) {
- $embedCount++;
- }
- }
-
- $linkDensity = $node->getLinkDensity();
- $contentLength = mb_strlen($node->getTextContent(true));
-
- $haveToRemove =
- ($img > 1 && $p / $img < 0.5 && !$node->hasAncestorTag('figure')) ||
- (!$isList && $li > $p) ||
- ($input > floor($p / 3)) ||
- (!$isList && $contentLength < 25 && ($img === 0 || $img > 2) && !$node->hasAncestorTag('figure')) ||
- (!$isList && $weight < 25 && $linkDensity > 0.2) ||
- ($weight >= 25 && $linkDensity > 0.5) ||
- (($embedCount === 1 && $contentLength < 75) || $embedCount > 1);
-
- if ($haveToRemove) {
- $this->logger->debug(sprintf('[PrepArticle] Removing tag \'%s\'.', $tag));
-
- NodeUtility::removeNode($node);
- }
- }
- }
- }
-
- /**
- * Clean a node of all elements of type "tag".
- * (Unless it's a youtube/vimeo video. People love movies.).
- *
- * @param $article DOMDocument
- * @param $tag string tag to clean
- *
- * @return void
- **/
- public function _clean(DOMDocument $article, $tag)
- {
- $isEmbed = in_array($tag, ['object', 'embed', 'iframe']);
-
- $DOMNodeList = $article->getElementsByTagName($tag);
- $length = $DOMNodeList->length;
- for ($i = 0; $i < $length; $i++) {
- $item = $DOMNodeList->item($length - 1 - $i);
-
- // Allow youtube and vimeo videos through as people usually want to see those.
- if ($isEmbed) {
- $attributeValues = [];
- foreach ($item->attributes as $value) {
- $attributeValues[] = $value->nodeValue;
- }
- $attributeValues = implode('|', $attributeValues);
-
- // First, check the elements attributes to see if any of them contain youtube or vimeo
- if (preg_match(NodeUtility::$regexps['videos'], $attributeValues)) {
- continue;
- }
-
- // Then check the elements inside this element for the same.
- if (preg_match(NodeUtility::$regexps['videos'], $item->C14N())) {
- continue;
- }
- }
- $this->logger->debug(sprintf('[PrepArticle] Removing node \'%s\'.', $item->tagName));
-
- NodeUtility::removeNode($item);
- }
- }
-
- /**
- * Clean out spurious headers from an Element. Checks things like classnames and link density.
- *
- * @param DOMDocument $article
- *
- * @return void
- **/
- public function _cleanHeaders(DOMDocument $article)
- {
- for ($headerIndex = 1; $headerIndex < 3; $headerIndex++) {
- $headers = $article->getElementsByTagName('h' . $headerIndex);
- /** @var $header DOMElement */
- foreach ($headers as $header) {
- $weight = 0;
- if ($this->configuration->getWeightClasses()) {
- $weight = $header->getClassWeight();
- }
-
- if ($weight < 0) {
- $this->logger->debug(sprintf('[PrepArticle] Removing H node with 0 or less weight. Content was: \'%s\'', substr($header->nodeValue, 0, 128)));
-
- NodeUtility::removeNode($header);
- }
- }
- }
- }
-
- /**
- * Removes the class="" attribute from every element in the given
- * subtree.
- *
- * Readability.js has a special filter to avoid cleaning the classes that the algorithm adds. We don't add classes
- * here so no need to filter those.
- *
- * @param DOMDocument|DOMNode $node
- *
- * @return void
- **/
- public function _cleanClasses($node)
- {
- if ($node->getAttribute('class') !== '') {
- $node->removeAttribute('class');
- }
-
- for ($node = $node->getFirstElementChild(); $node !== null; $node = $node->nextSibling) {
- $this->_cleanClasses($node);
- }
- }
-
- /**
- * @param DOMDocument $article
- *
- * @return DOMDocument
- */
- public function postProcessContent(DOMDocument $article)
- {
- $this->logger->info('[PostProcess] PostProcessing content...');
-
- // Readability cannot open relative uris so we convert them to absolute uris.
- if ($this->configuration->getFixRelativeURLs()) {
- foreach (iterator_to_array($article->getElementsByTagName('a')) as $link) {
- /** @var DOMElement $link */
- $href = $link->getAttribute('href');
- if ($href) {
- // Replace links with javascript: URIs with text content, since
- // they won't work after scripts have been removed from the page.
- if (strpos($href, 'javascript:') === 0) {
- $this->logger->debug(sprintf('[PostProcess] Removing \'javascript:\' link. Content is: \'%s\'', substr($link->textContent, 0, 128)));
-
- $text = $article->createTextNode($link->textContent);
- $link->parentNode->replaceChild($text, $link);
- } else {
- $this->logger->debug(sprintf('[PostProcess] Converting link to absolute URI: \'%s\'', substr($href, 0, 128)));
-
- $link->setAttribute('href', $this->toAbsoluteURI($href));
- }
- }
- }
-
- foreach ($article->getElementsByTagName('img') as $img) {
- /** @var DOMElement $img */
- /*
- * Extract all possible sources of img url and select the first one on the list.
- */
- $url = [
- $img->getAttribute('src'),
- $img->getAttribute('data-src'),
- $img->getAttribute('data-original'),
- $img->getAttribute('data-orig'),
- $img->getAttribute('data-url')
- ];
-
- $src = array_filter($url);
- $src = reset($src);
- if ($src) {
- $this->logger->debug(sprintf('[PostProcess] Converting image URL to absolute URI: \'%s\'', substr($src, 0, 128)));
-
- $img->setAttribute('src', $this->toAbsoluteURI($src));
- }
- }
- }
-
- $this->_cleanClasses($article);
-
- return $article;
- }
-
- /**
- * @return null|string
- */
- public function __toString()
- {
- return sprintf('<h1>%s</h1>%s', $this->getTitle(), $this->getContent());
- }
-
- /**
- * @return string|null
- */
- public function getTitle()
- {
- return $this->title;
- }
-
- /**
- * @param string $title
- */
- protected function setTitle($title)
- {
- $this->title = $title;
- }
-
- /**
- * @return string|null
- */
- public function getContent()
- {
- return ($this->content instanceof DOMDocument) ? $this->content->C14N() : null;
- }
-
- /**
- * @return DOMDocument|null
- */
- public function getDOMDocument()
- {
- return $this->content;
- }
-
- /**
- * @param DOMDocument $content
- */
- protected function setContent(DOMDocument $content)
- {
- $this->content = $content;
- }
-
- /**
- * @return null|string
- */
- public function getExcerpt()
- {
- return $this->excerpt;
- }
-
- /**
- * @param null|string $excerpt
- */
- public function setExcerpt($excerpt)
- {
- $this->excerpt = $excerpt;
- }
-
- /**
- * @return string|null
- */
- public function getImage()
- {
- return $this->image;
- }
-
- /**
- * @param string $image
- */
- protected function setImage($image)
- {
- $this->image = $image;
- }
-
- /**
- * @return string|null
- */
- public function getAuthor()
- {
- return $this->author;
- }
-
- /**
- * @param string $author
- */
- protected function setAuthor($author)
- {
- $this->author = $author;
- }
-
- /**
- * @return string|null
- */
- public function getSiteName()
- {
- return $this->siteName;
- }
-
- /**
- * @param string $siteName
- */
- protected function setSiteName($siteName)
- {
- $this->siteName = $siteName;
- }
-
- /**
- * @return null|string
- */
- public function getDirection()
- {
- return $this->direction;
- }
-
- /**
- * @param null|string $direction
- */
- public function setDirection($direction)
- {
- $this->direction = $direction;
- }
-}
diff --git a/plugins/af_readability/vendor/composer/ClassLoader.php b/plugins/af_readability/vendor/composer/ClassLoader.php
index 247294d66..4d989a212 100644
--- a/plugins/af_readability/vendor/composer/ClassLoader.php
+++ b/plugins/af_readability/vendor/composer/ClassLoader.php
@@ -311,10 +311,8 @@ class ClassLoader
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
if (null === $this->vendorDir) {
- return;
- }
-
- if ($prepend) {
+ //no-op
+ } elseif ($prepend) {
self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
} else {
unset(self::$registeredLoaders[$this->vendorDir]);
diff --git a/plugins/af_readability/vendor/composer/InstalledVersions.php b/plugins/af_readability/vendor/composer/InstalledVersions.php
index 5fe76426f..eb57e7a7e 100644
--- a/plugins/af_readability/vendor/composer/InstalledVersions.php
+++ b/plugins/af_readability/vendor/composer/InstalledVersions.php
@@ -1,301 +1,301 @@
<?php
-
-
-
-
-
-
-
-
-
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <[email protected]>
+ * Jordi Boggiano <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
namespace Composer;
use Composer\Autoload\ClassLoader;
use Composer\Semver\VersionParser;
-
-
-
-
-
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * To require it's presence, you can require `composer-runtime-api ^2.0`
+ */
class InstalledVersions
{
-private static $installed = array (
- 'root' =>
+ private static $installed = array (
+ 'root' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'aliases' =>
+ 'aliases' =>
array (
),
- 'reference' => '1baf8c521785ab4dc8f474fdd772280737c7e254',
+ 'reference' => 'a73e3bec45c5523910c711cf882976b71781ac9e',
'name' => '__root__',
),
- 'versions' =>
+ 'versions' =>
array (
- '__root__' =>
+ '__root__' =>
array (
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'aliases' =>
+ 'aliases' =>
array (
),
- 'reference' => '1baf8c521785ab4dc8f474fdd772280737c7e254',
+ 'reference' => 'a73e3bec45c5523910c711cf882976b71781ac9e',
),
- 'andreskrey/readability.php' =>
+ 'fivefilters/readability.php' =>
array (
'pretty_version' => 'v2.1.0',
'version' => '2.1.0.0',
- 'aliases' =>
+ 'aliases' =>
array (
),
'reference' => '7617a912b6c527909168f5d41d263792f171c42a',
),
- 'psr/log' =>
+ 'psr/log' =>
array (
- 'pretty_version' => '1.1.3',
- 'version' => '1.1.3.0',
- 'aliases' =>
+ 'pretty_version' => '1.1.4',
+ 'version' => '1.1.4.0',
+ 'aliases' =>
array (
),
- 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
+ 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
),
),
);
-private static $canGetVendors;
-private static $installedByVendor = array();
-
-
-
-
-
-
-
-public static function getInstalledPackages()
-{
-$packages = array();
-foreach (self::getInstalled() as $installed) {
-$packages[] = array_keys($installed['versions']);
-}
-
-
-if (1 === \count($packages)) {
-return $packages[0];
-}
-
-return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
-}
-
-
-
-
-
-
-
-
-
-public static function isInstalled($packageName)
-{
-foreach (self::getInstalled() as $installed) {
-if (isset($installed['versions'][$packageName])) {
-return true;
-}
-}
-
-return false;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public static function satisfies(VersionParser $parser, $packageName, $constraint)
-{
-$constraint = $parser->parseConstraints($constraint);
-$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
-
-return $provided->matches($constraint);
-}
-
-
-
-
-
-
-
-
-
-
-public static function getVersionRanges($packageName)
-{
-foreach (self::getInstalled() as $installed) {
-if (!isset($installed['versions'][$packageName])) {
-continue;
-}
-
-$ranges = array();
-if (isset($installed['versions'][$packageName]['pretty_version'])) {
-$ranges[] = $installed['versions'][$packageName]['pretty_version'];
-}
-if (array_key_exists('aliases', $installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
-}
-if (array_key_exists('replaced', $installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
-}
-if (array_key_exists('provided', $installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
-}
-
-return implode(' || ', $ranges);
-}
-
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-
-
-
-
-public static function getVersion($packageName)
-{
-foreach (self::getInstalled() as $installed) {
-if (!isset($installed['versions'][$packageName])) {
-continue;
-}
-
-if (!isset($installed['versions'][$packageName]['version'])) {
-return null;
-}
-
-return $installed['versions'][$packageName]['version'];
-}
-
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-
-
-
-
-public static function getPrettyVersion($packageName)
-{
-foreach (self::getInstalled() as $installed) {
-if (!isset($installed['versions'][$packageName])) {
-continue;
-}
-
-if (!isset($installed['versions'][$packageName]['pretty_version'])) {
-return null;
-}
-
-return $installed['versions'][$packageName]['pretty_version'];
-}
-
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-
-
-
-
-public static function getReference($packageName)
-{
-foreach (self::getInstalled() as $installed) {
-if (!isset($installed['versions'][$packageName])) {
-continue;
-}
-
-if (!isset($installed['versions'][$packageName]['reference'])) {
-return null;
-}
-
-return $installed['versions'][$packageName]['reference'];
-}
-
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-
-
-
-
-public static function getRootPackage()
-{
-$installed = self::getInstalled();
-
-return $installed[0]['root'];
-}
-
-
-
-
-
-
-
-public static function getRawData()
-{
-return self::$installed;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public static function reload($data)
-{
-self::$installed = $data;
-self::$installedByVendor = array();
-}
-
-
-
-
-private static function getInstalled()
-{
-if (null === self::$canGetVendors) {
-self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
-}
-
-$installed = array();
-
-if (self::$canGetVendors) {
-foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
-if (isset(self::$installedByVendor[$vendorDir])) {
-$installed[] = self::$installedByVendor[$vendorDir];
-} elseif (is_file($vendorDir.'/composer/installed.php')) {
-$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
-}
-}
-}
-
-$installed[] = self::$installed;
-
-return $installed;
-}
+ private static $canGetVendors;
+ private static $installedByVendor = array();
+
+ /**
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
+ *
+ * @return string[]
+ * @psalm-return list<string>
+ */
+ public static function getInstalledPackages()
+ {
+ $packages = array();
+ foreach (self::getInstalled() as $installed) {
+ $packages[] = array_keys($installed['versions']);
+ }
+
+
+ if (1 === \count($packages)) {
+ return $packages[0];
+ }
+
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+ }
+
+ /**
+ * Checks whether the given package is installed
+ *
+ * This also returns true if the package name is provided or replaced by another package
+ *
+ * @param string $packageName
+ * @return bool
+ */
+ public static function isInstalled($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (isset($installed['versions'][$packageName])) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the given package satisfies a version constraint
+ *
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+ *
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+ *
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ *
+ * @return bool
+ */
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
+ {
+ $constraint = $parser->parseConstraints($constraint);
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+ return $provided->matches($constraint);
+ }
+
+ /**
+ * Returns a version constraint representing all the range(s) which are installed for a given package
+ *
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+ * whether a given version of a package is installed, and not just whether it exists
+ *
+ * @param string $packageName
+ * @return string Version constraint usable with composer/semver
+ */
+ public static function getVersionRanges($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ $ranges = array();
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+ }
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+ }
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+ }
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+ }
+
+ return implode(' || ', $ranges);
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getPrettyVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['pretty_version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+ */
+ public static function getReference($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['reference'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['reference'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}
+ */
+ public static function getRootPackage()
+ {
+ $installed = self::getInstalled();
+
+ return $installed[0]['root'];
+ }
+
+ /**
+ * Returns the raw installed.php data for custom implementations
+ *
+ * @return array[]
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}, versions: list<string, array{pretty_version: ?string, version: ?string, aliases: ?string[], reference: ?string, replaced: ?string[], provided: ?string[]}>}
+ */
+ public static function getRawData()
+ {
+ return self::$installed;
+ }
+
+ /**
+ * Lets you reload the static array from another file
+ *
+ * This is only useful for complex integrations in which a project needs to use
+ * this class but then also needs to execute another project's autoloader in process,
+ * and wants to ensure both projects have access to their version of installed.php.
+ *
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
+ * the data it needs from this class, then call reload() with
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+ * the project in which it runs can then also use this class safely, without
+ * interference between PHPUnit's dependencies and the project's dependencies.
+ *
+ * @param array[] $data A vendor/composer/installed.php data set
+ * @return void
+ *
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}, versions: list<string, array{pretty_version: ?string, version: ?string, aliases: ?string[], reference: ?string, replaced: ?string[], provided: ?string[]}>} $data
+ */
+ public static function reload($data)
+ {
+ self::$installed = $data;
+ self::$installedByVendor = array();
+ }
+
+ /**
+ * @return array[]
+ */
+ private static function getInstalled()
+ {
+ if (null === self::$canGetVendors) {
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+ }
+
+ $installed = array();
+
+ if (self::$canGetVendors) {
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+ if (isset(self::$installedByVendor[$vendorDir])) {
+ $installed[] = self::$installedByVendor[$vendorDir];
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
+ }
+ }
+ }
+
+ $installed[] = self::$installed;
+
+ return $installed;
+ }
}
diff --git a/plugins/af_readability/vendor/composer/LICENSE b/plugins/af_readability/vendor/composer/LICENSE
index f27399a04..62ecfd8d0 100644
--- a/plugins/af_readability/vendor/composer/LICENSE
+++ b/plugins/af_readability/vendor/composer/LICENSE
@@ -1,4 +1,3 @@
-
Copyright (c) Nils Adermann, Jordi Boggiano
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -18,4 +17,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-
diff --git a/plugins/af_readability/vendor/composer/autoload_psr4.php b/plugins/af_readability/vendor/composer/autoload_psr4.php
index ea111d957..3efe88013 100644
--- a/plugins/af_readability/vendor/composer/autoload_psr4.php
+++ b/plugins/af_readability/vendor/composer/autoload_psr4.php
@@ -6,6 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
- 'andreskrey\\Readability\\' => array($vendorDir . '/andreskrey/readability.php/src'),
+ 'andreskrey\\Readability\\' => array($vendorDir . '/fivefilters/readability.php/src'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
);
diff --git a/plugins/af_readability/vendor/composer/autoload_static.php b/plugins/af_readability/vendor/composer/autoload_static.php
index 3c6721045..0f4e7a4b9 100644
--- a/plugins/af_readability/vendor/composer/autoload_static.php
+++ b/plugins/af_readability/vendor/composer/autoload_static.php
@@ -20,7 +20,7 @@ class ComposerStaticInitb44cc79a0eaef9cd9c2f2ac697cbe9c0
public static $prefixDirsPsr4 = array (
'andreskrey\\Readability\\' =>
array (
- 0 => __DIR__ . '/..' . '/andreskrey/readability.php/src',
+ 0 => __DIR__ . '/..' . '/fivefilters/readability.php/src',
),
'Psr\\Log\\' =>
array (
diff --git a/plugins/af_readability/vendor/composer/installed.json b/plugins/af_readability/vendor/composer/installed.json
index 32d088d27..916a0b1d9 100644
--- a/plugins/af_readability/vendor/composer/installed.json
+++ b/plugins/af_readability/vendor/composer/installed.json
@@ -1,17 +1,17 @@
{
"packages": [
{
- "name": "andreskrey/readability.php",
+ "name": "fivefilters/readability.php",
"version": "v2.1.0",
"version_normalized": "2.1.0.0",
"source": {
"type": "git",
- "url": "https://github.com/andreskrey/readability.php.git",
+ "url": "https://github.com/fivefilters/readability.php.git",
"reference": "7617a912b6c527909168f5d41d263792f171c42a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/andreskrey/readability.php/zipball/7617a912b6c527909168f5d41d263792f171c42a",
+ "url": "https://api.github.com/repos/fivefilters/readability.php/zipball/7617a912b6c527909168f5d41d263792f171c42a",
"reference": "7617a912b6c527909168f5d41d263792f171c42a",
"shasum": ""
},
@@ -55,30 +55,29 @@
"readability"
],
"support": {
- "issues": "https://github.com/andreskrey/readability.php/issues",
- "source": "https://github.com/andreskrey/readability.php/tree/v2.1.0"
+ "source": "https://github.com/fivefilters/readability.php/tree/v2.1.0"
},
- "install-path": "../andreskrey/readability.php"
+ "install-path": "../fivefilters/readability.php"
},
{
"name": "psr/log",
- "version": "1.1.3",
- "version_normalized": "1.1.3.0",
+ "version": "1.1.4",
+ "version_normalized": "1.1.4.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
- "time": "2020-03-23T09:12:05+00:00",
+ "time": "2021-05-03T11:20:27+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -98,7 +97,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
@@ -109,7 +108,7 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/1.1.3"
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
},
"install-path": "../psr/log"
}
diff --git a/plugins/af_readability/vendor/composer/installed.php b/plugins/af_readability/vendor/composer/installed.php
index 4e25c896e..64d46147e 100644
--- a/plugins/af_readability/vendor/composer/installed.php
+++ b/plugins/af_readability/vendor/composer/installed.php
@@ -6,7 +6,7 @@
'aliases' =>
array (
),
- 'reference' => '1baf8c521785ab4dc8f474fdd772280737c7e254',
+ 'reference' => 'a73e3bec45c5523910c711cf882976b71781ac9e',
'name' => '__root__',
),
'versions' =>
@@ -18,9 +18,9 @@
'aliases' =>
array (
),
- 'reference' => '1baf8c521785ab4dc8f474fdd772280737c7e254',
+ 'reference' => 'a73e3bec45c5523910c711cf882976b71781ac9e',
),
- 'andreskrey/readability.php' =>
+ 'fivefilters/readability.php' =>
array (
'pretty_version' => 'v2.1.0',
'version' => '2.1.0.0',
@@ -31,12 +31,12 @@
),
'psr/log' =>
array (
- 'pretty_version' => '1.1.3',
- 'version' => '1.1.3.0',
+ 'pretty_version' => '1.1.4',
+ 'version' => '1.1.4.0',
'aliases' =>
array (
),
- 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
+ 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11',
),
),
);
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/.coveralls.yml b/plugins/af_readability/vendor/fivefilters/readability.php/.coveralls.yml
index 18e6b2054..18e6b2054 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/.coveralls.yml
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/.coveralls.yml
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/.gitattributes b/plugins/af_readability/vendor/fivefilters/readability.php/.gitattributes
index ea4dd8899..ea4dd8899 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/.gitattributes
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/.gitattributes
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/.gitignore b/plugins/af_readability/vendor/fivefilters/readability.php/.gitignore
index 5608600f8..5608600f8 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/.gitignore
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/.gitignore
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/.styleci.yml b/plugins/af_readability/vendor/fivefilters/readability.php/.styleci.yml
index f5ddf3ed9..f5ddf3ed9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/.styleci.yml
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/.styleci.yml
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/.travis.yml b/plugins/af_readability/vendor/fivefilters/readability.php/.travis.yml
index 5c3bdd198..5c3bdd198 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/.travis.yml
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/.travis.yml
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/AUTHORS.md b/plugins/af_readability/vendor/fivefilters/readability.php/AUTHORS.md
index cc420e3a8..cc420e3a8 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/AUTHORS.md
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/AUTHORS.md
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/CHANGELOG.md b/plugins/af_readability/vendor/fivefilters/readability.php/CHANGELOG.md
index 20aef9e3a..20aef9e3a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/CHANGELOG.md
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/CHANGELOG.md
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/CONTRIBUTING.md b/plugins/af_readability/vendor/fivefilters/readability.php/CONTRIBUTING.md
index 345f71565..345f71565 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/CONTRIBUTING.md
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/CONTRIBUTING.md
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/LICENSE b/plugins/af_readability/vendor/fivefilters/readability.php/LICENSE
index 261eeb9e9..261eeb9e9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/LICENSE
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/LICENSE
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/Makefile b/plugins/af_readability/vendor/fivefilters/readability.php/Makefile
index b3bf15040..b3bf15040 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/Makefile
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/Makefile
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/README.md b/plugins/af_readability/vendor/fivefilters/readability.php/README.md
index b6b1e2922..b6b1e2922 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/README.md
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/README.md
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/composer.json b/plugins/af_readability/vendor/fivefilters/readability.php/composer.json
index bf515682c..bf515682c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/composer.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/composer.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/docker-compose.yml b/plugins/af_readability/vendor/fivefilters/readability.php/docker-compose.yml
index e58b1b0bf..e58b1b0bf 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/docker-compose.yml
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/docker-compose.yml
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/docker/php/Dockerfile b/plugins/af_readability/vendor/fivefilters/readability.php/docker/php/Dockerfile
index 8971d1f1b..8971d1f1b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/docker/php/Dockerfile
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/docker/php/Dockerfile
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/phpunit.xml b/plugins/af_readability/vendor/fivefilters/readability.php/phpunit.xml
index 291085a71..291085a71 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/phpunit.xml
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/phpunit.xml
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Configuration.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Configuration.php
index 0632399c6..0632399c6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Configuration.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Configuration.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMAttr.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMAttr.php
index 91729f3b1..91729f3b1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMAttr.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMAttr.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMCdataSection.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMCdataSection.php
index 4535e4e99..4535e4e99 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMCdataSection.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMCdataSection.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMCharacterData.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMCharacterData.php
index e4db11a06..e4db11a06 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMCharacterData.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMCharacterData.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMComment.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMComment.php
index 13b004aff..13b004aff 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMComment.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMComment.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMDocument.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMDocument.php
index 81e9c7de6..81e9c7de6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMDocument.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMDocument.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMDocumentFragment.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMDocumentFragment.php
index bcb89468d..bcb89468d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMDocumentFragment.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMDocumentFragment.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMDocumentType.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMDocumentType.php
index 18705a7a7..18705a7a7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMDocumentType.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMDocumentType.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMElement.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMElement.php
index c07670bf7..c07670bf7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMElement.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMElement.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMEntity.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMEntity.php
index 8493e7319..8493e7319 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMEntity.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMEntity.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMEntityReference.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMEntityReference.php
index 32cecb75c..32cecb75c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMEntityReference.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMEntityReference.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMNode.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMNode.php
index 7c3c4f3a2..7c3c4f3a2 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMNode.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMNode.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMNodeList.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMNodeList.php
index 5149c0b98..5149c0b98 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMNodeList.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMNodeList.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMNotation.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMNotation.php
index 2e888ce00..2e888ce00 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMNotation.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMNotation.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMProcessingInstruction.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMProcessingInstruction.php
index 9dd4c5c70..9dd4c5c70 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMProcessingInstruction.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMProcessingInstruction.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMText.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMText.php
index 42c575b49..42c575b49 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/DOM/DOMText.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/DOM/DOMText.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/NodeTrait.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/NodeTrait.php
index 5198bbb5f..5198bbb5f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/NodeTrait.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/NodeTrait.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/NodeUtility.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/NodeUtility.php
index cbf78bae0..cbf78bae0 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/Nodes/NodeUtility.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Nodes/NodeUtility.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/src/ParseException.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/ParseException.php
index 646c04a37..646c04a37 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/src/ParseException.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/ParseException.php
diff --git a/plugins/af_readability/vendor/fivefilters/readability.php/src/Readability.php b/plugins/af_readability/vendor/fivefilters/readability.php/src/Readability.php
new file mode 100644
index 000000000..6bcbf78d7
--- /dev/null
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/src/Readability.php
@@ -0,0 +1,1804 @@
+<?php
+
+namespace andreskrey\Readability;
+
+use andreskrey\Readability\Nodes\DOM\DOMDocument;
+use andreskrey\Readability\Nodes\DOM\DOMElement;
+use andreskrey\Readability\Nodes\DOM\DOMNode;
+use andreskrey\Readability\Nodes\DOM\DOMText;
+use andreskrey\Readability\Nodes\NodeUtility;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Class Readability.
+ */
+class Readability
+{
+ /**
+ * Main DOMDocument where all the magic happens.
+ *
+ * @var DOMDocument
+ */
+ protected $dom;
+
+ /**
+ * Title of the article.
+ *
+ * @var string|null
+ */
+ protected $title = null;
+
+ /**
+ * Final DOMDocument with the fully parsed HTML.
+ *
+ * @var DOMDocument|null
+ */
+ protected $content = null;
+
+ /**
+ * Excerpt of the article.
+ *
+ * @var string|null
+ */
+ protected $excerpt = null;
+
+ /**
+ * Main image of the article.
+ *
+ * @var string|null
+ */
+ protected $image = null;
+
+ /**
+ * Author of the article. Extracted from the byline tags and other social media properties.
+ *
+ * @var string|null
+ */
+ protected $author = null;
+
+ /**
+ * Website name.
+ *
+ * @var string|null
+ */
+ protected $siteName = null;
+
+ /**
+ * Direction of the text.
+ *
+ * @var string|null
+ */
+ protected $direction = null;
+
+ /**
+ * Configuration object.
+ *
+ * @var Configuration
+ */
+ private $configuration;
+
+ /**
+ * Logger object.
+ *
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * Collection of attempted text extractions.
+ *
+ * @var array
+ */
+ private $attempts = [];
+
+ /**
+ * @var array
+ */
+ private $defaultTagsToScore = [
+ 'section',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'p',
+ 'td',
+ 'pre',
+ ];
+
+ /**
+ * @var array
+ */
+ private $alterToDIVExceptions = [
+ 'div',
+ 'article',
+ 'section',
+ 'p',
+ ];
+
+ /**
+ * Readability constructor.
+ *
+ * @param Configuration $configuration
+ */
+ public function __construct(Configuration $configuration)
+ {
+ $this->configuration = $configuration;
+ $this->logger = $this->configuration->getLogger();
+ }
+
+ /**
+ * Main parse function.
+ *
+ * @param $html
+ *
+ * @throws ParseException
+ *
+ * @return bool
+ */
+ public function parse($html)
+ {
+ $this->logger->info('*** Starting parse process...');
+
+ $this->dom = $this->loadHTML($html);
+
+ // Checking for minimum HTML to work with.
+ if (!($root = $this->dom->getElementsByTagName('body')->item(0)) || !$root->firstChild) {
+ $this->logger->emergency('No body tag present or body tag empty');
+
+ throw new ParseException('Invalid or incomplete HTML.');
+ }
+
+ $this->getMetadata();
+
+ $this->getMainImage();
+
+ while (true) {
+ $root = $root->firstChild;
+
+ $elementsToScore = $this->getNodes($root);
+ $this->logger->debug(sprintf('Elements to score: \'%s\'', count($elementsToScore)));
+
+ $result = $this->rateNodes($elementsToScore);
+
+ /*
+ * Now that we've gone through the full algorithm, check to see if
+ * we got any meaningful content. If we didn't, we may need to re-run
+ * grabArticle with different flags set. This gives us a higher likelihood of
+ * finding the content, and the sieve approach gives us a higher likelihood of
+ * finding the -right- content.
+ */
+
+ $length = mb_strlen(preg_replace(NodeUtility::$regexps['onlyWhitespace'], '', $result->textContent));
+
+ $this->logger->info(sprintf('[Parsing] Article parsed. Amount of words: %s. Current threshold is: %s', $length, $this->configuration->getCharThreshold()));
+
+ if ($result && $length < $this->configuration->getCharThreshold()) {
+ $this->dom = $this->loadHTML($html);
+ $root = $this->dom->getElementsByTagName('body')->item(0);
+
+ if ($this->configuration->getStripUnlikelyCandidates()) {
+ $this->logger->debug('[Parsing] Threshold not met, trying again setting StripUnlikelyCandidates as false');
+ $this->configuration->setStripUnlikelyCandidates(false);
+ $this->attempts[] = ['articleContent' => $result, 'textLength' => $length];
+ } elseif ($this->configuration->getWeightClasses()) {
+ $this->logger->debug('[Parsing] Threshold not met, trying again setting WeightClasses as false');
+ $this->configuration->setWeightClasses(false);
+ $this->attempts[] = ['articleContent' => $result, 'textLength' => $length];
+ } elseif ($this->configuration->getCleanConditionally()) {
+ $this->logger->debug('[Parsing] Threshold not met, trying again setting CleanConditionally as false');
+ $this->configuration->setCleanConditionally(false);
+ $this->attempts[] = ['articleContent' => $result, 'textLength' => $length];
+ } else {
+ $this->logger->debug('[Parsing] Threshold not met, searching across attempts for some content.');
+ $this->attempts[] = ['articleContent' => $result, 'textLength' => $length];
+
+ // No luck after removing flags, just return the longest text we found during the different loops
+ usort($this->attempts, function ($a, $b) {
+ return $a['textLength'] < $b['textLength'];
+ });
+
+ // But first check if we actually have something
+ if (!$this->attempts[0]['textLength']) {
+ $this->logger->emergency('[Parsing] Could not parse text, giving up :(');
+
+ throw new ParseException('Could not parse text.');
+ }
+
+ $this->logger->debug('[Parsing] Threshold not met, but found some content in previous attempts.');
+
+ $result = $this->attempts[0]['articleContent'];
+ break;
+ }
+ } else {
+ break;
+ }
+ }
+
+ $result = $this->postProcessContent($result);
+
+ // If we haven't found an excerpt in the article's metadata, use the article's
+ // first paragraph as the excerpt. This can be used for displaying a preview of
+ // the article's content.
+ if (!$this->getExcerpt()) {
+ $this->logger->debug('[Parsing] No excerpt text found on metadata, extracting first p node and using it as excerpt.');
+ $paragraphs = $result->getElementsByTagName('p');
+ if ($paragraphs->length > 0) {
+ $this->setExcerpt(trim($paragraphs->item(0)->textContent));
+ }
+ }
+
+ $this->setContent($result);
+
+ $this->logger->info('*** Parse successful :)');
+
+ return true;
+ }
+
+ /**
+ * Creates a DOM Document object and loads the provided HTML on it.
+ *
+ * Used for the first load of Readability and subsequent reloads (when disabling flags and rescanning the text)
+ * Previous versions of Readability used this method one time and cloned the DOM to keep a backup. This caused bugs
+ * because cloning the DOM object keeps a relation between the clone and the original one, doing changes in both
+ * objects and ruining the backup.
+ *
+ * @param string $html
+ *
+ * @return DOMDocument
+ */
+ private function loadHTML($html)
+ {
+ $this->logger->debug('[Loading] Loading HTML...');
+
+ // To avoid throwing a gazillion of errors on malformed HTMLs
+ libxml_use_internal_errors(true);
+
+ $dom = new DOMDocument('1.0', 'utf-8');
+
+ if (!$this->configuration->getSubstituteEntities()) {
+ // Keep the original HTML entities
+ $dom->substituteEntities = false;
+ }
+
+ if ($this->configuration->getNormalizeEntities()) {
+ $this->logger->debug('[Loading] Normalized entities via mb_convert_encoding.');
+ // Replace UTF-8 characters with the HTML Entity equivalent. Useful to fix html with mixed content
+ $html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');
+ }
+
+ if ($this->configuration->getSummonCthulhu()) {
+ $this->logger->debug('[Loading] Removed script tags via regex H̶͈̩̟̬̱͠E̡̨̬͔̳̜͢͠ ̡̧̯͉̩͙̩̹̞̠͎͈̹̥̠͞ͅͅC̶͉̞̘̖̝̗͓̬̯͍͉̤̬͢͢͞Ò̟̘͉͖͎͉̱̭̣̕M̴̯͈̻̱̱̣̗͈̠̙̲̥͘͞E̷̛͙̼̲͍͕̹͍͇̗̻̬̮̭̱̥͢Ş̛̟͔̙̜̤͇̮͍̙̝̀͘');
+ $html = preg_replace('/<script\b[^>]*>([\s\S]*?)<\/script>/', '', $html);
+ }
+
+ // Prepend the XML tag to avoid having issues with special characters. Should be harmless.
+ $dom->loadHTML('<?xml encoding="UTF-8">' . $html);
+ $dom->encoding = 'UTF-8';
+
+ $this->removeScripts($dom);
+
+ $this->prepDocument($dom);
+
+ $this->logger->debug('[Loading] Loaded HTML successfully.');
+
+ return $dom;
+ }
+
+ /**
+ * Tries to guess relevant info from metadata of the html. Sets the results in the Readability properties.
+ */
+ private function getMetadata()
+ {
+ $this->logger->debug('[Metadata] Retrieving metadata...');
+
+ $values = [];
+ // property is a space-separated list of values
+ $propertyPattern = '/\s*(dc|dcterm|og|twitter)\s*:\s*(author|creator|description|title|image|site_name)(?!:)\s*/i';
+
+ // name is a single value
+ $namePattern = '/^\s*(?:(dc|dcterm|og|twitter|weibo:(article|webpage))\s*[\.:]\s*)?(author|creator|description|title|image|site_name)(?!:)\s*$/i';
+
+ // Find description tags.
+ foreach ($this->dom->getElementsByTagName('meta') as $meta) {
+ /* @var DOMNode $meta */
+ $elementName = $meta->getAttribute('name');
+ $elementProperty = $meta->getAttribute('property');
+ $content = $meta->getAttribute('content');
+ $matches = null;
+ $name = null;
+
+ if ($elementProperty) {
+ if (preg_match($propertyPattern, $elementProperty, $matches)) {
+ for ($i = count($matches) - 1; $i >= 0; $i--) {
+ // Convert to lowercase, and remove any whitespace
+ // so we can match below.
+ $name = preg_replace('/\s/', '', mb_strtolower($matches[$i]));
+ // multiple authors
+ $values[$name] = trim($content);
+ }
+ }
+ }
+
+ if (!$matches && $elementName && preg_match($namePattern, $elementName)) {
+ $name = $elementName;
+ if ($content) {
+ // Convert to lowercase, remove any whitespace, and convert dots
+ // to colons so we can match below.
+ $name = preg_replace(['/\s/', '/\./'], ['', ':'], mb_strtolower($name));
+ $values[$name] = trim($content);
+ }
+ }
+ }
+
+ // get title
+ /*
+ * This is a very convoluted way of extracting the first matching key of the $values array
+ * against a set of options.
+ *
+ * This could be easily replaced with an ugly set of isset($values['key']) or a bunch of ??s.
+ * Will probably replace it with ??s after dropping support of PHP5.6
+ */
+ $key = current(array_intersect([
+ 'dc:title',
+ 'dcterm:title',
+ 'og:title',
+ 'weibo:article:title',
+ 'weibo:webpage:title',
+ 'title',
+ 'twitter:title'
+ ], array_keys($values)));
+
+ $this->setTitle(isset($values[$key]) ? trim($values[$key]) : null);
+
+ if (!$this->getTitle()) {
+ $this->setTitle($this->getArticleTitle());
+ }
+
+ // get author
+ $key = current(array_intersect([
+ 'dc:creator',
+ 'dcterm:creator',
+ 'author'
+ ], array_keys($values)));
+
+ $this->setAuthor(isset($values[$key]) ? $values[$key] : null);
+
+ // get description
+ $key = current(array_intersect([
+ 'dc:description',
+ 'dcterm:description',
+ 'og:description',
+ 'weibo:article:description',
+ 'weibo:webpage:description',
+ 'description',
+ 'twitter:description'
+ ], array_keys($values)));
+
+ $this->setExcerpt(isset($values[$key]) ? $values[$key] : null);
+
+ // get main image
+ $key = current(array_intersect([
+ 'image',
+ 'og:image',
+ 'twitter:image'
+ ], array_keys($values)));
+
+ $this->setImage(isset($values[$key]) ? $values[$key] : null);
+
+ $key = current(array_intersect([
+ 'og:site_name'
+ ], array_keys($values)));
+
+ $this->setSiteName(isset($values[$key]) ? $values[$key] : null);
+ }
+
+ /**
+ * Returns all the images of the parsed article.
+ *
+ * @return array
+ */
+ public function getImages()
+ {
+ $result = [];
+ if ($this->getImage()) {
+ $result[] = $this->getImage();
+ }
+
+ if (null == $this->getDOMDocument()) {
+ return $result;
+ }
+
+ foreach ($this->getDOMDocument()->getElementsByTagName('img') as $img) {
+ if ($src = $img->getAttribute('src')) {
+ $result[] = $src;
+ }
+ }
+
+ if ($this->configuration->getFixRelativeURLs()) {
+ foreach ($result as &$imgSrc) {
+ $imgSrc = $this->toAbsoluteURI($imgSrc);
+ }
+ }
+
+ $result = array_unique(array_filter($result));
+
+ return $result;
+ }
+
+ /**
+ * Tries to get the main article image. Will only update the metadata if the getMetadata function couldn't
+ * find a correct image.
+ */
+ public function getMainImage()
+ {
+ $imgUrl = false;
+
+ if ($this->getImage() !== null) {
+ $imgUrl = $this->getImage();
+ }
+
+ if (!$imgUrl) {
+ foreach ($this->dom->getElementsByTagName('link') as $link) {
+ /** @var \DOMElement $link */
+ /*
+ * Check for the rel attribute, then check if the rel attribute is either img_src or image_src, and
+ * finally check for the existence of the href attribute, which should hold the image url.
+ */
+ if ($link->hasAttribute('rel') && ($link->getAttribute('rel') === 'img_src' || $link->getAttribute('rel') === 'image_src') && $link->hasAttribute('href')) {
+ $imgUrl = $link->getAttribute('href');
+ break;
+ }
+ }
+ }
+
+ if (!empty($imgUrl) && $this->configuration->getFixRelativeURLs()) {
+ $this->setImage($this->toAbsoluteURI($imgUrl));
+ }
+ }
+
+ /**
+ * Returns the title of the html. Prioritizes the title from the metadata against the title tag.
+ *
+ * @return string|null
+ */
+ private function getArticleTitle()
+ {
+ $originalTitle = null;
+
+ if ($this->getTitle()) {
+ $originalTitle = $this->getTitle();
+ } else {
+ $this->logger->debug('[Metadata] Could not find title in metadata, searching for the title tag...');
+ $titleTag = $this->dom->getElementsByTagName('title');
+ if ($titleTag->length > 0) {
+ $this->logger->info(sprintf('[Metadata] Using title tag as article title: \'%s\'', $titleTag->item(0)->nodeValue));
+ $originalTitle = $titleTag->item(0)->nodeValue;
+ }
+ }
+
+ if ($originalTitle === null) {
+ return null;
+ }
+
+ $curTitle = $originalTitle = trim($originalTitle);
+ $titleHadHierarchicalSeparators = false;
+
+ /*
+ * If there's a separator in the title, first remove the final part
+ *
+ * Sanity warning: if you eval this match in PHPStorm's "Evaluate expression" box, it will return false
+ * I can assure you it works properly if you let the code run.
+ */
+ if (preg_match('/ [\|\-\\\\\/>»] /i', $curTitle)) {
+ $titleHadHierarchicalSeparators = (bool)preg_match('/ [\\\\\/>»] /', $curTitle);
+ $curTitle = preg_replace('/(.*)[\|\-\\\\\/>»] .*/i', '$1', $originalTitle);
+
+ $this->logger->info(sprintf('[Metadata] Found hierarchical separators in title, new title is: \'%s\'', $curTitle));
+
+ // If the resulting title is too short (3 words or fewer), remove
+ // the first part instead:
+ if (count(preg_split('/\s+/', $curTitle)) < 3) {
+ $curTitle = preg_replace('/[^\|\-\\\\\/>»]*[\|\-\\\\\/>»](.*)/i', '$1', $originalTitle);
+ $this->logger->info(sprintf('[Metadata] Title too short, using the first part of the title instead: \'%s\'', $curTitle));
+ }
+ } elseif (strpos($curTitle, ': ') !== false) {
+ // Check if we have an heading containing this exact string, so we
+ // could assume it's the full title.
+ $match = false;
+ for ($i = 1; $i <= 2; $i++) {
+ foreach ($this->dom->getElementsByTagName('h' . $i) as $hTag) {
+ // Trim texts to avoid having false negatives when the title is surrounded by spaces or tabs
+ if (trim($hTag->nodeValue) === trim($curTitle)) {
+ $match = true;
+ }
+ }
+ }
+
+ // If we don't, let's extract the title out of the original title string.
+ if (!$match) {
+ $curTitle = substr($originalTitle, strrpos($originalTitle, ':') + 1);
+
+ $this->logger->info(sprintf('[Metadata] Title has a colon in the middle, new title is: \'%s\'', $curTitle));
+
+ // If the title is now too short, try the first colon instead:
+ if (count(preg_split('/\s+/', $curTitle)) < 3) {
+ $curTitle = substr($originalTitle, strpos($originalTitle, ':') + 1);
+ $this->logger->info(sprintf('[Metadata] Title too short, using the first part of the title instead: \'%s\'', $curTitle));
+ } elseif (count(preg_split('/\s+/', substr($curTitle, 0, strpos($curTitle, ':')))) > 5) {
+ // But if we have too many words before the colon there's something weird
+ // with the titles and the H tags so let's just use the original title instead
+ $curTitle = $originalTitle;
+ }
+ }
+ } elseif (mb_strlen($curTitle) > 150 || mb_strlen($curTitle) < 15) {
+ $hOnes = $this->dom->getElementsByTagName('h1');
+
+ if ($hOnes->length === 1) {
+ $curTitle = $hOnes->item(0)->nodeValue;
+ $this->logger->info(sprintf('[Metadata] Using title from an H1 node: \'%s\'', $curTitle));
+ }
+ }
+
+ $curTitle = trim($curTitle);
+
+ /*
+ * If we now have 4 words or fewer as our title, and either no
+ * 'hierarchical' separators (\, /, > or ») were found in the original
+ * title or we decreased the number of words by more than 1 word, use
+ * the original title.
+ */
+ $curTitleWordCount = count(preg_split('/\s+/', $curTitle));
+ $originalTitleWordCount = count(preg_split('/\s+/', preg_replace('/[\|\-\\\\\/>»]+/', '', $originalTitle))) - 1;
+
+ if ($curTitleWordCount <= 4 &&
+ (!$titleHadHierarchicalSeparators || $curTitleWordCount !== $originalTitleWordCount)) {
+ $curTitle = $originalTitle;
+
+ $this->logger->info(sprintf('Using title from an H1 node: \'%s\'', $curTitle));
+ }
+
+ return $curTitle;
+ }
+
+ /**
+ * Convert URI to an absolute URI.
+ *
+ * @param $uri string URI to convert
+ *
+ * @return string
+ */
+ private function toAbsoluteURI($uri)
+ {
+ list($pathBase, $scheme, $prePath) = $this->getPathInfo($this->configuration->getOriginalURL());
+
+ // If this is already an absolute URI, return it.
+ if (preg_match('/^[a-zA-Z][a-zA-Z0-9\+\-\.]*:/', $uri)) {
+ return $uri;
+ }
+
+ // Scheme-rooted relative URI.
+ if (substr($uri, 0, 2) === '//') {
+ return $scheme . '://' . substr($uri, 2);
+ }
+
+ // Prepath-rooted relative URI.
+ if (substr($uri, 0, 1) === '/') {
+ return $prePath . $uri;
+ }
+
+ // Dotslash relative URI.
+ if (strpos($uri, './') === 0) {
+ return $pathBase . substr($uri, 2);
+ }
+ // Ignore hash URIs:
+ if (substr($uri, 0, 1) === '#') {
+ return $uri;
+ }
+
+ // Standard relative URI; add entire path. pathBase already includes a
+ // trailing "/".
+ return $pathBase . $uri;
+ }
+
+ /**
+ * Returns full path info of an URL.
+ *
+ * @param string $url
+ *
+ * @return array [$pathBase, $scheme, $prePath]
+ */
+ public function getPathInfo($url)
+ {
+ // Check for base URLs
+ if ($this->dom->baseURI !== null) {
+ if (substr($this->dom->baseURI, 0, 1) === '/') {
+ // URLs starting with '/' override completely the URL defined in the link
+ $pathBase = parse_url($url, PHP_URL_SCHEME) . '://' . parse_url($url, PHP_URL_HOST) . $this->dom->baseURI;
+ } else {
+ // Otherwise just prepend the base to the actual path
+ $pathBase = parse_url($url, PHP_URL_SCHEME) . '://' . parse_url($url, PHP_URL_HOST) . dirname(parse_url($url, PHP_URL_PATH)) . '/' . rtrim($this->dom->baseURI, '/') . '/';
+ }
+ } else {
+ $pathBase = parse_url($url, PHP_URL_SCHEME) . '://' . parse_url($url, PHP_URL_HOST) . dirname(parse_url($url, PHP_URL_PATH)) . '/';
+ }
+
+ $scheme = parse_url($pathBase, PHP_URL_SCHEME);
+ $prePath = $scheme . '://' . parse_url($pathBase, PHP_URL_HOST);
+
+ return [$pathBase, $scheme, $prePath];
+ }
+
+ /**
+ * Gets nodes from the root element.
+ *
+ * @param $node DOMNode|DOMText
+ *
+ * @return array
+ */
+ private function getNodes($node)
+ {
+ $this->logger->info('[Get Nodes] Retrieving nodes...');
+
+ $stripUnlikelyCandidates = $this->configuration->getStripUnlikelyCandidates();
+
+ $elementsToScore = [];
+
+ /*
+ * First, node prepping. Trash nodes that look cruddy (like ones with the
+ * class name "comment", etc), and turn divs into P tags where they have been
+ * used inappropriately (as in, where they contain no other block level elements.)
+ */
+
+ while ($node) {
+ // Remove DOMComments nodes as we don't need them and mess up children counting
+ if ($node->nodeType === XML_COMMENT_NODE) {
+ $this->logger->debug(sprintf('[Get Nodes] Found comment node, removing... Node content was: \'%s\'', substr($node->nodeValue, 0, 128)));
+ $node = NodeUtility::removeAndGetNext($node);
+ continue;
+ }
+
+ $matchString = $node->getAttribute('class') . ' ' . $node->getAttribute('id');
+
+ if (!$node->isProbablyVisible()) {
+ $this->logger->debug(sprintf('[Get Nodes] Removing hidden node... Match string was: \'%s\'', $matchString));
+ $node = NodeUtility::removeAndGetNext($node);
+ continue;
+ }
+
+ // Check to see if this node is a byline, and remove it if it is.
+ if ($this->checkByline($node, $matchString)) {
+ $this->logger->debug(sprintf('[Get Nodes] Found byline, removing... Node content was: \'%s\'', substr($node->nodeValue, 0, 128)));
+ $node = NodeUtility::removeAndGetNext($node);
+ continue;
+ }
+
+ // Remove unlikely candidates
+ if ($stripUnlikelyCandidates) {
+ if (
+ preg_match(NodeUtility::$regexps['unlikelyCandidates'], $matchString) &&
+ !preg_match(NodeUtility::$regexps['okMaybeItsACandidate'], $matchString) &&
+ $node->nodeName !== 'body' &&
+ $node->nodeName !== 'a'
+ ) {
+ $this->logger->debug(sprintf('[Get Nodes] Removing unlikely candidate. Node content was: \'%s\'', substr($node->nodeValue, 0, 128)));
+ $node = NodeUtility::removeAndGetNext($node);
+ continue;
+ }
+ }
+
+ // Remove DIV, SECTION, and HEADER nodes without any content(e.g. text, image, video, or iframe).
+ if (($node->nodeName === 'div' || $node->nodeName === 'section' || $node->nodeName === 'header' ||
+ $node->nodeName === 'h1' || $node->nodeName === 'h2' || $node->nodeName === 'h3' ||
+ $node->nodeName === 'h4' || $node->nodeName === 'h5' || $node->nodeName === 'h6' ||
+ $node->nodeName === 'p') &&
+ $node->isElementWithoutContent()) {
+ $this->logger->debug(sprintf('[Get Nodes] Removing empty \'%s\' node.', $node->nodeName));
+ $node = NodeUtility::removeAndGetNext($node);
+ continue;
+ }
+
+ if (in_array(strtolower($node->nodeName), $this->defaultTagsToScore)) {
+ $this->logger->debug(sprintf('[Get Nodes] Adding node to score list, node content is: \'%s\'', substr($node->nodeValue, 0, 128)));
+ $elementsToScore[] = $node;
+ }
+
+ // Turn all divs that don't have children block level elements into p's
+ if ($node->nodeName === 'div') {
+ // Put phrasing content into paragraphs.
+ $p = null;
+ $childNode = $node->firstChild;
+ while ($childNode) {
+ $nextSibling = $childNode->nextSibling;
+ if ($childNode->isPhrasingContent()) {
+ if ($p !== null) {
+ $p->appendChild($childNode);
+ } elseif (!$childNode->isWhitespace()) {
+ $p = $this->dom->createElement('p');
+ $node->replaceChild($p, $childNode);
+ $p->appendChild($childNode);
+ }
+ } elseif ($p !== null) {
+ while ($p->lastChild && $p->lastChild->isWhitespace()) {
+ $p->removeChild($p->lastChild);
+ }
+ $p = null;
+ }
+ $childNode = $nextSibling;
+ }
+
+ /*
+ * Sites like http://mobile.slate.com encloses each paragraph with a DIV
+ * element. DIVs with only a P element inside and no text content can be
+ * safely converted into plain P elements to avoid confusing the scoring
+ * algorithm with DIVs with are, in practice, paragraphs.
+ */
+ if ($node->hasSingleTagInsideElement('p') && $node->getLinkDensity() < 0.25) {
+ $this->logger->debug(sprintf('[Get Nodes] Found DIV with a single P node, removing DIV. Node content is: \'%s\'', substr($node->nodeValue, 0, 128)));
+ $pNode = NodeUtility::filterTextNodes($node->childNodes)->item(0);
+ $node->parentNode->replaceChild($pNode, $node);
+ $node = $pNode;
+ $elementsToScore[] = $node;
+ } elseif (!$node->hasSingleChildBlockElement()) {
+ $this->logger->debug(sprintf('[Get Nodes] Found DIV with a single child block element, converting to a P node. Node content is: \'%s\'', substr($node->nodeValue, 0, 128)));
+ $node = NodeUtility::setNodeTag($node, 'p');
+ $elementsToScore[] = $node;
+ }
+ }
+
+ $node = NodeUtility::getNextNode($node);
+ }
+
+ return $elementsToScore;
+ }
+
+ /**
+ * Checks if the node is a byline.
+ *
+ * @param DOMNode $node
+ * @param string $matchString
+ *
+ * @return bool
+ */
+ private function checkByline($node, $matchString)
+ {
+ if (!$this->configuration->getArticleByLine()) {
+ return false;
+ }
+
+ /*
+ * Check if the byline is already set
+ */
+ if ($this->getAuthor()) {
+ return false;
+ }
+
+ $rel = $node->getAttribute('rel');
+
+ if ($rel === 'author' || preg_match(NodeUtility::$regexps['byline'], $matchString) && $this->isValidByline($node->getTextContent())) {
+ $this->logger->info(sprintf('[Metadata] Found article author: \'%s\'', $node->getTextContent()));
+ $this->setAuthor(trim($node->getTextContent()));
+
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks the validity of a byLine. Based on string length.
+ *
+ * @param string $text
+ *
+ * @return bool
+ */
+ private function isValidByline($text)
+ {
+ if (gettype($text) == 'string') {
+ $byline = trim($text);
+
+ return (mb_strlen($byline) > 0) && (mb_strlen($byline) < 100);
+ }
+
+ return false;
+ }
+
+ /**
+ * Removes all the scripts of the html.
+ *
+ * @param DOMDocument $dom
+ */
+ private function removeScripts(DOMDocument $dom)
+ {
+ foreach (['script', 'noscript'] as $tag) {
+ $nodes = $dom->getElementsByTagName($tag);
+ foreach (iterator_to_array($nodes) as $node) {
+ NodeUtility::removeNode($node);
+ }
+ }
+ }
+
+ /**
+ * Prepares the document for parsing.
+ *
+ * @param DOMDocument $dom
+ */
+ private function prepDocument(DOMDocument $dom)
+ {
+ $this->logger->info('[PrepDocument] Preparing document for parsing...');
+
+ foreach ($dom->shiftingAwareGetElementsByTagName('br') as $br) {
+ $next = $br->nextSibling;
+
+ /*
+ * Whether 2 or more <br> elements have been found and replaced with a
+ * <p> block.
+ */
+ $replaced = false;
+
+ /*
+ * If we find a <br> chain, remove the <br>s until we hit another element
+ * or non-whitespace. This leaves behind the first <br> in the chain
+ * (which will be replaced with a <p> later).
+ */
+ while (($next = NodeUtility::nextElement($next)) && ($next->nodeName === 'br')) {
+ $this->logger->debug('[PrepDocument] Removing chain of BR nodes...');
+
+ $replaced = true;
+ $brSibling = $next->nextSibling;
+ $next->parentNode->removeChild($next);
+ $next = $brSibling;
+ }
+
+ /*
+ * If we removed a <br> chain, replace the remaining <br> with a <p>. Add
+ * all sibling nodes as children of the <p> until we hit another <br>
+ * chain.
+ */
+
+ if ($replaced) {
+ $p = $dom->createElement('p');
+ $br->parentNode->replaceChild($p, $br);
+
+ $next = $p->nextSibling;
+ while ($next) {
+ // If we've hit another <br><br>, we're done adding children to this <p>.
+ if ($next->nodeName === 'br') {
+ $nextElem = NodeUtility::nextElement($next->nextSibling);
+ if ($nextElem && $nextElem->nodeName === 'br') {
+ break;
+ }
+ }
+
+ if (!$next->isPhrasingContent()) {
+ break;
+ }
+
+ $this->logger->debug('[PrepDocument] Replacing BR with a P node...');
+
+ // Otherwise, make this node a child of the new <p>.
+ $sibling = $next->nextSibling;
+ $p->appendChild($next);
+ $next = $sibling;
+ }
+
+ while ($p->lastChild && $p->lastChild->isWhitespace()) {
+ $p->removeChild($p->lastChild);
+ }
+
+ if ($p->parentNode->tagName === 'p') {
+ NodeUtility::setNodeTag($p->parentNode, 'div');
+ }
+ }
+ }
+
+ // Replace font tags with span
+ $fonts = $dom->getElementsByTagName('font');
+ $length = $fonts->length;
+ for ($i = 0; $i < $length; $i++) {
+ $this->logger->debug('[PrepDocument] Converting font tag into a span tag.');
+ $font = $fonts->item($length - 1 - $i);
+ NodeUtility::setNodeTag($font, 'span');
+ }
+ }
+
+ /**
+ * Assign scores to each node. Returns full article parsed or false on error.
+ *
+ * @param array $nodes
+ *
+ * @return DOMDocument|bool
+ */
+ private function rateNodes($nodes)
+ {
+ $this->logger->info('[Rating] Rating nodes...');
+
+ $candidates = [];
+
+ /** @var DOMElement $node */
+ foreach ($nodes as $node) {
+ if (is_null($node->parentNode)) {
+ continue;
+ }
+
+ // Discard nodes with less than 25 characters, without blank space
+ if (mb_strlen($node->getTextContent(true)) < 25) {
+ continue;
+ }
+
+ $ancestors = $node->getNodeAncestors();
+
+ // Exclude nodes with no ancestor
+ if (count($ancestors) === 0) {
+ continue;
+ }
+
+ // Start with a point for the paragraph itself as a base.
+ $contentScore = 1;
+
+ // Add points for any commas within this paragraph.
+ $contentScore += count(explode(',', $node->getTextContent(true)));
+
+ // For every 100 characters in this paragraph, add another point. Up to 3 points.
+ $contentScore += min(floor(mb_strlen($node->getTextContent(true)) / 100), 3);
+
+ $this->logger->debug(sprintf('[Rating] Node score %s, content: \'%s\'', $contentScore, substr($node->nodeValue, 0, 128)));
+
+ /** @var $ancestor DOMElement */
+ foreach ($ancestors as $level => $ancestor) {
+ $this->logger->debug('[Rating] Found ancestor, initializing and adding it as a candidate...');
+ if (!$ancestor->isInitialized()) {
+ $ancestor->initializeNode($this->configuration->getWeightClasses());
+ $candidates[] = $ancestor;
+ }
+
+ /*
+ * Node score divider:
+ * - parent: 1 (no division)
+ * - grandparent: 2
+ * - great grandparent+: ancestor level * 3
+ */
+
+ if ($level === 0) {
+ $scoreDivider = 1;
+ } elseif ($level === 1) {
+ $scoreDivider = 2;
+ } else {
+ $scoreDivider = $level * 3;
+ }
+
+ $currentScore = $ancestor->contentScore;
+ $ancestor->contentScore = $currentScore + ($contentScore / $scoreDivider);
+
+ $this->logger->debug(sprintf('[Rating] Ancestor score %s, value: \'%s\'', $ancestor->contentScore, substr($ancestor->nodeValue, 0, 128)));
+ }
+ }
+
+ /*
+ * After we've calculated scores, loop through all of the possible
+ * candidate nodes we found and find the one with the highest score.
+ */
+
+ $topCandidates = [];
+ foreach ($candidates as $candidate) {
+
+ /*
+ * Scale the final candidates score based on link density. Good content
+ * should have a relatively small link density (5% or less) and be mostly
+ * unaffected by this operation.
+ */
+
+ $candidate->contentScore = $candidate->contentScore * (1 - $candidate->getLinkDensity());
+
+ for ($i = 0; $i < $this->configuration->getMaxTopCandidates(); $i++) {
+ $aTopCandidate = isset($topCandidates[$i]) ? $topCandidates[$i] : null;
+
+ if (!$aTopCandidate || $candidate->contentScore > $aTopCandidate->contentScore) {
+ array_splice($topCandidates, $i, 0, [$candidate]);
+ if (count($topCandidates) > $this->configuration->getMaxTopCandidates()) {
+ array_pop($topCandidates);
+ }
+ break;
+ }
+ }
+ }
+
+ $topCandidate = isset($topCandidates[0]) ? $topCandidates[0] : null;
+ $parentOfTopCandidate = null;
+
+ /*
+ * If we still have no top candidate, just use the body as a last resort.
+ * We also have to copy the body node so it is something we can modify.
+ */
+
+ if ($topCandidate === null || $topCandidate->nodeName === 'body') {
+ $this->logger->info('[Rating] No top candidate found or top candidate is the body tag. Moving all child nodes to a new DIV node.');
+
+ // Move all of the page's children into topCandidate
+ $topCandidate = new DOMDocument('1.0', 'utf-8');
+ $topCandidate->encoding = 'UTF-8';
+ $topCandidate->appendChild($topCandidate->createElement('div', ''));
+ $kids = $this->dom->getElementsByTagName('body')->item(0)->childNodes;
+
+ // Cannot be foreached, don't ask me why.
+ for ($i = 0; $i < $kids->length; $i++) {
+ $import = $topCandidate->importNode($kids->item($i), true);
+ $topCandidate->firstChild->appendChild($import);
+ }
+
+ // Candidate must be created using firstChild to grab the DOMElement instead of the DOMDocument.
+ $topCandidate = $topCandidate->firstChild;
+ } elseif ($topCandidate) {
+ $this->logger->info(sprintf('[Rating] Found top candidate, score: %s', $topCandidate->contentScore));
+ // Find a better top candidate node if it contains (at least three) nodes which belong to `topCandidates` array
+ // and whose scores are quite closed with current `topCandidate` node.
+ $alternativeCandidateAncestors = [];
+ for ($i = 1; $i < count($topCandidates); $i++) {
+ // In some cases we may end up with a top candidate with zero content score. To avoid dividing by zero
+ // we have to use max() and replace zero with a low value like 0.1
+ if ($topCandidates[$i]->contentScore / max($topCandidate->contentScore, 0.1) >= 0.75) {
+ array_push($alternativeCandidateAncestors, $topCandidates[$i]->getNodeAncestors(false));
+ }
+ }
+
+ $MINIMUM_TOPCANDIDATES = 3;
+ if (count($alternativeCandidateAncestors) >= $MINIMUM_TOPCANDIDATES) {
+ $parentOfTopCandidate = $topCandidate->parentNode;
+
+ // Check if we are actually dealing with a DOMNode and not a DOMDocument node or higher
+ while ($parentOfTopCandidate->nodeName !== 'body' && $parentOfTopCandidate->nodeType === XML_ELEMENT_NODE) {
+ $listsContainingThisAncestor = 0;
+ for ($ancestorIndex = 0; $ancestorIndex < count($alternativeCandidateAncestors) && $listsContainingThisAncestor < $MINIMUM_TOPCANDIDATES; $ancestorIndex++) {
+ $listsContainingThisAncestor += (int)in_array($parentOfTopCandidate, $alternativeCandidateAncestors[$ancestorIndex]);
+ }
+ if ($listsContainingThisAncestor >= $MINIMUM_TOPCANDIDATES) {
+ $topCandidate = $parentOfTopCandidate;
+ break;
+ }
+ $parentOfTopCandidate = $parentOfTopCandidate->parentNode;
+ }
+ }
+
+ /*
+ * Because of our bonus system, parents of candidates might have scores
+ * themselves. They get half of the node. There won't be nodes with higher
+ * scores than our topCandidate, but if we see the score going *up* in the first
+ * few steps up the tree, that's a decent sign that there might be more content
+ * lurking in other places that we want to unify in. The sibling stuff
+ * below does some of that - but only if we've looked high enough up the DOM
+ * tree.
+ */
+
+ $parentOfTopCandidate = $topCandidate->parentNode;
+ $lastScore = $topCandidate->contentScore;
+
+ // The scores shouldn't get too low.
+ $scoreThreshold = $lastScore / 3;
+
+ /* @var DOMElement $parentOfTopCandidate */
+ while ($parentOfTopCandidate->nodeName !== 'body') {
+ $parentScore = $parentOfTopCandidate->contentScore;
+ if ($parentScore < $scoreThreshold) {
+ break;
+ }
+
+ if ($parentScore > $lastScore) {
+ // Alright! We found a better parent to use.
+ $topCandidate = $parentOfTopCandidate;
+ $this->logger->info('[Rating] Found a better top candidate.');
+ break;
+ }
+ $lastScore = $parentOfTopCandidate->contentScore;
+ $parentOfTopCandidate = $parentOfTopCandidate->parentNode;
+ }
+
+ // If the top candidate is the only child, use parent instead. This will help sibling
+ // joining logic when adjacent content is actually located in parent's sibling node.
+ $parentOfTopCandidate = $topCandidate->parentNode;
+ while ($parentOfTopCandidate->nodeName !== 'body' && count(NodeUtility::filterTextNodes($parentOfTopCandidate->childNodes)) === 1) {
+ $topCandidate = $parentOfTopCandidate;
+ $parentOfTopCandidate = $topCandidate->parentNode;
+ }
+ }
+
+ /*
+ * Now that we have the top candidate, look through its siblings for content
+ * that might also be related. Things like preambles, content split by ads
+ * that we removed, etc.
+ */
+
+ $this->logger->info('[Rating] Creating final article content document...');
+
+ $articleContent = new DOMDocument('1.0', 'utf-8');
+ $articleContent->createElement('div');
+
+ $siblingScoreThreshold = max(10, $topCandidate->contentScore * 0.2);
+ // Keep potential top candidate's parent node to try to get text direction of it later.
+ $parentOfTopCandidate = $topCandidate->parentNode;
+ $siblings = $parentOfTopCandidate->childNodes;
+
+ $hasContent = false;
+
+ $this->logger->info('[Rating] Adding top candidate siblings...');
+
+ /* @var DOMElement $sibling */
+ // Can't foreach here because down there we might change the tag name and that causes the foreach to skip items
+ for ($i = 0; $i < $siblings->length; $i++) {
+ $sibling = $siblings[$i];
+ $append = false;
+
+ if ($sibling === $topCandidate) {
+ $this->logger->debug('[Rating] Sibling is equal to the top candidate, adding to the final article...');
+
+ $append = true;
+ } else {
+ $contentBonus = 0;
+
+ // Give a bonus if sibling nodes and top candidates have the example same classname
+ if ($sibling->getAttribute('class') === $topCandidate->getAttribute('class') && $topCandidate->getAttribute('class') !== '') {
+ $contentBonus += $topCandidate->contentScore * 0.2;
+ }
+ if ($sibling->contentScore + $contentBonus >= $siblingScoreThreshold) {
+ $append = true;
+ } elseif ($sibling->nodeName === 'p') {
+ $linkDensity = $sibling->getLinkDensity();
+ $nodeContent = $sibling->getTextContent(true);
+
+ if (mb_strlen($nodeContent) > 80 && $linkDensity < 0.25) {
+ $append = true;
+ } elseif ($nodeContent && mb_strlen($nodeContent) < 80 && $linkDensity === 0 && preg_match('/\.( |$)/', $nodeContent)) {
+ $append = true;
+ }
+ }
+ }
+
+ if ($append) {
+ $this->logger->debug(sprintf('[Rating] Appending sibling to final article, content is: \'%s\'', substr($sibling->nodeValue, 0, 128)));
+
+ $hasContent = true;
+
+ if (!in_array(strtolower($sibling->nodeName), $this->alterToDIVExceptions)) {
+ /*
+ * We have a node that isn't a common block level element, like a form or td tag.
+ * Turn it into a div so it doesn't get filtered out later by accident.
+ */
+ $sibling = NodeUtility::setNodeTag($sibling, 'div');
+ }
+
+ $import = $articleContent->importNode($sibling, true);
+ $articleContent->appendChild($import);
+
+ /*
+ * No node shifting needs to be check because when calling getChildren, an array is made with the
+ * children of the parent node, instead of using the DOMElement childNodes function, which, when used
+ * along with appendChild, would shift the nodes position and the current foreach will behave in
+ * unpredictable ways.
+ */
+ }
+ }
+
+ $articleContent = $this->prepArticle($articleContent);
+
+ if ($hasContent) {
+ // Find out text direction from ancestors of final top candidate.
+ $ancestors = array_merge([$parentOfTopCandidate, $topCandidate], $parentOfTopCandidate->getNodeAncestors());
+ foreach ($ancestors as $ancestor) {
+ $articleDir = $ancestor->getAttribute('dir');
+ if ($articleDir) {
+ $this->setDirection($articleDir);
+ $this->logger->debug(sprintf('[Rating] Found article direction: %s', $articleDir));
+ break;
+ }
+ }
+
+ return $articleContent;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Cleans up the final article.
+ *
+ * @param DOMDocument $article
+ *
+ * @return DOMDocument
+ */
+ public function prepArticle(DOMDocument $article)
+ {
+ $this->logger->info('[PrepArticle] Preparing final article...');
+
+ $this->_cleanStyles($article);
+ $this->_clean($article, 'style');
+
+ // Check for data tables before we continue, to avoid removing items in
+ // those tables, which will often be isolated even though they're
+ // visually linked to other content-ful elements (text, images, etc.).
+ $this->_markDataTables($article);
+
+ // Clean out junk from the article content
+ $this->_cleanConditionally($article, 'form');
+ $this->_cleanConditionally($article, 'fieldset');
+ $this->_clean($article, 'object');
+ $this->_clean($article, 'embed');
+ $this->_clean($article, 'h1');
+ $this->_clean($article, 'footer');
+ $this->_clean($article, 'link');
+ $this->_clean($article, 'aside');
+
+ // Clean out elements have "share" in their id/class combinations from final top candidates,
+ // which means we don't remove the top candidates even they have "share".
+ foreach ($article->childNodes as $child) {
+ $this->_cleanMatchedNodes($child, '/share/i');
+ }
+
+ /*
+ * If there is only one h2 and its text content substantially equals article title,
+ * they are probably using it as a header and not a subheader,
+ * so remove it since we already extract the title separately.
+ */
+ $h2 = $article->getElementsByTagName('h2');
+ if ($h2->length === 1) {
+ $lengthSimilarRate = (mb_strlen($h2->item(0)->textContent) - mb_strlen($this->getTitle())) / max(mb_strlen($this->getTitle()), 1);
+
+ if (abs($lengthSimilarRate) < 0.5) {
+ if ($lengthSimilarRate > 0) {
+ $titlesMatch = strpos($h2->item(0)->textContent, $this->getTitle()) !== false;
+ } else {
+ $titlesMatch = strpos($this->getTitle(), $h2->item(0)->textContent) !== false;
+ }
+ if ($titlesMatch) {
+ $this->logger->info('[PrepArticle] Found title repeated in an H2 node, removing...');
+ $this->_clean($article, 'h2');
+ }
+ }
+ }
+
+ $this->_clean($article, 'iframe');
+ $this->_clean($article, 'input');
+ $this->_clean($article, 'textarea');
+ $this->_clean($article, 'select');
+ $this->_clean($article, 'button');
+ $this->_cleanHeaders($article);
+
+ // Do these last as the previous stuff may have removed junk
+ // that will affect these
+ $this->_cleanConditionally($article, 'table');
+ $this->_cleanConditionally($article, 'ul');
+ $this->_cleanConditionally($article, 'div');
+
+ $this->_cleanExtraParagraphs($article);
+
+ foreach (iterator_to_array($article->getElementsByTagName('br')) as $br) {
+ $next = $br->nextSibling;
+ if ($next && $next->nodeName === 'p') {
+ $this->logger->debug('[PrepArticle] Removing br node next to a p node.');
+ $br->parentNode->removeChild($br);
+ }
+ }
+
+ // Remove single-cell tables
+ foreach ($article->shiftingAwareGetElementsByTagName('table') as $table) {
+ /** @var DOMNode $table */
+ $tbody = $table->hasSingleTagInsideElement('tbody') ? $table->getFirstElementChild() : $table;
+ if ($tbody->hasSingleTagInsideElement('tr')) {
+ $row = $tbody->getFirstElementChild();
+ if ($row->hasSingleTagInsideElement('td')) {
+ $cell = $row->getFirstElementChild();
+ $cell = NodeUtility::setNodeTag($cell, (array_reduce(iterator_to_array($cell->childNodes), function ($carry, $node) {
+ return $node->isPhrasingContent() && $carry;
+ }, true)) ? 'p' : 'div');
+ $table->parentNode->replaceChild($cell, $table);
+ }
+ }
+ }
+
+ return $article;
+ }
+
+ /**
+ * Look for 'data' (as opposed to 'layout') tables, for which we use
+ * similar checks as
+ * https://dxr.mozilla.org/mozilla-central/rev/71224049c0b52ab190564d3ea0eab089a159a4cf/accessible/html/HTMLTableAccessible.cpp#920.
+ *
+ * @param DOMDocument $article
+ *
+ * @return void
+ */
+ public function _markDataTables(DOMDocument $article)
+ {
+ $tables = $article->getElementsByTagName('table');
+ foreach ($tables as $table) {
+ /** @var DOMElement $table */
+ $role = $table->getAttribute('role');
+ if ($role === 'presentation') {
+ $table->setReadabilityDataTable(false);
+ continue;
+ }
+ $datatable = $table->getAttribute('datatable');
+ if ($datatable == '0') {
+ $table->setReadabilityDataTable(false);
+ continue;
+ }
+ $summary = $table->getAttribute('summary');
+ if ($summary) {
+ $table->setReadabilityDataTable(true);
+ continue;
+ }
+
+ $caption = $table->getElementsByTagName('caption');
+ if ($caption->length > 0 && $caption->item(0)->childNodes->length > 0) {
+ $table->setReadabilityDataTable(true);
+ continue;
+ }
+
+ // If the table has a descendant with any of these tags, consider a data table:
+ foreach (['col', 'colgroup', 'tfoot', 'thead', 'th'] as $dataTableDescendants) {
+ if ($table->getElementsByTagName($dataTableDescendants)->length > 0) {
+ $table->setReadabilityDataTable(true);
+ continue 2;
+ }
+ }
+
+ // Nested tables indicate a layout table:
+ if ($table->getElementsByTagName('table')->length > 0) {
+ $table->setReadabilityDataTable(false);
+ continue;
+ }
+
+ $sizeInfo = $table->getRowAndColumnCount();
+ if ($sizeInfo['rows'] >= 10 || $sizeInfo['columns'] > 4) {
+ $table->setReadabilityDataTable(true);
+ continue;
+ }
+ // Now just go by size entirely:
+ $table->setReadabilityDataTable($sizeInfo['rows'] * $sizeInfo['columns'] > 10);
+ }
+ }
+
+ /**
+ * Remove the style attribute on every e and under.
+ *
+ * @param $node DOMDocument|DOMNode
+ **/
+ public function _cleanStyles($node)
+ {
+ if (property_exists($node, 'tagName') && $node->tagName === 'svg') {
+ return;
+ }
+
+ // Do not bother if there's no method to remove an attribute
+ if (method_exists($node, 'removeAttribute')) {
+ $presentational_attributes = ['align', 'background', 'bgcolor', 'border', 'cellpadding', 'cellspacing', 'frame', 'hspace', 'rules', 'style', 'valign', 'vspace'];
+ // Remove `style` and deprecated presentational attributes
+ foreach ($presentational_attributes as $presentational_attribute) {
+ $node->removeAttribute($presentational_attribute);
+ }
+
+ $deprecated_size_attribute_elems = ['table', 'th', 'td', 'hr', 'pre'];
+ if (property_exists($node, 'tagName') && in_array($node->tagName, $deprecated_size_attribute_elems)) {
+ $node->removeAttribute('width');
+ $node->removeAttribute('height');
+ }
+ }
+
+ $cur = $node->firstChild;
+ while ($cur !== null) {
+ $this->_cleanStyles($cur);
+ $cur = $cur->nextSibling;
+ }
+ }
+
+ /**
+ * Clean out elements whose id/class combinations match specific string.
+ *
+ * @param $node DOMElement Node to clean
+ * @param $regex string Match id/class combination.
+ *
+ * @return void
+ **/
+ public function _cleanMatchedNodes($node, $regex)
+ {
+ $endOfSearchMarkerNode = NodeUtility::getNextNode($node, true);
+ $next = NodeUtility::getNextNode($node);
+ while ($next && $next !== $endOfSearchMarkerNode) {
+ if (preg_match($regex, sprintf('%s %s', $next->getAttribute('class'), $next->getAttribute('id')))) {
+ $this->logger->debug(sprintf('Removing matched node with regex: \'%s\', node class was: \'%s\', id: \'%s\'', $regex, $next->getAttribute('class'), $next->getAttribute('id')));
+ $next = NodeUtility::removeAndGetNext($next);
+ } else {
+ $next = NodeUtility::getNextNode($next);
+ }
+ }
+ }
+
+ /**
+ * @param DOMDocument $article
+ *
+ * @return void
+ */
+ public function _cleanExtraParagraphs(DOMDocument $article)
+ {
+ $paragraphs = $article->getElementsByTagName('p');
+ $length = $paragraphs->length;
+
+ for ($i = 0; $i < $length; $i++) {
+ $paragraph = $paragraphs->item($length - 1 - $i);
+
+ $imgCount = $paragraph->getElementsByTagName('img')->length;
+ $embedCount = $paragraph->getElementsByTagName('embed')->length;
+ $objectCount = $paragraph->getElementsByTagName('object')->length;
+ // At this point, nasty iframes have been removed, only remain embedded video ones.
+ $iframeCount = $paragraph->getElementsByTagName('iframe')->length;
+ $totalCount = $imgCount + $embedCount + $objectCount + $iframeCount;
+
+ if ($totalCount === 0 && !preg_replace(NodeUtility::$regexps['onlyWhitespace'], '', $paragraph->textContent)) {
+ $this->logger->debug(sprintf('[PrepArticle] Removing extra paragraph. Text content was: \'%s\'', substr($paragraph->textContent, 0, 128)));
+ $paragraph->parentNode->removeChild($paragraph);
+ }
+ }
+ }
+
+ /**
+ * @param DOMDocument $article
+ * @param string $tag Tag to clean conditionally
+ *
+ * @return void
+ */
+ public function _cleanConditionally(DOMDocument $article, $tag)
+ {
+ if (!$this->configuration->getCleanConditionally()) {
+ return;
+ }
+
+ $isList = in_array($tag, ['ul', 'ol']);
+
+ /*
+ * Gather counts for other typical elements embedded within.
+ * Traverse backwards so we can remove nodes at the same time
+ * without effecting the traversal.
+ */
+
+ $DOMNodeList = $article->getElementsByTagName($tag);
+ $length = $DOMNodeList->length;
+ for ($i = 0; $i < $length; $i++) {
+ /** @var $node DOMElement */
+ $node = $DOMNodeList->item($length - 1 - $i);
+
+ // First check if we're in a data table, in which case don't remove us.
+ if ($node->hasAncestorTag('table', -1, function ($node) {
+ return $node->isReadabilityDataTable();
+ })) {
+ continue;
+ }
+
+ $weight = 0;
+ if ($this->configuration->getWeightClasses()) {
+ $weight = $node->getClassWeight();
+ }
+
+ if ($weight < 0) {
+ $this->logger->debug(sprintf('[PrepArticle] Removing tag \'%s\' with 0 or less weight', $tag));
+
+ NodeUtility::removeNode($node);
+ continue;
+ }
+
+ if (substr_count($node->getTextContent(), ',') < 10) {
+ /*
+ * If there are not very many commas, and the number of
+ * non-paragraph elements is more than paragraphs or other
+ * ominous signs, remove the element.
+ */
+
+ $p = $node->getElementsByTagName('p')->length;
+ $img = $node->getElementsByTagName('img')->length;
+ $li = $node->getElementsByTagName('li')->length - 100;
+ $input = $node->getElementsByTagName('input')->length;
+
+ $embedCount = 0;
+ $embeds = $node->getElementsByTagName('embed');
+
+ foreach ($embeds as $embedNode) {
+ if (preg_match(NodeUtility::$regexps['videos'], $embedNode->C14N())) {
+ $embedCount++;
+ }
+ }
+
+ $linkDensity = $node->getLinkDensity();
+ $contentLength = mb_strlen($node->getTextContent(true));
+
+ $haveToRemove =
+ ($img > 1 && $p / $img < 0.5 && !$node->hasAncestorTag('figure')) ||
+ (!$isList && $li > $p) ||
+ ($input > floor($p / 3)) ||
+ (!$isList && $contentLength < 25 && ($img === 0 || $img > 2) && !$node->hasAncestorTag('figure')) ||
+ (!$isList && $weight < 25 && $linkDensity > 0.2) ||
+ ($weight >= 25 && $linkDensity > 0.5) ||
+ (($embedCount === 1 && $contentLength < 75) || $embedCount > 1);
+
+ if ($haveToRemove) {
+ $this->logger->debug(sprintf('[PrepArticle] Removing tag \'%s\'.', $tag));
+
+ NodeUtility::removeNode($node);
+ }
+ }
+ }
+ }
+
+ /**
+ * Clean a node of all elements of type "tag".
+ * (Unless it's a youtube/vimeo video. People love movies.).
+ *
+ * @param $article DOMDocument
+ * @param $tag string tag to clean
+ *
+ * @return void
+ **/
+ public function _clean(DOMDocument $article, $tag)
+ {
+ $isEmbed = in_array($tag, ['object', 'embed', 'iframe']);
+
+ $DOMNodeList = $article->getElementsByTagName($tag);
+ $length = $DOMNodeList->length;
+ for ($i = 0; $i < $length; $i++) {
+ $item = $DOMNodeList->item($length - 1 - $i);
+
+ // Allow youtube and vimeo videos through as people usually want to see those.
+ if ($isEmbed) {
+ $attributeValues = [];
+ foreach ($item->attributes as $value) {
+ $attributeValues[] = $value->nodeValue;
+ }
+ $attributeValues = implode('|', $attributeValues);
+
+ // First, check the elements attributes to see if any of them contain youtube or vimeo
+ if (preg_match(NodeUtility::$regexps['videos'], $attributeValues)) {
+ continue;
+ }
+
+ // Then check the elements inside this element for the same.
+ if (preg_match(NodeUtility::$regexps['videos'], $item->C14N())) {
+ continue;
+ }
+ }
+ $this->logger->debug(sprintf('[PrepArticle] Removing node \'%s\'.', $item->tagName));
+
+ NodeUtility::removeNode($item);
+ }
+ }
+
+ /**
+ * Clean out spurious headers from an Element. Checks things like classnames and link density.
+ *
+ * @param DOMDocument $article
+ *
+ * @return void
+ **/
+ public function _cleanHeaders(DOMDocument $article)
+ {
+ for ($headerIndex = 1; $headerIndex < 3; $headerIndex++) {
+ $headers = $article->getElementsByTagName('h' . $headerIndex);
+ /** @var $header DOMElement */
+ foreach ($headers as $header) {
+ $weight = 0;
+ if ($this->configuration->getWeightClasses()) {
+ $weight = $header->getClassWeight();
+ }
+
+ if ($weight < 0) {
+ $this->logger->debug(sprintf('[PrepArticle] Removing H node with 0 or less weight. Content was: \'%s\'', substr($header->nodeValue, 0, 128)));
+
+ NodeUtility::removeNode($header);
+ }
+ }
+ }
+ }
+
+ /**
+ * Removes the class="" attribute from every element in the given
+ * subtree.
+ *
+ * Readability.js has a special filter to avoid cleaning the classes that the algorithm adds. We don't add classes
+ * here so no need to filter those.
+ *
+ * @param DOMDocument|DOMNode $node
+ *
+ * @return void
+ **/
+ public function _cleanClasses($node)
+ {
+ if ($node->getAttribute('class') !== '') {
+ $node->removeAttribute('class');
+ }
+
+ for ($node = $node->getFirstElementChild(); $node !== null; $node = $node->nextSibling) {
+ $this->_cleanClasses($node);
+ }
+ }
+
+ /**
+ * @param DOMDocument $article
+ *
+ * @return DOMDocument
+ */
+ public function postProcessContent(DOMDocument $article)
+ {
+ $this->logger->info('[PostProcess] PostProcessing content...');
+
+ // Readability cannot open relative uris so we convert them to absolute uris.
+ if ($this->configuration->getFixRelativeURLs()) {
+ foreach (iterator_to_array($article->getElementsByTagName('a')) as $link) {
+ /** @var DOMElement $link */
+ $href = $link->getAttribute('href');
+ if ($href) {
+ // Replace links with javascript: URIs with text content, since
+ // they won't work after scripts have been removed from the page.
+ if (strpos($href, 'javascript:') === 0) {
+ $this->logger->debug(sprintf('[PostProcess] Removing \'javascript:\' link. Content is: \'%s\'', substr($link->textContent, 0, 128)));
+
+ $text = $article->createTextNode($link->textContent);
+ $link->parentNode->replaceChild($text, $link);
+ } else {
+ $this->logger->debug(sprintf('[PostProcess] Converting link to absolute URI: \'%s\'', substr($href, 0, 128)));
+
+ $link->setAttribute('href', $this->toAbsoluteURI($href));
+ }
+ }
+ }
+
+ foreach ($article->getElementsByTagName('img') as $img) {
+ /** @var DOMElement $img */
+ /*
+ * Extract all possible sources of img url and select the first one on the list.
+ */
+ $url = [
+ $img->getAttribute('src'),
+ $img->getAttribute('data-src'),
+ $img->getAttribute('data-original'),
+ $img->getAttribute('data-orig'),
+ $img->getAttribute('data-url')
+ ];
+
+ $src = array_filter($url);
+ $src = reset($src);
+ if ($src) {
+ $this->logger->debug(sprintf('[PostProcess] Converting image URL to absolute URI: \'%s\'', substr($src, 0, 128)));
+
+ $img->setAttribute('src', $this->toAbsoluteURI($src));
+ }
+ }
+ }
+
+ $this->_cleanClasses($article);
+
+ return $article;
+ }
+
+ /**
+ * @return null|string
+ */
+ public function __toString()
+ {
+ return sprintf('<h1>%s</h1>%s', $this->getTitle(), $this->getContent());
+ }
+
+ /**
+ * @return string|null
+ */
+ public function getTitle()
+ {
+ return $this->title;
+ }
+
+ /**
+ * @param string $title
+ */
+ protected function setTitle($title)
+ {
+ $this->title = $title;
+ }
+
+ /**
+ * @return string|null
+ */
+ public function getContent()
+ {
+ return ($this->content instanceof DOMDocument) ? $this->content->C14N() : null;
+ }
+
+ /**
+ * @return DOMDocument|null
+ */
+ public function getDOMDocument()
+ {
+ return $this->content;
+ }
+
+ /**
+ * @param DOMDocument $content
+ */
+ protected function setContent(DOMDocument $content)
+ {
+ $this->content = $content;
+ }
+
+ /**
+ * @return null|string
+ */
+ public function getExcerpt()
+ {
+ return $this->excerpt;
+ }
+
+ /**
+ * @param null|string $excerpt
+ */
+ public function setExcerpt($excerpt)
+ {
+ $this->excerpt = $excerpt;
+ }
+
+ /**
+ * @return string|null
+ */
+ public function getImage()
+ {
+ return $this->image;
+ }
+
+ /**
+ * @param string $image
+ */
+ protected function setImage($image)
+ {
+ $this->image = $image;
+ }
+
+ /**
+ * @return string|null
+ */
+ public function getAuthor()
+ {
+ return $this->author;
+ }
+
+ /**
+ * @param string $author
+ */
+ protected function setAuthor($author)
+ {
+ $this->author = $author;
+ }
+
+ /**
+ * @return string|null
+ */
+ public function getSiteName()
+ {
+ return $this->siteName;
+ }
+
+ /**
+ * @param string $siteName
+ */
+ protected function setSiteName($siteName)
+ {
+ $this->siteName = $siteName;
+ }
+
+ /**
+ * @return null|string
+ */
+ public function getDirection()
+ {
+ return $this->direction;
+ }
+
+ /**
+ * @param null|string $direction
+ */
+ public function setDirection($direction)
+ {
+ $this->direction = $direction;
+ }
+}
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/ConfigurationTest.php b/plugins/af_readability/vendor/fivefilters/readability.php/test/ConfigurationTest.php
index b3810ed73..b3810ed73 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/ConfigurationTest.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/ConfigurationTest.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/ReadabilityTest.php b/plugins/af_readability/vendor/fivefilters/readability.php/test/ReadabilityTest.php
index ca208e894..ca208e894 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/ReadabilityTest.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/ReadabilityTest.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/TestPage.php b/plugins/af_readability/vendor/fivefilters/readability.php/test/TestPage.php
index ed6f92e7c..ed6f92e7c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/TestPage.php
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/TestPage.php
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/config.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/config.json
index 0ac6816ed..0ac6816ed 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/config.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/config.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/expected-images.json
index 5bed34dc9..5bed34dc9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/expected-metadata.json
index 52dafa149..52dafa149 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/expected.html
index e05810ff7..e05810ff7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/source.html
index 951e8745d..951e8745d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/001/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/001/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/expected-metadata.json
index 74c3859ed..74c3859ed 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/expected.html
index 0525100d6..0525100d6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/source.html
index 48befba5d..48befba5d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/002/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/002/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/expected-metadata.json
index 7c31c2296..7c31c2296 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/expected.html
index 6b03dd384..6b03dd384 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/source.html
index c7275b3b2..c7275b3b2 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/003-metadata-preferred/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/003-metadata-preferred/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-images.json
index 3a4190bfc..3a4190bfc 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-metadata.json
index a30d0971b..a30d0971b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/expected.html
index 6b03dd384..6b03dd384 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/source.html
index dd9dc87b6..dd9dc87b6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/004-metadata-space-separated-properties/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/004-metadata-space-separated-properties/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/config.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/config.json
index 0ac6816ed..0ac6816ed 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/config.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/config.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/expected-images.json
index 5a24660bb..5a24660bb 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/expected-metadata.json
index 9b2070388..9b2070388 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/expected.html
index 15801438e..15801438e 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/source.html
index d8e99bbb1..d8e99bbb1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/aclu/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/aclu/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/config.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/config.json
index 0ac6816ed..0ac6816ed 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/config.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/config.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/expected-images.json
index b55555167..b55555167 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/expected-metadata.json
index 0594bf203..0594bf203 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/expected.html
index 0aecf6e9f..0aecf6e9f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/source.html
index cd6aed112..cd6aed112 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ars-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ars-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/expected-images.json
index 5e3fa4120..5e3fa4120 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/expected-metadata.json
index e58519c37..e58519c37 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/expected.html
index 14d23f672..14d23f672 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/source.html
index bb0f7df01..bb0f7df01 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element-relative/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element-relative/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/expected-images.json
index c4a597eea..c4a597eea 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/expected-metadata.json
index e7a86a752..e7a86a752 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/expected.html
index 5037eb265..5037eb265 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/source.html
index 4b3c63c8e..4b3c63c8e 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url-base-element/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url-base-element/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/expected-images.json
index 1c28ae60c..1c28ae60c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/expected-metadata.json
index 291ff94bc..291ff94bc 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/expected.html
index 36981e1e7..36981e1e7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/source.html
index 748b8be7d..748b8be7d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/base-url/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/base-url/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/expected-metadata.json
index a31ae0ba7..a31ae0ba7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/expected.html
index c66b95c70..c66b95c70 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/source.html
index d00f4cc27..d00f4cc27 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/basic-tags-cleaning/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/basic-tags-cleaning/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/expected-images.json
index 44bca8dce..44bca8dce 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/expected-metadata.json
index 6af682f84..6af682f84 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/expected.html
index ca646fe80..ca646fe80 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/source.html
index 876c893f6..876c893f6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bbc-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bbc-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/expected-images.json
index 1b254aaf2..1b254aaf2 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/expected-metadata.json
index a081c8829..a081c8829 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/expected.html
index ec3a02a43..ec3a02a43 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/source.html
index 0c23844f6..0c23844f6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/blogger/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/blogger/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/config.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/config.json
index 0ac6816ed..0ac6816ed 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/config.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/config.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/expected-images.json
index 77ab1dbc1..77ab1dbc1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/expected-metadata.json
index f04451323..f04451323 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/expected.html
index e2f04c74b..e2f04c74b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/source.html
index 61ae0aa91..61ae0aa91 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/breitbart/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/breitbart/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/expected-images.json
index 7da4a8f99..7da4a8f99 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/expected-metadata.json
index b2b0d8659..b2b0d8659 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/expected.html
index c281eef90..c281eef90 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/source.html
index 08840dc24..08840dc24 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/bug-1255978/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/bug-1255978/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/expected-images.json
index f44cbe4a1..f44cbe4a1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/expected-metadata.json
index c332ef4f0..c332ef4f0 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/expected.html
index 46a3f3212..46a3f3212 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/source.html
index f51556a34..f51556a34 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/buzzfeed-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/buzzfeed-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/expected-images.json
index c9eb0acac..c9eb0acac 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/expected-metadata.json
index 363110945..363110945 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/expected.html
index 195bdd271..195bdd271 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/source.html
index b6f0267e8..b6f0267e8 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/challenges/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/challenges/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/expected-images.json
index be86a5838..be86a5838 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/expected-metadata.json
index c5166f58c..c5166f58c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/expected.html
index 8c1b8b121..8c1b8b121 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/source.html
index 775023e7c..775023e7c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/clean-links/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/clean-links/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/expected-images.json
index f83aea18c..f83aea18c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/expected-metadata.json
index be68e3164..be68e3164 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/expected.html
index 1b6351245..1b6351245 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/source.html
index c71419fe9..c71419fe9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet-svg-classes/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet-svg-classes/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/expected-images.json
index e8bdae4fb..e8bdae4fb 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/expected-metadata.json
index 773cbb9f0..773cbb9f0 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/expected.html
index 4f401dad0..4f401dad0 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/source.html
index 410bf3cc8..410bf3cc8 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnet/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnet/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/expected-images.json
index 93a8c3360..93a8c3360 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/expected-metadata.json
index 46a71fa8d..46a71fa8d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/expected.html
index 552455fe8..552455fe8 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/source.html
index a4950a147..a4950a147 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/cnn/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/cnn/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/expected-metadata.json
index b1c1035b5..b1c1035b5 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/expected.html
index 57c50c6f3..57c50c6f3 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/source.html
index 59b7a02ca..59b7a02ca 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/comment-inside-script-parsing/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/comment-inside-script-parsing/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/expected-images.json
index 888aa8524..888aa8524 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/expected-metadata.json
index 1dbda03bd..1dbda03bd 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/expected.html
index 6c3f15447..6c3f15447 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/source.html
index c68f39009..c68f39009 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/daringfireball-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/daringfireball-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/expected-images.json
index 12cfc8c63..12cfc8c63 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/expected-metadata.json
index c442d503c..c442d503c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/expected.html
index 93f4c92fe..93f4c92fe 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/source.html
index 8727af66d..8727af66d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/different-sources-for-images/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/different-sources-for-images/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/config.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/config.json
index 4bb89904f..4bb89904f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/config.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/config.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/expected-images.json
index d0e64966f..d0e64966f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/expected-metadata.json
index 4de144894..4de144894 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/expected.html
index 397322e20..397322e20 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/source.html
index f5c9afe19..f5c9afe19 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/expected-images.json
index a6dcad5dc..a6dcad5dc 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/expected-metadata.json
index 756b8c1b7..756b8c1b7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/expected.html
index ea7d138e1..ea7d138e1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/source.html
index 6976de340..6976de340 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ehow-2/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ehow-2/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/expected-metadata.json
index e0e885940..e0e885940 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/expected.html
index 327e6503c..327e6503c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/source.html
index ff43acfa3..ff43acfa3 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/embedded-videos/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/embedded-videos/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/expected-images.json
index f3993407b..f3993407b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/expected-metadata.json
index 3eb49bef2..3eb49bef2 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/expected.html
index 44a2afe0d..44a2afe0d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/source.html
index 2bed80809..2bed80809 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/engadget/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/engadget/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/config.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/config.json
index 0ac6816ed..0ac6816ed 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/config.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/config.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/expected-images.json
index 5f0cd4927..5f0cd4927 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/expected-metadata.json
index 8405f6763..8405f6763 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/expected.html
index 5dc679145..5dc679145 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/source.html
index af8f61a2b..af8f61a2b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/fortressofsolitude/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/fortressofsolitude/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/expected-images.json
index 79181b26b..79181b26b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/expected-metadata.json
index 65cd6ab1b..65cd6ab1b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/expected.html
index 1b69754ff..1b69754ff 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/source.html
index 048d101c3..048d101c3 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/gmw/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/gmw/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/expected-images.json
index 07cba8ba0..07cba8ba0 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/expected-metadata.json
index bb8e4c47f..bb8e4c47f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/expected.html
index 95ab304b5..95ab304b5 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/source.html
index 5ac581f07..5ac581f07 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/heise/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/heise/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/expected-images.json
index a26021c34..a26021c34 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/expected-metadata.json
index 102413240..102413240 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/expected.html
index 6896eedab..6896eedab 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/source.html
index 050bed449..050bed449 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/herald-sun-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/herald-sun-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/expected-metadata.json
index 332533a12..332533a12 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/expected.html
index 431532997..431532997 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/source.html
index e0699a003..e0699a003 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hidden-nodes/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hidden-nodes/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/expected-images.json
index 88d2990ee..88d2990ee 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/expected-metadata.json
index b16149a42..b16149a42 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/expected.html
index defbcc10c..defbcc10c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/source.html
index 7cbaacd6f..7cbaacd6f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/hukumusume/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/hukumusume/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/expected-images.json
index f548bd9b2..f548bd9b2 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/expected-metadata.json
index a8d6766bd..a8d6766bd 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/expected.html
index dd4faf3b4..dd4faf3b4 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/source.html
index a8c36b957..a8c36b957 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/iab-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/iab-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/expected-metadata.json
index ddf0094b9..ddf0094b9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/expected.html
index ff46f7a1d..ff46f7a1d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/source.html
index ded744e77..ded744e77 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/ietf-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/ietf-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/expected-images.json
index 785f18284..785f18284 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/expected-metadata.json
index b6d25979e..b6d25979e 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/expected.html
index e575c7beb..e575c7beb 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/source.html
index 8d6832e6f..8d6832e6f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/infobae/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/infobae/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/expected-images.json
index d5b5affb7..d5b5affb7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/expected-metadata.json
index 3b705f98a..3b705f98a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/expected.html
index d3696f7d1..d3696f7d1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/source.html
index 6d2b2821c..6d2b2821c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/keep-images/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/keep-images/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/expected-images.json
index 1ff254f29..1ff254f29 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/expected-metadata.json
index d2e56b0f8..d2e56b0f8 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/expected.html
index 5640699c1..5640699c1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/source.html
index 2c0a8c72a..2c0a8c72a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/la-nacion/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/la-nacion/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/expected-images.json
index e32833b65..e32833b65 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/expected-metadata.json
index a45fcaf97..a45fcaf97 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/expected.html
index dd91ed502..dd91ed502 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/source.html
index 093b02e52..093b02e52 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/expected-images.json
index 8492ce450..8492ce450 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/expected-metadata.json
index c402d3e27..c402d3e27 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/expected.html
index af69efe32..af69efe32 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/source.html
index b47799962..b47799962 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lemonde-2/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lemonde-2/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/expected-images.json
index 4b8e9a8b4..4b8e9a8b4 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/expected-metadata.json
index 5f2b7b5ee..5f2b7b5ee 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/expected.html
index 889c2b928..889c2b928 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/source.html
index 609df40d6..609df40d6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/liberation-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/liberation-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/expected-images.json
index b46843d47..b46843d47 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/expected-metadata.json
index fa13f9e3b..fa13f9e3b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/expected.html
index 2f862a91c..2f862a91c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/source.html
index fb7f522f6..fb7f522f6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-post-comment-load/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-post-comment-load/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/expected-images.json
index b46843d47..b46843d47 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/expected-metadata.json
index fa13f9e3b..fa13f9e3b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/expected.html
index 2f862a91c..2f862a91c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/source.html
index 9256059f8..9256059f8 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lifehacker-working/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lifehacker-working/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/expected-images.json
index c4caaa1ed..c4caaa1ed 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/expected-metadata.json
index d6b1330af..d6b1330af 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/expected.html
index 05e072336..05e072336 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/source.html
index b9ca816ee..b9ca816ee 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/links-in-tables/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/links-in-tables/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/config.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/config.json
index 0ac6816ed..0ac6816ed 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/config.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/config.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/expected-images.json
index 3f6b61062..3f6b61062 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/expected-metadata.json
index 584887a46..584887a46 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/expected.html
index 358f95655..358f95655 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/source.html
index 85eea11d8..85eea11d8 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/lwn-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/lwn-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/config.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/config.json
index 958972e20..958972e20 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/config.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/config.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/expected-images.json
index cfe75d030..cfe75d030 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/expected-metadata.json
index 94f36a271..94f36a271 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/expected.html
index bd81ab3d7..bd81ab3d7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/source.html
index 080f03dd8..080f03dd8 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/marketwatch/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/marketwatch/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/expected-images.json
index 9a2422037..9a2422037 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/expected-metadata.json
index a974b4361..a974b4361 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/expected.html
index 679d8b75b..679d8b75b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/source.html
index 63be92077..63be92077 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/expected-images.json
index e52ea6ff1..e52ea6ff1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/expected-metadata.json
index 71804a0dc..71804a0dc 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/expected.html
index 222b09dbc..222b09dbc 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/source.html
index da62885b7..da62885b7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-2/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-2/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/expected-images.json
index 54ac86669..54ac86669 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/expected-metadata.json
index 59ef2043d..59ef2043d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/expected.html
index f1c311e75..f1c311e75 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/source.html
index 37c246419..37c246419 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/medium-3/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/medium-3/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/expected-metadata.json
index b0ef9465b..b0ef9465b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/expected.html
index 39e027e47..39e027e47 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/source.html
index f5f8ca6c2..f5f8ca6c2 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/missing-paragraphs/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/missing-paragraphs/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/expected-images.json
index 8ee13b8e5..8ee13b8e5 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/expected-metadata.json
index 1b17f9b16..1b17f9b16 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/expected.html
index ba1896ea7..ba1896ea7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/source.html
index b8ff3df17..b8ff3df17 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/expected-images.json
index 365d4c229..365d4c229 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/expected-metadata.json
index 7336ada27..7336ada27 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/expected.html
index 8ce4c0703..8ce4c0703 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/source.html
index 31f30a6b6..31f30a6b6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/mozilla-2/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/mozilla-2/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/expected-images.json
index 176afee89..176afee89 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/expected-metadata.json
index 673d99512..673d99512 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/expected.html
index 3ed4d696c..3ed4d696c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/source.html
index be55bf3fa..be55bf3fa 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/msn/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/msn/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/expected-images.json
index c89c43ca2..c89c43ca2 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/expected-metadata.json
index 36da83868..36da83868 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/expected.html
index 60f7148bc..60f7148bc 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/source.html
index d8d12436b..d8d12436b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/expected-images.json
index e4b49d00e..e4b49d00e 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/expected-metadata.json
index 7fbcf29ee..7fbcf29ee 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/expected.html
index 1584ca437..1584ca437 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/source.html
index 07dd7484d..07dd7484d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/nytimes-2/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/nytimes-2/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/expected-images.json
index d36dedeb1..d36dedeb1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/expected-metadata.json
index dafb56b44..dafb56b44 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/expected.html
index ffa81c794..ffa81c794 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/source.html
index e1849a93d..e1849a93d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/pixnet/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/pixnet/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/expected-metadata.json
index 9a7e3d102..9a7e3d102 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/expected.html
index e064a49ee..e064a49ee 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/source.html
index ac6ffc793..ac6ffc793 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-brs/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-brs/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/expected-metadata.json
index 2e6f722f5..2e6f722f5 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/expected.html
index a7c631809..a7c631809 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/source.html
index 339d84b3f..339d84b3f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-extra-paragraphs/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-extra-paragraphs/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/expected-metadata.json
index 13cd351c7..13cd351c7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/expected.html
index 769cc0629..769cc0629 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/source.html
index cacb3df7a..cacb3df7a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/remove-script-tags/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/remove-script-tags/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/expected-metadata.json
index 4878f5da1..4878f5da1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/expected.html
index 4a46dd585..4a46dd585 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/source.html
index d081a9436..d081a9436 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/reordering-paragraphs/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/reordering-paragraphs/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/expected-metadata.json
index 2f31b060c..2f31b060c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/expected.html
index 56e36a4bc..56e36a4bc 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/source.html
index 2283d6542..2283d6542 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-brs/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-brs/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/expected-metadata.json
index 18f46ddb8..18f46ddb8 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/expected.html
index a36b1a252..a36b1a252 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/source.html
index 5789e5676..5789e5676 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/replace-font-tags/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/replace-font-tags/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/expected-metadata.json
index f9613b2bf..f9613b2bf 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/expected.html
index eba1686e9..eba1686e9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/source.html
index 597c427ac..597c427ac 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/expected-metadata.json
index f9613b2bf..f9613b2bf 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/expected.html
index eba1686e9..eba1686e9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/source.html
index c888309eb..c888309eb 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-2/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-2/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/expected-metadata.json
index f9613b2bf..f9613b2bf 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/expected.html
index 75448882b..75448882b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/source.html
index ac68451c7..ac68451c7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-3/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-3/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/expected-metadata.json
index c8358d561..c8358d561 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/expected.html
index 14724e72d..14724e72d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/source.html
index 677bca906..677bca906 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/rtl-4/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/rtl-4/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/expected-images.json
index f2c796a72..f2c796a72 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/expected-metadata.json
index 63cf935cf..63cf935cf 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/expected.html
index d1cb60ef1..d1cb60ef1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/source.html
index 3bfa3fe31..3bfa3fe31 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/salon-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/salon-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/expected-images.json
index 469dde59f..469dde59f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/expected-metadata.json
index b024aa854..b024aa854 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/expected.html
index 55b74a98c..55b74a98c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/source.html
index f2e26ac95..f2e26ac95 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/simplyfound-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/simplyfound-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/expected-metadata.json
index 7a80654bf..7a80654bf 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/expected.html
index 6d135be2c..6d135be2c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/source.html
index ee9d660c5..ee9d660c5 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/social-buttons/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/social-buttons/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/expected-metadata.json
index 47039a9a9..47039a9a9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/expected.html
index d3a8806b4..d3a8806b4 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/source.html
index 687ca39be..687ca39be 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/style-tags-removal/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/style-tags-removal/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/expected-metadata.json
index 321414f8b..321414f8b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/expected.html
index 1cc45591b..1cc45591b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/source.html
index e4fb905f1..e4fb905f1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/svg-parsing/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/svg-parsing/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/expected-images.json
index c2a1ea915..c2a1ea915 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/expected-metadata.json
index cdb8fc396..cdb8fc396 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/expected.html
index 77c083b21..77c083b21 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/source.html
index 0e20275b6..0e20275b6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/table-style-attributes/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/table-style-attributes/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/expected-images.json
index c52fd8c66..c52fd8c66 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/expected-metadata.json
index be19af16d..be19af16d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/expected.html
index 23a2a74ed..23a2a74ed 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/source.html
index 3aad2a179..3aad2a179 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/telegraph/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/telegraph/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/expected-images.json
index 0637a088a..0637a088a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/expected-metadata.json
index 07338d0a7..07338d0a7 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/expected.html
index e4fa77ae9..e4fa77ae9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/source.html
index d91b65844..d91b65844 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/title-and-h1-discrepancy/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/title-and-h1-discrepancy/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/expected-images.json
index fa74f0b81..fa74f0b81 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/expected-metadata.json
index 63d67965b..63d67965b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/expected.html
index 6eb48b97d..6eb48b97d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/source.html
index c2b19f0e0..c2b19f0e0 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tmz-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tmz-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/expected-images.json
index bce09c696..bce09c696 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/expected-metadata.json
index 225236c98..225236c98 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/expected.html
index 56df59658..56df59658 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/source.html
index 14069d241..14069d241 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/tumblr/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/tumblr/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-images.json
index c2be6de58..c2be6de58 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-metadata.json
index 416d55e4c..416d55e4c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/expected.html
index 21644834f..21644834f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/source.html
index e4b2d4ac9..e4b2d4ac9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/uses-getfirstelementchild-function/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/uses-getfirstelementchild-function/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/expected-images.json
index cc41335ab..cc41335ab 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/expected-metadata.json
index d3aad6507..d3aad6507 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/expected.html
index ed051e882..ed051e882 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/source.html
index 047505981..047505981 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/expected-images.json
index a8602d503..a8602d503 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/expected-metadata.json
index 57f81c1dc..57f81c1dc 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/expected.html
index cb2a8ceda..cb2a8ceda 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/source.html
index 1d4dd7bdb..1d4dd7bdb 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wapo-2/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wapo-2/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/config.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/config.json
index 4bb89904f..4bb89904f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/config.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/config.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/expected-images.json
index 2b266e478..2b266e478 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/expected-metadata.json
index 2a7bced70..2a7bced70 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/expected.html
index ddbe3d84c..ddbe3d84c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/source.html
index 0b50ccc54..0b50ccc54 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/expected-images.json
index 2b266e478..2b266e478 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/expected-metadata.json
index 9fee7bc3c..9fee7bc3c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/expected.html
index d9e181691..d9e181691 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/source.html
index d7b374b7c..d7b374b7c 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/webmd-2/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/webmd-2/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/expected-images.json
index 2ad255671..2ad255671 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/expected-metadata.json
index ec9aa476f..ec9aa476f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/expected.html
index de18ee3f3..de18ee3f3 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/source.html
index aa1d77164..aa1d77164 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikia/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikia/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/expected-images.json
index 81d1c9d4d..81d1c9d4d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/expected-metadata.json
index b6e3d76fd..b6e3d76fd 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/expected.html
index 8de3ffabc..8de3ffabc 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/source.html
index 1a1338dfb..1a1338dfb 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wikipedia/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wikipedia/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/expected-images.json
index e0c78e6ce..e0c78e6ce 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/expected-metadata.json
index 9154ef04d..9154ef04d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/expected.html
index 1f47d8fe1..1f47d8fe1 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/source.html
index f5984508e..f5984508e 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/wordpress/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/wordpress/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/expected-images.json
index 4c0fc4c25..4c0fc4c25 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/expected-metadata.json
index cfd3a6943..cfd3a6943 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/expected.html
index deea6c82f..deea6c82f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/source.html
index b13bd1d8d..b13bd1d8d 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-1/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-1/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/expected-images.json
index 6ece996a2..6ece996a2 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/expected-metadata.json
index 8ca33da76..8ca33da76 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/expected.html
index 9bc5f6f5f..9bc5f6f5f 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/source.html
index 2ab343fc9..2ab343fc9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-2/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-2/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/expected-images.json
index 36f5f0612..36f5f0612 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/expected-metadata.json
index 8af68c02b..8af68c02b 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/expected.html
index c5d7e33dc..c5d7e33dc 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/source.html
index caf60e4e9..caf60e4e9 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-3/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-3/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/expected-images.json
index 36a35281a..36a35281a 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/expected-metadata.json
index c8459ad79..c8459ad79 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/expected.html
index db7694ab3..db7694ab3 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/source.html
index 8d3510886..8d3510886 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/yahoo-4/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/yahoo-4/source.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-images.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/expected-images.json
index 72627e0ec..72627e0ec 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-images.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/expected-images.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-metadata.json b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/expected-metadata.json
index f84c6ecd6..f84c6ecd6 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected-metadata.json
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/expected-metadata.json
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/expected.html
index f4ae9daac..f4ae9daac 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/expected.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/expected.html
diff --git a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/source.html b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/source.html
index 22a3bb571..22a3bb571 100644
--- a/plugins/af_readability/vendor/andreskrey/readability.php/test/test-pages/youth/source.html
+++ b/plugins/af_readability/vendor/fivefilters/readability.php/test/test-pages/youth/source.html
diff --git a/plugins/af_readability/vendor/psr/log/Psr/Log/AbstractLogger.php b/plugins/af_readability/vendor/psr/log/Psr/Log/AbstractLogger.php
index 90e721af2..e02f9daf3 100644
--- a/plugins/af_readability/vendor/psr/log/Psr/Log/AbstractLogger.php
+++ b/plugins/af_readability/vendor/psr/log/Psr/Log/AbstractLogger.php
@@ -14,8 +14,8 @@ abstract class AbstractLogger implements LoggerInterface
/**
* System is unusable.
*
- * @param string $message
- * @param array $context
+ * @param string $message
+ * @param mixed[] $context
*
* @return void
*/
@@ -30,8 +30,8 @@ abstract class AbstractLogger implements LoggerInterface
* Example: Entire website down, database unavailable, etc. This should
* trigger the SMS alerts and wake you up.
*
- * @param string $message
- * @param array $context
+ * @param string $message
+ * @param mixed[] $context
*
* @return void
*/
@@ -45,8 +45,8 @@ abstract class AbstractLogger implements LoggerInterface
*
* Example: Application component unavailable, unexpected exception.
*
- * @param string $message
- * @param array $context
+ * @param string $message
+ * @param mixed[] $context
*
* @return void
*/
@@ -59,8 +59,8 @@ abstract class AbstractLogger implements LoggerInterface
* Runtime errors that do not require immediate action but should typically
* be logged and monitored.
*
- * @param string $message
- * @param array $context
+ * @param string $message
+ * @param mixed[] $context
*
* @return void
*/
@@ -75,8 +75,8 @@ abstract class AbstractLogger implements LoggerInterface
* Example: Use of deprecated APIs, poor use of an API, undesirable things
* that are not necessarily wrong.
*
- * @param string $message
- * @param array $context
+ * @param string $message
+ * @param mixed[] $context
*
* @return void
*/
@@ -88,8 +88,8 @@ abstract class AbstractLogger implements LoggerInterface
/**
* Normal but significant events.
*
- * @param string $message
- * @param array $context
+ * @param string $message
+ * @param mixed[] $context
*
* @return void
*/
@@ -103,8 +103,8 @@ abstract class AbstractLogger implements LoggerInterface
*
* Example: User logs in, SQL logs.
*
- * @param string $message
- * @param array $context
+ * @param string $message
+ * @param mixed[] $context
*
* @return void
*/
@@ -116,8 +116,8 @@ abstract class AbstractLogger implements LoggerInterface
/**
* Detailed debug information.
*
- * @param string $message
- * @param array $context
+ * @param string $message
+ * @param mixed[] $context
*
* @return void
*/
diff --git a/plugins/af_readability/vendor/psr/log/Psr/Log/LoggerAwareTrait.php b/plugins/af_readability/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
index 639f79bda..82bf45c89 100644
--- a/plugins/af_readability/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
+++ b/plugins/af_readability/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
@@ -10,7 +10,7 @@ trait LoggerAwareTrait
/**
* The logger instance.
*
- * @var LoggerInterface
+ * @var LoggerInterface|null
*/
protected $logger;
diff --git a/plugins/af_readability/vendor/psr/log/composer.json b/plugins/af_readability/vendor/psr/log/composer.json
index 3f6d4eea4..ca0569537 100644
--- a/plugins/af_readability/vendor/psr/log/composer.json
+++ b/plugins/af_readability/vendor/psr/log/composer.json
@@ -7,7 +7,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"require": {
diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php
index 3b4094b1b..f2a04ce24 100755
--- a/plugins/af_redditimgur/init.php
+++ b/plugins/af_redditimgur/init.php
@@ -3,10 +3,20 @@ class Af_RedditImgur extends Plugin {
/** @var PluginHost $host */
private $host;
+
+ /** @var array<string> */
private $domain_blacklist = [ "github.com" ];
+
+ /** @var bool */
private $dump_json_data = false;
+
+ /** @var array<string> */
private $fallback_preview_urls = [];
+
+ /** @var int */
private $default_max_score = 100;
+
+ /** @var array<int, array<int, string|null>> */
private $generated_enclosures = [];
function about() {
@@ -28,11 +38,24 @@ class Af_RedditImgur extends Plugin {
$host->add_hook($host::HOOK_RENDER_ARTICLE, $this);
$host->add_hook($host::HOOK_RENDER_ARTICLE_CDM, $this);
$host->add_hook($host::HOOK_RENDER_ARTICLE_API, $this);
+
+ $host->add_hook($host::HOOK_PRE_SUBSCRIBE, $this);
+ }
+
+ function hook_pre_subscribe(&$url, $auth_login, $auth_pass) {
+ $reddit_to_teddit = $this->host->get($this, "reddit_to_teddit");
+
+ if ($reddit_to_teddit) {
+ $url = $this->rewrite_to_reddit($url);
+
+ return true;
+ }
+
+ return false;
}
function hook_prefs_tab($args) {
if ($args != "prefFeeds") return;
-
$enable_readability = $this->host->get($this, "enable_readability");
$enable_content_dupcheck = $this->host->get($this, "enable_content_dupcheck");
$reddit_to_teddit = $this->host->get($this, "reddit_to_teddit");
@@ -105,7 +128,7 @@ class Af_RedditImgur extends Plugin {
<?php
}
- function save() {
+ function save() : void {
$enable_readability = checkbox_to_sql_bool($_POST["enable_readability"] ?? "");
$enable_content_dupcheck = checkbox_to_sql_bool($_POST["enable_content_dupcheck"] ?? "");
$reddit_to_teddit = checkbox_to_sql_bool($_POST["reddit_to_teddit"] ?? "");
@@ -125,10 +148,34 @@ class Af_RedditImgur extends Plugin {
echo __("Configuration saved");
}
- private function process_post_media($data, $doc, $xpath, $anchor) {
+ /**
+ * @param array<string,mixed> $data (this is a huge blob of random crap returned by reddit API)
+ * @param DOMDocument $doc
+ * @param DOMXPath $xpath
+ * @param DOMElement $anchor
+ * @return bool
+ */
+ private function process_post_media(array $data, DOMDocument $doc, DOMXPath $xpath, DOMElement $anchor) : bool {
$found = 0;
- if (isset($data["media_metadata"])) {
+ // process galleries in the right order
+ if (isset($data["gallery_data"]) && isset($data["media_metadata"])) {
+ foreach ($data["gallery_data"]["items"] as $gal_item) {
+ $media_id = $gal_item["media_id"] ?? null;
+
+ if ($media_id) {
+ $media_url = htmlspecialchars_decode($data["media_metadata"][$media_id]["s"]["u"] ?? "");
+
+ if ($media_url) {
+ Debug::log("found gallery item: $media_id, url: $media_url", Debug::LOG_EXTENDED);
+
+ $this->handle_as_image($doc, $anchor, $media_url);
+ $found = 1;
+ }
+ }
+ }
+ // i'm not sure if this is a thing, but if there's no gallery just process any possible attaches in the random order...
+ } else if (isset($data["media_metadata"])) {
foreach ($data["media_metadata"] as $media) {
if (!empty($media["s"]["u"])) {
$media_url = htmlspecialchars_decode($media["s"]["u"]);
@@ -175,7 +222,7 @@ class Af_RedditImgur extends Plugin {
Debug::log("found hosted video url: $media_url / poster $poster_url, looking up fallback url...", Debug::LOG_VERBOSE);
- $fallback_url = $data["media"]["reddit_video"]["fallback_url"];
+ $fallback_url = $data["media"]["reddit_video"]["fallback_url"] ?? null;
if ($fallback_url) {
Debug::log("found video fallback_url: $fallback_url", Debug::LOG_VERBOSE);
@@ -229,14 +276,21 @@ class Af_RedditImgur extends Plugin {
}
}
- return $found;
+ return $found > 0;
}
/* function score_convert(int $value, int $from1, int $from2, int $to1, int $to2) {
return ($value - $from1) / ($from2 - $from1) * ($to2 - $to1) + $to1;
} */
- private function inline_stuff(&$article, &$doc, $xpath) {
+ /**
+ * @param array<string, mixed> $article
+ * @param DOMDocument $doc
+ * @param DOMXPath $xpath
+ * @return bool
+ * @throws PDOException
+ */
+ private function inline_stuff(array &$article, DOMDocument &$doc, DOMXpath $xpath) : bool {
$max_score = (int) $this->host->get($this, "max_score", $this->default_max_score);
$import_score = (bool) $this->host->get($this, "import_score", $this->default_max_score);
@@ -250,7 +304,7 @@ class Af_RedditImgur extends Plugin {
$this->generated_enclosures = [];
- // embed anchor element, before reddit <table> post layout
+ /** @var DOMElement|null $anchor -- embed anchor element, before reddit <table> post layout */
$anchor = $xpath->query('//body/*')->item(0);
// deal with json-provided media content first
@@ -459,29 +513,38 @@ class Af_RedditImgur extends Plugin {
Debug::log("handling as imgur page/whatever", Debug::LOG_VERBOSE);
- $content = UrlHelper::fetch(["url" => $entry_href,
- "http_accept" => "text/*"]);
+ $content_type = $this->get_content_type($entry_href);
- if ($content) {
- $cdoc = new DOMDocument();
+ if ($content_type && strpos($content_type, "text/html") !== false) {
- if (@$cdoc->loadHTML($content)) {
- $cxpath = new DOMXPath($cdoc);
+ $content = UrlHelper::fetch(["url" => $entry_href,
+ "http_accept" => "text/*"]);
- $rel_image = $cxpath->query("//link[@rel='image_src']")->item(0);
+ if ($content) {
+ $cdoc = new DOMDocument();
- if ($rel_image) {
+ if (@$cdoc->loadHTML($content)) {
+ $cxpath = new DOMXPath($cdoc);
- $img = $doc->createElement('img');
- $img->setAttribute("src", $rel_image->getAttribute("href"));
+ /** @var ?DOMElement $rel_image */
+ $rel_image = $cxpath->query("//link[@rel='image_src']")->item(0);
- $br = $doc->createElement('br');
- $entry->parentNode->insertBefore($img, $entry);
- $entry->parentNode->insertBefore($br, $entry);
+ if ($rel_image) {
- $found = true;
+ $img = $doc->createElement('img');
+ $img->setAttribute("src", $rel_image->getAttribute("href"));
+
+ $br = $doc->createElement('br');
+ $entry->parentNode->insertBefore($img, $entry);
+ $entry->parentNode->insertBefore($br, $entry);
+
+ $found = true;
+ }
}
}
+
+ } else {
+ Debug::log("skipping imgur $entry_href because of content type: $content_type", Debug::LOG_VERBOSE);
}
}
@@ -505,50 +568,60 @@ class Af_RedditImgur extends Plugin {
if (!$found) {
Debug::log("looking for meta og:image", Debug::LOG_VERBOSE);
- $content = UrlHelper::fetch(["url" => $entry_href,
- "http_accept" => "text/*"]);
+ $content_type = $this->get_content_type($entry_href);
- if ($content) {
- $cdoc = new DOMDocument();
+ if ($content_type && strpos($content_type, "text/html") !== false) {
- if (@$cdoc->loadHTML($content)) {
- $cxpath = new DOMXPath($cdoc);
+ $content = UrlHelper::fetch(["url" => $entry_href,
+ "http_accept" => "text/*"]);
- $og_image = $cxpath->query("//meta[@property='og:image']")->item(0);
- $og_video = $cxpath->query("//meta[@property='og:video']")->item(0);
+ if ($content) {
+ $cdoc = new DOMDocument();
- if ($og_video) {
+ if (@$cdoc->loadHTML($content)) {
+ $cxpath = new DOMXPath($cdoc);
- $source_stream = $og_video->getAttribute("content");
+ /** @var ?DOMElement $og_image */
+ $og_image = $cxpath->query("//meta[@property='og:image']")->item(0);
- if ($source_stream) {
+ /** @var ?DOMElement $og_video */
+ $og_video = $cxpath->query("//meta[@property='og:video']")->item(0);
- if ($og_image) {
- $poster_url = $og_image->getAttribute("content");
- } else {
- $poster_url = false;
- }
+ if ($og_video) {
- $this->handle_as_video($doc, $entry, $source_stream, $poster_url);
- $found = true;
- }
+ $source_stream = $og_video->getAttribute("content");
- } else if ($og_image) {
+ if ($source_stream) {
- $og_src = $og_image->getAttribute("content");
+ if ($og_image) {
+ $poster_url = $og_image->getAttribute("content");
+ } else {
+ $poster_url = false;
+ }
- if ($og_src) {
- $img = $doc->createElement('img');
- $img->setAttribute("src", $og_src);
+ $this->handle_as_video($doc, $entry, $source_stream, $poster_url);
+ $found = true;
+ }
- $br = $doc->createElement('br');
- $entry->parentNode->insertBefore($img, $entry);
- $entry->parentNode->insertBefore($br, $entry);
+ } else if ($og_image) {
- $found = true;
+ $og_src = $og_image->getAttribute("content");
+
+ if ($og_src) {
+ $img = $doc->createElement('img');
+ $img->setAttribute("src", $og_src);
+
+ $br = $doc->createElement('br');
+ $entry->parentNode->insertBefore($img, $entry);
+ $entry->parentNode->insertBefore($br, $entry);
+
+ $found = true;
+ }
}
}
}
+ } else {
+ Debug::log("BODY: skipping $entry_href because of content type: $content_type", Debug::LOG_VERBOSE);
}
}
}
@@ -566,7 +639,7 @@ class Af_RedditImgur extends Plugin {
if ($found)
$this->remove_post_thumbnail($doc, $xpath);
- return $found;
+ return $found > 0;
}
function hook_article_filter($article) {
@@ -577,6 +650,7 @@ class Af_RedditImgur extends Plugin {
if (@$doc->loadHTML($article["content"])) {
$xpath = new DOMXPath($doc);
+ /** @var ?DOMElement $content_link */
$content_link = $xpath->query("(//a[contains(., '[link]')])")->item(0);
if ($this->host->get($this, "enable_content_dupcheck")) {
@@ -633,14 +707,14 @@ class Af_RedditImgur extends Plugin {
return 2;
}
- private function remove_post_thumbnail($doc, $xpath) {
+ private function remove_post_thumbnail(DOMDocument $doc, DOMXpath $xpath) : void {
$thumb = $xpath->query("//td/a/img[@src]")->item(0);
if ($thumb)
$thumb->parentNode->parentNode->removeChild($thumb->parentNode);
}
- private function handle_as_image($doc, $entry, $image_url, $link_url = false) {
+ private function handle_as_image(DOMDocument $doc, DOMElement $entry, string $image_url, string $link_url = "") : void {
$img = $doc->createElement("img");
$img->setAttribute("src", $image_url);
@@ -659,7 +733,7 @@ class Af_RedditImgur extends Plugin {
$entry->parentNode->insertBefore($p, $entry);
}
- private function handle_as_video($doc, $entry, $source_stream, $poster_url = false) {
+ private function handle_as_video(DOMDocument $doc, DOMElement $entry, string $source_stream, string $poster_url = "") : void {
Debug::log("handle_as_video: $source_stream", Debug::LOG_VERBOSE);
@@ -691,7 +765,7 @@ class Af_RedditImgur extends Plugin {
return $method === "testurl";
}
- function testurl() {
+ function testurl() : void {
$url = clean($_POST["url"] ?? "");
$article_url = clean($_POST["article_url"] ?? "");
@@ -785,8 +859,9 @@ class Af_RedditImgur extends Plugin {
}
- private function get_header($url, $header, $useragent = SELF_USER_AGENT) {
- $ret = false;
+ /** $useragent defaults to Config::get_user_agent() */
+ private function get_header(string $url, int $header, string $useragent = "") : string {
+ $ret = "";
if (function_exists("curl_init")) {
$ch = curl_init($url);
@@ -795,7 +870,7 @@ class Af_RedditImgur extends Plugin {
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, !ini_get("open_basedir"));
- curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
+ curl_setopt($ch, CURLOPT_USERAGENT, $useragent ? $useragent : Config::get_user_agent());
@curl_exec($ch);
$ret = curl_getinfo($ch, $header);
@@ -804,15 +879,24 @@ class Af_RedditImgur extends Plugin {
return $ret;
}
- private function get_content_type($url, $useragent = SELF_USER_AGENT) {
+ private function get_content_type(string $url, string $useragent = "") : string {
return $this->get_header($url, CURLINFO_CONTENT_TYPE, $useragent);
}
- private function get_location($url, $useragent = SELF_USER_AGENT) {
+ /*private function get_location(string $url, string $useragent = "") : string {
return $this->get_header($url, CURLINFO_EFFECTIVE_URL, $useragent);
- }
-
- private function readability($article, $url, $doc, $xpath, $debug = false) {
+ }*/
+
+ /**
+ * @param array<string,mixed> $article
+ * @param string $url
+ * @param DOMDocument $doc
+ * @param DOMXPath $xpath
+ * @param bool $debug
+ * @return array<string,mixed>
+ * @throws PDOException
+ */
+ private function readability(array $article, string $url, DOMDocument $doc, DOMXpath $xpath, bool $debug = false) : array {
if (function_exists("curl_init") && $this->host->get($this, "enable_readability") &&
mb_strlen(strip_tags($article["content"])) <= 150) {
@@ -844,7 +928,12 @@ class Af_RedditImgur extends Plugin {
return $article;
}
- private function is_blacklisted($src, $also_blacklist = []) {
+ /**
+ * @param string $src
+ * @param array<string> $also_blacklist
+ * @return bool
+ */
+ private function is_blacklisted(string $src, array $also_blacklist = []) : bool {
$src_domain = parse_url($src, PHP_URL_HOST);
foreach (array_merge($this->domain_blacklist, $also_blacklist) as $domain) {
@@ -860,7 +949,7 @@ class Af_RedditImgur extends Plugin {
return $this->hook_render_article_cdm($article);
}
- private function rewrite_to_teddit($str) {
+ private function rewrite_to_teddit(string $str) : string {
if (strpos($str, "reddit.com") !== false) {
return preg_replace("/https?:\/\/([a-z]+\.)?reddit\.com/", "https://teddit.net", $str);
}
@@ -868,6 +957,17 @@ class Af_RedditImgur extends Plugin {
return $str;
}
+ private function rewrite_to_reddit(string $str) : string {
+ if (strpos($str, "teddit.net") !== false) {
+ $str = preg_replace("/https?:\/\/teddit.net/", "https://reddit.com", $str);
+
+ if (strpos($str, "/.rss") === false)
+ $str .= "/.rss";
+ }
+
+ return $str;
+ }
+
function hook_render_article_cdm($article) {
if ($this->host->get($this, "reddit_to_teddit")) {
$need_saving = false;
diff --git a/plugins/af_youtube_embed/init.php b/plugins/af_youtube_embed/init.php
index 72d25a826..ff44bb291 100644
--- a/plugins/af_youtube_embed/init.php
+++ b/plugins/af_youtube_embed/init.php
@@ -1,6 +1,5 @@
<?php
class Af_Youtube_Embed extends Plugin {
- private $host;
function about() {
return array(null,
@@ -9,8 +8,6 @@ class Af_Youtube_Embed extends Plugin {
}
function init($host) {
- $this->host = $host;
-
$host->add_hook($host::HOOK_RENDER_ENCLOSURE, $this);
$host->add_hook($host::HOOK_IFRAME_WHITELISTED, $this);
}
@@ -21,7 +18,7 @@ class Af_Youtube_Embed extends Plugin {
"youtu.be"]);
}
- function hook_render_enclosure($entry, $hide_images) {
+ function hook_render_enclosure($entry, $id, $rv) {
$url = $entry["content_url"];
@@ -35,6 +32,8 @@ class Af_Youtube_Embed extends Plugin {
</div>";
}
+
+ return "";
}
function api_version() {
diff --git a/plugins/af_zz_vidmute/init.php b/plugins/af_zz_vidmute/init.php
index 30eced5e7..268a2c4ac 100644
--- a/plugins/af_zz_vidmute/init.php
+++ b/plugins/af_zz_vidmute/init.php
@@ -1,6 +1,5 @@
<?php
class Af_Zz_VidMute extends Plugin {
- private $host;
function about() {
return array(null,
@@ -9,7 +8,7 @@ class Af_Zz_VidMute extends Plugin {
}
function init($host) {
- $this->host = $host;
+
}
function get_js() {
@@ -20,4 +19,4 @@ class Af_Zz_VidMute extends Plugin {
return 2;
}
-} \ No newline at end of file
+}
diff --git a/plugins/auth_internal/init.php b/plugins/auth_internal/init.php
index 3f5a2e977..688a0f5d8 100644
--- a/plugins/auth_internal/init.php
+++ b/plugins/auth_internal/init.php
@@ -1,8 +1,6 @@
<?php
class Auth_Internal extends Auth_Base {
- private $host;
-
function about() {
return array(null,
"Authenticates against internal tt-rss database",
@@ -10,13 +8,11 @@ class Auth_Internal extends Auth_Base {
true);
}
- /* @var PluginHost $host */
function init($host) {
- $this->host = $host;
-
$host->add_hook($host::HOOK_AUTH_USER, $this);
}
+ /** @param string $service */
function authenticate($login, $password, $service = '') {
$otp = (int) ($_REQUEST["otp"] ?? 0);
@@ -34,22 +30,6 @@ class Auth_Internal extends Auth_Base {
}
if ($otp) {
-
- /*$base32 = new \OTPHP\Base32();
-
- $secret = $base32->encode(mb_substr(sha1($row["salt"]), 0, 12), false);
- $secret_legacy = $base32->encode(sha1($row["salt"]));
-
- $totp = new \OTPHP\TOTP($secret);
- $otp_check = $totp->now();
-
- $totp_legacy = new \OTPHP\TOTP($secret_legacy);
- $otp_check_legacy = $totp_legacy->now();
-
- if ($otp !== $otp_check && $otp !== $otp_check_legacy) {
- return false;
- } */
-
if ($this->check_password($user_id, $password) && UserHelper::check_otp($user_id, $otp))
return $user_id;
else
@@ -134,48 +114,61 @@ class Auth_Internal extends Auth_Base {
}
if ($login) {
- $try_user_id = $this->find_user_by_login($login);
-
- if ($try_user_id) {
- return $this->check_password($try_user_id, $password);
- }
- }
-
- return false;
- }
-
- function check_password(int $owner_uid, string $password, string $service = '') {
+ $user = ORM::for_table('ttrss_users')
+ ->where('login', $login)
+ ->find_one();
- $user = ORM::for_table('ttrss_users')->find_one($owner_uid);
+ if ($user) {
+ if (get_schema_version() >= 145) {
+ if ($user->last_auth_attempt) {
+ $last_auth_attempt = strtotime($user->last_auth_attempt);
- if ($user) {
+ if ($last_auth_attempt && time() - $last_auth_attempt < Config::get(Config::AUTH_MIN_INTERVAL)) {
+ Logger::log(E_USER_NOTICE, "Too many authentication attempts for {$user->login}, throttled.");
- // don't throttle app passwords
- if (!$service && get_schema_version() >= 145) {
+ // start an empty session to deliver login error message
+ if (session_status() != PHP_SESSION_ACTIVE)
+ session_start();
- if ($user->last_auth_attempt) {
- $last_auth_attempt = strtotime($user->last_auth_attempt);
+ $_SESSION["login_error_msg"] = __("Too many authentication attempts, throttled.");
- if ($last_auth_attempt && time() - $last_auth_attempt < Config::get(Config::AUTH_MIN_INTERVAL)) {
- Logger::log(E_USER_NOTICE, "Too many authentication attempts for {$user->login}, throttled.");
+ $user->last_auth_attempt = Db::NOW();
+ $user->save();
- // start an empty session to deliver login error message
- if (session_status() != PHP_SESSION_ACTIVE)
- session_start();
+ return false;
+ }
+ }
+ }
- $_SESSION["login_error_msg"] = __("Too many authentication attempts, throttled.");
+ $auth_result = $this->check_password($user->id, $password);
+ if ($auth_result) {
+ return $auth_result;
+ } else {
+ if (get_schema_version() >= 145) {
$user->last_auth_attempt = Db::NOW();
$user->save();
-
- return false;
}
}
-
- $user->last_auth_attempt = Db::NOW();
- $user->save();
}
+ }
+ return false;
+ }
+
+ /**
+ * @param int $owner_uid
+ * @param string $password
+ * @param string $service
+ * @return int|false (false if failed, user id otherwise)
+ * @throws PDOException
+ * @throws Exception
+ */
+ function check_password(int $owner_uid, string $password, string $service = '') {
+
+ $user = ORM::for_table('ttrss_users')->find_one($owner_uid);
+
+ if ($user) {
$salt = $user['salt'] ?? "";
$login = $user['login'];
$pwd_hash = $user['pwd_hash'];
@@ -207,7 +200,7 @@ class Auth_Internal extends Auth_Base {
return false;
}
- function change_password($owner_uid, $old_password, $new_password) {
+ function change_password(int $owner_uid, string $old_password, string $new_password) : string {
if ($this->check_password($owner_uid, $old_password)) {
@@ -250,7 +243,15 @@ class Auth_Internal extends Auth_Base {
}
}
- private function check_app_password($login, $password, $service) {
+ /**
+ * @param string $login
+ * @param string $password
+ * @param string $service
+ * @return false|int (false if failed, user id otherwise)
+ * @throws PDOException
+ * @throws Exception
+ */
+ private function check_app_password(string $login, string $password, string $service) {
$sth = $this->pdo->prepare("SELECT p.id, p.pwd_hash, u.id AS uid
FROM ttrss_app_passwords p, ttrss_users u
WHERE p.owner_uid = u.id AND LOWER(u.login) = LOWER(?) AND service = ?");
diff --git a/plugins/auth_remote/init.php b/plugins/auth_remote/init.php
index 3be7aa26e..3203d41fe 100644
--- a/plugins/auth_remote/init.php
+++ b/plugins/auth_remote/init.php
@@ -1,23 +1,29 @@
<?php
class Auth_Remote extends Auth_Base {
- private $host;
+ /** redirect user to this URL after logout; .env:
+ * TTRSS_AUTH_REMOTE_POST_LOGOUT_URL=http://127.0.0.1/logout-redirect
+ */
+ const AUTH_REMOTE_POST_LOGOUT_URL = "AUTH_REMOTE_POST_LOGOUT_URL";
function about() {
return array(null,
- "Authenticates against remote password (e.g. supplied by Apache)",
+ "Authenticates against external passwords (HTTP Authentication, SSL certificates)",
"fox",
true);
}
- /* @var PluginHost $host */
function init($host) {
- $this->host = $host;
-
$host->add_hook($host::HOOK_AUTH_USER, $this);
+
+ Config::add(self::AUTH_REMOTE_POST_LOGOUT_URL, "", Config::T_STRING);
+
+ if (Config::get(self::AUTH_REMOTE_POST_LOGOUT_URL) != "") {
+ $host->add_hook($host::HOOK_POST_LOGOUT, $this);
+ }
}
- function get_login_by_ssl_certificate() {
+ function get_login_by_ssl_certificate() : string {
$cert_serial = Pref_Prefs::_get_ssl_certificate_id();
if ($cert_serial) {
@@ -34,7 +40,7 @@ class Auth_Remote extends Auth_Base {
return "";
}
- function authenticate($login, $password) {
+ function authenticate($login, $password, $service = '') {
$try_login = "";
foreach (["REMOTE_USER", "HTTP_REMOTE_USER", "REDIRECT_REMOTE_USER", "PHP_AUTH_USER"] as $hdr) {
@@ -78,6 +84,12 @@ class Auth_Remote extends Auth_Base {
return false;
}
+ function hook_post_logout($login, $user_id) {
+ return [
+ Config::get(self::AUTH_REMOTE_POST_LOGOUT_URL)
+ ];
+ }
+
function api_version() {
return 2;
}
diff --git a/plugins/auto_assign_labels/init.php b/plugins/auto_assign_labels/init.php
index 786720d95..b2e5718ea 100755
--- a/plugins/auto_assign_labels/init.php
+++ b/plugins/auto_assign_labels/init.php
@@ -1,9 +1,6 @@
<?php
class Auto_Assign_Labels extends Plugin {
- /* @var PluginHost $host */
- private $host;
-
function about() {
return array(null,
"Assign labels automatically based on article title, content, and tags",
@@ -11,12 +8,15 @@ class Auto_Assign_Labels extends Plugin {
}
function init($host) {
- $this->host = $host;
-
$host->add_hook($host::HOOK_ARTICLE_FILTER, $this);
}
- function get_all_labels_filter_format($owner_uid) {
+ /**
+ * @param int $owner_uid
+ * @return array<int, array<int, int|string>>
+ * @throws PDOException
+ */
+ private function get_all_labels_filter_format(int $owner_uid) : array {
$rv = array();
// TODO: use Labels::get_all()
diff --git a/plugins/bookmarklets/init.php b/plugins/bookmarklets/init.php
index 4bd527623..72aeb2c38 100644
--- a/plugins/bookmarklets/init.php
+++ b/plugins/bookmarklets/init.php
@@ -1,5 +1,7 @@
<?php
class Bookmarklets extends Plugin {
+
+ /** @var PluginHost $host */
private $host;
function about() {
@@ -20,7 +22,7 @@ class Bookmarklets extends Plugin {
return in_array($method, ["subscribe", "sharepopup"]);
}
- function subscribe() {
+ function subscribe() : void {
if (Config::get(Config::SINGLE_USER_MODE)) {
UserHelper::login_sequence();
}
@@ -171,7 +173,7 @@ class Bookmarklets extends Plugin {
}
}
- function sharepopup() {
+ function sharepopup() : void {
if (Config::get(Config::SINGLE_USER_MODE)) {
UserHelper::login_sequence();
}
@@ -332,7 +334,6 @@ class Bookmarklets extends Plugin {
<?php
}
-
function hook_prefs_tab($args) {
if ($args != "prefFeeds")
return;
diff --git a/plugins/cache_starred_images/init.php b/plugins/cache_starred_images/init.php
index d94e60504..feec81d62 100755
--- a/plugins/cache_starred_images/init.php
+++ b/plugins/cache_starred_images/init.php
@@ -1,11 +1,17 @@
<?php
class Cache_Starred_Images extends Plugin {
- /* @var PluginHost $host */
+ /** @var PluginHost $host */
private $host;
- /* @var DiskCache $cache */
+
+ /** @var DiskCache $cache */
private $cache;
- private $max_cache_attempts = 5; // per-article
+
+ /** @var DiskCache $cache_status */
+ private $cache_status;
+
+ /** @var int $max_cache_attempts (per article) */
+ private $max_cache_attempts = 5;
function about() {
return array(null,
@@ -16,24 +22,31 @@ class Cache_Starred_Images extends Plugin {
function init($host) {
$this->host = $host;
$this->cache = new DiskCache("starred-images");
+ $this->cache_status = new DiskCache("starred-images.status-files");
if ($this->cache->make_dir())
chmod($this->cache->get_dir(), 0777);
+ if ($this->cache_status->make_dir())
+ chmod($this->cache_status->get_dir(), 0777);
+
if (!$this->cache->exists(".no-auto-expiry"))
$this->cache->touch(".no-auto-expiry");
- if ($this->cache->is_writable()) {
+ if (!$this->cache_status->exists(".no-auto-expiry"))
+ $this->cache_status->touch(".no-auto-expiry");
+
+ if ($this->cache->is_writable() && $this->cache_status->is_writable()) {
$host->add_hook($host::HOOK_HOUSE_KEEPING, $this);
$host->add_hook($host::HOOK_ENCLOSURE_ENTRY, $this);
$host->add_hook($host::HOOK_SANITIZE, $this);
} else {
- user_error("Starred cache directory ".$this->cache->get_dir()." is not writable.", E_USER_WARNING);
+ user_error("Starred cache directory ".$this->cache->get_dir()." (or status cache subdir in status-files/) is not writable.", E_USER_WARNING);
}
}
+ /** since HOOK_UPDATE_TASK is not available to user plugins, this hook is a next best thing */
function hook_house_keeping() {
- /* since HOOK_UPDATE_TASK is not available to user plugins, this hook is a next best thing */
Debug::log("caching media of starred articles for user " . $this->host->get_owner_uid() . "...");
@@ -53,7 +66,7 @@ class Cache_Starred_Images extends Plugin {
$usth = $this->pdo->prepare("UPDATE ttrss_entries SET plugin_data = ? WHERE id = ?");
while ($line = $sth->fetch()) {
- Debug::log("processing article " . $line["title"], Debug::$LOG_VERBOSE);
+ Debug::log("processing article " . $line["title"], Debug::LOG_VERBOSE);
if ($line["site_url"]) {
$success = $this->cache_article_images($line["content"], $line["site_url"], $line["owner_uid"], $line["id"]);
@@ -69,12 +82,14 @@ class Cache_Starred_Images extends Plugin {
/* actual housekeeping */
- Debug::log("expiring " . $this->cache->get_dir() . "...");
+ Debug::log("expiring {$this->cache->get_dir()} and {$this->cache_status->get_dir()}...");
$files = array_merge(
- glob($this->cache->get_dir() . "/*.png"),
- glob($this->cache->get_dir() . "/*.mp4"),
- glob($this->cache->get_dir() . "/*.status"));
+ glob($this->cache->get_dir() . "/*-*"),
+ glob($this->cache_status->get_dir() . "/*.status")
+ );
+
+ asort($files);
$last_article_id = 0;
$article_exists = 1;
@@ -97,7 +112,7 @@ class Cache_Starred_Images extends Plugin {
}
}
- function hook_enclosure_entry($enc, $article_id) {
+ function hook_enclosure_entry($enc, $article_id, $rv) {
$local_filename = $article_id . "-" . sha1($enc["content_url"]);
if ($this->cache->exists($local_filename)) {
@@ -115,7 +130,7 @@ class Cache_Starred_Images extends Plugin {
foreach ($entries as $entry) {
if ($entry->hasAttribute('src')) {
- $src = rewrite_relative_url($site_url, $entry->getAttribute('src'));
+ $src = UrlHelper::rewrite_relative($site_url, $entry->getAttribute('src'));
$local_filename = $article_id . "-" . sha1($src);
@@ -130,11 +145,11 @@ class Cache_Starred_Images extends Plugin {
return $doc;
}
- private function cache_url($article_id, $url) {
+ private function cache_url(int $article_id, string $url) : bool {
$local_filename = $article_id . "-" . sha1($url);
if (!$this->cache->exists($local_filename)) {
- Debug::log("cache_images: downloading: $url to $local_filename", Debug::$LOG_VERBOSE);
+ Debug::log("cache_images: downloading: $url to $local_filename", Debug::LOG_VERBOSE);
$data = UrlHelper::fetch(["url" => $url, "max_size" => Config::get(Config::MAX_CACHE_FILE_SIZE)]);
@@ -150,19 +165,19 @@ class Cache_Starred_Images extends Plugin {
return false;
}
- private function cache_article_images($content, $site_url, $owner_uid, $article_id) {
+ private function cache_article_images(string $content, string $site_url, int $owner_uid, int $article_id) : bool {
$status_filename = $article_id . "-" . sha1($site_url) . ".status";
/* housekeeping might run as a separate user, in this case status/media might not be writable */
- if (!$this->cache->is_writable($status_filename)) {
- Debug::log("status not writable: $status_filename", Debug::$LOG_VERBOSE);
+ if (!$this->cache_status->is_writable($status_filename)) {
+ Debug::log("status not writable: $status_filename", Debug::LOG_VERBOSE);
return false;
}
- Debug::log("status: $status_filename", Debug::$LOG_VERBOSE);
+ Debug::log("status: $status_filename", Debug::LOG_VERBOSE);
- if ($this->cache->exists($status_filename))
- $status = json_decode($this->cache->get($status_filename), true);
+ if ($this->cache_status->exists($status_filename))
+ $status = json_decode($this->cache_status->get($status_filename), true);
else
$status = ["attempt" => 0];
@@ -170,11 +185,11 @@ class Cache_Starred_Images extends Plugin {
// only allow several download attempts for article
if ($status["attempt"] > $this->max_cache_attempts) {
- Debug::log("too many attempts for $site_url", Debug::$LOG_VERBOSE);
+ Debug::log("too many attempts for $site_url", Debug::LOG_VERBOSE);
return false;
}
- if (!$this->cache->put($status_filename, json_encode($status))) {
+ if (!$this->cache_status->put($status_filename, json_encode($status))) {
user_error("unable to write status file: $status_filename", E_USER_WARNING);
return false;
}
@@ -194,7 +209,7 @@ class Cache_Starred_Images extends Plugin {
$has_images = true;
- $src = rewrite_relative_url($site_url, $entry->getAttribute('src'));
+ $src = UrlHelper::rewrite_relative($site_url, $entry->getAttribute('src'));
if ($this->cache_url($article_id, $src)) {
$success = true;
@@ -210,7 +225,7 @@ class Cache_Starred_Images extends Plugin {
while ($enc = $esth->fetch()) {
$has_images = true;
- $url = rewrite_relative_url($site_url, $enc["content_url"]);
+ $url = UrlHelper::rewrite_relative($site_url, $enc["content_url"]);
if ($this->cache_url($article_id, $url)) {
$success = true;
diff --git a/plugins/hotkeys_force_top/init.php b/plugins/hotkeys_force_top/init.php
index 9c17307bd..3b0844fa7 100644
--- a/plugins/hotkeys_force_top/init.php
+++ b/plugins/hotkeys_force_top/init.php
@@ -1,7 +1,5 @@
<?php
class Hotkeys_Force_Top extends Plugin {
- private $host;
-
function about() {
return array(null,
"Force open article to the top",
@@ -9,7 +7,6 @@ class Hotkeys_Force_Top extends Plugin {
}
function init($host) {
- $this->host = $host;
}
diff --git a/plugins/hotkeys_noscroll/init.php b/plugins/hotkeys_noscroll/init.php
index 320847827..cc734941f 100644
--- a/plugins/hotkeys_noscroll/init.php
+++ b/plugins/hotkeys_noscroll/init.php
@@ -1,7 +1,5 @@
<?php
class Hotkeys_Noscroll extends Plugin {
- private $host;
-
function about() {
return array(null,
"n/p (and up/down) hotkeys move between articles without scrolling",
@@ -9,8 +7,6 @@ class Hotkeys_Noscroll extends Plugin {
}
function init($host) {
- $this->host = $host;
-
$host->add_hook($host::HOOK_HOTKEY_MAP, $this);
}
diff --git a/plugins/hotkeys_swap_jk/init.php b/plugins/hotkeys_swap_jk/init.php
index ff45a65e4..a365b777f 100644
--- a/plugins/hotkeys_swap_jk/init.php
+++ b/plugins/hotkeys_swap_jk/init.php
@@ -1,8 +1,6 @@
<?php
class Hotkeys_Swap_JK extends Plugin {
- private $host;
-
function about() {
return array(null,
"Swap j and k hotkeys (for vi brethren)",
@@ -10,8 +8,6 @@ class Hotkeys_Swap_JK extends Plugin {
}
function init($host) {
- $this->host = $host;
-
$host->add_hook($host::HOOK_HOTKEY_MAP, $this);
}
diff --git a/plugins/no_iframes/init.php b/plugins/no_iframes/init.php
index a8cef74ee..dc297b60e 100644
--- a/plugins/no_iframes/init.php
+++ b/plugins/no_iframes/init.php
@@ -1,6 +1,5 @@
<?php
class No_Iframes extends Plugin {
- private $host;
function about() {
return array(null,
@@ -9,12 +8,10 @@ class No_Iframes extends Plugin {
}
function init($host) {
- $this->host = $host;
-
$host->add_hook($host::HOOK_SANITIZE, $this);
}
- function hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes) {
+ function hook_sanitize($doc, $site_url, $allowed_elements, $disallowed_attributes, $article_id) {
$xpath = new DOMXpath($doc);
$entries = $xpath->query('//iframe');
diff --git a/plugins/note/init.php b/plugins/note/init.php
index f95ba9fa8..65f7e04e9 100644
--- a/plugins/note/init.php
+++ b/plugins/note/init.php
@@ -1,9 +1,6 @@
<?php
class Note extends Plugin {
- /* @var PluginHost $host */
- private $host;
-
function about() {
return array(null,
"Adds support for setting article notes",
@@ -11,8 +8,6 @@ class Note extends Plugin {
}
function init($host) {
- $this->host = $host;
-
$host->add_hook($host::HOOK_ARTICLE_BUTTON, $this);
}
@@ -20,13 +15,16 @@ class Note extends Plugin {
return file_get_contents(__DIR__ . "/note.js");
}
+ function get_css() {
+ return file_get_contents(__DIR__ . "/note.css");
+ }
function hook_article_button($line) {
return "<i class='material-icons' onclick=\"Plugins.Note.edit(".$line["id"].")\"
- style='cursor : pointer' title='".__('Edit article note')."'>note</i>";
+ style='cursor : pointer' title=\"".__('Edit article note')."\">note</i>";
}
- function edit() {
+ function edit() : void {
$id = clean($_REQUEST['id']);
$sth = $this->pdo->prepare("SELECT note FROM ttrss_user_entries WHERE
@@ -54,7 +52,7 @@ class Note extends Plugin {
<?php
}
- function setNote() {
+ function setNote() : void {
$id = (int)clean($_REQUEST["id"]);
$note = clean($_REQUEST["note"]);
diff --git a/plugins/note/note.css b/plugins/note/note.css
new file mode 100644
index 000000000..6bef7a877
--- /dev/null
+++ b/plugins/note/note.css
@@ -0,0 +1,3 @@
+.article-note[data-note-for] {
+ cursor : pointer;
+}
diff --git a/plugins/note/note.js b/plugins/note/note.js
index a46acb355..00deb0543 100644
--- a/plugins/note/note.js
+++ b/plugins/note/note.js
@@ -1,41 +1,57 @@
-/* global dojo, Plugins, xhr, App, Notify, fox, __ */
-
-Plugins.Note = {
- edit: function(id) {
- const dialog = new fox.SingleUseDialog({
- title: __("Edit article note"),
- execute: function () {
- if (this.validate()) {
- Notify.progress("Saving article note...", true);
-
- xhr.json("backend.php", this.attr('value'), (reply) => {
- Notify.close();
- dialog.hide();
-
- if (reply) {
- App.findAll(`div[data-note-for="${reply.id}"]`).forEach((elem) => {
- elem.querySelector(".body").innerHTML = reply.note;
-
- if (reply.note)
- elem.show();
- else
- elem.hide();
+/* global require, Plugins, PluginHost, xhr, App, Notify, fox, __ */
+
+require(['dojo/_base/kernel', 'dojo/ready'], function (dojo, ready) {
+ ready(function() {
+
+ Plugins.Note = {
+ set_click_handler: function() {
+ App.findAll(".article-note[data-note-for]").forEach((note) => {
+ note.onclick = function() {
+ Plugins.Note.edit(this.getAttribute('data-note-for'));
+ }
+ });
+ },
+ edit: function(id) {
+ const dialog = new fox.SingleUseDialog({
+ title: __("Edit article note"),
+ execute: function () {
+ if (this.validate()) {
+ Notify.progress("Saving article note...", true);
+
+ xhr.json("backend.php", this.attr('value'), (reply) => {
+ Notify.close();
+ dialog.hide();
+
+ if (reply) {
+ App.findAll(`div[data-note-for="${reply.id}"]`).forEach((elem) => {
+ elem.querySelector(".body").innerHTML = reply.note;
+
+ if (reply.note)
+ elem.show();
+ else
+ elem.hide();
+ });
+ }
});
}
+ },
+ content: __("Loading, please wait...")
+ });
+
+ const tmph = dojo.connect(dialog, 'onShow', function () {
+ dojo.disconnect(tmph);
+
+ xhr.post("backend.php", App.getPhArgs("note", "edit", {id: id}), (reply) => {
+ dialog.attr('content', reply);
});
- }
- },
- content: __("Loading, please wait...")
- });
+ });
- const tmph = dojo.connect(dialog, 'onShow', function () {
- dojo.disconnect(tmph);
+ dialog.show();
+ }
+ };
- xhr.post("backend.php", App.getPhArgs("note", "edit", {id: id}), (reply) => {
- dialog.attr('content', reply);
- });
+ PluginHost.register(PluginHost.HOOK_HEADLINES_RENDERED, () => {
+ Plugins.Note.set_click_handler();
});
-
- dialog.show();
- }
-};
+ });
+});
diff --git a/plugins/nsfw/init.php b/plugins/nsfw/init.php
index fc38fef71..a349ceac0 100644
--- a/plugins/nsfw/init.php
+++ b/plugins/nsfw/init.php
@@ -1,5 +1,7 @@
<?php
class NSFW extends Plugin {
+
+ /** @var PluginHost $host */
private $host;
function about() {
@@ -31,7 +33,12 @@ class NSFW extends Plugin {
}
}
- private function rewrite_contents($article) {
+ /**
+ * @param array<string, mixed> $article
+ * @return array<string,mixed>
+ * @throws PDOException
+ */
+ private function rewrite_contents(array $article) : array {
$tags = explode(",", $this->host->get($this, "tags"));
$article_tags = $article["tags"];
@@ -101,7 +108,7 @@ class NSFW extends Plugin {
<?php
}
- function save() {
+ function save() : void {
$tags = implode(", ",
FeedItem_Common::normalize_categories(explode(",", $_POST["tags"] ?? "")));
diff --git a/plugins/share/init.php b/plugins/share/init.php
index 359d86802..62869bfb1 100644
--- a/plugins/share/init.php
+++ b/plugins/share/init.php
@@ -1,5 +1,6 @@
<?php
class Share extends Plugin {
+ /** @var PluginHost $host */
private $host;
function about() {
@@ -8,7 +9,6 @@ class Share extends Plugin {
"fox");
}
- /* @var PluginHost $host */
function init($host) {
$this->host = $host;
@@ -32,6 +32,7 @@ class Share extends Plugin {
return file_get_contents(__DIR__ . "/share_prefs.js");
}
+ /** @return void */
function unshare() {
$id = $_REQUEST['id'];
@@ -42,6 +43,9 @@ class Share extends Plugin {
print __("Article unshared");
}
+ /**
+ * @param string $id
+ * @return void */
function hook_prefs_tab_section($id) {
if ($id == "prefFeedsPublishedGenerated") {
?>
@@ -56,6 +60,7 @@ class Share extends Plugin {
}
}
+ /** @return void */
function clearArticleKeys() {
$sth = $this->pdo->prepare("UPDATE ttrss_user_entries SET uuid = '' WHERE
owner_uid = ?");
@@ -64,6 +69,7 @@ class Share extends Plugin {
print __("Shared URLs cleared.");
}
+ /** @return void */
function newkey() {
$id = $_REQUEST['id'];
$uuid = uniqid_short();
@@ -75,14 +81,19 @@ class Share extends Plugin {
print json_encode(["link" => $uuid]);
}
+ /**
+ * @param array<string,mixed> $line
+ *
+ * @return string */
function hook_article_button($line) {
$icon_class = !empty($line['uuid']) ? "is-shared" : "";
return "<i class='material-icons icon-share share-icon-".$line['int_id']." $icon_class'
style='cursor : pointer' onclick=\"Plugins.Share.shareArticle(".$line['int_id'].")\"
- title='".__('Share by URL')."'>link</i>";
+ title=\"".__('Share by URL')."\">link</i>";
}
+ /** @return void */
function get() {
$uuid = clean($_REQUEST["key"] ?? "");
@@ -107,7 +118,7 @@ class Share extends Plugin {
print "Article not found.";
}
- private function format_article($id, $owner_uid) {
+ private function format_article(int $id, int $owner_uid) : void {
$pdo = Db::pdo();
@@ -133,7 +144,7 @@ class Share extends Plugin {
$line["content"] = Sanitizer::sanitize($line["content"],
$line['hide_images'],
- $owner_uid, $line["site_url"], false, $line["id"]);
+ $owner_uid, $line["site_url"], null, $line["id"]);
PluginHost::getInstance()->chain_hooks_callback(PluginHost::HOOK_RENDER_ARTICLE,
function ($result) use (&$line) {
@@ -183,10 +194,7 @@ class Share extends Plugin {
strip_tags($content_decoded)
)
), 500, "...")) ?>">
-
- <?php if ($og_image) { ?>
- <meta property='og:image' content="<?= htmlspecialchars($og_image) ?>">
- <?php } ?>
+ <meta property='og:image' content="<?= htmlspecialchars($og_image) ?>">
</head>
<body class='flat ttrss_utility ttrss_zoom css_loading'>
@@ -231,6 +239,7 @@ class Share extends Plugin {
}
}
+ /** @return void */
function shareDialog() {
$id = (int)clean($_REQUEST['id'] ?? 0);
@@ -276,6 +285,7 @@ class Share extends Plugin {
<?php
}
+ /** @return int */
function api_version() {
return 2;
}
diff --git a/plugins/shorten_expanded/init.php b/plugins/shorten_expanded/init.php
index c097f1a0d..26208734e 100644
--- a/plugins/shorten_expanded/init.php
+++ b/plugins/shorten_expanded/init.php
@@ -1,6 +1,5 @@
<?php
class Shorten_Expanded extends Plugin {
- private $host;
function about() {
return array(null,
@@ -9,7 +8,7 @@ class Shorten_Expanded extends Plugin {
}
function init($host) {
- $this->host = $host;
+
}
function get_css() {
diff --git a/plugins/toggle_sidebar/init.php b/plugins/toggle_sidebar/init.php
index a6c919e03..312c7f11c 100644
--- a/plugins/toggle_sidebar/init.php
+++ b/plugins/toggle_sidebar/init.php
@@ -1,8 +1,6 @@
<?php
class Toggle_Sidebar extends Plugin {
- private $host;
-
function about() {
return array(null,
"Adds a main toolbar button to toggle sidebar",
@@ -10,8 +8,6 @@ class Toggle_Sidebar extends Plugin {
}
function init($host) {
- $this->host = $host;
-
$host->add_hook($host::HOOK_MAIN_TOOLBAR_BUTTON, $this);
}
diff --git a/prefs.php b/prefs.php
index 14820f707..84d89f914 100644
--- a/prefs.php
+++ b/prefs.php
@@ -148,7 +148,7 @@
style="padding : 0px"
href="backend.php?op=pref-labels"
title="<i class='material-icons'>label_outline1</i> <?= __('Labels') ?>"></div>
- <?php if ($_SESSION["access_level"] >= 10) { ?>
+ <?php if ($_SESSION["access_level"] >= UserHelper::ACCESS_LEVEL_ADMIN) { ?>
<div id="usersTab" dojoType="dijit.layout.ContentPane"
style="padding : 0px"
href="backend.php?op=pref-users"
diff --git a/sql/mysql/migrations/146.sql b/sql/mysql/migrations/146.sql
new file mode 100644
index 000000000..6d4824727
--- /dev/null
+++ b/sql/mysql/migrations/146.sql
@@ -0,0 +1,2 @@
+insert into ttrss_filter_actions (id,name,description) values (10, 'ignore-tag',
+ 'Ignore tags');
diff --git a/sql/mysql/schema.sql b/sql/mysql/schema.sql
index d8e6e270a..589d1013a 100644
--- a/sql/mysql/schema.sql
+++ b/sql/mysql/schema.sql
@@ -149,9 +149,6 @@ create table ttrss_feeds (id integer not null auto_increment primary key,
foreign key (parent_feed) references ttrss_feeds(id) ON DELETE SET NULL,
unique(feed_url(255), owner_uid)) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
-insert into ttrss_feeds (owner_uid, title, feed_url) values
- ((select id from ttrss_users where login = 'admin'), 'Tiny Tiny RSS: Forum', 'https://tt-rss.org/forum/rss.php');
-
create table ttrss_entries (id integer not null primary key auto_increment,
title text not null,
guid varchar(255) not null unique,
@@ -252,6 +249,9 @@ insert into ttrss_filter_actions (id,name,description) values (8, 'stop',
insert into ttrss_filter_actions (id,name,description) values (9, 'plugin',
'Invoke plugin');
+insert into ttrss_filter_actions (id,name,description) values (10, 'ignore-tag',
+ 'Ignore tags');
+
create table ttrss_filters2(id integer primary key auto_increment,
owner_uid integer not null,
match_any_rule boolean not null default false,
diff --git a/sql/pgsql/migrations/146.sql b/sql/pgsql/migrations/146.sql
new file mode 100644
index 000000000..6d4824727
--- /dev/null
+++ b/sql/pgsql/migrations/146.sql
@@ -0,0 +1,2 @@
+insert into ttrss_filter_actions (id,name,description) values (10, 'ignore-tag',
+ 'Ignore tags');
diff --git a/sql/pgsql/schema.sql b/sql/pgsql/schema.sql
index 50bf375f2..938ccc905 100644
--- a/sql/pgsql/schema.sql
+++ b/sql/pgsql/schema.sql
@@ -118,9 +118,6 @@ create table ttrss_feeds (id serial not null primary key,
create index ttrss_feeds_owner_uid_index on ttrss_feeds(owner_uid);
create index ttrss_feeds_cat_id_idx on ttrss_feeds(cat_id);
-insert into ttrss_feeds (owner_uid, title, feed_url) values
- ((select id from ttrss_users where login = 'admin'), 'Tiny Tiny RSS: Forum', 'https://tt-rss.org/forum/rss.php');
-
create table ttrss_archived_feeds (id integer not null primary key,
owner_uid integer not null references ttrss_users(id) on delete cascade,
created timestamp not null,
@@ -248,6 +245,9 @@ insert into ttrss_filter_actions (id,name,description) values (8, 'stop',
insert into ttrss_filter_actions (id,name,description) values (9, 'plugin',
'Invoke plugin');
+insert into ttrss_filter_actions (id,name,description) values (10, 'ignore-tag',
+ 'Ignore tags');
+
create table ttrss_filters2(id serial not null primary key,
owner_uid integer not null references ttrss_users(id) on delete cascade,
match_any_rule boolean not null default false,
diff --git a/tests/UrlHelperTest.php b/tests/UrlHelperTest.php
new file mode 100644
index 000000000..fe4eb5db2
--- /dev/null
+++ b/tests/UrlHelperTest.php
@@ -0,0 +1,54 @@
+<?php
+
+use PHPUnit\Framework\TestCase;
+
+final class UrlHelperTest extends TestCase {
+ public function test_rewrite_relative(): void {
+ // protocol-neutral URL
+ $this->assertEquals(
+ 'https://example.com/example.html',
+ UrlHelper::rewrite_relative('http://example.com/example/', '//example.com/example.html')
+ );
+
+ // magnet allowed because it's a href attribute
+ $this->assertEquals(
+ 'magnet:?xt=urn:btih:...',
+ UrlHelper::rewrite_relative('http://example.com/example/',
+ 'magnet:?xt=urn:btih:...',
+ "a", "href", "")
+ );
+
+ // disallowed magnet
+ $this->assertEquals(
+ 'http://example.com?xt=urn:btih:...',
+ UrlHelper::rewrite_relative('http://example.com/example/',
+ 'magnet:?xt=urn:btih:...')
+ );
+
+ $this->assertEquals(
+ 'https://apod.nasa.gov/apod/image/2203/Road2Stars_EsoHoralek_1080.jpg',
+ UrlHelper::rewrite_relative('https://apod.nasa.gov/apod/ap220315.html', 'image/2203/Road2Stars_EsoHoralek_1080.jpg')
+ );
+
+ $this->assertEquals(
+ 'https://apod.nasa.gov/apod/image/2203/Road2Stars_EsoHoralek_1080.jpg',
+ UrlHelper::rewrite_relative('https://apod.nasa.gov/apod/ap220315.html', './image/2203/Road2Stars_EsoHoralek_1080.jpg')
+ );
+
+ $this->assertEquals(
+ 'http://example.com/test/url',
+ UrlHelper::rewrite_relative('http://example.com/test/url', '')
+ );
+
+ $this->assertEquals(
+ 'http://www.example.com/test',
+ UrlHelper::rewrite_relative('http://www.example2.com ', 'http://www.example.com/test')
+ );
+
+ $this->assertEquals(
+ 'http://www.example.com/test',
+ UrlHelper::rewrite_relative('http://www.example.com/test2 ', 'http://www.example.com/test')
+ );
+
+ }
+}
diff --git a/tests/autoload.php b/tests/autoload.php
new file mode 100644
index 000000000..1fb33424e
--- /dev/null
+++ b/tests/autoload.php
@@ -0,0 +1,6 @@
+<?php
+ set_include_path(dirname(__DIR__) ."/include" . PATH_SEPARATOR .
+ get_include_path());
+
+ require_once "autoload.php";
+ require_once "functions.php";
diff --git a/themes/Makefile b/themes/Makefile
deleted file mode 100644
index b9298207c..000000000
--- a/themes/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-.PHONY: clean
-
-ALL: compact.css compact_night.css light.css night_blue.css night.css
-
-%.css: %.less light/*.less
- lessc --source-map=$(patsubst %.less,%.css.map,${<}) ${<} ${@}
-
-clean:
- rm -f *.css *.css.map
diff --git a/themes/compact.css b/themes/compact.css
index fc63f5f77..11e05550d 100644
--- a/themes/compact.css
+++ b/themes/compact.css
@@ -43,6 +43,7 @@ body.ttrss_main .post .header {
body.ttrss_main .post .header .left,
body.ttrss_main .post .header .right {
display: flex;
+ align-items: center;
}
body.ttrss_main .post .header .row {
display: flex;
@@ -690,7 +691,7 @@ body.ttrss_main #headlines-frame[data-is-vfeed="false"] .hl .icon-feed {
display: none;
}
body.ttrss_main #headlines-frame[data-auto-catchup="true"] #headlines-spacer {
- height: 100vh;
+ height: calc(100vh - 32px);
}
body.ttrss_main #headlines-frame .dijitCheckBox {
margin-right: 4px;
@@ -896,6 +897,9 @@ body.ttrss_main select.attachments {
margin-top: 10px;
max-width: 120px;
}
+body.ttrss_main .attachments-inline a {
+ word-break: break-all;
+}
body.ttrss_main #filterDlg_feeds select {
height: 150px;
width: 410px;
@@ -1257,6 +1261,7 @@ body.ttrss_utility hr {
}
.cdm .header .titleWrap {
flex-grow: 2;
+ width: 0;
}
.cdm .header .updated {
color: #555;
@@ -1268,22 +1273,17 @@ body.ttrss_utility hr {
margin: 0px 4px;
}
.cdm .header .feed {
- float: right;
font-weight: normal;
font-style: italic;
-}
-.cdm .header .feed a {
- border-radius: 4px;
+ font-size: 11px;
display: inline-block;
- padding: 1px 4px 1px 4px;
-}
-.cdm .header .feed,
-.cdm .header .feed a {
- vertical-align: middle;
+ max-width: 25%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ border-radius: 4px;
+ padding: 1px 4px;
+ margin-right: 4px;
color: #555;
- font-weight: normal;
- font-style: italic;
- font-size: 11px;
}
.cdm .header .author {
white-space: nowrap;
@@ -1302,9 +1302,20 @@ body.ttrss_utility hr {
.cdm .footer i.material-icons {
color: #777;
}
+.cdm .footer .left,
+.cdm .footer .right {
+ display: flex;
+ align-items: center;
+}
.cdm .footer .left {
flex-grow: 2;
}
+.cdm .footer .left > * {
+ margin-right: 4px;
+}
+.cdm .footer .right > * {
+ margin-left: 4px;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
@@ -1467,8 +1478,7 @@ body.ttrss_utility hr {
box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);
border: 0 solid #ddd;
border-bottom-width: 1px;
- background: white ! important;
- opacity: 0.9;
+ background: rgba(255, 255, 255, 0.9) ! important;
backdrop-filter: blur(6px);
}
body.ttrss_prefs {
diff --git a/themes/compact_night.css b/themes/compact_night.css
index 3fd4d2e43..caaea832b 100644
--- a/themes/compact_night.css
+++ b/themes/compact_night.css
@@ -43,6 +43,7 @@ body.ttrss_main .post .header {
body.ttrss_main .post .header .left,
body.ttrss_main .post .header .right {
display: flex;
+ align-items: center;
}
body.ttrss_main .post .header .row {
display: flex;
@@ -690,7 +691,7 @@ body.ttrss_main #headlines-frame[data-is-vfeed="false"] .hl .icon-feed {
display: none;
}
body.ttrss_main #headlines-frame[data-auto-catchup="true"] #headlines-spacer {
- height: 100vh;
+ height: calc(100vh - 32px);
}
body.ttrss_main #headlines-frame .dijitCheckBox {
margin-right: 4px;
@@ -896,6 +897,9 @@ body.ttrss_main select.attachments {
margin-top: 10px;
max-width: 120px;
}
+body.ttrss_main .attachments-inline a {
+ word-break: break-all;
+}
body.ttrss_main #filterDlg_feeds select {
height: 150px;
width: 410px;
@@ -1257,6 +1261,7 @@ body.ttrss_utility hr {
}
.cdm .header .titleWrap {
flex-grow: 2;
+ width: 0;
}
.cdm .header .updated {
color: #ccc;
@@ -1268,22 +1273,17 @@ body.ttrss_utility hr {
margin: 0px 4px;
}
.cdm .header .feed {
- float: right;
font-weight: normal;
font-style: italic;
-}
-.cdm .header .feed a {
- border-radius: 4px;
+ font-size: 11px;
display: inline-block;
- padding: 1px 4px 1px 4px;
-}
-.cdm .header .feed,
-.cdm .header .feed a {
- vertical-align: middle;
+ max-width: 25%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ border-radius: 4px;
+ padding: 1px 4px;
+ margin-right: 4px;
color: #ccc;
- font-weight: normal;
- font-style: italic;
- font-size: 11px;
}
.cdm .header .author {
white-space: nowrap;
@@ -1302,9 +1302,20 @@ body.ttrss_utility hr {
.cdm .footer i.material-icons {
color: #999;
}
+.cdm .footer .left,
+.cdm .footer .right {
+ display: flex;
+ align-items: center;
+}
.cdm .footer .left {
flex-grow: 2;
}
+.cdm .footer .left > * {
+ margin-right: 4px;
+}
+.cdm .footer .right > * {
+ margin-left: 4px;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
@@ -1467,8 +1478,7 @@ body.ttrss_utility hr {
box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);
border: 0 solid #222;
border-bottom-width: 1px;
- background: #333 ! important;
- opacity: 0.9;
+ background: rgba(51, 51, 51, 0.9) ! important;
backdrop-filter: blur(6px);
}
body.ttrss_prefs {
diff --git a/themes/light-high-contrast.css b/themes/light-high-contrast.css
index 7ff872a59..a8a7cab12 100644
--- a/themes/light-high-contrast.css
+++ b/themes/light-high-contrast.css
@@ -43,6 +43,7 @@ body.ttrss_main .post .header {
body.ttrss_main .post .header .left,
body.ttrss_main .post .header .right {
display: flex;
+ align-items: center;
}
body.ttrss_main .post .header .row {
display: flex;
@@ -690,7 +691,7 @@ body.ttrss_main #headlines-frame[data-is-vfeed="false"] .hl .icon-feed {
display: none;
}
body.ttrss_main #headlines-frame[data-auto-catchup="true"] #headlines-spacer {
- height: 100vh;
+ height: calc(100vh - 32px);
}
body.ttrss_main #headlines-frame .dijitCheckBox {
margin-right: 4px;
@@ -896,6 +897,9 @@ body.ttrss_main select.attachments {
margin-top: 10px;
max-width: 120px;
}
+body.ttrss_main .attachments-inline a {
+ word-break: break-all;
+}
body.ttrss_main #filterDlg_feeds select {
height: 150px;
width: 410px;
@@ -1257,6 +1261,7 @@ body.ttrss_utility hr {
}
.cdm .header .titleWrap {
flex-grow: 2;
+ width: 0;
}
.cdm .header .updated {
color: black;
@@ -1268,22 +1273,17 @@ body.ttrss_utility hr {
margin: 0px 4px;
}
.cdm .header .feed {
- float: right;
font-weight: normal;
font-style: italic;
-}
-.cdm .header .feed a {
- border-radius: 4px;
+ font-size: 11px;
display: inline-block;
- padding: 1px 4px 1px 4px;
-}
-.cdm .header .feed,
-.cdm .header .feed a {
- vertical-align: middle;
+ max-width: 25%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ border-radius: 4px;
+ padding: 1px 4px;
+ margin-right: 4px;
color: black;
- font-weight: normal;
- font-style: italic;
- font-size: 11px;
}
.cdm .header .author {
white-space: nowrap;
@@ -1302,9 +1302,20 @@ body.ttrss_utility hr {
.cdm .footer i.material-icons {
color: #777;
}
+.cdm .footer .left,
+.cdm .footer .right {
+ display: flex;
+ align-items: center;
+}
.cdm .footer .left {
flex-grow: 2;
}
+.cdm .footer .left > * {
+ margin-right: 4px;
+}
+.cdm .footer .right > * {
+ margin-left: 4px;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
@@ -1467,8 +1478,7 @@ body.ttrss_utility hr {
box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);
border: 0 solid #ddd;
border-bottom-width: 1px;
- background: white ! important;
- opacity: 0.9;
+ background: rgba(255, 255, 255, 0.9) ! important;
backdrop-filter: blur(6px);
}
body.ttrss_prefs {
diff --git a/themes/light.css b/themes/light.css
index f983f4d80..7da617d43 100644
--- a/themes/light.css
+++ b/themes/light.css
@@ -43,6 +43,7 @@ body.ttrss_main .post .header {
body.ttrss_main .post .header .left,
body.ttrss_main .post .header .right {
display: flex;
+ align-items: center;
}
body.ttrss_main .post .header .row {
display: flex;
@@ -690,7 +691,7 @@ body.ttrss_main #headlines-frame[data-is-vfeed="false"] .hl .icon-feed {
display: none;
}
body.ttrss_main #headlines-frame[data-auto-catchup="true"] #headlines-spacer {
- height: 100vh;
+ height: calc(100vh - 32px);
}
body.ttrss_main #headlines-frame .dijitCheckBox {
margin-right: 4px;
@@ -896,6 +897,9 @@ body.ttrss_main select.attachments {
margin-top: 10px;
max-width: 120px;
}
+body.ttrss_main .attachments-inline a {
+ word-break: break-all;
+}
body.ttrss_main #filterDlg_feeds select {
height: 150px;
width: 410px;
@@ -1257,6 +1261,7 @@ body.ttrss_utility hr {
}
.cdm .header .titleWrap {
flex-grow: 2;
+ width: 0;
}
.cdm .header .updated {
color: #555;
@@ -1268,22 +1273,17 @@ body.ttrss_utility hr {
margin: 0px 4px;
}
.cdm .header .feed {
- float: right;
font-weight: normal;
font-style: italic;
-}
-.cdm .header .feed a {
- border-radius: 4px;
+ font-size: 11px;
display: inline-block;
- padding: 1px 4px 1px 4px;
-}
-.cdm .header .feed,
-.cdm .header .feed a {
- vertical-align: middle;
+ max-width: 25%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ border-radius: 4px;
+ padding: 1px 4px;
+ margin-right: 4px;
color: #555;
- font-weight: normal;
- font-style: italic;
- font-size: 11px;
}
.cdm .header .author {
white-space: nowrap;
@@ -1302,9 +1302,20 @@ body.ttrss_utility hr {
.cdm .footer i.material-icons {
color: #777;
}
+.cdm .footer .left,
+.cdm .footer .right {
+ display: flex;
+ align-items: center;
+}
.cdm .footer .left {
flex-grow: 2;
}
+.cdm .footer .left > * {
+ margin-right: 4px;
+}
+.cdm .footer .right > * {
+ margin-left: 4px;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
@@ -1467,8 +1478,7 @@ body.ttrss_utility hr {
box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);
border: 0 solid #ddd;
border-bottom-width: 1px;
- background: white ! important;
- opacity: 0.9;
+ background: rgba(255, 255, 255, 0.9) ! important;
backdrop-filter: blur(6px);
}
body.ttrss_prefs {
diff --git a/themes/light/cdm.less b/themes/light/cdm.less
index 5641a0380..6bb3378c1 100644
--- a/themes/light/cdm.less
+++ b/themes/light/cdm.less
@@ -45,6 +45,7 @@
.titleWrap {
flex-grow : 2;
+ width : 0;
}
.updated {
@@ -59,23 +60,17 @@
}
.feed {
- float: right;
- font-weight: normal;
- font-style: italic;
-
- a {
- border-radius : 4px;
- display : inline-block;
- padding : 1px 4px 1px 4px;
- }
- }
-
- .feed, .feed a {
- vertical-align: middle;
- color: @default-text;
font-weight: normal;
font-style: italic;
font-size: @font-size-small;
+ display : inline-block;
+ max-width : 25%;
+ overflow : hidden;
+ text-overflow : ellipsis;
+ border-radius : 4px;
+ padding : 1px 4px;
+ margin-right : 4px;
+ color: @default-text;
}
.author {
@@ -98,8 +93,23 @@
color : @color-icon;
}
+ .left, .right {
+ display : flex;
+ align-items : center;
+ }
+
.left {
flex-grow : 2;
+
+ > * {
+ margin-right : 4px;
+ }
+ }
+
+ .right {
+ > * {
+ margin-left : 4px;
+ }
}
}
@@ -315,8 +325,7 @@
box-shadow : 0 1px 1px -1px rgba(0,0,0,0.1);
border: 0 solid @border-default;
border-bottom-width: 1px;
- background : @default-bg ! important;
- opacity: 0.9;
+ background : fade(@default-bg, 90%) ! important;
backdrop-filter: blur(6px);
}
}
diff --git a/themes/light/tt-rss.less b/themes/light/tt-rss.less
index 0e85d53fb..6a1f45d28 100644
--- a/themes/light/tt-rss.less
+++ b/themes/light/tt-rss.less
@@ -22,6 +22,7 @@ body.ttrss_main {
.left, .right {
display : flex;
+ align-items : center;
}
.row {
@@ -817,7 +818,7 @@ body.ttrss_main {
}
&[data-auto-catchup="true"] #headlines-spacer {
- height : 100vh;
+ height : calc(100vh - 32px);
}
.dijitCheckBox {
@@ -1063,6 +1064,10 @@ body.ttrss_main {
max-width : 120px;
}
+ .attachments-inline a {
+ word-break: break-all;
+ }
+
#filterDlg_feeds select {
height : 150px;
width : 410px;
diff --git a/themes/night.css b/themes/night.css
index 19e3182bc..aa33e94b3 100644
--- a/themes/night.css
+++ b/themes/night.css
@@ -44,6 +44,7 @@ body.ttrss_main .post .header {
body.ttrss_main .post .header .left,
body.ttrss_main .post .header .right {
display: flex;
+ align-items: center;
}
body.ttrss_main .post .header .row {
display: flex;
@@ -691,7 +692,7 @@ body.ttrss_main #headlines-frame[data-is-vfeed="false"] .hl .icon-feed {
display: none;
}
body.ttrss_main #headlines-frame[data-auto-catchup="true"] #headlines-spacer {
- height: 100vh;
+ height: calc(100vh - 32px);
}
body.ttrss_main #headlines-frame .dijitCheckBox {
margin-right: 4px;
@@ -897,6 +898,9 @@ body.ttrss_main select.attachments {
margin-top: 10px;
max-width: 120px;
}
+body.ttrss_main .attachments-inline a {
+ word-break: break-all;
+}
body.ttrss_main #filterDlg_feeds select {
height: 150px;
width: 410px;
@@ -1258,6 +1262,7 @@ body.ttrss_utility hr {
}
.cdm .header .titleWrap {
flex-grow: 2;
+ width: 0;
}
.cdm .header .updated {
color: #ccc;
@@ -1269,22 +1274,17 @@ body.ttrss_utility hr {
margin: 0px 4px;
}
.cdm .header .feed {
- float: right;
font-weight: normal;
font-style: italic;
-}
-.cdm .header .feed a {
- border-radius: 4px;
+ font-size: 11px;
display: inline-block;
- padding: 1px 4px 1px 4px;
-}
-.cdm .header .feed,
-.cdm .header .feed a {
- vertical-align: middle;
+ max-width: 25%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ border-radius: 4px;
+ padding: 1px 4px;
+ margin-right: 4px;
color: #ccc;
- font-weight: normal;
- font-style: italic;
- font-size: 11px;
}
.cdm .header .author {
white-space: nowrap;
@@ -1303,9 +1303,20 @@ body.ttrss_utility hr {
.cdm .footer i.material-icons {
color: #999;
}
+.cdm .footer .left,
+.cdm .footer .right {
+ display: flex;
+ align-items: center;
+}
.cdm .footer .left {
flex-grow: 2;
}
+.cdm .footer .left > * {
+ margin-right: 4px;
+}
+.cdm .footer .right > * {
+ margin-left: 4px;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
@@ -1468,8 +1479,7 @@ body.ttrss_utility hr {
box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);
border: 0 solid #222;
border-bottom-width: 1px;
- background: #333 ! important;
- opacity: 0.9;
+ background: rgba(51, 51, 51, 0.9) ! important;
backdrop-filter: blur(6px);
}
body.ttrss_prefs {
diff --git a/themes/night_blue.css b/themes/night_blue.css
index 94bec2181..458db3616 100644
--- a/themes/night_blue.css
+++ b/themes/night_blue.css
@@ -44,6 +44,7 @@ body.ttrss_main .post .header {
body.ttrss_main .post .header .left,
body.ttrss_main .post .header .right {
display: flex;
+ align-items: center;
}
body.ttrss_main .post .header .row {
display: flex;
@@ -691,7 +692,7 @@ body.ttrss_main #headlines-frame[data-is-vfeed="false"] .hl .icon-feed {
display: none;
}
body.ttrss_main #headlines-frame[data-auto-catchup="true"] #headlines-spacer {
- height: 100vh;
+ height: calc(100vh - 32px);
}
body.ttrss_main #headlines-frame .dijitCheckBox {
margin-right: 4px;
@@ -897,6 +898,9 @@ body.ttrss_main select.attachments {
margin-top: 10px;
max-width: 120px;
}
+body.ttrss_main .attachments-inline a {
+ word-break: break-all;
+}
body.ttrss_main #filterDlg_feeds select {
height: 150px;
width: 410px;
@@ -1258,6 +1262,7 @@ body.ttrss_utility hr {
}
.cdm .header .titleWrap {
flex-grow: 2;
+ width: 0;
}
.cdm .header .updated {
color: #ccc;
@@ -1269,22 +1274,17 @@ body.ttrss_utility hr {
margin: 0px 4px;
}
.cdm .header .feed {
- float: right;
font-weight: normal;
font-style: italic;
-}
-.cdm .header .feed a {
- border-radius: 4px;
+ font-size: 11px;
display: inline-block;
- padding: 1px 4px 1px 4px;
-}
-.cdm .header .feed,
-.cdm .header .feed a {
- vertical-align: middle;
+ max-width: 25%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ border-radius: 4px;
+ padding: 1px 4px;
+ margin-right: 4px;
color: #ccc;
- font-weight: normal;
- font-style: italic;
- font-size: 11px;
}
.cdm .header .author {
white-space: nowrap;
@@ -1303,9 +1303,20 @@ body.ttrss_utility hr {
.cdm .footer i.material-icons {
color: #999;
}
+.cdm .footer .left,
+.cdm .footer .right {
+ display: flex;
+ align-items: center;
+}
.cdm .footer .left {
flex-grow: 2;
}
+.cdm .footer .left > * {
+ margin-right: 4px;
+}
+.cdm .footer .right > * {
+ margin-left: 4px;
+}
.cdm .content-inner {
margin: 10px;
line-height: 1.5;
@@ -1468,8 +1479,7 @@ body.ttrss_utility hr {
box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.1);
border: 0 solid #222;
border-bottom-width: 1px;
- background: #333 ! important;
- opacity: 0.9;
+ background: rgba(51, 51, 51, 0.9) ! important;
backdrop-filter: blur(6px);
}
body.ttrss_prefs {
diff --git a/update.php b/update.php
index 079069a3b..f33458c2e 100755
--- a/update.php
+++ b/update.php
@@ -10,9 +10,17 @@
require_once "autoload.php";
require_once "functions.php";
+
+ if (php_sapi_name() != "cli") {
+ header("Content-type: text/plain");
+ printf("Please run this script using PHP CLI executable (you're using PHP SAPI: %s, PHP_EXECUTABLE is set to '%s')\n",
+ php_sapi_name(), Config::get(Config::PHP_EXECUTABLE));
+ exit(1);
+ }
+
Config::sanity_check();
- function make_stampfile($filename) {
+ function make_stampfile(string $filename): bool {
$fp = fopen(Config::get(Config::LOCK_DIRECTORY) . "/$filename", "w");
if (flock($fp, LOCK_EX | LOCK_NB)) {
@@ -25,41 +33,36 @@
}
}
- function cleanup_tags($days = 14, $limit = 1000) {
+ function cleanup_tags(int $days = 14, int $limit = 1000): int {
$days = (int) $days;
if (Config::get(Config::DB_TYPE) == "pgsql") {
- $interval_query = "date_updated < NOW() - INTERVAL '$days days'";
+ $interval_query = "e.date_updated < NOW() - INTERVAL '$days days'";
} else /*if (Config::get(Config::DB_TYPE) == "mysql") */ {
- $interval_query = "date_updated < DATE_SUB(NOW(), INTERVAL $days DAY)";
+ $interval_query = "e.date_updated < DATE_SUB(NOW(), INTERVAL $days DAY)";
}
$tags_deleted = 0;
-
- $pdo = Db::pdo();
+ $limit_part = 500;
while ($limit > 0) {
- $limit_part = 500;
-
- $sth = $pdo->prepare("SELECT ttrss_tags.id AS id
- FROM ttrss_tags, ttrss_user_entries, ttrss_entries
- WHERE post_int_id = int_id AND $interval_query AND
- ref_id = ttrss_entries.id AND tag_cache != '' LIMIT ?");
- $sth->bindValue(1, $limit_part, PDO::PARAM_INT);
- $sth->execute();
-
- $ids = array();
-
- while ($line = $sth->fetch()) {
- array_push($ids, $line['id']);
- }
-
- if (count($ids) > 0) {
- $ids = join(",", $ids);
-
- $usth = $pdo->query("DELETE FROM ttrss_tags WHERE id IN ($ids)");
- $tags_deleted = $usth->rowCount();
+ $tags = ORM::for_table('ttrss_tags')
+ ->table_alias('t')
+ ->select('t.id')
+ ->join('ttrss_user_entries', ['ue.int_id', '=', 't.post_int_id'], 'ue')
+ ->join('ttrss_entries', ['e.id', '=', 'ue.ref_id'], 'e')
+ ->where_not_equal('ue.tag_cache', '')
+ ->where_raw($interval_query)
+ ->limit($limit_part)
+ ->find_many();
+
+ if (count($tags)) {
+ ORM::for_table('ttrss_tags')
+ ->where_id_in(array_column($tags->as_array(), 'id'))
+ ->delete_many();
+
+ $tags_deleted += ORM::get_last_statement()->rowCount();
} else {
break;
}
@@ -91,9 +94,10 @@
"gen-search-idx" => "generate basic PostgreSQL fulltext search index",
"plugins-list" => "list installed plugins",
"debug-feed:" => ["N", "update specified feed with debug output enabled"],
- "debug-force-refetch" => "debug update: force refetch feed data",
- "debug-force-rehash" => "debug update: force rehash articles",
+ "force-refetch" => "debug update: force refetch feed data",
+ "force-rehash" => "debug update: force rehash articles",
"opml-export:" => ["USER:FILE", "export OPML of USER to FILE"],
+ "opml-import:" => ["USER:FILE", "import OPML for USER from FILE"],
"user-list" => "list all users",
# "user-add:" => ["USER[:PASSWORD]", "add USER, optionally without prompting for PASSWORD"],
# "user-remove:" => ["USERNAME", "remove specified user"],
@@ -101,18 +105,12 @@
];
foreach (PluginHost::getInstance()->get_commands() as $command => $data) {
- $options_map[$command . $data["suffix"]] = [ $data["arghelp"] ?? "", $data["description"] ];
- }
-
- if (php_sapi_name() != "cli") {
- header("Content-type: text/plain");
- print "Please run this script from the command line.\n";
- exit;
+ $options_map[$command . $data["suffix"]] = [ $data["arghelp"], $data["description"] ];
}
$options = getopt("", array_keys($options_map));
- if (count($options) == 0 || isset($options["help"]) ) {
+ if ($options === false || count($options) == 0 || isset($options["help"]) ) {
print "Tiny Tiny RSS CLI management tool\n";
print "=================================\n";
print "Options:\n\n";
@@ -214,6 +212,7 @@
}
if (isset($options["daemon"])) {
+ // @phpstan-ignore-next-line
while (true) {
$quiet = (isset($options["quiet"])) ? "--quiet" : "";
$log = isset($options['log']) ? '--log '.$options['log'] : '';
@@ -290,29 +289,29 @@
if (isset($options["gen-search-idx"])) {
echo "Generating search index (stemming set to English)...\n";
- $res = $pdo->query("SELECT COUNT(id) AS count FROM ttrss_entries WHERE tsvector_combined IS NULL");
- $row = $res->fetch();
- $count = $row['count'];
-
- print "Articles to process: $count.\n";
+ $count = ORM::for_table('ttrss_entries')
+ ->where_null('tsvector_combined')
+ ->count();
$limit = 500;
$processed = 0;
- $sth = $pdo->prepare("SELECT id, title, content FROM ttrss_entries WHERE
- tsvector_combined IS NULL ORDER BY id LIMIT ?");
- $sth->execute([$limit]);
+ print "Articles to process: $count (will limit to $limit).\n";
+
+ $entries = ORM::for_table('ttrss_entries')
+ ->select_many('id', 'title', 'content')
+ ->where_null('tsvector_combined')
+ ->order_by_asc('id')
+ ->limit($limit)
+ ->find_many();
$usth = $pdo->prepare("UPDATE ttrss_entries
SET tsvector_combined = to_tsvector('english', ?) WHERE id = ?");
while (true) {
-
- while ($line = $sth->fetch()) {
- $tsvector_combined = mb_substr(strip_tags($line["title"] . " " . $line["content"]), 0, 1000000);
-
- $usth->execute([$tsvector_combined, $line['id']]);
-
+ foreach ($entries as $entry) {
+ $tsvector_combined = mb_substr(strip_tags($entry->title . " " . $entry->content), 0, 1000000);
+ $usth->execute([$tsvector_combined, $entry->id]);
$processed++;
}
@@ -366,7 +365,7 @@
if (isset($options["user-list"])) {
$users = ORM::for_table('ttrss_users')
- ->order_by_expr('id')
+ ->order_by_asc('id')
->find_many();
foreach ($users as $user) {
@@ -381,7 +380,7 @@
Debug::log("Exporting feeds of user $user to $filename as OPML...");
if ($owner_uid = UserHelper::find_user_by_login($user)) {
- $opml = new OPML("");
+ $opml = new OPML([]);
$rc = $opml->opml_export($filename, $owner_uid, false, true, true);
@@ -389,6 +388,22 @@
} else {
Debug::log("User not found: $user");
}
+ }
+
+ if (isset($options["opml-import"])) {
+ list ($user, $filename) = explode(":", $options["opml-import"], 2);
+
+ Debug::log("Importing feeds of user $user from OPML file $filename...");
+
+ if ($owner_uid = UserHelper::find_user_by_login($user)) {
+ $opml = new OPML([]);
+
+ $rc = $opml->opml_import($owner_uid, $filename);
+
+ Debug::log($rc ? "Success." : "Failed.");
+ } else {
+ Debug::log("User not found: $user");
+ }
}
diff --git a/update_daemon2.php b/update_daemon2.php
index 8931813ff..eea790c8b 100755
--- a/update_daemon2.php
+++ b/update_daemon2.php
@@ -37,7 +37,7 @@
/**
* @SuppressWarnings(unused)
*/
- function reap_children() {
+ function reap_children(): int {
global $children;
global $ctimes;
@@ -64,7 +64,7 @@
return count($tmp);
}
- function check_ctimes() {
+ function check_ctimes(): void {
global $ctimes;
foreach (array_keys($ctimes) as $pid) {
@@ -79,8 +79,9 @@
/**
* @SuppressWarnings(unused)
+ * @param mixed $siginfo
*/
- function sigchld_handler($signal) {
+ function sigchld_handler(int $signo, $siginfo): void {
$running_jobs = reap_children();
Debug::log("Received SIGCHLD, $running_jobs active tasks left.");
@@ -88,7 +89,7 @@
pcntl_waitpid(-1, $status, WNOHANG);
}
- function shutdown($caller_pid) {
+ function shutdown(int $caller_pid): void {
if ($caller_pid == posix_getpid()) {
if (file_exists(Config::get(Config::LOCK_DIRECTORY) . "/update_daemon.lock")) {
Debug::log("Removing lockfile (master)...");
@@ -97,7 +98,7 @@
}
}
- function task_shutdown() {
+ function task_shutdown(): void {
$pid = posix_getpid();
if (file_exists(Config::get(Config::LOCK_DIRECTORY) . "/update_daemon-$pid.lock")) {
@@ -106,13 +107,13 @@
}
}
- function sigint_handler() {
+ function sigint_handler(): void {
Debug::log("[MASTER] SIG_INT received, shutting down master process.");
shutdown(posix_getpid());
die;
}
- function task_sigint_handler() {
+ function task_sigint_handler(): void {
Debug::log("[TASK] SIG_INT received, shutting down task.");
task_shutdown();
die;
@@ -129,7 +130,7 @@
$options = getopt("", $longopts);
- if (isset($options["help"]) ) {
+ if ($options === false || isset($options["help"]) ) {
print "Tiny Tiny RSS update daemon.\n\n";
print "Options:\n";
print " --log FILE - log messages to FILE\n";
@@ -160,21 +161,28 @@
if (isset($options["tasks"])) {
Debug::log("Set to spawn " . $options["tasks"] . " children.");
- $max_jobs = $options["tasks"];
+ $max_jobs = (int) $options["tasks"];
} else {
$max_jobs = Config::get(Config::DAEMON_MAX_JOBS);
}
+ if ($max_jobs < 1) {
+ $max_jobs = 1;
+ Debug::log("Enforced minimum task count of $max_jobs.");
+ }
+
if (isset($options["interval"])) {
Debug::log("Spawn interval: " . $options["interval"] . " seconds.");
- $spawn_interval = $options["interval"];
+ $spawn_interval = (int) $options["interval"];
} else {
$spawn_interval = Config::get(Config::DAEMON_SLEEP_INTERVAL);
}
// let's enforce a minimum spawn interval as to not forkbomb the host
- $spawn_interval = max(60, $spawn_interval);
- Debug::log("Spawn interval: $spawn_interval sec");
+ if ($spawn_interval < 60) {
+ $spawn_interval = 60;
+ Debug::log("Enforced minimum task spawn interval of $spawn_interval seconds.");
+ }
if (file_is_locked("update_daemon.lock")) {
die("error: Can't create lockfile. ".
diff --git a/vendor/beberlei/assert/composer.json b/vendor/beberlei/assert/composer.json
index e11870470..3dd5e7451 100644
--- a/vendor/beberlei/assert/composer.json
+++ b/vendor/beberlei/assert/composer.json
@@ -19,6 +19,17 @@
"assertion",
"validation"
],
+ "config": {
+ "sort-packages": true
+ },
+ "require": {
+ "php": "^7"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "*",
+ "phpstan/phpstan-shim": "*",
+ "phpunit/phpunit": ">=6.0.0 <8"
+ },
"autoload": {
"psr-4": {
"Assert\\": "lib/Assert"
@@ -35,29 +46,11 @@
"tests/Assert/Tests/Fixtures/functions.php"
]
},
- "config": {
- "sort-packages": true
- },
- "require": {
- "php": "^7",
- "ext-simplexml": "*",
- "ext-mbstring": "*",
- "ext-ctype": "*",
- "ext-json": "*"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "*",
- "phpstan/phpstan-shim": "*",
- "phpunit/phpunit": ">=6.0.0 <8"
- },
"scripts": {
"assert:generate-docs": "php bin/generate_method_docs.php",
"assert:cs-lint": "php-cs-fixer fix --diff -vvv --dry-run",
"assert:cs-fix": "php-cs-fixer fix . -vvv || true",
"assert:sa-code": "vendor/bin/phpstan analyse --configuration=phpstan-code.neon --no-progress --ansi -l 7 bin lib",
"assert:sa-tests": "vendor/bin/phpstan analyse --configuration=phpstan-tests.neon --no-progress --ansi -l 7 tests"
- },
- "suggest": {
- "ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles"
}
}
diff --git a/vendor/beberlei/assert/lib/Assert/Assert.php b/vendor/beberlei/assert/lib/Assert/Assert.php
index 6910258d6..39bd9d64d 100644
--- a/vendor/beberlei/assert/lib/Assert/Assert.php
+++ b/vendor/beberlei/assert/lib/Assert/Assert.php
@@ -31,12 +31,6 @@ abstract class Assert
* The invocation of this method starts an assertion chain
* that is happening on the passed value.
*
- * @param mixed $value
- * @param string|callable|null $defaultMessage
- * @param string|null $defaultPropertyPath
- *
- * @return AssertionChain
- *
* @example
*
* Assert::that($value)->notEmpty()->integer();
@@ -44,8 +38,14 @@ abstract class Assert
*
* The assertion chain can be stateful, that means be careful when you reuse
* it. You should never pass around the chain.
+ *
+ * @param mixed $value
+ * @param string $defaultMessage
+ * @param string $defaultPropertyPath
+ *
+ * @return \Assert\AssertionChain
*/
- public static function that($value, $defaultMessage = null, string $defaultPropertyPath = null): AssertionChain
+ public static function that($value, $defaultMessage = null, $defaultPropertyPath = null)
{
$assertionChain = new AssertionChain($value, $defaultMessage, $defaultPropertyPath);
@@ -55,13 +55,13 @@ abstract class Assert
/**
* Start validation on a set of values, returns {@link AssertionChain}.
*
- * @param mixed $values
- * @param string|callable|null $defaultMessage
- * @param string|null $defaultPropertyPath
+ * @param mixed $values
+ * @param string $defaultMessage
+ * @param string $defaultPropertyPath
*
- * @return AssertionChain
+ * @return \Assert\AssertionChain
*/
- public static function thatAll($values, $defaultMessage = null, string $defaultPropertyPath = null): AssertionChain
+ public static function thatAll($values, $defaultMessage = null, $defaultPropertyPath = null)
{
return static::that($values, $defaultMessage, $defaultPropertyPath)->all();
}
@@ -69,13 +69,13 @@ abstract class Assert
/**
* Start validation and allow NULL, returns {@link AssertionChain}.
*
- * @param mixed $value
- * @param string|callable|null $defaultMessage
- * @param string|null $defaultPropertyPath
+ * @param mixed $value
+ * @param string $defaultMessage
+ * @param string $defaultPropertyPath
*
- * @return AssertionChain
+ * @return \Assert\AssertionChain
*/
- public static function thatNullOr($value, $defaultMessage = null, string $defaultPropertyPath = null): AssertionChain
+ public static function thatNullOr($value, $defaultMessage = null, $defaultPropertyPath = null)
{
return static::that($value, $defaultMessage, $defaultPropertyPath)->nullOr();
}
@@ -83,14 +83,15 @@ abstract class Assert
/**
* Create a lazy assertion object.
*
- * @return LazyAssertion
+ * @return \Assert\LazyAssertion
*/
- public static function lazy(): LazyAssertion
+ public static function lazy()
{
$lazyAssertion = new LazyAssertion();
return $lazyAssertion
->setAssertClass(\get_called_class())
- ->setExceptionClass(static::$lazyAssertionExceptionClass);
+ ->setExceptionClass(static::$lazyAssertionExceptionClass)
+ ;
}
}
diff --git a/vendor/beberlei/assert/lib/Assert/Assertion.php b/vendor/beberlei/assert/lib/Assert/Assertion.php
index a8b04e529..0b06b065c 100644
--- a/vendor/beberlei/assert/lib/Assert/Assertion.php
+++ b/vendor/beberlei/assert/lib/Assert/Assertion.php
@@ -14,121 +14,112 @@
namespace Assert;
-use ArrayAccess;
use BadMethodCallException;
-use Countable;
-use DateTime;
-use ReflectionClass;
-use ReflectionException;
-use ResourceBundle;
-use SimpleXMLElement;
-use Throwable;
-use Traversable;
/**
* Assert library.
*
* @author Benjamin Eberlei <[email protected]>
*
- * @method static bool allAlnum(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is alphanumeric for all values.
- * @method static bool allBase64(string[] $value, string|callable $message = null, string $propertyPath = null) Assert that a constant is defined for all values.
- * @method static bool allBetween(mixed[] $value, mixed $lowerLimit, mixed $upperLimit, string|callable $message = null, string $propertyPath = null) Assert that a value is greater or equal than a lower limit, and less than or equal to an upper limit for all values.
- * @method static bool allBetweenExclusive(mixed[] $value, mixed $lowerLimit, mixed $upperLimit, string|callable $message = null, string $propertyPath = null) Assert that a value is greater than a lower limit, and less than an upper limit for all values.
- * @method static bool allBetweenLength(mixed[] $value, int $minLength, int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string length is between min and max lengths for all values.
- * @method static bool allBoolean(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is php boolean for all values.
- * @method static bool allChoice(mixed[] $value, array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is in array of choices for all values.
- * @method static bool allChoicesNotEmpty(array[] $values, array $choices, string|callable $message = null, string $propertyPath = null) Determines if the values array has every choice as key and that this choice has content for all values.
- * @method static bool allClassExists(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that the class exists for all values.
- * @method static bool allContains(mixed[] $string, string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string contains a sequence of chars for all values.
- * @method static bool allCount(array[]|Countable[]|ResourceBundle[]|SimpleXMLElement[] $countable, int $count, string|callable $message = null, string $propertyPath = null) Assert that the count of countable is equal to count for all values.
- * @method static bool allDate(string[] $value, string $format, string|callable $message = null, string $propertyPath = null) Assert that date is valid and corresponds to the given format for all values.
- * @method static bool allDefined(mixed[] $constant, string|callable $message = null, string $propertyPath = null) Assert that a constant is defined for all values.
- * @method static bool allDigit(mixed[] $value, string|callable $message = null, string $propertyPath = null) Validates if an integer or integerish is a digit for all values.
- * @method static bool allDirectory(string[] $value, string|callable $message = null, string $propertyPath = null) Assert that a directory exists for all values.
- * @method static bool allE164(string[] $value, string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid E164 Phone Number for all values.
- * @method static bool allEmail(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is an email address (using input_filter/FILTER_VALIDATE_EMAIL) for all values.
- * @method static bool allEndsWith(mixed[] $string, string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string ends with a sequence of chars for all values.
- * @method static bool allEq(mixed[] $value, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are equal (using ==) for all values.
- * @method static bool allEqArraySubset(mixed[] $value, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that the array contains the subset for all values.
- * @method static bool allExtensionLoaded(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that extension is loaded for all values.
- * @method static bool allExtensionVersion(string[] $extension, string $operator, mixed $version, string|callable $message = null, string $propertyPath = null) Assert that extension is loaded and a specific version is installed for all values.
- * @method static bool allFalse(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that the value is boolean False for all values.
- * @method static bool allFile(string[] $value, string|callable $message = null, string $propertyPath = null) Assert that a file exists for all values.
- * @method static bool allFloat(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is a php float for all values.
- * @method static bool allGreaterOrEqualThan(mixed[] $value, mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is greater or equal than given limit for all values.
- * @method static bool allGreaterThan(mixed[] $value, mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is greater than given limit for all values.
- * @method static bool allImplementsInterface(mixed[] $class, string $interfaceName, string|callable $message = null, string $propertyPath = null) Assert that the class implements the interface for all values.
- * @method static bool allInArray(mixed[] $value, array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is in array of choices. This is an alias of Assertion::choice() for all values.
- * @method static bool allInteger(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is a php integer for all values.
- * @method static bool allIntegerish(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is a php integer'ish for all values.
- * @method static bool allInterfaceExists(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that the interface exists for all values.
- * @method static bool allIp(string[] $value, int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv4 or IPv6 address for all values.
- * @method static bool allIpv4(string[] $value, int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv4 address for all values.
- * @method static bool allIpv6(string[] $value, int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv6 address for all values.
- * @method static bool allIsArray(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is an array for all values.
- * @method static bool allIsArrayAccessible(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is an array or an array-accessible object for all values.
- * @method static bool allIsCallable(mixed[] $value, string|callable $message = null, string $propertyPath = null) Determines that the provided value is callable for all values.
- * @method static bool allIsCountable(array[]|Countable[]|ResourceBundle[]|SimpleXMLElement[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is countable for all values.
- * @method static bool allIsInstanceOf(mixed[] $value, string $className, string|callable $message = null, string $propertyPath = null) Assert that value is instance of given class-name for all values.
- * @method static bool allIsJsonString(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid json string for all values.
- * @method static bool allIsObject(mixed[] $value, string|callable $message = null, string $propertyPath = null) Determines that the provided value is an object for all values.
- * @method static bool allIsResource(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is a resource for all values.
- * @method static bool allIsTraversable(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is an array or a traversable object for all values.
- * @method static bool allKeyExists(mixed[] $value, string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array for all values.
- * @method static bool allKeyIsset(mixed[] $value, string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array/array-accessible object using isset() for all values.
- * @method static bool allKeyNotExists(mixed[] $value, string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key does not exist in an array for all values.
- * @method static bool allLength(mixed[] $value, int $length, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string has a given length for all values.
- * @method static bool allLessOrEqualThan(mixed[] $value, mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less or equal than given limit for all values.
- * @method static bool allLessThan(mixed[] $value, mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less than given limit for all values.
- * @method static bool allMax(mixed[] $value, mixed $maxValue, string|callable $message = null, string $propertyPath = null) Assert that a number is smaller as a given limit for all values.
- * @method static bool allMaxCount(array[]|Countable[]|ResourceBundle[]|SimpleXMLElement[] $countable, int $count, string|callable $message = null, string $propertyPath = null) Assert that the countable have at most $count elements for all values.
- * @method static bool allMaxLength(mixed[] $value, int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string value is not longer than $maxLength chars for all values.
- * @method static bool allMethodExists(string[] $value, mixed $object, string|callable $message = null, string $propertyPath = null) Determines that the named method is defined in the provided object for all values.
- * @method static bool allMin(mixed[] $value, mixed $minValue, string|callable $message = null, string $propertyPath = null) Assert that a value is at least as big as a given limit for all values.
- * @method static bool allMinCount(array[]|Countable[]|ResourceBundle[]|SimpleXMLElement[] $countable, int $count, string|callable $message = null, string $propertyPath = null) Assert that the countable have at least $count elements for all values.
- * @method static bool allMinLength(mixed[] $value, int $minLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that a string is at least $minLength chars long for all values.
- * @method static bool allNoContent(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is empty for all values.
- * @method static bool allNotBlank(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is not blank for all values.
- * @method static bool allNotContains(mixed[] $string, string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string does not contains a sequence of chars for all values.
- * @method static bool allNotEmpty(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is not empty for all values.
- * @method static bool allNotEmptyKey(mixed[] $value, string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array/array-accessible object and its value is not empty for all values.
- * @method static bool allNotEq(mixed[] $value1, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not equal (using ==) for all values.
- * @method static bool allNotInArray(mixed[] $value, array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is not in array of choices for all values.
- * @method static bool allNotIsInstanceOf(mixed[] $value, string $className, string|callable $message = null, string $propertyPath = null) Assert that value is not instance of given class-name for all values.
- * @method static bool allNotNull(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is not null for all values.
- * @method static bool allNotRegex(mixed[] $value, string $pattern, string|callable $message = null, string $propertyPath = null) Assert that value does not match a regex for all values.
- * @method static bool allNotSame(mixed[] $value1, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not the same (using ===) for all values.
- * @method static bool allNull(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is null for all values.
- * @method static bool allNumeric(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is numeric for all values.
- * @method static bool allObjectOrClass(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that the value is an object, or a class that exists for all values.
- * @method static bool allPhpVersion(string[] $operator, mixed $version, string|callable $message = null, string $propertyPath = null) Assert on PHP version for all values.
- * @method static bool allPropertiesExist(mixed[] $value, array $properties, string|callable $message = null, string $propertyPath = null) Assert that the value is an object or class, and that the properties all exist for all values.
- * @method static bool allPropertyExists(mixed[] $value, string $property, string|callable $message = null, string $propertyPath = null) Assert that the value is an object or class, and that the property exists for all values.
- * @method static bool allRange(mixed[] $value, mixed $minValue, mixed $maxValue, string|callable $message = null, string $propertyPath = null) Assert that value is in range of numbers for all values.
- * @method static bool allReadable(string[] $value, string|callable $message = null, string $propertyPath = null) Assert that the value is something readable for all values.
- * @method static bool allRegex(mixed[] $value, string $pattern, string|callable $message = null, string $propertyPath = null) Assert that value matches a regex for all values.
- * @method static bool allSame(mixed[] $value, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are the same (using ===) for all values.
- * @method static bool allSatisfy(mixed[] $value, callable $callback, string|callable $message = null, string $propertyPath = null) Assert that the provided value is valid according to a callback for all values.
- * @method static bool allScalar(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is a PHP scalar for all values.
- * @method static bool allStartsWith(mixed[] $string, string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string starts with a sequence of chars for all values.
- * @method static bool allString(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is a string for all values.
- * @method static bool allSubclassOf(mixed[] $value, string $className, string|callable $message = null, string $propertyPath = null) Assert that value is subclass of given class-name for all values.
- * @method static bool allTrue(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that the value is boolean True for all values.
- * @method static bool allUrl(mixed[] $value, string|callable $message = null, string $propertyPath = null) Assert that value is an URL for all values.
- * @method static bool allUuid(string[] $value, string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid UUID for all values.
- * @method static bool allVersion(string[] $version1, string $operator, string $version2, string|callable $message = null, string $propertyPath = null) Assert comparison of two versions for all values.
- * @method static bool allWriteable(string[] $value, string|callable $message = null, string $propertyPath = null) Assert that the value is something writeable for all values.
+ * @method static bool allAlnum(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is alphanumeric for all values.
+ * @method static bool allBase64(string $value, string|callable $message = null, string $propertyPath = null) Assert that a constant is defined for all values.
+ * @method static bool allBetween(mixed $value, mixed $lowerLimit, mixed $upperLimit, string $message = null, string $propertyPath = null) Assert that a value is greater or equal than a lower limit, and less than or equal to an upper limit for all values.
+ * @method static bool allBetweenExclusive(mixed $value, mixed $lowerLimit, mixed $upperLimit, string $message = null, string $propertyPath = null) Assert that a value is greater than a lower limit, and less than an upper limit for all values.
+ * @method static bool allBetweenLength(mixed $value, int $minLength, int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string length is between min and max lengths for all values.
+ * @method static bool allBoolean(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is php boolean for all values.
+ * @method static bool allChoice(mixed $value, array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is in array of choices for all values.
+ * @method static bool allChoicesNotEmpty(array $values, array $choices, string|callable $message = null, string $propertyPath = null) Determines if the values array has every choice as key and that this choice has content for all values.
+ * @method static bool allClassExists(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that the class exists for all values.
+ * @method static bool allContains(mixed $string, string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string contains a sequence of chars for all values.
+ * @method static bool allCount(array|\Countable|\ResourceBundle|\SimpleXMLElement $countable, int $count, string $message = null, string $propertyPath = null) Assert that the count of countable is equal to count for all values.
+ * @method static bool allDate(string $value, string $format, string|callable $message = null, string $propertyPath = null) Assert that date is valid and corresponds to the given format for all values.
+ * @method static bool allDefined(mixed $constant, string|callable $message = null, string $propertyPath = null) Assert that a constant is defined for all values.
+ * @method static bool allDigit(mixed $value, string|callable $message = null, string $propertyPath = null) Validates if an integer or integerish is a digit for all values.
+ * @method static bool allDirectory(string $value, string|callable $message = null, string $propertyPath = null) Assert that a directory exists for all values.
+ * @method static bool allE164(string $value, string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid E164 Phone Number for all values.
+ * @method static bool allEmail(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is an email address (using input_filter/FILTER_VALIDATE_EMAIL) for all values.
+ * @method static bool allEndsWith(mixed $string, string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string ends with a sequence of chars for all values.
+ * @method static bool allEq(mixed $value, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are equal (using ==) for all values.
+ * @method static bool allEqArraySubset(mixed $value, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that the array contains the subset for all values.
+ * @method static bool allExtensionLoaded(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that extension is loaded for all values.
+ * @method static bool allExtensionVersion(string $extension, string $operator, mixed $version, string|callable $message = null, string $propertyPath = null) Assert that extension is loaded and a specific version is installed for all values.
+ * @method static bool allFalse(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that the value is boolean False for all values.
+ * @method static bool allFile(string $value, string|callable $message = null, string $propertyPath = null) Assert that a file exists for all values.
+ * @method static bool allFloat(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is a php float for all values.
+ * @method static bool allGreaterOrEqualThan(mixed $value, mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is greater or equal than given limit for all values.
+ * @method static bool allGreaterThan(mixed $value, mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is greater than given limit for all values.
+ * @method static bool allImplementsInterface(mixed $class, string $interfaceName, string|callable $message = null, string $propertyPath = null) Assert that the class implements the interface for all values.
+ * @method static bool allInArray(mixed $value, array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is in array of choices. This is an alias of Assertion::choice() for all values.
+ * @method static bool allInteger(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is a php integer for all values.
+ * @method static bool allIntegerish(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is a php integer'ish for all values.
+ * @method static bool allInterfaceExists(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that the interface exists for all values.
+ * @method static bool allIp(string $value, int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv4 or IPv6 address for all values.
+ * @method static bool allIpv4(string $value, int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv4 address for all values.
+ * @method static bool allIpv6(string $value, int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv6 address for all values.
+ * @method static bool allIsArray(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is an array for all values.
+ * @method static bool allIsArrayAccessible(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is an array or an array-accessible object for all values.
+ * @method static bool allIsCallable(mixed $value, string|callable $message = null, string $propertyPath = null) Determines that the provided value is callable for all values.
+ * @method static bool allIsCountable(array|\Countable|\ResourceBundle|\SimpleXMLElement $value, string|callable $message = null, string $propertyPath = null) Assert that value is countable for all values.
+ * @method static bool allIsInstanceOf(mixed $value, string $className, string|callable $message = null, string $propertyPath = null) Assert that value is instance of given class-name for all values.
+ * @method static bool allIsJsonString(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid json string for all values.
+ * @method static bool allIsObject(mixed $value, string|callable $message = null, string $propertyPath = null) Determines that the provided value is an object for all values.
+ * @method static bool allIsResource(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is a resource for all values.
+ * @method static bool allIsTraversable(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is an array or a traversable object for all values.
+ * @method static bool allKeyExists(mixed $value, string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array for all values.
+ * @method static bool allKeyIsset(mixed $value, string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array/array-accessible object using isset() for all values.
+ * @method static bool allKeyNotExists(mixed $value, string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key does not exist in an array for all values.
+ * @method static bool allLength(mixed $value, int $length, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string has a given length for all values.
+ * @method static bool allLessOrEqualThan(mixed $value, mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less or equal than given limit for all values.
+ * @method static bool allLessThan(mixed $value, mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less than given limit for all values.
+ * @method static bool allMax(mixed $value, mixed $maxValue, string|callable $message = null, string $propertyPath = null) Assert that a number is smaller as a given limit for all values.
+ * @method static bool allMaxCount(array|\Countable|\ResourceBundle|\SimpleXMLElement $countable, int $count, string $message = null, string $propertyPath = null) Assert that the countable have at most $count elements for all values.
+ * @method static bool allMaxLength(mixed $value, int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string value is not longer than $maxLength chars for all values.
+ * @method static bool allMethodExists(string $value, mixed $object, string|callable $message = null, string $propertyPath = null) Determines that the named method is defined in the provided object for all values.
+ * @method static bool allMin(mixed $value, mixed $minValue, string|callable $message = null, string $propertyPath = null) Assert that a value is at least as big as a given limit for all values.
+ * @method static bool allMinCount(array|\Countable|\ResourceBundle|\SimpleXMLElement $countable, int $count, string $message = null, string $propertyPath = null) Assert that the countable have at least $count elements for all values.
+ * @method static bool allMinLength(mixed $value, int $minLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that a string is at least $minLength chars long for all values.
+ * @method static bool allNoContent(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is empty for all values.
+ * @method static bool allNotBlank(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is not blank for all values.
+ * @method static bool allNotContains(mixed $string, string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string does not contains a sequence of chars for all values.
+ * @method static bool allNotEmpty(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is not empty for all values.
+ * @method static bool allNotEmptyKey(mixed $value, string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array/array-accessible object and its value is not empty for all values.
+ * @method static bool allNotEq(mixed $value1, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not equal (using == ) for all values.
+ * @method static bool allNotInArray(mixed $value, array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is not in array of choices for all values.
+ * @method static bool allNotIsInstanceOf(mixed $value, string $className, string|callable $message = null, string $propertyPath = null) Assert that value is not instance of given class-name for all values.
+ * @method static bool allNotNull(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is not null for all values.
+ * @method static bool allNotRegex(mixed $value, string $pattern, string|callable $message = null, string $propertyPath = null) Assert that value does not match a regex for all values.
+ * @method static bool allNotSame(mixed $value1, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not the same (using === ) for all values.
+ * @method static bool allNull(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is null for all values.
+ * @method static bool allNumeric(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is numeric for all values.
+ * @method static bool allObjectOrClass(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that the value is an object, or a class that exists for all values.
+ * @method static bool allPhpVersion(string $operator, mixed $version, string|callable $message = null, string $propertyPath = null) Assert on PHP version for all values.
+ * @method static bool allPropertiesExist(mixed $value, array $properties, string|callable $message = null, string $propertyPath = null) Assert that the value is an object or class, and that the properties all exist for all values.
+ * @method static bool allPropertyExists(mixed $value, string $property, string|callable $message = null, string $propertyPath = null) Assert that the value is an object or class, and that the property exists for all values.
+ * @method static bool allRange(mixed $value, mixed $minValue, mixed $maxValue, string|callable $message = null, string $propertyPath = null) Assert that value is in range of numbers for all values.
+ * @method static bool allReadable(string $value, string|callable $message = null, string $propertyPath = null) Assert that the value is something readable for all values.
+ * @method static bool allRegex(mixed $value, string $pattern, string|callable $message = null, string $propertyPath = null) Assert that value matches a regex for all values.
+ * @method static bool allSame(mixed $value, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are the same (using ===) for all values.
+ * @method static bool allSatisfy(mixed $value, callable $callback, string|callable $message = null, string $propertyPath = null) Assert that the provided value is valid according to a callback for all values.
+ * @method static bool allScalar(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is a PHP scalar for all values.
+ * @method static bool allStartsWith(mixed $string, string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string starts with a sequence of chars for all values.
+ * @method static bool allString(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is a string for all values.
+ * @method static bool allSubclassOf(mixed $value, string $className, string|callable $message = null, string $propertyPath = null) Assert that value is subclass of given class-name for all values.
+ * @method static bool allTrue(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that the value is boolean True for all values.
+ * @method static bool allUrl(mixed $value, string|callable $message = null, string $propertyPath = null) Assert that value is an URL for all values.
+ * @method static bool allUuid(string $value, string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid UUID for all values.
+ * @method static bool allVersion(string $version1, string $operator, string $version2, string|callable $message = null, string $propertyPath = null) Assert comparison of two versions for all values.
+ * @method static bool allWriteable(string $value, string|callable $message = null, string $propertyPath = null) Assert that the value is something writeable for all values.
* @method static bool nullOrAlnum(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is alphanumeric or that the value is null.
* @method static bool nullOrBase64(string|null $value, string|callable $message = null, string $propertyPath = null) Assert that a constant is defined or that the value is null.
- * @method static bool nullOrBetween(mixed|null $value, mixed $lowerLimit, mixed $upperLimit, string|callable $message = null, string $propertyPath = null) Assert that a value is greater or equal than a lower limit, and less than or equal to an upper limit or that the value is null.
- * @method static bool nullOrBetweenExclusive(mixed|null $value, mixed $lowerLimit, mixed $upperLimit, string|callable $message = null, string $propertyPath = null) Assert that a value is greater than a lower limit, and less than an upper limit or that the value is null.
+ * @method static bool nullOrBetween(mixed|null $value, mixed $lowerLimit, mixed $upperLimit, string $message = null, string $propertyPath = null) Assert that a value is greater or equal than a lower limit, and less than or equal to an upper limit or that the value is null.
+ * @method static bool nullOrBetweenExclusive(mixed|null $value, mixed $lowerLimit, mixed $upperLimit, string $message = null, string $propertyPath = null) Assert that a value is greater than a lower limit, and less than an upper limit or that the value is null.
* @method static bool nullOrBetweenLength(mixed|null $value, int $minLength, int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string length is between min and max lengths or that the value is null.
* @method static bool nullOrBoolean(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is php boolean or that the value is null.
* @method static bool nullOrChoice(mixed|null $value, array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is in array of choices or that the value is null.
* @method static bool nullOrChoicesNotEmpty(array|null $values, array $choices, string|callable $message = null, string $propertyPath = null) Determines if the values array has every choice as key and that this choice has content or that the value is null.
* @method static bool nullOrClassExists(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that the class exists or that the value is null.
* @method static bool nullOrContains(mixed|null $string, string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string contains a sequence of chars or that the value is null.
- * @method static bool nullOrCount(array|Countable|ResourceBundle|SimpleXMLElement|null $countable, int $count, string|callable $message = null, string $propertyPath = null) Assert that the count of countable is equal to count or that the value is null.
+ * @method static bool nullOrCount(array|\Countable|\ResourceBundle|\SimpleXMLElement|null $countable, int $count, string $message = null, string $propertyPath = null) Assert that the count of countable is equal to count or that the value is null.
* @method static bool nullOrDate(string|null $value, string $format, string|callable $message = null, string $propertyPath = null) Assert that date is valid and corresponds to the given format or that the value is null.
* @method static bool nullOrDefined(mixed|null $constant, string|callable $message = null, string $propertyPath = null) Assert that a constant is defined or that the value is null.
* @method static bool nullOrDigit(mixed|null $value, string|callable $message = null, string $propertyPath = null) Validates if an integer or integerish is a digit or that the value is null.
@@ -156,7 +147,7 @@ use Traversable;
* @method static bool nullOrIsArray(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is an array or that the value is null.
* @method static bool nullOrIsArrayAccessible(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is an array or an array-accessible object or that the value is null.
* @method static bool nullOrIsCallable(mixed|null $value, string|callable $message = null, string $propertyPath = null) Determines that the provided value is callable or that the value is null.
- * @method static bool nullOrIsCountable(array|Countable|ResourceBundle|SimpleXMLElement|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is countable or that the value is null.
+ * @method static bool nullOrIsCountable(array|\Countable|\ResourceBundle|\SimpleXMLElement|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is countable or that the value is null.
* @method static bool nullOrIsInstanceOf(mixed|null $value, string $className, string|callable $message = null, string $propertyPath = null) Assert that value is instance of given class-name or that the value is null.
* @method static bool nullOrIsJsonString(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid json string or that the value is null.
* @method static bool nullOrIsObject(mixed|null $value, string|callable $message = null, string $propertyPath = null) Determines that the provided value is an object or that the value is null.
@@ -169,23 +160,23 @@ use Traversable;
* @method static bool nullOrLessOrEqualThan(mixed|null $value, mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less or equal than given limit or that the value is null.
* @method static bool nullOrLessThan(mixed|null $value, mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less than given limit or that the value is null.
* @method static bool nullOrMax(mixed|null $value, mixed $maxValue, string|callable $message = null, string $propertyPath = null) Assert that a number is smaller as a given limit or that the value is null.
- * @method static bool nullOrMaxCount(array|Countable|ResourceBundle|SimpleXMLElement|null $countable, int $count, string|callable $message = null, string $propertyPath = null) Assert that the countable have at most $count elements or that the value is null.
+ * @method static bool nullOrMaxCount(array|\Countable|\ResourceBundle|\SimpleXMLElement|null $countable, int $count, string $message = null, string $propertyPath = null) Assert that the countable have at most $count elements or that the value is null.
* @method static bool nullOrMaxLength(mixed|null $value, int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string value is not longer than $maxLength chars or that the value is null.
* @method static bool nullOrMethodExists(string|null $value, mixed $object, string|callable $message = null, string $propertyPath = null) Determines that the named method is defined in the provided object or that the value is null.
* @method static bool nullOrMin(mixed|null $value, mixed $minValue, string|callable $message = null, string $propertyPath = null) Assert that a value is at least as big as a given limit or that the value is null.
- * @method static bool nullOrMinCount(array|Countable|ResourceBundle|SimpleXMLElement|null $countable, int $count, string|callable $message = null, string $propertyPath = null) Assert that the countable have at least $count elements or that the value is null.
+ * @method static bool nullOrMinCount(array|\Countable|\ResourceBundle|\SimpleXMLElement|null $countable, int $count, string $message = null, string $propertyPath = null) Assert that the countable have at least $count elements or that the value is null.
* @method static bool nullOrMinLength(mixed|null $value, int $minLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that a string is at least $minLength chars long or that the value is null.
* @method static bool nullOrNoContent(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is empty or that the value is null.
* @method static bool nullOrNotBlank(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is not blank or that the value is null.
* @method static bool nullOrNotContains(mixed|null $string, string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string does not contains a sequence of chars or that the value is null.
* @method static bool nullOrNotEmpty(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is not empty or that the value is null.
* @method static bool nullOrNotEmptyKey(mixed|null $value, string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array/array-accessible object and its value is not empty or that the value is null.
- * @method static bool nullOrNotEq(mixed|null $value1, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not equal (using ==) or that the value is null.
+ * @method static bool nullOrNotEq(mixed|null $value1, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not equal (using == ) or that the value is null.
* @method static bool nullOrNotInArray(mixed|null $value, array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is not in array of choices or that the value is null.
* @method static bool nullOrNotIsInstanceOf(mixed|null $value, string $className, string|callable $message = null, string $propertyPath = null) Assert that value is not instance of given class-name or that the value is null.
* @method static bool nullOrNotNull(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is not null or that the value is null.
* @method static bool nullOrNotRegex(mixed|null $value, string $pattern, string|callable $message = null, string $propertyPath = null) Assert that value does not match a regex or that the value is null.
- * @method static bool nullOrNotSame(mixed|null $value1, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not the same (using ===) or that the value is null.
+ * @method static bool nullOrNotSame(mixed|null $value1, mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not the same (using === ) or that the value is null.
* @method static bool nullOrNull(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is null or that the value is null.
* @method static bool nullOrNumeric(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that value is numeric or that the value is null.
* @method static bool nullOrObjectOrClass(mixed|null $value, string|callable $message = null, string $propertyPath = null) Assert that the value is an object, or a class that exists or that the value is null.
@@ -298,16 +289,14 @@ class Assertion
/**
* Assert that two values are equal (using ==).
*
- * @param mixed $value
- * @param mixed $value2
+ * @param mixed $value
+ * @param mixed $value2
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function eq($value, $value2, $message = null, string $propertyPath = null): bool
+ public static function eq($value, $value2, $message = null, $propertyPath = null)
{
if ($value != $value2) {
$message = \sprintf(
@@ -325,16 +314,14 @@ class Assertion
/**
* Assert that the array contains the subset.
*
- * @param mixed $value
- * @param mixed $value2
+ * @param mixed $value
+ * @param mixed $value2
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function eqArraySubset($value, $value2, $message = null, string $propertyPath = null): bool
+ public static function eqArraySubset($value, $value2, $message = null, $propertyPath = null)
{
static::isArray($value, $message, $propertyPath);
static::isArray($value2, $message, $propertyPath);
@@ -348,16 +335,14 @@ class Assertion
/**
* Assert that two values are the same (using ===).
*
- * @param mixed $value
- * @param mixed $value2
+ * @param mixed $value
+ * @param mixed $value2
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function same($value, $value2, $message = null, string $propertyPath = null): bool
+ public static function same($value, $value2, $message = null, $propertyPath = null)
{
if ($value !== $value2) {
$message = \sprintf(
@@ -373,18 +358,16 @@ class Assertion
}
/**
- * Assert that two values are not equal (using ==).
+ * Assert that two values are not equal (using == ).
*
- * @param mixed $value1
- * @param mixed $value2
+ * @param mixed $value1
+ * @param mixed $value2
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function notEq($value1, $value2, $message = null, string $propertyPath = null): bool
+ public static function notEq($value1, $value2, $message = null, $propertyPath = null)
{
if ($value1 == $value2) {
$message = \sprintf(
@@ -399,18 +382,16 @@ class Assertion
}
/**
- * Assert that two values are not the same (using ===).
+ * Assert that two values are not the same (using === ).
*
- * @param mixed $value1
- * @param mixed $value2
+ * @param mixed $value1
+ * @param mixed $value2
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function notSame($value1, $value2, $message = null, string $propertyPath = null): bool
+ public static function notSame($value1, $value2, $message = null, $propertyPath = null)
{
if ($value1 === $value2) {
$message = \sprintf(
@@ -427,16 +408,14 @@ class Assertion
/**
* Assert that value is not in array of choices.
*
- * @param mixed $value
- * @param array $choices
+ * @param mixed $value
+ * @param array $choices
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function notInArray($value, array $choices, $message = null, string $propertyPath = null): bool
+ public static function notInArray($value, array $choices, $message = null, $propertyPath = null)
{
if (true === \in_array($value, $choices)) {
$message = \sprintf(
@@ -453,15 +432,13 @@ class Assertion
/**
* Assert that value is a php integer.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function integer($value, $message = null, string $propertyPath = null): bool
+ public static function integer($value, $message = null, $propertyPath = null)
{
if (!\is_int($value)) {
$message = \sprintf(
@@ -478,15 +455,13 @@ class Assertion
/**
* Assert that value is a php float.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function float($value, $message = null, string $propertyPath = null): bool
+ public static function float($value, $message = null, $propertyPath = null)
{
if (!\is_float($value)) {
$message = \sprintf(
@@ -503,17 +478,15 @@ class Assertion
/**
* Validates if an integer or integerish is a digit.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function digit($value, $message = null, string $propertyPath = null): bool
+ public static function digit($value, $message = null, $propertyPath = null)
{
- if (!\ctype_digit((string)$value)) {
+ if (!\ctype_digit((string) $value)) {
$message = \sprintf(
static::generateMessage($message ?: 'Value "%s" is not a digit.'),
static::stringify($value)
@@ -528,15 +501,13 @@ class Assertion
/**
* Assert that value is a php integer'ish.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function integerish($value, $message = null, string $propertyPath = null): bool
+ public static function integerish($value, $message = null, $propertyPath = null)
{
if (
\is_resource($value) ||
@@ -566,15 +537,13 @@ class Assertion
/**
* Assert that value is php boolean.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function boolean($value, $message = null, string $propertyPath = null): bool
+ public static function boolean($value, $message = null, $propertyPath = null)
{
if (!\is_bool($value)) {
$message = \sprintf(
@@ -591,15 +560,13 @@ class Assertion
/**
* Assert that value is a PHP scalar.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function scalar($value, $message = null, string $propertyPath = null): bool
+ public static function scalar($value, $message = null, $propertyPath = null)
{
if (!\is_scalar($value)) {
$message = \sprintf(
@@ -616,15 +583,13 @@ class Assertion
/**
* Assert that value is not empty.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function notEmpty($value, $message = null, string $propertyPath = null): bool
+ public static function notEmpty($value, $message = null, $propertyPath = null)
{
if (empty($value)) {
$message = \sprintf(
@@ -641,15 +606,13 @@ class Assertion
/**
* Assert that value is empty.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function noContent($value, $message = null, string $propertyPath = null): bool
+ public static function noContent($value, $message = null, $propertyPath = null)
{
if (!empty($value)) {
$message = \sprintf(
@@ -666,13 +629,13 @@ class Assertion
/**
* Assert that value is null.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
*/
- public static function null($value, $message = null, string $propertyPath = null): bool
+ public static function null($value, $message = null, $propertyPath = null)
{
if (null !== $value) {
$message = \sprintf(
@@ -689,15 +652,13 @@ class Assertion
/**
* Assert that value is not null.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function notNull($value, $message = null, string $propertyPath = null): bool
+ public static function notNull($value, $message = null, $propertyPath = null)
{
if (null === $value) {
$message = \sprintf(
@@ -714,15 +675,13 @@ class Assertion
/**
* Assert that value is a string.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function string($value, $message = null, string $propertyPath = null)
+ public static function string($value, $message = null, $propertyPath = null)
{
if (!\is_string($value)) {
$message = \sprintf(
@@ -740,16 +699,14 @@ class Assertion
/**
* Assert that value matches a regex.
*
- * @param mixed $value
- * @param string $pattern
+ * @param mixed $value
+ * @param string $pattern
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function regex($value, $pattern, $message = null, string $propertyPath = null): bool
+ public static function regex($value, $pattern, $message = null, $propertyPath = null)
{
static::string($value, $message, $propertyPath);
@@ -768,16 +725,16 @@ class Assertion
/**
* Assert that value does not match a regex.
*
- * @param mixed $value
- * @param string $pattern
+ * @param mixed $value
+ * @param string $pattern
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
*
- * @throws AssertionFailedException
+ * @throws \Assert\AssertionFailedException
*/
- public static function notRegex($value, $pattern, $message = null, string $propertyPath = null): bool
+ public static function notRegex($value, $pattern, $message = null, $propertyPath = null)
{
static::string($value, $message, $propertyPath);
@@ -796,17 +753,15 @@ class Assertion
/**
* Assert that string has a given length.
*
- * @param mixed $value
- * @param int $length
+ * @param mixed $value
+ * @param int $length
* @param string|callable|null $message
- * @param string|null $propertyPath
- * @param string $encoding
+ * @param string|null $propertyPath
+ * @param string $encoding
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function length($value, $length, $message = null, string $propertyPath = null, $encoding = 'utf8'): bool
+ public static function length($value, $length, $message = null, $propertyPath = null, $encoding = 'utf8')
{
static::string($value, $message, $propertyPath);
@@ -827,17 +782,15 @@ class Assertion
/**
* Assert that a string is at least $minLength chars long.
*
- * @param mixed $value
- * @param int $minLength
+ * @param mixed $value
+ * @param int $minLength
* @param string|callable|null $message
- * @param string|null $propertyPath
- * @param string $encoding
+ * @param string|null $propertyPath
+ * @param string $encoding
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function minLength($value, $minLength, $message = null, string $propertyPath = null, $encoding = 'utf8'): bool
+ public static function minLength($value, $minLength, $message = null, $propertyPath = null, $encoding = 'utf8')
{
static::string($value, $message, $propertyPath);
@@ -858,17 +811,15 @@ class Assertion
/**
* Assert that string value is not longer than $maxLength chars.
*
- * @param mixed $value
- * @param int $maxLength
+ * @param mixed $value
+ * @param int $maxLength
* @param string|callable|null $message
- * @param string|null $propertyPath
- * @param string $encoding
+ * @param string|null $propertyPath
+ * @param string $encoding
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function maxLength($value, $maxLength, $message = null, string $propertyPath = null, $encoding = 'utf8'): bool
+ public static function maxLength($value, $maxLength, $message = null, $propertyPath = null, $encoding = 'utf8')
{
static::string($value, $message, $propertyPath);
@@ -889,18 +840,16 @@ class Assertion
/**
* Assert that string length is between min and max lengths.
*
- * @param mixed $value
- * @param int $minLength
- * @param int $maxLength
+ * @param mixed $value
+ * @param int $minLength
+ * @param int $maxLength
* @param string|callable|null $message
- * @param string|null $propertyPath
- * @param string $encoding
+ * @param string|null $propertyPath
+ * @param string $encoding
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function betweenLength($value, $minLength, $maxLength, $message = null, string $propertyPath = null, $encoding = 'utf8'): bool
+ public static function betweenLength($value, $minLength, $maxLength, $message = null, $propertyPath = null, $encoding = 'utf8')
{
static::string($value, $message, $propertyPath);
static::minLength($value, $minLength, $message, $propertyPath, $encoding);
@@ -912,17 +861,15 @@ class Assertion
/**
* Assert that string starts with a sequence of chars.
*
- * @param mixed $string
- * @param string $needle
+ * @param mixed $string
+ * @param string $needle
* @param string|callable|null $message
- * @param string|null $propertyPath
- * @param string $encoding
+ * @param string|null $propertyPath
+ * @param string $encoding
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function startsWith($string, $needle, $message = null, string $propertyPath = null, $encoding = 'utf8'): bool
+ public static function startsWith($string, $needle, $message = null, $propertyPath = null, $encoding = 'utf8')
{
static::string($string, $message, $propertyPath);
@@ -942,17 +889,15 @@ class Assertion
/**
* Assert that string ends with a sequence of chars.
*
- * @param mixed $string
- * @param string $needle
+ * @param mixed $string
+ * @param string $needle
* @param string|callable|null $message
- * @param string|null $propertyPath
- * @param string $encoding
+ * @param string|null $propertyPath
+ * @param string $encoding
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function endsWith($string, $needle, $message = null, string $propertyPath = null, $encoding = 'utf8'): bool
+ public static function endsWith($string, $needle, $message = null, $propertyPath = null, $encoding = 'utf8')
{
static::string($string, $message, $propertyPath);
@@ -974,17 +919,15 @@ class Assertion
/**
* Assert that string contains a sequence of chars.
*
- * @param mixed $string
- * @param string $needle
+ * @param mixed $string
+ * @param string $needle
* @param string|callable|null $message
- * @param string|null $propertyPath
- * @param string $encoding
+ * @param string|null $propertyPath
+ * @param string $encoding
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function contains($string, $needle, $message = null, string $propertyPath = null, $encoding = 'utf8'): bool
+ public static function contains($string, $needle, $message = null, $propertyPath = null, $encoding = 'utf8')
{
static::string($string, $message, $propertyPath);
@@ -1004,17 +947,15 @@ class Assertion
/**
* Assert that string does not contains a sequence of chars.
*
- * @param mixed $string
- * @param string $needle
+ * @param mixed $string
+ * @param string $needle
* @param string|callable|null $message
- * @param string|null $propertyPath
- * @param string $encoding
+ * @param string|null $propertyPath
+ * @param string $encoding
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function notContains($string, $needle, $message = null, string $propertyPath = null, $encoding = 'utf8'): bool
+ public static function notContains($string, $needle, $message = null, $propertyPath = null, $encoding = 'utf8')
{
static::string($string, $message, $propertyPath);
@@ -1034,16 +975,14 @@ class Assertion
/**
* Assert that value is in array of choices.
*
- * @param mixed $value
- * @param array $choices
+ * @param mixed $value
+ * @param array $choices
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function choice($value, array $choices, $message = null, string $propertyPath = null): bool
+ public static function choice($value, array $choices, $message = null, $propertyPath = null)
{
if (!\in_array($value, $choices, true)) {
$message = \sprintf(
@@ -1063,16 +1002,14 @@ class Assertion
*
* This is an alias of {@see choice()}.
*
- * @param mixed $value
- * @param array $choices
+ * @param mixed $value
+ * @param array $choices
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function inArray($value, array $choices, $message = null, string $propertyPath = null): bool
+ public static function inArray($value, array $choices, $message = null, $propertyPath = null)
{
return static::choice($value, $choices, $message, $propertyPath);
}
@@ -1080,15 +1017,13 @@ class Assertion
/**
* Assert that value is numeric.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function numeric($value, $message = null, string $propertyPath = null): bool
+ public static function numeric($value, $message = null, $propertyPath = null)
{
if (!\is_numeric($value)) {
$message = \sprintf(
@@ -1105,13 +1040,13 @@ class Assertion
/**
* Assert that value is a resource.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
*/
- public static function isResource($value, $message = null, string $propertyPath = null): bool
+ public static function isResource($value, $message = null, $propertyPath = null)
{
if (!\is_resource($value)) {
$message = \sprintf(
@@ -1128,15 +1063,13 @@ class Assertion
/**
* Assert that value is an array.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function isArray($value, $message = null, string $propertyPath = null): bool
+ public static function isArray($value, $message = null, $propertyPath = null)
{
if (!\is_array($value)) {
$message = \sprintf(
@@ -1153,17 +1086,15 @@ class Assertion
/**
* Assert that value is an array or a traversable object.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function isTraversable($value, $message = null, string $propertyPath = null): bool
+ public static function isTraversable($value, $message = null, $propertyPath = null)
{
- if (!\is_array($value) && !$value instanceof Traversable) {
+ if (!\is_array($value) && !$value instanceof \Traversable) {
$message = \sprintf(
static::generateMessage($message ?: 'Value "%s" is not an array and does not implement Traversable.'),
static::stringify($value)
@@ -1178,17 +1109,15 @@ class Assertion
/**
* Assert that value is an array or an array-accessible object.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function isArrayAccessible($value, $message = null, string $propertyPath = null): bool
+ public static function isArrayAccessible($value, $message = null, $propertyPath = null)
{
- if (!\is_array($value) && !$value instanceof ArrayAccess) {
+ if (!\is_array($value) && !$value instanceof \ArrayAccess) {
$message = \sprintf(
static::generateMessage($message ?: 'Value "%s" is not an array and does not implement ArrayAccess.'),
static::stringify($value)
@@ -1203,20 +1132,18 @@ class Assertion
/**
* Assert that value is countable.
*
- * @param array|Countable|ResourceBundle|SimpleXMLElement $value
- * @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param array|\Countable|\ResourceBundle|\SimpleXMLElement $value
+ * @param string|callable|null $message
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function isCountable($value, $message = null, string $propertyPath = null): bool
+ public static function isCountable($value, $message = null, $propertyPath = null)
{
if (\function_exists('is_countable')) {
$assert = \is_countable($value);
} else {
- $assert = \is_array($value) || $value instanceof Countable || $value instanceof ResourceBundle || $value instanceof SimpleXMLElement;
+ $assert = \is_array($value) || $value instanceof \Countable || $value instanceof \ResourceBundle || $value instanceof \SimpleXMLElement;
}
if (!$assert) {
@@ -1234,16 +1161,14 @@ class Assertion
/**
* Assert that key exists in an array.
*
- * @param mixed $value
- * @param string|int $key
+ * @param mixed $value
+ * @param string|int $key
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function keyExists($value, $key, $message = null, string $propertyPath = null): bool
+ public static function keyExists($value, $key, $message = null, $propertyPath = null)
{
static::isArray($value, $message, $propertyPath);
@@ -1262,16 +1187,14 @@ class Assertion
/**
* Assert that key does not exist in an array.
*
- * @param mixed $value
- * @param string|int $key
+ * @param mixed $value
+ * @param string|int $key
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function keyNotExists($value, $key, $message = null, string $propertyPath = null): bool
+ public static function keyNotExists($value, $key, $message = null, $propertyPath = null)
{
static::isArray($value, $message, $propertyPath);
@@ -1290,16 +1213,14 @@ class Assertion
/**
* Assert that key exists in an array/array-accessible object using isset().
*
- * @param mixed $value
- * @param string|int $key
+ * @param mixed $value
+ * @param string|int $key
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function keyIsset($value, $key, $message = null, string $propertyPath = null): bool
+ public static function keyIsset($value, $key, $message = null, $propertyPath = null)
{
static::isArrayAccessible($value, $message, $propertyPath);
@@ -1318,16 +1239,14 @@ class Assertion
/**
* Assert that key exists in an array/array-accessible object and its value is not empty.
*
- * @param mixed $value
- * @param string|int $key
+ * @param mixed $value
+ * @param string|int $key
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function notEmptyKey($value, $key, $message = null, string $propertyPath = null): bool
+ public static function notEmptyKey($value, $key, $message = null, $propertyPath = null)
{
static::keyIsset($value, $key, $message, $propertyPath);
static::notEmpty($value[$key], $message, $propertyPath);
@@ -1338,15 +1257,13 @@ class Assertion
/**
* Assert that value is not blank.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function notBlank($value, $message = null, string $propertyPath = null): bool
+ public static function notBlank($value, $message = null, $propertyPath = null)
{
if (false === $value || (empty($value) && '0' != $value) || (\is_string($value) && '' === \trim($value))) {
$message = \sprintf(
@@ -1363,16 +1280,14 @@ class Assertion
/**
* Assert that value is instance of given class-name.
*
- * @param mixed $value
- * @param string $className
+ * @param mixed $value
+ * @param string $className
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function isInstanceOf($value, $className, $message = null, string $propertyPath = null): bool
+ public static function isInstanceOf($value, $className, $message = null, $propertyPath = null)
{
if (!($value instanceof $className)) {
$message = \sprintf(
@@ -1390,16 +1305,14 @@ class Assertion
/**
* Assert that value is not instance of given class-name.
*
- * @param mixed $value
- * @param string $className
+ * @param mixed $value
+ * @param string $className
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function notIsInstanceOf($value, $className, $message = null, string $propertyPath = null): bool
+ public static function notIsInstanceOf($value, $className, $message = null, $propertyPath = null)
{
if ($value instanceof $className) {
$message = \sprintf(
@@ -1417,16 +1330,14 @@ class Assertion
/**
* Assert that value is subclass of given class-name.
*
- * @param mixed $value
- * @param string $className
+ * @param mixed $value
+ * @param string $className
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function subclassOf($value, $className, $message = null, string $propertyPath = null): bool
+ public static function subclassOf($value, $className, $message = null, $propertyPath = null)
{
if (!\is_subclass_of($value, $className)) {
$message = \sprintf(
@@ -1444,17 +1355,15 @@ class Assertion
/**
* Assert that value is in range of numbers.
*
- * @param mixed $value
- * @param mixed $minValue
- * @param mixed $maxValue
+ * @param mixed $value
+ * @param mixed $minValue
+ * @param mixed $maxValue
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function range($value, $minValue, $maxValue, $message = null, string $propertyPath = null): bool
+ public static function range($value, $minValue, $maxValue, $message = null, $propertyPath = null)
{
static::numeric($value, $message, $propertyPath);
@@ -1475,16 +1384,14 @@ class Assertion
/**
* Assert that a value is at least as big as a given limit.
*
- * @param mixed $value
- * @param mixed $minValue
+ * @param mixed $value
+ * @param mixed $minValue
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function min($value, $minValue, $message = null, string $propertyPath = null): bool
+ public static function min($value, $minValue, $message = null, $propertyPath = null)
{
static::numeric($value, $message, $propertyPath);
@@ -1504,16 +1411,14 @@ class Assertion
/**
* Assert that a number is smaller as a given limit.
*
- * @param mixed $value
- * @param mixed $maxValue
+ * @param mixed $value
+ * @param mixed $maxValue
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function max($value, $maxValue, $message = null, string $propertyPath = null): bool
+ public static function max($value, $maxValue, $message = null, $propertyPath = null)
{
static::numeric($value, $message, $propertyPath);
@@ -1533,15 +1438,13 @@ class Assertion
/**
* Assert that a file exists.
*
- * @param string $value
+ * @param string $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function file($value, $message = null, string $propertyPath = null): bool
+ public static function file($value, $message = null, $propertyPath = null)
{
static::string($value, $message, $propertyPath);
static::notEmpty($value, $message, $propertyPath);
@@ -1561,15 +1464,13 @@ class Assertion
/**
* Assert that a directory exists.
*
- * @param string $value
+ * @param string $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function directory($value, $message = null, string $propertyPath = null): bool
+ public static function directory($value, $message = null, $propertyPath = null)
{
static::string($value, $message, $propertyPath);
@@ -1588,15 +1489,13 @@ class Assertion
/**
* Assert that the value is something readable.
*
- * @param string $value
+ * @param string $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function readable($value, $message = null, string $propertyPath = null): bool
+ public static function readable($value, $message = null, $propertyPath = null)
{
static::string($value, $message, $propertyPath);
@@ -1615,15 +1514,13 @@ class Assertion
/**
* Assert that the value is something writeable.
*
- * @param string $value
+ * @param string $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function writeable($value, $message = null, string $propertyPath = null): bool
+ public static function writeable($value, $message = null, $propertyPath = null)
{
static::string($value, $message, $propertyPath);
@@ -1642,15 +1539,13 @@ class Assertion
/**
* Assert that value is an email address (using input_filter/FILTER_VALIDATE_EMAIL).
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function email($value, $message = null, string $propertyPath = null): bool
+ public static function email($value, $message = null, $propertyPath = null)
{
static::string($value, $message, $propertyPath);
@@ -1671,18 +1566,16 @@ class Assertion
*
* This code snipped was taken from the Symfony project and modified to the special demands of this method.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
*
- * @throws AssertionFailedException
- *
* @see https://github.com/symfony/Validator/blob/master/Constraints/UrlValidator.php
* @see https://github.com/symfony/Validator/blob/master/Constraints/Url.php
*/
- public static function url($value, $message = null, string $propertyPath = null): bool
+ public static function url($value, $message = null, $propertyPath = null)
{
static::string($value, $message, $propertyPath);
@@ -1723,19 +1616,17 @@ class Assertion
/**
* Assert that value is alphanumeric.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function alnum($value, $message = null, string $propertyPath = null): bool
+ public static function alnum($value, $message = null, $propertyPath = null)
{
try {
static::regex($value, '(^([a-zA-Z]{1}[a-zA-Z0-9]*)$)', $message, $propertyPath);
- } catch (Throwable $e) {
+ } catch (\Throwable $e) {
$message = \sprintf(
static::generateMessage($message ?: 'Value "%s" is not alphanumeric, starting with letters and containing only letters and numbers.'),
static::stringify($value)
@@ -1750,15 +1641,13 @@ class Assertion
/**
* Assert that the value is boolean True.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function true($value, $message = null, string $propertyPath = null): bool
+ public static function true($value, $message = null, $propertyPath = null)
{
if (true !== $value) {
$message = \sprintf(
@@ -1775,15 +1664,13 @@ class Assertion
/**
* Assert that the value is boolean False.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function false($value, $message = null, string $propertyPath = null): bool
+ public static function false($value, $message = null, $propertyPath = null)
{
if (false !== $value) {
$message = \sprintf(
@@ -1800,15 +1687,13 @@ class Assertion
/**
* Assert that the class exists.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function classExists($value, $message = null, string $propertyPath = null): bool
+ public static function classExists($value, $message = null, $propertyPath = null)
{
if (!\class_exists($value)) {
$message = \sprintf(
@@ -1825,15 +1710,13 @@ class Assertion
/**
* Assert that the interface exists.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function interfaceExists($value, $message = null, string $propertyPath = null): bool
+ public static function interfaceExists($value, $message = null, $propertyPath = null)
{
if (!\interface_exists($value)) {
$message = \sprintf(
@@ -1850,19 +1733,17 @@ class Assertion
/**
* Assert that the class implements the interface.
*
- * @param mixed $class
- * @param string $interfaceName
+ * @param mixed $class
+ * @param string $interfaceName
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function implementsInterface($class, $interfaceName, $message = null, string $propertyPath = null): bool
+ public static function implementsInterface($class, $interfaceName, $message = null, $propertyPath = null)
{
try {
- $reflection = new ReflectionClass($class);
+ $reflection = new \ReflectionClass($class);
if (!$reflection->implementsInterface($interfaceName)) {
$message = \sprintf(
static::generateMessage($message ?: 'Class "%s" does not implement interface "%s".'),
@@ -1872,7 +1753,7 @@ class Assertion
throw static::createException($class, $message, static::INTERFACE_NOT_IMPLEMENTED, $propertyPath, ['interface' => $interfaceName]);
}
- } catch (ReflectionException $e) {
+ } catch (\ReflectionException $e) {
$message = \sprintf(
static::generateMessage($message ?: 'Class "%s" failed reflection.'),
static::stringify($class)
@@ -1892,15 +1773,13 @@ class Assertion
* content afterwards, just to decode and check for yourself instead
* of using this assertion.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function isJsonString($value, $message = null, string $propertyPath = null): bool
+ public static function isJsonString($value, $message = null, $propertyPath = null)
{
if (null === \json_decode($value) && JSON_ERROR_NONE !== \json_last_error()) {
$message = \sprintf(
@@ -1919,15 +1798,13 @@ class Assertion
*
* Uses code from {@link https://github.com/ramsey/uuid} that is MIT licensed.
*
- * @param string $value
+ * @param string $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function uuid($value, $message = null, string $propertyPath = null): bool
+ public static function uuid($value, $message = null, $propertyPath = null)
{
$value = \str_replace(['urn:', 'uuid:', '{', '}'], '', $value);
@@ -1952,15 +1829,13 @@ class Assertion
*
* @see https://en.wikipedia.org/wiki/E.164
*
- * @param string $value
+ * @param string $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function e164($value, $message = null, string $propertyPath = null): bool
+ public static function e164($value, $message = null, $propertyPath = null)
{
if (!\preg_match('/^\+?[1-9]\d{1,14}$/', $value)) {
$message = \sprintf(
@@ -1977,16 +1852,14 @@ class Assertion
/**
* Assert that the count of countable is equal to count.
*
- * @param array|Countable|ResourceBundle|SimpleXMLElement $countable
- * @param int $count
- * @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param array|\Countable|\ResourceBundle|\SimpleXMLElement $countable
+ * @param int $count
+ * @param string|null $message
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function count($countable, $count, $message = null, string $propertyPath = null): bool
+ public static function count($countable, $count, $message = null, $propertyPath = null)
{
if ($count !== \count($countable)) {
$message = \sprintf(
@@ -2004,16 +1877,14 @@ class Assertion
/**
* Assert that the countable have at least $count elements.
*
- * @param array|Countable|ResourceBundle|SimpleXMLElement $countable
- * @param int $count
- * @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param array|\Countable|\ResourceBundle|\SimpleXMLElement $countable
+ * @param int $count
+ * @param string|null $message
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function minCount($countable, $count, $message = null, string $propertyPath = null): bool
+ public static function minCount($countable, $count, $message = null, $propertyPath = null)
{
if ($count > \count($countable)) {
$message = \sprintf(
@@ -2031,16 +1902,14 @@ class Assertion
/**
* Assert that the countable have at most $count elements.
*
- * @param array|Countable|ResourceBundle|SimpleXMLElement $countable
- * @param int $count
- * @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param array|\Countable|\ResourceBundle|\SimpleXMLElement $countable
+ * @param int $count
+ * @param string|null $message
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function maxCount($countable, $count, $message = null, string $propertyPath = null): bool
+ public static function maxCount($countable, $count, $message = null, $propertyPath = null)
{
if ($count < \count($countable)) {
$message = \sprintf(
@@ -2061,11 +1930,9 @@ class Assertion
* - "all" delegation.
*
* @param string $method
- * @param array $args
+ * @param array $args
*
* @return bool|mixed
- *
- * @throws AssertionFailedException
*/
public static function __callStatic($method, $args)
{
@@ -2107,16 +1974,14 @@ class Assertion
/**
* Determines if the values array has every choice as key and that this choice has content.
*
- * @param array $values
- * @param array $choices
+ * @param array $values
+ * @param array $choices
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function choicesNotEmpty(array $values, array $choices, $message = null, string $propertyPath = null): bool
+ public static function choicesNotEmpty(array $values, array $choices, $message = null, $propertyPath = null)
{
static::notEmpty($values, $message, $propertyPath);
@@ -2130,16 +1995,14 @@ class Assertion
/**
* Determines that the named method is defined in the provided object.
*
- * @param string $value
- * @param mixed $object
+ * @param string $value
+ * @param mixed $object
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function methodExists($value, $object, $message = null, string $propertyPath = null): bool
+ public static function methodExists($value, $object, $message = null, $propertyPath = null)
{
static::isObject($object, $message, $propertyPath);
@@ -2158,15 +2021,13 @@ class Assertion
/**
* Determines that the provided value is an object.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function isObject($value, $message = null, string $propertyPath = null): bool
+ public static function isObject($value, $message = null, $propertyPath = null)
{
if (!\is_object($value)) {
$message = \sprintf(
@@ -2183,16 +2044,14 @@ class Assertion
/**
* Determines if the value is less than given limit.
*
- * @param mixed $value
- * @param mixed $limit
+ * @param mixed $value
+ * @param mixed $limit
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function lessThan($value, $limit, $message = null, string $propertyPath = null): bool
+ public static function lessThan($value, $limit, $message = null, $propertyPath = null)
{
if ($value >= $limit) {
$message = \sprintf(
@@ -2210,16 +2069,14 @@ class Assertion
/**
* Determines if the value is less or equal than given limit.
*
- * @param mixed $value
- * @param mixed $limit
+ * @param mixed $value
+ * @param mixed $limit
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function lessOrEqualThan($value, $limit, $message = null, string $propertyPath = null): bool
+ public static function lessOrEqualThan($value, $limit, $message = null, $propertyPath = null)
{
if ($value > $limit) {
$message = \sprintf(
@@ -2237,16 +2094,14 @@ class Assertion
/**
* Determines if the value is greater than given limit.
*
- * @param mixed $value
- * @param mixed $limit
+ * @param mixed $value
+ * @param mixed $limit
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function greaterThan($value, $limit, $message = null, string $propertyPath = null): bool
+ public static function greaterThan($value, $limit, $message = null, $propertyPath = null)
{
if ($value <= $limit) {
$message = \sprintf(
@@ -2264,16 +2119,14 @@ class Assertion
/**
* Determines if the value is greater or equal than given limit.
*
- * @param mixed $value
- * @param mixed $limit
+ * @param mixed $value
+ * @param mixed $limit
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function greaterOrEqualThan($value, $limit, $message = null, string $propertyPath = null): bool
+ public static function greaterOrEqualThan($value, $limit, $message = null, $propertyPath = null)
{
if ($value < $limit) {
$message = \sprintf(
@@ -2291,17 +2144,15 @@ class Assertion
/**
* Assert that a value is greater or equal than a lower limit, and less than or equal to an upper limit.
*
- * @param mixed $value
- * @param mixed $lowerLimit
- * @param mixed $upperLimit
- * @param string|callable|null $message
+ * @param mixed $value
+ * @param mixed $lowerLimit
+ * @param mixed $upperLimit
+ * @param string $message
* @param string $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function between($value, $lowerLimit, $upperLimit, $message = null, string $propertyPath = null): bool
+ public static function between($value, $lowerLimit, $upperLimit, $message = null, $propertyPath = null)
{
if ($lowerLimit > $value || $value > $upperLimit) {
$message = \sprintf(
@@ -2320,17 +2171,15 @@ class Assertion
/**
* Assert that a value is greater than a lower limit, and less than an upper limit.
*
- * @param mixed $value
- * @param mixed $lowerLimit
- * @param mixed $upperLimit
- * @param string|callable|null $message
+ * @param mixed $value
+ * @param mixed $lowerLimit
+ * @param mixed $upperLimit
+ * @param string $message
* @param string $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function betweenExclusive($value, $lowerLimit, $upperLimit, $message = null, string $propertyPath = null): bool
+ public static function betweenExclusive($value, $lowerLimit, $upperLimit, $message = null, $propertyPath = null)
{
if ($lowerLimit >= $value || $value >= $upperLimit) {
$message = \sprintf(
@@ -2349,15 +2198,13 @@ class Assertion
/**
* Assert that extension is loaded.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function extensionLoaded($value, $message = null, string $propertyPath = null): bool
+ public static function extensionLoaded($value, $message = null, $propertyPath = null)
{
if (!\extension_loaded($value)) {
$message = \sprintf(
@@ -2374,24 +2221,22 @@ class Assertion
/**
* Assert that date is valid and corresponds to the given format.
*
- * @param string $value
- * @param string $format supports all of the options date(), except for the following:
- * N, w, W, t, L, o, B, a, A, g, h, I, O, P, Z, c, r
+ * @param string $value
+ * @param string $format supports all of the options date(), except for the following:
+ * N, w, W, t, L, o, B, a, A, g, h, I, O, P, Z, c, r
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
*
- * @throws AssertionFailedException
- *
* @see http://php.net/manual/function.date.php#refsect1-function.date-parameters
*/
- public static function date($value, $format, $message = null, string $propertyPath = null): bool
+ public static function date($value, $format, $message = null, $propertyPath = null)
{
static::string($value, $message, $propertyPath);
static::string($format, $message, $propertyPath);
- $dateTime = DateTime::createFromFormat('!'.$format, $value);
+ $dateTime = \DateTime::createFromFormat('!'.$format, $value);
if (false === $dateTime || $value !== $dateTime->format($format)) {
$message = \sprintf(
@@ -2409,15 +2254,13 @@ class Assertion
/**
* Assert that the value is an object, or a class that exists.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function objectOrClass($value, $message = null, string $propertyPath = null): bool
+ public static function objectOrClass($value, $message = null, $propertyPath = null)
{
if (!\is_object($value)) {
static::classExists($value, $message, $propertyPath);
@@ -2429,16 +2272,14 @@ class Assertion
/**
* Assert that the value is an object or class, and that the property exists.
*
- * @param mixed $value
- * @param string $property
+ * @param mixed $value
+ * @param string $property
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function propertyExists($value, $property, $message = null, string $propertyPath = null): bool
+ public static function propertyExists($value, $property, $message = null, $propertyPath = null)
{
static::objectOrClass($value);
@@ -2458,16 +2299,14 @@ class Assertion
/**
* Assert that the value is an object or class, and that the properties all exist.
*
- * @param mixed $value
- * @param array $properties
+ * @param mixed $value
+ * @param array $properties
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function propertiesExist($value, array $properties, $message = null, string $propertyPath = null): bool
+ public static function propertiesExist($value, array $properties, $message = null, $propertyPath = null)
{
static::objectOrClass($value);
static::allString($properties, $message, $propertyPath);
@@ -2495,17 +2334,15 @@ class Assertion
/**
* Assert comparison of two versions.
*
- * @param string $version1
- * @param string $operator
- * @param string $version2
+ * @param string $version1
+ * @param string $operator
+ * @param string $version2
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function version($version1, $operator, $version2, $message = null, string $propertyPath = null): bool
+ public static function version($version1, $operator, $version2, $message = null, $propertyPath = null)
{
static::notEmpty($operator, 'versionCompare operator is required and cannot be empty.');
@@ -2526,16 +2363,14 @@ class Assertion
/**
* Assert on PHP version.
*
- * @param string $operator
- * @param mixed $version
+ * @param string $operator
+ * @param mixed $version
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function phpVersion($operator, $version, $message = null, string $propertyPath = null): bool
+ public static function phpVersion($operator, $version, $message = null, $propertyPath = null)
{
static::defined('PHP_VERSION');
@@ -2545,17 +2380,15 @@ class Assertion
/**
* Assert that extension is loaded and a specific version is installed.
*
- * @param string $extension
- * @param string $operator
- * @param mixed $version
+ * @param string $extension
+ * @param string $operator
+ * @param mixed $version
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function extensionVersion($extension, $operator, $version, $message = null, string $propertyPath = null): bool
+ public static function extensionVersion($extension, $operator, $version, $message = null, $propertyPath = null)
{
static::extensionLoaded($extension, $message, $propertyPath);
@@ -2565,15 +2398,13 @@ class Assertion
/**
* Determines that the provided value is callable.
*
- * @param mixed $value
+ * @param mixed $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function isCallable($value, $message = null, string $propertyPath = null): bool
+ public static function isCallable($value, $message = null, $propertyPath = null)
{
if (!\is_callable($value)) {
$message = \sprintf(
@@ -2592,16 +2423,14 @@ class Assertion
*
* If the callback returns `false` the assertion will fail.
*
- * @param mixed $value
- * @param callable $callback
+ * @param mixed $value
+ * @param callable $callback
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function satisfy($value, $callback, $message = null, string $propertyPath = null): bool
+ public static function satisfy($value, $callback, $message = null, $propertyPath = null)
{
static::isCallable($callback);
@@ -2621,18 +2450,16 @@ class Assertion
* Assert that value is an IPv4 or IPv6 address
* (using input_filter/FILTER_VALIDATE_IP).
*
- * @param string $value
- * @param int|null $flag
+ * @param string $value
+ * @param int|null $flag
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
*
- * @throws AssertionFailedException
- *
* @see http://php.net/manual/filter.filters.flags.php
*/
- public static function ip($value, $flag = null, $message = null, string $propertyPath = null): bool
+ public static function ip($value, $flag = null, $message = null, $propertyPath = null)
{
static::string($value, $message, $propertyPath);
if (!\filter_var($value, FILTER_VALIDATE_IP, $flag)) {
@@ -2650,18 +2477,16 @@ class Assertion
* Assert that value is an IPv4 address
* (using input_filter/FILTER_VALIDATE_IP).
*
- * @param string $value
- * @param int|null $flag
+ * @param string $value
+ * @param int|null $flag
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
*
- * @throws AssertionFailedException
- *
* @see http://php.net/manual/filter.filters.flags.php
*/
- public static function ipv4($value, $flag = null, $message = null, string $propertyPath = null): bool
+ public static function ipv4($value, $flag = null, $message = null, $propertyPath = null)
{
static::ip($value, $flag | FILTER_FLAG_IPV4, static::generateMessage($message ?: 'Value "%s" was expected to be a valid IPv4 address.'), $propertyPath);
@@ -2672,18 +2497,16 @@ class Assertion
* Assert that value is an IPv6 address
* (using input_filter/FILTER_VALIDATE_IP).
*
- * @param string $value
- * @param int|null $flag
+ * @param string $value
+ * @param int|null $flag
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
*
- * @throws AssertionFailedException
- *
* @see http://php.net/manual/filter.filters.flags.php
*/
- public static function ipv6($value, $flag = null, $message = null, string $propertyPath = null): bool
+ public static function ipv6($value, $flag = null, $message = null, $propertyPath = null)
{
static::ip($value, $flag | FILTER_FLAG_IPV6, static::generateMessage($message ?: 'Value "%s" was expected to be a valid IPv6 address.'), $propertyPath);
@@ -2693,13 +2516,13 @@ class Assertion
/**
* Assert that a constant is defined.
*
- * @param mixed $constant
+ * @param mixed $constant
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
*/
- public static function defined($constant, $message = null, string $propertyPath = null): bool
+ public static function defined($constant, $message = null, $propertyPath = null)
{
if (!\defined($constant)) {
$message = \sprintf(static::generateMessage($message ?: 'Value "%s" expected to be a defined constant.'), $constant);
@@ -2713,15 +2536,13 @@ class Assertion
/**
* Assert that a constant is defined.
*
- * @param string $value
+ * @param string $value
* @param string|callable|null $message
- * @param string|null $propertyPath
+ * @param string|null $propertyPath
*
* @return bool
- *
- * @throws AssertionFailedException
*/
- public static function base64($value, $message = null, string $propertyPath = null): bool
+ public static function base64($value, $message = null, $propertyPath = null)
{
if (false === \base64_decode($value, true)) {
$message = \sprintf(static::generateMessage($message ?: 'Value "%s" is not a valid base64 string.'), $value);
@@ -2737,11 +2558,11 @@ class Assertion
* They are returned from this method so that the stack trace still shows
* the assertions method.
*
- * @param mixed $value
- * @param string|callable|null $message
- * @param int $code
- * @param string|null $propertyPath
- * @param array $constraints
+ * @param mixed $value
+ * @param string|callable $message
+ * @param int $code
+ * @param string|null $propertyPath
+ * @param array $constraints
*
* @return mixed
*/
@@ -2759,17 +2580,17 @@ class Assertion
*
* @return string
*/
- protected static function stringify($value): string
+ protected static function stringify($value)
{
$result = \gettype($value);
if (\is_bool($value)) {
$result = $value ? '<TRUE>' : '<FALSE>';
} elseif (\is_scalar($value)) {
- $val = (string)$value;
+ $val = (string) $value;
- if (\mb_strlen($val) > 100) {
- $val = \mb_substr($val, 0, 97).'...';
+ if (\strlen($val) > 100) {
+ $val = \substr($val, 0, 97).'...';
}
$result = $val;
@@ -2789,7 +2610,7 @@ class Assertion
/**
* Generate the message.
*
- * @param string|callable|null $message
+ * @param string|callable $message
*
* @return string
*/
@@ -2801,7 +2622,7 @@ class Assertion
$parameters = [];
try {
- $reflection = new ReflectionClass($traces[1]['class']);
+ $reflection = new \ReflectionClass($traces[1]['class']);
$method = $reflection->getMethod($traces[1]['function']);
foreach ($method->getParameters() as $index => $parameter) {
if ('message' !== $parameter->getName()) {
@@ -2815,11 +2636,11 @@ class Assertion
$message = \call_user_func_array($message, [$parameters]);
} // @codeCoverageIgnoreStart
- catch (Throwable $exception) {
+ catch (\Throwable $exception) {
$message = \sprintf('Unable to generate message : %s', $exception->getMessage());
} // @codeCoverageIgnoreEnd
}
- return (string)$message;
+ return (string) $message;
}
}
diff --git a/vendor/beberlei/assert/lib/Assert/AssertionChain.php b/vendor/beberlei/assert/lib/Assert/AssertionChain.php
index dbb6e839b..4d3ca1c01 100644
--- a/vendor/beberlei/assert/lib/Assert/AssertionChain.php
+++ b/vendor/beberlei/assert/lib/Assert/AssertionChain.php
@@ -24,15 +24,15 @@ use ReflectionClass;
*
* @method AssertionChain alnum(string|callable $message = null, string $propertyPath = null) Assert that value is alphanumeric.
* @method AssertionChain base64(string|callable $message = null, string $propertyPath = null) Assert that a constant is defined.
- * @method AssertionChain between(mixed $lowerLimit, mixed $upperLimit, string|callable $message = null, string $propertyPath = null) Assert that a value is greater or equal than a lower limit, and less than or equal to an upper limit.
- * @method AssertionChain betweenExclusive(mixed $lowerLimit, mixed $upperLimit, string|callable $message = null, string $propertyPath = null) Assert that a value is greater than a lower limit, and less than an upper limit.
+ * @method AssertionChain between(mixed $lowerLimit, mixed $upperLimit, string $message = null, string $propertyPath = null) Assert that a value is greater or equal than a lower limit, and less than or equal to an upper limit.
+ * @method AssertionChain betweenExclusive(mixed $lowerLimit, mixed $upperLimit, string $message = null, string $propertyPath = null) Assert that a value is greater than a lower limit, and less than an upper limit.
* @method AssertionChain betweenLength(int $minLength, int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string length is between min and max lengths.
* @method AssertionChain boolean(string|callable $message = null, string $propertyPath = null) Assert that value is php boolean.
* @method AssertionChain choice(array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is in array of choices.
* @method AssertionChain choicesNotEmpty(array $choices, string|callable $message = null, string $propertyPath = null) Determines if the values array has every choice as key and that this choice has content.
* @method AssertionChain classExists(string|callable $message = null, string $propertyPath = null) Assert that the class exists.
* @method AssertionChain contains(string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string contains a sequence of chars.
- * @method AssertionChain count(int $count, string|callable $message = null, string $propertyPath = null) Assert that the count of countable is equal to count.
+ * @method AssertionChain count(int $count, string $message = null, string $propertyPath = null) Assert that the count of countable is equal to count.
* @method AssertionChain date(string $format, string|callable $message = null, string $propertyPath = null) Assert that date is valid and corresponds to the given format.
* @method AssertionChain defined(string|callable $message = null, string $propertyPath = null) Assert that a constant is defined.
* @method AssertionChain digit(string|callable $message = null, string $propertyPath = null) Validates if an integer or integerish is a digit.
@@ -73,23 +73,23 @@ use ReflectionClass;
* @method AssertionChain lessOrEqualThan(mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less or equal than given limit.
* @method AssertionChain lessThan(mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less than given limit.
* @method AssertionChain max(mixed $maxValue, string|callable $message = null, string $propertyPath = null) Assert that a number is smaller as a given limit.
- * @method AssertionChain maxCount(int $count, string|callable $message = null, string $propertyPath = null) Assert that the countable have at most $count elements.
+ * @method AssertionChain maxCount(int $count, string $message = null, string $propertyPath = null) Assert that the countable have at most $count elements.
* @method AssertionChain maxLength(int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string value is not longer than $maxLength chars.
* @method AssertionChain methodExists(mixed $object, string|callable $message = null, string $propertyPath = null) Determines that the named method is defined in the provided object.
* @method AssertionChain min(mixed $minValue, string|callable $message = null, string $propertyPath = null) Assert that a value is at least as big as a given limit.
- * @method AssertionChain minCount(int $count, string|callable $message = null, string $propertyPath = null) Assert that the countable have at least $count elements.
+ * @method AssertionChain minCount(int $count, string $message = null, string $propertyPath = null) Assert that the countable have at least $count elements.
* @method AssertionChain minLength(int $minLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that a string is at least $minLength chars long.
* @method AssertionChain noContent(string|callable $message = null, string $propertyPath = null) Assert that value is empty.
* @method AssertionChain notBlank(string|callable $message = null, string $propertyPath = null) Assert that value is not blank.
* @method AssertionChain notContains(string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string does not contains a sequence of chars.
* @method AssertionChain notEmpty(string|callable $message = null, string $propertyPath = null) Assert that value is not empty.
* @method AssertionChain notEmptyKey(string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array/array-accessible object and its value is not empty.
- * @method AssertionChain notEq(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not equal (using ==).
+ * @method AssertionChain notEq(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not equal (using == ).
* @method AssertionChain notInArray(array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is not in array of choices.
* @method AssertionChain notIsInstanceOf(string $className, string|callable $message = null, string $propertyPath = null) Assert that value is not instance of given class-name.
* @method AssertionChain notNull(string|callable $message = null, string $propertyPath = null) Assert that value is not null.
* @method AssertionChain notRegex(string $pattern, string|callable $message = null, string $propertyPath = null) Assert that value does not match a regex.
- * @method AssertionChain notSame(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not the same (using ===).
+ * @method AssertionChain notSame(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not the same (using === ).
* @method AssertionChain null(string|callable $message = null, string $propertyPath = null) Assert that value is null.
* @method AssertionChain numeric(string|callable $message = null, string $propertyPath = null) Assert that value is numeric.
* @method AssertionChain objectOrClass(string|callable $message = null, string $propertyPath = null) Assert that the value is an object, or a class that exists.
@@ -113,19 +113,8 @@ use ReflectionClass;
*/
class AssertionChain
{
- /**
- * @var mixed
- */
private $value;
-
- /**
- * @var string|callable|null
- */
private $defaultMessage;
-
- /**
- * @var string|null
- */
private $defaultPropertyPath;
/**
@@ -145,14 +134,7 @@ class AssertionChain
/** @var string|Assertion Class to use for assertion calls */
private $assertionClassName = 'Assert\Assertion';
- /**
- * AssertionChain constructor.
- *
- * @param mixed $value
- * @param string|callable|null $defaultMessage
- * @param string|null $defaultPropertyPath
- */
- public function __construct($value, $defaultMessage = null, string $defaultPropertyPath = null)
+ public function __construct($value, $defaultMessage = null, $defaultPropertyPath = null)
{
$this->value = $value;
$this->defaultMessage = $defaultMessage;
@@ -163,11 +145,11 @@ class AssertionChain
* Call assertion on the current value in the chain.
*
* @param string $methodName
- * @param array $args
+ * @param array $args
*
- * @return AssertionChain
+ * @return \Assert\AssertionChain
*/
- public function __call($methodName, $args): AssertionChain
+ public function __call($methodName, $args)
{
if (true === $this->alwaysValid) {
return $this;
@@ -209,9 +191,9 @@ class AssertionChain
/**
* Switch chain into validation mode for an array of values.
*
- * @return AssertionChain
+ * @return \Assert\AssertionChain
*/
- public function all(): AssertionChain
+ public function all()
{
$this->all = true;
@@ -221,9 +203,9 @@ class AssertionChain
/**
* Switch chain into mode allowing nulls, ignoring further assertions.
*
- * @return AssertionChain
+ * @return \Assert\AssertionChain
*/
- public function nullOr(): AssertionChain
+ public function nullOr()
{
if (null === $this->value) {
$this->alwaysValid = true;
@@ -237,7 +219,7 @@ class AssertionChain
*
* @return $this
*/
- public function setAssertionClassName($className): AssertionChain
+ public function setAssertionClassName($className)
{
if (!\is_string($className)) {
throw new LogicException('Exception class name must be passed as a string');
diff --git a/vendor/beberlei/assert/lib/Assert/AssertionFailedException.php b/vendor/beberlei/assert/lib/Assert/AssertionFailedException.php
index c18483884..e895aa8e5 100644
--- a/vendor/beberlei/assert/lib/Assert/AssertionFailedException.php
+++ b/vendor/beberlei/assert/lib/Assert/AssertionFailedException.php
@@ -18,18 +18,9 @@ use Throwable;
interface AssertionFailedException extends Throwable
{
- /**
- * @return string|null
- */
public function getPropertyPath();
- /**
- * @return mixed
- */
public function getValue();
- /**
- * @return array
- */
- public function getConstraints(): array;
+ public function getConstraints();
}
diff --git a/vendor/beberlei/assert/lib/Assert/InvalidArgumentException.php b/vendor/beberlei/assert/lib/Assert/InvalidArgumentException.php
index acd966544..20c890992 100644
--- a/vendor/beberlei/assert/lib/Assert/InvalidArgumentException.php
+++ b/vendor/beberlei/assert/lib/Assert/InvalidArgumentException.php
@@ -16,22 +16,11 @@ namespace Assert;
class InvalidArgumentException extends \InvalidArgumentException implements AssertionFailedException
{
- /**
- * @var string|null
- */
private $propertyPath;
-
- /**
- * @var mixed
- */
private $value;
-
- /**
- * @var array
- */
private $constraints;
- public function __construct($message, $code, string $propertyPath = null, $value = null, array $constraints = [])
+ public function __construct($message, $code, $propertyPath, $value, array $constraints = [])
{
parent::__construct($message, $code);
@@ -47,7 +36,7 @@ class InvalidArgumentException extends \InvalidArgumentException implements Asse
* Useful to transport information about the nature of the error
* back to higher layers.
*
- * @return string|null
+ * @return string
*/
public function getPropertyPath()
{
@@ -69,7 +58,7 @@ class InvalidArgumentException extends \InvalidArgumentException implements Asse
*
* @return array
*/
- public function getConstraints(): array
+ public function getConstraints()
{
return $this->constraints;
}
diff --git a/vendor/beberlei/assert/lib/Assert/LazyAssertion.php b/vendor/beberlei/assert/lib/Assert/LazyAssertion.php
index 6ccd64236..abbaf4bcb 100644
--- a/vendor/beberlei/assert/lib/Assert/LazyAssertion.php
+++ b/vendor/beberlei/assert/lib/Assert/LazyAssertion.php
@@ -21,96 +21,96 @@ use LogicException;
*
* @author Benjamin Eberlei <[email protected]>
*
- * @method LazyAssertion alnum(string|callable $message = null, string $propertyPath = null) Assert that value is alphanumeric.
- * @method LazyAssertion base64(string|callable $message = null, string $propertyPath = null) Assert that a constant is defined.
- * @method LazyAssertion between(mixed $lowerLimit, mixed $upperLimit, string|callable $message = null, string $propertyPath = null) Assert that a value is greater or equal than a lower limit, and less than or equal to an upper limit.
- * @method LazyAssertion betweenExclusive(mixed $lowerLimit, mixed $upperLimit, string|callable $message = null, string $propertyPath = null) Assert that a value is greater than a lower limit, and less than an upper limit.
- * @method LazyAssertion betweenLength(int $minLength, int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string length is between min and max lengths.
- * @method LazyAssertion boolean(string|callable $message = null, string $propertyPath = null) Assert that value is php boolean.
- * @method LazyAssertion choice(array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is in array of choices.
- * @method LazyAssertion choicesNotEmpty(array $choices, string|callable $message = null, string $propertyPath = null) Determines if the values array has every choice as key and that this choice has content.
- * @method LazyAssertion classExists(string|callable $message = null, string $propertyPath = null) Assert that the class exists.
- * @method LazyAssertion contains(string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string contains a sequence of chars.
- * @method LazyAssertion count(int $count, string|callable $message = null, string $propertyPath = null) Assert that the count of countable is equal to count.
- * @method LazyAssertion date(string $format, string|callable $message = null, string $propertyPath = null) Assert that date is valid and corresponds to the given format.
- * @method LazyAssertion defined(string|callable $message = null, string $propertyPath = null) Assert that a constant is defined.
- * @method LazyAssertion digit(string|callable $message = null, string $propertyPath = null) Validates if an integer or integerish is a digit.
- * @method LazyAssertion directory(string|callable $message = null, string $propertyPath = null) Assert that a directory exists.
- * @method LazyAssertion e164(string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid E164 Phone Number.
- * @method LazyAssertion email(string|callable $message = null, string $propertyPath = null) Assert that value is an email address (using input_filter/FILTER_VALIDATE_EMAIL).
- * @method LazyAssertion endsWith(string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string ends with a sequence of chars.
- * @method LazyAssertion eq(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are equal (using ==).
- * @method LazyAssertion eqArraySubset(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that the array contains the subset.
- * @method LazyAssertion extensionLoaded(string|callable $message = null, string $propertyPath = null) Assert that extension is loaded.
- * @method LazyAssertion extensionVersion(string $operator, mixed $version, string|callable $message = null, string $propertyPath = null) Assert that extension is loaded and a specific version is installed.
- * @method LazyAssertion false(string|callable $message = null, string $propertyPath = null) Assert that the value is boolean False.
- * @method LazyAssertion file(string|callable $message = null, string $propertyPath = null) Assert that a file exists.
- * @method LazyAssertion float(string|callable $message = null, string $propertyPath = null) Assert that value is a php float.
- * @method LazyAssertion greaterOrEqualThan(mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is greater or equal than given limit.
- * @method LazyAssertion greaterThan(mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is greater than given limit.
- * @method LazyAssertion implementsInterface(string $interfaceName, string|callable $message = null, string $propertyPath = null) Assert that the class implements the interface.
- * @method LazyAssertion inArray(array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is in array of choices. This is an alias of Assertion::choice().
- * @method LazyAssertion integer(string|callable $message = null, string $propertyPath = null) Assert that value is a php integer.
- * @method LazyAssertion integerish(string|callable $message = null, string $propertyPath = null) Assert that value is a php integer'ish.
- * @method LazyAssertion interfaceExists(string|callable $message = null, string $propertyPath = null) Assert that the interface exists.
- * @method LazyAssertion ip(int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv4 or IPv6 address.
- * @method LazyAssertion ipv4(int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv4 address.
- * @method LazyAssertion ipv6(int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv6 address.
- * @method LazyAssertion isArray(string|callable $message = null, string $propertyPath = null) Assert that value is an array.
- * @method LazyAssertion isArrayAccessible(string|callable $message = null, string $propertyPath = null) Assert that value is an array or an array-accessible object.
- * @method LazyAssertion isCallable(string|callable $message = null, string $propertyPath = null) Determines that the provided value is callable.
- * @method LazyAssertion isCountable(string|callable $message = null, string $propertyPath = null) Assert that value is countable.
- * @method LazyAssertion isInstanceOf(string $className, string|callable $message = null, string $propertyPath = null) Assert that value is instance of given class-name.
- * @method LazyAssertion isJsonString(string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid json string.
- * @method LazyAssertion isObject(string|callable $message = null, string $propertyPath = null) Determines that the provided value is an object.
- * @method LazyAssertion isResource(string|callable $message = null, string $propertyPath = null) Assert that value is a resource.
- * @method LazyAssertion isTraversable(string|callable $message = null, string $propertyPath = null) Assert that value is an array or a traversable object.
- * @method LazyAssertion keyExists(string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array.
- * @method LazyAssertion keyIsset(string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array/array-accessible object using isset().
- * @method LazyAssertion keyNotExists(string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key does not exist in an array.
- * @method LazyAssertion length(int $length, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string has a given length.
- * @method LazyAssertion lessOrEqualThan(mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less or equal than given limit.
- * @method LazyAssertion lessThan(mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less than given limit.
- * @method LazyAssertion max(mixed $maxValue, string|callable $message = null, string $propertyPath = null) Assert that a number is smaller as a given limit.
- * @method LazyAssertion maxCount(int $count, string|callable $message = null, string $propertyPath = null) Assert that the countable have at most $count elements.
- * @method LazyAssertion maxLength(int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string value is not longer than $maxLength chars.
- * @method LazyAssertion methodExists(mixed $object, string|callable $message = null, string $propertyPath = null) Determines that the named method is defined in the provided object.
- * @method LazyAssertion min(mixed $minValue, string|callable $message = null, string $propertyPath = null) Assert that a value is at least as big as a given limit.
- * @method LazyAssertion minCount(int $count, string|callable $message = null, string $propertyPath = null) Assert that the countable have at least $count elements.
- * @method LazyAssertion minLength(int $minLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that a string is at least $minLength chars long.
- * @method LazyAssertion noContent(string|callable $message = null, string $propertyPath = null) Assert that value is empty.
- * @method LazyAssertion notBlank(string|callable $message = null, string $propertyPath = null) Assert that value is not blank.
- * @method LazyAssertion notContains(string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string does not contains a sequence of chars.
- * @method LazyAssertion notEmpty(string|callable $message = null, string $propertyPath = null) Assert that value is not empty.
- * @method LazyAssertion notEmptyKey(string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array/array-accessible object and its value is not empty.
- * @method LazyAssertion notEq(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not equal (using ==).
- * @method LazyAssertion notInArray(array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is not in array of choices.
- * @method LazyAssertion notIsInstanceOf(string $className, string|callable $message = null, string $propertyPath = null) Assert that value is not instance of given class-name.
- * @method LazyAssertion notNull(string|callable $message = null, string $propertyPath = null) Assert that value is not null.
- * @method LazyAssertion notRegex(string $pattern, string|callable $message = null, string $propertyPath = null) Assert that value does not match a regex.
- * @method LazyAssertion notSame(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not the same (using ===).
- * @method LazyAssertion null(string|callable $message = null, string $propertyPath = null) Assert that value is null.
- * @method LazyAssertion numeric(string|callable $message = null, string $propertyPath = null) Assert that value is numeric.
- * @method LazyAssertion objectOrClass(string|callable $message = null, string $propertyPath = null) Assert that the value is an object, or a class that exists.
- * @method LazyAssertion phpVersion(mixed $version, string|callable $message = null, string $propertyPath = null) Assert on PHP version.
- * @method LazyAssertion propertiesExist(array $properties, string|callable $message = null, string $propertyPath = null) Assert that the value is an object or class, and that the properties all exist.
- * @method LazyAssertion propertyExists(string $property, string|callable $message = null, string $propertyPath = null) Assert that the value is an object or class, and that the property exists.
- * @method LazyAssertion range(mixed $minValue, mixed $maxValue, string|callable $message = null, string $propertyPath = null) Assert that value is in range of numbers.
- * @method LazyAssertion readable(string|callable $message = null, string $propertyPath = null) Assert that the value is something readable.
- * @method LazyAssertion regex(string $pattern, string|callable $message = null, string $propertyPath = null) Assert that value matches a regex.
- * @method LazyAssertion same(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are the same (using ===).
- * @method LazyAssertion satisfy(callable $callback, string|callable $message = null, string $propertyPath = null) Assert that the provided value is valid according to a callback.
- * @method LazyAssertion scalar(string|callable $message = null, string $propertyPath = null) Assert that value is a PHP scalar.
- * @method LazyAssertion startsWith(string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string starts with a sequence of chars.
- * @method LazyAssertion string(string|callable $message = null, string $propertyPath = null) Assert that value is a string.
- * @method LazyAssertion subclassOf(string $className, string|callable $message = null, string $propertyPath = null) Assert that value is subclass of given class-name.
- * @method LazyAssertion true(string|callable $message = null, string $propertyPath = null) Assert that the value is boolean True.
- * @method LazyAssertion url(string|callable $message = null, string $propertyPath = null) Assert that value is an URL.
- * @method LazyAssertion uuid(string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid UUID.
- * @method LazyAssertion version(string $operator, string $version2, string|callable $message = null, string $propertyPath = null) Assert comparison of two versions.
- * @method LazyAssertion writeable(string|callable $message = null, string $propertyPath = null) Assert that the value is something writeable.
- * @method LazyAssertion all() Switch chain into validation mode for an array of values.
- * @method LazyAssertion nullOr() Switch chain into mode allowing nulls, ignoring further assertions.
+ * @method $this alnum(string|callable $message = null, string $propertyPath = null) Assert that value is alphanumeric.
+ * @method $this base64(string|callable $message = null, string $propertyPath = null) Assert that a constant is defined.
+ * @method $this between(mixed $lowerLimit, mixed $upperLimit, string $message = null, string $propertyPath = null) Assert that a value is greater or equal than a lower limit, and less than or equal to an upper limit.
+ * @method $this betweenExclusive(mixed $lowerLimit, mixed $upperLimit, string $message = null, string $propertyPath = null) Assert that a value is greater than a lower limit, and less than an upper limit.
+ * @method $this betweenLength(int $minLength, int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string length is between min and max lengths.
+ * @method $this boolean(string|callable $message = null, string $propertyPath = null) Assert that value is php boolean.
+ * @method $this choice(array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is in array of choices.
+ * @method $this choicesNotEmpty(array $choices, string|callable $message = null, string $propertyPath = null) Determines if the values array has every choice as key and that this choice has content.
+ * @method $this classExists(string|callable $message = null, string $propertyPath = null) Assert that the class exists.
+ * @method $this contains(string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string contains a sequence of chars.
+ * @method $this count(int $count, string $message = null, string $propertyPath = null) Assert that the count of countable is equal to count.
+ * @method $this date(string $format, string|callable $message = null, string $propertyPath = null) Assert that date is valid and corresponds to the given format.
+ * @method $this defined(string|callable $message = null, string $propertyPath = null) Assert that a constant is defined.
+ * @method $this digit(string|callable $message = null, string $propertyPath = null) Validates if an integer or integerish is a digit.
+ * @method $this directory(string|callable $message = null, string $propertyPath = null) Assert that a directory exists.
+ * @method $this e164(string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid E164 Phone Number.
+ * @method $this email(string|callable $message = null, string $propertyPath = null) Assert that value is an email address (using input_filter/FILTER_VALIDATE_EMAIL).
+ * @method $this endsWith(string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string ends with a sequence of chars.
+ * @method $this eq(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are equal (using ==).
+ * @method $this eqArraySubset(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that the array contains the subset.
+ * @method $this extensionLoaded(string|callable $message = null, string $propertyPath = null) Assert that extension is loaded.
+ * @method $this extensionVersion(string $operator, mixed $version, string|callable $message = null, string $propertyPath = null) Assert that extension is loaded and a specific version is installed.
+ * @method $this false(string|callable $message = null, string $propertyPath = null) Assert that the value is boolean False.
+ * @method $this file(string|callable $message = null, string $propertyPath = null) Assert that a file exists.
+ * @method $this float(string|callable $message = null, string $propertyPath = null) Assert that value is a php float.
+ * @method $this greaterOrEqualThan(mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is greater or equal than given limit.
+ * @method $this greaterThan(mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is greater than given limit.
+ * @method $this implementsInterface(string $interfaceName, string|callable $message = null, string $propertyPath = null) Assert that the class implements the interface.
+ * @method $this inArray(array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is in array of choices. This is an alias of Assertion::choice().
+ * @method $this integer(string|callable $message = null, string $propertyPath = null) Assert that value is a php integer.
+ * @method $this integerish(string|callable $message = null, string $propertyPath = null) Assert that value is a php integer'ish.
+ * @method $this interfaceExists(string|callable $message = null, string $propertyPath = null) Assert that the interface exists.
+ * @method $this ip(int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv4 or IPv6 address.
+ * @method $this ipv4(int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv4 address.
+ * @method $this ipv6(int $flag = null, string|callable $message = null, string $propertyPath = null) Assert that value is an IPv6 address.
+ * @method $this isArray(string|callable $message = null, string $propertyPath = null) Assert that value is an array.
+ * @method $this isArrayAccessible(string|callable $message = null, string $propertyPath = null) Assert that value is an array or an array-accessible object.
+ * @method $this isCallable(string|callable $message = null, string $propertyPath = null) Determines that the provided value is callable.
+ * @method $this isCountable(string|callable $message = null, string $propertyPath = null) Assert that value is countable.
+ * @method $this isInstanceOf(string $className, string|callable $message = null, string $propertyPath = null) Assert that value is instance of given class-name.
+ * @method $this isJsonString(string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid json string.
+ * @method $this isObject(string|callable $message = null, string $propertyPath = null) Determines that the provided value is an object.
+ * @method $this isResource(string|callable $message = null, string $propertyPath = null) Assert that value is a resource.
+ * @method $this isTraversable(string|callable $message = null, string $propertyPath = null) Assert that value is an array or a traversable object.
+ * @method $this keyExists(string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array.
+ * @method $this keyIsset(string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array/array-accessible object using isset().
+ * @method $this keyNotExists(string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key does not exist in an array.
+ * @method $this length(int $length, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string has a given length.
+ * @method $this lessOrEqualThan(mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less or equal than given limit.
+ * @method $this lessThan(mixed $limit, string|callable $message = null, string $propertyPath = null) Determines if the value is less than given limit.
+ * @method $this max(mixed $maxValue, string|callable $message = null, string $propertyPath = null) Assert that a number is smaller as a given limit.
+ * @method $this maxCount(int $count, string $message = null, string $propertyPath = null) Assert that the countable have at most $count elements.
+ * @method $this maxLength(int $maxLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string value is not longer than $maxLength chars.
+ * @method $this methodExists(mixed $object, string|callable $message = null, string $propertyPath = null) Determines that the named method is defined in the provided object.
+ * @method $this min(mixed $minValue, string|callable $message = null, string $propertyPath = null) Assert that a value is at least as big as a given limit.
+ * @method $this minCount(int $count, string $message = null, string $propertyPath = null) Assert that the countable have at least $count elements.
+ * @method $this minLength(int $minLength, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that a string is at least $minLength chars long.
+ * @method $this noContent(string|callable $message = null, string $propertyPath = null) Assert that value is empty.
+ * @method $this notBlank(string|callable $message = null, string $propertyPath = null) Assert that value is not blank.
+ * @method $this notContains(string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string does not contains a sequence of chars.
+ * @method $this notEmpty(string|callable $message = null, string $propertyPath = null) Assert that value is not empty.
+ * @method $this notEmptyKey(string|int $key, string|callable $message = null, string $propertyPath = null) Assert that key exists in an array/array-accessible object and its value is not empty.
+ * @method $this notEq(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not equal (using == ).
+ * @method $this notInArray(array $choices, string|callable $message = null, string $propertyPath = null) Assert that value is not in array of choices.
+ * @method $this notIsInstanceOf(string $className, string|callable $message = null, string $propertyPath = null) Assert that value is not instance of given class-name.
+ * @method $this notNull(string|callable $message = null, string $propertyPath = null) Assert that value is not null.
+ * @method $this notRegex(string $pattern, string|callable $message = null, string $propertyPath = null) Assert that value does not match a regex.
+ * @method $this notSame(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are not the same (using === ).
+ * @method $this null(string|callable $message = null, string $propertyPath = null) Assert that value is null.
+ * @method $this numeric(string|callable $message = null, string $propertyPath = null) Assert that value is numeric.
+ * @method $this objectOrClass(string|callable $message = null, string $propertyPath = null) Assert that the value is an object, or a class that exists.
+ * @method $this phpVersion(mixed $version, string|callable $message = null, string $propertyPath = null) Assert on PHP version.
+ * @method $this propertiesExist(array $properties, string|callable $message = null, string $propertyPath = null) Assert that the value is an object or class, and that the properties all exist.
+ * @method $this propertyExists(string $property, string|callable $message = null, string $propertyPath = null) Assert that the value is an object or class, and that the property exists.
+ * @method $this range(mixed $minValue, mixed $maxValue, string|callable $message = null, string $propertyPath = null) Assert that value is in range of numbers.
+ * @method $this readable(string|callable $message = null, string $propertyPath = null) Assert that the value is something readable.
+ * @method $this regex(string $pattern, string|callable $message = null, string $propertyPath = null) Assert that value matches a regex.
+ * @method $this same(mixed $value2, string|callable $message = null, string $propertyPath = null) Assert that two values are the same (using ===).
+ * @method $this satisfy(callable $callback, string|callable $message = null, string $propertyPath = null) Assert that the provided value is valid according to a callback.
+ * @method $this scalar(string|callable $message = null, string $propertyPath = null) Assert that value is a PHP scalar.
+ * @method $this startsWith(string $needle, string|callable $message = null, string $propertyPath = null, string $encoding = 'utf8') Assert that string starts with a sequence of chars.
+ * @method $this string(string|callable $message = null, string $propertyPath = null) Assert that value is a string.
+ * @method $this subclassOf(string $className, string|callable $message = null, string $propertyPath = null) Assert that value is subclass of given class-name.
+ * @method $this true(string|callable $message = null, string $propertyPath = null) Assert that the value is boolean True.
+ * @method $this url(string|callable $message = null, string $propertyPath = null) Assert that value is an URL.
+ * @method $this uuid(string|callable $message = null, string $propertyPath = null) Assert that the given string is a valid UUID.
+ * @method $this version(string $operator, string $version2, string|callable $message = null, string $propertyPath = null) Assert comparison of two versions.
+ * @method $this writeable(string|callable $message = null, string $propertyPath = null) Assert that the value is something writeable.
+ * @method $this all() Switch chain into validation mode for an array of values.
+ * @method $this nullOr() Switch chain into mode allowing nulls, ignoring further assertions.
*/
class LazyAssertion
{
@@ -127,13 +127,9 @@ class LazyAssertion
private $exceptionClass = LazyAssertionException::class;
/**
- * @param mixed $value
- * @param string|null $propertyPath
- * @param string|callable|null $defaultMessage
- *
- * @return static
+ * @return $this
*/
- public function that($value, string $propertyPath = null, $defaultMessage = null)
+ public function that($value, $propertyPath, $defaultMessage = null)
{
$this->currentChainFailed = false;
$this->thisChainTryAll = false;
@@ -144,7 +140,7 @@ class LazyAssertion
}
/**
- * @return static
+ * @return $this
*/
public function tryAll()
{
@@ -157,12 +153,6 @@ class LazyAssertion
return $this;
}
- /**
- * @param string $method
- * @param array $args
- *
- * @return static
- */
public function __call($method, $args)
{
if (false === $this->alwaysTryAll
@@ -183,11 +173,11 @@ class LazyAssertion
}
/**
- * @return bool
- *
* @throws LazyAssertionException
+ *
+ * @return bool
*/
- public function verifyNow(): bool
+ public function verifyNow()
{
if ($this->errors) {
throw \call_user_func([$this->exceptionClass, 'fromErrors'], $this->errors);
@@ -199,12 +189,12 @@ class LazyAssertion
/**
* @param string $className
*
- * @return static
+ * @return $this
*/
public function setAssertClass(string $className)
{
if (Assert::class !== $className && !\is_subclass_of($className, Assert::class)) {
- throw new LogicException($className.' is not (a subclass of) '.Assert::class);
+ throw new LogicException($className.' is not (a subclass of) '. Assert::class);
}
$this->assertClass = $className;
@@ -215,7 +205,7 @@ class LazyAssertion
/**
* @param string $className
*
- * @return static
+ * @return $this
*/
public function setExceptionClass(string $className)
{
diff --git a/vendor/beberlei/assert/lib/Assert/LazyAssertionException.php b/vendor/beberlei/assert/lib/Assert/LazyAssertionException.php
index f76ecc699..0a834c1cb 100644
--- a/vendor/beberlei/assert/lib/Assert/LazyAssertionException.php
+++ b/vendor/beberlei/assert/lib/Assert/LazyAssertionException.php
@@ -26,7 +26,7 @@ class LazyAssertionException extends InvalidArgumentException
*
* @return self
*/
- public static function fromErrors(array $errors): self
+ public static function fromErrors(array $errors)
{
$message = \sprintf('The following %d assertions failed:', \count($errors))."\n";
@@ -45,10 +45,7 @@ class LazyAssertionException extends InvalidArgumentException
$this->errors = $errors;
}
- /**
- * @return InvalidArgumentException[]
- */
- public function getErrorExceptions(): array
+ public function getErrorExceptions()
{
return $this->errors;
}
diff --git a/vendor/beberlei/assert/lib/Assert/functions.php b/vendor/beberlei/assert/lib/Assert/functions.php
index e0ccbd7d9..67bb6315e 100644
--- a/vendor/beberlei/assert/lib/Assert/functions.php
+++ b/vendor/beberlei/assert/lib/Assert/functions.php
@@ -20,12 +20,6 @@ namespace Assert;
* The invocation of this method starts an assertion chain
* that is happening on the passed value.
*
- * @param mixed $value
- * @param string|callable|null $defaultMessage
- * @param string $defaultPropertyPath
- *
- * @return AssertionChain
- *
* @example
*
* \Assert\that($value)->notEmpty()->integer();
@@ -33,8 +27,14 @@ namespace Assert;
*
* The assertion chain can be stateful, that means be careful when you reuse
* it. You should never pass around the chain.
+ *
+ * @param mixed $value
+ * @param string $defaultMessage
+ * @param string $defaultPropertyPath
+ *
+ * @return \Assert\AssertionChain
*/
-function that($value, $defaultMessage = null, string $defaultPropertyPath = null): AssertionChain
+function that($value, $defaultMessage = null, $defaultPropertyPath = null)
{
return Assert::that($value, $defaultMessage, $defaultPropertyPath);
}
@@ -42,13 +42,13 @@ function that($value, $defaultMessage = null, string $defaultPropertyPath = null
/**
* Start validation on a set of values, returns {@link AssertionChain}.
*
- * @param mixed $values
- * @param string|callable|null $defaultMessage
+ * @param mixed $values
+ * @param string $defaultMessage
* @param string $defaultPropertyPath
*
- * @return AssertionChain
+ * @return \Assert\AssertionChain
*/
-function thatAll($values, $defaultMessage = null, string $defaultPropertyPath = null): AssertionChain
+function thatAll($values, $defaultMessage = null, $defaultPropertyPath = null)
{
return Assert::thatAll($values, $defaultMessage, $defaultPropertyPath);
}
@@ -56,15 +56,15 @@ function thatAll($values, $defaultMessage = null, string $defaultPropertyPath =
/**
* Start validation and allow NULL, returns {@link AssertionChain}.
*
- * @param mixed $value
- * @param string|callable|null $defaultMessage
+ * @param mixed $value
+ * @param string $defaultMessage
* @param string $defaultPropertyPath
*
- * @return AssertionChain
+ * @return \Assert\AssertionChain
*
* @deprecated In favour of Assert::thatNullOr($value, $defaultMessage = null, $defaultPropertyPath = null)
*/
-function thatNullOr($value, $defaultMessage = null, string $defaultPropertyPath = null): AssertionChain
+function thatNullOr($value, $defaultMessage = null, $defaultPropertyPath = null)
{
return Assert::thatNullOr($value, $defaultMessage, $defaultPropertyPath);
}
@@ -72,9 +72,9 @@ function thatNullOr($value, $defaultMessage = null, string $defaultPropertyPath
/**
* Create a lazy assertion object.
*
- * @return LazyAssertion
+ * @return \Assert\LazyAssertion
*/
-function lazy(): LazyAssertion
+function lazy()
{
return Assert::lazy();
}
diff --git a/vendor/beberlei/assert/phpstan-code.neon b/vendor/beberlei/assert/phpstan-code.neon
index 49aa5723f..630379dbe 100644
--- a/vendor/beberlei/assert/phpstan-code.neon
+++ b/vendor/beberlei/assert/phpstan-code.neon
@@ -1,10 +1,3 @@
parameters:
autoload_files:
- bin/MethodDocGenerator.php
- ignoreErrors:
- # is_countable() is available only in PHP 7.3+
- - '#Function is_countable not found#'
-
- # Calling count() on ResourceBundle and SimpleXMLElement is valid from PHP 7.0+, but does not correctly advertise
- # the fact, and so PHPStan has an issue with this. This will be fixed in PHP 7.4+
- - '#Call to function count\(\) with argument type array|Countable|ResourceBundle|SimpleXMLElement will always result in number 1#'
diff --git a/vendor/bin/php-parse b/vendor/bin/php-parse
new file mode 120000
index 000000000..062d66a3e
--- /dev/null
+++ b/vendor/bin/php-parse
@@ -0,0 +1 @@
+../nikic/php-parser/bin/php-parse \ No newline at end of file
diff --git a/vendor/bin/phpstan b/vendor/bin/phpstan
new file mode 120000
index 000000000..959384f7f
--- /dev/null
+++ b/vendor/bin/phpstan
@@ -0,0 +1 @@
+../phpstan/phpstan/phpstan \ No newline at end of file
diff --git a/vendor/bin/phpstan.phar b/vendor/bin/phpstan.phar
new file mode 120000
index 000000000..502769bef
--- /dev/null
+++ b/vendor/bin/phpstan.phar
@@ -0,0 +1 @@
+../phpstan/phpstan/phpstan.phar \ No newline at end of file
diff --git a/vendor/bin/phpunit b/vendor/bin/phpunit
new file mode 120000
index 000000000..2c4893031
--- /dev/null
+++ b/vendor/bin/phpunit
@@ -0,0 +1 @@
+../phpunit/phpunit/phpunit \ No newline at end of file
diff --git a/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml b/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml
index 5dd343abd..991e6503c 100644
--- a/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml
+++ b/vendor/chillerlan/php-qrcode/.github/workflows/tests.yml
@@ -1,5 +1,4 @@
# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
-# https://github.com/localheinz/php-library-template/blob/master/.github/workflows/continuous-integration.yml
# https://github.com/sebastianbergmann/phpunit/blob/master/.github/workflows/ci.yml
on:
@@ -10,46 +9,69 @@ name: "Continuous Integration"
jobs:
- tests:
- name: "Unit Tests"
+ static-code-analysis:
+ name: "Static Code Analysis"
+
runs-on: ubuntu-latest
- strategy:
- matrix:
- php-binary:
- - php7.2
- - php7.3
- - php7.4
+ env:
+ PHAN_ALLOW_XDEBUG: 0
+ PHAN_DISABLE_XDEBUG_WARN: 1
steps:
- name: "Checkout"
- uses: actions/[email protected]
+ uses: actions/checkout@v2
- - name: "Install dependencies with composer"
- run: ${{ matrix.php-binary }} $(which composer) update --no-interaction --no-progress --no-suggest
+ - name: "Install PHP"
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: "7.4"
+ coverage: none
+ tools: pecl
+ extensions: ast, gd, imagick, json, mbstring
- - name: "Run unit tests with phpunit"
- run: ${{ matrix.php-binary }} vendor/bin/phpunit --configuration=phpunit.xml --no-coverage
+ - name: "Update dependencies with composer"
+ run: composer update --no-interaction --no-ansi --no-progress --no-suggest
+ - name: "Run phan"
+ run: php vendor/bin/phan
- code-coverage:
- name: "Code Coverage"
- runs-on: ubuntu-latest
+ tests:
+ name: "Unit Tests"
+
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ os:
+ - ubuntu-latest
+# - windows-latest
+ php-version:
+ - "7.2"
+ - "7.3"
+ - "7.4"
+ - "8.0"
steps:
- name: "Checkout"
- uses: actions/[email protected]
+ uses: actions/checkout@v2
- - name: "Install locked dependencies with composer"
- run: php7.4 $(which composer) install --no-interaction --no-progress --no-suggest
+ - name: "Install PHP with extensions"
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-version }}
+ coverage: pcov
+ tools: pecl
+ extensions: gd, imagick, json, mbstring
- - name: "Dump Xdebug filter with phpunit/phpunit"
- run: php7.4 vendor/bin/phpunit --configuration=phpunit.xml --dump-xdebug-filter=.build/phpunit/xdebug-filter.php
+ - name: "Install dependencies with composer"
+ run: composer update --no-ansi --no-interaction --no-progress --no-suggest
- - name: "Collect code coverage with Xdebug and phpunit/phpunit"
- run: php7.4 vendor/bin/phpunit --configuration=phpunit.xml --prepend=.build/phpunit/xdebug-filter.php
+ - name: "Run tests with phpunit"
+ run: php vendor/phpunit/phpunit/phpunit --configuration=phpunit.xml
- name: "Send code coverage report to Codecov.io"
- env:
- CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- run: bash <(curl -s https://codecov.io/bash)
+ uses: codecov/codecov-action@v1
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
diff --git a/vendor/chillerlan/php-qrcode/.travis.yml b/vendor/chillerlan/php-qrcode/.travis.yml
index 78b8d79e9..7b2377fd8 100644
--- a/vendor/chillerlan/php-qrcode/.travis.yml
+++ b/vendor/chillerlan/php-qrcode/.travis.yml
@@ -1,3 +1,8 @@
+branches:
+ only:
+ - main
+ - v3.2.x
+
addons:
apt:
packages:
diff --git a/vendor/chillerlan/php-qrcode/composer.json b/vendor/chillerlan/php-qrcode/composer.json
index c2299a350..625149ce7 100644
--- a/vendor/chillerlan/php-qrcode/composer.json
+++ b/vendor/chillerlan/php-qrcode/composer.json
@@ -24,12 +24,13 @@
}
],
"require": {
- "php": "^7.2",
+ "php": "^7.2 || ^8.0",
"ext-mbstring": "*",
- "chillerlan/php-settings-container": "^1.2"
+ "chillerlan/php-settings-container": "^1.2.2"
},
"require-dev": {
"phpunit/phpunit": "^8.5",
+ "phan/phan": "^3.2.2",
"setasign/fpdf": "^1.8.2"
},
"suggest": {
diff --git a/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php b/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php
index f9d94ae34..76aa5ced7 100644
--- a/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php
+++ b/vendor/chillerlan/php-qrcode/examples/QRImageWithLogo.php
@@ -41,9 +41,9 @@ class QRImageWithLogo extends QRImage{
}
$this->matrix->setLogoSpace(
- $this->options->logoWidth,
- $this->options->logoHeight
- // not utilizing the position here
+ $this->options->logoSpaceWidth,
+ $this->options->logoSpaceHeight
+ // not utilizing the position here
);
// there's no need to save the result of dump() into $this->image here
@@ -55,9 +55,9 @@ class QRImageWithLogo extends QRImage{
$w = imagesx($im);
$h = imagesy($im);
- // set new logo size, leave a border of 1 module
- $lw = ($this->options->logoWidth - 2) * $this->options->scale;
- $lh = ($this->options->logoHeight - 2) * $this->options->scale;
+ // set new logo size, leave a border of 1 module (no proportional resize/centering)
+ $lw = ($this->options->logoSpaceWidth - 2) * $this->options->scale;
+ $lh = ($this->options->logoSpaceHeight - 2) * $this->options->scale;
// get the qrcode size
$ql = $this->matrix->size() * $this->options->scale;
diff --git a/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php b/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php
index 987e10c11..36f63d503 100644
--- a/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php
+++ b/vendor/chillerlan/php-qrcode/examples/imageWithLogo.php
@@ -16,14 +16,15 @@ require_once __DIR__.'/../vendor/autoload.php';
$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
/**
- * @property int $logoWidth
- * @property int $logoHeight
+ * @property int $logoSpaceWidth
+ * @property int $logoSpaceHeight
*
* @noinspection PhpIllegalPsrClassPathInspection
*/
class LogoOptions extends QROptions{
- protected $logoWidth;
- protected $logoHeight;
+ // size in QR modules, multiply with QROptions::$scale for pixel size
+ protected $logoSpaceWidth;
+ protected $logoSpaceHeight;
}
$options = new LogoOptions;
@@ -31,8 +32,8 @@ $options = new LogoOptions;
$options->version = 7;
$options->eccLevel = QRCode::ECC_H;
$options->imageBase64 = false;
-$options->logoWidth = 13;
-$options->logoHeight = 13;
+$options->logoSpaceWidth = 13;
+$options->logoSpaceHeight = 13;
$options->scale = 5;
$options->imageTransparent = false;
diff --git a/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php b/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
index a6d8b09e2..5b4487a40 100644
--- a/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
+++ b/vendor/chillerlan/php-qrcode/src/Data/QRMatrix.php
@@ -589,12 +589,12 @@ class QRMatrix{
throw new QRCodeDataException('ECC level "H" required to add logo space');
}
- // we need uneven sizes, adjust if needed
- if(($width % 2) === 0){
+ // we need uneven sizes to center the logo space, adjust if needed
+ if($startX === null && ($width % 2) === 0){
$width++;
}
- if(($height % 2) === 0){
+ if($startY === null && ($height % 2) === 0){
$height++;
}
diff --git a/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php b/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php
index 34ecf4f91..c4466a658 100644
--- a/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php
+++ b/vendor/chillerlan/php-qrcode/tests/Output/QRImageTest.php
@@ -13,6 +13,7 @@
namespace chillerlan\QRCodeTest\Output;
use chillerlan\QRCode\{QRCode, Output\QRImage};
+use const PHP_MAJOR_VERSION;
class QRImageTest extends QROutputTestAbstract{
@@ -63,7 +64,14 @@ class QRImageTest extends QROutputTestAbstract{
$this->setOutputInterface();
- $this::assertIsResource($this->outputInterface->dump());
+ $data = $this->outputInterface->dump();
+
+ if(PHP_MAJOR_VERSION >= 8){
+ $this::assertInstanceOf('\\GdImage', $data);
+ }
+ else{
+ $this::assertIsResource($data);
+ }
}
}
diff --git a/vendor/chillerlan/php-settings-container/.travis.yml b/vendor/chillerlan/php-settings-container/.travis.yml
index 208cdeb6a..c2ad210ed 100644
--- a/vendor/chillerlan/php-settings-container/.travis.yml
+++ b/vendor/chillerlan/php-settings-container/.travis.yml
@@ -4,10 +4,10 @@ matrix:
include:
- php: 7.2
- php: 7.3
- - php: 7.4snapshot
+ - php: 7.4
+ - php: 8.0
- php: nightly
allow_failures:
- - php: 7.4snapshot
- php: nightly
diff --git a/vendor/chillerlan/php-settings-container/README.md b/vendor/chillerlan/php-settings-container/README.md
index 7d0ccf09d..f3bb26c5e 100644
--- a/vendor/chillerlan/php-settings-container/README.md
+++ b/vendor/chillerlan/php-settings-container/README.md
@@ -51,8 +51,8 @@ Profit!
## Usage
-The `SettingsContainerInterface` (wrapped in`SettingsContainerAbstract` ) provides plug-in functionality for immutable object variables and adds some fancy, like loading/saving JSON, arrays etc.
-It takes iterable as the only constructor argument and calls a method with the trait's name on invocation (`MyTrait::MyTrait()`) for each used trait.
+The `SettingsContainerInterface` (wrapped in`SettingsContainerAbstract` ) provides plug-in functionality for immutable object properties and adds some fancy, like loading/saving JSON, arrays etc.
+It takes an `iterable` as the only constructor argument and calls a method with the trait's name on invocation (`MyTrait::MyTrait()`) for each used trait.
### Simple usage
```php
@@ -61,6 +61,13 @@ class MyContainer extends SettingsContainerAbstract{
protected $bar;
}
```
+Typed properties in PHP 7.4+:
+```php
+class MyContainer extends SettingsContainerAbstract{
+ protected string $foo;
+ protected string $bar;
+}
+```
```php
// use it just like a \stdClass
@@ -78,6 +85,8 @@ $container->fromJSON('{"foo": "what", "bar": "foo"}');
$container->toArray(); // -> ['foo' => 'what', 'bar' => 'foo']
// or JSON
$container->toJSON(); // -> {"foo": "what", "bar": "foo"}
+// JSON via JsonSerializable
+$json = json_encode($container); // -> {"foo": "what", "bar": "foo"}
//non-existing properties will be ignored:
$container->nope = 'what';
diff --git a/vendor/chillerlan/php-settings-container/composer.json b/vendor/chillerlan/php-settings-container/composer.json
index 4dc758665..4464e6e8a 100644
--- a/vendor/chillerlan/php-settings-container/composer.json
+++ b/vendor/chillerlan/php-settings-container/composer.json
@@ -20,11 +20,11 @@
"source": "https://github.com/chillerlan/php-settings-container"
},
"require": {
- "php": "^7.2",
+ "php": "^7.2 || ^8.0",
"ext-json": "*"
},
"require-dev": {
- "phpunit/phpunit": "^8.3"
+ "phpunit/phpunit": "^8.4"
},
"autoload": {
"psr-4": {
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index 247294d66..0cd6055d1 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -42,30 +42,75 @@ namespace Composer\Autoload;
*/
class ClassLoader
{
+ /** @var ?string */
private $vendorDir;
// PSR-4
+ /**
+ * @var array[]
+ * @psalm-var array<string, array<string, int>>
+ */
private $prefixLengthsPsr4 = array();
+ /**
+ * @var array[]
+ * @psalm-var array<string, array<int, string>>
+ */
private $prefixDirsPsr4 = array();
+ /**
+ * @var array[]
+ * @psalm-var array<string, string>
+ */
private $fallbackDirsPsr4 = array();
// PSR-0
+ /**
+ * @var array[]
+ * @psalm-var array<string, array<string, string[]>>
+ */
private $prefixesPsr0 = array();
+ /**
+ * @var array[]
+ * @psalm-var array<string, string>
+ */
private $fallbackDirsPsr0 = array();
+ /** @var bool */
private $useIncludePath = false;
+
+ /**
+ * @var string[]
+ * @psalm-var array<string, string>
+ */
private $classMap = array();
+
+ /** @var bool */
private $classMapAuthoritative = false;
+
+ /**
+ * @var bool[]
+ * @psalm-var array<string, bool>
+ */
private $missingClasses = array();
+
+ /** @var ?string */
private $apcuPrefix;
+ /**
+ * @var self[]
+ */
private static $registeredLoaders = array();
+ /**
+ * @param ?string $vendorDir
+ */
public function __construct($vendorDir = null)
{
$this->vendorDir = $vendorDir;
}
+ /**
+ * @return string[]
+ */
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
@@ -75,28 +120,47 @@ class ClassLoader
return array();
}
+ /**
+ * @return array[]
+ * @psalm-return array<string, array<int, string>>
+ */
public function getPrefixesPsr4()
{
return $this->prefixDirsPsr4;
}
+ /**
+ * @return array[]
+ * @psalm-return array<string, string>
+ */
public function getFallbackDirs()
{
return $this->fallbackDirsPsr0;
}
+ /**
+ * @return array[]
+ * @psalm-return array<string, string>
+ */
public function getFallbackDirsPsr4()
{
return $this->fallbackDirsPsr4;
}
+ /**
+ * @return string[] Array of classname => path
+ * @psalm-var array<string, string>
+ */
public function getClassMap()
{
return $this->classMap;
}
/**
- * @param array $classMap Class to filename map
+ * @param string[] $classMap Class to filename map
+ * @psalm-param array<string, string> $classMap
+ *
+ * @return void
*/
public function addClassMap(array $classMap)
{
@@ -111,9 +175,11 @@ class ClassLoader
* Registers a set of PSR-0 directories for a given prefix, either
* appending or prepending to the ones previously set for this prefix.
*
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 root directories
- * @param bool $prepend Whether to prepend the directories
+ * @param string $prefix The prefix
+ * @param string[]|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @return void
*/
public function add($prefix, $paths, $prepend = false)
{
@@ -156,11 +222,13 @@ class ClassLoader
* Registers a set of PSR-4 directories for a given namespace, either
* appending or prepending to the ones previously set for this namespace.
*
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
- * @param bool $prepend Whether to prepend the directories
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param string[]|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
+ *
+ * @return void
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
@@ -204,8 +272,10 @@ class ClassLoader
* Registers a set of PSR-0 directories for a given prefix,
* replacing any others previously set for this prefix.
*
- * @param string $prefix The prefix
- * @param array|string $paths The PSR-0 base directories
+ * @param string $prefix The prefix
+ * @param string[]|string $paths The PSR-0 base directories
+ *
+ * @return void
*/
public function set($prefix, $paths)
{
@@ -220,10 +290,12 @@ class ClassLoader
* Registers a set of PSR-4 directories for a given namespace,
* replacing any others previously set for this namespace.
*
- * @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-4 base directories
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param string[]|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
+ *
+ * @return void
*/
public function setPsr4($prefix, $paths)
{
@@ -243,6 +315,8 @@ class ClassLoader
* Turns on searching the include path for class files.
*
* @param bool $useIncludePath
+ *
+ * @return void
*/
public function setUseIncludePath($useIncludePath)
{
@@ -265,6 +339,8 @@ class ClassLoader
* that have not been registered with the class map.
*
* @param bool $classMapAuthoritative
+ *
+ * @return void
*/
public function setClassMapAuthoritative($classMapAuthoritative)
{
@@ -285,6 +361,8 @@ class ClassLoader
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
*
* @param string|null $apcuPrefix
+ *
+ * @return void
*/
public function setApcuPrefix($apcuPrefix)
{
@@ -305,6 +383,8 @@ class ClassLoader
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
+ *
+ * @return void
*/
public function register($prepend = false)
{
@@ -324,6 +404,8 @@ class ClassLoader
/**
* Unregisters this instance as an autoloader.
+ *
+ * @return void
*/
public function unregister()
{
@@ -338,7 +420,7 @@ class ClassLoader
* Loads the given class or interface.
*
* @param string $class The name of the class
- * @return bool|null True if loaded, null otherwise
+ * @return true|null True if loaded, null otherwise
*/
public function loadClass($class)
{
@@ -347,6 +429,8 @@ class ClassLoader
return true;
}
+
+ return null;
}
/**
@@ -401,6 +485,11 @@ class ClassLoader
return self::$registeredLoaders;
}
+ /**
+ * @param string $class
+ * @param string $ext
+ * @return string|false
+ */
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
@@ -472,6 +561,10 @@ class ClassLoader
* Scope isolated include.
*
* Prevents access to $this/self from included files.
+ *
+ * @param string $file
+ * @return void
+ * @private
*/
function includeFile($file)
{
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
index e17d3b0a7..d50e0c9fc 100644
--- a/vendor/composer/InstalledVersions.php
+++ b/vendor/composer/InstalledVersions.php
@@ -1,364 +1,350 @@
<?php
-
-
-
-
-
-
-
-
-
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <[email protected]>
+ * Jordi Boggiano <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
namespace Composer;
use Composer\Autoload\ClassLoader;
use Composer\Semver\VersionParser;
-
-
-
-
-
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require its presence, you can require `composer-runtime-api ^2.0`
+ */
class InstalledVersions
{
-private static $installed = array (
- 'root' =>
- array (
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f96abd2b52b9de5eac3651594ca32c6a4023c3e3',
- 'dev-requirement' => true,
- 'name' => '__root__',
- ),
- 'versions' =>
- array (
- '__root__' =>
- array (
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f96abd2b52b9de5eac3651594ca32c6a4023c3e3',
- 'dev-requirement' => false,
- ),
- 'beberlei/assert' =>
- array (
- 'pretty_version' => 'v3.2.7',
- 'version' => '3.2.7.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd63a6943fc4fd1a2aedb65994e3548715105abcf',
- 'dev-requirement' => false,
- ),
- 'chillerlan/php-qrcode' =>
- array (
- 'pretty_version' => '3.4.0',
- 'version' => '3.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd8bf297e6843a53aeaa8f3285ce04fc349d133d6',
- 'dev-requirement' => false,
- ),
- 'chillerlan/php-settings-container' =>
- array (
- 'pretty_version' => '1.2.1',
- 'version' => '1.2.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'b9b0431dffd74102ee92348a63b4c33fc8ba639b',
- 'dev-requirement' => false,
- ),
- 'j4mie/idiorm' =>
- array (
- 'pretty_version' => 'v1.5.7',
- 'version' => '1.5.7.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd23f97053ef5d0b988a02c6a71eb5c6118b2f5b4',
- 'dev-requirement' => false,
- ),
- 'mervick/material-design-icons' =>
- array (
- 'pretty_version' => '2.2.0',
- 'version' => '2.2.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '635435c8d3df3a6da3241648caf8a65d1c07cc1a',
- 'dev-requirement' => false,
- ),
- 'paragonie/constant_time_encoding' =>
- array (
- 'pretty_version' => 'v2.4.0',
- 'version' => '2.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c',
- 'dev-requirement' => false,
- ),
- 'spomky-labs/otphp' =>
- array (
- 'pretty_version' => 'v10.0.1',
- 'version' => '10.0.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f44cce5a9db4b8da410215d992110482c931232f',
- 'dev-requirement' => false,
- ),
- 'thecodingmachine/safe' =>
- array (
- 'pretty_version' => 'v1.3.3',
- 'version' => '1.3.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'a8ab0876305a4cdaef31b2350fcb9811b5608dbc',
- 'dev-requirement' => false,
- ),
- ),
-);
-private static $canGetVendors;
-private static $installedByVendor = array();
-
-
-
-
-
-
-
-public static function getInstalledPackages()
-{
-$packages = array();
-foreach (self::getInstalled() as $installed) {
-$packages[] = array_keys($installed['versions']);
-}
-
-if (1 === \count($packages)) {
-return $packages[0];
-}
-
-return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
-}
-
-
-
-
-
-
-
-
-
-
-public static function isInstalled($packageName, $includeDevRequirements = true)
-{
-foreach (self::getInstalled() as $installed) {
-if (isset($installed['versions'][$packageName])) {
-return $includeDevRequirements || empty($installed['versions'][$packageName]['dev-requirement']);
-}
-}
-
-return false;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-public static function satisfies(VersionParser $parser, $packageName, $constraint)
-{
-$constraint = $parser->parseConstraints($constraint);
-$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
-
-return $provided->matches($constraint);
-}
-
-
-
-
-
-
-
-
-
-
-public static function getVersionRanges($packageName)
-{
-foreach (self::getInstalled() as $installed) {
-if (!isset($installed['versions'][$packageName])) {
-continue;
-}
-
-$ranges = array();
-if (isset($installed['versions'][$packageName]['pretty_version'])) {
-$ranges[] = $installed['versions'][$packageName]['pretty_version'];
-}
-if (array_key_exists('aliases', $installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
-}
-if (array_key_exists('replaced', $installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
-}
-if (array_key_exists('provided', $installed['versions'][$packageName])) {
-$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
-}
-
-return implode(' || ', $ranges);
-}
-
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-
-
-
-
-public static function getVersion($packageName)
-{
-foreach (self::getInstalled() as $installed) {
-if (!isset($installed['versions'][$packageName])) {
-continue;
-}
-
-if (!isset($installed['versions'][$packageName]['version'])) {
-return null;
-}
-
-return $installed['versions'][$packageName]['version'];
-}
-
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-
-
-
-
-public static function getPrettyVersion($packageName)
-{
-foreach (self::getInstalled() as $installed) {
-if (!isset($installed['versions'][$packageName])) {
-continue;
-}
-
-if (!isset($installed['versions'][$packageName]['pretty_version'])) {
-return null;
-}
-
-return $installed['versions'][$packageName]['pretty_version'];
-}
-
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-
-
-
-
-public static function getReference($packageName)
-{
-foreach (self::getInstalled() as $installed) {
-if (!isset($installed['versions'][$packageName])) {
-continue;
-}
-
-if (!isset($installed['versions'][$packageName]['reference'])) {
-return null;
-}
-
-return $installed['versions'][$packageName]['reference'];
-}
-
-throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
-}
-
-
-
-
-
-public static function getRootPackage()
-{
-$installed = self::getInstalled();
-
-return $installed[0]['root'];
-}
-
-
-
-
-
-
-
-public static function getRawData()
-{
-return self::$installed;
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-public static function reload($data)
-{
-self::$installed = $data;
-self::$installedByVendor = array();
-}
-
-
-
-
-private static function getInstalled()
-{
-if (null === self::$canGetVendors) {
-self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
-}
-
-$installed = array();
-
-if (self::$canGetVendors) {
-foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
-if (isset(self::$installedByVendor[$vendorDir])) {
-$installed[] = self::$installedByVendor[$vendorDir];
-} elseif (is_file($vendorDir.'/composer/installed.php')) {
-$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
-}
-}
-}
-
-$installed[] = self::$installed;
-
-return $installed;
-}
+ /**
+ * @var mixed[]|null
+ * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
+ */
+ private static $installed;
+
+ /**
+ * @var bool|null
+ */
+ private static $canGetVendors;
+
+ /**
+ * @var array[]
+ * @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+ */
+ private static $installedByVendor = array();
+
+ /**
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
+ *
+ * @return string[]
+ * @psalm-return list<string>
+ */
+ public static function getInstalledPackages()
+ {
+ $packages = array();
+ foreach (self::getInstalled() as $installed) {
+ $packages[] = array_keys($installed['versions']);
+ }
+
+ if (1 === \count($packages)) {
+ return $packages[0];
+ }
+
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+ }
+
+ /**
+ * Returns a list of all package names with a specific type e.g. 'library'
+ *
+ * @param string $type
+ * @return string[]
+ * @psalm-return list<string>
+ */
+ public static function getInstalledPackagesByType($type)
+ {
+ $packagesByType = array();
+
+ foreach (self::getInstalled() as $installed) {
+ foreach ($installed['versions'] as $name => $package) {
+ if (isset($package['type']) && $package['type'] === $type) {
+ $packagesByType[] = $name;
+ }
+ }
+ }
+
+ return $packagesByType;
+ }
+
+ /**
+ * Checks whether the given package is installed
+ *
+ * This also returns true if the package name is provided or replaced by another package
+ *
+ * @param string $packageName
+ * @param bool $includeDevRequirements
+ * @return bool
+ */
+ public static function isInstalled($packageName, $includeDevRequirements = true)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (isset($installed['versions'][$packageName])) {
+ return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the given package satisfies a version constraint
+ *
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+ *
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+ *
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ * @return bool
+ */
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
+ {
+ $constraint = $parser->parseConstraints($constraint);
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+ return $provided->matches($constraint);
+ }
+
+ /**
+ * Returns a version constraint representing all the range(s) which are installed for a given package
+ *
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+ * whether a given version of a package is installed, and not just whether it exists
+ *
+ * @param string $packageName
+ * @return string Version constraint usable with composer/semver
+ */
+ public static function getVersionRanges($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ $ranges = array();
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+ }
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+ }
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+ }
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+ }
+
+ return implode(' || ', $ranges);
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getPrettyVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['pretty_version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+ */
+ public static function getReference($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['reference'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['reference'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+ */
+ public static function getInstallPath($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
+ */
+ public static function getRootPackage()
+ {
+ $installed = self::getInstalled();
+
+ return $installed[0]['root'];
+ }
+
+ /**
+ * Returns the raw installed.php data for custom implementations
+ *
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+ * @return array[]
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
+ */
+ public static function getRawData()
+ {
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = include __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ return self::$installed;
+ }
+
+ /**
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
+ *
+ * @return array[]
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+ */
+ public static function getAllRawData()
+ {
+ return self::getInstalled();
+ }
+
+ /**
+ * Lets you reload the static array from another file
+ *
+ * This is only useful for complex integrations in which a project needs to use
+ * this class but then also needs to execute another project's autoloader in process,
+ * and wants to ensure both projects have access to their version of installed.php.
+ *
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
+ * the data it needs from this class, then call reload() with
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+ * the project in which it runs can then also use this class safely, without
+ * interference between PHPUnit's dependencies and the project's dependencies.
+ *
+ * @param array[] $data A vendor/composer/installed.php data set
+ * @return void
+ *
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
+ */
+ public static function reload($data)
+ {
+ self::$installed = $data;
+ self::$installedByVendor = array();
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+ */
+ private static function getInstalled()
+ {
+ if (null === self::$canGetVendors) {
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+ }
+
+ $installed = array();
+
+ if (self::$canGetVendors) {
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+ if (isset(self::$installedByVendor[$vendorDir])) {
+ $installed[] = self::$installedByVendor[$vendorDir];
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+ self::$installed = $installed[count($installed) - 1];
+ }
+ }
+ }
+ }
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = require __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+ $installed[] = self::$installed;
+
+ return $installed;
+ }
}
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index 429869e46..fe7d8c4c5 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -12,4 +12,627 @@ return array(
'IdiormString' => $vendorDir . '/j4mie/idiorm/idiorm.php',
'IdiormStringException' => $vendorDir . '/j4mie/idiorm/idiorm.php',
'ORM' => $vendorDir . '/j4mie/idiorm/idiorm.php',
+ 'PHPUnit\\Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
+ 'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php',
+ 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
+ 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php',
+ 'PHPUnit\\Framework\\CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
+ 'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php',
+ 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php',
+ 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php',
+ 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php',
+ 'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php',
+ 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php',
+ 'PHPUnit\\Framework\\Constraint\\BinaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php',
+ 'PHPUnit\\Framework\\Constraint\\Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
+ 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
+ 'PHPUnit\\Framework\\Constraint\\Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php',
+ 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php',
+ 'PHPUnit\\Framework\\Constraint\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php',
+ 'PHPUnit\\Framework\\Constraint\\FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php',
+ 'PHPUnit\\Framework\\Constraint\\GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php',
+ 'PHPUnit\\Framework\\Constraint\\IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php',
+ 'PHPUnit\\Framework\\Constraint\\IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php',
+ 'PHPUnit\\Framework\\Constraint\\IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php',
+ 'PHPUnit\\Framework\\Constraint\\IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
+ 'PHPUnit\\Framework\\Constraint\\IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php',
+ 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php',
+ 'PHPUnit\\Framework\\Constraint\\IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php',
+ 'PHPUnit\\Framework\\Constraint\\IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php',
+ 'PHPUnit\\Framework\\Constraint\\IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php',
+ 'PHPUnit\\Framework\\Constraint\\IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php',
+ 'PHPUnit\\Framework\\Constraint\\IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php',
+ 'PHPUnit\\Framework\\Constraint\\IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php',
+ 'PHPUnit\\Framework\\Constraint\\IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php',
+ 'PHPUnit\\Framework\\Constraint\\JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
+ 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
+ 'PHPUnit\\Framework\\Constraint\\LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalNot' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalOr' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalXor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php',
+ 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php',
+ 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\Operator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php',
+ 'PHPUnit\\Framework\\Constraint\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php',
+ 'PHPUnit\\Framework\\Constraint\\SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php',
+ 'PHPUnit\\Framework\\Constraint\\StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php',
+ 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php',
+ 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php',
+ 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php',
+ 'PHPUnit\\Framework\\Constraint\\UnaryOperator' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php',
+ 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php',
+ 'PHPUnit\\Framework\\DataProviderTestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
+ 'PHPUnit\\Framework\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Error.php',
+ 'PHPUnit\\Framework\\ErrorTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/ErrorTestCase.php',
+ 'PHPUnit\\Framework\\Error\\Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
+ 'PHPUnit\\Framework\\Error\\Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Error.php',
+ 'PHPUnit\\Framework\\Error\\Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
+ 'PHPUnit\\Framework\\Error\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
+ 'PHPUnit\\Framework\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Exception.php',
+ 'PHPUnit\\Framework\\ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
+ 'PHPUnit\\Framework\\ExecutionOrderDependency' => $vendorDir . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php',
+ 'PHPUnit\\Framework\\ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php',
+ 'PHPUnit\\Framework\\IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
+ 'PHPUnit\\Framework\\IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
+ 'PHPUnit\\Framework\\IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/IncompleteTestError.php',
+ 'PHPUnit\\Framework\\InvalidArgumentException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php',
+ 'PHPUnit\\Framework\\InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php',
+ 'PHPUnit\\Framework\\InvalidDataProviderException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php',
+ 'PHPUnit\\Framework\\InvalidParameterGroupException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php',
+ 'PHPUnit\\Framework\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/MissingCoversAnnotationException.php',
+ 'PHPUnit\\Framework\\MockObject\\Api' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/Api.php',
+ 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php',
+ 'PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php',
+ 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
+ 'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php',
+ 'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php',
+ 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
+ 'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php',
+ 'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php',
+ 'PHPUnit\\Framework\\MockObject\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
+ 'PHPUnit\\Framework\\MockObject\\Generator' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Generator.php',
+ 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
+ 'PHPUnit\\Framework\\MockObject\\InvalidMethodNameException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php',
+ 'PHPUnit\\Framework\\MockObject\\Invocation' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Invocation.php',
+ 'PHPUnit\\Framework\\MockObject\\InvocationHandler' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php',
+ 'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php',
+ 'PHPUnit\\Framework\\MockObject\\Matcher' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php',
+ 'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php',
+ 'PHPUnit\\Framework\\MockObject\\Method' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/Method.php',
+ 'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php',
+ 'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php',
+ 'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php',
+ 'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php',
+ 'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php',
+ 'PHPUnit\\Framework\\MockObject\\MockBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php',
+ 'PHPUnit\\Framework\\MockObject\\MockClass' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockClass.php',
+ 'PHPUnit\\Framework\\MockObject\\MockMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php',
+ 'PHPUnit\\Framework\\MockObject\\MockMethodSet' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php',
+ 'PHPUnit\\Framework\\MockObject\\MockObject' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php',
+ 'PHPUnit\\Framework\\MockObject\\MockTrait' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockTrait.php',
+ 'PHPUnit\\Framework\\MockObject\\MockType' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/MockType.php',
+ 'PHPUnit\\Framework\\MockObject\\MockedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/MockedCloneMethod.php',
+ 'PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php',
+ 'PHPUnit\\Framework\\MockObject\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php',
+ 'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtIndex' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php',
+ 'PHPUnit\\Framework\\MockObject\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php',
+ 'PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php',
+ 'PHPUnit\\Framework\\MockObject\\UnknownClassException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php',
+ 'PHPUnit\\Framework\\MockObject\\UnknownTraitException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php',
+ 'PHPUnit\\Framework\\MockObject\\UnknownTypeException' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php',
+ 'PHPUnit\\Framework\\MockObject\\UnmockedCloneMethod' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Api/UnmockedCloneMethod.php',
+ 'PHPUnit\\Framework\\MockObject\\Verifiable' => $vendorDir . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php',
+ 'PHPUnit\\Framework\\NoChildTestSuiteException' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php',
+ 'PHPUnit\\Framework\\OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/OutputError.php',
+ 'PHPUnit\\Framework\\PHPTAssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php',
+ 'PHPUnit\\Framework\\Reorderable' => $vendorDir . '/phpunit/phpunit/src/Framework/Reorderable.php',
+ 'PHPUnit\\Framework\\RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php',
+ 'PHPUnit\\Framework\\SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
+ 'PHPUnit\\Framework\\SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
+ 'PHPUnit\\Framework\\SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
+ 'PHPUnit\\Framework\\SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SkippedTestError.php',
+ 'PHPUnit\\Framework\\SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SkippedTestSuiteError.php',
+ 'PHPUnit\\Framework\\SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SyntheticError.php',
+ 'PHPUnit\\Framework\\SyntheticSkippedError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/SyntheticSkippedError.php',
+ 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
+ 'PHPUnit\\Framework\\TestBuilder' => $vendorDir . '/phpunit/phpunit/src/Framework/TestBuilder.php',
+ 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
+ 'PHPUnit\\Framework\\TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
+ 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
+ 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
+ 'PHPUnit\\Framework\\TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
+ 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
+ 'PHPUnit\\Framework\\TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
+ 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/UnintentionallyCoveredCodeError.php',
+ 'PHPUnit\\Framework\\Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception/Warning.php',
+ 'PHPUnit\\Framework\\WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
+ 'PHPUnit\\Runner\\AfterIncompleteTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php',
+ 'PHPUnit\\Runner\\AfterLastTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php',
+ 'PHPUnit\\Runner\\AfterRiskyTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php',
+ 'PHPUnit\\Runner\\AfterSkippedTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php',
+ 'PHPUnit\\Runner\\AfterSuccessfulTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php',
+ 'PHPUnit\\Runner\\AfterTestErrorHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php',
+ 'PHPUnit\\Runner\\AfterTestFailureHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php',
+ 'PHPUnit\\Runner\\AfterTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php',
+ 'PHPUnit\\Runner\\AfterTestWarningHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php',
+ 'PHPUnit\\Runner\\BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
+ 'PHPUnit\\Runner\\BeforeFirstTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php',
+ 'PHPUnit\\Runner\\BeforeTestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php',
+ 'PHPUnit\\Runner\\DefaultTestResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/DefaultTestResultCache.php',
+ 'PHPUnit\\Runner\\Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
+ 'PHPUnit\\Runner\\Extension\\ExtensionHandler' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php',
+ 'PHPUnit\\Runner\\Extension\\PharLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/Extension/PharLoader.php',
+ 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
+ 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
+ 'PHPUnit\\Runner\\Hook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/Hook.php',
+ 'PHPUnit\\Runner\\NullTestResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/NullTestResultCache.php',
+ 'PHPUnit\\Runner\\PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
+ 'PHPUnit\\Runner\\ResultCacheExtension' => $vendorDir . '/phpunit/phpunit/src/Runner/ResultCacheExtension.php',
+ 'PHPUnit\\Runner\\StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
+ 'PHPUnit\\Runner\\TestHook' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/TestHook.php',
+ 'PHPUnit\\Runner\\TestListenerAdapter' => $vendorDir . '/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php',
+ 'PHPUnit\\Runner\\TestResultCache' => $vendorDir . '/phpunit/phpunit/src/Runner/TestResultCache.php',
+ 'PHPUnit\\Runner\\TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
+ 'PHPUnit\\Runner\\TestSuiteSorter' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php',
+ 'PHPUnit\\Runner\\Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
+ 'PHPUnit\\TextUI\\CliArguments\\Builder' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Builder.php',
+ 'PHPUnit\\TextUI\\CliArguments\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php',
+ 'PHPUnit\\TextUI\\CliArguments\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Exception.php',
+ 'PHPUnit\\TextUI\\CliArguments\\Mapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php',
+ 'PHPUnit\\TextUI\\Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
+ 'PHPUnit\\TextUI\\DefaultResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php',
+ 'PHPUnit\\TextUI\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/Exception.php',
+ 'PHPUnit\\TextUI\\Help' => $vendorDir . '/phpunit/phpunit/src/TextUI/Help.php',
+ 'PHPUnit\\TextUI\\ReflectionException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php',
+ 'PHPUnit\\TextUI\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
+ 'PHPUnit\\TextUI\\RuntimeException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php',
+ 'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php',
+ 'PHPUnit\\TextUI\\TestFileNotFoundException' => $vendorDir . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php',
+ 'PHPUnit\\TextUI\\TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
+ 'PHPUnit\\TextUI\\TestSuiteMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestSuiteMapper.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\FilterMapper' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\Directory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Constant' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Directory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Extension' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\File' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Group' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\IniSetting' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Xml' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Text' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Php' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectory' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestFile' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocationTo93' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Variable' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollection' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollectionIterator' => $vendorDir . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php',
+ 'PHPUnit\\Util\\Annotation\\DocBlock' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php',
+ 'PHPUnit\\Util\\Annotation\\Registry' => $vendorDir . '/phpunit/phpunit/src/Util/Annotation/Registry.php',
+ 'PHPUnit\\Util\\Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
+ 'PHPUnit\\Util\\Color' => $vendorDir . '/phpunit/phpunit/src/Util/Color.php',
+ 'PHPUnit\\Util\\ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
+ 'PHPUnit\\Util\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Exception.php',
+ 'PHPUnit\\Util\\ExcludeList' => $vendorDir . '/phpunit/phpunit/src/Util/ExcludeList.php',
+ 'PHPUnit\\Util\\FileLoader' => $vendorDir . '/phpunit/phpunit/src/Util/FileLoader.php',
+ 'PHPUnit\\Util\\Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
+ 'PHPUnit\\Util\\Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
+ 'PHPUnit\\Util\\GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
+ 'PHPUnit\\Util\\InvalidDataSetException' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidDataSetException.php',
+ 'PHPUnit\\Util\\Json' => $vendorDir . '/phpunit/phpunit/src/Util/Json.php',
+ 'PHPUnit\\Util\\Log\\JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
+ 'PHPUnit\\Util\\Log\\TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
+ 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
+ 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
+ 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
+ 'PHPUnit\\Util\\Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
+ 'PHPUnit\\Util\\RegularExpression' => $vendorDir . '/phpunit/phpunit/src/Util/RegularExpression.php',
+ 'PHPUnit\\Util\\Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
+ 'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
+ 'PHPUnit\\Util\\TestDox\\ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\TestDoxPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
+ 'PHPUnit\\Util\\TextTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
+ 'PHPUnit\\Util\\Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
+ 'PHPUnit\\Util\\VersionComparisonOperator' => $vendorDir . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php',
+ 'PHPUnit\\Util\\XdebugFilterScriptGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php',
+ 'PHPUnit\\Util\\Xml' => $vendorDir . '/phpunit/phpunit/src/Util/Xml.php',
+ 'PHPUnit\\Util\\XmlTestListRenderer' => $vendorDir . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
+ 'PHPUnit\\Util\\Xml\\Exception' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Exception.php',
+ 'PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php',
+ 'PHPUnit\\Util\\Xml\\Loader' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Loader.php',
+ 'PHPUnit\\Util\\Xml\\SchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php',
+ 'PHPUnit\\Util\\Xml\\SchemaDetector' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaDetector.php',
+ 'PHPUnit\\Util\\Xml\\SchemaFinder' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SchemaFinder.php',
+ 'PHPUnit\\Util\\Xml\\SnapshotNodeList' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php',
+ 'PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php',
+ 'PHPUnit\\Util\\Xml\\ValidationResult' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/ValidationResult.php',
+ 'PHPUnit\\Util\\Xml\\Validator' => $vendorDir . '/phpunit/phpunit/src/Util/Xml/Validator.php',
+ 'PharIo\\Manifest\\Application' => $vendorDir . '/phar-io/manifest/src/values/Application.php',
+ 'PharIo\\Manifest\\ApplicationName' => $vendorDir . '/phar-io/manifest/src/values/ApplicationName.php',
+ 'PharIo\\Manifest\\Author' => $vendorDir . '/phar-io/manifest/src/values/Author.php',
+ 'PharIo\\Manifest\\AuthorCollection' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollection.php',
+ 'PharIo\\Manifest\\AuthorCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
+ 'PharIo\\Manifest\\AuthorElement' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElement.php',
+ 'PharIo\\Manifest\\AuthorElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
+ 'PharIo\\Manifest\\BundledComponent' => $vendorDir . '/phar-io/manifest/src/values/BundledComponent.php',
+ 'PharIo\\Manifest\\BundledComponentCollection' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollection.php',
+ 'PharIo\\Manifest\\BundledComponentCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
+ 'PharIo\\Manifest\\BundlesElement' => $vendorDir . '/phar-io/manifest/src/xml/BundlesElement.php',
+ 'PharIo\\Manifest\\ComponentElement' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElement.php',
+ 'PharIo\\Manifest\\ComponentElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
+ 'PharIo\\Manifest\\ContainsElement' => $vendorDir . '/phar-io/manifest/src/xml/ContainsElement.php',
+ 'PharIo\\Manifest\\CopyrightElement' => $vendorDir . '/phar-io/manifest/src/xml/CopyrightElement.php',
+ 'PharIo\\Manifest\\CopyrightInformation' => $vendorDir . '/phar-io/manifest/src/values/CopyrightInformation.php',
+ 'PharIo\\Manifest\\ElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ElementCollection.php',
+ 'PharIo\\Manifest\\ElementCollectionException' => $vendorDir . '/phar-io/manifest/src/exceptions/ElementCollectionException.php',
+ 'PharIo\\Manifest\\Email' => $vendorDir . '/phar-io/manifest/src/values/Email.php',
+ 'PharIo\\Manifest\\Exception' => $vendorDir . '/phar-io/manifest/src/exceptions/Exception.php',
+ 'PharIo\\Manifest\\ExtElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtElement.php',
+ 'PharIo\\Manifest\\ExtElementCollection' => $vendorDir . '/phar-io/manifest/src/xml/ExtElementCollection.php',
+ 'PharIo\\Manifest\\Extension' => $vendorDir . '/phar-io/manifest/src/values/Extension.php',
+ 'PharIo\\Manifest\\ExtensionElement' => $vendorDir . '/phar-io/manifest/src/xml/ExtensionElement.php',
+ 'PharIo\\Manifest\\InvalidApplicationNameException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
+ 'PharIo\\Manifest\\InvalidEmailException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
+ 'PharIo\\Manifest\\InvalidUrlException' => $vendorDir . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
+ 'PharIo\\Manifest\\Library' => $vendorDir . '/phar-io/manifest/src/values/Library.php',
+ 'PharIo\\Manifest\\License' => $vendorDir . '/phar-io/manifest/src/values/License.php',
+ 'PharIo\\Manifest\\LicenseElement' => $vendorDir . '/phar-io/manifest/src/xml/LicenseElement.php',
+ 'PharIo\\Manifest\\Manifest' => $vendorDir . '/phar-io/manifest/src/values/Manifest.php',
+ 'PharIo\\Manifest\\ManifestDocument' => $vendorDir . '/phar-io/manifest/src/xml/ManifestDocument.php',
+ 'PharIo\\Manifest\\ManifestDocumentException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
+ 'PharIo\\Manifest\\ManifestDocumentLoadingException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php',
+ 'PharIo\\Manifest\\ManifestDocumentMapper' => $vendorDir . '/phar-io/manifest/src/ManifestDocumentMapper.php',
+ 'PharIo\\Manifest\\ManifestDocumentMapperException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
+ 'PharIo\\Manifest\\ManifestElement' => $vendorDir . '/phar-io/manifest/src/xml/ManifestElement.php',
+ 'PharIo\\Manifest\\ManifestElementException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
+ 'PharIo\\Manifest\\ManifestLoader' => $vendorDir . '/phar-io/manifest/src/ManifestLoader.php',
+ 'PharIo\\Manifest\\ManifestLoaderException' => $vendorDir . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
+ 'PharIo\\Manifest\\ManifestSerializer' => $vendorDir . '/phar-io/manifest/src/ManifestSerializer.php',
+ 'PharIo\\Manifest\\PhpElement' => $vendorDir . '/phar-io/manifest/src/xml/PhpElement.php',
+ 'PharIo\\Manifest\\PhpExtensionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
+ 'PharIo\\Manifest\\PhpVersionRequirement' => $vendorDir . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
+ 'PharIo\\Manifest\\Requirement' => $vendorDir . '/phar-io/manifest/src/values/Requirement.php',
+ 'PharIo\\Manifest\\RequirementCollection' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollection.php',
+ 'PharIo\\Manifest\\RequirementCollectionIterator' => $vendorDir . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
+ 'PharIo\\Manifest\\RequiresElement' => $vendorDir . '/phar-io/manifest/src/xml/RequiresElement.php',
+ 'PharIo\\Manifest\\Type' => $vendorDir . '/phar-io/manifest/src/values/Type.php',
+ 'PharIo\\Manifest\\Url' => $vendorDir . '/phar-io/manifest/src/values/Url.php',
+ 'PharIo\\Version\\AbstractVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AbstractVersionConstraint.php',
+ 'PharIo\\Version\\AndVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php',
+ 'PharIo\\Version\\AnyVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/AnyVersionConstraint.php',
+ 'PharIo\\Version\\BuildMetaData' => $vendorDir . '/phar-io/version/src/BuildMetaData.php',
+ 'PharIo\\Version\\ExactVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/ExactVersionConstraint.php',
+ 'PharIo\\Version\\Exception' => $vendorDir . '/phar-io/version/src/exceptions/Exception.php',
+ 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php',
+ 'PharIo\\Version\\InvalidPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php',
+ 'PharIo\\Version\\InvalidVersionException' => $vendorDir . '/phar-io/version/src/exceptions/InvalidVersionException.php',
+ 'PharIo\\Version\\NoBuildMetaDataException' => $vendorDir . '/phar-io/version/src/exceptions/NoBuildMetaDataException.php',
+ 'PharIo\\Version\\NoPreReleaseSuffixException' => $vendorDir . '/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php',
+ 'PharIo\\Version\\OrVersionConstraintGroup' => $vendorDir . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php',
+ 'PharIo\\Version\\PreReleaseSuffix' => $vendorDir . '/phar-io/version/src/PreReleaseSuffix.php',
+ 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php',
+ 'PharIo\\Version\\SpecificMajorVersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php',
+ 'PharIo\\Version\\UnsupportedVersionConstraintException' => $vendorDir . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php',
+ 'PharIo\\Version\\Version' => $vendorDir . '/phar-io/version/src/Version.php',
+ 'PharIo\\Version\\VersionConstraint' => $vendorDir . '/phar-io/version/src/constraints/VersionConstraint.php',
+ 'PharIo\\Version\\VersionConstraintParser' => $vendorDir . '/phar-io/version/src/VersionConstraintParser.php',
+ 'PharIo\\Version\\VersionConstraintValue' => $vendorDir . '/phar-io/version/src/VersionConstraintValue.php',
+ 'PharIo\\Version\\VersionNumber' => $vendorDir . '/phar-io/version/src/VersionNumber.php',
+ 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php',
+ 'SebastianBergmann\\CliParser\\Exception' => $vendorDir . '/sebastian/cli-parser/src/exceptions/Exception.php',
+ 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php',
+ 'SebastianBergmann\\CliParser\\Parser' => $vendorDir . '/sebastian/cli-parser/src/Parser.php',
+ 'SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php',
+ 'SebastianBergmann\\CliParser\\UnknownOptionException' => $vendorDir . '/sebastian/cli-parser/src/exceptions/UnknownOptionException.php',
+ 'SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php',
+ 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
+ 'SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgDriver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Selector' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Selector.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\WrongXdebugVersionException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2NotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3NotEnabledException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php',
+ 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php',
+ 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php',
+ 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php',
+ 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\CrapIndex' => $vendorDir . '/phpunit/php-code-coverage/src/Node/CrapIndex.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php',
+ 'SebastianBergmann\\CodeCoverage\\ParserException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ParserException.php',
+ 'SebastianBergmann\\CodeCoverage\\ProcessedCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php',
+ 'SebastianBergmann\\CodeCoverage\\RawCodeCoverageData' => $vendorDir . '/phpunit/php-code-coverage/src/RawCodeCoverageData.php',
+ 'SebastianBergmann\\CodeCoverage\\ReflectionException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ReflectionException.php',
+ 'SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Cobertura' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Cobertura.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => $vendorDir . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php',
+ 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php',
+ 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
+ 'SebastianBergmann\\CodeCoverage\\Util\\DirectoryCouldNotBeCreatedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Util\\Filesystem' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Filesystem.php',
+ 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => $vendorDir . '/phpunit/php-code-coverage/src/Util/Percentage.php',
+ 'SebastianBergmann\\CodeCoverage\\Version' => $vendorDir . '/phpunit/php-code-coverage/src/Version.php',
+ 'SebastianBergmann\\CodeCoverage\\XmlException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/XmlException.php',
+ 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
+ 'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => $vendorDir . '/sebastian/code-unit/src/ClassMethodUnit.php',
+ 'SebastianBergmann\\CodeUnit\\ClassUnit' => $vendorDir . '/sebastian/code-unit/src/ClassUnit.php',
+ 'SebastianBergmann\\CodeUnit\\CodeUnit' => $vendorDir . '/sebastian/code-unit/src/CodeUnit.php',
+ 'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollection.php',
+ 'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => $vendorDir . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php',
+ 'SebastianBergmann\\CodeUnit\\Exception' => $vendorDir . '/sebastian/code-unit/src/exceptions/Exception.php',
+ 'SebastianBergmann\\CodeUnit\\FunctionUnit' => $vendorDir . '/sebastian/code-unit/src/FunctionUnit.php',
+ 'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceMethodUnit.php',
+ 'SebastianBergmann\\CodeUnit\\InterfaceUnit' => $vendorDir . '/sebastian/code-unit/src/InterfaceUnit.php',
+ 'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php',
+ 'SebastianBergmann\\CodeUnit\\Mapper' => $vendorDir . '/sebastian/code-unit/src/Mapper.php',
+ 'SebastianBergmann\\CodeUnit\\NoTraitException' => $vendorDir . '/sebastian/code-unit/src/exceptions/NoTraitException.php',
+ 'SebastianBergmann\\CodeUnit\\ReflectionException' => $vendorDir . '/sebastian/code-unit/src/exceptions/ReflectionException.php',
+ 'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => $vendorDir . '/sebastian/code-unit/src/TraitMethodUnit.php',
+ 'SebastianBergmann\\CodeUnit\\TraitUnit' => $vendorDir . '/sebastian/code-unit/src/TraitUnit.php',
+ 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
+ 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
+ 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
+ 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php',
+ 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php',
+ 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php',
+ 'SebastianBergmann\\Comparator\\Exception' => $vendorDir . '/sebastian/comparator/src/exceptions/Exception.php',
+ 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php',
+ 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php',
+ 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php',
+ 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php',
+ 'SebastianBergmann\\Comparator\\RuntimeException' => $vendorDir . '/sebastian/comparator/src/exceptions/RuntimeException.php',
+ 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php',
+ 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php',
+ 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php',
+ 'SebastianBergmann\\Complexity\\Calculator' => $vendorDir . '/sebastian/complexity/src/Calculator.php',
+ 'SebastianBergmann\\Complexity\\Complexity' => $vendorDir . '/sebastian/complexity/src/Complexity/Complexity.php',
+ 'SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor' => $vendorDir . '/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php',
+ 'SebastianBergmann\\Complexity\\ComplexityCollection' => $vendorDir . '/sebastian/complexity/src/Complexity/ComplexityCollection.php',
+ 'SebastianBergmann\\Complexity\\ComplexityCollectionIterator' => $vendorDir . '/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php',
+ 'SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor' => $vendorDir . '/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php',
+ 'SebastianBergmann\\Complexity\\Exception' => $vendorDir . '/sebastian/complexity/src/Exception/Exception.php',
+ 'SebastianBergmann\\Complexity\\RuntimeException' => $vendorDir . '/sebastian/complexity/src/Exception/RuntimeException.php',
+ 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
+ 'SebastianBergmann\\Diff\\ConfigurationException' => $vendorDir . '/sebastian/diff/src/Exception/ConfigurationException.php',
+ 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
+ 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
+ 'SebastianBergmann\\Diff\\Exception' => $vendorDir . '/sebastian/diff/src/Exception/Exception.php',
+ 'SebastianBergmann\\Diff\\InvalidArgumentException' => $vendorDir . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
+ 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => $vendorDir . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
+ 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => $vendorDir . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
+ 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => $vendorDir . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
+ 'SebastianBergmann\\Environment\\OperatingSystem' => $vendorDir . '/sebastian/environment/src/OperatingSystem.php',
+ 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
+ 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
+ 'SebastianBergmann\\FileIterator\\Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
+ 'SebastianBergmann\\FileIterator\\Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
+ 'SebastianBergmann\\FileIterator\\Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
+ 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
+ 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/exceptions/Exception.php',
+ 'SebastianBergmann\\GlobalState\\ExcludeList' => $vendorDir . '/sebastian/global-state/src/ExcludeList.php',
+ 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
+ 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/exceptions/RuntimeException.php',
+ 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
+ 'SebastianBergmann\\Invoker\\Exception' => $vendorDir . '/phpunit/php-invoker/src/exceptions/Exception.php',
+ 'SebastianBergmann\\Invoker\\Invoker' => $vendorDir . '/phpunit/php-invoker/src/Invoker.php',
+ 'SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException' => $vendorDir . '/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php',
+ 'SebastianBergmann\\Invoker\\TimeoutException' => $vendorDir . '/phpunit/php-invoker/src/exceptions/TimeoutException.php',
+ 'SebastianBergmann\\LinesOfCode\\Counter' => $vendorDir . '/sebastian/lines-of-code/src/Counter.php',
+ 'SebastianBergmann\\LinesOfCode\\Exception' => $vendorDir . '/sebastian/lines-of-code/src/Exception/Exception.php',
+ 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php',
+ 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => $vendorDir . '/sebastian/lines-of-code/src/LineCountingVisitor.php',
+ 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => $vendorDir . '/sebastian/lines-of-code/src/LinesOfCode.php',
+ 'SebastianBergmann\\LinesOfCode\\NegativeValueException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php',
+ 'SebastianBergmann\\LinesOfCode\\RuntimeException' => $vendorDir . '/sebastian/lines-of-code/src/Exception/RuntimeException.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php',
+ 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ObjectReflector\\Exception' => $vendorDir . '/sebastian/object-reflector/src/Exception.php',
+ 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => $vendorDir . '/sebastian/object-reflector/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => $vendorDir . '/sebastian/object-reflector/src/ObjectReflector.php',
+ 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
+ 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
+ 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php',
+ 'SebastianBergmann\\Template\\Exception' => $vendorDir . '/phpunit/php-text-template/src/exceptions/Exception.php',
+ 'SebastianBergmann\\Template\\InvalidArgumentException' => $vendorDir . '/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php',
+ 'SebastianBergmann\\Template\\RuntimeException' => $vendorDir . '/phpunit/php-text-template/src/exceptions/RuntimeException.php',
+ 'SebastianBergmann\\Template\\Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
+ 'SebastianBergmann\\Timer\\Duration' => $vendorDir . '/phpunit/php-timer/src/Duration.php',
+ 'SebastianBergmann\\Timer\\Exception' => $vendorDir . '/phpunit/php-timer/src/exceptions/Exception.php',
+ 'SebastianBergmann\\Timer\\NoActiveTimerException' => $vendorDir . '/phpunit/php-timer/src/exceptions/NoActiveTimerException.php',
+ 'SebastianBergmann\\Timer\\ResourceUsageFormatter' => $vendorDir . '/phpunit/php-timer/src/ResourceUsageFormatter.php',
+ 'SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException' => $vendorDir . '/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php',
+ 'SebastianBergmann\\Timer\\Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
+ 'SebastianBergmann\\Type\\CallableType' => $vendorDir . '/sebastian/type/src/CallableType.php',
+ 'SebastianBergmann\\Type\\Exception' => $vendorDir . '/sebastian/type/src/exception/Exception.php',
+ 'SebastianBergmann\\Type\\FalseType' => $vendorDir . '/sebastian/type/src/FalseType.php',
+ 'SebastianBergmann\\Type\\GenericObjectType' => $vendorDir . '/sebastian/type/src/GenericObjectType.php',
+ 'SebastianBergmann\\Type\\IterableType' => $vendorDir . '/sebastian/type/src/IterableType.php',
+ 'SebastianBergmann\\Type\\LogicException' => $vendorDir . '/sebastian/type/src/exception/LogicException.php',
+ 'SebastianBergmann\\Type\\MixedType' => $vendorDir . '/sebastian/type/src/MixedType.php',
+ 'SebastianBergmann\\Type\\NullType' => $vendorDir . '/sebastian/type/src/NullType.php',
+ 'SebastianBergmann\\Type\\ObjectType' => $vendorDir . '/sebastian/type/src/ObjectType.php',
+ 'SebastianBergmann\\Type\\ReflectionMapper' => $vendorDir . '/sebastian/type/src/ReflectionMapper.php',
+ 'SebastianBergmann\\Type\\RuntimeException' => $vendorDir . '/sebastian/type/src/exception/RuntimeException.php',
+ 'SebastianBergmann\\Type\\SimpleType' => $vendorDir . '/sebastian/type/src/SimpleType.php',
+ 'SebastianBergmann\\Type\\StaticType' => $vendorDir . '/sebastian/type/src/StaticType.php',
+ 'SebastianBergmann\\Type\\Type' => $vendorDir . '/sebastian/type/src/Type.php',
+ 'SebastianBergmann\\Type\\TypeName' => $vendorDir . '/sebastian/type/src/TypeName.php',
+ 'SebastianBergmann\\Type\\UnionType' => $vendorDir . '/sebastian/type/src/UnionType.php',
+ 'SebastianBergmann\\Type\\UnknownType' => $vendorDir . '/sebastian/type/src/UnknownType.php',
+ 'SebastianBergmann\\Type\\VoidType' => $vendorDir . '/sebastian/type/src/VoidType.php',
+ 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
+ 'TheSeer\\Tokenizer\\Exception' => $vendorDir . '/theseer/tokenizer/src/Exception.php',
+ 'TheSeer\\Tokenizer\\NamespaceUri' => $vendorDir . '/theseer/tokenizer/src/NamespaceUri.php',
+ 'TheSeer\\Tokenizer\\NamespaceUriException' => $vendorDir . '/theseer/tokenizer/src/NamespaceUriException.php',
+ 'TheSeer\\Tokenizer\\Token' => $vendorDir . '/theseer/tokenizer/src/Token.php',
+ 'TheSeer\\Tokenizer\\TokenCollection' => $vendorDir . '/theseer/tokenizer/src/TokenCollection.php',
+ 'TheSeer\\Tokenizer\\TokenCollectionException' => $vendorDir . '/theseer/tokenizer/src/TokenCollectionException.php',
+ 'TheSeer\\Tokenizer\\Tokenizer' => $vendorDir . '/theseer/tokenizer/src/Tokenizer.php',
+ 'TheSeer\\Tokenizer\\XMLSerializer' => $vendorDir . '/theseer/tokenizer/src/XMLSerializer.php',
);
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
index a2686669c..08a5dedbd 100644
--- a/vendor/composer/autoload_files.php
+++ b/vendor/composer/autoload_files.php
@@ -6,6 +6,9 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
+ '9b38cf48e83f5d8f60375221cd213eee' => $vendorDir . '/phpstan/phpstan/bootstrap.php',
+ 'ec07570ca5a812141189b1fa81503674' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
+ '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
'a4ecaeafb8cfb009ad0e052c90355e98' => $vendorDir . '/beberlei/assert/lib/Assert/functions.php',
'51fcf4e06c07cc00c920b44bcd900e7a' => $vendorDir . '/thecodingmachine/safe/deprecated/apc.php',
'47f619d9197b36cf5ab70738d7743fe2' => $vendorDir . '/thecodingmachine/safe/deprecated/libevent.php',
@@ -96,4 +99,5 @@ return array(
'4af1dca6db8c527c6eed27bff85ff0e5' => $vendorDir . '/thecodingmachine/safe/generated/yaz.php',
'fe43ca06499ac37bc2dedd823af71eb5' => $vendorDir . '/thecodingmachine/safe/generated/zip.php',
'356736db98a6834f0a886b8d509b0ecd' => $vendorDir . '/thecodingmachine/safe/generated/zlib.php',
+ '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
index b739220a2..8df0d9930 100644
--- a/vendor/composer/autoload_psr4.php
+++ b/vendor/composer/autoload_psr4.php
@@ -6,10 +6,17 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
+ 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'),
'chillerlan\\Settings\\' => array($vendorDir . '/chillerlan/php-settings-container/src'),
'chillerlan\\QRCode\\' => array($vendorDir . '/chillerlan/php-qrcode/src'),
+ 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
+ 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
'Safe\\' => array($vendorDir . '/thecodingmachine/safe/lib', $vendorDir . '/thecodingmachine/safe/deprecated', $vendorDir . '/thecodingmachine/safe/generated'),
+ 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
+ 'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'),
'OTPHP\\' => array($vendorDir . '/spomky-labs/otphp/src'),
+ 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
+ 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
'Assert\\' => array($vendorDir . '/beberlei/assert/lib/Assert'),
);
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 6f1c238b1..de23ec4b4 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -7,6 +7,9 @@ namespace Composer\Autoload;
class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
{
public static $files = array (
+ '9b38cf48e83f5d8f60375221cd213eee' => __DIR__ . '/..' . '/phpstan/phpstan/bootstrap.php',
+ 'ec07570ca5a812141189b1fa81503674' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert/Functions.php',
+ '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
'a4ecaeafb8cfb009ad0e052c90355e98' => __DIR__ . '/..' . '/beberlei/assert/lib/Assert/functions.php',
'51fcf4e06c07cc00c920b44bcd900e7a' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/apc.php',
'47f619d9197b36cf5ab70738d7743fe2' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/libevent.php',
@@ -97,26 +100,43 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
'4af1dca6db8c527c6eed27bff85ff0e5' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/yaz.php',
'fe43ca06499ac37bc2dedd823af71eb5' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/zip.php',
'356736db98a6834f0a886b8d509b0ecd' => __DIR__ . '/..' . '/thecodingmachine/safe/generated/zlib.php',
+ '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
);
public static $prefixLengthsPsr4 = array (
+ 'p' =>
+ array (
+ 'phpDocumentor\\Reflection\\' => 25,
+ ),
'c' =>
array (
'chillerlan\\Settings\\' => 20,
'chillerlan\\QRCode\\' => 18,
),
+ 'W' =>
+ array (
+ 'Webmozart\\Assert\\' => 17,
+ ),
'S' =>
array (
+ 'Symfony\\Polyfill\\Ctype\\' => 23,
'Safe\\' => 5,
),
'P' =>
array (
+ 'Prophecy\\' => 9,
+ 'PhpParser\\' => 10,
'ParagonIE\\ConstantTime\\' => 23,
),
'O' =>
array (
'OTPHP\\' => 6,
),
+ 'D' =>
+ array (
+ 'Doctrine\\Instantiator\\' => 22,
+ 'DeepCopy\\' => 9,
+ ),
'A' =>
array (
'Assert\\' => 7,
@@ -124,6 +144,12 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
);
public static $prefixDirsPsr4 = array (
+ 'phpDocumentor\\Reflection\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
+ 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
+ 2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
+ ),
'chillerlan\\Settings\\' =>
array (
0 => __DIR__ . '/..' . '/chillerlan/php-settings-container/src',
@@ -132,12 +158,28 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
array (
0 => __DIR__ . '/..' . '/chillerlan/php-qrcode/src',
),
+ 'Webmozart\\Assert\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/webmozart/assert/src',
+ ),
+ 'Symfony\\Polyfill\\Ctype\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
+ ),
'Safe\\' =>
array (
0 => __DIR__ . '/..' . '/thecodingmachine/safe/lib',
1 => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated',
2 => __DIR__ . '/..' . '/thecodingmachine/safe/generated',
),
+ 'Prophecy\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
+ ),
+ 'PhpParser\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/nikic/php-parser/lib/PhpParser',
+ ),
'ParagonIE\\ConstantTime\\' =>
array (
0 => __DIR__ . '/..' . '/paragonie/constant_time_encoding/src',
@@ -146,6 +188,14 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
array (
0 => __DIR__ . '/..' . '/spomky-labs/otphp/src',
),
+ 'Doctrine\\Instantiator\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
+ ),
+ 'DeepCopy\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy',
+ ),
'Assert\\' =>
array (
0 => __DIR__ . '/..' . '/beberlei/assert/lib/Assert',
@@ -159,6 +209,629 @@ class ComposerStaticInit19fc2ff1c0f9a92279c7979386bb2056
'IdiormString' => __DIR__ . '/..' . '/j4mie/idiorm/idiorm.php',
'IdiormStringException' => __DIR__ . '/..' . '/j4mie/idiorm/idiorm.php',
'ORM' => __DIR__ . '/..' . '/j4mie/idiorm/idiorm.php',
+ 'PHPUnit\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
+ 'PHPUnit\\Framework\\ActualValueIsNotAnObjectException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php',
+ 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
+ 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php',
+ 'PHPUnit\\Framework\\CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php',
+ 'PHPUnit\\Framework\\ComparisonMethodDoesNotAcceptParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php',
+ 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareBoolReturnTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php',
+ 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareExactlyOneParameterException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php',
+ 'PHPUnit\\Framework\\ComparisonMethodDoesNotDeclareParameterTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php',
+ 'PHPUnit\\Framework\\ComparisonMethodDoesNotExistException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php',
+ 'PHPUnit\\Framework\\Constraint\\ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php',
+ 'PHPUnit\\Framework\\Constraint\\BinaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php',
+ 'PHPUnit\\Framework\\Constraint\\Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
+ 'PHPUnit\\Framework\\Constraint\\ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Constraint.php',
+ 'PHPUnit\\Framework\\Constraint\\Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php',
+ 'PHPUnit\\Framework\\Constraint\\DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php',
+ 'PHPUnit\\Framework\\Constraint\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php',
+ 'PHPUnit\\Framework\\Constraint\\ExceptionMessageRegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php',
+ 'PHPUnit\\Framework\\Constraint\\FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php',
+ 'PHPUnit\\Framework\\Constraint\\GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php',
+ 'PHPUnit\\Framework\\Constraint\\IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEqualCanonicalizing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEqualIgnoringCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php',
+ 'PHPUnit\\Framework\\Constraint\\IsEqualWithDelta' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php',
+ 'PHPUnit\\Framework\\Constraint\\IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php',
+ 'PHPUnit\\Framework\\Constraint\\IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php',
+ 'PHPUnit\\Framework\\Constraint\\IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
+ 'PHPUnit\\Framework\\Constraint\\IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php',
+ 'PHPUnit\\Framework\\Constraint\\IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php',
+ 'PHPUnit\\Framework\\Constraint\\IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php',
+ 'PHPUnit\\Framework\\Constraint\\IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php',
+ 'PHPUnit\\Framework\\Constraint\\IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php',
+ 'PHPUnit\\Framework\\Constraint\\IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php',
+ 'PHPUnit\\Framework\\Constraint\\IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php',
+ 'PHPUnit\\Framework\\Constraint\\IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php',
+ 'PHPUnit\\Framework\\Constraint\\IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php',
+ 'PHPUnit\\Framework\\Constraint\\JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
+ 'PHPUnit\\Framework\\Constraint\\JsonMatchesErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php',
+ 'PHPUnit\\Framework\\Constraint\\LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalAnd' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalNot' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalOr' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php',
+ 'PHPUnit\\Framework\\Constraint\\LogicalXor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php',
+ 'PHPUnit\\Framework\\Constraint\\ObjectEquals' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php',
+ 'PHPUnit\\Framework\\Constraint\\ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php',
+ 'PHPUnit\\Framework\\Constraint\\Operator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php',
+ 'PHPUnit\\Framework\\Constraint\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php',
+ 'PHPUnit\\Framework\\Constraint\\SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php',
+ 'PHPUnit\\Framework\\Constraint\\StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php',
+ 'PHPUnit\\Framework\\Constraint\\StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php',
+ 'PHPUnit\\Framework\\Constraint\\StringMatchesFormatDescription' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php',
+ 'PHPUnit\\Framework\\Constraint\\StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContainsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContainsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php',
+ 'PHPUnit\\Framework\\Constraint\\TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php',
+ 'PHPUnit\\Framework\\Constraint\\UnaryOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php',
+ 'PHPUnit\\Framework\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php',
+ 'PHPUnit\\Framework\\DataProviderTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/DataProviderTestSuite.php',
+ 'PHPUnit\\Framework\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Error.php',
+ 'PHPUnit\\Framework\\ErrorTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ErrorTestCase.php',
+ 'PHPUnit\\Framework\\Error\\Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
+ 'PHPUnit\\Framework\\Error\\Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Error.php',
+ 'PHPUnit\\Framework\\Error\\Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
+ 'PHPUnit\\Framework\\Error\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
+ 'PHPUnit\\Framework\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Exception.php',
+ 'PHPUnit\\Framework\\ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
+ 'PHPUnit\\Framework\\ExecutionOrderDependency' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php',
+ 'PHPUnit\\Framework\\ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php',
+ 'PHPUnit\\Framework\\IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
+ 'PHPUnit\\Framework\\IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
+ 'PHPUnit\\Framework\\IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/IncompleteTestError.php',
+ 'PHPUnit\\Framework\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php',
+ 'PHPUnit\\Framework\\InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php',
+ 'PHPUnit\\Framework\\InvalidDataProviderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php',
+ 'PHPUnit\\Framework\\InvalidParameterGroupException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php',
+ 'PHPUnit\\Framework\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/MissingCoversAnnotationException.php',
+ 'PHPUnit\\Framework\\MockObject\\Api' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/Api.php',
+ 'PHPUnit\\Framework\\MockObject\\BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\Identity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\InvocationStubber' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php',
+ 'PHPUnit\\Framework\\MockObject\\Builder\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php',
+ 'PHPUnit\\Framework\\MockObject\\CannotUseAddMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php',
+ 'PHPUnit\\Framework\\MockObject\\CannotUseOnlyMethodsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php',
+ 'PHPUnit\\Framework\\MockObject\\ClassAlreadyExistsException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php',
+ 'PHPUnit\\Framework\\MockObject\\ClassIsFinalException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php',
+ 'PHPUnit\\Framework\\MockObject\\ConfigurableMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php',
+ 'PHPUnit\\Framework\\MockObject\\ConfigurableMethodsAlreadyInitializedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php',
+ 'PHPUnit\\Framework\\MockObject\\DuplicateMethodException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php',
+ 'PHPUnit\\Framework\\MockObject\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php',
+ 'PHPUnit\\Framework\\MockObject\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Generator.php',
+ 'PHPUnit\\Framework\\MockObject\\IncompatibleReturnValueException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php',
+ 'PHPUnit\\Framework\\MockObject\\InvalidMethodNameException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php',
+ 'PHPUnit\\Framework\\MockObject\\Invocation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Invocation.php',
+ 'PHPUnit\\Framework\\MockObject\\InvocationHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php',
+ 'PHPUnit\\Framework\\MockObject\\MatchBuilderNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php',
+ 'PHPUnit\\Framework\\MockObject\\Matcher' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Matcher.php',
+ 'PHPUnit\\Framework\\MockObject\\MatcherAlreadyRegisteredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php',
+ 'PHPUnit\\Framework\\MockObject\\Method' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/Method.php',
+ 'PHPUnit\\Framework\\MockObject\\MethodCannotBeConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php',
+ 'PHPUnit\\Framework\\MockObject\\MethodNameAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php',
+ 'PHPUnit\\Framework\\MockObject\\MethodNameConstraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php',
+ 'PHPUnit\\Framework\\MockObject\\MethodNameNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php',
+ 'PHPUnit\\Framework\\MockObject\\MethodParametersAlreadyConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php',
+ 'PHPUnit\\Framework\\MockObject\\MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php',
+ 'PHPUnit\\Framework\\MockObject\\MockClass' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockClass.php',
+ 'PHPUnit\\Framework\\MockObject\\MockMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethod.php',
+ 'PHPUnit\\Framework\\MockObject\\MockMethodSet' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php',
+ 'PHPUnit\\Framework\\MockObject\\MockObject' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockObject.php',
+ 'PHPUnit\\Framework\\MockObject\\MockTrait' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockTrait.php',
+ 'PHPUnit\\Framework\\MockObject\\MockType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/MockType.php',
+ 'PHPUnit\\Framework\\MockObject\\MockedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/MockedCloneMethod.php',
+ 'PHPUnit\\Framework\\MockObject\\OriginalConstructorInvocationRequiredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php',
+ 'PHPUnit\\Framework\\MockObject\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php',
+ 'PHPUnit\\Framework\\MockObject\\ReturnValueNotConfiguredException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvocationOrder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\MethodName' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\Parameters' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php',
+ 'PHPUnit\\Framework\\MockObject\\Rule\\ParametersRule' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php',
+ 'PHPUnit\\Framework\\MockObject\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php',
+ 'PHPUnit\\Framework\\MockObject\\SoapExtensionNotAvailableException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnStub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php',
+ 'PHPUnit\\Framework\\MockObject\\Stub\\Stub' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php',
+ 'PHPUnit\\Framework\\MockObject\\UnknownClassException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php',
+ 'PHPUnit\\Framework\\MockObject\\UnknownTraitException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php',
+ 'PHPUnit\\Framework\\MockObject\\UnknownTypeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php',
+ 'PHPUnit\\Framework\\MockObject\\UnmockedCloneMethod' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Api/UnmockedCloneMethod.php',
+ 'PHPUnit\\Framework\\MockObject\\Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MockObject/Verifiable.php',
+ 'PHPUnit\\Framework\\NoChildTestSuiteException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php',
+ 'PHPUnit\\Framework\\OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/OutputError.php',
+ 'PHPUnit\\Framework\\PHPTAssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php',
+ 'PHPUnit\\Framework\\Reorderable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Reorderable.php',
+ 'PHPUnit\\Framework\\RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php',
+ 'PHPUnit\\Framework\\SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
+ 'PHPUnit\\Framework\\SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
+ 'PHPUnit\\Framework\\SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
+ 'PHPUnit\\Framework\\SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SkippedTestError.php',
+ 'PHPUnit\\Framework\\SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SkippedTestSuiteError.php',
+ 'PHPUnit\\Framework\\SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SyntheticError.php',
+ 'PHPUnit\\Framework\\SyntheticSkippedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/SyntheticSkippedError.php',
+ 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
+ 'PHPUnit\\Framework\\TestBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestBuilder.php',
+ 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
+ 'PHPUnit\\Framework\\TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
+ 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
+ 'PHPUnit\\Framework\\TestListenerDefaultImplementation' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php',
+ 'PHPUnit\\Framework\\TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
+ 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
+ 'PHPUnit\\Framework\\TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuiteIterator.php',
+ 'PHPUnit\\Framework\\UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/UnintentionallyCoveredCodeError.php',
+ 'PHPUnit\\Framework\\Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception/Warning.php',
+ 'PHPUnit\\Framework\\WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
+ 'PHPUnit\\Runner\\AfterIncompleteTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php',
+ 'PHPUnit\\Runner\\AfterLastTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php',
+ 'PHPUnit\\Runner\\AfterRiskyTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php',
+ 'PHPUnit\\Runner\\AfterSkippedTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php',
+ 'PHPUnit\\Runner\\AfterSuccessfulTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php',
+ 'PHPUnit\\Runner\\AfterTestErrorHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php',
+ 'PHPUnit\\Runner\\AfterTestFailureHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php',
+ 'PHPUnit\\Runner\\AfterTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php',
+ 'PHPUnit\\Runner\\AfterTestWarningHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php',
+ 'PHPUnit\\Runner\\BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
+ 'PHPUnit\\Runner\\BeforeFirstTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php',
+ 'PHPUnit\\Runner\\BeforeTestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php',
+ 'PHPUnit\\Runner\\DefaultTestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/DefaultTestResultCache.php',
+ 'PHPUnit\\Runner\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
+ 'PHPUnit\\Runner\\Extension\\ExtensionHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php',
+ 'PHPUnit\\Runner\\Extension\\PharLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Extension/PharLoader.php',
+ 'PHPUnit\\Runner\\Filter\\ExcludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
+ 'PHPUnit\\Runner\\Filter\\GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\IncludeGroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php',
+ 'PHPUnit\\Runner\\Filter\\NameFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php',
+ 'PHPUnit\\Runner\\Hook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/Hook.php',
+ 'PHPUnit\\Runner\\NullTestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/NullTestResultCache.php',
+ 'PHPUnit\\Runner\\PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/PhptTestCase.php',
+ 'PHPUnit\\Runner\\ResultCacheExtension' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/ResultCacheExtension.php',
+ 'PHPUnit\\Runner\\StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
+ 'PHPUnit\\Runner\\TestHook' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/TestHook.php',
+ 'PHPUnit\\Runner\\TestListenerAdapter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php',
+ 'PHPUnit\\Runner\\TestResultCache' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestResultCache.php',
+ 'PHPUnit\\Runner\\TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
+ 'PHPUnit\\Runner\\TestSuiteSorter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteSorter.php',
+ 'PHPUnit\\Runner\\Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
+ 'PHPUnit\\TextUI\\CliArguments\\Builder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Builder.php',
+ 'PHPUnit\\TextUI\\CliArguments\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php',
+ 'PHPUnit\\TextUI\\CliArguments\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Exception.php',
+ 'PHPUnit\\TextUI\\CliArguments\\Mapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php',
+ 'PHPUnit\\TextUI\\Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
+ 'PHPUnit\\TextUI\\DefaultResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php',
+ 'PHPUnit\\TextUI\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/Exception.php',
+ 'PHPUnit\\TextUI\\Help' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Help.php',
+ 'PHPUnit\\TextUI\\ReflectionException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php',
+ 'PHPUnit\\TextUI\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
+ 'PHPUnit\\TextUI\\RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php',
+ 'PHPUnit\\TextUI\\TestDirectoryNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php',
+ 'PHPUnit\\TextUI\\TestFileNotFoundException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php',
+ 'PHPUnit\\TextUI\\TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
+ 'PHPUnit\\TextUI\\TestSuiteMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestSuiteMapper.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\FilterMapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\Directory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Filter\\DirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CodeCoverage\\Report\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Constant' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\ConstantCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\ConvertLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCloverToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageCrap4jToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageHtmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoveragePhpToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageTextToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\CoverageXmlToReport' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Directory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\DirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Extension' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\ExtensionCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\File' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\FileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Generator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Group' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\GroupCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Groups' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\IniSetting' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\IniSettingCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\IntroduceCoverageElement' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\LogToReportMigration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Junit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Logging' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Html' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\TestDox\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Logging\\Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Migration' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilder' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationBuilderException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MigrationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Migrator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromFilterWhitelistToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MoveAttributesFromRootToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistDirectoriesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\MoveWhitelistExcludesToCoverage' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\PHPUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Php' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\PhpHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveCacheTokensAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveEmptyFilter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\RemoveLogTypes' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectory' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestDirectoryCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestFile' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestFileCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\TestSuiteCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\UpdateSchemaLocationTo93' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\Variable' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollection' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php',
+ 'PHPUnit\\TextUI\\XmlConfiguration\\VariableCollectionIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php',
+ 'PHPUnit\\Util\\Annotation\\DocBlock' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/DocBlock.php',
+ 'PHPUnit\\Util\\Annotation\\Registry' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Annotation/Registry.php',
+ 'PHPUnit\\Util\\Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
+ 'PHPUnit\\Util\\Color' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Color.php',
+ 'PHPUnit\\Util\\ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
+ 'PHPUnit\\Util\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Exception.php',
+ 'PHPUnit\\Util\\ExcludeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ExcludeList.php',
+ 'PHPUnit\\Util\\FileLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/FileLoader.php',
+ 'PHPUnit\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
+ 'PHPUnit\\Util\\Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
+ 'PHPUnit\\Util\\GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
+ 'PHPUnit\\Util\\InvalidDataSetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidDataSetException.php',
+ 'PHPUnit\\Util\\Json' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Json.php',
+ 'PHPUnit\\Util\\Log\\JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
+ 'PHPUnit\\Util\\Log\\TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
+ 'PHPUnit\\Util\\PHP\\AbstractPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php',
+ 'PHPUnit\\Util\\PHP\\DefaultPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php',
+ 'PHPUnit\\Util\\PHP\\WindowsPhpProcess' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php',
+ 'PHPUnit\\Util\\Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
+ 'PHPUnit\\Util\\RegularExpression' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/RegularExpression.php',
+ 'PHPUnit\\Util\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
+ 'PHPUnit\\Util\\TestDox\\CliTestDoxPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\HtmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
+ 'PHPUnit\\Util\\TestDox\\ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\TestDoxPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\TextResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php',
+ 'PHPUnit\\Util\\TestDox\\XmlResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php',
+ 'PHPUnit\\Util\\TextTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TextTestListRenderer.php',
+ 'PHPUnit\\Util\\Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
+ 'PHPUnit\\Util\\VersionComparisonOperator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/VersionComparisonOperator.php',
+ 'PHPUnit\\Util\\XdebugFilterScriptGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php',
+ 'PHPUnit\\Util\\Xml' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml.php',
+ 'PHPUnit\\Util\\XmlTestListRenderer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XmlTestListRenderer.php',
+ 'PHPUnit\\Util\\Xml\\Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Exception.php',
+ 'PHPUnit\\Util\\Xml\\FailedSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php',
+ 'PHPUnit\\Util\\Xml\\Loader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Loader.php',
+ 'PHPUnit\\Util\\Xml\\SchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php',
+ 'PHPUnit\\Util\\Xml\\SchemaDetector' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaDetector.php',
+ 'PHPUnit\\Util\\Xml\\SchemaFinder' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SchemaFinder.php',
+ 'PHPUnit\\Util\\Xml\\SnapshotNodeList' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php',
+ 'PHPUnit\\Util\\Xml\\SuccessfulSchemaDetectionResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php',
+ 'PHPUnit\\Util\\Xml\\ValidationResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/ValidationResult.php',
+ 'PHPUnit\\Util\\Xml\\Validator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Xml/Validator.php',
+ 'PharIo\\Manifest\\Application' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Application.php',
+ 'PharIo\\Manifest\\ApplicationName' => __DIR__ . '/..' . '/phar-io/manifest/src/values/ApplicationName.php',
+ 'PharIo\\Manifest\\Author' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Author.php',
+ 'PharIo\\Manifest\\AuthorCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollection.php',
+ 'PharIo\\Manifest\\AuthorCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/AuthorCollectionIterator.php',
+ 'PharIo\\Manifest\\AuthorElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElement.php',
+ 'PharIo\\Manifest\\AuthorElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/AuthorElementCollection.php',
+ 'PharIo\\Manifest\\BundledComponent' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponent.php',
+ 'PharIo\\Manifest\\BundledComponentCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollection.php',
+ 'PharIo\\Manifest\\BundledComponentCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/BundledComponentCollectionIterator.php',
+ 'PharIo\\Manifest\\BundlesElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/BundlesElement.php',
+ 'PharIo\\Manifest\\ComponentElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElement.php',
+ 'PharIo\\Manifest\\ComponentElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ComponentElementCollection.php',
+ 'PharIo\\Manifest\\ContainsElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ContainsElement.php',
+ 'PharIo\\Manifest\\CopyrightElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/CopyrightElement.php',
+ 'PharIo\\Manifest\\CopyrightInformation' => __DIR__ . '/..' . '/phar-io/manifest/src/values/CopyrightInformation.php',
+ 'PharIo\\Manifest\\ElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ElementCollection.php',
+ 'PharIo\\Manifest\\ElementCollectionException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ElementCollectionException.php',
+ 'PharIo\\Manifest\\Email' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Email.php',
+ 'PharIo\\Manifest\\Exception' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/Exception.php',
+ 'PharIo\\Manifest\\ExtElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElement.php',
+ 'PharIo\\Manifest\\ExtElementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtElementCollection.php',
+ 'PharIo\\Manifest\\Extension' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Extension.php',
+ 'PharIo\\Manifest\\ExtensionElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ExtensionElement.php',
+ 'PharIo\\Manifest\\InvalidApplicationNameException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php',
+ 'PharIo\\Manifest\\InvalidEmailException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidEmailException.php',
+ 'PharIo\\Manifest\\InvalidUrlException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/InvalidUrlException.php',
+ 'PharIo\\Manifest\\Library' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Library.php',
+ 'PharIo\\Manifest\\License' => __DIR__ . '/..' . '/phar-io/manifest/src/values/License.php',
+ 'PharIo\\Manifest\\LicenseElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/LicenseElement.php',
+ 'PharIo\\Manifest\\Manifest' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Manifest.php',
+ 'PharIo\\Manifest\\ManifestDocument' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestDocument.php',
+ 'PharIo\\Manifest\\ManifestDocumentException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentException.php',
+ 'PharIo\\Manifest\\ManifestDocumentLoadingException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php',
+ 'PharIo\\Manifest\\ManifestDocumentMapper' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestDocumentMapper.php',
+ 'PharIo\\Manifest\\ManifestDocumentMapperException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php',
+ 'PharIo\\Manifest\\ManifestElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/ManifestElement.php',
+ 'PharIo\\Manifest\\ManifestElementException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestElementException.php',
+ 'PharIo\\Manifest\\ManifestLoader' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestLoader.php',
+ 'PharIo\\Manifest\\ManifestLoaderException' => __DIR__ . '/..' . '/phar-io/manifest/src/exceptions/ManifestLoaderException.php',
+ 'PharIo\\Manifest\\ManifestSerializer' => __DIR__ . '/..' . '/phar-io/manifest/src/ManifestSerializer.php',
+ 'PharIo\\Manifest\\PhpElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/PhpElement.php',
+ 'PharIo\\Manifest\\PhpExtensionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpExtensionRequirement.php',
+ 'PharIo\\Manifest\\PhpVersionRequirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/PhpVersionRequirement.php',
+ 'PharIo\\Manifest\\Requirement' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Requirement.php',
+ 'PharIo\\Manifest\\RequirementCollection' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollection.php',
+ 'PharIo\\Manifest\\RequirementCollectionIterator' => __DIR__ . '/..' . '/phar-io/manifest/src/values/RequirementCollectionIterator.php',
+ 'PharIo\\Manifest\\RequiresElement' => __DIR__ . '/..' . '/phar-io/manifest/src/xml/RequiresElement.php',
+ 'PharIo\\Manifest\\Type' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Type.php',
+ 'PharIo\\Manifest\\Url' => __DIR__ . '/..' . '/phar-io/manifest/src/values/Url.php',
+ 'PharIo\\Version\\AbstractVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AbstractVersionConstraint.php',
+ 'PharIo\\Version\\AndVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AndVersionConstraintGroup.php',
+ 'PharIo\\Version\\AnyVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/AnyVersionConstraint.php',
+ 'PharIo\\Version\\BuildMetaData' => __DIR__ . '/..' . '/phar-io/version/src/BuildMetaData.php',
+ 'PharIo\\Version\\ExactVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/ExactVersionConstraint.php',
+ 'PharIo\\Version\\Exception' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/Exception.php',
+ 'PharIo\\Version\\GreaterThanOrEqualToVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php',
+ 'PharIo\\Version\\InvalidPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php',
+ 'PharIo\\Version\\InvalidVersionException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/InvalidVersionException.php',
+ 'PharIo\\Version\\NoBuildMetaDataException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/NoBuildMetaDataException.php',
+ 'PharIo\\Version\\NoPreReleaseSuffixException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php',
+ 'PharIo\\Version\\OrVersionConstraintGroup' => __DIR__ . '/..' . '/phar-io/version/src/constraints/OrVersionConstraintGroup.php',
+ 'PharIo\\Version\\PreReleaseSuffix' => __DIR__ . '/..' . '/phar-io/version/src/PreReleaseSuffix.php',
+ 'PharIo\\Version\\SpecificMajorAndMinorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php',
+ 'PharIo\\Version\\SpecificMajorVersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php',
+ 'PharIo\\Version\\UnsupportedVersionConstraintException' => __DIR__ . '/..' . '/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php',
+ 'PharIo\\Version\\Version' => __DIR__ . '/..' . '/phar-io/version/src/Version.php',
+ 'PharIo\\Version\\VersionConstraint' => __DIR__ . '/..' . '/phar-io/version/src/constraints/VersionConstraint.php',
+ 'PharIo\\Version\\VersionConstraintParser' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintParser.php',
+ 'PharIo\\Version\\VersionConstraintValue' => __DIR__ . '/..' . '/phar-io/version/src/VersionConstraintValue.php',
+ 'PharIo\\Version\\VersionNumber' => __DIR__ . '/..' . '/phar-io/version/src/VersionNumber.php',
+ 'SebastianBergmann\\CliParser\\AmbiguousOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php',
+ 'SebastianBergmann\\CliParser\\Exception' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/Exception.php',
+ 'SebastianBergmann\\CliParser\\OptionDoesNotAllowArgumentException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php',
+ 'SebastianBergmann\\CliParser\\Parser' => __DIR__ . '/..' . '/sebastian/cli-parser/src/Parser.php',
+ 'SebastianBergmann\\CliParser\\RequiredOptionArgumentMissingException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php',
+ 'SebastianBergmann\\CliParser\\UnknownOptionException' => __DIR__ . '/..' . '/sebastian/cli-parser/src/exceptions/UnknownOptionException.php',
+ 'SebastianBergmann\\CodeCoverage\\BranchAndPathCoverageNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php',
+ 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
+ 'SebastianBergmann\\CodeCoverage\\DeadCodeDetectionNotSupportedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PathExistsButIsNotDirectoryException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PcovDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PcovDriver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PcovNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgDriver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PhpdbgNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Selector' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Selector.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\WriteOperationFailedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\WrongXdebugVersionException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug2NotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug3NotEnabledException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\XdebugNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php',
+ 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php',
+ 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php',
+ 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php',
+ 'SebastianBergmann\\CodeCoverage\\NoCodeCoverageDriverWithPathCoverageSupportAvailableException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\CrapIndex' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/CrapIndex.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php',
+ 'SebastianBergmann\\CodeCoverage\\ParserException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ParserException.php',
+ 'SebastianBergmann\\CodeCoverage\\ProcessedCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php',
+ 'SebastianBergmann\\CodeCoverage\\RawCodeCoverageData' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/RawCodeCoverageData.php',
+ 'SebastianBergmann\\CodeCoverage\\ReflectionException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ReflectionException.php',
+ 'SebastianBergmann\\CodeCoverage\\ReportAlreadyFinalizedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Cobertura' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Cobertura.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\BuildInformation' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Source' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Source.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysisCacheNotConfiguredException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CacheWarmer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CachingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\CodeUnitFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ExecutableLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\FileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\IgnoredLinesFindingVisitor' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php',
+ 'SebastianBergmann\\CodeCoverage\\StaticAnalysis\\ParsingFileAnalyser' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php',
+ 'SebastianBergmann\\CodeCoverage\\TestIdMissingException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php',
+ 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
+ 'SebastianBergmann\\CodeCoverage\\Util\\DirectoryCouldNotBeCreatedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Util\\Filesystem' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Filesystem.php',
+ 'SebastianBergmann\\CodeCoverage\\Util\\Percentage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util/Percentage.php',
+ 'SebastianBergmann\\CodeCoverage\\Version' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Version.php',
+ 'SebastianBergmann\\CodeCoverage\\XmlException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/XmlException.php',
+ 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
+ 'SebastianBergmann\\CodeUnit\\ClassMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassMethodUnit.php',
+ 'SebastianBergmann\\CodeUnit\\ClassUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/ClassUnit.php',
+ 'SebastianBergmann\\CodeUnit\\CodeUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnit.php',
+ 'SebastianBergmann\\CodeUnit\\CodeUnitCollection' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollection.php',
+ 'SebastianBergmann\\CodeUnit\\CodeUnitCollectionIterator' => __DIR__ . '/..' . '/sebastian/code-unit/src/CodeUnitCollectionIterator.php',
+ 'SebastianBergmann\\CodeUnit\\Exception' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/Exception.php',
+ 'SebastianBergmann\\CodeUnit\\FunctionUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/FunctionUnit.php',
+ 'SebastianBergmann\\CodeUnit\\InterfaceMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceMethodUnit.php',
+ 'SebastianBergmann\\CodeUnit\\InterfaceUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/InterfaceUnit.php',
+ 'SebastianBergmann\\CodeUnit\\InvalidCodeUnitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php',
+ 'SebastianBergmann\\CodeUnit\\Mapper' => __DIR__ . '/..' . '/sebastian/code-unit/src/Mapper.php',
+ 'SebastianBergmann\\CodeUnit\\NoTraitException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/NoTraitException.php',
+ 'SebastianBergmann\\CodeUnit\\ReflectionException' => __DIR__ . '/..' . '/sebastian/code-unit/src/exceptions/ReflectionException.php',
+ 'SebastianBergmann\\CodeUnit\\TraitMethodUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitMethodUnit.php',
+ 'SebastianBergmann\\CodeUnit\\TraitUnit' => __DIR__ . '/..' . '/sebastian/code-unit/src/TraitUnit.php',
+ 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
+ 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
+ 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php',
+ 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php',
+ 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php',
+ 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php',
+ 'SebastianBergmann\\Comparator\\Exception' => __DIR__ . '/..' . '/sebastian/comparator/src/exceptions/Exception.php',
+ 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php',
+ 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php',
+ 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php',
+ 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php',
+ 'SebastianBergmann\\Comparator\\RuntimeException' => __DIR__ . '/..' . '/sebastian/comparator/src/exceptions/RuntimeException.php',
+ 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php',
+ 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php',
+ 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php',
+ 'SebastianBergmann\\Complexity\\Calculator' => __DIR__ . '/..' . '/sebastian/complexity/src/Calculator.php',
+ 'SebastianBergmann\\Complexity\\Complexity' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/Complexity.php',
+ 'SebastianBergmann\\Complexity\\ComplexityCalculatingVisitor' => __DIR__ . '/..' . '/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php',
+ 'SebastianBergmann\\Complexity\\ComplexityCollection' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/ComplexityCollection.php',
+ 'SebastianBergmann\\Complexity\\ComplexityCollectionIterator' => __DIR__ . '/..' . '/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php',
+ 'SebastianBergmann\\Complexity\\CyclomaticComplexityCalculatingVisitor' => __DIR__ . '/..' . '/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php',
+ 'SebastianBergmann\\Complexity\\Exception' => __DIR__ . '/..' . '/sebastian/complexity/src/Exception/Exception.php',
+ 'SebastianBergmann\\Complexity\\RuntimeException' => __DIR__ . '/..' . '/sebastian/complexity/src/Exception/RuntimeException.php',
+ 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
+ 'SebastianBergmann\\Diff\\ConfigurationException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/ConfigurationException.php',
+ 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
+ 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
+ 'SebastianBergmann\\Diff\\Exception' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/Exception.php',
+ 'SebastianBergmann\\Diff\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/diff/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
+ 'SebastianBergmann\\Diff\\LongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/LongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\MemoryEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Diff\\Output\\AbstractChunkOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOnlyOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\DiffOutputBuilderInterface' => __DIR__ . '/..' . '/sebastian/diff/src/Output/DiffOutputBuilderInterface.php',
+ 'SebastianBergmann\\Diff\\Output\\StrictUnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Output\\UnifiedDiffOutputBuilder' => __DIR__ . '/..' . '/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php',
+ 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
+ 'SebastianBergmann\\Diff\\TimeEfficientLongestCommonSubsequenceCalculator' => __DIR__ . '/..' . '/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php',
+ 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php',
+ 'SebastianBergmann\\Environment\\OperatingSystem' => __DIR__ . '/..' . '/sebastian/environment/src/OperatingSystem.php',
+ 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php',
+ 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php',
+ 'SebastianBergmann\\FileIterator\\Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php',
+ 'SebastianBergmann\\FileIterator\\Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php',
+ 'SebastianBergmann\\FileIterator\\Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php',
+ 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php',
+ 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/Exception.php',
+ 'SebastianBergmann\\GlobalState\\ExcludeList' => __DIR__ . '/..' . '/sebastian/global-state/src/ExcludeList.php',
+ 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php',
+ 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/exceptions/RuntimeException.php',
+ 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php',
+ 'SebastianBergmann\\Invoker\\Exception' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/Exception.php',
+ 'SebastianBergmann\\Invoker\\Invoker' => __DIR__ . '/..' . '/phpunit/php-invoker/src/Invoker.php',
+ 'SebastianBergmann\\Invoker\\ProcessControlExtensionNotLoadedException' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php',
+ 'SebastianBergmann\\Invoker\\TimeoutException' => __DIR__ . '/..' . '/phpunit/php-invoker/src/exceptions/TimeoutException.php',
+ 'SebastianBergmann\\LinesOfCode\\Counter' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Counter.php',
+ 'SebastianBergmann\\LinesOfCode\\Exception' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/Exception.php',
+ 'SebastianBergmann\\LinesOfCode\\IllogicalValuesException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php',
+ 'SebastianBergmann\\LinesOfCode\\LineCountingVisitor' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LineCountingVisitor.php',
+ 'SebastianBergmann\\LinesOfCode\\LinesOfCode' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/LinesOfCode.php',
+ 'SebastianBergmann\\LinesOfCode\\NegativeValueException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/NegativeValueException.php',
+ 'SebastianBergmann\\LinesOfCode\\RuntimeException' => __DIR__ . '/..' . '/sebastian/lines-of-code/src/Exception/RuntimeException.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php',
+ 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ObjectReflector\\Exception' => __DIR__ . '/..' . '/sebastian/object-reflector/src/Exception.php',
+ 'SebastianBergmann\\ObjectReflector\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-reflector/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ObjectReflector\\ObjectReflector' => __DIR__ . '/..' . '/sebastian/object-reflector/src/ObjectReflector.php',
+ 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php',
+ 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php',
+ 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php',
+ 'SebastianBergmann\\Template\\Exception' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/Exception.php',
+ 'SebastianBergmann\\Template\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php',
+ 'SebastianBergmann\\Template\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-text-template/src/exceptions/RuntimeException.php',
+ 'SebastianBergmann\\Template\\Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php',
+ 'SebastianBergmann\\Timer\\Duration' => __DIR__ . '/..' . '/phpunit/php-timer/src/Duration.php',
+ 'SebastianBergmann\\Timer\\Exception' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/Exception.php',
+ 'SebastianBergmann\\Timer\\NoActiveTimerException' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/NoActiveTimerException.php',
+ 'SebastianBergmann\\Timer\\ResourceUsageFormatter' => __DIR__ . '/..' . '/phpunit/php-timer/src/ResourceUsageFormatter.php',
+ 'SebastianBergmann\\Timer\\TimeSinceStartOfRequestNotAvailableException' => __DIR__ . '/..' . '/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php',
+ 'SebastianBergmann\\Timer\\Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
+ 'SebastianBergmann\\Type\\CallableType' => __DIR__ . '/..' . '/sebastian/type/src/CallableType.php',
+ 'SebastianBergmann\\Type\\Exception' => __DIR__ . '/..' . '/sebastian/type/src/exception/Exception.php',
+ 'SebastianBergmann\\Type\\FalseType' => __DIR__ . '/..' . '/sebastian/type/src/FalseType.php',
+ 'SebastianBergmann\\Type\\GenericObjectType' => __DIR__ . '/..' . '/sebastian/type/src/GenericObjectType.php',
+ 'SebastianBergmann\\Type\\IterableType' => __DIR__ . '/..' . '/sebastian/type/src/IterableType.php',
+ 'SebastianBergmann\\Type\\LogicException' => __DIR__ . '/..' . '/sebastian/type/src/exception/LogicException.php',
+ 'SebastianBergmann\\Type\\MixedType' => __DIR__ . '/..' . '/sebastian/type/src/MixedType.php',
+ 'SebastianBergmann\\Type\\NullType' => __DIR__ . '/..' . '/sebastian/type/src/NullType.php',
+ 'SebastianBergmann\\Type\\ObjectType' => __DIR__ . '/..' . '/sebastian/type/src/ObjectType.php',
+ 'SebastianBergmann\\Type\\ReflectionMapper' => __DIR__ . '/..' . '/sebastian/type/src/ReflectionMapper.php',
+ 'SebastianBergmann\\Type\\RuntimeException' => __DIR__ . '/..' . '/sebastian/type/src/exception/RuntimeException.php',
+ 'SebastianBergmann\\Type\\SimpleType' => __DIR__ . '/..' . '/sebastian/type/src/SimpleType.php',
+ 'SebastianBergmann\\Type\\StaticType' => __DIR__ . '/..' . '/sebastian/type/src/StaticType.php',
+ 'SebastianBergmann\\Type\\Type' => __DIR__ . '/..' . '/sebastian/type/src/Type.php',
+ 'SebastianBergmann\\Type\\TypeName' => __DIR__ . '/..' . '/sebastian/type/src/TypeName.php',
+ 'SebastianBergmann\\Type\\UnionType' => __DIR__ . '/..' . '/sebastian/type/src/UnionType.php',
+ 'SebastianBergmann\\Type\\UnknownType' => __DIR__ . '/..' . '/sebastian/type/src/UnknownType.php',
+ 'SebastianBergmann\\Type\\VoidType' => __DIR__ . '/..' . '/sebastian/type/src/VoidType.php',
+ 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
+ 'TheSeer\\Tokenizer\\Exception' => __DIR__ . '/..' . '/theseer/tokenizer/src/Exception.php',
+ 'TheSeer\\Tokenizer\\NamespaceUri' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUri.php',
+ 'TheSeer\\Tokenizer\\NamespaceUriException' => __DIR__ . '/..' . '/theseer/tokenizer/src/NamespaceUriException.php',
+ 'TheSeer\\Tokenizer\\Token' => __DIR__ . '/..' . '/theseer/tokenizer/src/Token.php',
+ 'TheSeer\\Tokenizer\\TokenCollection' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollection.php',
+ 'TheSeer\\Tokenizer\\TokenCollectionException' => __DIR__ . '/..' . '/theseer/tokenizer/src/TokenCollectionException.php',
+ 'TheSeer\\Tokenizer\\Tokenizer' => __DIR__ . '/..' . '/theseer/tokenizer/src/Tokenizer.php',
+ 'TheSeer\\Tokenizer\\XMLSerializer' => __DIR__ . '/..' . '/theseer/tokenizer/src/XMLSerializer.php',
);
public static function getInitializer(ClassLoader $loader)
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 7de696894..3a8cda28e 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -2,24 +2,20 @@
"packages": [
{
"name": "beberlei/assert",
- "version": "v3.2.7",
- "version_normalized": "3.2.7.0",
+ "version": "v3.2.2",
+ "version_normalized": "3.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/beberlei/assert.git",
- "reference": "d63a6943fc4fd1a2aedb65994e3548715105abcf"
+ "reference": "5547e7d03f8c6be121b8b9db6d6ed5a22ffdcb01"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/beberlei/assert/zipball/d63a6943fc4fd1a2aedb65994e3548715105abcf",
- "reference": "d63a6943fc4fd1a2aedb65994e3548715105abcf",
+ "url": "https://api.github.com/repos/beberlei/assert/zipball/5547e7d03f8c6be121b8b9db6d6ed5a22ffdcb01",
+ "reference": "5547e7d03f8c6be121b8b9db6d6ed5a22ffdcb01",
"shasum": ""
},
"require": {
- "ext-ctype": "*",
- "ext-json": "*",
- "ext-mbstring": "*",
- "ext-simplexml": "*",
"php": "^7"
},
"require-dev": {
@@ -27,10 +23,7 @@
"phpstan/phpstan-shim": "*",
"phpunit/phpunit": ">=6.0.0 <8"
},
- "suggest": {
- "ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles"
- },
- "time": "2019-12-19T17:51:41+00:00",
+ "time": "2019-08-23T16:04:58+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -63,33 +56,30 @@
"assertion",
"validation"
],
- "support": {
- "issues": "https://github.com/beberlei/assert/issues",
- "source": "https://github.com/beberlei/assert/tree/v3"
- },
"install-path": "../beberlei/assert"
},
{
"name": "chillerlan/php-qrcode",
- "version": "3.4.0",
- "version_normalized": "3.4.0.0",
+ "version": "3.4.1",
+ "version_normalized": "3.4.1.0",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-qrcode.git",
- "reference": "d8bf297e6843a53aeaa8f3285ce04fc349d133d6"
+ "reference": "468603b687a5fe75c1ff33857a45f1726c7b95a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/d8bf297e6843a53aeaa8f3285ce04fc349d133d6",
- "reference": "d8bf297e6843a53aeaa8f3285ce04fc349d133d6",
+ "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/468603b687a5fe75c1ff33857a45f1726c7b95a9",
+ "reference": "468603b687a5fe75c1ff33857a45f1726c7b95a9",
"shasum": ""
},
"require": {
- "chillerlan/php-settings-container": "^1.2",
+ "chillerlan/php-settings-container": "^1.2.2",
"ext-mbstring": "*",
- "php": "^7.2"
+ "php": "^7.2 || ^8.0"
},
"require-dev": {
+ "phan/phan": "^3.2.2",
"phpunit/phpunit": "^8.5",
"setasign/fpdf": "^1.8.2"
},
@@ -97,7 +87,7 @@
"chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.",
"setasign/fpdf": "Required to use the QR FPDF output."
},
- "time": "2020-11-18T20:51:41+00:00",
+ "time": "2021-09-03T17:54:45+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -133,10 +123,6 @@
"qrcode",
"qrcode-generator"
],
- "support": {
- "issues": "https://github.com/chillerlan/php-qrcode/issues",
- "source": "https://github.com/chillerlan/php-qrcode/tree/3.4.0"
- },
"funding": [
{
"url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4",
@@ -151,27 +137,27 @@
},
{
"name": "chillerlan/php-settings-container",
- "version": "1.2.1",
- "version_normalized": "1.2.1.0",
+ "version": "1.2.2",
+ "version_normalized": "1.2.2.0",
"source": {
"type": "git",
"url": "https://github.com/chillerlan/php-settings-container.git",
- "reference": "b9b0431dffd74102ee92348a63b4c33fc8ba639b"
+ "reference": "d1b5284d6eb3a767459738bb0b20073f0cb3eeaf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/b9b0431dffd74102ee92348a63b4c33fc8ba639b",
- "reference": "b9b0431dffd74102ee92348a63b4c33fc8ba639b",
+ "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/d1b5284d6eb3a767459738bb0b20073f0cb3eeaf",
+ "reference": "d1b5284d6eb3a767459738bb0b20073f0cb3eeaf",
"shasum": ""
},
"require": {
"ext-json": "*",
- "php": "^7.2"
+ "php": "^7.2 || ^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.3"
+ "phpunit/phpunit": "^8.4"
},
- "time": "2019-09-10T00:09:44+00:00",
+ "time": "2021-09-03T17:33:25+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@@ -198,11 +184,90 @@
"container",
"helper"
],
+ "funding": [
+ {
+ "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4",
+ "type": "custom"
+ },
+ {
+ "url": "https://ko-fi.com/codemasher",
+ "type": "ko_fi"
+ }
+ ],
+ "install-path": "../chillerlan/php-settings-container"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.1",
+ "version_normalized": "1.4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^9",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.22"
+ },
+ "time": "2022-03-03T08:28:38+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "[email protected]",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
"support": {
- "issues": "https://github.com/chillerlan/php-settings-container/issues",
- "source": "https://github.com/chillerlan/php-settings-container"
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.1"
},
- "install-path": "../chillerlan/php-settings-container"
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../doctrine/instantiator"
},
{
"name": "j4mie/idiorm",
@@ -320,6 +385,127 @@
"install-path": "../mervick/material-design-icons"
},
{
+ "name": "myclabs/deep-copy",
+ "version": "1.11.0",
+ "version_normalized": "1.11.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+ },
+ "time": "2022-03-03T13:19:32+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../myclabs/deep-copy"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.13.2",
+ "version_normalized": "4.13.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "time": "2021-11-30T19:35:32+00:00",
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
+ },
+ "install-path": "../nikic/php-parser"
+ },
+ {
"name": "paragonie/constant_time_encoding",
"version": "v2.4.0",
"version_normalized": "2.4.0.0",
@@ -390,6 +576,1876 @@
"install-path": "../paragonie/constant_time_encoding"
},
{
+ "name": "phar-io/manifest",
+ "version": "2.0.3",
+ "version_normalized": "2.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
+ },
+ "time": "2021-07-20T11:28:43+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ },
+ "install-path": "../phar-io/manifest"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "3.2.1",
+ "version_normalized": "3.2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "time": "2022-02-21T01:04:05+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
+ },
+ "install-path": "../phar-io/version"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "version_normalized": "2.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "time": "2020-06-27T09:03:43+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "install-path": "../phpdocumentor/reflection-common"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.3.0",
+ "version_normalized": "5.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "time": "2021-10-19T17:43:47+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ },
+ "install-path": "../phpdocumentor/reflection-docblock"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.6.0",
+ "version_normalized": "1.6.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
+ },
+ "time": "2022-01-04T19:58:01+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0"
+ },
+ "install-path": "../phpdocumentor/type-resolver"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.15.0",
+ "version_normalized": "1.15.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2 || ~8.0, <8.2",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^6.0 || ^7.0",
+ "phpunit/phpunit": "^8.0 || ^9.0"
+ },
+ "time": "2021-12-08T12:19:24+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "[email protected]",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
+ },
+ "install-path": "../phpspec/prophecy"
+ },
+ {
+ "name": "phpstan/phpstan",
+ "version": "1.1.2",
+ "version_normalized": "1.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "bcea0ae85868a89d5789c75f012c93129f842934"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/bcea0ae85868a89d5789c75f012c93129f842934",
+ "reference": "bcea0ae85868a89d5789c75f012c93129f842934",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1|^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
+ },
+ "time": "2021-11-09T12:41:09+00:00",
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "funding": [
+ {
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/phpstan",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/phpstan",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../phpstan/phpstan"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "9.2.15",
+ "version_normalized": "9.2.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+ "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.13.0",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
+ },
+ "time": "2022-03-07T09:28:20+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.2-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../phpunit/php-code-coverage"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "3.0.6",
+ "version_normalized": "3.0.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2021-12-02T12:48:52+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../phpunit/php-file-iterator"
+ },
+ {
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
+ "version_normalized": "3.1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "time": "2020-09-28T05:58:55+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../phpunit/php-invoker"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
+ "version_normalized": "2.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-10-26T05:33:50+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../phpunit/php-text-template"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
+ "version_normalized": "5.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-10-26T13:16:10+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../phpunit/php-timer"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "9.5.16",
+ "version_normalized": "9.5.16.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5ff8c545a50226c569310a35f4fa89d79f1ddfdc",
+ "reference": "5ff8c545a50226c569310a35f4fa89d79f1ddfdc",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.3",
+ "phar-io/version": "^3.0.2",
+ "php": ">=7.3",
+ "phpspec/prophecy": "^1.12.1",
+ "phpunit/php-code-coverage": "^9.2.13",
+ "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.3",
+ "phpunit/php-timer": "^5.0.2",
+ "sebastian/cli-parser": "^1.0.1",
+ "sebastian/code-unit": "^1.0.6",
+ "sebastian/comparator": "^4.0.5",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.3",
+ "sebastian/exporter": "^4.0.3",
+ "sebastian/global-state": "^5.0.1",
+ "sebastian/object-enumerator": "^4.0.3",
+ "sebastian/resource-operations": "^3.0.3",
+ "sebastian/type": "^2.3.4",
+ "sebastian/version": "^3.0.2"
+ },
+ "require-dev": {
+ "ext-pdo": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
+ "time": "2022-02-23T17:10:58+00:00",
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.5-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ],
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.16"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/sponsors.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../phpunit/phpunit"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-09-28T06:08:49+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for parsing CLI options",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/cli-parser"
+ },
+ {
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
+ "version_normalized": "1.0.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-10-26T13:08:54+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/code-unit"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "2.0.3",
+ "version_normalized": "2.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-09-28T05:30:19+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/code-unit-reverse-lookup"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "version_normalized": "4.0.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-10-26T15:49:45+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/comparator"
+ },
+ {
+ "name": "sebastian/complexity",
+ "version": "2.0.2",
+ "version_normalized": "2.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.7",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-10-26T15:52:27+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/complexity"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.4",
+ "version_normalized": "4.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "time": "2020-10-26T13:10:38+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/diff"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "5.1.3",
+ "version_normalized": "5.1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "time": "2020-09-28T05:52:38+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/environment"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "4.0.4",
+ "version_normalized": "4.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2021-11-11T14:18:36+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/exporter"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "5.0.5",
+ "version_normalized": "5.0.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "time": "2022-02-14T08:28:10+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/global-state"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
+ "version_normalized": "1.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-11-28T06:42:11+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for counting the lines of code in PHP source code",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/lines-of-code"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
+ "version_normalized": "4.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-10-26T13:12:34+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/object-enumerator"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
+ "version_normalized": "2.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-10-26T13:14:26+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/object-reflector"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
+ "version_normalized": "4.0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2020-10-26T13:17:30+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/recursion-context"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "3.0.3",
+ "version_normalized": "3.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "time": "2020-09-28T06:45:17+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/resource-operations"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "2.3.4",
+ "version_normalized": "2.3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "time": "2021-06-15T12:49:02+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/type"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "3.0.2",
+ "version_normalized": "3.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "time": "2020-09-28T06:39:44+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/version"
+ },
+ {
"name": "spomky-labs/otphp",
"version": "v10.0.1",
"version_normalized": "10.0.1.0",
@@ -468,6 +2524,91 @@
"install-path": "../spomky-labs/otphp"
},
{
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.25.0",
+ "version_normalized": "1.25.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "time": "2021-10-20T20:35:02+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-ctype"
+ },
+ {
"name": "thecodingmachine/safe",
"version": "v1.3.3",
"version_normalized": "1.3.3.0",
@@ -608,8 +2749,158 @@
"source": "https://github.com/thecodingmachine/safe/tree/v1.3.3"
},
"install-path": "../thecodingmachine/safe"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.1",
+ "version_normalized": "1.2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "time": "2021-07-28T10:34:58+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "[email protected]",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "install-path": "../theseer/tokenizer"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.10.0",
+ "version_normalized": "1.10.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "time": "2021-03-09T10:59:23+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ },
+ "install-path": "../webmozart/assert"
}
],
"dev": true,
- "dev-package-names": []
+ "dev-package-names": [
+ "doctrine/instantiator",
+ "myclabs/deep-copy",
+ "nikic/php-parser",
+ "phar-io/manifest",
+ "phar-io/version",
+ "phpdocumentor/reflection-common",
+ "phpdocumentor/reflection-docblock",
+ "phpdocumentor/type-resolver",
+ "phpspec/prophecy",
+ "phpstan/phpstan",
+ "phpunit/php-code-coverage",
+ "phpunit/php-file-iterator",
+ "phpunit/php-invoker",
+ "phpunit/php-text-template",
+ "phpunit/php-timer",
+ "phpunit/phpunit",
+ "sebastian/cli-parser",
+ "sebastian/code-unit",
+ "sebastian/code-unit-reverse-lookup",
+ "sebastian/comparator",
+ "sebastian/complexity",
+ "sebastian/diff",
+ "sebastian/environment",
+ "sebastian/exporter",
+ "sebastian/global-state",
+ "sebastian/lines-of-code",
+ "sebastian/object-enumerator",
+ "sebastian/object-reflector",
+ "sebastian/recursion-context",
+ "sebastian/resource-operations",
+ "sebastian/type",
+ "sebastian/version",
+ "symfony/polyfill-ctype",
+ "theseer/tokenizer",
+ "webmozart/assert"
+ ]
}
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index 59d40508a..9441de7c6 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -1,106 +1,410 @@
-<?php return array (
- 'root' =>
- array (
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'aliases' =>
- array (
+<?php return array(
+ 'root' => array(
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'reference' => '711662948768492e8d05b778a7d80eacaec368d2',
+ 'name' => '__root__',
+ 'dev' => true,
),
- 'reference' => 'f96abd2b52b9de5eac3651594ca32c6a4023c3e3',
- 'dev-requirement' => true,
- 'name' => '__root__',
- ),
- 'versions' =>
- array (
- '__root__' =>
- array (
- 'pretty_version' => 'dev-master',
- 'version' => 'dev-master',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f96abd2b52b9de5eac3651594ca32c6a4023c3e3',
- 'dev-requirement' => false,
+ 'versions' => array(
+ '__root__' => array(
+ 'pretty_version' => 'dev-master',
+ 'version' => 'dev-master',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'reference' => '711662948768492e8d05b778a7d80eacaec368d2',
+ 'dev_requirement' => false,
+ ),
+ 'beberlei/assert' => array(
+ 'pretty_version' => 'v3.2.2',
+ 'version' => '3.2.2.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../beberlei/assert',
+ 'aliases' => array(),
+ 'reference' => '5547e7d03f8c6be121b8b9db6d6ed5a22ffdcb01',
+ 'dev_requirement' => false,
+ ),
+ 'chillerlan/php-qrcode' => array(
+ 'pretty_version' => '3.4.1',
+ 'version' => '3.4.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../chillerlan/php-qrcode',
+ 'aliases' => array(),
+ 'reference' => '468603b687a5fe75c1ff33857a45f1726c7b95a9',
+ 'dev_requirement' => false,
+ ),
+ 'chillerlan/php-settings-container' => array(
+ 'pretty_version' => '1.2.2',
+ 'version' => '1.2.2.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../chillerlan/php-settings-container',
+ 'aliases' => array(),
+ 'reference' => 'd1b5284d6eb3a767459738bb0b20073f0cb3eeaf',
+ 'dev_requirement' => false,
+ ),
+ 'doctrine/instantiator' => array(
+ 'pretty_version' => '1.4.1',
+ 'version' => '1.4.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../doctrine/instantiator',
+ 'aliases' => array(),
+ 'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc',
+ 'dev_requirement' => true,
+ ),
+ 'j4mie/idiorm' => array(
+ 'pretty_version' => 'v1.5.7',
+ 'version' => '1.5.7.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../j4mie/idiorm',
+ 'aliases' => array(),
+ 'reference' => 'd23f97053ef5d0b988a02c6a71eb5c6118b2f5b4',
+ 'dev_requirement' => false,
+ ),
+ 'mervick/material-design-icons' => array(
+ 'pretty_version' => '2.2.0',
+ 'version' => '2.2.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../mervick/material-design-icons',
+ 'aliases' => array(),
+ 'reference' => '635435c8d3df3a6da3241648caf8a65d1c07cc1a',
+ 'dev_requirement' => false,
+ ),
+ 'myclabs/deep-copy' => array(
+ 'pretty_version' => '1.11.0',
+ 'version' => '1.11.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../myclabs/deep-copy',
+ 'aliases' => array(),
+ 'reference' => '14daed4296fae74d9e3201d2c4925d1acb7aa614',
+ 'dev_requirement' => true,
+ ),
+ 'nikic/php-parser' => array(
+ 'pretty_version' => 'v4.13.2',
+ 'version' => '4.13.2.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../nikic/php-parser',
+ 'aliases' => array(),
+ 'reference' => '210577fe3cf7badcc5814d99455df46564f3c077',
+ 'dev_requirement' => true,
+ ),
+ 'paragonie/constant_time_encoding' => array(
+ 'pretty_version' => 'v2.4.0',
+ 'version' => '2.4.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../paragonie/constant_time_encoding',
+ 'aliases' => array(),
+ 'reference' => 'f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c',
+ 'dev_requirement' => false,
+ ),
+ 'phar-io/manifest' => array(
+ 'pretty_version' => '2.0.3',
+ 'version' => '2.0.3.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phar-io/manifest',
+ 'aliases' => array(),
+ 'reference' => '97803eca37d319dfa7826cc2437fc020857acb53',
+ 'dev_requirement' => true,
+ ),
+ 'phar-io/version' => array(
+ 'pretty_version' => '3.2.1',
+ 'version' => '3.2.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phar-io/version',
+ 'aliases' => array(),
+ 'reference' => '4f7fd7836c6f332bb2933569e566a0d6c4cbed74',
+ 'dev_requirement' => true,
+ ),
+ 'phpdocumentor/reflection-common' => array(
+ 'pretty_version' => '2.2.0',
+ 'version' => '2.2.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpdocumentor/reflection-common',
+ 'aliases' => array(),
+ 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
+ 'dev_requirement' => true,
+ ),
+ 'phpdocumentor/reflection-docblock' => array(
+ 'pretty_version' => '5.3.0',
+ 'version' => '5.3.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock',
+ 'aliases' => array(),
+ 'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170',
+ 'dev_requirement' => true,
+ ),
+ 'phpdocumentor/type-resolver' => array(
+ 'pretty_version' => '1.6.0',
+ 'version' => '1.6.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpdocumentor/type-resolver',
+ 'aliases' => array(),
+ 'reference' => '93ebd0014cab80c4ea9f5e297ea48672f1b87706',
+ 'dev_requirement' => true,
+ ),
+ 'phpspec/prophecy' => array(
+ 'pretty_version' => 'v1.15.0',
+ 'version' => '1.15.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpspec/prophecy',
+ 'aliases' => array(),
+ 'reference' => 'bbcd7380b0ebf3961ee21409db7b38bc31d69a13',
+ 'dev_requirement' => true,
+ ),
+ 'phpstan/phpstan' => array(
+ 'pretty_version' => '1.1.2',
+ 'version' => '1.1.2.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpstan/phpstan',
+ 'aliases' => array(),
+ 'reference' => 'bcea0ae85868a89d5789c75f012c93129f842934',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/php-code-coverage' => array(
+ 'pretty_version' => '9.2.15',
+ 'version' => '9.2.15.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/php-code-coverage',
+ 'aliases' => array(),
+ 'reference' => '2e9da11878c4202f97915c1cb4bb1ca318a63f5f',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/php-file-iterator' => array(
+ 'pretty_version' => '3.0.6',
+ 'version' => '3.0.6.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/php-file-iterator',
+ 'aliases' => array(),
+ 'reference' => 'cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/php-invoker' => array(
+ 'pretty_version' => '3.1.1',
+ 'version' => '3.1.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/php-invoker',
+ 'aliases' => array(),
+ 'reference' => '5a10147d0aaf65b58940a0b72f71c9ac0423cc67',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/php-text-template' => array(
+ 'pretty_version' => '2.0.4',
+ 'version' => '2.0.4.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/php-text-template',
+ 'aliases' => array(),
+ 'reference' => '5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/php-timer' => array(
+ 'pretty_version' => '5.0.3',
+ 'version' => '5.0.3.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/php-timer',
+ 'aliases' => array(),
+ 'reference' => '5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/phpunit' => array(
+ 'pretty_version' => '9.5.16',
+ 'version' => '9.5.16.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/phpunit',
+ 'aliases' => array(),
+ 'reference' => '5ff8c545a50226c569310a35f4fa89d79f1ddfdc',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/cli-parser' => array(
+ 'pretty_version' => '1.0.1',
+ 'version' => '1.0.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/cli-parser',
+ 'aliases' => array(),
+ 'reference' => '442e7c7e687e42adc03470c7b668bc4b2402c0b2',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/code-unit' => array(
+ 'pretty_version' => '1.0.8',
+ 'version' => '1.0.8.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/code-unit',
+ 'aliases' => array(),
+ 'reference' => '1fc9f64c0927627ef78ba436c9b17d967e68e120',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/code-unit-reverse-lookup' => array(
+ 'pretty_version' => '2.0.3',
+ 'version' => '2.0.3.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup',
+ 'aliases' => array(),
+ 'reference' => 'ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/comparator' => array(
+ 'pretty_version' => '4.0.6',
+ 'version' => '4.0.6.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/comparator',
+ 'aliases' => array(),
+ 'reference' => '55f4261989e546dc112258c7a75935a81a7ce382',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/complexity' => array(
+ 'pretty_version' => '2.0.2',
+ 'version' => '2.0.2.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/complexity',
+ 'aliases' => array(),
+ 'reference' => '739b35e53379900cc9ac327b2147867b8b6efd88',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/diff' => array(
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/diff',
+ 'aliases' => array(),
+ 'reference' => '3461e3fccc7cfdfc2720be910d3bd73c69be590d',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/environment' => array(
+ 'pretty_version' => '5.1.3',
+ 'version' => '5.1.3.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/environment',
+ 'aliases' => array(),
+ 'reference' => '388b6ced16caa751030f6a69e588299fa09200ac',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/exporter' => array(
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/exporter',
+ 'aliases' => array(),
+ 'reference' => '65e8b7db476c5dd267e65eea9cab77584d3cfff9',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/global-state' => array(
+ 'pretty_version' => '5.0.5',
+ 'version' => '5.0.5.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/global-state',
+ 'aliases' => array(),
+ 'reference' => '0ca8db5a5fc9c8646244e629625ac486fa286bf2',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/lines-of-code' => array(
+ 'pretty_version' => '1.0.3',
+ 'version' => '1.0.3.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/lines-of-code',
+ 'aliases' => array(),
+ 'reference' => 'c1c2e997aa3146983ed888ad08b15470a2e22ecc',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/object-enumerator' => array(
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/object-enumerator',
+ 'aliases' => array(),
+ 'reference' => '5c9eeac41b290a3712d88851518825ad78f45c71',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/object-reflector' => array(
+ 'pretty_version' => '2.0.4',
+ 'version' => '2.0.4.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/object-reflector',
+ 'aliases' => array(),
+ 'reference' => 'b4f479ebdbf63ac605d183ece17d8d7fe49c15c7',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/recursion-context' => array(
+ 'pretty_version' => '4.0.4',
+ 'version' => '4.0.4.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/recursion-context',
+ 'aliases' => array(),
+ 'reference' => 'cd9d8cf3c5804de4341c283ed787f099f5506172',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/resource-operations' => array(
+ 'pretty_version' => '3.0.3',
+ 'version' => '3.0.3.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/resource-operations',
+ 'aliases' => array(),
+ 'reference' => '0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/type' => array(
+ 'pretty_version' => '2.3.4',
+ 'version' => '2.3.4.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/type',
+ 'aliases' => array(),
+ 'reference' => 'b8cd8a1c753c90bc1a0f5372170e3e489136f914',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/version' => array(
+ 'pretty_version' => '3.0.2',
+ 'version' => '3.0.2.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/version',
+ 'aliases' => array(),
+ 'reference' => 'c6c1022351a901512170118436c764e473f6de8c',
+ 'dev_requirement' => true,
+ ),
+ 'spomky-labs/otphp' => array(
+ 'pretty_version' => 'v10.0.1',
+ 'version' => '10.0.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../spomky-labs/otphp',
+ 'aliases' => array(),
+ 'reference' => 'f44cce5a9db4b8da410215d992110482c931232f',
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-ctype' => array(
+ 'pretty_version' => 'v1.25.0',
+ 'version' => '1.25.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
+ 'aliases' => array(),
+ 'reference' => '30885182c981ab175d4d034db0f6f469898070ab',
+ 'dev_requirement' => true,
+ ),
+ 'thecodingmachine/safe' => array(
+ 'pretty_version' => 'v1.3.3',
+ 'version' => '1.3.3.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../thecodingmachine/safe',
+ 'aliases' => array(),
+ 'reference' => 'a8ab0876305a4cdaef31b2350fcb9811b5608dbc',
+ 'dev_requirement' => false,
+ ),
+ 'theseer/tokenizer' => array(
+ 'pretty_version' => '1.2.1',
+ 'version' => '1.2.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../theseer/tokenizer',
+ 'aliases' => array(),
+ 'reference' => '34a41e998c2183e22995f158c581e7b5e755ab9e',
+ 'dev_requirement' => true,
+ ),
+ 'webmozart/assert' => array(
+ 'pretty_version' => '1.10.0',
+ 'version' => '1.10.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../webmozart/assert',
+ 'aliases' => array(),
+ 'reference' => '6964c76c7804814a842473e0c8fd15bab0f18e25',
+ 'dev_requirement' => true,
+ ),
),
- 'beberlei/assert' =>
- array (
- 'pretty_version' => 'v3.2.7',
- 'version' => '3.2.7.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd63a6943fc4fd1a2aedb65994e3548715105abcf',
- 'dev-requirement' => false,
- ),
- 'chillerlan/php-qrcode' =>
- array (
- 'pretty_version' => '3.4.0',
- 'version' => '3.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd8bf297e6843a53aeaa8f3285ce04fc349d133d6',
- 'dev-requirement' => false,
- ),
- 'chillerlan/php-settings-container' =>
- array (
- 'pretty_version' => '1.2.1',
- 'version' => '1.2.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'b9b0431dffd74102ee92348a63b4c33fc8ba639b',
- 'dev-requirement' => false,
- ),
- 'j4mie/idiorm' =>
- array (
- 'pretty_version' => 'v1.5.7',
- 'version' => '1.5.7.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'd23f97053ef5d0b988a02c6a71eb5c6118b2f5b4',
- 'dev-requirement' => false,
- ),
- 'mervick/material-design-icons' =>
- array (
- 'pretty_version' => '2.2.0',
- 'version' => '2.2.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => '635435c8d3df3a6da3241648caf8a65d1c07cc1a',
- 'dev-requirement' => false,
- ),
- 'paragonie/constant_time_encoding' =>
- array (
- 'pretty_version' => 'v2.4.0',
- 'version' => '2.4.0.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f34c2b11eb9d2c9318e13540a1dbc2a3afbd939c',
- 'dev-requirement' => false,
- ),
- 'spomky-labs/otphp' =>
- array (
- 'pretty_version' => 'v10.0.1',
- 'version' => '10.0.1.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'f44cce5a9db4b8da410215d992110482c931232f',
- 'dev-requirement' => false,
- ),
- 'thecodingmachine/safe' =>
- array (
- 'pretty_version' => 'v1.3.3',
- 'version' => '1.3.3.0',
- 'aliases' =>
- array (
- ),
- 'reference' => 'a8ab0876305a4cdaef31b2350fcb9811b5608dbc',
- 'dev-requirement' => false,
- ),
- ),
);
diff --git a/vendor/doctrine/instantiator/.doctrine-project.json b/vendor/doctrine/instantiator/.doctrine-project.json
new file mode 100644
index 000000000..24ae36e0d
--- /dev/null
+++ b/vendor/doctrine/instantiator/.doctrine-project.json
@@ -0,0 +1,47 @@
+{
+ "active": true,
+ "name": "Instantiator",
+ "slug": "instantiator",
+ "docsSlug": "doctrine-instantiator",
+ "codePath": "/src",
+ "versions": [
+ {
+ "name": "1.5",
+ "branchName": "1.5.x",
+ "slug": "latest",
+ "upcoming": true
+ },
+ {
+ "name": "1.4",
+ "branchName": "1.4.x",
+ "slug": "1.4",
+ "aliases": [
+ "current",
+ "stable"
+ ],
+ "maintained": true,
+ "current": true
+ },
+ {
+ "name": "1.3",
+ "branchName": "1.3.x",
+ "slug": "1.3",
+ "maintained": false
+ },
+ {
+ "name": "1.2",
+ "branchName": "1.2.x",
+ "slug": "1.2"
+ },
+ {
+ "name": "1.1",
+ "branchName": "1.1.x",
+ "slug": "1.1"
+ },
+ {
+ "name": "1.0",
+ "branchName": "1.0.x",
+ "slug": "1.0"
+ }
+ ]
+}
diff --git a/vendor/doctrine/instantiator/CONTRIBUTING.md b/vendor/doctrine/instantiator/CONTRIBUTING.md
new file mode 100644
index 000000000..c1a2c42ee
--- /dev/null
+++ b/vendor/doctrine/instantiator/CONTRIBUTING.md
@@ -0,0 +1,35 @@
+# Contributing
+
+ * Follow the [Doctrine Coding Standard](https://github.com/doctrine/coding-standard)
+ * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php)
+ * Any contribution must provide tests for additional introduced conditions
+ * Any un-confirmed issue needs a failing test case before being accepted
+ * Pull requests must be sent from a new hotfix/feature branch, not from `master`.
+
+## Installation
+
+To install the project and run the tests, you need to clone it first:
+
+```sh
+$ git clone git://github.com/doctrine/instantiator.git
+```
+
+You will then need to run a composer installation:
+
+```sh
+$ cd Instantiator
+$ curl -s https://getcomposer.org/installer | php
+$ php composer.phar update
+```
+
+## Testing
+
+The PHPUnit version to be used is the one installed as a dev- dependency via composer:
+
+```sh
+$ ./vendor/bin/phpunit
+```
+
+Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement
+won't be merged.
+
diff --git a/vendor/doctrine/instantiator/LICENSE b/vendor/doctrine/instantiator/LICENSE
new file mode 100644
index 000000000..4d983d1ac
--- /dev/null
+++ b/vendor/doctrine/instantiator/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014 Doctrine Project
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/doctrine/instantiator/README.md b/vendor/doctrine/instantiator/README.md
new file mode 100644
index 000000000..4bc02b655
--- /dev/null
+++ b/vendor/doctrine/instantiator/README.md
@@ -0,0 +1,38 @@
+# Instantiator
+
+This library provides a way of avoiding usage of constructors when instantiating PHP classes.
+
+[![Build Status](https://travis-ci.org/doctrine/instantiator.svg?branch=master)](https://travis-ci.org/doctrine/instantiator)
+[![Code Coverage](https://codecov.io/gh/doctrine/instantiator/branch/master/graph/badge.svg)](https://codecov.io/gh/doctrine/instantiator/branch/master)
+[![Dependency Status](https://www.versioneye.com/package/php--doctrine--instantiator/badge.svg)](https://www.versioneye.com/package/php--doctrine--instantiator)
+
+[![Latest Stable Version](https://poser.pugx.org/doctrine/instantiator/v/stable.png)](https://packagist.org/packages/doctrine/instantiator)
+[![Latest Unstable Version](https://poser.pugx.org/doctrine/instantiator/v/unstable.png)](https://packagist.org/packages/doctrine/instantiator)
+
+## Installation
+
+The suggested installation method is via [composer](https://getcomposer.org/):
+
+```sh
+php composer.phar require "doctrine/instantiator:~1.0.3"
+```
+
+## Usage
+
+The instantiator is able to create new instances of any class without using the constructor or any API of the class
+itself:
+
+```php
+$instantiator = new \Doctrine\Instantiator\Instantiator();
+
+$instance = $instantiator->instantiate(\My\ClassName\Here::class);
+```
+
+## Contributing
+
+Please read the [CONTRIBUTING.md](CONTRIBUTING.md) contents if you wish to help out!
+
+## Credits
+
+This library was migrated from [ocramius/instantiator](https://github.com/Ocramius/Instantiator), which
+has been donated to the doctrine organization, and which is now deprecated in favour of this package.
diff --git a/vendor/doctrine/instantiator/composer.json b/vendor/doctrine/instantiator/composer.json
new file mode 100644
index 000000000..4fba95ca6
--- /dev/null
+++ b/vendor/doctrine/instantiator/composer.json
@@ -0,0 +1,48 @@
+{
+ "name": "doctrine/instantiator",
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "type": "library",
+ "license": "MIT",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "instantiate",
+ "constructor"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "[email protected]",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "ext-phar": "*",
+ "ext-pdo": "*",
+ "doctrine/coding-standard": "^9",
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.22"
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "autoload-dev": {
+ "psr-0": {
+ "DoctrineTest\\InstantiatorPerformance\\": "tests",
+ "DoctrineTest\\InstantiatorTest\\": "tests",
+ "DoctrineTest\\InstantiatorTestAsset\\": "tests"
+ }
+ },
+ "config": {
+ "allow-plugins": {
+ "dealerdirect/phpcodesniffer-composer-installer": true
+ }
+ }
+}
diff --git a/vendor/doctrine/instantiator/docs/en/index.rst b/vendor/doctrine/instantiator/docs/en/index.rst
new file mode 100644
index 000000000..0c85da0bc
--- /dev/null
+++ b/vendor/doctrine/instantiator/docs/en/index.rst
@@ -0,0 +1,68 @@
+Introduction
+============
+
+This library provides a way of avoiding usage of constructors when instantiating PHP classes.
+
+Installation
+============
+
+The suggested installation method is via `composer`_:
+
+.. code-block:: console
+
+ $ composer require doctrine/instantiator
+
+Usage
+=====
+
+The instantiator is able to create new instances of any class without
+using the constructor or any API of the class itself:
+
+.. code-block:: php
+
+ <?php
+
+ use Doctrine\Instantiator\Instantiator;
+ use App\Entities\User;
+
+ $instantiator = new Instantiator();
+
+ $user = $instantiator->instantiate(User::class);
+
+Contributing
+============
+
+- Follow the `Doctrine Coding Standard`_
+- The project will follow strict `object calisthenics`_
+- Any contribution must provide tests for additional introduced
+ conditions
+- Any un-confirmed issue needs a failing test case before being
+ accepted
+- Pull requests must be sent from a new hotfix/feature branch, not from
+ ``master``.
+
+Testing
+=======
+
+The PHPUnit version to be used is the one installed as a dev- dependency
+via composer:
+
+.. code-block:: console
+
+ $ ./vendor/bin/phpunit
+
+Accepted coverage for new contributions is 80%. Any contribution not
+satisfying this requirement won’t be merged.
+
+Credits
+=======
+
+This library was migrated from `ocramius/instantiator`_, which has been
+donated to the doctrine organization, and which is now deprecated in
+favour of this package.
+
+.. _composer: https://getcomposer.org/
+.. _CONTRIBUTING.md: CONTRIBUTING.md
+.. _ocramius/instantiator: https://github.com/Ocramius/Instantiator
+.. _Doctrine Coding Standard: https://github.com/doctrine/coding-standard
+.. _object calisthenics: http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php
diff --git a/vendor/doctrine/instantiator/docs/en/sidebar.rst b/vendor/doctrine/instantiator/docs/en/sidebar.rst
new file mode 100644
index 000000000..0c3647914
--- /dev/null
+++ b/vendor/doctrine/instantiator/docs/en/sidebar.rst
@@ -0,0 +1,4 @@
+.. toctree::
+ :depth: 3
+
+ index
diff --git a/vendor/doctrine/instantiator/psalm.xml b/vendor/doctrine/instantiator/psalm.xml
new file mode 100644
index 000000000..e6270c138
--- /dev/null
+++ b/vendor/doctrine/instantiator/psalm.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<psalm
+ errorLevel="7"
+ phpVersion="8.1"
+ resolveFromConfigFile="true"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+>
+ <projectFiles>
+ <directory name="src" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+</psalm>
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
new file mode 100644
index 000000000..e6a5195f2
--- /dev/null
+++ b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Doctrine\Instantiator\Exception;
+
+use Throwable;
+
+/**
+ * Base exception marker interface for the instantiator component
+ */
+interface ExceptionInterface extends Throwable
+{
+}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php
new file mode 100644
index 000000000..33de31c0b
--- /dev/null
+++ b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace Doctrine\Instantiator\Exception;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+use ReflectionClass;
+
+use function interface_exists;
+use function sprintf;
+use function trait_exists;
+
+/**
+ * Exception for invalid arguments provided to the instantiator
+ */
+class InvalidArgumentException extends BaseInvalidArgumentException implements ExceptionInterface
+{
+ public static function fromNonExistingClass(string $className): self
+ {
+ if (interface_exists($className)) {
+ return new self(sprintf('The provided type "%s" is an interface, and cannot be instantiated', $className));
+ }
+
+ if (trait_exists($className)) {
+ return new self(sprintf('The provided type "%s" is a trait, and cannot be instantiated', $className));
+ }
+
+ return new self(sprintf('The provided class "%s" does not exist', $className));
+ }
+
+ /**
+ * @phpstan-param ReflectionClass<T> $reflectionClass
+ *
+ * @template T of object
+ */
+ public static function fromAbstractClass(ReflectionClass $reflectionClass): self
+ {
+ return new self(sprintf(
+ 'The provided class "%s" is abstract, and cannot be instantiated',
+ $reflectionClass->getName()
+ ));
+ }
+
+ public static function fromEnum(string $className): self
+ {
+ return new self(sprintf(
+ 'The provided class "%s" is an enum, and cannot be instantiated',
+ $className
+ ));
+ }
+}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
new file mode 100644
index 000000000..4e55ac525
--- /dev/null
+++ b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace Doctrine\Instantiator\Exception;
+
+use Exception;
+use ReflectionClass;
+use UnexpectedValueException as BaseUnexpectedValueException;
+
+use function sprintf;
+
+/**
+ * Exception for given parameters causing invalid/unexpected state on instantiation
+ */
+class UnexpectedValueException extends BaseUnexpectedValueException implements ExceptionInterface
+{
+ /**
+ * @phpstan-param ReflectionClass<T> $reflectionClass
+ *
+ * @template T of object
+ */
+ public static function fromSerializationTriggeredException(
+ ReflectionClass $reflectionClass,
+ Exception $exception
+ ): self {
+ return new self(
+ sprintf(
+ 'An exception was raised while trying to instantiate an instance of "%s" via un-serialization',
+ $reflectionClass->getName()
+ ),
+ 0,
+ $exception
+ );
+ }
+
+ /**
+ * @phpstan-param ReflectionClass<T> $reflectionClass
+ *
+ * @template T of object
+ */
+ public static function fromUncleanUnSerialization(
+ ReflectionClass $reflectionClass,
+ string $errorString,
+ int $errorCode,
+ string $errorFile,
+ int $errorLine
+ ): self {
+ return new self(
+ sprintf(
+ 'Could not produce an instance of "%s" via un-serialization, since an error was triggered '
+ . 'in file "%s" at line "%d"',
+ $reflectionClass->getName(),
+ $errorFile,
+ $errorLine
+ ),
+ 0,
+ new Exception($errorString, $errorCode)
+ );
+ }
+}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
new file mode 100644
index 000000000..d616fa4db
--- /dev/null
+++ b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
@@ -0,0 +1,260 @@
+<?php
+
+namespace Doctrine\Instantiator;
+
+use ArrayIterator;
+use Doctrine\Instantiator\Exception\ExceptionInterface;
+use Doctrine\Instantiator\Exception\InvalidArgumentException;
+use Doctrine\Instantiator\Exception\UnexpectedValueException;
+use Exception;
+use ReflectionClass;
+use ReflectionException;
+use Serializable;
+
+use function class_exists;
+use function enum_exists;
+use function is_subclass_of;
+use function restore_error_handler;
+use function set_error_handler;
+use function sprintf;
+use function strlen;
+use function unserialize;
+
+use const PHP_VERSION_ID;
+
+final class Instantiator implements InstantiatorInterface
+{
+ /**
+ * Markers used internally by PHP to define whether {@see \unserialize} should invoke
+ * the method {@see \Serializable::unserialize()} when dealing with classes implementing
+ * the {@see \Serializable} interface.
+ */
+ public const SERIALIZATION_FORMAT_USE_UNSERIALIZER = 'C';
+ public const SERIALIZATION_FORMAT_AVOID_UNSERIALIZER = 'O';
+
+ /**
+ * Used to instantiate specific classes, indexed by class name.
+ *
+ * @var callable[]
+ */
+ private static $cachedInstantiators = [];
+
+ /**
+ * Array of objects that can directly be cloned, indexed by class name.
+ *
+ * @var object[]
+ */
+ private static $cachedCloneables = [];
+
+ /**
+ * @param string $className
+ * @phpstan-param class-string<T> $className
+ *
+ * @return object
+ * @phpstan-return T
+ *
+ * @throws ExceptionInterface
+ *
+ * @template T of object
+ */
+ public function instantiate($className)
+ {
+ if (isset(self::$cachedCloneables[$className])) {
+ /**
+ * @phpstan-var T
+ */
+ $cachedCloneable = self::$cachedCloneables[$className];
+
+ return clone $cachedCloneable;
+ }
+
+ if (isset(self::$cachedInstantiators[$className])) {
+ $factory = self::$cachedInstantiators[$className];
+
+ return $factory();
+ }
+
+ return $this->buildAndCacheFromFactory($className);
+ }
+
+ /**
+ * Builds the requested object and caches it in static properties for performance
+ *
+ * @phpstan-param class-string<T> $className
+ *
+ * @return object
+ * @phpstan-return T
+ *
+ * @template T of object
+ */
+ private function buildAndCacheFromFactory(string $className)
+ {
+ $factory = self::$cachedInstantiators[$className] = $this->buildFactory($className);
+ $instance = $factory();
+
+ if ($this->isSafeToClone(new ReflectionClass($instance))) {
+ self::$cachedCloneables[$className] = clone $instance;
+ }
+
+ return $instance;
+ }
+
+ /**
+ * Builds a callable capable of instantiating the given $className without
+ * invoking its constructor.
+ *
+ * @phpstan-param class-string<T> $className
+ *
+ * @phpstan-return callable(): T
+ *
+ * @throws InvalidArgumentException
+ * @throws UnexpectedValueException
+ * @throws ReflectionException
+ *
+ * @template T of object
+ */
+ private function buildFactory(string $className): callable
+ {
+ $reflectionClass = $this->getReflectionClass($className);
+
+ if ($this->isInstantiableViaReflection($reflectionClass)) {
+ return [$reflectionClass, 'newInstanceWithoutConstructor'];
+ }
+
+ $serializedString = sprintf(
+ '%s:%d:"%s":0:{}',
+ is_subclass_of($className, Serializable::class) ? self::SERIALIZATION_FORMAT_USE_UNSERIALIZER : self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER,
+ strlen($className),
+ $className
+ );
+
+ $this->checkIfUnSerializationIsSupported($reflectionClass, $serializedString);
+
+ return static function () use ($serializedString) {
+ return unserialize($serializedString);
+ };
+ }
+
+ /**
+ * @phpstan-param class-string<T> $className
+ *
+ * @phpstan-return ReflectionClass<T>
+ *
+ * @throws InvalidArgumentException
+ * @throws ReflectionException
+ *
+ * @template T of object
+ */
+ private function getReflectionClass(string $className): ReflectionClass
+ {
+ if (! class_exists($className)) {
+ throw InvalidArgumentException::fromNonExistingClass($className);
+ }
+
+ if (PHP_VERSION_ID >= 80100 && enum_exists($className, false)) {
+ throw InvalidArgumentException::fromEnum($className);
+ }
+
+ $reflection = new ReflectionClass($className);
+
+ if ($reflection->isAbstract()) {
+ throw InvalidArgumentException::fromAbstractClass($reflection);
+ }
+
+ return $reflection;
+ }
+
+ /**
+ * @phpstan-param ReflectionClass<T> $reflectionClass
+ *
+ * @throws UnexpectedValueException
+ *
+ * @template T of object
+ */
+ private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, string $serializedString): void
+ {
+ set_error_handler(static function (int $code, string $message, string $file, int $line) use ($reflectionClass, &$error): bool {
+ $error = UnexpectedValueException::fromUncleanUnSerialization(
+ $reflectionClass,
+ $message,
+ $code,
+ $file,
+ $line
+ );
+
+ return true;
+ });
+
+ try {
+ $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString);
+ } finally {
+ restore_error_handler();
+ }
+
+ if ($error) {
+ throw $error;
+ }
+ }
+
+ /**
+ * @phpstan-param ReflectionClass<T> $reflectionClass
+ *
+ * @throws UnexpectedValueException
+ *
+ * @template T of object
+ */
+ private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, string $serializedString): void
+ {
+ try {
+ unserialize($serializedString);
+ } catch (Exception $exception) {
+ throw UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $exception);
+ }
+ }
+
+ /**
+ * @phpstan-param ReflectionClass<T> $reflectionClass
+ *
+ * @template T of object
+ */
+ private function isInstantiableViaReflection(ReflectionClass $reflectionClass): bool
+ {
+ return ! ($this->hasInternalAncestors($reflectionClass) && $reflectionClass->isFinal());
+ }
+
+ /**
+ * Verifies whether the given class is to be considered internal
+ *
+ * @phpstan-param ReflectionClass<T> $reflectionClass
+ *
+ * @template T of object
+ */
+ private function hasInternalAncestors(ReflectionClass $reflectionClass): bool
+ {
+ do {
+ if ($reflectionClass->isInternal()) {
+ return true;
+ }
+
+ $reflectionClass = $reflectionClass->getParentClass();
+ } while ($reflectionClass);
+
+ return false;
+ }
+
+ /**
+ * Checks if a class is cloneable
+ *
+ * Classes implementing `__clone` cannot be safely cloned, as that may cause side-effects.
+ *
+ * @phpstan-param ReflectionClass<T> $reflectionClass
+ *
+ * @template T of object
+ */
+ private function isSafeToClone(ReflectionClass $reflectionClass): bool
+ {
+ return $reflectionClass->isCloneable()
+ && ! $reflectionClass->hasMethod('__clone')
+ && ! $reflectionClass->isSubclassOf(ArrayIterator::class);
+ }
+}
diff --git a/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
new file mode 100644
index 000000000..10508b562
--- /dev/null
+++ b/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Doctrine\Instantiator;
+
+use Doctrine\Instantiator\Exception\ExceptionInterface;
+
+/**
+ * Instantiator provides utility methods to build objects without invoking their constructors
+ */
+interface InstantiatorInterface
+{
+ /**
+ * @param string $className
+ * @phpstan-param class-string<T> $className
+ *
+ * @return object
+ * @phpstan-return T
+ *
+ * @throws ExceptionInterface
+ *
+ * @template T of object
+ */
+ public function instantiate($className);
+}
diff --git a/vendor/myclabs/deep-copy/.github/FUNDING.yml b/vendor/myclabs/deep-copy/.github/FUNDING.yml
new file mode 100644
index 000000000..b8da664dd
--- /dev/null
+++ b/vendor/myclabs/deep-copy/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: "packagist/myclabs/deep-copy"
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/vendor/myclabs/deep-copy/.github/workflows/ci.yaml b/vendor/myclabs/deep-copy/.github/workflows/ci.yaml
new file mode 100644
index 000000000..eac2812e3
--- /dev/null
+++ b/vendor/myclabs/deep-copy/.github/workflows/ci.yaml
@@ -0,0 +1,101 @@
+name: "Continuous Integration"
+
+on:
+ - pull_request
+ - push
+
+env:
+ COMPOSER_ROOT_VERSION: 1.99
+
+jobs:
+ composer-json-lint:
+ name: "Lint composer.json"
+
+ runs-on: "ubuntu-latest"
+
+ strategy:
+ matrix:
+ php-version:
+ - "8.1"
+
+ steps:
+ - name: "Checkout"
+ uses: "actions/checkout@v2"
+
+ - name: "Install PHP"
+ uses: "shivammathur/setup-php@v2"
+ with:
+ coverage: "none"
+ php-version: "${{ matrix.php-version }}"
+ tools: composer-normalize
+
+ - name: "Get composer cache directory"
+ id: composercache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: "Cache dependencies"
+ uses: actions/cache@v2
+ with:
+ path: ${{ steps.composercache.outputs.dir }}
+ key: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-${{ hashFiles('**/composer.json') }}
+ restore-keys: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-
+
+ - name: "Install dependencies"
+ run: "composer update --no-interaction --no-progress"
+
+ - name: "Validate composer.json"
+ run: "composer validate --strict"
+
+ - name: "Normalize composer.json"
+ run: "composer-normalize --dry-run"
+
+ tests:
+ name: "Tests"
+
+ runs-on: "ubuntu-latest"
+
+ strategy:
+ matrix:
+ php-version:
+ - "7.1"
+ - "7.2"
+ - "7.3"
+ - "7.4"
+ - "8.0"
+ - "8.1"
+ dependencies:
+ - "lowest"
+ - "highest"
+
+ steps:
+ - name: "Checkout"
+ uses: "actions/checkout@v2"
+
+ - name: "Install PHP"
+ uses: "shivammathur/setup-php@v2"
+ with:
+ php-version: "${{ matrix.php-version }}"
+ ini-values: zend.assertions=1
+
+ - name: "Get composer cache directory"
+ id: composercache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: "Cache dependencies"
+ uses: actions/cache@v2
+ with:
+ path: ${{ steps.composercache.outputs.dir }}
+ key: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-${{ hashFiles('**/composer.json') }}
+ restore-keys: ${{ runner.os }}-php-${{ matrix.php-version }}-${{ matrix.dependencies }}-composer-
+
+ - name: "Install lowest dependencies"
+ if: ${{ matrix.dependencies == 'lowest' }}
+ run: "composer update --no-interaction --no-progress --prefer-lowest"
+
+ - name: "Install highest dependencies"
+ if: ${{ matrix.dependencies == 'highest' }}
+ run: "composer update --no-interaction --no-progress"
+
+ - name: "Run tests"
+ timeout-minutes: 3
+ run: "vendor/bin/phpunit"
diff --git a/vendor/myclabs/deep-copy/LICENSE b/vendor/myclabs/deep-copy/LICENSE
new file mode 100644
index 000000000..c3e835001
--- /dev/null
+++ b/vendor/myclabs/deep-copy/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 My C-Sense
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/myclabs/deep-copy/README.md b/vendor/myclabs/deep-copy/README.md
new file mode 100644
index 000000000..503e93dff
--- /dev/null
+++ b/vendor/myclabs/deep-copy/README.md
@@ -0,0 +1,373 @@
+# DeepCopy
+
+DeepCopy helps you create deep copies (clones) of your objects. It is designed to handle cycles in the association graph.
+
+[![Total Downloads](https://poser.pugx.org/myclabs/deep-copy/downloads.svg)](https://packagist.org/packages/myclabs/deep-copy)
+[![Integrate](https://github.com/myclabs/DeepCopy/workflows/ci/badge.svg?branch=1.x)](https://github.com/myclabs/DeepCopy/actions)
+
+## Table of Contents
+
+1. [How](#how)
+1. [Why](#why)
+ 1. [Using simply `clone`](#using-simply-clone)
+ 1. [Overriding `__clone()`](#overriding-__clone)
+ 1. [With `DeepCopy`](#with-deepcopy)
+1. [How it works](#how-it-works)
+1. [Going further](#going-further)
+ 1. [Matchers](#matchers)
+ 1. [Property name](#property-name)
+ 1. [Specific property](#specific-property)
+ 1. [Type](#type)
+ 1. [Filters](#filters)
+ 1. [`SetNullFilter`](#setnullfilter-filter)
+ 1. [`KeepFilter`](#keepfilter-filter)
+ 1. [`DoctrineCollectionFilter`](#doctrinecollectionfilter-filter)
+ 1. [`DoctrineEmptyCollectionFilter`](#doctrineemptycollectionfilter-filter)
+ 1. [`DoctrineProxyFilter`](#doctrineproxyfilter-filter)
+ 1. [`ReplaceFilter`](#replacefilter-type-filter)
+ 1. [`ShallowCopyFilter`](#shallowcopyfilter-type-filter)
+1. [Edge cases](#edge-cases)
+1. [Contributing](#contributing)
+ 1. [Tests](#tests)
+
+
+## How?
+
+Install with Composer:
+
+```
+composer require myclabs/deep-copy
+```
+
+Use it:
+
+```php
+use DeepCopy\DeepCopy;
+
+$copier = new DeepCopy();
+$myCopy = $copier->copy($myObject);
+```
+
+
+## Why?
+
+- How do you create copies of your objects?
+
+```php
+$myCopy = clone $myObject;
+```
+
+- How do you create **deep** copies of your objects (i.e. copying also all the objects referenced in the properties)?
+
+You use [`__clone()`](http://www.php.net/manual/en/language.oop5.cloning.php#object.clone) and implement the behavior
+yourself.
+
+- But how do you handle **cycles** in the association graph?
+
+Now you're in for a big mess :(
+
+![association graph](doc/graph.png)
+
+
+### Using simply `clone`
+
+![Using clone](doc/clone.png)
+
+
+### Overriding `__clone()`
+
+![Overriding __clone](doc/deep-clone.png)
+
+
+### With `DeepCopy`
+
+![With DeepCopy](doc/deep-copy.png)
+
+
+## How it works
+
+DeepCopy recursively traverses all the object's properties and clones them. To avoid cloning the same object twice it
+keeps a hash map of all instances and thus preserves the object graph.
+
+To use it:
+
+```php
+use function DeepCopy\deep_copy;
+
+$copy = deep_copy($var);
+```
+
+Alternatively, you can create your own `DeepCopy` instance to configure it differently for example:
+
+```php
+use DeepCopy\DeepCopy;
+
+$copier = new DeepCopy(true);
+
+$copy = $copier->copy($var);
+```
+
+You may want to roll your own deep copy function:
+
+```php
+namespace Acme;
+
+use DeepCopy\DeepCopy;
+
+function deep_copy($var)
+{
+ static $copier = null;
+
+ if (null === $copier) {
+ $copier = new DeepCopy(true);
+ }
+
+ return $copier->copy($var);
+}
+```
+
+
+## Going further
+
+You can add filters to customize the copy process.
+
+The method to add a filter is `DeepCopy\DeepCopy::addFilter($filter, $matcher)`,
+with `$filter` implementing `DeepCopy\Filter\Filter`
+and `$matcher` implementing `DeepCopy\Matcher\Matcher`.
+
+We provide some generic filters and matchers.
+
+
+### Matchers
+
+ - `DeepCopy\Matcher` applies on a object attribute.
+ - `DeepCopy\TypeMatcher` applies on any element found in graph, including array elements.
+
+
+#### Property name
+
+The `PropertyNameMatcher` will match a property by its name:
+
+```php
+use DeepCopy\Matcher\PropertyNameMatcher;
+
+// Will apply a filter to any property of any objects named "id"
+$matcher = new PropertyNameMatcher('id');
+```
+
+
+#### Specific property
+
+The `PropertyMatcher` will match a specific property of a specific class:
+
+```php
+use DeepCopy\Matcher\PropertyMatcher;
+
+// Will apply a filter to the property "id" of any objects of the class "MyClass"
+$matcher = new PropertyMatcher('MyClass', 'id');
+```
+
+
+#### Type
+
+The `TypeMatcher` will match any element by its type (instance of a class or any value that could be parameter of
+[gettype()](http://php.net/manual/en/function.gettype.php) function):
+
+```php
+use DeepCopy\TypeMatcher\TypeMatcher;
+
+// Will apply a filter to any object that is an instance of Doctrine\Common\Collections\Collection
+$matcher = new TypeMatcher('Doctrine\Common\Collections\Collection');
+```
+
+
+### Filters
+
+- `DeepCopy\Filter` applies a transformation to the object attribute matched by `DeepCopy\Matcher`
+- `DeepCopy\TypeFilter` applies a transformation to any element matched by `DeepCopy\TypeMatcher`
+
+
+#### `SetNullFilter` (filter)
+
+Let's say for example that you are copying a database record (or a Doctrine entity), so you want the copy not to have
+any ID:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\SetNullFilter;
+use DeepCopy\Matcher\PropertyNameMatcher;
+
+$object = MyClass::load(123);
+echo $object->id; // 123
+
+$copier = new DeepCopy();
+$copier->addFilter(new SetNullFilter(), new PropertyNameMatcher('id'));
+
+$copy = $copier->copy($object);
+
+echo $copy->id; // null
+```
+
+
+#### `KeepFilter` (filter)
+
+If you want a property to remain untouched (for example, an association to an object):
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\KeepFilter;
+use DeepCopy\Matcher\PropertyMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new KeepFilter(), new PropertyMatcher('MyClass', 'category'));
+
+$copy = $copier->copy($object);
+// $copy->category has not been touched
+```
+
+
+#### `DoctrineCollectionFilter` (filter)
+
+If you use Doctrine and want to copy an entity, you will need to use the `DoctrineCollectionFilter`:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\Doctrine\DoctrineCollectionFilter;
+use DeepCopy\Matcher\PropertyTypeMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new DoctrineCollectionFilter(), new PropertyTypeMatcher('Doctrine\Common\Collections\Collection'));
+
+$copy = $copier->copy($object);
+```
+
+
+#### `DoctrineEmptyCollectionFilter` (filter)
+
+If you use Doctrine and want to copy an entity who contains a `Collection` that you want to be reset, you can use the
+`DoctrineEmptyCollectionFilter`
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\Doctrine\DoctrineEmptyCollectionFilter;
+use DeepCopy\Matcher\PropertyMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new DoctrineEmptyCollectionFilter(), new PropertyMatcher('MyClass', 'myProperty'));
+
+$copy = $copier->copy($object);
+
+// $copy->myProperty will return an empty collection
+```
+
+
+#### `DoctrineProxyFilter` (filter)
+
+If you use Doctrine and use cloning on lazy loaded entities, you might encounter errors mentioning missing fields on a
+Doctrine proxy class (...\\\_\_CG\_\_\Proxy).
+You can use the `DoctrineProxyFilter` to load the actual entity behind the Doctrine proxy class.
+**Make sure, though, to put this as one of your very first filters in the filter chain so that the entity is loaded
+before other filters are applied!**
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\Doctrine\DoctrineProxyFilter;
+use DeepCopy\Matcher\Doctrine\DoctrineProxyMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new DoctrineProxyFilter(), new DoctrineProxyMatcher());
+
+$copy = $copier->copy($object);
+
+// $copy should now contain a clone of all entities, including those that were not yet fully loaded.
+```
+
+
+#### `ReplaceFilter` (type filter)
+
+1. If you want to replace the value of a property:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\ReplaceFilter;
+use DeepCopy\Matcher\PropertyMatcher;
+
+$copier = new DeepCopy();
+$callback = function ($currentValue) {
+ return $currentValue . ' (copy)'
+};
+$copier->addFilter(new ReplaceFilter($callback), new PropertyMatcher('MyClass', 'title'));
+
+$copy = $copier->copy($object);
+
+// $copy->title will contain the data returned by the callback, e.g. 'The title (copy)'
+```
+
+2. If you want to replace whole element:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\TypeFilter\ReplaceFilter;
+use DeepCopy\TypeMatcher\TypeMatcher;
+
+$copier = new DeepCopy();
+$callback = function (MyClass $myClass) {
+ return get_class($myClass);
+};
+$copier->addTypeFilter(new ReplaceFilter($callback), new TypeMatcher('MyClass'));
+
+$copy = $copier->copy([new MyClass, 'some string', new MyClass]);
+
+// $copy will contain ['MyClass', 'some string', 'MyClass']
+```
+
+
+The `$callback` parameter of the `ReplaceFilter` constructor accepts any PHP callable.
+
+
+#### `ShallowCopyFilter` (type filter)
+
+Stop *DeepCopy* from recursively copying element, using standard `clone` instead:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\TypeFilter\ShallowCopyFilter;
+use DeepCopy\TypeMatcher\TypeMatcher;
+use Mockery as m;
+
+$this->deepCopy = new DeepCopy();
+$this->deepCopy->addTypeFilter(
+ new ShallowCopyFilter,
+ new TypeMatcher(m\MockInterface::class)
+);
+
+$myServiceWithMocks = new MyService(m::mock(MyDependency1::class), m::mock(MyDependency2::class));
+// All mocks will be just cloned, not deep copied
+```
+
+
+## Edge cases
+
+The following structures cannot be deep-copied with PHP Reflection. As a result they are shallow cloned and filters are
+not applied. There is two ways for you to handle them:
+
+- Implement your own `__clone()` method
+- Use a filter with a type matcher
+
+
+## Contributing
+
+DeepCopy is distributed under the MIT license.
+
+
+### Tests
+
+Running the tests is simple:
+
+```php
+vendor/bin/phpunit
+```
+
+### Support
+
+Get professional support via [the Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-myclabs-deep-copy?utm_source=packagist-myclabs-deep-copy&utm_medium=referral&utm_campaign=readme).
diff --git a/vendor/myclabs/deep-copy/composer.json b/vendor/myclabs/deep-copy/composer.json
new file mode 100644
index 000000000..66fb34a58
--- /dev/null
+++ b/vendor/myclabs/deep-copy/composer.json
@@ -0,0 +1,42 @@
+{
+ "name": "myclabs/deep-copy",
+ "description": "Create deep copies (clones) of your objects",
+ "license": "MIT",
+ "type": "library",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+ },
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ },
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "DeepCopy\\": "fixtures/",
+ "DeepCopyTest\\": "tests/DeepCopyTest/"
+ }
+ },
+ "config": {
+ "sort-packages": true
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php b/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php
new file mode 100644
index 000000000..5e68c64e4
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/DeepCopy.php
@@ -0,0 +1,303 @@
+<?php
+
+namespace DeepCopy;
+
+use ArrayObject;
+use DateInterval;
+use DateTimeInterface;
+use DateTimeZone;
+use DeepCopy\Exception\CloneException;
+use DeepCopy\Filter\Filter;
+use DeepCopy\Matcher\Matcher;
+use DeepCopy\Reflection\ReflectionHelper;
+use DeepCopy\TypeFilter\Date\DateIntervalFilter;
+use DeepCopy\TypeFilter\Spl\ArrayObjectFilter;
+use DeepCopy\TypeFilter\Spl\SplDoublyLinkedListFilter;
+use DeepCopy\TypeFilter\TypeFilter;
+use DeepCopy\TypeMatcher\TypeMatcher;
+use ReflectionObject;
+use ReflectionProperty;
+use SplDoublyLinkedList;
+
+/**
+ * @final
+ */
+class DeepCopy
+{
+ /**
+ * @var object[] List of objects copied.
+ */
+ private $hashMap = [];
+
+ /**
+ * Filters to apply.
+ *
+ * @var array Array of ['filter' => Filter, 'matcher' => Matcher] pairs.
+ */
+ private $filters = [];
+
+ /**
+ * Type Filters to apply.
+ *
+ * @var array Array of ['filter' => Filter, 'matcher' => Matcher] pairs.
+ */
+ private $typeFilters = [];
+
+ /**
+ * @var bool
+ */
+ private $skipUncloneable = false;
+
+ /**
+ * @var bool
+ */
+ private $useCloneMethod;
+
+ /**
+ * @param bool $useCloneMethod If set to true, when an object implements the __clone() function, it will be used
+ * instead of the regular deep cloning.
+ */
+ public function __construct($useCloneMethod = false)
+ {
+ $this->useCloneMethod = $useCloneMethod;
+
+ $this->addTypeFilter(new ArrayObjectFilter($this), new TypeMatcher(ArrayObject::class));
+ $this->addTypeFilter(new DateIntervalFilter(), new TypeMatcher(DateInterval::class));
+ $this->addTypeFilter(new SplDoublyLinkedListFilter($this), new TypeMatcher(SplDoublyLinkedList::class));
+ }
+
+ /**
+ * If enabled, will not throw an exception when coming across an uncloneable property.
+ *
+ * @param $skipUncloneable
+ *
+ * @return $this
+ */
+ public function skipUncloneable($skipUncloneable = true)
+ {
+ $this->skipUncloneable = $skipUncloneable;
+
+ return $this;
+ }
+
+ /**
+ * Deep copies the given object.
+ *
+ * @param mixed $object
+ *
+ * @return mixed
+ */
+ public function copy($object)
+ {
+ $this->hashMap = [];
+
+ return $this->recursiveCopy($object);
+ }
+
+ public function addFilter(Filter $filter, Matcher $matcher)
+ {
+ $this->filters[] = [
+ 'matcher' => $matcher,
+ 'filter' => $filter,
+ ];
+ }
+
+ public function prependFilter(Filter $filter, Matcher $matcher)
+ {
+ array_unshift($this->filters, [
+ 'matcher' => $matcher,
+ 'filter' => $filter,
+ ]);
+ }
+
+ public function addTypeFilter(TypeFilter $filter, TypeMatcher $matcher)
+ {
+ $this->typeFilters[] = [
+ 'matcher' => $matcher,
+ 'filter' => $filter,
+ ];
+ }
+
+ private function recursiveCopy($var)
+ {
+ // Matches Type Filter
+ if ($filter = $this->getFirstMatchedTypeFilter($this->typeFilters, $var)) {
+ return $filter->apply($var);
+ }
+
+ // Resource
+ if (is_resource($var)) {
+ return $var;
+ }
+
+ // Array
+ if (is_array($var)) {
+ return $this->copyArray($var);
+ }
+
+ // Scalar
+ if (! is_object($var)) {
+ return $var;
+ }
+
+ // Enum
+ if (PHP_VERSION_ID >= 80100 && enum_exists(get_class($var))) {
+ return $var;
+ }
+
+ // Object
+ return $this->copyObject($var);
+ }
+
+ /**
+ * Copy an array
+ * @param array $array
+ * @return array
+ */
+ private function copyArray(array $array)
+ {
+ foreach ($array as $key => $value) {
+ $array[$key] = $this->recursiveCopy($value);
+ }
+
+ return $array;
+ }
+
+ /**
+ * Copies an object.
+ *
+ * @param object $object
+ *
+ * @throws CloneException
+ *
+ * @return object
+ */
+ private function copyObject($object)
+ {
+ $objectHash = spl_object_hash($object);
+
+ if (isset($this->hashMap[$objectHash])) {
+ return $this->hashMap[$objectHash];
+ }
+
+ $reflectedObject = new ReflectionObject($object);
+ $isCloneable = $reflectedObject->isCloneable();
+
+ if (false === $isCloneable) {
+ if ($this->skipUncloneable) {
+ $this->hashMap[$objectHash] = $object;
+
+ return $object;
+ }
+
+ throw new CloneException(
+ sprintf(
+ 'The class "%s" is not cloneable.',
+ $reflectedObject->getName()
+ )
+ );
+ }
+
+ $newObject = clone $object;
+ $this->hashMap[$objectHash] = $newObject;
+
+ if ($this->useCloneMethod && $reflectedObject->hasMethod('__clone')) {
+ return $newObject;
+ }
+
+ if ($newObject instanceof DateTimeInterface || $newObject instanceof DateTimeZone) {
+ return $newObject;
+ }
+
+ foreach (ReflectionHelper::getProperties($reflectedObject) as $property) {
+ $this->copyObjectProperty($newObject, $property);
+ }
+
+ return $newObject;
+ }
+
+ private function copyObjectProperty($object, ReflectionProperty $property)
+ {
+ // Ignore static properties
+ if ($property->isStatic()) {
+ return;
+ }
+
+ // Apply the filters
+ foreach ($this->filters as $item) {
+ /** @var Matcher $matcher */
+ $matcher = $item['matcher'];
+ /** @var Filter $filter */
+ $filter = $item['filter'];
+
+ if ($matcher->matches($object, $property->getName())) {
+ $filter->apply(
+ $object,
+ $property->getName(),
+ function ($object) {
+ return $this->recursiveCopy($object);
+ }
+ );
+
+ // If a filter matches, we stop processing this property
+ return;
+ }
+ }
+
+ $property->setAccessible(true);
+
+ // Ignore uninitialized properties (for PHP >7.4)
+ if (method_exists($property, 'isInitialized') && !$property->isInitialized($object)) {
+ return;
+ }
+
+ $propertyValue = $property->getValue($object);
+
+ // Copy the property
+ $property->setValue($object, $this->recursiveCopy($propertyValue));
+ }
+
+ /**
+ * Returns first filter that matches variable, `null` if no such filter found.
+ *
+ * @param array $filterRecords Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and
+ * 'matcher' with value of type {@see TypeMatcher}
+ * @param mixed $var
+ *
+ * @return TypeFilter|null
+ */
+ private function getFirstMatchedTypeFilter(array $filterRecords, $var)
+ {
+ $matched = $this->first(
+ $filterRecords,
+ function (array $record) use ($var) {
+ /* @var TypeMatcher $matcher */
+ $matcher = $record['matcher'];
+
+ return $matcher->matches($var);
+ }
+ );
+
+ return isset($matched) ? $matched['filter'] : null;
+ }
+
+ /**
+ * Returns first element that matches predicate, `null` if no such element found.
+ *
+ * @param array $elements Array of ['filter' => Filter, 'matcher' => Matcher] pairs.
+ * @param callable $predicate Predicate arguments are: element.
+ *
+ * @return array|null Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and 'matcher'
+ * with value of type {@see TypeMatcher} or `null`.
+ */
+ private function first(array $elements, callable $predicate)
+ {
+ foreach ($elements as $element) {
+ if (call_user_func($predicate, $element)) {
+ return $element;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php b/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php
new file mode 100644
index 000000000..c046706a2
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php
@@ -0,0 +1,9 @@
+<?php
+
+namespace DeepCopy\Exception;
+
+use UnexpectedValueException;
+
+class CloneException extends UnexpectedValueException
+{
+} \ No newline at end of file
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php b/vendor/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php
new file mode 100644
index 000000000..9702101a9
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php
@@ -0,0 +1,9 @@
+<?php
+
+namespace DeepCopy\Exception;
+
+use ReflectionException;
+
+class PropertyException extends ReflectionException
+{
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php
new file mode 100644
index 000000000..e6d937710
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineCollectionFilter.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace DeepCopy\Filter\Doctrine;
+
+use DeepCopy\Filter\Filter;
+use DeepCopy\Reflection\ReflectionHelper;
+
+/**
+ * @final
+ */
+class DoctrineCollectionFilter implements Filter
+{
+ /**
+ * Copies the object property doctrine collection.
+ *
+ * {@inheritdoc}
+ */
+ public function apply($object, $property, $objectCopier)
+ {
+ $reflectionProperty = ReflectionHelper::getProperty($object, $property);
+
+ $reflectionProperty->setAccessible(true);
+ $oldCollection = $reflectionProperty->getValue($object);
+
+ $newCollection = $oldCollection->map(
+ function ($item) use ($objectCopier) {
+ return $objectCopier($item);
+ }
+ );
+
+ $reflectionProperty->setValue($object, $newCollection);
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php
new file mode 100644
index 000000000..7b33fd547
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace DeepCopy\Filter\Doctrine;
+
+use DeepCopy\Filter\Filter;
+use DeepCopy\Reflection\ReflectionHelper;
+use Doctrine\Common\Collections\ArrayCollection;
+
+/**
+ * @final
+ */
+class DoctrineEmptyCollectionFilter implements Filter
+{
+ /**
+ * Sets the object property to an empty doctrine collection.
+ *
+ * @param object $object
+ * @param string $property
+ * @param callable $objectCopier
+ */
+ public function apply($object, $property, $objectCopier)
+ {
+ $reflectionProperty = ReflectionHelper::getProperty($object, $property);
+ $reflectionProperty->setAccessible(true);
+
+ $reflectionProperty->setValue($object, new ArrayCollection());
+ }
+} \ No newline at end of file
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php
new file mode 100644
index 000000000..8bee8f769
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace DeepCopy\Filter\Doctrine;
+
+use DeepCopy\Filter\Filter;
+
+/**
+ * @final
+ */
+class DoctrineProxyFilter implements Filter
+{
+ /**
+ * Triggers the magic method __load() on a Doctrine Proxy class to load the
+ * actual entity from the database.
+ *
+ * {@inheritdoc}
+ */
+ public function apply($object, $property, $objectCopier)
+ {
+ $object->__load();
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php
new file mode 100644
index 000000000..85ba18ce1
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace DeepCopy\Filter;
+
+/**
+ * Filter to apply to a property while copying an object
+ */
+interface Filter
+{
+ /**
+ * Applies the filter to the object.
+ *
+ * @param object $object
+ * @param string $property
+ * @param callable $objectCopier
+ */
+ public function apply($object, $property, $objectCopier);
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php
new file mode 100644
index 000000000..4b11a081b
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/KeepFilter.php
@@ -0,0 +1,16 @@
+<?php
+
+namespace DeepCopy\Filter;
+
+class KeepFilter implements Filter
+{
+ /**
+ * Keeps the value of the object property.
+ *
+ * {@inheritdoc}
+ */
+ public function apply($object, $property, $objectCopier)
+ {
+ // Nothing to do
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php
new file mode 100644
index 000000000..7aca593bb
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/ReplaceFilter.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace DeepCopy\Filter;
+
+use DeepCopy\Reflection\ReflectionHelper;
+
+/**
+ * @final
+ */
+class ReplaceFilter implements Filter
+{
+ /**
+ * @var callable
+ */
+ protected $callback;
+
+ /**
+ * @param callable $callable Will be called to get the new value for each property to replace
+ */
+ public function __construct(callable $callable)
+ {
+ $this->callback = $callable;
+ }
+
+ /**
+ * Replaces the object property by the result of the callback called with the object property.
+ *
+ * {@inheritdoc}
+ */
+ public function apply($object, $property, $objectCopier)
+ {
+ $reflectionProperty = ReflectionHelper::getProperty($object, $property);
+ $reflectionProperty->setAccessible(true);
+
+ $value = call_user_func($this->callback, $reflectionProperty->getValue($object));
+
+ $reflectionProperty->setValue($object, $value);
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php
new file mode 100644
index 000000000..bea86b884
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace DeepCopy\Filter;
+
+use DeepCopy\Reflection\ReflectionHelper;
+
+/**
+ * @final
+ */
+class SetNullFilter implements Filter
+{
+ /**
+ * Sets the object property to null.
+ *
+ * {@inheritdoc}
+ */
+ public function apply($object, $property, $objectCopier)
+ {
+ $reflectionProperty = ReflectionHelper::getProperty($object, $property);
+
+ $reflectionProperty->setAccessible(true);
+ $reflectionProperty->setValue($object, null);
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php
new file mode 100644
index 000000000..c5887b19c
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace DeepCopy\Matcher\Doctrine;
+
+use DeepCopy\Matcher\Matcher;
+use Doctrine\Persistence\Proxy;
+
+/**
+ * @final
+ */
+class DoctrineProxyMatcher implements Matcher
+{
+ /**
+ * Matches a Doctrine Proxy class.
+ *
+ * {@inheritdoc}
+ */
+ public function matches($object, $property)
+ {
+ return $object instanceof Proxy;
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php
new file mode 100644
index 000000000..d67f3cac6
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Matcher.php
@@ -0,0 +1,14 @@
+<?php
+
+namespace DeepCopy\Matcher;
+
+interface Matcher
+{
+ /**
+ * @param object $object
+ * @param string $property
+ *
+ * @return boolean
+ */
+ public function matches($object, $property);
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php
new file mode 100644
index 000000000..073b20cb8
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyMatcher.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace DeepCopy\Matcher;
+
+/**
+ * @final
+ */
+class PropertyMatcher implements Matcher
+{
+ /**
+ * @var string
+ */
+ private $class;
+
+ /**
+ * @var string
+ */
+ private $property;
+
+ /**
+ * @param string $class Class name
+ * @param string $property Property name
+ */
+ public function __construct($class, $property)
+ {
+ $this->class = $class;
+ $this->property = $property;
+ }
+
+ /**
+ * Matches a specific property of a specific class.
+ *
+ * {@inheritdoc}
+ */
+ public function matches($object, $property)
+ {
+ return ($object instanceof $this->class) && $property == $this->property;
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php
new file mode 100644
index 000000000..c8ec0d2bc
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace DeepCopy\Matcher;
+
+/**
+ * @final
+ */
+class PropertyNameMatcher implements Matcher
+{
+ /**
+ * @var string
+ */
+ private $property;
+
+ /**
+ * @param string $property Property name
+ */
+ public function __construct($property)
+ {
+ $this->property = $property;
+ }
+
+ /**
+ * Matches a property by its name.
+ *
+ * {@inheritdoc}
+ */
+ public function matches($object, $property)
+ {
+ return $property == $this->property;
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php
new file mode 100644
index 000000000..c7f46908c
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php
@@ -0,0 +1,52 @@
+<?php
+
+namespace DeepCopy\Matcher;
+
+use DeepCopy\Reflection\ReflectionHelper;
+use ReflectionException;
+
+/**
+ * Matches a property by its type.
+ *
+ * It is recommended to use {@see DeepCopy\TypeFilter\TypeFilter} instead, as it applies on all occurrences
+ * of given type in copied context (eg. array elements), not just on object properties.
+ *
+ * @final
+ */
+class PropertyTypeMatcher implements Matcher
+{
+ /**
+ * @var string
+ */
+ private $propertyType;
+
+ /**
+ * @param string $propertyType Property type
+ */
+ public function __construct($propertyType)
+ {
+ $this->propertyType = $propertyType;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function matches($object, $property)
+ {
+ try {
+ $reflectionProperty = ReflectionHelper::getProperty($object, $property);
+ } catch (ReflectionException $exception) {
+ return false;
+ }
+
+ $reflectionProperty->setAccessible(true);
+
+ // Uninitialized properties (for PHP >7.4)
+ if (method_exists($reflectionProperty, 'isInitialized') && !$reflectionProperty->isInitialized($object)) {
+ // null instanceof $this->propertyType
+ return false;
+ }
+
+ return $reflectionProperty->getValue($object) instanceof $this->propertyType;
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php b/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php
new file mode 100644
index 000000000..742410cb2
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php
@@ -0,0 +1,78 @@
+<?php
+
+namespace DeepCopy\Reflection;
+
+use DeepCopy\Exception\PropertyException;
+use ReflectionClass;
+use ReflectionException;
+use ReflectionObject;
+use ReflectionProperty;
+
+class ReflectionHelper
+{
+ /**
+ * Retrieves all properties (including private ones), from object and all its ancestors.
+ *
+ * Standard \ReflectionClass->getProperties() does not return private properties from ancestor classes.
+ *
+ * @author [email protected]
+ * @see http://php.net/manual/en/reflectionclass.getproperties.php
+ *
+ * @param ReflectionClass $ref
+ *
+ * @return ReflectionProperty[]
+ */
+ public static function getProperties(ReflectionClass $ref)
+ {
+ $props = $ref->getProperties();
+ $propsArr = array();
+
+ foreach ($props as $prop) {
+ $propertyName = $prop->getName();
+ $propsArr[$propertyName] = $prop;
+ }
+
+ if ($parentClass = $ref->getParentClass()) {
+ $parentPropsArr = self::getProperties($parentClass);
+ foreach ($propsArr as $key => $property) {
+ $parentPropsArr[$key] = $property;
+ }
+
+ return $parentPropsArr;
+ }
+
+ return $propsArr;
+ }
+
+ /**
+ * Retrieves property by name from object and all its ancestors.
+ *
+ * @param object|string $object
+ * @param string $name
+ *
+ * @throws PropertyException
+ * @throws ReflectionException
+ *
+ * @return ReflectionProperty
+ */
+ public static function getProperty($object, $name)
+ {
+ $reflection = is_object($object) ? new ReflectionObject($object) : new ReflectionClass($object);
+
+ if ($reflection->hasProperty($name)) {
+ return $reflection->getProperty($name);
+ }
+
+ if ($parentClass = $reflection->getParentClass()) {
+ return self::getProperty($parentClass->getName(), $name);
+ }
+
+ throw new PropertyException(
+ sprintf(
+ 'The class "%s" doesn\'t have a property with the given name: "%s".',
+ is_object($object) ? get_class($object) : $object,
+ $name
+ )
+ );
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php
new file mode 100644
index 000000000..becd1cfff
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php
@@ -0,0 +1,33 @@
+<?php
+
+namespace DeepCopy\TypeFilter\Date;
+
+use DateInterval;
+use DeepCopy\TypeFilter\TypeFilter;
+
+/**
+ * @final
+ *
+ * @deprecated Will be removed in 2.0. This filter will no longer be necessary in PHP 7.1+.
+ */
+class DateIntervalFilter implements TypeFilter
+{
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param DateInterval $element
+ *
+ * @see http://news.php.net/php.bugs/205076
+ */
+ public function apply($element)
+ {
+ $copy = new DateInterval('P0D');
+
+ foreach ($element as $propertyName => $propertyValue) {
+ $copy->{$propertyName} = $propertyValue;
+ }
+
+ return $copy;
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php
new file mode 100644
index 000000000..164f8b8e2
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace DeepCopy\TypeFilter;
+
+/**
+ * @final
+ */
+class ReplaceFilter implements TypeFilter
+{
+ /**
+ * @var callable
+ */
+ protected $callback;
+
+ /**
+ * @param callable $callable Will be called to get the new value for each element to replace
+ */
+ public function __construct(callable $callable)
+ {
+ $this->callback = $callable;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function apply($element)
+ {
+ return call_user_func($this->callback, $element);
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php
new file mode 100644
index 000000000..a5fbd7a2b
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace DeepCopy\TypeFilter;
+
+/**
+ * @final
+ */
+class ShallowCopyFilter implements TypeFilter
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function apply($element)
+ {
+ return clone $element;
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php
new file mode 100644
index 000000000..178460179
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/ArrayObjectFilter.php
@@ -0,0 +1,36 @@
+<?php
+namespace DeepCopy\TypeFilter\Spl;
+
+use DeepCopy\DeepCopy;
+use DeepCopy\TypeFilter\TypeFilter;
+
+/**
+ * In PHP 7.4 the storage of an ArrayObject isn't returned as
+ * ReflectionProperty. So we deep copy its array copy.
+ */
+final class ArrayObjectFilter implements TypeFilter
+{
+ /**
+ * @var DeepCopy
+ */
+ private $copier;
+
+ public function __construct(DeepCopy $copier)
+ {
+ $this->copier = $copier;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function apply($arrayObject)
+ {
+ $clone = clone $arrayObject;
+ foreach ($arrayObject->getArrayCopy() as $k => $v) {
+ $clone->offsetSet($k, $this->copier->copy($v));
+ }
+
+ return $clone;
+ }
+}
+
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php
new file mode 100644
index 000000000..c5644cff8
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedList.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace DeepCopy\TypeFilter\Spl;
+
+/**
+ * @deprecated Use {@see SplDoublyLinkedListFilter} instead.
+ */
+class SplDoublyLinkedList extends SplDoublyLinkedListFilter
+{
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php
new file mode 100644
index 000000000..c33be4580
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Spl/SplDoublyLinkedListFilter.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace DeepCopy\TypeFilter\Spl;
+
+use Closure;
+use DeepCopy\DeepCopy;
+use DeepCopy\TypeFilter\TypeFilter;
+use SplDoublyLinkedList;
+
+/**
+ * @final
+ */
+class SplDoublyLinkedListFilter implements TypeFilter
+{
+ private $copier;
+
+ public function __construct(DeepCopy $copier)
+ {
+ $this->copier = $copier;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function apply($element)
+ {
+ $newElement = clone $element;
+
+ $copy = $this->createCopyClosure();
+
+ return $copy($newElement);
+ }
+
+ private function createCopyClosure()
+ {
+ $copier = $this->copier;
+
+ $copy = function (SplDoublyLinkedList $list) use ($copier) {
+ // Replace each element in the list with a deep copy of itself
+ for ($i = 1; $i <= $list->count(); $i++) {
+ $copy = $copier->recursiveCopy($list->shift());
+
+ $list->push($copy);
+ }
+
+ return $list;
+ };
+
+ return Closure::bind($copy, null, DeepCopy::class);
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php
new file mode 100644
index 000000000..5785a7da9
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace DeepCopy\TypeFilter;
+
+interface TypeFilter
+{
+ /**
+ * Applies the filter to the object.
+ *
+ * @param mixed $element
+ */
+ public function apply($element);
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php b/vendor/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php
new file mode 100644
index 000000000..a563cb294
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/TypeMatcher/TypeMatcher.php
@@ -0,0 +1,29 @@
+<?php
+
+namespace DeepCopy\TypeMatcher;
+
+class TypeMatcher
+{
+ /**
+ * @var string
+ */
+ private $type;
+
+ /**
+ * @param string $type
+ */
+ public function __construct($type)
+ {
+ $this->type = $type;
+ }
+
+ /**
+ * @param mixed $element
+ *
+ * @return boolean
+ */
+ public function matches($element)
+ {
+ return is_object($element) ? is_a($element, $this->type) : gettype($element) === $this->type;
+ }
+}
diff --git a/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php b/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
new file mode 100644
index 000000000..55dcc9261
--- /dev/null
+++ b/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace DeepCopy;
+
+use function function_exists;
+
+if (false === function_exists('DeepCopy\deep_copy')) {
+ /**
+ * Deep copies the given value.
+ *
+ * @param mixed $value
+ * @param bool $useCloneMethod
+ *
+ * @return mixed
+ */
+ function deep_copy($value, $useCloneMethod = false)
+ {
+ return (new DeepCopy($useCloneMethod))->copy($value);
+ }
+}
diff --git a/vendor/nikic/php-parser/LICENSE b/vendor/nikic/php-parser/LICENSE
new file mode 100644
index 000000000..2e5671835
--- /dev/null
+++ b/vendor/nikic/php-parser/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2011, Nikita Popov
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/nikic/php-parser/README.md b/vendor/nikic/php-parser/README.md
new file mode 100644
index 000000000..e5b26bf5c
--- /dev/null
+++ b/vendor/nikic/php-parser/README.md
@@ -0,0 +1,225 @@
+PHP Parser
+==========
+
+[![Coverage Status](https://coveralls.io/repos/github/nikic/PHP-Parser/badge.svg?branch=master)](https://coveralls.io/github/nikic/PHP-Parser?branch=master)
+
+This is a PHP 5.2 to PHP 8.0 parser written in PHP. Its purpose is to simplify static code analysis and
+manipulation.
+
+[**Documentation for version 4.x**][doc_master] (stable; for running on PHP >= 7.0; for parsing PHP 5.2 to PHP 8.0).
+
+[Documentation for version 3.x][doc_3_x] (unsupported; for running on PHP >= 5.5; for parsing PHP 5.2 to PHP 7.2).
+
+Features
+--------
+
+The main features provided by this library are:
+
+ * Parsing PHP 5, PHP 7, and PHP 8 code into an abstract syntax tree (AST).
+ * Invalid code can be parsed into a partial AST.
+ * The AST contains accurate location information.
+ * Dumping the AST in human-readable form.
+ * Converting an AST back to PHP code.
+ * Experimental: Formatting can be preserved for partially changed ASTs.
+ * Infrastructure to traverse and modify ASTs.
+ * Resolution of namespaced names.
+ * Evaluation of constant expressions.
+ * Builders to simplify AST construction for code generation.
+ * Converting an AST into JSON and back.
+
+Quick Start
+-----------
+
+Install the library using [composer](https://getcomposer.org):
+
+ php composer.phar require nikic/php-parser
+
+Parse some PHP code into an AST and dump the result in human-readable form:
+
+```php
+<?php
+use PhpParser\Error;
+use PhpParser\NodeDumper;
+use PhpParser\ParserFactory;
+
+$code = <<<'CODE'
+<?php
+
+function test($foo)
+{
+ var_dump($foo);
+}
+CODE;
+
+$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
+try {
+ $ast = $parser->parse($code);
+} catch (Error $error) {
+ echo "Parse error: {$error->getMessage()}\n";
+ return;
+}
+
+$dumper = new NodeDumper;
+echo $dumper->dump($ast) . "\n";
+```
+
+This dumps an AST looking something like this:
+
+```
+array(
+ 0: Stmt_Function(
+ byRef: false
+ name: Identifier(
+ name: test
+ )
+ params: array(
+ 0: Param(
+ type: null
+ byRef: false
+ variadic: false
+ var: Expr_Variable(
+ name: foo
+ )
+ default: null
+ )
+ )
+ returnType: null
+ stmts: array(
+ 0: Stmt_Expression(
+ expr: Expr_FuncCall(
+ name: Name(
+ parts: array(
+ 0: var_dump
+ )
+ )
+ args: array(
+ 0: Arg(
+ value: Expr_Variable(
+ name: foo
+ )
+ byRef: false
+ unpack: false
+ )
+ )
+ )
+ )
+ )
+ )
+)
+```
+
+Let's traverse the AST and perform some kind of modification. For example, drop all function bodies:
+
+```php
+use PhpParser\Node;
+use PhpParser\Node\Stmt\Function_;
+use PhpParser\NodeTraverser;
+use PhpParser\NodeVisitorAbstract;
+
+$traverser = new NodeTraverser();
+$traverser->addVisitor(new class extends NodeVisitorAbstract {
+ public function enterNode(Node $node) {
+ if ($node instanceof Function_) {
+ // Clean out the function body
+ $node->stmts = [];
+ }
+ }
+});
+
+$ast = $traverser->traverse($ast);
+echo $dumper->dump($ast) . "\n";
+```
+
+This gives us an AST where the `Function_::$stmts` are empty:
+
+```
+array(
+ 0: Stmt_Function(
+ byRef: false
+ name: Identifier(
+ name: test
+ )
+ params: array(
+ 0: Param(
+ type: null
+ byRef: false
+ variadic: false
+ var: Expr_Variable(
+ name: foo
+ )
+ default: null
+ )
+ )
+ returnType: null
+ stmts: array(
+ )
+ )
+)
+```
+
+Finally, we can convert the new AST back to PHP code:
+
+```php
+use PhpParser\PrettyPrinter;
+
+$prettyPrinter = new PrettyPrinter\Standard;
+echo $prettyPrinter->prettyPrintFile($ast);
+```
+
+This gives us our original code, minus the `var_dump()` call inside the function:
+
+```php
+<?php
+
+function test($foo)
+{
+}
+```
+
+For a more comprehensive introduction, see the documentation.
+
+Documentation
+-------------
+
+ 1. [Introduction](doc/0_Introduction.markdown)
+ 2. [Usage of basic components](doc/2_Usage_of_basic_components.markdown)
+
+Component documentation:
+
+ * [Walking the AST](doc/component/Walking_the_AST.markdown)
+ * Node visitors
+ * Modifying the AST from a visitor
+ * Short-circuiting traversals
+ * Interleaved visitors
+ * Simple node finding API
+ * Parent and sibling references
+ * [Name resolution](doc/component/Name_resolution.markdown)
+ * Name resolver options
+ * Name resolution context
+ * [Pretty printing](doc/component/Pretty_printing.markdown)
+ * Converting AST back to PHP code
+ * Customizing formatting
+ * Formatting-preserving code transformations
+ * [AST builders](doc/component/AST_builders.markdown)
+ * Fluent builders for AST nodes
+ * [Lexer](doc/component/Lexer.markdown)
+ * Lexer options
+ * Token and file positions for nodes
+ * Custom attributes
+ * [Error handling](doc/component/Error_handling.markdown)
+ * Column information for errors
+ * Error recovery (parsing of syntactically incorrect code)
+ * [Constant expression evaluation](doc/component/Constant_expression_evaluation.markdown)
+ * Evaluating constant/property/etc initializers
+ * Handling errors and unsupported expressions
+ * [JSON representation](doc/component/JSON_representation.markdown)
+ * JSON encoding and decoding of ASTs
+ * [Performance](doc/component/Performance.markdown)
+ * Disabling Xdebug
+ * Reusing objects
+ * Garbage collection impact
+ * [Frequently asked questions](doc/component/FAQ.markdown)
+ * Parent and sibling references
+
+ [doc_3_x]: https://github.com/nikic/PHP-Parser/tree/3.x/doc
+ [doc_master]: https://github.com/nikic/PHP-Parser/tree/master/doc
diff --git a/vendor/nikic/php-parser/bin/php-parse b/vendor/nikic/php-parser/bin/php-parse
new file mode 100644
index 000000000..bb3e46df4
--- /dev/null
+++ b/vendor/nikic/php-parser/bin/php-parse
@@ -0,0 +1,205 @@
+#!/usr/bin/env php
+<?php
+
+foreach ([__DIR__ . '/../../../autoload.php', __DIR__ . '/../vendor/autoload.php'] as $file) {
+ if (file_exists($file)) {
+ require $file;
+ break;
+ }
+}
+
+ini_set('xdebug.max_nesting_level', 3000);
+
+// Disable Xdebug var_dump() output truncation
+ini_set('xdebug.var_display_max_children', -1);
+ini_set('xdebug.var_display_max_data', -1);
+ini_set('xdebug.var_display_max_depth', -1);
+
+list($operations, $files, $attributes) = parseArgs($argv);
+
+/* Dump nodes by default */
+if (empty($operations)) {
+ $operations[] = 'dump';
+}
+
+if (empty($files)) {
+ showHelp("Must specify at least one file.");
+}
+
+$lexer = new PhpParser\Lexer\Emulative(['usedAttributes' => [
+ 'startLine', 'endLine', 'startFilePos', 'endFilePos', 'comments'
+]]);
+$parser = (new PhpParser\ParserFactory)->create(
+ PhpParser\ParserFactory::PREFER_PHP7,
+ $lexer
+);
+$dumper = new PhpParser\NodeDumper([
+ 'dumpComments' => true,
+ 'dumpPositions' => $attributes['with-positions'],
+]);
+$prettyPrinter = new PhpParser\PrettyPrinter\Standard;
+
+$traverser = new PhpParser\NodeTraverser();
+$traverser->addVisitor(new PhpParser\NodeVisitor\NameResolver);
+
+foreach ($files as $file) {
+ if (strpos($file, '<?php') === 0) {
+ $code = $file;
+ fwrite(STDERR, "====> Code $code\n");
+ } else {
+ if (!file_exists($file)) {
+ fwrite(STDERR, "File $file does not exist.\n");
+ exit(1);
+ }
+
+ $code = file_get_contents($file);
+ fwrite(STDERR, "====> File $file:\n");
+ }
+
+ if ($attributes['with-recovery']) {
+ $errorHandler = new PhpParser\ErrorHandler\Collecting;
+ $stmts = $parser->parse($code, $errorHandler);
+ foreach ($errorHandler->getErrors() as $error) {
+ $message = formatErrorMessage($error, $code, $attributes['with-column-info']);
+ fwrite(STDERR, $message . "\n");
+ }
+ if (null === $stmts) {
+ continue;
+ }
+ } else {
+ try {
+ $stmts = $parser->parse($code);
+ } catch (PhpParser\Error $error) {
+ $message = formatErrorMessage($error, $code, $attributes['with-column-info']);
+ fwrite(STDERR, $message . "\n");
+ exit(1);
+ }
+ }
+
+ foreach ($operations as $operation) {
+ if ('dump' === $operation) {
+ fwrite(STDERR, "==> Node dump:\n");
+ echo $dumper->dump($stmts, $code), "\n";
+ } elseif ('pretty-print' === $operation) {
+ fwrite(STDERR, "==> Pretty print:\n");
+ echo $prettyPrinter->prettyPrintFile($stmts), "\n";
+ } elseif ('json-dump' === $operation) {
+ fwrite(STDERR, "==> JSON dump:\n");
+ echo json_encode($stmts, JSON_PRETTY_PRINT), "\n";
+ } elseif ('var-dump' === $operation) {
+ fwrite(STDERR, "==> var_dump():\n");
+ var_dump($stmts);
+ } elseif ('resolve-names' === $operation) {
+ fwrite(STDERR, "==> Resolved names.\n");
+ $stmts = $traverser->traverse($stmts);
+ }
+ }
+}
+
+function formatErrorMessage(PhpParser\Error $e, $code, $withColumnInfo) {
+ if ($withColumnInfo && $e->hasColumnInfo()) {
+ return $e->getMessageWithColumnInfo($code);
+ } else {
+ return $e->getMessage();
+ }
+}
+
+function showHelp($error = '') {
+ if ($error) {
+ fwrite(STDERR, $error . "\n\n");
+ }
+ fwrite($error ? STDERR : STDOUT, <<<OUTPUT
+Usage: php-parse [operations] file1.php [file2.php ...]
+ or: php-parse [operations] "<?php code"
+Turn PHP source code into an abstract syntax tree.
+
+Operations is a list of the following options (--dump by default):
+
+ -d, --dump Dump nodes using NodeDumper
+ -p, --pretty-print Pretty print file using PrettyPrinter\Standard
+ -j, --json-dump Print json_encode() result
+ --var-dump var_dump() nodes (for exact structure)
+ -N, --resolve-names Resolve names using NodeVisitor\NameResolver
+ -c, --with-column-info Show column-numbers for errors (if available)
+ -P, --with-positions Show positions in node dumps
+ -r, --with-recovery Use parsing with error recovery
+ -h, --help Display this page
+
+Example:
+ php-parse -d -p -N -d file.php
+
+ Dumps nodes, pretty prints them, then resolves names and dumps them again.
+
+
+OUTPUT
+ );
+ exit($error ? 1 : 0);
+}
+
+function parseArgs($args) {
+ $operations = [];
+ $files = [];
+ $attributes = [
+ 'with-column-info' => false,
+ 'with-positions' => false,
+ 'with-recovery' => false,
+ ];
+
+ array_shift($args);
+ $parseOptions = true;
+ foreach ($args as $arg) {
+ if (!$parseOptions) {
+ $files[] = $arg;
+ continue;
+ }
+
+ switch ($arg) {
+ case '--dump':
+ case '-d':
+ $operations[] = 'dump';
+ break;
+ case '--pretty-print':
+ case '-p':
+ $operations[] = 'pretty-print';
+ break;
+ case '--json-dump':
+ case '-j':
+ $operations[] = 'json-dump';
+ break;
+ case '--var-dump':
+ $operations[] = 'var-dump';
+ break;
+ case '--resolve-names':
+ case '-N';
+ $operations[] = 'resolve-names';
+ break;
+ case '--with-column-info':
+ case '-c';
+ $attributes['with-column-info'] = true;
+ break;
+ case '--with-positions':
+ case '-P':
+ $attributes['with-positions'] = true;
+ break;
+ case '--with-recovery':
+ case '-r':
+ $attributes['with-recovery'] = true;
+ break;
+ case '--help':
+ case '-h';
+ showHelp();
+ break;
+ case '--':
+ $parseOptions = false;
+ break;
+ default:
+ if ($arg[0] === '-') {
+ showHelp("Invalid operation $arg.");
+ } else {
+ $files[] = $arg;
+ }
+ }
+ }
+
+ return [$operations, $files, $attributes];
+}
diff --git a/vendor/nikic/php-parser/composer.json b/vendor/nikic/php-parser/composer.json
new file mode 100644
index 000000000..2fd064a21
--- /dev/null
+++ b/vendor/nikic/php-parser/composer.json
@@ -0,0 +1,41 @@
+{
+ "name": "nikic/php-parser",
+ "type": "library",
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "php",
+ "parser"
+ ],
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "require": {
+ "php": ">=7.0",
+ "ext-tokenizer": "*"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0",
+ "ircmaxell/php-yacc": "^0.0.7"
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "PhpParser\\": "test/PhpParser/"
+ }
+ },
+ "bin": [
+ "bin/php-parse"
+ ]
+}
diff --git a/vendor/nikic/php-parser/grammar/README.md b/vendor/nikic/php-parser/grammar/README.md
new file mode 100644
index 000000000..4bae11d82
--- /dev/null
+++ b/vendor/nikic/php-parser/grammar/README.md
@@ -0,0 +1,30 @@
+What do all those files mean?
+=============================
+
+ * `php5.y`: PHP 5 grammar written in a pseudo language
+ * `php7.y`: PHP 7 grammar written in a pseudo language
+ * `tokens.y`: Tokens definition shared between PHP 5 and PHP 7 grammars
+ * `parser.template`: A `kmyacc` parser prototype file for PHP
+ * `tokens.template`: A `kmyacc` prototype file for the `Tokens` class
+ * `rebuildParsers.php`: Preprocesses the grammar and builds the parser using `kmyacc`
+
+.phpy pseudo language
+=====================
+
+The `.y` file is a normal grammar in `kmyacc` (`yacc`) style, with some transformations
+applied to it:
+
+ * Nodes are created using the syntax `Name[..., ...]`. This is transformed into
+ `new Name(..., ..., attributes())`
+ * Some function-like constructs are resolved (see `rebuildParsers.php` for a list)
+
+Building the parser
+===================
+
+Run `php grammar/rebuildParsers.php` to rebuild the parsers. Additional options:
+
+ * The `KMYACC` environment variable can be used to specify an alternative `kmyacc` binary.
+ By default the `phpyacc` dev dependency will be used. To use the original `kmyacc`, you
+ need to compile [moriyoshi's fork](https://github.com/moriyoshi/kmyacc-forked).
+ * The `--debug` option enables emission of debug symbols and creates the `y.output` file.
+ * The `--keep-tmp-grammar` option preserves the preprocessed grammar file.
diff --git a/vendor/nikic/php-parser/grammar/parser.template b/vendor/nikic/php-parser/grammar/parser.template
new file mode 100644
index 000000000..6166607c9
--- /dev/null
+++ b/vendor/nikic/php-parser/grammar/parser.template
@@ -0,0 +1,106 @@
+<?php
+$meta #
+#semval($) $this->semValue
+#semval($,%t) $this->semValue
+#semval(%n) $stackPos-(%l-%n)
+#semval(%n,%t) $stackPos-(%l-%n)
+
+namespace PhpParser\Parser;
+
+use PhpParser\Error;
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Name;
+use PhpParser\Node\Scalar;
+use PhpParser\Node\Stmt;
+#include;
+
+/* This is an automatically GENERATED file, which should not be manually edited.
+ * Instead edit one of the following:
+ * * the grammar files grammar/php5.y or grammar/php7.y
+ * * the skeleton file grammar/parser.template
+ * * the preprocessing script grammar/rebuildParsers.php
+ */
+class #(-p) extends \PhpParser\ParserAbstract
+{
+ protected $tokenToSymbolMapSize = #(YYMAXLEX);
+ protected $actionTableSize = #(YYLAST);
+ protected $gotoTableSize = #(YYGLAST);
+
+ protected $invalidSymbol = #(YYBADCH);
+ protected $errorSymbol = #(YYINTERRTOK);
+ protected $defaultAction = #(YYDEFAULT);
+ protected $unexpectedTokenRule = #(YYUNEXPECTED);
+
+ protected $YY2TBLSTATE = #(YY2TBLSTATE);
+ protected $numNonLeafStates = #(YYNLSTATES);
+
+ protected $symbolToName = array(
+ #listvar terminals
+ );
+
+ protected $tokenToSymbol = array(
+ #listvar yytranslate
+ );
+
+ protected $action = array(
+ #listvar yyaction
+ );
+
+ protected $actionCheck = array(
+ #listvar yycheck
+ );
+
+ protected $actionBase = array(
+ #listvar yybase
+ );
+
+ protected $actionDefault = array(
+ #listvar yydefault
+ );
+
+ protected $goto = array(
+ #listvar yygoto
+ );
+
+ protected $gotoCheck = array(
+ #listvar yygcheck
+ );
+
+ protected $gotoBase = array(
+ #listvar yygbase
+ );
+
+ protected $gotoDefault = array(
+ #listvar yygdefault
+ );
+
+ protected $ruleToNonTerminal = array(
+ #listvar yylhs
+ );
+
+ protected $ruleToLength = array(
+ #listvar yylen
+ );
+#if -t
+
+ protected $productions = array(
+ #production-strings;
+ );
+#endif
+
+ protected function initReduceCallbacks() {
+ $this->reduceCallbacks = [
+#reduce
+ %n => function ($stackPos) {
+ %b
+ },
+#noact
+ %n => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+#endreduce
+ ];
+ }
+}
+#tailcode;
diff --git a/vendor/nikic/php-parser/grammar/php5.y b/vendor/nikic/php-parser/grammar/php5.y
new file mode 100644
index 000000000..f9e7e7dd1
--- /dev/null
+++ b/vendor/nikic/php-parser/grammar/php5.y
@@ -0,0 +1,1040 @@
+%pure_parser
+%expect 6
+
+%tokens
+
+%%
+
+start:
+ top_statement_list { $$ = $this->handleNamespaces($1); }
+;
+
+top_statement_list_ex:
+ top_statement_list_ex top_statement { pushNormalizing($1, $2); }
+ | /* empty */ { init(); }
+;
+
+top_statement_list:
+ top_statement_list_ex
+ { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
+ if ($nop !== null) { $1[] = $nop; } $$ = $1; }
+;
+
+ampersand:
+ T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
+ | T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG
+;
+
+reserved_non_modifiers:
+ T_INCLUDE | T_INCLUDE_ONCE | T_EVAL | T_REQUIRE | T_REQUIRE_ONCE | T_LOGICAL_OR | T_LOGICAL_XOR | T_LOGICAL_AND
+ | T_INSTANCEOF | T_NEW | T_CLONE | T_EXIT | T_IF | T_ELSEIF | T_ELSE | T_ENDIF | T_ECHO | T_DO | T_WHILE
+ | T_ENDWHILE | T_FOR | T_ENDFOR | T_FOREACH | T_ENDFOREACH | T_DECLARE | T_ENDDECLARE | T_AS | T_TRY | T_CATCH
+ | T_FINALLY | T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO
+ | T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT
+ | T_BREAK | T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS
+ | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER | T_FN
+ | T_MATCH
+;
+
+semi_reserved:
+ reserved_non_modifiers
+ | T_STATIC | T_ABSTRACT | T_FINAL | T_PRIVATE | T_PROTECTED | T_PUBLIC
+;
+
+identifier_ex:
+ T_STRING { $$ = Node\Identifier[$1]; }
+ | semi_reserved { $$ = Node\Identifier[$1]; }
+;
+
+identifier:
+ T_STRING { $$ = Node\Identifier[$1]; }
+;
+
+reserved_non_modifiers_identifier:
+ reserved_non_modifiers { $$ = Node\Identifier[$1]; }
+;
+
+namespace_name:
+ T_STRING { $$ = Name[$1]; }
+ | T_NAME_QUALIFIED { $$ = Name[$1]; }
+;
+
+legacy_namespace_name:
+ namespace_name { $$ = $1; }
+ | T_NAME_FULLY_QUALIFIED { $$ = Name[substr($1, 1)]; }
+;
+
+plain_variable:
+ T_VARIABLE { $$ = Expr\Variable[parseVar($1)]; }
+;
+
+top_statement:
+ statement { $$ = $1; }
+ | function_declaration_statement { $$ = $1; }
+ | class_declaration_statement { $$ = $1; }
+ | T_HALT_COMPILER
+ { $$ = Stmt\HaltCompiler[$this->lexer->handleHaltCompiler()]; }
+ | T_NAMESPACE namespace_name ';'
+ { $$ = Stmt\Namespace_[$2, null];
+ $$->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
+ $this->checkNamespace($$); }
+ | T_NAMESPACE namespace_name '{' top_statement_list '}'
+ { $$ = Stmt\Namespace_[$2, $4];
+ $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
+ $this->checkNamespace($$); }
+ | T_NAMESPACE '{' top_statement_list '}'
+ { $$ = Stmt\Namespace_[null, $3];
+ $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
+ $this->checkNamespace($$); }
+ | T_USE use_declarations ';' { $$ = Stmt\Use_[$2, Stmt\Use_::TYPE_NORMAL]; }
+ | T_USE use_type use_declarations ';' { $$ = Stmt\Use_[$3, $2]; }
+ | group_use_declaration ';' { $$ = $1; }
+ | T_CONST constant_declaration_list ';' { $$ = Stmt\Const_[$2]; }
+;
+
+use_type:
+ T_FUNCTION { $$ = Stmt\Use_::TYPE_FUNCTION; }
+ | T_CONST { $$ = Stmt\Use_::TYPE_CONSTANT; }
+;
+
+group_use_declaration:
+ T_USE use_type legacy_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
+ { $$ = Stmt\GroupUse[$3, $6, $2]; }
+ | T_USE legacy_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}'
+ { $$ = Stmt\GroupUse[$2, $5, Stmt\Use_::TYPE_UNKNOWN]; }
+;
+
+unprefixed_use_declarations:
+ unprefixed_use_declarations ',' unprefixed_use_declaration
+ { push($1, $3); }
+ | unprefixed_use_declaration { init($1); }
+;
+
+use_declarations:
+ use_declarations ',' use_declaration { push($1, $3); }
+ | use_declaration { init($1); }
+;
+
+inline_use_declarations:
+ inline_use_declarations ',' inline_use_declaration { push($1, $3); }
+ | inline_use_declaration { init($1); }
+;
+
+unprefixed_use_declaration:
+ namespace_name
+ { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
+ | namespace_name T_AS identifier
+ { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
+;
+
+use_declaration:
+ legacy_namespace_name
+ { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
+ | legacy_namespace_name T_AS identifier
+ { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
+;
+
+inline_use_declaration:
+ unprefixed_use_declaration { $$ = $1; $$->type = Stmt\Use_::TYPE_NORMAL; }
+ | use_type unprefixed_use_declaration { $$ = $2; $$->type = $1; }
+;
+
+constant_declaration_list:
+ constant_declaration_list ',' constant_declaration { push($1, $3); }
+ | constant_declaration { init($1); }
+;
+
+constant_declaration:
+ identifier '=' static_scalar { $$ = Node\Const_[$1, $3]; }
+;
+
+class_const_list:
+ class_const_list ',' class_const { push($1, $3); }
+ | class_const { init($1); }
+;
+
+class_const:
+ identifier_ex '=' static_scalar { $$ = Node\Const_[$1, $3]; }
+;
+
+inner_statement_list_ex:
+ inner_statement_list_ex inner_statement { pushNormalizing($1, $2); }
+ | /* empty */ { init(); }
+;
+
+inner_statement_list:
+ inner_statement_list_ex
+ { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
+ if ($nop !== null) { $1[] = $nop; } $$ = $1; }
+;
+
+inner_statement:
+ statement { $$ = $1; }
+ | function_declaration_statement { $$ = $1; }
+ | class_declaration_statement { $$ = $1; }
+ | T_HALT_COMPILER
+ { throw new Error('__HALT_COMPILER() can only be used from the outermost scope', attributes()); }
+;
+
+non_empty_statement:
+ '{' inner_statement_list '}'
+ {
+ if ($2) {
+ $$ = $2; prependLeadingComments($$);
+ } else {
+ makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
+ if (null === $$) { $$ = array(); }
+ }
+ }
+ | T_IF parentheses_expr statement elseif_list else_single
+ { $$ = Stmt\If_[$2, ['stmts' => toArray($3), 'elseifs' => $4, 'else' => $5]]; }
+ | T_IF parentheses_expr ':' inner_statement_list new_elseif_list new_else_single T_ENDIF ';'
+ { $$ = Stmt\If_[$2, ['stmts' => $4, 'elseifs' => $5, 'else' => $6]]; }
+ | T_WHILE parentheses_expr while_statement { $$ = Stmt\While_[$2, $3]; }
+ | T_DO statement T_WHILE parentheses_expr ';' { $$ = Stmt\Do_ [$4, toArray($2)]; }
+ | T_FOR '(' for_expr ';' for_expr ';' for_expr ')' for_statement
+ { $$ = Stmt\For_[['init' => $3, 'cond' => $5, 'loop' => $7, 'stmts' => $9]]; }
+ | T_SWITCH parentheses_expr switch_case_list { $$ = Stmt\Switch_[$2, $3]; }
+ | T_BREAK ';' { $$ = Stmt\Break_[null]; }
+ | T_BREAK expr ';' { $$ = Stmt\Break_[$2]; }
+ | T_CONTINUE ';' { $$ = Stmt\Continue_[null]; }
+ | T_CONTINUE expr ';' { $$ = Stmt\Continue_[$2]; }
+ | T_RETURN ';' { $$ = Stmt\Return_[null]; }
+ | T_RETURN expr ';' { $$ = Stmt\Return_[$2]; }
+ | T_GLOBAL global_var_list ';' { $$ = Stmt\Global_[$2]; }
+ | T_STATIC static_var_list ';' { $$ = Stmt\Static_[$2]; }
+ | T_ECHO expr_list ';' { $$ = Stmt\Echo_[$2]; }
+ | T_INLINE_HTML { $$ = Stmt\InlineHTML[$1]; }
+ | yield_expr ';' { $$ = Stmt\Expression[$1]; }
+ | expr ';' { $$ = Stmt\Expression[$1]; }
+ | T_UNSET '(' variables_list ')' ';' { $$ = Stmt\Unset_[$3]; }
+ | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement
+ { $$ = Stmt\Foreach_[$3, $5[0], ['keyVar' => null, 'byRef' => $5[1], 'stmts' => $7]]; }
+ | T_FOREACH '(' expr T_AS variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement
+ { $$ = Stmt\Foreach_[$3, $7[0], ['keyVar' => $5, 'byRef' => $7[1], 'stmts' => $9]]; }
+ | T_DECLARE '(' declare_list ')' declare_statement { $$ = Stmt\Declare_[$3, $5]; }
+ | T_TRY '{' inner_statement_list '}' catches optional_finally
+ { $$ = Stmt\TryCatch[$3, $5, $6]; $this->checkTryCatch($$); }
+ | T_THROW expr ';' { $$ = Stmt\Throw_[$2]; }
+ | T_GOTO identifier ';' { $$ = Stmt\Goto_[$2]; }
+ | identifier ':' { $$ = Stmt\Label[$1]; }
+ | expr error { $$ = Stmt\Expression[$1]; }
+ | error { $$ = array(); /* means: no statement */ }
+;
+
+statement:
+ non_empty_statement { $$ = $1; }
+ | ';'
+ { makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
+ if ($$ === null) $$ = array(); /* means: no statement */ }
+;
+
+catches:
+ /* empty */ { init(); }
+ | catches catch { push($1, $2); }
+;
+
+catch:
+ T_CATCH '(' name plain_variable ')' '{' inner_statement_list '}'
+ { $$ = Stmt\Catch_[array($3), $4, $7]; }
+;
+
+optional_finally:
+ /* empty */ { $$ = null; }
+ | T_FINALLY '{' inner_statement_list '}' { $$ = Stmt\Finally_[$3]; }
+;
+
+variables_list:
+ variable { init($1); }
+ | variables_list ',' variable { push($1, $3); }
+;
+
+optional_ref:
+ /* empty */ { $$ = false; }
+ | ampersand { $$ = true; }
+;
+
+optional_arg_ref:
+ /* empty */ { $$ = false; }
+ | T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG { $$ = true; }
+;
+
+optional_ellipsis:
+ /* empty */ { $$ = false; }
+ | T_ELLIPSIS { $$ = true; }
+;
+
+function_declaration_statement:
+ T_FUNCTION optional_ref identifier '(' parameter_list ')' optional_return_type '{' inner_statement_list '}'
+ { $$ = Stmt\Function_[$3, ['byRef' => $2, 'params' => $5, 'returnType' => $7, 'stmts' => $9]]; }
+;
+
+class_declaration_statement:
+ class_entry_type identifier extends_from implements_list '{' class_statement_list '}'
+ { $$ = Stmt\Class_[$2, ['type' => $1, 'extends' => $3, 'implements' => $4, 'stmts' => $6]];
+ $this->checkClass($$, #2); }
+ | T_INTERFACE identifier interface_extends_list '{' class_statement_list '}'
+ { $$ = Stmt\Interface_[$2, ['extends' => $3, 'stmts' => $5]];
+ $this->checkInterface($$, #2); }
+ | T_TRAIT identifier '{' class_statement_list '}'
+ { $$ = Stmt\Trait_[$2, ['stmts' => $4]]; }
+;
+
+class_entry_type:
+ T_CLASS { $$ = 0; }
+ | T_ABSTRACT T_CLASS { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
+ | T_FINAL T_CLASS { $$ = Stmt\Class_::MODIFIER_FINAL; }
+;
+
+extends_from:
+ /* empty */ { $$ = null; }
+ | T_EXTENDS class_name { $$ = $2; }
+;
+
+interface_extends_list:
+ /* empty */ { $$ = array(); }
+ | T_EXTENDS class_name_list { $$ = $2; }
+;
+
+implements_list:
+ /* empty */ { $$ = array(); }
+ | T_IMPLEMENTS class_name_list { $$ = $2; }
+;
+
+class_name_list:
+ class_name { init($1); }
+ | class_name_list ',' class_name { push($1, $3); }
+;
+
+for_statement:
+ statement { $$ = toArray($1); }
+ | ':' inner_statement_list T_ENDFOR ';' { $$ = $2; }
+;
+
+foreach_statement:
+ statement { $$ = toArray($1); }
+ | ':' inner_statement_list T_ENDFOREACH ';' { $$ = $2; }
+;
+
+declare_statement:
+ non_empty_statement { $$ = toArray($1); }
+ | ';' { $$ = null; }
+ | ':' inner_statement_list T_ENDDECLARE ';' { $$ = $2; }
+;
+
+declare_list:
+ declare_list_element { init($1); }
+ | declare_list ',' declare_list_element { push($1, $3); }
+;
+
+declare_list_element:
+ identifier '=' static_scalar { $$ = Stmt\DeclareDeclare[$1, $3]; }
+;
+
+switch_case_list:
+ '{' case_list '}' { $$ = $2; }
+ | '{' ';' case_list '}' { $$ = $3; }
+ | ':' case_list T_ENDSWITCH ';' { $$ = $2; }
+ | ':' ';' case_list T_ENDSWITCH ';' { $$ = $3; }
+;
+
+case_list:
+ /* empty */ { init(); }
+ | case_list case { push($1, $2); }
+;
+
+case:
+ T_CASE expr case_separator inner_statement_list_ex { $$ = Stmt\Case_[$2, $4]; }
+ | T_DEFAULT case_separator inner_statement_list_ex { $$ = Stmt\Case_[null, $3]; }
+;
+
+case_separator:
+ ':'
+ | ';'
+;
+
+while_statement:
+ statement { $$ = toArray($1); }
+ | ':' inner_statement_list T_ENDWHILE ';' { $$ = $2; }
+;
+
+elseif_list:
+ /* empty */ { init(); }
+ | elseif_list elseif { push($1, $2); }
+;
+
+elseif:
+ T_ELSEIF parentheses_expr statement { $$ = Stmt\ElseIf_[$2, toArray($3)]; }
+;
+
+new_elseif_list:
+ /* empty */ { init(); }
+ | new_elseif_list new_elseif { push($1, $2); }
+;
+
+new_elseif:
+ T_ELSEIF parentheses_expr ':' inner_statement_list { $$ = Stmt\ElseIf_[$2, $4]; }
+;
+
+else_single:
+ /* empty */ { $$ = null; }
+ | T_ELSE statement { $$ = Stmt\Else_[toArray($2)]; }
+;
+
+new_else_single:
+ /* empty */ { $$ = null; }
+ | T_ELSE ':' inner_statement_list { $$ = Stmt\Else_[$3]; }
+;
+
+foreach_variable:
+ variable { $$ = array($1, false); }
+ | ampersand variable { $$ = array($2, true); }
+ | list_expr { $$ = array($1, false); }
+;
+
+parameter_list:
+ non_empty_parameter_list { $$ = $1; }
+ | /* empty */ { $$ = array(); }
+;
+
+non_empty_parameter_list:
+ parameter { init($1); }
+ | non_empty_parameter_list ',' parameter { push($1, $3); }
+;
+
+parameter:
+ optional_param_type optional_arg_ref optional_ellipsis plain_variable
+ { $$ = Node\Param[$4, null, $1, $2, $3]; $this->checkParam($$); }
+ | optional_param_type optional_arg_ref optional_ellipsis plain_variable '=' static_scalar
+ { $$ = Node\Param[$4, $6, $1, $2, $3]; $this->checkParam($$); }
+;
+
+type:
+ name { $$ = $1; }
+ | T_ARRAY { $$ = Node\Identifier['array']; }
+ | T_CALLABLE { $$ = Node\Identifier['callable']; }
+;
+
+optional_param_type:
+ /* empty */ { $$ = null; }
+ | type { $$ = $1; }
+;
+
+optional_return_type:
+ /* empty */ { $$ = null; }
+ | ':' type { $$ = $2; }
+;
+
+argument_list:
+ '(' ')' { $$ = array(); }
+ | '(' non_empty_argument_list ')' { $$ = $2; }
+ | '(' yield_expr ')' { $$ = array(Node\Arg[$2, false, false]); }
+;
+
+non_empty_argument_list:
+ argument { init($1); }
+ | non_empty_argument_list ',' argument { push($1, $3); }
+;
+
+argument:
+ expr { $$ = Node\Arg[$1, false, false]; }
+ | ampersand variable { $$ = Node\Arg[$2, true, false]; }
+ | T_ELLIPSIS expr { $$ = Node\Arg[$2, false, true]; }
+;
+
+global_var_list:
+ global_var_list ',' global_var { push($1, $3); }
+ | global_var { init($1); }
+;
+
+global_var:
+ plain_variable { $$ = $1; }
+ | '$' variable { $$ = Expr\Variable[$2]; }
+ | '$' '{' expr '}' { $$ = Expr\Variable[$3]; }
+;
+
+static_var_list:
+ static_var_list ',' static_var { push($1, $3); }
+ | static_var { init($1); }
+;
+
+static_var:
+ plain_variable { $$ = Stmt\StaticVar[$1, null]; }
+ | plain_variable '=' static_scalar { $$ = Stmt\StaticVar[$1, $3]; }
+;
+
+class_statement_list_ex:
+ class_statement_list_ex class_statement { if ($2 !== null) { push($1, $2); } }
+ | /* empty */ { init(); }
+;
+
+class_statement_list:
+ class_statement_list_ex
+ { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
+ if ($nop !== null) { $1[] = $nop; } $$ = $1; }
+;
+
+class_statement:
+ variable_modifiers property_declaration_list ';'
+ { $$ = Stmt\Property[$1, $2]; $this->checkProperty($$, #1); }
+ | T_CONST class_const_list ';' { $$ = Stmt\ClassConst[$2, 0]; }
+ | method_modifiers T_FUNCTION optional_ref identifier_ex '(' parameter_list ')' optional_return_type method_body
+ { $$ = Stmt\ClassMethod[$4, ['type' => $1, 'byRef' => $3, 'params' => $6, 'returnType' => $8, 'stmts' => $9]];
+ $this->checkClassMethod($$, #1); }
+ | T_USE class_name_list trait_adaptations { $$ = Stmt\TraitUse[$2, $3]; }
+;
+
+trait_adaptations:
+ ';' { $$ = array(); }
+ | '{' trait_adaptation_list '}' { $$ = $2; }
+;
+
+trait_adaptation_list:
+ /* empty */ { init(); }
+ | trait_adaptation_list trait_adaptation { push($1, $2); }
+;
+
+trait_adaptation:
+ trait_method_reference_fully_qualified T_INSTEADOF class_name_list ';'
+ { $$ = Stmt\TraitUseAdaptation\Precedence[$1[0], $1[1], $3]; }
+ | trait_method_reference T_AS member_modifier identifier_ex ';'
+ { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], $3, $4]; }
+ | trait_method_reference T_AS member_modifier ';'
+ { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], $3, null]; }
+ | trait_method_reference T_AS identifier ';'
+ { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], null, $3]; }
+ | trait_method_reference T_AS reserved_non_modifiers_identifier ';'
+ { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], null, $3]; }
+;
+
+trait_method_reference_fully_qualified:
+ name T_PAAMAYIM_NEKUDOTAYIM identifier_ex { $$ = array($1, $3); }
+;
+trait_method_reference:
+ trait_method_reference_fully_qualified { $$ = $1; }
+ | identifier_ex { $$ = array(null, $1); }
+;
+
+method_body:
+ ';' /* abstract method */ { $$ = null; }
+ | '{' inner_statement_list '}' { $$ = $2; }
+;
+
+variable_modifiers:
+ non_empty_member_modifiers { $$ = $1; }
+ | T_VAR { $$ = 0; }
+;
+
+method_modifiers:
+ /* empty */ { $$ = 0; }
+ | non_empty_member_modifiers { $$ = $1; }
+;
+
+non_empty_member_modifiers:
+ member_modifier { $$ = $1; }
+ | non_empty_member_modifiers member_modifier { $this->checkModifier($1, $2, #2); $$ = $1 | $2; }
+;
+
+member_modifier:
+ T_PUBLIC { $$ = Stmt\Class_::MODIFIER_PUBLIC; }
+ | T_PROTECTED { $$ = Stmt\Class_::MODIFIER_PROTECTED; }
+ | T_PRIVATE { $$ = Stmt\Class_::MODIFIER_PRIVATE; }
+ | T_STATIC { $$ = Stmt\Class_::MODIFIER_STATIC; }
+ | T_ABSTRACT { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
+ | T_FINAL { $$ = Stmt\Class_::MODIFIER_FINAL; }
+;
+
+property_declaration_list:
+ property_declaration { init($1); }
+ | property_declaration_list ',' property_declaration { push($1, $3); }
+;
+
+property_decl_name:
+ T_VARIABLE { $$ = Node\VarLikeIdentifier[parseVar($1)]; }
+;
+
+property_declaration:
+ property_decl_name { $$ = Stmt\PropertyProperty[$1, null]; }
+ | property_decl_name '=' static_scalar { $$ = Stmt\PropertyProperty[$1, $3]; }
+;
+
+expr_list:
+ expr_list ',' expr { push($1, $3); }
+ | expr { init($1); }
+;
+
+for_expr:
+ /* empty */ { $$ = array(); }
+ | expr_list { $$ = $1; }
+;
+
+expr:
+ variable { $$ = $1; }
+ | list_expr '=' expr { $$ = Expr\Assign[$1, $3]; }
+ | variable '=' expr { $$ = Expr\Assign[$1, $3]; }
+ | variable '=' ampersand variable { $$ = Expr\AssignRef[$1, $4]; }
+ | variable '=' ampersand new_expr { $$ = Expr\AssignRef[$1, $4]; }
+ | new_expr { $$ = $1; }
+ | T_CLONE expr { $$ = Expr\Clone_[$2]; }
+ | variable T_PLUS_EQUAL expr { $$ = Expr\AssignOp\Plus [$1, $3]; }
+ | variable T_MINUS_EQUAL expr { $$ = Expr\AssignOp\Minus [$1, $3]; }
+ | variable T_MUL_EQUAL expr { $$ = Expr\AssignOp\Mul [$1, $3]; }
+ | variable T_DIV_EQUAL expr { $$ = Expr\AssignOp\Div [$1, $3]; }
+ | variable T_CONCAT_EQUAL expr { $$ = Expr\AssignOp\Concat [$1, $3]; }
+ | variable T_MOD_EQUAL expr { $$ = Expr\AssignOp\Mod [$1, $3]; }
+ | variable T_AND_EQUAL expr { $$ = Expr\AssignOp\BitwiseAnd[$1, $3]; }
+ | variable T_OR_EQUAL expr { $$ = Expr\AssignOp\BitwiseOr [$1, $3]; }
+ | variable T_XOR_EQUAL expr { $$ = Expr\AssignOp\BitwiseXor[$1, $3]; }
+ | variable T_SL_EQUAL expr { $$ = Expr\AssignOp\ShiftLeft [$1, $3]; }
+ | variable T_SR_EQUAL expr { $$ = Expr\AssignOp\ShiftRight[$1, $3]; }
+ | variable T_POW_EQUAL expr { $$ = Expr\AssignOp\Pow [$1, $3]; }
+ | variable T_COALESCE_EQUAL expr { $$ = Expr\AssignOp\Coalesce [$1, $3]; }
+ | variable T_INC { $$ = Expr\PostInc[$1]; }
+ | T_INC variable { $$ = Expr\PreInc [$2]; }
+ | variable T_DEC { $$ = Expr\PostDec[$1]; }
+ | T_DEC variable { $$ = Expr\PreDec [$2]; }
+ | expr T_BOOLEAN_OR expr { $$ = Expr\BinaryOp\BooleanOr [$1, $3]; }
+ | expr T_BOOLEAN_AND expr { $$ = Expr\BinaryOp\BooleanAnd[$1, $3]; }
+ | expr T_LOGICAL_OR expr { $$ = Expr\BinaryOp\LogicalOr [$1, $3]; }
+ | expr T_LOGICAL_AND expr { $$ = Expr\BinaryOp\LogicalAnd[$1, $3]; }
+ | expr T_LOGICAL_XOR expr { $$ = Expr\BinaryOp\LogicalXor[$1, $3]; }
+ | expr '|' expr { $$ = Expr\BinaryOp\BitwiseOr [$1, $3]; }
+ | expr T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG expr { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
+ | expr T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG expr { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
+ | expr '^' expr { $$ = Expr\BinaryOp\BitwiseXor[$1, $3]; }
+ | expr '.' expr { $$ = Expr\BinaryOp\Concat [$1, $3]; }
+ | expr '+' expr { $$ = Expr\BinaryOp\Plus [$1, $3]; }
+ | expr '-' expr { $$ = Expr\BinaryOp\Minus [$1, $3]; }
+ | expr '*' expr { $$ = Expr\BinaryOp\Mul [$1, $3]; }
+ | expr '/' expr { $$ = Expr\BinaryOp\Div [$1, $3]; }
+ | expr '%' expr { $$ = Expr\BinaryOp\Mod [$1, $3]; }
+ | expr T_SL expr { $$ = Expr\BinaryOp\ShiftLeft [$1, $3]; }
+ | expr T_SR expr { $$ = Expr\BinaryOp\ShiftRight[$1, $3]; }
+ | expr T_POW expr { $$ = Expr\BinaryOp\Pow [$1, $3]; }
+ | '+' expr %prec T_INC { $$ = Expr\UnaryPlus [$2]; }
+ | '-' expr %prec T_INC { $$ = Expr\UnaryMinus[$2]; }
+ | '!' expr { $$ = Expr\BooleanNot[$2]; }
+ | '~' expr { $$ = Expr\BitwiseNot[$2]; }
+ | expr T_IS_IDENTICAL expr { $$ = Expr\BinaryOp\Identical [$1, $3]; }
+ | expr T_IS_NOT_IDENTICAL expr { $$ = Expr\BinaryOp\NotIdentical [$1, $3]; }
+ | expr T_IS_EQUAL expr { $$ = Expr\BinaryOp\Equal [$1, $3]; }
+ | expr T_IS_NOT_EQUAL expr { $$ = Expr\BinaryOp\NotEqual [$1, $3]; }
+ | expr T_SPACESHIP expr { $$ = Expr\BinaryOp\Spaceship [$1, $3]; }
+ | expr '<' expr { $$ = Expr\BinaryOp\Smaller [$1, $3]; }
+ | expr T_IS_SMALLER_OR_EQUAL expr { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; }
+ | expr '>' expr { $$ = Expr\BinaryOp\Greater [$1, $3]; }
+ | expr T_IS_GREATER_OR_EQUAL expr { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; }
+ | expr T_INSTANCEOF class_name_reference { $$ = Expr\Instanceof_[$1, $3]; }
+ | parentheses_expr { $$ = $1; }
+ /* we need a separate '(' new_expr ')' rule to avoid problems caused by a s/r conflict */
+ | '(' new_expr ')' { $$ = $2; }
+ | expr '?' expr ':' expr { $$ = Expr\Ternary[$1, $3, $5]; }
+ | expr '?' ':' expr { $$ = Expr\Ternary[$1, null, $4]; }
+ | expr T_COALESCE expr { $$ = Expr\BinaryOp\Coalesce[$1, $3]; }
+ | T_ISSET '(' variables_list ')' { $$ = Expr\Isset_[$3]; }
+ | T_EMPTY '(' expr ')' { $$ = Expr\Empty_[$3]; }
+ | T_INCLUDE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE]; }
+ | T_INCLUDE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE_ONCE]; }
+ | T_EVAL parentheses_expr { $$ = Expr\Eval_[$2]; }
+ | T_REQUIRE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE]; }
+ | T_REQUIRE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE_ONCE]; }
+ | T_INT_CAST expr { $$ = Expr\Cast\Int_ [$2]; }
+ | T_DOUBLE_CAST expr
+ { $attrs = attributes();
+ $attrs['kind'] = $this->getFloatCastKind($1);
+ $$ = new Expr\Cast\Double($2, $attrs); }
+ | T_STRING_CAST expr { $$ = Expr\Cast\String_ [$2]; }
+ | T_ARRAY_CAST expr { $$ = Expr\Cast\Array_ [$2]; }
+ | T_OBJECT_CAST expr { $$ = Expr\Cast\Object_ [$2]; }
+ | T_BOOL_CAST expr { $$ = Expr\Cast\Bool_ [$2]; }
+ | T_UNSET_CAST expr { $$ = Expr\Cast\Unset_ [$2]; }
+ | T_EXIT exit_expr
+ { $attrs = attributes();
+ $attrs['kind'] = strtolower($1) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
+ $$ = new Expr\Exit_($2, $attrs); }
+ | '@' expr { $$ = Expr\ErrorSuppress[$2]; }
+ | scalar { $$ = $1; }
+ | array_expr { $$ = $1; }
+ | scalar_dereference { $$ = $1; }
+ | '`' backticks_expr '`' { $$ = Expr\ShellExec[$2]; }
+ | T_PRINT expr { $$ = Expr\Print_[$2]; }
+ | T_YIELD { $$ = Expr\Yield_[null, null]; }
+ | T_YIELD_FROM expr { $$ = Expr\YieldFrom[$2]; }
+ | T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type
+ '{' inner_statement_list '}'
+ { $$ = Expr\Closure[['static' => false, 'byRef' => $2, 'params' => $4, 'uses' => $6, 'returnType' => $7, 'stmts' => $9]]; }
+ | T_STATIC T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type
+ '{' inner_statement_list '}'
+ { $$ = Expr\Closure[['static' => true, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $10]]; }
+;
+
+parentheses_expr:
+ '(' expr ')' { $$ = $2; }
+ | '(' yield_expr ')' { $$ = $2; }
+;
+
+yield_expr:
+ T_YIELD expr { $$ = Expr\Yield_[$2, null]; }
+ | T_YIELD expr T_DOUBLE_ARROW expr { $$ = Expr\Yield_[$4, $2]; }
+;
+
+array_expr:
+ T_ARRAY '(' array_pair_list ')'
+ { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_LONG;
+ $$ = new Expr\Array_($3, $attrs); }
+ | '[' array_pair_list ']'
+ { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_SHORT;
+ $$ = new Expr\Array_($2, $attrs); }
+;
+
+scalar_dereference:
+ array_expr '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | T_CONSTANT_ENCAPSED_STRING '[' dim_offset ']'
+ { $attrs = attributes(); $attrs['kind'] = strKind($1);
+ $$ = Expr\ArrayDimFetch[new Scalar\String_(Scalar\String_::parse($1), $attrs), $3]; }
+ | constant '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | scalar_dereference '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ /* alternative array syntax missing intentionally */
+;
+
+anonymous_class:
+ T_CLASS ctor_arguments extends_from implements_list '{' class_statement_list '}'
+ { $$ = array(Stmt\Class_[null, ['type' => 0, 'extends' => $3, 'implements' => $4, 'stmts' => $6]], $2);
+ $this->checkClass($$[0], -1); }
+;
+
+new_expr:
+ T_NEW class_name_reference ctor_arguments { $$ = Expr\New_[$2, $3]; }
+ | T_NEW anonymous_class
+ { list($class, $ctorArgs) = $2; $$ = Expr\New_[$class, $ctorArgs]; }
+;
+
+lexical_vars:
+ /* empty */ { $$ = array(); }
+ | T_USE '(' lexical_var_list ')' { $$ = $3; }
+;
+
+lexical_var_list:
+ lexical_var { init($1); }
+ | lexical_var_list ',' lexical_var { push($1, $3); }
+;
+
+lexical_var:
+ optional_ref plain_variable { $$ = Expr\ClosureUse[$2, $1]; }
+;
+
+function_call:
+ name argument_list { $$ = Expr\FuncCall[$1, $2]; }
+ | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_ex argument_list
+ { $$ = Expr\StaticCall[$1, $3, $4]; }
+ | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM '{' expr '}' argument_list
+ { $$ = Expr\StaticCall[$1, $4, $6]; }
+ | static_property argument_list
+ { $$ = $this->fixupPhp5StaticPropCall($1, $2, attributes()); }
+ | variable_without_objects argument_list
+ { $$ = Expr\FuncCall[$1, $2]; }
+ | function_call '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ /* alternative array syntax missing intentionally */
+;
+
+class_name:
+ T_STATIC { $$ = Name[$1]; }
+ | name { $$ = $1; }
+;
+
+name:
+ T_STRING { $$ = Name[$1]; }
+ | T_NAME_QUALIFIED { $$ = Name[$1]; }
+ | T_NAME_FULLY_QUALIFIED { $$ = Name\FullyQualified[substr($1, 1)]; }
+ | T_NAME_RELATIVE { $$ = Name\Relative[substr($1, 10)]; }
+;
+
+class_name_reference:
+ class_name { $$ = $1; }
+ | dynamic_class_name_reference { $$ = $1; }
+;
+
+dynamic_class_name_reference:
+ object_access_for_dcnr { $$ = $1; }
+ | base_variable { $$ = $1; }
+;
+
+class_name_or_var:
+ class_name { $$ = $1; }
+ | reference_variable { $$ = $1; }
+;
+
+object_access_for_dcnr:
+ base_variable T_OBJECT_OPERATOR object_property
+ { $$ = Expr\PropertyFetch[$1, $3]; }
+ | object_access_for_dcnr T_OBJECT_OPERATOR object_property
+ { $$ = Expr\PropertyFetch[$1, $3]; }
+ | object_access_for_dcnr '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | object_access_for_dcnr '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+;
+
+exit_expr:
+ /* empty */ { $$ = null; }
+ | '(' ')' { $$ = null; }
+ | parentheses_expr { $$ = $1; }
+;
+
+backticks_expr:
+ /* empty */ { $$ = array(); }
+ | T_ENCAPSED_AND_WHITESPACE
+ { $$ = array(Scalar\EncapsedStringPart[Scalar\String_::parseEscapeSequences($1, '`', false)]); }
+ | encaps_list { parseEncapsed($1, '`', false); $$ = $1; }
+;
+
+ctor_arguments:
+ /* empty */ { $$ = array(); }
+ | argument_list { $$ = $1; }
+;
+
+common_scalar:
+ T_LNUMBER { $$ = $this->parseLNumber($1, attributes(), true); }
+ | T_DNUMBER { $$ = Scalar\DNumber[Scalar\DNumber::parse($1)]; }
+ | T_CONSTANT_ENCAPSED_STRING
+ { $attrs = attributes(); $attrs['kind'] = strKind($1);
+ $$ = new Scalar\String_(Scalar\String_::parse($1, false), $attrs); }
+ | T_LINE { $$ = Scalar\MagicConst\Line[]; }
+ | T_FILE { $$ = Scalar\MagicConst\File[]; }
+ | T_DIR { $$ = Scalar\MagicConst\Dir[]; }
+ | T_CLASS_C { $$ = Scalar\MagicConst\Class_[]; }
+ | T_TRAIT_C { $$ = Scalar\MagicConst\Trait_[]; }
+ | T_METHOD_C { $$ = Scalar\MagicConst\Method[]; }
+ | T_FUNC_C { $$ = Scalar\MagicConst\Function_[]; }
+ | T_NS_C { $$ = Scalar\MagicConst\Namespace_[]; }
+ | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
+ { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), false); }
+ | T_START_HEREDOC T_END_HEREDOC
+ { $$ = $this->parseDocString($1, '', $2, attributes(), stackAttributes(#2), false); }
+;
+
+static_scalar:
+ common_scalar { $$ = $1; }
+ | class_name T_PAAMAYIM_NEKUDOTAYIM identifier_ex { $$ = Expr\ClassConstFetch[$1, $3]; }
+ | name { $$ = Expr\ConstFetch[$1]; }
+ | T_ARRAY '(' static_array_pair_list ')' { $$ = Expr\Array_[$3]; }
+ | '[' static_array_pair_list ']' { $$ = Expr\Array_[$2]; }
+ | static_operation { $$ = $1; }
+;
+
+static_operation:
+ static_scalar T_BOOLEAN_OR static_scalar { $$ = Expr\BinaryOp\BooleanOr [$1, $3]; }
+ | static_scalar T_BOOLEAN_AND static_scalar { $$ = Expr\BinaryOp\BooleanAnd[$1, $3]; }
+ | static_scalar T_LOGICAL_OR static_scalar { $$ = Expr\BinaryOp\LogicalOr [$1, $3]; }
+ | static_scalar T_LOGICAL_AND static_scalar { $$ = Expr\BinaryOp\LogicalAnd[$1, $3]; }
+ | static_scalar T_LOGICAL_XOR static_scalar { $$ = Expr\BinaryOp\LogicalXor[$1, $3]; }
+ | static_scalar '|' static_scalar { $$ = Expr\BinaryOp\BitwiseOr [$1, $3]; }
+ | static_scalar T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG static_scalar
+ { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
+ | static_scalar T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG static_scalar
+ { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
+ | static_scalar '^' static_scalar { $$ = Expr\BinaryOp\BitwiseXor[$1, $3]; }
+ | static_scalar '.' static_scalar { $$ = Expr\BinaryOp\Concat [$1, $3]; }
+ | static_scalar '+' static_scalar { $$ = Expr\BinaryOp\Plus [$1, $3]; }
+ | static_scalar '-' static_scalar { $$ = Expr\BinaryOp\Minus [$1, $3]; }
+ | static_scalar '*' static_scalar { $$ = Expr\BinaryOp\Mul [$1, $3]; }
+ | static_scalar '/' static_scalar { $$ = Expr\BinaryOp\Div [$1, $3]; }
+ | static_scalar '%' static_scalar { $$ = Expr\BinaryOp\Mod [$1, $3]; }
+ | static_scalar T_SL static_scalar { $$ = Expr\BinaryOp\ShiftLeft [$1, $3]; }
+ | static_scalar T_SR static_scalar { $$ = Expr\BinaryOp\ShiftRight[$1, $3]; }
+ | static_scalar T_POW static_scalar { $$ = Expr\BinaryOp\Pow [$1, $3]; }
+ | '+' static_scalar %prec T_INC { $$ = Expr\UnaryPlus [$2]; }
+ | '-' static_scalar %prec T_INC { $$ = Expr\UnaryMinus[$2]; }
+ | '!' static_scalar { $$ = Expr\BooleanNot[$2]; }
+ | '~' static_scalar { $$ = Expr\BitwiseNot[$2]; }
+ | static_scalar T_IS_IDENTICAL static_scalar { $$ = Expr\BinaryOp\Identical [$1, $3]; }
+ | static_scalar T_IS_NOT_IDENTICAL static_scalar { $$ = Expr\BinaryOp\NotIdentical [$1, $3]; }
+ | static_scalar T_IS_EQUAL static_scalar { $$ = Expr\BinaryOp\Equal [$1, $3]; }
+ | static_scalar T_IS_NOT_EQUAL static_scalar { $$ = Expr\BinaryOp\NotEqual [$1, $3]; }
+ | static_scalar '<' static_scalar { $$ = Expr\BinaryOp\Smaller [$1, $3]; }
+ | static_scalar T_IS_SMALLER_OR_EQUAL static_scalar { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; }
+ | static_scalar '>' static_scalar { $$ = Expr\BinaryOp\Greater [$1, $3]; }
+ | static_scalar T_IS_GREATER_OR_EQUAL static_scalar { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; }
+ | static_scalar '?' static_scalar ':' static_scalar { $$ = Expr\Ternary[$1, $3, $5]; }
+ | static_scalar '?' ':' static_scalar { $$ = Expr\Ternary[$1, null, $4]; }
+ | static_scalar '[' static_scalar ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | '(' static_scalar ')' { $$ = $2; }
+;
+
+constant:
+ name { $$ = Expr\ConstFetch[$1]; }
+ | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_ex
+ { $$ = Expr\ClassConstFetch[$1, $3]; }
+;
+
+scalar:
+ common_scalar { $$ = $1; }
+ | constant { $$ = $1; }
+ | '"' encaps_list '"'
+ { $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
+ parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
+ | T_START_HEREDOC encaps_list T_END_HEREDOC
+ { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
+;
+
+static_array_pair_list:
+ /* empty */ { $$ = array(); }
+ | non_empty_static_array_pair_list optional_comma { $$ = $1; }
+;
+
+optional_comma:
+ /* empty */
+ | ','
+;
+
+non_empty_static_array_pair_list:
+ non_empty_static_array_pair_list ',' static_array_pair { push($1, $3); }
+ | static_array_pair { init($1); }
+;
+
+static_array_pair:
+ static_scalar T_DOUBLE_ARROW static_scalar { $$ = Expr\ArrayItem[$3, $1, false]; }
+ | static_scalar { $$ = Expr\ArrayItem[$1, null, false]; }
+;
+
+variable:
+ object_access { $$ = $1; }
+ | base_variable { $$ = $1; }
+ | function_call { $$ = $1; }
+ | new_expr_array_deref { $$ = $1; }
+;
+
+new_expr_array_deref:
+ '(' new_expr ')' '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$2, $5]; }
+ | new_expr_array_deref '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ /* alternative array syntax missing intentionally */
+;
+
+object_access:
+ variable_or_new_expr T_OBJECT_OPERATOR object_property
+ { $$ = Expr\PropertyFetch[$1, $3]; }
+ | variable_or_new_expr T_OBJECT_OPERATOR object_property argument_list
+ { $$ = Expr\MethodCall[$1, $3, $4]; }
+ | object_access argument_list { $$ = Expr\FuncCall[$1, $2]; }
+ | object_access '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | object_access '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+;
+
+variable_or_new_expr:
+ variable { $$ = $1; }
+ | '(' new_expr ')' { $$ = $2; }
+;
+
+variable_without_objects:
+ reference_variable { $$ = $1; }
+ | '$' variable_without_objects { $$ = Expr\Variable[$2]; }
+;
+
+base_variable:
+ variable_without_objects { $$ = $1; }
+ | static_property { $$ = $1; }
+;
+
+static_property:
+ class_name_or_var T_PAAMAYIM_NEKUDOTAYIM '$' reference_variable
+ { $$ = Expr\StaticPropertyFetch[$1, $4]; }
+ | static_property_with_arrays { $$ = $1; }
+;
+
+static_property_simple_name:
+ T_VARIABLE
+ { $var = parseVar($1); $$ = \is_string($var) ? Node\VarLikeIdentifier[$var] : $var; }
+;
+
+static_property_with_arrays:
+ class_name_or_var T_PAAMAYIM_NEKUDOTAYIM static_property_simple_name
+ { $$ = Expr\StaticPropertyFetch[$1, $3]; }
+ | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM '$' '{' expr '}'
+ { $$ = Expr\StaticPropertyFetch[$1, $5]; }
+ | static_property_with_arrays '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | static_property_with_arrays '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+;
+
+reference_variable:
+ reference_variable '[' dim_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | reference_variable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | plain_variable { $$ = $1; }
+ | '$' '{' expr '}' { $$ = Expr\Variable[$3]; }
+;
+
+dim_offset:
+ /* empty */ { $$ = null; }
+ | expr { $$ = $1; }
+;
+
+object_property:
+ identifier { $$ = $1; }
+ | '{' expr '}' { $$ = $2; }
+ | variable_without_objects { $$ = $1; }
+ | error { $$ = Expr\Error[]; $this->errorState = 2; }
+;
+
+list_expr:
+ T_LIST '(' list_expr_elements ')' { $$ = Expr\List_[$3]; }
+;
+
+list_expr_elements:
+ list_expr_elements ',' list_expr_element { push($1, $3); }
+ | list_expr_element { init($1); }
+;
+
+list_expr_element:
+ variable { $$ = Expr\ArrayItem[$1, null, false]; }
+ | list_expr { $$ = Expr\ArrayItem[$1, null, false]; }
+ | /* empty */ { $$ = null; }
+;
+
+array_pair_list:
+ /* empty */ { $$ = array(); }
+ | non_empty_array_pair_list optional_comma { $$ = $1; }
+;
+
+non_empty_array_pair_list:
+ non_empty_array_pair_list ',' array_pair { push($1, $3); }
+ | array_pair { init($1); }
+;
+
+array_pair:
+ expr T_DOUBLE_ARROW expr { $$ = Expr\ArrayItem[$3, $1, false]; }
+ | expr { $$ = Expr\ArrayItem[$1, null, false]; }
+ | expr T_DOUBLE_ARROW ampersand variable { $$ = Expr\ArrayItem[$4, $1, true]; }
+ | ampersand variable { $$ = Expr\ArrayItem[$2, null, true]; }
+ | T_ELLIPSIS expr { $$ = Expr\ArrayItem[$2, null, false, attributes(), true]; }
+;
+
+encaps_list:
+ encaps_list encaps_var { push($1, $2); }
+ | encaps_list encaps_string_part { push($1, $2); }
+ | encaps_var { init($1); }
+ | encaps_string_part encaps_var { init($1, $2); }
+;
+
+encaps_string_part:
+ T_ENCAPSED_AND_WHITESPACE { $$ = Scalar\EncapsedStringPart[$1]; }
+;
+
+encaps_str_varname:
+ T_STRING_VARNAME { $$ = Expr\Variable[$1]; }
+;
+
+encaps_var:
+ plain_variable { $$ = $1; }
+ | plain_variable '[' encaps_var_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | plain_variable T_OBJECT_OPERATOR identifier { $$ = Expr\PropertyFetch[$1, $3]; }
+ | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { $$ = Expr\Variable[$2]; }
+ | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { $$ = Expr\Variable[$2]; }
+ | T_DOLLAR_OPEN_CURLY_BRACES encaps_str_varname '[' expr ']' '}'
+ { $$ = Expr\ArrayDimFetch[$2, $4]; }
+ | T_CURLY_OPEN variable '}' { $$ = $2; }
+;
+
+encaps_var_offset:
+ T_STRING { $$ = Scalar\String_[$1]; }
+ | T_NUM_STRING { $$ = $this->parseNumString($1, attributes()); }
+ | plain_variable { $$ = $1; }
+;
+
+%%
diff --git a/vendor/nikic/php-parser/grammar/php7.y b/vendor/nikic/php-parser/grammar/php7.y
new file mode 100644
index 000000000..eac68d095
--- /dev/null
+++ b/vendor/nikic/php-parser/grammar/php7.y
@@ -0,0 +1,1196 @@
+%pure_parser
+%expect 2
+
+%tokens
+
+%%
+
+start:
+ top_statement_list { $$ = $this->handleNamespaces($1); }
+;
+
+top_statement_list_ex:
+ top_statement_list_ex top_statement { pushNormalizing($1, $2); }
+ | /* empty */ { init(); }
+;
+
+top_statement_list:
+ top_statement_list_ex
+ { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
+ if ($nop !== null) { $1[] = $nop; } $$ = $1; }
+;
+
+ampersand:
+ T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
+ | T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG
+;
+
+reserved_non_modifiers:
+ T_INCLUDE | T_INCLUDE_ONCE | T_EVAL | T_REQUIRE | T_REQUIRE_ONCE | T_LOGICAL_OR | T_LOGICAL_XOR | T_LOGICAL_AND
+ | T_INSTANCEOF | T_NEW | T_CLONE | T_EXIT | T_IF | T_ELSEIF | T_ELSE | T_ENDIF | T_ECHO | T_DO | T_WHILE
+ | T_ENDWHILE | T_FOR | T_ENDFOR | T_FOREACH | T_ENDFOREACH | T_DECLARE | T_ENDDECLARE | T_AS | T_TRY | T_CATCH
+ | T_FINALLY | T_THROW | T_USE | T_INSTEADOF | T_GLOBAL | T_VAR | T_UNSET | T_ISSET | T_EMPTY | T_CONTINUE | T_GOTO
+ | T_FUNCTION | T_CONST | T_RETURN | T_PRINT | T_YIELD | T_LIST | T_SWITCH | T_ENDSWITCH | T_CASE | T_DEFAULT
+ | T_BREAK | T_ARRAY | T_CALLABLE | T_EXTENDS | T_IMPLEMENTS | T_NAMESPACE | T_TRAIT | T_INTERFACE | T_CLASS
+ | T_CLASS_C | T_TRAIT_C | T_FUNC_C | T_METHOD_C | T_LINE | T_FILE | T_DIR | T_NS_C | T_HALT_COMPILER | T_FN
+ | T_MATCH | T_ENUM
+;
+
+semi_reserved:
+ reserved_non_modifiers
+ | T_STATIC | T_ABSTRACT | T_FINAL | T_PRIVATE | T_PROTECTED | T_PUBLIC | T_READONLY
+;
+
+identifier_maybe_reserved:
+ T_STRING { $$ = Node\Identifier[$1]; }
+ | semi_reserved { $$ = Node\Identifier[$1]; }
+;
+
+identifier_not_reserved:
+ T_STRING { $$ = Node\Identifier[$1]; }
+;
+
+reserved_non_modifiers_identifier:
+ reserved_non_modifiers { $$ = Node\Identifier[$1]; }
+;
+
+namespace_declaration_name:
+ T_STRING { $$ = Name[$1]; }
+ | semi_reserved { $$ = Name[$1]; }
+ | T_NAME_QUALIFIED { $$ = Name[$1]; }
+;
+
+namespace_name:
+ T_STRING { $$ = Name[$1]; }
+ | T_NAME_QUALIFIED { $$ = Name[$1]; }
+;
+
+legacy_namespace_name:
+ namespace_name { $$ = $1; }
+ | T_NAME_FULLY_QUALIFIED { $$ = Name[substr($1, 1)]; }
+;
+
+plain_variable:
+ T_VARIABLE { $$ = Expr\Variable[parseVar($1)]; }
+;
+
+semi:
+ ';' { /* nothing */ }
+ | error { /* nothing */ }
+;
+
+no_comma:
+ /* empty */ { /* nothing */ }
+ | ',' { $this->emitError(new Error('A trailing comma is not allowed here', attributes())); }
+;
+
+optional_comma:
+ /* empty */
+ | ','
+;
+
+attribute_decl:
+ class_name { $$ = Node\Attribute[$1, []]; }
+ | class_name argument_list { $$ = Node\Attribute[$1, $2]; }
+;
+
+attribute_group:
+ attribute_decl { init($1); }
+ | attribute_group ',' attribute_decl { push($1, $3); }
+;
+
+attribute:
+ T_ATTRIBUTE attribute_group optional_comma ']' { $$ = Node\AttributeGroup[$2]; }
+;
+
+attributes:
+ attribute { init($1); }
+ | attributes attribute { push($1, $2); }
+;
+
+optional_attributes:
+ /* empty */ { $$ = []; }
+ | attributes { $$ = $1; }
+;
+
+top_statement:
+ statement { $$ = $1; }
+ | function_declaration_statement { $$ = $1; }
+ | class_declaration_statement { $$ = $1; }
+ | T_HALT_COMPILER
+ { $$ = Stmt\HaltCompiler[$this->lexer->handleHaltCompiler()]; }
+ | T_NAMESPACE namespace_declaration_name semi
+ { $$ = Stmt\Namespace_[$2, null];
+ $$->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
+ $this->checkNamespace($$); }
+ | T_NAMESPACE namespace_declaration_name '{' top_statement_list '}'
+ { $$ = Stmt\Namespace_[$2, $4];
+ $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
+ $this->checkNamespace($$); }
+ | T_NAMESPACE '{' top_statement_list '}'
+ { $$ = Stmt\Namespace_[null, $3];
+ $$->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
+ $this->checkNamespace($$); }
+ | T_USE use_declarations semi { $$ = Stmt\Use_[$2, Stmt\Use_::TYPE_NORMAL]; }
+ | T_USE use_type use_declarations semi { $$ = Stmt\Use_[$3, $2]; }
+ | group_use_declaration semi { $$ = $1; }
+ | T_CONST constant_declaration_list semi { $$ = Stmt\Const_[$2]; }
+;
+
+use_type:
+ T_FUNCTION { $$ = Stmt\Use_::TYPE_FUNCTION; }
+ | T_CONST { $$ = Stmt\Use_::TYPE_CONSTANT; }
+;
+
+group_use_declaration:
+ T_USE use_type legacy_namespace_name T_NS_SEPARATOR '{' unprefixed_use_declarations '}'
+ { $$ = Stmt\GroupUse[$3, $6, $2]; }
+ | T_USE legacy_namespace_name T_NS_SEPARATOR '{' inline_use_declarations '}'
+ { $$ = Stmt\GroupUse[$2, $5, Stmt\Use_::TYPE_UNKNOWN]; }
+;
+
+unprefixed_use_declarations:
+ non_empty_unprefixed_use_declarations optional_comma { $$ = $1; }
+;
+
+non_empty_unprefixed_use_declarations:
+ non_empty_unprefixed_use_declarations ',' unprefixed_use_declaration
+ { push($1, $3); }
+ | unprefixed_use_declaration { init($1); }
+;
+
+use_declarations:
+ non_empty_use_declarations no_comma { $$ = $1; }
+;
+
+non_empty_use_declarations:
+ non_empty_use_declarations ',' use_declaration { push($1, $3); }
+ | use_declaration { init($1); }
+;
+
+inline_use_declarations:
+ non_empty_inline_use_declarations optional_comma { $$ = $1; }
+;
+
+non_empty_inline_use_declarations:
+ non_empty_inline_use_declarations ',' inline_use_declaration
+ { push($1, $3); }
+ | inline_use_declaration { init($1); }
+;
+
+unprefixed_use_declaration:
+ namespace_name
+ { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
+ | namespace_name T_AS identifier_not_reserved
+ { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
+;
+
+use_declaration:
+ legacy_namespace_name
+ { $$ = Stmt\UseUse[$1, null, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #1); }
+ | legacy_namespace_name T_AS identifier_not_reserved
+ { $$ = Stmt\UseUse[$1, $3, Stmt\Use_::TYPE_UNKNOWN]; $this->checkUseUse($$, #3); }
+;
+
+inline_use_declaration:
+ unprefixed_use_declaration { $$ = $1; $$->type = Stmt\Use_::TYPE_NORMAL; }
+ | use_type unprefixed_use_declaration { $$ = $2; $$->type = $1; }
+;
+
+constant_declaration_list:
+ non_empty_constant_declaration_list no_comma { $$ = $1; }
+;
+
+non_empty_constant_declaration_list:
+ non_empty_constant_declaration_list ',' constant_declaration
+ { push($1, $3); }
+ | constant_declaration { init($1); }
+;
+
+constant_declaration:
+ identifier_not_reserved '=' expr { $$ = Node\Const_[$1, $3]; }
+;
+
+class_const_list:
+ non_empty_class_const_list no_comma { $$ = $1; }
+;
+
+non_empty_class_const_list:
+ non_empty_class_const_list ',' class_const { push($1, $3); }
+ | class_const { init($1); }
+;
+
+class_const:
+ identifier_maybe_reserved '=' expr { $$ = Node\Const_[$1, $3]; }
+;
+
+inner_statement_list_ex:
+ inner_statement_list_ex inner_statement { pushNormalizing($1, $2); }
+ | /* empty */ { init(); }
+;
+
+inner_statement_list:
+ inner_statement_list_ex
+ { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
+ if ($nop !== null) { $1[] = $nop; } $$ = $1; }
+;
+
+inner_statement:
+ statement { $$ = $1; }
+ | function_declaration_statement { $$ = $1; }
+ | class_declaration_statement { $$ = $1; }
+ | T_HALT_COMPILER
+ { throw new Error('__HALT_COMPILER() can only be used from the outermost scope', attributes()); }
+;
+
+non_empty_statement:
+ '{' inner_statement_list '}'
+ {
+ if ($2) {
+ $$ = $2; prependLeadingComments($$);
+ } else {
+ makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
+ if (null === $$) { $$ = array(); }
+ }
+ }
+ | T_IF '(' expr ')' statement elseif_list else_single
+ { $$ = Stmt\If_[$3, ['stmts' => toArray($5), 'elseifs' => $6, 'else' => $7]]; }
+ | T_IF '(' expr ')' ':' inner_statement_list new_elseif_list new_else_single T_ENDIF ';'
+ { $$ = Stmt\If_[$3, ['stmts' => $6, 'elseifs' => $7, 'else' => $8]]; }
+ | T_WHILE '(' expr ')' while_statement { $$ = Stmt\While_[$3, $5]; }
+ | T_DO statement T_WHILE '(' expr ')' ';' { $$ = Stmt\Do_ [$5, toArray($2)]; }
+ | T_FOR '(' for_expr ';' for_expr ';' for_expr ')' for_statement
+ { $$ = Stmt\For_[['init' => $3, 'cond' => $5, 'loop' => $7, 'stmts' => $9]]; }
+ | T_SWITCH '(' expr ')' switch_case_list { $$ = Stmt\Switch_[$3, $5]; }
+ | T_BREAK optional_expr semi { $$ = Stmt\Break_[$2]; }
+ | T_CONTINUE optional_expr semi { $$ = Stmt\Continue_[$2]; }
+ | T_RETURN optional_expr semi { $$ = Stmt\Return_[$2]; }
+ | T_GLOBAL global_var_list semi { $$ = Stmt\Global_[$2]; }
+ | T_STATIC static_var_list semi { $$ = Stmt\Static_[$2]; }
+ | T_ECHO expr_list_forbid_comma semi { $$ = Stmt\Echo_[$2]; }
+ | T_INLINE_HTML { $$ = Stmt\InlineHTML[$1]; }
+ | expr semi {
+ $e = $1;
+ if ($e instanceof Expr\Throw_) {
+ // For backwards-compatibility reasons, convert throw in statement position into
+ // Stmt\Throw_ rather than Stmt\Expression(Expr\Throw_).
+ $$ = Stmt\Throw_[$e->expr];
+ } else {
+ $$ = Stmt\Expression[$e];
+ }
+ }
+ | T_UNSET '(' variables_list ')' semi { $$ = Stmt\Unset_[$3]; }
+ | T_FOREACH '(' expr T_AS foreach_variable ')' foreach_statement
+ { $$ = Stmt\Foreach_[$3, $5[0], ['keyVar' => null, 'byRef' => $5[1], 'stmts' => $7]]; }
+ | T_FOREACH '(' expr T_AS variable T_DOUBLE_ARROW foreach_variable ')' foreach_statement
+ { $$ = Stmt\Foreach_[$3, $7[0], ['keyVar' => $5, 'byRef' => $7[1], 'stmts' => $9]]; }
+ | T_FOREACH '(' expr error ')' foreach_statement
+ { $$ = Stmt\Foreach_[$3, new Expr\Error(stackAttributes(#4)), ['stmts' => $6]]; }
+ | T_DECLARE '(' declare_list ')' declare_statement { $$ = Stmt\Declare_[$3, $5]; }
+ | T_TRY '{' inner_statement_list '}' catches optional_finally
+ { $$ = Stmt\TryCatch[$3, $5, $6]; $this->checkTryCatch($$); }
+ | T_GOTO identifier_not_reserved semi { $$ = Stmt\Goto_[$2]; }
+ | identifier_not_reserved ':' { $$ = Stmt\Label[$1]; }
+ | error { $$ = array(); /* means: no statement */ }
+;
+
+statement:
+ non_empty_statement { $$ = $1; }
+ | ';'
+ { makeNop($$, $this->startAttributeStack[#1], $this->endAttributes);
+ if ($$ === null) $$ = array(); /* means: no statement */ }
+;
+
+catches:
+ /* empty */ { init(); }
+ | catches catch { push($1, $2); }
+;
+
+name_union:
+ name { init($1); }
+ | name_union '|' name { push($1, $3); }
+;
+
+catch:
+ T_CATCH '(' name_union optional_plain_variable ')' '{' inner_statement_list '}'
+ { $$ = Stmt\Catch_[$3, $4, $7]; }
+;
+
+optional_finally:
+ /* empty */ { $$ = null; }
+ | T_FINALLY '{' inner_statement_list '}' { $$ = Stmt\Finally_[$3]; }
+;
+
+variables_list:
+ non_empty_variables_list optional_comma { $$ = $1; }
+;
+
+non_empty_variables_list:
+ variable { init($1); }
+ | non_empty_variables_list ',' variable { push($1, $3); }
+;
+
+optional_ref:
+ /* empty */ { $$ = false; }
+ | ampersand { $$ = true; }
+;
+
+optional_arg_ref:
+ /* empty */ { $$ = false; }
+ | T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG { $$ = true; }
+;
+
+optional_ellipsis:
+ /* empty */ { $$ = false; }
+ | T_ELLIPSIS { $$ = true; }
+;
+
+block_or_error:
+ '{' inner_statement_list '}' { $$ = $2; }
+ | error { $$ = []; }
+;
+
+function_declaration_statement:
+ T_FUNCTION optional_ref identifier_not_reserved '(' parameter_list ')' optional_return_type block_or_error
+ { $$ = Stmt\Function_[$3, ['byRef' => $2, 'params' => $5, 'returnType' => $7, 'stmts' => $8, 'attrGroups' => []]]; }
+ | attributes T_FUNCTION optional_ref identifier_not_reserved '(' parameter_list ')' optional_return_type block_or_error
+ { $$ = Stmt\Function_[$4, ['byRef' => $3, 'params' => $6, 'returnType' => $8, 'stmts' => $9, 'attrGroups' => $1]]; }
+;
+
+class_declaration_statement:
+ optional_attributes class_entry_type identifier_not_reserved extends_from implements_list '{' class_statement_list '}'
+ { $$ = Stmt\Class_[$3, ['type' => $2, 'extends' => $4, 'implements' => $5, 'stmts' => $7, 'attrGroups' => $1]];
+ $this->checkClass($$, #3); }
+ | optional_attributes T_INTERFACE identifier_not_reserved interface_extends_list '{' class_statement_list '}'
+ { $$ = Stmt\Interface_[$3, ['extends' => $4, 'stmts' => $6, 'attrGroups' => $1]];
+ $this->checkInterface($$, #3); }
+ | optional_attributes T_TRAIT identifier_not_reserved '{' class_statement_list '}'
+ { $$ = Stmt\Trait_[$3, ['stmts' => $5, 'attrGroups' => $1]]; }
+ | optional_attributes T_ENUM identifier_not_reserved enum_scalar_type implements_list '{' class_statement_list '}'
+ { $$ = Stmt\Enum_[$3, ['scalarType' => $4, 'implements' => $5, 'stmts' => $7, 'attrGroups' => $1]];
+ $this->checkEnum($$, #3); }
+;
+
+enum_scalar_type:
+ /* empty */ { $$ = null; }
+ | ':' type { $$ = $2; }
+
+enum_case_expr:
+ /* empty */ { $$ = null; }
+ | '=' expr { $$ = $2; }
+;
+
+class_entry_type:
+ T_CLASS { $$ = 0; }
+ | T_ABSTRACT T_CLASS { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
+ | T_FINAL T_CLASS { $$ = Stmt\Class_::MODIFIER_FINAL; }
+;
+
+extends_from:
+ /* empty */ { $$ = null; }
+ | T_EXTENDS class_name { $$ = $2; }
+;
+
+interface_extends_list:
+ /* empty */ { $$ = array(); }
+ | T_EXTENDS class_name_list { $$ = $2; }
+;
+
+implements_list:
+ /* empty */ { $$ = array(); }
+ | T_IMPLEMENTS class_name_list { $$ = $2; }
+;
+
+class_name_list:
+ non_empty_class_name_list no_comma { $$ = $1; }
+;
+
+non_empty_class_name_list:
+ class_name { init($1); }
+ | non_empty_class_name_list ',' class_name { push($1, $3); }
+;
+
+for_statement:
+ statement { $$ = toArray($1); }
+ | ':' inner_statement_list T_ENDFOR ';' { $$ = $2; }
+;
+
+foreach_statement:
+ statement { $$ = toArray($1); }
+ | ':' inner_statement_list T_ENDFOREACH ';' { $$ = $2; }
+;
+
+declare_statement:
+ non_empty_statement { $$ = toArray($1); }
+ | ';' { $$ = null; }
+ | ':' inner_statement_list T_ENDDECLARE ';' { $$ = $2; }
+;
+
+declare_list:
+ non_empty_declare_list no_comma { $$ = $1; }
+;
+
+non_empty_declare_list:
+ declare_list_element { init($1); }
+ | non_empty_declare_list ',' declare_list_element { push($1, $3); }
+;
+
+declare_list_element:
+ identifier_not_reserved '=' expr { $$ = Stmt\DeclareDeclare[$1, $3]; }
+;
+
+switch_case_list:
+ '{' case_list '}' { $$ = $2; }
+ | '{' ';' case_list '}' { $$ = $3; }
+ | ':' case_list T_ENDSWITCH ';' { $$ = $2; }
+ | ':' ';' case_list T_ENDSWITCH ';' { $$ = $3; }
+;
+
+case_list:
+ /* empty */ { init(); }
+ | case_list case { push($1, $2); }
+;
+
+case:
+ T_CASE expr case_separator inner_statement_list_ex { $$ = Stmt\Case_[$2, $4]; }
+ | T_DEFAULT case_separator inner_statement_list_ex { $$ = Stmt\Case_[null, $3]; }
+;
+
+case_separator:
+ ':'
+ | ';'
+;
+
+match:
+ T_MATCH '(' expr ')' '{' match_arm_list '}' { $$ = Expr\Match_[$3, $6]; }
+;
+
+match_arm_list:
+ /* empty */ { $$ = []; }
+ | non_empty_match_arm_list optional_comma { $$ = $1; }
+;
+
+non_empty_match_arm_list:
+ match_arm { init($1); }
+ | non_empty_match_arm_list ',' match_arm { push($1, $3); }
+;
+
+match_arm:
+ expr_list_allow_comma T_DOUBLE_ARROW expr { $$ = Node\MatchArm[$1, $3]; }
+ | T_DEFAULT optional_comma T_DOUBLE_ARROW expr { $$ = Node\MatchArm[null, $4]; }
+;
+
+while_statement:
+ statement { $$ = toArray($1); }
+ | ':' inner_statement_list T_ENDWHILE ';' { $$ = $2; }
+;
+
+elseif_list:
+ /* empty */ { init(); }
+ | elseif_list elseif { push($1, $2); }
+;
+
+elseif:
+ T_ELSEIF '(' expr ')' statement { $$ = Stmt\ElseIf_[$3, toArray($5)]; }
+;
+
+new_elseif_list:
+ /* empty */ { init(); }
+ | new_elseif_list new_elseif { push($1, $2); }
+;
+
+new_elseif:
+ T_ELSEIF '(' expr ')' ':' inner_statement_list { $$ = Stmt\ElseIf_[$3, $6]; }
+;
+
+else_single:
+ /* empty */ { $$ = null; }
+ | T_ELSE statement { $$ = Stmt\Else_[toArray($2)]; }
+;
+
+new_else_single:
+ /* empty */ { $$ = null; }
+ | T_ELSE ':' inner_statement_list { $$ = Stmt\Else_[$3]; }
+;
+
+foreach_variable:
+ variable { $$ = array($1, false); }
+ | ampersand variable { $$ = array($2, true); }
+ | list_expr { $$ = array($1, false); }
+ | array_short_syntax { $$ = array($1, false); }
+;
+
+parameter_list:
+ non_empty_parameter_list optional_comma { $$ = $1; }
+ | /* empty */ { $$ = array(); }
+;
+
+non_empty_parameter_list:
+ parameter { init($1); }
+ | non_empty_parameter_list ',' parameter { push($1, $3); }
+;
+
+optional_property_modifiers:
+ /* empty */ { $$ = 0; }
+ | optional_property_modifiers property_modifier
+ { $this->checkModifier($1, $2, #2); $$ = $1 | $2; }
+;
+
+property_modifier:
+ T_PUBLIC { $$ = Stmt\Class_::MODIFIER_PUBLIC; }
+ | T_PROTECTED { $$ = Stmt\Class_::MODIFIER_PROTECTED; }
+ | T_PRIVATE { $$ = Stmt\Class_::MODIFIER_PRIVATE; }
+ | T_READONLY { $$ = Stmt\Class_::MODIFIER_READONLY; }
+;
+
+parameter:
+ optional_attributes optional_property_modifiers optional_type_without_static
+ optional_arg_ref optional_ellipsis plain_variable
+ { $$ = new Node\Param($6, null, $3, $4, $5, attributes(), $2, $1);
+ $this->checkParam($$); }
+ | optional_attributes optional_property_modifiers optional_type_without_static
+ optional_arg_ref optional_ellipsis plain_variable '=' expr
+ { $$ = new Node\Param($6, $8, $3, $4, $5, attributes(), $2, $1);
+ $this->checkParam($$); }
+ | optional_attributes optional_property_modifiers optional_type_without_static
+ optional_arg_ref optional_ellipsis error
+ { $$ = new Node\Param(Expr\Error[], null, $3, $4, $5, attributes(), $2, $1); }
+;
+
+type_expr:
+ type { $$ = $1; }
+ | '?' type { $$ = Node\NullableType[$2]; }
+ | union_type { $$ = Node\UnionType[$1]; }
+ | intersection_type { $$ = Node\IntersectionType[$1]; }
+;
+
+type:
+ type_without_static { $$ = $1; }
+ | T_STATIC { $$ = Node\Name['static']; }
+;
+
+type_without_static:
+ name { $$ = $this->handleBuiltinTypes($1); }
+ | T_ARRAY { $$ = Node\Identifier['array']; }
+ | T_CALLABLE { $$ = Node\Identifier['callable']; }
+;
+
+union_type:
+ type '|' type { init($1, $3); }
+ | union_type '|' type { push($1, $3); }
+;
+
+union_type_without_static:
+ type_without_static '|' type_without_static { init($1, $3); }
+ | union_type_without_static '|' type_without_static { push($1, $3); }
+;
+
+intersection_type:
+ type T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type { init($1, $3); }
+ | intersection_type T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type
+ { push($1, $3); }
+;
+
+intersection_type_without_static:
+ type_without_static T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static
+ { init($1, $3); }
+ | intersection_type_without_static T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG type_without_static
+ { push($1, $3); }
+;
+
+type_expr_without_static:
+ type_without_static { $$ = $1; }
+ | '?' type_without_static { $$ = Node\NullableType[$2]; }
+ | union_type_without_static { $$ = Node\UnionType[$1]; }
+ | intersection_type_without_static { $$ = Node\IntersectionType[$1]; }
+;
+
+optional_type_without_static:
+ /* empty */ { $$ = null; }
+ | type_expr_without_static { $$ = $1; }
+;
+
+optional_return_type:
+ /* empty */ { $$ = null; }
+ | ':' type_expr { $$ = $2; }
+ | ':' error { $$ = null; }
+;
+
+argument_list:
+ '(' ')' { $$ = array(); }
+ | '(' non_empty_argument_list optional_comma ')' { $$ = $2; }
+ | '(' variadic_placeholder ')' { init($2); }
+;
+
+variadic_placeholder:
+ T_ELLIPSIS { $$ = Node\VariadicPlaceholder[]; }
+;
+
+non_empty_argument_list:
+ argument { init($1); }
+ | non_empty_argument_list ',' argument { push($1, $3); }
+;
+
+argument:
+ expr { $$ = Node\Arg[$1, false, false]; }
+ | ampersand variable { $$ = Node\Arg[$2, true, false]; }
+ | T_ELLIPSIS expr { $$ = Node\Arg[$2, false, true]; }
+ | identifier_maybe_reserved ':' expr
+ { $$ = new Node\Arg($3, false, false, attributes(), $1); }
+;
+
+global_var_list:
+ non_empty_global_var_list no_comma { $$ = $1; }
+;
+
+non_empty_global_var_list:
+ non_empty_global_var_list ',' global_var { push($1, $3); }
+ | global_var { init($1); }
+;
+
+global_var:
+ simple_variable { $$ = $1; }
+;
+
+static_var_list:
+ non_empty_static_var_list no_comma { $$ = $1; }
+;
+
+non_empty_static_var_list:
+ non_empty_static_var_list ',' static_var { push($1, $3); }
+ | static_var { init($1); }
+;
+
+static_var:
+ plain_variable { $$ = Stmt\StaticVar[$1, null]; }
+ | plain_variable '=' expr { $$ = Stmt\StaticVar[$1, $3]; }
+;
+
+class_statement_list_ex:
+ class_statement_list_ex class_statement { if ($2 !== null) { push($1, $2); } }
+ | /* empty */ { init(); }
+;
+
+class_statement_list:
+ class_statement_list_ex
+ { makeZeroLengthNop($nop, $this->lookaheadStartAttributes);
+ if ($nop !== null) { $1[] = $nop; } $$ = $1; }
+;
+
+class_statement:
+ optional_attributes variable_modifiers optional_type_without_static property_declaration_list semi
+ { $$ = new Stmt\Property($2, $4, attributes(), $3, $1);
+ $this->checkProperty($$, #2); }
+ | optional_attributes method_modifiers T_CONST class_const_list semi
+ { $$ = new Stmt\ClassConst($4, $2, attributes(), $1);
+ $this->checkClassConst($$, #2); }
+ | optional_attributes method_modifiers T_FUNCTION optional_ref identifier_maybe_reserved '(' parameter_list ')'
+ optional_return_type method_body
+ { $$ = Stmt\ClassMethod[$5, ['type' => $2, 'byRef' => $4, 'params' => $7, 'returnType' => $9, 'stmts' => $10, 'attrGroups' => $1]];
+ $this->checkClassMethod($$, #2); }
+ | T_USE class_name_list trait_adaptations { $$ = Stmt\TraitUse[$2, $3]; }
+ | optional_attributes T_CASE identifier_maybe_reserved enum_case_expr semi
+ { $$ = Stmt\EnumCase[$3, $4, $1]; }
+ | error { $$ = null; /* will be skipped */ }
+;
+
+trait_adaptations:
+ ';' { $$ = array(); }
+ | '{' trait_adaptation_list '}' { $$ = $2; }
+;
+
+trait_adaptation_list:
+ /* empty */ { init(); }
+ | trait_adaptation_list trait_adaptation { push($1, $2); }
+;
+
+trait_adaptation:
+ trait_method_reference_fully_qualified T_INSTEADOF class_name_list ';'
+ { $$ = Stmt\TraitUseAdaptation\Precedence[$1[0], $1[1], $3]; }
+ | trait_method_reference T_AS member_modifier identifier_maybe_reserved ';'
+ { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], $3, $4]; }
+ | trait_method_reference T_AS member_modifier ';'
+ { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], $3, null]; }
+ | trait_method_reference T_AS identifier_not_reserved ';'
+ { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], null, $3]; }
+ | trait_method_reference T_AS reserved_non_modifiers_identifier ';'
+ { $$ = Stmt\TraitUseAdaptation\Alias[$1[0], $1[1], null, $3]; }
+;
+
+trait_method_reference_fully_qualified:
+ name T_PAAMAYIM_NEKUDOTAYIM identifier_maybe_reserved { $$ = array($1, $3); }
+;
+trait_method_reference:
+ trait_method_reference_fully_qualified { $$ = $1; }
+ | identifier_maybe_reserved { $$ = array(null, $1); }
+;
+
+method_body:
+ ';' /* abstract method */ { $$ = null; }
+ | block_or_error { $$ = $1; }
+;
+
+variable_modifiers:
+ non_empty_member_modifiers { $$ = $1; }
+ | T_VAR { $$ = 0; }
+;
+
+method_modifiers:
+ /* empty */ { $$ = 0; }
+ | non_empty_member_modifiers { $$ = $1; }
+;
+
+non_empty_member_modifiers:
+ member_modifier { $$ = $1; }
+ | non_empty_member_modifiers member_modifier { $this->checkModifier($1, $2, #2); $$ = $1 | $2; }
+;
+
+member_modifier:
+ T_PUBLIC { $$ = Stmt\Class_::MODIFIER_PUBLIC; }
+ | T_PROTECTED { $$ = Stmt\Class_::MODIFIER_PROTECTED; }
+ | T_PRIVATE { $$ = Stmt\Class_::MODIFIER_PRIVATE; }
+ | T_STATIC { $$ = Stmt\Class_::MODIFIER_STATIC; }
+ | T_ABSTRACT { $$ = Stmt\Class_::MODIFIER_ABSTRACT; }
+ | T_FINAL { $$ = Stmt\Class_::MODIFIER_FINAL; }
+ | T_READONLY { $$ = Stmt\Class_::MODIFIER_READONLY; }
+;
+
+property_declaration_list:
+ non_empty_property_declaration_list no_comma { $$ = $1; }
+;
+
+non_empty_property_declaration_list:
+ property_declaration { init($1); }
+ | non_empty_property_declaration_list ',' property_declaration
+ { push($1, $3); }
+;
+
+property_decl_name:
+ T_VARIABLE { $$ = Node\VarLikeIdentifier[parseVar($1)]; }
+;
+
+property_declaration:
+ property_decl_name { $$ = Stmt\PropertyProperty[$1, null]; }
+ | property_decl_name '=' expr { $$ = Stmt\PropertyProperty[$1, $3]; }
+;
+
+expr_list_forbid_comma:
+ non_empty_expr_list no_comma { $$ = $1; }
+;
+
+expr_list_allow_comma:
+ non_empty_expr_list optional_comma { $$ = $1; }
+;
+
+non_empty_expr_list:
+ non_empty_expr_list ',' expr { push($1, $3); }
+ | expr { init($1); }
+;
+
+for_expr:
+ /* empty */ { $$ = array(); }
+ | expr_list_forbid_comma { $$ = $1; }
+;
+
+expr:
+ variable { $$ = $1; }
+ | list_expr '=' expr { $$ = Expr\Assign[$1, $3]; }
+ | array_short_syntax '=' expr { $$ = Expr\Assign[$1, $3]; }
+ | variable '=' expr { $$ = Expr\Assign[$1, $3]; }
+ | variable '=' ampersand variable { $$ = Expr\AssignRef[$1, $4]; }
+ | new_expr { $$ = $1; }
+ | match { $$ = $1; }
+ | T_CLONE expr { $$ = Expr\Clone_[$2]; }
+ | variable T_PLUS_EQUAL expr { $$ = Expr\AssignOp\Plus [$1, $3]; }
+ | variable T_MINUS_EQUAL expr { $$ = Expr\AssignOp\Minus [$1, $3]; }
+ | variable T_MUL_EQUAL expr { $$ = Expr\AssignOp\Mul [$1, $3]; }
+ | variable T_DIV_EQUAL expr { $$ = Expr\AssignOp\Div [$1, $3]; }
+ | variable T_CONCAT_EQUAL expr { $$ = Expr\AssignOp\Concat [$1, $3]; }
+ | variable T_MOD_EQUAL expr { $$ = Expr\AssignOp\Mod [$1, $3]; }
+ | variable T_AND_EQUAL expr { $$ = Expr\AssignOp\BitwiseAnd[$1, $3]; }
+ | variable T_OR_EQUAL expr { $$ = Expr\AssignOp\BitwiseOr [$1, $3]; }
+ | variable T_XOR_EQUAL expr { $$ = Expr\AssignOp\BitwiseXor[$1, $3]; }
+ | variable T_SL_EQUAL expr { $$ = Expr\AssignOp\ShiftLeft [$1, $3]; }
+ | variable T_SR_EQUAL expr { $$ = Expr\AssignOp\ShiftRight[$1, $3]; }
+ | variable T_POW_EQUAL expr { $$ = Expr\AssignOp\Pow [$1, $3]; }
+ | variable T_COALESCE_EQUAL expr { $$ = Expr\AssignOp\Coalesce [$1, $3]; }
+ | variable T_INC { $$ = Expr\PostInc[$1]; }
+ | T_INC variable { $$ = Expr\PreInc [$2]; }
+ | variable T_DEC { $$ = Expr\PostDec[$1]; }
+ | T_DEC variable { $$ = Expr\PreDec [$2]; }
+ | expr T_BOOLEAN_OR expr { $$ = Expr\BinaryOp\BooleanOr [$1, $3]; }
+ | expr T_BOOLEAN_AND expr { $$ = Expr\BinaryOp\BooleanAnd[$1, $3]; }
+ | expr T_LOGICAL_OR expr { $$ = Expr\BinaryOp\LogicalOr [$1, $3]; }
+ | expr T_LOGICAL_AND expr { $$ = Expr\BinaryOp\LogicalAnd[$1, $3]; }
+ | expr T_LOGICAL_XOR expr { $$ = Expr\BinaryOp\LogicalXor[$1, $3]; }
+ | expr '|' expr { $$ = Expr\BinaryOp\BitwiseOr [$1, $3]; }
+ | expr T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG expr { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
+ | expr T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG expr { $$ = Expr\BinaryOp\BitwiseAnd[$1, $3]; }
+ | expr '^' expr { $$ = Expr\BinaryOp\BitwiseXor[$1, $3]; }
+ | expr '.' expr { $$ = Expr\BinaryOp\Concat [$1, $3]; }
+ | expr '+' expr { $$ = Expr\BinaryOp\Plus [$1, $3]; }
+ | expr '-' expr { $$ = Expr\BinaryOp\Minus [$1, $3]; }
+ | expr '*' expr { $$ = Expr\BinaryOp\Mul [$1, $3]; }
+ | expr '/' expr { $$ = Expr\BinaryOp\Div [$1, $3]; }
+ | expr '%' expr { $$ = Expr\BinaryOp\Mod [$1, $3]; }
+ | expr T_SL expr { $$ = Expr\BinaryOp\ShiftLeft [$1, $3]; }
+ | expr T_SR expr { $$ = Expr\BinaryOp\ShiftRight[$1, $3]; }
+ | expr T_POW expr { $$ = Expr\BinaryOp\Pow [$1, $3]; }
+ | '+' expr %prec T_INC { $$ = Expr\UnaryPlus [$2]; }
+ | '-' expr %prec T_INC { $$ = Expr\UnaryMinus[$2]; }
+ | '!' expr { $$ = Expr\BooleanNot[$2]; }
+ | '~' expr { $$ = Expr\BitwiseNot[$2]; }
+ | expr T_IS_IDENTICAL expr { $$ = Expr\BinaryOp\Identical [$1, $3]; }
+ | expr T_IS_NOT_IDENTICAL expr { $$ = Expr\BinaryOp\NotIdentical [$1, $3]; }
+ | expr T_IS_EQUAL expr { $$ = Expr\BinaryOp\Equal [$1, $3]; }
+ | expr T_IS_NOT_EQUAL expr { $$ = Expr\BinaryOp\NotEqual [$1, $3]; }
+ | expr T_SPACESHIP expr { $$ = Expr\BinaryOp\Spaceship [$1, $3]; }
+ | expr '<' expr { $$ = Expr\BinaryOp\Smaller [$1, $3]; }
+ | expr T_IS_SMALLER_OR_EQUAL expr { $$ = Expr\BinaryOp\SmallerOrEqual[$1, $3]; }
+ | expr '>' expr { $$ = Expr\BinaryOp\Greater [$1, $3]; }
+ | expr T_IS_GREATER_OR_EQUAL expr { $$ = Expr\BinaryOp\GreaterOrEqual[$1, $3]; }
+ | expr T_INSTANCEOF class_name_reference { $$ = Expr\Instanceof_[$1, $3]; }
+ | '(' expr ')' { $$ = $2; }
+ | expr '?' expr ':' expr { $$ = Expr\Ternary[$1, $3, $5]; }
+ | expr '?' ':' expr { $$ = Expr\Ternary[$1, null, $4]; }
+ | expr T_COALESCE expr { $$ = Expr\BinaryOp\Coalesce[$1, $3]; }
+ | T_ISSET '(' expr_list_allow_comma ')' { $$ = Expr\Isset_[$3]; }
+ | T_EMPTY '(' expr ')' { $$ = Expr\Empty_[$3]; }
+ | T_INCLUDE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE]; }
+ | T_INCLUDE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_INCLUDE_ONCE]; }
+ | T_EVAL '(' expr ')' { $$ = Expr\Eval_[$3]; }
+ | T_REQUIRE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE]; }
+ | T_REQUIRE_ONCE expr { $$ = Expr\Include_[$2, Expr\Include_::TYPE_REQUIRE_ONCE]; }
+ | T_INT_CAST expr { $$ = Expr\Cast\Int_ [$2]; }
+ | T_DOUBLE_CAST expr
+ { $attrs = attributes();
+ $attrs['kind'] = $this->getFloatCastKind($1);
+ $$ = new Expr\Cast\Double($2, $attrs); }
+ | T_STRING_CAST expr { $$ = Expr\Cast\String_ [$2]; }
+ | T_ARRAY_CAST expr { $$ = Expr\Cast\Array_ [$2]; }
+ | T_OBJECT_CAST expr { $$ = Expr\Cast\Object_ [$2]; }
+ | T_BOOL_CAST expr { $$ = Expr\Cast\Bool_ [$2]; }
+ | T_UNSET_CAST expr { $$ = Expr\Cast\Unset_ [$2]; }
+ | T_EXIT exit_expr
+ { $attrs = attributes();
+ $attrs['kind'] = strtolower($1) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
+ $$ = new Expr\Exit_($2, $attrs); }
+ | '@' expr { $$ = Expr\ErrorSuppress[$2]; }
+ | scalar { $$ = $1; }
+ | '`' backticks_expr '`' { $$ = Expr\ShellExec[$2]; }
+ | T_PRINT expr { $$ = Expr\Print_[$2]; }
+ | T_YIELD { $$ = Expr\Yield_[null, null]; }
+ | T_YIELD expr { $$ = Expr\Yield_[$2, null]; }
+ | T_YIELD expr T_DOUBLE_ARROW expr { $$ = Expr\Yield_[$4, $2]; }
+ | T_YIELD_FROM expr { $$ = Expr\YieldFrom[$2]; }
+ | T_THROW expr { $$ = Expr\Throw_[$2]; }
+
+ | T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr %prec T_THROW
+ { $$ = Expr\ArrowFunction[['static' => false, 'byRef' => $2, 'params' => $4, 'returnType' => $6, 'expr' => $8, 'attrGroups' => []]]; }
+ | T_STATIC T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr %prec T_THROW
+ { $$ = Expr\ArrowFunction[['static' => true, 'byRef' => $3, 'params' => $5, 'returnType' => $7, 'expr' => $9, 'attrGroups' => []]]; }
+ | T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type block_or_error
+ { $$ = Expr\Closure[['static' => false, 'byRef' => $2, 'params' => $4, 'uses' => $6, 'returnType' => $7, 'stmts' => $8, 'attrGroups' => []]]; }
+ | T_STATIC T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type block_or_error
+ { $$ = Expr\Closure[['static' => true, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $9, 'attrGroups' => []]]; }
+
+ | attributes T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr %prec T_THROW
+ { $$ = Expr\ArrowFunction[['static' => false, 'byRef' => $3, 'params' => $5, 'returnType' => $7, 'expr' => $9, 'attrGroups' => $1]]; }
+ | attributes T_STATIC T_FN optional_ref '(' parameter_list ')' optional_return_type T_DOUBLE_ARROW expr %prec T_THROW
+ { $$ = Expr\ArrowFunction[['static' => true, 'byRef' => $4, 'params' => $6, 'returnType' => $8, 'expr' => $10, 'attrGroups' => $1]]; }
+ | attributes T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type block_or_error
+ { $$ = Expr\Closure[['static' => false, 'byRef' => $3, 'params' => $5, 'uses' => $7, 'returnType' => $8, 'stmts' => $9, 'attrGroups' => $1]]; }
+ | attributes T_STATIC T_FUNCTION optional_ref '(' parameter_list ')' lexical_vars optional_return_type block_or_error
+ { $$ = Expr\Closure[['static' => true, 'byRef' => $4, 'params' => $6, 'uses' => $8, 'returnType' => $9, 'stmts' => $10, 'attrGroups' => $1]]; }
+;
+
+anonymous_class:
+ optional_attributes T_CLASS ctor_arguments extends_from implements_list '{' class_statement_list '}'
+ { $$ = array(Stmt\Class_[null, ['type' => 0, 'extends' => $4, 'implements' => $5, 'stmts' => $7, 'attrGroups' => $1]], $3);
+ $this->checkClass($$[0], -1); }
+;
+
+new_expr:
+ T_NEW class_name_reference ctor_arguments { $$ = Expr\New_[$2, $3]; }
+ | T_NEW anonymous_class
+ { list($class, $ctorArgs) = $2; $$ = Expr\New_[$class, $ctorArgs]; }
+;
+
+lexical_vars:
+ /* empty */ { $$ = array(); }
+ | T_USE '(' lexical_var_list ')' { $$ = $3; }
+;
+
+lexical_var_list:
+ non_empty_lexical_var_list optional_comma { $$ = $1; }
+;
+
+non_empty_lexical_var_list:
+ lexical_var { init($1); }
+ | non_empty_lexical_var_list ',' lexical_var { push($1, $3); }
+;
+
+lexical_var:
+ optional_ref plain_variable { $$ = Expr\ClosureUse[$2, $1]; }
+;
+
+function_call:
+ name argument_list { $$ = Expr\FuncCall[$1, $2]; }
+ | callable_expr argument_list { $$ = Expr\FuncCall[$1, $2]; }
+ | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM member_name argument_list
+ { $$ = Expr\StaticCall[$1, $3, $4]; }
+;
+
+class_name:
+ T_STATIC { $$ = Name[$1]; }
+ | name { $$ = $1; }
+;
+
+name:
+ T_STRING { $$ = Name[$1]; }
+ | T_NAME_QUALIFIED { $$ = Name[$1]; }
+ | T_NAME_FULLY_QUALIFIED { $$ = Name\FullyQualified[substr($1, 1)]; }
+ | T_NAME_RELATIVE { $$ = Name\Relative[substr($1, 10)]; }
+;
+
+class_name_reference:
+ class_name { $$ = $1; }
+ | new_variable { $$ = $1; }
+ | '(' expr ')' { $$ = $2; }
+ | error { $$ = Expr\Error[]; $this->errorState = 2; }
+;
+
+class_name_or_var:
+ class_name { $$ = $1; }
+ | fully_dereferencable { $$ = $1; }
+;
+
+exit_expr:
+ /* empty */ { $$ = null; }
+ | '(' optional_expr ')' { $$ = $2; }
+;
+
+backticks_expr:
+ /* empty */ { $$ = array(); }
+ | T_ENCAPSED_AND_WHITESPACE
+ { $$ = array(Scalar\EncapsedStringPart[Scalar\String_::parseEscapeSequences($1, '`')]); }
+ | encaps_list { parseEncapsed($1, '`', true); $$ = $1; }
+;
+
+ctor_arguments:
+ /* empty */ { $$ = array(); }
+ | argument_list { $$ = $1; }
+;
+
+constant:
+ name { $$ = Expr\ConstFetch[$1]; }
+ | T_LINE { $$ = Scalar\MagicConst\Line[]; }
+ | T_FILE { $$ = Scalar\MagicConst\File[]; }
+ | T_DIR { $$ = Scalar\MagicConst\Dir[]; }
+ | T_CLASS_C { $$ = Scalar\MagicConst\Class_[]; }
+ | T_TRAIT_C { $$ = Scalar\MagicConst\Trait_[]; }
+ | T_METHOD_C { $$ = Scalar\MagicConst\Method[]; }
+ | T_FUNC_C { $$ = Scalar\MagicConst\Function_[]; }
+ | T_NS_C { $$ = Scalar\MagicConst\Namespace_[]; }
+;
+
+class_constant:
+ class_name_or_var T_PAAMAYIM_NEKUDOTAYIM identifier_maybe_reserved
+ { $$ = Expr\ClassConstFetch[$1, $3]; }
+ /* We interpret an isolated FOO:: as an unfinished class constant fetch. It could also be
+ an unfinished static property fetch or unfinished scoped call. */
+ | class_name_or_var T_PAAMAYIM_NEKUDOTAYIM error
+ { $$ = Expr\ClassConstFetch[$1, new Expr\Error(stackAttributes(#3))]; $this->errorState = 2; }
+;
+
+array_short_syntax:
+ '[' array_pair_list ']'
+ { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_SHORT;
+ $$ = new Expr\Array_($2, $attrs); }
+;
+
+dereferencable_scalar:
+ T_ARRAY '(' array_pair_list ')'
+ { $attrs = attributes(); $attrs['kind'] = Expr\Array_::KIND_LONG;
+ $$ = new Expr\Array_($3, $attrs); }
+ | array_short_syntax { $$ = $1; }
+ | T_CONSTANT_ENCAPSED_STRING
+ { $attrs = attributes(); $attrs['kind'] = strKind($1);
+ $$ = new Scalar\String_(Scalar\String_::parse($1), $attrs); }
+ | '"' encaps_list '"'
+ { $attrs = attributes(); $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
+ parseEncapsed($2, '"', true); $$ = new Scalar\Encapsed($2, $attrs); }
+;
+
+scalar:
+ T_LNUMBER { $$ = $this->parseLNumber($1, attributes()); }
+ | T_DNUMBER { $$ = Scalar\DNumber[Scalar\DNumber::parse($1)]; }
+ | dereferencable_scalar { $$ = $1; }
+ | constant { $$ = $1; }
+ | class_constant { $$ = $1; }
+ | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC
+ { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
+ | T_START_HEREDOC T_END_HEREDOC
+ { $$ = $this->parseDocString($1, '', $2, attributes(), stackAttributes(#2), true); }
+ | T_START_HEREDOC encaps_list T_END_HEREDOC
+ { $$ = $this->parseDocString($1, $2, $3, attributes(), stackAttributes(#3), true); }
+;
+
+optional_expr:
+ /* empty */ { $$ = null; }
+ | expr { $$ = $1; }
+;
+
+fully_dereferencable:
+ variable { $$ = $1; }
+ | '(' expr ')' { $$ = $2; }
+ | dereferencable_scalar { $$ = $1; }
+ | class_constant { $$ = $1; }
+;
+
+array_object_dereferencable:
+ fully_dereferencable { $$ = $1; }
+ | constant { $$ = $1; }
+;
+
+callable_expr:
+ callable_variable { $$ = $1; }
+ | '(' expr ')' { $$ = $2; }
+ | dereferencable_scalar { $$ = $1; }
+;
+
+callable_variable:
+ simple_variable { $$ = $1; }
+ | array_object_dereferencable '[' optional_expr ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | array_object_dereferencable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | function_call { $$ = $1; }
+ | array_object_dereferencable T_OBJECT_OPERATOR property_name argument_list
+ { $$ = Expr\MethodCall[$1, $3, $4]; }
+ | array_object_dereferencable T_NULLSAFE_OBJECT_OPERATOR property_name argument_list
+ { $$ = Expr\NullsafeMethodCall[$1, $3, $4]; }
+;
+
+optional_plain_variable:
+ /* empty */ { $$ = null; }
+ | plain_variable { $$ = $1; }
+;
+
+variable:
+ callable_variable { $$ = $1; }
+ | static_member { $$ = $1; }
+ | array_object_dereferencable T_OBJECT_OPERATOR property_name
+ { $$ = Expr\PropertyFetch[$1, $3]; }
+ | array_object_dereferencable T_NULLSAFE_OBJECT_OPERATOR property_name
+ { $$ = Expr\NullsafePropertyFetch[$1, $3]; }
+;
+
+simple_variable:
+ plain_variable { $$ = $1; }
+ | '$' '{' expr '}' { $$ = Expr\Variable[$3]; }
+ | '$' simple_variable { $$ = Expr\Variable[$2]; }
+ | '$' error { $$ = Expr\Variable[Expr\Error[]]; $this->errorState = 2; }
+;
+
+static_member_prop_name:
+ simple_variable
+ { $var = $1->name; $$ = \is_string($var) ? Node\VarLikeIdentifier[$var] : $var; }
+;
+
+static_member:
+ class_name_or_var T_PAAMAYIM_NEKUDOTAYIM static_member_prop_name
+ { $$ = Expr\StaticPropertyFetch[$1, $3]; }
+;
+
+new_variable:
+ simple_variable { $$ = $1; }
+ | new_variable '[' optional_expr ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | new_variable '{' expr '}' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | new_variable T_OBJECT_OPERATOR property_name { $$ = Expr\PropertyFetch[$1, $3]; }
+ | new_variable T_NULLSAFE_OBJECT_OPERATOR property_name { $$ = Expr\NullsafePropertyFetch[$1, $3]; }
+ | class_name T_PAAMAYIM_NEKUDOTAYIM static_member_prop_name
+ { $$ = Expr\StaticPropertyFetch[$1, $3]; }
+ | new_variable T_PAAMAYIM_NEKUDOTAYIM static_member_prop_name
+ { $$ = Expr\StaticPropertyFetch[$1, $3]; }
+;
+
+member_name:
+ identifier_maybe_reserved { $$ = $1; }
+ | '{' expr '}' { $$ = $2; }
+ | simple_variable { $$ = $1; }
+;
+
+property_name:
+ identifier_not_reserved { $$ = $1; }
+ | '{' expr '}' { $$ = $2; }
+ | simple_variable { $$ = $1; }
+ | error { $$ = Expr\Error[]; $this->errorState = 2; }
+;
+
+list_expr:
+ T_LIST '(' inner_array_pair_list ')' { $$ = Expr\List_[$3]; }
+;
+
+array_pair_list:
+ inner_array_pair_list
+ { $$ = $1; $end = count($$)-1; if ($$[$end] === null) array_pop($$); }
+;
+
+comma_or_error:
+ ','
+ | error
+ { /* do nothing -- prevent default action of $$=$1. See #551. */ }
+;
+
+inner_array_pair_list:
+ inner_array_pair_list comma_or_error array_pair { push($1, $3); }
+ | array_pair { init($1); }
+;
+
+array_pair:
+ expr { $$ = Expr\ArrayItem[$1, null, false]; }
+ | ampersand variable { $$ = Expr\ArrayItem[$2, null, true]; }
+ | list_expr { $$ = Expr\ArrayItem[$1, null, false]; }
+ | expr T_DOUBLE_ARROW expr { $$ = Expr\ArrayItem[$3, $1, false]; }
+ | expr T_DOUBLE_ARROW ampersand variable { $$ = Expr\ArrayItem[$4, $1, true]; }
+ | expr T_DOUBLE_ARROW list_expr { $$ = Expr\ArrayItem[$3, $1, false]; }
+ | T_ELLIPSIS expr { $$ = Expr\ArrayItem[$2, null, false, attributes(), true]; }
+ | /* empty */ { $$ = null; }
+;
+
+encaps_list:
+ encaps_list encaps_var { push($1, $2); }
+ | encaps_list encaps_string_part { push($1, $2); }
+ | encaps_var { init($1); }
+ | encaps_string_part encaps_var { init($1, $2); }
+;
+
+encaps_string_part:
+ T_ENCAPSED_AND_WHITESPACE { $$ = Scalar\EncapsedStringPart[$1]; }
+;
+
+encaps_str_varname:
+ T_STRING_VARNAME { $$ = Expr\Variable[$1]; }
+;
+
+encaps_var:
+ plain_variable { $$ = $1; }
+ | plain_variable '[' encaps_var_offset ']' { $$ = Expr\ArrayDimFetch[$1, $3]; }
+ | plain_variable T_OBJECT_OPERATOR identifier_not_reserved
+ { $$ = Expr\PropertyFetch[$1, $3]; }
+ | plain_variable T_NULLSAFE_OBJECT_OPERATOR identifier_not_reserved
+ { $$ = Expr\NullsafePropertyFetch[$1, $3]; }
+ | T_DOLLAR_OPEN_CURLY_BRACES expr '}' { $$ = Expr\Variable[$2]; }
+ | T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '}' { $$ = Expr\Variable[$2]; }
+ | T_DOLLAR_OPEN_CURLY_BRACES encaps_str_varname '[' expr ']' '}'
+ { $$ = Expr\ArrayDimFetch[$2, $4]; }
+ | T_CURLY_OPEN variable '}' { $$ = $2; }
+;
+
+encaps_var_offset:
+ T_STRING { $$ = Scalar\String_[$1]; }
+ | T_NUM_STRING { $$ = $this->parseNumString($1, attributes()); }
+ | '-' T_NUM_STRING { $$ = $this->parseNumString('-' . $2, attributes()); }
+ | plain_variable { $$ = $1; }
+;
+
+%%
diff --git a/vendor/nikic/php-parser/grammar/phpyLang.php b/vendor/nikic/php-parser/grammar/phpyLang.php
new file mode 100644
index 000000000..1a9808dcf
--- /dev/null
+++ b/vendor/nikic/php-parser/grammar/phpyLang.php
@@ -0,0 +1,192 @@
+<?php
+
+///////////////////////////////
+/// Utility regex constants ///
+///////////////////////////////
+
+const LIB = '(?(DEFINE)
+ (?<singleQuotedString>\'[^\\\\\']*+(?:\\\\.[^\\\\\']*+)*+\')
+ (?<doubleQuotedString>"[^\\\\"]*+(?:\\\\.[^\\\\"]*+)*+")
+ (?<string>(?&singleQuotedString)|(?&doubleQuotedString))
+ (?<comment>/\*[^*]*+(?:\*(?!/)[^*]*+)*+\*/)
+ (?<code>\{[^\'"/{}]*+(?:(?:(?&string)|(?&comment)|(?&code)|/)[^\'"/{}]*+)*+})
+)';
+
+const PARAMS = '\[(?<params>[^[\]]*+(?:\[(?&params)\][^[\]]*+)*+)\]';
+const ARGS = '\((?<args>[^()]*+(?:\((?&args)\)[^()]*+)*+)\)';
+
+///////////////////////////////
+/// Preprocessing functions ///
+///////////////////////////////
+
+function preprocessGrammar($code) {
+ $code = resolveNodes($code);
+ $code = resolveMacros($code);
+ $code = resolveStackAccess($code);
+
+ return $code;
+}
+
+function resolveNodes($code) {
+ return preg_replace_callback(
+ '~\b(?<name>[A-Z][a-zA-Z_\\\\]++)\s*' . PARAMS . '~',
+ function($matches) {
+ // recurse
+ $matches['params'] = resolveNodes($matches['params']);
+
+ $params = magicSplit(
+ '(?:' . PARAMS . '|' . ARGS . ')(*SKIP)(*FAIL)|,',
+ $matches['params']
+ );
+
+ $paramCode = '';
+ foreach ($params as $param) {
+ $paramCode .= $param . ', ';
+ }
+
+ return 'new ' . $matches['name'] . '(' . $paramCode . 'attributes())';
+ },
+ $code
+ );
+}
+
+function resolveMacros($code) {
+ return preg_replace_callback(
+ '~\b(?<!::|->)(?!array\()(?<name>[a-z][A-Za-z]++)' . ARGS . '~',
+ function($matches) {
+ // recurse
+ $matches['args'] = resolveMacros($matches['args']);
+
+ $name = $matches['name'];
+ $args = magicSplit(
+ '(?:' . PARAMS . '|' . ARGS . ')(*SKIP)(*FAIL)|,',
+ $matches['args']
+ );
+
+ if ('attributes' === $name) {
+ assertArgs(0, $args, $name);
+ return '$this->startAttributeStack[#1] + $this->endAttributes';
+ }
+
+ if ('stackAttributes' === $name) {
+ assertArgs(1, $args, $name);
+ return '$this->startAttributeStack[' . $args[0] . ']'
+ . ' + $this->endAttributeStack[' . $args[0] . ']';
+ }
+
+ if ('init' === $name) {
+ return '$$ = array(' . implode(', ', $args) . ')';
+ }
+
+ if ('push' === $name) {
+ assertArgs(2, $args, $name);
+
+ return $args[0] . '[] = ' . $args[1] . '; $$ = ' . $args[0];
+ }
+
+ if ('pushNormalizing' === $name) {
+ assertArgs(2, $args, $name);
+
+ return 'if (is_array(' . $args[1] . ')) { $$ = array_merge(' . $args[0] . ', ' . $args[1] . '); }'
+ . ' else { ' . $args[0] . '[] = ' . $args[1] . '; $$ = ' . $args[0] . '; }';
+ }
+
+ if ('toArray' == $name) {
+ assertArgs(1, $args, $name);
+
+ return 'is_array(' . $args[0] . ') ? ' . $args[0] . ' : array(' . $args[0] . ')';
+ }
+
+ if ('parseVar' === $name) {
+ assertArgs(1, $args, $name);
+
+ return 'substr(' . $args[0] . ', 1)';
+ }
+
+ if ('parseEncapsed' === $name) {
+ assertArgs(3, $args, $name);
+
+ return 'foreach (' . $args[0] . ' as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) {'
+ . ' $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, ' . $args[1] . ', ' . $args[2] . '); } }';
+ }
+
+ if ('makeNop' === $name) {
+ assertArgs(3, $args, $name);
+
+ return '$startAttributes = ' . $args[1] . ';'
+ . ' if (isset($startAttributes[\'comments\']))'
+ . ' { ' . $args[0] . ' = new Stmt\Nop($startAttributes + ' . $args[2] . '); }'
+ . ' else { ' . $args[0] . ' = null; }';
+ }
+
+ if ('makeZeroLengthNop' == $name) {
+ assertArgs(2, $args, $name);
+
+ return '$startAttributes = ' . $args[1] . ';'
+ . ' if (isset($startAttributes[\'comments\']))'
+ . ' { ' . $args[0] . ' = new Stmt\Nop($this->createCommentNopAttributes($startAttributes[\'comments\'])); }'
+ . ' else { ' . $args[0] . ' = null; }';
+ }
+
+ if ('strKind' === $name) {
+ assertArgs(1, $args, $name);
+
+ return '(' . $args[0] . '[0] === "\'" || (' . $args[0] . '[1] === "\'" && '
+ . '(' . $args[0] . '[0] === \'b\' || ' . $args[0] . '[0] === \'B\')) '
+ . '? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED)';
+ }
+
+ if ('prependLeadingComments' === $name) {
+ assertArgs(1, $args, $name);
+
+ return '$attrs = $this->startAttributeStack[#1]; $stmts = ' . $args[0] . '; '
+ . 'if (!empty($attrs[\'comments\'])) {'
+ . '$stmts[0]->setAttribute(\'comments\', '
+ . 'array_merge($attrs[\'comments\'], $stmts[0]->getAttribute(\'comments\', []))); }';
+ }
+
+ return $matches[0];
+ },
+ $code
+ );
+}
+
+function assertArgs($num, $args, $name) {
+ if ($num != count($args)) {
+ die('Wrong argument count for ' . $name . '().');
+ }
+}
+
+function resolveStackAccess($code) {
+ $code = preg_replace('/\$\d+/', '$this->semStack[$0]', $code);
+ $code = preg_replace('/#(\d+)/', '$$1', $code);
+ return $code;
+}
+
+function removeTrailingWhitespace($code) {
+ $lines = explode("\n", $code);
+ $lines = array_map('rtrim', $lines);
+ return implode("\n", $lines);
+}
+
+//////////////////////////////
+/// Regex helper functions ///
+//////////////////////////////
+
+function regex($regex) {
+ return '~' . LIB . '(?:' . str_replace('~', '\~', $regex) . ')~';
+}
+
+function magicSplit($regex, $string) {
+ $pieces = preg_split(regex('(?:(?&string)|(?&comment)|(?&code))(*SKIP)(*FAIL)|' . $regex), $string);
+
+ foreach ($pieces as &$piece) {
+ $piece = trim($piece);
+ }
+
+ if ($pieces === ['']) {
+ return [];
+ }
+
+ return $pieces;
+}
diff --git a/vendor/nikic/php-parser/grammar/rebuildParsers.php b/vendor/nikic/php-parser/grammar/rebuildParsers.php
new file mode 100644
index 000000000..2d0c6b14d
--- /dev/null
+++ b/vendor/nikic/php-parser/grammar/rebuildParsers.php
@@ -0,0 +1,81 @@
+<?php
+
+require __DIR__ . '/phpyLang.php';
+
+$grammarFileToName = [
+ __DIR__ . '/php5.y' => 'Php5',
+ __DIR__ . '/php7.y' => 'Php7',
+];
+
+$tokensFile = __DIR__ . '/tokens.y';
+$tokensTemplate = __DIR__ . '/tokens.template';
+$skeletonFile = __DIR__ . '/parser.template';
+$tmpGrammarFile = __DIR__ . '/tmp_parser.phpy';
+$tmpResultFile = __DIR__ . '/tmp_parser.php';
+$resultDir = __DIR__ . '/../lib/PhpParser/Parser';
+$tokensResultsFile = $resultDir . '/Tokens.php';
+
+$kmyacc = getenv('KMYACC');
+if (!$kmyacc) {
+ // Use phpyacc from dev dependencies by default.
+ $kmyacc = __DIR__ . '/../vendor/bin/phpyacc';
+}
+
+$options = array_flip($argv);
+$optionDebug = isset($options['--debug']);
+$optionKeepTmpGrammar = isset($options['--keep-tmp-grammar']);
+
+///////////////////
+/// Main script ///
+///////////////////
+
+$tokens = file_get_contents($tokensFile);
+
+foreach ($grammarFileToName as $grammarFile => $name) {
+ echo "Building temporary $name grammar file.\n";
+
+ $grammarCode = file_get_contents($grammarFile);
+ $grammarCode = str_replace('%tokens', $tokens, $grammarCode);
+ $grammarCode = preprocessGrammar($grammarCode);
+
+ file_put_contents($tmpGrammarFile, $grammarCode);
+
+ $additionalArgs = $optionDebug ? '-t -v' : '';
+
+ echo "Building $name parser.\n";
+ $output = execCmd("$kmyacc $additionalArgs -m $skeletonFile -p $name $tmpGrammarFile");
+
+ $resultCode = file_get_contents($tmpResultFile);
+ $resultCode = removeTrailingWhitespace($resultCode);
+
+ ensureDirExists($resultDir);
+ file_put_contents("$resultDir/$name.php", $resultCode);
+ unlink($tmpResultFile);
+
+ echo "Building token definition.\n";
+ $output = execCmd("$kmyacc -m $tokensTemplate $tmpGrammarFile");
+ rename($tmpResultFile, $tokensResultsFile);
+
+ if (!$optionKeepTmpGrammar) {
+ unlink($tmpGrammarFile);
+ }
+}
+
+////////////////////////////////
+/// Utility helper functions ///
+////////////////////////////////
+
+function ensureDirExists($dir) {
+ if (!is_dir($dir)) {
+ mkdir($dir, 0777, true);
+ }
+}
+
+function execCmd($cmd) {
+ $output = trim(shell_exec("$cmd 2>&1"));
+ if ($output !== "") {
+ echo "> " . $cmd . "\n";
+ echo $output;
+ }
+ return $output;
+}
diff --git a/vendor/nikic/php-parser/grammar/tokens.template b/vendor/nikic/php-parser/grammar/tokens.template
new file mode 100644
index 000000000..ba4e4901c
--- /dev/null
+++ b/vendor/nikic/php-parser/grammar/tokens.template
@@ -0,0 +1,17 @@
+<?php
+$meta #
+#semval($) $this->semValue
+#semval($,%t) $this->semValue
+#semval(%n) $this->stackPos-(%l-%n)
+#semval(%n,%t) $this->stackPos-(%l-%n)
+
+namespace PhpParser\Parser;
+#include;
+
+/* GENERATED file based on grammar/tokens.y */
+final class Tokens
+{
+#tokenval
+ const %s = %n;
+#endtokenval
+}
diff --git a/vendor/nikic/php-parser/grammar/tokens.y b/vendor/nikic/php-parser/grammar/tokens.y
new file mode 100644
index 000000000..8f0b21725
--- /dev/null
+++ b/vendor/nikic/php-parser/grammar/tokens.y
@@ -0,0 +1,115 @@
+/* We currently rely on the token ID mapping to be the same between PHP 5 and PHP 7 - so the same lexer can be used for
+ * both. This is enforced by sharing this token file. */
+
+%right T_THROW
+%left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
+%left ','
+%left T_LOGICAL_OR
+%left T_LOGICAL_XOR
+%left T_LOGICAL_AND
+%right T_PRINT
+%right T_YIELD
+%right T_DOUBLE_ARROW
+%right T_YIELD_FROM
+%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL T_COALESCE_EQUAL
+%left '?' ':'
+%right T_COALESCE
+%left T_BOOLEAN_OR
+%left T_BOOLEAN_AND
+%left '|'
+%left '^'
+%left T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
+%nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL T_SPACESHIP
+%nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
+%left T_SL T_SR
+%left '+' '-' '.'
+%left '*' '/' '%'
+%right '!'
+%nonassoc T_INSTANCEOF
+%right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
+%right T_POW
+%right '['
+%nonassoc T_NEW T_CLONE
+%token T_EXIT
+%token T_IF
+%left T_ELSEIF
+%left T_ELSE
+%left T_ENDIF
+%token T_LNUMBER
+%token T_DNUMBER
+%token T_STRING
+%token T_STRING_VARNAME
+%token T_VARIABLE
+%token T_NUM_STRING
+%token T_INLINE_HTML
+%token T_ENCAPSED_AND_WHITESPACE
+%token T_CONSTANT_ENCAPSED_STRING
+%token T_ECHO
+%token T_DO
+%token T_WHILE
+%token T_ENDWHILE
+%token T_FOR
+%token T_ENDFOR
+%token T_FOREACH
+%token T_ENDFOREACH
+%token T_DECLARE
+%token T_ENDDECLARE
+%token T_AS
+%token T_SWITCH
+%token T_MATCH
+%token T_ENDSWITCH
+%token T_CASE
+%token T_DEFAULT
+%token T_BREAK
+%token T_CONTINUE
+%token T_GOTO
+%token T_FUNCTION
+%token T_FN
+%token T_CONST
+%token T_RETURN
+%token T_TRY
+%token T_CATCH
+%token T_FINALLY
+%token T_THROW
+%token T_USE
+%token T_INSTEADOF
+%token T_GLOBAL
+%right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC T_READONLY
+%token T_VAR
+%token T_UNSET
+%token T_ISSET
+%token T_EMPTY
+%token T_HALT_COMPILER
+%token T_CLASS
+%token T_TRAIT
+%token T_INTERFACE
+%token T_ENUM
+%token T_EXTENDS
+%token T_IMPLEMENTS
+%token T_OBJECT_OPERATOR
+%token T_NULLSAFE_OBJECT_OPERATOR
+%token T_DOUBLE_ARROW
+%token T_LIST
+%token T_ARRAY
+%token T_CALLABLE
+%token T_CLASS_C
+%token T_TRAIT_C
+%token T_METHOD_C
+%token T_FUNC_C
+%token T_LINE
+%token T_FILE
+%token T_START_HEREDOC
+%token T_END_HEREDOC
+%token T_DOLLAR_OPEN_CURLY_BRACES
+%token T_CURLY_OPEN
+%token T_PAAMAYIM_NEKUDOTAYIM
+%token T_NAMESPACE
+%token T_NS_C
+%token T_DIR
+%token T_NS_SEPARATOR
+%token T_ELLIPSIS
+%token T_NAME_FULLY_QUALIFIED
+%token T_NAME_QUALIFIED
+%token T_NAME_RELATIVE
+%token T_ATTRIBUTE
+%token T_ENUM
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder.php b/vendor/nikic/php-parser/lib/PhpParser/Builder.php
new file mode 100644
index 000000000..26d8921ef
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder.php
@@ -0,0 +1,13 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+interface Builder
+{
+ /**
+ * Returns the built node.
+ *
+ * @return Node The built node
+ */
+ public function getNode() : Node;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php
new file mode 100644
index 000000000..f616c6270
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/ClassConst.php
@@ -0,0 +1,132 @@
+<?php
+
+declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Const_;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Stmt;
+
+class ClassConst implements PhpParser\Builder
+{
+ protected $flags = 0;
+ protected $attributes = [];
+ protected $constants = [];
+
+ /** @var Node\AttributeGroup[] */
+ protected $attributeGroups = [];
+
+ /**
+ * Creates a class constant builder
+ *
+ * @param string|Identifier $name Name
+ * @param Node\Expr|bool|null|int|float|string|array $value Value
+ */
+ public function __construct($name, $value) {
+ $this->constants = [new Const_($name, BuilderHelpers::normalizeValue($value))];
+ }
+
+ /**
+ * Add another constant to const group
+ *
+ * @param string|Identifier $name Name
+ * @param Node\Expr|bool|null|int|float|string|array $value Value
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addConst($name, $value) {
+ $this->constants[] = new Const_($name, BuilderHelpers::normalizeValue($value));
+
+ return $this;
+ }
+
+ /**
+ * Makes the constant public.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makePublic() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PUBLIC);
+
+ return $this;
+ }
+
+ /**
+ * Makes the constant protected.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeProtected() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PROTECTED);
+
+ return $this;
+ }
+
+ /**
+ * Makes the constant private.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makePrivate() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PRIVATE);
+
+ return $this;
+ }
+
+ /**
+ * Makes the constant final.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeFinal() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
+
+ return $this;
+ }
+
+ /**
+ * Sets doc comment for the constant.
+ *
+ * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function setDocComment($docComment) {
+ $this->attributes = [
+ 'comments' => [BuilderHelpers::normalizeDocComment($docComment)]
+ ];
+
+ return $this;
+ }
+
+ /**
+ * Adds an attribute group.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addAttribute($attribute) {
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built class node.
+ *
+ * @return Stmt\ClassConst The built constant node
+ */
+ public function getNode(): PhpParser\Node {
+ return new Stmt\ClassConst(
+ $this->constants,
+ $this->flags,
+ $this->attributes,
+ $this->attributeGroups
+ );
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php
new file mode 100644
index 000000000..87e2901a9
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Class_.php
@@ -0,0 +1,140 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt;
+
+class Class_ extends Declaration
+{
+ protected $name;
+
+ protected $extends = null;
+ protected $implements = [];
+ protected $flags = 0;
+
+ protected $uses = [];
+ protected $constants = [];
+ protected $properties = [];
+ protected $methods = [];
+
+ /** @var Node\AttributeGroup[] */
+ protected $attributeGroups = [];
+
+ /**
+ * Creates a class builder.
+ *
+ * @param string $name Name of the class
+ */
+ public function __construct(string $name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Extends a class.
+ *
+ * @param Name|string $class Name of class to extend
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function extend($class) {
+ $this->extends = BuilderHelpers::normalizeName($class);
+
+ return $this;
+ }
+
+ /**
+ * Implements one or more interfaces.
+ *
+ * @param Name|string ...$interfaces Names of interfaces to implement
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function implement(...$interfaces) {
+ foreach ($interfaces as $interface) {
+ $this->implements[] = BuilderHelpers::normalizeName($interface);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Makes the class abstract.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeAbstract() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_ABSTRACT);
+
+ return $this;
+ }
+
+ /**
+ * Makes the class final.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeFinal() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
+
+ return $this;
+ }
+
+ /**
+ * Adds a statement.
+ *
+ * @param Stmt|PhpParser\Builder $stmt The statement to add
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addStmt($stmt) {
+ $stmt = BuilderHelpers::normalizeNode($stmt);
+
+ $targets = [
+ Stmt\TraitUse::class => &$this->uses,
+ Stmt\ClassConst::class => &$this->constants,
+ Stmt\Property::class => &$this->properties,
+ Stmt\ClassMethod::class => &$this->methods,
+ ];
+
+ $class = \get_class($stmt);
+ if (!isset($targets[$class])) {
+ throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
+ }
+
+ $targets[$class][] = $stmt;
+
+ return $this;
+ }
+
+ /**
+ * Adds an attribute group.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addAttribute($attribute) {
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built class node.
+ *
+ * @return Stmt\Class_ The built class node
+ */
+ public function getNode() : PhpParser\Node {
+ return new Stmt\Class_($this->name, [
+ 'flags' => $this->flags,
+ 'extends' => $this->extends,
+ 'implements' => $this->implements,
+ 'stmts' => array_merge($this->uses, $this->constants, $this->properties, $this->methods),
+ 'attrGroups' => $this->attributeGroups,
+ ], $this->attributes);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php
new file mode 100644
index 000000000..830949928
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Declaration.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+
+abstract class Declaration implements PhpParser\Builder
+{
+ protected $attributes = [];
+
+ abstract public function addStmt($stmt);
+
+ /**
+ * Adds multiple statements.
+ *
+ * @param array $stmts The statements to add
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addStmts(array $stmts) {
+ foreach ($stmts as $stmt) {
+ $this->addStmt($stmt);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Sets doc comment for the declaration.
+ *
+ * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function setDocComment($docComment) {
+ $this->attributes['comments'] = [
+ BuilderHelpers::normalizeDocComment($docComment)
+ ];
+
+ return $this;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php
new file mode 100644
index 000000000..02fa83e62
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/EnumCase.php
@@ -0,0 +1,85 @@
+<?php
+
+declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Stmt;
+
+class EnumCase implements PhpParser\Builder
+{
+ protected $name;
+ protected $value = null;
+ protected $attributes = [];
+
+ /** @var Node\AttributeGroup[] */
+ protected $attributeGroups = [];
+
+ /**
+ * Creates an enum case builder.
+ *
+ * @param string|Identifier $name Name
+ */
+ public function __construct($name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Sets the value.
+ *
+ * @param Node\Expr|string|int $value
+ *
+ * @return $this
+ */
+ public function setValue($value) {
+ $this->value = BuilderHelpers::normalizeValue($value);
+
+ return $this;
+ }
+
+ /**
+ * Sets doc comment for the constant.
+ *
+ * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function setDocComment($docComment) {
+ $this->attributes = [
+ 'comments' => [BuilderHelpers::normalizeDocComment($docComment)]
+ ];
+
+ return $this;
+ }
+
+ /**
+ * Adds an attribute group.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addAttribute($attribute) {
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built enum case node.
+ *
+ * @return Stmt\EnumCase The built constant node
+ */
+ public function getNode(): PhpParser\Node {
+ return new Stmt\EnumCase(
+ $this->name,
+ $this->value,
+ $this->attributes,
+ $this->attributeGroups
+ );
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php
new file mode 100644
index 000000000..be7eef95f
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Enum_.php
@@ -0,0 +1,117 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt;
+
+class Enum_ extends Declaration
+{
+ protected $name;
+ protected $scalarType = null;
+
+ protected $implements = [];
+
+ protected $uses = [];
+ protected $enumCases = [];
+ protected $constants = [];
+ protected $methods = [];
+
+ /** @var Node\AttributeGroup[] */
+ protected $attributeGroups = [];
+
+ /**
+ * Creates an enum builder.
+ *
+ * @param string $name Name of the enum
+ */
+ public function __construct(string $name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Sets the scalar type.
+ *
+ * @param string|Identifier $type
+ *
+ * @return $this
+ */
+ public function setScalarType($scalarType) {
+ $this->scalarType = BuilderHelpers::normalizeType($scalarType);
+
+ return $this;
+ }
+
+ /**
+ * Implements one or more interfaces.
+ *
+ * @param Name|string ...$interfaces Names of interfaces to implement
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function implement(...$interfaces) {
+ foreach ($interfaces as $interface) {
+ $this->implements[] = BuilderHelpers::normalizeName($interface);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Adds a statement.
+ *
+ * @param Stmt|PhpParser\Builder $stmt The statement to add
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addStmt($stmt) {
+ $stmt = BuilderHelpers::normalizeNode($stmt);
+
+ $targets = [
+ Stmt\TraitUse::class => &$this->uses,
+ Stmt\EnumCase::class => &$this->enumCases,
+ Stmt\ClassConst::class => &$this->constants,
+ Stmt\ClassMethod::class => &$this->methods,
+ ];
+
+ $class = \get_class($stmt);
+ if (!isset($targets[$class])) {
+ throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
+ }
+
+ $targets[$class][] = $stmt;
+
+ return $this;
+ }
+
+ /**
+ * Adds an attribute group.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addAttribute($attribute) {
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built class node.
+ *
+ * @return Stmt\Enum_ The built enum node
+ */
+ public function getNode() : PhpParser\Node {
+ return new Stmt\Enum_($this->name, [
+ 'scalarType' => $this->scalarType,
+ 'implements' => $this->implements,
+ 'stmts' => array_merge($this->uses, $this->enumCases, $this->constants, $this->methods),
+ 'attrGroups' => $this->attributeGroups,
+ ], $this->attributes);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php
new file mode 100644
index 000000000..98ea9d336
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/FunctionLike.php
@@ -0,0 +1,73 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+
+abstract class FunctionLike extends Declaration
+{
+ protected $returnByRef = false;
+ protected $params = [];
+
+ /** @var string|Node\Name|Node\NullableType|null */
+ protected $returnType = null;
+
+ /**
+ * Make the function return by reference.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeReturnByRef() {
+ $this->returnByRef = true;
+
+ return $this;
+ }
+
+ /**
+ * Adds a parameter.
+ *
+ * @param Node\Param|Param $param The parameter to add
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addParam($param) {
+ $param = BuilderHelpers::normalizeNode($param);
+
+ if (!$param instanceof Node\Param) {
+ throw new \LogicException(sprintf('Expected parameter node, got "%s"', $param->getType()));
+ }
+
+ $this->params[] = $param;
+
+ return $this;
+ }
+
+ /**
+ * Adds multiple parameters.
+ *
+ * @param array $params The parameters to add
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addParams(array $params) {
+ foreach ($params as $param) {
+ $this->addParam($param);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Sets the return type for PHP 7.
+ *
+ * @param string|Node\Name|Node\Identifier|Node\ComplexType $type
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function setReturnType($type) {
+ $this->returnType = BuilderHelpers::normalizeType($type);
+
+ return $this;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php
new file mode 100644
index 000000000..1cd73c0d3
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Function_.php
@@ -0,0 +1,67 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Stmt;
+
+class Function_ extends FunctionLike
+{
+ protected $name;
+ protected $stmts = [];
+
+ /** @var Node\AttributeGroup[] */
+ protected $attributeGroups = [];
+
+ /**
+ * Creates a function builder.
+ *
+ * @param string $name Name of the function
+ */
+ public function __construct(string $name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Adds a statement.
+ *
+ * @param Node|PhpParser\Builder $stmt The statement to add
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addStmt($stmt) {
+ $this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
+
+ return $this;
+ }
+
+ /**
+ * Adds an attribute group.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addAttribute($attribute) {
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built function node.
+ *
+ * @return Stmt\Function_ The built function node
+ */
+ public function getNode() : Node {
+ return new Stmt\Function_($this->name, [
+ 'byRef' => $this->returnByRef,
+ 'params' => $this->params,
+ 'returnType' => $this->returnType,
+ 'stmts' => $this->stmts,
+ 'attrGroups' => $this->attributeGroups,
+ ], $this->attributes);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php
new file mode 100644
index 000000000..7806e85fc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Interface_.php
@@ -0,0 +1,93 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt;
+
+class Interface_ extends Declaration
+{
+ protected $name;
+ protected $extends = [];
+ protected $constants = [];
+ protected $methods = [];
+
+ /** @var Node\AttributeGroup[] */
+ protected $attributeGroups = [];
+
+ /**
+ * Creates an interface builder.
+ *
+ * @param string $name Name of the interface
+ */
+ public function __construct(string $name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Extends one or more interfaces.
+ *
+ * @param Name|string ...$interfaces Names of interfaces to extend
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function extend(...$interfaces) {
+ foreach ($interfaces as $interface) {
+ $this->extends[] = BuilderHelpers::normalizeName($interface);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Adds a statement.
+ *
+ * @param Stmt|PhpParser\Builder $stmt The statement to add
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addStmt($stmt) {
+ $stmt = BuilderHelpers::normalizeNode($stmt);
+
+ if ($stmt instanceof Stmt\ClassConst) {
+ $this->constants[] = $stmt;
+ } elseif ($stmt instanceof Stmt\ClassMethod) {
+ // we erase all statements in the body of an interface method
+ $stmt->stmts = null;
+ $this->methods[] = $stmt;
+ } else {
+ throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
+ }
+
+ return $this;
+ }
+
+ /**
+ * Adds an attribute group.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addAttribute($attribute) {
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built interface node.
+ *
+ * @return Stmt\Interface_ The built interface node
+ */
+ public function getNode() : PhpParser\Node {
+ return new Stmt\Interface_($this->name, [
+ 'extends' => $this->extends,
+ 'stmts' => array_merge($this->constants, $this->methods),
+ 'attrGroups' => $this->attributeGroups,
+ ], $this->attributes);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php
new file mode 100644
index 000000000..232d7cb87
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Method.php
@@ -0,0 +1,146 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Stmt;
+
+class Method extends FunctionLike
+{
+ protected $name;
+ protected $flags = 0;
+
+ /** @var array|null */
+ protected $stmts = [];
+
+ /** @var Node\AttributeGroup[] */
+ protected $attributeGroups = [];
+
+ /**
+ * Creates a method builder.
+ *
+ * @param string $name Name of the method
+ */
+ public function __construct(string $name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Makes the method public.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makePublic() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PUBLIC);
+
+ return $this;
+ }
+
+ /**
+ * Makes the method protected.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeProtected() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PROTECTED);
+
+ return $this;
+ }
+
+ /**
+ * Makes the method private.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makePrivate() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PRIVATE);
+
+ return $this;
+ }
+
+ /**
+ * Makes the method static.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeStatic() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_STATIC);
+
+ return $this;
+ }
+
+ /**
+ * Makes the method abstract.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeAbstract() {
+ if (!empty($this->stmts)) {
+ throw new \LogicException('Cannot make method with statements abstract');
+ }
+
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_ABSTRACT);
+ $this->stmts = null; // abstract methods don't have statements
+
+ return $this;
+ }
+
+ /**
+ * Makes the method final.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeFinal() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_FINAL);
+
+ return $this;
+ }
+
+ /**
+ * Adds a statement.
+ *
+ * @param Node|PhpParser\Builder $stmt The statement to add
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addStmt($stmt) {
+ if (null === $this->stmts) {
+ throw new \LogicException('Cannot add statements to an abstract method');
+ }
+
+ $this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
+
+ return $this;
+ }
+
+ /**
+ * Adds an attribute group.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addAttribute($attribute) {
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built method node.
+ *
+ * @return Stmt\ClassMethod The built method node
+ */
+ public function getNode() : Node {
+ return new Stmt\ClassMethod($this->name, [
+ 'flags' => $this->flags,
+ 'byRef' => $this->returnByRef,
+ 'params' => $this->params,
+ 'returnType' => $this->returnType,
+ 'stmts' => $this->stmts,
+ 'attrGroups' => $this->attributeGroups,
+ ], $this->attributes);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php
new file mode 100644
index 000000000..1c751e163
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Namespace_.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Stmt;
+
+class Namespace_ extends Declaration
+{
+ private $name;
+ private $stmts = [];
+
+ /**
+ * Creates a namespace builder.
+ *
+ * @param Node\Name|string|null $name Name of the namespace
+ */
+ public function __construct($name) {
+ $this->name = null !== $name ? BuilderHelpers::normalizeName($name) : null;
+ }
+
+ /**
+ * Adds a statement.
+ *
+ * @param Node|PhpParser\Builder $stmt The statement to add
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addStmt($stmt) {
+ $this->stmts[] = BuilderHelpers::normalizeStmt($stmt);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built node.
+ *
+ * @return Stmt\Namespace_ The built node
+ */
+ public function getNode() : Node {
+ return new Stmt\Namespace_($this->name, $this->stmts, $this->attributes);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
new file mode 100644
index 000000000..de9aae7e5
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Param.php
@@ -0,0 +1,122 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+
+class Param implements PhpParser\Builder
+{
+ protected $name;
+
+ protected $default = null;
+
+ /** @var Node\Identifier|Node\Name|Node\NullableType|null */
+ protected $type = null;
+
+ protected $byRef = false;
+
+ protected $variadic = false;
+
+ /** @var Node\AttributeGroup[] */
+ protected $attributeGroups = [];
+
+ /**
+ * Creates a parameter builder.
+ *
+ * @param string $name Name of the parameter
+ */
+ public function __construct(string $name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Sets default value for the parameter.
+ *
+ * @param mixed $value Default value to use
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function setDefault($value) {
+ $this->default = BuilderHelpers::normalizeValue($value);
+
+ return $this;
+ }
+
+ /**
+ * Sets type for the parameter.
+ *
+ * @param string|Node\Name|Node\Identifier|Node\ComplexType $type Parameter type
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function setType($type) {
+ $this->type = BuilderHelpers::normalizeType($type);
+ if ($this->type == 'void') {
+ throw new \LogicException('Parameter type cannot be void');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Sets type for the parameter.
+ *
+ * @param string|Node\Name|Node\Identifier|Node\ComplexType $type Parameter type
+ *
+ * @return $this The builder instance (for fluid interface)
+ *
+ * @deprecated Use setType() instead
+ */
+ public function setTypeHint($type) {
+ return $this->setType($type);
+ }
+
+ /**
+ * Make the parameter accept the value by reference.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeByRef() {
+ $this->byRef = true;
+
+ return $this;
+ }
+
+ /**
+ * Make the parameter variadic
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeVariadic() {
+ $this->variadic = true;
+
+ return $this;
+ }
+
+ /**
+ * Adds an attribute group.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addAttribute($attribute) {
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built parameter node.
+ *
+ * @return Node\Param The built parameter node
+ */
+ public function getNode() : Node {
+ return new Node\Param(
+ new Node\Expr\Variable($this->name),
+ $this->default, $this->type, $this->byRef, $this->variadic, [], 0, $this->attributeGroups
+ );
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php
new file mode 100644
index 000000000..68e318565
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Property.php
@@ -0,0 +1,161 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt;
+use PhpParser\Node\ComplexType;
+
+class Property implements PhpParser\Builder
+{
+ protected $name;
+
+ protected $flags = 0;
+ protected $default = null;
+ protected $attributes = [];
+
+ /** @var null|Identifier|Name|NullableType */
+ protected $type;
+
+ /** @var Node\AttributeGroup[] */
+ protected $attributeGroups = [];
+
+ /**
+ * Creates a property builder.
+ *
+ * @param string $name Name of the property
+ */
+ public function __construct(string $name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Makes the property public.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makePublic() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PUBLIC);
+
+ return $this;
+ }
+
+ /**
+ * Makes the property protected.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeProtected() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PROTECTED);
+
+ return $this;
+ }
+
+ /**
+ * Makes the property private.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makePrivate() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_PRIVATE);
+
+ return $this;
+ }
+
+ /**
+ * Makes the property static.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeStatic() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_STATIC);
+
+ return $this;
+ }
+
+ /**
+ * Makes the property readonly.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeReadonly() {
+ $this->flags = BuilderHelpers::addModifier($this->flags, Stmt\Class_::MODIFIER_READONLY);
+
+ return $this;
+ }
+
+ /**
+ * Sets default value for the property.
+ *
+ * @param mixed $value Default value to use
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function setDefault($value) {
+ $this->default = BuilderHelpers::normalizeValue($value);
+
+ return $this;
+ }
+
+ /**
+ * Sets doc comment for the property.
+ *
+ * @param PhpParser\Comment\Doc|string $docComment Doc comment to set
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function setDocComment($docComment) {
+ $this->attributes = [
+ 'comments' => [BuilderHelpers::normalizeDocComment($docComment)]
+ ];
+
+ return $this;
+ }
+
+ /**
+ * Sets the property type for PHP 7.4+.
+ *
+ * @param string|Name|Identifier|ComplexType $type
+ *
+ * @return $this
+ */
+ public function setType($type) {
+ $this->type = BuilderHelpers::normalizeType($type);
+
+ return $this;
+ }
+
+ /**
+ * Adds an attribute group.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addAttribute($attribute) {
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built class node.
+ *
+ * @return Stmt\Property The built property node
+ */
+ public function getNode() : PhpParser\Node {
+ return new Stmt\Property(
+ $this->flags !== 0 ? $this->flags : Stmt\Class_::MODIFIER_PUBLIC,
+ [
+ new Stmt\PropertyProperty($this->name, $this->default)
+ ],
+ $this->attributes,
+ $this->type,
+ $this->attributeGroups
+ );
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php
new file mode 100644
index 000000000..311e8cd7b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUse.php
@@ -0,0 +1,64 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser\Builder;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Stmt;
+
+class TraitUse implements Builder
+{
+ protected $traits = [];
+ protected $adaptations = [];
+
+ /**
+ * Creates a trait use builder.
+ *
+ * @param Node\Name|string ...$traits Names of used traits
+ */
+ public function __construct(...$traits) {
+ foreach ($traits as $trait) {
+ $this->and($trait);
+ }
+ }
+
+ /**
+ * Adds used trait.
+ *
+ * @param Node\Name|string $trait Trait name
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function and($trait) {
+ $this->traits[] = BuilderHelpers::normalizeName($trait);
+ return $this;
+ }
+
+ /**
+ * Adds trait adaptation.
+ *
+ * @param Stmt\TraitUseAdaptation|Builder\TraitUseAdaptation $adaptation Trait adaptation
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function with($adaptation) {
+ $adaptation = BuilderHelpers::normalizeNode($adaptation);
+
+ if (!$adaptation instanceof Stmt\TraitUseAdaptation) {
+ throw new \LogicException('Adaptation must have type TraitUseAdaptation');
+ }
+
+ $this->adaptations[] = $adaptation;
+ return $this;
+ }
+
+ /**
+ * Returns the built node.
+ *
+ * @return Node The built node
+ */
+ public function getNode() : Node {
+ return new Stmt\TraitUse($this->traits, $this->adaptations);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php
new file mode 100644
index 000000000..eb6c0b622
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/TraitUseAdaptation.php
@@ -0,0 +1,148 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser\Builder;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Stmt;
+
+class TraitUseAdaptation implements Builder
+{
+ const TYPE_UNDEFINED = 0;
+ const TYPE_ALIAS = 1;
+ const TYPE_PRECEDENCE = 2;
+
+ /** @var int Type of building adaptation */
+ protected $type;
+
+ protected $trait;
+ protected $method;
+
+ protected $modifier = null;
+ protected $alias = null;
+
+ protected $insteadof = [];
+
+ /**
+ * Creates a trait use adaptation builder.
+ *
+ * @param Node\Name|string|null $trait Name of adaptated trait
+ * @param Node\Identifier|string $method Name of adaptated method
+ */
+ public function __construct($trait, $method) {
+ $this->type = self::TYPE_UNDEFINED;
+
+ $this->trait = is_null($trait)? null: BuilderHelpers::normalizeName($trait);
+ $this->method = BuilderHelpers::normalizeIdentifier($method);
+ }
+
+ /**
+ * Sets alias of method.
+ *
+ * @param Node\Identifier|string $alias Alias for adaptated method
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function as($alias) {
+ if ($this->type === self::TYPE_UNDEFINED) {
+ $this->type = self::TYPE_ALIAS;
+ }
+
+ if ($this->type !== self::TYPE_ALIAS) {
+ throw new \LogicException('Cannot set alias for not alias adaptation buider');
+ }
+
+ $this->alias = $alias;
+ return $this;
+ }
+
+ /**
+ * Sets adaptated method public.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makePublic() {
+ $this->setModifier(Stmt\Class_::MODIFIER_PUBLIC);
+ return $this;
+ }
+
+ /**
+ * Sets adaptated method protected.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makeProtected() {
+ $this->setModifier(Stmt\Class_::MODIFIER_PROTECTED);
+ return $this;
+ }
+
+ /**
+ * Sets adaptated method private.
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function makePrivate() {
+ $this->setModifier(Stmt\Class_::MODIFIER_PRIVATE);
+ return $this;
+ }
+
+ /**
+ * Adds overwritten traits.
+ *
+ * @param Node\Name|string ...$traits Traits for overwrite
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function insteadof(...$traits) {
+ if ($this->type === self::TYPE_UNDEFINED) {
+ if (is_null($this->trait)) {
+ throw new \LogicException('Precedence adaptation must have trait');
+ }
+
+ $this->type = self::TYPE_PRECEDENCE;
+ }
+
+ if ($this->type !== self::TYPE_PRECEDENCE) {
+ throw new \LogicException('Cannot add overwritten traits for not precedence adaptation buider');
+ }
+
+ foreach ($traits as $trait) {
+ $this->insteadof[] = BuilderHelpers::normalizeName($trait);
+ }
+
+ return $this;
+ }
+
+ protected function setModifier(int $modifier) {
+ if ($this->type === self::TYPE_UNDEFINED) {
+ $this->type = self::TYPE_ALIAS;
+ }
+
+ if ($this->type !== self::TYPE_ALIAS) {
+ throw new \LogicException('Cannot set access modifier for not alias adaptation buider');
+ }
+
+ if (is_null($this->modifier)) {
+ $this->modifier = $modifier;
+ } else {
+ throw new \LogicException('Multiple access type modifiers are not allowed');
+ }
+ }
+
+ /**
+ * Returns the built node.
+ *
+ * @return Node The built node
+ */
+ public function getNode() : Node {
+ switch ($this->type) {
+ case self::TYPE_ALIAS:
+ return new Stmt\TraitUseAdaptation\Alias($this->trait, $this->method, $this->modifier, $this->alias);
+ case self::TYPE_PRECEDENCE:
+ return new Stmt\TraitUseAdaptation\Precedence($this->trait, $this->method, $this->insteadof);
+ default:
+ throw new \LogicException('Type of adaptation is not defined');
+ }
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php
new file mode 100644
index 000000000..97f32f98d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Trait_.php
@@ -0,0 +1,78 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Stmt;
+
+class Trait_ extends Declaration
+{
+ protected $name;
+ protected $uses = [];
+ protected $properties = [];
+ protected $methods = [];
+
+ /** @var Node\AttributeGroup[] */
+ protected $attributeGroups = [];
+
+ /**
+ * Creates an interface builder.
+ *
+ * @param string $name Name of the interface
+ */
+ public function __construct(string $name) {
+ $this->name = $name;
+ }
+
+ /**
+ * Adds a statement.
+ *
+ * @param Stmt|PhpParser\Builder $stmt The statement to add
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addStmt($stmt) {
+ $stmt = BuilderHelpers::normalizeNode($stmt);
+
+ if ($stmt instanceof Stmt\Property) {
+ $this->properties[] = $stmt;
+ } elseif ($stmt instanceof Stmt\ClassMethod) {
+ $this->methods[] = $stmt;
+ } elseif ($stmt instanceof Stmt\TraitUse) {
+ $this->uses[] = $stmt;
+ } else {
+ throw new \LogicException(sprintf('Unexpected node of type "%s"', $stmt->getType()));
+ }
+
+ return $this;
+ }
+
+ /**
+ * Adds an attribute group.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function addAttribute($attribute) {
+ $this->attributeGroups[] = BuilderHelpers::normalizeAttribute($attribute);
+
+ return $this;
+ }
+
+ /**
+ * Returns the built trait node.
+ *
+ * @return Stmt\Trait_ The built interface node
+ */
+ public function getNode() : PhpParser\Node {
+ return new Stmt\Trait_(
+ $this->name, [
+ 'stmts' => array_merge($this->uses, $this->properties, $this->methods),
+ 'attrGroups' => $this->attributeGroups,
+ ], $this->attributes
+ );
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php b/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php
new file mode 100644
index 000000000..4bd3d12df
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Builder/Use_.php
@@ -0,0 +1,49 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Builder;
+
+use PhpParser\Builder;
+use PhpParser\BuilderHelpers;
+use PhpParser\Node;
+use PhpParser\Node\Stmt;
+
+class Use_ implements Builder
+{
+ protected $name;
+ protected $type;
+ protected $alias = null;
+
+ /**
+ * Creates a name use (alias) builder.
+ *
+ * @param Node\Name|string $name Name of the entity (namespace, class, function, constant) to alias
+ * @param int $type One of the Stmt\Use_::TYPE_* constants
+ */
+ public function __construct($name, int $type) {
+ $this->name = BuilderHelpers::normalizeName($name);
+ $this->type = $type;
+ }
+
+ /**
+ * Sets alias for used name.
+ *
+ * @param string $alias Alias to use (last component of full name by default)
+ *
+ * @return $this The builder instance (for fluid interface)
+ */
+ public function as(string $alias) {
+ $this->alias = $alias;
+ return $this;
+ }
+
+ /**
+ * Returns the built node.
+ *
+ * @return Stmt\Use_ The built node
+ */
+ public function getNode() : Node {
+ return new Stmt\Use_([
+ new Stmt\UseUse($this->name, $this->alias)
+ ], $this->type);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php b/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php
new file mode 100644
index 000000000..fef2579b3
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/BuilderFactory.php
@@ -0,0 +1,399 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Expr\BinaryOp\Concat;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
+use PhpParser\Node\Scalar\String_;
+use PhpParser\Node\Stmt\Use_;
+
+class BuilderFactory
+{
+ /**
+ * Creates an attribute node.
+ *
+ * @param string|Name $name Name of the attribute
+ * @param array $args Attribute named arguments
+ *
+ * @return Node\Attribute
+ */
+ public function attribute($name, array $args = []) : Node\Attribute {
+ return new Node\Attribute(
+ BuilderHelpers::normalizeName($name),
+ $this->args($args)
+ );
+ }
+
+ /**
+ * Creates a namespace builder.
+ *
+ * @param null|string|Node\Name $name Name of the namespace
+ *
+ * @return Builder\Namespace_ The created namespace builder
+ */
+ public function namespace($name) : Builder\Namespace_ {
+ return new Builder\Namespace_($name);
+ }
+
+ /**
+ * Creates a class builder.
+ *
+ * @param string $name Name of the class
+ *
+ * @return Builder\Class_ The created class builder
+ */
+ public function class(string $name) : Builder\Class_ {
+ return new Builder\Class_($name);
+ }
+
+ /**
+ * Creates an interface builder.
+ *
+ * @param string $name Name of the interface
+ *
+ * @return Builder\Interface_ The created interface builder
+ */
+ public function interface(string $name) : Builder\Interface_ {
+ return new Builder\Interface_($name);
+ }
+
+ /**
+ * Creates a trait builder.
+ *
+ * @param string $name Name of the trait
+ *
+ * @return Builder\Trait_ The created trait builder
+ */
+ public function trait(string $name) : Builder\Trait_ {
+ return new Builder\Trait_($name);
+ }
+
+ /**
+ * Creates an enum builder.
+ *
+ * @param string $name Name of the enum
+ *
+ * @return Builder\Enum_ The created enum builder
+ */
+ public function enum(string $name) : Builder\Enum_ {
+ return new Builder\Enum_($name);
+ }
+
+ /**
+ * Creates a trait use builder.
+ *
+ * @param Node\Name|string ...$traits Trait names
+ *
+ * @return Builder\TraitUse The create trait use builder
+ */
+ public function useTrait(...$traits) : Builder\TraitUse {
+ return new Builder\TraitUse(...$traits);
+ }
+
+ /**
+ * Creates a trait use adaptation builder.
+ *
+ * @param Node\Name|string|null $trait Trait name
+ * @param Node\Identifier|string $method Method name
+ *
+ * @return Builder\TraitUseAdaptation The create trait use adaptation builder
+ */
+ public function traitUseAdaptation($trait, $method = null) : Builder\TraitUseAdaptation {
+ if ($method === null) {
+ $method = $trait;
+ $trait = null;
+ }
+
+ return new Builder\TraitUseAdaptation($trait, $method);
+ }
+
+ /**
+ * Creates a method builder.
+ *
+ * @param string $name Name of the method
+ *
+ * @return Builder\Method The created method builder
+ */
+ public function method(string $name) : Builder\Method {
+ return new Builder\Method($name);
+ }
+
+ /**
+ * Creates a parameter builder.
+ *
+ * @param string $name Name of the parameter
+ *
+ * @return Builder\Param The created parameter builder
+ */
+ public function param(string $name) : Builder\Param {
+ return new Builder\Param($name);
+ }
+
+ /**
+ * Creates a property builder.
+ *
+ * @param string $name Name of the property
+ *
+ * @return Builder\Property The created property builder
+ */
+ public function property(string $name) : Builder\Property {
+ return new Builder\Property($name);
+ }
+
+ /**
+ * Creates a function builder.
+ *
+ * @param string $name Name of the function
+ *
+ * @return Builder\Function_ The created function builder
+ */
+ public function function(string $name) : Builder\Function_ {
+ return new Builder\Function_($name);
+ }
+
+ /**
+ * Creates a namespace/class use builder.
+ *
+ * @param Node\Name|string $name Name of the entity (namespace or class) to alias
+ *
+ * @return Builder\Use_ The created use builder
+ */
+ public function use($name) : Builder\Use_ {
+ return new Builder\Use_($name, Use_::TYPE_NORMAL);
+ }
+
+ /**
+ * Creates a function use builder.
+ *
+ * @param Node\Name|string $name Name of the function to alias
+ *
+ * @return Builder\Use_ The created use function builder
+ */
+ public function useFunction($name) : Builder\Use_ {
+ return new Builder\Use_($name, Use_::TYPE_FUNCTION);
+ }
+
+ /**
+ * Creates a constant use builder.
+ *
+ * @param Node\Name|string $name Name of the const to alias
+ *
+ * @return Builder\Use_ The created use const builder
+ */
+ public function useConst($name) : Builder\Use_ {
+ return new Builder\Use_($name, Use_::TYPE_CONSTANT);
+ }
+
+ /**
+ * Creates a class constant builder.
+ *
+ * @param string|Identifier $name Name
+ * @param Node\Expr|bool|null|int|float|string|array $value Value
+ *
+ * @return Builder\ClassConst The created use const builder
+ */
+ public function classConst($name, $value) : Builder\ClassConst {
+ return new Builder\ClassConst($name, $value);
+ }
+
+ /**
+ * Creates an enum case builder.
+ *
+ * @param string|Identifier $name Name
+ *
+ * @return Builder\EnumCase The created use const builder
+ */
+ public function enumCase($name) : Builder\EnumCase {
+ return new Builder\EnumCase($name);
+ }
+
+ /**
+ * Creates node a for a literal value.
+ *
+ * @param Expr|bool|null|int|float|string|array $value $value
+ *
+ * @return Expr
+ */
+ public function val($value) : Expr {
+ return BuilderHelpers::normalizeValue($value);
+ }
+
+ /**
+ * Creates variable node.
+ *
+ * @param string|Expr $name Name
+ *
+ * @return Expr\Variable
+ */
+ public function var($name) : Expr\Variable {
+ if (!\is_string($name) && !$name instanceof Expr) {
+ throw new \LogicException('Variable name must be string or Expr');
+ }
+
+ return new Expr\Variable($name);
+ }
+
+ /**
+ * Normalizes an argument list.
+ *
+ * Creates Arg nodes for all arguments and converts literal values to expressions.
+ *
+ * @param array $args List of arguments to normalize
+ *
+ * @return Arg[]
+ */
+ public function args(array $args) : array {
+ $normalizedArgs = [];
+ foreach ($args as $key => $arg) {
+ if (!($arg instanceof Arg)) {
+ $arg = new Arg(BuilderHelpers::normalizeValue($arg));
+ }
+ if (\is_string($key)) {
+ $arg->name = BuilderHelpers::normalizeIdentifier($key);
+ }
+ $normalizedArgs[] = $arg;
+ }
+ return $normalizedArgs;
+ }
+
+ /**
+ * Creates a function call node.
+ *
+ * @param string|Name|Expr $name Function name
+ * @param array $args Function arguments
+ *
+ * @return Expr\FuncCall
+ */
+ public function funcCall($name, array $args = []) : Expr\FuncCall {
+ return new Expr\FuncCall(
+ BuilderHelpers::normalizeNameOrExpr($name),
+ $this->args($args)
+ );
+ }
+
+ /**
+ * Creates a method call node.
+ *
+ * @param Expr $var Variable the method is called on
+ * @param string|Identifier|Expr $name Method name
+ * @param array $args Method arguments
+ *
+ * @return Expr\MethodCall
+ */
+ public function methodCall(Expr $var, $name, array $args = []) : Expr\MethodCall {
+ return new Expr\MethodCall(
+ $var,
+ BuilderHelpers::normalizeIdentifierOrExpr($name),
+ $this->args($args)
+ );
+ }
+
+ /**
+ * Creates a static method call node.
+ *
+ * @param string|Name|Expr $class Class name
+ * @param string|Identifier|Expr $name Method name
+ * @param array $args Method arguments
+ *
+ * @return Expr\StaticCall
+ */
+ public function staticCall($class, $name, array $args = []) : Expr\StaticCall {
+ return new Expr\StaticCall(
+ BuilderHelpers::normalizeNameOrExpr($class),
+ BuilderHelpers::normalizeIdentifierOrExpr($name),
+ $this->args($args)
+ );
+ }
+
+ /**
+ * Creates an object creation node.
+ *
+ * @param string|Name|Expr $class Class name
+ * @param array $args Constructor arguments
+ *
+ * @return Expr\New_
+ */
+ public function new($class, array $args = []) : Expr\New_ {
+ return new Expr\New_(
+ BuilderHelpers::normalizeNameOrExpr($class),
+ $this->args($args)
+ );
+ }
+
+ /**
+ * Creates a constant fetch node.
+ *
+ * @param string|Name $name Constant name
+ *
+ * @return Expr\ConstFetch
+ */
+ public function constFetch($name) : Expr\ConstFetch {
+ return new Expr\ConstFetch(BuilderHelpers::normalizeName($name));
+ }
+
+ /**
+ * Creates a property fetch node.
+ *
+ * @param Expr $var Variable holding object
+ * @param string|Identifier|Expr $name Property name
+ *
+ * @return Expr\PropertyFetch
+ */
+ public function propertyFetch(Expr $var, $name) : Expr\PropertyFetch {
+ return new Expr\PropertyFetch($var, BuilderHelpers::normalizeIdentifierOrExpr($name));
+ }
+
+ /**
+ * Creates a class constant fetch node.
+ *
+ * @param string|Name|Expr $class Class name
+ * @param string|Identifier $name Constant name
+ *
+ * @return Expr\ClassConstFetch
+ */
+ public function classConstFetch($class, $name): Expr\ClassConstFetch {
+ return new Expr\ClassConstFetch(
+ BuilderHelpers::normalizeNameOrExpr($class),
+ BuilderHelpers::normalizeIdentifier($name)
+ );
+ }
+
+ /**
+ * Creates nested Concat nodes from a list of expressions.
+ *
+ * @param Expr|string ...$exprs Expressions or literal strings
+ *
+ * @return Concat
+ */
+ public function concat(...$exprs) : Concat {
+ $numExprs = count($exprs);
+ if ($numExprs < 2) {
+ throw new \LogicException('Expected at least two expressions');
+ }
+
+ $lastConcat = $this->normalizeStringExpr($exprs[0]);
+ for ($i = 1; $i < $numExprs; $i++) {
+ $lastConcat = new Concat($lastConcat, $this->normalizeStringExpr($exprs[$i]));
+ }
+ return $lastConcat;
+ }
+
+ /**
+ * @param string|Expr $expr
+ * @return Expr
+ */
+ private function normalizeStringExpr($expr) : Expr {
+ if ($expr instanceof Expr) {
+ return $expr;
+ }
+
+ if (\is_string($expr)) {
+ return new String_($expr);
+ }
+
+ throw new \LogicException('Expected string or Expr');
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php b/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
new file mode 100644
index 000000000..2f0e91273
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/BuilderHelpers.php
@@ -0,0 +1,313 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+use PhpParser\Node\ComplexType;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
+use PhpParser\Node\NullableType;
+use PhpParser\Node\Scalar;
+use PhpParser\Node\Stmt;
+
+/**
+ * This class defines helpers used in the implementation of builders. Don't use it directly.
+ *
+ * @internal
+ */
+final class BuilderHelpers
+{
+ /**
+ * Normalizes a node: Converts builder objects to nodes.
+ *
+ * @param Node|Builder $node The node to normalize
+ *
+ * @return Node The normalized node
+ */
+ public static function normalizeNode($node) : Node {
+ if ($node instanceof Builder) {
+ return $node->getNode();
+ }
+
+ if ($node instanceof Node) {
+ return $node;
+ }
+
+ throw new \LogicException('Expected node or builder object');
+ }
+
+ /**
+ * Normalizes a node to a statement.
+ *
+ * Expressions are wrapped in a Stmt\Expression node.
+ *
+ * @param Node|Builder $node The node to normalize
+ *
+ * @return Stmt The normalized statement node
+ */
+ public static function normalizeStmt($node) : Stmt {
+ $node = self::normalizeNode($node);
+ if ($node instanceof Stmt) {
+ return $node;
+ }
+
+ if ($node instanceof Expr) {
+ return new Stmt\Expression($node);
+ }
+
+ throw new \LogicException('Expected statement or expression node');
+ }
+
+ /**
+ * Normalizes strings to Identifier.
+ *
+ * @param string|Identifier $name The identifier to normalize
+ *
+ * @return Identifier The normalized identifier
+ */
+ public static function normalizeIdentifier($name) : Identifier {
+ if ($name instanceof Identifier) {
+ return $name;
+ }
+
+ if (\is_string($name)) {
+ return new Identifier($name);
+ }
+
+ throw new \LogicException('Expected string or instance of Node\Identifier');
+ }
+
+ /**
+ * Normalizes strings to Identifier, also allowing expressions.
+ *
+ * @param string|Identifier|Expr $name The identifier to normalize
+ *
+ * @return Identifier|Expr The normalized identifier or expression
+ */
+ public static function normalizeIdentifierOrExpr($name) {
+ if ($name instanceof Identifier || $name instanceof Expr) {
+ return $name;
+ }
+
+ if (\is_string($name)) {
+ return new Identifier($name);
+ }
+
+ throw new \LogicException('Expected string or instance of Node\Identifier or Node\Expr');
+ }
+
+ /**
+ * Normalizes a name: Converts string names to Name nodes.
+ *
+ * @param Name|string $name The name to normalize
+ *
+ * @return Name The normalized name
+ */
+ public static function normalizeName($name) : Name {
+ if ($name instanceof Name) {
+ return $name;
+ }
+
+ if (is_string($name)) {
+ if (!$name) {
+ throw new \LogicException('Name cannot be empty');
+ }
+
+ if ($name[0] === '\\') {
+ return new Name\FullyQualified(substr($name, 1));
+ }
+
+ if (0 === strpos($name, 'namespace\\')) {
+ return new Name\Relative(substr($name, strlen('namespace\\')));
+ }
+
+ return new Name($name);
+ }
+
+ throw new \LogicException('Name must be a string or an instance of Node\Name');
+ }
+
+ /**
+ * Normalizes a name: Converts string names to Name nodes, while also allowing expressions.
+ *
+ * @param Expr|Name|string $name The name to normalize
+ *
+ * @return Name|Expr The normalized name or expression
+ */
+ public static function normalizeNameOrExpr($name) {
+ if ($name instanceof Expr) {
+ return $name;
+ }
+
+ if (!is_string($name) && !($name instanceof Name)) {
+ throw new \LogicException(
+ 'Name must be a string or an instance of Node\Name or Node\Expr'
+ );
+ }
+
+ return self::normalizeName($name);
+ }
+
+ /**
+ * Normalizes a type: Converts plain-text type names into proper AST representation.
+ *
+ * In particular, builtin types become Identifiers, custom types become Names and nullables
+ * are wrapped in NullableType nodes.
+ *
+ * @param string|Name|Identifier|ComplexType $type The type to normalize
+ *
+ * @return Name|Identifier|ComplexType The normalized type
+ */
+ public static function normalizeType($type) {
+ if (!is_string($type)) {
+ if (
+ !$type instanceof Name && !$type instanceof Identifier &&
+ !$type instanceof ComplexType
+ ) {
+ throw new \LogicException(
+ 'Type must be a string, or an instance of Name, Identifier or ComplexType'
+ );
+ }
+ return $type;
+ }
+
+ $nullable = false;
+ if (strlen($type) > 0 && $type[0] === '?') {
+ $nullable = true;
+ $type = substr($type, 1);
+ }
+
+ $builtinTypes = [
+ 'array', 'callable', 'string', 'int', 'float', 'bool', 'iterable', 'void', 'object', 'mixed', 'never',
+ ];
+
+ $lowerType = strtolower($type);
+ if (in_array($lowerType, $builtinTypes)) {
+ $type = new Identifier($lowerType);
+ } else {
+ $type = self::normalizeName($type);
+ }
+
+ $notNullableTypes = [
+ 'void', 'mixed', 'never',
+ ];
+ if ($nullable && in_array((string) $type, $notNullableTypes)) {
+ throw new \LogicException(sprintf('%s type cannot be nullable', $type));
+ }
+
+ return $nullable ? new NullableType($type) : $type;
+ }
+
+ /**
+ * Normalizes a value: Converts nulls, booleans, integers,
+ * floats, strings and arrays into their respective nodes
+ *
+ * @param Node\Expr|bool|null|int|float|string|array $value The value to normalize
+ *
+ * @return Expr The normalized value
+ */
+ public static function normalizeValue($value) : Expr {
+ if ($value instanceof Node\Expr) {
+ return $value;
+ }
+
+ if (is_null($value)) {
+ return new Expr\ConstFetch(
+ new Name('null')
+ );
+ }
+
+ if (is_bool($value)) {
+ return new Expr\ConstFetch(
+ new Name($value ? 'true' : 'false')
+ );
+ }
+
+ if (is_int($value)) {
+ return new Scalar\LNumber($value);
+ }
+
+ if (is_float($value)) {
+ return new Scalar\DNumber($value);
+ }
+
+ if (is_string($value)) {
+ return new Scalar\String_($value);
+ }
+
+ if (is_array($value)) {
+ $items = [];
+ $lastKey = -1;
+ foreach ($value as $itemKey => $itemValue) {
+ // for consecutive, numeric keys don't generate keys
+ if (null !== $lastKey && ++$lastKey === $itemKey) {
+ $items[] = new Expr\ArrayItem(
+ self::normalizeValue($itemValue)
+ );
+ } else {
+ $lastKey = null;
+ $items[] = new Expr\ArrayItem(
+ self::normalizeValue($itemValue),
+ self::normalizeValue($itemKey)
+ );
+ }
+ }
+
+ return new Expr\Array_($items);
+ }
+
+ throw new \LogicException('Invalid value');
+ }
+
+ /**
+ * Normalizes a doc comment: Converts plain strings to PhpParser\Comment\Doc.
+ *
+ * @param Comment\Doc|string $docComment The doc comment to normalize
+ *
+ * @return Comment\Doc The normalized doc comment
+ */
+ public static function normalizeDocComment($docComment) : Comment\Doc {
+ if ($docComment instanceof Comment\Doc) {
+ return $docComment;
+ }
+
+ if (is_string($docComment)) {
+ return new Comment\Doc($docComment);
+ }
+
+ throw new \LogicException('Doc comment must be a string or an instance of PhpParser\Comment\Doc');
+ }
+
+ /**
+ * Normalizes a attribute: Converts attribute to the Attribute Group if needed.
+ *
+ * @param Node\Attribute|Node\AttributeGroup $attribute
+ *
+ * @return Node\AttributeGroup The Attribute Group
+ */
+ public static function normalizeAttribute($attribute) : Node\AttributeGroup
+ {
+ if ($attribute instanceof Node\AttributeGroup) {
+ return $attribute;
+ }
+
+ if (!($attribute instanceof Node\Attribute)) {
+ throw new \LogicException('Attribute must be an instance of PhpParser\Node\Attribute or PhpParser\Node\AttributeGroup');
+ }
+
+ return new Node\AttributeGroup([$attribute]);
+ }
+
+ /**
+ * Adds a modifier and returns new modifier bitmask.
+ *
+ * @param int $modifiers Existing modifiers
+ * @param int $modifier Modifier to set
+ *
+ * @return int New modifiers
+ */
+ public static function addModifier(int $modifiers, int $modifier) : int {
+ Stmt\Class_::verifyModifier($modifiers, $modifier);
+ return $modifiers | $modifier;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Comment.php b/vendor/nikic/php-parser/lib/PhpParser/Comment.php
new file mode 100644
index 000000000..61e98d3dc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Comment.php
@@ -0,0 +1,239 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+class Comment implements \JsonSerializable
+{
+ protected $text;
+ protected $startLine;
+ protected $startFilePos;
+ protected $startTokenPos;
+ protected $endLine;
+ protected $endFilePos;
+ protected $endTokenPos;
+
+ /**
+ * Constructs a comment node.
+ *
+ * @param string $text Comment text (including comment delimiters like /*)
+ * @param int $startLine Line number the comment started on
+ * @param int $startFilePos File offset the comment started on
+ * @param int $startTokenPos Token offset the comment started on
+ */
+ public function __construct(
+ string $text,
+ int $startLine = -1, int $startFilePos = -1, int $startTokenPos = -1,
+ int $endLine = -1, int $endFilePos = -1, int $endTokenPos = -1
+ ) {
+ $this->text = $text;
+ $this->startLine = $startLine;
+ $this->startFilePos = $startFilePos;
+ $this->startTokenPos = $startTokenPos;
+ $this->endLine = $endLine;
+ $this->endFilePos = $endFilePos;
+ $this->endTokenPos = $endTokenPos;
+ }
+
+ /**
+ * Gets the comment text.
+ *
+ * @return string The comment text (including comment delimiters like /*)
+ */
+ public function getText() : string {
+ return $this->text;
+ }
+
+ /**
+ * Gets the line number the comment started on.
+ *
+ * @return int Line number (or -1 if not available)
+ */
+ public function getStartLine() : int {
+ return $this->startLine;
+ }
+
+ /**
+ * Gets the file offset the comment started on.
+ *
+ * @return int File offset (or -1 if not available)
+ */
+ public function getStartFilePos() : int {
+ return $this->startFilePos;
+ }
+
+ /**
+ * Gets the token offset the comment started on.
+ *
+ * @return int Token offset (or -1 if not available)
+ */
+ public function getStartTokenPos() : int {
+ return $this->startTokenPos;
+ }
+
+ /**
+ * Gets the line number the comment ends on.
+ *
+ * @return int Line number (or -1 if not available)
+ */
+ public function getEndLine() : int {
+ return $this->endLine;
+ }
+
+ /**
+ * Gets the file offset the comment ends on.
+ *
+ * @return int File offset (or -1 if not available)
+ */
+ public function getEndFilePos() : int {
+ return $this->endFilePos;
+ }
+
+ /**
+ * Gets the token offset the comment ends on.
+ *
+ * @return int Token offset (or -1 if not available)
+ */
+ public function getEndTokenPos() : int {
+ return $this->endTokenPos;
+ }
+
+ /**
+ * Gets the line number the comment started on.
+ *
+ * @deprecated Use getStartLine() instead
+ *
+ * @return int Line number
+ */
+ public function getLine() : int {
+ return $this->startLine;
+ }
+
+ /**
+ * Gets the file offset the comment started on.
+ *
+ * @deprecated Use getStartFilePos() instead
+ *
+ * @return int File offset
+ */
+ public function getFilePos() : int {
+ return $this->startFilePos;
+ }
+
+ /**
+ * Gets the token offset the comment started on.
+ *
+ * @deprecated Use getStartTokenPos() instead
+ *
+ * @return int Token offset
+ */
+ public function getTokenPos() : int {
+ return $this->startTokenPos;
+ }
+
+ /**
+ * Gets the comment text.
+ *
+ * @return string The comment text (including comment delimiters like /*)
+ */
+ public function __toString() : string {
+ return $this->text;
+ }
+
+ /**
+ * Gets the reformatted comment text.
+ *
+ * "Reformatted" here means that we try to clean up the whitespace at the
+ * starts of the lines. This is necessary because we receive the comments
+ * without trailing whitespace on the first line, but with trailing whitespace
+ * on all subsequent lines.
+ *
+ * @return mixed|string
+ */
+ public function getReformattedText() {
+ $text = trim($this->text);
+ $newlinePos = strpos($text, "\n");
+ if (false === $newlinePos) {
+ // Single line comments don't need further processing
+ return $text;
+ } elseif (preg_match('((*BSR_ANYCRLF)(*ANYCRLF)^.*(?:\R\s+\*.*)+$)', $text)) {
+ // Multi line comment of the type
+ //
+ // /*
+ // * Some text.
+ // * Some more text.
+ // */
+ //
+ // is handled by replacing the whitespace sequences before the * by a single space
+ return preg_replace('(^\s+\*)m', ' *', $this->text);
+ } elseif (preg_match('(^/\*\*?\s*[\r\n])', $text) && preg_match('(\n(\s*)\*/$)', $text, $matches)) {
+ // Multi line comment of the type
+ //
+ // /*
+ // Some text.
+ // Some more text.
+ // */
+ //
+ // is handled by removing the whitespace sequence on the line before the closing
+ // */ on all lines. So if the last line is " */", then " " is removed at the
+ // start of all lines.
+ return preg_replace('(^' . preg_quote($matches[1]) . ')m', '', $text);
+ } elseif (preg_match('(^/\*\*?\s*(?!\s))', $text, $matches)) {
+ // Multi line comment of the type
+ //
+ // /* Some text.
+ // Some more text.
+ // Indented text.
+ // Even more text. */
+ //
+ // is handled by removing the difference between the shortest whitespace prefix on all
+ // lines and the length of the "/* " opening sequence.
+ $prefixLen = $this->getShortestWhitespacePrefixLen(substr($text, $newlinePos + 1));
+ $removeLen = $prefixLen - strlen($matches[0]);
+ return preg_replace('(^\s{' . $removeLen . '})m', '', $text);
+ }
+
+ // No idea how to format this comment, so simply return as is
+ return $text;
+ }
+
+ /**
+ * Get length of shortest whitespace prefix (at the start of a line).
+ *
+ * If there is a line with no prefix whitespace, 0 is a valid return value.
+ *
+ * @param string $str String to check
+ * @return int Length in characters. Tabs count as single characters.
+ */
+ private function getShortestWhitespacePrefixLen(string $str) : int {
+ $lines = explode("\n", $str);
+ $shortestPrefixLen = \INF;
+ foreach ($lines as $line) {
+ preg_match('(^\s*)', $line, $matches);
+ $prefixLen = strlen($matches[0]);
+ if ($prefixLen < $shortestPrefixLen) {
+ $shortestPrefixLen = $prefixLen;
+ }
+ }
+ return $shortestPrefixLen;
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{nodeType:string, text:mixed, line:mixed, filePos:mixed}
+ */
+ public function jsonSerialize() : array {
+ // Technically not a node, but we make it look like one anyway
+ $type = $this instanceof Comment\Doc ? 'Comment_Doc' : 'Comment';
+ return [
+ 'nodeType' => $type,
+ 'text' => $this->text,
+ // TODO: Rename these to include "start".
+ 'line' => $this->startLine,
+ 'filePos' => $this->startFilePos,
+ 'tokenPos' => $this->startTokenPos,
+ 'endLine' => $this->endLine,
+ 'endFilePos' => $this->endFilePos,
+ 'endTokenPos' => $this->endTokenPos,
+ ];
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php b/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php
new file mode 100644
index 000000000..a9db6128f
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Comment/Doc.php
@@ -0,0 +1,7 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Comment;
+
+class Doc extends \PhpParser\Comment
+{
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php b/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php
new file mode 100644
index 000000000..49c92d595
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluationException.php
@@ -0,0 +1,6 @@
+<?php
+
+namespace PhpParser;
+
+class ConstExprEvaluationException extends \Exception
+{}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php b/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php
new file mode 100644
index 000000000..7131c3d25
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/ConstExprEvaluator.php
@@ -0,0 +1,229 @@
+<?php
+
+namespace PhpParser;
+
+use function array_merge;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Scalar;
+
+/**
+ * Evaluates constant expressions.
+ *
+ * This evaluator is able to evaluate all constant expressions (as defined by PHP), which can be
+ * evaluated without further context. If a subexpression is not of this type, a user-provided
+ * fallback evaluator is invoked. To support all constant expressions that are also supported by
+ * PHP (and not already handled by this class), the fallback evaluator must be able to handle the
+ * following node types:
+ *
+ * * All Scalar\MagicConst\* nodes.
+ * * Expr\ConstFetch nodes. Only null/false/true are already handled by this class.
+ * * Expr\ClassConstFetch nodes.
+ *
+ * The fallback evaluator should throw ConstExprEvaluationException for nodes it cannot evaluate.
+ *
+ * The evaluation is dependent on runtime configuration in two respects: Firstly, floating
+ * point to string conversions are affected by the precision ini setting. Secondly, they are also
+ * affected by the LC_NUMERIC locale.
+ */
+class ConstExprEvaluator
+{
+ private $fallbackEvaluator;
+
+ /**
+ * Create a constant expression evaluator.
+ *
+ * The provided fallback evaluator is invoked whenever a subexpression cannot be evaluated. See
+ * class doc comment for more information.
+ *
+ * @param callable|null $fallbackEvaluator To call if subexpression cannot be evaluated
+ */
+ public function __construct(callable $fallbackEvaluator = null) {
+ $this->fallbackEvaluator = $fallbackEvaluator ?? function(Expr $expr) {
+ throw new ConstExprEvaluationException(
+ "Expression of type {$expr->getType()} cannot be evaluated"
+ );
+ };
+ }
+
+ /**
+ * Silently evaluates a constant expression into a PHP value.
+ *
+ * Thrown Errors, warnings or notices will be converted into a ConstExprEvaluationException.
+ * The original source of the exception is available through getPrevious().
+ *
+ * If some part of the expression cannot be evaluated, the fallback evaluator passed to the
+ * constructor will be invoked. By default, if no fallback is provided, an exception of type
+ * ConstExprEvaluationException is thrown.
+ *
+ * See class doc comment for caveats and limitations.
+ *
+ * @param Expr $expr Constant expression to evaluate
+ * @return mixed Result of evaluation
+ *
+ * @throws ConstExprEvaluationException if the expression cannot be evaluated or an error occurred
+ */
+ public function evaluateSilently(Expr $expr) {
+ set_error_handler(function($num, $str, $file, $line) {
+ throw new \ErrorException($str, 0, $num, $file, $line);
+ });
+
+ try {
+ return $this->evaluate($expr);
+ } catch (\Throwable $e) {
+ if (!$e instanceof ConstExprEvaluationException) {
+ $e = new ConstExprEvaluationException(
+ "An error occurred during constant expression evaluation", 0, $e);
+ }
+ throw $e;
+ } finally {
+ restore_error_handler();
+ }
+ }
+
+ /**
+ * Directly evaluates a constant expression into a PHP value.
+ *
+ * May generate Error exceptions, warnings or notices. Use evaluateSilently() to convert these
+ * into a ConstExprEvaluationException.
+ *
+ * If some part of the expression cannot be evaluated, the fallback evaluator passed to the
+ * constructor will be invoked. By default, if no fallback is provided, an exception of type
+ * ConstExprEvaluationException is thrown.
+ *
+ * See class doc comment for caveats and limitations.
+ *
+ * @param Expr $expr Constant expression to evaluate
+ * @return mixed Result of evaluation
+ *
+ * @throws ConstExprEvaluationException if the expression cannot be evaluated
+ */
+ public function evaluateDirectly(Expr $expr) {
+ return $this->evaluate($expr);
+ }
+
+ private function evaluate(Expr $expr) {
+ if ($expr instanceof Scalar\LNumber
+ || $expr instanceof Scalar\DNumber
+ || $expr instanceof Scalar\String_
+ ) {
+ return $expr->value;
+ }
+
+ if ($expr instanceof Expr\Array_) {
+ return $this->evaluateArray($expr);
+ }
+
+ // Unary operators
+ if ($expr instanceof Expr\UnaryPlus) {
+ return +$this->evaluate($expr->expr);
+ }
+ if ($expr instanceof Expr\UnaryMinus) {
+ return -$this->evaluate($expr->expr);
+ }
+ if ($expr instanceof Expr\BooleanNot) {
+ return !$this->evaluate($expr->expr);
+ }
+ if ($expr instanceof Expr\BitwiseNot) {
+ return ~$this->evaluate($expr->expr);
+ }
+
+ if ($expr instanceof Expr\BinaryOp) {
+ return $this->evaluateBinaryOp($expr);
+ }
+
+ if ($expr instanceof Expr\Ternary) {
+ return $this->evaluateTernary($expr);
+ }
+
+ if ($expr instanceof Expr\ArrayDimFetch && null !== $expr->dim) {
+ return $this->evaluate($expr->var)[$this->evaluate($expr->dim)];
+ }
+
+ if ($expr instanceof Expr\ConstFetch) {
+ return $this->evaluateConstFetch($expr);
+ }
+
+ return ($this->fallbackEvaluator)($expr);
+ }
+
+ private function evaluateArray(Expr\Array_ $expr) {
+ $array = [];
+ foreach ($expr->items as $item) {
+ if (null !== $item->key) {
+ $array[$this->evaluate($item->key)] = $this->evaluate($item->value);
+ } elseif ($item->unpack) {
+ $array = array_merge($array, $this->evaluate($item->value));
+ } else {
+ $array[] = $this->evaluate($item->value);
+ }
+ }
+ return $array;
+ }
+
+ private function evaluateTernary(Expr\Ternary $expr) {
+ if (null === $expr->if) {
+ return $this->evaluate($expr->cond) ?: $this->evaluate($expr->else);
+ }
+
+ return $this->evaluate($expr->cond)
+ ? $this->evaluate($expr->if)
+ : $this->evaluate($expr->else);
+ }
+
+ private function evaluateBinaryOp(Expr\BinaryOp $expr) {
+ if ($expr instanceof Expr\BinaryOp\Coalesce
+ && $expr->left instanceof Expr\ArrayDimFetch
+ ) {
+ // This needs to be special cased to respect BP_VAR_IS fetch semantics
+ return $this->evaluate($expr->left->var)[$this->evaluate($expr->left->dim)]
+ ?? $this->evaluate($expr->right);
+ }
+
+ // The evaluate() calls are repeated in each branch, because some of the operators are
+ // short-circuiting and evaluating the RHS in advance may be illegal in that case
+ $l = $expr->left;
+ $r = $expr->right;
+ switch ($expr->getOperatorSigil()) {
+ case '&': return $this->evaluate($l) & $this->evaluate($r);
+ case '|': return $this->evaluate($l) | $this->evaluate($r);
+ case '^': return $this->evaluate($l) ^ $this->evaluate($r);
+ case '&&': return $this->evaluate($l) && $this->evaluate($r);
+ case '||': return $this->evaluate($l) || $this->evaluate($r);
+ case '??': return $this->evaluate($l) ?? $this->evaluate($r);
+ case '.': return $this->evaluate($l) . $this->evaluate($r);
+ case '/': return $this->evaluate($l) / $this->evaluate($r);
+ case '==': return $this->evaluate($l) == $this->evaluate($r);
+ case '>': return $this->evaluate($l) > $this->evaluate($r);
+ case '>=': return $this->evaluate($l) >= $this->evaluate($r);
+ case '===': return $this->evaluate($l) === $this->evaluate($r);
+ case 'and': return $this->evaluate($l) and $this->evaluate($r);
+ case 'or': return $this->evaluate($l) or $this->evaluate($r);
+ case 'xor': return $this->evaluate($l) xor $this->evaluate($r);
+ case '-': return $this->evaluate($l) - $this->evaluate($r);
+ case '%': return $this->evaluate($l) % $this->evaluate($r);
+ case '*': return $this->evaluate($l) * $this->evaluate($r);
+ case '!=': return $this->evaluate($l) != $this->evaluate($r);
+ case '!==': return $this->evaluate($l) !== $this->evaluate($r);
+ case '+': return $this->evaluate($l) + $this->evaluate($r);
+ case '**': return $this->evaluate($l) ** $this->evaluate($r);
+ case '<<': return $this->evaluate($l) << $this->evaluate($r);
+ case '>>': return $this->evaluate($l) >> $this->evaluate($r);
+ case '<': return $this->evaluate($l) < $this->evaluate($r);
+ case '<=': return $this->evaluate($l) <= $this->evaluate($r);
+ case '<=>': return $this->evaluate($l) <=> $this->evaluate($r);
+ }
+
+ throw new \Exception('Should not happen');
+ }
+
+ private function evaluateConstFetch(Expr\ConstFetch $expr) {
+ $name = $expr->name->toLowerString();
+ switch ($name) {
+ case 'null': return null;
+ case 'false': return false;
+ case 'true': return true;
+ }
+
+ return ($this->fallbackEvaluator)($expr);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Error.php b/vendor/nikic/php-parser/lib/PhpParser/Error.php
new file mode 100644
index 000000000..d1fb959d1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Error.php
@@ -0,0 +1,180 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+class Error extends \RuntimeException
+{
+ protected $rawMessage;
+ protected $attributes;
+
+ /**
+ * Creates an Exception signifying a parse error.
+ *
+ * @param string $message Error message
+ * @param array|int $attributes Attributes of node/token where error occurred
+ * (or start line of error -- deprecated)
+ */
+ public function __construct(string $message, $attributes = []) {
+ $this->rawMessage = $message;
+ if (is_array($attributes)) {
+ $this->attributes = $attributes;
+ } else {
+ $this->attributes = ['startLine' => $attributes];
+ }
+ $this->updateMessage();
+ }
+
+ /**
+ * Gets the error message
+ *
+ * @return string Error message
+ */
+ public function getRawMessage() : string {
+ return $this->rawMessage;
+ }
+
+ /**
+ * Gets the line the error starts in.
+ *
+ * @return int Error start line
+ */
+ public function getStartLine() : int {
+ return $this->attributes['startLine'] ?? -1;
+ }
+
+ /**
+ * Gets the line the error ends in.
+ *
+ * @return int Error end line
+ */
+ public function getEndLine() : int {
+ return $this->attributes['endLine'] ?? -1;
+ }
+
+ /**
+ * Gets the attributes of the node/token the error occurred at.
+ *
+ * @return array
+ */
+ public function getAttributes() : array {
+ return $this->attributes;
+ }
+
+ /**
+ * Sets the attributes of the node/token the error occurred at.
+ *
+ * @param array $attributes
+ */
+ public function setAttributes(array $attributes) {
+ $this->attributes = $attributes;
+ $this->updateMessage();
+ }
+
+ /**
+ * Sets the line of the PHP file the error occurred in.
+ *
+ * @param string $message Error message
+ */
+ public function setRawMessage(string $message) {
+ $this->rawMessage = $message;
+ $this->updateMessage();
+ }
+
+ /**
+ * Sets the line the error starts in.
+ *
+ * @param int $line Error start line
+ */
+ public function setStartLine(int $line) {
+ $this->attributes['startLine'] = $line;
+ $this->updateMessage();
+ }
+
+ /**
+ * Returns whether the error has start and end column information.
+ *
+ * For column information enable the startFilePos and endFilePos in the lexer options.
+ *
+ * @return bool
+ */
+ public function hasColumnInfo() : bool {
+ return isset($this->attributes['startFilePos'], $this->attributes['endFilePos']);
+ }
+
+ /**
+ * Gets the start column (1-based) into the line where the error started.
+ *
+ * @param string $code Source code of the file
+ * @return int
+ */
+ public function getStartColumn(string $code) : int {
+ if (!$this->hasColumnInfo()) {
+ throw new \RuntimeException('Error does not have column information');
+ }
+
+ return $this->toColumn($code, $this->attributes['startFilePos']);
+ }
+
+ /**
+ * Gets the end column (1-based) into the line where the error ended.
+ *
+ * @param string $code Source code of the file
+ * @return int
+ */
+ public function getEndColumn(string $code) : int {
+ if (!$this->hasColumnInfo()) {
+ throw new \RuntimeException('Error does not have column information');
+ }
+
+ return $this->toColumn($code, $this->attributes['endFilePos']);
+ }
+
+ /**
+ * Formats message including line and column information.
+ *
+ * @param string $code Source code associated with the error, for calculation of the columns
+ *
+ * @return string Formatted message
+ */
+ public function getMessageWithColumnInfo(string $code) : string {
+ return sprintf(
+ '%s from %d:%d to %d:%d', $this->getRawMessage(),
+ $this->getStartLine(), $this->getStartColumn($code),
+ $this->getEndLine(), $this->getEndColumn($code)
+ );
+ }
+
+ /**
+ * Converts a file offset into a column.
+ *
+ * @param string $code Source code that $pos indexes into
+ * @param int $pos 0-based position in $code
+ *
+ * @return int 1-based column (relative to start of line)
+ */
+ private function toColumn(string $code, int $pos) : int {
+ if ($pos > strlen($code)) {
+ throw new \RuntimeException('Invalid position information');
+ }
+
+ $lineStartPos = strrpos($code, "\n", $pos - strlen($code));
+ if (false === $lineStartPos) {
+ $lineStartPos = -1;
+ }
+
+ return $pos - $lineStartPos;
+ }
+
+ /**
+ * Updates the exception message after a change to rawMessage or rawLine.
+ */
+ protected function updateMessage() {
+ $this->message = $this->rawMessage;
+
+ if (-1 === $this->getStartLine()) {
+ $this->message .= ' on unknown line';
+ } else {
+ $this->message .= ' on line ' . $this->getStartLine();
+ }
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php b/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php
new file mode 100644
index 000000000..d620e7453
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler.php
@@ -0,0 +1,13 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+interface ErrorHandler
+{
+ /**
+ * Handle an error generated during lexing, parsing or some other operation.
+ *
+ * @param Error $error The error that needs to be handled
+ */
+ public function handleError(Error $error);
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php b/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php
new file mode 100644
index 000000000..784b61b14
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Collecting.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\ErrorHandler;
+
+use PhpParser\Error;
+use PhpParser\ErrorHandler;
+
+/**
+ * Error handler that collects all errors into an array.
+ *
+ * This allows graceful handling of errors.
+ */
+class Collecting implements ErrorHandler
+{
+ /** @var Error[] Collected errors */
+ private $errors = [];
+
+ public function handleError(Error $error) {
+ $this->errors[] = $error;
+ }
+
+ /**
+ * Get collected errors.
+ *
+ * @return Error[]
+ */
+ public function getErrors() : array {
+ return $this->errors;
+ }
+
+ /**
+ * Check whether there are any errors.
+ *
+ * @return bool
+ */
+ public function hasErrors() : bool {
+ return !empty($this->errors);
+ }
+
+ /**
+ * Reset/clear collected errors.
+ */
+ public function clearErrors() {
+ $this->errors = [];
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php b/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php
new file mode 100644
index 000000000..aeee989b1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/ErrorHandler/Throwing.php
@@ -0,0 +1,18 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\ErrorHandler;
+
+use PhpParser\Error;
+use PhpParser\ErrorHandler;
+
+/**
+ * Error handler that handles all errors by throwing them.
+ *
+ * This is the default strategy used by all components.
+ */
+class Throwing implements ErrorHandler
+{
+ public function handleError(Error $error) {
+ throw $error;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php
new file mode 100644
index 000000000..a38b57ba9
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Internal/DiffElem.php
@@ -0,0 +1,27 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Internal;
+
+/**
+ * @internal
+ */
+class DiffElem
+{
+ const TYPE_KEEP = 0;
+ const TYPE_REMOVE = 1;
+ const TYPE_ADD = 2;
+ const TYPE_REPLACE = 3;
+
+ /** @var int One of the TYPE_* constants */
+ public $type;
+ /** @var mixed Is null for add operations */
+ public $old;
+ /** @var mixed Is null for remove operations */
+ public $new;
+
+ public function __construct(int $type, $old, $new) {
+ $this->type = $type;
+ $this->old = $old;
+ $this->new = $new;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php
new file mode 100644
index 000000000..7f218c74f
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Internal/Differ.php
@@ -0,0 +1,164 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Internal;
+
+/**
+ * Implements the Myers diff algorithm.
+ *
+ * Myers, Eugene W. "An O (ND) difference algorithm and its variations."
+ * Algorithmica 1.1 (1986): 251-266.
+ *
+ * @internal
+ */
+class Differ
+{
+ private $isEqual;
+
+ /**
+ * Create differ over the given equality relation.
+ *
+ * @param callable $isEqual Equality relation with signature function($a, $b) : bool
+ */
+ public function __construct(callable $isEqual) {
+ $this->isEqual = $isEqual;
+ }
+
+ /**
+ * Calculate diff (edit script) from $old to $new.
+ *
+ * @param array $old Original array
+ * @param array $new New array
+ *
+ * @return DiffElem[] Diff (edit script)
+ */
+ public function diff(array $old, array $new) {
+ list($trace, $x, $y) = $this->calculateTrace($old, $new);
+ return $this->extractDiff($trace, $x, $y, $old, $new);
+ }
+
+ /**
+ * Calculate diff, including "replace" operations.
+ *
+ * If a sequence of remove operations is followed by the same number of add operations, these
+ * will be coalesced into replace operations.
+ *
+ * @param array $old Original array
+ * @param array $new New array
+ *
+ * @return DiffElem[] Diff (edit script), including replace operations
+ */
+ public function diffWithReplacements(array $old, array $new) {
+ return $this->coalesceReplacements($this->diff($old, $new));
+ }
+
+ private function calculateTrace(array $a, array $b) {
+ $n = \count($a);
+ $m = \count($b);
+ $max = $n + $m;
+ $v = [1 => 0];
+ $trace = [];
+ for ($d = 0; $d <= $max; $d++) {
+ $trace[] = $v;
+ for ($k = -$d; $k <= $d; $k += 2) {
+ if ($k === -$d || ($k !== $d && $v[$k-1] < $v[$k+1])) {
+ $x = $v[$k+1];
+ } else {
+ $x = $v[$k-1] + 1;
+ }
+
+ $y = $x - $k;
+ while ($x < $n && $y < $m && ($this->isEqual)($a[$x], $b[$y])) {
+ $x++;
+ $y++;
+ }
+
+ $v[$k] = $x;
+ if ($x >= $n && $y >= $m) {
+ return [$trace, $x, $y];
+ }
+ }
+ }
+ throw new \Exception('Should not happen');
+ }
+
+ private function extractDiff(array $trace, int $x, int $y, array $a, array $b) {
+ $result = [];
+ for ($d = \count($trace) - 1; $d >= 0; $d--) {
+ $v = $trace[$d];
+ $k = $x - $y;
+
+ if ($k === -$d || ($k !== $d && $v[$k-1] < $v[$k+1])) {
+ $prevK = $k + 1;
+ } else {
+ $prevK = $k - 1;
+ }
+
+ $prevX = $v[$prevK];
+ $prevY = $prevX - $prevK;
+
+ while ($x > $prevX && $y > $prevY) {
+ $result[] = new DiffElem(DiffElem::TYPE_KEEP, $a[$x-1], $b[$y-1]);
+ $x--;
+ $y--;
+ }
+
+ if ($d === 0) {
+ break;
+ }
+
+ while ($x > $prevX) {
+ $result[] = new DiffElem(DiffElem::TYPE_REMOVE, $a[$x-1], null);
+ $x--;
+ }
+
+ while ($y > $prevY) {
+ $result[] = new DiffElem(DiffElem::TYPE_ADD, null, $b[$y-1]);
+ $y--;
+ }
+ }
+ return array_reverse($result);
+ }
+
+ /**
+ * Coalesce equal-length sequences of remove+add into a replace operation.
+ *
+ * @param DiffElem[] $diff
+ * @return DiffElem[]
+ */
+ private function coalesceReplacements(array $diff) {
+ $newDiff = [];
+ $c = \count($diff);
+ for ($i = 0; $i < $c; $i++) {
+ $diffType = $diff[$i]->type;
+ if ($diffType !== DiffElem::TYPE_REMOVE) {
+ $newDiff[] = $diff[$i];
+ continue;
+ }
+
+ $j = $i;
+ while ($j < $c && $diff[$j]->type === DiffElem::TYPE_REMOVE) {
+ $j++;
+ }
+
+ $k = $j;
+ while ($k < $c && $diff[$k]->type === DiffElem::TYPE_ADD) {
+ $k++;
+ }
+
+ if ($j - $i === $k - $j) {
+ $len = $j - $i;
+ for ($n = 0; $n < $len; $n++) {
+ $newDiff[] = new DiffElem(
+ DiffElem::TYPE_REPLACE, $diff[$i + $n]->old, $diff[$j + $n]->new
+ );
+ }
+ } else {
+ for (; $i < $k; $i++) {
+ $newDiff[] = $diff[$i];
+ }
+ }
+ $i = $k - 1;
+ }
+ return $newDiff;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
new file mode 100644
index 000000000..3eeac04a4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Internal/PrintableNewAnonClassNode.php
@@ -0,0 +1,61 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Internal;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+
+/**
+ * This node is used internally by the format-preserving pretty printer to print anonymous classes.
+ *
+ * The normal anonymous class structure violates assumptions about the order of token offsets.
+ * Namely, the constructor arguments are part of the Expr\New_ node and follow the class node, even
+ * though they are actually interleaved with them. This special node type is used temporarily to
+ * restore a sane token offset order.
+ *
+ * @internal
+ */
+class PrintableNewAnonClassNode extends Expr
+{
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+ /** @var Node\Arg[] Arguments */
+ public $args;
+ /** @var null|Node\Name Name of extended class */
+ public $extends;
+ /** @var Node\Name[] Names of implemented interfaces */
+ public $implements;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ public function __construct(
+ array $attrGroups, array $args, Node\Name $extends = null, array $implements,
+ array $stmts, array $attributes
+ ) {
+ parent::__construct($attributes);
+ $this->attrGroups = $attrGroups;
+ $this->args = $args;
+ $this->extends = $extends;
+ $this->implements = $implements;
+ $this->stmts = $stmts;
+ }
+
+ public static function fromNewNode(Expr\New_ $newNode) {
+ $class = $newNode->class;
+ assert($class instanceof Node\Stmt\Class_);
+ // We don't assert that $class->name is null here, to allow consumers to assign unique names
+ // to anonymous classes for their own purposes. We simplify ignore the name here.
+ return new self(
+ $class->attrGroups, $newNode->args, $class->extends, $class->implements,
+ $class->stmts, $newNode->getAttributes()
+ );
+ }
+
+ public function getType() : string {
+ return 'Expr_PrintableNewAnonClass';
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'args', 'extends', 'implements', 'stmts'];
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php b/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php
new file mode 100644
index 000000000..84c0175ec
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Internal/TokenStream.php
@@ -0,0 +1,281 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Internal;
+
+/**
+ * Provides operations on token streams, for use by pretty printer.
+ *
+ * @internal
+ */
+class TokenStream
+{
+ /** @var array Tokens (in token_get_all format) */
+ private $tokens;
+ /** @var int[] Map from position to indentation */
+ private $indentMap;
+
+ /**
+ * Create token stream instance.
+ *
+ * @param array $tokens Tokens in token_get_all() format
+ */
+ public function __construct(array $tokens) {
+ $this->tokens = $tokens;
+ $this->indentMap = $this->calcIndentMap();
+ }
+
+ /**
+ * Whether the given position is immediately surrounded by parenthesis.
+ *
+ * @param int $startPos Start position
+ * @param int $endPos End position
+ *
+ * @return bool
+ */
+ public function haveParens(int $startPos, int $endPos) : bool {
+ return $this->haveTokenImmediatelyBefore($startPos, '(')
+ && $this->haveTokenImmediatelyAfter($endPos, ')');
+ }
+
+ /**
+ * Whether the given position is immediately surrounded by braces.
+ *
+ * @param int $startPos Start position
+ * @param int $endPos End position
+ *
+ * @return bool
+ */
+ public function haveBraces(int $startPos, int $endPos) : bool {
+ return ($this->haveTokenImmediatelyBefore($startPos, '{')
+ || $this->haveTokenImmediatelyBefore($startPos, T_CURLY_OPEN))
+ && $this->haveTokenImmediatelyAfter($endPos, '}');
+ }
+
+ /**
+ * Check whether the position is directly preceded by a certain token type.
+ *
+ * During this check whitespace and comments are skipped.
+ *
+ * @param int $pos Position before which the token should occur
+ * @param int|string $expectedTokenType Token to check for
+ *
+ * @return bool Whether the expected token was found
+ */
+ public function haveTokenImmediatelyBefore(int $pos, $expectedTokenType) : bool {
+ $tokens = $this->tokens;
+ $pos--;
+ for (; $pos >= 0; $pos--) {
+ $tokenType = $tokens[$pos][0];
+ if ($tokenType === $expectedTokenType) {
+ return true;
+ }
+ if ($tokenType !== \T_WHITESPACE
+ && $tokenType !== \T_COMMENT && $tokenType !== \T_DOC_COMMENT) {
+ break;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Check whether the position is directly followed by a certain token type.
+ *
+ * During this check whitespace and comments are skipped.
+ *
+ * @param int $pos Position after which the token should occur
+ * @param int|string $expectedTokenType Token to check for
+ *
+ * @return bool Whether the expected token was found
+ */
+ public function haveTokenImmediatelyAfter(int $pos, $expectedTokenType) : bool {
+ $tokens = $this->tokens;
+ $pos++;
+ for (; $pos < \count($tokens); $pos++) {
+ $tokenType = $tokens[$pos][0];
+ if ($tokenType === $expectedTokenType) {
+ return true;
+ }
+ if ($tokenType !== \T_WHITESPACE
+ && $tokenType !== \T_COMMENT && $tokenType !== \T_DOC_COMMENT) {
+ break;
+ }
+ }
+ return false;
+ }
+
+ public function skipLeft(int $pos, $skipTokenType) {
+ $tokens = $this->tokens;
+
+ $pos = $this->skipLeftWhitespace($pos);
+ if ($skipTokenType === \T_WHITESPACE) {
+ return $pos;
+ }
+
+ if ($tokens[$pos][0] !== $skipTokenType) {
+ // Shouldn't happen. The skip token MUST be there
+ throw new \Exception('Encountered unexpected token');
+ }
+ $pos--;
+
+ return $this->skipLeftWhitespace($pos);
+ }
+
+ public function skipRight(int $pos, $skipTokenType) {
+ $tokens = $this->tokens;
+
+ $pos = $this->skipRightWhitespace($pos);
+ if ($skipTokenType === \T_WHITESPACE) {
+ return $pos;
+ }
+
+ if ($tokens[$pos][0] !== $skipTokenType) {
+ // Shouldn't happen. The skip token MUST be there
+ throw new \Exception('Encountered unexpected token');
+ }
+ $pos++;
+
+ return $this->skipRightWhitespace($pos);
+ }
+
+ /**
+ * Return first non-whitespace token position smaller or equal to passed position.
+ *
+ * @param int $pos Token position
+ * @return int Non-whitespace token position
+ */
+ public function skipLeftWhitespace(int $pos) {
+ $tokens = $this->tokens;
+ for (; $pos >= 0; $pos--) {
+ $type = $tokens[$pos][0];
+ if ($type !== \T_WHITESPACE && $type !== \T_COMMENT && $type !== \T_DOC_COMMENT) {
+ break;
+ }
+ }
+ return $pos;
+ }
+
+ /**
+ * Return first non-whitespace position greater or equal to passed position.
+ *
+ * @param int $pos Token position
+ * @return int Non-whitespace token position
+ */
+ public function skipRightWhitespace(int $pos) {
+ $tokens = $this->tokens;
+ for ($count = \count($tokens); $pos < $count; $pos++) {
+ $type = $tokens[$pos][0];
+ if ($type !== \T_WHITESPACE && $type !== \T_COMMENT && $type !== \T_DOC_COMMENT) {
+ break;
+ }
+ }
+ return $pos;
+ }
+
+ public function findRight(int $pos, $findTokenType) {
+ $tokens = $this->tokens;
+ for ($count = \count($tokens); $pos < $count; $pos++) {
+ $type = $tokens[$pos][0];
+ if ($type === $findTokenType) {
+ return $pos;
+ }
+ }
+ return -1;
+ }
+
+ /**
+ * Whether the given position range contains a certain token type.
+ *
+ * @param int $startPos Starting position (inclusive)
+ * @param int $endPos Ending position (exclusive)
+ * @param int|string $tokenType Token type to look for
+ * @return bool Whether the token occurs in the given range
+ */
+ public function haveTokenInRange(int $startPos, int $endPos, $tokenType) {
+ $tokens = $this->tokens;
+ for ($pos = $startPos; $pos < $endPos; $pos++) {
+ if ($tokens[$pos][0] === $tokenType) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public function haveBracesInRange(int $startPos, int $endPos) {
+ return $this->haveTokenInRange($startPos, $endPos, '{')
+ || $this->haveTokenInRange($startPos, $endPos, T_CURLY_OPEN)
+ || $this->haveTokenInRange($startPos, $endPos, '}');
+ }
+
+ /**
+ * Get indentation before token position.
+ *
+ * @param int $pos Token position
+ *
+ * @return int Indentation depth (in spaces)
+ */
+ public function getIndentationBefore(int $pos) : int {
+ return $this->indentMap[$pos];
+ }
+
+ /**
+ * Get the code corresponding to a token offset range, optionally adjusted for indentation.
+ *
+ * @param int $from Token start position (inclusive)
+ * @param int $to Token end position (exclusive)
+ * @param int $indent By how much the code should be indented (can be negative as well)
+ *
+ * @return string Code corresponding to token range, adjusted for indentation
+ */
+ public function getTokenCode(int $from, int $to, int $indent) : string {
+ $tokens = $this->tokens;
+ $result = '';
+ for ($pos = $from; $pos < $to; $pos++) {
+ $token = $tokens[$pos];
+ if (\is_array($token)) {
+ $type = $token[0];
+ $content = $token[1];
+ if ($type === \T_CONSTANT_ENCAPSED_STRING || $type === \T_ENCAPSED_AND_WHITESPACE) {
+ $result .= $content;
+ } else {
+ // TODO Handle non-space indentation
+ if ($indent < 0) {
+ $result .= str_replace("\n" . str_repeat(" ", -$indent), "\n", $content);
+ } elseif ($indent > 0) {
+ $result .= str_replace("\n", "\n" . str_repeat(" ", $indent), $content);
+ } else {
+ $result .= $content;
+ }
+ }
+ } else {
+ $result .= $token;
+ }
+ }
+ return $result;
+ }
+
+ /**
+ * Precalculate the indentation at every token position.
+ *
+ * @return int[] Token position to indentation map
+ */
+ private function calcIndentMap() {
+ $indentMap = [];
+ $indent = 0;
+ foreach ($this->tokens as $token) {
+ $indentMap[] = $indent;
+
+ if ($token[0] === \T_WHITESPACE) {
+ $content = $token[1];
+ $newlinePos = \strrpos($content, "\n");
+ if (false !== $newlinePos) {
+ $indent = \strlen($content) - $newlinePos - 1;
+ }
+ }
+ }
+
+ // Add a sentinel for one past end of the file
+ $indentMap[] = $indent;
+
+ return $indentMap;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php b/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php
new file mode 100644
index 000000000..47d2003d4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/JsonDecoder.php
@@ -0,0 +1,103 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+class JsonDecoder
+{
+ /** @var \ReflectionClass[] Node type to reflection class map */
+ private $reflectionClassCache;
+
+ public function decode(string $json) {
+ $value = json_decode($json, true);
+ if (json_last_error()) {
+ throw new \RuntimeException('JSON decoding error: ' . json_last_error_msg());
+ }
+
+ return $this->decodeRecursive($value);
+ }
+
+ private function decodeRecursive($value) {
+ if (\is_array($value)) {
+ if (isset($value['nodeType'])) {
+ if ($value['nodeType'] === 'Comment' || $value['nodeType'] === 'Comment_Doc') {
+ return $this->decodeComment($value);
+ }
+ return $this->decodeNode($value);
+ }
+ return $this->decodeArray($value);
+ }
+ return $value;
+ }
+
+ private function decodeArray(array $array) : array {
+ $decodedArray = [];
+ foreach ($array as $key => $value) {
+ $decodedArray[$key] = $this->decodeRecursive($value);
+ }
+ return $decodedArray;
+ }
+
+ private function decodeNode(array $value) : Node {
+ $nodeType = $value['nodeType'];
+ if (!\is_string($nodeType)) {
+ throw new \RuntimeException('Node type must be a string');
+ }
+
+ $reflectionClass = $this->reflectionClassFromNodeType($nodeType);
+ /** @var Node $node */
+ $node = $reflectionClass->newInstanceWithoutConstructor();
+
+ if (isset($value['attributes'])) {
+ if (!\is_array($value['attributes'])) {
+ throw new \RuntimeException('Attributes must be an array');
+ }
+
+ $node->setAttributes($this->decodeArray($value['attributes']));
+ }
+
+ foreach ($value as $name => $subNode) {
+ if ($name === 'nodeType' || $name === 'attributes') {
+ continue;
+ }
+
+ $node->$name = $this->decodeRecursive($subNode);
+ }
+
+ return $node;
+ }
+
+ private function decodeComment(array $value) : Comment {
+ $className = $value['nodeType'] === 'Comment' ? Comment::class : Comment\Doc::class;
+ if (!isset($value['text'])) {
+ throw new \RuntimeException('Comment must have text');
+ }
+
+ return new $className(
+ $value['text'],
+ $value['line'] ?? -1, $value['filePos'] ?? -1, $value['tokenPos'] ?? -1,
+ $value['endLine'] ?? -1, $value['endFilePos'] ?? -1, $value['endTokenPos'] ?? -1
+ );
+ }
+
+ private function reflectionClassFromNodeType(string $nodeType) : \ReflectionClass {
+ if (!isset($this->reflectionClassCache[$nodeType])) {
+ $className = $this->classNameFromNodeType($nodeType);
+ $this->reflectionClassCache[$nodeType] = new \ReflectionClass($className);
+ }
+ return $this->reflectionClassCache[$nodeType];
+ }
+
+ private function classNameFromNodeType(string $nodeType) : string {
+ $className = 'PhpParser\\Node\\' . strtr($nodeType, '_', '\\');
+ if (class_exists($className)) {
+ return $className;
+ }
+
+ $className .= '_';
+ if (class_exists($className)) {
+ return $className;
+ }
+
+ throw new \RuntimeException("Unknown node type \"$nodeType\"");
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer.php
new file mode 100644
index 000000000..e15dd0a5d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer.php
@@ -0,0 +1,560 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+use PhpParser\Parser\Tokens;
+
+class Lexer
+{
+ protected $code;
+ protected $tokens;
+ protected $pos;
+ protected $line;
+ protected $filePos;
+ protected $prevCloseTagHasNewline;
+
+ protected $tokenMap;
+ protected $dropTokens;
+ protected $identifierTokens;
+
+ private $attributeStartLineUsed;
+ private $attributeEndLineUsed;
+ private $attributeStartTokenPosUsed;
+ private $attributeEndTokenPosUsed;
+ private $attributeStartFilePosUsed;
+ private $attributeEndFilePosUsed;
+ private $attributeCommentsUsed;
+
+ /**
+ * Creates a Lexer.
+ *
+ * @param array $options Options array. Currently only the 'usedAttributes' option is supported,
+ * which is an array of attributes to add to the AST nodes. Possible
+ * attributes are: 'comments', 'startLine', 'endLine', 'startTokenPos',
+ * 'endTokenPos', 'startFilePos', 'endFilePos'. The option defaults to the
+ * first three. For more info see getNextToken() docs.
+ */
+ public function __construct(array $options = []) {
+ // Create Map from internal tokens to PhpParser tokens.
+ $this->defineCompatibilityTokens();
+ $this->tokenMap = $this->createTokenMap();
+ $this->identifierTokens = $this->createIdentifierTokenMap();
+
+ // map of tokens to drop while lexing (the map is only used for isset lookup,
+ // that's why the value is simply set to 1; the value is never actually used.)
+ $this->dropTokens = array_fill_keys(
+ [\T_WHITESPACE, \T_OPEN_TAG, \T_COMMENT, \T_DOC_COMMENT, \T_BAD_CHARACTER], 1
+ );
+
+ $defaultAttributes = ['comments', 'startLine', 'endLine'];
+ $usedAttributes = array_fill_keys($options['usedAttributes'] ?? $defaultAttributes, true);
+
+ // Create individual boolean properties to make these checks faster.
+ $this->attributeStartLineUsed = isset($usedAttributes['startLine']);
+ $this->attributeEndLineUsed = isset($usedAttributes['endLine']);
+ $this->attributeStartTokenPosUsed = isset($usedAttributes['startTokenPos']);
+ $this->attributeEndTokenPosUsed = isset($usedAttributes['endTokenPos']);
+ $this->attributeStartFilePosUsed = isset($usedAttributes['startFilePos']);
+ $this->attributeEndFilePosUsed = isset($usedAttributes['endFilePos']);
+ $this->attributeCommentsUsed = isset($usedAttributes['comments']);
+ }
+
+ /**
+ * Initializes the lexer for lexing the provided source code.
+ *
+ * This function does not throw if lexing errors occur. Instead, errors may be retrieved using
+ * the getErrors() method.
+ *
+ * @param string $code The source code to lex
+ * @param ErrorHandler|null $errorHandler Error handler to use for lexing errors. Defaults to
+ * ErrorHandler\Throwing
+ */
+ public function startLexing(string $code, ErrorHandler $errorHandler = null) {
+ if (null === $errorHandler) {
+ $errorHandler = new ErrorHandler\Throwing();
+ }
+
+ $this->code = $code; // keep the code around for __halt_compiler() handling
+ $this->pos = -1;
+ $this->line = 1;
+ $this->filePos = 0;
+
+ // If inline HTML occurs without preceding code, treat it as if it had a leading newline.
+ // This ensures proper composability, because having a newline is the "safe" assumption.
+ $this->prevCloseTagHasNewline = true;
+
+ $scream = ini_set('xdebug.scream', '0');
+
+ $this->tokens = @token_get_all($code);
+ $this->postprocessTokens($errorHandler);
+
+ if (false !== $scream) {
+ ini_set('xdebug.scream', $scream);
+ }
+ }
+
+ private function handleInvalidCharacterRange($start, $end, $line, ErrorHandler $errorHandler) {
+ $tokens = [];
+ for ($i = $start; $i < $end; $i++) {
+ $chr = $this->code[$i];
+ if ($chr === "\0") {
+ // PHP cuts error message after null byte, so need special case
+ $errorMsg = 'Unexpected null byte';
+ } else {
+ $errorMsg = sprintf(
+ 'Unexpected character "%s" (ASCII %d)', $chr, ord($chr)
+ );
+ }
+
+ $tokens[] = [\T_BAD_CHARACTER, $chr, $line];
+ $errorHandler->handleError(new Error($errorMsg, [
+ 'startLine' => $line,
+ 'endLine' => $line,
+ 'startFilePos' => $i,
+ 'endFilePos' => $i,
+ ]));
+ }
+ return $tokens;
+ }
+
+ /**
+ * Check whether comment token is unterminated.
+ *
+ * @return bool
+ */
+ private function isUnterminatedComment($token) : bool {
+ return ($token[0] === \T_COMMENT || $token[0] === \T_DOC_COMMENT)
+ && substr($token[1], 0, 2) === '/*'
+ && substr($token[1], -2) !== '*/';
+ }
+
+ protected function postprocessTokens(ErrorHandler $errorHandler) {
+ // PHP's error handling for token_get_all() is rather bad, so if we want detailed
+ // error information we need to compute it ourselves. Invalid character errors are
+ // detected by finding "gaps" in the token array. Unterminated comments are detected
+ // by checking if a trailing comment has a "*/" at the end.
+ //
+ // Additionally, we perform a number of canonicalizations here:
+ // * Use the PHP 8.0 comment format, which does not include trailing whitespace anymore.
+ // * Use PHP 8.0 T_NAME_* tokens.
+ // * Use PHP 8.1 T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG and
+ // T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG tokens used to disambiguate intersection types.
+
+ $filePos = 0;
+ $line = 1;
+ $numTokens = \count($this->tokens);
+ for ($i = 0; $i < $numTokens; $i++) {
+ $token = $this->tokens[$i];
+
+ // Since PHP 7.4 invalid characters are represented by a T_BAD_CHARACTER token.
+ // In this case we only need to emit an error.
+ if ($token[0] === \T_BAD_CHARACTER) {
+ $this->handleInvalidCharacterRange($filePos, $filePos + 1, $line, $errorHandler);
+ }
+
+ if ($token[0] === \T_COMMENT && substr($token[1], 0, 2) !== '/*'
+ && preg_match('/(\r\n|\n|\r)$/D', $token[1], $matches)) {
+ $trailingNewline = $matches[0];
+ $token[1] = substr($token[1], 0, -strlen($trailingNewline));
+ $this->tokens[$i] = $token;
+ if (isset($this->tokens[$i + 1]) && $this->tokens[$i + 1][0] === \T_WHITESPACE) {
+ // Move trailing newline into following T_WHITESPACE token, if it already exists.
+ $this->tokens[$i + 1][1] = $trailingNewline . $this->tokens[$i + 1][1];
+ $this->tokens[$i + 1][2]--;
+ } else {
+ // Otherwise, we need to create a new T_WHITESPACE token.
+ array_splice($this->tokens, $i + 1, 0, [
+ [\T_WHITESPACE, $trailingNewline, $line],
+ ]);
+ $numTokens++;
+ }
+ }
+
+ // Emulate PHP 8 T_NAME_* tokens, by combining sequences of T_NS_SEPARATOR and T_STRING
+ // into a single token.
+ if (\is_array($token)
+ && ($token[0] === \T_NS_SEPARATOR || isset($this->identifierTokens[$token[0]]))) {
+ $lastWasSeparator = $token[0] === \T_NS_SEPARATOR;
+ $text = $token[1];
+ for ($j = $i + 1; isset($this->tokens[$j]); $j++) {
+ if ($lastWasSeparator) {
+ if (!isset($this->identifierTokens[$this->tokens[$j][0]])) {
+ break;
+ }
+ $lastWasSeparator = false;
+ } else {
+ if ($this->tokens[$j][0] !== \T_NS_SEPARATOR) {
+ break;
+ }
+ $lastWasSeparator = true;
+ }
+ $text .= $this->tokens[$j][1];
+ }
+ if ($lastWasSeparator) {
+ // Trailing separator is not part of the name.
+ $j--;
+ $text = substr($text, 0, -1);
+ }
+ if ($j > $i + 1) {
+ if ($token[0] === \T_NS_SEPARATOR) {
+ $type = \T_NAME_FULLY_QUALIFIED;
+ } else if ($token[0] === \T_NAMESPACE) {
+ $type = \T_NAME_RELATIVE;
+ } else {
+ $type = \T_NAME_QUALIFIED;
+ }
+ $token = [$type, $text, $line];
+ array_splice($this->tokens, $i, $j - $i, [$token]);
+ $numTokens -= $j - $i - 1;
+ }
+ }
+
+ if ($token === '&') {
+ $next = $i + 1;
+ while (isset($this->tokens[$next]) && $this->tokens[$next][0] === \T_WHITESPACE) {
+ $next++;
+ }
+ $followedByVarOrVarArg = isset($this->tokens[$next]) &&
+ ($this->tokens[$next][0] === \T_VARIABLE || $this->tokens[$next][0] === \T_ELLIPSIS);
+ $this->tokens[$i] = $token = [
+ $followedByVarOrVarArg
+ ? \T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG
+ : \T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG,
+ '&',
+ $line,
+ ];
+ }
+
+ $tokenValue = \is_string($token) ? $token : $token[1];
+ $tokenLen = \strlen($tokenValue);
+
+ if (substr($this->code, $filePos, $tokenLen) !== $tokenValue) {
+ // Something is missing, must be an invalid character
+ $nextFilePos = strpos($this->code, $tokenValue, $filePos);
+ $badCharTokens = $this->handleInvalidCharacterRange(
+ $filePos, $nextFilePos, $line, $errorHandler);
+ $filePos = (int) $nextFilePos;
+
+ array_splice($this->tokens, $i, 0, $badCharTokens);
+ $numTokens += \count($badCharTokens);
+ $i += \count($badCharTokens);
+ }
+
+ $filePos += $tokenLen;
+ $line += substr_count($tokenValue, "\n");
+ }
+
+ if ($filePos !== \strlen($this->code)) {
+ if (substr($this->code, $filePos, 2) === '/*') {
+ // Unlike PHP, HHVM will drop unterminated comments entirely
+ $comment = substr($this->code, $filePos);
+ $errorHandler->handleError(new Error('Unterminated comment', [
+ 'startLine' => $line,
+ 'endLine' => $line + substr_count($comment, "\n"),
+ 'startFilePos' => $filePos,
+ 'endFilePos' => $filePos + \strlen($comment),
+ ]));
+
+ // Emulate the PHP behavior
+ $isDocComment = isset($comment[3]) && $comment[3] === '*';
+ $this->tokens[] = [$isDocComment ? \T_DOC_COMMENT : \T_COMMENT, $comment, $line];
+ } else {
+ // Invalid characters at the end of the input
+ $badCharTokens = $this->handleInvalidCharacterRange(
+ $filePos, \strlen($this->code), $line, $errorHandler);
+ $this->tokens = array_merge($this->tokens, $badCharTokens);
+ }
+ return;
+ }
+
+ if (count($this->tokens) > 0) {
+ // Check for unterminated comment
+ $lastToken = $this->tokens[count($this->tokens) - 1];
+ if ($this->isUnterminatedComment($lastToken)) {
+ $errorHandler->handleError(new Error('Unterminated comment', [
+ 'startLine' => $line - substr_count($lastToken[1], "\n"),
+ 'endLine' => $line,
+ 'startFilePos' => $filePos - \strlen($lastToken[1]),
+ 'endFilePos' => $filePos,
+ ]));
+ }
+ }
+ }
+
+ /**
+ * Fetches the next token.
+ *
+ * The available attributes are determined by the 'usedAttributes' option, which can
+ * be specified in the constructor. The following attributes are supported:
+ *
+ * * 'comments' => Array of PhpParser\Comment or PhpParser\Comment\Doc instances,
+ * representing all comments that occurred between the previous
+ * non-discarded token and the current one.
+ * * 'startLine' => Line in which the node starts.
+ * * 'endLine' => Line in which the node ends.
+ * * 'startTokenPos' => Offset into the token array of the first token in the node.
+ * * 'endTokenPos' => Offset into the token array of the last token in the node.
+ * * 'startFilePos' => Offset into the code string of the first character that is part of the node.
+ * * 'endFilePos' => Offset into the code string of the last character that is part of the node.
+ *
+ * @param mixed $value Variable to store token content in
+ * @param mixed $startAttributes Variable to store start attributes in
+ * @param mixed $endAttributes Variable to store end attributes in
+ *
+ * @return int Token id
+ */
+ public function getNextToken(&$value = null, &$startAttributes = null, &$endAttributes = null) : int {
+ $startAttributes = [];
+ $endAttributes = [];
+
+ while (1) {
+ if (isset($this->tokens[++$this->pos])) {
+ $token = $this->tokens[$this->pos];
+ } else {
+ // EOF token with ID 0
+ $token = "\0";
+ }
+
+ if ($this->attributeStartLineUsed) {
+ $startAttributes['startLine'] = $this->line;
+ }
+ if ($this->attributeStartTokenPosUsed) {
+ $startAttributes['startTokenPos'] = $this->pos;
+ }
+ if ($this->attributeStartFilePosUsed) {
+ $startAttributes['startFilePos'] = $this->filePos;
+ }
+
+ if (\is_string($token)) {
+ $value = $token;
+ if (isset($token[1])) {
+ // bug in token_get_all
+ $this->filePos += 2;
+ $id = ord('"');
+ } else {
+ $this->filePos += 1;
+ $id = ord($token);
+ }
+ } elseif (!isset($this->dropTokens[$token[0]])) {
+ $value = $token[1];
+ $id = $this->tokenMap[$token[0]];
+ if (\T_CLOSE_TAG === $token[0]) {
+ $this->prevCloseTagHasNewline = false !== strpos($token[1], "\n")
+ || false !== strpos($token[1], "\r");
+ } elseif (\T_INLINE_HTML === $token[0]) {
+ $startAttributes['hasLeadingNewline'] = $this->prevCloseTagHasNewline;
+ }
+
+ $this->line += substr_count($value, "\n");
+ $this->filePos += \strlen($value);
+ } else {
+ $origLine = $this->line;
+ $origFilePos = $this->filePos;
+ $this->line += substr_count($token[1], "\n");
+ $this->filePos += \strlen($token[1]);
+
+ if (\T_COMMENT === $token[0] || \T_DOC_COMMENT === $token[0]) {
+ if ($this->attributeCommentsUsed) {
+ $comment = \T_DOC_COMMENT === $token[0]
+ ? new Comment\Doc($token[1],
+ $origLine, $origFilePos, $this->pos,
+ $this->line, $this->filePos - 1, $this->pos)
+ : new Comment($token[1],
+ $origLine, $origFilePos, $this->pos,
+ $this->line, $this->filePos - 1, $this->pos);
+ $startAttributes['comments'][] = $comment;
+ }
+ }
+ continue;
+ }
+
+ if ($this->attributeEndLineUsed) {
+ $endAttributes['endLine'] = $this->line;
+ }
+ if ($this->attributeEndTokenPosUsed) {
+ $endAttributes['endTokenPos'] = $this->pos;
+ }
+ if ($this->attributeEndFilePosUsed) {
+ $endAttributes['endFilePos'] = $this->filePos - 1;
+ }
+
+ return $id;
+ }
+
+ throw new \RuntimeException('Reached end of lexer loop');
+ }
+
+ /**
+ * Returns the token array for current code.
+ *
+ * The token array is in the same format as provided by the
+ * token_get_all() function and does not discard tokens (i.e.
+ * whitespace and comments are included). The token position
+ * attributes are against this token array.
+ *
+ * @return array Array of tokens in token_get_all() format
+ */
+ public function getTokens() : array {
+ return $this->tokens;
+ }
+
+ /**
+ * Handles __halt_compiler() by returning the text after it.
+ *
+ * @return string Remaining text
+ */
+ public function handleHaltCompiler() : string {
+ // text after T_HALT_COMPILER, still including ();
+ $textAfter = substr($this->code, $this->filePos);
+
+ // ensure that it is followed by ();
+ // this simplifies the situation, by not allowing any comments
+ // in between of the tokens.
+ if (!preg_match('~^\s*\(\s*\)\s*(?:;|\?>\r?\n?)~', $textAfter, $matches)) {
+ throw new Error('__HALT_COMPILER must be followed by "();"');
+ }
+
+ // prevent the lexer from returning any further tokens
+ $this->pos = count($this->tokens);
+
+ // return with (); removed
+ return substr($textAfter, strlen($matches[0]));
+ }
+
+ private function defineCompatibilityTokens() {
+ static $compatTokensDefined = false;
+ if ($compatTokensDefined) {
+ return;
+ }
+
+ $compatTokens = [
+ // PHP 7.4
+ 'T_BAD_CHARACTER',
+ 'T_FN',
+ 'T_COALESCE_EQUAL',
+ // PHP 8.0
+ 'T_NAME_QUALIFIED',
+ 'T_NAME_FULLY_QUALIFIED',
+ 'T_NAME_RELATIVE',
+ 'T_MATCH',
+ 'T_NULLSAFE_OBJECT_OPERATOR',
+ 'T_ATTRIBUTE',
+ // PHP 8.1
+ 'T_ENUM',
+ 'T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG',
+ 'T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG',
+ 'T_READONLY',
+ ];
+
+ // PHP-Parser might be used together with another library that also emulates some or all
+ // of these tokens. Perform a sanity-check that all already defined tokens have been
+ // assigned a unique ID.
+ $usedTokenIds = [];
+ foreach ($compatTokens as $token) {
+ if (\defined($token)) {
+ $tokenId = \constant($token);
+ $clashingToken = $usedTokenIds[$tokenId] ?? null;
+ if ($clashingToken !== null) {
+ throw new \Error(sprintf(
+ 'Token %s has same ID as token %s, ' .
+ 'you may be using a library with broken token emulation',
+ $token, $clashingToken
+ ));
+ }
+ $usedTokenIds[$tokenId] = $token;
+ }
+ }
+
+ // Now define any tokens that have not yet been emulated. Try to assign IDs from -1
+ // downwards, but skip any IDs that may already be in use.
+ $newTokenId = -1;
+ foreach ($compatTokens as $token) {
+ if (!\defined($token)) {
+ while (isset($usedTokenIds[$newTokenId])) {
+ $newTokenId--;
+ }
+ \define($token, $newTokenId);
+ $newTokenId--;
+ }
+ }
+
+ $compatTokensDefined = true;
+ }
+
+ /**
+ * Creates the token map.
+ *
+ * The token map maps the PHP internal token identifiers
+ * to the identifiers used by the Parser. Additionally it
+ * maps T_OPEN_TAG_WITH_ECHO to T_ECHO and T_CLOSE_TAG to ';'.
+ *
+ * @return array The token map
+ */
+ protected function createTokenMap() : array {
+ $tokenMap = [];
+
+ // 256 is the minimum possible token number, as everything below
+ // it is an ASCII value
+ for ($i = 256; $i < 1000; ++$i) {
+ if (\T_DOUBLE_COLON === $i) {
+ // T_DOUBLE_COLON is equivalent to T_PAAMAYIM_NEKUDOTAYIM
+ $tokenMap[$i] = Tokens::T_PAAMAYIM_NEKUDOTAYIM;
+ } elseif(\T_OPEN_TAG_WITH_ECHO === $i) {
+ // T_OPEN_TAG_WITH_ECHO with dropped T_OPEN_TAG results in T_ECHO
+ $tokenMap[$i] = Tokens::T_ECHO;
+ } elseif(\T_CLOSE_TAG === $i) {
+ // T_CLOSE_TAG is equivalent to ';'
+ $tokenMap[$i] = ord(';');
+ } elseif ('UNKNOWN' !== $name = token_name($i)) {
+ if ('T_HASHBANG' === $name) {
+ // HHVM uses a special token for #! hashbang lines
+ $tokenMap[$i] = Tokens::T_INLINE_HTML;
+ } elseif (defined($name = Tokens::class . '::' . $name)) {
+ // Other tokens can be mapped directly
+ $tokenMap[$i] = constant($name);
+ }
+ }
+ }
+
+ // HHVM uses a special token for numbers that overflow to double
+ if (defined('T_ONUMBER')) {
+ $tokenMap[\T_ONUMBER] = Tokens::T_DNUMBER;
+ }
+ // HHVM also has a separate token for the __COMPILER_HALT_OFFSET__ constant
+ if (defined('T_COMPILER_HALT_OFFSET')) {
+ $tokenMap[\T_COMPILER_HALT_OFFSET] = Tokens::T_STRING;
+ }
+
+ // Assign tokens for which we define compatibility constants, as token_name() does not know them.
+ $tokenMap[\T_FN] = Tokens::T_FN;
+ $tokenMap[\T_COALESCE_EQUAL] = Tokens::T_COALESCE_EQUAL;
+ $tokenMap[\T_NAME_QUALIFIED] = Tokens::T_NAME_QUALIFIED;
+ $tokenMap[\T_NAME_FULLY_QUALIFIED] = Tokens::T_NAME_FULLY_QUALIFIED;
+ $tokenMap[\T_NAME_RELATIVE] = Tokens::T_NAME_RELATIVE;
+ $tokenMap[\T_MATCH] = Tokens::T_MATCH;
+ $tokenMap[\T_NULLSAFE_OBJECT_OPERATOR] = Tokens::T_NULLSAFE_OBJECT_OPERATOR;
+ $tokenMap[\T_ATTRIBUTE] = Tokens::T_ATTRIBUTE;
+ $tokenMap[\T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG] = Tokens::T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG;
+ $tokenMap[\T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG] = Tokens::T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG;
+ $tokenMap[\T_ENUM] = Tokens::T_ENUM;
+ $tokenMap[\T_READONLY] = Tokens::T_READONLY;
+
+ return $tokenMap;
+ }
+
+ private function createIdentifierTokenMap(): array {
+ // Based on semi_reserved production.
+ return array_fill_keys([
+ \T_STRING,
+ \T_STATIC, \T_ABSTRACT, \T_FINAL, \T_PRIVATE, \T_PROTECTED, \T_PUBLIC, \T_READONLY,
+ \T_INCLUDE, \T_INCLUDE_ONCE, \T_EVAL, \T_REQUIRE, \T_REQUIRE_ONCE, \T_LOGICAL_OR, \T_LOGICAL_XOR, \T_LOGICAL_AND,
+ \T_INSTANCEOF, \T_NEW, \T_CLONE, \T_EXIT, \T_IF, \T_ELSEIF, \T_ELSE, \T_ENDIF, \T_ECHO, \T_DO, \T_WHILE,
+ \T_ENDWHILE, \T_FOR, \T_ENDFOR, \T_FOREACH, \T_ENDFOREACH, \T_DECLARE, \T_ENDDECLARE, \T_AS, \T_TRY, \T_CATCH,
+ \T_FINALLY, \T_THROW, \T_USE, \T_INSTEADOF, \T_GLOBAL, \T_VAR, \T_UNSET, \T_ISSET, \T_EMPTY, \T_CONTINUE, \T_GOTO,
+ \T_FUNCTION, \T_CONST, \T_RETURN, \T_PRINT, \T_YIELD, \T_LIST, \T_SWITCH, \T_ENDSWITCH, \T_CASE, \T_DEFAULT,
+ \T_BREAK, \T_ARRAY, \T_CALLABLE, \T_EXTENDS, \T_IMPLEMENTS, \T_NAMESPACE, \T_TRAIT, \T_INTERFACE, \T_CLASS,
+ \T_CLASS_C, \T_TRAIT_C, \T_FUNC_C, \T_METHOD_C, \T_LINE, \T_FILE, \T_DIR, \T_NS_C, \T_HALT_COMPILER, \T_FN,
+ \T_MATCH,
+ ], true);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
new file mode 100644
index 000000000..5c56e026b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/Emulative.php
@@ -0,0 +1,248 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer;
+
+use PhpParser\Error;
+use PhpParser\ErrorHandler;
+use PhpParser\Lexer;
+use PhpParser\Lexer\TokenEmulator\AttributeEmulator;
+use PhpParser\Lexer\TokenEmulator\EnumTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\CoaleseEqualTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\ExplicitOctalEmulator;
+use PhpParser\Lexer\TokenEmulator\FlexibleDocStringEmulator;
+use PhpParser\Lexer\TokenEmulator\FnTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\MatchTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\NullsafeTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\NumericLiteralSeparatorEmulator;
+use PhpParser\Lexer\TokenEmulator\ReadonlyTokenEmulator;
+use PhpParser\Lexer\TokenEmulator\ReverseEmulator;
+use PhpParser\Lexer\TokenEmulator\TokenEmulator;
+
+class Emulative extends Lexer
+{
+ const PHP_7_3 = '7.3dev';
+ const PHP_7_4 = '7.4dev';
+ const PHP_8_0 = '8.0dev';
+ const PHP_8_1 = '8.1dev';
+
+ /** @var mixed[] Patches used to reverse changes introduced in the code */
+ private $patches = [];
+
+ /** @var TokenEmulator[] */
+ private $emulators = [];
+
+ /** @var string */
+ private $targetPhpVersion;
+
+ /**
+ * @param mixed[] $options Lexer options. In addition to the usual options,
+ * accepts a 'phpVersion' string that specifies the
+ * version to emulate. Defaults to newest supported.
+ */
+ public function __construct(array $options = [])
+ {
+ $this->targetPhpVersion = $options['phpVersion'] ?? Emulative::PHP_8_1;
+ unset($options['phpVersion']);
+
+ parent::__construct($options);
+
+ $emulators = [
+ new FlexibleDocStringEmulator(),
+ new FnTokenEmulator(),
+ new MatchTokenEmulator(),
+ new CoaleseEqualTokenEmulator(),
+ new NumericLiteralSeparatorEmulator(),
+ new NullsafeTokenEmulator(),
+ new AttributeEmulator(),
+ new EnumTokenEmulator(),
+ new ReadonlyTokenEmulator(),
+ new ExplicitOctalEmulator(),
+ ];
+
+ // Collect emulators that are relevant for the PHP version we're running
+ // and the PHP version we're targeting for emulation.
+ foreach ($emulators as $emulator) {
+ $emulatorPhpVersion = $emulator->getPhpVersion();
+ if ($this->isForwardEmulationNeeded($emulatorPhpVersion)) {
+ $this->emulators[] = $emulator;
+ } else if ($this->isReverseEmulationNeeded($emulatorPhpVersion)) {
+ $this->emulators[] = new ReverseEmulator($emulator);
+ }
+ }
+ }
+
+ public function startLexing(string $code, ErrorHandler $errorHandler = null) {
+ $emulators = array_filter($this->emulators, function($emulator) use($code) {
+ return $emulator->isEmulationNeeded($code);
+ });
+
+ if (empty($emulators)) {
+ // Nothing to emulate, yay
+ parent::startLexing($code, $errorHandler);
+ return;
+ }
+
+ $this->patches = [];
+ foreach ($emulators as $emulator) {
+ $code = $emulator->preprocessCode($code, $this->patches);
+ }
+
+ $collector = new ErrorHandler\Collecting();
+ parent::startLexing($code, $collector);
+ $this->sortPatches();
+ $this->fixupTokens();
+
+ $errors = $collector->getErrors();
+ if (!empty($errors)) {
+ $this->fixupErrors($errors);
+ foreach ($errors as $error) {
+ $errorHandler->handleError($error);
+ }
+ }
+
+ foreach ($emulators as $emulator) {
+ $this->tokens = $emulator->emulate($code, $this->tokens);
+ }
+ }
+
+ private function isForwardEmulationNeeded(string $emulatorPhpVersion): bool {
+ return version_compare(\PHP_VERSION, $emulatorPhpVersion, '<')
+ && version_compare($this->targetPhpVersion, $emulatorPhpVersion, '>=');
+ }
+
+ private function isReverseEmulationNeeded(string $emulatorPhpVersion): bool {
+ return version_compare(\PHP_VERSION, $emulatorPhpVersion, '>=')
+ && version_compare($this->targetPhpVersion, $emulatorPhpVersion, '<');
+ }
+
+ private function sortPatches()
+ {
+ // Patches may be contributed by different emulators.
+ // Make sure they are sorted by increasing patch position.
+ usort($this->patches, function($p1, $p2) {
+ return $p1[0] <=> $p2[0];
+ });
+ }
+
+ private function fixupTokens()
+ {
+ if (\count($this->patches) === 0) {
+ return;
+ }
+
+ // Load first patch
+ $patchIdx = 0;
+
+ list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx];
+
+ // We use a manual loop over the tokens, because we modify the array on the fly
+ $pos = 0;
+ for ($i = 0, $c = \count($this->tokens); $i < $c; $i++) {
+ $token = $this->tokens[$i];
+ if (\is_string($token)) {
+ if ($patchPos === $pos) {
+ // Only support replacement for string tokens.
+ assert($patchType === 'replace');
+ $this->tokens[$i] = $patchText;
+
+ // Fetch the next patch
+ $patchIdx++;
+ if ($patchIdx >= \count($this->patches)) {
+ // No more patches, we're done
+ return;
+ }
+ list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx];
+ }
+
+ $pos += \strlen($token);
+ continue;
+ }
+
+ $len = \strlen($token[1]);
+ $posDelta = 0;
+ while ($patchPos >= $pos && $patchPos < $pos + $len) {
+ $patchTextLen = \strlen($patchText);
+ if ($patchType === 'remove') {
+ if ($patchPos === $pos && $patchTextLen === $len) {
+ // Remove token entirely
+ array_splice($this->tokens, $i, 1, []);
+ $i--;
+ $c--;
+ } else {
+ // Remove from token string
+ $this->tokens[$i][1] = substr_replace(
+ $token[1], '', $patchPos - $pos + $posDelta, $patchTextLen
+ );
+ $posDelta -= $patchTextLen;
+ }
+ } elseif ($patchType === 'add') {
+ // Insert into the token string
+ $this->tokens[$i][1] = substr_replace(
+ $token[1], $patchText, $patchPos - $pos + $posDelta, 0
+ );
+ $posDelta += $patchTextLen;
+ } else if ($patchType === 'replace') {
+ // Replace inside the token string
+ $this->tokens[$i][1] = substr_replace(
+ $token[1], $patchText, $patchPos - $pos + $posDelta, $patchTextLen
+ );
+ } else {
+ assert(false);
+ }
+
+ // Fetch the next patch
+ $patchIdx++;
+ if ($patchIdx >= \count($this->patches)) {
+ // No more patches, we're done
+ return;
+ }
+
+ list($patchPos, $patchType, $patchText) = $this->patches[$patchIdx];
+
+ // Multiple patches may apply to the same token. Reload the current one to check
+ // If the new patch applies
+ $token = $this->tokens[$i];
+ }
+
+ $pos += $len;
+ }
+
+ // A patch did not apply
+ assert(false);
+ }
+
+ /**
+ * Fixup line and position information in errors.
+ *
+ * @param Error[] $errors
+ */
+ private function fixupErrors(array $errors) {
+ foreach ($errors as $error) {
+ $attrs = $error->getAttributes();
+
+ $posDelta = 0;
+ $lineDelta = 0;
+ foreach ($this->patches as $patch) {
+ list($patchPos, $patchType, $patchText) = $patch;
+ if ($patchPos >= $attrs['startFilePos']) {
+ // No longer relevant
+ break;
+ }
+
+ if ($patchType === 'add') {
+ $posDelta += strlen($patchText);
+ $lineDelta += substr_count($patchText, "\n");
+ } else if ($patchType === 'remove') {
+ $posDelta -= strlen($patchText);
+ $lineDelta -= substr_count($patchText, "\n");
+ }
+ }
+
+ $attrs['startFilePos'] += $posDelta;
+ $attrs['endFilePos'] += $posDelta;
+ $attrs['startLine'] += $lineDelta;
+ $attrs['endLine'] += $lineDelta;
+ $error->setAttributes($attrs);
+ }
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php
new file mode 100644
index 000000000..6776a5197
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/AttributeEmulator.php
@@ -0,0 +1,56 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class AttributeEmulator extends TokenEmulator
+{
+ public function getPhpVersion(): string
+ {
+ return Emulative::PHP_8_0;
+ }
+
+ public function isEmulationNeeded(string $code) : bool
+ {
+ return strpos($code, '#[') !== false;
+ }
+
+ public function emulate(string $code, array $tokens): array
+ {
+ // We need to manually iterate and manage a count because we'll change
+ // the tokens array on the way.
+ $line = 1;
+ for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+ if ($tokens[$i] === '#' && isset($tokens[$i + 1]) && $tokens[$i + 1] === '[') {
+ array_splice($tokens, $i, 2, [
+ [\T_ATTRIBUTE, '#[', $line]
+ ]);
+ $c--;
+ continue;
+ }
+ if (\is_array($tokens[$i])) {
+ $line += substr_count($tokens[$i][1], "\n");
+ }
+ }
+
+ return $tokens;
+ }
+
+ public function reverseEmulate(string $code, array $tokens): array
+ {
+ // TODO
+ return $tokens;
+ }
+
+ public function preprocessCode(string $code, array &$patches): string {
+ $pos = 0;
+ while (false !== $pos = strpos($code, '#[', $pos)) {
+ // Replace #[ with %[
+ $code[$pos] = '%';
+ $patches[] = [$pos, 'replace', '#'];
+ $pos += 2;
+ }
+ return $code;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php
new file mode 100644
index 000000000..d91da9214
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/CoaleseEqualTokenEmulator.php
@@ -0,0 +1,47 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class CoaleseEqualTokenEmulator extends TokenEmulator
+{
+ public function getPhpVersion(): string
+ {
+ return Emulative::PHP_7_4;
+ }
+
+ public function isEmulationNeeded(string $code): bool
+ {
+ return strpos($code, '??=') !== false;
+ }
+
+ public function emulate(string $code, array $tokens): array
+ {
+ // We need to manually iterate and manage a count because we'll change
+ // the tokens array on the way
+ $line = 1;
+ for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+ if (isset($tokens[$i + 1])) {
+ if ($tokens[$i][0] === T_COALESCE && $tokens[$i + 1] === '=') {
+ array_splice($tokens, $i, 2, [
+ [\T_COALESCE_EQUAL, '??=', $line]
+ ]);
+ $c--;
+ continue;
+ }
+ }
+ if (\is_array($tokens[$i])) {
+ $line += substr_count($tokens[$i][1], "\n");
+ }
+ }
+
+ return $tokens;
+ }
+
+ public function reverseEmulate(string $code, array $tokens): array
+ {
+ // ??= was not valid code previously, don't bother.
+ return $tokens;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php
new file mode 100644
index 000000000..4ddc0b17e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/EnumTokenEmulator.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class EnumTokenEmulator extends KeywordEmulator
+{
+ public function getPhpVersion(): string
+ {
+ return Emulative::PHP_8_1;
+ }
+
+ public function getKeywordString(): string
+ {
+ return 'enum';
+ }
+
+ public function getKeywordToken(): int
+ {
+ return \T_ENUM;
+ }
+
+ protected function isKeywordContext(array $tokens, int $pos): bool
+ {
+ return parent::isKeywordContext($tokens, $pos)
+ && isset($tokens[$pos + 2])
+ && $tokens[$pos + 1][0] === \T_WHITESPACE
+ && $tokens[$pos + 2][0] === \T_STRING;
+ }
+} \ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php
new file mode 100644
index 000000000..f5f6805b8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ExplicitOctalEmulator.php
@@ -0,0 +1,44 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+class ExplicitOctalEmulator extends TokenEmulator {
+ public function getPhpVersion(): string {
+ return Emulative::PHP_8_1;
+ }
+
+ public function isEmulationNeeded(string $code): bool {
+ return strpos($code, '0o') !== false || strpos($code, '0O') !== false;
+ }
+
+ public function emulate(string $code, array $tokens): array {
+ for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+ if ($tokens[$i][0] == \T_LNUMBER && $tokens[$i][1] === '0' &&
+ isset($tokens[$i + 1]) && $tokens[$i + 1][0] == \T_STRING &&
+ preg_match('/[oO][0-7]+(?:_[0-7]+)*/', $tokens[$i + 1][1])
+ ) {
+ $tokenKind = $this->resolveIntegerOrFloatToken($tokens[$i + 1][1]);
+ array_splice($tokens, $i, 2, [
+ [$tokenKind, '0' . $tokens[$i + 1][1], $tokens[$i][2]],
+ ]);
+ $c--;
+ }
+ }
+ return $tokens;
+ }
+
+ private function resolveIntegerOrFloatToken(string $str): int
+ {
+ $str = substr($str, 1);
+ $str = str_replace('_', '', $str);
+ $num = octdec($str);
+ return is_float($num) ? \T_DNUMBER : \T_LNUMBER;
+ }
+
+ public function reverseEmulate(string $code, array $tokens): array {
+ // Explicit octals were not legal code previously, don't bother.
+ return $tokens;
+ }
+} \ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php
new file mode 100644
index 000000000..c15d6271f
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FlexibleDocStringEmulator.php
@@ -0,0 +1,76 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class FlexibleDocStringEmulator extends TokenEmulator
+{
+ const FLEXIBLE_DOC_STRING_REGEX = <<<'REGEX'
+/<<<[ \t]*(['"]?)([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)\1\r?\n
+(?:.*\r?\n)*?
+(?<indentation>\h*)\2(?![a-zA-Z0-9_\x80-\xff])(?<separator>(?:;?[\r\n])?)/x
+REGEX;
+
+ public function getPhpVersion(): string
+ {
+ return Emulative::PHP_7_3;
+ }
+
+ public function isEmulationNeeded(string $code) : bool
+ {
+ return strpos($code, '<<<') !== false;
+ }
+
+ public function emulate(string $code, array $tokens): array
+ {
+ // Handled by preprocessing + fixup.
+ return $tokens;
+ }
+
+ public function reverseEmulate(string $code, array $tokens): array
+ {
+ // Not supported.
+ return $tokens;
+ }
+
+ public function preprocessCode(string $code, array &$patches): string {
+ if (!preg_match_all(self::FLEXIBLE_DOC_STRING_REGEX, $code, $matches, PREG_SET_ORDER|PREG_OFFSET_CAPTURE)) {
+ // No heredoc/nowdoc found
+ return $code;
+ }
+
+ // Keep track of how much we need to adjust string offsets due to the modifications we
+ // already made
+ $posDelta = 0;
+ foreach ($matches as $match) {
+ $indentation = $match['indentation'][0];
+ $indentationStart = $match['indentation'][1];
+
+ $separator = $match['separator'][0];
+ $separatorStart = $match['separator'][1];
+
+ if ($indentation === '' && $separator !== '') {
+ // Ordinary heredoc/nowdoc
+ continue;
+ }
+
+ if ($indentation !== '') {
+ // Remove indentation
+ $indentationLen = strlen($indentation);
+ $code = substr_replace($code, '', $indentationStart + $posDelta, $indentationLen);
+ $patches[] = [$indentationStart + $posDelta, 'add', $indentation];
+ $posDelta -= $indentationLen;
+ }
+
+ if ($separator === '') {
+ // Insert newline as separator
+ $code = substr_replace($code, "\n", $separatorStart + $posDelta, 0);
+ $patches[] = [$separatorStart + $posDelta, 'remove', "\n"];
+ $posDelta += 1;
+ }
+ }
+
+ return $code;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php
new file mode 100644
index 000000000..eb7e49634
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/FnTokenEmulator.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class FnTokenEmulator extends KeywordEmulator
+{
+ public function getPhpVersion(): string
+ {
+ return Emulative::PHP_7_4;
+ }
+
+ public function getKeywordString(): string
+ {
+ return 'fn';
+ }
+
+ public function getKeywordToken(): int
+ {
+ return \T_FN;
+ }
+} \ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php
new file mode 100644
index 000000000..ea261cc17
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/KeywordEmulator.php
@@ -0,0 +1,62 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+abstract class KeywordEmulator extends TokenEmulator
+{
+ abstract function getKeywordString(): string;
+ abstract function getKeywordToken(): int;
+
+ public function isEmulationNeeded(string $code): bool
+ {
+ return strpos(strtolower($code), $this->getKeywordString()) !== false;
+ }
+
+ protected function isKeywordContext(array $tokens, int $pos): bool
+ {
+ $previousNonSpaceToken = $this->getPreviousNonSpaceToken($tokens, $pos);
+ return $previousNonSpaceToken === null || $previousNonSpaceToken[0] !== \T_OBJECT_OPERATOR;
+ }
+
+ public function emulate(string $code, array $tokens): array
+ {
+ $keywordString = $this->getKeywordString();
+ foreach ($tokens as $i => $token) {
+ if ($token[0] === T_STRING && strtolower($token[1]) === $keywordString
+ && $this->isKeywordContext($tokens, $i)) {
+ $tokens[$i][0] = $this->getKeywordToken();
+ }
+ }
+
+ return $tokens;
+ }
+
+ /**
+ * @param mixed[] $tokens
+ * @return mixed[]|null
+ */
+ private function getPreviousNonSpaceToken(array $tokens, int $start)
+ {
+ for ($i = $start - 1; $i >= 0; --$i) {
+ if ($tokens[$i][0] === T_WHITESPACE) {
+ continue;
+ }
+
+ return $tokens[$i];
+ }
+
+ return null;
+ }
+
+ public function reverseEmulate(string $code, array $tokens): array
+ {
+ $keywordToken = $this->getKeywordToken();
+ foreach ($tokens as $i => $token) {
+ if ($token[0] === $keywordToken) {
+ $tokens[$i][0] = \T_STRING;
+ }
+ }
+
+ return $tokens;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php
new file mode 100644
index 000000000..902a46dfc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/MatchTokenEmulator.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class MatchTokenEmulator extends KeywordEmulator
+{
+ public function getPhpVersion(): string
+ {
+ return Emulative::PHP_8_0;
+ }
+
+ public function getKeywordString(): string
+ {
+ return 'match';
+ }
+
+ public function getKeywordToken(): int
+ {
+ return \T_MATCH;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php
new file mode 100644
index 000000000..1a29c676e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NullsafeTokenEmulator.php
@@ -0,0 +1,67 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class NullsafeTokenEmulator extends TokenEmulator
+{
+ public function getPhpVersion(): string
+ {
+ return Emulative::PHP_8_0;
+ }
+
+ public function isEmulationNeeded(string $code): bool
+ {
+ return strpos($code, '?->') !== false;
+ }
+
+ public function emulate(string $code, array $tokens): array
+ {
+ // We need to manually iterate and manage a count because we'll change
+ // the tokens array on the way
+ $line = 1;
+ for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+ if ($tokens[$i] === '?' && isset($tokens[$i + 1]) && $tokens[$i + 1][0] === \T_OBJECT_OPERATOR) {
+ array_splice($tokens, $i, 2, [
+ [\T_NULLSAFE_OBJECT_OPERATOR, '?->', $line]
+ ]);
+ $c--;
+ continue;
+ }
+
+ // Handle ?-> inside encapsed string.
+ if ($tokens[$i][0] === \T_ENCAPSED_AND_WHITESPACE && isset($tokens[$i - 1])
+ && $tokens[$i - 1][0] === \T_VARIABLE
+ && preg_match('/^\?->([a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)/', $tokens[$i][1], $matches)
+ ) {
+ $replacement = [
+ [\T_NULLSAFE_OBJECT_OPERATOR, '?->', $line],
+ [\T_STRING, $matches[1], $line],
+ ];
+ if (\strlen($matches[0]) !== \strlen($tokens[$i][1])) {
+ $replacement[] = [
+ \T_ENCAPSED_AND_WHITESPACE,
+ \substr($tokens[$i][1], \strlen($matches[0])),
+ $line
+ ];
+ }
+ array_splice($tokens, $i, 1, $replacement);
+ $c += \count($replacement) - 1;
+ continue;
+ }
+
+ if (\is_array($tokens[$i])) {
+ $line += substr_count($tokens[$i][1], "\n");
+ }
+ }
+
+ return $tokens;
+ }
+
+ public function reverseEmulate(string $code, array $tokens): array
+ {
+ // ?-> was not valid code previously, don't bother.
+ return $tokens;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php
new file mode 100644
index 000000000..cdf793e46
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/NumericLiteralSeparatorEmulator.php
@@ -0,0 +1,105 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class NumericLiteralSeparatorEmulator extends TokenEmulator
+{
+ const BIN = '(?:0b[01]+(?:_[01]+)*)';
+ const HEX = '(?:0x[0-9a-f]+(?:_[0-9a-f]+)*)';
+ const DEC = '(?:[0-9]+(?:_[0-9]+)*)';
+ const SIMPLE_FLOAT = '(?:' . self::DEC . '\.' . self::DEC . '?|\.' . self::DEC . ')';
+ const EXP = '(?:e[+-]?' . self::DEC . ')';
+ const FLOAT = '(?:' . self::SIMPLE_FLOAT . self::EXP . '?|' . self::DEC . self::EXP . ')';
+ const NUMBER = '~' . self::FLOAT . '|' . self::BIN . '|' . self::HEX . '|' . self::DEC . '~iA';
+
+ public function getPhpVersion(): string
+ {
+ return Emulative::PHP_7_4;
+ }
+
+ public function isEmulationNeeded(string $code) : bool
+ {
+ return preg_match('~[0-9]_[0-9]~', $code)
+ || preg_match('~0x[0-9a-f]+_[0-9a-f]~i', $code);
+ }
+
+ public function emulate(string $code, array $tokens): array
+ {
+ // We need to manually iterate and manage a count because we'll change
+ // the tokens array on the way
+ $codeOffset = 0;
+ for ($i = 0, $c = count($tokens); $i < $c; ++$i) {
+ $token = $tokens[$i];
+ $tokenLen = \strlen(\is_array($token) ? $token[1] : $token);
+
+ if ($token[0] !== T_LNUMBER && $token[0] !== T_DNUMBER) {
+ $codeOffset += $tokenLen;
+ continue;
+ }
+
+ $res = preg_match(self::NUMBER, $code, $matches, 0, $codeOffset);
+ assert($res, "No number at number token position");
+
+ $match = $matches[0];
+ $matchLen = \strlen($match);
+ if ($matchLen === $tokenLen) {
+ // Original token already holds the full number.
+ $codeOffset += $tokenLen;
+ continue;
+ }
+
+ $tokenKind = $this->resolveIntegerOrFloatToken($match);
+ $newTokens = [[$tokenKind, $match, $token[2]]];
+
+ $numTokens = 1;
+ $len = $tokenLen;
+ while ($matchLen > $len) {
+ $nextToken = $tokens[$i + $numTokens];
+ $nextTokenText = \is_array($nextToken) ? $nextToken[1] : $nextToken;
+ $nextTokenLen = \strlen($nextTokenText);
+
+ $numTokens++;
+ if ($matchLen < $len + $nextTokenLen) {
+ // Split trailing characters into a partial token.
+ assert(is_array($nextToken), "Partial token should be an array token");
+ $partialText = substr($nextTokenText, $matchLen - $len);
+ $newTokens[] = [$nextToken[0], $partialText, $nextToken[2]];
+ break;
+ }
+
+ $len += $nextTokenLen;
+ }
+
+ array_splice($tokens, $i, $numTokens, $newTokens);
+ $c -= $numTokens - \count($newTokens);
+ $codeOffset += $matchLen;
+ }
+
+ return $tokens;
+ }
+
+ private function resolveIntegerOrFloatToken(string $str): int
+ {
+ $str = str_replace('_', '', $str);
+
+ if (stripos($str, '0b') === 0) {
+ $num = bindec($str);
+ } elseif (stripos($str, '0x') === 0) {
+ $num = hexdec($str);
+ } elseif (stripos($str, '0') === 0 && ctype_digit($str)) {
+ $num = octdec($str);
+ } else {
+ $num = +$str;
+ }
+
+ return is_float($num) ? T_DNUMBER : T_LNUMBER;
+ }
+
+ public function reverseEmulate(string $code, array $tokens): array
+ {
+ // Numeric separators were not legal code previously, don't bother.
+ return $tokens;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php
new file mode 100644
index 000000000..b97f8d112
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReadonlyTokenEmulator.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+use PhpParser\Lexer\Emulative;
+
+final class ReadonlyTokenEmulator extends KeywordEmulator
+{
+ public function getPhpVersion(): string
+ {
+ return Emulative::PHP_8_1;
+ }
+
+ public function getKeywordString(): string
+ {
+ return 'readonly';
+ }
+
+ public function getKeywordToken(): int
+ {
+ return \T_READONLY;
+ }
+} \ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php
new file mode 100644
index 000000000..90093f66b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/ReverseEmulator.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+/**
+ * Reverses emulation direction of the inner emulator.
+ */
+final class ReverseEmulator extends TokenEmulator
+{
+ /** @var TokenEmulator Inner emulator */
+ private $emulator;
+
+ public function __construct(TokenEmulator $emulator) {
+ $this->emulator = $emulator;
+ }
+
+ public function getPhpVersion(): string {
+ return $this->emulator->getPhpVersion();
+ }
+
+ public function isEmulationNeeded(string $code): bool {
+ return $this->emulator->isEmulationNeeded($code);
+ }
+
+ public function emulate(string $code, array $tokens): array {
+ return $this->emulator->reverseEmulate($code, $tokens);
+ }
+
+ public function reverseEmulate(string $code, array $tokens): array {
+ return $this->emulator->emulate($code, $tokens);
+ }
+
+ public function preprocessCode(string $code, array &$patches): string {
+ return $code;
+ }
+} \ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php
new file mode 100644
index 000000000..a020bc0ff
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Lexer/TokenEmulator/TokenEmulator.php
@@ -0,0 +1,25 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Lexer\TokenEmulator;
+
+/** @internal */
+abstract class TokenEmulator
+{
+ abstract public function getPhpVersion(): string;
+
+ abstract public function isEmulationNeeded(string $code): bool;
+
+ /**
+ * @return array Modified Tokens
+ */
+ abstract public function emulate(string $code, array $tokens): array;
+
+ /**
+ * @return array Modified Tokens
+ */
+ abstract public function reverseEmulate(string $code, array $tokens): array;
+
+ public function preprocessCode(string $code, array &$patches): string {
+ return $code;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NameContext.php b/vendor/nikic/php-parser/lib/PhpParser/NameContext.php
new file mode 100644
index 000000000..777a4afde
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NameContext.php
@@ -0,0 +1,285 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+use PhpParser\Node\Name;
+use PhpParser\Node\Name\FullyQualified;
+use PhpParser\Node\Stmt;
+
+class NameContext
+{
+ /** @var null|Name Current namespace */
+ protected $namespace;
+
+ /** @var Name[][] Map of format [aliasType => [aliasName => originalName]] */
+ protected $aliases = [];
+
+ /** @var Name[][] Same as $aliases but preserving original case */
+ protected $origAliases = [];
+
+ /** @var ErrorHandler Error handler */
+ protected $errorHandler;
+
+ /**
+ * Create a name context.
+ *
+ * @param ErrorHandler $errorHandler Error handling used to report errors
+ */
+ public function __construct(ErrorHandler $errorHandler) {
+ $this->errorHandler = $errorHandler;
+ }
+
+ /**
+ * Start a new namespace.
+ *
+ * This also resets the alias table.
+ *
+ * @param Name|null $namespace Null is the global namespace
+ */
+ public function startNamespace(Name $namespace = null) {
+ $this->namespace = $namespace;
+ $this->origAliases = $this->aliases = [
+ Stmt\Use_::TYPE_NORMAL => [],
+ Stmt\Use_::TYPE_FUNCTION => [],
+ Stmt\Use_::TYPE_CONSTANT => [],
+ ];
+ }
+
+ /**
+ * Add an alias / import.
+ *
+ * @param Name $name Original name
+ * @param string $aliasName Aliased name
+ * @param int $type One of Stmt\Use_::TYPE_*
+ * @param array $errorAttrs Attributes to use to report an error
+ */
+ public function addAlias(Name $name, string $aliasName, int $type, array $errorAttrs = []) {
+ // Constant names are case sensitive, everything else case insensitive
+ if ($type === Stmt\Use_::TYPE_CONSTANT) {
+ $aliasLookupName = $aliasName;
+ } else {
+ $aliasLookupName = strtolower($aliasName);
+ }
+
+ if (isset($this->aliases[$type][$aliasLookupName])) {
+ $typeStringMap = [
+ Stmt\Use_::TYPE_NORMAL => '',
+ Stmt\Use_::TYPE_FUNCTION => 'function ',
+ Stmt\Use_::TYPE_CONSTANT => 'const ',
+ ];
+
+ $this->errorHandler->handleError(new Error(
+ sprintf(
+ 'Cannot use %s%s as %s because the name is already in use',
+ $typeStringMap[$type], $name, $aliasName
+ ),
+ $errorAttrs
+ ));
+ return;
+ }
+
+ $this->aliases[$type][$aliasLookupName] = $name;
+ $this->origAliases[$type][$aliasName] = $name;
+ }
+
+ /**
+ * Get current namespace.
+ *
+ * @return null|Name Namespace (or null if global namespace)
+ */
+ public function getNamespace() {
+ return $this->namespace;
+ }
+
+ /**
+ * Get resolved name.
+ *
+ * @param Name $name Name to resolve
+ * @param int $type One of Stmt\Use_::TYPE_{FUNCTION|CONSTANT}
+ *
+ * @return null|Name Resolved name, or null if static resolution is not possible
+ */
+ public function getResolvedName(Name $name, int $type) {
+ // don't resolve special class names
+ if ($type === Stmt\Use_::TYPE_NORMAL && $name->isSpecialClassName()) {
+ if (!$name->isUnqualified()) {
+ $this->errorHandler->handleError(new Error(
+ sprintf("'\\%s' is an invalid class name", $name->toString()),
+ $name->getAttributes()
+ ));
+ }
+ return $name;
+ }
+
+ // fully qualified names are already resolved
+ if ($name->isFullyQualified()) {
+ return $name;
+ }
+
+ // Try to resolve aliases
+ if (null !== $resolvedName = $this->resolveAlias($name, $type)) {
+ return $resolvedName;
+ }
+
+ if ($type !== Stmt\Use_::TYPE_NORMAL && $name->isUnqualified()) {
+ if (null === $this->namespace) {
+ // outside of a namespace unaliased unqualified is same as fully qualified
+ return new FullyQualified($name, $name->getAttributes());
+ }
+
+ // Cannot resolve statically
+ return null;
+ }
+
+ // if no alias exists prepend current namespace
+ return FullyQualified::concat($this->namespace, $name, $name->getAttributes());
+ }
+
+ /**
+ * Get resolved class name.
+ *
+ * @param Name $name Class ame to resolve
+ *
+ * @return Name Resolved name
+ */
+ public function getResolvedClassName(Name $name) : Name {
+ return $this->getResolvedName($name, Stmt\Use_::TYPE_NORMAL);
+ }
+
+ /**
+ * Get possible ways of writing a fully qualified name (e.g., by making use of aliases).
+ *
+ * @param string $name Fully-qualified name (without leading namespace separator)
+ * @param int $type One of Stmt\Use_::TYPE_*
+ *
+ * @return Name[] Possible representations of the name
+ */
+ public function getPossibleNames(string $name, int $type) : array {
+ $lcName = strtolower($name);
+
+ if ($type === Stmt\Use_::TYPE_NORMAL) {
+ // self, parent and static must always be unqualified
+ if ($lcName === "self" || $lcName === "parent" || $lcName === "static") {
+ return [new Name($name)];
+ }
+ }
+
+ // Collect possible ways to write this name, starting with the fully-qualified name
+ $possibleNames = [new FullyQualified($name)];
+
+ if (null !== $nsRelativeName = $this->getNamespaceRelativeName($name, $lcName, $type)) {
+ // Make sure there is no alias that makes the normally namespace-relative name
+ // into something else
+ if (null === $this->resolveAlias($nsRelativeName, $type)) {
+ $possibleNames[] = $nsRelativeName;
+ }
+ }
+
+ // Check for relevant namespace use statements
+ foreach ($this->origAliases[Stmt\Use_::TYPE_NORMAL] as $alias => $orig) {
+ $lcOrig = $orig->toLowerString();
+ if (0 === strpos($lcName, $lcOrig . '\\')) {
+ $possibleNames[] = new Name($alias . substr($name, strlen($lcOrig)));
+ }
+ }
+
+ // Check for relevant type-specific use statements
+ foreach ($this->origAliases[$type] as $alias => $orig) {
+ if ($type === Stmt\Use_::TYPE_CONSTANT) {
+ // Constants are are complicated-sensitive
+ $normalizedOrig = $this->normalizeConstName($orig->toString());
+ if ($normalizedOrig === $this->normalizeConstName($name)) {
+ $possibleNames[] = new Name($alias);
+ }
+ } else {
+ // Everything else is case-insensitive
+ if ($orig->toLowerString() === $lcName) {
+ $possibleNames[] = new Name($alias);
+ }
+ }
+ }
+
+ return $possibleNames;
+ }
+
+ /**
+ * Get shortest representation of this fully-qualified name.
+ *
+ * @param string $name Fully-qualified name (without leading namespace separator)
+ * @param int $type One of Stmt\Use_::TYPE_*
+ *
+ * @return Name Shortest representation
+ */
+ public function getShortName(string $name, int $type) : Name {
+ $possibleNames = $this->getPossibleNames($name, $type);
+
+ // Find shortest name
+ $shortestName = null;
+ $shortestLength = \INF;
+ foreach ($possibleNames as $possibleName) {
+ $length = strlen($possibleName->toCodeString());
+ if ($length < $shortestLength) {
+ $shortestName = $possibleName;
+ $shortestLength = $length;
+ }
+ }
+
+ return $shortestName;
+ }
+
+ private function resolveAlias(Name $name, $type) {
+ $firstPart = $name->getFirst();
+
+ if ($name->isQualified()) {
+ // resolve aliases for qualified names, always against class alias table
+ $checkName = strtolower($firstPart);
+ if (isset($this->aliases[Stmt\Use_::TYPE_NORMAL][$checkName])) {
+ $alias = $this->aliases[Stmt\Use_::TYPE_NORMAL][$checkName];
+ return FullyQualified::concat($alias, $name->slice(1), $name->getAttributes());
+ }
+ } elseif ($name->isUnqualified()) {
+ // constant aliases are case-sensitive, function aliases case-insensitive
+ $checkName = $type === Stmt\Use_::TYPE_CONSTANT ? $firstPart : strtolower($firstPart);
+ if (isset($this->aliases[$type][$checkName])) {
+ // resolve unqualified aliases
+ return new FullyQualified($this->aliases[$type][$checkName], $name->getAttributes());
+ }
+ }
+
+ // No applicable aliases
+ return null;
+ }
+
+ private function getNamespaceRelativeName(string $name, string $lcName, int $type) {
+ if (null === $this->namespace) {
+ return new Name($name);
+ }
+
+ if ($type === Stmt\Use_::TYPE_CONSTANT) {
+ // The constants true/false/null always resolve to the global symbols, even inside a
+ // namespace, so they may be used without qualification
+ if ($lcName === "true" || $lcName === "false" || $lcName === "null") {
+ return new Name($name);
+ }
+ }
+
+ $namespacePrefix = strtolower($this->namespace . '\\');
+ if (0 === strpos($lcName, $namespacePrefix)) {
+ return new Name(substr($name, strlen($namespacePrefix)));
+ }
+
+ return null;
+ }
+
+ private function normalizeConstName(string $name) {
+ $nsSep = strrpos($name, '\\');
+ if (false === $nsSep) {
+ return $name;
+ }
+
+ // Constants have case-insensitive namespace and case-sensitive short-name
+ $ns = substr($name, 0, $nsSep);
+ $shortName = substr($name, $nsSep + 1);
+ return strtolower($ns) . '\\' . $shortName;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node.php b/vendor/nikic/php-parser/lib/PhpParser/Node.php
new file mode 100644
index 000000000..befb25650
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node.php
@@ -0,0 +1,151 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+interface Node
+{
+ /**
+ * Gets the type of the node.
+ *
+ * @return string Type of the node
+ */
+ public function getType() : string;
+
+ /**
+ * Gets the names of the sub nodes.
+ *
+ * @return array Names of sub nodes
+ */
+ public function getSubNodeNames() : array;
+
+ /**
+ * Gets line the node started in (alias of getStartLine).
+ *
+ * @return int Start line (or -1 if not available)
+ */
+ public function getLine() : int;
+
+ /**
+ * Gets line the node started in.
+ *
+ * Requires the 'startLine' attribute to be enabled in the lexer (enabled by default).
+ *
+ * @return int Start line (or -1 if not available)
+ */
+ public function getStartLine() : int;
+
+ /**
+ * Gets the line the node ended in.
+ *
+ * Requires the 'endLine' attribute to be enabled in the lexer (enabled by default).
+ *
+ * @return int End line (or -1 if not available)
+ */
+ public function getEndLine() : int;
+
+ /**
+ * Gets the token offset of the first token that is part of this node.
+ *
+ * The offset is an index into the array returned by Lexer::getTokens().
+ *
+ * Requires the 'startTokenPos' attribute to be enabled in the lexer (DISABLED by default).
+ *
+ * @return int Token start position (or -1 if not available)
+ */
+ public function getStartTokenPos() : int;
+
+ /**
+ * Gets the token offset of the last token that is part of this node.
+ *
+ * The offset is an index into the array returned by Lexer::getTokens().
+ *
+ * Requires the 'endTokenPos' attribute to be enabled in the lexer (DISABLED by default).
+ *
+ * @return int Token end position (or -1 if not available)
+ */
+ public function getEndTokenPos() : int;
+
+ /**
+ * Gets the file offset of the first character that is part of this node.
+ *
+ * Requires the 'startFilePos' attribute to be enabled in the lexer (DISABLED by default).
+ *
+ * @return int File start position (or -1 if not available)
+ */
+ public function getStartFilePos() : int;
+
+ /**
+ * Gets the file offset of the last character that is part of this node.
+ *
+ * Requires the 'endFilePos' attribute to be enabled in the lexer (DISABLED by default).
+ *
+ * @return int File end position (or -1 if not available)
+ */
+ public function getEndFilePos() : int;
+
+ /**
+ * Gets all comments directly preceding this node.
+ *
+ * The comments are also available through the "comments" attribute.
+ *
+ * @return Comment[]
+ */
+ public function getComments() : array;
+
+ /**
+ * Gets the doc comment of the node.
+ *
+ * @return null|Comment\Doc Doc comment object or null
+ */
+ public function getDocComment();
+
+ /**
+ * Sets the doc comment of the node.
+ *
+ * This will either replace an existing doc comment or add it to the comments array.
+ *
+ * @param Comment\Doc $docComment Doc comment to set
+ */
+ public function setDocComment(Comment\Doc $docComment);
+
+ /**
+ * Sets an attribute on a node.
+ *
+ * @param string $key
+ * @param mixed $value
+ */
+ public function setAttribute(string $key, $value);
+
+ /**
+ * Returns whether an attribute exists.
+ *
+ * @param string $key
+ *
+ * @return bool
+ */
+ public function hasAttribute(string $key) : bool;
+
+ /**
+ * Returns the value of an attribute.
+ *
+ * @param string $key
+ * @param mixed $default
+ *
+ * @return mixed
+ */
+ public function getAttribute(string $key, $default = null);
+
+ /**
+ * Returns all the attributes of this node.
+ *
+ * @return array
+ */
+ public function getAttributes() : array;
+
+ /**
+ * Replaces all the attributes of this node.
+ *
+ * @param array $attributes
+ */
+ public function setAttributes(array $attributes);
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php
new file mode 100644
index 000000000..bcf130e68
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Arg.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node\VariadicPlaceholder;
+use PhpParser\NodeAbstract;
+
+class Arg extends NodeAbstract
+{
+ /** @var Identifier|null Parameter name (for named parameters) */
+ public $name;
+ /** @var Expr Value to pass */
+ public $value;
+ /** @var bool Whether to pass by ref */
+ public $byRef;
+ /** @var bool Whether to unpack the argument */
+ public $unpack;
+
+ /**
+ * Constructs a function call argument node.
+ *
+ * @param Expr $value Value to pass
+ * @param bool $byRef Whether to pass by ref
+ * @param bool $unpack Whether to unpack the argument
+ * @param array $attributes Additional attributes
+ * @param Identifier|null $name Parameter name (for named parameters)
+ */
+ public function __construct(
+ Expr $value, bool $byRef = false, bool $unpack = false, array $attributes = [],
+ Identifier $name = null
+ ) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ $this->value = $value;
+ $this->byRef = $byRef;
+ $this->unpack = $unpack;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'value', 'byRef', 'unpack'];
+ }
+
+ public function getType() : string {
+ return 'Arg';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php
new file mode 100644
index 000000000..c96f66e51
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Attribute.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+use PhpParser\NodeAbstract;
+
+class Attribute extends NodeAbstract
+{
+ /** @var Name Attribute name */
+ public $name;
+
+ /** @var Arg[] Attribute arguments */
+ public $args;
+
+ /**
+ * @param Node\Name $name Attribute name
+ * @param Arg[] $args Attribute arguments
+ * @param array $attributes Additional node attributes
+ */
+ public function __construct(Name $name, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Attribute';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php b/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php
new file mode 100644
index 000000000..613bfc413
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/AttributeGroup.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+use PhpParser\NodeAbstract;
+
+class AttributeGroup extends NodeAbstract
+{
+ /** @var Attribute[] Attributes */
+ public $attrs;
+
+ /**
+ * @param Attribute[] $attrs PHP attributes
+ * @param array $attributes Additional node attributes
+ */
+ public function __construct(array $attrs, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->attrs = $attrs;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrs'];
+ }
+
+ public function getType() : string {
+ return 'AttributeGroup';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php
new file mode 100644
index 000000000..9505532ae
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/ComplexType.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+/**
+ * This is a base class for complex types, including nullable types and union types.
+ *
+ * It does not provide any shared behavior and exists only for type-checking purposes.
+ */
+abstract class ComplexType extends NodeAbstract
+{
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php
new file mode 100644
index 000000000..b69eb16fa
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Const_.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+class Const_ extends NodeAbstract
+{
+ /** @var Identifier Name */
+ public $name;
+ /** @var Expr Value */
+ public $value;
+
+ /** @var Name Namespaced name (if using NameResolver) */
+ public $namespacedName;
+
+ /**
+ * Constructs a const node for use in class const and const statements.
+ *
+ * @param string|Identifier $name Name
+ * @param Expr $value Value
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, Expr $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'value'];
+ }
+
+ public function getType() : string {
+ return 'Const';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php
new file mode 100644
index 000000000..6cf4df223
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr.php
@@ -0,0 +1,9 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+abstract class Expr extends NodeAbstract
+{
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php
new file mode 100644
index 000000000..71694478e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayDimFetch.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class ArrayDimFetch extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+ /** @var null|Expr Array index / dim */
+ public $dim;
+
+ /**
+ * Constructs an array index fetch node.
+ *
+ * @param Expr $var Variable
+ * @param null|Expr $dim Array index / dim
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, Expr $dim = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->dim = $dim;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'dim'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ArrayDimFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php
new file mode 100644
index 000000000..1b078f821
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrayItem.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class ArrayItem extends Expr
+{
+ /** @var null|Expr Key */
+ public $key;
+ /** @var Expr Value */
+ public $value;
+ /** @var bool Whether to assign by reference */
+ public $byRef;
+ /** @var bool Whether to unpack the argument */
+ public $unpack;
+
+ /**
+ * Constructs an array item node.
+ *
+ * @param Expr $value Value
+ * @param null|Expr $key Key
+ * @param bool $byRef Whether to assign by reference
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $value, Expr $key = null, bool $byRef = false, array $attributes = [], bool $unpack = false) {
+ $this->attributes = $attributes;
+ $this->key = $key;
+ $this->value = $value;
+ $this->byRef = $byRef;
+ $this->unpack = $unpack;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['key', 'value', 'byRef', 'unpack'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ArrayItem';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php
new file mode 100644
index 000000000..e6eaa2834
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Array_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Array_ extends Expr
+{
+ // For use in "kind" attribute
+ const KIND_LONG = 1; // array() syntax
+ const KIND_SHORT = 2; // [] syntax
+
+ /** @var (ArrayItem|null)[] Items */
+ public $items;
+
+ /**
+ * Constructs an array node.
+ *
+ * @param (ArrayItem|null)[] $items Items of the array
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $items = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->items = $items;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['items'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Array';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
new file mode 100644
index 000000000..c273fb7ee
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ArrowFunction.php
@@ -0,0 +1,79 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+use PhpParser\Node\FunctionLike;
+
+class ArrowFunction extends Expr implements FunctionLike
+{
+ /** @var bool */
+ public $static;
+
+ /** @var bool */
+ public $byRef;
+
+ /** @var Node\Param[] */
+ public $params = [];
+
+ /** @var null|Node\Identifier|Node\Name|Node\ComplexType */
+ public $returnType;
+
+ /** @var Expr */
+ public $expr;
+ /** @var Node\AttributeGroup[] */
+ public $attrGroups;
+
+ /**
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'static' => false : Whether the closure is static
+ * 'byRef' => false : Whether to return by reference
+ * 'params' => array() : Parameters
+ * 'returnType' => null : Return type
+ * 'expr' => Expr : Expression body
+ * 'attrGroups' => array() : PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->static = $subNodes['static'] ?? false;
+ $this->byRef = $subNodes['byRef'] ?? false;
+ $this->params = $subNodes['params'] ?? [];
+ $returnType = $subNodes['returnType'] ?? null;
+ $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
+ $this->expr = $subNodes['expr'];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'static', 'byRef', 'params', 'returnType', 'expr'];
+ }
+
+ public function returnsByRef() : bool {
+ return $this->byRef;
+ }
+
+ public function getParams() : array {
+ return $this->params;
+ }
+
+ public function getReturnType() {
+ return $this->returnType;
+ }
+
+ public function getAttrGroups() : array {
+ return $this->attrGroups;
+ }
+
+ /**
+ * @return Node\Stmt\Return_[]
+ */
+ public function getStmts() : array {
+ return [new Node\Stmt\Return_($this->expr)];
+ }
+
+ public function getType() : string {
+ return 'Expr_ArrowFunction';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php
new file mode 100644
index 000000000..cf9e6e82b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Assign.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Assign extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an assignment node.
+ *
+ * @param Expr $var Variable
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Assign';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php
new file mode 100644
index 000000000..bce8604f1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+abstract class AssignOp extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a compound assignment operation node.
+ *
+ * @param Expr $var Variable
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'expr'];
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php
new file mode 100644
index 000000000..420284cdc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseAnd.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class BitwiseAnd extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_BitwiseAnd';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php
new file mode 100644
index 000000000..481ad3bbc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseOr.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class BitwiseOr extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_BitwiseOr';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php
new file mode 100644
index 000000000..f41d4c8e7
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/BitwiseXor.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class BitwiseXor extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_BitwiseXor';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php
new file mode 100644
index 000000000..c0e9b316c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Coalesce.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Coalesce extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Coalesce';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php
new file mode 100644
index 000000000..ac1682078
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Concat.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Concat extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Concat';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php
new file mode 100644
index 000000000..f1fcfc09a
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Div.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Div extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Div';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php
new file mode 100644
index 000000000..82ef4517b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Minus.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Minus extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Minus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php
new file mode 100644
index 000000000..be3b4a0ad
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mod.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Mod extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Mod';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php
new file mode 100644
index 000000000..5c196c3bc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Mul.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Mul extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Mul';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php
new file mode 100644
index 000000000..dd101c61c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Plus.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Plus extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Plus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php
new file mode 100644
index 000000000..5e1307d1d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/Pow.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class Pow extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_Pow';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php
new file mode 100644
index 000000000..b8f88269b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftLeft.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class ShiftLeft extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_ShiftLeft';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php
new file mode 100644
index 000000000..e0cc67b7f
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignOp/ShiftRight.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\AssignOp;
+
+use PhpParser\Node\Expr\AssignOp;
+
+class ShiftRight extends AssignOp
+{
+ public function getType() : string {
+ return 'Expr_AssignOp_ShiftRight';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php
new file mode 100644
index 000000000..de3c644c3
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/AssignRef.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class AssignRef extends Expr
+{
+ /** @var Expr Variable reference is assigned to */
+ public $var;
+ /** @var Expr Variable which is referenced */
+ public $expr;
+
+ /**
+ * Constructs an assignment node.
+ *
+ * @param Expr $var Variable
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_AssignRef';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php
new file mode 100644
index 000000000..d9c582b0d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+abstract class BinaryOp extends Expr
+{
+ /** @var Expr The left hand side expression */
+ public $left;
+ /** @var Expr The right hand side expression */
+ public $right;
+
+ /**
+ * Constructs a binary operator node.
+ *
+ * @param Expr $left The left hand side expression
+ * @param Expr $right The right hand side expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $left, Expr $right, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->left = $left;
+ $this->right = $right;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['left', 'right'];
+ }
+
+ /**
+ * Get the operator sigil for this binary operation.
+ *
+ * In the case there are multiple possible sigils for an operator, this method does not
+ * necessarily return the one used in the parsed code.
+ *
+ * @return string
+ */
+ abstract public function getOperatorSigil() : string;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php
new file mode 100644
index 000000000..d907393bf
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseAnd.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class BitwiseAnd extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '&';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_BitwiseAnd';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php
new file mode 100644
index 000000000..d92069f32
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseOr.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class BitwiseOr extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '|';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_BitwiseOr';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php
new file mode 100644
index 000000000..40fa94f88
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BitwiseXor.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class BitwiseXor extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '^';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_BitwiseXor';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php
new file mode 100644
index 000000000..4c3c9e9b1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanAnd.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class BooleanAnd extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '&&';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_BooleanAnd';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php
new file mode 100644
index 000000000..5ad417279
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/BooleanOr.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class BooleanOr extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '||';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_BooleanOr';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php
new file mode 100644
index 000000000..b8cf6f459
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Coalesce.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Coalesce extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '??';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Coalesce';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php
new file mode 100644
index 000000000..9a8d9873c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Concat.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Concat extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '.';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Concat';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php
new file mode 100644
index 000000000..d38df0db4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Div.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Div extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '/';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Div';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php
new file mode 100644
index 000000000..e7b11dc82
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Equal.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Equal extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '==';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Equal';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php
new file mode 100644
index 000000000..da01f7a10
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Greater.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Greater extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '>';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Greater';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php
new file mode 100644
index 000000000..d677502cf
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/GreaterOrEqual.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class GreaterOrEqual extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '>=';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_GreaterOrEqual';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php
new file mode 100644
index 000000000..3d96285c6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Identical.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Identical extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '===';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Identical';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php
new file mode 100644
index 000000000..2a3afd548
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalAnd.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class LogicalAnd extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return 'and';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_LogicalAnd';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php
new file mode 100644
index 000000000..21507dba6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalOr.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class LogicalOr extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return 'or';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_LogicalOr';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php
new file mode 100644
index 000000000..261c6a910
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/LogicalXor.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class LogicalXor extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return 'xor';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_LogicalXor';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php
new file mode 100644
index 000000000..54b3c6e90
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Minus.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Minus extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '-';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Minus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php
new file mode 100644
index 000000000..103404040
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mod.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Mod extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '%';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Mod';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php
new file mode 100644
index 000000000..b82d0b2fc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Mul.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Mul extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '*';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Mul';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php
new file mode 100644
index 000000000..51075da56
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotEqual.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class NotEqual extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '!=';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_NotEqual';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php
new file mode 100644
index 000000000..fa4050e05
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/NotIdentical.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class NotIdentical extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '!==';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_NotIdentical';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php
new file mode 100644
index 000000000..62f022998
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Plus.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Plus extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '+';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Plus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php
new file mode 100644
index 000000000..572a1e8e4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Pow.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Pow extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '**';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Pow';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php
new file mode 100644
index 000000000..4e70b4ef0
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftLeft.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class ShiftLeft extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '<<';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_ShiftLeft';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php
new file mode 100644
index 000000000..45acbd046
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/ShiftRight.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class ShiftRight extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '>>';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_ShiftRight';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php
new file mode 100644
index 000000000..3cb8e7e0d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Smaller.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Smaller extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '<';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Smaller';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php
new file mode 100644
index 000000000..83e8e214d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/SmallerOrEqual.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class SmallerOrEqual extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '<=';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_SmallerOrEqual';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php
new file mode 100644
index 000000000..8c6d787f6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BinaryOp/Spaceship.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\BinaryOp;
+
+use PhpParser\Node\Expr\BinaryOp;
+
+class Spaceship extends BinaryOp
+{
+ public function getOperatorSigil() : string {
+ return '<=>';
+ }
+
+ public function getType() : string {
+ return 'Expr_BinaryOp_Spaceship';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php
new file mode 100644
index 000000000..ed44984be
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BitwiseNot.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class BitwiseNot extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a bitwise not node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_BitwiseNot';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php
new file mode 100644
index 000000000..bf27e9f65
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/BooleanNot.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class BooleanNot extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a boolean not node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_BooleanNot';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php
new file mode 100644
index 000000000..78e1cf349
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/CallLike.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\VariadicPlaceholder;
+
+abstract class CallLike extends Expr {
+ /**
+ * Return raw arguments, which may be actual Args, or VariadicPlaceholders for first-class
+ * callables.
+ *
+ * @return array<Arg|VariadicPlaceholder>
+ */
+ abstract public function getRawArgs(): array;
+
+ /**
+ * Returns whether this call expression is actually a first class callable.
+ */
+ public function isFirstClassCallable(): bool {
+ foreach ($this->getRawArgs() as $arg) {
+ if ($arg instanceof VariadicPlaceholder) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Assert that this is not a first-class callable and return only ordinary Args.
+ *
+ * @return Arg[]
+ */
+ public function getArgs(): array {
+ assert(!$this->isFirstClassCallable());
+ return $this->getRawArgs();
+ }
+} \ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php
new file mode 100644
index 000000000..36769d4fc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+abstract class Cast extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a cast node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php
new file mode 100644
index 000000000..57cc473b6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Array_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Array_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_Array';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php
new file mode 100644
index 000000000..04eb4af58
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Bool_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Bool_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_Bool';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php
new file mode 100644
index 000000000..891ba5f87
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Double.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Double extends Cast
+{
+ // For use in "kind" attribute
+ const KIND_DOUBLE = 1; // "double" syntax
+ const KIND_FLOAT = 2; // "float" syntax
+ const KIND_REAL = 3; // "real" syntax
+
+ public function getType() : string {
+ return 'Expr_Cast_Double';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php
new file mode 100644
index 000000000..01ed594bd
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Int_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Int_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_Int';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php
new file mode 100644
index 000000000..163752be8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Object_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Object_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_Object';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php
new file mode 100644
index 000000000..b3d99270a
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/String_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class String_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_String';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php
new file mode 100644
index 000000000..accda3e4f
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Cast/Unset_.php
@@ -0,0 +1,12 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr\Cast;
+
+use PhpParser\Node\Expr\Cast;
+
+class Unset_ extends Cast
+{
+ public function getType() : string {
+ return 'Expr_Cast_Unset';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php
new file mode 100644
index 000000000..faf832f93
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClassConstFetch.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
+
+class ClassConstFetch extends Expr
+{
+ /** @var Name|Expr Class name */
+ public $class;
+ /** @var Identifier|Error Constant name */
+ public $name;
+
+ /**
+ * Constructs a class const fetch node.
+ *
+ * @param Name|Expr $class Class name
+ * @param string|Identifier|Error $name Constant name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($class, $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->class = $class;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['class', 'name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ClassConstFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php
new file mode 100644
index 000000000..db216b8f8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Clone_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Clone_ extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a clone node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Clone';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
new file mode 100644
index 000000000..56ddea6aa
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Closure.php
@@ -0,0 +1,79 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+use PhpParser\Node\FunctionLike;
+
+class Closure extends Expr implements FunctionLike
+{
+ /** @var bool Whether the closure is static */
+ public $static;
+ /** @var bool Whether to return by reference */
+ public $byRef;
+ /** @var Node\Param[] Parameters */
+ public $params;
+ /** @var ClosureUse[] use()s */
+ public $uses;
+ /** @var null|Node\Identifier|Node\Name|Node\ComplexType Return type */
+ public $returnType;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /**
+ * Constructs a lambda function node.
+ *
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'static' => false : Whether the closure is static
+ * 'byRef' => false : Whether to return by reference
+ * 'params' => array(): Parameters
+ * 'uses' => array(): use()s
+ * 'returnType' => null : Return type
+ * 'stmts' => array(): Statements
+ * 'attrGroups' => array(): PHP attributes groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->static = $subNodes['static'] ?? false;
+ $this->byRef = $subNodes['byRef'] ?? false;
+ $this->params = $subNodes['params'] ?? [];
+ $this->uses = $subNodes['uses'] ?? [];
+ $returnType = $subNodes['returnType'] ?? null;
+ $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'static', 'byRef', 'params', 'uses', 'returnType', 'stmts'];
+ }
+
+ public function returnsByRef() : bool {
+ return $this->byRef;
+ }
+
+ public function getParams() : array {
+ return $this->params;
+ }
+
+ public function getReturnType() {
+ return $this->returnType;
+ }
+
+ /** @return Node\Stmt[] */
+ public function getStmts() : array {
+ return $this->stmts;
+ }
+
+ public function getAttrGroups() : array {
+ return $this->attrGroups;
+ }
+
+ public function getType() : string {
+ return 'Expr_Closure';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php
new file mode 100644
index 000000000..2b8a09666
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ClosureUse.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class ClosureUse extends Expr
+{
+ /** @var Expr\Variable Variable to use */
+ public $var;
+ /** @var bool Whether to use by reference */
+ public $byRef;
+
+ /**
+ * Constructs a closure use node.
+ *
+ * @param Expr\Variable $var Variable to use
+ * @param bool $byRef Whether to use by reference
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr\Variable $var, bool $byRef = false, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->byRef = $byRef;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'byRef'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ClosureUse';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php
new file mode 100644
index 000000000..14ebd16bd
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ConstFetch.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Name;
+
+class ConstFetch extends Expr
+{
+ /** @var Name Constant name */
+ public $name;
+
+ /**
+ * Constructs a const fetch node.
+ *
+ * @param Name $name Constant name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Name $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ConstFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php
new file mode 100644
index 000000000..4042ec93c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Empty_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Empty_ extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an empty() node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Empty';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php
new file mode 100644
index 000000000..1637f3aea
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Error.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+/**
+ * Error node used during parsing with error recovery.
+ *
+ * An error node may be placed at a position where an expression is required, but an error occurred.
+ * Error nodes will not be present if the parser is run in throwOnError mode (the default).
+ */
+class Error extends Expr
+{
+ /**
+ * Constructs an error node.
+ *
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $attributes = []) {
+ $this->attributes = $attributes;
+ }
+
+ public function getSubNodeNames() : array {
+ return [];
+ }
+
+ public function getType() : string {
+ return 'Expr_Error';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php
new file mode 100644
index 000000000..c44ff6f93
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ErrorSuppress.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class ErrorSuppress extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an error suppress node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ErrorSuppress';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php
new file mode 100644
index 000000000..856854743
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Eval_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Eval_ extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an eval() node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Eval';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php
new file mode 100644
index 000000000..b88a8f7e6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Exit_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Exit_ extends Expr
+{
+ /* For use in "kind" attribute */
+ const KIND_EXIT = 1;
+ const KIND_DIE = 2;
+
+ /** @var null|Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an exit() node.
+ *
+ * @param null|Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Exit';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php
new file mode 100644
index 000000000..2de4d0dd5
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/FuncCall.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+
+class FuncCall extends CallLike
+{
+ /** @var Node\Name|Expr Function name */
+ public $name;
+ /** @var array<Node\Arg|Node\VariadicPlaceholder> Arguments */
+ public $args;
+
+ /**
+ * Constructs a function call node.
+ *
+ * @param Node\Name|Expr $name Function name
+ * @param array<Node\Arg|Node\VariadicPlaceholder> $args Arguments
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Expr_FuncCall';
+ }
+
+ public function getRawArgs(): array {
+ return $this->args;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php
new file mode 100644
index 000000000..07ce5968e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Include_.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Include_ extends Expr
+{
+ const TYPE_INCLUDE = 1;
+ const TYPE_INCLUDE_ONCE = 2;
+ const TYPE_REQUIRE = 3;
+ const TYPE_REQUIRE_ONCE = 4;
+
+ /** @var Expr Expression */
+ public $expr;
+ /** @var int Type of include */
+ public $type;
+
+ /**
+ * Constructs an include node.
+ *
+ * @param Expr $expr Expression
+ * @param int $type Type of include
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, int $type, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ $this->type = $type;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr', 'type'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Include';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php
new file mode 100644
index 000000000..9000d47bb
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Instanceof_.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Name;
+
+class Instanceof_ extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+ /** @var Name|Expr Class name */
+ public $class;
+
+ /**
+ * Constructs an instanceof check node.
+ *
+ * @param Expr $expr Expression
+ * @param Name|Expr $class Class name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, $class, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ $this->class = $class;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr', 'class'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Instanceof';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php
new file mode 100644
index 000000000..76b738758
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Isset_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Isset_ extends Expr
+{
+ /** @var Expr[] Variables */
+ public $vars;
+
+ /**
+ * Constructs an array node.
+ *
+ * @param Expr[] $vars Variables
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $vars, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->vars = $vars;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['vars'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Isset';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php
new file mode 100644
index 000000000..c27a27b95
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/List_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class List_ extends Expr
+{
+ /** @var (ArrayItem|null)[] List of items to assign to */
+ public $items;
+
+ /**
+ * Constructs a list() destructuring node.
+ *
+ * @param (ArrayItem|null)[] $items List of items to assign to
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $items, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->items = $items;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['items'];
+ }
+
+ public function getType() : string {
+ return 'Expr_List';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php
new file mode 100644
index 000000000..2455a3026
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Match_.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\MatchArm;
+
+class Match_ extends Node\Expr
+{
+ /** @var Node\Expr */
+ public $cond;
+ /** @var MatchArm[] */
+ public $arms;
+
+ /**
+ * @param MatchArm[] $arms
+ */
+ public function __construct(Node\Expr $cond, array $arms = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->arms = $arms;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'arms'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Match';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php
new file mode 100644
index 000000000..49ca48356
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/MethodCall.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\VariadicPlaceholder;
+
+class MethodCall extends CallLike
+{
+ /** @var Expr Variable holding object */
+ public $var;
+ /** @var Identifier|Expr Method name */
+ public $name;
+ /** @var array<Arg|VariadicPlaceholder> Arguments */
+ public $args;
+
+ /**
+ * Constructs a function call node.
+ *
+ * @param Expr $var Variable holding object
+ * @param string|Identifier|Expr $name Method name
+ * @param array<Arg|VariadicPlaceholder> $args Arguments
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, $name, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'name', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Expr_MethodCall';
+ }
+
+ public function getRawArgs(): array {
+ return $this->args;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php
new file mode 100644
index 000000000..e2bb64928
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/New_.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\VariadicPlaceholder;
+
+class New_ extends CallLike
+{
+ /** @var Node\Name|Expr|Node\Stmt\Class_ Class name */
+ public $class;
+ /** @var array<Arg|VariadicPlaceholder> Arguments */
+ public $args;
+
+ /**
+ * Constructs a function call node.
+ *
+ * @param Node\Name|Expr|Node\Stmt\Class_ $class Class name (or class node for anonymous classes)
+ * @param array<Arg|VariadicPlaceholder> $args Arguments
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($class, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->class = $class;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['class', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Expr_New';
+ }
+
+ public function getRawArgs(): array {
+ return $this->args;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php
new file mode 100644
index 000000000..07a571fd8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafeMethodCall.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\VariadicPlaceholder;
+
+class NullsafeMethodCall extends CallLike
+{
+ /** @var Expr Variable holding object */
+ public $var;
+ /** @var Identifier|Expr Method name */
+ public $name;
+ /** @var array<Arg|VariadicPlaceholder> Arguments */
+ public $args;
+
+ /**
+ * Constructs a nullsafe method call node.
+ *
+ * @param Expr $var Variable holding object
+ * @param string|Identifier|Expr $name Method name
+ * @param array<Arg|VariadicPlaceholder> $args Arguments
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, $name, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'name', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Expr_NullsafeMethodCall';
+ }
+
+ public function getRawArgs(): array {
+ return $this->args;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php
new file mode 100644
index 000000000..9317eb3b9
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/NullsafePropertyFetch.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+
+class NullsafePropertyFetch extends Expr
+{
+ /** @var Expr Variable holding object */
+ public $var;
+ /** @var Identifier|Expr Property name */
+ public $name;
+
+ /**
+ * Constructs a nullsafe property fetch node.
+ *
+ * @param Expr $var Variable holding object
+ * @param string|Identifier|Expr $name Property name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_NullsafePropertyFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php
new file mode 100644
index 000000000..94d6c296d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostDec.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class PostDec extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+
+ /**
+ * Constructs a post decrement node.
+ *
+ * @param Expr $var Variable
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var'];
+ }
+
+ public function getType() : string {
+ return 'Expr_PostDec';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php
new file mode 100644
index 000000000..005c443a2
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PostInc.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class PostInc extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+
+ /**
+ * Constructs a post increment node.
+ *
+ * @param Expr $var Variable
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var'];
+ }
+
+ public function getType() : string {
+ return 'Expr_PostInc';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php
new file mode 100644
index 000000000..a5ca685a8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreDec.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class PreDec extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+
+ /**
+ * Constructs a pre decrement node.
+ *
+ * @param Expr $var Variable
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var'];
+ }
+
+ public function getType() : string {
+ return 'Expr_PreDec';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php
new file mode 100644
index 000000000..0986c4474
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PreInc.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class PreInc extends Expr
+{
+ /** @var Expr Variable */
+ public $var;
+
+ /**
+ * Constructs a pre increment node.
+ *
+ * @param Expr $var Variable
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var'];
+ }
+
+ public function getType() : string {
+ return 'Expr_PreInc';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php
new file mode 100644
index 000000000..2d43c2ac8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Print_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Print_ extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an print() node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Print';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php
new file mode 100644
index 000000000..4281f31cc
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/PropertyFetch.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+
+class PropertyFetch extends Expr
+{
+ /** @var Expr Variable holding object */
+ public $var;
+ /** @var Identifier|Expr Property name */
+ public $name;
+
+ /**
+ * Constructs a function call node.
+ *
+ * @param Expr $var Variable holding object
+ * @param string|Identifier|Expr $name Property name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $var, $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_PropertyFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php
new file mode 100644
index 000000000..537a7cc80
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/ShellExec.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class ShellExec extends Expr
+{
+ /** @var array Encapsed string array */
+ public $parts;
+
+ /**
+ * Constructs a shell exec (backtick) node.
+ *
+ * @param array $parts Encapsed string array
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $parts, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->parts = $parts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['parts'];
+ }
+
+ public function getType() : string {
+ return 'Expr_ShellExec';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php
new file mode 100644
index 000000000..d0d099c47
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticCall.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+use PhpParser\Node\Arg;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\VariadicPlaceholder;
+
+class StaticCall extends CallLike
+{
+ /** @var Node\Name|Expr Class name */
+ public $class;
+ /** @var Identifier|Expr Method name */
+ public $name;
+ /** @var array<Arg|VariadicPlaceholder> Arguments */
+ public $args;
+
+ /**
+ * Constructs a static method call node.
+ *
+ * @param Node\Name|Expr $class Class name
+ * @param string|Identifier|Expr $name Method name
+ * @param array<Arg|VariadicPlaceholder> $args Arguments
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($class, $name, array $args = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->class = $class;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ $this->args = $args;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['class', 'name', 'args'];
+ }
+
+ public function getType() : string {
+ return 'Expr_StaticCall';
+ }
+
+ public function getRawArgs(): array {
+ return $this->args;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php
new file mode 100644
index 000000000..1ee1a25e5
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/StaticPropertyFetch.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Name;
+use PhpParser\Node\VarLikeIdentifier;
+
+class StaticPropertyFetch extends Expr
+{
+ /** @var Name|Expr Class name */
+ public $class;
+ /** @var VarLikeIdentifier|Expr Property name */
+ public $name;
+
+ /**
+ * Constructs a static property fetch node.
+ *
+ * @param Name|Expr $class Class name
+ * @param string|VarLikeIdentifier|Expr $name Property name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($class, $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->class = $class;
+ $this->name = \is_string($name) ? new VarLikeIdentifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['class', 'name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_StaticPropertyFetch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php
new file mode 100644
index 000000000..9316f47d4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Ternary.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Ternary extends Expr
+{
+ /** @var Expr Condition */
+ public $cond;
+ /** @var null|Expr Expression for true */
+ public $if;
+ /** @var Expr Expression for false */
+ public $else;
+
+ /**
+ * Constructs a ternary operator node.
+ *
+ * @param Expr $cond Condition
+ * @param null|Expr $if Expression for true
+ * @param Expr $else Expression for false
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $cond, $if, Expr $else, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->if = $if;
+ $this->else = $else;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'if', 'else'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Ternary';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php
new file mode 100644
index 000000000..5c97f0e2b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Throw_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node;
+
+class Throw_ extends Node\Expr
+{
+ /** @var Node\Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a throw expression node.
+ *
+ * @param Node\Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Throw';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php
new file mode 100644
index 000000000..ce8808bc6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryMinus.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class UnaryMinus extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a unary minus node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_UnaryMinus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php
new file mode 100644
index 000000000..d23047e54
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/UnaryPlus.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class UnaryPlus extends Expr
+{
+ /** @var Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a unary plus node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_UnaryPlus';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php
new file mode 100644
index 000000000..b47d38e93
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Variable.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Variable extends Expr
+{
+ /** @var string|Expr Name */
+ public $name;
+
+ /**
+ * Constructs a variable node.
+ *
+ * @param string|Expr $name Name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Variable';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php
new file mode 100644
index 000000000..a3efce618
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/YieldFrom.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class YieldFrom extends Expr
+{
+ /** @var Expr Expression to yield from */
+ public $expr;
+
+ /**
+ * Constructs an "yield from" node.
+ *
+ * @param Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Expr_YieldFrom';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php
new file mode 100644
index 000000000..aef8fc333
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Expr/Yield_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Expr;
+
+use PhpParser\Node\Expr;
+
+class Yield_ extends Expr
+{
+ /** @var null|Expr Key expression */
+ public $key;
+ /** @var null|Expr Value expression */
+ public $value;
+
+ /**
+ * Constructs a yield expression node.
+ *
+ * @param null|Expr $value Value expression
+ * @param null|Expr $key Key expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Expr $value = null, Expr $key = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->key = $key;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['key', 'value'];
+ }
+
+ public function getType() : string {
+ return 'Expr_Yield';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php
new file mode 100644
index 000000000..5a825e731
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/FunctionLike.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+
+interface FunctionLike extends Node
+{
+ /**
+ * Whether to return by reference
+ *
+ * @return bool
+ */
+ public function returnsByRef() : bool;
+
+ /**
+ * List of parameters
+ *
+ * @return Param[]
+ */
+ public function getParams() : array;
+
+ /**
+ * Get the declared return type or null
+ *
+ * @return null|Identifier|Name|ComplexType
+ */
+ public function getReturnType();
+
+ /**
+ * The function body
+ *
+ * @return Stmt[]|null
+ */
+ public function getStmts();
+
+ /**
+ * Get PHP attribute groups.
+ *
+ * @return AttributeGroup[]
+ */
+ public function getAttrGroups() : array;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php
new file mode 100644
index 000000000..2f262db0a
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Identifier.php
@@ -0,0 +1,75 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+/**
+ * Represents a non-namespaced name. Namespaced names are represented using Name nodes.
+ */
+class Identifier extends NodeAbstract
+{
+ /** @var string Identifier as string */
+ public $name;
+
+ private static $specialClassNames = [
+ 'self' => true,
+ 'parent' => true,
+ 'static' => true,
+ ];
+
+ /**
+ * Constructs an identifier node.
+ *
+ * @param string $name Identifier as string
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(string $name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name'];
+ }
+
+ /**
+ * Get identifier as string.
+ *
+ * @return string Identifier as string.
+ */
+ public function toString() : string {
+ return $this->name;
+ }
+
+ /**
+ * Get lowercased identifier as string.
+ *
+ * @return string Lowercased identifier as string
+ */
+ public function toLowerString() : string {
+ return strtolower($this->name);
+ }
+
+ /**
+ * Checks whether the identifier is a special class name (self, parent or static).
+ *
+ * @return bool Whether identifier is a special class name
+ */
+ public function isSpecialClassName() : bool {
+ return isset(self::$specialClassNames[strtolower($this->name)]);
+ }
+
+ /**
+ * Get identifier as string.
+ *
+ * @return string Identifier as string
+ */
+ public function __toString() : string {
+ return $this->name;
+ }
+
+ public function getType() : string {
+ return 'Identifier';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php
new file mode 100644
index 000000000..9208e1392
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/IntersectionType.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+class IntersectionType extends ComplexType
+{
+ /** @var (Identifier|Name)[] Types */
+ public $types;
+
+ /**
+ * Constructs an intersection type.
+ *
+ * @param (Identifier|Name)[] $types Types
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $types, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->types = $types;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['types'];
+ }
+
+ public function getType() : string {
+ return 'IntersectionType';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php b/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php
new file mode 100644
index 000000000..2ae1c86b8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/MatchArm.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\Node;
+use PhpParser\NodeAbstract;
+
+class MatchArm extends NodeAbstract
+{
+ /** @var null|Node\Expr[] */
+ public $conds;
+ /** @var Node\Expr */
+ public $body;
+
+ /**
+ * @param null|Node\Expr[] $conds
+ */
+ public function __construct($conds, Node\Expr $body, array $attributes = []) {
+ $this->conds = $conds;
+ $this->body = $body;
+ $this->attributes = $attributes;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['conds', 'body'];
+ }
+
+ public function getType() : string {
+ return 'MatchArm';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
new file mode 100644
index 000000000..6b1cc9f8e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Name.php
@@ -0,0 +1,242 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+class Name extends NodeAbstract
+{
+ /** @var string[] Parts of the name */
+ public $parts;
+
+ private static $specialClassNames = [
+ 'self' => true,
+ 'parent' => true,
+ 'static' => true,
+ ];
+
+ /**
+ * Constructs a name node.
+ *
+ * @param string|string[]|self $name Name as string, part array or Name instance (copy ctor)
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->parts = self::prepareName($name);
+ }
+
+ public function getSubNodeNames() : array {
+ return ['parts'];
+ }
+
+ /**
+ * Gets the first part of the name, i.e. everything before the first namespace separator.
+ *
+ * @return string First part of the name
+ */
+ public function getFirst() : string {
+ return $this->parts[0];
+ }
+
+ /**
+ * Gets the last part of the name, i.e. everything after the last namespace separator.
+ *
+ * @return string Last part of the name
+ */
+ public function getLast() : string {
+ return $this->parts[count($this->parts) - 1];
+ }
+
+ /**
+ * Checks whether the name is unqualified. (E.g. Name)
+ *
+ * @return bool Whether the name is unqualified
+ */
+ public function isUnqualified() : bool {
+ return 1 === count($this->parts);
+ }
+
+ /**
+ * Checks whether the name is qualified. (E.g. Name\Name)
+ *
+ * @return bool Whether the name is qualified
+ */
+ public function isQualified() : bool {
+ return 1 < count($this->parts);
+ }
+
+ /**
+ * Checks whether the name is fully qualified. (E.g. \Name)
+ *
+ * @return bool Whether the name is fully qualified
+ */
+ public function isFullyQualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is explicitly relative to the current namespace. (E.g. namespace\Name)
+ *
+ * @return bool Whether the name is relative
+ */
+ public function isRelative() : bool {
+ return false;
+ }
+
+ /**
+ * Returns a string representation of the name itself, without taking the name type into
+ * account (e.g., not including a leading backslash for fully qualified names).
+ *
+ * @return string String representation
+ */
+ public function toString() : string {
+ return implode('\\', $this->parts);
+ }
+
+ /**
+ * Returns a string representation of the name as it would occur in code (e.g., including
+ * leading backslash for fully qualified names.
+ *
+ * @return string String representation
+ */
+ public function toCodeString() : string {
+ return $this->toString();
+ }
+
+ /**
+ * Returns lowercased string representation of the name, without taking the name type into
+ * account (e.g., no leading backslash for fully qualified names).
+ *
+ * @return string Lowercased string representation
+ */
+ public function toLowerString() : string {
+ return strtolower(implode('\\', $this->parts));
+ }
+
+ /**
+ * Checks whether the identifier is a special class name (self, parent or static).
+ *
+ * @return bool Whether identifier is a special class name
+ */
+ public function isSpecialClassName() : bool {
+ return count($this->parts) === 1
+ && isset(self::$specialClassNames[strtolower($this->parts[0])]);
+ }
+
+ /**
+ * Returns a string representation of the name by imploding the namespace parts with the
+ * namespace separator.
+ *
+ * @return string String representation
+ */
+ public function __toString() : string {
+ return implode('\\', $this->parts);
+ }
+
+ /**
+ * Gets a slice of a name (similar to array_slice).
+ *
+ * This method returns a new instance of the same type as the original and with the same
+ * attributes.
+ *
+ * If the slice is empty, null is returned. The null value will be correctly handled in
+ * concatenations using concat().
+ *
+ * Offset and length have the same meaning as in array_slice().
+ *
+ * @param int $offset Offset to start the slice at (may be negative)
+ * @param int|null $length Length of the slice (may be negative)
+ *
+ * @return static|null Sliced name
+ */
+ public function slice(int $offset, int $length = null) {
+ $numParts = count($this->parts);
+
+ $realOffset = $offset < 0 ? $offset + $numParts : $offset;
+ if ($realOffset < 0 || $realOffset > $numParts) {
+ throw new \OutOfBoundsException(sprintf('Offset %d is out of bounds', $offset));
+ }
+
+ if (null === $length) {
+ $realLength = $numParts - $realOffset;
+ } else {
+ $realLength = $length < 0 ? $length + $numParts - $realOffset : $length;
+ if ($realLength < 0 || $realLength > $numParts) {
+ throw new \OutOfBoundsException(sprintf('Length %d is out of bounds', $length));
+ }
+ }
+
+ if ($realLength === 0) {
+ // Empty slice is represented as null
+ return null;
+ }
+
+ return new static(array_slice($this->parts, $realOffset, $realLength), $this->attributes);
+ }
+
+ /**
+ * Concatenate two names, yielding a new Name instance.
+ *
+ * The type of the generated instance depends on which class this method is called on, for
+ * example Name\FullyQualified::concat() will yield a Name\FullyQualified instance.
+ *
+ * If one of the arguments is null, a new instance of the other name will be returned. If both
+ * arguments are null, null will be returned. As such, writing
+ * Name::concat($namespace, $shortName)
+ * where $namespace is a Name node or null will work as expected.
+ *
+ * @param string|string[]|self|null $name1 The first name
+ * @param string|string[]|self|null $name2 The second name
+ * @param array $attributes Attributes to assign to concatenated name
+ *
+ * @return static|null Concatenated name
+ */
+ public static function concat($name1, $name2, array $attributes = []) {
+ if (null === $name1 && null === $name2) {
+ return null;
+ } elseif (null === $name1) {
+ return new static(self::prepareName($name2), $attributes);
+ } elseif (null === $name2) {
+ return new static(self::prepareName($name1), $attributes);
+ } else {
+ return new static(
+ array_merge(self::prepareName($name1), self::prepareName($name2)), $attributes
+ );
+ }
+ }
+
+ /**
+ * Prepares a (string, array or Name node) name for use in name changing methods by converting
+ * it to an array.
+ *
+ * @param string|string[]|self $name Name to prepare
+ *
+ * @return string[] Prepared name
+ */
+ private static function prepareName($name) : array {
+ if (\is_string($name)) {
+ if ('' === $name) {
+ throw new \InvalidArgumentException('Name cannot be empty');
+ }
+
+ return explode('\\', $name);
+ } elseif (\is_array($name)) {
+ if (empty($name)) {
+ throw new \InvalidArgumentException('Name cannot be empty');
+ }
+
+ return $name;
+ } elseif ($name instanceof self) {
+ return $name->parts;
+ }
+
+ throw new \InvalidArgumentException(
+ 'Expected string, array of parts or Name instance'
+ );
+ }
+
+ public function getType() : string {
+ return 'Name';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php
new file mode 100644
index 000000000..1df93a56b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Name/FullyQualified.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Name;
+
+class FullyQualified extends \PhpParser\Node\Name
+{
+ /**
+ * Checks whether the name is unqualified. (E.g. Name)
+ *
+ * @return bool Whether the name is unqualified
+ */
+ public function isUnqualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is qualified. (E.g. Name\Name)
+ *
+ * @return bool Whether the name is qualified
+ */
+ public function isQualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is fully qualified. (E.g. \Name)
+ *
+ * @return bool Whether the name is fully qualified
+ */
+ public function isFullyQualified() : bool {
+ return true;
+ }
+
+ /**
+ * Checks whether the name is explicitly relative to the current namespace. (E.g. namespace\Name)
+ *
+ * @return bool Whether the name is relative
+ */
+ public function isRelative() : bool {
+ return false;
+ }
+
+ public function toCodeString() : string {
+ return '\\' . $this->toString();
+ }
+
+ public function getType() : string {
+ return 'Name_FullyQualified';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php
new file mode 100644
index 000000000..57bf7af2b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Name/Relative.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Name;
+
+class Relative extends \PhpParser\Node\Name
+{
+ /**
+ * Checks whether the name is unqualified. (E.g. Name)
+ *
+ * @return bool Whether the name is unqualified
+ */
+ public function isUnqualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is qualified. (E.g. Name\Name)
+ *
+ * @return bool Whether the name is qualified
+ */
+ public function isQualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is fully qualified. (E.g. \Name)
+ *
+ * @return bool Whether the name is fully qualified
+ */
+ public function isFullyQualified() : bool {
+ return false;
+ }
+
+ /**
+ * Checks whether the name is explicitly relative to the current namespace. (E.g. namespace\Name)
+ *
+ * @return bool Whether the name is relative
+ */
+ public function isRelative() : bool {
+ return true;
+ }
+
+ public function toCodeString() : string {
+ return 'namespace\\' . $this->toString();
+ }
+
+ public function getType() : string {
+ return 'Name_Relative';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php
new file mode 100644
index 000000000..d68e26a38
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/NullableType.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+class NullableType extends ComplexType
+{
+ /** @var Identifier|Name Type */
+ public $type;
+
+ /**
+ * Constructs a nullable type (wrapping another type).
+ *
+ * @param string|Identifier|Name $type Type
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($type, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->type = \is_string($type) ? new Identifier($type) : $type;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['type'];
+ }
+
+ public function getType() : string {
+ return 'NullableType';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php
new file mode 100644
index 000000000..1e90b7944
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Param.php
@@ -0,0 +1,60 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+class Param extends NodeAbstract
+{
+ /** @var null|Identifier|Name|ComplexType Type declaration */
+ public $type;
+ /** @var bool Whether parameter is passed by reference */
+ public $byRef;
+ /** @var bool Whether this is a variadic argument */
+ public $variadic;
+ /** @var Expr\Variable|Expr\Error Parameter variable */
+ public $var;
+ /** @var null|Expr Default value */
+ public $default;
+ /** @var int */
+ public $flags;
+ /** @var AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /**
+ * Constructs a parameter node.
+ *
+ * @param Expr\Variable|Expr\Error $var Parameter variable
+ * @param null|Expr $default Default value
+ * @param null|string|Identifier|Name|ComplexType $type Type declaration
+ * @param bool $byRef Whether is passed by reference
+ * @param bool $variadic Whether this is a variadic argument
+ * @param array $attributes Additional attributes
+ * @param int $flags Optional visibility flags
+ * @param AttributeGroup[] $attrGroups PHP attribute groups
+ */
+ public function __construct(
+ $var, Expr $default = null, $type = null,
+ bool $byRef = false, bool $variadic = false,
+ array $attributes = [],
+ int $flags = 0,
+ array $attrGroups = []
+ ) {
+ $this->attributes = $attributes;
+ $this->type = \is_string($type) ? new Identifier($type) : $type;
+ $this->byRef = $byRef;
+ $this->variadic = $variadic;
+ $this->var = $var;
+ $this->default = $default;
+ $this->flags = $flags;
+ $this->attrGroups = $attrGroups;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'flags', 'type', 'byRef', 'variadic', 'var', 'default'];
+ }
+
+ public function getType() : string {
+ return 'Param';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php
new file mode 100644
index 000000000..8117909b6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar.php
@@ -0,0 +1,7 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+abstract class Scalar extends Expr
+{
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
new file mode 100644
index 000000000..29ce0dd40
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/DNumber.php
@@ -0,0 +1,70 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Node\Scalar;
+
+class DNumber extends Scalar
+{
+ /** @var float Number value */
+ public $value;
+
+ /**
+ * Constructs a float number scalar node.
+ *
+ * @param float $value Value of the number
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(float $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['value'];
+ }
+
+ /**
+ * @internal
+ *
+ * Parses a DNUMBER token like PHP would.
+ *
+ * @param string $str A string number
+ *
+ * @return float The parsed number
+ */
+ public static function parse(string $str) : float {
+ $str = str_replace('_', '', $str);
+
+ // if string contains any of .eE just cast it to float
+ if (false !== strpbrk($str, '.eE')) {
+ return (float) $str;
+ }
+
+ // otherwise it's an integer notation that overflowed into a float
+ // if it starts with 0 it's one of the special integer notations
+ if ('0' === $str[0]) {
+ // hex
+ if ('x' === $str[1] || 'X' === $str[1]) {
+ return hexdec($str);
+ }
+
+ // bin
+ if ('b' === $str[1] || 'B' === $str[1]) {
+ return bindec($str);
+ }
+
+ // oct
+ // substr($str, 0, strcspn($str, '89')) cuts the string at the first invalid digit (8 or 9)
+ // so that only the digits before that are used
+ return octdec(substr($str, 0, strcspn($str, '89')));
+ }
+
+ // dec
+ return (float) $str;
+ }
+
+ public function getType() : string {
+ return 'Scalar_DNumber';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php
new file mode 100644
index 000000000..fa5d2e268
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/Encapsed.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Node\Expr;
+use PhpParser\Node\Scalar;
+
+class Encapsed extends Scalar
+{
+ /** @var Expr[] list of string parts */
+ public $parts;
+
+ /**
+ * Constructs an encapsed string node.
+ *
+ * @param Expr[] $parts Encaps list
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $parts, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->parts = $parts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['parts'];
+ }
+
+ public function getType() : string {
+ return 'Scalar_Encapsed';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php
new file mode 100644
index 000000000..bb3194c1d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/EncapsedStringPart.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Node\Scalar;
+
+class EncapsedStringPart extends Scalar
+{
+ /** @var string String value */
+ public $value;
+
+ /**
+ * Constructs a node representing a string part of an encapsed string.
+ *
+ * @param string $value String value
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(string $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['value'];
+ }
+
+ public function getType() : string {
+ return 'Scalar_EncapsedStringPart';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
new file mode 100644
index 000000000..f17dd1f8a
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/LNumber.php
@@ -0,0 +1,78 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Error;
+use PhpParser\Node\Scalar;
+
+class LNumber extends Scalar
+{
+ /* For use in "kind" attribute */
+ const KIND_BIN = 2;
+ const KIND_OCT = 8;
+ const KIND_DEC = 10;
+ const KIND_HEX = 16;
+
+ /** @var int Number value */
+ public $value;
+
+ /**
+ * Constructs an integer number scalar node.
+ *
+ * @param int $value Value of the number
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(int $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['value'];
+ }
+
+ /**
+ * Constructs an LNumber node from a string number literal.
+ *
+ * @param string $str String number literal (decimal, octal, hex or binary)
+ * @param array $attributes Additional attributes
+ * @param bool $allowInvalidOctal Whether to allow invalid octal numbers (PHP 5)
+ *
+ * @return LNumber The constructed LNumber, including kind attribute
+ */
+ public static function fromString(string $str, array $attributes = [], bool $allowInvalidOctal = false) : LNumber {
+ $str = str_replace('_', '', $str);
+
+ if ('0' !== $str[0] || '0' === $str) {
+ $attributes['kind'] = LNumber::KIND_DEC;
+ return new LNumber((int) $str, $attributes);
+ }
+
+ if ('x' === $str[1] || 'X' === $str[1]) {
+ $attributes['kind'] = LNumber::KIND_HEX;
+ return new LNumber(hexdec($str), $attributes);
+ }
+
+ if ('b' === $str[1] || 'B' === $str[1]) {
+ $attributes['kind'] = LNumber::KIND_BIN;
+ return new LNumber(bindec($str), $attributes);
+ }
+
+ if (!$allowInvalidOctal && strpbrk($str, '89')) {
+ throw new Error('Invalid numeric literal', $attributes);
+ }
+
+ // Strip optional explicit octal prefix.
+ if ('o' === $str[1] || 'O' === $str[1]) {
+ $str = substr($str, 2);
+ }
+
+ // use intval instead of octdec to get proper cutting behavior with malformed numbers
+ $attributes['kind'] = LNumber::KIND_OCT;
+ return new LNumber(intval($str, 8), $attributes);
+ }
+
+ public function getType() : string {
+ return 'Scalar_LNumber';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php
new file mode 100644
index 000000000..941f0c762
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Node\Scalar;
+
+abstract class MagicConst extends Scalar
+{
+ /**
+ * Constructs a magic constant node.
+ *
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $attributes = []) {
+ $this->attributes = $attributes;
+ }
+
+ public function getSubNodeNames() : array {
+ return [];
+ }
+
+ /**
+ * Get name of magic constant.
+ *
+ * @return string Name of magic constant
+ */
+ abstract public function getName() : string;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php
new file mode 100644
index 000000000..244328476
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Class_.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Class_ extends MagicConst
+{
+ public function getName() : string {
+ return '__CLASS__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Class';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php
new file mode 100644
index 000000000..2b618473e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Dir.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Dir extends MagicConst
+{
+ public function getName() : string {
+ return '__DIR__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Dir';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php
new file mode 100644
index 000000000..3422db069
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/File.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class File extends MagicConst
+{
+ public function getName() : string {
+ return '__FILE__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_File';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php
new file mode 100644
index 000000000..1db65a151
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Function_.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Function_ extends MagicConst
+{
+ public function getName() : string {
+ return '__FUNCTION__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Function';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php
new file mode 100644
index 000000000..25d3de57c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Line.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Line extends MagicConst
+{
+ public function getName() : string {
+ return '__LINE__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Line';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php
new file mode 100644
index 000000000..d168d56f1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Method.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Method extends MagicConst
+{
+ public function getName() : string {
+ return '__METHOD__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Method';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php
new file mode 100644
index 000000000..4fabb751a
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Namespace_.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Namespace_ extends MagicConst
+{
+ public function getName() : string {
+ return '__NAMESPACE__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Namespace';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php
new file mode 100644
index 000000000..5ee7e40a3
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/MagicConst/Trait_.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar\MagicConst;
+
+use PhpParser\Node\Scalar\MagicConst;
+
+class Trait_ extends MagicConst
+{
+ public function getName() : string {
+ return '__TRAIT__';
+ }
+
+ public function getType() : string {
+ return 'Scalar_MagicConst_Trait';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php
new file mode 100644
index 000000000..8a6d93a47
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Scalar/String_.php
@@ -0,0 +1,141 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Scalar;
+
+use PhpParser\Error;
+use PhpParser\Node\Scalar;
+
+class String_ extends Scalar
+{
+ /* For use in "kind" attribute */
+ const KIND_SINGLE_QUOTED = 1;
+ const KIND_DOUBLE_QUOTED = 2;
+ const KIND_HEREDOC = 3;
+ const KIND_NOWDOC = 4;
+
+ /** @var string String value */
+ public $value;
+
+ protected static $replacements = [
+ '\\' => '\\',
+ '$' => '$',
+ 'n' => "\n",
+ 'r' => "\r",
+ 't' => "\t",
+ 'f' => "\f",
+ 'v' => "\v",
+ 'e' => "\x1B",
+ ];
+
+ /**
+ * Constructs a string scalar node.
+ *
+ * @param string $value Value of the string
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(string $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['value'];
+ }
+
+ /**
+ * @internal
+ *
+ * Parses a string token.
+ *
+ * @param string $str String token content
+ * @param bool $parseUnicodeEscape Whether to parse PHP 7 \u escapes
+ *
+ * @return string The parsed string
+ */
+ public static function parse(string $str, bool $parseUnicodeEscape = true) : string {
+ $bLength = 0;
+ if ('b' === $str[0] || 'B' === $str[0]) {
+ $bLength = 1;
+ }
+
+ if ('\'' === $str[$bLength]) {
+ return str_replace(
+ ['\\\\', '\\\''],
+ ['\\', '\''],
+ substr($str, $bLength + 1, -1)
+ );
+ } else {
+ return self::parseEscapeSequences(
+ substr($str, $bLength + 1, -1), '"', $parseUnicodeEscape
+ );
+ }
+ }
+
+ /**
+ * @internal
+ *
+ * Parses escape sequences in strings (all string types apart from single quoted).
+ *
+ * @param string $str String without quotes
+ * @param null|string $quote Quote type
+ * @param bool $parseUnicodeEscape Whether to parse PHP 7 \u escapes
+ *
+ * @return string String with escape sequences parsed
+ */
+ public static function parseEscapeSequences(string $str, $quote, bool $parseUnicodeEscape = true) : string {
+ if (null !== $quote) {
+ $str = str_replace('\\' . $quote, $quote, $str);
+ }
+
+ $extra = '';
+ if ($parseUnicodeEscape) {
+ $extra = '|u\{([0-9a-fA-F]+)\}';
+ }
+
+ return preg_replace_callback(
+ '~\\\\([\\\\$nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3}' . $extra . ')~',
+ function($matches) {
+ $str = $matches[1];
+
+ if (isset(self::$replacements[$str])) {
+ return self::$replacements[$str];
+ } elseif ('x' === $str[0] || 'X' === $str[0]) {
+ return chr(hexdec(substr($str, 1)));
+ } elseif ('u' === $str[0]) {
+ return self::codePointToUtf8(hexdec($matches[2]));
+ } else {
+ return chr(octdec($str));
+ }
+ },
+ $str
+ );
+ }
+
+ /**
+ * Converts a Unicode code point to its UTF-8 encoded representation.
+ *
+ * @param int $num Code point
+ *
+ * @return string UTF-8 representation of code point
+ */
+ private static function codePointToUtf8(int $num) : string {
+ if ($num <= 0x7F) {
+ return chr($num);
+ }
+ if ($num <= 0x7FF) {
+ return chr(($num>>6) + 0xC0) . chr(($num&0x3F) + 0x80);
+ }
+ if ($num <= 0xFFFF) {
+ return chr(($num>>12) + 0xE0) . chr((($num>>6)&0x3F) + 0x80) . chr(($num&0x3F) + 0x80);
+ }
+ if ($num <= 0x1FFFFF) {
+ return chr(($num>>18) + 0xF0) . chr((($num>>12)&0x3F) + 0x80)
+ . chr((($num>>6)&0x3F) + 0x80) . chr(($num&0x3F) + 0x80);
+ }
+ throw new Error('Invalid UTF-8 codepoint escape sequence: Codepoint too large');
+ }
+
+ public function getType() : string {
+ return 'Scalar_String';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php
new file mode 100644
index 000000000..69d33e579
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt.php
@@ -0,0 +1,9 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+abstract class Stmt extends NodeAbstract
+{
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php
new file mode 100644
index 000000000..6adc5a6c6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Break_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Break_ extends Node\Stmt
+{
+ /** @var null|Node\Expr Number of loops to break */
+ public $num;
+
+ /**
+ * Constructs a break node.
+ *
+ * @param null|Node\Expr $num Number of loops to break
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $num = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->num = $num;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['num'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Break';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php
new file mode 100644
index 000000000..2bf044c90
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Case_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Case_ extends Node\Stmt
+{
+ /** @var null|Node\Expr Condition (null for default) */
+ public $cond;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a case node.
+ *
+ * @param null|Node\Expr $cond Condition (null for default)
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($cond, array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Case';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
new file mode 100644
index 000000000..9b9c09478
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Catch_.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+
+class Catch_ extends Node\Stmt
+{
+ /** @var Node\Name[] Types of exceptions to catch */
+ public $types;
+ /** @var Expr\Variable|null Variable for exception */
+ public $var;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a catch node.
+ *
+ * @param Node\Name[] $types Types of exceptions to catch
+ * @param Expr\Variable|null $var Variable for exception
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(
+ array $types, Expr\Variable $var = null, array $stmts = [], array $attributes = []
+ ) {
+ $this->attributes = $attributes;
+ $this->types = $types;
+ $this->var = $var;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['types', 'var', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Catch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
new file mode 100644
index 000000000..1fc7f3362
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassConst.php
@@ -0,0 +1,80 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class ClassConst extends Node\Stmt
+{
+ /** @var int Modifiers */
+ public $flags;
+ /** @var Node\Const_[] Constant declarations */
+ public $consts;
+ /** @var Node\AttributeGroup[] */
+ public $attrGroups;
+
+ /**
+ * Constructs a class const list node.
+ *
+ * @param Node\Const_[] $consts Constant declarations
+ * @param int $flags Modifiers
+ * @param array $attributes Additional attributes
+ * @param Node\AttributeGroup[] $attrGroups PHP attribute groups
+ */
+ public function __construct(
+ array $consts,
+ int $flags = 0,
+ array $attributes = [],
+ array $attrGroups = []
+ ) {
+ $this->attributes = $attributes;
+ $this->flags = $flags;
+ $this->consts = $consts;
+ $this->attrGroups = $attrGroups;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'flags', 'consts'];
+ }
+
+ /**
+ * Whether constant is explicitly or implicitly public.
+ *
+ * @return bool
+ */
+ public function isPublic() : bool {
+ return ($this->flags & Class_::MODIFIER_PUBLIC) !== 0
+ || ($this->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0;
+ }
+
+ /**
+ * Whether constant is protected.
+ *
+ * @return bool
+ */
+ public function isProtected() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PROTECTED);
+ }
+
+ /**
+ * Whether constant is private.
+ *
+ * @return bool
+ */
+ public function isPrivate() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PRIVATE);
+ }
+
+ /**
+ * Whether constant is final.
+ *
+ * @return bool
+ */
+ public function isFinal() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_FINAL);
+ }
+
+ public function getType() : string {
+ return 'Stmt_ClassConst';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php
new file mode 100644
index 000000000..6c3369172
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassLike.php
@@ -0,0 +1,109 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+abstract class ClassLike extends Node\Stmt
+{
+ /** @var Node\Identifier|null Name */
+ public $name;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /** @var Node\Name Namespaced name (if using NameResolver) */
+ public $namespacedName;
+
+ /**
+ * @return TraitUse[]
+ */
+ public function getTraitUses() : array {
+ $traitUses = [];
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof TraitUse) {
+ $traitUses[] = $stmt;
+ }
+ }
+ return $traitUses;
+ }
+
+ /**
+ * @return ClassConst[]
+ */
+ public function getConstants() : array {
+ $constants = [];
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof ClassConst) {
+ $constants[] = $stmt;
+ }
+ }
+ return $constants;
+ }
+
+ /**
+ * @return Property[]
+ */
+ public function getProperties() : array {
+ $properties = [];
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof Property) {
+ $properties[] = $stmt;
+ }
+ }
+ return $properties;
+ }
+
+ /**
+ * Gets property with the given name defined directly in this class/interface/trait.
+ *
+ * @param string $name Name of the property
+ *
+ * @return Property|null Property node or null if the property does not exist
+ */
+ public function getProperty(string $name) {
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof Property) {
+ foreach ($stmt->props as $prop) {
+ if ($prop instanceof PropertyProperty && $name === $prop->name->toString()) {
+ return $stmt;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Gets all methods defined directly in this class/interface/trait
+ *
+ * @return ClassMethod[]
+ */
+ public function getMethods() : array {
+ $methods = [];
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof ClassMethod) {
+ $methods[] = $stmt;
+ }
+ }
+ return $methods;
+ }
+
+ /**
+ * Gets method with the given name defined directly in this class/interface/trait.
+ *
+ * @param string $name Name of the method (compared case-insensitively)
+ *
+ * @return ClassMethod|null Method node or null if the method does not exist
+ */
+ public function getMethod(string $name) {
+ $lowerName = strtolower($name);
+ foreach ($this->stmts as $stmt) {
+ if ($stmt instanceof ClassMethod && $lowerName === $stmt->name->toLowerString()) {
+ return $stmt;
+ }
+ }
+ return null;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
new file mode 100644
index 000000000..09b877a92
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ClassMethod.php
@@ -0,0 +1,159 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\FunctionLike;
+
+class ClassMethod extends Node\Stmt implements FunctionLike
+{
+ /** @var int Flags */
+ public $flags;
+ /** @var bool Whether to return by reference */
+ public $byRef;
+ /** @var Node\Identifier Name */
+ public $name;
+ /** @var Node\Param[] Parameters */
+ public $params;
+ /** @var null|Node\Identifier|Node\Name|Node\ComplexType Return type */
+ public $returnType;
+ /** @var Node\Stmt[]|null Statements */
+ public $stmts;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ private static $magicNames = [
+ '__construct' => true,
+ '__destruct' => true,
+ '__call' => true,
+ '__callstatic' => true,
+ '__get' => true,
+ '__set' => true,
+ '__isset' => true,
+ '__unset' => true,
+ '__sleep' => true,
+ '__wakeup' => true,
+ '__tostring' => true,
+ '__set_state' => true,
+ '__clone' => true,
+ '__invoke' => true,
+ '__debuginfo' => true,
+ ];
+
+ /**
+ * Constructs a class method node.
+ *
+ * @param string|Node\Identifier $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'flags => MODIFIER_PUBLIC: Flags
+ * 'byRef' => false : Whether to return by reference
+ * 'params' => array() : Parameters
+ * 'returnType' => null : Return type
+ * 'stmts' => array() : Statements
+ * 'attrGroups' => array() : PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->flags = $subNodes['flags'] ?? $subNodes['type'] ?? 0;
+ $this->byRef = $subNodes['byRef'] ?? false;
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->params = $subNodes['params'] ?? [];
+ $returnType = $subNodes['returnType'] ?? null;
+ $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
+ $this->stmts = array_key_exists('stmts', $subNodes) ? $subNodes['stmts'] : [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'flags', 'byRef', 'name', 'params', 'returnType', 'stmts'];
+ }
+
+ public function returnsByRef() : bool {
+ return $this->byRef;
+ }
+
+ public function getParams() : array {
+ return $this->params;
+ }
+
+ public function getReturnType() {
+ return $this->returnType;
+ }
+
+ public function getStmts() {
+ return $this->stmts;
+ }
+
+ public function getAttrGroups() : array {
+ return $this->attrGroups;
+ }
+
+ /**
+ * Whether the method is explicitly or implicitly public.
+ *
+ * @return bool
+ */
+ public function isPublic() : bool {
+ return ($this->flags & Class_::MODIFIER_PUBLIC) !== 0
+ || ($this->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0;
+ }
+
+ /**
+ * Whether the method is protected.
+ *
+ * @return bool
+ */
+ public function isProtected() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PROTECTED);
+ }
+
+ /**
+ * Whether the method is private.
+ *
+ * @return bool
+ */
+ public function isPrivate() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PRIVATE);
+ }
+
+ /**
+ * Whether the method is abstract.
+ *
+ * @return bool
+ */
+ public function isAbstract() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_ABSTRACT);
+ }
+
+ /**
+ * Whether the method is final.
+ *
+ * @return bool
+ */
+ public function isFinal() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_FINAL);
+ }
+
+ /**
+ * Whether the method is static.
+ *
+ * @return bool
+ */
+ public function isStatic() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_STATIC);
+ }
+
+ /**
+ * Whether the method is magic.
+ *
+ * @return bool
+ */
+ public function isMagic() : bool {
+ return isset(self::$magicNames[$this->name->toLowerString()]);
+ }
+
+ public function getType() : string {
+ return 'Stmt_ClassMethod';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
new file mode 100644
index 000000000..b290aaf6d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Class_.php
@@ -0,0 +1,112 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Error;
+use PhpParser\Node;
+
+class Class_ extends ClassLike
+{
+ const MODIFIER_PUBLIC = 1;
+ const MODIFIER_PROTECTED = 2;
+ const MODIFIER_PRIVATE = 4;
+ const MODIFIER_STATIC = 8;
+ const MODIFIER_ABSTRACT = 16;
+ const MODIFIER_FINAL = 32;
+ const MODIFIER_READONLY = 64;
+
+ const VISIBILITY_MODIFIER_MASK = 7; // 1 | 2 | 4
+
+ /** @var int Type */
+ public $flags;
+ /** @var null|Node\Name Name of extended class */
+ public $extends;
+ /** @var Node\Name[] Names of implemented interfaces */
+ public $implements;
+
+ /**
+ * Constructs a class node.
+ *
+ * @param string|Node\Identifier|null $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'flags' => 0 : Flags
+ * 'extends' => null : Name of extended class
+ * 'implements' => array(): Names of implemented interfaces
+ * 'stmts' => array(): Statements
+ * 'attrGroups' => array(): PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->flags = $subNodes['flags'] ?? $subNodes['type'] ?? 0;
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->extends = $subNodes['extends'] ?? null;
+ $this->implements = $subNodes['implements'] ?? [];
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'flags', 'name', 'extends', 'implements', 'stmts'];
+ }
+
+ /**
+ * Whether the class is explicitly abstract.
+ *
+ * @return bool
+ */
+ public function isAbstract() : bool {
+ return (bool) ($this->flags & self::MODIFIER_ABSTRACT);
+ }
+
+ /**
+ * Whether the class is final.
+ *
+ * @return bool
+ */
+ public function isFinal() : bool {
+ return (bool) ($this->flags & self::MODIFIER_FINAL);
+ }
+
+ /**
+ * Whether the class is anonymous.
+ *
+ * @return bool
+ */
+ public function isAnonymous() : bool {
+ return null === $this->name;
+ }
+
+ /**
+ * @internal
+ */
+ public static function verifyModifier($a, $b) {
+ if ($a & self::VISIBILITY_MODIFIER_MASK && $b & self::VISIBILITY_MODIFIER_MASK) {
+ throw new Error('Multiple access type modifiers are not allowed');
+ }
+
+ if ($a & self::MODIFIER_ABSTRACT && $b & self::MODIFIER_ABSTRACT) {
+ throw new Error('Multiple abstract modifiers are not allowed');
+ }
+
+ if ($a & self::MODIFIER_STATIC && $b & self::MODIFIER_STATIC) {
+ throw new Error('Multiple static modifiers are not allowed');
+ }
+
+ if ($a & self::MODIFIER_FINAL && $b & self::MODIFIER_FINAL) {
+ throw new Error('Multiple final modifiers are not allowed');
+ }
+
+ if ($a & self::MODIFIER_READONLY && $b & self::MODIFIER_READONLY) {
+ throw new Error('Multiple readonly modifiers are not allowed');
+ }
+
+ if ($a & 48 && $b & 48) {
+ throw new Error('Cannot use the final modifier on an abstract class member');
+ }
+ }
+
+ public function getType() : string {
+ return 'Stmt_Class';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php
new file mode 100644
index 000000000..e6316345e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Const_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Const_ extends Node\Stmt
+{
+ /** @var Node\Const_[] Constant declarations */
+ public $consts;
+
+ /**
+ * Constructs a const list node.
+ *
+ * @param Node\Const_[] $consts Constant declarations
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $consts, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->consts = $consts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['consts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Const';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php
new file mode 100644
index 000000000..24882683b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Continue_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Continue_ extends Node\Stmt
+{
+ /** @var null|Node\Expr Number of loops to continue */
+ public $num;
+
+ /**
+ * Constructs a continue node.
+ *
+ * @param null|Node\Expr $num Number of loops to continue
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $num = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->num = $num;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['num'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Continue';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php
new file mode 100644
index 000000000..ac07f30c7
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/DeclareDeclare.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class DeclareDeclare extends Node\Stmt
+{
+ /** @var Node\Identifier Key */
+ public $key;
+ /** @var Node\Expr Value */
+ public $value;
+
+ /**
+ * Constructs a declare key=>value pair node.
+ *
+ * @param string|Node\Identifier $key Key
+ * @param Node\Expr $value Value
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($key, Node\Expr $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->key = \is_string($key) ? new Node\Identifier($key) : $key;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['key', 'value'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_DeclareDeclare';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php
new file mode 100644
index 000000000..f46ff0baf
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Declare_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Declare_ extends Node\Stmt
+{
+ /** @var DeclareDeclare[] List of declares */
+ public $declares;
+ /** @var Node\Stmt[]|null Statements */
+ public $stmts;
+
+ /**
+ * Constructs a declare node.
+ *
+ * @param DeclareDeclare[] $declares List of declares
+ * @param Node\Stmt[]|null $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $declares, array $stmts = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->declares = $declares;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['declares', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Declare';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php
new file mode 100644
index 000000000..78e90da03
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Do_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Do_ extends Node\Stmt
+{
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var Node\Expr Condition */
+ public $cond;
+
+ /**
+ * Constructs a do while node.
+ *
+ * @param Node\Expr $cond Condition
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $cond, array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['stmts', 'cond'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Do';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php
new file mode 100644
index 000000000..7cc50d5d6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Echo_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Echo_ extends Node\Stmt
+{
+ /** @var Node\Expr[] Expressions */
+ public $exprs;
+
+ /**
+ * Constructs an echo node.
+ *
+ * @param Node\Expr[] $exprs Expressions
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $exprs, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->exprs = $exprs;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['exprs'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Echo';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php
new file mode 100644
index 000000000..eef1ece32
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/ElseIf_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class ElseIf_ extends Node\Stmt
+{
+ /** @var Node\Expr Condition */
+ public $cond;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs an elseif node.
+ *
+ * @param Node\Expr $cond Condition
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $cond, array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_ElseIf';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php
new file mode 100644
index 000000000..0e61778e2
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Else_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Else_ extends Node\Stmt
+{
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs an else node.
+ *
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Else';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php
new file mode 100644
index 000000000..5beff8b39
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/EnumCase.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\AttributeGroup;
+
+class EnumCase extends Node\Stmt
+{
+ /** @var Node\Identifier Enum case name */
+ public $name;
+ /** @var Node\Expr|null Enum case expression */
+ public $expr;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /**
+ * @param string|Node\Identifier $name Enum case name
+ * @param Node\Expr|null $expr Enum case expression
+ * @param AttributeGroup[] $attrGroups PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, Node\Expr $expr = null, array $attrGroups = [], array $attributes = []) {
+ parent::__construct($attributes);
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->expr = $expr;
+ $this->attrGroups = $attrGroups;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'name', 'expr'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_EnumCase';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php
new file mode 100644
index 000000000..3a50c225d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Enum_.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Enum_ extends ClassLike
+{
+ /** @var null|Node\Identifier Scalar Type */
+ public $scalarType;
+ /** @var Node\Name[] Names of implemented interfaces */
+ public $implements;
+
+ /**
+ * @param string|Node\Identifier|null $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'scalarType' => null : Scalar type
+ * 'implements' => array() : Names of implemented interfaces
+ * 'stmts' => array() : Statements
+ * 'attrGroups' => array() : PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->scalarType = $subNodes['scalarType'] ?? null;
+ $this->implements = $subNodes['implements'] ?? [];
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+
+ parent::__construct($attributes);
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'name', 'scalarType', 'implements', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Enum';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php
new file mode 100644
index 000000000..99d1687de
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Expression.php
@@ -0,0 +1,33 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+/**
+ * Represents statements of type "expr;"
+ */
+class Expression extends Node\Stmt
+{
+ /** @var Node\Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs an expression statement.
+ *
+ * @param Node\Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Expression';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php
new file mode 100644
index 000000000..d55b8b687
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Finally_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Finally_ extends Node\Stmt
+{
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a finally node.
+ *
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Finally';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php
new file mode 100644
index 000000000..1323d37cf
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/For_.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class For_ extends Node\Stmt
+{
+ /** @var Node\Expr[] Init expressions */
+ public $init;
+ /** @var Node\Expr[] Loop conditions */
+ public $cond;
+ /** @var Node\Expr[] Loop expressions */
+ public $loop;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a for loop node.
+ *
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'init' => array(): Init expressions
+ * 'cond' => array(): Loop conditions
+ * 'loop' => array(): Loop expressions
+ * 'stmts' => array(): Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->init = $subNodes['init'] ?? [];
+ $this->cond = $subNodes['cond'] ?? [];
+ $this->loop = $subNodes['loop'] ?? [];
+ $this->stmts = $subNodes['stmts'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['init', 'cond', 'loop', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_For';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php
new file mode 100644
index 000000000..0556a7ce5
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Foreach_.php
@@ -0,0 +1,47 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Foreach_ extends Node\Stmt
+{
+ /** @var Node\Expr Expression to iterate */
+ public $expr;
+ /** @var null|Node\Expr Variable to assign key to */
+ public $keyVar;
+ /** @var bool Whether to assign value by reference */
+ public $byRef;
+ /** @var Node\Expr Variable to assign value to */
+ public $valueVar;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a foreach node.
+ *
+ * @param Node\Expr $expr Expression to iterate
+ * @param Node\Expr $valueVar Variable to assign value to
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'keyVar' => null : Variable to assign key to
+ * 'byRef' => false : Whether to assign value by reference
+ * 'stmts' => array(): Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $expr, Node\Expr $valueVar, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ $this->keyVar = $subNodes['keyVar'] ?? null;
+ $this->byRef = $subNodes['byRef'] ?? false;
+ $this->valueVar = $valueVar;
+ $this->stmts = $subNodes['stmts'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr', 'keyVar', 'byRef', 'valueVar', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Foreach';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
new file mode 100644
index 000000000..abb7ee5c8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Function_.php
@@ -0,0 +1,77 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\FunctionLike;
+
+class Function_ extends Node\Stmt implements FunctionLike
+{
+ /** @var bool Whether function returns by reference */
+ public $byRef;
+ /** @var Node\Identifier Name */
+ public $name;
+ /** @var Node\Param[] Parameters */
+ public $params;
+ /** @var null|Node\Identifier|Node\Name|Node\ComplexType Return type */
+ public $returnType;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /** @var Node\Name Namespaced name (if using NameResolver) */
+ public $namespacedName;
+
+ /**
+ * Constructs a function node.
+ *
+ * @param string|Node\Identifier $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'byRef' => false : Whether to return by reference
+ * 'params' => array(): Parameters
+ * 'returnType' => null : Return type
+ * 'stmts' => array(): Statements
+ * 'attrGroups' => array(): PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->byRef = $subNodes['byRef'] ?? false;
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->params = $subNodes['params'] ?? [];
+ $returnType = $subNodes['returnType'] ?? null;
+ $this->returnType = \is_string($returnType) ? new Node\Identifier($returnType) : $returnType;
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'byRef', 'name', 'params', 'returnType', 'stmts'];
+ }
+
+ public function returnsByRef() : bool {
+ return $this->byRef;
+ }
+
+ public function getParams() : array {
+ return $this->params;
+ }
+
+ public function getReturnType() {
+ return $this->returnType;
+ }
+
+ public function getAttrGroups() : array {
+ return $this->attrGroups;
+ }
+
+ /** @return Node\Stmt[] */
+ public function getStmts() : array {
+ return $this->stmts;
+ }
+
+ public function getType() : string {
+ return 'Stmt_Function';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php
new file mode 100644
index 000000000..a0022ad93
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Global_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Global_ extends Node\Stmt
+{
+ /** @var Node\Expr[] Variables */
+ public $vars;
+
+ /**
+ * Constructs a global variables list node.
+ *
+ * @param Node\Expr[] $vars Variables to unset
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $vars, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->vars = $vars;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['vars'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Global';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php
new file mode 100644
index 000000000..24a57f780
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Goto_.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Stmt;
+
+class Goto_ extends Stmt
+{
+ /** @var Identifier Name of label to jump to */
+ public $name;
+
+ /**
+ * Constructs a goto node.
+ *
+ * @param string|Identifier $name Name of label to jump to
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Goto';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php
new file mode 100644
index 000000000..24520d223
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/GroupUse.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt;
+
+class GroupUse extends Stmt
+{
+ /** @var int Type of group use */
+ public $type;
+ /** @var Name Prefix for uses */
+ public $prefix;
+ /** @var UseUse[] Uses */
+ public $uses;
+
+ /**
+ * Constructs a group use node.
+ *
+ * @param Name $prefix Prefix for uses
+ * @param UseUse[] $uses Uses
+ * @param int $type Type of group use
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Name $prefix, array $uses, int $type = Use_::TYPE_NORMAL, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->type = $type;
+ $this->prefix = $prefix;
+ $this->uses = $uses;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['type', 'prefix', 'uses'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_GroupUse';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php
new file mode 100644
index 000000000..8e624e0f1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/HaltCompiler.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Stmt;
+
+class HaltCompiler extends Stmt
+{
+ /** @var string Remaining text after halt compiler statement. */
+ public $remaining;
+
+ /**
+ * Constructs a __halt_compiler node.
+ *
+ * @param string $remaining Remaining text after halt compiler statement.
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(string $remaining, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->remaining = $remaining;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['remaining'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_HaltCompiler';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php
new file mode 100644
index 000000000..a1bae4bf8
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/If_.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class If_ extends Node\Stmt
+{
+ /** @var Node\Expr Condition expression */
+ public $cond;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var ElseIf_[] Elseif clauses */
+ public $elseifs;
+ /** @var null|Else_ Else clause */
+ public $else;
+
+ /**
+ * Constructs an if node.
+ *
+ * @param Node\Expr $cond Condition
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'stmts' => array(): Statements
+ * 'elseifs' => array(): Elseif clauses
+ * 'else' => null : Else clause
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $cond, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->elseifs = $subNodes['elseifs'] ?? [];
+ $this->else = $subNodes['else'] ?? null;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'stmts', 'elseifs', 'else'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_If';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php
new file mode 100644
index 000000000..0711d2842
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/InlineHTML.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Stmt;
+
+class InlineHTML extends Stmt
+{
+ /** @var string String */
+ public $value;
+
+ /**
+ * Constructs an inline HTML node.
+ *
+ * @param string $value String
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(string $value, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->value = $value;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['value'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_InlineHTML';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
new file mode 100644
index 000000000..4d587dd48
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Interface_.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Interface_ extends ClassLike
+{
+ /** @var Node\Name[] Extended interfaces */
+ public $extends;
+
+ /**
+ * Constructs a class node.
+ *
+ * @param string|Node\Identifier $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'extends' => array(): Name of extended interfaces
+ * 'stmts' => array(): Statements
+ * 'attrGroups' => array(): PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->extends = $subNodes['extends'] ?? [];
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'name', 'extends', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Interface';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php
new file mode 100644
index 000000000..3edcb3be7
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Label.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Stmt;
+
+class Label extends Stmt
+{
+ /** @var Identifier Name */
+ public $name;
+
+ /**
+ * Constructs a label node.
+ *
+ * @param string|Identifier $name Name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Identifier($name) : $name;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Label';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php
new file mode 100644
index 000000000..c63204577
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Namespace_.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Namespace_ extends Node\Stmt
+{
+ /* For use in the "kind" attribute */
+ const KIND_SEMICOLON = 1;
+ const KIND_BRACED = 2;
+
+ /** @var null|Node\Name Name */
+ public $name;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a namespace node.
+ *
+ * @param null|Node\Name $name Name
+ * @param null|Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Name $name = null, $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = $name;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Namespace';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php
new file mode 100644
index 000000000..f86f8df7d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Nop.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+/** Nop/empty statement (;). */
+class Nop extends Node\Stmt
+{
+ public function getSubNodeNames() : array {
+ return [];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Nop';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php
new file mode 100644
index 000000000..bc781bbff
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Property.php
@@ -0,0 +1,91 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\ComplexType;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\Name;
+
+class Property extends Node\Stmt
+{
+ /** @var int Modifiers */
+ public $flags;
+ /** @var PropertyProperty[] Properties */
+ public $props;
+ /** @var null|Identifier|Name|ComplexType Type declaration */
+ public $type;
+ /** @var Node\AttributeGroup[] PHP attribute groups */
+ public $attrGroups;
+
+ /**
+ * Constructs a class property list node.
+ *
+ * @param int $flags Modifiers
+ * @param PropertyProperty[] $props Properties
+ * @param array $attributes Additional attributes
+ * @param null|string|Identifier|Name|ComplexType $type Type declaration
+ * @param Node\AttributeGroup[] $attrGroups PHP attribute groups
+ */
+ public function __construct(int $flags, array $props, array $attributes = [], $type = null, array $attrGroups = []) {
+ $this->attributes = $attributes;
+ $this->flags = $flags;
+ $this->props = $props;
+ $this->type = \is_string($type) ? new Identifier($type) : $type;
+ $this->attrGroups = $attrGroups;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'flags', 'type', 'props'];
+ }
+
+ /**
+ * Whether the property is explicitly or implicitly public.
+ *
+ * @return bool
+ */
+ public function isPublic() : bool {
+ return ($this->flags & Class_::MODIFIER_PUBLIC) !== 0
+ || ($this->flags & Class_::VISIBILITY_MODIFIER_MASK) === 0;
+ }
+
+ /**
+ * Whether the property is protected.
+ *
+ * @return bool
+ */
+ public function isProtected() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PROTECTED);
+ }
+
+ /**
+ * Whether the property is private.
+ *
+ * @return bool
+ */
+ public function isPrivate() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_PRIVATE);
+ }
+
+ /**
+ * Whether the property is static.
+ *
+ * @return bool
+ */
+ public function isStatic() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_STATIC);
+ }
+
+ /**
+ * Whether the property is readonly.
+ *
+ * @return bool
+ */
+ public function isReadonly() : bool {
+ return (bool) ($this->flags & Class_::MODIFIER_READONLY);
+ }
+
+ public function getType() : string {
+ return 'Stmt_Property';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php
new file mode 100644
index 000000000..205731e20
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/PropertyProperty.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class PropertyProperty extends Node\Stmt
+{
+ /** @var Node\VarLikeIdentifier Name */
+ public $name;
+ /** @var null|Node\Expr Default */
+ public $default;
+
+ /**
+ * Constructs a class property node.
+ *
+ * @param string|Node\VarLikeIdentifier $name Name
+ * @param null|Node\Expr $default Default value
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, Node\Expr $default = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Node\VarLikeIdentifier($name) : $name;
+ $this->default = $default;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['name', 'default'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_PropertyProperty';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php
new file mode 100644
index 000000000..efc578c58
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Return_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Return_ extends Node\Stmt
+{
+ /** @var null|Node\Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a return node.
+ *
+ * @param null|Node\Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $expr = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Return';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php
new file mode 100644
index 000000000..29584560d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/StaticVar.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+
+class StaticVar extends Node\Stmt
+{
+ /** @var Expr\Variable Variable */
+ public $var;
+ /** @var null|Node\Expr Default value */
+ public $default;
+
+ /**
+ * Constructs a static variable node.
+ *
+ * @param Expr\Variable $var Name
+ * @param null|Node\Expr $default Default value
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(
+ Expr\Variable $var, Node\Expr $default = null, array $attributes = []
+ ) {
+ $this->attributes = $attributes;
+ $this->var = $var;
+ $this->default = $default;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['var', 'default'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_StaticVar';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php
new file mode 100644
index 000000000..464898ffa
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Static_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Stmt;
+
+class Static_ extends Stmt
+{
+ /** @var StaticVar[] Variable definitions */
+ public $vars;
+
+ /**
+ * Constructs a static variables list node.
+ *
+ * @param StaticVar[] $vars Variable definitions
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $vars, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->vars = $vars;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['vars'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Static';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php
new file mode 100644
index 000000000..2c8dae022
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Switch_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Switch_ extends Node\Stmt
+{
+ /** @var Node\Expr Condition */
+ public $cond;
+ /** @var Case_[] Case list */
+ public $cases;
+
+ /**
+ * Constructs a case node.
+ *
+ * @param Node\Expr $cond Condition
+ * @param Case_[] $cases Case list
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $cond, array $cases, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->cases = $cases;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'cases'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Switch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
new file mode 100644
index 000000000..a34e2b362
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Throw_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Throw_ extends Node\Stmt
+{
+ /** @var Node\Expr Expression */
+ public $expr;
+
+ /**
+ * Constructs a legacy throw statement node.
+ *
+ * @param Node\Expr $expr Expression
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $expr, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->expr = $expr;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['expr'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Throw';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php
new file mode 100644
index 000000000..9e97053b4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUse.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class TraitUse extends Node\Stmt
+{
+ /** @var Node\Name[] Traits */
+ public $traits;
+ /** @var TraitUseAdaptation[] Adaptations */
+ public $adaptations;
+
+ /**
+ * Constructs a trait use node.
+ *
+ * @param Node\Name[] $traits Traits
+ * @param TraitUseAdaptation[] $adaptations Adaptations
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $traits, array $adaptations = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->traits = $traits;
+ $this->adaptations = $adaptations;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['traits', 'adaptations'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_TraitUse';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php
new file mode 100644
index 000000000..8bdd2c041
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation.php
@@ -0,0 +1,13 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+abstract class TraitUseAdaptation extends Node\Stmt
+{
+ /** @var Node\Name|null Trait name */
+ public $trait;
+ /** @var Node\Identifier Method name */
+ public $method;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php
new file mode 100644
index 000000000..a3bccbd10
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Alias.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt\TraitUseAdaptation;
+
+use PhpParser\Node;
+
+class Alias extends Node\Stmt\TraitUseAdaptation
+{
+ /** @var null|int New modifier */
+ public $newModifier;
+ /** @var null|Node\Identifier New name */
+ public $newName;
+
+ /**
+ * Constructs a trait use precedence adaptation node.
+ *
+ * @param null|Node\Name $trait Trait name
+ * @param string|Node\Identifier $method Method name
+ * @param null|int $newModifier New modifier
+ * @param null|string|Node\Identifier $newName New name
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($trait, $method, $newModifier, $newName, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->trait = $trait;
+ $this->method = \is_string($method) ? new Node\Identifier($method) : $method;
+ $this->newModifier = $newModifier;
+ $this->newName = \is_string($newName) ? new Node\Identifier($newName) : $newName;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['trait', 'method', 'newModifier', 'newName'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_TraitUseAdaptation_Alias';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php
new file mode 100644
index 000000000..80385f64e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TraitUseAdaptation/Precedence.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt\TraitUseAdaptation;
+
+use PhpParser\Node;
+
+class Precedence extends Node\Stmt\TraitUseAdaptation
+{
+ /** @var Node\Name[] Overwritten traits */
+ public $insteadof;
+
+ /**
+ * Constructs a trait use precedence adaptation node.
+ *
+ * @param Node\Name $trait Trait name
+ * @param string|Node\Identifier $method Method name
+ * @param Node\Name[] $insteadof Overwritten traits
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Name $trait, $method, array $insteadof, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->trait = $trait;
+ $this->method = \is_string($method) ? new Node\Identifier($method) : $method;
+ $this->insteadof = $insteadof;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['trait', 'method', 'insteadof'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_TraitUseAdaptation_Precedence';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
new file mode 100644
index 000000000..0cec203ac
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Trait_.php
@@ -0,0 +1,32 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Trait_ extends ClassLike
+{
+ /**
+ * Constructs a trait node.
+ *
+ * @param string|Node\Identifier $name Name
+ * @param array $subNodes Array of the following optional subnodes:
+ * 'stmts' => array(): Statements
+ * 'attrGroups' => array(): PHP attribute groups
+ * @param array $attributes Additional attributes
+ */
+ public function __construct($name, array $subNodes = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->name = \is_string($name) ? new Node\Identifier($name) : $name;
+ $this->stmts = $subNodes['stmts'] ?? [];
+ $this->attrGroups = $subNodes['attrGroups'] ?? [];
+ }
+
+ public function getSubNodeNames() : array {
+ return ['attrGroups', 'name', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Trait';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
new file mode 100644
index 000000000..7fc158c57
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/TryCatch.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class TryCatch extends Node\Stmt
+{
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+ /** @var Catch_[] Catches */
+ public $catches;
+ /** @var null|Finally_ Optional finally node */
+ public $finally;
+
+ /**
+ * Constructs a try catch node.
+ *
+ * @param Node\Stmt[] $stmts Statements
+ * @param Catch_[] $catches Catches
+ * @param null|Finally_ $finally Optional finally node
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $stmts, array $catches, Finally_ $finally = null, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->stmts = $stmts;
+ $this->catches = $catches;
+ $this->finally = $finally;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['stmts', 'catches', 'finally'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_TryCatch';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php
new file mode 100644
index 000000000..310e427aa
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Unset_.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class Unset_ extends Node\Stmt
+{
+ /** @var Node\Expr[] Variables to unset */
+ public $vars;
+
+ /**
+ * Constructs an unset node.
+ *
+ * @param Node\Expr[] $vars Variables to unset
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $vars, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->vars = $vars;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['vars'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Unset';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php
new file mode 100644
index 000000000..32bd7847d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/UseUse.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+use PhpParser\Node\Identifier;
+
+class UseUse extends Node\Stmt
+{
+ /** @var int One of the Stmt\Use_::TYPE_* constants. Will only differ from TYPE_UNKNOWN for mixed group uses */
+ public $type;
+ /** @var Node\Name Namespace, class, function or constant to alias */
+ public $name;
+ /** @var Identifier|null Alias */
+ public $alias;
+
+ /**
+ * Constructs an alias (use) node.
+ *
+ * @param Node\Name $name Namespace/Class to alias
+ * @param null|string|Identifier $alias Alias
+ * @param int $type Type of the use element (for mixed group use only)
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Name $name, $alias = null, int $type = Use_::TYPE_UNKNOWN, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->type = $type;
+ $this->name = $name;
+ $this->alias = \is_string($alias) ? new Identifier($alias) : $alias;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['type', 'name', 'alias'];
+ }
+
+ /**
+ * Get alias. If not explicitly given this is the last component of the used name.
+ *
+ * @return Identifier
+ */
+ public function getAlias() : Identifier {
+ if (null !== $this->alias) {
+ return $this->alias;
+ }
+
+ return new Identifier($this->name->getLast());
+ }
+
+ public function getType() : string {
+ return 'Stmt_UseUse';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php
new file mode 100644
index 000000000..8753da313
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/Use_.php
@@ -0,0 +1,47 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node\Stmt;
+
+class Use_ extends Stmt
+{
+ /**
+ * Unknown type. Both Stmt\Use_ / Stmt\GroupUse and Stmt\UseUse have a $type property, one of them will always be
+ * TYPE_UNKNOWN while the other has one of the three other possible types. For normal use statements the type on the
+ * Stmt\UseUse is unknown. It's only the other way around for mixed group use declarations.
+ */
+ const TYPE_UNKNOWN = 0;
+ /** Class or namespace import */
+ const TYPE_NORMAL = 1;
+ /** Function import */
+ const TYPE_FUNCTION = 2;
+ /** Constant import */
+ const TYPE_CONSTANT = 3;
+
+ /** @var int Type of alias */
+ public $type;
+ /** @var UseUse[] Aliases */
+ public $uses;
+
+ /**
+ * Constructs an alias (use) list node.
+ *
+ * @param UseUse[] $uses Aliases
+ * @param int $type Type of alias
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $uses, int $type = self::TYPE_NORMAL, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->type = $type;
+ $this->uses = $uses;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['type', 'uses'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_Use';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php
new file mode 100644
index 000000000..f41034f8c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/Stmt/While_.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node\Stmt;
+
+use PhpParser\Node;
+
+class While_ extends Node\Stmt
+{
+ /** @var Node\Expr Condition */
+ public $cond;
+ /** @var Node\Stmt[] Statements */
+ public $stmts;
+
+ /**
+ * Constructs a while node.
+ *
+ * @param Node\Expr $cond Condition
+ * @param Node\Stmt[] $stmts Statements
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(Node\Expr $cond, array $stmts = [], array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->cond = $cond;
+ $this->stmts = $stmts;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['cond', 'stmts'];
+ }
+
+ public function getType() : string {
+ return 'Stmt_While';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php b/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php
new file mode 100644
index 000000000..61c2d8106
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/UnionType.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+class UnionType extends ComplexType
+{
+ /** @var (Identifier|Name)[] Types */
+ public $types;
+
+ /**
+ * Constructs a union type.
+ *
+ * @param (Identifier|Name)[] $types Types
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $types, array $attributes = []) {
+ $this->attributes = $attributes;
+ $this->types = $types;
+ }
+
+ public function getSubNodeNames() : array {
+ return ['types'];
+ }
+
+ public function getType() : string {
+ return 'UnionType';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php b/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php
new file mode 100644
index 000000000..a30807a6d
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/VarLikeIdentifier.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+/**
+ * Represents a name that is written in source code with a leading dollar,
+ * but is not a proper variable. The leading dollar is not stored as part of the name.
+ *
+ * Examples: Names in property declarations are formatted as variables. Names in static property
+ * lookups are also formatted as variables.
+ */
+class VarLikeIdentifier extends Identifier
+{
+ public function getType() : string {
+ return 'VarLikeIdentifier';
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php b/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php
new file mode 100644
index 000000000..403a24df2
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Node/VariadicPlaceholder.php
@@ -0,0 +1,27 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Node;
+
+use PhpParser\NodeAbstract;
+
+/**
+ * Represents the "..." in "foo(...)" of the first-class callable syntax.
+ */
+class VariadicPlaceholder extends NodeAbstract {
+ /**
+ * Create a variadic argument placeholder (first-class callable syntax).
+ *
+ * @param array $attributes Additional attributes
+ */
+ public function __construct(array $attributes = []) {
+ $this->attributes = $attributes;
+ }
+
+ public function getType(): string {
+ return 'VariadicPlaceholder';
+ }
+
+ public function getSubNodeNames(): array {
+ return [];
+ }
+} \ No newline at end of file
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php
new file mode 100644
index 000000000..04514da11
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeAbstract.php
@@ -0,0 +1,178 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+abstract class NodeAbstract implements Node, \JsonSerializable
+{
+ protected $attributes;
+
+ /**
+ * Creates a Node.
+ *
+ * @param array $attributes Array of attributes
+ */
+ public function __construct(array $attributes = []) {
+ $this->attributes = $attributes;
+ }
+
+ /**
+ * Gets line the node started in (alias of getStartLine).
+ *
+ * @return int Start line (or -1 if not available)
+ */
+ public function getLine() : int {
+ return $this->attributes['startLine'] ?? -1;
+ }
+
+ /**
+ * Gets line the node started in.
+ *
+ * Requires the 'startLine' attribute to be enabled in the lexer (enabled by default).
+ *
+ * @return int Start line (or -1 if not available)
+ */
+ public function getStartLine() : int {
+ return $this->attributes['startLine'] ?? -1;
+ }
+
+ /**
+ * Gets the line the node ended in.
+ *
+ * Requires the 'endLine' attribute to be enabled in the lexer (enabled by default).
+ *
+ * @return int End line (or -1 if not available)
+ */
+ public function getEndLine() : int {
+ return $this->attributes['endLine'] ?? -1;
+ }
+
+ /**
+ * Gets the token offset of the first token that is part of this node.
+ *
+ * The offset is an index into the array returned by Lexer::getTokens().
+ *
+ * Requires the 'startTokenPos' attribute to be enabled in the lexer (DISABLED by default).
+ *
+ * @return int Token start position (or -1 if not available)
+ */
+ public function getStartTokenPos() : int {
+ return $this->attributes['startTokenPos'] ?? -1;
+ }
+
+ /**
+ * Gets the token offset of the last token that is part of this node.
+ *
+ * The offset is an index into the array returned by Lexer::getTokens().
+ *
+ * Requires the 'endTokenPos' attribute to be enabled in the lexer (DISABLED by default).
+ *
+ * @return int Token end position (or -1 if not available)
+ */
+ public function getEndTokenPos() : int {
+ return $this->attributes['endTokenPos'] ?? -1;
+ }
+
+ /**
+ * Gets the file offset of the first character that is part of this node.
+ *
+ * Requires the 'startFilePos' attribute to be enabled in the lexer (DISABLED by default).
+ *
+ * @return int File start position (or -1 if not available)
+ */
+ public function getStartFilePos() : int {
+ return $this->attributes['startFilePos'] ?? -1;
+ }
+
+ /**
+ * Gets the file offset of the last character that is part of this node.
+ *
+ * Requires the 'endFilePos' attribute to be enabled in the lexer (DISABLED by default).
+ *
+ * @return int File end position (or -1 if not available)
+ */
+ public function getEndFilePos() : int {
+ return $this->attributes['endFilePos'] ?? -1;
+ }
+
+ /**
+ * Gets all comments directly preceding this node.
+ *
+ * The comments are also available through the "comments" attribute.
+ *
+ * @return Comment[]
+ */
+ public function getComments() : array {
+ return $this->attributes['comments'] ?? [];
+ }
+
+ /**
+ * Gets the doc comment of the node.
+ *
+ * @return null|Comment\Doc Doc comment object or null
+ */
+ public function getDocComment() {
+ $comments = $this->getComments();
+ for ($i = count($comments) - 1; $i >= 0; $i--) {
+ $comment = $comments[$i];
+ if ($comment instanceof Comment\Doc) {
+ return $comment;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Sets the doc comment of the node.
+ *
+ * This will either replace an existing doc comment or add it to the comments array.
+ *
+ * @param Comment\Doc $docComment Doc comment to set
+ */
+ public function setDocComment(Comment\Doc $docComment) {
+ $comments = $this->getComments();
+ for ($i = count($comments) - 1; $i >= 0; $i--) {
+ if ($comments[$i] instanceof Comment\Doc) {
+ // Replace existing doc comment.
+ $comments[$i] = $docComment;
+ $this->setAttribute('comments', $comments);
+ return;
+ }
+ }
+
+ // Append new doc comment.
+ $comments[] = $docComment;
+ $this->setAttribute('comments', $comments);
+ }
+
+ public function setAttribute(string $key, $value) {
+ $this->attributes[$key] = $value;
+ }
+
+ public function hasAttribute(string $key) : bool {
+ return array_key_exists($key, $this->attributes);
+ }
+
+ public function getAttribute(string $key, $default = null) {
+ if (array_key_exists($key, $this->attributes)) {
+ return $this->attributes[$key];
+ }
+
+ return $default;
+ }
+
+ public function getAttributes() : array {
+ return $this->attributes;
+ }
+
+ public function setAttributes(array $attributes) {
+ $this->attributes = $attributes;
+ }
+
+ /**
+ * @return array
+ */
+ public function jsonSerialize() : array {
+ return ['nodeType' => $this->getType()] + get_object_vars($this);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php b/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php
new file mode 100644
index 000000000..ba622efd1
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeDumper.php
@@ -0,0 +1,206 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+use PhpParser\Node\Expr\Include_;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\GroupUse;
+use PhpParser\Node\Stmt\Use_;
+use PhpParser\Node\Stmt\UseUse;
+
+class NodeDumper
+{
+ private $dumpComments;
+ private $dumpPositions;
+ private $code;
+
+ /**
+ * Constructs a NodeDumper.
+ *
+ * Supported options:
+ * * bool dumpComments: Whether comments should be dumped.
+ * * bool dumpPositions: Whether line/offset information should be dumped. To dump offset
+ * information, the code needs to be passed to dump().
+ *
+ * @param array $options Options (see description)
+ */
+ public function __construct(array $options = []) {
+ $this->dumpComments = !empty($options['dumpComments']);
+ $this->dumpPositions = !empty($options['dumpPositions']);
+ }
+
+ /**
+ * Dumps a node or array.
+ *
+ * @param array|Node $node Node or array to dump
+ * @param string|null $code Code corresponding to dumped AST. This only needs to be passed if
+ * the dumpPositions option is enabled and the dumping of node offsets
+ * is desired.
+ *
+ * @return string Dumped value
+ */
+ public function dump($node, string $code = null) : string {
+ $this->code = $code;
+ return $this->dumpRecursive($node);
+ }
+
+ protected function dumpRecursive($node) {
+ if ($node instanceof Node) {
+ $r = $node->getType();
+ if ($this->dumpPositions && null !== $p = $this->dumpPosition($node)) {
+ $r .= $p;
+ }
+ $r .= '(';
+
+ foreach ($node->getSubNodeNames() as $key) {
+ $r .= "\n " . $key . ': ';
+
+ $value = $node->$key;
+ if (null === $value) {
+ $r .= 'null';
+ } elseif (false === $value) {
+ $r .= 'false';
+ } elseif (true === $value) {
+ $r .= 'true';
+ } elseif (is_scalar($value)) {
+ if ('flags' === $key || 'newModifier' === $key) {
+ $r .= $this->dumpFlags($value);
+ } elseif ('type' === $key && $node instanceof Include_) {
+ $r .= $this->dumpIncludeType($value);
+ } elseif ('type' === $key
+ && ($node instanceof Use_ || $node instanceof UseUse || $node instanceof GroupUse)) {
+ $r .= $this->dumpUseType($value);
+ } else {
+ $r .= $value;
+ }
+ } else {
+ $r .= str_replace("\n", "\n ", $this->dumpRecursive($value));
+ }
+ }
+
+ if ($this->dumpComments && $comments = $node->getComments()) {
+ $r .= "\n comments: " . str_replace("\n", "\n ", $this->dumpRecursive($comments));
+ }
+ } elseif (is_array($node)) {
+ $r = 'array(';
+
+ foreach ($node as $key => $value) {
+ $r .= "\n " . $key . ': ';
+
+ if (null === $value) {
+ $r .= 'null';
+ } elseif (false === $value) {
+ $r .= 'false';
+ } elseif (true === $value) {
+ $r .= 'true';
+ } elseif (is_scalar($value)) {
+ $r .= $value;
+ } else {
+ $r .= str_replace("\n", "\n ", $this->dumpRecursive($value));
+ }
+ }
+ } elseif ($node instanceof Comment) {
+ return $node->getReformattedText();
+ } else {
+ throw new \InvalidArgumentException('Can only dump nodes and arrays.');
+ }
+
+ return $r . "\n)";
+ }
+
+ protected function dumpFlags($flags) {
+ $strs = [];
+ if ($flags & Class_::MODIFIER_PUBLIC) {
+ $strs[] = 'MODIFIER_PUBLIC';
+ }
+ if ($flags & Class_::MODIFIER_PROTECTED) {
+ $strs[] = 'MODIFIER_PROTECTED';
+ }
+ if ($flags & Class_::MODIFIER_PRIVATE) {
+ $strs[] = 'MODIFIER_PRIVATE';
+ }
+ if ($flags & Class_::MODIFIER_ABSTRACT) {
+ $strs[] = 'MODIFIER_ABSTRACT';
+ }
+ if ($flags & Class_::MODIFIER_STATIC) {
+ $strs[] = 'MODIFIER_STATIC';
+ }
+ if ($flags & Class_::MODIFIER_FINAL) {
+ $strs[] = 'MODIFIER_FINAL';
+ }
+ if ($flags & Class_::MODIFIER_READONLY) {
+ $strs[] = 'MODIFIER_READONLY';
+ }
+
+ if ($strs) {
+ return implode(' | ', $strs) . ' (' . $flags . ')';
+ } else {
+ return $flags;
+ }
+ }
+
+ protected function dumpIncludeType($type) {
+ $map = [
+ Include_::TYPE_INCLUDE => 'TYPE_INCLUDE',
+ Include_::TYPE_INCLUDE_ONCE => 'TYPE_INCLUDE_ONCE',
+ Include_::TYPE_REQUIRE => 'TYPE_REQUIRE',
+ Include_::TYPE_REQUIRE_ONCE => 'TYPE_REQUIRE_ONCE',
+ ];
+
+ if (!isset($map[$type])) {
+ return $type;
+ }
+ return $map[$type] . ' (' . $type . ')';
+ }
+
+ protected function dumpUseType($type) {
+ $map = [
+ Use_::TYPE_UNKNOWN => 'TYPE_UNKNOWN',
+ Use_::TYPE_NORMAL => 'TYPE_NORMAL',
+ Use_::TYPE_FUNCTION => 'TYPE_FUNCTION',
+ Use_::TYPE_CONSTANT => 'TYPE_CONSTANT',
+ ];
+
+ if (!isset($map[$type])) {
+ return $type;
+ }
+ return $map[$type] . ' (' . $type . ')';
+ }
+
+ /**
+ * Dump node position, if possible.
+ *
+ * @param Node $node Node for which to dump position
+ *
+ * @return string|null Dump of position, or null if position information not available
+ */
+ protected function dumpPosition(Node $node) {
+ if (!$node->hasAttribute('startLine') || !$node->hasAttribute('endLine')) {
+ return null;
+ }
+
+ $start = $node->getStartLine();
+ $end = $node->getEndLine();
+ if ($node->hasAttribute('startFilePos') && $node->hasAttribute('endFilePos')
+ && null !== $this->code
+ ) {
+ $start .= ':' . $this->toColumn($this->code, $node->getStartFilePos());
+ $end .= ':' . $this->toColumn($this->code, $node->getEndFilePos());
+ }
+ return "[$start - $end]";
+ }
+
+ // Copied from Error class
+ private function toColumn($code, $pos) {
+ if ($pos > strlen($code)) {
+ throw new \RuntimeException('Invalid position information');
+ }
+
+ $lineStartPos = strrpos($code, "\n", $pos - strlen($code));
+ if (false === $lineStartPos) {
+ $lineStartPos = -1;
+ }
+
+ return $pos - $lineStartPos;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php b/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php
new file mode 100644
index 000000000..2e7cfdad4
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeFinder.php
@@ -0,0 +1,81 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+use PhpParser\NodeVisitor\FindingVisitor;
+use PhpParser\NodeVisitor\FirstFindingVisitor;
+
+class NodeFinder
+{
+ /**
+ * Find all nodes satisfying a filter callback.
+ *
+ * @param Node|Node[] $nodes Single node or array of nodes to search in
+ * @param callable $filter Filter callback: function(Node $node) : bool
+ *
+ * @return Node[] Found nodes satisfying the filter callback
+ */
+ public function find($nodes, callable $filter) : array {
+ if (!is_array($nodes)) {
+ $nodes = [$nodes];
+ }
+
+ $visitor = new FindingVisitor($filter);
+
+ $traverser = new NodeTraverser;
+ $traverser->addVisitor($visitor);
+ $traverser->traverse($nodes);
+
+ return $visitor->getFoundNodes();
+ }
+
+ /**
+ * Find all nodes that are instances of a certain class.
+ *
+ * @param Node|Node[] $nodes Single node or array of nodes to search in
+ * @param string $class Class name
+ *
+ * @return Node[] Found nodes (all instances of $class)
+ */
+ public function findInstanceOf($nodes, string $class) : array {
+ return $this->find($nodes, function ($node) use ($class) {
+ return $node instanceof $class;
+ });
+ }
+
+ /**
+ * Find first node satisfying a filter callback.
+ *
+ * @param Node|Node[] $nodes Single node or array of nodes to search in
+ * @param callable $filter Filter callback: function(Node $node) : bool
+ *
+ * @return null|Node Found node (or null if none found)
+ */
+ public function findFirst($nodes, callable $filter) {
+ if (!is_array($nodes)) {
+ $nodes = [$nodes];
+ }
+
+ $visitor = new FirstFindingVisitor($filter);
+
+ $traverser = new NodeTraverser;
+ $traverser->addVisitor($visitor);
+ $traverser->traverse($nodes);
+
+ return $visitor->getFoundNode();
+ }
+
+ /**
+ * Find first node that is an instance of a certain class.
+ *
+ * @param Node|Node[] $nodes Single node or array of nodes to search in
+ * @param string $class Class name
+ *
+ * @return null|Node Found node, which is an instance of $class (or null if none found)
+ */
+ public function findFirstInstanceOf($nodes, string $class) {
+ return $this->findFirst($nodes, function ($node) use ($class) {
+ return $node instanceof $class;
+ });
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php b/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php
new file mode 100644
index 000000000..97d45bdaa
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeTraverser.php
@@ -0,0 +1,291 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+class NodeTraverser implements NodeTraverserInterface
+{
+ /**
+ * If NodeVisitor::enterNode() returns DONT_TRAVERSE_CHILDREN, child nodes
+ * of the current node will not be traversed for any visitors.
+ *
+ * For subsequent visitors enterNode() will still be called on the current
+ * node and leaveNode() will also be invoked for the current node.
+ */
+ const DONT_TRAVERSE_CHILDREN = 1;
+
+ /**
+ * If NodeVisitor::enterNode() or NodeVisitor::leaveNode() returns
+ * STOP_TRAVERSAL, traversal is aborted.
+ *
+ * The afterTraverse() method will still be invoked.
+ */
+ const STOP_TRAVERSAL = 2;
+
+ /**
+ * If NodeVisitor::leaveNode() returns REMOVE_NODE for a node that occurs
+ * in an array, it will be removed from the array.
+ *
+ * For subsequent visitors leaveNode() will still be invoked for the
+ * removed node.
+ */
+ const REMOVE_NODE = 3;
+
+ /**
+ * If NodeVisitor::enterNode() returns DONT_TRAVERSE_CURRENT_AND_CHILDREN, child nodes
+ * of the current node will not be traversed for any visitors.
+ *
+ * For subsequent visitors enterNode() will not be called as well.
+ * leaveNode() will be invoked for visitors that has enterNode() method invoked.
+ */
+ const DONT_TRAVERSE_CURRENT_AND_CHILDREN = 4;
+
+ /** @var NodeVisitor[] Visitors */
+ protected $visitors = [];
+
+ /** @var bool Whether traversal should be stopped */
+ protected $stopTraversal;
+
+ public function __construct() {
+ // for BC
+ }
+
+ /**
+ * Adds a visitor.
+ *
+ * @param NodeVisitor $visitor Visitor to add
+ */
+ public function addVisitor(NodeVisitor $visitor) {
+ $this->visitors[] = $visitor;
+ }
+
+ /**
+ * Removes an added visitor.
+ *
+ * @param NodeVisitor $visitor
+ */
+ public function removeVisitor(NodeVisitor $visitor) {
+ foreach ($this->visitors as $index => $storedVisitor) {
+ if ($storedVisitor === $visitor) {
+ unset($this->visitors[$index]);
+ break;
+ }
+ }
+ }
+
+ /**
+ * Traverses an array of nodes using the registered visitors.
+ *
+ * @param Node[] $nodes Array of nodes
+ *
+ * @return Node[] Traversed array of nodes
+ */
+ public function traverse(array $nodes) : array {
+ $this->stopTraversal = false;
+
+ foreach ($this->visitors as $visitor) {
+ if (null !== $return = $visitor->beforeTraverse($nodes)) {
+ $nodes = $return;
+ }
+ }
+
+ $nodes = $this->traverseArray($nodes);
+
+ foreach ($this->visitors as $visitor) {
+ if (null !== $return = $visitor->afterTraverse($nodes)) {
+ $nodes = $return;
+ }
+ }
+
+ return $nodes;
+ }
+
+ /**
+ * Recursively traverse a node.
+ *
+ * @param Node $node Node to traverse.
+ *
+ * @return Node Result of traversal (may be original node or new one)
+ */
+ protected function traverseNode(Node $node) : Node {
+ foreach ($node->getSubNodeNames() as $name) {
+ $subNode =& $node->$name;
+
+ if (\is_array($subNode)) {
+ $subNode = $this->traverseArray($subNode);
+ if ($this->stopTraversal) {
+ break;
+ }
+ } elseif ($subNode instanceof Node) {
+ $traverseChildren = true;
+ $breakVisitorIndex = null;
+
+ foreach ($this->visitors as $visitorIndex => $visitor) {
+ $return = $visitor->enterNode($subNode);
+ if (null !== $return) {
+ if ($return instanceof Node) {
+ $this->ensureReplacementReasonable($subNode, $return);
+ $subNode = $return;
+ } elseif (self::DONT_TRAVERSE_CHILDREN === $return) {
+ $traverseChildren = false;
+ } elseif (self::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
+ $traverseChildren = false;
+ $breakVisitorIndex = $visitorIndex;
+ break;
+ } elseif (self::STOP_TRAVERSAL === $return) {
+ $this->stopTraversal = true;
+ break 2;
+ } else {
+ throw new \LogicException(
+ 'enterNode() returned invalid value of type ' . gettype($return)
+ );
+ }
+ }
+ }
+
+ if ($traverseChildren) {
+ $subNode = $this->traverseNode($subNode);
+ if ($this->stopTraversal) {
+ break;
+ }
+ }
+
+ foreach ($this->visitors as $visitorIndex => $visitor) {
+ $return = $visitor->leaveNode($subNode);
+
+ if (null !== $return) {
+ if ($return instanceof Node) {
+ $this->ensureReplacementReasonable($subNode, $return);
+ $subNode = $return;
+ } elseif (self::STOP_TRAVERSAL === $return) {
+ $this->stopTraversal = true;
+ break 2;
+ } elseif (\is_array($return)) {
+ throw new \LogicException(
+ 'leaveNode() may only return an array ' .
+ 'if the parent structure is an array'
+ );
+ } else {
+ throw new \LogicException(
+ 'leaveNode() returned invalid value of type ' . gettype($return)
+ );
+ }
+ }
+
+ if ($breakVisitorIndex === $visitorIndex) {
+ break;
+ }
+ }
+ }
+ }
+
+ return $node;
+ }
+
+ /**
+ * Recursively traverse array (usually of nodes).
+ *
+ * @param array $nodes Array to traverse
+ *
+ * @return array Result of traversal (may be original array or changed one)
+ */
+ protected function traverseArray(array $nodes) : array {
+ $doNodes = [];
+
+ foreach ($nodes as $i => &$node) {
+ if ($node instanceof Node) {
+ $traverseChildren = true;
+ $breakVisitorIndex = null;
+
+ foreach ($this->visitors as $visitorIndex => $visitor) {
+ $return = $visitor->enterNode($node);
+ if (null !== $return) {
+ if ($return instanceof Node) {
+ $this->ensureReplacementReasonable($node, $return);
+ $node = $return;
+ } elseif (self::DONT_TRAVERSE_CHILDREN === $return) {
+ $traverseChildren = false;
+ } elseif (self::DONT_TRAVERSE_CURRENT_AND_CHILDREN === $return) {
+ $traverseChildren = false;
+ $breakVisitorIndex = $visitorIndex;
+ break;
+ } elseif (self::STOP_TRAVERSAL === $return) {
+ $this->stopTraversal = true;
+ break 2;
+ } else {
+ throw new \LogicException(
+ 'enterNode() returned invalid value of type ' . gettype($return)
+ );
+ }
+ }
+ }
+
+ if ($traverseChildren) {
+ $node = $this->traverseNode($node);
+ if ($this->stopTraversal) {
+ break;
+ }
+ }
+
+ foreach ($this->visitors as $visitorIndex => $visitor) {
+ $return = $visitor->leaveNode($node);
+
+ if (null !== $return) {
+ if ($return instanceof Node) {
+ $this->ensureReplacementReasonable($node, $return);
+ $node = $return;
+ } elseif (\is_array($return)) {
+ $doNodes[] = [$i, $return];
+ break;
+ } elseif (self::REMOVE_NODE === $return) {
+ $doNodes[] = [$i, []];
+ break;
+ } elseif (self::STOP_TRAVERSAL === $return) {
+ $this->stopTraversal = true;
+ break 2;
+ } elseif (false === $return) {
+ throw new \LogicException(
+ 'bool(false) return from leaveNode() no longer supported. ' .
+ 'Return NodeTraverser::REMOVE_NODE instead'
+ );
+ } else {
+ throw new \LogicException(
+ 'leaveNode() returned invalid value of type ' . gettype($return)
+ );
+ }
+ }
+
+ if ($breakVisitorIndex === $visitorIndex) {
+ break;
+ }
+ }
+ } elseif (\is_array($node)) {
+ throw new \LogicException('Invalid node structure: Contains nested arrays');
+ }
+ }
+
+ if (!empty($doNodes)) {
+ while (list($i, $replace) = array_pop($doNodes)) {
+ array_splice($nodes, $i, 1, $replace);
+ }
+ }
+
+ return $nodes;
+ }
+
+ private function ensureReplacementReasonable($old, $new) {
+ if ($old instanceof Node\Stmt && $new instanceof Node\Expr) {
+ throw new \LogicException(
+ "Trying to replace statement ({$old->getType()}) " .
+ "with expression ({$new->getType()}). Are you missing a " .
+ "Stmt_Expression wrapper?"
+ );
+ }
+
+ if ($old instanceof Node\Expr && $new instanceof Node\Stmt) {
+ throw new \LogicException(
+ "Trying to replace expression ({$old->getType()}) " .
+ "with statement ({$new->getType()})"
+ );
+ }
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php b/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php
new file mode 100644
index 000000000..77ff3d27f
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeTraverserInterface.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+interface NodeTraverserInterface
+{
+ /**
+ * Adds a visitor.
+ *
+ * @param NodeVisitor $visitor Visitor to add
+ */
+ public function addVisitor(NodeVisitor $visitor);
+
+ /**
+ * Removes an added visitor.
+ *
+ * @param NodeVisitor $visitor
+ */
+ public function removeVisitor(NodeVisitor $visitor);
+
+ /**
+ * Traverses an array of nodes using the registered visitors.
+ *
+ * @param Node[] $nodes Array of nodes
+ *
+ * @return Node[] Traversed array of nodes
+ */
+ public function traverse(array $nodes) : array;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php
new file mode 100644
index 000000000..f1f7f3e3e
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor.php
@@ -0,0 +1,72 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+interface NodeVisitor
+{
+ /**
+ * Called once before traversal.
+ *
+ * Return value semantics:
+ * * null: $nodes stays as-is
+ * * otherwise: $nodes is set to the return value
+ *
+ * @param Node[] $nodes Array of nodes
+ *
+ * @return null|Node[] Array of nodes
+ */
+ public function beforeTraverse(array $nodes);
+
+ /**
+ * Called when entering a node.
+ *
+ * Return value semantics:
+ * * null
+ * => $node stays as-is
+ * * NodeTraverser::DONT_TRAVERSE_CHILDREN
+ * => Children of $node are not traversed. $node stays as-is
+ * * NodeTraverser::STOP_TRAVERSAL
+ * => Traversal is aborted. $node stays as-is
+ * * otherwise
+ * => $node is set to the return value
+ *
+ * @param Node $node Node
+ *
+ * @return null|int|Node Replacement node (or special return value)
+ */
+ public function enterNode(Node $node);
+
+ /**
+ * Called when leaving a node.
+ *
+ * Return value semantics:
+ * * null
+ * => $node stays as-is
+ * * NodeTraverser::REMOVE_NODE
+ * => $node is removed from the parent array
+ * * NodeTraverser::STOP_TRAVERSAL
+ * => Traversal is aborted. $node stays as-is
+ * * array (of Nodes)
+ * => The return value is merged into the parent array (at the position of the $node)
+ * * otherwise
+ * => $node is set to the return value
+ *
+ * @param Node $node Node
+ *
+ * @return null|int|Node|Node[] Replacement node (or special return value)
+ */
+ public function leaveNode(Node $node);
+
+ /**
+ * Called once after traversal.
+ *
+ * Return value semantics:
+ * * null: $nodes stays as-is
+ * * otherwise: $nodes is set to the return value
+ *
+ * @param Node[] $nodes Array of nodes
+ *
+ * @return null|Node[] Array of nodes
+ */
+ public function afterTraverse(array $nodes);
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php
new file mode 100644
index 000000000..a85fa493b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/CloningVisitor.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\NodeVisitor;
+
+use PhpParser\Node;
+use PhpParser\NodeVisitorAbstract;
+
+/**
+ * Visitor cloning all nodes and linking to the original nodes using an attribute.
+ *
+ * This visitor is required to perform format-preserving pretty prints.
+ */
+class CloningVisitor extends NodeVisitorAbstract
+{
+ public function enterNode(Node $origNode) {
+ $node = clone $origNode;
+ $node->setAttribute('origNode', $origNode);
+ return $node;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php
new file mode 100644
index 000000000..9531edbce
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FindingVisitor.php
@@ -0,0 +1,48 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\NodeVisitor;
+
+use PhpParser\Node;
+use PhpParser\NodeVisitorAbstract;
+
+/**
+ * This visitor can be used to find and collect all nodes satisfying some criterion determined by
+ * a filter callback.
+ */
+class FindingVisitor extends NodeVisitorAbstract
+{
+ /** @var callable Filter callback */
+ protected $filterCallback;
+ /** @var Node[] Found nodes */
+ protected $foundNodes;
+
+ public function __construct(callable $filterCallback) {
+ $this->filterCallback = $filterCallback;
+ }
+
+ /**
+ * Get found nodes satisfying the filter callback.
+ *
+ * Nodes are returned in pre-order.
+ *
+ * @return Node[] Found nodes
+ */
+ public function getFoundNodes() : array {
+ return $this->foundNodes;
+ }
+
+ public function beforeTraverse(array $nodes) {
+ $this->foundNodes = [];
+
+ return null;
+ }
+
+ public function enterNode(Node $node) {
+ $filterCallback = $this->filterCallback;
+ if ($filterCallback($node)) {
+ $this->foundNodes[] = $node;
+ }
+
+ return null;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php
new file mode 100644
index 000000000..596a7d7fd
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/FirstFindingVisitor.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\NodeVisitor;
+
+use PhpParser\Node;
+use PhpParser\NodeTraverser;
+use PhpParser\NodeVisitorAbstract;
+
+/**
+ * This visitor can be used to find the first node satisfying some criterion determined by
+ * a filter callback.
+ */
+class FirstFindingVisitor extends NodeVisitorAbstract
+{
+ /** @var callable Filter callback */
+ protected $filterCallback;
+ /** @var null|Node Found node */
+ protected $foundNode;
+
+ public function __construct(callable $filterCallback) {
+ $this->filterCallback = $filterCallback;
+ }
+
+ /**
+ * Get found node satisfying the filter callback.
+ *
+ * Returns null if no node satisfies the filter callback.
+ *
+ * @return null|Node Found node (or null if not found)
+ */
+ public function getFoundNode() {
+ return $this->foundNode;
+ }
+
+ public function beforeTraverse(array $nodes) {
+ $this->foundNode = null;
+
+ return null;
+ }
+
+ public function enterNode(Node $node) {
+ $filterCallback = $this->filterCallback;
+ if ($filterCallback($node)) {
+ $this->foundNode = $node;
+ return NodeTraverser::STOP_TRAVERSAL;
+ }
+
+ return null;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
new file mode 100644
index 000000000..8e259c57b
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NameResolver.php
@@ -0,0 +1,257 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\NodeVisitor;
+
+use PhpParser\ErrorHandler;
+use PhpParser\NameContext;
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Name;
+use PhpParser\Node\Name\FullyQualified;
+use PhpParser\Node\Stmt;
+use PhpParser\NodeVisitorAbstract;
+
+class NameResolver extends NodeVisitorAbstract
+{
+ /** @var NameContext Naming context */
+ protected $nameContext;
+
+ /** @var bool Whether to preserve original names */
+ protected $preserveOriginalNames;
+
+ /** @var bool Whether to replace resolved nodes in place, or to add resolvedNode attributes */
+ protected $replaceNodes;
+
+ /**
+ * Constructs a name resolution visitor.
+ *
+ * Options:
+ * * preserveOriginalNames (default false): An "originalName" attribute will be added to
+ * all name nodes that underwent resolution.
+ * * replaceNodes (default true): Resolved names are replaced in-place. Otherwise, a
+ * resolvedName attribute is added. (Names that cannot be statically resolved receive a
+ * namespacedName attribute, as usual.)
+ *
+ * @param ErrorHandler|null $errorHandler Error handler
+ * @param array $options Options
+ */
+ public function __construct(ErrorHandler $errorHandler = null, array $options = []) {
+ $this->nameContext = new NameContext($errorHandler ?? new ErrorHandler\Throwing);
+ $this->preserveOriginalNames = $options['preserveOriginalNames'] ?? false;
+ $this->replaceNodes = $options['replaceNodes'] ?? true;
+ }
+
+ /**
+ * Get name resolution context.
+ *
+ * @return NameContext
+ */
+ public function getNameContext() : NameContext {
+ return $this->nameContext;
+ }
+
+ public function beforeTraverse(array $nodes) {
+ $this->nameContext->startNamespace();
+ return null;
+ }
+
+ public function enterNode(Node $node) {
+ if ($node instanceof Stmt\Namespace_) {
+ $this->nameContext->startNamespace($node->name);
+ } elseif ($node instanceof Stmt\Use_) {
+ foreach ($node->uses as $use) {
+ $this->addAlias($use, $node->type, null);
+ }
+ } elseif ($node instanceof Stmt\GroupUse) {
+ foreach ($node->uses as $use) {
+ $this->addAlias($use, $node->type, $node->prefix);
+ }
+ } elseif ($node instanceof Stmt\Class_) {
+ if (null !== $node->extends) {
+ $node->extends = $this->resolveClassName($node->extends);
+ }
+
+ foreach ($node->implements as &$interface) {
+ $interface = $this->resolveClassName($interface);
+ }
+
+ $this->resolveAttrGroups($node);
+ if (null !== $node->name) {
+ $this->addNamespacedName($node);
+ }
+ } elseif ($node instanceof Stmt\Interface_) {
+ foreach ($node->extends as &$interface) {
+ $interface = $this->resolveClassName($interface);
+ }
+
+ $this->resolveAttrGroups($node);
+ $this->addNamespacedName($node);
+ } elseif ($node instanceof Stmt\Enum_) {
+ foreach ($node->implements as &$interface) {
+ $interface = $this->resolveClassName($interface);
+ }
+
+ $this->resolveAttrGroups($node);
+ if (null !== $node->name) {
+ $this->addNamespacedName($node);
+ }
+ } elseif ($node instanceof Stmt\Trait_) {
+ $this->resolveAttrGroups($node);
+ $this->addNamespacedName($node);
+ } elseif ($node instanceof Stmt\Function_) {
+ $this->resolveSignature($node);
+ $this->resolveAttrGroups($node);
+ $this->addNamespacedName($node);
+ } elseif ($node instanceof Stmt\ClassMethod
+ || $node instanceof Expr\Closure
+ || $node instanceof Expr\ArrowFunction
+ ) {
+ $this->resolveSignature($node);
+ $this->resolveAttrGroups($node);
+ } elseif ($node instanceof Stmt\Property) {
+ if (null !== $node->type) {
+ $node->type = $this->resolveType($node->type);
+ }
+ $this->resolveAttrGroups($node);
+ } elseif ($node instanceof Stmt\Const_) {
+ foreach ($node->consts as $const) {
+ $this->addNamespacedName($const);
+ }
+ } else if ($node instanceof Stmt\ClassConst) {
+ $this->resolveAttrGroups($node);
+ } else if ($node instanceof Stmt\EnumCase) {
+ $this->resolveAttrGroups($node);
+ } elseif ($node instanceof Expr\StaticCall
+ || $node instanceof Expr\StaticPropertyFetch
+ || $node instanceof Expr\ClassConstFetch
+ || $node instanceof Expr\New_
+ || $node instanceof Expr\Instanceof_
+ ) {
+ if ($node->class instanceof Name) {
+ $node->class = $this->resolveClassName($node->class);
+ }
+ } elseif ($node instanceof Stmt\Catch_) {
+ foreach ($node->types as &$type) {
+ $type = $this->resolveClassName($type);
+ }
+ } elseif ($node instanceof Expr\FuncCall) {
+ if ($node->name instanceof Name) {
+ $node->name = $this->resolveName($node->name, Stmt\Use_::TYPE_FUNCTION);
+ }
+ } elseif ($node instanceof Expr\ConstFetch) {
+ $node->name = $this->resolveName($node->name, Stmt\Use_::TYPE_CONSTANT);
+ } elseif ($node instanceof Stmt\TraitUse) {
+ foreach ($node->traits as &$trait) {
+ $trait = $this->resolveClassName($trait);
+ }
+
+ foreach ($node->adaptations as $adaptation) {
+ if (null !== $adaptation->trait) {
+ $adaptation->trait = $this->resolveClassName($adaptation->trait);
+ }
+
+ if ($adaptation instanceof Stmt\TraitUseAdaptation\Precedence) {
+ foreach ($adaptation->insteadof as &$insteadof) {
+ $insteadof = $this->resolveClassName($insteadof);
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private function addAlias(Stmt\UseUse $use, $type, Name $prefix = null) {
+ // Add prefix for group uses
+ $name = $prefix ? Name::concat($prefix, $use->name) : $use->name;
+ // Type is determined either by individual element or whole use declaration
+ $type |= $use->type;
+
+ $this->nameContext->addAlias(
+ $name, (string) $use->getAlias(), $type, $use->getAttributes()
+ );
+ }
+
+ /** @param Stmt\Function_|Stmt\ClassMethod|Expr\Closure $node */
+ private function resolveSignature($node) {
+ foreach ($node->params as $param) {
+ $param->type = $this->resolveType($param->type);
+ $this->resolveAttrGroups($param);
+ }
+ $node->returnType = $this->resolveType($node->returnType);
+ }
+
+ private function resolveType($node) {
+ if ($node instanceof Name) {
+ return $this->resolveClassName($node);
+ }
+ if ($node instanceof Node\NullableType) {
+ $node->type = $this->resolveType($node->type);
+ return $node;
+ }
+ if ($node instanceof Node\UnionType || $node instanceof Node\IntersectionType) {
+ foreach ($node->types as &$type) {
+ $type = $this->resolveType($type);
+ }
+ return $node;
+ }
+ return $node;
+ }
+
+ /**
+ * Resolve name, according to name resolver options.
+ *
+ * @param Name $name Function or constant name to resolve
+ * @param int $type One of Stmt\Use_::TYPE_*
+ *
+ * @return Name Resolved name, or original name with attribute
+ */
+ protected function resolveName(Name $name, int $type) : Name {
+ if (!$this->replaceNodes) {
+ $resolvedName = $this->nameContext->getResolvedName($name, $type);
+ if (null !== $resolvedName) {
+ $name->setAttribute('resolvedName', $resolvedName);
+ } else {
+ $name->setAttribute('namespacedName', FullyQualified::concat(
+ $this->nameContext->getNamespace(), $name, $name->getAttributes()));
+ }
+ return $name;
+ }
+
+ if ($this->preserveOriginalNames) {
+ // Save the original name
+ $originalName = $name;
+ $name = clone $originalName;
+ $name->setAttribute('originalName', $originalName);
+ }
+
+ $resolvedName = $this->nameContext->getResolvedName($name, $type);
+ if (null !== $resolvedName) {
+ return $resolvedName;
+ }
+
+ // unqualified names inside a namespace cannot be resolved at compile-time
+ // add the namespaced version of the name as an attribute
+ $name->setAttribute('namespacedName', FullyQualified::concat(
+ $this->nameContext->getNamespace(), $name, $name->getAttributes()));
+ return $name;
+ }
+
+ protected function resolveClassName(Name $name) {
+ return $this->resolveName($name, Stmt\Use_::TYPE_NORMAL);
+ }
+
+ protected function addNamespacedName(Node $node) {
+ $node->namespacedName = Name::concat(
+ $this->nameContext->getNamespace(), (string) $node->name);
+ }
+
+ protected function resolveAttrGroups(Node $node)
+ {
+ foreach ($node->attrGroups as $attrGroup) {
+ foreach ($attrGroup->attrs as $attr) {
+ $attr->name = $this->resolveClassName($attr->name);
+ }
+ }
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
new file mode 100644
index 000000000..ea372e5b9
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/NodeConnectingVisitor.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\NodeVisitor;
+
+use PhpParser\Node;
+use PhpParser\NodeVisitorAbstract;
+
+/**
+ * Visitor that connects a child node to its parent node
+ * as well as its sibling nodes.
+ *
+ * On the child node, the parent node can be accessed through
+ * <code>$node->getAttribute('parent')</code>, the previous
+ * node can be accessed through <code>$node->getAttribute('previous')</code>,
+ * and the next node can be accessed through <code>$node->getAttribute('next')</code>.
+ */
+final class NodeConnectingVisitor extends NodeVisitorAbstract
+{
+ /**
+ * @var Node[]
+ */
+ private $stack = [];
+
+ /**
+ * @var ?Node
+ */
+ private $previous;
+
+ public function beforeTraverse(array $nodes) {
+ $this->stack = [];
+ $this->previous = null;
+ }
+
+ public function enterNode(Node $node) {
+ if (!empty($this->stack)) {
+ $node->setAttribute('parent', $this->stack[count($this->stack) - 1]);
+ }
+
+ if ($this->previous !== null && $this->previous->getAttribute('parent') === $node->getAttribute('parent')) {
+ $node->setAttribute('previous', $this->previous);
+ $this->previous->setAttribute('next', $node);
+ }
+
+ $this->stack[] = $node;
+ }
+
+ public function leaveNode(Node $node) {
+ $this->previous = $node;
+
+ array_pop($this->stack);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
new file mode 100644
index 000000000..b98d2bfa6
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitor/ParentConnectingVisitor.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\NodeVisitor;
+
+use function array_pop;
+use function count;
+use PhpParser\Node;
+use PhpParser\NodeVisitorAbstract;
+
+/**
+ * Visitor that connects a child node to its parent node.
+ *
+ * On the child node, the parent node can be accessed through
+ * <code>$node->getAttribute('parent')</code>.
+ */
+final class ParentConnectingVisitor extends NodeVisitorAbstract
+{
+ /**
+ * @var Node[]
+ */
+ private $stack = [];
+
+ public function beforeTraverse(array $nodes)
+ {
+ $this->stack = [];
+ }
+
+ public function enterNode(Node $node)
+ {
+ if (!empty($this->stack)) {
+ $node->setAttribute('parent', $this->stack[count($this->stack) - 1]);
+ }
+
+ $this->stack[] = $node;
+ }
+
+ public function leaveNode(Node $node)
+ {
+ array_pop($this->stack);
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php
new file mode 100644
index 000000000..d378d6709
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/NodeVisitorAbstract.php
@@ -0,0 +1,25 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+/**
+ * @codeCoverageIgnore
+ */
+class NodeVisitorAbstract implements NodeVisitor
+{
+ public function beforeTraverse(array $nodes) {
+ return null;
+ }
+
+ public function enterNode(Node $node) {
+ return null;
+ }
+
+ public function leaveNode(Node $node) {
+ return null;
+ }
+
+ public function afterTraverse(array $nodes) {
+ return null;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser.php b/vendor/nikic/php-parser/lib/PhpParser/Parser.php
new file mode 100644
index 000000000..8956c7671
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser.php
@@ -0,0 +1,18 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+interface Parser
+{
+ /**
+ * Parses PHP code into a node tree.
+ *
+ * @param string $code The source code to parse
+ * @param ErrorHandler|null $errorHandler Error handler to use for lexer/parser errors, defaults
+ * to ErrorHandler\Throwing.
+ *
+ * @return Node\Stmt[]|null Array of statements (or null non-throwing error handler is used and
+ * the parser was unable to recover from an error).
+ */
+ public function parse(string $code, ErrorHandler $errorHandler = null);
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.php
new file mode 100644
index 000000000..77fd1f3fb
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Multiple.php
@@ -0,0 +1,55 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\Parser;
+
+use PhpParser\Error;
+use PhpParser\ErrorHandler;
+use PhpParser\Parser;
+
+class Multiple implements Parser
+{
+ /** @var Parser[] List of parsers to try, in order of preference */
+ private $parsers;
+
+ /**
+ * Create a parser which will try multiple parsers in an order of preference.
+ *
+ * Parsers will be invoked in the order they're provided to the constructor. If one of the
+ * parsers runs without throwing, it's output is returned. Otherwise the exception that the
+ * first parser generated is thrown.
+ *
+ * @param Parser[] $parsers
+ */
+ public function __construct(array $parsers) {
+ $this->parsers = $parsers;
+ }
+
+ public function parse(string $code, ErrorHandler $errorHandler = null) {
+ if (null === $errorHandler) {
+ $errorHandler = new ErrorHandler\Throwing;
+ }
+
+ list($firstStmts, $firstError) = $this->tryParse($this->parsers[0], $errorHandler, $code);
+ if ($firstError === null) {
+ return $firstStmts;
+ }
+
+ for ($i = 1, $c = count($this->parsers); $i < $c; ++$i) {
+ list($stmts, $error) = $this->tryParse($this->parsers[$i], $errorHandler, $code);
+ if ($error === null) {
+ return $stmts;
+ }
+ }
+
+ throw $firstError;
+ }
+
+ private function tryParse(Parser $parser, ErrorHandler $errorHandler, $code) {
+ $stmts = null;
+ $error = null;
+ try {
+ $stmts = $parser->parse($code, $errorHandler);
+ } catch (Error $error) {}
+ return [$stmts, $error];
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
new file mode 100644
index 000000000..c62adfd2c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php5.php
@@ -0,0 +1,2674 @@
+<?php
+
+namespace PhpParser\Parser;
+
+use PhpParser\Error;
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Name;
+use PhpParser\Node\Scalar;
+use PhpParser\Node\Stmt;
+
+/* This is an automatically GENERATED file, which should not be manually edited.
+ * Instead edit one of the following:
+ * * the grammar files grammar/php5.y or grammar/php7.y
+ * * the skeleton file grammar/parser.template
+ * * the preprocessing script grammar/rebuildParsers.php
+ */
+class Php5 extends \PhpParser\ParserAbstract
+{
+ protected $tokenToSymbolMapSize = 396;
+ protected $actionTableSize = 1093;
+ protected $gotoTableSize = 643;
+
+ protected $invalidSymbol = 168;
+ protected $errorSymbol = 1;
+ protected $defaultAction = -32766;
+ protected $unexpectedTokenRule = 32767;
+
+ protected $YY2TBLSTATE = 415;
+ protected $numNonLeafStates = 662;
+
+ protected $symbolToName = array(
+ "EOF",
+ "error",
+ "T_THROW",
+ "T_INCLUDE",
+ "T_INCLUDE_ONCE",
+ "T_EVAL",
+ "T_REQUIRE",
+ "T_REQUIRE_ONCE",
+ "','",
+ "T_LOGICAL_OR",
+ "T_LOGICAL_XOR",
+ "T_LOGICAL_AND",
+ "T_PRINT",
+ "T_YIELD",
+ "T_DOUBLE_ARROW",
+ "T_YIELD_FROM",
+ "'='",
+ "T_PLUS_EQUAL",
+ "T_MINUS_EQUAL",
+ "T_MUL_EQUAL",
+ "T_DIV_EQUAL",
+ "T_CONCAT_EQUAL",
+ "T_MOD_EQUAL",
+ "T_AND_EQUAL",
+ "T_OR_EQUAL",
+ "T_XOR_EQUAL",
+ "T_SL_EQUAL",
+ "T_SR_EQUAL",
+ "T_POW_EQUAL",
+ "T_COALESCE_EQUAL",
+ "'?'",
+ "':'",
+ "T_COALESCE",
+ "T_BOOLEAN_OR",
+ "T_BOOLEAN_AND",
+ "'|'",
+ "'^'",
+ "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG",
+ "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG",
+ "T_IS_EQUAL",
+ "T_IS_NOT_EQUAL",
+ "T_IS_IDENTICAL",
+ "T_IS_NOT_IDENTICAL",
+ "T_SPACESHIP",
+ "'<'",
+ "T_IS_SMALLER_OR_EQUAL",
+ "'>'",
+ "T_IS_GREATER_OR_EQUAL",
+ "T_SL",
+ "T_SR",
+ "'+'",
+ "'-'",
+ "'.'",
+ "'*'",
+ "'/'",
+ "'%'",
+ "'!'",
+ "T_INSTANCEOF",
+ "'~'",
+ "T_INC",
+ "T_DEC",
+ "T_INT_CAST",
+ "T_DOUBLE_CAST",
+ "T_STRING_CAST",
+ "T_ARRAY_CAST",
+ "T_OBJECT_CAST",
+ "T_BOOL_CAST",
+ "T_UNSET_CAST",
+ "'@'",
+ "T_POW",
+ "'['",
+ "T_NEW",
+ "T_CLONE",
+ "T_EXIT",
+ "T_IF",
+ "T_ELSEIF",
+ "T_ELSE",
+ "T_ENDIF",
+ "T_LNUMBER",
+ "T_DNUMBER",
+ "T_STRING",
+ "T_STRING_VARNAME",
+ "T_VARIABLE",
+ "T_NUM_STRING",
+ "T_INLINE_HTML",
+ "T_ENCAPSED_AND_WHITESPACE",
+ "T_CONSTANT_ENCAPSED_STRING",
+ "T_ECHO",
+ "T_DO",
+ "T_WHILE",
+ "T_ENDWHILE",
+ "T_FOR",
+ "T_ENDFOR",
+ "T_FOREACH",
+ "T_ENDFOREACH",
+ "T_DECLARE",
+ "T_ENDDECLARE",
+ "T_AS",
+ "T_SWITCH",
+ "T_MATCH",
+ "T_ENDSWITCH",
+ "T_CASE",
+ "T_DEFAULT",
+ "T_BREAK",
+ "T_CONTINUE",
+ "T_GOTO",
+ "T_FUNCTION",
+ "T_FN",
+ "T_CONST",
+ "T_RETURN",
+ "T_TRY",
+ "T_CATCH",
+ "T_FINALLY",
+ "T_USE",
+ "T_INSTEADOF",
+ "T_GLOBAL",
+ "T_STATIC",
+ "T_ABSTRACT",
+ "T_FINAL",
+ "T_PRIVATE",
+ "T_PROTECTED",
+ "T_PUBLIC",
+ "T_VAR",
+ "T_UNSET",
+ "T_ISSET",
+ "T_EMPTY",
+ "T_HALT_COMPILER",
+ "T_CLASS",
+ "T_TRAIT",
+ "T_INTERFACE",
+ "T_EXTENDS",
+ "T_IMPLEMENTS",
+ "T_OBJECT_OPERATOR",
+ "T_LIST",
+ "T_ARRAY",
+ "T_CALLABLE",
+ "T_CLASS_C",
+ "T_TRAIT_C",
+ "T_METHOD_C",
+ "T_FUNC_C",
+ "T_LINE",
+ "T_FILE",
+ "T_START_HEREDOC",
+ "T_END_HEREDOC",
+ "T_DOLLAR_OPEN_CURLY_BRACES",
+ "T_CURLY_OPEN",
+ "T_PAAMAYIM_NEKUDOTAYIM",
+ "T_NAMESPACE",
+ "T_NS_C",
+ "T_DIR",
+ "T_NS_SEPARATOR",
+ "T_ELLIPSIS",
+ "T_NAME_FULLY_QUALIFIED",
+ "T_NAME_QUALIFIED",
+ "T_NAME_RELATIVE",
+ "';'",
+ "'{'",
+ "'}'",
+ "'('",
+ "')'",
+ "'$'",
+ "'`'",
+ "']'",
+ "'\"'",
+ "T_READONLY",
+ "T_ENUM",
+ "T_NULLSAFE_OBJECT_OPERATOR",
+ "T_ATTRIBUTE"
+ );
+
+ protected $tokenToSymbol = array(
+ 0, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 56, 163, 168, 160, 55, 168, 168,
+ 158, 159, 53, 50, 8, 51, 52, 54, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 31, 155,
+ 44, 16, 46, 30, 68, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 70, 168, 162, 36, 168, 161, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 156, 35, 157, 58, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 1, 2, 3, 4,
+ 5, 6, 7, 9, 10, 11, 12, 13, 14, 15,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 32, 33, 34, 37, 38, 39, 40,
+ 41, 42, 43, 45, 47, 48, 49, 57, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 69, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 164,
+ 122, 123, 124, 125, 126, 127, 128, 129, 165, 130,
+ 131, 132, 166, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 167
+ );
+
+ protected $action = array(
+ 699, 669, 670, 671, 672, 673, 286, 674, 675, 676,
+ 712, 713, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 0, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244,-32766,-32766,-32766,-32766,-32766,
+ -32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, 245, 246,
+ 242, 243, 244,-32766,-32766, 677,-32766, 750,-32766,-32766,
+ -32766,-32766,-32766,-32766,-32766, 1224, 245, 246, 1225, 678,
+ 679, 680, 681, 682, 683, 684,-32766, 48, 746,-32766,
+ -32766,-32766,-32766,-32766,-32766, 685, 686, 687, 688, 689,
+ 690, 691, 692, 693, 694, 695, 715, 738, 716, 717,
+ 718, 719, 707, 708, 709, 737, 710, 711, 696, 697,
+ 698, 700, 701, 702, 740, 741, 742, 743, 744, 745,
+ 703, 704, 705, 706, 736, 727, 725, 726, 722, 723,
+ 751, 714, 720, 721, 728, 729, 731, 730, 732, 733,
+ 55, 56, 425, 57, 58, 724, 735, 734, 1073, 59,
+ 60, -224, 61,-32766,-32766,-32766,-32766,-32766,-32766,-32766,
+ -32766,-32766,-32766, 121,-32767,-32767,-32767,-32767, 29, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 1043, 766, 1071, 767, 580, 62, 63,-32766,
+ -32766,-32766,-32766, 64, 516, 65, 294, 295, 66, 67,
+ 68, 69, 70, 71, 72, 73, 822, 25, 302, 74,
+ 418, 981, 983, 1043, 1181, 1095, 1096, 1073, 748, 754,
+ 1075, 1074, 1076, 469,-32766,-32766,-32766, 337, 823, 54,
+ -32767,-32767,-32767,-32767, 98, 99, 100, 101, 102, 220,
+ 221, 222, 78, 361, 1107,-32766, 341,-32766,-32766,-32766,
+ -32766,-32766, 1107, 492, 949, 950, 951, 948, 947, 946,
+ 207, 477, 478, 949, 950, 951, 948, 947, 946, 1043,
+ 479, 480, 52, 1101, 1102, 1103, 1104, 1098, 1099, 319,
+ 872, 668, 667, 27, -511, 1105, 1100,-32766, 130, 1075,
+ 1074, 1076, 345, 668, 667, 41, 126, 341, 334, 369,
+ 336, 426, -128, -128, -128, 896, 897, 468, 220, 221,
+ 222, 811, 1195, 619, 40, 21, 427, -128, 470, -128,
+ 471, -128, 472, -128, 802, 428, -4, 823, 54, 207,
+ 33, 34, 429, 360, 317, 28, 35, 473,-32766,-32766,
+ -32766, 211, 356, 357, 474, 475,-32766,-32766,-32766, 754,
+ 476, 49, 313, 794, 843, 430, 431, 289, 125,-32766,
+ 813,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,
+ -32767,-32767,-32767,-32766,-32766,-32766, 769, 103, 104, 105,
+ 327, 307, 825, 633, -128, 1075, 1074, 1076, 221, 222,
+ 927, 748, 1146, 106,-32766, 129,-32766,-32766,-32766,-32766,
+ 426, 823, 54, 902, 873, 302, 468, 75, 207, 359,
+ 811, 668, 667, 40, 21, 427, 754, 470, 754, 471,
+ 423, 472, 1043, 127, 428, 435, 1043, 341, 1043, 33,
+ 34, 429, 360, 1181, 415, 35, 473, 122, 10, 315,
+ 128, 356, 357, 474, 475,-32766,-32766,-32766, 768, 476,
+ 668, 667, 758, 843, 430, 431, 754, 1043, 1147,-32766,
+ -32766,-32766, 754, 419, 342, 1215,-32766, 131,-32766,-32766,
+ -32766, 341, 363, 346, 426, 823, 54, 100, 101, 102,
+ 468, 825, 633, -4, 811, 442, 903, 40, 21, 427,
+ 754, 470, 435, 471, 341, 472, 341, 766, 428, 767,
+ -209, -209, -209, 33, 34, 429, 360, 479, 1196, 35,
+ 473, 345,-32766,-32766,-32766, 356, 357, 474, 475, 220,
+ 221, 222, 421, 476, 32, 297, 794, 843, 430, 431,
+ 754, 754, 435,-32766, 341,-32766,-32766, 9, 300, 51,
+ 207, 249, 324, 753, 120, 220, 221, 222, 426, 30,
+ 247, 941, 422, 424, 468, 825, 633, -209, 811, 1043,
+ 1061, 40, 21, 427, 129, 470, 207, 471, 341, 472,
+ 804, 20, 428, 124, -208, -208, -208, 33, 34, 429,
+ 360, 479, 212, 35, 473, 923, -259, 823, 54, 356,
+ 357, 474, 475,-32766,-32766,-32766, 1043, 476, 213, 806,
+ 794, 843, 430, 431,-32766,-32766, 435, 435, 341, 341,
+ 443, 79, 80, 81,-32766, 668, 667, 636, 344, 808,
+ 668, 667, 239, 240, 241, 123, 214, 538, 250, 825,
+ 633, -208, 36, 251, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 252, 307,
+ 426, 220, 221, 222, 823, 54, 468,-32766, 222, 765,
+ 811, 106, 134, 40, 21, 427, 571, 470, 207, 471,
+ 445, 472, 207,-32766, 428, 896, 897, 207, 307, 33,
+ 34, 429, 245, 246, 637, 35, 473, 452, 22, 809,
+ 922, 356, 357, 457, 588, 135, 374, 595, 596, 476,
+ -228, 759, 639, 938, 653, 926, 661, -86, 823, 54,
+ 314, 644, 647, 821, 133, 836, 43, 106, 603, 44,
+ 45, 46, 47, 748, 50, 53, 132, 426, 302,-32766,
+ 520, 825, 633, 468, -84, 607, 577, 811, 641, 362,
+ 40, 21, 427, -278, 470, 754, 471, 954, 472, 441,
+ 627, 428, 823, 54, 574, 844, 33, 34, 429, 11,
+ 615, 845, 35, 473, 444, 461, 285, -511, 356, 357,
+ 592, -419, 593, 1106, 1153, -410, 476, 368, 838, 38,
+ 658, 426, 645, 795, 1052, 0, 325, 468, 0,-32766,
+ 0, 811, 0, 0, 40, 21, 427, 0, 470, 0,
+ 471, 0, 472, 0, 322, 428, 823, 54, 825, 633,
+ 33, 34, 429, 0, 326, 0, 35, 473, 323, 0,
+ 316, 318, 356, 357, -512, 426, 0, 753, 531, 0,
+ 476, 468, 6, 0, 0, 811, 650, 7, 40, 21,
+ 427, 12, 470, 14, 471, 373, 472, -420, 562, 428,
+ 823, 54, 78, -225, 33, 34, 429, 39, 656, 657,
+ 35, 473, 859, 633, 764, 812, 356, 357, 820, 799,
+ 814, 875, 866, 867, 476, 797, 860, 857, 855, 426,
+ 933, 934, 931, 819, 803, 468, 805, 807, 810, 811,
+ 930, 762, 40, 21, 427, 763, 470, 932, 471, 335,
+ 472, 358, 634, 428, 638, 640, 825, 633, 33, 34,
+ 429, 642, 643, 646, 35, 473, 648, 649, 651, 652,
+ 356, 357, 635, 426, 1221, 1223, 761, 842, 476, 468,
+ 248, 760, 841, 811, 1222, 840, 40, 21, 427, 1057,
+ 470, 830, 471, 1045, 472, 839, 1046, 428, 828, 215,
+ 216, 939, 33, 34, 429, 217, 864, 218, 35, 473,
+ 825, 633, 24, 865, 356, 357, 456, 1220, 1189, 209,
+ 1187, 1172, 476, 1185, 215, 216, 1086, 1095, 1096, 914,
+ 217, 1193, 218, 1183, -224, 1097, 26, 31, 37, 42,
+ 76, 77, 210, 288, 209, 292, 293, 308, 309, 310,
+ 311, 339, 1095, 1096, 825, 633, 355, 291, 416, 1152,
+ 1097, 16, 17, 18, 393, 453, 460, 462, 466, 552,
+ 624, 1048, 1051, 904, 1111, 1047, 1023, 563, 1022, 1088,
+ 0, 0, -429, 558, 1041, 1101, 1102, 1103, 1104, 1098,
+ 1099, 398, 1054, 1053, 1056, 1055, 1070, 1105, 1100, 1186,
+ 1171, 1167, 1184, 1085, 1218, 1112, 1166, 219, 558, 599,
+ 1101, 1102, 1103, 1104, 1098, 1099, 398, 0, 0, 0,
+ 0, 0, 1105, 1100, 0, 0, 0, 0, 0, 0,
+ 0, 0, 219
+ );
+
+ protected $actionCheck = array(
+ 2, 3, 4, 5, 6, 7, 14, 9, 10, 11,
+ 12, 13, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 0, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 9, 10, 11, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 69, 70,
+ 53, 54, 55, 9, 10, 57, 30, 80, 32, 33,
+ 34, 35, 36, 37, 38, 80, 69, 70, 83, 71,
+ 72, 73, 74, 75, 76, 77, 9, 70, 80, 33,
+ 34, 35, 36, 37, 38, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 153, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 3, 4, 5, 6, 7, 147, 148, 149, 80, 12,
+ 13, 159, 15, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 156, 44, 45, 46, 47, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 13, 106, 116, 108, 85, 50, 51, 33,
+ 34, 35, 36, 56, 85, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 1, 70, 71, 72,
+ 73, 59, 60, 13, 82, 78, 79, 80, 80, 82,
+ 152, 153, 154, 86, 9, 10, 11, 8, 1, 2,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 9,
+ 10, 11, 156, 106, 143, 30, 160, 32, 33, 34,
+ 35, 36, 143, 116, 116, 117, 118, 119, 120, 121,
+ 30, 124, 125, 116, 117, 118, 119, 120, 121, 13,
+ 133, 134, 70, 136, 137, 138, 139, 140, 141, 142,
+ 31, 37, 38, 8, 132, 148, 149, 116, 156, 152,
+ 153, 154, 160, 37, 38, 158, 8, 160, 161, 8,
+ 163, 74, 75, 76, 77, 134, 135, 80, 9, 10,
+ 11, 84, 1, 80, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 155, 98, 0, 1, 2, 30,
+ 103, 104, 105, 106, 132, 8, 109, 110, 9, 10,
+ 11, 8, 115, 116, 117, 118, 9, 10, 11, 82,
+ 123, 70, 8, 126, 127, 128, 129, 8, 156, 30,
+ 155, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 41, 42, 43, 9, 10, 11, 157, 53, 54, 55,
+ 8, 57, 155, 156, 157, 152, 153, 154, 10, 11,
+ 157, 80, 162, 69, 30, 151, 32, 33, 34, 35,
+ 74, 1, 2, 159, 155, 71, 80, 151, 30, 8,
+ 84, 37, 38, 87, 88, 89, 82, 91, 82, 93,
+ 8, 95, 13, 156, 98, 158, 13, 160, 13, 103,
+ 104, 105, 106, 82, 108, 109, 110, 156, 8, 113,
+ 31, 115, 116, 117, 118, 9, 10, 11, 157, 123,
+ 37, 38, 126, 127, 128, 129, 82, 13, 159, 33,
+ 34, 35, 82, 127, 8, 85, 30, 156, 32, 33,
+ 34, 160, 8, 147, 74, 1, 2, 50, 51, 52,
+ 80, 155, 156, 157, 84, 31, 159, 87, 88, 89,
+ 82, 91, 158, 93, 160, 95, 160, 106, 98, 108,
+ 100, 101, 102, 103, 104, 105, 106, 133, 159, 109,
+ 110, 160, 9, 10, 11, 115, 116, 117, 118, 9,
+ 10, 11, 8, 123, 144, 145, 126, 127, 128, 129,
+ 82, 82, 158, 30, 160, 32, 33, 108, 8, 70,
+ 30, 31, 113, 152, 16, 9, 10, 11, 74, 14,
+ 14, 122, 8, 8, 80, 155, 156, 157, 84, 13,
+ 159, 87, 88, 89, 151, 91, 30, 93, 160, 95,
+ 155, 159, 98, 14, 100, 101, 102, 103, 104, 105,
+ 106, 133, 16, 109, 110, 155, 157, 1, 2, 115,
+ 116, 117, 118, 9, 10, 11, 13, 123, 16, 155,
+ 126, 127, 128, 129, 33, 34, 158, 158, 160, 160,
+ 156, 9, 10, 11, 30, 37, 38, 31, 70, 155,
+ 37, 38, 50, 51, 52, 156, 16, 81, 16, 155,
+ 156, 157, 30, 16, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 16, 57,
+ 74, 9, 10, 11, 1, 2, 80, 116, 11, 155,
+ 84, 69, 156, 87, 88, 89, 160, 91, 30, 93,
+ 132, 95, 30, 33, 98, 134, 135, 30, 57, 103,
+ 104, 105, 69, 70, 31, 109, 110, 75, 76, 155,
+ 155, 115, 116, 75, 76, 101, 102, 111, 112, 123,
+ 159, 155, 156, 155, 156, 155, 156, 31, 1, 2,
+ 31, 31, 31, 31, 31, 38, 70, 69, 77, 70,
+ 70, 70, 70, 80, 70, 70, 70, 74, 71, 85,
+ 85, 155, 156, 80, 97, 96, 100, 84, 31, 106,
+ 87, 88, 89, 82, 91, 82, 93, 82, 95, 89,
+ 92, 98, 1, 2, 90, 127, 103, 104, 105, 97,
+ 94, 127, 109, 110, 97, 97, 97, 132, 115, 116,
+ 100, 146, 113, 143, 143, 146, 123, 106, 151, 155,
+ 157, 74, 31, 157, 162, -1, 114, 80, -1, 116,
+ -1, 84, -1, -1, 87, 88, 89, -1, 91, -1,
+ 93, -1, 95, -1, 130, 98, 1, 2, 155, 156,
+ 103, 104, 105, -1, 130, -1, 109, 110, 131, -1,
+ 132, 132, 115, 116, 132, 74, -1, 152, 150, -1,
+ 123, 80, 146, -1, -1, 84, 31, 146, 87, 88,
+ 89, 146, 91, 146, 93, 146, 95, 146, 150, 98,
+ 1, 2, 156, 159, 103, 104, 105, 155, 155, 155,
+ 109, 110, 155, 156, 155, 155, 115, 116, 155, 155,
+ 155, 155, 155, 155, 123, 155, 155, 155, 155, 74,
+ 155, 155, 155, 155, 155, 80, 155, 155, 155, 84,
+ 155, 155, 87, 88, 89, 155, 91, 155, 93, 156,
+ 95, 156, 156, 98, 156, 156, 155, 156, 103, 104,
+ 105, 156, 156, 156, 109, 110, 156, 156, 156, 156,
+ 115, 116, 156, 74, 157, 157, 157, 157, 123, 80,
+ 31, 157, 157, 84, 157, 157, 87, 88, 89, 157,
+ 91, 157, 93, 157, 95, 157, 157, 98, 157, 50,
+ 51, 157, 103, 104, 105, 56, 157, 58, 109, 110,
+ 155, 156, 158, 157, 115, 116, 157, 157, 157, 70,
+ 157, 157, 123, 157, 50, 51, 157, 78, 79, 157,
+ 56, 157, 58, 157, 159, 86, 158, 158, 158, 158,
+ 158, 158, 158, 158, 70, 158, 158, 158, 158, 158,
+ 158, 158, 78, 79, 155, 156, 158, 160, 158, 163,
+ 86, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+ 159, 159, 159, 159, 159, 159, 159, 159, 159, 159,
+ -1, -1, 161, 134, 161, 136, 137, 138, 139, 140,
+ 141, 142, 162, 162, 162, 162, 162, 148, 149, 162,
+ 162, 162, 162, 162, 162, 162, 162, 158, 134, 162,
+ 136, 137, 138, 139, 140, 141, 142, -1, -1, -1,
+ -1, -1, 148, 149, -1, -1, -1, -1, -1, -1,
+ -1, -1, 158
+ );
+
+ protected $actionBase = array(
+ 0, 227, 326, 400, 474, 233, 132, 132, 752, -2,
+ -2, 138, -2, -2, -2, 663, 761, 815, 761, 586,
+ 717, 859, 859, 859, 244, 256, 256, 256, 413, 583,
+ 583, 880, 546, 169, 415, 444, 409, 200, 200, 200,
+ 200, 137, 137, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
+ 200, 200, 200, 200, 200, 200, 249, 205, 738, 559,
+ 535, 739, 741, 742, 876, 679, 877, 820, 821, 693,
+ 823, 824, 826, 829, 832, 819, 834, 907, 836, 602,
+ 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
+ 602, 67, 536, 299, 510, 230, 44, 652, 652, 652,
+ 652, 652, 652, 652, 337, 337, 337, 337, 337, 337,
+ 337, 337, 337, 337, 337, 337, 337, 337, 337, 337,
+ 337, 337, 378, 584, 584, 584, 657, 909, 648, 934,
+ 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
+ 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
+ 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
+ 934, 934, 934, 934, 934, 934, 934, 934, 934, 934,
+ 934, 934, 934, 503, -21, -21, 436, 650, 364, 571,
+ 215, 426, 156, 26, 26, 329, 329, 329, 329, 329,
+ 46, 46, 5, 5, 5, 5, 152, 186, 186, 186,
+ 186, 120, 120, 120, 120, 374, 374, 429, 448, 448,
+ 334, 267, 449, 449, 449, 449, 449, 449, 449, 449,
+ 449, 449, 336, 427, 427, 572, 572, 408, 551, 551,
+ 551, 551, 671, 171, 171, 391, 311, 311, 311, 109,
+ 641, 856, 68, 68, 68, 68, 68, 68, 324, 324,
+ 324, -3, -3, -3, 655, 77, 380, 77, 380, 683,
+ 685, 86, 685, 654, -15, 516, 776, 281, 646, 809,
+ 680, 816, 560, 711, 202, 578, 857, 643, -23, 578,
+ 578, 578, 578, 857, 622, 628, 596, -23, 578, -23,
+ 639, 454, 849, 351, 249, 558, 469, 631, 743, 514,
+ 688, 746, 464, 544, 548, 556, 7, 412, 708, 750,
+ 878, 879, 349, 702, 631, 631, 631, 327, 101, 7,
+ -8, 623, 623, 623, 623, 219, 623, 623, 623, 623,
+ 291, 430, 545, 401, 745, 653, 653, 675, 839, 814,
+ 814, 653, 673, 653, 675, 841, 841, 841, 841, 653,
+ 653, 653, 653, 814, 814, 667, 814, 275, 684, 694,
+ 694, 841, 713, 714, 653, 653, 697, 814, 814, 814,
+ 697, 687, 841, 669, 637, 333, 814, 841, 689, 673,
+ 689, 653, 669, 689, 673, 673, 689, 22, 686, 656,
+ 840, 842, 860, 756, 638, 644, 847, 848, 843, 845,
+ 838, 692, 719, 720, 528, 659, 660, 661, 662, 696,
+ 664, 698, 643, 658, 658, 658, 645, 701, 645, 658,
+ 658, 658, 658, 658, 658, 658, 658, 632, 635, 709,
+ 699, 670, 723, 566, 582, 758, 640, 636, 872, 865,
+ 881, 883, 849, 870, 645, 890, 634, 288, 610, 850,
+ 633, 753, 645, 851, 645, 759, 645, 873, 777, 666,
+ 778, 779, 658, 874, 891, 892, 893, 894, 897, 898,
+ 899, 900, 665, 901, 724, 674, 866, 344, 844, 639,
+ 705, 677, 755, 725, 780, 372, 902, 784, 645, 645,
+ 765, 706, 645, 766, 726, 712, 862, 727, 867, 903,
+ 640, 678, 868, 645, 681, 785, 904, 372, 690, 651,
+ 704, 649, 728, 858, 875, 853, 767, 612, 617, 787,
+ 788, 792, 691, 730, 863, 864, 835, 731, 770, 642,
+ 771, 676, 794, 772, 852, 732, 796, 798, 871, 647,
+ 707, 682, 672, 668, 773, 799, 869, 733, 735, 736,
+ 801, 737, 804, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 137, 137, 137, 137, -2, -2, -2,
+ -2, 0, 0, -2, 0, 0, 0, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 0, 0, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 602, 602,
+ 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
+ 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
+ 602, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 602, -21, -21, -21, -21, 602, -21,
+ -21, -21, -21, -21, -21, -21, 602, 602, 602, 602,
+ 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
+ 602, 602, 602, 602, -21, 602, 602, 602, -21, 68,
+ -21, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 602, 0, 0, 602, -21,
+ 602, -21, 602, -21, -21, 602, 602, 602, 602, 602,
+ 602, 602, -21, -21, -21, -21, -21, -21, 0, 324,
+ 324, 324, 324, -21, -21, -21, -21, 68, 68, 147,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 324, 324, -3, -3, 68,
+ 68, 68, 68, 68, 147, 68, 68, -23, 673, 673,
+ 673, 380, 380, 380, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 380, -23, 0, -23,
+ 0, 68, -23, 673, -23, 380, 673, 673, -23, 814,
+ 604, 604, 604, 604, 372, 7, 0, 0, 673, 673,
+ 0, 0, 0, 0, 0, 673, 0, 0, 0, 0,
+ 0, 0, 814, 0, 653, 0, 0, 0, 0, 658,
+ 288, 0, 677, 456, 0, 0, 0, 0, 0, 0,
+ 677, 456, 530, 530, 0, 665, 658, 658, 658, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 372
+ );
+
+ protected $actionDefault = array(
+ 3,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767, 540, 540, 495,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767, 297, 297, 297,
+ 32767,32767,32767, 528, 528, 528, 528, 528, 528, 528,
+ 528, 528, 528, 528,32767,32767,32767,32767,32767,32767,
+ 381,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767, 387,
+ 545,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767, 362,
+ 363, 365, 366, 296, 548, 529, 245, 388, 544, 295,
+ 247, 325, 499,32767,32767,32767, 327, 122, 256, 201,
+ 498, 125, 294, 232, 380, 382, 326, 301, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 300, 454, 359, 358, 357, 456,32767, 455, 492,
+ 492, 495,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767, 323, 483, 482, 324, 452, 328, 453,
+ 331, 457, 460, 329, 330, 347, 348, 345, 346, 349,
+ 458, 459, 476, 477, 474, 475, 299, 350, 351, 352,
+ 353, 478, 479, 480, 481,32767,32767, 280, 539, 539,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767, 338, 339, 467, 468,32767, 236, 236,
+ 236, 236, 281, 236,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767, 333, 334,
+ 332, 462, 463, 461, 428,32767,32767,32767, 430,32767,
+ 32767,32767,32767,32767,32767,32767,32767, 500,32767,32767,
+ 32767,32767,32767, 513, 417, 171,32767, 409,32767, 171,
+ 171, 171, 171,32767, 220, 222, 167,32767, 171,32767,
+ 486,32767,32767,32767,32767,32767, 518, 343,32767,32767,
+ 116,32767,32767,32767, 555,32767, 513,32767, 116,32767,
+ 32767,32767,32767, 356, 335, 336, 337,32767,32767, 517,
+ 511, 470, 471, 472, 473,32767, 464, 465, 466, 469,
+ 32767,32767,32767,32767,32767,32767,32767,32767, 425, 431,
+ 431,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767, 516, 515,32767, 410, 494, 186, 184,
+ 184,32767, 206, 206,32767,32767, 188, 487, 506,32767,
+ 188, 173,32767, 398, 175, 494,32767,32767, 238,32767,
+ 238,32767, 398, 238,32767,32767, 238,32767, 411, 435,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767, 377, 378, 489, 502,32767,
+ 503,32767, 409, 341, 342, 344, 320,32767, 322, 367,
+ 368, 369, 370, 371, 372, 373, 375,32767, 415,32767,
+ 418,32767,32767,32767, 255,32767, 553,32767,32767, 304,
+ 553,32767,32767,32767, 547,32767,32767, 298,32767,32767,
+ 32767,32767, 251,32767, 169,32767, 537,32767, 554,32767,
+ 511,32767, 340,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767, 512,32767,32767,32767,32767, 227,32767, 448,
+ 32767, 116,32767,32767,32767, 187,32767,32767, 302, 246,
+ 32767,32767, 546,32767,32767,32767,32767,32767,32767,32767,
+ 32767, 114,32767, 170,32767,32767,32767, 189,32767,32767,
+ 511,32767,32767,32767,32767,32767,32767,32767, 293,32767,
+ 32767,32767,32767,32767,32767,32767, 511,32767,32767, 231,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767, 411,
+ 32767, 274,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767, 127, 127, 3, 127, 127, 258, 3,
+ 258, 127, 258, 258, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 214, 217, 206, 206, 164, 127,
+ 127, 266
+ );
+
+ protected $goto = array(
+ 166, 140, 140, 140, 166, 187, 168, 144, 147, 141,
+ 142, 143, 149, 163, 163, 163, 163, 144, 144, 165,
+ 165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
+ 138, 159, 160, 161, 162, 184, 139, 185, 493, 494,
+ 377, 495, 499, 500, 501, 502, 503, 504, 505, 506,
+ 967, 164, 145, 146, 148, 171, 176, 186, 203, 253,
+ 256, 258, 260, 263, 264, 265, 266, 267, 268, 269,
+ 277, 278, 279, 280, 303, 304, 328, 329, 330, 394,
+ 395, 396, 542, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 150, 151, 152,
+ 167, 153, 169, 154, 204, 170, 155, 156, 157, 205,
+ 158, 136, 620, 560, 756, 560, 560, 560, 560, 560,
+ 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
+ 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
+ 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
+ 560, 560, 560, 560, 560, 560, 560, 560, 560, 1108,
+ 628, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1108,
+ 1108, 1108, 1108, 1108, 1108, 757, 888, 888, 508, 1200,
+ 1200, 400, 606, 508, 536, 536, 568, 532, 534, 534,
+ 496, 498, 524, 540, 569, 572, 583, 590, 852, 852,
+ 852, 852, 847, 853, 174, 585, 519, 600, 601, 177,
+ 178, 179, 401, 402, 403, 404, 173, 202, 206, 208,
+ 257, 259, 261, 262, 270, 271, 272, 273, 274, 275,
+ 281, 282, 283, 284, 305, 306, 331, 332, 333, 406,
+ 407, 408, 409, 175, 180, 254, 255, 181, 182, 183,
+ 497, 497, 785, 497, 497, 497, 497, 497, 497, 497,
+ 497, 497, 497, 497, 497, 497, 497, 509, 578, 582,
+ 626, 749, 509, 544, 545, 546, 547, 548, 549, 550,
+ 551, 553, 586, 338, 559, 321, 559, 559, 559, 559,
+ 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
+ 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
+ 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
+ 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
+ 530, 349, 655, 555, 587, 352, 414, 591, 575, 604,
+ 885, 611, 612, 881, 616, 617, 623, 625, 630, 632,
+ 298, 296, 296, 296, 298, 290, 299, 944, 610, 816,
+ 1170, 613, 436, 436, 375, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436, 436, 1072,
+ 1084, 1083, 945, 1065, 1072, 895, 895, 895, 895, 1178,
+ 895, 895, 1212, 1212, 1178, 388, 858, 561, 755, 1072,
+ 1072, 1072, 1072, 1072, 1072, 3, 4, 384, 384, 384,
+ 1212, 874, 856, 854, 856, 654, 465, 511, 883, 878,
+ 1089, 541, 384, 537, 384, 567, 384, 1026, 19, 15,
+ 371, 384, 1226, 510, 1204, 1192, 1192, 1192, 510, 906,
+ 372, 522, 533, 554, 912, 514, 1068, 1069, 13, 1065,
+ 378, 912, 1158, 594, 23, 965, 386, 386, 386, 602,
+ 1066, 1169, 1066, 937, 447, 449, 631, 752, 1177, 1067,
+ 1109, 614, 935, 1177, 605, 1197, 391, 1211, 1211, 543,
+ 892, 386, 1194, 1194, 1194, 399, 518, 1016, 901, 389,
+ 771, 529, 752, 340, 752, 1211, 518, 518, 385, 781,
+ 1214, 770, 772, 1063, 910, 774, 1058, 1176, 659, 953,
+ 514, 782, 862, 915, 450, 573, 1155, 0, 463, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 513, 528, 0, 0, 0, 0,
+ 513, 0, 528, 0, 350, 351, 0, 609, 512, 515,
+ 438, 439, 1064, 618, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 779, 1219, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 777, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 523, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 301, 301
+ );
+
+ protected $gotoCheck = array(
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 57, 68, 15, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 126,
+ 9, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 16, 76, 76, 68, 76,
+ 76, 51, 51, 68, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 68, 68,
+ 68, 68, 68, 68, 27, 66, 101, 66, 66, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
+ 117, 117, 29, 117, 117, 117, 117, 117, 117, 117,
+ 117, 117, 117, 117, 117, 117, 117, 117, 61, 61,
+ 61, 6, 117, 110, 110, 110, 110, 110, 110, 110,
+ 110, 110, 110, 125, 57, 125, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 32, 71, 32, 32, 69, 69, 69, 32, 40, 40,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 5, 5, 5, 5, 5, 5, 5, 97, 62, 50,
+ 81, 62, 57, 57, 62, 57, 57, 57, 57, 57,
+ 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+ 124, 124, 97, 81, 57, 57, 57, 57, 57, 118,
+ 57, 57, 142, 142, 118, 12, 33, 12, 14, 57,
+ 57, 57, 57, 57, 57, 30, 30, 13, 13, 13,
+ 142, 14, 14, 14, 14, 14, 57, 14, 14, 14,
+ 34, 2, 13, 109, 13, 2, 13, 34, 34, 34,
+ 34, 13, 13, 122, 140, 9, 9, 9, 122, 83,
+ 58, 58, 58, 34, 13, 13, 81, 81, 58, 81,
+ 46, 13, 131, 127, 34, 101, 123, 123, 123, 34,
+ 81, 81, 81, 8, 8, 8, 8, 11, 119, 81,
+ 8, 8, 8, 119, 49, 138, 48, 141, 141, 47,
+ 78, 123, 119, 119, 119, 123, 47, 102, 80, 17,
+ 23, 9, 11, 18, 11, 141, 47, 47, 11, 23,
+ 141, 23, 24, 115, 84, 25, 113, 119, 73, 99,
+ 13, 26, 70, 85, 64, 65, 130, -1, 108, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 9, 9, -1, -1, -1, -1,
+ 9, -1, 9, -1, 71, 71, -1, 13, 9, 9,
+ 9, 9, 13, 13, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 9, 9, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 9, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 101, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 5, 5
+ );
+
+ protected $gotoBase = array(
+ 0, 0, -184, 0, 0, 356, 290, 0, 488, 149,
+ 0, 182, 85, 118, 426, 112, 203, 179, 208, 0,
+ 0, 0, 0, 162, 190, 198, 120, 27, 0, 272,
+ -224, 0, -274, 406, 32, 0, 0, 0, 0, 0,
+ 330, 0, 0, -24, 0, 0, 440, 485, 213, 218,
+ 371, -74, 0, 0, 0, 0, 0, 107, 110, 0,
+ 0, -11, -72, 0, 104, 95, -405, 0, -94, 41,
+ 119, -82, 0, 164, 0, 0, -79, 0, 197, 0,
+ 204, 43, 0, 441, 171, 121, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 100, 0, 115,
+ 0, 195, 210, 0, 0, 0, 0, 0, 86, 427,
+ 259, 0, 0, 116, 0, 174, 0, -5, 117, 196,
+ 0, 0, 161, 170, 93, -21, -48, 273, 0, 0,
+ 91, 271, 0, 0, 0, 0, 0, 0, 216, 0,
+ 437, 187, 102, 0, 0
+ );
+
+ protected $gotoDefault = array(
+ -32768, 467, 663, 2, 664, 834, 739, 747, 597, 481,
+ 629, 581, 380, 1188, 791, 792, 793, 381, 367, 482,
+ 379, 410, 405, 780, 773, 775, 783, 172, 411, 786,
+ 1, 788, 517, 824, 1017, 364, 796, 365, 589, 798,
+ 526, 800, 801, 137, 382, 383, 527, 483, 390, 576,
+ 815, 276, 387, 817, 366, 818, 827, 370, 464, 454,
+ 459, 556, 608, 432, 446, 570, 564, 535, 1081, 565,
+ 861, 348, 869, 660, 877, 880, 484, 557, 891, 451,
+ 899, 1094, 397, 905, 911, 916, 287, 919, 417, 412,
+ 584, 924, 925, 5, 929, 621, 622, 8, 312, 952,
+ 598, 966, 420, 1036, 1038, 485, 486, 521, 458, 507,
+ 525, 487, 1059, 440, 413, 1062, 488, 489, 433, 434,
+ 1078, 354, 1163, 353, 448, 320, 1150, 579, 1113, 455,
+ 1203, 1159, 347, 490, 491, 376, 1182, 392, 1198, 437,
+ 1205, 1213, 343, 539, 566
+ );
+
+ protected $ruleToNonTerminal = array(
+ 0, 1, 3, 3, 2, 5, 5, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 7, 7, 7,
+ 7, 7, 7, 7, 8, 8, 9, 10, 11, 11,
+ 12, 12, 13, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 18, 18, 19, 19, 21, 21,
+ 17, 17, 22, 22, 23, 23, 24, 24, 25, 25,
+ 20, 20, 26, 28, 28, 29, 30, 30, 32, 31,
+ 31, 31, 31, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 14, 14, 54, 54, 56, 55, 55, 48,
+ 48, 58, 58, 59, 59, 60, 60, 15, 16, 16,
+ 16, 63, 63, 63, 64, 64, 67, 67, 65, 65,
+ 69, 69, 41, 41, 50, 50, 53, 53, 53, 52,
+ 52, 70, 42, 42, 42, 42, 71, 71, 72, 72,
+ 73, 73, 39, 39, 35, 35, 74, 37, 37, 75,
+ 36, 36, 38, 38, 49, 49, 49, 61, 61, 77,
+ 77, 78, 78, 80, 80, 80, 79, 79, 62, 62,
+ 81, 81, 81, 82, 82, 83, 83, 83, 44, 44,
+ 84, 84, 84, 45, 45, 85, 85, 86, 86, 66,
+ 87, 87, 87, 87, 92, 92, 93, 93, 94, 94,
+ 94, 94, 94, 95, 96, 96, 91, 91, 88, 88,
+ 90, 90, 98, 98, 97, 97, 97, 97, 97, 97,
+ 89, 89, 100, 99, 99, 46, 46, 40, 40, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 34, 34, 47, 47, 105,
+ 105, 106, 106, 106, 106, 112, 101, 101, 108, 108,
+ 114, 114, 115, 116, 116, 116, 116, 116, 116, 68,
+ 68, 57, 57, 57, 57, 102, 102, 120, 120, 117,
+ 117, 121, 121, 121, 121, 103, 103, 103, 107, 107,
+ 107, 113, 113, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 27, 27, 27, 27,
+ 27, 27, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 111, 111, 104, 104,
+ 104, 104, 127, 127, 130, 130, 129, 129, 131, 131,
+ 51, 51, 51, 51, 133, 133, 132, 132, 132, 132,
+ 132, 134, 134, 119, 119, 122, 122, 118, 118, 136,
+ 135, 135, 135, 135, 123, 123, 123, 123, 110, 110,
+ 124, 124, 124, 124, 76, 137, 137, 138, 138, 138,
+ 109, 109, 139, 139, 140, 140, 140, 140, 140, 125,
+ 125, 125, 125, 142, 143, 141, 141, 141, 141, 141,
+ 141, 141, 144, 144, 144
+ );
+
+ protected $ruleToLength = array(
+ 1, 1, 2, 0, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 3, 5, 4,
+ 3, 4, 2, 3, 1, 1, 7, 6, 3, 1,
+ 3, 1, 3, 1, 1, 3, 1, 3, 1, 2,
+ 3, 1, 3, 3, 1, 3, 2, 0, 1, 1,
+ 1, 1, 1, 3, 5, 8, 3, 5, 9, 3,
+ 2, 3, 2, 3, 2, 3, 3, 3, 3, 1,
+ 2, 2, 5, 7, 9, 5, 6, 3, 3, 2,
+ 2, 1, 1, 1, 0, 2, 8, 0, 4, 1,
+ 3, 0, 1, 0, 1, 0, 1, 10, 7, 6,
+ 5, 1, 2, 2, 0, 2, 0, 2, 0, 2,
+ 1, 3, 1, 4, 1, 4, 1, 1, 4, 1,
+ 3, 3, 3, 4, 4, 5, 0, 2, 4, 3,
+ 1, 1, 1, 4, 0, 2, 3, 0, 2, 4,
+ 0, 2, 0, 3, 1, 2, 1, 1, 0, 1,
+ 3, 4, 6, 1, 1, 1, 0, 1, 0, 2,
+ 2, 3, 3, 1, 3, 1, 2, 2, 3, 1,
+ 1, 2, 4, 3, 1, 1, 3, 2, 0, 1,
+ 3, 3, 9, 3, 1, 3, 0, 2, 4, 5,
+ 4, 4, 4, 3, 1, 1, 1, 3, 1, 1,
+ 0, 1, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 3, 1, 1, 3, 3, 1, 0, 1, 1,
+ 3, 3, 4, 4, 1, 2, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
+ 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 2, 2, 2, 2, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 1, 3, 5, 4, 3,
+ 4, 4, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 1, 1, 3,
+ 2, 1, 2, 10, 11, 3, 3, 2, 4, 4,
+ 3, 4, 4, 4, 4, 7, 3, 2, 0, 4,
+ 1, 3, 2, 2, 4, 6, 2, 2, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 3, 3, 4, 4, 0, 2, 1, 0, 1,
+ 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 2, 1, 3, 1, 4,
+ 3, 1, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 2, 2, 2, 2, 3, 3, 3, 3, 3, 3,
+ 3, 3, 5, 4, 4, 3, 1, 3, 1, 1,
+ 3, 3, 0, 2, 0, 1, 3, 1, 3, 1,
+ 1, 1, 1, 1, 6, 4, 3, 4, 2, 4,
+ 4, 1, 3, 1, 2, 1, 1, 4, 1, 1,
+ 3, 6, 4, 4, 4, 4, 1, 4, 0, 1,
+ 1, 3, 1, 1, 4, 3, 1, 1, 1, 0,
+ 0, 2, 3, 1, 3, 1, 4, 2, 2, 2,
+ 2, 1, 2, 1, 1, 1, 4, 3, 3, 3,
+ 6, 3, 1, 1, 1
+ );
+
+ protected function initReduceCallbacks() {
+ $this->reduceCallbacks = [
+ 0 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 1 => function ($stackPos) {
+ $this->semValue = $this->handleNamespaces($this->semStack[$stackPos-(1-1)]);
+ },
+ 2 => function ($stackPos) {
+ if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
+ },
+ 3 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 4 => function ($stackPos) {
+ $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
+ if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 5 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 6 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 7 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 8 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 9 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 10 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 11 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 12 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 13 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 14 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 15 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 16 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 17 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 18 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 19 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 20 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 21 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 22 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 23 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 24 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 25 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 26 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 27 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 28 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 29 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 30 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 31 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 32 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 33 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 34 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 35 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 36 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 37 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 38 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 39 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 40 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 41 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 42 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 43 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 44 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 45 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 46 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 47 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 48 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 49 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 50 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 51 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 52 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 53 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 54 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 55 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 56 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 57 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 58 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 59 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 60 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 61 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 62 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 63 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 64 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 65 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 66 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 67 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 68 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 69 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 70 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 71 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 72 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 73 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 74 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 75 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 76 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 77 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 78 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 79 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 80 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 81 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 82 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 83 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 84 => function ($stackPos) {
+ $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 85 => function ($stackPos) {
+ $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 86 => function ($stackPos) {
+ $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 87 => function ($stackPos) {
+ $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 88 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 89 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 90 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 91 => function ($stackPos) {
+ $this->semValue = new Name(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 92 => function ($stackPos) {
+ $this->semValue = new Expr\Variable(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 93 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 94 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 95 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 96 => function ($stackPos) {
+ $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 97 => function ($stackPos) {
+ $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(3-2)], null, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
+ $this->checkNamespace($this->semValue);
+ },
+ 98 => function ($stackPos) {
+ $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
+ $this->checkNamespace($this->semValue);
+ },
+ 99 => function ($stackPos) {
+ $this->semValue = new Stmt\Namespace_(null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
+ $this->checkNamespace($this->semValue);
+ },
+ 100 => function ($stackPos) {
+ $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 101 => function ($stackPos) {
+ $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 102 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 103 => function ($stackPos) {
+ $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 104 => function ($stackPos) {
+ $this->semValue = Stmt\Use_::TYPE_FUNCTION;
+ },
+ 105 => function ($stackPos) {
+ $this->semValue = Stmt\Use_::TYPE_CONSTANT;
+ },
+ 106 => function ($stackPos) {
+ $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->semStack[$stackPos-(7-2)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ },
+ 107 => function ($stackPos) {
+ $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 108 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 109 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 110 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 111 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 112 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 113 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 114 => function ($stackPos) {
+ $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
+ },
+ 115 => function ($stackPos) {
+ $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
+ },
+ 116 => function ($stackPos) {
+ $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
+ },
+ 117 => function ($stackPos) {
+ $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
+ },
+ 118 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
+ },
+ 119 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
+ },
+ 120 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 121 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 122 => function ($stackPos) {
+ $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 123 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 124 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 125 => function ($stackPos) {
+ $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 126 => function ($stackPos) {
+ if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
+ },
+ 127 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 128 => function ($stackPos) {
+ $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
+ if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 129 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 130 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 131 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 132 => function ($stackPos) {
+ throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 133 => function ($stackPos) {
+
+ if ($this->semStack[$stackPos-(3-2)]) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)]; $attrs = $this->startAttributeStack[$stackPos-(3-1)]; $stmts = $this->semValue; if (!empty($attrs['comments'])) {$stmts[0]->setAttribute('comments', array_merge($attrs['comments'], $stmts[0]->getAttribute('comments', []))); };
+ } else {
+ $startAttributes = $this->startAttributeStack[$stackPos-(3-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
+ if (null === $this->semValue) { $this->semValue = array(); }
+ }
+
+ },
+ 134 => function ($stackPos) {
+ $this->semValue = new Stmt\If_($this->semStack[$stackPos-(5-2)], ['stmts' => is_array($this->semStack[$stackPos-(5-3)]) ? $this->semStack[$stackPos-(5-3)] : array($this->semStack[$stackPos-(5-3)]), 'elseifs' => $this->semStack[$stackPos-(5-4)], 'else' => $this->semStack[$stackPos-(5-5)]], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 135 => function ($stackPos) {
+ $this->semValue = new Stmt\If_($this->semStack[$stackPos-(8-2)], ['stmts' => $this->semStack[$stackPos-(8-4)], 'elseifs' => $this->semStack[$stackPos-(8-5)], 'else' => $this->semStack[$stackPos-(8-6)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ },
+ 136 => function ($stackPos) {
+ $this->semValue = new Stmt\While_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 137 => function ($stackPos) {
+ $this->semValue = new Stmt\Do_($this->semStack[$stackPos-(5-4)], is_array($this->semStack[$stackPos-(5-2)]) ? $this->semStack[$stackPos-(5-2)] : array($this->semStack[$stackPos-(5-2)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 138 => function ($stackPos) {
+ $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos-(9-3)], 'cond' => $this->semStack[$stackPos-(9-5)], 'loop' => $this->semStack[$stackPos-(9-7)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ },
+ 139 => function ($stackPos) {
+ $this->semValue = new Stmt\Switch_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 140 => function ($stackPos) {
+ $this->semValue = new Stmt\Break_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 141 => function ($stackPos) {
+ $this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 142 => function ($stackPos) {
+ $this->semValue = new Stmt\Continue_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 143 => function ($stackPos) {
+ $this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 144 => function ($stackPos) {
+ $this->semValue = new Stmt\Return_(null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 145 => function ($stackPos) {
+ $this->semValue = new Stmt\Return_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 146 => function ($stackPos) {
+ $this->semValue = new Stmt\Global_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 147 => function ($stackPos) {
+ $this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 148 => function ($stackPos) {
+ $this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 149 => function ($stackPos) {
+ $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 150 => function ($stackPos) {
+ $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 151 => function ($stackPos) {
+ $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 152 => function ($stackPos) {
+ $this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 153 => function ($stackPos) {
+ $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos-(7-5)][1], 'stmts' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ },
+ 154 => function ($stackPos) {
+ $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(9-3)], $this->semStack[$stackPos-(9-7)][0], ['keyVar' => $this->semStack[$stackPos-(9-5)], 'byRef' => $this->semStack[$stackPos-(9-7)][1], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ },
+ 155 => function ($stackPos) {
+ $this->semValue = new Stmt\Declare_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 156 => function ($stackPos) {
+ $this->semValue = new Stmt\TryCatch($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkTryCatch($this->semValue);
+ },
+ 157 => function ($stackPos) {
+ $this->semValue = new Stmt\Throw_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 158 => function ($stackPos) {
+ $this->semValue = new Stmt\Goto_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 159 => function ($stackPos) {
+ $this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 160 => function ($stackPos) {
+ $this->semValue = new Stmt\Expression($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 161 => function ($stackPos) {
+ $this->semValue = array(); /* means: no statement */
+ },
+ 162 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 163 => function ($stackPos) {
+ $startAttributes = $this->startAttributeStack[$stackPos-(1-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
+ if ($this->semValue === null) $this->semValue = array(); /* means: no statement */
+ },
+ 164 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 165 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 166 => function ($stackPos) {
+ $this->semValue = new Stmt\Catch_(array($this->semStack[$stackPos-(8-3)]), $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-7)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ },
+ 167 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 168 => function ($stackPos) {
+ $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 169 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 170 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 171 => function ($stackPos) {
+ $this->semValue = false;
+ },
+ 172 => function ($stackPos) {
+ $this->semValue = true;
+ },
+ 173 => function ($stackPos) {
+ $this->semValue = false;
+ },
+ 174 => function ($stackPos) {
+ $this->semValue = true;
+ },
+ 175 => function ($stackPos) {
+ $this->semValue = false;
+ },
+ 176 => function ($stackPos) {
+ $this->semValue = true;
+ },
+ 177 => function ($stackPos) {
+ $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(10-3)], ['byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-5)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ },
+ 178 => function ($stackPos) {
+ $this->semValue = new Stmt\Class_($this->semStack[$stackPos-(7-2)], ['type' => $this->semStack[$stackPos-(7-1)], 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ $this->checkClass($this->semValue, $stackPos-(7-2));
+ },
+ 179 => function ($stackPos) {
+ $this->semValue = new Stmt\Interface_($this->semStack[$stackPos-(6-2)], ['extends' => $this->semStack[$stackPos-(6-3)], 'stmts' => $this->semStack[$stackPos-(6-5)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ $this->checkInterface($this->semValue, $stackPos-(6-2));
+ },
+ 180 => function ($stackPos) {
+ $this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(5-2)], ['stmts' => $this->semStack[$stackPos-(5-4)]], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 181 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 182 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+ },
+ 183 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+ },
+ 184 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 185 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 186 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 187 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 188 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 189 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 190 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 191 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 192 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ },
+ 193 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 194 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ },
+ 195 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 196 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ },
+ 197 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 198 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 199 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 200 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 201 => function ($stackPos) {
+ $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 202 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 203 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-3)];
+ },
+ 204 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 205 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(5-3)];
+ },
+ 206 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 207 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 208 => function ($stackPos) {
+ $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 209 => function ($stackPos) {
+ $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 210 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 211 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 212 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ },
+ 213 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 214 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 215 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 216 => function ($stackPos) {
+ $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(3-2)], is_array($this->semStack[$stackPos-(3-3)]) ? $this->semStack[$stackPos-(3-3)] : array($this->semStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 217 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 218 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 219 => function ($stackPos) {
+ $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 220 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 221 => function ($stackPos) {
+ $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 222 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 223 => function ($stackPos) {
+ $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 224 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+ },
+ 225 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
+ },
+ 226 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+ },
+ 227 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 228 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 229 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 230 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 231 => function ($stackPos) {
+ $this->semValue = new Node\Param($this->semStack[$stackPos-(4-4)], null, $this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes); $this->checkParam($this->semValue);
+ },
+ 232 => function ($stackPos) {
+ $this->semValue = new Node\Param($this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-3)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkParam($this->semValue);
+ },
+ 233 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 234 => function ($stackPos) {
+ $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 235 => function ($stackPos) {
+ $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 236 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 237 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 238 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 239 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 240 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 241 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 242 => function ($stackPos) {
+ $this->semValue = array(new Node\Arg($this->semStack[$stackPos-(3-2)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes));
+ },
+ 243 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 244 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 245 => function ($stackPos) {
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 246 => function ($stackPos) {
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 247 => function ($stackPos) {
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 248 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 249 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 250 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 251 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 252 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 253 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 254 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 255 => function ($stackPos) {
+ $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 256 => function ($stackPos) {
+ $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 257 => function ($stackPos) {
+ if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
+ },
+ 258 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 259 => function ($stackPos) {
+ $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
+ if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 260 => function ($stackPos) {
+ $this->semValue = new Stmt\Property($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkProperty($this->semValue, $stackPos-(3-1));
+ },
+ 261 => function ($stackPos) {
+ $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(3-2)], 0, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 262 => function ($stackPos) {
+ $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(9-4)], ['type' => $this->semStack[$stackPos-(9-1)], 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ $this->checkClassMethod($this->semValue, $stackPos-(9-1));
+ },
+ 263 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 264 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 265 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 266 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 267 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 268 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 269 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 270 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 271 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 272 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 273 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ },
+ 274 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 275 => function ($stackPos) {
+ $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
+ },
+ 276 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 277 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 278 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 279 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 280 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 281 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 282 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 283 => function ($stackPos) {
+ $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
+ },
+ 284 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
+ },
+ 285 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
+ },
+ 286 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
+ },
+ 287 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_STATIC;
+ },
+ 288 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+ },
+ 289 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+ },
+ 290 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 291 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 292 => function ($stackPos) {
+ $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 293 => function ($stackPos) {
+ $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 294 => function ($stackPos) {
+ $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 295 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 296 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 297 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 298 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 299 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 300 => function ($stackPos) {
+ $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 301 => function ($stackPos) {
+ $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 302 => function ($stackPos) {
+ $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 303 => function ($stackPos) {
+ $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 304 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 305 => function ($stackPos) {
+ $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 306 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 307 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 308 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 309 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 310 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 311 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 312 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 313 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 314 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 315 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 316 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 317 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 318 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 319 => function ($stackPos) {
+ $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 320 => function ($stackPos) {
+ $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 321 => function ($stackPos) {
+ $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 322 => function ($stackPos) {
+ $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 323 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 324 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 325 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 326 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 327 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 328 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 329 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 330 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 331 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 332 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 333 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 334 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 335 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 336 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 337 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 338 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 339 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 340 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 341 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 342 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 343 => function ($stackPos) {
+ $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 344 => function ($stackPos) {
+ $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 345 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 346 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 347 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 348 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 349 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 350 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 351 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 352 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 353 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 354 => function ($stackPos) {
+ $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 355 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 356 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 357 => function ($stackPos) {
+ $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 358 => function ($stackPos) {
+ $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 359 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 360 => function ($stackPos) {
+ $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 361 => function ($stackPos) {
+ $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 362 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 363 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 364 => function ($stackPos) {
+ $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 365 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 366 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 367 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 368 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
+ $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos-(2-1)]);
+ $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $attrs);
+ },
+ 369 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 370 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 371 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 372 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 373 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 374 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
+ $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
+ $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs);
+ },
+ 375 => function ($stackPos) {
+ $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 376 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 377 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 378 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 379 => function ($stackPos) {
+ $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 380 => function ($stackPos) {
+ $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 381 => function ($stackPos) {
+ $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 382 => function ($stackPos) {
+ $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 383 => function ($stackPos) {
+ $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(10-2)], 'params' => $this->semStack[$stackPos-(10-4)], 'uses' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-7)], 'stmts' => $this->semStack[$stackPos-(10-9)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ },
+ 384 => function ($stackPos) {
+ $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(11-3)], 'params' => $this->semStack[$stackPos-(11-5)], 'uses' => $this->semStack[$stackPos-(11-7)], 'returnType' => $this->semStack[$stackPos-(11-8)], 'stmts' => $this->semStack[$stackPos-(11-10)]], $this->startAttributeStack[$stackPos-(11-1)] + $this->endAttributes);
+ },
+ 385 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 386 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 387 => function ($stackPos) {
+ $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 388 => function ($stackPos) {
+ $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 389 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG;
+ $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs);
+ },
+ 390 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT;
+ $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs);
+ },
+ 391 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 392 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(4-1)][0] === "'" || ($this->semStack[$stackPos-(4-1)][1] === "'" && ($this->semStack[$stackPos-(4-1)][0] === 'b' || $this->semStack[$stackPos-(4-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
+ $this->semValue = new Expr\ArrayDimFetch(new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(4-1)]), $attrs), $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 393 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 394 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 395 => function ($stackPos) {
+ $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(7-3)], 'implements' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes), $this->semStack[$stackPos-(7-2)]);
+ $this->checkClass($this->semValue[0], -1);
+ },
+ 396 => function ($stackPos) {
+ $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 397 => function ($stackPos) {
+ list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 398 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 399 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-3)];
+ },
+ 400 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 401 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 402 => function ($stackPos) {
+ $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 403 => function ($stackPos) {
+ $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 404 => function ($stackPos) {
+ $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 405 => function ($stackPos) {
+ $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 406 => function ($stackPos) {
+ $this->semValue = $this->fixupPhp5StaticPropCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 407 => function ($stackPos) {
+ $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 408 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 409 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 410 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 411 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 412 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 413 => function ($stackPos) {
+ $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 414 => function ($stackPos) {
+ $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 415 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 416 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 417 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 418 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 419 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 420 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 421 => function ($stackPos) {
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 422 => function ($stackPos) {
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 423 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 424 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 425 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 426 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 427 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 428 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 429 => function ($stackPos) {
+ $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`', false), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
+ },
+ 430 => function ($stackPos) {
+ foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', false); } }; $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 431 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 432 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 433 => function ($stackPos) {
+ $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes, true);
+ },
+ 434 => function ($stackPos) {
+ $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 435 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
+ $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)], false), $attrs);
+ },
+ 436 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 437 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 438 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 439 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 440 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 441 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 442 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 443 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 444 => function ($stackPos) {
+ $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], false);
+ },
+ 445 => function ($stackPos) {
+ $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], false);
+ },
+ 446 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 447 => function ($stackPos) {
+ $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 448 => function ($stackPos) {
+ $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 449 => function ($stackPos) {
+ $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 450 => function ($stackPos) {
+ $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 451 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 452 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 453 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 454 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 455 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 456 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 457 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 458 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 459 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 460 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 461 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 462 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 463 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 464 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 465 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 466 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 467 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 468 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 469 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 470 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 471 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 472 => function ($stackPos) {
+ $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 473 => function ($stackPos) {
+ $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 474 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 475 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 476 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 477 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 478 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 479 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 480 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 481 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 482 => function ($stackPos) {
+ $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 483 => function ($stackPos) {
+ $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 484 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 485 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 486 => function ($stackPos) {
+ $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 487 => function ($stackPos) {
+ $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 488 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 489 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 490 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
+ foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
+ },
+ 491 => function ($stackPos) {
+ $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
+ },
+ 492 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 493 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 494 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 495 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 496 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 497 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 498 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 499 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 500 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 501 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 502 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 503 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 504 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 505 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 506 => function ($stackPos) {
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 507 => function ($stackPos) {
+ $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 508 => function ($stackPos) {
+ $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 509 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 510 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 511 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 512 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 513 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 514 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 515 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 516 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 517 => function ($stackPos) {
+ $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 518 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 519 => function ($stackPos) {
+ $var = substr($this->semStack[$stackPos-(1-1)], 1); $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
+ },
+ 520 => function ($stackPos) {
+ $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 521 => function ($stackPos) {
+ $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(6-1)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 522 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 523 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 524 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 525 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 526 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 527 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 528 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 529 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 530 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 531 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 532 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 533 => function ($stackPos) {
+ $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+ },
+ 534 => function ($stackPos) {
+ $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 535 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 536 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 537 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 538 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 539 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 540 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 541 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 542 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 543 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 544 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 545 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 546 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 547 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 548 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 549 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 550 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 551 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 552 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
+ },
+ 553 => function ($stackPos) {
+ $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 554 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 555 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 556 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 557 => function ($stackPos) {
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 558 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 559 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 560 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 561 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 562 => function ($stackPos) {
+ $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 563 => function ($stackPos) {
+ $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 564 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ ];
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
new file mode 100644
index 000000000..7a0854b30
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Php7.php
@@ -0,0 +1,2804 @@
+<?php
+
+namespace PhpParser\Parser;
+
+use PhpParser\Error;
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Name;
+use PhpParser\Node\Scalar;
+use PhpParser\Node\Stmt;
+
+/* This is an automatically GENERATED file, which should not be manually edited.
+ * Instead edit one of the following:
+ * * the grammar files grammar/php5.y or grammar/php7.y
+ * * the skeleton file grammar/parser.template
+ * * the preprocessing script grammar/rebuildParsers.php
+ */
+class Php7 extends \PhpParser\ParserAbstract
+{
+ protected $tokenToSymbolMapSize = 396;
+ protected $actionTableSize = 1196;
+ protected $gotoTableSize = 545;
+
+ protected $invalidSymbol = 168;
+ protected $errorSymbol = 1;
+ protected $defaultAction = -32766;
+ protected $unexpectedTokenRule = 32767;
+
+ protected $YY2TBLSTATE = 420;
+ protected $numNonLeafStates = 710;
+
+ protected $symbolToName = array(
+ "EOF",
+ "error",
+ "T_THROW",
+ "T_INCLUDE",
+ "T_INCLUDE_ONCE",
+ "T_EVAL",
+ "T_REQUIRE",
+ "T_REQUIRE_ONCE",
+ "','",
+ "T_LOGICAL_OR",
+ "T_LOGICAL_XOR",
+ "T_LOGICAL_AND",
+ "T_PRINT",
+ "T_YIELD",
+ "T_DOUBLE_ARROW",
+ "T_YIELD_FROM",
+ "'='",
+ "T_PLUS_EQUAL",
+ "T_MINUS_EQUAL",
+ "T_MUL_EQUAL",
+ "T_DIV_EQUAL",
+ "T_CONCAT_EQUAL",
+ "T_MOD_EQUAL",
+ "T_AND_EQUAL",
+ "T_OR_EQUAL",
+ "T_XOR_EQUAL",
+ "T_SL_EQUAL",
+ "T_SR_EQUAL",
+ "T_POW_EQUAL",
+ "T_COALESCE_EQUAL",
+ "'?'",
+ "':'",
+ "T_COALESCE",
+ "T_BOOLEAN_OR",
+ "T_BOOLEAN_AND",
+ "'|'",
+ "'^'",
+ "T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG",
+ "T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG",
+ "T_IS_EQUAL",
+ "T_IS_NOT_EQUAL",
+ "T_IS_IDENTICAL",
+ "T_IS_NOT_IDENTICAL",
+ "T_SPACESHIP",
+ "'<'",
+ "T_IS_SMALLER_OR_EQUAL",
+ "'>'",
+ "T_IS_GREATER_OR_EQUAL",
+ "T_SL",
+ "T_SR",
+ "'+'",
+ "'-'",
+ "'.'",
+ "'*'",
+ "'/'",
+ "'%'",
+ "'!'",
+ "T_INSTANCEOF",
+ "'~'",
+ "T_INC",
+ "T_DEC",
+ "T_INT_CAST",
+ "T_DOUBLE_CAST",
+ "T_STRING_CAST",
+ "T_ARRAY_CAST",
+ "T_OBJECT_CAST",
+ "T_BOOL_CAST",
+ "T_UNSET_CAST",
+ "'@'",
+ "T_POW",
+ "'['",
+ "T_NEW",
+ "T_CLONE",
+ "T_EXIT",
+ "T_IF",
+ "T_ELSEIF",
+ "T_ELSE",
+ "T_ENDIF",
+ "T_LNUMBER",
+ "T_DNUMBER",
+ "T_STRING",
+ "T_STRING_VARNAME",
+ "T_VARIABLE",
+ "T_NUM_STRING",
+ "T_INLINE_HTML",
+ "T_ENCAPSED_AND_WHITESPACE",
+ "T_CONSTANT_ENCAPSED_STRING",
+ "T_ECHO",
+ "T_DO",
+ "T_WHILE",
+ "T_ENDWHILE",
+ "T_FOR",
+ "T_ENDFOR",
+ "T_FOREACH",
+ "T_ENDFOREACH",
+ "T_DECLARE",
+ "T_ENDDECLARE",
+ "T_AS",
+ "T_SWITCH",
+ "T_MATCH",
+ "T_ENDSWITCH",
+ "T_CASE",
+ "T_DEFAULT",
+ "T_BREAK",
+ "T_CONTINUE",
+ "T_GOTO",
+ "T_FUNCTION",
+ "T_FN",
+ "T_CONST",
+ "T_RETURN",
+ "T_TRY",
+ "T_CATCH",
+ "T_FINALLY",
+ "T_USE",
+ "T_INSTEADOF",
+ "T_GLOBAL",
+ "T_STATIC",
+ "T_ABSTRACT",
+ "T_FINAL",
+ "T_PRIVATE",
+ "T_PROTECTED",
+ "T_PUBLIC",
+ "T_READONLY",
+ "T_VAR",
+ "T_UNSET",
+ "T_ISSET",
+ "T_EMPTY",
+ "T_HALT_COMPILER",
+ "T_CLASS",
+ "T_TRAIT",
+ "T_INTERFACE",
+ "T_ENUM",
+ "T_EXTENDS",
+ "T_IMPLEMENTS",
+ "T_OBJECT_OPERATOR",
+ "T_NULLSAFE_OBJECT_OPERATOR",
+ "T_LIST",
+ "T_ARRAY",
+ "T_CALLABLE",
+ "T_CLASS_C",
+ "T_TRAIT_C",
+ "T_METHOD_C",
+ "T_FUNC_C",
+ "T_LINE",
+ "T_FILE",
+ "T_START_HEREDOC",
+ "T_END_HEREDOC",
+ "T_DOLLAR_OPEN_CURLY_BRACES",
+ "T_CURLY_OPEN",
+ "T_PAAMAYIM_NEKUDOTAYIM",
+ "T_NAMESPACE",
+ "T_NS_C",
+ "T_DIR",
+ "T_NS_SEPARATOR",
+ "T_ELLIPSIS",
+ "T_NAME_FULLY_QUALIFIED",
+ "T_NAME_QUALIFIED",
+ "T_NAME_RELATIVE",
+ "T_ATTRIBUTE",
+ "';'",
+ "']'",
+ "'{'",
+ "'}'",
+ "'('",
+ "')'",
+ "'`'",
+ "'\"'",
+ "'$'"
+ );
+
+ protected $tokenToSymbol = array(
+ 0, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 56, 166, 168, 167, 55, 168, 168,
+ 163, 164, 53, 50, 8, 51, 52, 54, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 31, 159,
+ 44, 16, 46, 30, 68, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 70, 168, 160, 36, 168, 165, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 161, 35, 162, 58, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
+ 168, 168, 168, 168, 168, 168, 1, 2, 3, 4,
+ 5, 6, 7, 9, 10, 11, 12, 13, 14, 15,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 32, 33, 34, 37, 38, 39, 40,
+ 41, 42, 43, 45, 47, 48, 49, 57, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 69, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158
+ );
+
+ protected $action = array(
+ 132, 133, 134, 569, 135, 136, 0, 722, 723, 724,
+ 137, 37, 834, 911, 835, 469,-32766,-32766,-32766,-32767,
+ -32767,-32767,-32767, 101, 102, 103, 104, 105, 1068, 1069,
+ 1070, 1067, 1066, 1065, 1071, 716, 715,-32766,-32766,-32766,
+ -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,
+ -32767, 545, 546,-32766,-32766, 725,-32766,-32766,-32766, 998,
+ 999, 806, 922, 447, 448, 449, 370, 371, 2, 267,
+ 138, 396, 729, 730, 731, 732, 414,-32766, 420,-32766,
+ -32766,-32766,-32766,-32766, 990, 733, 734, 735, 736, 737,
+ 738, 739, 740, 741, 742, 743, 763, 570, 764, 765,
+ 766, 767, 755, 756, 336, 337, 758, 759, 744, 745,
+ 746, 748, 749, 750, 346, 790, 791, 792, 793, 794,
+ 795, 751, 752, 571, 572, 784, 775, 773, 774, 787,
+ 770, 771, 283, 420, 573, 574, 769, 575, 576, 577,
+ 578, 579, 580, 598, -575, 470, 14, 798, 772, 581,
+ 582, -575, 139,-32766,-32766,-32766, 132, 133, 134, 569,
+ 135, 136, 1017, 722, 723, 724, 137, 37, 1060,-32766,
+ -32766,-32766, 1303, 696,-32766, 1304,-32766,-32766,-32766,-32766,
+ -32766,-32766,-32766, 1068, 1069, 1070, 1067, 1066, 1065, 1071,
+ -32766, 716, 715, 372, 371, 1258,-32766,-32766,-32766, -572,
+ 106, 107, 108, 414, 270, 891, -572, 240, 1193, 1192,
+ 1194, 725,-32766,-32766,-32766, 1046, 109,-32766,-32766,-32766,
+ -32766, 986, 985, 984, 987, 267, 138, 396, 729, 730,
+ 731, 732, 12,-32766, 420,-32766,-32766,-32766,-32766, 998,
+ 999, 733, 734, 735, 736, 737, 738, 739, 740, 741,
+ 742, 743, 763, 570, 764, 765, 766, 767, 755, 756,
+ 336, 337, 758, 759, 744, 745, 746, 748, 749, 750,
+ 346, 790, 791, 792, 793, 794, 795, 751, 752, 571,
+ 572, 784, 775, 773, 774, 787, 770, 771, 881, 321,
+ 573, 574, 769, 575, 576, 577, 578, 579, 580,-32766,
+ 82, 83, 84, -575, 772, 581, 582, -575, 148, 747,
+ 717, 718, 719, 720, 721, 1278, 722, 723, 724, 760,
+ 761, 36, 1277, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 996, 270, 150,
+ -32766,-32766,-32766, 455, 456, 81, 34, -264, -572, 1016,
+ 109, 320, -572, 893, 725, 682, 803, 128, 998, 999,
+ 592,-32766, 1044,-32766,-32766,-32766, 809, 151, 726, 727,
+ 728, 729, 730, 731, 732, -88, 1198, 796, 278, -526,
+ 283,-32766,-32766,-32766, 733, 734, 735, 736, 737, 738,
+ 739, 740, 741, 742, 743, 763, 786, 764, 765, 766,
+ 767, 755, 756, 757, 785, 758, 759, 744, 745, 746,
+ 748, 749, 750, 789, 790, 791, 792, 793, 794, 795,
+ 751, 752, 753, 754, 784, 775, 773, 774, 787, 770,
+ 771, 144, 804, 762, 768, 769, 776, 777, 779, 778,
+ 780, 781, -314, -526, -526, -193, -192, 772, 783, 782,
+ 49, 50, 51, 500, 52, 53, 239, 807, -526, -86,
+ 54, 55, -111, 56, 996, 253,-32766, -111, 800, -111,
+ -526, 541, -532, -352, 300, -352, 304, -111, -111, -111,
+ -111, -111, -111, -111, -111, 998, 999, 998, 999, 153,
+ -32766,-32766,-32766, 1191, 807, 126, 306, 1293, 57, 58,
+ 103, 104, 105, -111, 59, 1218, 60, 246, 247, 61,
+ 62, 63, 64, 65, 66, 67, 68, -525, 27, 268,
+ 69, 436, 501, -328, 808, -86, 1224, 1225, 502, 1189,
+ 807, 1198, 1230, 293, 1222, 41, 24, 503, 74, 504,
+ 953, 505, 320, 506, 802, 154, 507, 508, 279, 684,
+ 280, 43, 44, 437, 367, 366, 891, 45, 509, 35,
+ 249, -16, -566, 358, 332, 318, -566, 1198, 1193, 1192,
+ 1194, -527, 510, 511, 512, 333, -524, 1274, 48, 716,
+ 715, -525, -525, 334, 513, 514, 807, 1212, 1213, 1214,
+ 1215, 1209, 1210, 292, 360, 284, -525, 285, -314, 1216,
+ 1211, -193, -192, 1193, 1192, 1194, 293, 891, -525, 364,
+ -531, 70, 807, 316, 317, 320, 31, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ -153, -153, -153, 638, 25, -527, -527, 687, 379, 881,
+ -524, -524, 296, 297, 891, -153, 432, -153, 807, -153,
+ -527, -153, 716, 715, 433, -524, 798, 363, -111, 1105,
+ 1107, 365, -527, 434, 891, 140, 435, -524, 954, 127,
+ -524, 320, -111, -111, 688, 813, 381, -529, 11, 834,
+ 155, 835, 867, -111, -111, -111, -111, 47, 293,-32766,
+ 881, 654, 655, 74, 689, 1191, 1045, 320, 708, 149,
+ 399, 157,-32766,-32766,-32766, 32,-32766, -79,-32766, 123,
+ -32766, 716, 715,-32766, 893, 891, 682, -153,-32766,-32766,
+ -32766, 716, 715, 891,-32766,-32766, 124, 881, 129, 74,
+ -32766, 411, 130, 320, -524, -524, 143, 141, -75,-32766,
+ 158, -529, -529, 320, 27, 691, 159, 881, 160, -524,
+ 161, 294, 295, 698, 368, 369, 807, -73,-32766, -72,
+ 1222, -524, 373, 374, 1191, 893, -71, 682, -529, 73,
+ -70,-32766,-32766,-32766, -69,-32766, -68,-32766, 125,-32766,
+ 630, 631,-32766, -67, -66, -47, -51,-32766,-32766,-32766,
+ -18, 147, 271,-32766,-32766, 277, 697, 700, 881,-32766,
+ 411, 890, 893, 146, 682, 282, 881, 907,-32766, 281,
+ 513, 514, 286, 1212, 1213, 1214, 1215, 1209, 1210, 326,
+ 131, 145, 939, 287, 682, 1216, 1211, 109, 270,-32766,
+ 798, 807,-32766, 662, 639, 1191, 657, 72, 675, 1075,
+ 317, 320,-32766,-32766,-32766, 1305,-32766, 301,-32766, 628,
+ -32766, 431, 543,-32766,-32766, 923, 555, 924,-32766,-32766,
+ -32766, 1229, 549,-32766,-32766,-32766, -4, 891, -490, 1191,
+ -32766, 411, 644, 893, 299, 682,-32766,-32766,-32766,-32766,
+ -32766, 893,-32766, 682,-32766, 13, 1231,-32766, 452, 480,
+ 645, 909,-32766,-32766,-32766,-32766, 658, -480,-32766,-32766,
+ 0, 1191, 0, 0,-32766, 411, 0, 298,-32766,-32766,
+ -32766, 305,-32766,-32766,-32766, 0,-32766, 0, 806,-32766,
+ 0, 0, 0, 475,-32766,-32766,-32766,-32766, 0, 7,
+ -32766,-32766, 16, 1191, 561, 596,-32766, 411, 1219, 891,
+ -32766,-32766,-32766, 362,-32766,-32766,-32766, 818,-32766, -267,
+ 881,-32766, 39, 293, 0, 0,-32766,-32766,-32766, 40,
+ 705, 706,-32766,-32766, 872, 963, 940, 947,-32766, 411,
+ 937, 948, 365, 870, 427, 891, 935,-32766, 1049, 291,
+ 1244, 1052, 1053, -111, -111, 1050, 1051, 1057, -560, 1262,
+ 1296, 633, 0, 826, -111, -111, -111, -111, 33, 315,
+ -32766, 361, 683, 686, 690, 692, 1191, 693, 694, 695,
+ 699, 685, 320,-32766,-32766,-32766, 9,-32766, 702,-32766,
+ 868,-32766, 881, 1300,-32766, 893, 1302, 682, -4,-32766,
+ -32766,-32766, 829, 828, 837,-32766,-32766, 916, -242, -242,
+ -242,-32766, 411, 955, 365, 27, 836, 1301, 915, 917,
+ -32766, 914, 1177, 900, 910, -111, -111, 807, 881, 898,
+ 945, 1222, 946, 1299, 1256, 867, -111, -111, -111, -111,
+ 1245, 1263, 1269, 1272, -241, -241, -241, -558, -532, -531,
+ 365, -530, 1, 28, 29, 38, 42, 46, 71, 0,
+ 75, -111, -111, 76, 77, 78, 79, 893, 80, 682,
+ -242, 867, -111, -111, -111, -111, 142, 152, 156, 245,
+ 322, 347, 514, 348, 1212, 1213, 1214, 1215, 1209, 1210,
+ 349, 350, 351, 352, 353, 354, 1216, 1211, 355, 356,
+ 357, 359, 428, 893, -265, 682, -241, -264, 72, 0,
+ 18, 317, 320, 19, 20, 21, 23, 398, 471, 472,
+ 479, 482, 483, 484, 485, 489, 490, 491, 498, 669,
+ 1202, 1145, 1220, 1019, 1018, 1181, -269, -103, 17, 22,
+ 26, 290, 397, 589, 593, 620, 674, 1149, 1197, 1146,
+ 1275, 0, -494, 1162, 0, 1223
+ );
+
+ protected $actionCheck = array(
+ 2, 3, 4, 5, 6, 7, 0, 9, 10, 11,
+ 12, 13, 106, 1, 108, 31, 9, 10, 11, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 116, 117,
+ 118, 119, 120, 121, 122, 37, 38, 30, 116, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 43, 117, 118, 9, 10, 57, 9, 10, 11, 137,
+ 138, 155, 128, 129, 130, 131, 106, 107, 8, 71,
+ 72, 73, 74, 75, 76, 77, 116, 30, 80, 32,
+ 33, 34, 35, 36, 1, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 30, 80, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 51, 1, 161, 101, 80, 150, 151,
+ 152, 8, 154, 9, 10, 11, 2, 3, 4, 5,
+ 6, 7, 164, 9, 10, 11, 12, 13, 123, 9,
+ 10, 11, 80, 161, 30, 83, 32, 33, 34, 35,
+ 36, 37, 38, 116, 117, 118, 119, 120, 121, 122,
+ 30, 37, 38, 106, 107, 1, 9, 10, 11, 1,
+ 53, 54, 55, 116, 57, 1, 8, 14, 155, 156,
+ 157, 57, 9, 10, 11, 162, 69, 30, 116, 32,
+ 33, 119, 120, 121, 122, 71, 72, 73, 74, 75,
+ 76, 77, 8, 30, 80, 32, 33, 34, 35, 137,
+ 138, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 84, 70,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 9,
+ 9, 10, 11, 160, 150, 151, 152, 164, 154, 2,
+ 3, 4, 5, 6, 7, 1, 9, 10, 11, 12,
+ 13, 30, 8, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 116, 57, 14,
+ 9, 10, 11, 134, 135, 161, 8, 164, 160, 1,
+ 69, 167, 164, 159, 57, 161, 80, 8, 137, 138,
+ 1, 30, 1, 32, 33, 34, 1, 14, 71, 72,
+ 73, 74, 75, 76, 77, 31, 1, 80, 30, 70,
+ 30, 9, 10, 11, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 8, 156, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 8, 134, 135, 8, 8, 150, 151, 152,
+ 2, 3, 4, 5, 6, 7, 97, 82, 149, 31,
+ 12, 13, 101, 15, 116, 8, 116, 106, 80, 108,
+ 161, 85, 163, 106, 113, 108, 8, 116, 117, 118,
+ 119, 120, 121, 122, 123, 137, 138, 137, 138, 14,
+ 9, 10, 11, 80, 82, 14, 8, 85, 50, 51,
+ 50, 51, 52, 128, 56, 1, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 70, 70, 71,
+ 72, 73, 74, 162, 159, 97, 78, 79, 80, 116,
+ 82, 1, 146, 158, 86, 87, 88, 89, 163, 91,
+ 31, 93, 167, 95, 156, 14, 98, 99, 35, 161,
+ 37, 103, 104, 105, 106, 107, 1, 109, 110, 147,
+ 148, 31, 160, 115, 116, 8, 164, 1, 155, 156,
+ 157, 70, 124, 125, 126, 8, 70, 1, 70, 37,
+ 38, 134, 135, 8, 136, 137, 82, 139, 140, 141,
+ 142, 143, 144, 145, 8, 35, 149, 37, 164, 151,
+ 152, 164, 164, 155, 156, 157, 158, 1, 161, 8,
+ 163, 163, 82, 165, 166, 167, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 75, 76, 77, 75, 76, 134, 135, 31, 8, 84,
+ 134, 135, 134, 135, 1, 90, 8, 92, 82, 94,
+ 149, 96, 37, 38, 8, 149, 80, 149, 128, 59,
+ 60, 106, 161, 8, 1, 161, 8, 161, 159, 161,
+ 70, 167, 117, 118, 31, 8, 106, 70, 108, 106,
+ 14, 108, 127, 128, 129, 130, 131, 70, 158, 74,
+ 84, 75, 76, 163, 31, 80, 159, 167, 161, 101,
+ 102, 14, 87, 88, 89, 14, 91, 31, 93, 16,
+ 95, 37, 38, 98, 159, 1, 161, 162, 103, 104,
+ 105, 37, 38, 1, 109, 110, 16, 84, 16, 163,
+ 115, 116, 16, 167, 134, 135, 16, 161, 31, 124,
+ 16, 134, 135, 167, 70, 31, 16, 84, 16, 149,
+ 16, 134, 135, 31, 106, 107, 82, 31, 74, 31,
+ 86, 161, 106, 107, 80, 159, 31, 161, 161, 154,
+ 31, 87, 88, 89, 31, 91, 31, 93, 161, 95,
+ 111, 112, 98, 31, 31, 31, 31, 103, 104, 105,
+ 31, 31, 31, 109, 110, 31, 31, 31, 84, 115,
+ 116, 31, 159, 31, 161, 37, 84, 38, 124, 35,
+ 136, 137, 35, 139, 140, 141, 142, 143, 144, 35,
+ 31, 70, 159, 37, 161, 151, 152, 69, 57, 74,
+ 80, 82, 85, 77, 90, 80, 94, 163, 92, 82,
+ 166, 167, 87, 88, 89, 83, 91, 114, 93, 113,
+ 95, 128, 85, 98, 116, 128, 153, 128, 103, 104,
+ 105, 146, 89, 74, 109, 110, 0, 1, 149, 80,
+ 115, 116, 96, 159, 133, 161, 87, 88, 89, 124,
+ 91, 159, 93, 161, 95, 97, 146, 98, 97, 97,
+ 100, 154, 103, 104, 105, 74, 100, 149, 109, 110,
+ -1, 80, -1, -1, 115, 116, -1, 132, 87, 88,
+ 89, 132, 91, 124, 93, -1, 95, -1, 155, 98,
+ -1, -1, -1, 102, 103, 104, 105, 74, -1, 149,
+ 109, 110, 149, 80, 81, 153, 115, 116, 160, 1,
+ 87, 88, 89, 149, 91, 124, 93, 160, 95, 164,
+ 84, 98, 159, 158, -1, -1, 103, 104, 105, 159,
+ 159, 159, 109, 110, 159, 159, 159, 159, 115, 116,
+ 159, 159, 106, 159, 108, 1, 159, 124, 159, 113,
+ 160, 159, 159, 117, 118, 159, 159, 159, 163, 160,
+ 160, 160, -1, 127, 128, 129, 130, 131, 161, 161,
+ 74, 161, 161, 161, 161, 161, 80, 161, 161, 161,
+ 161, 161, 167, 87, 88, 89, 150, 91, 162, 93,
+ 162, 95, 84, 162, 98, 159, 162, 161, 162, 103,
+ 104, 105, 162, 162, 162, 109, 110, 162, 100, 101,
+ 102, 115, 116, 162, 106, 70, 162, 162, 162, 162,
+ 124, 162, 162, 162, 162, 117, 118, 82, 84, 162,
+ 162, 86, 162, 162, 162, 127, 128, 129, 130, 131,
+ 162, 162, 162, 162, 100, 101, 102, 163, 163, 163,
+ 106, 163, 163, 163, 163, 163, 163, 163, 163, -1,
+ 163, 117, 118, 163, 163, 163, 163, 159, 163, 161,
+ 162, 127, 128, 129, 130, 131, 163, 163, 163, 163,
+ 163, 163, 137, 163, 139, 140, 141, 142, 143, 144,
+ 163, 163, 163, 163, 163, 163, 151, 152, 163, 163,
+ 163, 163, 163, 159, 164, 161, 162, 164, 163, -1,
+ 164, 166, 167, 164, 164, 164, 164, 164, 164, 164,
+ 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
+ 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
+ 164, 164, 164, 164, 164, 164, 164, 164, 164, 164,
+ 164, -1, 165, 165, -1, 166
+ );
+
+ protected $actionBase = array(
+ 0, -2, 154, 565, 876, 948, 984, 514, 53, 398,
+ 837, 307, 307, 67, 307, 307, 307, 653, 724, 724,
+ 732, 724, 616, 673, 204, 204, 204, 625, 625, 625,
+ 625, 694, 694, 831, 831, 863, 799, 765, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936,
+ 936, 936, 375, 519, 369, 701, 1017, 1023, 1019, 1024,
+ 1015, 1014, 1018, 1020, 1025, 911, 912, 782, 918, 919,
+ 920, 921, 1021, 841, 1016, 1022, 291, 291, 291, 291,
+ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
+ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
+ 291, 291, 290, 491, 44, 382, 382, 382, 382, 382,
+ 382, 382, 382, 382, 382, 382, 382, 382, 382, 382,
+ 382, 382, 382, 382, 382, 160, 160, 160, 187, 684,
+ 684, 341, 203, 610, 47, 985, 985, 985, 985, 985,
+ 985, 985, 985, 985, 985, 144, 144, 7, 7, 7,
+ 7, 7, 371, -25, -25, -25, -25, 540, 385, 102,
+ 576, 358, 45, 377, 460, 460, 360, 231, 231, 231,
+ 231, 231, 231, -78, -78, -78, -78, -78, -66, 319,
+ 457, -94, 396, 423, 586, 586, 586, 586, 423, 423,
+ 423, 423, 750, 1029, 423, 423, 423, 511, 516, 516,
+ 518, 147, 147, 147, 516, 583, 777, 422, 583, 422,
+ 194, 92, 748, -40, 87, 412, 748, 617, 627, 198,
+ 143, 773, 658, 773, 1013, 757, 764, 717, 838, 860,
+ 1026, 800, 908, 806, 910, 219, 686, 1012, 1012, 1012,
+ 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 855, 552,
+ 1013, 286, 855, 855, 855, 552, 552, 552, 552, 552,
+ 552, 552, 552, 552, 552, 679, 286, 568, 626, 286,
+ 794, 552, 375, 758, 375, 375, 375, 375, 958, 375,
+ 375, 375, 375, 375, 375, 970, 769, -16, 375, 519,
+ 12, 12, 547, 83, 12, 12, 12, 12, 375, 375,
+ 375, 658, 781, 713, 666, 792, 448, 781, 781, 781,
+ 438, 444, 193, 447, 570, 523, 580, 760, 760, 767,
+ 929, 929, 760, 759, 760, 767, 934, 760, 929, 805,
+ 359, 648, 577, 611, 656, 929, 478, 760, 760, 760,
+ 760, 665, 760, 467, 433, 760, 760, 785, 774, 789,
+ 60, 929, 929, 929, 789, 596, 751, 751, 751, 811,
+ 812, 746, 771, 567, 498, 677, 348, 779, 771, 771,
+ 760, 640, 746, 771, 746, 771, 747, 771, 771, 771,
+ 746, 771, 759, 585, 771, 734, 668, 224, 771, 6,
+ 935, 937, 354, 940, 932, 941, 979, 942, 943, 851,
+ 956, 933, 945, 931, 930, 780, 703, 720, 790, 729,
+ 928, 768, 768, 768, 925, 768, 768, 768, 768, 768,
+ 768, 768, 768, 703, 788, 804, 733, 783, 960, 722,
+ 726, 725, 868, 1027, 1028, 737, 739, 958, 1006, 953,
+ 803, 730, 992, 967, 866, 848, 968, 969, 993, 1007,
+ 1008, 871, 761, 874, 880, 797, 971, 852, 768, 935,
+ 943, 933, 945, 931, 930, 763, 762, 753, 755, 749,
+ 745, 736, 738, 770, 1009, 924, 835, 830, 970, 926,
+ 703, 839, 986, 847, 994, 995, 850, 801, 772, 840,
+ 881, 972, 975, 976, 853, 1010, 810, 989, 795, 996,
+ 802, 882, 997, 998, 999, 1000, 885, 854, 856, 857,
+ 815, 754, 980, 786, 891, 335, 787, 796, 978, 363,
+ 957, 858, 894, 895, 1001, 1002, 1003, 896, 954, 816,
+ 990, 752, 991, 983, 817, 818, 485, 784, 778, 541,
+ 676, 897, 899, 900, 955, 775, 766, 821, 822, 1011,
+ 901, 697, 824, 740, 902, 1005, 742, 744, 756, 859,
+ 793, 743, 798, 977, 776, 827, 907, 829, 832, 833,
+ 1004, 836, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 458, 458, 458, 458, 458, 458, 307, 307, 307,
+ 307, 0, 0, 307, 0, 0, 0, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 458, 458, 291, 291, 291, 291, 291, 291, 291, 291,
+ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
+ 291, 291, 291, 291, 291, 291, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 291, 291, 291, 291, 291, 291, 291, 291,
+ 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
+ 291, 291, 291, 291, 291, 291, 291, 291, 291, 423,
+ 423, 291, 291, 0, 291, 423, 423, 423, 423, 423,
+ 423, 423, 423, 423, 423, 291, 291, 291, 291, 291,
+ 291, 291, 805, 147, 147, 147, 147, 423, 423, 423,
+ 423, 423, -88, -88, 147, 147, 423, 423, 423, 423,
+ 423, 423, 423, 423, 423, 423, 423, 423, 0, 0,
+ 0, 286, 422, 0, 759, 759, 759, 759, 0, 0,
+ 0, 0, 422, 422, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 286, 422, 0, 286, 0,
+ 759, 759, 423, 805, 805, 314, 423, 0, 0, 0,
+ 0, 286, 759, 286, 552, 422, 552, 552, 12, 375,
+ 314, 608, 608, 608, 608, 0, 658, 805, 805, 805,
+ 805, 805, 805, 805, 805, 805, 805, 805, 759, 0,
+ 805, 0, 759, 759, 759, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 759, 0, 0, 929, 0, 0, 0, 0, 760, 0,
+ 0, 0, 0, 0, 0, 760, 934, 0, 0, 0,
+ 0, 0, 0, 759, 0, 0, 0, 0, 0, 0,
+ 0, 0, 768, 801, 0, 801, 0, 768, 768, 768
+ );
+
+ protected $actionDefault = array(
+ 3,32767, 103,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767, 101,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767, 578, 578, 578,
+ 578,32767,32767, 246, 103,32767,32767, 454, 372, 372,
+ 372,32767,32767, 522, 522, 522, 522, 522, 522,32767,
+ 32767,32767,32767,32767,32767, 454,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767, 101,32767,
+ 32767,32767, 37, 7, 8, 10, 11, 50, 17, 310,
+ 32767,32767,32767,32767, 103,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767, 571,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767, 458, 437, 438, 440,
+ 441, 371, 523, 577, 313, 574, 370, 146, 325, 315,
+ 234, 316, 250, 459, 251, 460, 463, 464, 211, 279,
+ 367, 150, 401, 455, 403, 453, 457, 402, 377, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 375, 376, 456, 434, 433, 432, 399,32767,
+ 32767, 400, 404, 374, 407,32767,32767,32767,32767,32767,
+ 32767,32767,32767, 103,32767, 405, 406, 423, 424, 421,
+ 422, 425,32767, 426, 427, 428, 429,32767,32767, 302,
+ 32767,32767, 351, 349, 414, 415, 302,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767, 516,
+ 431,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767, 103,32767, 101, 518, 396, 398,
+ 486, 409, 410, 408, 378,32767, 493,32767, 103, 495,
+ 32767,32767,32767, 112,32767,32767,32767, 517,32767, 524,
+ 524,32767, 479, 101, 194,32767, 194, 194,32767,32767,
+ 32767,32767,32767,32767,32767, 585, 479, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 111,32767, 194,
+ 111,32767,32767,32767, 101, 194, 194, 194, 194, 194,
+ 194, 194, 194, 194, 194, 189,32767, 260, 262, 103,
+ 539, 194,32767, 498,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767, 491,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767, 479, 419, 139,32767, 139, 524, 411, 412, 413,
+ 481, 524, 524, 524, 298, 281,32767,32767,32767,32767,
+ 496, 496, 101, 101, 101, 101, 491,32767,32767, 112,
+ 100, 100, 100, 100, 100, 104, 102,32767,32767,32767,
+ 32767, 100,32767, 102, 102,32767,32767, 217, 208, 215,
+ 102,32767, 543, 544, 215, 102, 219, 219, 219, 239,
+ 239, 470, 304, 102, 100, 102, 102, 196, 304, 304,
+ 32767, 102, 470, 304, 470, 304, 198, 304, 304, 304,
+ 470, 304,32767, 102, 304, 210, 100, 100, 304,32767,
+ 32767,32767, 481,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767, 511,32767, 528,
+ 541, 417, 418, 420, 526, 442, 443, 444, 445, 446,
+ 447, 448, 450, 573,32767, 485,32767,32767,32767,32767,
+ 324, 583,32767, 583,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767, 584,32767, 524,32767,32767,32767,32767, 416, 9,
+ 76, 43, 44, 52, 58, 502, 503, 504, 505, 499,
+ 500, 506, 501,32767,32767, 507, 549,32767,32767, 525,
+ 576,32767,32767,32767,32767,32767,32767, 139,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767, 511,32767,
+ 137,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767, 524,32767,32767,32767, 300, 301,32767,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767, 524,32767,32767,32767, 283, 284,32767,
+ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767,32767, 278,32767,32767, 366,32767,32767,32767,
+ 32767, 345,32767,32767,32767,32767,32767,32767,32767,32767,
+ 32767,32767, 152, 152, 3, 3, 327, 152, 152, 152,
+ 327, 152, 327, 327, 327, 152, 152, 152, 152, 152,
+ 152, 272, 184, 254, 257, 239, 239, 152, 337, 152
+ );
+
+ protected $goto = array(
+ 194, 194, 670, 422, 643, 463, 1264, 1265, 1022, 416,
+ 308, 309, 329, 563, 314, 421, 330, 423, 622, 801,
+ 678, 637, 586, 651, 652, 653, 165, 165, 165, 165,
+ 218, 195, 191, 191, 175, 177, 213, 191, 191, 191,
+ 191, 191, 192, 192, 192, 192, 192, 192, 186, 187,
+ 188, 189, 190, 215, 213, 216, 521, 522, 412, 523,
+ 525, 526, 527, 528, 529, 530, 531, 532, 1091, 166,
+ 167, 168, 193, 169, 170, 171, 164, 172, 173, 174,
+ 176, 212, 214, 217, 235, 238, 241, 242, 244, 255,
+ 256, 257, 258, 259, 260, 261, 263, 264, 265, 266,
+ 274, 275, 311, 312, 313, 417, 418, 419, 568, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 178, 234, 179, 196, 197, 198,
+ 236, 186, 187, 188, 189, 190, 215, 1091, 199, 180,
+ 181, 182, 200, 196, 183, 237, 201, 199, 163, 202,
+ 203, 184, 204, 205, 206, 185, 207, 208, 209, 210,
+ 211, 323, 323, 323, 323, 827, 608, 608, 824, 547,
+ 538, 342, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,
+ 1221, 1221, 1239, 1239, 288, 288, 288, 288, 1239, 1239,
+ 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 388, 538,
+ 547, 556, 557, 395, 566, 588, 602, 603, 832, 825,
+ 880, 875, 876, 889, 15, 833, 877, 830, 878, 879,
+ 831, 799, 251, 251, 883, 919, 992, 1000, 1004, 1001,
+ 1005, 1237, 1237, 938, 1043, 1039, 1040, 1237, 1237, 1237,
+ 1237, 1237, 1237, 1237, 1237, 1237, 1237, 858, 248, 248,
+ 248, 248, 250, 252, 533, 533, 533, 533, 487, 590,
+ 488, 1190, 1190, 997, 1190, 997, 494, 1290, 1290, 560,
+ 997, 997, 997, 997, 997, 997, 997, 997, 997, 997,
+ 997, 997, 1261, 1261, 1290, 1261, 340, 1190, 930, 402,
+ 677, 1279, 1190, 1190, 1190, 1190, 959, 345, 1190, 1190,
+ 1190, 1271, 1271, 1271, 1271, 606, 640, 345, 345, 1273,
+ 1273, 1273, 1273, 820, 820, 805, 896, 884, 840, 885,
+ 897, 345, 345, 5, 345, 6, 1306, 384, 535, 535,
+ 559, 535, 415, 852, 597, 1257, 839, 540, 524, 524,
+ 345, 1289, 1289, 642, 524, 524, 524, 524, 524, 524,
+ 524, 524, 524, 524, 445, 805, 1140, 805, 1289, 932,
+ 932, 932, 932, 1063, 1064, 445, 926, 933, 386, 390,
+ 548, 587, 591, 1030, 1292, 331, 554, 1259, 1259, 1030,
+ 704, 621, 623, 823, 641, 1250, 319, 303, 660, 664,
+ 973, 668, 676, 969, 429, 553, 962, 936, 936, 934,
+ 936, 703, 601, 537, 971, 966, 343, 344, 663, 817,
+ 595, 609, 612, 613, 614, 615, 634, 635, 636, 680,
+ 439, 1186, 845, 454, 454, 439, 439, 1266, 1267, 820,
+ 901, 1079, 454, 394, 539, 551, 1183, 605, 540, 539,
+ 842, 551, 978, 272, 387, 618, 619, 981, 536, 536,
+ 844, 707, 646, 957, 567, 457, 458, 459, 838, 850,
+ 254, 254, 1297, 1298, 400, 401, 976, 976, 464, 649,
+ 1182, 650, 1028, 404, 405, 406, 1187, 661, 424, 1032,
+ 407, 564, 600, 815, 338, 424, 854, 848, 853, 841,
+ 1027, 1031, 1009, 1002, 1006, 1003, 1007, 1185, 941, 1188,
+ 1247, 1248, 943, 0, 1074, 439, 439, 439, 439, 439,
+ 439, 439, 439, 439, 439, 439, 0, 468, 439, 585,
+ 1056, 931, 681, 667, 667, 0, 495, 673, 1054, 1171,
+ 912, 0, 0, 1172, 1175, 913, 1176, 0, 0, 0,
+ 0, 0, 0, 1072, 857
+ );
+
+ protected $gotoCheck = array(
+ 42, 42, 72, 65, 65, 166, 166, 166, 119, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 7,
+ 9, 84, 122, 84, 84, 84, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 23, 23, 23, 23, 15, 104, 104, 26, 75,
+ 75, 93, 104, 104, 104, 104, 104, 104, 104, 104,
+ 104, 104, 160, 160, 24, 24, 24, 24, 160, 160,
+ 160, 160, 160, 160, 160, 160, 160, 160, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 15, 27,
+ 15, 15, 15, 15, 75, 15, 15, 15, 15, 15,
+ 15, 6, 5, 5, 15, 87, 87, 87, 87, 87,
+ 87, 161, 161, 49, 15, 15, 15, 161, 161, 161,
+ 161, 161, 161, 161, 161, 161, 161, 45, 5, 5,
+ 5, 5, 5, 5, 103, 103, 103, 103, 147, 103,
+ 147, 72, 72, 72, 72, 72, 147, 173, 173, 162,
+ 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
+ 72, 72, 122, 122, 173, 122, 169, 72, 89, 89,
+ 89, 171, 72, 72, 72, 72, 99, 14, 72, 72,
+ 72, 9, 9, 9, 9, 55, 55, 14, 14, 122,
+ 122, 122, 122, 22, 22, 12, 72, 64, 35, 64,
+ 72, 14, 14, 46, 14, 46, 14, 61, 19, 19,
+ 100, 19, 13, 35, 13, 122, 35, 14, 163, 163,
+ 14, 172, 172, 63, 163, 163, 163, 163, 163, 163,
+ 163, 163, 163, 163, 19, 12, 143, 12, 172, 19,
+ 19, 19, 19, 136, 136, 19, 19, 19, 58, 58,
+ 58, 58, 58, 122, 172, 29, 48, 122, 122, 122,
+ 48, 48, 48, 25, 48, 14, 159, 159, 48, 48,
+ 48, 48, 48, 48, 109, 9, 25, 25, 25, 25,
+ 25, 25, 9, 25, 25, 25, 93, 93, 14, 18,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 23, 20, 39, 141, 141, 23, 23, 168, 168, 22,
+ 17, 17, 141, 28, 9, 9, 152, 17, 14, 9,
+ 37, 9, 17, 24, 9, 83, 83, 106, 24, 24,
+ 17, 95, 17, 17, 9, 9, 9, 9, 17, 9,
+ 5, 5, 9, 9, 80, 80, 103, 103, 149, 80,
+ 17, 80, 121, 80, 80, 80, 20, 80, 113, 124,
+ 80, 2, 2, 20, 80, 113, 41, 9, 16, 16,
+ 16, 16, 113, 113, 113, 113, 113, 14, 16, 20,
+ 20, 20, 92, -1, 139, 23, 23, 23, 23, 23,
+ 23, 23, 23, 23, 23, 23, -1, 82, 23, 8,
+ 8, 16, 8, 8, 8, -1, 8, 8, 8, 78,
+ 78, -1, -1, 78, 78, 78, 78, -1, -1, -1,
+ -1, -1, -1, 16, 16
+ );
+
+ protected $gotoBase = array(
+ 0, 0, -203, 0, 0, 221, 208, 10, 512, 7,
+ 0, 0, 24, 1, 5, -174, 47, -23, 105, 61,
+ 38, 0, -10, 158, 181, 379, 164, 205, 102, 84,
+ 0, 0, 0, 0, 0, -43, 0, 107, 0, 104,
+ 0, 54, -1, 0, 0, 235, -384, 0, -307, 210,
+ 0, 0, 0, 0, 0, 266, 0, 0, 324, 0,
+ 0, 286, 0, 103, 298, -236, 0, 0, 0, 0,
+ 0, 0, -6, 0, 0, -167, 0, 0, 129, 62,
+ -14, 0, 53, -22, -669, 0, 0, -52, 0, -11,
+ 0, 0, 68, -299, 0, 52, 0, 0, 0, 262,
+ 288, 0, 0, 227, -73, 0, 87, 0, 0, 118,
+ 0, 0, 0, 209, 0, 0, 0, 0, 0, 6,
+ 0, 108, 15, 0, 46, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 91, 0, 0, 69,
+ 0, 390, 0, 86, 0, 0, 0, -224, 0, 37,
+ 0, 0, 77, 0, 0, 0, 0, 0, 0, 70,
+ -57, -8, 241, 99, 0, 0, -290, 0, 65, 257,
+ 0, 261, 39, -35, 0, 0
+ );
+
+ protected $gotoDefault = array(
+ -32768, 499, 711, 4, 712, 905, 788, 797, 583, 515,
+ 679, 339, 610, 413, 1255, 882, 1078, 565, 816, 1199,
+ 1207, 446, 819, 324, 701, 864, 865, 866, 391, 376,
+ 382, 389, 632, 611, 481, 851, 442, 843, 473, 846,
+ 441, 855, 162, 410, 497, 859, 3, 861, 542, 892,
+ 377, 869, 378, 656, 871, 550, 873, 874, 385, 392,
+ 393, 1083, 558, 607, 886, 243, 552, 887, 375, 888,
+ 895, 380, 383, 665, 453, 492, 486, 403, 1058, 594,
+ 629, 450, 467, 617, 616, 604, 466, 425, 408, 928,
+ 474, 451, 942, 341, 950, 709, 1090, 624, 476, 958,
+ 625, 965, 968, 516, 517, 465, 980, 269, 983, 477,
+ 1015, 647, 648, 995, 626, 627, 1013, 460, 584, 1021,
+ 443, 1029, 1243, 444, 1033, 262, 1036, 276, 409, 426,
+ 1041, 1042, 8, 1048, 671, 672, 10, 273, 496, 1073,
+ 666, 440, 1089, 430, 1159, 1161, 544, 478, 1179, 1178,
+ 659, 493, 1184, 1246, 438, 518, 461, 310, 519, 302,
+ 327, 307, 534, 289, 328, 520, 462, 1252, 1260, 325,
+ 30, 1280, 1291, 335, 562, 599
+ );
+
+ protected $ruleToNonTerminal = array(
+ 0, 1, 3, 3, 2, 5, 5, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 6, 6, 6, 6, 6, 6, 6, 6, 7, 7,
+ 7, 7, 7, 7, 7, 7, 8, 8, 9, 10,
+ 11, 11, 11, 12, 12, 13, 13, 14, 15, 15,
+ 16, 16, 17, 17, 18, 18, 21, 21, 22, 23,
+ 23, 24, 24, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 29, 29, 30, 30, 32, 34,
+ 34, 28, 36, 36, 33, 38, 38, 35, 35, 37,
+ 37, 39, 39, 31, 40, 40, 41, 43, 44, 44,
+ 45, 46, 46, 48, 47, 47, 47, 47, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 25, 25, 68, 68, 71, 71, 70, 69,
+ 69, 62, 74, 74, 75, 75, 76, 76, 77, 77,
+ 78, 78, 26, 26, 27, 27, 27, 27, 86, 86,
+ 88, 88, 81, 81, 81, 82, 82, 85, 85, 83,
+ 83, 89, 90, 90, 56, 56, 64, 64, 67, 67,
+ 67, 66, 91, 91, 92, 57, 57, 57, 57, 93,
+ 93, 94, 94, 95, 95, 96, 97, 97, 98, 98,
+ 99, 99, 54, 54, 50, 50, 101, 52, 52, 102,
+ 51, 51, 53, 53, 63, 63, 63, 63, 79, 79,
+ 105, 105, 107, 107, 108, 108, 108, 108, 106, 106,
+ 106, 110, 110, 110, 110, 87, 87, 113, 113, 113,
+ 111, 111, 114, 114, 112, 112, 115, 115, 116, 116,
+ 116, 116, 109, 109, 80, 80, 80, 20, 20, 20,
+ 118, 117, 117, 119, 119, 119, 119, 59, 120, 120,
+ 121, 60, 123, 123, 124, 124, 125, 125, 84, 126,
+ 126, 126, 126, 126, 126, 131, 131, 132, 132, 133,
+ 133, 133, 133, 133, 134, 135, 135, 130, 130, 127,
+ 127, 129, 129, 137, 137, 136, 136, 136, 136, 136,
+ 136, 136, 128, 138, 138, 140, 139, 139, 61, 100,
+ 141, 141, 55, 55, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 148, 142, 142,
+ 147, 147, 150, 151, 151, 152, 153, 153, 153, 19,
+ 19, 72, 72, 72, 72, 143, 143, 143, 143, 155,
+ 155, 144, 144, 146, 146, 146, 149, 149, 160, 160,
+ 160, 160, 160, 160, 160, 160, 160, 161, 161, 104,
+ 163, 163, 163, 163, 145, 145, 145, 145, 145, 145,
+ 145, 145, 58, 58, 158, 158, 158, 158, 164, 164,
+ 154, 154, 154, 165, 165, 165, 165, 165, 165, 73,
+ 73, 65, 65, 65, 65, 122, 122, 122, 122, 168,
+ 167, 157, 157, 157, 157, 157, 157, 157, 156, 156,
+ 156, 166, 166, 166, 166, 103, 162, 170, 170, 169,
+ 169, 171, 171, 171, 171, 171, 171, 171, 171, 159,
+ 159, 159, 159, 173, 174, 172, 172, 172, 172, 172,
+ 172, 172, 172, 175, 175, 175, 175
+ );
+
+ protected $ruleToLength = array(
+ 1, 1, 2, 0, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 1, 0, 1, 1, 2, 1, 3, 4, 1,
+ 2, 0, 1, 1, 1, 1, 1, 3, 5, 4,
+ 3, 4, 2, 3, 1, 1, 7, 6, 2, 3,
+ 1, 2, 3, 1, 2, 3, 1, 1, 3, 1,
+ 3, 1, 2, 2, 3, 1, 3, 2, 3, 1,
+ 3, 2, 0, 1, 1, 1, 1, 1, 3, 7,
+ 10, 5, 7, 9, 5, 3, 3, 3, 3, 3,
+ 3, 1, 2, 5, 7, 9, 6, 5, 6, 3,
+ 2, 1, 1, 1, 0, 2, 1, 3, 8, 0,
+ 4, 2, 1, 3, 0, 1, 0, 1, 0, 1,
+ 3, 1, 8, 9, 8, 7, 6, 8, 0, 2,
+ 0, 2, 1, 2, 2, 0, 2, 0, 2, 0,
+ 2, 2, 1, 3, 1, 4, 1, 4, 1, 1,
+ 4, 2, 1, 3, 3, 3, 4, 4, 5, 0,
+ 2, 4, 3, 1, 1, 7, 0, 2, 1, 3,
+ 3, 4, 1, 4, 0, 2, 5, 0, 2, 6,
+ 0, 2, 0, 3, 1, 2, 1, 1, 2, 0,
+ 1, 3, 0, 2, 1, 1, 1, 1, 6, 8,
+ 6, 1, 2, 1, 1, 1, 1, 1, 1, 1,
+ 3, 3, 3, 3, 3, 3, 3, 3, 1, 2,
+ 1, 1, 0, 1, 0, 2, 2, 2, 4, 3,
+ 1, 1, 3, 1, 2, 2, 3, 2, 3, 1,
+ 1, 2, 3, 1, 1, 3, 2, 0, 1, 5,
+ 5, 10, 3, 5, 1, 1, 3, 0, 2, 4,
+ 5, 4, 4, 4, 3, 1, 1, 1, 1, 1,
+ 1, 0, 1, 1, 2, 1, 1, 1, 1, 1,
+ 1, 1, 2, 1, 3, 1, 1, 3, 2, 2,
+ 3, 1, 0, 1, 1, 3, 3, 3, 4, 1,
+ 1, 2, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 2, 2, 2, 2, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 2, 2, 2,
+ 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 5, 4, 3, 4, 4, 2, 2, 4,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 1, 3, 2, 1, 2, 4, 2, 2, 8,
+ 9, 8, 9, 9, 10, 9, 10, 8, 3, 2,
+ 0, 4, 2, 1, 3, 2, 2, 2, 4, 1,
+ 1, 1, 1, 1, 1, 1, 1, 3, 1, 1,
+ 1, 0, 3, 0, 1, 1, 0, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 3, 3, 3,
+ 4, 1, 1, 3, 1, 1, 1, 1, 1, 3,
+ 2, 3, 0, 1, 1, 3, 1, 1, 1, 1,
+ 1, 3, 1, 1, 4, 4, 1, 4, 4, 0,
+ 1, 1, 1, 3, 3, 1, 4, 2, 2, 1,
+ 3, 1, 4, 4, 3, 3, 3, 3, 1, 3,
+ 1, 1, 3, 1, 1, 4, 1, 1, 1, 3,
+ 1, 1, 2, 1, 3, 4, 3, 2, 0, 2,
+ 2, 1, 2, 1, 1, 1, 4, 3, 3, 3,
+ 3, 6, 3, 1, 1, 2, 1
+ );
+
+ protected function initReduceCallbacks() {
+ $this->reduceCallbacks = [
+ 0 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 1 => function ($stackPos) {
+ $this->semValue = $this->handleNamespaces($this->semStack[$stackPos-(1-1)]);
+ },
+ 2 => function ($stackPos) {
+ if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
+ },
+ 3 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 4 => function ($stackPos) {
+ $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
+ if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 5 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 6 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 7 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 8 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 9 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 10 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 11 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 12 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 13 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 14 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 15 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 16 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 17 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 18 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 19 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 20 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 21 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 22 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 23 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 24 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 25 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 26 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 27 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 28 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 29 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 30 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 31 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 32 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 33 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 34 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 35 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 36 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 37 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 38 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 39 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 40 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 41 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 42 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 43 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 44 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 45 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 46 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 47 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 48 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 49 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 50 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 51 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 52 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 53 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 54 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 55 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 56 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 57 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 58 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 59 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 60 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 61 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 62 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 63 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 64 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 65 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 66 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 67 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 68 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 69 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 70 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 71 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 72 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 73 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 74 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 75 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 76 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 77 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 78 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 79 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 80 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 81 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 82 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 83 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 84 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 85 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 86 => function ($stackPos) {
+ $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 87 => function ($stackPos) {
+ $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 88 => function ($stackPos) {
+ $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 89 => function ($stackPos) {
+ $this->semValue = new Node\Identifier($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 90 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 91 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 92 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 93 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 94 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 95 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 96 => function ($stackPos) {
+ $this->semValue = new Name(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 97 => function ($stackPos) {
+ $this->semValue = new Expr\Variable(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 98 => function ($stackPos) {
+ /* nothing */
+ },
+ 99 => function ($stackPos) {
+ /* nothing */
+ },
+ 100 => function ($stackPos) {
+ /* nothing */
+ },
+ 101 => function ($stackPos) {
+ $this->emitError(new Error('A trailing comma is not allowed here', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
+ },
+ 102 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 103 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 104 => function ($stackPos) {
+ $this->semValue = new Node\Attribute($this->semStack[$stackPos-(1-1)], [], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 105 => function ($stackPos) {
+ $this->semValue = new Node\Attribute($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 106 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 107 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 108 => function ($stackPos) {
+ $this->semValue = new Node\AttributeGroup($this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 109 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 110 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 111 => function ($stackPos) {
+ $this->semValue = [];
+ },
+ 112 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 113 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 114 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 115 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 116 => function ($stackPos) {
+ $this->semValue = new Stmt\HaltCompiler($this->lexer->handleHaltCompiler(), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 117 => function ($stackPos) {
+ $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(3-2)], null, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_SEMICOLON);
+ $this->checkNamespace($this->semValue);
+ },
+ 118 => function ($stackPos) {
+ $this->semValue = new Stmt\Namespace_($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
+ $this->checkNamespace($this->semValue);
+ },
+ 119 => function ($stackPos) {
+ $this->semValue = new Stmt\Namespace_(null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ $this->semValue->setAttribute('kind', Stmt\Namespace_::KIND_BRACED);
+ $this->checkNamespace($this->semValue);
+ },
+ 120 => function ($stackPos) {
+ $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(3-2)], Stmt\Use_::TYPE_NORMAL, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 121 => function ($stackPos) {
+ $this->semValue = new Stmt\Use_($this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 122 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 123 => function ($stackPos) {
+ $this->semValue = new Stmt\Const_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 124 => function ($stackPos) {
+ $this->semValue = Stmt\Use_::TYPE_FUNCTION;
+ },
+ 125 => function ($stackPos) {
+ $this->semValue = Stmt\Use_::TYPE_CONSTANT;
+ },
+ 126 => function ($stackPos) {
+ $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->semStack[$stackPos-(7-2)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ },
+ 127 => function ($stackPos) {
+ $this->semValue = new Stmt\GroupUse($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-5)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 128 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 129 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 130 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 131 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 132 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 133 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 134 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 135 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 136 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 137 => function ($stackPos) {
+ $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
+ },
+ 138 => function ($stackPos) {
+ $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
+ },
+ 139 => function ($stackPos) {
+ $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(1-1)], null, Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(1-1));
+ },
+ 140 => function ($stackPos) {
+ $this->semValue = new Stmt\UseUse($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], Stmt\Use_::TYPE_UNKNOWN, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->checkUseUse($this->semValue, $stackPos-(3-3));
+ },
+ 141 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)]; $this->semValue->type = Stmt\Use_::TYPE_NORMAL;
+ },
+ 142 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)]; $this->semValue->type = $this->semStack[$stackPos-(2-1)];
+ },
+ 143 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 144 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 145 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 146 => function ($stackPos) {
+ $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 147 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 148 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 149 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 150 => function ($stackPos) {
+ $this->semValue = new Node\Const_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 151 => function ($stackPos) {
+ if (is_array($this->semStack[$stackPos-(2-2)])) { $this->semValue = array_merge($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]); } else { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; };
+ },
+ 152 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 153 => function ($stackPos) {
+ $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
+ if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 154 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 155 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 156 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 157 => function ($stackPos) {
+ throw new Error('__HALT_COMPILER() can only be used from the outermost scope', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 158 => function ($stackPos) {
+
+ if ($this->semStack[$stackPos-(3-2)]) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)]; $attrs = $this->startAttributeStack[$stackPos-(3-1)]; $stmts = $this->semValue; if (!empty($attrs['comments'])) {$stmts[0]->setAttribute('comments', array_merge($attrs['comments'], $stmts[0]->getAttribute('comments', []))); };
+ } else {
+ $startAttributes = $this->startAttributeStack[$stackPos-(3-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
+ if (null === $this->semValue) { $this->semValue = array(); }
+ }
+
+ },
+ 159 => function ($stackPos) {
+ $this->semValue = new Stmt\If_($this->semStack[$stackPos-(7-3)], ['stmts' => is_array($this->semStack[$stackPos-(7-5)]) ? $this->semStack[$stackPos-(7-5)] : array($this->semStack[$stackPos-(7-5)]), 'elseifs' => $this->semStack[$stackPos-(7-6)], 'else' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ },
+ 160 => function ($stackPos) {
+ $this->semValue = new Stmt\If_($this->semStack[$stackPos-(10-3)], ['stmts' => $this->semStack[$stackPos-(10-6)], 'elseifs' => $this->semStack[$stackPos-(10-7)], 'else' => $this->semStack[$stackPos-(10-8)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ },
+ 161 => function ($stackPos) {
+ $this->semValue = new Stmt\While_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 162 => function ($stackPos) {
+ $this->semValue = new Stmt\Do_($this->semStack[$stackPos-(7-5)], is_array($this->semStack[$stackPos-(7-2)]) ? $this->semStack[$stackPos-(7-2)] : array($this->semStack[$stackPos-(7-2)]), $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ },
+ 163 => function ($stackPos) {
+ $this->semValue = new Stmt\For_(['init' => $this->semStack[$stackPos-(9-3)], 'cond' => $this->semStack[$stackPos-(9-5)], 'loop' => $this->semStack[$stackPos-(9-7)], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ },
+ 164 => function ($stackPos) {
+ $this->semValue = new Stmt\Switch_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 165 => function ($stackPos) {
+ $this->semValue = new Stmt\Break_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 166 => function ($stackPos) {
+ $this->semValue = new Stmt\Continue_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 167 => function ($stackPos) {
+ $this->semValue = new Stmt\Return_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 168 => function ($stackPos) {
+ $this->semValue = new Stmt\Global_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 169 => function ($stackPos) {
+ $this->semValue = new Stmt\Static_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 170 => function ($stackPos) {
+ $this->semValue = new Stmt\Echo_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 171 => function ($stackPos) {
+ $this->semValue = new Stmt\InlineHTML($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 172 => function ($stackPos) {
+
+ $e = $this->semStack[$stackPos-(2-1)];
+ if ($e instanceof Expr\Throw_) {
+ // For backwards-compatibility reasons, convert throw in statement position into
+ // Stmt\Throw_ rather than Stmt\Expression(Expr\Throw_).
+ $this->semValue = new Stmt\Throw_($e->expr, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ } else {
+ $this->semValue = new Stmt\Expression($e, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ }
+
+ },
+ 173 => function ($stackPos) {
+ $this->semValue = new Stmt\Unset_($this->semStack[$stackPos-(5-3)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 174 => function ($stackPos) {
+ $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-5)][0], ['keyVar' => null, 'byRef' => $this->semStack[$stackPos-(7-5)][1], 'stmts' => $this->semStack[$stackPos-(7-7)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ },
+ 175 => function ($stackPos) {
+ $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(9-3)], $this->semStack[$stackPos-(9-7)][0], ['keyVar' => $this->semStack[$stackPos-(9-5)], 'byRef' => $this->semStack[$stackPos-(9-7)][1], 'stmts' => $this->semStack[$stackPos-(9-9)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ },
+ 176 => function ($stackPos) {
+ $this->semValue = new Stmt\Foreach_($this->semStack[$stackPos-(6-3)], new Expr\Error($this->startAttributeStack[$stackPos-(6-4)] + $this->endAttributeStack[$stackPos-(6-4)]), ['stmts' => $this->semStack[$stackPos-(6-6)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 177 => function ($stackPos) {
+ $this->semValue = new Stmt\Declare_($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 178 => function ($stackPos) {
+ $this->semValue = new Stmt\TryCatch($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-5)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes); $this->checkTryCatch($this->semValue);
+ },
+ 179 => function ($stackPos) {
+ $this->semValue = new Stmt\Goto_($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 180 => function ($stackPos) {
+ $this->semValue = new Stmt\Label($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 181 => function ($stackPos) {
+ $this->semValue = array(); /* means: no statement */
+ },
+ 182 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 183 => function ($stackPos) {
+ $startAttributes = $this->startAttributeStack[$stackPos-(1-1)]; if (isset($startAttributes['comments'])) { $this->semValue = new Stmt\Nop($startAttributes + $this->endAttributes); } else { $this->semValue = null; };
+ if ($this->semValue === null) $this->semValue = array(); /* means: no statement */
+ },
+ 184 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 185 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 186 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 187 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 188 => function ($stackPos) {
+ $this->semValue = new Stmt\Catch_($this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-7)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ },
+ 189 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 190 => function ($stackPos) {
+ $this->semValue = new Stmt\Finally_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 191 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 192 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 193 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 194 => function ($stackPos) {
+ $this->semValue = false;
+ },
+ 195 => function ($stackPos) {
+ $this->semValue = true;
+ },
+ 196 => function ($stackPos) {
+ $this->semValue = false;
+ },
+ 197 => function ($stackPos) {
+ $this->semValue = true;
+ },
+ 198 => function ($stackPos) {
+ $this->semValue = false;
+ },
+ 199 => function ($stackPos) {
+ $this->semValue = true;
+ },
+ 200 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 201 => function ($stackPos) {
+ $this->semValue = [];
+ },
+ 202 => function ($stackPos) {
+ $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(8-3)], ['byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-5)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ },
+ 203 => function ($stackPos) {
+ $this->semValue = new Stmt\Function_($this->semStack[$stackPos-(9-4)], ['byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-6)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ },
+ 204 => function ($stackPos) {
+ $this->semValue = new Stmt\Class_($this->semStack[$stackPos-(8-3)], ['type' => $this->semStack[$stackPos-(8-2)], 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ $this->checkClass($this->semValue, $stackPos-(8-3));
+ },
+ 205 => function ($stackPos) {
+ $this->semValue = new Stmt\Interface_($this->semStack[$stackPos-(7-3)], ['extends' => $this->semStack[$stackPos-(7-4)], 'stmts' => $this->semStack[$stackPos-(7-6)], 'attrGroups' => $this->semStack[$stackPos-(7-1)]], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ $this->checkInterface($this->semValue, $stackPos-(7-3));
+ },
+ 206 => function ($stackPos) {
+ $this->semValue = new Stmt\Trait_($this->semStack[$stackPos-(6-3)], ['stmts' => $this->semStack[$stackPos-(6-5)], 'attrGroups' => $this->semStack[$stackPos-(6-1)]], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 207 => function ($stackPos) {
+ $this->semValue = new Stmt\Enum_($this->semStack[$stackPos-(8-3)], ['scalarType' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ $this->checkEnum($this->semValue, $stackPos-(8-3));
+ },
+ 208 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 209 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 210 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 211 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 212 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 213 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+ },
+ 214 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+ },
+ 215 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 216 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 217 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 218 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 219 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 220 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 221 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 222 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 223 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 224 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ },
+ 225 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 226 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ },
+ 227 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 228 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ },
+ 229 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 230 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 231 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 232 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 233 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 234 => function ($stackPos) {
+ $this->semValue = new Stmt\DeclareDeclare($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 235 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 236 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-3)];
+ },
+ 237 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 238 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(5-3)];
+ },
+ 239 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 240 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 241 => function ($stackPos) {
+ $this->semValue = new Stmt\Case_($this->semStack[$stackPos-(4-2)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 242 => function ($stackPos) {
+ $this->semValue = new Stmt\Case_(null, $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 243 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 244 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 245 => function ($stackPos) {
+ $this->semValue = new Expr\Match_($this->semStack[$stackPos-(7-3)], $this->semStack[$stackPos-(7-6)], $this->startAttributeStack[$stackPos-(7-1)] + $this->endAttributes);
+ },
+ 246 => function ($stackPos) {
+ $this->semValue = [];
+ },
+ 247 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 248 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 249 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 250 => function ($stackPos) {
+ $this->semValue = new Node\MatchArm($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 251 => function ($stackPos) {
+ $this->semValue = new Node\MatchArm(null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 252 => function ($stackPos) {
+ $this->semValue = is_array($this->semStack[$stackPos-(1-1)]) ? $this->semStack[$stackPos-(1-1)] : array($this->semStack[$stackPos-(1-1)]);
+ },
+ 253 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 254 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 255 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 256 => function ($stackPos) {
+ $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(5-3)], is_array($this->semStack[$stackPos-(5-5)]) ? $this->semStack[$stackPos-(5-5)] : array($this->semStack[$stackPos-(5-5)]), $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 257 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 258 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 259 => function ($stackPos) {
+ $this->semValue = new Stmt\ElseIf_($this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-6)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 260 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 261 => function ($stackPos) {
+ $this->semValue = new Stmt\Else_(is_array($this->semStack[$stackPos-(2-2)]) ? $this->semStack[$stackPos-(2-2)] : array($this->semStack[$stackPos-(2-2)]), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 262 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 263 => function ($stackPos) {
+ $this->semValue = new Stmt\Else_($this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 264 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+ },
+ 265 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(2-2)], true);
+ },
+ 266 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+ },
+ 267 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)], false);
+ },
+ 268 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 269 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 270 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 271 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 272 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 273 => function ($stackPos) {
+ $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
+ },
+ 274 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
+ },
+ 275 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
+ },
+ 276 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
+ },
+ 277 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_READONLY;
+ },
+ 278 => function ($stackPos) {
+ $this->semValue = new Node\Param($this->semStack[$stackPos-(6-6)], null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
+ $this->checkParam($this->semValue);
+ },
+ 279 => function ($stackPos) {
+ $this->semValue = new Node\Param($this->semStack[$stackPos-(8-6)], $this->semStack[$stackPos-(8-8)], $this->semStack[$stackPos-(8-3)], $this->semStack[$stackPos-(8-4)], $this->semStack[$stackPos-(8-5)], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes, $this->semStack[$stackPos-(8-2)], $this->semStack[$stackPos-(8-1)]);
+ $this->checkParam($this->semValue);
+ },
+ 280 => function ($stackPos) {
+ $this->semValue = new Node\Param(new Expr\Error($this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes), null, $this->semStack[$stackPos-(6-3)], $this->semStack[$stackPos-(6-4)], $this->semStack[$stackPos-(6-5)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes, $this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-1)]);
+ },
+ 281 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 282 => function ($stackPos) {
+ $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 283 => function ($stackPos) {
+ $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 284 => function ($stackPos) {
+ $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 285 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 286 => function ($stackPos) {
+ $this->semValue = new Node\Name('static', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 287 => function ($stackPos) {
+ $this->semValue = $this->handleBuiltinTypes($this->semStack[$stackPos-(1-1)]);
+ },
+ 288 => function ($stackPos) {
+ $this->semValue = new Node\Identifier('array', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 289 => function ($stackPos) {
+ $this->semValue = new Node\Identifier('callable', $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 290 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ },
+ 291 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 292 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ },
+ 293 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 294 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ },
+ 295 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 296 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ },
+ 297 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 298 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 299 => function ($stackPos) {
+ $this->semValue = new Node\NullableType($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 300 => function ($stackPos) {
+ $this->semValue = new Node\UnionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 301 => function ($stackPos) {
+ $this->semValue = new Node\IntersectionType($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 302 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 303 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 304 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 305 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-2)];
+ },
+ 306 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 307 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 308 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-2)];
+ },
+ 309 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(3-2)]);
+ },
+ 310 => function ($stackPos) {
+ $this->semValue = new Node\VariadicPlaceholder($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 311 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 312 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 313 => function ($stackPos) {
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(1-1)], false, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 314 => function ($stackPos) {
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], true, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 315 => function ($stackPos) {
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(2-2)], false, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 316 => function ($stackPos) {
+ $this->semValue = new Node\Arg($this->semStack[$stackPos-(3-3)], false, false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->semStack[$stackPos-(3-1)]);
+ },
+ 317 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 318 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 319 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 320 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 321 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 322 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 323 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 324 => function ($stackPos) {
+ $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 325 => function ($stackPos) {
+ $this->semValue = new Stmt\StaticVar($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 326 => function ($stackPos) {
+ if ($this->semStack[$stackPos-(2-2)] !== null) { $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)]; }
+ },
+ 327 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 328 => function ($stackPos) {
+ $startAttributes = $this->lookaheadStartAttributes; if (isset($startAttributes['comments'])) { $nop = new Stmt\Nop($this->createCommentNopAttributes($startAttributes['comments'])); } else { $nop = null; };
+ if ($nop !== null) { $this->semStack[$stackPos-(1-1)][] = $nop; } $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 329 => function ($stackPos) {
+ $this->semValue = new Stmt\Property($this->semStack[$stackPos-(5-2)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-1)]);
+ $this->checkProperty($this->semValue, $stackPos-(5-2));
+ },
+ 330 => function ($stackPos) {
+ $this->semValue = new Stmt\ClassConst($this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-2)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes, $this->semStack[$stackPos-(5-1)]);
+ $this->checkClassConst($this->semValue, $stackPos-(5-2));
+ },
+ 331 => function ($stackPos) {
+ $this->semValue = new Stmt\ClassMethod($this->semStack[$stackPos-(10-5)], ['type' => $this->semStack[$stackPos-(10-2)], 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-7)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ $this->checkClassMethod($this->semValue, $stackPos-(10-2));
+ },
+ 332 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUse($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 333 => function ($stackPos) {
+ $this->semValue = new Stmt\EnumCase($this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->semStack[$stackPos-(5-1)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 334 => function ($stackPos) {
+ $this->semValue = null; /* will be skipped */
+ },
+ 335 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 336 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 337 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 338 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 339 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Precedence($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 340 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(5-1)][0], $this->semStack[$stackPos-(5-1)][1], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-4)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 341 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], $this->semStack[$stackPos-(4-3)], null, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 342 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 343 => function ($stackPos) {
+ $this->semValue = new Stmt\TraitUseAdaptation\Alias($this->semStack[$stackPos-(4-1)][0], $this->semStack[$stackPos-(4-1)][1], null, $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 344 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)]);
+ },
+ 345 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 346 => function ($stackPos) {
+ $this->semValue = array(null, $this->semStack[$stackPos-(1-1)]);
+ },
+ 347 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 348 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 349 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 350 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 351 => function ($stackPos) {
+ $this->semValue = 0;
+ },
+ 352 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 353 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 354 => function ($stackPos) {
+ $this->checkModifier($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $stackPos-(2-2)); $this->semValue = $this->semStack[$stackPos-(2-1)] | $this->semStack[$stackPos-(2-2)];
+ },
+ 355 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PUBLIC;
+ },
+ 356 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PROTECTED;
+ },
+ 357 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_PRIVATE;
+ },
+ 358 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_STATIC;
+ },
+ 359 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_ABSTRACT;
+ },
+ 360 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_FINAL;
+ },
+ 361 => function ($stackPos) {
+ $this->semValue = Stmt\Class_::MODIFIER_READONLY;
+ },
+ 362 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 363 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 364 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 365 => function ($stackPos) {
+ $this->semValue = new Node\VarLikeIdentifier(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 366 => function ($stackPos) {
+ $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(1-1)], null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 367 => function ($stackPos) {
+ $this->semValue = new Stmt\PropertyProperty($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 368 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 369 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 370 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 371 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 372 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 373 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 374 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 375 => function ($stackPos) {
+ $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 376 => function ($stackPos) {
+ $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 377 => function ($stackPos) {
+ $this->semValue = new Expr\Assign($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 378 => function ($stackPos) {
+ $this->semValue = new Expr\AssignRef($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 379 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 380 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 381 => function ($stackPos) {
+ $this->semValue = new Expr\Clone_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 382 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 383 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 384 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 385 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 386 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 387 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 388 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 389 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 390 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 391 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 392 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 393 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 394 => function ($stackPos) {
+ $this->semValue = new Expr\AssignOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 395 => function ($stackPos) {
+ $this->semValue = new Expr\PostInc($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 396 => function ($stackPos) {
+ $this->semValue = new Expr\PreInc($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 397 => function ($stackPos) {
+ $this->semValue = new Expr\PostDec($this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 398 => function ($stackPos) {
+ $this->semValue = new Expr\PreDec($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 399 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BooleanOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 400 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BooleanAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 401 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\LogicalOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 402 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\LogicalAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 403 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\LogicalXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 404 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseOr($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 405 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 406 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseAnd($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 407 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\BitwiseXor($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 408 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Concat($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 409 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Plus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 410 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Minus($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 411 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Mul($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 412 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Div($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 413 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Mod($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 414 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\ShiftLeft($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 415 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\ShiftRight($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 416 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Pow($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 417 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryPlus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 418 => function ($stackPos) {
+ $this->semValue = new Expr\UnaryMinus($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 419 => function ($stackPos) {
+ $this->semValue = new Expr\BooleanNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 420 => function ($stackPos) {
+ $this->semValue = new Expr\BitwiseNot($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 421 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Identical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 422 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\NotIdentical($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 423 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Equal($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 424 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\NotEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 425 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Spaceship($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 426 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Smaller($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 427 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\SmallerOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 428 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Greater($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 429 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\GreaterOrEqual($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 430 => function ($stackPos) {
+ $this->semValue = new Expr\Instanceof_($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 431 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 432 => function ($stackPos) {
+ $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(5-1)], $this->semStack[$stackPos-(5-3)], $this->semStack[$stackPos-(5-5)], $this->startAttributeStack[$stackPos-(5-1)] + $this->endAttributes);
+ },
+ 433 => function ($stackPos) {
+ $this->semValue = new Expr\Ternary($this->semStack[$stackPos-(4-1)], null, $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 434 => function ($stackPos) {
+ $this->semValue = new Expr\BinaryOp\Coalesce($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 435 => function ($stackPos) {
+ $this->semValue = new Expr\Isset_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 436 => function ($stackPos) {
+ $this->semValue = new Expr\Empty_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 437 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 438 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_INCLUDE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 439 => function ($stackPos) {
+ $this->semValue = new Expr\Eval_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 440 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 441 => function ($stackPos) {
+ $this->semValue = new Expr\Include_($this->semStack[$stackPos-(2-2)], Expr\Include_::TYPE_REQUIRE_ONCE, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 442 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Int_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 443 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
+ $attrs['kind'] = $this->getFloatCastKind($this->semStack[$stackPos-(2-1)]);
+ $this->semValue = new Expr\Cast\Double($this->semStack[$stackPos-(2-2)], $attrs);
+ },
+ 444 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\String_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 445 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Array_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 446 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Object_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 447 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Bool_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 448 => function ($stackPos) {
+ $this->semValue = new Expr\Cast\Unset_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 449 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes;
+ $attrs['kind'] = strtolower($this->semStack[$stackPos-(2-1)]) === 'exit' ? Expr\Exit_::KIND_EXIT : Expr\Exit_::KIND_DIE;
+ $this->semValue = new Expr\Exit_($this->semStack[$stackPos-(2-2)], $attrs);
+ },
+ 450 => function ($stackPos) {
+ $this->semValue = new Expr\ErrorSuppress($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 451 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 452 => function ($stackPos) {
+ $this->semValue = new Expr\ShellExec($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 453 => function ($stackPos) {
+ $this->semValue = new Expr\Print_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 454 => function ($stackPos) {
+ $this->semValue = new Expr\Yield_(null, null, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 455 => function ($stackPos) {
+ $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(2-2)], null, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 456 => function ($stackPos) {
+ $this->semValue = new Expr\Yield_($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-2)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 457 => function ($stackPos) {
+ $this->semValue = new Expr\YieldFrom($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 458 => function ($stackPos) {
+ $this->semValue = new Expr\Throw_($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 459 => function ($stackPos) {
+ $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'returnType' => $this->semStack[$stackPos-(8-6)], 'expr' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ },
+ 460 => function ($stackPos) {
+ $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ },
+ 461 => function ($stackPos) {
+ $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(8-2)], 'params' => $this->semStack[$stackPos-(8-4)], 'uses' => $this->semStack[$stackPos-(8-6)], 'returnType' => $this->semStack[$stackPos-(8-7)], 'stmts' => $this->semStack[$stackPos-(8-8)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes);
+ },
+ 462 => function ($stackPos) {
+ $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'uses' => $this->semStack[$stackPos-(9-7)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => []], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ },
+ 463 => function ($stackPos) {
+ $this->semValue = new Expr\ArrowFunction(['static' => false, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'returnType' => $this->semStack[$stackPos-(9-7)], 'expr' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ },
+ 464 => function ($stackPos) {
+ $this->semValue = new Expr\ArrowFunction(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'returnType' => $this->semStack[$stackPos-(10-8)], 'expr' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ },
+ 465 => function ($stackPos) {
+ $this->semValue = new Expr\Closure(['static' => false, 'byRef' => $this->semStack[$stackPos-(9-3)], 'params' => $this->semStack[$stackPos-(9-5)], 'uses' => $this->semStack[$stackPos-(9-7)], 'returnType' => $this->semStack[$stackPos-(9-8)], 'stmts' => $this->semStack[$stackPos-(9-9)], 'attrGroups' => $this->semStack[$stackPos-(9-1)]], $this->startAttributeStack[$stackPos-(9-1)] + $this->endAttributes);
+ },
+ 466 => function ($stackPos) {
+ $this->semValue = new Expr\Closure(['static' => true, 'byRef' => $this->semStack[$stackPos-(10-4)], 'params' => $this->semStack[$stackPos-(10-6)], 'uses' => $this->semStack[$stackPos-(10-8)], 'returnType' => $this->semStack[$stackPos-(10-9)], 'stmts' => $this->semStack[$stackPos-(10-10)], 'attrGroups' => $this->semStack[$stackPos-(10-1)]], $this->startAttributeStack[$stackPos-(10-1)] + $this->endAttributes);
+ },
+ 467 => function ($stackPos) {
+ $this->semValue = array(new Stmt\Class_(null, ['type' => 0, 'extends' => $this->semStack[$stackPos-(8-4)], 'implements' => $this->semStack[$stackPos-(8-5)], 'stmts' => $this->semStack[$stackPos-(8-7)], 'attrGroups' => $this->semStack[$stackPos-(8-1)]], $this->startAttributeStack[$stackPos-(8-1)] + $this->endAttributes), $this->semStack[$stackPos-(8-3)]);
+ $this->checkClass($this->semValue[0], -1);
+ },
+ 468 => function ($stackPos) {
+ $this->semValue = new Expr\New_($this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 469 => function ($stackPos) {
+ list($class, $ctorArgs) = $this->semStack[$stackPos-(2-2)]; $this->semValue = new Expr\New_($class, $ctorArgs, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 470 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 471 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(4-3)];
+ },
+ 472 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 473 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 474 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 475 => function ($stackPos) {
+ $this->semValue = new Expr\ClosureUse($this->semStack[$stackPos-(2-2)], $this->semStack[$stackPos-(2-1)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 476 => function ($stackPos) {
+ $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 477 => function ($stackPos) {
+ $this->semValue = new Expr\FuncCall($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 478 => function ($stackPos) {
+ $this->semValue = new Expr\StaticCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 479 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 480 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 481 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 482 => function ($stackPos) {
+ $this->semValue = new Name($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 483 => function ($stackPos) {
+ $this->semValue = new Name\FullyQualified(substr($this->semStack[$stackPos-(1-1)], 1), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 484 => function ($stackPos) {
+ $this->semValue = new Name\Relative(substr($this->semStack[$stackPos-(1-1)], 10), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 485 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 486 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 487 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 488 => function ($stackPos) {
+ $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+ },
+ 489 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 490 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 491 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 492 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 493 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 494 => function ($stackPos) {
+ $this->semValue = array(new Scalar\EncapsedStringPart(Scalar\String_::parseEscapeSequences($this->semStack[$stackPos-(1-1)], '`'), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes));
+ },
+ 495 => function ($stackPos) {
+ foreach ($this->semStack[$stackPos-(1-1)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '`', true); } }; $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 496 => function ($stackPos) {
+ $this->semValue = array();
+ },
+ 497 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 498 => function ($stackPos) {
+ $this->semValue = new Expr\ConstFetch($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 499 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Line($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 500 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\File($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 501 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Dir($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 502 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Class_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 503 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Trait_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 504 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Method($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 505 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Function_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 506 => function ($stackPos) {
+ $this->semValue = new Scalar\MagicConst\Namespace_($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 507 => function ($stackPos) {
+ $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 508 => function ($stackPos) {
+ $this->semValue = new Expr\ClassConstFetch($this->semStack[$stackPos-(3-1)], new Expr\Error($this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)]), $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes); $this->errorState = 2;
+ },
+ 509 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_SHORT;
+ $this->semValue = new Expr\Array_($this->semStack[$stackPos-(3-2)], $attrs);
+ },
+ 510 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes; $attrs['kind'] = Expr\Array_::KIND_LONG;
+ $this->semValue = new Expr\Array_($this->semStack[$stackPos-(4-3)], $attrs);
+ },
+ 511 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 512 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes; $attrs['kind'] = ($this->semStack[$stackPos-(1-1)][0] === "'" || ($this->semStack[$stackPos-(1-1)][1] === "'" && ($this->semStack[$stackPos-(1-1)][0] === 'b' || $this->semStack[$stackPos-(1-1)][0] === 'B')) ? Scalar\String_::KIND_SINGLE_QUOTED : Scalar\String_::KIND_DOUBLE_QUOTED);
+ $this->semValue = new Scalar\String_(Scalar\String_::parse($this->semStack[$stackPos-(1-1)]), $attrs);
+ },
+ 513 => function ($stackPos) {
+ $attrs = $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes; $attrs['kind'] = Scalar\String_::KIND_DOUBLE_QUOTED;
+ foreach ($this->semStack[$stackPos-(3-2)] as $s) { if ($s instanceof Node\Scalar\EncapsedStringPart) { $s->value = Node\Scalar\String_::parseEscapeSequences($s->value, '"', true); } }; $this->semValue = new Scalar\Encapsed($this->semStack[$stackPos-(3-2)], $attrs);
+ },
+ 514 => function ($stackPos) {
+ $this->semValue = $this->parseLNumber($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 515 => function ($stackPos) {
+ $this->semValue = new Scalar\DNumber(Scalar\DNumber::parse($this->semStack[$stackPos-(1-1)]), $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 516 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 517 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 518 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 519 => function ($stackPos) {
+ $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
+ },
+ 520 => function ($stackPos) {
+ $this->semValue = $this->parseDocString($this->semStack[$stackPos-(2-1)], '', $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(2-2)] + $this->endAttributeStack[$stackPos-(2-2)], true);
+ },
+ 521 => function ($stackPos) {
+ $this->semValue = $this->parseDocString($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-2)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes, $this->startAttributeStack[$stackPos-(3-3)] + $this->endAttributeStack[$stackPos-(3-3)], true);
+ },
+ 522 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 523 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 524 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 525 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 526 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 527 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 528 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 529 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 530 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 531 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 532 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 533 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 534 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 535 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 536 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 537 => function ($stackPos) {
+ $this->semValue = new Expr\MethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 538 => function ($stackPos) {
+ $this->semValue = new Expr\NullsafeMethodCall($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->semStack[$stackPos-(4-4)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 539 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 540 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 541 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 542 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 543 => function ($stackPos) {
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 544 => function ($stackPos) {
+ $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 545 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 546 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 547 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 548 => function ($stackPos) {
+ $this->semValue = new Expr\Variable(new Expr\Error($this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes), $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes); $this->errorState = 2;
+ },
+ 549 => function ($stackPos) {
+ $var = $this->semStack[$stackPos-(1-1)]->name; $this->semValue = \is_string($var) ? new Node\VarLikeIdentifier($var, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes) : $var;
+ },
+ 550 => function ($stackPos) {
+ $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 551 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 552 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 553 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 554 => function ($stackPos) {
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 555 => function ($stackPos) {
+ $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 556 => function ($stackPos) {
+ $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 557 => function ($stackPos) {
+ $this->semValue = new Expr\StaticPropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 558 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 559 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 560 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 561 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 562 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 563 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 564 => function ($stackPos) {
+ $this->semValue = new Expr\Error($this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes); $this->errorState = 2;
+ },
+ 565 => function ($stackPos) {
+ $this->semValue = new Expr\List_($this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 566 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)]; $end = count($this->semValue)-1; if ($this->semValue[$end] === null) array_pop($this->semValue);
+ },
+ 567 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos];
+ },
+ 568 => function ($stackPos) {
+ /* do nothing -- prevent default action of $$=$this->semStack[$1]. See $551. */
+ },
+ 569 => function ($stackPos) {
+ $this->semStack[$stackPos-(3-1)][] = $this->semStack[$stackPos-(3-3)]; $this->semValue = $this->semStack[$stackPos-(3-1)];
+ },
+ 570 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 571 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 572 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 573 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(1-1)], null, false, $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 574 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 575 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(4-4)], $this->semStack[$stackPos-(4-1)], true, $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 576 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(3-3)], $this->semStack[$stackPos-(3-1)], false, $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 577 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayItem($this->semStack[$stackPos-(2-2)], null, false, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes, true, $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 578 => function ($stackPos) {
+ $this->semValue = null;
+ },
+ 579 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 580 => function ($stackPos) {
+ $this->semStack[$stackPos-(2-1)][] = $this->semStack[$stackPos-(2-2)]; $this->semValue = $this->semStack[$stackPos-(2-1)];
+ },
+ 581 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(1-1)]);
+ },
+ 582 => function ($stackPos) {
+ $this->semValue = array($this->semStack[$stackPos-(2-1)], $this->semStack[$stackPos-(2-2)]);
+ },
+ 583 => function ($stackPos) {
+ $this->semValue = new Scalar\EncapsedStringPart($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 584 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 585 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ 586 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(4-1)], $this->semStack[$stackPos-(4-3)], $this->startAttributeStack[$stackPos-(4-1)] + $this->endAttributes);
+ },
+ 587 => function ($stackPos) {
+ $this->semValue = new Expr\PropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 588 => function ($stackPos) {
+ $this->semValue = new Expr\NullsafePropertyFetch($this->semStack[$stackPos-(3-1)], $this->semStack[$stackPos-(3-3)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 589 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 590 => function ($stackPos) {
+ $this->semValue = new Expr\Variable($this->semStack[$stackPos-(3-2)], $this->startAttributeStack[$stackPos-(3-1)] + $this->endAttributes);
+ },
+ 591 => function ($stackPos) {
+ $this->semValue = new Expr\ArrayDimFetch($this->semStack[$stackPos-(6-2)], $this->semStack[$stackPos-(6-4)], $this->startAttributeStack[$stackPos-(6-1)] + $this->endAttributes);
+ },
+ 592 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(3-2)];
+ },
+ 593 => function ($stackPos) {
+ $this->semValue = new Scalar\String_($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 594 => function ($stackPos) {
+ $this->semValue = $this->parseNumString($this->semStack[$stackPos-(1-1)], $this->startAttributeStack[$stackPos-(1-1)] + $this->endAttributes);
+ },
+ 595 => function ($stackPos) {
+ $this->semValue = $this->parseNumString('-' . $this->semStack[$stackPos-(2-2)], $this->startAttributeStack[$stackPos-(2-1)] + $this->endAttributes);
+ },
+ 596 => function ($stackPos) {
+ $this->semValue = $this->semStack[$stackPos-(1-1)];
+ },
+ ];
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php b/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php
new file mode 100644
index 000000000..b76a5d94c
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/Parser/Tokens.php
@@ -0,0 +1,148 @@
+<?php
+
+namespace PhpParser\Parser;
+
+/* GENERATED file based on grammar/tokens.y */
+final class Tokens
+{
+ const YYERRTOK = 256;
+ const T_THROW = 257;
+ const T_INCLUDE = 258;
+ const T_INCLUDE_ONCE = 259;
+ const T_EVAL = 260;
+ const T_REQUIRE = 261;
+ const T_REQUIRE_ONCE = 262;
+ const T_LOGICAL_OR = 263;
+ const T_LOGICAL_XOR = 264;
+ const T_LOGICAL_AND = 265;
+ const T_PRINT = 266;
+ const T_YIELD = 267;
+ const T_DOUBLE_ARROW = 268;
+ const T_YIELD_FROM = 269;
+ const T_PLUS_EQUAL = 270;
+ const T_MINUS_EQUAL = 271;
+ const T_MUL_EQUAL = 272;
+ const T_DIV_EQUAL = 273;
+ const T_CONCAT_EQUAL = 274;
+ const T_MOD_EQUAL = 275;
+ const T_AND_EQUAL = 276;
+ const T_OR_EQUAL = 277;
+ const T_XOR_EQUAL = 278;
+ const T_SL_EQUAL = 279;
+ const T_SR_EQUAL = 280;
+ const T_POW_EQUAL = 281;
+ const T_COALESCE_EQUAL = 282;
+ const T_COALESCE = 283;
+ const T_BOOLEAN_OR = 284;
+ const T_BOOLEAN_AND = 285;
+ const T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG = 286;
+ const T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG = 287;
+ const T_IS_EQUAL = 288;
+ const T_IS_NOT_EQUAL = 289;
+ const T_IS_IDENTICAL = 290;
+ const T_IS_NOT_IDENTICAL = 291;
+ const T_SPACESHIP = 292;
+ const T_IS_SMALLER_OR_EQUAL = 293;
+ const T_IS_GREATER_OR_EQUAL = 294;
+ const T_SL = 295;
+ const T_SR = 296;
+ const T_INSTANCEOF = 297;
+ const T_INC = 298;
+ const T_DEC = 299;
+ const T_INT_CAST = 300;
+ const T_DOUBLE_CAST = 301;
+ const T_STRING_CAST = 302;
+ const T_ARRAY_CAST = 303;
+ const T_OBJECT_CAST = 304;
+ const T_BOOL_CAST = 305;
+ const T_UNSET_CAST = 306;
+ const T_POW = 307;
+ const T_NEW = 308;
+ const T_CLONE = 309;
+ const T_EXIT = 310;
+ const T_IF = 311;
+ const T_ELSEIF = 312;
+ const T_ELSE = 313;
+ const T_ENDIF = 314;
+ const T_LNUMBER = 315;
+ const T_DNUMBER = 316;
+ const T_STRING = 317;
+ const T_STRING_VARNAME = 318;
+ const T_VARIABLE = 319;
+ const T_NUM_STRING = 320;
+ const T_INLINE_HTML = 321;
+ const T_ENCAPSED_AND_WHITESPACE = 322;
+ const T_CONSTANT_ENCAPSED_STRING = 323;
+ const T_ECHO = 324;
+ const T_DO = 325;
+ const T_WHILE = 326;
+ const T_ENDWHILE = 327;
+ const T_FOR = 328;
+ const T_ENDFOR = 329;
+ const T_FOREACH = 330;
+ const T_ENDFOREACH = 331;
+ const T_DECLARE = 332;
+ const T_ENDDECLARE = 333;
+ const T_AS = 334;
+ const T_SWITCH = 335;
+ const T_MATCH = 336;
+ const T_ENDSWITCH = 337;
+ const T_CASE = 338;
+ const T_DEFAULT = 339;
+ const T_BREAK = 340;
+ const T_CONTINUE = 341;
+ const T_GOTO = 342;
+ const T_FUNCTION = 343;
+ const T_FN = 344;
+ const T_CONST = 345;
+ const T_RETURN = 346;
+ const T_TRY = 347;
+ const T_CATCH = 348;
+ const T_FINALLY = 349;
+ const T_USE = 350;
+ const T_INSTEADOF = 351;
+ const T_GLOBAL = 352;
+ const T_STATIC = 353;
+ const T_ABSTRACT = 354;
+ const T_FINAL = 355;
+ const T_PRIVATE = 356;
+ const T_PROTECTED = 357;
+ const T_PUBLIC = 358;
+ const T_READONLY = 359;
+ const T_VAR = 360;
+ const T_UNSET = 361;
+ const T_ISSET = 362;
+ const T_EMPTY = 363;
+ const T_HALT_COMPILER = 364;
+ const T_CLASS = 365;
+ const T_TRAIT = 366;
+ const T_INTERFACE = 367;
+ const T_ENUM = 368;
+ const T_EXTENDS = 369;
+ const T_IMPLEMENTS = 370;
+ const T_OBJECT_OPERATOR = 371;
+ const T_NULLSAFE_OBJECT_OPERATOR = 372;
+ const T_LIST = 373;
+ const T_ARRAY = 374;
+ const T_CALLABLE = 375;
+ const T_CLASS_C = 376;
+ const T_TRAIT_C = 377;
+ const T_METHOD_C = 378;
+ const T_FUNC_C = 379;
+ const T_LINE = 380;
+ const T_FILE = 381;
+ const T_START_HEREDOC = 382;
+ const T_END_HEREDOC = 383;
+ const T_DOLLAR_OPEN_CURLY_BRACES = 384;
+ const T_CURLY_OPEN = 385;
+ const T_PAAMAYIM_NEKUDOTAYIM = 386;
+ const T_NAMESPACE = 387;
+ const T_NS_C = 388;
+ const T_DIR = 389;
+ const T_NS_SEPARATOR = 390;
+ const T_ELLIPSIS = 391;
+ const T_NAME_FULLY_QUALIFIED = 392;
+ const T_NAME_QUALIFIED = 393;
+ const T_NAME_RELATIVE = 394;
+ const T_ATTRIBUTE = 395;
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php
new file mode 100644
index 000000000..5ee5a64bb
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/ParserAbstract.php
@@ -0,0 +1,1029 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+/*
+ * This parser is based on a skeleton written by Moriyoshi Koizumi, which in
+ * turn is based on work by Masato Bito.
+ */
+use PhpParser\Node\Expr;
+use PhpParser\Node\Expr\Cast\Double;
+use PhpParser\Node\Name;
+use PhpParser\Node\Param;
+use PhpParser\Node\Scalar\Encapsed;
+use PhpParser\Node\Scalar\LNumber;
+use PhpParser\Node\Scalar\String_;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\ClassConst;
+use PhpParser\Node\Stmt\ClassMethod;
+use PhpParser\Node\Stmt\Enum_;
+use PhpParser\Node\Stmt\Interface_;
+use PhpParser\Node\Stmt\Namespace_;
+use PhpParser\Node\Stmt\Property;
+use PhpParser\Node\Stmt\TryCatch;
+use PhpParser\Node\Stmt\UseUse;
+use PhpParser\Node\VarLikeIdentifier;
+
+abstract class ParserAbstract implements Parser
+{
+ const SYMBOL_NONE = -1;
+
+ /*
+ * The following members will be filled with generated parsing data:
+ */
+
+ /** @var int Size of $tokenToSymbol map */
+ protected $tokenToSymbolMapSize;
+ /** @var int Size of $action table */
+ protected $actionTableSize;
+ /** @var int Size of $goto table */
+ protected $gotoTableSize;
+
+ /** @var int Symbol number signifying an invalid token */
+ protected $invalidSymbol;
+ /** @var int Symbol number of error recovery token */
+ protected $errorSymbol;
+ /** @var int Action number signifying default action */
+ protected $defaultAction;
+ /** @var int Rule number signifying that an unexpected token was encountered */
+ protected $unexpectedTokenRule;
+
+ protected $YY2TBLSTATE;
+ /** @var int Number of non-leaf states */
+ protected $numNonLeafStates;
+
+ /** @var int[] Map of lexer tokens to internal symbols */
+ protected $tokenToSymbol;
+ /** @var string[] Map of symbols to their names */
+ protected $symbolToName;
+ /** @var array Names of the production rules (only necessary for debugging) */
+ protected $productions;
+
+ /** @var int[] Map of states to a displacement into the $action table. The corresponding action for this
+ * state/symbol pair is $action[$actionBase[$state] + $symbol]. If $actionBase[$state] is 0, the
+ * action is defaulted, i.e. $actionDefault[$state] should be used instead. */
+ protected $actionBase;
+ /** @var int[] Table of actions. Indexed according to $actionBase comment. */
+ protected $action;
+ /** @var int[] Table indexed analogously to $action. If $actionCheck[$actionBase[$state] + $symbol] != $symbol
+ * then the action is defaulted, i.e. $actionDefault[$state] should be used instead. */
+ protected $actionCheck;
+ /** @var int[] Map of states to their default action */
+ protected $actionDefault;
+ /** @var callable[] Semantic action callbacks */
+ protected $reduceCallbacks;
+
+ /** @var int[] Map of non-terminals to a displacement into the $goto table. The corresponding goto state for this
+ * non-terminal/state pair is $goto[$gotoBase[$nonTerminal] + $state] (unless defaulted) */
+ protected $gotoBase;
+ /** @var int[] Table of states to goto after reduction. Indexed according to $gotoBase comment. */
+ protected $goto;
+ /** @var int[] Table indexed analogously to $goto. If $gotoCheck[$gotoBase[$nonTerminal] + $state] != $nonTerminal
+ * then the goto state is defaulted, i.e. $gotoDefault[$nonTerminal] should be used. */
+ protected $gotoCheck;
+ /** @var int[] Map of non-terminals to the default state to goto after their reduction */
+ protected $gotoDefault;
+
+ /** @var int[] Map of rules to the non-terminal on their left-hand side, i.e. the non-terminal to use for
+ * determining the state to goto after reduction. */
+ protected $ruleToNonTerminal;
+ /** @var int[] Map of rules to the length of their right-hand side, which is the number of elements that have to
+ * be popped from the stack(s) on reduction. */
+ protected $ruleToLength;
+
+ /*
+ * The following members are part of the parser state:
+ */
+
+ /** @var Lexer Lexer that is used when parsing */
+ protected $lexer;
+ /** @var mixed Temporary value containing the result of last semantic action (reduction) */
+ protected $semValue;
+ /** @var array Semantic value stack (contains values of tokens and semantic action results) */
+ protected $semStack;
+ /** @var array[] Start attribute stack */
+ protected $startAttributeStack;
+ /** @var array[] End attribute stack */
+ protected $endAttributeStack;
+ /** @var array End attributes of last *shifted* token */
+ protected $endAttributes;
+ /** @var array Start attributes of last *read* token */
+ protected $lookaheadStartAttributes;
+
+ /** @var ErrorHandler Error handler */
+ protected $errorHandler;
+ /** @var int Error state, used to avoid error floods */
+ protected $errorState;
+
+ /**
+ * Initialize $reduceCallbacks map.
+ */
+ abstract protected function initReduceCallbacks();
+
+ /**
+ * Creates a parser instance.
+ *
+ * Options: Currently none.
+ *
+ * @param Lexer $lexer A lexer
+ * @param array $options Options array.
+ */
+ public function __construct(Lexer $lexer, array $options = []) {
+ $this->lexer = $lexer;
+
+ if (isset($options['throwOnError'])) {
+ throw new \LogicException(
+ '"throwOnError" is no longer supported, use "errorHandler" instead');
+ }
+
+ $this->initReduceCallbacks();
+ }
+
+ /**
+ * Parses PHP code into a node tree.
+ *
+ * If a non-throwing error handler is used, the parser will continue parsing after an error
+ * occurred and attempt to build a partial AST.
+ *
+ * @param string $code The source code to parse
+ * @param ErrorHandler|null $errorHandler Error handler to use for lexer/parser errors, defaults
+ * to ErrorHandler\Throwing.
+ *
+ * @return Node\Stmt[]|null Array of statements (or null non-throwing error handler is used and
+ * the parser was unable to recover from an error).
+ */
+ public function parse(string $code, ErrorHandler $errorHandler = null) {
+ $this->errorHandler = $errorHandler ?: new ErrorHandler\Throwing;
+
+ $this->lexer->startLexing($code, $this->errorHandler);
+ $result = $this->doParse();
+
+ // Clear out some of the interior state, so we don't hold onto unnecessary
+ // memory between uses of the parser
+ $this->startAttributeStack = [];
+ $this->endAttributeStack = [];
+ $this->semStack = [];
+ $this->semValue = null;
+
+ return $result;
+ }
+
+ protected function doParse() {
+ // We start off with no lookahead-token
+ $symbol = self::SYMBOL_NONE;
+
+ // The attributes for a node are taken from the first and last token of the node.
+ // From the first token only the startAttributes are taken and from the last only
+ // the endAttributes. Both are merged using the array union operator (+).
+ $startAttributes = [];
+ $endAttributes = [];
+ $this->endAttributes = $endAttributes;
+
+ // Keep stack of start and end attributes
+ $this->startAttributeStack = [];
+ $this->endAttributeStack = [$endAttributes];
+
+ // Start off in the initial state and keep a stack of previous states
+ $state = 0;
+ $stateStack = [$state];
+
+ // Semantic value stack (contains values of tokens and semantic action results)
+ $this->semStack = [];
+
+ // Current position in the stack(s)
+ $stackPos = 0;
+
+ $this->errorState = 0;
+
+ for (;;) {
+ //$this->traceNewState($state, $symbol);
+
+ if ($this->actionBase[$state] === 0) {
+ $rule = $this->actionDefault[$state];
+ } else {
+ if ($symbol === self::SYMBOL_NONE) {
+ // Fetch the next token id from the lexer and fetch additional info by-ref.
+ // The end attributes are fetched into a temporary variable and only set once the token is really
+ // shifted (not during read). Otherwise you would sometimes get off-by-one errors, when a rule is
+ // reduced after a token was read but not yet shifted.
+ $tokenId = $this->lexer->getNextToken($tokenValue, $startAttributes, $endAttributes);
+
+ // map the lexer token id to the internally used symbols
+ $symbol = $tokenId >= 0 && $tokenId < $this->tokenToSymbolMapSize
+ ? $this->tokenToSymbol[$tokenId]
+ : $this->invalidSymbol;
+
+ if ($symbol === $this->invalidSymbol) {
+ throw new \RangeException(sprintf(
+ 'The lexer returned an invalid token (id=%d, value=%s)',
+ $tokenId, $tokenValue
+ ));
+ }
+
+ // Allow productions to access the start attributes of the lookahead token.
+ $this->lookaheadStartAttributes = $startAttributes;
+
+ //$this->traceRead($symbol);
+ }
+
+ $idx = $this->actionBase[$state] + $symbol;
+ if ((($idx >= 0 && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol)
+ || ($state < $this->YY2TBLSTATE
+ && ($idx = $this->actionBase[$state + $this->numNonLeafStates] + $symbol) >= 0
+ && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol))
+ && ($action = $this->action[$idx]) !== $this->defaultAction) {
+ /*
+ * >= numNonLeafStates: shift and reduce
+ * > 0: shift
+ * = 0: accept
+ * < 0: reduce
+ * = -YYUNEXPECTED: error
+ */
+ if ($action > 0) {
+ /* shift */
+ //$this->traceShift($symbol);
+
+ ++$stackPos;
+ $stateStack[$stackPos] = $state = $action;
+ $this->semStack[$stackPos] = $tokenValue;
+ $this->startAttributeStack[$stackPos] = $startAttributes;
+ $this->endAttributeStack[$stackPos] = $endAttributes;
+ $this->endAttributes = $endAttributes;
+ $symbol = self::SYMBOL_NONE;
+
+ if ($this->errorState) {
+ --$this->errorState;
+ }
+
+ if ($action < $this->numNonLeafStates) {
+ continue;
+ }
+
+ /* $yyn >= numNonLeafStates means shift-and-reduce */
+ $rule = $action - $this->numNonLeafStates;
+ } else {
+ $rule = -$action;
+ }
+ } else {
+ $rule = $this->actionDefault[$state];
+ }
+ }
+
+ for (;;) {
+ if ($rule === 0) {
+ /* accept */
+ //$this->traceAccept();
+ return $this->semValue;
+ } elseif ($rule !== $this->unexpectedTokenRule) {
+ /* reduce */
+ //$this->traceReduce($rule);
+
+ try {
+ $this->reduceCallbacks[$rule]($stackPos);
+ } catch (Error $e) {
+ if (-1 === $e->getStartLine() && isset($startAttributes['startLine'])) {
+ $e->setStartLine($startAttributes['startLine']);
+ }
+
+ $this->emitError($e);
+ // Can't recover from this type of error
+ return null;
+ }
+
+ /* Goto - shift nonterminal */
+ $lastEndAttributes = $this->endAttributeStack[$stackPos];
+ $ruleLength = $this->ruleToLength[$rule];
+ $stackPos -= $ruleLength;
+ $nonTerminal = $this->ruleToNonTerminal[$rule];
+ $idx = $this->gotoBase[$nonTerminal] + $stateStack[$stackPos];
+ if ($idx >= 0 && $idx < $this->gotoTableSize && $this->gotoCheck[$idx] === $nonTerminal) {
+ $state = $this->goto[$idx];
+ } else {
+ $state = $this->gotoDefault[$nonTerminal];
+ }
+
+ ++$stackPos;
+ $stateStack[$stackPos] = $state;
+ $this->semStack[$stackPos] = $this->semValue;
+ $this->endAttributeStack[$stackPos] = $lastEndAttributes;
+ if ($ruleLength === 0) {
+ // Empty productions use the start attributes of the lookahead token.
+ $this->startAttributeStack[$stackPos] = $this->lookaheadStartAttributes;
+ }
+ } else {
+ /* error */
+ switch ($this->errorState) {
+ case 0:
+ $msg = $this->getErrorMessage($symbol, $state);
+ $this->emitError(new Error($msg, $startAttributes + $endAttributes));
+ // Break missing intentionally
+ case 1:
+ case 2:
+ $this->errorState = 3;
+
+ // Pop until error-expecting state uncovered
+ while (!(
+ (($idx = $this->actionBase[$state] + $this->errorSymbol) >= 0
+ && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $this->errorSymbol)
+ || ($state < $this->YY2TBLSTATE
+ && ($idx = $this->actionBase[$state + $this->numNonLeafStates] + $this->errorSymbol) >= 0
+ && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $this->errorSymbol)
+ ) || ($action = $this->action[$idx]) === $this->defaultAction) { // Not totally sure about this
+ if ($stackPos <= 0) {
+ // Could not recover from error
+ return null;
+ }
+ $state = $stateStack[--$stackPos];
+ //$this->tracePop($state);
+ }
+
+ //$this->traceShift($this->errorSymbol);
+ ++$stackPos;
+ $stateStack[$stackPos] = $state = $action;
+
+ // We treat the error symbol as being empty, so we reset the end attributes
+ // to the end attributes of the last non-error symbol
+ $this->startAttributeStack[$stackPos] = $this->lookaheadStartAttributes;
+ $this->endAttributeStack[$stackPos] = $this->endAttributeStack[$stackPos - 1];
+ $this->endAttributes = $this->endAttributeStack[$stackPos - 1];
+ break;
+
+ case 3:
+ if ($symbol === 0) {
+ // Reached EOF without recovering from error
+ return null;
+ }
+
+ //$this->traceDiscard($symbol);
+ $symbol = self::SYMBOL_NONE;
+ break 2;
+ }
+ }
+
+ if ($state < $this->numNonLeafStates) {
+ break;
+ }
+
+ /* >= numNonLeafStates means shift-and-reduce */
+ $rule = $state - $this->numNonLeafStates;
+ }
+ }
+
+ throw new \RuntimeException('Reached end of parser loop');
+ }
+
+ protected function emitError(Error $error) {
+ $this->errorHandler->handleError($error);
+ }
+
+ /**
+ * Format error message including expected tokens.
+ *
+ * @param int $symbol Unexpected symbol
+ * @param int $state State at time of error
+ *
+ * @return string Formatted error message
+ */
+ protected function getErrorMessage(int $symbol, int $state) : string {
+ $expectedString = '';
+ if ($expected = $this->getExpectedTokens($state)) {
+ $expectedString = ', expecting ' . implode(' or ', $expected);
+ }
+
+ return 'Syntax error, unexpected ' . $this->symbolToName[$symbol] . $expectedString;
+ }
+
+ /**
+ * Get limited number of expected tokens in given state.
+ *
+ * @param int $state State
+ *
+ * @return string[] Expected tokens. If too many, an empty array is returned.
+ */
+ protected function getExpectedTokens(int $state) : array {
+ $expected = [];
+
+ $base = $this->actionBase[$state];
+ foreach ($this->symbolToName as $symbol => $name) {
+ $idx = $base + $symbol;
+ if ($idx >= 0 && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol
+ || $state < $this->YY2TBLSTATE
+ && ($idx = $this->actionBase[$state + $this->numNonLeafStates] + $symbol) >= 0
+ && $idx < $this->actionTableSize && $this->actionCheck[$idx] === $symbol
+ ) {
+ if ($this->action[$idx] !== $this->unexpectedTokenRule
+ && $this->action[$idx] !== $this->defaultAction
+ && $symbol !== $this->errorSymbol
+ ) {
+ if (count($expected) === 4) {
+ /* Too many expected tokens */
+ return [];
+ }
+
+ $expected[] = $name;
+ }
+ }
+ }
+
+ return $expected;
+ }
+
+ /*
+ * Tracing functions used for debugging the parser.
+ */
+
+ /*
+ protected function traceNewState($state, $symbol) {
+ echo '% State ' . $state
+ . ', Lookahead ' . ($symbol == self::SYMBOL_NONE ? '--none--' : $this->symbolToName[$symbol]) . "\n";
+ }
+
+ protected function traceRead($symbol) {
+ echo '% Reading ' . $this->symbolToName[$symbol] . "\n";
+ }
+
+ protected function traceShift($symbol) {
+ echo '% Shift ' . $this->symbolToName[$symbol] . "\n";
+ }
+
+ protected function traceAccept() {
+ echo "% Accepted.\n";
+ }
+
+ protected function traceReduce($n) {
+ echo '% Reduce by (' . $n . ') ' . $this->productions[$n] . "\n";
+ }
+
+ protected function tracePop($state) {
+ echo '% Recovering, uncovered state ' . $state . "\n";
+ }
+
+ protected function traceDiscard($symbol) {
+ echo '% Discard ' . $this->symbolToName[$symbol] . "\n";
+ }
+ */
+
+ /*
+ * Helper functions invoked by semantic actions
+ */
+
+ /**
+ * Moves statements of semicolon-style namespaces into $ns->stmts and checks various error conditions.
+ *
+ * @param Node\Stmt[] $stmts
+ * @return Node\Stmt[]
+ */
+ protected function handleNamespaces(array $stmts) : array {
+ $hasErrored = false;
+ $style = $this->getNamespacingStyle($stmts);
+ if (null === $style) {
+ // not namespaced, nothing to do
+ return $stmts;
+ } elseif ('brace' === $style) {
+ // For braced namespaces we only have to check that there are no invalid statements between the namespaces
+ $afterFirstNamespace = false;
+ foreach ($stmts as $stmt) {
+ if ($stmt instanceof Node\Stmt\Namespace_) {
+ $afterFirstNamespace = true;
+ } elseif (!$stmt instanceof Node\Stmt\HaltCompiler
+ && !$stmt instanceof Node\Stmt\Nop
+ && $afterFirstNamespace && !$hasErrored) {
+ $this->emitError(new Error(
+ 'No code may exist outside of namespace {}', $stmt->getAttributes()));
+ $hasErrored = true; // Avoid one error for every statement
+ }
+ }
+ return $stmts;
+ } else {
+ // For semicolon namespaces we have to move the statements after a namespace declaration into ->stmts
+ $resultStmts = [];
+ $targetStmts =& $resultStmts;
+ $lastNs = null;
+ foreach ($stmts as $stmt) {
+ if ($stmt instanceof Node\Stmt\Namespace_) {
+ if ($lastNs !== null) {
+ $this->fixupNamespaceAttributes($lastNs);
+ }
+ if ($stmt->stmts === null) {
+ $stmt->stmts = [];
+ $targetStmts =& $stmt->stmts;
+ $resultStmts[] = $stmt;
+ } else {
+ // This handles the invalid case of mixed style namespaces
+ $resultStmts[] = $stmt;
+ $targetStmts =& $resultStmts;
+ }
+ $lastNs = $stmt;
+ } elseif ($stmt instanceof Node\Stmt\HaltCompiler) {
+ // __halt_compiler() is not moved into the namespace
+ $resultStmts[] = $stmt;
+ } else {
+ $targetStmts[] = $stmt;
+ }
+ }
+ if ($lastNs !== null) {
+ $this->fixupNamespaceAttributes($lastNs);
+ }
+ return $resultStmts;
+ }
+ }
+
+ private function fixupNamespaceAttributes(Node\Stmt\Namespace_ $stmt) {
+ // We moved the statements into the namespace node, as such the end of the namespace node
+ // needs to be extended to the end of the statements.
+ if (empty($stmt->stmts)) {
+ return;
+ }
+
+ // We only move the builtin end attributes here. This is the best we can do with the
+ // knowledge we have.
+ $endAttributes = ['endLine', 'endFilePos', 'endTokenPos'];
+ $lastStmt = $stmt->stmts[count($stmt->stmts) - 1];
+ foreach ($endAttributes as $endAttribute) {
+ if ($lastStmt->hasAttribute($endAttribute)) {
+ $stmt->setAttribute($endAttribute, $lastStmt->getAttribute($endAttribute));
+ }
+ }
+ }
+
+ /**
+ * Determine namespacing style (semicolon or brace)
+ *
+ * @param Node[] $stmts Top-level statements.
+ *
+ * @return null|string One of "semicolon", "brace" or null (no namespaces)
+ */
+ private function getNamespacingStyle(array $stmts) {
+ $style = null;
+ $hasNotAllowedStmts = false;
+ foreach ($stmts as $i => $stmt) {
+ if ($stmt instanceof Node\Stmt\Namespace_) {
+ $currentStyle = null === $stmt->stmts ? 'semicolon' : 'brace';
+ if (null === $style) {
+ $style = $currentStyle;
+ if ($hasNotAllowedStmts) {
+ $this->emitError(new Error(
+ 'Namespace declaration statement has to be the very first statement in the script',
+ $stmt->getLine() // Avoid marking the entire namespace as an error
+ ));
+ }
+ } elseif ($style !== $currentStyle) {
+ $this->emitError(new Error(
+ 'Cannot mix bracketed namespace declarations with unbracketed namespace declarations',
+ $stmt->getLine() // Avoid marking the entire namespace as an error
+ ));
+ // Treat like semicolon style for namespace normalization
+ return 'semicolon';
+ }
+ continue;
+ }
+
+ /* declare(), __halt_compiler() and nops can be used before a namespace declaration */
+ if ($stmt instanceof Node\Stmt\Declare_
+ || $stmt instanceof Node\Stmt\HaltCompiler
+ || $stmt instanceof Node\Stmt\Nop) {
+ continue;
+ }
+
+ /* There may be a hashbang line at the very start of the file */
+ if ($i === 0 && $stmt instanceof Node\Stmt\InlineHTML && preg_match('/\A#!.*\r?\n\z/', $stmt->value)) {
+ continue;
+ }
+
+ /* Everything else if forbidden before namespace declarations */
+ $hasNotAllowedStmts = true;
+ }
+ return $style;
+ }
+
+ /**
+ * Fix up parsing of static property calls in PHP 5.
+ *
+ * In PHP 5 A::$b[c][d] and A::$b[c][d]() have very different interpretation. The former is
+ * interpreted as (A::$b)[c][d], while the latter is the same as A::{$b[c][d]}(). We parse the
+ * latter as the former initially and this method fixes the AST into the correct form when we
+ * encounter the "()".
+ *
+ * @param Node\Expr\StaticPropertyFetch|Node\Expr\ArrayDimFetch $prop
+ * @param Node\Arg[] $args
+ * @param array $attributes
+ *
+ * @return Expr\StaticCall
+ */
+ protected function fixupPhp5StaticPropCall($prop, array $args, array $attributes) : Expr\StaticCall {
+ if ($prop instanceof Node\Expr\StaticPropertyFetch) {
+ $name = $prop->name instanceof VarLikeIdentifier
+ ? $prop->name->toString() : $prop->name;
+ $var = new Expr\Variable($name, $prop->name->getAttributes());
+ return new Expr\StaticCall($prop->class, $var, $args, $attributes);
+ } elseif ($prop instanceof Node\Expr\ArrayDimFetch) {
+ $tmp = $prop;
+ while ($tmp->var instanceof Node\Expr\ArrayDimFetch) {
+ $tmp = $tmp->var;
+ }
+
+ /** @var Expr\StaticPropertyFetch $staticProp */
+ $staticProp = $tmp->var;
+
+ // Set start attributes to attributes of innermost node
+ $tmp = $prop;
+ $this->fixupStartAttributes($tmp, $staticProp->name);
+ while ($tmp->var instanceof Node\Expr\ArrayDimFetch) {
+ $tmp = $tmp->var;
+ $this->fixupStartAttributes($tmp, $staticProp->name);
+ }
+
+ $name = $staticProp->name instanceof VarLikeIdentifier
+ ? $staticProp->name->toString() : $staticProp->name;
+ $tmp->var = new Expr\Variable($name, $staticProp->name->getAttributes());
+ return new Expr\StaticCall($staticProp->class, $prop, $args, $attributes);
+ } else {
+ throw new \Exception;
+ }
+ }
+
+ protected function fixupStartAttributes(Node $to, Node $from) {
+ $startAttributes = ['startLine', 'startFilePos', 'startTokenPos'];
+ foreach ($startAttributes as $startAttribute) {
+ if ($from->hasAttribute($startAttribute)) {
+ $to->setAttribute($startAttribute, $from->getAttribute($startAttribute));
+ }
+ }
+ }
+
+ protected function handleBuiltinTypes(Name $name) {
+ $builtinTypes = [
+ 'bool' => true,
+ 'int' => true,
+ 'float' => true,
+ 'string' => true,
+ 'iterable' => true,
+ 'void' => true,
+ 'object' => true,
+ 'null' => true,
+ 'false' => true,
+ 'mixed' => true,
+ 'never' => true,
+ ];
+
+ if (!$name->isUnqualified()) {
+ return $name;
+ }
+
+ $lowerName = $name->toLowerString();
+ if (!isset($builtinTypes[$lowerName])) {
+ return $name;
+ }
+
+ return new Node\Identifier($lowerName, $name->getAttributes());
+ }
+
+ /**
+ * Get combined start and end attributes at a stack location
+ *
+ * @param int $pos Stack location
+ *
+ * @return array Combined start and end attributes
+ */
+ protected function getAttributesAt(int $pos) : array {
+ return $this->startAttributeStack[$pos] + $this->endAttributeStack[$pos];
+ }
+
+ protected function getFloatCastKind(string $cast): int
+ {
+ $cast = strtolower($cast);
+ if (strpos($cast, 'float') !== false) {
+ return Double::KIND_FLOAT;
+ }
+
+ if (strpos($cast, 'real') !== false) {
+ return Double::KIND_REAL;
+ }
+
+ return Double::KIND_DOUBLE;
+ }
+
+ protected function parseLNumber($str, $attributes, $allowInvalidOctal = false) {
+ try {
+ return LNumber::fromString($str, $attributes, $allowInvalidOctal);
+ } catch (Error $error) {
+ $this->emitError($error);
+ // Use dummy value
+ return new LNumber(0, $attributes);
+ }
+ }
+
+ /**
+ * Parse a T_NUM_STRING token into either an integer or string node.
+ *
+ * @param string $str Number string
+ * @param array $attributes Attributes
+ *
+ * @return LNumber|String_ Integer or string node.
+ */
+ protected function parseNumString(string $str, array $attributes) {
+ if (!preg_match('/^(?:0|-?[1-9][0-9]*)$/', $str)) {
+ return new String_($str, $attributes);
+ }
+
+ $num = +$str;
+ if (!is_int($num)) {
+ return new String_($str, $attributes);
+ }
+
+ return new LNumber($num, $attributes);
+ }
+
+ protected function stripIndentation(
+ string $string, int $indentLen, string $indentChar,
+ bool $newlineAtStart, bool $newlineAtEnd, array $attributes
+ ) {
+ if ($indentLen === 0) {
+ return $string;
+ }
+
+ $start = $newlineAtStart ? '(?:(?<=\n)|\A)' : '(?<=\n)';
+ $end = $newlineAtEnd ? '(?:(?=[\r\n])|\z)' : '(?=[\r\n])';
+ $regex = '/' . $start . '([ \t]*)(' . $end . ')?/';
+ return preg_replace_callback(
+ $regex,
+ function ($matches) use ($indentLen, $indentChar, $attributes) {
+ $prefix = substr($matches[1], 0, $indentLen);
+ if (false !== strpos($prefix, $indentChar === " " ? "\t" : " ")) {
+ $this->emitError(new Error(
+ 'Invalid indentation - tabs and spaces cannot be mixed', $attributes
+ ));
+ } elseif (strlen($prefix) < $indentLen && !isset($matches[2])) {
+ $this->emitError(new Error(
+ 'Invalid body indentation level ' .
+ '(expecting an indentation level of at least ' . $indentLen . ')',
+ $attributes
+ ));
+ }
+ return substr($matches[0], strlen($prefix));
+ },
+ $string
+ );
+ }
+
+ protected function parseDocString(
+ string $startToken, $contents, string $endToken,
+ array $attributes, array $endTokenAttributes, bool $parseUnicodeEscape
+ ) {
+ $kind = strpos($startToken, "'") === false
+ ? String_::KIND_HEREDOC : String_::KIND_NOWDOC;
+
+ $regex = '/\A[bB]?<<<[ \t]*[\'"]?([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)[\'"]?(?:\r\n|\n|\r)\z/';
+ $result = preg_match($regex, $startToken, $matches);
+ assert($result === 1);
+ $label = $matches[1];
+
+ $result = preg_match('/\A[ \t]*/', $endToken, $matches);
+ assert($result === 1);
+ $indentation = $matches[0];
+
+ $attributes['kind'] = $kind;
+ $attributes['docLabel'] = $label;
+ $attributes['docIndentation'] = $indentation;
+
+ $indentHasSpaces = false !== strpos($indentation, " ");
+ $indentHasTabs = false !== strpos($indentation, "\t");
+ if ($indentHasSpaces && $indentHasTabs) {
+ $this->emitError(new Error(
+ 'Invalid indentation - tabs and spaces cannot be mixed',
+ $endTokenAttributes
+ ));
+
+ // Proceed processing as if this doc string is not indented
+ $indentation = '';
+ }
+
+ $indentLen = \strlen($indentation);
+ $indentChar = $indentHasSpaces ? " " : "\t";
+
+ if (\is_string($contents)) {
+ if ($contents === '') {
+ return new String_('', $attributes);
+ }
+
+ $contents = $this->stripIndentation(
+ $contents, $indentLen, $indentChar, true, true, $attributes
+ );
+ $contents = preg_replace('~(\r\n|\n|\r)\z~', '', $contents);
+
+ if ($kind === String_::KIND_HEREDOC) {
+ $contents = String_::parseEscapeSequences($contents, null, $parseUnicodeEscape);
+ }
+
+ return new String_($contents, $attributes);
+ } else {
+ assert(count($contents) > 0);
+ if (!$contents[0] instanceof Node\Scalar\EncapsedStringPart) {
+ // If there is no leading encapsed string part, pretend there is an empty one
+ $this->stripIndentation(
+ '', $indentLen, $indentChar, true, false, $contents[0]->getAttributes()
+ );
+ }
+
+ $newContents = [];
+ foreach ($contents as $i => $part) {
+ if ($part instanceof Node\Scalar\EncapsedStringPart) {
+ $isLast = $i === \count($contents) - 1;
+ $part->value = $this->stripIndentation(
+ $part->value, $indentLen, $indentChar,
+ $i === 0, $isLast, $part->getAttributes()
+ );
+ $part->value = String_::parseEscapeSequences($part->value, null, $parseUnicodeEscape);
+ if ($isLast) {
+ $part->value = preg_replace('~(\r\n|\n|\r)\z~', '', $part->value);
+ }
+ if ('' === $part->value) {
+ continue;
+ }
+ }
+ $newContents[] = $part;
+ }
+ return new Encapsed($newContents, $attributes);
+ }
+ }
+
+ /**
+ * Create attributes for a zero-length common-capturing nop.
+ *
+ * @param Comment[] $comments
+ * @return array
+ */
+ protected function createCommentNopAttributes(array $comments) {
+ $comment = $comments[count($comments) - 1];
+ $commentEndLine = $comment->getEndLine();
+ $commentEndFilePos = $comment->getEndFilePos();
+ $commentEndTokenPos = $comment->getEndTokenPos();
+
+ $attributes = ['comments' => $comments];
+ if (-1 !== $commentEndLine) {
+ $attributes['startLine'] = $commentEndLine;
+ $attributes['endLine'] = $commentEndLine;
+ }
+ if (-1 !== $commentEndFilePos) {
+ $attributes['startFilePos'] = $commentEndFilePos + 1;
+ $attributes['endFilePos'] = $commentEndFilePos;
+ }
+ if (-1 !== $commentEndTokenPos) {
+ $attributes['startTokenPos'] = $commentEndTokenPos + 1;
+ $attributes['endTokenPos'] = $commentEndTokenPos;
+ }
+ return $attributes;
+ }
+
+ protected function checkModifier($a, $b, $modifierPos) {
+ // Jumping through some hoops here because verifyModifier() is also used elsewhere
+ try {
+ Class_::verifyModifier($a, $b);
+ } catch (Error $error) {
+ $error->setAttributes($this->getAttributesAt($modifierPos));
+ $this->emitError($error);
+ }
+ }
+
+ protected function checkParam(Param $node) {
+ if ($node->variadic && null !== $node->default) {
+ $this->emitError(new Error(
+ 'Variadic parameter cannot have a default value',
+ $node->default->getAttributes()
+ ));
+ }
+ }
+
+ protected function checkTryCatch(TryCatch $node) {
+ if (empty($node->catches) && null === $node->finally) {
+ $this->emitError(new Error(
+ 'Cannot use try without catch or finally', $node->getAttributes()
+ ));
+ }
+ }
+
+ protected function checkNamespace(Namespace_ $node) {
+ if (null !== $node->stmts) {
+ foreach ($node->stmts as $stmt) {
+ if ($stmt instanceof Namespace_) {
+ $this->emitError(new Error(
+ 'Namespace declarations cannot be nested', $stmt->getAttributes()
+ ));
+ }
+ }
+ }
+ }
+
+ private function checkClassName($name, $namePos) {
+ if (null !== $name && $name->isSpecialClassName()) {
+ $this->emitError(new Error(
+ sprintf('Cannot use \'%s\' as class name as it is reserved', $name),
+ $this->getAttributesAt($namePos)
+ ));
+ }
+ }
+
+ private function checkImplementedInterfaces(array $interfaces) {
+ foreach ($interfaces as $interface) {
+ if ($interface->isSpecialClassName()) {
+ $this->emitError(new Error(
+ sprintf('Cannot use \'%s\' as interface name as it is reserved', $interface),
+ $interface->getAttributes()
+ ));
+ }
+ }
+ }
+
+ protected function checkClass(Class_ $node, $namePos) {
+ $this->checkClassName($node->name, $namePos);
+
+ if ($node->extends && $node->extends->isSpecialClassName()) {
+ $this->emitError(new Error(
+ sprintf('Cannot use \'%s\' as class name as it is reserved', $node->extends),
+ $node->extends->getAttributes()
+ ));
+ }
+
+ $this->checkImplementedInterfaces($node->implements);
+ }
+
+ protected function checkInterface(Interface_ $node, $namePos) {
+ $this->checkClassName($node->name, $namePos);
+ $this->checkImplementedInterfaces($node->extends);
+ }
+
+ protected function checkEnum(Enum_ $node, $namePos) {
+ $this->checkClassName($node->name, $namePos);
+ $this->checkImplementedInterfaces($node->implements);
+ }
+
+ protected function checkClassMethod(ClassMethod $node, $modifierPos) {
+ if ($node->flags & Class_::MODIFIER_STATIC) {
+ switch ($node->name->toLowerString()) {
+ case '__construct':
+ $this->emitError(new Error(
+ sprintf('Constructor %s() cannot be static', $node->name),
+ $this->getAttributesAt($modifierPos)));
+ break;
+ case '__destruct':
+ $this->emitError(new Error(
+ sprintf('Destructor %s() cannot be static', $node->name),
+ $this->getAttributesAt($modifierPos)));
+ break;
+ case '__clone':
+ $this->emitError(new Error(
+ sprintf('Clone method %s() cannot be static', $node->name),
+ $this->getAttributesAt($modifierPos)));
+ break;
+ }
+ }
+
+ if ($node->flags & Class_::MODIFIER_READONLY) {
+ $this->emitError(new Error(
+ sprintf('Method %s() cannot be readonly', $node->name),
+ $this->getAttributesAt($modifierPos)));
+ }
+ }
+
+ protected function checkClassConst(ClassConst $node, $modifierPos) {
+ if ($node->flags & Class_::MODIFIER_STATIC) {
+ $this->emitError(new Error(
+ "Cannot use 'static' as constant modifier",
+ $this->getAttributesAt($modifierPos)));
+ }
+ if ($node->flags & Class_::MODIFIER_ABSTRACT) {
+ $this->emitError(new Error(
+ "Cannot use 'abstract' as constant modifier",
+ $this->getAttributesAt($modifierPos)));
+ }
+ if ($node->flags & Class_::MODIFIER_READONLY) {
+ $this->emitError(new Error(
+ "Cannot use 'readonly' as constant modifier",
+ $this->getAttributesAt($modifierPos)));
+ }
+ }
+
+ protected function checkProperty(Property $node, $modifierPos) {
+ if ($node->flags & Class_::MODIFIER_ABSTRACT) {
+ $this->emitError(new Error('Properties cannot be declared abstract',
+ $this->getAttributesAt($modifierPos)));
+ }
+
+ if ($node->flags & Class_::MODIFIER_FINAL) {
+ $this->emitError(new Error('Properties cannot be declared final',
+ $this->getAttributesAt($modifierPos)));
+ }
+ }
+
+ protected function checkUseUse(UseUse $node, $namePos) {
+ if ($node->alias && $node->alias->isSpecialClassName()) {
+ $this->emitError(new Error(
+ sprintf(
+ 'Cannot use %s as %s because \'%2$s\' is a special class name',
+ $node->name, $node->alias
+ ),
+ $this->getAttributesAt($namePos)
+ ));
+ }
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php b/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php
new file mode 100644
index 000000000..f041e7ffe
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/ParserFactory.php
@@ -0,0 +1,44 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+class ParserFactory
+{
+ const PREFER_PHP7 = 1;
+ const PREFER_PHP5 = 2;
+ const ONLY_PHP7 = 3;
+ const ONLY_PHP5 = 4;
+
+ /**
+ * Creates a Parser instance, according to the provided kind.
+ *
+ * @param int $kind One of ::PREFER_PHP7, ::PREFER_PHP5, ::ONLY_PHP7 or ::ONLY_PHP5
+ * @param Lexer|null $lexer Lexer to use. Defaults to emulative lexer when not specified
+ * @param array $parserOptions Parser options. See ParserAbstract::__construct() argument
+ *
+ * @return Parser The parser instance
+ */
+ public function create(int $kind, Lexer $lexer = null, array $parserOptions = []) : Parser {
+ if (null === $lexer) {
+ $lexer = new Lexer\Emulative();
+ }
+ switch ($kind) {
+ case self::PREFER_PHP7:
+ return new Parser\Multiple([
+ new Parser\Php7($lexer, $parserOptions), new Parser\Php5($lexer, $parserOptions)
+ ]);
+ case self::PREFER_PHP5:
+ return new Parser\Multiple([
+ new Parser\Php5($lexer, $parserOptions), new Parser\Php7($lexer, $parserOptions)
+ ]);
+ case self::ONLY_PHP7:
+ return new Parser\Php7($lexer, $parserOptions);
+ case self::ONLY_PHP5:
+ return new Parser\Php5($lexer, $parserOptions);
+ default:
+ throw new \LogicException(
+ 'Kind must be one of ::PREFER_PHP7, ::PREFER_PHP5, ::ONLY_PHP7 or ::ONLY_PHP5'
+ );
+ }
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
new file mode 100644
index 000000000..bb70de659
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinter/Standard.php
@@ -0,0 +1,1105 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser\PrettyPrinter;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Expr\AssignOp;
+use PhpParser\Node\Expr\BinaryOp;
+use PhpParser\Node\Expr\Cast;
+use PhpParser\Node\Name;
+use PhpParser\Node\Scalar;
+use PhpParser\Node\Scalar\MagicConst;
+use PhpParser\Node\Stmt;
+use PhpParser\PrettyPrinterAbstract;
+
+class Standard extends PrettyPrinterAbstract
+{
+ // Special nodes
+
+ protected function pParam(Node\Param $node) {
+ return $this->pAttrGroups($node->attrGroups, true)
+ . $this->pModifiers($node->flags)
+ . ($node->type ? $this->p($node->type) . ' ' : '')
+ . ($node->byRef ? '&' : '')
+ . ($node->variadic ? '...' : '')
+ . $this->p($node->var)
+ . ($node->default ? ' = ' . $this->p($node->default) : '');
+ }
+
+ protected function pArg(Node\Arg $node) {
+ return ($node->name ? $node->name->toString() . ': ' : '')
+ . ($node->byRef ? '&' : '') . ($node->unpack ? '...' : '')
+ . $this->p($node->value);
+ }
+
+ protected function pVariadicPlaceholder(Node\VariadicPlaceholder $node) {
+ return '...';
+ }
+
+ protected function pConst(Node\Const_ $node) {
+ return $node->name . ' = ' . $this->p($node->value);
+ }
+
+ protected function pNullableType(Node\NullableType $node) {
+ return '?' . $this->p($node->type);
+ }
+
+ protected function pUnionType(Node\UnionType $node) {
+ return $this->pImplode($node->types, '|');
+ }
+
+ protected function pIntersectionType(Node\IntersectionType $node) {
+ return $this->pImplode($node->types, '&');
+ }
+
+ protected function pIdentifier(Node\Identifier $node) {
+ return $node->name;
+ }
+
+ protected function pVarLikeIdentifier(Node\VarLikeIdentifier $node) {
+ return '$' . $node->name;
+ }
+
+ protected function pAttribute(Node\Attribute $node) {
+ return $this->p($node->name)
+ . ($node->args ? '(' . $this->pCommaSeparated($node->args) . ')' : '');
+ }
+
+ protected function pAttributeGroup(Node\AttributeGroup $node) {
+ return '#[' . $this->pCommaSeparated($node->attrs) . ']';
+ }
+
+ // Names
+
+ protected function pName(Name $node) {
+ return implode('\\', $node->parts);
+ }
+
+ protected function pName_FullyQualified(Name\FullyQualified $node) {
+ return '\\' . implode('\\', $node->parts);
+ }
+
+ protected function pName_Relative(Name\Relative $node) {
+ return 'namespace\\' . implode('\\', $node->parts);
+ }
+
+ // Magic Constants
+
+ protected function pScalar_MagicConst_Class(MagicConst\Class_ $node) {
+ return '__CLASS__';
+ }
+
+ protected function pScalar_MagicConst_Dir(MagicConst\Dir $node) {
+ return '__DIR__';
+ }
+
+ protected function pScalar_MagicConst_File(MagicConst\File $node) {
+ return '__FILE__';
+ }
+
+ protected function pScalar_MagicConst_Function(MagicConst\Function_ $node) {
+ return '__FUNCTION__';
+ }
+
+ protected function pScalar_MagicConst_Line(MagicConst\Line $node) {
+ return '__LINE__';
+ }
+
+ protected function pScalar_MagicConst_Method(MagicConst\Method $node) {
+ return '__METHOD__';
+ }
+
+ protected function pScalar_MagicConst_Namespace(MagicConst\Namespace_ $node) {
+ return '__NAMESPACE__';
+ }
+
+ protected function pScalar_MagicConst_Trait(MagicConst\Trait_ $node) {
+ return '__TRAIT__';
+ }
+
+ // Scalars
+
+ protected function pScalar_String(Scalar\String_ $node) {
+ $kind = $node->getAttribute('kind', Scalar\String_::KIND_SINGLE_QUOTED);
+ switch ($kind) {
+ case Scalar\String_::KIND_NOWDOC:
+ $label = $node->getAttribute('docLabel');
+ if ($label && !$this->containsEndLabel($node->value, $label)) {
+ if ($node->value === '') {
+ return "<<<'$label'\n$label" . $this->docStringEndToken;
+ }
+
+ return "<<<'$label'\n$node->value\n$label"
+ . $this->docStringEndToken;
+ }
+ /* break missing intentionally */
+ case Scalar\String_::KIND_SINGLE_QUOTED:
+ return $this->pSingleQuotedString($node->value);
+ case Scalar\String_::KIND_HEREDOC:
+ $label = $node->getAttribute('docLabel');
+ if ($label && !$this->containsEndLabel($node->value, $label)) {
+ if ($node->value === '') {
+ return "<<<$label\n$label" . $this->docStringEndToken;
+ }
+
+ $escaped = $this->escapeString($node->value, null);
+ return "<<<$label\n" . $escaped . "\n$label"
+ . $this->docStringEndToken;
+ }
+ /* break missing intentionally */
+ case Scalar\String_::KIND_DOUBLE_QUOTED:
+ return '"' . $this->escapeString($node->value, '"') . '"';
+ }
+ throw new \Exception('Invalid string kind');
+ }
+
+ protected function pScalar_Encapsed(Scalar\Encapsed $node) {
+ if ($node->getAttribute('kind') === Scalar\String_::KIND_HEREDOC) {
+ $label = $node->getAttribute('docLabel');
+ if ($label && !$this->encapsedContainsEndLabel($node->parts, $label)) {
+ if (count($node->parts) === 1
+ && $node->parts[0] instanceof Scalar\EncapsedStringPart
+ && $node->parts[0]->value === ''
+ ) {
+ return "<<<$label\n$label" . $this->docStringEndToken;
+ }
+
+ return "<<<$label\n" . $this->pEncapsList($node->parts, null) . "\n$label"
+ . $this->docStringEndToken;
+ }
+ }
+ return '"' . $this->pEncapsList($node->parts, '"') . '"';
+ }
+
+ protected function pScalar_LNumber(Scalar\LNumber $node) {
+ if ($node->value === -\PHP_INT_MAX-1) {
+ // PHP_INT_MIN cannot be represented as a literal,
+ // because the sign is not part of the literal
+ return '(-' . \PHP_INT_MAX . '-1)';
+ }
+
+ $kind = $node->getAttribute('kind', Scalar\LNumber::KIND_DEC);
+ if (Scalar\LNumber::KIND_DEC === $kind) {
+ return (string) $node->value;
+ }
+
+ if ($node->value < 0) {
+ $sign = '-';
+ $str = (string) -$node->value;
+ } else {
+ $sign = '';
+ $str = (string) $node->value;
+ }
+ switch ($kind) {
+ case Scalar\LNumber::KIND_BIN:
+ return $sign . '0b' . base_convert($str, 10, 2);
+ case Scalar\LNumber::KIND_OCT:
+ return $sign . '0' . base_convert($str, 10, 8);
+ case Scalar\LNumber::KIND_HEX:
+ return $sign . '0x' . base_convert($str, 10, 16);
+ }
+ throw new \Exception('Invalid number kind');
+ }
+
+ protected function pScalar_DNumber(Scalar\DNumber $node) {
+ if (!is_finite($node->value)) {
+ if ($node->value === \INF) {
+ return '\INF';
+ } elseif ($node->value === -\INF) {
+ return '-\INF';
+ } else {
+ return '\NAN';
+ }
+ }
+
+ // Try to find a short full-precision representation
+ $stringValue = sprintf('%.16G', $node->value);
+ if ($node->value !== (double) $stringValue) {
+ $stringValue = sprintf('%.17G', $node->value);
+ }
+
+ // %G is locale dependent and there exists no locale-independent alternative. We don't want
+ // mess with switching locales here, so let's assume that a comma is the only non-standard
+ // decimal separator we may encounter...
+ $stringValue = str_replace(',', '.', $stringValue);
+
+ // ensure that number is really printed as float
+ return preg_match('/^-?[0-9]+$/', $stringValue) ? $stringValue . '.0' : $stringValue;
+ }
+
+ protected function pScalar_EncapsedStringPart(Scalar\EncapsedStringPart $node) {
+ throw new \LogicException('Cannot directly print EncapsedStringPart');
+ }
+
+ // Assignments
+
+ protected function pExpr_Assign(Expr\Assign $node) {
+ return $this->pInfixOp(Expr\Assign::class, $node->var, ' = ', $node->expr);
+ }
+
+ protected function pExpr_AssignRef(Expr\AssignRef $node) {
+ return $this->pInfixOp(Expr\AssignRef::class, $node->var, ' =& ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_Plus(AssignOp\Plus $node) {
+ return $this->pInfixOp(AssignOp\Plus::class, $node->var, ' += ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_Minus(AssignOp\Minus $node) {
+ return $this->pInfixOp(AssignOp\Minus::class, $node->var, ' -= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_Mul(AssignOp\Mul $node) {
+ return $this->pInfixOp(AssignOp\Mul::class, $node->var, ' *= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_Div(AssignOp\Div $node) {
+ return $this->pInfixOp(AssignOp\Div::class, $node->var, ' /= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_Concat(AssignOp\Concat $node) {
+ return $this->pInfixOp(AssignOp\Concat::class, $node->var, ' .= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_Mod(AssignOp\Mod $node) {
+ return $this->pInfixOp(AssignOp\Mod::class, $node->var, ' %= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_BitwiseAnd(AssignOp\BitwiseAnd $node) {
+ return $this->pInfixOp(AssignOp\BitwiseAnd::class, $node->var, ' &= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_BitwiseOr(AssignOp\BitwiseOr $node) {
+ return $this->pInfixOp(AssignOp\BitwiseOr::class, $node->var, ' |= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_BitwiseXor(AssignOp\BitwiseXor $node) {
+ return $this->pInfixOp(AssignOp\BitwiseXor::class, $node->var, ' ^= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_ShiftLeft(AssignOp\ShiftLeft $node) {
+ return $this->pInfixOp(AssignOp\ShiftLeft::class, $node->var, ' <<= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_ShiftRight(AssignOp\ShiftRight $node) {
+ return $this->pInfixOp(AssignOp\ShiftRight::class, $node->var, ' >>= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_Pow(AssignOp\Pow $node) {
+ return $this->pInfixOp(AssignOp\Pow::class, $node->var, ' **= ', $node->expr);
+ }
+
+ protected function pExpr_AssignOp_Coalesce(AssignOp\Coalesce $node) {
+ return $this->pInfixOp(AssignOp\Coalesce::class, $node->var, ' ??= ', $node->expr);
+ }
+
+ // Binary expressions
+
+ protected function pExpr_BinaryOp_Plus(BinaryOp\Plus $node) {
+ return $this->pInfixOp(BinaryOp\Plus::class, $node->left, ' + ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Minus(BinaryOp\Minus $node) {
+ return $this->pInfixOp(BinaryOp\Minus::class, $node->left, ' - ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Mul(BinaryOp\Mul $node) {
+ return $this->pInfixOp(BinaryOp\Mul::class, $node->left, ' * ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Div(BinaryOp\Div $node) {
+ return $this->pInfixOp(BinaryOp\Div::class, $node->left, ' / ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Concat(BinaryOp\Concat $node) {
+ return $this->pInfixOp(BinaryOp\Concat::class, $node->left, ' . ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Mod(BinaryOp\Mod $node) {
+ return $this->pInfixOp(BinaryOp\Mod::class, $node->left, ' % ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_BooleanAnd(BinaryOp\BooleanAnd $node) {
+ return $this->pInfixOp(BinaryOp\BooleanAnd::class, $node->left, ' && ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_BooleanOr(BinaryOp\BooleanOr $node) {
+ return $this->pInfixOp(BinaryOp\BooleanOr::class, $node->left, ' || ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_BitwiseAnd(BinaryOp\BitwiseAnd $node) {
+ return $this->pInfixOp(BinaryOp\BitwiseAnd::class, $node->left, ' & ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_BitwiseOr(BinaryOp\BitwiseOr $node) {
+ return $this->pInfixOp(BinaryOp\BitwiseOr::class, $node->left, ' | ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_BitwiseXor(BinaryOp\BitwiseXor $node) {
+ return $this->pInfixOp(BinaryOp\BitwiseXor::class, $node->left, ' ^ ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_ShiftLeft(BinaryOp\ShiftLeft $node) {
+ return $this->pInfixOp(BinaryOp\ShiftLeft::class, $node->left, ' << ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_ShiftRight(BinaryOp\ShiftRight $node) {
+ return $this->pInfixOp(BinaryOp\ShiftRight::class, $node->left, ' >> ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Pow(BinaryOp\Pow $node) {
+ return $this->pInfixOp(BinaryOp\Pow::class, $node->left, ' ** ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_LogicalAnd(BinaryOp\LogicalAnd $node) {
+ return $this->pInfixOp(BinaryOp\LogicalAnd::class, $node->left, ' and ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_LogicalOr(BinaryOp\LogicalOr $node) {
+ return $this->pInfixOp(BinaryOp\LogicalOr::class, $node->left, ' or ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_LogicalXor(BinaryOp\LogicalXor $node) {
+ return $this->pInfixOp(BinaryOp\LogicalXor::class, $node->left, ' xor ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Equal(BinaryOp\Equal $node) {
+ return $this->pInfixOp(BinaryOp\Equal::class, $node->left, ' == ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_NotEqual(BinaryOp\NotEqual $node) {
+ return $this->pInfixOp(BinaryOp\NotEqual::class, $node->left, ' != ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Identical(BinaryOp\Identical $node) {
+ return $this->pInfixOp(BinaryOp\Identical::class, $node->left, ' === ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_NotIdentical(BinaryOp\NotIdentical $node) {
+ return $this->pInfixOp(BinaryOp\NotIdentical::class, $node->left, ' !== ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Spaceship(BinaryOp\Spaceship $node) {
+ return $this->pInfixOp(BinaryOp\Spaceship::class, $node->left, ' <=> ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Greater(BinaryOp\Greater $node) {
+ return $this->pInfixOp(BinaryOp\Greater::class, $node->left, ' > ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_GreaterOrEqual(BinaryOp\GreaterOrEqual $node) {
+ return $this->pInfixOp(BinaryOp\GreaterOrEqual::class, $node->left, ' >= ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Smaller(BinaryOp\Smaller $node) {
+ return $this->pInfixOp(BinaryOp\Smaller::class, $node->left, ' < ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_SmallerOrEqual(BinaryOp\SmallerOrEqual $node) {
+ return $this->pInfixOp(BinaryOp\SmallerOrEqual::class, $node->left, ' <= ', $node->right);
+ }
+
+ protected function pExpr_BinaryOp_Coalesce(BinaryOp\Coalesce $node) {
+ return $this->pInfixOp(BinaryOp\Coalesce::class, $node->left, ' ?? ', $node->right);
+ }
+
+ protected function pExpr_Instanceof(Expr\Instanceof_ $node) {
+ list($precedence, $associativity) = $this->precedenceMap[Expr\Instanceof_::class];
+ return $this->pPrec($node->expr, $precedence, $associativity, -1)
+ . ' instanceof '
+ . $this->pNewVariable($node->class);
+ }
+
+ // Unary expressions
+
+ protected function pExpr_BooleanNot(Expr\BooleanNot $node) {
+ return $this->pPrefixOp(Expr\BooleanNot::class, '!', $node->expr);
+ }
+
+ protected function pExpr_BitwiseNot(Expr\BitwiseNot $node) {
+ return $this->pPrefixOp(Expr\BitwiseNot::class, '~', $node->expr);
+ }
+
+ protected function pExpr_UnaryMinus(Expr\UnaryMinus $node) {
+ if ($node->expr instanceof Expr\UnaryMinus || $node->expr instanceof Expr\PreDec) {
+ // Enforce -(-$expr) instead of --$expr
+ return '-(' . $this->p($node->expr) . ')';
+ }
+ return $this->pPrefixOp(Expr\UnaryMinus::class, '-', $node->expr);
+ }
+
+ protected function pExpr_UnaryPlus(Expr\UnaryPlus $node) {
+ if ($node->expr instanceof Expr\UnaryPlus || $node->expr instanceof Expr\PreInc) {
+ // Enforce +(+$expr) instead of ++$expr
+ return '+(' . $this->p($node->expr) . ')';
+ }
+ return $this->pPrefixOp(Expr\UnaryPlus::class, '+', $node->expr);
+ }
+
+ protected function pExpr_PreInc(Expr\PreInc $node) {
+ return $this->pPrefixOp(Expr\PreInc::class, '++', $node->var);
+ }
+
+ protected function pExpr_PreDec(Expr\PreDec $node) {
+ return $this->pPrefixOp(Expr\PreDec::class, '--', $node->var);
+ }
+
+ protected function pExpr_PostInc(Expr\PostInc $node) {
+ return $this->pPostfixOp(Expr\PostInc::class, $node->var, '++');
+ }
+
+ protected function pExpr_PostDec(Expr\PostDec $node) {
+ return $this->pPostfixOp(Expr\PostDec::class, $node->var, '--');
+ }
+
+ protected function pExpr_ErrorSuppress(Expr\ErrorSuppress $node) {
+ return $this->pPrefixOp(Expr\ErrorSuppress::class, '@', $node->expr);
+ }
+
+ protected function pExpr_YieldFrom(Expr\YieldFrom $node) {
+ return $this->pPrefixOp(Expr\YieldFrom::class, 'yield from ', $node->expr);
+ }
+
+ protected function pExpr_Print(Expr\Print_ $node) {
+ return $this->pPrefixOp(Expr\Print_::class, 'print ', $node->expr);
+ }
+
+ // Casts
+
+ protected function pExpr_Cast_Int(Cast\Int_ $node) {
+ return $this->pPrefixOp(Cast\Int_::class, '(int) ', $node->expr);
+ }
+
+ protected function pExpr_Cast_Double(Cast\Double $node) {
+ $kind = $node->getAttribute('kind', Cast\Double::KIND_DOUBLE);
+ if ($kind === Cast\Double::KIND_DOUBLE) {
+ $cast = '(double)';
+ } elseif ($kind === Cast\Double::KIND_FLOAT) {
+ $cast = '(float)';
+ } elseif ($kind === Cast\Double::KIND_REAL) {
+ $cast = '(real)';
+ }
+ return $this->pPrefixOp(Cast\Double::class, $cast . ' ', $node->expr);
+ }
+
+ protected function pExpr_Cast_String(Cast\String_ $node) {
+ return $this->pPrefixOp(Cast\String_::class, '(string) ', $node->expr);
+ }
+
+ protected function pExpr_Cast_Array(Cast\Array_ $node) {
+ return $this->pPrefixOp(Cast\Array_::class, '(array) ', $node->expr);
+ }
+
+ protected function pExpr_Cast_Object(Cast\Object_ $node) {
+ return $this->pPrefixOp(Cast\Object_::class, '(object) ', $node->expr);
+ }
+
+ protected function pExpr_Cast_Bool(Cast\Bool_ $node) {
+ return $this->pPrefixOp(Cast\Bool_::class, '(bool) ', $node->expr);
+ }
+
+ protected function pExpr_Cast_Unset(Cast\Unset_ $node) {
+ return $this->pPrefixOp(Cast\Unset_::class, '(unset) ', $node->expr);
+ }
+
+ // Function calls and similar constructs
+
+ protected function pExpr_FuncCall(Expr\FuncCall $node) {
+ return $this->pCallLhs($node->name)
+ . '(' . $this->pMaybeMultiline($node->args) . ')';
+ }
+
+ protected function pExpr_MethodCall(Expr\MethodCall $node) {
+ return $this->pDereferenceLhs($node->var) . '->' . $this->pObjectProperty($node->name)
+ . '(' . $this->pMaybeMultiline($node->args) . ')';
+ }
+
+ protected function pExpr_NullsafeMethodCall(Expr\NullsafeMethodCall $node) {
+ return $this->pDereferenceLhs($node->var) . '?->' . $this->pObjectProperty($node->name)
+ . '(' . $this->pMaybeMultiline($node->args) . ')';
+ }
+
+ protected function pExpr_StaticCall(Expr\StaticCall $node) {
+ return $this->pDereferenceLhs($node->class) . '::'
+ . ($node->name instanceof Expr
+ ? ($node->name instanceof Expr\Variable
+ ? $this->p($node->name)
+ : '{' . $this->p($node->name) . '}')
+ : $node->name)
+ . '(' . $this->pMaybeMultiline($node->args) . ')';
+ }
+
+ protected function pExpr_Empty(Expr\Empty_ $node) {
+ return 'empty(' . $this->p($node->expr) . ')';
+ }
+
+ protected function pExpr_Isset(Expr\Isset_ $node) {
+ return 'isset(' . $this->pCommaSeparated($node->vars) . ')';
+ }
+
+ protected function pExpr_Eval(Expr\Eval_ $node) {
+ return 'eval(' . $this->p($node->expr) . ')';
+ }
+
+ protected function pExpr_Include(Expr\Include_ $node) {
+ static $map = [
+ Expr\Include_::TYPE_INCLUDE => 'include',
+ Expr\Include_::TYPE_INCLUDE_ONCE => 'include_once',
+ Expr\Include_::TYPE_REQUIRE => 'require',
+ Expr\Include_::TYPE_REQUIRE_ONCE => 'require_once',
+ ];
+
+ return $map[$node->type] . ' ' . $this->p($node->expr);
+ }
+
+ protected function pExpr_List(Expr\List_ $node) {
+ return 'list(' . $this->pCommaSeparated($node->items) . ')';
+ }
+
+ // Other
+
+ protected function pExpr_Error(Expr\Error $node) {
+ throw new \LogicException('Cannot pretty-print AST with Error nodes');
+ }
+
+ protected function pExpr_Variable(Expr\Variable $node) {
+ if ($node->name instanceof Expr) {
+ return '${' . $this->p($node->name) . '}';
+ } else {
+ return '$' . $node->name;
+ }
+ }
+
+ protected function pExpr_Array(Expr\Array_ $node) {
+ $syntax = $node->getAttribute('kind',
+ $this->options['shortArraySyntax'] ? Expr\Array_::KIND_SHORT : Expr\Array_::KIND_LONG);
+ if ($syntax === Expr\Array_::KIND_SHORT) {
+ return '[' . $this->pMaybeMultiline($node->items, true) . ']';
+ } else {
+ return 'array(' . $this->pMaybeMultiline($node->items, true) . ')';
+ }
+ }
+
+ protected function pExpr_ArrayItem(Expr\ArrayItem $node) {
+ return (null !== $node->key ? $this->p($node->key) . ' => ' : '')
+ . ($node->byRef ? '&' : '')
+ . ($node->unpack ? '...' : '')
+ . $this->p($node->value);
+ }
+
+ protected function pExpr_ArrayDimFetch(Expr\ArrayDimFetch $node) {
+ return $this->pDereferenceLhs($node->var)
+ . '[' . (null !== $node->dim ? $this->p($node->dim) : '') . ']';
+ }
+
+ protected function pExpr_ConstFetch(Expr\ConstFetch $node) {
+ return $this->p($node->name);
+ }
+
+ protected function pExpr_ClassConstFetch(Expr\ClassConstFetch $node) {
+ return $this->pDereferenceLhs($node->class) . '::' . $this->p($node->name);
+ }
+
+ protected function pExpr_PropertyFetch(Expr\PropertyFetch $node) {
+ return $this->pDereferenceLhs($node->var) . '->' . $this->pObjectProperty($node->name);
+ }
+
+ protected function pExpr_NullsafePropertyFetch(Expr\NullsafePropertyFetch $node) {
+ return $this->pDereferenceLhs($node->var) . '?->' . $this->pObjectProperty($node->name);
+ }
+
+ protected function pExpr_StaticPropertyFetch(Expr\StaticPropertyFetch $node) {
+ return $this->pDereferenceLhs($node->class) . '::$' . $this->pObjectProperty($node->name);
+ }
+
+ protected function pExpr_ShellExec(Expr\ShellExec $node) {
+ return '`' . $this->pEncapsList($node->parts, '`') . '`';
+ }
+
+ protected function pExpr_Closure(Expr\Closure $node) {
+ return $this->pAttrGroups($node->attrGroups, true)
+ . ($node->static ? 'static ' : '')
+ . 'function ' . ($node->byRef ? '&' : '')
+ . '(' . $this->pCommaSeparated($node->params) . ')'
+ . (!empty($node->uses) ? ' use(' . $this->pCommaSeparated($node->uses) . ')' : '')
+ . (null !== $node->returnType ? ' : ' . $this->p($node->returnType) : '')
+ . ' {' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pExpr_Match(Expr\Match_ $node) {
+ return 'match (' . $this->p($node->cond) . ') {'
+ . $this->pCommaSeparatedMultiline($node->arms, true)
+ . $this->nl
+ . '}';
+ }
+
+ protected function pMatchArm(Node\MatchArm $node) {
+ return ($node->conds ? $this->pCommaSeparated($node->conds) : 'default')
+ . ' => ' . $this->p($node->body);
+ }
+
+ protected function pExpr_ArrowFunction(Expr\ArrowFunction $node) {
+ return $this->pAttrGroups($node->attrGroups, true)
+ . ($node->static ? 'static ' : '')
+ . 'fn' . ($node->byRef ? '&' : '')
+ . '(' . $this->pCommaSeparated($node->params) . ')'
+ . (null !== $node->returnType ? ': ' . $this->p($node->returnType) : '')
+ . ' => '
+ . $this->p($node->expr);
+ }
+
+ protected function pExpr_ClosureUse(Expr\ClosureUse $node) {
+ return ($node->byRef ? '&' : '') . $this->p($node->var);
+ }
+
+ protected function pExpr_New(Expr\New_ $node) {
+ if ($node->class instanceof Stmt\Class_) {
+ $args = $node->args ? '(' . $this->pMaybeMultiline($node->args) . ')' : '';
+ return 'new ' . $this->pClassCommon($node->class, $args);
+ }
+ return 'new ' . $this->pNewVariable($node->class)
+ . '(' . $this->pMaybeMultiline($node->args) . ')';
+ }
+
+ protected function pExpr_Clone(Expr\Clone_ $node) {
+ return 'clone ' . $this->p($node->expr);
+ }
+
+ protected function pExpr_Ternary(Expr\Ternary $node) {
+ // a bit of cheating: we treat the ternary as a binary op where the ?...: part is the operator.
+ // this is okay because the part between ? and : never needs parentheses.
+ return $this->pInfixOp(Expr\Ternary::class,
+ $node->cond, ' ?' . (null !== $node->if ? ' ' . $this->p($node->if) . ' ' : '') . ': ', $node->else
+ );
+ }
+
+ protected function pExpr_Exit(Expr\Exit_ $node) {
+ $kind = $node->getAttribute('kind', Expr\Exit_::KIND_DIE);
+ return ($kind === Expr\Exit_::KIND_EXIT ? 'exit' : 'die')
+ . (null !== $node->expr ? '(' . $this->p($node->expr) . ')' : '');
+ }
+
+ protected function pExpr_Throw(Expr\Throw_ $node) {
+ return 'throw ' . $this->p($node->expr);
+ }
+
+ protected function pExpr_Yield(Expr\Yield_ $node) {
+ if ($node->value === null) {
+ return 'yield';
+ } else {
+ // this is a bit ugly, but currently there is no way to detect whether the parentheses are necessary
+ return '(yield '
+ . ($node->key !== null ? $this->p($node->key) . ' => ' : '')
+ . $this->p($node->value)
+ . ')';
+ }
+ }
+
+ // Declarations
+
+ protected function pStmt_Namespace(Stmt\Namespace_ $node) {
+ if ($this->canUseSemicolonNamespaces) {
+ return 'namespace ' . $this->p($node->name) . ';'
+ . $this->nl . $this->pStmts($node->stmts, false);
+ } else {
+ return 'namespace' . (null !== $node->name ? ' ' . $this->p($node->name) : '')
+ . ' {' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+ }
+
+ protected function pStmt_Use(Stmt\Use_ $node) {
+ return 'use ' . $this->pUseType($node->type)
+ . $this->pCommaSeparated($node->uses) . ';';
+ }
+
+ protected function pStmt_GroupUse(Stmt\GroupUse $node) {
+ return 'use ' . $this->pUseType($node->type) . $this->pName($node->prefix)
+ . '\{' . $this->pCommaSeparated($node->uses) . '};';
+ }
+
+ protected function pStmt_UseUse(Stmt\UseUse $node) {
+ return $this->pUseType($node->type) . $this->p($node->name)
+ . (null !== $node->alias ? ' as ' . $node->alias : '');
+ }
+
+ protected function pUseType($type) {
+ return $type === Stmt\Use_::TYPE_FUNCTION ? 'function '
+ : ($type === Stmt\Use_::TYPE_CONSTANT ? 'const ' : '');
+ }
+
+ protected function pStmt_Interface(Stmt\Interface_ $node) {
+ return $this->pAttrGroups($node->attrGroups)
+ . 'interface ' . $node->name
+ . (!empty($node->extends) ? ' extends ' . $this->pCommaSeparated($node->extends) : '')
+ . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_Enum(Stmt\Enum_ $node) {
+ return $this->pAttrGroups($node->attrGroups)
+ . 'enum ' . $node->name
+ . ($node->scalarType ? " : $node->scalarType" : '')
+ . (!empty($node->implements) ? ' implements ' . $this->pCommaSeparated($node->implements) : '')
+ . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_Class(Stmt\Class_ $node) {
+ return $this->pClassCommon($node, ' ' . $node->name);
+ }
+
+ protected function pStmt_Trait(Stmt\Trait_ $node) {
+ return $this->pAttrGroups($node->attrGroups)
+ . 'trait ' . $node->name
+ . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_EnumCase(Stmt\EnumCase $node) {
+ return $this->pAttrGroups($node->attrGroups)
+ . 'case ' . $node->name
+ . ($node->expr ? ' = ' . $this->p($node->expr) : '')
+ . ';';
+ }
+
+ protected function pStmt_TraitUse(Stmt\TraitUse $node) {
+ return 'use ' . $this->pCommaSeparated($node->traits)
+ . (empty($node->adaptations)
+ ? ';'
+ : ' {' . $this->pStmts($node->adaptations) . $this->nl . '}');
+ }
+
+ protected function pStmt_TraitUseAdaptation_Precedence(Stmt\TraitUseAdaptation\Precedence $node) {
+ return $this->p($node->trait) . '::' . $node->method
+ . ' insteadof ' . $this->pCommaSeparated($node->insteadof) . ';';
+ }
+
+ protected function pStmt_TraitUseAdaptation_Alias(Stmt\TraitUseAdaptation\Alias $node) {
+ return (null !== $node->trait ? $this->p($node->trait) . '::' : '')
+ . $node->method . ' as'
+ . (null !== $node->newModifier ? ' ' . rtrim($this->pModifiers($node->newModifier), ' ') : '')
+ . (null !== $node->newName ? ' ' . $node->newName : '')
+ . ';';
+ }
+
+ protected function pStmt_Property(Stmt\Property $node) {
+ return $this->pAttrGroups($node->attrGroups)
+ . (0 === $node->flags ? 'var ' : $this->pModifiers($node->flags))
+ . ($node->type ? $this->p($node->type) . ' ' : '')
+ . $this->pCommaSeparated($node->props) . ';';
+ }
+
+ protected function pStmt_PropertyProperty(Stmt\PropertyProperty $node) {
+ return '$' . $node->name
+ . (null !== $node->default ? ' = ' . $this->p($node->default) : '');
+ }
+
+ protected function pStmt_ClassMethod(Stmt\ClassMethod $node) {
+ return $this->pAttrGroups($node->attrGroups)
+ . $this->pModifiers($node->flags)
+ . 'function ' . ($node->byRef ? '&' : '') . $node->name
+ . '(' . $this->pMaybeMultiline($node->params) . ')'
+ . (null !== $node->returnType ? ' : ' . $this->p($node->returnType) : '')
+ . (null !== $node->stmts
+ ? $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}'
+ : ';');
+ }
+
+ protected function pStmt_ClassConst(Stmt\ClassConst $node) {
+ return $this->pAttrGroups($node->attrGroups)
+ . $this->pModifiers($node->flags)
+ . 'const ' . $this->pCommaSeparated($node->consts) . ';';
+ }
+
+ protected function pStmt_Function(Stmt\Function_ $node) {
+ return $this->pAttrGroups($node->attrGroups)
+ . 'function ' . ($node->byRef ? '&' : '') . $node->name
+ . '(' . $this->pCommaSeparated($node->params) . ')'
+ . (null !== $node->returnType ? ' : ' . $this->p($node->returnType) : '')
+ . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_Const(Stmt\Const_ $node) {
+ return 'const ' . $this->pCommaSeparated($node->consts) . ';';
+ }
+
+ protected function pStmt_Declare(Stmt\Declare_ $node) {
+ return 'declare (' . $this->pCommaSeparated($node->declares) . ')'
+ . (null !== $node->stmts ? ' {' . $this->pStmts($node->stmts) . $this->nl . '}' : ';');
+ }
+
+ protected function pStmt_DeclareDeclare(Stmt\DeclareDeclare $node) {
+ return $node->key . '=' . $this->p($node->value);
+ }
+
+ // Control flow
+
+ protected function pStmt_If(Stmt\If_ $node) {
+ return 'if (' . $this->p($node->cond) . ') {'
+ . $this->pStmts($node->stmts) . $this->nl . '}'
+ . ($node->elseifs ? ' ' . $this->pImplode($node->elseifs, ' ') : '')
+ . (null !== $node->else ? ' ' . $this->p($node->else) : '');
+ }
+
+ protected function pStmt_ElseIf(Stmt\ElseIf_ $node) {
+ return 'elseif (' . $this->p($node->cond) . ') {'
+ . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_Else(Stmt\Else_ $node) {
+ return 'else {' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_For(Stmt\For_ $node) {
+ return 'for ('
+ . $this->pCommaSeparated($node->init) . ';' . (!empty($node->cond) ? ' ' : '')
+ . $this->pCommaSeparated($node->cond) . ';' . (!empty($node->loop) ? ' ' : '')
+ . $this->pCommaSeparated($node->loop)
+ . ') {' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_Foreach(Stmt\Foreach_ $node) {
+ return 'foreach (' . $this->p($node->expr) . ' as '
+ . (null !== $node->keyVar ? $this->p($node->keyVar) . ' => ' : '')
+ . ($node->byRef ? '&' : '') . $this->p($node->valueVar) . ') {'
+ . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_While(Stmt\While_ $node) {
+ return 'while (' . $this->p($node->cond) . ') {'
+ . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_Do(Stmt\Do_ $node) {
+ return 'do {' . $this->pStmts($node->stmts) . $this->nl
+ . '} while (' . $this->p($node->cond) . ');';
+ }
+
+ protected function pStmt_Switch(Stmt\Switch_ $node) {
+ return 'switch (' . $this->p($node->cond) . ') {'
+ . $this->pStmts($node->cases) . $this->nl . '}';
+ }
+
+ protected function pStmt_Case(Stmt\Case_ $node) {
+ return (null !== $node->cond ? 'case ' . $this->p($node->cond) : 'default') . ':'
+ . $this->pStmts($node->stmts);
+ }
+
+ protected function pStmt_TryCatch(Stmt\TryCatch $node) {
+ return 'try {' . $this->pStmts($node->stmts) . $this->nl . '}'
+ . ($node->catches ? ' ' . $this->pImplode($node->catches, ' ') : '')
+ . ($node->finally !== null ? ' ' . $this->p($node->finally) : '');
+ }
+
+ protected function pStmt_Catch(Stmt\Catch_ $node) {
+ return 'catch (' . $this->pImplode($node->types, '|')
+ . ($node->var !== null ? ' ' . $this->p($node->var) : '')
+ . ') {' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_Finally(Stmt\Finally_ $node) {
+ return 'finally {' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pStmt_Break(Stmt\Break_ $node) {
+ return 'break' . ($node->num !== null ? ' ' . $this->p($node->num) : '') . ';';
+ }
+
+ protected function pStmt_Continue(Stmt\Continue_ $node) {
+ return 'continue' . ($node->num !== null ? ' ' . $this->p($node->num) : '') . ';';
+ }
+
+ protected function pStmt_Return(Stmt\Return_ $node) {
+ return 'return' . (null !== $node->expr ? ' ' . $this->p($node->expr) : '') . ';';
+ }
+
+ protected function pStmt_Throw(Stmt\Throw_ $node) {
+ return 'throw ' . $this->p($node->expr) . ';';
+ }
+
+ protected function pStmt_Label(Stmt\Label $node) {
+ return $node->name . ':';
+ }
+
+ protected function pStmt_Goto(Stmt\Goto_ $node) {
+ return 'goto ' . $node->name . ';';
+ }
+
+ // Other
+
+ protected function pStmt_Expression(Stmt\Expression $node) {
+ return $this->p($node->expr) . ';';
+ }
+
+ protected function pStmt_Echo(Stmt\Echo_ $node) {
+ return 'echo ' . $this->pCommaSeparated($node->exprs) . ';';
+ }
+
+ protected function pStmt_Static(Stmt\Static_ $node) {
+ return 'static ' . $this->pCommaSeparated($node->vars) . ';';
+ }
+
+ protected function pStmt_Global(Stmt\Global_ $node) {
+ return 'global ' . $this->pCommaSeparated($node->vars) . ';';
+ }
+
+ protected function pStmt_StaticVar(Stmt\StaticVar $node) {
+ return $this->p($node->var)
+ . (null !== $node->default ? ' = ' . $this->p($node->default) : '');
+ }
+
+ protected function pStmt_Unset(Stmt\Unset_ $node) {
+ return 'unset(' . $this->pCommaSeparated($node->vars) . ');';
+ }
+
+ protected function pStmt_InlineHTML(Stmt\InlineHTML $node) {
+ $newline = $node->getAttribute('hasLeadingNewline', true) ? "\n" : '';
+ return '?>' . $newline . $node->value . '<?php ';
+ }
+
+ protected function pStmt_HaltCompiler(Stmt\HaltCompiler $node) {
+ return '__halt_compiler();' . $node->remaining;
+ }
+
+ protected function pStmt_Nop(Stmt\Nop $node) {
+ return '';
+ }
+
+ // Helpers
+
+ protected function pClassCommon(Stmt\Class_ $node, $afterClassToken) {
+ return $this->pAttrGroups($node->attrGroups, $node->name === null)
+ . $this->pModifiers($node->flags)
+ . 'class' . $afterClassToken
+ . (null !== $node->extends ? ' extends ' . $this->p($node->extends) : '')
+ . (!empty($node->implements) ? ' implements ' . $this->pCommaSeparated($node->implements) : '')
+ . $this->nl . '{' . $this->pStmts($node->stmts) . $this->nl . '}';
+ }
+
+ protected function pObjectProperty($node) {
+ if ($node instanceof Expr) {
+ return '{' . $this->p($node) . '}';
+ } else {
+ return $node;
+ }
+ }
+
+ protected function pEncapsList(array $encapsList, $quote) {
+ $return = '';
+ foreach ($encapsList as $element) {
+ if ($element instanceof Scalar\EncapsedStringPart) {
+ $return .= $this->escapeString($element->value, $quote);
+ } else {
+ $return .= '{' . $this->p($element) . '}';
+ }
+ }
+
+ return $return;
+ }
+
+ protected function pSingleQuotedString(string $string) {
+ return '\'' . addcslashes($string, '\'\\') . '\'';
+ }
+
+ protected function escapeString($string, $quote) {
+ if (null === $quote) {
+ // For doc strings, don't escape newlines
+ $escaped = addcslashes($string, "\t\f\v$\\");
+ } else {
+ $escaped = addcslashes($string, "\n\r\t\f\v$" . $quote . "\\");
+ }
+
+ // Escape control characters and non-UTF-8 characters.
+ // Regex based on https://stackoverflow.com/a/11709412/385378.
+ $regex = '/(
+ [\x00-\x08\x0E-\x1F] # Control characters
+ | [\xC0-\xC1] # Invalid UTF-8 Bytes
+ | [\xF5-\xFF] # Invalid UTF-8 Bytes
+ | \xE0(?=[\x80-\x9F]) # Overlong encoding of prior code point
+ | \xF0(?=[\x80-\x8F]) # Overlong encoding of prior code point
+ | [\xC2-\xDF](?![\x80-\xBF]) # Invalid UTF-8 Sequence Start
+ | [\xE0-\xEF](?![\x80-\xBF]{2}) # Invalid UTF-8 Sequence Start
+ | [\xF0-\xF4](?![\x80-\xBF]{3}) # Invalid UTF-8 Sequence Start
+ | (?<=[\x00-\x7F\xF5-\xFF])[\x80-\xBF] # Invalid UTF-8 Sequence Middle
+ | (?<![\xC2-\xDF]|[\xE0-\xEF]|[\xE0-\xEF][\x80-\xBF]|[\xF0-\xF4]|[\xF0-\xF4][\x80-\xBF]|[\xF0-\xF4][\x80-\xBF]{2})[\x80-\xBF] # Overlong Sequence
+ | (?<=[\xE0-\xEF])[\x80-\xBF](?![\x80-\xBF]) # Short 3 byte sequence
+ | (?<=[\xF0-\xF4])[\x80-\xBF](?![\x80-\xBF]{2}) # Short 4 byte sequence
+ | (?<=[\xF0-\xF4][\x80-\xBF])[\x80-\xBF](?![\x80-\xBF]) # Short 4 byte sequence (2)
+ )/x';
+ return preg_replace_callback($regex, function ($matches) {
+ assert(strlen($matches[0]) === 1);
+ $hex = dechex(ord($matches[0]));;
+ return '\\x' . str_pad($hex, 2, '0', \STR_PAD_LEFT);
+ }, $escaped);
+ }
+
+ protected function containsEndLabel($string, $label, $atStart = true, $atEnd = true) {
+ $start = $atStart ? '(?:^|[\r\n])' : '[\r\n]';
+ $end = $atEnd ? '(?:$|[;\r\n])' : '[;\r\n]';
+ return false !== strpos($string, $label)
+ && preg_match('/' . $start . $label . $end . '/', $string);
+ }
+
+ protected function encapsedContainsEndLabel(array $parts, $label) {
+ foreach ($parts as $i => $part) {
+ $atStart = $i === 0;
+ $atEnd = $i === count($parts) - 1;
+ if ($part instanceof Scalar\EncapsedStringPart
+ && $this->containsEndLabel($part->value, $label, $atStart, $atEnd)
+ ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ protected function pDereferenceLhs(Node $node) {
+ if (!$this->dereferenceLhsRequiresParens($node)) {
+ return $this->p($node);
+ } else {
+ return '(' . $this->p($node) . ')';
+ }
+ }
+
+ protected function pCallLhs(Node $node) {
+ if (!$this->callLhsRequiresParens($node)) {
+ return $this->p($node);
+ } else {
+ return '(' . $this->p($node) . ')';
+ }
+ }
+
+ protected function pNewVariable(Node $node) {
+ // TODO: This is not fully accurate.
+ return $this->pDereferenceLhs($node);
+ }
+
+ /**
+ * @param Node[] $nodes
+ * @return bool
+ */
+ protected function hasNodeWithComments(array $nodes) {
+ foreach ($nodes as $node) {
+ if ($node && $node->getComments()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ protected function pMaybeMultiline(array $nodes, bool $trailingComma = false) {
+ if (!$this->hasNodeWithComments($nodes)) {
+ return $this->pCommaSeparated($nodes);
+ } else {
+ return $this->pCommaSeparatedMultiline($nodes, $trailingComma) . $this->nl;
+ }
+ }
+
+ protected function pAttrGroups(array $nodes, bool $inline = false): string {
+ $result = '';
+ $sep = $inline ? ' ' : $this->nl;
+ foreach ($nodes as $node) {
+ $result .= $this->p($node) . $sep;
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
new file mode 100644
index 000000000..2c7fc3070
--- /dev/null
+++ b/vendor/nikic/php-parser/lib/PhpParser/PrettyPrinterAbstract.php
@@ -0,0 +1,1506 @@
+<?php declare(strict_types=1);
+
+namespace PhpParser;
+
+use PhpParser\Internal\DiffElem;
+use PhpParser\Internal\PrintableNewAnonClassNode;
+use PhpParser\Internal\TokenStream;
+use PhpParser\Node\Expr;
+use PhpParser\Node\Expr\AssignOp;
+use PhpParser\Node\Expr\BinaryOp;
+use PhpParser\Node\Expr\Cast;
+use PhpParser\Node\Scalar;
+use PhpParser\Node\Stmt;
+
+abstract class PrettyPrinterAbstract
+{
+ const FIXUP_PREC_LEFT = 0; // LHS operand affected by precedence
+ const FIXUP_PREC_RIGHT = 1; // RHS operand affected by precedence
+ const FIXUP_CALL_LHS = 2; // LHS of call
+ const FIXUP_DEREF_LHS = 3; // LHS of dereferencing operation
+ const FIXUP_BRACED_NAME = 4; // Name operand that may require bracing
+ const FIXUP_VAR_BRACED_NAME = 5; // Name operand that may require ${} bracing
+ const FIXUP_ENCAPSED = 6; // Encapsed string part
+
+ protected $precedenceMap = [
+ // [precedence, associativity]
+ // where for precedence -1 is %left, 0 is %nonassoc and 1 is %right
+ BinaryOp\Pow::class => [ 0, 1],
+ Expr\BitwiseNot::class => [ 10, 1],
+ Expr\PreInc::class => [ 10, 1],
+ Expr\PreDec::class => [ 10, 1],
+ Expr\PostInc::class => [ 10, -1],
+ Expr\PostDec::class => [ 10, -1],
+ Expr\UnaryPlus::class => [ 10, 1],
+ Expr\UnaryMinus::class => [ 10, 1],
+ Cast\Int_::class => [ 10, 1],
+ Cast\Double::class => [ 10, 1],
+ Cast\String_::class => [ 10, 1],
+ Cast\Array_::class => [ 10, 1],
+ Cast\Object_::class => [ 10, 1],
+ Cast\Bool_::class => [ 10, 1],
+ Cast\Unset_::class => [ 10, 1],
+ Expr\ErrorSuppress::class => [ 10, 1],
+ Expr\Instanceof_::class => [ 20, 0],
+ Expr\BooleanNot::class => [ 30, 1],
+ BinaryOp\Mul::class => [ 40, -1],
+ BinaryOp\Div::class => [ 40, -1],
+ BinaryOp\Mod::class => [ 40, -1],
+ BinaryOp\Plus::class => [ 50, -1],
+ BinaryOp\Minus::class => [ 50, -1],
+ BinaryOp\Concat::class => [ 50, -1],
+ BinaryOp\ShiftLeft::class => [ 60, -1],
+ BinaryOp\ShiftRight::class => [ 60, -1],
+ BinaryOp\Smaller::class => [ 70, 0],
+ BinaryOp\SmallerOrEqual::class => [ 70, 0],
+ BinaryOp\Greater::class => [ 70, 0],
+ BinaryOp\GreaterOrEqual::class => [ 70, 0],
+ BinaryOp\Equal::class => [ 80, 0],
+ BinaryOp\NotEqual::class => [ 80, 0],
+ BinaryOp\Identical::class => [ 80, 0],
+ BinaryOp\NotIdentical::class => [ 80, 0],
+ BinaryOp\Spaceship::class => [ 80, 0],
+ BinaryOp\BitwiseAnd::class => [ 90, -1],
+ BinaryOp\BitwiseXor::class => [100, -1],
+ BinaryOp\BitwiseOr::class => [110, -1],
+ BinaryOp\BooleanAnd::class => [120, -1],
+ BinaryOp\BooleanOr::class => [130, -1],
+ BinaryOp\Coalesce::class => [140, 1],
+ Expr\Ternary::class => [150, 0],
+ // parser uses %left for assignments, but they really behave as %right
+ Expr\Assign::class => [160, 1],
+ Expr\AssignRef::class => [160, 1],
+ AssignOp\Plus::class => [160, 1],
+ AssignOp\Minus::class => [160, 1],
+ AssignOp\Mul::class => [160, 1],
+ AssignOp\Div::class => [160, 1],
+ AssignOp\Concat::class => [160, 1],
+ AssignOp\Mod::class => [160, 1],
+ AssignOp\BitwiseAnd::class => [160, 1],
+ AssignOp\BitwiseOr::class => [160, 1],
+ AssignOp\BitwiseXor::class => [160, 1],
+ AssignOp\ShiftLeft::class => [160, 1],
+ AssignOp\ShiftRight::class => [160, 1],
+ AssignOp\Pow::class => [160, 1],
+ AssignOp\Coalesce::class => [160, 1],
+ Expr\YieldFrom::class => [165, 1],
+ Expr\Print_::class => [168, 1],
+ BinaryOp\LogicalAnd::class => [170, -1],
+ BinaryOp\LogicalXor::class => [180, -1],
+ BinaryOp\LogicalOr::class => [190, -1],
+ Expr\Include_::class => [200, -1],
+ ];
+
+ /** @var int Current indentation level. */
+ protected $indentLevel;
+ /** @var string Newline including current indentation. */
+ protected $nl;
+ /** @var string Token placed at end of doc string to ensure it is followed by a newline. */
+ protected $docStringEndToken;
+ /** @var bool Whether semicolon namespaces can be used (i.e. no global namespace is used) */
+ protected $canUseSemicolonNamespaces;
+ /** @var array Pretty printer options */
+ protected $options;
+
+ /** @var TokenStream Original tokens for use in format-preserving pretty print */
+ protected $origTokens;
+ /** @var Internal\Differ Differ for node lists */
+ protected $nodeListDiffer;
+ /** @var bool[] Map determining whether a certain character is a label character */
+ protected $labelCharMap;
+ /**
+ * @var int[][] Map from token classes and subnode names to FIXUP_* constants. This is used
+ * during format-preserving prints to place additional parens/braces if necessary.
+ */
+ protected $fixupMap;
+ /**
+ * @var int[][] Map from "{$node->getType()}->{$subNode}" to ['left' => $l, 'right' => $r],
+ * where $l and $r specify the token type that needs to be stripped when removing
+ * this node.
+ */
+ protected $removalMap;
+ /**
+ * @var mixed[] Map from "{$node->getType()}->{$subNode}" to [$find, $beforeToken, $extraLeft, $extraRight].
+ * $find is an optional token after which the insertion occurs. $extraLeft/Right
+ * are optionally added before/after the main insertions.
+ */
+ protected $insertionMap;
+ /**
+ * @var string[] Map From "{$node->getType()}->{$subNode}" to string that should be inserted
+ * between elements of this list subnode.
+ */
+ protected $listInsertionMap;
+ protected $emptyListInsertionMap;
+ /** @var int[] Map from "{$node->getType()}->{$subNode}" to token before which the modifiers
+ * should be reprinted. */
+ protected $modifierChangeMap;
+
+ /**
+ * Creates a pretty printer instance using the given options.
+ *
+ * Supported options:
+ * * bool $shortArraySyntax = false: Whether to use [] instead of array() as the default array
+ * syntax, if the node does not specify a format.
+ *
+ * @param array $options Dictionary of formatting options
+ */
+ public function __construct(array $options = []) {
+ $this->docStringEndToken = '_DOC_STRING_END_' . mt_rand();
+
+ $defaultOptions = ['shortArraySyntax' => false];
+ $this->options = $options + $defaultOptions;
+ }
+
+ /**
+ * Reset pretty printing state.
+ */
+ protected function resetState() {
+ $this->indentLevel = 0;
+ $this->nl = "\n";
+ $this->origTokens = null;
+ }
+
+ /**
+ * Set indentation level
+ *
+ * @param int $level Level in number of spaces
+ */
+ protected function setIndentLevel(int $level) {
+ $this->indentLevel = $level;
+ $this->nl = "\n" . \str_repeat(' ', $level);
+ }
+
+ /**
+ * Increase indentation level.
+ */
+ protected function indent() {
+ $this->indentLevel += 4;
+ $this->nl .= ' ';
+ }
+
+ /**
+ * Decrease indentation level.
+ */
+ protected function outdent() {
+ assert($this->indentLevel >= 4);
+ $this->indentLevel -= 4;
+ $this->nl = "\n" . str_repeat(' ', $this->indentLevel);
+ }
+
+ /**
+ * Pretty prints an array of statements.
+ *
+ * @param Node[] $stmts Array of statements
+ *
+ * @return string Pretty printed statements
+ */
+ public function prettyPrint(array $stmts) : string {
+ $this->resetState();
+ $this->preprocessNodes($stmts);
+
+ return ltrim($this->handleMagicTokens($this->pStmts($stmts, false)));
+ }
+
+ /**
+ * Pretty prints an expression.
+ *
+ * @param Expr $node Expression node
+ *
+ * @return string Pretty printed node
+ */
+ public function prettyPrintExpr(Expr $node) : string {
+ $this->resetState();
+ return $this->handleMagicTokens($this->p($node));
+ }
+
+ /**
+ * Pretty prints a file of statements (includes the opening <?php tag if it is required).
+ *
+ * @param Node[] $stmts Array of statements
+ *
+ * @return string Pretty printed statements
+ */
+ public function prettyPrintFile(array $stmts) : string {
+ if (!$stmts) {
+ return "<?php\n\n";
+ }
+
+ $p = "<?php\n\n" . $this->prettyPrint($stmts);
+
+ if ($stmts[0] instanceof Stmt\InlineHTML) {
+ $p = preg_replace('/^<\?php\s+\?>\n?/', '', $p);
+ }
+ if ($stmts[count($stmts) - 1] instanceof Stmt\InlineHTML) {
+ $p = preg_replace('/<\?php$/', '', rtrim($p));
+ }
+
+ return $p;
+ }
+
+ /**
+ * Preprocesses the top-level nodes to initialize pretty printer state.
+ *
+ * @param Node[] $nodes Array of nodes
+ */
+ protected function preprocessNodes(array $nodes) {
+ /* We can use semicolon-namespaces unless there is a global namespace declaration */
+ $this->canUseSemicolonNamespaces = true;
+ foreach ($nodes as $node) {
+ if ($node instanceof Stmt\Namespace_ && null === $node->name) {
+ $this->canUseSemicolonNamespaces = false;
+ break;
+ }
+ }
+ }
+
+ /**
+ * Handles (and removes) no-indent and doc-string-end tokens.
+ *
+ * @param string $str
+ * @return string
+ */
+ protected function handleMagicTokens(string $str) : string {
+ // Replace doc-string-end tokens with nothing or a newline
+ $str = str_replace($this->docStringEndToken . ";\n", ";\n", $str);
+ $str = str_replace($this->docStringEndToken, "\n", $str);
+
+ return $str;
+ }
+
+ /**
+ * Pretty prints an array of nodes (statements) and indents them optionally.
+ *
+ * @param Node[] $nodes Array of nodes
+ * @param bool $indent Whether to indent the printed nodes
+ *
+ * @return string Pretty printed statements
+ */
+ protected function pStmts(array $nodes, bool $indent = true) : string {
+ if ($indent) {
+ $this->indent();
+ }
+
+ $result = '';
+ foreach ($nodes as $node) {
+ $comments = $node->getComments();
+ if ($comments) {
+ $result .= $this->nl . $this->pComments($comments);
+ if ($node instanceof Stmt\Nop) {
+ continue;
+ }
+ }
+
+ $result .= $this->nl . $this->p($node);
+ }
+
+ if ($indent) {
+ $this->outdent();
+ }
+
+ return $result;
+ }
+
+ /**
+ * Pretty-print an infix operation while taking precedence into account.
+ *
+ * @param string $class Node class of operator
+ * @param Node $leftNode Left-hand side node
+ * @param string $operatorString String representation of the operator
+ * @param Node $rightNode Right-hand side node
+ *
+ * @return string Pretty printed infix operation
+ */
+ protected function pInfixOp(string $class, Node $leftNode, string $operatorString, Node $rightNode) : string {
+ list($precedence, $associativity) = $this->precedenceMap[$class];
+
+ return $this->pPrec($leftNode, $precedence, $associativity, -1)
+ . $operatorString
+ . $this->pPrec($rightNode, $precedence, $associativity, 1);
+ }
+
+ /**
+ * Pretty-print a prefix operation while taking precedence into account.
+ *
+ * @param string $class Node class of operator
+ * @param string $operatorString String representation of the operator
+ * @param Node $node Node
+ *
+ * @return string Pretty printed prefix operation
+ */
+ protected function pPrefixOp(string $class, string $operatorString, Node $node) : string {
+ list($precedence, $associativity) = $this->precedenceMap[$class];
+ return $operatorString . $this->pPrec($node, $precedence, $associativity, 1);
+ }
+
+ /**
+ * Pretty-print a postfix operation while taking precedence into account.
+ *
+ * @param string $class Node class of operator
+ * @param string $operatorString String representation of the operator
+ * @param Node $node Node
+ *
+ * @return string Pretty printed postfix operation
+ */
+ protected function pPostfixOp(string $class, Node $node, string $operatorString) : string {
+ list($precedence, $associativity) = $this->precedenceMap[$class];
+ return $this->pPrec($node, $precedence, $associativity, -1) . $operatorString;
+ }
+
+ /**
+ * Prints an expression node with the least amount of parentheses necessary to preserve the meaning.
+ *
+ * @param Node $node Node to pretty print
+ * @param int $parentPrecedence Precedence of the parent operator
+ * @param int $parentAssociativity Associativity of parent operator
+ * (-1 is left, 0 is nonassoc, 1 is right)
+ * @param int $childPosition Position of the node relative to the operator
+ * (-1 is left, 1 is right)
+ *
+ * @return string The pretty printed node
+ */
+ protected function pPrec(Node $node, int $parentPrecedence, int $parentAssociativity, int $childPosition) : string {
+ $class = \get_class($node);
+ if (isset($this->precedenceMap[$class])) {
+ $childPrecedence = $this->precedenceMap[$class][0];
+ if ($childPrecedence > $parentPrecedence
+ || ($parentPrecedence === $childPrecedence && $parentAssociativity !== $childPosition)
+ ) {
+ return '(' . $this->p($node) . ')';
+ }
+ }
+
+ return $this->p($node);
+ }
+
+ /**
+ * Pretty prints an array of nodes and implodes the printed values.
+ *
+ * @param Node[] $nodes Array of Nodes to be printed
+ * @param string $glue Character to implode with
+ *
+ * @return string Imploded pretty printed nodes
+ */
+ protected function pImplode(array $nodes, string $glue = '') : string {
+ $pNodes = [];
+ foreach ($nodes as $node) {
+ if (null === $node) {
+ $pNodes[] = '';
+ } else {
+ $pNodes[] = $this->p($node);
+ }
+ }
+
+ return implode($glue, $pNodes);
+ }
+
+ /**
+ * Pretty prints an array of nodes and implodes the printed values with commas.
+ *
+ * @param Node[] $nodes Array of Nodes to be printed
+ *
+ * @return string Comma separated pretty printed nodes
+ */
+ protected function pCommaSeparated(array $nodes) : string {
+ return $this->pImplode($nodes, ', ');
+ }
+
+ /**
+ * Pretty prints a comma-separated list of nodes in multiline style, including comments.
+ *
+ * The result includes a leading newline and one level of indentation (same as pStmts).
+ *
+ * @param Node[] $nodes Array of Nodes to be printed
+ * @param bool $trailingComma Whether to use a trailing comma
+ *
+ * @return string Comma separated pretty printed nodes in multiline style
+ */
+ protected function pCommaSeparatedMultiline(array $nodes, bool $trailingComma) : string {
+ $this->indent();
+
+ $result = '';
+ $lastIdx = count($nodes) - 1;
+ foreach ($nodes as $idx => $node) {
+ if ($node !== null) {
+ $comments = $node->getComments();
+ if ($comments) {
+ $result .= $this->nl . $this->pComments($comments);
+ }
+
+ $result .= $this->nl . $this->p($node);
+ } else {
+ $result .= $this->nl;
+ }
+ if ($trailingComma || $idx !== $lastIdx) {
+ $result .= ',';
+ }
+ }
+
+ $this->outdent();
+ return $result;
+ }
+
+ /**
+ * Prints reformatted text of the passed comments.
+ *
+ * @param Comment[] $comments List of comments
+ *
+ * @return string Reformatted text of comments
+ */
+ protected function pComments(array $comments) : string {
+ $formattedComments = [];
+
+ foreach ($comments as $comment) {
+ $formattedComments[] = str_replace("\n", $this->nl, $comment->getReformattedText());
+ }
+
+ return implode($this->nl, $formattedComments);
+ }
+
+ /**
+ * Perform a format-preserving pretty print of an AST.
+ *
+ * The format preservation is best effort. For some changes to the AST the formatting will not
+ * be preserved (at least not locally).
+ *
+ * In order to use this method a number of prerequisites must be satisfied:
+ * * The startTokenPos and endTokenPos attributes in the lexer must be enabled.
+ * * The CloningVisitor must be run on the AST prior to modification.
+ * * The original tokens must be provided, using the getTokens() method on the lexer.
+ *
+ * @param Node[] $stmts Modified AST with links to original AST
+ * @param Node[] $origStmts Original AST with token offset information
+ * @param array $origTokens Tokens of the original code
+ *
+ * @return string
+ */
+ public function printFormatPreserving(array $stmts, array $origStmts, array $origTokens) : string {
+ $this->initializeNodeListDiffer();
+ $this->initializeLabelCharMap();
+ $this->initializeFixupMap();
+ $this->initializeRemovalMap();
+ $this->initializeInsertionMap();
+ $this->initializeListInsertionMap();
+ $this->initializeEmptyListInsertionMap();
+ $this->initializeModifierChangeMap();
+
+ $this->resetState();
+ $this->origTokens = new TokenStream($origTokens);
+
+ $this->preprocessNodes($stmts);
+
+ $pos = 0;
+ $result = $this->pArray($stmts, $origStmts, $pos, 0, 'File', 'stmts', null);
+ if (null !== $result) {
+ $result .= $this->origTokens->getTokenCode($pos, count($origTokens), 0);
+ } else {
+ // Fallback
+ // TODO Add <?php properly
+ $result = "<?php\n" . $this->pStmts($stmts, false);
+ }
+
+ return ltrim($this->handleMagicTokens($result));
+ }
+
+ protected function pFallback(Node $node) {
+ return $this->{'p' . $node->getType()}($node);
+ }
+
+ /**
+ * Pretty prints a node.
+ *
+ * This method also handles formatting preservation for nodes.
+ *
+ * @param Node $node Node to be pretty printed
+ * @param bool $parentFormatPreserved Whether parent node has preserved formatting
+ *
+ * @return string Pretty printed node
+ */
+ protected function p(Node $node, $parentFormatPreserved = false) : string {
+ // No orig tokens means this is a normal pretty print without preservation of formatting
+ if (!$this->origTokens) {
+ return $this->{'p' . $node->getType()}($node);
+ }
+
+ /** @var Node $origNode */
+ $origNode = $node->getAttribute('origNode');
+ if (null === $origNode) {
+ return $this->pFallback($node);
+ }
+
+ $class = \get_class($node);
+ \assert($class === \get_class($origNode));
+
+ $startPos = $origNode->getStartTokenPos();
+ $endPos = $origNode->getEndTokenPos();
+ \assert($startPos >= 0 && $endPos >= 0);
+
+ $fallbackNode = $node;
+ if ($node instanceof Expr\New_ && $node->class instanceof Stmt\Class_) {
+ // Normalize node structure of anonymous classes
+ $node = PrintableNewAnonClassNode::fromNewNode($node);
+ $origNode = PrintableNewAnonClassNode::fromNewNode($origNode);
+ }
+
+ // InlineHTML node does not contain closing and opening PHP tags. If the parent formatting
+ // is not preserved, then we need to use the fallback code to make sure the tags are
+ // printed.
+ if ($node instanceof Stmt\InlineHTML && !$parentFormatPreserved) {
+ return $this->pFallback($fallbackNode);
+ }
+
+ $indentAdjustment = $this->indentLevel - $this->origTokens->getIndentationBefore($startPos);
+
+ $type = $node->getType();
+ $fixupInfo = $this->fixupMap[$class] ?? null;
+
+ $result = '';
+ $pos = $startPos;
+ foreach ($node->getSubNodeNames() as $subNodeName) {
+ $subNode = $node->$subNodeName;
+ $origSubNode = $origNode->$subNodeName;
+
+ if ((!$subNode instanceof Node && $subNode !== null)
+ || (!$origSubNode instanceof Node && $origSubNode !== null)
+ ) {
+ if ($subNode === $origSubNode) {
+ // Unchanged, can reuse old code
+ continue;
+ }
+
+ if (is_array($subNode) && is_array($origSubNode)) {
+ // Array subnode changed, we might be able to reconstruct it
+ $listResult = $this->pArray(
+ $subNode, $origSubNode, $pos, $indentAdjustment, $type, $subNodeName,
+ $fixupInfo[$subNodeName] ?? null
+ );
+ if (null === $listResult) {
+ return $this->pFallback($fallbackNode);
+ }
+
+ $result .= $listResult;
+ continue;
+ }
+
+ if (is_int($subNode) && is_int($origSubNode)) {
+ // Check if this is a modifier change
+ $key = $type . '->' . $subNodeName;
+ if (!isset($this->modifierChangeMap[$key])) {
+ return $this->pFallback($fallbackNode);
+ }
+
+ $findToken = $this->modifierChangeMap[$key];
+ $result .= $this->pModifiers($subNode);
+ $pos = $this->origTokens->findRight($pos, $findToken);
+ continue;
+ }
+
+ // If a non-node, non-array subnode changed, we don't be able to do a partial
+ // reconstructions, as we don't have enough offset information. Pretty print the
+ // whole node instead.
+ return $this->pFallback($fallbackNode);
+ }
+
+ $extraLeft = '';
+ $extraRight = '';
+ if ($origSubNode !== null) {
+ $subStartPos = $origSubNode->getStartTokenPos();
+ $subEndPos = $origSubNode->getEndTokenPos();
+ \assert($subStartPos >= 0 && $subEndPos >= 0);
+ } else {
+ if ($subNode === null) {
+ // Both null, nothing to do
+ continue;
+ }
+
+ // A node has been inserted, check if we have insertion information for it
+ $key = $type . '->' . $subNodeName;
+ if (!isset($this->insertionMap[$key])) {
+ return $this->pFallback($fallbackNode);
+ }
+
+ list($findToken, $beforeToken, $extraLeft, $extraRight) = $this->insertionMap[$key];
+ if (null !== $findToken) {
+ $subStartPos = $this->origTokens->findRight($pos, $findToken)
+ + (int) !$beforeToken;
+ } else {
+ $subStartPos = $pos;
+ }
+
+ if (null === $extraLeft && null !== $extraRight) {
+ // If inserting on the right only, skipping whitespace looks better
+ $subStartPos = $this->origTokens->skipRightWhitespace($subStartPos);
+ }
+ $subEndPos = $subStartPos - 1;
+ }
+
+ if (null === $subNode) {
+ // A node has been removed, check if we have removal information for it
+ $key = $type . '->' . $subNodeName;
+ if (!isset($this->removalMap[$key])) {
+ return $this->pFallback($fallbackNode);
+ }
+
+ // Adjust positions to account for additional tokens that must be skipped
+ $removalInfo = $this->removalMap[$key];
+ if (isset($removalInfo['left'])) {
+ $subStartPos = $this->origTokens->skipLeft($subStartPos - 1, $removalInfo['left']) + 1;
+ }
+ if (isset($removalInfo['right'])) {
+ $subEndPos = $this->origTokens->skipRight($subEndPos + 1, $removalInfo['right']) - 1;
+ }
+ }
+
+ $result .= $this->origTokens->getTokenCode($pos, $subStartPos, $indentAdjustment);
+
+ if (null !== $subNode) {
+ $result .= $extraLeft;
+
+ $origIndentLevel = $this->indentLevel;
+ $this->setIndentLevel($this->origTokens->getIndentationBefore($subStartPos) + $indentAdjustment);
+
+ // If it's the same node that was previously in this position, it certainly doesn't
+ // need fixup. It's important to check this here, because our fixup checks are more
+ // conservative than strictly necessary.
+ if (isset($fixupInfo[$subNodeName])
+ && $subNode->getAttribute('origNode') !== $origSubNode
+ ) {
+ $fixup = $fixupInfo[$subNodeName];
+ $res = $this->pFixup($fixup, $subNode, $class, $subStartPos, $subEndPos);
+ } else {
+ $res = $this->p($subNode, true);
+ }
+
+ $this->safeAppend($result, $res);
+ $this->setIndentLevel($origIndentLevel);
+
+ $result .= $extraRight;
+ }
+
+ $pos = $subEndPos + 1;
+ }
+
+ $result .= $this->origTokens->getTokenCode($pos, $endPos + 1, $indentAdjustment);
+ return $result;
+ }
+
+ /**
+ * Perform a format-preserving pretty print of an array.
+ *
+ * @param array $nodes New nodes
+ * @param array $origNodes Original nodes
+ * @param int $pos Current token position (updated by reference)
+ * @param int $indentAdjustment Adjustment for indentation
+ * @param string $parentNodeType Type of the containing node.
+ * @param string $subNodeName Name of array subnode.
+ * @param null|int $fixup Fixup information for array item nodes
+ *
+ * @return null|string Result of pretty print or null if cannot preserve formatting
+ */
+ protected function pArray(
+ array $nodes, array $origNodes, int &$pos, int $indentAdjustment,
+ string $parentNodeType, string $subNodeName, $fixup
+ ) {
+ $diff = $this->nodeListDiffer->diffWithReplacements($origNodes, $nodes);
+
+ $mapKey = $parentNodeType . '->' . $subNodeName;
+ $insertStr = $this->listInsertionMap[$mapKey] ?? null;
+ $isStmtList = $subNodeName === 'stmts';
+
+ $beforeFirstKeepOrReplace = true;
+ $skipRemovedNode = false;
+ $delayedAdd = [];
+ $lastElemIndentLevel = $this->indentLevel;
+
+ $insertNewline = false;
+ if ($insertStr === "\n") {
+ $insertStr = '';
+ $insertNewline = true;
+ }
+
+ if ($isStmtList && \count($origNodes) === 1 && \count($nodes) !== 1) {
+ $startPos = $origNodes[0]->getStartTokenPos();
+ $endPos = $origNodes[0]->getEndTokenPos();
+ \assert($startPos >= 0 && $endPos >= 0);
+ if (!$this->origTokens->haveBraces($startPos, $endPos)) {
+ // This was a single statement without braces, but either additional statements
+ // have been added, or the single statement has been removed. This requires the
+ // addition of braces. For now fall back.
+ // TODO: Try to preserve formatting
+ return null;
+ }
+ }
+
+ $result = '';
+ foreach ($diff as $i => $diffElem) {
+ $diffType = $diffElem->type;
+ /** @var Node|null $arrItem */
+ $arrItem = $diffElem->new;
+ /** @var Node|null $origArrItem */
+ $origArrItem = $diffElem->old;
+
+ if ($diffType === DiffElem::TYPE_KEEP || $diffType === DiffElem::TYPE_REPLACE) {
+ $beforeFirstKeepOrReplace = false;
+
+ if ($origArrItem === null || $arrItem === null) {
+ // We can only handle the case where both are null
+ if ($origArrItem === $arrItem) {
+ continue;
+ }
+ return null;
+ }
+
+ if (!$arrItem instanceof Node || !$origArrItem instanceof Node) {
+ // We can only deal with nodes. This can occur for Names, which use string arrays.
+ return null;
+ }
+
+ $itemStartPos = $origArrItem->getStartTokenPos();
+ $itemEndPos = $origArrItem->getEndTokenPos();
+ \assert($itemStartPos >= 0 && $itemEndPos >= 0 && $itemStartPos >= $pos);
+
+ $origIndentLevel = $this->indentLevel;
+ $lastElemIndentLevel = $this->origTokens->getIndentationBefore($itemStartPos) + $indentAdjustment;
+ $this->setIndentLevel($lastElemIndentLevel);
+
+ $comments = $arrItem->getComments();
+ $origComments = $origArrItem->getComments();
+ $commentStartPos = $origComments ? $origComments[0]->getStartTokenPos() : $itemStartPos;
+ \assert($commentStartPos >= 0);
+
+ if ($commentStartPos < $pos) {
+ // Comments may be assigned to multiple nodes if they start at the same position.
+ // Make sure we don't try to print them multiple times.
+ $commentStartPos = $itemStartPos;
+ }
+
+ if ($skipRemovedNode) {
+ if ($isStmtList && $this->origTokens->haveBracesInRange($pos, $itemStartPos)) {
+ // We'd remove the brace of a code block.
+ // TODO: Preserve formatting.
+ $this->setIndentLevel($origIndentLevel);
+ return null;
+ }
+ } else {
+ $result .= $this->origTokens->getTokenCode(
+ $pos, $commentStartPos, $indentAdjustment);
+ }
+
+ if (!empty($delayedAdd)) {
+ /** @var Node $delayedAddNode */
+ foreach ($delayedAdd as $delayedAddNode) {
+ if ($insertNewline) {
+ $delayedAddComments = $delayedAddNode->getComments();
+ if ($delayedAddComments) {
+ $result .= $this->pComments($delayedAddComments) . $this->nl;
+ }
+ }
+
+ $this->safeAppend($result, $this->p($delayedAddNode, true));
+
+ if ($insertNewline) {
+ $result .= $insertStr . $this->nl;
+ } else {
+ $result .= $insertStr;
+ }
+ }
+
+ $delayedAdd = [];
+ }
+
+ if ($comments !== $origComments) {
+ if ($comments) {
+ $result .= $this->pComments($comments) . $this->nl;
+ }
+ } else {
+ $result .= $this->origTokens->getTokenCode(
+ $commentStartPos, $itemStartPos, $indentAdjustment);
+ }
+
+ // If we had to remove anything, we have done so now.
+ $skipRemovedNode = false;
+ } elseif ($diffType === DiffElem::TYPE_ADD) {
+ if (null === $insertStr) {
+ // We don't have insertion information for this list type
+ return null;
+ }
+
+ // We go multiline if the original code was multiline,
+ // or if it's an array item with a comment above it.
+ if ($insertStr === ', ' &&
+ ($this->isMultiline($origNodes) || $arrItem->getComments())
+ ) {
+ $insertStr = ',';
+ $insertNewline = true;
+ }
+
+ if ($beforeFirstKeepOrReplace) {
+ // Will be inserted at the next "replace" or "keep" element
+ $delayedAdd[] = $arrItem;
+ continue;
+ }
+
+ $itemStartPos = $pos;
+ $itemEndPos = $pos - 1;
+
+ $origIndentLevel = $this->indentLevel;
+ $this->setIndentLevel($lastElemIndentLevel);
+
+ if ($insertNewline) {
+ $result .= $insertStr . $this->nl;
+ $comments = $arrItem->getComments();
+ if ($comments) {
+ $result .= $this->pComments($comments) . $this->nl;
+ }
+ } else {
+ $result .= $insertStr;
+ }
+ } elseif ($diffType === DiffElem::TYPE_REMOVE) {
+ if (!$origArrItem instanceof Node) {
+ // We only support removal for nodes
+ return null;
+ }
+
+ $itemStartPos = $origArrItem->getStartTokenPos();
+ $itemEndPos = $origArrItem->getEndTokenPos();
+ \assert($itemStartPos >= 0 && $itemEndPos >= 0);
+
+ // Consider comments part of the node.
+ $origComments = $origArrItem->getComments();
+ if ($origComments) {
+ $itemStartPos = $origComments[0]->getStartTokenPos();
+ }
+
+ if ($i === 0) {
+ // If we're removing from the start, keep the tokens before the node and drop those after it,
+ // instead of the other way around.
+ $result .= $this->origTokens->getTokenCode(
+ $pos, $itemStartPos, $indentAdjustment);
+ $skipRemovedNode = true;
+ } else {
+ if ($isStmtList && $this->origTokens->haveBracesInRange($pos, $itemStartPos)) {
+ // We'd remove the brace of a code block.
+ // TODO: Preserve formatting.
+ return null;
+ }
+ }
+
+ $pos = $itemEndPos + 1;
+ continue;
+ } else {
+ throw new \Exception("Shouldn't happen");
+ }
+
+ if (null !== $fixup && $arrItem->getAttribute('origNode') !== $origArrItem) {
+ $res = $this->pFixup($fixup, $arrItem, null, $itemStartPos, $itemEndPos);
+ } else {
+ $res = $this->p($arrItem, true);
+ }
+ $this->safeAppend($result, $res);
+
+ $this->setIndentLevel($origIndentLevel);
+ $pos = $itemEndPos + 1;
+ }
+
+ if ($skipRemovedNode) {
+ // TODO: Support removing single node.
+ return null;
+ }
+
+ if (!empty($delayedAdd)) {
+ if (!isset($this->emptyListInsertionMap[$mapKey])) {
+ return null;
+ }
+
+ list($findToken, $extraLeft, $extraRight) = $this->emptyListInsertionMap[$mapKey];
+ if (null !== $findToken) {
+ $insertPos = $this->origTokens->findRight($pos, $findToken) + 1;
+ $result .= $this->origTokens->getTokenCode($pos, $insertPos, $indentAdjustment);
+ $pos = $insertPos;
+ }
+
+ $first = true;
+ $result .= $extraLeft;
+ foreach ($delayedAdd as $delayedAddNode) {
+ if (!$first) {
+ $result .= $insertStr;
+ }
+ $result .= $this->p($delayedAddNode, true);
+ $first = false;
+ }
+ $result .= $extraRight;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Print node with fixups.
+ *
+ * Fixups here refer to the addition of extra parentheses, braces or other characters, that
+ * are required to preserve program semantics in a certain context (e.g. to maintain precedence
+ * or because only certain expressions are allowed in certain places).
+ *
+ * @param int $fixup Fixup type
+ * @param Node $subNode Subnode to print
+ * @param string|null $parentClass Class of parent node
+ * @param int $subStartPos Original start pos of subnode
+ * @param int $subEndPos Original end pos of subnode
+ *
+ * @return string Result of fixed-up print of subnode
+ */
+ protected function pFixup(int $fixup, Node $subNode, $parentClass, int $subStartPos, int $subEndPos) : string {
+ switch ($fixup) {
+ case self::FIXUP_PREC_LEFT:
+ case self::FIXUP_PREC_RIGHT:
+ if (!$this->origTokens->haveParens($subStartPos, $subEndPos)) {
+ list($precedence, $associativity) = $this->precedenceMap[$parentClass];
+ return $this->pPrec($subNode, $precedence, $associativity,
+ $fixup === self::FIXUP_PREC_LEFT ? -1 : 1);
+ }
+ break;
+ case self::FIXUP_CALL_LHS:
+ if ($this->callLhsRequiresParens($subNode)
+ && !$this->origTokens->haveParens($subStartPos, $subEndPos)
+ ) {
+ return '(' . $this->p($subNode) . ')';
+ }
+ break;
+ case self::FIXUP_DEREF_LHS:
+ if ($this->dereferenceLhsRequiresParens($subNode)
+ && !$this->origTokens->haveParens($subStartPos, $subEndPos)
+ ) {
+ return '(' . $this->p($subNode) . ')';
+ }
+ break;
+ case self::FIXUP_BRACED_NAME:
+ case self::FIXUP_VAR_BRACED_NAME:
+ if ($subNode instanceof Expr
+ && !$this->origTokens->haveBraces($subStartPos, $subEndPos)
+ ) {
+ return ($fixup === self::FIXUP_VAR_BRACED_NAME ? '$' : '')
+ . '{' . $this->p($subNode) . '}';
+ }
+ break;
+ case self::FIXUP_ENCAPSED:
+ if (!$subNode instanceof Scalar\EncapsedStringPart
+ && !$this->origTokens->haveBraces($subStartPos, $subEndPos)
+ ) {
+ return '{' . $this->p($subNode) . '}';
+ }
+ break;
+ default:
+ throw new \Exception('Cannot happen');
+ }
+
+ // Nothing special to do
+ return $this->p($subNode);
+ }
+
+ /**
+ * Appends to a string, ensuring whitespace between label characters.
+ *
+ * Example: "echo" and "$x" result in "echo$x", but "echo" and "x" result in "echo x".
+ * Without safeAppend the result would be "echox", which does not preserve semantics.
+ *
+ * @param string $str
+ * @param string $append
+ */
+ protected function safeAppend(string &$str, string $append) {
+ if ($str === "") {
+ $str = $append;
+ return;
+ }
+
+ if ($append === "") {
+ return;
+ }
+
+ if (!$this->labelCharMap[$append[0]]
+ || !$this->labelCharMap[$str[\strlen($str) - 1]]) {
+ $str .= $append;
+ } else {
+ $str .= " " . $append;
+ }
+ }
+
+ /**
+ * Determines whether the LHS of a call must be wrapped in parenthesis.
+ *
+ * @param Node $node LHS of a call
+ *
+ * @return bool Whether parentheses are required
+ */
+ protected function callLhsRequiresParens(Node $node) : bool {
+ return !($node instanceof Node\Name
+ || $node instanceof Expr\Variable
+ || $node instanceof Expr\ArrayDimFetch
+ || $node instanceof Expr\FuncCall
+ || $node instanceof Expr\MethodCall
+ || $node instanceof Expr\NullsafeMethodCall
+ || $node instanceof Expr\StaticCall
+ || $node instanceof Expr\Array_);
+ }
+
+ /**
+ * Determines whether the LHS of a dereferencing operation must be wrapped in parenthesis.
+ *
+ * @param Node $node LHS of dereferencing operation
+ *
+ * @return bool Whether parentheses are required
+ */
+ protected function dereferenceLhsRequiresParens(Node $node) : bool {
+ return !($node instanceof Expr\Variable
+ || $node instanceof Node\Name
+ || $node instanceof Expr\ArrayDimFetch
+ || $node instanceof Expr\PropertyFetch
+ || $node instanceof Expr\NullsafePropertyFetch
+ || $node instanceof Expr\StaticPropertyFetch
+ || $node instanceof Expr\FuncCall
+ || $node instanceof Expr\MethodCall
+ || $node instanceof Expr\NullsafeMethodCall
+ || $node instanceof Expr\StaticCall
+ || $node instanceof Expr\Array_
+ || $node instanceof Scalar\String_
+ || $node instanceof Expr\ConstFetch
+ || $node instanceof Expr\ClassConstFetch);
+ }
+
+ /**
+ * Print modifiers, including trailing whitespace.
+ *
+ * @param int $modifiers Modifier mask to print
+ *
+ * @return string Printed modifiers
+ */
+ protected function pModifiers(int $modifiers) {
+ return ($modifiers & Stmt\Class_::MODIFIER_PUBLIC ? 'public ' : '')
+ . ($modifiers & Stmt\Class_::MODIFIER_PROTECTED ? 'protected ' : '')
+ . ($modifiers & Stmt\Class_::MODIFIER_PRIVATE ? 'private ' : '')
+ . ($modifiers & Stmt\Class_::MODIFIER_STATIC ? 'static ' : '')
+ . ($modifiers & Stmt\Class_::MODIFIER_ABSTRACT ? 'abstract ' : '')
+ . ($modifiers & Stmt\Class_::MODIFIER_FINAL ? 'final ' : '')
+ . ($modifiers & Stmt\Class_::MODIFIER_READONLY ? 'readonly ' : '');
+ }
+
+ /**
+ * Determine whether a list of nodes uses multiline formatting.
+ *
+ * @param (Node|null)[] $nodes Node list
+ *
+ * @return bool Whether multiline formatting is used
+ */
+ protected function isMultiline(array $nodes) : bool {
+ if (\count($nodes) < 2) {
+ return false;
+ }
+
+ $pos = -1;
+ foreach ($nodes as $node) {
+ if (null === $node) {
+ continue;
+ }
+
+ $endPos = $node->getEndTokenPos() + 1;
+ if ($pos >= 0) {
+ $text = $this->origTokens->getTokenCode($pos, $endPos, 0);
+ if (false === strpos($text, "\n")) {
+ // We require that a newline is present between *every* item. If the formatting
+ // is inconsistent, with only some items having newlines, we don't consider it
+ // as multiline
+ return false;
+ }
+ }
+ $pos = $endPos;
+ }
+
+ return true;
+ }
+
+ /**
+ * Lazily initializes label char map.
+ *
+ * The label char map determines whether a certain character may occur in a label.
+ */
+ protected function initializeLabelCharMap() {
+ if ($this->labelCharMap) return;
+
+ $this->labelCharMap = [];
+ for ($i = 0; $i < 256; $i++) {
+ // Since PHP 7.1 The lower range is 0x80. However, we also want to support code for
+ // older versions.
+ $chr = chr($i);
+ $this->labelCharMap[$chr] = $i >= 0x7f || ctype_alnum($chr);
+ }
+ }
+
+ /**
+ * Lazily initializes node list differ.
+ *
+ * The node list differ is used to determine differences between two array subnodes.
+ */
+ protected function initializeNodeListDiffer() {
+ if ($this->nodeListDiffer) return;
+
+ $this->nodeListDiffer = new Internal\Differ(function ($a, $b) {
+ if ($a instanceof Node && $b instanceof Node) {
+ return $a === $b->getAttribute('origNode');
+ }
+ // Can happen for array destructuring
+ return $a === null && $b === null;
+ });
+ }
+
+ /**
+ * Lazily initializes fixup map.
+ *
+ * The fixup map is used to determine whether a certain subnode of a certain node may require
+ * some kind of "fixup" operation, e.g. the addition of parenthesis or braces.
+ */
+ protected function initializeFixupMap() {
+ if ($this->fixupMap) return;
+
+ $this->fixupMap = [
+ Expr\PreInc::class => ['var' => self::FIXUP_PREC_RIGHT],
+ Expr\PreDec::class => ['var' => self::FIXUP_PREC_RIGHT],
+ Expr\PostInc::class => ['var' => self::FIXUP_PREC_LEFT],
+ Expr\PostDec::class => ['var' => self::FIXUP_PREC_LEFT],
+ Expr\Instanceof_::class => [
+ 'expr' => self::FIXUP_PREC_LEFT,
+ 'class' => self::FIXUP_PREC_RIGHT, // TODO: FIXUP_NEW_VARIABLE
+ ],
+ Expr\Ternary::class => [
+ 'cond' => self::FIXUP_PREC_LEFT,
+ 'else' => self::FIXUP_PREC_RIGHT,
+ ],
+
+ Expr\FuncCall::class => ['name' => self::FIXUP_CALL_LHS],
+ Expr\StaticCall::class => ['class' => self::FIXUP_DEREF_LHS],
+ Expr\ArrayDimFetch::class => ['var' => self::FIXUP_DEREF_LHS],
+ Expr\ClassConstFetch::class => ['var' => self::FIXUP_DEREF_LHS],
+ Expr\New_::class => ['class' => self::FIXUP_DEREF_LHS], // TODO: FIXUP_NEW_VARIABLE
+ Expr\MethodCall::class => [
+ 'var' => self::FIXUP_DEREF_LHS,
+ 'name' => self::FIXUP_BRACED_NAME,
+ ],
+ Expr\NullsafeMethodCall::class => [
+ 'var' => self::FIXUP_DEREF_LHS,
+ 'name' => self::FIXUP_BRACED_NAME,
+ ],
+ Expr\StaticPropertyFetch::class => [
+ 'class' => self::FIXUP_DEREF_LHS,
+ 'name' => self::FIXUP_VAR_BRACED_NAME,
+ ],
+ Expr\PropertyFetch::class => [
+ 'var' => self::FIXUP_DEREF_LHS,
+ 'name' => self::FIXUP_BRACED_NAME,
+ ],
+ Expr\NullsafePropertyFetch::class => [
+ 'var' => self::FIXUP_DEREF_LHS,
+ 'name' => self::FIXUP_BRACED_NAME,
+ ],
+ Scalar\Encapsed::class => [
+ 'parts' => self::FIXUP_ENCAPSED,
+ ],
+ ];
+
+ $binaryOps = [
+ BinaryOp\Pow::class, BinaryOp\Mul::class, BinaryOp\Div::class, BinaryOp\Mod::class,
+ BinaryOp\Plus::class, BinaryOp\Minus::class, BinaryOp\Concat::class,
+ BinaryOp\ShiftLeft::class, BinaryOp\ShiftRight::class, BinaryOp\Smaller::class,
+ BinaryOp\SmallerOrEqual::class, BinaryOp\Greater::class, BinaryOp\GreaterOrEqual::class,
+ BinaryOp\Equal::class, BinaryOp\NotEqual::class, BinaryOp\Identical::class,
+ BinaryOp\NotIdentical::class, BinaryOp\Spaceship::class, BinaryOp\BitwiseAnd::class,
+ BinaryOp\BitwiseXor::class, BinaryOp\BitwiseOr::class, BinaryOp\BooleanAnd::class,
+ BinaryOp\BooleanOr::class, BinaryOp\Coalesce::class, BinaryOp\LogicalAnd::class,
+ BinaryOp\LogicalXor::class, BinaryOp\LogicalOr::class,
+ ];
+ foreach ($binaryOps as $binaryOp) {
+ $this->fixupMap[$binaryOp] = [
+ 'left' => self::FIXUP_PREC_LEFT,
+ 'right' => self::FIXUP_PREC_RIGHT
+ ];
+ }
+
+ $assignOps = [
+ Expr\Assign::class, Expr\AssignRef::class, AssignOp\Plus::class, AssignOp\Minus::class,
+ AssignOp\Mul::class, AssignOp\Div::class, AssignOp\Concat::class, AssignOp\Mod::class,
+ AssignOp\BitwiseAnd::class, AssignOp\BitwiseOr::class, AssignOp\BitwiseXor::class,
+ AssignOp\ShiftLeft::class, AssignOp\ShiftRight::class, AssignOp\Pow::class, AssignOp\Coalesce::class
+ ];
+ foreach ($assignOps as $assignOp) {
+ $this->fixupMap[$assignOp] = [
+ 'var' => self::FIXUP_PREC_LEFT,
+ 'expr' => self::FIXUP_PREC_RIGHT,
+ ];
+ }
+
+ $prefixOps = [
+ Expr\BitwiseNot::class, Expr\BooleanNot::class, Expr\UnaryPlus::class, Expr\UnaryMinus::class,
+ Cast\Int_::class, Cast\Double::class, Cast\String_::class, Cast\Array_::class,
+ Cast\Object_::class, Cast\Bool_::class, Cast\Unset_::class, Expr\ErrorSuppress::class,
+ Expr\YieldFrom::class, Expr\Print_::class, Expr\Include_::class,
+ ];
+ foreach ($prefixOps as $prefixOp) {
+ $this->fixupMap[$prefixOp] = ['expr' => self::FIXUP_PREC_RIGHT];
+ }
+ }
+
+ /**
+ * Lazily initializes the removal map.
+ *
+ * The removal map is used to determine which additional tokens should be removed when a
+ * certain node is replaced by null.
+ */
+ protected function initializeRemovalMap() {
+ if ($this->removalMap) return;
+
+ $stripBoth = ['left' => \T_WHITESPACE, 'right' => \T_WHITESPACE];
+ $stripLeft = ['left' => \T_WHITESPACE];
+ $stripRight = ['right' => \T_WHITESPACE];
+ $stripDoubleArrow = ['right' => \T_DOUBLE_ARROW];
+ $stripColon = ['left' => ':'];
+ $stripEquals = ['left' => '='];
+ $this->removalMap = [
+ 'Expr_ArrayDimFetch->dim' => $stripBoth,
+ 'Expr_ArrayItem->key' => $stripDoubleArrow,
+ 'Expr_ArrowFunction->returnType' => $stripColon,
+ 'Expr_Closure->returnType' => $stripColon,
+ 'Expr_Exit->expr' => $stripBoth,
+ 'Expr_Ternary->if' => $stripBoth,
+ 'Expr_Yield->key' => $stripDoubleArrow,
+ 'Expr_Yield->value' => $stripBoth,
+ 'Param->type' => $stripRight,
+ 'Param->default' => $stripEquals,
+ 'Stmt_Break->num' => $stripBoth,
+ 'Stmt_Catch->var' => $stripLeft,
+ 'Stmt_ClassMethod->returnType' => $stripColon,
+ 'Stmt_Class->extends' => ['left' => \T_EXTENDS],
+ 'Stmt_Enum->scalarType' => $stripColon,
+ 'Stmt_EnumCase->expr' => $stripEquals,
+ 'Expr_PrintableNewAnonClass->extends' => ['left' => \T_EXTENDS],
+ 'Stmt_Continue->num' => $stripBoth,
+ 'Stmt_Foreach->keyVar' => $stripDoubleArrow,
+ 'Stmt_Function->returnType' => $stripColon,
+ 'Stmt_If->else' => $stripLeft,
+ 'Stmt_Namespace->name' => $stripLeft,
+ 'Stmt_Property->type' => $stripRight,
+ 'Stmt_PropertyProperty->default' => $stripEquals,
+ 'Stmt_Return->expr' => $stripBoth,
+ 'Stmt_StaticVar->default' => $stripEquals,
+ 'Stmt_TraitUseAdaptation_Alias->newName' => $stripLeft,
+ 'Stmt_TryCatch->finally' => $stripLeft,
+ // 'Stmt_Case->cond': Replace with "default"
+ // 'Stmt_Class->name': Unclear what to do
+ // 'Stmt_Declare->stmts': Not a plain node
+ // 'Stmt_TraitUseAdaptation_Alias->newModifier': Not a plain node
+ ];
+ }
+
+ protected function initializeInsertionMap() {
+ if ($this->insertionMap) return;
+
+ // TODO: "yield" where both key and value are inserted doesn't work
+ // [$find, $beforeToken, $extraLeft, $extraRight]
+ $this->insertionMap = [
+ 'Expr_ArrayDimFetch->dim' => ['[', false, null, null],
+ 'Expr_ArrayItem->key' => [null, false, null, ' => '],
+ 'Expr_ArrowFunction->returnType' => [')', false, ' : ', null],
+ 'Expr_Closure->returnType' => [')', false, ' : ', null],
+ 'Expr_Ternary->if' => ['?', false, ' ', ' '],
+ 'Expr_Yield->key' => [\T_YIELD, false, null, ' => '],
+ 'Expr_Yield->value' => [\T_YIELD, false, ' ', null],
+ 'Param->type' => [null, false, null, ' '],
+ 'Param->default' => [null, false, ' = ', null],
+ 'Stmt_Break->num' => [\T_BREAK, false, ' ', null],
+ 'Stmt_Catch->var' => [null, false, ' ', null],
+ 'Stmt_ClassMethod->returnType' => [')', false, ' : ', null],
+ 'Stmt_Class->extends' => [null, false, ' extends ', null],
+ 'Stmt_Enum->scalarType' => [null, false, ' : ', null],
+ 'Stmt_EnumCase->expr' => [null, false, ' = ', null],
+ 'Expr_PrintableNewAnonClass->extends' => [null, ' extends ', null],
+ 'Stmt_Continue->num' => [\T_CONTINUE, false, ' ', null],
+ 'Stmt_Foreach->keyVar' => [\T_AS, false, null, ' => '],
+ 'Stmt_Function->returnType' => [')', false, ' : ', null],
+ 'Stmt_If->else' => [null, false, ' ', null],
+ 'Stmt_Namespace->name' => [\T_NAMESPACE, false, ' ', null],
+ 'Stmt_Property->type' => [\T_VARIABLE, true, null, ' '],
+ 'Stmt_PropertyProperty->default' => [null, false, ' = ', null],
+ 'Stmt_Return->expr' => [\T_RETURN, false, ' ', null],
+ 'Stmt_StaticVar->default' => [null, false, ' = ', null],
+ //'Stmt_TraitUseAdaptation_Alias->newName' => [T_AS, false, ' ', null], // TODO
+ 'Stmt_TryCatch->finally' => [null, false, ' ', null],
+
+ // 'Expr_Exit->expr': Complicated due to optional ()
+ // 'Stmt_Case->cond': Conversion from default to case
+ // 'Stmt_Class->name': Unclear
+ // 'Stmt_Declare->stmts': Not a proper node
+ // 'Stmt_TraitUseAdaptation_Alias->newModifier': Not a proper node
+ ];
+ }
+
+ protected function initializeListInsertionMap() {
+ if ($this->listInsertionMap) return;
+
+ $this->listInsertionMap = [
+ // special
+ //'Expr_ShellExec->parts' => '', // TODO These need to be treated more carefully
+ //'Scalar_Encapsed->parts' => '',
+ 'Stmt_Catch->types' => '|',
+ 'UnionType->types' => '|',
+ 'IntersectionType->types' => '&',
+ 'Stmt_If->elseifs' => ' ',
+ 'Stmt_TryCatch->catches' => ' ',
+
+ // comma-separated lists
+ 'Expr_Array->items' => ', ',
+ 'Expr_ArrowFunction->params' => ', ',
+ 'Expr_Closure->params' => ', ',
+ 'Expr_Closure->uses' => ', ',
+ 'Expr_FuncCall->args' => ', ',
+ 'Expr_Isset->vars' => ', ',
+ 'Expr_List->items' => ', ',
+ 'Expr_MethodCall->args' => ', ',
+ 'Expr_NullsafeMethodCall->args' => ', ',
+ 'Expr_New->args' => ', ',
+ 'Expr_PrintableNewAnonClass->args' => ', ',
+ 'Expr_StaticCall->args' => ', ',
+ 'Stmt_ClassConst->consts' => ', ',
+ 'Stmt_ClassMethod->params' => ', ',
+ 'Stmt_Class->implements' => ', ',
+ 'Stmt_Enum->implements' => ', ',
+ 'Expr_PrintableNewAnonClass->implements' => ', ',
+ 'Stmt_Const->consts' => ', ',
+ 'Stmt_Declare->declares' => ', ',
+ 'Stmt_Echo->exprs' => ', ',
+ 'Stmt_For->init' => ', ',
+ 'Stmt_For->cond' => ', ',
+ 'Stmt_For->loop' => ', ',
+ 'Stmt_Function->params' => ', ',
+ 'Stmt_Global->vars' => ', ',
+ 'Stmt_GroupUse->uses' => ', ',
+ 'Stmt_Interface->extends' => ', ',
+ 'Stmt_Match->arms' => ', ',
+ 'Stmt_Property->props' => ', ',
+ 'Stmt_StaticVar->vars' => ', ',
+ 'Stmt_TraitUse->traits' => ', ',
+ 'Stmt_TraitUseAdaptation_Precedence->insteadof' => ', ',
+ 'Stmt_Unset->vars' => ', ',
+ 'Stmt_Use->uses' => ', ',
+ 'MatchArm->conds' => ', ',
+ 'AttributeGroup->attrs' => ', ',
+
+ // statement lists
+ 'Expr_Closure->stmts' => "\n",
+ 'Stmt_Case->stmts' => "\n",
+ 'Stmt_Catch->stmts' => "\n",
+ 'Stmt_Class->stmts' => "\n",
+ 'Stmt_Enum->stmts' => "\n",
+ 'Expr_PrintableNewAnonClass->stmts' => "\n",
+ 'Stmt_Interface->stmts' => "\n",
+ 'Stmt_Trait->stmts' => "\n",
+ 'Stmt_ClassMethod->stmts' => "\n",
+ 'Stmt_Declare->stmts' => "\n",
+ 'Stmt_Do->stmts' => "\n",
+ 'Stmt_ElseIf->stmts' => "\n",
+ 'Stmt_Else->stmts' => "\n",
+ 'Stmt_Finally->stmts' => "\n",
+ 'Stmt_Foreach->stmts' => "\n",
+ 'Stmt_For->stmts' => "\n",
+ 'Stmt_Function->stmts' => "\n",
+ 'Stmt_If->stmts' => "\n",
+ 'Stmt_Namespace->stmts' => "\n",
+ 'Stmt_Class->attrGroups' => "\n",
+ 'Stmt_Enum->attrGroups' => "\n",
+ 'Stmt_EnumCase->attrGroups' => "\n",
+ 'Stmt_Interface->attrGroups' => "\n",
+ 'Stmt_Trait->attrGroups' => "\n",
+ 'Stmt_Function->attrGroups' => "\n",
+ 'Stmt_ClassMethod->attrGroups' => "\n",
+ 'Stmt_ClassConst->attrGroups' => "\n",
+ 'Stmt_Property->attrGroups' => "\n",
+ 'Expr_PrintableNewAnonClass->attrGroups' => ' ',
+ 'Expr_Closure->attrGroups' => ' ',
+ 'Expr_ArrowFunction->attrGroups' => ' ',
+ 'Param->attrGroups' => ' ',
+ 'Stmt_Switch->cases' => "\n",
+ 'Stmt_TraitUse->adaptations' => "\n",
+ 'Stmt_TryCatch->stmts' => "\n",
+ 'Stmt_While->stmts' => "\n",
+
+ // dummy for top-level context
+ 'File->stmts' => "\n",
+ ];
+ }
+
+ protected function initializeEmptyListInsertionMap() {
+ if ($this->emptyListInsertionMap) return;
+
+ // TODO Insertion into empty statement lists.
+
+ // [$find, $extraLeft, $extraRight]
+ $this->emptyListInsertionMap = [
+ 'Expr_ArrowFunction->params' => ['(', '', ''],
+ 'Expr_Closure->uses' => [')', ' use(', ')'],
+ 'Expr_Closure->params' => ['(', '', ''],
+ 'Expr_FuncCall->args' => ['(', '', ''],
+ 'Expr_MethodCall->args' => ['(', '', ''],
+ 'Expr_NullsafeMethodCall->args' => ['(', '', ''],
+ 'Expr_New->args' => ['(', '', ''],
+ 'Expr_PrintableNewAnonClass->args' => ['(', '', ''],
+ 'Expr_PrintableNewAnonClass->implements' => [null, ' implements ', ''],
+ 'Expr_StaticCall->args' => ['(', '', ''],
+ 'Stmt_Class->implements' => [null, ' implements ', ''],
+ 'Stmt_Enum->implements' => [null, ' implements ', ''],
+ 'Stmt_ClassMethod->params' => ['(', '', ''],
+ 'Stmt_Interface->extends' => [null, ' extends ', ''],
+ 'Stmt_Function->params' => ['(', '', ''],
+
+ /* These cannot be empty to start with:
+ * Expr_Isset->vars
+ * Stmt_Catch->types
+ * Stmt_Const->consts
+ * Stmt_ClassConst->consts
+ * Stmt_Declare->declares
+ * Stmt_Echo->exprs
+ * Stmt_Global->vars
+ * Stmt_GroupUse->uses
+ * Stmt_Property->props
+ * Stmt_StaticVar->vars
+ * Stmt_TraitUse->traits
+ * Stmt_TraitUseAdaptation_Precedence->insteadof
+ * Stmt_Unset->vars
+ * Stmt_Use->uses
+ * UnionType->types
+ */
+
+ /* TODO
+ * Stmt_If->elseifs
+ * Stmt_TryCatch->catches
+ * Expr_Array->items
+ * Expr_List->items
+ * Stmt_For->init
+ * Stmt_For->cond
+ * Stmt_For->loop
+ */
+ ];
+ }
+
+ protected function initializeModifierChangeMap() {
+ if ($this->modifierChangeMap) return;
+
+ $this->modifierChangeMap = [
+ 'Stmt_ClassConst->flags' => \T_CONST,
+ 'Stmt_ClassMethod->flags' => \T_FUNCTION,
+ 'Stmt_Class->flags' => \T_CLASS,
+ 'Stmt_Property->flags' => \T_VARIABLE,
+ 'Param->flags' => \T_VARIABLE,
+ //'Stmt_TraitUseAdaptation_Alias->newModifier' => 0, // TODO
+ ];
+
+ // List of integer subnodes that are not modifiers:
+ // Expr_Include->type
+ // Stmt_GroupUse->type
+ // Stmt_Use->type
+ // Stmt_UseUse->type
+ }
+}
diff --git a/vendor/phar-io/manifest/CHANGELOG.md b/vendor/phar-io/manifest/CHANGELOG.md
new file mode 100644
index 000000000..a403e093c
--- /dev/null
+++ b/vendor/phar-io/manifest/CHANGELOG.md
@@ -0,0 +1,36 @@
+# Changelog
+
+All notable changes to phar-io/manifest are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [2.0.3] - 20.07.2021
+
+- Fixed PHP 7.2 / PHP 7.3 incompatibility introduced in previous release
+
+## [2.0.2] - 20.07.2021
+
+- Fixed PHP 8.1 deprecation notice
+
+## [2.0.1] - 27.06.2020
+
+This release now supports the use of PHP 7.2+ and ^8.0
+
+## [2.0.0] - 10.05.2020
+
+This release now requires PHP 7.2+
+
+### Changed
+
+- Upgraded to phar-io/version 3.0
+ - Version strings `v1.2.3` will now be converted to valid semantic version strings `1.2.3`
+ - Abreviated strings like `1.0` will get expaneded to `1.0.0`
+
+### Unreleased
+
+[Unreleased]: https://github.com/phar-io/manifest/compare/2.0.3...HEAD
+[2.0.3]: https://github.com/phar-io/manifest/compare/2.0.2...2.0.3
+[2.0.2]: https://github.com/phar-io/manifest/compare/2.0.1...2.0.2
+[2.0.1]: https://github.com/phar-io/manifest/compare/2.0.0...2.0.1
+[2.0.0]: https://github.com/phar-io/manifest/compare/1.0.1...2.0.0
+[1.0.3]: https://github.com/phar-io/manifest/compare/1.0.2...1.0.3
+[1.0.2]: https://github.com/phar-io/manifest/compare/1.0.1...1.0.2
+[1.0.1]: https://github.com/phar-io/manifest/compare/1.0.0...1.0.1
diff --git a/vendor/phar-io/manifest/LICENSE b/vendor/phar-io/manifest/LICENSE
new file mode 100644
index 000000000..64690cf2b
--- /dev/null
+++ b/vendor/phar-io/manifest/LICENSE
@@ -0,0 +1,31 @@
+Phar.io - Manifest
+
+Copyright (c) 2016-2019 Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>, and contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of Arne Blankerts nor the names of contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/vendor/phar-io/manifest/README.md b/vendor/phar-io/manifest/README.md
new file mode 100644
index 000000000..e6d0b055d
--- /dev/null
+++ b/vendor/phar-io/manifest/README.md
@@ -0,0 +1,30 @@
+# Manifest
+
+Component for reading [phar.io](https://phar.io/) manifest information from a [PHP Archive (PHAR)](http://php.net/phar).
+
+[![Build Status](https://travis-ci.org/phar-io/manifest.svg?branch=master)](https://travis-ci.org/phar-io/manifest)
+[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phar-io/manifest/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phar-io/manifest/?branch=master)
+[![SensioLabsInsight](https://insight.sensiolabs.com/projects/d8cc6035-69ad-477d-bd1a-ccc605480fd7/mini.png)](https://insight.sensiolabs.com/projects/d8cc6035-69ad-477d-bd1a-ccc605480fd7)
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+ composer require phar-io/manifest
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+ composer require --dev phar-io/manifest
+
+## Usage
+
+```php
+use PharIo\Manifest\ManifestLoader;
+use PharIo\Manifest\ManifestSerializer;
+
+$manifest = ManifestLoader::fromFile('manifest.xml');
+
+var_dump($manifest);
+
+echo (new ManifestSerializer)->serializeToString($manifest);
+```
diff --git a/vendor/phar-io/manifest/composer.json b/vendor/phar-io/manifest/composer.json
new file mode 100644
index 000000000..a2521193a
--- /dev/null
+++ b/vendor/phar-io/manifest/composer.json
@@ -0,0 +1,42 @@
+{
+ "name": "phar-io/manifest",
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "Developer"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues"
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ }
+}
diff --git a/vendor/phar-io/manifest/composer.lock b/vendor/phar-io/manifest/composer.lock
new file mode 100644
index 000000000..e0e6db76a
--- /dev/null
+++ b/vendor/phar-io/manifest/composer.lock
@@ -0,0 +1,70 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "f2ac4614ce4f7273fd54a64b65fd047a",
+ "packages": [
+ {
+ "name": "phar-io/version",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "d06a5000ac1a258a7d035295f0bd4ae7c859bc4f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/d06a5000ac1a258a7d035295f0bd4ae7c859bc4f",
+ "reference": "d06a5000ac1a258a7d035295f0bd4ae7c859bc4f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "time": "2020-05-09T21:27:55+00:00"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7.2",
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*"
+ },
+ "platform-dev": []
+}
diff --git a/vendor/phar-io/manifest/src/ManifestDocumentMapper.php b/vendor/phar-io/manifest/src/ManifestDocumentMapper.php
new file mode 100644
index 000000000..8e539d5f1
--- /dev/null
+++ b/vendor/phar-io/manifest/src/ManifestDocumentMapper.php
@@ -0,0 +1,150 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use PharIo\Version\Exception as VersionException;
+use PharIo\Version\Version;
+use PharIo\Version\VersionConstraintParser;
+
+class ManifestDocumentMapper {
+ public function map(ManifestDocument $document): Manifest {
+ try {
+ $contains = $document->getContainsElement();
+ $type = $this->mapType($contains);
+ $copyright = $this->mapCopyright($document->getCopyrightElement());
+ $requirements = $this->mapRequirements($document->getRequiresElement());
+ $bundledComponents = $this->mapBundledComponents($document);
+
+ return new Manifest(
+ new ApplicationName($contains->getName()),
+ new Version($contains->getVersion()),
+ $type,
+ $copyright,
+ $requirements,
+ $bundledComponents
+ );
+ } catch (VersionException $e) {
+ throw new ManifestDocumentMapperException($e->getMessage(), (int)$e->getCode(), $e);
+ } catch (Exception $e) {
+ throw new ManifestDocumentMapperException($e->getMessage(), (int)$e->getCode(), $e);
+ }
+ }
+
+ private function mapType(ContainsElement $contains): Type {
+ switch ($contains->getType()) {
+ case 'application':
+ return Type::application();
+ case 'library':
+ return Type::library();
+ case 'extension':
+ return $this->mapExtension($contains->getExtensionElement());
+ }
+
+ throw new ManifestDocumentMapperException(
+ \sprintf('Unsupported type %s', $contains->getType())
+ );
+ }
+
+ private function mapCopyright(CopyrightElement $copyright): CopyrightInformation {
+ $authors = new AuthorCollection();
+
+ foreach ($copyright->getAuthorElements() as $authorElement) {
+ $authors->add(
+ new Author(
+ $authorElement->getName(),
+ new Email($authorElement->getEmail())
+ )
+ );
+ }
+
+ $licenseElement = $copyright->getLicenseElement();
+ $license = new License(
+ $licenseElement->getType(),
+ new Url($licenseElement->getUrl())
+ );
+
+ return new CopyrightInformation(
+ $authors,
+ $license
+ );
+ }
+
+ private function mapRequirements(RequiresElement $requires): RequirementCollection {
+ $collection = new RequirementCollection();
+ $phpElement = $requires->getPHPElement();
+ $parser = new VersionConstraintParser;
+
+ try {
+ $versionConstraint = $parser->parse($phpElement->getVersion());
+ } catch (VersionException $e) {
+ throw new ManifestDocumentMapperException(
+ \sprintf('Unsupported version constraint - %s', $e->getMessage()),
+ (int)$e->getCode(),
+ $e
+ );
+ }
+
+ $collection->add(
+ new PhpVersionRequirement(
+ $versionConstraint
+ )
+ );
+
+ if (!$phpElement->hasExtElements()) {
+ return $collection;
+ }
+
+ foreach ($phpElement->getExtElements() as $extElement) {
+ $collection->add(
+ new PhpExtensionRequirement($extElement->getName())
+ );
+ }
+
+ return $collection;
+ }
+
+ private function mapBundledComponents(ManifestDocument $document): BundledComponentCollection {
+ $collection = new BundledComponentCollection();
+
+ if (!$document->hasBundlesElement()) {
+ return $collection;
+ }
+
+ foreach ($document->getBundlesElement()->getComponentElements() as $componentElement) {
+ $collection->add(
+ new BundledComponent(
+ $componentElement->getName(),
+ new Version(
+ $componentElement->getVersion()
+ )
+ )
+ );
+ }
+
+ return $collection;
+ }
+
+ private function mapExtension(ExtensionElement $extension): Extension {
+ try {
+ $versionConstraint = (new VersionConstraintParser)->parse($extension->getCompatible());
+
+ return Type::extension(
+ new ApplicationName($extension->getFor()),
+ $versionConstraint
+ );
+ } catch (VersionException $e) {
+ throw new ManifestDocumentMapperException(
+ \sprintf('Unsupported version constraint - %s', $e->getMessage()),
+ (int)$e->getCode(),
+ $e
+ );
+ }
+ }
+}
diff --git a/vendor/phar-io/manifest/src/ManifestLoader.php b/vendor/phar-io/manifest/src/ManifestLoader.php
new file mode 100644
index 000000000..ae884e49a
--- /dev/null
+++ b/vendor/phar-io/manifest/src/ManifestLoader.php
@@ -0,0 +1,44 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class ManifestLoader {
+ public static function fromFile(string $filename): Manifest {
+ try {
+ return (new ManifestDocumentMapper())->map(
+ ManifestDocument::fromFile($filename)
+ );
+ } catch (Exception $e) {
+ throw new ManifestLoaderException(
+ \sprintf('Loading %s failed.', $filename),
+ (int)$e->getCode(),
+ $e
+ );
+ }
+ }
+
+ public static function fromPhar(string $filename): Manifest {
+ return self::fromFile('phar://' . $filename . '/manifest.xml');
+ }
+
+ public static function fromString(string $manifest): Manifest {
+ try {
+ return (new ManifestDocumentMapper())->map(
+ ManifestDocument::fromString($manifest)
+ );
+ } catch (Exception $e) {
+ throw new ManifestLoaderException(
+ 'Processing string failed',
+ (int)$e->getCode(),
+ $e
+ );
+ }
+ }
+}
diff --git a/vendor/phar-io/manifest/src/ManifestSerializer.php b/vendor/phar-io/manifest/src/ManifestSerializer.php
new file mode 100644
index 000000000..e236b5984
--- /dev/null
+++ b/vendor/phar-io/manifest/src/ManifestSerializer.php
@@ -0,0 +1,168 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use PharIo\Version\AnyVersionConstraint;
+use PharIo\Version\Version;
+use PharIo\Version\VersionConstraint;
+use XMLWriter;
+
+/** @psalm-suppress MissingConstructor */
+class ManifestSerializer {
+ /** @var XMLWriter */
+ private $xmlWriter;
+
+ public function serializeToFile(Manifest $manifest, string $filename): void {
+ \file_put_contents(
+ $filename,
+ $this->serializeToString($manifest)
+ );
+ }
+
+ public function serializeToString(Manifest $manifest): string {
+ $this->startDocument();
+
+ $this->addContains($manifest->getName(), $manifest->getVersion(), $manifest->getType());
+ $this->addCopyright($manifest->getCopyrightInformation());
+ $this->addRequirements($manifest->getRequirements());
+ $this->addBundles($manifest->getBundledComponents());
+
+ return $this->finishDocument();
+ }
+
+ private function startDocument(): void {
+ $xmlWriter = new XMLWriter();
+ $xmlWriter->openMemory();
+ $xmlWriter->setIndent(true);
+ $xmlWriter->setIndentString(\str_repeat(' ', 4));
+ $xmlWriter->startDocument('1.0', 'UTF-8');
+ $xmlWriter->startElement('phar');
+ $xmlWriter->writeAttribute('xmlns', 'https://phar.io/xml/manifest/1.0');
+
+ $this->xmlWriter = $xmlWriter;
+ }
+
+ private function finishDocument(): string {
+ $this->xmlWriter->endElement();
+ $this->xmlWriter->endDocument();
+
+ return $this->xmlWriter->outputMemory();
+ }
+
+ private function addContains(ApplicationName $name, Version $version, Type $type): void {
+ $this->xmlWriter->startElement('contains');
+ $this->xmlWriter->writeAttribute('name', $name->asString());
+ $this->xmlWriter->writeAttribute('version', $version->getVersionString());
+
+ switch (true) {
+ case $type->isApplication(): {
+ $this->xmlWriter->writeAttribute('type', 'application');
+
+ break;
+ }
+
+ case $type->isLibrary(): {
+ $this->xmlWriter->writeAttribute('type', 'library');
+
+ break;
+ }
+
+ case $type->isExtension(): {
+ $this->xmlWriter->writeAttribute('type', 'extension');
+ /* @var $type Extension */
+ $this->addExtension(
+ $type->getApplicationName(),
+ $type->getVersionConstraint()
+ );
+
+ break;
+ }
+
+ default: {
+ $this->xmlWriter->writeAttribute('type', 'custom');
+ }
+ }
+
+ $this->xmlWriter->endElement();
+ }
+
+ private function addCopyright(CopyrightInformation $copyrightInformation): void {
+ $this->xmlWriter->startElement('copyright');
+
+ foreach ($copyrightInformation->getAuthors() as $author) {
+ $this->xmlWriter->startElement('author');
+ $this->xmlWriter->writeAttribute('name', $author->getName());
+ $this->xmlWriter->writeAttribute('email', $author->getEmail()->asString());
+ $this->xmlWriter->endElement();
+ }
+
+ $license = $copyrightInformation->getLicense();
+
+ $this->xmlWriter->startElement('license');
+ $this->xmlWriter->writeAttribute('type', $license->getName());
+ $this->xmlWriter->writeAttribute('url', $license->getUrl()->asString());
+ $this->xmlWriter->endElement();
+
+ $this->xmlWriter->endElement();
+ }
+
+ private function addRequirements(RequirementCollection $requirementCollection): void {
+ $phpRequirement = new AnyVersionConstraint();
+ $extensions = [];
+
+ foreach ($requirementCollection as $requirement) {
+ if ($requirement instanceof PhpVersionRequirement) {
+ $phpRequirement = $requirement->getVersionConstraint();
+
+ continue;
+ }
+
+ if ($requirement instanceof PhpExtensionRequirement) {
+ $extensions[] = $requirement->asString();
+ }
+ }
+
+ $this->xmlWriter->startElement('requires');
+ $this->xmlWriter->startElement('php');
+ $this->xmlWriter->writeAttribute('version', $phpRequirement->asString());
+
+ foreach ($extensions as $extension) {
+ $this->xmlWriter->startElement('ext');
+ $this->xmlWriter->writeAttribute('name', $extension);
+ $this->xmlWriter->endElement();
+ }
+
+ $this->xmlWriter->endElement();
+ $this->xmlWriter->endElement();
+ }
+
+ private function addBundles(BundledComponentCollection $bundledComponentCollection): void {
+ if (\count($bundledComponentCollection) === 0) {
+ return;
+ }
+ $this->xmlWriter->startElement('bundles');
+
+ foreach ($bundledComponentCollection as $bundledComponent) {
+ $this->xmlWriter->startElement('component');
+ $this->xmlWriter->writeAttribute('name', $bundledComponent->getName());
+ $this->xmlWriter->writeAttribute('version', $bundledComponent->getVersion()->getVersionString());
+ $this->xmlWriter->endElement();
+ }
+
+ $this->xmlWriter->endElement();
+ }
+
+ private function addExtension(ApplicationName $applicationName, VersionConstraint $versionConstraint): void {
+ $this->xmlWriter->startElement('extension');
+ $this->xmlWriter->writeAttribute('for', $applicationName->asString());
+ $this->xmlWriter->writeAttribute('compatible', $versionConstraint->asString());
+ $this->xmlWriter->endElement();
+ }
+}
diff --git a/vendor/phar-io/manifest/src/exceptions/ElementCollectionException.php b/vendor/phar-io/manifest/src/exceptions/ElementCollectionException.php
new file mode 100644
index 000000000..766fc0e6a
--- /dev/null
+++ b/vendor/phar-io/manifest/src/exceptions/ElementCollectionException.php
@@ -0,0 +1,13 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class ElementCollectionException extends \InvalidArgumentException implements Exception {
+}
diff --git a/vendor/phar-io/manifest/src/exceptions/Exception.php b/vendor/phar-io/manifest/src/exceptions/Exception.php
new file mode 100644
index 000000000..e7f122097
--- /dev/null
+++ b/vendor/phar-io/manifest/src/exceptions/Exception.php
@@ -0,0 +1,13 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+interface Exception extends \Throwable {
+}
diff --git a/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php b/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php
new file mode 100644
index 000000000..952901eb5
--- /dev/null
+++ b/vendor/phar-io/manifest/src/exceptions/InvalidApplicationNameException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class InvalidApplicationNameException extends \InvalidArgumentException implements Exception {
+ public const InvalidFormat = 2;
+}
diff --git a/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php b/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php
new file mode 100644
index 000000000..3cbe08223
--- /dev/null
+++ b/vendor/phar-io/manifest/src/exceptions/InvalidEmailException.php
@@ -0,0 +1,13 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class InvalidEmailException extends \InvalidArgumentException implements Exception {
+}
diff --git a/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php b/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php
new file mode 100644
index 000000000..8f77e2946
--- /dev/null
+++ b/vendor/phar-io/manifest/src/exceptions/InvalidUrlException.php
@@ -0,0 +1,13 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class InvalidUrlException extends \InvalidArgumentException implements Exception {
+}
diff --git a/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php b/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php
new file mode 100644
index 000000000..cf1c314c6
--- /dev/null
+++ b/vendor/phar-io/manifest/src/exceptions/ManifestDocumentException.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Manifest;
+
+class ManifestDocumentException extends \RuntimeException implements Exception {
+}
diff --git a/vendor/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php b/vendor/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php
new file mode 100644
index 000000000..4676e3546
--- /dev/null
+++ b/vendor/phar-io/manifest/src/exceptions/ManifestDocumentLoadingException.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use LibXMLError;
+
+class ManifestDocumentLoadingException extends \Exception implements Exception {
+ /** @var LibXMLError[] */
+ private $libxmlErrors;
+
+ /**
+ * ManifestDocumentLoadingException constructor.
+ *
+ * @param LibXMLError[] $libxmlErrors
+ */
+ public function __construct(array $libxmlErrors) {
+ $this->libxmlErrors = $libxmlErrors;
+ $first = $this->libxmlErrors[0];
+
+ parent::__construct(
+ \sprintf(
+ '%s (Line: %d / Column: %d / File: %s)',
+ $first->message,
+ $first->line,
+ $first->column,
+ $first->file
+ ),
+ $first->code
+ );
+ }
+
+ /**
+ * @return LibXMLError[]
+ */
+ public function getLibxmlErrors(): array {
+ return $this->libxmlErrors;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php b/vendor/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php
new file mode 100644
index 000000000..43373bd34
--- /dev/null
+++ b/vendor/phar-io/manifest/src/exceptions/ManifestDocumentMapperException.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Manifest;
+
+class ManifestDocumentMapperException extends \RuntimeException implements Exception {
+}
diff --git a/vendor/phar-io/manifest/src/exceptions/ManifestElementException.php b/vendor/phar-io/manifest/src/exceptions/ManifestElementException.php
new file mode 100644
index 000000000..a4e772369
--- /dev/null
+++ b/vendor/phar-io/manifest/src/exceptions/ManifestElementException.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Manifest;
+
+class ManifestElementException extends \RuntimeException implements Exception {
+}
diff --git a/vendor/phar-io/manifest/src/exceptions/ManifestLoaderException.php b/vendor/phar-io/manifest/src/exceptions/ManifestLoaderException.php
new file mode 100644
index 000000000..df0971edc
--- /dev/null
+++ b/vendor/phar-io/manifest/src/exceptions/ManifestLoaderException.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Manifest;
+
+class ManifestLoaderException extends \Exception implements Exception {
+}
diff --git a/vendor/phar-io/manifest/src/values/Application.php b/vendor/phar-io/manifest/src/values/Application.php
new file mode 100644
index 000000000..5420bcb8f
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/Application.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class Application extends Type {
+ public function isApplication(): bool {
+ return true;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/ApplicationName.php b/vendor/phar-io/manifest/src/values/ApplicationName.php
new file mode 100644
index 000000000..d71744ab6
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/ApplicationName.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class ApplicationName {
+ /** @var string */
+ private $name;
+
+ public function __construct(string $name) {
+ $this->ensureValidFormat($name);
+ $this->name = $name;
+ }
+
+ public function asString(): string {
+ return $this->name;
+ }
+
+ public function isEqual(ApplicationName $name): bool {
+ return $this->name === $name->name;
+ }
+
+ private function ensureValidFormat(string $name): void {
+ if (!\preg_match('#\w/\w#', $name)) {
+ throw new InvalidApplicationNameException(
+ \sprintf('Format of name "%s" is not valid - expected: vendor/packagename', $name),
+ InvalidApplicationNameException::InvalidFormat
+ );
+ }
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/Author.php b/vendor/phar-io/manifest/src/values/Author.php
new file mode 100644
index 000000000..82b666e7d
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/Author.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class Author {
+ /** @var string */
+ private $name;
+
+ /** @var Email */
+ private $email;
+
+ public function __construct(string $name, Email $email) {
+ $this->name = $name;
+ $this->email = $email;
+ }
+
+ public function asString(): string {
+ return \sprintf(
+ '%s <%s>',
+ $this->name,
+ $this->email->asString()
+ );
+ }
+
+ public function getName(): string {
+ return $this->name;
+ }
+
+ public function getEmail(): Email {
+ return $this->email;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/AuthorCollection.php b/vendor/phar-io/manifest/src/values/AuthorCollection.php
new file mode 100644
index 000000000..27e50ad84
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/AuthorCollection.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class AuthorCollection implements \Countable, \IteratorAggregate {
+ /** @var Author[] */
+ private $authors = [];
+
+ public function add(Author $author): void {
+ $this->authors[] = $author;
+ }
+
+ /**
+ * @return Author[]
+ */
+ public function getAuthors(): array {
+ return $this->authors;
+ }
+
+ public function count(): int {
+ return \count($this->authors);
+ }
+
+ public function getIterator(): AuthorCollectionIterator {
+ return new AuthorCollectionIterator($this);
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php b/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php
new file mode 100644
index 000000000..4ff3c3943
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/AuthorCollectionIterator.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class AuthorCollectionIterator implements \Iterator {
+ /** @var Author[] */
+ private $authors;
+
+ /** @var int */
+ private $position = 0;
+
+ public function __construct(AuthorCollection $authors) {
+ $this->authors = $authors->getAuthors();
+ }
+
+ public function rewind(): void {
+ $this->position = 0;
+ }
+
+ public function valid(): bool {
+ return $this->position < \count($this->authors);
+ }
+
+ public function key(): int {
+ return $this->position;
+ }
+
+ public function current(): Author {
+ return $this->authors[$this->position];
+ }
+
+ public function next(): void {
+ $this->position++;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/BundledComponent.php b/vendor/phar-io/manifest/src/values/BundledComponent.php
new file mode 100644
index 000000000..ea77b4402
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/BundledComponent.php
@@ -0,0 +1,33 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use PharIo\Version\Version;
+
+class BundledComponent {
+ /** @var string */
+ private $name;
+
+ /** @var Version */
+ private $version;
+
+ public function __construct(string $name, Version $version) {
+ $this->name = $name;
+ $this->version = $version;
+ }
+
+ public function getName(): string {
+ return $this->name;
+ }
+
+ public function getVersion(): Version {
+ return $this->version;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/BundledComponentCollection.php b/vendor/phar-io/manifest/src/values/BundledComponentCollection.php
new file mode 100644
index 000000000..b628eaa35
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/BundledComponentCollection.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class BundledComponentCollection implements \Countable, \IteratorAggregate {
+ /** @var BundledComponent[] */
+ private $bundledComponents = [];
+
+ public function add(BundledComponent $bundledComponent): void {
+ $this->bundledComponents[] = $bundledComponent;
+ }
+
+ /**
+ * @return BundledComponent[]
+ */
+ public function getBundledComponents(): array {
+ return $this->bundledComponents;
+ }
+
+ public function count(): int {
+ return \count($this->bundledComponents);
+ }
+
+ public function getIterator(): BundledComponentCollectionIterator {
+ return new BundledComponentCollectionIterator($this);
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php b/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php
new file mode 100644
index 000000000..462db45a1
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/BundledComponentCollectionIterator.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class BundledComponentCollectionIterator implements \Iterator {
+ /** @var BundledComponent[] */
+ private $bundledComponents;
+
+ /** @var int */
+ private $position = 0;
+
+ public function __construct(BundledComponentCollection $bundledComponents) {
+ $this->bundledComponents = $bundledComponents->getBundledComponents();
+ }
+
+ public function rewind(): void {
+ $this->position = 0;
+ }
+
+ public function valid(): bool {
+ return $this->position < \count($this->bundledComponents);
+ }
+
+ public function key(): int {
+ return $this->position;
+ }
+
+ public function current(): BundledComponent {
+ return $this->bundledComponents[$this->position];
+ }
+
+ public function next(): void {
+ $this->position++;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/CopyrightInformation.php b/vendor/phar-io/manifest/src/values/CopyrightInformation.php
new file mode 100644
index 000000000..d26f94721
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/CopyrightInformation.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class CopyrightInformation {
+ /** @var AuthorCollection */
+ private $authors;
+
+ /** @var License */
+ private $license;
+
+ public function __construct(AuthorCollection $authors, License $license) {
+ $this->authors = $authors;
+ $this->license = $license;
+ }
+
+ public function getAuthors(): AuthorCollection {
+ return $this->authors;
+ }
+
+ public function getLicense(): License {
+ return $this->license;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/Email.php b/vendor/phar-io/manifest/src/values/Email.php
new file mode 100644
index 000000000..588348d89
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/Email.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class Email {
+ /** @var string */
+ private $email;
+
+ public function __construct(string $email) {
+ $this->ensureEmailIsValid($email);
+
+ $this->email = $email;
+ }
+
+ public function asString(): string {
+ return $this->email;
+ }
+
+ private function ensureEmailIsValid(string $url): void {
+ if (\filter_var($url, \FILTER_VALIDATE_EMAIL) === false) {
+ throw new InvalidEmailException;
+ }
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/Extension.php b/vendor/phar-io/manifest/src/values/Extension.php
new file mode 100644
index 000000000..4c5726f8a
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/Extension.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use PharIo\Version\Version;
+use PharIo\Version\VersionConstraint;
+
+class Extension extends Type {
+ /** @var ApplicationName */
+ private $application;
+
+ /** @var VersionConstraint */
+ private $versionConstraint;
+
+ public function __construct(ApplicationName $application, VersionConstraint $versionConstraint) {
+ $this->application = $application;
+ $this->versionConstraint = $versionConstraint;
+ }
+
+ public function getApplicationName(): ApplicationName {
+ return $this->application;
+ }
+
+ public function getVersionConstraint(): VersionConstraint {
+ return $this->versionConstraint;
+ }
+
+ public function isExtension(): bool {
+ return true;
+ }
+
+ public function isExtensionFor(ApplicationName $name): bool {
+ return $this->application->isEqual($name);
+ }
+
+ public function isCompatibleWith(ApplicationName $name, Version $version): bool {
+ return $this->isExtensionFor($name) && $this->versionConstraint->complies($version);
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/Library.php b/vendor/phar-io/manifest/src/values/Library.php
new file mode 100644
index 000000000..21849e137
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/Library.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class Library extends Type {
+ public function isLibrary(): bool {
+ return true;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/License.php b/vendor/phar-io/manifest/src/values/License.php
new file mode 100644
index 000000000..39542fe87
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/License.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class License {
+ /** @var string */
+ private $name;
+
+ /** @var Url */
+ private $url;
+
+ public function __construct(string $name, Url $url) {
+ $this->name = $name;
+ $this->url = $url;
+ }
+
+ public function getName(): string {
+ return $this->name;
+ }
+
+ public function getUrl(): Url {
+ return $this->url;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/Manifest.php b/vendor/phar-io/manifest/src/values/Manifest.php
new file mode 100644
index 000000000..0140b842b
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/Manifest.php
@@ -0,0 +1,92 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use PharIo\Version\Version;
+
+class Manifest {
+ /** @var ApplicationName */
+ private $name;
+
+ /** @var Version */
+ private $version;
+
+ /** @var Type */
+ private $type;
+
+ /** @var CopyrightInformation */
+ private $copyrightInformation;
+
+ /** @var RequirementCollection */
+ private $requirements;
+
+ /** @var BundledComponentCollection */
+ private $bundledComponents;
+
+ public function __construct(ApplicationName $name, Version $version, Type $type, CopyrightInformation $copyrightInformation, RequirementCollection $requirements, BundledComponentCollection $bundledComponents) {
+ $this->name = $name;
+ $this->version = $version;
+ $this->type = $type;
+ $this->copyrightInformation = $copyrightInformation;
+ $this->requirements = $requirements;
+ $this->bundledComponents = $bundledComponents;
+ }
+
+ public function getName(): ApplicationName {
+ return $this->name;
+ }
+
+ public function getVersion(): Version {
+ return $this->version;
+ }
+
+ public function getType(): Type {
+ return $this->type;
+ }
+
+ public function getCopyrightInformation(): CopyrightInformation {
+ return $this->copyrightInformation;
+ }
+
+ public function getRequirements(): RequirementCollection {
+ return $this->requirements;
+ }
+
+ public function getBundledComponents(): BundledComponentCollection {
+ return $this->bundledComponents;
+ }
+
+ public function isApplication(): bool {
+ return $this->type->isApplication();
+ }
+
+ public function isLibrary(): bool {
+ return $this->type->isLibrary();
+ }
+
+ public function isExtension(): bool {
+ return $this->type->isExtension();
+ }
+
+ public function isExtensionFor(ApplicationName $application, Version $version = null): bool {
+ if (!$this->isExtension()) {
+ return false;
+ }
+
+ /** @var Extension $type */
+ $type = $this->type;
+
+ if ($version !== null) {
+ return $type->isCompatibleWith($application, $version);
+ }
+
+ return $type->isExtensionFor($application);
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php b/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php
new file mode 100644
index 000000000..088f38584
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/PhpExtensionRequirement.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class PhpExtensionRequirement implements Requirement {
+ /** @var string */
+ private $extension;
+
+ public function __construct(string $extension) {
+ $this->extension = $extension;
+ }
+
+ public function asString(): string {
+ return $this->extension;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php b/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php
new file mode 100644
index 000000000..f8d6f6d13
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/PhpVersionRequirement.php
@@ -0,0 +1,25 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use PharIo\Version\VersionConstraint;
+
+class PhpVersionRequirement implements Requirement {
+ /** @var VersionConstraint */
+ private $versionConstraint;
+
+ public function __construct(VersionConstraint $versionConstraint) {
+ $this->versionConstraint = $versionConstraint;
+ }
+
+ public function getVersionConstraint(): VersionConstraint {
+ return $this->versionConstraint;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/Requirement.php b/vendor/phar-io/manifest/src/values/Requirement.php
new file mode 100644
index 000000000..8b845d6a0
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/Requirement.php
@@ -0,0 +1,13 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+interface Requirement {
+}
diff --git a/vendor/phar-io/manifest/src/values/RequirementCollection.php b/vendor/phar-io/manifest/src/values/RequirementCollection.php
new file mode 100644
index 000000000..b82cd955e
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/RequirementCollection.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class RequirementCollection implements \Countable, \IteratorAggregate {
+ /** @var Requirement[] */
+ private $requirements = [];
+
+ public function add(Requirement $requirement): void {
+ $this->requirements[] = $requirement;
+ }
+
+ /**
+ * @return Requirement[]
+ */
+ public function getRequirements(): array {
+ return $this->requirements;
+ }
+
+ public function count(): int {
+ return \count($this->requirements);
+ }
+
+ public function getIterator(): RequirementCollectionIterator {
+ return new RequirementCollectionIterator($this);
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php b/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php
new file mode 100644
index 000000000..5614eaf7f
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/RequirementCollectionIterator.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class RequirementCollectionIterator implements \Iterator {
+ /** @var Requirement[] */
+ private $requirements;
+
+ /** @var int */
+ private $position = 0;
+
+ public function __construct(RequirementCollection $requirements) {
+ $this->requirements = $requirements->getRequirements();
+ }
+
+ public function rewind(): void {
+ $this->position = 0;
+ }
+
+ public function valid(): bool {
+ return $this->position < \count($this->requirements);
+ }
+
+ public function key(): int {
+ return $this->position;
+ }
+
+ public function current(): Requirement {
+ return $this->requirements[$this->position];
+ }
+
+ public function next(): void {
+ $this->position++;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/Type.php b/vendor/phar-io/manifest/src/values/Type.php
new file mode 100644
index 000000000..23b289805
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/Type.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use PharIo\Version\VersionConstraint;
+
+abstract class Type {
+ public static function application(): Application {
+ return new Application;
+ }
+
+ public static function library(): Library {
+ return new Library;
+ }
+
+ public static function extension(ApplicationName $application, VersionConstraint $versionConstraint): Extension {
+ return new Extension($application, $versionConstraint);
+ }
+
+ /** @psalm-assert-if-true Application $this */
+ public function isApplication(): bool {
+ return false;
+ }
+
+ /** @psalm-assert-if-true Library $this */
+ public function isLibrary(): bool {
+ return false;
+ }
+
+ /** @psalm-assert-if-true Extension $this */
+ public function isExtension(): bool {
+ return false;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/values/Url.php b/vendor/phar-io/manifest/src/values/Url.php
new file mode 100644
index 000000000..639525333
--- /dev/null
+++ b/vendor/phar-io/manifest/src/values/Url.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class Url {
+ /** @var string */
+ private $url;
+
+ public function __construct(string $url) {
+ $this->ensureUrlIsValid($url);
+
+ $this->url = $url;
+ }
+
+ public function asString(): string {
+ return $this->url;
+ }
+
+ /**
+ * @param string $url
+ *
+ * @throws InvalidUrlException
+ */
+ private function ensureUrlIsValid($url): void {
+ if (\filter_var($url, \FILTER_VALIDATE_URL) === false) {
+ throw new InvalidUrlException;
+ }
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/AuthorElement.php b/vendor/phar-io/manifest/src/xml/AuthorElement.php
new file mode 100644
index 000000000..c454b271a
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/AuthorElement.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class AuthorElement extends ManifestElement {
+ public function getName(): string {
+ return $this->getAttributeValue('name');
+ }
+
+ public function getEmail(): string {
+ return $this->getAttributeValue('email');
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php b/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php
new file mode 100644
index 000000000..a54147eb4
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/AuthorElementCollection.php
@@ -0,0 +1,18 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class AuthorElementCollection extends ElementCollection {
+ public function current(): AuthorElement {
+ return new AuthorElement(
+ $this->getCurrentElement()
+ );
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/BundlesElement.php b/vendor/phar-io/manifest/src/xml/BundlesElement.php
new file mode 100644
index 000000000..eb2105acd
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/BundlesElement.php
@@ -0,0 +1,18 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class BundlesElement extends ManifestElement {
+ public function getComponentElements(): ComponentElementCollection {
+ return new ComponentElementCollection(
+ $this->getChildrenByName('component')
+ );
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/ComponentElement.php b/vendor/phar-io/manifest/src/xml/ComponentElement.php
new file mode 100644
index 000000000..7f6a5ec9a
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/ComponentElement.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class ComponentElement extends ManifestElement {
+ public function getName(): string {
+ return $this->getAttributeValue('name');
+ }
+
+ public function getVersion(): string {
+ return $this->getAttributeValue('version');
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php b/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php
new file mode 100644
index 000000000..23bcbd2f1
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/ComponentElementCollection.php
@@ -0,0 +1,18 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class ComponentElementCollection extends ElementCollection {
+ public function current(): ComponentElement {
+ return new ComponentElement(
+ $this->getCurrentElement()
+ );
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/ContainsElement.php b/vendor/phar-io/manifest/src/xml/ContainsElement.php
new file mode 100644
index 000000000..ebef49d9b
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/ContainsElement.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class ContainsElement extends ManifestElement {
+ public function getName(): string {
+ return $this->getAttributeValue('name');
+ }
+
+ public function getVersion(): string {
+ return $this->getAttributeValue('version');
+ }
+
+ public function getType(): string {
+ return $this->getAttributeValue('type');
+ }
+
+ public function getExtensionElement(): ExtensionElement {
+ return new ExtensionElement(
+ $this->getChildByName('extension')
+ );
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/CopyrightElement.php b/vendor/phar-io/manifest/src/xml/CopyrightElement.php
new file mode 100644
index 000000000..3debe7dcd
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/CopyrightElement.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class CopyrightElement extends ManifestElement {
+ public function getAuthorElements(): AuthorElementCollection {
+ return new AuthorElementCollection(
+ $this->getChildrenByName('author')
+ );
+ }
+
+ public function getLicenseElement(): LicenseElement {
+ return new LicenseElement(
+ $this->getChildByName('license')
+ );
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/ElementCollection.php b/vendor/phar-io/manifest/src/xml/ElementCollection.php
new file mode 100644
index 000000000..26d9250f3
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/ElementCollection.php
@@ -0,0 +1,61 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use DOMElement;
+use DOMNodeList;
+
+abstract class ElementCollection implements \Iterator {
+ /** @var DOMElement[] */
+ private $nodes = [];
+
+ /** @var int */
+ private $position;
+
+ public function __construct(DOMNodeList $nodeList) {
+ $this->position = 0;
+ $this->importNodes($nodeList);
+ }
+
+ #[\ReturnTypeWillChange]
+ abstract public function current();
+
+ public function next(): void {
+ $this->position++;
+ }
+
+ public function key(): int {
+ return $this->position;
+ }
+
+ public function valid(): bool {
+ return $this->position < \count($this->nodes);
+ }
+
+ public function rewind(): void {
+ $this->position = 0;
+ }
+
+ protected function getCurrentElement(): DOMElement {
+ return $this->nodes[$this->position];
+ }
+
+ private function importNodes(DOMNodeList $nodeList): void {
+ foreach ($nodeList as $node) {
+ if (!$node instanceof DOMElement) {
+ throw new ElementCollectionException(
+ \sprintf('\DOMElement expected, got \%s', \get_class($node))
+ );
+ }
+
+ $this->nodes[] = $node;
+ }
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/ExtElement.php b/vendor/phar-io/manifest/src/xml/ExtElement.php
new file mode 100644
index 000000000..257853c43
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/ExtElement.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class ExtElement extends ManifestElement {
+ public function getName(): string {
+ return $this->getAttributeValue('name');
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/ExtElementCollection.php b/vendor/phar-io/manifest/src/xml/ExtElementCollection.php
new file mode 100644
index 000000000..059773490
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/ExtElementCollection.php
@@ -0,0 +1,18 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class ExtElementCollection extends ElementCollection {
+ public function current(): ExtElement {
+ return new ExtElement(
+ $this->getCurrentElement()
+ );
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/ExtensionElement.php b/vendor/phar-io/manifest/src/xml/ExtensionElement.php
new file mode 100644
index 000000000..db067f996
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/ExtensionElement.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class ExtensionElement extends ManifestElement {
+ public function getFor(): string {
+ return $this->getAttributeValue('for');
+ }
+
+ public function getCompatible(): string {
+ return $this->getAttributeValue('compatible');
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/LicenseElement.php b/vendor/phar-io/manifest/src/xml/LicenseElement.php
new file mode 100644
index 000000000..658c3d1c2
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/LicenseElement.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class LicenseElement extends ManifestElement {
+ public function getType(): string {
+ return $this->getAttributeValue('type');
+ }
+
+ public function getUrl(): string {
+ return $this->getAttributeValue('url');
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/ManifestDocument.php b/vendor/phar-io/manifest/src/xml/ManifestDocument.php
new file mode 100644
index 000000000..f88b28293
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/ManifestDocument.php
@@ -0,0 +1,103 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use DOMDocument;
+use DOMElement;
+
+class ManifestDocument {
+ public const XMLNS = 'https://phar.io/xml/manifest/1.0';
+
+ /** @var DOMDocument */
+ private $dom;
+
+ public static function fromFile(string $filename): ManifestDocument {
+ if (!\file_exists($filename)) {
+ throw new ManifestDocumentException(
+ \sprintf('File "%s" not found', $filename)
+ );
+ }
+
+ return self::fromString(
+ \file_get_contents($filename)
+ );
+ }
+
+ public static function fromString(string $xmlString): ManifestDocument {
+ $prev = \libxml_use_internal_errors(true);
+ \libxml_clear_errors();
+
+ $dom = new DOMDocument();
+ $dom->loadXML($xmlString);
+
+ $errors = \libxml_get_errors();
+ \libxml_use_internal_errors($prev);
+
+ if (\count($errors) !== 0) {
+ throw new ManifestDocumentLoadingException($errors);
+ }
+
+ return new self($dom);
+ }
+
+ private function __construct(DOMDocument $dom) {
+ $this->ensureCorrectDocumentType($dom);
+
+ $this->dom = $dom;
+ }
+
+ public function getContainsElement(): ContainsElement {
+ return new ContainsElement(
+ $this->fetchElementByName('contains')
+ );
+ }
+
+ public function getCopyrightElement(): CopyrightElement {
+ return new CopyrightElement(
+ $this->fetchElementByName('copyright')
+ );
+ }
+
+ public function getRequiresElement(): RequiresElement {
+ return new RequiresElement(
+ $this->fetchElementByName('requires')
+ );
+ }
+
+ public function hasBundlesElement(): bool {
+ return $this->dom->getElementsByTagNameNS(self::XMLNS, 'bundles')->length === 1;
+ }
+
+ public function getBundlesElement(): BundlesElement {
+ return new BundlesElement(
+ $this->fetchElementByName('bundles')
+ );
+ }
+
+ private function ensureCorrectDocumentType(DOMDocument $dom): void {
+ $root = $dom->documentElement;
+
+ if ($root->localName !== 'phar' || $root->namespaceURI !== self::XMLNS) {
+ throw new ManifestDocumentException('Not a phar.io manifest document');
+ }
+ }
+
+ private function fetchElementByName(string $elementName): DOMElement {
+ $element = $this->dom->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0);
+
+ if (!$element instanceof DOMElement) {
+ throw new ManifestDocumentException(
+ \sprintf('Element %s missing', $elementName)
+ );
+ }
+
+ return $element;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/ManifestElement.php b/vendor/phar-io/manifest/src/xml/ManifestElement.php
new file mode 100644
index 000000000..1f57f547d
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/ManifestElement.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+use DOMElement;
+use DOMNodeList;
+
+class ManifestElement {
+ public const XMLNS = 'https://phar.io/xml/manifest/1.0';
+
+ /** @var DOMElement */
+ private $element;
+
+ public function __construct(DOMElement $element) {
+ $this->element = $element;
+ }
+
+ protected function getAttributeValue(string $name): string {
+ if (!$this->element->hasAttribute($name)) {
+ throw new ManifestElementException(
+ \sprintf(
+ 'Attribute %s not set on element %s',
+ $name,
+ $this->element->localName
+ )
+ );
+ }
+
+ return $this->element->getAttribute($name);
+ }
+
+ protected function getChildByName(string $elementName): DOMElement {
+ $element = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->item(0);
+
+ if (!$element instanceof DOMElement) {
+ throw new ManifestElementException(
+ \sprintf('Element %s missing', $elementName)
+ );
+ }
+
+ return $element;
+ }
+
+ protected function getChildrenByName(string $elementName): DOMNodeList {
+ $elementList = $this->element->getElementsByTagNameNS(self::XMLNS, $elementName);
+
+ if ($elementList->length === 0) {
+ throw new ManifestElementException(
+ \sprintf('Element(s) %s missing', $elementName)
+ );
+ }
+
+ return $elementList;
+ }
+
+ protected function hasChild(string $elementName): bool {
+ return $this->element->getElementsByTagNameNS(self::XMLNS, $elementName)->length !== 0;
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/PhpElement.php b/vendor/phar-io/manifest/src/xml/PhpElement.php
new file mode 100644
index 000000000..c5c906c96
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/PhpElement.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class PhpElement extends ManifestElement {
+ public function getVersion(): string {
+ return $this->getAttributeValue('version');
+ }
+
+ public function hasExtElements(): bool {
+ return $this->hasChild('ext');
+ }
+
+ public function getExtElements(): ExtElementCollection {
+ return new ExtElementCollection(
+ $this->getChildrenByName('ext')
+ );
+ }
+}
diff --git a/vendor/phar-io/manifest/src/xml/RequiresElement.php b/vendor/phar-io/manifest/src/xml/RequiresElement.php
new file mode 100644
index 000000000..b7cd41ef7
--- /dev/null
+++ b/vendor/phar-io/manifest/src/xml/RequiresElement.php
@@ -0,0 +1,18 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Manifest.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Manifest;
+
+class RequiresElement extends ManifestElement {
+ public function getPHPElement(): PhpElement {
+ return new PhpElement(
+ $this->getChildByName('php')
+ );
+ }
+}
diff --git a/vendor/phar-io/version/CHANGELOG.md b/vendor/phar-io/version/CHANGELOG.md
new file mode 100644
index 000000000..4c0edfa70
--- /dev/null
+++ b/vendor/phar-io/version/CHANGELOG.md
@@ -0,0 +1,142 @@
+# Changelog
+
+All notable changes to phar-io/version are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [3.2.1] - 2022-02-21
+
+### Fixed
+
+- Have ExactVersionConstraint honor build metadata (added in 3.2.0)
+
+
+## [3.2.0] - 2022-02-21
+
+### Added
+
+- Build metadata is now supported and considered for equality checks only
+
+
+## [3.1.1] - 2022-02-07
+
+### Fixed
+
+- [#28](https://github.com/phar-io/version/issues/28): `VersionConstraintParser` does not support logical OR represented by single pipe (|) (Thanks @llaville)
+
+
+## [3.1.0] - 2021-02-23
+
+### Changed
+
+- Internal Refactoring
+- More scalar types
+
+### Added
+
+- [#24](https://github.com/phar-io/version/issues/24): `Version::getOriginalString()` added (Thanks @addshore)
+- Version constraints using the caret operator (`^`) now honor pre-1.0 releases, e.g. `^0.3` translates to `0.3.*`)
+- Various integration tests for version constraint processing
+
+### Fixed
+
+- [#23](https://github.com/phar-io/version/pull/23): Tilde operator without patch level
+
+
+
+## [3.0.4] - 14.12.2020
+
+### Fixed
+
+- [#22](https://github.com/phar-io/version/pull/22): make dev suffix rank works for uppercase too
+
+## [3.0.3] - 30.11.2020
+
+### Added
+
+- Comparator method `Version::equals()` added
+
+
+## [3.0.2] - 27.06.2020
+
+This release now supports PHP 7.2+ and PHP ^8.0. No other changes included.
+
+
+## [3.0.1] - 09.05.2020
+
+__Potential BC Break Notice:__
+`Version::getVersionString()` no longer returns `v` prefixes in case the "input"
+string contained one. These are not part of the semver specs
+(see https://semver.org/#is-v123-a-semantic-version) and get stripped out.
+As of Version 3.1.0 `Version::getOriginalString()` can be used to still
+retrieve it as given.
+
+### Changed
+
+- Internal Refactoring
+- More scalar types
+
+### Fixed
+
+- Fixed Constraint processing Regression for ^1.2 and ~1.2
+
+
+## [3.0.0] - 05.05.2020
+
+### Changed
+
+- Require PHP 7.2+
+- All code now uses strict mode
+- Scalar types have been added as needed
+
+### Added
+
+- The technically invalid format using 'v' prefix ("v1.2.3") is now properly supported
+
+
+## [2.0.1] - 08.07.2018
+
+### Fixed
+
+- Versions without a pre-release suffix are now always considered greater
+than versions with a pre-release suffix. Example: `3.0.0 > 3.0.0-alpha.1`
+
+
+## [2.0.0] - 23.06.2018
+
+Changes to public API:
+
+- `PreReleaseSuffix::construct()`: optional parameter `$number` removed
+- `PreReleaseSuffix::isGreaterThan()`: introduced
+- `Version::hasPreReleaseSuffix()`: introduced
+
+### Added
+
+- [#11](https://github.com/phar-io/version/issues/11): Added support for pre-release version suffixes. Supported values are:
+ - `dev`
+ - `beta` (also abbreviated form `b`)
+ - `rc`
+ - `alpha` (also abbreviated form `a`)
+ - `patch` (also abbreviated form `p`)
+
+ All values can be followed by a number, e.g. `beta3`.
+
+ When comparing versions, the pre-release suffix is taken into account. Example:
+`1.5.0 > 1.5.0-beta1 > 1.5.0-alpha3 > 1.5.0-alpha2 > 1.5.0-dev11`
+
+### Changed
+
+- reorganized the source directories
+
+### Fixed
+
+- [#10](https://github.com/phar-io/version/issues/10): Version numbers containing
+a numeric suffix as seen in Debian packages are now supported.
+
+
+[3.1.0]: https://github.com/phar-io/version/compare/3.0.4...3.1.0
+[3.0.4]: https://github.com/phar-io/version/compare/3.0.3...3.0.4
+[3.0.3]: https://github.com/phar-io/version/compare/3.0.2...3.0.3
+[3.0.2]: https://github.com/phar-io/version/compare/3.0.1...3.0.2
+[3.0.1]: https://github.com/phar-io/version/compare/3.0.0...3.0.1
+[3.0.0]: https://github.com/phar-io/version/compare/2.0.1...3.0.0
+[2.0.1]: https://github.com/phar-io/version/compare/2.0.0...2.0.1
+[2.0.0]: https://github.com/phar-io/version/compare/1.0.1...2.0.0
diff --git a/vendor/phar-io/version/LICENSE b/vendor/phar-io/version/LICENSE
new file mode 100644
index 000000000..ce32758a8
--- /dev/null
+++ b/vendor/phar-io/version/LICENSE
@@ -0,0 +1,29 @@
+Copyright (c) 2016-2017 Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]> and contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/vendor/phar-io/version/README.md b/vendor/phar-io/version/README.md
new file mode 100644
index 000000000..76e6e9857
--- /dev/null
+++ b/vendor/phar-io/version/README.md
@@ -0,0 +1,61 @@
+# Version
+
+Library for handling version information and constraints
+
+[![Build Status](https://travis-ci.org/phar-io/version.svg?branch=master)](https://travis-ci.org/phar-io/version)
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+ composer require phar-io/version
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+ composer require --dev phar-io/version
+
+## Version constraints
+
+A Version constraint describes a range of versions or a discrete version number. The format of version numbers follows the schema of [semantic versioning](http://semver.org): `<major>.<minor>.<patch>`. A constraint might contain an operator that describes the range.
+
+Beside the typical mathematical operators like `<=`, `>=`, there are two special operators:
+
+*Caret operator*: `^1.0`
+can be written as `>=1.0.0 <2.0.0` and read as »every Version within major version `1`«.
+
+*Tilde operator*: `~1.0.0`
+can be written as `>=1.0.0 <1.1.0` and read as »every version within minor version `1.1`. The behavior of tilde operator depends on whether a patch level version is provided or not. If no patch level is provided, tilde operator behaves like the caret operator: `~1.0` is identical to `^1.0`.
+
+## Usage examples
+
+Parsing version constraints and check discrete versions for compliance:
+
+```php
+
+use PharIo\Version\Version;
+use PharIo\Version\VersionConstraintParser;
+
+$parser = new VersionConstraintParser();
+$caret_constraint = $parser->parse( '^7.0' );
+
+$caret_constraint->complies( new Version( '7.0.17' ) ); // true
+$caret_constraint->complies( new Version( '7.1.0' ) ); // true
+$caret_constraint->complies( new Version( '6.4.34' ) ); // false
+
+$tilde_constraint = $parser->parse( '~1.1.0' );
+
+$tilde_constraint->complies( new Version( '1.1.4' ) ); // true
+$tilde_constraint->complies( new Version( '1.2.0' ) ); // false
+```
+
+As of version 2.0.0, pre-release labels are supported and taken into account when comparing versions:
+
+```php
+
+$leftVersion = new PharIo\Version\Version('3.0.0-alpha.1');
+$rightVersion = new PharIo\Version\Version('3.0.0-alpha.2');
+
+$leftVersion->isGreaterThan($rightVersion); // false
+$rightVersion->isGreaterThan($leftVersion); // true
+
+```
diff --git a/vendor/phar-io/version/composer.json b/vendor/phar-io/version/composer.json
new file mode 100644
index 000000000..22687dcd3
--- /dev/null
+++ b/vendor/phar-io/version/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "phar-io/version",
+ "description": "Library for handling version information and constraints",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "[email protected]",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "Developer"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues"
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ }
+}
+
diff --git a/vendor/phar-io/version/src/BuildMetaData.php b/vendor/phar-io/version/src/BuildMetaData.php
new file mode 100644
index 000000000..d42f0363f
--- /dev/null
+++ b/vendor/phar-io/version/src/BuildMetaData.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class BuildMetaData {
+
+ /** @var string */
+ private $value;
+
+ public function __construct(string $value) {
+ $this->value = $value;
+ }
+
+ public function asString(): string {
+ return $this->value;
+ }
+
+ public function equals(BuildMetaData $other): bool {
+ return $this->asString() === $other->asString();
+ }
+}
diff --git a/vendor/phar-io/version/src/PreReleaseSuffix.php b/vendor/phar-io/version/src/PreReleaseSuffix.php
new file mode 100644
index 000000000..00563008e
--- /dev/null
+++ b/vendor/phar-io/version/src/PreReleaseSuffix.php
@@ -0,0 +1,82 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Version;
+
+class PreReleaseSuffix {
+ private const valueScoreMap = [
+ 'dev' => 0,
+ 'a' => 1,
+ 'alpha' => 1,
+ 'b' => 2,
+ 'beta' => 2,
+ 'rc' => 3,
+ 'p' => 4,
+ 'pl' => 4,
+ 'patch' => 4,
+ ];
+
+ /** @var string */
+ private $value;
+
+ /** @var int */
+ private $valueScore;
+
+ /** @var int */
+ private $number = 0;
+
+ /** @var string */
+ private $full;
+
+ /**
+ * @throws InvalidPreReleaseSuffixException
+ */
+ public function __construct(string $value) {
+ $this->parseValue($value);
+ }
+
+ public function asString(): string {
+ return $this->full;
+ }
+
+ public function getValue(): string {
+ return $this->value;
+ }
+
+ public function getNumber(): ?int {
+ return $this->number;
+ }
+
+ public function isGreaterThan(PreReleaseSuffix $suffix): bool {
+ if ($this->valueScore > $suffix->valueScore) {
+ return true;
+ }
+
+ if ($this->valueScore < $suffix->valueScore) {
+ return false;
+ }
+
+ return $this->getNumber() > $suffix->getNumber();
+ }
+
+ private function mapValueToScore(string $value): int {
+ $value = \strtolower($value);
+
+ return self::valueScoreMap[$value];
+ }
+
+ private function parseValue(string $value): void {
+ $regex = '/-?((dev|beta|b|rc|alpha|a|patch|p|pl)\.?(\d*)).*$/i';
+
+ if (\preg_match($regex, $value, $matches) !== 1) {
+ throw new InvalidPreReleaseSuffixException(\sprintf('Invalid label %s', $value));
+ }
+
+ $this->full = $matches[1];
+ $this->value = $matches[2];
+
+ if ($matches[3] !== '') {
+ $this->number = (int)$matches[3];
+ }
+
+ $this->valueScore = $this->mapValueToScore($matches[2]);
+ }
+}
diff --git a/vendor/phar-io/version/src/Version.php b/vendor/phar-io/version/src/Version.php
new file mode 100644
index 000000000..644af5ca8
--- /dev/null
+++ b/vendor/phar-io/version/src/Version.php
@@ -0,0 +1,208 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class Version {
+ /** @var string */
+ private $originalVersionString;
+
+ /** @var VersionNumber */
+ private $major;
+
+ /** @var VersionNumber */
+ private $minor;
+
+ /** @var VersionNumber */
+ private $patch;
+
+ /** @var null|PreReleaseSuffix */
+ private $preReleaseSuffix;
+
+ /** @var null|BuildMetaData */
+ private $buildMetadata;
+
+ public function __construct(string $versionString) {
+ $this->ensureVersionStringIsValid($versionString);
+ $this->originalVersionString = $versionString;
+ }
+
+ /**
+ * @throws NoPreReleaseSuffixException
+ */
+ public function getPreReleaseSuffix(): PreReleaseSuffix {
+ if ($this->preReleaseSuffix === null) {
+ throw new NoPreReleaseSuffixException('No pre-release suffix set');
+ }
+
+ return $this->preReleaseSuffix;
+ }
+
+ public function getOriginalString(): string {
+ return $this->originalVersionString;
+ }
+
+ public function getVersionString(): string {
+ $str = \sprintf(
+ '%d.%d.%d',
+ $this->getMajor()->getValue() ?? 0,
+ $this->getMinor()->getValue() ?? 0,
+ $this->getPatch()->getValue() ?? 0
+ );
+
+ if (!$this->hasPreReleaseSuffix()) {
+ return $str;
+ }
+
+ return $str . '-' . $this->getPreReleaseSuffix()->asString();
+ }
+
+ public function hasPreReleaseSuffix(): bool {
+ return $this->preReleaseSuffix !== null;
+ }
+
+ public function equals(Version $other): bool {
+ if ($this->getVersionString() !== $other->getVersionString()) {
+ return false;
+ }
+
+ if ($this->hasBuildMetaData() !== $other->hasBuildMetaData()) {
+ return false;
+ }
+
+ if ($this->hasBuildMetaData() && $other->hasBuildMetaData() &&
+ !$this->getBuildMetaData()->equals($other->getBuildMetaData())) {
+ return false;
+ }
+
+ return true;
+ }
+
+ public function isGreaterThan(Version $version): bool {
+ if ($version->getMajor()->getValue() > $this->getMajor()->getValue()) {
+ return false;
+ }
+
+ if ($version->getMajor()->getValue() < $this->getMajor()->getValue()) {
+ return true;
+ }
+
+ if ($version->getMinor()->getValue() > $this->getMinor()->getValue()) {
+ return false;
+ }
+
+ if ($version->getMinor()->getValue() < $this->getMinor()->getValue()) {
+ return true;
+ }
+
+ if ($version->getPatch()->getValue() > $this->getPatch()->getValue()) {
+ return false;
+ }
+
+ if ($version->getPatch()->getValue() < $this->getPatch()->getValue()) {
+ return true;
+ }
+
+ if (!$version->hasPreReleaseSuffix() && !$this->hasPreReleaseSuffix()) {
+ return false;
+ }
+
+ if ($version->hasPreReleaseSuffix() && !$this->hasPreReleaseSuffix()) {
+ return true;
+ }
+
+ if (!$version->hasPreReleaseSuffix() && $this->hasPreReleaseSuffix()) {
+ return false;
+ }
+
+ return $this->getPreReleaseSuffix()->isGreaterThan($version->getPreReleaseSuffix());
+ }
+
+ public function getMajor(): VersionNumber {
+ return $this->major;
+ }
+
+ public function getMinor(): VersionNumber {
+ return $this->minor;
+ }
+
+ public function getPatch(): VersionNumber {
+ return $this->patch;
+ }
+
+ /**
+ * @psalm-assert-if-true BuildMetaData $this->buildMetadata
+ * @psalm-assert-if-true BuildMetaData $this->getBuildMetaData()
+ */
+ public function hasBuildMetaData(): bool {
+ return $this->buildMetadata !== null;
+ }
+
+ /**
+ * @throws NoBuildMetaDataException
+ */
+ public function getBuildMetaData(): BuildMetaData {
+ if (!$this->hasBuildMetaData()) {
+ throw new NoBuildMetaDataException('No build metadata set');
+ }
+
+ return $this->buildMetadata;
+ }
+
+ /**
+ * @param string[] $matches
+ *
+ * @throws InvalidPreReleaseSuffixException
+ */
+ private function parseVersion(array $matches): void {
+ $this->major = new VersionNumber((int)$matches['Major']);
+ $this->minor = new VersionNumber((int)$matches['Minor']);
+ $this->patch = isset($matches['Patch']) ? new VersionNumber((int)$matches['Patch']) : new VersionNumber(0);
+
+ if (isset($matches['PreReleaseSuffix']) && $matches['PreReleaseSuffix'] !== '') {
+ $this->preReleaseSuffix = new PreReleaseSuffix($matches['PreReleaseSuffix']);
+ }
+
+ if (isset($matches['BuildMetadata'])) {
+ $this->buildMetadata = new BuildMetaData($matches['BuildMetadata']);
+ }
+ }
+
+ /**
+ * @param string $version
+ *
+ * @throws InvalidVersionException
+ */
+ private function ensureVersionStringIsValid($version): void {
+ $regex = '/^v?
+ (?P<Major>0|[1-9]\d*)
+ \\.
+ (?P<Minor>0|[1-9]\d*)
+ (\\.
+ (?P<Patch>0|[1-9]\d*)
+ )?
+ (?:
+ -
+ (?<PreReleaseSuffix>(?:(dev|beta|b|rc|alpha|a|patch|p|pl)\.?\d*))
+ )?
+ (?:
+ \\+
+ (?P<BuildMetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-@]+)*)
+ )?
+ $/xi';
+
+ if (\preg_match($regex, $version, $matches) !== 1) {
+ throw new InvalidVersionException(
+ \sprintf("Version string '%s' does not follow SemVer semantics", $version)
+ );
+ }
+
+ $this->parseVersion($matches);
+ }
+}
diff --git a/vendor/phar-io/version/src/VersionConstraintParser.php b/vendor/phar-io/version/src/VersionConstraintParser.php
new file mode 100644
index 000000000..03d6a0959
--- /dev/null
+++ b/vendor/phar-io/version/src/VersionConstraintParser.php
@@ -0,0 +1,115 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class VersionConstraintParser {
+ /**
+ * @throws UnsupportedVersionConstraintException
+ */
+ public function parse(string $value): VersionConstraint {
+ if (\strpos($value, '|') !== false) {
+ return $this->handleOrGroup($value);
+ }
+
+ if (!\preg_match('/^[\^~*]?v?[\d.*]+(?:-.*)?$/i', $value)) {
+ throw new UnsupportedVersionConstraintException(
+ \sprintf('Version constraint %s is not supported.', $value)
+ );
+ }
+
+ switch ($value[0]) {
+ case '~':
+ return $this->handleTildeOperator($value);
+ case '^':
+ return $this->handleCaretOperator($value);
+ }
+
+ $constraint = new VersionConstraintValue($value);
+
+ if ($constraint->getMajor()->isAny()) {
+ return new AnyVersionConstraint();
+ }
+
+ if ($constraint->getMinor()->isAny()) {
+ return new SpecificMajorVersionConstraint(
+ $constraint->getVersionString(),
+ $constraint->getMajor()->getValue() ?? 0
+ );
+ }
+
+ if ($constraint->getPatch()->isAny()) {
+ return new SpecificMajorAndMinorVersionConstraint(
+ $constraint->getVersionString(),
+ $constraint->getMajor()->getValue() ?? 0,
+ $constraint->getMinor()->getValue() ?? 0
+ );
+ }
+
+ return new ExactVersionConstraint($constraint->getVersionString());
+ }
+
+ private function handleOrGroup(string $value): OrVersionConstraintGroup {
+ $constraints = [];
+
+ foreach (\preg_split('{\s*\|\|?\s*}', \trim($value)) as $groupSegment) {
+ $constraints[] = $this->parse(\trim($groupSegment));
+ }
+
+ return new OrVersionConstraintGroup($value, $constraints);
+ }
+
+ private function handleTildeOperator(string $value): AndVersionConstraintGroup {
+ $constraintValue = new VersionConstraintValue(\substr($value, 1));
+
+ if ($constraintValue->getPatch()->isAny()) {
+ return $this->handleCaretOperator($value);
+ }
+
+ $constraints = [
+ new GreaterThanOrEqualToVersionConstraint(
+ $value,
+ new Version(\substr($value, 1))
+ ),
+ new SpecificMajorAndMinorVersionConstraint(
+ $value,
+ $constraintValue->getMajor()->getValue() ?? 0,
+ $constraintValue->getMinor()->getValue() ?? 0
+ )
+ ];
+
+ return new AndVersionConstraintGroup($value, $constraints);
+ }
+
+ private function handleCaretOperator(string $value): AndVersionConstraintGroup {
+ $constraintValue = new VersionConstraintValue(\substr($value, 1));
+
+ $constraints = [
+ new GreaterThanOrEqualToVersionConstraint($value, new Version(\substr($value, 1)))
+ ];
+
+ if ($constraintValue->getMajor()->getValue() === 0) {
+ $constraints[] = new SpecificMajorAndMinorVersionConstraint(
+ $value,
+ $constraintValue->getMajor()->getValue() ?? 0,
+ $constraintValue->getMinor()->getValue() ?? 0
+ );
+ } else {
+ $constraints[] = new SpecificMajorVersionConstraint(
+ $value,
+ $constraintValue->getMajor()->getValue() ?? 0
+ );
+ }
+
+ return new AndVersionConstraintGroup(
+ $value,
+ $constraints
+ );
+ }
+}
diff --git a/vendor/phar-io/version/src/VersionConstraintValue.php b/vendor/phar-io/version/src/VersionConstraintValue.php
new file mode 100644
index 000000000..0762e7c0e
--- /dev/null
+++ b/vendor/phar-io/version/src/VersionConstraintValue.php
@@ -0,0 +1,88 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Version;
+
+class VersionConstraintValue {
+ /** @var VersionNumber */
+ private $major;
+
+ /** @var VersionNumber */
+ private $minor;
+
+ /** @var VersionNumber */
+ private $patch;
+
+ /** @var string */
+ private $label = '';
+
+ /** @var string */
+ private $buildMetaData = '';
+
+ /** @var string */
+ private $versionString = '';
+
+ public function __construct(string $versionString) {
+ $this->versionString = $versionString;
+
+ $this->parseVersion($versionString);
+ }
+
+ public function getLabel(): string {
+ return $this->label;
+ }
+
+ public function getBuildMetaData(): string {
+ return $this->buildMetaData;
+ }
+
+ public function getVersionString(): string {
+ return $this->versionString;
+ }
+
+ public function getMajor(): VersionNumber {
+ return $this->major;
+ }
+
+ public function getMinor(): VersionNumber {
+ return $this->minor;
+ }
+
+ public function getPatch(): VersionNumber {
+ return $this->patch;
+ }
+
+ private function parseVersion(string $versionString): void {
+ $this->extractBuildMetaData($versionString);
+ $this->extractLabel($versionString);
+ $this->stripPotentialVPrefix($versionString);
+
+ $versionSegments = \explode('.', $versionString);
+ $this->major = new VersionNumber(\is_numeric($versionSegments[0]) ? (int)$versionSegments[0] : null);
+
+ $minorValue = isset($versionSegments[1]) && \is_numeric($versionSegments[1]) ? (int)$versionSegments[1] : null;
+ $patchValue = isset($versionSegments[2]) && \is_numeric($versionSegments[2]) ? (int)$versionSegments[2] : null;
+
+ $this->minor = new VersionNumber($minorValue);
+ $this->patch = new VersionNumber($patchValue);
+ }
+
+ private function extractBuildMetaData(string &$versionString): void {
+ if (\preg_match('/\+(.*)/', $versionString, $matches) === 1) {
+ $this->buildMetaData = $matches[1];
+ $versionString = \str_replace($matches[0], '', $versionString);
+ }
+ }
+
+ private function extractLabel(string &$versionString): void {
+ if (\preg_match('/-(.*)/', $versionString, $matches) === 1) {
+ $this->label = $matches[1];
+ $versionString = \str_replace($matches[0], '', $versionString);
+ }
+ }
+
+ private function stripPotentialVPrefix(string &$versionString): void {
+ if ($versionString[0] !== 'v') {
+ return;
+ }
+ $versionString = \substr($versionString, 1);
+ }
+}
diff --git a/vendor/phar-io/version/src/VersionNumber.php b/vendor/phar-io/version/src/VersionNumber.php
new file mode 100644
index 000000000..4833a9b0f
--- /dev/null
+++ b/vendor/phar-io/version/src/VersionNumber.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class VersionNumber {
+
+ /** @var ?int */
+ private $value;
+
+ public function __construct(?int $value) {
+ $this->value = $value;
+ }
+
+ public function isAny(): bool {
+ return $this->value === null;
+ }
+
+ public function getValue(): ?int {
+ return $this->value;
+ }
+}
diff --git a/vendor/phar-io/version/src/constraints/AbstractVersionConstraint.php b/vendor/phar-io/version/src/constraints/AbstractVersionConstraint.php
new file mode 100644
index 000000000..66201a140
--- /dev/null
+++ b/vendor/phar-io/version/src/constraints/AbstractVersionConstraint.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+abstract class AbstractVersionConstraint implements VersionConstraint {
+ /** @var string */
+ private $originalValue;
+
+ public function __construct(string $originalValue) {
+ $this->originalValue = $originalValue;
+ }
+
+ public function asString(): string {
+ return $this->originalValue;
+ }
+}
diff --git a/vendor/phar-io/version/src/constraints/AndVersionConstraintGroup.php b/vendor/phar-io/version/src/constraints/AndVersionConstraintGroup.php
new file mode 100644
index 000000000..5096f2fbb
--- /dev/null
+++ b/vendor/phar-io/version/src/constraints/AndVersionConstraintGroup.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class AndVersionConstraintGroup extends AbstractVersionConstraint {
+ /** @var VersionConstraint[] */
+ private $constraints = [];
+
+ /**
+ * @param VersionConstraint[] $constraints
+ */
+ public function __construct(string $originalValue, array $constraints) {
+ parent::__construct($originalValue);
+
+ $this->constraints = $constraints;
+ }
+
+ public function complies(Version $version): bool {
+ foreach ($this->constraints as $constraint) {
+ if (!$constraint->complies($version)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/vendor/phar-io/version/src/constraints/AnyVersionConstraint.php b/vendor/phar-io/version/src/constraints/AnyVersionConstraint.php
new file mode 100644
index 000000000..1499f071f
--- /dev/null
+++ b/vendor/phar-io/version/src/constraints/AnyVersionConstraint.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class AnyVersionConstraint implements VersionConstraint {
+ public function complies(Version $version): bool {
+ return true;
+ }
+
+ public function asString(): string {
+ return '*';
+ }
+}
diff --git a/vendor/phar-io/version/src/constraints/ExactVersionConstraint.php b/vendor/phar-io/version/src/constraints/ExactVersionConstraint.php
new file mode 100644
index 000000000..1d675c9c9
--- /dev/null
+++ b/vendor/phar-io/version/src/constraints/ExactVersionConstraint.php
@@ -0,0 +1,22 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class ExactVersionConstraint extends AbstractVersionConstraint {
+ public function complies(Version $version): bool {
+ $other = $version->getVersionString();
+
+ if ($version->hasBuildMetaData()) {
+ $other .= '+' . $version->getBuildMetaData()->asString();
+ }
+
+ return $this->asString() === $other;
+ }
+}
diff --git a/vendor/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php b/vendor/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php
new file mode 100644
index 000000000..ec3717231
--- /dev/null
+++ b/vendor/phar-io/version/src/constraints/GreaterThanOrEqualToVersionConstraint.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class GreaterThanOrEqualToVersionConstraint extends AbstractVersionConstraint {
+ /** @var Version */
+ private $minimalVersion;
+
+ public function __construct(string $originalValue, Version $minimalVersion) {
+ parent::__construct($originalValue);
+
+ $this->minimalVersion = $minimalVersion;
+ }
+
+ public function complies(Version $version): bool {
+ return $version->getVersionString() === $this->minimalVersion->getVersionString()
+ || $version->isGreaterThan($this->minimalVersion);
+ }
+}
diff --git a/vendor/phar-io/version/src/constraints/OrVersionConstraintGroup.php b/vendor/phar-io/version/src/constraints/OrVersionConstraintGroup.php
new file mode 100644
index 000000000..59fd382f8
--- /dev/null
+++ b/vendor/phar-io/version/src/constraints/OrVersionConstraintGroup.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class OrVersionConstraintGroup extends AbstractVersionConstraint {
+ /** @var VersionConstraint[] */
+ private $constraints = [];
+
+ /**
+ * @param string $originalValue
+ * @param VersionConstraint[] $constraints
+ */
+ public function __construct($originalValue, array $constraints) {
+ parent::__construct($originalValue);
+
+ $this->constraints = $constraints;
+ }
+
+ public function complies(Version $version): bool {
+ foreach ($this->constraints as $constraint) {
+ if ($constraint->complies($version)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php b/vendor/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php
new file mode 100644
index 000000000..302aa311c
--- /dev/null
+++ b/vendor/phar-io/version/src/constraints/SpecificMajorAndMinorVersionConstraint.php
@@ -0,0 +1,33 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class SpecificMajorAndMinorVersionConstraint extends AbstractVersionConstraint {
+ /** @var int */
+ private $major;
+
+ /** @var int */
+ private $minor;
+
+ public function __construct(string $originalValue, int $major, int $minor) {
+ parent::__construct($originalValue);
+
+ $this->major = $major;
+ $this->minor = $minor;
+ }
+
+ public function complies(Version $version): bool {
+ if ($version->getMajor()->getValue() !== $this->major) {
+ return false;
+ }
+
+ return $version->getMinor()->getValue() === $this->minor;
+ }
+}
diff --git a/vendor/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php b/vendor/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php
new file mode 100644
index 000000000..968b809c1
--- /dev/null
+++ b/vendor/phar-io/version/src/constraints/SpecificMajorVersionConstraint.php
@@ -0,0 +1,25 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+class SpecificMajorVersionConstraint extends AbstractVersionConstraint {
+ /** @var int */
+ private $major;
+
+ public function __construct(string $originalValue, int $major) {
+ parent::__construct($originalValue);
+
+ $this->major = $major;
+ }
+
+ public function complies(Version $version): bool {
+ return $version->getMajor()->getValue() === $this->major;
+ }
+}
diff --git a/vendor/phar-io/version/src/constraints/VersionConstraint.php b/vendor/phar-io/version/src/constraints/VersionConstraint.php
new file mode 100644
index 000000000..e94f9e00e
--- /dev/null
+++ b/vendor/phar-io/version/src/constraints/VersionConstraint.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+interface VersionConstraint {
+ public function complies(Version $version): bool;
+
+ public function asString(): string;
+}
diff --git a/vendor/phar-io/version/src/exceptions/Exception.php b/vendor/phar-io/version/src/exceptions/Exception.php
new file mode 100644
index 000000000..3ea458f3d
--- /dev/null
+++ b/vendor/phar-io/version/src/exceptions/Exception.php
@@ -0,0 +1,15 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+use Throwable;
+
+interface Exception extends Throwable {
+}
diff --git a/vendor/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php b/vendor/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php
new file mode 100644
index 000000000..bc0b0c3e4
--- /dev/null
+++ b/vendor/phar-io/version/src/exceptions/InvalidPreReleaseSuffixException.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Version;
+
+class InvalidPreReleaseSuffixException extends \Exception implements Exception {
+}
diff --git a/vendor/phar-io/version/src/exceptions/InvalidVersionException.php b/vendor/phar-io/version/src/exceptions/InvalidVersionException.php
new file mode 100644
index 000000000..e9e93108c
--- /dev/null
+++ b/vendor/phar-io/version/src/exceptions/InvalidVersionException.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Version;
+
+class InvalidVersionException extends \InvalidArgumentException implements Exception {
+}
diff --git a/vendor/phar-io/version/src/exceptions/NoBuildMetaDataException.php b/vendor/phar-io/version/src/exceptions/NoBuildMetaDataException.php
new file mode 100644
index 000000000..09e9bee0d
--- /dev/null
+++ b/vendor/phar-io/version/src/exceptions/NoBuildMetaDataException.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Version;
+
+class NoBuildMetaDataException extends \Exception implements Exception {
+}
diff --git a/vendor/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php b/vendor/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php
new file mode 100644
index 000000000..aa0b20f7a
--- /dev/null
+++ b/vendor/phar-io/version/src/exceptions/NoPreReleaseSuffixException.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace PharIo\Version;
+
+class NoPreReleaseSuffixException extends \Exception implements Exception {
+}
diff --git a/vendor/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php b/vendor/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php
new file mode 100644
index 000000000..6d98e8250
--- /dev/null
+++ b/vendor/phar-io/version/src/exceptions/UnsupportedVersionConstraintException.php
@@ -0,0 +1,13 @@
+<?php declare(strict_types = 1);
+/*
+ * This file is part of PharIo\Version.
+ *
+ * (c) Arne Blankerts <[email protected]>, Sebastian Heuer <[email protected]>, Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PharIo\Version;
+
+final class UnsupportedVersionConstraintException extends \RuntimeException implements Exception {
+}
diff --git a/vendor/phpdocumentor/reflection-common/.github/dependabot.yml b/vendor/phpdocumentor/reflection-common/.github/dependabot.yml
new file mode 100644
index 000000000..c630ffa6b
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/.github/dependabot.yml
@@ -0,0 +1,7 @@
+version: 2
+updates:
+- package-ecosystem: composer
+ directory: "/"
+ schedule:
+ interval: daily
+ open-pull-requests-limit: 10
diff --git a/vendor/phpdocumentor/reflection-common/.github/workflows/push.yml b/vendor/phpdocumentor/reflection-common/.github/workflows/push.yml
new file mode 100644
index 000000000..484410e9a
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/.github/workflows/push.yml
@@ -0,0 +1,223 @@
+on:
+ push:
+ branches:
+ - 2.x
+ pull_request:
+name: Qa workflow
+jobs:
+ setup:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Restore/cache vendor folder
+ uses: actions/cache@v1
+ with:
+ path: vendor
+ key: all-build-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ all-build-${{ hashFiles('**/composer.lock') }}
+ all-build-
+
+ - name: Restore/cache tools folder
+ uses: actions/cache@v1
+ with:
+ path: tools
+ key: all-tools-${{ github.sha }}
+ restore-keys: |
+ all-tools-${{ github.sha }}-
+ all-tools-
+
+ - name: composer
+ uses: docker://composer
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ args: install --no-interaction --prefer-dist --optimize-autoloader
+
+ - name: Install phive
+ run: make install-phive
+
+ - name: Install PHAR dependencies
+ run: tools/phive.phar --no-progress install --copy --trust-gpg-keys 4AA394086372C20A,8A03EA3B385DBAA1 --force-accept-unsigned
+
+ phpunit-with-coverage:
+ runs-on: ubuntu-latest
+ name: Unit tests
+ needs: setup
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: 7.2
+ ini-values: memory_limit=2G, display_errors=On, error_reporting=-1
+ coverage: pcov
+
+ - name: Restore/cache tools folder
+ uses: actions/cache@v1
+ with:
+ path: tools
+ key: all-tools-${{ github.sha }}
+ restore-keys: |
+ all-tools-${{ github.sha }}-
+ all-tools-
+
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: Cache composer dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ubuntu-latest-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ubuntu-latest-composer-
+
+ - name: Install Composer dependencies
+ run: |
+ composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+
+ - name: Run PHPUnit
+ run: php tools/phpunit
+
+ phpunit:
+ runs-on: ${{ matrix.operating-system }}
+ strategy:
+ matrix:
+ operating-system:
+ - ubuntu-latest
+ - windows-latest
+ - macOS-latest
+ php-versions: ['7.2', '7.3', '7.4', '8.0']
+ name: Unit tests for PHP version ${{ matrix.php-versions }} on ${{ matrix.operating-system }}
+ needs:
+ - setup
+ - phpunit-with-coverage
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Restore/cache tools folder
+ uses: actions/cache@v1
+ with:
+ path: tools
+ key: all-tools-${{ github.sha }}
+ restore-keys: |
+ all-tools-${{ github.sha }}-
+ all-tools-
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+ ini-values: memory_limit=2G, display_errors=On, error_reporting=-1
+ coverage: none
+
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: Cache composer dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+
+ - name: Install Composer dependencies
+ run: |
+ composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+
+ - name: Run PHPUnit
+ continue-on-error: true
+ run: php tools/phpunit
+
+ codestyle:
+ runs-on: ubuntu-latest
+ needs: [setup, phpunit]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Restore/cache vendor folder
+ uses: actions/cache@v1
+ with:
+ path: vendor
+ key: all-build-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ all-build-${{ hashFiles('**/composer.lock') }}
+ all-build-
+ - name: Code style check
+ uses: phpDocumentor/coding-standard@latest
+ with:
+ args: -s
+
+ phpstan:
+ runs-on: ubuntu-latest
+ needs: [setup, phpunit]
+ steps:
+ - uses: actions/checkout@v2
+ - name: Restore/cache vendor folder
+ uses: actions/cache@v1
+ with:
+ path: vendor
+ key: all-build-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ all-build-${{ hashFiles('**/composer.lock') }}
+ all-build-
+ - name: PHPStan
+ uses: phpDocumentor/phpstan-ga@latest
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ args: analyse src --configuration phpstan.neon
+
+ psalm:
+ runs-on: ubuntu-latest
+ needs: [setup, phpunit]
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: 7.2
+ ini-values: memory_limit=2G, display_errors=On, error_reporting=-1
+ tools: psalm
+ coverage: none
+
+ - name: Get composer cache directory
+ id: composer-cache
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: Cache composer dependencies
+ uses: actions/cache@v1
+ with:
+ path: ${{ steps.composer-cache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+
+ - name: Install Composer dependencies
+ run: |
+ composer install --no-progress --no-suggest --prefer-dist --optimize-autoloader
+
+ - name: Psalm
+ run: psalm --output-format=github
+
+ bc_check:
+ name: BC Check
+ runs-on: ubuntu-latest
+ needs: [setup, phpunit]
+ steps:
+ - uses: actions/checkout@v2
+ - name: fetch tags
+ run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
+ - name: Restore/cache vendor folder
+ uses: actions/cache@v1
+ with:
+ path: vendor
+ key: all-build-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ all-build-${{ hashFiles('**/composer.lock') }}
+ all-build-
+ - name: Roave BC Check
+ uses: docker://nyholm/roave-bc-check-ga
diff --git a/vendor/phpdocumentor/reflection-common/LICENSE b/vendor/phpdocumentor/reflection-common/LICENSE
new file mode 100644
index 000000000..ed6926c1e
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 phpDocumentor
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/vendor/phpdocumentor/reflection-common/README.md b/vendor/phpdocumentor/reflection-common/README.md
new file mode 100644
index 000000000..70f830dc7
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/README.md
@@ -0,0 +1,11 @@
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+![Qa workflow](https://github.com/phpDocumentor/ReflectionCommon/workflows/Qa%20workflow/badge.svg)
+[![Coveralls Coverage](https://img.shields.io/coveralls/github/phpDocumentor/ReflectionCommon.svg)](https://coveralls.io/github/phpDocumentor/ReflectionCommon?branch=master)
+[![Scrutinizer Code Coverage](https://img.shields.io/scrutinizer/coverage/g/phpDocumentor/ReflectionCommon.svg)](https://scrutinizer-ci.com/g/phpDocumentor/ReflectionCommon/?branch=master)
+[![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/phpDocumentor/ReflectionCommon.svg)](https://scrutinizer-ci.com/g/phpDocumentor/ReflectionCommon/?branch=master)
+[![Stable Version](https://img.shields.io/packagist/v/phpDocumentor/Reflection-Common.svg)](https://packagist.org/packages/phpDocumentor/Reflection-Common)
+[![Unstable Version](https://img.shields.io/packagist/vpre/phpDocumentor/Reflection-Common.svg)](https://packagist.org/packages/phpDocumentor/Reflection-Common)
+
+
+ReflectionCommon
+================
diff --git a/vendor/phpdocumentor/reflection-common/composer.json b/vendor/phpdocumentor/reflection-common/composer.json
new file mode 100644
index 000000000..4d128b49a
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/composer.json
@@ -0,0 +1,28 @@
+{
+ "name": "phpdocumentor/reflection-common",
+ "keywords": ["phpdoc", "phpDocumentor", "reflection", "static analysis", "FQSEN"],
+ "homepage": "http://www.phpdoc.org",
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "[email protected]"
+ }
+ ],
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "autoload" : {
+ "psr-4" : {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "require-dev": {
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-common/src/Element.php b/vendor/phpdocumentor/reflection-common/src/Element.php
new file mode 100644
index 000000000..8923e4fb0
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/src/Element.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * phpDocumentor
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+/**
+ * Interface for Api Elements
+ */
+interface Element
+{
+ /**
+ * Returns the Fqsen of the element.
+ */
+ public function getFqsen() : Fqsen;
+
+ /**
+ * Returns the name of the element.
+ */
+ public function getName() : string;
+}
diff --git a/vendor/phpdocumentor/reflection-common/src/File.php b/vendor/phpdocumentor/reflection-common/src/File.php
new file mode 100644
index 000000000..239c137e7
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/src/File.php
@@ -0,0 +1,35 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+/**
+ * Interface for files processed by the ProjectFactory
+ */
+interface File
+{
+ /**
+ * Returns the content of the file as a string.
+ */
+ public function getContents() : string;
+
+ /**
+ * Returns md5 hash of the file.
+ */
+ public function md5() : string;
+
+ /**
+ * Returns an relative path to the file.
+ */
+ public function path() : string;
+}
diff --git a/vendor/phpdocumentor/reflection-common/src/Fqsen.php b/vendor/phpdocumentor/reflection-common/src/Fqsen.php
new file mode 100644
index 000000000..8fc5d3441
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/src/Fqsen.php
@@ -0,0 +1,89 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * phpDocumentor
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use InvalidArgumentException;
+use function assert;
+use function end;
+use function explode;
+use function is_string;
+use function preg_match;
+use function sprintf;
+use function trim;
+
+/**
+ * Value Object for Fqsen.
+ *
+ * @link https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc-meta.md
+ *
+ * @psalm-immutable
+ */
+final class Fqsen
+{
+ /** @var string full quallified class name */
+ private $fqsen;
+
+ /** @var string name of the element without path. */
+ private $name;
+
+ /**
+ * Initializes the object.
+ *
+ * @throws InvalidArgumentException when $fqsen is not matching the format.
+ */
+ public function __construct(string $fqsen)
+ {
+ $matches = [];
+
+ $result = preg_match(
+ //phpcs:ignore Generic.Files.LineLength.TooLong
+ '/^\\\\([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff\\\\]*)?(?:[:]{2}\\$?([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*))?(?:\\(\\))?$/',
+ $fqsen,
+ $matches
+ );
+
+ if ($result === 0) {
+ throw new InvalidArgumentException(
+ sprintf('"%s" is not a valid Fqsen.', $fqsen)
+ );
+ }
+
+ $this->fqsen = $fqsen;
+
+ if (isset($matches[2])) {
+ $this->name = $matches[2];
+ } else {
+ $matches = explode('\\', $fqsen);
+ $name = end($matches);
+ assert(is_string($name));
+ $this->name = trim($name, '()');
+ }
+ }
+
+ /**
+ * converts this class to string.
+ */
+ public function __toString() : string
+ {
+ return $this->fqsen;
+ }
+
+ /**
+ * Returns the name of the element without path.
+ */
+ public function getName() : string
+ {
+ return $this->name;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-common/src/Location.php b/vendor/phpdocumentor/reflection-common/src/Location.php
new file mode 100644
index 000000000..177deede6
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/src/Location.php
@@ -0,0 +1,53 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+/**
+ * The location where an element occurs within a file.
+ *
+ * @psalm-immutable
+ */
+final class Location
+{
+ /** @var int */
+ private $lineNumber = 0;
+
+ /** @var int */
+ private $columnNumber = 0;
+
+ /**
+ * Initializes the location for an element using its line number in the file and optionally the column number.
+ */
+ public function __construct(int $lineNumber, int $columnNumber = 0)
+ {
+ $this->lineNumber = $lineNumber;
+ $this->columnNumber = $columnNumber;
+ }
+
+ /**
+ * Returns the line number that is covered by this location.
+ */
+ public function getLineNumber() : int
+ {
+ return $this->lineNumber;
+ }
+
+ /**
+ * Returns the column number (character position on a line) for this location object.
+ */
+ public function getColumnNumber() : int
+ {
+ return $this->columnNumber;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-common/src/Project.php b/vendor/phpdocumentor/reflection-common/src/Project.php
new file mode 100644
index 000000000..57839fd14
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/src/Project.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * phpDocumentor
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+/**
+ * Interface for project. Since the definition of a project can be different per factory this interface will be small.
+ */
+interface Project
+{
+ /**
+ * Returns the name of the project.
+ */
+ public function getName() : string;
+}
diff --git a/vendor/phpdocumentor/reflection-common/src/ProjectFactory.php b/vendor/phpdocumentor/reflection-common/src/ProjectFactory.php
new file mode 100644
index 000000000..8bdc60678
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-common/src/ProjectFactory.php
@@ -0,0 +1,28 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * phpDocumentor
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+/**
+ * Interface for project factories. A project factory shall convert a set of files
+ * into an object implementing the Project interface.
+ */
+interface ProjectFactory
+{
+ /**
+ * Creates a project from the set of files.
+ *
+ * @param File[] $files
+ */
+ public function create(string $name, array $files) : Project;
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/LICENSE b/vendor/phpdocumentor/reflection-docblock/LICENSE
new file mode 100644
index 000000000..792e4040f
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2010 Mike van Riel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/phpdocumentor/reflection-docblock/README.md b/vendor/phpdocumentor/reflection-docblock/README.md
new file mode 100644
index 000000000..51f10883b
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/README.md
@@ -0,0 +1,75 @@
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+![Qa workflow](https://github.com/phpDocumentor/ReflectionDocBlock/workflows/Qa%20workflow/badge.svg)
+[![Coveralls Coverage](https://img.shields.io/coveralls/github/phpDocumentor/ReflectionDocBlock.svg)](https://coveralls.io/github/phpDocumentor/ReflectionDocBlock?branch=master)
+[![Scrutinizer Code Coverage](https://img.shields.io/scrutinizer/coverage/g/phpDocumentor/ReflectionDocBlock.svg)](https://scrutinizer-ci.com/g/phpDocumentor/ReflectionDocBlock/?branch=master)
+[![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/phpDocumentor/ReflectionDocBlock.svg)](https://scrutinizer-ci.com/g/phpDocumentor/ReflectionDocBlock/?branch=master)
+[![Stable Version](https://img.shields.io/packagist/v/phpdocumentor/reflection-docblock.svg)](https://packagist.org/packages/phpdocumentor/reflection-docblock)
+[![Unstable Version](https://img.shields.io/packagist/vpre/phpdocumentor/reflection-docblock.svg)](https://packagist.org/packages/phpdocumentor/reflection-docblock)
+
+ReflectionDocBlock
+==================
+
+Introduction
+------------
+
+The ReflectionDocBlock component of phpDocumentor provides a DocBlock parser
+that is 100% compatible with the [PHPDoc standard](http://phpdoc.org/docs/latest).
+
+With this component, a library can provide support for annotations via DocBlocks
+or otherwise retrieve information that is embedded in a DocBlock.
+
+Installation
+------------
+
+```bash
+composer require phpdocumentor/reflection-docblock
+```
+
+Usage
+-----
+
+In order to parse the DocBlock one needs a DocBlockFactory that can be
+instantiated using its `createInstance` factory method like this:
+
+```php
+$factory = \phpDocumentor\Reflection\DocBlockFactory::createInstance();
+```
+
+Then we can use the `create` method of the factory to interpret the DocBlock.
+Please note that it is also possible to provide a class that has the
+`getDocComment()` method, such as an object of type `ReflectionClass`, the
+create method will read that if it exists.
+
+```php
+$docComment = <<<DOCCOMMENT
+/**
+ * This is an example of a summary.
+ *
+ * This is a Description. A Summary and Description are separated by either
+ * two subsequent newlines (thus a whiteline in between as can be seen in this
+ * example), or when the Summary ends with a dot (`.`) and some form of
+ * whitespace.
+ */
+DOCCOMMENT;
+
+$docblock = $factory->create($docComment);
+```
+
+The `create` method will yield an object of type `\phpDocumentor\Reflection\DocBlock`
+whose methods can be queried:
+
+```php
+// Contains the summary for this DocBlock
+$summary = $docblock->getSummary();
+
+// Contains \phpDocumentor\Reflection\DocBlock\Description object
+$description = $docblock->getDescription();
+
+// You can either cast it to string
+$description = (string) $docblock->getDescription();
+
+// Or use the render method to get a string representation of the Description.
+$description = $docblock->getDescription()->render();
+```
+
+> For more examples it would be best to review the scripts in the [`/examples` folder](/examples).
diff --git a/vendor/phpdocumentor/reflection-docblock/composer.json b/vendor/phpdocumentor/reflection-docblock/composer.json
new file mode 100644
index 000000000..d90763024
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/composer.json
@@ -0,0 +1,42 @@
+{
+ "name": "phpdocumentor/reflection-docblock",
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "type": "library",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "[email protected]"
+ }
+ ],
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1",
+ "phpdocumentor/reflection-common": "^2.2",
+ "ext-filter": "*"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": ["tests/unit", "tests/integration"]
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock.php
new file mode 100644
index 000000000..cc33e60e6
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock.php
@@ -0,0 +1,228 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use phpDocumentor\Reflection\DocBlock\Tag;
+use phpDocumentor\Reflection\DocBlock\Tags\TagWithType;
+use Webmozart\Assert\Assert;
+
+final class DocBlock
+{
+ /** @var string The opening line for this docblock. */
+ private $summary;
+
+ /** @var DocBlock\Description The actual description for this docblock. */
+ private $description;
+
+ /** @var Tag[] An array containing all the tags in this docblock; except inline. */
+ private $tags = [];
+
+ /** @var Types\Context|null Information about the context of this DocBlock. */
+ private $context;
+
+ /** @var Location|null Information about the location of this DocBlock. */
+ private $location;
+
+ /** @var bool Is this DocBlock (the start of) a template? */
+ private $isTemplateStart;
+
+ /** @var bool Does this DocBlock signify the end of a DocBlock template? */
+ private $isTemplateEnd;
+
+ /**
+ * @param DocBlock\Tag[] $tags
+ * @param Types\Context $context The context in which the DocBlock occurs.
+ * @param Location $location The location within the file that this DocBlock occurs in.
+ */
+ public function __construct(
+ string $summary = '',
+ ?DocBlock\Description $description = null,
+ array $tags = [],
+ ?Types\Context $context = null,
+ ?Location $location = null,
+ bool $isTemplateStart = false,
+ bool $isTemplateEnd = false
+ ) {
+ Assert::allIsInstanceOf($tags, Tag::class);
+
+ $this->summary = $summary;
+ $this->description = $description ?: new DocBlock\Description('');
+ foreach ($tags as $tag) {
+ $this->addTag($tag);
+ }
+
+ $this->context = $context;
+ $this->location = $location;
+
+ $this->isTemplateEnd = $isTemplateEnd;
+ $this->isTemplateStart = $isTemplateStart;
+ }
+
+ public function getSummary(): string
+ {
+ return $this->summary;
+ }
+
+ public function getDescription(): DocBlock\Description
+ {
+ return $this->description;
+ }
+
+ /**
+ * Returns the current context.
+ */
+ public function getContext(): ?Types\Context
+ {
+ return $this->context;
+ }
+
+ /**
+ * Returns the current location.
+ */
+ public function getLocation(): ?Location
+ {
+ return $this->location;
+ }
+
+ /**
+ * Returns whether this DocBlock is the start of a Template section.
+ *
+ * A Docblock may serve as template for a series of subsequent DocBlocks. This is indicated by a special marker
+ * (`#@+`) that is appended directly after the opening `/**` of a DocBlock.
+ *
+ * An example of such an opening is:
+ *
+ * ```
+ * /**#@+
+ * * My DocBlock
+ * * /
+ * ```
+ *
+ * The description and tags (not the summary!) are copied onto all subsequent DocBlocks and also applied to all
+ * elements that follow until another DocBlock is found that contains the closing marker (`#@-`).
+ *
+ * @see self::isTemplateEnd() for the check whether a closing marker was provided.
+ */
+ public function isTemplateStart(): bool
+ {
+ return $this->isTemplateStart;
+ }
+
+ /**
+ * Returns whether this DocBlock is the end of a Template section.
+ *
+ * @see self::isTemplateStart() for a more complete description of the Docblock Template functionality.
+ */
+ public function isTemplateEnd(): bool
+ {
+ return $this->isTemplateEnd;
+ }
+
+ /**
+ * Returns the tags for this DocBlock.
+ *
+ * @return Tag[]
+ */
+ public function getTags(): array
+ {
+ return $this->tags;
+ }
+
+ /**
+ * Returns an array of tags matching the given name. If no tags are found
+ * an empty array is returned.
+ *
+ * @param string $name String to search by.
+ *
+ * @return Tag[]
+ */
+ public function getTagsByName(string $name): array
+ {
+ $result = [];
+
+ foreach ($this->getTags() as $tag) {
+ if ($tag->getName() !== $name) {
+ continue;
+ }
+
+ $result[] = $tag;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns an array of tags with type matching the given name. If no tags are found
+ * an empty array is returned.
+ *
+ * @param string $name String to search by.
+ *
+ * @return TagWithType[]
+ */
+ public function getTagsWithTypeByName(string $name): array
+ {
+ $result = [];
+
+ foreach ($this->getTagsByName($name) as $tag) {
+ if (!$tag instanceof TagWithType) {
+ continue;
+ }
+
+ $result[] = $tag;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Checks if a tag of a certain type is present in this DocBlock.
+ *
+ * @param string $name Tag name to check for.
+ */
+ public function hasTag(string $name): bool
+ {
+ foreach ($this->getTags() as $tag) {
+ if ($tag->getName() === $name) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Remove a tag from this DocBlock.
+ *
+ * @param Tag $tagToRemove The tag to remove.
+ */
+ public function removeTag(Tag $tagToRemove): void
+ {
+ foreach ($this->tags as $key => $tag) {
+ if ($tag === $tagToRemove) {
+ unset($this->tags[$key]);
+ break;
+ }
+ }
+ }
+
+ /**
+ * Adds a tag to this DocBlock.
+ *
+ * @param Tag $tag The tag to add.
+ */
+ private function addTag(Tag $tag): void
+ {
+ $this->tags[] = $tag;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php
new file mode 100644
index 000000000..a31b2892a
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Description.php
@@ -0,0 +1,115 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock;
+
+use phpDocumentor\Reflection\DocBlock\Tags\Formatter;
+use phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter;
+
+use function vsprintf;
+
+/**
+ * Object representing to description for a DocBlock.
+ *
+ * A Description object can consist of plain text but can also include tags. A Description Formatter can then combine
+ * a body template with sprintf-style placeholders together with formatted tags in order to reconstitute a complete
+ * description text using the format that you would prefer.
+ *
+ * Because parsing a Description text can be a verbose process this is handled by the {@see DescriptionFactory}. It is
+ * thus recommended to use that to create a Description object, like this:
+ *
+ * $description = $descriptionFactory->create('This is a {@see Description}', $context);
+ *
+ * The description factory will interpret the given body and create a body template and list of tags from them, and pass
+ * that onto the constructor if this class.
+ *
+ * > The $context variable is a class of type {@see \phpDocumentor\Reflection\Types\Context} and contains the namespace
+ * > and the namespace aliases that apply to this DocBlock. These are used by the Factory to resolve and expand partial
+ * > type names and FQSENs.
+ *
+ * If you do not want to use the DescriptionFactory you can pass a body template and tag listing like this:
+ *
+ * $description = new Description(
+ * 'This is a %1$s',
+ * [ new See(new Fqsen('\phpDocumentor\Reflection\DocBlock\Description')) ]
+ * );
+ *
+ * It is generally recommended to use the Factory as that will also apply escaping rules, while the Description object
+ * is mainly responsible for rendering.
+ *
+ * @see DescriptionFactory to create a new Description.
+ * @see Description\Formatter for the formatting of the body and tags.
+ */
+class Description
+{
+ /** @var string */
+ private $bodyTemplate;
+
+ /** @var Tag[] */
+ private $tags;
+
+ /**
+ * Initializes a Description with its body (template) and a listing of the tags used in the body template.
+ *
+ * @param Tag[] $tags
+ */
+ public function __construct(string $bodyTemplate, array $tags = [])
+ {
+ $this->bodyTemplate = $bodyTemplate;
+ $this->tags = $tags;
+ }
+
+ /**
+ * Returns the body template.
+ */
+ public function getBodyTemplate(): string
+ {
+ return $this->bodyTemplate;
+ }
+
+ /**
+ * Returns the tags for this DocBlock.
+ *
+ * @return Tag[]
+ */
+ public function getTags(): array
+ {
+ return $this->tags;
+ }
+
+ /**
+ * Renders this description as a string where the provided formatter will format the tags in the expected string
+ * format.
+ */
+ public function render(?Formatter $formatter = null): string
+ {
+ if ($formatter === null) {
+ $formatter = new PassthroughFormatter();
+ }
+
+ $tags = [];
+ foreach ($this->tags as $tag) {
+ $tags[] = '{' . $formatter->format($tag) . '}';
+ }
+
+ return vsprintf($this->bodyTemplate, $tags);
+ }
+
+ /**
+ * Returns a plain string representation of this description.
+ */
+ public function __toString(): string
+ {
+ return $this->render();
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php
new file mode 100644
index 000000000..1a519ec4a
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/DescriptionFactory.php
@@ -0,0 +1,178 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock;
+
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Utils;
+
+use function count;
+use function implode;
+use function ltrim;
+use function min;
+use function str_replace;
+use function strlen;
+use function strpos;
+use function substr;
+use function trim;
+
+use const PREG_SPLIT_DELIM_CAPTURE;
+
+/**
+ * Creates a new Description object given a body of text.
+ *
+ * Descriptions in phpDocumentor are somewhat complex entities as they can contain one or more tags inside their
+ * body that can be replaced with a readable output. The replacing is done by passing a Formatter object to the
+ * Description object's `render` method.
+ *
+ * In addition to the above does a Description support two types of escape sequences:
+ *
+ * 1. `{@}` to escape the `@` character to prevent it from being interpreted as part of a tag, i.e. `{{@}link}`
+ * 2. `{}` to escape the `}` character, this can be used if you want to use the `}` character in the description
+ * of an inline tag.
+ *
+ * If a body consists of multiple lines then this factory will also remove any superfluous whitespace at the beginning
+ * of each line while maintaining any indentation that is used. This will prevent formatting parsers from tripping
+ * over unexpected spaces as can be observed with tag descriptions.
+ */
+class DescriptionFactory
+{
+ /** @var TagFactory */
+ private $tagFactory;
+
+ /**
+ * Initializes this factory with the means to construct (inline) tags.
+ */
+ public function __construct(TagFactory $tagFactory)
+ {
+ $this->tagFactory = $tagFactory;
+ }
+
+ /**
+ * Returns the parsed text of this description.
+ */
+ public function create(string $contents, ?TypeContext $context = null): Description
+ {
+ $tokens = $this->lex($contents);
+ $count = count($tokens);
+ $tagCount = 0;
+ $tags = [];
+
+ for ($i = 1; $i < $count; $i += 2) {
+ $tags[] = $this->tagFactory->create($tokens[$i], $context);
+ $tokens[$i] = '%' . ++$tagCount . '$s';
+ }
+
+ //In order to allow "literal" inline tags, the otherwise invalid
+ //sequence "{@}" is changed to "@", and "{}" is changed to "}".
+ //"%" is escaped to "%%" because of vsprintf.
+ //See unit tests for examples.
+ for ($i = 0; $i < $count; $i += 2) {
+ $tokens[$i] = str_replace(['{@}', '{}', '%'], ['@', '}', '%%'], $tokens[$i]);
+ }
+
+ return new Description(implode('', $tokens), $tags);
+ }
+
+ /**
+ * Strips the contents from superfluous whitespace and splits the description into a series of tokens.
+ *
+ * @return string[] A series of tokens of which the description text is composed.
+ */
+ private function lex(string $contents): array
+ {
+ $contents = $this->removeSuperfluousStartingWhitespace($contents);
+
+ // performance optimalization; if there is no inline tag, don't bother splitting it up.
+ if (strpos($contents, '{@') === false) {
+ return [$contents];
+ }
+
+ return Utils::pregSplit(
+ '/\{
+ # "{@}" is not a valid inline tag. This ensures that we do not treat it as one, but treat it literally.
+ (?!@\})
+ # We want to capture the whole tag line, but without the inline tag delimiters.
+ (\@
+ # Match everything up to the next delimiter.
+ [^{}]*
+ # Nested inline tag content should not be captured, or it will appear in the result separately.
+ (?:
+ # Match nested inline tags.
+ (?:
+ # Because we did not catch the tag delimiters earlier, we must be explicit with them here.
+ # Notice that this also matches "{}", as a way to later introduce it as an escape sequence.
+ \{(?1)?\}
+ |
+ # Make sure we match hanging "{".
+ \{
+ )
+ # Match content after the nested inline tag.
+ [^{}]*
+ )* # If there are more inline tags, match them as well. We use "*" since there may not be any
+ # nested inline tags.
+ )
+ \}/Sux',
+ $contents,
+ 0,
+ PREG_SPLIT_DELIM_CAPTURE
+ );
+ }
+
+ /**
+ * Removes the superfluous from a multi-line description.
+ *
+ * When a description has more than one line then it can happen that the second and subsequent lines have an
+ * additional indentation. This is commonly in use with tags like this:
+ *
+ * {@}since 1.1.0 This is an example
+ * description where we have an
+ * indentation in the second and
+ * subsequent lines.
+ *
+ * If we do not normalize the indentation then we have superfluous whitespace on the second and subsequent
+ * lines and this may cause rendering issues when, for example, using a Markdown converter.
+ */
+ private function removeSuperfluousStartingWhitespace(string $contents): string
+ {
+ $lines = Utils::pregSplit("/\r\n?|\n/", $contents);
+
+ // if there is only one line then we don't have lines with superfluous whitespace and
+ // can use the contents as-is
+ if (count($lines) <= 1) {
+ return $contents;
+ }
+
+ // determine how many whitespace characters need to be stripped
+ $startingSpaceCount = 9999999;
+ for ($i = 1, $iMax = count($lines); $i < $iMax; ++$i) {
+ // lines with a no length do not count as they are not indented at all
+ if (trim($lines[$i]) === '') {
+ continue;
+ }
+
+ // determine the number of prefixing spaces by checking the difference in line length before and after
+ // an ltrim
+ $startingSpaceCount = min($startingSpaceCount, strlen($lines[$i]) - strlen(ltrim($lines[$i])));
+ }
+
+ // strip the number of spaces from each line
+ if ($startingSpaceCount > 0) {
+ for ($i = 1, $iMax = count($lines); $i < $iMax; ++$i) {
+ $lines[$i] = substr($lines[$i], $startingSpaceCount);
+ }
+ }
+
+ return implode("\n", $lines);
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php
new file mode 100644
index 000000000..6a6b47295
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/ExampleFinder.php
@@ -0,0 +1,159 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock;
+
+use phpDocumentor\Reflection\DocBlock\Tags\Example;
+
+use function array_slice;
+use function file;
+use function getcwd;
+use function implode;
+use function is_readable;
+use function rtrim;
+use function sprintf;
+use function trim;
+
+use const DIRECTORY_SEPARATOR;
+
+/**
+ * Class used to find an example file's location based on a given ExampleDescriptor.
+ */
+class ExampleFinder
+{
+ /** @var string */
+ private $sourceDirectory = '';
+
+ /** @var string[] */
+ private $exampleDirectories = [];
+
+ /**
+ * Attempts to find the example contents for the given descriptor.
+ */
+ public function find(Example $example): string
+ {
+ $filename = $example->getFilePath();
+
+ $file = $this->getExampleFileContents($filename);
+ if (!$file) {
+ return sprintf('** File not found : %s **', $filename);
+ }
+
+ return implode('', array_slice($file, $example->getStartingLine() - 1, $example->getLineCount()));
+ }
+
+ /**
+ * Registers the project's root directory where an 'examples' folder can be expected.
+ */
+ public function setSourceDirectory(string $directory = ''): void
+ {
+ $this->sourceDirectory = $directory;
+ }
+
+ /**
+ * Returns the project's root directory where an 'examples' folder can be expected.
+ */
+ public function getSourceDirectory(): string
+ {
+ return $this->sourceDirectory;
+ }
+
+ /**
+ * Registers a series of directories that may contain examples.
+ *
+ * @param string[] $directories
+ */
+ public function setExampleDirectories(array $directories): void
+ {
+ $this->exampleDirectories = $directories;
+ }
+
+ /**
+ * Returns a series of directories that may contain examples.
+ *
+ * @return string[]
+ */
+ public function getExampleDirectories(): array
+ {
+ return $this->exampleDirectories;
+ }
+
+ /**
+ * Attempts to find the requested example file and returns its contents or null if no file was found.
+ *
+ * This method will try several methods in search of the given example file, the first one it encounters is
+ * returned:
+ *
+ * 1. Iterates through all examples folders for the given filename
+ * 2. Checks the source folder for the given filename
+ * 3. Checks the 'examples' folder in the current working directory for examples
+ * 4. Checks the path relative to the current working directory for the given filename
+ *
+ * @return string[] all lines of the example file
+ */
+ private function getExampleFileContents(string $filename): ?array
+ {
+ $normalizedPath = null;
+
+ foreach ($this->exampleDirectories as $directory) {
+ $exampleFileFromConfig = $this->constructExamplePath($directory, $filename);
+ if (is_readable($exampleFileFromConfig)) {
+ $normalizedPath = $exampleFileFromConfig;
+ break;
+ }
+ }
+
+ if (!$normalizedPath) {
+ if (is_readable($this->getExamplePathFromSource($filename))) {
+ $normalizedPath = $this->getExamplePathFromSource($filename);
+ } elseif (is_readable($this->getExamplePathFromExampleDirectory($filename))) {
+ $normalizedPath = $this->getExamplePathFromExampleDirectory($filename);
+ } elseif (is_readable($filename)) {
+ $normalizedPath = $filename;
+ }
+ }
+
+ $lines = $normalizedPath && is_readable($normalizedPath) ? file($normalizedPath) : false;
+
+ return $lines !== false ? $lines : null;
+ }
+
+ /**
+ * Get example filepath based on the example directory inside your project.
+ */
+ private function getExamplePathFromExampleDirectory(string $file): string
+ {
+ return getcwd() . DIRECTORY_SEPARATOR . 'examples' . DIRECTORY_SEPARATOR . $file;
+ }
+
+ /**
+ * Returns a path to the example file in the given directory..
+ */
+ private function constructExamplePath(string $directory, string $file): string
+ {
+ return rtrim($directory, '\\/') . DIRECTORY_SEPARATOR . $file;
+ }
+
+ /**
+ * Get example filepath based on sourcecode.
+ */
+ private function getExamplePathFromSource(string $file): string
+ {
+ return sprintf(
+ '%s%s%s',
+ trim($this->getSourceDirectory(), '\\/'),
+ DIRECTORY_SEPARATOR,
+ trim($file, '"')
+ );
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php
new file mode 100644
index 000000000..77e5fb5fa
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Serializer.php
@@ -0,0 +1,157 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock;
+
+use phpDocumentor\Reflection\DocBlock;
+use phpDocumentor\Reflection\DocBlock\Tags\Formatter;
+use phpDocumentor\Reflection\DocBlock\Tags\Formatter\PassthroughFormatter;
+
+use function sprintf;
+use function str_repeat;
+use function str_replace;
+use function strlen;
+use function wordwrap;
+
+/**
+ * Converts a DocBlock back from an object to a complete DocComment including Asterisks.
+ */
+class Serializer
+{
+ /** @var string The string to indent the comment with. */
+ protected $indentString = ' ';
+
+ /** @var int The number of times the indent string is repeated. */
+ protected $indent = 0;
+
+ /** @var bool Whether to indent the first line with the given indent amount and string. */
+ protected $isFirstLineIndented = true;
+
+ /** @var int|null The max length of a line. */
+ protected $lineLength;
+
+ /** @var Formatter A custom tag formatter. */
+ protected $tagFormatter;
+ /** @var string */
+ private $lineEnding;
+
+ /**
+ * Create a Serializer instance.
+ *
+ * @param int $indent The number of times the indent string is repeated.
+ * @param string $indentString The string to indent the comment with.
+ * @param bool $indentFirstLine Whether to indent the first line.
+ * @param int|null $lineLength The max length of a line or NULL to disable line wrapping.
+ * @param Formatter $tagFormatter A custom tag formatter, defaults to PassthroughFormatter.
+ * @param string $lineEnding Line ending used in the output, by default \n is used.
+ */
+ public function __construct(
+ int $indent = 0,
+ string $indentString = ' ',
+ bool $indentFirstLine = true,
+ ?int $lineLength = null,
+ ?Formatter $tagFormatter = null,
+ string $lineEnding = "\n"
+ ) {
+ $this->indent = $indent;
+ $this->indentString = $indentString;
+ $this->isFirstLineIndented = $indentFirstLine;
+ $this->lineLength = $lineLength;
+ $this->tagFormatter = $tagFormatter ?: new PassthroughFormatter();
+ $this->lineEnding = $lineEnding;
+ }
+
+ /**
+ * Generate a DocBlock comment.
+ *
+ * @param DocBlock $docblock The DocBlock to serialize.
+ *
+ * @return string The serialized doc block.
+ */
+ public function getDocComment(DocBlock $docblock): string
+ {
+ $indent = str_repeat($this->indentString, $this->indent);
+ $firstIndent = $this->isFirstLineIndented ? $indent : '';
+ // 3 === strlen(' * ')
+ $wrapLength = $this->lineLength ? $this->lineLength - strlen($indent) - 3 : null;
+
+ $text = $this->removeTrailingSpaces(
+ $indent,
+ $this->addAsterisksForEachLine(
+ $indent,
+ $this->getSummaryAndDescriptionTextBlock($docblock, $wrapLength)
+ )
+ );
+
+ $comment = $firstIndent . "/**\n";
+ if ($text) {
+ $comment .= $indent . ' * ' . $text . "\n";
+ $comment .= $indent . " *\n";
+ }
+
+ $comment = $this->addTagBlock($docblock, $wrapLength, $indent, $comment);
+
+ return str_replace("\n", $this->lineEnding, $comment . $indent . ' */');
+ }
+
+ private function removeTrailingSpaces(string $indent, string $text): string
+ {
+ return str_replace(
+ sprintf("\n%s * \n", $indent),
+ sprintf("\n%s *\n", $indent),
+ $text
+ );
+ }
+
+ private function addAsterisksForEachLine(string $indent, string $text): string
+ {
+ return str_replace(
+ "\n",
+ sprintf("\n%s * ", $indent),
+ $text
+ );
+ }
+
+ private function getSummaryAndDescriptionTextBlock(DocBlock $docblock, ?int $wrapLength): string
+ {
+ $text = $docblock->getSummary() . ((string) $docblock->getDescription() ? "\n\n" . $docblock->getDescription()
+ : '');
+ if ($wrapLength !== null) {
+ $text = wordwrap($text, $wrapLength);
+
+ return $text;
+ }
+
+ return $text;
+ }
+
+ private function addTagBlock(DocBlock $docblock, ?int $wrapLength, string $indent, string $comment): string
+ {
+ foreach ($docblock->getTags() as $tag) {
+ $tagText = $this->tagFormatter->format($tag);
+ if ($wrapLength !== null) {
+ $tagText = wordwrap($tagText, $wrapLength);
+ }
+
+ $tagText = str_replace(
+ "\n",
+ sprintf("\n%s * ", $indent),
+ $tagText
+ );
+
+ $comment .= sprintf("%s * %s\n", $indent, $tagText);
+ }
+
+ return $comment;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php
new file mode 100644
index 000000000..8d7659510
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/StandardTagFactory.php
@@ -0,0 +1,348 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock;
+
+use InvalidArgumentException;
+use phpDocumentor\Reflection\DocBlock\Tags\Author;
+use phpDocumentor\Reflection\DocBlock\Tags\Covers;
+use phpDocumentor\Reflection\DocBlock\Tags\Deprecated;
+use phpDocumentor\Reflection\DocBlock\Tags\Generic;
+use phpDocumentor\Reflection\DocBlock\Tags\InvalidTag;
+use phpDocumentor\Reflection\DocBlock\Tags\Link as LinkTag;
+use phpDocumentor\Reflection\DocBlock\Tags\Method;
+use phpDocumentor\Reflection\DocBlock\Tags\Param;
+use phpDocumentor\Reflection\DocBlock\Tags\Property;
+use phpDocumentor\Reflection\DocBlock\Tags\PropertyRead;
+use phpDocumentor\Reflection\DocBlock\Tags\PropertyWrite;
+use phpDocumentor\Reflection\DocBlock\Tags\Return_;
+use phpDocumentor\Reflection\DocBlock\Tags\See as SeeTag;
+use phpDocumentor\Reflection\DocBlock\Tags\Since;
+use phpDocumentor\Reflection\DocBlock\Tags\Source;
+use phpDocumentor\Reflection\DocBlock\Tags\Throws;
+use phpDocumentor\Reflection\DocBlock\Tags\Uses;
+use phpDocumentor\Reflection\DocBlock\Tags\Var_;
+use phpDocumentor\Reflection\DocBlock\Tags\Version;
+use phpDocumentor\Reflection\FqsenResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use ReflectionMethod;
+use ReflectionNamedType;
+use ReflectionParameter;
+use Webmozart\Assert\Assert;
+
+use function array_merge;
+use function array_slice;
+use function call_user_func_array;
+use function count;
+use function get_class;
+use function preg_match;
+use function strpos;
+use function trim;
+
+/**
+ * Creates a Tag object given the contents of a tag.
+ *
+ * This Factory is capable of determining the appropriate class for a tag and instantiate it using its `create`
+ * factory method. The `create` factory method of a Tag can have a variable number of arguments; this way you can
+ * pass the dependencies that you need to construct a tag object.
+ *
+ * > Important: each parameter in addition to the body variable for the `create` method must default to null, otherwise
+ * > it violates the constraint with the interface; it is recommended to use the {@see Assert::notNull()} method to
+ * > verify that a dependency is actually passed.
+ *
+ * This Factory also features a Service Locator component that is used to pass the right dependencies to the
+ * `create` method of a tag; each dependency should be registered as a service or as a parameter.
+ *
+ * When you want to use a Tag of your own with custom handling you need to call the `registerTagHandler` method, pass
+ * the name of the tag and a Fully Qualified Class Name pointing to a class that implements the Tag interface.
+ */
+final class StandardTagFactory implements TagFactory
+{
+ /** PCRE regular expression matching a tag name. */
+ public const REGEX_TAGNAME = '[\w\-\_\\\\:]+';
+
+ /**
+ * @var array<class-string<Tag>> An array with a tag as a key, and an
+ * FQCN to a class that handles it as an array value.
+ */
+ private $tagHandlerMappings = [
+ 'author' => Author::class,
+ 'covers' => Covers::class,
+ 'deprecated' => Deprecated::class,
+ // 'example' => '\phpDocumentor\Reflection\DocBlock\Tags\Example',
+ 'link' => LinkTag::class,
+ 'method' => Method::class,
+ 'param' => Param::class,
+ 'property-read' => PropertyRead::class,
+ 'property' => Property::class,
+ 'property-write' => PropertyWrite::class,
+ 'return' => Return_::class,
+ 'see' => SeeTag::class,
+ 'since' => Since::class,
+ 'source' => Source::class,
+ 'throw' => Throws::class,
+ 'throws' => Throws::class,
+ 'uses' => Uses::class,
+ 'var' => Var_::class,
+ 'version' => Version::class,
+ ];
+
+ /**
+ * @var array<class-string<Tag>> An array with a anotation s a key, and an
+ * FQCN to a class that handles it as an array value.
+ */
+ private $annotationMappings = [];
+
+ /**
+ * @var ReflectionParameter[][] a lazy-loading cache containing parameters
+ * for each tagHandler that has been used.
+ */
+ private $tagHandlerParameterCache = [];
+
+ /** @var FqsenResolver */
+ private $fqsenResolver;
+
+ /**
+ * @var mixed[] an array representing a simple Service Locator where we can store parameters and
+ * services that can be inserted into the Factory Methods of Tag Handlers.
+ */
+ private $serviceLocator = [];
+
+ /**
+ * Initialize this tag factory with the means to resolve an FQSEN and optionally a list of tag handlers.
+ *
+ * If no tag handlers are provided than the default list in the {@see self::$tagHandlerMappings} property
+ * is used.
+ *
+ * @see self::registerTagHandler() to add a new tag handler to the existing default list.
+ *
+ * @param array<class-string<Tag>> $tagHandlers
+ */
+ public function __construct(FqsenResolver $fqsenResolver, ?array $tagHandlers = null)
+ {
+ $this->fqsenResolver = $fqsenResolver;
+ if ($tagHandlers !== null) {
+ $this->tagHandlerMappings = $tagHandlers;
+ }
+
+ $this->addService($fqsenResolver, FqsenResolver::class);
+ }
+
+ public function create(string $tagLine, ?TypeContext $context = null): Tag
+ {
+ if (!$context) {
+ $context = new TypeContext('');
+ }
+
+ [$tagName, $tagBody] = $this->extractTagParts($tagLine);
+
+ return $this->createTag(trim($tagBody), $tagName, $context);
+ }
+
+ /**
+ * @param mixed $value
+ */
+ public function addParameter(string $name, $value): void
+ {
+ $this->serviceLocator[$name] = $value;
+ }
+
+ public function addService(object $service, ?string $alias = null): void
+ {
+ $this->serviceLocator[$alias ?: get_class($service)] = $service;
+ }
+
+ public function registerTagHandler(string $tagName, string $handler): void
+ {
+ Assert::stringNotEmpty($tagName);
+ Assert::classExists($handler);
+ Assert::implementsInterface($handler, Tag::class);
+
+ if (strpos($tagName, '\\') && $tagName[0] !== '\\') {
+ throw new InvalidArgumentException(
+ 'A namespaced tag must have a leading backslash as it must be fully qualified'
+ );
+ }
+
+ $this->tagHandlerMappings[$tagName] = $handler;
+ }
+
+ /**
+ * Extracts all components for a tag.
+ *
+ * @return string[]
+ */
+ private function extractTagParts(string $tagLine): array
+ {
+ $matches = [];
+ if (!preg_match('/^@(' . self::REGEX_TAGNAME . ')((?:[\s\(\{])\s*([^\s].*)|$)/us', $tagLine, $matches)) {
+ throw new InvalidArgumentException(
+ 'The tag "' . $tagLine . '" does not seem to be wellformed, please check it for errors'
+ );
+ }
+
+ if (count($matches) < 3) {
+ $matches[] = '';
+ }
+
+ return array_slice($matches, 1);
+ }
+
+ /**
+ * Creates a new tag object with the given name and body or returns null if the tag name was recognized but the
+ * body was invalid.
+ */
+ private function createTag(string $body, string $name, TypeContext $context): Tag
+ {
+ $handlerClassName = $this->findHandlerClassName($name, $context);
+ $arguments = $this->getArgumentsForParametersFromWiring(
+ $this->fetchParametersForHandlerFactoryMethod($handlerClassName),
+ $this->getServiceLocatorWithDynamicParameters($context, $name, $body)
+ );
+
+ try {
+ $callable = [$handlerClassName, 'create'];
+ Assert::isCallable($callable);
+ /** @phpstan-var callable(string): ?Tag $callable */
+ $tag = call_user_func_array($callable, $arguments);
+
+ return $tag ?? InvalidTag::create($body, $name);
+ } catch (InvalidArgumentException $e) {
+ return InvalidTag::create($body, $name)->withError($e);
+ }
+ }
+
+ /**
+ * Determines the Fully Qualified Class Name of the Factory or Tag (containing a Factory Method `create`).
+ *
+ * @return class-string<Tag>
+ */
+ private function findHandlerClassName(string $tagName, TypeContext $context): string
+ {
+ $handlerClassName = Generic::class;
+ if (isset($this->tagHandlerMappings[$tagName])) {
+ $handlerClassName = $this->tagHandlerMappings[$tagName];
+ } elseif ($this->isAnnotation($tagName)) {
+ // TODO: Annotation support is planned for a later stage and as such is disabled for now
+ $tagName = (string) $this->fqsenResolver->resolve($tagName, $context);
+ if (isset($this->annotationMappings[$tagName])) {
+ $handlerClassName = $this->annotationMappings[$tagName];
+ }
+ }
+
+ return $handlerClassName;
+ }
+
+ /**
+ * Retrieves the arguments that need to be passed to the Factory Method with the given Parameters.
+ *
+ * @param ReflectionParameter[] $parameters
+ * @param mixed[] $locator
+ *
+ * @return mixed[] A series of values that can be passed to the Factory Method of the tag whose parameters
+ * is provided with this method.
+ */
+ private function getArgumentsForParametersFromWiring(array $parameters, array $locator): array
+ {
+ $arguments = [];
+ foreach ($parameters as $parameter) {
+ $type = $parameter->getType();
+ $typeHint = null;
+ if ($type instanceof ReflectionNamedType) {
+ $typeHint = $type->getName();
+ if ($typeHint === 'self') {
+ $declaringClass = $parameter->getDeclaringClass();
+ if ($declaringClass !== null) {
+ $typeHint = $declaringClass->getName();
+ }
+ }
+ }
+
+ if (isset($locator[$typeHint])) {
+ $arguments[] = $locator[$typeHint];
+ continue;
+ }
+
+ $parameterName = $parameter->getName();
+ if (isset($locator[$parameterName])) {
+ $arguments[] = $locator[$parameterName];
+ continue;
+ }
+
+ $arguments[] = null;
+ }
+
+ return $arguments;
+ }
+
+ /**
+ * Retrieves a series of ReflectionParameter objects for the static 'create' method of the given
+ * tag handler class name.
+ *
+ * @param class-string $handlerClassName
+ *
+ * @return ReflectionParameter[]
+ */
+ private function fetchParametersForHandlerFactoryMethod(string $handlerClassName): array
+ {
+ if (!isset($this->tagHandlerParameterCache[$handlerClassName])) {
+ $methodReflection = new ReflectionMethod($handlerClassName, 'create');
+ $this->tagHandlerParameterCache[$handlerClassName] = $methodReflection->getParameters();
+ }
+
+ return $this->tagHandlerParameterCache[$handlerClassName];
+ }
+
+ /**
+ * Returns a copy of this class' Service Locator with added dynamic parameters,
+ * such as the tag's name, body and Context.
+ *
+ * @param TypeContext $context The Context (namespace and aliasses) that may be
+ * passed and is used to resolve FQSENs.
+ * @param string $tagName The name of the tag that may be
+ * passed onto the factory method of the Tag class.
+ * @param string $tagBody The body of the tag that may be
+ * passed onto the factory method of the Tag class.
+ *
+ * @return mixed[]
+ */
+ private function getServiceLocatorWithDynamicParameters(
+ TypeContext $context,
+ string $tagName,
+ string $tagBody
+ ): array {
+ return array_merge(
+ $this->serviceLocator,
+ [
+ 'name' => $tagName,
+ 'body' => $tagBody,
+ TypeContext::class => $context,
+ ]
+ );
+ }
+
+ /**
+ * Returns whether the given tag belongs to an annotation.
+ *
+ * @todo this method should be populated once we implement Annotation notation support.
+ */
+ private function isAnnotation(string $tagContent): bool
+ {
+ // 1. Contains a namespace separator
+ // 2. Contains parenthesis
+ // 3. Is present in a list of known annotations (make the algorithm smart by first checking is the last part
+ // of the annotation class name matches the found tag name
+
+ return false;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php
new file mode 100644
index 000000000..7cf07b4dd
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tag.php
@@ -0,0 +1,31 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock;
+
+use phpDocumentor\Reflection\DocBlock\Tags\Formatter;
+
+interface Tag
+{
+ public function getName(): string;
+
+ /**
+ * @return Tag|mixed Class that implements Tag
+ * @phpstan-return ?Tag
+ */
+ public static function create(string $body);
+
+ public function render(?Formatter $formatter = null): string;
+
+ public function __toString(): string;
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php
new file mode 100644
index 000000000..c0868dcbe
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/TagFactory.php
@@ -0,0 +1,84 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock;
+
+use InvalidArgumentException;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+
+interface TagFactory
+{
+ /**
+ * Adds a parameter to the service locator that can be injected in a tag's factory method.
+ *
+ * When calling a tag's "create" method we always check the signature for dependencies to inject. One way is to
+ * typehint a parameter in the signature so that we can use that interface or class name to inject a dependency
+ * (see {@see addService()} for more information on that).
+ *
+ * Another way is to check the name of the argument against the names in the Service Locator. With this method
+ * you can add a variable that will be inserted when a tag's create method is not typehinted and has a matching
+ * name.
+ *
+ * Be aware that there are two reserved names:
+ *
+ * - name, representing the name of the tag.
+ * - body, representing the complete body of the tag.
+ *
+ * These parameters are injected at the last moment and will override any existing parameter with those names.
+ *
+ * @param mixed $value
+ */
+ public function addParameter(string $name, $value): void;
+
+ /**
+ * Factory method responsible for instantiating the correct sub type.
+ *
+ * @param string $tagLine The text for this tag, including description.
+ *
+ * @return Tag A new tag object.
+ *
+ * @throws InvalidArgumentException If an invalid tag line was presented.
+ */
+ public function create(string $tagLine, ?TypeContext $context = null): Tag;
+
+ /**
+ * Registers a service with the Service Locator using the FQCN of the class or the alias, if provided.
+ *
+ * When calling a tag's "create" method we always check the signature for dependencies to inject. If a parameter
+ * has a typehint then the ServiceLocator is queried to see if a Service is registered for that typehint.
+ *
+ * Because interfaces are regularly used as type-hints this method provides an alias parameter; if the FQCN of the
+ * interface is passed as alias then every time that interface is requested the provided service will be returned.
+ */
+ public function addService(object $service): void;
+
+ /**
+ * Registers a handler for tags.
+ *
+ * If you want to use your own tags then you can use this method to instruct the TagFactory
+ * to register the name of a tag with the FQCN of a 'Tag Handler'. The Tag handler should implement
+ * the {@see Tag} interface (and thus the create method).
+ *
+ * @param string $tagName Name of tag to register a handler for. When registering a namespaced
+ * tag, the full name, along with a prefixing slash MUST be provided.
+ * @param class-string<Tag> $handler FQCN of handler.
+ *
+ * @throws InvalidArgumentException If the tag name is not a string.
+ * @throws InvalidArgumentException If the tag name is namespaced (contains backslashes) but
+ * does not start with a backslash.
+ * @throws InvalidArgumentException If the handler is not a string.
+ * @throws InvalidArgumentException If the handler is not an existing class.
+ * @throws InvalidArgumentException If the handler does not implement the {@see Tag} interface.
+ */
+ public function registerTagHandler(string $tagName, string $handler): void;
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php
new file mode 100644
index 000000000..ae09ecf42
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Author.php
@@ -0,0 +1,102 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use InvalidArgumentException;
+
+use function filter_var;
+use function preg_match;
+use function trim;
+
+use const FILTER_VALIDATE_EMAIL;
+
+/**
+ * Reflection class for an {@}author tag in a Docblock.
+ */
+final class Author extends BaseTag implements Factory\StaticMethod
+{
+ /** @var string register that this is the author tag. */
+ protected $name = 'author';
+
+ /** @var string The name of the author */
+ private $authorName;
+
+ /** @var string The email of the author */
+ private $authorEmail;
+
+ /**
+ * Initializes this tag with the author name and e-mail.
+ */
+ public function __construct(string $authorName, string $authorEmail)
+ {
+ if ($authorEmail && !filter_var($authorEmail, FILTER_VALIDATE_EMAIL)) {
+ throw new InvalidArgumentException('The author tag does not have a valid e-mail address');
+ }
+
+ $this->authorName = $authorName;
+ $this->authorEmail = $authorEmail;
+ }
+
+ /**
+ * Gets the author's name.
+ *
+ * @return string The author's name.
+ */
+ public function getAuthorName(): string
+ {
+ return $this->authorName;
+ }
+
+ /**
+ * Returns the author's email.
+ *
+ * @return string The author's email.
+ */
+ public function getEmail(): string
+ {
+ return $this->authorEmail;
+ }
+
+ /**
+ * Returns this tag in string form.
+ */
+ public function __toString(): string
+ {
+ if ($this->authorEmail) {
+ $authorEmail = '<' . $this->authorEmail . '>';
+ } else {
+ $authorEmail = '';
+ }
+
+ $authorName = $this->authorName;
+
+ return $authorName . ($authorEmail !== '' ? ($authorName !== '' ? ' ' : '') . $authorEmail : '');
+ }
+
+ /**
+ * Attempts to create a new Author object based on the tag body.
+ */
+ public static function create(string $body): ?self
+ {
+ $splitTagContent = preg_match('/^([^\<]*)(?:\<([^\>]*)\>)?$/u', $body, $matches);
+ if (!$splitTagContent) {
+ return null;
+ }
+
+ $authorName = trim($matches[1]);
+ $email = isset($matches[2]) ? trim($matches[2]) : '';
+
+ return new static($authorName, $email);
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php
new file mode 100644
index 000000000..a28d5bf98
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/BaseTag.php
@@ -0,0 +1,53 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock;
+use phpDocumentor\Reflection\DocBlock\Description;
+
+/**
+ * Parses a tag definition for a DocBlock.
+ */
+abstract class BaseTag implements DocBlock\Tag
+{
+ /** @var string Name of the tag */
+ protected $name = '';
+
+ /** @var Description|null Description of the tag. */
+ protected $description;
+
+ /**
+ * Gets the name of this tag.
+ *
+ * @return string The name of this tag.
+ */
+ public function getName(): string
+ {
+ return $this->name;
+ }
+
+ public function getDescription(): ?Description
+ {
+ return $this->description;
+ }
+
+ public function render(?Formatter $formatter = null): string
+ {
+ if ($formatter === null) {
+ $formatter = new Formatter\PassthroughFormatter();
+ }
+
+ return $formatter->format($this);
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php
new file mode 100644
index 000000000..3eff9d8bc
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Covers.php
@@ -0,0 +1,101 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Fqsen;
+use phpDocumentor\Reflection\FqsenResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Utils;
+use Webmozart\Assert\Assert;
+
+use function array_key_exists;
+use function explode;
+
+/**
+ * Reflection class for a @covers tag in a Docblock.
+ */
+final class Covers extends BaseTag implements Factory\StaticMethod
+{
+ /** @var string */
+ protected $name = 'covers';
+
+ /** @var Fqsen */
+ private $refers;
+
+ /**
+ * Initializes this tag.
+ */
+ public function __construct(Fqsen $refers, ?Description $description = null)
+ {
+ $this->refers = $refers;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?FqsenResolver $resolver = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::stringNotEmpty($body);
+ Assert::notNull($descriptionFactory);
+ Assert::notNull($resolver);
+
+ $parts = Utils::pregSplit('/\s+/Su', $body, 2);
+
+ return new static(
+ self::resolveFqsen($parts[0], $resolver, $context),
+ $descriptionFactory->create($parts[1] ?? '', $context)
+ );
+ }
+
+ private static function resolveFqsen(string $parts, ?FqsenResolver $fqsenResolver, ?TypeContext $context): Fqsen
+ {
+ Assert::notNull($fqsenResolver);
+ $fqsenParts = explode('::', $parts);
+ $resolved = $fqsenResolver->resolve($fqsenParts[0], $context);
+
+ if (!array_key_exists(1, $fqsenParts)) {
+ return $resolved;
+ }
+
+ return new Fqsen($resolved . '::' . $fqsenParts[1]);
+ }
+
+ /**
+ * Returns the structural element this tag refers to.
+ */
+ public function getReference(): Fqsen
+ {
+ return $this->refers;
+ }
+
+ /**
+ * Returns a string representation of this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $refers = (string) $this->refers;
+
+ return $refers . ($description !== '' ? ($refers !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php
new file mode 100644
index 000000000..dbcad28c0
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Deprecated.php
@@ -0,0 +1,109 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use Webmozart\Assert\Assert;
+
+use function preg_match;
+
+/**
+ * Reflection class for a {@}deprecated tag in a Docblock.
+ */
+final class Deprecated extends BaseTag implements Factory\StaticMethod
+{
+ /** @var string */
+ protected $name = 'deprecated';
+
+ /**
+ * PCRE regular expression matching a version vector.
+ * Assumes the "x" modifier.
+ */
+ public const REGEX_VECTOR = '(?:
+ # Normal release vectors.
+ \d\S*
+ |
+ # VCS version vectors. Per PHPCS, they are expected to
+ # follow the form of the VCS name, followed by ":", followed
+ # by the version vector itself.
+ # By convention, popular VCSes like CVS, SVN and GIT use "$"
+ # around the actual version vector.
+ [^\s\:]+\:\s*\$[^\$]+\$
+ )';
+
+ /** @var string|null The version vector. */
+ private $version;
+
+ public function __construct(?string $version = null, ?Description $description = null)
+ {
+ Assert::nullOrNotEmpty($version);
+
+ $this->version = $version;
+ $this->description = $description;
+ }
+
+ /**
+ * @return static
+ */
+ public static function create(
+ ?string $body,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ if (empty($body)) {
+ return new static();
+ }
+
+ $matches = [];
+ if (!preg_match('/^(' . self::REGEX_VECTOR . ')\s*(.+)?$/sux', $body, $matches)) {
+ return new static(
+ null,
+ $descriptionFactory !== null ? $descriptionFactory->create($body, $context) : null
+ );
+ }
+
+ Assert::notNull($descriptionFactory);
+
+ return new static(
+ $matches[1],
+ $descriptionFactory->create($matches[2] ?? '', $context)
+ );
+ }
+
+ /**
+ * Gets the version section of the tag.
+ */
+ public function getVersion(): ?string
+ {
+ return $this->version;
+ }
+
+ /**
+ * Returns a string representation for this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $version = (string) $this->version;
+
+ return $version . ($description !== '' ? ($version !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php
new file mode 100644
index 000000000..825355aaf
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Example.php
@@ -0,0 +1,200 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Tag;
+use Webmozart\Assert\Assert;
+
+use function array_key_exists;
+use function preg_match;
+use function rawurlencode;
+use function str_replace;
+use function strpos;
+use function trim;
+
+/**
+ * Reflection class for a {@}example tag in a Docblock.
+ */
+final class Example implements Tag, Factory\StaticMethod
+{
+ /** @var string Path to a file to use as an example. May also be an absolute URI. */
+ private $filePath;
+
+ /**
+ * @var bool Whether the file path component represents an URI. This determines how the file portion
+ * appears at {@link getContent()}.
+ */
+ private $isURI;
+
+ /** @var int */
+ private $startingLine;
+
+ /** @var int */
+ private $lineCount;
+
+ /** @var string|null */
+ private $content;
+
+ public function __construct(
+ string $filePath,
+ bool $isURI,
+ int $startingLine,
+ int $lineCount,
+ ?string $content
+ ) {
+ Assert::stringNotEmpty($filePath);
+ Assert::greaterThanEq($startingLine, 1);
+ Assert::greaterThanEq($lineCount, 0);
+
+ $this->filePath = $filePath;
+ $this->startingLine = $startingLine;
+ $this->lineCount = $lineCount;
+ if ($content !== null) {
+ $this->content = trim($content);
+ }
+
+ $this->isURI = $isURI;
+ }
+
+ public function getContent(): string
+ {
+ if ($this->content === null || $this->content === '') {
+ $filePath = $this->filePath;
+ if ($this->isURI) {
+ $filePath = $this->isUriRelative($this->filePath)
+ ? str_replace('%2F', '/', rawurlencode($this->filePath))
+ : $this->filePath;
+ }
+
+ return trim($filePath);
+ }
+
+ return $this->content;
+ }
+
+ public function getDescription(): ?string
+ {
+ return $this->content;
+ }
+
+ public static function create(string $body): ?Tag
+ {
+ // File component: File path in quotes or File URI / Source information
+ if (!preg_match('/^\s*(?:(\"[^\"]+\")|(\S+))(?:\s+(.*))?$/sux', $body, $matches)) {
+ return null;
+ }
+
+ $filePath = null;
+ $fileUri = null;
+ if ($matches[1] !== '') {
+ $filePath = $matches[1];
+ } else {
+ $fileUri = $matches[2];
+ }
+
+ $startingLine = 1;
+ $lineCount = 0;
+ $description = null;
+
+ if (array_key_exists(3, $matches)) {
+ $description = $matches[3];
+
+ // Starting line / Number of lines / Description
+ if (preg_match('/^([1-9]\d*)(?:\s+((?1))\s*)?(.*)$/sux', $matches[3], $contentMatches)) {
+ $startingLine = (int) $contentMatches[1];
+ if (isset($contentMatches[2])) {
+ $lineCount = (int) $contentMatches[2];
+ }
+
+ if (array_key_exists(3, $contentMatches)) {
+ $description = $contentMatches[3];
+ }
+ }
+ }
+
+ return new static(
+ $filePath ?? ($fileUri ?? ''),
+ $fileUri !== null,
+ $startingLine,
+ $lineCount,
+ $description
+ );
+ }
+
+ /**
+ * Returns the file path.
+ *
+ * @return string Path to a file to use as an example.
+ * May also be an absolute URI.
+ */
+ public function getFilePath(): string
+ {
+ return trim($this->filePath, '"');
+ }
+
+ /**
+ * Returns a string representation for this tag.
+ */
+ public function __toString(): string
+ {
+ $filePath = $this->filePath;
+ $isDefaultLine = $this->startingLine === 1 && $this->lineCount === 0;
+ $startingLine = !$isDefaultLine ? (string) $this->startingLine : '';
+ $lineCount = !$isDefaultLine ? (string) $this->lineCount : '';
+ $content = (string) $this->content;
+
+ return $filePath
+ . ($startingLine !== ''
+ ? ($filePath !== '' ? ' ' : '') . $startingLine
+ : '')
+ . ($lineCount !== ''
+ ? ($filePath !== '' || $startingLine !== '' ? ' ' : '') . $lineCount
+ : '')
+ . ($content !== ''
+ ? ($filePath !== '' || $startingLine !== '' || $lineCount !== '' ? ' ' : '') . $content
+ : '');
+ }
+
+ /**
+ * Returns true if the provided URI is relative or contains a complete scheme (and thus is absolute).
+ */
+ private function isUriRelative(string $uri): bool
+ {
+ return strpos($uri, ':') === false;
+ }
+
+ public function getStartingLine(): int
+ {
+ return $this->startingLine;
+ }
+
+ public function getLineCount(): int
+ {
+ return $this->lineCount;
+ }
+
+ public function getName(): string
+ {
+ return 'example';
+ }
+
+ public function render(?Formatter $formatter = null): string
+ {
+ if ($formatter === null) {
+ $formatter = new Formatter\PassthroughFormatter();
+ }
+
+ return $formatter->format($this);
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php
new file mode 100644
index 000000000..f6f0bb5a4
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Factory/StaticMethod.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags\Factory;
+
+/**
+ * @deprecated This contract is totally covered by Tag contract. Every class using StaticMethod also use Tag
+ */
+interface StaticMethod
+{
+ /**
+ * @return mixed
+ */
+ public static function create(string $body);
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php
new file mode 100644
index 000000000..36b9983ea
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Tag;
+
+interface Formatter
+{
+ /**
+ * Formats a tag into a string representation according to a specific format, such as Markdown.
+ */
+ public function format(Tag $tag): string;
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php
new file mode 100644
index 000000000..946443438
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/AlignFormatter.php
@@ -0,0 +1,50 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags\Formatter;
+
+use phpDocumentor\Reflection\DocBlock\Tag;
+use phpDocumentor\Reflection\DocBlock\Tags\Formatter;
+
+use function max;
+use function str_repeat;
+use function strlen;
+
+class AlignFormatter implements Formatter
+{
+ /** @var int The maximum tag name length. */
+ protected $maxLen = 0;
+
+ /**
+ * @param Tag[] $tags All tags that should later be aligned with the formatter.
+ */
+ public function __construct(array $tags)
+ {
+ foreach ($tags as $tag) {
+ $this->maxLen = max($this->maxLen, strlen($tag->getName()));
+ }
+ }
+
+ /**
+ * Formats the given tag to return a simple plain text version.
+ */
+ public function format(Tag $tag): string
+ {
+ return '@' . $tag->getName() .
+ str_repeat(
+ ' ',
+ $this->maxLen - strlen($tag->getName()) + 1
+ ) .
+ $tag;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php
new file mode 100644
index 000000000..2afdfe55d
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Formatter/PassthroughFormatter.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags\Formatter;
+
+use phpDocumentor\Reflection\DocBlock\Tag;
+use phpDocumentor\Reflection\DocBlock\Tags\Formatter;
+
+use function trim;
+
+class PassthroughFormatter implements Formatter
+{
+ /**
+ * Formats the given tag to return a simple plain text version.
+ */
+ public function format(Tag $tag): string
+ {
+ return trim('@' . $tag->getName() . ' ' . $tag);
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php
new file mode 100644
index 000000000..bc1ab10c1
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Generic.php
@@ -0,0 +1,89 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use InvalidArgumentException;
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\DocBlock\StandardTagFactory;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use Webmozart\Assert\Assert;
+
+use function preg_match;
+
+/**
+ * Parses a tag definition for a DocBlock.
+ */
+final class Generic extends BaseTag implements Factory\StaticMethod
+{
+ /**
+ * Parses a tag and populates the member variables.
+ *
+ * @param string $name Name of the tag.
+ * @param Description $description The contents of the given tag.
+ */
+ public function __construct(string $name, ?Description $description = null)
+ {
+ $this->validateTagName($name);
+
+ $this->name = $name;
+ $this->description = $description;
+ }
+
+ /**
+ * Creates a new tag that represents any unknown tag type.
+ *
+ * @return static
+ */
+ public static function create(
+ string $body,
+ string $name = '',
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::stringNotEmpty($name);
+ Assert::notNull($descriptionFactory);
+
+ $description = $body !== '' ? $descriptionFactory->create($body, $context) : null;
+
+ return new static($name, $description);
+ }
+
+ /**
+ * Returns the tag as a serialized string
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ return $description;
+ }
+
+ /**
+ * Validates if the tag name matches the expected format, otherwise throws an exception.
+ */
+ private function validateTagName(string $name): void
+ {
+ if (!preg_match('/^' . StandardTagFactory::REGEX_TAGNAME . '$/u', $name)) {
+ throw new InvalidArgumentException(
+ 'The tag name "' . $name . '" is not wellformed. Tags may only consist of letters, underscores, '
+ . 'hyphens and backslashes.'
+ );
+ }
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/InvalidTag.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/InvalidTag.php
new file mode 100644
index 000000000..4e6abb8c4
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/InvalidTag.php
@@ -0,0 +1,145 @@
+<?php
+
+declare(strict_types=1);
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use Closure;
+use Exception;
+use phpDocumentor\Reflection\DocBlock\Tag;
+use ReflectionClass;
+use ReflectionException;
+use ReflectionFunction;
+use Throwable;
+
+use function array_map;
+use function get_class;
+use function get_resource_type;
+use function is_array;
+use function is_object;
+use function is_resource;
+use function sprintf;
+
+/**
+ * This class represents an exception during the tag creation
+ *
+ * Since the internals of the library are relaying on the correct syntax of a docblock
+ * we cannot simply throw exceptions at all time because the exceptions will break the creation of a
+ * docklock. Just silently ignore the exceptions is not an option because the user as an issue to fix.
+ *
+ * This tag holds that error information until a using application is able to display it. The object wil just behave
+ * like any normal tag. So the normal application flow will not break.
+ */
+final class InvalidTag implements Tag
+{
+ /** @var string */
+ private $name;
+
+ /** @var string */
+ private $body;
+
+ /** @var Throwable|null */
+ private $throwable;
+
+ private function __construct(string $name, string $body)
+ {
+ $this->name = $name;
+ $this->body = $body;
+ }
+
+ public function getException(): ?Throwable
+ {
+ return $this->throwable;
+ }
+
+ public function getName(): string
+ {
+ return $this->name;
+ }
+
+ public static function create(string $body, string $name = ''): self
+ {
+ return new self($name, $body);
+ }
+
+ public function withError(Throwable $exception): self
+ {
+ $this->flattenExceptionBacktrace($exception);
+ $tag = new self($this->name, $this->body);
+ $tag->throwable = $exception;
+
+ return $tag;
+ }
+
+ /**
+ * Removes all complex types from backtrace
+ *
+ * Not all objects are serializable. So we need to remove them from the
+ * stored exception to be sure that we do not break existing library usage.
+ */
+ private function flattenExceptionBacktrace(Throwable $exception): void
+ {
+ $traceProperty = (new ReflectionClass(Exception::class))->getProperty('trace');
+ $traceProperty->setAccessible(true);
+
+ do {
+ $trace = $exception->getTrace();
+ if (isset($trace[0]['args'])) {
+ $trace = array_map(
+ function (array $call): array {
+ $call['args'] = array_map([$this, 'flattenArguments'], $call['args'] ?? []);
+
+ return $call;
+ },
+ $trace
+ );
+ }
+
+ $traceProperty->setValue($exception, $trace);
+ $exception = $exception->getPrevious();
+ } while ($exception !== null);
+
+ $traceProperty->setAccessible(false);
+ }
+
+ /**
+ * @param mixed $value
+ *
+ * @return mixed
+ *
+ * @throws ReflectionException
+ */
+ private function flattenArguments($value)
+ {
+ if ($value instanceof Closure) {
+ $closureReflection = new ReflectionFunction($value);
+ $value = sprintf(
+ '(Closure at %s:%s)',
+ $closureReflection->getFileName(),
+ $closureReflection->getStartLine()
+ );
+ } elseif (is_object($value)) {
+ $value = sprintf('object(%s)', get_class($value));
+ } elseif (is_resource($value)) {
+ $value = sprintf('resource(%s)', get_resource_type($value));
+ } elseif (is_array($value)) {
+ $value = array_map([$this, 'flattenArguments'], $value);
+ }
+
+ return $value;
+ }
+
+ public function render(?Formatter $formatter = null): string
+ {
+ if ($formatter === null) {
+ $formatter = new Formatter\PassthroughFormatter();
+ }
+
+ return $formatter->format($this);
+ }
+
+ public function __toString(): string
+ {
+ return $this->body;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php
new file mode 100644
index 000000000..ee242e3b2
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Link.php
@@ -0,0 +1,78 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Utils;
+use Webmozart\Assert\Assert;
+
+/**
+ * Reflection class for a {@}link tag in a Docblock.
+ */
+final class Link extends BaseTag implements Factory\StaticMethod
+{
+ /** @var string */
+ protected $name = 'link';
+
+ /** @var string */
+ private $link;
+
+ /**
+ * Initializes a link to a URL.
+ */
+ public function __construct(string $link, ?Description $description = null)
+ {
+ $this->link = $link;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::notNull($descriptionFactory);
+
+ $parts = Utils::pregSplit('/\s+/Su', $body, 2);
+ $description = isset($parts[1]) ? $descriptionFactory->create($parts[1], $context) : null;
+
+ return new static($parts[0], $description);
+ }
+
+ /**
+ * Gets the link
+ */
+ public function getLink(): string
+ {
+ return $this->link;
+ }
+
+ /**
+ * Returns a string representation for this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $link = $this->link;
+
+ return $link . ($description !== '' ? ($link !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php
new file mode 100644
index 000000000..f08bfffda
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Method.php
@@ -0,0 +1,279 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use InvalidArgumentException;
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\TypeResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Types\Mixed_;
+use phpDocumentor\Reflection\Types\Void_;
+use Webmozart\Assert\Assert;
+
+use function array_keys;
+use function explode;
+use function implode;
+use function is_string;
+use function preg_match;
+use function sort;
+use function strpos;
+use function substr;
+use function trim;
+use function var_export;
+
+/**
+ * Reflection class for an {@}method in a Docblock.
+ */
+final class Method extends BaseTag implements Factory\StaticMethod
+{
+ /** @var string */
+ protected $name = 'method';
+
+ /** @var string */
+ private $methodName;
+
+ /**
+ * @phpstan-var array<int, array{name: string, type: Type}>
+ * @var array<int, array<string, Type|string>>
+ */
+ private $arguments;
+
+ /** @var bool */
+ private $isStatic;
+
+ /** @var Type */
+ private $returnType;
+
+ /**
+ * @param array<int, array<string, Type|string>> $arguments
+ * @phpstan-param array<int, array{name: string, type: Type}|string> $arguments
+ */
+ public function __construct(
+ string $methodName,
+ array $arguments = [],
+ ?Type $returnType = null,
+ bool $static = false,
+ ?Description $description = null
+ ) {
+ Assert::stringNotEmpty($methodName);
+
+ if ($returnType === null) {
+ $returnType = new Void_();
+ }
+
+ $this->methodName = $methodName;
+ $this->arguments = $this->filterArguments($arguments);
+ $this->returnType = $returnType;
+ $this->isStatic = $static;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?TypeResolver $typeResolver = null,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): ?self {
+ Assert::stringNotEmpty($body);
+ Assert::notNull($typeResolver);
+ Assert::notNull($descriptionFactory);
+
+ // 1. none or more whitespace
+ // 2. optionally the keyword "static" followed by whitespace
+ // 3. optionally a word with underscores followed by whitespace : as
+ // type for the return value
+ // 4. then optionally a word with underscores followed by () and
+ // whitespace : as method name as used by phpDocumentor
+ // 5. then a word with underscores, followed by ( and any character
+ // until a ) and whitespace : as method name with signature
+ // 6. any remaining text : as description
+ if (
+ !preg_match(
+ '/^
+ # Static keyword
+ # Declares a static method ONLY if type is also present
+ (?:
+ (static)
+ \s+
+ )?
+ # Return type
+ (?:
+ (
+ (?:[\w\|_\\\\]*\$this[\w\|_\\\\]*)
+ |
+ (?:
+ (?:[\w\|_\\\\]+)
+ # array notation
+ (?:\[\])*
+ )*+
+ )
+ \s+
+ )?
+ # Method name
+ ([\w_]+)
+ # Arguments
+ (?:
+ \(([^\)]*)\)
+ )?
+ \s*
+ # Description
+ (.*)
+ $/sux',
+ $body,
+ $matches
+ )
+ ) {
+ return null;
+ }
+
+ [, $static, $returnType, $methodName, $argumentLines, $description] = $matches;
+
+ $static = $static === 'static';
+
+ if ($returnType === '') {
+ $returnType = 'void';
+ }
+
+ $returnType = $typeResolver->resolve($returnType, $context);
+ $description = $descriptionFactory->create($description, $context);
+
+ /** @phpstan-var array<int, array{name: string, type: Type}> $arguments */
+ $arguments = [];
+ if ($argumentLines !== '') {
+ $argumentsExploded = explode(',', $argumentLines);
+ foreach ($argumentsExploded as $argument) {
+ $argument = explode(' ', self::stripRestArg(trim($argument)), 2);
+ if (strpos($argument[0], '$') === 0) {
+ $argumentName = substr($argument[0], 1);
+ $argumentType = new Mixed_();
+ } else {
+ $argumentType = $typeResolver->resolve($argument[0], $context);
+ $argumentName = '';
+ if (isset($argument[1])) {
+ $argument[1] = self::stripRestArg($argument[1]);
+ $argumentName = substr($argument[1], 1);
+ }
+ }
+
+ $arguments[] = ['name' => $argumentName, 'type' => $argumentType];
+ }
+ }
+
+ return new static($methodName, $arguments, $returnType, $static, $description);
+ }
+
+ /**
+ * Retrieves the method name.
+ */
+ public function getMethodName(): string
+ {
+ return $this->methodName;
+ }
+
+ /**
+ * @return array<int, array<string, Type|string>>
+ * @phpstan-return array<int, array{name: string, type: Type}>
+ */
+ public function getArguments(): array
+ {
+ return $this->arguments;
+ }
+
+ /**
+ * Checks whether the method tag describes a static method or not.
+ *
+ * @return bool TRUE if the method declaration is for a static method, FALSE otherwise.
+ */
+ public function isStatic(): bool
+ {
+ return $this->isStatic;
+ }
+
+ public function getReturnType(): Type
+ {
+ return $this->returnType;
+ }
+
+ public function __toString(): string
+ {
+ $arguments = [];
+ foreach ($this->arguments as $argument) {
+ $arguments[] = $argument['type'] . ' $' . $argument['name'];
+ }
+
+ $argumentStr = '(' . implode(', ', $arguments) . ')';
+
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $static = $this->isStatic ? 'static' : '';
+
+ $returnType = (string) $this->returnType;
+
+ $methodName = $this->methodName;
+
+ return $static
+ . ($returnType !== '' ? ($static !== '' ? ' ' : '') . $returnType : '')
+ . ($methodName !== '' ? ($static !== '' || $returnType !== '' ? ' ' : '') . $methodName : '')
+ . $argumentStr
+ . ($description !== '' ? ' ' . $description : '');
+ }
+
+ /**
+ * @param mixed[][]|string[] $arguments
+ * @phpstan-param array<int, array{name: string, type: Type}|string> $arguments
+ *
+ * @return mixed[][]
+ * @phpstan-return array<int, array{name: string, type: Type}>
+ */
+ private function filterArguments(array $arguments = []): array
+ {
+ $result = [];
+ foreach ($arguments as $argument) {
+ if (is_string($argument)) {
+ $argument = ['name' => $argument];
+ }
+
+ if (!isset($argument['type'])) {
+ $argument['type'] = new Mixed_();
+ }
+
+ $keys = array_keys($argument);
+ sort($keys);
+ if ($keys !== ['name', 'type']) {
+ throw new InvalidArgumentException(
+ 'Arguments can only have the "name" and "type" fields, found: ' . var_export($keys, true)
+ );
+ }
+
+ $result[] = $argument;
+ }
+
+ return $result;
+ }
+
+ private static function stripRestArg(string $argument): string
+ {
+ if (strpos($argument, '...') === 0) {
+ $argument = trim(substr($argument, 3));
+ }
+
+ return $argument;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php
new file mode 100644
index 000000000..3399649b8
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Param.php
@@ -0,0 +1,174 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\TypeResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Utils;
+use Webmozart\Assert\Assert;
+
+use function array_shift;
+use function array_unshift;
+use function implode;
+use function strpos;
+use function substr;
+
+use const PREG_SPLIT_DELIM_CAPTURE;
+
+/**
+ * Reflection class for the {@}param tag in a Docblock.
+ */
+final class Param extends TagWithType implements Factory\StaticMethod
+{
+ /** @var string|null */
+ private $variableName;
+
+ /** @var bool determines whether this is a variadic argument */
+ private $isVariadic;
+
+ /** @var bool determines whether this is passed by reference */
+ private $isReference;
+
+ public function __construct(
+ ?string $variableName,
+ ?Type $type = null,
+ bool $isVariadic = false,
+ ?Description $description = null,
+ bool $isReference = false
+ ) {
+ $this->name = 'param';
+ $this->variableName = $variableName;
+ $this->type = $type;
+ $this->isVariadic = $isVariadic;
+ $this->description = $description;
+ $this->isReference = $isReference;
+ }
+
+ public static function create(
+ string $body,
+ ?TypeResolver $typeResolver = null,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::stringNotEmpty($body);
+ Assert::notNull($typeResolver);
+ Assert::notNull($descriptionFactory);
+
+ [$firstPart, $body] = self::extractTypeFromBody($body);
+
+ $type = null;
+ $parts = Utils::pregSplit('/(\s+)/Su', $body, 2, PREG_SPLIT_DELIM_CAPTURE);
+ $variableName = '';
+ $isVariadic = false;
+ $isReference = false;
+
+ // if the first item that is encountered is not a variable; it is a type
+ if ($firstPart && !self::strStartsWithVariable($firstPart)) {
+ $type = $typeResolver->resolve($firstPart, $context);
+ } else {
+ // first part is not a type; we should prepend it to the parts array for further processing
+ array_unshift($parts, $firstPart);
+ }
+
+ // if the next item starts with a $ or ...$ or &$ or &...$ it must be the variable name
+ if (isset($parts[0]) && self::strStartsWithVariable($parts[0])) {
+ $variableName = array_shift($parts);
+ if ($type) {
+ array_shift($parts);
+ }
+
+ Assert::notNull($variableName);
+
+ if (strpos($variableName, '$') === 0) {
+ $variableName = substr($variableName, 1);
+ } elseif (strpos($variableName, '&$') === 0) {
+ $isReference = true;
+ $variableName = substr($variableName, 2);
+ } elseif (strpos($variableName, '...$') === 0) {
+ $isVariadic = true;
+ $variableName = substr($variableName, 4);
+ } elseif (strpos($variableName, '&...$') === 0) {
+ $isVariadic = true;
+ $isReference = true;
+ $variableName = substr($variableName, 5);
+ }
+ }
+
+ $description = $descriptionFactory->create(implode('', $parts), $context);
+
+ return new static($variableName, $type, $isVariadic, $description, $isReference);
+ }
+
+ /**
+ * Returns the variable's name.
+ */
+ public function getVariableName(): ?string
+ {
+ return $this->variableName;
+ }
+
+ /**
+ * Returns whether this tag is variadic.
+ */
+ public function isVariadic(): bool
+ {
+ return $this->isVariadic;
+ }
+
+ /**
+ * Returns whether this tag is passed by reference.
+ */
+ public function isReference(): bool
+ {
+ return $this->isReference;
+ }
+
+ /**
+ * Returns a string representation for this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $variableName = '';
+ if ($this->variableName) {
+ $variableName .= ($this->isReference ? '&' : '') . ($this->isVariadic ? '...' : '');
+ $variableName .= '$' . $this->variableName;
+ }
+
+ $type = (string) $this->type;
+
+ return $type
+ . ($variableName !== '' ? ($type !== '' ? ' ' : '') . $variableName : '')
+ . ($description !== '' ? ($type !== '' || $variableName !== '' ? ' ' : '') . $description : '');
+ }
+
+ private static function strStartsWithVariable(string $str): bool
+ {
+ return strpos($str, '$') === 0
+ ||
+ strpos($str, '...$') === 0
+ ||
+ strpos($str, '&$') === 0
+ ||
+ strpos($str, '&...$') === 0;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php
new file mode 100644
index 000000000..2521fb3f0
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Property.php
@@ -0,0 +1,121 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\TypeResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Utils;
+use Webmozart\Assert\Assert;
+
+use function array_shift;
+use function array_unshift;
+use function implode;
+use function strpos;
+use function substr;
+
+use const PREG_SPLIT_DELIM_CAPTURE;
+
+/**
+ * Reflection class for a {@}property tag in a Docblock.
+ */
+final class Property extends TagWithType implements Factory\StaticMethod
+{
+ /** @var string|null */
+ protected $variableName;
+
+ public function __construct(?string $variableName, ?Type $type = null, ?Description $description = null)
+ {
+ Assert::string($variableName);
+
+ $this->name = 'property';
+ $this->variableName = $variableName;
+ $this->type = $type;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?TypeResolver $typeResolver = null,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::stringNotEmpty($body);
+ Assert::notNull($typeResolver);
+ Assert::notNull($descriptionFactory);
+
+ [$firstPart, $body] = self::extractTypeFromBody($body);
+ $type = null;
+ $parts = Utils::pregSplit('/(\s+)/Su', $body, 2, PREG_SPLIT_DELIM_CAPTURE);
+ $variableName = '';
+
+ // if the first item that is encountered is not a variable; it is a type
+ if ($firstPart && $firstPart[0] !== '$') {
+ $type = $typeResolver->resolve($firstPart, $context);
+ } else {
+ // first part is not a type; we should prepend it to the parts array for further processing
+ array_unshift($parts, $firstPart);
+ }
+
+ // if the next item starts with a $ it must be the variable name
+ if (isset($parts[0]) && strpos($parts[0], '$') === 0) {
+ $variableName = array_shift($parts);
+ if ($type) {
+ array_shift($parts);
+ }
+
+ Assert::notNull($variableName);
+
+ $variableName = substr($variableName, 1);
+ }
+
+ $description = $descriptionFactory->create(implode('', $parts), $context);
+
+ return new static($variableName, $type, $description);
+ }
+
+ /**
+ * Returns the variable's name.
+ */
+ public function getVariableName(): ?string
+ {
+ return $this->variableName;
+ }
+
+ /**
+ * Returns a string representation for this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ if ($this->variableName) {
+ $variableName = '$' . $this->variableName;
+ } else {
+ $variableName = '';
+ }
+
+ $type = (string) $this->type;
+
+ return $type
+ . ($variableName !== '' ? ($type !== '' ? ' ' : '') . $variableName : '')
+ . ($description !== '' ? ($type !== '' || $variableName !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php
new file mode 100644
index 000000000..9491b39c3
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyRead.php
@@ -0,0 +1,121 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\TypeResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Utils;
+use Webmozart\Assert\Assert;
+
+use function array_shift;
+use function array_unshift;
+use function implode;
+use function strpos;
+use function substr;
+
+use const PREG_SPLIT_DELIM_CAPTURE;
+
+/**
+ * Reflection class for a {@}property-read tag in a Docblock.
+ */
+final class PropertyRead extends TagWithType implements Factory\StaticMethod
+{
+ /** @var string|null */
+ protected $variableName;
+
+ public function __construct(?string $variableName, ?Type $type = null, ?Description $description = null)
+ {
+ Assert::string($variableName);
+
+ $this->name = 'property-read';
+ $this->variableName = $variableName;
+ $this->type = $type;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?TypeResolver $typeResolver = null,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::stringNotEmpty($body);
+ Assert::notNull($typeResolver);
+ Assert::notNull($descriptionFactory);
+
+ [$firstPart, $body] = self::extractTypeFromBody($body);
+ $type = null;
+ $parts = Utils::pregSplit('/(\s+)/Su', $body, 2, PREG_SPLIT_DELIM_CAPTURE);
+ $variableName = '';
+
+ // if the first item that is encountered is not a variable; it is a type
+ if ($firstPart && $firstPart[0] !== '$') {
+ $type = $typeResolver->resolve($firstPart, $context);
+ } else {
+ // first part is not a type; we should prepend it to the parts array for further processing
+ array_unshift($parts, $firstPart);
+ }
+
+ // if the next item starts with a $ it must be the variable name
+ if (isset($parts[0]) && strpos($parts[0], '$') === 0) {
+ $variableName = array_shift($parts);
+ if ($type) {
+ array_shift($parts);
+ }
+
+ Assert::notNull($variableName);
+
+ $variableName = substr($variableName, 1);
+ }
+
+ $description = $descriptionFactory->create(implode('', $parts), $context);
+
+ return new static($variableName, $type, $description);
+ }
+
+ /**
+ * Returns the variable's name.
+ */
+ public function getVariableName(): ?string
+ {
+ return $this->variableName;
+ }
+
+ /**
+ * Returns a string representation for this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ if ($this->variableName) {
+ $variableName = '$' . $this->variableName;
+ } else {
+ $variableName = '';
+ }
+
+ $type = (string) $this->type;
+
+ return $type
+ . ($variableName !== '' ? ($type !== '' ? ' ' : '') . $variableName : '')
+ . ($description !== '' ? ($type !== '' || $variableName !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php
new file mode 100644
index 000000000..2bfdac6a0
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/PropertyWrite.php
@@ -0,0 +1,121 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\TypeResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Utils;
+use Webmozart\Assert\Assert;
+
+use function array_shift;
+use function array_unshift;
+use function implode;
+use function strpos;
+use function substr;
+
+use const PREG_SPLIT_DELIM_CAPTURE;
+
+/**
+ * Reflection class for a {@}property-write tag in a Docblock.
+ */
+final class PropertyWrite extends TagWithType implements Factory\StaticMethod
+{
+ /** @var string */
+ protected $variableName;
+
+ public function __construct(?string $variableName, ?Type $type = null, ?Description $description = null)
+ {
+ Assert::string($variableName);
+
+ $this->name = 'property-write';
+ $this->variableName = $variableName;
+ $this->type = $type;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?TypeResolver $typeResolver = null,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::stringNotEmpty($body);
+ Assert::notNull($typeResolver);
+ Assert::notNull($descriptionFactory);
+
+ [$firstPart, $body] = self::extractTypeFromBody($body);
+ $type = null;
+ $parts = Utils::pregSplit('/(\s+)/Su', $body, 2, PREG_SPLIT_DELIM_CAPTURE);
+ $variableName = '';
+
+ // if the first item that is encountered is not a variable; it is a type
+ if ($firstPart && $firstPart[0] !== '$') {
+ $type = $typeResolver->resolve($firstPart, $context);
+ } else {
+ // first part is not a type; we should prepend it to the parts array for further processing
+ array_unshift($parts, $firstPart);
+ }
+
+ // if the next item starts with a $ it must be the variable name
+ if (isset($parts[0]) && strpos($parts[0], '$') === 0) {
+ $variableName = array_shift($parts);
+ if ($type) {
+ array_shift($parts);
+ }
+
+ Assert::notNull($variableName);
+
+ $variableName = substr($variableName, 1);
+ }
+
+ $description = $descriptionFactory->create(implode('', $parts), $context);
+
+ return new static($variableName, $type, $description);
+ }
+
+ /**
+ * Returns the variable's name.
+ */
+ public function getVariableName(): ?string
+ {
+ return $this->variableName;
+ }
+
+ /**
+ * Returns a string representation for this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ if ($this->variableName) {
+ $variableName = '$' . $this->variableName;
+ } else {
+ $variableName = '';
+ }
+
+ $type = (string) $this->type;
+
+ return $type
+ . ($variableName !== '' ? ($type !== '' ? ' ' : '') . $variableName : '')
+ . ($description !== '' ? ($type !== '' || $variableName !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php
new file mode 100644
index 000000000..532003dd8
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Fqsen.php
@@ -0,0 +1,38 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags\Reference;
+
+use phpDocumentor\Reflection\Fqsen as RealFqsen;
+
+/**
+ * Fqsen reference used by {@see \phpDocumentor\Reflection\DocBlock\Tags\See}
+ */
+final class Fqsen implements Reference
+{
+ /** @var RealFqsen */
+ private $fqsen;
+
+ public function __construct(RealFqsen $fqsen)
+ {
+ $this->fqsen = $fqsen;
+ }
+
+ /**
+ * @return string string representation of the referenced fqsen
+ */
+ public function __toString(): string
+ {
+ return (string) $this->fqsen;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php
new file mode 100644
index 000000000..e7dea868d
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Reference.php
@@ -0,0 +1,22 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags\Reference;
+
+/**
+ * Interface for references in {@see \phpDocumentor\Reflection\DocBlock\Tags\See}
+ */
+interface Reference
+{
+ public function __toString(): string;
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php
new file mode 100644
index 000000000..edfba3fde
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Reference/Url.php
@@ -0,0 +1,36 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags\Reference;
+
+use Webmozart\Assert\Assert;
+
+/**
+ * Url reference used by {@see \phpDocumentor\Reflection\DocBlock\Tags\See}
+ */
+final class Url implements Reference
+{
+ /** @var string */
+ private $uri;
+
+ public function __construct(string $uri)
+ {
+ Assert::stringNotEmpty($uri);
+ $this->uri = $uri;
+ }
+
+ public function __toString(): string
+ {
+ return $this->uri;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php
new file mode 100644
index 000000000..f021b6092
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Return_.php
@@ -0,0 +1,64 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\TypeResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use Webmozart\Assert\Assert;
+
+/**
+ * Reflection class for a {@}return tag in a Docblock.
+ */
+final class Return_ extends TagWithType implements Factory\StaticMethod
+{
+ public function __construct(Type $type, ?Description $description = null)
+ {
+ $this->name = 'return';
+ $this->type = $type;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?TypeResolver $typeResolver = null,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::notNull($typeResolver);
+ Assert::notNull($descriptionFactory);
+
+ [$type, $description] = self::extractTypeFromBody($body);
+
+ $type = $typeResolver->resolve($type, $context);
+ $description = $descriptionFactory->create($description, $context);
+
+ return new static($type, $description);
+ }
+
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $type = $this->type ? '' . $this->type : 'mixed';
+
+ return $type . ($description !== '' ? ' ' . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php
new file mode 100644
index 000000000..a194c7ded
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/See.php
@@ -0,0 +1,106 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\DocBlock\Tags\Reference\Fqsen as FqsenRef;
+use phpDocumentor\Reflection\DocBlock\Tags\Reference\Reference;
+use phpDocumentor\Reflection\DocBlock\Tags\Reference\Url;
+use phpDocumentor\Reflection\Fqsen;
+use phpDocumentor\Reflection\FqsenResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Utils;
+use Webmozart\Assert\Assert;
+
+use function array_key_exists;
+use function explode;
+use function preg_match;
+
+/**
+ * Reflection class for an {@}see tag in a Docblock.
+ */
+final class See extends BaseTag implements Factory\StaticMethod
+{
+ /** @var string */
+ protected $name = 'see';
+
+ /** @var Reference */
+ protected $refers;
+
+ /**
+ * Initializes this tag.
+ */
+ public function __construct(Reference $refers, ?Description $description = null)
+ {
+ $this->refers = $refers;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?FqsenResolver $typeResolver = null,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::notNull($descriptionFactory);
+
+ $parts = Utils::pregSplit('/\s+/Su', $body, 2);
+ $description = isset($parts[1]) ? $descriptionFactory->create($parts[1], $context) : null;
+
+ // https://tools.ietf.org/html/rfc2396#section-3
+ if (preg_match('#\w://\w#', $parts[0])) {
+ return new static(new Url($parts[0]), $description);
+ }
+
+ return new static(new FqsenRef(self::resolveFqsen($parts[0], $typeResolver, $context)), $description);
+ }
+
+ private static function resolveFqsen(string $parts, ?FqsenResolver $fqsenResolver, ?TypeContext $context): Fqsen
+ {
+ Assert::notNull($fqsenResolver);
+ $fqsenParts = explode('::', $parts);
+ $resolved = $fqsenResolver->resolve($fqsenParts[0], $context);
+
+ if (!array_key_exists(1, $fqsenParts)) {
+ return $resolved;
+ }
+
+ return new Fqsen($resolved . '::' . $fqsenParts[1]);
+ }
+
+ /**
+ * Returns the ref of this tag.
+ */
+ public function getReference(): Reference
+ {
+ return $this->refers;
+ }
+
+ /**
+ * Returns a string representation of this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $refers = (string) $this->refers;
+
+ return $refers . ($description !== '' ? ($refers !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php
new file mode 100644
index 000000000..54af43cd4
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Since.php
@@ -0,0 +1,103 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use Webmozart\Assert\Assert;
+
+use function preg_match;
+
+/**
+ * Reflection class for a {@}since tag in a Docblock.
+ */
+final class Since extends BaseTag implements Factory\StaticMethod
+{
+ /** @var string */
+ protected $name = 'since';
+
+ /**
+ * PCRE regular expression matching a version vector.
+ * Assumes the "x" modifier.
+ */
+ public const REGEX_VECTOR = '(?:
+ # Normal release vectors.
+ \d\S*
+ |
+ # VCS version vectors. Per PHPCS, they are expected to
+ # follow the form of the VCS name, followed by ":", followed
+ # by the version vector itself.
+ # By convention, popular VCSes like CVS, SVN and GIT use "$"
+ # around the actual version vector.
+ [^\s\:]+\:\s*\$[^\$]+\$
+ )';
+
+ /** @var string|null The version vector. */
+ private $version;
+
+ public function __construct(?string $version = null, ?Description $description = null)
+ {
+ Assert::nullOrNotEmpty($version);
+
+ $this->version = $version;
+ $this->description = $description;
+ }
+
+ public static function create(
+ ?string $body,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): ?self {
+ if (empty($body)) {
+ return new static();
+ }
+
+ $matches = [];
+ if (!preg_match('/^(' . self::REGEX_VECTOR . ')\s*(.+)?$/sux', $body, $matches)) {
+ return null;
+ }
+
+ Assert::notNull($descriptionFactory);
+
+ return new static(
+ $matches[1],
+ $descriptionFactory->create($matches[2] ?? '', $context)
+ );
+ }
+
+ /**
+ * Gets the version section of the tag.
+ */
+ public function getVersion(): ?string
+ {
+ return $this->version;
+ }
+
+ /**
+ * Returns a string representation for this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $version = (string) $this->version;
+
+ return $version . ($description !== '' ? ($version !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php
new file mode 100644
index 000000000..8b8c0fb47
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Source.php
@@ -0,0 +1,116 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use Webmozart\Assert\Assert;
+
+use function preg_match;
+
+/**
+ * Reflection class for a {@}source tag in a Docblock.
+ */
+final class Source extends BaseTag implements Factory\StaticMethod
+{
+ /** @var string */
+ protected $name = 'source';
+
+ /** @var int The starting line, relative to the structural element's location. */
+ private $startingLine;
+
+ /** @var int|null The number of lines, relative to the starting line. NULL means "to the end". */
+ private $lineCount;
+
+ /**
+ * @param int|string $startingLine should be a to int convertible value
+ * @param int|string|null $lineCount should be a to int convertible value
+ */
+ public function __construct($startingLine, $lineCount = null, ?Description $description = null)
+ {
+ Assert::integerish($startingLine);
+ Assert::nullOrIntegerish($lineCount);
+
+ $this->startingLine = (int) $startingLine;
+ $this->lineCount = $lineCount !== null ? (int) $lineCount : null;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::stringNotEmpty($body);
+ Assert::notNull($descriptionFactory);
+
+ $startingLine = 1;
+ $lineCount = null;
+ $description = null;
+
+ // Starting line / Number of lines / Description
+ if (preg_match('/^([1-9]\d*)\s*(?:((?1))\s+)?(.*)$/sux', $body, $matches)) {
+ $startingLine = (int) $matches[1];
+ if (isset($matches[2]) && $matches[2] !== '') {
+ $lineCount = (int) $matches[2];
+ }
+
+ $description = $matches[3];
+ }
+
+ return new static($startingLine, $lineCount, $descriptionFactory->create($description ?? '', $context));
+ }
+
+ /**
+ * Gets the starting line.
+ *
+ * @return int The starting line, relative to the structural element's
+ * location.
+ */
+ public function getStartingLine(): int
+ {
+ return $this->startingLine;
+ }
+
+ /**
+ * Returns the number of lines.
+ *
+ * @return int|null The number of lines, relative to the starting line. NULL
+ * means "to the end".
+ */
+ public function getLineCount(): ?int
+ {
+ return $this->lineCount;
+ }
+
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $startingLine = (string) $this->startingLine;
+
+ $lineCount = $this->lineCount !== null ? ' ' . $this->lineCount : '';
+
+ return $startingLine
+ . $lineCount
+ . ($description !== ''
+ ? ' ' . $description
+ : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/TagWithType.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/TagWithType.php
new file mode 100644
index 000000000..158578bd2
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/TagWithType.php
@@ -0,0 +1,66 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\Type;
+
+use function in_array;
+use function strlen;
+use function substr;
+use function trim;
+
+abstract class TagWithType extends BaseTag
+{
+ /** @var ?Type */
+ protected $type;
+
+ /**
+ * Returns the type section of the variable.
+ */
+ public function getType(): ?Type
+ {
+ return $this->type;
+ }
+
+ /**
+ * @return string[]
+ */
+ protected static function extractTypeFromBody(string $body): array
+ {
+ $type = '';
+ $nestingLevel = 0;
+ for ($i = 0, $iMax = strlen($body); $i < $iMax; $i++) {
+ $character = $body[$i];
+
+ if ($nestingLevel === 0 && trim($character) === '') {
+ break;
+ }
+
+ $type .= $character;
+ if (in_array($character, ['<', '(', '[', '{'])) {
+ $nestingLevel++;
+ continue;
+ }
+
+ if (in_array($character, ['>', ')', ']', '}'])) {
+ $nestingLevel--;
+ continue;
+ }
+ }
+
+ $description = trim(substr($body, strlen($type)));
+
+ return [$type, $description];
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php
new file mode 100644
index 000000000..f21c91011
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Throws.php
@@ -0,0 +1,64 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\TypeResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use Webmozart\Assert\Assert;
+
+/**
+ * Reflection class for a {@}throws tag in a Docblock.
+ */
+final class Throws extends TagWithType implements Factory\StaticMethod
+{
+ public function __construct(Type $type, ?Description $description = null)
+ {
+ $this->name = 'throws';
+ $this->type = $type;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?TypeResolver $typeResolver = null,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::notNull($typeResolver);
+ Assert::notNull($descriptionFactory);
+
+ [$type, $description] = self::extractTypeFromBody($body);
+
+ $type = $typeResolver->resolve($type, $context);
+ $description = $descriptionFactory->create($description, $context);
+
+ return new static($type, $description);
+ }
+
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $type = (string) $this->type;
+
+ return $type . ($description !== '' ? ($type !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php
new file mode 100644
index 000000000..b72f40347
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Uses.php
@@ -0,0 +1,100 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Fqsen;
+use phpDocumentor\Reflection\FqsenResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Utils;
+use Webmozart\Assert\Assert;
+
+use function array_key_exists;
+use function explode;
+
+/**
+ * Reflection class for a {@}uses tag in a Docblock.
+ */
+final class Uses extends BaseTag implements Factory\StaticMethod
+{
+ /** @var string */
+ protected $name = 'uses';
+
+ /** @var Fqsen */
+ protected $refers;
+
+ /**
+ * Initializes this tag.
+ */
+ public function __construct(Fqsen $refers, ?Description $description = null)
+ {
+ $this->refers = $refers;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?FqsenResolver $resolver = null,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::notNull($resolver);
+ Assert::notNull($descriptionFactory);
+
+ $parts = Utils::pregSplit('/\s+/Su', $body, 2);
+
+ return new static(
+ self::resolveFqsen($parts[0], $resolver, $context),
+ $descriptionFactory->create($parts[1] ?? '', $context)
+ );
+ }
+
+ private static function resolveFqsen(string $parts, ?FqsenResolver $fqsenResolver, ?TypeContext $context): Fqsen
+ {
+ Assert::notNull($fqsenResolver);
+ $fqsenParts = explode('::', $parts);
+ $resolved = $fqsenResolver->resolve($fqsenParts[0], $context);
+
+ if (!array_key_exists(1, $fqsenParts)) {
+ return $resolved;
+ }
+
+ return new Fqsen($resolved . '::' . $fqsenParts[1]);
+ }
+
+ /**
+ * Returns the structural element this tag refers to.
+ */
+ public function getReference(): Fqsen
+ {
+ return $this->refers;
+ }
+
+ /**
+ * Returns a string representation of this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $refers = (string) $this->refers;
+
+ return $refers . ($description !== '' ? ($refers !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php
new file mode 100644
index 000000000..fa1f9dbf6
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Var_.php
@@ -0,0 +1,122 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\TypeResolver;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use phpDocumentor\Reflection\Utils;
+use Webmozart\Assert\Assert;
+
+use function array_shift;
+use function array_unshift;
+use function implode;
+use function strpos;
+use function substr;
+
+use const PREG_SPLIT_DELIM_CAPTURE;
+
+/**
+ * Reflection class for a {@}var tag in a Docblock.
+ */
+final class Var_ extends TagWithType implements Factory\StaticMethod
+{
+ /** @var string|null */
+ protected $variableName = '';
+
+ public function __construct(?string $variableName, ?Type $type = null, ?Description $description = null)
+ {
+ Assert::string($variableName);
+
+ $this->name = 'var';
+ $this->variableName = $variableName;
+ $this->type = $type;
+ $this->description = $description;
+ }
+
+ public static function create(
+ string $body,
+ ?TypeResolver $typeResolver = null,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): self {
+ Assert::stringNotEmpty($body);
+ Assert::notNull($typeResolver);
+ Assert::notNull($descriptionFactory);
+
+ [$firstPart, $body] = self::extractTypeFromBody($body);
+
+ $parts = Utils::pregSplit('/(\s+)/Su', $body, 2, PREG_SPLIT_DELIM_CAPTURE);
+ $type = null;
+ $variableName = '';
+
+ // if the first item that is encountered is not a variable; it is a type
+ if ($firstPart && $firstPart[0] !== '$') {
+ $type = $typeResolver->resolve($firstPart, $context);
+ } else {
+ // first part is not a type; we should prepend it to the parts array for further processing
+ array_unshift($parts, $firstPart);
+ }
+
+ // if the next item starts with a $ it must be the variable name
+ if (isset($parts[0]) && strpos($parts[0], '$') === 0) {
+ $variableName = array_shift($parts);
+ if ($type) {
+ array_shift($parts);
+ }
+
+ Assert::notNull($variableName);
+
+ $variableName = substr($variableName, 1);
+ }
+
+ $description = $descriptionFactory->create(implode('', $parts), $context);
+
+ return new static($variableName, $type, $description);
+ }
+
+ /**
+ * Returns the variable's name.
+ */
+ public function getVariableName(): ?string
+ {
+ return $this->variableName;
+ }
+
+ /**
+ * Returns a string representation for this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ if ($this->variableName) {
+ $variableName = '$' . $this->variableName;
+ } else {
+ $variableName = '';
+ }
+
+ $type = (string) $this->type;
+
+ return $type
+ . ($variableName !== '' ? ($type !== '' ? ' ' : '') . $variableName : '')
+ . ($description !== '' ? ($type !== '' || $variableName !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php
new file mode 100644
index 000000000..f46e4b8c0
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlock/Tags/Version.php
@@ -0,0 +1,106 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\DocBlock\Tags;
+
+use phpDocumentor\Reflection\DocBlock\Description;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\Types\Context as TypeContext;
+use Webmozart\Assert\Assert;
+
+use function preg_match;
+
+/**
+ * Reflection class for a {@}version tag in a Docblock.
+ */
+final class Version extends BaseTag implements Factory\StaticMethod
+{
+ /** @var string */
+ protected $name = 'version';
+
+ /**
+ * PCRE regular expression matching a version vector.
+ * Assumes the "x" modifier.
+ */
+ public const REGEX_VECTOR = '(?:
+ # Normal release vectors.
+ \d\S*
+ |
+ # VCS version vectors. Per PHPCS, they are expected to
+ # follow the form of the VCS name, followed by ":", followed
+ # by the version vector itself.
+ # By convention, popular VCSes like CVS, SVN and GIT use "$"
+ # around the actual version vector.
+ [^\s\:]+\:\s*\$[^\$]+\$
+ )';
+
+ /** @var string|null The version vector. */
+ private $version;
+
+ public function __construct(?string $version = null, ?Description $description = null)
+ {
+ Assert::nullOrStringNotEmpty($version);
+
+ $this->version = $version;
+ $this->description = $description;
+ }
+
+ public static function create(
+ ?string $body,
+ ?DescriptionFactory $descriptionFactory = null,
+ ?TypeContext $context = null
+ ): ?self {
+ if (empty($body)) {
+ return new static();
+ }
+
+ $matches = [];
+ if (!preg_match('/^(' . self::REGEX_VECTOR . ')\s*(.+)?$/sux', $body, $matches)) {
+ return null;
+ }
+
+ $description = null;
+ if ($descriptionFactory !== null) {
+ $description = $descriptionFactory->create($matches[2] ?? '', $context);
+ }
+
+ return new static(
+ $matches[1],
+ $description
+ );
+ }
+
+ /**
+ * Gets the version section of the tag.
+ */
+ public function getVersion(): ?string
+ {
+ return $this->version;
+ }
+
+ /**
+ * Returns a string representation for this tag.
+ */
+ public function __toString(): string
+ {
+ if ($this->description) {
+ $description = $this->description->render();
+ } else {
+ $description = '';
+ }
+
+ $version = (string) $this->version;
+
+ return $version . ($description !== '' ? ($version !== '' ? ' ' : '') . $description : '');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php
new file mode 100644
index 000000000..37f72dd2e
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactory.php
@@ -0,0 +1,287 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use InvalidArgumentException;
+use LogicException;
+use phpDocumentor\Reflection\DocBlock\DescriptionFactory;
+use phpDocumentor\Reflection\DocBlock\StandardTagFactory;
+use phpDocumentor\Reflection\DocBlock\Tag;
+use phpDocumentor\Reflection\DocBlock\TagFactory;
+use Webmozart\Assert\Assert;
+
+use function array_shift;
+use function count;
+use function explode;
+use function is_object;
+use function method_exists;
+use function preg_match;
+use function preg_replace;
+use function str_replace;
+use function strpos;
+use function substr;
+use function trim;
+
+final class DocBlockFactory implements DocBlockFactoryInterface
+{
+ /** @var DocBlock\DescriptionFactory */
+ private $descriptionFactory;
+
+ /** @var DocBlock\TagFactory */
+ private $tagFactory;
+
+ /**
+ * Initializes this factory with the required subcontractors.
+ */
+ public function __construct(DescriptionFactory $descriptionFactory, TagFactory $tagFactory)
+ {
+ $this->descriptionFactory = $descriptionFactory;
+ $this->tagFactory = $tagFactory;
+ }
+
+ /**
+ * Factory method for easy instantiation.
+ *
+ * @param array<string, class-string<Tag>> $additionalTags
+ */
+ public static function createInstance(array $additionalTags = []): self
+ {
+ $fqsenResolver = new FqsenResolver();
+ $tagFactory = new StandardTagFactory($fqsenResolver);
+ $descriptionFactory = new DescriptionFactory($tagFactory);
+
+ $tagFactory->addService($descriptionFactory);
+ $tagFactory->addService(new TypeResolver($fqsenResolver));
+
+ $docBlockFactory = new self($descriptionFactory, $tagFactory);
+ foreach ($additionalTags as $tagName => $tagHandler) {
+ $docBlockFactory->registerTagHandler($tagName, $tagHandler);
+ }
+
+ return $docBlockFactory;
+ }
+
+ /**
+ * @param object|string $docblock A string containing the DocBlock to parse or an object supporting the
+ * getDocComment method (such as a ReflectionClass object).
+ */
+ public function create($docblock, ?Types\Context $context = null, ?Location $location = null): DocBlock
+ {
+ if (is_object($docblock)) {
+ if (!method_exists($docblock, 'getDocComment')) {
+ $exceptionMessage = 'Invalid object passed; the given object must support the getDocComment method';
+
+ throw new InvalidArgumentException($exceptionMessage);
+ }
+
+ $docblock = $docblock->getDocComment();
+ Assert::string($docblock);
+ }
+
+ Assert::stringNotEmpty($docblock);
+
+ if ($context === null) {
+ $context = new Types\Context('');
+ }
+
+ $parts = $this->splitDocBlock($this->stripDocComment($docblock));
+
+ [$templateMarker, $summary, $description, $tags] = $parts;
+
+ return new DocBlock(
+ $summary,
+ $description ? $this->descriptionFactory->create($description, $context) : null,
+ $this->parseTagBlock($tags, $context),
+ $context,
+ $location,
+ $templateMarker === '#@+',
+ $templateMarker === '#@-'
+ );
+ }
+
+ /**
+ * @param class-string<Tag> $handler
+ */
+ public function registerTagHandler(string $tagName, string $handler): void
+ {
+ $this->tagFactory->registerTagHandler($tagName, $handler);
+ }
+
+ /**
+ * Strips the asterisks from the DocBlock comment.
+ *
+ * @param string $comment String containing the comment text.
+ */
+ private function stripDocComment(string $comment): string
+ {
+ $comment = preg_replace('#[ \t]*(?:\/\*\*|\*\/|\*)?[ \t]?(.*)?#u', '$1', $comment);
+ Assert::string($comment);
+ $comment = trim($comment);
+
+ // reg ex above is not able to remove */ from a single line docblock
+ if (substr($comment, -2) === '*/') {
+ $comment = trim(substr($comment, 0, -2));
+ }
+
+ return str_replace(["\r\n", "\r"], "\n", $comment);
+ }
+
+ // phpcs:disable
+ /**
+ * Splits the DocBlock into a template marker, summary, description and block of tags.
+ *
+ * @param string $comment Comment to split into the sub-parts.
+ *
+ * @return string[] containing the template marker (if any), summary, description and a string containing the tags.
+ *
+ * @author Mike van Riel <[email protected]> for extending the regex with template marker support.
+ *
+ * @author Richard van Velzen (@_richardJ) Special thanks to Richard for the regex responsible for the split.
+ */
+ private function splitDocBlock(string $comment) : array
+ {
+ // phpcs:enable
+ // Performance improvement cheat: if the first character is an @ then only tags are in this DocBlock. This
+ // method does not split tags so we return this verbatim as the fourth result (tags). This saves us the
+ // performance impact of running a regular expression
+ if (strpos($comment, '@') === 0) {
+ return ['', '', '', $comment];
+ }
+
+ // clears all extra horizontal whitespace from the line endings to prevent parsing issues
+ $comment = preg_replace('/\h*$/Sum', '', $comment);
+ Assert::string($comment);
+ /*
+ * Splits the docblock into a template marker, summary, description and tags section.
+ *
+ * - The template marker is empty, #@+ or #@- if the DocBlock starts with either of those (a newline may
+ * occur after it and will be stripped).
+ * - The short description is started from the first character until a dot is encountered followed by a
+ * newline OR two consecutive newlines (horizontal whitespace is taken into account to consider spacing
+ * errors). This is optional.
+ * - The long description, any character until a new line is encountered followed by an @ and word
+ * characters (a tag). This is optional.
+ * - Tags; the remaining characters
+ *
+ * Big thanks to RichardJ for contributing this Regular Expression
+ */
+ preg_match(
+ '/
+ \A
+ # 1. Extract the template marker
+ (?:(\#\@\+|\#\@\-)\n?)?
+
+ # 2. Extract the summary
+ (?:
+ (?! @\pL ) # The summary may not start with an @
+ (
+ [^\n.]+
+ (?:
+ (?! \. \n | \n{2} ) # End summary upon a dot followed by newline or two newlines
+ [\n.]* (?! [ \t]* @\pL ) # End summary when an @ is found as first character on a new line
+ [^\n.]+ # Include anything else
+ )*
+ \.?
+ )?
+ )
+
+ # 3. Extract the description
+ (?:
+ \s* # Some form of whitespace _must_ precede a description because a summary must be there
+ (?! @\pL ) # The description may not start with an @
+ (
+ [^\n]+
+ (?: \n+
+ (?! [ \t]* @\pL ) # End description when an @ is found as first character on a new line
+ [^\n]+ # Include anything else
+ )*
+ )
+ )?
+
+ # 4. Extract the tags (anything that follows)
+ (\s+ [\s\S]*)? # everything that follows
+ /ux',
+ $comment,
+ $matches
+ );
+ array_shift($matches);
+
+ while (count($matches) < 4) {
+ $matches[] = '';
+ }
+
+ return $matches;
+ }
+
+ /**
+ * Creates the tag objects.
+ *
+ * @param string $tags Tag block to parse.
+ * @param Types\Context $context Context of the parsed Tag
+ *
+ * @return DocBlock\Tag[]
+ */
+ private function parseTagBlock(string $tags, Types\Context $context): array
+ {
+ $tags = $this->filterTagBlock($tags);
+ if ($tags === null) {
+ return [];
+ }
+
+ $result = [];
+ $lines = $this->splitTagBlockIntoTagLines($tags);
+ foreach ($lines as $key => $tagLine) {
+ $result[$key] = $this->tagFactory->create(trim($tagLine), $context);
+ }
+
+ return $result;
+ }
+
+ /**
+ * @return string[]
+ */
+ private function splitTagBlockIntoTagLines(string $tags): array
+ {
+ $result = [];
+ foreach (explode("\n", $tags) as $tagLine) {
+ if ($tagLine !== '' && strpos($tagLine, '@') === 0) {
+ $result[] = $tagLine;
+ } else {
+ $result[count($result) - 1] .= "\n" . $tagLine;
+ }
+ }
+
+ return $result;
+ }
+
+ private function filterTagBlock(string $tags): ?string
+ {
+ $tags = trim($tags);
+ if (!$tags) {
+ return null;
+ }
+
+ if ($tags[0] !== '@') {
+ // @codeCoverageIgnoreStart
+ // Can't simulate this; this only happens if there is an error with the parsing of the DocBlock that
+ // we didn't foresee.
+
+ throw new LogicException('A tag block started with text instead of an at-sign(@): ' . $tags);
+
+ // @codeCoverageIgnoreEnd
+ }
+
+ return $tags;
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php
new file mode 100644
index 000000000..9995c0c09
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/DocBlockFactoryInterface.php
@@ -0,0 +1,23 @@
+<?php
+
+declare(strict_types=1);
+
+namespace phpDocumentor\Reflection;
+
+use phpDocumentor\Reflection\DocBlock\Tag;
+
+// phpcs:ignore SlevomatCodingStandard.Classes.SuperfluousInterfaceNaming.SuperfluousSuffix
+interface DocBlockFactoryInterface
+{
+ /**
+ * Factory method for easy instantiation.
+ *
+ * @param array<string, class-string<Tag>> $additionalTags
+ */
+ public static function createInstance(array $additionalTags = []): DocBlockFactory;
+
+ /**
+ * @param string|object $docblock
+ */
+ public function create($docblock, ?Types\Context $context = null, ?Location $location = null): DocBlock;
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/Exception/PcreException.php b/vendor/phpdocumentor/reflection-docblock/src/Exception/PcreException.php
new file mode 100644
index 000000000..b8b6da8cf
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/Exception/PcreException.php
@@ -0,0 +1,44 @@
+<?php
+
+declare(strict_types=1);
+
+namespace phpDocumentor\Reflection\Exception;
+
+use InvalidArgumentException;
+
+use const PREG_BACKTRACK_LIMIT_ERROR;
+use const PREG_BAD_UTF8_ERROR;
+use const PREG_BAD_UTF8_OFFSET_ERROR;
+use const PREG_INTERNAL_ERROR;
+use const PREG_JIT_STACKLIMIT_ERROR;
+use const PREG_NO_ERROR;
+use const PREG_RECURSION_LIMIT_ERROR;
+
+final class PcreException extends InvalidArgumentException
+{
+ public static function createFromPhpError(int $errorCode): self
+ {
+ switch ($errorCode) {
+ case PREG_BACKTRACK_LIMIT_ERROR:
+ return new self('Backtrack limit error');
+
+ case PREG_RECURSION_LIMIT_ERROR:
+ return new self('Recursion limit error');
+
+ case PREG_BAD_UTF8_ERROR:
+ return new self('Bad UTF8 error');
+
+ case PREG_BAD_UTF8_OFFSET_ERROR:
+ return new self('Bad UTF8 offset error');
+
+ case PREG_JIT_STACKLIMIT_ERROR:
+ return new self('Jit stacklimit error');
+
+ case PREG_NO_ERROR:
+ case PREG_INTERNAL_ERROR:
+ default:
+ }
+
+ return new self('Unknown Pcre error');
+ }
+}
diff --git a/vendor/phpdocumentor/reflection-docblock/src/Utils.php b/vendor/phpdocumentor/reflection-docblock/src/Utils.php
new file mode 100644
index 000000000..ddd0f61d9
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/Utils.php
@@ -0,0 +1,62 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use phpDocumentor\Reflection\Exception\PcreException;
+use Webmozart\Assert\Assert;
+
+use function preg_last_error;
+use function preg_split as php_preg_split;
+
+abstract class Utils
+{
+ /**
+ * Wrapper function for phps preg_split
+ *
+ * This function is inspired by {@link https://github.com/thecodingmachine/safe/blob/master/generated/pcre.php}. But
+ * since this library is all about performance we decided to strip everything we don't need. Reducing the amount
+ * of files that have to be loaded, ect.
+ *
+ * @param string $pattern The pattern to search for, as a string.
+ * @param string $subject The input string.
+ * @param int $limit If specified, then only substrings up to limit are returned with the
+ * rest of the string being placed in the last substring. A limit of -1 or 0 means "no limit".
+ * @param int $flags flags can be any combination of the following flags (combined with the | bitwise operator):
+ * *PREG_SPLIT_NO_EMPTY*
+ * If this flag is set, only non-empty pieces will be returned by preg_split().
+ * *PREG_SPLIT_DELIM_CAPTURE*
+ * If this flag is set, parenthesized expression in the delimiter pattern will be captured
+ * and returned as well.
+ * *PREG_SPLIT_OFFSET_CAPTURE*
+ * If this flag is set, for every occurring match the appendant string offset will also be returned.
+ * Note that this changes the return value in an array where every element is an array consisting of the
+ * matched string at offset 0 and its string offset into subject at offset 1.
+ *
+ * @return string[] Returns an array containing substrings of subject
+ * split along boundaries matched by pattern
+ *
+ * @throws PcreException
+ */
+ public static function pregSplit(string $pattern, string $subject, int $limit = -1, int $flags = 0): array
+ {
+ $parts = php_preg_split($pattern, $subject, $limit, $flags);
+ if ($parts === false) {
+ throw PcreException::createFromPhpError(preg_last_error());
+ }
+
+ Assert::allString($parts);
+
+ return $parts;
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/LICENSE b/vendor/phpdocumentor/type-resolver/LICENSE
new file mode 100644
index 000000000..792e4040f
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2010 Mike van Riel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/phpdocumentor/type-resolver/README.md b/vendor/phpdocumentor/type-resolver/README.md
new file mode 100644
index 000000000..f30d3a24e
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/README.md
@@ -0,0 +1,177 @@
+[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
+![](https://github.com/phpdocumentor/typeresolver/workflows/Qa%20workflow/badge.svg?branch=1.x)
+[![Coveralls Coverage](https://img.shields.io/coveralls/github/phpDocumentor/TypeResolver.svg)](https://coveralls.io/github/phpDocumentor/TypeResolver?branch=1.x)
+[![Scrutinizer Code Coverage](https://img.shields.io/scrutinizer/coverage/g/phpDocumentor/TypeResolver.svg)](https://scrutinizer-ci.com/g/phpDocumentor/TypeResolver/?branch=1.x)
+[![Scrutinizer Code Quality](https://img.shields.io/scrutinizer/g/phpDocumentor/TypeResolver.svg)](https://scrutinizer-ci.com/g/phpDocumentor/TypeResolver/?branch=1.x)
+![Packagist Version](https://img.shields.io/packagist/v/phpdocumentor/type-resolver?label=Packagist%20stable)
+![Packagist Version](https://img.shields.io/packagist/vpre/phpdocumentor/type-resolver?label=Packagist%20unstable)
+
+TypeResolver and FqsenResolver
+==============================
+
+The specification on types in DocBlocks (PSR-5) describes various keywords and special constructs
+but also how to statically resolve the partial name of a Class into a Fully Qualified Class Name (FQCN).
+
+PSR-5 also introduces an additional way to describe deeper elements than Classes, Interfaces and Traits
+called the Fully Qualified Structural Element Name (FQSEN). Using this it is possible to refer to methods,
+properties and class constants but also functions and global constants.
+
+This package provides two Resolvers that are capable of
+
+1. Returning a series of Value Object for given expression while resolving any partial class names, and
+2. Returning an FQSEN object after resolving any partial Structural Element Names into Fully Qualified Structural
+ Element names.
+
+## Installing
+
+The easiest way to install this library is with [Composer](https://getcomposer.org) using the following command:
+
+ $ composer require phpdocumentor/type-resolver
+
+## Examples
+
+Ready to dive in and don't want to read through all that text below? Just consult the [examples](examples) folder and check which type of action that your want to accomplish.
+
+## On Types and Element Names
+
+This component can be used in one of two ways
+
+1. To resolve a Type or
+2. To resolve a Fully Qualified Structural Element Name
+
+The big difference between these two is in the number of things it can resolve.
+
+The TypeResolver can resolve:
+
+- a php primitive or pseudo-primitive such as a string or void (`@var string` or `@return void`).
+- a composite such as an array of string (`@var string[]`).
+- a compound such as a string or integer (`@var string|integer`).
+- an array expression (`@var (string|TypeResolver)[]`)
+- an object or interface such as the TypeResolver class (`@var TypeResolver`
+ or `@var \phpDocumentor\Reflection\TypeResolver`)
+
+ > please note that if you want to pass partial class names that additional steps are necessary, see the
+ > chapter `Resolving partial classes and FQSENs` for more information.
+
+Where the FqsenResolver can resolve:
+
+- Constant expressions (i.e. `@see \MyNamespace\MY_CONSTANT`)
+- Function expressions (i.e. `@see \MyNamespace\myFunction()`)
+- Class expressions (i.e. `@see \MyNamespace\MyClass`)
+- Interface expressions (i.e. `@see \MyNamespace\MyInterface`)
+- Trait expressions (i.e. `@see \MyNamespace\MyTrait`)
+- Class constant expressions (i.e. `@see \MyNamespace\MyClass::MY_CONSTANT`)
+- Property expressions (i.e. `@see \MyNamespace\MyClass::$myProperty`)
+- Method expressions (i.e. `@see \MyNamespace\MyClass::myMethod()`)
+
+## Resolving a type
+
+In order to resolve a type you will have to instantiate the class `\phpDocumentor\Reflection\TypeResolver` and call its `resolve` method like this:
+
+```php
+$typeResolver = new \phpDocumentor\Reflection\TypeResolver();
+$type = $typeResolver->resolve('string|integer');
+```
+
+In this example you will receive a Value Object of class `\phpDocumentor\Reflection\Types\Compound` that has two
+elements, one of type `\phpDocumentor\Reflection\Types\String_` and one of type
+`\phpDocumentor\Reflection\Types\Integer`.
+
+The real power of this resolver is in its capability to expand partial class names into fully qualified class names; but in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will inform the resolver in which namespace the given expression occurs and which namespace aliases (or imports) apply.
+
+### Resolving nullable types
+
+Php 7.1 introduced nullable types e.g. `?string`. Type resolver will resolve the original type without the nullable notation `?`
+just like it would do without the `?`. After that the type is wrapped in a `\phpDocumentor\Reflection\Types\Nullable` object.
+The `Nullable` type has a method to fetch the actual type.
+
+## Resolving an FQSEN
+
+A Fully Qualified Structural Element Name is a reference to another element in your code bases and can be resolved using the `\phpDocumentor\Reflection\FqsenResolver` class' `resolve` method, like this:
+
+```php
+$fqsenResolver = new \phpDocumentor\Reflection\FqsenResolver();
+$fqsen = $fqsenResolver->resolve('\phpDocumentor\Reflection\FqsenResolver::resolve()');
+```
+
+In this example we resolve a Fully Qualified Structural Element Name (meaning that it includes the full namespace, class name and element name) and receive a Value Object of type `\phpDocumentor\Reflection\Fqsen`.
+
+The real power of this resolver is in its capability to expand partial element names into Fully Qualified Structural Element Names; but in order to do that we need an additional `\phpDocumentor\Reflection\Types\Context` class that will inform the resolver in which namespace the given expression occurs and which namespace aliases (or imports) apply.
+
+## Resolving partial Classes and Structural Element Names
+
+Perhaps the best feature of this library is that it knows how to resolve partial class names into fully qualified class names.
+
+For example, you have this file:
+
+```php
+namespace My\Example;
+
+use phpDocumentor\Reflection\Types;
+
+class Classy
+{
+ /**
+ * @var Types\Context
+ * @see Classy::otherFunction()
+ */
+ public function __construct($context) {}
+
+ public function otherFunction(){}
+}
+```
+
+Suppose that you would want to resolve (and expand) the type in the `@var` tag and the element name in the `@see` tag.
+
+For the resolvers to know how to expand partial names you have to provide a bit of _Context_ for them by instantiating a new class named `\phpDocumentor\Reflection\Types\Context` with the name of the namespace and the aliases that are in play.
+
+### Creating a Context
+
+You can do this by manually creating a Context like this:
+
+```php
+$context = new \phpDocumentor\Reflection\Types\Context(
+ '\My\Example',
+ [ 'Types' => '\phpDocumentor\Reflection\Types']
+);
+```
+
+Or by using the `\phpDocumentor\Reflection\Types\ContextFactory` to instantiate a new context based on a Reflector object or by providing the namespace that you'd like to extract and the source code of the file in which the given type expression occurs.
+
+```php
+$contextFactory = new \phpDocumentor\Reflection\Types\ContextFactory();
+$context = $contextFactory->createFromReflector(new ReflectionMethod('\My\Example\Classy', '__construct'));
+```
+
+or
+
+```php
+$contextFactory = new \phpDocumentor\Reflection\Types\ContextFactory();
+$context = $contextFactory->createForNamespace('\My\Example', file_get_contents('My/Example/Classy.php'));
+```
+
+### Using the Context
+
+After you have obtained a Context it is just a matter of passing it along with the `resolve` method of either Resolver class as second argument and the Resolvers will take this into account when resolving partial names.
+
+To obtain the resolved class name for the `@var` tag in the example above you can do:
+
+```php
+$typeResolver = new \phpDocumentor\Reflection\TypeResolver();
+$type = $typeResolver->resolve('Types\Context', $context);
+```
+
+When you do this you will receive an object of class `\phpDocumentor\Reflection\Types\Object_` for which you can call the `getFqsen` method to receive a Value Object that represents the complete FQSEN. So that would be `phpDocumentor\Reflection\Types\Context`.
+
+> Why is the FQSEN wrapped in another object `Object_`?
+>
+> The resolve method of the TypeResolver only returns object with the interface `Type` and the FQSEN is a common type that does not represent a Type. Also: in some cases a type can represent an "Untyped Object", meaning that it is an object (signified by the `object` keyword) but does not refer to a specific element using an FQSEN.
+
+Another example is on how to resolve the FQSEN of a method as can be seen with the `@see` tag in the example above. To resolve that you can do the following:
+
+```php
+$fqsenResolver = new \phpDocumentor\Reflection\FqsenResolver();
+$type = $fqsenResolver->resolve('Classy::otherFunction()', $context);
+```
+
+Because Classy is a Class in the current namespace its FQSEN will have the `My\Example` namespace and by calling the `resolve` method of the FQSEN Resolver you will receive an `Fqsen` object that refers to `\My\Example\Classy::otherFunction()`.
diff --git a/vendor/phpdocumentor/type-resolver/composer.json b/vendor/phpdocumentor/type-resolver/composer.json
new file mode 100644
index 000000000..4dbf6237e
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/composer.json
@@ -0,0 +1,35 @@
+{
+ "name": "phpdocumentor/type-resolver",
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "type": "library",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "[email protected]"
+ }
+ ],
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": ["tests/unit", "tests/benchmark"]
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php b/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php
new file mode 100644
index 000000000..068fa2085
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/FqsenResolver.php
@@ -0,0 +1,80 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use InvalidArgumentException;
+use phpDocumentor\Reflection\Types\Context;
+
+use function explode;
+use function implode;
+use function strpos;
+
+/**
+ * Resolver for Fqsen using Context information
+ *
+ * @psalm-immutable
+ */
+class FqsenResolver
+{
+ /** @var string Definition of the NAMESPACE operator in PHP */
+ private const OPERATOR_NAMESPACE = '\\';
+
+ public function resolve(string $fqsen, ?Context $context = null): Fqsen
+ {
+ if ($context === null) {
+ $context = new Context('');
+ }
+
+ if ($this->isFqsen($fqsen)) {
+ return new Fqsen($fqsen);
+ }
+
+ return $this->resolvePartialStructuralElementName($fqsen, $context);
+ }
+
+ /**
+ * Tests whether the given type is a Fully Qualified Structural Element Name.
+ */
+ private function isFqsen(string $type): bool
+ {
+ return strpos($type, self::OPERATOR_NAMESPACE) === 0;
+ }
+
+ /**
+ * Resolves a partial Structural Element Name (i.e. `Reflection\DocBlock`) to its FQSEN representation
+ * (i.e. `\phpDocumentor\Reflection\DocBlock`) based on the Namespace and aliases mentioned in the Context.
+ *
+ * @throws InvalidArgumentException When type is not a valid FQSEN.
+ */
+ private function resolvePartialStructuralElementName(string $type, Context $context): Fqsen
+ {
+ $typeParts = explode(self::OPERATOR_NAMESPACE, $type, 2);
+
+ $namespaceAliases = $context->getNamespaceAliases();
+
+ // if the first segment is not an alias; prepend namespace name and return
+ if (!isset($namespaceAliases[$typeParts[0]])) {
+ $namespace = $context->getNamespace();
+ if ($namespace !== '') {
+ $namespace .= self::OPERATOR_NAMESPACE;
+ }
+
+ return new Fqsen(self::OPERATOR_NAMESPACE . $namespace . $type);
+ }
+
+ $typeParts[0] = $namespaceAliases[$typeParts[0]];
+
+ return new Fqsen(self::OPERATOR_NAMESPACE . implode(self::OPERATOR_NAMESPACE, $typeParts));
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoType.php b/vendor/phpdocumentor/type-resolver/src/PseudoType.php
new file mode 100644
index 000000000..dd91ed798
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoType.php
@@ -0,0 +1,19 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+interface PseudoType extends Type
+{
+ public function underlyingType(): Type;
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/CallableString.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/CallableString.php
new file mode 100644
index 000000000..b69345617
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/CallableString.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\String_;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+final class CallableString extends String_ implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new String_();
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'callable-string';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/False_.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/False_.php
new file mode 100644
index 000000000..4ec6885f6
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/False_.php
@@ -0,0 +1,40 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link https://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\Boolean;
+
+use function class_alias;
+
+/**
+ * Value Object representing the PseudoType 'False', which is a Boolean type.
+ *
+ * @psalm-immutable
+ */
+final class False_ extends Boolean implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new Boolean();
+ }
+
+ public function __toString(): string
+ {
+ return 'false';
+ }
+}
+
+class_alias('\phpDocumentor\Reflection\PseudoTypes\False_', 'phpDocumentor\Reflection\Types\False_', false);
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/HtmlEscapedString.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/HtmlEscapedString.php
new file mode 100644
index 000000000..aa4d8db56
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/HtmlEscapedString.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\String_;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+final class HtmlEscapedString extends String_ implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new String_();
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'html-escaped-string';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/IntegerRange.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/IntegerRange.php
new file mode 100644
index 000000000..c5a3bc535
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/IntegerRange.php
@@ -0,0 +1,61 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\Integer;
+
+/**
+ * Value Object representing the type 'int'.
+ *
+ * @psalm-immutable
+ */
+final class IntegerRange extends Integer implements PseudoType
+{
+ /** @var string */
+ private $minValue;
+
+ /** @var string */
+ private $maxValue;
+
+ public function __construct(string $minValue, string $maxValue)
+ {
+ $this->minValue = $minValue;
+ $this->maxValue = $maxValue;
+ }
+
+ public function underlyingType(): Type
+ {
+ return new Integer();
+ }
+
+ public function getMinValue(): string
+ {
+ return $this->minValue;
+ }
+
+ public function getMaxValue(): string
+ {
+ return $this->maxValue;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'int<' . $this->minValue . ', ' . $this->maxValue . '>';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/List_.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/List_.php
new file mode 100644
index 000000000..f9f0c6b5c
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/List_.php
@@ -0,0 +1,50 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\Array_;
+use phpDocumentor\Reflection\Types\Integer;
+use phpDocumentor\Reflection\Types\Mixed_;
+
+/**
+ * Value Object representing the type 'list'.
+ *
+ * @psalm-immutable
+ */
+final class List_ extends Array_ implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new Array_();
+ }
+
+ public function __construct(?Type $valueType = null)
+ {
+ parent::__construct($valueType, new Integer());
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ if ($this->valueType instanceof Mixed_) {
+ return 'list';
+ }
+
+ return 'list<' . $this->valueType . '>';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/LiteralString.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/LiteralString.php
new file mode 100644
index 000000000..690f782b7
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/LiteralString.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\String_;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+final class LiteralString extends String_ implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new String_();
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'literal-string';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/LowercaseString.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/LowercaseString.php
new file mode 100644
index 000000000..6325492ad
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/LowercaseString.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\String_;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+final class LowercaseString extends String_ implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new String_();
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'lowercase-string';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NegativeInteger.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NegativeInteger.php
new file mode 100644
index 000000000..c51d3feab
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NegativeInteger.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\Integer;
+
+/**
+ * Value Object representing the type 'int'.
+ *
+ * @psalm-immutable
+ */
+final class NegativeInteger extends Integer implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new Integer();
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'negative-int';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NonEmptyLowercaseString.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NonEmptyLowercaseString.php
new file mode 100644
index 000000000..86400165a
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NonEmptyLowercaseString.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\String_;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+final class NonEmptyLowercaseString extends String_ implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new String_();
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'non-empty-lowercase-string';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NonEmptyString.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NonEmptyString.php
new file mode 100644
index 000000000..d72d127cf
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NonEmptyString.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\String_;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+final class NonEmptyString extends String_ implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new String_();
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'non-empty-string';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NumericString.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NumericString.php
new file mode 100644
index 000000000..b62aa45a5
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/NumericString.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\String_;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+final class NumericString extends String_ implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new String_();
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'numeric-string';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/Numeric_.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/Numeric_.php
new file mode 100644
index 000000000..46620cd21
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/Numeric_.php
@@ -0,0 +1,47 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\AggregatedType;
+use phpDocumentor\Reflection\Types\Compound;
+use phpDocumentor\Reflection\Types\Float_;
+use phpDocumentor\Reflection\Types\Integer;
+
+/**
+ * Value Object representing the 'numeric' pseudo-type, which is either a numeric-string, integer or float.
+ *
+ * @psalm-immutable
+ */
+final class Numeric_ extends AggregatedType implements PseudoType
+{
+ public function __construct()
+ {
+ AggregatedType::__construct([new NumericString(), new Integer(), new Float_()], '|');
+ }
+
+ public function underlyingType(): Type
+ {
+ return new Compound([new NumericString(), new Integer(), new Float_()]);
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'numeric';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/PositiveInteger.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/PositiveInteger.php
new file mode 100644
index 000000000..c52184dc5
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/PositiveInteger.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\Integer;
+
+/**
+ * Value Object representing the type 'int'.
+ *
+ * @psalm-immutable
+ */
+final class PositiveInteger extends Integer implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new Integer();
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'positive-int';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/TraitString.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/TraitString.php
new file mode 100644
index 000000000..ac217c25d
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/TraitString.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\String_;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+final class TraitString extends String_ implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new String_();
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'trait-string';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/PseudoTypes/True_.php b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/True_.php
new file mode 100644
index 000000000..dc970b3aa
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/PseudoTypes/True_.php
@@ -0,0 +1,40 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link https://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\PseudoTypes;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+use phpDocumentor\Reflection\Types\Boolean;
+
+use function class_alias;
+
+/**
+ * Value Object representing the PseudoType 'False', which is a Boolean type.
+ *
+ * @psalm-immutable
+ */
+final class True_ extends Boolean implements PseudoType
+{
+ public function underlyingType(): Type
+ {
+ return new Boolean();
+ }
+
+ public function __toString(): string
+ {
+ return 'true';
+ }
+}
+
+class_alias('\phpDocumentor\Reflection\PseudoTypes\True_', 'phpDocumentor\Reflection\Types\True_', false);
diff --git a/vendor/phpdocumentor/type-resolver/src/Type.php b/vendor/phpdocumentor/type-resolver/src/Type.php
new file mode 100644
index 000000000..c71d8b08b
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Type.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+/**
+ * @psalm-immutable
+ */
+interface Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string;
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/TypeResolver.php b/vendor/phpdocumentor/type-resolver/src/TypeResolver.php
new file mode 100644
index 000000000..0c9a73cb3
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/TypeResolver.php
@@ -0,0 +1,700 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection;
+
+use ArrayIterator;
+use InvalidArgumentException;
+use phpDocumentor\Reflection\PseudoTypes\IntegerRange;
+use phpDocumentor\Reflection\PseudoTypes\List_;
+use phpDocumentor\Reflection\Types\Array_;
+use phpDocumentor\Reflection\Types\ArrayKey;
+use phpDocumentor\Reflection\Types\ClassString;
+use phpDocumentor\Reflection\Types\Collection;
+use phpDocumentor\Reflection\Types\Compound;
+use phpDocumentor\Reflection\Types\Context;
+use phpDocumentor\Reflection\Types\Expression;
+use phpDocumentor\Reflection\Types\Integer;
+use phpDocumentor\Reflection\Types\InterfaceString;
+use phpDocumentor\Reflection\Types\Intersection;
+use phpDocumentor\Reflection\Types\Iterable_;
+use phpDocumentor\Reflection\Types\Nullable;
+use phpDocumentor\Reflection\Types\Object_;
+use phpDocumentor\Reflection\Types\String_;
+use RuntimeException;
+
+use function array_key_exists;
+use function array_pop;
+use function array_values;
+use function class_exists;
+use function class_implements;
+use function count;
+use function current;
+use function end;
+use function in_array;
+use function is_numeric;
+use function key;
+use function preg_split;
+use function strpos;
+use function strtolower;
+use function trim;
+
+use const PREG_SPLIT_DELIM_CAPTURE;
+use const PREG_SPLIT_NO_EMPTY;
+
+final class TypeResolver
+{
+ /** @var string Definition of the ARRAY operator for types */
+ private const OPERATOR_ARRAY = '[]';
+
+ /** @var string Definition of the NAMESPACE operator in PHP */
+ private const OPERATOR_NAMESPACE = '\\';
+
+ /** @var int the iterator parser is inside a compound context */
+ private const PARSER_IN_COMPOUND = 0;
+
+ /** @var int the iterator parser is inside a nullable expression context */
+ private const PARSER_IN_NULLABLE = 1;
+
+ /** @var int the iterator parser is inside an array expression context */
+ private const PARSER_IN_ARRAY_EXPRESSION = 2;
+
+ /** @var int the iterator parser is inside a collection expression context */
+ private const PARSER_IN_COLLECTION_EXPRESSION = 3;
+
+ /**
+ * @var array<string, string> List of recognized keywords and unto which Value Object they map
+ * @psalm-var array<string, class-string<Type>>
+ */
+ private $keywords = [
+ 'string' => Types\String_::class,
+ 'class-string' => Types\ClassString::class,
+ 'interface-string' => Types\InterfaceString::class,
+ 'html-escaped-string' => PseudoTypes\HtmlEscapedString::class,
+ 'lowercase-string' => PseudoTypes\LowercaseString::class,
+ 'non-empty-lowercase-string' => PseudoTypes\NonEmptyLowercaseString::class,
+ 'non-empty-string' => PseudoTypes\NonEmptyString::class,
+ 'numeric-string' => PseudoTypes\NumericString::class,
+ 'numeric' => PseudoTypes\Numeric_::class,
+ 'trait-string' => PseudoTypes\TraitString::class,
+ 'int' => Types\Integer::class,
+ 'integer' => Types\Integer::class,
+ 'positive-int' => PseudoTypes\PositiveInteger::class,
+ 'negative-int' => PseudoTypes\NegativeInteger::class,
+ 'bool' => Types\Boolean::class,
+ 'boolean' => Types\Boolean::class,
+ 'real' => Types\Float_::class,
+ 'float' => Types\Float_::class,
+ 'double' => Types\Float_::class,
+ 'object' => Types\Object_::class,
+ 'mixed' => Types\Mixed_::class,
+ 'array' => Types\Array_::class,
+ 'array-key' => Types\ArrayKey::class,
+ 'resource' => Types\Resource_::class,
+ 'void' => Types\Void_::class,
+ 'null' => Types\Null_::class,
+ 'scalar' => Types\Scalar::class,
+ 'callback' => Types\Callable_::class,
+ 'callable' => Types\Callable_::class,
+ 'callable-string' => PseudoTypes\CallableString::class,
+ 'false' => PseudoTypes\False_::class,
+ 'true' => PseudoTypes\True_::class,
+ 'literal-string' => PseudoTypes\LiteralString::class,
+ 'self' => Types\Self_::class,
+ '$this' => Types\This::class,
+ 'static' => Types\Static_::class,
+ 'parent' => Types\Parent_::class,
+ 'iterable' => Types\Iterable_::class,
+ 'never' => Types\Never_::class,
+ 'list' => PseudoTypes\List_::class,
+ ];
+
+ /**
+ * @var FqsenResolver
+ * @psalm-readonly
+ */
+ private $fqsenResolver;
+
+ /**
+ * Initializes this TypeResolver with the means to create and resolve Fqsen objects.
+ */
+ public function __construct(?FqsenResolver $fqsenResolver = null)
+ {
+ $this->fqsenResolver = $fqsenResolver ?: new FqsenResolver();
+ }
+
+ /**
+ * Analyzes the given type and returns the FQCN variant.
+ *
+ * When a type is provided this method checks whether it is not a keyword or
+ * Fully Qualified Class Name. If so it will use the given namespace and
+ * aliases to expand the type to a FQCN representation.
+ *
+ * This method only works as expected if the namespace and aliases are set;
+ * no dynamic reflection is being performed here.
+ *
+ * @uses Context::getNamespaceAliases() to check whether the first part of the relative type name should not be
+ * replaced with another namespace.
+ * @uses Context::getNamespace() to determine with what to prefix the type name.
+ *
+ * @param string $type The relative or absolute type.
+ */
+ public function resolve(string $type, ?Context $context = null): Type
+ {
+ $type = trim($type);
+ if (!$type) {
+ throw new InvalidArgumentException('Attempted to resolve "' . $type . '" but it appears to be empty');
+ }
+
+ if ($context === null) {
+ $context = new Context('');
+ }
+
+ // split the type string into tokens `|`, `?`, `<`, `>`, `,`, `(`, `)`, `[]`, '<', '>' and type names
+ $tokens = preg_split(
+ '/(\\||\\?|<|>|&|, ?|\\(|\\)|\\[\\]+)/',
+ $type,
+ -1,
+ PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE
+ );
+
+ if ($tokens === false) {
+ throw new InvalidArgumentException('Unable to split the type string "' . $type . '" into tokens');
+ }
+
+ /** @var ArrayIterator<int, string|null> $tokenIterator */
+ $tokenIterator = new ArrayIterator($tokens);
+
+ return $this->parseTypes($tokenIterator, $context, self::PARSER_IN_COMPOUND);
+ }
+
+ /**
+ * Analyse each tokens and creates types
+ *
+ * @param ArrayIterator<int, string|null> $tokens the iterator on tokens
+ * @param int $parserContext on of self::PARSER_* constants, indicating
+ * the context where we are in the parsing
+ */
+ private function parseTypes(ArrayIterator $tokens, Context $context, int $parserContext): Type
+ {
+ $types = [];
+ $token = '';
+ $compoundToken = '|';
+ while ($tokens->valid()) {
+ $token = $tokens->current();
+ if ($token === null) {
+ throw new RuntimeException(
+ 'Unexpected nullable character'
+ );
+ }
+
+ if ($token === '|' || $token === '&') {
+ if (count($types) === 0) {
+ throw new RuntimeException(
+ 'A type is missing before a type separator'
+ );
+ }
+
+ if (
+ !in_array($parserContext, [
+ self::PARSER_IN_COMPOUND,
+ self::PARSER_IN_ARRAY_EXPRESSION,
+ self::PARSER_IN_COLLECTION_EXPRESSION,
+ ], true)
+ ) {
+ throw new RuntimeException(
+ 'Unexpected type separator'
+ );
+ }
+
+ $compoundToken = $token;
+ $tokens->next();
+ } elseif ($token === '?') {
+ if (
+ !in_array($parserContext, [
+ self::PARSER_IN_COMPOUND,
+ self::PARSER_IN_ARRAY_EXPRESSION,
+ self::PARSER_IN_COLLECTION_EXPRESSION,
+ ], true)
+ ) {
+ throw new RuntimeException(
+ 'Unexpected nullable character'
+ );
+ }
+
+ $tokens->next();
+ $type = $this->parseTypes($tokens, $context, self::PARSER_IN_NULLABLE);
+ $types[] = new Nullable($type);
+ } elseif ($token === '(') {
+ $tokens->next();
+ $type = $this->parseTypes($tokens, $context, self::PARSER_IN_ARRAY_EXPRESSION);
+
+ $token = $tokens->current();
+ if ($token === null) { // Someone did not properly close their array expression ..
+ break;
+ }
+
+ $tokens->next();
+
+ $resolvedType = new Expression($type);
+
+ $types[] = $resolvedType;
+ } elseif ($parserContext === self::PARSER_IN_ARRAY_EXPRESSION && isset($token[0]) && $token[0] === ')') {
+ break;
+ } elseif ($token === '<') {
+ if (count($types) === 0) {
+ throw new RuntimeException(
+ 'Unexpected collection operator "<", class name is missing'
+ );
+ }
+
+ $classType = array_pop($types);
+ if ($classType !== null) {
+ if ((string) $classType === 'class-string') {
+ $types[] = $this->resolveClassString($tokens, $context);
+ } elseif ((string) $classType === 'int') {
+ $types[] = $this->resolveIntRange($tokens);
+ } elseif ((string) $classType === 'interface-string') {
+ $types[] = $this->resolveInterfaceString($tokens, $context);
+ } else {
+ $types[] = $this->resolveCollection($tokens, $classType, $context);
+ }
+ }
+
+ $tokens->next();
+ } elseif (
+ $parserContext === self::PARSER_IN_COLLECTION_EXPRESSION
+ && ($token === '>' || trim($token) === ',')
+ ) {
+ break;
+ } elseif ($token === self::OPERATOR_ARRAY) {
+ end($types);
+ $last = key($types);
+ if ($last === null) {
+ throw new InvalidArgumentException('Unexpected array operator');
+ }
+
+ $lastItem = $types[$last];
+ if ($lastItem instanceof Expression) {
+ $lastItem = $lastItem->getValueType();
+ }
+
+ $types[$last] = new Array_($lastItem);
+
+ $tokens->next();
+ } else {
+ $type = $this->resolveSingleType($token, $context);
+ $tokens->next();
+ if ($parserContext === self::PARSER_IN_NULLABLE) {
+ return $type;
+ }
+
+ $types[] = $type;
+ }
+ }
+
+ if ($token === '|' || $token === '&') {
+ throw new RuntimeException(
+ 'A type is missing after a type separator'
+ );
+ }
+
+ if (count($types) === 0) {
+ if ($parserContext === self::PARSER_IN_NULLABLE) {
+ throw new RuntimeException(
+ 'A type is missing after a nullable character'
+ );
+ }
+
+ if ($parserContext === self::PARSER_IN_ARRAY_EXPRESSION) {
+ throw new RuntimeException(
+ 'A type is missing in an array expression'
+ );
+ }
+
+ if ($parserContext === self::PARSER_IN_COLLECTION_EXPRESSION) {
+ throw new RuntimeException(
+ 'A type is missing in a collection expression'
+ );
+ }
+ } elseif (count($types) === 1) {
+ return current($types);
+ }
+
+ if ($compoundToken === '|') {
+ return new Compound(array_values($types));
+ }
+
+ return new Intersection(array_values($types));
+ }
+
+ /**
+ * resolve the given type into a type object
+ *
+ * @param string $type the type string, representing a single type
+ *
+ * @return Type|Array_|Object_
+ *
+ * @psalm-mutation-free
+ */
+ private function resolveSingleType(string $type, Context $context): object
+ {
+ switch (true) {
+ case $this->isKeyword($type):
+ return $this->resolveKeyword($type);
+
+ case $this->isFqsen($type):
+ return $this->resolveTypedObject($type);
+
+ case $this->isPartialStructuralElementName($type):
+ return $this->resolveTypedObject($type, $context);
+
+ // @codeCoverageIgnoreStart
+ default:
+ // I haven't got the foggiest how the logic would come here but added this as a defense.
+ throw new RuntimeException(
+ 'Unable to resolve type "' . $type . '", there is no known method to resolve it'
+ );
+ }
+
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * Adds a keyword to the list of Keywords and associates it with a specific Value Object.
+ *
+ * @psalm-param class-string<Type> $typeClassName
+ */
+ public function addKeyword(string $keyword, string $typeClassName): void
+ {
+ if (!class_exists($typeClassName)) {
+ throw new InvalidArgumentException(
+ 'The Value Object that needs to be created with a keyword "' . $keyword . '" must be an existing class'
+ . ' but we could not find the class ' . $typeClassName
+ );
+ }
+
+ $interfaces = class_implements($typeClassName);
+ if ($interfaces === false) {
+ throw new InvalidArgumentException(
+ 'The Value Object that needs to be created with a keyword "' . $keyword . '" must be an existing class'
+ . ' but we could not find the class ' . $typeClassName
+ );
+ }
+
+ if (!in_array(Type::class, $interfaces, true)) {
+ throw new InvalidArgumentException(
+ 'The class "' . $typeClassName . '" must implement the interface "phpDocumentor\Reflection\Type"'
+ );
+ }
+
+ $this->keywords[$keyword] = $typeClassName;
+ }
+
+ /**
+ * Detects whether the given type represents a PHPDoc keyword.
+ *
+ * @param string $type A relative or absolute type as defined in the phpDocumentor documentation.
+ *
+ * @psalm-mutation-free
+ */
+ private function isKeyword(string $type): bool
+ {
+ return array_key_exists(strtolower($type), $this->keywords);
+ }
+
+ /**
+ * Detects whether the given type represents a relative structural element name.
+ *
+ * @param string $type A relative or absolute type as defined in the phpDocumentor documentation.
+ *
+ * @psalm-mutation-free
+ */
+ private function isPartialStructuralElementName(string $type): bool
+ {
+ return (isset($type[0]) && $type[0] !== self::OPERATOR_NAMESPACE) && !$this->isKeyword($type);
+ }
+
+ /**
+ * Tests whether the given type is a Fully Qualified Structural Element Name.
+ *
+ * @psalm-mutation-free
+ */
+ private function isFqsen(string $type): bool
+ {
+ return strpos($type, self::OPERATOR_NAMESPACE) === 0;
+ }
+
+ /**
+ * Resolves the given keyword (such as `string`) into a Type object representing that keyword.
+ *
+ * @psalm-mutation-free
+ */
+ private function resolveKeyword(string $type): Type
+ {
+ $className = $this->keywords[strtolower($type)];
+
+ return new $className();
+ }
+
+ /**
+ * Resolves the given FQSEN string into an FQSEN object.
+ *
+ * @psalm-mutation-free
+ */
+ private function resolveTypedObject(string $type, ?Context $context = null): Object_
+ {
+ return new Object_($this->fqsenResolver->resolve($type, $context));
+ }
+
+ /**
+ * Resolves class string
+ *
+ * @param ArrayIterator<int, (string|null)> $tokens
+ */
+ private function resolveClassString(ArrayIterator $tokens, Context $context): Type
+ {
+ $tokens->next();
+
+ $classType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION);
+
+ if (!$classType instanceof Object_ || $classType->getFqsen() === null) {
+ throw new RuntimeException(
+ $classType . ' is not a class string'
+ );
+ }
+
+ $token = $tokens->current();
+ if ($token !== '>') {
+ if (empty($token)) {
+ throw new RuntimeException(
+ 'class-string: ">" is missing'
+ );
+ }
+
+ throw new RuntimeException(
+ 'Unexpected character "' . $token . '", ">" is missing'
+ );
+ }
+
+ return new ClassString($classType->getFqsen());
+ }
+
+ /**
+ * Resolves integer ranges
+ *
+ * @param ArrayIterator<int, (string|null)> $tokens
+ */
+ private function resolveIntRange(ArrayIterator $tokens): Type
+ {
+ $tokens->next();
+
+ $token = '';
+ $minValue = null;
+ $maxValue = null;
+ $commaFound = false;
+ $tokenCounter = 0;
+ while ($tokens->valid()) {
+ $tokenCounter++;
+ $token = $tokens->current();
+ if ($token === null) {
+ throw new RuntimeException(
+ 'Unexpected nullable character'
+ );
+ }
+
+ $token = trim($token);
+
+ if ($token === '>') {
+ break;
+ }
+
+ if ($token === ',') {
+ $commaFound = true;
+ }
+
+ if ($commaFound === false && $minValue === null) {
+ if (is_numeric($token) || $token === 'max' || $token === 'min') {
+ $minValue = $token;
+ }
+ }
+
+ if ($commaFound === true && $maxValue === null) {
+ if (is_numeric($token) || $token === 'max' || $token === 'min') {
+ $maxValue = $token;
+ }
+ }
+
+ $tokens->next();
+ }
+
+ if ($token !== '>') {
+ if (empty($token)) {
+ throw new RuntimeException(
+ 'interface-string: ">" is missing'
+ );
+ }
+
+ throw new RuntimeException(
+ 'Unexpected character "' . $token . '", ">" is missing'
+ );
+ }
+
+ if (!$minValue || !$maxValue || $tokenCounter > 4) {
+ throw new RuntimeException(
+ 'int<min,max> has not the correct format'
+ );
+ }
+
+ return new IntegerRange($minValue, $maxValue);
+ }
+
+ /**
+ * Resolves class string
+ *
+ * @param ArrayIterator<int, (string|null)> $tokens
+ */
+ private function resolveInterfaceString(ArrayIterator $tokens, Context $context): Type
+ {
+ $tokens->next();
+
+ $classType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION);
+
+ if (!$classType instanceof Object_ || $classType->getFqsen() === null) {
+ throw new RuntimeException(
+ $classType . ' is not a interface string'
+ );
+ }
+
+ $token = $tokens->current();
+ if ($token !== '>') {
+ if (empty($token)) {
+ throw new RuntimeException(
+ 'interface-string: ">" is missing'
+ );
+ }
+
+ throw new RuntimeException(
+ 'Unexpected character "' . $token . '", ">" is missing'
+ );
+ }
+
+ return new InterfaceString($classType->getFqsen());
+ }
+
+ /**
+ * Resolves the collection values and keys
+ *
+ * @param ArrayIterator<int, (string|null)> $tokens
+ *
+ * @return Array_|Iterable_|Collection
+ */
+ private function resolveCollection(ArrayIterator $tokens, Type $classType, Context $context): Type
+ {
+ $isArray = ((string) $classType === 'array');
+ $isIterable = ((string) $classType === 'iterable');
+ $isList = ((string) $classType === 'list');
+
+ // allow only "array", "iterable" or class name before "<"
+ if (
+ !$isArray && !$isIterable && !$isList
+ && (!$classType instanceof Object_ || $classType->getFqsen() === null)
+ ) {
+ throw new RuntimeException(
+ $classType . ' is not a collection'
+ );
+ }
+
+ $tokens->next();
+
+ $valueType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION);
+ $keyType = null;
+
+ $token = $tokens->current();
+ if ($token !== null && trim($token) === ',' && !$isList) {
+ // if we have a comma, then we just parsed the key type, not the value type
+ $keyType = $valueType;
+ if ($isArray) {
+ // check the key type for an "array" collection. We allow only
+ // strings or integers.
+ if (
+ !$keyType instanceof ArrayKey &&
+ !$keyType instanceof String_ &&
+ !$keyType instanceof Integer &&
+ !$keyType instanceof Compound
+ ) {
+ throw new RuntimeException(
+ 'An array can have only integers or strings as keys'
+ );
+ }
+
+ if ($keyType instanceof Compound) {
+ foreach ($keyType->getIterator() as $item) {
+ if (
+ !$item instanceof ArrayKey &&
+ !$item instanceof String_ &&
+ !$item instanceof Integer
+ ) {
+ throw new RuntimeException(
+ 'An array can have only integers or strings as keys'
+ );
+ }
+ }
+ }
+ }
+
+ $tokens->next();
+ // now let's parse the value type
+ $valueType = $this->parseTypes($tokens, $context, self::PARSER_IN_COLLECTION_EXPRESSION);
+ }
+
+ $token = $tokens->current();
+ if ($token !== '>') {
+ if (empty($token)) {
+ throw new RuntimeException(
+ 'Collection: ">" is missing'
+ );
+ }
+
+ throw new RuntimeException(
+ 'Unexpected character "' . $token . '", ">" is missing'
+ );
+ }
+
+ if ($isArray) {
+ return new Array_($valueType, $keyType);
+ }
+
+ if ($isIterable) {
+ return new Iterable_($valueType, $keyType);
+ }
+
+ if ($isList) {
+ return new List_($valueType);
+ }
+
+ if ($classType instanceof Object_) {
+ return $this->makeCollectionFromObject($classType, $valueType, $keyType);
+ }
+
+ throw new RuntimeException('Invalid $classType provided');
+ }
+
+ /**
+ * @psalm-pure
+ */
+ private function makeCollectionFromObject(Object_ $object, Type $valueType, ?Type $keyType = null): Collection
+ {
+ return new Collection($object->getFqsen(), $valueType, $keyType);
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/AbstractList.php b/vendor/phpdocumentor/type-resolver/src/Types/AbstractList.php
new file mode 100644
index 000000000..b674862af
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/AbstractList.php
@@ -0,0 +1,83 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Represents a list of values. This is an abstract class for Array_ and Collection.
+ *
+ * @psalm-immutable
+ */
+abstract class AbstractList implements Type
+{
+ /** @var Type */
+ protected $valueType;
+
+ /** @var Type|null */
+ protected $keyType;
+
+ /** @var Type */
+ protected $defaultKeyType;
+
+ /**
+ * Initializes this representation of an array with the given Type.
+ */
+ public function __construct(?Type $valueType = null, ?Type $keyType = null)
+ {
+ if ($valueType === null) {
+ $valueType = new Mixed_();
+ }
+
+ $this->valueType = $valueType;
+ $this->defaultKeyType = new Compound([new String_(), new Integer()]);
+ $this->keyType = $keyType;
+ }
+
+ /**
+ * Returns the type for the keys of this array.
+ */
+ public function getKeyType(): Type
+ {
+ return $this->keyType ?? $this->defaultKeyType;
+ }
+
+ /**
+ * Returns the value for the keys of this array.
+ */
+ public function getValueType(): Type
+ {
+ return $this->valueType;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ if ($this->keyType) {
+ return 'array<' . $this->keyType . ',' . $this->valueType . '>';
+ }
+
+ if ($this->valueType instanceof Mixed_) {
+ return 'array';
+ }
+
+ if ($this->valueType instanceof Compound) {
+ return '(' . $this->valueType . ')[]';
+ }
+
+ return $this->valueType . '[]';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/AggregatedType.php b/vendor/phpdocumentor/type-resolver/src/Types/AggregatedType.php
new file mode 100644
index 000000000..472a1cdc6
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/AggregatedType.php
@@ -0,0 +1,125 @@
+<?php
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+declare(strict_types=1);
+
+namespace phpDocumentor\Reflection\Types;
+
+use ArrayIterator;
+use IteratorAggregate;
+use phpDocumentor\Reflection\Type;
+
+use function array_key_exists;
+use function implode;
+
+/**
+ * Base class for aggregated types like Compound and Intersection
+ *
+ * A Aggregated Type is not so much a special keyword or object reference but is a series of Types that are separated
+ * using separator.
+ *
+ * @psalm-immutable
+ * @template-implements IteratorAggregate<int, Type>
+ */
+abstract class AggregatedType implements Type, IteratorAggregate
+{
+ /**
+ * @psalm-allow-private-mutation
+ * @var array<int, Type>
+ */
+ private $types = [];
+
+ /** @var string */
+ private $token;
+
+ /**
+ * @param array<Type> $types
+ */
+ public function __construct(array $types, string $token)
+ {
+ foreach ($types as $type) {
+ $this->add($type);
+ }
+
+ $this->token = $token;
+ }
+
+ /**
+ * Returns the type at the given index.
+ */
+ public function get(int $index): ?Type
+ {
+ if (!$this->has($index)) {
+ return null;
+ }
+
+ return $this->types[$index];
+ }
+
+ /**
+ * Tests if this compound type has a type with the given index.
+ */
+ public function has(int $index): bool
+ {
+ return array_key_exists($index, $this->types);
+ }
+
+ /**
+ * Tests if this compound type contains the given type.
+ */
+ public function contains(Type $type): bool
+ {
+ foreach ($this->types as $typePart) {
+ // if the type is duplicate; do not add it
+ if ((string) $typePart === (string) $type) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return implode($this->token, $this->types);
+ }
+
+ /**
+ * @return ArrayIterator<int, Type>
+ */
+ public function getIterator(): ArrayIterator
+ {
+ return new ArrayIterator($this->types);
+ }
+
+ /**
+ * @psalm-suppress ImpureMethodCall
+ */
+ private function add(Type $type): void
+ {
+ if ($type instanceof self) {
+ foreach ($type->getIterator() as $subType) {
+ $this->add($subType);
+ }
+
+ return;
+ }
+
+ // if the type is duplicate; do not add it
+ if ($this->contains($type)) {
+ return;
+ }
+
+ $this->types[] = $type;
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/ArrayKey.php b/vendor/phpdocumentor/type-resolver/src/Types/ArrayKey.php
new file mode 100644
index 000000000..cf86df007
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/ArrayKey.php
@@ -0,0 +1,42 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing a array-key Type.
+ *
+ * A array-key Type is the supertype (but not a union) of int and string.
+ *
+ * @psalm-immutable
+ */
+final class ArrayKey extends AggregatedType implements PseudoType
+{
+ public function __construct()
+ {
+ parent::__construct([new String_(), new Integer()], '|');
+ }
+
+ public function underlyingType(): Type
+ {
+ return new Compound([new String_(), new Integer()]);
+ }
+
+ public function __toString(): string
+ {
+ return 'array-key';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Array_.php b/vendor/phpdocumentor/type-resolver/src/Types/Array_.php
new file mode 100644
index 000000000..bc17225f5
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Array_.php
@@ -0,0 +1,29 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+/**
+ * Represents an array type as described in the PSR-5, the PHPDoc Standard.
+ *
+ * An array can be represented in two forms:
+ *
+ * 1. Untyped (`array`), where the key and value type is unknown and hence classified as 'Mixed_'.
+ * 2. Types (`string[]`), where the value type is provided by preceding an opening and closing square bracket with a
+ * type name.
+ *
+ * @psalm-immutable
+ */
+class Array_ extends AbstractList
+{
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php b/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php
new file mode 100644
index 000000000..8b1a3f34e
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Boolean.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing a Boolean type.
+ *
+ * @psalm-immutable
+ */
+class Boolean implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'bool';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php b/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php
new file mode 100644
index 000000000..4e67aa4a0
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Callable_.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing a Callable type.
+ *
+ * @psalm-immutable
+ */
+final class Callable_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'callable';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/ClassString.php b/vendor/phpdocumentor/type-resolver/src/Types/ClassString.php
new file mode 100644
index 000000000..fbdd879bb
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/ClassString.php
@@ -0,0 +1,62 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Fqsen;
+use phpDocumentor\Reflection\PseudoType;
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+final class ClassString extends String_ implements PseudoType
+{
+ /** @var Fqsen|null */
+ private $fqsen;
+
+ /**
+ * Initializes this representation of a class string with the given Fqsen.
+ */
+ public function __construct(?Fqsen $fqsen = null)
+ {
+ $this->fqsen = $fqsen;
+ }
+
+ public function underlyingType(): Type
+ {
+ return new String_();
+ }
+
+ /**
+ * Returns the FQSEN associated with this object.
+ */
+ public function getFqsen(): ?Fqsen
+ {
+ return $this->fqsen;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ if ($this->fqsen === null) {
+ return 'class-string';
+ }
+
+ return 'class-string<' . (string) $this->fqsen . '>';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Collection.php b/vendor/phpdocumentor/type-resolver/src/Types/Collection.php
new file mode 100644
index 000000000..943cc22e5
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Collection.php
@@ -0,0 +1,68 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Fqsen;
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Represents a collection type as described in the PSR-5, the PHPDoc Standard.
+ *
+ * A collection can be represented in two forms:
+ *
+ * 1. `ACollectionObject<aValueType>`
+ * 2. `ACollectionObject<aValueType,aKeyType>`
+ *
+ * - ACollectionObject can be 'array' or an object that can act as an array
+ * - aValueType and aKeyType can be any type expression
+ *
+ * @psalm-immutable
+ */
+final class Collection extends AbstractList
+{
+ /** @var Fqsen|null */
+ private $fqsen;
+
+ /**
+ * Initializes this representation of an array with the given Type or Fqsen.
+ */
+ public function __construct(?Fqsen $fqsen, Type $valueType, ?Type $keyType = null)
+ {
+ parent::__construct($valueType, $keyType);
+
+ $this->fqsen = $fqsen;
+ }
+
+ /**
+ * Returns the FQSEN associated with this object.
+ */
+ public function getFqsen(): ?Fqsen
+ {
+ return $this->fqsen;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ $objectType = (string) ($this->fqsen ?? 'object');
+
+ if ($this->keyType === null) {
+ return $objectType . '<' . $this->valueType . '>';
+ }
+
+ return $objectType . '<' . $this->keyType . ',' . $this->valueType . '>';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Compound.php b/vendor/phpdocumentor/type-resolver/src/Types/Compound.php
new file mode 100644
index 000000000..ad426cc2c
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Compound.php
@@ -0,0 +1,38 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing a Compound Type.
+ *
+ * A Compound Type is not so much a special keyword or object reference but is a series of Types that are separated
+ * using an OR operator (`|`). This combination of types signifies that whatever is associated with this compound type
+ * may contain a value with any of the given types.
+ *
+ * @psalm-immutable
+ */
+final class Compound extends AggregatedType
+{
+ /**
+ * Initializes a compound type (i.e. `string|int`) and tests if the provided types all implement the Type interface.
+ *
+ * @param array<Type> $types
+ */
+ public function __construct(array $types)
+ {
+ parent::__construct($types, '|');
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Context.php b/vendor/phpdocumentor/type-resolver/src/Types/Context.php
new file mode 100644
index 000000000..79aadaf88
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Context.php
@@ -0,0 +1,95 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use function strlen;
+use function substr;
+use function trim;
+
+/**
+ * Provides information about the Context in which the DocBlock occurs that receives this context.
+ *
+ * A DocBlock does not know of its own accord in which namespace it occurs and which namespace aliases are applicable
+ * for the block of code in which it is in. This information is however necessary to resolve Class names in tags since
+ * you can provide a short form or make use of namespace aliases.
+ *
+ * The phpDocumentor Reflection component knows how to create this class but if you use the DocBlock parser from your
+ * own application it is possible to generate a Context class using the ContextFactory; this will analyze the file in
+ * which an associated class resides for its namespace and imports.
+ *
+ * @see ContextFactory::createFromClassReflector()
+ * @see ContextFactory::createForNamespace()
+ *
+ * @psalm-immutable
+ */
+final class Context
+{
+ /** @var string The current namespace. */
+ private $namespace;
+
+ /**
+ * @var string[] List of namespace aliases => Fully Qualified Namespace.
+ * @psalm-var array<string, string>
+ */
+ private $namespaceAliases;
+
+ /**
+ * Initializes the new context and normalizes all passed namespaces to be in Qualified Namespace Name (QNN)
+ * format (without a preceding `\`).
+ *
+ * @param string $namespace The namespace where this DocBlock resides in.
+ * @param string[] $namespaceAliases List of namespace aliases => Fully Qualified Namespace.
+ * @psalm-param array<string, string> $namespaceAliases
+ */
+ public function __construct(string $namespace, array $namespaceAliases = [])
+ {
+ $this->namespace = $namespace !== 'global' && $namespace !== 'default'
+ ? trim($namespace, '\\')
+ : '';
+
+ foreach ($namespaceAliases as $alias => $fqnn) {
+ if ($fqnn[0] === '\\') {
+ $fqnn = substr($fqnn, 1);
+ }
+
+ if ($fqnn[strlen($fqnn) - 1] === '\\') {
+ $fqnn = substr($fqnn, 0, -1);
+ }
+
+ $namespaceAliases[$alias] = $fqnn;
+ }
+
+ $this->namespaceAliases = $namespaceAliases;
+ }
+
+ /**
+ * Returns the Qualified Namespace Name (thus without `\` in front) where the associated element is in.
+ */
+ public function getNamespace(): string
+ {
+ return $this->namespace;
+ }
+
+ /**
+ * Returns a list of Qualified Namespace Names (thus without `\` in front) that are imported, the keys represent
+ * the alias for the imported Namespace.
+ *
+ * @return string[]
+ * @psalm-return array<string, string>
+ */
+ public function getNamespaceAliases(): array
+ {
+ return $this->namespaceAliases;
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php b/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php
new file mode 100644
index 000000000..892ee0f90
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/ContextFactory.php
@@ -0,0 +1,420 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use ArrayIterator;
+use InvalidArgumentException;
+use ReflectionClass;
+use ReflectionClassConstant;
+use ReflectionMethod;
+use ReflectionParameter;
+use ReflectionProperty;
+use Reflector;
+use RuntimeException;
+use UnexpectedValueException;
+
+use function define;
+use function defined;
+use function file_exists;
+use function file_get_contents;
+use function get_class;
+use function in_array;
+use function is_string;
+use function strrpos;
+use function substr;
+use function token_get_all;
+use function trim;
+
+use const T_AS;
+use const T_CLASS;
+use const T_CURLY_OPEN;
+use const T_DOLLAR_OPEN_CURLY_BRACES;
+use const T_NAME_FULLY_QUALIFIED;
+use const T_NAME_QUALIFIED;
+use const T_NAMESPACE;
+use const T_NS_SEPARATOR;
+use const T_STRING;
+use const T_USE;
+
+if (!defined('T_NAME_QUALIFIED')) {
+ define('T_NAME_QUALIFIED', 'T_NAME_QUALIFIED');
+}
+
+if (!defined('T_NAME_FULLY_QUALIFIED')) {
+ define('T_NAME_FULLY_QUALIFIED', 'T_NAME_FULLY_QUALIFIED');
+}
+
+/**
+ * Convenience class to create a Context for DocBlocks when not using the Reflection Component of phpDocumentor.
+ *
+ * For a DocBlock to be able to resolve types that use partial namespace names or rely on namespace imports we need to
+ * provide a bit of context so that the DocBlock can read that and based on it decide how to resolve the types to
+ * Fully Qualified names.
+ *
+ * @see Context for more information.
+ */
+final class ContextFactory
+{
+ /** The literal used at the end of a use statement. */
+ private const T_LITERAL_END_OF_USE = ';';
+
+ /** The literal used between sets of use statements */
+ private const T_LITERAL_USE_SEPARATOR = ',';
+
+ /**
+ * Build a Context given a Class Reflection.
+ *
+ * @see Context for more information on Contexts.
+ */
+ public function createFromReflector(Reflector $reflector): Context
+ {
+ if ($reflector instanceof ReflectionClass) {
+ //phpcs:ignore SlevomatCodingStandard.Commenting.InlineDocCommentDeclaration.MissingVariable
+ /** @var ReflectionClass<object> $reflector */
+
+ return $this->createFromReflectionClass($reflector);
+ }
+
+ if ($reflector instanceof ReflectionParameter) {
+ return $this->createFromReflectionParameter($reflector);
+ }
+
+ if ($reflector instanceof ReflectionMethod) {
+ return $this->createFromReflectionMethod($reflector);
+ }
+
+ if ($reflector instanceof ReflectionProperty) {
+ return $this->createFromReflectionProperty($reflector);
+ }
+
+ if ($reflector instanceof ReflectionClassConstant) {
+ return $this->createFromReflectionClassConstant($reflector);
+ }
+
+ throw new UnexpectedValueException('Unhandled \Reflector instance given: ' . get_class($reflector));
+ }
+
+ private function createFromReflectionParameter(ReflectionParameter $parameter): Context
+ {
+ $class = $parameter->getDeclaringClass();
+ if (!$class) {
+ throw new InvalidArgumentException('Unable to get class of ' . $parameter->getName());
+ }
+
+ return $this->createFromReflectionClass($class);
+ }
+
+ private function createFromReflectionMethod(ReflectionMethod $method): Context
+ {
+ $class = $method->getDeclaringClass();
+
+ return $this->createFromReflectionClass($class);
+ }
+
+ private function createFromReflectionProperty(ReflectionProperty $property): Context
+ {
+ $class = $property->getDeclaringClass();
+
+ return $this->createFromReflectionClass($class);
+ }
+
+ private function createFromReflectionClassConstant(ReflectionClassConstant $constant): Context
+ {
+ //phpcs:ignore SlevomatCodingStandard.Commenting.InlineDocCommentDeclaration.MissingVariable
+ /** @phpstan-var ReflectionClass<object> $class */
+ $class = $constant->getDeclaringClass();
+
+ return $this->createFromReflectionClass($class);
+ }
+
+ /**
+ * @phpstan-param ReflectionClass<object> $class
+ */
+ private function createFromReflectionClass(ReflectionClass $class): Context
+ {
+ $fileName = $class->getFileName();
+ $namespace = $class->getNamespaceName();
+
+ if (is_string($fileName) && file_exists($fileName)) {
+ $contents = file_get_contents($fileName);
+ if ($contents === false) {
+ throw new RuntimeException('Unable to read file "' . $fileName . '"');
+ }
+
+ return $this->createForNamespace($namespace, $contents);
+ }
+
+ return new Context($namespace, []);
+ }
+
+ /**
+ * Build a Context for a namespace in the provided file contents.
+ *
+ * @see Context for more information on Contexts.
+ *
+ * @param string $namespace It does not matter if a `\` precedes the namespace name,
+ * this method first normalizes.
+ * @param string $fileContents The file's contents to retrieve the aliases from with the given namespace.
+ */
+ public function createForNamespace(string $namespace, string $fileContents): Context
+ {
+ $namespace = trim($namespace, '\\');
+ $useStatements = [];
+ $currentNamespace = '';
+ $tokens = new ArrayIterator(token_get_all($fileContents));
+
+ while ($tokens->valid()) {
+ $currentToken = $tokens->current();
+ switch ($currentToken[0]) {
+ case T_NAMESPACE:
+ $currentNamespace = $this->parseNamespace($tokens);
+ break;
+ case T_CLASS:
+ // Fast-forward the iterator through the class so that any
+ // T_USE tokens found within are skipped - these are not
+ // valid namespace use statements so should be ignored.
+ $braceLevel = 0;
+ $firstBraceFound = false;
+ while ($tokens->valid() && ($braceLevel > 0 || !$firstBraceFound)) {
+ $currentToken = $tokens->current();
+ if (
+ $currentToken === '{'
+ || in_array($currentToken[0], [T_CURLY_OPEN, T_DOLLAR_OPEN_CURLY_BRACES], true)
+ ) {
+ if (!$firstBraceFound) {
+ $firstBraceFound = true;
+ }
+
+ ++$braceLevel;
+ }
+
+ if ($currentToken === '}') {
+ --$braceLevel;
+ }
+
+ $tokens->next();
+ }
+
+ break;
+ case T_USE:
+ if ($currentNamespace === $namespace) {
+ $useStatements += $this->parseUseStatement($tokens);
+ }
+
+ break;
+ }
+
+ $tokens->next();
+ }
+
+ return new Context($namespace, $useStatements);
+ }
+
+ /**
+ * Deduce the name from tokens when we are at the T_NAMESPACE token.
+ *
+ * @param ArrayIterator<int, string|array{0:int,1:string,2:int}> $tokens
+ */
+ private function parseNamespace(ArrayIterator $tokens): string
+ {
+ // skip to the first string or namespace separator
+ $this->skipToNextStringOrNamespaceSeparator($tokens);
+
+ $name = '';
+ $acceptedTokens = [T_STRING, T_NS_SEPARATOR, T_NAME_QUALIFIED];
+ while ($tokens->valid() && in_array($tokens->current()[0], $acceptedTokens, true)) {
+ $name .= $tokens->current()[1];
+ $tokens->next();
+ }
+
+ return $name;
+ }
+
+ /**
+ * Deduce the names of all imports when we are at the T_USE token.
+ *
+ * @param ArrayIterator<int, string|array{0:int,1:string,2:int}> $tokens
+ *
+ * @return string[]
+ * @psalm-return array<string, string>
+ */
+ private function parseUseStatement(ArrayIterator $tokens): array
+ {
+ $uses = [];
+
+ while ($tokens->valid()) {
+ $this->skipToNextStringOrNamespaceSeparator($tokens);
+
+ $uses += $this->extractUseStatements($tokens);
+ $currentToken = $tokens->current();
+ if ($currentToken[0] === self::T_LITERAL_END_OF_USE) {
+ return $uses;
+ }
+ }
+
+ return $uses;
+ }
+
+ /**
+ * Fast-forwards the iterator as longs as we don't encounter a T_STRING or T_NS_SEPARATOR token.
+ *
+ * @param ArrayIterator<int, string|array{0:int,1:string,2:int}> $tokens
+ */
+ private function skipToNextStringOrNamespaceSeparator(ArrayIterator $tokens): void
+ {
+ while ($tokens->valid()) {
+ $currentToken = $tokens->current();
+ if (in_array($currentToken[0], [T_STRING, T_NS_SEPARATOR], true)) {
+ break;
+ }
+
+ if ($currentToken[0] === T_NAME_QUALIFIED) {
+ break;
+ }
+
+ if (defined('T_NAME_FULLY_QUALIFIED') && $currentToken[0] === T_NAME_FULLY_QUALIFIED) {
+ break;
+ }
+
+ $tokens->next();
+ }
+ }
+
+ /**
+ * Deduce the namespace name and alias of an import when we are at the T_USE token or have not reached the end of
+ * a USE statement yet. This will return a key/value array of the alias => namespace.
+ *
+ * @param ArrayIterator<int, string|array{0:int,1:string,2:int}> $tokens
+ *
+ * @return string[]
+ * @psalm-return array<string, string>
+ *
+ * @psalm-suppress TypeDoesNotContainType
+ */
+ private function extractUseStatements(ArrayIterator $tokens): array
+ {
+ $extractedUseStatements = [];
+ $groupedNs = '';
+ $currentNs = '';
+ $currentAlias = '';
+ $state = 'start';
+
+ while ($tokens->valid()) {
+ $currentToken = $tokens->current();
+ $tokenId = is_string($currentToken) ? $currentToken : $currentToken[0];
+ $tokenValue = is_string($currentToken) ? null : $currentToken[1];
+ switch ($state) {
+ case 'start':
+ switch ($tokenId) {
+ case T_STRING:
+ case T_NS_SEPARATOR:
+ $currentNs .= (string) $tokenValue;
+ $currentAlias = $tokenValue;
+ break;
+ case T_NAME_QUALIFIED:
+ case T_NAME_FULLY_QUALIFIED:
+ $currentNs .= (string) $tokenValue;
+ $currentAlias = substr(
+ (string) $tokenValue,
+ (int) (strrpos((string) $tokenValue, '\\')) + 1
+ );
+ break;
+ case T_CURLY_OPEN:
+ case '{':
+ $state = 'grouped';
+ $groupedNs = $currentNs;
+ break;
+ case T_AS:
+ $state = 'start-alias';
+ break;
+ case self::T_LITERAL_USE_SEPARATOR:
+ case self::T_LITERAL_END_OF_USE:
+ $state = 'end';
+ break;
+ default:
+ break;
+ }
+
+ break;
+ case 'start-alias':
+ switch ($tokenId) {
+ case T_STRING:
+ $currentAlias = $tokenValue;
+ break;
+ case self::T_LITERAL_USE_SEPARATOR:
+ case self::T_LITERAL_END_OF_USE:
+ $state = 'end';
+ break;
+ default:
+ break;
+ }
+
+ break;
+ case 'grouped':
+ switch ($tokenId) {
+ case T_STRING:
+ case T_NS_SEPARATOR:
+ $currentNs .= (string) $tokenValue;
+ $currentAlias = $tokenValue;
+ break;
+ case T_AS:
+ $state = 'grouped-alias';
+ break;
+ case self::T_LITERAL_USE_SEPARATOR:
+ $state = 'grouped';
+ $extractedUseStatements[(string) $currentAlias] = $currentNs;
+ $currentNs = $groupedNs;
+ $currentAlias = '';
+ break;
+ case self::T_LITERAL_END_OF_USE:
+ $state = 'end';
+ break;
+ default:
+ break;
+ }
+
+ break;
+ case 'grouped-alias':
+ switch ($tokenId) {
+ case T_STRING:
+ $currentAlias = $tokenValue;
+ break;
+ case self::T_LITERAL_USE_SEPARATOR:
+ $state = 'grouped';
+ $extractedUseStatements[(string) $currentAlias] = $currentNs;
+ $currentNs = $groupedNs;
+ $currentAlias = '';
+ break;
+ case self::T_LITERAL_END_OF_USE:
+ $state = 'end';
+ break;
+ default:
+ break;
+ }
+ }
+
+ if ($state === 'end') {
+ break;
+ }
+
+ $tokens->next();
+ }
+
+ if ($groupedNs !== $currentNs) {
+ $extractedUseStatements[(string) $currentAlias] = $currentNs;
+ }
+
+ return $extractedUseStatements;
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Expression.php b/vendor/phpdocumentor/type-resolver/src/Types/Expression.php
new file mode 100644
index 000000000..da5f65d59
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Expression.php
@@ -0,0 +1,51 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Represents an expression type as described in the PSR-5, the PHPDoc Standard.
+ *
+ * @psalm-immutable
+ */
+final class Expression implements Type
+{
+ /** @var Type */
+ protected $valueType;
+
+ /**
+ * Initializes this representation of an array with the given Type.
+ */
+ public function __construct(Type $valueType)
+ {
+ $this->valueType = $valueType;
+ }
+
+ /**
+ * Returns the value for the keys of this array.
+ */
+ public function getValueType(): Type
+ {
+ return $this->valueType;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return '(' . $this->valueType . ')';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Float_.php b/vendor/phpdocumentor/type-resolver/src/Types/Float_.php
new file mode 100644
index 000000000..86138c0e7
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Float_.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing a Float.
+ *
+ * @psalm-immutable
+ */
+final class Float_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'float';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Integer.php b/vendor/phpdocumentor/type-resolver/src/Types/Integer.php
new file mode 100644
index 000000000..10ce3c58c
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Integer.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value object representing Integer type
+ *
+ * @psalm-immutable
+ */
+class Integer implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'int';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/InterfaceString.php b/vendor/phpdocumentor/type-resolver/src/Types/InterfaceString.php
new file mode 100644
index 000000000..9836961fd
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/InterfaceString.php
@@ -0,0 +1,56 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Fqsen;
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+final class InterfaceString implements Type
+{
+ /** @var Fqsen|null */
+ private $fqsen;
+
+ /**
+ * Initializes this representation of a class string with the given Fqsen.
+ */
+ public function __construct(?Fqsen $fqsen = null)
+ {
+ $this->fqsen = $fqsen;
+ }
+
+ /**
+ * Returns the FQSEN associated with this object.
+ */
+ public function getFqsen(): ?Fqsen
+ {
+ return $this->fqsen;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ if ($this->fqsen === null) {
+ return 'interface-string';
+ }
+
+ return 'interface-string<' . (string) $this->fqsen . '>';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Intersection.php b/vendor/phpdocumentor/type-resolver/src/Types/Intersection.php
new file mode 100644
index 000000000..ced37b626
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Intersection.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+declare(strict_types=1);
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing a Compound Type.
+ *
+ * A Intersection Type is not so much a special keyword or object reference but is a series of Types that are separated
+ * using an AND operator (`&`). This combination of types signifies that whatever is associated with this Intersection
+ * type may contain a value with any of the given types.
+ *
+ * @psalm-immutable
+ */
+final class Intersection extends AggregatedType
+{
+ /**
+ * Initializes a intersection type (i.e. `\A&\B`) and tests if the provided types all implement the Type interface.
+ *
+ * @param array<Type> $types
+ */
+ public function __construct(array $types)
+ {
+ parent::__construct($types, '&');
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Iterable_.php b/vendor/phpdocumentor/type-resolver/src/Types/Iterable_.php
new file mode 100644
index 000000000..1ca069f2e
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Iterable_.php
@@ -0,0 +1,38 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+/**
+ * Value Object representing iterable type
+ *
+ * @psalm-immutable
+ */
+final class Iterable_ extends AbstractList
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ if ($this->keyType) {
+ return 'iterable<' . $this->keyType . ',' . $this->valueType . '>';
+ }
+
+ if ($this->valueType instanceof Mixed_) {
+ return 'iterable';
+ }
+
+ return 'iterable<' . $this->valueType . '>';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Mixed_.php b/vendor/phpdocumentor/type-resolver/src/Types/Mixed_.php
new file mode 100644
index 000000000..56d1b6dab
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Mixed_.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing an unknown, or mixed, type.
+ *
+ * @psalm-immutable
+ */
+final class Mixed_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'mixed';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Never_.php b/vendor/phpdocumentor/type-resolver/src/Types/Never_.php
new file mode 100644
index 000000000..40a99c9ad
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Never_.php
@@ -0,0 +1,35 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the return-type 'never'.
+ *
+ * Never is generally only used when working with return types as it signifies that the method that only
+ * ever throw or exit.
+ *
+ * @psalm-immutable
+ */
+final class Never_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'never';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Null_.php b/vendor/phpdocumentor/type-resolver/src/Types/Null_.php
new file mode 100644
index 000000000..7ae802c4c
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Null_.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing a null value or type.
+ *
+ * @psalm-immutable
+ */
+final class Null_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'null';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Nullable.php b/vendor/phpdocumentor/type-resolver/src/Types/Nullable.php
new file mode 100644
index 000000000..a94693507
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Nullable.php
@@ -0,0 +1,51 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing a nullable type. The real type is wrapped.
+ *
+ * @psalm-immutable
+ */
+final class Nullable implements Type
+{
+ /** @var Type The actual type that is wrapped */
+ private $realType;
+
+ /**
+ * Initialises this nullable type using the real type embedded
+ */
+ public function __construct(Type $realType)
+ {
+ $this->realType = $realType;
+ }
+
+ /**
+ * Provide access to the actual type directly, if needed.
+ */
+ public function getActualType(): Type
+ {
+ return $this->realType;
+ }
+
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return '?' . $this->realType->__toString();
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Object_.php b/vendor/phpdocumentor/type-resolver/src/Types/Object_.php
new file mode 100644
index 000000000..90dee57ac
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Object_.php
@@ -0,0 +1,69 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use InvalidArgumentException;
+use phpDocumentor\Reflection\Fqsen;
+use phpDocumentor\Reflection\Type;
+
+use function strpos;
+
+/**
+ * Value Object representing an object.
+ *
+ * An object can be either typed or untyped. When an object is typed it means that it has an identifier, the FQSEN,
+ * pointing to an element in PHP. Object types that are untyped do not refer to a specific class but represent objects
+ * in general.
+ *
+ * @psalm-immutable
+ */
+final class Object_ implements Type
+{
+ /** @var Fqsen|null */
+ private $fqsen;
+
+ /**
+ * Initializes this object with an optional FQSEN, if not provided this object is considered 'untyped'.
+ *
+ * @throws InvalidArgumentException When provided $fqsen is not a valid type.
+ */
+ public function __construct(?Fqsen $fqsen = null)
+ {
+ if (strpos((string) $fqsen, '::') !== false || strpos((string) $fqsen, '()') !== false) {
+ throw new InvalidArgumentException(
+ 'Object types can only refer to a class, interface or trait but a method, function, constant or '
+ . 'property was received: ' . (string) $fqsen
+ );
+ }
+
+ $this->fqsen = $fqsen;
+ }
+
+ /**
+ * Returns the FQSEN associated with this object.
+ */
+ public function getFqsen(): ?Fqsen
+ {
+ return $this->fqsen;
+ }
+
+ public function __toString(): string
+ {
+ if ($this->fqsen) {
+ return (string) $this->fqsen;
+ }
+
+ return 'object';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Parent_.php b/vendor/phpdocumentor/type-resolver/src/Types/Parent_.php
new file mode 100644
index 000000000..348385991
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Parent_.php
@@ -0,0 +1,34 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the 'parent' type.
+ *
+ * Parent, as a Type, represents the parent class of class in which the associated element was defined.
+ *
+ * @psalm-immutable
+ */
+final class Parent_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'parent';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Resource_.php b/vendor/phpdocumentor/type-resolver/src/Types/Resource_.php
new file mode 100644
index 000000000..1998ee0ad
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Resource_.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the 'resource' Type.
+ *
+ * @psalm-immutable
+ */
+final class Resource_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'resource';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php b/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php
new file mode 100644
index 000000000..80241c21e
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Scalar.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the 'scalar' pseudo-type, which is either a string, integer, float or boolean.
+ *
+ * @psalm-immutable
+ */
+final class Scalar implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'scalar';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Self_.php b/vendor/phpdocumentor/type-resolver/src/Types/Self_.php
new file mode 100644
index 000000000..5096126e5
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Self_.php
@@ -0,0 +1,34 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the 'self' type.
+ *
+ * Self, as a Type, represents the class in which the associated element was defined.
+ *
+ * @psalm-immutable
+ */
+final class Self_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'self';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Static_.php b/vendor/phpdocumentor/type-resolver/src/Types/Static_.php
new file mode 100644
index 000000000..6fe365ff1
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Static_.php
@@ -0,0 +1,39 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the 'static' type.
+ *
+ * Self, as a Type, represents the class in which the associated element was called. This differs from self as self does
+ * not take inheritance into account but static means that the return type is always that of the class of the called
+ * element.
+ *
+ * See the documentation on late static binding in the PHP Documentation for more information on the difference between
+ * static and self.
+ *
+ * @psalm-immutable
+ */
+final class Static_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'static';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/String_.php b/vendor/phpdocumentor/type-resolver/src/Types/String_.php
new file mode 100644
index 000000000..a4bb47f1a
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/String_.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the type 'string'.
+ *
+ * @psalm-immutable
+ */
+class String_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'string';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/This.php b/vendor/phpdocumentor/type-resolver/src/Types/This.php
new file mode 100644
index 000000000..602fc698f
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/This.php
@@ -0,0 +1,35 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the '$this' pseudo-type.
+ *
+ * $this, as a Type, represents the instance of the class associated with the element as it was called. $this is
+ * commonly used when documenting fluent interfaces since it represents that the same object is returned.
+ *
+ * @psalm-immutable
+ */
+final class This implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return '$this';
+ }
+}
diff --git a/vendor/phpdocumentor/type-resolver/src/Types/Void_.php b/vendor/phpdocumentor/type-resolver/src/Types/Void_.php
new file mode 100644
index 000000000..23a601d47
--- /dev/null
+++ b/vendor/phpdocumentor/type-resolver/src/Types/Void_.php
@@ -0,0 +1,35 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of phpDocumentor.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @link http://phpdoc.org
+ */
+
+namespace phpDocumentor\Reflection\Types;
+
+use phpDocumentor\Reflection\Type;
+
+/**
+ * Value Object representing the return-type 'void'.
+ *
+ * Void is generally only used when working with return types as it signifies that the method intentionally does not
+ * return any value.
+ *
+ * @psalm-immutable
+ */
+final class Void_ implements Type
+{
+ /**
+ * Returns a rendered output of the Type as it would be used in a DocBlock.
+ */
+ public function __toString(): string
+ {
+ return 'void';
+ }
+}
diff --git a/vendor/phpspec/prophecy/CHANGES.md b/vendor/phpspec/prophecy/CHANGES.md
new file mode 100644
index 000000000..c383a0880
--- /dev/null
+++ b/vendor/phpspec/prophecy/CHANGES.md
@@ -0,0 +1,302 @@
+1.15.0 / 2021/12/08
+===================
+
+* [added] Support for the `static` return type [@denis-rolling-scopes]
+* [fixed] Add return types for Comparator implementations to avoid deprecation warnings from Symfony's DebugClassLoader [@stof]
+
+1.14.0 / 2021/09/16
+===================
+
+* [added] Support for static closures in will and should [@ntzm]
+* [added] Allow install on PHP 8.1 (with test suite fixes) [@javer]
+* [added] Support for the 'never' return type [@ciaranmcnulty]
+* [fixed] Better error message when doubling intersection return types [@ciaranmcnulty]
+
+1.13.0 / 2021/03/17
+===================
+
+* [added] willYield can now specify a return value [@camilledejoye]
+* [added] Prophecy exception interfaces are explicitly Throwable [@ciaranmcnulty]
+* [fixed] Argument::in() and notIn() now marked as static [@tyteen4a03]
+* [fixed] Can now double unions containing false [@ciaranmcnulty]
+* [fixed] Virtual magic methods with arguments are now doublable in PHP 8 [@ciaranmcnulty]
+
+1.12.2 / 2020/12/19
+===================
+
+* [fixed] MethodNotFoundException sometimes thrown with wrong class attached [@ciaranmcnulty]
+
+1.12.1 / 2020/10/29
+===================
+
+* [fixed] Incorrect handling of inherited 'self' return types [@ciaranmcnulty]
+
+1.12.0 / 2020/10/28
+===================
+
+* [added] PHP 8 support [@ciaranmcnulty]
+* [added] Argument::in() and Argument::notIn() [@viniciusalonso]
+* [added] Support for union and mixed types [@ciaranmcnulty]
+* [fixed] Issues caused by introduction of named parameters [@ciaranmcnulty]
+* [fixed] Issues caused by stricter rounding [@ciaranmcnulty]
+
+1.11.1 / 2020/07/08
+===================
+
+* [fixed] can't double objects with `self` type hints (@greg0ire)
+* [fixed] cloned doubes were not loosely comparable (@tkulka)
+
+1.11.0 / 2020/07/07
+===================
+
+* [changed] dropped support for PHP versions earlier than 7.2 (@ciaranmcnulty)
+* [fixed] removed use of Reflection APIs deprecated in PHP 8.0 (@Ayesh)
+
+1.10.3 / 2020/03/05
+===================
+
+* [fixed] removed fatal error when phpdocumentor/reflection-docblock 5 parses an invalid `@method` tag (@stof)
+
+1.10.2 / 2020/01/20
+===================
+
+* [added] support for new versions of `sebastian/comparator` and `sebastian/recursion-context` (@sebastianbergmann)
+
+1.10.1 / 2019/12/22
+===================
+
+* [fixed] identical callables no longer match as arguments (@ciaranmcnulty)
+
+1.10.0 / 2019/12/17
+===================
+
+* [added] shouldHaveBeenCalled evaluation happens later so un-stubbed calls don't throw (@elvetemedve)
+* [added] methods can now be doubled case-insensitively to match PHP semantics (@michalbundyra)
+* [fixed] reduced memory usage by optimising CachedDoubler (@DonCallisto)
+* [fixed] removed fatal error nesting level when comparing large objects (@scroach)
+
+1.9.0 / 2019/10/03
+==================
+
+* [added] Add willYield feature to Method Prophecy(@tkotosz)
+* [fixed] Allow `MethodProphecy::willThrow()` to accept Throwable as string (@timoschinkel )
+* [fixed] Allow new version of phpdocumentor/reflection-docblock (@ricpelo)
+
+1.8.1 / 2019/06/13
+==================
+
+* [fixed] Don't try to patch final constructors (@NiR)
+
+1.8.0 / 2018/08/05
+==================
+
+* Support for void return types without explicit will (@crellbar)
+* Clearer error message for unexpected method calls (@meridius)
+* Clearer error message for aggregate exceptions (@meridius)
+* More verbose `shouldBeCalledOnce` expectation (@olvlvl)
+* Ability to double Throwable, or methods that extend it (@ciaranmcnulty)
+* [fixed] Doubling methods where class has additional arguments to interface (@webimpress)
+* [fixed] Doubling methods where arguments are nullable but default is not null (@webimpress)
+* [fixed] Doubling magic methods on parent class (@dsnopek)
+* [fixed] Check method predictions only once (@dontub)
+* [fixed] Argument::containingString throwing error when called with non-string (@dcabrejas)
+
+1.7.6 / 2018/04/18
+==================
+
+* Allow sebastian/comparator ^3.0 (@sebastianbergmann)
+
+1.7.5 / 2018/02/11
+==================
+
+* Support for object return type hints (thanks @greg0ire)
+
+1.7.4 / 2018/02/11
+==================
+
+* Fix issues with PHP 7.2 (thanks @greg0ire)
+* Support object type hints in PHP 7.2 (thanks @@jansvoboda11)
+
+1.7.3 / 2017/11/24
+==================
+
+* Fix SplInfo ClassPatch to work with Symfony 4 (Thanks @gnugat)
+
+1.7.2 / 2017-10-04
+==================
+
+* Reverted "check method predictions only once" due to it breaking Spies
+
+1.7.1 / 2017-10-03
+==================
+
+* Allow PHP5 keywords methods generation on PHP7 (thanks @bycosta)
+* Allow reflection-docblock v4 (thanks @GrahamCampbell)
+* Check method predictions only once (thanks @dontub)
+* Escape file path sent to \SplFileObjectConstructor when running on Windows (thanks @danmartin-epiphany)
+
+1.7.0 / 2017-03-02
+==================
+
+* Add full PHP 7.1 Support (thanks @prolic)
+* Allow `sebastian/comparator ^2.0` (thanks @sebastianbergmann)
+* Allow `sebastian/recursion-context ^3.0` (thanks @sebastianbergmann)
+* Allow `\Error` instances in `ThrowPromise` (thanks @jameshalsall)
+* Support `phpspec/phpspect ^3.2` (thanks @Sam-Burns)
+* Fix failing builds (thanks @Sam-Burns)
+
+1.6.2 / 2016-11-21
+==================
+
+* Added support for detecting @method on interfaces that the class itself implements, or when the stubbed class is an interface itself (thanks @Seldaek)
+* Added support for sebastian/recursion-context 2 (thanks @sebastianbergmann)
+* Added testing on PHP 7.1 on Travis (thanks @danizord)
+* Fixed the usage of the phpunit comparator (thanks @Anyqax)
+
+1.6.1 / 2016-06-07
+==================
+
+ * Ignored empty method names in invalid `@method` phpdoc
+ * Fixed the mocking of SplFileObject
+ * Added compatibility with phpdocumentor/reflection-docblock 3
+
+1.6.0 / 2016-02-15
+==================
+
+ * Add Variadics support (thanks @pamil)
+ * Add ProphecyComparator for comparing objects that need revealing (thanks @jon-acker)
+ * Add ApproximateValueToken (thanks @dantleech)
+ * Add support for 'self' and 'parent' return type (thanks @bendavies)
+ * Add __invoke to allowed reflectable methods list (thanks @ftrrtf)
+ * Updated ExportUtil to reflect the latest changes by Sebastian (thanks @jakari)
+ * Specify the required php version for composer (thanks @jakzal)
+ * Exclude 'args' in the generated backtrace (thanks @oradwell)
+ * Fix code generation for scalar parameters (thanks @trowski)
+ * Fix missing sprintf in InvalidArgumentException __construct call (thanks @emmanuelballery)
+ * Fix phpdoc for magic methods (thanks @Tobion)
+ * Fix PhpDoc for interfaces usage (thanks @ImmRanneft)
+ * Prevent final methods from being manually extended (thanks @kamioftea)
+ * Enhance exception for invalid argument to ThrowPromise (thanks @Tobion)
+
+1.5.0 / 2015-04-27
+==================
+
+ * Add support for PHP7 scalar type hints (thanks @trowski)
+ * Add support for PHP7 return types (thanks @trowski)
+ * Update internal test suite to support PHP7
+
+1.4.1 / 2015-04-27
+==================
+
+ * Fixed bug in closure-based argument tokens (#181)
+
+1.4.0 / 2015-03-27
+==================
+
+ * Fixed errors in return type phpdocs (thanks @sobit)
+ * Fixed stringifying of hash containing one value (thanks @avant1)
+ * Improved clarity of method call expectation exception (thanks @dantleech)
+ * Add ability to specify which argument is returned in willReturnArgument (thanks @coderbyheart)
+ * Add more information to MethodNotFound exceptions (thanks @ciaranmcnulty)
+ * Support for mocking classes with methods that return references (thanks @edsonmedina)
+ * Improved object comparison (thanks @whatthejeff)
+ * Adopted '^' in composer dependencies (thanks @GrahamCampbell)
+ * Fixed non-typehinted arguments being treated as optional (thanks @whatthejeff)
+ * Magic methods are now filtered for keywords (thanks @seagoj)
+ * More readable errors for failure when expecting single calls (thanks @dantleech)
+
+1.3.1 / 2014-11-17
+==================
+
+ * Fix the edge case when failed predictions weren't recorded for `getCheckedPredictions()`
+
+1.3.0 / 2014-11-14
+==================
+
+ * Add a way to get checked predictions with `MethodProphecy::getCheckedPredictions()`
+ * Fix HHVM compatibility
+ * Remove dead code (thanks @stof)
+ * Add support for DirectoryIterators (thanks @shanethehat)
+
+1.2.0 / 2014-07-18
+==================
+
+ * Added support for doubling magic methods documented in the class phpdoc (thanks @armetiz)
+ * Fixed a segfault appearing in some cases (thanks @dmoreaulf)
+ * Fixed the doubling of methods with typehints on non-existent classes (thanks @gquemener)
+ * Added support for internal classes using keywords as method names (thanks @milan)
+ * Added IdenticalValueToken and Argument::is (thanks @florianv)
+ * Removed the usage of scalar typehints in HHVM as HHVM 3 does not support them anymore in PHP code (thanks @whatthejeff)
+
+1.1.2 / 2014-01-24
+==================
+
+ * Spy automatically promotes spied method call to an expected one
+
+1.1.1 / 2014-01-15
+==================
+
+ * Added support for HHVM
+
+1.1.0 / 2014-01-01
+==================
+
+ * Changed the generated class names to use a static counter instead of a random number
+ * Added a clss patch for ReflectionClass::newInstance to make its argument optional consistently (thanks @docteurklein)
+ * Fixed mirroring of classes with typehints on non-existent classes (thanks @docteurklein)
+ * Fixed the support of array callables in CallbackPromise and CallbackPrediction (thanks @ciaranmcnulty)
+ * Added support for properties in ObjectStateToken (thanks @adrienbrault)
+ * Added support for mocking classes with a final constructor (thanks @ciaranmcnulty)
+ * Added ArrayEveryEntryToken and Argument::withEveryEntry() (thanks @adrienbrault)
+ * Added an exception when trying to prophesize on a final method instead of ignoring silently (thanks @docteurklein)
+ * Added StringContainToken and Argument::containingString() (thanks @peterjmit)
+ * Added ``shouldNotHaveBeenCalled`` on the MethodProphecy (thanks @ciaranmcnulty)
+ * Fixed the comparison of objects in ExactValuetoken (thanks @sstok)
+ * Deprecated ``shouldNotBeenCalled`` in favor of ``shouldNotHaveBeenCalled``
+
+1.0.4 / 2013-08-10
+==================
+
+ * Better randomness for generated class names (thanks @sstok)
+ * Add support for interfaces into TypeToken and Argument::type() (thanks @sstok)
+ * Add support for old-style (method name === class name) constructors (thanks @l310 for report)
+
+1.0.3 / 2013-07-04
+==================
+
+ * Support callable typehints (thanks @stof)
+ * Do not attempt to autoload arrays when generating code (thanks @MarcoDeBortoli)
+ * New ArrayEntryToken (thanks @kagux)
+
+1.0.2 / 2013-05-19
+==================
+
+ * Logical `AND` token added (thanks @kagux)
+ * Logical `NOT` token added (thanks @kagux)
+ * Add support for setting custom constructor arguments
+ * Properly stringify hashes
+ * Record calls that throw exceptions
+ * Migrate spec suite to PhpSpec 2.0
+
+1.0.1 / 2013-04-30
+==================
+
+ * Fix broken UnexpectedCallException message
+ * Trim AggregateException message
+
+1.0.0 / 2013-04-29
+==================
+
+ * Improve exception messages
+
+1.0.0-BETA2 / 2013-04-03
+========================
+
+ * Add more debug information to CallTimes and Call prediction exception messages
+ * Fix MethodNotFoundException wrong namespace (thanks @gunnarlium)
+ * Fix some typos in the exception messages (thanks @pborreli)
+
+1.0.0-BETA1 / 2013-03-25
+========================
+
+ * Initial release
diff --git a/vendor/phpspec/prophecy/LICENSE b/vendor/phpspec/prophecy/LICENSE
new file mode 100644
index 000000000..d5b7cd848
--- /dev/null
+++ b/vendor/phpspec/prophecy/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2013 Konstantin Kudryashov <[email protected]>
+Copyright (c) 2013 Marcello Duarte <[email protected]>
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/phpspec/prophecy/README.md b/vendor/phpspec/prophecy/README.md
new file mode 100644
index 000000000..fbb58f69b
--- /dev/null
+++ b/vendor/phpspec/prophecy/README.md
@@ -0,0 +1,411 @@
+# Prophecy
+
+[![Stable release](https://poser.pugx.org/phpspec/prophecy/version.svg)](https://packagist.org/packages/phpspec/prophecy)
+[![Build Status](https://travis-ci.org/phpspec/prophecy.svg?branch=master)](https://travis-ci.org/phpspec/prophecy)
+
+Prophecy is a highly opinionated yet very powerful and flexible PHP object mocking
+framework. Though initially it was created to fulfil phpspec2 needs, it is flexible
+enough to be used inside any testing framework out there with minimal effort.
+
+## A simple example
+
+```php
+<?php
+
+class UserTest extends PHPUnit\Framework\TestCase
+{
+ private $prophet;
+
+ public function testPasswordHashing()
+ {
+ $hasher = $this->prophet->prophesize('App\Security\Hasher');
+ $user = new App\Entity\User($hasher->reveal());
+
+ $hasher->generateHash($user, 'qwerty')->willReturn('hashed_pass');
+
+ $user->setPassword('qwerty');
+
+ $this->assertEquals('hashed_pass', $user->getPassword());
+ }
+
+ protected function setUp()
+ {
+ $this->prophet = new \Prophecy\Prophet;
+ }
+
+ protected function tearDown()
+ {
+ $this->prophet->checkPredictions();
+ }
+}
+```
+
+## Installation
+
+### Prerequisites
+
+Prophecy requires PHP 7.2.0 or greater.
+
+### Setup through composer
+
+First, add Prophecy to the list of dependencies inside your `composer.json`:
+
+```json
+{
+ "require-dev": {
+ "phpspec/prophecy": "~1.0"
+ }
+}
+```
+
+Then simply install it with composer:
+
+```bash
+$> composer install --prefer-dist
+```
+
+You can read more about Composer on its [official webpage](http://getcomposer.org).
+
+## How to use it
+
+First of all, in Prophecy every word has a logical meaning, even the name of the library
+itself (Prophecy). When you start feeling that, you'll become very fluid with this
+tool.
+
+For example, Prophecy has been named that way because it concentrates on describing the future
+behavior of objects with very limited knowledge about them. But as with any other prophecy,
+those object prophecies can't create themselves - there should be a Prophet:
+
+```php
+$prophet = new Prophecy\Prophet;
+```
+
+The Prophet creates prophecies by *prophesizing* them:
+
+```php
+$prophecy = $prophet->prophesize();
+```
+
+The result of the `prophesize()` method call is a new object of class `ObjectProphecy`. Yes,
+that's your specific object prophecy, which describes how your object would behave
+in the near future. But first, you need to specify which object you're talking about,
+right?
+
+```php
+$prophecy->willExtend('stdClass');
+$prophecy->willImplement('SessionHandlerInterface');
+```
+
+There are 2 interesting calls - `willExtend` and `willImplement`. The first one tells
+object prophecy that our object should extend a specific class. The second one says that
+it should implement some interface. Obviously, objects in PHP can implement multiple
+interfaces, but extend only one parent class.
+
+### Dummies
+
+Ok, now we have our object prophecy. What can we do with it? First of all, we can get
+our object *dummy* by revealing its prophecy:
+
+```php
+$dummy = $prophecy->reveal();
+```
+
+The `$dummy` variable now holds a special dummy object. Dummy objects are objects that extend
+and/or implement preset classes/interfaces by overriding all their public methods. The key
+point about dummies is that they do not hold any logic - they just do nothing. Any method
+of the dummy will always return `null` and the dummy will never throw any exceptions.
+Dummy is your friend if you don't care about the actual behavior of this double and just need
+a token object to satisfy a method typehint.
+
+You need to understand one thing - a dummy is not a prophecy. Your object prophecy is still
+assigned to `$prophecy` variable and in order to manipulate with your expectations, you
+should work with it. `$dummy` is a dummy - a simple php object that tries to fulfil your
+prophecy.
+
+### Stubs
+
+Ok, now we know how to create basic prophecies and reveal dummies from them. That's
+awesome if we don't care about our _doubles_ (objects that reflect originals)
+interactions. If we do, we need to use *stubs* or *mocks*.
+
+A stub is an object double, which doesn't have any expectations about the object behavior,
+but when put in specific environment, behaves in specific way. Ok, I know, it's cryptic,
+but bear with me for a minute. Simply put, a stub is a dummy, which depending on the called
+method signature does different things (has logic). To create stubs in Prophecy:
+
+```php
+$prophecy->read('123')->willReturn('value');
+```
+
+Oh wow. We've just made an arbitrary call on the object prophecy? Yes, we did. And this
+call returned us a new object instance of class `MethodProphecy`. Yep, that's a specific
+method with arguments prophecy. Method prophecies give you the ability to create method
+promises or predictions. We'll talk about method predictions later in the _Mocks_ section.
+
+#### Promises
+
+Promises are logical blocks, that represent your fictional methods in prophecy terms
+and they are handled by the `MethodProphecy::will(PromiseInterface $promise)` method.
+As a matter of fact, the call that we made earlier (`willReturn('value')`) is a simple
+shortcut to:
+
+```php
+$prophecy->read('123')->will(new Prophecy\Promise\ReturnPromise(array('value')));
+```
+
+This promise will cause any call to our double's `read()` method with exactly one
+argument - `'123'` to always return `'value'`. But that's only for this
+promise, there's plenty others you can use:
+
+- `ReturnPromise` or `->willReturn(1)` - returns a value from a method call
+- `ReturnArgumentPromise` or `->willReturnArgument($index)` - returns the nth method argument from call
+- `ThrowPromise` or `->willThrow($exception)` - causes the method to throw specific exception
+- `CallbackPromise` or `->will($callback)` - gives you a quick way to define your own custom logic
+
+Keep in mind, that you can always add even more promises by implementing
+`Prophecy\Promise\PromiseInterface`.
+
+#### Method prophecies idempotency
+
+Prophecy enforces same method prophecies and, as a consequence, same promises and
+predictions for the same method calls with the same arguments. This means:
+
+```php
+$methodProphecy1 = $prophecy->read('123');
+$methodProphecy2 = $prophecy->read('123');
+$methodProphecy3 = $prophecy->read('321');
+
+$methodProphecy1 === $methodProphecy2;
+$methodProphecy1 !== $methodProphecy3;
+```
+
+That's interesting, right? Now you might ask me how would you define more complex
+behaviors where some method call changes behavior of others. In PHPUnit or Mockery
+you do that by predicting how many times your method will be called. In Prophecy,
+you'll use promises for that:
+
+```php
+$user->getName()->willReturn(null);
+
+// For PHP 5.4
+$user->setName('everzet')->will(function () {
+ $this->getName()->willReturn('everzet');
+});
+
+// For PHP 5.3
+$user->setName('everzet')->will(function ($args, $user) {
+ $user->getName()->willReturn('everzet');
+});
+
+// Or
+$user->setName('everzet')->will(function ($args) use ($user) {
+ $user->getName()->willReturn('everzet');
+});
+```
+
+And now it doesn't matter how many times or in which order your methods are called.
+What matters is their behaviors and how well you faked it.
+
+Note: If the method is called several times, you can use the following syntax to return different
+values for each call:
+
+```php
+$prophecy->read('123')->willReturn(1, 2, 3);
+```
+
+This feature is actually not recommended for most cases. Relying on the order of
+calls for the same arguments tends to make test fragile, as adding one more call
+can break everything.
+
+#### Arguments wildcarding
+
+The previous example is awesome (at least I hope it is for you), but that's not
+optimal enough. We hardcoded `'everzet'` in our expectation. Isn't there a better
+way? In fact there is, but it involves understanding what this `'everzet'`
+actually is.
+
+You see, even if method arguments used during method prophecy creation look
+like simple method arguments, in reality they are not. They are argument token
+wildcards. As a matter of fact, `->setName('everzet')` looks like a simple call just
+because Prophecy automatically transforms it under the hood into:
+
+```php
+$user->setName(new Prophecy\Argument\Token\ExactValueToken('everzet'));
+```
+
+Those argument tokens are simple PHP classes, that implement
+`Prophecy\Argument\Token\TokenInterface` and tell Prophecy how to compare real arguments
+with your expectations. And yes, those classnames are damn big. That's why there's a
+shortcut class `Prophecy\Argument`, which you can use to create tokens like that:
+
+```php
+use Prophecy\Argument;
+
+$user->setName(Argument::exact('everzet'));
+```
+
+`ExactValueToken` is not very useful in our case as it forced us to hardcode the username.
+That's why Prophecy comes bundled with a bunch of other tokens:
+
+- `IdenticalValueToken` or `Argument::is($value)` - checks that the argument is identical to a specific value
+- `ExactValueToken` or `Argument::exact($value)` - checks that the argument matches a specific value
+- `TypeToken` or `Argument::type($typeOrClass)` - checks that the argument matches a specific type or
+ classname
+- `ObjectStateToken` or `Argument::which($method, $value)` - checks that the argument method returns
+ a specific value
+- `CallbackToken` or `Argument::that(callback)` - checks that the argument matches a custom callback
+- `AnyValueToken` or `Argument::any()` - matches any argument
+- `AnyValuesToken` or `Argument::cetera()` - matches any arguments to the rest of the signature
+- `StringContainsToken` or `Argument::containingString($value)` - checks that the argument contains a specific string value
+- `InArrayToken` or `Argument::in($array)` - checks if value is in array
+- `NotInArrayToken` or `Argument::notIn($array)` - checks if value is not in array
+
+And you can add even more by implementing `TokenInterface` with your own custom classes.
+
+So, let's refactor our initial `{set,get}Name()` logic with argument tokens:
+
+```php
+use Prophecy\Argument;
+
+$user->getName()->willReturn(null);
+
+// For PHP 5.4
+$user->setName(Argument::type('string'))->will(function ($args) {
+ $this->getName()->willReturn($args[0]);
+});
+
+// For PHP 5.3
+$user->setName(Argument::type('string'))->will(function ($args, $user) {
+ $user->getName()->willReturn($args[0]);
+});
+
+// Or
+$user->setName(Argument::type('string'))->will(function ($args) use ($user) {
+ $user->getName()->willReturn($args[0]);
+});
+```
+
+That's it. Now our `{set,get}Name()` prophecy will work with any string argument provided to it.
+We've just described how our stub object should behave, even though the original object could have
+no behavior whatsoever.
+
+One last bit about arguments now. You might ask, what happens in case of:
+
+```php
+use Prophecy\Argument;
+
+$user->getName()->willReturn(null);
+
+// For PHP 5.4
+$user->setName(Argument::type('string'))->will(function ($args) {
+ $this->getName()->willReturn($args[0]);
+});
+
+// For PHP 5.3
+$user->setName(Argument::type('string'))->will(function ($args, $user) {
+ $user->getName()->willReturn($args[0]);
+});
+
+// Or
+$user->setName(Argument::type('string'))->will(function ($args) use ($user) {
+ $user->getName()->willReturn($args[0]);
+});
+
+$user->setName(Argument::any())->will(function () {
+});
+```
+
+Nothing. Your stub will continue behaving the way it did before. That's because of how
+arguments wildcarding works. Every argument token type has a different score level, which
+wildcard then uses to calculate the final arguments match score and use the method prophecy
+promise that has the highest score. In this case, `Argument::type()` in case of success
+scores `5` and `Argument::any()` scores `3`. So the type token wins, as does the first
+`setName()` method prophecy and its promise. The simple rule of thumb - more precise token
+always wins.
+
+#### Getting stub objects
+
+Ok, now we know how to define our prophecy method promises, let's get our stub from
+it:
+
+```php
+$stub = $prophecy->reveal();
+```
+
+As you might see, the only difference between how we get dummies and stubs is that with
+stubs we describe every object conversation instead of just agreeing with `null` returns
+(object being *dummy*). As a matter of fact, after you define your first promise
+(method call), Prophecy will force you to define all the communications - it throws
+the `UnexpectedCallException` for any call you didn't describe with object prophecy before
+calling it on a stub.
+
+### Mocks
+
+Now we know how to define doubles without behavior (dummies) and doubles with behavior, but
+no expectations (stubs). What's left is doubles for which we have some expectations. These
+are called mocks and in Prophecy they look almost exactly the same as stubs, except that
+they define *predictions* instead of *promises* on method prophecies:
+
+```php
+$entityManager->flush()->shouldBeCalled();
+```
+
+#### Predictions
+
+The `shouldBeCalled()` method here assigns `CallPrediction` to our method prophecy.
+Predictions are a delayed behavior check for your prophecies. You see, during the entire lifetime
+of your doubles, Prophecy records every single call you're making against it inside your
+code. After that, Prophecy can use this collected information to check if it matches defined
+predictions. You can assign predictions to method prophecies using the
+`MethodProphecy::should(PredictionInterface $prediction)` method. As a matter of fact,
+the `shouldBeCalled()` method we used earlier is just a shortcut to:
+
+```php
+$entityManager->flush()->should(new Prophecy\Prediction\CallPrediction());
+```
+
+It checks if your method of interest (that matches both the method name and the arguments wildcard)
+was called 1 or more times. If the prediction failed then it throws an exception. When does this
+check happen? Whenever you call `checkPredictions()` on the main Prophet object:
+
+```php
+$prophet->checkPredictions();
+```
+
+In PHPUnit, you would want to put this call into the `tearDown()` method. If no predictions
+are defined, it would do nothing. So it won't harm to call it after every test.
+
+There are plenty more predictions you can play with:
+
+- `CallPrediction` or `shouldBeCalled()` - checks that the method has been called 1 or more times
+- `NoCallsPrediction` or `shouldNotBeCalled()` - checks that the method has not been called
+- `CallTimesPrediction` or `shouldBeCalledTimes($count)` - checks that the method has been called
+ `$count` times
+- `CallbackPrediction` or `should($callback)` - checks the method against your own custom callback
+
+Of course, you can always create your own custom prediction any time by implementing
+`PredictionInterface`.
+
+### Spies
+
+The last bit of awesomeness in Prophecy is out-of-the-box spies support. As I said in the previous
+section, Prophecy records every call made during the double's entire lifetime. This means
+you don't need to record predictions in order to check them. You can also do it
+manually by using the `MethodProphecy::shouldHave(PredictionInterface $prediction)` method:
+
+```php
+$em = $prophet->prophesize('Doctrine\ORM\EntityManager');
+
+$controller->createUser($em->reveal());
+
+$em->flush()->shouldHaveBeenCalled();
+```
+
+Such manipulation with doubles is called spying. And with Prophecy it just works.
+
+
+## FAQ
+
+### Can I call the original methods on a prophesized class?
+
+Prophecy does not support calling the original methods on a phrophesized class. If you find yourself needing to mock some methods of a class while calling the original version of other methods, it's likely a sign that your class violates the [single-responsibility principle](https://en.wikipedia.org/wiki/Single-responsibility_principle) and should be refactored.
diff --git a/vendor/phpspec/prophecy/composer.json b/vendor/phpspec/prophecy/composer.json
new file mode 100644
index 000000000..129a4cf6c
--- /dev/null
+++ b/vendor/phpspec/prophecy/composer.json
@@ -0,0 +1,50 @@
+{
+ "name": "phpspec/prophecy",
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "keywords": ["Mock", "Stub", "Dummy", "Double", "Fake", "Spy"],
+ "homepage": "https://github.com/phpspec/prophecy",
+ "type": "library",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "[email protected]",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "[email protected]"
+ }
+ ],
+
+ "require": {
+ "php": "^7.2 || ~8.0, <8.2",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "doctrine/instantiator": "^1.2",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+
+ "require-dev": {
+ "phpspec/phpspec": "^6.0 || ^7.0",
+ "phpunit/phpunit": "^8.0 || ^9.0"
+ },
+
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+
+ "autoload-dev": {
+ "psr-4": {
+ "Fixtures\\Prophecy\\": "fixtures"
+ }
+ },
+
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument.php b/vendor/phpspec/prophecy/src/Prophecy/Argument.php
new file mode 100644
index 000000000..674255a27
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument.php
@@ -0,0 +1,239 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy;
+
+use Prophecy\Argument\Token;
+
+/**
+ * Argument tokens shortcuts.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class Argument
+{
+ /**
+ * Checks that argument is exact value or object.
+ *
+ * @param mixed $value
+ *
+ * @return Token\ExactValueToken
+ */
+ public static function exact($value)
+ {
+ return new Token\ExactValueToken($value);
+ }
+
+ /**
+ * Checks that argument is of specific type or instance of specific class.
+ *
+ * @param string $type Type name (`integer`, `string`) or full class name
+ *
+ * @return Token\TypeToken
+ */
+ public static function type($type)
+ {
+ return new Token\TypeToken($type);
+ }
+
+ /**
+ * Checks that argument object has specific state.
+ *
+ * @param string $methodName
+ * @param mixed $value
+ *
+ * @return Token\ObjectStateToken
+ */
+ public static function which($methodName, $value)
+ {
+ return new Token\ObjectStateToken($methodName, $value);
+ }
+
+ /**
+ * Checks that argument matches provided callback.
+ *
+ * @param callable $callback
+ *
+ * @return Token\CallbackToken
+ */
+ public static function that($callback)
+ {
+ return new Token\CallbackToken($callback);
+ }
+
+ /**
+ * Matches any single value.
+ *
+ * @return Token\AnyValueToken
+ */
+ public static function any()
+ {
+ return new Token\AnyValueToken;
+ }
+
+ /**
+ * Matches all values to the rest of the signature.
+ *
+ * @return Token\AnyValuesToken
+ */
+ public static function cetera()
+ {
+ return new Token\AnyValuesToken;
+ }
+
+ /**
+ * Checks that argument matches all tokens
+ *
+ * @param mixed ... a list of tokens
+ *
+ * @return Token\LogicalAndToken
+ */
+ public static function allOf()
+ {
+ return new Token\LogicalAndToken(func_get_args());
+ }
+
+ /**
+ * Checks that argument array or countable object has exact number of elements.
+ *
+ * @param integer $value array elements count
+ *
+ * @return Token\ArrayCountToken
+ */
+ public static function size($value)
+ {
+ return new Token\ArrayCountToken($value);
+ }
+
+ /**
+ * Checks that argument array contains (key, value) pair
+ *
+ * @param mixed $key exact value or token
+ * @param mixed $value exact value or token
+ *
+ * @return Token\ArrayEntryToken
+ */
+ public static function withEntry($key, $value)
+ {
+ return new Token\ArrayEntryToken($key, $value);
+ }
+
+ /**
+ * Checks that arguments array entries all match value
+ *
+ * @param mixed $value
+ *
+ * @return Token\ArrayEveryEntryToken
+ */
+ public static function withEveryEntry($value)
+ {
+ return new Token\ArrayEveryEntryToken($value);
+ }
+
+ /**
+ * Checks that argument array contains value
+ *
+ * @param mixed $value
+ *
+ * @return Token\ArrayEntryToken
+ */
+ public static function containing($value)
+ {
+ return new Token\ArrayEntryToken(self::any(), $value);
+ }
+
+ /**
+ * Checks that argument array has key
+ *
+ * @param mixed $key exact value or token
+ *
+ * @return Token\ArrayEntryToken
+ */
+ public static function withKey($key)
+ {
+ return new Token\ArrayEntryToken($key, self::any());
+ }
+
+ /**
+ * Checks that argument does not match the value|token.
+ *
+ * @param mixed $value either exact value or argument token
+ *
+ * @return Token\LogicalNotToken
+ */
+ public static function not($value)
+ {
+ return new Token\LogicalNotToken($value);
+ }
+
+ /**
+ * @param string $value
+ *
+ * @return Token\StringContainsToken
+ */
+ public static function containingString($value)
+ {
+ return new Token\StringContainsToken($value);
+ }
+
+ /**
+ * Checks that argument is identical value.
+ *
+ * @param mixed $value
+ *
+ * @return Token\IdenticalValueToken
+ */
+ public static function is($value)
+ {
+ return new Token\IdenticalValueToken($value);
+ }
+
+ /**
+ * Check that argument is same value when rounding to the
+ * given precision.
+ *
+ * @param float $value
+ * @param float $precision
+ *
+ * @return Token\ApproximateValueToken
+ */
+ public static function approximate($value, $precision = 0)
+ {
+ return new Token\ApproximateValueToken($value, $precision);
+ }
+
+ /**
+ * Checks that argument is in array.
+ *
+ * @param array $value
+ *
+ * @return Token\InArrayToken
+ */
+
+ public static function in($value)
+ {
+ return new Token\InArrayToken($value);
+ }
+
+ /**
+ * Checks that argument is not in array.
+ *
+ * @param array $value
+ *
+ * @return Token\NotInArrayToken
+ */
+
+ public static function notIn($value)
+ {
+ return new Token\NotInArrayToken($value);
+ }
+
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php
new file mode 100644
index 000000000..a088f21d2
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/ArgumentsWildcard.php
@@ -0,0 +1,101 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument;
+
+/**
+ * Arguments wildcarding.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ArgumentsWildcard
+{
+ /**
+ * @var Token\TokenInterface[]
+ */
+ private $tokens = array();
+ private $string;
+
+ /**
+ * Initializes wildcard.
+ *
+ * @param array $arguments Array of argument tokens or values
+ */
+ public function __construct(array $arguments)
+ {
+ foreach ($arguments as $argument) {
+ if (!$argument instanceof Token\TokenInterface) {
+ $argument = new Token\ExactValueToken($argument);
+ }
+
+ $this->tokens[] = $argument;
+ }
+ }
+
+ /**
+ * Calculates wildcard match score for provided arguments.
+ *
+ * @param array $arguments
+ *
+ * @return false|int False OR integer score (higher - better)
+ */
+ public function scoreArguments(array $arguments)
+ {
+ if (0 == count($arguments) && 0 == count($this->tokens)) {
+ return 1;
+ }
+
+ $arguments = array_values($arguments);
+ $totalScore = 0;
+ foreach ($this->tokens as $i => $token) {
+ $argument = isset($arguments[$i]) ? $arguments[$i] : null;
+ if (1 >= $score = $token->scoreArgument($argument)) {
+ return false;
+ }
+
+ $totalScore += $score;
+
+ if (true === $token->isLast()) {
+ return $totalScore;
+ }
+ }
+
+ if (count($arguments) > count($this->tokens)) {
+ return false;
+ }
+
+ return $totalScore;
+ }
+
+ /**
+ * Returns string representation for wildcard.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ if (null === $this->string) {
+ $this->string = implode(', ', array_map(function ($token) {
+ return (string) $token;
+ }, $this->tokens));
+ }
+
+ return $this->string;
+ }
+
+ /**
+ * @return array
+ */
+ public function getTokens()
+ {
+ return $this->tokens;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php
new file mode 100644
index 000000000..50988112c
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValueToken.php
@@ -0,0 +1,52 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * Any single value token.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class AnyValueToken implements TokenInterface
+{
+ /**
+ * Always scores 3 for any argument.
+ *
+ * @param $argument
+ *
+ * @return int
+ */
+ public function scoreArgument($argument)
+ {
+ return 3;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return bool
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return '*';
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php
new file mode 100644
index 000000000..f76b17bc0
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/AnyValuesToken.php
@@ -0,0 +1,52 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * Any values token.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class AnyValuesToken implements TokenInterface
+{
+ /**
+ * Always scores 2 for any argument.
+ *
+ * @param $argument
+ *
+ * @return int
+ */
+ public function scoreArgument($argument)
+ {
+ return 2;
+ }
+
+ /**
+ * Returns true to stop wildcard from processing other tokens.
+ *
+ * @return bool
+ */
+ public function isLast()
+ {
+ return true;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return '* [, ...]';
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php
new file mode 100644
index 000000000..901744ab0
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ApproximateValueToken.php
@@ -0,0 +1,55 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * Approximate value token
+ *
+ * @author Daniel Leech <[email protected]>
+ */
+class ApproximateValueToken implements TokenInterface
+{
+ private $value;
+ private $precision;
+
+ public function __construct($value, $precision = 0)
+ {
+ $this->value = $value;
+ $this->precision = $precision;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function scoreArgument($argument)
+ {
+ return round((float)$argument, $this->precision) === round($this->value, $this->precision) ? 10 : false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return sprintf('≅%s', round($this->value, $this->precision));
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php
new file mode 100644
index 000000000..96b4befd7
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayCountToken.php
@@ -0,0 +1,86 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * Array elements count token.
+ *
+ * @author Boris Mikhaylov <[email protected]>
+ */
+
+class ArrayCountToken implements TokenInterface
+{
+ private $count;
+
+ /**
+ * @param integer $value
+ */
+ public function __construct($value)
+ {
+ $this->count = $value;
+ }
+
+ /**
+ * Scores 6 when argument has preset number of elements.
+ *
+ * @param $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ return $this->isCountable($argument) && $this->hasProperCount($argument) ? 6 : false;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return boolean
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return sprintf('count(%s)', $this->count);
+ }
+
+ /**
+ * Returns true if object is either array or instance of \Countable
+ *
+ * @param $argument
+ * @return bool
+ */
+ private function isCountable($argument)
+ {
+ return (is_array($argument) || $argument instanceof \Countable);
+ }
+
+ /**
+ * Returns true if $argument has expected number of elements
+ *
+ * @param array|\Countable $argument
+ *
+ * @return bool
+ */
+ private function hasProperCount($argument)
+ {
+ return $this->count === count($argument);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php
new file mode 100644
index 000000000..0305fc720
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEntryToken.php
@@ -0,0 +1,143 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+use Prophecy\Exception\InvalidArgumentException;
+
+/**
+ * Array entry token.
+ *
+ * @author Boris Mikhaylov <[email protected]>
+ */
+class ArrayEntryToken implements TokenInterface
+{
+ /** @var \Prophecy\Argument\Token\TokenInterface */
+ private $key;
+ /** @var \Prophecy\Argument\Token\TokenInterface */
+ private $value;
+
+ /**
+ * @param mixed $key exact value or token
+ * @param mixed $value exact value or token
+ */
+ public function __construct($key, $value)
+ {
+ $this->key = $this->wrapIntoExactValueToken($key);
+ $this->value = $this->wrapIntoExactValueToken($value);
+ }
+
+ /**
+ * Scores half of combined scores from key and value tokens for same entry. Capped at 8.
+ * If argument implements \ArrayAccess without \Traversable, then key token is restricted to ExactValueToken.
+ *
+ * @param array|\ArrayAccess|\Traversable $argument
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ if ($argument instanceof \Traversable) {
+ $argument = iterator_to_array($argument);
+ }
+
+ if ($argument instanceof \ArrayAccess) {
+ $argument = $this->convertArrayAccessToEntry($argument);
+ }
+
+ if (!is_array($argument) || empty($argument)) {
+ return false;
+ }
+
+ $keyScores = array_map(array($this->key,'scoreArgument'), array_keys($argument));
+ $valueScores = array_map(array($this->value,'scoreArgument'), $argument);
+ $scoreEntry = function ($value, $key) {
+ return $value && $key ? min(8, ($key + $value) / 2) : false;
+ };
+
+ return max(array_map($scoreEntry, $valueScores, $keyScores));
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return boolean
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return sprintf('[..., %s => %s, ...]', $this->key, $this->value);
+ }
+
+ /**
+ * Returns key
+ *
+ * @return TokenInterface
+ */
+ public function getKey()
+ {
+ return $this->key;
+ }
+
+ /**
+ * Returns value
+ *
+ * @return TokenInterface
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+
+ /**
+ * Wraps non token $value into ExactValueToken
+ *
+ * @param $value
+ * @return TokenInterface
+ */
+ private function wrapIntoExactValueToken($value)
+ {
+ return $value instanceof TokenInterface ? $value : new ExactValueToken($value);
+ }
+
+ /**
+ * Converts instance of \ArrayAccess to key => value array entry
+ *
+ * @param \ArrayAccess $object
+ *
+ * @return array|null
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ private function convertArrayAccessToEntry(\ArrayAccess $object)
+ {
+ if (!$this->key instanceof ExactValueToken) {
+ throw new InvalidArgumentException(sprintf(
+ 'You can only use exact value tokens to match key of ArrayAccess object'.PHP_EOL.
+ 'But you used `%s`.',
+ $this->key
+ ));
+ }
+
+ $key = $this->key->getValue();
+
+ return $object->offsetExists($key) ? array($key => $object[$key]) : array();
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php
new file mode 100644
index 000000000..5d41fa487
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ArrayEveryEntryToken.php
@@ -0,0 +1,82 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * Array every entry token.
+ *
+ * @author Adrien Brault <[email protected]>
+ */
+class ArrayEveryEntryToken implements TokenInterface
+{
+ /**
+ * @var TokenInterface
+ */
+ private $value;
+
+ /**
+ * @param mixed $value exact value or token
+ */
+ public function __construct($value)
+ {
+ if (!$value instanceof TokenInterface) {
+ $value = new ExactValueToken($value);
+ }
+
+ $this->value = $value;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function scoreArgument($argument)
+ {
+ if (!$argument instanceof \Traversable && !is_array($argument)) {
+ return false;
+ }
+
+ $scores = array();
+ foreach ($argument as $key => $argumentEntry) {
+ $scores[] = $this->value->scoreArgument($argumentEntry);
+ }
+
+ if (empty($scores) || in_array(false, $scores, true)) {
+ return false;
+ }
+
+ return array_sum($scores) / count($scores);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function __toString()
+ {
+ return sprintf('[%s, ..., %s]', $this->value, $this->value);
+ }
+
+ /**
+ * @return TokenInterface
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php
new file mode 100644
index 000000000..f45ba20be
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/CallbackToken.php
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+use Prophecy\Exception\InvalidArgumentException;
+
+/**
+ * Callback-verified token.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class CallbackToken implements TokenInterface
+{
+ private $callback;
+
+ /**
+ * Initializes token.
+ *
+ * @param callable $callback
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function __construct($callback)
+ {
+ if (!is_callable($callback)) {
+ throw new InvalidArgumentException(sprintf(
+ 'Callable expected as an argument to CallbackToken, but got %s.',
+ gettype($callback)
+ ));
+ }
+
+ $this->callback = $callback;
+ }
+
+ /**
+ * Scores 7 if callback returns true, false otherwise.
+ *
+ * @param $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ return call_user_func($this->callback, $argument) ? 7 : false;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return bool
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return 'callback()';
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php
new file mode 100644
index 000000000..045a1b90f
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ExactValueToken.php
@@ -0,0 +1,118 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+use SebastianBergmann\Comparator\ComparisonFailure;
+use Prophecy\Comparator\Factory as ComparatorFactory;
+use Prophecy\Util\StringUtil;
+
+/**
+ * Exact value token.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ExactValueToken implements TokenInterface
+{
+ private $value;
+ private $string;
+ private $util;
+ private $comparatorFactory;
+
+ /**
+ * Initializes token.
+ *
+ * @param mixed $value
+ * @param StringUtil $util
+ * @param ComparatorFactory $comparatorFactory
+ */
+ public function __construct($value, StringUtil $util = null, ComparatorFactory $comparatorFactory = null)
+ {
+ $this->value = $value;
+ $this->util = $util ?: new StringUtil();
+
+ $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance();
+ }
+
+ /**
+ * Scores 10 if argument matches preset value.
+ *
+ * @param $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ if (is_object($argument) && is_object($this->value)) {
+ $comparator = $this->comparatorFactory->getComparatorFor(
+ $argument, $this->value
+ );
+
+ try {
+ $comparator->assertEquals($argument, $this->value);
+ return 10;
+ } catch (ComparisonFailure $failure) {
+ return false;
+ }
+ }
+
+ // If either one is an object it should be castable to a string
+ if (is_object($argument) xor is_object($this->value)) {
+ if (is_object($argument) && !method_exists($argument, '__toString')) {
+ return false;
+ }
+
+ if (is_object($this->value) && !method_exists($this->value, '__toString')) {
+ return false;
+ }
+ } elseif (is_numeric($argument) && is_numeric($this->value)) {
+ // noop
+ } elseif (gettype($argument) !== gettype($this->value)) {
+ return false;
+ }
+
+ return $argument == $this->value ? 10 : false;
+ }
+
+ /**
+ * Returns preset value against which token checks arguments.
+ *
+ * @return mixed
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return bool
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ if (null === $this->string) {
+ $this->string = sprintf('exact(%s)', $this->util->stringify($this->value));
+ }
+
+ return $this->string;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php
new file mode 100644
index 000000000..0b6d23ab6
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/IdenticalValueToken.php
@@ -0,0 +1,74 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+use Prophecy\Util\StringUtil;
+
+/**
+ * Identical value token.
+ *
+ * @author Florian Voutzinos <[email protected]>
+ */
+class IdenticalValueToken implements TokenInterface
+{
+ private $value;
+ private $string;
+ private $util;
+
+ /**
+ * Initializes token.
+ *
+ * @param mixed $value
+ * @param StringUtil $util
+ */
+ public function __construct($value, StringUtil $util = null)
+ {
+ $this->value = $value;
+ $this->util = $util ?: new StringUtil();
+ }
+
+ /**
+ * Scores 11 if argument matches preset value.
+ *
+ * @param $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ return $argument === $this->value ? 11 : false;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return bool
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ if (null === $this->string) {
+ $this->string = sprintf('identical(%s)', $this->util->stringify($this->value));
+ }
+
+ return $this->string;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/InArrayToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/InArrayToken.php
new file mode 100644
index 000000000..f727aea42
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/InArrayToken.php
@@ -0,0 +1,74 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * Check if values is in array
+ *
+ * @author Vinícius Alonso <[email protected]>
+ */
+class InArrayToken implements TokenInterface
+{
+ private $token = array();
+ private $strict;
+
+ /**
+ * @param array $arguments tokens
+ * @param bool $strict
+ */
+ public function __construct(array $arguments, $strict = true)
+ {
+ $this->token = $arguments;
+ $this->strict = $strict;
+ }
+
+ /**
+ * Return scores 8 score if argument is in array.
+ *
+ * @param $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ if (count($this->token) === 0) {
+ return false;
+ }
+
+ if (\in_array($argument, $this->token, $this->strict)) {
+ return 8;
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return boolean
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ $arrayAsString = implode(', ', $this->token);
+ return "[{$arrayAsString}]";
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php
new file mode 100644
index 000000000..4ee1b25e1
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalAndToken.php
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * Logical AND token.
+ *
+ * @author Boris Mikhaylov <[email protected]>
+ */
+class LogicalAndToken implements TokenInterface
+{
+ private $tokens = array();
+
+ /**
+ * @param array $arguments exact values or tokens
+ */
+ public function __construct(array $arguments)
+ {
+ foreach ($arguments as $argument) {
+ if (!$argument instanceof TokenInterface) {
+ $argument = new ExactValueToken($argument);
+ }
+ $this->tokens[] = $argument;
+ }
+ }
+
+ /**
+ * Scores maximum score from scores returned by tokens for this argument if all of them score.
+ *
+ * @param $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ if (0 === count($this->tokens)) {
+ return false;
+ }
+
+ $maxScore = 0;
+ foreach ($this->tokens as $token) {
+ $score = $token->scoreArgument($argument);
+ if (false === $score) {
+ return false;
+ }
+ $maxScore = max($score, $maxScore);
+ }
+
+ return $maxScore;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return boolean
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return sprintf('bool(%s)', implode(' AND ', $this->tokens));
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php
new file mode 100644
index 000000000..623efa57a
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/LogicalNotToken.php
@@ -0,0 +1,73 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * Logical NOT token.
+ *
+ * @author Boris Mikhaylov <[email protected]>
+ */
+class LogicalNotToken implements TokenInterface
+{
+ /** @var \Prophecy\Argument\Token\TokenInterface */
+ private $token;
+
+ /**
+ * @param mixed $value exact value or token
+ */
+ public function __construct($value)
+ {
+ $this->token = $value instanceof TokenInterface? $value : new ExactValueToken($value);
+ }
+
+ /**
+ * Scores 4 when preset token does not match the argument.
+ *
+ * @param $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ return false === $this->token->scoreArgument($argument) ? 4 : false;
+ }
+
+ /**
+ * Returns true if preset token is last.
+ *
+ * @return bool|int
+ */
+ public function isLast()
+ {
+ return $this->token->isLast();
+ }
+
+ /**
+ * Returns originating token.
+ *
+ * @return TokenInterface
+ */
+ public function getOriginatingToken()
+ {
+ return $this->token;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return sprintf('not(%s)', $this->token);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/NotInArrayToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/NotInArrayToken.php
new file mode 100644
index 000000000..6aed8aa50
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/NotInArrayToken.php
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * Check if values is not in array
+ *
+ * @author Vinícius Alonso <[email protected]>
+ */
+class NotInArrayToken implements TokenInterface
+{
+ private $token = array();
+ private $strict;
+
+ /**
+ * @param array $arguments tokens
+ * @param bool $strict
+ */
+ public function __construct(array $arguments, $strict = true)
+ {
+ $this->token = $arguments;
+ $this->strict = $strict;
+ }
+
+ /**
+ * Return scores 8 score if argument is in array.
+ *
+ * @param $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ if (count($this->token) === 0) {
+ return false;
+ }
+
+ if (!\in_array($argument, $this->token, $this->strict)) {
+ return 8;
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return boolean
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ $arrayAsString = implode(', ', $this->token);
+ return "[{$arrayAsString}]";
+ }
+}
+
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php
new file mode 100644
index 000000000..d77107767
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/ObjectStateToken.php
@@ -0,0 +1,104 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+use SebastianBergmann\Comparator\ComparisonFailure;
+use Prophecy\Comparator\Factory as ComparatorFactory;
+use Prophecy\Util\StringUtil;
+
+/**
+ * Object state-checker token.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ObjectStateToken implements TokenInterface
+{
+ private $name;
+ private $value;
+ private $util;
+ private $comparatorFactory;
+
+ /**
+ * Initializes token.
+ *
+ * @param string $methodName
+ * @param mixed $value Expected return value
+ * @param null|StringUtil $util
+ * @param ComparatorFactory $comparatorFactory
+ */
+ public function __construct(
+ $methodName,
+ $value,
+ StringUtil $util = null,
+ ComparatorFactory $comparatorFactory = null
+ ) {
+ $this->name = $methodName;
+ $this->value = $value;
+ $this->util = $util ?: new StringUtil;
+
+ $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance();
+ }
+
+ /**
+ * Scores 8 if argument is an object, which method returns expected value.
+ *
+ * @param mixed $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ if (is_object($argument) && method_exists($argument, $this->name)) {
+ $actual = call_user_func(array($argument, $this->name));
+
+ $comparator = $this->comparatorFactory->getComparatorFor(
+ $this->value, $actual
+ );
+
+ try {
+ $comparator->assertEquals($this->value, $actual);
+ return 8;
+ } catch (ComparisonFailure $failure) {
+ return false;
+ }
+ }
+
+ if (is_object($argument) && property_exists($argument, $this->name)) {
+ return $argument->{$this->name} === $this->value ? 8 : false;
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return bool
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return sprintf('state(%s(), %s)',
+ $this->name,
+ $this->util->stringify($this->value)
+ );
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php
new file mode 100644
index 000000000..bd8d423f9
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/StringContainsToken.php
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * String contains token.
+ *
+ * @author Peter Mitchell <[email protected]>
+ */
+class StringContainsToken implements TokenInterface
+{
+ private $value;
+
+ /**
+ * Initializes token.
+ *
+ * @param string $value
+ */
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ public function scoreArgument($argument)
+ {
+ return is_string($argument) && strpos($argument, $this->value) !== false ? 6 : false;
+ }
+
+ /**
+ * Returns preset value against which token checks arguments.
+ *
+ * @return mixed
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return bool
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return sprintf('contains("%s")', $this->value);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php
new file mode 100644
index 000000000..625d3bad2
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TokenInterface.php
@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+/**
+ * Argument token interface.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+interface TokenInterface
+{
+ /**
+ * Calculates token match score for provided argument.
+ *
+ * @param $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument);
+
+ /**
+ * Returns true if this token prevents check of other tokens (is last one).
+ *
+ * @return bool|int
+ */
+ public function isLast();
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString();
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php
new file mode 100644
index 000000000..cb65132ca
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Argument/Token/TypeToken.php
@@ -0,0 +1,76 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Argument\Token;
+
+use Prophecy\Exception\InvalidArgumentException;
+
+/**
+ * Value type token.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class TypeToken implements TokenInterface
+{
+ private $type;
+
+ /**
+ * @param string $type
+ */
+ public function __construct($type)
+ {
+ $checker = "is_{$type}";
+ if (!function_exists($checker) && !interface_exists($type) && !class_exists($type)) {
+ throw new InvalidArgumentException(sprintf(
+ 'Type or class name expected as an argument to TypeToken, but got %s.', $type
+ ));
+ }
+
+ $this->type = $type;
+ }
+
+ /**
+ * Scores 5 if argument has the same type this token was constructed with.
+ *
+ * @param $argument
+ *
+ * @return bool|int
+ */
+ public function scoreArgument($argument)
+ {
+ $checker = "is_{$this->type}";
+ if (function_exists($checker)) {
+ return call_user_func($checker, $argument) ? 5 : false;
+ }
+
+ return $argument instanceof $this->type ? 5 : false;
+ }
+
+ /**
+ * Returns false.
+ *
+ * @return bool
+ */
+ public function isLast()
+ {
+ return false;
+ }
+
+ /**
+ * Returns string representation for token.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return sprintf('type(%s)', $this->type);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php b/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php
new file mode 100644
index 000000000..265223545
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Call/Call.php
@@ -0,0 +1,162 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Call;
+
+use Exception;
+use Prophecy\Argument\ArgumentsWildcard;
+
+/**
+ * Call object.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class Call
+{
+ private $methodName;
+ private $arguments;
+ private $returnValue;
+ private $exception;
+ private $file;
+ private $line;
+ private $scores;
+
+ /**
+ * Initializes call.
+ *
+ * @param string $methodName
+ * @param array $arguments
+ * @param mixed $returnValue
+ * @param Exception $exception
+ * @param null|string $file
+ * @param null|int $line
+ */
+ public function __construct($methodName, array $arguments, $returnValue,
+ Exception $exception = null, $file, $line)
+ {
+ $this->methodName = $methodName;
+ $this->arguments = $arguments;
+ $this->returnValue = $returnValue;
+ $this->exception = $exception;
+ $this->scores = new \SplObjectStorage();
+
+ if ($file) {
+ $this->file = $file;
+ $this->line = intval($line);
+ }
+ }
+
+ /**
+ * Returns called method name.
+ *
+ * @return string
+ */
+ public function getMethodName()
+ {
+ return $this->methodName;
+ }
+
+ /**
+ * Returns called method arguments.
+ *
+ * @return array
+ */
+ public function getArguments()
+ {
+ return $this->arguments;
+ }
+
+ /**
+ * Returns called method return value.
+ *
+ * @return null|mixed
+ */
+ public function getReturnValue()
+ {
+ return $this->returnValue;
+ }
+
+ /**
+ * Returns exception that call thrown.
+ *
+ * @return null|Exception
+ */
+ public function getException()
+ {
+ return $this->exception;
+ }
+
+ /**
+ * Returns callee filename.
+ *
+ * @return string
+ */
+ public function getFile()
+ {
+ return $this->file;
+ }
+
+ /**
+ * Returns callee line number.
+ *
+ * @return int
+ */
+ public function getLine()
+ {
+ return $this->line;
+ }
+
+ /**
+ * Returns short notation for callee place.
+ *
+ * @return string
+ */
+ public function getCallPlace()
+ {
+ if (null === $this->file) {
+ return 'unknown';
+ }
+
+ return sprintf('%s:%d', $this->file, $this->line);
+ }
+
+ /**
+ * Adds the wildcard match score for the provided wildcard.
+ *
+ * @param ArgumentsWildcard $wildcard
+ * @param false|int $score
+ *
+ * @return $this
+ */
+ public function addScore(ArgumentsWildcard $wildcard, $score)
+ {
+ $this->scores[$wildcard] = $score;
+
+ return $this;
+ }
+
+ /**
+ * Returns wildcard match score for the provided wildcard. The score is
+ * calculated if not already done.
+ *
+ * @param ArgumentsWildcard $wildcard
+ *
+ * @return false|int False OR integer score (higher - better)
+ */
+ public function getScore(ArgumentsWildcard $wildcard)
+ {
+ if (isset($this->scores[$wildcard])) {
+ return $this->scores[$wildcard];
+ }
+
+ return $this->scores[$wildcard] = $wildcard->scoreArguments($this->getArguments());
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php b/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php
new file mode 100644
index 000000000..00c526d7e
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Call/CallCenter.php
@@ -0,0 +1,240 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Call;
+
+use Prophecy\Exception\Prophecy\MethodProphecyException;
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Argument\ArgumentsWildcard;
+use Prophecy\Util\StringUtil;
+use Prophecy\Exception\Call\UnexpectedCallException;
+use SplObjectStorage;
+
+/**
+ * Calls receiver & manager.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class CallCenter
+{
+ private $util;
+
+ /**
+ * @var Call[]
+ */
+ private $recordedCalls = array();
+
+ /**
+ * @var SplObjectStorage
+ */
+ private $unexpectedCalls;
+
+ /**
+ * Initializes call center.
+ *
+ * @param StringUtil $util
+ */
+ public function __construct(StringUtil $util = null)
+ {
+ $this->util = $util ?: new StringUtil;
+ $this->unexpectedCalls = new SplObjectStorage();
+ }
+
+ /**
+ * Makes and records specific method call for object prophecy.
+ *
+ * @param ObjectProphecy $prophecy
+ * @param string $methodName
+ * @param array $arguments
+ *
+ * @return mixed Returns null if no promise for prophecy found or promise return value.
+ *
+ * @throws \Prophecy\Exception\Call\UnexpectedCallException If no appropriate method prophecy found
+ */
+ public function makeCall(ObjectProphecy $prophecy, $methodName, array $arguments)
+ {
+ // For efficiency exclude 'args' from the generated backtrace
+ // Limit backtrace to last 3 calls as we don't use the rest
+ $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3);
+
+ $file = $line = null;
+ if (isset($backtrace[2]) && isset($backtrace[2]['file'])) {
+ $file = $backtrace[2]['file'];
+ $line = $backtrace[2]['line'];
+ }
+
+ // If no method prophecies defined, then it's a dummy, so we'll just return null
+ if ('__destruct' === strtolower($methodName) || 0 == count($prophecy->getMethodProphecies())) {
+ $this->recordedCalls[] = new Call($methodName, $arguments, null, null, $file, $line);
+
+ return null;
+ }
+
+ // There are method prophecies, so it's a fake/stub. Searching prophecy for this call
+ $matches = $this->findMethodProphecies($prophecy, $methodName, $arguments);
+
+ // If fake/stub doesn't have method prophecy for this call - throw exception
+ if (!count($matches)) {
+ $this->unexpectedCalls->attach(new Call($methodName, $arguments, null, null, $file, $line), $prophecy);
+ $this->recordedCalls[] = new Call($methodName, $arguments, null, null, $file, $line);
+
+ return null;
+ }
+
+ // Sort matches by their score value
+ @usort($matches, function ($match1, $match2) { return $match2[0] - $match1[0]; });
+
+ $score = $matches[0][0];
+ // If Highest rated method prophecy has a promise - execute it or return null instead
+ $methodProphecy = $matches[0][1];
+ $returnValue = null;
+ $exception = null;
+ if ($promise = $methodProphecy->getPromise()) {
+ try {
+ $returnValue = $promise->execute($arguments, $prophecy, $methodProphecy);
+ } catch (\Exception $e) {
+ $exception = $e;
+ }
+ }
+
+ if ($methodProphecy->hasReturnVoid() && $returnValue !== null) {
+ throw new MethodProphecyException(
+ "The method \"$methodName\" has a void return type, but the promise returned a value",
+ $methodProphecy
+ );
+ }
+
+ $this->recordedCalls[] = $call = new Call(
+ $methodName, $arguments, $returnValue, $exception, $file, $line
+ );
+ $call->addScore($methodProphecy->getArgumentsWildcard(), $score);
+
+ if (null !== $exception) {
+ throw $exception;
+ }
+
+ return $returnValue;
+ }
+
+ /**
+ * Searches for calls by method name & arguments wildcard.
+ *
+ * @param string $methodName
+ * @param ArgumentsWildcard $wildcard
+ *
+ * @return Call[]
+ */
+ public function findCalls($methodName, ArgumentsWildcard $wildcard)
+ {
+ $methodName = strtolower($methodName);
+
+ return array_values(
+ array_filter($this->recordedCalls, function (Call $call) use ($methodName, $wildcard) {
+ return $methodName === strtolower($call->getMethodName())
+ && 0 < $call->getScore($wildcard)
+ ;
+ })
+ );
+ }
+
+ /**
+ * @throws UnexpectedCallException
+ */
+ public function checkUnexpectedCalls()
+ {
+ /** @var Call $call */
+ foreach ($this->unexpectedCalls as $call) {
+ $prophecy = $this->unexpectedCalls[$call];
+
+ // If fake/stub doesn't have method prophecy for this call - throw exception
+ if (!count($this->findMethodProphecies($prophecy, $call->getMethodName(), $call->getArguments()))) {
+ throw $this->createUnexpectedCallException($prophecy, $call->getMethodName(), $call->getArguments());
+ }
+ }
+ }
+
+ private function createUnexpectedCallException(ObjectProphecy $prophecy, $methodName,
+ array $arguments)
+ {
+ $classname = get_class($prophecy->reveal());
+ $indentationLength = 8; // looks good
+ $argstring = implode(
+ ",\n",
+ $this->indentArguments(
+ array_map(array($this->util, 'stringify'), $arguments),
+ $indentationLength
+ )
+ );
+
+ $expected = array();
+
+ foreach (array_merge(...array_values($prophecy->getMethodProphecies())) as $methodProphecy) {
+ $expected[] = sprintf(
+ " - %s(\n" .
+ "%s\n" .
+ " )",
+ $methodProphecy->getMethodName(),
+ implode(
+ ",\n",
+ $this->indentArguments(
+ array_map('strval', $methodProphecy->getArgumentsWildcard()->getTokens()),
+ $indentationLength
+ )
+ )
+ );
+ }
+
+ return new UnexpectedCallException(
+ sprintf(
+ "Unexpected method call on %s:\n".
+ " - %s(\n".
+ "%s\n".
+ " )\n".
+ "expected calls were:\n".
+ "%s",
+
+ $classname, $methodName, $argstring, implode("\n", $expected)
+ ),
+ $prophecy, $methodName, $arguments
+
+ );
+ }
+
+ private function indentArguments(array $arguments, $indentationLength)
+ {
+ return preg_replace_callback(
+ '/^/m',
+ function () use ($indentationLength) {
+ return str_repeat(' ', $indentationLength);
+ },
+ $arguments
+ );
+ }
+
+ /**
+ * @param ObjectProphecy $prophecy
+ * @param string $methodName
+ * @param array $arguments
+ *
+ * @return array
+ */
+ private function findMethodProphecies(ObjectProphecy $prophecy, $methodName, array $arguments)
+ {
+ $matches = array();
+ foreach ($prophecy->getMethodProphecies($methodName) as $methodProphecy) {
+ if (0 < $score = $methodProphecy->getArgumentsWildcard()->scoreArguments($arguments)) {
+ $matches[] = array($score, $methodProphecy);
+ }
+ }
+
+ return $matches;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php
new file mode 100644
index 000000000..fabfbc61f
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ClosureComparator.php
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Comparator;
+
+use SebastianBergmann\Comparator\Comparator;
+use SebastianBergmann\Comparator\ComparisonFailure;
+
+/**
+ * Closure comparator.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+final class ClosureComparator extends Comparator
+{
+ public function accepts($expected, $actual): bool
+ {
+ return is_object($expected) && $expected instanceof \Closure
+ && is_object($actual) && $actual instanceof \Closure;
+ }
+
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = array()): void
+ {
+ if ($expected !== $actual) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ // we don't need a diff
+ '',
+ '',
+ false,
+ 'all closures are different if not identical'
+ );
+ }
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php
new file mode 100644
index 000000000..2070db142
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Comparator/Factory.php
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Comparator;
+
+use SebastianBergmann\Comparator\Factory as BaseFactory;
+
+/**
+ * Prophecy comparator factory.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+final class Factory extends BaseFactory
+{
+ /**
+ * @var Factory
+ */
+ private static $instance;
+
+ public function __construct()
+ {
+ parent::__construct();
+
+ $this->register(new ClosureComparator());
+ $this->register(new ProphecyComparator());
+ }
+
+ /**
+ * @return Factory
+ */
+ public static function getInstance()
+ {
+ if (self::$instance === null) {
+ self::$instance = new Factory;
+ }
+
+ return self::$instance;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php
new file mode 100644
index 000000000..2736e410e
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Comparator;
+
+use Prophecy\Prophecy\ProphecyInterface;
+use SebastianBergmann\Comparator\ObjectComparator;
+
+/**
+ * @final
+ */
+class ProphecyComparator extends ObjectComparator
+{
+ public function accepts($expected, $actual): bool
+ {
+ return is_object($expected) && is_object($actual) && $actual instanceof ProphecyInterface;
+ }
+
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = array()): void
+ {
+ parent::assertEquals($expected, $actual->reveal(), $delta, $canonicalize, $ignoreCase, $processed);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php
new file mode 100644
index 000000000..2b875211a
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/CachedDoubler.php
@@ -0,0 +1,66 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler;
+
+use ReflectionClass;
+
+/**
+ * Cached class doubler.
+ * Prevents mirroring/creation of the same structure twice.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class CachedDoubler extends Doubler
+{
+ private static $classes = array();
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function createDoubleClass(ReflectionClass $class = null, array $interfaces)
+ {
+ $classId = $this->generateClassId($class, $interfaces);
+ if (isset(self::$classes[$classId])) {
+ return self::$classes[$classId];
+ }
+
+ return self::$classes[$classId] = parent::createDoubleClass($class, $interfaces);
+ }
+
+ /**
+ * @param ReflectionClass $class
+ * @param ReflectionClass[] $interfaces
+ *
+ * @return string
+ */
+ private function generateClassId(ReflectionClass $class = null, array $interfaces)
+ {
+ $parts = array();
+ if (null !== $class) {
+ $parts[] = $class->getName();
+ }
+ foreach ($interfaces as $interface) {
+ $parts[] = $interface->getName();
+ }
+ foreach ($this->getClassPatches() as $patch) {
+ $parts[] = get_class($patch);
+ }
+ sort($parts);
+
+ return md5(implode('', $parts));
+ }
+
+ public function resetCache()
+ {
+ self::$classes = array();
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php
new file mode 100644
index 000000000..d6d196850
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ClassPatchInterface.php
@@ -0,0 +1,48 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\ClassPatch;
+
+use Prophecy\Doubler\Generator\Node\ClassNode;
+
+/**
+ * Class patch interface.
+ * Class patches extend doubles functionality or help
+ * Prophecy to avoid some internal PHP bugs.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+interface ClassPatchInterface
+{
+ /**
+ * Checks if patch supports specific class node.
+ *
+ * @param ClassNode $node
+ *
+ * @return bool
+ */
+ public function supports(ClassNode $node);
+
+ /**
+ * Applies patch to the specific class node.
+ *
+ * @param ClassNode $node
+ * @return void
+ */
+ public function apply(ClassNode $node);
+
+ /**
+ * Returns patch priority, which determines when patch will be applied.
+ *
+ * @return int Priority number (higher - earlier)
+ */
+ public function getPriority();
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php
new file mode 100644
index 000000000..9d843099d
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/DisableConstructorPatch.php
@@ -0,0 +1,76 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\ClassPatch;
+
+use Prophecy\Doubler\Generator\Node\ClassNode;
+use Prophecy\Doubler\Generator\Node\MethodNode;
+
+/**
+ * Disable constructor.
+ * Makes all constructor arguments optional.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class DisableConstructorPatch implements ClassPatchInterface
+{
+ /**
+ * Checks if class has `__construct` method.
+ *
+ * @param ClassNode $node
+ *
+ * @return bool
+ */
+ public function supports(ClassNode $node)
+ {
+ return true;
+ }
+
+ /**
+ * Makes all class constructor arguments optional.
+ *
+ * @param ClassNode $node
+ */
+ public function apply(ClassNode $node)
+ {
+ if (!$node->isExtendable('__construct')) {
+ return;
+ }
+
+ if (!$node->hasMethod('__construct')) {
+ $node->addMethod(new MethodNode('__construct', ''));
+
+ return;
+ }
+
+ $constructor = $node->getMethod('__construct');
+ foreach ($constructor->getArguments() as $argument) {
+ $argument->setDefault(null);
+ }
+
+ $constructor->setCode(<<<PHP
+if (0 < func_num_args()) {
+ call_user_func_array(array('parent', '__construct'), func_get_args());
+}
+PHP
+ );
+ }
+
+ /**
+ * Returns patch priority, which determines when patch will be applied.
+ *
+ * @return int Priority number (higher - earlier)
+ */
+ public function getPriority()
+ {
+ return 100;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php
new file mode 100644
index 000000000..fa38fc0d1
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/HhvmExceptionPatch.php
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\ClassPatch;
+
+use Prophecy\Doubler\Generator\Node\ClassNode;
+
+/**
+ * Exception patch for HHVM to remove the stubs from special methods
+ *
+ * @author Christophe Coevoet <[email protected]>
+ */
+class HhvmExceptionPatch implements ClassPatchInterface
+{
+ /**
+ * Supports exceptions on HHVM.
+ *
+ * @param ClassNode $node
+ *
+ * @return bool
+ */
+ public function supports(ClassNode $node)
+ {
+ if (!defined('HHVM_VERSION')) {
+ return false;
+ }
+
+ return 'Exception' === $node->getParentClass() || is_subclass_of($node->getParentClass(), 'Exception');
+ }
+
+ /**
+ * Removes special exception static methods from the doubled methods.
+ *
+ * @param ClassNode $node
+ *
+ * @return void
+ */
+ public function apply(ClassNode $node)
+ {
+ if ($node->hasMethod('setTraceOptions')) {
+ $node->getMethod('setTraceOptions')->useParentCode();
+ }
+ if ($node->hasMethod('getTraceOptions')) {
+ $node->getMethod('getTraceOptions')->useParentCode();
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getPriority()
+ {
+ return -50;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php
new file mode 100644
index 000000000..ab99f74be
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/KeywordPatch.php
@@ -0,0 +1,68 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\ClassPatch;
+
+use Prophecy\Doubler\Generator\Node\ClassNode;
+
+/**
+ * Remove method functionality from the double which will clash with php keywords.
+ *
+ * @author Milan Magudia <[email protected]>
+ */
+class KeywordPatch implements ClassPatchInterface
+{
+ /**
+ * Support any class
+ *
+ * @param ClassNode $node
+ *
+ * @return boolean
+ */
+ public function supports(ClassNode $node)
+ {
+ return true;
+ }
+
+ /**
+ * Remove methods that clash with php keywords
+ *
+ * @param ClassNode $node
+ */
+ public function apply(ClassNode $node)
+ {
+ $methodNames = array_keys($node->getMethods());
+ $methodsToRemove = array_intersect($methodNames, $this->getKeywords());
+ foreach ($methodsToRemove as $methodName) {
+ $node->removeMethod($methodName);
+ }
+ }
+
+ /**
+ * Returns patch priority, which determines when patch will be applied.
+ *
+ * @return int Priority number (higher - earlier)
+ */
+ public function getPriority()
+ {
+ return 49;
+ }
+
+ /**
+ * Returns array of php keywords.
+ *
+ * @return array
+ */
+ private function getKeywords()
+ {
+ return ['__halt_compiler'];
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php
new file mode 100644
index 000000000..a545eeff5
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/MagicCallPatch.php
@@ -0,0 +1,105 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\ClassPatch;
+
+use Prophecy\Doubler\Generator\Node\ArgumentNode;
+use Prophecy\Doubler\Generator\Node\ClassNode;
+use Prophecy\Doubler\Generator\Node\MethodNode;
+use Prophecy\PhpDocumentor\ClassAndInterfaceTagRetriever;
+use Prophecy\PhpDocumentor\MethodTagRetrieverInterface;
+
+/**
+ * Discover Magical API using "@method" PHPDoc format.
+ *
+ * @author Thomas Tourlourat <[email protected]>
+ * @author Kévin Dunglas <[email protected]>
+ * @author Théo FIDRY <[email protected]>
+ */
+class MagicCallPatch implements ClassPatchInterface
+{
+ const MAGIC_METHODS_WITH_ARGUMENTS = ['__call', '__callStatic', '__get', '__isset', '__set', '__set_state', '__unserialize', '__unset'];
+
+ private $tagRetriever;
+
+ public function __construct(MethodTagRetrieverInterface $tagRetriever = null)
+ {
+ $this->tagRetriever = null === $tagRetriever ? new ClassAndInterfaceTagRetriever() : $tagRetriever;
+ }
+
+ /**
+ * Support any class
+ *
+ * @param ClassNode $node
+ *
+ * @return boolean
+ */
+ public function supports(ClassNode $node)
+ {
+ return true;
+ }
+
+ /**
+ * Discover Magical API
+ *
+ * @param ClassNode $node
+ */
+ public function apply(ClassNode $node)
+ {
+ $types = array_filter($node->getInterfaces(), function ($interface) {
+ return 0 !== strpos($interface, 'Prophecy\\');
+ });
+ $types[] = $node->getParentClass();
+
+ foreach ($types as $type) {
+ $reflectionClass = new \ReflectionClass($type);
+
+ while ($reflectionClass) {
+ $tagList = $this->tagRetriever->getTagList($reflectionClass);
+
+ foreach ($tagList as $tag) {
+ $methodName = $tag->getMethodName();
+
+ if (empty($methodName)) {
+ continue;
+ }
+
+ if (!$reflectionClass->hasMethod($methodName)) {
+ $methodNode = new MethodNode($methodName);
+
+ // only magic methods can have a contract that needs to be enforced
+ if (in_array($methodName, self::MAGIC_METHODS_WITH_ARGUMENTS)) {
+ foreach($tag->getArguments() as $argument) {
+ $argumentNode = new ArgumentNode($argument['name']);
+ $methodNode->addArgument($argumentNode);
+ }
+ }
+
+ $methodNode->setStatic($tag->isStatic());
+ $node->addMethod($methodNode);
+ }
+ }
+
+ $reflectionClass = $reflectionClass->getParentClass();
+ }
+ }
+ }
+
+ /**
+ * Returns patch priority, which determines when patch will be applied.
+ *
+ * @return integer Priority number (higher - earlier)
+ */
+ public function getPriority()
+ {
+ return 50;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php
new file mode 100644
index 000000000..7573ca50e
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ProphecySubjectPatch.php
@@ -0,0 +1,113 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\ClassPatch;
+
+use Prophecy\Doubler\Generator\Node\ArgumentTypeNode;
+use Prophecy\Doubler\Generator\Node\ClassNode;
+use Prophecy\Doubler\Generator\Node\MethodNode;
+use Prophecy\Doubler\Generator\Node\ArgumentNode;
+use Prophecy\Doubler\Generator\Node\ReturnTypeNode;
+
+/**
+ * Add Prophecy functionality to the double.
+ * This is a core class patch for Prophecy.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ProphecySubjectPatch implements ClassPatchInterface
+{
+ /**
+ * Always returns true.
+ *
+ * @param ClassNode $node
+ *
+ * @return bool
+ */
+ public function supports(ClassNode $node)
+ {
+ return true;
+ }
+
+ /**
+ * Apply Prophecy functionality to class node.
+ *
+ * @param ClassNode $node
+ */
+ public function apply(ClassNode $node)
+ {
+ $node->addInterface('Prophecy\Prophecy\ProphecySubjectInterface');
+ $node->addProperty('objectProphecyClosure', 'private');
+
+ foreach ($node->getMethods() as $name => $method) {
+ if ('__construct' === strtolower($name)) {
+ continue;
+ }
+
+ if (!$method->getReturnTypeNode()->hasReturnStatement()) {
+ $method->setCode(
+ '$this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());'
+ );
+ } else {
+ $method->setCode(
+ 'return $this->getProphecy()->makeProphecyMethodCall(__FUNCTION__, func_get_args());'
+ );
+ }
+ }
+
+ $prophecySetter = new MethodNode('setProphecy');
+ $prophecyArgument = new ArgumentNode('prophecy');
+ $prophecyArgument->setTypeNode(new ArgumentTypeNode('Prophecy\Prophecy\ProphecyInterface'));
+ $prophecySetter->addArgument($prophecyArgument);
+ $prophecySetter->setCode(<<<PHP
+if (null === \$this->objectProphecyClosure) {
+ \$this->objectProphecyClosure = static function () use (\$prophecy) {
+ return \$prophecy;
+ };
+}
+PHP
+ );
+
+ $prophecyGetter = new MethodNode('getProphecy');
+ $prophecyGetter->setCode('return \call_user_func($this->objectProphecyClosure);');
+
+ if ($node->hasMethod('__call')) {
+ $__call = $node->getMethod('__call');
+ } else {
+ $__call = new MethodNode('__call');
+ $__call->addArgument(new ArgumentNode('name'));
+ $__call->addArgument(new ArgumentNode('arguments'));
+
+ $node->addMethod($__call, true);
+ }
+
+ $__call->setCode(<<<PHP
+throw new \Prophecy\Exception\Doubler\MethodNotFoundException(
+ sprintf('Method `%s::%s()` not found.', get_class(\$this), func_get_arg(0)),
+ get_class(\$this), func_get_arg(0)
+);
+PHP
+ );
+
+ $node->addMethod($prophecySetter, true);
+ $node->addMethod($prophecyGetter, true);
+ }
+
+ /**
+ * Returns patch priority, which determines when patch will be applied.
+ *
+ * @return int Priority number (higher - earlier)
+ */
+ public function getPriority()
+ {
+ return 0;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php
new file mode 100644
index 000000000..9166aeefa
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ReflectionClassNewInstancePatch.php
@@ -0,0 +1,57 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\ClassPatch;
+
+use Prophecy\Doubler\Generator\Node\ClassNode;
+
+/**
+ * ReflectionClass::newInstance patch.
+ * Makes first argument of newInstance optional, since it works but signature is misleading
+ *
+ * @author Florian Klein <[email protected]>
+ */
+class ReflectionClassNewInstancePatch implements ClassPatchInterface
+{
+ /**
+ * Supports ReflectionClass
+ *
+ * @param ClassNode $node
+ *
+ * @return bool
+ */
+ public function supports(ClassNode $node)
+ {
+ return 'ReflectionClass' === $node->getParentClass();
+ }
+
+ /**
+ * Updates newInstance's first argument to make it optional
+ *
+ * @param ClassNode $node
+ */
+ public function apply(ClassNode $node)
+ {
+ foreach ($node->getMethod('newInstance')->getArguments() as $argument) {
+ $argument->setDefault(null);
+ }
+ }
+
+ /**
+ * Returns patch priority, which determines when patch will be applied.
+ *
+ * @return int Priority number (higher = earlier)
+ */
+ public function getPriority()
+ {
+ return 50;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php
new file mode 100644
index 000000000..ceee94a2e
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/SplFileInfoPatch.php
@@ -0,0 +1,123 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\ClassPatch;
+
+use Prophecy\Doubler\Generator\Node\ClassNode;
+use Prophecy\Doubler\Generator\Node\MethodNode;
+
+/**
+ * SplFileInfo patch.
+ * Makes SplFileInfo and derivative classes usable with Prophecy.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class SplFileInfoPatch implements ClassPatchInterface
+{
+ /**
+ * Supports everything that extends SplFileInfo.
+ *
+ * @param ClassNode $node
+ *
+ * @return bool
+ */
+ public function supports(ClassNode $node)
+ {
+ if (null === $node->getParentClass()) {
+ return false;
+ }
+ return 'SplFileInfo' === $node->getParentClass()
+ || is_subclass_of($node->getParentClass(), 'SplFileInfo')
+ ;
+ }
+
+ /**
+ * Updated constructor code to call parent one with dummy file argument.
+ *
+ * @param ClassNode $node
+ */
+ public function apply(ClassNode $node)
+ {
+ if ($node->hasMethod('__construct')) {
+ $constructor = $node->getMethod('__construct');
+ } else {
+ $constructor = new MethodNode('__construct');
+ $node->addMethod($constructor);
+ }
+
+ if ($this->nodeIsDirectoryIterator($node)) {
+ $constructor->setCode('return parent::__construct("' . __DIR__ . '");');
+
+ return;
+ }
+
+ if ($this->nodeIsSplFileObject($node)) {
+ $filePath = str_replace('\\','\\\\',__FILE__);
+ $constructor->setCode('return parent::__construct("' . $filePath .'");');
+
+ return;
+ }
+
+ if ($this->nodeIsSymfonySplFileInfo($node)) {
+ $filePath = str_replace('\\','\\\\',__FILE__);
+ $constructor->setCode('return parent::__construct("' . $filePath .'", "", "");');
+
+ return;
+ }
+
+ $constructor->useParentCode();
+ }
+
+ /**
+ * Returns patch priority, which determines when patch will be applied.
+ *
+ * @return int Priority number (higher - earlier)
+ */
+ public function getPriority()
+ {
+ return 50;
+ }
+
+ /**
+ * @param ClassNode $node
+ * @return boolean
+ */
+ private function nodeIsDirectoryIterator(ClassNode $node)
+ {
+ $parent = $node->getParentClass();
+
+ return 'DirectoryIterator' === $parent
+ || is_subclass_of($parent, 'DirectoryIterator');
+ }
+
+ /**
+ * @param ClassNode $node
+ * @return boolean
+ */
+ private function nodeIsSplFileObject(ClassNode $node)
+ {
+ $parent = $node->getParentClass();
+
+ return 'SplFileObject' === $parent
+ || is_subclass_of($parent, 'SplFileObject');
+ }
+
+ /**
+ * @param ClassNode $node
+ * @return boolean
+ */
+ private function nodeIsSymfonySplFileInfo(ClassNode $node)
+ {
+ $parent = $node->getParentClass();
+
+ return 'Symfony\\Component\\Finder\\SplFileInfo' === $parent;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ThrowablePatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ThrowablePatch.php
new file mode 100644
index 000000000..b98e94327
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/ThrowablePatch.php
@@ -0,0 +1,95 @@
+<?php
+
+namespace Prophecy\Doubler\ClassPatch;
+
+use Prophecy\Doubler\Generator\Node\ClassNode;
+use Prophecy\Exception\Doubler\ClassCreatorException;
+
+class ThrowablePatch implements ClassPatchInterface
+{
+ /**
+ * Checks if patch supports specific class node.
+ *
+ * @param ClassNode $node
+ * @return bool
+ */
+ public function supports(ClassNode $node)
+ {
+ return $this->implementsAThrowableInterface($node) && $this->doesNotExtendAThrowableClass($node);
+ }
+
+ /**
+ * @param ClassNode $node
+ * @return bool
+ */
+ private function implementsAThrowableInterface(ClassNode $node)
+ {
+ foreach ($node->getInterfaces() as $type) {
+ if (is_a($type, 'Throwable', true)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * @param ClassNode $node
+ * @return bool
+ */
+ private function doesNotExtendAThrowableClass(ClassNode $node)
+ {
+ return !is_a($node->getParentClass(), 'Throwable', true);
+ }
+
+ /**
+ * Applies patch to the specific class node.
+ *
+ * @param ClassNode $node
+ *
+ * @return void
+ */
+ public function apply(ClassNode $node)
+ {
+ $this->checkItCanBeDoubled($node);
+ $this->setParentClassToException($node);
+ }
+
+ private function checkItCanBeDoubled(ClassNode $node)
+ {
+ $className = $node->getParentClass();
+ if ($className !== 'stdClass') {
+ throw new ClassCreatorException(
+ sprintf(
+ 'Cannot double concrete class %s as well as implement Traversable',
+ $className
+ ),
+ $node
+ );
+ }
+ }
+
+ private function setParentClassToException(ClassNode $node)
+ {
+ $node->setParentClass('Exception');
+
+ $node->removeMethod('getMessage');
+ $node->removeMethod('getCode');
+ $node->removeMethod('getFile');
+ $node->removeMethod('getLine');
+ $node->removeMethod('getTrace');
+ $node->removeMethod('getPrevious');
+ $node->removeMethod('getNext');
+ $node->removeMethod('getTraceAsString');
+ }
+
+ /**
+ * Returns patch priority, which determines when patch will be applied.
+ *
+ * @return int Priority number (higher - earlier)
+ */
+ public function getPriority()
+ {
+ return 100;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php
new file mode 100644
index 000000000..0e2e04700
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/ClassPatch/TraversablePatch.php
@@ -0,0 +1,98 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\ClassPatch;
+
+use Prophecy\Doubler\Generator\Node\ClassNode;
+use Prophecy\Doubler\Generator\Node\MethodNode;
+use Prophecy\Doubler\Generator\Node\ReturnTypeNode;
+
+/**
+ * Traversable interface patch.
+ * Forces classes that implement interfaces, that extend Traversable to also implement Iterator.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class TraversablePatch implements ClassPatchInterface
+{
+ /**
+ * Supports nodetree, that implement Traversable, but not Iterator or IteratorAggregate.
+ *
+ * @param ClassNode $node
+ *
+ * @return bool
+ */
+ public function supports(ClassNode $node)
+ {
+ if (in_array('Iterator', $node->getInterfaces())) {
+ return false;
+ }
+ if (in_array('IteratorAggregate', $node->getInterfaces())) {
+ return false;
+ }
+
+ foreach ($node->getInterfaces() as $interface) {
+ if ('Traversable' !== $interface && !is_subclass_of($interface, 'Traversable')) {
+ continue;
+ }
+ if ('Iterator' === $interface || is_subclass_of($interface, 'Iterator')) {
+ continue;
+ }
+ if ('IteratorAggregate' === $interface || is_subclass_of($interface, 'IteratorAggregate')) {
+ continue;
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Forces class to implement Iterator interface.
+ *
+ * @param ClassNode $node
+ */
+ public function apply(ClassNode $node)
+ {
+ $node->addInterface('Iterator');
+
+ $currentMethod = new MethodNode('current');
+ (\PHP_VERSION_ID >= 80100) && $currentMethod->setReturnTypeNode(new ReturnTypeNode('mixed'));
+ $node->addMethod($currentMethod);
+
+ $keyMethod = new MethodNode('key');
+ (\PHP_VERSION_ID >= 80100) && $keyMethod->setReturnTypeNode(new ReturnTypeNode('mixed'));
+ $node->addMethod($keyMethod);
+
+ $nextMethod = new MethodNode('next');
+ (\PHP_VERSION_ID >= 80100) && $nextMethod->setReturnTypeNode(new ReturnTypeNode('void'));
+ $node->addMethod($nextMethod);
+
+ $rewindMethod = new MethodNode('rewind');
+ (\PHP_VERSION_ID >= 80100) && $rewindMethod->setReturnTypeNode(new ReturnTypeNode('void'));
+ $node->addMethod($rewindMethod);
+
+ $validMethod = new MethodNode('valid');
+ (\PHP_VERSION_ID >= 80100) && $validMethod->setReturnTypeNode(new ReturnTypeNode('bool'));
+ $node->addMethod($validMethod);
+ }
+
+ /**
+ * Returns patch priority, which determines when patch will be applied.
+ *
+ * @return int Priority number (higher - earlier)
+ */
+ public function getPriority()
+ {
+ return 100;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php
new file mode 100644
index 000000000..699be3a2a
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/DoubleInterface.php
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler;
+
+/**
+ * Core double interface.
+ * All doubled classes will implement this one.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+interface DoubleInterface
+{
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php
new file mode 100644
index 000000000..a378ae279
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Doubler.php
@@ -0,0 +1,146 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler;
+
+use Doctrine\Instantiator\Instantiator;
+use Prophecy\Doubler\ClassPatch\ClassPatchInterface;
+use Prophecy\Doubler\Generator\ClassMirror;
+use Prophecy\Doubler\Generator\ClassCreator;
+use Prophecy\Exception\InvalidArgumentException;
+use ReflectionClass;
+
+/**
+ * Cached class doubler.
+ * Prevents mirroring/creation of the same structure twice.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class Doubler
+{
+ private $mirror;
+ private $creator;
+ private $namer;
+
+ /**
+ * @var ClassPatchInterface[]
+ */
+ private $patches = array();
+
+ /**
+ * @var \Doctrine\Instantiator\Instantiator
+ */
+ private $instantiator;
+
+ /**
+ * Initializes doubler.
+ *
+ * @param ClassMirror $mirror
+ * @param ClassCreator $creator
+ * @param NameGenerator $namer
+ */
+ public function __construct(ClassMirror $mirror = null, ClassCreator $creator = null,
+ NameGenerator $namer = null)
+ {
+ $this->mirror = $mirror ?: new ClassMirror;
+ $this->creator = $creator ?: new ClassCreator;
+ $this->namer = $namer ?: new NameGenerator;
+ }
+
+ /**
+ * Returns list of registered class patches.
+ *
+ * @return ClassPatchInterface[]
+ */
+ public function getClassPatches()
+ {
+ return $this->patches;
+ }
+
+ /**
+ * Registers new class patch.
+ *
+ * @param ClassPatchInterface $patch
+ */
+ public function registerClassPatch(ClassPatchInterface $patch)
+ {
+ $this->patches[] = $patch;
+
+ @usort($this->patches, function (ClassPatchInterface $patch1, ClassPatchInterface $patch2) {
+ return $patch2->getPriority() - $patch1->getPriority();
+ });
+ }
+
+ /**
+ * Creates double from specific class or/and list of interfaces.
+ *
+ * @param ReflectionClass $class
+ * @param ReflectionClass[] $interfaces Array of ReflectionClass instances
+ * @param array $args Constructor arguments
+ *
+ * @return DoubleInterface
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function double(ReflectionClass $class = null, array $interfaces, array $args = null)
+ {
+ foreach ($interfaces as $interface) {
+ if (!$interface instanceof ReflectionClass) {
+ throw new InvalidArgumentException(sprintf(
+ "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n".
+ "a second argument to `Doubler::double(...)`, but got %s.",
+ is_object($interface) ? get_class($interface).' class' : gettype($interface)
+ ));
+ }
+ }
+
+ $classname = $this->createDoubleClass($class, $interfaces);
+ $reflection = new ReflectionClass($classname);
+
+ if (null !== $args) {
+ return $reflection->newInstanceArgs($args);
+ }
+ if ((null === $constructor = $reflection->getConstructor())
+ || ($constructor->isPublic() && !$constructor->isFinal())) {
+ return $reflection->newInstance();
+ }
+
+ if (!$this->instantiator) {
+ $this->instantiator = new Instantiator();
+ }
+
+ return $this->instantiator->instantiate($classname);
+ }
+
+ /**
+ * Creates double class and returns its FQN.
+ *
+ * @param ReflectionClass $class
+ * @param ReflectionClass[] $interfaces
+ *
+ * @return string
+ */
+ protected function createDoubleClass(ReflectionClass $class = null, array $interfaces)
+ {
+ $name = $this->namer->name($class, $interfaces);
+ $node = $this->mirror->reflect($class, $interfaces);
+
+ foreach ($this->patches as $patch) {
+ if ($patch->supports($node)) {
+ $patch->apply($node);
+ }
+ }
+
+ $this->creator->create($name, $node);
+
+ return $name;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php
new file mode 100644
index 000000000..52e5e0455
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCodeGenerator.php
@@ -0,0 +1,110 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\Generator;
+
+use Prophecy\Doubler\Generator\Node\ReturnTypeNode;
+use Prophecy\Doubler\Generator\Node\TypeNodeAbstract;
+
+/**
+ * Class code creator.
+ * Generates PHP code for specific class node tree.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ClassCodeGenerator
+{
+ public function __construct(TypeHintReference $typeHintReference = null)
+ {
+ }
+
+ /**
+ * Generates PHP code for class node.
+ *
+ * @param string $classname
+ * @param Node\ClassNode $class
+ *
+ * @return string
+ */
+ public function generate($classname, Node\ClassNode $class)
+ {
+ $parts = explode('\\', $classname);
+ $classname = array_pop($parts);
+ $namespace = implode('\\', $parts);
+
+ $code = sprintf("class %s extends \%s implements %s {\n",
+ $classname, $class->getParentClass(), implode(', ',
+ array_map(function ($interface) {return '\\'.$interface;}, $class->getInterfaces())
+ )
+ );
+
+ foreach ($class->getProperties() as $name => $visibility) {
+ $code .= sprintf("%s \$%s;\n", $visibility, $name);
+ }
+ $code .= "\n";
+
+ foreach ($class->getMethods() as $method) {
+ $code .= $this->generateMethod($method)."\n";
+ }
+ $code .= "\n}";
+
+ return sprintf("namespace %s {\n%s\n}", $namespace, $code);
+ }
+
+ private function generateMethod(Node\MethodNode $method)
+ {
+ $php = sprintf("%s %s function %s%s(%s)%s {\n",
+ $method->getVisibility(),
+ $method->isStatic() ? 'static' : '',
+ $method->returnsReference() ? '&':'',
+ $method->getName(),
+ implode(', ', $this->generateArguments($method->getArguments())),
+ ($ret = $this->generateTypes($method->getReturnTypeNode())) ? ': '.$ret : ''
+ );
+ $php .= $method->getCode()."\n";
+
+ return $php.'}';
+ }
+
+ private function generateTypes(TypeNodeAbstract $typeNode): string
+ {
+ if (!$typeNode->getTypes()) {
+ return '';
+ }
+
+ // When we require PHP 8 we can stop generating ?foo nullables and remove this first block
+ if ($typeNode->canUseNullShorthand()) {
+ return sprintf( '?%s', $typeNode->getNonNullTypes()[0]);
+ } else {
+ return join('|', $typeNode->getTypes());
+ }
+ }
+
+ private function generateArguments(array $arguments)
+ {
+ return array_map(function (Node\ArgumentNode $argument){
+
+ $php = $this->generateTypes($argument->getTypeNode());
+
+ $php .= ' '.($argument->isPassedByReference() ? '&' : '');
+
+ $php .= $argument->isVariadic() ? '...' : '';
+
+ $php .= '$'.$argument->getName();
+
+ if ($argument->isOptional() && !$argument->isVariadic()) {
+ $php .= ' = '.var_export($argument->getDefault(), true);
+ }
+
+ return $php;
+ }, $arguments);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php
new file mode 100644
index 000000000..882a4a4b7
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassCreator.php
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\Generator;
+
+use Prophecy\Exception\Doubler\ClassCreatorException;
+
+/**
+ * Class creator.
+ * Creates specific class in current environment.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ClassCreator
+{
+ private $generator;
+
+ /**
+ * Initializes creator.
+ *
+ * @param ClassCodeGenerator $generator
+ */
+ public function __construct(ClassCodeGenerator $generator = null)
+ {
+ $this->generator = $generator ?: new ClassCodeGenerator;
+ }
+
+ /**
+ * Creates class.
+ *
+ * @param string $classname
+ * @param Node\ClassNode $class
+ *
+ * @return mixed
+ *
+ * @throws \Prophecy\Exception\Doubler\ClassCreatorException
+ */
+ public function create($classname, Node\ClassNode $class)
+ {
+ $code = $this->generator->generate($classname, $class);
+ $return = eval($code);
+
+ if (!class_exists($classname, false)) {
+ if (count($class->getInterfaces())) {
+ throw new ClassCreatorException(sprintf(
+ 'Could not double `%s` and implement interfaces: [%s].',
+ $class->getParentClass(), implode(', ', $class->getInterfaces())
+ ), $class);
+ }
+
+ throw new ClassCreatorException(
+ sprintf('Could not double `%s`.', $class->getParentClass()),
+ $class
+ );
+ }
+
+ return $return;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php
new file mode 100644
index 000000000..5d9cd2d20
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ClassMirror.php
@@ -0,0 +1,254 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\Generator;
+
+use Prophecy\Doubler\Generator\Node\ArgumentTypeNode;
+use Prophecy\Doubler\Generator\Node\ReturnTypeNode;
+use Prophecy\Exception\InvalidArgumentException;
+use Prophecy\Exception\Doubler\ClassMirrorException;
+use ReflectionClass;
+use ReflectionIntersectionType;
+use ReflectionMethod;
+use ReflectionNamedType;
+use ReflectionParameter;
+use ReflectionType;
+use ReflectionUnionType;
+
+/**
+ * Class mirror.
+ * Core doubler class. Mirrors specific class and/or interfaces into class node tree.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ClassMirror
+{
+ private static $reflectableMethods = array(
+ '__construct',
+ '__destruct',
+ '__sleep',
+ '__wakeup',
+ '__toString',
+ '__call',
+ '__invoke'
+ );
+
+ /**
+ * Reflects provided arguments into class node.
+ *
+ * @param ReflectionClass|null $class
+ * @param ReflectionClass[] $interfaces
+ *
+ * @return Node\ClassNode
+ *
+ */
+ public function reflect(?ReflectionClass $class, array $interfaces)
+ {
+ $node = new Node\ClassNode;
+
+ if (null !== $class) {
+ if (true === $class->isInterface()) {
+ throw new InvalidArgumentException(sprintf(
+ "Could not reflect %s as a class, because it\n".
+ "is interface - use the second argument instead.",
+ $class->getName()
+ ));
+ }
+
+ $this->reflectClassToNode($class, $node);
+ }
+
+ foreach ($interfaces as $interface) {
+ if (!$interface instanceof ReflectionClass) {
+ throw new InvalidArgumentException(sprintf(
+ "[ReflectionClass \$interface1 [, ReflectionClass \$interface2]] array expected as\n".
+ "a second argument to `ClassMirror::reflect(...)`, but got %s.",
+ is_object($interface) ? get_class($interface).' class' : gettype($interface)
+ ));
+ }
+ if (false === $interface->isInterface()) {
+ throw new InvalidArgumentException(sprintf(
+ "Could not reflect %s as an interface, because it\n".
+ "is class - use the first argument instead.",
+ $interface->getName()
+ ));
+ }
+
+ $this->reflectInterfaceToNode($interface, $node);
+ }
+
+ $node->addInterface('Prophecy\Doubler\Generator\ReflectionInterface');
+
+ return $node;
+ }
+
+ private function reflectClassToNode(ReflectionClass $class, Node\ClassNode $node)
+ {
+ if (true === $class->isFinal()) {
+ throw new ClassMirrorException(sprintf(
+ 'Could not reflect class %s as it is marked final.', $class->getName()
+ ), $class);
+ }
+
+ $node->setParentClass($class->getName());
+
+ foreach ($class->getMethods(ReflectionMethod::IS_ABSTRACT) as $method) {
+ if (false === $method->isProtected()) {
+ continue;
+ }
+
+ $this->reflectMethodToNode($method, $node);
+ }
+
+ foreach ($class->getMethods(ReflectionMethod::IS_PUBLIC) as $method) {
+ if (0 === strpos($method->getName(), '_')
+ && !in_array($method->getName(), self::$reflectableMethods)) {
+ continue;
+ }
+
+ if (true === $method->isFinal()) {
+ $node->addUnextendableMethod($method->getName());
+ continue;
+ }
+
+ $this->reflectMethodToNode($method, $node);
+ }
+ }
+
+ private function reflectInterfaceToNode(ReflectionClass $interface, Node\ClassNode $node)
+ {
+ $node->addInterface($interface->getName());
+
+ foreach ($interface->getMethods() as $method) {
+ $this->reflectMethodToNode($method, $node);
+ }
+ }
+
+ private function reflectMethodToNode(ReflectionMethod $method, Node\ClassNode $classNode)
+ {
+ $node = new Node\MethodNode($method->getName());
+
+ if (true === $method->isProtected()) {
+ $node->setVisibility('protected');
+ }
+
+ if (true === $method->isStatic()) {
+ $node->setStatic();
+ }
+
+ if (true === $method->returnsReference()) {
+ $node->setReturnsReference();
+ }
+
+ if ($method->hasReturnType()) {
+ $returnTypes = $this->getTypeHints($method->getReturnType(), $method->getDeclaringClass(), $method->getReturnType()->allowsNull());
+ $node->setReturnTypeNode(new ReturnTypeNode(...$returnTypes));
+ }
+ elseif (method_exists($method, 'hasTentativeReturnType') && $method->hasTentativeReturnType()) {
+ $returnTypes = $this->getTypeHints($method->getTentativeReturnType(), $method->getDeclaringClass(), $method->getTentativeReturnType()->allowsNull());
+ $node->setReturnTypeNode(new ReturnTypeNode(...$returnTypes));
+ }
+
+ if (is_array($params = $method->getParameters()) && count($params)) {
+ foreach ($params as $param) {
+ $this->reflectArgumentToNode($param, $node);
+ }
+ }
+
+ $classNode->addMethod($node);
+ }
+
+ private function reflectArgumentToNode(ReflectionParameter $parameter, Node\MethodNode $methodNode)
+ {
+ $name = $parameter->getName() == '...' ? '__dot_dot_dot__' : $parameter->getName();
+ $node = new Node\ArgumentNode($name);
+
+ $typeHints = $this->getTypeHints($parameter->getType(), $parameter->getDeclaringClass(), $parameter->allowsNull());
+
+ $node->setTypeNode(new ArgumentTypeNode(...$typeHints));
+
+ if ($parameter->isVariadic()) {
+ $node->setAsVariadic();
+ }
+
+ if ($this->hasDefaultValue($parameter)) {
+ $node->setDefault($this->getDefaultValue($parameter));
+ }
+
+ if ($parameter->isPassedByReference()) {
+ $node->setAsPassedByReference();
+ }
+
+
+ $methodNode->addArgument($node);
+ }
+
+ private function hasDefaultValue(ReflectionParameter $parameter)
+ {
+ if ($parameter->isVariadic()) {
+ return false;
+ }
+
+ if ($parameter->isDefaultValueAvailable()) {
+ return true;
+ }
+
+ return $parameter->isOptional() || ($parameter->allowsNull() && $parameter->getType() && \PHP_VERSION_ID < 80100);
+ }
+
+ private function getDefaultValue(ReflectionParameter $parameter)
+ {
+ if (!$parameter->isDefaultValueAvailable()) {
+ return null;
+ }
+
+ return $parameter->getDefaultValue();
+ }
+
+ private function getTypeHints(?ReflectionType $type, ?ReflectionClass $class, bool $allowsNull) : array
+ {
+ $types = [];
+
+ if ($type instanceof ReflectionNamedType) {
+ $types = [$type->getName()];
+
+ }
+ elseif ($type instanceof ReflectionUnionType) {
+ $types = $type->getTypes();
+ }
+ elseif ($type instanceof ReflectionIntersectionType) {
+ throw new ClassMirrorException('Doubling intersection types is not supported', $class);
+ }
+ elseif(is_object($type)) {
+ throw new ClassMirrorException('Unknown reflection type ' . get_class($type), $class);
+ }
+
+ $types = array_map(
+ function(string $type) use ($class) {
+ if ($type === 'self') {
+ return $class->getName();
+ }
+ if ($type === 'parent') {
+ return $class->getParentClass()->getName();
+ }
+
+ return $type;
+ },
+ $types
+ );
+
+ if ($types && $types != ['mixed'] && $allowsNull) {
+ $types[] = 'null';
+ }
+
+ return $types;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php
new file mode 100644
index 000000000..da7fed4e1
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentNode.php
@@ -0,0 +1,133 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\Generator\Node;
+
+/**
+ * Argument node.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ArgumentNode
+{
+ private $name;
+ private $default;
+ private $optional = false;
+ private $byReference = false;
+ private $isVariadic = false;
+
+ /** @var ArgumentTypeNode */
+ private $typeNode;
+
+ /**
+ * @param string $name
+ */
+ public function __construct($name)
+ {
+ $this->name = $name;
+ $this->typeNode = new ArgumentTypeNode();
+ }
+
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ public function setTypeNode(ArgumentTypeNode $typeNode)
+ {
+ $this->typeNode = $typeNode;
+ }
+
+ public function getTypeNode() : ArgumentTypeNode
+ {
+ return $this->typeNode;
+ }
+
+ public function hasDefault()
+ {
+ return $this->isOptional() && !$this->isVariadic();
+ }
+
+ public function getDefault()
+ {
+ return $this->default;
+ }
+
+ public function setDefault($default = null)
+ {
+ $this->optional = true;
+ $this->default = $default;
+ }
+
+ public function isOptional()
+ {
+ return $this->optional;
+ }
+
+ public function setAsPassedByReference($byReference = true)
+ {
+ $this->byReference = $byReference;
+ }
+
+ public function isPassedByReference()
+ {
+ return $this->byReference;
+ }
+
+ public function setAsVariadic($isVariadic = true)
+ {
+ $this->isVariadic = $isVariadic;
+ }
+
+ public function isVariadic()
+ {
+ return $this->isVariadic;
+ }
+
+ /**
+ * @deprecated use getArgumentTypeNode instead
+ * @return string|null
+ */
+ public function getTypeHint()
+ {
+ $type = $this->typeNode->getNonNullTypes() ? $this->typeNode->getNonNullTypes()[0] : null;
+
+ return $type ? ltrim($type, '\\') : null;
+ }
+
+ /**
+ * @deprecated use setArgumentTypeNode instead
+ * @param string|null $typeHint
+ */
+ public function setTypeHint($typeHint = null)
+ {
+ $this->typeNode = ($typeHint === null) ? new ArgumentTypeNode() : new ArgumentTypeNode($typeHint);
+ }
+
+ /**
+ * @deprecated use getArgumentTypeNode instead
+ * @return bool
+ */
+ public function isNullable()
+ {
+ return $this->typeNode->canUseNullShorthand();
+ }
+
+ /**
+ * @deprecated use getArgumentTypeNode instead
+ * @param bool $isNullable
+ */
+ public function setAsNullable($isNullable = true)
+ {
+ $nonNullTypes = $this->typeNode->getNonNullTypes();
+ $this->typeNode = $isNullable ? new ArgumentTypeNode('null', ...$nonNullTypes) : new ArgumentTypeNode(...$nonNullTypes);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentTypeNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentTypeNode.php
new file mode 100644
index 000000000..0a18b91e1
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ArgumentTypeNode.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Prophecy\Doubler\Generator\Node;
+
+use Prophecy\Exception\Doubler\DoubleException;
+
+class ArgumentTypeNode extends TypeNodeAbstract
+{
+
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php
new file mode 100644
index 000000000..f7bd2857a
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ClassNode.php
@@ -0,0 +1,169 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\Generator\Node;
+
+use Prophecy\Exception\Doubler\MethodNotExtendableException;
+use Prophecy\Exception\InvalidArgumentException;
+
+/**
+ * Class node.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ClassNode
+{
+ private $parentClass = 'stdClass';
+ private $interfaces = array();
+ private $properties = array();
+ private $unextendableMethods = array();
+
+ /**
+ * @var MethodNode[]
+ */
+ private $methods = array();
+
+ public function getParentClass()
+ {
+ return $this->parentClass;
+ }
+
+ /**
+ * @param string $class
+ */
+ public function setParentClass($class)
+ {
+ $this->parentClass = $class ?: 'stdClass';
+ }
+
+ /**
+ * @return string[]
+ */
+ public function getInterfaces()
+ {
+ return $this->interfaces;
+ }
+
+ /**
+ * @param string $interface
+ */
+ public function addInterface($interface)
+ {
+ if ($this->hasInterface($interface)) {
+ return;
+ }
+
+ array_unshift($this->interfaces, $interface);
+ }
+
+ /**
+ * @param string $interface
+ *
+ * @return bool
+ */
+ public function hasInterface($interface)
+ {
+ return in_array($interface, $this->interfaces);
+ }
+
+ public function getProperties()
+ {
+ return $this->properties;
+ }
+
+ public function addProperty($name, $visibility = 'public')
+ {
+ $visibility = strtolower($visibility);
+
+ if (!in_array($visibility, array('public', 'private', 'protected'))) {
+ throw new InvalidArgumentException(sprintf(
+ '`%s` property visibility is not supported.', $visibility
+ ));
+ }
+
+ $this->properties[$name] = $visibility;
+ }
+
+ /**
+ * @return MethodNode[]
+ */
+ public function getMethods()
+ {
+ return $this->methods;
+ }
+
+ public function addMethod(MethodNode $method, $force = false)
+ {
+ if (!$this->isExtendable($method->getName())){
+ $message = sprintf(
+ 'Method `%s` is not extendable, so can not be added.', $method->getName()
+ );
+ throw new MethodNotExtendableException($message, $this->getParentClass(), $method->getName());
+ }
+
+ if ($force || !isset($this->methods[$method->getName()])) {
+ $this->methods[$method->getName()] = $method;
+ }
+ }
+
+ public function removeMethod($name)
+ {
+ unset($this->methods[$name]);
+ }
+
+ /**
+ * @param string $name
+ *
+ * @return MethodNode|null
+ */
+ public function getMethod($name)
+ {
+ return $this->hasMethod($name) ? $this->methods[$name] : null;
+ }
+
+ /**
+ * @param string $name
+ *
+ * @return bool
+ */
+ public function hasMethod($name)
+ {
+ return isset($this->methods[$name]);
+ }
+
+ /**
+ * @return string[]
+ */
+ public function getUnextendableMethods()
+ {
+ return $this->unextendableMethods;
+ }
+
+ /**
+ * @param string $unextendableMethod
+ */
+ public function addUnextendableMethod($unextendableMethod)
+ {
+ if (!$this->isExtendable($unextendableMethod)){
+ return;
+ }
+ $this->unextendableMethods[] = $unextendableMethod;
+ }
+
+ /**
+ * @param string $method
+ * @return bool
+ */
+ public function isExtendable($method)
+ {
+ return !in_array($method, $this->unextendableMethods);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php
new file mode 100644
index 000000000..ece652f9f
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/MethodNode.php
@@ -0,0 +1,210 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\Generator\Node;
+
+use Prophecy\Doubler\Generator\TypeHintReference;
+use Prophecy\Exception\InvalidArgumentException;
+
+/**
+ * Method node.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class MethodNode
+{
+ private $name;
+ private $code;
+ private $visibility = 'public';
+ private $static = false;
+ private $returnsReference = false;
+
+ /** @var ReturnTypeNode */
+ private $returnTypeNode;
+
+ /**
+ * @var ArgumentNode[]
+ */
+ private $arguments = array();
+
+ /**
+ * @param string $name
+ * @param string $code
+ */
+ public function __construct($name, $code = null, TypeHintReference $typeHintReference = null)
+ {
+ $this->name = $name;
+ $this->code = $code;
+ $this->returnTypeNode = new ReturnTypeNode();
+ }
+
+ public function getVisibility()
+ {
+ return $this->visibility;
+ }
+
+ /**
+ * @param string $visibility
+ */
+ public function setVisibility($visibility)
+ {
+ $visibility = strtolower($visibility);
+
+ if (!in_array($visibility, array('public', 'private', 'protected'))) {
+ throw new InvalidArgumentException(sprintf(
+ '`%s` method visibility is not supported.', $visibility
+ ));
+ }
+
+ $this->visibility = $visibility;
+ }
+
+ public function isStatic()
+ {
+ return $this->static;
+ }
+
+ public function setStatic($static = true)
+ {
+ $this->static = (bool) $static;
+ }
+
+ public function returnsReference()
+ {
+ return $this->returnsReference;
+ }
+
+ public function setReturnsReference()
+ {
+ $this->returnsReference = true;
+ }
+
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ public function addArgument(ArgumentNode $argument)
+ {
+ $this->arguments[] = $argument;
+ }
+
+ /**
+ * @return ArgumentNode[]
+ */
+ public function getArguments()
+ {
+ return $this->arguments;
+ }
+
+ /**
+ * @deprecated use getReturnTypeNode instead
+ * @return bool
+ */
+ public function hasReturnType()
+ {
+ return (bool) $this->returnTypeNode->getNonNullTypes();
+ }
+
+ public function setReturnTypeNode(ReturnTypeNode $returnTypeNode): void
+ {
+ $this->returnTypeNode = $returnTypeNode;
+ }
+
+ /**
+ * @deprecated use setReturnTypeNode instead
+ * @param string $type
+ */
+ public function setReturnType($type = null)
+ {
+ $this->returnTypeNode = ($type === '' || $type === null) ? new ReturnTypeNode() : new ReturnTypeNode($type);
+ }
+
+ /**
+ * @deprecated use setReturnTypeNode instead
+ * @param bool $bool
+ */
+ public function setNullableReturnType($bool = true)
+ {
+ if ($bool) {
+ $this->returnTypeNode = new ReturnTypeNode('null', ...$this->returnTypeNode->getTypes());
+ }
+ else {
+ $this->returnTypeNode = new ReturnTypeNode(...$this->returnTypeNode->getNonNullTypes());
+ }
+ }
+
+ /**
+ * @deprecated use getReturnTypeNode instead
+ * @return string|null
+ */
+ public function getReturnType()
+ {
+ if ($types = $this->returnTypeNode->getNonNullTypes())
+ {
+ return $types[0];
+ }
+
+ return null;
+ }
+
+ public function getReturnTypeNode() : ReturnTypeNode
+ {
+ return $this->returnTypeNode;
+ }
+
+ /**
+ * @deprecated use getReturnTypeNode instead
+ * @return bool
+ */
+ public function hasNullableReturnType()
+ {
+ return $this->returnTypeNode->canUseNullShorthand();
+ }
+
+ /**
+ * @param string $code
+ */
+ public function setCode($code)
+ {
+ $this->code = $code;
+ }
+
+ public function getCode()
+ {
+ if ($this->returnsReference)
+ {
+ return "throw new \Prophecy\Exception\Doubler\ReturnByReferenceException('Returning by reference not supported', get_class(\$this), '{$this->name}');";
+ }
+
+ return (string) $this->code;
+ }
+
+ public function useParentCode()
+ {
+ $this->code = sprintf(
+ 'return parent::%s(%s);', $this->getName(), implode(', ',
+ array_map(array($this, 'generateArgument'), $this->arguments)
+ )
+ );
+ }
+
+ private function generateArgument(ArgumentNode $arg)
+ {
+ $argument = '$'.$arg->getName();
+
+ if ($arg->isVariadic()) {
+ $argument = '...'.$argument;
+ }
+
+ return $argument;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php
new file mode 100644
index 000000000..5b5824988
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/ReturnTypeNode.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Prophecy\Doubler\Generator\Node;
+
+use Prophecy\Exception\Doubler\DoubleException;
+
+final class ReturnTypeNode extends TypeNodeAbstract
+{
+ protected function getRealType(string $type): string
+ {
+ switch ($type) {
+ case 'void':
+ case 'never':
+ return $type;
+ default:
+ return parent::getRealType($type);
+ }
+ }
+
+ protected function guardIsValidType()
+ {
+ if (isset($this->types['void']) && count($this->types) !== 1) {
+ throw new DoubleException('void cannot be part of a union');
+ }
+ if (isset($this->types['never']) && count($this->types) !== 1) {
+ throw new DoubleException('never cannot be part of a union');
+ }
+
+ parent::guardIsValidType();
+ }
+
+ /**
+ * @deprecated use hasReturnStatement
+ */
+ public function isVoid()
+ {
+ return $this->types == ['void' => 'void'];
+ }
+
+ public function hasReturnStatement(): bool
+ {
+ return $this->types !== ['void' => 'void']
+ && $this->types !== ['never' => 'never'];
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/TypeNodeAbstract.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/TypeNodeAbstract.php
new file mode 100644
index 000000000..97fc54978
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/Node/TypeNodeAbstract.php
@@ -0,0 +1,97 @@
+<?php
+
+namespace Prophecy\Doubler\Generator\Node;
+
+use Prophecy\Exception\Doubler\DoubleException;
+
+abstract class TypeNodeAbstract
+{
+ /** @var string[] */
+ protected $types = [];
+
+ public function __construct(string ...$types)
+ {
+ foreach ($types as $type) {
+ $type = $this->getRealType($type);
+ $this->types[$type] = $type;
+ }
+
+ $this->guardIsValidType();
+ }
+
+ public function canUseNullShorthand(): bool
+ {
+ return isset($this->types['null']) && count($this->types) <= 2;
+ }
+
+ public function getTypes(): array
+ {
+ return array_values($this->types);
+ }
+
+ public function getNonNullTypes(): array
+ {
+ $nonNullTypes = $this->types;
+ unset($nonNullTypes['null']);
+
+ return array_values($nonNullTypes);
+ }
+
+ protected function prefixWithNsSeparator(string $type): string
+ {
+ return '\\' . ltrim($type, '\\');
+ }
+
+ protected function getRealType(string $type): string
+ {
+ switch ($type) {
+ // type aliases
+ case 'double':
+ case 'real':
+ return 'float';
+ case 'boolean':
+ return 'bool';
+ case 'integer':
+ return 'int';
+
+ // built in types
+ case 'self':
+ case 'static':
+ case 'array':
+ case 'callable':
+ case 'bool':
+ case 'false':
+ case 'float':
+ case 'int':
+ case 'string':
+ case 'iterable':
+ case 'object':
+ case 'null':
+ return $type;
+ case 'mixed':
+ return \PHP_VERSION_ID < 80000 ? $this->prefixWithNsSeparator($type) : $type;
+
+ default:
+ return $this->prefixWithNsSeparator($type);
+ }
+ }
+
+ protected function guardIsValidType()
+ {
+ if ($this->types == ['null' => 'null']) {
+ throw new DoubleException('Type cannot be standalone null');
+ }
+
+ if ($this->types == ['false' => 'false']) {
+ throw new DoubleException('Type cannot be standalone false');
+ }
+
+ if ($this->types == ['false' => 'false', 'null' => 'null']) {
+ throw new DoubleException('Type cannot be nullable false');
+ }
+
+ if (\PHP_VERSION_ID >= 80000 && isset($this->types['mixed']) && count($this->types) !== 1) {
+ throw new DoubleException('mixed cannot be part of a union');
+ }
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php
new file mode 100644
index 000000000..d720b1515
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/ReflectionInterface.php
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler\Generator;
+
+/**
+ * Reflection interface.
+ * All reflected classes implement this interface.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+interface ReflectionInterface
+{
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php
new file mode 100644
index 000000000..5e8aa303d
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/Generator/TypeHintReference.php
@@ -0,0 +1,43 @@
+<?php
+
+namespace Prophecy\Doubler\Generator;
+
+/**
+ * Tells whether a keyword refers to a class or to a built-in type for the
+ * current version of php
+ *
+ * @deprecated in favour of Node\TypeNodeAbstract
+ */
+final class TypeHintReference
+{
+ public function isBuiltInParamTypeHint($type)
+ {
+ switch ($type) {
+ case 'self':
+ case 'array':
+ case 'callable':
+ case 'bool':
+ case 'float':
+ case 'int':
+ case 'string':
+ case 'iterable':
+ case 'object':
+ return true;
+
+ case 'mixed':
+ return PHP_VERSION_ID >= 80000;
+
+ default:
+ return false;
+ }
+ }
+
+ public function isBuiltInReturnTypeHint($type)
+ {
+ if ($type === 'void') {
+ return true;
+ }
+
+ return $this->isBuiltInParamTypeHint($type);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php
new file mode 100644
index 000000000..8a99c4ce8
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php
@@ -0,0 +1,127 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler;
+
+use Prophecy\Exception\Doubler\DoubleException;
+use Prophecy\Exception\Doubler\ClassNotFoundException;
+use Prophecy\Exception\Doubler\InterfaceNotFoundException;
+use ReflectionClass;
+
+/**
+ * Lazy double.
+ * Gives simple interface to describe double before creating it.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class LazyDouble
+{
+ private $doubler;
+ private $class;
+ private $interfaces = array();
+ private $arguments = null;
+ private $double;
+
+ /**
+ * Initializes lazy double.
+ *
+ * @param Doubler $doubler
+ */
+ public function __construct(Doubler $doubler)
+ {
+ $this->doubler = $doubler;
+ }
+
+ /**
+ * Tells doubler to use specific class as parent one for double.
+ *
+ * @param string|ReflectionClass $class
+ *
+ * @throws \Prophecy\Exception\Doubler\ClassNotFoundException
+ * @throws \Prophecy\Exception\Doubler\DoubleException
+ */
+ public function setParentClass($class)
+ {
+ if (null !== $this->double) {
+ throw new DoubleException('Can not extend class with already instantiated double.');
+ }
+
+ if (!$class instanceof ReflectionClass) {
+ if (!class_exists($class)) {
+ throw new ClassNotFoundException(sprintf('Class %s not found.', $class), $class);
+ }
+
+ $class = new ReflectionClass($class);
+ }
+
+ $this->class = $class;
+ }
+
+ /**
+ * Tells doubler to implement specific interface with double.
+ *
+ * @param string|ReflectionClass $interface
+ *
+ * @throws \Prophecy\Exception\Doubler\InterfaceNotFoundException
+ * @throws \Prophecy\Exception\Doubler\DoubleException
+ */
+ public function addInterface($interface)
+ {
+ if (null !== $this->double) {
+ throw new DoubleException(
+ 'Can not implement interface with already instantiated double.'
+ );
+ }
+
+ if (!$interface instanceof ReflectionClass) {
+ if (!interface_exists($interface)) {
+ throw new InterfaceNotFoundException(
+ sprintf('Interface %s not found.', $interface),
+ $interface
+ );
+ }
+
+ $interface = new ReflectionClass($interface);
+ }
+
+ $this->interfaces[] = $interface;
+ }
+
+ /**
+ * Sets constructor arguments.
+ *
+ * @param array $arguments
+ */
+ public function setArguments(array $arguments = null)
+ {
+ $this->arguments = $arguments;
+ }
+
+ /**
+ * Creates double instance or returns already created one.
+ *
+ * @return DoubleInterface
+ */
+ public function getInstance()
+ {
+ if (null === $this->double) {
+ if (null !== $this->arguments) {
+ return $this->double = $this->doubler->double(
+ $this->class, $this->interfaces, $this->arguments
+ );
+ }
+
+ $this->double = $this->doubler->double($this->class, $this->interfaces);
+ }
+
+ return $this->double;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php b/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php
new file mode 100644
index 000000000..d67ec6a4d
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Doubler/NameGenerator.php
@@ -0,0 +1,52 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Doubler;
+
+use ReflectionClass;
+
+/**
+ * Name generator.
+ * Generates classname for double.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class NameGenerator
+{
+ private static $counter = 1;
+
+ /**
+ * Generates name.
+ *
+ * @param ReflectionClass $class
+ * @param ReflectionClass[] $interfaces
+ *
+ * @return string
+ */
+ public function name(ReflectionClass $class = null, array $interfaces)
+ {
+ $parts = array();
+
+ if (null !== $class) {
+ $parts[] = $class->getName();
+ } else {
+ foreach ($interfaces as $interface) {
+ $parts[] = $interface->getShortName();
+ }
+ }
+
+ if (!count($parts)) {
+ $parts[] = 'stdClass';
+ }
+
+ return sprintf('Double\%s\P%d', implode('\\', $parts), self::$counter++);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php
new file mode 100644
index 000000000..48ed22542
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Call/UnexpectedCallException.php
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Call;
+
+use Prophecy\Exception\Prophecy\ObjectProphecyException;
+use Prophecy\Prophecy\ObjectProphecy;
+
+class UnexpectedCallException extends ObjectProphecyException
+{
+ private $methodName;
+ private $arguments;
+
+ public function __construct($message, ObjectProphecy $objectProphecy,
+ $methodName, array $arguments)
+ {
+ parent::__construct($message, $objectProphecy);
+
+ $this->methodName = $methodName;
+ $this->arguments = $arguments;
+ }
+
+ public function getMethodName()
+ {
+ return $this->methodName;
+ }
+
+ public function getArguments()
+ {
+ return $this->arguments;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php
new file mode 100644
index 000000000..822918a29
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassCreatorException.php
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Doubler;
+
+use Prophecy\Doubler\Generator\Node\ClassNode;
+
+class ClassCreatorException extends \RuntimeException implements DoublerException
+{
+ private $node;
+
+ public function __construct($message, ClassNode $node)
+ {
+ parent::__construct($message);
+
+ $this->node = $node;
+ }
+
+ public function getClassNode()
+ {
+ return $this->node;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php
new file mode 100644
index 000000000..8fc53b8b5
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassMirrorException.php
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Doubler;
+
+use ReflectionClass;
+
+class ClassMirrorException extends \RuntimeException implements DoublerException
+{
+ private $class;
+
+ public function __construct($message, ReflectionClass $class)
+ {
+ parent::__construct($message);
+
+ $this->class = $class;
+ }
+
+ public function getReflectedClass()
+ {
+ return $this->class;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php
new file mode 100644
index 000000000..5bc826d75
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ClassNotFoundException.php
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Doubler;
+
+class ClassNotFoundException extends DoubleException
+{
+ private $classname;
+
+ /**
+ * @param string $message
+ * @param string $classname
+ */
+ public function __construct($message, $classname)
+ {
+ parent::__construct($message);
+
+ $this->classname = $classname;
+ }
+
+ public function getClassname()
+ {
+ return $this->classname;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php
new file mode 100644
index 000000000..6642a58f2
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoubleException.php
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Doubler;
+
+use RuntimeException;
+
+class DoubleException extends RuntimeException implements DoublerException
+{
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php
new file mode 100644
index 000000000..9d6be1796
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/DoublerException.php
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Doubler;
+
+use Prophecy\Exception\Exception;
+
+interface DoublerException extends Exception
+{
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php
new file mode 100644
index 000000000..e344dead2
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/InterfaceNotFoundException.php
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Doubler;
+
+class InterfaceNotFoundException extends ClassNotFoundException
+{
+ public function getInterfaceName()
+ {
+ return $this->getClassname();
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php
new file mode 100644
index 000000000..56f47b110
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotExtendableException.php
@@ -0,0 +1,41 @@
+<?php
+
+ namespace Prophecy\Exception\Doubler;
+
+ class MethodNotExtendableException extends DoubleException
+ {
+ private $methodName;
+
+ private $className;
+
+ /**
+ * @param string $message
+ * @param string $className
+ * @param string $methodName
+ */
+ public function __construct($message, $className, $methodName)
+ {
+ parent::__construct($message);
+
+ $this->methodName = $methodName;
+ $this->className = $className;
+ }
+
+
+ /**
+ * @return string
+ */
+ public function getMethodName()
+ {
+ return $this->methodName;
+ }
+
+ /**
+ * @return string
+ */
+ public function getClassName()
+ {
+ return $this->className;
+ }
+
+ }
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php
new file mode 100644
index 000000000..a53834948
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/MethodNotFoundException.php
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Doubler;
+
+class MethodNotFoundException extends DoubleException
+{
+ /**
+ * @var string|object
+ */
+ private $classname;
+
+ /**
+ * @var string
+ */
+ private $methodName;
+
+ /**
+ * @var array
+ */
+ private $arguments;
+
+ /**
+ * @param string $message
+ * @param string|object $classname
+ * @param string $methodName
+ * @param null|Argument\ArgumentsWildcard|array $arguments
+ */
+ public function __construct($message, $classname, $methodName, $arguments = null)
+ {
+ parent::__construct($message);
+
+ $this->classname = $classname;
+ $this->methodName = $methodName;
+ $this->arguments = $arguments;
+ }
+
+ public function getClassname()
+ {
+ return $this->classname;
+ }
+
+ public function getMethodName()
+ {
+ return $this->methodName;
+ }
+
+ public function getArguments()
+ {
+ return $this->arguments;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php
new file mode 100644
index 000000000..630304970
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Doubler/ReturnByReferenceException.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Doubler;
+
+class ReturnByReferenceException extends DoubleException
+{
+ private $classname;
+ private $methodName;
+
+ /**
+ * @param string $message
+ * @param string $classname
+ * @param string $methodName
+ */
+ public function __construct($message, $classname, $methodName)
+ {
+ parent::__construct($message);
+
+ $this->classname = $classname;
+ $this->methodName = $methodName;
+ }
+
+ public function getClassname()
+ {
+ return $this->classname;
+ }
+
+ public function getMethodName()
+ {
+ return $this->methodName;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php
new file mode 100644
index 000000000..416191284
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Exception.php
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception;
+
+/**
+ * Core Prophecy exception interface.
+ * All Prophecy exceptions implement it.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+interface Exception extends \Throwable
+{
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php
new file mode 100644
index 000000000..bc91c690f
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/InvalidArgumentException.php
@@ -0,0 +1,16 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception;
+
+class InvalidArgumentException extends \InvalidArgumentException implements Exception
+{
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php
new file mode 100644
index 000000000..a00dfb03c
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/AggregateException.php
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Prediction;
+
+use Prophecy\Prophecy\ObjectProphecy;
+
+class AggregateException extends \RuntimeException implements PredictionException
+{
+ private $exceptions = array();
+ private $objectProphecy;
+
+ public function append(PredictionException $exception)
+ {
+ $message = $exception->getMessage();
+ $message = strtr($message, array("\n" => "\n "))."\n";
+ $message = empty($this->exceptions) ? $message : "\n" . $message;
+
+ $this->message = rtrim($this->message.$message);
+ $this->exceptions[] = $exception;
+ }
+
+ /**
+ * @return PredictionException[]
+ */
+ public function getExceptions()
+ {
+ return $this->exceptions;
+ }
+
+ public function setObjectProphecy(ObjectProphecy $objectProphecy)
+ {
+ $this->objectProphecy = $objectProphecy;
+ }
+
+ /**
+ * @return ObjectProphecy
+ */
+ public function getObjectProphecy()
+ {
+ return $this->objectProphecy;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php
new file mode 100644
index 000000000..bbbbc3d97
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/FailedPredictionException.php
@@ -0,0 +1,24 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Prediction;
+
+use RuntimeException;
+
+/**
+ * Basic failed prediction exception.
+ * Use it for custom prediction failures.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class FailedPredictionException extends RuntimeException implements PredictionException
+{
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php
new file mode 100644
index 000000000..05ea4aad8
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/NoCallsException.php
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Prediction;
+
+use Prophecy\Exception\Prophecy\MethodProphecyException;
+
+class NoCallsException extends MethodProphecyException implements PredictionException
+{
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php
new file mode 100644
index 000000000..2596b1ef1
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/PredictionException.php
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Prediction;
+
+use Prophecy\Exception\Exception;
+
+interface PredictionException extends Exception
+{
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php
new file mode 100644
index 000000000..9d905431f
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsCountException.php
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Prediction;
+
+use Prophecy\Prophecy\MethodProphecy;
+
+class UnexpectedCallsCountException extends UnexpectedCallsException
+{
+ private $expectedCount;
+
+ public function __construct($message, MethodProphecy $methodProphecy, $count, array $calls)
+ {
+ parent::__construct($message, $methodProphecy, $calls);
+
+ $this->expectedCount = intval($count);
+ }
+
+ public function getExpectedCount()
+ {
+ return $this->expectedCount;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php
new file mode 100644
index 000000000..7a99c2d79
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prediction/UnexpectedCallsException.php
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Prediction;
+
+use Prophecy\Prophecy\MethodProphecy;
+use Prophecy\Exception\Prophecy\MethodProphecyException;
+
+class UnexpectedCallsException extends MethodProphecyException implements PredictionException
+{
+ private $calls = array();
+
+ public function __construct($message, MethodProphecy $methodProphecy, array $calls)
+ {
+ parent::__construct($message, $methodProphecy);
+
+ $this->calls = $calls;
+ }
+
+ public function getCalls()
+ {
+ return $this->calls;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php
new file mode 100644
index 000000000..1b03eaf47
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/MethodProphecyException.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Prophecy;
+
+use Prophecy\Prophecy\MethodProphecy;
+
+class MethodProphecyException extends ObjectProphecyException
+{
+ private $methodProphecy;
+
+ public function __construct($message, MethodProphecy $methodProphecy)
+ {
+ parent::__construct($message, $methodProphecy->getObjectProphecy());
+
+ $this->methodProphecy = $methodProphecy;
+ }
+
+ /**
+ * @return MethodProphecy
+ */
+ public function getMethodProphecy()
+ {
+ return $this->methodProphecy;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php
new file mode 100644
index 000000000..e345402e0
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ObjectProphecyException.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Prophecy;
+
+use Prophecy\Prophecy\ObjectProphecy;
+
+class ObjectProphecyException extends \RuntimeException implements ProphecyException
+{
+ private $objectProphecy;
+
+ public function __construct($message, ObjectProphecy $objectProphecy)
+ {
+ parent::__construct($message);
+
+ $this->objectProphecy = $objectProphecy;
+ }
+
+ /**
+ * @return ObjectProphecy
+ */
+ public function getObjectProphecy()
+ {
+ return $this->objectProphecy;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php
new file mode 100644
index 000000000..915733287
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Exception/Prophecy/ProphecyException.php
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Exception\Prophecy;
+
+use Prophecy\Exception\Exception;
+
+interface ProphecyException extends Exception
+{
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php
new file mode 100644
index 000000000..209821ce9
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassAndInterfaceTagRetriever.php
@@ -0,0 +1,69 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\PhpDocumentor;
+
+use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag;
+use phpDocumentor\Reflection\DocBlock\Tags\Method;
+
+/**
+ * @author Théo FIDRY <[email protected]>
+ *
+ * @internal
+ */
+final class ClassAndInterfaceTagRetriever implements MethodTagRetrieverInterface
+{
+ private $classRetriever;
+
+ public function __construct(MethodTagRetrieverInterface $classRetriever = null)
+ {
+ if (null !== $classRetriever) {
+ $this->classRetriever = $classRetriever;
+
+ return;
+ }
+
+ $this->classRetriever = class_exists('phpDocumentor\Reflection\DocBlockFactory') && class_exists('phpDocumentor\Reflection\Types\ContextFactory')
+ ? new ClassTagRetriever()
+ : new LegacyClassTagRetriever()
+ ;
+ }
+
+ /**
+ * @param \ReflectionClass $reflectionClass
+ *
+ * @return LegacyMethodTag[]|Method[]
+ */
+ public function getTagList(\ReflectionClass $reflectionClass)
+ {
+ return array_merge(
+ $this->classRetriever->getTagList($reflectionClass),
+ $this->getInterfacesTagList($reflectionClass)
+ );
+ }
+
+ /**
+ * @param \ReflectionClass $reflectionClass
+ *
+ * @return LegacyMethodTag[]|Method[]
+ */
+ private function getInterfacesTagList(\ReflectionClass $reflectionClass)
+ {
+ $interfaces = $reflectionClass->getInterfaces();
+ $tagList = array();
+
+ foreach($interfaces as $interface) {
+ $tagList = array_merge($tagList, $this->classRetriever->getTagList($interface));
+ }
+
+ return $tagList;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php
new file mode 100644
index 000000000..9817a4479
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/ClassTagRetriever.php
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\PhpDocumentor;
+
+use phpDocumentor\Reflection\DocBlock\Tags\Method;
+use phpDocumentor\Reflection\DocBlockFactory;
+use phpDocumentor\Reflection\Types\ContextFactory;
+
+/**
+ * @author Théo FIDRY <[email protected]>
+ *
+ * @internal
+ */
+final class ClassTagRetriever implements MethodTagRetrieverInterface
+{
+ private $docBlockFactory;
+ private $contextFactory;
+
+ public function __construct()
+ {
+ $this->docBlockFactory = DocBlockFactory::createInstance();
+ $this->contextFactory = new ContextFactory();
+ }
+
+ /**
+ * @param \ReflectionClass $reflectionClass
+ *
+ * @return Method[]
+ */
+ public function getTagList(\ReflectionClass $reflectionClass)
+ {
+ try {
+ $phpdoc = $this->docBlockFactory->create(
+ $reflectionClass,
+ $this->contextFactory->createFromReflector($reflectionClass)
+ );
+
+ $methods = array();
+
+ foreach ($phpdoc->getTagsByName('method') as $tag) {
+ if ($tag instanceof Method) {
+ $methods[] = $tag;
+ }
+ }
+
+ return $methods;
+ } catch (\InvalidArgumentException $e) {
+ return array();
+ }
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php
new file mode 100644
index 000000000..c0dec3de8
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/LegacyClassTagRetriever.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\PhpDocumentor;
+
+use phpDocumentor\Reflection\DocBlock;
+use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag;
+
+/**
+ * @author Théo FIDRY <[email protected]>
+ *
+ * @internal
+ */
+final class LegacyClassTagRetriever implements MethodTagRetrieverInterface
+{
+ /**
+ * @param \ReflectionClass $reflectionClass
+ *
+ * @return LegacyMethodTag[]
+ */
+ public function getTagList(\ReflectionClass $reflectionClass)
+ {
+ $phpdoc = new DocBlock($reflectionClass->getDocComment());
+
+ return $phpdoc->getTagsByName('method');
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php
new file mode 100644
index 000000000..d3989dad5
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/PhpDocumentor/MethodTagRetrieverInterface.php
@@ -0,0 +1,30 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\PhpDocumentor;
+
+use phpDocumentor\Reflection\DocBlock\Tag\MethodTag as LegacyMethodTag;
+use phpDocumentor\Reflection\DocBlock\Tags\Method;
+
+/**
+ * @author Théo FIDRY <[email protected]>
+ *
+ * @internal
+ */
+interface MethodTagRetrieverInterface
+{
+ /**
+ * @param \ReflectionClass $reflectionClass
+ *
+ * @return LegacyMethodTag[]|Method[]
+ */
+ public function getTagList(\ReflectionClass $reflectionClass);
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php
new file mode 100644
index 000000000..b47873669
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallPrediction.php
@@ -0,0 +1,86 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prediction;
+
+use Prophecy\Call\Call;
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\MethodProphecy;
+use Prophecy\Argument\ArgumentsWildcard;
+use Prophecy\Argument\Token\AnyValuesToken;
+use Prophecy\Util\StringUtil;
+use Prophecy\Exception\Prediction\NoCallsException;
+
+/**
+ * Call prediction.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class CallPrediction implements PredictionInterface
+{
+ private $util;
+
+ /**
+ * Initializes prediction.
+ *
+ * @param StringUtil $util
+ */
+ public function __construct(StringUtil $util = null)
+ {
+ $this->util = $util ?: new StringUtil;
+ }
+
+ /**
+ * Tests that there was at least one call.
+ *
+ * @param Call[] $calls
+ * @param ObjectProphecy $object
+ * @param MethodProphecy $method
+ *
+ * @throws \Prophecy\Exception\Prediction\NoCallsException
+ */
+ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method)
+ {
+ if (count($calls)) {
+ return;
+ }
+
+ $methodCalls = $object->findProphecyMethodCalls(
+ $method->getMethodName(),
+ new ArgumentsWildcard(array(new AnyValuesToken))
+ );
+
+ if (count($methodCalls)) {
+ throw new NoCallsException(sprintf(
+ "No calls have been made that match:\n".
+ " %s->%s(%s)\n".
+ "but expected at least one.\n".
+ "Recorded `%s(...)` calls:\n%s",
+
+ get_class($object->reveal()),
+ $method->getMethodName(),
+ $method->getArgumentsWildcard(),
+ $method->getMethodName(),
+ $this->util->stringifyCalls($methodCalls)
+ ), $method);
+ }
+
+ throw new NoCallsException(sprintf(
+ "No calls have been made that match:\n".
+ " %s->%s(%s)\n".
+ "but expected at least one.",
+
+ get_class($object->reveal()),
+ $method->getMethodName(),
+ $method->getArgumentsWildcard()
+ ), $method);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php
new file mode 100644
index 000000000..31c6c575a
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallTimesPrediction.php
@@ -0,0 +1,107 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prediction;
+
+use Prophecy\Call\Call;
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\MethodProphecy;
+use Prophecy\Argument\ArgumentsWildcard;
+use Prophecy\Argument\Token\AnyValuesToken;
+use Prophecy\Util\StringUtil;
+use Prophecy\Exception\Prediction\UnexpectedCallsCountException;
+
+/**
+ * Prediction interface.
+ * Predictions are logical test blocks, tied to `should...` keyword.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class CallTimesPrediction implements PredictionInterface
+{
+ private $times;
+ private $util;
+
+ /**
+ * Initializes prediction.
+ *
+ * @param int $times
+ * @param StringUtil $util
+ */
+ public function __construct($times, StringUtil $util = null)
+ {
+ $this->times = intval($times);
+ $this->util = $util ?: new StringUtil;
+ }
+
+ /**
+ * Tests that there was exact amount of calls made.
+ *
+ * @param Call[] $calls
+ * @param ObjectProphecy $object
+ * @param MethodProphecy $method
+ *
+ * @throws \Prophecy\Exception\Prediction\UnexpectedCallsCountException
+ */
+ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method)
+ {
+ if ($this->times == count($calls)) {
+ return;
+ }
+
+ $methodCalls = $object->findProphecyMethodCalls(
+ $method->getMethodName(),
+ new ArgumentsWildcard(array(new AnyValuesToken))
+ );
+
+ if (count($calls)) {
+ $message = sprintf(
+ "Expected exactly %d calls that match:\n".
+ " %s->%s(%s)\n".
+ "but %d were made:\n%s",
+
+ $this->times,
+ get_class($object->reveal()),
+ $method->getMethodName(),
+ $method->getArgumentsWildcard(),
+ count($calls),
+ $this->util->stringifyCalls($calls)
+ );
+ } elseif (count($methodCalls)) {
+ $message = sprintf(
+ "Expected exactly %d calls that match:\n".
+ " %s->%s(%s)\n".
+ "but none were made.\n".
+ "Recorded `%s(...)` calls:\n%s",
+
+ $this->times,
+ get_class($object->reveal()),
+ $method->getMethodName(),
+ $method->getArgumentsWildcard(),
+ $method->getMethodName(),
+ $this->util->stringifyCalls($methodCalls)
+ );
+ } else {
+ $message = sprintf(
+ "Expected exactly %d calls that match:\n".
+ " %s->%s(%s)\n".
+ "but none were made.",
+
+ $this->times,
+ get_class($object->reveal()),
+ $method->getMethodName(),
+ $method->getArgumentsWildcard()
+ );
+ }
+
+ throw new UnexpectedCallsCountException($message, $method, $this->times, $calls);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php
new file mode 100644
index 000000000..727931f3d
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/CallbackPrediction.php
@@ -0,0 +1,66 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prediction;
+
+use Prophecy\Call\Call;
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\MethodProphecy;
+use Prophecy\Exception\InvalidArgumentException;
+use Closure;
+use ReflectionFunction;
+
+/**
+ * Callback prediction.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class CallbackPrediction implements PredictionInterface
+{
+ private $callback;
+
+ /**
+ * Initializes callback prediction.
+ *
+ * @param callable $callback Custom callback
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function __construct($callback)
+ {
+ if (!is_callable($callback)) {
+ throw new InvalidArgumentException(sprintf(
+ 'Callable expected as an argument to CallbackPrediction, but got %s.',
+ gettype($callback)
+ ));
+ }
+
+ $this->callback = $callback;
+ }
+
+ /**
+ * Executes preset callback.
+ *
+ * @param Call[] $calls
+ * @param ObjectProphecy $object
+ * @param MethodProphecy $method
+ */
+ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method)
+ {
+ $callback = $this->callback;
+
+ if ($callback instanceof Closure && method_exists('Closure', 'bind') && (new ReflectionFunction($callback))->getClosureThis() !== null) {
+ $callback = Closure::bind($callback, $object);
+ }
+
+ call_user_func($callback, $calls, $object, $method);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php
new file mode 100644
index 000000000..46ac5bfc0
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/NoCallsPrediction.php
@@ -0,0 +1,68 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prediction;
+
+use Prophecy\Call\Call;
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\MethodProphecy;
+use Prophecy\Util\StringUtil;
+use Prophecy\Exception\Prediction\UnexpectedCallsException;
+
+/**
+ * No calls prediction.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class NoCallsPrediction implements PredictionInterface
+{
+ private $util;
+
+ /**
+ * Initializes prediction.
+ *
+ * @param null|StringUtil $util
+ */
+ public function __construct(StringUtil $util = null)
+ {
+ $this->util = $util ?: new StringUtil;
+ }
+
+ /**
+ * Tests that there were no calls made.
+ *
+ * @param Call[] $calls
+ * @param ObjectProphecy $object
+ * @param MethodProphecy $method
+ *
+ * @throws \Prophecy\Exception\Prediction\UnexpectedCallsException
+ */
+ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method)
+ {
+ if (!count($calls)) {
+ return;
+ }
+
+ $verb = count($calls) === 1 ? 'was' : 'were';
+
+ throw new UnexpectedCallsException(sprintf(
+ "No calls expected that match:\n".
+ " %s->%s(%s)\n".
+ "but %d %s made:\n%s",
+ get_class($object->reveal()),
+ $method->getMethodName(),
+ $method->getArgumentsWildcard(),
+ count($calls),
+ $verb,
+ $this->util->stringifyCalls($calls)
+ ), $method, $calls);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php
new file mode 100644
index 000000000..f7fb06a99
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prediction/PredictionInterface.php
@@ -0,0 +1,37 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prediction;
+
+use Prophecy\Call\Call;
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\MethodProphecy;
+
+/**
+ * Prediction interface.
+ * Predictions are logical test blocks, tied to `should...` keyword.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+interface PredictionInterface
+{
+ /**
+ * Tests that double fulfilled prediction.
+ *
+ * @param Call[] $calls
+ * @param ObjectProphecy $object
+ * @param MethodProphecy $method
+ *
+ * @throws object
+ * @return void
+ */
+ public function check(array $calls, ObjectProphecy $object, MethodProphecy $method);
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php
new file mode 100644
index 000000000..f766e6e67
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/CallbackPromise.php
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Promise;
+
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\MethodProphecy;
+use Prophecy\Exception\InvalidArgumentException;
+use Closure;
+use ReflectionFunction;
+
+/**
+ * Callback promise.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class CallbackPromise implements PromiseInterface
+{
+ private $callback;
+
+ /**
+ * Initializes callback promise.
+ *
+ * @param callable $callback Custom callback
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function __construct($callback)
+ {
+ if (!is_callable($callback)) {
+ throw new InvalidArgumentException(sprintf(
+ 'Callable expected as an argument to CallbackPromise, but got %s.',
+ gettype($callback)
+ ));
+ }
+
+ $this->callback = $callback;
+ }
+
+ /**
+ * Evaluates promise callback.
+ *
+ * @param array $args
+ * @param ObjectProphecy $object
+ * @param MethodProphecy $method
+ *
+ * @return mixed
+ */
+ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method)
+ {
+ $callback = $this->callback;
+
+ if ($callback instanceof Closure && method_exists('Closure', 'bind') && (new ReflectionFunction($callback))->getClosureThis() !== null) {
+ $callback = Closure::bind($callback, $object);
+ }
+
+ return call_user_func($callback, $args, $object, $method);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php
new file mode 100644
index 000000000..382537b47
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/PromiseInterface.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Promise;
+
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\MethodProphecy;
+
+/**
+ * Promise interface.
+ * Promises are logical blocks, tied to `will...` keyword.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+interface PromiseInterface
+{
+ /**
+ * Evaluates promise.
+ *
+ * @param array $args
+ * @param ObjectProphecy $object
+ * @param MethodProphecy $method
+ *
+ * @return mixed
+ */
+ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method);
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php
new file mode 100644
index 000000000..39bfeea07
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnArgumentPromise.php
@@ -0,0 +1,61 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Promise;
+
+use Prophecy\Exception\InvalidArgumentException;
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\MethodProphecy;
+
+/**
+ * Return argument promise.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ReturnArgumentPromise implements PromiseInterface
+{
+ /**
+ * @var int
+ */
+ private $index;
+
+ /**
+ * Initializes callback promise.
+ *
+ * @param int $index The zero-indexed number of the argument to return
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function __construct($index = 0)
+ {
+ if (!is_int($index) || $index < 0) {
+ throw new InvalidArgumentException(sprintf(
+ 'Zero-based index expected as argument to ReturnArgumentPromise, but got %s.',
+ $index
+ ));
+ }
+ $this->index = $index;
+ }
+
+ /**
+ * Returns nth argument if has one, null otherwise.
+ *
+ * @param array $args
+ * @param ObjectProphecy $object
+ * @param MethodProphecy $method
+ *
+ * @return null|mixed
+ */
+ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method)
+ {
+ return count($args) > $this->index ? $args[$this->index] : null;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php
new file mode 100644
index 000000000..c7d5ac598
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/ReturnPromise.php
@@ -0,0 +1,55 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Promise;
+
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\MethodProphecy;
+
+/**
+ * Return promise.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ReturnPromise implements PromiseInterface
+{
+ private $returnValues = array();
+
+ /**
+ * Initializes promise.
+ *
+ * @param array $returnValues Array of values
+ */
+ public function __construct(array $returnValues)
+ {
+ $this->returnValues = $returnValues;
+ }
+
+ /**
+ * Returns saved values one by one until last one, then continuously returns last value.
+ *
+ * @param array $args
+ * @param ObjectProphecy $object
+ * @param MethodProphecy $method
+ *
+ * @return mixed
+ */
+ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method)
+ {
+ $value = array_shift($this->returnValues);
+
+ if (!count($this->returnValues)) {
+ $this->returnValues[] = $value;
+ }
+
+ return $value;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php b/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php
new file mode 100644
index 000000000..26ec19edf
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Promise/ThrowPromise.php
@@ -0,0 +1,100 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Promise;
+
+use Doctrine\Instantiator\Instantiator;
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\MethodProphecy;
+use Prophecy\Exception\InvalidArgumentException;
+use ReflectionClass;
+
+/**
+ * Throw promise.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ThrowPromise implements PromiseInterface
+{
+ private $exception;
+
+ /**
+ * @var \Doctrine\Instantiator\Instantiator
+ */
+ private $instantiator;
+
+ /**
+ * Initializes promise.
+ *
+ * @param string|\Exception|\Throwable $exception Exception class name or instance
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function __construct($exception)
+ {
+ if (is_string($exception)) {
+ if ((!class_exists($exception) && !interface_exists($exception)) || !$this->isAValidThrowable($exception)) {
+ throw new InvalidArgumentException(sprintf(
+ 'Exception / Throwable class or instance expected as argument to ThrowPromise, but got %s.',
+ $exception
+ ));
+ }
+ } elseif (!$exception instanceof \Exception && !$exception instanceof \Throwable) {
+ throw new InvalidArgumentException(sprintf(
+ 'Exception / Throwable class or instance expected as argument to ThrowPromise, but got %s.',
+ is_object($exception) ? get_class($exception) : gettype($exception)
+ ));
+ }
+
+ $this->exception = $exception;
+ }
+
+ /**
+ * Throws predefined exception.
+ *
+ * @param array $args
+ * @param ObjectProphecy $object
+ * @param MethodProphecy $method
+ *
+ * @throws object
+ */
+ public function execute(array $args, ObjectProphecy $object, MethodProphecy $method)
+ {
+ if (is_string($this->exception)) {
+ $classname = $this->exception;
+ $reflection = new ReflectionClass($classname);
+ $constructor = $reflection->getConstructor();
+
+ if ($constructor->isPublic() && 0 == $constructor->getNumberOfRequiredParameters()) {
+ throw $reflection->newInstance();
+ }
+
+ if (!$this->instantiator) {
+ $this->instantiator = new Instantiator();
+ }
+
+ throw $this->instantiator->instantiate($classname);
+ }
+
+ throw $this->exception;
+ }
+
+ /**
+ * @param string $exception
+ *
+ * @return bool
+ */
+ private function isAValidThrowable($exception)
+ {
+ return is_a($exception, 'Exception', true)
+ || is_a($exception, 'Throwable', true);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php
new file mode 100644
index 000000000..c45c281d7
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/MethodProphecy.php
@@ -0,0 +1,573 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prophecy;
+
+use Prophecy\Argument;
+use Prophecy\Prophet;
+use Prophecy\Promise;
+use Prophecy\Prediction;
+use Prophecy\Exception\Doubler\MethodNotFoundException;
+use Prophecy\Exception\InvalidArgumentException;
+use Prophecy\Exception\Prophecy\MethodProphecyException;
+use ReflectionNamedType;
+use ReflectionType;
+use ReflectionUnionType;
+
+/**
+ * Method prophecy.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class MethodProphecy
+{
+ private $objectProphecy;
+ private $methodName;
+ private $argumentsWildcard;
+ private $promise;
+ private $prediction;
+ private $checkedPredictions = array();
+ private $bound = false;
+ private $voidReturnType = false;
+
+ /**
+ * Initializes method prophecy.
+ *
+ * @param ObjectProphecy $objectProphecy
+ * @param string $methodName
+ * @param null|Argument\ArgumentsWildcard|array $arguments
+ *
+ * @throws \Prophecy\Exception\Doubler\MethodNotFoundException If method not found
+ */
+ public function __construct(ObjectProphecy $objectProphecy, $methodName, $arguments = null)
+ {
+ $double = $objectProphecy->reveal();
+ if (!method_exists($double, $methodName)) {
+ throw new MethodNotFoundException(sprintf(
+ 'Method `%s::%s()` is not defined.', get_class($double), $methodName
+ ), get_class($double), $methodName, $arguments);
+ }
+
+ $this->objectProphecy = $objectProphecy;
+ $this->methodName = $methodName;
+
+ $reflectedMethod = new \ReflectionMethod($double, $methodName);
+ if ($reflectedMethod->isFinal()) {
+ throw new MethodProphecyException(sprintf(
+ "Can not add prophecy for a method `%s::%s()`\n".
+ "as it is a final method.",
+ get_class($double),
+ $methodName
+ ), $this);
+ }
+
+ if (null !== $arguments) {
+ $this->withArguments($arguments);
+ }
+
+ $hasTentativeReturnType = method_exists($reflectedMethod, 'hasTentativeReturnType')
+ && $reflectedMethod->hasTentativeReturnType();
+
+ if (true === $reflectedMethod->hasReturnType() || $hasTentativeReturnType) {
+ if ($hasTentativeReturnType) {
+ $reflectionType = $reflectedMethod->getTentativeReturnType();
+ }
+ else {
+ $reflectionType = $reflectedMethod->getReturnType();
+ }
+
+ if ($reflectionType instanceof ReflectionNamedType) {
+ $types = [$reflectionType];
+ }
+ elseif ($reflectionType instanceof ReflectionUnionType) {
+ $types = $reflectionType->getTypes();
+ }
+
+ $types = array_map(
+ function(ReflectionType $type) { return $type->getName(); },
+ $types
+ );
+
+ usort(
+ $types,
+ static function(string $type1, string $type2) {
+
+ // null is lowest priority
+ if ($type2 == 'null') {
+ return -1;
+ }
+ elseif ($type1 == 'null') {
+ return 1;
+ }
+
+ // objects are higher priority than scalars
+ $isObject = static function($type) {
+ return class_exists($type) || interface_exists($type);
+ };
+
+ if($isObject($type1) && !$isObject($type2)) {
+ return -1;
+ }
+ elseif(!$isObject($type1) && $isObject($type2))
+ {
+ return 1;
+ }
+
+ // don't sort both-scalars or both-objects
+ return 0;
+ }
+ );
+
+ $defaultType = $types[0];
+
+ if ('void' === $defaultType) {
+ $this->voidReturnType = true;
+ }
+
+ $this->will(function () use ($defaultType) {
+ switch ($defaultType) {
+ case 'void': return;
+ case 'string': return '';
+ case 'float': return 0.0;
+ case 'int': return 0;
+ case 'bool': return false;
+ case 'array': return array();
+
+ case 'callable':
+ case 'Closure':
+ return function () {};
+
+ case 'Traversable':
+ case 'Generator':
+ return (function () { yield; })();
+
+ default:
+ $prophet = new Prophet;
+ return $prophet->prophesize($defaultType)->reveal();
+ }
+ });
+ }
+ }
+
+ /**
+ * Sets argument wildcard.
+ *
+ * @param array|Argument\ArgumentsWildcard $arguments
+ *
+ * @return $this
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function withArguments($arguments)
+ {
+ if (is_array($arguments)) {
+ $arguments = new Argument\ArgumentsWildcard($arguments);
+ }
+
+ if (!$arguments instanceof Argument\ArgumentsWildcard) {
+ throw new InvalidArgumentException(sprintf(
+ "Either an array or an instance of ArgumentsWildcard expected as\n".
+ 'a `MethodProphecy::withArguments()` argument, but got %s.',
+ gettype($arguments)
+ ));
+ }
+
+ $this->argumentsWildcard = $arguments;
+
+ return $this;
+ }
+
+ /**
+ * Sets custom promise to the prophecy.
+ *
+ * @param callable|Promise\PromiseInterface $promise
+ *
+ * @return $this
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function will($promise)
+ {
+ if (is_callable($promise)) {
+ $promise = new Promise\CallbackPromise($promise);
+ }
+
+ if (!$promise instanceof Promise\PromiseInterface) {
+ throw new InvalidArgumentException(sprintf(
+ 'Expected callable or instance of PromiseInterface, but got %s.',
+ gettype($promise)
+ ));
+ }
+
+ $this->bindToObjectProphecy();
+ $this->promise = $promise;
+
+ return $this;
+ }
+
+ /**
+ * Sets return promise to the prophecy.
+ *
+ * @see \Prophecy\Promise\ReturnPromise
+ *
+ * @return $this
+ */
+ public function willReturn()
+ {
+ if ($this->voidReturnType) {
+ throw new MethodProphecyException(
+ "The method \"$this->methodName\" has a void return type, and so cannot return anything",
+ $this
+ );
+ }
+
+ return $this->will(new Promise\ReturnPromise(func_get_args()));
+ }
+
+ /**
+ * @param array $items
+ * @param mixed $return
+ *
+ * @return $this
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function willYield($items, $return = null)
+ {
+ if ($this->voidReturnType) {
+ throw new MethodProphecyException(
+ "The method \"$this->methodName\" has a void return type, and so cannot yield anything",
+ $this
+ );
+ }
+
+ if (!is_array($items)) {
+ throw new InvalidArgumentException(sprintf(
+ 'Expected array, but got %s.',
+ gettype($items)
+ ));
+ }
+
+ $generator = function() use ($items, $return) {
+ yield from $items;
+
+ return $return;
+ };
+
+ return $this->will($generator);
+ }
+
+ /**
+ * Sets return argument promise to the prophecy.
+ *
+ * @param int $index The zero-indexed number of the argument to return
+ *
+ * @see \Prophecy\Promise\ReturnArgumentPromise
+ *
+ * @return $this
+ */
+ public function willReturnArgument($index = 0)
+ {
+ if ($this->voidReturnType) {
+ throw new MethodProphecyException("The method \"$this->methodName\" has a void return type", $this);
+ }
+
+ return $this->will(new Promise\ReturnArgumentPromise($index));
+ }
+
+ /**
+ * Sets throw promise to the prophecy.
+ *
+ * @see \Prophecy\Promise\ThrowPromise
+ *
+ * @param string|\Exception $exception Exception class or instance
+ *
+ * @return $this
+ */
+ public function willThrow($exception)
+ {
+ return $this->will(new Promise\ThrowPromise($exception));
+ }
+
+ /**
+ * Sets custom prediction to the prophecy.
+ *
+ * @param callable|Prediction\PredictionInterface $prediction
+ *
+ * @return $this
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function should($prediction)
+ {
+ if (is_callable($prediction)) {
+ $prediction = new Prediction\CallbackPrediction($prediction);
+ }
+
+ if (!$prediction instanceof Prediction\PredictionInterface) {
+ throw new InvalidArgumentException(sprintf(
+ 'Expected callable or instance of PredictionInterface, but got %s.',
+ gettype($prediction)
+ ));
+ }
+
+ $this->bindToObjectProphecy();
+ $this->prediction = $prediction;
+
+ return $this;
+ }
+
+ /**
+ * Sets call prediction to the prophecy.
+ *
+ * @see \Prophecy\Prediction\CallPrediction
+ *
+ * @return $this
+ */
+ public function shouldBeCalled()
+ {
+ return $this->should(new Prediction\CallPrediction);
+ }
+
+ /**
+ * Sets no calls prediction to the prophecy.
+ *
+ * @see \Prophecy\Prediction\NoCallsPrediction
+ *
+ * @return $this
+ */
+ public function shouldNotBeCalled()
+ {
+ return $this->should(new Prediction\NoCallsPrediction);
+ }
+
+ /**
+ * Sets call times prediction to the prophecy.
+ *
+ * @see \Prophecy\Prediction\CallTimesPrediction
+ *
+ * @param $count
+ *
+ * @return $this
+ */
+ public function shouldBeCalledTimes($count)
+ {
+ return $this->should(new Prediction\CallTimesPrediction($count));
+ }
+
+ /**
+ * Sets call times prediction to the prophecy.
+ *
+ * @see \Prophecy\Prediction\CallTimesPrediction
+ *
+ * @return $this
+ */
+ public function shouldBeCalledOnce()
+ {
+ return $this->shouldBeCalledTimes(1);
+ }
+
+ /**
+ * Checks provided prediction immediately.
+ *
+ * @param callable|Prediction\PredictionInterface $prediction
+ *
+ * @return $this
+ *
+ * @throws \Prophecy\Exception\InvalidArgumentException
+ */
+ public function shouldHave($prediction)
+ {
+ if (is_callable($prediction)) {
+ $prediction = new Prediction\CallbackPrediction($prediction);
+ }
+
+ if (!$prediction instanceof Prediction\PredictionInterface) {
+ throw new InvalidArgumentException(sprintf(
+ 'Expected callable or instance of PredictionInterface, but got %s.',
+ gettype($prediction)
+ ));
+ }
+
+ if (null === $this->promise && !$this->voidReturnType) {
+ $this->willReturn();
+ }
+
+ $calls = $this->getObjectProphecy()->findProphecyMethodCalls(
+ $this->getMethodName(),
+ $this->getArgumentsWildcard()
+ );
+
+ try {
+ $prediction->check($calls, $this->getObjectProphecy(), $this);
+ $this->checkedPredictions[] = $prediction;
+ } catch (\Exception $e) {
+ $this->checkedPredictions[] = $prediction;
+
+ throw $e;
+ }
+
+ return $this;
+ }
+
+ /**
+ * Checks call prediction.
+ *
+ * @see \Prophecy\Prediction\CallPrediction
+ *
+ * @return $this
+ */
+ public function shouldHaveBeenCalled()
+ {
+ return $this->shouldHave(new Prediction\CallPrediction);
+ }
+
+ /**
+ * Checks no calls prediction.
+ *
+ * @see \Prophecy\Prediction\NoCallsPrediction
+ *
+ * @return $this
+ */
+ public function shouldNotHaveBeenCalled()
+ {
+ return $this->shouldHave(new Prediction\NoCallsPrediction);
+ }
+
+ /**
+ * Checks no calls prediction.
+ *
+ * @see \Prophecy\Prediction\NoCallsPrediction
+ * @deprecated
+ *
+ * @return $this
+ */
+ public function shouldNotBeenCalled()
+ {
+ return $this->shouldNotHaveBeenCalled();
+ }
+
+ /**
+ * Checks call times prediction.
+ *
+ * @see \Prophecy\Prediction\CallTimesPrediction
+ *
+ * @param int $count
+ *
+ * @return $this
+ */
+ public function shouldHaveBeenCalledTimes($count)
+ {
+ return $this->shouldHave(new Prediction\CallTimesPrediction($count));
+ }
+
+ /**
+ * Checks call times prediction.
+ *
+ * @see \Prophecy\Prediction\CallTimesPrediction
+ *
+ * @return $this
+ */
+ public function shouldHaveBeenCalledOnce()
+ {
+ return $this->shouldHaveBeenCalledTimes(1);
+ }
+
+ /**
+ * Checks currently registered [with should(...)] prediction.
+ */
+ public function checkPrediction()
+ {
+ if (null === $this->prediction) {
+ return;
+ }
+
+ $this->shouldHave($this->prediction);
+ }
+
+ /**
+ * Returns currently registered promise.
+ *
+ * @return null|Promise\PromiseInterface
+ */
+ public function getPromise()
+ {
+ return $this->promise;
+ }
+
+ /**
+ * Returns currently registered prediction.
+ *
+ * @return null|Prediction\PredictionInterface
+ */
+ public function getPrediction()
+ {
+ return $this->prediction;
+ }
+
+ /**
+ * Returns predictions that were checked on this object.
+ *
+ * @return Prediction\PredictionInterface[]
+ */
+ public function getCheckedPredictions()
+ {
+ return $this->checkedPredictions;
+ }
+
+ /**
+ * Returns object prophecy this method prophecy is tied to.
+ *
+ * @return ObjectProphecy
+ */
+ public function getObjectProphecy()
+ {
+ return $this->objectProphecy;
+ }
+
+ /**
+ * Returns method name.
+ *
+ * @return string
+ */
+ public function getMethodName()
+ {
+ return $this->methodName;
+ }
+
+ /**
+ * Returns arguments wildcard.
+ *
+ * @return Argument\ArgumentsWildcard
+ */
+ public function getArgumentsWildcard()
+ {
+ return $this->argumentsWildcard;
+ }
+
+ /**
+ * @return bool
+ */
+ public function hasReturnVoid()
+ {
+ return $this->voidReturnType;
+ }
+
+ private function bindToObjectProphecy()
+ {
+ if ($this->bound) {
+ return;
+ }
+
+ $this->getObjectProphecy()->addMethodProphecy($this);
+ $this->bound = true;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php
new file mode 100644
index 000000000..11b87cf1b
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php
@@ -0,0 +1,286 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prophecy;
+
+use SebastianBergmann\Comparator\ComparisonFailure;
+use Prophecy\Comparator\Factory as ComparatorFactory;
+use Prophecy\Call\Call;
+use Prophecy\Doubler\LazyDouble;
+use Prophecy\Argument\ArgumentsWildcard;
+use Prophecy\Call\CallCenter;
+use Prophecy\Exception\Prophecy\ObjectProphecyException;
+use Prophecy\Exception\Prophecy\MethodProphecyException;
+use Prophecy\Exception\Prediction\AggregateException;
+use Prophecy\Exception\Prediction\PredictionException;
+
+/**
+ * Object prophecy.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class ObjectProphecy implements ProphecyInterface
+{
+ private $lazyDouble;
+ private $callCenter;
+ private $revealer;
+ private $comparatorFactory;
+
+ /**
+ * @var MethodProphecy[][]
+ */
+ private $methodProphecies = array();
+
+ /**
+ * Initializes object prophecy.
+ *
+ * @param LazyDouble $lazyDouble
+ * @param CallCenter $callCenter
+ * @param RevealerInterface $revealer
+ * @param ComparatorFactory $comparatorFactory
+ */
+ public function __construct(
+ LazyDouble $lazyDouble,
+ CallCenter $callCenter = null,
+ RevealerInterface $revealer = null,
+ ComparatorFactory $comparatorFactory = null
+ ) {
+ $this->lazyDouble = $lazyDouble;
+ $this->callCenter = $callCenter ?: new CallCenter;
+ $this->revealer = $revealer ?: new Revealer;
+
+ $this->comparatorFactory = $comparatorFactory ?: ComparatorFactory::getInstance();
+ }
+
+ /**
+ * Forces double to extend specific class.
+ *
+ * @param string $class
+ *
+ * @return $this
+ */
+ public function willExtend($class)
+ {
+ $this->lazyDouble->setParentClass($class);
+
+ return $this;
+ }
+
+ /**
+ * Forces double to implement specific interface.
+ *
+ * @param string $interface
+ *
+ * @return $this
+ */
+ public function willImplement($interface)
+ {
+ $this->lazyDouble->addInterface($interface);
+
+ return $this;
+ }
+
+ /**
+ * Sets constructor arguments.
+ *
+ * @param array $arguments
+ *
+ * @return $this
+ */
+ public function willBeConstructedWith(array $arguments = null)
+ {
+ $this->lazyDouble->setArguments($arguments);
+
+ return $this;
+ }
+
+ /**
+ * Reveals double.
+ *
+ * @return object
+ *
+ * @throws \Prophecy\Exception\Prophecy\ObjectProphecyException If double doesn't implement needed interface
+ */
+ public function reveal()
+ {
+ $double = $this->lazyDouble->getInstance();
+
+ if (null === $double || !$double instanceof ProphecySubjectInterface) {
+ throw new ObjectProphecyException(
+ "Generated double must implement ProphecySubjectInterface, but it does not.\n".
+ 'It seems you have wrongly configured doubler without required ClassPatch.',
+ $this
+ );
+ }
+
+ $double->setProphecy($this);
+
+ return $double;
+ }
+
+ /**
+ * Adds method prophecy to object prophecy.
+ *
+ * @param MethodProphecy $methodProphecy
+ *
+ * @throws \Prophecy\Exception\Prophecy\MethodProphecyException If method prophecy doesn't
+ * have arguments wildcard
+ */
+ public function addMethodProphecy(MethodProphecy $methodProphecy)
+ {
+ $argumentsWildcard = $methodProphecy->getArgumentsWildcard();
+ if (null === $argumentsWildcard) {
+ throw new MethodProphecyException(sprintf(
+ "Can not add prophecy for a method `%s::%s()`\n".
+ "as you did not specify arguments wildcard for it.",
+ get_class($this->reveal()),
+ $methodProphecy->getMethodName()
+ ), $methodProphecy);
+ }
+
+ $methodName = strtolower($methodProphecy->getMethodName());
+
+ if (!isset($this->methodProphecies[$methodName])) {
+ $this->methodProphecies[$methodName] = array();
+ }
+
+ $this->methodProphecies[$methodName][] = $methodProphecy;
+ }
+
+ /**
+ * Returns either all or related to single method prophecies.
+ *
+ * @param null|string $methodName
+ *
+ * @return MethodProphecy[]
+ */
+ public function getMethodProphecies($methodName = null)
+ {
+ if (null === $methodName) {
+ return $this->methodProphecies;
+ }
+
+ $methodName = strtolower($methodName);
+
+ if (!isset($this->methodProphecies[$methodName])) {
+ return array();
+ }
+
+ return $this->methodProphecies[$methodName];
+ }
+
+ /**
+ * Makes specific method call.
+ *
+ * @param string $methodName
+ * @param array $arguments
+ *
+ * @return mixed
+ */
+ public function makeProphecyMethodCall($methodName, array $arguments)
+ {
+ $arguments = $this->revealer->reveal($arguments);
+ $return = $this->callCenter->makeCall($this, $methodName, $arguments);
+
+ return $this->revealer->reveal($return);
+ }
+
+ /**
+ * Finds calls by method name & arguments wildcard.
+ *
+ * @param string $methodName
+ * @param ArgumentsWildcard $wildcard
+ *
+ * @return Call[]
+ */
+ public function findProphecyMethodCalls($methodName, ArgumentsWildcard $wildcard)
+ {
+ return $this->callCenter->findCalls($methodName, $wildcard);
+ }
+
+ /**
+ * Checks that registered method predictions do not fail.
+ *
+ * @throws \Prophecy\Exception\Prediction\AggregateException If any of registered predictions fail
+ * @throws \Prophecy\Exception\Call\UnexpectedCallException
+ */
+ public function checkProphecyMethodsPredictions()
+ {
+ $exception = new AggregateException(sprintf("%s:\n", get_class($this->reveal())));
+ $exception->setObjectProphecy($this);
+
+ $this->callCenter->checkUnexpectedCalls();
+
+ foreach ($this->methodProphecies as $prophecies) {
+ foreach ($prophecies as $prophecy) {
+ try {
+ $prophecy->checkPrediction();
+ } catch (PredictionException $e) {
+ $exception->append($e);
+ }
+ }
+ }
+
+ if (count($exception->getExceptions())) {
+ throw $exception;
+ }
+ }
+
+ /**
+ * Creates new method prophecy using specified method name and arguments.
+ *
+ * @param string $methodName
+ * @param array $arguments
+ *
+ * @return MethodProphecy
+ */
+ public function __call($methodName, array $arguments)
+ {
+ $arguments = new ArgumentsWildcard($this->revealer->reveal($arguments));
+
+ foreach ($this->getMethodProphecies($methodName) as $prophecy) {
+ $argumentsWildcard = $prophecy->getArgumentsWildcard();
+ $comparator = $this->comparatorFactory->getComparatorFor(
+ $argumentsWildcard, $arguments
+ );
+
+ try {
+ $comparator->assertEquals($argumentsWildcard, $arguments);
+ return $prophecy;
+ } catch (ComparisonFailure $failure) {}
+ }
+
+ return new MethodProphecy($this, $methodName, $arguments);
+ }
+
+ /**
+ * Tries to get property value from double.
+ *
+ * @param string $name
+ *
+ * @return mixed
+ */
+ public function __get($name)
+ {
+ return $this->reveal()->$name;
+ }
+
+ /**
+ * Tries to set property value to double.
+ *
+ * @param string $name
+ * @param mixed $value
+ */
+ public function __set($name, $value)
+ {
+ $this->reveal()->$name = $this->revealer->reveal($value);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php
new file mode 100644
index 000000000..462f15a90
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecyInterface.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prophecy;
+
+/**
+ * Core Prophecy interface.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+interface ProphecyInterface
+{
+ /**
+ * Reveals prophecy object (double) .
+ *
+ * @return object
+ */
+ public function reveal();
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php
new file mode 100644
index 000000000..2d839585f
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/ProphecySubjectInterface.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prophecy;
+
+/**
+ * Controllable doubles interface.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+interface ProphecySubjectInterface
+{
+ /**
+ * Sets subject prophecy.
+ *
+ * @param ProphecyInterface $prophecy
+ */
+ public function setProphecy(ProphecyInterface $prophecy);
+
+ /**
+ * Returns subject prophecy.
+ *
+ * @return ProphecyInterface
+ */
+ public function getProphecy();
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php
new file mode 100644
index 000000000..60ecdac81
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/Revealer.php
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prophecy;
+
+/**
+ * Basic prophecies revealer.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class Revealer implements RevealerInterface
+{
+ /**
+ * Unwraps value(s).
+ *
+ * @param mixed $value
+ *
+ * @return mixed
+ */
+ public function reveal($value)
+ {
+ if (is_array($value)) {
+ return array_map(array($this, __FUNCTION__), $value);
+ }
+
+ if (!is_object($value)) {
+ return $value;
+ }
+
+ if ($value instanceof ProphecyInterface) {
+ $value = $value->reveal();
+ }
+
+ return $value;
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php
new file mode 100644
index 000000000..ffc82bb6f
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prophecy/RevealerInterface.php
@@ -0,0 +1,29 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Prophecy;
+
+/**
+ * Prophecies revealer interface.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+interface RevealerInterface
+{
+ /**
+ * Unwraps value(s).
+ *
+ * @param mixed $value
+ *
+ * @return mixed
+ */
+ public function reveal($value);
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Prophet.php b/vendor/phpspec/prophecy/src/Prophecy/Prophet.php
new file mode 100644
index 000000000..d37c92a34
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Prophet.php
@@ -0,0 +1,138 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy;
+
+use Prophecy\Doubler\CachedDoubler;
+use Prophecy\Doubler\Doubler;
+use Prophecy\Doubler\LazyDouble;
+use Prophecy\Doubler\ClassPatch;
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophecy\RevealerInterface;
+use Prophecy\Prophecy\Revealer;
+use Prophecy\Call\CallCenter;
+use Prophecy\Util\StringUtil;
+use Prophecy\Exception\Prediction\PredictionException;
+use Prophecy\Exception\Prediction\AggregateException;
+
+/**
+ * Prophet creates prophecies.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class Prophet
+{
+ private $doubler;
+ private $revealer;
+ private $util;
+
+ /**
+ * @var ObjectProphecy[]
+ */
+ private $prophecies = array();
+
+ /**
+ * Initializes Prophet.
+ *
+ * @param null|Doubler $doubler
+ * @param null|RevealerInterface $revealer
+ * @param null|StringUtil $util
+ */
+ public function __construct(
+ Doubler $doubler = null,
+ RevealerInterface $revealer = null,
+ StringUtil $util = null
+ ) {
+ if (null === $doubler) {
+ $doubler = new CachedDoubler();
+ $doubler->registerClassPatch(new ClassPatch\SplFileInfoPatch);
+ $doubler->registerClassPatch(new ClassPatch\TraversablePatch);
+ $doubler->registerClassPatch(new ClassPatch\ThrowablePatch);
+ $doubler->registerClassPatch(new ClassPatch\DisableConstructorPatch);
+ $doubler->registerClassPatch(new ClassPatch\ProphecySubjectPatch);
+ $doubler->registerClassPatch(new ClassPatch\ReflectionClassNewInstancePatch);
+ $doubler->registerClassPatch(new ClassPatch\HhvmExceptionPatch());
+ $doubler->registerClassPatch(new ClassPatch\MagicCallPatch);
+ $doubler->registerClassPatch(new ClassPatch\KeywordPatch);
+ }
+
+ $this->doubler = $doubler;
+ $this->revealer = $revealer ?: new Revealer;
+ $this->util = $util ?: new StringUtil;
+ }
+
+ /**
+ * Creates new object prophecy.
+ *
+ * @param null|string $classOrInterface Class or interface name
+ *
+ * @return ObjectProphecy
+ */
+ public function prophesize($classOrInterface = null)
+ {
+ $this->prophecies[] = $prophecy = new ObjectProphecy(
+ new LazyDouble($this->doubler),
+ new CallCenter($this->util),
+ $this->revealer
+ );
+
+ if ($classOrInterface && class_exists($classOrInterface)) {
+ return $prophecy->willExtend($classOrInterface);
+ }
+
+ if ($classOrInterface && interface_exists($classOrInterface)) {
+ return $prophecy->willImplement($classOrInterface);
+ }
+
+ return $prophecy;
+ }
+
+ /**
+ * Returns all created object prophecies.
+ *
+ * @return ObjectProphecy[]
+ */
+ public function getProphecies()
+ {
+ return $this->prophecies;
+ }
+
+ /**
+ * Returns Doubler instance assigned to this Prophet.
+ *
+ * @return Doubler
+ */
+ public function getDoubler()
+ {
+ return $this->doubler;
+ }
+
+ /**
+ * Checks all predictions defined by prophecies of this Prophet.
+ *
+ * @throws Exception\Prediction\AggregateException If any prediction fails
+ */
+ public function checkPredictions()
+ {
+ $exception = new AggregateException("Some predictions failed:\n");
+ foreach ($this->prophecies as $prophecy) {
+ try {
+ $prophecy->checkProphecyMethodsPredictions();
+ } catch (PredictionException $e) {
+ $exception->append($e);
+ }
+ }
+
+ if (count($exception->getExceptions())) {
+ throw $exception;
+ }
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php b/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php
new file mode 100644
index 000000000..1090a801e
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Util/ExportUtil.php
@@ -0,0 +1,210 @@
+<?php
+
+namespace Prophecy\Util;
+
+use Prophecy\Prophecy\ProphecyInterface;
+use SebastianBergmann\RecursionContext\Context;
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * This class is a modification from sebastianbergmann/exporter
+ * @see https://github.com/sebastianbergmann/exporter
+ */
+class ExportUtil
+{
+ /**
+ * Exports a value as a string
+ *
+ * The output of this method is similar to the output of print_r(), but
+ * improved in various aspects:
+ *
+ * - NULL is rendered as "null" (instead of "")
+ * - TRUE is rendered as "true" (instead of "1")
+ * - FALSE is rendered as "false" (instead of "")
+ * - Strings are always quoted with single quotes
+ * - Carriage returns and newlines are normalized to \n
+ * - Recursion and repeated rendering is treated properly
+ *
+ * @param mixed $value
+ * @param int $indentation The indentation level of the 2nd+ line
+ * @return string
+ */
+ public static function export($value, $indentation = 0)
+ {
+ return self::recursiveExport($value, $indentation);
+ }
+
+ /**
+ * Converts an object to an array containing all of its private, protected
+ * and public properties.
+ *
+ * @param mixed $value
+ * @return array
+ */
+ public static function toArray($value)
+ {
+ if (!is_object($value)) {
+ return (array) $value;
+ }
+
+ $array = array();
+
+ foreach ((array) $value as $key => $val) {
+ // properties are transformed to keys in the following way:
+ // private $property => "\0Classname\0property"
+ // protected $property => "\0*\0property"
+ // public $property => "property"
+ if (preg_match('/^\0.+\0(.+)$/', $key, $matches)) {
+ $key = $matches[1];
+ }
+
+ // See https://github.com/php/php-src/commit/5721132
+ if ($key === "\0gcdata") {
+ continue;
+ }
+
+ $array[$key] = $val;
+ }
+
+ // Some internal classes like SplObjectStorage don't work with the
+ // above (fast) mechanism nor with reflection in Zend.
+ // Format the output similarly to print_r() in this case
+ if ($value instanceof \SplObjectStorage) {
+ // However, the fast method does work in HHVM, and exposes the
+ // internal implementation. Hide it again.
+ if (property_exists('\SplObjectStorage', '__storage')) {
+ unset($array['__storage']);
+ } elseif (property_exists('\SplObjectStorage', 'storage')) {
+ unset($array['storage']);
+ }
+
+ if (property_exists('\SplObjectStorage', '__key')) {
+ unset($array['__key']);
+ }
+
+ foreach ($value as $key => $val) {
+ $array[spl_object_hash($val)] = array(
+ 'obj' => $val,
+ 'inf' => $value->getInfo(),
+ );
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Recursive implementation of export
+ *
+ * @param mixed $value The value to export
+ * @param int $indentation The indentation level of the 2nd+ line
+ * @param \SebastianBergmann\RecursionContext\Context $processed Previously processed objects
+ * @return string
+ * @see SebastianBergmann\Exporter\Exporter::export
+ */
+ protected static function recursiveExport(&$value, $indentation, $processed = null)
+ {
+ if ($value === null) {
+ return 'null';
+ }
+
+ if ($value === true) {
+ return 'true';
+ }
+
+ if ($value === false) {
+ return 'false';
+ }
+
+ if (is_float($value) && floatval(intval($value)) === $value) {
+ return "$value.0";
+ }
+
+ if (is_resource($value)) {
+ return sprintf(
+ 'resource(%d) of type (%s)',
+ $value,
+ get_resource_type($value)
+ );
+ }
+
+ if (is_string($value)) {
+ // Match for most non printable chars somewhat taking multibyte chars into account
+ if (preg_match('/[^\x09-\x0d\x20-\xff]/', $value)) {
+ return 'Binary String: 0x' . bin2hex($value);
+ }
+
+ return "'" .
+ str_replace(array("\r\n", "\n\r", "\r"), array("\n", "\n", "\n"), $value) .
+ "'";
+ }
+
+ $whitespace = str_repeat(' ', 4 * $indentation);
+
+ if (!$processed) {
+ $processed = new Context;
+ }
+
+ if (is_array($value)) {
+ if (($key = $processed->contains($value)) !== false) {
+ return 'Array &' . $key;
+ }
+
+ $array = $value;
+ $key = $processed->add($value);
+ $values = '';
+
+ if (count($array) > 0) {
+ foreach ($array as $k => $v) {
+ $values .= sprintf(
+ '%s %s => %s' . "\n",
+ $whitespace,
+ self::recursiveExport($k, $indentation),
+ self::recursiveExport($value[$k], $indentation + 1, $processed)
+ );
+ }
+
+ $values = "\n" . $values . $whitespace;
+ }
+
+ return sprintf('Array &%s (%s)', $key, $values);
+ }
+
+ if (is_object($value)) {
+ $class = get_class($value);
+
+ if ($hash = $processed->contains($value)) {
+ return sprintf('%s:%s Object', $class, $hash);
+ }
+
+ $hash = $processed->add($value);
+ $values = '';
+ $array = self::toArray($value);
+
+ if (count($array) > 0) {
+ foreach ($array as $k => $v) {
+ $values .= sprintf(
+ '%s %s => %s' . "\n",
+ $whitespace,
+ self::recursiveExport($k, $indentation),
+ self::recursiveExport($v, $indentation + 1, $processed)
+ );
+ }
+
+ $values = "\n" . $values . $whitespace;
+ }
+
+ return sprintf('%s:%s Object (%s)', $class, $hash, $values);
+ }
+
+ return var_export($value, true);
+ }
+}
diff --git a/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php b/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php
new file mode 100644
index 000000000..ba4faff57
--- /dev/null
+++ b/vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php
@@ -0,0 +1,99 @@
+<?php
+
+/*
+ * This file is part of the Prophecy.
+ * (c) Konstantin Kudryashov <[email protected]>
+ * Marcello Duarte <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Prophecy\Util;
+
+use Prophecy\Call\Call;
+
+/**
+ * String utility.
+ *
+ * @author Konstantin Kudryashov <[email protected]>
+ */
+class StringUtil
+{
+ private $verbose;
+
+ /**
+ * @param bool $verbose
+ */
+ public function __construct($verbose = true)
+ {
+ $this->verbose = $verbose;
+ }
+
+ /**
+ * Stringifies any provided value.
+ *
+ * @param mixed $value
+ * @param boolean $exportObject
+ *
+ * @return string
+ */
+ public function stringify($value, $exportObject = true)
+ {
+ if (is_array($value)) {
+ if (range(0, count($value) - 1) === array_keys($value)) {
+ return '['.implode(', ', array_map(array($this, __FUNCTION__), $value)).']';
+ }
+
+ $stringify = array($this, __FUNCTION__);
+
+ return '['.implode(', ', array_map(function ($item, $key) use ($stringify) {
+ return (is_integer($key) ? $key : '"'.$key.'"').
+ ' => '.call_user_func($stringify, $item);
+ }, $value, array_keys($value))).']';
+ }
+ if (is_resource($value)) {
+ return get_resource_type($value).':'.$value;
+ }
+ if (is_object($value)) {
+ return $exportObject ? ExportUtil::export($value) : sprintf('%s:%s', get_class($value), spl_object_hash($value));
+ }
+ if (true === $value || false === $value) {
+ return $value ? 'true' : 'false';
+ }
+ if (is_string($value)) {
+ $str = sprintf('"%s"', str_replace("\n", '\\n', $value));
+
+ if (!$this->verbose && 50 <= strlen($str)) {
+ return substr($str, 0, 50).'"...';
+ }
+
+ return $str;
+ }
+ if (null === $value) {
+ return 'null';
+ }
+
+ return (string) $value;
+ }
+
+ /**
+ * Stringifies provided array of calls.
+ *
+ * @param Call[] $calls Array of Call instances
+ *
+ * @return string
+ */
+ public function stringifyCalls(array $calls)
+ {
+ $self = $this;
+
+ return implode(PHP_EOL, array_map(function (Call $call) use ($self) {
+ return sprintf(' - %s(%s) @ %s',
+ $call->getMethodName(),
+ implode(', ', array_map(array($self, 'stringify'), $call->getArguments())),
+ str_replace(GETCWD().DIRECTORY_SEPARATOR, '', $call->getCallPlace())
+ );
+ }, $calls));
+ }
+}
diff --git a/vendor/phpstan/phpstan/LICENSE b/vendor/phpstan/phpstan/LICENSE
new file mode 100644
index 000000000..7c0f2b7b6
--- /dev/null
+++ b/vendor/phpstan/phpstan/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2016 Ondřej Mirtes
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/phpstan/phpstan/README.md b/vendor/phpstan/phpstan/README.md
new file mode 100644
index 000000000..e4953b4a4
--- /dev/null
+++ b/vendor/phpstan/phpstan/README.md
@@ -0,0 +1,93 @@
+<h1 align="center">PHPStan - PHP Static Analysis Tool</h1>
+
+<p align="center">
+ <img src="https://i.imgur.com/WaRKPlC.png" alt="PHPStan" width="300" height="300">
+</p>
+
+<p align="center">
+ <a href="https://github.com/phpstan/phpstan/actions"><img src="https://github.com/phpstan/phpstan/workflows/Build/badge.svg" alt="Build Status"></a>
+ <a href="https://packagist.org/packages/phpstan/phpstan"><img src="https://poser.pugx.org/phpstan/phpstan/v/stable" alt="Latest Stable Version"></a>
+ <a href="https://packagist.org/packages/phpstan/phpstan/stats"><img src="https://poser.pugx.org/phpstan/phpstan/downloads" alt="Total Downloads"></a>
+ <a href="https://choosealicense.com/licenses/mit/"><img src="https://poser.pugx.org/phpstan/phpstan/license" alt="License"></a>
+ <a href="https://phpstan.org/"><img src="https://img.shields.io/badge/PHPStan-enabled-brightgreen.svg?style=flat" alt="PHPStan Enabled"></a>
+</p>
+
+------
+
+PHPStan focuses on finding errors in your code without actually running it. It catches whole classes of bugs
+even before you write tests for the code. It moves PHP closer to compiled languages in the sense that the correctness of each line of the code
+can be checked before you run the actual line.
+
+**[Read more about PHPStan in an introductory article »](https://phpstan.org/blog/find-bugs-in-your-code-without-writing-tests)**
+
+**[Try out PHPStan on the on-line playground! »](https://phpstan.org/)**
+
+## Sponsors
+
+<a href="https://coders.thecodingmachine.com/phpstan"><img src="https://i.imgur.com/kQhNOTP.png" alt="TheCodingMachine" width="247" height="64"></a>
+&nbsp;&nbsp;&nbsp;
+<a href="https://packagist.com/?utm_source=phpstan&utm_medium=readme&utm_campaign=sponsorlogo"><img src="https://i.imgur.com/PmMC45f.png" alt="Private Packagist" width="326" height="64"></a>
+<br>
+<a href="https://careers.tuigroup.com/jobs/"><img src="https://i.imgur.com/uw5rAlR.png" alt="Musement" width="247" height="49"></a>
+&nbsp;&nbsp;&nbsp;
+<a href="https://blackfire.io/docs/introduction?utm_source=phpstan&utm_medium=github_readme&utm_campaign=logo"><img src="https://i.imgur.com/zR8rsqk.png" alt="Blackfire.io" width="254" height="64"></a>
+<br>
+<a href="https://www.intracto.com/"><img src="https://i.imgur.com/XRCDGZi.png" alt="Intracto" width="254" height="65"></a>
+&nbsp;&nbsp;&nbsp;
+<a href="https://jobs.ticketswap.com/"><img src="https://i.imgur.com/lhzcutK.png" alt="TicketSwap" width="269" height="64"></a>
+<br>
+<a href="https://www.startupjobs.cz/startup/shipmonk"><img src="https://i.imgur.com/bAC47za.jpg" alt="ShipMonk" width="290" height="64"></a>
+&nbsp;&nbsp;&nbsp;
+<a href="https://togetter.com/"><img src="https://i.imgur.com/x9n5cj3.png" alt="Togetter" width="283" height="64"></a>
+<br>
+<a href="https://join.rightcapital.com/?utm_source=phpstan&utm_medium=github&utm_campaign=sponsorship"><img src="https://i.imgur.com/EuIgI08.png" alt="RightCapital" width="283" height="64"></a>
+&nbsp;&nbsp;&nbsp;
+<a href="https://www.contentkingapp.com/?ref=php-developer&utm_source=phpstan&utm_medium=referral&utm_campaign=sponsorship"><img src="https://i.imgur.com/0blm7ki.png" alt="ContentKing" width="283" height="64"></a>
+<br>
+<a href="https://zol.fr?utm_source=phpstan"><img src="https://i.imgur.com/dzDgd4s.png" alt="ZOL" width="283" height="64"></a>
+&nbsp;&nbsp;&nbsp;
+<a href="https://kocourek.uk/"><img src="https://i.imgur.com/EX29z98.png" alt="Stepan Kocourek" width="294" height="64"></a>
+<br>
+<a href="https://www.shopware.com/en/"><img src="https://i.imgur.com/L4X5w9s.png" alt="Shopware" width="284" height="64"></a>
+&nbsp;&nbsp;&nbsp;
+<a href="https://craftcms.com/"><img src="https://i.imgur.com/xJWThke.png" alt="Craft CMS" width="283" height="64"></a>
+<br>
+<a href="https://www.worksome.com/"><img src="https://i.imgur.com/TQKSwOl.png" alt="Worksome" width="283" height="64"></a>
+
+[**You can now sponsor my open-source work on PHPStan through GitHub Sponsors.**](https://github.com/sponsors/ondrejmirtes)
+
+Does GitHub already have your 💳? Do you use PHPStan to find 🐛 before they reach production? [Send a couple of 💸 a month my way too.](https://github.com/sponsors/ondrejmirtes) Thank you!
+
+One-time donations [through PayPal](https://paypal.me/phpstan) are also accepted. To request an invoice, [contact me](mailto:[email protected]) through e-mail.
+
+## Documentation
+
+All the documentation lives on the [phpstan.org website](https://phpstan.org/):
+
+* [Getting Started & User Guide](https://phpstan.org/user-guide/getting-started)
+* [Config Reference](https://phpstan.org/config-reference)
+* [PHPDocs Basics](https://phpstan.org/writing-php-code/phpdocs-basics) & [PHPDoc Types](https://phpstan.org/writing-php-code/phpdoc-types)
+* [Extension Library](https://phpstan.org/user-guide/extension-library)
+* [Developing Extensions](https://phpstan.org/developing-extensions/extension-types)
+
+## PHPStan Pro
+
+PHPStan Pro is a paid add-on on top of open-source PHPStan Static Analysis Tool with these premium features:
+
+* Web UI for browsing found errors, you can click and open your editor of choice on the offending line.
+* Continuous analysis (watch mode): scans changed files in the background, refreshes the UI automatically.
+* Interactive fixer: lets you choose the right fix for found errors :blush:
+
+Try it on PHPStan 0.12.45 or later by running it with the `--pro` option. You can create an account either by following the on-screen instructions, or by visiting [account.phpstan.com](https://account.phpstan.com/).
+
+After 30-day free trial period it costs 7 EUR for individuals monthly, 70 EUR for teams (up to 25 members). By paying for PHPStan Pro, you're supporting the development of open-source PHPStan.
+
+You can read more about it on [PHPStan's website](https://phpstan.org/blog/introducing-phpstan-pro).
+
+## Code of Conduct
+
+This project adheres to a [Contributor Code of Conduct](https://github.com/phpstan/phpstan/blob/master/CODE_OF_CONDUCT.md). By participating in this project and its community, you are expected to uphold this code.
+
+## Contributing
+
+Any contributions are welcome. PHPStan's source code open to pull requests lives at [`phpstan/phpstan-src`](https://github.com/phpstan/phpstan-src).
diff --git a/vendor/phpstan/phpstan/bootstrap.php b/vendor/phpstan/phpstan/bootstrap.php
new file mode 100644
index 000000000..e8b943167
--- /dev/null
+++ b/vendor/phpstan/phpstan/bootstrap.php
@@ -0,0 +1,60 @@
+<?php declare(strict_types = 1);
+
+namespace PHPStan;
+
+use Composer\Autoload\ClassLoader;
+
+final class PharAutoloader
+{
+ /** @var ClassLoader */
+ private static $composerAutoloader;
+
+ final public static function loadClass(string $class): void {
+ if (!extension_loaded('phar') || defined('__PHPSTAN_RUNNING__')) {
+ return;
+ }
+
+ if (strpos($class, '_PHPStan_') === 0) {
+ if (!in_array('phar', stream_get_wrappers(), true)) {
+ throw new \Exception('Phar wrapper is not registered. Please review your php.ini settings.');
+ }
+
+ if (self::$composerAutoloader === null) {
+ self::$composerAutoloader = require 'phar://' . __DIR__ . '/phpstan.phar/vendor/autoload.php';
+ require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/clue/block-react/src/functions_include.php';
+ require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/jetbrains/phpstorm-stubs/PhpStormStubsMap.php';
+ require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/react/promise-stream/src/functions_include.php';
+ require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/react/promise-timer/src/functions_include.php';
+ require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/react/promise/src/functions_include.php';
+ require_once 'phar://' . __DIR__ . '/phpstan.phar/vendor/ringcentral/psr7/src/functions_include.php';
+ }
+ self::$composerAutoloader->loadClass($class);
+
+ return;
+ }
+ if (strpos($class, 'PHPStan\\') !== 0 || strpos($class, 'PHPStan\\PhpDocParser\\') === 0) {
+ return;
+ }
+
+ if (!in_array('phar', stream_get_wrappers(), true)) {
+ throw new \Exception('Phar wrapper is not registered. Please review your php.ini settings.');
+ }
+
+ $filename = str_replace('\\', DIRECTORY_SEPARATOR, $class);
+ if (strpos($class, 'PHPStan\\BetterReflection\\') === 0) {
+ $filename = substr($filename, strlen('PHPStan\\BetterReflection\\'));
+ $filepath = 'phar://' . __DIR__ . '/phpstan.phar/vendor/ondrejmirtes/better-reflection/src/' . $filename . '.php';
+ } else {
+ $filename = substr($filename, strlen('PHPStan\\'));
+ $filepath = 'phar://' . __DIR__ . '/phpstan.phar/src/' . $filename . '.php';
+ }
+
+ if (!file_exists($filepath)) {
+ return;
+ }
+
+ require $filepath;
+ }
+}
+
+spl_autoload_register([PharAutoloader::class, 'loadClass']);
diff --git a/vendor/phpstan/phpstan/composer.json b/vendor/phpstan/phpstan/composer.json
new file mode 100644
index 000000000..2c9e27962
--- /dev/null
+++ b/vendor/phpstan/phpstan/composer.json
@@ -0,0 +1,23 @@
+{
+ "name": "phpstan/phpstan",
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "license": ["MIT"],
+ "require": {
+ "php": "^7.1|^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
+ },
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "files": ["bootstrap.php"]
+ }
+}
diff --git a/vendor/phpstan/phpstan/conf/bleedingEdge.neon b/vendor/phpstan/phpstan/conf/bleedingEdge.neon
new file mode 100644
index 000000000..01fee972d
--- /dev/null
+++ b/vendor/phpstan/phpstan/conf/bleedingEdge.neon
@@ -0,0 +1,2 @@
+includes:
+ - phar://phpstan.phar/conf/bleedingEdge.neon
diff --git a/vendor/phpstan/phpstan/phpstan b/vendor/phpstan/phpstan/phpstan
new file mode 100644
index 000000000..7a08ef485
--- /dev/null
+++ b/vendor/phpstan/phpstan/phpstan
@@ -0,0 +1,8 @@
+#!/usr/bin/env php
+<?php
+
+declare (strict_types=1);
+
+Phar::loadPhar(__DIR__ . '/phpstan.phar', 'phpstan.phar');
+
+require 'phar://phpstan.phar/bin/phpstan';
diff --git a/vendor/phpstan/phpstan/phpstan.phar b/vendor/phpstan/phpstan/phpstan.phar
new file mode 100644
index 000000000..306020e3a
--- /dev/null
+++ b/vendor/phpstan/phpstan/phpstan.phar
Binary files differ
diff --git a/vendor/phpstan/phpstan/phpstan.phar.asc b/vendor/phpstan/phpstan/phpstan.phar.asc
new file mode 100644
index 000000000..9110c4aa3
--- /dev/null
+++ b/vendor/phpstan/phpstan/phpstan.phar.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAABCgAdFiEE0yaA1ZV9xxFr4pwUzxoQjQ565yAFAmGKbGQACgkQzxoQjQ56
+5yAy7BAAgT9+V81RuOMz6F16uqm4gXH1ebioWokEvVb6ZR2fk7p3/m14STmmRkwe
+MIkxzWKtx/wSC6VafqAtkBPNxpo2j5QU0pmfMAvkPHh79d2lWmUaJmF71I/DCNnh
+pcZNJLe5x+YTDKU6NnwMlyZEvdaWmyJ2MCf2apBZIJ7axefEJRVVin2pshhXwbtN
+dHhrT9yFYe/vqOkOLtGDWw+yT1I6he7IpoYZUTyO9b7eadC0ga6Bet7jibNL8JBE
+cGcB2MFg9bvif0PgIOio0jQXAWjf0ZBXPvoOwTRCqq/UOPTL8SRtiflAFiFOAzk/
+FRQVC0+26NsGx7R8kS5FZNOHYTIElY1ElyzFk8HWgqrYIvzDNLtkJ68178rDJ29f
+GyAax4P+gN13biyXQycQHhXDfHN1UytopldiRkitXVFGq92sz6BFgQDLF9yxQOm1
+iL5oxWSVf6rM8AOc3DV9Aa1kCpG6FrZPJ66NBgJLzTpKARzt7CM+M8VQNA/KnHB3
+8Mt0WmAeRORSnBWQksOlnA4VUkxWDGkZGVBWMRist7gghfG7n7HxTAUAk1oo7j2b
+/gTwbeOjv/330uZG31e+hCcaj/EcocHvglegWCPMmIhpXqn25TC+87QkGt2wb6z6
+dpzTdy3Pimr5BK2YrN1+Le33CYeHKlc+6XL34BEVebAQ/A9OB/M=
+=k3NZ
+-----END PGP SIGNATURE-----
diff --git a/vendor/phpunit/php-code-coverage/ChangeLog.md b/vendor/phpunit/php-code-coverage/ChangeLog.md
new file mode 100644
index 000000000..2e5df9c3d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/ChangeLog.md
@@ -0,0 +1,448 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [9.2.15] - 2022-03-07
+
+### Fixed
+
+* [#885](https://github.com/sebastianbergmann/php-code-coverage/issues/885): Files that have only `\r` (CR, 0x0d) EOL characters are not handled correctly
+* [#907](https://github.com/sebastianbergmann/php-code-coverage/issues/907): Line with only `return [` is not recognized as executable
+
+## [9.2.14] - 2022-02-28
+
+### Fixed
+
+* [#904](https://github.com/sebastianbergmann/php-code-coverage/issues/904): Lines of code containing the `match` keyword were not recognized as executable correctly
+* [#905](https://github.com/sebastianbergmann/php-code-coverage/issues/905): Lines of code in constructors were not recognized as executable correctly when constructor property promotion is used
+
+## [9.2.13] - 2022-02-23
+
+### Changed
+
+* The contents of the static analysis sourcecode files is now used to generate the static analysis cache version identifier
+
+### Fixed
+
+* Reverted rename of `SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData` to `SebastianBergmann\CodeCoverage\Data\ProcessedCodeCoverageData` (this class is marked as `@internal` and not covered by the backward compatibility promise, but it is (still) used directly by PHPUnit)
+* Reverted rename of `SebastianBergmann\CodeCoverage\RawCodeCoverageData` to `SebastianBergmann\CodeCoverage\Data\RawCodeCoverageData` (this class is marked as `@internal` and not covered by the backward compatibility promise, but it is (still) used directly by PHPUnit)
+* The `ArrayDim`, `Cast`, and `MethodCall` nodes are now considered when determining whether a line of code is executable or not
+
+## [9.2.12] - 2022-02-23 [YANKED]
+
+### Changed
+
+* [#898](https://github.com/sebastianbergmann/php-code-coverage/pull/898): Use content hash instead of `filemtime()` to determine cache hit/miss
+
+### Fixed
+
+* [#736](https://github.com/sebastianbergmann/php-code-coverage/issues/736): HTML report generator allows invalid values for low upper bound and high lower bound
+* [#854](https://github.com/sebastianbergmann/php-code-coverage/issues/854): "Class Coverage Distribution" and "Class Complexity" graphs are not displayed at full width
+* [#897](https://github.com/sebastianbergmann/php-code-coverage/issues/897): `declare(strict_types=1)` marked as uncovered
+
+## [9.2.11] - 2022-02-18
+
+### Changed
+
+* `CoveredFileAnalyser` and `UncoveredFileAnalyser` have been combined to `FileAnalyser`
+* Updated bundled CSS/JavaScript components used for HTML report: Bootstrap 4.6.1, jQuery 3.6.0, and popper.js 1.16.1
+
+### Fixed
+
+* [#889](https://github.com/sebastianbergmann/php-code-coverage/issues/889): Code Coverage depends on autoload order
+
+## [9.2.10] - 2021-12-05
+
+### Fixed
+
+* [#887](https://github.com/sebastianbergmann/php-code-coverage/issues/887): Document return type of `CodeUnitFindingVisitor::enterNode()` so that Symfony's DebugClassLoader does not trigger a deprecation warning
+
+## [9.2.9] - 2021-11-19
+
+### Fixed
+
+* [#882](https://github.com/sebastianbergmann/php-code-coverage/issues/882): PHPUnit 9.2.8 has wrong version number
+
+## [9.2.8] - 2021-10-30
+
+### Fixed
+
+* [#866](https://github.com/sebastianbergmann/php-code-coverage/issues/866): `CodeUnitFindingVisitor` does not handle `enum` type introduced in PHP 8.1
+* [#868](https://github.com/sebastianbergmann/php-code-coverage/pull/868): Uncovered files should be ignored unless requested
+* [#876](https://github.com/sebastianbergmann/php-code-coverage/issues/876): PCOV driver causes 2x slowdown after upgrade to PHPUnit 9.5
+
+## [9.2.7] - 2021-09-17
+
+### Fixed
+
+* [#860](https://github.com/sebastianbergmann/php-code-coverage/pull/860): Empty value for `XDEBUG_MODE` environment variable is not handled correctly
+
+## [9.2.6] - 2021-03-28
+
+### Fixed
+
+* [#846](https://github.com/sebastianbergmann/php-code-coverage/issues/846): Method name should not appear in the method signature attribute of Cobertura XML
+
+## [9.2.5] - 2020-11-28
+
+### Fixed
+
+* [#831](https://github.com/sebastianbergmann/php-code-coverage/issues/831): Files that do not contain a newline are not handled correctly
+
+## [9.2.4] - 2020-11-27
+
+### Added
+
+* [#834](https://github.com/sebastianbergmann/php-code-coverage/issues/834): Support `XDEBUG_MODE` environment variable
+
+## [9.2.3] - 2020-10-30
+
+### Changed
+
+* Bumped required version of `nikic/php-parser`
+
+## [9.2.2] - 2020-10-28
+
+### Fixed
+
+* [#820](https://github.com/sebastianbergmann/php-code-coverage/issues/820): Hidden dependency on PHPUnit
+
+## [9.2.1] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\CodeCoverage\Exception` now correctly extends `\Throwable`
+
+## [9.2.0] - 2020-10-02
+
+### Added
+
+* [#812](https://github.com/sebastianbergmann/php-code-coverage/pull/812): Support for Cobertura XML report format
+
+### Changed
+
+* Reduced the number of I/O operations performed by the static analysis cache
+
+## [9.1.11] - 2020-09-19
+
+### Fixed
+
+* [#811](https://github.com/sebastianbergmann/php-code-coverage/issues/811): `T_FN` constant is used on PHP 7.3 where it is not available
+
+## [9.1.10] - 2020-09-18
+
+### Added
+
+* `SebastianBergmann\CodeCoverage\Driver\Selector::forLineCoverage()` and `SebastianBergmann\CodeCoverage\Driver\Selector::forLineAndPathCoverage()` have been added
+
+### Fixed
+
+* [#810](https://github.com/sebastianbergmann/php-code-coverage/issues/810): `SebastianBergmann\CodeCoverage\Driver\Driver::forLineCoverage()` and `SebastianBergmann\CodeCoverage\Driver\Driver::forLineAndPathCoverage()` are marked as internal
+
+### Removed
+
+* `SebastianBergmann\CodeCoverage\Driver\Driver::forLineCoverage()` and `SebastianBergmann\CodeCoverage\Driver\Driver::forLineAndPathCoverage()` are now deprecated
+
+## [9.1.9] - 2020-09-15
+
+### Fixed
+
+* [#808](https://github.com/sebastianbergmann/php-code-coverage/issues/808): `PHP Warning: Use of undefined constant T_MATCH`
+
+## [9.1.8] - 2020-09-07
+
+### Changed
+
+* [#800](https://github.com/sebastianbergmann/php-code-coverage/pull/800): All files on the inclusion list are no longer loaded when `SebastianBergmann\CodeCoverage::start()` is called for the first time and `processUncoveredFiles` is set to `true`
+
+### Fixed
+
+* [#799](https://github.com/sebastianbergmann/php-code-coverage/issues/799): Uncovered new line at end of file
+
+## [9.1.7] - 2020-09-03
+
+### Fixed
+
+* Fixed regressions introduced in versions 9.1.5 and 9.1.6
+
+## [9.1.6] - 2020-08-31
+
+### Fixed
+
+* [#799](https://github.com/sebastianbergmann/php-code-coverage/issues/799): Uncovered new line at end of file
+* [#803](https://github.com/sebastianbergmann/php-code-coverage/issues/803): HTML report does not sort directories and files anymore
+
+## [9.1.5] - 2020-08-27
+
+### Changed
+
+* [#800](https://github.com/sebastianbergmann/php-code-coverage/pull/800): All files on the inclusion list are no longer loaded when `SebastianBergmann\CodeCoverage::start()` is called for the first time and `processUncoveredFiles` is set to `true`
+
+### Fixed
+
+* [#797](https://github.com/sebastianbergmann/php-code-coverage/pull/797): Class name is wrongly removed from namespace name
+
+## [9.1.4] - 2020-08-13
+
+### Fixed
+
+* [#793](https://github.com/sebastianbergmann/php-code-coverage/issues/793): Lines with `::class` constant are not covered
+
+## [9.1.3] - 2020-08-10
+
+### Changed
+
+* Changed PHP-Parser usage to parse sourcecode according to the PHP version we are currently running on instead of using emulative lexing
+
+## [9.1.2] - 2020-08-10
+
+### Fixed
+
+* [#791](https://github.com/sebastianbergmann/php-code-coverage/pull/791): Cache Warmer does not warm all caches
+
+## [9.1.1] - 2020-08-10
+
+### Added
+
+* Added `SebastianBergmann\CodeCoverage::cacheDirectory()` method for querying where the cache writes its files
+
+## [9.1.0] - 2020-08-10
+
+### Added
+
+* Implemented a persistent cache for information gathered using PHP-Parser based static analysis (hereinafter referred to as "cache")
+* Added `SebastianBergmann\CodeCoverage::cacheStaticAnalysis(string $cacheDirectory)` method for enabling the cache; it will write its files to `$directory`
+* Added `SebastianBergmann\CodeCoverage::doNotCacheStaticAnalysis` method for disabling the cache
+* Added `SebastianBergmann\CodeCoverage::cachesStaticAnalysis()` method for querying whether the cache is enabled
+* Added `SebastianBergmann\CodeCoverage\StaticAnalysis\CacheWarmer::warmCache()` method for warming the cache
+
+## [9.0.0] - 2020-08-07
+
+### Added
+
+* [#761](https://github.com/sebastianbergmann/php-code-coverage/pull/761): Support for Branch Coverage and Path Coverage
+* Added `SebastianBergmann\CodeCoverage\Driver\Driver::forLineCoverage()` for selecting the best available driver for line coverage
+* Added `SebastianBergmann\CodeCoverage\Driver\Driver::forLineAndPathCoverage()` for selecting the best available driver for path coverage
+* This component is now supported on PHP 8
+* This component now supports Xdebug 3
+
+### Changed
+
+* [#746](https://github.com/sebastianbergmann/php-code-coverage/pull/746): Remove some ancient workarounds for very old Xdebug versions
+* [#747](https://github.com/sebastianbergmann/php-code-coverage/pull/747): Use native filtering in PCOV and Xdebug drivers
+* [#748](https://github.com/sebastianbergmann/php-code-coverage/pull/748): Store raw code coverage in value objects instead of arrays
+* [#749](https://github.com/sebastianbergmann/php-code-coverage/pull/749): Store processed code coverage in value objects instead of arrays
+* [#752](https://github.com/sebastianbergmann/php-code-coverage/pull/752): Rework how code coverage settings are propagated to the driver
+* [#754](https://github.com/sebastianbergmann/php-code-coverage/pull/754): Implement collection of raw branch and path coverage
+* [#755](https://github.com/sebastianbergmann/php-code-coverage/pull/755): Implement processing of raw branch and path coverage
+* [#756](https://github.com/sebastianbergmann/php-code-coverage/pull/756): Improve handling of uncovered files
+* `SebastianBergmann\CodeCoverage\Filter::addDirectoryToWhitelist()` has been renamed to `SebastianBergmann\CodeCoverage\Filter::includeDirectory()`
+* `SebastianBergmann\CodeCoverage\Filter::addFilesToWhitelist()` has been renamed to `SebastianBergmann\CodeCoverage\Filter::includeFiles()`
+* `SebastianBergmann\CodeCoverage\Filter::addFileToWhitelist()` has been renamed to `SebastianBergmann\CodeCoverage\Filter::includeFile()`
+* `SebastianBergmann\CodeCoverage\Filter::removeDirectoryFromWhitelist()` has been renamed to `SebastianBergmann\CodeCoverage\Filter::excludeDirectory()`
+* `SebastianBergmann\CodeCoverage\Filter::removeFileFromWhitelist()` has been renamed to `SebastianBergmann\CodeCoverage\Filter::excludeFile()`
+* `SebastianBergmann\CodeCoverage\Filter::isFiltered()` has been renamed to `SebastianBergmann\CodeCoverage\Filter::isExcluded()`
+* `SebastianBergmann\CodeCoverage\Filter::getWhitelist()` has been renamed to `SebastianBergmann\CodeCoverage\Filter::files()`
+* The arguments for `CodeCoverage::__construct()` are no longer optional
+
+### Fixed
+
+* [#700](https://github.com/sebastianbergmann/php-code-coverage/pull/700): Throw an exception if code coverage fails to write to disk
+
+### Removed
+
+* `SebastianBergmann\CodeCoverage\CodeCoverage::setCacheTokens()` and `SebastianBergmann\CodeCoverage\CodeCoverage::getCacheTokens()` have been removed
+* `SebastianBergmann\CodeCoverage\CodeCoverage::setCheckForUnintentionallyCoveredCode()` has been removed, please use `SebastianBergmann\CodeCoverage\CodeCoverage::enableCheckForUnintentionallyCoveredCode()` or `SebastianBergmann\CodeCoverage\CodeCoverage::disableCheckForUnintentionallyCoveredCode()` instead
+* `SebastianBergmann\CodeCoverage\CodeCoverage::setSubclassesExcludedFromUnintentionallyCoveredCodeCheck()` has been removed, please use `SebastianBergmann\CodeCoverage\CodeCoverage::excludeSubclassesOfThisClassFromUnintentionallyCoveredCodeCheck()` instead
+* `SebastianBergmann\CodeCoverage\CodeCoverage::setAddUncoveredFilesFromWhitelist()` has been removed, please use `SebastianBergmann\CodeCoverage\CodeCoverage::includeUncoveredFiles()` or `SebastianBergmann\CodeCoverage\CodeCoverage::excludeUncoveredFiles()` instead
+* `SebastianBergmann\CodeCoverage\CodeCoverage::setProcessUncoveredFiles()` has been removed, please use `SebastianBergmann\CodeCoverage\CodeCoverage::processUncoveredFiles()` or `SebastianBergmann\CodeCoverage\CodeCoverage::doNotProcessUncoveredFiles()` instead
+* `SebastianBergmann\CodeCoverage\CodeCoverage::setIgnoreDeprecatedCode()` has been removed, please use `SebastianBergmann\CodeCoverage\CodeCoverage::ignoreDeprecatedCode()` or `SebastianBergmann\CodeCoverage\CodeCoverage::doNotIgnoreDeprecatedCode()` instead
+* `SebastianBergmann\CodeCoverage\CodeCoverage::setDisableIgnoredLines()` has been removed, please use `SebastianBergmann\CodeCoverage\CodeCoverage::enableAnnotationsForIgnoringCode()` or `SebastianBergmann\CodeCoverage\CodeCoverage::disableAnnotationsForIgnoringCode()` instead
+* `SebastianBergmann\CodeCoverage\CodeCoverage::setCheckForMissingCoversAnnotation()` has been removed
+* `SebastianBergmann\CodeCoverage\CodeCoverage::setCheckForUnexecutedCoveredCode()` has been removed
+* `SebastianBergmann\CodeCoverage\CodeCoverage::setForceCoversAnnotation()` has been removed
+* `SebastianBergmann\CodeCoverage\Filter::hasWhitelist()` has been removed, please use `SebastianBergmann\CodeCoverage\Filter::isEmpty()` instead
+* `SebastianBergmann\CodeCoverage\Filter::getWhitelistedFiles()` has been removed
+* `SebastianBergmann\CodeCoverage\Filter::setWhitelistedFiles()` has been removed
+
+## [8.0.2] - 2020-05-23
+
+### Fixed
+
+* [#750](https://github.com/sebastianbergmann/php-code-coverage/pull/750): Inconsistent handling of namespaces
+* [#751](https://github.com/sebastianbergmann/php-code-coverage/pull/751): Dead code is not highlighted correctly
+* [#753](https://github.com/sebastianbergmann/php-code-coverage/issues/753): Do not use `$_SERVER['REQUEST_TIME']` because the test(ed) code might unset it
+
+## [8.0.1] - 2020-02-19
+
+### Fixed
+
+* [#731](https://github.com/sebastianbergmann/php-code-coverage/pull/731): Confusing footer in the HTML report
+
+## [8.0.0] - 2020-02-07
+
+### Fixed
+
+* [#721](https://github.com/sebastianbergmann/php-code-coverage/pull/721): Workaround for PHP bug [#79191](https://bugs.php.net/bug.php?id=79191)
+
+### Removed
+
+* This component is no longer supported on PHP 7.2
+
+## [7.0.15] - 2021-07-26
+
+### Changed
+
+* Bumped required version of php-token-stream
+
+## [7.0.14] - 2020-12-02
+
+### Changed
+
+* [#837](https://github.com/sebastianbergmann/php-code-coverage/issues/837): Allow version 4 of php-token-stream
+
+## [7.0.13] - 2020-11-30
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.2` to `>=7.2` to allow installation of this version of this library on PHP 8. However, this version of this library does not work on PHP 8. PHPUnit 8.5, which uses this version of this library, does not call into this library and instead shows a message that code coverage functionality is not available for PHPUnit 8.5 on PHP 8.
+
+## [7.0.12] - 2020-11-27
+
+### Added
+
+* [#834](https://github.com/sebastianbergmann/php-code-coverage/issues/834): Support `XDEBUG_MODE` environment variable
+
+## [7.0.11] - 2020-11-27
+
+### Added
+
+* Support for Xdebug 3
+
+## [7.0.10] - 2019-11-20
+
+### Fixed
+
+* [#710](https://github.com/sebastianbergmann/php-code-coverage/pull/710): Code Coverage does not work in PhpStorm
+
+## [7.0.9] - 2019-11-20
+
+### Changed
+
+* [#709](https://github.com/sebastianbergmann/php-code-coverage/pull/709): Prioritize PCOV over Xdebug
+
+## [7.0.8] - 2019-09-17
+
+### Changed
+
+* Updated bundled CSS/JavaScript components used for HTML report: Bootstrap 4.3.1, jQuery 3.4.1, and popper.js 1.15.0
+
+## [7.0.7] - 2019-07-25
+
+### Changed
+
+* Bumped required version of php-token-stream
+
+## [7.0.6] - 2019-07-08
+
+### Changed
+
+* Bumped required version of php-token-stream
+
+## [7.0.5] - 2019-06-06
+
+### Fixed
+
+* [#681](https://github.com/sebastianbergmann/php-code-coverage/pull/681): `use function` statements are not ignored
+
+## [7.0.4] - 2019-05-29
+
+### Fixed
+
+* [#682](https://github.com/sebastianbergmann/php-code-coverage/pull/682): Code that is not executed is reported as being executed when using PCOV
+
+## [7.0.3] - 2019-02-26
+
+### Fixed
+
+* [#671](https://github.com/sebastianbergmann/php-code-coverage/issues/671): `TypeError` when directory name is a number
+
+## [7.0.2] - 2019-02-15
+
+### Changed
+
+* Updated bundled CSS/JavaScript components used for HTML report: Bootstrap 4.3.0
+
+### Fixed
+
+* [#667](https://github.com/sebastianbergmann/php-code-coverage/pull/667): `TypeError` in PHP reporter
+
+## [7.0.1] - 2019-02-01
+
+### Fixed
+
+* [#664](https://github.com/sebastianbergmann/php-code-coverage/issues/664): `TypeError` when whitelisted file does not exist
+
+## [7.0.0] - 2019-02-01
+
+### Added
+
+* [#663](https://github.com/sebastianbergmann/php-code-coverage/pull/663): Support for PCOV
+
+### Fixed
+
+* [#654](https://github.com/sebastianbergmann/php-code-coverage/issues/654): HTML report fails to load assets
+* [#655](https://github.com/sebastianbergmann/php-code-coverage/issues/655): Popin pops in outside of screen
+
+### Removed
+
+* This component is no longer supported on PHP 7.1
+
+[9.2.15]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.14...9.2.15
+[9.2.14]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.13...9.2.14
+[9.2.13]: https://github.com/sebastianbergmann/php-code-coverage/compare/c011a0b6aaa4acd2f39b7f51fb4ad4442b6ec631...9.2.13
+[9.2.12]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.11...c011a0b6aaa4acd2f39b7f51fb4ad4442b6ec631
+[9.2.11]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.10...9.2.11
+[9.2.10]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.9...9.2.10
+[9.2.9]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.8...9.2.9
+[9.2.8]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.7...9.2.8
+[9.2.7]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.6...9.2.7
+[9.2.6]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.5...9.2.6
+[9.2.5]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.4...9.2.5
+[9.2.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.3...9.2.4
+[9.2.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.2...9.2.3
+[9.2.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.1...9.2.2
+[9.2.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.2.0...9.2.1
+[9.2.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.11...9.2.0
+[9.1.11]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.10...9.1.11
+[9.1.10]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.9...9.1.10
+[9.1.9]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.8...9.1.9
+[9.1.8]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.7...9.1.8
+[9.1.7]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.6...9.1.7
+[9.1.6]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.5...9.1.6
+[9.1.5]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.4...9.1.5
+[9.1.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.3...9.1.4
+[9.1.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.2...9.1.3
+[9.1.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.1...9.1.2
+[9.1.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.1.0...9.1.1
+[9.1.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/9.0.0...9.1.0
+[9.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/8.0...9.0.0
+[8.0.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/8.0.1...8.0.2
+[8.0.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/8.0.0...8.0.1
+[8.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.10...8.0.0
+[7.0.15]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.14...7.0.15
+[7.0.14]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.13...7.0.14
+[7.0.13]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.12...7.0.13
+[7.0.12]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.11...7.0.12
+[7.0.11]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.10...7.0.11
+[7.0.10]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.9...7.0.10
+[7.0.9]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.8...7.0.9
+[7.0.8]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.7...7.0.8
+[7.0.7]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.6...7.0.7
+[7.0.6]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.5...7.0.6
+[7.0.5]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.4...7.0.5
+[7.0.4]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.3...7.0.4
+[7.0.3]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.2...7.0.3
+[7.0.2]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.1...7.0.2
+[7.0.1]: https://github.com/sebastianbergmann/php-code-coverage/compare/7.0.0...7.0.1
+[7.0.0]: https://github.com/sebastianbergmann/php-code-coverage/compare/6.1.4...7.0.0
diff --git a/vendor/phpunit/php-code-coverage/LICENSE b/vendor/phpunit/php-code-coverage/LICENSE
new file mode 100644
index 000000000..c4a1db2c6
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/LICENSE
@@ -0,0 +1,33 @@
+php-code-coverage
+
+Copyright (c) 2009-2022, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-code-coverage/README.md b/vendor/phpunit/php-code-coverage/README.md
new file mode 100644
index 000000000..53ce9b338
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/README.md
@@ -0,0 +1,48 @@
+# phpunit/php-code-coverage
+
+[![Latest Stable Version](https://poser.pugx.org/phpunit/php-code-coverage/v/stable.png)](https://packagist.org/packages/phpunit/php-code-coverage)
+[![CI Status](https://github.com/sebastianbergmann/php-code-coverage/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/php-code-coverage/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/php-code-coverage/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/php-code-coverage)
+
+Provides collection, processing, and rendering functionality for PHP code coverage information.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require phpunit/php-code-coverage
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev phpunit/php-code-coverage
+```
+
+## Usage
+
+```php
+<?php declare(strict_types=1);
+use SebastianBergmann\CodeCoverage\Filter;
+use SebastianBergmann\CodeCoverage\Driver\Selector;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Report\Html\Facade as HtmlReport;
+
+$filter = new Filter;
+$filter->includeDirectory('/path/to/directory');
+
+$coverage = new CodeCoverage(
+ (new Selector)->forLineCoverage($filter),
+ $filter
+);
+
+$coverage->start('<name of test>');
+
+// ...
+
+$coverage->stop();
+
+
+(new HtmlReport)->process($coverage, '/tmp/code-coverage-report');
+```
diff --git a/vendor/phpunit/php-code-coverage/composer.json b/vendor/phpunit/php-code-coverage/composer.json
new file mode 100644
index 000000000..11c3add6c
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/composer.json
@@ -0,0 +1,68 @@
+{
+ "name": "phpunit/php-code-coverage",
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "type": "library",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3",
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.13.0",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "autoload-dev": {
+ "files": [
+ "tests/TestCase.php",
+ "tests/_files/BankAccountTest.php"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.2-dev"
+ }
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage.php
new file mode 100644
index 000000000..c53d602c8
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/CodeCoverage.php
@@ -0,0 +1,676 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use function array_diff;
+use function array_diff_key;
+use function array_flip;
+use function array_keys;
+use function array_merge;
+use function array_unique;
+use function array_values;
+use function count;
+use function explode;
+use function get_class;
+use function is_array;
+use function is_file;
+use function sort;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Runner\PhptTestCase;
+use PHPUnit\Util\Test;
+use ReflectionClass;
+use SebastianBergmann\CodeCoverage\Driver\Driver;
+use SebastianBergmann\CodeCoverage\Node\Builder;
+use SebastianBergmann\CodeCoverage\Node\Directory;
+use SebastianBergmann\CodeCoverage\StaticAnalysis\CachingFileAnalyser;
+use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser;
+use SebastianBergmann\CodeCoverage\StaticAnalysis\ParsingFileAnalyser;
+use SebastianBergmann\CodeUnitReverseLookup\Wizard;
+
+/**
+ * Provides collection functionality for PHP code coverage information.
+ */
+final class CodeCoverage
+{
+ private const UNCOVERED_FILES = 'UNCOVERED_FILES';
+
+ /**
+ * @var Driver
+ */
+ private $driver;
+
+ /**
+ * @var Filter
+ */
+ private $filter;
+
+ /**
+ * @var Wizard
+ */
+ private $wizard;
+
+ /**
+ * @var bool
+ */
+ private $checkForUnintentionallyCoveredCode = false;
+
+ /**
+ * @var bool
+ */
+ private $includeUncoveredFiles = true;
+
+ /**
+ * @var bool
+ */
+ private $processUncoveredFiles = false;
+
+ /**
+ * @var bool
+ */
+ private $ignoreDeprecatedCode = false;
+
+ /**
+ * @var PhptTestCase|string|TestCase
+ */
+ private $currentId;
+
+ /**
+ * Code coverage data.
+ *
+ * @var ProcessedCodeCoverageData
+ */
+ private $data;
+
+ /**
+ * @var bool
+ */
+ private $useAnnotationsForIgnoringCode = true;
+
+ /**
+ * Test data.
+ *
+ * @var array
+ */
+ private $tests = [];
+
+ /**
+ * @psalm-var list<class-string>
+ */
+ private $parentClassesExcludedFromUnintentionallyCoveredCodeCheck = [];
+
+ /**
+ * @var ?FileAnalyser
+ */
+ private $analyser;
+
+ /**
+ * @var ?string
+ */
+ private $cacheDirectory;
+
+ public function __construct(Driver $driver, Filter $filter)
+ {
+ $this->driver = $driver;
+ $this->filter = $filter;
+ $this->data = new ProcessedCodeCoverageData;
+ $this->wizard = new Wizard;
+ }
+
+ /**
+ * Returns the code coverage information as a graph of node objects.
+ */
+ public function getReport(): Directory
+ {
+ return (new Builder($this->analyser()))->build($this);
+ }
+
+ /**
+ * Clears collected code coverage data.
+ */
+ public function clear(): void
+ {
+ $this->currentId = null;
+ $this->data = new ProcessedCodeCoverageData;
+ $this->tests = [];
+ }
+
+ /**
+ * Returns the filter object used.
+ */
+ public function filter(): Filter
+ {
+ return $this->filter;
+ }
+
+ /**
+ * Returns the collected code coverage data.
+ */
+ public function getData(bool $raw = false): ProcessedCodeCoverageData
+ {
+ if (!$raw) {
+ if ($this->processUncoveredFiles) {
+ $this->processUncoveredFilesFromFilter();
+ } elseif ($this->includeUncoveredFiles) {
+ $this->addUncoveredFilesFromFilter();
+ }
+ }
+
+ return $this->data;
+ }
+
+ /**
+ * Sets the coverage data.
+ */
+ public function setData(ProcessedCodeCoverageData $data): void
+ {
+ $this->data = $data;
+ }
+
+ /**
+ * Returns the test data.
+ */
+ public function getTests(): array
+ {
+ return $this->tests;
+ }
+
+ /**
+ * Sets the test data.
+ */
+ public function setTests(array $tests): void
+ {
+ $this->tests = $tests;
+ }
+
+ /**
+ * Start collection of code coverage information.
+ *
+ * @param PhptTestCase|string|TestCase $id
+ */
+ public function start($id, bool $clear = false): void
+ {
+ if ($clear) {
+ $this->clear();
+ }
+
+ $this->currentId = $id;
+
+ $this->driver->start();
+ }
+
+ /**
+ * Stop collection of code coverage information.
+ *
+ * @param array|false $linesToBeCovered
+ */
+ public function stop(bool $append = true, $linesToBeCovered = [], array $linesToBeUsed = []): RawCodeCoverageData
+ {
+ if (!is_array($linesToBeCovered) && $linesToBeCovered !== false) {
+ throw new InvalidArgumentException(
+ '$linesToBeCovered must be an array or false'
+ );
+ }
+
+ $data = $this->driver->stop();
+ $this->append($data, null, $append, $linesToBeCovered, $linesToBeUsed);
+
+ $this->currentId = null;
+
+ return $data;
+ }
+
+ /**
+ * Appends code coverage data.
+ *
+ * @param PhptTestCase|string|TestCase $id
+ * @param array|false $linesToBeCovered
+ *
+ * @throws ReflectionException
+ * @throws TestIdMissingException
+ * @throws UnintentionallyCoveredCodeException
+ */
+ public function append(RawCodeCoverageData $rawData, $id = null, bool $append = true, $linesToBeCovered = [], array $linesToBeUsed = []): void
+ {
+ if ($id === null) {
+ $id = $this->currentId;
+ }
+
+ if ($id === null) {
+ throw new TestIdMissingException;
+ }
+
+ $this->applyFilter($rawData);
+
+ $this->applyExecutableLinesFilter($rawData);
+
+ if ($this->useAnnotationsForIgnoringCode) {
+ $this->applyIgnoredLinesFilter($rawData);
+ }
+
+ $this->data->initializeUnseenData($rawData);
+
+ if (!$append) {
+ return;
+ }
+
+ if ($id !== self::UNCOVERED_FILES) {
+ $this->applyCoversAnnotationFilter(
+ $rawData,
+ $linesToBeCovered,
+ $linesToBeUsed
+ );
+
+ if (empty($rawData->lineCoverage())) {
+ return;
+ }
+
+ $size = 'unknown';
+ $status = -1;
+ $fromTestcase = false;
+
+ if ($id instanceof TestCase) {
+ $fromTestcase = true;
+ $_size = $id->getSize();
+
+ if ($_size === Test::SMALL) {
+ $size = 'small';
+ } elseif ($_size === Test::MEDIUM) {
+ $size = 'medium';
+ } elseif ($_size === Test::LARGE) {
+ $size = 'large';
+ }
+
+ $status = $id->getStatus();
+ $id = get_class($id) . '::' . $id->getName();
+ } elseif ($id instanceof PhptTestCase) {
+ $fromTestcase = true;
+ $size = 'large';
+ $id = $id->getName();
+ }
+
+ $this->tests[$id] = ['size' => $size, 'status' => $status, 'fromTestcase' => $fromTestcase];
+
+ $this->data->markCodeAsExecutedByTestCase($id, $rawData);
+ }
+ }
+
+ /**
+ * Merges the data from another instance.
+ */
+ public function merge(self $that): void
+ {
+ $this->filter->includeFiles(
+ $that->filter()->files()
+ );
+
+ $this->data->merge($that->data);
+
+ $this->tests = array_merge($this->tests, $that->getTests());
+ }
+
+ public function enableCheckForUnintentionallyCoveredCode(): void
+ {
+ $this->checkForUnintentionallyCoveredCode = true;
+ }
+
+ public function disableCheckForUnintentionallyCoveredCode(): void
+ {
+ $this->checkForUnintentionallyCoveredCode = false;
+ }
+
+ public function includeUncoveredFiles(): void
+ {
+ $this->includeUncoveredFiles = true;
+ }
+
+ public function excludeUncoveredFiles(): void
+ {
+ $this->includeUncoveredFiles = false;
+ }
+
+ public function processUncoveredFiles(): void
+ {
+ $this->processUncoveredFiles = true;
+ }
+
+ public function doNotProcessUncoveredFiles(): void
+ {
+ $this->processUncoveredFiles = false;
+ }
+
+ public function enableAnnotationsForIgnoringCode(): void
+ {
+ $this->useAnnotationsForIgnoringCode = true;
+ }
+
+ public function disableAnnotationsForIgnoringCode(): void
+ {
+ $this->useAnnotationsForIgnoringCode = false;
+ }
+
+ public function ignoreDeprecatedCode(): void
+ {
+ $this->ignoreDeprecatedCode = true;
+ }
+
+ public function doNotIgnoreDeprecatedCode(): void
+ {
+ $this->ignoreDeprecatedCode = false;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->cacheDirectory
+ */
+ public function cachesStaticAnalysis(): bool
+ {
+ return $this->cacheDirectory !== null;
+ }
+
+ public function cacheStaticAnalysis(string $directory): void
+ {
+ $this->cacheDirectory = $directory;
+ }
+
+ public function doNotCacheStaticAnalysis(): void
+ {
+ $this->cacheDirectory = null;
+ }
+
+ /**
+ * @throws StaticAnalysisCacheNotConfiguredException
+ */
+ public function cacheDirectory(): string
+ {
+ if (!$this->cachesStaticAnalysis()) {
+ throw new StaticAnalysisCacheNotConfiguredException(
+ 'The static analysis cache is not configured'
+ );
+ }
+
+ return $this->cacheDirectory;
+ }
+
+ /**
+ * @psalm-param class-string $className
+ */
+ public function excludeSubclassesOfThisClassFromUnintentionallyCoveredCodeCheck(string $className): void
+ {
+ $this->parentClassesExcludedFromUnintentionallyCoveredCodeCheck[] = $className;
+ }
+
+ public function enableBranchAndPathCoverage(): void
+ {
+ $this->driver->enableBranchAndPathCoverage();
+ }
+
+ public function disableBranchAndPathCoverage(): void
+ {
+ $this->driver->disableBranchAndPathCoverage();
+ }
+
+ public function collectsBranchAndPathCoverage(): bool
+ {
+ return $this->driver->collectsBranchAndPathCoverage();
+ }
+
+ public function detectsDeadCode(): bool
+ {
+ return $this->driver->detectsDeadCode();
+ }
+
+ /**
+ * Applies the @covers annotation filtering.
+ *
+ * @param array|false $linesToBeCovered
+ *
+ * @throws ReflectionException
+ * @throws UnintentionallyCoveredCodeException
+ */
+ private function applyCoversAnnotationFilter(RawCodeCoverageData $rawData, $linesToBeCovered, array $linesToBeUsed): void
+ {
+ if ($linesToBeCovered === false) {
+ $rawData->clear();
+
+ return;
+ }
+
+ if (empty($linesToBeCovered)) {
+ return;
+ }
+
+ if ($this->checkForUnintentionallyCoveredCode &&
+ (!$this->currentId instanceof TestCase ||
+ (!$this->currentId->isMedium() && !$this->currentId->isLarge()))) {
+ $this->performUnintentionallyCoveredCodeCheck($rawData, $linesToBeCovered, $linesToBeUsed);
+ }
+
+ $rawLineData = $rawData->lineCoverage();
+ $filesWithNoCoverage = array_diff_key($rawLineData, $linesToBeCovered);
+
+ foreach (array_keys($filesWithNoCoverage) as $fileWithNoCoverage) {
+ $rawData->removeCoverageDataForFile($fileWithNoCoverage);
+ }
+
+ if (is_array($linesToBeCovered)) {
+ foreach ($linesToBeCovered as $fileToBeCovered => $includedLines) {
+ $rawData->keepLineCoverageDataOnlyForLines($fileToBeCovered, $includedLines);
+ $rawData->keepFunctionCoverageDataOnlyForLines($fileToBeCovered, $includedLines);
+ }
+ }
+ }
+
+ private function applyFilter(RawCodeCoverageData $data): void
+ {
+ if ($this->filter->isEmpty()) {
+ return;
+ }
+
+ foreach (array_keys($data->lineCoverage()) as $filename) {
+ if ($this->filter->isExcluded($filename)) {
+ $data->removeCoverageDataForFile($filename);
+ }
+ }
+ }
+
+ private function applyExecutableLinesFilter(RawCodeCoverageData $data): void
+ {
+ foreach (array_keys($data->lineCoverage()) as $filename) {
+ if (!$this->filter->isFile($filename)) {
+ continue;
+ }
+
+ $data->keepLineCoverageDataOnlyForLines(
+ $filename,
+ $this->analyser()->executableLinesIn($filename)
+ );
+ }
+ }
+
+ private function applyIgnoredLinesFilter(RawCodeCoverageData $data): void
+ {
+ foreach (array_keys($data->lineCoverage()) as $filename) {
+ if (!$this->filter->isFile($filename)) {
+ continue;
+ }
+
+ $data->removeCoverageDataForLines(
+ $filename,
+ $this->analyser()->ignoredLinesFor($filename)
+ );
+ }
+ }
+
+ /**
+ * @throws UnintentionallyCoveredCodeException
+ */
+ private function addUncoveredFilesFromFilter(): void
+ {
+ $uncoveredFiles = array_diff(
+ $this->filter->files(),
+ $this->data->coveredFiles()
+ );
+
+ foreach ($uncoveredFiles as $uncoveredFile) {
+ if (is_file($uncoveredFile)) {
+ $this->append(
+ RawCodeCoverageData::fromUncoveredFile(
+ $uncoveredFile,
+ $this->analyser()
+ ),
+ self::UNCOVERED_FILES
+ );
+ }
+ }
+ }
+
+ /**
+ * @throws UnintentionallyCoveredCodeException
+ */
+ private function processUncoveredFilesFromFilter(): void
+ {
+ $uncoveredFiles = array_diff(
+ $this->filter->files(),
+ $this->data->coveredFiles()
+ );
+
+ $this->driver->start();
+
+ foreach ($uncoveredFiles as $uncoveredFile) {
+ if (is_file($uncoveredFile)) {
+ include_once $uncoveredFile;
+ }
+ }
+
+ $this->append($this->driver->stop(), self::UNCOVERED_FILES);
+ }
+
+ /**
+ * @throws ReflectionException
+ * @throws UnintentionallyCoveredCodeException
+ */
+ private function performUnintentionallyCoveredCodeCheck(RawCodeCoverageData $data, array $linesToBeCovered, array $linesToBeUsed): void
+ {
+ $allowedLines = $this->getAllowedLines(
+ $linesToBeCovered,
+ $linesToBeUsed
+ );
+
+ $unintentionallyCoveredUnits = [];
+
+ foreach ($data->lineCoverage() as $file => $_data) {
+ foreach ($_data as $line => $flag) {
+ if ($flag === 1 && !isset($allowedLines[$file][$line])) {
+ $unintentionallyCoveredUnits[] = $this->wizard->lookup($file, $line);
+ }
+ }
+ }
+
+ $unintentionallyCoveredUnits = $this->processUnintentionallyCoveredUnits($unintentionallyCoveredUnits);
+
+ if (!empty($unintentionallyCoveredUnits)) {
+ throw new UnintentionallyCoveredCodeException(
+ $unintentionallyCoveredUnits
+ );
+ }
+ }
+
+ private function getAllowedLines(array $linesToBeCovered, array $linesToBeUsed): array
+ {
+ $allowedLines = [];
+
+ foreach (array_keys($linesToBeCovered) as $file) {
+ if (!isset($allowedLines[$file])) {
+ $allowedLines[$file] = [];
+ }
+
+ $allowedLines[$file] = array_merge(
+ $allowedLines[$file],
+ $linesToBeCovered[$file]
+ );
+ }
+
+ foreach (array_keys($linesToBeUsed) as $file) {
+ if (!isset($allowedLines[$file])) {
+ $allowedLines[$file] = [];
+ }
+
+ $allowedLines[$file] = array_merge(
+ $allowedLines[$file],
+ $linesToBeUsed[$file]
+ );
+ }
+
+ foreach (array_keys($allowedLines) as $file) {
+ $allowedLines[$file] = array_flip(
+ array_unique($allowedLines[$file])
+ );
+ }
+
+ return $allowedLines;
+ }
+
+ /**
+ * @throws ReflectionException
+ */
+ private function processUnintentionallyCoveredUnits(array $unintentionallyCoveredUnits): array
+ {
+ $unintentionallyCoveredUnits = array_unique($unintentionallyCoveredUnits);
+ sort($unintentionallyCoveredUnits);
+
+ foreach (array_keys($unintentionallyCoveredUnits) as $k => $v) {
+ $unit = explode('::', $unintentionallyCoveredUnits[$k]);
+
+ if (count($unit) !== 2) {
+ continue;
+ }
+
+ try {
+ $class = new ReflectionClass($unit[0]);
+
+ foreach ($this->parentClassesExcludedFromUnintentionallyCoveredCodeCheck as $parentClass) {
+ if ($class->isSubclassOf($parentClass)) {
+ unset($unintentionallyCoveredUnits[$k]);
+
+ break;
+ }
+ }
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ }
+
+ return array_values($unintentionallyCoveredUnits);
+ }
+
+ private function analyser(): FileAnalyser
+ {
+ if ($this->analyser !== null) {
+ return $this->analyser;
+ }
+
+ $this->analyser = new ParsingFileAnalyser(
+ $this->useAnnotationsForIgnoringCode,
+ $this->ignoreDeprecatedCode
+ );
+
+ if ($this->cachesStaticAnalysis()) {
+ $this->analyser = new CachingFileAnalyser(
+ $this->cacheDirectory,
+ $this->analyser
+ );
+ }
+
+ return $this->analyser;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Driver.php b/vendor/phpunit/php-code-coverage/src/Driver/Driver.php
new file mode 100644
index 000000000..dc2de68f4
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/Driver.php
@@ -0,0 +1,167 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use function sprintf;
+use SebastianBergmann\CodeCoverage\BranchAndPathCoverageNotSupportedException;
+use SebastianBergmann\CodeCoverage\DeadCodeDetectionNotSupportedException;
+use SebastianBergmann\CodeCoverage\Filter;
+use SebastianBergmann\CodeCoverage\NoCodeCoverageDriverAvailableException;
+use SebastianBergmann\CodeCoverage\NoCodeCoverageDriverWithPathCoverageSupportAvailableException;
+use SebastianBergmann\CodeCoverage\RawCodeCoverageData;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+abstract class Driver
+{
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ public const LINE_NOT_EXECUTABLE = -2;
+
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ public const LINE_NOT_EXECUTED = -1;
+
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ public const LINE_EXECUTED = 1;
+
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ public const BRANCH_NOT_HIT = 0;
+
+ /**
+ * @var int
+ *
+ * @see http://xdebug.org/docs/code_coverage
+ */
+ public const BRANCH_HIT = 1;
+
+ /**
+ * @var bool
+ */
+ private $collectBranchAndPathCoverage = false;
+
+ /**
+ * @var bool
+ */
+ private $detectDeadCode = false;
+
+ /**
+ * @throws NoCodeCoverageDriverAvailableException
+ * @throws PcovNotAvailableException
+ * @throws PhpdbgNotAvailableException
+ * @throws Xdebug2NotEnabledException
+ * @throws Xdebug3NotEnabledException
+ * @throws XdebugNotAvailableException
+ *
+ * @deprecated Use DriverSelector::forLineCoverage() instead
+ */
+ public static function forLineCoverage(Filter $filter): self
+ {
+ return (new Selector)->forLineCoverage($filter);
+ }
+
+ /**
+ * @throws NoCodeCoverageDriverWithPathCoverageSupportAvailableException
+ * @throws Xdebug2NotEnabledException
+ * @throws Xdebug3NotEnabledException
+ * @throws XdebugNotAvailableException
+ *
+ * @deprecated Use DriverSelector::forLineAndPathCoverage() instead
+ */
+ public static function forLineAndPathCoverage(Filter $filter): self
+ {
+ return (new Selector)->forLineAndPathCoverage($filter);
+ }
+
+ public function canCollectBranchAndPathCoverage(): bool
+ {
+ return false;
+ }
+
+ public function collectsBranchAndPathCoverage(): bool
+ {
+ return $this->collectBranchAndPathCoverage;
+ }
+
+ /**
+ * @throws BranchAndPathCoverageNotSupportedException
+ */
+ public function enableBranchAndPathCoverage(): void
+ {
+ if (!$this->canCollectBranchAndPathCoverage()) {
+ throw new BranchAndPathCoverageNotSupportedException(
+ sprintf(
+ '%s does not support branch and path coverage',
+ $this->nameAndVersion()
+ )
+ );
+ }
+
+ $this->collectBranchAndPathCoverage = true;
+ }
+
+ public function disableBranchAndPathCoverage(): void
+ {
+ $this->collectBranchAndPathCoverage = false;
+ }
+
+ public function canDetectDeadCode(): bool
+ {
+ return false;
+ }
+
+ public function detectsDeadCode(): bool
+ {
+ return $this->detectDeadCode;
+ }
+
+ /**
+ * @throws DeadCodeDetectionNotSupportedException
+ */
+ public function enableDeadCodeDetection(): void
+ {
+ if (!$this->canDetectDeadCode()) {
+ throw new DeadCodeDetectionNotSupportedException(
+ sprintf(
+ '%s does not support dead code detection',
+ $this->nameAndVersion()
+ )
+ );
+ }
+
+ $this->detectDeadCode = true;
+ }
+
+ public function disableDeadCodeDetection(): void
+ {
+ $this->detectDeadCode = false;
+ }
+
+ abstract public function nameAndVersion(): string;
+
+ abstract public function start(): void;
+
+ abstract public function stop(): RawCodeCoverageData;
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/PcovDriver.php b/vendor/phpunit/php-code-coverage/src/Driver/PcovDriver.php
new file mode 100644
index 000000000..c30b30c44
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/PcovDriver.php
@@ -0,0 +1,75 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use const pcov\inclusive;
+use function array_intersect;
+use function extension_loaded;
+use function pcov\clear;
+use function pcov\collect;
+use function pcov\start;
+use function pcov\stop;
+use function pcov\waiting;
+use function phpversion;
+use SebastianBergmann\CodeCoverage\Filter;
+use SebastianBergmann\CodeCoverage\RawCodeCoverageData;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class PcovDriver extends Driver
+{
+ /**
+ * @var Filter
+ */
+ private $filter;
+
+ /**
+ * @throws PcovNotAvailableException
+ */
+ public function __construct(Filter $filter)
+ {
+ if (!extension_loaded('pcov')) {
+ throw new PcovNotAvailableException;
+ }
+
+ $this->filter = $filter;
+ }
+
+ public function start(): void
+ {
+ start();
+ }
+
+ public function stop(): RawCodeCoverageData
+ {
+ stop();
+
+ $filesToCollectCoverageFor = waiting();
+ $collected = [];
+
+ if ($filesToCollectCoverageFor) {
+ if (!$this->filter->isEmpty()) {
+ $filesToCollectCoverageFor = array_intersect($filesToCollectCoverageFor, $this->filter->files());
+ }
+
+ $collected = collect(inclusive, $filesToCollectCoverageFor);
+
+ clear();
+ }
+
+ return RawCodeCoverageData::fromXdebugWithoutPathCoverage($collected);
+ }
+
+ public function nameAndVersion(): string
+ {
+ return 'PCOV ' . phpversion('pcov');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php b/vendor/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php
new file mode 100644
index 000000000..7ee13b00f
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/PhpdbgDriver.php
@@ -0,0 +1,93 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use const PHP_SAPI;
+use const PHP_VERSION;
+use function array_diff;
+use function array_keys;
+use function array_merge;
+use function get_included_files;
+use function phpdbg_end_oplog;
+use function phpdbg_get_executable;
+use function phpdbg_start_oplog;
+use SebastianBergmann\CodeCoverage\RawCodeCoverageData;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class PhpdbgDriver extends Driver
+{
+ /**
+ * @throws PhpdbgNotAvailableException
+ */
+ public function __construct()
+ {
+ if (PHP_SAPI !== 'phpdbg') {
+ throw new PhpdbgNotAvailableException;
+ }
+ }
+
+ public function start(): void
+ {
+ phpdbg_start_oplog();
+ }
+
+ public function stop(): RawCodeCoverageData
+ {
+ static $fetchedLines = [];
+
+ $dbgData = phpdbg_end_oplog();
+
+ if ($fetchedLines === []) {
+ $sourceLines = phpdbg_get_executable();
+ } else {
+ $newFiles = array_diff(get_included_files(), array_keys($fetchedLines));
+
+ $sourceLines = [];
+
+ if ($newFiles) {
+ $sourceLines = phpdbg_get_executable(['files' => $newFiles]);
+ }
+ }
+
+ foreach ($sourceLines as $file => $lines) {
+ foreach ($lines as $lineNo => $numExecuted) {
+ $sourceLines[$file][$lineNo] = self::LINE_NOT_EXECUTED;
+ }
+ }
+
+ $fetchedLines = array_merge($fetchedLines, $sourceLines);
+
+ return RawCodeCoverageData::fromXdebugWithoutPathCoverage(
+ $this->detectExecutedLines($fetchedLines, $dbgData)
+ );
+ }
+
+ public function nameAndVersion(): string
+ {
+ return 'PHPDBG ' . PHP_VERSION;
+ }
+
+ private function detectExecutedLines(array $sourceLines, array $dbgData): array
+ {
+ foreach ($dbgData as $file => $coveredLines) {
+ foreach ($coveredLines as $lineNo => $numExecuted) {
+ // phpdbg also reports $lineNo=0 when e.g. exceptions get thrown.
+ // make sure we only mark lines executed which are actually executable.
+ if (isset($sourceLines[$file][$lineNo])) {
+ $sourceLines[$file][$lineNo] = self::LINE_EXECUTED;
+ }
+ }
+ }
+
+ return $sourceLines;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Selector.php b/vendor/phpunit/php-code-coverage/src/Driver/Selector.php
new file mode 100644
index 000000000..936ee8981
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/Selector.php
@@ -0,0 +1,79 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use function phpversion;
+use function version_compare;
+use SebastianBergmann\CodeCoverage\Filter;
+use SebastianBergmann\CodeCoverage\NoCodeCoverageDriverAvailableException;
+use SebastianBergmann\CodeCoverage\NoCodeCoverageDriverWithPathCoverageSupportAvailableException;
+use SebastianBergmann\Environment\Runtime;
+
+final class Selector
+{
+ /**
+ * @throws NoCodeCoverageDriverAvailableException
+ * @throws PcovNotAvailableException
+ * @throws PhpdbgNotAvailableException
+ * @throws Xdebug2NotEnabledException
+ * @throws Xdebug3NotEnabledException
+ * @throws XdebugNotAvailableException
+ */
+ public function forLineCoverage(Filter $filter): Driver
+ {
+ $runtime = new Runtime;
+
+ if ($runtime->hasPHPDBGCodeCoverage()) {
+ return new PhpdbgDriver;
+ }
+
+ if ($runtime->hasPCOV()) {
+ return new PcovDriver($filter);
+ }
+
+ if ($runtime->hasXdebug()) {
+ if (version_compare(phpversion('xdebug'), '3', '>=')) {
+ $driver = new Xdebug3Driver($filter);
+ } else {
+ $driver = new Xdebug2Driver($filter);
+ }
+
+ $driver->enableDeadCodeDetection();
+
+ return $driver;
+ }
+
+ throw new NoCodeCoverageDriverAvailableException;
+ }
+
+ /**
+ * @throws NoCodeCoverageDriverWithPathCoverageSupportAvailableException
+ * @throws Xdebug2NotEnabledException
+ * @throws Xdebug3NotEnabledException
+ * @throws XdebugNotAvailableException
+ */
+ public function forLineAndPathCoverage(Filter $filter): Driver
+ {
+ if ((new Runtime)->hasXdebug()) {
+ if (version_compare(phpversion('xdebug'), '3', '>=')) {
+ $driver = new Xdebug3Driver($filter);
+ } else {
+ $driver = new Xdebug2Driver($filter);
+ }
+
+ $driver->enableDeadCodeDetection();
+ $driver->enableBranchAndPathCoverage();
+
+ return $driver;
+ }
+
+ throw new NoCodeCoverageDriverWithPathCoverageSupportAvailableException;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php b/vendor/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php
new file mode 100644
index 000000000..74cbbfbcd
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/Xdebug2Driver.php
@@ -0,0 +1,128 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use const XDEBUG_CC_BRANCH_CHECK;
+use const XDEBUG_CC_DEAD_CODE;
+use const XDEBUG_CC_UNUSED;
+use const XDEBUG_FILTER_CODE_COVERAGE;
+use const XDEBUG_PATH_INCLUDE;
+use const XDEBUG_PATH_WHITELIST;
+use function defined;
+use function extension_loaded;
+use function ini_get;
+use function phpversion;
+use function sprintf;
+use function version_compare;
+use function xdebug_get_code_coverage;
+use function xdebug_set_filter;
+use function xdebug_start_code_coverage;
+use function xdebug_stop_code_coverage;
+use SebastianBergmann\CodeCoverage\Filter;
+use SebastianBergmann\CodeCoverage\RawCodeCoverageData;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Xdebug2Driver extends Driver
+{
+ /**
+ * @var bool
+ */
+ private $pathCoverageIsMixedCoverage;
+
+ /**
+ * @throws WrongXdebugVersionException
+ * @throws Xdebug2NotEnabledException
+ * @throws XdebugNotAvailableException
+ */
+ public function __construct(Filter $filter)
+ {
+ if (!extension_loaded('xdebug')) {
+ throw new XdebugNotAvailableException;
+ }
+
+ if (version_compare(phpversion('xdebug'), '3', '>=')) {
+ throw new WrongXdebugVersionException(
+ sprintf(
+ 'This driver requires Xdebug 2 but version %s is loaded',
+ phpversion('xdebug')
+ )
+ );
+ }
+
+ if (!ini_get('xdebug.coverage_enable')) {
+ throw new Xdebug2NotEnabledException;
+ }
+
+ if (!$filter->isEmpty()) {
+ if (defined('XDEBUG_PATH_WHITELIST')) {
+ $listType = XDEBUG_PATH_WHITELIST;
+ } else {
+ $listType = XDEBUG_PATH_INCLUDE;
+ }
+
+ xdebug_set_filter(
+ XDEBUG_FILTER_CODE_COVERAGE,
+ $listType,
+ $filter->files()
+ );
+ }
+
+ $this->pathCoverageIsMixedCoverage = version_compare(phpversion('xdebug'), '2.9.6', '<');
+ }
+
+ public function canCollectBranchAndPathCoverage(): bool
+ {
+ return true;
+ }
+
+ public function canDetectDeadCode(): bool
+ {
+ return true;
+ }
+
+ public function start(): void
+ {
+ $flags = XDEBUG_CC_UNUSED;
+
+ if ($this->detectsDeadCode() || $this->collectsBranchAndPathCoverage()) {
+ $flags |= XDEBUG_CC_DEAD_CODE;
+ }
+
+ if ($this->collectsBranchAndPathCoverage()) {
+ $flags |= XDEBUG_CC_BRANCH_CHECK;
+ }
+
+ xdebug_start_code_coverage($flags);
+ }
+
+ public function stop(): RawCodeCoverageData
+ {
+ $data = xdebug_get_code_coverage();
+
+ xdebug_stop_code_coverage();
+
+ if ($this->collectsBranchAndPathCoverage()) {
+ if ($this->pathCoverageIsMixedCoverage) {
+ return RawCodeCoverageData::fromXdebugWithMixedCoverage($data);
+ }
+
+ return RawCodeCoverageData::fromXdebugWithPathCoverage($data);
+ }
+
+ return RawCodeCoverageData::fromXdebugWithoutPathCoverage($data);
+ }
+
+ public function nameAndVersion(): string
+ {
+ return 'Xdebug ' . phpversion('xdebug');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php b/vendor/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php
new file mode 100644
index 000000000..b85db4034
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Driver/Xdebug3Driver.php
@@ -0,0 +1,119 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use const XDEBUG_CC_BRANCH_CHECK;
+use const XDEBUG_CC_DEAD_CODE;
+use const XDEBUG_CC_UNUSED;
+use const XDEBUG_FILTER_CODE_COVERAGE;
+use const XDEBUG_PATH_INCLUDE;
+use function explode;
+use function extension_loaded;
+use function getenv;
+use function in_array;
+use function ini_get;
+use function phpversion;
+use function sprintf;
+use function version_compare;
+use function xdebug_get_code_coverage;
+use function xdebug_set_filter;
+use function xdebug_start_code_coverage;
+use function xdebug_stop_code_coverage;
+use SebastianBergmann\CodeCoverage\Filter;
+use SebastianBergmann\CodeCoverage\RawCodeCoverageData;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Xdebug3Driver extends Driver
+{
+ /**
+ * @throws WrongXdebugVersionException
+ * @throws Xdebug3NotEnabledException
+ * @throws XdebugNotAvailableException
+ */
+ public function __construct(Filter $filter)
+ {
+ if (!extension_loaded('xdebug')) {
+ throw new XdebugNotAvailableException;
+ }
+
+ if (version_compare(phpversion('xdebug'), '3', '<')) {
+ throw new WrongXdebugVersionException(
+ sprintf(
+ 'This driver requires Xdebug 3 but version %s is loaded',
+ phpversion('xdebug')
+ )
+ );
+ }
+
+ $mode = getenv('XDEBUG_MODE');
+
+ if ($mode === false || $mode === '') {
+ $mode = ini_get('xdebug.mode');
+ }
+
+ if ($mode === false ||
+ !in_array('coverage', explode(',', $mode), true)) {
+ throw new Xdebug3NotEnabledException;
+ }
+
+ if (!$filter->isEmpty()) {
+ xdebug_set_filter(
+ XDEBUG_FILTER_CODE_COVERAGE,
+ XDEBUG_PATH_INCLUDE,
+ $filter->files()
+ );
+ }
+ }
+
+ public function canCollectBranchAndPathCoverage(): bool
+ {
+ return true;
+ }
+
+ public function canDetectDeadCode(): bool
+ {
+ return true;
+ }
+
+ public function start(): void
+ {
+ $flags = XDEBUG_CC_UNUSED;
+
+ if ($this->detectsDeadCode() || $this->collectsBranchAndPathCoverage()) {
+ $flags |= XDEBUG_CC_DEAD_CODE;
+ }
+
+ if ($this->collectsBranchAndPathCoverage()) {
+ $flags |= XDEBUG_CC_BRANCH_CHECK;
+ }
+
+ xdebug_start_code_coverage($flags);
+ }
+
+ public function stop(): RawCodeCoverageData
+ {
+ $data = xdebug_get_code_coverage();
+
+ xdebug_stop_code_coverage();
+
+ if ($this->collectsBranchAndPathCoverage()) {
+ return RawCodeCoverageData::fromXdebugWithPathCoverage($data);
+ }
+
+ return RawCodeCoverageData::fromXdebugWithoutPathCoverage($data);
+ }
+
+ public function nameAndVersion(): string
+ {
+ return 'Xdebug ' . phpversion('xdebug');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php b/vendor/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php
new file mode 100644
index 000000000..ab2089197
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/BranchAndPathCoverageNotSupportedException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class BranchAndPathCoverageNotSupportedException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php b/vendor/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php
new file mode 100644
index 000000000..d36006489
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/DeadCodeDetectionNotSupportedException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class DeadCodeDetectionNotSupportedException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php b/vendor/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php
new file mode 100644
index 000000000..fdd9bfdf1
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/DirectoryCouldNotBeCreatedException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Util;
+
+use RuntimeException;
+use SebastianBergmann\CodeCoverage\Exception;
+
+final class DirectoryCouldNotBeCreatedException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/Exception.php b/vendor/phpunit/php-code-coverage/src/Exception/Exception.php
new file mode 100644
index 000000000..28dc48b8a
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php b/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php
new file mode 100644
index 000000000..17e4b7076
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+final class InvalidArgumentException extends \InvalidArgumentException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php b/vendor/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php
new file mode 100644
index 000000000..b1494e267
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverAvailableException.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class NoCodeCoverageDriverAvailableException extends RuntimeException implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('No code coverage driver available');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php b/vendor/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php
new file mode 100644
index 000000000..0065b740d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/NoCodeCoverageDriverWithPathCoverageSupportAvailableException.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class NoCodeCoverageDriverWithPathCoverageSupportAvailableException extends RuntimeException implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('No code coverage driver with path coverage support available');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/ParserException.php b/vendor/phpunit/php-code-coverage/src/Exception/ParserException.php
new file mode 100644
index 000000000..a907e34e8
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/ParserException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class ParserException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php b/vendor/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php
new file mode 100644
index 000000000..54bd73f58
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/PathExistsButIsNotDirectoryException.php
@@ -0,0 +1,22 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use function sprintf;
+use RuntimeException;
+use SebastianBergmann\CodeCoverage\Exception;
+
+final class PathExistsButIsNotDirectoryException extends RuntimeException implements Exception
+{
+ public function __construct(string $path)
+ {
+ parent::__construct(sprintf('"%s" exists but is not a directory', $path));
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php b/vendor/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php
new file mode 100644
index 000000000..2f0a66e5a
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/PcovNotAvailableException.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use RuntimeException;
+use SebastianBergmann\CodeCoverage\Exception;
+
+final class PcovNotAvailableException extends RuntimeException implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('The PCOV extension is not available');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php b/vendor/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php
new file mode 100644
index 000000000..bfb183d5c
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/PhpdbgNotAvailableException.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use RuntimeException;
+use SebastianBergmann\CodeCoverage\Exception;
+
+final class PhpdbgNotAvailableException extends RuntimeException implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('The PHPDBG SAPI is not available');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/ReflectionException.php b/vendor/phpunit/php-code-coverage/src/Exception/ReflectionException.php
new file mode 100644
index 000000000..78db430be
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/ReflectionException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class ReflectionException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php b/vendor/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php
new file mode 100644
index 000000000..0481f1610
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/ReportAlreadyFinalizedException.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class ReportAlreadyFinalizedException extends RuntimeException implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('The code coverage report has already been finalized');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php b/vendor/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php
new file mode 100644
index 000000000..fd58fd6b6
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/StaticAnalysisCacheNotConfiguredException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class StaticAnalysisCacheNotConfiguredException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php b/vendor/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php
new file mode 100644
index 000000000..4cc3e0c2b
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/TestIdMissingException.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class TestIdMissingException extends RuntimeException implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('Test ID is missing');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php b/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php
new file mode 100644
index 000000000..cb7a975f7
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class UnintentionallyCoveredCodeException extends RuntimeException implements Exception
+{
+ /**
+ * @var array
+ */
+ private $unintentionallyCoveredUnits;
+
+ public function __construct(array $unintentionallyCoveredUnits)
+ {
+ $this->unintentionallyCoveredUnits = $unintentionallyCoveredUnits;
+
+ parent::__construct($this->toString());
+ }
+
+ public function getUnintentionallyCoveredUnits(): array
+ {
+ return $this->unintentionallyCoveredUnits;
+ }
+
+ private function toString(): string
+ {
+ $message = '';
+
+ foreach ($this->unintentionallyCoveredUnits as $unit) {
+ $message .= '- ' . $unit . "\n";
+ }
+
+ return $message;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php b/vendor/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php
new file mode 100644
index 000000000..be549e17b
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/WriteOperationFailedException.php
@@ -0,0 +1,22 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use function sprintf;
+use RuntimeException;
+use SebastianBergmann\CodeCoverage\Exception;
+
+final class WriteOperationFailedException extends RuntimeException implements Exception
+{
+ public function __construct(string $path)
+ {
+ parent::__construct(sprintf('Cannot write to "%s"', $path));
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php b/vendor/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php
new file mode 100644
index 000000000..6e8f10a92
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/WrongXdebugVersionException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use RuntimeException;
+use SebastianBergmann\CodeCoverage\Exception;
+
+final class WrongXdebugVersionException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php b/vendor/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php
new file mode 100644
index 000000000..3039e77c0
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/Xdebug2NotEnabledException.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use RuntimeException;
+use SebastianBergmann\CodeCoverage\Exception;
+
+final class Xdebug2NotEnabledException extends RuntimeException implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('xdebug.coverage_enable=On has to be set');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php b/vendor/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php
new file mode 100644
index 000000000..5d3b106ce
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/Xdebug3NotEnabledException.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use RuntimeException;
+use SebastianBergmann\CodeCoverage\Exception;
+
+final class Xdebug3NotEnabledException extends RuntimeException implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('XDEBUG_MODE=coverage or xdebug.mode=coverage has to be set');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php b/vendor/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php
new file mode 100644
index 000000000..1622c5a63
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/XdebugNotAvailableException.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Driver;
+
+use RuntimeException;
+use SebastianBergmann\CodeCoverage\Exception;
+
+final class XdebugNotAvailableException extends RuntimeException implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('The Xdebug extension is not available');
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Exception/XmlException.php b/vendor/phpunit/php-code-coverage/src/Exception/XmlException.php
new file mode 100644
index 000000000..31e4623df
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Exception/XmlException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use RuntimeException;
+
+final class XmlException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Filter.php b/vendor/phpunit/php-code-coverage/src/Filter.php
new file mode 100644
index 000000000..ef0a2c62f
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Filter.php
@@ -0,0 +1,122 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use function array_keys;
+use function is_file;
+use function realpath;
+use function strpos;
+use SebastianBergmann\FileIterator\Facade as FileIteratorFacade;
+
+final class Filter
+{
+ /**
+ * @psalm-var array<string,true>
+ */
+ private $files = [];
+
+ /**
+ * @psalm-var array<string,bool>
+ */
+ private $isFileCache = [];
+
+ public function includeDirectory(string $directory, string $suffix = '.php', string $prefix = ''): void
+ {
+ foreach ((new FileIteratorFacade)->getFilesAsArray($directory, $suffix, $prefix) as $file) {
+ $this->includeFile($file);
+ }
+ }
+
+ /**
+ * @psalm-param list<string> $files
+ */
+ public function includeFiles(array $filenames): void
+ {
+ foreach ($filenames as $filename) {
+ $this->includeFile($filename);
+ }
+ }
+
+ public function includeFile(string $filename): void
+ {
+ $filename = realpath($filename);
+
+ if (!$filename) {
+ return;
+ }
+
+ $this->files[$filename] = true;
+ }
+
+ public function excludeDirectory(string $directory, string $suffix = '.php', string $prefix = ''): void
+ {
+ foreach ((new FileIteratorFacade)->getFilesAsArray($directory, $suffix, $prefix) as $file) {
+ $this->excludeFile($file);
+ }
+ }
+
+ public function excludeFile(string $filename): void
+ {
+ $filename = realpath($filename);
+
+ if (!$filename || !isset($this->files[$filename])) {
+ return;
+ }
+
+ unset($this->files[$filename]);
+ }
+
+ public function isFile(string $filename): bool
+ {
+ if (isset($this->isFileCache[$filename])) {
+ return $this->isFileCache[$filename];
+ }
+
+ if ($filename === '-' ||
+ strpos($filename, 'vfs://') === 0 ||
+ strpos($filename, 'xdebug://debug-eval') !== false ||
+ strpos($filename, 'eval()\'d code') !== false ||
+ strpos($filename, 'runtime-created function') !== false ||
+ strpos($filename, 'runkit created function') !== false ||
+ strpos($filename, 'assert code') !== false ||
+ strpos($filename, 'regexp code') !== false ||
+ strpos($filename, 'Standard input code') !== false) {
+ $isFile = false;
+ } else {
+ $isFile = is_file($filename);
+ }
+
+ $this->isFileCache[$filename] = $isFile;
+
+ return $isFile;
+ }
+
+ public function isExcluded(string $filename): bool
+ {
+ if (!$this->isFile($filename)) {
+ return true;
+ }
+
+ return !isset($this->files[$filename]);
+ }
+
+ /**
+ * @psalm-return list<string>
+ */
+ public function files(): array
+ {
+ return array_keys($this->files);
+ }
+
+ public function isEmpty(): bool
+ {
+ return empty($this->files);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php b/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php
new file mode 100644
index 000000000..60d6391d3
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php
@@ -0,0 +1,253 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use const DIRECTORY_SEPARATOR;
+use function array_merge;
+use function str_replace;
+use function substr;
+use Countable;
+use SebastianBergmann\CodeCoverage\Util\Percentage;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+abstract class AbstractNode implements Countable
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var string
+ */
+ private $pathAsString;
+
+ /**
+ * @var array
+ */
+ private $pathAsArray;
+
+ /**
+ * @var AbstractNode
+ */
+ private $parent;
+
+ /**
+ * @var string
+ */
+ private $id;
+
+ public function __construct(string $name, self $parent = null)
+ {
+ if (substr($name, -1) === DIRECTORY_SEPARATOR) {
+ $name = substr($name, 0, -1);
+ }
+
+ $this->name = $name;
+ $this->parent = $parent;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function id(): string
+ {
+ if ($this->id === null) {
+ $parent = $this->parent();
+
+ if ($parent === null) {
+ $this->id = 'index';
+ } else {
+ $parentId = $parent->id();
+
+ if ($parentId === 'index') {
+ $this->id = str_replace(':', '_', $this->name);
+ } else {
+ $this->id = $parentId . '/' . $this->name;
+ }
+ }
+ }
+
+ return $this->id;
+ }
+
+ public function pathAsString(): string
+ {
+ if ($this->pathAsString === null) {
+ if ($this->parent === null) {
+ $this->pathAsString = $this->name;
+ } else {
+ $this->pathAsString = $this->parent->pathAsString() . DIRECTORY_SEPARATOR . $this->name;
+ }
+ }
+
+ return $this->pathAsString;
+ }
+
+ public function pathAsArray(): array
+ {
+ if ($this->pathAsArray === null) {
+ if ($this->parent === null) {
+ $this->pathAsArray = [];
+ } else {
+ $this->pathAsArray = $this->parent->pathAsArray();
+ }
+
+ $this->pathAsArray[] = $this;
+ }
+
+ return $this->pathAsArray;
+ }
+
+ public function parent(): ?self
+ {
+ return $this->parent;
+ }
+
+ public function percentageOfTestedClasses(): Percentage
+ {
+ return Percentage::fromFractionAndTotal(
+ $this->numberOfTestedClasses(),
+ $this->numberOfClasses(),
+ );
+ }
+
+ public function percentageOfTestedTraits(): Percentage
+ {
+ return Percentage::fromFractionAndTotal(
+ $this->numberOfTestedTraits(),
+ $this->numberOfTraits(),
+ );
+ }
+
+ public function percentageOfTestedClassesAndTraits(): Percentage
+ {
+ return Percentage::fromFractionAndTotal(
+ $this->numberOfTestedClassesAndTraits(),
+ $this->numberOfClassesAndTraits(),
+ );
+ }
+
+ public function percentageOfTestedFunctions(): Percentage
+ {
+ return Percentage::fromFractionAndTotal(
+ $this->numberOfTestedFunctions(),
+ $this->numberOfFunctions(),
+ );
+ }
+
+ public function percentageOfTestedMethods(): Percentage
+ {
+ return Percentage::fromFractionAndTotal(
+ $this->numberOfTestedMethods(),
+ $this->numberOfMethods(),
+ );
+ }
+
+ public function percentageOfTestedFunctionsAndMethods(): Percentage
+ {
+ return Percentage::fromFractionAndTotal(
+ $this->numberOfTestedFunctionsAndMethods(),
+ $this->numberOfFunctionsAndMethods(),
+ );
+ }
+
+ public function percentageOfExecutedLines(): Percentage
+ {
+ return Percentage::fromFractionAndTotal(
+ $this->numberOfExecutedLines(),
+ $this->numberOfExecutableLines(),
+ );
+ }
+
+ public function percentageOfExecutedBranches(): Percentage
+ {
+ return Percentage::fromFractionAndTotal(
+ $this->numberOfExecutedBranches(),
+ $this->numberOfExecutableBranches()
+ );
+ }
+
+ public function percentageOfExecutedPaths(): Percentage
+ {
+ return Percentage::fromFractionAndTotal(
+ $this->numberOfExecutedPaths(),
+ $this->numberOfExecutablePaths()
+ );
+ }
+
+ public function numberOfClassesAndTraits(): int
+ {
+ return $this->numberOfClasses() + $this->numberOfTraits();
+ }
+
+ public function numberOfTestedClassesAndTraits(): int
+ {
+ return $this->numberOfTestedClasses() + $this->numberOfTestedTraits();
+ }
+
+ public function classesAndTraits(): array
+ {
+ return array_merge($this->classes(), $this->traits());
+ }
+
+ public function numberOfFunctionsAndMethods(): int
+ {
+ return $this->numberOfFunctions() + $this->numberOfMethods();
+ }
+
+ public function numberOfTestedFunctionsAndMethods(): int
+ {
+ return $this->numberOfTestedFunctions() + $this->numberOfTestedMethods();
+ }
+
+ abstract public function classes(): array;
+
+ abstract public function traits(): array;
+
+ abstract public function functions(): array;
+
+ /**
+ * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}
+ */
+ abstract public function linesOfCode(): array;
+
+ abstract public function numberOfExecutableLines(): int;
+
+ abstract public function numberOfExecutedLines(): int;
+
+ abstract public function numberOfExecutableBranches(): int;
+
+ abstract public function numberOfExecutedBranches(): int;
+
+ abstract public function numberOfExecutablePaths(): int;
+
+ abstract public function numberOfExecutedPaths(): int;
+
+ abstract public function numberOfClasses(): int;
+
+ abstract public function numberOfTestedClasses(): int;
+
+ abstract public function numberOfTraits(): int;
+
+ abstract public function numberOfTestedTraits(): int;
+
+ abstract public function numberOfMethods(): int;
+
+ abstract public function numberOfTestedMethods(): int;
+
+ abstract public function numberOfFunctions(): int;
+
+ abstract public function numberOfTestedFunctions(): int;
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/Builder.php b/vendor/phpunit/php-code-coverage/src/Node/Builder.php
new file mode 100644
index 000000000..6d11c7798
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/Builder.php
@@ -0,0 +1,264 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use const DIRECTORY_SEPARATOR;
+use function array_shift;
+use function basename;
+use function count;
+use function dirname;
+use function explode;
+use function implode;
+use function is_file;
+use function str_replace;
+use function strpos;
+use function substr;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData;
+use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Builder
+{
+ /**
+ * @var FileAnalyser
+ */
+ private $analyser;
+
+ public function __construct(FileAnalyser $analyser)
+ {
+ $this->analyser = $analyser;
+ }
+
+ public function build(CodeCoverage $coverage): Directory
+ {
+ $data = clone $coverage->getData(); // clone because path munging is destructive to the original data
+ $commonPath = $this->reducePaths($data);
+ $root = new Directory(
+ $commonPath,
+ null
+ );
+
+ $this->addItems(
+ $root,
+ $this->buildDirectoryStructure($data),
+ $coverage->getTests()
+ );
+
+ return $root;
+ }
+
+ private function addItems(Directory $root, array $items, array $tests): void
+ {
+ foreach ($items as $key => $value) {
+ $key = (string) $key;
+
+ if (substr($key, -2) === '/f') {
+ $key = substr($key, 0, -2);
+ $filename = $root->pathAsString() . DIRECTORY_SEPARATOR . $key;
+
+ if (is_file($filename)) {
+ $root->addFile(
+ new File(
+ $key,
+ $root,
+ $value['lineCoverage'],
+ $value['functionCoverage'],
+ $tests,
+ $this->analyser->classesIn($filename),
+ $this->analyser->traitsIn($filename),
+ $this->analyser->functionsIn($filename),
+ $this->analyser->linesOfCodeFor($filename)
+ )
+ );
+ }
+ } else {
+ $child = $root->addDirectory($key);
+
+ $this->addItems($child, $value, $tests);
+ }
+ }
+ }
+
+ /**
+ * Builds an array representation of the directory structure.
+ *
+ * For instance,
+ *
+ * <code>
+ * Array
+ * (
+ * [Money.php] => Array
+ * (
+ * ...
+ * )
+ *
+ * [MoneyBag.php] => Array
+ * (
+ * ...
+ * )
+ * )
+ * </code>
+ *
+ * is transformed into
+ *
+ * <code>
+ * Array
+ * (
+ * [.] => Array
+ * (
+ * [Money.php] => Array
+ * (
+ * ...
+ * )
+ *
+ * [MoneyBag.php] => Array
+ * (
+ * ...
+ * )
+ * )
+ * )
+ * </code>
+ */
+ private function buildDirectoryStructure(ProcessedCodeCoverageData $data): array
+ {
+ $result = [];
+
+ foreach ($data->coveredFiles() as $originalPath) {
+ $path = explode(DIRECTORY_SEPARATOR, $originalPath);
+ $pointer = &$result;
+ $max = count($path);
+
+ for ($i = 0; $i < $max; $i++) {
+ $type = '';
+
+ if ($i === ($max - 1)) {
+ $type = '/f';
+ }
+
+ $pointer = &$pointer[$path[$i] . $type];
+ }
+
+ $pointer = [
+ 'lineCoverage' => $data->lineCoverage()[$originalPath] ?? [],
+ 'functionCoverage' => $data->functionCoverage()[$originalPath] ?? [],
+ ];
+ }
+
+ return $result;
+ }
+
+ /**
+ * Reduces the paths by cutting the longest common start path.
+ *
+ * For instance,
+ *
+ * <code>
+ * Array
+ * (
+ * [/home/sb/Money/Money.php] => Array
+ * (
+ * ...
+ * )
+ *
+ * [/home/sb/Money/MoneyBag.php] => Array
+ * (
+ * ...
+ * )
+ * )
+ * </code>
+ *
+ * is reduced to
+ *
+ * <code>
+ * Array
+ * (
+ * [Money.php] => Array
+ * (
+ * ...
+ * )
+ *
+ * [MoneyBag.php] => Array
+ * (
+ * ...
+ * )
+ * )
+ * </code>
+ */
+ private function reducePaths(ProcessedCodeCoverageData $coverage): string
+ {
+ if (empty($coverage->coveredFiles())) {
+ return '.';
+ }
+
+ $commonPath = '';
+ $paths = $coverage->coveredFiles();
+
+ if (count($paths) === 1) {
+ $commonPath = dirname($paths[0]) . DIRECTORY_SEPARATOR;
+ $coverage->renameFile($paths[0], basename($paths[0]));
+
+ return $commonPath;
+ }
+
+ $max = count($paths);
+
+ for ($i = 0; $i < $max; $i++) {
+ // strip phar:// prefixes
+ if (strpos($paths[$i], 'phar://') === 0) {
+ $paths[$i] = substr($paths[$i], 7);
+ $paths[$i] = str_replace('/', DIRECTORY_SEPARATOR, $paths[$i]);
+ }
+ $paths[$i] = explode(DIRECTORY_SEPARATOR, $paths[$i]);
+
+ if (empty($paths[$i][0])) {
+ $paths[$i][0] = DIRECTORY_SEPARATOR;
+ }
+ }
+
+ $done = false;
+ $max = count($paths);
+
+ while (!$done) {
+ for ($i = 0; $i < $max - 1; $i++) {
+ if (!isset($paths[$i][0]) ||
+ !isset($paths[$i + 1][0]) ||
+ $paths[$i][0] !== $paths[$i + 1][0]) {
+ $done = true;
+
+ break;
+ }
+ }
+
+ if (!$done) {
+ $commonPath .= $paths[0][0];
+
+ if ($paths[0][0] !== DIRECTORY_SEPARATOR) {
+ $commonPath .= DIRECTORY_SEPARATOR;
+ }
+
+ for ($i = 0; $i < $max; $i++) {
+ array_shift($paths[$i]);
+ }
+ }
+ }
+
+ $original = $coverage->coveredFiles();
+ $max = count($original);
+
+ for ($i = 0; $i < $max; $i++) {
+ $coverage->renameFile($original[$i], implode(DIRECTORY_SEPARATOR, $paths[$i]));
+ }
+
+ return substr($commonPath, 0, -1);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/CrapIndex.php b/vendor/phpunit/php-code-coverage/src/Node/CrapIndex.php
new file mode 100644
index 000000000..30b86b7d2
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/CrapIndex.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class CrapIndex
+{
+ /**
+ * @var int
+ */
+ private $cyclomaticComplexity;
+
+ /**
+ * @var float
+ */
+ private $codeCoverage;
+
+ public function __construct(int $cyclomaticComplexity, float $codeCoverage)
+ {
+ $this->cyclomaticComplexity = $cyclomaticComplexity;
+ $this->codeCoverage = $codeCoverage;
+ }
+
+ public function asString(): string
+ {
+ if ($this->codeCoverage === 0.0) {
+ return (string) ($this->cyclomaticComplexity ** 2 + $this->cyclomaticComplexity);
+ }
+
+ if ($this->codeCoverage >= 95) {
+ return (string) $this->cyclomaticComplexity;
+ }
+
+ return sprintf(
+ '%01.2F',
+ $this->cyclomaticComplexity ** 2 * (1 - $this->codeCoverage / 100) ** 3 + $this->cyclomaticComplexity
+ );
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/Directory.php b/vendor/phpunit/php-code-coverage/src/Node/Directory.php
new file mode 100644
index 000000000..d6ee07e4d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/Directory.php
@@ -0,0 +1,440 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use function array_merge;
+use function count;
+use IteratorAggregate;
+use RecursiveIteratorIterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Directory extends AbstractNode implements IteratorAggregate
+{
+ /**
+ * @var AbstractNode[]
+ */
+ private $children = [];
+
+ /**
+ * @var Directory[]
+ */
+ private $directories = [];
+
+ /**
+ * @var File[]
+ */
+ private $files = [];
+
+ /**
+ * @var array
+ */
+ private $classes;
+
+ /**
+ * @var array
+ */
+ private $traits;
+
+ /**
+ * @var array
+ */
+ private $functions;
+
+ /**
+ * @psalm-var null|array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}
+ */
+ private $linesOfCode;
+
+ /**
+ * @var int
+ */
+ private $numFiles = -1;
+
+ /**
+ * @var int
+ */
+ private $numExecutableLines = -1;
+
+ /**
+ * @var int
+ */
+ private $numExecutedLines = -1;
+
+ /**
+ * @var int
+ */
+ private $numExecutableBranches = -1;
+
+ /**
+ * @var int
+ */
+ private $numExecutedBranches = -1;
+
+ /**
+ * @var int
+ */
+ private $numExecutablePaths = -1;
+
+ /**
+ * @var int
+ */
+ private $numExecutedPaths = -1;
+
+ /**
+ * @var int
+ */
+ private $numClasses = -1;
+
+ /**
+ * @var int
+ */
+ private $numTestedClasses = -1;
+
+ /**
+ * @var int
+ */
+ private $numTraits = -1;
+
+ /**
+ * @var int
+ */
+ private $numTestedTraits = -1;
+
+ /**
+ * @var int
+ */
+ private $numMethods = -1;
+
+ /**
+ * @var int
+ */
+ private $numTestedMethods = -1;
+
+ /**
+ * @var int
+ */
+ private $numFunctions = -1;
+
+ /**
+ * @var int
+ */
+ private $numTestedFunctions = -1;
+
+ public function count(): int
+ {
+ if ($this->numFiles === -1) {
+ $this->numFiles = 0;
+
+ foreach ($this->children as $child) {
+ $this->numFiles += count($child);
+ }
+ }
+
+ return $this->numFiles;
+ }
+
+ public function getIterator(): RecursiveIteratorIterator
+ {
+ return new RecursiveIteratorIterator(
+ new Iterator($this),
+ RecursiveIteratorIterator::SELF_FIRST
+ );
+ }
+
+ public function addDirectory(string $name): self
+ {
+ $directory = new self($name, $this);
+
+ $this->children[] = $directory;
+ $this->directories[] = &$this->children[count($this->children) - 1];
+
+ return $directory;
+ }
+
+ public function addFile(File $file): void
+ {
+ $this->children[] = $file;
+ $this->files[] = &$this->children[count($this->children) - 1];
+
+ $this->numExecutableLines = -1;
+ $this->numExecutedLines = -1;
+ }
+
+ public function directories(): array
+ {
+ return $this->directories;
+ }
+
+ public function files(): array
+ {
+ return $this->files;
+ }
+
+ public function children(): array
+ {
+ return $this->children;
+ }
+
+ public function classes(): array
+ {
+ if ($this->classes === null) {
+ $this->classes = [];
+
+ foreach ($this->children as $child) {
+ $this->classes = array_merge(
+ $this->classes,
+ $child->classes()
+ );
+ }
+ }
+
+ return $this->classes;
+ }
+
+ public function traits(): array
+ {
+ if ($this->traits === null) {
+ $this->traits = [];
+
+ foreach ($this->children as $child) {
+ $this->traits = array_merge(
+ $this->traits,
+ $child->traits()
+ );
+ }
+ }
+
+ return $this->traits;
+ }
+
+ public function functions(): array
+ {
+ if ($this->functions === null) {
+ $this->functions = [];
+
+ foreach ($this->children as $child) {
+ $this->functions = array_merge(
+ $this->functions,
+ $child->functions()
+ );
+ }
+ }
+
+ return $this->functions;
+ }
+
+ /**
+ * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}
+ */
+ public function linesOfCode(): array
+ {
+ if ($this->linesOfCode === null) {
+ $this->linesOfCode = [
+ 'linesOfCode' => 0,
+ 'commentLinesOfCode' => 0,
+ 'nonCommentLinesOfCode' => 0,
+ ];
+
+ foreach ($this->children as $child) {
+ $childLinesOfCode = $child->linesOfCode();
+
+ $this->linesOfCode['linesOfCode'] += $childLinesOfCode['linesOfCode'];
+ $this->linesOfCode['commentLinesOfCode'] += $childLinesOfCode['commentLinesOfCode'];
+ $this->linesOfCode['nonCommentLinesOfCode'] += $childLinesOfCode['nonCommentLinesOfCode'];
+ }
+ }
+
+ return $this->linesOfCode;
+ }
+
+ public function numberOfExecutableLines(): int
+ {
+ if ($this->numExecutableLines === -1) {
+ $this->numExecutableLines = 0;
+
+ foreach ($this->children as $child) {
+ $this->numExecutableLines += $child->numberOfExecutableLines();
+ }
+ }
+
+ return $this->numExecutableLines;
+ }
+
+ public function numberOfExecutedLines(): int
+ {
+ if ($this->numExecutedLines === -1) {
+ $this->numExecutedLines = 0;
+
+ foreach ($this->children as $child) {
+ $this->numExecutedLines += $child->numberOfExecutedLines();
+ }
+ }
+
+ return $this->numExecutedLines;
+ }
+
+ public function numberOfExecutableBranches(): int
+ {
+ if ($this->numExecutableBranches === -1) {
+ $this->numExecutableBranches = 0;
+
+ foreach ($this->children as $child) {
+ $this->numExecutableBranches += $child->numberOfExecutableBranches();
+ }
+ }
+
+ return $this->numExecutableBranches;
+ }
+
+ public function numberOfExecutedBranches(): int
+ {
+ if ($this->numExecutedBranches === -1) {
+ $this->numExecutedBranches = 0;
+
+ foreach ($this->children as $child) {
+ $this->numExecutedBranches += $child->numberOfExecutedBranches();
+ }
+ }
+
+ return $this->numExecutedBranches;
+ }
+
+ public function numberOfExecutablePaths(): int
+ {
+ if ($this->numExecutablePaths === -1) {
+ $this->numExecutablePaths = 0;
+
+ foreach ($this->children as $child) {
+ $this->numExecutablePaths += $child->numberOfExecutablePaths();
+ }
+ }
+
+ return $this->numExecutablePaths;
+ }
+
+ public function numberOfExecutedPaths(): int
+ {
+ if ($this->numExecutedPaths === -1) {
+ $this->numExecutedPaths = 0;
+
+ foreach ($this->children as $child) {
+ $this->numExecutedPaths += $child->numberOfExecutedPaths();
+ }
+ }
+
+ return $this->numExecutedPaths;
+ }
+
+ public function numberOfClasses(): int
+ {
+ if ($this->numClasses === -1) {
+ $this->numClasses = 0;
+
+ foreach ($this->children as $child) {
+ $this->numClasses += $child->numberOfClasses();
+ }
+ }
+
+ return $this->numClasses;
+ }
+
+ public function numberOfTestedClasses(): int
+ {
+ if ($this->numTestedClasses === -1) {
+ $this->numTestedClasses = 0;
+
+ foreach ($this->children as $child) {
+ $this->numTestedClasses += $child->numberOfTestedClasses();
+ }
+ }
+
+ return $this->numTestedClasses;
+ }
+
+ public function numberOfTraits(): int
+ {
+ if ($this->numTraits === -1) {
+ $this->numTraits = 0;
+
+ foreach ($this->children as $child) {
+ $this->numTraits += $child->numberOfTraits();
+ }
+ }
+
+ return $this->numTraits;
+ }
+
+ public function numberOfTestedTraits(): int
+ {
+ if ($this->numTestedTraits === -1) {
+ $this->numTestedTraits = 0;
+
+ foreach ($this->children as $child) {
+ $this->numTestedTraits += $child->numberOfTestedTraits();
+ }
+ }
+
+ return $this->numTestedTraits;
+ }
+
+ public function numberOfMethods(): int
+ {
+ if ($this->numMethods === -1) {
+ $this->numMethods = 0;
+
+ foreach ($this->children as $child) {
+ $this->numMethods += $child->numberOfMethods();
+ }
+ }
+
+ return $this->numMethods;
+ }
+
+ public function numberOfTestedMethods(): int
+ {
+ if ($this->numTestedMethods === -1) {
+ $this->numTestedMethods = 0;
+
+ foreach ($this->children as $child) {
+ $this->numTestedMethods += $child->numberOfTestedMethods();
+ }
+ }
+
+ return $this->numTestedMethods;
+ }
+
+ public function numberOfFunctions(): int
+ {
+ if ($this->numFunctions === -1) {
+ $this->numFunctions = 0;
+
+ foreach ($this->children as $child) {
+ $this->numFunctions += $child->numberOfFunctions();
+ }
+ }
+
+ return $this->numFunctions;
+ }
+
+ public function numberOfTestedFunctions(): int
+ {
+ if ($this->numTestedFunctions === -1) {
+ $this->numTestedFunctions = 0;
+
+ foreach ($this->children as $child) {
+ $this->numTestedFunctions += $child->numberOfTestedFunctions();
+ }
+ }
+
+ return $this->numTestedFunctions;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/File.php b/vendor/phpunit/php-code-coverage/src/Node/File.php
new file mode 100644
index 000000000..af3764e41
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/File.php
@@ -0,0 +1,651 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use function array_filter;
+use function count;
+use function range;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class File extends AbstractNode
+{
+ /**
+ * @var array
+ */
+ private $lineCoverageData;
+
+ /**
+ * @var array
+ */
+ private $functionCoverageData;
+
+ /**
+ * @var array
+ */
+ private $testData;
+
+ /**
+ * @var int
+ */
+ private $numExecutableLines = 0;
+
+ /**
+ * @var int
+ */
+ private $numExecutedLines = 0;
+
+ /**
+ * @var int
+ */
+ private $numExecutableBranches = 0;
+
+ /**
+ * @var int
+ */
+ private $numExecutedBranches = 0;
+
+ /**
+ * @var int
+ */
+ private $numExecutablePaths = 0;
+
+ /**
+ * @var int
+ */
+ private $numExecutedPaths = 0;
+
+ /**
+ * @var array
+ */
+ private $classes = [];
+
+ /**
+ * @var array
+ */
+ private $traits = [];
+
+ /**
+ * @var array
+ */
+ private $functions = [];
+
+ /**
+ * @psalm-var array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}
+ */
+ private $linesOfCode;
+
+ /**
+ * @var int
+ */
+ private $numClasses;
+
+ /**
+ * @var int
+ */
+ private $numTestedClasses = 0;
+
+ /**
+ * @var int
+ */
+ private $numTraits;
+
+ /**
+ * @var int
+ */
+ private $numTestedTraits = 0;
+
+ /**
+ * @var int
+ */
+ private $numMethods;
+
+ /**
+ * @var int
+ */
+ private $numTestedMethods;
+
+ /**
+ * @var int
+ */
+ private $numTestedFunctions;
+
+ /**
+ * @var array
+ */
+ private $codeUnitsByLine = [];
+
+ /**
+ * @psalm-param array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int} $linesOfCode
+ */
+ public function __construct(string $name, AbstractNode $parent, array $lineCoverageData, array $functionCoverageData, array $testData, array $classes, array $traits, array $functions, array $linesOfCode)
+ {
+ parent::__construct($name, $parent);
+
+ $this->lineCoverageData = $lineCoverageData;
+ $this->functionCoverageData = $functionCoverageData;
+ $this->testData = $testData;
+ $this->linesOfCode = $linesOfCode;
+
+ $this->calculateStatistics($classes, $traits, $functions);
+ }
+
+ public function count(): int
+ {
+ return 1;
+ }
+
+ public function lineCoverageData(): array
+ {
+ return $this->lineCoverageData;
+ }
+
+ public function functionCoverageData(): array
+ {
+ return $this->functionCoverageData;
+ }
+
+ public function testData(): array
+ {
+ return $this->testData;
+ }
+
+ public function classes(): array
+ {
+ return $this->classes;
+ }
+
+ public function traits(): array
+ {
+ return $this->traits;
+ }
+
+ public function functions(): array
+ {
+ return $this->functions;
+ }
+
+ /**
+ * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}
+ */
+ public function linesOfCode(): array
+ {
+ return $this->linesOfCode;
+ }
+
+ public function numberOfExecutableLines(): int
+ {
+ return $this->numExecutableLines;
+ }
+
+ public function numberOfExecutedLines(): int
+ {
+ return $this->numExecutedLines;
+ }
+
+ public function numberOfExecutableBranches(): int
+ {
+ return $this->numExecutableBranches;
+ }
+
+ public function numberOfExecutedBranches(): int
+ {
+ return $this->numExecutedBranches;
+ }
+
+ public function numberOfExecutablePaths(): int
+ {
+ return $this->numExecutablePaths;
+ }
+
+ public function numberOfExecutedPaths(): int
+ {
+ return $this->numExecutedPaths;
+ }
+
+ public function numberOfClasses(): int
+ {
+ if ($this->numClasses === null) {
+ $this->numClasses = 0;
+
+ foreach ($this->classes as $class) {
+ foreach ($class['methods'] as $method) {
+ if ($method['executableLines'] > 0) {
+ $this->numClasses++;
+
+ continue 2;
+ }
+ }
+ }
+ }
+
+ return $this->numClasses;
+ }
+
+ public function numberOfTestedClasses(): int
+ {
+ return $this->numTestedClasses;
+ }
+
+ public function numberOfTraits(): int
+ {
+ if ($this->numTraits === null) {
+ $this->numTraits = 0;
+
+ foreach ($this->traits as $trait) {
+ foreach ($trait['methods'] as $method) {
+ if ($method['executableLines'] > 0) {
+ $this->numTraits++;
+
+ continue 2;
+ }
+ }
+ }
+ }
+
+ return $this->numTraits;
+ }
+
+ public function numberOfTestedTraits(): int
+ {
+ return $this->numTestedTraits;
+ }
+
+ public function numberOfMethods(): int
+ {
+ if ($this->numMethods === null) {
+ $this->numMethods = 0;
+
+ foreach ($this->classes as $class) {
+ foreach ($class['methods'] as $method) {
+ if ($method['executableLines'] > 0) {
+ $this->numMethods++;
+ }
+ }
+ }
+
+ foreach ($this->traits as $trait) {
+ foreach ($trait['methods'] as $method) {
+ if ($method['executableLines'] > 0) {
+ $this->numMethods++;
+ }
+ }
+ }
+ }
+
+ return $this->numMethods;
+ }
+
+ public function numberOfTestedMethods(): int
+ {
+ if ($this->numTestedMethods === null) {
+ $this->numTestedMethods = 0;
+
+ foreach ($this->classes as $class) {
+ foreach ($class['methods'] as $method) {
+ if ($method['executableLines'] > 0 &&
+ $method['coverage'] === 100) {
+ $this->numTestedMethods++;
+ }
+ }
+ }
+
+ foreach ($this->traits as $trait) {
+ foreach ($trait['methods'] as $method) {
+ if ($method['executableLines'] > 0 &&
+ $method['coverage'] === 100) {
+ $this->numTestedMethods++;
+ }
+ }
+ }
+ }
+
+ return $this->numTestedMethods;
+ }
+
+ public function numberOfFunctions(): int
+ {
+ return count($this->functions);
+ }
+
+ public function numberOfTestedFunctions(): int
+ {
+ if ($this->numTestedFunctions === null) {
+ $this->numTestedFunctions = 0;
+
+ foreach ($this->functions as $function) {
+ if ($function['executableLines'] > 0 &&
+ $function['coverage'] === 100) {
+ $this->numTestedFunctions++;
+ }
+ }
+ }
+
+ return $this->numTestedFunctions;
+ }
+
+ private function calculateStatistics(array $classes, array $traits, array $functions): void
+ {
+ foreach (range(1, $this->linesOfCode['linesOfCode']) as $lineNumber) {
+ $this->codeUnitsByLine[$lineNumber] = [];
+ }
+
+ $this->processClasses($classes);
+ $this->processTraits($traits);
+ $this->processFunctions($functions);
+
+ foreach (range(1, $this->linesOfCode['linesOfCode']) as $lineNumber) {
+ if (isset($this->lineCoverageData[$lineNumber])) {
+ foreach ($this->codeUnitsByLine[$lineNumber] as &$codeUnit) {
+ $codeUnit['executableLines']++;
+ }
+
+ unset($codeUnit);
+
+ $this->numExecutableLines++;
+
+ if (count($this->lineCoverageData[$lineNumber]) > 0) {
+ foreach ($this->codeUnitsByLine[$lineNumber] as &$codeUnit) {
+ $codeUnit['executedLines']++;
+ }
+
+ unset($codeUnit);
+
+ $this->numExecutedLines++;
+ }
+ }
+ }
+
+ foreach ($this->traits as &$trait) {
+ foreach ($trait['methods'] as &$method) {
+ $methodLineCoverage = $method['executableLines'] ? ($method['executedLines'] / $method['executableLines']) * 100 : 100;
+ $methodBranchCoverage = $method['executableBranches'] ? ($method['executedBranches'] / $method['executableBranches']) * 100 : 0;
+ $methodPathCoverage = $method['executablePaths'] ? ($method['executedPaths'] / $method['executablePaths']) * 100 : 0;
+
+ $method['coverage'] = $methodBranchCoverage ?: $methodLineCoverage;
+ $method['crap'] = (new CrapIndex($method['ccn'], $methodPathCoverage ?: $methodLineCoverage))->asString();
+
+ $trait['ccn'] += $method['ccn'];
+ }
+
+ unset($method);
+
+ $traitLineCoverage = $trait['executableLines'] ? ($trait['executedLines'] / $trait['executableLines']) * 100 : 100;
+ $traitBranchCoverage = $trait['executableBranches'] ? ($trait['executedBranches'] / $trait['executableBranches']) * 100 : 0;
+ $traitPathCoverage = $trait['executablePaths'] ? ($trait['executedPaths'] / $trait['executablePaths']) * 100 : 0;
+
+ $trait['coverage'] = $traitBranchCoverage ?: $traitLineCoverage;
+ $trait['crap'] = (new CrapIndex($trait['ccn'], $traitPathCoverage ?: $traitLineCoverage))->asString();
+
+ if ($trait['executableLines'] > 0 && $trait['coverage'] === 100) {
+ $this->numTestedClasses++;
+ }
+ }
+
+ unset($trait);
+
+ foreach ($this->classes as &$class) {
+ foreach ($class['methods'] as &$method) {
+ $methodLineCoverage = $method['executableLines'] ? ($method['executedLines'] / $method['executableLines']) * 100 : 100;
+ $methodBranchCoverage = $method['executableBranches'] ? ($method['executedBranches'] / $method['executableBranches']) * 100 : 0;
+ $methodPathCoverage = $method['executablePaths'] ? ($method['executedPaths'] / $method['executablePaths']) * 100 : 0;
+
+ $method['coverage'] = $methodBranchCoverage ?: $methodLineCoverage;
+ $method['crap'] = (new CrapIndex($method['ccn'], $methodPathCoverage ?: $methodLineCoverage))->asString();
+
+ $class['ccn'] += $method['ccn'];
+ }
+
+ unset($method);
+
+ $classLineCoverage = $class['executableLines'] ? ($class['executedLines'] / $class['executableLines']) * 100 : 100;
+ $classBranchCoverage = $class['executableBranches'] ? ($class['executedBranches'] / $class['executableBranches']) * 100 : 0;
+ $classPathCoverage = $class['executablePaths'] ? ($class['executedPaths'] / $class['executablePaths']) * 100 : 0;
+
+ $class['coverage'] = $classBranchCoverage ?: $classLineCoverage;
+ $class['crap'] = (new CrapIndex($class['ccn'], $classPathCoverage ?: $classLineCoverage))->asString();
+
+ if ($class['executableLines'] > 0 && $class['coverage'] === 100) {
+ $this->numTestedClasses++;
+ }
+ }
+
+ unset($class);
+
+ foreach ($this->functions as &$function) {
+ $functionLineCoverage = $function['executableLines'] ? ($function['executedLines'] / $function['executableLines']) * 100 : 100;
+ $functionBranchCoverage = $function['executableBranches'] ? ($function['executedBranches'] / $function['executableBranches']) * 100 : 0;
+ $functionPathCoverage = $function['executablePaths'] ? ($function['executedPaths'] / $function['executablePaths']) * 100 : 0;
+
+ $function['coverage'] = $functionBranchCoverage ?: $functionLineCoverage;
+ $function['crap'] = (new CrapIndex($function['ccn'], $functionPathCoverage ?: $functionLineCoverage))->asString();
+
+ if ($function['coverage'] === 100) {
+ $this->numTestedFunctions++;
+ }
+ }
+ }
+
+ private function processClasses(array $classes): void
+ {
+ $link = $this->id() . '.html#';
+
+ foreach ($classes as $className => $class) {
+ $this->classes[$className] = [
+ 'className' => $className,
+ 'namespace' => $class['namespace'],
+ 'methods' => [],
+ 'startLine' => $class['startLine'],
+ 'executableLines' => 0,
+ 'executedLines' => 0,
+ 'executableBranches' => 0,
+ 'executedBranches' => 0,
+ 'executablePaths' => 0,
+ 'executedPaths' => 0,
+ 'ccn' => 0,
+ 'coverage' => 0,
+ 'crap' => 0,
+ 'link' => $link . $class['startLine'],
+ ];
+
+ foreach ($class['methods'] as $methodName => $method) {
+ $methodData = $this->newMethod($className, $methodName, $method, $link);
+ $this->classes[$className]['methods'][$methodName] = $methodData;
+
+ $this->classes[$className]['executableBranches'] += $methodData['executableBranches'];
+ $this->classes[$className]['executedBranches'] += $methodData['executedBranches'];
+ $this->classes[$className]['executablePaths'] += $methodData['executablePaths'];
+ $this->classes[$className]['executedPaths'] += $methodData['executedPaths'];
+
+ $this->numExecutableBranches += $methodData['executableBranches'];
+ $this->numExecutedBranches += $methodData['executedBranches'];
+ $this->numExecutablePaths += $methodData['executablePaths'];
+ $this->numExecutedPaths += $methodData['executedPaths'];
+
+ foreach (range($method['startLine'], $method['endLine']) as $lineNumber) {
+ $this->codeUnitsByLine[$lineNumber] = [
+ &$this->classes[$className],
+ &$this->classes[$className]['methods'][$methodName],
+ ];
+ }
+ }
+ }
+ }
+
+ private function processTraits(array $traits): void
+ {
+ $link = $this->id() . '.html#';
+
+ foreach ($traits as $traitName => $trait) {
+ $this->traits[$traitName] = [
+ 'traitName' => $traitName,
+ 'namespace' => $trait['namespace'],
+ 'methods' => [],
+ 'startLine' => $trait['startLine'],
+ 'executableLines' => 0,
+ 'executedLines' => 0,
+ 'executableBranches' => 0,
+ 'executedBranches' => 0,
+ 'executablePaths' => 0,
+ 'executedPaths' => 0,
+ 'ccn' => 0,
+ 'coverage' => 0,
+ 'crap' => 0,
+ 'link' => $link . $trait['startLine'],
+ ];
+
+ foreach ($trait['methods'] as $methodName => $method) {
+ $methodData = $this->newMethod($traitName, $methodName, $method, $link);
+ $this->traits[$traitName]['methods'][$methodName] = $methodData;
+
+ $this->traits[$traitName]['executableBranches'] += $methodData['executableBranches'];
+ $this->traits[$traitName]['executedBranches'] += $methodData['executedBranches'];
+ $this->traits[$traitName]['executablePaths'] += $methodData['executablePaths'];
+ $this->traits[$traitName]['executedPaths'] += $methodData['executedPaths'];
+
+ $this->numExecutableBranches += $methodData['executableBranches'];
+ $this->numExecutedBranches += $methodData['executedBranches'];
+ $this->numExecutablePaths += $methodData['executablePaths'];
+ $this->numExecutedPaths += $methodData['executedPaths'];
+
+ foreach (range($method['startLine'], $method['endLine']) as $lineNumber) {
+ $this->codeUnitsByLine[$lineNumber] = [
+ &$this->traits[$traitName],
+ &$this->traits[$traitName]['methods'][$methodName],
+ ];
+ }
+ }
+ }
+ }
+
+ private function processFunctions(array $functions): void
+ {
+ $link = $this->id() . '.html#';
+
+ foreach ($functions as $functionName => $function) {
+ $this->functions[$functionName] = [
+ 'functionName' => $functionName,
+ 'namespace' => $function['namespace'],
+ 'signature' => $function['signature'],
+ 'startLine' => $function['startLine'],
+ 'endLine' => $function['endLine'],
+ 'executableLines' => 0,
+ 'executedLines' => 0,
+ 'executableBranches' => 0,
+ 'executedBranches' => 0,
+ 'executablePaths' => 0,
+ 'executedPaths' => 0,
+ 'ccn' => $function['ccn'],
+ 'coverage' => 0,
+ 'crap' => 0,
+ 'link' => $link . $function['startLine'],
+ ];
+
+ foreach (range($function['startLine'], $function['endLine']) as $lineNumber) {
+ $this->codeUnitsByLine[$lineNumber] = [&$this->functions[$functionName]];
+ }
+
+ if (isset($this->functionCoverageData[$functionName]['branches'])) {
+ $this->functions[$functionName]['executableBranches'] = count(
+ $this->functionCoverageData[$functionName]['branches']
+ );
+
+ $this->functions[$functionName]['executedBranches'] = count(
+ array_filter(
+ $this->functionCoverageData[$functionName]['branches'],
+ static function (array $branch)
+ {
+ return (bool) $branch['hit'];
+ }
+ )
+ );
+ }
+
+ if (isset($this->functionCoverageData[$functionName]['paths'])) {
+ $this->functions[$functionName]['executablePaths'] = count(
+ $this->functionCoverageData[$functionName]['paths']
+ );
+
+ $this->functions[$functionName]['executedPaths'] = count(
+ array_filter(
+ $this->functionCoverageData[$functionName]['paths'],
+ static function (array $path)
+ {
+ return (bool) $path['hit'];
+ }
+ )
+ );
+ }
+
+ $this->numExecutableBranches += $this->functions[$functionName]['executableBranches'];
+ $this->numExecutedBranches += $this->functions[$functionName]['executedBranches'];
+ $this->numExecutablePaths += $this->functions[$functionName]['executablePaths'];
+ $this->numExecutedPaths += $this->functions[$functionName]['executedPaths'];
+ }
+ }
+
+ private function newMethod(string $className, string $methodName, array $method, string $link): array
+ {
+ $methodData = [
+ 'methodName' => $methodName,
+ 'visibility' => $method['visibility'],
+ 'signature' => $method['signature'],
+ 'startLine' => $method['startLine'],
+ 'endLine' => $method['endLine'],
+ 'executableLines' => 0,
+ 'executedLines' => 0,
+ 'executableBranches' => 0,
+ 'executedBranches' => 0,
+ 'executablePaths' => 0,
+ 'executedPaths' => 0,
+ 'ccn' => $method['ccn'],
+ 'coverage' => 0,
+ 'crap' => 0,
+ 'link' => $link . $method['startLine'],
+ ];
+
+ $key = $className . '->' . $methodName;
+
+ if (isset($this->functionCoverageData[$key]['branches'])) {
+ $methodData['executableBranches'] = count(
+ $this->functionCoverageData[$key]['branches']
+ );
+
+ $methodData['executedBranches'] = count(
+ array_filter(
+ $this->functionCoverageData[$key]['branches'],
+ static function (array $branch)
+ {
+ return (bool) $branch['hit'];
+ }
+ )
+ );
+ }
+
+ if (isset($this->functionCoverageData[$key]['paths'])) {
+ $methodData['executablePaths'] = count(
+ $this->functionCoverageData[$key]['paths']
+ );
+
+ $methodData['executedPaths'] = count(
+ array_filter(
+ $this->functionCoverageData[$key]['paths'],
+ static function (array $path)
+ {
+ return (bool) $path['hit'];
+ }
+ )
+ );
+ }
+
+ return $methodData;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Node/Iterator.php b/vendor/phpunit/php-code-coverage/src/Node/Iterator.php
new file mode 100644
index 000000000..d0a5a0654
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Node/Iterator.php
@@ -0,0 +1,92 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use function count;
+use RecursiveIterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Iterator implements RecursiveIterator
+{
+ /**
+ * @var int
+ */
+ private $position;
+
+ /**
+ * @var AbstractNode[]
+ */
+ private $nodes;
+
+ public function __construct(Directory $node)
+ {
+ $this->nodes = $node->children();
+ }
+
+ /**
+ * Rewinds the Iterator to the first element.
+ */
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ /**
+ * Checks if there is a current element after calls to rewind() or next().
+ */
+ public function valid(): bool
+ {
+ return $this->position < count($this->nodes);
+ }
+
+ /**
+ * Returns the key of the current element.
+ */
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ /**
+ * Returns the current element.
+ */
+ public function current(): ?AbstractNode
+ {
+ return $this->valid() ? $this->nodes[$this->position] : null;
+ }
+
+ /**
+ * Moves forward to next element.
+ */
+ public function next(): void
+ {
+ $this->position++;
+ }
+
+ /**
+ * Returns the sub iterator for the current element.
+ *
+ * @return Iterator
+ */
+ public function getChildren(): self
+ {
+ return new self($this->nodes[$this->position]);
+ }
+
+ /**
+ * Checks whether the current element has children.
+ */
+ public function hasChildren(): bool
+ {
+ return $this->nodes[$this->position] instanceof Directory;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php b/vendor/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php
new file mode 100644
index 000000000..1ed29ad52
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/ProcessedCodeCoverageData.php
@@ -0,0 +1,255 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use function array_key_exists;
+use function array_keys;
+use function array_merge;
+use function array_unique;
+use function count;
+use function is_array;
+use function ksort;
+use SebastianBergmann\CodeCoverage\Driver\Driver;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class ProcessedCodeCoverageData
+{
+ /**
+ * Line coverage data.
+ * An array of filenames, each having an array of linenumbers, each executable line having an array of testcase ids.
+ *
+ * @var array
+ */
+ private $lineCoverage = [];
+
+ /**
+ * Function coverage data.
+ * Maintains base format of raw data (@see https://xdebug.org/docs/code_coverage), but each 'hit' entry is an array
+ * of testcase ids.
+ *
+ * @var array
+ */
+ private $functionCoverage = [];
+
+ public function initializeUnseenData(RawCodeCoverageData $rawData): void
+ {
+ foreach ($rawData->lineCoverage() as $file => $lines) {
+ if (!isset($this->lineCoverage[$file])) {
+ $this->lineCoverage[$file] = [];
+
+ foreach ($lines as $k => $v) {
+ $this->lineCoverage[$file][$k] = $v === Driver::LINE_NOT_EXECUTABLE ? null : [];
+ }
+ }
+ }
+
+ foreach ($rawData->functionCoverage() as $file => $functions) {
+ foreach ($functions as $functionName => $functionData) {
+ if (isset($this->functionCoverage[$file][$functionName])) {
+ $this->initPreviouslySeenFunction($file, $functionName, $functionData);
+ } else {
+ $this->initPreviouslyUnseenFunction($file, $functionName, $functionData);
+ }
+ }
+ }
+ }
+
+ public function markCodeAsExecutedByTestCase(string $testCaseId, RawCodeCoverageData $executedCode): void
+ {
+ foreach ($executedCode->lineCoverage() as $file => $lines) {
+ foreach ($lines as $k => $v) {
+ if ($v === Driver::LINE_EXECUTED) {
+ $this->lineCoverage[$file][$k][] = $testCaseId;
+ }
+ }
+ }
+
+ foreach ($executedCode->functionCoverage() as $file => $functions) {
+ foreach ($functions as $functionName => $functionData) {
+ foreach ($functionData['branches'] as $branchId => $branchData) {
+ if ($branchData['hit'] === Driver::BRANCH_HIT) {
+ $this->functionCoverage[$file][$functionName]['branches'][$branchId]['hit'][] = $testCaseId;
+ }
+ }
+
+ foreach ($functionData['paths'] as $pathId => $pathData) {
+ if ($pathData['hit'] === Driver::BRANCH_HIT) {
+ $this->functionCoverage[$file][$functionName]['paths'][$pathId]['hit'][] = $testCaseId;
+ }
+ }
+ }
+ }
+ }
+
+ public function setLineCoverage(array $lineCoverage): void
+ {
+ $this->lineCoverage = $lineCoverage;
+ }
+
+ public function lineCoverage(): array
+ {
+ ksort($this->lineCoverage);
+
+ return $this->lineCoverage;
+ }
+
+ public function setFunctionCoverage(array $functionCoverage): void
+ {
+ $this->functionCoverage = $functionCoverage;
+ }
+
+ public function functionCoverage(): array
+ {
+ ksort($this->functionCoverage);
+
+ return $this->functionCoverage;
+ }
+
+ public function coveredFiles(): array
+ {
+ ksort($this->lineCoverage);
+
+ return array_keys($this->lineCoverage);
+ }
+
+ public function renameFile(string $oldFile, string $newFile): void
+ {
+ $this->lineCoverage[$newFile] = $this->lineCoverage[$oldFile];
+
+ if (isset($this->functionCoverage[$oldFile])) {
+ $this->functionCoverage[$newFile] = $this->functionCoverage[$oldFile];
+ }
+
+ unset($this->lineCoverage[$oldFile], $this->functionCoverage[$oldFile]);
+ }
+
+ public function merge(self $newData): void
+ {
+ foreach ($newData->lineCoverage as $file => $lines) {
+ if (!isset($this->lineCoverage[$file])) {
+ $this->lineCoverage[$file] = $lines;
+
+ continue;
+ }
+
+ // we should compare the lines if any of two contains data
+ $compareLineNumbers = array_unique(
+ array_merge(
+ array_keys($this->lineCoverage[$file]),
+ array_keys($newData->lineCoverage[$file])
+ )
+ );
+
+ foreach ($compareLineNumbers as $line) {
+ $thatPriority = $this->priorityForLine($newData->lineCoverage[$file], $line);
+ $thisPriority = $this->priorityForLine($this->lineCoverage[$file], $line);
+
+ if ($thatPriority > $thisPriority) {
+ $this->lineCoverage[$file][$line] = $newData->lineCoverage[$file][$line];
+ } elseif ($thatPriority === $thisPriority && is_array($this->lineCoverage[$file][$line])) {
+ $this->lineCoverage[$file][$line] = array_unique(
+ array_merge($this->lineCoverage[$file][$line], $newData->lineCoverage[$file][$line])
+ );
+ }
+ }
+ }
+
+ foreach ($newData->functionCoverage as $file => $functions) {
+ if (!isset($this->functionCoverage[$file])) {
+ $this->functionCoverage[$file] = $functions;
+
+ continue;
+ }
+
+ foreach ($functions as $functionName => $functionData) {
+ if (isset($this->functionCoverage[$file][$functionName])) {
+ $this->initPreviouslySeenFunction($file, $functionName, $functionData);
+ } else {
+ $this->initPreviouslyUnseenFunction($file, $functionName, $functionData);
+ }
+
+ foreach ($functionData['branches'] as $branchId => $branchData) {
+ $this->functionCoverage[$file][$functionName]['branches'][$branchId]['hit'] = array_unique(array_merge($this->functionCoverage[$file][$functionName]['branches'][$branchId]['hit'], $branchData['hit']));
+ }
+
+ foreach ($functionData['paths'] as $pathId => $pathData) {
+ $this->functionCoverage[$file][$functionName]['paths'][$pathId]['hit'] = array_unique(array_merge($this->functionCoverage[$file][$functionName]['paths'][$pathId]['hit'], $pathData['hit']));
+ }
+ }
+ }
+ }
+
+ /**
+ * Determine the priority for a line.
+ *
+ * 1 = the line is not set
+ * 2 = the line has not been tested
+ * 3 = the line is dead code
+ * 4 = the line has been tested
+ *
+ * During a merge, a higher number is better.
+ */
+ private function priorityForLine(array $data, int $line): int
+ {
+ if (!array_key_exists($line, $data)) {
+ return 1;
+ }
+
+ if (is_array($data[$line]) && count($data[$line]) === 0) {
+ return 2;
+ }
+
+ if ($data[$line] === null) {
+ return 3;
+ }
+
+ return 4;
+ }
+
+ /**
+ * For a function we have never seen before, copy all data over and simply init the 'hit' array.
+ */
+ private function initPreviouslyUnseenFunction(string $file, string $functionName, array $functionData): void
+ {
+ $this->functionCoverage[$file][$functionName] = $functionData;
+
+ foreach (array_keys($functionData['branches']) as $branchId) {
+ $this->functionCoverage[$file][$functionName]['branches'][$branchId]['hit'] = [];
+ }
+
+ foreach (array_keys($functionData['paths']) as $pathId) {
+ $this->functionCoverage[$file][$functionName]['paths'][$pathId]['hit'] = [];
+ }
+ }
+
+ /**
+ * For a function we have seen before, only copy over and init the 'hit' array for any unseen branches and paths.
+ * Techniques such as mocking and where the contents of a file are different vary during tests (e.g. compiling
+ * containers) mean that the functions inside a file cannot be relied upon to be static.
+ */
+ private function initPreviouslySeenFunction(string $file, string $functionName, array $functionData): void
+ {
+ foreach ($functionData['branches'] as $branchId => $branchData) {
+ if (!isset($this->functionCoverage[$file][$functionName]['branches'][$branchId])) {
+ $this->functionCoverage[$file][$functionName]['branches'][$branchId] = $branchData;
+ $this->functionCoverage[$file][$functionName]['branches'][$branchId]['hit'] = [];
+ }
+ }
+
+ foreach ($functionData['paths'] as $pathId => $pathData) {
+ if (!isset($this->functionCoverage[$file][$functionName]['paths'][$pathId])) {
+ $this->functionCoverage[$file][$functionName]['paths'][$pathId] = $pathData;
+ $this->functionCoverage[$file][$functionName]['paths'][$pathId]['hit'] = [];
+ }
+ }
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/RawCodeCoverageData.php b/vendor/phpunit/php-code-coverage/src/RawCodeCoverageData.php
new file mode 100644
index 000000000..422742e28
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/RawCodeCoverageData.php
@@ -0,0 +1,234 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use function array_diff;
+use function array_diff_key;
+use function array_flip;
+use function array_intersect;
+use function array_intersect_key;
+use function count;
+use function in_array;
+use function range;
+use SebastianBergmann\CodeCoverage\Driver\Driver;
+use SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class RawCodeCoverageData
+{
+ /**
+ * @var array<string, array<int>>
+ */
+ private static $emptyLineCache = [];
+
+ /**
+ * @var array
+ *
+ * @see https://xdebug.org/docs/code_coverage for format
+ */
+ private $lineCoverage;
+
+ /**
+ * @var array
+ *
+ * @see https://xdebug.org/docs/code_coverage for format
+ */
+ private $functionCoverage;
+
+ public static function fromXdebugWithoutPathCoverage(array $rawCoverage): self
+ {
+ return new self($rawCoverage, []);
+ }
+
+ public static function fromXdebugWithPathCoverage(array $rawCoverage): self
+ {
+ $lineCoverage = [];
+ $functionCoverage = [];
+
+ foreach ($rawCoverage as $file => $fileCoverageData) {
+ $lineCoverage[$file] = $fileCoverageData['lines'];
+ $functionCoverage[$file] = $fileCoverageData['functions'];
+ }
+
+ return new self($lineCoverage, $functionCoverage);
+ }
+
+ public static function fromXdebugWithMixedCoverage(array $rawCoverage): self
+ {
+ $lineCoverage = [];
+ $functionCoverage = [];
+
+ foreach ($rawCoverage as $file => $fileCoverageData) {
+ if (!isset($fileCoverageData['functions'])) {
+ // Current file does not have functions, so line coverage
+ // is stored in $fileCoverageData, not in $fileCoverageData['lines']
+ $lineCoverage[$file] = $fileCoverageData;
+
+ continue;
+ }
+
+ $lineCoverage[$file] = $fileCoverageData['lines'];
+ $functionCoverage[$file] = $fileCoverageData['functions'];
+ }
+
+ return new self($lineCoverage, $functionCoverage);
+ }
+
+ public static function fromUncoveredFile(string $filename, FileAnalyser $analyser): self
+ {
+ $lineCoverage = [];
+
+ foreach ($analyser->executableLinesIn($filename) as $line) {
+ $lineCoverage[$line] = Driver::LINE_NOT_EXECUTED;
+ }
+
+ return new self([$filename => $lineCoverage], []);
+ }
+
+ private function __construct(array $lineCoverage, array $functionCoverage)
+ {
+ $this->lineCoverage = $lineCoverage;
+ $this->functionCoverage = $functionCoverage;
+
+ $this->skipEmptyLines();
+ }
+
+ public function clear(): void
+ {
+ $this->lineCoverage = $this->functionCoverage = [];
+ }
+
+ public function lineCoverage(): array
+ {
+ return $this->lineCoverage;
+ }
+
+ public function functionCoverage(): array
+ {
+ return $this->functionCoverage;
+ }
+
+ public function removeCoverageDataForFile(string $filename): void
+ {
+ unset($this->lineCoverage[$filename], $this->functionCoverage[$filename]);
+ }
+
+ /**
+ * @param int[] $lines
+ */
+ public function keepLineCoverageDataOnlyForLines(string $filename, array $lines): void
+ {
+ if (!isset($this->lineCoverage[$filename])) {
+ return;
+ }
+
+ $this->lineCoverage[$filename] = array_intersect_key(
+ $this->lineCoverage[$filename],
+ array_flip($lines)
+ );
+ }
+
+ /**
+ * @param int[] $lines
+ */
+ public function keepFunctionCoverageDataOnlyForLines(string $filename, array $lines): void
+ {
+ if (!isset($this->functionCoverage[$filename])) {
+ return;
+ }
+
+ foreach ($this->functionCoverage[$filename] as $functionName => $functionData) {
+ foreach ($functionData['branches'] as $branchId => $branch) {
+ if (count(array_diff(range($branch['line_start'], $branch['line_end']), $lines)) > 0) {
+ unset($this->functionCoverage[$filename][$functionName]['branches'][$branchId]);
+
+ foreach ($functionData['paths'] as $pathId => $path) {
+ if (in_array($branchId, $path['path'], true)) {
+ unset($this->functionCoverage[$filename][$functionName]['paths'][$pathId]);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * @param int[] $lines
+ */
+ public function removeCoverageDataForLines(string $filename, array $lines): void
+ {
+ if (empty($lines)) {
+ return;
+ }
+
+ if (!isset($this->lineCoverage[$filename])) {
+ return;
+ }
+
+ $this->lineCoverage[$filename] = array_diff_key(
+ $this->lineCoverage[$filename],
+ array_flip($lines)
+ );
+
+ if (isset($this->functionCoverage[$filename])) {
+ foreach ($this->functionCoverage[$filename] as $functionName => $functionData) {
+ foreach ($functionData['branches'] as $branchId => $branch) {
+ if (count(array_intersect($lines, range($branch['line_start'], $branch['line_end']))) > 0) {
+ unset($this->functionCoverage[$filename][$functionName]['branches'][$branchId]);
+
+ foreach ($functionData['paths'] as $pathId => $path) {
+ if (in_array($branchId, $path['path'], true)) {
+ unset($this->functionCoverage[$filename][$functionName]['paths'][$pathId]);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * At the end of a file, the PHP interpreter always sees an implicit return. Where this occurs in a file that has
+ * e.g. a class definition, that line cannot be invoked from a test and results in confusing coverage. This engine
+ * implementation detail therefore needs to be masked which is done here by simply ensuring that all empty lines
+ * are skipped over for coverage purposes.
+ *
+ * @see https://github.com/sebastianbergmann/php-code-coverage/issues/799
+ */
+ private function skipEmptyLines(): void
+ {
+ foreach ($this->lineCoverage as $filename => $coverage) {
+ foreach ($this->getEmptyLinesForFile($filename) as $emptyLine) {
+ unset($this->lineCoverage[$filename][$emptyLine]);
+ }
+ }
+ }
+
+ private function getEmptyLinesForFile(string $filename): array
+ {
+ if (!isset(self::$emptyLineCache[$filename])) {
+ self::$emptyLineCache[$filename] = [];
+
+ if (is_file($filename)) {
+ $sourceLines = explode("\n", file_get_contents($filename));
+
+ foreach ($sourceLines as $line => $source) {
+ if (trim($source) === '') {
+ self::$emptyLineCache[$filename][] = ($line + 1);
+ }
+ }
+ }
+ }
+
+ return self::$emptyLineCache[$filename];
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Clover.php b/vendor/phpunit/php-code-coverage/src/Report/Clover.php
new file mode 100644
index 000000000..75c731bbe
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Clover.php
@@ -0,0 +1,255 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report;
+
+use function count;
+use function dirname;
+use function file_put_contents;
+use function is_string;
+use function ksort;
+use function max;
+use function range;
+use function time;
+use DOMDocument;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException;
+use SebastianBergmann\CodeCoverage\Node\File;
+use SebastianBergmann\CodeCoverage\Util\Filesystem;
+
+final class Clover
+{
+ /**
+ * @throws WriteOperationFailedException
+ */
+ public function process(CodeCoverage $coverage, ?string $target = null, ?string $name = null): string
+ {
+ $time = (string) time();
+
+ $xmlDocument = new DOMDocument('1.0', 'UTF-8');
+ $xmlDocument->formatOutput = true;
+
+ $xmlCoverage = $xmlDocument->createElement('coverage');
+ $xmlCoverage->setAttribute('generated', $time);
+ $xmlDocument->appendChild($xmlCoverage);
+
+ $xmlProject = $xmlDocument->createElement('project');
+ $xmlProject->setAttribute('timestamp', $time);
+
+ if (is_string($name)) {
+ $xmlProject->setAttribute('name', $name);
+ }
+
+ $xmlCoverage->appendChild($xmlProject);
+
+ $packages = [];
+ $report = $coverage->getReport();
+
+ foreach ($report as $item) {
+ if (!$item instanceof File) {
+ continue;
+ }
+
+ /* @var File $item */
+
+ $xmlFile = $xmlDocument->createElement('file');
+ $xmlFile->setAttribute('name', $item->pathAsString());
+
+ $classes = $item->classesAndTraits();
+ $coverageData = $item->lineCoverageData();
+ $lines = [];
+ $namespace = 'global';
+
+ foreach ($classes as $className => $class) {
+ $classStatements = 0;
+ $coveredClassStatements = 0;
+ $coveredMethods = 0;
+ $classMethods = 0;
+
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($method['executableLines'] == 0) {
+ continue;
+ }
+
+ $classMethods++;
+ $classStatements += $method['executableLines'];
+ $coveredClassStatements += $method['executedLines'];
+
+ if ($method['coverage'] == 100) {
+ $coveredMethods++;
+ }
+
+ $methodCount = 0;
+
+ foreach (range($method['startLine'], $method['endLine']) as $line) {
+ if (isset($coverageData[$line]) && ($coverageData[$line] !== null)) {
+ $methodCount = max($methodCount, count($coverageData[$line]));
+ }
+ }
+
+ $lines[$method['startLine']] = [
+ 'ccn' => $method['ccn'],
+ 'count' => $methodCount,
+ 'crap' => $method['crap'],
+ 'type' => 'method',
+ 'visibility' => $method['visibility'],
+ 'name' => $methodName,
+ ];
+ }
+
+ if (!empty($class['package']['namespace'])) {
+ $namespace = $class['package']['namespace'];
+ }
+
+ $xmlClass = $xmlDocument->createElement('class');
+ $xmlClass->setAttribute('name', $className);
+ $xmlClass->setAttribute('namespace', $namespace);
+
+ if (!empty($class['package']['fullPackage'])) {
+ $xmlClass->setAttribute(
+ 'fullPackage',
+ $class['package']['fullPackage']
+ );
+ }
+
+ if (!empty($class['package']['category'])) {
+ $xmlClass->setAttribute(
+ 'category',
+ $class['package']['category']
+ );
+ }
+
+ if (!empty($class['package']['package'])) {
+ $xmlClass->setAttribute(
+ 'package',
+ $class['package']['package']
+ );
+ }
+
+ if (!empty($class['package']['subpackage'])) {
+ $xmlClass->setAttribute(
+ 'subpackage',
+ $class['package']['subpackage']
+ );
+ }
+
+ $xmlFile->appendChild($xmlClass);
+
+ $xmlMetrics = $xmlDocument->createElement('metrics');
+ $xmlMetrics->setAttribute('complexity', (string) $class['ccn']);
+ $xmlMetrics->setAttribute('methods', (string) $classMethods);
+ $xmlMetrics->setAttribute('coveredmethods', (string) $coveredMethods);
+ $xmlMetrics->setAttribute('conditionals', (string) $class['executableBranches']);
+ $xmlMetrics->setAttribute('coveredconditionals', (string) $class['executedBranches']);
+ $xmlMetrics->setAttribute('statements', (string) $classStatements);
+ $xmlMetrics->setAttribute('coveredstatements', (string) $coveredClassStatements);
+ $xmlMetrics->setAttribute('elements', (string) ($classMethods + $classStatements + $class['executableBranches']));
+ $xmlMetrics->setAttribute('coveredelements', (string) ($coveredMethods + $coveredClassStatements + $class['executedBranches']));
+ $xmlClass->appendChild($xmlMetrics);
+ }
+
+ foreach ($coverageData as $line => $data) {
+ if ($data === null || isset($lines[$line])) {
+ continue;
+ }
+
+ $lines[$line] = [
+ 'count' => count($data), 'type' => 'stmt',
+ ];
+ }
+
+ ksort($lines);
+
+ foreach ($lines as $line => $data) {
+ $xmlLine = $xmlDocument->createElement('line');
+ $xmlLine->setAttribute('num', (string) $line);
+ $xmlLine->setAttribute('type', $data['type']);
+
+ if (isset($data['name'])) {
+ $xmlLine->setAttribute('name', $data['name']);
+ }
+
+ if (isset($data['visibility'])) {
+ $xmlLine->setAttribute('visibility', $data['visibility']);
+ }
+
+ if (isset($data['ccn'])) {
+ $xmlLine->setAttribute('complexity', (string) $data['ccn']);
+ }
+
+ if (isset($data['crap'])) {
+ $xmlLine->setAttribute('crap', (string) $data['crap']);
+ }
+
+ $xmlLine->setAttribute('count', (string) $data['count']);
+ $xmlFile->appendChild($xmlLine);
+ }
+
+ $linesOfCode = $item->linesOfCode();
+
+ $xmlMetrics = $xmlDocument->createElement('metrics');
+ $xmlMetrics->setAttribute('loc', (string) $linesOfCode['linesOfCode']);
+ $xmlMetrics->setAttribute('ncloc', (string) $linesOfCode['nonCommentLinesOfCode']);
+ $xmlMetrics->setAttribute('classes', (string) $item->numberOfClassesAndTraits());
+ $xmlMetrics->setAttribute('methods', (string) $item->numberOfMethods());
+ $xmlMetrics->setAttribute('coveredmethods', (string) $item->numberOfTestedMethods());
+ $xmlMetrics->setAttribute('conditionals', (string) $item->numberOfExecutableBranches());
+ $xmlMetrics->setAttribute('coveredconditionals', (string) $item->numberOfExecutedBranches());
+ $xmlMetrics->setAttribute('statements', (string) $item->numberOfExecutableLines());
+ $xmlMetrics->setAttribute('coveredstatements', (string) $item->numberOfExecutedLines());
+ $xmlMetrics->setAttribute('elements', (string) ($item->numberOfMethods() + $item->numberOfExecutableLines() + $item->numberOfExecutableBranches()));
+ $xmlMetrics->setAttribute('coveredelements', (string) ($item->numberOfTestedMethods() + $item->numberOfExecutedLines() + $item->numberOfExecutedBranches()));
+ $xmlFile->appendChild($xmlMetrics);
+
+ if ($namespace === 'global') {
+ $xmlProject->appendChild($xmlFile);
+ } else {
+ if (!isset($packages[$namespace])) {
+ $packages[$namespace] = $xmlDocument->createElement(
+ 'package'
+ );
+
+ $packages[$namespace]->setAttribute('name', $namespace);
+ $xmlProject->appendChild($packages[$namespace]);
+ }
+
+ $packages[$namespace]->appendChild($xmlFile);
+ }
+ }
+
+ $linesOfCode = $report->linesOfCode();
+
+ $xmlMetrics = $xmlDocument->createElement('metrics');
+ $xmlMetrics->setAttribute('files', (string) count($report));
+ $xmlMetrics->setAttribute('loc', (string) $linesOfCode['linesOfCode']);
+ $xmlMetrics->setAttribute('ncloc', (string) $linesOfCode['nonCommentLinesOfCode']);
+ $xmlMetrics->setAttribute('classes', (string) $report->numberOfClassesAndTraits());
+ $xmlMetrics->setAttribute('methods', (string) $report->numberOfMethods());
+ $xmlMetrics->setAttribute('coveredmethods', (string) $report->numberOfTestedMethods());
+ $xmlMetrics->setAttribute('conditionals', (string) $report->numberOfExecutableBranches());
+ $xmlMetrics->setAttribute('coveredconditionals', (string) $report->numberOfExecutedBranches());
+ $xmlMetrics->setAttribute('statements', (string) $report->numberOfExecutableLines());
+ $xmlMetrics->setAttribute('coveredstatements', (string) $report->numberOfExecutedLines());
+ $xmlMetrics->setAttribute('elements', (string) ($report->numberOfMethods() + $report->numberOfExecutableLines() + $report->numberOfExecutableBranches()));
+ $xmlMetrics->setAttribute('coveredelements', (string) ($report->numberOfTestedMethods() + $report->numberOfExecutedLines() + $report->numberOfExecutedBranches()));
+ $xmlProject->appendChild($xmlMetrics);
+
+ $buffer = $xmlDocument->saveXML();
+
+ if ($target !== null) {
+ Filesystem::createDirectory(dirname($target));
+
+ if (@file_put_contents($target, $buffer) === false) {
+ throw new WriteOperationFailedException($target);
+ }
+ }
+
+ return $buffer;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Cobertura.php b/vendor/phpunit/php-code-coverage/src/Report/Cobertura.php
new file mode 100644
index 000000000..550fdb75a
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Cobertura.php
@@ -0,0 +1,304 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report;
+
+use function count;
+use function dirname;
+use function file_put_contents;
+use function range;
+use function time;
+use DOMImplementation;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException;
+use SebastianBergmann\CodeCoverage\Node\File;
+use SebastianBergmann\CodeCoverage\Util\Filesystem;
+
+final class Cobertura
+{
+ /**
+ * @throws WriteOperationFailedException
+ */
+ public function process(CodeCoverage $coverage, ?string $target = null, ?string $name = null): string
+ {
+ $time = (string) time();
+
+ $report = $coverage->getReport();
+
+ $implementation = new DOMImplementation;
+
+ $documentType = $implementation->createDocumentType(
+ 'coverage',
+ '',
+ 'http://cobertura.sourceforge.net/xml/coverage-04.dtd'
+ );
+
+ $document = $implementation->createDocument('', '', $documentType);
+ $document->xmlVersion = '1.0';
+ $document->encoding = 'UTF-8';
+ $document->formatOutput = true;
+
+ $coverageElement = $document->createElement('coverage');
+
+ $linesValid = $report->numberOfExecutableLines();
+ $linesCovered = $report->numberOfExecutedLines();
+ $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid);
+ $coverageElement->setAttribute('line-rate', (string) $lineRate);
+
+ $branchesValid = $report->numberOfExecutableBranches();
+ $branchesCovered = $report->numberOfExecutedBranches();
+ $branchRate = $branchesValid === 0 ? 0 : ($branchesCovered / $branchesValid);
+ $coverageElement->setAttribute('branch-rate', (string) $branchRate);
+
+ $coverageElement->setAttribute('lines-covered', (string) $report->numberOfExecutedLines());
+ $coverageElement->setAttribute('lines-valid', (string) $report->numberOfExecutableLines());
+ $coverageElement->setAttribute('branches-covered', (string) $report->numberOfExecutedBranches());
+ $coverageElement->setAttribute('branches-valid', (string) $report->numberOfExecutableBranches());
+ $coverageElement->setAttribute('complexity', '');
+ $coverageElement->setAttribute('version', '0.4');
+ $coverageElement->setAttribute('timestamp', $time);
+
+ $document->appendChild($coverageElement);
+
+ $sourcesElement = $document->createElement('sources');
+ $coverageElement->appendChild($sourcesElement);
+
+ $sourceElement = $document->createElement('source', $report->pathAsString());
+ $sourcesElement->appendChild($sourceElement);
+
+ $packagesElement = $document->createElement('packages');
+ $coverageElement->appendChild($packagesElement);
+
+ $complexity = 0;
+
+ foreach ($report as $item) {
+ if (!$item instanceof File) {
+ continue;
+ }
+
+ $packageElement = $document->createElement('package');
+ $packageComplexity = 0;
+ $packageName = $name ?? '';
+
+ $packageElement->setAttribute('name', $packageName);
+
+ $linesValid = $item->numberOfExecutableLines();
+ $linesCovered = $item->numberOfExecutedLines();
+ $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid);
+
+ $packageElement->setAttribute('line-rate', (string) $lineRate);
+
+ $branchesValid = $item->numberOfExecutableBranches();
+ $branchesCovered = $item->numberOfExecutedBranches();
+ $branchRate = $branchesValid === 0 ? 0 : ($branchesCovered / $branchesValid);
+
+ $packageElement->setAttribute('branch-rate', (string) $branchRate);
+
+ $packageElement->setAttribute('complexity', '');
+ $packagesElement->appendChild($packageElement);
+
+ $classesElement = $document->createElement('classes');
+
+ $packageElement->appendChild($classesElement);
+
+ $classes = $item->classesAndTraits();
+ $coverageData = $item->lineCoverageData();
+
+ foreach ($classes as $className => $class) {
+ $complexity += $class['ccn'];
+ $packageComplexity += $class['ccn'];
+
+ if (!empty($class['package']['namespace'])) {
+ $className = $class['package']['namespace'] . '\\' . $className;
+ }
+
+ $linesValid = $class['executableLines'];
+ $linesCovered = $class['executedLines'];
+ $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid);
+
+ $branchesValid = $class['executableBranches'];
+ $branchesCovered = $class['executedBranches'];
+ $branchRate = $branchesValid === 0 ? 0 : ($branchesCovered / $branchesValid);
+
+ $classElement = $document->createElement('class');
+
+ $classElement->setAttribute('name', $className);
+ $classElement->setAttribute('filename', str_replace($report->pathAsString() . DIRECTORY_SEPARATOR, '', $item->pathAsString()));
+ $classElement->setAttribute('line-rate', (string) $lineRate);
+ $classElement->setAttribute('branch-rate', (string) $branchRate);
+ $classElement->setAttribute('complexity', (string) $class['ccn']);
+
+ $classesElement->appendChild($classElement);
+
+ $methodsElement = $document->createElement('methods');
+
+ $classElement->appendChild($methodsElement);
+
+ $classLinesElement = $document->createElement('lines');
+
+ $classElement->appendChild($classLinesElement);
+
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($method['executableLines'] === 0) {
+ continue;
+ }
+
+ preg_match("/\((.*?)\)/", $method['signature'], $signature);
+
+ $linesValid = $method['executableLines'];
+ $linesCovered = $method['executedLines'];
+ $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid);
+
+ $branchesValid = $method['executableBranches'];
+ $branchesCovered = $method['executedBranches'];
+ $branchRate = $branchesValid === 0 ? 0 : ($branchesCovered / $branchesValid);
+
+ $methodElement = $document->createElement('method');
+
+ $methodElement->setAttribute('name', $methodName);
+ $methodElement->setAttribute('signature', $signature[1]);
+ $methodElement->setAttribute('line-rate', (string) $lineRate);
+ $methodElement->setAttribute('branch-rate', (string) $branchRate);
+ $methodElement->setAttribute('complexity', (string) $method['ccn']);
+
+ $methodLinesElement = $document->createElement('lines');
+
+ $methodElement->appendChild($methodLinesElement);
+
+ foreach (range($method['startLine'], $method['endLine']) as $line) {
+ if (!isset($coverageData[$line]) || $coverageData[$line] === null) {
+ continue;
+ }
+ $methodLineElement = $document->createElement('line');
+
+ $methodLineElement->setAttribute('number', (string) $line);
+ $methodLineElement->setAttribute('hits', (string) count($coverageData[$line]));
+
+ $methodLinesElement->appendChild($methodLineElement);
+
+ $classLineElement = $methodLineElement->cloneNode();
+
+ $classLinesElement->appendChild($classLineElement);
+ }
+
+ $methodsElement->appendChild($methodElement);
+ }
+ }
+
+ if ($report->numberOfFunctions() === 0) {
+ $packageElement->setAttribute('complexity', (string) $packageComplexity);
+
+ continue;
+ }
+
+ $functionsComplexity = 0;
+ $functionsLinesValid = 0;
+ $functionsLinesCovered = 0;
+ $functionsBranchesValid = 0;
+ $functionsBranchesCovered = 0;
+
+ $classElement = $document->createElement('class');
+ $classElement->setAttribute('name', basename($item->pathAsString()));
+ $classElement->setAttribute('filename', str_replace($report->pathAsString() . DIRECTORY_SEPARATOR, '', $item->pathAsString()));
+
+ $methodsElement = $document->createElement('methods');
+
+ $classElement->appendChild($methodsElement);
+
+ $classLinesElement = $document->createElement('lines');
+
+ $classElement->appendChild($classLinesElement);
+
+ $functions = $report->functions();
+
+ foreach ($functions as $functionName => $function) {
+ if ($function['executableLines'] === 0) {
+ continue;
+ }
+
+ $complexity += $function['ccn'];
+ $packageComplexity += $function['ccn'];
+ $functionsComplexity += $function['ccn'];
+
+ $linesValid = $function['executableLines'];
+ $linesCovered = $function['executedLines'];
+ $lineRate = $linesValid === 0 ? 0 : ($linesCovered / $linesValid);
+
+ $functionsLinesValid += $linesValid;
+ $functionsLinesCovered += $linesCovered;
+
+ $branchesValid = $function['executableBranches'];
+ $branchesCovered = $function['executedBranches'];
+ $branchRate = $branchesValid === 0 ? 0 : ($branchesCovered / $branchesValid);
+
+ $functionsBranchesValid += $branchesValid;
+ $functionsBranchesCovered += $branchesValid;
+
+ $methodElement = $document->createElement('method');
+
+ $methodElement->setAttribute('name', $functionName);
+ $methodElement->setAttribute('signature', $function['signature']);
+ $methodElement->setAttribute('line-rate', (string) $lineRate);
+ $methodElement->setAttribute('branch-rate', (string) $branchRate);
+ $methodElement->setAttribute('complexity', (string) $function['ccn']);
+
+ $methodLinesElement = $document->createElement('lines');
+
+ $methodElement->appendChild($methodLinesElement);
+
+ foreach (range($function['startLine'], $function['endLine']) as $line) {
+ if (!isset($coverageData[$line]) || $coverageData[$line] === null) {
+ continue;
+ }
+ $methodLineElement = $document->createElement('line');
+
+ $methodLineElement->setAttribute('number', (string) $line);
+ $methodLineElement->setAttribute('hits', (string) count($coverageData[$line]));
+
+ $methodLinesElement->appendChild($methodLineElement);
+
+ $classLineElement = $methodLineElement->cloneNode();
+
+ $classLinesElement->appendChild($classLineElement);
+ }
+
+ $methodsElement->appendChild($methodElement);
+ }
+
+ $packageElement->setAttribute('complexity', (string) $packageComplexity);
+
+ if ($functionsLinesValid === 0) {
+ continue;
+ }
+
+ $lineRate = $functionsLinesCovered / $functionsLinesValid;
+ $branchRate = $functionsBranchesValid === 0 ? 0 : ($functionsBranchesCovered / $functionsBranchesValid);
+
+ $classElement->setAttribute('line-rate', (string) $lineRate);
+ $classElement->setAttribute('branch-rate', (string) $branchRate);
+ $classElement->setAttribute('complexity', (string) $functionsComplexity);
+
+ $classesElement->appendChild($classElement);
+ }
+
+ $coverageElement->setAttribute('complexity', (string) $complexity);
+
+ $buffer = $document->saveXML();
+
+ if ($target !== null) {
+ Filesystem::createDirectory(dirname($target));
+
+ if (@file_put_contents($target, $buffer) === false) {
+ throw new WriteOperationFailedException($target);
+ }
+ }
+
+ return $buffer;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php b/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php
new file mode 100644
index 000000000..91f8ed59d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Crap4j.php
@@ -0,0 +1,153 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report;
+
+use function date;
+use function dirname;
+use function file_put_contents;
+use function htmlspecialchars;
+use function is_string;
+use function round;
+use DOMDocument;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException;
+use SebastianBergmann\CodeCoverage\Node\File;
+use SebastianBergmann\CodeCoverage\Util\Filesystem;
+
+final class Crap4j
+{
+ /**
+ * @var int
+ */
+ private $threshold;
+
+ public function __construct(int $threshold = 30)
+ {
+ $this->threshold = $threshold;
+ }
+
+ /**
+ * @throws WriteOperationFailedException
+ */
+ public function process(CodeCoverage $coverage, ?string $target = null, ?string $name = null): string
+ {
+ $document = new DOMDocument('1.0', 'UTF-8');
+ $document->formatOutput = true;
+
+ $root = $document->createElement('crap_result');
+ $document->appendChild($root);
+
+ $project = $document->createElement('project', is_string($name) ? $name : '');
+ $root->appendChild($project);
+ $root->appendChild($document->createElement('timestamp', date('Y-m-d H:i:s')));
+
+ $stats = $document->createElement('stats');
+ $methodsNode = $document->createElement('methods');
+
+ $report = $coverage->getReport();
+ unset($coverage);
+
+ $fullMethodCount = 0;
+ $fullCrapMethodCount = 0;
+ $fullCrapLoad = 0;
+ $fullCrap = 0;
+
+ foreach ($report as $item) {
+ $namespace = 'global';
+
+ if (!$item instanceof File) {
+ continue;
+ }
+
+ $file = $document->createElement('file');
+ $file->setAttribute('name', $item->pathAsString());
+
+ $classes = $item->classesAndTraits();
+
+ foreach ($classes as $className => $class) {
+ foreach ($class['methods'] as $methodName => $method) {
+ $crapLoad = $this->crapLoad((float) $method['crap'], $method['ccn'], $method['coverage']);
+
+ $fullCrap += $method['crap'];
+ $fullCrapLoad += $crapLoad;
+ $fullMethodCount++;
+
+ if ($method['crap'] >= $this->threshold) {
+ $fullCrapMethodCount++;
+ }
+
+ $methodNode = $document->createElement('method');
+
+ if (!empty($class['namespace'])) {
+ $namespace = $class['namespace'];
+ }
+
+ $methodNode->appendChild($document->createElement('package', $namespace));
+ $methodNode->appendChild($document->createElement('className', $className));
+ $methodNode->appendChild($document->createElement('methodName', $methodName));
+ $methodNode->appendChild($document->createElement('methodSignature', htmlspecialchars($method['signature'])));
+ $methodNode->appendChild($document->createElement('fullMethod', htmlspecialchars($method['signature'])));
+ $methodNode->appendChild($document->createElement('crap', (string) $this->roundValue((float) $method['crap'])));
+ $methodNode->appendChild($document->createElement('complexity', (string) $method['ccn']));
+ $methodNode->appendChild($document->createElement('coverage', (string) $this->roundValue($method['coverage'])));
+ $methodNode->appendChild($document->createElement('crapLoad', (string) round($crapLoad)));
+
+ $methodsNode->appendChild($methodNode);
+ }
+ }
+ }
+
+ $stats->appendChild($document->createElement('name', 'Method Crap Stats'));
+ $stats->appendChild($document->createElement('methodCount', (string) $fullMethodCount));
+ $stats->appendChild($document->createElement('crapMethodCount', (string) $fullCrapMethodCount));
+ $stats->appendChild($document->createElement('crapLoad', (string) round($fullCrapLoad)));
+ $stats->appendChild($document->createElement('totalCrap', (string) $fullCrap));
+
+ $crapMethodPercent = 0;
+
+ if ($fullMethodCount > 0) {
+ $crapMethodPercent = $this->roundValue((100 * $fullCrapMethodCount) / $fullMethodCount);
+ }
+
+ $stats->appendChild($document->createElement('crapMethodPercent', (string) $crapMethodPercent));
+
+ $root->appendChild($stats);
+ $root->appendChild($methodsNode);
+
+ $buffer = $document->saveXML();
+
+ if ($target !== null) {
+ Filesystem::createDirectory(dirname($target));
+
+ if (@file_put_contents($target, $buffer) === false) {
+ throw new WriteOperationFailedException($target);
+ }
+ }
+
+ return $buffer;
+ }
+
+ private function crapLoad(float $crapValue, int $cyclomaticComplexity, float $coveragePercent): float
+ {
+ $crapLoad = 0;
+
+ if ($crapValue >= $this->threshold) {
+ $crapLoad += $cyclomaticComplexity * (1.0 - $coveragePercent / 100);
+ $crapLoad += $cyclomaticComplexity / $this->threshold;
+ }
+
+ return $crapLoad;
+ }
+
+ private function roundValue(float $value): float
+ {
+ return round($value, 2);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php
new file mode 100644
index 000000000..69935d734
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Facade.php
@@ -0,0 +1,147 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use const DIRECTORY_SEPARATOR;
+use function copy;
+use function date;
+use function dirname;
+use function substr;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\InvalidArgumentException;
+use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
+use SebastianBergmann\CodeCoverage\Util\Filesystem;
+
+final class Facade
+{
+ /**
+ * @var string
+ */
+ private $templatePath;
+
+ /**
+ * @var string
+ */
+ private $generator;
+
+ /**
+ * @var int
+ */
+ private $lowUpperBound;
+
+ /**
+ * @var int
+ */
+ private $highLowerBound;
+
+ public function __construct(int $lowUpperBound = 50, int $highLowerBound = 90, string $generator = '')
+ {
+ if ($lowUpperBound > $highLowerBound) {
+ throw new InvalidArgumentException(
+ '$lowUpperBound must not be larger than $highLowerBound'
+ );
+ }
+
+ $this->generator = $generator;
+ $this->highLowerBound = $highLowerBound;
+ $this->lowUpperBound = $lowUpperBound;
+ $this->templatePath = __DIR__ . '/Renderer/Template/';
+ }
+
+ public function process(CodeCoverage $coverage, string $target): void
+ {
+ $target = $this->directory($target);
+ $report = $coverage->getReport();
+ $date = date('D M j G:i:s T Y');
+
+ $dashboard = new Dashboard(
+ $this->templatePath,
+ $this->generator,
+ $date,
+ $this->lowUpperBound,
+ $this->highLowerBound,
+ $coverage->collectsBranchAndPathCoverage()
+ );
+
+ $directory = new Directory(
+ $this->templatePath,
+ $this->generator,
+ $date,
+ $this->lowUpperBound,
+ $this->highLowerBound,
+ $coverage->collectsBranchAndPathCoverage()
+ );
+
+ $file = new File(
+ $this->templatePath,
+ $this->generator,
+ $date,
+ $this->lowUpperBound,
+ $this->highLowerBound,
+ $coverage->collectsBranchAndPathCoverage()
+ );
+
+ $directory->render($report, $target . 'index.html');
+ $dashboard->render($report, $target . 'dashboard.html');
+
+ foreach ($report as $node) {
+ $id = $node->id();
+
+ if ($node instanceof DirectoryNode) {
+ Filesystem::createDirectory($target . $id);
+
+ $directory->render($node, $target . $id . '/index.html');
+ $dashboard->render($node, $target . $id . '/dashboard.html');
+ } else {
+ $dir = dirname($target . $id);
+
+ Filesystem::createDirectory($dir);
+
+ $file->render($node, $target . $id);
+ }
+ }
+
+ $this->copyFiles($target);
+ }
+
+ private function copyFiles(string $target): void
+ {
+ $dir = $this->directory($target . '_css');
+
+ copy($this->templatePath . 'css/bootstrap.min.css', $dir . 'bootstrap.min.css');
+ copy($this->templatePath . 'css/nv.d3.min.css', $dir . 'nv.d3.min.css');
+ copy($this->templatePath . 'css/style.css', $dir . 'style.css');
+ copy($this->templatePath . 'css/custom.css', $dir . 'custom.css');
+ copy($this->templatePath . 'css/octicons.css', $dir . 'octicons.css');
+
+ $dir = $this->directory($target . '_icons');
+ copy($this->templatePath . 'icons/file-code.svg', $dir . 'file-code.svg');
+ copy($this->templatePath . 'icons/file-directory.svg', $dir . 'file-directory.svg');
+
+ $dir = $this->directory($target . '_js');
+ copy($this->templatePath . 'js/bootstrap.min.js', $dir . 'bootstrap.min.js');
+ copy($this->templatePath . 'js/popper.min.js', $dir . 'popper.min.js');
+ copy($this->templatePath . 'js/d3.min.js', $dir . 'd3.min.js');
+ copy($this->templatePath . 'js/jquery.min.js', $dir . 'jquery.min.js');
+ copy($this->templatePath . 'js/nv.d3.min.js', $dir . 'nv.d3.min.js');
+ copy($this->templatePath . 'js/file.js', $dir . 'file.js');
+ }
+
+ private function directory(string $directory): string
+ {
+ if (substr($directory, -1, 1) != DIRECTORY_SEPARATOR) {
+ $directory .= DIRECTORY_SEPARATOR;
+ }
+
+ Filesystem::createDirectory($directory);
+
+ return $directory;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php
new file mode 100644
index 000000000..fe285b186
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php
@@ -0,0 +1,314 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use function array_pop;
+use function count;
+use function sprintf;
+use function str_repeat;
+use function substr_count;
+use SebastianBergmann\CodeCoverage\Node\AbstractNode;
+use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
+use SebastianBergmann\CodeCoverage\Node\File as FileNode;
+use SebastianBergmann\CodeCoverage\Version;
+use SebastianBergmann\Environment\Runtime;
+use SebastianBergmann\Template\Template;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+abstract class Renderer
+{
+ /**
+ * @var string
+ */
+ protected $templatePath;
+
+ /**
+ * @var string
+ */
+ protected $generator;
+
+ /**
+ * @var string
+ */
+ protected $date;
+
+ /**
+ * @var int
+ */
+ protected $lowUpperBound;
+
+ /**
+ * @var int
+ */
+ protected $highLowerBound;
+
+ /**
+ * @var bool
+ */
+ protected $hasBranchCoverage;
+
+ /**
+ * @var string
+ */
+ protected $version;
+
+ public function __construct(string $templatePath, string $generator, string $date, int $lowUpperBound, int $highLowerBound, bool $hasBranchCoverage)
+ {
+ $this->templatePath = $templatePath;
+ $this->generator = $generator;
+ $this->date = $date;
+ $this->lowUpperBound = $lowUpperBound;
+ $this->highLowerBound = $highLowerBound;
+ $this->version = Version::id();
+ $this->hasBranchCoverage = $hasBranchCoverage;
+ }
+
+ protected function renderItemTemplate(Template $template, array $data): string
+ {
+ $numSeparator = '&nbsp;/&nbsp;';
+
+ if (isset($data['numClasses']) && $data['numClasses'] > 0) {
+ $classesLevel = $this->colorLevel($data['testedClassesPercent']);
+
+ $classesNumber = $data['numTestedClasses'] . $numSeparator .
+ $data['numClasses'];
+
+ $classesBar = $this->coverageBar(
+ $data['testedClassesPercent']
+ );
+ } else {
+ $classesLevel = '';
+ $classesNumber = '0' . $numSeparator . '0';
+ $classesBar = '';
+ $data['testedClassesPercentAsString'] = 'n/a';
+ }
+
+ if ($data['numMethods'] > 0) {
+ $methodsLevel = $this->colorLevel($data['testedMethodsPercent']);
+
+ $methodsNumber = $data['numTestedMethods'] . $numSeparator .
+ $data['numMethods'];
+
+ $methodsBar = $this->coverageBar(
+ $data['testedMethodsPercent']
+ );
+ } else {
+ $methodsLevel = '';
+ $methodsNumber = '0' . $numSeparator . '0';
+ $methodsBar = '';
+ $data['testedMethodsPercentAsString'] = 'n/a';
+ }
+
+ if ($data['numExecutableLines'] > 0) {
+ $linesLevel = $this->colorLevel($data['linesExecutedPercent']);
+
+ $linesNumber = $data['numExecutedLines'] . $numSeparator .
+ $data['numExecutableLines'];
+
+ $linesBar = $this->coverageBar(
+ $data['linesExecutedPercent']
+ );
+ } else {
+ $linesLevel = '';
+ $linesNumber = '0' . $numSeparator . '0';
+ $linesBar = '';
+ $data['linesExecutedPercentAsString'] = 'n/a';
+ }
+
+ if ($data['numExecutablePaths'] > 0) {
+ $pathsLevel = $this->colorLevel($data['pathsExecutedPercent']);
+
+ $pathsNumber = $data['numExecutedPaths'] . $numSeparator .
+ $data['numExecutablePaths'];
+
+ $pathsBar = $this->coverageBar(
+ $data['pathsExecutedPercent']
+ );
+ } else {
+ $pathsLevel = '';
+ $pathsNumber = '0' . $numSeparator . '0';
+ $pathsBar = '';
+ $data['pathsExecutedPercentAsString'] = 'n/a';
+ }
+
+ if ($data['numExecutableBranches'] > 0) {
+ $branchesLevel = $this->colorLevel($data['branchesExecutedPercent']);
+
+ $branchesNumber = $data['numExecutedBranches'] . $numSeparator .
+ $data['numExecutableBranches'];
+
+ $branchesBar = $this->coverageBar(
+ $data['branchesExecutedPercent']
+ );
+ } else {
+ $branchesLevel = '';
+ $branchesNumber = '0' . $numSeparator . '0';
+ $branchesBar = '';
+ $data['branchesExecutedPercentAsString'] = 'n/a';
+ }
+
+ $template->setVar(
+ [
+ 'icon' => $data['icon'] ?? '',
+ 'crap' => $data['crap'] ?? '',
+ 'name' => $data['name'],
+ 'lines_bar' => $linesBar,
+ 'lines_executed_percent' => $data['linesExecutedPercentAsString'],
+ 'lines_level' => $linesLevel,
+ 'lines_number' => $linesNumber,
+ 'paths_bar' => $pathsBar,
+ 'paths_executed_percent' => $data['pathsExecutedPercentAsString'],
+ 'paths_level' => $pathsLevel,
+ 'paths_number' => $pathsNumber,
+ 'branches_bar' => $branchesBar,
+ 'branches_executed_percent' => $data['branchesExecutedPercentAsString'],
+ 'branches_level' => $branchesLevel,
+ 'branches_number' => $branchesNumber,
+ 'methods_bar' => $methodsBar,
+ 'methods_tested_percent' => $data['testedMethodsPercentAsString'],
+ 'methods_level' => $methodsLevel,
+ 'methods_number' => $methodsNumber,
+ 'classes_bar' => $classesBar,
+ 'classes_tested_percent' => $data['testedClassesPercentAsString'] ?? '',
+ 'classes_level' => $classesLevel,
+ 'classes_number' => $classesNumber,
+ ]
+ );
+
+ return $template->render();
+ }
+
+ protected function setCommonTemplateVariables(Template $template, AbstractNode $node): void
+ {
+ $template->setVar(
+ [
+ 'id' => $node->id(),
+ 'full_path' => $node->pathAsString(),
+ 'path_to_root' => $this->pathToRoot($node),
+ 'breadcrumbs' => $this->breadcrumbs($node),
+ 'date' => $this->date,
+ 'version' => $this->version,
+ 'runtime' => $this->runtimeString(),
+ 'generator' => $this->generator,
+ 'low_upper_bound' => $this->lowUpperBound,
+ 'high_lower_bound' => $this->highLowerBound,
+ ]
+ );
+ }
+
+ protected function breadcrumbs(AbstractNode $node): string
+ {
+ $breadcrumbs = '';
+ $path = $node->pathAsArray();
+ $pathToRoot = [];
+ $max = count($path);
+
+ if ($node instanceof FileNode) {
+ $max--;
+ }
+
+ for ($i = 0; $i < $max; $i++) {
+ $pathToRoot[] = str_repeat('../', $i);
+ }
+
+ foreach ($path as $step) {
+ if ($step !== $node) {
+ $breadcrumbs .= $this->inactiveBreadcrumb(
+ $step,
+ array_pop($pathToRoot)
+ );
+ } else {
+ $breadcrumbs .= $this->activeBreadcrumb($step);
+ }
+ }
+
+ return $breadcrumbs;
+ }
+
+ protected function activeBreadcrumb(AbstractNode $node): string
+ {
+ $buffer = sprintf(
+ ' <li class="breadcrumb-item active">%s</li>' . "\n",
+ $node->name()
+ );
+
+ if ($node instanceof DirectoryNode) {
+ $buffer .= ' <li class="breadcrumb-item">(<a href="dashboard.html">Dashboard</a>)</li>' . "\n";
+ }
+
+ return $buffer;
+ }
+
+ protected function inactiveBreadcrumb(AbstractNode $node, string $pathToRoot): string
+ {
+ return sprintf(
+ ' <li class="breadcrumb-item"><a href="%sindex.html">%s</a></li>' . "\n",
+ $pathToRoot,
+ $node->name()
+ );
+ }
+
+ protected function pathToRoot(AbstractNode $node): string
+ {
+ $id = $node->id();
+ $depth = substr_count($id, '/');
+
+ if ($id !== 'index' &&
+ $node instanceof DirectoryNode) {
+ $depth++;
+ }
+
+ return str_repeat('../', $depth);
+ }
+
+ protected function coverageBar(float $percent): string
+ {
+ $level = $this->colorLevel($percent);
+
+ $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'coverage_bar_branch.html' : 'coverage_bar.html');
+ $template = new Template(
+ $templateName,
+ '{{',
+ '}}'
+ );
+
+ $template->setVar(['level' => $level, 'percent' => sprintf('%.2F', $percent)]);
+
+ return $template->render();
+ }
+
+ protected function colorLevel(float $percent): string
+ {
+ if ($percent <= $this->lowUpperBound) {
+ return 'danger';
+ }
+
+ if ($percent > $this->lowUpperBound &&
+ $percent < $this->highLowerBound) {
+ return 'warning';
+ }
+
+ return 'success';
+ }
+
+ private function runtimeString(): string
+ {
+ $runtime = new Runtime;
+
+ return sprintf(
+ '<a href="%s" target="_top">%s %s</a>',
+ $runtime->getVendorUrl(),
+ $runtime->getName(),
+ $runtime->getVersion()
+ );
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php
new file mode 100644
index 000000000..b44870b53
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php
@@ -0,0 +1,288 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use function array_values;
+use function arsort;
+use function asort;
+use function count;
+use function explode;
+use function floor;
+use function json_encode;
+use function sprintf;
+use function str_replace;
+use SebastianBergmann\CodeCoverage\Node\AbstractNode;
+use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
+use SebastianBergmann\Template\Template;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Dashboard extends Renderer
+{
+ public function render(DirectoryNode $node, string $file): void
+ {
+ $classes = $node->classesAndTraits();
+ $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'dashboard_branch.html' : 'dashboard.html');
+ $template = new Template(
+ $templateName,
+ '{{',
+ '}}'
+ );
+
+ $this->setCommonTemplateVariables($template, $node);
+
+ $baseLink = $node->id() . '/';
+ $complexity = $this->complexity($classes, $baseLink);
+ $coverageDistribution = $this->coverageDistribution($classes);
+ $insufficientCoverage = $this->insufficientCoverage($classes, $baseLink);
+ $projectRisks = $this->projectRisks($classes, $baseLink);
+
+ $template->setVar(
+ [
+ 'insufficient_coverage_classes' => $insufficientCoverage['class'],
+ 'insufficient_coverage_methods' => $insufficientCoverage['method'],
+ 'project_risks_classes' => $projectRisks['class'],
+ 'project_risks_methods' => $projectRisks['method'],
+ 'complexity_class' => $complexity['class'],
+ 'complexity_method' => $complexity['method'],
+ 'class_coverage_distribution' => $coverageDistribution['class'],
+ 'method_coverage_distribution' => $coverageDistribution['method'],
+ ]
+ );
+
+ $template->renderTo($file);
+ }
+
+ protected function activeBreadcrumb(AbstractNode $node): string
+ {
+ return sprintf(
+ ' <li class="breadcrumb-item"><a href="index.html">%s</a></li>' . "\n" .
+ ' <li class="breadcrumb-item active">(Dashboard)</li>' . "\n",
+ $node->name()
+ );
+ }
+
+ /**
+ * Returns the data for the Class/Method Complexity charts.
+ */
+ private function complexity(array $classes, string $baseLink): array
+ {
+ $result = ['class' => [], 'method' => []];
+
+ foreach ($classes as $className => $class) {
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($className !== '*') {
+ $methodName = $className . '::' . $methodName;
+ }
+
+ $result['method'][] = [
+ $method['coverage'],
+ $method['ccn'],
+ sprintf(
+ '<a href="%s">%s</a>',
+ str_replace($baseLink, '', $method['link']),
+ $methodName
+ ),
+ ];
+ }
+
+ $result['class'][] = [
+ $class['coverage'],
+ $class['ccn'],
+ sprintf(
+ '<a href="%s">%s</a>',
+ str_replace($baseLink, '', $class['link']),
+ $className
+ ),
+ ];
+ }
+
+ return [
+ 'class' => json_encode($result['class']),
+ 'method' => json_encode($result['method']),
+ ];
+ }
+
+ /**
+ * Returns the data for the Class / Method Coverage Distribution chart.
+ */
+ private function coverageDistribution(array $classes): array
+ {
+ $result = [
+ 'class' => [
+ '0%' => 0,
+ '0-10%' => 0,
+ '10-20%' => 0,
+ '20-30%' => 0,
+ '30-40%' => 0,
+ '40-50%' => 0,
+ '50-60%' => 0,
+ '60-70%' => 0,
+ '70-80%' => 0,
+ '80-90%' => 0,
+ '90-100%' => 0,
+ '100%' => 0,
+ ],
+ 'method' => [
+ '0%' => 0,
+ '0-10%' => 0,
+ '10-20%' => 0,
+ '20-30%' => 0,
+ '30-40%' => 0,
+ '40-50%' => 0,
+ '50-60%' => 0,
+ '60-70%' => 0,
+ '70-80%' => 0,
+ '80-90%' => 0,
+ '90-100%' => 0,
+ '100%' => 0,
+ ],
+ ];
+
+ foreach ($classes as $class) {
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($method['coverage'] === 0) {
+ $result['method']['0%']++;
+ } elseif ($method['coverage'] === 100) {
+ $result['method']['100%']++;
+ } else {
+ $key = floor($method['coverage'] / 10) * 10;
+ $key = $key . '-' . ($key + 10) . '%';
+ $result['method'][$key]++;
+ }
+ }
+
+ if ($class['coverage'] === 0) {
+ $result['class']['0%']++;
+ } elseif ($class['coverage'] === 100) {
+ $result['class']['100%']++;
+ } else {
+ $key = floor($class['coverage'] / 10) * 10;
+ $key = $key . '-' . ($key + 10) . '%';
+ $result['class'][$key]++;
+ }
+ }
+
+ return [
+ 'class' => json_encode(array_values($result['class'])),
+ 'method' => json_encode(array_values($result['method'])),
+ ];
+ }
+
+ /**
+ * Returns the classes / methods with insufficient coverage.
+ */
+ private function insufficientCoverage(array $classes, string $baseLink): array
+ {
+ $leastTestedClasses = [];
+ $leastTestedMethods = [];
+ $result = ['class' => '', 'method' => ''];
+
+ foreach ($classes as $className => $class) {
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($method['coverage'] < $this->highLowerBound) {
+ $key = $methodName;
+
+ if ($className !== '*') {
+ $key = $className . '::' . $methodName;
+ }
+
+ $leastTestedMethods[$key] = $method['coverage'];
+ }
+ }
+
+ if ($class['coverage'] < $this->highLowerBound) {
+ $leastTestedClasses[$className] = $class['coverage'];
+ }
+ }
+
+ asort($leastTestedClasses);
+ asort($leastTestedMethods);
+
+ foreach ($leastTestedClasses as $className => $coverage) {
+ $result['class'] .= sprintf(
+ ' <tr><td><a href="%s">%s</a></td><td class="text-right">%d%%</td></tr>' . "\n",
+ str_replace($baseLink, '', $classes[$className]['link']),
+ $className,
+ $coverage
+ );
+ }
+
+ foreach ($leastTestedMethods as $methodName => $coverage) {
+ [$class, $method] = explode('::', $methodName);
+
+ $result['method'] .= sprintf(
+ ' <tr><td><a href="%s"><abbr title="%s">%s</abbr></a></td><td class="text-right">%d%%</td></tr>' . "\n",
+ str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']),
+ $methodName,
+ $method,
+ $coverage
+ );
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns the project risks according to the CRAP index.
+ */
+ private function projectRisks(array $classes, string $baseLink): array
+ {
+ $classRisks = [];
+ $methodRisks = [];
+ $result = ['class' => '', 'method' => ''];
+
+ foreach ($classes as $className => $class) {
+ foreach ($class['methods'] as $methodName => $method) {
+ if ($method['coverage'] < $this->highLowerBound && $method['ccn'] > 1) {
+ $key = $methodName;
+
+ if ($className !== '*') {
+ $key = $className . '::' . $methodName;
+ }
+
+ $methodRisks[$key] = $method['crap'];
+ }
+ }
+
+ if ($class['coverage'] < $this->highLowerBound &&
+ $class['ccn'] > count($class['methods'])) {
+ $classRisks[$className] = $class['crap'];
+ }
+ }
+
+ arsort($classRisks);
+ arsort($methodRisks);
+
+ foreach ($classRisks as $className => $crap) {
+ $result['class'] .= sprintf(
+ ' <tr><td><a href="%s">%s</a></td><td class="text-right">%d</td></tr>' . "\n",
+ str_replace($baseLink, '', $classes[$className]['link']),
+ $className,
+ $crap
+ );
+ }
+
+ foreach ($methodRisks as $methodName => $crap) {
+ [$class, $method] = explode('::', $methodName);
+
+ $result['method'] .= sprintf(
+ ' <tr><td><a href="%s"><abbr title="%s">%s</abbr></a></td><td class="text-right">%d</td></tr>' . "\n",
+ str_replace($baseLink, '', $classes[$class]['methods'][$method]['link']),
+ $methodName,
+ $method,
+ $crap
+ );
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php
new file mode 100644
index 000000000..faacbc31d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php
@@ -0,0 +1,113 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use function count;
+use function sprintf;
+use function str_repeat;
+use SebastianBergmann\CodeCoverage\Node\AbstractNode as Node;
+use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
+use SebastianBergmann\Template\Template;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Directory extends Renderer
+{
+ public function render(DirectoryNode $node, string $file): void
+ {
+ $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'directory_branch.html' : 'directory.html');
+ $template = new Template($templateName, '{{', '}}');
+
+ $this->setCommonTemplateVariables($template, $node);
+
+ $items = $this->renderItem($node, true);
+
+ foreach ($node->directories() as $item) {
+ $items .= $this->renderItem($item);
+ }
+
+ foreach ($node->files() as $item) {
+ $items .= $this->renderItem($item);
+ }
+
+ $template->setVar(
+ [
+ 'id' => $node->id(),
+ 'items' => $items,
+ ]
+ );
+
+ $template->renderTo($file);
+ }
+
+ private function renderItem(Node $node, bool $total = false): string
+ {
+ $data = [
+ 'numClasses' => $node->numberOfClassesAndTraits(),
+ 'numTestedClasses' => $node->numberOfTestedClassesAndTraits(),
+ 'numMethods' => $node->numberOfFunctionsAndMethods(),
+ 'numTestedMethods' => $node->numberOfTestedFunctionsAndMethods(),
+ 'linesExecutedPercent' => $node->percentageOfExecutedLines()->asFloat(),
+ 'linesExecutedPercentAsString' => $node->percentageOfExecutedLines()->asString(),
+ 'numExecutedLines' => $node->numberOfExecutedLines(),
+ 'numExecutableLines' => $node->numberOfExecutableLines(),
+ 'branchesExecutedPercent' => $node->percentageOfExecutedBranches()->asFloat(),
+ 'branchesExecutedPercentAsString' => $node->percentageOfExecutedBranches()->asString(),
+ 'numExecutedBranches' => $node->numberOfExecutedBranches(),
+ 'numExecutableBranches' => $node->numberOfExecutableBranches(),
+ 'pathsExecutedPercent' => $node->percentageOfExecutedPaths()->asFloat(),
+ 'pathsExecutedPercentAsString' => $node->percentageOfExecutedPaths()->asString(),
+ 'numExecutedPaths' => $node->numberOfExecutedPaths(),
+ 'numExecutablePaths' => $node->numberOfExecutablePaths(),
+ 'testedMethodsPercent' => $node->percentageOfTestedFunctionsAndMethods()->asFloat(),
+ 'testedMethodsPercentAsString' => $node->percentageOfTestedFunctionsAndMethods()->asString(),
+ 'testedClassesPercent' => $node->percentageOfTestedClassesAndTraits()->asFloat(),
+ 'testedClassesPercentAsString' => $node->percentageOfTestedClassesAndTraits()->asString(),
+ ];
+
+ if ($total) {
+ $data['name'] = 'Total';
+ } else {
+ $up = str_repeat('../', count($node->pathAsArray()) - 2);
+ $data['icon'] = sprintf('<img src="%s_icons/file-code.svg" class="octicon" />', $up);
+
+ if ($node instanceof DirectoryNode) {
+ $data['name'] = sprintf(
+ '<a href="%s/index.html">%s</a>',
+ $node->name(),
+ $node->name()
+ );
+ $data['icon'] = sprintf('<img src="%s_icons/file-directory.svg" class="octicon" />', $up);
+ } elseif ($this->hasBranchCoverage) {
+ $data['name'] = sprintf(
+ '%s <a class="small" href="%s.html">[line]</a> <a class="small" href="%s_branch.html">[branch]</a> <a class="small" href="%s_path.html">[path]</a>',
+ $node->name(),
+ $node->name(),
+ $node->name(),
+ $node->name()
+ );
+ } else {
+ $data['name'] = sprintf(
+ '<a href="%s.html">%s</a>',
+ $node->name(),
+ $node->name()
+ );
+ }
+ }
+
+ $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'directory_item_branch.html' : 'directory_item.html');
+
+ return $this->renderItemTemplate(
+ new Template($templateName, '{{', '}}'),
+ $data
+ );
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php
new file mode 100644
index 000000000..429730192
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php
@@ -0,0 +1,1149 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Html;
+
+use const ENT_COMPAT;
+use const ENT_HTML401;
+use const ENT_SUBSTITUTE;
+use const T_ABSTRACT;
+use const T_ARRAY;
+use const T_AS;
+use const T_BREAK;
+use const T_CALLABLE;
+use const T_CASE;
+use const T_CATCH;
+use const T_CLASS;
+use const T_CLONE;
+use const T_COMMENT;
+use const T_CONST;
+use const T_CONTINUE;
+use const T_DECLARE;
+use const T_DEFAULT;
+use const T_DO;
+use const T_DOC_COMMENT;
+use const T_ECHO;
+use const T_ELSE;
+use const T_ELSEIF;
+use const T_EMPTY;
+use const T_ENDDECLARE;
+use const T_ENDFOR;
+use const T_ENDFOREACH;
+use const T_ENDIF;
+use const T_ENDSWITCH;
+use const T_ENDWHILE;
+use const T_EVAL;
+use const T_EXIT;
+use const T_EXTENDS;
+use const T_FINAL;
+use const T_FINALLY;
+use const T_FOR;
+use const T_FOREACH;
+use const T_FUNCTION;
+use const T_GLOBAL;
+use const T_GOTO;
+use const T_HALT_COMPILER;
+use const T_IF;
+use const T_IMPLEMENTS;
+use const T_INCLUDE;
+use const T_INCLUDE_ONCE;
+use const T_INLINE_HTML;
+use const T_INSTANCEOF;
+use const T_INSTEADOF;
+use const T_INTERFACE;
+use const T_ISSET;
+use const T_LIST;
+use const T_NAMESPACE;
+use const T_NEW;
+use const T_PRINT;
+use const T_PRIVATE;
+use const T_PROTECTED;
+use const T_PUBLIC;
+use const T_REQUIRE;
+use const T_REQUIRE_ONCE;
+use const T_RETURN;
+use const T_STATIC;
+use const T_SWITCH;
+use const T_THROW;
+use const T_TRAIT;
+use const T_TRY;
+use const T_UNSET;
+use const T_USE;
+use const T_VAR;
+use const T_WHILE;
+use const T_YIELD;
+use const T_YIELD_FROM;
+use function array_key_exists;
+use function array_pop;
+use function array_unique;
+use function constant;
+use function count;
+use function defined;
+use function explode;
+use function file_get_contents;
+use function htmlspecialchars;
+use function is_string;
+use function sprintf;
+use function str_replace;
+use function substr;
+use function token_get_all;
+use function trim;
+use PHPUnit\Runner\BaseTestRunner;
+use SebastianBergmann\CodeCoverage\Node\File as FileNode;
+use SebastianBergmann\CodeCoverage\Util\Percentage;
+use SebastianBergmann\Template\Template;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class File extends Renderer
+{
+ /**
+ * @psalm-var array<int,true>
+ */
+ private static $keywordTokens = [];
+
+ /**
+ * @var array
+ */
+ private static $formattedSourceCache = [];
+
+ /**
+ * @var int
+ */
+ private $htmlSpecialCharsFlags = ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE;
+
+ public function render(FileNode $node, string $file): void
+ {
+ $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'file_branch.html' : 'file.html');
+ $template = new Template($templateName, '{{', '}}');
+ $this->setCommonTemplateVariables($template, $node);
+
+ $template->setVar(
+ [
+ 'items' => $this->renderItems($node),
+ 'lines' => $this->renderSourceWithLineCoverage($node),
+ 'legend' => '<p><span class="success"><strong>Executed</strong></span><span class="danger"><strong>Not Executed</strong></span><span class="warning"><strong>Dead Code</strong></span></p>',
+ 'structure' => '',
+ ]
+ );
+
+ $template->renderTo($file . '.html');
+
+ if ($this->hasBranchCoverage) {
+ $template->setVar(
+ [
+ 'items' => $this->renderItems($node),
+ 'lines' => $this->renderSourceWithBranchCoverage($node),
+ 'legend' => '<p><span class="success"><strong>Fully covered</strong></span><span class="warning"><strong>Partially covered</strong></span><span class="danger"><strong>Not covered</strong></span></p>',
+ 'structure' => $this->renderBranchStructure($node),
+ ]
+ );
+
+ $template->renderTo($file . '_branch.html');
+
+ $template->setVar(
+ [
+ 'items' => $this->renderItems($node),
+ 'lines' => $this->renderSourceWithPathCoverage($node),
+ 'legend' => '<p><span class="success"><strong>Fully covered</strong></span><span class="warning"><strong>Partially covered</strong></span><span class="danger"><strong>Not covered</strong></span></p>',
+ 'structure' => $this->renderPathStructure($node),
+ ]
+ );
+
+ $template->renderTo($file . '_path.html');
+ }
+ }
+
+ private function renderItems(FileNode $node): string
+ {
+ $templateName = $this->templatePath . ($this->hasBranchCoverage ? 'file_item_branch.html' : 'file_item.html');
+ $template = new Template($templateName, '{{', '}}');
+
+ $methodTemplateName = $this->templatePath . ($this->hasBranchCoverage ? 'method_item_branch.html' : 'method_item.html');
+ $methodItemTemplate = new Template(
+ $methodTemplateName,
+ '{{',
+ '}}'
+ );
+
+ $items = $this->renderItemTemplate(
+ $template,
+ [
+ 'name' => 'Total',
+ 'numClasses' => $node->numberOfClassesAndTraits(),
+ 'numTestedClasses' => $node->numberOfTestedClassesAndTraits(),
+ 'numMethods' => $node->numberOfFunctionsAndMethods(),
+ 'numTestedMethods' => $node->numberOfTestedFunctionsAndMethods(),
+ 'linesExecutedPercent' => $node->percentageOfExecutedLines()->asFloat(),
+ 'linesExecutedPercentAsString' => $node->percentageOfExecutedLines()->asString(),
+ 'numExecutedLines' => $node->numberOfExecutedLines(),
+ 'numExecutableLines' => $node->numberOfExecutableLines(),
+ 'branchesExecutedPercent' => $node->percentageOfExecutedBranches()->asFloat(),
+ 'branchesExecutedPercentAsString' => $node->percentageOfExecutedBranches()->asString(),
+ 'numExecutedBranches' => $node->numberOfExecutedBranches(),
+ 'numExecutableBranches' => $node->numberOfExecutableBranches(),
+ 'pathsExecutedPercent' => $node->percentageOfExecutedPaths()->asFloat(),
+ 'pathsExecutedPercentAsString' => $node->percentageOfExecutedPaths()->asString(),
+ 'numExecutedPaths' => $node->numberOfExecutedPaths(),
+ 'numExecutablePaths' => $node->numberOfExecutablePaths(),
+ 'testedMethodsPercent' => $node->percentageOfTestedFunctionsAndMethods()->asFloat(),
+ 'testedMethodsPercentAsString' => $node->percentageOfTestedFunctionsAndMethods()->asString(),
+ 'testedClassesPercent' => $node->percentageOfTestedClassesAndTraits()->asFloat(),
+ 'testedClassesPercentAsString' => $node->percentageOfTestedClassesAndTraits()->asString(),
+ 'crap' => '<abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr>',
+ ]
+ );
+
+ $items .= $this->renderFunctionItems(
+ $node->functions(),
+ $methodItemTemplate
+ );
+
+ $items .= $this->renderTraitOrClassItems(
+ $node->traits(),
+ $template,
+ $methodItemTemplate
+ );
+
+ $items .= $this->renderTraitOrClassItems(
+ $node->classes(),
+ $template,
+ $methodItemTemplate
+ );
+
+ return $items;
+ }
+
+ private function renderTraitOrClassItems(array $items, Template $template, Template $methodItemTemplate): string
+ {
+ $buffer = '';
+
+ if (empty($items)) {
+ return $buffer;
+ }
+
+ foreach ($items as $name => $item) {
+ $numMethods = 0;
+ $numTestedMethods = 0;
+
+ foreach ($item['methods'] as $method) {
+ if ($method['executableLines'] > 0) {
+ $numMethods++;
+
+ if ($method['executedLines'] === $method['executableLines']) {
+ $numTestedMethods++;
+ }
+ }
+ }
+
+ if ($item['executableLines'] > 0) {
+ $numClasses = 1;
+ $numTestedClasses = $numTestedMethods === $numMethods ? 1 : 0;
+ $linesExecutedPercentAsString = Percentage::fromFractionAndTotal(
+ $item['executedLines'],
+ $item['executableLines']
+ )->asString();
+ $branchesExecutedPercentAsString = Percentage::fromFractionAndTotal(
+ $item['executedBranches'],
+ $item['executableBranches']
+ )->asString();
+ $pathsExecutedPercentAsString = Percentage::fromFractionAndTotal(
+ $item['executedPaths'],
+ $item['executablePaths']
+ )->asString();
+ } else {
+ $numClasses = 0;
+ $numTestedClasses = 0;
+ $linesExecutedPercentAsString = 'n/a';
+ $branchesExecutedPercentAsString = 'n/a';
+ $pathsExecutedPercentAsString = 'n/a';
+ }
+
+ $testedMethodsPercentage = Percentage::fromFractionAndTotal(
+ $numTestedMethods,
+ $numMethods
+ );
+
+ $testedClassesPercentage = Percentage::fromFractionAndTotal(
+ $numTestedMethods === $numMethods ? 1 : 0,
+ 1
+ );
+
+ $buffer .= $this->renderItemTemplate(
+ $template,
+ [
+ 'name' => $this->abbreviateClassName($name),
+ 'numClasses' => $numClasses,
+ 'numTestedClasses' => $numTestedClasses,
+ 'numMethods' => $numMethods,
+ 'numTestedMethods' => $numTestedMethods,
+ 'linesExecutedPercent' => Percentage::fromFractionAndTotal(
+ $item['executedLines'],
+ $item['executableLines'],
+ )->asFloat(),
+ 'linesExecutedPercentAsString' => $linesExecutedPercentAsString,
+ 'numExecutedLines' => $item['executedLines'],
+ 'numExecutableLines' => $item['executableLines'],
+ 'branchesExecutedPercent' => Percentage::fromFractionAndTotal(
+ $item['executedBranches'],
+ $item['executableBranches'],
+ )->asFloat(),
+ 'branchesExecutedPercentAsString' => $branchesExecutedPercentAsString,
+ 'numExecutedBranches' => $item['executedBranches'],
+ 'numExecutableBranches' => $item['executableBranches'],
+ 'pathsExecutedPercent' => Percentage::fromFractionAndTotal(
+ $item['executedPaths'],
+ $item['executablePaths']
+ )->asFloat(),
+ 'pathsExecutedPercentAsString' => $pathsExecutedPercentAsString,
+ 'numExecutedPaths' => $item['executedPaths'],
+ 'numExecutablePaths' => $item['executablePaths'],
+ 'testedMethodsPercent' => $testedMethodsPercentage->asFloat(),
+ 'testedMethodsPercentAsString' => $testedMethodsPercentage->asString(),
+ 'testedClassesPercent' => $testedClassesPercentage->asFloat(),
+ 'testedClassesPercentAsString' => $testedClassesPercentage->asString(),
+ 'crap' => $item['crap'],
+ ]
+ );
+
+ foreach ($item['methods'] as $method) {
+ $buffer .= $this->renderFunctionOrMethodItem(
+ $methodItemTemplate,
+ $method,
+ '&nbsp;'
+ );
+ }
+ }
+
+ return $buffer;
+ }
+
+ private function renderFunctionItems(array $functions, Template $template): string
+ {
+ if (empty($functions)) {
+ return '';
+ }
+
+ $buffer = '';
+
+ foreach ($functions as $function) {
+ $buffer .= $this->renderFunctionOrMethodItem(
+ $template,
+ $function
+ );
+ }
+
+ return $buffer;
+ }
+
+ private function renderFunctionOrMethodItem(Template $template, array $item, string $indent = ''): string
+ {
+ $numMethods = 0;
+ $numTestedMethods = 0;
+
+ if ($item['executableLines'] > 0) {
+ $numMethods = 1;
+
+ if ($item['executedLines'] === $item['executableLines']) {
+ $numTestedMethods = 1;
+ }
+ }
+
+ $executedLinesPercentage = Percentage::fromFractionAndTotal(
+ $item['executedLines'],
+ $item['executableLines']
+ );
+
+ $executedBranchesPercentage = Percentage::fromFractionAndTotal(
+ $item['executedBranches'],
+ $item['executableBranches']
+ );
+
+ $executedPathsPercentage = Percentage::fromFractionAndTotal(
+ $item['executedPaths'],
+ $item['executablePaths']
+ );
+
+ $testedMethodsPercentage = Percentage::fromFractionAndTotal(
+ $numTestedMethods,
+ 1
+ );
+
+ return $this->renderItemTemplate(
+ $template,
+ [
+ 'name' => sprintf(
+ '%s<a href="#%d"><abbr title="%s">%s</abbr></a>',
+ $indent,
+ $item['startLine'],
+ htmlspecialchars($item['signature'], $this->htmlSpecialCharsFlags),
+ $item['functionName'] ?? $item['methodName']
+ ),
+ 'numMethods' => $numMethods,
+ 'numTestedMethods' => $numTestedMethods,
+ 'linesExecutedPercent' => $executedLinesPercentage->asFloat(),
+ 'linesExecutedPercentAsString' => $executedLinesPercentage->asString(),
+ 'numExecutedLines' => $item['executedLines'],
+ 'numExecutableLines' => $item['executableLines'],
+ 'branchesExecutedPercent' => $executedBranchesPercentage->asFloat(),
+ 'branchesExecutedPercentAsString' => $executedBranchesPercentage->asString(),
+ 'numExecutedBranches' => $item['executedBranches'],
+ 'numExecutableBranches' => $item['executableBranches'],
+ 'pathsExecutedPercent' => $executedPathsPercentage->asFloat(),
+ 'pathsExecutedPercentAsString' => $executedPathsPercentage->asString(),
+ 'numExecutedPaths' => $item['executedPaths'],
+ 'numExecutablePaths' => $item['executablePaths'],
+ 'testedMethodsPercent' => $testedMethodsPercentage->asFloat(),
+ 'testedMethodsPercentAsString' => $testedMethodsPercentage->asString(),
+ 'crap' => $item['crap'],
+ ]
+ );
+ }
+
+ private function renderSourceWithLineCoverage(FileNode $node): string
+ {
+ $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}');
+ $singleLineTemplate = new Template($this->templatePath . 'line.html.dist', '{{', '}}');
+
+ $coverageData = $node->lineCoverageData();
+ $testData = $node->testData();
+ $codeLines = $this->loadFile($node->pathAsString());
+ $lines = '';
+ $i = 1;
+
+ foreach ($codeLines as $line) {
+ $trClass = '';
+ $popoverContent = '';
+ $popoverTitle = '';
+
+ if (array_key_exists($i, $coverageData)) {
+ $numTests = ($coverageData[$i] ? count($coverageData[$i]) : 0);
+
+ if ($coverageData[$i] === null) {
+ $trClass = 'warning';
+ } elseif ($numTests === 0) {
+ $trClass = 'danger';
+ } else {
+ if ($numTests > 1) {
+ $popoverTitle = $numTests . ' tests cover line ' . $i;
+ } else {
+ $popoverTitle = '1 test covers line ' . $i;
+ }
+
+ $lineCss = 'covered-by-large-tests';
+ $popoverContent = '<ul>';
+
+ foreach ($coverageData[$i] as $test) {
+ if ($lineCss === 'covered-by-large-tests' && $testData[$test]['size'] === 'medium') {
+ $lineCss = 'covered-by-medium-tests';
+ } elseif ($testData[$test]['size'] === 'small') {
+ $lineCss = 'covered-by-small-tests';
+ }
+
+ $popoverContent .= $this->createPopoverContentForTest($test, $testData[$test]);
+ }
+
+ $popoverContent .= '</ul>';
+ $trClass = $lineCss . ' popin';
+ }
+ }
+
+ $popover = '';
+
+ if (!empty($popoverTitle)) {
+ $popover = sprintf(
+ ' data-title="%s" data-content="%s" data-placement="top" data-html="true"',
+ $popoverTitle,
+ htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags)
+ );
+ }
+
+ $lines .= $this->renderLine($singleLineTemplate, $i, $line, $trClass, $popover);
+
+ $i++;
+ }
+
+ $linesTemplate->setVar(['lines' => $lines]);
+
+ return $linesTemplate->render();
+ }
+
+ private function renderSourceWithBranchCoverage(FileNode $node): string
+ {
+ $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}');
+ $singleLineTemplate = new Template($this->templatePath . 'line.html.dist', '{{', '}}');
+
+ $functionCoverageData = $node->functionCoverageData();
+ $testData = $node->testData();
+ $codeLines = $this->loadFile($node->pathAsString());
+
+ $lineData = [];
+
+ /** @var int $line */
+ foreach (array_keys($codeLines) as $line) {
+ $lineData[$line + 1] = [
+ 'includedInBranches' => 0,
+ 'includedInHitBranches' => 0,
+ 'tests' => [],
+ ];
+ }
+
+ foreach ($functionCoverageData as $method) {
+ foreach ($method['branches'] as $branch) {
+ foreach (range($branch['line_start'], $branch['line_end']) as $line) {
+ if (!isset($lineData[$line])) { // blank line at end of file is sometimes included here
+ continue;
+ }
+
+ $lineData[$line]['includedInBranches']++;
+
+ if ($branch['hit']) {
+ $lineData[$line]['includedInHitBranches']++;
+ $lineData[$line]['tests'] = array_unique(array_merge($lineData[$line]['tests'], $branch['hit']));
+ }
+ }
+ }
+ }
+
+ $lines = '';
+ $i = 1;
+
+ /** @var string $line */
+ foreach ($codeLines as $line) {
+ $trClass = '';
+ $popover = '';
+
+ if ($lineData[$i]['includedInBranches'] > 0) {
+ $lineCss = 'success';
+
+ if ($lineData[$i]['includedInHitBranches'] === 0) {
+ $lineCss = 'danger';
+ } elseif ($lineData[$i]['includedInHitBranches'] !== $lineData[$i]['includedInBranches']) {
+ $lineCss = 'warning';
+ }
+
+ $popoverContent = '<ul>';
+
+ if (count($lineData[$i]['tests']) === 1) {
+ $popoverTitle = '1 test covers line ' . $i;
+ } else {
+ $popoverTitle = count($lineData[$i]['tests']) . ' tests cover line ' . $i;
+ }
+ $popoverTitle .= '. These are covering ' . $lineData[$i]['includedInHitBranches'] . ' out of the ' . $lineData[$i]['includedInBranches'] . ' code branches.';
+
+ foreach ($lineData[$i]['tests'] as $test) {
+ $popoverContent .= $this->createPopoverContentForTest($test, $testData[$test]);
+ }
+
+ $popoverContent .= '</ul>';
+ $trClass = $lineCss . ' popin';
+
+ $popover = sprintf(
+ ' data-title="%s" data-content="%s" data-placement="top" data-html="true"',
+ $popoverTitle,
+ htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags)
+ );
+ }
+
+ $lines .= $this->renderLine($singleLineTemplate, $i, $line, $trClass, $popover);
+
+ $i++;
+ }
+
+ $linesTemplate->setVar(['lines' => $lines]);
+
+ return $linesTemplate->render();
+ }
+
+ private function renderSourceWithPathCoverage(FileNode $node): string
+ {
+ $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}');
+ $singleLineTemplate = new Template($this->templatePath . 'line.html.dist', '{{', '}}');
+
+ $functionCoverageData = $node->functionCoverageData();
+ $testData = $node->testData();
+ $codeLines = $this->loadFile($node->pathAsString());
+
+ $lineData = [];
+
+ /** @var int $line */
+ foreach (array_keys($codeLines) as $line) {
+ $lineData[$line + 1] = [
+ 'includedInPaths' => [],
+ 'includedInHitPaths' => [],
+ 'tests' => [],
+ ];
+ }
+
+ foreach ($functionCoverageData as $method) {
+ foreach ($method['paths'] as $pathId => $path) {
+ foreach ($path['path'] as $branchTaken) {
+ foreach (range($method['branches'][$branchTaken]['line_start'], $method['branches'][$branchTaken]['line_end']) as $line) {
+ if (!isset($lineData[$line])) {
+ continue;
+ }
+ $lineData[$line]['includedInPaths'][] = $pathId;
+
+ if ($path['hit']) {
+ $lineData[$line]['includedInHitPaths'][] = $pathId;
+ $lineData[$line]['tests'] = array_unique(array_merge($lineData[$line]['tests'], $path['hit']));
+ }
+ }
+ }
+ }
+ }
+
+ $lines = '';
+ $i = 1;
+
+ /** @var string $line */
+ foreach ($codeLines as $line) {
+ $trClass = '';
+ $popover = '';
+ $includedInPathsCount = count(array_unique($lineData[$i]['includedInPaths']));
+ $includedInHitPathsCount = count(array_unique($lineData[$i]['includedInHitPaths']));
+
+ if ($includedInPathsCount > 0) {
+ $lineCss = 'success';
+
+ if ($includedInHitPathsCount === 0) {
+ $lineCss = 'danger';
+ } elseif ($includedInHitPathsCount !== $includedInPathsCount) {
+ $lineCss = 'warning';
+ }
+
+ $popoverContent = '<ul>';
+
+ if (count($lineData[$i]['tests']) === 1) {
+ $popoverTitle = '1 test covers line ' . $i;
+ } else {
+ $popoverTitle = count($lineData[$i]['tests']) . ' tests cover line ' . $i;
+ }
+ $popoverTitle .= '. These are covering ' . $includedInHitPathsCount . ' out of the ' . $includedInPathsCount . ' code paths.';
+
+ foreach ($lineData[$i]['tests'] as $test) {
+ $popoverContent .= $this->createPopoverContentForTest($test, $testData[$test]);
+ }
+
+ $popoverContent .= '</ul>';
+ $trClass = $lineCss . ' popin';
+
+ $popover = sprintf(
+ ' data-title="%s" data-content="%s" data-placement="top" data-html="true"',
+ $popoverTitle,
+ htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags)
+ );
+ }
+
+ $lines .= $this->renderLine($singleLineTemplate, $i, $line, $trClass, $popover);
+
+ $i++;
+ }
+
+ $linesTemplate->setVar(['lines' => $lines]);
+
+ return $linesTemplate->render();
+ }
+
+ private function renderBranchStructure(FileNode $node): string
+ {
+ $branchesTemplate = new Template($this->templatePath . 'branches.html.dist', '{{', '}}');
+
+ $coverageData = $node->functionCoverageData();
+ $testData = $node->testData();
+ $codeLines = $this->loadFile($node->pathAsString());
+ $branches = '';
+
+ ksort($coverageData);
+
+ foreach ($coverageData as $methodName => $methodData) {
+ if (!$methodData['branches']) {
+ continue;
+ }
+
+ $branchStructure = '';
+
+ foreach ($methodData['branches'] as $branch) {
+ $branchStructure .= $this->renderBranchLines($branch, $codeLines, $testData);
+ }
+
+ if ($branchStructure !== '') { // don't show empty branches
+ $branches .= '<h5 class="structure-heading"><a name="' . htmlspecialchars($methodName, $this->htmlSpecialCharsFlags) . '">' . $this->abbreviateMethodName($methodName) . '</a></h5>' . "\n";
+ $branches .= $branchStructure;
+ }
+ }
+
+ $branchesTemplate->setVar(['branches' => $branches]);
+
+ return $branchesTemplate->render();
+ }
+
+ private function renderBranchLines(array $branch, array $codeLines, array $testData): string
+ {
+ $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}');
+ $singleLineTemplate = new Template($this->templatePath . 'line.html.dist', '{{', '}}');
+
+ $lines = '';
+
+ $branchLines = range($branch['line_start'], $branch['line_end']);
+ sort($branchLines); // sometimes end_line < start_line
+
+ /** @var int $line */
+ foreach ($branchLines as $line) {
+ if (!isset($codeLines[$line])) { // blank line at end of file is sometimes included here
+ continue;
+ }
+
+ $popoverContent = '';
+ $popoverTitle = '';
+
+ $numTests = count($branch['hit']);
+
+ if ($numTests === 0) {
+ $trClass = 'danger';
+ } else {
+ $lineCss = 'covered-by-large-tests';
+ $popoverContent = '<ul>';
+
+ if ($numTests > 1) {
+ $popoverTitle = $numTests . ' tests cover this branch';
+ } else {
+ $popoverTitle = '1 test covers this branch';
+ }
+
+ foreach ($branch['hit'] as $test) {
+ if ($lineCss === 'covered-by-large-tests' && $testData[$test]['size'] === 'medium') {
+ $lineCss = 'covered-by-medium-tests';
+ } elseif ($testData[$test]['size'] === 'small') {
+ $lineCss = 'covered-by-small-tests';
+ }
+
+ $popoverContent .= $this->createPopoverContentForTest($test, $testData[$test]);
+ }
+ $trClass = $lineCss . ' popin';
+ }
+
+ $popover = '';
+
+ if (!empty($popoverTitle)) {
+ $popover = sprintf(
+ ' data-title="%s" data-content="%s" data-placement="top" data-html="true"',
+ $popoverTitle,
+ htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags)
+ );
+ }
+
+ $lines .= $this->renderLine($singleLineTemplate, $line, $codeLines[$line - 1], $trClass, $popover);
+ }
+
+ if ($lines === '') {
+ return '';
+ }
+
+ $linesTemplate->setVar(['lines' => $lines]);
+
+ return $linesTemplate->render();
+ }
+
+ private function renderPathStructure(FileNode $node): string
+ {
+ $pathsTemplate = new Template($this->templatePath . 'paths.html.dist', '{{', '}}');
+
+ $coverageData = $node->functionCoverageData();
+ $testData = $node->testData();
+ $codeLines = $this->loadFile($node->pathAsString());
+ $paths = '';
+
+ ksort($coverageData);
+
+ foreach ($coverageData as $methodName => $methodData) {
+ if (!$methodData['paths']) {
+ continue;
+ }
+
+ $pathStructure = '';
+
+ if (count($methodData['paths']) > 100) {
+ $pathStructure .= '<p>' . count($methodData['paths']) . ' is too many paths to sensibly render, consider refactoring your code to bring this number down.</p>';
+
+ continue;
+ }
+
+ foreach ($methodData['paths'] as $path) {
+ $pathStructure .= $this->renderPathLines($path, $methodData['branches'], $codeLines, $testData);
+ }
+
+ if ($pathStructure !== '') {
+ $paths .= '<h5 class="structure-heading"><a name="' . htmlspecialchars($methodName, $this->htmlSpecialCharsFlags) . '">' . $this->abbreviateMethodName($methodName) . '</a></h5>' . "\n";
+ $paths .= $pathStructure;
+ }
+ }
+
+ $pathsTemplate->setVar(['paths' => $paths]);
+
+ return $pathsTemplate->render();
+ }
+
+ private function renderPathLines(array $path, array $branches, array $codeLines, array $testData): string
+ {
+ $linesTemplate = new Template($this->templatePath . 'lines.html.dist', '{{', '}}');
+ $singleLineTemplate = new Template($this->templatePath . 'line.html.dist', '{{', '}}');
+
+ $lines = '';
+
+ foreach ($path['path'] as $branchId) {
+ $branchLines = range($branches[$branchId]['line_start'], $branches[$branchId]['line_end']);
+ sort($branchLines); // sometimes end_line < start_line
+
+ /** @var int $line */
+ foreach ($branchLines as $line) {
+ if (!isset($codeLines[$line])) { // blank line at end of file is sometimes included here
+ continue;
+ }
+
+ $popoverContent = '';
+ $popoverTitle = '';
+
+ $numTests = count($path['hit']);
+
+ if ($numTests === 0) {
+ $trClass = 'danger';
+ } else {
+ $lineCss = 'covered-by-large-tests';
+ $popoverContent = '<ul>';
+
+ if ($numTests > 1) {
+ $popoverTitle = $numTests . ' tests cover this path';
+ } else {
+ $popoverTitle = '1 test covers this path';
+ }
+
+ foreach ($path['hit'] as $test) {
+ if ($lineCss === 'covered-by-large-tests' && $testData[$test]['size'] === 'medium') {
+ $lineCss = 'covered-by-medium-tests';
+ } elseif ($testData[$test]['size'] === 'small') {
+ $lineCss = 'covered-by-small-tests';
+ }
+
+ $popoverContent .= $this->createPopoverContentForTest($test, $testData[$test]);
+ }
+ $trClass = $lineCss . ' popin';
+ }
+
+ $popover = '';
+
+ if (!empty($popoverTitle)) {
+ $popover = sprintf(
+ ' data-title="%s" data-content="%s" data-placement="top" data-html="true"',
+ $popoverTitle,
+ htmlspecialchars($popoverContent, $this->htmlSpecialCharsFlags)
+ );
+ }
+
+ $lines .= $this->renderLine($singleLineTemplate, $line, $codeLines[$line - 1], $trClass, $popover);
+ }
+ }
+
+ if ($lines === '') {
+ return '';
+ }
+
+ $linesTemplate->setVar(['lines' => $lines]);
+
+ return $linesTemplate->render();
+ }
+
+ private function renderLine(Template $template, int $lineNumber, string $lineContent, string $class, string $popover): string
+ {
+ $template->setVar(
+ [
+ 'lineNumber' => $lineNumber,
+ 'lineContent' => $lineContent,
+ 'class' => $class,
+ 'popover' => $popover,
+ ]
+ );
+
+ return $template->render();
+ }
+
+ private function loadFile(string $file): array
+ {
+ if (isset(self::$formattedSourceCache[$file])) {
+ return self::$formattedSourceCache[$file];
+ }
+
+ $buffer = file_get_contents($file);
+ $tokens = token_get_all($buffer);
+ $result = [''];
+ $i = 0;
+ $stringFlag = false;
+ $fileEndsWithNewLine = substr($buffer, -1) === "\n";
+
+ unset($buffer);
+
+ foreach ($tokens as $j => $token) {
+ if (is_string($token)) {
+ if ($token === '"' && $tokens[$j - 1] !== '\\') {
+ $result[$i] .= sprintf(
+ '<span class="string">%s</span>',
+ htmlspecialchars($token, $this->htmlSpecialCharsFlags)
+ );
+
+ $stringFlag = !$stringFlag;
+ } else {
+ $result[$i] .= sprintf(
+ '<span class="keyword">%s</span>',
+ htmlspecialchars($token, $this->htmlSpecialCharsFlags)
+ );
+ }
+
+ continue;
+ }
+
+ [$token, $value] = $token;
+
+ $value = str_replace(
+ ["\t", ' '],
+ ['&nbsp;&nbsp;&nbsp;&nbsp;', '&nbsp;'],
+ htmlspecialchars($value, $this->htmlSpecialCharsFlags)
+ );
+
+ if ($value === "\n") {
+ $result[++$i] = '';
+ } else {
+ $lines = explode("\n", $value);
+
+ foreach ($lines as $jj => $line) {
+ $line = trim($line);
+
+ if ($line !== '') {
+ if ($stringFlag) {
+ $colour = 'string';
+ } else {
+ $colour = 'default';
+
+ if ($this->isInlineHtml($token)) {
+ $colour = 'html';
+ } elseif ($this->isComment($token)) {
+ $colour = 'comment';
+ } elseif ($this->isKeyword($token)) {
+ $colour = 'keyword';
+ }
+ }
+
+ $result[$i] .= sprintf(
+ '<span class="%s">%s</span>',
+ $colour,
+ $line
+ );
+ }
+
+ if (isset($lines[$jj + 1])) {
+ $result[++$i] = '';
+ }
+ }
+ }
+ }
+
+ if ($fileEndsWithNewLine) {
+ unset($result[count($result) - 1]);
+ }
+
+ self::$formattedSourceCache[$file] = $result;
+
+ return $result;
+ }
+
+ private function abbreviateClassName(string $className): string
+ {
+ $tmp = explode('\\', $className);
+
+ if (count($tmp) > 1) {
+ $className = sprintf(
+ '<abbr title="%s">%s</abbr>',
+ $className,
+ array_pop($tmp)
+ );
+ }
+
+ return $className;
+ }
+
+ private function abbreviateMethodName(string $methodName): string
+ {
+ $parts = explode('->', $methodName);
+
+ if (count($parts) === 2) {
+ return $this->abbreviateClassName($parts[0]) . '->' . $parts[1];
+ }
+
+ return $methodName;
+ }
+
+ private function createPopoverContentForTest(string $test, array $testData): string
+ {
+ $testCSS = '';
+
+ if ($testData['fromTestcase']) {
+ switch ($testData['status']) {
+ case BaseTestRunner::STATUS_PASSED:
+ switch ($testData['size']) {
+ case 'small':
+ $testCSS = ' class="covered-by-small-tests"';
+
+ break;
+
+ case 'medium':
+ $testCSS = ' class="covered-by-medium-tests"';
+
+ break;
+
+ default:
+ $testCSS = ' class="covered-by-large-tests"';
+
+ break;
+ }
+
+ break;
+
+ case BaseTestRunner::STATUS_SKIPPED:
+ case BaseTestRunner::STATUS_INCOMPLETE:
+ case BaseTestRunner::STATUS_RISKY:
+ case BaseTestRunner::STATUS_WARNING:
+ $testCSS = ' class="warning"';
+
+ break;
+
+ case BaseTestRunner::STATUS_FAILURE:
+ case BaseTestRunner::STATUS_ERROR:
+ $testCSS = ' class="danger"';
+
+ break;
+ }
+ }
+
+ return sprintf(
+ '<li%s>%s</li>',
+ $testCSS,
+ htmlspecialchars($test, $this->htmlSpecialCharsFlags)
+ );
+ }
+
+ private function isComment(int $token): bool
+ {
+ return $token === T_COMMENT || $token === T_DOC_COMMENT;
+ }
+
+ private function isInlineHtml(int $token): bool
+ {
+ return $token === T_INLINE_HTML;
+ }
+
+ private function isKeyword(int $token): bool
+ {
+ return isset(self::keywordTokens()[$token]);
+ }
+
+ /**
+ * @psalm-return array<int,true>
+ */
+ private static function keywordTokens(): array
+ {
+ if (self::$keywordTokens !== []) {
+ return self::$keywordTokens;
+ }
+
+ self::$keywordTokens = [
+ T_ABSTRACT => true,
+ T_ARRAY => true,
+ T_AS => true,
+ T_BREAK => true,
+ T_CALLABLE => true,
+ T_CASE => true,
+ T_CATCH => true,
+ T_CLASS => true,
+ T_CLONE => true,
+ T_CONST => true,
+ T_CONTINUE => true,
+ T_DECLARE => true,
+ T_DEFAULT => true,
+ T_DO => true,
+ T_ECHO => true,
+ T_ELSE => true,
+ T_ELSEIF => true,
+ T_EMPTY => true,
+ T_ENDDECLARE => true,
+ T_ENDFOR => true,
+ T_ENDFOREACH => true,
+ T_ENDIF => true,
+ T_ENDSWITCH => true,
+ T_ENDWHILE => true,
+ T_EVAL => true,
+ T_EXIT => true,
+ T_EXTENDS => true,
+ T_FINAL => true,
+ T_FINALLY => true,
+ T_FOR => true,
+ T_FOREACH => true,
+ T_FUNCTION => true,
+ T_GLOBAL => true,
+ T_GOTO => true,
+ T_HALT_COMPILER => true,
+ T_IF => true,
+ T_IMPLEMENTS => true,
+ T_INCLUDE => true,
+ T_INCLUDE_ONCE => true,
+ T_INSTANCEOF => true,
+ T_INSTEADOF => true,
+ T_INTERFACE => true,
+ T_ISSET => true,
+ T_LIST => true,
+ T_NAMESPACE => true,
+ T_NEW => true,
+ T_PRINT => true,
+ T_PRIVATE => true,
+ T_PROTECTED => true,
+ T_PUBLIC => true,
+ T_REQUIRE => true,
+ T_REQUIRE_ONCE => true,
+ T_RETURN => true,
+ T_STATIC => true,
+ T_SWITCH => true,
+ T_THROW => true,
+ T_TRAIT => true,
+ T_TRY => true,
+ T_UNSET => true,
+ T_USE => true,
+ T_VAR => true,
+ T_WHILE => true,
+ T_YIELD => true,
+ T_YIELD_FROM => true,
+ ];
+
+ if (defined('T_FN')) {
+ self::$keywordTokens[constant('T_FN')] = true;
+ }
+
+ if (defined('T_MATCH')) {
+ self::$keywordTokens[constant('T_MATCH')] = true;
+ }
+
+ if (defined('T_ENUM')) {
+ self::$keywordTokens[constant('T_ENUM')] = true;
+ }
+
+ if (defined('T_READONLY')) {
+ self::$keywordTokens[constant('T_READONLY')] = true;
+ }
+
+ return self::$keywordTokens;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/branches.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/branches.html.dist
new file mode 100644
index 000000000..547702623
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/branches.html.dist
@@ -0,0 +1,9 @@
+<hr/>
+<h4>Branches</h4>
+<p>
+ Below are the source code lines that represent each code branch as identified by Xdebug. Please note a branch is not
+ necessarily coterminous with a line, a line may contain multiple branches and therefore show up more than once.
+ Please also be aware that some branches may be implicit rather than explicit, e.g. an <code>if</code> statement
+ <i>always</i> has an <code>else</code> as part of its logical flow even if you didn't write one.
+</p>
+{{branches}}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist
new file mode 100644
index 000000000..7fcf6f490
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar.html.dist
@@ -0,0 +1,5 @@
+ <div class="progress">
+ <div class="progress-bar bg-{{level}}" role="progressbar" aria-valuenow="{{percent}}" aria-valuemin="0" aria-valuemax="100" style="width: {{percent}}%">
+ <span class="sr-only">{{percent}}% covered ({{level}})</span>
+ </div>
+ </div>
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar_branch.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar_branch.html.dist
new file mode 100644
index 000000000..7fcf6f490
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/coverage_bar_branch.html.dist
@@ -0,0 +1,5 @@
+ <div class="progress">
+ <div class="progress-bar bg-{{level}}" role="progressbar" aria-valuenow="{{percent}}" aria-valuemin="0" aria-valuemax="100" style="width: {{percent}}%">
+ <span class="sr-only">{{percent}}% covered ({{level}})</span>
+ </div>
+ </div>
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css
new file mode 100644
index 000000000..6ee59568c
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/bootstrap.min.css
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-sm-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-sm-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-md-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-md-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-md-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-md-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-md-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-md-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-lg-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-lg-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.row-cols-xl-1>*{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.row-cols-xl-4>*{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label::after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label::after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;-webkit-print-color-adjust:exact;color-adjust:exact}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before,.custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;overflow:hidden;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{-ms-transition:none;transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{-ms-flex-negative:0;flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{-ms-flex:1 0 0%;flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{-ms-flex-preferred-size:350px;flex-basis:350px;max-width:350px;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:-webkit-min-content;height:-moz-min-content;height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:-webkit-min-content;height:-moz-min-content;height:min-content}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:.75s linear infinite spinner-border;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:.75s linear infinite spinner-grow;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{-webkit-animation-duration:1.5s;animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}
+/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/custom.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/custom.css
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/custom.css
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css
new file mode 100644
index 000000000..7a6f7fe90
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/nv.d3.min.css
@@ -0,0 +1 @@
+.nvd3 .nv-axis{pointer-events:none;opacity:1}.nvd3 .nv-axis path{fill:none;stroke:#000;stroke-opacity:.75;shape-rendering:crispEdges}.nvd3 .nv-axis path.domain{stroke-opacity:.75}.nvd3 .nv-axis.nv-x path.domain{stroke-opacity:0}.nvd3 .nv-axis line{fill:none;stroke:#e5e5e5;shape-rendering:crispEdges}.nvd3 .nv-axis .zero line,.nvd3 .nv-axis line.zero{stroke-opacity:.75}.nvd3 .nv-axis .nv-axisMaxMin text{font-weight:700}.nvd3 .x .nv-axis .nv-axisMaxMin text,.nvd3 .x2 .nv-axis .nv-axisMaxMin text,.nvd3 .x3 .nv-axis .nv-axisMaxMin text{text-anchor:middle}.nvd3 .nv-axis.nv-disabled{opacity:0}.nvd3 .nv-bars rect{fill-opacity:.75;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-bars rect.hover{fill-opacity:1}.nvd3 .nv-bars .hover rect{fill:#add8e6}.nvd3 .nv-bars text{fill:rgba(0,0,0,0)}.nvd3 .nv-bars .hover text{fill:rgba(0,0,0,1)}.nvd3 .nv-multibar .nv-groups rect,.nvd3 .nv-multibarHorizontal .nv-groups rect,.nvd3 .nv-discretebar .nv-groups rect{stroke-opacity:0;transition:fill-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear}.nvd3 .nv-multibar .nv-groups rect:hover,.nvd3 .nv-multibarHorizontal .nv-groups rect:hover,.nvd3 .nv-candlestickBar .nv-ticks rect:hover,.nvd3 .nv-discretebar .nv-groups rect:hover{fill-opacity:1}.nvd3 .nv-discretebar .nv-groups text,.nvd3 .nv-multibarHorizontal .nv-groups text{font-weight:700;fill:rgba(0,0,0,1);stroke:rgba(0,0,0,0)}.nvd3 .nv-boxplot circle{fill-opacity:.5}.nvd3 .nv-boxplot circle:hover{fill-opacity:1}.nvd3 .nv-boxplot rect:hover{fill-opacity:1}.nvd3 line.nv-boxplot-median{stroke:#000}.nv-boxplot-tick:hover{stroke-width:2.5px}.nvd3.nv-bullet{font:10px sans-serif}.nvd3.nv-bullet .nv-measure{fill-opacity:.8}.nvd3.nv-bullet .nv-measure:hover{fill-opacity:1}.nvd3.nv-bullet .nv-marker{stroke:#000;stroke-width:2px}.nvd3.nv-bullet .nv-markerTriangle{stroke:#000;fill:#fff;stroke-width:1.5px}.nvd3.nv-bullet .nv-tick line{stroke:#666;stroke-width:.5px}.nvd3.nv-bullet .nv-range.nv-s0{fill:#eee}.nvd3.nv-bullet .nv-range.nv-s1{fill:#ddd}.nvd3.nv-bullet .nv-range.nv-s2{fill:#ccc}.nvd3.nv-bullet .nv-title{font-size:14px;font-weight:700}.nvd3.nv-bullet .nv-subtitle{fill:#999}.nvd3.nv-bullet .nv-range{fill:#bababa;fill-opacity:.4}.nvd3.nv-bullet .nv-range:hover{fill-opacity:.7}.nvd3.nv-candlestickBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.positive rect{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-candlestickBar .nv-ticks .nv-tick.negative rect{stroke:#d62728;fill:#d62728}.with-transitions .nv-candlestickBar .nv-ticks .nv-tick{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-candlestickBar .nv-ticks line{stroke:#333}.nvd3 .nv-legend .nv-disabled rect{}.nvd3 .nv-check-box .nv-box{fill-opacity:0;stroke-width:2}.nvd3 .nv-check-box .nv-check{fill-opacity:0;stroke-width:4}.nvd3 .nv-series.nv-disabled .nv-check-box .nv-check{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-controlsWrap .nv-legend .nv-check-box .nv-check{opacity:0}.nvd3.nv-linePlusBar .nv-bar rect{fill-opacity:.75}.nvd3.nv-linePlusBar .nv-bar rect:hover{fill-opacity:1}.nvd3 .nv-groups path.nv-line{fill:none}.nvd3 .nv-groups path.nv-area{stroke:none}.nvd3.nv-line .nvd3.nv-scatter .nv-groups .nv-point{fill-opacity:0;stroke-opacity:0}.nvd3.nv-scatter.nv-single-point .nv-groups .nv-point{fill-opacity:.5!important;stroke-opacity:.5!important}.with-transitions .nvd3 .nv-groups .nv-point{transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-scatter .nv-groups .nv-point.hover,.nvd3 .nv-groups .nv-point.hover{stroke-width:7px;fill-opacity:.95!important;stroke-opacity:.95!important}.nvd3 .nv-point-paths path{stroke:#aaa;stroke-opacity:0;fill:#eee;fill-opacity:0}.nvd3 .nv-indexLine{cursor:ew-resize}svg.nvd3-svg{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-ms-user-select:none;-moz-user-select:none;user-select:none;display:block;width:100%;height:100%}.nvtooltip.with-3d-shadow,.with-3d-shadow .nvtooltip{-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nvd3 text{font:400 12px Arial}.nvd3 .title{font:700 14px Arial}.nvd3 .nv-background{fill:#fff;fill-opacity:0}.nvd3.nv-noData{font-size:18px;font-weight:700}.nv-brush .extent{fill-opacity:.125;shape-rendering:crispEdges}.nv-brush .resize path{fill:#eee;stroke:#666}.nvd3 .nv-legend .nv-series{cursor:pointer}.nvd3 .nv-legend .nv-disabled circle{fill-opacity:0}.nvd3 .nv-brush .extent{fill-opacity:0!important}.nvd3 .nv-brushBackground rect{stroke:#000;stroke-width:.4;fill:#fff;fill-opacity:.7}.nvd3.nv-ohlcBar .nv-ticks .nv-tick{stroke-width:1px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.hover{stroke-width:2px}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.positive{stroke:#2ca02c}.nvd3.nv-ohlcBar .nv-ticks .nv-tick.negative{stroke:#d62728}.nvd3 .background path{fill:none;stroke:#EEE;stroke-opacity:.4;shape-rendering:crispEdges}.nvd3 .foreground path{fill:none;stroke-opacity:.7}.nvd3 .nv-parallelCoordinates-brush .extent{fill:#fff;fill-opacity:.6;stroke:gray;shape-rendering:crispEdges}.nvd3 .nv-parallelCoordinates .hover{fill-opacity:1;stroke-width:3px}.nvd3 .missingValuesline line{fill:none;stroke:#000;stroke-width:1;stroke-opacity:1;stroke-dasharray:5,5}.nvd3.nv-pie path{stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-width 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-pie .nv-pie-title{font-size:24px;fill:rgba(19,196,249,.59)}.nvd3.nv-pie .nv-slice text{stroke:#000;stroke-width:0}.nvd3.nv-pie path{stroke:#fff;stroke-width:1px;stroke-opacity:1}.nvd3.nv-pie .hover path{fill-opacity:.7}.nvd3.nv-pie .nv-label{pointer-events:none}.nvd3.nv-pie .nv-label rect{fill-opacity:0;stroke-opacity:0}.nvd3 .nv-groups .nv-point.hover{stroke-width:20px;stroke-opacity:.5}.nvd3 .nv-scatter .nv-point.hover{fill-opacity:1}.nv-noninteractive{pointer-events:none}.nv-distx,.nv-disty{pointer-events:none}.nvd3.nv-sparkline path{fill:none}.nvd3.nv-sparklineplus g.nv-hoverValue{pointer-events:none}.nvd3.nv-sparklineplus .nv-hoverValue line{stroke:#333;stroke-width:1.5px}.nvd3.nv-sparklineplus,.nvd3.nv-sparklineplus g{pointer-events:all}.nvd3 .nv-hoverArea{fill-opacity:0;stroke-opacity:0}.nvd3.nv-sparklineplus .nv-xValue,.nvd3.nv-sparklineplus .nv-yValue{stroke-width:0;font-size:.9em;font-weight:400}.nvd3.nv-sparklineplus .nv-yValue{stroke:#f66}.nvd3.nv-sparklineplus .nv-maxValue{stroke:#2ca02c;fill:#2ca02c}.nvd3.nv-sparklineplus .nv-minValue{stroke:#d62728;fill:#d62728}.nvd3.nv-sparklineplus .nv-currentValue{font-weight:700;font-size:1.1em}.nvd3.nv-stackedarea path.nv-area{fill-opacity:.7;stroke-opacity:0;transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-moz-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear;-webkit-transition:fill-opacity 250ms linear,stroke-opacity 250ms linear}.nvd3.nv-stackedarea path.nv-area.hover{fill-opacity:.9}.nvd3.nv-stackedarea .nv-groups .nv-point{stroke-opacity:0;fill-opacity:0}.nvtooltip{position:absolute;background-color:rgba(255,255,255,1);color:rgba(0,0,0,1);padding:1px;border:1px solid rgba(0,0,0,.2);z-index:10000;display:block;font-family:Arial;font-size:13px;text-align:left;pointer-events:none;white-space:nowrap;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nvtooltip{background:rgba(255,255,255,.8);border:1px solid rgba(0,0,0,.5);border-radius:4px}.nvtooltip.with-transitions,.with-transitions .nvtooltip{transition:opacity 50ms linear;-moz-transition:opacity 50ms linear;-webkit-transition:opacity 50ms linear;transition-delay:200ms;-moz-transition-delay:200ms;-webkit-transition-delay:200ms}.nvtooltip.x-nvtooltip,.nvtooltip.y-nvtooltip{padding:8px}.nvtooltip h3{margin:0;padding:4px 14px;line-height:18px;font-weight:400;background-color:rgba(247,247,247,.75);color:rgba(0,0,0,1);text-align:center;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.nvtooltip p{margin:0;padding:5px 14px;text-align:center}.nvtooltip span{display:inline-block;margin:2px 0}.nvtooltip table{margin:6px;border-spacing:0}.nvtooltip table td{padding:2px 9px 2px 0;vertical-align:middle}.nvtooltip table td.key{font-weight:400}.nvtooltip table td.value{text-align:right;font-weight:700}.nvtooltip table tr.highlight td{padding:1px 9px 1px 0;border-bottom-style:solid;border-bottom-width:1px;border-top-style:solid;border-top-width:1px}.nvtooltip table td.legend-color-guide div{width:8px;height:8px;vertical-align:middle}.nvtooltip table td.legend-color-guide div{width:12px;height:12px;border:1px solid #999}.nvtooltip .footer{padding:3px;text-align:center}.nvtooltip-pending-removal{pointer-events:none;display:none}.nvd3 .nv-interactiveGuideLine{pointer-events:none}.nvd3 line.nv-guideline{stroke:#ccc} \ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/octicons.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/octicons.css
new file mode 100644
index 000000000..31d97867a
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/octicons.css
@@ -0,0 +1,5 @@
+.octicon {
+ display: inline-block;
+ vertical-align: text-top;
+ fill: currentColor;
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css
new file mode 100644
index 000000000..0834b5b58
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/css/style.css
@@ -0,0 +1,122 @@
+body {
+ padding-top: 10px;
+}
+
+.popover {
+ max-width: none;
+}
+
+.octicon {
+ margin-right:.25em;
+}
+
+.table-bordered>thead>tr>td {
+ border-bottom-width: 1px;
+}
+
+.table tbody>tr>td, .table thead>tr>td {
+ padding-top: 3px;
+ padding-bottom: 3px;
+}
+
+.table-condensed tbody>tr>td {
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+.table .progress {
+ margin-bottom: inherit;
+}
+
+.table-borderless th, .table-borderless td {
+ border: 0 !important;
+}
+
+.table tbody tr.covered-by-large-tests, li.covered-by-large-tests, tr.success, td.success, li.success, span.success {
+ background-color: #dff0d8;
+}
+
+.table tbody tr.covered-by-medium-tests, li.covered-by-medium-tests {
+ background-color: #c3e3b5;
+}
+
+.table tbody tr.covered-by-small-tests, li.covered-by-small-tests {
+ background-color: #99cb84;
+}
+
+.table tbody tr.danger, .table tbody td.danger, li.danger, span.danger {
+ background-color: #f2dede;
+}
+
+.table tbody tr.warning, .table tbody td.warning, li.warning, span.warning {
+ background-color: #fcf8e3;
+}
+
+.table tbody td.info {
+ background-color: #d9edf7;
+}
+
+td.big {
+ width: 117px;
+}
+
+td.small {
+}
+
+td.codeLine {
+ font-family: "Source Code Pro", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
+ white-space: pre-wrap;
+}
+
+td span.comment {
+ color: #888a85;
+}
+
+td span.default {
+ color: #2e3436;
+}
+
+td span.html {
+ color: #888a85;
+}
+
+td span.keyword {
+ color: #2e3436;
+ font-weight: bold;
+}
+
+pre span.string {
+ color: #2e3436;
+}
+
+span.success, span.warning, span.danger {
+ margin-right: 2px;
+ padding-left: 10px;
+ padding-right: 10px;
+ text-align: center;
+}
+
+#toplink {
+ position: fixed;
+ left: 5px;
+ bottom: 5px;
+ outline: 0;
+}
+
+svg text {
+ font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ color: #666;
+ fill: #666;
+}
+
+.scrollbox {
+ height:245px;
+ overflow-x:hidden;
+ overflow-y:scroll;
+}
+
+table + .structure-heading {
+ border-top: 1px solid lightgrey;
+ padding-top: 0.5em;
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist
new file mode 100644
index 000000000..aa51bcb80
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard.html.dist
@@ -0,0 +1,281 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8">
+ <title>Dashboard for {{full_path}}</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link href="{{path_to_root}}_css/bootstrap.min.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/nv.d3.min.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/style.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+ <header>
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-md-12">
+ <nav aria-label="breadcrumb">
+ <ol class="breadcrumb">
+{{breadcrumbs}}
+ </ol>
+ </nav>
+ </div>
+ </div>
+ </div>
+ </header>
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-md-12">
+ <h2>Classes</h2>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <h3>Coverage Distribution</h3>
+ <div id="classCoverageDistribution" style="height: 300px;">
+ <svg></svg>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <h3>Complexity</h3>
+ <div id="classComplexity" style="height: 300px;">
+ <svg></svg>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <h3>Insufficient Coverage</h3>
+ <div class="scrollbox">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Class</th>
+ <th class="text-right">Coverage</th>
+ </tr>
+ </thead>
+ <tbody>
+{{insufficient_coverage_classes}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <h3>Project Risks</h3>
+ <div class="scrollbox">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Class</th>
+ <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+ </tr>
+ </thead>
+ <tbody>
+{{project_risks_classes}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12">
+ <h2>Methods</h2>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <h3>Coverage Distribution</h3>
+ <div id="methodCoverageDistribution" style="height: 300px;">
+ <svg></svg>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <h3>Complexity</h3>
+ <div id="methodComplexity" style="height: 300px;">
+ <svg></svg>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <h3>Insufficient Coverage</h3>
+ <div class="scrollbox">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Method</th>
+ <th class="text-right">Coverage</th>
+ </tr>
+ </thead>
+ <tbody>
+{{insufficient_coverage_methods}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <h3>Project Risks</h3>
+ <div class="scrollbox">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Method</th>
+ <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+ </tr>
+ </thead>
+ <tbody>
+{{project_risks_methods}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <footer>
+ <hr/>
+ <p>
+ <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage {{version}}</a> using {{runtime}}{{generator}} at {{date}}.</small>
+ </p>
+ </footer>
+ </div>
+ <script src="{{path_to_root}}_js/jquery.min.js" type="text/javascript"></script>
+ <script src="{{path_to_root}}_js/d3.min.js" type="text/javascript"></script>
+ <script src="{{path_to_root}}_js/nv.d3.min.js" type="text/javascript"></script>
+ <script type="text/javascript">
+$(document).ready(function() {
+ nv.addGraph(function() {
+ var chart = nv.models.multiBarChart();
+ chart.tooltips(false)
+ .showControls(false)
+ .showLegend(false)
+ .reduceXTicks(false)
+ .staggerLabels(true)
+ .yAxis.tickFormat(d3.format('d'));
+
+ d3.select('#classCoverageDistribution svg')
+ .datum(getCoverageDistributionData({{class_coverage_distribution}}, "Class Coverage"))
+ .transition().duration(500).call(chart);
+
+ nv.utils.windowResize(chart.update);
+
+ return chart;
+ });
+
+ nv.addGraph(function() {
+ var chart = nv.models.multiBarChart();
+ chart.tooltips(false)
+ .showControls(false)
+ .showLegend(false)
+ .reduceXTicks(false)
+ .staggerLabels(true)
+ .yAxis.tickFormat(d3.format('d'));
+
+ d3.select('#methodCoverageDistribution svg')
+ .datum(getCoverageDistributionData({{method_coverage_distribution}}, "Method Coverage"))
+ .transition().duration(500).call(chart);
+
+ nv.utils.windowResize(chart.update);
+
+ return chart;
+ });
+
+ function getCoverageDistributionData(data, label) {
+ var labels = [
+ '0%',
+ '0-10%',
+ '10-20%',
+ '20-30%',
+ '30-40%',
+ '40-50%',
+ '50-60%',
+ '60-70%',
+ '70-80%',
+ '80-90%',
+ '90-100%',
+ '100%'
+ ];
+ var values = [];
+ $.each(labels, function(key) {
+ values.push({x: labels[key], y: data[key]});
+ });
+
+ return [
+ {
+ key: label,
+ values: values,
+ color: "#4572A7"
+ }
+ ];
+ }
+ nv.addGraph(function() {
+ var chart = nv.models.scatterChart()
+ .showDistX(true)
+ .showDistY(true)
+ .showLegend(false)
+ .forceX([0, 100]);
+ chart.tooltipContent(function(graph) {
+ return '<p>' + graph.point.class + '</p>';
+ });
+
+ chart.xAxis.axisLabel('Code Coverage (in percent)');
+ chart.yAxis.axisLabel('Cyclomatic Complexity');
+
+ d3.select('#classComplexity svg')
+ .datum(getComplexityData({{complexity_class}}, 'Class Complexity'))
+ .transition()
+ .duration(500)
+ .call(chart);
+
+ nv.utils.windowResize(chart.update);
+
+ return chart;
+ });
+
+ nv.addGraph(function() {
+ var chart = nv.models.scatterChart()
+ .showDistX(true)
+ .showDistY(true)
+ .showLegend(false)
+ .forceX([0, 100]);
+ chart.tooltipContent(function(graph) {
+ return '<p>' + graph.point.class + '</p>';
+ });
+
+ chart.xAxis.axisLabel('Code Coverage (in percent)');
+ chart.yAxis.axisLabel('Method Complexity');
+
+ d3.select('#methodComplexity svg')
+ .datum(getComplexityData({{complexity_method}}, 'Method Complexity'))
+ .transition()
+ .duration(500)
+ .call(chart);
+
+ nv.utils.windowResize(chart.update);
+
+ return chart;
+ });
+
+ function getComplexityData(data, label) {
+ var values = [];
+ $.each(data, function(key) {
+ var value = Math.round(data[key][0]*100) / 100;
+ values.push({
+ x: value,
+ y: data[key][1],
+ class: data[key][2],
+ size: 0.05,
+ shape: 'diamond'
+ });
+ });
+
+ return [
+ {
+ key: label,
+ values: values,
+ color: "#4572A7"
+ }
+ ];
+ }
+});
+ </script>
+ </body>
+</html>
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard_branch.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard_branch.html.dist
new file mode 100644
index 000000000..aa51bcb80
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/dashboard_branch.html.dist
@@ -0,0 +1,281 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8">
+ <title>Dashboard for {{full_path}}</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link href="{{path_to_root}}_css/bootstrap.min.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/nv.d3.min.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/style.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+ <header>
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-md-12">
+ <nav aria-label="breadcrumb">
+ <ol class="breadcrumb">
+{{breadcrumbs}}
+ </ol>
+ </nav>
+ </div>
+ </div>
+ </div>
+ </header>
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-md-12">
+ <h2>Classes</h2>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <h3>Coverage Distribution</h3>
+ <div id="classCoverageDistribution" style="height: 300px;">
+ <svg></svg>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <h3>Complexity</h3>
+ <div id="classComplexity" style="height: 300px;">
+ <svg></svg>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <h3>Insufficient Coverage</h3>
+ <div class="scrollbox">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Class</th>
+ <th class="text-right">Coverage</th>
+ </tr>
+ </thead>
+ <tbody>
+{{insufficient_coverage_classes}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <h3>Project Risks</h3>
+ <div class="scrollbox">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Class</th>
+ <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+ </tr>
+ </thead>
+ <tbody>
+{{project_risks_classes}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-12">
+ <h2>Methods</h2>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <h3>Coverage Distribution</h3>
+ <div id="methodCoverageDistribution" style="height: 300px;">
+ <svg></svg>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <h3>Complexity</h3>
+ <div id="methodComplexity" style="height: 300px;">
+ <svg></svg>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-md-6">
+ <h3>Insufficient Coverage</h3>
+ <div class="scrollbox">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Method</th>
+ <th class="text-right">Coverage</th>
+ </tr>
+ </thead>
+ <tbody>
+{{insufficient_coverage_methods}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ <div class="col-md-6">
+ <h3>Project Risks</h3>
+ <div class="scrollbox">
+ <table class="table">
+ <thead>
+ <tr>
+ <th>Method</th>
+ <th class="text-right"><abbr title="Change Risk Anti-Patterns (CRAP) Index">CRAP</abbr></th>
+ </tr>
+ </thead>
+ <tbody>
+{{project_risks_methods}}
+ </tbody>
+ </table>
+ </div>
+ </div>
+ </div>
+ <footer>
+ <hr/>
+ <p>
+ <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage {{version}}</a> using {{runtime}}{{generator}} at {{date}}.</small>
+ </p>
+ </footer>
+ </div>
+ <script src="{{path_to_root}}_js/jquery.min.js" type="text/javascript"></script>
+ <script src="{{path_to_root}}_js/d3.min.js" type="text/javascript"></script>
+ <script src="{{path_to_root}}_js/nv.d3.min.js" type="text/javascript"></script>
+ <script type="text/javascript">
+$(document).ready(function() {
+ nv.addGraph(function() {
+ var chart = nv.models.multiBarChart();
+ chart.tooltips(false)
+ .showControls(false)
+ .showLegend(false)
+ .reduceXTicks(false)
+ .staggerLabels(true)
+ .yAxis.tickFormat(d3.format('d'));
+
+ d3.select('#classCoverageDistribution svg')
+ .datum(getCoverageDistributionData({{class_coverage_distribution}}, "Class Coverage"))
+ .transition().duration(500).call(chart);
+
+ nv.utils.windowResize(chart.update);
+
+ return chart;
+ });
+
+ nv.addGraph(function() {
+ var chart = nv.models.multiBarChart();
+ chart.tooltips(false)
+ .showControls(false)
+ .showLegend(false)
+ .reduceXTicks(false)
+ .staggerLabels(true)
+ .yAxis.tickFormat(d3.format('d'));
+
+ d3.select('#methodCoverageDistribution svg')
+ .datum(getCoverageDistributionData({{method_coverage_distribution}}, "Method Coverage"))
+ .transition().duration(500).call(chart);
+
+ nv.utils.windowResize(chart.update);
+
+ return chart;
+ });
+
+ function getCoverageDistributionData(data, label) {
+ var labels = [
+ '0%',
+ '0-10%',
+ '10-20%',
+ '20-30%',
+ '30-40%',
+ '40-50%',
+ '50-60%',
+ '60-70%',
+ '70-80%',
+ '80-90%',
+ '90-100%',
+ '100%'
+ ];
+ var values = [];
+ $.each(labels, function(key) {
+ values.push({x: labels[key], y: data[key]});
+ });
+
+ return [
+ {
+ key: label,
+ values: values,
+ color: "#4572A7"
+ }
+ ];
+ }
+ nv.addGraph(function() {
+ var chart = nv.models.scatterChart()
+ .showDistX(true)
+ .showDistY(true)
+ .showLegend(false)
+ .forceX([0, 100]);
+ chart.tooltipContent(function(graph) {
+ return '<p>' + graph.point.class + '</p>';
+ });
+
+ chart.xAxis.axisLabel('Code Coverage (in percent)');
+ chart.yAxis.axisLabel('Cyclomatic Complexity');
+
+ d3.select('#classComplexity svg')
+ .datum(getComplexityData({{complexity_class}}, 'Class Complexity'))
+ .transition()
+ .duration(500)
+ .call(chart);
+
+ nv.utils.windowResize(chart.update);
+
+ return chart;
+ });
+
+ nv.addGraph(function() {
+ var chart = nv.models.scatterChart()
+ .showDistX(true)
+ .showDistY(true)
+ .showLegend(false)
+ .forceX([0, 100]);
+ chart.tooltipContent(function(graph) {
+ return '<p>' + graph.point.class + '</p>';
+ });
+
+ chart.xAxis.axisLabel('Code Coverage (in percent)');
+ chart.yAxis.axisLabel('Method Complexity');
+
+ d3.select('#methodComplexity svg')
+ .datum(getComplexityData({{complexity_method}}, 'Method Complexity'))
+ .transition()
+ .duration(500)
+ .call(chart);
+
+ nv.utils.windowResize(chart.update);
+
+ return chart;
+ });
+
+ function getComplexityData(data, label) {
+ var values = [];
+ $.each(data, function(key) {
+ var value = Math.round(data[key][0]*100) / 100;
+ values.push({
+ x: value,
+ y: data[key][1],
+ class: data[key][2],
+ size: 0.05,
+ shape: 'diamond'
+ });
+ });
+
+ return [
+ {
+ key: label,
+ values: values,
+ color: "#4572A7"
+ }
+ ];
+ }
+});
+ </script>
+ </body>
+</html>
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist
new file mode 100644
index 000000000..a263463a6
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory.html.dist
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8">
+ <title>Code Coverage for {{full_path}}</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link href="{{path_to_root}}_css/bootstrap.min.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/octicons.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/style.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+ <header>
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-md-12">
+ <nav aria-label="breadcrumb">
+ <ol class="breadcrumb">
+{{breadcrumbs}}
+ </ol>
+ </nav>
+ </div>
+ </div>
+ </div>
+ </header>
+ <div class="container-fluid">
+ <div class="table-responsive">
+ <table class="table table-bordered">
+ <thead>
+ <tr>
+ <td>&nbsp;</td>
+ <td colspan="9"><div align="center"><strong>Code Coverage</strong></div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+ <td colspan="3"><div align="center"><strong>Functions and Methods</strong></div></td>
+ <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+ </tr>
+ </thead>
+ <tbody>
+{{items}}
+ </tbody>
+ </table>
+ </div>
+ <footer>
+ <hr/>
+ <h4>Legend</h4>
+ <p>
+ <span class="danger"><strong>Low</strong>: 0% to {{low_upper_bound}}%</span>
+ <span class="warning"><strong>Medium</strong>: {{low_upper_bound}}% to {{high_lower_bound}}%</span>
+ <span class="success"><strong>High</strong>: {{high_lower_bound}}% to 100%</span>
+ </p>
+ <p>
+ <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage {{version}}</a> using {{runtime}}{{generator}} at {{date}}.</small>
+ </p>
+ </footer>
+ </div>
+ </body>
+</html>
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_branch.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_branch.html.dist
new file mode 100644
index 000000000..8c94861ff
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_branch.html.dist
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8">
+ <title>Code Coverage for {{full_path}}</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link href="{{path_to_root}}_css/bootstrap.min.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/octicons.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/style.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+ <header>
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-md-12">
+ <nav aria-label="breadcrumb">
+ <ol class="breadcrumb">
+{{breadcrumbs}}
+ </ol>
+ </nav>
+ </div>
+ </div>
+ </div>
+ </header>
+ <div class="container-fluid">
+ <div class="table-responsive">
+ <table class="table table-bordered">
+ <thead>
+ <tr>
+ <td>&nbsp;</td>
+ <td colspan="15"><div align="center"><strong>Code Coverage</strong></div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+ <td colspan="3"><div align="center"><strong>Branches</strong></div></td>
+ <td colspan="3"><div align="center"><strong>Paths</strong></div></td>
+ <td colspan="3"><div align="center"><strong>Functions and Methods</strong></div></td>
+ <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+ </tr>
+ </thead>
+ <tbody>
+{{items}}
+ </tbody>
+ </table>
+ </div>
+ <footer>
+ <hr/>
+ <h4>Legend</h4>
+ <p>
+ <span class="danger"><strong>Low</strong>: 0% to {{low_upper_bound}}%</span>
+ <span class="warning"><strong>Medium</strong>: {{low_upper_bound}}% to {{high_lower_bound}}%</span>
+ <span class="success"><strong>High</strong>: {{high_lower_bound}}% to 100%</span>
+ </p>
+ <p>
+ <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage {{version}}</a> using {{runtime}}{{generator}} at {{date}}.</small>
+ </p>
+ </footer>
+ </div>
+ </body>
+</html>
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist
new file mode 100644
index 000000000..f6941a437
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item.html.dist
@@ -0,0 +1,13 @@
+ <tr>
+ <td class="{{lines_level}}">{{icon}}{{name}}</td>
+ <td class="{{lines_level}} big">{{lines_bar}}</td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_executed_percent}}</div></td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_number}}</div></td>
+ <td class="{{methods_level}} big">{{methods_bar}}</td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_tested_percent}}</div></td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_number}}</div></td>
+ <td class="{{classes_level}} big">{{classes_bar}}</td>
+ <td class="{{classes_level}} small"><div align="right">{{classes_tested_percent}}</div></td>
+ <td class="{{classes_level}} small"><div align="right">{{classes_number}}</div></td>
+ </tr>
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item_branch.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item_branch.html.dist
new file mode 100644
index 000000000..532a436c2
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/directory_item_branch.html.dist
@@ -0,0 +1,19 @@
+ <tr>
+ <td class="{{lines_level}}">{{icon}}{{name}}</td>
+ <td class="{{lines_level}} big">{{lines_bar}}</td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_executed_percent}}</div></td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_number}}</div></td>
+ <td class="{{branches_level}} big">{{branches_bar}}</td>
+ <td class="{{branches_level}} small"><div align="right">{{branches_executed_percent}}</div></td>
+ <td class="{{branches_level}} small"><div align="right">{{branches_number}}</div></td>
+ <td class="{{paths_level}} big">{{paths_bar}}</td>
+ <td class="{{paths_level}} small"><div align="right">{{paths_executed_percent}}</div></td>
+ <td class="{{paths_level}} small"><div align="right">{{paths_number}}</div></td>
+ <td class="{{methods_level}} big">{{methods_bar}}</td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_tested_percent}}</div></td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_number}}</div></td>
+ <td class="{{classes_level}} big">{{classes_bar}}</td>
+ <td class="{{classes_level}} small"><div align="right">{{classes_tested_percent}}</div></td>
+ <td class="{{classes_level}} small"><div align="right">{{classes_number}}</div></td>
+ </tr>
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist
new file mode 100644
index 000000000..af8631d13
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file.html.dist
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8">
+ <title>Code Coverage for {{full_path}}</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link href="{{path_to_root}}_css/bootstrap.min.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/octicons.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/style.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+ <header>
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-md-12">
+ <nav aria-label="breadcrumb">
+ <ol class="breadcrumb">
+{{breadcrumbs}}
+ </ol>
+ </nav>
+ </div>
+ </div>
+ </div>
+ </header>
+ <div class="container-fluid">
+ <div class="table-responsive">
+ <table class="table table-bordered">
+ <thead>
+ <tr>
+ <td>&nbsp;</td>
+ <td colspan="10"><div align="center"><strong>Code Coverage</strong></div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+ <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+ <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+ </tr>
+ </thead>
+ <tbody>
+{{items}}
+ </tbody>
+ </table>
+ </div>
+{{lines}}
+{{structure}}
+ <footer>
+ <hr/>
+ <h4>Legend</h4>
+ {{legend}}
+ <p>
+ <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage {{version}}</a> using {{runtime}}{{generator}} at {{date}}.</small>
+ </p>
+ <a title="Back to the top" id="toplink" href="#">
+ <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+ </a>
+ </footer>
+ </div>
+ <script src="{{path_to_root}}_js/jquery.min.js" type="text/javascript"></script>
+ <script src="{{path_to_root}}_js/popper.min.js" type="text/javascript"></script>
+ <script src="{{path_to_root}}_js/bootstrap.min.js" type="text/javascript"></script>
+ <script src="{{path_to_root}}_js/file.js" type="text/javascript"></script>
+ </body>
+</html>
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_branch.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_branch.html.dist
new file mode 100644
index 000000000..8717d7f9a
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_branch.html.dist
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8">
+ <title>Code Coverage for {{full_path}}</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <link href="{{path_to_root}}_css/bootstrap.min.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/octicons.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/style.css" rel="stylesheet" type="text/css">
+ <link href="{{path_to_root}}_css/custom.css" rel="stylesheet" type="text/css">
+ </head>
+ <body>
+ <header>
+ <div class="container-fluid">
+ <div class="row">
+ <div class="col-md-12">
+ <nav aria-label="breadcrumb">
+ <ol class="breadcrumb">
+{{breadcrumbs}}
+ </ol>
+ </nav>
+ </div>
+ </div>
+ </div>
+ </header>
+ <div class="container-fluid">
+ <div class="table-responsive">
+ <table class="table table-bordered">
+ <thead>
+ <tr>
+ <td>&nbsp;</td>
+ <td colspan="16"><div align="center"><strong>Code Coverage</strong></div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ <td colspan="3"><div align="center"><strong>Lines</strong></div></td>
+ <td colspan="3"><div align="center"><strong>Branches</strong></div></td>
+ <td colspan="3"><div align="center"><strong>Paths</strong></div></td>
+ <td colspan="4"><div align="center"><strong>Functions and Methods</strong></div></td>
+ <td colspan="3"><div align="center"><strong>Classes and Traits</strong></div></td>
+ </tr>
+ </thead>
+ <tbody>
+{{items}}
+ </tbody>
+ </table>
+ </div>
+{{lines}}
+{{structure}}
+ <footer>
+ <hr/>
+ <h4>Legend</h4>
+ {{legend}}
+ <p>
+ <small>Generated by <a href="https://github.com/sebastianbergmann/php-code-coverage" target="_top">php-code-coverage {{version}}</a> using {{runtime}}{{generator}} at {{date}}.</small>
+ </p>
+ <a title="Back to the top" id="toplink" href="#">
+ <svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M12 11L6 5l-6 6h12z"/></svg>
+ </a>
+ </footer>
+ </div>
+ <script src="{{path_to_root}}_js/jquery.min.js" type="text/javascript"></script>
+ <script src="{{path_to_root}}_js/popper.min.js" type="text/javascript"></script>
+ <script src="{{path_to_root}}_js/bootstrap.min.js" type="text/javascript"></script>
+ <script src="{{path_to_root}}_js/file.js" type="text/javascript"></script>
+ </body>
+</html>
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist
new file mode 100644
index 000000000..335f0ccc6
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item.html.dist
@@ -0,0 +1,14 @@
+ <tr>
+ <td class="{{classes_level}}">{{name}}</td>
+ <td class="{{lines_level}} big">{{lines_bar}}</td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_executed_percent}}</div></td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_number}}</div></td>
+ <td class="{{methods_level}} big">{{methods_bar}}</td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_tested_percent}}</div></td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_number}}</div></td>
+ <td class="{{methods_level}} small">{{crap}}</td>
+ <td class="{{classes_level}} big">{{classes_bar}}</td>
+ <td class="{{classes_level}} small"><div align="right">{{classes_tested_percent}}</div></td>
+ <td class="{{classes_level}} small"><div align="right">{{classes_number}}</div></td>
+ </tr>
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item_branch.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item_branch.html.dist
new file mode 100644
index 000000000..90e25eaac
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/file_item_branch.html.dist
@@ -0,0 +1,20 @@
+ <tr>
+ <td class="{{classes_level}}">{{name}}</td>
+ <td class="{{lines_level}} big">{{lines_bar}}</td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_executed_percent}}</div></td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_number}}</div></td>
+ <td class="{{branches_level}} big">{{branches_bar}}</td>
+ <td class="{{branches_level}} small"><div align="right">{{branches_executed_percent}}</div></td>
+ <td class="{{branches_level}} small"><div align="right">{{branches_number}}</div></td>
+ <td class="{{paths_level}} big">{{paths_bar}}</td>
+ <td class="{{paths_level}} small"><div align="right">{{paths_executed_percent}}</div></td>
+ <td class="{{paths_level}} small"><div align="right">{{paths_number}}</div></td>
+ <td class="{{methods_level}} big">{{methods_bar}}</td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_tested_percent}}</div></td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_number}}</div></td>
+ <td class="{{methods_level}} small">{{crap}}</td>
+ <td class="{{classes_level}} big">{{classes_bar}}</td>
+ <td class="{{classes_level}} small"><div align="right">{{classes_tested_percent}}</div></td>
+ <td class="{{classes_level}} small"><div align="right">{{classes_number}}</div></td>
+ </tr>
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/icons/file-code.svg b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/icons/file-code.svg
new file mode 100644
index 000000000..5b4b19953
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/icons/file-code.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16"><path fill-rule="evenodd" d="M8.5 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V4.5L8.5 1zM11 14H1V2h7l3 3v9zM5 6.98L3.5 8.5 5 10l-.5 1L2 8.5 4.5 6l.5.98zM7.5 6L10 8.5 7.5 11l-.5-.98L8.5 8.5 7 7l.5-1z"/></svg> \ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/icons/file-directory.svg b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/icons/file-directory.svg
new file mode 100644
index 000000000..4bf1f1caa
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/icons/file-directory.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="16" viewBox="0 0 14 16"><path fill-rule="evenodd" d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"/></svg> \ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js
new file mode 100644
index 000000000..50720eadb
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v4.6.1 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery,t.Popper)}(this,(function(t,e,n){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=i(e),a=i(n);function s(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function l(t,e,n){return e&&s(t.prototype,e),n&&s(t,n),t}function r(){return r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},r.apply(this,arguments)}function u(t,e){return u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},u(t,e)}var f="transitionend";var d={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=o.default(t).css("transition-duration"),n=o.default(t).css("transition-delay"),i=parseFloat(e),a=parseFloat(n);return i||a?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){o.default(t).trigger(f)},supportsTransitionEnd:function(){return Boolean(f)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],a=e[i],s=a&&d.isElement(a)?"element":null===(l=a)||"undefined"==typeof l?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var l},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?d.findShadowRoot(t.parentNode):null},jQueryDetection:function(){if("undefined"==typeof o.default)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=o.default.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||t[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=function(t){var e=this,n=!1;return o.default(this).one(d.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||d.triggerTransitionEnd(e)}),t),this},o.default.event.special[d.TRANSITION_END]={bindType:f,delegateType:f,handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var c="bs.alert",h=o.default.fn.alert,g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,c),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event("close.bs.alert");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass("show"),o.default(t).hasClass("fade")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(c);i||(i=new t(this),n.data(c,i)),"close"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',g._handleDismiss(new g)),o.default.fn.alert=g._jQueryInterface,o.default.fn.alert.Constructor=g,o.default.fn.alert.noConflict=function(){return o.default.fn.alert=h,g._jQueryInterface};var m="bs.button",p=o.default.fn.button,_="active",v='[data-toggle^="button"]',y='input:not([type="hidden"])',b=".btn",E=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var i=this._element.querySelector(y);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(_))t=!1;else{var a=n.querySelector(".active");a&&o.default(a).removeClass(_)}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains(_)),this.shouldAvoidTriggerChange||o.default(i).trigger("change")),i.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(_)),t&&o.default(this._element).toggleClass(_))},e.dispose=function(){o.default.removeData(this._element,m),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),a=i.data(m);a||(a=new t(this),i.data(m,a)),a.shouldAvoidTriggerChange=n,"toggle"===e&&a[e]()}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.button.data-api",v,(function(t){var e=t.target,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(b)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector(y);if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||E._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",v,(function(t){var e=o.default(t.target).closest(b)[0];o.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),o.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e<n;e++){var i=t[e],o=i.querySelector(y);o.checked||o.hasAttribute("checked")?i.classList.add(_):i.classList.remove(_)}for(var a=0,s=(t=[].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length;a<s;a++){var l=t[a];"true"===l.getAttribute("aria-pressed")?l.classList.add(_):l.classList.remove(_)}})),o.default.fn.button=E._jQueryInterface,o.default.fn.button.Constructor=E,o.default.fn.button.noConflict=function(){return o.default.fn.button=p,E._jQueryInterface};var T="carousel",w="bs.carousel",C=o.default.fn[T],S="active",N="next",D="prev",A="slid.bs.carousel",I=".active.carousel-item",k={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},O={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},j={TOUCH:"touch",PEN:"pen"},P=function(){function t(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(".carousel-indicators"),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(N)},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(D)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(I);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one(A,(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?N:D;this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(".bs.carousel"),o.default.removeData(this._element,w),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=r({},k,t),d.typeCheckConfig(T,t,O),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&o.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(o.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===N,i=t===D,o=this._getItemIndex(e),a=this._items.length-1;if((i&&0===o||n&&o===a)&&!this._config.wrap)return e;var s=(o+(t===D?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(I)),a=o.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(a),a},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));o.default(e).removeClass(S);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass(S)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(I);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,i,a,s=this,l=this._element.querySelector(I),r=this._getItemIndex(l),u=e||l&&this._getItemByDirection(t,l),f=this._getItemIndex(u),c=Boolean(this._interval);if(t===N?(n="carousel-item-left",i="carousel-item-next",a="left"):(n="carousel-item-right",i="carousel-item-prev",a="right"),u&&o.default(u).hasClass(S))this._isSliding=!1;else if(!this._triggerSlideEvent(u,a).isDefaultPrevented()&&l&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u),this._activeElement=u;var h=o.default.Event(A,{relatedTarget:u,direction:a,from:r,to:f});if(o.default(this._element).hasClass("slide")){o.default(u).addClass(i),d.reflow(u),o.default(l).addClass(n),o.default(u).addClass(n);var g=d.getTransitionDurationFromElement(l);o.default(l).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass(S),o.default(l).removeClass("active "+i+" "+n),s._isSliding=!1,setTimeout((function(){return o.default(s._element).trigger(h)}),0)})).emulateTransitionEnd(g)}else o.default(l).removeClass(S),o.default(u).addClass(S),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(w),i=r({},k,o.default(this).data());"object"==typeof e&&(i=r({},i,e));var a="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data(w,n)),"number"==typeof e)n.to(e);else if("string"==typeof a){if("undefined"==typeof n[a])throw new TypeError('No method named "'+a+'"');n[a]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass("carousel")){var a=r({},o.default(i).data(),o.default(this).data()),s=this.getAttribute("data-slide-to");s&&(a.interval=!1),t._jQueryInterface.call(o.default(i),a),s&&o.default(i).data(w).to(s),e.preventDefault()}}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return k}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",P._dataApiClickHandler),o.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e<n;e++){var i=o.default(t[e]);P._jQueryInterface.call(i,i.data())}})),o.default.fn[T]=P._jQueryInterface,o.default.fn[T].Constructor=P,o.default.fn[T].noConflict=function(){return o.default.fn[T]=C,P._jQueryInterface};var L="collapse",R="bs.collapse",x=o.default.fn[L],q="show",F="collapse",Q="collapsing",B="collapsed",H="width",U='[data-toggle="collapse"]',M={toggle:!0,parent:""},W={toggle:"boolean",parent:"(string|element)"},V=function(){function t(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(U)),i=0,o=n.length;i<o;i++){var a=n[i],s=d.getSelectorFromElement(a),l=[].slice.call(document.querySelectorAll(s)).filter((function(e){return e===t}));null!==s&&l.length>0&&(this._selector=s,this._triggerArray.push(a))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass(q)?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!(this._isTransitioning||o.default(this._element).hasClass(q)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof i._config.parent?t.getAttribute("data-parent")===i._config.parent:t.classList.contains(F)}))).length&&(e=null),e&&(n=o.default(e).not(this._selector).data(R))&&n._isTransitioning))){var a=o.default.Event("show.bs.collapse");if(o.default(this._element).trigger(a),!a.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),"hide"),n||o.default(e).data(R,null));var s=this._getDimension();o.default(this._element).removeClass(F).addClass(Q),this._element.style[s]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass(B).attr("aria-expanded",!0),this.setTransitioning(!0);var l="scroll"+(s[0].toUpperCase()+s.slice(1)),r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass(Q).addClass("collapse show"),i._element.style[s]="",i.setTransitioning(!1),o.default(i._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(r),this._element.style[s]=this._element[l]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass(q)){var e=o.default.Event("hide.bs.collapse");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",d.reflow(this._element),o.default(this._element).addClass(Q).removeClass("collapse show");var i=this._triggerArray.length;if(i>0)for(var a=0;a<i;a++){var s=this._triggerArray[a],l=d.getSelectorFromElement(s);null!==l&&(o.default([].slice.call(document.querySelectorAll(l))).hasClass(q)||o.default(s).addClass(B).attr("aria-expanded",!1))}this.setTransitioning(!0),this._element.style[n]="";var r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){t.setTransitioning(!1),o.default(t._element).removeClass(Q).addClass(F).trigger("hidden.bs.collapse")})).emulateTransitionEnd(r)}}},e.setTransitioning=function(t){this._isTransitioning=t},e.dispose=function(){o.default.removeData(this._element,R),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},e._getConfig=function(t){return(t=r({},M,t)).toggle=Boolean(t.toggle),d.typeCheckConfig(L,t,W),t},e._getDimension=function(){return o.default(this._element).hasClass(H)?H:"height"},e._getParent=function(){var e,n=this;d.isElement(this._config.parent)?(e=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(e=this._config.parent[0])):e=document.querySelector(this._config.parent);var i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',a=[].slice.call(e.querySelectorAll(i));return o.default(a).each((function(e,i){n._addAriaAndCollapsedClass(t._getTargetFromElement(i),[i])})),e},e._addAriaAndCollapsedClass=function(t,e){var n=o.default(t).hasClass(q);e.length&&o.default(e).toggleClass(B,!n).attr("aria-expanded",n)},t._getTargetFromElement=function(t){var e=d.getSelectorFromElement(t);return e?document.querySelector(e):null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(R),a=r({},M,n.data(),"object"==typeof e&&e?e:{});if(!i&&a.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(a.toggle=!1),i||(i=new t(this,a),n.data(R,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return M}}]),t}();o.default(document).on("click.bs.collapse.data-api",U,(function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var e=o.default(this),n=d.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(n));o.default(i).each((function(){var t=o.default(this),n=t.data(R)?"toggle":e.data();V._jQueryInterface.call(t,n)}))})),o.default.fn[L]=V._jQueryInterface,o.default.fn[L].Constructor=V,o.default.fn[L].noConflict=function(){return o.default.fn[L]=x,V._jQueryInterface};var z="dropdown",K="bs.dropdown",X=o.default.fn[z],Y=new RegExp("38|40|27"),$="disabled",J="show",G="dropdown-menu-right",Z="hide.bs.dropdown",tt="hidden.bs.dropdown",et="click.bs.dropdown.data-api",nt="keydown.bs.dropdown.data-api",it='[data-toggle="dropdown"]',ot=".dropdown-menu",at={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},st={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},lt=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!o.default(this._element).hasClass($)){var e=o.default(this._menu).hasClass(J);t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||o.default(this._element).hasClass($)||o.default(this._menu).hasClass(J))){var n={relatedTarget:this._element},i=o.default.Event("show.bs.dropdown",n),s=t._getParentFromElement(this._element);if(o.default(s).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var l=this._element;"parent"===this._config.reference?l=s:d.isElement(this._config.reference)&&(l=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(l=this._config.reference[0])),"scrollParent"!==this._config.boundary&&o.default(s).addClass("position-static"),this._popper=new a.default(l,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===o.default(s).closest(".navbar-nav").length&&o.default(document.body).children().on("mouseover",null,o.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),o.default(this._menu).toggleClass(J),o.default(s).toggleClass(J).trigger(o.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!o.default(this._element).hasClass($)&&o.default(this._menu).hasClass(J)){var e={relatedTarget:this._element},n=o.default.Event(Z,e),i=t._getParentFromElement(this._element);o.default(i).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),o.default(this._menu).toggleClass(J),o.default(i).toggleClass(J).trigger(o.default.Event(tt,e)))}},e.dispose=function(){o.default.removeData(this._element,K),o.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;o.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=r({},this.constructor.Default,o.default(this._element).data(),t),d.typeCheckConfig(z,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(ot))}return this._menu},e._getPlacement=function(){var t=o.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=o.default(this._menu).hasClass(G)?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":o.default(this._menu).hasClass(G)&&(e="bottom-end"),e},e._detectNavbar=function(){return o.default(this._element).closest(".navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),r({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(K);if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data(K,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll(it)),i=0,a=n.length;i<a;i++){var s=t._getParentFromElement(n[i]),l=o.default(n[i]).data(K),r={relatedTarget:n[i]};if(e&&"click"===e.type&&(r.clickEvent=e),l){var u=l._menu;if(o.default(s).hasClass(J)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&o.default.contains(s,e.target))){var f=o.default.Event(Z,r);o.default(s).trigger(f),f.isDefaultPrevented()||("ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),n[i].setAttribute("aria-expanded","false"),l._popper&&l._popper.destroy(),o.default(u).removeClass(J),o.default(s).removeClass(J).trigger(o.default.Event(tt,r)))}}}},t._getParentFromElement=function(t){var e,n=d.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},t._dataApiKeydownHandler=function(e){if(!(/input|textarea/i.test(e.target.tagName)?32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||o.default(e.target).closest(ot).length):!Y.test(e.which))&&!this.disabled&&!o.default(this).hasClass($)){var n=t._getParentFromElement(this),i=o.default(n).hasClass(J);if(i||27!==e.which){if(e.preventDefault(),e.stopPropagation(),!i||27===e.which||32===e.which)return 27===e.which&&o.default(n.querySelector(it)).trigger("focus"),void o.default(this).trigger("click");var a=[].slice.call(n.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter((function(t){return o.default(t).is(":visible")}));if(0!==a.length){var s=a.indexOf(e.target);38===e.which&&s>0&&s--,40===e.which&&s<a.length-1&&s++,s<0&&(s=0),a[s].focus()}}}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return at}},{key:"DefaultType",get:function(){return st}}]),t}();o.default(document).on(nt,it,lt._dataApiKeydownHandler).on(nt,ot,lt._dataApiKeydownHandler).on(et+" keyup.bs.dropdown.data-api",lt._clearMenus).on(et,it,(function(t){t.preventDefault(),t.stopPropagation(),lt._jQueryInterface.call(o.default(this),"toggle")})).on(et,".dropdown form",(function(t){t.stopPropagation()})),o.default.fn[z]=lt._jQueryInterface,o.default.fn[z].Constructor=lt,o.default.fn[z].noConflict=function(){return o.default.fn[z]=X,lt._jQueryInterface};var rt="bs.modal",ut=o.default.fn.modal,ft="modal-open",dt="fade",ct="show",ht="modal-static",gt="hidden.bs.modal",mt="show.bs.modal",pt="focusin.bs.modal",_t="resize.bs.modal",vt="click.dismiss.bs.modal",yt="keydown.dismiss.bs.modal",bt="mousedown.dismiss.bs.modal",Et=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Tt={backdrop:!0,keyboard:!0,focus:!0,show:!0},wt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},Ct=function(){function t(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(".modal-dialog"),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var e=t.prototype;return e.toggle=function(t){return this._isShown?this.hide():this.show(t)},e.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){var n=o.default.Event(mt,{relatedTarget:t});o.default(this._element).trigger(n),n.isDefaultPrevented()||(this._isShown=!0,o.default(this._element).hasClass(dt)&&(this._isTransitioning=!0),this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),o.default(this._element).on(vt,'[data-dismiss="modal"]',(function(t){return e.hide(t)})),o.default(this._dialog).on(bt,(function(){o.default(e._element).one("mouseup.dismiss.bs.modal",(function(t){o.default(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)}))})),this._showBackdrop((function(){return e._showElement(t)})))}},e.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=o.default.Event("hide.bs.modal");if(o.default(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=o.default(this._element).hasClass(dt);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),o.default(document).off(pt),o.default(this._element).removeClass(ct),o.default(this._element).off(vt),o.default(this._dialog).off(bt),i){var a=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(t){return e._hideModal(t)})).emulateTransitionEnd(a)}else this._hideModal()}}},e.dispose=function(){[window,this._element,this._dialog].forEach((function(t){return o.default(t).off(".bs.modal")})),o.default(document).off(pt),o.default.removeData(this._element,rt),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},e.handleUpdate=function(){this._adjustDialog()},e._getConfig=function(t){return t=r({},Tt,t),d.typeCheckConfig("modal",t,wt),t},e._triggerBackdropTransition=function(){var t=this,e=o.default.Event("hidePrevented.bs.modal");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._element.scrollHeight>document.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(ht);var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove(ht),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass(dt),i=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),o.default(this._dialog).hasClass("modal-dialog-scrollable")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass(ct),this._config.focus&&this._enforceFocus();var a=o.default.Event("shown.bs.modal",{relatedTarget:t}),s=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(a)};if(n){var l=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._enforceFocus=function(){var t=this;o.default(document).off(pt).on(pt,(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on(yt,(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off(yt)},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on(_t,(function(e){return t.handleUpdate(e)})):o.default(window).off(_t)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass(ft),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger(gt)}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass(dt)?dt:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on(vt,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass(ct),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass(ct);var a=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass(dt)){var s=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},e._setScrollbar=function(){var t=this;if(this._isBodyOverflowing){var e=[].slice.call(document.querySelectorAll(Et)),n=[].slice.call(document.querySelectorAll(".sticky-top"));o.default(e).each((function(e,n){var i=n.style.paddingRight,a=o.default(n).css("padding-right");o.default(n).data("padding-right",i).css("padding-right",parseFloat(a)+t._scrollbarWidth+"px")})),o.default(n).each((function(e,n){var i=n.style.marginRight,a=o.default(n).css("margin-right");o.default(n).data("margin-right",i).css("margin-right",parseFloat(a)-t._scrollbarWidth+"px")}));var i=document.body.style.paddingRight,a=o.default(document.body).css("padding-right");o.default(document.body).data("padding-right",i).css("padding-right",parseFloat(a)+this._scrollbarWidth+"px")}o.default(document.body).addClass(ft)},e._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(Et));o.default(t).each((function(t,e){var n=o.default(e).data("padding-right");o.default(e).removeData("padding-right"),e.style.paddingRight=n||""}));var e=[].slice.call(document.querySelectorAll(".sticky-top"));o.default(e).each((function(t,e){var n=o.default(e).data("margin-right");"undefined"!=typeof n&&o.default(e).css("margin-right",n).removeData("margin-right")}));var n=o.default(document.body).data("padding-right");o.default(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},e._getScrollbarWidth=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this).data(rt),a=r({},Tt,o.default(this).data(),"object"==typeof e&&e?e:{});if(i||(i=new t(this,a),o.default(this).data(rt,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](n)}else a.show&&i.show(n)}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Tt}}]),t}();o.default(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',(function(t){var e,n=this,i=d.getSelectorFromElement(this);i&&(e=document.querySelector(i));var a=o.default(e).data(rt)?"toggle":r({},o.default(e).data(),o.default(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var s=o.default(e).one(mt,(function(t){t.isDefaultPrevented()||s.one(gt,(function(){o.default(n).is(":visible")&&n.focus()}))}));Ct._jQueryInterface.call(o.default(e),a,this)})),o.default.fn.modal=Ct._jQueryInterface,o.default.fn.modal.Constructor=Ct,o.default.fn.modal.noConflict=function(){return o.default.fn.modal=ut,Ct._jQueryInterface};var St=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Nt=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Dt=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;function At(t,e,n){if(0===t.length)return t;if(n&&"function"==typeof n)return n(t);for(var i=(new window.DOMParser).parseFromString(t,"text/html"),o=Object.keys(e),a=[].slice.call(i.body.querySelectorAll("*")),s=function(t,n){var i=a[t],s=i.nodeName.toLowerCase();if(-1===o.indexOf(i.nodeName.toLowerCase()))return i.parentNode.removeChild(i),"continue";var l=[].slice.call(i.attributes),r=[].concat(e["*"]||[],e[s]||[]);l.forEach((function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===St.indexOf(n)||Boolean(Nt.test(t.nodeValue)||Dt.test(t.nodeValue));for(var i=e.filter((function(t){return t instanceof RegExp})),o=0,a=i.length;o<a;o++)if(i[o].test(n))return!0;return!1})(t,r)||i.removeAttribute(t.nodeName)}))},l=0,r=a.length;l<r;l++)s(l);return i.body.innerHTML}var It="tooltip",kt="bs.tooltip",Ot=o.default.fn.tooltip,jt=new RegExp("(^|\\s)bs-tooltip\\S+","g"),Pt=["sanitize","whiteList","sanitizeFn"],Lt="fade",Rt="show",xt="show",qt="out",Ft="hover",Qt="focus",Bt={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Ht={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ut={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Mt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Wt=function(){function t(t,e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass(Rt))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var s=this.getTipElement(),l=d.getUID(this.constructor.NAME);s.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&o.default(s).addClass(Lt);var r="function"==typeof this.config.placement?this.config.placement.call(this,s,this.element):this.config.placement,u=this._getAttachment(r);this.addAttachmentClass(u);var f=this._getContainer();o.default(s).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(s).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new a.default(this.element,s,this._getPopperConfig(u)),o.default(s).addClass(Rt),o.default(s).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),e===qt&&t._leave(null,t)};if(o.default(this.tip).hasClass(Lt)){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),a=function(){e._hoverState!==xt&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass(Rt),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass(Lt)){var s=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=At(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return r({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return Bt[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n=e===Ft?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=e===Ft?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Qt:Ft]=!0),o.default(e.getTipElement()).hasClass(Rt)||e._hoverState===xt?e._hoverState=xt:(clearTimeout(e._timeout),e._hoverState=xt,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===xt&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Qt:Ft]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=qt,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===qt&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Pt.indexOf(t)&&delete e[t]})),"number"==typeof(t=r({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(It,t,this.constructor.DefaultType),t.sanitize&&(t.template=At(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(jt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass(Lt),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(kt),a="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,a),n.data(kt,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Ht}},{key:"NAME",get:function(){return It}},{key:"DATA_KEY",get:function(){return kt}},{key:"Event",get:function(){return Mt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Ut}}]),t}();o.default.fn.tooltip=Wt._jQueryInterface,o.default.fn.tooltip.Constructor=Wt,o.default.fn.tooltip.noConflict=function(){return o.default.fn.tooltip=Ot,Wt._jQueryInterface};var Vt="bs.popover",zt=o.default.fn.popover,Kt=new RegExp("(^|\\s)bs-popover\\S+","g"),Xt=r({},Wt.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),Yt=r({},Wt.DefaultType,{content:"(string|element|function)"}),$t={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Jt=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,u(e,n);var a=i.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},a.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(Kt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data(Vt),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data(Vt,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},l(i,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Xt}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return Vt}},{key:"Event",get:function(){return $t}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Yt}}]),i}(Wt);o.default.fn.popover=Jt._jQueryInterface,o.default.fn.popover.Constructor=Jt,o.default.fn.popover.noConflict=function(){return o.default.fn.popover=zt,Jt._jQueryInterface};var Gt="scrollspy",Zt="bs.scrollspy",te=o.default.fn[Gt],ee="active",ne="position",ie=".nav, .list-group",oe={offset:10,method:"auto",target:""},ae={offset:"number",method:"string",target:"(string|element)"},se=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":ne,n="auto"===this._config.method?e:this._config.method,i=n===ne?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,a=d.getSelectorFromElement(t);if(a&&(e=document.querySelector(a)),e){var s=e.getBoundingClientRect();if(s.width||s.height)return[o.default(e)[n]().top+i,a]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,Zt),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=r({},oe,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(Gt),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(Gt,t,ae),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}},e._activate=function(t){this._activeTarget=t,this._clear();var e=this._selector.split(",").map((function(e){return e+'[data-target="'+t+'"],'+e+'[href="'+t+'"]'})),n=o.default([].slice.call(document.querySelectorAll(e.join(","))));n.hasClass("dropdown-item")?(n.closest(".dropdown").find(".dropdown-toggle").addClass(ee),n.addClass(ee)):(n.addClass(ee),n.parents(ie).prev(".nav-link, .list-group-item").addClass(ee),n.parents(ie).prev(".nav-item").children(".nav-link").addClass(ee)),o.default(this._scrollElement).trigger("activate.bs.scrollspy",{relatedTarget:t})},e._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter((function(t){return t.classList.contains(ee)})).forEach((function(t){return t.classList.remove(ee)}))},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(Zt);if(n||(n=new t(this,"object"==typeof e&&e),o.default(this).data(Zt,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return oe}}]),t}();o.default(window).on("load.bs.scrollspy.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-spy="scroll"]')),e=t.length;e--;){var n=o.default(t[e]);se._jQueryInterface.call(n,n.data())}})),o.default.fn[Gt]=se._jQueryInterface,o.default.fn[Gt].Constructor=se,o.default.fn[Gt].noConflict=function(){return o.default.fn[Gt]=te,se._jQueryInterface};var le="bs.tab",re=o.default.fn.tab,ue="active",fe="fade",de="show",ce=".active",he="> li > .active",ge=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&o.default(this._element).hasClass(ue)||o.default(this._element).hasClass("disabled"))){var e,n,i=o.default(this._element).closest(".nav, .list-group")[0],a=d.getSelectorFromElement(this._element);if(i){var s="UL"===i.nodeName||"OL"===i.nodeName?he:ce;n=(n=o.default.makeArray(o.default(i).find(s)))[n.length-1]}var l=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),r=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(l),o.default(this._element).trigger(r),!r.isDefaultPrevented()&&!l.isDefaultPrevented()){a&&(e=document.querySelector(a)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,le),this._element=null},e._activate=function(t,e,n){var i=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(ce):o.default(e).find(he))[0],s=n&&a&&o.default(a).hasClass(fe),l=function(){return i._transitionComplete(t,a,n)};if(a&&s){var r=d.getTransitionDurationFromElement(a);o.default(a).removeClass(de).one(d.TRANSITION_END,l).emulateTransitionEnd(r)}else l()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass(ue);var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass(ue),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}o.default(t).addClass(ue),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains(fe)&&t.classList.add(de);var a=t.parentNode;if(a&&"LI"===a.nodeName&&(a=a.parentNode),a&&o.default(a).hasClass("dropdown-menu")){var s=o.default(t).closest(".dropdown")[0];if(s){var l=[].slice.call(s.querySelectorAll(".dropdown-toggle"));o.default(l).addClass(ue)}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(le);if(i||(i=new t(this),n.data(le,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),ge._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=ge._jQueryInterface,o.default.fn.tab.Constructor=ge,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=re,ge._jQueryInterface};var me="bs.toast",pe=o.default.fn.toast,_e="hide",ve="show",ye="showing",be="click.dismiss.bs.toast",Ee={animation:!0,autohide:!0,delay:500},Te={animation:"boolean",autohide:"boolean",delay:"number"},we=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove(ye),t._element.classList.add(ve),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(_e),d.reflow(this._element),this._element.classList.add(ye),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains(ve)){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(ve)&&this._element.classList.remove(ve),o.default(this._element).off(be),o.default.removeData(this._element,me),this._element=null,this._config=null},e._getConfig=function(t){return t=r({},Ee,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on(be,'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(_e),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove(ve),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(me);if(i||(i=new t(this,"object"==typeof e&&e),n.data(me,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"DefaultType",get:function(){return Te}},{key:"Default",get:function(){return Ee}}]),t}();o.default.fn.toast=we._jQueryInterface,o.default.fn.toast.Constructor=we,o.default.fn.toast.noConflict=function(){return o.default.fn.toast=pe,we._jQueryInterface},t.Alert=g,t.Button=E,t.Carousel=P,t.Collapse=V,t.Dropdown=lt,t.Modal=Ct,t.Popover=Jt,t.Scrollspy=se,t.Tab=ge,t.Toast=we,t.Tooltip=Wt,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})}));
+//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js
new file mode 100644
index 000000000..166487309
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/d3.min.js
@@ -0,0 +1,5 @@
+!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function i(n){return!isNaN(n)}function u(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)<0?r=u+1:i=u}return r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)>0?i=u:r=u+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function f(n){return(n+="")===bo||n[0]===_o?_o+n:n}function s(n){return(n+="")[0]===_o?n.slice(1):n}function h(n){return f(n)in this._}function p(n){return(n=f(n))in this._&&delete this._[n]}function g(){var n=[];for(var t in this._)n.push(s(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function y(){this._=Object.create(null)}function m(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=wo.length;r>e;++e){var i=wo[e]+t;if(i in n)return i}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,i=-1,u=r.length;++i<u;)(t=r[i].on)&&t.apply(this,arguments);return n}var e=[],r=new c;return t.on=function(t,i){var u,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,u=e.indexOf(o)).concat(e.slice(u+1)),r.remove(t)),i&&e.push(r.set(t,{on:i})),n)},t}function S(){ao.event.preventDefault()}function k(){for(var n,t=ao.event;n=t.sourceEvent;)t=n;return t}function N(n){for(var t=new _,e=0,r=arguments.length;++e<r;)t[arguments[e]]=w(t);return t.of=function(e,r){return function(i){try{var u=i.sourceEvent=ao.event;i.target=n,ao.event=i,t[i.type].apply(e,r)}finally{ao.event=u}}},t}function E(n){return ko(n,Co),n}function A(n){return"function"==typeof n?n:function(){return No(n,this)}}function C(n){return"function"==typeof n?n:function(){return Eo(n,this)}}function z(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function i(){this.setAttribute(n,t)}function u(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ao.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?u:i}function L(n){return n.trim().replace(/\s+/g," ")}function q(n){return new RegExp("(?:^|\\s+)"+ao.requote(n)+"(?:\\s+|$)","g")}function T(n){return(n+"").trim().split(/^|\s+/)}function R(n,t){function e(){for(var e=-1;++e<i;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<i;)n[e](this,r)}n=T(n).map(D);var i=n.length;return"function"==typeof t?r:e}function D(n){var t=q(n);return function(e,r){if(i=e.classList)return r?i.add(n):i.remove(n);var i=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(i)||e.setAttribute("class",L(i+" "+n))):e.setAttribute("class",L(i.replace(t," ")))}}function P(n,t,e){function r(){this.style.removeProperty(n)}function i(){this.style.setProperty(n,t,e)}function u(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?u:i}function U(n,t){function e(){delete this[n]}function r(){this[n]=t}function i(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?i:r}function j(n){function t(){var t=this.ownerDocument,e=this.namespaceURI;return e===zo&&t.documentElement.namespaceURI===zo?t.createElement(n):t.createElementNS(e,n)}function e(){return this.ownerDocument.createElementNS(n.space,n.local)}return"function"==typeof n?n:(n=ao.ns.qualify(n)).local?e:t}function F(){var n=this.parentNode;n&&n.removeChild(this)}function H(n){return{__data__:n}}function O(n){return function(){return Ao(this,n)}}function I(n){return arguments.length||(n=e),function(t,e){return t&&e?n(t.__data__,e.__data__):!t-!e}}function Y(n,t){for(var e=0,r=n.length;r>e;e++)for(var i,u=n[e],o=0,a=u.length;a>o;o++)(i=u[o])&&t(i,o,e);return n}function Z(n){return ko(n,qo),n}function V(n){var t,e;return function(r,i,u){var o,a=n[u].update,l=a.length;for(u!=e&&(e=u,t=0),i>=t&&(t=i+1);!(o=a[t])&&++t<l;);return o}}function X(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function i(){var i=l(t,co(arguments));r.call(this),this.addEventListener(n,this[o]=i,i.$=e),i._=t}function u(){var t,e=new RegExp("^__on([^.]+)"+ao.requote(n)+"$");for(var r in this)if(t=r.match(e)){var i=this[r];this.removeEventListener(t[1],i,i.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),l=$;a>0&&(n=n.slice(0,a));var c=To.get(n);return c&&(n=c,l=B),a?t?i:r:t?b:u}function $(n,t){return function(e){var r=ao.event;ao.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ao.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Do,i="click"+r,u=ao.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ro&&(Ro="onselectstart"in e?!1:x(e.style,"userSelect")),Ro){var o=n(e).style,a=o[Ro];o[Ro]="none"}return function(n){if(u.on(r,null),Ro&&(o[Ro]=a),n){var t=function(){u.on(i,null)};u.on(i,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(0>Po){var u=t(n);if(u.scrollX||u.scrollY){r=ao.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Po=!(o.f||o.e),r.remove()}}return Po?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(n.getScreenCTM().inverse()),[i.x,i.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ao.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?Fo:Math.acos(n)}function tn(n){return n>1?Io:-1>n?-Io:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function on(n){return(n=Math.sin(n/2))*n}function an(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?u+(o-u)*n/60:180>n?o:240>n?u+(o-u)*(240-n)/60:u}function i(n){return Math.round(255*r(n))}var u,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,u=2*e-o,new mn(i(n+120),i(n),i(n-120))}function fn(n,t,e){return this instanceof fn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof fn?new fn(n.h,n.c,n.l):n instanceof hn?gn(n.l,n.a,n.b):gn((n=Sn((n=ao.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new fn(n,t,e)}function sn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Yo)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof fn?sn(n.h,n.c,n.l):Sn((n=mn(n)).r,n.g,n.b):new hn(n,t,e)}function pn(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return i=vn(i)*na,r=vn(r)*ta,u=vn(u)*ea,new mn(yn(3.2404542*i-1.5371385*r-.4985314*u),yn(-.969266*i+1.8760108*r+.041556*u),yn(.0556434*i-.2040259*r+1.0572252*u))}function gn(n,t,e){return n>0?new fn(Math.atan2(e,t)*Zo,Math.sqrt(t*t+e*e),n):new fn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function yn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mn(n,t,e){return this instanceof mn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mn?new mn(n.r,n.g,n.b):_n(""+n,mn,cn):new mn(n,t,e)}function Mn(n){return new mn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,i,u,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Nn(i[0]),Nn(i[1]),Nn(i[2]))}return(u=ua.get(n))?t(u.r,u.g,u.b):(null==n||"#"!==n.charAt(0)||isNaN(u=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&u)>>4,o=o>>4|o,a=240&u,a=a>>4|a,l=15&u,l=l<<4|l):7===n.length&&(o=(16711680&u)>>16,a=(65280&u)>>8,l=255&u)),t(o,a,l))}function wn(n,t,e){var r,i,u=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-u,l=(o+u)/2;return a?(i=.5>l?a/(o+u):a/(2-o-u),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=NaN,i=l>0&&1>l?0:r),new ln(r,i,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/na),i=dn((.2126729*n+.7151522*t+.072175*e)/ta),u=dn((.0193339*n+.119192*t+.9503041*e)/ea);return hn(116*i-16,500*(r-i),200*(i-u))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function i(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(u,l)}catch(r){return void o.error.call(u,r)}o.load.call(u,n)}else o.error.call(u,l)}var u={},o=ao.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(n){var t=ao.event;ao.event=n;try{o.progress.call(u,l)}finally{ao.event=t}},u.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",u)},u.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return arguments.length?(c=n,u):c},u.response=function(n){return e=n,u},["get","post"].forEach(function(n){u[n]=function(){return u.send.apply(u,[n].concat(co(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var f in a)l.setRequestHeader(f,a[f]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),o.beforesend.call(u,l),l.send(null==r?null:r),u},u.abort=function(){return l.abort(),u},ao.rebind(u,o,"on"),null==r?u:u.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var i=e+t,u={c:n,t:i,n:null};return aa?aa.n=u:oa=u,aa=u,la||(ca=clearTimeout(ca),la=1,fa(Tn)),u}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(ca),ca=setTimeout(Tn,t)),la=0):(la=1,fa(Tn))}function Rn(){for(var n=Date.now(),t=oa;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=oa,e=1/0;t;)t.c?(t.t<e&&(e=t.t),t=(n=t).n):t=n?n.n=t.n:oa=t.n;return aa=n,e}function Pn(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Un(n,t){var e=Math.pow(10,3*xo(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function jn(n){var t=n.decimal,e=n.thousands,r=n.grouping,i=n.currency,u=r&&e?function(n,t){for(var i=n.length,u=[],o=0,a=r[0],l=0;i>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),u.push(n.substring(i-=a,i+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return u.reverse().join(e)}:m;return function(n){var e=ha.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],s=e[7],h=e[8],p=e[9],g=1,v="",d="",y=!1,m=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),p){case"n":s=!0,p="g";break;case"%":g=100,d="%",p="f";break;case"p":g=100,d="%",p="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+p.toLowerCase());case"c":m=!1;case"d":y=!0,h=0;break;case"s":g=-1,p="r"}"$"===l&&(v=i[0],d=i[1]),"r"!=p||h||(p="g"),null!=h&&("g"==p?h=Math.max(1,Math.min(21,h)):"e"!=p&&"f"!=p||(h=Math.max(0,Math.min(20,h)))),p=pa.get(p)||Fn;var M=c&&s;return function(n){var e=d;if(y&&n%1)return"";var i=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>g){var l=ao.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=g;n=p(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=m?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&s&&(x=u(x,1/0));var S=v.length+x.length+b.length+(M?0:i.length),k=f>S?new Array(S=f-S+1).join(r):"";return M&&(x=u(k+x,k.length?f-b.length:1/0)),i+=v,n=x+b,("<"===o?i+n+k:">"===o?k+i+n:"^"===o?k.substring(0,S>>=1)+i+n+k.substring(S):i+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=u(e,1);return r-t>t-e?e:r}function i(e){return t(e=n(new va(e-1)),1),e}function u(n,e){return t(n=new va(+n),e),n}function o(n,r,u){var o=i(n),a=[];if(u>1)for(;r>o;)e(o)%u||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{va=Hn;var r=new Hn;return r._=n,o(r,t,e)}finally{va=Date}}n.floor=n,n.round=r,n.ceil=i,n.offset=u,n.range=o;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(i),l.offset=In(u),l.range=a,n}function In(n){return function(t,e){try{va=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{va=Date}}}function Yn(n){function t(n){function t(t){for(var e,i,u,o=[],a=-1,l=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(l,a)),null!=(i=ya[e=n.charAt(++a)])&&(e=n.charAt(++a)),(u=A[e])&&(e=u(t,null==i?"e"===e?" ":"0":i)),o.push(e),l=a+1);return o.push(n.slice(l,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},i=e(r,n,t,0);if(i!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var u=null!=r.Z&&va!==Hn,o=new(u?Hn:va);return"j"in r?o.setFullYear(r.y,0,r.j):"W"in r||"U"in r?("w"in r||(r.w="W"in r?1:0),o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(r.Z/100|0),r.M+r.Z%100,r.S,r.L),u?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var i,u,o,a=0,l=t.length,c=e.length;l>a;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(o=t.charAt(a++),u=C[o in ya?t.charAt(a++):o],!u||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,v=n.days,d=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{va=Hn;var t=new va;return t._=n,r(t)}finally{va=Date}}var r=t(n);return e.parse=function(n){try{va=Hn;var t=r.parse(n);return t&&t._}finally{va=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=ao.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ga.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ga.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ga.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",i=(r?-n:n)+"",u=i.length;return r+(e>u?new Array(e-u+1).join(t)+i:i)}function Vn(n){return new RegExp("^(?:"+n.map(ao.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function $n(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Bn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function Wn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Jn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Gn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.y=Qn(+r[0]),e+r[0].length):-1}function Kn(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Qn(n){return n+(n>68?1900:2e3)}function nt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=xo(t)/60|0,i=xo(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){Ma.lastIndex=0;var r=Ma.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function ft(){}function st(n,t,e){var r=e.s=n+t,i=r-n,u=r-i;e.t=n-u+(t-i)}function ht(n,t){n&&wa.hasOwnProperty(n.type)&&wa[n.type](n,t)}function pt(n,t,e){var r,i=-1,u=n.length-e;for(t.lineStart();++i<u;)r=n[i],t.point(r[0],r[1],r[2]);t.lineEnd()}function gt(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)pt(n[e],t,1);t.polygonEnd()}function vt(){function n(n,t){n*=Yo,t=t*Yo/2+Fo/4;var e=n-r,o=e>=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);ka.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;Na.point=function(o,a){Na.point=n,r=(t=o)*Yo,i=Math.cos(a=(e=a)*Yo/2+Fo/4),u=Math.sin(a)},Na.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return xo(n[0]-t[0])<Uo&&xo(n[1]-t[1])<Uo}function St(n,t){n*=Yo;var e=Math.cos(t*=Yo);kt(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function kt(n,t,e){++Ea,Ca+=(n-Ca)/Ea,za+=(t-za)/Ea,La+=(e-La)/Ea}function Nt(){function n(n,i){n*=Yo;var u=Math.cos(i*=Yo),o=u*Math.cos(n),a=u*Math.sin(n),l=Math.sin(i),c=Math.atan2(Math.sqrt((c=e*l-r*a)*c+(c=r*o-t*l)*c+(c=t*a-e*o)*c),t*o+e*a+r*l);Aa+=c,qa+=c*(t+(t=o)),Ta+=c*(e+(e=a)),Ra+=c*(r+(r=l)),kt(t,e,r)}var t,e,r;ja.point=function(i,u){i*=Yo;var o=Math.cos(u*=Yo);t=o*Math.cos(i),e=o*Math.sin(i),r=Math.sin(u),ja.point=n,kt(t,e,r)}}function Et(){ja.point=St}function At(){function n(n,t){n*=Yo;var e=Math.cos(t*=Yo),o=e*Math.cos(n),a=e*Math.sin(n),l=Math.sin(t),c=i*l-u*a,f=u*o-r*l,s=r*a-i*o,h=Math.sqrt(c*c+f*f+s*s),p=r*o+i*a+u*l,g=h&&-nn(p)/h,v=Math.atan2(h,p);Da+=g*c,Pa+=g*f,Ua+=g*s,Aa+=v,qa+=v*(r+(r=o)),Ta+=v*(i+(i=a)),Ra+=v*(u+(u=l)),kt(r,i,u)}var t,e,r,i,u;ja.point=function(o,a){t=o,e=a,ja.point=n,o*=Yo;var l=Math.cos(a*=Yo);r=l*Math.cos(o),i=l*Math.sin(o),u=Math.sin(a),kt(r,i,u)},ja.lineEnd=function(){n(t,e),ja.lineEnd=Et,ja.point=St}}function Ct(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function zt(){return!0}function Lt(n,t,e,r,i){var u=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(wt(e,r)){i.lineStart();for(var a=0;t>a;++a)i.point((e=n[a])[0],e[1]);return void i.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,u.push(l),o.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,u.push(l),o.push(c)}}),o.sort(t),qt(u),qt(o),u.length){for(var a=0,l=e,c=o.length;c>a;++a)o[a].e=l=!l;for(var f,s,h=u[0];;){for(var p=h,g=!0;p.v;)if((p=p.n)===h)return;f=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(g)for(var a=0,c=f.length;c>a;++a)i.point((s=f[a])[0],s[1]);else r(p.x,p.n.x,1,i);p=p.n}else{if(g){f=p.p.z;for(var a=f.length-1;a>=0;--a)i.point((s=f[a])[0],s[1])}else r(p.x,p.p.x,-1,i);p=p.p}p=p.o,f=p.z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r<t;)i.n=e=n[r],e.p=i,i=e;i.n=e=n[0],e.p=i}}function Tt(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Rt(n,t,e,r){return function(i,u){function o(t,e){var r=i(t,e);n(t=r[0],e=r[1])&&u.point(t,e)}function a(n,t){var e=i(n,t);d.point(e[0],e[1])}function l(){m.point=a,d.lineStart()}function c(){m.point=o,d.lineEnd()}function f(n,t){v.push([n,t]);var e=i(n,t);x.point(e[0],e[1])}function s(){x.lineStart(),v=[]}function h(){f(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),g.push(v),v=null,r)if(1&t){n=e[0];var i,r=n.length-1,o=-1;if(r>0){for(b||(u.polygonStart(),b=!0),u.lineStart();++o<r;)u.point((i=n[o])[0],i[1]);u.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,v,d=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=ao.merge(p);var n=Ot(y,g);p.length?(b||(u.polygonStart(),b=!0),Lt(p,Ut,n,e,u)):n&&(b||(u.polygonStart(),b=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),b&&(u.polygonEnd(),b=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},M=Pt(),x=t(M),b=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ut(n,t){return((n=n.x)[0]<0?n[1]-Io-Uo:Io-n[1])-((t=t.x)[0]<0?t[1]-Io-Uo:Io-t[1])}function jt(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Fo:-Fo,l=xo(u-e);xo(l-Fo)<Uo?(n.point(e,r=(r+o)/2>0?Io:-Io),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Fo&&(xo(e-i)<Uo&&(e-=i*Uo),xo(u-a)<Uo&&(u-=a*Uo),r=Ft(e,r,u,o),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=u,r=o),i=a},lineEnd:function(){n.lineEnd(),e=r=NaN},clean:function(){return 2-t}}}function Ft(n,t,e,r){var i,u,o=Math.sin(n-e);return xo(o)>Uo?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Io,r.point(-Fo,i),r.point(0,i),r.point(Fo,i),r.point(Fo,0),r.point(Fo,-i),r.point(0,-i),r.point(-Fo,-i),r.point(-Fo,0),r.point(-Fo,i);else if(xo(n[0]-t[0])>Uo){var u=n[0]<t[0]?Fo:-Fo;i=e*u/2,r.point(-u,i),r.point(0,i),r.point(u,i)}else r.point(t[0],t[1])}function Ot(n,t){var e=n[0],r=n[1],i=[Math.sin(e),-Math.cos(e),0],u=0,o=0;ka.reset();for(var a=0,l=t.length;l>a;++a){var c=t[a],f=c.length;if(f)for(var s=c[0],h=s[0],p=s[1]/2+Fo/4,g=Math.sin(p),v=Math.cos(p),d=1;;){d===f&&(d=0),n=c[d];var y=n[0],m=n[1]/2+Fo/4,M=Math.sin(m),x=Math.cos(m),b=y-h,_=b>=0?1:-1,w=_*b,S=w>Fo,k=g*M;if(ka.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),u+=S?b+_*Ho:b,S^h>=e^y>=e){var N=mt(dt(s),dt(n));bt(N);var E=mt(i,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=y,g=M,v=x,s=n}}return(-Uo>u||Uo>u&&-Uo>ka)^1&o}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>u}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],v=t(s,h),d=o?v?0:i(s,h):v?i(s+(0>s?Fo:-Fo),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Uo,g[1]+=Uo,v=t(g[0],g[1]))),v!==l)f=0,v?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^v){var y;d&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!v||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=v,u=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),i=dt(t),o=[1,0,0],a=mt(r,i),l=yt(a,a),c=a[0],f=l-c*c;if(!f)return!e&&n;var s=u*l/f,h=-u*c/f,p=mt(o,a),g=xt(o,s),v=xt(a,h);Mt(g,v);var d=p,y=yt(g,d),m=yt(d,d),M=y*y-m*(yt(g,g)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-y-x)/m);if(Mt(b,g),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=xo(E-Fo)<Uo,C=A||Uo>E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(xo(b[0]-w)<Uo?k:N):k<=b[1]&&b[1]<=N:E>Fo^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-y+x)/m);return Mt(z,g),[b,_t(z)]}}}function i(t,e){var r=o?n:Fo-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=xo(u)>Uo,l=ve(n,6*Yo);return Rt(t,e,l,o?[0,-n]:[-Fo,n-Fo])}function Yt(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=a.x,s=a.y,h=0,p=1,g=f-l,v=s-c;if(u=n-l,g||!(u>0)){if(u/=g,0>g){if(h>u)return;p>u&&(p=u)}else if(g>0){if(u>p)return;u>h&&(h=u)}if(u=e-l,g||!(0>u)){if(u/=g,0>g){if(u>p)return;u>h&&(h=u)}else if(g>0){if(h>u)return;p>u&&(p=u)}if(u=t-c,v||!(u>0)){if(u/=v,0>v){if(h>u)return;p>u&&(p=u)}else if(v>0){if(u>p)return;u>h&&(h=u)}if(u=r-c,v||!(0>u)){if(u/=v,0>v){if(u>p)return;u>h&&(h=u)}else if(v>0){if(h>u)return;p>u&&(p=u)}return h>0&&(i.a={x:l+h*g,y:c+h*v}),1>p&&(i.b={x:l+p*g,y:c+p*v}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return xo(r[0]-n)<Uo?i>0?0:3:xo(r[0]-e)<Uo?i>0?2:1:xo(r[1]-t)<Uo?i>0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=d.length,r=n[1],i=0;e>i;++i)for(var u,o=1,a=d[i],l=a.length,c=a[0];l>o;++o)u=a[o],c[1]<=r?u[1]>r&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0){do c.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+l+4)%4)!==s)}else c.point(a[0],a[1])}function f(i,u){return i>=n&&e>=i&&u>=t&&r>=u}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,d&&d.push(y=[]),S=!0,w=!1,b=_=NaN}function p(){v&&(g(m,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){n=Math.max(-Ha,Math.min(Ha,n)),t=Math.max(-Ha,Math.min(Ha,t));var e=f(n,t);if(d&&y.push([n,t]),S)m=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,y,m,M,x,b,_,w,S,k,N=a,E=Pt(),A=Yt(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,v=[],d=[],k=!0},polygonEnd:function(){a=N,v=ao.merge(v);var t=l([n,r]),e=k&&t,i=v.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(v,u,t,c,a),a.polygonEnd()),v=d=y=null}};return C}}function Vt(n){var t=0,e=Fo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Fo/180,e=n[1]*Fo/180):[t/Fo*180,e/Fo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){Ia+=i*n-r*t,r=n,i=t}var t,e,r,i;$a.point=function(u,o){$a.point=n,t=r=u,e=i=o},$a.lineEnd=function(){n(t,e)}}function Bt(n,t){Ya>n&&(Ya=n),n>Va&&(Va=n),Za>t&&(Za=t),t>Xa&&(Xa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ca+=n,za+=t,++La}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);qa+=o*(t+n)/2,Ta+=o*(e+r)/2,Ra+=o,Gt(t=n,e=r)}var t,e;Wa.point=function(r,i){Wa.point=n,Gt(t=r,e=i)}}function Qt(){Wa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);qa+=o*(r+n)/2,Ta+=o*(i+t)/2,Ra+=o,o=i*n-r*t,Da+=o*(r+n),Pa+=o*(i+t),Ua+=3*o,Gt(r=n,i=t)}var t,e,r,i;Wa.point=function(u,o){Wa.point=n,Gt(t=r=u,e=i=o)},Wa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Ho)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=u,t.lineStart()}function u(e,r){var u=dt([e,r]),o=n(e,r);i(M,x,m,b,_,w,M=o[0],x=o[1],m=e,b=u[0],_=u[1],w=u[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function l(){
+r(),S.point=c,S.lineEnd=f}function c(n,t){u(s=n,h=t),p=M,g=x,v=b,d=_,y=w,S.point=u}function f(){i(M,x,m,b,_,w,p,g,s,v,d,y,a,t),S.lineEnd=o,o()}var s,h,p,g,v,d,y,m,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function i(t,e,r,a,l,c,f,s,h,p,g,v,d,y){var m=f-t,M=s-e,x=m*m+M*M;if(x>4*u&&d--){var b=a+p,_=l+g,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=xo(xo(w)-1)<Uo||xo(r-h)<Uo?(r+h)/2:Math.atan2(_,b),E=n(N,k),A=E[0],C=E[1],z=A-t,L=C-e,q=M*z-m*L;(q*q/x>u||xo((m*z+M*L)/x-.5)>.3||o>a*p+l*g+c*v)&&(i(t,e,r,a,l,c,A,C,N,b/=S,_/=S,w,d,y),y.point(A,C),i(A,C,N,b,_,w,f,s,h,p,g,v,d,y))}}var u=.5,o=Math.cos(30*Yo),a=16;return t.precision=function(n){return arguments.length?(a=(u=n*n)>0&&16,t):Math.sqrt(u)},t}function re(n){var t=ee(function(t,e){return n([t*Zo,e*Zo])});return function(n){return le(t(n))}}function ie(n){this.stream=n}function ue(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function oe(n){return ae(function(){return n})()}function ae(n){function t(n){return n=a(n[0]*Yo,n[1]*Yo),[n[0]*h+l,c-n[1]*h]}function e(n){return n=a.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Zo,n[1]*Zo]}function r(){a=Ct(o=se(y,M,x),u);var n=u(v,d);return l=p-n[0]*h,c=g+n[1]*h,i()}function i(){return f&&(f.valid=!1,f=null),t}var u,o,a,l,c,f,s=ee(function(n,t){return n=u(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,p=480,g=250,v=0,d=0,y=0,M=0,x=0,b=Fa,_=m,w=null,S=null;return t.stream=function(n){return f&&(f.valid=!1),f=le(b(o,s(_(n)))),f.valid=!0,f},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Fa):It((w=+n)*Yo),i()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):m,i()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(p=+n[0],g=+n[1],r()):[p,g]},t.center=function(n){return arguments.length?(v=n[0]%360*Yo,d=n[1]%360*Yo,r()):[v*Zo,d*Zo]},t.rotate=function(n){return arguments.length?(y=n[0]%360*Yo,M=n[1]%360*Yo,x=n.length>2?n[2]%360*Yo:0,r()):[y*Zo,M*Zo,x*Zo]},ao.rebind(t,s,"precision"),function(){return u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function le(n){return ue(n,function(t,e){n.point(t*Yo,e*Yo)})}function ce(n,t){return[n,t]}function fe(n,t){return[n>Fo?n-Ho:-Fo>n?n+Ho:n,t]}function se(n,t,e){return n?t||e?Ct(pe(n),ge(t,e)):pe(n):t||e?ge(t,e):fe}function he(n){return function(t,e){return t+=n,[t>Fo?t-Ho:-Fo>t?t+Ho:t,e]}}function pe(n){var t=he(n);return t.invert=he(-n),t}function ge(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*r+a*i;return[Math.atan2(l*u-f*o,a*r-c*i),tn(f*u+l*o)]}var r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*u-l*o;return[Math.atan2(l*u+c*o,a*r+f*i),tn(f*r-a*i)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(i,u,o,a){var l=o*t;null!=i?(i=de(e,i),u=de(e,u),(o>0?u>i:i>u)&&(i+=o*Ho)):(i=n+o*Ho,u=n-.5*l);for(var c,f=i;o>0?f>u:u>f;f-=l)a.point((c=_t([e,-r*Math.cos(f),-r*Math.sin(f)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Uo)%(2*Math.PI)}function ye(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function me(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var i=Math.cos(t),u=Math.sin(t),o=Math.cos(r),a=Math.sin(r),l=i*Math.cos(n),c=i*Math.sin(n),f=o*Math.cos(e),s=o*Math.sin(e),h=2*Math.asin(Math.sqrt(on(r-t)+i*o*on(e-n))),p=1/Math.sin(h),g=h?function(n){var t=Math.sin(n*=h)*p,e=Math.sin(h-n)*p,r=e*l+t*f,i=e*c+t*s,o=e*u+t*a;return[Math.atan2(i,r)*Zo,Math.atan2(o,Math.sqrt(r*r+i*i))*Zo]}:function(){return[n*Zo,t*Zo]};return g.distance=h,g}function _e(){function n(n,i){var u=Math.sin(i*=Yo),o=Math.cos(i),a=xo((n*=Yo)-t),l=Math.cos(a);Ja+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*u-e*o*l)*a),e*u+r*o*l),t=n,e=u,r=o}var t,e,r;Ga.point=function(i,u){t=i*Yo,e=Math.sin(u*=Yo),r=Math.cos(u),Ga.point=n},Ga.lineEnd=function(){Ga.point=Ga.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),i=Math.cos(e),u=n(r*i);return[u*i*Math.sin(t),u*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),i=t(r),u=Math.sin(i),o=Math.cos(i);return[Math.atan2(n*u,r*o),Math.asin(r&&e*u/r)]},e}function Se(n,t){function e(n,t){o>0?-Io+Uo>t&&(t=-Io+Uo):t>Io-Uo&&(t=Io-Uo);var e=o/Math.pow(i(t),u);return[e*Math.sin(u*n),o-e*Math.cos(u*n)]}var r=Math.cos(n),i=function(n){return Math.tan(Fo/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),o=r*Math.pow(i(n),u)/u;return u?(e.invert=function(n,t){var e=o-t,r=K(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(o/r,1/u))-Io]},e):Ne}function ke(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return xo(i)<Uo?ce:(e.invert=function(n,t){var e=u-t;return[Math.atan2(n,e)/i,u-K(i)*Math.sqrt(n*n+e*e)]},e)}function Ne(n,t){return[n,Math.log(Math.tan(Fo/4+t/2))]}function Ee(n){var t,e=oe(n),r=e.scale,i=e.translate,u=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=i.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=u.apply(e,arguments);if(o===e){if(t=null==n){var a=Fo*r(),l=i();u([[l[0]-a,l[1]-a],[l[0]+a,l[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Ae(n,t){return[Math.log(Math.tan(Fo/4+t/2)),-n]}function Ce(n){return n[0]}function ze(n){return n[1]}function Le(n){for(var t=n.length,e=[0,1],r=2,i=2;t>i;i++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var i=n[0],u=e[0],o=t[0]-i,a=r[0]-u,l=n[1],c=e[1],f=t[1]-l,s=r[1]-c,h=(a*(l-c)-s*(i-u))/(s*o-a*f);return[i+h*o,l+h*f]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function Ue(n){var t=cl.pop()||new Pe;return t.site=n,t}function je(n){Be(n),ol.remove(n),cl.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,i={x:e,y:r},u=n.P,o=n.N,a=[n];je(n);for(var l=u;l.circle&&xo(e-l.circle.x)<Uo&&xo(r-l.circle.cy)<Uo;)u=l.P,a.unshift(l),je(l),l=u;a.unshift(l),Be(l);for(var c=o;c.circle&&xo(e-c.circle.x)<Uo&&xo(r-c.circle.cy)<Uo;)o=c.N,a.push(c),je(c),c=o;a.push(c),Be(c);var f,s=a.length;for(f=1;s>f;++f)c=a[f],l=a[f-1],nr(c.edge,l.site,c.site,i);l=a[0],c=a[s-1],c.edge=Ke(l.site,c.site,null,i),$e(l),$e(c)}function He(n){for(var t,e,r,i,u=n.x,o=n.y,a=ol._;a;)if(r=Oe(a,o)-u,r>Uo)a=a.L;else{if(i=u-Ie(a,o),!(i>Uo)){r>-Uo?(t=a.P,e=a):i>-Uo?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=Ue(n);if(ol.insert(t,l),t||e){if(t===e)return Be(t),e=Ue(t.site),ol.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,f=c.x,s=c.y,h=n.x-f,p=n.y-s,g=e.site,v=g.x-f,d=g.y-s,y=2*(h*d-p*v),m=h*h+p*p,M=v*v+d*d,x={x:(d*m-p*M)/y+f,y:(h*M-v*m)/y+s};nr(e.edge,c,g,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,g,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,i=e.y,u=i-t;if(!u)return r;var o=n.P;if(!o)return-(1/0);e=o.site;var a=e.x,l=e.y,c=l-t;if(!c)return a;var f=a-r,s=1/u-1/c,h=f/c;return s?(-h+Math.sqrt(h*h-2*s*(f*f/(-2*c)-l+c/2+i-u/2)))/s+r:(r+a)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,i,u,o,a,l,c,f,s=n[0][0],h=n[1][0],p=n[0][1],g=n[1][1],v=ul,d=v.length;d--;)if(u=v[d],u&&u.prepare())for(a=u.edges,l=a.length,o=0;l>o;)f=a[o].end(),r=f.x,i=f.y,c=a[++o%l].start(),t=c.x,e=c.y,(xo(r-t)>Uo||xo(i-e)>Uo)&&(a.splice(o,0,new tr(Qe(u.site,f,xo(r-s)<Uo&&g-i>Uo?{x:s,y:xo(t-s)<Uo?e:g}:xo(i-g)<Uo&&h-r>Uo?{x:xo(e-g)<Uo?t:h,y:g}:xo(r-h)<Uo&&i-p>Uo?{x:h,y:xo(t-h)<Uo?e:p}:xo(i-p)<Uo&&r-s>Uo?{x:xo(e-p)<Uo?t:s,y:p}:null),u.site,null)),++l)}function Ve(n,t){return t.angle-n.angle}function Xe(){rr(this),this.x=this.y=this.arc=this.site=this.cy=null}function $e(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,i=n.site,u=e.site;if(r!==u){var o=i.x,a=i.y,l=r.x-o,c=r.y-a,f=u.x-o,s=u.y-a,h=2*(l*s-c*f);if(!(h>=-jo)){var p=l*l+c*c,g=f*f+s*s,v=(s*p-c*g)/h,d=(l*g-f*p)/h,s=d+a,y=fl.pop()||new Xe;y.arc=n,y.site=i,y.x=v+o,y.y=s+Math.sqrt(v*v+d*d),y.cy=s,n.circle=y;for(var m=null,M=ll._;M;)if(y.y<M.y||y.y===M.y&&y.x<=M.x){if(!M.L){m=M.P;break}M=M.L}else{if(!M.R){m=M;break}M=M.R}ll.insert(m,y),m||(al=y)}}}}function Be(n){var t=n.circle;t&&(t.P||(al=t.N),ll.remove(t),fl.push(t),rr(t),n.circle=null)}function We(n){for(var t,e=il,r=Yt(n[0][0],n[0][1],n[1][0],n[1][1]),i=e.length;i--;)t=e[i],(!Je(t,n)||!r(t)||xo(t.a.x-t.b.x)<Uo&&xo(t.a.y-t.b.y)<Uo)&&(t.a=t.b=null,e.splice(i,1))}function Je(n,t){var e=n.b;if(e)return!0;var r,i,u=n.a,o=t[0][0],a=t[1][0],l=t[0][1],c=t[1][1],f=n.l,s=n.r,h=f.x,p=f.y,g=s.x,v=s.y,d=(h+g)/2,y=(p+v)/2;if(v===p){if(o>d||d>=a)return;if(h>g){if(u){if(u.y>=c)return}else u={x:d,y:l};e={x:d,y:c}}else{if(u){if(u.y<l)return}else u={x:d,y:c};e={x:d,y:l}}}else if(r=(h-g)/(v-p),i=y-r*d,-1>r||r>1)if(h>g){if(u){if(u.y>=c)return}else u={x:(l-i)/r,y:l};e={x:(c-i)/r,y:c}}else{if(u){if(u.y<l)return}else u={x:(c-i)/r,y:c};e={x:(l-i)/r,y:l}}else if(v>p){if(u){if(u.x>=a)return}else u={x:o,y:r*o+i};e={x:a,y:r*a+i}}else{if(u){if(u.x<o)return}else u={x:a,y:r*a+i};e={x:o,y:r*o+i}}return n.a=u,n.b=e,!0}function Ge(n,t){this.l=n,this.r=t,this.a=this.b=null}function Ke(n,t,e,r){var i=new Ge(n,t);return il.push(i),e&&nr(i,n,t,e),r&&nr(i,t,n,r),ul[n.i].edges.push(new tr(i,n,t)),ul[t.i].edges.push(new tr(i,t,n)),i}function Qe(n,t,e){var r=new Ge(n,null);return r.a=t,r.b=e,il.push(r),r}function nr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function tr(n,t,e){var r=n.a,i=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(i.x-r.x,r.y-i.y):Math.atan2(r.x-i.x,i.y-r.y)}function er(){this._=null}function rr(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function ir(n,t){var e=t,r=t.R,i=e.U;i?i.L===e?i.L=r:i.R=r:n._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function ur(n,t){var e=t,r=t.L,i=e.U;i?i.L===e?i.L=r:i.R=r:n._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function or(n){for(;n.L;)n=n.L;return n}function ar(n,t){var e,r,i,u=n.sort(lr).pop();for(il=[],ul=new Array(n.length),ol=new er,ll=new er;;)if(i=al,u&&(!i||u.y<i.y||u.y===i.y&&u.x<i.x))u.x===e&&u.y===r||(ul[u.i]=new Ye(u),He(u),e=u.x,r=u.y),u=n.pop();else{if(!i)break;Fe(i.arc)}t&&(We(t),Ze(t));var o={cells:ul,edges:il};return ol=ll=il=ul=null,o}function lr(n,t){return t.y-n.y||t.x-n.x}function cr(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function fr(n){return n.x}function sr(n){return n.y}function hr(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function pr(n,t,e,r,i,u){if(!n(t,e,r,i,u)){var o=.5*(e+i),a=.5*(r+u),l=t.nodes;l[0]&&pr(n,l[0],e,r,o,a),l[1]&&pr(n,l[1],o,r,i,a),l[2]&&pr(n,l[2],e,a,o,u),l[3]&&pr(n,l[3],o,a,i,u)}}function gr(n,t,e,r,i,u,o){var a,l=1/0;return function c(n,f,s,h,p){if(!(f>u||s>o||r>h||i>p)){if(g=n.point){var g,v=t-n.x,d=e-n.y,y=v*v+d*d;if(l>y){var m=Math.sqrt(l=y);r=t-m,i=e-m,u=t+m,o=e+m,a=g}}for(var M=n.nodes,x=.5*(f+h),b=.5*(s+p),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,f,s,x,b);break;case 1:c(n,x,s,h,b);break;case 2:c(n,f,b,x,p);break;case 3:c(n,x,b,h,p)}}}(n,r,i,u,o),a}function vr(n,t){n=ao.rgb(n),t=ao.rgb(t);var e=n.r,r=n.g,i=n.b,u=t.r-e,o=t.g-r,a=t.b-i;return function(n){return"#"+bn(Math.round(e+u*n))+bn(Math.round(r+o*n))+bn(Math.round(i+a*n))}}function dr(n,t){var e,r={},i={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):i[e]=n[e];for(e in t)e in n||(i[e]=t[e]);return function(n){for(e in r)i[e]=r[e](n);return i}}function yr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mr(n,t){var e,r,i,u=hl.lastIndex=pl.lastIndex=0,o=-1,a=[],l=[];for(n+="",t+="";(e=hl.exec(n))&&(r=pl.exec(t));)(i=r.index)>u&&(i=t.slice(u,i),a[o]?a[o]+=i:a[++o]=i),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:yr(e,r)})),u=pl.lastIndex;return u<t.length&&(i=t.slice(u),a[o]?a[o]+=i:a[++o]=i),a.length<2?l[0]?(t=l[0].x,function(n){return t(n)+""}):function(){return t}:(t=l.length,function(n){for(var e,r=0;t>r;++r)a[(e=l[r]).i]=e.x(n);return a.join("")})}function Mr(n,t){for(var e,r=ao.interpolators.length;--r>=0&&!(e=ao.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],i=[],u=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Mr(n[e],t[e]));for(;u>e;++e)i[e]=n[e];for(;o>e;++e)i[e]=t[e];return function(n){for(e=0;a>e;++e)i[e]=r[e](n);return i}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Io)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ho*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ho/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=ao.hcl(n),t=ao.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,o=t.c-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return sn(e+u*n,r+o*n,i+a*n)+""}}function Dr(n,t){n=ao.hsl(n),t=ao.hsl(t);var e=n.h,r=n.s,i=n.l,u=t.h-e,o=t.s-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return cn(e+u*n,r+o*n,i+a*n)+""}}function Pr(n,t){n=ao.lab(n),t=ao.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,o=t.a-r,a=t.b-i;return function(n){return pn(e+u*n,r+o*n,i+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),i=Fr(t,e),u=Hr(Or(e,t,-i))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,i*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Zo,this.translate=[n.e,n.f],this.scale=[r,u],this.skew=u?Math.atan2(i,u)*Zo:0}function Fr(n,t){return n[0]*t[0]+n[1]*t[1]}function Hr(n){var t=Math.sqrt(Fr(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Or(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ir(n){return n.length?n.pop()+",":""}function Yr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push("translate(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else(t[0]||t[1])&&e.push("translate("+t+")")}function Zr(n,t,e,r){n!==t?(n-t>180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:yr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:yr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else 1===t[0]&&1===t[1]||e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=ao.transform(n),t=ao.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,i=-1,u=r.length;++i<u;)e[(t=r[i]).i]=t.x(n);return e.join("")}}function Br(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Wr(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Jr(n){for(var t=n.source,e=n.target,r=Kr(t,e),i=[t];t!==r;)t=t.parent,i.push(t);for(var u=i.length;e!==r;)i.splice(u,0,e),e=e.parent;return i}function Gr(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Kr(n,t){if(n===t)return n;for(var e=Gr(n),r=Gr(t),i=e.pop(),u=r.pop(),o=null;i===u;)o=i,i=e.pop(),u=r.pop();return o}function Qr(n){n.fixed|=2}function ni(n){n.fixed&=-7}function ti(n){n.fixed|=4,n.px=n.x,n.py=n.y}function ei(n){n.fixed&=-5}function ri(n,t,e){var r=0,i=0;if(n.charge=0,!n.leaf)for(var u,o=n.nodes,a=o.length,l=-1;++l<a;)u=o[l],null!=u&&(ri(u,t,e),n.charge+=u.charge,r+=u.charge*u.cx,i+=u.charge*u.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var c=t*e[n.point.index];n.charge+=n.pointCharge=c,r+=c*n.point.x,i+=c*n.point.y}n.cx=r/n.charge,n.cy=i/n.charge}function ii(n,t){return ao.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=fi,n}function ui(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(i=n.children)&&(r=i.length))for(var r,i;--r>=0;)e.push(i[r])}function oi(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(u=n.children)&&(i=u.length))for(var i,u,o=-1;++o<i;)e.push(u[o]);for(;null!=(n=r.pop());)t(n)}function ai(n){return n.children}function li(n){return n.value}function ci(n,t){return t.value-n.value}function fi(n){return ao.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function si(n){return n.x}function hi(n){return n.y}function pi(n,t,e){n.y0=t,n.y=e}function gi(n){return ao.range(n.length)}function vi(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function di(n){for(var t,e=1,r=0,i=n[0][1],u=n.length;u>e;++e)(t=n[e][1])>i&&(r=e,i=t);return r}function yi(n){return n.reduce(mi,0)}function mi(n,t){return n+t[1]}function Mi(n,t){return xi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xi(n,t){for(var e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function bi(n){return[ao.min(n),ao.max(n)]}function _i(n,t){return n.value-t.value}function wi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Si(n,t){n._pack_next=t,t._pack_prev=n}function ki(n,t){var e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function Ni(n){function t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),p=Math.max(n.y+n.r,p)}if((e=n.children)&&(c=e.length)){var e,r,i,u,o,a,l,c,f=1/0,s=-(1/0),h=1/0,p=-(1/0);if(e.forEach(Ei),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(i=e[1],i.x=i.r,i.y=0,t(i),c>2))for(u=e[2],zi(r,i,u),t(u),wi(r,u),r._pack_prev=u,wi(u,i),i=r._pack_next,o=3;c>o;o++){zi(r,i,u=e[o]);var g=0,v=1,d=1;for(a=i._pack_next;a!==i;a=a._pack_next,v++)if(ki(a,u)){g=1;break}if(1==g)for(l=r._pack_prev;l!==a._pack_prev&&!ki(l,u);l=l._pack_prev,d++);g?(d>v||v==d&&i.r<r.r?Si(r,i=a):Si(r=l,i),o--):(wi(r,u),i=u,t(u))}var y=(f+s)/2,m=(h+p)/2,M=0;for(o=0;c>o;o++)u=e[o],u.x-=y,u.y-=m,M=Math.max(M,u.r+Math.sqrt(u.x*u.x+u.y*u.y));n.r=M,e.forEach(Ai)}}function Ei(n){n._pack_next=n._pack_prev=n}function Ai(n){delete n._pack_next,delete n._pack_prev}function Ci(n,t,e,r){var i=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,i)for(var u=-1,o=i.length;++u<o;)Ci(i[u],t,e,r)}function zi(n,t,e){var r=n.r+e.r,i=t.x-n.x,u=t.y-n.y;if(r&&(i||u)){var o=t.r+e.r,a=i*i+u*u;o*=o,r*=r;var l=.5+(r-o)/(2*a),c=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+l*i+c*u,e.y=n.y+l*u-c*i}else e.x=n.x+r,e.y=n.y}function Li(n,t){return n.parent==t.parent?1:2}function qi(n){var t=n.children;return t.length?t[0]:n.t}function Ti(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ri(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Di(n){for(var t,e=0,r=0,i=n.children,u=i.length;--u>=0;)t=i[u],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pi(n,t,e){return n.a.parent===t.parent?n.a:e}function Ui(n){return 1+ao.max(n,function(n){return n.y})}function ji(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fi(n){var t=n.children;return t&&t.length?Fi(t[0]):n}function Hi(n){var t,e=n.children;return e&&(t=e.length)?Hi(e[t-1]):n}function Oi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Ii(n,t){var e=n.x+t[3],r=n.y+t[0],i=n.dx-t[1]-t[3],u=n.dy-t[0]-t[2];return 0>i&&(e+=i/2,i=0),0>u&&(r+=u/2,u=0),{x:e,y:r,dx:i,dy:u}}function Yi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zi(n){return n.rangeExtent?n.rangeExtent():Yi(n.range())}function Vi(n,t,e,r){var i=e(n[0],n[1]),u=r(t[0],t[1]);return function(n){return u(i(n))}}function Xi(n,t){var e,r=0,i=n.length-1,u=n[r],o=n[i];return u>o&&(e=r,r=i,i=e,e=u,u=o,o=e),n[r]=t.floor(u),n[i]=t.ceil(o),n}function $i(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Sl}function Bi(n,t,e,r){var i=[],u=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)i.push(e(n[o-1],n[o])),u.push(r(t[o-1],t[o]));return function(t){var e=ao.bisect(n,t,1,a)-1;return u[e](i[e](t))}}function Wi(n,t,e,r){function i(){var i=Math.min(n.length,t.length)>2?Bi:Vi,l=r?Wr:Br;return o=i(n,t,l,e),a=i(t,n,l,Mr),u}function u(n){return o(n)}var o,a;return u.invert=function(n){return a(n)},u.domain=function(t){return arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return arguments.length?(t=n,i()):t},u.rangeRound=function(n){return u.range(n).interpolate(Ur)},u.clamp=function(n){return arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.length?(e=n,i()):e},u.ticks=function(t){return Qi(n,t)},u.tickFormat=function(t,e){return nu(n,t,e)},u.nice=function(t){return Gi(n,t),i()},u.copy=function(){return Wi(n,t,e,r)},i()}function Ji(n,t){return ao.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gi(n,t){return Xi(n,$i(Ki(n,t)[2])),Xi(n,$i(Ki(n,t)[2])),n}function Ki(n,t){null==t&&(t=10);var e=Yi(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return.15>=u?i*=10:.35>=u?i*=5:.75>=u&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function Qi(n,t){return ao.range.apply(ao,Ki(n,t))}function nu(n,t,e){var r=Ki(n,t);if(e){var i=ha.exec(e);if(i.shift(),"s"===i[8]){var u=ao.formatPrefix(Math.max(xo(r[0]),xo(r[1])));return i[7]||(i[7]="."+tu(u.scale(r[2]))),i[8]="f",e=ao.format(i.join("")),function(n){return e(u.scale(n))+u.symbol}}i[7]||(i[7]="."+eu(i[8],r)),e=i.join("")}else e=",."+tu(r[2])+"f";return ao.format(e)}function tu(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function eu(n,t){var e=tu(t[2]);return n in kl?Math.abs(e-tu(Math.max(xo(t[0]),xo(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ru(n,t,e,r){function i(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function u(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(i(t))}return o.invert=function(t){return u(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(i)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(i)),o):t},o.nice=function(){var t=Xi(r.map(i),e?Math:El);return n.domain(t),r=t.map(u),o},o.ticks=function(){var n=Yi(r),o=[],a=n[0],l=n[1],c=Math.floor(i(a)),f=Math.ceil(i(l)),s=t%1?2:t;if(isFinite(f-c)){if(e){for(;f>c;c++)for(var h=1;s>h;h++)o.push(u(c)*h);o.push(u(c))}else for(o.push(u(c));c++<f;)for(var h=s-1;h>0;h--)o.push(u(c)*h);for(c=0;o[c]<a;c++);for(f=o.length;o[f-1]>l;f--);o=o.slice(c,f)}return o},o.tickFormat=function(n,e){if(!arguments.length)return Nl;arguments.length<2?e=Nl:"function"!=typeof e&&(e=ao.format(e));var r=Math.max(1,t*n/o.ticks().length);return function(n){var o=n/u(Math.round(i(n)));return t-.5>o*t&&(o*=t),r>=o?e(n):""}},o.copy=function(){return ru(n.copy(),t,e,r)},Ji(o,n)}function iu(n,t,e){function r(t){return n(i(t))}var i=uu(t),u=uu(1/t);return r.invert=function(t){return u(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(i)),r):e},r.ticks=function(n){return Qi(e,n)},r.tickFormat=function(n,t){return nu(e,n,t)},r.nice=function(n){return r.domain(Gi(e,n))},r.exponent=function(o){return arguments.length?(i=uu(t=o),u=uu(1/t),n.domain(e.map(i)),r):t},r.copy=function(){return iu(n.copy(),t,e)},Ji(r,n)}function uu(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ou(n,t){function e(e){return u[((i.get(e)||("range"===t.t?i.set(e,n.push(e)):NaN))-1)%u.length]}function r(t,e){return ao.range(n.length).map(function(n){return t+e*n})}var i,u,o;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new c;for(var u,o=-1,a=r.length;++o<a;)i.has(u=r[o])||i.set(u,n.push(u));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(u=n,o=0,t={t:"range",a:arguments},e):u},e.rangePoints=function(i,a){arguments.length<2&&(a=0);var l=i[0],c=i[1],f=n.length<2?(l=(l+c)/2,0):(c-l)/(n.length-1+a);return u=r(l+f*a/2,f),o=0,t={t:"rangePoints",a:arguments},e},e.rangeRoundPoints=function(i,a){arguments.length<2&&(a=0);var l=i[0],c=i[1],f=n.length<2?(l=c=Math.round((l+c)/2),0):(c-l)/(n.length-1+a)|0;return u=r(l+Math.round(f*a/2+(c-l-(n.length-1+a)*f)/2),f),o=0,t={t:"rangeRoundPoints",a:arguments},e},e.rangeBands=function(i,a,l){arguments.length<2&&(a=0),arguments.length<3&&(l=a);var c=i[1]<i[0],f=i[c-0],s=i[1-c],h=(s-f)/(n.length-a+2*l);return u=r(f+h*l,h),c&&u.reverse(),o=h*(1-a),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(i,a,l){arguments.length<2&&(a=0),arguments.length<3&&(l=a);var c=i[1]<i[0],f=i[c-0],s=i[1-c],h=Math.floor((s-f)/(n.length-a+2*l));return u=r(f+Math.round((s-f-(n.length-a)*h)/2),h),c&&u.reverse(),o=Math.round(h*(1-a)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Yi(t.a[0])},e.copy=function(){return ou(n,t)},e.domain(n)}function au(n,t){function u(){var e=0,r=t.length;for(a=[];++e<r;)a[e-1]=ao.quantile(n,e/r);return o}function o(n){return isNaN(n=+n)?void 0:t[ao.bisect(a,n)]}var a;return o.domain=function(t){return arguments.length?(n=t.map(r).filter(i).sort(e),u()):n},o.range=function(n){return arguments.length?(t=n,u()):t},o.quantiles=function(){return a},o.invertExtent=function(e){return e=t.indexOf(e),0>e?[NaN,NaN]:[e>0?a[e-1]:n[0],e<a.length?a[e]:n[n.length-1]]},o.copy=function(){return au(n,t)},u()}function lu(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(u*(t-n))))]}function i(){return u=e.length/(t-n),o=e.length-1,r}var u,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],i()):[n,t]},r.range=function(n){return arguments.length?(e=n,i()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?NaN:t/u+n,[t,t+1/u]},r.copy=function(){return lu(n,t,e)},i()}function cu(n,t){function e(e){return e>=e?t[ao.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return cu(n,t)},e}function fu(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qi(n,t)},t.tickFormat=function(t,e){return nu(n,t,e)},t.copy=function(){return fu(n)},t}function su(){return 0}function hu(n){return n.innerRadius}function pu(n){return n.outerRadius}function gu(n){return n.startAngle}function vu(n){return n.endAngle}function du(n){return n&&n.padAngle}function yu(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function mu(n,t,e,r,i){var u=n[0]-t[0],o=n[1]-t[1],a=(i?r:-r)/Math.sqrt(u*u+o*o),l=a*o,c=-a*u,f=n[0]+l,s=n[1]+c,h=t[0]+l,p=t[1]+c,g=(f+h)/2,v=(s+p)/2,d=h-f,y=p-s,m=d*d+y*y,M=e-r,x=f*p-h*s,b=(0>y?-1:1)*Math.sqrt(Math.max(0,M*M*m-x*x)),_=(x*y-d*b)/m,w=(-x*d-y*b)/m,S=(x*y+d*b)/m,k=(-x*d+y*b)/m,N=_-g,E=w-v,A=S-g,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mu(n){function t(t){function o(){c.push("M",u(n(f),a))}for(var l,c=[],f=[],s=-1,h=t.length,p=En(e),g=En(r);++s<h;)i.call(this,l=t[s],s)?f.push([+p.call(this,l,s),+g.call(this,l,s)]):f.length&&(o(),f=[]);return f.length&&o(),c.length?c.join(""):null}var e=Ce,r=ze,i=zt,u=xu,o=u.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(i=n,t):i},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?u=n:(u=Tl.get(n)||xu).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function xu(n){return n.length>1?n.join("L"):n+"Z"}function bu(n){return n.join("L")+"Z"}function _u(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&i.push("H",r[0]),i.join("")}function wu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("V",(r=n[t])[1],"H",r[0]);return i.join("")}function Su(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r=n[t])[0],"V",r[1]);return i.join("")}function ku(n,t){return n.length<4?xu(n):n[1]+Au(n.slice(1,-1),Cu(n,t))}function Nu(n,t){return n.length<3?bu(n):n[0]+Au((n.push(n[0]),n),Cu([n[n.length-2]].concat(n,[n[1]]),t))}function Eu(n,t){return n.length<3?xu(n):n[0]+Au(n,Cu(n,t))}function Au(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return xu(n);var e=n.length!=t.length,r="",i=n[0],u=n[1],o=t[0],a=o,l=1;if(e&&(r+="Q"+(u[0]-2*o[0]/3)+","+(u[1]-2*o[1]/3)+","+u[0]+","+u[1],i=n[1],l=2),t.length>1){a=t[1],u=n[l],l++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1];for(var c=2;c<t.length;c++,l++)u=n[l],a=t[c],r+="S"+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1]}if(e){var f=n[l];r+="Q"+(u[0]+2*a[0]/3)+","+(u[1]+2*a[1]/3)+","+f[0]+","+f[1]}return r}function Cu(n,t){for(var e,r=[],i=(1-t)/2,u=n[0],o=n[1],a=1,l=n.length;++a<l;)e=u,u=o,o=n[a],r.push([i*(o[0]-e[0]),i*(o[1]-e[1])]);return r}function zu(n){if(n.length<3)return xu(n);var t=1,e=n.length,r=n[0],i=r[0],u=r[1],o=[i,i,i,(r=n[1])[0]],a=[u,u,u,r[1]],l=[i,",",u,"L",Ru(Pl,o),",",Ru(Pl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),Du(l,o,a);return n.pop(),l.push("L",r),l.join("")}function Lu(n){if(n.length<4)return xu(n);for(var t,e=[],r=-1,i=n.length,u=[0],o=[0];++r<3;)t=n[r],u.push(t[0]),o.push(t[1]);for(e.push(Ru(Pl,u)+","+Ru(Pl,o)),--r;++r<i;)t=n[r],u.shift(),u.push(t[0]),o.shift(),o.push(t[1]),Du(e,u,o);return e.join("")}function qu(n){for(var t,e,r=-1,i=n.length,u=i+4,o=[],a=[];++r<4;)e=n[r%i],o.push(e[0]),a.push(e[1]);for(t=[Ru(Pl,o),",",Ru(Pl,a)],--r;++r<u;)e=n[r%i],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),Du(t,o,a);return t.join("")}function Tu(n,t){var e=n.length-1;if(e)for(var r,i,u=n[0][0],o=n[0][1],a=n[e][0]-u,l=n[e][1]-o,c=-1;++c<=e;)r=n[c],i=c/e,r[0]=t*r[0]+(1-t)*(u+i*a),r[1]=t*r[1]+(1-t)*(o+i*l);return zu(n)}function Ru(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function Du(n,t,e){n.push("C",Ru(Rl,t),",",Ru(Rl,e),",",Ru(Dl,t),",",Ru(Dl,e),",",Ru(Pl,t),",",Ru(Pl,e))}function Pu(n,t){return(t[1]-n[1])/(t[0]-n[0])}function Uu(n){for(var t=0,e=n.length-1,r=[],i=n[0],u=n[1],o=r[0]=Pu(i,u);++t<e;)r[t]=(o+(o=Pu(i=u,u=n[t+1])))/2;return r[t]=o,r}function ju(n){for(var t,e,r,i,u=[],o=Uu(n),a=-1,l=n.length-1;++a<l;)t=Pu(n[a],n[a+1]),xo(t)<Uo?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,i=e*e+r*r,i>9&&(i=3*t/Math.sqrt(i),o[a]=i*e,o[a+1]=i*r));for(a=-1;++a<=l;)i=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),u.push([i||0,o[a]*i||0]);return u}function Fu(n){return n.length<3?xu(n):n[0]+Au(n,ju(n))}function Hu(n){for(var t,e,r,i=-1,u=n.length;++i<u;)t=n[i],e=t[0],r=t[1]-Io,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Ou(n){function t(t){function l(){v.push("M",a(n(y),s),f,c(n(d.reverse()),s),"Z")}for(var h,p,g,v=[],d=[],y=[],m=-1,M=t.length,x=En(e),b=En(i),_=e===r?function(){
+return p}:En(r),w=i===u?function(){return g}:En(u);++m<M;)o.call(this,h=t[m],m)?(d.push([p=+x.call(this,h,m),g=+b.call(this,h,m)]),y.push([+_.call(this,h,m),+w.call(this,h,m)])):d.length&&(l(),d=[],y=[]);return d.length&&l(),v.length?v.join(""):null}var e=Ce,r=Ce,i=0,u=ze,o=zt,a=xu,l=a.key,c=a,f="L",s=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(i=u=n,t):u},t.y0=function(n){return arguments.length?(i=n,t):i},t.y1=function(n){return arguments.length?(u=n,t):u},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(l="function"==typeof n?a=n:(a=Tl.get(n)||xu).key,c=a.reverse||a,f=a.closed?"M":"L",t):l},t.tension=function(n){return arguments.length?(s=n,t):s},t}function Iu(n){return n.radius}function Yu(n){return[n.x,n.y]}function Zu(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-Io;return[e*Math.cos(r),e*Math.sin(r)]}}function Vu(){return 64}function Xu(){return"circle"}function $u(n){var t=Math.sqrt(n/Fo);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Bu(n){return function(){var t,e,r;(t=this[n])&&(r=t[e=t.active])&&(r.timer.c=null,r.timer.t=NaN,--t.count?delete t[e]:delete this[n],t.active+=.5,r.event&&r.event.interrupt.call(this,this.__data__,r.index))}}function Wu(n,t,e){return ko(n,Yl),n.namespace=t,n.id=e,n}function Ju(n,t,e,r){var i=n.id,u=n.namespace;return Y(n,"function"==typeof e?function(n,o,a){n[u][i].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[u][i].tween.set(t,e)}))}function Gu(n){return null==n&&(n=""),function(){this.textContent=n}}function Ku(n){return null==n?"__transition__":"__transition_"+n+"__"}function Qu(n,t,e,r,i){function u(n){var t=v.delay;return f.t=t+l,n>=t?o(n-t):void(f.c=o)}function o(e){var i=g.active,u=g[i];u&&(u.timer.c=null,u.timer.t=NaN,--g.count,delete g[i],u.event&&u.event.interrupt.call(n,n.__data__,u.index));for(var o in g)if(r>+o){var c=g[o];c.timer.c=null,c.timer.t=NaN,--g.count,delete g[o]}f.c=a,qn(function(){return f.c&&a(e||1)&&(f.c=null,f.t=NaN),1},0,l),g.active=r,v.event&&v.event.start.call(n,n.__data__,t),p=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&p.push(r)}),h=v.ease,s=v.duration}function a(i){for(var u=i/s,o=h(u),a=p.length;a>0;)p[--a].call(n,o);return u>=1?(v.event&&v.event.end.call(n,n.__data__,t),--g.count?delete g[r]:delete n[e],1):void 0}var l,f,s,h,p,g=n[e]||(n[e]={active:0,count:0}),v=g[r];v||(l=i.time,f=qn(u,0,l),v=g[r]={tween:new c,time:l,timer:f,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++g.count)}function no(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function to(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function eo(n){return n.toISOString()}function ro(n,t,e){function r(t){return n(t)}function i(n,e){var r=n[1]-n[0],i=r/e,u=ao.bisect(Kl,i);return u==Kl.length?[t.year,Ki(n.map(function(n){return n/31536e6}),e)[2]]:u?t[i/Kl[u-1]<Kl[u]/i?u-1:u]:[tc,Ki(n,e)[2]]}return r.invert=function(t){return io(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(io)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,io(+e+1),t).length}var u=r.domain(),o=Yi(u),a=null==n?i(o,10):"number"==typeof n&&i(o,n);return a&&(n=a[0],t=a[1]),r.domain(Xi(u,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yi(r.domain()),u=null==n?i(e,10):"number"==typeof n?i(e,n):!n.range&&[{range:n},t];return u&&(n=u[0],t=u[1]),n.range(e[0],io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ro(n.copy(),t,e)},Ji(r,n)}function io(n){return new Date(n)}function uo(n){return JSON.parse(n.responseText)}function oo(n){var t=fo.createRange();return t.selectNode(fo.body),t.createContextualFragment(n.responseText)}var ao={version:"3.5.17"},lo=[].slice,co=function(n){return lo.call(n)},fo=this.document;if(fo)try{co(fo.documentElement.childNodes)[0].nodeType}catch(so){co=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),fo)try{fo.createElement("DIV").style.setProperty("opacity",0,"")}catch(ho){var po=this.Element.prototype,go=po.setAttribute,vo=po.setAttributeNS,yo=this.CSSStyleDeclaration.prototype,mo=yo.setProperty;po.setAttribute=function(n,t){go.call(this,n,t+"")},po.setAttributeNS=function(n,t,e){vo.call(this,n,t,e+"")},yo.setProperty=function(n,t,e){mo.call(this,n,t+"",e)}}ao.ascending=e,ao.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},ao.min=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i<u;)if(null!=(r=n[i])&&r>=r){e=r;break}for(;++i<u;)null!=(r=n[i])&&e>r&&(e=r)}else{for(;++i<u;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=r;break}for(;++i<u;)null!=(r=t.call(n,n[i],i))&&e>r&&(e=r)}return e},ao.max=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i<u;)if(null!=(r=n[i])&&r>=r){e=r;break}for(;++i<u;)null!=(r=n[i])&&r>e&&(e=r)}else{for(;++i<u;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=r;break}for(;++i<u;)null!=(r=t.call(n,n[i],i))&&r>e&&(e=r)}return e},ao.extent=function(n,t){var e,r,i,u=-1,o=n.length;if(1===arguments.length){for(;++u<o;)if(null!=(r=n[u])&&r>=r){e=i=r;break}for(;++u<o;)null!=(r=n[u])&&(e>r&&(e=r),r>i&&(i=r))}else{for(;++u<o;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=i=r;break}for(;++u<o;)null!=(r=t.call(n,n[u],u))&&(e>r&&(e=r),r>i&&(i=r))}return[e,i]},ao.sum=function(n,t){var e,r=0,u=n.length,o=-1;if(1===arguments.length)for(;++o<u;)i(e=+n[o])&&(r+=e);else for(;++o<u;)i(e=+t.call(n,n[o],o))&&(r+=e);return r},ao.mean=function(n,t){var e,u=0,o=n.length,a=-1,l=o;if(1===arguments.length)for(;++a<o;)i(e=r(n[a]))?u+=e:--l;else for(;++a<o;)i(e=r(t.call(n,n[a],a)))?u+=e:--l;return l?u/l:void 0},ao.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),i=+n[r-1],u=e-r;return u?i+u*(n[r]-i):i},ao.median=function(n,t){var u,o=[],a=n.length,l=-1;if(1===arguments.length)for(;++l<a;)i(u=r(n[l]))&&o.push(u);else for(;++l<a;)i(u=r(t.call(n,n[l],l)))&&o.push(u);return o.length?ao.quantile(o.sort(e),.5):void 0},ao.variance=function(n,t){var e,u,o=n.length,a=0,l=0,c=-1,f=0;if(1===arguments.length)for(;++c<o;)i(e=r(n[c]))&&(u=e-a,a+=u/++f,l+=u*(e-a));else for(;++c<o;)i(e=r(t.call(n,n[c],c)))&&(u=e-a,a+=u/++f,l+=u*(e-a));return f>1?l/(f-1):void 0},ao.deviation=function(){var n=ao.variance.apply(this,arguments);return n?Math.sqrt(n):n};var Mo=u(e);ao.bisectLeft=Mo.left,ao.bisect=ao.bisectRight=Mo.right,ao.bisector=function(n){return u(1===n.length?function(t,r){return e(n(t),r)}:n)},ao.shuffle=function(n,t,e){(u=arguments.length)<3&&(e=n.length,2>u&&(t=0));for(var r,i,u=e-t;u;)i=Math.random()*u--|0,r=n[u+t],n[u+t]=n[i+t],n[i+t]=r;return n},ao.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ao.pairs=function(n){for(var t,e=0,r=n.length-1,i=n[0],u=new Array(0>r?0:r);r>e;)u[e]=[t=i,i=n[++e]];return u},ao.transpose=function(n){if(!(i=n.length))return[];for(var t=-1,e=ao.min(n,o),r=new Array(e);++t<e;)for(var i,u=-1,a=r[t]=new Array(i);++u<i;)a[u]=n[u][t];return r},ao.zip=function(){return ao.transpose(arguments)},ao.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ao.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ao.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ao.merge=function(n){for(var t,e,r,i=n.length,u=-1,o=0;++u<i;)o+=n[u].length;for(e=new Array(o);--i>=0;)for(r=n[i],t=r.length;--t>=0;)e[--o]=r[t];return e};var xo=Math.abs;ao.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,i=[],u=a(xo(e)),o=-1;if(n*=u,t*=u,e*=u,0>e)for(;(r=n+e*++o)>t;)i.push(r/u);else for(;(r=n+e*++o)<t;)i.push(r/u);return i},ao.map=function(n,t){var e=new c;if(n instanceof c)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,i=-1,u=n.length;if(1===arguments.length)for(;++i<u;)e.set(i,n[i]);else for(;++i<u;)e.set(t.call(n,r=n[i],i),r)}else for(var o in n)e.set(o,n[o]);return e};var bo="__proto__",_o="\x00";l(c,{has:h,get:function(n){return this._[f(n)]},set:function(n,t){return this._[f(n)]=t},remove:p,keys:g,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:s(t),value:this._[t]});return n},size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t),this._[t])}}),ao.nest=function(){function n(t,o,a){if(a>=u.length)return r?r.call(i,o):e?o.sort(e):o;for(var l,f,s,h,p=-1,g=o.length,v=u[a++],d=new c;++p<g;)(h=d.get(l=v(f=o[p])))?h.push(f):d.set(l,[f]);return t?(f=t(),s=function(e,r){f.set(e,n(t,r,a))}):(f={},s=function(e,r){f[e]=n(t,r,a)}),d.forEach(s),f}function t(n,e){if(e>=u.length)return n;var r=[],i=o[e++];return n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,i={},u=[],o=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(ao.map,e,0),0)},i.key=function(n){return u.push(n),i},i.sortKeys=function(n){return o[u.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},ao.set=function(n){var t=new y;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(y,{has:h,add:function(n){return this._[f(n+="")]=!0,n},remove:p,values:g,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t))}}),ao.behavior={},ao.rebind=function(n,t){for(var e,r=1,i=arguments.length;++r<i;)n[e=arguments[r]]=M(n,t,t[e]);return n};var wo=["webkit","ms","moz","Moz","o","O"];ao.dispatch=function(){for(var n=new _,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=w(n);return n},_.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ao.event=null,ao.requote=function(n){return n.replace(So,"\\$&")};var So=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ko={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},No=function(n,t){return t.querySelector(n)},Eo=function(n,t){return t.querySelectorAll(n)},Ao=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ao=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(No=function(n,t){return Sizzle(n,t)[0]||null},Eo=Sizzle,Ao=Sizzle.matchesSelector),ao.selection=function(){return ao.select(fo.documentElement)};var Co=ao.selection.prototype=[];Co.select=function(n){var t,e,r,i,u=[];n=A(n);for(var o=-1,a=this.length;++o<a;){u.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var l=-1,c=r.length;++l<c;)(i=r[l])?(t.push(e=n.call(i,i.__data__,l,o)),e&&"__data__"in i&&(e.__data__=i.__data__)):t.push(null)}return E(u)},Co.selectAll=function(n){var t,e,r=[];n=C(n);for(var i=-1,u=this.length;++i<u;)for(var o=this[i],a=-1,l=o.length;++a<l;)(e=o[a])&&(r.push(t=co(n.call(e,e.__data__,a,i))),t.parentNode=e);return E(r)};var zo="http://www.w3.org/1999/xhtml",Lo={svg:"http://www.w3.org/2000/svg",xhtml:zo,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};ao.ns={prefix:Lo,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Lo.hasOwnProperty(e)?{space:Lo[e],local:n}:n}},Co.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ao.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Co.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,i=-1;if(t=e.classList){for(;++i<r;)if(!t.contains(n[i]))return!1}else for(t=e.getAttribute("class");++i<r;)if(!q(n[i]).test(t))return!1;return!0}for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},Co.style=function(n,e,r){var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>i){var u=this.node();return t(u).getComputedStyle(u,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Co.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},Co.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Co.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Co.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Co.insert=function(n,t){return n=j(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Co.remove=function(){return this.each(F)},Co.data=function(n,t){function e(n,e){var r,i,u,o=n.length,s=e.length,h=Math.min(o,s),p=new Array(s),g=new Array(s),v=new Array(o);if(t){var d,y=new c,m=new Array(o);for(r=-1;++r<o;)(i=n[r])&&(y.has(d=t.call(i,i.__data__,r))?v[r]=i:y.set(d,i),m[r]=d);for(r=-1;++r<s;)(i=y.get(d=t.call(e,u=e[r],r)))?i!==!0&&(p[r]=i,i.__data__=u):g[r]=H(u),y.set(d,!0);for(r=-1;++r<o;)r in m&&y.get(m[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)i=n[r],u=e[r],i?(i.__data__=u,p[r]=i):g[r]=H(u);for(;s>r;++r)g[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}g.update=p,g.parentNode=p.parentNode=v.parentNode=n.parentNode,a.push(g),l.push(p),f.push(v)}var r,i,u=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++u<o;)(i=r[u])&&(n[u]=i.__data__);return n}var a=Z([]),l=E([]),f=E([]);if("function"==typeof n)for(;++u<o;)e(r=this[u],n.call(r,r.parentNode.__data__,u));else for(;++u<o;)e(r=this[u],n);return l.enter=function(){return a},l.exit=function(){return f},l},Co.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},Co.filter=function(n){var t,e,r,i=[];"function"!=typeof n&&(n=O(n));for(var u=0,o=this.length;o>u;u++){i.push(t=[]),t.parentNode=(e=this[u]).parentNode;for(var a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return E(i)},Co.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],i=r.length-1,u=r[i];--i>=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return this},Co.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},Co.each=function(n){return Y(this,function(t,e,r){n.call(t,t.__data__,e,r)})},Co.call=function(n){var t=co(arguments);return n.apply(t[0]=this,t),this},Co.empty=function(){return!this.node()},Co.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,i=e.length;i>r;r++){var u=e[r];if(u)return u}return null},Co.size=function(){var n=0;return Y(this,function(){++n}),n};var qo=[];ao.selection.enter=Z,ao.selection.enter.prototype=qo,qo.append=Co.append,qo.empty=Co.empty,qo.node=Co.node,qo.call=Co.call,qo.size=Co.size,qo.select=function(n){for(var t,e,r,i,u,o=[],a=-1,l=this.length;++a<l;){r=(i=this[a]).update,o.push(t=[]),t.parentNode=i.parentNode;for(var c=-1,f=i.length;++c<f;)(u=i[c])?(t.push(r[c]=e=n.call(i.parentNode,u.__data__,c,a)),e.__data__=u.__data__):t.push(null)}return E(o)},qo.insert=function(n,t){return arguments.length<2&&(t=V(this)),Co.insert.call(this,n,t)},ao.select=function(t){var e;return"string"==typeof t?(e=[No(t,fo)],e.parentNode=fo.documentElement):(e=[t],e.parentNode=n(t)),E([e])},ao.selectAll=function(n){var t;return"string"==typeof n?(t=co(Eo(n,fo)),t.parentNode=fo.documentElement):(t=co(n),t.parentNode=null),E([t])},Co.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var To=ao.map({mouseenter:"mouseover",mouseleave:"mouseout"});fo&&To.forEach(function(n){"on"+n in fo&&To.remove(n)});var Ro,Do=0;ao.mouse=function(n){return J(n,k())};var Po=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ao.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,i=0,u=t.length;u>i;++i)if((r=t[i]).identifier===e)return J(n,r)},ao.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",o)}function e(n,t,e,u,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],g|=n|e,M=r,p({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(y.on(u+d,null).on(o+d,null),m(g),p({type:"dragend"}))}var c,f=this,s=ao.event.target.correspondingElement||ao.event.target,h=f.parentNode,p=r.of(f,arguments),g=0,v=n(),d=".drag"+(null==v?"":"-"+v),y=ao.select(e(s)).on(u+d,a).on(o+d,l),m=W(s),M=t(h,v);i?(c=i.apply(f,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],p({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),i=null,u=e(b,ao.mouse,t,"mousemove","mouseup"),o=e(G,ao.touch,m,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},ao.rebind(n,r,"on")},ao.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?co(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Uo=1e-6,jo=Uo*Uo,Fo=Math.PI,Ho=2*Fo,Oo=Ho-Uo,Io=Fo/2,Yo=Fo/180,Zo=180/Fo,Vo=Math.SQRT2,Xo=2,$o=4;ao.interpolateZoom=function(n,t){var e,r,i=n[0],u=n[1],o=n[2],a=t[0],l=t[1],c=t[2],f=a-i,s=l-u,h=f*f+s*s;if(jo>h)r=Math.log(c/o)/Vo,e=function(n){return[i+n*f,u+n*s,o*Math.exp(Vo*n*r)]};else{var p=Math.sqrt(h),g=(c*c-o*o+$o*h)/(2*o*Xo*p),v=(c*c-o*o-$o*h)/(2*c*Xo*p),d=Math.log(Math.sqrt(g*g+1)-g),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-d)/Vo,e=function(n){var t=n*r,e=rn(d),a=o/(Xo*p)*(e*un(Vo*t+d)-en(d));return[i+a*f,u+a*s,o*e/rn(Vo*t+d)]}}return e.duration=1e3*r,e},ao.behavior.zoom=function(){function n(n){n.on(L,s).on(Wo+".zoom",p).on("dblclick.zoom",g).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function i(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},i(Math.pow(2,o)),u(d=e,r),t=ao.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function f(n){--z||(n({type:"zoomend"}),d=null)}function s(){function n(){a=1,u(ao.mouse(i),h),c(o)}function r(){s.on(q,null).on(T,null),p(a),f(o)}var i=this,o=D.of(i,arguments),a=0,s=ao.select(t(i)).on(q,n).on(T,r),h=e(ao.mouse(i)),p=W(i);Il.call(i),l(o)}function h(){function n(){var n=ao.touches(g);return p=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ao.event.target;ao.select(t).on(x,r).on(b,a),_.push(t);for(var e=ao.event.changedTouches,i=0,u=e.length;u>i;++i)d[e[i].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var f=l[0];o(g,f,d[f.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var f=l[0],s=l[1],h=f[0]-s[0],p=f[1]-s[1];y=h*h+p*p}}function r(){var n,t,e,r,o=ao.touches(g);Il.call(g);for(var a=0,l=o.length;l>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var f=(f=e[0]-n[0])*f+(f=e[1]-n[1])*f,s=y&&Math.sqrt(f/y);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],i(s*p)}M=null,u(n,t),c(v)}function a(){if(ao.event.touches.length){for(var t=ao.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var i in d)return void n()}ao.selectAll(_).on(m,null),w.on(L,s).on(R,h),N(),f(v)}var p,g=this,v=D.of(g,arguments),d={},y=0,m=".zoom-"+ao.event.changedTouches[0].identifier,x="touchmove"+m,b="touchend"+m,_=[],w=ao.select(g),N=W(g);t(),l(v),w.on(L,null).on(R,t)}function p(){var n=D.of(this,arguments);m?clearTimeout(m):(Il.call(this),v=e(d=y||ao.mouse(this)),l(n)),m=setTimeout(function(){m=null,f(n)},50),S(),i(Math.pow(2,.002*Bo())*k.k),u(d,v),c(n)}function g(){var n=ao.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ao.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,y,m,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Jo,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return Wo||(Wo="onwheel"in fo?(Bo=function(){return-ao.event.deltaY*(ao.event.deltaMode?120:1)},"wheel"):"onmousewheel"in fo?(Bo=function(){return ao.event.wheelDelta},"mousewheel"):(Bo=function(){return-ao.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Hl?ao.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],i=d?d[0]:e/2,u=d?d[1]:r/2,o=ao.interpolateZoom([(i-k.x)/k.k,(u-k.y)/k.k,e/k.k],[(i-t.x)/t.k,(u-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:i-r[0]*a,y:u-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){f(n)}).each("end.zoom",function(){f(n)}):(this.__chart__=k,l(n),c(n),f(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},i(+t),a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Jo:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(y=t&&[+t[0],+t[1]],n):y},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ao.rebind(n,D,"on")};var Bo,Wo,Jo=[0,1/0];ao.color=an,an.prototype.toString=function(){return this.rgb()+""},ao.hsl=ln;var Go=ln.prototype=new an;Go.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Go.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Go.rgb=function(){return cn(this.h,this.s,this.l)},ao.hcl=fn;var Ko=fn.prototype=new an;Ko.brighter=function(n){return new fn(this.h,this.c,Math.min(100,this.l+Qo*(arguments.length?n:1)))},Ko.darker=function(n){return new fn(this.h,this.c,Math.max(0,this.l-Qo*(arguments.length?n:1)))},Ko.rgb=function(){return sn(this.h,this.c,this.l).rgb()},ao.lab=hn;var Qo=18,na=.95047,ta=1,ea=1.08883,ra=hn.prototype=new an;ra.brighter=function(n){return new hn(Math.min(100,this.l+Qo*(arguments.length?n:1)),this.a,this.b)},ra.darker=function(n){return new hn(Math.max(0,this.l-Qo*(arguments.length?n:1)),this.a,this.b)},ra.rgb=function(){return pn(this.l,this.a,this.b)},ao.rgb=mn;var ia=mn.prototype=new an;ia.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,i=30;return t||e||r?(t&&i>t&&(t=i),e&&i>e&&(e=i),r&&i>r&&(r=i),new mn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mn(i,i,i)},ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mn(n*this.r,n*this.g,n*this.b)},ia.hsl=function(){return wn(this.r,this.g,this.b)},ia.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ua=ao.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ua.forEach(function(n,t){ua.set(n,Mn(t))}),ao.functor=En,ao.xhr=An(m),ao.dsv=function(n,t){function e(n,e,u){arguments.length<3&&(u=e,e=null);var o=Cn(n,t,null==e?r:i(e),u);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:i(n)):e},o}function r(n){return e.parse(n.responseText)}function i(n){return function(t){return e.parse(t.responseText,n)}}function u(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var i=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(i(n),e)}:i})},e.parseRows=function(n,t){function e(){if(f>=c)return o;if(i)return i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var e=t;e++<c;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}f=e+2;var r=n.charCodeAt(e+1);return 13===r?(i=!0,10===n.charCodeAt(e+2)&&++f):10===r&&(i=!0),n.slice(t+1,e).replace(/""/g,'"')}for(;c>f;){var r=n.charCodeAt(f++),a=1;if(10===r)i=!0;else if(13===r)i=!0,10===n.charCodeAt(f)&&(++f,++a);else if(r!==l)continue;return n.slice(t,f-a)}return n.slice(t)}for(var r,i,u={},o={},a=[],c=n.length,f=0,s=0;(r=e())!==o;){for(var h=[];r!==u&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,s++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new y,i=[];return t.forEach(function(n){for(var t in n)r.has(t)||i.push(r.add(t))}),[i.map(o).join(n)].concat(t.map(function(t){return i.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(u).join("\n")},e},ao.csv=ao.dsv(",","text/csv"),ao.tsv=ao.dsv(" ","text/tab-separated-values");var oa,aa,la,ca,fa=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ao.timer=function(){qn.apply(this,arguments)},ao.timer.flush=function(){Rn(),Dn()},ao.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var sa=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Un);ao.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=ao.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),sa[8+e/3]};var ha=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,pa=ao.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ao.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ga=ao.time={},va=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){da.setUTCDate.apply(this._,arguments)},setDay:function(){da.setUTCDay.apply(this._,arguments)},setFullYear:function(){da.setUTCFullYear.apply(this._,arguments)},setHours:function(){da.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){da.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){da.setUTCMinutes.apply(this._,arguments)},setMonth:function(){da.setUTCMonth.apply(this._,arguments)},setSeconds:function(){da.setUTCSeconds.apply(this._,arguments)},setTime:function(){da.setTime.apply(this._,arguments)}};var da=Date.prototype;ga.year=On(function(n){return n=ga.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ga.years=ga.year.range,ga.years.utc=ga.year.utc.range,ga.day=On(function(n){var t=new va(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ga.days=ga.day.range,ga.days.utc=ga.day.utc.range,ga.dayOfYear=function(n){var t=ga.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ga[n]=On(function(n){return(n=ga.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ga[n+"s"]=e.range,ga[n+"s"].utc=e.utc.range,ga[n+"OfYear"]=function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)}}),ga.week=ga.sunday,ga.weeks=ga.sunday.range,ga.weeks.utc=ga.sunday.utc.range,ga.weekOfYear=ga.sundayOfYear;var ya={"-":"",_:" ",0:"0"},ma=/^\s*\d+/,Ma=/^%/;ao.locale=function(n){return{numberFormat:jn(n),timeFormat:Yn(n)}};var xa=ao.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
+shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ao.format=xa.numberFormat,ao.geo={},ft.prototype={s:0,t:0,add:function(n){st(n,this.t,ba),st(ba.s,this.s,this),this.s?this.t+=ba.t:this.s=ba.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ba=new ft;ao.geo.stream=function(n,t){n&&_a.hasOwnProperty(n.type)?_a[n.type](n,t):ht(n,t)};var _a={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,i=e.length;++r<i;)ht(e[r].geometry,t)}},wa={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,i=e.length;++r<i;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){pt(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,i=e.length;++r<i;)pt(e[r],t,0)},Polygon:function(n,t){gt(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,i=e.length;++r<i;)gt(e[r],t)},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,i=e.length;++r<i;)ht(e[r],t)}};ao.geo.area=function(n){return Sa=0,ao.geo.stream(n,Na),Sa};var Sa,ka=new ft,Na={sphere:function(){Sa+=4*Fo},point:b,lineStart:b,lineEnd:b,polygonStart:function(){ka.reset(),Na.lineStart=vt},polygonEnd:function(){var n=2*ka;Sa+=0>n?4*Fo+n:n,Na.lineStart=Na.lineEnd=Na.point=b}};ao.geo.bounds=function(){function n(n,t){M.push(x=[f=n,h=n]),s>t&&(s=t),t>p&&(p=t)}function t(t,e){var r=dt([t*Yo,e*Yo]);if(y){var i=mt(y,r),u=[i[1],-i[0],0],o=mt(u,i);bt(o),o=_t(o);var l=t-g,c=l>0?1:-1,v=o[0]*Zo*c,d=xo(l)>180;if(d^(v>c*g&&c*t>v)){var m=o[1]*Zo;m>p&&(p=m)}else if(v=(v+360)%360-180,d^(v>c*g&&c*t>v)){var m=-o[1]*Zo;s>m&&(s=m)}else s>e&&(s=e),e>p&&(p=e);d?g>t?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t):h>=f?(f>t&&(f=t),t>h&&(h=t)):t>g?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t)}else n(t,e);y=r,g=t}function e(){b.point=t}function r(){x[0]=f,x[1]=h,b.point=n,y=null}function i(n,e){if(y){var r=n-g;m+=xo(r)>180?r+(r>0?360:-360):r}else v=n,d=e;Na.point(n,e),t(n,e)}function u(){Na.lineStart()}function o(){i(v,d),Na.lineEnd(),xo(m)>Uo&&(f=-(h=180)),x[0]=f,x[1]=h,y=null}function a(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var f,s,h,p,g,v,d,y,m,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=i,b.lineStart=u,b.lineEnd=o,m=0,Na.polygonStart()},polygonEnd:function(){Na.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>ka?(f=-(h=180),s=-(p=90)):m>Uo?p=90:-Uo>m&&(s=-90),x[0]=f,x[1]=h}};return function(n){p=h=-(f=s=1/0),M=[],ao.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,i=M[0],u=[i];t>r;++r)e=M[r],c(e[0],i)||c(e[1],i)?(a(i[0],e[1])>a(i[0],i[1])&&(i[1]=e[1]),a(e[0],i[1])>a(i[0],i[1])&&(i[0]=e[0])):u.push(i=e);for(var o,e,g=-(1/0),t=u.length-1,r=0,i=u[t];t>=r;i=e,++r)e=u[r],(o=a(i[1],e[0]))>g&&(g=o,f=e[0],h=i[1])}return M=x=null,f===1/0||s===1/0?[[NaN,NaN],[NaN,NaN]]:[[f,s],[h,p]]}}(),ao.geo.centroid=function(n){Ea=Aa=Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,ja);var t=Da,e=Pa,r=Ua,i=t*t+e*e+r*r;return jo>i&&(t=qa,e=Ta,r=Ra,Uo>Aa&&(t=Ca,e=za,r=La),i=t*t+e*e+r*r,jo>i)?[NaN,NaN]:[Math.atan2(e,t)*Zo,tn(r/Math.sqrt(i))*Zo]};var Ea,Aa,Ca,za,La,qa,Ta,Ra,Da,Pa,Ua,ja={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){ja.lineStart=At},polygonEnd:function(){ja.lineStart=Nt}},Fa=Rt(zt,jt,Ht,[-Fo,-Fo/2]),Ha=1e9;ao.geo.clipExtent=function(){var n,t,e,r,i,u,o={stream:function(n){return i&&(i.valid=!1),i=u(n),i.valid=!0,i},extent:function(a){return arguments.length?(u=Zt(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),i&&(i.valid=!1,i=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ao.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,ao.geo.albers=function(){return ao.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ao.geo.albersUsa=function(){function n(n){var u=n[0],o=n[1];return t=null,e(u,o),t||(r(u,o),t)||i(u,o),t}var t,e,r,i,u=ao.geo.albers(),o=ao.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ao.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=u.scale(),e=u.translate(),r=(n[0]-e[0])/t,i=(n[1]-e[1])/t;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?a:u).invert(n)},n.stream=function(n){var t=u.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(u.precision(t),o.precision(t),a.precision(t),n):u.precision()},n.scale=function(t){return arguments.length?(u.scale(t),o.scale(.35*t),a.scale(t),n.translate(u.translate())):u.scale()},n.translate=function(t){if(!arguments.length)return u.translate();var c=u.scale(),f=+t[0],s=+t[1];return e=u.translate(t).clipExtent([[f-.455*c,s-.238*c],[f+.455*c,s+.238*c]]).stream(l).point,r=o.translate([f-.307*c,s+.201*c]).clipExtent([[f-.425*c+Uo,s+.12*c+Uo],[f-.214*c-Uo,s+.234*c-Uo]]).stream(l).point,i=a.translate([f-.205*c,s+.212*c]).clipExtent([[f-.214*c+Uo,s+.166*c+Uo],[f-.115*c-Uo,s+.234*c-Uo]]).stream(l).point,n},n.scale(1070)};var Oa,Ia,Ya,Za,Va,Xa,$a={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Ia=0,$a.lineStart=$t},polygonEnd:function(){$a.lineStart=$a.lineEnd=$a.point=b,Oa+=xo(Ia/2)}},Ba={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Wa={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Wa.lineStart=ne},polygonEnd:function(){Wa.point=Gt,Wa.lineStart=Kt,Wa.lineEnd=Qt}};ao.geo.path=function(){function n(n){return n&&("function"==typeof a&&u.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=i(u)),ao.geo.stream(n,o)),u.result()}function t(){return o=null,n}var e,r,i,u,o,a=4.5;return n.area=function(n){return Oa=0,ao.geo.stream(n,i($a)),Oa},n.centroid=function(n){return Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,i(Wa)),Ua?[Da/Ua,Pa/Ua]:Ra?[qa/Ra,Ta/Ra]:La?[Ca/La,za/La]:[NaN,NaN]},n.bounds=function(n){return Va=Xa=-(Ya=Za=1/0),ao.geo.stream(n,i(Ba)),[[Ya,Za],[Va,Xa]]},n.projection=function(n){return arguments.length?(i=(e=n)?n.stream||re(n):m,t()):e},n.context=function(n){return arguments.length?(u=null==(r=n)?new Wt:new te(n),"function"!=typeof a&&u.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(u.pointRadius(+t),+t),n):a},n.projection(ao.geo.albersUsa()).context(null)},ao.geo.transform=function(n){return{stream:function(t){var e=new ie(t);for(var r in n)e[r]=n[r];return e}}},ie.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ao.geo.projection=oe,ao.geo.projectionMutator=ae,(ao.geo.equirectangular=function(){return oe(ce)}).raw=ce.invert=ce,ao.geo.rotation=function(n){function t(t){return t=n(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t}return n=se(n[0]%360*Yo,n[1]*Yo,n.length>2?n[2]*Yo:0),t.invert=function(t){return t=n.invert(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t},t},fe.invert=ce,ao.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=se(-n[0]*Yo,-n[1]*Yo,0).invert,i=[];return e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Zo,n[1]*=Zo}}),{type:"Polygon",coordinates:[i]}}var t,e,r=[0,0],i=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Yo,i*Yo),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Yo,(i=+r)*Yo),n):i},n.angle(90)},ao.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Yo,i=n[1]*Yo,u=t[1]*Yo,o=Math.sin(r),a=Math.cos(r),l=Math.sin(i),c=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return Math.atan2(Math.sqrt((e=s*o)*e+(e=c*f-l*s*a)*e),l*f+c*s*a)},ao.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ao.range(Math.ceil(u/d)*d,i,d).map(h).concat(ao.range(Math.ceil(c/y)*y,l,y).map(p)).concat(ao.range(Math.ceil(r/g)*g,e,g).filter(function(n){return xo(n%d)>Uo}).map(f)).concat(ao.range(Math.ceil(a/v)*v,o,v).filter(function(n){return xo(n%y)>Uo}).map(s))}var e,r,i,u,o,a,l,c,f,s,h,p,g=10,v=g,d=90,y=360,m=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(p(l).slice(1),h(i).reverse().slice(1),p(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(u=+t[0][0],i=+t[1][0],c=+t[0][1],l=+t[1][1],u>i&&(t=u,u=i,i=t),c>l&&(t=c,c=l,l=t),n.precision(m)):[[u,c],[i,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(m)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],y=+t[1],n):[d,y]},n.minorStep=function(t){return arguments.length?(g=+t[0],v=+t[1],n):[g,v]},n.precision=function(t){return arguments.length?(m=+t,f=ye(a,o,90),s=me(r,e,m),h=ye(c,l,90),p=me(u,i,m),n):m},n.majorExtent([[-180,-90+Uo],[180,90-Uo]]).minorExtent([[-180,-80-Uo],[180,80+Uo]])},ao.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var t,e,r=Me,i=xe;return n.distance=function(){return ao.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(i=t,e="function"==typeof t?null:t,n):i},n.precision=function(){return arguments.length?n:0},n},ao.geo.interpolate=function(n,t){return be(n[0]*Yo,n[1]*Yo,t[0]*Yo,t[1]*Yo)},ao.geo.length=function(n){return Ja=0,ao.geo.stream(n,Ga),Ja};var Ja,Ga={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Ka=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ao.geo.azimuthalEqualArea=function(){return oe(Ka)}).raw=Ka;var Qa=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},m);(ao.geo.azimuthalEquidistant=function(){return oe(Qa)}).raw=Qa,(ao.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(ao.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var nl=we(function(n){return 1/n},Math.atan);(ao.geo.gnomonic=function(){return oe(nl)}).raw=nl,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Io]},(ao.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var tl=we(function(){return 1},Math.asin);(ao.geo.orthographic=function(){return oe(tl)}).raw=tl;var el=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ao.geo.stereographic=function(){return oe(el)}).raw=el,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Io]},(ao.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,ao.geom={},ao.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,i=En(e),u=En(r),o=n.length,a=[],l=[];for(t=0;o>t;t++)a.push([+i.call(this,n[t],t),+u.call(this,n[t],t),t]);for(a.sort(qe),t=0;o>t;t++)l.push([a[t][0],-a[t][1]]);var c=Le(a),f=Le(l),s=f[0]===c[0],h=f[f.length-1]===c[c.length-1],p=[];for(t=c.length-1;t>=0;--t)p.push(n[a[c[t]][2]]);for(t=+s;t<f.length-h;++t)p.push(n[a[f[t]][2]]);return p}var e=Ce,r=ze;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},ao.geom.polygon=function(n){return ko(n,rl),n};var rl=ao.geom.polygon.prototype=[];rl.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],i=0;++t<e;)n=r,r=this[t],i+=n[1]*r[0]-n[0]*r[1];return.5*i},rl.centroid=function(n){var t,e,r=-1,i=this.length,u=0,o=0,a=this[i-1];for(arguments.length||(n=-1/(6*this.area()));++r<i;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],u+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[u*n,o*n]},rl.clip=function(n){for(var t,e,r,i,u,o,a=De(n),l=-1,c=this.length-De(this),f=this[c-1];++l<c;){for(t=n.slice(),n.length=0,i=this[l],u=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Te(o,f,i)?(Te(u,f,i)||n.push(Re(u,o,f,i)),n.push(o)):Te(u,f,i)&&n.push(Re(u,o,f,i)),u=o;a&&n.push(n[0]),f=i}return n};var il,ul,ol,al,ll,cl=[],fl=[];Ye.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Ve),t.length},tr.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},er.prototype={insert:function(n,t){var e,r,i;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=or(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(i=r.R,i&&i.C?(e.C=i.C=!1,r.C=!0,n=r):(n===e.R&&(ir(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ur(this,r))):(i=r.L,i&&i.C?(e.C=i.C=!1,r.C=!0,n=r):(n===e.L&&(ur(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ir(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,i=n.U,u=n.L,o=n.R;if(e=u?o?or(o):u:o,i?i.L===n?i.L=e:i.R=e:this._=e,u&&o?(r=e.C,e.C=n.C,e.L=u,u.U=e,e!==o?(i=e.U,e.U=n.U,n=e.R,i.L=n,e.R=o,o.U=e):(e.U=i,i=e,n=e.R)):(r=n.C,n=e),n&&(n.U=i),!r){if(n&&n.C)return void(n.C=!1);do{if(n===this._)break;if(n===i.L){if(t=i.R,t.C&&(t.C=!1,i.C=!0,ir(this,i),t=i.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,ur(this,t),t=i.R),t.C=i.C,i.C=t.R.C=!1,ir(this,i),n=this._;break}}else if(t=i.L,t.C&&(t.C=!1,i.C=!0,ur(this,i),t=i.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,ir(this,t),t=i.L),t.C=i.C,i.C=t.L.C=!1,ur(this,i),n=this._;break}t.C=!0,n=i,i=i.U}while(!n.C);n&&(n.C=!1)}}},ao.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],i=a[0][1],u=a[1][0],o=a[1][1];return ar(e(n),a).cells.forEach(function(e,a){var l=e.edges,c=e.site,f=t[a]=l.length?l.map(function(n){var t=n.start();return[t.x,t.y]}):c.x>=r&&c.x<=u&&c.y>=i&&c.y<=o?[[r,o],[u,o],[u,i],[r,i]]:[];f.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(u(n,t)/Uo)*Uo,y:Math.round(o(n,t)/Uo)*Uo,i:t}})}var r=Ce,i=ze,u=r,o=i,a=sl;return n?t(n):(t.links=function(n){return ar(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ar(e(n)).cells.forEach(function(e,r){for(var i,u,o=e.site,a=e.edges.sort(Ve),l=-1,c=a.length,f=a[c-1].edge,s=f.l===o?f.r:f.l;++l<c;)i=f,u=s,f=a[l].edge,s=f.l===o?f.r:f.l,r<u.i&&r<s.i&&cr(o,u,s)<0&&t.push([n[r],n[u.i],n[s.i]])}),t},t.x=function(n){return arguments.length?(u=En(r=n),t):r},t.y=function(n){return arguments.length?(o=En(i=n),t):i},t.clipExtent=function(n){return arguments.length?(a=null==n?sl:n,t):a===sl?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===sl?null:a&&a[1]},t)};var sl=[[-1e6,-1e6],[1e6,1e6]];ao.geom.delaunay=function(n){return ao.geom.voronoi().triangles(n)},ao.geom.quadtree=function(n,t,e,r,i){function u(n){function u(n,t,e,r,i,u,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var l=n.x,f=n.y;if(null!=l)if(xo(l-e)+xo(f-r)<.01)c(n,t,e,r,i,u,o,a);else{var s=n.point;n.x=n.y=n.point=null,c(n,s,l,f,i,u,o,a),c(n,t,e,r,i,u,o,a)}else n.x=e,n.y=r,n.point=t}else c(n,t,e,r,i,u,o,a)}function c(n,t,e,r,i,o,a,l){var c=.5*(i+a),f=.5*(o+l),s=e>=c,h=r>=f,p=h<<1|s;n.leaf=!1,n=n.nodes[p]||(n.nodes[p]=hr()),s?i=c:a=c,h?o=f:l=f,u(n,t,e,r,i,o,a,l)}var f,s,h,p,g,v,d,y,m,M=En(a),x=En(l);if(null!=t)v=t,d=e,y=r,m=i;else if(y=m=-(v=d=1/0),s=[],h=[],g=n.length,o)for(p=0;g>p;++p)f=n[p],f.x<v&&(v=f.x),f.y<d&&(d=f.y),f.x>y&&(y=f.x),f.y>m&&(m=f.y),s.push(f.x),h.push(f.y);else for(p=0;g>p;++p){var b=+M(f=n[p],p),_=+x(f,p);v>b&&(v=b),d>_&&(d=_),b>y&&(y=b),_>m&&(m=_),s.push(b),h.push(_)}var w=y-v,S=m-d;w>S?m=d+w:y=v+S;var k=hr();if(k.add=function(n){u(k,n,+M(n,++p),+x(n,p),v,d,y,m)},k.visit=function(n){pr(n,k,v,d,y,m)},k.find=function(n){return gr(k,n[0],n[1],v,d,y,m)},p=-1,null==t){for(;++p<g;)u(k,n[p],s[p],h[p],v,d,y,m);--p}else n.forEach(k.add);return s=h=n=f=null,k}var o,a=Ce,l=ze;return(o=arguments.length)?(a=fr,l=sr,3===o&&(i=e,r=t,e=t=0),u(n)):(u.x=function(n){return arguments.length?(a=n,u):a},u.y=function(n){return arguments.length?(l=n,u):l},u.extent=function(n){return arguments.length?(null==n?t=e=r=i=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],i=+n[1][1]),u):null==t?null:[[t,e],[r,i]]},u.size=function(n){return arguments.length?(null==n?t=e=r=i=null:(t=e=0,r=+n[0],i=+n[1]),u):null==t?null:[r-t,i-e]},u)},ao.interpolateRgb=vr,ao.interpolateObject=dr,ao.interpolateNumber=yr,ao.interpolateString=mr;var hl=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,pl=new RegExp(hl.source,"g");ao.interpolate=Mr,ao.interpolators=[function(n,t){var e=typeof t;return("string"===e?ua.has(t.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(t)?vr:mr:t instanceof an?vr:Array.isArray(t)?xr:"object"===e&&isNaN(t)?dr:yr)(n,t)}],ao.interpolateArray=xr;var gl=function(){return m},vl=ao.map({linear:gl,poly:Er,quad:function(){return Sr},cubic:function(){return kr},sin:function(){return Ar},exp:function(){return Cr},circle:function(){return zr},elastic:Lr,back:qr,bounce:function(){return Tr}}),dl=ao.map({"in":m,out:_r,"in-out":wr,"out-in":function(n){return wr(_r(n))}});ao.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=vl.get(e)||gl,r=dl.get(r)||m,br(r(e.apply(null,lo.call(arguments,1))))},ao.interpolateHcl=Rr,ao.interpolateHsl=Dr,ao.interpolateLab=Pr,ao.interpolateRound=Ur,ao.transform=function(n){var t=fo.createElementNS(ao.ns.prefix.svg,"g");return(ao.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new jr(e?e.matrix:yl)})(n)},jr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var yl={a:1,b:0,c:0,d:1,e:0,f:0};ao.interpolateTransform=$r,ao.layout={},ao.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Jr(n[e]));return t}},ao.layout.chord=function(){function n(){var n,c,s,h,p,g={},v=[],d=ao.range(u),y=[];for(e=[],r=[],n=0,h=-1;++h<u;){for(c=0,p=-1;++p<u;)c+=i[h][p];v.push(c),y.push(ao.range(u)),n+=c}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&y.forEach(function(n,t){n.sort(function(n,e){return a(i[t][n],i[t][e])})}),n=(Ho-f*u)/n,c=0,h=-1;++h<u;){for(s=c,p=-1;++p<u;){var m=d[h],M=y[m][p],x=i[m][M],b=c,_=c+=x*n;g[m+"-"+M]={index:m,subindex:M,startAngle:b,endAngle:_,value:x}}r[m]={index:m,startAngle:s,endAngle:c,value:v[m]},c+=f}for(h=-1;++h<u;)for(p=h-1;++p<u;){var w=g[h+"-"+p],S=g[p+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}l&&t()}function t(){e.sort(function(n,t){return l((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,i,u,o,a,l,c={},f=0;return c.matrix=function(n){return arguments.length?(u=(i=n)&&i.length,e=r=null,c):i},c.padding=function(n){return arguments.length?(f=n,e=r=null,c):f},c.sortGroups=function(n){return arguments.length?(o=n,e=r=null,c):o},c.sortSubgroups=function(n){return arguments.length?(a=n,e=null,c):a},c.sortChords=function(n){return arguments.length?(l=n,e&&t(),c):l},c.chords=function(){return e||n(),e},c.groups=function(){return r||n(),r},c},ao.layout.force=function(){function n(n){return function(t,e,r,i){if(t.point!==n){var u=t.cx-n.x,o=t.cy-n.y,a=i-e,l=u*u+o*o;if(l>a*a/y){if(v>l){var c=t.charge/l;n.px-=u*c,n.py-=o*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=u*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=ao.event.x,n.py=ao.event.y,l.resume()}var e,r,i,u,o,a,l={},c=ao.dispatch("start","tick","end"),f=[1,1],s=.9,h=ml,p=Ml,g=-30,v=xl,d=.1,y=.64,M=[],x=[];return l.tick=function(){if((i*=.99)<.005)return e=null,c.end({type:"end",alpha:i=0}),!0;var t,r,l,h,p,v,y,m,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,p=l.target,m=p.x-h.x,b=p.y-h.y,(v=m*m+b*b)&&(v=i*o[r]*((v=Math.sqrt(v))-u[r])/v,m*=v,b*=v,p.x-=m*(y=h.weight+p.weight?h.weight/(h.weight+p.weight):.5),p.y-=b*y,h.x+=m*(y=1-y),h.y+=b*y);if((y=i*d)&&(m=f[0]/2,b=f[1]/2,r=-1,y))for(;++r<_;)l=M[r],l.x+=(m-l.x)*y,l.y+=(b-l.y)*y;if(g)for(ri(t=ao.geom.quadtree(M),i,a),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*s,l.y-=(l.py-(l.py=l.y))*s);c.tick({type:"tick",alpha:i})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(f=n,l):f},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.friction=function(n){return arguments.length?(s=+n,l):s},l.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(y=n*n,l):Math.sqrt(y)},l.alpha=function(n){return arguments.length?(n=+n,i?n>0?i=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:i=0})):n>0&&(c.start({type:"start",alpha:i=n}),e=qn(l.tick)),l):i},l.start=function(){function n(n,r){if(!e){for(e=new Array(i),l=0;i>l;++l)e[l]=[];for(l=0;c>l;++l){var u=x[l];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var o,a=e[t],l=-1,f=a.length;++l<f;)if(!isNaN(o=a[l][n]))return o;return Math.random()*r}var t,e,r,i=M.length,c=x.length,s=f[0],v=f[1];for(t=0;i>t;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;i>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",s)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof h)for(t=0;c>t;++t)u[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)u[t]=h;if(o=[],"function"==typeof p)for(t=0;c>t;++t)o[t]=+p.call(this,x[t],t);else for(t=0;c>t;++t)o[t]=p;if(a=[],"function"==typeof g)for(t=0;i>t;++t)a[t]=+g.call(this,M[t],t);else for(t=0;i>t;++t)a[t]=g;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=ao.behavior.drag().origin(m).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",ni)),arguments.length?void this.on("mouseover.force",ti).on("mouseout.force",ei).call(r):r},ao.rebind(l,c,"on")};var ml=20,Ml=1,xl=1/0;ao.layout.hierarchy=function(){function n(i){var u,o=[i],a=[];for(i.depth=0;null!=(u=o.pop());)if(a.push(u),(c=e.call(n,u,u.depth))&&(l=c.length)){for(var l,c,f;--l>=0;)o.push(f=c[l]),f.parent=u,f.depth=u.depth+1;r&&(u.value=0),u.children=c}else r&&(u.value=+r.call(n,u,u.depth)||0),delete u.children;return oi(i,function(n){var e,i;t&&(e=n.children)&&e.sort(t),r&&(i=n.parent)&&(i.value+=n.value)}),a}var t=ci,e=ai,r=li;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(ui(t,function(n){n.children&&(n.value=0)}),oi(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ao.layout.partition=function(){function n(t,e,r,i){var u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(o=u.length)){var o,a,l,c=-1;for(r=t.value?r/t.value:0;++c<o;)n(a=u[c],e,l=a.value*r,i),e+=l}}function t(n){var e=n.children,r=0;if(e&&(i=e.length))for(var i,u=-1;++u<i;)r=Math.max(r,t(e[u]));return 1+r}function e(e,u){var o=r.call(this,e,u);return n(o[0],0,i[0],i[1]/t(o[0])),o}var r=ao.layout.hierarchy(),i=[1,1];return e.size=function(n){return arguments.length?(i=n,e):i},ii(e,r)},ao.layout.pie=function(){function n(o){var a,l=o.length,c=o.map(function(e,r){return+t.call(n,e,r)}),f=+("function"==typeof r?r.apply(this,arguments):r),s=("function"==typeof i?i.apply(this,arguments):i)-f,h=Math.min(Math.abs(s)/l,+("function"==typeof u?u.apply(this,arguments):u)),p=h*(0>s?-1:1),g=ao.sum(c),v=g?(s-l*p)/g:0,d=ao.range(l),y=[];return null!=e&&d.sort(e===bl?function(n,t){return c[t]-c[n]}:function(n,t){return e(o[n],o[t])}),d.forEach(function(n){y[n]={data:o[n],value:a=c[n],startAngle:f,endAngle:f+=a*v+p,padAngle:h}}),y}var t=Number,e=bl,r=0,i=Ho,u=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(i=t,n):i},n.padAngle=function(t){return arguments.length?(u=t,n):u},n};var bl={};ao.layout.stack=function(){function n(a,l){if(!(h=a.length))return a;var c=a.map(function(e,r){return t.call(n,e,r)}),f=c.map(function(t){return t.map(function(t,e){return[u.call(n,t,e),o.call(n,t,e)]})}),s=e.call(n,f,l);c=ao.permute(c,s),f=ao.permute(f,s);var h,p,g,v,d=r.call(n,f,l),y=c[0].length;for(g=0;y>g;++g)for(i.call(n,c[0][g],v=d[g],f[0][g][1]),p=1;h>p;++p)i.call(n,c[p][g],v+=f[p-1][g][1],f[p][g][1]);return a}var t=m,e=gi,r=vi,i=pi,u=si,o=hi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:_l.get(t)||gi,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:wl.get(t)||vi,n):r},n.x=function(t){return arguments.length?(u=t,n):u},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(i=t,n):i},n};var _l=ao.map({"inside-out":function(n){var t,e,r=n.length,i=n.map(di),u=n.map(yi),o=ao.range(r).sort(function(n,t){return i[n]-i[t]}),a=0,l=0,c=[],f=[];for(t=0;r>t;++t)e=o[t],l>a?(a+=u[e],c.push(e)):(l+=u[e],f.push(e));return f.reverse().concat(c)},reverse:function(n){return ao.range(n.length).reverse()},"default":gi}),wl=ao.map({silhouette:function(n){var t,e,r,i=n.length,u=n[0].length,o=[],a=0,l=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;u>e;++e)l[e]=(a-o[e])/2;return l},wiggle:function(n){var t,e,r,i,u,o,a,l,c,f=n.length,s=n[0],h=s.length,p=[];for(p[0]=l=c=0,e=1;h>e;++e){for(t=0,i=0;f>t;++t)i+=n[t][e][1];for(t=0,u=0,a=s[e][0]-s[e-1][0];f>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;u+=o*n[t][e][1]}p[e]=l-=i?u/i*a:0,c>l&&(c=l)}for(e=0;h>e;++e)p[e]-=c;return p},expand:function(n){var t,e,r,i=n.length,u=n[0].length,o=1/i,a=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];if(r)for(t=0;i>t;t++)n[t][e][1]/=r;else for(t=0;i>t;t++)n[t][e][1]=o}for(e=0;u>e;++e)a[e]=0;return a},zero:vi});ao.layout.histogram=function(){function n(n,u){for(var o,a,l=[],c=n.map(e,this),f=r.call(this,c,u),s=i.call(this,f,c,u),u=-1,h=c.length,p=s.length-1,g=t?1:1/h;++u<p;)o=l[u]=[],o.dx=s[u+1]-(o.x=s[u]),o.y=0;if(p>0)for(u=-1;++u<h;)a=c[u],a>=f[0]&&a<=f[1]&&(o=l[ao.bisect(s,a,1,p)-1],o.y+=g,o.push(n[u]));return l}var t=!0,e=Number,r=bi,i=Mi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(i="number"==typeof t?function(n){return xi(n,t)}:En(t),n):i},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ao.layout.pack=function(){function n(n,u){var o=e.call(this,n,u),a=o[0],l=i[0],c=i[1],f=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,oi(a,function(n){n.r=+f(n.value)}),oi(a,Ni),r){var s=r*(t?1:Math.max(2*a.r/l,2*a.r/c))/2;oi(a,function(n){n.r+=s}),oi(a,Ni),oi(a,function(n){n.r-=s})}return Ci(a,l/2,c/2,t?1:1/Math.max(2*a.r/l,2*a.r/c)),o}var t,e=ao.layout.hierarchy().sort(_i),r=0,i=[1,1];return n.size=function(t){return arguments.length?(i=t,n):i},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},ii(n,e)},ao.layout.tree=function(){function n(n,i){var f=o.call(this,n,i),s=f[0],h=t(s);if(oi(h,e),h.parent.m=-h.z,ui(h,r),c)ui(s,u);else{var p=s,g=s,v=s;ui(s,function(n){n.x<p.x&&(p=n),n.x>g.x&&(g=n),n.depth>v.depth&&(v=n)});var d=a(p,g)/2-p.x,y=l[0]/(g.x+a(g,p)/2+d),m=l[1]/(v.depth||1);ui(s,function(n){n.x=(n.x+d)*y,n.y=n.depth*m})}return f}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var i,u=t.children,o=0,a=u.length;a>o;++o)r.push((u[o]=i={_:u[o],parent:t,children:(i=u[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Di(n);var u=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-u):n.z=u}else r&&(n.z=r.z+a(n._,r._));n.parent.A=i(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function i(n,t,e){if(t){for(var r,i=n,u=n,o=t,l=i.parent.children[0],c=i.m,f=u.m,s=o.m,h=l.m;o=Ti(o),i=qi(i),o&&i;)l=qi(l),u=Ti(u),u.a=n,r=o.z+s-i.z-c+a(o._,i._),r>0&&(Ri(Pi(o,n,e),n,r),c+=r,f+=r),s+=o.m,c+=i.m,h+=l.m,f+=u.m;o&&!Ti(u)&&(u.t=o,u.m+=s-f),i&&!qi(l)&&(l.t=i,l.m+=c-h,e=n)}return e}function u(n){n.x*=l[0],n.y=n.depth*l[1]}var o=ao.layout.hierarchy().sort(null).value(null),a=Li,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(c=null==(l=t)?u:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:u,n):c?l:null},ii(n,o)},ao.layout.cluster=function(){function n(n,u){var o,a=t.call(this,n,u),l=a[0],c=0;oi(l,function(n){var t=n.children;t&&t.length?(n.x=ji(t),n.y=Ui(t)):(n.x=o?c+=e(n,o):0,n.y=0,o=n)});var f=Fi(l),s=Hi(l),h=f.x-e(f,s)/2,p=s.x+e(s,f)/2;return oi(l,i?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(p-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),a}var t=ao.layout.hierarchy().sort(null).value(null),e=Li,r=[1,1],i=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(i=null==(r=t),n):i?null:r},n.nodeSize=function(t){return arguments.length?(i=null!=(r=t),n):i?r:null},ii(n,t)},ao.layout.treemap=function(){function n(n,t){for(var e,r,i=-1,u=n.length;++i<u;)r=(e=n[i]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var u=e.children;if(u&&u.length){var o,a,l,c=s(e),f=[],h=u.slice(),g=1/0,v="slice"===p?c.dx:"dice"===p?c.dy:"slice-dice"===p?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),f.area=0;(l=h.length)>0;)f.push(o=h[l-1]),f.area+=o.area,"squarify"!==p||(a=r(f,v))<=g?(h.pop(),g=a):(f.area-=f.pop().area,i(f,v,c,!1),v=Math.min(c.dx,c.dy),f.length=f.area=0,g=1/0);f.length&&(i(f,v,c,!0),f.length=f.area=0),u.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var u,o=s(t),a=r.slice(),l=[];for(n(a,o.dx*o.dy/t.value),l.area=0;u=a.pop();)l.push(u),l.area+=u.area,null!=u.z&&(i(l,u.z?o.dx:o.dy,o,!a.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,i=0,u=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(u>e&&(u=e),e>i&&(i=e));return r*=r,t*=t,r?Math.max(t*i*g/r,r/(t*u*g)):1/0}function i(n,t,e,r){var i,u=-1,o=n.length,a=e.x,c=e.y,f=t?l(n.area/t):0;
+if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++u<o;)i=n[u],i.x=a,i.y=c,i.dy=f,a+=i.dx=Math.min(e.x+e.dx-a,f?l(i.area/f):0);i.z=!0,i.dx+=e.x+e.dx-a,e.y+=f,e.dy-=f}else{for((r||f>e.dx)&&(f=e.dx);++u<o;)i=n[u],i.x=a,i.y=c,i.dx=f,c+=i.dy=Math.min(e.y+e.dy-c,f?l(i.area/f):0);i.z=!1,i.dy+=e.y+e.dy-c,e.x+=f,e.dx-=f}}function u(r){var i=o||a(r),u=i[0];return u.x=u.y=0,u.value?(u.dx=c[0],u.dy=c[1]):u.dx=u.dy=0,o&&a.revalue(u),n([u],u.dx*u.dy/u.value),(o?e:t)(u),h&&(o=i),i}var o,a=ao.layout.hierarchy(),l=Math.round,c=[1,1],f=null,s=Oi,h=!1,p="squarify",g=.5*(1+Math.sqrt(5));return u.size=function(n){return arguments.length?(c=n,u):c},u.padding=function(n){function t(t){var e=n.call(u,t,t.depth);return null==e?Oi(t):Ii(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Ii(t,n)}if(!arguments.length)return f;var r;return s=null==(f=n)?Oi:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,u},u.round=function(n){return arguments.length?(l=n?Math.round:Number,u):l!=Number},u.sticky=function(n){return arguments.length?(h=n,o=null,u):h},u.ratio=function(n){return arguments.length?(g=n,u):g},u.mode=function(n){return arguments.length?(p=n+"",u):p},ii(u,a)},ao.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,i;do e=2*Math.random()-1,r=2*Math.random()-1,i=e*e+r*r;while(!i||i>1);return n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var n=ao.random.normal.apply(ao,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ao.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ao.scale={};var Sl={floor:m,ceil:m};ao.scale.linear=function(){return Wi([0,1],[0,1],Mr,!1)};var kl={s:1,g:1,p:1,r:1,e:1};ao.scale.log=function(){return ru(ao.scale.linear().domain([0,1]),10,!0,[1,10])};var Nl=ao.format(".0e"),El={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ao.scale.pow=function(){return iu(ao.scale.linear(),1,[0,1])},ao.scale.sqrt=function(){return ao.scale.pow().exponent(.5)},ao.scale.ordinal=function(){return ou([],{t:"range",a:[[]]})},ao.scale.category10=function(){return ao.scale.ordinal().range(Al)},ao.scale.category20=function(){return ao.scale.ordinal().range(Cl)},ao.scale.category20b=function(){return ao.scale.ordinal().range(zl)},ao.scale.category20c=function(){return ao.scale.ordinal().range(Ll)};var Al=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Cl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),zl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);ao.scale.quantile=function(){return au([],[])},ao.scale.quantize=function(){return lu(0,1,[0,1])},ao.scale.threshold=function(){return cu([.5],[0,1])},ao.scale.identity=function(){return fu([0,1])},ao.svg={},ao.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),f=o.apply(this,arguments)-Io,s=a.apply(this,arguments)-Io,h=Math.abs(s-f),p=f>s?0:1;if(n>c&&(g=c,c=n,n=g),h>=Oo)return t(c,p)+(n?t(n,1-p):"")+"Z";var g,v,d,y,m,M,x,b,_,w,S,k,N=0,E=0,A=[];if((y=(+l.apply(this,arguments)||0)/2)&&(d=u===ql?Math.sqrt(n*n+c*c):+u.apply(this,arguments),p||(E*=-1),c&&(E=tn(d/c*Math.sin(y))),n&&(N=tn(d/n*Math.sin(y)))),c){m=c*Math.cos(f+E),M=c*Math.sin(f+E),x=c*Math.cos(s-E),b=c*Math.sin(s-E);var C=Math.abs(s-f-2*E)<=Fo?0:1;if(E&&yu(m,M,x,b)===p^C){var z=(f+s)/2;m=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else m=M=0;if(n){_=n*Math.cos(s-N),w=n*Math.sin(s-N),S=n*Math.cos(f+N),k=n*Math.sin(f+N);var L=Math.abs(f-s+2*N)<=Fo?0:1;if(N&&yu(_,w,S,k)===1-p^L){var q=(f+s)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Uo&&(g=Math.min(Math.abs(c-n)/2,+i.apply(this,arguments)))>.001){v=c>n^p?0:1;var T=g,R=g;if(Fo>h){var D=null==S?[_,w]:null==x?[m,M]:Re([m,M],[S,k],[x,b],[_,w]),P=m-D[0],U=M-D[1],j=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*j+U*F)/(Math.sqrt(P*P+U*U)*Math.sqrt(j*j+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(g,(n-O)/(H-1)),T=Math.min(g,(c-O)/(H+1))}if(null!=x){var I=mu(null==S?[_,w]:[S,k],[m,M],c,T,p),Y=mu([x,b],[_,w],c,T,p);g===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-p^yu(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",p," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",m,",",M);if(null!=S){var Z=mu([m,M],[S,k],n,-R,p),V=mu([_,w],null==x?[m,M]:[x,b],n,-R,p);g===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",p^yu(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-p," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",m,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",p," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-p," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hu,r=pu,i=su,u=ql,o=gu,a=vu,l=du;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(i=En(t),n):i},n.padRadius=function(t){return arguments.length?(u=t==ql?ql:En(t),n):u},n.startAngle=function(t){return arguments.length?(o=En(t),n):o},n.endAngle=function(t){return arguments.length?(a=En(t),n):a},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Io;return[Math.cos(t)*n,Math.sin(t)*n]},n};var ql="auto";ao.svg.line=function(){return Mu(m)};var Tl=ao.map({linear:xu,"linear-closed":bu,step:_u,"step-before":wu,"step-after":Su,basis:zu,"basis-open":Lu,"basis-closed":qu,bundle:Tu,cardinal:Eu,"cardinal-open":ku,"cardinal-closed":Nu,monotone:Fu});Tl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Rl=[0,2/3,1/3,0],Dl=[0,1/3,2/3,0],Pl=[0,1/6,2/3,1/6];ao.svg.line.radial=function(){var n=Mu(Hu);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wu.reverse=Su,Su.reverse=wu,ao.svg.area=function(){return Ou(m)},ao.svg.area.radial=function(){var n=Ou(Hu);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ao.svg.chord=function(){function n(n,a){var l=t(this,u,n,a),c=t(this,o,n,a);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?i(l.r,l.p1,l.r,l.p0):i(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+i(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var i=t.call(n,e,r),u=a.call(n,i,r),o=l.call(n,i,r)-Io,f=c.call(n,i,r)-Io;return{r:u,a0:o,a1:f,p0:[u*Math.cos(o),u*Math.sin(o)],p1:[u*Math.cos(f),u*Math.sin(f)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Fo)+",1 "+t}function i(n,t,e,r){return"Q 0,0 "+r}var u=Me,o=xe,a=Iu,l=gu,c=vu;return n.radius=function(t){return arguments.length?(a=En(t),n):a},n.source=function(t){return arguments.length?(u=En(t),n):u},n.target=function(t){return arguments.length?(o=En(t),n):o},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},ao.svg.diagonal=function(){function n(n,i){var u=t.call(this,n,i),o=e.call(this,n,i),a=(u.y+o.y)/2,l=[u,{x:u.x,y:a},{x:o.x,y:a},o];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yu;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ao.svg.diagonal.radial=function(){var n=ao.svg.diagonal(),t=Yu,e=n.projection;return n.projection=function(n){return arguments.length?e(Zu(t=n)):t},n},ao.svg.symbol=function(){function n(n,r){return(Ul.get(t.call(this,n,r))||$u)(e.call(this,n,r))}var t=Xu,e=Vu;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Ul=ao.map({circle:$u,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Fl)),e=t*Fl;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ao.svg.symbolTypes=Ul.keys();var jl=Math.sqrt(3),Fl=Math.tan(30*Yo);Co.transition=function(n){for(var t,e,r=Hl||++Zl,i=Ku(n),u=[],o=Ol||{time:Date.now(),ease:Nr,delay:0,duration:250},a=-1,l=this.length;++a<l;){u.push(t=[]);for(var c=this[a],f=-1,s=c.length;++f<s;)(e=c[f])&&Qu(e,f,i,r,o),t.push(e)}return Wu(u,i,r)},Co.interrupt=function(n){return this.each(null==n?Il:Bu(Ku(n)))};var Hl,Ol,Il=Bu(Ku()),Yl=[],Zl=0;Yl.call=Co.call,Yl.empty=Co.empty,Yl.node=Co.node,Yl.size=Co.size,ao.transition=function(n,t){return n&&n.transition?Hl?n.transition(t):n:ao.selection().transition(n)},ao.transition.prototype=Yl,Yl.select=function(n){var t,e,r,i=this.id,u=this.namespace,o=[];n=A(n);for(var a=-1,l=this.length;++a<l;){o.push(t=[]);for(var c=this[a],f=-1,s=c.length;++f<s;)(r=c[f])&&(e=n.call(r,r.__data__,f,a))?("__data__"in r&&(e.__data__=r.__data__),Qu(e,f,u,i,r[u][i]),t.push(e)):t.push(null)}return Wu(o,u,i)},Yl.selectAll=function(n){var t,e,r,i,u,o=this.id,a=this.namespace,l=[];n=C(n);for(var c=-1,f=this.length;++c<f;)for(var s=this[c],h=-1,p=s.length;++h<p;)if(r=s[h]){u=r[a][o],e=n.call(r,r.__data__,h,c),l.push(t=[]);for(var g=-1,v=e.length;++g<v;)(i=e[g])&&Qu(i,g,a,o,u),t.push(i)}return Wu(l,a,o)},Yl.filter=function(n){var t,e,r,i=[];"function"!=typeof n&&(n=O(n));for(var u=0,o=this.length;o>u;u++){i.push(t=[]);for(var e=this[u],a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return Wu(i,this.namespace,this.id)},Yl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(i){i[r][e].tween.set(n,t)})},Yl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function i(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function u(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?$r:Mr,a=ao.ns.qualify(n);return Ju(this,"attr."+n,t,a.local?u:i)},Yl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(i));return r&&function(n){this.setAttribute(i,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(i.space,i.local));return r&&function(n){this.setAttributeNS(i.space,i.local,r(n))}}var i=ao.ns.qualify(n);return this.tween("attr."+n,i.local?r:e)},Yl.style=function(n,e,r){function i(){this.style.removeProperty(n)}function u(e){return null==e?i:(e+="",function(){var i,u=t(this).getComputedStyle(this,null).getPropertyValue(n);return u!==e&&(i=Mr(u,e),function(t){this.style.setProperty(n,i(t),r)})})}var o=arguments.length;if(3>o){if("string"!=typeof n){2>o&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ju(this,"style."+n,e,u)},Yl.styleTween=function(n,e,r){function i(i,u){var o=e.call(this,i,u,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,i)},Yl.text=function(n){return Ju(this,"text",n,Gu)},Yl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Yl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ao.ease.apply(ao,arguments)),Y(this,function(r){r[e][t].ease=n}))},Yl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,i,u){r[e][t].delay=+n.call(r,r.__data__,i,u)}:(n=+n,function(r){r[e][t].delay=n}))},Yl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,i,u){r[e][t].duration=Math.max(1,n.call(r,r.__data__,i,u))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Yl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var i=Ol,u=Hl;try{Hl=e,Y(this,function(t,i,u){Ol=t[r][e],n.call(t,t.__data__,i,u)})}finally{Ol=i,Hl=u}}else Y(this,function(i){var u=i[r][e];(u.event||(u.event=ao.dispatch("start","end","interrupt"))).on(n,t)});return this},Yl.transition=function(){for(var n,t,e,r,i=this.id,u=++Zl,o=this.namespace,a=[],l=0,c=this.length;c>l;l++){a.push(n=[]);for(var t=this[l],f=0,s=t.length;s>f;f++)(e=t[f])&&(r=e[o][i],Qu(e,f,o,u,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wu(a,o,u)},ao.svg.axis=function(){function n(n){n.each(function(){var n,c=ao.select(this),f=this.__chart__||e,s=this.__chart__=e.copy(),h=null==l?s.ticks?s.ticks.apply(s,a):s.domain():l,p=null==t?s.tickFormat?s.tickFormat.apply(s,a):m:t,g=c.selectAll(".tick").data(h,s),v=g.enter().insert("g",".domain").attr("class","tick").style("opacity",Uo),d=ao.transition(g.exit()).style("opacity",Uo).remove(),y=ao.transition(g.order()).style("opacity",1),M=Math.max(i,0)+o,x=Zi(s),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),ao.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=y.select("line"),C=g.select("text").text(p),z=v.select("text"),L=y.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=no,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*u+"V0H"+x[1]+"V"+q*u)):(n=to,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*u+","+x[0]+"H0V"+x[1]+"H"+q*u)),E.attr(N,q*i),z.attr(k,q*M),A.attr(S,0).attr(N,q*i),L.attr(w,0).attr(k,q*M),s.rangeBand){var T=s,R=T.rangeBand()/2;f=s=function(n){return T(n)+R}}else f.rangeBand?f=s:d.call(n,s,f);v.call(n,f,s),y.call(n,s,s)})}var t,e=ao.scale.linear(),r=Vl,i=6,u=6,o=3,a=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Xl?t+"":Vl,n):r},n.ticks=function(){return arguments.length?(a=co(arguments),n):a},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(i=+t,u=+arguments[e-1],n):i},n.innerTickSize=function(t){return arguments.length?(i=+t,n):i},n.outerTickSize=function(t){return arguments.length?(u=+t,n):u},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Vl="bottom",Xl={top:1,right:1,bottom:1,left:1};ao.svg.brush=function(){function n(t){t.each(function(){var t=ao.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=t.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=t.selectAll(".resize").data(v,m);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return $l[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,s=ao.transition(t),h=ao.transition(o);c&&(l=Zi(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(s)),f&&(l=Zi(f),h.attr("y",l[0]).attr("height",l[1]-l[0]),i(s)),e(s)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function i(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==ao.event.keyCode&&(C||(M=null,L[0]-=s[1],L[1]-=h[1],C=2),S())}function v(){32==ao.event.keyCode&&2==C&&(L[0]+=s[1],L[1]+=h[1],C=0,S())}function d(){var n=ao.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(ao.event.altKey?(M||(M=[(s[0]+s[1])/2,(h[0]+h[1])/2]),L[0]=s[+(n[0]<M[0])],L[1]=h[+(n[1]<M[1])]):M=null),E&&y(n,c,0)&&(r(k),t=!0),A&&y(n,f,1)&&(i(k),t=!0),t&&(e(k),w({type:"brush",mode:C?"move":"resize"}))}function y(n,t,e){var r,i,u=Zi(t),l=u[0],c=u[1],f=L[e],v=e?h:s,d=v[1]-v[0];return C&&(l-=f,c-=d+f),r=(e?g:p)?Math.max(l,Math.min(c,n[e])):n[e],C?i=(r+=f)+d:(M&&(f=Math.max(l,Math.min(c,2*M[e]-r))),r>f?(i=r,r=f):i=f),v[0]!=r||v[1]!=i?(e?a=null:o=null,v[0]=r,v[1]=i,!0):void 0}function m(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ao.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=ao.select(ao.event.target),w=l.of(b,arguments),k=ao.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&f,C=_.classed("extent"),z=W(b),L=ao.mouse(b),q=ao.select(t(b)).on("keydown.brush",u).on("keyup.brush",v);if(ao.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",m):q.on("mousemove.brush",d).on("mouseup.brush",m),k.interrupt().selectAll("*").interrupt(),C)L[0]=s[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[s[1-T]-L[0],h[1-R]-L[1]],L[0]=s[T],L[1]=h[R]}else ao.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ao.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var o,a,l=N(n,"brushstart","brush","brushend"),c=null,f=null,s=[0,0],h=[0,0],p=!0,g=!0,v=Bl[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:s,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Hl?ao.select(this).transition().each("start.brush",function(){o=e.i,a=e.j,s=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(s,t.x),r=xr(h,t.y);return o=a=null,function(i){s=t.x=e(i),h=t.y=r(i),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){o=t.i,a=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=Bl[!c<<1|!f],n):c},n.y=function(t){return arguments.length?(f=t,v=Bl[!c<<1|!f],n):f},n.clamp=function(t){return arguments.length?(c&&f?(p=!!t[0],g=!!t[1]):c?p=!!t:f&&(g=!!t),n):c&&f?[p,g]:c?p:f?g:null},n.extent=function(t){var e,r,i,u,l;return arguments.length?(c&&(e=t[0],r=t[1],f&&(e=e[0],r=r[0]),o=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),e==s[0]&&r==s[1]||(s=[e,r])),f&&(i=t[0],u=t[1],c&&(i=i[1],u=u[1]),a=[i,u],f.invert&&(i=f(i),u=f(u)),i>u&&(l=i,i=u,u=l),i==h[0]&&u==h[1]||(h=[i,u])),n):(c&&(o?(e=o[0],r=o[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),f&&(a?(i=a[0],u=a[1]):(i=h[0],u=h[1],f.invert&&(i=f.invert(i),u=f.invert(u)),i>u&&(l=i,i=u,u=l))),c&&f?[[e,i],[r,u]]:c?[e,r]:f&&[i,u])},n.clear=function(){return n.empty()||(s=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!f&&h[0]==h[1]},ao.rebind(n,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Bl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Wl=ga.format=xa.timeFormat,Jl=Wl.utc,Gl=Jl("%Y-%m-%dT%H:%M:%S.%LZ");Wl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?eo:Gl,eo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},eo.toString=Gl.toString,ga.second=On(function(n){return new va(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ga.seconds=ga.second.range,ga.seconds.utc=ga.second.utc.range,ga.minute=On(function(n){return new va(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ga.minutes=ga.minute.range,ga.minutes.utc=ga.minute.utc.range,ga.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new va(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ga.hours=ga.hour.range,ga.hours.utc=ga.hour.utc.range,ga.month=On(function(n){return n=ga.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ga.months=ga.month.range,ga.months.utc=ga.month.utc.range;var Kl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Ql=[[ga.second,1],[ga.second,5],[ga.second,15],[ga.second,30],[ga.minute,1],[ga.minute,5],[ga.minute,15],[ga.minute,30],[ga.hour,1],[ga.hour,3],[ga.hour,6],[ga.hour,12],[ga.day,1],[ga.day,2],[ga.week,1],[ga.month,1],[ga.month,3],[ga.year,1]],nc=Wl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),tc={range:function(n,t,e){return ao.range(Math.ceil(n/e)*e,+t,e).map(io)},floor:m,ceil:m};Ql.year=ga.year,ga.scale=function(){return ro(ao.scale.linear(),Ql,nc)};var ec=Ql.map(function(n){return[n[0].utc,n[1]]}),rc=Jl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);ec.year=ga.year.utc,ga.scale.utc=function(){return ro(ao.scale.linear(),ec,rc)},ao.text=An(function(n){return n.responseText}),ao.json=function(n,t){return Cn(n,"application/json",uo,t)},ao.html=function(n,t){return Cn(n,"text/html",oo,t)},ao.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=ao,define(ao)):"object"==typeof module&&module.exports?module.exports=ao:this.d3=ao}(); \ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/file.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/file.js
new file mode 100644
index 000000000..29cacd4d1
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/file.js
@@ -0,0 +1,62 @@
+ $(function() {
+ var $window = $(window)
+ , $top_link = $('#toplink')
+ , $body = $('body, html')
+ , offset = $('#code').offset().top
+ , hidePopover = function ($target) {
+ $target.data('popover-hover', false);
+
+ setTimeout(function () {
+ if (!$target.data('popover-hover')) {
+ $target.popover('hide');
+ }
+ }, 300);
+ };
+
+ $top_link.hide().click(function(event) {
+ event.preventDefault();
+ $body.animate({scrollTop:0}, 800);
+ });
+
+ $window.scroll(function() {
+ if($window.scrollTop() > offset) {
+ $top_link.fadeIn();
+ } else {
+ $top_link.fadeOut();
+ }
+ }).scroll();
+
+ $('.popin')
+ .popover({trigger: 'manual'})
+ .on({
+ 'mouseenter.popover': function () {
+ var $target = $(this);
+ var $container = $target.children().first();
+
+ $target.data('popover-hover', true);
+
+ // popover already displayed
+ if ($target.next('.popover').length) {
+ return;
+ }
+
+ // show the popover
+ $container.popover('show');
+
+ // register mouse events on the popover
+ $target.next('.popover:not(.popover-initialized)')
+ .on({
+ 'mouseenter': function () {
+ $target.data('popover-hover', true);
+ },
+ 'mouseleave': function () {
+ hidePopover($container);
+ }
+ })
+ .addClass('popover-initialized');
+ },
+ 'mouseleave.popover': function () {
+ hidePopover($(this).children().first());
+ }
+ });
+ });
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/jquery.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/jquery.min.js
new file mode 100644
index 000000000..c4c6022f2
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/jquery.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/nv.d3.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/nv.d3.min.js
new file mode 100644
index 000000000..801e721d3
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/nv.d3.min.js
@@ -0,0 +1,8 @@
+/* nvd3 version 1.8.1 (https://github.com/novus/nvd3) 2015-06-15 */
+!function(){var a={};a.dev=!1,a.tooltip=a.tooltip||{},a.utils=a.utils||{},a.models=a.models||{},a.charts={},a.logs={},a.dom={},a.dispatch=d3.dispatch("render_start","render_end"),Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d&&a?this:a,b.concat(Array.prototype.slice.call(arguments)))};return d.prototype=this.prototype,e.prototype=new d,e}),a.dev&&(a.dispatch.on("render_start",function(){a.logs.startTime=+new Date}),a.dispatch.on("render_end",function(){a.logs.endTime=+new Date,a.logs.totalTime=a.logs.endTime-a.logs.startTime,a.log("total",a.logs.totalTime)})),a.log=function(){if(a.dev&&window.console&&console.log&&console.log.apply)console.log.apply(console,arguments);else if(a.dev&&window.console&&"function"==typeof console.log&&Function.prototype.bind){var b=Function.prototype.bind.call(console.log,console);b.apply(console,arguments)}return arguments[arguments.length-1]},a.deprecated=function(a,b){console&&console.warn&&console.warn("nvd3 warning: `"+a+"` has been deprecated. ",b||"")},a.render=function(b){b=b||1,a.render.active=!0,a.dispatch.render_start();var c=function(){for(var d,e,f=0;b>f&&(e=a.render.queue[f]);f++)d=e.generate(),typeof e.callback==typeof Function&&e.callback(d);a.render.queue.splice(0,f),a.render.queue.length?setTimeout(c):(a.dispatch.render_end(),a.render.active=!1)};setTimeout(c)},a.render.active=!1,a.render.queue=[],a.addGraph=function(b){typeof arguments[0]==typeof Function&&(b={generate:arguments[0],callback:arguments[1]}),a.render.queue.push(b),a.render.active||a.render()},"undefined"!=typeof module&&"undefined"!=typeof exports&&(module.exports=a),"undefined"!=typeof window&&(window.nv=a),a.dom.write=function(a){return void 0!==window.fastdom?fastdom.write(a):a()},a.dom.read=function(a){return void 0!==window.fastdom?fastdom.read(a):a()},a.interactiveGuideline=function(){"use strict";function b(l){l.each(function(l){function m(){var a=d3.mouse(this),d=a[0],e=a[1],i=!0,j=!1;if(k&&(d=d3.event.offsetX,e=d3.event.offsetY,"svg"!==d3.event.target.tagName&&(i=!1),d3.event.target.className.baseVal.match("nv-legend")&&(j=!0)),i&&(d-=f.left,e-=f.top),0>d||0>e||d>o||e>p||d3.event.relatedTarget&&void 0===d3.event.relatedTarget.ownerSVGElement||j){if(k&&d3.event.relatedTarget&&void 0===d3.event.relatedTarget.ownerSVGElement&&(void 0===d3.event.relatedTarget.className||d3.event.relatedTarget.className.match(c.nvPointerEventsClass)))return;return h.elementMouseout({mouseX:d,mouseY:e}),b.renderGuideLine(null),void c.hidden(!0)}c.hidden(!1);var l=g.invert(d);h.elementMousemove({mouseX:d,mouseY:e,pointXValue:l}),"dblclick"===d3.event.type&&h.elementDblclick({mouseX:d,mouseY:e,pointXValue:l}),"click"===d3.event.type&&h.elementClick({mouseX:d,mouseY:e,pointXValue:l})}var n=d3.select(this),o=d||960,p=e||400,q=n.selectAll("g.nv-wrap.nv-interactiveLineLayer").data([l]),r=q.enter().append("g").attr("class"," nv-wrap nv-interactiveLineLayer");r.append("g").attr("class","nv-interactiveGuideLine"),j&&(j.on("touchmove",m).on("mousemove",m,!0).on("mouseout",m,!0).on("dblclick",m).on("click",m),b.guideLine=null,b.renderGuideLine=function(c){i&&(b.guideLine&&b.guideLine.attr("x1")===c||a.dom.write(function(){var b=q.select(".nv-interactiveGuideLine").selectAll("line").data(null!=c?[a.utils.NaNtoZero(c)]:[],String);b.enter().append("line").attr("class","nv-guideline").attr("x1",function(a){return a}).attr("x2",function(a){return a}).attr("y1",p).attr("y2",0),b.exit().remove()}))})})}var c=a.models.tooltip();c.duration(0).hideDelay(0)._isInteractiveLayer(!0).hidden(!1);var d=null,e=null,f={left:0,top:0},g=d3.scale.linear(),h=d3.dispatch("elementMousemove","elementMouseout","elementClick","elementDblclick"),i=!0,j=null,k="ActiveXObject"in window;return b.dispatch=h,b.tooltip=c,b.margin=function(a){return arguments.length?(f.top="undefined"!=typeof a.top?a.top:f.top,f.left="undefined"!=typeof a.left?a.left:f.left,b):f},b.width=function(a){return arguments.length?(d=a,b):d},b.height=function(a){return arguments.length?(e=a,b):e},b.xScale=function(a){return arguments.length?(g=a,b):g},b.showGuideLine=function(a){return arguments.length?(i=a,b):i},b.svgContainer=function(a){return arguments.length?(j=a,b):j},b},a.interactiveBisect=function(a,b,c){"use strict";if(!(a instanceof Array))return null;var d;d="function"!=typeof c?function(a){return a.x}:c;var e=function(a,b){return d(a)-b},f=d3.bisector(e).left,g=d3.max([0,f(a,b)-1]),h=d(a[g]);if("undefined"==typeof h&&(h=g),h===b)return g;var i=d3.min([g+1,a.length-1]),j=d(a[i]);return"undefined"==typeof j&&(j=i),Math.abs(j-b)>=Math.abs(h-b)?g:i},a.nearestValueIndex=function(a,b,c){"use strict";var d=1/0,e=null;return a.forEach(function(a,f){var g=Math.abs(b-a);null!=a&&d>=g&&c>g&&(d=g,e=f)}),e},function(){"use strict";a.models.tooltip=function(){function b(){if(k){var a=d3.select(k);"svg"!==a.node().tagName&&(a=a.select("svg"));var b=a.node()?a.attr("viewBox"):null;if(b){b=b.split(" ");var c=parseInt(a.style("width"),10)/b[2];p.left=p.left*c,p.top=p.top*c}}}function c(){if(!n){var a;a=k?k:document.body,n=d3.select(a).append("div").attr("class","nvtooltip "+(j?j:"xy-tooltip")).attr("id",v),n.style("top",0).style("left",0),n.style("opacity",0),n.selectAll("div, table, td, tr").classed(w,!0),n.classed(w,!0),o=n.node()}}function d(){if(r&&B(e)){b();var f=p.left,g=null!==i?i:p.top;return a.dom.write(function(){c();var b=A(e);b&&(o.innerHTML=b),k&&u?a.dom.read(function(){var a=k.getElementsByTagName("svg")[0],b={left:0,top:0};if(a){var c=a.getBoundingClientRect(),d=k.getBoundingClientRect(),e=c.top;if(0>e){var i=k.getBoundingClientRect();e=Math.abs(e)>i.height?0:e}b.top=Math.abs(e-d.top),b.left=Math.abs(c.left-d.left)}f+=k.offsetLeft+b.left-2*k.scrollLeft,g+=k.offsetTop+b.top-2*k.scrollTop,h&&h>0&&(g=Math.floor(g/h)*h),C([f,g])}):C([f,g])}),d}}var e=null,f="w",g=25,h=0,i=null,j=null,k=null,l=!0,m=400,n=null,o=null,p={left:null,top:null},q={left:0,top:0},r=!0,s=100,t=!0,u=!1,v="nvtooltip-"+Math.floor(1e5*Math.random()),w="nv-pointer-events-none",x=function(a){return a},y=function(a){return a},z=function(a){return a},A=function(a){if(null===a)return"";var b=d3.select(document.createElement("table"));if(t){var c=b.selectAll("thead").data([a]).enter().append("thead");c.append("tr").append("td").attr("colspan",3).append("strong").classed("x-value",!0).html(y(a.value))}var d=b.selectAll("tbody").data([a]).enter().append("tbody"),e=d.selectAll("tr").data(function(a){return a.series}).enter().append("tr").classed("highlight",function(a){return a.highlight});e.append("td").classed("legend-color-guide",!0).append("div").style("background-color",function(a){return a.color}),e.append("td").classed("key",!0).html(function(a,b){return z(a.key,b)}),e.append("td").classed("value",!0).html(function(a,b){return x(a.value,b)}),e.selectAll("td").each(function(a){if(a.highlight){var b=d3.scale.linear().domain([0,1]).range(["#fff",a.color]),c=.6;d3.select(this).style("border-bottom-color",b(c)).style("border-top-color",b(c))}});var f=b.node().outerHTML;return void 0!==a.footer&&(f+="<div class='footer'>"+a.footer+"</div>"),f},B=function(a){if(a&&a.series){if(a.series instanceof Array)return!!a.series.length;if(a.series instanceof Object)return a.series=[a.series],!0}return!1},C=function(b){o&&a.dom.read(function(){var c,d,e=parseInt(o.offsetHeight,10),h=parseInt(o.offsetWidth,10),i=a.utils.windowSize().width,j=a.utils.windowSize().height,k=window.pageYOffset,p=window.pageXOffset;j=window.innerWidth>=document.body.scrollWidth?j:j-16,i=window.innerHeight>=document.body.scrollHeight?i:i-16;var r,t,u=function(a){var b=d;do isNaN(a.offsetTop)||(b+=a.offsetTop),a=a.offsetParent;while(a);return b},v=function(a){var b=c;do isNaN(a.offsetLeft)||(b+=a.offsetLeft),a=a.offsetParent;while(a);return b};switch(f){case"e":c=b[0]-h-g,d=b[1]-e/2,r=v(o),t=u(o),p>r&&(c=b[0]+g>p?b[0]+g:p-r+c),k>t&&(d=k-t+d),t+e>k+j&&(d=k+j-t+d-e);break;case"w":c=b[0]+g,d=b[1]-e/2,r=v(o),t=u(o),r+h>i&&(c=b[0]-h-g),k>t&&(d=k+5),t+e>k+j&&(d=k+j-t+d-e);break;case"n":c=b[0]-h/2-5,d=b[1]+g,r=v(o),t=u(o),p>r&&(c=p+5),r+h>i&&(c=c-h/2+5),t+e>k+j&&(d=k+j-t+d-e);break;case"s":c=b[0]-h/2,d=b[1]-e-g,r=v(o),t=u(o),p>r&&(c=p+5),r+h>i&&(c=c-h/2+5),k>t&&(d=k);break;case"none":c=b[0],d=b[1]-g,r=v(o),t=u(o)}c-=q.left,d-=q.top;var w=o.getBoundingClientRect(),k=window.pageYOffset||document.documentElement.scrollTop,p=window.pageXOffset||document.documentElement.scrollLeft,x="translate("+(w.left+p)+"px, "+(w.top+k)+"px)",y="translate("+c+"px, "+d+"px)",z=d3.interpolateString(x,y),A=n.style("opacity")<.1;l?n.transition().delay(m).duration(0).style("opacity",0):n.interrupt().transition().duration(A?0:s).styleTween("transform",function(){return z},"important").style("-webkit-transform",y).style("opacity",1)})};return d.nvPointerEventsClass=w,d.options=a.utils.optionsFunc.bind(d),d._options=Object.create({},{duration:{get:function(){return s},set:function(a){s=a}},gravity:{get:function(){return f},set:function(a){f=a}},distance:{get:function(){return g},set:function(a){g=a}},snapDistance:{get:function(){return h},set:function(a){h=a}},classes:{get:function(){return j},set:function(a){j=a}},chartContainer:{get:function(){return k},set:function(a){k=a}},fixedTop:{get:function(){return i},set:function(a){i=a}},enabled:{get:function(){return r},set:function(a){r=a}},hideDelay:{get:function(){return m},set:function(a){m=a}},contentGenerator:{get:function(){return A},set:function(a){A=a}},valueFormatter:{get:function(){return x},set:function(a){x=a}},headerFormatter:{get:function(){return y},set:function(a){y=a}},keyFormatter:{get:function(){return z},set:function(a){z=a}},headerEnabled:{get:function(){return t},set:function(a){t=a}},_isInteractiveLayer:{get:function(){return u},set:function(a){u=!!a}},position:{get:function(){return p},set:function(a){p.left=void 0!==a.left?a.left:p.left,p.top=void 0!==a.top?a.top:p.top}},offset:{get:function(){return q},set:function(a){q.left=void 0!==a.left?a.left:q.left,q.top=void 0!==a.top?a.top:q.top}},hidden:{get:function(){return l},set:function(a){l!=a&&(l=!!a,d())}},data:{get:function(){return e},set:function(a){a.point&&(a.value=a.point.x,a.series=a.series||{},a.series.value=a.point.y,a.series.color=a.point.color||a.series.color),e=a}},tooltipElem:{get:function(){return o},set:function(){}},id:{get:function(){return v},set:function(){}}}),a.utils.initOptions(d),d}}(),a.utils.windowSize=function(){var a={width:640,height:480};return window.innerWidth&&window.innerHeight?(a.width=window.innerWidth,a.height=window.innerHeight,a):"CSS1Compat"==document.compatMode&&document.documentElement&&document.documentElement.offsetWidth?(a.width=document.documentElement.offsetWidth,a.height=document.documentElement.offsetHeight,a):document.body&&document.body.offsetWidth?(a.width=document.body.offsetWidth,a.height=document.body.offsetHeight,a):a},a.utils.windowResize=function(b){return window.addEventListener?window.addEventListener("resize",b):a.log("ERROR: Failed to bind to window.resize with: ",b),{callback:b,clear:function(){window.removeEventListener("resize",b)}}},a.utils.getColor=function(b){if(void 0===b)return a.utils.defaultColor();if(Array.isArray(b)){var c=d3.scale.ordinal().range(b);return function(a,b){var d=void 0===b?a:b;return a.color||c(d)}}return b},a.utils.defaultColor=function(){return a.utils.getColor(d3.scale.category20().range())},a.utils.customTheme=function(a,b,c){b=b||function(a){return a.key},c=c||d3.scale.category20().range();var d=c.length;return function(e){var f=b(e);return"function"==typeof a[f]?a[f]():void 0!==a[f]?a[f]:(d||(d=c.length),d-=1,c[d])}},a.utils.pjax=function(b,c){var d=function(d){d3.html(d,function(d){var e=d3.select(c).node();e.parentNode.replaceChild(d3.select(d).select(c).node(),e),a.utils.pjax(b,c)})};d3.selectAll(b).on("click",function(){history.pushState(this.href,this.textContent,this.href),d(this.href),d3.event.preventDefault()}),d3.select(window).on("popstate",function(){d3.event.state&&d(d3.event.state)})},a.utils.calcApproxTextWidth=function(a){if("function"==typeof a.style&&"function"==typeof a.text){var b=parseInt(a.style("font-size").replace("px",""),10),c=a.text().length;return c*b*.5}return 0},a.utils.NaNtoZero=function(a){return"number"!=typeof a||isNaN(a)||null===a||1/0===a||a===-1/0?0:a},d3.selection.prototype.watchTransition=function(a){var b=[this].concat([].slice.call(arguments,1));return a.transition.apply(a,b)},a.utils.renderWatch=function(b,c){if(!(this instanceof a.utils.renderWatch))return new a.utils.renderWatch(b,c);var d=void 0!==c?c:250,e=[],f=this;this.models=function(a){return a=[].slice.call(arguments,0),a.forEach(function(a){a.__rendered=!1,function(a){a.dispatch.on("renderEnd",function(){a.__rendered=!0,f.renderEnd("model")})}(a),e.indexOf(a)<0&&e.push(a)}),this},this.reset=function(a){void 0!==a&&(d=a),e=[]},this.transition=function(a,b,c){if(b=arguments.length>1?[].slice.call(arguments,1):[],c=b.length>1?b.pop():void 0!==d?d:250,a.__rendered=!1,e.indexOf(a)<0&&e.push(a),0===c)return a.__rendered=!0,a.delay=function(){return this},a.duration=function(){return this},a;a.__rendered=0===a.length?!0:a.every(function(a){return!a.length})?!0:!1;var g=0;return a.transition().duration(c).each(function(){++g}).each("end",function(){0===--g&&(a.__rendered=!0,f.renderEnd.apply(this,b))})},this.renderEnd=function(){e.every(function(a){return a.__rendered})&&(e.forEach(function(a){a.__rendered=!1}),b.renderEnd.apply(this,arguments))}},a.utils.deepExtend=function(b){var c=arguments.length>1?[].slice.call(arguments,1):[];c.forEach(function(c){for(var d in c){var e=b[d]instanceof Array,f="object"==typeof b[d],g="object"==typeof c[d];f&&!e&&g?a.utils.deepExtend(b[d],c[d]):b[d]=c[d]}})},a.utils.state=function(){if(!(this instanceof a.utils.state))return new a.utils.state;var b={},c=function(){},d=function(){return{}},e=null,f=null;this.dispatch=d3.dispatch("change","set"),this.dispatch.on("set",function(a){c(a,!0)}),this.getter=function(a){return d=a,this},this.setter=function(a,b){return b||(b=function(){}),c=function(c,d){a(c),d&&b()},this},this.init=function(b){e=e||{},a.utils.deepExtend(e,b)};var g=function(){var a=d();if(JSON.stringify(a)===JSON.stringify(b))return!1;for(var c in a)void 0===b[c]&&(b[c]={}),b[c]=a[c],f=!0;return!0};this.update=function(){e&&(c(e,!1),e=null),g.call(this)&&this.dispatch.change(b)}},a.utils.optionsFunc=function(a){return a&&d3.map(a).forEach(function(a,b){"function"==typeof this[a]&&this[a](b)}.bind(this)),this},a.utils.calcTicksX=function(b,c){var d=1,e=0;for(e;e<c.length;e+=1){var f=c[e]&&c[e].values?c[e].values.length:0;d=f>d?f:d}return a.log("Requested number of ticks: ",b),a.log("Calculated max values to be: ",d),b=b>d?b=d-1:b,b=1>b?1:b,b=Math.floor(b),a.log("Calculating tick count as: ",b),b},a.utils.calcTicksY=function(b,c){return a.utils.calcTicksX(b,c)},a.utils.initOption=function(a,b){a._calls&&a._calls[b]?a[b]=a._calls[b]:(a[b]=function(c){return arguments.length?(a._overrides[b]=!0,a._options[b]=c,a):a._options[b]},a["_"+b]=function(c){return arguments.length?(a._overrides[b]||(a._options[b]=c),a):a._options[b]})},a.utils.initOptions=function(b){b._overrides=b._overrides||{};var c=Object.getOwnPropertyNames(b._options||{}),d=Object.getOwnPropertyNames(b._calls||{});c=c.concat(d);for(var e in c)a.utils.initOption(b,c[e])},a.utils.inheritOptionsD3=function(a,b,c){a._d3options=c.concat(a._d3options||[]),c.unshift(b),c.unshift(a),d3.rebind.apply(this,c)},a.utils.arrayUnique=function(a){return a.sort().filter(function(b,c){return!c||b!=a[c-1]})},a.utils.symbolMap=d3.map(),a.utils.symbol=function(){function b(b,e){var f=c.call(this,b,e),g=d.call(this,b,e);return-1!==d3.svg.symbolTypes.indexOf(f)?d3.svg.symbol().type(f).size(g)():a.utils.symbolMap.get(f)(g)}var c,d=64;return b.type=function(a){return arguments.length?(c=d3.functor(a),b):c},b.size=function(a){return arguments.length?(d=d3.functor(a),b):d},b},a.utils.inheritOptions=function(b,c){var d=Object.getOwnPropertyNames(c._options||{}),e=Object.getOwnPropertyNames(c._calls||{}),f=c._inherited||[],g=c._d3options||[],h=d.concat(e).concat(f).concat(g);h.unshift(c),h.unshift(b),d3.rebind.apply(this,h),b._inherited=a.utils.arrayUnique(d.concat(e).concat(f).concat(d).concat(b._inherited||[])),b._d3options=a.utils.arrayUnique(g.concat(b._d3options||[]))},a.utils.initSVG=function(a){a.classed({"nvd3-svg":!0})},a.utils.sanitizeHeight=function(a,b){return a||parseInt(b.style("height"),10)||400},a.utils.sanitizeWidth=function(a,b){return a||parseInt(b.style("width"),10)||960},a.utils.availableHeight=function(b,c,d){return a.utils.sanitizeHeight(b,c)-d.top-d.bottom},a.utils.availableWidth=function(b,c,d){return a.utils.sanitizeWidth(b,c)-d.left-d.right},a.utils.noData=function(b,c){var d=b.options(),e=d.margin(),f=d.noData(),g=null==f?["No Data Available."]:[f],h=a.utils.availableHeight(d.height(),c,e),i=a.utils.availableWidth(d.width(),c,e),j=e.left+i/2,k=e.top+h/2;c.selectAll("g").remove();var l=c.selectAll(".nv-noData").data(g);l.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),l.attr("x",j).attr("y",k).text(function(a){return a})},a.models.axis=function(){"use strict";function b(g){return s.reset(),g.each(function(b){var g=d3.select(this);a.utils.initSVG(g);var p=g.selectAll("g.nv-wrap.nv-axis").data([b]),q=p.enter().append("g").attr("class","nvd3 nv-wrap nv-axis"),t=(q.append("g"),p.select("g"));null!==n?c.ticks(n):("top"==c.orient()||"bottom"==c.orient())&&c.ticks(Math.abs(d.range()[1]-d.range()[0])/100),t.watchTransition(s,"axis").call(c),r=r||c.scale();var u=c.tickFormat();null==u&&(u=r.tickFormat());var v=t.selectAll("text.nv-axislabel").data([h||null]);v.exit().remove();var w,x,y;switch(c.orient()){case"top":v.enter().append("text").attr("class","nv-axislabel"),y=d.range().length<2?0:2===d.range().length?d.range()[1]:d.range()[d.range().length-1]+(d.range()[1]-d.range()[0]),v.attr("text-anchor","middle").attr("y",0).attr("x",y/2),i&&(x=p.selectAll("g.nv-axisMaxMin").data(d.domain()),x.enter().append("g").attr("class",function(a,b){return["nv-axisMaxMin","nv-axisMaxMin-x",0==b?"nv-axisMin-x":"nv-axisMax-x"].join(" ")}).append("text"),x.exit().remove(),x.attr("transform",function(b){return"translate("+a.utils.NaNtoZero(d(b))+",0)"}).select("text").attr("dy","-0.5em").attr("y",-c.tickPadding()).attr("text-anchor","middle").text(function(a){var b=u(a);return(""+b).match("NaN")?"":b}),x.watchTransition(s,"min-max top").attr("transform",function(b,c){return"translate("+a.utils.NaNtoZero(d.range()[c])+",0)"}));break;case"bottom":w=o+36;var z=30,A=0,B=t.selectAll("g").select("text"),C="";if(j%360){B.each(function(){var a=this.getBoundingClientRect(),b=a.width;A=a.height,b>z&&(z=b)}),C="rotate("+j+" 0,"+(A/2+c.tickPadding())+")";var D=Math.abs(Math.sin(j*Math.PI/180));w=(D?D*z:z)+30,B.attr("transform",C).style("text-anchor",j%360>0?"start":"end")}v.enter().append("text").attr("class","nv-axislabel"),y=d.range().length<2?0:2===d.range().length?d.range()[1]:d.range()[d.range().length-1]+(d.range()[1]-d.range()[0]),v.attr("text-anchor","middle").attr("y",w).attr("x",y/2),i&&(x=p.selectAll("g.nv-axisMaxMin").data([d.domain()[0],d.domain()[d.domain().length-1]]),x.enter().append("g").attr("class",function(a,b){return["nv-axisMaxMin","nv-axisMaxMin-x",0==b?"nv-axisMin-x":"nv-axisMax-x"].join(" ")}).append("text"),x.exit().remove(),x.attr("transform",function(b){return"translate("+a.utils.NaNtoZero(d(b)+(m?d.rangeBand()/2:0))+",0)"}).select("text").attr("dy",".71em").attr("y",c.tickPadding()).attr("transform",C).style("text-anchor",j?j%360>0?"start":"end":"middle").text(function(a){var b=u(a);return(""+b).match("NaN")?"":b}),x.watchTransition(s,"min-max bottom").attr("transform",function(b){return"translate("+a.utils.NaNtoZero(d(b)+(m?d.rangeBand()/2:0))+",0)"})),l&&B.attr("transform",function(a,b){return"translate(0,"+(b%2==0?"0":"12")+")"});break;case"right":v.enter().append("text").attr("class","nv-axislabel"),v.style("text-anchor",k?"middle":"begin").attr("transform",k?"rotate(90)":"").attr("y",k?-Math.max(e.right,f)+12:-10).attr("x",k?d3.max(d.range())/2:c.tickPadding()),i&&(x=p.selectAll("g.nv-axisMaxMin").data(d.domain()),x.enter().append("g").attr("class",function(a,b){return["nv-axisMaxMin","nv-axisMaxMin-y",0==b?"nv-axisMin-y":"nv-axisMax-y"].join(" ")}).append("text").style("opacity",0),x.exit().remove(),x.attr("transform",function(b){return"translate(0,"+a.utils.NaNtoZero(d(b))+")"}).select("text").attr("dy",".32em").attr("y",0).attr("x",c.tickPadding()).style("text-anchor","start").text(function(a){var b=u(a);return(""+b).match("NaN")?"":b}),x.watchTransition(s,"min-max right").attr("transform",function(b,c){return"translate(0,"+a.utils.NaNtoZero(d.range()[c])+")"}).select("text").style("opacity",1));break;case"left":v.enter().append("text").attr("class","nv-axislabel"),v.style("text-anchor",k?"middle":"end").attr("transform",k?"rotate(-90)":"").attr("y",k?-Math.max(e.left,f)+25-(o||0):-10).attr("x",k?-d3.max(d.range())/2:-c.tickPadding()),i&&(x=p.selectAll("g.nv-axisMaxMin").data(d.domain()),x.enter().append("g").attr("class",function(a,b){return["nv-axisMaxMin","nv-axisMaxMin-y",0==b?"nv-axisMin-y":"nv-axisMax-y"].join(" ")}).append("text").style("opacity",0),x.exit().remove(),x.attr("transform",function(b){return"translate(0,"+a.utils.NaNtoZero(r(b))+")"}).select("text").attr("dy",".32em").attr("y",0).attr("x",-c.tickPadding()).attr("text-anchor","end").text(function(a){var b=u(a);return(""+b).match("NaN")?"":b}),x.watchTransition(s,"min-max right").attr("transform",function(b,c){return"translate(0,"+a.utils.NaNtoZero(d.range()[c])+")"}).select("text").style("opacity",1))}if(v.text(function(a){return a}),!i||"left"!==c.orient()&&"right"!==c.orient()||(t.selectAll("g").each(function(a){d3.select(this).select("text").attr("opacity",1),(d(a)<d.range()[1]+10||d(a)>d.range()[0]-10)&&((a>1e-10||-1e-10>a)&&d3.select(this).attr("opacity",0),d3.select(this).select("text").attr("opacity",0))}),d.domain()[0]==d.domain()[1]&&0==d.domain()[0]&&p.selectAll("g.nv-axisMaxMin").style("opacity",function(a,b){return b?0:1})),i&&("top"===c.orient()||"bottom"===c.orient())){var E=[];p.selectAll("g.nv-axisMaxMin").each(function(a,b){try{E.push(b?d(a)-this.getBoundingClientRect().width-4:d(a)+this.getBoundingClientRect().width+4)}catch(c){E.push(b?d(a)-4:d(a)+4)}}),t.selectAll("g").each(function(a){(d(a)<E[0]||d(a)>E[1])&&(a>1e-10||-1e-10>a?d3.select(this).remove():d3.select(this).select("text").remove())})}t.selectAll(".tick").filter(function(a){return!parseFloat(Math.round(1e5*a)/1e6)&&void 0!==a}).classed("zero",!0),r=d.copy()}),s.renderEnd("axis immediate"),b}var c=d3.svg.axis(),d=d3.scale.linear(),e={top:0,right:0,bottom:0,left:0},f=75,g=60,h=null,i=!0,j=0,k=!0,l=!1,m=!1,n=null,o=0,p=250,q=d3.dispatch("renderEnd");c.scale(d).orient("bottom").tickFormat(function(a){return a});var r,s=a.utils.renderWatch(q,p);return b.axis=c,b.dispatch=q,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{axisLabelDistance:{get:function(){return o},set:function(a){o=a}},staggerLabels:{get:function(){return l},set:function(a){l=a}},rotateLabels:{get:function(){return j},set:function(a){j=a}},rotateYLabel:{get:function(){return k},set:function(a){k=a}},showMaxMin:{get:function(){return i},set:function(a){i=a}},axisLabel:{get:function(){return h},set:function(a){h=a}},height:{get:function(){return g},set:function(a){g=a}},ticks:{get:function(){return n},set:function(a){n=a}},width:{get:function(){return f},set:function(a){f=a}},margin:{get:function(){return e},set:function(a){e.top=void 0!==a.top?a.top:e.top,e.right=void 0!==a.right?a.right:e.right,e.bottom=void 0!==a.bottom?a.bottom:e.bottom,e.left=void 0!==a.left?a.left:e.left}},duration:{get:function(){return p},set:function(a){p=a,s.reset(p)}},scale:{get:function(){return d},set:function(e){d=e,c.scale(d),m="function"==typeof d.rangeBands,a.utils.inheritOptionsD3(b,d,["domain","range","rangeBand","rangeBands"])}}}),a.utils.initOptions(b),a.utils.inheritOptionsD3(b,c,["orient","tickValues","tickSubdivide","tickSize","tickPadding","tickFormat"]),a.utils.inheritOptionsD3(b,d,["domain","range","rangeBand","rangeBands"]),b},a.models.boxPlot=function(){"use strict";function b(l){return v.reset(),l.each(function(b){var l=j-i.left-i.right,p=k-i.top-i.bottom;r=d3.select(this),a.utils.initSVG(r),m.domain(c||b.map(function(a,b){return o(a,b)})).rangeBands(e||[0,l],.1);var w=[];if(!d){var x=d3.min(b.map(function(a){var b=[];return b.push(a.values.Q1),a.values.hasOwnProperty("whisker_low")&&null!==a.values.whisker_low&&b.push(a.values.whisker_low),a.values.hasOwnProperty("outliers")&&null!==a.values.outliers&&(b=b.concat(a.values.outliers)),d3.min(b)})),y=d3.max(b.map(function(a){var b=[];return b.push(a.values.Q3),a.values.hasOwnProperty("whisker_high")&&null!==a.values.whisker_high&&b.push(a.values.whisker_high),a.values.hasOwnProperty("outliers")&&null!==a.values.outliers&&(b=b.concat(a.values.outliers)),d3.max(b)}));w=[x,y]}n.domain(d||w),n.range(f||[p,0]),g=g||m,h=h||n.copy().range([n(0),n(0)]);{var z=r.selectAll("g.nv-wrap").data([b]);z.enter().append("g").attr("class","nvd3 nv-wrap")}z.attr("transform","translate("+i.left+","+i.top+")");var A=z.selectAll(".nv-boxplot").data(function(a){return a}),B=A.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6);A.attr("class","nv-boxplot").attr("transform",function(a,b){return"translate("+(m(o(a,b))+.05*m.rangeBand())+", 0)"}).classed("hover",function(a){return a.hover}),A.watchTransition(v,"nv-boxplot: boxplots").style("stroke-opacity",1).style("fill-opacity",.75).delay(function(a,c){return c*t/b.length}).attr("transform",function(a,b){return"translate("+(m(o(a,b))+.05*m.rangeBand())+", 0)"}),A.exit().remove(),B.each(function(a,b){var c=d3.select(this);["low","high"].forEach(function(d){a.values.hasOwnProperty("whisker_"+d)&&null!==a.values["whisker_"+d]&&(c.append("line").style("stroke",a.color?a.color:q(a,b)).attr("class","nv-boxplot-whisker nv-boxplot-"+d),c.append("line").style("stroke",a.color?a.color:q(a,b)).attr("class","nv-boxplot-tick nv-boxplot-"+d))})});var C=A.selectAll(".nv-boxplot-outlier").data(function(a){return a.values.hasOwnProperty("outliers")&&null!==a.values.outliers?a.values.outliers:[]});C.enter().append("circle").style("fill",function(a,b,c){return q(a,c)}).style("stroke",function(a,b,c){return q(a,c)}).on("mouseover",function(a,b,c){d3.select(this).classed("hover",!0),s.elementMouseover({series:{key:a,color:q(a,c)},e:d3.event})}).on("mouseout",function(a,b,c){d3.select(this).classed("hover",!1),s.elementMouseout({series:{key:a,color:q(a,c)},e:d3.event})}).on("mousemove",function(){s.elementMousemove({e:d3.event})}),C.attr("class","nv-boxplot-outlier"),C.watchTransition(v,"nv-boxplot: nv-boxplot-outlier").attr("cx",.45*m.rangeBand()).attr("cy",function(a){return n(a)}).attr("r","3"),C.exit().remove();var D=function(){return null===u?.9*m.rangeBand():Math.min(75,.9*m.rangeBand())},E=function(){return.45*m.rangeBand()-D()/2},F=function(){return.45*m.rangeBand()+D()/2};["low","high"].forEach(function(a){var b="low"===a?"Q1":"Q3";A.select("line.nv-boxplot-whisker.nv-boxplot-"+a).watchTransition(v,"nv-boxplot: boxplots").attr("x1",.45*m.rangeBand()).attr("y1",function(b){return n(b.values["whisker_"+a])}).attr("x2",.45*m.rangeBand()).attr("y2",function(a){return n(a.values[b])}),A.select("line.nv-boxplot-tick.nv-boxplot-"+a).watchTransition(v,"nv-boxplot: boxplots").attr("x1",E).attr("y1",function(b){return n(b.values["whisker_"+a])}).attr("x2",F).attr("y2",function(b){return n(b.values["whisker_"+a])})}),["low","high"].forEach(function(a){B.selectAll(".nv-boxplot-"+a).on("mouseover",function(b,c,d){d3.select(this).classed("hover",!0),s.elementMouseover({series:{key:b.values["whisker_"+a],color:q(b,d)},e:d3.event})}).on("mouseout",function(b,c,d){d3.select(this).classed("hover",!1),s.elementMouseout({series:{key:b.values["whisker_"+a],color:q(b,d)},e:d3.event})}).on("mousemove",function(){s.elementMousemove({e:d3.event})})}),B.append("rect").attr("class","nv-boxplot-box").on("mouseover",function(a,b){d3.select(this).classed("hover",!0),s.elementMouseover({key:a.label,value:a.label,series:[{key:"Q3",value:a.values.Q3,color:a.color||q(a,b)},{key:"Q2",value:a.values.Q2,color:a.color||q(a,b)},{key:"Q1",value:a.values.Q1,color:a.color||q(a,b)}],data:a,index:b,e:d3.event})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),s.elementMouseout({key:a.label,value:a.label,series:[{key:"Q3",value:a.values.Q3,color:a.color||q(a,b)},{key:"Q2",value:a.values.Q2,color:a.color||q(a,b)},{key:"Q1",value:a.values.Q1,color:a.color||q(a,b)}],data:a,index:b,e:d3.event})}).on("mousemove",function(){s.elementMousemove({e:d3.event})}),A.select("rect.nv-boxplot-box").watchTransition(v,"nv-boxplot: boxes").attr("y",function(a){return n(a.values.Q3)}).attr("width",D).attr("x",E).attr("height",function(a){return Math.abs(n(a.values.Q3)-n(a.values.Q1))||1}).style("fill",function(a,b){return a.color||q(a,b)}).style("stroke",function(a,b){return a.color||q(a,b)}),B.append("line").attr("class","nv-boxplot-median"),A.select("line.nv-boxplot-median").watchTransition(v,"nv-boxplot: boxplots line").attr("x1",E).attr("y1",function(a){return n(a.values.Q2)}).attr("x2",F).attr("y2",function(a){return n(a.values.Q2)}),g=m.copy(),h=n.copy()}),v.renderEnd("nv-boxplot immediate"),b}var c,d,e,f,g,h,i={top:0,right:0,bottom:0,left:0},j=960,k=500,l=Math.floor(1e4*Math.random()),m=d3.scale.ordinal(),n=d3.scale.linear(),o=function(a){return a.x},p=function(a){return a.y},q=a.utils.defaultColor(),r=null,s=d3.dispatch("elementMouseover","elementMouseout","elementMousemove","renderEnd"),t=250,u=null,v=a.utils.renderWatch(s,t);return b.dispatch=s,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return j},set:function(a){j=a}},height:{get:function(){return k},set:function(a){k=a}},maxBoxWidth:{get:function(){return u},set:function(a){u=a}},x:{get:function(){return o},set:function(a){o=a}},y:{get:function(){return p},set:function(a){p=a}},xScale:{get:function(){return m},set:function(a){m=a}},yScale:{get:function(){return n},set:function(a){n=a}},xDomain:{get:function(){return c},set:function(a){c=a}},yDomain:{get:function(){return d},set:function(a){d=a}},xRange:{get:function(){return e},set:function(a){e=a}},yRange:{get:function(){return f},set:function(a){f=a}},id:{get:function(){return l},set:function(a){l=a}},margin:{get:function(){return i},set:function(a){i.top=void 0!==a.top?a.top:i.top,i.right=void 0!==a.right?a.right:i.right,i.bottom=void 0!==a.bottom?a.bottom:i.bottom,i.left=void 0!==a.left?a.left:i.left}},color:{get:function(){return q},set:function(b){q=a.utils.getColor(b)}},duration:{get:function(){return t},set:function(a){t=a,v.reset(t)}}}),a.utils.initOptions(b),b},a.models.boxPlotChart=function(){"use strict";function b(k){return t.reset(),t.models(e),l&&t.models(f),m&&t.models(g),k.each(function(k){var p=d3.select(this);a.utils.initSVG(p);var t=(i||parseInt(p.style("width"))||960)-h.left-h.right,u=(j||parseInt(p.style("height"))||400)-h.top-h.bottom;if(b.update=function(){r.beforeUpdate(),p.transition().duration(s).call(b)},b.container=this,!(k&&k.length&&k.filter(function(a){return a.values.hasOwnProperty("Q1")&&a.values.hasOwnProperty("Q2")&&a.values.hasOwnProperty("Q3")}).length)){var v=p.selectAll(".nv-noData").data([q]);return v.enter().append("text").attr("class","nvd3 nv-noData").attr("dy","-.7em").style("text-anchor","middle"),v.attr("x",h.left+t/2).attr("y",h.top+u/2).text(function(a){return a}),b}p.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale().clamp(!0);var w=p.selectAll("g.nv-wrap.nv-boxPlotWithAxes").data([k]),x=w.enter().append("g").attr("class","nvd3 nv-wrap nv-boxPlotWithAxes").append("g"),y=x.append("defs"),z=w.select("g");
+x.append("g").attr("class","nv-x nv-axis"),x.append("g").attr("class","nv-y nv-axis").append("g").attr("class","nv-zeroLine").append("line"),x.append("g").attr("class","nv-barsWrap"),z.attr("transform","translate("+h.left+","+h.top+")"),n&&z.select(".nv-y.nv-axis").attr("transform","translate("+t+",0)"),e.width(t).height(u);var A=z.select(".nv-barsWrap").datum(k.filter(function(a){return!a.disabled}));if(A.transition().call(e),y.append("clipPath").attr("id","nv-x-label-clip-"+e.id()).append("rect"),z.select("#nv-x-label-clip-"+e.id()+" rect").attr("width",c.rangeBand()*(o?2:1)).attr("height",16).attr("x",-c.rangeBand()/(o?1:2)),l){f.scale(c).ticks(a.utils.calcTicksX(t/100,k)).tickSize(-u,0),z.select(".nv-x.nv-axis").attr("transform","translate(0,"+d.range()[0]+")"),z.select(".nv-x.nv-axis").call(f);var B=z.select(".nv-x.nv-axis").selectAll("g");o&&B.selectAll("text").attr("transform",function(a,b,c){return"translate(0,"+(c%2==0?"5":"17")+")"})}m&&(g.scale(d).ticks(Math.floor(u/36)).tickSize(-t,0),z.select(".nv-y.nv-axis").call(g)),z.select(".nv-zeroLine line").attr("x1",0).attr("x2",t).attr("y1",d(0)).attr("y2",d(0))}),t.renderEnd("nv-boxplot chart immediate"),b}var c,d,e=a.models.boxPlot(),f=a.models.axis(),g=a.models.axis(),h={top:15,right:10,bottom:50,left:60},i=null,j=null,k=a.utils.getColor(),l=!0,m=!0,n=!1,o=!1,p=a.models.tooltip(),q="No Data Available.",r=d3.dispatch("tooltipShow","tooltipHide","beforeUpdate","renderEnd"),s=250;f.orient("bottom").showMaxMin(!1).tickFormat(function(a){return a}),g.orient(n?"right":"left").tickFormat(d3.format(",.1f")),p.duration(0);var t=a.utils.renderWatch(r,s);return e.dispatch.on("elementMouseover.tooltip",function(a){p.data(a).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(a){p.data(a).hidden(!0)}),e.dispatch.on("elementMousemove.tooltip",function(){p.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=r,b.boxplot=e,b.xAxis=f,b.yAxis=g,b.tooltip=p,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return i},set:function(a){i=a}},height:{get:function(){return j},set:function(a){j=a}},staggerLabels:{get:function(){return o},set:function(a){o=a}},showXAxis:{get:function(){return l},set:function(a){l=a}},showYAxis:{get:function(){return m},set:function(a){m=a}},tooltips:{get:function(){return tooltips},set:function(a){tooltips=a}},tooltipContent:{get:function(){return p},set:function(a){p=a}},noData:{get:function(){return q},set:function(a){q=a}},margin:{get:function(){return h},set:function(a){h.top=void 0!==a.top?a.top:h.top,h.right=void 0!==a.right?a.right:h.right,h.bottom=void 0!==a.bottom?a.bottom:h.bottom,h.left=void 0!==a.left?a.left:h.left}},duration:{get:function(){return s},set:function(a){s=a,t.reset(s),e.duration(s),f.duration(s),g.duration(s)}},color:{get:function(){return k},set:function(b){k=a.utils.getColor(b),e.color(k)}},rightAlignYAxis:{get:function(){return n},set:function(a){n=a,g.orient(a?"right":"left")}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.bullet=function(){"use strict";function b(d){return d.each(function(b,d){var p=m-c.left-c.right,s=n-c.top-c.bottom;o=d3.select(this),a.utils.initSVG(o);{var t=f.call(this,b,d).slice().sort(d3.descending),u=g.call(this,b,d).slice().sort(d3.descending),v=h.call(this,b,d).slice().sort(d3.descending),w=i.call(this,b,d).slice(),x=j.call(this,b,d).slice(),y=k.call(this,b,d).slice(),z=d3.scale.linear().domain(d3.extent(d3.merge([l,t]))).range(e?[p,0]:[0,p]);this.__chart__||d3.scale.linear().domain([0,1/0]).range(z.range())}this.__chart__=z;var A=d3.min(t),B=d3.max(t),C=t[1],D=o.selectAll("g.nv-wrap.nv-bullet").data([b]),E=D.enter().append("g").attr("class","nvd3 nv-wrap nv-bullet"),F=E.append("g"),G=D.select("g");F.append("rect").attr("class","nv-range nv-rangeMax"),F.append("rect").attr("class","nv-range nv-rangeAvg"),F.append("rect").attr("class","nv-range nv-rangeMin"),F.append("rect").attr("class","nv-measure"),D.attr("transform","translate("+c.left+","+c.top+")");var H=function(a){return Math.abs(z(a)-z(0))},I=function(a){return z(0>a?a:0)};G.select("rect.nv-rangeMax").attr("height",s).attr("width",H(B>0?B:A)).attr("x",I(B>0?B:A)).datum(B>0?B:A),G.select("rect.nv-rangeAvg").attr("height",s).attr("width",H(C)).attr("x",I(C)).datum(C),G.select("rect.nv-rangeMin").attr("height",s).attr("width",H(B)).attr("x",I(B)).attr("width",H(B>0?A:B)).attr("x",I(B>0?A:B)).datum(B>0?A:B),G.select("rect.nv-measure").style("fill",q).attr("height",s/3).attr("y",s/3).attr("width",0>v?z(0)-z(v[0]):z(v[0])-z(0)).attr("x",I(v)).on("mouseover",function(){r.elementMouseover({value:v[0],label:y[0]||"Current",color:d3.select(this).style("fill")})}).on("mousemove",function(){r.elementMousemove({value:v[0],label:y[0]||"Current",color:d3.select(this).style("fill")})}).on("mouseout",function(){r.elementMouseout({value:v[0],label:y[0]||"Current",color:d3.select(this).style("fill")})});var J=s/6,K=u.map(function(a,b){return{value:a,label:x[b]}});F.selectAll("path.nv-markerTriangle").data(K).enter().append("path").attr("class","nv-markerTriangle").attr("transform",function(a){return"translate("+z(a.value)+","+s/2+")"}).attr("d","M0,"+J+"L"+J+","+-J+" "+-J+","+-J+"Z").on("mouseover",function(a){r.elementMouseover({value:a.value,label:a.label||"Previous",color:d3.select(this).style("fill"),pos:[z(a.value),s/2]})}).on("mousemove",function(a){r.elementMousemove({value:a.value,label:a.label||"Previous",color:d3.select(this).style("fill")})}).on("mouseout",function(a){r.elementMouseout({value:a.value,label:a.label||"Previous",color:d3.select(this).style("fill")})}),D.selectAll(".nv-range").on("mouseover",function(a,b){var c=w[b]||(b?1==b?"Mean":"Minimum":"Maximum");r.elementMouseover({value:a,label:c,color:d3.select(this).style("fill")})}).on("mousemove",function(){r.elementMousemove({value:v[0],label:y[0]||"Previous",color:d3.select(this).style("fill")})}).on("mouseout",function(a,b){var c=w[b]||(b?1==b?"Mean":"Minimum":"Maximum");r.elementMouseout({value:a,label:c,color:d3.select(this).style("fill")})})}),b}var c={top:0,right:0,bottom:0,left:0},d="left",e=!1,f=function(a){return a.ranges},g=function(a){return a.markers?a.markers:[0]},h=function(a){return a.measures},i=function(a){return a.rangeLabels?a.rangeLabels:[]},j=function(a){return a.markerLabels?a.markerLabels:[]},k=function(a){return a.measureLabels?a.measureLabels:[]},l=[0],m=380,n=30,o=null,p=null,q=a.utils.getColor(["#1f77b4"]),r=d3.dispatch("elementMouseover","elementMouseout","elementMousemove");return b.dispatch=r,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{ranges:{get:function(){return f},set:function(a){f=a}},markers:{get:function(){return g},set:function(a){g=a}},measures:{get:function(){return h},set:function(a){h=a}},forceX:{get:function(){return l},set:function(a){l=a}},width:{get:function(){return m},set:function(a){m=a}},height:{get:function(){return n},set:function(a){n=a}},tickFormat:{get:function(){return p},set:function(a){p=a}},margin:{get:function(){return c},set:function(a){c.top=void 0!==a.top?a.top:c.top,c.right=void 0!==a.right?a.right:c.right,c.bottom=void 0!==a.bottom?a.bottom:c.bottom,c.left=void 0!==a.left?a.left:c.left}},orient:{get:function(){return d},set:function(a){d=a,e="right"==d||"bottom"==d}},color:{get:function(){return q},set:function(b){q=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.bulletChart=function(){"use strict";function b(d){return d.each(function(e,o){var p=d3.select(this);a.utils.initSVG(p);var q=a.utils.availableWidth(k,p,g),r=l-g.top-g.bottom;if(b.update=function(){b(d)},b.container=this,!e||!h.call(this,e,o))return a.utils.noData(b,p),b;p.selectAll(".nv-noData").remove();var s=h.call(this,e,o).slice().sort(d3.descending),t=i.call(this,e,o).slice().sort(d3.descending),u=j.call(this,e,o).slice().sort(d3.descending),v=p.selectAll("g.nv-wrap.nv-bulletChart").data([e]),w=v.enter().append("g").attr("class","nvd3 nv-wrap nv-bulletChart"),x=w.append("g"),y=v.select("g");x.append("g").attr("class","nv-bulletWrap"),x.append("g").attr("class","nv-titles"),v.attr("transform","translate("+g.left+","+g.top+")");var z=d3.scale.linear().domain([0,Math.max(s[0],t[0],u[0])]).range(f?[q,0]:[0,q]),A=this.__chart__||d3.scale.linear().domain([0,1/0]).range(z.range());this.__chart__=z;var B=x.select(".nv-titles").append("g").attr("text-anchor","end").attr("transform","translate(-6,"+(l-g.top-g.bottom)/2+")");B.append("text").attr("class","nv-title").text(function(a){return a.title}),B.append("text").attr("class","nv-subtitle").attr("dy","1em").text(function(a){return a.subtitle}),c.width(q).height(r);var C=y.select(".nv-bulletWrap");d3.transition(C).call(c);var D=m||z.tickFormat(q/100),E=y.selectAll("g.nv-tick").data(z.ticks(n?n:q/50),function(a){return this.textContent||D(a)}),F=E.enter().append("g").attr("class","nv-tick").attr("transform",function(a){return"translate("+A(a)+",0)"}).style("opacity",1e-6);F.append("line").attr("y1",r).attr("y2",7*r/6),F.append("text").attr("text-anchor","middle").attr("dy","1em").attr("y",7*r/6).text(D);var G=d3.transition(E).attr("transform",function(a){return"translate("+z(a)+",0)"}).style("opacity",1);G.select("line").attr("y1",r).attr("y2",7*r/6),G.select("text").attr("y",7*r/6),d3.transition(E.exit()).attr("transform",function(a){return"translate("+z(a)+",0)"}).style("opacity",1e-6).remove()}),d3.timer.flush(),b}var c=a.models.bullet(),d=a.models.tooltip(),e="left",f=!1,g={top:5,right:40,bottom:20,left:120},h=function(a){return a.ranges},i=function(a){return a.markers?a.markers:[0]},j=function(a){return a.measures},k=null,l=55,m=null,n=null,o=null,p=d3.dispatch("tooltipShow","tooltipHide");return d.duration(0).headerEnabled(!1),c.dispatch.on("elementMouseover.tooltip",function(a){a.series={key:a.label,value:a.value,color:a.color},d.data(a).hidden(!1)}),c.dispatch.on("elementMouseout.tooltip",function(){d.hidden(!0)}),c.dispatch.on("elementMousemove.tooltip",function(){d.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.bullet=c,b.dispatch=p,b.tooltip=d,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{ranges:{get:function(){return h},set:function(a){h=a}},markers:{get:function(){return i},set:function(a){i=a}},measures:{get:function(){return j},set:function(a){j=a}},width:{get:function(){return k},set:function(a){k=a}},height:{get:function(){return l},set:function(a){l=a}},tickFormat:{get:function(){return m},set:function(a){m=a}},ticks:{get:function(){return n},set:function(a){n=a}},noData:{get:function(){return o},set:function(a){o=a}},tooltips:{get:function(){return d.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),d.enabled(!!b)}},tooltipContent:{get:function(){return d.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),d.contentGenerator(b)}},margin:{get:function(){return g},set:function(a){g.top=void 0!==a.top?a.top:g.top,g.right=void 0!==a.right?a.right:g.right,g.bottom=void 0!==a.bottom?a.bottom:g.bottom,g.left=void 0!==a.left?a.left:g.left}},orient:{get:function(){return e},set:function(a){e=a,f="right"==e||"bottom"==e}}}),a.utils.inheritOptions(b,c),a.utils.initOptions(b),b},a.models.candlestickBar=function(){"use strict";function b(x){return x.each(function(b){c=d3.select(this);var x=a.utils.availableWidth(i,c,h),y=a.utils.availableHeight(j,c,h);a.utils.initSVG(c);var A=x/b[0].values.length*.45;l.domain(d||d3.extent(b[0].values.map(n).concat(t))),l.range(v?f||[.5*x/b[0].values.length,x*(b[0].values.length-.5)/b[0].values.length]:f||[5+A/2,x-A/2-5]),m.domain(e||[d3.min(b[0].values.map(s).concat(u)),d3.max(b[0].values.map(r).concat(u))]).range(g||[y,0]),l.domain()[0]===l.domain()[1]&&l.domain(l.domain()[0]?[l.domain()[0]-.01*l.domain()[0],l.domain()[1]+.01*l.domain()[1]]:[-1,1]),m.domain()[0]===m.domain()[1]&&m.domain(m.domain()[0]?[m.domain()[0]+.01*m.domain()[0],m.domain()[1]-.01*m.domain()[1]]:[-1,1]);var B=d3.select(this).selectAll("g.nv-wrap.nv-candlestickBar").data([b[0].values]),C=B.enter().append("g").attr("class","nvd3 nv-wrap nv-candlestickBar"),D=C.append("defs"),E=C.append("g"),F=B.select("g");E.append("g").attr("class","nv-ticks"),B.attr("transform","translate("+h.left+","+h.top+")"),c.on("click",function(a,b){z.chartClick({data:a,index:b,pos:d3.event,id:k})}),D.append("clipPath").attr("id","nv-chart-clip-path-"+k).append("rect"),B.select("#nv-chart-clip-path-"+k+" rect").attr("width",x).attr("height",y),F.attr("clip-path",w?"url(#nv-chart-clip-path-"+k+")":"");var G=B.select(".nv-ticks").selectAll(".nv-tick").data(function(a){return a});G.exit().remove();{var H=G.enter().append("g").attr("class",function(a,b,c){return(p(a,b)>q(a,b)?"nv-tick negative":"nv-tick positive")+" nv-tick-"+c+"-"+b});H.append("line").attr("class","nv-candlestick-lines").attr("transform",function(a,b){return"translate("+l(n(a,b))+",0)"}).attr("x1",0).attr("y1",function(a,b){return m(r(a,b))}).attr("x2",0).attr("y2",function(a,b){return m(s(a,b))}),H.append("rect").attr("class","nv-candlestick-rects nv-bars").attr("transform",function(a,b){return"translate("+(l(n(a,b))-A/2)+","+(m(o(a,b))-(p(a,b)>q(a,b)?m(q(a,b))-m(p(a,b)):0))+")"}).attr("x",0).attr("y",0).attr("width",A).attr("height",function(a,b){var c=p(a,b),d=q(a,b);return c>d?m(d)-m(c):m(c)-m(d)})}c.selectAll(".nv-candlestick-lines").transition().attr("transform",function(a,b){return"translate("+l(n(a,b))+",0)"}).attr("x1",0).attr("y1",function(a,b){return m(r(a,b))}).attr("x2",0).attr("y2",function(a,b){return m(s(a,b))}),c.selectAll(".nv-candlestick-rects").transition().attr("transform",function(a,b){return"translate("+(l(n(a,b))-A/2)+","+(m(o(a,b))-(p(a,b)>q(a,b)?m(q(a,b))-m(p(a,b)):0))+")"}).attr("x",0).attr("y",0).attr("width",A).attr("height",function(a,b){var c=p(a,b),d=q(a,b);return c>d?m(d)-m(c):m(c)-m(d)})}),b}var c,d,e,f,g,h={top:0,right:0,bottom:0,left:0},i=null,j=null,k=Math.floor(1e4*Math.random()),l=d3.scale.linear(),m=d3.scale.linear(),n=function(a){return a.x},o=function(a){return a.y},p=function(a){return a.open},q=function(a){return a.close},r=function(a){return a.high},s=function(a){return a.low},t=[],u=[],v=!1,w=!0,x=a.utils.defaultColor(),y=!1,z=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState","renderEnd","chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove");return b.highlightPoint=function(a,d){b.clearHighlights(),c.select(".nv-candlestickBar .nv-tick-0-"+a).classed("hover",d)},b.clearHighlights=function(){c.select(".nv-candlestickBar .nv-tick.hover").classed("hover",!1)},b.dispatch=z,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return i},set:function(a){i=a}},height:{get:function(){return j},set:function(a){j=a}},xScale:{get:function(){return l},set:function(a){l=a}},yScale:{get:function(){return m},set:function(a){m=a}},xDomain:{get:function(){return d},set:function(a){d=a}},yDomain:{get:function(){return e},set:function(a){e=a}},xRange:{get:function(){return f},set:function(a){f=a}},yRange:{get:function(){return g},set:function(a){g=a}},forceX:{get:function(){return t},set:function(a){t=a}},forceY:{get:function(){return u},set:function(a){u=a}},padData:{get:function(){return v},set:function(a){v=a}},clipEdge:{get:function(){return w},set:function(a){w=a}},id:{get:function(){return k},set:function(a){k=a}},interactive:{get:function(){return y},set:function(a){y=a}},x:{get:function(){return n},set:function(a){n=a}},y:{get:function(){return o},set:function(a){o=a}},open:{get:function(){return p()},set:function(a){p=a}},close:{get:function(){return q()},set:function(a){q=a}},high:{get:function(){return r},set:function(a){r=a}},low:{get:function(){return s},set:function(a){s=a}},margin:{get:function(){return h},set:function(a){h.top=void 0!=a.top?a.top:h.top,h.right=void 0!=a.right?a.right:h.right,h.bottom=void 0!=a.bottom?a.bottom:h.bottom,h.left=void 0!=a.left?a.left:h.left}},color:{get:function(){return x},set:function(b){x=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.cumulativeLineChart=function(){"use strict";function b(l){return H.reset(),H.models(f),r&&H.models(g),s&&H.models(h),l.each(function(l){function A(){d3.select(b.container).style("cursor","ew-resize")}function E(){G.x=d3.event.x,G.i=Math.round(F.invert(G.x)),K()}function H(){d3.select(b.container).style("cursor","auto"),y.index=G.i,C.stateChange(y)}function K(){bb.data([G]);var a=b.duration();b.duration(0),b.update(),b.duration(a)}var L=d3.select(this);a.utils.initSVG(L),L.classed("nv-chart-"+x,!0);var M=this,N=a.utils.availableWidth(o,L,m),O=a.utils.availableHeight(p,L,m);if(b.update=function(){0===D?L.call(b):L.transition().duration(D).call(b)},b.container=this,y.setter(J(l),b.update).getter(I(l)).update(),y.disabled=l.map(function(a){return!!a.disabled}),!z){var P;z={};for(P in y)z[P]=y[P]instanceof Array?y[P].slice(0):y[P]}var Q=d3.behavior.drag().on("dragstart",A).on("drag",E).on("dragend",H);if(!(l&&l.length&&l.filter(function(a){return a.values.length}).length))return a.utils.noData(b,L),b;if(L.selectAll(".nv-noData").remove(),d=f.xScale(),e=f.yScale(),w)f.yDomain(null);else{var R=l.filter(function(a){return!a.disabled}).map(function(a){var b=d3.extent(a.values,f.y());return b[0]<-.95&&(b[0]=-.95),[(b[0]-b[1])/(1+b[1]),(b[1]-b[0])/(1+b[0])]}),S=[d3.min(R,function(a){return a[0]}),d3.max(R,function(a){return a[1]})];f.yDomain(S)}F.domain([0,l[0].values.length-1]).range([0,N]).clamp(!0);var l=c(G.i,l),T=v?"none":"all",U=L.selectAll("g.nv-wrap.nv-cumulativeLine").data([l]),V=U.enter().append("g").attr("class","nvd3 nv-wrap nv-cumulativeLine").append("g"),W=U.select("g");if(V.append("g").attr("class","nv-interactive"),V.append("g").attr("class","nv-x nv-axis").style("pointer-events","none"),V.append("g").attr("class","nv-y nv-axis"),V.append("g").attr("class","nv-background"),V.append("g").attr("class","nv-linesWrap").style("pointer-events",T),V.append("g").attr("class","nv-avgLinesWrap").style("pointer-events","none"),V.append("g").attr("class","nv-legendWrap"),V.append("g").attr("class","nv-controlsWrap"),q&&(i.width(N),W.select(".nv-legendWrap").datum(l).call(i),m.top!=i.height()&&(m.top=i.height(),O=a.utils.availableHeight(p,L,m)),W.select(".nv-legendWrap").attr("transform","translate(0,"+-m.top+")")),u){var X=[{key:"Re-scale y-axis",disabled:!w}];j.width(140).color(["#444","#444","#444"]).rightAlign(!1).margin({top:5,right:0,bottom:5,left:20}),W.select(".nv-controlsWrap").datum(X).attr("transform","translate(0,"+-m.top+")").call(j)}U.attr("transform","translate("+m.left+","+m.top+")"),t&&W.select(".nv-y.nv-axis").attr("transform","translate("+N+",0)");var Y=l.filter(function(a){return a.tempDisabled});U.select(".tempDisabled").remove(),Y.length&&U.append("text").attr("class","tempDisabled").attr("x",N/2).attr("y","-.71em").style("text-anchor","end").text(Y.map(function(a){return a.key}).join(", ")+" values cannot be calculated for this time period."),v&&(k.width(N).height(O).margin({left:m.left,top:m.top}).svgContainer(L).xScale(d),U.select(".nv-interactive").call(k)),V.select(".nv-background").append("rect"),W.select(".nv-background rect").attr("width",N).attr("height",O),f.y(function(a){return a.display.y}).width(N).height(O).color(l.map(function(a,b){return a.color||n(a,b)}).filter(function(a,b){return!l[b].disabled&&!l[b].tempDisabled}));var Z=W.select(".nv-linesWrap").datum(l.filter(function(a){return!a.disabled&&!a.tempDisabled}));Z.call(f),l.forEach(function(a,b){a.seriesIndex=b});var $=l.filter(function(a){return!a.disabled&&!!B(a)}),_=W.select(".nv-avgLinesWrap").selectAll("line").data($,function(a){return a.key}),ab=function(a){var b=e(B(a));return 0>b?0:b>O?O:b};_.enter().append("line").style("stroke-width",2).style("stroke-dasharray","10,10").style("stroke",function(a){return f.color()(a,a.seriesIndex)}).attr("x1",0).attr("x2",N).attr("y1",ab).attr("y2",ab),_.style("stroke-opacity",function(a){var b=e(B(a));return 0>b||b>O?0:1}).attr("x1",0).attr("x2",N).attr("y1",ab).attr("y2",ab),_.exit().remove();var bb=Z.selectAll(".nv-indexLine").data([G]);bb.enter().append("rect").attr("class","nv-indexLine").attr("width",3).attr("x",-2).attr("fill","red").attr("fill-opacity",.5).style("pointer-events","all").call(Q),bb.attr("transform",function(a){return"translate("+F(a.i)+",0)"}).attr("height",O),r&&(g.scale(d)._ticks(a.utils.calcTicksX(N/70,l)).tickSize(-O,0),W.select(".nv-x.nv-axis").attr("transform","translate(0,"+e.range()[0]+")"),W.select(".nv-x.nv-axis").call(g)),s&&(h.scale(e)._ticks(a.utils.calcTicksY(O/36,l)).tickSize(-N,0),W.select(".nv-y.nv-axis").call(h)),W.select(".nv-background rect").on("click",function(){G.x=d3.mouse(this)[0],G.i=Math.round(F.invert(G.x)),y.index=G.i,C.stateChange(y),K()}),f.dispatch.on("elementClick",function(a){G.i=a.pointIndex,G.x=F(G.i),y.index=G.i,C.stateChange(y),K()}),j.dispatch.on("legendClick",function(a){a.disabled=!a.disabled,w=!a.disabled,y.rescaleY=w,C.stateChange(y),b.update()}),i.dispatch.on("stateChange",function(a){for(var c in a)y[c]=a[c];C.stateChange(y),b.update()}),k.dispatch.on("elementMousemove",function(c){f.clearHighlights();var d,e,i,j=[];if(l.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(g,h){e=a.interactiveBisect(g.values,c.pointXValue,b.x()),f.highlightPoint(h,e,!0);var k=g.values[e];"undefined"!=typeof k&&("undefined"==typeof d&&(d=k),"undefined"==typeof i&&(i=b.xScale()(b.x()(k,e))),j.push({key:g.key,value:b.y()(k,e),color:n(g,g.seriesIndex)}))}),j.length>2){var o=b.yScale().invert(c.mouseY),p=Math.abs(b.yScale().domain()[0]-b.yScale().domain()[1]),q=.03*p,r=a.nearestValueIndex(j.map(function(a){return a.value}),o,q);null!==r&&(j[r].highlight=!0)}var s=g.tickFormat()(b.x()(d,e),e);k.tooltip.position({left:i+m.left,top:c.mouseY+m.top}).chartContainer(M.parentNode).valueFormatter(function(a){return h.tickFormat()(a)}).data({value:s,series:j})(),k.renderGuideLine(i)}),k.dispatch.on("elementMouseout",function(){f.clearHighlights()}),C.on("changeState",function(a){"undefined"!=typeof a.disabled&&(l.forEach(function(b,c){b.disabled=a.disabled[c]}),y.disabled=a.disabled),"undefined"!=typeof a.index&&(G.i=a.index,G.x=F(G.i),y.index=a.index,bb.data([G])),"undefined"!=typeof a.rescaleY&&(w=a.rescaleY),b.update()})}),H.renderEnd("cumulativeLineChart immediate"),b}function c(a,b){return K||(K=f.y()),b.map(function(b){if(!b.values)return b;var c=b.values[a];if(null==c)return b;var d=K(c,a);return-.95>d&&!E?(b.tempDisabled=!0,b):(b.tempDisabled=!1,b.values=b.values.map(function(a,b){return a.display={y:(K(a,b)-d)/(1+d)},a}),b)})}var d,e,f=a.models.line(),g=a.models.axis(),h=a.models.axis(),i=a.models.legend(),j=a.models.legend(),k=a.interactiveGuideline(),l=a.models.tooltip(),m={top:30,right:30,bottom:50,left:60},n=a.utils.defaultColor(),o=null,p=null,q=!0,r=!0,s=!0,t=!1,u=!0,v=!1,w=!0,x=f.id(),y=a.utils.state(),z=null,A=null,B=function(a){return a.average},C=d3.dispatch("stateChange","changeState","renderEnd"),D=250,E=!1;y.index=0,y.rescaleY=w,g.orient("bottom").tickPadding(7),h.orient(t?"right":"left"),l.valueFormatter(function(a,b){return h.tickFormat()(a,b)}).headerFormatter(function(a,b){return g.tickFormat()(a,b)}),j.updateState(!1);var F=d3.scale.linear(),G={i:0,x:0},H=a.utils.renderWatch(C,D),I=function(a){return function(){return{active:a.map(function(a){return!a.disabled}),index:G.i,rescaleY:w}}},J=function(a){return function(b){void 0!==b.index&&(G.i=b.index),void 0!==b.rescaleY&&(w=b.rescaleY),void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};f.dispatch.on("elementMouseover.tooltip",function(a){var c={x:b.x()(a.point),y:b.y()(a.point),color:a.point.color};a.point=c,l.data(a).position(a.pos).hidden(!1)}),f.dispatch.on("elementMouseout.tooltip",function(){l.hidden(!0)});var K=null;return b.dispatch=C,b.lines=f,b.legend=i,b.controls=j,b.xAxis=g,b.yAxis=h,b.interactiveLayer=k,b.state=y,b.tooltip=l,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return o},set:function(a){o=a}},height:{get:function(){return p},set:function(a){p=a}},rescaleY:{get:function(){return w},set:function(a){w=a}},showControls:{get:function(){return u},set:function(a){u=a}},showLegend:{get:function(){return q},set:function(a){q=a}},average:{get:function(){return B},set:function(a){B=a}},defaultState:{get:function(){return z},set:function(a){z=a}},noData:{get:function(){return A},set:function(a){A=a}},showXAxis:{get:function(){return r},set:function(a){r=a}},showYAxis:{get:function(){return s},set:function(a){s=a}},noErrorCheck:{get:function(){return E},set:function(a){E=a}},tooltips:{get:function(){return l.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),l.enabled(!!b)}},tooltipContent:{get:function(){return l.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),l.contentGenerator(b)}},margin:{get:function(){return m},set:function(a){m.top=void 0!==a.top?a.top:m.top,m.right=void 0!==a.right?a.right:m.right,m.bottom=void 0!==a.bottom?a.bottom:m.bottom,m.left=void 0!==a.left?a.left:m.left}},color:{get:function(){return n},set:function(b){n=a.utils.getColor(b),i.color(n)}},useInteractiveGuideline:{get:function(){return v},set:function(a){v=a,a===!0&&(b.interactive(!1),b.useVoronoi(!1))}},rightAlignYAxis:{get:function(){return t},set:function(a){t=a,h.orient(a?"right":"left")}},duration:{get:function(){return D},set:function(a){D=a,f.duration(D),g.duration(D),h.duration(D),H.reset(D)}}}),a.utils.inheritOptions(b,f),a.utils.initOptions(b),b},a.models.discreteBar=function(){"use strict";function b(m){return y.reset(),m.each(function(b){var m=k-j.left-j.right,x=l-j.top-j.bottom;c=d3.select(this),a.utils.initSVG(c),b.forEach(function(a,b){a.values.forEach(function(a){a.series=b})});var z=d&&e?[]:b.map(function(a){return a.values.map(function(a,b){return{x:p(a,b),y:q(a,b),y0:a.y0}})});n.domain(d||d3.merge(z).map(function(a){return a.x})).rangeBands(f||[0,m],.1),o.domain(e||d3.extent(d3.merge(z).map(function(a){return a.y}).concat(r))),o.range(t?g||[x-(o.domain()[0]<0?12:0),o.domain()[1]>0?12:0]:g||[x,0]),h=h||n,i=i||o.copy().range([o(0),o(0)]);{var A=c.selectAll("g.nv-wrap.nv-discretebar").data([b]),B=A.enter().append("g").attr("class","nvd3 nv-wrap nv-discretebar"),C=B.append("g");A.select("g")}C.append("g").attr("class","nv-groups"),A.attr("transform","translate("+j.left+","+j.top+")");var D=A.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a){return a.key});D.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),D.exit().watchTransition(y,"discreteBar: exit groups").style("stroke-opacity",1e-6).style("fill-opacity",1e-6).remove(),D.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}),D.watchTransition(y,"discreteBar: groups").style("stroke-opacity",1).style("fill-opacity",.75);var E=D.selectAll("g.nv-bar").data(function(a){return a.values});E.exit().remove();var F=E.enter().append("g").attr("transform",function(a,b){return"translate("+(n(p(a,b))+.05*n.rangeBand())+", "+o(0)+")"}).on("mouseover",function(a,b){d3.select(this).classed("hover",!0),v.elementMouseover({data:a,index:b,color:d3.select(this).style("fill")})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),v.elementMouseout({data:a,index:b,color:d3.select(this).style("fill")})}).on("mousemove",function(a,b){v.elementMousemove({data:a,index:b,color:d3.select(this).style("fill")})}).on("click",function(a,b){v.elementClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()}).on("dblclick",function(a,b){v.elementDblClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()});F.append("rect").attr("height",0).attr("width",.9*n.rangeBand()/b.length),t?(F.append("text").attr("text-anchor","middle"),E.select("text").text(function(a,b){return u(q(a,b))}).watchTransition(y,"discreteBar: bars text").attr("x",.9*n.rangeBand()/2).attr("y",function(a,b){return q(a,b)<0?o(q(a,b))-o(0)+12:-4})):E.selectAll("text").remove(),E.attr("class",function(a,b){return q(a,b)<0?"nv-bar negative":"nv-bar positive"}).style("fill",function(a,b){return a.color||s(a,b)}).style("stroke",function(a,b){return a.color||s(a,b)}).select("rect").attr("class",w).watchTransition(y,"discreteBar: bars rect").attr("width",.9*n.rangeBand()/b.length),E.watchTransition(y,"discreteBar: bars").attr("transform",function(a,b){var c=n(p(a,b))+.05*n.rangeBand(),d=q(a,b)<0?o(0):o(0)-o(q(a,b))<1?o(0)-1:o(q(a,b));return"translate("+c+", "+d+")"}).select("rect").attr("height",function(a,b){return Math.max(Math.abs(o(q(a,b))-o(e&&e[0]||0))||1)}),h=n.copy(),i=o.copy()}),y.renderEnd("discreteBar immediate"),b}var c,d,e,f,g,h,i,j={top:0,right:0,bottom:0,left:0},k=960,l=500,m=Math.floor(1e4*Math.random()),n=d3.scale.ordinal(),o=d3.scale.linear(),p=function(a){return a.x},q=function(a){return a.y},r=[0],s=a.utils.defaultColor(),t=!1,u=d3.format(",.2f"),v=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove","renderEnd"),w="discreteBar",x=250,y=a.utils.renderWatch(v,x);return b.dispatch=v,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return k},set:function(a){k=a}},height:{get:function(){return l},set:function(a){l=a}},forceY:{get:function(){return r},set:function(a){r=a}},showValues:{get:function(){return t},set:function(a){t=a}},x:{get:function(){return p},set:function(a){p=a}},y:{get:function(){return q},set:function(a){q=a}},xScale:{get:function(){return n},set:function(a){n=a}},yScale:{get:function(){return o},set:function(a){o=a}},xDomain:{get:function(){return d},set:function(a){d=a}},yDomain:{get:function(){return e},set:function(a){e=a}},xRange:{get:function(){return f},set:function(a){f=a}},yRange:{get:function(){return g},set:function(a){g=a}},valueFormat:{get:function(){return u},set:function(a){u=a}},id:{get:function(){return m},set:function(a){m=a}},rectClass:{get:function(){return w},set:function(a){w=a}},margin:{get:function(){return j},set:function(a){j.top=void 0!==a.top?a.top:j.top,j.right=void 0!==a.right?a.right:j.right,j.bottom=void 0!==a.bottom?a.bottom:j.bottom,j.left=void 0!==a.left?a.left:j.left}},color:{get:function(){return s},set:function(b){s=a.utils.getColor(b)}},duration:{get:function(){return x},set:function(a){x=a,y.reset(x)}}}),a.utils.initOptions(b),b},a.models.discreteBarChart=function(){"use strict";function b(h){return t.reset(),t.models(e),m&&t.models(f),n&&t.models(g),h.each(function(h){var l=d3.select(this);a.utils.initSVG(l);var q=a.utils.availableWidth(j,l,i),t=a.utils.availableHeight(k,l,i);if(b.update=function(){r.beforeUpdate(),l.transition().duration(s).call(b)},b.container=this,!(h&&h.length&&h.filter(function(a){return a.values.length}).length))return a.utils.noData(b,l),b;l.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale().clamp(!0);var u=l.selectAll("g.nv-wrap.nv-discreteBarWithAxes").data([h]),v=u.enter().append("g").attr("class","nvd3 nv-wrap nv-discreteBarWithAxes").append("g"),w=v.append("defs"),x=u.select("g");v.append("g").attr("class","nv-x nv-axis"),v.append("g").attr("class","nv-y nv-axis").append("g").attr("class","nv-zeroLine").append("line"),v.append("g").attr("class","nv-barsWrap"),x.attr("transform","translate("+i.left+","+i.top+")"),o&&x.select(".nv-y.nv-axis").attr("transform","translate("+q+",0)"),e.width(q).height(t);var y=x.select(".nv-barsWrap").datum(h.filter(function(a){return!a.disabled}));if(y.transition().call(e),w.append("clipPath").attr("id","nv-x-label-clip-"+e.id()).append("rect"),x.select("#nv-x-label-clip-"+e.id()+" rect").attr("width",c.rangeBand()*(p?2:1)).attr("height",16).attr("x",-c.rangeBand()/(p?1:2)),m){f.scale(c)._ticks(a.utils.calcTicksX(q/100,h)).tickSize(-t,0),x.select(".nv-x.nv-axis").attr("transform","translate(0,"+(d.range()[0]+(e.showValues()&&d.domain()[0]<0?16:0))+")"),x.select(".nv-x.nv-axis").call(f);
+var z=x.select(".nv-x.nv-axis").selectAll("g");p&&z.selectAll("text").attr("transform",function(a,b,c){return"translate(0,"+(c%2==0?"5":"17")+")"})}n&&(g.scale(d)._ticks(a.utils.calcTicksY(t/36,h)).tickSize(-q,0),x.select(".nv-y.nv-axis").call(g)),x.select(".nv-zeroLine line").attr("x1",0).attr("x2",q).attr("y1",d(0)).attr("y2",d(0))}),t.renderEnd("discreteBar chart immediate"),b}var c,d,e=a.models.discreteBar(),f=a.models.axis(),g=a.models.axis(),h=a.models.tooltip(),i={top:15,right:10,bottom:50,left:60},j=null,k=null,l=a.utils.getColor(),m=!0,n=!0,o=!1,p=!1,q=null,r=d3.dispatch("beforeUpdate","renderEnd"),s=250;f.orient("bottom").showMaxMin(!1).tickFormat(function(a){return a}),g.orient(o?"right":"left").tickFormat(d3.format(",.1f")),h.duration(0).headerEnabled(!1).valueFormatter(function(a,b){return g.tickFormat()(a,b)}).keyFormatter(function(a,b){return f.tickFormat()(a,b)});var t=a.utils.renderWatch(r,s);return e.dispatch.on("elementMouseover.tooltip",function(a){a.series={key:b.x()(a.data),value:b.y()(a.data),color:a.color},h.data(a).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(){h.hidden(!0)}),e.dispatch.on("elementMousemove.tooltip",function(){h.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=r,b.discretebar=e,b.xAxis=f,b.yAxis=g,b.tooltip=h,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return j},set:function(a){j=a}},height:{get:function(){return k},set:function(a){k=a}},staggerLabels:{get:function(){return p},set:function(a){p=a}},showXAxis:{get:function(){return m},set:function(a){m=a}},showYAxis:{get:function(){return n},set:function(a){n=a}},noData:{get:function(){return q},set:function(a){q=a}},tooltips:{get:function(){return h.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),h.enabled(!!b)}},tooltipContent:{get:function(){return h.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),h.contentGenerator(b)}},margin:{get:function(){return i},set:function(a){i.top=void 0!==a.top?a.top:i.top,i.right=void 0!==a.right?a.right:i.right,i.bottom=void 0!==a.bottom?a.bottom:i.bottom,i.left=void 0!==a.left?a.left:i.left}},duration:{get:function(){return s},set:function(a){s=a,t.reset(s),e.duration(s),f.duration(s),g.duration(s)}},color:{get:function(){return l},set:function(b){l=a.utils.getColor(b),e.color(l)}},rightAlignYAxis:{get:function(){return o},set:function(a){o=a,g.orient(a?"right":"left")}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.distribution=function(){"use strict";function b(k){return m.reset(),k.each(function(b){var k=(e-("x"===g?d.left+d.right:d.top+d.bottom),"x"==g?"y":"x"),l=d3.select(this);a.utils.initSVG(l),c=c||j;var n=l.selectAll("g.nv-distribution").data([b]),o=n.enter().append("g").attr("class","nvd3 nv-distribution"),p=(o.append("g"),n.select("g"));n.attr("transform","translate("+d.left+","+d.top+")");var q=p.selectAll("g.nv-dist").data(function(a){return a},function(a){return a.key});q.enter().append("g"),q.attr("class",function(a,b){return"nv-dist nv-series-"+b}).style("stroke",function(a,b){return i(a,b)});var r=q.selectAll("line.nv-dist"+g).data(function(a){return a.values});r.enter().append("line").attr(g+"1",function(a,b){return c(h(a,b))}).attr(g+"2",function(a,b){return c(h(a,b))}),m.transition(q.exit().selectAll("line.nv-dist"+g),"dist exit").attr(g+"1",function(a,b){return j(h(a,b))}).attr(g+"2",function(a,b){return j(h(a,b))}).style("stroke-opacity",0).remove(),r.attr("class",function(a,b){return"nv-dist"+g+" nv-dist"+g+"-"+b}).attr(k+"1",0).attr(k+"2",f),m.transition(r,"dist").attr(g+"1",function(a,b){return j(h(a,b))}).attr(g+"2",function(a,b){return j(h(a,b))}),c=j.copy()}),m.renderEnd("distribution immediate"),b}var c,d={top:0,right:0,bottom:0,left:0},e=400,f=8,g="x",h=function(a){return a[g]},i=a.utils.defaultColor(),j=d3.scale.linear(),k=250,l=d3.dispatch("renderEnd"),m=a.utils.renderWatch(l,k);return b.options=a.utils.optionsFunc.bind(b),b.dispatch=l,b.margin=function(a){return arguments.length?(d.top="undefined"!=typeof a.top?a.top:d.top,d.right="undefined"!=typeof a.right?a.right:d.right,d.bottom="undefined"!=typeof a.bottom?a.bottom:d.bottom,d.left="undefined"!=typeof a.left?a.left:d.left,b):d},b.width=function(a){return arguments.length?(e=a,b):e},b.axis=function(a){return arguments.length?(g=a,b):g},b.size=function(a){return arguments.length?(f=a,b):f},b.getData=function(a){return arguments.length?(h=d3.functor(a),b):h},b.scale=function(a){return arguments.length?(j=a,b):j},b.color=function(c){return arguments.length?(i=a.utils.getColor(c),b):i},b.duration=function(a){return arguments.length?(k=a,m.reset(k),b):k},b},a.models.furiousLegend=function(){"use strict";function b(p){function q(a,b){return"furious"!=o?"#000":m?a.disengaged?g(a,b):"#fff":m?void 0:a.disabled?g(a,b):"#fff"}function r(a,b){return m&&"furious"==o?a.disengaged?"#fff":g(a,b):a.disabled?"#fff":g(a,b)}return p.each(function(b){var p=d-c.left-c.right,s=d3.select(this);a.utils.initSVG(s);var t=s.selectAll("g.nv-legend").data([b]),u=(t.enter().append("g").attr("class","nvd3 nv-legend").append("g"),t.select("g"));t.attr("transform","translate("+c.left+","+c.top+")");var v,w=u.selectAll(".nv-series").data(function(a){return"furious"!=o?a:a.filter(function(a){return m?!0:!a.disengaged})}),x=w.enter().append("g").attr("class","nv-series");if("classic"==o)x.append("circle").style("stroke-width",2).attr("class","nv-legend-symbol").attr("r",5),v=w.select("circle");else if("furious"==o){x.append("rect").style("stroke-width",2).attr("class","nv-legend-symbol").attr("rx",3).attr("ry",3),v=w.select("rect"),x.append("g").attr("class","nv-check-box").property("innerHTML",'<path d="M0.5,5 L22.5,5 L22.5,26.5 L0.5,26.5 L0.5,5 Z" class="nv-box"></path><path d="M5.5,12.8618467 L11.9185089,19.2803556 L31,0.198864511" class="nv-check"></path>').attr("transform","translate(-10,-8)scale(0.5)");var y=w.select(".nv-check-box");y.each(function(a,b){d3.select(this).selectAll("path").attr("stroke",q(a,b))})}x.append("text").attr("text-anchor","start").attr("class","nv-legend-text").attr("dy",".32em").attr("dx","8");var z=w.select("text.nv-legend-text");w.on("mouseover",function(a,b){n.legendMouseover(a,b)}).on("mouseout",function(a,b){n.legendMouseout(a,b)}).on("click",function(a,b){n.legendClick(a,b);var c=w.data();if(k){if("classic"==o)l?(c.forEach(function(a){a.disabled=!0}),a.disabled=!1):(a.disabled=!a.disabled,c.every(function(a){return a.disabled})&&c.forEach(function(a){a.disabled=!1}));else if("furious"==o)if(m)a.disengaged=!a.disengaged,a.userDisabled=void 0==a.userDisabled?!!a.disabled:a.userDisabled,a.disabled=a.disengaged||a.userDisabled;else if(!m){a.disabled=!a.disabled,a.userDisabled=a.disabled;var d=c.filter(function(a){return!a.disengaged});d.every(function(a){return a.userDisabled})&&c.forEach(function(a){a.disabled=a.userDisabled=!1})}n.stateChange({disabled:c.map(function(a){return!!a.disabled}),disengaged:c.map(function(a){return!!a.disengaged})})}}).on("dblclick",function(a,b){if(("furious"!=o||!m)&&(n.legendDblclick(a,b),k)){var c=w.data();c.forEach(function(a){a.disabled=!0,"furious"==o&&(a.userDisabled=a.disabled)}),a.disabled=!1,"furious"==o&&(a.userDisabled=a.disabled),n.stateChange({disabled:c.map(function(a){return!!a.disabled})})}}),w.classed("nv-disabled",function(a){return a.userDisabled}),w.exit().remove(),z.attr("fill",q).text(f);var A;switch(o){case"furious":A=23;break;case"classic":A=20}if(h){var B=[];w.each(function(){var b,c=d3.select(this).select("text");try{if(b=c.node().getComputedTextLength(),0>=b)throw Error()}catch(d){b=a.utils.calcApproxTextWidth(c)}B.push(b+i)});for(var C=0,D=0,E=[];p>D&&C<B.length;)E[C]=B[C],D+=B[C++];for(0===C&&(C=1);D>p&&C>1;){E=[],C--;for(var F=0;F<B.length;F++)B[F]>(E[F%C]||0)&&(E[F%C]=B[F]);D=E.reduce(function(a,b){return a+b})}for(var G=[],H=0,I=0;C>H;H++)G[H]=I,I+=E[H];w.attr("transform",function(a,b){return"translate("+G[b%C]+","+(5+Math.floor(b/C)*A)+")"}),j?u.attr("transform","translate("+(d-c.right-D)+","+c.top+")"):u.attr("transform","translate(0,"+c.top+")"),e=c.top+c.bottom+Math.ceil(B.length/C)*A}else{var J,K=5,L=5,M=0;w.attr("transform",function(){var a=d3.select(this).select("text").node().getComputedTextLength()+i;return J=L,d<c.left+c.right+J+a&&(L=J=5,K+=A),L+=a,L>M&&(M=L),"translate("+J+","+K+")"}),u.attr("transform","translate("+(d-c.right-M)+","+c.top+")"),e=c.top+c.bottom+K+15}"furious"==o&&v.attr("width",function(a,b){return z[0][b].getComputedTextLength()+27}).attr("height",18).attr("y",-9).attr("x",-15),v.style("fill",r).style("stroke",function(a,b){return a.color||g(a,b)})}),b}var c={top:5,right:0,bottom:5,left:0},d=400,e=20,f=function(a){return a.key},g=a.utils.getColor(),h=!0,i=28,j=!0,k=!0,l=!1,m=!1,n=d3.dispatch("legendClick","legendDblclick","legendMouseover","legendMouseout","stateChange"),o="classic";return b.dispatch=n,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return d},set:function(a){d=a}},height:{get:function(){return e},set:function(a){e=a}},key:{get:function(){return f},set:function(a){f=a}},align:{get:function(){return h},set:function(a){h=a}},rightAlign:{get:function(){return j},set:function(a){j=a}},padding:{get:function(){return i},set:function(a){i=a}},updateState:{get:function(){return k},set:function(a){k=a}},radioButtonMode:{get:function(){return l},set:function(a){l=a}},expanded:{get:function(){return m},set:function(a){m=a}},vers:{get:function(){return o},set:function(a){o=a}},margin:{get:function(){return c},set:function(a){c.top=void 0!==a.top?a.top:c.top,c.right=void 0!==a.right?a.right:c.right,c.bottom=void 0!==a.bottom?a.bottom:c.bottom,c.left=void 0!==a.left?a.left:c.left}},color:{get:function(){return g},set:function(b){g=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.historicalBar=function(){"use strict";function b(x){return x.each(function(b){w.reset(),k=d3.select(this);var x=a.utils.availableWidth(h,k,g),y=a.utils.availableHeight(i,k,g);a.utils.initSVG(k),l.domain(c||d3.extent(b[0].values.map(n).concat(p))),l.range(r?e||[.5*x/b[0].values.length,x*(b[0].values.length-.5)/b[0].values.length]:e||[0,x]),m.domain(d||d3.extent(b[0].values.map(o).concat(q))).range(f||[y,0]),l.domain()[0]===l.domain()[1]&&l.domain(l.domain()[0]?[l.domain()[0]-.01*l.domain()[0],l.domain()[1]+.01*l.domain()[1]]:[-1,1]),m.domain()[0]===m.domain()[1]&&m.domain(m.domain()[0]?[m.domain()[0]+.01*m.domain()[0],m.domain()[1]-.01*m.domain()[1]]:[-1,1]);var z=k.selectAll("g.nv-wrap.nv-historicalBar-"+j).data([b[0].values]),A=z.enter().append("g").attr("class","nvd3 nv-wrap nv-historicalBar-"+j),B=A.append("defs"),C=A.append("g"),D=z.select("g");C.append("g").attr("class","nv-bars"),z.attr("transform","translate("+g.left+","+g.top+")"),k.on("click",function(a,b){u.chartClick({data:a,index:b,pos:d3.event,id:j})}),B.append("clipPath").attr("id","nv-chart-clip-path-"+j).append("rect"),z.select("#nv-chart-clip-path-"+j+" rect").attr("width",x).attr("height",y),D.attr("clip-path",s?"url(#nv-chart-clip-path-"+j+")":"");var E=z.select(".nv-bars").selectAll(".nv-bar").data(function(a){return a},function(a,b){return n(a,b)});E.exit().remove(),E.enter().append("rect").attr("x",0).attr("y",function(b,c){return a.utils.NaNtoZero(m(Math.max(0,o(b,c))))}).attr("height",function(b,c){return a.utils.NaNtoZero(Math.abs(m(o(b,c))-m(0)))}).attr("transform",function(a,c){return"translate("+(l(n(a,c))-x/b[0].values.length*.45)+",0)"}).on("mouseover",function(a,b){v&&(d3.select(this).classed("hover",!0),u.elementMouseover({data:a,index:b,color:d3.select(this).style("fill")}))}).on("mouseout",function(a,b){v&&(d3.select(this).classed("hover",!1),u.elementMouseout({data:a,index:b,color:d3.select(this).style("fill")}))}).on("mousemove",function(a,b){v&&u.elementMousemove({data:a,index:b,color:d3.select(this).style("fill")})}).on("click",function(a,b){v&&(u.elementClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation())}).on("dblclick",function(a,b){v&&(u.elementDblClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation())}),E.attr("fill",function(a,b){return t(a,b)}).attr("class",function(a,b,c){return(o(a,b)<0?"nv-bar negative":"nv-bar positive")+" nv-bar-"+c+"-"+b}).watchTransition(w,"bars").attr("transform",function(a,c){return"translate("+(l(n(a,c))-x/b[0].values.length*.45)+",0)"}).attr("width",x/b[0].values.length*.9),E.watchTransition(w,"bars").attr("y",function(b,c){var d=o(b,c)<0?m(0):m(0)-m(o(b,c))<1?m(0)-1:m(o(b,c));return a.utils.NaNtoZero(d)}).attr("height",function(b,c){return a.utils.NaNtoZero(Math.max(Math.abs(m(o(b,c))-m(0)),1))})}),w.renderEnd("historicalBar immediate"),b}var c,d,e,f,g={top:0,right:0,bottom:0,left:0},h=null,i=null,j=Math.floor(1e4*Math.random()),k=null,l=d3.scale.linear(),m=d3.scale.linear(),n=function(a){return a.x},o=function(a){return a.y},p=[],q=[0],r=!1,s=!0,t=a.utils.defaultColor(),u=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove","renderEnd"),v=!0,w=a.utils.renderWatch(u,0);return b.highlightPoint=function(a,b){k.select(".nv-bars .nv-bar-0-"+a).classed("hover",b)},b.clearHighlights=function(){k.select(".nv-bars .nv-bar.hover").classed("hover",!1)},b.dispatch=u,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return h},set:function(a){h=a}},height:{get:function(){return i},set:function(a){i=a}},forceX:{get:function(){return p},set:function(a){p=a}},forceY:{get:function(){return q},set:function(a){q=a}},padData:{get:function(){return r},set:function(a){r=a}},x:{get:function(){return n},set:function(a){n=a}},y:{get:function(){return o},set:function(a){o=a}},xScale:{get:function(){return l},set:function(a){l=a}},yScale:{get:function(){return m},set:function(a){m=a}},xDomain:{get:function(){return c},set:function(a){c=a}},yDomain:{get:function(){return d},set:function(a){d=a}},xRange:{get:function(){return e},set:function(a){e=a}},yRange:{get:function(){return f},set:function(a){f=a}},clipEdge:{get:function(){return s},set:function(a){s=a}},id:{get:function(){return j},set:function(a){j=a}},interactive:{get:function(){return v},set:function(a){v=a}},margin:{get:function(){return g},set:function(a){g.top=void 0!==a.top?a.top:g.top,g.right=void 0!==a.right?a.right:g.right,g.bottom=void 0!==a.bottom?a.bottom:g.bottom,g.left=void 0!==a.left?a.left:g.left}},color:{get:function(){return t},set:function(b){t=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.historicalBarChart=function(b){"use strict";function c(b){return b.each(function(k){z.reset(),z.models(f),q&&z.models(g),r&&z.models(h);var w=d3.select(this),A=this;a.utils.initSVG(w);var B=a.utils.availableWidth(n,w,l),C=a.utils.availableHeight(o,w,l);if(c.update=function(){w.transition().duration(y).call(c)},c.container=this,u.disabled=k.map(function(a){return!!a.disabled}),!v){var D;v={};for(D in u)v[D]=u[D]instanceof Array?u[D].slice(0):u[D]}if(!(k&&k.length&&k.filter(function(a){return a.values.length}).length))return a.utils.noData(c,w),c;w.selectAll(".nv-noData").remove(),d=f.xScale(),e=f.yScale();var E=w.selectAll("g.nv-wrap.nv-historicalBarChart").data([k]),F=E.enter().append("g").attr("class","nvd3 nv-wrap nv-historicalBarChart").append("g"),G=E.select("g");F.append("g").attr("class","nv-x nv-axis"),F.append("g").attr("class","nv-y nv-axis"),F.append("g").attr("class","nv-barsWrap"),F.append("g").attr("class","nv-legendWrap"),F.append("g").attr("class","nv-interactive"),p&&(i.width(B),G.select(".nv-legendWrap").datum(k).call(i),l.top!=i.height()&&(l.top=i.height(),C=a.utils.availableHeight(o,w,l)),E.select(".nv-legendWrap").attr("transform","translate(0,"+-l.top+")")),E.attr("transform","translate("+l.left+","+l.top+")"),s&&G.select(".nv-y.nv-axis").attr("transform","translate("+B+",0)"),t&&(j.width(B).height(C).margin({left:l.left,top:l.top}).svgContainer(w).xScale(d),E.select(".nv-interactive").call(j)),f.width(B).height(C).color(k.map(function(a,b){return a.color||m(a,b)}).filter(function(a,b){return!k[b].disabled}));var H=G.select(".nv-barsWrap").datum(k.filter(function(a){return!a.disabled}));H.transition().call(f),q&&(g.scale(d)._ticks(a.utils.calcTicksX(B/100,k)).tickSize(-C,0),G.select(".nv-x.nv-axis").attr("transform","translate(0,"+e.range()[0]+")"),G.select(".nv-x.nv-axis").transition().call(g)),r&&(h.scale(e)._ticks(a.utils.calcTicksY(C/36,k)).tickSize(-B,0),G.select(".nv-y.nv-axis").transition().call(h)),j.dispatch.on("elementMousemove",function(b){f.clearHighlights();var d,e,i,n=[];k.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(g){e=a.interactiveBisect(g.values,b.pointXValue,c.x()),f.highlightPoint(e,!0);var h=g.values[e];void 0!==h&&(void 0===d&&(d=h),void 0===i&&(i=c.xScale()(c.x()(h,e))),n.push({key:g.key,value:c.y()(h,e),color:m(g,g.seriesIndex),data:g.values[e]}))});var o=g.tickFormat()(c.x()(d,e));j.tooltip.position({left:i+l.left,top:b.mouseY+l.top}).chartContainer(A.parentNode).valueFormatter(function(a){return h.tickFormat()(a)}).data({value:o,index:e,series:n})(),j.renderGuideLine(i)}),j.dispatch.on("elementMouseout",function(){x.tooltipHide(),f.clearHighlights()}),i.dispatch.on("legendClick",function(a){a.disabled=!a.disabled,k.filter(function(a){return!a.disabled}).length||k.map(function(a){return a.disabled=!1,E.selectAll(".nv-series").classed("disabled",!1),a}),u.disabled=k.map(function(a){return!!a.disabled}),x.stateChange(u),b.transition().call(c)}),i.dispatch.on("legendDblclick",function(a){k.forEach(function(a){a.disabled=!0}),a.disabled=!1,u.disabled=k.map(function(a){return!!a.disabled}),x.stateChange(u),c.update()}),x.on("changeState",function(a){"undefined"!=typeof a.disabled&&(k.forEach(function(b,c){b.disabled=a.disabled[c]}),u.disabled=a.disabled),c.update()})}),z.renderEnd("historicalBarChart immediate"),c}var d,e,f=b||a.models.historicalBar(),g=a.models.axis(),h=a.models.axis(),i=a.models.legend(),j=a.interactiveGuideline(),k=a.models.tooltip(),l={top:30,right:90,bottom:50,left:90},m=a.utils.defaultColor(),n=null,o=null,p=!1,q=!0,r=!0,s=!1,t=!1,u={},v=null,w=null,x=d3.dispatch("tooltipHide","stateChange","changeState","renderEnd"),y=250;g.orient("bottom").tickPadding(7),h.orient(s?"right":"left"),k.duration(0).headerEnabled(!1).valueFormatter(function(a,b){return h.tickFormat()(a,b)}).headerFormatter(function(a,b){return g.tickFormat()(a,b)});var z=a.utils.renderWatch(x,0);return f.dispatch.on("elementMouseover.tooltip",function(a){a.series={key:c.x()(a.data),value:c.y()(a.data),color:a.color},k.data(a).hidden(!1)}),f.dispatch.on("elementMouseout.tooltip",function(){k.hidden(!0)}),f.dispatch.on("elementMousemove.tooltip",function(){k.position({top:d3.event.pageY,left:d3.event.pageX})()}),c.dispatch=x,c.bars=f,c.legend=i,c.xAxis=g,c.yAxis=h,c.interactiveLayer=j,c.tooltip=k,c.options=a.utils.optionsFunc.bind(c),c._options=Object.create({},{width:{get:function(){return n},set:function(a){n=a}},height:{get:function(){return o},set:function(a){o=a}},showLegend:{get:function(){return p},set:function(a){p=a}},showXAxis:{get:function(){return q},set:function(a){q=a}},showYAxis:{get:function(){return r},set:function(a){r=a}},defaultState:{get:function(){return v},set:function(a){v=a}},noData:{get:function(){return w},set:function(a){w=a}},tooltips:{get:function(){return k.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),k.enabled(!!b)}},tooltipContent:{get:function(){return k.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),k.contentGenerator(b)}},margin:{get:function(){return l},set:function(a){l.top=void 0!==a.top?a.top:l.top,l.right=void 0!==a.right?a.right:l.right,l.bottom=void 0!==a.bottom?a.bottom:l.bottom,l.left=void 0!==a.left?a.left:l.left}},color:{get:function(){return m},set:function(b){m=a.utils.getColor(b),i.color(m),f.color(m)}},duration:{get:function(){return y},set:function(a){y=a,z.reset(y),h.duration(y),g.duration(y)}},rightAlignYAxis:{get:function(){return s},set:function(a){s=a,h.orient(a?"right":"left")}},useInteractiveGuideline:{get:function(){return t},set:function(a){t=a,a===!0&&c.interactive(!1)}}}),a.utils.inheritOptions(c,f),a.utils.initOptions(c),c},a.models.ohlcBarChart=function(){var b=a.models.historicalBarChart(a.models.ohlcBar());return b.useInteractiveGuideline(!0),b.interactiveLayer.tooltip.contentGenerator(function(a){var c=a.series[0].data,d=c.open<c.close?"2ca02c":"d62728";return'<h3 style="color: #'+d+'">'+a.value+"</h3><table><tr><td>open:</td><td>"+b.yAxis.tickFormat()(c.open)+"</td></tr><tr><td>close:</td><td>"+b.yAxis.tickFormat()(c.close)+"</td></tr><tr><td>high</td><td>"+b.yAxis.tickFormat()(c.high)+"</td></tr><tr><td>low:</td><td>"+b.yAxis.tickFormat()(c.low)+"</td></tr></table>"}),b},a.models.candlestickBarChart=function(){var b=a.models.historicalBarChart(a.models.candlestickBar());return b.useInteractiveGuideline(!0),b.interactiveLayer.tooltip.contentGenerator(function(a){var c=a.series[0].data,d=c.open<c.close?"2ca02c":"d62728";return'<h3 style="color: #'+d+'">'+a.value+"</h3><table><tr><td>open:</td><td>"+b.yAxis.tickFormat()(c.open)+"</td></tr><tr><td>close:</td><td>"+b.yAxis.tickFormat()(c.close)+"</td></tr><tr><td>high</td><td>"+b.yAxis.tickFormat()(c.high)+"</td></tr><tr><td>low:</td><td>"+b.yAxis.tickFormat()(c.low)+"</td></tr></table>"}),b},a.models.legend=function(){"use strict";function b(p){function q(a,b){return"furious"!=o?"#000":m?a.disengaged?"#000":"#fff":m?void 0:(a.color||(a.color=g(a,b)),a.disabled?a.color:"#fff")}function r(a,b){return m&&"furious"==o&&a.disengaged?"#eee":a.color||g(a,b)}function s(a){return m&&"furious"==o?1:a.disabled?0:1}return p.each(function(b){var g=d-c.left-c.right,p=d3.select(this);a.utils.initSVG(p);var t=p.selectAll("g.nv-legend").data([b]),u=t.enter().append("g").attr("class","nvd3 nv-legend").append("g"),v=t.select("g");t.attr("transform","translate("+c.left+","+c.top+")");var w,x,y=v.selectAll(".nv-series").data(function(a){return"furious"!=o?a:a.filter(function(a){return m?!0:!a.disengaged})}),z=y.enter().append("g").attr("class","nv-series");switch(o){case"furious":x=23;break;case"classic":x=20}if("classic"==o)z.append("circle").style("stroke-width",2).attr("class","nv-legend-symbol").attr("r",5),w=y.select("circle");else if("furious"==o){z.append("rect").style("stroke-width",2).attr("class","nv-legend-symbol").attr("rx",3).attr("ry",3),w=y.select(".nv-legend-symbol"),z.append("g").attr("class","nv-check-box").property("innerHTML",'<path d="M0.5,5 L22.5,5 L22.5,26.5 L0.5,26.5 L0.5,5 Z" class="nv-box"></path><path d="M5.5,12.8618467 L11.9185089,19.2803556 L31,0.198864511" class="nv-check"></path>').attr("transform","translate(-10,-8)scale(0.5)");var A=y.select(".nv-check-box");A.each(function(a,b){d3.select(this).selectAll("path").attr("stroke",q(a,b))})}z.append("text").attr("text-anchor","start").attr("class","nv-legend-text").attr("dy",".32em").attr("dx","8");var B=y.select("text.nv-legend-text");y.on("mouseover",function(a,b){n.legendMouseover(a,b)}).on("mouseout",function(a,b){n.legendMouseout(a,b)}).on("click",function(a,b){n.legendClick(a,b);var c=y.data();if(k){if("classic"==o)l?(c.forEach(function(a){a.disabled=!0}),a.disabled=!1):(a.disabled=!a.disabled,c.every(function(a){return a.disabled})&&c.forEach(function(a){a.disabled=!1}));else if("furious"==o)if(m)a.disengaged=!a.disengaged,a.userDisabled=void 0==a.userDisabled?!!a.disabled:a.userDisabled,a.disabled=a.disengaged||a.userDisabled;else if(!m){a.disabled=!a.disabled,a.userDisabled=a.disabled;var d=c.filter(function(a){return!a.disengaged});d.every(function(a){return a.userDisabled})&&c.forEach(function(a){a.disabled=a.userDisabled=!1})}n.stateChange({disabled:c.map(function(a){return!!a.disabled}),disengaged:c.map(function(a){return!!a.disengaged})})}}).on("dblclick",function(a,b){if(("furious"!=o||!m)&&(n.legendDblclick(a,b),k)){var c=y.data();c.forEach(function(a){a.disabled=!0,"furious"==o&&(a.userDisabled=a.disabled)}),a.disabled=!1,"furious"==o&&(a.userDisabled=a.disabled),n.stateChange({disabled:c.map(function(a){return!!a.disabled})})}}),y.classed("nv-disabled",function(a){return a.userDisabled}),y.exit().remove(),B.attr("fill",q).text(f);var C=0;if(h){var D=[];y.each(function(){var b,c=d3.select(this).select("text");try{if(b=c.node().getComputedTextLength(),0>=b)throw Error()}catch(d){b=a.utils.calcApproxTextWidth(c)}D.push(b+i)});var E=0,F=[];for(C=0;g>C&&E<D.length;)F[E]=D[E],C+=D[E++];for(0===E&&(E=1);C>g&&E>1;){F=[],E--;for(var G=0;G<D.length;G++)D[G]>(F[G%E]||0)&&(F[G%E]=D[G]);C=F.reduce(function(a,b){return a+b})}for(var H=[],I=0,J=0;E>I;I++)H[I]=J,J+=F[I];y.attr("transform",function(a,b){return"translate("+H[b%E]+","+(5+Math.floor(b/E)*x)+")"}),j?v.attr("transform","translate("+(d-c.right-C)+","+c.top+")"):v.attr("transform","translate(0,"+c.top+")"),e=c.top+c.bottom+Math.ceil(D.length/E)*x}else{var K,L=5,M=5,N=0;y.attr("transform",function(){var a=d3.select(this).select("text").node().getComputedTextLength()+i;return K=M,d<c.left+c.right+K+a&&(M=K=5,L+=x),M+=a,M>N&&(N=M),K+N>C&&(C=K+N),"translate("+K+","+L+")"}),v.attr("transform","translate("+(d-c.right-N)+","+c.top+")"),e=c.top+c.bottom+L+15}if("furious"==o){w.attr("width",function(a,b){return B[0][b].getComputedTextLength()+27}).attr("height",18).attr("y",-9).attr("x",-15),u.insert("rect",":first-child").attr("class","nv-legend-bg").attr("fill","#eee").attr("opacity",0);var O=v.select(".nv-legend-bg");O.transition().duration(300).attr("x",-x).attr("width",C+x-12).attr("height",e+10).attr("y",-c.top-10).attr("opacity",m?1:0)}w.style("fill",r).style("fill-opacity",s).style("stroke",r)}),b}var c={top:5,right:0,bottom:5,left:0},d=400,e=20,f=function(a){return a.key},g=a.utils.getColor(),h=!0,i=32,j=!0,k=!0,l=!1,m=!1,n=d3.dispatch("legendClick","legendDblclick","legendMouseover","legendMouseout","stateChange"),o="classic";return b.dispatch=n,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return d},set:function(a){d=a}},height:{get:function(){return e},set:function(a){e=a}},key:{get:function(){return f},set:function(a){f=a}},align:{get:function(){return h},set:function(a){h=a}},rightAlign:{get:function(){return j},set:function(a){j=a}},padding:{get:function(){return i},set:function(a){i=a}},updateState:{get:function(){return k},set:function(a){k=a}},radioButtonMode:{get:function(){return l},set:function(a){l=a}},expanded:{get:function(){return m},set:function(a){m=a}},vers:{get:function(){return o},set:function(a){o=a}},margin:{get:function(){return c},set:function(a){c.top=void 0!==a.top?a.top:c.top,c.right=void 0!==a.right?a.right:c.right,c.bottom=void 0!==a.bottom?a.bottom:c.bottom,c.left=void 0!==a.left?a.left:c.left}},color:{get:function(){return g},set:function(b){g=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.line=function(){"use strict";function b(r){return v.reset(),v.models(e),r.each(function(b){i=d3.select(this);var r=a.utils.availableWidth(g,i,f),s=a.utils.availableHeight(h,i,f);a.utils.initSVG(i),c=e.xScale(),d=e.yScale(),t=t||c,u=u||d;var w=i.selectAll("g.nv-wrap.nv-line").data([b]),x=w.enter().append("g").attr("class","nvd3 nv-wrap nv-line"),y=x.append("defs"),z=x.append("g"),A=w.select("g");z.append("g").attr("class","nv-groups"),z.append("g").attr("class","nv-scatterWrap"),w.attr("transform","translate("+f.left+","+f.top+")"),e.width(r).height(s);var B=w.select(".nv-scatterWrap");B.call(e),y.append("clipPath").attr("id","nv-edge-clip-"+e.id()).append("rect"),w.select("#nv-edge-clip-"+e.id()+" rect").attr("width",r).attr("height",s>0?s:0),A.attr("clip-path",p?"url(#nv-edge-clip-"+e.id()+")":""),B.attr("clip-path",p?"url(#nv-edge-clip-"+e.id()+")":"");var C=w.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a){return a.key});C.enter().append("g").style("stroke-opacity",1e-6).style("stroke-width",function(a){return a.strokeWidth||j}).style("fill-opacity",1e-6),C.exit().remove(),C.attr("class",function(a,b){return(a.classed||"")+" nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}).style("fill",function(a,b){return k(a,b)}).style("stroke",function(a,b){return k(a,b)}),C.watchTransition(v,"line: groups").style("stroke-opacity",1).style("fill-opacity",function(a){return a.fillOpacity||.5});var D=C.selectAll("path.nv-area").data(function(a){return o(a)?[a]:[]});D.enter().append("path").attr("class","nv-area").attr("d",function(b){return d3.svg.area().interpolate(q).defined(n).x(function(b,c){return a.utils.NaNtoZero(t(l(b,c)))}).y0(function(b,c){return a.utils.NaNtoZero(u(m(b,c)))}).y1(function(){return u(d.domain()[0]<=0?d.domain()[1]>=0?0:d.domain()[1]:d.domain()[0])}).apply(this,[b.values])}),C.exit().selectAll("path.nv-area").remove(),D.watchTransition(v,"line: areaPaths").attr("d",function(b){return d3.svg.area().interpolate(q).defined(n).x(function(b,d){return a.utils.NaNtoZero(c(l(b,d)))}).y0(function(b,c){return a.utils.NaNtoZero(d(m(b,c)))}).y1(function(){return d(d.domain()[0]<=0?d.domain()[1]>=0?0:d.domain()[1]:d.domain()[0])}).apply(this,[b.values])});var E=C.selectAll("path.nv-line").data(function(a){return[a.values]});E.enter().append("path").attr("class","nv-line").attr("d",d3.svg.line().interpolate(q).defined(n).x(function(b,c){return a.utils.NaNtoZero(t(l(b,c)))}).y(function(b,c){return a.utils.NaNtoZero(u(m(b,c)))})),E.watchTransition(v,"line: linePaths").attr("d",d3.svg.line().interpolate(q).defined(n).x(function(b,d){return a.utils.NaNtoZero(c(l(b,d)))}).y(function(b,c){return a.utils.NaNtoZero(d(m(b,c)))})),t=c.copy(),u=d.copy()}),v.renderEnd("line immediate"),b}var c,d,e=a.models.scatter(),f={top:0,right:0,bottom:0,left:0},g=960,h=500,i=null,j=1.5,k=a.utils.defaultColor(),l=function(a){return a.x},m=function(a){return a.y},n=function(a,b){return!isNaN(m(a,b))&&null!==m(a,b)},o=function(a){return a.area},p=!1,q="linear",r=250,s=d3.dispatch("elementClick","elementMouseover","elementMouseout","renderEnd");e.pointSize(16).pointDomain([16,256]);var t,u,v=a.utils.renderWatch(s,r);return b.dispatch=s,b.scatter=e,e.dispatch.on("elementClick",function(){s.elementClick.apply(this,arguments)}),e.dispatch.on("elementMouseover",function(){s.elementMouseover.apply(this,arguments)}),e.dispatch.on("elementMouseout",function(){s.elementMouseout.apply(this,arguments)}),b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return g},set:function(a){g=a}},height:{get:function(){return h},set:function(a){h=a}},defined:{get:function(){return n},set:function(a){n=a}},interpolate:{get:function(){return q},set:function(a){q=a}},clipEdge:{get:function(){return p},set:function(a){p=a}},margin:{get:function(){return f},set:function(a){f.top=void 0!==a.top?a.top:f.top,f.right=void 0!==a.right?a.right:f.right,f.bottom=void 0!==a.bottom?a.bottom:f.bottom,f.left=void 0!==a.left?a.left:f.left}},duration:{get:function(){return r},set:function(a){r=a,v.reset(r),e.duration(r)}},isArea:{get:function(){return o},set:function(a){o=d3.functor(a)}},x:{get:function(){return l},set:function(a){l=a,e.x(a)}},y:{get:function(){return m},set:function(a){m=a,e.y(a)}},color:{get:function(){return k},set:function(b){k=a.utils.getColor(b),e.color(k)}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.lineChart=function(){"use strict";function b(j){return y.reset(),y.models(e),p&&y.models(f),q&&y.models(g),j.each(function(j){var v=d3.select(this),y=this;a.utils.initSVG(v);var B=a.utils.availableWidth(m,v,k),C=a.utils.availableHeight(n,v,k);if(b.update=function(){0===x?v.call(b):v.transition().duration(x).call(b)},b.container=this,t.setter(A(j),b.update).getter(z(j)).update(),t.disabled=j.map(function(a){return!!a.disabled}),!u){var D;u={};for(D in t)u[D]=t[D]instanceof Array?t[D].slice(0):t[D]
+}if(!(j&&j.length&&j.filter(function(a){return a.values.length}).length))return a.utils.noData(b,v),b;v.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale();var E=v.selectAll("g.nv-wrap.nv-lineChart").data([j]),F=E.enter().append("g").attr("class","nvd3 nv-wrap nv-lineChart").append("g"),G=E.select("g");F.append("rect").style("opacity",0),F.append("g").attr("class","nv-x nv-axis"),F.append("g").attr("class","nv-y nv-axis"),F.append("g").attr("class","nv-linesWrap"),F.append("g").attr("class","nv-legendWrap"),F.append("g").attr("class","nv-interactive"),G.select("rect").attr("width",B).attr("height",C>0?C:0),o&&(h.width(B),G.select(".nv-legendWrap").datum(j).call(h),k.top!=h.height()&&(k.top=h.height(),C=a.utils.availableHeight(n,v,k)),E.select(".nv-legendWrap").attr("transform","translate(0,"+-k.top+")")),E.attr("transform","translate("+k.left+","+k.top+")"),r&&G.select(".nv-y.nv-axis").attr("transform","translate("+B+",0)"),s&&(i.width(B).height(C).margin({left:k.left,top:k.top}).svgContainer(v).xScale(c),E.select(".nv-interactive").call(i)),e.width(B).height(C).color(j.map(function(a,b){return a.color||l(a,b)}).filter(function(a,b){return!j[b].disabled}));var H=G.select(".nv-linesWrap").datum(j.filter(function(a){return!a.disabled}));H.call(e),p&&(f.scale(c)._ticks(a.utils.calcTicksX(B/100,j)).tickSize(-C,0),G.select(".nv-x.nv-axis").attr("transform","translate(0,"+d.range()[0]+")"),G.select(".nv-x.nv-axis").call(f)),q&&(g.scale(d)._ticks(a.utils.calcTicksY(C/36,j)).tickSize(-B,0),G.select(".nv-y.nv-axis").call(g)),h.dispatch.on("stateChange",function(a){for(var c in a)t[c]=a[c];w.stateChange(t),b.update()}),i.dispatch.on("elementMousemove",function(c){e.clearHighlights();var d,h,m,n=[];if(j.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(f,g){h=a.interactiveBisect(f.values,c.pointXValue,b.x());var i=f.values[h],j=b.y()(i,h);null!=j&&e.highlightPoint(g,h,!0),void 0!==i&&(void 0===d&&(d=i),void 0===m&&(m=b.xScale()(b.x()(i,h))),n.push({key:f.key,value:j,color:l(f,f.seriesIndex)}))}),n.length>2){var o=b.yScale().invert(c.mouseY),p=Math.abs(b.yScale().domain()[0]-b.yScale().domain()[1]),q=.03*p,r=a.nearestValueIndex(n.map(function(a){return a.value}),o,q);null!==r&&(n[r].highlight=!0)}var s=f.tickFormat()(b.x()(d,h));i.tooltip.position({left:c.mouseX+k.left,top:c.mouseY+k.top}).chartContainer(y.parentNode).valueFormatter(function(a){return null==a?"N/A":g.tickFormat()(a)}).data({value:s,index:h,series:n})(),i.renderGuideLine(m)}),i.dispatch.on("elementClick",function(c){var d,f=[];j.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(e){var g=a.interactiveBisect(e.values,c.pointXValue,b.x()),h=e.values[g];if("undefined"!=typeof h){"undefined"==typeof d&&(d=b.xScale()(b.x()(h,g)));var i=b.yScale()(b.y()(h,g));f.push({point:h,pointIndex:g,pos:[d,i],seriesIndex:e.seriesIndex,series:e})}}),e.dispatch.elementClick(f)}),i.dispatch.on("elementMouseout",function(){e.clearHighlights()}),w.on("changeState",function(a){"undefined"!=typeof a.disabled&&j.length===a.disabled.length&&(j.forEach(function(b,c){b.disabled=a.disabled[c]}),t.disabled=a.disabled),b.update()})}),y.renderEnd("lineChart immediate"),b}var c,d,e=a.models.line(),f=a.models.axis(),g=a.models.axis(),h=a.models.legend(),i=a.interactiveGuideline(),j=a.models.tooltip(),k={top:30,right:20,bottom:50,left:60},l=a.utils.defaultColor(),m=null,n=null,o=!0,p=!0,q=!0,r=!1,s=!1,t=a.utils.state(),u=null,v=null,w=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState","renderEnd"),x=250;f.orient("bottom").tickPadding(7),g.orient(r?"right":"left"),j.valueFormatter(function(a,b){return g.tickFormat()(a,b)}).headerFormatter(function(a,b){return f.tickFormat()(a,b)});var y=a.utils.renderWatch(w,x),z=function(a){return function(){return{active:a.map(function(a){return!a.disabled})}}},A=function(a){return function(b){void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return e.dispatch.on("elementMouseover.tooltip",function(a){j.data(a).position(a.pos).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(){j.hidden(!0)}),b.dispatch=w,b.lines=e,b.legend=h,b.xAxis=f,b.yAxis=g,b.interactiveLayer=i,b.tooltip=j,b.dispatch=w,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return m},set:function(a){m=a}},height:{get:function(){return n},set:function(a){n=a}},showLegend:{get:function(){return o},set:function(a){o=a}},showXAxis:{get:function(){return p},set:function(a){p=a}},showYAxis:{get:function(){return q},set:function(a){q=a}},defaultState:{get:function(){return u},set:function(a){u=a}},noData:{get:function(){return v},set:function(a){v=a}},tooltips:{get:function(){return j.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),j.enabled(!!b)}},tooltipContent:{get:function(){return j.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),j.contentGenerator(b)}},margin:{get:function(){return k},set:function(a){k.top=void 0!==a.top?a.top:k.top,k.right=void 0!==a.right?a.right:k.right,k.bottom=void 0!==a.bottom?a.bottom:k.bottom,k.left=void 0!==a.left?a.left:k.left}},duration:{get:function(){return x},set:function(a){x=a,y.reset(x),e.duration(x),f.duration(x),g.duration(x)}},color:{get:function(){return l},set:function(b){l=a.utils.getColor(b),h.color(l),e.color(l)}},rightAlignYAxis:{get:function(){return r},set:function(a){r=a,g.orient(r?"right":"left")}},useInteractiveGuideline:{get:function(){return s},set:function(a){s=a,s&&(e.interactive(!1),e.useVoronoi(!1))}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.linePlusBarChart=function(){"use strict";function b(v){return v.each(function(v){function J(a){var b=+("e"==a),c=b?1:-1,d=X/3;return"M"+.5*c+","+d+"A6,6 0 0 "+b+" "+6.5*c+","+(d+6)+"V"+(2*d-6)+"A6,6 0 0 "+b+" "+.5*c+","+2*d+"ZM"+2.5*c+","+(d+8)+"V"+(2*d-8)+"M"+4.5*c+","+(d+8)+"V"+(2*d-8)}function S(){u.empty()||u.extent(I),kb.data([u.empty()?e.domain():I]).each(function(a){var b=e(a[0])-e.range()[0],c=e.range()[1]-e(a[1]);d3.select(this).select(".left").attr("width",0>b?0:b),d3.select(this).select(".right").attr("x",e(a[1])).attr("width",0>c?0:c)})}function T(){I=u.empty()?null:u.extent(),c=u.empty()?e.domain():u.extent(),K.brush({extent:c,brush:u}),S(),l.width(V).height(W).color(v.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!v[b].disabled&&v[b].bar})),j.width(V).height(W).color(v.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!v[b].disabled&&!v[b].bar}));var b=db.select(".nv-focus .nv-barsWrap").datum(Z.length?Z.map(function(a){return{key:a.key,values:a.values.filter(function(a,b){return l.x()(a,b)>=c[0]&&l.x()(a,b)<=c[1]})}}):[{values:[]}]),h=db.select(".nv-focus .nv-linesWrap").datum($[0].disabled?[{values:[]}]:$.map(function(a){return{area:a.area,fillOpacity:a.fillOpacity,key:a.key,values:a.values.filter(function(a,b){return j.x()(a,b)>=c[0]&&j.x()(a,b)<=c[1]})}}));d=Z.length?l.xScale():j.xScale(),n.scale(d)._ticks(a.utils.calcTicksX(V/100,v)).tickSize(-W,0),n.domain([Math.ceil(c[0]),Math.floor(c[1])]),db.select(".nv-x.nv-axis").transition().duration(L).call(n),b.transition().duration(L).call(l),h.transition().duration(L).call(j),db.select(".nv-focus .nv-x.nv-axis").attr("transform","translate(0,"+f.range()[0]+")"),p.scale(f)._ticks(a.utils.calcTicksY(W/36,v)).tickSize(-V,0),q.scale(g)._ticks(a.utils.calcTicksY(W/36,v)).tickSize(Z.length?0:-V,0),db.select(".nv-focus .nv-y1.nv-axis").style("opacity",Z.length?1:0),db.select(".nv-focus .nv-y2.nv-axis").style("opacity",$.length&&!$[0].disabled?1:0).attr("transform","translate("+d.range()[1]+",0)"),db.select(".nv-focus .nv-y1.nv-axis").transition().duration(L).call(p),db.select(".nv-focus .nv-y2.nv-axis").transition().duration(L).call(q)}var U=d3.select(this);a.utils.initSVG(U);var V=a.utils.availableWidth(y,U,w),W=a.utils.availableHeight(z,U,w)-(E?H:0),X=H-x.top-x.bottom;if(b.update=function(){U.transition().duration(L).call(b)},b.container=this,M.setter(R(v),b.update).getter(Q(v)).update(),M.disabled=v.map(function(a){return!!a.disabled}),!N){var Y;N={};for(Y in M)N[Y]=M[Y]instanceof Array?M[Y].slice(0):M[Y]}if(!(v&&v.length&&v.filter(function(a){return a.values.length}).length))return a.utils.noData(b,U),b;U.selectAll(".nv-noData").remove();var Z=v.filter(function(a){return!a.disabled&&a.bar}),$=v.filter(function(a){return!a.bar});d=l.xScale(),e=o.scale(),f=l.yScale(),g=j.yScale(),h=m.yScale(),i=k.yScale();var _=v.filter(function(a){return!a.disabled&&a.bar}).map(function(a){return a.values.map(function(a,b){return{x:A(a,b),y:B(a,b)}})}),ab=v.filter(function(a){return!a.disabled&&!a.bar}).map(function(a){return a.values.map(function(a,b){return{x:A(a,b),y:B(a,b)}})});d.range([0,V]),e.domain(d3.extent(d3.merge(_.concat(ab)),function(a){return a.x})).range([0,V]);var bb=U.selectAll("g.nv-wrap.nv-linePlusBar").data([v]),cb=bb.enter().append("g").attr("class","nvd3 nv-wrap nv-linePlusBar").append("g"),db=bb.select("g");cb.append("g").attr("class","nv-legendWrap");var eb=cb.append("g").attr("class","nv-focus");eb.append("g").attr("class","nv-x nv-axis"),eb.append("g").attr("class","nv-y1 nv-axis"),eb.append("g").attr("class","nv-y2 nv-axis"),eb.append("g").attr("class","nv-barsWrap"),eb.append("g").attr("class","nv-linesWrap");var fb=cb.append("g").attr("class","nv-context");if(fb.append("g").attr("class","nv-x nv-axis"),fb.append("g").attr("class","nv-y1 nv-axis"),fb.append("g").attr("class","nv-y2 nv-axis"),fb.append("g").attr("class","nv-barsWrap"),fb.append("g").attr("class","nv-linesWrap"),fb.append("g").attr("class","nv-brushBackground"),fb.append("g").attr("class","nv-x nv-brush"),D){var gb=t.align()?V/2:V,hb=t.align()?gb:0;t.width(gb),db.select(".nv-legendWrap").datum(v.map(function(a){return a.originalKey=void 0===a.originalKey?a.key:a.originalKey,a.key=a.originalKey+(a.bar?O:P),a})).call(t),w.top!=t.height()&&(w.top=t.height(),W=a.utils.availableHeight(z,U,w)-H),db.select(".nv-legendWrap").attr("transform","translate("+hb+","+-w.top+")")}bb.attr("transform","translate("+w.left+","+w.top+")"),db.select(".nv-context").style("display",E?"initial":"none"),m.width(V).height(X).color(v.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!v[b].disabled&&v[b].bar})),k.width(V).height(X).color(v.map(function(a,b){return a.color||C(a,b)}).filter(function(a,b){return!v[b].disabled&&!v[b].bar}));var ib=db.select(".nv-context .nv-barsWrap").datum(Z.length?Z:[{values:[]}]),jb=db.select(".nv-context .nv-linesWrap").datum($[0].disabled?[{values:[]}]:$);db.select(".nv-context").attr("transform","translate(0,"+(W+w.bottom+x.top)+")"),ib.transition().call(m),jb.transition().call(k),G&&(o._ticks(a.utils.calcTicksX(V/100,v)).tickSize(-X,0),db.select(".nv-context .nv-x.nv-axis").attr("transform","translate(0,"+h.range()[0]+")"),db.select(".nv-context .nv-x.nv-axis").transition().call(o)),F&&(r.scale(h)._ticks(X/36).tickSize(-V,0),s.scale(i)._ticks(X/36).tickSize(Z.length?0:-V,0),db.select(".nv-context .nv-y3.nv-axis").style("opacity",Z.length?1:0).attr("transform","translate(0,"+e.range()[0]+")"),db.select(".nv-context .nv-y2.nv-axis").style("opacity",$.length?1:0).attr("transform","translate("+e.range()[1]+",0)"),db.select(".nv-context .nv-y1.nv-axis").transition().call(r),db.select(".nv-context .nv-y2.nv-axis").transition().call(s)),u.x(e).on("brush",T),I&&u.extent(I);var kb=db.select(".nv-brushBackground").selectAll("g").data([I||u.extent()]),lb=kb.enter().append("g");lb.append("rect").attr("class","left").attr("x",0).attr("y",0).attr("height",X),lb.append("rect").attr("class","right").attr("x",0).attr("y",0).attr("height",X);var mb=db.select(".nv-x.nv-brush").call(u);mb.selectAll("rect").attr("height",X),mb.selectAll(".resize").append("path").attr("d",J),t.dispatch.on("stateChange",function(a){for(var c in a)M[c]=a[c];K.stateChange(M),b.update()}),K.on("changeState",function(a){"undefined"!=typeof a.disabled&&(v.forEach(function(b,c){b.disabled=a.disabled[c]}),M.disabled=a.disabled),b.update()}),T()}),b}var c,d,e,f,g,h,i,j=a.models.line(),k=a.models.line(),l=a.models.historicalBar(),m=a.models.historicalBar(),n=a.models.axis(),o=a.models.axis(),p=a.models.axis(),q=a.models.axis(),r=a.models.axis(),s=a.models.axis(),t=a.models.legend(),u=d3.svg.brush(),v=a.models.tooltip(),w={top:30,right:30,bottom:30,left:60},x={top:0,right:30,bottom:20,left:60},y=null,z=null,A=function(a){return a.x},B=function(a){return a.y},C=a.utils.defaultColor(),D=!0,E=!0,F=!1,G=!0,H=50,I=null,J=null,K=d3.dispatch("brush","stateChange","changeState"),L=0,M=a.utils.state(),N=null,O=" (left axis)",P=" (right axis)";j.clipEdge(!0),k.interactive(!1),n.orient("bottom").tickPadding(5),p.orient("left"),q.orient("right"),o.orient("bottom").tickPadding(5),r.orient("left"),s.orient("right"),v.headerEnabled(!0).headerFormatter(function(a,b){return n.tickFormat()(a,b)});var Q=function(a){return function(){return{active:a.map(function(a){return!a.disabled})}}},R=function(a){return function(b){void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return j.dispatch.on("elementMouseover.tooltip",function(a){v.duration(100).valueFormatter(function(a,b){return q.tickFormat()(a,b)}).data(a).position(a.pos).hidden(!1)}),j.dispatch.on("elementMouseout.tooltip",function(){v.hidden(!0)}),l.dispatch.on("elementMouseover.tooltip",function(a){a.value=b.x()(a.data),a.series={value:b.y()(a.data),color:a.color},v.duration(0).valueFormatter(function(a,b){return p.tickFormat()(a,b)}).data(a).hidden(!1)}),l.dispatch.on("elementMouseout.tooltip",function(){v.hidden(!0)}),l.dispatch.on("elementMousemove.tooltip",function(){v.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=K,b.legend=t,b.lines=j,b.lines2=k,b.bars=l,b.bars2=m,b.xAxis=n,b.x2Axis=o,b.y1Axis=p,b.y2Axis=q,b.y3Axis=r,b.y4Axis=s,b.tooltip=v,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return y},set:function(a){y=a}},height:{get:function(){return z},set:function(a){z=a}},showLegend:{get:function(){return D},set:function(a){D=a}},brushExtent:{get:function(){return I},set:function(a){I=a}},noData:{get:function(){return J},set:function(a){J=a}},focusEnable:{get:function(){return E},set:function(a){E=a}},focusHeight:{get:function(){return H},set:function(a){H=a}},focusShowAxisX:{get:function(){return G},set:function(a){G=a}},focusShowAxisY:{get:function(){return F},set:function(a){F=a}},legendLeftAxisHint:{get:function(){return O},set:function(a){O=a}},legendRightAxisHint:{get:function(){return P},set:function(a){P=a}},tooltips:{get:function(){return v.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),v.enabled(!!b)}},tooltipContent:{get:function(){return v.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),v.contentGenerator(b)}},margin:{get:function(){return w},set:function(a){w.top=void 0!==a.top?a.top:w.top,w.right=void 0!==a.right?a.right:w.right,w.bottom=void 0!==a.bottom?a.bottom:w.bottom,w.left=void 0!==a.left?a.left:w.left}},duration:{get:function(){return L},set:function(a){L=a}},color:{get:function(){return C},set:function(b){C=a.utils.getColor(b),t.color(C)}},x:{get:function(){return A},set:function(a){A=a,j.x(a),k.x(a),l.x(a),m.x(a)}},y:{get:function(){return B},set:function(a){B=a,j.y(a),k.y(a),l.y(a),m.y(a)}}}),a.utils.inheritOptions(b,j),a.utils.initOptions(b),b},a.models.lineWithFocusChart=function(){"use strict";function b(o){return o.each(function(o){function z(a){var b=+("e"==a),c=b?1:-1,d=M/3;return"M"+.5*c+","+d+"A6,6 0 0 "+b+" "+6.5*c+","+(d+6)+"V"+(2*d-6)+"A6,6 0 0 "+b+" "+.5*c+","+2*d+"ZM"+2.5*c+","+(d+8)+"V"+(2*d-8)+"M"+4.5*c+","+(d+8)+"V"+(2*d-8)}function G(){n.empty()||n.extent(y),U.data([n.empty()?e.domain():y]).each(function(a){var b=e(a[0])-c.range()[0],d=K-e(a[1]);d3.select(this).select(".left").attr("width",0>b?0:b),d3.select(this).select(".right").attr("x",e(a[1])).attr("width",0>d?0:d)})}function H(){y=n.empty()?null:n.extent();var a=n.empty()?e.domain():n.extent();if(!(Math.abs(a[0]-a[1])<=1)){A.brush({extent:a,brush:n}),G();var b=Q.select(".nv-focus .nv-linesWrap").datum(o.filter(function(a){return!a.disabled}).map(function(b){return{key:b.key,area:b.area,values:b.values.filter(function(b,c){return g.x()(b,c)>=a[0]&&g.x()(b,c)<=a[1]})}}));b.transition().duration(B).call(g),Q.select(".nv-focus .nv-x.nv-axis").transition().duration(B).call(i),Q.select(".nv-focus .nv-y.nv-axis").transition().duration(B).call(j)}}var I=d3.select(this),J=this;a.utils.initSVG(I);var K=a.utils.availableWidth(t,I,q),L=a.utils.availableHeight(u,I,q)-v,M=v-r.top-r.bottom;if(b.update=function(){I.transition().duration(B).call(b)},b.container=this,C.setter(F(o),b.update).getter(E(o)).update(),C.disabled=o.map(function(a){return!!a.disabled}),!D){var N;D={};for(N in C)D[N]=C[N]instanceof Array?C[N].slice(0):C[N]}if(!(o&&o.length&&o.filter(function(a){return a.values.length}).length))return a.utils.noData(b,I),b;I.selectAll(".nv-noData").remove(),c=g.xScale(),d=g.yScale(),e=h.xScale(),f=h.yScale();var O=I.selectAll("g.nv-wrap.nv-lineWithFocusChart").data([o]),P=O.enter().append("g").attr("class","nvd3 nv-wrap nv-lineWithFocusChart").append("g"),Q=O.select("g");P.append("g").attr("class","nv-legendWrap");var R=P.append("g").attr("class","nv-focus");R.append("g").attr("class","nv-x nv-axis"),R.append("g").attr("class","nv-y nv-axis"),R.append("g").attr("class","nv-linesWrap"),R.append("g").attr("class","nv-interactive");var S=P.append("g").attr("class","nv-context");S.append("g").attr("class","nv-x nv-axis"),S.append("g").attr("class","nv-y nv-axis"),S.append("g").attr("class","nv-linesWrap"),S.append("g").attr("class","nv-brushBackground"),S.append("g").attr("class","nv-x nv-brush"),x&&(m.width(K),Q.select(".nv-legendWrap").datum(o).call(m),q.top!=m.height()&&(q.top=m.height(),L=a.utils.availableHeight(u,I,q)-v),Q.select(".nv-legendWrap").attr("transform","translate(0,"+-q.top+")")),O.attr("transform","translate("+q.left+","+q.top+")"),w&&(p.width(K).height(L).margin({left:q.left,top:q.top}).svgContainer(I).xScale(c),O.select(".nv-interactive").call(p)),g.width(K).height(L).color(o.map(function(a,b){return a.color||s(a,b)}).filter(function(a,b){return!o[b].disabled})),h.defined(g.defined()).width(K).height(M).color(o.map(function(a,b){return a.color||s(a,b)}).filter(function(a,b){return!o[b].disabled})),Q.select(".nv-context").attr("transform","translate(0,"+(L+q.bottom+r.top)+")");var T=Q.select(".nv-context .nv-linesWrap").datum(o.filter(function(a){return!a.disabled}));d3.transition(T).call(h),i.scale(c)._ticks(a.utils.calcTicksX(K/100,o)).tickSize(-L,0),j.scale(d)._ticks(a.utils.calcTicksY(L/36,o)).tickSize(-K,0),Q.select(".nv-focus .nv-x.nv-axis").attr("transform","translate(0,"+L+")"),n.x(e).on("brush",function(){H()}),y&&n.extent(y);var U=Q.select(".nv-brushBackground").selectAll("g").data([y||n.extent()]),V=U.enter().append("g");V.append("rect").attr("class","left").attr("x",0).attr("y",0).attr("height",M),V.append("rect").attr("class","right").attr("x",0).attr("y",0).attr("height",M);var W=Q.select(".nv-x.nv-brush").call(n);W.selectAll("rect").attr("height",M),W.selectAll(".resize").append("path").attr("d",z),H(),k.scale(e)._ticks(a.utils.calcTicksX(K/100,o)).tickSize(-M,0),Q.select(".nv-context .nv-x.nv-axis").attr("transform","translate(0,"+f.range()[0]+")"),d3.transition(Q.select(".nv-context .nv-x.nv-axis")).call(k),l.scale(f)._ticks(a.utils.calcTicksY(M/36,o)).tickSize(-K,0),d3.transition(Q.select(".nv-context .nv-y.nv-axis")).call(l),Q.select(".nv-context .nv-x.nv-axis").attr("transform","translate(0,"+f.range()[0]+")"),m.dispatch.on("stateChange",function(a){for(var c in a)C[c]=a[c];A.stateChange(C),b.update()}),p.dispatch.on("elementMousemove",function(c){g.clearHighlights();var d,f,h,k=[];if(o.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(i,j){var l=n.empty()?e.domain():n.extent(),m=i.values.filter(function(a,b){return g.x()(a,b)>=l[0]&&g.x()(a,b)<=l[1]});f=a.interactiveBisect(m,c.pointXValue,g.x());var o=m[f],p=b.y()(o,f);null!=p&&g.highlightPoint(j,f,!0),void 0!==o&&(void 0===d&&(d=o),void 0===h&&(h=b.xScale()(b.x()(o,f))),k.push({key:i.key,value:b.y()(o,f),color:s(i,i.seriesIndex)}))}),k.length>2){var l=b.yScale().invert(c.mouseY),m=Math.abs(b.yScale().domain()[0]-b.yScale().domain()[1]),r=.03*m,t=a.nearestValueIndex(k.map(function(a){return a.value}),l,r);null!==t&&(k[t].highlight=!0)}var u=i.tickFormat()(b.x()(d,f));p.tooltip.position({left:c.mouseX+q.left,top:c.mouseY+q.top}).chartContainer(J.parentNode).valueFormatter(function(a){return null==a?"N/A":j.tickFormat()(a)}).data({value:u,index:f,series:k})(),p.renderGuideLine(h)}),p.dispatch.on("elementMouseout",function(){g.clearHighlights()}),A.on("changeState",function(a){"undefined"!=typeof a.disabled&&o.forEach(function(b,c){b.disabled=a.disabled[c]}),b.update()})}),b}var c,d,e,f,g=a.models.line(),h=a.models.line(),i=a.models.axis(),j=a.models.axis(),k=a.models.axis(),l=a.models.axis(),m=a.models.legend(),n=d3.svg.brush(),o=a.models.tooltip(),p=a.interactiveGuideline(),q={top:30,right:30,bottom:30,left:60},r={top:0,right:30,bottom:20,left:60},s=a.utils.defaultColor(),t=null,u=null,v=50,w=!1,x=!0,y=null,z=null,A=d3.dispatch("brush","stateChange","changeState"),B=250,C=a.utils.state(),D=null;g.clipEdge(!0).duration(0),h.interactive(!1),i.orient("bottom").tickPadding(5),j.orient("left"),k.orient("bottom").tickPadding(5),l.orient("left"),o.valueFormatter(function(a,b){return j.tickFormat()(a,b)}).headerFormatter(function(a,b){return i.tickFormat()(a,b)});var E=function(a){return function(){return{active:a.map(function(a){return!a.disabled})}}},F=function(a){return function(b){void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return g.dispatch.on("elementMouseover.tooltip",function(a){o.data(a).position(a.pos).hidden(!1)}),g.dispatch.on("elementMouseout.tooltip",function(){o.hidden(!0)}),b.dispatch=A,b.legend=m,b.lines=g,b.lines2=h,b.xAxis=i,b.yAxis=j,b.x2Axis=k,b.y2Axis=l,b.interactiveLayer=p,b.tooltip=o,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return t},set:function(a){t=a}},height:{get:function(){return u},set:function(a){u=a}},focusHeight:{get:function(){return v},set:function(a){v=a}},showLegend:{get:function(){return x},set:function(a){x=a}},brushExtent:{get:function(){return y},set:function(a){y=a}},defaultState:{get:function(){return D},set:function(a){D=a}},noData:{get:function(){return z},set:function(a){z=a}},tooltips:{get:function(){return o.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),o.enabled(!!b)}},tooltipContent:{get:function(){return o.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),o.contentGenerator(b)}},margin:{get:function(){return q},set:function(a){q.top=void 0!==a.top?a.top:q.top,q.right=void 0!==a.right?a.right:q.right,q.bottom=void 0!==a.bottom?a.bottom:q.bottom,q.left=void 0!==a.left?a.left:q.left}},color:{get:function(){return s},set:function(b){s=a.utils.getColor(b),m.color(s)}},interpolate:{get:function(){return g.interpolate()},set:function(a){g.interpolate(a),h.interpolate(a)}},xTickFormat:{get:function(){return i.tickFormat()},set:function(a){i.tickFormat(a),k.tickFormat(a)}},yTickFormat:{get:function(){return j.tickFormat()},set:function(a){j.tickFormat(a),l.tickFormat(a)}},duration:{get:function(){return B},set:function(a){B=a,j.duration(B),l.duration(B),i.duration(B),k.duration(B)}},x:{get:function(){return g.x()},set:function(a){g.x(a),h.x(a)}},y:{get:function(){return g.y()},set:function(a){g.y(a),h.y(a)}},useInteractiveGuideline:{get:function(){return w},set:function(a){w=a,w&&(g.interactive(!1),g.useVoronoi(!1))}}}),a.utils.inheritOptions(b,g),a.utils.initOptions(b),b},a.models.multiBar=function(){"use strict";function b(E){return C.reset(),E.each(function(b){var E=k-j.left-j.right,F=l-j.top-j.bottom;p=d3.select(this),a.utils.initSVG(p);var G=0;if(x&&b.length&&(x=[{values:b[0].values.map(function(a){return{x:a.x,y:0,series:a.series,size:.01}})}]),u){var H=d3.layout.stack().offset(v).values(function(a){return a.values}).y(r)(!b.length&&x?x:b);H.forEach(function(a,c){a.nonStackable?(b[c].nonStackableSeries=G++,H[c]=b[c]):c>0&&H[c-1].nonStackable&&H[c].values.map(function(a,b){a.y0-=H[c-1].values[b].y,a.y1=a.y0+a.y})}),b=H}b.forEach(function(a,b){a.values.forEach(function(c){c.series=b,c.key=a.key})}),u&&b[0].values.map(function(a,c){var d=0,e=0;b.map(function(a,f){if(!b[f].nonStackable){var g=a.values[c];g.size=Math.abs(g.y),g.y<0?(g.y1=e,e-=g.size):(g.y1=g.size+d,d+=g.size)}})});var I=d&&e?[]:b.map(function(a,b){return a.values.map(function(a,c){return{x:q(a,c),y:r(a,c),y0:a.y0,y1:a.y1,idx:b}})});m.domain(d||d3.merge(I).map(function(a){return a.x})).rangeBands(f||[0,E],A),n.domain(e||d3.extent(d3.merge(I).map(function(a){var c=a.y;return u&&!b[a.idx].nonStackable&&(c=a.y>0?a.y1:a.y1+a.y),c}).concat(s))).range(g||[F,0]),m.domain()[0]===m.domain()[1]&&m.domain(m.domain()[0]?[m.domain()[0]-.01*m.domain()[0],m.domain()[1]+.01*m.domain()[1]]:[-1,1]),n.domain()[0]===n.domain()[1]&&n.domain(n.domain()[0]?[n.domain()[0]+.01*n.domain()[0],n.domain()[1]-.01*n.domain()[1]]:[-1,1]),h=h||m,i=i||n;var J=p.selectAll("g.nv-wrap.nv-multibar").data([b]),K=J.enter().append("g").attr("class","nvd3 nv-wrap nv-multibar"),L=K.append("defs"),M=K.append("g"),N=J.select("g");M.append("g").attr("class","nv-groups"),J.attr("transform","translate("+j.left+","+j.top+")"),L.append("clipPath").attr("id","nv-edge-clip-"+o).append("rect"),J.select("#nv-edge-clip-"+o+" rect").attr("width",E).attr("height",F),N.attr("clip-path",t?"url(#nv-edge-clip-"+o+")":"");var O=J.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a,b){return b});O.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6);var P=C.transition(O.exit().selectAll("rect.nv-bar"),"multibarExit",Math.min(100,z)).attr("y",function(a){var c=i(0)||0;return u&&b[a.series]&&!b[a.series].nonStackable&&(c=i(a.y0)),c}).attr("height",0).remove();P.delay&&P.delay(function(a,b){var c=b*(z/(D+1))-b;return c}),O.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}).style("fill",function(a,b){return w(a,b)}).style("stroke",function(a,b){return w(a,b)}),O.style("stroke-opacity",1).style("fill-opacity",.75);var Q=O.selectAll("rect.nv-bar").data(function(a){return x&&!b.length?x.values:a.values});Q.exit().remove();Q.enter().append("rect").attr("class",function(a,b){return r(a,b)<0?"nv-bar negative":"nv-bar positive"}).attr("x",function(a,c,d){return u&&!b[d].nonStackable?0:d*m.rangeBand()/b.length}).attr("y",function(a,c,d){return i(u&&!b[d].nonStackable?a.y0:0)||0}).attr("height",0).attr("width",function(a,c,d){return m.rangeBand()/(u&&!b[d].nonStackable?1:b.length)}).attr("transform",function(a,b){return"translate("+m(q(a,b))+",0)"});Q.style("fill",function(a,b,c){return w(a,c,b)}).style("stroke",function(a,b,c){return w(a,c,b)}).on("mouseover",function(a,b){d3.select(this).classed("hover",!0),B.elementMouseover({data:a,index:b,color:d3.select(this).style("fill")})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),B.elementMouseout({data:a,index:b,color:d3.select(this).style("fill")})}).on("mousemove",function(a,b){B.elementMousemove({data:a,index:b,color:d3.select(this).style("fill")})}).on("click",function(a,b){B.elementClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()}).on("dblclick",function(a,b){B.elementDblClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()}),Q.attr("class",function(a,b){return r(a,b)<0?"nv-bar negative":"nv-bar positive"}).attr("transform",function(a,b){return"translate("+m(q(a,b))+",0)"}),y&&(c||(c=b.map(function(){return!0})),Q.style("fill",function(a,b,d){return d3.rgb(y(a,b)).darker(c.map(function(a,b){return b}).filter(function(a,b){return!c[b]})[d]).toString()}).style("stroke",function(a,b,d){return d3.rgb(y(a,b)).darker(c.map(function(a,b){return b}).filter(function(a,b){return!c[b]})[d]).toString()}));var R=Q.watchTransition(C,"multibar",Math.min(250,z)).delay(function(a,c){return c*z/b[0].values.length});u?R.attr("y",function(a,c,d){var e=0;return e=b[d].nonStackable?r(a,c)<0?n(0):n(0)-n(r(a,c))<-1?n(0)-1:n(r(a,c))||0:n(a.y1)}).attr("height",function(a,c,d){return b[d].nonStackable?Math.max(Math.abs(n(r(a,c))-n(0)),1)||0:Math.max(Math.abs(n(a.y+a.y0)-n(a.y0)),1)}).attr("x",function(a,c,d){var e=0;return b[d].nonStackable&&(e=a.series*m.rangeBand()/b.length,b.length!==G&&(e=b[d].nonStackableSeries*m.rangeBand()/(2*G))),e}).attr("width",function(a,c,d){if(b[d].nonStackable){var e=m.rangeBand()/G;return b.length!==G&&(e=m.rangeBand()/(2*G)),e}return m.rangeBand()}):R.attr("x",function(a){return a.series*m.rangeBand()/b.length}).attr("width",m.rangeBand()/b.length).attr("y",function(a,b){return r(a,b)<0?n(0):n(0)-n(r(a,b))<1?n(0)-1:n(r(a,b))||0}).attr("height",function(a,b){return Math.max(Math.abs(n(r(a,b))-n(0)),1)||0}),h=m.copy(),i=n.copy(),b[0]&&b[0].values&&(D=b[0].values.length)}),C.renderEnd("multibar immediate"),b}var c,d,e,f,g,h,i,j={top:0,right:0,bottom:0,left:0},k=960,l=500,m=d3.scale.ordinal(),n=d3.scale.linear(),o=Math.floor(1e4*Math.random()),p=null,q=function(a){return a.x},r=function(a){return a.y},s=[0],t=!0,u=!1,v="zero",w=a.utils.defaultColor(),x=!1,y=null,z=500,A=.1,B=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove","renderEnd"),C=a.utils.renderWatch(B,z),D=0;return b.dispatch=B,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return k},set:function(a){k=a}},height:{get:function(){return l},set:function(a){l=a}},x:{get:function(){return q},set:function(a){q=a}},y:{get:function(){return r},set:function(a){r=a}},xScale:{get:function(){return m},set:function(a){m=a}},yScale:{get:function(){return n},set:function(a){n=a}},xDomain:{get:function(){return d},set:function(a){d=a}},yDomain:{get:function(){return e},set:function(a){e=a}},xRange:{get:function(){return f},set:function(a){f=a}},yRange:{get:function(){return g},set:function(a){g=a}},forceY:{get:function(){return s},set:function(a){s=a}},stacked:{get:function(){return u},set:function(a){u=a}},stackOffset:{get:function(){return v},set:function(a){v=a}},clipEdge:{get:function(){return t},set:function(a){t=a}},disabled:{get:function(){return c},set:function(a){c=a}},id:{get:function(){return o},set:function(a){o=a}},hideable:{get:function(){return x},set:function(a){x=a}},groupSpacing:{get:function(){return A},set:function(a){A=a}},margin:{get:function(){return j},set:function(a){j.top=void 0!==a.top?a.top:j.top,j.right=void 0!==a.right?a.right:j.right,j.bottom=void 0!==a.bottom?a.bottom:j.bottom,j.left=void 0!==a.left?a.left:j.left}},duration:{get:function(){return z},set:function(a){z=a,C.reset(z)}},color:{get:function(){return w},set:function(b){w=a.utils.getColor(b)}},barColor:{get:function(){return y},set:function(b){y=b?a.utils.getColor(b):null}}}),a.utils.initOptions(b),b},a.models.multiBarChart=function(){"use strict";function b(j){return D.reset(),D.models(e),r&&D.models(f),s&&D.models(g),j.each(function(j){var z=d3.select(this);a.utils.initSVG(z);var D=a.utils.availableWidth(l,z,k),H=a.utils.availableHeight(m,z,k);if(b.update=function(){0===C?z.call(b):z.transition().duration(C).call(b)},b.container=this,x.setter(G(j),b.update).getter(F(j)).update(),x.disabled=j.map(function(a){return!!a.disabled}),!y){var I;y={};for(I in x)y[I]=x[I]instanceof Array?x[I].slice(0):x[I]}if(!(j&&j.length&&j.filter(function(a){return a.values.length}).length))return a.utils.noData(b,z),b;z.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale();
+var J=z.selectAll("g.nv-wrap.nv-multiBarWithLegend").data([j]),K=J.enter().append("g").attr("class","nvd3 nv-wrap nv-multiBarWithLegend").append("g"),L=J.select("g");if(K.append("g").attr("class","nv-x nv-axis"),K.append("g").attr("class","nv-y nv-axis"),K.append("g").attr("class","nv-barsWrap"),K.append("g").attr("class","nv-legendWrap"),K.append("g").attr("class","nv-controlsWrap"),q&&(h.width(D-B()),L.select(".nv-legendWrap").datum(j).call(h),k.top!=h.height()&&(k.top=h.height(),H=a.utils.availableHeight(m,z,k)),L.select(".nv-legendWrap").attr("transform","translate("+B()+","+-k.top+")")),o){var M=[{key:p.grouped||"Grouped",disabled:e.stacked()},{key:p.stacked||"Stacked",disabled:!e.stacked()}];i.width(B()).color(["#444","#444","#444"]),L.select(".nv-controlsWrap").datum(M).attr("transform","translate(0,"+-k.top+")").call(i)}J.attr("transform","translate("+k.left+","+k.top+")"),t&&L.select(".nv-y.nv-axis").attr("transform","translate("+D+",0)"),e.disabled(j.map(function(a){return a.disabled})).width(D).height(H).color(j.map(function(a,b){return a.color||n(a,b)}).filter(function(a,b){return!j[b].disabled}));var N=L.select(".nv-barsWrap").datum(j.filter(function(a){return!a.disabled}));if(N.call(e),r){f.scale(c)._ticks(a.utils.calcTicksX(D/100,j)).tickSize(-H,0),L.select(".nv-x.nv-axis").attr("transform","translate(0,"+d.range()[0]+")"),L.select(".nv-x.nv-axis").call(f);var O=L.select(".nv-x.nv-axis > g").selectAll("g");if(O.selectAll("line, text").style("opacity",1),v){var P=function(a,b){return"translate("+a+","+b+")"},Q=5,R=17;O.selectAll("text").attr("transform",function(a,b,c){return P(0,c%2==0?Q:R)});var S=d3.selectAll(".nv-x.nv-axis .nv-wrap g g text")[0].length;L.selectAll(".nv-x.nv-axis .nv-axisMaxMin text").attr("transform",function(a,b){return P(0,0===b||S%2!==0?R:Q)})}u&&O.filter(function(a,b){return b%Math.ceil(j[0].values.length/(D/100))!==0}).selectAll("text, line").style("opacity",0),w&&O.selectAll(".tick text").attr("transform","rotate("+w+" 0,0)").style("text-anchor",w>0?"start":"end"),L.select(".nv-x.nv-axis").selectAll("g.nv-axisMaxMin text").style("opacity",1)}s&&(g.scale(d)._ticks(a.utils.calcTicksY(H/36,j)).tickSize(-D,0),L.select(".nv-y.nv-axis").call(g)),h.dispatch.on("stateChange",function(a){for(var c in a)x[c]=a[c];A.stateChange(x),b.update()}),i.dispatch.on("legendClick",function(a){if(a.disabled){switch(M=M.map(function(a){return a.disabled=!0,a}),a.disabled=!1,a.key){case"Grouped":case p.grouped:e.stacked(!1);break;case"Stacked":case p.stacked:e.stacked(!0)}x.stacked=e.stacked(),A.stateChange(x),b.update()}}),A.on("changeState",function(a){"undefined"!=typeof a.disabled&&(j.forEach(function(b,c){b.disabled=a.disabled[c]}),x.disabled=a.disabled),"undefined"!=typeof a.stacked&&(e.stacked(a.stacked),x.stacked=a.stacked,E=a.stacked),b.update()})}),D.renderEnd("multibarchart immediate"),b}var c,d,e=a.models.multiBar(),f=a.models.axis(),g=a.models.axis(),h=a.models.legend(),i=a.models.legend(),j=a.models.tooltip(),k={top:30,right:20,bottom:50,left:60},l=null,m=null,n=a.utils.defaultColor(),o=!0,p={},q=!0,r=!0,s=!0,t=!1,u=!0,v=!1,w=0,x=a.utils.state(),y=null,z=null,A=d3.dispatch("stateChange","changeState","renderEnd"),B=function(){return o?180:0},C=250;x.stacked=!1,e.stacked(!1),f.orient("bottom").tickPadding(7).showMaxMin(!1).tickFormat(function(a){return a}),g.orient(t?"right":"left").tickFormat(d3.format(",.1f")),j.duration(0).valueFormatter(function(a,b){return g.tickFormat()(a,b)}).headerFormatter(function(a,b){return f.tickFormat()(a,b)}),i.updateState(!1);var D=a.utils.renderWatch(A),E=!1,F=function(a){return function(){return{active:a.map(function(a){return!a.disabled}),stacked:E}}},G=function(a){return function(b){void 0!==b.stacked&&(E=b.stacked),void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return e.dispatch.on("elementMouseover.tooltip",function(a){a.value=b.x()(a.data),a.series={key:a.data.key,value:b.y()(a.data),color:a.color},j.data(a).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(){j.hidden(!0)}),e.dispatch.on("elementMousemove.tooltip",function(){j.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=A,b.multibar=e,b.legend=h,b.controls=i,b.xAxis=f,b.yAxis=g,b.state=x,b.tooltip=j,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return l},set:function(a){l=a}},height:{get:function(){return m},set:function(a){m=a}},showLegend:{get:function(){return q},set:function(a){q=a}},showControls:{get:function(){return o},set:function(a){o=a}},controlLabels:{get:function(){return p},set:function(a){p=a}},showXAxis:{get:function(){return r},set:function(a){r=a}},showYAxis:{get:function(){return s},set:function(a){s=a}},defaultState:{get:function(){return y},set:function(a){y=a}},noData:{get:function(){return z},set:function(a){z=a}},reduceXTicks:{get:function(){return u},set:function(a){u=a}},rotateLabels:{get:function(){return w},set:function(a){w=a}},staggerLabels:{get:function(){return v},set:function(a){v=a}},tooltips:{get:function(){return j.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),j.enabled(!!b)}},tooltipContent:{get:function(){return j.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),j.contentGenerator(b)}},margin:{get:function(){return k},set:function(a){k.top=void 0!==a.top?a.top:k.top,k.right=void 0!==a.right?a.right:k.right,k.bottom=void 0!==a.bottom?a.bottom:k.bottom,k.left=void 0!==a.left?a.left:k.left}},duration:{get:function(){return C},set:function(a){C=a,e.duration(C),f.duration(C),g.duration(C),D.reset(C)}},color:{get:function(){return n},set:function(b){n=a.utils.getColor(b),h.color(n)}},rightAlignYAxis:{get:function(){return t},set:function(a){t=a,g.orient(t?"right":"left")}},barColor:{get:function(){return e.barColor},set:function(a){e.barColor(a),h.color(function(a,b){return d3.rgb("#ccc").darker(1.5*b).toString()})}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.multiBarHorizontal=function(){"use strict";function b(m){return E.reset(),m.each(function(b){var m=k-j.left-j.right,C=l-j.top-j.bottom;n=d3.select(this),a.utils.initSVG(n),w&&(b=d3.layout.stack().offset("zero").values(function(a){return a.values}).y(r)(b)),b.forEach(function(a,b){a.values.forEach(function(c){c.series=b,c.key=a.key})}),w&&b[0].values.map(function(a,c){var d=0,e=0;b.map(function(a){var b=a.values[c];b.size=Math.abs(b.y),b.y<0?(b.y1=e-b.size,e-=b.size):(b.y1=d,d+=b.size)})});var F=d&&e?[]:b.map(function(a){return a.values.map(function(a,b){return{x:q(a,b),y:r(a,b),y0:a.y0,y1:a.y1}})});o.domain(d||d3.merge(F).map(function(a){return a.x})).rangeBands(f||[0,C],A),p.domain(e||d3.extent(d3.merge(F).map(function(a){return w?a.y>0?a.y1+a.y:a.y1:a.y}).concat(t))),p.range(x&&!w?g||[p.domain()[0]<0?z:0,m-(p.domain()[1]>0?z:0)]:g||[0,m]),h=h||o,i=i||d3.scale.linear().domain(p.domain()).range([p(0),p(0)]);{var G=d3.select(this).selectAll("g.nv-wrap.nv-multibarHorizontal").data([b]),H=G.enter().append("g").attr("class","nvd3 nv-wrap nv-multibarHorizontal"),I=(H.append("defs"),H.append("g"));G.select("g")}I.append("g").attr("class","nv-groups"),G.attr("transform","translate("+j.left+","+j.top+")");var J=G.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a,b){return b});J.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),J.exit().watchTransition(E,"multibarhorizontal: exit groups").style("stroke-opacity",1e-6).style("fill-opacity",1e-6).remove(),J.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}).style("fill",function(a,b){return u(a,b)}).style("stroke",function(a,b){return u(a,b)}),J.watchTransition(E,"multibarhorizontal: groups").style("stroke-opacity",1).style("fill-opacity",.75);var K=J.selectAll("g.nv-bar").data(function(a){return a.values});K.exit().remove();var L=K.enter().append("g").attr("transform",function(a,c,d){return"translate("+i(w?a.y0:0)+","+(w?0:d*o.rangeBand()/b.length+o(q(a,c)))+")"});L.append("rect").attr("width",0).attr("height",o.rangeBand()/(w?1:b.length)),K.on("mouseover",function(a,b){d3.select(this).classed("hover",!0),D.elementMouseover({data:a,index:b,color:d3.select(this).style("fill")})}).on("mouseout",function(a,b){d3.select(this).classed("hover",!1),D.elementMouseout({data:a,index:b,color:d3.select(this).style("fill")})}).on("mouseout",function(a,b){D.elementMouseout({data:a,index:b,color:d3.select(this).style("fill")})}).on("mousemove",function(a,b){D.elementMousemove({data:a,index:b,color:d3.select(this).style("fill")})}).on("click",function(a,b){D.elementClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()}).on("dblclick",function(a,b){D.elementDblClick({data:a,index:b,color:d3.select(this).style("fill")}),d3.event.stopPropagation()}),s(b[0],0)&&(L.append("polyline"),K.select("polyline").attr("fill","none").attr("points",function(a,c){var d=s(a,c),e=.8*o.rangeBand()/(2*(w?1:b.length));d=d.length?d:[-Math.abs(d),Math.abs(d)],d=d.map(function(a){return p(a)-p(0)});var f=[[d[0],-e],[d[0],e],[d[0],0],[d[1],0],[d[1],-e],[d[1],e]];return f.map(function(a){return a.join(",")}).join(" ")}).attr("transform",function(a,c){var d=o.rangeBand()/(2*(w?1:b.length));return"translate("+(r(a,c)<0?0:p(r(a,c))-p(0))+", "+d+")"})),L.append("text"),x&&!w?(K.select("text").attr("text-anchor",function(a,b){return r(a,b)<0?"end":"start"}).attr("y",o.rangeBand()/(2*b.length)).attr("dy",".32em").text(function(a,b){var c=B(r(a,b)),d=s(a,b);return void 0===d?c:d.length?c+"+"+B(Math.abs(d[1]))+"-"+B(Math.abs(d[0])):c+"±"+B(Math.abs(d))}),K.watchTransition(E,"multibarhorizontal: bars").select("text").attr("x",function(a,b){return r(a,b)<0?-4:p(r(a,b))-p(0)+4})):K.selectAll("text").text(""),y&&!w?(L.append("text").classed("nv-bar-label",!0),K.select("text.nv-bar-label").attr("text-anchor",function(a,b){return r(a,b)<0?"start":"end"}).attr("y",o.rangeBand()/(2*b.length)).attr("dy",".32em").text(function(a,b){return q(a,b)}),K.watchTransition(E,"multibarhorizontal: bars").select("text.nv-bar-label").attr("x",function(a,b){return r(a,b)<0?p(0)-p(r(a,b))+4:-4})):K.selectAll("text.nv-bar-label").text(""),K.attr("class",function(a,b){return r(a,b)<0?"nv-bar negative":"nv-bar positive"}),v&&(c||(c=b.map(function(){return!0})),K.style("fill",function(a,b,d){return d3.rgb(v(a,b)).darker(c.map(function(a,b){return b}).filter(function(a,b){return!c[b]})[d]).toString()}).style("stroke",function(a,b,d){return d3.rgb(v(a,b)).darker(c.map(function(a,b){return b}).filter(function(a,b){return!c[b]})[d]).toString()})),w?K.watchTransition(E,"multibarhorizontal: bars").attr("transform",function(a,b){return"translate("+p(a.y1)+","+o(q(a,b))+")"}).select("rect").attr("width",function(a,b){return Math.abs(p(r(a,b)+a.y0)-p(a.y0))}).attr("height",o.rangeBand()):K.watchTransition(E,"multibarhorizontal: bars").attr("transform",function(a,c){return"translate("+p(r(a,c)<0?r(a,c):0)+","+(a.series*o.rangeBand()/b.length+o(q(a,c)))+")"}).select("rect").attr("height",o.rangeBand()/b.length).attr("width",function(a,b){return Math.max(Math.abs(p(r(a,b))-p(0)),1)}),h=o.copy(),i=p.copy()}),E.renderEnd("multibarHorizontal immediate"),b}var c,d,e,f,g,h,i,j={top:0,right:0,bottom:0,left:0},k=960,l=500,m=Math.floor(1e4*Math.random()),n=null,o=d3.scale.ordinal(),p=d3.scale.linear(),q=function(a){return a.x},r=function(a){return a.y},s=function(a){return a.yErr},t=[0],u=a.utils.defaultColor(),v=null,w=!1,x=!1,y=!1,z=60,A=.1,B=d3.format(",.2f"),C=250,D=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove","renderEnd"),E=a.utils.renderWatch(D,C);return b.dispatch=D,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return k},set:function(a){k=a}},height:{get:function(){return l},set:function(a){l=a}},x:{get:function(){return q},set:function(a){q=a}},y:{get:function(){return r},set:function(a){r=a}},yErr:{get:function(){return s},set:function(a){s=a}},xScale:{get:function(){return o},set:function(a){o=a}},yScale:{get:function(){return p},set:function(a){p=a}},xDomain:{get:function(){return d},set:function(a){d=a}},yDomain:{get:function(){return e},set:function(a){e=a}},xRange:{get:function(){return f},set:function(a){f=a}},yRange:{get:function(){return g},set:function(a){g=a}},forceY:{get:function(){return t},set:function(a){t=a}},stacked:{get:function(){return w},set:function(a){w=a}},showValues:{get:function(){return x},set:function(a){x=a}},disabled:{get:function(){return c},set:function(a){c=a}},id:{get:function(){return m},set:function(a){m=a}},valueFormat:{get:function(){return B},set:function(a){B=a}},valuePadding:{get:function(){return z},set:function(a){z=a}},groupSpacing:{get:function(){return A},set:function(a){A=a}},margin:{get:function(){return j},set:function(a){j.top=void 0!==a.top?a.top:j.top,j.right=void 0!==a.right?a.right:j.right,j.bottom=void 0!==a.bottom?a.bottom:j.bottom,j.left=void 0!==a.left?a.left:j.left}},duration:{get:function(){return C},set:function(a){C=a,E.reset(C)}},color:{get:function(){return u},set:function(b){u=a.utils.getColor(b)}},barColor:{get:function(){return v},set:function(b){v=b?a.utils.getColor(b):null}}}),a.utils.initOptions(b),b},a.models.multiBarHorizontalChart=function(){"use strict";function b(j){return C.reset(),C.models(e),r&&C.models(f),s&&C.models(g),j.each(function(j){var w=d3.select(this);a.utils.initSVG(w);var C=a.utils.availableWidth(l,w,k),D=a.utils.availableHeight(m,w,k);if(b.update=function(){w.transition().duration(z).call(b)},b.container=this,t=e.stacked(),u.setter(B(j),b.update).getter(A(j)).update(),u.disabled=j.map(function(a){return!!a.disabled}),!v){var E;v={};for(E in u)v[E]=u[E]instanceof Array?u[E].slice(0):u[E]}if(!(j&&j.length&&j.filter(function(a){return a.values.length}).length))return a.utils.noData(b,w),b;w.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale();var F=w.selectAll("g.nv-wrap.nv-multiBarHorizontalChart").data([j]),G=F.enter().append("g").attr("class","nvd3 nv-wrap nv-multiBarHorizontalChart").append("g"),H=F.select("g");if(G.append("g").attr("class","nv-x nv-axis"),G.append("g").attr("class","nv-y nv-axis").append("g").attr("class","nv-zeroLine").append("line"),G.append("g").attr("class","nv-barsWrap"),G.append("g").attr("class","nv-legendWrap"),G.append("g").attr("class","nv-controlsWrap"),q&&(h.width(C-y()),H.select(".nv-legendWrap").datum(j).call(h),k.top!=h.height()&&(k.top=h.height(),D=a.utils.availableHeight(m,w,k)),H.select(".nv-legendWrap").attr("transform","translate("+y()+","+-k.top+")")),o){var I=[{key:p.grouped||"Grouped",disabled:e.stacked()},{key:p.stacked||"Stacked",disabled:!e.stacked()}];i.width(y()).color(["#444","#444","#444"]),H.select(".nv-controlsWrap").datum(I).attr("transform","translate(0,"+-k.top+")").call(i)}F.attr("transform","translate("+k.left+","+k.top+")"),e.disabled(j.map(function(a){return a.disabled})).width(C).height(D).color(j.map(function(a,b){return a.color||n(a,b)}).filter(function(a,b){return!j[b].disabled}));var J=H.select(".nv-barsWrap").datum(j.filter(function(a){return!a.disabled}));if(J.transition().call(e),r){f.scale(c)._ticks(a.utils.calcTicksY(D/24,j)).tickSize(-C,0),H.select(".nv-x.nv-axis").call(f);var K=H.select(".nv-x.nv-axis").selectAll("g");K.selectAll("line, text")}s&&(g.scale(d)._ticks(a.utils.calcTicksX(C/100,j)).tickSize(-D,0),H.select(".nv-y.nv-axis").attr("transform","translate(0,"+D+")"),H.select(".nv-y.nv-axis").call(g)),H.select(".nv-zeroLine line").attr("x1",d(0)).attr("x2",d(0)).attr("y1",0).attr("y2",-D),h.dispatch.on("stateChange",function(a){for(var c in a)u[c]=a[c];x.stateChange(u),b.update()}),i.dispatch.on("legendClick",function(a){if(a.disabled){switch(I=I.map(function(a){return a.disabled=!0,a}),a.disabled=!1,a.key){case"Grouped":e.stacked(!1);break;case"Stacked":e.stacked(!0)}u.stacked=e.stacked(),x.stateChange(u),t=e.stacked(),b.update()}}),x.on("changeState",function(a){"undefined"!=typeof a.disabled&&(j.forEach(function(b,c){b.disabled=a.disabled[c]}),u.disabled=a.disabled),"undefined"!=typeof a.stacked&&(e.stacked(a.stacked),u.stacked=a.stacked,t=a.stacked),b.update()})}),C.renderEnd("multibar horizontal chart immediate"),b}var c,d,e=a.models.multiBarHorizontal(),f=a.models.axis(),g=a.models.axis(),h=a.models.legend().height(30),i=a.models.legend().height(30),j=a.models.tooltip(),k={top:30,right:20,bottom:50,left:60},l=null,m=null,n=a.utils.defaultColor(),o=!0,p={},q=!0,r=!0,s=!0,t=!1,u=a.utils.state(),v=null,w=null,x=d3.dispatch("stateChange","changeState","renderEnd"),y=function(){return o?180:0},z=250;u.stacked=!1,e.stacked(t),f.orient("left").tickPadding(5).showMaxMin(!1).tickFormat(function(a){return a}),g.orient("bottom").tickFormat(d3.format(",.1f")),j.duration(0).valueFormatter(function(a,b){return g.tickFormat()(a,b)}).headerFormatter(function(a,b){return f.tickFormat()(a,b)}),i.updateState(!1);var A=function(a){return function(){return{active:a.map(function(a){return!a.disabled}),stacked:t}}},B=function(a){return function(b){void 0!==b.stacked&&(t=b.stacked),void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}},C=a.utils.renderWatch(x,z);return e.dispatch.on("elementMouseover.tooltip",function(a){a.value=b.x()(a.data),a.series={key:a.data.key,value:b.y()(a.data),color:a.color},j.data(a).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(){j.hidden(!0)}),e.dispatch.on("elementMousemove.tooltip",function(){j.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=x,b.multibar=e,b.legend=h,b.controls=i,b.xAxis=f,b.yAxis=g,b.state=u,b.tooltip=j,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return l},set:function(a){l=a}},height:{get:function(){return m},set:function(a){m=a}},showLegend:{get:function(){return q},set:function(a){q=a}},showControls:{get:function(){return o},set:function(a){o=a}},controlLabels:{get:function(){return p},set:function(a){p=a}},showXAxis:{get:function(){return r},set:function(a){r=a}},showYAxis:{get:function(){return s},set:function(a){s=a}},defaultState:{get:function(){return v},set:function(a){v=a}},noData:{get:function(){return w},set:function(a){w=a}},tooltips:{get:function(){return j.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),j.enabled(!!b)}},tooltipContent:{get:function(){return j.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),j.contentGenerator(b)}},margin:{get:function(){return k},set:function(a){k.top=void 0!==a.top?a.top:k.top,k.right=void 0!==a.right?a.right:k.right,k.bottom=void 0!==a.bottom?a.bottom:k.bottom,k.left=void 0!==a.left?a.left:k.left}},duration:{get:function(){return z},set:function(a){z=a,C.reset(z),e.duration(z),f.duration(z),g.duration(z)}},color:{get:function(){return n},set:function(b){n=a.utils.getColor(b),h.color(n)}},barColor:{get:function(){return e.barColor},set:function(a){e.barColor(a),h.color(function(a,b){return d3.rgb("#ccc").darker(1.5*b).toString()})}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.multiChart=function(){"use strict";function b(j){return j.each(function(j){function k(a){var b=2===j[a.seriesIndex].yAxis?z:y;a.value=a.point.x,a.series={value:a.point.y,color:a.point.color},B.duration(100).valueFormatter(function(a,c){return b.tickFormat()(a,c)}).data(a).position(a.pos).hidden(!1)}function l(a){var b=2===j[a.seriesIndex].yAxis?z:y;a.point.x=v.x()(a.point),a.point.y=v.y()(a.point),B.duration(100).valueFormatter(function(a,c){return b.tickFormat()(a,c)}).data(a).position(a.pos).hidden(!1)}function n(a){var b=2===j[a.data.series].yAxis?z:y;a.value=t.x()(a.data),a.series={value:t.y()(a.data),color:a.color},B.duration(0).valueFormatter(function(a,c){return b.tickFormat()(a,c)}).data(a).hidden(!1)}var C=d3.select(this);a.utils.initSVG(C),b.update=function(){C.transition().call(b)},b.container=this;var D=a.utils.availableWidth(g,C,e),E=a.utils.availableHeight(h,C,e),F=j.filter(function(a){return"line"==a.type&&1==a.yAxis}),G=j.filter(function(a){return"line"==a.type&&2==a.yAxis}),H=j.filter(function(a){return"bar"==a.type&&1==a.yAxis}),I=j.filter(function(a){return"bar"==a.type&&2==a.yAxis}),J=j.filter(function(a){return"area"==a.type&&1==a.yAxis}),K=j.filter(function(a){return"area"==a.type&&2==a.yAxis});if(!(j&&j.length&&j.filter(function(a){return a.values.length}).length))return a.utils.noData(b,C),b;C.selectAll(".nv-noData").remove();var L=j.filter(function(a){return!a.disabled&&1==a.yAxis}).map(function(a){return a.values.map(function(a){return{x:a.x,y:a.y}})}),M=j.filter(function(a){return!a.disabled&&2==a.yAxis}).map(function(a){return a.values.map(function(a){return{x:a.x,y:a.y}})});o.domain(d3.extent(d3.merge(L.concat(M)),function(a){return a.x})).range([0,D]);var N=C.selectAll("g.wrap.multiChart").data([j]),O=N.enter().append("g").attr("class","wrap nvd3 multiChart").append("g");O.append("g").attr("class","nv-x nv-axis"),O.append("g").attr("class","nv-y1 nv-axis"),O.append("g").attr("class","nv-y2 nv-axis"),O.append("g").attr("class","lines1Wrap"),O.append("g").attr("class","lines2Wrap"),O.append("g").attr("class","bars1Wrap"),O.append("g").attr("class","bars2Wrap"),O.append("g").attr("class","stack1Wrap"),O.append("g").attr("class","stack2Wrap"),O.append("g").attr("class","legendWrap");var P=N.select("g"),Q=j.map(function(a,b){return j[b].color||f(a,b)});if(i){var R=A.align()?D/2:D,S=A.align()?R:0;A.width(R),A.color(Q),P.select(".legendWrap").datum(j.map(function(a){return a.originalKey=void 0===a.originalKey?a.key:a.originalKey,a.key=a.originalKey+(1==a.yAxis?"":" (right axis)"),a})).call(A),e.top!=A.height()&&(e.top=A.height(),E=a.utils.availableHeight(h,C,e)),P.select(".legendWrap").attr("transform","translate("+S+","+-e.top+")")}r.width(D).height(E).interpolate(m).color(Q.filter(function(a,b){return!j[b].disabled&&1==j[b].yAxis&&"line"==j[b].type})),s.width(D).height(E).interpolate(m).color(Q.filter(function(a,b){return!j[b].disabled&&2==j[b].yAxis&&"line"==j[b].type})),t.width(D).height(E).color(Q.filter(function(a,b){return!j[b].disabled&&1==j[b].yAxis&&"bar"==j[b].type})),u.width(D).height(E).color(Q.filter(function(a,b){return!j[b].disabled&&2==j[b].yAxis&&"bar"==j[b].type})),v.width(D).height(E).color(Q.filter(function(a,b){return!j[b].disabled&&1==j[b].yAxis&&"area"==j[b].type})),w.width(D).height(E).color(Q.filter(function(a,b){return!j[b].disabled&&2==j[b].yAxis&&"area"==j[b].type})),P.attr("transform","translate("+e.left+","+e.top+")");var T=P.select(".lines1Wrap").datum(F.filter(function(a){return!a.disabled})),U=P.select(".bars1Wrap").datum(H.filter(function(a){return!a.disabled})),V=P.select(".stack1Wrap").datum(J.filter(function(a){return!a.disabled})),W=P.select(".lines2Wrap").datum(G.filter(function(a){return!a.disabled})),X=P.select(".bars2Wrap").datum(I.filter(function(a){return!a.disabled})),Y=P.select(".stack2Wrap").datum(K.filter(function(a){return!a.disabled})),Z=J.length?J.map(function(a){return a.values}).reduce(function(a,b){return a.map(function(a,c){return{x:a.x,y:a.y+b[c].y}})}).concat([{x:0,y:0}]):[],$=K.length?K.map(function(a){return a.values}).reduce(function(a,b){return a.map(function(a,c){return{x:a.x,y:a.y+b[c].y}})}).concat([{x:0,y:0}]):[];p.domain(c||d3.extent(d3.merge(L).concat(Z),function(a){return a.y})).range([0,E]),q.domain(d||d3.extent(d3.merge(M).concat($),function(a){return a.y})).range([0,E]),r.yDomain(p.domain()),t.yDomain(p.domain()),v.yDomain(p.domain()),s.yDomain(q.domain()),u.yDomain(q.domain()),w.yDomain(q.domain()),J.length&&d3.transition(V).call(v),K.length&&d3.transition(Y).call(w),H.length&&d3.transition(U).call(t),I.length&&d3.transition(X).call(u),F.length&&d3.transition(T).call(r),G.length&&d3.transition(W).call(s),x._ticks(a.utils.calcTicksX(D/100,j)).tickSize(-E,0),P.select(".nv-x.nv-axis").attr("transform","translate(0,"+E+")"),d3.transition(P.select(".nv-x.nv-axis")).call(x),y._ticks(a.utils.calcTicksY(E/36,j)).tickSize(-D,0),d3.transition(P.select(".nv-y1.nv-axis")).call(y),z._ticks(a.utils.calcTicksY(E/36,j)).tickSize(-D,0),d3.transition(P.select(".nv-y2.nv-axis")).call(z),P.select(".nv-y1.nv-axis").classed("nv-disabled",L.length?!1:!0).attr("transform","translate("+o.range()[0]+",0)"),P.select(".nv-y2.nv-axis").classed("nv-disabled",M.length?!1:!0).attr("transform","translate("+o.range()[1]+",0)"),A.dispatch.on("stateChange",function(){b.update()}),r.dispatch.on("elementMouseover.tooltip",k),s.dispatch.on("elementMouseover.tooltip",k),r.dispatch.on("elementMouseout.tooltip",function(){B.hidden(!0)}),s.dispatch.on("elementMouseout.tooltip",function(){B.hidden(!0)}),v.dispatch.on("elementMouseover.tooltip",l),w.dispatch.on("elementMouseover.tooltip",l),v.dispatch.on("elementMouseout.tooltip",function(){B.hidden(!0)}),w.dispatch.on("elementMouseout.tooltip",function(){B.hidden(!0)}),t.dispatch.on("elementMouseover.tooltip",n),u.dispatch.on("elementMouseover.tooltip",n),t.dispatch.on("elementMouseout.tooltip",function(){B.hidden(!0)}),u.dispatch.on("elementMouseout.tooltip",function(){B.hidden(!0)}),t.dispatch.on("elementMousemove.tooltip",function(){B.position({top:d3.event.pageY,left:d3.event.pageX})()}),u.dispatch.on("elementMousemove.tooltip",function(){B.position({top:d3.event.pageY,left:d3.event.pageX})()})}),b}var c,d,e={top:30,right:20,bottom:50,left:60},f=a.utils.defaultColor(),g=null,h=null,i=!0,j=null,k=function(a){return a.x},l=function(a){return a.y},m="monotone",n=!0,o=d3.scale.linear(),p=d3.scale.linear(),q=d3.scale.linear(),r=a.models.line().yScale(p),s=a.models.line().yScale(q),t=a.models.multiBar().stacked(!1).yScale(p),u=a.models.multiBar().stacked(!1).yScale(q),v=a.models.stackedArea().yScale(p),w=a.models.stackedArea().yScale(q),x=a.models.axis().scale(o).orient("bottom").tickPadding(5),y=a.models.axis().scale(p).orient("left"),z=a.models.axis().scale(q).orient("right"),A=a.models.legend().height(30),B=a.models.tooltip(),C=d3.dispatch();return b.dispatch=C,b.lines1=r,b.lines2=s,b.bars1=t,b.bars2=u,b.stack1=v,b.stack2=w,b.xAxis=x,b.yAxis1=y,b.yAxis2=z,b.tooltip=B,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return g},set:function(a){g=a}},height:{get:function(){return h},set:function(a){h=a}},showLegend:{get:function(){return i},set:function(a){i=a}},yDomain1:{get:function(){return c},set:function(a){c=a}},yDomain2:{get:function(){return d},set:function(a){d=a}},noData:{get:function(){return j},set:function(a){j=a}},interpolate:{get:function(){return m},set:function(a){m=a}},tooltips:{get:function(){return B.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),B.enabled(!!b)}},tooltipContent:{get:function(){return B.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),B.contentGenerator(b)}},margin:{get:function(){return e},set:function(a){e.top=void 0!==a.top?a.top:e.top,e.right=void 0!==a.right?a.right:e.right,e.bottom=void 0!==a.bottom?a.bottom:e.bottom,e.left=void 0!==a.left?a.left:e.left}},color:{get:function(){return f},set:function(b){f=a.utils.getColor(b)}},x:{get:function(){return k},set:function(a){k=a,r.x(a),s.x(a),t.x(a),u.x(a),v.x(a),w.x(a)}},y:{get:function(){return l},set:function(a){l=a,r.y(a),s.y(a),v.y(a),w.y(a),t.y(a),u.y(a)}},useVoronoi:{get:function(){return n},set:function(a){n=a,r.useVoronoi(a),s.useVoronoi(a),v.useVoronoi(a),w.useVoronoi(a)}}}),a.utils.initOptions(b),b},a.models.ohlcBar=function(){"use strict";function b(y){return y.each(function(b){k=d3.select(this);var y=a.utils.availableWidth(h,k,g),A=a.utils.availableHeight(i,k,g);a.utils.initSVG(k);var B=y/b[0].values.length*.9;l.domain(c||d3.extent(b[0].values.map(n).concat(t))),l.range(v?e||[.5*y/b[0].values.length,y*(b[0].values.length-.5)/b[0].values.length]:e||[5+B/2,y-B/2-5]),m.domain(d||[d3.min(b[0].values.map(s).concat(u)),d3.max(b[0].values.map(r).concat(u))]).range(f||[A,0]),l.domain()[0]===l.domain()[1]&&l.domain(l.domain()[0]?[l.domain()[0]-.01*l.domain()[0],l.domain()[1]+.01*l.domain()[1]]:[-1,1]),m.domain()[0]===m.domain()[1]&&m.domain(m.domain()[0]?[m.domain()[0]+.01*m.domain()[0],m.domain()[1]-.01*m.domain()[1]]:[-1,1]);var C=d3.select(this).selectAll("g.nv-wrap.nv-ohlcBar").data([b[0].values]),D=C.enter().append("g").attr("class","nvd3 nv-wrap nv-ohlcBar"),E=D.append("defs"),F=D.append("g"),G=C.select("g");F.append("g").attr("class","nv-ticks"),C.attr("transform","translate("+g.left+","+g.top+")"),k.on("click",function(a,b){z.chartClick({data:a,index:b,pos:d3.event,id:j})}),E.append("clipPath").attr("id","nv-chart-clip-path-"+j).append("rect"),C.select("#nv-chart-clip-path-"+j+" rect").attr("width",y).attr("height",A),G.attr("clip-path",w?"url(#nv-chart-clip-path-"+j+")":"");var H=C.select(".nv-ticks").selectAll(".nv-tick").data(function(a){return a});H.exit().remove(),H.enter().append("path").attr("class",function(a,b,c){return(p(a,b)>q(a,b)?"nv-tick negative":"nv-tick positive")+" nv-tick-"+c+"-"+b}).attr("d",function(a,b){return"m0,0l0,"+(m(p(a,b))-m(r(a,b)))+"l"+-B/2+",0l"+B/2+",0l0,"+(m(s(a,b))-m(p(a,b)))+"l0,"+(m(q(a,b))-m(s(a,b)))+"l"+B/2+",0l"+-B/2+",0z"}).attr("transform",function(a,b){return"translate("+l(n(a,b))+","+m(r(a,b))+")"}).attr("fill",function(){return x[0]}).attr("stroke",function(){return x[0]}).attr("x",0).attr("y",function(a,b){return m(Math.max(0,o(a,b)))}).attr("height",function(a,b){return Math.abs(m(o(a,b))-m(0))}),H.attr("class",function(a,b,c){return(p(a,b)>q(a,b)?"nv-tick negative":"nv-tick positive")+" nv-tick-"+c+"-"+b}),d3.transition(H).attr("transform",function(a,b){return"translate("+l(n(a,b))+","+m(r(a,b))+")"}).attr("d",function(a,c){var d=y/b[0].values.length*.9;return"m0,0l0,"+(m(p(a,c))-m(r(a,c)))+"l"+-d/2+",0l"+d/2+",0l0,"+(m(s(a,c))-m(p(a,c)))+"l0,"+(m(q(a,c))-m(s(a,c)))+"l"+d/2+",0l"+-d/2+",0z"})}),b}var c,d,e,f,g={top:0,right:0,bottom:0,left:0},h=null,i=null,j=Math.floor(1e4*Math.random()),k=null,l=d3.scale.linear(),m=d3.scale.linear(),n=function(a){return a.x},o=function(a){return a.y},p=function(a){return a.open},q=function(a){return a.close},r=function(a){return a.high},s=function(a){return a.low},t=[],u=[],v=!1,w=!0,x=a.utils.defaultColor(),y=!1,z=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState","renderEnd","chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove");return b.highlightPoint=function(a,c){b.clearHighlights(),k.select(".nv-ohlcBar .nv-tick-0-"+a).classed("hover",c)},b.clearHighlights=function(){k.select(".nv-ohlcBar .nv-tick.hover").classed("hover",!1)},b.dispatch=z,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return h},set:function(a){h=a}},height:{get:function(){return i},set:function(a){i=a}},xScale:{get:function(){return l},set:function(a){l=a}},yScale:{get:function(){return m},set:function(a){m=a}},xDomain:{get:function(){return c},set:function(a){c=a}},yDomain:{get:function(){return d},set:function(a){d=a}},xRange:{get:function(){return e},set:function(a){e=a}},yRange:{get:function(){return f},set:function(a){f=a}},forceX:{get:function(){return t},set:function(a){t=a}},forceY:{get:function(){return u},set:function(a){u=a}},padData:{get:function(){return v},set:function(a){v=a}},clipEdge:{get:function(){return w},set:function(a){w=a}},id:{get:function(){return j},set:function(a){j=a}},interactive:{get:function(){return y},set:function(a){y=a}},x:{get:function(){return n},set:function(a){n=a}},y:{get:function(){return o},set:function(a){o=a}},open:{get:function(){return p()},set:function(a){p=a}},close:{get:function(){return q()},set:function(a){q=a}},high:{get:function(){return r},set:function(a){r=a}},low:{get:function(){return s},set:function(a){s=a}},margin:{get:function(){return g},set:function(a){g.top=void 0!=a.top?a.top:g.top,g.right=void 0!=a.right?a.right:g.right,g.bottom=void 0!=a.bottom?a.bottom:g.bottom,g.left=void 0!=a.left?a.left:g.left
+}},color:{get:function(){return x},set:function(b){x=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.parallelCoordinates=function(){"use strict";function b(p){return p.each(function(b){function p(a){return F(h.map(function(b){if(isNaN(a[b])||isNaN(parseFloat(a[b]))){var c=g[b].domain(),d=g[b].range(),e=c[0]-(c[1]-c[0])/9;if(J.indexOf(b)<0){var h=d3.scale.linear().domain([e,c[1]]).range([x-12,d[1]]);g[b].brush.y(h),J.push(b)}return[f(b),g[b](e)]}return J.length>0?(D.style("display","inline"),E.style("display","inline")):(D.style("display","none"),E.style("display","none")),[f(b),g[b](a[b])]}))}function q(){var a=h.filter(function(a){return!g[a].brush.empty()}),b=a.map(function(a){return g[a].brush.extent()});k=[],a.forEach(function(a,c){k[c]={dimension:a,extent:b[c]}}),l=[],M.style("display",function(c){var d=a.every(function(a,d){return isNaN(c[a])&&b[d][0]==g[a].brush.y().domain()[0]?!0:b[d][0]<=c[a]&&c[a]<=b[d][1]});return d&&l.push(c),d?null:"none"}),o.brush({filters:k,active:l})}function r(a){m[a]=this.parentNode.__origin__=f(a),L.attr("visibility","hidden")}function s(a){m[a]=Math.min(w,Math.max(0,this.parentNode.__origin__+=d3.event.x)),M.attr("d",p),h.sort(function(a,b){return u(a)-u(b)}),f.domain(h),N.attr("transform",function(a){return"translate("+u(a)+")"})}function t(a){delete this.parentNode.__origin__,delete m[a],d3.select(this.parentNode).attr("transform","translate("+f(a)+")"),M.attr("d",p),L.attr("d",p).attr("visibility",null)}function u(a){var b=m[a];return null==b?f(a):b}var v=d3.select(this),w=a.utils.availableWidth(d,v,c),x=a.utils.availableHeight(e,v,c);a.utils.initSVG(v),l=b,f.rangePoints([0,w],1).domain(h);var y={};h.forEach(function(a){var c=d3.extent(b,function(b){return+b[a]});return y[a]=!1,void 0===c[0]&&(y[a]=!0,c[0]=0,c[1]=0),c[0]===c[1]&&(c[0]=c[0]-1,c[1]=c[1]+1),g[a]=d3.scale.linear().domain(c).range([.9*(x-12),0]),g[a].brush=d3.svg.brush().y(g[a]).on("brush",q),"name"!=a});var z=v.selectAll("g.nv-wrap.nv-parallelCoordinates").data([b]),A=z.enter().append("g").attr("class","nvd3 nv-wrap nv-parallelCoordinates"),B=A.append("g"),C=z.select("g");B.append("g").attr("class","nv-parallelCoordinates background"),B.append("g").attr("class","nv-parallelCoordinates foreground"),B.append("g").attr("class","nv-parallelCoordinates missingValuesline"),z.attr("transform","translate("+c.left+","+c.top+")");var D,E,F=d3.svg.line().interpolate("cardinal").tension(n),G=d3.svg.axis().orient("left"),H=d3.behavior.drag().on("dragstart",r).on("drag",s).on("dragend",t),I=f.range()[1]-f.range()[0],J=[],K=[0+I/2,x-12,w-I/2,x-12];D=z.select(".missingValuesline").selectAll("line").data([K]),D.enter().append("line"),D.exit().remove(),D.attr("x1",function(a){return a[0]}).attr("y1",function(a){return a[1]}).attr("x2",function(a){return a[2]}).attr("y2",function(a){return a[3]}),E=z.select(".missingValuesline").selectAll("text").data(["undefined values"]),E.append("text").data(["undefined values"]),E.enter().append("text"),E.exit().remove(),E.attr("y",x).attr("x",w-92-I/2).text(function(a){return a});var L=z.select(".background").selectAll("path").data(b);L.enter().append("path"),L.exit().remove(),L.attr("d",p);var M=z.select(".foreground").selectAll("path").data(b);M.enter().append("path"),M.exit().remove(),M.attr("d",p).attr("stroke",j),M.on("mouseover",function(a,b){d3.select(this).classed("hover",!0),o.elementMouseover({label:a.name,data:a.data,index:b,pos:[d3.mouse(this.parentNode)[0],d3.mouse(this.parentNode)[1]]})}),M.on("mouseout",function(a,b){d3.select(this).classed("hover",!1),o.elementMouseout({label:a.name,data:a.data,index:b})});var N=C.selectAll(".dimension").data(h),O=N.enter().append("g").attr("class","nv-parallelCoordinates dimension");O.append("g").attr("class","nv-parallelCoordinates nv-axis"),O.append("g").attr("class","nv-parallelCoordinates-brush"),O.append("text").attr("class","nv-parallelCoordinates nv-label"),N.attr("transform",function(a){return"translate("+f(a)+",0)"}),N.exit().remove(),N.select(".nv-label").style("cursor","move").attr("dy","-1em").attr("text-anchor","middle").text(String).on("mouseover",function(a){o.elementMouseover({dim:a,pos:[d3.mouse(this.parentNode.parentNode)[0],d3.mouse(this.parentNode.parentNode)[1]]})}).on("mouseout",function(a){o.elementMouseout({dim:a})}).call(H),N.select(".nv-axis").each(function(a,b){d3.select(this).call(G.scale(g[a]).tickFormat(d3.format(i[b])))}),N.select(".nv-parallelCoordinates-brush").each(function(a){d3.select(this).call(g[a].brush)}).selectAll("rect").attr("x",-8).attr("width",16)}),b}var c={top:30,right:0,bottom:10,left:0},d=null,e=null,f=d3.scale.ordinal(),g={},h=[],i=[],j=a.utils.defaultColor(),k=[],l=[],m=[],n=1,o=d3.dispatch("brush","elementMouseover","elementMouseout");return b.dispatch=o,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return d},set:function(a){d=a}},height:{get:function(){return e},set:function(a){e=a}},dimensionNames:{get:function(){return h},set:function(a){h=a}},dimensionFormats:{get:function(){return i},set:function(a){i=a}},lineTension:{get:function(){return n},set:function(a){n=a}},dimensions:{get:function(){return h},set:function(b){a.deprecated("dimensions","use dimensionNames instead"),h=b}},margin:{get:function(){return c},set:function(a){c.top=void 0!==a.top?a.top:c.top,c.right=void 0!==a.right?a.right:c.right,c.bottom=void 0!==a.bottom?a.bottom:c.bottom,c.left=void 0!==a.left?a.left:c.left}},color:{get:function(){return j},set:function(b){j=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.pie=function(){"use strict";function b(E){return D.reset(),E.each(function(b){function E(a,b){a.endAngle=isNaN(a.endAngle)?0:a.endAngle,a.startAngle=isNaN(a.startAngle)?0:a.startAngle,p||(a.innerRadius=0);var c=d3.interpolate(this._current,a);return this._current=c(0),function(a){return B[b](c(a))}}var F=d-c.left-c.right,G=e-c.top-c.bottom,H=Math.min(F,G)/2,I=[],J=[];if(i=d3.select(this),0===z.length)for(var K=H-H/5,L=y*H,M=0;M<b[0].length;M++)I.push(K),J.push(L);else I=z.map(function(a){return(a.outer-a.outer/5)*H}),J=z.map(function(a){return(a.inner-a.inner/5)*H}),y=d3.min(z.map(function(a){return a.inner-a.inner/5}));a.utils.initSVG(i);var N=i.selectAll(".nv-wrap.nv-pie").data(b),O=N.enter().append("g").attr("class","nvd3 nv-wrap nv-pie nv-chart-"+h),P=O.append("g"),Q=N.select("g"),R=P.append("g").attr("class","nv-pie");P.append("g").attr("class","nv-pieLabels"),N.attr("transform","translate("+c.left+","+c.top+")"),Q.select(".nv-pie").attr("transform","translate("+F/2+","+G/2+")"),Q.select(".nv-pieLabels").attr("transform","translate("+F/2+","+G/2+")"),i.on("click",function(a,b){A.chartClick({data:a,index:b,pos:d3.event,id:h})}),B=[],C=[];for(var M=0;M<b[0].length;M++){var S=d3.svg.arc().outerRadius(I[M]),T=d3.svg.arc().outerRadius(I[M]+5);u!==!1&&(S.startAngle(u),T.startAngle(u)),w!==!1&&(S.endAngle(w),T.endAngle(w)),p&&(S.innerRadius(J[M]),T.innerRadius(J[M])),S.cornerRadius&&x&&(S.cornerRadius(x),T.cornerRadius(x)),B.push(S),C.push(T)}var U=d3.layout.pie().sort(null).value(function(a){return a.disabled?0:g(a)});U.padAngle&&v&&U.padAngle(v),p&&q&&(R.append("text").attr("class","nv-pie-title"),N.select(".nv-pie-title").style("text-anchor","middle").text(function(){return q}).style("font-size",Math.min(F,G)*y*2/(q.length+2)+"px").attr("dy","0.35em").attr("transform",function(){return"translate(0, "+s+")"}));var V=N.select(".nv-pie").selectAll(".nv-slice").data(U),W=N.select(".nv-pieLabels").selectAll(".nv-label").data(U);V.exit().remove(),W.exit().remove();var X=V.enter().append("g");X.attr("class","nv-slice"),X.on("mouseover",function(a,b){d3.select(this).classed("hover",!0),r&&d3.select(this).select("path").transition().duration(70).attr("d",C[b]),A.elementMouseover({data:a.data,index:b,color:d3.select(this).style("fill")})}),X.on("mouseout",function(a,b){d3.select(this).classed("hover",!1),r&&d3.select(this).select("path").transition().duration(50).attr("d",B[b]),A.elementMouseout({data:a.data,index:b})}),X.on("mousemove",function(a,b){A.elementMousemove({data:a.data,index:b})}),X.on("click",function(a,b){A.elementClick({data:a.data,index:b,color:d3.select(this).style("fill")})}),X.on("dblclick",function(a,b){A.elementDblClick({data:a.data,index:b,color:d3.select(this).style("fill")})}),V.attr("fill",function(a,b){return j(a.data,b)}),V.attr("stroke",function(a,b){return j(a.data,b)});X.append("path").each(function(a){this._current=a});if(V.select("path").transition().attr("d",function(a,b){return B[b](a)}).attrTween("d",E),l){for(var Y=[],M=0;M<b[0].length;M++)Y.push(B[M]),m?p&&(Y[M]=d3.svg.arc().outerRadius(B[M].outerRadius()),u!==!1&&Y[M].startAngle(u),w!==!1&&Y[M].endAngle(w)):p||Y[M].innerRadius(0);W.enter().append("g").classed("nv-label",!0).each(function(a){var b=d3.select(this);b.attr("transform",function(a,b){if(t){a.outerRadius=I[b]+10,a.innerRadius=I[b]+15;var c=(a.startAngle+a.endAngle)/2*(180/Math.PI);return(a.startAngle+a.endAngle)/2<Math.PI?c-=90:c+=90,"translate("+Y[b].centroid(a)+") rotate("+c+")"}return a.outerRadius=H+10,a.innerRadius=H+15,"translate("+Y[b].centroid(a)+")"}),b.append("rect").style("stroke","#fff").style("fill","#fff").attr("rx",3).attr("ry",3),b.append("text").style("text-anchor",t?(a.startAngle+a.endAngle)/2<Math.PI?"start":"end":"middle").style("fill","#000")});var Z={},$=14,_=140,ab=function(a){return Math.floor(a[0]/_)*_+","+Math.floor(a[1]/$)*$};W.watchTransition(D,"pie labels").attr("transform",function(a,b){if(t){a.outerRadius=I[b]+10,a.innerRadius=I[b]+15;var c=(a.startAngle+a.endAngle)/2*(180/Math.PI);return(a.startAngle+a.endAngle)/2<Math.PI?c-=90:c+=90,"translate("+Y[b].centroid(a)+") rotate("+c+")"}a.outerRadius=H+10,a.innerRadius=H+15;var d=Y[b].centroid(a);if(a.value){var e=ab(d);Z[e]&&(d[1]-=$),Z[ab(d)]=!0}return"translate("+d+")"}),W.select(".nv-label text").style("text-anchor",function(a){return t?(a.startAngle+a.endAngle)/2<Math.PI?"start":"end":"middle"}).text(function(a,b){var c=(a.endAngle-a.startAngle)/(2*Math.PI),d="";if(!a.value||o>c)return"";if("function"==typeof n)d=n(a,b,{key:f(a.data),value:g(a.data),percent:k(c)});else switch(n){case"key":d=f(a.data);break;case"value":d=k(g(a.data));break;case"percent":d=d3.format("%")(c)}return d})}}),D.renderEnd("pie immediate"),b}var c={top:0,right:0,bottom:0,left:0},d=500,e=500,f=function(a){return a.x},g=function(a){return a.y},h=Math.floor(1e4*Math.random()),i=null,j=a.utils.defaultColor(),k=d3.format(",.2f"),l=!0,m=!1,n="key",o=.02,p=!1,q=!1,r=!0,s=0,t=!1,u=!1,v=!1,w=!1,x=0,y=.5,z=[],A=d3.dispatch("chartClick","elementClick","elementDblClick","elementMouseover","elementMouseout","elementMousemove","renderEnd"),B=[],C=[],D=a.utils.renderWatch(A);return b.dispatch=A,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{arcsRadius:{get:function(){return z},set:function(a){z=a}},width:{get:function(){return d},set:function(a){d=a}},height:{get:function(){return e},set:function(a){e=a}},showLabels:{get:function(){return l},set:function(a){l=a}},title:{get:function(){return q},set:function(a){q=a}},titleOffset:{get:function(){return s},set:function(a){s=a}},labelThreshold:{get:function(){return o},set:function(a){o=a}},valueFormat:{get:function(){return k},set:function(a){k=a}},x:{get:function(){return f},set:function(a){f=a}},id:{get:function(){return h},set:function(a){h=a}},endAngle:{get:function(){return w},set:function(a){w=a}},startAngle:{get:function(){return u},set:function(a){u=a}},padAngle:{get:function(){return v},set:function(a){v=a}},cornerRadius:{get:function(){return x},set:function(a){x=a}},donutRatio:{get:function(){return y},set:function(a){y=a}},labelsOutside:{get:function(){return m},set:function(a){m=a}},labelSunbeamLayout:{get:function(){return t},set:function(a){t=a}},donut:{get:function(){return p},set:function(a){p=a}},growOnHover:{get:function(){return r},set:function(a){r=a}},pieLabelsOutside:{get:function(){return m},set:function(b){m=b,a.deprecated("pieLabelsOutside","use labelsOutside instead")}},donutLabelsOutside:{get:function(){return m},set:function(b){m=b,a.deprecated("donutLabelsOutside","use labelsOutside instead")}},labelFormat:{get:function(){return k},set:function(b){k=b,a.deprecated("labelFormat","use valueFormat instead")}},margin:{get:function(){return c},set:function(a){c.top="undefined"!=typeof a.top?a.top:c.top,c.right="undefined"!=typeof a.right?a.right:c.right,c.bottom="undefined"!=typeof a.bottom?a.bottom:c.bottom,c.left="undefined"!=typeof a.left?a.left:c.left}},y:{get:function(){return g},set:function(a){g=d3.functor(a)}},color:{get:function(){return j},set:function(b){j=a.utils.getColor(b)}},labelType:{get:function(){return n},set:function(a){n=a||"key"}}}),a.utils.initOptions(b),b},a.models.pieChart=function(){"use strict";function b(e){return q.reset(),q.models(c),e.each(function(e){var k=d3.select(this);a.utils.initSVG(k);var n=a.utils.availableWidth(g,k,f),o=a.utils.availableHeight(h,k,f);if(b.update=function(){k.transition().call(b)},b.container=this,l.setter(s(e),b.update).getter(r(e)).update(),l.disabled=e.map(function(a){return!!a.disabled}),!m){var q;m={};for(q in l)m[q]=l[q]instanceof Array?l[q].slice(0):l[q]}if(!e||!e.length)return a.utils.noData(b,k),b;k.selectAll(".nv-noData").remove();var t=k.selectAll("g.nv-wrap.nv-pieChart").data([e]),u=t.enter().append("g").attr("class","nvd3 nv-wrap nv-pieChart").append("g"),v=t.select("g");if(u.append("g").attr("class","nv-pieWrap"),u.append("g").attr("class","nv-legendWrap"),i)if("top"===j)d.width(n).key(c.x()),t.select(".nv-legendWrap").datum(e).call(d),f.top!=d.height()&&(f.top=d.height(),o=a.utils.availableHeight(h,k,f)),t.select(".nv-legendWrap").attr("transform","translate(0,"+-f.top+")");else if("right"===j){var w=a.models.legend().width();w>n/2&&(w=n/2),d.height(o).key(c.x()),d.width(w),n-=d.width(),t.select(".nv-legendWrap").datum(e).call(d).attr("transform","translate("+n+",0)")}t.attr("transform","translate("+f.left+","+f.top+")"),c.width(n).height(o);var x=v.select(".nv-pieWrap").datum([e]);d3.transition(x).call(c),d.dispatch.on("stateChange",function(a){for(var c in a)l[c]=a[c];p.stateChange(l),b.update()}),p.on("changeState",function(a){"undefined"!=typeof a.disabled&&(e.forEach(function(b,c){b.disabled=a.disabled[c]}),l.disabled=a.disabled),b.update()})}),q.renderEnd("pieChart immediate"),b}var c=a.models.pie(),d=a.models.legend(),e=a.models.tooltip(),f={top:30,right:20,bottom:20,left:20},g=null,h=null,i=!0,j="top",k=a.utils.defaultColor(),l=a.utils.state(),m=null,n=null,o=250,p=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState","renderEnd");e.headerEnabled(!1).duration(0).valueFormatter(function(a,b){return c.valueFormat()(a,b)});var q=a.utils.renderWatch(p),r=function(a){return function(){return{active:a.map(function(a){return!a.disabled})}}},s=function(a){return function(b){void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return c.dispatch.on("elementMouseover.tooltip",function(a){a.series={key:b.x()(a.data),value:b.y()(a.data),color:a.color},e.data(a).hidden(!1)}),c.dispatch.on("elementMouseout.tooltip",function(){e.hidden(!0)}),c.dispatch.on("elementMousemove.tooltip",function(){e.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.legend=d,b.dispatch=p,b.pie=c,b.tooltip=e,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{noData:{get:function(){return n},set:function(a){n=a}},showLegend:{get:function(){return i},set:function(a){i=a}},legendPosition:{get:function(){return j},set:function(a){j=a}},defaultState:{get:function(){return m},set:function(a){m=a}},tooltips:{get:function(){return e.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),e.enabled(!!b)}},tooltipContent:{get:function(){return e.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),e.contentGenerator(b)}},color:{get:function(){return k},set:function(a){k=a,d.color(k),c.color(k)}},duration:{get:function(){return o},set:function(a){o=a,q.reset(o)}},margin:{get:function(){return f},set:function(a){f.top=void 0!==a.top?a.top:f.top,f.right=void 0!==a.right?a.right:f.right,f.bottom=void 0!==a.bottom?a.bottom:f.bottom,f.left=void 0!==a.left?a.left:f.left}}}),a.utils.inheritOptions(b,c),a.utils.initOptions(b),b},a.models.scatter=function(){"use strict";function b(N){return P.reset(),N.each(function(b){function N(){if(O=!1,!w)return!1;if(M===!0){var a=d3.merge(b.map(function(a,b){return a.values.map(function(a,c){var d=p(a,c),e=q(a,c);return[m(d)+1e-4*Math.random(),n(e)+1e-4*Math.random(),b,c,a]}).filter(function(a,b){return x(a[4],b)})}));if(0==a.length)return!1;a.length<3&&(a.push([m.range()[0]-20,n.range()[0]-20,null,null]),a.push([m.range()[1]+20,n.range()[1]+20,null,null]),a.push([m.range()[0]-20,n.range()[0]+20,null,null]),a.push([m.range()[1]+20,n.range()[1]-20,null,null]));var c=d3.geom.polygon([[-10,-10],[-10,i+10],[h+10,i+10],[h+10,-10]]),d=d3.geom.voronoi(a).map(function(b,d){return{data:c.clip(b),series:a[d][2],point:a[d][3]}});U.select(".nv-point-paths").selectAll("path").remove();var e=U.select(".nv-point-paths").selectAll("path").data(d),f=e.enter().append("svg:path").attr("d",function(a){return a&&a.data&&0!==a.data.length?"M"+a.data.join(",")+"Z":"M 0 0"}).attr("id",function(a,b){return"nv-path-"+b}).attr("clip-path",function(a,b){return"url(#nv-clip-"+b+")"});C&&f.style("fill",d3.rgb(230,230,230)).style("fill-opacity",.4).style("stroke-opacity",1).style("stroke",d3.rgb(200,200,200)),B&&(U.select(".nv-point-clips").selectAll("clipPath").remove(),U.select(".nv-point-clips").selectAll("clipPath").data(a).enter().append("svg:clipPath").attr("id",function(a,b){return"nv-clip-"+b}).append("svg:circle").attr("cx",function(a){return a[0]}).attr("cy",function(a){return a[1]}).attr("r",D));var k=function(a,c){if(O)return 0;var d=b[a.series];if(void 0!==d){var e=d.values[a.point];e.color=j(d,a.series),e.x=p(e),e.y=q(e);var f=l.node().getBoundingClientRect(),h=window.pageYOffset||document.documentElement.scrollTop,i=window.pageXOffset||document.documentElement.scrollLeft,k={left:m(p(e,a.point))+f.left+i+g.left+10,top:n(q(e,a.point))+f.top+h+g.top+10};c({point:e,series:d,pos:k,seriesIndex:a.series,pointIndex:a.point})}};e.on("click",function(a){k(a,L.elementClick)}).on("dblclick",function(a){k(a,L.elementDblClick)}).on("mouseover",function(a){k(a,L.elementMouseover)}).on("mouseout",function(a){k(a,L.elementMouseout)})}else U.select(".nv-groups").selectAll(".nv-group").selectAll(".nv-point").on("click",function(a,c){if(O||!b[a.series])return 0;var d=b[a.series],e=d.values[c];L.elementClick({point:e,series:d,pos:[m(p(e,c))+g.left,n(q(e,c))+g.top],seriesIndex:a.series,pointIndex:c})}).on("dblclick",function(a,c){if(O||!b[a.series])return 0;var d=b[a.series],e=d.values[c];L.elementDblClick({point:e,series:d,pos:[m(p(e,c))+g.left,n(q(e,c))+g.top],seriesIndex:a.series,pointIndex:c})}).on("mouseover",function(a,c){if(O||!b[a.series])return 0;var d=b[a.series],e=d.values[c];L.elementMouseover({point:e,series:d,pos:[m(p(e,c))+g.left,n(q(e,c))+g.top],seriesIndex:a.series,pointIndex:c,color:j(a,c)})}).on("mouseout",function(a,c){if(O||!b[a.series])return 0;var d=b[a.series],e=d.values[c];L.elementMouseout({point:e,series:d,seriesIndex:a.series,pointIndex:c,color:j(a,c)})})}l=d3.select(this);var R=a.utils.availableWidth(h,l,g),S=a.utils.availableHeight(i,l,g);a.utils.initSVG(l),b.forEach(function(a,b){a.values.forEach(function(a){a.series=b})});var T=E&&F&&I?[]:d3.merge(b.map(function(a){return a.values.map(function(a,b){return{x:p(a,b),y:q(a,b),size:r(a,b)}})}));m.domain(E||d3.extent(T.map(function(a){return a.x}).concat(t))),m.range(y&&b[0]?G||[(R*z+R)/(2*b[0].values.length),R-R*(1+z)/(2*b[0].values.length)]:G||[0,R]),n.domain(F||d3.extent(T.map(function(a){return a.y}).concat(u))).range(H||[S,0]),o.domain(I||d3.extent(T.map(function(a){return a.size}).concat(v))).range(J||Q),K=m.domain()[0]===m.domain()[1]||n.domain()[0]===n.domain()[1],m.domain()[0]===m.domain()[1]&&m.domain(m.domain()[0]?[m.domain()[0]-.01*m.domain()[0],m.domain()[1]+.01*m.domain()[1]]:[-1,1]),n.domain()[0]===n.domain()[1]&&n.domain(n.domain()[0]?[n.domain()[0]-.01*n.domain()[0],n.domain()[1]+.01*n.domain()[1]]:[-1,1]),isNaN(m.domain()[0])&&m.domain([-1,1]),isNaN(n.domain()[0])&&n.domain([-1,1]),c=c||m,d=d||n,e=e||o;var U=l.selectAll("g.nv-wrap.nv-scatter").data([b]),V=U.enter().append("g").attr("class","nvd3 nv-wrap nv-scatter nv-chart-"+k),W=V.append("defs"),X=V.append("g"),Y=U.select("g");U.classed("nv-single-point",K),X.append("g").attr("class","nv-groups"),X.append("g").attr("class","nv-point-paths"),V.append("g").attr("class","nv-point-clips"),U.attr("transform","translate("+g.left+","+g.top+")"),W.append("clipPath").attr("id","nv-edge-clip-"+k).append("rect"),U.select("#nv-edge-clip-"+k+" rect").attr("width",R).attr("height",S>0?S:0),Y.attr("clip-path",A?"url(#nv-edge-clip-"+k+")":""),O=!0;var Z=U.select(".nv-groups").selectAll(".nv-group").data(function(a){return a},function(a){return a.key});Z.enter().append("g").style("stroke-opacity",1e-6).style("fill-opacity",1e-6),Z.exit().remove(),Z.attr("class",function(a,b){return"nv-group nv-series-"+b}).classed("hover",function(a){return a.hover}),Z.watchTransition(P,"scatter: groups").style("fill",function(a,b){return j(a,b)}).style("stroke",function(a,b){return j(a,b)}).style("stroke-opacity",1).style("fill-opacity",.5);var $=Z.selectAll("path.nv-point").data(function(a){return a.values.map(function(a,b){return[a,b]}).filter(function(a,b){return x(a[0],b)})});$.enter().append("path").style("fill",function(a){return a.color}).style("stroke",function(a){return a.color}).attr("transform",function(a){return"translate("+c(p(a[0],a[1]))+","+d(q(a[0],a[1]))+")"}).attr("d",a.utils.symbol().type(function(a){return s(a[0])}).size(function(a){return o(r(a[0],a[1]))})),$.exit().remove(),Z.exit().selectAll("path.nv-point").watchTransition(P,"scatter exit").attr("transform",function(a){return"translate("+m(p(a[0],a[1]))+","+n(q(a[0],a[1]))+")"}).remove(),$.each(function(a){d3.select(this).classed("nv-point",!0).classed("nv-point-"+a[1],!0).classed("nv-noninteractive",!w).classed("hover",!1)}),$.watchTransition(P,"scatter points").attr("transform",function(a){return"translate("+m(p(a[0],a[1]))+","+n(q(a[0],a[1]))+")"}).attr("d",a.utils.symbol().type(function(a){return s(a[0])}).size(function(a){return o(r(a[0],a[1]))})),clearTimeout(f),f=setTimeout(N,300),c=m.copy(),d=n.copy(),e=o.copy()}),P.renderEnd("scatter immediate"),b}var c,d,e,f,g={top:0,right:0,bottom:0,left:0},h=null,i=null,j=a.utils.defaultColor(),k=Math.floor(1e5*Math.random()),l=null,m=d3.scale.linear(),n=d3.scale.linear(),o=d3.scale.linear(),p=function(a){return a.x},q=function(a){return a.y},r=function(a){return a.size||1},s=function(a){return a.shape||"circle"},t=[],u=[],v=[],w=!0,x=function(a){return!a.notActive},y=!1,z=.1,A=!1,B=!0,C=!1,D=function(){return 25},E=null,F=null,G=null,H=null,I=null,J=null,K=!1,L=d3.dispatch("elementClick","elementDblClick","elementMouseover","elementMouseout","renderEnd"),M=!0,N=250,O=!1,P=a.utils.renderWatch(L,N),Q=[16,256];return b.dispatch=L,b.options=a.utils.optionsFunc.bind(b),b._calls=new function(){this.clearHighlights=function(){return a.dom.write(function(){l.selectAll(".nv-point.hover").classed("hover",!1)}),null},this.highlightPoint=function(b,c,d){a.dom.write(function(){l.select(" .nv-series-"+b+" .nv-point-"+c).classed("hover",d)})}},L.on("elementMouseover.point",function(a){w&&b._calls.highlightPoint(a.seriesIndex,a.pointIndex,!0)}),L.on("elementMouseout.point",function(a){w&&b._calls.highlightPoint(a.seriesIndex,a.pointIndex,!1)}),b._options=Object.create({},{width:{get:function(){return h},set:function(a){h=a}},height:{get:function(){return i},set:function(a){i=a}},xScale:{get:function(){return m},set:function(a){m=a}},yScale:{get:function(){return n},set:function(a){n=a}},pointScale:{get:function(){return o},set:function(a){o=a}},xDomain:{get:function(){return E},set:function(a){E=a}},yDomain:{get:function(){return F},set:function(a){F=a}},pointDomain:{get:function(){return I},set:function(a){I=a}},xRange:{get:function(){return G},set:function(a){G=a}},yRange:{get:function(){return H},set:function(a){H=a}},pointRange:{get:function(){return J},set:function(a){J=a}},forceX:{get:function(){return t},set:function(a){t=a}},forceY:{get:function(){return u},set:function(a){u=a}},forcePoint:{get:function(){return v},set:function(a){v=a}},interactive:{get:function(){return w},set:function(a){w=a}},pointActive:{get:function(){return x},set:function(a){x=a}},padDataOuter:{get:function(){return z},set:function(a){z=a}},padData:{get:function(){return y},set:function(a){y=a}},clipEdge:{get:function(){return A},set:function(a){A=a}},clipVoronoi:{get:function(){return B},set:function(a){B=a}},clipRadius:{get:function(){return D},set:function(a){D=a}},showVoronoi:{get:function(){return C},set:function(a){C=a}},id:{get:function(){return k},set:function(a){k=a}},x:{get:function(){return p},set:function(a){p=d3.functor(a)}},y:{get:function(){return q},set:function(a){q=d3.functor(a)}},pointSize:{get:function(){return r},set:function(a){r=d3.functor(a)}},pointShape:{get:function(){return s},set:function(a){s=d3.functor(a)}},margin:{get:function(){return g},set:function(a){g.top=void 0!==a.top?a.top:g.top,g.right=void 0!==a.right?a.right:g.right,g.bottom=void 0!==a.bottom?a.bottom:g.bottom,g.left=void 0!==a.left?a.left:g.left}},duration:{get:function(){return N},set:function(a){N=a,P.reset(N)}},color:{get:function(){return j},set:function(b){j=a.utils.getColor(b)}},useVoronoi:{get:function(){return M},set:function(a){M=a,M===!1&&(B=!1)}}}),a.utils.initOptions(b),b},a.models.scatterChart=function(){"use strict";function b(z){return D.reset(),D.models(c),t&&D.models(d),u&&D.models(e),q&&D.models(g),r&&D.models(h),z.each(function(z){m=d3.select(this),a.utils.initSVG(m);var G=a.utils.availableWidth(k,m,j),H=a.utils.availableHeight(l,m,j);if(b.update=function(){0===A?m.call(b):m.transition().duration(A).call(b)},b.container=this,w.setter(F(z),b.update).getter(E(z)).update(),w.disabled=z.map(function(a){return!!a.disabled}),!x){var I;x={};for(I in w)x[I]=w[I]instanceof Array?w[I].slice(0):w[I]}if(!(z&&z.length&&z.filter(function(a){return a.values.length}).length))return a.utils.noData(b,m),D.renderEnd("scatter immediate"),b;m.selectAll(".nv-noData").remove(),o=c.xScale(),p=c.yScale();var J=m.selectAll("g.nv-wrap.nv-scatterChart").data([z]),K=J.enter().append("g").attr("class","nvd3 nv-wrap nv-scatterChart nv-chart-"+c.id()),L=K.append("g"),M=J.select("g");if(L.append("rect").attr("class","nvd3 nv-background").style("pointer-events","none"),L.append("g").attr("class","nv-x nv-axis"),L.append("g").attr("class","nv-y nv-axis"),L.append("g").attr("class","nv-scatterWrap"),L.append("g").attr("class","nv-regressionLinesWrap"),L.append("g").attr("class","nv-distWrap"),L.append("g").attr("class","nv-legendWrap"),v&&M.select(".nv-y.nv-axis").attr("transform","translate("+G+",0)"),s){var N=G;f.width(N),J.select(".nv-legendWrap").datum(z).call(f),j.top!=f.height()&&(j.top=f.height(),H=a.utils.availableHeight(l,m,j)),J.select(".nv-legendWrap").attr("transform","translate(0,"+-j.top+")")}J.attr("transform","translate("+j.left+","+j.top+")"),c.width(G).height(H).color(z.map(function(a,b){return a.color=a.color||n(a,b),a.color}).filter(function(a,b){return!z[b].disabled})),J.select(".nv-scatterWrap").datum(z.filter(function(a){return!a.disabled})).call(c),J.select(".nv-regressionLinesWrap").attr("clip-path","url(#nv-edge-clip-"+c.id()+")");var O=J.select(".nv-regressionLinesWrap").selectAll(".nv-regLines").data(function(a){return a});O.enter().append("g").attr("class","nv-regLines");var P=O.selectAll(".nv-regLine").data(function(a){return[a]});P.enter().append("line").attr("class","nv-regLine").style("stroke-opacity",0),P.filter(function(a){return a.intercept&&a.slope}).watchTransition(D,"scatterPlusLineChart: regline").attr("x1",o.range()[0]).attr("x2",o.range()[1]).attr("y1",function(a){return p(o.domain()[0]*a.slope+a.intercept)}).attr("y2",function(a){return p(o.domain()[1]*a.slope+a.intercept)}).style("stroke",function(a,b,c){return n(a,c)}).style("stroke-opacity",function(a){return a.disabled||"undefined"==typeof a.slope||"undefined"==typeof a.intercept?0:1}),t&&(d.scale(o)._ticks(a.utils.calcTicksX(G/100,z)).tickSize(-H,0),M.select(".nv-x.nv-axis").attr("transform","translate(0,"+p.range()[0]+")").call(d)),u&&(e.scale(p)._ticks(a.utils.calcTicksY(H/36,z)).tickSize(-G,0),M.select(".nv-y.nv-axis").call(e)),q&&(g.getData(c.x()).scale(o).width(G).color(z.map(function(a,b){return a.color||n(a,b)}).filter(function(a,b){return!z[b].disabled})),L.select(".nv-distWrap").append("g").attr("class","nv-distributionX"),M.select(".nv-distributionX").attr("transform","translate(0,"+p.range()[0]+")").datum(z.filter(function(a){return!a.disabled})).call(g)),r&&(h.getData(c.y()).scale(p).width(H).color(z.map(function(a,b){return a.color||n(a,b)}).filter(function(a,b){return!z[b].disabled})),L.select(".nv-distWrap").append("g").attr("class","nv-distributionY"),M.select(".nv-distributionY").attr("transform","translate("+(v?G:-h.size())+",0)").datum(z.filter(function(a){return!a.disabled})).call(h)),f.dispatch.on("stateChange",function(a){for(var c in a)w[c]=a[c];y.stateChange(w),b.update()}),y.on("changeState",function(a){"undefined"!=typeof a.disabled&&(z.forEach(function(b,c){b.disabled=a.disabled[c]}),w.disabled=a.disabled),b.update()}),c.dispatch.on("elementMouseout.tooltip",function(a){i.hidden(!0),m.select(".nv-chart-"+c.id()+" .nv-series-"+a.seriesIndex+" .nv-distx-"+a.pointIndex).attr("y1",0),m.select(".nv-chart-"+c.id()+" .nv-series-"+a.seriesIndex+" .nv-disty-"+a.pointIndex).attr("x2",h.size())}),c.dispatch.on("elementMouseover.tooltip",function(a){m.select(".nv-series-"+a.seriesIndex+" .nv-distx-"+a.pointIndex).attr("y1",a.pos.top-H-j.top),m.select(".nv-series-"+a.seriesIndex+" .nv-disty-"+a.pointIndex).attr("x2",a.pos.left+g.size()-j.left),i.position(a.pos).data(a).hidden(!1)}),B=o.copy(),C=p.copy()}),D.renderEnd("scatter with line immediate"),b}var c=a.models.scatter(),d=a.models.axis(),e=a.models.axis(),f=a.models.legend(),g=a.models.distribution(),h=a.models.distribution(),i=a.models.tooltip(),j={top:30,right:20,bottom:50,left:75},k=null,l=null,m=null,n=a.utils.defaultColor(),o=c.xScale(),p=c.yScale(),q=!1,r=!1,s=!0,t=!0,u=!0,v=!1,w=a.utils.state(),x=null,y=d3.dispatch("stateChange","changeState","renderEnd"),z=null,A=250;c.xScale(o).yScale(p),d.orient("bottom").tickPadding(10),e.orient(v?"right":"left").tickPadding(10),g.axis("x"),h.axis("y"),i.headerFormatter(function(a,b){return d.tickFormat()(a,b)}).valueFormatter(function(a,b){return e.tickFormat()(a,b)});var B,C,D=a.utils.renderWatch(y,A),E=function(a){return function(){return{active:a.map(function(a){return!a.disabled})}}},F=function(a){return function(b){void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}};return b.dispatch=y,b.scatter=c,b.legend=f,b.xAxis=d,b.yAxis=e,b.distX=g,b.distY=h,b.tooltip=i,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return k},set:function(a){k=a}},height:{get:function(){return l},set:function(a){l=a}},container:{get:function(){return m},set:function(a){m=a}},showDistX:{get:function(){return q},set:function(a){q=a}},showDistY:{get:function(){return r},set:function(a){r=a}},showLegend:{get:function(){return s},set:function(a){s=a}},showXAxis:{get:function(){return t},set:function(a){t=a}},showYAxis:{get:function(){return u},set:function(a){u=a}},defaultState:{get:function(){return x},set:function(a){x=a}},noData:{get:function(){return z},set:function(a){z=a}},duration:{get:function(){return A},set:function(a){A=a}},tooltips:{get:function(){return i.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),i.enabled(!!b)
+}},tooltipContent:{get:function(){return i.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),i.contentGenerator(b)}},tooltipXContent:{get:function(){return i.contentGenerator()},set:function(){a.deprecated("tooltipContent","This option is removed, put values into main tooltip.")}},tooltipYContent:{get:function(){return i.contentGenerator()},set:function(){a.deprecated("tooltipContent","This option is removed, put values into main tooltip.")}},margin:{get:function(){return j},set:function(a){j.top=void 0!==a.top?a.top:j.top,j.right=void 0!==a.right?a.right:j.right,j.bottom=void 0!==a.bottom?a.bottom:j.bottom,j.left=void 0!==a.left?a.left:j.left}},rightAlignYAxis:{get:function(){return v},set:function(a){v=a,e.orient(a?"right":"left")}},color:{get:function(){return n},set:function(b){n=a.utils.getColor(b),f.color(n),g.color(n),h.color(n)}}}),a.utils.inheritOptions(b,c),a.utils.initOptions(b),b},a.models.sparkline=function(){"use strict";function b(k){return k.each(function(b){var k=h-g.left-g.right,q=i-g.top-g.bottom;j=d3.select(this),a.utils.initSVG(j),l.domain(c||d3.extent(b,n)).range(e||[0,k]),m.domain(d||d3.extent(b,o)).range(f||[q,0]);{var r=j.selectAll("g.nv-wrap.nv-sparkline").data([b]),s=r.enter().append("g").attr("class","nvd3 nv-wrap nv-sparkline");s.append("g"),r.select("g")}r.attr("transform","translate("+g.left+","+g.top+")");var t=r.selectAll("path").data(function(a){return[a]});t.enter().append("path"),t.exit().remove(),t.style("stroke",function(a,b){return a.color||p(a,b)}).attr("d",d3.svg.line().x(function(a,b){return l(n(a,b))}).y(function(a,b){return m(o(a,b))}));var u=r.selectAll("circle.nv-point").data(function(a){function b(b){if(-1!=b){var c=a[b];return c.pointIndex=b,c}return null}var c=a.map(function(a,b){return o(a,b)}),d=b(c.lastIndexOf(m.domain()[1])),e=b(c.indexOf(m.domain()[0])),f=b(c.length-1);return[e,d,f].filter(function(a){return null!=a})});u.enter().append("circle"),u.exit().remove(),u.attr("cx",function(a){return l(n(a,a.pointIndex))}).attr("cy",function(a){return m(o(a,a.pointIndex))}).attr("r",2).attr("class",function(a){return n(a,a.pointIndex)==l.domain()[1]?"nv-point nv-currentValue":o(a,a.pointIndex)==m.domain()[0]?"nv-point nv-minValue":"nv-point nv-maxValue"})}),b}var c,d,e,f,g={top:2,right:0,bottom:2,left:0},h=400,i=32,j=null,k=!0,l=d3.scale.linear(),m=d3.scale.linear(),n=function(a){return a.x},o=function(a){return a.y},p=a.utils.getColor(["#000"]);return b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return h},set:function(a){h=a}},height:{get:function(){return i},set:function(a){i=a}},xDomain:{get:function(){return c},set:function(a){c=a}},yDomain:{get:function(){return d},set:function(a){d=a}},xRange:{get:function(){return e},set:function(a){e=a}},yRange:{get:function(){return f},set:function(a){f=a}},xScale:{get:function(){return l},set:function(a){l=a}},yScale:{get:function(){return m},set:function(a){m=a}},animate:{get:function(){return k},set:function(a){k=a}},x:{get:function(){return n},set:function(a){n=d3.functor(a)}},y:{get:function(){return o},set:function(a){o=d3.functor(a)}},margin:{get:function(){return g},set:function(a){g.top=void 0!==a.top?a.top:g.top,g.right=void 0!==a.right?a.right:g.right,g.bottom=void 0!==a.bottom?a.bottom:g.bottom,g.left=void 0!==a.left?a.left:g.left}},color:{get:function(){return p},set:function(b){p=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.sparklinePlus=function(){"use strict";function b(p){return p.each(function(p){function q(){if(!j){var a=z.selectAll(".nv-hoverValue").data(i),b=a.enter().append("g").attr("class","nv-hoverValue").style("stroke-opacity",0).style("fill-opacity",0);a.exit().transition().duration(250).style("stroke-opacity",0).style("fill-opacity",0).remove(),a.attr("transform",function(a){return"translate("+c(e.x()(p[a],a))+",0)"}).transition().duration(250).style("stroke-opacity",1).style("fill-opacity",1),i.length&&(b.append("line").attr("x1",0).attr("y1",-f.top).attr("x2",0).attr("y2",u),b.append("text").attr("class","nv-xValue").attr("x",-6).attr("y",-f.top).attr("text-anchor","end").attr("dy",".9em"),z.select(".nv-hoverValue .nv-xValue").text(k(e.x()(p[i[0]],i[0]))),b.append("text").attr("class","nv-yValue").attr("x",6).attr("y",-f.top).attr("text-anchor","start").attr("dy",".9em"),z.select(".nv-hoverValue .nv-yValue").text(l(e.y()(p[i[0]],i[0]))))}}function r(){function a(a,b){for(var c=Math.abs(e.x()(a[0],0)-b),d=0,f=0;f<a.length;f++)Math.abs(e.x()(a[f],f)-b)<c&&(c=Math.abs(e.x()(a[f],f)-b),d=f);return d}if(!j){var b=d3.mouse(this)[0]-f.left;i=[a(p,Math.round(c.invert(b)))],q()}}var s=d3.select(this);a.utils.initSVG(s);var t=a.utils.availableWidth(g,s,f),u=a.utils.availableHeight(h,s,f);if(b.update=function(){s.call(b)},b.container=this,!p||!p.length)return a.utils.noData(b,s),b;s.selectAll(".nv-noData").remove();var v=e.y()(p[p.length-1],p.length-1);c=e.xScale(),d=e.yScale();var w=s.selectAll("g.nv-wrap.nv-sparklineplus").data([p]),x=w.enter().append("g").attr("class","nvd3 nv-wrap nv-sparklineplus"),y=x.append("g"),z=w.select("g");y.append("g").attr("class","nv-sparklineWrap"),y.append("g").attr("class","nv-valueWrap"),y.append("g").attr("class","nv-hoverArea"),w.attr("transform","translate("+f.left+","+f.top+")");var A=z.select(".nv-sparklineWrap");if(e.width(t).height(u),A.call(e),m){var B=z.select(".nv-valueWrap"),C=B.selectAll(".nv-currentValue").data([v]);C.enter().append("text").attr("class","nv-currentValue").attr("dx",o?-8:8).attr("dy",".9em").style("text-anchor",o?"end":"start"),C.attr("x",t+(o?f.right:0)).attr("y",n?function(a){return d(a)}:0).style("fill",e.color()(p[p.length-1],p.length-1)).text(l(v))}y.select(".nv-hoverArea").append("rect").on("mousemove",r).on("click",function(){j=!j}).on("mouseout",function(){i=[],q()}),z.select(".nv-hoverArea rect").attr("transform",function(){return"translate("+-f.left+","+-f.top+")"}).attr("width",t+f.left+f.right).attr("height",u+f.top)}),b}var c,d,e=a.models.sparkline(),f={top:15,right:100,bottom:10,left:50},g=null,h=null,i=[],j=!1,k=d3.format(",r"),l=d3.format(",.2f"),m=!0,n=!0,o=!1,p=null;return b.sparkline=e,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return g},set:function(a){g=a}},height:{get:function(){return h},set:function(a){h=a}},xTickFormat:{get:function(){return k},set:function(a){k=a}},yTickFormat:{get:function(){return l},set:function(a){l=a}},showLastValue:{get:function(){return m},set:function(a){m=a}},alignValue:{get:function(){return n},set:function(a){n=a}},rightAlignValue:{get:function(){return o},set:function(a){o=a}},noData:{get:function(){return p},set:function(a){p=a}},margin:{get:function(){return f},set:function(a){f.top=void 0!==a.top?a.top:f.top,f.right=void 0!==a.right?a.right:f.right,f.bottom=void 0!==a.bottom?a.bottom:f.bottom,f.left=void 0!==a.left?a.left:f.left}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.stackedArea=function(){"use strict";function b(m){return u.reset(),u.models(r),m.each(function(m){var s=f-e.left-e.right,v=g-e.top-e.bottom;j=d3.select(this),a.utils.initSVG(j),c=r.xScale(),d=r.yScale();var w=m;m.forEach(function(a,b){a.seriesIndex=b,a.values=a.values.map(function(a,c){return a.index=c,a.seriesIndex=b,a})});var x=m.filter(function(a){return!a.disabled});m=d3.layout.stack().order(o).offset(n).values(function(a){return a.values}).x(k).y(l).out(function(a,b,c){a.display={y:c,y0:b}})(x);var y=j.selectAll("g.nv-wrap.nv-stackedarea").data([m]),z=y.enter().append("g").attr("class","nvd3 nv-wrap nv-stackedarea"),A=z.append("defs"),B=z.append("g"),C=y.select("g");B.append("g").attr("class","nv-areaWrap"),B.append("g").attr("class","nv-scatterWrap"),y.attr("transform","translate("+e.left+","+e.top+")"),0==r.forceY().length&&r.forceY().push(0),r.width(s).height(v).x(k).y(function(a){return a.display.y+a.display.y0}).forceY([0]).color(m.map(function(a){return a.color||h(a,a.seriesIndex)}));var D=C.select(".nv-scatterWrap").datum(m);D.call(r),A.append("clipPath").attr("id","nv-edge-clip-"+i).append("rect"),y.select("#nv-edge-clip-"+i+" rect").attr("width",s).attr("height",v),C.attr("clip-path",q?"url(#nv-edge-clip-"+i+")":"");var E=d3.svg.area().x(function(a,b){return c(k(a,b))}).y0(function(a){return d(a.display.y0)}).y1(function(a){return d(a.display.y+a.display.y0)}).interpolate(p),F=d3.svg.area().x(function(a,b){return c(k(a,b))}).y0(function(a){return d(a.display.y0)}).y1(function(a){return d(a.display.y0)}),G=C.select(".nv-areaWrap").selectAll("path.nv-area").data(function(a){return a});G.enter().append("path").attr("class",function(a,b){return"nv-area nv-area-"+b}).attr("d",function(a){return F(a.values,a.seriesIndex)}).on("mouseover",function(a){d3.select(this).classed("hover",!0),t.areaMouseover({point:a,series:a.key,pos:[d3.event.pageX,d3.event.pageY],seriesIndex:a.seriesIndex})}).on("mouseout",function(a){d3.select(this).classed("hover",!1),t.areaMouseout({point:a,series:a.key,pos:[d3.event.pageX,d3.event.pageY],seriesIndex:a.seriesIndex})}).on("click",function(a){d3.select(this).classed("hover",!1),t.areaClick({point:a,series:a.key,pos:[d3.event.pageX,d3.event.pageY],seriesIndex:a.seriesIndex})}),G.exit().remove(),G.style("fill",function(a){return a.color||h(a,a.seriesIndex)}).style("stroke",function(a){return a.color||h(a,a.seriesIndex)}),G.watchTransition(u,"stackedArea path").attr("d",function(a,b){return E(a.values,b)}),r.dispatch.on("elementMouseover.area",function(a){C.select(".nv-chart-"+i+" .nv-area-"+a.seriesIndex).classed("hover",!0)}),r.dispatch.on("elementMouseout.area",function(a){C.select(".nv-chart-"+i+" .nv-area-"+a.seriesIndex).classed("hover",!1)}),b.d3_stackedOffset_stackPercent=function(a){var b,c,d,e=a.length,f=a[0].length,g=[];for(c=0;f>c;++c){for(b=0,d=0;b<w.length;b++)d+=l(w[b].values[c]);if(d)for(b=0;e>b;b++)a[b][c][1]/=d;else for(b=0;e>b;b++)a[b][c][1]=0}for(c=0;f>c;++c)g[c]=0;return g}}),u.renderEnd("stackedArea immediate"),b}var c,d,e={top:0,right:0,bottom:0,left:0},f=960,g=500,h=a.utils.defaultColor(),i=Math.floor(1e5*Math.random()),j=null,k=function(a){return a.x},l=function(a){return a.y},m="stack",n="zero",o="default",p="linear",q=!1,r=a.models.scatter(),s=250,t=d3.dispatch("areaClick","areaMouseover","areaMouseout","renderEnd","elementClick","elementMouseover","elementMouseout");r.pointSize(2.2).pointDomain([2.2,2.2]);var u=a.utils.renderWatch(t,s);return b.dispatch=t,b.scatter=r,r.dispatch.on("elementClick",function(){t.elementClick.apply(this,arguments)}),r.dispatch.on("elementMouseover",function(){t.elementMouseover.apply(this,arguments)}),r.dispatch.on("elementMouseout",function(){t.elementMouseout.apply(this,arguments)}),b.interpolate=function(a){return arguments.length?(p=a,b):p},b.duration=function(a){return arguments.length?(s=a,u.reset(s),r.duration(s),b):s},b.dispatch=t,b.scatter=r,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return f},set:function(a){f=a}},height:{get:function(){return g},set:function(a){g=a}},clipEdge:{get:function(){return q},set:function(a){q=a}},offset:{get:function(){return n},set:function(a){n=a}},order:{get:function(){return o},set:function(a){o=a}},interpolate:{get:function(){return p},set:function(a){p=a}},x:{get:function(){return k},set:function(a){k=d3.functor(a)}},y:{get:function(){return l},set:function(a){l=d3.functor(a)}},margin:{get:function(){return e},set:function(a){e.top=void 0!==a.top?a.top:e.top,e.right=void 0!==a.right?a.right:e.right,e.bottom=void 0!==a.bottom?a.bottom:e.bottom,e.left=void 0!==a.left?a.left:e.left}},color:{get:function(){return h},set:function(b){h=a.utils.getColor(b)}},style:{get:function(){return m},set:function(a){switch(m=a){case"stack":b.offset("zero"),b.order("default");break;case"stream":b.offset("wiggle"),b.order("inside-out");break;case"stream-center":b.offset("silhouette"),b.order("inside-out");break;case"expand":b.offset("expand"),b.order("default");break;case"stack_percent":b.offset(b.d3_stackedOffset_stackPercent),b.order("default")}}},duration:{get:function(){return s},set:function(a){s=a,u.reset(s),r.duration(s)}}}),a.utils.inheritOptions(b,r),a.utils.initOptions(b),b},a.models.stackedAreaChart=function(){"use strict";function b(k){return F.reset(),F.models(e),r&&F.models(f),s&&F.models(g),k.each(function(k){var x=d3.select(this),F=this;a.utils.initSVG(x);var K=a.utils.availableWidth(m,x,l),L=a.utils.availableHeight(n,x,l);if(b.update=function(){x.transition().duration(C).call(b)},b.container=this,v.setter(I(k),b.update).getter(H(k)).update(),v.disabled=k.map(function(a){return!!a.disabled}),!w){var M;w={};for(M in v)w[M]=v[M]instanceof Array?v[M].slice(0):v[M]}if(!(k&&k.length&&k.filter(function(a){return a.values.length}).length))return a.utils.noData(b,x),b;x.selectAll(".nv-noData").remove(),c=e.xScale(),d=e.yScale();var N=x.selectAll("g.nv-wrap.nv-stackedAreaChart").data([k]),O=N.enter().append("g").attr("class","nvd3 nv-wrap nv-stackedAreaChart").append("g"),P=N.select("g");if(O.append("rect").style("opacity",0),O.append("g").attr("class","nv-x nv-axis"),O.append("g").attr("class","nv-y nv-axis"),O.append("g").attr("class","nv-stackedWrap"),O.append("g").attr("class","nv-legendWrap"),O.append("g").attr("class","nv-controlsWrap"),O.append("g").attr("class","nv-interactive"),P.select("rect").attr("width",K).attr("height",L),q){var Q=p?K-z:K;h.width(Q),P.select(".nv-legendWrap").datum(k).call(h),l.top!=h.height()&&(l.top=h.height(),L=a.utils.availableHeight(n,x,l)),P.select(".nv-legendWrap").attr("transform","translate("+(K-Q)+","+-l.top+")")}if(p){var R=[{key:B.stacked||"Stacked",metaKey:"Stacked",disabled:"stack"!=e.style(),style:"stack"},{key:B.stream||"Stream",metaKey:"Stream",disabled:"stream"!=e.style(),style:"stream"},{key:B.expanded||"Expanded",metaKey:"Expanded",disabled:"expand"!=e.style(),style:"expand"},{key:B.stack_percent||"Stack %",metaKey:"Stack_Percent",disabled:"stack_percent"!=e.style(),style:"stack_percent"}];z=A.length/3*260,R=R.filter(function(a){return-1!==A.indexOf(a.metaKey)}),i.width(z).color(["#444","#444","#444"]),P.select(".nv-controlsWrap").datum(R).call(i),l.top!=Math.max(i.height(),h.height())&&(l.top=Math.max(i.height(),h.height()),L=a.utils.availableHeight(n,x,l)),P.select(".nv-controlsWrap").attr("transform","translate(0,"+-l.top+")")}N.attr("transform","translate("+l.left+","+l.top+")"),t&&P.select(".nv-y.nv-axis").attr("transform","translate("+K+",0)"),u&&(j.width(K).height(L).margin({left:l.left,top:l.top}).svgContainer(x).xScale(c),N.select(".nv-interactive").call(j)),e.width(K).height(L);var S=P.select(".nv-stackedWrap").datum(k);if(S.transition().call(e),r&&(f.scale(c)._ticks(a.utils.calcTicksX(K/100,k)).tickSize(-L,0),P.select(".nv-x.nv-axis").attr("transform","translate(0,"+L+")"),P.select(".nv-x.nv-axis").transition().duration(0).call(f)),s){var T;if(T="wiggle"===e.offset()?0:a.utils.calcTicksY(L/36,k),g.scale(d)._ticks(T).tickSize(-K,0),"expand"===e.style()||"stack_percent"===e.style()){var U=g.tickFormat();D&&U===J||(D=U),g.tickFormat(J)}else D&&(g.tickFormat(D),D=null);P.select(".nv-y.nv-axis").transition().duration(0).call(g)}e.dispatch.on("areaClick.toggle",function(a){k.forEach(1===k.filter(function(a){return!a.disabled}).length?function(a){a.disabled=!1}:function(b,c){b.disabled=c!=a.seriesIndex}),v.disabled=k.map(function(a){return!!a.disabled}),y.stateChange(v),b.update()}),h.dispatch.on("stateChange",function(a){for(var c in a)v[c]=a[c];y.stateChange(v),b.update()}),i.dispatch.on("legendClick",function(a){a.disabled&&(R=R.map(function(a){return a.disabled=!0,a}),a.disabled=!1,e.style(a.style),v.style=e.style(),y.stateChange(v),b.update())}),j.dispatch.on("elementMousemove",function(c){e.clearHighlights();var d,g,h,i=[];if(k.filter(function(a,b){return a.seriesIndex=b,!a.disabled}).forEach(function(f,j){g=a.interactiveBisect(f.values,c.pointXValue,b.x());var k=f.values[g],l=b.y()(k,g);if(null!=l&&e.highlightPoint(j,g,!0),"undefined"!=typeof k){"undefined"==typeof d&&(d=k),"undefined"==typeof h&&(h=b.xScale()(b.x()(k,g)));var m="expand"==e.style()?k.display.y:b.y()(k,g);i.push({key:f.key,value:m,color:o(f,f.seriesIndex),stackedValue:k.display})}}),i.reverse(),i.length>2){var m=b.yScale().invert(c.mouseY),n=null;i.forEach(function(a,b){m=Math.abs(m);var c=Math.abs(a.stackedValue.y0),d=Math.abs(a.stackedValue.y);return m>=c&&d+c>=m?void(n=b):void 0}),null!=n&&(i[n].highlight=!0)}var p=f.tickFormat()(b.x()(d,g)),q=j.tooltip.valueFormatter();"expand"===e.style()||"stack_percent"===e.style()?(E||(E=q),q=d3.format(".1%")):E&&(q=E,E=null),j.tooltip.position({left:h+l.left,top:c.mouseY+l.top}).chartContainer(F.parentNode).valueFormatter(q).data({value:p,series:i})(),j.renderGuideLine(h)}),j.dispatch.on("elementMouseout",function(){e.clearHighlights()}),y.on("changeState",function(a){"undefined"!=typeof a.disabled&&k.length===a.disabled.length&&(k.forEach(function(b,c){b.disabled=a.disabled[c]}),v.disabled=a.disabled),"undefined"!=typeof a.style&&(e.style(a.style),G=a.style),b.update()})}),F.renderEnd("stacked Area chart immediate"),b}var c,d,e=a.models.stackedArea(),f=a.models.axis(),g=a.models.axis(),h=a.models.legend(),i=a.models.legend(),j=a.interactiveGuideline(),k=a.models.tooltip(),l={top:30,right:25,bottom:50,left:60},m=null,n=null,o=a.utils.defaultColor(),p=!0,q=!0,r=!0,s=!0,t=!1,u=!1,v=a.utils.state(),w=null,x=null,y=d3.dispatch("stateChange","changeState","renderEnd"),z=250,A=["Stacked","Stream","Expanded"],B={},C=250;v.style=e.style(),f.orient("bottom").tickPadding(7),g.orient(t?"right":"left"),k.headerFormatter(function(a,b){return f.tickFormat()(a,b)}).valueFormatter(function(a,b){return g.tickFormat()(a,b)}),j.tooltip.headerFormatter(function(a,b){return f.tickFormat()(a,b)}).valueFormatter(function(a,b){return g.tickFormat()(a,b)});var D=null,E=null;i.updateState(!1);var F=a.utils.renderWatch(y),G=e.style(),H=function(a){return function(){return{active:a.map(function(a){return!a.disabled}),style:e.style()}}},I=function(a){return function(b){void 0!==b.style&&(G=b.style),void 0!==b.active&&a.forEach(function(a,c){a.disabled=!b.active[c]})}},J=d3.format("%");return e.dispatch.on("elementMouseover.tooltip",function(a){a.point.x=e.x()(a.point),a.point.y=e.y()(a.point),k.data(a).position(a.pos).hidden(!1)}),e.dispatch.on("elementMouseout.tooltip",function(){k.hidden(!0)}),b.dispatch=y,b.stacked=e,b.legend=h,b.controls=i,b.xAxis=f,b.yAxis=g,b.interactiveLayer=j,b.tooltip=k,b.dispatch=y,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return m},set:function(a){m=a}},height:{get:function(){return n},set:function(a){n=a}},showLegend:{get:function(){return q},set:function(a){q=a}},showXAxis:{get:function(){return r},set:function(a){r=a}},showYAxis:{get:function(){return s},set:function(a){s=a}},defaultState:{get:function(){return w},set:function(a){w=a}},noData:{get:function(){return x},set:function(a){x=a}},showControls:{get:function(){return p},set:function(a){p=a}},controlLabels:{get:function(){return B},set:function(a){B=a}},controlOptions:{get:function(){return A},set:function(a){A=a}},tooltips:{get:function(){return k.enabled()},set:function(b){a.deprecated("tooltips","use chart.tooltip.enabled() instead"),k.enabled(!!b)}},tooltipContent:{get:function(){return k.contentGenerator()},set:function(b){a.deprecated("tooltipContent","use chart.tooltip.contentGenerator() instead"),k.contentGenerator(b)}},margin:{get:function(){return l},set:function(a){l.top=void 0!==a.top?a.top:l.top,l.right=void 0!==a.right?a.right:l.right,l.bottom=void 0!==a.bottom?a.bottom:l.bottom,l.left=void 0!==a.left?a.left:l.left}},duration:{get:function(){return C},set:function(a){C=a,F.reset(C),e.duration(C),f.duration(C),g.duration(C)}},color:{get:function(){return o},set:function(b){o=a.utils.getColor(b),h.color(o),e.color(o)}},rightAlignYAxis:{get:function(){return t},set:function(a){t=a,g.orient(t?"right":"left")}},useInteractiveGuideline:{get:function(){return u},set:function(a){u=!!a,b.interactive(!a),b.useVoronoi(!a),e.scatter.interactive(!a)}}}),a.utils.inheritOptions(b,e),a.utils.initOptions(b),b},a.models.sunburst=function(){"use strict";function b(u){return t.reset(),u.each(function(b){function t(a){a.x0=a.x,a.dx0=a.dx}function u(a){var b=d3.interpolate(p.domain(),[a.x,a.x+a.dx]),c=d3.interpolate(q.domain(),[a.y,1]),d=d3.interpolate(q.range(),[a.y?20:0,y]);return function(a,e){return e?function(){return s(a)}:function(e){return p.domain(b(e)),q.domain(c(e)).range(d(e)),s(a)}}}l=d3.select(this);var v,w=a.utils.availableWidth(g,l,f),x=a.utils.availableHeight(h,l,f),y=Math.min(w,x)/2;a.utils.initSVG(l);var z=l.selectAll(".nv-wrap.nv-sunburst").data(b),A=z.enter().append("g").attr("class","nvd3 nv-wrap nv-sunburst nv-chart-"+k),B=A.selectAll("nv-sunburst");z.attr("transform","translate("+w/2+","+x/2+")"),l.on("click",function(a,b){o.chartClick({data:a,index:b,pos:d3.event,id:k})}),q.range([0,y]),c=c||b,e=b[0],r.value(j[i]||j.count),v=B.data(r.nodes).enter().append("path").attr("d",s).style("fill",function(a){return m((a.children?a:a.parent).name)}).style("stroke","#FFF").on("click",function(a){d!==c&&c!==a&&(d=c),c=a,v.transition().duration(n).attrTween("d",u(a))}).each(t).on("dblclick",function(a){d.parent==a&&v.transition().duration(n).attrTween("d",u(e))}).each(t).on("mouseover",function(a){d3.select(this).classed("hover",!0).style("opacity",.8),o.elementMouseover({data:a,color:d3.select(this).style("fill")})}).on("mouseout",function(a){d3.select(this).classed("hover",!1).style("opacity",1),o.elementMouseout({data:a})}).on("mousemove",function(a){o.elementMousemove({data:a})})}),t.renderEnd("sunburst immediate"),b}var c,d,e,f={top:0,right:0,bottom:0,left:0},g=null,h=null,i="count",j={count:function(){return 1},size:function(a){return a.size}},k=Math.floor(1e4*Math.random()),l=null,m=a.utils.defaultColor(),n=500,o=d3.dispatch("chartClick","elementClick","elementDblClick","elementMousemove","elementMouseover","elementMouseout","renderEnd"),p=d3.scale.linear().range([0,2*Math.PI]),q=d3.scale.sqrt(),r=d3.layout.partition().sort(null).value(function(){return 1}),s=d3.svg.arc().startAngle(function(a){return Math.max(0,Math.min(2*Math.PI,p(a.x)))}).endAngle(function(a){return Math.max(0,Math.min(2*Math.PI,p(a.x+a.dx)))}).innerRadius(function(a){return Math.max(0,q(a.y))}).outerRadius(function(a){return Math.max(0,q(a.y+a.dy))}),t=a.utils.renderWatch(o);return b.dispatch=o,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{width:{get:function(){return g},set:function(a){g=a}},height:{get:function(){return h},set:function(a){h=a}},mode:{get:function(){return i},set:function(a){i=a}},id:{get:function(){return k},set:function(a){k=a}},duration:{get:function(){return n},set:function(a){n=a}},margin:{get:function(){return f},set:function(a){f.top=void 0!=a.top?a.top:f.top,f.right=void 0!=a.right?a.right:f.right,f.bottom=void 0!=a.bottom?a.bottom:f.bottom,f.left=void 0!=a.left?a.left:f.left}},color:{get:function(){return m},set:function(b){m=a.utils.getColor(b)}}}),a.utils.initOptions(b),b},a.models.sunburstChart=function(){"use strict";function b(d){return m.reset(),m.models(c),d.each(function(d){var h=d3.select(this);a.utils.initSVG(h);var i=a.utils.availableWidth(f,h,e),j=a.utils.availableHeight(g,h,e);if(b.update=function(){0===k?h.call(b):h.transition().duration(k).call(b)},b.container=this,!d||!d.length)return a.utils.noData(b,h),b;h.selectAll(".nv-noData").remove();var l=h.selectAll("g.nv-wrap.nv-sunburstChart").data(d),m=l.enter().append("g").attr("class","nvd3 nv-wrap nv-sunburstChart").append("g"),n=l.select("g");m.append("g").attr("class","nv-sunburstWrap"),l.attr("transform","translate("+e.left+","+e.top+")"),c.width(i).height(j);var o=n.select(".nv-sunburstWrap").datum(d);d3.transition(o).call(c)}),m.renderEnd("sunburstChart immediate"),b}var c=a.models.sunburst(),d=a.models.tooltip(),e={top:30,right:20,bottom:20,left:20},f=null,g=null,h=a.utils.defaultColor(),i=(Math.round(1e5*Math.random()),null),j=null,k=250,l=d3.dispatch("tooltipShow","tooltipHide","stateChange","changeState","renderEnd"),m=a.utils.renderWatch(l);return d.headerEnabled(!1).duration(0).valueFormatter(function(a){return a}),c.dispatch.on("elementMouseover.tooltip",function(a){a.series={key:a.data.name,value:a.data.size,color:a.color},d.data(a).hidden(!1)}),c.dispatch.on("elementMouseout.tooltip",function(){d.hidden(!0)}),c.dispatch.on("elementMousemove.tooltip",function(){d.position({top:d3.event.pageY,left:d3.event.pageX})()}),b.dispatch=l,b.sunburst=c,b.tooltip=d,b.options=a.utils.optionsFunc.bind(b),b._options=Object.create({},{noData:{get:function(){return j},set:function(a){j=a}},defaultState:{get:function(){return i},set:function(a){i=a}},color:{get:function(){return h},set:function(a){h=a,c.color(h)}},duration:{get:function(){return k},set:function(a){k=a,m.reset(k),c.duration(k)}},margin:{get:function(){return e},set:function(a){e.top=void 0!==a.top?a.top:e.top,e.right=void 0!==a.right?a.right:e.right,e.bottom=void 0!==a.bottom?a.bottom:e.bottom,e.left=void 0!==a.left?a.left:e.left}}}),a.utils.inheritOptions(b,c),a.utils.initOptions(b),b},a.version="1.8.1"}(); \ No newline at end of file
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/popper.min.js b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/popper.min.js
new file mode 100644
index 000000000..bb1aaae3e
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/js/popper.min.js
@@ -0,0 +1,5 @@
+/*
+ Copyright (C) Federico Zivolo 2020
+ Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
+ */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=e.ownerDocument.defaultView,n=o.getComputedStyle(e,null);return t?n[t]:n}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function i(e){return e&&e.referenceNode?e.referenceNode:e}function r(e){return 11===e?re:10===e?pe:re||pe}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent||null;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TH','TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',o='top'===t?'scrollTop':'scrollLeft',n=e.nodeName;if('BODY'===n||'HTML'===n){var i=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||i;return r[o]}return e[o]}function f(e,t){var o=2<arguments.length&&void 0!==arguments[2]&&arguments[2],n=l(t,'top'),i=l(t,'left'),r=o?-1:1;return e.top+=n*r,e.bottom+=n*r,e.left+=i*r,e.right+=i*r,e}function m(e,t){var o='x'===t?'Left':'Top',n='Left'==o?'Right':'Bottom';return parseFloat(e['border'+o+'Width'])+parseFloat(e['border'+n+'Width'])}function h(e,t,o,n){return ee(t['offset'+e],t['scroll'+e],o['client'+e],o['offset'+e],o['scroll'+e],r(10)?parseInt(o['offset'+e])+parseInt(n['margin'+('Height'===e?'Top':'Left')])+parseInt(n['margin'+('Height'===e?'Bottom':'Right')]):0)}function c(e){var t=e.body,o=e.documentElement,n=r(10)&&getComputedStyle(o);return{height:h('Height',t,o,n),width:h('Width',t,o,n)}}function g(e){return le({},e,{right:e.left+e.width,bottom:e.top+e.height})}function u(e){var o={};try{if(r(10)){o=e.getBoundingClientRect();var n=l(e,'top'),i=l(e,'left');o.top+=n,o.left+=i,o.bottom+=n,o.right+=i}else o=e.getBoundingClientRect()}catch(t){}var p={left:o.left,top:o.top,width:o.right-o.left,height:o.bottom-o.top},s='HTML'===e.nodeName?c(e.ownerDocument):{},d=s.width||e.clientWidth||p.width,a=s.height||e.clientHeight||p.height,f=e.offsetWidth-d,h=e.offsetHeight-a;if(f||h){var u=t(e);f-=m(u,'x'),h-=m(u,'y'),p.width-=f,p.height-=h}return g(p)}function b(e,o){var i=2<arguments.length&&void 0!==arguments[2]&&arguments[2],p=r(10),s='HTML'===o.nodeName,d=u(e),a=u(o),l=n(e),m=t(o),h=parseFloat(m.borderTopWidth),c=parseFloat(m.borderLeftWidth);i&&s&&(a.top=ee(a.top,0),a.left=ee(a.left,0));var b=g({top:d.top-a.top-h,left:d.left-a.left-c,width:d.width,height:d.height});if(b.marginTop=0,b.marginLeft=0,!p&&s){var w=parseFloat(m.marginTop),y=parseFloat(m.marginLeft);b.top-=h-w,b.bottom-=h-w,b.left-=c-y,b.right-=c-y,b.marginTop=w,b.marginLeft=y}return(p&&!i?o.contains(l):o===l&&'BODY'!==l.nodeName)&&(b=f(b,o)),b}function w(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=e.ownerDocument.documentElement,n=b(e,o),i=ee(o.clientWidth,window.innerWidth||0),r=ee(o.clientHeight,window.innerHeight||0),p=t?0:l(o),s=t?0:l(o,'left'),d={top:p-n.top+n.marginTop,left:s-n.left+n.marginLeft,width:i,height:r};return g(d)}function y(e){var n=e.nodeName;if('BODY'===n||'HTML'===n)return!1;if('fixed'===t(e,'position'))return!0;var i=o(e);return!!i&&y(i)}function E(e){if(!e||!e.parentElement||r())return document.documentElement;for(var o=e.parentElement;o&&'none'===t(o,'transform');)o=o.parentElement;return o||document.documentElement}function v(e,t,r,p){var s=4<arguments.length&&void 0!==arguments[4]&&arguments[4],d={top:0,left:0},l=s?E(e):a(e,i(t));if('viewport'===p)d=w(l,s);else{var f;'scrollParent'===p?(f=n(o(t)),'BODY'===f.nodeName&&(f=e.ownerDocument.documentElement)):'window'===p?f=e.ownerDocument.documentElement:f=p;var m=b(f,l,s);if('HTML'===f.nodeName&&!y(l)){var h=c(e.ownerDocument),g=h.height,u=h.width;d.top+=m.top-m.marginTop,d.bottom=g+m.top,d.left+=m.left-m.marginLeft,d.right=u+m.left}else d=m}r=r||0;var v='number'==typeof r;return d.left+=v?r:r.left||0,d.top+=v?r:r.top||0,d.right-=v?r:r.right||0,d.bottom-=v?r:r.bottom||0,d}function x(e){var t=e.width,o=e.height;return t*o}function O(e,t,o,n,i){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var p=v(o,n,r,i),s={top:{width:p.width,height:t.top-p.top},right:{width:p.right-t.right,height:p.height},bottom:{width:p.width,height:p.bottom-t.bottom},left:{width:t.left-p.left,height:p.height}},d=Object.keys(s).map(function(e){return le({key:e},s[e],{area:x(s[e])})}).sort(function(e,t){return t.area-e.area}),a=d.filter(function(e){var t=e.width,n=e.height;return t>=o.clientWidth&&n>=o.clientHeight}),l=0<a.length?a[0].key:d[0].key,f=e.split('-')[1];return l+(f?'-'+f:'')}function L(e,t,o){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,r=n?E(t):a(t,i(o));return b(o,r,n)}function S(e){var t=e.ownerDocument.defaultView,o=t.getComputedStyle(e),n=parseFloat(o.marginTop||0)+parseFloat(o.marginBottom||0),i=parseFloat(o.marginLeft||0)+parseFloat(o.marginRight||0),r={width:e.offsetWidth+i,height:e.offsetHeight+n};return r}function T(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function C(e,t,o){o=o.split('-')[0];var n=S(e),i={width:n.width,height:n.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',s=r?'left':'top',d=r?'height':'width',a=r?'width':'height';return i[p]=t[p]+t[d]/2-n[d]/2,i[s]=o===s?t[s]-n[a]:t[T(s)],i}function D(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function N(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var n=D(e,function(e){return e[t]===o});return e.indexOf(n)}function P(t,o,n){var i=void 0===n?t:t.slice(0,N(t,'name',n));return i.forEach(function(t){t['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var n=t['function']||t.fn;t.enabled&&e(n)&&(o.offsets.popper=g(o.offsets.popper),o.offsets.reference=g(o.offsets.reference),o=n(o,t))}),o}function k(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=L(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=C(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?'fixed':'absolute',e=P(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function W(e,t){return e.some(function(e){var o=e.name,n=e.enabled;return n&&o===t})}function B(e){for(var t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<t.length;n++){var i=t[n],r=i?''+i+o:e;if('undefined'!=typeof document.body.style[r])return r}return null}function H(){return this.state.isDestroyed=!0,W(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.position='',this.popper.style.top='',this.popper.style.left='',this.popper.style.right='',this.popper.style.bottom='',this.popper.style.willChange='',this.popper.style[B('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function A(e){var t=e.ownerDocument;return t?t.defaultView:window}function M(e,t,o,i){var r='BODY'===e.nodeName,p=r?e.ownerDocument.defaultView:e;p.addEventListener(t,o,{passive:!0}),r||M(n(p.parentNode),t,o,i),i.push(p)}function F(e,t,o,i){o.updateBound=i,A(e).addEventListener('resize',o.updateBound,{passive:!0});var r=n(e);return M(r,'scroll',o.updateBound,o.scrollParents),o.scrollElement=r,o.eventsEnabled=!0,o}function I(){this.state.eventsEnabled||(this.state=F(this.reference,this.options,this.state,this.scheduleUpdate))}function R(e,t){return A(e).removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function U(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=R(this.reference,this.state))}function Y(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function V(e,t){Object.keys(t).forEach(function(o){var n='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&Y(t[o])&&(n='px'),e.style[o]=t[o]+n})}function j(e,t){Object.keys(t).forEach(function(o){var n=t[o];!1===n?e.removeAttribute(o):e.setAttribute(o,t[o])})}function q(e,t){var o=e.offsets,n=o.popper,i=o.reference,r=$,p=function(e){return e},s=r(i.width),d=r(n.width),a=-1!==['left','right'].indexOf(e.placement),l=-1!==e.placement.indexOf('-'),f=t?a||l||s%2==d%2?r:Z:p,m=t?r:p;return{left:f(1==s%2&&1==d%2&&!l&&t?n.left-1:n.left),top:m(n.top),bottom:m(n.bottom),right:f(n.right)}}function K(e,t,o){var n=D(e,function(e){var o=e.name;return o===t}),i=!!n&&e.some(function(e){return e.name===o&&e.enabled&&e.order<n.order});if(!i){var r='`'+t+'`';console.warn('`'+o+'`'+' modifier is required by '+r+' modifier in order to work, be sure to include it before '+r+'!')}return i}function z(e){return'end'===e?'start':'start'===e?'end':e}function G(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=he.indexOf(e),n=he.slice(o+1).concat(he.slice(0,o));return t?n.reverse():n}function _(e,t,o,n){var i=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+i[1],p=i[2];if(!r)return e;if(0===p.indexOf('%')){var s;switch(p){case'%p':s=o;break;case'%':case'%r':default:s=n;}var d=g(s);return d[t]/100*r}if('vh'===p||'vw'===p){var a;return a='vh'===p?ee(document.documentElement.clientHeight,window.innerHeight||0):ee(document.documentElement.clientWidth,window.innerWidth||0),a/100*r}return r}function X(e,t,o,n){var i=[0,0],r=-1!==['right','left'].indexOf(n),p=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=p.indexOf(D(p,function(e){return-1!==e.search(/,|\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\s*,\s*|\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,n){var i=(1===n?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return _(e,i,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,n){Y(o)&&(i[t]+=o*('-'===e[n-1]?-1:1))})}),i}function J(e,t){var o,n=t.offset,i=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=i.split('-')[0];return o=Y(+n)?[+n,0]:X(n,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e}var Q=Math.min,Z=Math.floor,$=Math.round,ee=Math.max,te='undefined'!=typeof window&&'undefined'!=typeof document&&'undefined'!=typeof navigator,oe=function(){for(var e=['Edge','Trident','Firefox'],t=0;t<e.length;t+=1)if(te&&0<=navigator.userAgent.indexOf(e[t]))return 1;return 0}(),ne=te&&window.Promise,ie=ne?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},oe))}},re=te&&!!(window.MSInputMethodContext&&document.documentMode),pe=te&&/MSIE 10/.test(navigator.userAgent),se=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},de=function(){function e(e,t){for(var o,n=0;n<t.length;n++)o=t[n],o.enumerable=o.enumerable||!1,o.configurable=!0,'value'in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),ae=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},le=Object.assign||function(e){for(var t,o=1;o<arguments.length;o++)for(var n in t=arguments[o],t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},fe=te&&/Firefox/i.test(navigator.userAgent),me=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],he=me.slice(3),ce={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},ge=function(){function t(o,n){var i=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};se(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=ie(this.update.bind(this)),this.options=le({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=o&&o.jquery?o[0]:o,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(le({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){i.options.modifiers[e]=le({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return le({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var p=this.options.eventsEnabled;p&&this.enableEventListeners(),this.state.eventsEnabled=p}return de(t,[{key:'update',value:function(){return k.call(this)}},{key:'destroy',value:function(){return H.call(this)}},{key:'enableEventListeners',value:function(){return I.call(this)}},{key:'disableEventListeners',value:function(){return U.call(this)}}]),t}();return ge.Utils=('undefined'==typeof window?global:window).PopperUtils,ge.placements=me,ge.Defaults={placement:'bottom',positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split('-')[0],n=t.split('-')[1];if(n){var i=e.offsets,r=i.reference,p=i.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',l={start:ae({},d,r[d]),end:ae({},d,r[d]+r[a]-p[a])};e.offsets.popper=le({},p,l[n])}return e}},offset:{order:200,enabled:!0,fn:J,offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||p(e.instance.popper);e.instance.reference===o&&(o=p(o));var n=B('transform'),i=e.instance.popper.style,r=i.top,s=i.left,d=i[n];i.top='',i.left='',i[n]='';var a=v(e.instance.popper,e.instance.reference,t.padding,o,e.positionFixed);i.top=r,i.left=s,i[n]=d,t.boundaries=a;var l=t.priority,f=e.offsets.popper,m={primary:function(e){var o=f[e];return f[e]<a[e]&&!t.escapeWithReference&&(o=ee(f[e],a[e])),ae({},e,o)},secondary:function(e){var o='right'===e?'left':'top',n=f[o];return f[e]>a[e]&&!t.escapeWithReference&&(n=Q(f[o],a[e]-('right'===e?f.width:f.height))),ae({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=le({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]<r(n[d])&&(e.offsets.popper[d]=r(n[d])-o[a]),o[d]>r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!K(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-u<s[m]&&(e.offsets.popper[m]-=s[m]-(d[c]-u)),d[m]+u>s[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f]),E=parseFloat(w['border'+f+'Width']),v=b-e.offsets.popper[m]-y-E;return v=ee(Q(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},ae(n,m,$(v)),ae(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case ce.FLIP:p=[n,i];break;case ce.CLOCKWISE:p=G(n);break;case ce.COUNTERCLOCKWISE:p=G(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)<f(l.right)||'top'===n&&f(a.bottom)>f(l.top)||'bottom'===n&&f(a.top)<f(l.bottom),h=f(a.left)<f(o.left),c=f(a.right)>f(o.right),g=f(a.top)<f(o.top),u=f(a.bottom)>f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u),E=!!t.flipVariationsByContent&&(w&&'start'===r&&c||w&&'end'===r&&h||!w&&'start'===r&&u||!w&&'end'===r&&g),v=y||E;(m||b||v)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),v&&(r=z(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=le({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport',flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!K(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<o.top||t.left>o.right||t.top>o.bottom||t.right<o.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var o=t.x,n=t.y,i=e.offsets.popper,r=D(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==r&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var s,d,a=void 0===r?t.gpuAcceleration:r,l=p(e.instance.popper),f=u(l),m={position:i.position},h=q(e,2>window.devicePixelRatio||!fe),c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=B('transform');if(d='bottom'==c?'HTML'===l.nodeName?-l.clientHeight+h.bottom:-f.height+h.bottom:h.top,s='right'==g?'HTML'===l.nodeName?-l.clientWidth+h.right:-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==g?-1:1;m[c]=d*w,m[g]=s*y,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=le({},E,e.attributes),e.styles=le({},m,e.styles),e.arrowStyles=le({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return V(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&V(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),V(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ge});
+//# sourceMappingURL=popper.min.js.map
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/line.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/line.html.dist
new file mode 100644
index 000000000..89810d157
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/line.html.dist
@@ -0,0 +1 @@
+ <tr class="{{class}} d-flex"><td {{popover}} class="col-1 text-right"><a id="{{lineNumber}}" href="#{{lineNumber}}">{{lineNumber}}</a></td><td class="col-11 codeLine">{{lineContent}}</td></tr>
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/lines.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/lines.html.dist
new file mode 100644
index 000000000..add40e4e9
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/lines.html.dist
@@ -0,0 +1,5 @@
+<table id="code" class="table table-borderless table-condensed">
+<tbody>
+{{lines}}
+</tbody>
+</table>
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item.html.dist
new file mode 100644
index 000000000..c117adc44
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item.html.dist
@@ -0,0 +1,12 @@
+ <tr>
+ <td class="{{methods_level}}">{{name}}</td>
+ <td class="{{lines_level}} big">{{lines_bar}}</td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_executed_percent}}</div></td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_number}}</div></td>
+ <td class="{{methods_level}} big">{{methods_bar}}</td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_tested_percent}}</div></td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_number}}</div></td>
+ <td class="{{methods_level}} small">{{crap}}</td>
+ <td class="{{methods_level}}" colspan="3"></td>
+ </tr>
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item_branch.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item_branch.html.dist
new file mode 100644
index 000000000..e8cbe0684
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/method_item_branch.html.dist
@@ -0,0 +1,18 @@
+ <tr>
+ <td class="{{methods_level}}">{{name}}</td>
+ <td class="{{lines_level}} big">{{lines_bar}}</td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_executed_percent}}</div></td>
+ <td class="{{lines_level}} small"><div align="right">{{lines_number}}</div></td>
+ <td class="{{branches_level}} big">{{branches_bar}}</td>
+ <td class="{{branches_level}} small"><div align="right">{{branches_executed_percent}}</div></td>
+ <td class="{{branches_level}} small"><div align="right">{{branches_number}}</div></td>
+ <td class="{{paths_level}} big">{{paths_bar}}</td>
+ <td class="{{paths_level}} small"><div align="right">{{paths_executed_percent}}</div></td>
+ <td class="{{paths_level}} small"><div align="right">{{paths_number}}</div></td>
+ <td class="{{methods_level}} big">{{methods_bar}}</td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_tested_percent}}</div></td>
+ <td class="{{methods_level}} small"><div align="right">{{methods_number}}</div></td>
+ <td class="{{methods_level}} small">{{crap}}</td>
+ <td class="{{methods_level}}" colspan="3"></td>
+ </tr>
+
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/paths.html.dist b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/paths.html.dist
new file mode 100644
index 000000000..d14b8ad9d
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Template/paths.html.dist
@@ -0,0 +1,9 @@
+<hr/>
+<h4>Paths</h4>
+<p>
+ Below are the source code lines that represent each code path as identified by Xdebug. Please note a path is not
+ necessarily coterminous with a line, a line may contain multiple paths and therefore show up more than once.
+ Please also be aware that some paths may include implicit rather than explicit branches, e.g. an <code>if</code> statement
+ <i>always</i> has an <code>else</code> as part of its logical flow even if you didn't write one.
+</p>
+{{paths}}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/PHP.php b/vendor/phpunit/php-code-coverage/src/Report/PHP.php
new file mode 100644
index 000000000..d16b1b84f
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/PHP.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report;
+
+use function dirname;
+use function file_put_contents;
+use function serialize;
+use function sprintf;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException;
+use SebastianBergmann\CodeCoverage\Util\Filesystem;
+
+final class PHP
+{
+ public function process(CodeCoverage $coverage, ?string $target = null): string
+ {
+ $buffer = sprintf(
+ "<?php
+return \unserialize(<<<'END_OF_COVERAGE_SERIALIZATION'%s%s%sEND_OF_COVERAGE_SERIALIZATION%s);",
+ PHP_EOL,
+ serialize($coverage),
+ PHP_EOL,
+ PHP_EOL
+ );
+
+ if ($target !== null) {
+ Filesystem::createDirectory(dirname($target));
+
+ if (@file_put_contents($target, $buffer) === false) {
+ throw new WriteOperationFailedException($target);
+ }
+ }
+
+ return $buffer;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Text.php b/vendor/phpunit/php-code-coverage/src/Report/Text.php
new file mode 100644
index 000000000..755c2dd48
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Text.php
@@ -0,0 +1,341 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report;
+
+use const PHP_EOL;
+use function array_map;
+use function date;
+use function ksort;
+use function max;
+use function sprintf;
+use function str_pad;
+use function strlen;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Node\File;
+use SebastianBergmann\CodeCoverage\Util\Percentage;
+
+final class Text
+{
+ /**
+ * @var string
+ */
+ private const COLOR_GREEN = "\x1b[30;42m";
+
+ /**
+ * @var string
+ */
+ private const COLOR_YELLOW = "\x1b[30;43m";
+
+ /**
+ * @var string
+ */
+ private const COLOR_RED = "\x1b[37;41m";
+
+ /**
+ * @var string
+ */
+ private const COLOR_HEADER = "\x1b[1;37;40m";
+
+ /**
+ * @var string
+ */
+ private const COLOR_RESET = "\x1b[0m";
+
+ /**
+ * @var string
+ */
+ private const COLOR_EOL = "\x1b[2K";
+
+ /**
+ * @var int
+ */
+ private $lowUpperBound;
+
+ /**
+ * @var int
+ */
+ private $highLowerBound;
+
+ /**
+ * @var bool
+ */
+ private $showUncoveredFiles;
+
+ /**
+ * @var bool
+ */
+ private $showOnlySummary;
+
+ public function __construct(int $lowUpperBound = 50, int $highLowerBound = 90, bool $showUncoveredFiles = false, bool $showOnlySummary = false)
+ {
+ $this->lowUpperBound = $lowUpperBound;
+ $this->highLowerBound = $highLowerBound;
+ $this->showUncoveredFiles = $showUncoveredFiles;
+ $this->showOnlySummary = $showOnlySummary;
+ }
+
+ public function process(CodeCoverage $coverage, bool $showColors = false): string
+ {
+ $hasBranchCoverage = !empty($coverage->getData(true)->functionCoverage());
+
+ $output = PHP_EOL . PHP_EOL;
+ $report = $coverage->getReport();
+
+ $colors = [
+ 'header' => '',
+ 'classes' => '',
+ 'methods' => '',
+ 'lines' => '',
+ 'branches' => '',
+ 'paths' => '',
+ 'reset' => '',
+ 'eol' => '',
+ ];
+
+ if ($showColors) {
+ $colors['classes'] = $this->coverageColor(
+ $report->numberOfTestedClassesAndTraits(),
+ $report->numberOfClassesAndTraits()
+ );
+
+ $colors['methods'] = $this->coverageColor(
+ $report->numberOfTestedMethods(),
+ $report->numberOfMethods()
+ );
+
+ $colors['lines'] = $this->coverageColor(
+ $report->numberOfExecutedLines(),
+ $report->numberOfExecutableLines()
+ );
+
+ $colors['branches'] = $this->coverageColor(
+ $report->numberOfExecutedBranches(),
+ $report->numberOfExecutableBranches()
+ );
+
+ $colors['paths'] = $this->coverageColor(
+ $report->numberOfExecutedPaths(),
+ $report->numberOfExecutablePaths()
+ );
+
+ $colors['reset'] = self::COLOR_RESET;
+ $colors['header'] = self::COLOR_HEADER;
+ $colors['eol'] = self::COLOR_EOL;
+ }
+
+ $classes = sprintf(
+ ' Classes: %6s (%d/%d)',
+ Percentage::fromFractionAndTotal(
+ $report->numberOfTestedClassesAndTraits(),
+ $report->numberOfClassesAndTraits()
+ )->asString(),
+ $report->numberOfTestedClassesAndTraits(),
+ $report->numberOfClassesAndTraits()
+ );
+
+ $methods = sprintf(
+ ' Methods: %6s (%d/%d)',
+ Percentage::fromFractionAndTotal(
+ $report->numberOfTestedMethods(),
+ $report->numberOfMethods(),
+ )->asString(),
+ $report->numberOfTestedMethods(),
+ $report->numberOfMethods()
+ );
+
+ $paths = '';
+ $branches = '';
+
+ if ($hasBranchCoverage) {
+ $paths = sprintf(
+ ' Paths: %6s (%d/%d)',
+ Percentage::fromFractionAndTotal(
+ $report->numberOfExecutedPaths(),
+ $report->numberOfExecutablePaths(),
+ )->asString(),
+ $report->numberOfExecutedPaths(),
+ $report->numberOfExecutablePaths()
+ );
+
+ $branches = sprintf(
+ ' Branches: %6s (%d/%d)',
+ Percentage::fromFractionAndTotal(
+ $report->numberOfExecutedBranches(),
+ $report->numberOfExecutableBranches(),
+ )->asString(),
+ $report->numberOfExecutedBranches(),
+ $report->numberOfExecutableBranches()
+ );
+ }
+
+ $lines = sprintf(
+ ' Lines: %6s (%d/%d)',
+ Percentage::fromFractionAndTotal(
+ $report->numberOfExecutedLines(),
+ $report->numberOfExecutableLines(),
+ )->asString(),
+ $report->numberOfExecutedLines(),
+ $report->numberOfExecutableLines()
+ );
+
+ $padding = max(array_map('strlen', [$classes, $methods, $lines]));
+
+ if ($this->showOnlySummary) {
+ $title = 'Code Coverage Report Summary:';
+ $padding = max($padding, strlen($title));
+
+ $output .= $this->format($colors['header'], $padding, $title);
+ } else {
+ $date = date(' Y-m-d H:i:s');
+ $title = 'Code Coverage Report:';
+
+ $output .= $this->format($colors['header'], $padding, $title);
+ $output .= $this->format($colors['header'], $padding, $date);
+ $output .= $this->format($colors['header'], $padding, '');
+ $output .= $this->format($colors['header'], $padding, ' Summary:');
+ }
+
+ $output .= $this->format($colors['classes'], $padding, $classes);
+ $output .= $this->format($colors['methods'], $padding, $methods);
+
+ if ($hasBranchCoverage) {
+ $output .= $this->format($colors['paths'], $padding, $paths);
+ $output .= $this->format($colors['branches'], $padding, $branches);
+ }
+ $output .= $this->format($colors['lines'], $padding, $lines);
+
+ if ($this->showOnlySummary) {
+ return $output . PHP_EOL;
+ }
+
+ $classCoverage = [];
+
+ foreach ($report as $item) {
+ if (!$item instanceof File) {
+ continue;
+ }
+
+ $classes = $item->classesAndTraits();
+
+ foreach ($classes as $className => $class) {
+ $classExecutableLines = 0;
+ $classExecutedLines = 0;
+ $classExecutableBranches = 0;
+ $classExecutedBranches = 0;
+ $classExecutablePaths = 0;
+ $classExecutedPaths = 0;
+ $coveredMethods = 0;
+ $classMethods = 0;
+
+ foreach ($class['methods'] as $method) {
+ if ($method['executableLines'] == 0) {
+ continue;
+ }
+
+ $classMethods++;
+ $classExecutableLines += $method['executableLines'];
+ $classExecutedLines += $method['executedLines'];
+ $classExecutableBranches += $method['executableBranches'];
+ $classExecutedBranches += $method['executedBranches'];
+ $classExecutablePaths += $method['executablePaths'];
+ $classExecutedPaths += $method['executedPaths'];
+
+ if ($method['coverage'] == 100) {
+ $coveredMethods++;
+ }
+ }
+
+ $classCoverage[$className] = [
+ 'namespace' => $class['namespace'],
+ 'className' => $className,
+ 'methodsCovered' => $coveredMethods,
+ 'methodCount' => $classMethods,
+ 'statementsCovered' => $classExecutedLines,
+ 'statementCount' => $classExecutableLines,
+ 'branchesCovered' => $classExecutedBranches,
+ 'branchesCount' => $classExecutableBranches,
+ 'pathsCovered' => $classExecutedPaths,
+ 'pathsCount' => $classExecutablePaths,
+ ];
+ }
+ }
+
+ ksort($classCoverage);
+
+ $methodColor = '';
+ $pathsColor = '';
+ $branchesColor = '';
+ $linesColor = '';
+ $resetColor = '';
+
+ foreach ($classCoverage as $fullQualifiedPath => $classInfo) {
+ if ($this->showUncoveredFiles || $classInfo['statementsCovered'] != 0) {
+ if ($showColors) {
+ $methodColor = $this->coverageColor($classInfo['methodsCovered'], $classInfo['methodCount']);
+ $pathsColor = $this->coverageColor($classInfo['pathsCovered'], $classInfo['pathsCount']);
+ $branchesColor = $this->coverageColor($classInfo['branchesCovered'], $classInfo['branchesCount']);
+ $linesColor = $this->coverageColor($classInfo['statementsCovered'], $classInfo['statementCount']);
+ $resetColor = $colors['reset'];
+ }
+
+ $output .= PHP_EOL . $fullQualifiedPath . PHP_EOL
+ . ' ' . $methodColor . 'Methods: ' . $this->printCoverageCounts($classInfo['methodsCovered'], $classInfo['methodCount'], 2) . $resetColor . ' ';
+
+ if ($hasBranchCoverage) {
+ $output .= ' ' . $pathsColor . 'Paths: ' . $this->printCoverageCounts($classInfo['pathsCovered'], $classInfo['pathsCount'], 3) . $resetColor . ' '
+ . ' ' . $branchesColor . 'Branches: ' . $this->printCoverageCounts($classInfo['branchesCovered'], $classInfo['branchesCount'], 3) . $resetColor . ' ';
+ }
+ $output .= ' ' . $linesColor . 'Lines: ' . $this->printCoverageCounts($classInfo['statementsCovered'], $classInfo['statementCount'], 3) . $resetColor;
+ }
+ }
+
+ return $output . PHP_EOL;
+ }
+
+ private function coverageColor(int $numberOfCoveredElements, int $totalNumberOfElements): string
+ {
+ $coverage = Percentage::fromFractionAndTotal(
+ $numberOfCoveredElements,
+ $totalNumberOfElements
+ );
+
+ if ($coverage->asFloat() >= $this->highLowerBound) {
+ return self::COLOR_GREEN;
+ }
+
+ if ($coverage->asFloat() > $this->lowUpperBound) {
+ return self::COLOR_YELLOW;
+ }
+
+ return self::COLOR_RED;
+ }
+
+ private function printCoverageCounts(int $numberOfCoveredElements, int $totalNumberOfElements, int $precision): string
+ {
+ $format = '%' . $precision . 's';
+
+ return Percentage::fromFractionAndTotal(
+ $numberOfCoveredElements,
+ $totalNumberOfElements
+ )->asFixedWidthString() .
+ ' (' . sprintf($format, $numberOfCoveredElements) . '/' .
+ sprintf($format, $totalNumberOfElements) . ')';
+ }
+
+ /**
+ * @param false|string $string
+ */
+ private function format(string $color, int $padding, $string): string
+ {
+ $reset = $color ? self::COLOR_RESET : '';
+
+ return $color . str_pad((string) $string, $padding) . $reset . PHP_EOL;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php
new file mode 100644
index 000000000..ebdbae612
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/BuildInformation.php
@@ -0,0 +1,88 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use function constant;
+use function phpversion;
+use DateTimeImmutable;
+use DOMElement;
+use SebastianBergmann\Environment\Runtime;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class BuildInformation
+{
+ /**
+ * @var DOMElement
+ */
+ private $contextNode;
+
+ public function __construct(DOMElement $contextNode)
+ {
+ $this->contextNode = $contextNode;
+ }
+
+ public function setRuntimeInformation(Runtime $runtime): void
+ {
+ $runtimeNode = $this->nodeByName('runtime');
+
+ $runtimeNode->setAttribute('name', $runtime->getName());
+ $runtimeNode->setAttribute('version', $runtime->getVersion());
+ $runtimeNode->setAttribute('url', $runtime->getVendorUrl());
+
+ $driverNode = $this->nodeByName('driver');
+
+ if ($runtime->hasPHPDBGCodeCoverage()) {
+ $driverNode->setAttribute('name', 'phpdbg');
+ $driverNode->setAttribute('version', constant('PHPDBG_VERSION'));
+ }
+
+ if ($runtime->hasXdebug()) {
+ $driverNode->setAttribute('name', 'xdebug');
+ $driverNode->setAttribute('version', phpversion('xdebug'));
+ }
+
+ if ($runtime->hasPCOV()) {
+ $driverNode->setAttribute('name', 'pcov');
+ $driverNode->setAttribute('version', phpversion('pcov'));
+ }
+ }
+
+ public function setBuildTime(DateTimeImmutable $date): void
+ {
+ $this->contextNode->setAttribute('time', $date->format('D M j G:i:s T Y'));
+ }
+
+ public function setGeneratorVersions(string $phpUnitVersion, string $coverageVersion): void
+ {
+ $this->contextNode->setAttribute('phpunit', $phpUnitVersion);
+ $this->contextNode->setAttribute('coverage', $coverageVersion);
+ }
+
+ private function nodeByName(string $name): DOMElement
+ {
+ $node = $this->contextNode->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ $name
+ )->item(0);
+
+ if (!$node) {
+ $node = $this->contextNode->appendChild(
+ $this->contextNode->ownerDocument->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ $name
+ )
+ );
+ }
+
+ return $node;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php
new file mode 100644
index 000000000..215f9b932
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Coverage.php
@@ -0,0 +1,74 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use DOMElement;
+use SebastianBergmann\CodeCoverage\ReportAlreadyFinalizedException;
+use XMLWriter;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Coverage
+{
+ /**
+ * @var XMLWriter
+ */
+ private $writer;
+
+ /**
+ * @var DOMElement
+ */
+ private $contextNode;
+
+ /**
+ * @var bool
+ */
+ private $finalized = false;
+
+ public function __construct(DOMElement $context, string $line)
+ {
+ $this->contextNode = $context;
+
+ $this->writer = new XMLWriter();
+ $this->writer->openMemory();
+ $this->writer->startElementNS(null, $context->nodeName, 'https://schema.phpunit.de/coverage/1.0');
+ $this->writer->writeAttribute('nr', $line);
+ }
+
+ /**
+ * @throws ReportAlreadyFinalizedException
+ */
+ public function addTest(string $test): void
+ {
+ if ($this->finalized) {
+ throw new ReportAlreadyFinalizedException;
+ }
+
+ $this->writer->startElement('covered');
+ $this->writer->writeAttribute('by', $test);
+ $this->writer->endElement();
+ }
+
+ public function finalize(): void
+ {
+ $this->writer->endElement();
+
+ $fragment = $this->contextNode->ownerDocument->createDocumentFragment();
+ $fragment->appendXML($this->writer->outputMemory());
+
+ $this->contextNode->parentNode->replaceChild(
+ $fragment,
+ $this->contextNode
+ );
+
+ $this->finalized = true;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Directory.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Directory.php
new file mode 100644
index 000000000..b712953ab
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Directory.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Directory extends Node
+{
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php
new file mode 100644
index 000000000..3ecc7506f
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php
@@ -0,0 +1,315 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use const DIRECTORY_SEPARATOR;
+use const PHP_EOL;
+use function count;
+use function dirname;
+use function file_get_contents;
+use function file_put_contents;
+use function is_array;
+use function is_dir;
+use function is_file;
+use function is_writable;
+use function libxml_clear_errors;
+use function libxml_get_errors;
+use function libxml_use_internal_errors;
+use function sprintf;
+use function strlen;
+use function substr;
+use DateTimeImmutable;
+use DOMDocument;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Driver\PathExistsButIsNotDirectoryException;
+use SebastianBergmann\CodeCoverage\Driver\WriteOperationFailedException;
+use SebastianBergmann\CodeCoverage\Node\AbstractNode;
+use SebastianBergmann\CodeCoverage\Node\Directory as DirectoryNode;
+use SebastianBergmann\CodeCoverage\Node\File as FileNode;
+use SebastianBergmann\CodeCoverage\Util\Filesystem as DirectoryUtil;
+use SebastianBergmann\CodeCoverage\Version;
+use SebastianBergmann\CodeCoverage\XmlException;
+use SebastianBergmann\Environment\Runtime;
+
+final class Facade
+{
+ /**
+ * @var string
+ */
+ private $target;
+
+ /**
+ * @var Project
+ */
+ private $project;
+
+ /**
+ * @var string
+ */
+ private $phpUnitVersion;
+
+ public function __construct(string $version)
+ {
+ $this->phpUnitVersion = $version;
+ }
+
+ /**
+ * @throws XmlException
+ */
+ public function process(CodeCoverage $coverage, string $target): void
+ {
+ if (substr($target, -1, 1) !== DIRECTORY_SEPARATOR) {
+ $target .= DIRECTORY_SEPARATOR;
+ }
+
+ $this->target = $target;
+ $this->initTargetDirectory($target);
+
+ $report = $coverage->getReport();
+
+ $this->project = new Project(
+ $coverage->getReport()->name()
+ );
+
+ $this->setBuildInformation();
+ $this->processTests($coverage->getTests());
+ $this->processDirectory($report, $this->project);
+
+ $this->saveDocument($this->project->asDom(), 'index');
+ }
+
+ private function setBuildInformation(): void
+ {
+ $buildNode = $this->project->buildInformation();
+ $buildNode->setRuntimeInformation(new Runtime);
+ $buildNode->setBuildTime(new DateTimeImmutable);
+ $buildNode->setGeneratorVersions($this->phpUnitVersion, Version::id());
+ }
+
+ /**
+ * @throws PathExistsButIsNotDirectoryException
+ * @throws WriteOperationFailedException
+ */
+ private function initTargetDirectory(string $directory): void
+ {
+ if (is_file($directory)) {
+ if (!is_dir($directory)) {
+ throw new PathExistsButIsNotDirectoryException($directory);
+ }
+
+ if (!is_writable($directory)) {
+ throw new WriteOperationFailedException($directory);
+ }
+ }
+
+ DirectoryUtil::createDirectory($directory);
+ }
+
+ /**
+ * @throws XmlException
+ */
+ private function processDirectory(DirectoryNode $directory, Node $context): void
+ {
+ $directoryName = $directory->name();
+
+ if ($this->project->projectSourceDirectory() === $directoryName) {
+ $directoryName = '/';
+ }
+
+ $directoryObject = $context->addDirectory($directoryName);
+
+ $this->setTotals($directory, $directoryObject->totals());
+
+ foreach ($directory->directories() as $node) {
+ $this->processDirectory($node, $directoryObject);
+ }
+
+ foreach ($directory->files() as $node) {
+ $this->processFile($node, $directoryObject);
+ }
+ }
+
+ /**
+ * @throws XmlException
+ */
+ private function processFile(FileNode $file, Directory $context): void
+ {
+ $fileObject = $context->addFile(
+ $file->name(),
+ $file->id() . '.xml'
+ );
+
+ $this->setTotals($file, $fileObject->totals());
+
+ $path = substr(
+ $file->pathAsString(),
+ strlen($this->project->projectSourceDirectory())
+ );
+
+ $fileReport = new Report($path);
+
+ $this->setTotals($file, $fileReport->totals());
+
+ foreach ($file->classesAndTraits() as $unit) {
+ $this->processUnit($unit, $fileReport);
+ }
+
+ foreach ($file->functions() as $function) {
+ $this->processFunction($function, $fileReport);
+ }
+
+ foreach ($file->lineCoverageData() as $line => $tests) {
+ if (!is_array($tests) || count($tests) === 0) {
+ continue;
+ }
+
+ $coverage = $fileReport->lineCoverage((string) $line);
+
+ foreach ($tests as $test) {
+ $coverage->addTest($test);
+ }
+
+ $coverage->finalize();
+ }
+
+ $fileReport->source()->setSourceCode(
+ file_get_contents($file->pathAsString())
+ );
+
+ $this->saveDocument($fileReport->asDom(), $file->id());
+ }
+
+ private function processUnit(array $unit, Report $report): void
+ {
+ if (isset($unit['className'])) {
+ $unitObject = $report->classObject($unit['className']);
+ } else {
+ $unitObject = $report->traitObject($unit['traitName']);
+ }
+
+ $unitObject->setLines(
+ $unit['startLine'],
+ $unit['executableLines'],
+ $unit['executedLines']
+ );
+
+ $unitObject->setCrap((float) $unit['crap']);
+ $unitObject->setNamespace($unit['namespace']);
+
+ foreach ($unit['methods'] as $method) {
+ $methodObject = $unitObject->addMethod($method['methodName']);
+ $methodObject->setSignature($method['signature']);
+ $methodObject->setLines((string) $method['startLine'], (string) $method['endLine']);
+ $methodObject->setCrap($method['crap']);
+ $methodObject->setTotals(
+ (string) $method['executableLines'],
+ (string) $method['executedLines'],
+ (string) $method['coverage']
+ );
+ }
+ }
+
+ private function processFunction(array $function, Report $report): void
+ {
+ $functionObject = $report->functionObject($function['functionName']);
+
+ $functionObject->setSignature($function['signature']);
+ $functionObject->setLines((string) $function['startLine']);
+ $functionObject->setCrap($function['crap']);
+ $functionObject->setTotals((string) $function['executableLines'], (string) $function['executedLines'], (string) $function['coverage']);
+ }
+
+ private function processTests(array $tests): void
+ {
+ $testsObject = $this->project->tests();
+
+ foreach ($tests as $test => $result) {
+ $testsObject->addTest($test, $result);
+ }
+ }
+
+ private function setTotals(AbstractNode $node, Totals $totals): void
+ {
+ $loc = $node->linesOfCode();
+
+ $totals->setNumLines(
+ $loc['linesOfCode'],
+ $loc['commentLinesOfCode'],
+ $loc['nonCommentLinesOfCode'],
+ $node->numberOfExecutableLines(),
+ $node->numberOfExecutedLines()
+ );
+
+ $totals->setNumClasses(
+ $node->numberOfClasses(),
+ $node->numberOfTestedClasses()
+ );
+
+ $totals->setNumTraits(
+ $node->numberOfTraits(),
+ $node->numberOfTestedTraits()
+ );
+
+ $totals->setNumMethods(
+ $node->numberOfMethods(),
+ $node->numberOfTestedMethods()
+ );
+
+ $totals->setNumFunctions(
+ $node->numberOfFunctions(),
+ $node->numberOfTestedFunctions()
+ );
+ }
+
+ private function targetDirectory(): string
+ {
+ return $this->target;
+ }
+
+ /**
+ * @throws XmlException
+ */
+ private function saveDocument(DOMDocument $document, string $name): void
+ {
+ $filename = sprintf('%s/%s.xml', $this->targetDirectory(), $name);
+
+ $document->formatOutput = true;
+ $document->preserveWhiteSpace = false;
+ $this->initTargetDirectory(dirname($filename));
+
+ file_put_contents($filename, $this->documentAsString($document));
+ }
+
+ /**
+ * @throws XmlException
+ *
+ * @see https://bugs.php.net/bug.php?id=79191
+ */
+ private function documentAsString(DOMDocument $document): string
+ {
+ $xmlErrorHandling = libxml_use_internal_errors(true);
+ $xml = $document->saveXML();
+
+ if ($xml === false) {
+ $message = 'Unable to generate the XML';
+
+ foreach (libxml_get_errors() as $error) {
+ $message .= PHP_EOL . $error->message;
+ }
+
+ throw new XmlException($message);
+ }
+
+ libxml_clear_errors();
+ libxml_use_internal_errors($xmlErrorHandling);
+
+ return $xml;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/File.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/File.php
new file mode 100644
index 000000000..245c5cee6
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/File.php
@@ -0,0 +1,87 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use DOMDocument;
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+class File
+{
+ /**
+ * @var DOMDocument
+ */
+ private $dom;
+
+ /**
+ * @var DOMElement
+ */
+ private $contextNode;
+
+ public function __construct(DOMElement $context)
+ {
+ $this->dom = $context->ownerDocument;
+ $this->contextNode = $context;
+ }
+
+ public function totals(): Totals
+ {
+ $totalsContainer = $this->contextNode->firstChild;
+
+ if (!$totalsContainer) {
+ $totalsContainer = $this->contextNode->appendChild(
+ $this->dom->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'totals'
+ )
+ );
+ }
+
+ return new Totals($totalsContainer);
+ }
+
+ public function lineCoverage(string $line): Coverage
+ {
+ $coverage = $this->contextNode->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'coverage'
+ )->item(0);
+
+ if (!$coverage) {
+ $coverage = $this->contextNode->appendChild(
+ $this->dom->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'coverage'
+ )
+ );
+ }
+
+ $lineNode = $coverage->appendChild(
+ $this->dom->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'line'
+ )
+ );
+
+ return new Coverage($lineNode, $line);
+ }
+
+ protected function contextNode(): DOMElement
+ {
+ return $this->contextNode;
+ }
+
+ protected function dom(): DOMDocument
+ {
+ return $this->dom;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Method.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Method.php
new file mode 100644
index 000000000..7e3009997
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Method.php
@@ -0,0 +1,61 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Method
+{
+ /**
+ * @var DOMElement
+ */
+ private $contextNode;
+
+ public function __construct(DOMElement $context, string $name)
+ {
+ $this->contextNode = $context;
+
+ $this->setName($name);
+ }
+
+ public function setSignature(string $signature): void
+ {
+ $this->contextNode->setAttribute('signature', $signature);
+ }
+
+ public function setLines(string $start, ?string $end = null): void
+ {
+ $this->contextNode->setAttribute('start', $start);
+
+ if ($end !== null) {
+ $this->contextNode->setAttribute('end', $end);
+ }
+ }
+
+ public function setTotals(string $executable, string $executed, string $coverage): void
+ {
+ $this->contextNode->setAttribute('executable', $executable);
+ $this->contextNode->setAttribute('executed', $executed);
+ $this->contextNode->setAttribute('coverage', $coverage);
+ }
+
+ public function setCrap(string $crap): void
+ {
+ $this->contextNode->setAttribute('crap', $crap);
+ }
+
+ private function setName(string $name): void
+ {
+ $this->contextNode->setAttribute('name', $name);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php
new file mode 100644
index 000000000..159923093
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Node.php
@@ -0,0 +1,93 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use DOMDocument;
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+abstract class Node
+{
+ /**
+ * @var DOMDocument
+ */
+ private $dom;
+
+ /**
+ * @var DOMElement
+ */
+ private $contextNode;
+
+ public function __construct(DOMElement $context)
+ {
+ $this->setContextNode($context);
+ }
+
+ public function dom(): DOMDocument
+ {
+ return $this->dom;
+ }
+
+ public function totals(): Totals
+ {
+ $totalsContainer = $this->contextNode()->firstChild;
+
+ if (!$totalsContainer) {
+ $totalsContainer = $this->contextNode()->appendChild(
+ $this->dom->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'totals'
+ )
+ );
+ }
+
+ return new Totals($totalsContainer);
+ }
+
+ public function addDirectory(string $name): Directory
+ {
+ $dirNode = $this->dom()->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'directory'
+ );
+
+ $dirNode->setAttribute('name', $name);
+ $this->contextNode()->appendChild($dirNode);
+
+ return new Directory($dirNode);
+ }
+
+ public function addFile(string $name, string $href): File
+ {
+ $fileNode = $this->dom()->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'file'
+ );
+
+ $fileNode->setAttribute('name', $name);
+ $fileNode->setAttribute('href', $href);
+ $this->contextNode()->appendChild($fileNode);
+
+ return new File($fileNode);
+ }
+
+ protected function setContextNode(DOMElement $context): void
+ {
+ $this->dom = $context->ownerDocument;
+ $this->contextNode = $context;
+ }
+
+ protected function contextNode(): DOMElement
+ {
+ return $this->contextNode;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php
new file mode 100644
index 000000000..b566bce06
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Project.php
@@ -0,0 +1,90 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use DOMDocument;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Project extends Node
+{
+ public function __construct(string $directory)
+ {
+ $this->init();
+ $this->setProjectSourceDirectory($directory);
+ }
+
+ public function projectSourceDirectory(): string
+ {
+ return $this->contextNode()->getAttribute('source');
+ }
+
+ public function buildInformation(): BuildInformation
+ {
+ $buildNode = $this->dom()->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'build'
+ )->item(0);
+
+ if (!$buildNode) {
+ $buildNode = $this->dom()->documentElement->appendChild(
+ $this->dom()->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'build'
+ )
+ );
+ }
+
+ return new BuildInformation($buildNode);
+ }
+
+ public function tests(): Tests
+ {
+ $testsNode = $this->contextNode()->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'tests'
+ )->item(0);
+
+ if (!$testsNode) {
+ $testsNode = $this->contextNode()->appendChild(
+ $this->dom()->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'tests'
+ )
+ );
+ }
+
+ return new Tests($testsNode);
+ }
+
+ public function asDom(): DOMDocument
+ {
+ return $this->dom();
+ }
+
+ private function init(): void
+ {
+ $dom = new DOMDocument;
+ $dom->loadXML('<?xml version="1.0" ?><phpunit xmlns="https://schema.phpunit.de/coverage/1.0"><build/><project/></phpunit>');
+
+ $this->setContextNode(
+ $dom->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'project'
+ )->item(0)
+ );
+ }
+
+ private function setProjectSourceDirectory(string $name): void
+ {
+ $this->contextNode()->setAttribute('source', $name);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php
new file mode 100644
index 000000000..b53b08c00
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Report.php
@@ -0,0 +1,99 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use function basename;
+use function dirname;
+use DOMDocument;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Report extends File
+{
+ public function __construct(string $name)
+ {
+ $dom = new DOMDocument();
+ $dom->loadXML('<?xml version="1.0" ?><phpunit xmlns="https://schema.phpunit.de/coverage/1.0"><file /></phpunit>');
+
+ $contextNode = $dom->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'file'
+ )->item(0);
+
+ parent::__construct($contextNode);
+
+ $this->setName($name);
+ }
+
+ public function asDom(): DOMDocument
+ {
+ return $this->dom();
+ }
+
+ public function functionObject($name): Method
+ {
+ $node = $this->contextNode()->appendChild(
+ $this->dom()->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'function'
+ )
+ );
+
+ return new Method($node, $name);
+ }
+
+ public function classObject($name): Unit
+ {
+ return $this->unitObject('class', $name);
+ }
+
+ public function traitObject($name): Unit
+ {
+ return $this->unitObject('trait', $name);
+ }
+
+ public function source(): Source
+ {
+ $source = $this->contextNode()->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'source'
+ )->item(0);
+
+ if (!$source) {
+ $source = $this->contextNode()->appendChild(
+ $this->dom()->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'source'
+ )
+ );
+ }
+
+ return new Source($source);
+ }
+
+ private function setName(string $name): void
+ {
+ $this->contextNode()->setAttribute('name', basename($name));
+ $this->contextNode()->setAttribute('path', dirname($name));
+ }
+
+ private function unitObject(string $tagName, $name): Unit
+ {
+ $node = $this->contextNode()->appendChild(
+ $this->dom()->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ $tagName
+ )
+ );
+
+ return new Unit($node, $name);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php
new file mode 100644
index 000000000..8fd20f58f
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Source.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use DOMElement;
+use TheSeer\Tokenizer\NamespaceUri;
+use TheSeer\Tokenizer\Tokenizer;
+use TheSeer\Tokenizer\XMLSerializer;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Source
+{
+ /** @var DOMElement */
+ private $context;
+
+ public function __construct(DOMElement $context)
+ {
+ $this->context = $context;
+ }
+
+ public function setSourceCode(string $source): void
+ {
+ $context = $this->context;
+
+ $tokens = (new Tokenizer())->parse($source);
+ $srcDom = (new XMLSerializer(new NamespaceUri($context->namespaceURI)))->toDom($tokens);
+
+ $context->parentNode->replaceChild(
+ $context->ownerDocument->importNode($srcDom->documentElement, true),
+ $context
+ );
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php
new file mode 100644
index 000000000..c2e56268c
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Tests.php
@@ -0,0 +1,51 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Tests
+{
+ private $contextNode;
+
+ private $codeMap = [
+ -1 => 'UNKNOWN', // PHPUnit_Runner_BaseTestRunner::STATUS_UNKNOWN
+ 0 => 'PASSED', // PHPUnit_Runner_BaseTestRunner::STATUS_PASSED
+ 1 => 'SKIPPED', // PHPUnit_Runner_BaseTestRunner::STATUS_SKIPPED
+ 2 => 'INCOMPLETE', // PHPUnit_Runner_BaseTestRunner::STATUS_INCOMPLETE
+ 3 => 'FAILURE', // PHPUnit_Runner_BaseTestRunner::STATUS_FAILURE
+ 4 => 'ERROR', // PHPUnit_Runner_BaseTestRunner::STATUS_ERROR
+ 5 => 'RISKY', // PHPUnit_Runner_BaseTestRunner::STATUS_RISKY
+ 6 => 'WARNING', // PHPUnit_Runner_BaseTestRunner::STATUS_WARNING
+ ];
+
+ public function __construct(DOMElement $context)
+ {
+ $this->contextNode = $context;
+ }
+
+ public function addTest(string $test, array $result): void
+ {
+ $node = $this->contextNode->appendChild(
+ $this->contextNode->ownerDocument->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'test'
+ )
+ );
+
+ $node->setAttribute('name', $test);
+ $node->setAttribute('size', $result['size']);
+ $node->setAttribute('result', (string) $result['status']);
+ $node->setAttribute('status', $this->codeMap[(int) $result['status']]);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php
new file mode 100644
index 000000000..370813188
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Totals.php
@@ -0,0 +1,146 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use function sprintf;
+use DOMElement;
+use DOMNode;
+use SebastianBergmann\CodeCoverage\Util\Percentage;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Totals
+{
+ /**
+ * @var DOMNode
+ */
+ private $container;
+
+ /**
+ * @var DOMElement
+ */
+ private $linesNode;
+
+ /**
+ * @var DOMElement
+ */
+ private $methodsNode;
+
+ /**
+ * @var DOMElement
+ */
+ private $functionsNode;
+
+ /**
+ * @var DOMElement
+ */
+ private $classesNode;
+
+ /**
+ * @var DOMElement
+ */
+ private $traitsNode;
+
+ public function __construct(DOMElement $container)
+ {
+ $this->container = $container;
+ $dom = $container->ownerDocument;
+
+ $this->linesNode = $dom->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'lines'
+ );
+
+ $this->methodsNode = $dom->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'methods'
+ );
+
+ $this->functionsNode = $dom->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'functions'
+ );
+
+ $this->classesNode = $dom->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'classes'
+ );
+
+ $this->traitsNode = $dom->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'traits'
+ );
+
+ $container->appendChild($this->linesNode);
+ $container->appendChild($this->methodsNode);
+ $container->appendChild($this->functionsNode);
+ $container->appendChild($this->classesNode);
+ $container->appendChild($this->traitsNode);
+ }
+
+ public function container(): DOMNode
+ {
+ return $this->container;
+ }
+
+ public function setNumLines(int $loc, int $cloc, int $ncloc, int $executable, int $executed): void
+ {
+ $this->linesNode->setAttribute('total', (string) $loc);
+ $this->linesNode->setAttribute('comments', (string) $cloc);
+ $this->linesNode->setAttribute('code', (string) $ncloc);
+ $this->linesNode->setAttribute('executable', (string) $executable);
+ $this->linesNode->setAttribute('executed', (string) $executed);
+ $this->linesNode->setAttribute(
+ 'percent',
+ $executable === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($executed, $executable)->asFloat())
+ );
+ }
+
+ public function setNumClasses(int $count, int $tested): void
+ {
+ $this->classesNode->setAttribute('count', (string) $count);
+ $this->classesNode->setAttribute('tested', (string) $tested);
+ $this->classesNode->setAttribute(
+ 'percent',
+ $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat())
+ );
+ }
+
+ public function setNumTraits(int $count, int $tested): void
+ {
+ $this->traitsNode->setAttribute('count', (string) $count);
+ $this->traitsNode->setAttribute('tested', (string) $tested);
+ $this->traitsNode->setAttribute(
+ 'percent',
+ $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat())
+ );
+ }
+
+ public function setNumMethods(int $count, int $tested): void
+ {
+ $this->methodsNode->setAttribute('count', (string) $count);
+ $this->methodsNode->setAttribute('tested', (string) $tested);
+ $this->methodsNode->setAttribute(
+ 'percent',
+ $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat())
+ );
+ }
+
+ public function setNumFunctions(int $count, int $tested): void
+ {
+ $this->functionsNode->setAttribute('count', (string) $count);
+ $this->functionsNode->setAttribute('tested', (string) $tested);
+ $this->functionsNode->setAttribute(
+ 'percent',
+ $count === 0 ? '0' : sprintf('%01.2F', Percentage::fromFractionAndTotal($tested, $count)->asFloat())
+ );
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php b/vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php
new file mode 100644
index 000000000..d84dc481f
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Report/Xml/Unit.php
@@ -0,0 +1,78 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Report\Xml;
+
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Unit
+{
+ /**
+ * @var DOMElement
+ */
+ private $contextNode;
+
+ public function __construct(DOMElement $context, string $name)
+ {
+ $this->contextNode = $context;
+
+ $this->setName($name);
+ }
+
+ public function setLines(int $start, int $executable, int $executed): void
+ {
+ $this->contextNode->setAttribute('start', (string) $start);
+ $this->contextNode->setAttribute('executable', (string) $executable);
+ $this->contextNode->setAttribute('executed', (string) $executed);
+ }
+
+ public function setCrap(float $crap): void
+ {
+ $this->contextNode->setAttribute('crap', (string) $crap);
+ }
+
+ public function setNamespace(string $namespace): void
+ {
+ $node = $this->contextNode->getElementsByTagNameNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'namespace'
+ )->item(0);
+
+ if (!$node) {
+ $node = $this->contextNode->appendChild(
+ $this->contextNode->ownerDocument->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'namespace'
+ )
+ );
+ }
+
+ $node->setAttribute('name', $namespace);
+ }
+
+ public function addMethod(string $name): Method
+ {
+ $node = $this->contextNode->appendChild(
+ $this->contextNode->ownerDocument->createElementNS(
+ 'https://schema.phpunit.de/coverage/1.0',
+ 'method'
+ )
+ );
+
+ return new Method($node, $name);
+ }
+
+ private function setName(string $name): void
+ {
+ $this->contextNode->setAttribute('name', $name);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php
new file mode 100644
index 000000000..00a6d8df1
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CacheWarmer.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
+
+use SebastianBergmann\CodeCoverage\Filter;
+
+final class CacheWarmer
+{
+ public function warmCache(string $cacheDirectory, bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode, Filter $filter): void
+ {
+ $analyser = new CachingFileAnalyser(
+ $cacheDirectory,
+ new ParsingFileAnalyser(
+ $useAnnotationsForIgnoringCode,
+ $ignoreDeprecatedCode
+ )
+ );
+
+ foreach ($filter->files() as $file) {
+ $analyser->process($file);
+ }
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php
new file mode 100644
index 000000000..cdaad5613
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CachingFileAnalyser.php
@@ -0,0 +1,183 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
+
+use function assert;
+use function crc32;
+use function file_get_contents;
+use function file_put_contents;
+use function is_file;
+use function serialize;
+use GlobIterator;
+use SebastianBergmann\CodeCoverage\Util\Filesystem;
+use SplFileInfo;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class CachingFileAnalyser implements FileAnalyser
+{
+ /**
+ * @var ?string
+ */
+ private static $cacheVersion;
+
+ /**
+ * @var FileAnalyser
+ */
+ private $analyser;
+
+ /**
+ * @var array
+ */
+ private $cache = [];
+
+ /**
+ * @var string
+ */
+ private $directory;
+
+ public function __construct(string $directory, FileAnalyser $analyser)
+ {
+ Filesystem::createDirectory($directory);
+
+ $this->analyser = $analyser;
+ $this->directory = $directory;
+
+ if (self::$cacheVersion === null) {
+ $this->calculateCacheVersion();
+ }
+ }
+
+ public function classesIn(string $filename): array
+ {
+ if (!isset($this->cache[$filename])) {
+ $this->process($filename);
+ }
+
+ return $this->cache[$filename]['classesIn'];
+ }
+
+ public function traitsIn(string $filename): array
+ {
+ if (!isset($this->cache[$filename])) {
+ $this->process($filename);
+ }
+
+ return $this->cache[$filename]['traitsIn'];
+ }
+
+ public function functionsIn(string $filename): array
+ {
+ if (!isset($this->cache[$filename])) {
+ $this->process($filename);
+ }
+
+ return $this->cache[$filename]['functionsIn'];
+ }
+
+ /**
+ * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}
+ */
+ public function linesOfCodeFor(string $filename): array
+ {
+ if (!isset($this->cache[$filename])) {
+ $this->process($filename);
+ }
+
+ return $this->cache[$filename]['linesOfCodeFor'];
+ }
+
+ public function executableLinesIn(string $filename): array
+ {
+ if (!isset($this->cache[$filename])) {
+ $this->process($filename);
+ }
+
+ return $this->cache[$filename]['executableLinesIn'];
+ }
+
+ public function ignoredLinesFor(string $filename): array
+ {
+ if (!isset($this->cache[$filename])) {
+ $this->process($filename);
+ }
+
+ return $this->cache[$filename]['ignoredLinesFor'];
+ }
+
+ public function process(string $filename): void
+ {
+ $cache = $this->read($filename);
+
+ if ($cache !== false) {
+ $this->cache[$filename] = $cache;
+
+ return;
+ }
+
+ $this->cache[$filename] = [
+ 'classesIn' => $this->analyser->classesIn($filename),
+ 'traitsIn' => $this->analyser->traitsIn($filename),
+ 'functionsIn' => $this->analyser->functionsIn($filename),
+ 'linesOfCodeFor' => $this->analyser->linesOfCodeFor($filename),
+ 'ignoredLinesFor' => $this->analyser->ignoredLinesFor($filename),
+ 'executableLinesIn' => $this->analyser->executableLinesIn($filename),
+ ];
+
+ $this->write($filename, $this->cache[$filename]);
+ }
+
+ /**
+ * @return mixed
+ */
+ private function read(string $filename)
+ {
+ $cacheFile = $this->cacheFile($filename);
+
+ if (!is_file($cacheFile)) {
+ return false;
+ }
+
+ return unserialize(
+ file_get_contents($cacheFile),
+ ['allowed_classes' => false]
+ );
+ }
+
+ /**
+ * @param mixed $data
+ */
+ private function write(string $filename, $data): void
+ {
+ file_put_contents(
+ $this->cacheFile($filename),
+ serialize($data)
+ );
+ }
+
+ private function cacheFile(string $filename): string
+ {
+ return $this->directory . DIRECTORY_SEPARATOR . hash('sha256', $filename . crc32(file_get_contents($filename)) . self::$cacheVersion);
+ }
+
+ private function calculateCacheVersion(): void
+ {
+ $buffer = '';
+
+ foreach (new GlobIterator(__DIR__ . '/*.php') as $file) {
+ assert($file instanceof SplFileInfo);
+
+ $buffer .= file_get_contents($file->getPathname());
+ }
+
+ self::$cacheVersion = (string) crc32($buffer);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php
new file mode 100644
index 000000000..8d357b202
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/CodeUnitFindingVisitor.php
@@ -0,0 +1,323 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
+
+use function implode;
+use function rtrim;
+use function trim;
+use PhpParser\Node;
+use PhpParser\Node\ComplexType;
+use PhpParser\Node\Identifier;
+use PhpParser\Node\IntersectionType;
+use PhpParser\Node\Name;
+use PhpParser\Node\NullableType;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\ClassMethod;
+use PhpParser\Node\Stmt\Enum_;
+use PhpParser\Node\Stmt\Function_;
+use PhpParser\Node\Stmt\Interface_;
+use PhpParser\Node\Stmt\Trait_;
+use PhpParser\Node\UnionType;
+use PhpParser\NodeTraverser;
+use PhpParser\NodeVisitorAbstract;
+use SebastianBergmann\Complexity\CyclomaticComplexityCalculatingVisitor;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class CodeUnitFindingVisitor extends NodeVisitorAbstract
+{
+ /**
+ * @psalm-var array<string,array{name: string, namespacedName: string, namespace: string, startLine: int, endLine: int, methods: array<string,array{methodName: string, signature: string, visibility: string, startLine: int, endLine: int, ccn: int}>}>
+ */
+ private $classes = [];
+
+ /**
+ * @psalm-var array<string,array{name: string, namespacedName: string, namespace: string, startLine: int, endLine: int, methods: array<string,array{methodName: string, signature: string, visibility: string, startLine: int, endLine: int, ccn: int}>}>
+ */
+ private $traits = [];
+
+ /**
+ * @psalm-var array<string,array{name: string, namespacedName: string, namespace: string, signature: string, startLine: int, endLine: int, ccn: int}>
+ */
+ private $functions = [];
+
+ public function enterNode(Node $node): void
+ {
+ if ($node instanceof Class_) {
+ if ($node->isAnonymous()) {
+ return;
+ }
+
+ $this->processClass($node);
+ }
+
+ if ($node instanceof Trait_) {
+ $this->processTrait($node);
+ }
+
+ if (!$node instanceof ClassMethod && !$node instanceof Function_) {
+ return;
+ }
+
+ if ($node instanceof ClassMethod) {
+ $parentNode = $node->getAttribute('parent');
+
+ if ($parentNode instanceof Class_ && $parentNode->isAnonymous()) {
+ return;
+ }
+
+ $this->processMethod($node);
+
+ return;
+ }
+
+ $this->processFunction($node);
+ }
+
+ /**
+ * @psalm-return array<string,array{name: string, namespacedName: string, namespace: string, startLine: int, endLine: int, methods: array<string,array{methodName: string, signature: string, visibility: string, startLine: int, endLine: int, ccn: int}>}>
+ */
+ public function classes(): array
+ {
+ return $this->classes;
+ }
+
+ /**
+ * @psalm-return array<string,array{name: string, namespacedName: string, namespace: string, startLine: int, endLine: int, methods: array<string,array{methodName: string, signature: string, visibility: string, startLine: int, endLine: int, ccn: int}>}>
+ */
+ public function traits(): array
+ {
+ return $this->traits;
+ }
+
+ /**
+ * @psalm-return array<string,array{name: string, namespacedName: string, namespace: string, signature: string, startLine: int, endLine: int, ccn: int}>
+ */
+ public function functions(): array
+ {
+ return $this->functions;
+ }
+
+ /**
+ * @psalm-param ClassMethod|Function_ $node
+ */
+ private function cyclomaticComplexity(Node $node): int
+ {
+ assert($node instanceof ClassMethod || $node instanceof Function_);
+
+ $nodes = $node->getStmts();
+
+ if ($nodes === null) {
+ return 0;
+ }
+
+ $traverser = new NodeTraverser;
+
+ $cyclomaticComplexityCalculatingVisitor = new CyclomaticComplexityCalculatingVisitor;
+
+ $traverser->addVisitor($cyclomaticComplexityCalculatingVisitor);
+
+ /* @noinspection UnusedFunctionResultInspection */
+ $traverser->traverse($nodes);
+
+ return $cyclomaticComplexityCalculatingVisitor->cyclomaticComplexity();
+ }
+
+ /**
+ * @psalm-param ClassMethod|Function_ $node
+ */
+ private function signature(Node $node): string
+ {
+ assert($node instanceof ClassMethod || $node instanceof Function_);
+
+ $signature = ($node->returnsByRef() ? '&' : '') . $node->name->toString() . '(';
+ $parameters = [];
+
+ foreach ($node->getParams() as $parameter) {
+ assert(isset($parameter->var->name));
+
+ $parameterAsString = '';
+
+ if ($parameter->type !== null) {
+ $parameterAsString = $this->type($parameter->type) . ' ';
+ }
+
+ $parameterAsString .= '$' . $parameter->var->name;
+
+ /* @todo Handle default values */
+
+ $parameters[] = $parameterAsString;
+ }
+
+ $signature .= implode(', ', $parameters) . ')';
+
+ $returnType = $node->getReturnType();
+
+ if ($returnType !== null) {
+ $signature .= ': ' . $this->type($returnType);
+ }
+
+ return $signature;
+ }
+
+ /**
+ * @psalm-param Identifier|Name|ComplexType $type
+ */
+ private function type(Node $type): string
+ {
+ assert($type instanceof Identifier || $type instanceof Name || $type instanceof ComplexType);
+
+ if ($type instanceof NullableType) {
+ return '?' . $type->type;
+ }
+
+ if ($type instanceof UnionType || $type instanceof IntersectionType) {
+ return $this->unionOrIntersectionAsString($type);
+ }
+
+ return $type->toString();
+ }
+
+ private function visibility(ClassMethod $node): string
+ {
+ if ($node->isPrivate()) {
+ return 'private';
+ }
+
+ if ($node->isProtected()) {
+ return 'protected';
+ }
+
+ return 'public';
+ }
+
+ private function processClass(Class_ $node): void
+ {
+ $name = $node->name->toString();
+ $namespacedName = $node->namespacedName->toString();
+
+ $this->classes[$namespacedName] = [
+ 'name' => $name,
+ 'namespacedName' => $namespacedName,
+ 'namespace' => $this->namespace($namespacedName, $name),
+ 'startLine' => $node->getStartLine(),
+ 'endLine' => $node->getEndLine(),
+ 'methods' => [],
+ ];
+ }
+
+ private function processTrait(Trait_ $node): void
+ {
+ $name = $node->name->toString();
+ $namespacedName = $node->namespacedName->toString();
+
+ $this->traits[$namespacedName] = [
+ 'name' => $name,
+ 'namespacedName' => $namespacedName,
+ 'namespace' => $this->namespace($namespacedName, $name),
+ 'startLine' => $node->getStartLine(),
+ 'endLine' => $node->getEndLine(),
+ 'methods' => [],
+ ];
+ }
+
+ private function processMethod(ClassMethod $node): void
+ {
+ $parentNode = $node->getAttribute('parent');
+
+ if ($parentNode instanceof Interface_) {
+ return;
+ }
+
+ assert($parentNode instanceof Class_ || $parentNode instanceof Trait_ || $parentNode instanceof Enum_);
+ assert(isset($parentNode->name));
+ assert(isset($parentNode->namespacedName));
+ assert($parentNode->namespacedName instanceof Name);
+
+ $parentName = $parentNode->name->toString();
+ $parentNamespacedName = $parentNode->namespacedName->toString();
+
+ if ($parentNode instanceof Class_) {
+ $storage = &$this->classes;
+ } else {
+ $storage = &$this->traits;
+ }
+
+ if (!isset($storage[$parentNamespacedName])) {
+ $storage[$parentNamespacedName] = [
+ 'name' => $parentName,
+ 'namespacedName' => $parentNamespacedName,
+ 'namespace' => $this->namespace($parentNamespacedName, $parentName),
+ 'startLine' => $parentNode->getStartLine(),
+ 'endLine' => $parentNode->getEndLine(),
+ 'methods' => [],
+ ];
+ }
+
+ $storage[$parentNamespacedName]['methods'][$node->name->toString()] = [
+ 'methodName' => $node->name->toString(),
+ 'signature' => $this->signature($node),
+ 'visibility' => $this->visibility($node),
+ 'startLine' => $node->getStartLine(),
+ 'endLine' => $node->getEndLine(),
+ 'ccn' => $this->cyclomaticComplexity($node),
+ ];
+ }
+
+ private function processFunction(Function_ $node): void
+ {
+ assert(isset($node->name));
+ assert(isset($node->namespacedName));
+ assert($node->namespacedName instanceof Name);
+
+ $name = $node->name->toString();
+ $namespacedName = $node->namespacedName->toString();
+
+ $this->functions[$namespacedName] = [
+ 'name' => $name,
+ 'namespacedName' => $namespacedName,
+ 'namespace' => $this->namespace($namespacedName, $name),
+ 'signature' => $this->signature($node),
+ 'startLine' => $node->getStartLine(),
+ 'endLine' => $node->getEndLine(),
+ 'ccn' => $this->cyclomaticComplexity($node),
+ ];
+ }
+
+ private function namespace(string $namespacedName, string $name): string
+ {
+ return trim(rtrim($namespacedName, $name), '\\');
+ }
+
+ /**
+ * @psalm-param UnionType|IntersectionType $type
+ */
+ private function unionOrIntersectionAsString(ComplexType $type): string
+ {
+ if ($type instanceof UnionType) {
+ $separator = '|';
+ } else {
+ $separator = '&';
+ }
+
+ $types = [];
+
+ foreach ($type->types as $_type) {
+ if ($_type instanceof Name) {
+ $types[] = $_type->toCodeString();
+ } else {
+ $types[] = $_type->toString();
+ }
+ }
+
+ return implode($separator, $types);
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php
new file mode 100644
index 000000000..ae0b08ae7
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ExecutableLinesFindingVisitor.php
@@ -0,0 +1,273 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
+
+use PhpParser\Node;
+use PhpParser\Node\Expr\Array_;
+use PhpParser\Node\Expr\ArrayDimFetch;
+use PhpParser\Node\Expr\ArrayItem;
+use PhpParser\Node\Expr\Assign;
+use PhpParser\Node\Expr\BinaryOp;
+use PhpParser\Node\Expr\CallLike;
+use PhpParser\Node\Expr\Cast;
+use PhpParser\Node\Expr\Closure;
+use PhpParser\Node\Expr\Match_;
+use PhpParser\Node\Expr\MethodCall;
+use PhpParser\Node\Expr\NullsafePropertyFetch;
+use PhpParser\Node\Expr\PropertyFetch;
+use PhpParser\Node\Expr\StaticPropertyFetch;
+use PhpParser\Node\Expr\Ternary;
+use PhpParser\Node\MatchArm;
+use PhpParser\Node\Scalar\Encapsed;
+use PhpParser\Node\Stmt\Break_;
+use PhpParser\Node\Stmt\Case_;
+use PhpParser\Node\Stmt\Catch_;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\ClassMethod;
+use PhpParser\Node\Stmt\Continue_;
+use PhpParser\Node\Stmt\Do_;
+use PhpParser\Node\Stmt\Echo_;
+use PhpParser\Node\Stmt\Else_;
+use PhpParser\Node\Stmt\ElseIf_;
+use PhpParser\Node\Stmt\Expression;
+use PhpParser\Node\Stmt\Finally_;
+use PhpParser\Node\Stmt\For_;
+use PhpParser\Node\Stmt\Foreach_;
+use PhpParser\Node\Stmt\Goto_;
+use PhpParser\Node\Stmt\If_;
+use PhpParser\Node\Stmt\Property;
+use PhpParser\Node\Stmt\Return_;
+use PhpParser\Node\Stmt\Switch_;
+use PhpParser\Node\Stmt\Throw_;
+use PhpParser\Node\Stmt\TryCatch;
+use PhpParser\Node\Stmt\Unset_;
+use PhpParser\Node\Stmt\While_;
+use PhpParser\NodeVisitorAbstract;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class ExecutableLinesFindingVisitor extends NodeVisitorAbstract
+{
+ /**
+ * @psalm-var array<int, int>
+ */
+ private $executableLines = [];
+
+ /**
+ * @psalm-var array<int, int>
+ */
+ private $propertyLines = [];
+
+ /**
+ * @psalm-var array<int, Return_>
+ */
+ private $returns = [];
+
+ public function enterNode(Node $node): void
+ {
+ $this->savePropertyLines($node);
+
+ if (!$this->isExecutable($node)) {
+ return;
+ }
+
+ foreach ($this->getLines($node) as $line) {
+ if (isset($this->propertyLines[$line])) {
+ return;
+ }
+
+ $this->executableLines[$line] = $line;
+ }
+ }
+
+ /**
+ * @psalm-return array<int, int>
+ */
+ public function executableLines(): array
+ {
+ $this->computeReturns();
+
+ sort($this->executableLines);
+
+ return $this->executableLines;
+ }
+
+ private function savePropertyLines(Node $node): void
+ {
+ if (!$node instanceof Property && !$node instanceof Node\Stmt\ClassConst) {
+ return;
+ }
+
+ foreach (range($node->getStartLine(), $node->getEndLine()) as $index) {
+ $this->propertyLines[$index] = $index;
+ }
+ }
+
+ private function computeReturns(): void
+ {
+ foreach ($this->returns as $return) {
+ foreach (range($return->getStartLine(), $return->getEndLine()) as $loc) {
+ if (isset($this->executableLines[$loc])) {
+ continue 2;
+ }
+ }
+
+ $line = $return->getEndLine();
+
+ if ($return->expr !== null) {
+ $line = $return->expr->getStartLine();
+ }
+
+ $this->executableLines[$line] = $line;
+ }
+ }
+
+ /**
+ * @return int[]
+ */
+ private function getLines(Node $node): array
+ {
+ if ($node instanceof Cast ||
+ $node instanceof PropertyFetch ||
+ $node instanceof NullsafePropertyFetch ||
+ $node instanceof StaticPropertyFetch) {
+ return [$node->getEndLine()];
+ }
+
+ if ($node instanceof ArrayDimFetch) {
+ if (null === $node->dim) {
+ return [];
+ }
+
+ return [$node->dim->getStartLine()];
+ }
+
+ if ($node instanceof Array_) {
+ $startLine = $node->getStartLine();
+
+ if (isset($this->executableLines[$startLine])) {
+ return [];
+ }
+
+ if ([] === $node->items) {
+ return [$node->getEndLine()];
+ }
+
+ if ($node->items[0] instanceof ArrayItem) {
+ return [$node->items[0]->getStartLine()];
+ }
+ }
+
+ if ($node instanceof ClassMethod) {
+ if ($node->name->name !== '__construct') {
+ return [];
+ }
+
+ $existsAPromotedProperty = false;
+
+ foreach ($node->getParams() as $param) {
+ if (0 !== ($param->flags & Class_::VISIBILITY_MODIFIER_MASK)) {
+ $existsAPromotedProperty = true;
+
+ break;
+ }
+ }
+
+ if ($existsAPromotedProperty) {
+ // Only the line with `function` keyword should be listed here
+ // but `nikic/php-parser` doesn't provide a way to fetch it
+ return range($node->getStartLine(), $node->name->getEndLine());
+ }
+
+ return [];
+ }
+
+ if ($node instanceof MethodCall) {
+ return [$node->name->getStartLine()];
+ }
+
+ if ($node instanceof Ternary) {
+ $lines = [$node->cond->getStartLine()];
+
+ if (null !== $node->if) {
+ $lines[] = $node->if->getStartLine();
+ }
+
+ $lines[] = $node->else->getStartLine();
+
+ return $lines;
+ }
+
+ if ($node instanceof Match_) {
+ return [$node->cond->getStartLine()];
+ }
+
+ if ($node instanceof MatchArm) {
+ return [$node->body->getStartLine()];
+ }
+
+ if ($node instanceof Expression && (
+ $node->expr instanceof Cast ||
+ $node->expr instanceof Match_ ||
+ $node->expr instanceof MethodCall
+ )) {
+ return [];
+ }
+
+ if ($node instanceof Return_) {
+ $this->returns[] = $node;
+
+ return [];
+ }
+
+ return [$node->getStartLine()];
+ }
+
+ private function isExecutable(Node $node): bool
+ {
+ return $node instanceof Assign ||
+ $node instanceof ArrayDimFetch ||
+ $node instanceof Array_ ||
+ $node instanceof BinaryOp ||
+ $node instanceof Break_ ||
+ $node instanceof CallLike ||
+ $node instanceof Case_ ||
+ $node instanceof Cast ||
+ $node instanceof Catch_ ||
+ $node instanceof ClassMethod ||
+ $node instanceof Closure ||
+ $node instanceof Continue_ ||
+ $node instanceof Do_ ||
+ $node instanceof Echo_ ||
+ $node instanceof ElseIf_ ||
+ $node instanceof Else_ ||
+ $node instanceof Encapsed ||
+ $node instanceof Expression ||
+ $node instanceof Finally_ ||
+ $node instanceof For_ ||
+ $node instanceof Foreach_ ||
+ $node instanceof Goto_ ||
+ $node instanceof If_ ||
+ $node instanceof Match_ ||
+ $node instanceof MatchArm ||
+ $node instanceof MethodCall ||
+ $node instanceof NullsafePropertyFetch ||
+ $node instanceof PropertyFetch ||
+ $node instanceof Return_ ||
+ $node instanceof StaticPropertyFetch ||
+ $node instanceof Switch_ ||
+ $node instanceof Ternary ||
+ $node instanceof Throw_ ||
+ $node instanceof TryCatch ||
+ $node instanceof Unset_ ||
+ $node instanceof While_;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php
new file mode 100644
index 000000000..3dbcf68f6
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/FileAnalyser.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+interface FileAnalyser
+{
+ public function classesIn(string $filename): array;
+
+ public function traitsIn(string $filename): array;
+
+ public function functionsIn(string $filename): array;
+
+ /**
+ * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}
+ */
+ public function linesOfCodeFor(string $filename): array;
+
+ public function executableLinesIn(string $filename): array;
+
+ public function ignoredLinesFor(string $filename): array;
+}
diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php
new file mode 100644
index 000000000..ebb879e84
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/IgnoredLinesFindingVisitor.php
@@ -0,0 +1,106 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
+
+use function array_merge;
+use function range;
+use function strpos;
+use PhpParser\Node;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\ClassMethod;
+use PhpParser\Node\Stmt\Function_;
+use PhpParser\Node\Stmt\Interface_;
+use PhpParser\Node\Stmt\Trait_;
+use PhpParser\NodeVisitorAbstract;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class IgnoredLinesFindingVisitor extends NodeVisitorAbstract
+{
+ /**
+ * @psalm-var list<int>
+ */
+ private $ignoredLines = [];
+
+ /**
+ * @var bool
+ */
+ private $useAnnotationsForIgnoringCode;
+
+ /**
+ * @var bool
+ */
+ private $ignoreDeprecated;
+
+ public function __construct(bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecated)
+ {
+ $this->useAnnotationsForIgnoringCode = $useAnnotationsForIgnoringCode;
+ $this->ignoreDeprecated = $ignoreDeprecated;
+ }
+
+ public function enterNode(Node $node): void
+ {
+ if (!$node instanceof Class_ &&
+ !$node instanceof Trait_ &&
+ !$node instanceof Interface_ &&
+ !$node instanceof ClassMethod &&
+ !$node instanceof Function_) {
+ return;
+ }
+
+ if ($node instanceof Class_ && $node->isAnonymous()) {
+ return;
+ }
+
+ // Workaround for https://bugs.xdebug.org/view.php?id=1798
+ if ($node instanceof Class_ ||
+ $node instanceof Trait_ ||
+ $node instanceof Interface_) {
+ $this->ignoredLines[] = $node->getStartLine();
+ }
+
+ if (!$this->useAnnotationsForIgnoringCode) {
+ return;
+ }
+
+ if ($node instanceof Interface_) {
+ return;
+ }
+
+ $docComment = $node->getDocComment();
+
+ if ($docComment === null) {
+ return;
+ }
+
+ if (strpos($docComment->getText(), '@codeCoverageIgnore') !== false) {
+ $this->ignoredLines = array_merge(
+ $this->ignoredLines,
+ range($node->getStartLine(), $node->getEndLine())
+ );
+ }
+
+ if ($this->ignoreDeprecated && strpos($docComment->getText(), '@deprecated') !== false) {
+ $this->ignoredLines = array_merge(
+ $this->ignoredLines,
+ range($node->getStartLine(), $node->getEndLine())
+ );
+ }
+ }
+
+ /**
+ * @psalm-return list<int>
+ */
+ public function ignoredLines(): array
+ {
+ return $this->ignoredLines;
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php
new file mode 100644
index 000000000..8edf973e2
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/StaticAnalysis/ParsingFileAnalyser.php
@@ -0,0 +1,251 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\StaticAnalysis;
+
+use function array_unique;
+use function assert;
+use function file_get_contents;
+use function is_array;
+use function max;
+use function sprintf;
+use function substr_count;
+use function token_get_all;
+use function trim;
+use PhpParser\Error;
+use PhpParser\Lexer;
+use PhpParser\NodeTraverser;
+use PhpParser\NodeVisitor\NameResolver;
+use PhpParser\NodeVisitor\ParentConnectingVisitor;
+use PhpParser\ParserFactory;
+use SebastianBergmann\CodeCoverage\ParserException;
+use SebastianBergmann\LinesOfCode\LineCountingVisitor;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class ParsingFileAnalyser implements FileAnalyser
+{
+ /**
+ * @var array
+ */
+ private $classes = [];
+
+ /**
+ * @var array
+ */
+ private $traits = [];
+
+ /**
+ * @var array
+ */
+ private $functions = [];
+
+ /**
+ * @var array<string,array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}>
+ */
+ private $linesOfCode = [];
+
+ /**
+ * @var array
+ */
+ private $ignoredLines = [];
+
+ /**
+ * @var array
+ */
+ private $executableLines = [];
+
+ /**
+ * @var bool
+ */
+ private $useAnnotationsForIgnoringCode;
+
+ /**
+ * @var bool
+ */
+ private $ignoreDeprecatedCode;
+
+ public function __construct(bool $useAnnotationsForIgnoringCode, bool $ignoreDeprecatedCode)
+ {
+ $this->useAnnotationsForIgnoringCode = $useAnnotationsForIgnoringCode;
+ $this->ignoreDeprecatedCode = $ignoreDeprecatedCode;
+ }
+
+ public function classesIn(string $filename): array
+ {
+ $this->analyse($filename);
+
+ return $this->classes[$filename];
+ }
+
+ public function traitsIn(string $filename): array
+ {
+ $this->analyse($filename);
+
+ return $this->traits[$filename];
+ }
+
+ public function functionsIn(string $filename): array
+ {
+ $this->analyse($filename);
+
+ return $this->functions[$filename];
+ }
+
+ /**
+ * @psalm-return array{linesOfCode: int, commentLinesOfCode: int, nonCommentLinesOfCode: int}
+ */
+ public function linesOfCodeFor(string $filename): array
+ {
+ $this->analyse($filename);
+
+ return $this->linesOfCode[$filename];
+ }
+
+ public function executableLinesIn(string $filename): array
+ {
+ $this->analyse($filename);
+
+ return $this->executableLines[$filename];
+ }
+
+ public function ignoredLinesFor(string $filename): array
+ {
+ $this->analyse($filename);
+
+ return $this->ignoredLines[$filename];
+ }
+
+ /**
+ * @throws ParserException
+ */
+ private function analyse(string $filename): void
+ {
+ if (isset($this->classes[$filename])) {
+ return;
+ }
+
+ $source = file_get_contents($filename);
+ $linesOfCode = max(substr_count($source, "\n") + 1, substr_count($source, "\r") + 1);
+
+ if ($linesOfCode === 0 && !empty($source)) {
+ $linesOfCode = 1;
+ }
+
+ $parser = (new ParserFactory)->create(
+ ParserFactory::PREFER_PHP7,
+ new Lexer
+ );
+
+ try {
+ $nodes = $parser->parse($source);
+
+ assert($nodes !== null);
+
+ $traverser = new NodeTraverser;
+ $codeUnitFindingVisitor = new CodeUnitFindingVisitor;
+ $lineCountingVisitor = new LineCountingVisitor($linesOfCode);
+ $ignoredLinesFindingVisitor = new IgnoredLinesFindingVisitor($this->useAnnotationsForIgnoringCode, $this->ignoreDeprecatedCode);
+ $executableLinesFindingVisitor = new ExecutableLinesFindingVisitor;
+
+ $traverser->addVisitor(new NameResolver);
+ $traverser->addVisitor(new ParentConnectingVisitor);
+ $traverser->addVisitor($codeUnitFindingVisitor);
+ $traverser->addVisitor($lineCountingVisitor);
+ $traverser->addVisitor($ignoredLinesFindingVisitor);
+ $traverser->addVisitor($executableLinesFindingVisitor);
+
+ /* @noinspection UnusedFunctionResultInspection */
+ $traverser->traverse($nodes);
+ // @codeCoverageIgnoreStart
+ } catch (Error $error) {
+ throw new ParserException(
+ sprintf(
+ 'Cannot parse %s: %s',
+ $filename,
+ $error->getMessage()
+ ),
+ (int) $error->getCode(),
+ $error
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $this->classes[$filename] = $codeUnitFindingVisitor->classes();
+ $this->traits[$filename] = $codeUnitFindingVisitor->traits();
+ $this->functions[$filename] = $codeUnitFindingVisitor->functions();
+ $this->executableLines[$filename] = $executableLinesFindingVisitor->executableLines();
+ $this->ignoredLines[$filename] = [];
+
+ $this->findLinesIgnoredByLineBasedAnnotations($filename, $source, $this->useAnnotationsForIgnoringCode);
+
+ $this->ignoredLines[$filename] = array_unique(
+ array_merge(
+ $this->ignoredLines[$filename],
+ $ignoredLinesFindingVisitor->ignoredLines()
+ )
+ );
+
+ sort($this->ignoredLines[$filename]);
+
+ $result = $lineCountingVisitor->result();
+
+ $this->linesOfCode[$filename] = [
+ 'linesOfCode' => $result->linesOfCode(),
+ 'commentLinesOfCode' => $result->commentLinesOfCode(),
+ 'nonCommentLinesOfCode' => $result->nonCommentLinesOfCode(),
+ ];
+ }
+
+ private function findLinesIgnoredByLineBasedAnnotations(string $filename, string $source, bool $useAnnotationsForIgnoringCode): void
+ {
+ $ignore = false;
+ $stop = false;
+
+ foreach (token_get_all($source) as $token) {
+ if (!is_array($token)) {
+ continue;
+ }
+
+ switch ($token[0]) {
+ case T_COMMENT:
+ case T_DOC_COMMENT:
+ if (!$useAnnotationsForIgnoringCode) {
+ break;
+ }
+
+ $comment = trim($token[1]);
+
+ if ($comment === '// @codeCoverageIgnore' ||
+ $comment === '//@codeCoverageIgnore') {
+ $ignore = true;
+ $stop = true;
+ } elseif ($comment === '// @codeCoverageIgnoreStart' ||
+ $comment === '//@codeCoverageIgnoreStart') {
+ $ignore = true;
+ } elseif ($comment === '// @codeCoverageIgnoreEnd' ||
+ $comment === '//@codeCoverageIgnoreEnd') {
+ $stop = true;
+ }
+
+ break;
+ }
+
+ if ($ignore) {
+ $this->ignoredLines[$filename][] = $token[2];
+
+ if ($stop) {
+ $ignore = false;
+ $stop = false;
+ }
+ }
+ }
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Util/Filesystem.php b/vendor/phpunit/php-code-coverage/src/Util/Filesystem.php
new file mode 100644
index 000000000..ff0e16ae9
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Util/Filesystem.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Util;
+
+use function is_dir;
+use function mkdir;
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Filesystem
+{
+ /**
+ * @throws DirectoryCouldNotBeCreatedException
+ */
+ public static function createDirectory(string $directory): void
+ {
+ $success = !(!is_dir($directory) && !@mkdir($directory, 0777, true) && !is_dir($directory));
+
+ if (!$success) {
+ throw new DirectoryCouldNotBeCreatedException(
+ sprintf(
+ 'Directory "%s" could not be created',
+ $directory
+ )
+ );
+ }
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Util/Percentage.php b/vendor/phpunit/php-code-coverage/src/Util/Percentage.php
new file mode 100644
index 000000000..0f7a3fec1
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Util/Percentage.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage\Util;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage
+ */
+final class Percentage
+{
+ /**
+ * @var float
+ */
+ private $fraction;
+
+ /**
+ * @var float
+ */
+ private $total;
+
+ public static function fromFractionAndTotal(float $fraction, float $total): self
+ {
+ return new self($fraction, $total);
+ }
+
+ private function __construct(float $fraction, float $total)
+ {
+ $this->fraction = $fraction;
+ $this->total = $total;
+ }
+
+ public function asFloat(): float
+ {
+ if ($this->total > 0) {
+ return ($this->fraction / $this->total) * 100;
+ }
+
+ return 100.0;
+ }
+
+ public function asString(): string
+ {
+ if ($this->total > 0) {
+ return sprintf('%01.2F%%', $this->asFloat());
+ }
+
+ return '';
+ }
+
+ public function asFixedWidthString(): string
+ {
+ if ($this->total > 0) {
+ return sprintf('%6.2F%%', $this->asFloat());
+ }
+
+ return '';
+ }
+}
diff --git a/vendor/phpunit/php-code-coverage/src/Version.php b/vendor/phpunit/php-code-coverage/src/Version.php
new file mode 100644
index 000000000..285279dff
--- /dev/null
+++ b/vendor/phpunit/php-code-coverage/src/Version.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-code-coverage.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeCoverage;
+
+use function dirname;
+use SebastianBergmann\Version as VersionId;
+
+final class Version
+{
+ /**
+ * @var string
+ */
+ private static $version;
+
+ public static function id(): string
+ {
+ if (self::$version === null) {
+ self::$version = (new VersionId('9.2.15', dirname(__DIR__)))->getVersion();
+ }
+
+ return self::$version;
+ }
+}
diff --git a/vendor/phpunit/php-file-iterator/.psalm/baseline.xml b/vendor/phpunit/php-file-iterator/.psalm/baseline.xml
new file mode 100644
index 000000000..8b6cdc245
--- /dev/null
+++ b/vendor/phpunit/php-file-iterator/.psalm/baseline.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.x-dev@">
+ <file src="src/Iterator.php">
+ <UndefinedInterfaceMethod occurrences="1">
+ <code>current</code>
+ </UndefinedInterfaceMethod>
+ </file>
+</files>
diff --git a/vendor/phpunit/php-file-iterator/.psalm/config.xml b/vendor/phpunit/php-file-iterator/.psalm/config.xml
new file mode 100644
index 000000000..2a4b16f22
--- /dev/null
+++ b/vendor/phpunit/php-file-iterator/.psalm/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<psalm
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ resolveFromConfigFile="false"
+ totallyTyped="false"
+ errorBaseline=".psalm/baseline.xml"
+>
+ <projectFiles>
+ <directory name="src" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+</psalm>
diff --git a/vendor/phpunit/php-file-iterator/ChangeLog.md b/vendor/phpunit/php-file-iterator/ChangeLog.md
new file mode 100644
index 000000000..44833762a
--- /dev/null
+++ b/vendor/phpunit/php-file-iterator/ChangeLog.md
@@ -0,0 +1,144 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
+
+## [3.0.6] - 2021-12-02
+
+### Changed
+
+* [#73](https://github.com/sebastianbergmann/php-file-iterator/pull/73): Micro performance improvements on parsing paths
+
+## [3.0.5] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [3.0.4] - 2020-07-11
+
+### Fixed
+
+* [#67](https://github.com/sebastianbergmann/php-file-iterator/issues/67): `TypeError` in `SebastianBergmann\FileIterator\Iterator::accept()`
+
+## [3.0.3] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [3.0.2] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## [3.0.1] - 2020-04-18
+
+### Fixed
+
+* [#64](https://github.com/sebastianbergmann/php-file-iterator/issues/64): Release tarball contains Composer PHAR
+
+## [3.0.0] - 2020-02-07
+
+### Removed
+
+* This component is no longer supported on PHP 7.1 and PHP 7.2
+
+## [2.0.5] - 2021-12-02
+
+### Changed
+
+* [#73](https://github.com/sebastianbergmann/php-file-iterator/pull/73): Micro performance improvements on parsing paths
+
+### Fixed
+
+* [#74](https://github.com/sebastianbergmann/php-file-iterator/pull/74): Document return type of `SebastianBergmann\FileIterator\Iterator::accept()` so that Symfony's `DebugClassLoader` does not trigger a deprecation warning
+
+## [2.0.4] - 2021-07-19
+
+### Changed
+
+* Added `ReturnTypeWillChange` attribute to `SebastianBergmann\FileIterator\Iterator::accept()` because the return type of `\FilterIterator::accept()` will change in PHP 8.1
+
+## [2.0.3] - 2020-11-30
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.1` to `>=7.1`
+
+## [2.0.2] - 2018-09-13
+
+### Fixed
+
+* [#48](https://github.com/sebastianbergmann/php-file-iterator/issues/48): Excluding an array that contains false ends up excluding the current working directory
+
+## [2.0.1] - 2018-06-11
+
+### Fixed
+
+* [#46](https://github.com/sebastianbergmann/php-file-iterator/issues/46): Regression with hidden parent directory
+
+## [2.0.0] - 2018-05-28
+
+### Fixed
+
+* [#30](https://github.com/sebastianbergmann/php-file-iterator/issues/30): Exclude is not considered if it is a parent of the base path
+
+### Changed
+
+* This component now uses namespaces
+
+### Removed
+
+* This component is no longer supported on PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6, and PHP 7.0
+
+## [1.4.5] - 2017-11-27
+
+### Fixed
+
+* [#37](https://github.com/sebastianbergmann/php-file-iterator/issues/37): Regression caused by fix for [#30](https://github.com/sebastianbergmann/php-file-iterator/issues/30)
+
+## [1.4.4] - 2017-11-27
+
+### Fixed
+
+* [#30](https://github.com/sebastianbergmann/php-file-iterator/issues/30): Exclude is not considered if it is a parent of the base path
+
+## [1.4.3] - 2017-11-25
+
+### Fixed
+
+* [#34](https://github.com/sebastianbergmann/php-file-iterator/issues/34): Factory should use canonical directory names
+
+## [1.4.2] - 2016-11-26
+
+No changes
+
+## [1.4.1] - 2015-07-26
+
+No changes
+
+## 1.4.0 - 2015-04-02
+
+### Added
+
+* [#23](https://github.com/sebastianbergmann/php-file-iterator/pull/23): Added support for wildcards (glob) in exclude
+
+[3.0.6]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.5...3.0.6
+[3.0.5]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.4...3.0.5
+[3.0.4]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.3...3.0.4
+[3.0.3]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.2...3.0.3
+[3.0.2]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.1...3.0.2
+[3.0.1]: https://github.com/sebastianbergmann/php-file-iterator/compare/3.0.0...3.0.1
+[3.0.0]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.5...3.0.0
+[2.0.5]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.4...2.0.5
+[2.0.4]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.3...2.0.4
+[2.0.3]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.2...2.0.3
+[2.0.2]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.1...2.0.2
+[2.0.1]: https://github.com/sebastianbergmann/php-file-iterator/compare/2.0.0...2.0.1
+[2.0.0]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4.5...2.0.0
+[1.4.5]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4.4...1.4.5
+[1.4.4]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4.3...1.4.4
+[1.4.3]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4.2...1.4.3
+[1.4.2]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4.1...1.4.2
+[1.4.1]: https://github.com/sebastianbergmann/php-file-iterator/compare/1.4.0...1.4.1
diff --git a/vendor/phpunit/php-file-iterator/LICENSE b/vendor/phpunit/php-file-iterator/LICENSE
new file mode 100644
index 000000000..51db9163e
--- /dev/null
+++ b/vendor/phpunit/php-file-iterator/LICENSE
@@ -0,0 +1,33 @@
+php-file-iterator
+
+Copyright (c) 2009-2021, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-file-iterator/README.md b/vendor/phpunit/php-file-iterator/README.md
new file mode 100644
index 000000000..3cbfdaae7
--- /dev/null
+++ b/vendor/phpunit/php-file-iterator/README.md
@@ -0,0 +1,14 @@
+[![Build Status](https://travis-ci.org/sebastianbergmann/php-file-iterator.svg?branch=master)](https://travis-ci.org/sebastianbergmann/php-file-iterator)
+
+# php-file-iterator
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+ composer require phpunit/php-file-iterator
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+ composer require --dev phpunit/php-file-iterator
+
diff --git a/vendor/phpunit/php-file-iterator/composer.json b/vendor/phpunit/php-file-iterator/composer.json
new file mode 100644
index 000000000..f1b95b3f8
--- /dev/null
+++ b/vendor/phpunit/php-file-iterator/composer.json
@@ -0,0 +1,45 @@
+{
+ "name": "phpunit/php-file-iterator",
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "type": "library",
+ "keywords": [
+ "iterator",
+ "filesystem"
+ ],
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ }
+}
diff --git a/vendor/phpunit/php-file-iterator/src/Facade.php b/vendor/phpunit/php-file-iterator/src/Facade.php
new file mode 100644
index 000000000..87b6588dd
--- /dev/null
+++ b/vendor/phpunit/php-file-iterator/src/Facade.php
@@ -0,0 +1,115 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-file-iterator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\FileIterator;
+
+use const DIRECTORY_SEPARATOR;
+use function array_unique;
+use function count;
+use function dirname;
+use function explode;
+use function is_file;
+use function is_string;
+use function realpath;
+use function sort;
+
+class Facade
+{
+ /**
+ * @param array|string $paths
+ * @param array|string $suffixes
+ * @param array|string $prefixes
+ */
+ public function getFilesAsArray($paths, $suffixes = '', $prefixes = '', array $exclude = [], bool $commonPath = false): array
+ {
+ if (is_string($paths)) {
+ $paths = [$paths];
+ }
+
+ $iterator = (new Factory)->getFileIterator($paths, $suffixes, $prefixes, $exclude);
+
+ $files = [];
+
+ foreach ($iterator as $file) {
+ $file = $file->getRealPath();
+
+ if ($file) {
+ $files[] = $file;
+ }
+ }
+
+ foreach ($paths as $path) {
+ if (is_file($path)) {
+ $files[] = realpath($path);
+ }
+ }
+
+ $files = array_unique($files);
+ sort($files);
+
+ if ($commonPath) {
+ return [
+ 'commonPath' => $this->getCommonPath($files),
+ 'files' => $files,
+ ];
+ }
+
+ return $files;
+ }
+
+ protected function getCommonPath(array $files): string
+ {
+ $count = count($files);
+
+ if ($count === 0) {
+ return '';
+ }
+
+ if ($count === 1) {
+ return dirname($files[0]) . DIRECTORY_SEPARATOR;
+ }
+
+ $_files = [];
+
+ foreach ($files as $file) {
+ $_files[] = $_fileParts = explode(DIRECTORY_SEPARATOR, $file);
+
+ if (empty($_fileParts[0])) {
+ $_fileParts[0] = DIRECTORY_SEPARATOR;
+ }
+ }
+
+ $common = '';
+ $done = false;
+ $j = 0;
+ $count--;
+
+ while (!$done) {
+ for ($i = 0; $i < $count; $i++) {
+ if ($_files[$i][$j] != $_files[$i + 1][$j]) {
+ $done = true;
+
+ break;
+ }
+ }
+
+ if (!$done) {
+ $common .= $_files[0][$j];
+
+ if ($j > 0) {
+ $common .= DIRECTORY_SEPARATOR;
+ }
+ }
+
+ $j++;
+ }
+
+ return DIRECTORY_SEPARATOR . $common;
+ }
+}
diff --git a/vendor/phpunit/php-file-iterator/src/Factory.php b/vendor/phpunit/php-file-iterator/src/Factory.php
new file mode 100644
index 000000000..08f8de999
--- /dev/null
+++ b/vendor/phpunit/php-file-iterator/src/Factory.php
@@ -0,0 +1,91 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-file-iterator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\FileIterator;
+
+use const GLOB_ONLYDIR;
+use function array_filter;
+use function array_map;
+use function array_merge;
+use function glob;
+use function is_dir;
+use function is_string;
+use function realpath;
+use AppendIterator;
+use RecursiveDirectoryIterator;
+use RecursiveIteratorIterator;
+
+class Factory
+{
+ /**
+ * @param array|string $paths
+ * @param array|string $suffixes
+ * @param array|string $prefixes
+ */
+ public function getFileIterator($paths, $suffixes = '', $prefixes = '', array $exclude = []): AppendIterator
+ {
+ if (is_string($paths)) {
+ $paths = [$paths];
+ }
+
+ $paths = $this->getPathsAfterResolvingWildcards($paths);
+ $exclude = $this->getPathsAfterResolvingWildcards($exclude);
+
+ if (is_string($prefixes)) {
+ if ($prefixes !== '') {
+ $prefixes = [$prefixes];
+ } else {
+ $prefixes = [];
+ }
+ }
+
+ if (is_string($suffixes)) {
+ if ($suffixes !== '') {
+ $suffixes = [$suffixes];
+ } else {
+ $suffixes = [];
+ }
+ }
+
+ $iterator = new AppendIterator;
+
+ foreach ($paths as $path) {
+ if (is_dir($path)) {
+ $iterator->append(
+ new Iterator(
+ $path,
+ new RecursiveIteratorIterator(
+ new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::FOLLOW_SYMLINKS | RecursiveDirectoryIterator::SKIP_DOTS)
+ ),
+ $suffixes,
+ $prefixes,
+ $exclude
+ )
+ );
+ }
+ }
+
+ return $iterator;
+ }
+
+ protected function getPathsAfterResolvingWildcards(array $paths): array
+ {
+ $_paths = [[]];
+
+ foreach ($paths as $path) {
+ if ($locals = glob($path, GLOB_ONLYDIR)) {
+ $_paths[] = array_map('\realpath', $locals);
+ } else {
+ $_paths[] = [realpath($path)];
+ }
+ }
+
+ return array_filter(array_merge(...$_paths));
+ }
+}
diff --git a/vendor/phpunit/php-file-iterator/src/Iterator.php b/vendor/phpunit/php-file-iterator/src/Iterator.php
new file mode 100644
index 000000000..7eb82ad68
--- /dev/null
+++ b/vendor/phpunit/php-file-iterator/src/Iterator.php
@@ -0,0 +1,119 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-file-iterator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\FileIterator;
+
+use function array_filter;
+use function array_map;
+use function preg_match;
+use function realpath;
+use function str_replace;
+use function strlen;
+use function strpos;
+use function substr;
+use FilterIterator;
+
+class Iterator extends FilterIterator
+{
+ public const PREFIX = 0;
+
+ public const SUFFIX = 1;
+
+ /**
+ * @var string
+ */
+ private $basePath;
+
+ /**
+ * @var array
+ */
+ private $suffixes = [];
+
+ /**
+ * @var array
+ */
+ private $prefixes = [];
+
+ /**
+ * @var array
+ */
+ private $exclude = [];
+
+ public function __construct(string $basePath, \Iterator $iterator, array $suffixes = [], array $prefixes = [], array $exclude = [])
+ {
+ $this->basePath = realpath($basePath);
+ $this->prefixes = $prefixes;
+ $this->suffixes = $suffixes;
+ $this->exclude = array_filter(array_map('realpath', $exclude));
+
+ parent::__construct($iterator);
+ }
+
+ public function accept(): bool
+ {
+ $current = $this->getInnerIterator()->current();
+ $filename = $current->getFilename();
+ $realPath = $current->getRealPath();
+
+ if ($realPath === false) {
+ return false;
+ }
+
+ return $this->acceptPath($realPath) &&
+ $this->acceptPrefix($filename) &&
+ $this->acceptSuffix($filename);
+ }
+
+ private function acceptPath(string $path): bool
+ {
+ // Filter files in hidden directories by checking path that is relative to the base path.
+ if (preg_match('=/\.[^/]*/=', str_replace($this->basePath, '', $path))) {
+ return false;
+ }
+
+ foreach ($this->exclude as $exclude) {
+ if (strpos($path, $exclude) === 0) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ private function acceptPrefix(string $filename): bool
+ {
+ return $this->acceptSubString($filename, $this->prefixes, self::PREFIX);
+ }
+
+ private function acceptSuffix(string $filename): bool
+ {
+ return $this->acceptSubString($filename, $this->suffixes, self::SUFFIX);
+ }
+
+ private function acceptSubString(string $filename, array $subStrings, int $type): bool
+ {
+ if (empty($subStrings)) {
+ return true;
+ }
+
+ $matched = false;
+
+ foreach ($subStrings as $string) {
+ if (($type === self::PREFIX && strpos($filename, $string) === 0) ||
+ ($type === self::SUFFIX &&
+ substr($filename, -1 * strlen($string)) === $string)) {
+ $matched = true;
+
+ break;
+ }
+ }
+
+ return $matched;
+ }
+}
diff --git a/vendor/phpunit/php-invoker/ChangeLog.md b/vendor/phpunit/php-invoker/ChangeLog.md
new file mode 100644
index 000000000..15cff1f11
--- /dev/null
+++ b/vendor/phpunit/php-invoker/ChangeLog.md
@@ -0,0 +1,48 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [3.1.1] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [3.1.0] - 2020-08-06
+
+### Changed
+
+* [#14](https://github.com/sebastianbergmann/php-invoker/pull/14): Clear alarm in `finally` block
+
+## [3.0.2] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [3.0.1] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## [3.0.0] - 2020-02-07
+
+### Added
+
+* Added `canInvokeWithTimeout()` method to check requirements for the functionality provided by this component to work
+
+### Changed
+
+* Moved `"ext-pcntl": "*"` requirement from `require` to `suggest` so that this component can be installed even if `ext/pcntl` is not available
+* `invoke()` now raises an exception when the requirements for the functionality provided by this component to work are not met
+
+### Removed
+
+* This component is no longer supported on PHP 7.1 and PHP 7.2
+
+[3.1.1]: https://github.com/sebastianbergmann/php-invoker/compare/3.1.0...3.1.1
+[3.1.0]: https://github.com/sebastianbergmann/php-invoker/compare/3.0.2...3.1.0
+[3.0.2]: https://github.com/sebastianbergmann/php-invoker/compare/3.0.1...3.0.2
+[3.0.1]: https://github.com/sebastianbergmann/php-invoker/compare/3.0.0...3.0.1
+[3.0.0]: https://github.com/sebastianbergmann/php-invoker/compare/2.0.0...3.0.0
diff --git a/vendor/phpunit/php-invoker/LICENSE b/vendor/phpunit/php-invoker/LICENSE
new file mode 100644
index 000000000..4620776e1
--- /dev/null
+++ b/vendor/phpunit/php-invoker/LICENSE
@@ -0,0 +1,33 @@
+php-invoker
+
+Copyright (c) 2011-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-invoker/README.md b/vendor/phpunit/php-invoker/README.md
new file mode 100644
index 000000000..ace07e5fd
--- /dev/null
+++ b/vendor/phpunit/php-invoker/README.md
@@ -0,0 +1,18 @@
+# phpunit/php-invoker
+
+[![CI Status](https://github.com/sebastianbergmann/php-invoker/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/php-invoker/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/php-invoker/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/php-invoker)
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require phpunit/php-invoker
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev phpunit/php-invoker
+```
diff --git a/vendor/phpunit/php-invoker/composer.json b/vendor/phpunit/php-invoker/composer.json
new file mode 100644
index 000000000..6c007cd81
--- /dev/null
+++ b/vendor/phpunit/php-invoker/composer.json
@@ -0,0 +1,54 @@
+{
+ "name": "phpunit/php-invoker",
+ "description": "Invoke callables with a timeout",
+ "type": "library",
+ "keywords": [
+ "process"
+ ],
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues"
+ },
+ "prefer-stable": true,
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/_fixture/"
+ ]
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ }
+}
+
diff --git a/vendor/phpunit/php-invoker/src/Invoker.php b/vendor/phpunit/php-invoker/src/Invoker.php
new file mode 100644
index 000000000..656f4180a
--- /dev/null
+++ b/vendor/phpunit/php-invoker/src/Invoker.php
@@ -0,0 +1,69 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-invoker.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Invoker;
+
+use const SIGALRM;
+use function call_user_func_array;
+use function function_exists;
+use function pcntl_alarm;
+use function pcntl_async_signals;
+use function pcntl_signal;
+use function sprintf;
+use Throwable;
+
+final class Invoker
+{
+ /**
+ * @var int
+ */
+ private $timeout;
+
+ /**
+ * @throws Throwable
+ */
+ public function invoke(callable $callable, array $arguments, int $timeout)
+ {
+ if (!$this->canInvokeWithTimeout()) {
+ throw new ProcessControlExtensionNotLoadedException(
+ 'The pcntl (process control) extension for PHP is required'
+ );
+ }
+
+ pcntl_signal(
+ SIGALRM,
+ function (): void {
+ throw new TimeoutException(
+ sprintf(
+ 'Execution aborted after %d second%s',
+ $this->timeout,
+ $this->timeout === 1 ? '' : 's'
+ )
+ );
+ },
+ true
+ );
+
+ $this->timeout = $timeout;
+
+ pcntl_async_signals(true);
+ pcntl_alarm($timeout);
+
+ try {
+ return call_user_func_array($callable, $arguments);
+ } finally {
+ pcntl_alarm(0);
+ }
+ }
+
+ public function canInvokeWithTimeout(): bool
+ {
+ return function_exists('pcntl_signal') && function_exists('pcntl_async_signals') && function_exists('pcntl_alarm');
+ }
+}
diff --git a/vendor/phpunit/php-invoker/src/exceptions/Exception.php b/vendor/phpunit/php-invoker/src/exceptions/Exception.php
new file mode 100644
index 000000000..6ecbf5dd3
--- /dev/null
+++ b/vendor/phpunit/php-invoker/src/exceptions/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-invoker.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Invoker;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php b/vendor/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php
new file mode 100644
index 000000000..ef42fd195
--- /dev/null
+++ b/vendor/phpunit/php-invoker/src/exceptions/ProcessControlExtensionNotLoadedException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-invoker.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Invoker;
+
+use RuntimeException;
+
+final class ProcessControlExtensionNotLoadedException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-invoker/src/exceptions/TimeoutException.php b/vendor/phpunit/php-invoker/src/exceptions/TimeoutException.php
new file mode 100644
index 000000000..2f7631c0e
--- /dev/null
+++ b/vendor/phpunit/php-invoker/src/exceptions/TimeoutException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-invoker.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Invoker;
+
+use RuntimeException;
+
+final class TimeoutException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-text-template/.psalm/baseline.xml b/vendor/phpunit/php-text-template/.psalm/baseline.xml
new file mode 100644
index 000000000..77e688e07
--- /dev/null
+++ b/vendor/phpunit/php-text-template/.psalm/baseline.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44"/>
diff --git a/vendor/phpunit/php-text-template/.psalm/config.xml b/vendor/phpunit/php-text-template/.psalm/config.xml
new file mode 100644
index 000000000..2a4b16f22
--- /dev/null
+++ b/vendor/phpunit/php-text-template/.psalm/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<psalm
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ resolveFromConfigFile="false"
+ totallyTyped="false"
+ errorBaseline=".psalm/baseline.xml"
+>
+ <projectFiles>
+ <directory name="src" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+</psalm>
diff --git a/vendor/phpunit/php-text-template/ChangeLog.md b/vendor/phpunit/php-text-template/ChangeLog.md
new file mode 100644
index 000000000..32a48a7a1
--- /dev/null
+++ b/vendor/phpunit/php-text-template/ChangeLog.md
@@ -0,0 +1,43 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [2.0.4] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\Template\Exception` now correctly extends `\Throwable`
+
+## [2.0.3] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [2.0.2] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [2.0.1] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## [2.0.0] - 2020-02-07
+
+### Changed
+
+* The `Text_Template` class was renamed to `SebastianBergmann\Template\Template`
+
+### Removed
+
+* Removed support for PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6, PHP 7.0, PHP 7.1, and PHP 7.2
+
+[2.0.4]: https://github.com/sebastianbergmann/php-text-template/compare/2.0.3...2.0.4
+[2.0.3]: https://github.com/sebastianbergmann/php-text-template/compare/2.0.2...2.0.3
+[2.0.2]: https://github.com/sebastianbergmann/php-text-template/compare/2.0.1...2.0.2
+[2.0.1]: https://github.com/sebastianbergmann/php-text-template/compare/2.0.0...2.0.1
+[2.0.0]: https://github.com/sebastianbergmann/php-text-template/compare/1.2.1...2.0.0
diff --git a/vendor/phpunit/php-text-template/LICENSE b/vendor/phpunit/php-text-template/LICENSE
new file mode 100644
index 000000000..6db5566c8
--- /dev/null
+++ b/vendor/phpunit/php-text-template/LICENSE
@@ -0,0 +1,33 @@
+phpunit/php-text-template
+
+Copyright (c) 2009-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-text-template/README.md b/vendor/phpunit/php-text-template/README.md
new file mode 100644
index 000000000..b28659354
--- /dev/null
+++ b/vendor/phpunit/php-text-template/README.md
@@ -0,0 +1,12 @@
+# Text_Template
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+ composer require phpunit/php-text-template
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+ composer require --dev phpunit/php-text-template
+
diff --git a/vendor/phpunit/php-text-template/composer.json b/vendor/phpunit/php-text-template/composer.json
new file mode 100644
index 000000000..a51b34b95
--- /dev/null
+++ b/vendor/phpunit/php-text-template/composer.json
@@ -0,0 +1,43 @@
+{
+ "name": "phpunit/php-text-template",
+ "description": "Simple template engine.",
+ "type": "library",
+ "keywords": [
+ "template"
+ ],
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ }
+}
diff --git a/vendor/phpunit/php-text-template/src/Template.php b/vendor/phpunit/php-text-template/src/Template.php
new file mode 100644
index 000000000..25e29ea97
--- /dev/null
+++ b/vendor/phpunit/php-text-template/src/Template.php
@@ -0,0 +1,107 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-text-template.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Template;
+
+use function array_merge;
+use function file_exists;
+use function file_get_contents;
+use function file_put_contents;
+use function sprintf;
+use function str_replace;
+
+final class Template
+{
+ /**
+ * @var string
+ */
+ private $template = '';
+
+ /**
+ * @var string
+ */
+ private $openDelimiter;
+
+ /**
+ * @var string
+ */
+ private $closeDelimiter;
+
+ /**
+ * @var array
+ */
+ private $values = [];
+
+ /**
+ * @throws InvalidArgumentException
+ */
+ public function __construct(string $file = '', string $openDelimiter = '{', string $closeDelimiter = '}')
+ {
+ $this->setFile($file);
+
+ $this->openDelimiter = $openDelimiter;
+ $this->closeDelimiter = $closeDelimiter;
+ }
+
+ /**
+ * @throws InvalidArgumentException
+ */
+ public function setFile(string $file): void
+ {
+ $distFile = $file . '.dist';
+
+ if (file_exists($file)) {
+ $this->template = file_get_contents($file);
+ } elseif (file_exists($distFile)) {
+ $this->template = file_get_contents($distFile);
+ } else {
+ throw new InvalidArgumentException(
+ sprintf(
+ 'Failed to load template "%s"',
+ $file
+ )
+ );
+ }
+ }
+
+ public function setVar(array $values, bool $merge = true): void
+ {
+ if (!$merge || empty($this->values)) {
+ $this->values = $values;
+ } else {
+ $this->values = array_merge($this->values, $values);
+ }
+ }
+
+ public function render(): string
+ {
+ $keys = [];
+
+ foreach ($this->values as $key => $value) {
+ $keys[] = $this->openDelimiter . $key . $this->closeDelimiter;
+ }
+
+ return str_replace($keys, $this->values, $this->template);
+ }
+
+ /**
+ * @codeCoverageIgnore
+ */
+ public function renderTo(string $target): void
+ {
+ if (!file_put_contents($target, $this->render())) {
+ throw new RuntimeException(
+ sprintf(
+ 'Writing rendered result to "%s" failed',
+ $target
+ )
+ );
+ }
+ }
+}
diff --git a/vendor/phpunit/php-text-template/src/exceptions/Exception.php b/vendor/phpunit/php-text-template/src/exceptions/Exception.php
new file mode 100644
index 000000000..d7dc5cbea
--- /dev/null
+++ b/vendor/phpunit/php-text-template/src/exceptions/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-text-template.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Template;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php b/vendor/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php
new file mode 100644
index 000000000..10e1cd11f
--- /dev/null
+++ b/vendor/phpunit/php-text-template/src/exceptions/InvalidArgumentException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-text-template.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Template;
+
+final class InvalidArgumentException extends \InvalidArgumentException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-text-template/src/exceptions/RuntimeException.php b/vendor/phpunit/php-text-template/src/exceptions/RuntimeException.php
new file mode 100644
index 000000000..131498e61
--- /dev/null
+++ b/vendor/phpunit/php-text-template/src/exceptions/RuntimeException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-text-template.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Template;
+
+use InvalidArgumentException;
+
+final class RuntimeException extends InvalidArgumentException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-timer/.psalm/baseline.xml b/vendor/phpunit/php-timer/.psalm/baseline.xml
new file mode 100644
index 000000000..77e688e07
--- /dev/null
+++ b/vendor/phpunit/php-timer/.psalm/baseline.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44"/>
diff --git a/vendor/phpunit/php-timer/.psalm/config.xml b/vendor/phpunit/php-timer/.psalm/config.xml
new file mode 100644
index 000000000..15abef058
--- /dev/null
+++ b/vendor/phpunit/php-timer/.psalm/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<psalm
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ resolveFromConfigFile="false"
+ totallyTyped="true"
+ errorBaseline=".psalm/baseline.xml"
+>
+ <projectFiles>
+ <directory name="src" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+</psalm>
diff --git a/vendor/phpunit/php-timer/ChangeLog.md b/vendor/phpunit/php-timer/ChangeLog.md
new file mode 100644
index 000000000..34ef7d1d7
--- /dev/null
+++ b/vendor/phpunit/php-timer/ChangeLog.md
@@ -0,0 +1,138 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [5.0.3] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\Timer\Exception` now correctly extends `\Throwable`
+
+## [5.0.2] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [5.0.1] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [5.0.0] - 2020-06-07
+
+### Changed
+
+* Parameter type for `SebastianBergmann\Timer\Duration::fromMicroseconds()` was changed from `int` to `float`
+* Parameter type for `SebastianBergmann\Timer\Duration::fromNanoseconds()` was changed from `int` to `float`
+* Return type for `SebastianBergmann\Timer\Duration::asNanoseconds()` was changed from `int` to `float`
+
+### Fixed
+
+* [#31](https://github.com/sebastianbergmann/php-timer/issues/31): Type Error on 32-bit systems (where `hrtime()` returns `float` instead of `int`)
+
+## [4.0.0] - 2020-06-01
+
+### Added
+
+* Introduced `Duration` value object for encapsulating a duration with nanosecond granularity
+* Introduced `ResourceUsageFormatter` object for formatting resource usage with option to explicitly pass a duration (instead of looking at the unreliable `$_SERVER['REQUEST_TIME_FLOAT']` variable)
+
+### Changed
+
+* The methods of `Timer` are no longer static
+* `Timer::stop()` now returns a `Duration` value object
+
+### Removed
+
+* Functionality that is now implemented in `Duration` and `ResourceUsageFormatter` has been removed from `Timer`
+
+## [3.1.4] - 2020-04-20
+
+### Changed
+
+* `Timer::timeSinceStartOfRequest()` no longer tries `$_SERVER['REQUEST_TIME']` when `$_SERVER['REQUEST_TIME_FLOAT']` is not available (`$_SERVER['REQUEST_TIME_FLOAT']` was added in PHP 5.4 and this library requires PHP 7.3)
+* Improved exception messages when `$_SERVER['REQUEST_TIME_FLOAT']` is not set or is not of type `float`
+
+### Changed
+
+## [3.1.3] - 2020-04-20
+
+### Changed
+
+* `Timer::timeSinceStartOfRequest()` now raises an exception if `$_SERVER['REQUEST_TIME_FLOAT']` does not contain a `float` (or `$_SERVER['REQUEST_TIME']` does not contain an `int`)
+
+## [3.1.2] - 2020-04-17
+
+### Changed
+
+* Improved the fix for [#30](https://github.com/sebastianbergmann/php-timer/issues/30) and restored usage of `hrtime()`
+
+## [3.1.1] - 2020-04-17
+
+### Fixed
+
+* [#30](https://github.com/sebastianbergmann/php-timer/issues/30): Resolution of time returned by `Timer::stop()` is different than before (this reverts using `hrtime()` instead of `microtime()`)
+
+## [3.1.0] - 2020-04-17
+
+### Added
+
+* `Timer::secondsToShortTimeString()` as alternative to `Timer::secondsToTimeString()`
+
+### Changed
+
+* `Timer::start()` and `Timer::stop()` now use `hrtime()` (high resolution monotonic timer) instead of `microtime()`
+* `Timer::timeSinceStartOfRequest()` now uses `Timer::secondsToShortTimeString()` for time formatting
+* Improved formatting of `Timer::secondsToTimeString()` result
+
+## [3.0.0] - 2020-02-07
+
+### Removed
+
+* This component is no longer supported on PHP 7.1 and PHP 7.2
+
+## [2.1.2] - 2019-06-07
+
+### Fixed
+
+* [#21](https://github.com/sebastianbergmann/php-timer/pull/21): Formatting of memory consumption does not work on 32bit systems
+
+## [2.1.1] - 2019-02-20
+
+### Changed
+
+* Improved formatting of memory consumption for `resourceUsage()`
+
+## [2.1.0] - 2019-02-20
+
+### Changed
+
+* Improved formatting of memory consumption for `resourceUsage()`
+
+## [2.0.0] - 2018-02-01
+
+### Changed
+
+* This component now uses namespaces
+
+### Removed
+
+* This component is no longer supported on PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6, and PHP 7.0
+
+[5.0.3]: https://github.com/sebastianbergmann/php-timer/compare/5.0.2...5.0.3
+[5.0.2]: https://github.com/sebastianbergmann/php-timer/compare/5.0.1...5.0.2
+[5.0.1]: https://github.com/sebastianbergmann/php-timer/compare/5.0.0...5.0.1
+[5.0.0]: https://github.com/sebastianbergmann/php-timer/compare/4.0.0...5.0.0
+[4.0.0]: https://github.com/sebastianbergmann/php-timer/compare/3.1.4...4.0.0
+[3.1.4]: https://github.com/sebastianbergmann/php-timer/compare/3.1.3...3.1.4
+[3.1.3]: https://github.com/sebastianbergmann/php-timer/compare/3.1.2...3.1.3
+[3.1.2]: https://github.com/sebastianbergmann/php-timer/compare/3.1.1...3.1.2
+[3.1.1]: https://github.com/sebastianbergmann/php-timer/compare/3.1.0...3.1.1
+[3.1.0]: https://github.com/sebastianbergmann/php-timer/compare/3.0.0...3.1.0
+[3.0.0]: https://github.com/sebastianbergmann/php-timer/compare/2.1.2...3.0.0
+[2.1.2]: https://github.com/sebastianbergmann/php-timer/compare/2.1.1...2.1.2
+[2.1.1]: https://github.com/sebastianbergmann/php-timer/compare/2.1.0...2.1.1
+[2.1.0]: https://github.com/sebastianbergmann/php-timer/compare/2.0.0...2.1.0
+[2.0.0]: https://github.com/sebastianbergmann/php-timer/compare/1.0.9...2.0.0
diff --git a/vendor/phpunit/php-timer/LICENSE b/vendor/phpunit/php-timer/LICENSE
new file mode 100644
index 000000000..4193d8ae6
--- /dev/null
+++ b/vendor/phpunit/php-timer/LICENSE
@@ -0,0 +1,33 @@
+phpunit/php-timer
+
+Copyright (c) 2010-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/php-timer/README.md b/vendor/phpunit/php-timer/README.md
new file mode 100644
index 000000000..a7d1e70de
--- /dev/null
+++ b/vendor/phpunit/php-timer/README.md
@@ -0,0 +1,104 @@
+# phpunit/php-timer
+
+[![CI Status](https://github.com/sebastianbergmann/php-timer/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/php-timer/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/php-timer/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/php-timer)
+
+Utility class for timing things, factored out of PHPUnit into a stand-alone component.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require phpunit/php-timer
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev phpunit/php-timer
+```
+
+## Usage
+
+### Basic Timing
+
+```php
+require __DIR__ . '/vendor/autoload.php';
+
+use SebastianBergmann\Timer\Timer;
+
+$timer = new Timer;
+
+$timer->start();
+
+foreach (\range(0, 100000) as $i) {
+ // ...
+}
+
+$duration = $timer->stop();
+
+var_dump(get_class($duration));
+var_dump($duration->asString());
+var_dump($duration->asSeconds());
+var_dump($duration->asMilliseconds());
+var_dump($duration->asMicroseconds());
+var_dump($duration->asNanoseconds());
+```
+
+The code above yields the output below:
+
+```
+string(32) "SebastianBergmann\Timer\Duration"
+string(9) "00:00.002"
+float(0.002851062)
+float(2.851062)
+float(2851.062)
+int(2851062)
+```
+
+### Resource Consumption
+
+#### Explicit duration
+
+```php
+require __DIR__ . '/vendor/autoload.php';
+
+use SebastianBergmann\Timer\ResourceUsageFormatter;
+use SebastianBergmann\Timer\Timer;
+
+$timer = new Timer;
+$timer->start();
+
+foreach (\range(0, 100000) as $i) {
+ // ...
+}
+
+print (new ResourceUsageFormatter)->resourceUsage($timer->stop());
+```
+
+The code above yields the output below:
+
+```
+Time: 00:00.002, Memory: 6.00 MB
+```
+
+#### Duration since PHP Startup (using unreliable `$_SERVER['REQUEST_TIME_FLOAT']`)
+
+```php
+require __DIR__ . '/vendor/autoload.php';
+
+use SebastianBergmann\Timer\ResourceUsageFormatter;
+
+foreach (\range(0, 100000) as $i) {
+ // ...
+}
+
+print (new ResourceUsageFormatter)->resourceUsageSinceStartOfRequest();
+```
+
+The code above yields the output below:
+
+```
+Time: 00:00.002, Memory: 6.00 MB
+```
diff --git a/vendor/phpunit/php-timer/composer.json b/vendor/phpunit/php-timer/composer.json
new file mode 100644
index 000000000..001701c24
--- /dev/null
+++ b/vendor/phpunit/php-timer/composer.json
@@ -0,0 +1,45 @@
+{
+ "name": "phpunit/php-timer",
+ "description": "Utility class for timing",
+ "type": "library",
+ "keywords": [
+ "timer"
+ ],
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues"
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ }
+}
+
diff --git a/vendor/phpunit/php-timer/src/Duration.php b/vendor/phpunit/php-timer/src/Duration.php
new file mode 100644
index 000000000..e52bf018f
--- /dev/null
+++ b/vendor/phpunit/php-timer/src/Duration.php
@@ -0,0 +1,109 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-timer.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Timer;
+
+use function floor;
+use function sprintf;
+
+/**
+ * @psalm-immutable
+ */
+final class Duration
+{
+ /**
+ * @var float
+ */
+ private $nanoseconds;
+
+ /**
+ * @var int
+ */
+ private $hours;
+
+ /**
+ * @var int
+ */
+ private $minutes;
+
+ /**
+ * @var int
+ */
+ private $seconds;
+
+ /**
+ * @var int
+ */
+ private $milliseconds;
+
+ public static function fromMicroseconds(float $microseconds): self
+ {
+ return new self($microseconds * 1000);
+ }
+
+ public static function fromNanoseconds(float $nanoseconds): self
+ {
+ return new self($nanoseconds);
+ }
+
+ private function __construct(float $nanoseconds)
+ {
+ $this->nanoseconds = $nanoseconds;
+ $timeInMilliseconds = $nanoseconds / 1000000;
+ $hours = floor($timeInMilliseconds / 60 / 60 / 1000);
+ $hoursInMilliseconds = $hours * 60 * 60 * 1000;
+ $minutes = floor($timeInMilliseconds / 60 / 1000) % 60;
+ $minutesInMilliseconds = $minutes * 60 * 1000;
+ $seconds = floor(($timeInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds) / 1000);
+ $secondsInMilliseconds = $seconds * 1000;
+ $milliseconds = $timeInMilliseconds - $hoursInMilliseconds - $minutesInMilliseconds - $secondsInMilliseconds;
+ $this->hours = (int) $hours;
+ $this->minutes = $minutes;
+ $this->seconds = (int) $seconds;
+ $this->milliseconds = (int) $milliseconds;
+ }
+
+ public function asNanoseconds(): float
+ {
+ return $this->nanoseconds;
+ }
+
+ public function asMicroseconds(): float
+ {
+ return $this->nanoseconds / 1000;
+ }
+
+ public function asMilliseconds(): float
+ {
+ return $this->nanoseconds / 1000000;
+ }
+
+ public function asSeconds(): float
+ {
+ return $this->nanoseconds / 1000000000;
+ }
+
+ public function asString(): string
+ {
+ $result = '';
+
+ if ($this->hours > 0) {
+ $result = sprintf('%02d', $this->hours) . ':';
+ }
+
+ $result .= sprintf('%02d', $this->minutes) . ':';
+ $result .= sprintf('%02d', $this->seconds);
+
+ if ($this->milliseconds > 0) {
+ $result .= '.' . sprintf('%03d', $this->milliseconds);
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/phpunit/php-timer/src/ResourceUsageFormatter.php b/vendor/phpunit/php-timer/src/ResourceUsageFormatter.php
new file mode 100644
index 000000000..ad7926277
--- /dev/null
+++ b/vendor/phpunit/php-timer/src/ResourceUsageFormatter.php
@@ -0,0 +1,73 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-timer.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Timer;
+
+use function is_float;
+use function memory_get_peak_usage;
+use function microtime;
+use function sprintf;
+
+final class ResourceUsageFormatter
+{
+ /**
+ * @psalm-var array<string,int>
+ */
+ private const SIZES = [
+ 'GB' => 1073741824,
+ 'MB' => 1048576,
+ 'KB' => 1024,
+ ];
+
+ public function resourceUsage(Duration $duration): string
+ {
+ return sprintf(
+ 'Time: %s, Memory: %s',
+ $duration->asString(),
+ $this->bytesToString(memory_get_peak_usage(true))
+ );
+ }
+
+ /**
+ * @throws TimeSinceStartOfRequestNotAvailableException
+ */
+ public function resourceUsageSinceStartOfRequest(): string
+ {
+ if (!isset($_SERVER['REQUEST_TIME_FLOAT'])) {
+ throw new TimeSinceStartOfRequestNotAvailableException(
+ 'Cannot determine time at which the request started because $_SERVER[\'REQUEST_TIME_FLOAT\'] is not available'
+ );
+ }
+
+ if (!is_float($_SERVER['REQUEST_TIME_FLOAT'])) {
+ throw new TimeSinceStartOfRequestNotAvailableException(
+ 'Cannot determine time at which the request started because $_SERVER[\'REQUEST_TIME_FLOAT\'] is not of type float'
+ );
+ }
+
+ return $this->resourceUsage(
+ Duration::fromMicroseconds(
+ (1000000 * (microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']))
+ )
+ );
+ }
+
+ private function bytesToString(int $bytes): string
+ {
+ foreach (self::SIZES as $unit => $value) {
+ if ($bytes >= $value) {
+ return sprintf('%.2f %s', $bytes >= 1024 ? $bytes / $value : $bytes, $unit);
+ }
+ }
+
+ // @codeCoverageIgnoreStart
+ return $bytes . ' byte' . ($bytes !== 1 ? 's' : '');
+ // @codeCoverageIgnoreEnd
+ }
+}
diff --git a/vendor/phpunit/php-timer/src/Timer.php b/vendor/phpunit/php-timer/src/Timer.php
new file mode 100644
index 000000000..0917109be
--- /dev/null
+++ b/vendor/phpunit/php-timer/src/Timer.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-timer.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Timer;
+
+use function array_pop;
+use function hrtime;
+
+final class Timer
+{
+ /**
+ * @psalm-var list<float>
+ */
+ private $startTimes = [];
+
+ public function start(): void
+ {
+ $this->startTimes[] = (float) hrtime(true);
+ }
+
+ /**
+ * @throws NoActiveTimerException
+ */
+ public function stop(): Duration
+ {
+ if (empty($this->startTimes)) {
+ throw new NoActiveTimerException(
+ 'Timer::start() has to be called before Timer::stop()'
+ );
+ }
+
+ return Duration::fromNanoseconds((float) hrtime(true) - array_pop($this->startTimes));
+ }
+}
diff --git a/vendor/phpunit/php-timer/src/exceptions/Exception.php b/vendor/phpunit/php-timer/src/exceptions/Exception.php
new file mode 100644
index 000000000..996da0860
--- /dev/null
+++ b/vendor/phpunit/php-timer/src/exceptions/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-timer.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Timer;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/phpunit/php-timer/src/exceptions/NoActiveTimerException.php b/vendor/phpunit/php-timer/src/exceptions/NoActiveTimerException.php
new file mode 100644
index 000000000..40fe45e86
--- /dev/null
+++ b/vendor/phpunit/php-timer/src/exceptions/NoActiveTimerException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-timer.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Timer;
+
+use LogicException;
+
+final class NoActiveTimerException extends LogicException implements Exception
+{
+}
diff --git a/vendor/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php b/vendor/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php
new file mode 100644
index 000000000..a2d94ce80
--- /dev/null
+++ b/vendor/phpunit/php-timer/src/exceptions/TimeSinceStartOfRequestNotAvailableException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of phpunit/php-timer.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Timer;
+
+use RuntimeException;
+
+final class TimeSinceStartOfRequestNotAvailableException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/.phpstorm.meta.php b/vendor/phpunit/phpunit/.phpstorm.meta.php
new file mode 100644
index 000000000..b69ff7890
--- /dev/null
+++ b/vendor/phpunit/phpunit/.phpstorm.meta.php
@@ -0,0 +1,33 @@
+<?php
+namespace PHPSTORM_META {
+
+ override(
+ \PHPUnit\Framework\TestCase::createMock(0),
+ map([""=>"$0"])
+ );
+
+ override(
+ \PHPUnit\Framework\TestCase::createStub(0),
+ map([""=>"$0"])
+ );
+
+ override(
+ \PHPUnit\Framework\TestCase::createConfiguredMock(0),
+ map([""=>"$0"])
+ );
+
+ override(
+ \PHPUnit\Framework\TestCase::createPartialMock(0),
+ map([""=>"$0"])
+ );
+
+ override(
+ \PHPUnit\Framework\TestCase::createTestProxy(0),
+ map([""=>"$0"])
+ );
+
+ override(
+ \PHPUnit\Framework\TestCase::getMockForAbstractClass(0),
+ map([""=>"$0"])
+ );
+}
diff --git a/vendor/phpunit/phpunit/.phpunit.result.cache b/vendor/phpunit/phpunit/.phpunit.result.cache
new file mode 100644
index 000000000..c69f151c1
--- /dev/null
+++ b/vendor/phpunit/phpunit/.phpunit.result.cache
@@ -0,0 +1 @@
+{"version":1,"defects":{"UrlHelperTest::testCanBeUsedAsString":3},"times":{"UrlHelperTest::testCanBeUsedAsString":0.002}} \ No newline at end of file
diff --git a/vendor/phpunit/phpunit/ChangeLog-8.5.md b/vendor/phpunit/phpunit/ChangeLog-8.5.md
new file mode 100644
index 000000000..62567e8b3
--- /dev/null
+++ b/vendor/phpunit/phpunit/ChangeLog-8.5.md
@@ -0,0 +1,234 @@
+# Changes in PHPUnit 8.5
+
+All notable changes of the PHPUnit 8.5 release series are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [8.5.24] - 2022-MM-DD
+
+### Changed
+
+* [#4874](https://github.com/sebastianbergmann/phpunit/pull/4874): `PHP_FLOAT_EPSILON` is now used instead of hardcoded `0.0000000001` in `PHPUnit\Framework\Constraint\IsIdentical`
+
+### Fixed
+
+* When the HTML code coverage report's configured low upper bound is larger than the high lower bound then the default values are used instead
+
+## [8.5.23] - 2022-01-21
+
+### Fixed
+
+* [#4799](https://github.com/sebastianbergmann/phpunit/pull/4799): Memory leaks in `PHPUnit\Framework\TestSuite` class
+* [#4857](https://github.com/sebastianbergmann/phpunit/pull/4857): Result of `debug_backtrace()` is not used correctly
+
+## [8.5.22] - 2021-12-25
+
+### Changed
+
+* [#4812](https://github.com/sebastianbergmann/phpunit/issues/4812): Do not enforce time limits when a debugging session through DBGp is active
+* [#4835](https://github.com/sebastianbergmann/phpunit/issues/4835): Support for `$GLOBALS['_composer_autoload_path']` introduced in Composer 2.2
+
+### Fixed
+
+* [#4840](https://github.com/sebastianbergmann/phpunit/pull/4840): TestDox prettifying for class names does not correctly handle diacritics
+* [#4846](https://github.com/sebastianbergmann/phpunit/pull/4846): Composer proxy script is not ignored
+
+## [8.5.21] - 2021-09-25
+
+### Changed
+
+* PHPUnit no longer converts PHP deprecations to exceptions by default (configure `convertDeprecationsToExceptions="true"` to enable this)
+* The PHPUnit XML configuration file generator now configures `convertDeprecationsToExceptions="true"`
+
+### Fixed
+
+* [#4772](https://github.com/sebastianbergmann/phpunit/pull/4772): TestDox HTML report not displayed correctly when browser has custom colour settings
+
+## [8.5.20] - 2021-08-31
+
+### Fixed
+
+* [#4751](https://github.com/sebastianbergmann/phpunit/issues/4751): Configuration validation fails when using brackets in glob pattern
+
+## [8.5.19] - 2021-07-31
+
+### Fixed
+
+* [#4740](https://github.com/sebastianbergmann/phpunit/issues/4740): `phpunit.phar` does not work with PHP 8.1
+
+## [8.5.18] - 2021-07-19
+
+### Fixed
+
+* [#4720](https://github.com/sebastianbergmann/phpunit/issues/4720): PHPUnit does not verify its own PHP extension requirements
+
+## [8.5.17] - 2021-06-23
+
+### Changed
+
+* PHPUnit now errors out on startup when `PHP_VERSION` contains a value that is not compatible with `version_compare()`, for instance `X.Y.Z-(to be removed in future macOS)`
+
+## [8.5.16] - 2021-06-05
+
+### Changed
+
+* The test result cache (the storage for which is implemented in `PHPUnit\Runner\DefaultTestResultCache`) no longer uses PHP's `serialize()` and `unserialize()` functions for persistence. It now uses a versioned JSON format instead that is independent of PHP implementation details (see [#3581](https://github.com/sebastianbergmann/phpunit/issues/3581) and [#4662](https://github.com/sebastianbergmann/phpunit/pull/4662) for examples why this is a problem). When PHPUnit tries to load the test result cache from a file that does not exist, or from a file that does not contain data in JSON format, or from a file that contains data in a JSON format version other than the one used by the currently running PHPUnit version, then this is considered to be a "cache miss". An empty `DefaultTestResultCache` object is created in this case. This should also prevent PHPUnit from crashing when trying to load a test result cache file created by a different version of PHPUnit (see [#4580](https://github.com/sebastianbergmann/phpunit/issues/4580) for example).
+
+### Fixed
+
+* [#4663](https://github.com/sebastianbergmann/phpunit/issues/4663): `TestCase::expectError()` works on PHP 7.3, but not on PHP >= 7.4
+* [#4678](https://github.com/sebastianbergmann/phpunit/pull/4678): Stubbed methods with `iterable` return types should return empty array by default
+* [#4692](https://github.com/sebastianbergmann/phpunit/issues/4692): Annotations in single-line doc-comments are not handled correctly
+* [#4694](https://github.com/sebastianbergmann/phpunit/issues/4694): `TestCase::getMockFromWsdl()` does not work with PHP 8.1-dev
+
+## [8.5.15] - 2021-03-17
+
+### Fixed
+
+* [#4591](https://github.com/sebastianbergmann/phpunit/issues/4591): TeamCity logger logs warnings as test failures
+
+## [8.5.14] - 2021-01-17
+
+### Fixed
+
+* [#4535](https://github.com/sebastianbergmann/phpunit/issues/4535): `getMockFromWsdl()` does not handle methods that do not have parameters correctly
+* [#4572](https://github.com/sebastianbergmann/phpunit/issues/4572): Schema validation does not work with `%xx` sequences in path to `phpunit.xsd`
+* [#4575](https://github.com/sebastianbergmann/phpunit/issues/4575): PHPUnit 8.5 incompatibility with PHP 8.1
+
+## [8.5.13] - 2020-12-01
+
+### Fixed
+
+* Running tests in isolated processes did not work with PHP 8 on Windows
+
+## [8.5.12] - 2020-11-30
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.2` to `>=7.2` to allow the installation of PHPUnit 8.5 on PHP 8. Please note that the code coverage functionality is not available for PHPUnit 8.5 on PHP 8.
+
+### Fixed
+
+* [#4529](https://github.com/sebastianbergmann/phpunit/issues/4529): Debug mode of Xdebug 2 is not disabled for PHPT tests
+
+## [8.5.11] - 2020-11-27
+
+### Changed
+
+* Bumped required version of `phpunit/php-code-coverage`
+
+## [8.5.10] - 2020-11-27
+
+### Added
+
+* Support for Xdebug 3
+
+### Fixed
+
+* [#4516](https://github.com/sebastianbergmann/phpunit/issues/4516): `phpunit/phpunit-selenium` does not work with PHPUnit 8.5.9
+
+## [8.5.9] - 2020-11-10
+
+### Fixed
+
+* [#3965](https://github.com/sebastianbergmann/phpunit/issues/3965): Process Isolation throws exceptions when PHPDBG is used
+* [#4470](https://github.com/sebastianbergmann/phpunit/pull/4470): Infinite recursion when `--static-backup --strict-global-state` is used
+
+## [8.5.8] - 2020-06-22
+
+### Fixed
+
+* [#4312](https://github.com/sebastianbergmann/phpunit/issues/4312): Fix for [#4299](https://github.com/sebastianbergmann/phpunit/issues/4299) breaks backward compatibility
+
+## [8.5.7] - 2020-06-21
+
+### Fixed
+
+* [#4299](https://github.com/sebastianbergmann/phpunit/issues/4299): "No tests executed" does not always result in exit code `1`
+* [#4306](https://github.com/sebastianbergmann/phpunit/issues/4306): Exceptions during code coverage driver initialization are not handled correctly
+
+## [8.5.6] - 2020-06-15
+
+### Fixed
+
+* [#4211](https://github.com/sebastianbergmann/phpunit/issues/4211): `phpdbg_*()` functions are scoped to `PHPUnit\phpdbg_*()`
+
+## [8.5.5] - 2020-05-22
+
+### Fixed
+
+* [#4033](https://github.com/sebastianbergmann/phpunit/issues/4033): Unexpected behaviour when `$GLOBALS` is deleted
+
+## [8.5.4] - 2020-04-23
+
+### Changed
+
+* Changed how `PHPUnit\TextUI\Command` passes warnings to `PHPUnit\TextUI\TestRunner`
+
+## [8.5.3] - 2020-03-31
+
+### Fixed
+
+* [#4017](https://github.com/sebastianbergmann/phpunit/issues/4017): Do not suggest refactoring to something that is also deprecated
+* [#4133](https://github.com/sebastianbergmann/phpunit/issues/4133): `expectExceptionMessageRegExp()` has been removed in PHPUnit 9 without a deprecation warning being given in PHPUnit 8
+* [#4139](https://github.com/sebastianbergmann/phpunit/issues/4139): Cannot double interfaces that declare a constructor with PHP 8
+* [#4144](https://github.com/sebastianbergmann/phpunit/issues/4144): Empty objects are converted to empty arrays in JSON comparison failure diff
+
+## [8.5.2] - 2020-01-08
+
+### Removed
+
+* `eval-stdin.php` has been removed, it was not used anymore since PHPUnit 7.2.7
+
+## [8.5.1] - 2019-12-25
+
+### Changed
+
+* `eval-stdin.php` can now only be executed with `cli` and `phpdbg`
+
+### Fixed
+
+* [#3983](https://github.com/sebastianbergmann/phpunit/issues/3983): Deprecation warning given too eagerly
+
+## [8.5.0] - 2019-12-06
+
+### Added
+
+* [#3911](https://github.com/sebastianbergmann/phpunit/issues/3911): Support combined use of `addMethods()` and `onlyMethods()`
+* [#3949](https://github.com/sebastianbergmann/phpunit/issues/3949): Introduce specialized assertions `assertFileEqualsCanonicalizing()`, `assertFileEqualsIgnoringCase()`, `assertStringEqualsFileCanonicalizing()`, `assertStringEqualsFileIgnoringCase()`, `assertFileNotEqualsCanonicalizing()`, `assertFileNotEqualsIgnoringCase()`, `assertStringNotEqualsFileCanonicalizing()`, and `assertStringNotEqualsFileIgnoringCase()` as alternative to using `assertFileEquals()` etc. with optional parameters
+
+### Changed
+
+* [#3860](https://github.com/sebastianbergmann/phpunit/pull/3860): Deprecate invoking PHPUnit commandline test runner with just a class name
+* [#3950](https://github.com/sebastianbergmann/phpunit/issues/3950): Deprecate optional parameters of `assertFileEquals()` etc.
+* [#3955](https://github.com/sebastianbergmann/phpunit/issues/3955): Deprecate support for doubling multiple interfaces
+
+### Fixed
+
+* [#3953](https://github.com/sebastianbergmann/phpunit/issues/3953): Code Coverage for test executed in isolation does not work when the PHAR is used
+* [#3967](https://github.com/sebastianbergmann/phpunit/issues/3967): Cannot double interface that extends interface that extends `\Throwable`
+* [#3968](https://github.com/sebastianbergmann/phpunit/pull/3968): Test class run in a separate PHP process are passing when `exit` called inside
+
+[8.5.24]: https://github.com/sebastianbergmann/phpunit/compare/8.5.23...8.5
+[8.5.23]: https://github.com/sebastianbergmann/phpunit/compare/8.5.22...8.5.23
+[8.5.22]: https://github.com/sebastianbergmann/phpunit/compare/8.5.21...8.5.22
+[8.5.21]: https://github.com/sebastianbergmann/phpunit/compare/8.5.20...8.5.21
+[8.5.20]: https://github.com/sebastianbergmann/phpunit/compare/8.5.19...8.5.20
+[8.5.19]: https://github.com/sebastianbergmann/phpunit/compare/8.5.18...8.5.19
+[8.5.18]: https://github.com/sebastianbergmann/phpunit/compare/8.5.17...8.5.18
+[8.5.17]: https://github.com/sebastianbergmann/phpunit/compare/8.5.16...8.5.17
+[8.5.16]: https://github.com/sebastianbergmann/phpunit/compare/8.5.15...8.5.16
+[8.5.15]: https://github.com/sebastianbergmann/phpunit/compare/8.5.14...8.5.15
+[8.5.14]: https://github.com/sebastianbergmann/phpunit/compare/8.5.13...8.5.14
+[8.5.13]: https://github.com/sebastianbergmann/phpunit/compare/8.5.12...8.5.13
+[8.5.12]: https://github.com/sebastianbergmann/phpunit/compare/8.5.11...8.5.12
+[8.5.11]: https://github.com/sebastianbergmann/phpunit/compare/8.5.10...8.5.11
+[8.5.10]: https://github.com/sebastianbergmann/phpunit/compare/8.5.9...8.5.10
+[8.5.9]: https://github.com/sebastianbergmann/phpunit/compare/8.5.8...8.5.9
+[8.5.8]: https://github.com/sebastianbergmann/phpunit/compare/8.5.7...8.5.8
+[8.5.7]: https://github.com/sebastianbergmann/phpunit/compare/8.5.6...8.5.7
+[8.5.6]: https://github.com/sebastianbergmann/phpunit/compare/8.5.5...8.5.6
+[8.5.5]: https://github.com/sebastianbergmann/phpunit/compare/8.5.4...8.5.5
+[8.5.4]: https://github.com/sebastianbergmann/phpunit/compare/8.5.3...8.5.4
+[8.5.3]: https://github.com/sebastianbergmann/phpunit/compare/8.5.2...8.5.3
+[8.5.2]: https://github.com/sebastianbergmann/phpunit/compare/8.5.1...8.5.2
+[8.5.1]: https://github.com/sebastianbergmann/phpunit/compare/8.5.0...8.5.1
+[8.5.0]: https://github.com/sebastianbergmann/phpunit/compare/8.4.3...8.5.0
diff --git a/vendor/phpunit/phpunit/ChangeLog-9.5.md b/vendor/phpunit/phpunit/ChangeLog-9.5.md
new file mode 100644
index 000000000..d9d071c12
--- /dev/null
+++ b/vendor/phpunit/phpunit/ChangeLog-9.5.md
@@ -0,0 +1,153 @@
+# Changes in PHPUnit 9.5
+
+All notable changes of the PHPUnit 9.5 release series are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [9.5.16] - 2022-02-23
+
+### Changed
+
+* Reverted sync with API change in (now yanked) phpunit/php-code-coverage 9.2.12
+
+## [9.5.15] - 2022-02-23 [YANKED]
+
+### Fixed
+
+* When the HTML code coverage report's configured low upper bound is larger than the high lower bound then the default values are used instead
+
+## [9.5.14] - 2022-02-18
+
+### Changed
+
+* [#4874](https://github.com/sebastianbergmann/phpunit/pull/4874): `PHP_FLOAT_EPSILON` is now used instead of hardcoded `0.0000000001` in `PHPUnit\Framework\Constraint\IsIdentical`
+
+## [9.5.13] - 2022-01-24
+
+### Fixed
+
+* [#4871](https://github.com/sebastianbergmann/phpunit/issues/4871): Class `SebastianBergmann\CodeCoverage\Filter` is not found during PHPT tests when PHPUnit is used from PHAR
+
+## [9.5.12] - 2022-01-21
+
+### Fixed
+
+* [#4799](https://github.com/sebastianbergmann/phpunit/pull/4799): Memory leaks in `PHPUnit\Framework\TestSuite` class
+* [#4857](https://github.com/sebastianbergmann/phpunit/pull/4857): Result of `debug_backtrace()` is not used correctly
+
+## [9.5.11] - 2021-12-25
+
+### Changed
+
+* [#4812](https://github.com/sebastianbergmann/phpunit/issues/4812): Do not enforce time limits when a debugging session through DBGp is active
+* [#4835](https://github.com/sebastianbergmann/phpunit/issues/4835): Support for `$GLOBALS['_composer_autoload_path']` introduced in Composer 2.2
+
+### Fixed
+
+* [#4840](https://github.com/sebastianbergmann/phpunit/pull/4840): TestDox prettifying for class names does not correctly handle diacritics
+* [#4846](https://github.com/sebastianbergmann/phpunit/pull/4846): Composer proxy script is not ignored
+
+## [9.5.10] - 2021-09-25
+
+### Changed
+
+* PHPUnit no longer converts PHP deprecations to exceptions by default (configure `convertDeprecationsToExceptions="true"` to enable this)
+* The PHPUnit XML configuration file generator now configures `convertDeprecationsToExceptions="true"`
+
+### Fixed
+
+* [#4772](https://github.com/sebastianbergmann/phpunit/pull/4772): TestDox HTML report not displayed correctly when browser has custom colour settings
+
+## [9.5.9] - 2021-08-31
+
+### Fixed
+
+* [#4750](https://github.com/sebastianbergmann/phpunit/issues/4750): Automatic return value generation leads to invalid (and superfluous) test double code generation when a stubbed method returns `*|false`
+* [#4751](https://github.com/sebastianbergmann/phpunit/issues/4751): Configuration validation fails when using brackets in glob pattern
+
+## [9.5.8] - 2021-07-31
+
+### Fixed
+
+* [#4740](https://github.com/sebastianbergmann/phpunit/issues/4740): `phpunit.phar` does not work with PHP 8.1
+
+## [9.5.7] - 2021-07-19
+
+### Fixed
+
+* [#4720](https://github.com/sebastianbergmann/phpunit/issues/4720): PHPUnit does not verify its own PHP extension requirements
+* [#4735](https://github.com/sebastianbergmann/phpunit/issues/4735): Automated return value generation does not work for stubbed methods that return `*|false`
+
+## [9.5.6] - 2021-06-23
+
+### Changed
+
+* PHPUnit now errors out on startup when `PHP_VERSION` contains a value that is not compatible with `version_compare()`, for instance `X.Y.Z-(to be removed in future macOS)`
+
+## [9.5.5] - 2021-06-05
+
+### Changed
+
+* The test result cache (the storage for which is implemented in `PHPUnit\Runner\DefaultTestResultCache`) no longer uses PHP's `serialize()` and `unserialize()` functions for persistence. It now uses a versioned JSON format instead that is independent of PHP implementation details (see [#3581](https://github.com/sebastianbergmann/phpunit/issues/3581) and [#4662](https://github.com/sebastianbergmann/phpunit/pull/4662) for examples why this is a problem). When PHPUnit tries to load the test result cache from a file that does not exist, or from a file that does not contain data in JSON format, or from a file that contains data in a JSON format version other than the one used by the currently running PHPUnit version, then this is considered to be a "cache miss". An empty `DefaultTestResultCache` object is created in this case. This should also prevent PHPUnit from crashing when trying to load a test result cache file created by a different version of PHPUnit (see [#4580](https://github.com/sebastianbergmann/phpunit/issues/4580) for example).
+
+### Fixed
+
+* [#4632](https://github.com/sebastianbergmann/phpunit/issues/4632): TestDox result printer does not handle repeated test execution correctly
+* [#4678](https://github.com/sebastianbergmann/phpunit/pull/4678): Stubbed methods with `iterable` return types should return empty array by default
+* [#4692](https://github.com/sebastianbergmann/phpunit/issues/4692): Annotations in single-line doc-comments are not handled correctly
+* [#4694](https://github.com/sebastianbergmann/phpunit/issues/4694): `TestCase::getMockFromWsdl()` does not work with PHP 8.1-dev
+
+## [9.5.4] - 2021-03-23
+
+### Fixed
+
+* [#4630](https://github.com/sebastianbergmann/phpunit/issues/4630): Empty test case class causes error in TestDox XML logger
+
+## [9.5.3] - 2021-03-17
+
+### Fixed
+
+* [#4591](https://github.com/sebastianbergmann/phpunit/issues/4591): TeamCity logger logs warnings as test failures
+* [#4620](https://github.com/sebastianbergmann/phpunit/issues/4620): No useful output when an error occurs in the bootstrap script
+
+## [9.5.2] - 2021-02-02
+
+### Fixed
+
+* [#4573](https://github.com/sebastianbergmann/phpunit/issues/4573): No stack trace printed when PHPUnit is used from PHAR
+* [#4590](https://github.com/sebastianbergmann/phpunit/issues/4590): `--coverage-text` CLI option is documented wrong
+
+## [9.5.1] - 2021-01-17
+
+### Fixed
+
+* [#4572](https://github.com/sebastianbergmann/phpunit/issues/4572): Schema validation does not work with `%xx` sequences in path to `phpunit.xsd`
+
+## [9.5.0] - 2020-12-04
+
+### Changed
+
+* [#4490](https://github.com/sebastianbergmann/phpunit/issues/4490): Emit Error instead of Warning when test case class cannot be instantiated
+* [#4491](https://github.com/sebastianbergmann/phpunit/issues/4491): Emit Error instead of Warning when data provider does not work correctly
+* [#4492](https://github.com/sebastianbergmann/phpunit/issues/4492): Emit Error instead of Warning when test double configuration is invalid
+* [#4493](https://github.com/sebastianbergmann/phpunit/issues/4493): Emit error when (configured) test directory does not exist
+
+### Fixed
+
+* [#4535](https://github.com/sebastianbergmann/phpunit/issues/4535): `getMockFromWsdl()` does not handle methods that do not have parameters correctly
+
+[9.5.16]: https://github.com/sebastianbergmann/phpunit/compare/dc738383c519243b0a967f63943a848d3fd861aa...9.5.16
+[9.5.15]: https://github.com/sebastianbergmann/phpunit/compare/9.5.14...dc738383c519243b0a967f63943a848d3fd861aa
+[9.5.14]: https://github.com/sebastianbergmann/phpunit/compare/9.5.13...9.5.14
+[9.5.13]: https://github.com/sebastianbergmann/phpunit/compare/9.5.12...9.5.13
+[9.5.12]: https://github.com/sebastianbergmann/phpunit/compare/9.5.11...9.5.12
+[9.5.11]: https://github.com/sebastianbergmann/phpunit/compare/9.5.10...9.5.11
+[9.5.10]: https://github.com/sebastianbergmann/phpunit/compare/9.5.9...9.5.10
+[9.5.9]: https://github.com/sebastianbergmann/phpunit/compare/9.5.8...9.5.9
+[9.5.8]: https://github.com/sebastianbergmann/phpunit/compare/9.5.7...9.5.8
+[9.5.7]: https://github.com/sebastianbergmann/phpunit/compare/9.5.6...9.5.7
+[9.5.6]: https://github.com/sebastianbergmann/phpunit/compare/9.5.5...9.5.6
+[9.5.5]: https://github.com/sebastianbergmann/phpunit/compare/9.5.4...9.5.5
+[9.5.4]: https://github.com/sebastianbergmann/phpunit/compare/9.5.3...9.5.4
+[9.5.3]: https://github.com/sebastianbergmann/phpunit/compare/9.5.2...9.5.3
+[9.5.2]: https://github.com/sebastianbergmann/phpunit/compare/9.5.1...9.5.2
+[9.5.1]: https://github.com/sebastianbergmann/phpunit/compare/9.5.0...9.5.1
+[9.5.0]: https://github.com/sebastianbergmann/phpunit/compare/9.4.4...9.5.0
diff --git a/vendor/phpunit/phpunit/LICENSE b/vendor/phpunit/phpunit/LICENSE
new file mode 100644
index 000000000..78ff6219c
--- /dev/null
+++ b/vendor/phpunit/phpunit/LICENSE
@@ -0,0 +1,33 @@
+PHPUnit
+
+Copyright (c) 2001-2022, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/phpunit/phpunit/README.md b/vendor/phpunit/phpunit/README.md
new file mode 100644
index 000000000..cb7739be0
--- /dev/null
+++ b/vendor/phpunit/phpunit/README.md
@@ -0,0 +1,43 @@
+# PHPUnit
+
+PHPUnit is a programmer-oriented testing framework for PHP. It is an instance of the xUnit architecture for unit testing frameworks.
+
+[![Latest Stable Version](https://img.shields.io/packagist/v/phpunit/phpunit.svg?style=flat-square)](https://packagist.org/packages/phpunit/phpunit)
+[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.3-8892BF.svg?style=flat-square)](https://php.net/)
+[![CI Status](https://github.com/sebastianbergmann/phpunit/workflows/CI/badge.svg?branch=9.5&event=push)](https://phpunit.de/build-status.html)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/phpunit/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/phpunit)
+
+## Installation
+
+We distribute a [PHP Archive (PHAR)](https://php.net/phar) that has all required (as well as some optional) dependencies of PHPUnit bundled in a single file:
+
+```bash
+$ wget https://phar.phpunit.de/phpunit-X.Y.phar
+
+$ php phpunit-X.Y.phar --version
+```
+
+Please replace `X.Y` with the version of PHPUnit you are interested in.
+
+Alternatively, you may use [Composer](https://getcomposer.org/) to download and install PHPUnit as well as its dependencies. Please refer to the "[Getting Started](https://phpunit.de/getting-started-with-phpunit.html)" guide for details on how to install PHPUnit.
+
+## Contribute
+
+Please refer to [CONTRIBUTING.md](https://github.com/sebastianbergmann/phpunit/blob/master/.github/CONTRIBUTING.md) for information on how to contribute to PHPUnit and its related projects.
+
+## List of Contributors
+
+Thanks to everyone who has contributed to PHPUnit! You can find a detailed list of contributors on every PHPUnit related package on GitHub. This list shows only the major components:
+
+* [PHPUnit](https://github.com/sebastianbergmann/phpunit/graphs/contributors)
+* [php-code-coverage](https://github.com/sebastianbergmann/php-code-coverage/graphs/contributors)
+
+A very special thanks to everyone who has contributed to the documentation and helps maintain the translations:
+
+* [English](https://github.com/sebastianbergmann/phpunit-documentation-english/graphs/contributors)
+* [Spanish](https://github.com/sebastianbergmann/phpunit-documentation-spanish/graphs/contributors)
+* [French](https://github.com/sebastianbergmann/phpunit-documentation-french/graphs/contributors)
+* [Japanese](https://github.com/sebastianbergmann/phpunit-documentation-japanese/graphs/contributors)
+* [Brazilian Portuguese](https://github.com/sebastianbergmann/phpunit-documentation-brazilian-portuguese/graphs/contributors)
+* [Simplified Chinese](https://github.com/sebastianbergmann/phpunit-documentation-chinese/graphs/contributors)
+
diff --git a/vendor/phpunit/phpunit/composer.json b/vendor/phpunit/phpunit/composer.json
new file mode 100644
index 000000000..4000dd894
--- /dev/null
+++ b/vendor/phpunit/phpunit/composer.json
@@ -0,0 +1,94 @@
+{
+ "name": "phpunit/phpunit",
+ "description": "The PHP Unit Testing framework.",
+ "type": "library",
+ "keywords": [
+ "phpunit",
+ "xunit",
+ "testing"
+ ],
+ "homepage": "https://phpunit.de/",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues"
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "doctrine/instantiator": "^1.3.1",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.3",
+ "phar-io/version": "^3.0.2",
+ "phpspec/prophecy": "^1.12.1",
+ "phpunit/php-code-coverage": "^9.2.13",
+ "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.3",
+ "phpunit/php-timer": "^5.0.2",
+ "sebastian/cli-parser": "^1.0.1",
+ "sebastian/code-unit": "^1.0.6",
+ "sebastian/comparator": "^4.0.5",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.3",
+ "sebastian/exporter": "^4.0.3",
+ "sebastian/global-state": "^5.0.1",
+ "sebastian/object-enumerator": "^4.0.3",
+ "sebastian/resource-operations": "^3.0.3",
+ "sebastian/type": "^2.3.4",
+ "sebastian/version": "^3.0.2"
+ },
+ "require-dev": {
+ "ext-PDO": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "autoload": {
+ "classmap": [
+ "src/"
+ ],
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ]
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/"
+ ],
+ "files": [
+ "tests/_files/CoverageNamespacedFunctionTest.php",
+ "tests/_files/CoveredFunction.php",
+ "tests/_files/NamespaceCoveredFunction.php"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.5-dev"
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/phpunit b/vendor/phpunit/phpunit/phpunit
new file mode 100644
index 000000000..c80295668
--- /dev/null
+++ b/vendor/phpunit/phpunit/phpunit
@@ -0,0 +1,98 @@
+#!/usr/bin/env php
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (!version_compare(PHP_VERSION, PHP_VERSION, '=')) {
+ fwrite(
+ STDERR,
+ sprintf(
+ '%s declares an invalid value for PHP_VERSION.' . PHP_EOL .
+ 'This breaks fundamental functionality such as version_compare().' . PHP_EOL .
+ 'Please use a different PHP interpreter.' . PHP_EOL,
+
+ PHP_BINARY
+ )
+ );
+
+ die(1);
+}
+
+if (version_compare('7.3.0', PHP_VERSION, '>')) {
+ fwrite(
+ STDERR,
+ sprintf(
+ 'This version of PHPUnit requires PHP >= 7.3.' . PHP_EOL .
+ 'You are using PHP %s (%s).' . PHP_EOL,
+ PHP_VERSION,
+ PHP_BINARY
+ )
+ );
+
+ die(1);
+}
+
+foreach (['dom', 'json', 'libxml', 'mbstring', 'tokenizer', 'xml', 'xmlwriter'] as $extension) {
+ if (extension_loaded($extension)) {
+ continue;
+ }
+
+ fwrite(
+ STDERR,
+ sprintf(
+ 'PHPUnit requires the "%s" extension.' . PHP_EOL,
+ $extension
+ )
+ );
+
+ die(1);
+}
+
+if (!ini_get('date.timezone')) {
+ ini_set('date.timezone', 'UTC');
+}
+
+if (isset($GLOBALS['_composer_autoload_path'])) {
+ define('PHPUNIT_COMPOSER_INSTALL', $GLOBALS['_composer_autoload_path']);
+
+ unset($GLOBALS['_composer_autoload_path']);
+} else {
+ foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php') as $file) {
+ if (file_exists($file)) {
+ define('PHPUNIT_COMPOSER_INSTALL', $file);
+
+ break;
+ }
+ }
+
+ unset($file);
+}
+
+if (!defined('PHPUNIT_COMPOSER_INSTALL')) {
+ fwrite(
+ STDERR,
+ 'You need to set up the project dependencies using Composer:' . PHP_EOL . PHP_EOL .
+ ' composer install' . PHP_EOL . PHP_EOL .
+ 'You can learn all about Composer on https://getcomposer.org/.' . PHP_EOL
+ );
+
+ die(1);
+}
+
+$options = getopt('', array('prepend:'));
+
+if (isset($options['prepend'])) {
+ require $options['prepend'];
+}
+
+unset($options);
+
+require PHPUNIT_COMPOSER_INSTALL;
+
+PHPUnit\TextUI\Command::main();
diff --git a/vendor/phpunit/phpunit/phpunit.xsd b/vendor/phpunit/phpunit/phpunit.xsd
new file mode 100644
index 000000000..cf44e8a49
--- /dev/null
+++ b/vendor/phpunit/phpunit/phpunit.xsd
@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:annotation>
+ <xs:documentation source="https://phpunit.de/documentation.html">
+ This Schema file defines the rules by which the XML configuration file of PHPUnit 9.5 may be structured.
+ </xs:documentation>
+ <xs:appinfo source="https://phpunit.de/documentation.html"/>
+ </xs:annotation>
+ <xs:element name="phpunit" type="phpUnitType">
+ <xs:annotation>
+ <xs:documentation>Root Element</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:complexType name="coverageType">
+ <xs:all>
+ <xs:element name="include" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:group ref="pathGroup"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="exclude" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:group ref="pathGroup"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="report" minOccurs="0" maxOccurs="1">
+ <xs:complexType>
+ <xs:group ref="coverageReportGroup"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ <xs:attribute name="cacheDirectory" type="xs:anyURI"/>
+ <xs:attribute name="pathCoverage" type="xs:boolean" default="false"/>
+ <xs:attribute name="includeUncoveredFiles" type="xs:boolean" default="true"/>
+ <xs:attribute name="processUncoveredFiles" type="xs:boolean" default="false"/>
+ <xs:attribute name="ignoreDeprecatedCodeUnits" type="xs:boolean" default="false"/>
+ <xs:attribute name="disableCodeCoverageIgnore" type="xs:boolean" default="false"/>
+ </xs:complexType>
+ <xs:complexType name="loggingType">
+ <xs:group ref="loggingGroup"/>
+ </xs:complexType>
+ <xs:complexType name="groupsType">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element name="include" type="groupType"/>
+ <xs:element name="exclude" type="groupType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element name="exclude" type="groupType"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="groupType">
+ <xs:sequence>
+ <xs:element name="group" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="extensionsType">
+ <xs:sequence>
+ <xs:element name="extension" type="objectType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="listenersType">
+ <xs:sequence>
+ <xs:element name="listener" type="objectType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="objectType">
+ <xs:sequence>
+ <xs:element name="arguments" minOccurs="0">
+ <xs:complexType>
+ <xs:group ref="argumentsGroup"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="class" type="xs:string" use="required"/>
+ <xs:attribute name="file" type="xs:anyURI"/>
+ </xs:complexType>
+ <xs:complexType name="arrayType">
+ <xs:sequence>
+ <xs:element name="element" type="argumentType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="argumentType">
+ <xs:group ref="argumentChoice"/>
+ <xs:attribute name="key" use="required"/>
+ </xs:complexType>
+ <xs:group name="argumentsGroup">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="array" type="arrayType" />
+ <xs:element name="integer" type="xs:integer" />
+ <xs:element name="string" type="xs:string" />
+ <xs:element name="double" type="xs:double" />
+ <xs:element name="null" />
+ <xs:element name="object" type="objectType" />
+ <xs:element name="file" type="xs:anyURI" />
+ <xs:element name="directory" type="xs:anyURI" />
+ <xs:element name="boolean" type="xs:boolean" />
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="argumentChoice">
+ <xs:choice>
+ <xs:element name="array" type="arrayType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="integer" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="double" type="xs:double" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="null" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="object" type="objectType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="file" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="directory" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="boolean" type="xs:boolean" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ </xs:group>
+ <xs:simpleType name="columnsType">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:integer"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="max"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:group name="pathGroup">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="directory" type="directoryFilterType"/>
+ <xs:element name="file" type="fileFilterType"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="directoryFilterType">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute type="xs:string" name="prefix" default=""/>
+ <xs:attribute type="xs:string" name="suffix" default="Test.php"/>
+ <xs:attributeGroup ref="phpVersionGroup"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:simpleType name="executionOrderType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="defects"/>
+ <xs:enumeration value="depends"/>
+ <xs:enumeration value="depends,defects"/>
+ <xs:enumeration value="depends,duration"/>
+ <xs:enumeration value="depends,random"/>
+ <xs:enumeration value="depends,reverse"/>
+ <xs:enumeration value="depends,size"/>
+ <xs:enumeration value="duration"/>
+ <xs:enumeration value="no-depends"/>
+ <xs:enumeration value="no-depends,defects"/>
+ <xs:enumeration value="no-depends,duration"/>
+ <xs:enumeration value="no-depends,random"/>
+ <xs:enumeration value="no-depends,reverse"/>
+ <xs:enumeration value="no-depends,size"/>
+ <xs:enumeration value="random"/>
+ <xs:enumeration value="reverse"/>
+ <xs:enumeration value="size"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="fileFilterType">
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="phpVersionGroup"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:attributeGroup name="phpVersionGroup">
+ <xs:attribute name="phpVersion" type="xs:string" default="5.3.0"/>
+ <xs:attribute name="phpVersionOperator" type="xs:string" default="&gt;="/>
+ </xs:attributeGroup>
+ <xs:complexType name="phpType">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="includePath" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ini" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="const" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="var" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="env" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="post" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="get" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="cookie" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="server" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="files" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="request" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="namedValueType">
+ <xs:attribute name="name" use="required" type="xs:string"/>
+ <xs:attribute name="value" use="required" type="xs:anySimpleType"/>
+ <xs:attribute name="verbatim" use="optional" type="xs:boolean"/>
+ <xs:attribute name="force" use="optional" type="xs:boolean"/>
+ </xs:complexType>
+ <xs:complexType name="phpUnitType">
+ <xs:annotation>
+ <xs:documentation>The main type specifying the document structure</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="configGroup"/>
+ <xs:attributeGroup ref="configAttributeGroup"/>
+ </xs:complexType>
+ <xs:attributeGroup name="configAttributeGroup">
+ <xs:attribute name="backupGlobals" type="xs:boolean" default="false"/>
+ <xs:attribute name="backupStaticAttributes" type="xs:boolean" default="false"/>
+ <xs:attribute name="bootstrap" type="xs:anyURI"/>
+ <xs:attribute name="cacheResult" type="xs:boolean" default="true"/>
+ <xs:attribute name="cacheResultFile" type="xs:anyURI"/>
+ <xs:attribute name="colors" type="xs:boolean" default="false"/>
+ <xs:attribute name="columns" type="columnsType" default="80"/>
+ <xs:attribute name="convertDeprecationsToExceptions" type="xs:boolean" default="false"/>
+ <xs:attribute name="convertErrorsToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="convertNoticesToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="convertWarningsToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="forceCoversAnnotation" type="xs:boolean" default="false"/>
+ <xs:attribute name="printerClass" type="xs:string" default="PHPUnit\TextUI\DefaultResultPrinter"/>
+ <xs:attribute name="printerFile" type="xs:anyURI"/>
+ <xs:attribute name="processIsolation" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnDefect" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnError" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnFailure" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnWarning" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnIncomplete" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnRisky" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnSkipped" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnEmptyTestSuite" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnIncomplete" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnRisky" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnSkipped" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnWarning" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutChangesToGlobalState" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutOutputDuringTests" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutResourceUsageDuringSmallTests" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutTestsThatDoNotTestAnything" type="xs:boolean" default="true"/>
+ <xs:attribute name="beStrictAboutTodoAnnotatedTests" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutCoversAnnotation" type="xs:boolean" default="false"/>
+ <xs:attribute name="defaultTimeLimit" type="xs:integer" default="0"/>
+ <xs:attribute name="enforceTimeLimit" type="xs:boolean" default="false"/>
+ <xs:attribute name="timeoutForSmallTests" type="xs:integer" default="1"/>
+ <xs:attribute name="timeoutForMediumTests" type="xs:integer" default="10"/>
+ <xs:attribute name="timeoutForLargeTests" type="xs:integer" default="60"/>
+ <xs:attribute name="testSuiteLoaderClass" type="xs:string" default="PHPUnit\Runner\StandardTestSuiteLoader"/>
+ <xs:attribute name="testSuiteLoaderFile" type="xs:anyURI"/>
+ <xs:attribute name="defaultTestSuite" type="xs:string" default=""/>
+ <xs:attribute name="verbose" type="xs:boolean" default="false"/>
+ <xs:attribute name="testdox" type="xs:boolean" default="false"/>
+ <xs:attribute name="stderr" type="xs:boolean" default="false"/>
+ <xs:attribute name="reverseDefectList" type="xs:boolean" default="false"/>
+ <xs:attribute name="registerMockObjectsFromTestArgumentsRecursively" type="xs:boolean" default="false"/>
+ <xs:attribute name="extensionsDirectory" type="xs:anyURI"/>
+ <xs:attribute name="executionOrder" type="executionOrderType" default="default"/>
+ <xs:attribute name="resolveDependencies" type="xs:boolean" default="true"/>
+ <xs:attribute name="noInteraction" type="xs:boolean" default="false"/>
+ </xs:attributeGroup>
+ <xs:group name="configGroup">
+ <xs:all>
+ <xs:element ref="testSuiteFacet" minOccurs="0"/>
+ <xs:element name="groups" type="groupsType" minOccurs="0"/>
+ <xs:element name="testdoxGroups" type="groupsType" minOccurs="0"/>
+ <xs:element name="coverage" type="coverageType" minOccurs="0"/>
+ <xs:element name="logging" type="loggingType" minOccurs="0"/>
+ <xs:element name="extensions" type="extensionsType" minOccurs="0"/>
+ <xs:element name="listeners" type="listenersType" minOccurs="0"/>
+ <xs:element name="php" type="phpType" minOccurs="0"/>
+ </xs:all>
+ </xs:group>
+ <xs:element name="testSuiteFacet" abstract="true"/>
+ <xs:element name="testsuite" type="testSuiteType" substitutionGroup="testSuiteFacet"/>
+ <xs:element name="testsuites" type="testSuitesType" substitutionGroup="testSuiteFacet"/>
+ <xs:complexType name="testSuitesType">
+ <xs:sequence>
+ <xs:element name="testsuite" type="testSuiteType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="testSuiteType">
+ <xs:sequence>
+ <xs:group ref="pathGroup"/>
+ <xs:element name="exclude" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:complexType>
+ <xs:group name="coverageReportGroup">
+ <xs:all>
+ <xs:element name="clover" type="logToFileType" minOccurs="0"/>
+ <xs:element name="cobertura" type="logToFileType" minOccurs="0"/>
+ <xs:element name="crap4j" type="coverageReportCrap4JType" minOccurs="0" />
+ <xs:element name="html" type="coverageReportHtmlType" minOccurs="0" />
+ <xs:element name="php" type="logToFileType" minOccurs="0" />
+ <xs:element name="text" type="coverageReportTextType" minOccurs="0" />
+ <xs:element name="xml" type="logToDirectoryType" minOccurs="0" />
+ </xs:all>
+ </xs:group>
+ <xs:group name="loggingGroup">
+ <xs:all>
+ <xs:element name="junit" type="logToFileType" minOccurs="0" />
+ <xs:element name="teamcity" type="logToFileType" minOccurs="0" />
+ <xs:element name="testdoxHtml" type="logToFileType" minOccurs="0" />
+ <xs:element name="testdoxText" type="logToFileType" minOccurs="0" />
+ <xs:element name="testdoxXml" type="logToFileType" minOccurs="0" />
+ <xs:element name="text" type="logToFileType" minOccurs="0"/>
+ </xs:all>
+ </xs:group>
+ <xs:complexType name="logToFileType">
+ <xs:attribute name="outputFile" type="xs:anyURI" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="logToDirectoryType">
+ <xs:attribute name="outputDirectory" type="xs:anyURI" use="required"/>
+ </xs:complexType>
+ <xs:complexType name="coverageReportCrap4JType">
+ <xs:attribute name="outputFile" type="xs:anyURI" use="required"/>
+ <xs:attribute name="threshold" type="xs:integer"/>
+ </xs:complexType>
+ <xs:complexType name="coverageReportHtmlType">
+ <xs:attribute name="outputDirectory" type="xs:anyURI" use="required"/>
+ <xs:attribute name="lowUpperBound" type="xs:integer" default="50"/>
+ <xs:attribute name="highLowerBound" type="xs:integer" default="90"/>
+ </xs:complexType>
+ <xs:complexType name="coverageReportTextType">
+ <xs:attribute name="outputFile" type="xs:anyURI" use="required"/>
+ <xs:attribute name="showUncoveredFiles" type="xs:boolean" default="false"/>
+ <xs:attribute name="showOnlySummary" type="xs:boolean" default="false"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/vendor/phpunit/phpunit/schema/8.5.xsd b/vendor/phpunit/phpunit/schema/8.5.xsd
new file mode 100644
index 000000000..5881bafec
--- /dev/null
+++ b/vendor/phpunit/phpunit/schema/8.5.xsd
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:annotation>
+ <xs:documentation source="https://phpunit.de/documentation.html">
+ This Schema file defines the rules by which the XML configuration file of PHPUnit 8.5 may be structured.
+ </xs:documentation>
+ <xs:appinfo source="https://phpunit.de/documentation.html"/>
+ </xs:annotation>
+ <xs:element name="phpunit" type="phpUnitType">
+ <xs:annotation>
+ <xs:documentation>Root Element</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:complexType name="filtersType">
+ <xs:sequence>
+ <xs:element name="whitelist" type="whiteListType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="filterType">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
+ <xs:group ref="pathGroup"/>
+ <xs:element name="exclude">
+ <xs:complexType>
+ <xs:group ref="pathGroup"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="whiteListType">
+ <xs:complexContent>
+ <xs:extension base="filterType">
+ <xs:attribute name="addUncoveredFilesFromWhitelist" default="true" type="xs:boolean"/>
+ <xs:attribute name="processUncoveredFilesFromWhitelist" default="false" type="xs:boolean"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="groupsType">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element name="include" type="groupType"/>
+ <xs:element name="exclude" type="groupType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element name="exclude" type="groupType"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="groupType">
+ <xs:sequence>
+ <xs:element name="group" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="extensionsType">
+ <xs:sequence>
+ <xs:element name="extension" type="objectType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="listenersType">
+ <xs:sequence>
+ <xs:element name="listener" type="objectType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="objectType">
+ <xs:sequence>
+ <xs:element name="arguments" minOccurs="0">
+ <xs:complexType>
+ <xs:group ref="argumentsGroup"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="class" type="xs:string" use="required"/>
+ <xs:attribute name="file" type="xs:anyURI"/>
+ </xs:complexType>
+ <xs:complexType name="arrayType">
+ <xs:sequence>
+ <xs:element name="element" type="argumentType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="argumentType">
+ <xs:group ref="argumentChoice"/>
+ <xs:attribute name="key" use="required"/>
+ </xs:complexType>
+ <xs:group name="argumentsGroup">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="array" type="arrayType" />
+ <xs:element name="integer" type="xs:integer" />
+ <xs:element name="string" type="xs:string" />
+ <xs:element name="double" type="xs:double" />
+ <xs:element name="null" />
+ <xs:element name="object" type="objectType" />
+ <xs:element name="file" type="xs:anyURI" />
+ <xs:element name="directory" type="xs:anyURI" />
+ <xs:element name="boolean" type="xs:boolean" />
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="argumentChoice">
+ <xs:choice>
+ <xs:element name="array" type="arrayType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="integer" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="double" type="xs:double" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="null" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="object" type="objectType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="file" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="directory" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="boolean" type="xs:boolean" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ </xs:group>
+ <xs:simpleType name="columnsType">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:integer"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="max"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:complexType name="loggersType">
+ <xs:sequence>
+ <xs:element name="log" type="loggerType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="loggerType">
+ <xs:attribute name="type">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="coverage-html"/>
+ <xs:enumeration value="coverage-text"/>
+ <xs:enumeration value="coverage-clover"/>
+ <xs:enumeration value="coverage-crap4j"/>
+ <xs:enumeration value="coverage-xml"/>
+ <xs:enumeration value="coverage-php"/>
+ <xs:enumeration value="json"/>
+ <xs:enumeration value="plain"/>
+ <xs:enumeration value="tap"/>
+ <xs:enumeration value="teamcity"/>
+ <xs:enumeration value="junit"/>
+ <xs:enumeration value="testdox-html"/>
+ <xs:enumeration value="testdox-text"/>
+ <xs:enumeration value="testdox-xml"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="target" type="xs:anyURI"/>
+ <xs:attribute name="lowUpperBound" type="xs:nonNegativeInteger" default="50"/>
+ <xs:attribute name="highLowerBound" type="xs:nonNegativeInteger" default="90"/>
+ <xs:attribute name="showUncoveredFiles" type="xs:boolean" default="false"/>
+ <xs:attribute name="showOnlySummary" type="xs:boolean" default="false"/>
+ <xs:attribute name="threshold" type="xs:nonNegativeInteger" default="30"/>
+ </xs:complexType>
+ <xs:group name="pathGroup">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="directory" type="directoryFilterType"/>
+ <xs:element name="file" type="fileFilterType"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="directoryFilterType">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute type="xs:string" name="prefix" default=""/>
+ <xs:attribute type="xs:string" name="suffix" default="Test.php"/>
+ <xs:attributeGroup ref="phpVersionGroup"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:simpleType name="executionOrderType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="defects"/>
+ <xs:enumeration value="depends"/>
+ <xs:enumeration value="depends,defects"/>
+ <xs:enumeration value="depends,duration"/>
+ <xs:enumeration value="depends,random"/>
+ <xs:enumeration value="depends,reverse"/>
+ <xs:enumeration value="depends,size"/>
+ <xs:enumeration value="duration"/>
+ <xs:enumeration value="no-depends"/>
+ <xs:enumeration value="no-depends,defects"/>
+ <xs:enumeration value="no-depends,duration"/>
+ <xs:enumeration value="no-depends,random"/>
+ <xs:enumeration value="no-depends,reverse"/>
+ <xs:enumeration value="no-depends,size"/>
+ <xs:enumeration value="random"/>
+ <xs:enumeration value="reverse"/>
+ <xs:enumeration value="size"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="fileFilterType">
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="phpVersionGroup"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:attributeGroup name="phpVersionGroup">
+ <xs:attribute name="phpVersion" type="xs:string" default="5.3.0"/>
+ <xs:attribute name="phpVersionOperator" type="xs:string" default="&gt;="/>
+ </xs:attributeGroup>
+ <xs:complexType name="phpType">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="includePath" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ini" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="const" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="var" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="env" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="post" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="get" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="cookie" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="server" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="files" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="request" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="namedValueType">
+ <xs:attribute name="name" use="required" type="xs:string"/>
+ <xs:attribute name="value" use="required" type="xs:anySimpleType"/>
+ <xs:attribute name="verbatim" use="optional" type="xs:boolean"/>
+ <xs:attribute name="force" use="optional" type="xs:boolean"/>
+ </xs:complexType>
+ <xs:complexType name="phpUnitType">
+ <xs:annotation>
+ <xs:documentation>The main type specifying the document structure</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="configGroup"/>
+ <xs:attributeGroup ref="configAttributeGroup"/>
+ </xs:complexType>
+ <xs:attributeGroup name="configAttributeGroup">
+ <xs:attribute name="backupGlobals" type="xs:boolean" default="false"/>
+ <xs:attribute name="backupStaticAttributes" type="xs:boolean" default="false"/>
+ <xs:attribute name="bootstrap" type="xs:anyURI"/>
+ <xs:attribute name="cacheResult" type="xs:boolean" default="true"/>
+ <xs:attribute name="cacheResultFile" type="xs:anyURI"/>
+ <xs:attribute name="cacheTokens" type="xs:boolean" default="false"/>
+ <xs:attribute name="colors" type="xs:boolean" default="false"/>
+ <xs:attribute name="columns" type="columnsType" default="80"/>
+ <xs:attribute name="convertDeprecationsToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="convertErrorsToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="convertNoticesToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="convertWarningsToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="disableCodeCoverageIgnore" type="xs:boolean" default="false"/>
+ <xs:attribute name="forceCoversAnnotation" type="xs:boolean" default="false"/>
+ <xs:attribute name="printerClass" type="xs:string" default="PHPUnit\TextUI\ResultPrinter"/>
+ <xs:attribute name="printerFile" type="xs:anyURI"/>
+ <xs:attribute name="processIsolation" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnDefect" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnError" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnFailure" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnWarning" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnIncomplete" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnRisky" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnSkipped" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnRisky" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnWarning" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutChangesToGlobalState" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutOutputDuringTests" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutResourceUsageDuringSmallTests" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutTestsThatDoNotTestAnything" type="xs:boolean" default="true"/>
+ <xs:attribute name="beStrictAboutTodoAnnotatedTests" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutCoversAnnotation" type="xs:boolean" default="false"/>
+ <xs:attribute name="defaultTimeLimit" type="xs:integer" default="0"/>
+ <xs:attribute name="enforceTimeLimit" type="xs:boolean" default="false"/>
+ <xs:attribute name="ignoreDeprecatedCodeUnitsFromCodeCoverage" type="xs:boolean" default="false"/>
+ <xs:attribute name="timeoutForSmallTests" type="xs:integer" default="1"/>
+ <xs:attribute name="timeoutForMediumTests" type="xs:integer" default="10"/>
+ <xs:attribute name="timeoutForLargeTests" type="xs:integer" default="60"/>
+ <xs:attribute name="testSuiteLoaderClass" type="xs:string" default="PHPUnit\Runner\StandardTestSuiteLoader"/>
+ <xs:attribute name="testSuiteLoaderFile" type="xs:anyURI"/>
+ <xs:attribute name="defaultTestSuite" type="xs:string" default=""/>
+ <xs:attribute name="verbose" type="xs:boolean" default="false"/>
+ <xs:attribute name="testdox" type="xs:boolean" default="false"/>
+ <xs:attribute name="stderr" type="xs:boolean" default="false"/>
+ <xs:attribute name="reverseDefectList" type="xs:boolean" default="false"/>
+ <xs:attribute name="registerMockObjectsFromTestArgumentsRecursively" type="xs:boolean" default="false"/>
+ <xs:attribute name="extensionsDirectory" type="xs:anyURI"/>
+ <xs:attribute name="executionOrder" type="executionOrderType" default="default"/>
+ <xs:attribute name="resolveDependencies" type="xs:boolean" default="true"/>
+ <xs:attribute name="noInteraction" type="xs:boolean" default="false"/>
+ </xs:attributeGroup>
+ <xs:group name="configGroup">
+ <xs:all>
+ <xs:element ref="testSuiteFacet" minOccurs="0"/>
+ <xs:element name="groups" type="groupsType" minOccurs="0"/>
+ <xs:element name="testdoxGroups" type="groupsType" minOccurs="0"/>
+ <xs:element name="filter" type="filtersType" minOccurs="0"/>
+ <xs:element name="logging" type="loggersType" minOccurs="0"/>
+ <xs:element name="extensions" type="extensionsType" minOccurs="0"/>
+ <xs:element name="listeners" type="listenersType" minOccurs="0"/>
+ <xs:element name="php" type="phpType" minOccurs="0"/>
+ </xs:all>
+ </xs:group>
+ <xs:element name="testSuiteFacet" abstract="true"/>
+ <xs:element name="testsuite" type="testSuiteType" substitutionGroup="testSuiteFacet"/>
+ <xs:element name="testsuites" type="testSuitesType" substitutionGroup="testSuiteFacet"/>
+ <xs:complexType name="testSuitesType">
+ <xs:sequence>
+ <xs:element name="testsuite" type="testSuiteType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="testSuiteType">
+ <xs:sequence>
+ <xs:group ref="pathGroup"/>
+ <xs:element name="exclude" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/vendor/phpunit/phpunit/schema/9.2.xsd b/vendor/phpunit/phpunit/schema/9.2.xsd
new file mode 100644
index 000000000..883f21bc0
--- /dev/null
+++ b/vendor/phpunit/phpunit/schema/9.2.xsd
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:annotation>
+ <xs:documentation source="https://phpunit.de/documentation.html">
+ This Schema file defines the rules by which the XML configuration file of PHPUnit 9.2 may be structured.
+ </xs:documentation>
+ <xs:appinfo source="https://phpunit.de/documentation.html"/>
+ </xs:annotation>
+ <xs:element name="phpunit" type="phpUnitType">
+ <xs:annotation>
+ <xs:documentation>Root Element</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:complexType name="filtersType">
+ <xs:sequence>
+ <xs:element name="whitelist" type="whiteListType" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="filterType">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded" minOccurs="0">
+ <xs:group ref="pathGroup"/>
+ <xs:element name="exclude">
+ <xs:complexType>
+ <xs:group ref="pathGroup"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="whiteListType">
+ <xs:complexContent>
+ <xs:extension base="filterType">
+ <xs:attribute name="addUncoveredFilesFromWhitelist" default="true" type="xs:boolean"/>
+ <xs:attribute name="processUncoveredFilesFromWhitelist" default="false" type="xs:boolean"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="groupsType">
+ <xs:choice>
+ <xs:sequence>
+ <xs:element name="include" type="groupType"/>
+ <xs:element name="exclude" type="groupType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:sequence>
+ <xs:element name="exclude" type="groupType"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="groupType">
+ <xs:sequence>
+ <xs:element name="group" type="xs:string" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="extensionsType">
+ <xs:sequence>
+ <xs:element name="extension" type="objectType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="listenersType">
+ <xs:sequence>
+ <xs:element name="listener" type="objectType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="objectType">
+ <xs:sequence>
+ <xs:element name="arguments" minOccurs="0">
+ <xs:complexType>
+ <xs:group ref="argumentsGroup"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="class" type="xs:string" use="required"/>
+ <xs:attribute name="file" type="xs:anyURI"/>
+ </xs:complexType>
+ <xs:complexType name="arrayType">
+ <xs:sequence>
+ <xs:element name="element" type="argumentType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="argumentType">
+ <xs:group ref="argumentChoice"/>
+ <xs:attribute name="key" use="required"/>
+ </xs:complexType>
+ <xs:group name="argumentsGroup">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="array" type="arrayType" />
+ <xs:element name="integer" type="xs:integer" />
+ <xs:element name="string" type="xs:string" />
+ <xs:element name="double" type="xs:double" />
+ <xs:element name="null" />
+ <xs:element name="object" type="objectType" />
+ <xs:element name="file" type="xs:anyURI" />
+ <xs:element name="directory" type="xs:anyURI" />
+ <xs:element name="boolean" type="xs:boolean" />
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:group name="argumentChoice">
+ <xs:choice>
+ <xs:element name="array" type="arrayType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="integer" type="xs:integer" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="string" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="double" type="xs:double" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="null" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="object" type="objectType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="file" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="directory" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="boolean" type="xs:boolean" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ </xs:group>
+ <xs:simpleType name="columnsType">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:integer"/>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="max"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:complexType name="loggersType">
+ <xs:sequence>
+ <xs:element name="log" type="loggerType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="loggerType">
+ <xs:attribute name="type">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="coverage-html"/>
+ <xs:enumeration value="coverage-text"/>
+ <xs:enumeration value="coverage-clover"/>
+ <xs:enumeration value="coverage-crap4j"/>
+ <xs:enumeration value="coverage-xml"/>
+ <xs:enumeration value="coverage-php"/>
+ <xs:enumeration value="plain"/>
+ <xs:enumeration value="teamcity"/>
+ <xs:enumeration value="junit"/>
+ <xs:enumeration value="testdox-html"/>
+ <xs:enumeration value="testdox-text"/>
+ <xs:enumeration value="testdox-xml"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="target" type="xs:anyURI"/>
+ <xs:attribute name="lowUpperBound" type="xs:nonNegativeInteger" default="50"/>
+ <xs:attribute name="highLowerBound" type="xs:nonNegativeInteger" default="90"/>
+ <xs:attribute name="showUncoveredFiles" type="xs:boolean" default="false"/>
+ <xs:attribute name="showOnlySummary" type="xs:boolean" default="false"/>
+ <xs:attribute name="threshold" type="xs:nonNegativeInteger" default="30"/>
+ </xs:complexType>
+ <xs:group name="pathGroup">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="directory" type="directoryFilterType"/>
+ <xs:element name="file" type="fileFilterType"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="directoryFilterType">
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute type="xs:string" name="prefix" default=""/>
+ <xs:attribute type="xs:string" name="suffix" default="Test.php"/>
+ <xs:attributeGroup ref="phpVersionGroup"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:simpleType name="executionOrderType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="defects"/>
+ <xs:enumeration value="depends"/>
+ <xs:enumeration value="depends,defects"/>
+ <xs:enumeration value="depends,duration"/>
+ <xs:enumeration value="depends,random"/>
+ <xs:enumeration value="depends,reverse"/>
+ <xs:enumeration value="depends,size"/>
+ <xs:enumeration value="duration"/>
+ <xs:enumeration value="no-depends"/>
+ <xs:enumeration value="no-depends,defects"/>
+ <xs:enumeration value="no-depends,duration"/>
+ <xs:enumeration value="no-depends,random"/>
+ <xs:enumeration value="no-depends,reverse"/>
+ <xs:enumeration value="no-depends,size"/>
+ <xs:enumeration value="random"/>
+ <xs:enumeration value="reverse"/>
+ <xs:enumeration value="size"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="fileFilterType">
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI">
+ <xs:attributeGroup ref="phpVersionGroup"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:attributeGroup name="phpVersionGroup">
+ <xs:attribute name="phpVersion" type="xs:string" default="5.3.0"/>
+ <xs:attribute name="phpVersionOperator" type="xs:string" default="&gt;="/>
+ </xs:attributeGroup>
+ <xs:complexType name="phpType">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="includePath" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="ini" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="const" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="var" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="env" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="post" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="get" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="cookie" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="server" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="files" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="request" type="namedValueType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="namedValueType">
+ <xs:attribute name="name" use="required" type="xs:string"/>
+ <xs:attribute name="value" use="required" type="xs:anySimpleType"/>
+ <xs:attribute name="verbatim" use="optional" type="xs:boolean"/>
+ <xs:attribute name="force" use="optional" type="xs:boolean"/>
+ </xs:complexType>
+ <xs:complexType name="phpUnitType">
+ <xs:annotation>
+ <xs:documentation>The main type specifying the document structure</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="configGroup"/>
+ <xs:attributeGroup ref="configAttributeGroup"/>
+ </xs:complexType>
+ <xs:attributeGroup name="configAttributeGroup">
+ <xs:attribute name="backupGlobals" type="xs:boolean" default="false"/>
+ <xs:attribute name="backupStaticAttributes" type="xs:boolean" default="false"/>
+ <xs:attribute name="bootstrap" type="xs:anyURI"/>
+ <xs:attribute name="cacheResult" type="xs:boolean" default="true"/>
+ <xs:attribute name="cacheResultFile" type="xs:anyURI"/>
+ <xs:attribute name="cacheTokens" type="xs:boolean" default="false"/>
+ <xs:attribute name="colors" type="xs:boolean" default="false"/>
+ <xs:attribute name="columns" type="columnsType" default="80"/>
+ <xs:attribute name="convertDeprecationsToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="convertErrorsToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="convertNoticesToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="convertWarningsToExceptions" type="xs:boolean" default="true"/>
+ <xs:attribute name="disableCodeCoverageIgnore" type="xs:boolean" default="false"/>
+ <xs:attribute name="forceCoversAnnotation" type="xs:boolean" default="false"/>
+ <xs:attribute name="printerClass" type="xs:string" default="PHPUnit\TextUI\ResultPrinter"/>
+ <xs:attribute name="printerFile" type="xs:anyURI"/>
+ <xs:attribute name="processIsolation" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnDefect" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnError" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnFailure" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnWarning" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnIncomplete" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnRisky" type="xs:boolean" default="false"/>
+ <xs:attribute name="stopOnSkipped" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnIncomplete" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnRisky" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnSkipped" type="xs:boolean" default="false"/>
+ <xs:attribute name="failOnWarning" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutChangesToGlobalState" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutOutputDuringTests" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutResourceUsageDuringSmallTests" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutTestsThatDoNotTestAnything" type="xs:boolean" default="true"/>
+ <xs:attribute name="beStrictAboutTodoAnnotatedTests" type="xs:boolean" default="false"/>
+ <xs:attribute name="beStrictAboutCoversAnnotation" type="xs:boolean" default="false"/>
+ <xs:attribute name="defaultTimeLimit" type="xs:integer" default="0"/>
+ <xs:attribute name="enforceTimeLimit" type="xs:boolean" default="false"/>
+ <xs:attribute name="ignoreDeprecatedCodeUnitsFromCodeCoverage" type="xs:boolean" default="false"/>
+ <xs:attribute name="timeoutForSmallTests" type="xs:integer" default="1"/>
+ <xs:attribute name="timeoutForMediumTests" type="xs:integer" default="10"/>
+ <xs:attribute name="timeoutForLargeTests" type="xs:integer" default="60"/>
+ <xs:attribute name="testSuiteLoaderClass" type="xs:string" default="PHPUnit\Runner\StandardTestSuiteLoader"/>
+ <xs:attribute name="testSuiteLoaderFile" type="xs:anyURI"/>
+ <xs:attribute name="defaultTestSuite" type="xs:string" default=""/>
+ <xs:attribute name="verbose" type="xs:boolean" default="false"/>
+ <xs:attribute name="testdox" type="xs:boolean" default="false"/>
+ <xs:attribute name="stderr" type="xs:boolean" default="false"/>
+ <xs:attribute name="reverseDefectList" type="xs:boolean" default="false"/>
+ <xs:attribute name="registerMockObjectsFromTestArgumentsRecursively" type="xs:boolean" default="false"/>
+ <xs:attribute name="extensionsDirectory" type="xs:anyURI"/>
+ <xs:attribute name="executionOrder" type="executionOrderType" default="default"/>
+ <xs:attribute name="resolveDependencies" type="xs:boolean" default="true"/>
+ <xs:attribute name="noInteraction" type="xs:boolean" default="false"/>
+ </xs:attributeGroup>
+ <xs:group name="configGroup">
+ <xs:all>
+ <xs:element ref="testSuiteFacet" minOccurs="0"/>
+ <xs:element name="groups" type="groupsType" minOccurs="0"/>
+ <xs:element name="testdoxGroups" type="groupsType" minOccurs="0"/>
+ <xs:element name="filter" type="filtersType" minOccurs="0"/>
+ <xs:element name="logging" type="loggersType" minOccurs="0"/>
+ <xs:element name="extensions" type="extensionsType" minOccurs="0"/>
+ <xs:element name="listeners" type="listenersType" minOccurs="0"/>
+ <xs:element name="php" type="phpType" minOccurs="0"/>
+ </xs:all>
+ </xs:group>
+ <xs:element name="testSuiteFacet" abstract="true"/>
+ <xs:element name="testsuite" type="testSuiteType" substitutionGroup="testSuiteFacet"/>
+ <xs:element name="testsuites" type="testSuitesType" substitutionGroup="testSuiteFacet"/>
+ <xs:complexType name="testSuitesType">
+ <xs:sequence>
+ <xs:element name="testsuite" type="testSuiteType" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="testSuiteType">
+ <xs:sequence>
+ <xs:group ref="pathGroup"/>
+ <xs:element name="exclude" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/vendor/phpunit/phpunit/src/Exception.php b/vendor/phpunit/phpunit/src/Exception.php
new file mode 100644
index 000000000..4e7c33353
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Exception.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit;
+
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Assert.php b/vendor/phpunit/phpunit/src/Framework/Assert.php
new file mode 100644
index 000000000..8053f2840
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Assert.php
@@ -0,0 +1,2854 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use const DEBUG_BACKTRACE_IGNORE_ARGS;
+use const PHP_EOL;
+use function array_shift;
+use function array_unshift;
+use function assert;
+use function class_exists;
+use function count;
+use function debug_backtrace;
+use function explode;
+use function file_get_contents;
+use function func_get_args;
+use function implode;
+use function interface_exists;
+use function is_array;
+use function is_bool;
+use function is_int;
+use function is_iterable;
+use function is_object;
+use function is_string;
+use function preg_match;
+use function preg_split;
+use function sprintf;
+use function strpos;
+use ArrayAccess;
+use Countable;
+use DOMAttr;
+use DOMDocument;
+use DOMElement;
+use PHPUnit\Framework\Constraint\ArrayHasKey;
+use PHPUnit\Framework\Constraint\Callback;
+use PHPUnit\Framework\Constraint\ClassHasAttribute;
+use PHPUnit\Framework\Constraint\ClassHasStaticAttribute;
+use PHPUnit\Framework\Constraint\Constraint;
+use PHPUnit\Framework\Constraint\Count;
+use PHPUnit\Framework\Constraint\DirectoryExists;
+use PHPUnit\Framework\Constraint\FileExists;
+use PHPUnit\Framework\Constraint\GreaterThan;
+use PHPUnit\Framework\Constraint\IsAnything;
+use PHPUnit\Framework\Constraint\IsEmpty;
+use PHPUnit\Framework\Constraint\IsEqual;
+use PHPUnit\Framework\Constraint\IsEqualCanonicalizing;
+use PHPUnit\Framework\Constraint\IsEqualIgnoringCase;
+use PHPUnit\Framework\Constraint\IsEqualWithDelta;
+use PHPUnit\Framework\Constraint\IsFalse;
+use PHPUnit\Framework\Constraint\IsFinite;
+use PHPUnit\Framework\Constraint\IsIdentical;
+use PHPUnit\Framework\Constraint\IsInfinite;
+use PHPUnit\Framework\Constraint\IsInstanceOf;
+use PHPUnit\Framework\Constraint\IsJson;
+use PHPUnit\Framework\Constraint\IsNan;
+use PHPUnit\Framework\Constraint\IsNull;
+use PHPUnit\Framework\Constraint\IsReadable;
+use PHPUnit\Framework\Constraint\IsTrue;
+use PHPUnit\Framework\Constraint\IsType;
+use PHPUnit\Framework\Constraint\IsWritable;
+use PHPUnit\Framework\Constraint\JsonMatches;
+use PHPUnit\Framework\Constraint\LessThan;
+use PHPUnit\Framework\Constraint\LogicalAnd;
+use PHPUnit\Framework\Constraint\LogicalNot;
+use PHPUnit\Framework\Constraint\LogicalOr;
+use PHPUnit\Framework\Constraint\LogicalXor;
+use PHPUnit\Framework\Constraint\ObjectEquals;
+use PHPUnit\Framework\Constraint\ObjectHasAttribute;
+use PHPUnit\Framework\Constraint\RegularExpression;
+use PHPUnit\Framework\Constraint\SameSize;
+use PHPUnit\Framework\Constraint\StringContains;
+use PHPUnit\Framework\Constraint\StringEndsWith;
+use PHPUnit\Framework\Constraint\StringMatchesFormatDescription;
+use PHPUnit\Framework\Constraint\StringStartsWith;
+use PHPUnit\Framework\Constraint\TraversableContainsEqual;
+use PHPUnit\Framework\Constraint\TraversableContainsIdentical;
+use PHPUnit\Framework\Constraint\TraversableContainsOnly;
+use PHPUnit\Util\Type;
+use PHPUnit\Util\Xml;
+use PHPUnit\Util\Xml\Loader as XmlLoader;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class Assert
+{
+ /**
+ * @var int
+ */
+ private static $count = 0;
+
+ /**
+ * Asserts that an array has a specified key.
+ *
+ * @param int|string $key
+ * @param array|ArrayAccess $array
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertArrayHasKey($key, $array, string $message = ''): void
+ {
+ if (!(is_int($key) || is_string($key))) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'integer or string'
+ );
+ }
+
+ if (!(is_array($array) || $array instanceof ArrayAccess)) {
+ throw InvalidArgumentException::create(
+ 2,
+ 'array or ArrayAccess'
+ );
+ }
+
+ $constraint = new ArrayHasKey($key);
+
+ static::assertThat($array, $constraint, $message);
+ }
+
+ /**
+ * Asserts that an array does not have a specified key.
+ *
+ * @param int|string $key
+ * @param array|ArrayAccess $array
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertArrayNotHasKey($key, $array, string $message = ''): void
+ {
+ if (!(is_int($key) || is_string($key))) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'integer or string'
+ );
+ }
+
+ if (!(is_array($array) || $array instanceof ArrayAccess)) {
+ throw InvalidArgumentException::create(
+ 2,
+ 'array or ArrayAccess'
+ );
+ }
+
+ $constraint = new LogicalNot(
+ new ArrayHasKey($key)
+ );
+
+ static::assertThat($array, $constraint, $message);
+ }
+
+ /**
+ * Asserts that a haystack contains a needle.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertContains($needle, iterable $haystack, string $message = ''): void
+ {
+ $constraint = new TraversableContainsIdentical($needle);
+
+ static::assertThat($haystack, $constraint, $message);
+ }
+
+ public static function assertContainsEquals($needle, iterable $haystack, string $message = ''): void
+ {
+ $constraint = new TraversableContainsEqual($needle);
+
+ static::assertThat($haystack, $constraint, $message);
+ }
+
+ /**
+ * Asserts that a haystack does not contain a needle.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertNotContains($needle, iterable $haystack, string $message = ''): void
+ {
+ $constraint = new LogicalNot(
+ new TraversableContainsIdentical($needle)
+ );
+
+ static::assertThat($haystack, $constraint, $message);
+ }
+
+ public static function assertNotContainsEquals($needle, iterable $haystack, string $message = ''): void
+ {
+ $constraint = new LogicalNot(new TraversableContainsEqual($needle));
+
+ static::assertThat($haystack, $constraint, $message);
+ }
+
+ /**
+ * Asserts that a haystack contains only values of a given type.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = ''): void
+ {
+ if ($isNativeType === null) {
+ $isNativeType = Type::isType($type);
+ }
+
+ static::assertThat(
+ $haystack,
+ new TraversableContainsOnly(
+ $type,
+ $isNativeType
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a haystack contains only instances of a given class name.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertContainsOnlyInstancesOf(string $className, iterable $haystack, string $message = ''): void
+ {
+ static::assertThat(
+ $haystack,
+ new TraversableContainsOnly(
+ $className,
+ false
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a haystack does not contain only values of a given type.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertNotContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = ''): void
+ {
+ if ($isNativeType === null) {
+ $isNativeType = Type::isType($type);
+ }
+
+ static::assertThat(
+ $haystack,
+ new LogicalNot(
+ new TraversableContainsOnly(
+ $type,
+ $isNativeType
+ )
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts the number of elements of an array, Countable or Traversable.
+ *
+ * @param Countable|iterable $haystack
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertCount(int $expectedCount, $haystack, string $message = ''): void
+ {
+ if (!$haystack instanceof Countable && !is_iterable($haystack)) {
+ throw InvalidArgumentException::create(2, 'countable or iterable');
+ }
+
+ static::assertThat(
+ $haystack,
+ new Count($expectedCount),
+ $message
+ );
+ }
+
+ /**
+ * Asserts the number of elements of an array, Countable or Traversable.
+ *
+ * @param Countable|iterable $haystack
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertNotCount(int $expectedCount, $haystack, string $message = ''): void
+ {
+ if (!$haystack instanceof Countable && !is_iterable($haystack)) {
+ throw InvalidArgumentException::create(2, 'countable or iterable');
+ }
+
+ $constraint = new LogicalNot(
+ new Count($expectedCount)
+ );
+
+ static::assertThat($haystack, $constraint, $message);
+ }
+
+ /**
+ * Asserts that two variables are equal.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertEquals($expected, $actual, string $message = ''): void
+ {
+ $constraint = new IsEqual($expected);
+
+ static::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * Asserts that two variables are equal (canonicalizing).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertEqualsCanonicalizing($expected, $actual, string $message = ''): void
+ {
+ $constraint = new IsEqualCanonicalizing($expected);
+
+ static::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * Asserts that two variables are equal (ignoring case).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertEqualsIgnoringCase($expected, $actual, string $message = ''): void
+ {
+ $constraint = new IsEqualIgnoringCase($expected);
+
+ static::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * Asserts that two variables are equal (with delta).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertEqualsWithDelta($expected, $actual, float $delta, string $message = ''): void
+ {
+ $constraint = new IsEqualWithDelta(
+ $expected,
+ $delta
+ );
+
+ static::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * Asserts that two variables are not equal.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertNotEquals($expected, $actual, string $message = ''): void
+ {
+ $constraint = new LogicalNot(
+ new IsEqual($expected)
+ );
+
+ static::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * Asserts that two variables are not equal (canonicalizing).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertNotEqualsCanonicalizing($expected, $actual, string $message = ''): void
+ {
+ $constraint = new LogicalNot(
+ new IsEqualCanonicalizing($expected)
+ );
+
+ static::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * Asserts that two variables are not equal (ignoring case).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertNotEqualsIgnoringCase($expected, $actual, string $message = ''): void
+ {
+ $constraint = new LogicalNot(
+ new IsEqualIgnoringCase($expected)
+ );
+
+ static::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * Asserts that two variables are not equal (with delta).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertNotEqualsWithDelta($expected, $actual, float $delta, string $message = ''): void
+ {
+ $constraint = new LogicalNot(
+ new IsEqualWithDelta(
+ $expected,
+ $delta
+ )
+ );
+
+ static::assertThat($actual, $constraint, $message);
+ }
+
+ /**
+ * @throws ExpectationFailedException
+ */
+ public static function assertObjectEquals(object $expected, object $actual, string $method = 'equals', string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ static::objectEquals($expected, $method),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is empty.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert empty $actual
+ */
+ public static function assertEmpty($actual, string $message = ''): void
+ {
+ static::assertThat($actual, static::isEmpty(), $message);
+ }
+
+ /**
+ * Asserts that a variable is not empty.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !empty $actual
+ */
+ public static function assertNotEmpty($actual, string $message = ''): void
+ {
+ static::assertThat($actual, static::logicalNot(static::isEmpty()), $message);
+ }
+
+ /**
+ * Asserts that a value is greater than another value.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertGreaterThan($expected, $actual, string $message = ''): void
+ {
+ static::assertThat($actual, static::greaterThan($expected), $message);
+ }
+
+ /**
+ * Asserts that a value is greater than or equal to another value.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertGreaterThanOrEqual($expected, $actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ static::greaterThanOrEqual($expected),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a value is smaller than another value.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertLessThan($expected, $actual, string $message = ''): void
+ {
+ static::assertThat($actual, static::lessThan($expected), $message);
+ }
+
+ /**
+ * Asserts that a value is smaller than or equal to another value.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertLessThanOrEqual($expected, $actual, string $message = ''): void
+ {
+ static::assertThat($actual, static::lessThanOrEqual($expected), $message);
+ }
+
+ /**
+ * Asserts that the contents of one file is equal to the contents of another
+ * file.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileEquals(string $expected, string $actual, string $message = ''): void
+ {
+ static::assertFileExists($expected, $message);
+ static::assertFileExists($actual, $message);
+
+ $constraint = new IsEqual(file_get_contents($expected));
+
+ static::assertThat(file_get_contents($actual), $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of one file is equal to the contents of another
+ * file (canonicalizing).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileEqualsCanonicalizing(string $expected, string $actual, string $message = ''): void
+ {
+ static::assertFileExists($expected, $message);
+ static::assertFileExists($actual, $message);
+
+ $constraint = new IsEqualCanonicalizing(
+ file_get_contents($expected)
+ );
+
+ static::assertThat(file_get_contents($actual), $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of one file is equal to the contents of another
+ * file (ignoring case).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileEqualsIgnoringCase(string $expected, string $actual, string $message = ''): void
+ {
+ static::assertFileExists($expected, $message);
+ static::assertFileExists($actual, $message);
+
+ $constraint = new IsEqualIgnoringCase(file_get_contents($expected));
+
+ static::assertThat(file_get_contents($actual), $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of one file is not equal to the contents of
+ * another file.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileNotEquals(string $expected, string $actual, string $message = ''): void
+ {
+ static::assertFileExists($expected, $message);
+ static::assertFileExists($actual, $message);
+
+ $constraint = new LogicalNot(
+ new IsEqual(file_get_contents($expected))
+ );
+
+ static::assertThat(file_get_contents($actual), $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of one file is not equal to the contents of another
+ * file (canonicalizing).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileNotEqualsCanonicalizing(string $expected, string $actual, string $message = ''): void
+ {
+ static::assertFileExists($expected, $message);
+ static::assertFileExists($actual, $message);
+
+ $constraint = new LogicalNot(
+ new IsEqualCanonicalizing(file_get_contents($expected))
+ );
+
+ static::assertThat(file_get_contents($actual), $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of one file is not equal to the contents of another
+ * file (ignoring case).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileNotEqualsIgnoringCase(string $expected, string $actual, string $message = ''): void
+ {
+ static::assertFileExists($expected, $message);
+ static::assertFileExists($actual, $message);
+
+ $constraint = new LogicalNot(
+ new IsEqualIgnoringCase(file_get_contents($expected))
+ );
+
+ static::assertThat(file_get_contents($actual), $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of a string is equal
+ * to the contents of a file.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringEqualsFile(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ static::assertFileExists($expectedFile, $message);
+
+ $constraint = new IsEqual(file_get_contents($expectedFile));
+
+ static::assertThat($actualString, $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of a string is equal
+ * to the contents of a file (canonicalizing).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ static::assertFileExists($expectedFile, $message);
+
+ $constraint = new IsEqualCanonicalizing(file_get_contents($expectedFile));
+
+ static::assertThat($actualString, $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of a string is equal
+ * to the contents of a file (ignoring case).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ static::assertFileExists($expectedFile, $message);
+
+ $constraint = new IsEqualIgnoringCase(file_get_contents($expectedFile));
+
+ static::assertThat($actualString, $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of a string is not equal
+ * to the contents of a file.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringNotEqualsFile(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ static::assertFileExists($expectedFile, $message);
+
+ $constraint = new LogicalNot(
+ new IsEqual(file_get_contents($expectedFile))
+ );
+
+ static::assertThat($actualString, $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of a string is not equal
+ * to the contents of a file (canonicalizing).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringNotEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ static::assertFileExists($expectedFile, $message);
+
+ $constraint = new LogicalNot(
+ new IsEqualCanonicalizing(file_get_contents($expectedFile))
+ );
+
+ static::assertThat($actualString, $constraint, $message);
+ }
+
+ /**
+ * Asserts that the contents of a string is not equal
+ * to the contents of a file (ignoring case).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringNotEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ static::assertFileExists($expectedFile, $message);
+
+ $constraint = new LogicalNot(
+ new IsEqualIgnoringCase(file_get_contents($expectedFile))
+ );
+
+ static::assertThat($actualString, $constraint, $message);
+ }
+
+ /**
+ * Asserts that a file/dir is readable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertIsReadable(string $filename, string $message = ''): void
+ {
+ static::assertThat($filename, new IsReadable, $message);
+ }
+
+ /**
+ * Asserts that a file/dir exists and is not readable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertIsNotReadable(string $filename, string $message = ''): void
+ {
+ static::assertThat($filename, new LogicalNot(new IsReadable), $message);
+ }
+
+ /**
+ * Asserts that a file/dir exists and is not readable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4062
+ */
+ public static function assertNotIsReadable(string $filename, string $message = ''): void
+ {
+ self::createWarning('assertNotIsReadable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertIsNotReadable() instead.');
+
+ static::assertThat($filename, new LogicalNot(new IsReadable), $message);
+ }
+
+ /**
+ * Asserts that a file/dir exists and is writable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertIsWritable(string $filename, string $message = ''): void
+ {
+ static::assertThat($filename, new IsWritable, $message);
+ }
+
+ /**
+ * Asserts that a file/dir exists and is not writable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertIsNotWritable(string $filename, string $message = ''): void
+ {
+ static::assertThat($filename, new LogicalNot(new IsWritable), $message);
+ }
+
+ /**
+ * Asserts that a file/dir exists and is not writable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4065
+ */
+ public static function assertNotIsWritable(string $filename, string $message = ''): void
+ {
+ self::createWarning('assertNotIsWritable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertIsNotWritable() instead.');
+
+ static::assertThat($filename, new LogicalNot(new IsWritable), $message);
+ }
+
+ /**
+ * Asserts that a directory exists.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertDirectoryExists(string $directory, string $message = ''): void
+ {
+ static::assertThat($directory, new DirectoryExists, $message);
+ }
+
+ /**
+ * Asserts that a directory does not exist.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertDirectoryDoesNotExist(string $directory, string $message = ''): void
+ {
+ static::assertThat($directory, new LogicalNot(new DirectoryExists), $message);
+ }
+
+ /**
+ * Asserts that a directory does not exist.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4068
+ */
+ public static function assertDirectoryNotExists(string $directory, string $message = ''): void
+ {
+ self::createWarning('assertDirectoryNotExists() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDirectoryDoesNotExist() instead.');
+
+ static::assertThat($directory, new LogicalNot(new DirectoryExists), $message);
+ }
+
+ /**
+ * Asserts that a directory exists and is readable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertDirectoryIsReadable(string $directory, string $message = ''): void
+ {
+ self::assertDirectoryExists($directory, $message);
+ self::assertIsReadable($directory, $message);
+ }
+
+ /**
+ * Asserts that a directory exists and is not readable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertDirectoryIsNotReadable(string $directory, string $message = ''): void
+ {
+ self::assertDirectoryExists($directory, $message);
+ self::assertIsNotReadable($directory, $message);
+ }
+
+ /**
+ * Asserts that a directory exists and is not readable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4071
+ */
+ public static function assertDirectoryNotIsReadable(string $directory, string $message = ''): void
+ {
+ self::createWarning('assertDirectoryNotIsReadable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDirectoryIsNotReadable() instead.');
+
+ self::assertDirectoryExists($directory, $message);
+ self::assertIsNotReadable($directory, $message);
+ }
+
+ /**
+ * Asserts that a directory exists and is writable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertDirectoryIsWritable(string $directory, string $message = ''): void
+ {
+ self::assertDirectoryExists($directory, $message);
+ self::assertIsWritable($directory, $message);
+ }
+
+ /**
+ * Asserts that a directory exists and is not writable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertDirectoryIsNotWritable(string $directory, string $message = ''): void
+ {
+ self::assertDirectoryExists($directory, $message);
+ self::assertIsNotWritable($directory, $message);
+ }
+
+ /**
+ * Asserts that a directory exists and is not writable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4074
+ */
+ public static function assertDirectoryNotIsWritable(string $directory, string $message = ''): void
+ {
+ self::createWarning('assertDirectoryNotIsWritable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDirectoryIsNotWritable() instead.');
+
+ self::assertDirectoryExists($directory, $message);
+ self::assertIsNotWritable($directory, $message);
+ }
+
+ /**
+ * Asserts that a file exists.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileExists(string $filename, string $message = ''): void
+ {
+ static::assertThat($filename, new FileExists, $message);
+ }
+
+ /**
+ * Asserts that a file does not exist.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileDoesNotExist(string $filename, string $message = ''): void
+ {
+ static::assertThat($filename, new LogicalNot(new FileExists), $message);
+ }
+
+ /**
+ * Asserts that a file does not exist.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4077
+ */
+ public static function assertFileNotExists(string $filename, string $message = ''): void
+ {
+ self::createWarning('assertFileNotExists() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertFileDoesNotExist() instead.');
+
+ static::assertThat($filename, new LogicalNot(new FileExists), $message);
+ }
+
+ /**
+ * Asserts that a file exists and is readable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileIsReadable(string $file, string $message = ''): void
+ {
+ self::assertFileExists($file, $message);
+ self::assertIsReadable($file, $message);
+ }
+
+ /**
+ * Asserts that a file exists and is not readable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileIsNotReadable(string $file, string $message = ''): void
+ {
+ self::assertFileExists($file, $message);
+ self::assertIsNotReadable($file, $message);
+ }
+
+ /**
+ * Asserts that a file exists and is not readable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4080
+ */
+ public static function assertFileNotIsReadable(string $file, string $message = ''): void
+ {
+ self::createWarning('assertFileNotIsReadable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertFileIsNotReadable() instead.');
+
+ self::assertFileExists($file, $message);
+ self::assertIsNotReadable($file, $message);
+ }
+
+ /**
+ * Asserts that a file exists and is writable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileIsWritable(string $file, string $message = ''): void
+ {
+ self::assertFileExists($file, $message);
+ self::assertIsWritable($file, $message);
+ }
+
+ /**
+ * Asserts that a file exists and is not writable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFileIsNotWritable(string $file, string $message = ''): void
+ {
+ self::assertFileExists($file, $message);
+ self::assertIsNotWritable($file, $message);
+ }
+
+ /**
+ * Asserts that a file exists and is not writable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4083
+ */
+ public static function assertFileNotIsWritable(string $file, string $message = ''): void
+ {
+ self::createWarning('assertFileNotIsWritable() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertFileIsNotWritable() instead.');
+
+ self::assertFileExists($file, $message);
+ self::assertIsNotWritable($file, $message);
+ }
+
+ /**
+ * Asserts that a condition is true.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert true $condition
+ */
+ public static function assertTrue($condition, string $message = ''): void
+ {
+ static::assertThat($condition, static::isTrue(), $message);
+ }
+
+ /**
+ * Asserts that a condition is not true.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !true $condition
+ */
+ public static function assertNotTrue($condition, string $message = ''): void
+ {
+ static::assertThat($condition, static::logicalNot(static::isTrue()), $message);
+ }
+
+ /**
+ * Asserts that a condition is false.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert false $condition
+ */
+ public static function assertFalse($condition, string $message = ''): void
+ {
+ static::assertThat($condition, static::isFalse(), $message);
+ }
+
+ /**
+ * Asserts that a condition is not false.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !false $condition
+ */
+ public static function assertNotFalse($condition, string $message = ''): void
+ {
+ static::assertThat($condition, static::logicalNot(static::isFalse()), $message);
+ }
+
+ /**
+ * Asserts that a variable is null.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert null $actual
+ */
+ public static function assertNull($actual, string $message = ''): void
+ {
+ static::assertThat($actual, static::isNull(), $message);
+ }
+
+ /**
+ * Asserts that a variable is not null.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !null $actual
+ */
+ public static function assertNotNull($actual, string $message = ''): void
+ {
+ static::assertThat($actual, static::logicalNot(static::isNull()), $message);
+ }
+
+ /**
+ * Asserts that a variable is finite.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertFinite($actual, string $message = ''): void
+ {
+ static::assertThat($actual, static::isFinite(), $message);
+ }
+
+ /**
+ * Asserts that a variable is infinite.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertInfinite($actual, string $message = ''): void
+ {
+ static::assertThat($actual, static::isInfinite(), $message);
+ }
+
+ /**
+ * Asserts that a variable is nan.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertNan($actual, string $message = ''): void
+ {
+ static::assertThat($actual, static::isNan(), $message);
+ }
+
+ /**
+ * Asserts that a class has a specified attribute.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertClassHasAttribute(string $attributeName, string $className, string $message = ''): void
+ {
+ if (!self::isValidClassAttributeName($attributeName)) {
+ throw InvalidArgumentException::create(1, 'valid attribute name');
+ }
+
+ if (!class_exists($className)) {
+ throw InvalidArgumentException::create(2, 'class name');
+ }
+
+ static::assertThat($className, new ClassHasAttribute($attributeName), $message);
+ }
+
+ /**
+ * Asserts that a class does not have a specified attribute.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertClassNotHasAttribute(string $attributeName, string $className, string $message = ''): void
+ {
+ if (!self::isValidClassAttributeName($attributeName)) {
+ throw InvalidArgumentException::create(1, 'valid attribute name');
+ }
+
+ if (!class_exists($className)) {
+ throw InvalidArgumentException::create(2, 'class name');
+ }
+
+ static::assertThat(
+ $className,
+ new LogicalNot(
+ new ClassHasAttribute($attributeName)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a class has a specified static attribute.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertClassHasStaticAttribute(string $attributeName, string $className, string $message = ''): void
+ {
+ if (!self::isValidClassAttributeName($attributeName)) {
+ throw InvalidArgumentException::create(1, 'valid attribute name');
+ }
+
+ if (!class_exists($className)) {
+ throw InvalidArgumentException::create(2, 'class name');
+ }
+
+ static::assertThat(
+ $className,
+ new ClassHasStaticAttribute($attributeName),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a class does not have a specified static attribute.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertClassNotHasStaticAttribute(string $attributeName, string $className, string $message = ''): void
+ {
+ if (!self::isValidClassAttributeName($attributeName)) {
+ throw InvalidArgumentException::create(1, 'valid attribute name');
+ }
+
+ if (!class_exists($className)) {
+ throw InvalidArgumentException::create(2, 'class name');
+ }
+
+ static::assertThat(
+ $className,
+ new LogicalNot(
+ new ClassHasStaticAttribute($attributeName)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that an object has a specified attribute.
+ *
+ * @param object $object
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertObjectHasAttribute(string $attributeName, $object, string $message = ''): void
+ {
+ if (!self::isValidObjectAttributeName($attributeName)) {
+ throw InvalidArgumentException::create(1, 'valid attribute name');
+ }
+
+ if (!is_object($object)) {
+ throw InvalidArgumentException::create(2, 'object');
+ }
+
+ static::assertThat(
+ $object,
+ new ObjectHasAttribute($attributeName),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that an object does not have a specified attribute.
+ *
+ * @param object $object
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertObjectNotHasAttribute(string $attributeName, $object, string $message = ''): void
+ {
+ if (!self::isValidObjectAttributeName($attributeName)) {
+ throw InvalidArgumentException::create(1, 'valid attribute name');
+ }
+
+ if (!is_object($object)) {
+ throw InvalidArgumentException::create(2, 'object');
+ }
+
+ static::assertThat(
+ $object,
+ new LogicalNot(
+ new ObjectHasAttribute($attributeName)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that two variables have the same type and value.
+ * Used on objects, it asserts that two variables reference
+ * the same object.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-template ExpectedType
+ * @psalm-param ExpectedType $expected
+ * @psalm-assert =ExpectedType $actual
+ */
+ public static function assertSame($expected, $actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsIdentical($expected),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that two variables do not have the same type and value.
+ * Used on objects, it asserts that two variables do not reference
+ * the same object.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertNotSame($expected, $actual, string $message = ''): void
+ {
+ if (is_bool($expected) && is_bool($actual)) {
+ static::assertNotEquals($expected, $actual, $message);
+ }
+
+ static::assertThat(
+ $actual,
+ new LogicalNot(
+ new IsIdentical($expected)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of a given type.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ *
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $expected
+ * @psalm-assert =ExpectedType $actual
+ */
+ public static function assertInstanceOf(string $expected, $actual, string $message = ''): void
+ {
+ if (!class_exists($expected) && !interface_exists($expected)) {
+ throw InvalidArgumentException::create(1, 'class or interface name');
+ }
+
+ static::assertThat(
+ $actual,
+ new IsInstanceOf($expected),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of a given type.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ *
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $expected
+ * @psalm-assert !ExpectedType $actual
+ */
+ public static function assertNotInstanceOf(string $expected, $actual, string $message = ''): void
+ {
+ if (!class_exists($expected) && !interface_exists($expected)) {
+ throw InvalidArgumentException::create(1, 'class or interface name');
+ }
+
+ static::assertThat(
+ $actual,
+ new LogicalNot(
+ new IsInstanceOf($expected)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type array.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert array $actual
+ */
+ public static function assertIsArray($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_ARRAY),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type bool.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert bool $actual
+ */
+ public static function assertIsBool($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_BOOL),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type float.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert float $actual
+ */
+ public static function assertIsFloat($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_FLOAT),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type int.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert int $actual
+ */
+ public static function assertIsInt($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_INT),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type numeric.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert numeric $actual
+ */
+ public static function assertIsNumeric($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_NUMERIC),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type object.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert object $actual
+ */
+ public static function assertIsObject($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_OBJECT),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type resource.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert resource $actual
+ */
+ public static function assertIsResource($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_RESOURCE),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type resource and is closed.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert resource $actual
+ */
+ public static function assertIsClosedResource($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_CLOSED_RESOURCE),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type string.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert string $actual
+ */
+ public static function assertIsString($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_STRING),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type scalar.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert scalar $actual
+ */
+ public static function assertIsScalar($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_SCALAR),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type callable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert callable $actual
+ */
+ public static function assertIsCallable($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_CALLABLE),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is of type iterable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert iterable $actual
+ */
+ public static function assertIsIterable($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new IsType(IsType::TYPE_ITERABLE),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type array.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !array $actual
+ */
+ public static function assertIsNotArray($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_ARRAY)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type bool.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !bool $actual
+ */
+ public static function assertIsNotBool($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_BOOL)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type float.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !float $actual
+ */
+ public static function assertIsNotFloat($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_FLOAT)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type int.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !int $actual
+ */
+ public static function assertIsNotInt($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_INT)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type numeric.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !numeric $actual
+ */
+ public static function assertIsNotNumeric($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_NUMERIC)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type object.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !object $actual
+ */
+ public static function assertIsNotObject($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_OBJECT)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type resource.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !resource $actual
+ */
+ public static function assertIsNotResource($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_RESOURCE)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type resource.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !resource $actual
+ */
+ public static function assertIsNotClosedResource($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_CLOSED_RESOURCE)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type string.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !string $actual
+ */
+ public static function assertIsNotString($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_STRING)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type scalar.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !scalar $actual
+ */
+ public static function assertIsNotScalar($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_SCALAR)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type callable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !callable $actual
+ */
+ public static function assertIsNotCallable($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_CALLABLE)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a variable is not of type iterable.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-assert !iterable $actual
+ */
+ public static function assertIsNotIterable($actual, string $message = ''): void
+ {
+ static::assertThat(
+ $actual,
+ new LogicalNot(new IsType(IsType::TYPE_ITERABLE)),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a string matches a given regular expression.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertMatchesRegularExpression(string $pattern, string $string, string $message = ''): void
+ {
+ static::assertThat($string, new RegularExpression($pattern), $message);
+ }
+
+ /**
+ * Asserts that a string matches a given regular expression.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4086
+ */
+ public static function assertRegExp(string $pattern, string $string, string $message = ''): void
+ {
+ self::createWarning('assertRegExp() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertMatchesRegularExpression() instead.');
+
+ static::assertThat($string, new RegularExpression($pattern), $message);
+ }
+
+ /**
+ * Asserts that a string does not match a given regular expression.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertDoesNotMatchRegularExpression(string $pattern, string $string, string $message = ''): void
+ {
+ static::assertThat(
+ $string,
+ new LogicalNot(
+ new RegularExpression($pattern)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a string does not match a given regular expression.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4089
+ */
+ public static function assertNotRegExp(string $pattern, string $string, string $message = ''): void
+ {
+ self::createWarning('assertNotRegExp() is deprecated and will be removed in PHPUnit 10. Refactor your code to use assertDoesNotMatchRegularExpression() instead.');
+
+ static::assertThat(
+ $string,
+ new LogicalNot(
+ new RegularExpression($pattern)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Assert that the size of two arrays (or `Countable` or `Traversable` objects)
+ * is the same.
+ *
+ * @param Countable|iterable $expected
+ * @param Countable|iterable $actual
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertSameSize($expected, $actual, string $message = ''): void
+ {
+ if (!$expected instanceof Countable && !is_iterable($expected)) {
+ throw InvalidArgumentException::create(1, 'countable or iterable');
+ }
+
+ if (!$actual instanceof Countable && !is_iterable($actual)) {
+ throw InvalidArgumentException::create(2, 'countable or iterable');
+ }
+
+ static::assertThat(
+ $actual,
+ new SameSize($expected),
+ $message
+ );
+ }
+
+ /**
+ * Assert that the size of two arrays (or `Countable` or `Traversable` objects)
+ * is not the same.
+ *
+ * @param Countable|iterable $expected
+ * @param Countable|iterable $actual
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertNotSameSize($expected, $actual, string $message = ''): void
+ {
+ if (!$expected instanceof Countable && !is_iterable($expected)) {
+ throw InvalidArgumentException::create(1, 'countable or iterable');
+ }
+
+ if (!$actual instanceof Countable && !is_iterable($actual)) {
+ throw InvalidArgumentException::create(2, 'countable or iterable');
+ }
+
+ static::assertThat(
+ $actual,
+ new LogicalNot(
+ new SameSize($expected)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a string matches a given format string.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringMatchesFormat(string $format, string $string, string $message = ''): void
+ {
+ static::assertThat($string, new StringMatchesFormatDescription($format), $message);
+ }
+
+ /**
+ * Asserts that a string does not match a given format string.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringNotMatchesFormat(string $format, string $string, string $message = ''): void
+ {
+ static::assertThat(
+ $string,
+ new LogicalNot(
+ new StringMatchesFormatDescription($format)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a string matches a given format file.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringMatchesFormatFile(string $formatFile, string $string, string $message = ''): void
+ {
+ static::assertFileExists($formatFile, $message);
+
+ static::assertThat(
+ $string,
+ new StringMatchesFormatDescription(
+ file_get_contents($formatFile)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a string does not match a given format string.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringNotMatchesFormatFile(string $formatFile, string $string, string $message = ''): void
+ {
+ static::assertFileExists($formatFile, $message);
+
+ static::assertThat(
+ $string,
+ new LogicalNot(
+ new StringMatchesFormatDescription(
+ file_get_contents($formatFile)
+ )
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that a string starts with a given prefix.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringStartsWith(string $prefix, string $string, string $message = ''): void
+ {
+ static::assertThat($string, new StringStartsWith($prefix), $message);
+ }
+
+ /**
+ * Asserts that a string starts not with a given prefix.
+ *
+ * @param string $prefix
+ * @param string $string
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringStartsNotWith($prefix, $string, string $message = ''): void
+ {
+ static::assertThat(
+ $string,
+ new LogicalNot(
+ new StringStartsWith($prefix)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringContainsString(string $needle, string $haystack, string $message = ''): void
+ {
+ $constraint = new StringContains($needle, false);
+
+ static::assertThat($haystack, $constraint, $message);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringContainsStringIgnoringCase(string $needle, string $haystack, string $message = ''): void
+ {
+ $constraint = new StringContains($needle, true);
+
+ static::assertThat($haystack, $constraint, $message);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringNotContainsString(string $needle, string $haystack, string $message = ''): void
+ {
+ $constraint = new LogicalNot(new StringContains($needle));
+
+ static::assertThat($haystack, $constraint, $message);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringNotContainsStringIgnoringCase(string $needle, string $haystack, string $message = ''): void
+ {
+ $constraint = new LogicalNot(new StringContains($needle, true));
+
+ static::assertThat($haystack, $constraint, $message);
+ }
+
+ /**
+ * Asserts that a string ends with a given suffix.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringEndsWith(string $suffix, string $string, string $message = ''): void
+ {
+ static::assertThat($string, new StringEndsWith($suffix), $message);
+ }
+
+ /**
+ * Asserts that a string ends not with a given suffix.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertStringEndsNotWith(string $suffix, string $string, string $message = ''): void
+ {
+ static::assertThat(
+ $string,
+ new LogicalNot(
+ new StringEndsWith($suffix)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that two XML files are equal.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ public static function assertXmlFileEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void
+ {
+ $expected = (new XmlLoader)->loadFile($expectedFile);
+ $actual = (new XmlLoader)->loadFile($actualFile);
+
+ static::assertEquals($expected, $actual, $message);
+ }
+
+ /**
+ * Asserts that two XML files are not equal.
+ *
+ * @throws \PHPUnit\Util\Exception
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertXmlFileNotEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void
+ {
+ $expected = (new XmlLoader)->loadFile($expectedFile);
+ $actual = (new XmlLoader)->loadFile($actualFile);
+
+ static::assertNotEquals($expected, $actual, $message);
+ }
+
+ /**
+ * Asserts that two XML documents are equal.
+ *
+ * @param DOMDocument|string $actualXml
+ *
+ * @throws \PHPUnit\Util\Xml\Exception
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertXmlStringEqualsXmlFile(string $expectedFile, $actualXml, string $message = ''): void
+ {
+ if (!is_string($actualXml)) {
+ self::createWarning('Passing an argument of type DOMDocument for the $actualXml parameter is deprecated. Support for this will be removed in PHPUnit 10.');
+
+ $actual = $actualXml;
+ } else {
+ $actual = (new XmlLoader)->load($actualXml);
+ }
+
+ $expected = (new XmlLoader)->loadFile($expectedFile);
+
+ static::assertEquals($expected, $actual, $message);
+ }
+
+ /**
+ * Asserts that two XML documents are not equal.
+ *
+ * @param DOMDocument|string $actualXml
+ *
+ * @throws \PHPUnit\Util\Xml\Exception
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertXmlStringNotEqualsXmlFile(string $expectedFile, $actualXml, string $message = ''): void
+ {
+ if (!is_string($actualXml)) {
+ self::createWarning('Passing an argument of type DOMDocument for the $actualXml parameter is deprecated. Support for this will be removed in PHPUnit 10.');
+
+ $actual = $actualXml;
+ } else {
+ $actual = (new XmlLoader)->load($actualXml);
+ }
+
+ $expected = (new XmlLoader)->loadFile($expectedFile);
+
+ static::assertNotEquals($expected, $actual, $message);
+ }
+
+ /**
+ * Asserts that two XML documents are equal.
+ *
+ * @param DOMDocument|string $expectedXml
+ * @param DOMDocument|string $actualXml
+ *
+ * @throws \PHPUnit\Util\Xml\Exception
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertXmlStringEqualsXmlString($expectedXml, $actualXml, string $message = ''): void
+ {
+ if (!is_string($expectedXml)) {
+ self::createWarning('Passing an argument of type DOMDocument for the $expectedXml parameter is deprecated. Support for this will be removed in PHPUnit 10.');
+
+ $expected = $expectedXml;
+ } else {
+ $expected = (new XmlLoader)->load($expectedXml);
+ }
+
+ if (!is_string($actualXml)) {
+ self::createWarning('Passing an argument of type DOMDocument for the $actualXml parameter is deprecated. Support for this will be removed in PHPUnit 10.');
+
+ $actual = $actualXml;
+ } else {
+ $actual = (new XmlLoader)->load($actualXml);
+ }
+
+ static::assertEquals($expected, $actual, $message);
+ }
+
+ /**
+ * Asserts that two XML documents are not equal.
+ *
+ * @param DOMDocument|string $expectedXml
+ * @param DOMDocument|string $actualXml
+ *
+ * @throws \PHPUnit\Util\Xml\Exception
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, string $message = ''): void
+ {
+ if (!is_string($expectedXml)) {
+ self::createWarning('Passing an argument of type DOMDocument for the $expectedXml parameter is deprecated. Support for this will be removed in PHPUnit 10.');
+
+ $expected = $expectedXml;
+ } else {
+ $expected = (new XmlLoader)->load($expectedXml);
+ }
+
+ if (!is_string($actualXml)) {
+ self::createWarning('Passing an argument of type DOMDocument for the $actualXml parameter is deprecated. Support for this will be removed in PHPUnit 10.');
+
+ $actual = $actualXml;
+ } else {
+ $actual = (new XmlLoader)->load($actualXml);
+ }
+
+ static::assertNotEquals($expected, $actual, $message);
+ }
+
+ /**
+ * Asserts that a hierarchy of DOMElements matches.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws AssertionFailedError
+ * @throws ExpectationFailedException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4091
+ */
+ public static function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, bool $checkAttributes = false, string $message = ''): void
+ {
+ self::createWarning('assertEqualXMLStructure() is deprecated and will be removed in PHPUnit 10.');
+
+ $expectedElement = Xml::import($expectedElement);
+ $actualElement = Xml::import($actualElement);
+
+ static::assertSame(
+ $expectedElement->tagName,
+ $actualElement->tagName,
+ $message
+ );
+
+ if ($checkAttributes) {
+ static::assertSame(
+ $expectedElement->attributes->length,
+ $actualElement->attributes->length,
+ sprintf(
+ '%s%sNumber of attributes on node "%s" does not match',
+ $message,
+ !empty($message) ? "\n" : '',
+ $expectedElement->tagName
+ )
+ );
+
+ for ($i = 0; $i < $expectedElement->attributes->length; $i++) {
+ $expectedAttribute = $expectedElement->attributes->item($i);
+ $actualAttribute = $actualElement->attributes->getNamedItem($expectedAttribute->name);
+
+ assert($expectedAttribute instanceof DOMAttr);
+
+ if (!$actualAttribute) {
+ static::fail(
+ sprintf(
+ '%s%sCould not find attribute "%s" on node "%s"',
+ $message,
+ !empty($message) ? "\n" : '',
+ $expectedAttribute->name,
+ $expectedElement->tagName
+ )
+ );
+ }
+ }
+ }
+
+ Xml::removeCharacterDataNodes($expectedElement);
+ Xml::removeCharacterDataNodes($actualElement);
+
+ static::assertSame(
+ $expectedElement->childNodes->length,
+ $actualElement->childNodes->length,
+ sprintf(
+ '%s%sNumber of child nodes of "%s" differs',
+ $message,
+ !empty($message) ? "\n" : '',
+ $expectedElement->tagName
+ )
+ );
+
+ for ($i = 0; $i < $expectedElement->childNodes->length; $i++) {
+ static::assertEqualXMLStructure(
+ $expectedElement->childNodes->item($i),
+ $actualElement->childNodes->item($i),
+ $checkAttributes,
+ $message
+ );
+ }
+ }
+
+ /**
+ * Evaluates a PHPUnit\Framework\Constraint matcher object.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertThat($value, Constraint $constraint, string $message = ''): void
+ {
+ self::$count += count($constraint);
+
+ $constraint->evaluate($value, $message);
+ }
+
+ /**
+ * Asserts that a string is a valid JSON string.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertJson(string $actualJson, string $message = ''): void
+ {
+ static::assertThat($actualJson, static::isJson(), $message);
+ }
+
+ /**
+ * Asserts that two given JSON encoded objects or arrays are equal.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertJsonStringEqualsJsonString(string $expectedJson, string $actualJson, string $message = ''): void
+ {
+ static::assertJson($expectedJson, $message);
+ static::assertJson($actualJson, $message);
+
+ static::assertThat($actualJson, new JsonMatches($expectedJson), $message);
+ }
+
+ /**
+ * Asserts that two given JSON encoded objects or arrays are not equal.
+ *
+ * @param string $expectedJson
+ * @param string $actualJson
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, string $message = ''): void
+ {
+ static::assertJson($expectedJson, $message);
+ static::assertJson($actualJson, $message);
+
+ static::assertThat(
+ $actualJson,
+ new LogicalNot(
+ new JsonMatches($expectedJson)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that the generated JSON encoded object and the content of the given file are equal.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertJsonStringEqualsJsonFile(string $expectedFile, string $actualJson, string $message = ''): void
+ {
+ static::assertFileExists($expectedFile, $message);
+ $expectedJson = file_get_contents($expectedFile);
+
+ static::assertJson($expectedJson, $message);
+ static::assertJson($actualJson, $message);
+
+ static::assertThat($actualJson, new JsonMatches($expectedJson), $message);
+ }
+
+ /**
+ * Asserts that the generated JSON encoded object and the content of the given file are not equal.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertJsonStringNotEqualsJsonFile(string $expectedFile, string $actualJson, string $message = ''): void
+ {
+ static::assertFileExists($expectedFile, $message);
+ $expectedJson = file_get_contents($expectedFile);
+
+ static::assertJson($expectedJson, $message);
+ static::assertJson($actualJson, $message);
+
+ static::assertThat(
+ $actualJson,
+ new LogicalNot(
+ new JsonMatches($expectedJson)
+ ),
+ $message
+ );
+ }
+
+ /**
+ * Asserts that two JSON files are equal.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertJsonFileEqualsJsonFile(string $expectedFile, string $actualFile, string $message = ''): void
+ {
+ static::assertFileExists($expectedFile, $message);
+ static::assertFileExists($actualFile, $message);
+
+ $actualJson = file_get_contents($actualFile);
+ $expectedJson = file_get_contents($expectedFile);
+
+ static::assertJson($expectedJson, $message);
+ static::assertJson($actualJson, $message);
+
+ $constraintExpected = new JsonMatches(
+ $expectedJson
+ );
+
+ $constraintActual = new JsonMatches($actualJson);
+
+ static::assertThat($expectedJson, $constraintActual, $message);
+ static::assertThat($actualJson, $constraintExpected, $message);
+ }
+
+ /**
+ * Asserts that two JSON files are not equal.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public static function assertJsonFileNotEqualsJsonFile(string $expectedFile, string $actualFile, string $message = ''): void
+ {
+ static::assertFileExists($expectedFile, $message);
+ static::assertFileExists($actualFile, $message);
+
+ $actualJson = file_get_contents($actualFile);
+ $expectedJson = file_get_contents($expectedFile);
+
+ static::assertJson($expectedJson, $message);
+ static::assertJson($actualJson, $message);
+
+ $constraintExpected = new JsonMatches(
+ $expectedJson
+ );
+
+ $constraintActual = new JsonMatches($actualJson);
+
+ static::assertThat($expectedJson, new LogicalNot($constraintActual), $message);
+ static::assertThat($actualJson, new LogicalNot($constraintExpected), $message);
+ }
+
+ /**
+ * @throws Exception
+ */
+ public static function logicalAnd(): LogicalAnd
+ {
+ $constraints = func_get_args();
+
+ $constraint = new LogicalAnd;
+ $constraint->setConstraints($constraints);
+
+ return $constraint;
+ }
+
+ public static function logicalOr(): LogicalOr
+ {
+ $constraints = func_get_args();
+
+ $constraint = new LogicalOr;
+ $constraint->setConstraints($constraints);
+
+ return $constraint;
+ }
+
+ public static function logicalNot(Constraint $constraint): LogicalNot
+ {
+ return new LogicalNot($constraint);
+ }
+
+ public static function logicalXor(): LogicalXor
+ {
+ $constraints = func_get_args();
+
+ $constraint = new LogicalXor;
+ $constraint->setConstraints($constraints);
+
+ return $constraint;
+ }
+
+ public static function anything(): IsAnything
+ {
+ return new IsAnything;
+ }
+
+ public static function isTrue(): IsTrue
+ {
+ return new IsTrue;
+ }
+
+ /**
+ * @psalm-template CallbackInput of mixed
+ *
+ * @psalm-param callable(CallbackInput $callback): bool $callback
+ *
+ * @psalm-return Callback<CallbackInput>
+ */
+ public static function callback(callable $callback): Callback
+ {
+ return new Callback($callback);
+ }
+
+ public static function isFalse(): IsFalse
+ {
+ return new IsFalse;
+ }
+
+ public static function isJson(): IsJson
+ {
+ return new IsJson;
+ }
+
+ public static function isNull(): IsNull
+ {
+ return new IsNull;
+ }
+
+ public static function isFinite(): IsFinite
+ {
+ return new IsFinite;
+ }
+
+ public static function isInfinite(): IsInfinite
+ {
+ return new IsInfinite;
+ }
+
+ public static function isNan(): IsNan
+ {
+ return new IsNan;
+ }
+
+ public static function containsEqual($value): TraversableContainsEqual
+ {
+ return new TraversableContainsEqual($value);
+ }
+
+ public static function containsIdentical($value): TraversableContainsIdentical
+ {
+ return new TraversableContainsIdentical($value);
+ }
+
+ public static function containsOnly(string $type): TraversableContainsOnly
+ {
+ return new TraversableContainsOnly($type);
+ }
+
+ public static function containsOnlyInstancesOf(string $className): TraversableContainsOnly
+ {
+ return new TraversableContainsOnly($className, false);
+ }
+
+ /**
+ * @param int|string $key
+ */
+ public static function arrayHasKey($key): ArrayHasKey
+ {
+ return new ArrayHasKey($key);
+ }
+
+ public static function equalTo($value): IsEqual
+ {
+ return new IsEqual($value, 0.0, false, false);
+ }
+
+ public static function equalToCanonicalizing($value): IsEqualCanonicalizing
+ {
+ return new IsEqualCanonicalizing($value);
+ }
+
+ public static function equalToIgnoringCase($value): IsEqualIgnoringCase
+ {
+ return new IsEqualIgnoringCase($value);
+ }
+
+ public static function equalToWithDelta($value, float $delta): IsEqualWithDelta
+ {
+ return new IsEqualWithDelta($value, $delta);
+ }
+
+ public static function isEmpty(): IsEmpty
+ {
+ return new IsEmpty;
+ }
+
+ public static function isWritable(): IsWritable
+ {
+ return new IsWritable;
+ }
+
+ public static function isReadable(): IsReadable
+ {
+ return new IsReadable;
+ }
+
+ public static function directoryExists(): DirectoryExists
+ {
+ return new DirectoryExists;
+ }
+
+ public static function fileExists(): FileExists
+ {
+ return new FileExists;
+ }
+
+ public static function greaterThan($value): GreaterThan
+ {
+ return new GreaterThan($value);
+ }
+
+ public static function greaterThanOrEqual($value): LogicalOr
+ {
+ return static::logicalOr(
+ new IsEqual($value),
+ new GreaterThan($value)
+ );
+ }
+
+ public static function classHasAttribute(string $attributeName): ClassHasAttribute
+ {
+ return new ClassHasAttribute($attributeName);
+ }
+
+ public static function classHasStaticAttribute(string $attributeName): ClassHasStaticAttribute
+ {
+ return new ClassHasStaticAttribute($attributeName);
+ }
+
+ public static function objectHasAttribute($attributeName): ObjectHasAttribute
+ {
+ return new ObjectHasAttribute($attributeName);
+ }
+
+ public static function identicalTo($value): IsIdentical
+ {
+ return new IsIdentical($value);
+ }
+
+ public static function isInstanceOf(string $className): IsInstanceOf
+ {
+ return new IsInstanceOf($className);
+ }
+
+ public static function isType(string $type): IsType
+ {
+ return new IsType($type);
+ }
+
+ public static function lessThan($value): LessThan
+ {
+ return new LessThan($value);
+ }
+
+ public static function lessThanOrEqual($value): LogicalOr
+ {
+ return static::logicalOr(
+ new IsEqual($value),
+ new LessThan($value)
+ );
+ }
+
+ public static function matchesRegularExpression(string $pattern): RegularExpression
+ {
+ return new RegularExpression($pattern);
+ }
+
+ public static function matches(string $string): StringMatchesFormatDescription
+ {
+ return new StringMatchesFormatDescription($string);
+ }
+
+ public static function stringStartsWith($prefix): StringStartsWith
+ {
+ return new StringStartsWith($prefix);
+ }
+
+ public static function stringContains(string $string, bool $case = true): StringContains
+ {
+ return new StringContains($string, $case);
+ }
+
+ public static function stringEndsWith(string $suffix): StringEndsWith
+ {
+ return new StringEndsWith($suffix);
+ }
+
+ public static function countOf(int $count): Count
+ {
+ return new Count($count);
+ }
+
+ public static function objectEquals(object $object, string $method = 'equals'): ObjectEquals
+ {
+ return new ObjectEquals($object, $method);
+ }
+
+ /**
+ * Fails a test with the given message.
+ *
+ * @throws AssertionFailedError
+ *
+ * @psalm-return never-return
+ */
+ public static function fail(string $message = ''): void
+ {
+ self::$count++;
+
+ throw new AssertionFailedError($message);
+ }
+
+ /**
+ * Mark the test as incomplete.
+ *
+ * @throws IncompleteTestError
+ *
+ * @psalm-return never-return
+ */
+ public static function markTestIncomplete(string $message = ''): void
+ {
+ throw new IncompleteTestError($message);
+ }
+
+ /**
+ * Mark the test as skipped.
+ *
+ * @throws SkippedTestError
+ * @throws SyntheticSkippedError
+ *
+ * @psalm-return never-return
+ */
+ public static function markTestSkipped(string $message = ''): void
+ {
+ if ($hint = self::detectLocationHint($message)) {
+ $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
+ array_unshift($trace, $hint);
+
+ throw new SyntheticSkippedError($hint['message'], 0, $hint['file'], (int) $hint['line'], $trace);
+ }
+
+ throw new SkippedTestError($message);
+ }
+
+ /**
+ * Return the current assertion count.
+ */
+ public static function getCount(): int
+ {
+ return self::$count;
+ }
+
+ /**
+ * Reset the assertion counter.
+ */
+ public static function resetCount(): void
+ {
+ self::$count = 0;
+ }
+
+ private static function detectLocationHint(string $message): ?array
+ {
+ $hint = null;
+ $lines = preg_split('/\r\n|\r|\n/', $message);
+
+ while (strpos($lines[0], '__OFFSET') !== false) {
+ $offset = explode('=', array_shift($lines));
+
+ if ($offset[0] === '__OFFSET_FILE') {
+ $hint['file'] = $offset[1];
+ }
+
+ if ($offset[0] === '__OFFSET_LINE') {
+ $hint['line'] = $offset[1];
+ }
+ }
+
+ if ($hint) {
+ $hint['message'] = implode(PHP_EOL, $lines);
+ }
+
+ return $hint;
+ }
+
+ private static function isValidObjectAttributeName(string $attributeName): bool
+ {
+ return (bool) preg_match('/[^\x00-\x1f\x7f-\x9f]+/', $attributeName);
+ }
+
+ private static function isValidClassAttributeName(string $attributeName): bool
+ {
+ return (bool) preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $attributeName);
+ }
+
+ /**
+ * @codeCoverageIgnore
+ */
+ private static function createWarning(string $warning): void
+ {
+ foreach (debug_backtrace() as $step) {
+ if (isset($step['object']) && $step['object'] instanceof TestCase) {
+ assert($step['object'] instanceof TestCase);
+
+ $step['object']->addWarning($warning);
+
+ break;
+ }
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php b/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php
new file mode 100644
index 000000000..7c4831d0f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Assert/Functions.php
@@ -0,0 +1,3035 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use function func_get_args;
+use ArrayAccess;
+use Countable;
+use DOMDocument;
+use DOMElement;
+use PHPUnit\Framework\Constraint\ArrayHasKey;
+use PHPUnit\Framework\Constraint\Callback;
+use PHPUnit\Framework\Constraint\ClassHasAttribute;
+use PHPUnit\Framework\Constraint\ClassHasStaticAttribute;
+use PHPUnit\Framework\Constraint\Constraint;
+use PHPUnit\Framework\Constraint\Count;
+use PHPUnit\Framework\Constraint\DirectoryExists;
+use PHPUnit\Framework\Constraint\FileExists;
+use PHPUnit\Framework\Constraint\GreaterThan;
+use PHPUnit\Framework\Constraint\IsAnything;
+use PHPUnit\Framework\Constraint\IsEmpty;
+use PHPUnit\Framework\Constraint\IsEqual;
+use PHPUnit\Framework\Constraint\IsEqualCanonicalizing;
+use PHPUnit\Framework\Constraint\IsEqualIgnoringCase;
+use PHPUnit\Framework\Constraint\IsEqualWithDelta;
+use PHPUnit\Framework\Constraint\IsFalse;
+use PHPUnit\Framework\Constraint\IsFinite;
+use PHPUnit\Framework\Constraint\IsIdentical;
+use PHPUnit\Framework\Constraint\IsInfinite;
+use PHPUnit\Framework\Constraint\IsInstanceOf;
+use PHPUnit\Framework\Constraint\IsJson;
+use PHPUnit\Framework\Constraint\IsNan;
+use PHPUnit\Framework\Constraint\IsNull;
+use PHPUnit\Framework\Constraint\IsReadable;
+use PHPUnit\Framework\Constraint\IsTrue;
+use PHPUnit\Framework\Constraint\IsType;
+use PHPUnit\Framework\Constraint\IsWritable;
+use PHPUnit\Framework\Constraint\LessThan;
+use PHPUnit\Framework\Constraint\LogicalAnd;
+use PHPUnit\Framework\Constraint\LogicalNot;
+use PHPUnit\Framework\Constraint\LogicalOr;
+use PHPUnit\Framework\Constraint\LogicalXor;
+use PHPUnit\Framework\Constraint\ObjectEquals;
+use PHPUnit\Framework\Constraint\ObjectHasAttribute;
+use PHPUnit\Framework\Constraint\RegularExpression;
+use PHPUnit\Framework\Constraint\StringContains;
+use PHPUnit\Framework\Constraint\StringEndsWith;
+use PHPUnit\Framework\Constraint\StringMatchesFormatDescription;
+use PHPUnit\Framework\Constraint\StringStartsWith;
+use PHPUnit\Framework\Constraint\TraversableContainsEqual;
+use PHPUnit\Framework\Constraint\TraversableContainsIdentical;
+use PHPUnit\Framework\Constraint\TraversableContainsOnly;
+use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount as AnyInvokedCountMatcher;
+use PHPUnit\Framework\MockObject\Rule\InvokedAtIndex as InvokedAtIndexMatcher;
+use PHPUnit\Framework\MockObject\Rule\InvokedAtLeastCount as InvokedAtLeastCountMatcher;
+use PHPUnit\Framework\MockObject\Rule\InvokedAtLeastOnce as InvokedAtLeastOnceMatcher;
+use PHPUnit\Framework\MockObject\Rule\InvokedAtMostCount as InvokedAtMostCountMatcher;
+use PHPUnit\Framework\MockObject\Rule\InvokedCount as InvokedCountMatcher;
+use PHPUnit\Framework\MockObject\Stub\ConsecutiveCalls as ConsecutiveCallsStub;
+use PHPUnit\Framework\MockObject\Stub\Exception as ExceptionStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnArgument as ReturnArgumentStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnCallback as ReturnCallbackStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnSelf as ReturnSelfStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnValueMap as ReturnValueMapStub;
+use Throwable;
+
+if (!function_exists('PHPUnit\Framework\assertArrayHasKey')) {
+ /**
+ * Asserts that an array has a specified key.
+ *
+ * @param int|string $key
+ * @param array|ArrayAccess $array
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertArrayHasKey
+ */
+ function assertArrayHasKey($key, $array, string $message = ''): void
+ {
+ Assert::assertArrayHasKey(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertArrayNotHasKey')) {
+ /**
+ * Asserts that an array does not have a specified key.
+ *
+ * @param int|string $key
+ * @param array|ArrayAccess $array
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertArrayNotHasKey
+ */
+ function assertArrayNotHasKey($key, $array, string $message = ''): void
+ {
+ Assert::assertArrayNotHasKey(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertContains')) {
+ /**
+ * Asserts that a haystack contains a needle.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertContains
+ */
+ function assertContains($needle, iterable $haystack, string $message = ''): void
+ {
+ Assert::assertContains(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertContainsEquals')) {
+ function assertContainsEquals($needle, iterable $haystack, string $message = ''): void
+ {
+ Assert::assertContainsEquals(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotContains')) {
+ /**
+ * Asserts that a haystack does not contain a needle.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotContains
+ */
+ function assertNotContains($needle, iterable $haystack, string $message = ''): void
+ {
+ Assert::assertNotContains(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotContainsEquals')) {
+ function assertNotContainsEquals($needle, iterable $haystack, string $message = ''): void
+ {
+ Assert::assertNotContainsEquals(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertContainsOnly')) {
+ /**
+ * Asserts that a haystack contains only values of a given type.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertContainsOnly
+ */
+ function assertContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = ''): void
+ {
+ Assert::assertContainsOnly(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertContainsOnlyInstancesOf')) {
+ /**
+ * Asserts that a haystack contains only instances of a given class name.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertContainsOnlyInstancesOf
+ */
+ function assertContainsOnlyInstancesOf(string $className, iterable $haystack, string $message = ''): void
+ {
+ Assert::assertContainsOnlyInstancesOf(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotContainsOnly')) {
+ /**
+ * Asserts that a haystack does not contain only values of a given type.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotContainsOnly
+ */
+ function assertNotContainsOnly(string $type, iterable $haystack, ?bool $isNativeType = null, string $message = ''): void
+ {
+ Assert::assertNotContainsOnly(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertCount')) {
+ /**
+ * Asserts the number of elements of an array, Countable or Traversable.
+ *
+ * @param Countable|iterable $haystack
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertCount
+ */
+ function assertCount(int $expectedCount, $haystack, string $message = ''): void
+ {
+ Assert::assertCount(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotCount')) {
+ /**
+ * Asserts the number of elements of an array, Countable or Traversable.
+ *
+ * @param Countable|iterable $haystack
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotCount
+ */
+ function assertNotCount(int $expectedCount, $haystack, string $message = ''): void
+ {
+ Assert::assertNotCount(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertEquals')) {
+ /**
+ * Asserts that two variables are equal.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertEquals
+ */
+ function assertEquals($expected, $actual, string $message = ''): void
+ {
+ Assert::assertEquals(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertEqualsCanonicalizing')) {
+ /**
+ * Asserts that two variables are equal (canonicalizing).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertEqualsCanonicalizing
+ */
+ function assertEqualsCanonicalizing($expected, $actual, string $message = ''): void
+ {
+ Assert::assertEqualsCanonicalizing(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertEqualsIgnoringCase')) {
+ /**
+ * Asserts that two variables are equal (ignoring case).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertEqualsIgnoringCase
+ */
+ function assertEqualsIgnoringCase($expected, $actual, string $message = ''): void
+ {
+ Assert::assertEqualsIgnoringCase(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertEqualsWithDelta')) {
+ /**
+ * Asserts that two variables are equal (with delta).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertEqualsWithDelta
+ */
+ function assertEqualsWithDelta($expected, $actual, float $delta, string $message = ''): void
+ {
+ Assert::assertEqualsWithDelta(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotEquals')) {
+ /**
+ * Asserts that two variables are not equal.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotEquals
+ */
+ function assertNotEquals($expected, $actual, string $message = ''): void
+ {
+ Assert::assertNotEquals(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotEqualsCanonicalizing')) {
+ /**
+ * Asserts that two variables are not equal (canonicalizing).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotEqualsCanonicalizing
+ */
+ function assertNotEqualsCanonicalizing($expected, $actual, string $message = ''): void
+ {
+ Assert::assertNotEqualsCanonicalizing(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotEqualsIgnoringCase')) {
+ /**
+ * Asserts that two variables are not equal (ignoring case).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotEqualsIgnoringCase
+ */
+ function assertNotEqualsIgnoringCase($expected, $actual, string $message = ''): void
+ {
+ Assert::assertNotEqualsIgnoringCase(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotEqualsWithDelta')) {
+ /**
+ * Asserts that two variables are not equal (with delta).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotEqualsWithDelta
+ */
+ function assertNotEqualsWithDelta($expected, $actual, float $delta, string $message = ''): void
+ {
+ Assert::assertNotEqualsWithDelta(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertObjectEquals')) {
+ /**
+ * @throws ExpectationFailedException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertObjectEquals
+ */
+ function assertObjectEquals(object $expected, object $actual, string $method = 'equals', string $message = ''): void
+ {
+ Assert::assertObjectEquals(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertEmpty')) {
+ /**
+ * Asserts that a variable is empty.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert empty $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertEmpty
+ */
+ function assertEmpty($actual, string $message = ''): void
+ {
+ Assert::assertEmpty(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotEmpty')) {
+ /**
+ * Asserts that a variable is not empty.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !empty $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotEmpty
+ */
+ function assertNotEmpty($actual, string $message = ''): void
+ {
+ Assert::assertNotEmpty(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertGreaterThan')) {
+ /**
+ * Asserts that a value is greater than another value.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertGreaterThan
+ */
+ function assertGreaterThan($expected, $actual, string $message = ''): void
+ {
+ Assert::assertGreaterThan(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertGreaterThanOrEqual')) {
+ /**
+ * Asserts that a value is greater than or equal to another value.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertGreaterThanOrEqual
+ */
+ function assertGreaterThanOrEqual($expected, $actual, string $message = ''): void
+ {
+ Assert::assertGreaterThanOrEqual(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertLessThan')) {
+ /**
+ * Asserts that a value is smaller than another value.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertLessThan
+ */
+ function assertLessThan($expected, $actual, string $message = ''): void
+ {
+ Assert::assertLessThan(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertLessThanOrEqual')) {
+ /**
+ * Asserts that a value is smaller than or equal to another value.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertLessThanOrEqual
+ */
+ function assertLessThanOrEqual($expected, $actual, string $message = ''): void
+ {
+ Assert::assertLessThanOrEqual(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileEquals')) {
+ /**
+ * Asserts that the contents of one file is equal to the contents of another
+ * file.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileEquals
+ */
+ function assertFileEquals(string $expected, string $actual, string $message = ''): void
+ {
+ Assert::assertFileEquals(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileEqualsCanonicalizing')) {
+ /**
+ * Asserts that the contents of one file is equal to the contents of another
+ * file (canonicalizing).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileEqualsCanonicalizing
+ */
+ function assertFileEqualsCanonicalizing(string $expected, string $actual, string $message = ''): void
+ {
+ Assert::assertFileEqualsCanonicalizing(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileEqualsIgnoringCase')) {
+ /**
+ * Asserts that the contents of one file is equal to the contents of another
+ * file (ignoring case).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileEqualsIgnoringCase
+ */
+ function assertFileEqualsIgnoringCase(string $expected, string $actual, string $message = ''): void
+ {
+ Assert::assertFileEqualsIgnoringCase(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileNotEquals')) {
+ /**
+ * Asserts that the contents of one file is not equal to the contents of
+ * another file.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileNotEquals
+ */
+ function assertFileNotEquals(string $expected, string $actual, string $message = ''): void
+ {
+ Assert::assertFileNotEquals(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileNotEqualsCanonicalizing')) {
+ /**
+ * Asserts that the contents of one file is not equal to the contents of another
+ * file (canonicalizing).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileNotEqualsCanonicalizing
+ */
+ function assertFileNotEqualsCanonicalizing(string $expected, string $actual, string $message = ''): void
+ {
+ Assert::assertFileNotEqualsCanonicalizing(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileNotEqualsIgnoringCase')) {
+ /**
+ * Asserts that the contents of one file is not equal to the contents of another
+ * file (ignoring case).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileNotEqualsIgnoringCase
+ */
+ function assertFileNotEqualsIgnoringCase(string $expected, string $actual, string $message = ''): void
+ {
+ Assert::assertFileNotEqualsIgnoringCase(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringEqualsFile')) {
+ /**
+ * Asserts that the contents of a string is equal
+ * to the contents of a file.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringEqualsFile
+ */
+ function assertStringEqualsFile(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ Assert::assertStringEqualsFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringEqualsFileCanonicalizing')) {
+ /**
+ * Asserts that the contents of a string is equal
+ * to the contents of a file (canonicalizing).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringEqualsFileCanonicalizing
+ */
+ function assertStringEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ Assert::assertStringEqualsFileCanonicalizing(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringEqualsFileIgnoringCase')) {
+ /**
+ * Asserts that the contents of a string is equal
+ * to the contents of a file (ignoring case).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringEqualsFileIgnoringCase
+ */
+ function assertStringEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ Assert::assertStringEqualsFileIgnoringCase(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringNotEqualsFile')) {
+ /**
+ * Asserts that the contents of a string is not equal
+ * to the contents of a file.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringNotEqualsFile
+ */
+ function assertStringNotEqualsFile(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ Assert::assertStringNotEqualsFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringNotEqualsFileCanonicalizing')) {
+ /**
+ * Asserts that the contents of a string is not equal
+ * to the contents of a file (canonicalizing).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringNotEqualsFileCanonicalizing
+ */
+ function assertStringNotEqualsFileCanonicalizing(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ Assert::assertStringNotEqualsFileCanonicalizing(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringNotEqualsFileIgnoringCase')) {
+ /**
+ * Asserts that the contents of a string is not equal
+ * to the contents of a file (ignoring case).
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringNotEqualsFileIgnoringCase
+ */
+ function assertStringNotEqualsFileIgnoringCase(string $expectedFile, string $actualString, string $message = ''): void
+ {
+ Assert::assertStringNotEqualsFileIgnoringCase(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsReadable')) {
+ /**
+ * Asserts that a file/dir is readable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsReadable
+ */
+ function assertIsReadable(string $filename, string $message = ''): void
+ {
+ Assert::assertIsReadable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotReadable')) {
+ /**
+ * Asserts that a file/dir exists and is not readable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotReadable
+ */
+ function assertIsNotReadable(string $filename, string $message = ''): void
+ {
+ Assert::assertIsNotReadable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotIsReadable')) {
+ /**
+ * Asserts that a file/dir exists and is not readable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4062
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotIsReadable
+ */
+ function assertNotIsReadable(string $filename, string $message = ''): void
+ {
+ Assert::assertNotIsReadable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsWritable')) {
+ /**
+ * Asserts that a file/dir exists and is writable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsWritable
+ */
+ function assertIsWritable(string $filename, string $message = ''): void
+ {
+ Assert::assertIsWritable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotWritable')) {
+ /**
+ * Asserts that a file/dir exists and is not writable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotWritable
+ */
+ function assertIsNotWritable(string $filename, string $message = ''): void
+ {
+ Assert::assertIsNotWritable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotIsWritable')) {
+ /**
+ * Asserts that a file/dir exists and is not writable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4065
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotIsWritable
+ */
+ function assertNotIsWritable(string $filename, string $message = ''): void
+ {
+ Assert::assertNotIsWritable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertDirectoryExists')) {
+ /**
+ * Asserts that a directory exists.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertDirectoryExists
+ */
+ function assertDirectoryExists(string $directory, string $message = ''): void
+ {
+ Assert::assertDirectoryExists(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertDirectoryDoesNotExist')) {
+ /**
+ * Asserts that a directory does not exist.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertDirectoryDoesNotExist
+ */
+ function assertDirectoryDoesNotExist(string $directory, string $message = ''): void
+ {
+ Assert::assertDirectoryDoesNotExist(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertDirectoryNotExists')) {
+ /**
+ * Asserts that a directory does not exist.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4068
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertDirectoryNotExists
+ */
+ function assertDirectoryNotExists(string $directory, string $message = ''): void
+ {
+ Assert::assertDirectoryNotExists(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertDirectoryIsReadable')) {
+ /**
+ * Asserts that a directory exists and is readable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertDirectoryIsReadable
+ */
+ function assertDirectoryIsReadable(string $directory, string $message = ''): void
+ {
+ Assert::assertDirectoryIsReadable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertDirectoryIsNotReadable')) {
+ /**
+ * Asserts that a directory exists and is not readable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertDirectoryIsNotReadable
+ */
+ function assertDirectoryIsNotReadable(string $directory, string $message = ''): void
+ {
+ Assert::assertDirectoryIsNotReadable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertDirectoryNotIsReadable')) {
+ /**
+ * Asserts that a directory exists and is not readable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4071
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertDirectoryNotIsReadable
+ */
+ function assertDirectoryNotIsReadable(string $directory, string $message = ''): void
+ {
+ Assert::assertDirectoryNotIsReadable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertDirectoryIsWritable')) {
+ /**
+ * Asserts that a directory exists and is writable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertDirectoryIsWritable
+ */
+ function assertDirectoryIsWritable(string $directory, string $message = ''): void
+ {
+ Assert::assertDirectoryIsWritable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertDirectoryIsNotWritable')) {
+ /**
+ * Asserts that a directory exists and is not writable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertDirectoryIsNotWritable
+ */
+ function assertDirectoryIsNotWritable(string $directory, string $message = ''): void
+ {
+ Assert::assertDirectoryIsNotWritable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertDirectoryNotIsWritable')) {
+ /**
+ * Asserts that a directory exists and is not writable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4074
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertDirectoryNotIsWritable
+ */
+ function assertDirectoryNotIsWritable(string $directory, string $message = ''): void
+ {
+ Assert::assertDirectoryNotIsWritable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileExists')) {
+ /**
+ * Asserts that a file exists.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileExists
+ */
+ function assertFileExists(string $filename, string $message = ''): void
+ {
+ Assert::assertFileExists(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileDoesNotExist')) {
+ /**
+ * Asserts that a file does not exist.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileDoesNotExist
+ */
+ function assertFileDoesNotExist(string $filename, string $message = ''): void
+ {
+ Assert::assertFileDoesNotExist(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileNotExists')) {
+ /**
+ * Asserts that a file does not exist.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4077
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileNotExists
+ */
+ function assertFileNotExists(string $filename, string $message = ''): void
+ {
+ Assert::assertFileNotExists(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileIsReadable')) {
+ /**
+ * Asserts that a file exists and is readable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileIsReadable
+ */
+ function assertFileIsReadable(string $file, string $message = ''): void
+ {
+ Assert::assertFileIsReadable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileIsNotReadable')) {
+ /**
+ * Asserts that a file exists and is not readable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileIsNotReadable
+ */
+ function assertFileIsNotReadable(string $file, string $message = ''): void
+ {
+ Assert::assertFileIsNotReadable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileNotIsReadable')) {
+ /**
+ * Asserts that a file exists and is not readable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4080
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileNotIsReadable
+ */
+ function assertFileNotIsReadable(string $file, string $message = ''): void
+ {
+ Assert::assertFileNotIsReadable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileIsWritable')) {
+ /**
+ * Asserts that a file exists and is writable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileIsWritable
+ */
+ function assertFileIsWritable(string $file, string $message = ''): void
+ {
+ Assert::assertFileIsWritable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileIsNotWritable')) {
+ /**
+ * Asserts that a file exists and is not writable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileIsNotWritable
+ */
+ function assertFileIsNotWritable(string $file, string $message = ''): void
+ {
+ Assert::assertFileIsNotWritable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFileNotIsWritable')) {
+ /**
+ * Asserts that a file exists and is not writable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4083
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFileNotIsWritable
+ */
+ function assertFileNotIsWritable(string $file, string $message = ''): void
+ {
+ Assert::assertFileNotIsWritable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertTrue')) {
+ /**
+ * Asserts that a condition is true.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert true $condition
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertTrue
+ */
+ function assertTrue($condition, string $message = ''): void
+ {
+ Assert::assertTrue(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotTrue')) {
+ /**
+ * Asserts that a condition is not true.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !true $condition
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotTrue
+ */
+ function assertNotTrue($condition, string $message = ''): void
+ {
+ Assert::assertNotTrue(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFalse')) {
+ /**
+ * Asserts that a condition is false.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert false $condition
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFalse
+ */
+ function assertFalse($condition, string $message = ''): void
+ {
+ Assert::assertFalse(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotFalse')) {
+ /**
+ * Asserts that a condition is not false.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !false $condition
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotFalse
+ */
+ function assertNotFalse($condition, string $message = ''): void
+ {
+ Assert::assertNotFalse(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNull')) {
+ /**
+ * Asserts that a variable is null.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert null $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNull
+ */
+ function assertNull($actual, string $message = ''): void
+ {
+ Assert::assertNull(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotNull')) {
+ /**
+ * Asserts that a variable is not null.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !null $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotNull
+ */
+ function assertNotNull($actual, string $message = ''): void
+ {
+ Assert::assertNotNull(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertFinite')) {
+ /**
+ * Asserts that a variable is finite.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertFinite
+ */
+ function assertFinite($actual, string $message = ''): void
+ {
+ Assert::assertFinite(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertInfinite')) {
+ /**
+ * Asserts that a variable is infinite.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertInfinite
+ */
+ function assertInfinite($actual, string $message = ''): void
+ {
+ Assert::assertInfinite(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNan')) {
+ /**
+ * Asserts that a variable is nan.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNan
+ */
+ function assertNan($actual, string $message = ''): void
+ {
+ Assert::assertNan(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertClassHasAttribute')) {
+ /**
+ * Asserts that a class has a specified attribute.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertClassHasAttribute
+ */
+ function assertClassHasAttribute(string $attributeName, string $className, string $message = ''): void
+ {
+ Assert::assertClassHasAttribute(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertClassNotHasAttribute')) {
+ /**
+ * Asserts that a class does not have a specified attribute.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertClassNotHasAttribute
+ */
+ function assertClassNotHasAttribute(string $attributeName, string $className, string $message = ''): void
+ {
+ Assert::assertClassNotHasAttribute(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertClassHasStaticAttribute')) {
+ /**
+ * Asserts that a class has a specified static attribute.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertClassHasStaticAttribute
+ */
+ function assertClassHasStaticAttribute(string $attributeName, string $className, string $message = ''): void
+ {
+ Assert::assertClassHasStaticAttribute(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertClassNotHasStaticAttribute')) {
+ /**
+ * Asserts that a class does not have a specified static attribute.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertClassNotHasStaticAttribute
+ */
+ function assertClassNotHasStaticAttribute(string $attributeName, string $className, string $message = ''): void
+ {
+ Assert::assertClassNotHasStaticAttribute(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertObjectHasAttribute')) {
+ /**
+ * Asserts that an object has a specified attribute.
+ *
+ * @param object $object
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertObjectHasAttribute
+ */
+ function assertObjectHasAttribute(string $attributeName, $object, string $message = ''): void
+ {
+ Assert::assertObjectHasAttribute(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertObjectNotHasAttribute')) {
+ /**
+ * Asserts that an object does not have a specified attribute.
+ *
+ * @param object $object
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertObjectNotHasAttribute
+ */
+ function assertObjectNotHasAttribute(string $attributeName, $object, string $message = ''): void
+ {
+ Assert::assertObjectNotHasAttribute(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertSame')) {
+ /**
+ * Asserts that two variables have the same type and value.
+ * Used on objects, it asserts that two variables reference
+ * the same object.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-template ExpectedType
+ * @psalm-param ExpectedType $expected
+ * @psalm-assert =ExpectedType $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertSame
+ */
+ function assertSame($expected, $actual, string $message = ''): void
+ {
+ Assert::assertSame(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotSame')) {
+ /**
+ * Asserts that two variables do not have the same type and value.
+ * Used on objects, it asserts that two variables do not reference
+ * the same object.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotSame
+ */
+ function assertNotSame($expected, $actual, string $message = ''): void
+ {
+ Assert::assertNotSame(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertInstanceOf')) {
+ /**
+ * Asserts that a variable is of a given type.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $expected
+ * @psalm-assert =ExpectedType $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertInstanceOf
+ */
+ function assertInstanceOf(string $expected, $actual, string $message = ''): void
+ {
+ Assert::assertInstanceOf(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotInstanceOf')) {
+ /**
+ * Asserts that a variable is not of a given type.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $expected
+ * @psalm-assert !ExpectedType $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotInstanceOf
+ */
+ function assertNotInstanceOf(string $expected, $actual, string $message = ''): void
+ {
+ Assert::assertNotInstanceOf(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsArray')) {
+ /**
+ * Asserts that a variable is of type array.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert array $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsArray
+ */
+ function assertIsArray($actual, string $message = ''): void
+ {
+ Assert::assertIsArray(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsBool')) {
+ /**
+ * Asserts that a variable is of type bool.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert bool $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsBool
+ */
+ function assertIsBool($actual, string $message = ''): void
+ {
+ Assert::assertIsBool(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsFloat')) {
+ /**
+ * Asserts that a variable is of type float.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert float $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsFloat
+ */
+ function assertIsFloat($actual, string $message = ''): void
+ {
+ Assert::assertIsFloat(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsInt')) {
+ /**
+ * Asserts that a variable is of type int.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert int $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsInt
+ */
+ function assertIsInt($actual, string $message = ''): void
+ {
+ Assert::assertIsInt(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNumeric')) {
+ /**
+ * Asserts that a variable is of type numeric.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert numeric $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNumeric
+ */
+ function assertIsNumeric($actual, string $message = ''): void
+ {
+ Assert::assertIsNumeric(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsObject')) {
+ /**
+ * Asserts that a variable is of type object.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert object $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsObject
+ */
+ function assertIsObject($actual, string $message = ''): void
+ {
+ Assert::assertIsObject(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsResource')) {
+ /**
+ * Asserts that a variable is of type resource.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert resource $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsResource
+ */
+ function assertIsResource($actual, string $message = ''): void
+ {
+ Assert::assertIsResource(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsClosedResource')) {
+ /**
+ * Asserts that a variable is of type resource and is closed.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert resource $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsClosedResource
+ */
+ function assertIsClosedResource($actual, string $message = ''): void
+ {
+ Assert::assertIsClosedResource(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsString')) {
+ /**
+ * Asserts that a variable is of type string.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert string $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsString
+ */
+ function assertIsString($actual, string $message = ''): void
+ {
+ Assert::assertIsString(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsScalar')) {
+ /**
+ * Asserts that a variable is of type scalar.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert scalar $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsScalar
+ */
+ function assertIsScalar($actual, string $message = ''): void
+ {
+ Assert::assertIsScalar(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsCallable')) {
+ /**
+ * Asserts that a variable is of type callable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert callable $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsCallable
+ */
+ function assertIsCallable($actual, string $message = ''): void
+ {
+ Assert::assertIsCallable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsIterable')) {
+ /**
+ * Asserts that a variable is of type iterable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert iterable $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsIterable
+ */
+ function assertIsIterable($actual, string $message = ''): void
+ {
+ Assert::assertIsIterable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotArray')) {
+ /**
+ * Asserts that a variable is not of type array.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !array $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotArray
+ */
+ function assertIsNotArray($actual, string $message = ''): void
+ {
+ Assert::assertIsNotArray(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotBool')) {
+ /**
+ * Asserts that a variable is not of type bool.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !bool $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotBool
+ */
+ function assertIsNotBool($actual, string $message = ''): void
+ {
+ Assert::assertIsNotBool(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotFloat')) {
+ /**
+ * Asserts that a variable is not of type float.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !float $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotFloat
+ */
+ function assertIsNotFloat($actual, string $message = ''): void
+ {
+ Assert::assertIsNotFloat(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotInt')) {
+ /**
+ * Asserts that a variable is not of type int.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !int $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotInt
+ */
+ function assertIsNotInt($actual, string $message = ''): void
+ {
+ Assert::assertIsNotInt(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotNumeric')) {
+ /**
+ * Asserts that a variable is not of type numeric.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !numeric $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotNumeric
+ */
+ function assertIsNotNumeric($actual, string $message = ''): void
+ {
+ Assert::assertIsNotNumeric(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotObject')) {
+ /**
+ * Asserts that a variable is not of type object.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !object $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotObject
+ */
+ function assertIsNotObject($actual, string $message = ''): void
+ {
+ Assert::assertIsNotObject(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotResource')) {
+ /**
+ * Asserts that a variable is not of type resource.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !resource $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotResource
+ */
+ function assertIsNotResource($actual, string $message = ''): void
+ {
+ Assert::assertIsNotResource(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotClosedResource')) {
+ /**
+ * Asserts that a variable is not of type resource.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !resource $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotClosedResource
+ */
+ function assertIsNotClosedResource($actual, string $message = ''): void
+ {
+ Assert::assertIsNotClosedResource(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotString')) {
+ /**
+ * Asserts that a variable is not of type string.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !string $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotString
+ */
+ function assertIsNotString($actual, string $message = ''): void
+ {
+ Assert::assertIsNotString(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotScalar')) {
+ /**
+ * Asserts that a variable is not of type scalar.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !scalar $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotScalar
+ */
+ function assertIsNotScalar($actual, string $message = ''): void
+ {
+ Assert::assertIsNotScalar(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotCallable')) {
+ /**
+ * Asserts that a variable is not of type callable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !callable $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotCallable
+ */
+ function assertIsNotCallable($actual, string $message = ''): void
+ {
+ Assert::assertIsNotCallable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertIsNotIterable')) {
+ /**
+ * Asserts that a variable is not of type iterable.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @psalm-assert !iterable $actual
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertIsNotIterable
+ */
+ function assertIsNotIterable($actual, string $message = ''): void
+ {
+ Assert::assertIsNotIterable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertMatchesRegularExpression')) {
+ /**
+ * Asserts that a string matches a given regular expression.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertMatchesRegularExpression
+ */
+ function assertMatchesRegularExpression(string $pattern, string $string, string $message = ''): void
+ {
+ Assert::assertMatchesRegularExpression(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertRegExp')) {
+ /**
+ * Asserts that a string matches a given regular expression.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4086
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertRegExp
+ */
+ function assertRegExp(string $pattern, string $string, string $message = ''): void
+ {
+ Assert::assertRegExp(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertDoesNotMatchRegularExpression')) {
+ /**
+ * Asserts that a string does not match a given regular expression.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertDoesNotMatchRegularExpression
+ */
+ function assertDoesNotMatchRegularExpression(string $pattern, string $string, string $message = ''): void
+ {
+ Assert::assertDoesNotMatchRegularExpression(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotRegExp')) {
+ /**
+ * Asserts that a string does not match a given regular expression.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4089
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotRegExp
+ */
+ function assertNotRegExp(string $pattern, string $string, string $message = ''): void
+ {
+ Assert::assertNotRegExp(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertSameSize')) {
+ /**
+ * Assert that the size of two arrays (or `Countable` or `Traversable` objects)
+ * is the same.
+ *
+ * @param Countable|iterable $expected
+ * @param Countable|iterable $actual
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertSameSize
+ */
+ function assertSameSize($expected, $actual, string $message = ''): void
+ {
+ Assert::assertSameSize(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertNotSameSize')) {
+ /**
+ * Assert that the size of two arrays (or `Countable` or `Traversable` objects)
+ * is not the same.
+ *
+ * @param Countable|iterable $expected
+ * @param Countable|iterable $actual
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertNotSameSize
+ */
+ function assertNotSameSize($expected, $actual, string $message = ''): void
+ {
+ Assert::assertNotSameSize(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringMatchesFormat')) {
+ /**
+ * Asserts that a string matches a given format string.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringMatchesFormat
+ */
+ function assertStringMatchesFormat(string $format, string $string, string $message = ''): void
+ {
+ Assert::assertStringMatchesFormat(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringNotMatchesFormat')) {
+ /**
+ * Asserts that a string does not match a given format string.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringNotMatchesFormat
+ */
+ function assertStringNotMatchesFormat(string $format, string $string, string $message = ''): void
+ {
+ Assert::assertStringNotMatchesFormat(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringMatchesFormatFile')) {
+ /**
+ * Asserts that a string matches a given format file.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringMatchesFormatFile
+ */
+ function assertStringMatchesFormatFile(string $formatFile, string $string, string $message = ''): void
+ {
+ Assert::assertStringMatchesFormatFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringNotMatchesFormatFile')) {
+ /**
+ * Asserts that a string does not match a given format string.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringNotMatchesFormatFile
+ */
+ function assertStringNotMatchesFormatFile(string $formatFile, string $string, string $message = ''): void
+ {
+ Assert::assertStringNotMatchesFormatFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringStartsWith')) {
+ /**
+ * Asserts that a string starts with a given prefix.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringStartsWith
+ */
+ function assertStringStartsWith(string $prefix, string $string, string $message = ''): void
+ {
+ Assert::assertStringStartsWith(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringStartsNotWith')) {
+ /**
+ * Asserts that a string starts not with a given prefix.
+ *
+ * @param string $prefix
+ * @param string $string
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringStartsNotWith
+ */
+ function assertStringStartsNotWith($prefix, $string, string $message = ''): void
+ {
+ Assert::assertStringStartsNotWith(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringContainsString')) {
+ /**
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringContainsString
+ */
+ function assertStringContainsString(string $needle, string $haystack, string $message = ''): void
+ {
+ Assert::assertStringContainsString(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringContainsStringIgnoringCase')) {
+ /**
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringContainsStringIgnoringCase
+ */
+ function assertStringContainsStringIgnoringCase(string $needle, string $haystack, string $message = ''): void
+ {
+ Assert::assertStringContainsStringIgnoringCase(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringNotContainsString')) {
+ /**
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringNotContainsString
+ */
+ function assertStringNotContainsString(string $needle, string $haystack, string $message = ''): void
+ {
+ Assert::assertStringNotContainsString(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringNotContainsStringIgnoringCase')) {
+ /**
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringNotContainsStringIgnoringCase
+ */
+ function assertStringNotContainsStringIgnoringCase(string $needle, string $haystack, string $message = ''): void
+ {
+ Assert::assertStringNotContainsStringIgnoringCase(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringEndsWith')) {
+ /**
+ * Asserts that a string ends with a given suffix.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringEndsWith
+ */
+ function assertStringEndsWith(string $suffix, string $string, string $message = ''): void
+ {
+ Assert::assertStringEndsWith(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertStringEndsNotWith')) {
+ /**
+ * Asserts that a string ends not with a given suffix.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertStringEndsNotWith
+ */
+ function assertStringEndsNotWith(string $suffix, string $string, string $message = ''): void
+ {
+ Assert::assertStringEndsNotWith(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertXmlFileEqualsXmlFile')) {
+ /**
+ * Asserts that two XML files are equal.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertXmlFileEqualsXmlFile
+ */
+ function assertXmlFileEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void
+ {
+ Assert::assertXmlFileEqualsXmlFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertXmlFileNotEqualsXmlFile')) {
+ /**
+ * Asserts that two XML files are not equal.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws \PHPUnit\Util\Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertXmlFileNotEqualsXmlFile
+ */
+ function assertXmlFileNotEqualsXmlFile(string $expectedFile, string $actualFile, string $message = ''): void
+ {
+ Assert::assertXmlFileNotEqualsXmlFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertXmlStringEqualsXmlFile')) {
+ /**
+ * Asserts that two XML documents are equal.
+ *
+ * @param DOMDocument|string $actualXml
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws \PHPUnit\Util\Xml\Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertXmlStringEqualsXmlFile
+ */
+ function assertXmlStringEqualsXmlFile(string $expectedFile, $actualXml, string $message = ''): void
+ {
+ Assert::assertXmlStringEqualsXmlFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertXmlStringNotEqualsXmlFile')) {
+ /**
+ * Asserts that two XML documents are not equal.
+ *
+ * @param DOMDocument|string $actualXml
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws \PHPUnit\Util\Xml\Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertXmlStringNotEqualsXmlFile
+ */
+ function assertXmlStringNotEqualsXmlFile(string $expectedFile, $actualXml, string $message = ''): void
+ {
+ Assert::assertXmlStringNotEqualsXmlFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertXmlStringEqualsXmlString')) {
+ /**
+ * Asserts that two XML documents are equal.
+ *
+ * @param DOMDocument|string $expectedXml
+ * @param DOMDocument|string $actualXml
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws \PHPUnit\Util\Xml\Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertXmlStringEqualsXmlString
+ */
+ function assertXmlStringEqualsXmlString($expectedXml, $actualXml, string $message = ''): void
+ {
+ Assert::assertXmlStringEqualsXmlString(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertXmlStringNotEqualsXmlString')) {
+ /**
+ * Asserts that two XML documents are not equal.
+ *
+ * @param DOMDocument|string $expectedXml
+ * @param DOMDocument|string $actualXml
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws \PHPUnit\Util\Xml\Exception
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertXmlStringNotEqualsXmlString
+ */
+ function assertXmlStringNotEqualsXmlString($expectedXml, $actualXml, string $message = ''): void
+ {
+ Assert::assertXmlStringNotEqualsXmlString(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertEqualXMLStructure')) {
+ /**
+ * Asserts that a hierarchy of DOMElements matches.
+ *
+ * @throws AssertionFailedError
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @codeCoverageIgnore
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4091
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertEqualXMLStructure
+ */
+ function assertEqualXMLStructure(DOMElement $expectedElement, DOMElement $actualElement, bool $checkAttributes = false, string $message = ''): void
+ {
+ Assert::assertEqualXMLStructure(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertThat')) {
+ /**
+ * Evaluates a PHPUnit\Framework\Constraint matcher object.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertThat
+ */
+ function assertThat($value, Constraint $constraint, string $message = ''): void
+ {
+ Assert::assertThat(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertJson')) {
+ /**
+ * Asserts that a string is a valid JSON string.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertJson
+ */
+ function assertJson(string $actualJson, string $message = ''): void
+ {
+ Assert::assertJson(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertJsonStringEqualsJsonString')) {
+ /**
+ * Asserts that two given JSON encoded objects or arrays are equal.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertJsonStringEqualsJsonString
+ */
+ function assertJsonStringEqualsJsonString(string $expectedJson, string $actualJson, string $message = ''): void
+ {
+ Assert::assertJsonStringEqualsJsonString(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertJsonStringNotEqualsJsonString')) {
+ /**
+ * Asserts that two given JSON encoded objects or arrays are not equal.
+ *
+ * @param string $expectedJson
+ * @param string $actualJson
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertJsonStringNotEqualsJsonString
+ */
+ function assertJsonStringNotEqualsJsonString($expectedJson, $actualJson, string $message = ''): void
+ {
+ Assert::assertJsonStringNotEqualsJsonString(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertJsonStringEqualsJsonFile')) {
+ /**
+ * Asserts that the generated JSON encoded object and the content of the given file are equal.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertJsonStringEqualsJsonFile
+ */
+ function assertJsonStringEqualsJsonFile(string $expectedFile, string $actualJson, string $message = ''): void
+ {
+ Assert::assertJsonStringEqualsJsonFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertJsonStringNotEqualsJsonFile')) {
+ /**
+ * Asserts that the generated JSON encoded object and the content of the given file are not equal.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertJsonStringNotEqualsJsonFile
+ */
+ function assertJsonStringNotEqualsJsonFile(string $expectedFile, string $actualJson, string $message = ''): void
+ {
+ Assert::assertJsonStringNotEqualsJsonFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertJsonFileEqualsJsonFile')) {
+ /**
+ * Asserts that two JSON files are equal.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertJsonFileEqualsJsonFile
+ */
+ function assertJsonFileEqualsJsonFile(string $expectedFile, string $actualFile, string $message = ''): void
+ {
+ Assert::assertJsonFileEqualsJsonFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\assertJsonFileNotEqualsJsonFile')) {
+ /**
+ * Asserts that two JSON files are not equal.
+ *
+ * @throws ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see Assert::assertJsonFileNotEqualsJsonFile
+ */
+ function assertJsonFileNotEqualsJsonFile(string $expectedFile, string $actualFile, string $message = ''): void
+ {
+ Assert::assertJsonFileNotEqualsJsonFile(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\logicalAnd')) {
+ function logicalAnd(): LogicalAnd
+ {
+ return Assert::logicalAnd(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\logicalOr')) {
+ function logicalOr(): LogicalOr
+ {
+ return Assert::logicalOr(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\logicalNot')) {
+ function logicalNot(Constraint $constraint): LogicalNot
+ {
+ return Assert::logicalNot(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\logicalXor')) {
+ function logicalXor(): LogicalXor
+ {
+ return Assert::logicalXor(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\anything')) {
+ function anything(): IsAnything
+ {
+ return Assert::anything(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isTrue')) {
+ function isTrue(): IsTrue
+ {
+ return Assert::isTrue(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\callback')) {
+ function callback(callable $callback): Callback
+ {
+ return Assert::callback(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isFalse')) {
+ function isFalse(): IsFalse
+ {
+ return Assert::isFalse(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isJson')) {
+ function isJson(): IsJson
+ {
+ return Assert::isJson(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isNull')) {
+ function isNull(): IsNull
+ {
+ return Assert::isNull(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isFinite')) {
+ function isFinite(): IsFinite
+ {
+ return Assert::isFinite(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isInfinite')) {
+ function isInfinite(): IsInfinite
+ {
+ return Assert::isInfinite(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isNan')) {
+ function isNan(): IsNan
+ {
+ return Assert::isNan(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\containsEqual')) {
+ function containsEqual($value): TraversableContainsEqual
+ {
+ return Assert::containsEqual(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\containsIdentical')) {
+ function containsIdentical($value): TraversableContainsIdentical
+ {
+ return Assert::containsIdentical(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\containsOnly')) {
+ function containsOnly(string $type): TraversableContainsOnly
+ {
+ return Assert::containsOnly(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\containsOnlyInstancesOf')) {
+ function containsOnlyInstancesOf(string $className): TraversableContainsOnly
+ {
+ return Assert::containsOnlyInstancesOf(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\arrayHasKey')) {
+ function arrayHasKey($key): ArrayHasKey
+ {
+ return Assert::arrayHasKey(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\equalTo')) {
+ function equalTo($value): IsEqual
+ {
+ return Assert::equalTo(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\equalToCanonicalizing')) {
+ function equalToCanonicalizing($value): IsEqualCanonicalizing
+ {
+ return Assert::equalToCanonicalizing(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\equalToIgnoringCase')) {
+ function equalToIgnoringCase($value): IsEqualIgnoringCase
+ {
+ return Assert::equalToIgnoringCase(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\equalToWithDelta')) {
+ function equalToWithDelta($value, float $delta): IsEqualWithDelta
+ {
+ return Assert::equalToWithDelta(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isEmpty')) {
+ function isEmpty(): IsEmpty
+ {
+ return Assert::isEmpty(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isWritable')) {
+ function isWritable(): IsWritable
+ {
+ return Assert::isWritable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isReadable')) {
+ function isReadable(): IsReadable
+ {
+ return Assert::isReadable(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\directoryExists')) {
+ function directoryExists(): DirectoryExists
+ {
+ return Assert::directoryExists(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\fileExists')) {
+ function fileExists(): FileExists
+ {
+ return Assert::fileExists(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\greaterThan')) {
+ function greaterThan($value): GreaterThan
+ {
+ return Assert::greaterThan(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\greaterThanOrEqual')) {
+ function greaterThanOrEqual($value): LogicalOr
+ {
+ return Assert::greaterThanOrEqual(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\classHasAttribute')) {
+ function classHasAttribute(string $attributeName): ClassHasAttribute
+ {
+ return Assert::classHasAttribute(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\classHasStaticAttribute')) {
+ function classHasStaticAttribute(string $attributeName): ClassHasStaticAttribute
+ {
+ return Assert::classHasStaticAttribute(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\objectHasAttribute')) {
+ function objectHasAttribute($attributeName): ObjectHasAttribute
+ {
+ return Assert::objectHasAttribute(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\identicalTo')) {
+ function identicalTo($value): IsIdentical
+ {
+ return Assert::identicalTo(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isInstanceOf')) {
+ function isInstanceOf(string $className): IsInstanceOf
+ {
+ return Assert::isInstanceOf(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\isType')) {
+ function isType(string $type): IsType
+ {
+ return Assert::isType(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\lessThan')) {
+ function lessThan($value): LessThan
+ {
+ return Assert::lessThan(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\lessThanOrEqual')) {
+ function lessThanOrEqual($value): LogicalOr
+ {
+ return Assert::lessThanOrEqual(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\matchesRegularExpression')) {
+ function matchesRegularExpression(string $pattern): RegularExpression
+ {
+ return Assert::matchesRegularExpression(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\matches')) {
+ function matches(string $string): StringMatchesFormatDescription
+ {
+ return Assert::matches(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\stringStartsWith')) {
+ function stringStartsWith($prefix): StringStartsWith
+ {
+ return Assert::stringStartsWith(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\stringContains')) {
+ function stringContains(string $string, bool $case = true): StringContains
+ {
+ return Assert::stringContains(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\stringEndsWith')) {
+ function stringEndsWith(string $suffix): StringEndsWith
+ {
+ return Assert::stringEndsWith(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\countOf')) {
+ function countOf(int $count): Count
+ {
+ return Assert::countOf(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\objectEquals')) {
+ function objectEquals(object $object, string $method = 'equals'): ObjectEquals
+ {
+ return Assert::objectEquals(...func_get_args());
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\any')) {
+ /**
+ * Returns a matcher that matches when the method is executed
+ * zero or more times.
+ */
+ function any(): AnyInvokedCountMatcher
+ {
+ return new AnyInvokedCountMatcher;
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\never')) {
+ /**
+ * Returns a matcher that matches when the method is never executed.
+ */
+ function never(): InvokedCountMatcher
+ {
+ return new InvokedCountMatcher(0);
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\atLeast')) {
+ /**
+ * Returns a matcher that matches when the method is executed
+ * at least N times.
+ */
+ function atLeast(int $requiredInvocations): InvokedAtLeastCountMatcher
+ {
+ return new InvokedAtLeastCountMatcher(
+ $requiredInvocations
+ );
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\atLeastOnce')) {
+ /**
+ * Returns a matcher that matches when the method is executed at least once.
+ */
+ function atLeastOnce(): InvokedAtLeastOnceMatcher
+ {
+ return new InvokedAtLeastOnceMatcher;
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\once')) {
+ /**
+ * Returns a matcher that matches when the method is executed exactly once.
+ */
+ function once(): InvokedCountMatcher
+ {
+ return new InvokedCountMatcher(1);
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\exactly')) {
+ /**
+ * Returns a matcher that matches when the method is executed
+ * exactly $count times.
+ */
+ function exactly(int $count): InvokedCountMatcher
+ {
+ return new InvokedCountMatcher($count);
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\atMost')) {
+ /**
+ * Returns a matcher that matches when the method is executed
+ * at most N times.
+ */
+ function atMost(int $allowedInvocations): InvokedAtMostCountMatcher
+ {
+ return new InvokedAtMostCountMatcher($allowedInvocations);
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\at')) {
+ /**
+ * Returns a matcher that matches when the method is executed
+ * at the given index.
+ */
+ function at(int $index): InvokedAtIndexMatcher
+ {
+ return new InvokedAtIndexMatcher($index);
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\returnValue')) {
+ function returnValue($value): ReturnStub
+ {
+ return new ReturnStub($value);
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\returnValueMap')) {
+ function returnValueMap(array $valueMap): ReturnValueMapStub
+ {
+ return new ReturnValueMapStub($valueMap);
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\returnArgument')) {
+ function returnArgument(int $argumentIndex): ReturnArgumentStub
+ {
+ return new ReturnArgumentStub($argumentIndex);
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\returnCallback')) {
+ function returnCallback($callback): ReturnCallbackStub
+ {
+ return new ReturnCallbackStub($callback);
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\returnSelf')) {
+ /**
+ * Returns the current object.
+ *
+ * This method is useful when mocking a fluent interface.
+ */
+ function returnSelf(): ReturnSelfStub
+ {
+ return new ReturnSelfStub;
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\throwException')) {
+ function throwException(Throwable $exception): ExceptionStub
+ {
+ return new ExceptionStub($exception);
+ }
+}
+
+if (!function_exists('PHPUnit\Framework\onConsecutiveCalls')) {
+ function onConsecutiveCalls(): ConsecutiveCallsStub
+ {
+ $args = func_get_args();
+
+ return new ConsecutiveCallsStub($args);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php
new file mode 100644
index 000000000..212e2bcb4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsFalse.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsFalse extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is false';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return $other === false;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php
new file mode 100644
index 000000000..e1d6b2691
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Boolean/IsTrue.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsTrue extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is true';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return $other === true;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php
new file mode 100644
index 000000000..b7cf95a12
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Callback.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+/**
+ * @psalm-template CallbackInput of mixed
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class Callback extends Constraint
+{
+ /**
+ * @var callable
+ *
+ * @psalm-var callable(CallbackInput $input): bool
+ */
+ private $callback;
+
+ /** @psalm-param callable(CallbackInput $input): bool $callback */
+ public function __construct(callable $callback)
+ {
+ $this->callback = $callback;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is accepted by specified callback';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $value. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ *
+ * @psalm-param CallbackInput $other
+ */
+ protected function matches($other): bool
+ {
+ return ($this->callback)($other);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php
new file mode 100644
index 000000000..8e27fbfd4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/Count.php
@@ -0,0 +1,142 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function count;
+use function is_array;
+use function iterator_count;
+use function sprintf;
+use Countable;
+use EmptyIterator;
+use Generator;
+use Iterator;
+use IteratorAggregate;
+use PHPUnit\Framework\Exception;
+use Traversable;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+class Count extends Constraint
+{
+ /**
+ * @var int
+ */
+ private $expectedCount;
+
+ public function __construct(int $expected)
+ {
+ $this->expectedCount = $expected;
+ }
+
+ public function toString(): string
+ {
+ return sprintf(
+ 'count matches %d',
+ $this->expectedCount
+ );
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @throws Exception
+ */
+ protected function matches($other): bool
+ {
+ return $this->expectedCount === $this->getCountOf($other);
+ }
+
+ /**
+ * @throws Exception
+ */
+ protected function getCountOf($other): ?int
+ {
+ if ($other instanceof Countable || is_array($other)) {
+ return count($other);
+ }
+
+ if ($other instanceof EmptyIterator) {
+ return 0;
+ }
+
+ if ($other instanceof Traversable) {
+ while ($other instanceof IteratorAggregate) {
+ try {
+ $other = $other->getIterator();
+ } catch (\Exception $e) {
+ throw new Exception(
+ $e->getMessage(),
+ $e->getCode(),
+ $e
+ );
+ }
+ }
+
+ $iterator = $other;
+
+ if ($iterator instanceof Generator) {
+ return $this->getCountOfGenerator($iterator);
+ }
+
+ if (!$iterator instanceof Iterator) {
+ return iterator_count($iterator);
+ }
+
+ $key = $iterator->key();
+ $count = iterator_count($iterator);
+
+ // Manually rewind $iterator to previous key, since iterator_count
+ // moves pointer.
+ if ($key !== null) {
+ $iterator->rewind();
+
+ while ($iterator->valid() && $key !== $iterator->key()) {
+ $iterator->next();
+ }
+ }
+
+ return $count;
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns the total number of iterations from a generator.
+ * This will fully exhaust the generator.
+ */
+ protected function getCountOfGenerator(Generator $generator): int
+ {
+ for ($count = 0; $generator->valid(); $generator->next()) {
+ $count++;
+ }
+
+ return $count;
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescription($other): string
+ {
+ return sprintf(
+ 'actual size %d matches expected size %d',
+ (int) $this->getCountOf($other),
+ $this->expectedCount
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php
new file mode 100644
index 000000000..31df50201
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/GreaterThan.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class GreaterThan extends Constraint
+{
+ /**
+ * @var float|int
+ */
+ private $value;
+
+ /**
+ * @param float|int $value
+ */
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ return 'is greater than ' . $this->exporter()->export($this->value);
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return $this->value < $other;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php
new file mode 100644
index 000000000..e6371d536
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/IsEmpty.php
@@ -0,0 +1,70 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function count;
+use function gettype;
+use function sprintf;
+use function strpos;
+use Countable;
+use EmptyIterator;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsEmpty extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is empty';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ if ($other instanceof EmptyIterator) {
+ return true;
+ }
+
+ if ($other instanceof Countable) {
+ return count($other) === 0;
+ }
+
+ return empty($other);
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescription($other): string
+ {
+ $type = gettype($other);
+
+ return sprintf(
+ '%s %s %s',
+ strpos($type, 'a') === 0 || strpos($type, 'o') === 0 ? 'an' : 'a',
+ $type,
+ $this->toString()
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php
new file mode 100644
index 000000000..c7884ba1d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/LessThan.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class LessThan extends Constraint
+{
+ /**
+ * @var float|int
+ */
+ private $value;
+
+ /**
+ * @param float|int $value
+ */
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ return 'is less than ' . $this->exporter()->export($this->value);
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return $this->value > $other;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php
new file mode 100644
index 000000000..a54679425
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Cardinality/SameSize.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class SameSize extends Count
+{
+ public function __construct(iterable $expected)
+ {
+ parent::__construct((int) $this->getCountOf($expected));
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php
new file mode 100644
index 000000000..f4fab056e
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Constraint.php
@@ -0,0 +1,269 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function sprintf;
+use Countable;
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\SelfDescribing;
+use SebastianBergmann\Comparator\ComparisonFailure;
+use SebastianBergmann\Exporter\Exporter;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class Constraint implements Countable, SelfDescribing
+{
+ /**
+ * @var ?Exporter
+ */
+ private $exporter;
+
+ /**
+ * Evaluates the constraint for parameter $other.
+ *
+ * If $returnResult is set to false (the default), an exception is thrown
+ * in case of a failure. null is returned otherwise.
+ *
+ * If $returnResult is true, the result of the evaluation is returned as
+ * a boolean value instead: true in case of success, false in case of a
+ * failure.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public function evaluate($other, string $description = '', bool $returnResult = false): ?bool
+ {
+ $success = false;
+
+ if ($this->matches($other)) {
+ $success = true;
+ }
+
+ if ($returnResult) {
+ return $success;
+ }
+
+ if (!$success) {
+ $this->fail($other, $description);
+ }
+
+ return null;
+ }
+
+ /**
+ * Counts the number of constraint elements.
+ */
+ public function count(): int
+ {
+ return 1;
+ }
+
+ protected function exporter(): Exporter
+ {
+ if ($this->exporter === null) {
+ $this->exporter = new Exporter;
+ }
+
+ return $this->exporter;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * This method can be overridden to implement the evaluation algorithm.
+ *
+ * @param mixed $other value or object to evaluate
+ * @codeCoverageIgnore
+ */
+ protected function matches($other): bool
+ {
+ return false;
+ }
+
+ /**
+ * Throws an exception for the given compared value and test description.
+ *
+ * @param mixed $other evaluated value or object
+ * @param string $description Additional information about the test
+ * @param ComparisonFailure $comparisonFailure
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-return never-return
+ */
+ protected function fail($other, $description, ComparisonFailure $comparisonFailure = null): void
+ {
+ $failureDescription = sprintf(
+ 'Failed asserting that %s.',
+ $this->failureDescription($other)
+ );
+
+ $additionalFailureDescription = $this->additionalFailureDescription($other);
+
+ if ($additionalFailureDescription) {
+ $failureDescription .= "\n" . $additionalFailureDescription;
+ }
+
+ if (!empty($description)) {
+ $failureDescription = $description . "\n" . $failureDescription;
+ }
+
+ throw new ExpectationFailedException(
+ $failureDescription,
+ $comparisonFailure
+ );
+ }
+
+ /**
+ * Return additional failure description where needed.
+ *
+ * The function can be overridden to provide additional failure
+ * information like a diff
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function additionalFailureDescription($other): string
+ {
+ return '';
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * To provide additional failure information additionalFailureDescription
+ * can be used.
+ *
+ * @param mixed $other evaluated value or object
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function failureDescription($other): string
+ {
+ return $this->exporter()->export($other) . ' ' . $this->toString();
+ }
+
+ /**
+ * Returns a custom string representation of the constraint object when it
+ * appears in context of an $operator expression.
+ *
+ * The purpose of this method is to provide meaningful descriptive string
+ * in context of operators such as LogicalNot. Native PHPUnit constraints
+ * are supported out of the box by LogicalNot, but externally developed
+ * ones had no way to provide correct strings in this context.
+ *
+ * The method shall return empty string, when it does not handle
+ * customization by itself.
+ *
+ * @param Operator $operator the $operator of the expression
+ * @param mixed $role role of $this constraint in the $operator expression
+ */
+ protected function toStringInContext(Operator $operator, $role): string
+ {
+ return '';
+ }
+
+ /**
+ * Returns the description of the failure when this constraint appears in
+ * context of an $operator expression.
+ *
+ * The purpose of this method is to provide meaningful failure description
+ * in context of operators such as LogicalNot. Native PHPUnit constraints
+ * are supported out of the box by LogicalNot, but externally developed
+ * ones had no way to provide correct messages in this context.
+ *
+ * The method shall return empty string, when it does not handle
+ * customization by itself.
+ *
+ * @param Operator $operator the $operator of the expression
+ * @param mixed $role role of $this constraint in the $operator expression
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescriptionInContext(Operator $operator, $role, $other): string
+ {
+ $string = $this->toStringInContext($operator, $role);
+
+ if ($string === '') {
+ return '';
+ }
+
+ return $this->exporter()->export($other) . ' ' . $string;
+ }
+
+ /**
+ * Reduces the sub-expression starting at $this by skipping degenerate
+ * sub-expression and returns first descendant constraint that starts
+ * a non-reducible sub-expression.
+ *
+ * Returns $this for terminal constraints and for operators that start
+ * non-reducible sub-expression, or the nearest descendant of $this that
+ * starts a non-reducible sub-expression.
+ *
+ * A constraint expression may be modelled as a tree with non-terminal
+ * nodes (operators) and terminal nodes. For example:
+ *
+ * LogicalOr (operator, non-terminal)
+ * + LogicalAnd (operator, non-terminal)
+ * | + IsType('int') (terminal)
+ * | + GreaterThan(10) (terminal)
+ * + LogicalNot (operator, non-terminal)
+ * + IsType('array') (terminal)
+ *
+ * A degenerate sub-expression is a part of the tree, that effectively does
+ * not contribute to the evaluation of the expression it appears in. An example
+ * of degenerate sub-expression is a BinaryOperator constructed with single
+ * operand or nested BinaryOperators, each with single operand. An
+ * expression involving a degenerate sub-expression is equivalent to a
+ * reduced expression with the degenerate sub-expression removed, for example
+ *
+ * LogicalAnd (operator)
+ * + LogicalOr (degenerate operator)
+ * | + LogicalAnd (degenerate operator)
+ * | + IsType('int') (terminal)
+ * + GreaterThan(10) (terminal)
+ *
+ * is equivalent to
+ *
+ * LogicalAnd (operator)
+ * + IsType('int') (terminal)
+ * + GreaterThan(10) (terminal)
+ *
+ * because the subexpression
+ *
+ * + LogicalOr
+ * + LogicalAnd
+ * + -
+ *
+ * is degenerate. Calling reduce() on the LogicalOr object above, as well
+ * as on LogicalAnd, shall return the IsType('int') instance.
+ *
+ * Other specific reductions can be implemented, for example cascade of
+ * LogicalNot operators
+ *
+ * + LogicalNot
+ * + LogicalNot
+ * +LogicalNot
+ * + IsTrue
+ *
+ * can be reduced to
+ *
+ * LogicalNot
+ * + IsTrue
+ */
+ protected function reduce(): self
+ {
+ return $this;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php
new file mode 100644
index 000000000..6a61ebfba
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqual.php
@@ -0,0 +1,138 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function is_string;
+use function sprintf;
+use function strpos;
+use function trim;
+use PHPUnit\Framework\ExpectationFailedException;
+use SebastianBergmann\Comparator\ComparisonFailure;
+use SebastianBergmann\Comparator\Factory as ComparatorFactory;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsEqual extends Constraint
+{
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ /**
+ * @var float
+ */
+ private $delta;
+
+ /**
+ * @var bool
+ */
+ private $canonicalize;
+
+ /**
+ * @var bool
+ */
+ private $ignoreCase;
+
+ public function __construct($value, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false)
+ {
+ $this->value = $value;
+ $this->delta = $delta;
+ $this->canonicalize = $canonicalize;
+ $this->ignoreCase = $ignoreCase;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other.
+ *
+ * If $returnResult is set to false (the default), an exception is thrown
+ * in case of a failure. null is returned otherwise.
+ *
+ * If $returnResult is true, the result of the evaluation is returned as
+ * a boolean value instead: true in case of success, false in case of a
+ * failure.
+ *
+ * @throws ExpectationFailedException
+ *
+ * @return bool
+ */
+ public function evaluate($other, string $description = '', bool $returnResult = false): ?bool
+ {
+ // If $this->value and $other are identical, they are also equal.
+ // This is the most common path and will allow us to skip
+ // initialization of all the comparators.
+ if ($this->value === $other) {
+ return true;
+ }
+
+ $comparatorFactory = ComparatorFactory::getInstance();
+
+ try {
+ $comparator = $comparatorFactory->getComparatorFor(
+ $this->value,
+ $other
+ );
+
+ $comparator->assertEquals(
+ $this->value,
+ $other,
+ $this->delta,
+ $this->canonicalize,
+ $this->ignoreCase
+ );
+ } catch (ComparisonFailure $f) {
+ if ($returnResult) {
+ return false;
+ }
+
+ throw new ExpectationFailedException(
+ trim($description . "\n" . $f->getMessage()),
+ $f
+ );
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ $delta = '';
+
+ if (is_string($this->value)) {
+ if (strpos($this->value, "\n") !== false) {
+ return 'is equal to <text>';
+ }
+
+ return sprintf(
+ "is equal to '%s'",
+ $this->value
+ );
+ }
+
+ if ($this->delta != 0) {
+ $delta = sprintf(
+ ' with delta <%F>',
+ $this->delta
+ );
+ }
+
+ return sprintf(
+ 'is equal to %s%s',
+ $this->exporter()->export($this->value),
+ $delta
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php
new file mode 100644
index 000000000..57bb91ca1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualCanonicalizing.php
@@ -0,0 +1,108 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function is_string;
+use function sprintf;
+use function strpos;
+use function trim;
+use PHPUnit\Framework\ExpectationFailedException;
+use SebastianBergmann\Comparator\ComparisonFailure;
+use SebastianBergmann\Comparator\Factory as ComparatorFactory;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsEqualCanonicalizing extends Constraint
+{
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other.
+ *
+ * If $returnResult is set to false (the default), an exception is thrown
+ * in case of a failure. null is returned otherwise.
+ *
+ * If $returnResult is true, the result of the evaluation is returned as
+ * a boolean value instead: true in case of success, false in case of a
+ * failure.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function evaluate($other, string $description = '', bool $returnResult = false): ?bool
+ {
+ // If $this->value and $other are identical, they are also equal.
+ // This is the most common path and will allow us to skip
+ // initialization of all the comparators.
+ if ($this->value === $other) {
+ return true;
+ }
+
+ $comparatorFactory = ComparatorFactory::getInstance();
+
+ try {
+ $comparator = $comparatorFactory->getComparatorFor(
+ $this->value,
+ $other
+ );
+
+ $comparator->assertEquals(
+ $this->value,
+ $other,
+ 0.0,
+ true,
+ false
+ );
+ } catch (ComparisonFailure $f) {
+ if ($returnResult) {
+ return false;
+ }
+
+ throw new ExpectationFailedException(
+ trim($description . "\n" . $f->getMessage()),
+ $f
+ );
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ if (is_string($this->value)) {
+ if (strpos($this->value, "\n") !== false) {
+ return 'is equal to <text>';
+ }
+
+ return sprintf(
+ "is equal to '%s'",
+ $this->value
+ );
+ }
+
+ return sprintf(
+ 'is equal to %s',
+ $this->exporter()->export($this->value)
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php
new file mode 100644
index 000000000..d657e96a2
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualIgnoringCase.php
@@ -0,0 +1,108 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function is_string;
+use function sprintf;
+use function strpos;
+use function trim;
+use PHPUnit\Framework\ExpectationFailedException;
+use SebastianBergmann\Comparator\ComparisonFailure;
+use SebastianBergmann\Comparator\Factory as ComparatorFactory;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsEqualIgnoringCase extends Constraint
+{
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other.
+ *
+ * If $returnResult is set to false (the default), an exception is thrown
+ * in case of a failure. null is returned otherwise.
+ *
+ * If $returnResult is true, the result of the evaluation is returned as
+ * a boolean value instead: true in case of success, false in case of a
+ * failure.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function evaluate($other, string $description = '', bool $returnResult = false): ?bool
+ {
+ // If $this->value and $other are identical, they are also equal.
+ // This is the most common path and will allow us to skip
+ // initialization of all the comparators.
+ if ($this->value === $other) {
+ return true;
+ }
+
+ $comparatorFactory = ComparatorFactory::getInstance();
+
+ try {
+ $comparator = $comparatorFactory->getComparatorFor(
+ $this->value,
+ $other
+ );
+
+ $comparator->assertEquals(
+ $this->value,
+ $other,
+ 0.0,
+ false,
+ true
+ );
+ } catch (ComparisonFailure $f) {
+ if ($returnResult) {
+ return false;
+ }
+
+ throw new ExpectationFailedException(
+ trim($description . "\n" . $f->getMessage()),
+ $f
+ );
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ if (is_string($this->value)) {
+ if (strpos($this->value, "\n") !== false) {
+ return 'is equal to <text>';
+ }
+
+ return sprintf(
+ "is equal to '%s'",
+ $this->value
+ );
+ }
+
+ return sprintf(
+ 'is equal to %s',
+ $this->exporter()->export($this->value)
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php
new file mode 100644
index 000000000..0370b5118
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Equality/IsEqualWithDelta.php
@@ -0,0 +1,100 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function sprintf;
+use function trim;
+use PHPUnit\Framework\ExpectationFailedException;
+use SebastianBergmann\Comparator\ComparisonFailure;
+use SebastianBergmann\Comparator\Factory as ComparatorFactory;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsEqualWithDelta extends Constraint
+{
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ /**
+ * @var float
+ */
+ private $delta;
+
+ public function __construct($value, float $delta)
+ {
+ $this->value = $value;
+ $this->delta = $delta;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other.
+ *
+ * If $returnResult is set to false (the default), an exception is thrown
+ * in case of a failure. null is returned otherwise.
+ *
+ * If $returnResult is true, the result of the evaluation is returned as
+ * a boolean value instead: true in case of success, false in case of a
+ * failure.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function evaluate($other, string $description = '', bool $returnResult = false): ?bool
+ {
+ // If $this->value and $other are identical, they are also equal.
+ // This is the most common path and will allow us to skip
+ // initialization of all the comparators.
+ if ($this->value === $other) {
+ return true;
+ }
+
+ $comparatorFactory = ComparatorFactory::getInstance();
+
+ try {
+ $comparator = $comparatorFactory->getComparatorFor(
+ $this->value,
+ $other
+ );
+
+ $comparator->assertEquals(
+ $this->value,
+ $other,
+ $this->delta
+ );
+ } catch (ComparisonFailure $f) {
+ if ($returnResult) {
+ return false;
+ }
+
+ throw new ExpectationFailedException(
+ trim($description . "\n" . $f->getMessage()),
+ $f
+ );
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ return sprintf(
+ 'is equal to %s with delta <%F>>',
+ $this->exporter()->export($this->value),
+ $this->delta
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php
new file mode 100644
index 000000000..860c0030f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/Exception.php
@@ -0,0 +1,85 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function get_class;
+use function sprintf;
+use PHPUnit\Util\Filter;
+use Throwable;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class Exception extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $className;
+
+ public function __construct(string $className)
+ {
+ $this->className = $className;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return sprintf(
+ 'exception of type "%s"',
+ $this->className
+ );
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return $other instanceof $this->className;
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescription($other): string
+ {
+ if ($other !== null) {
+ $message = '';
+
+ if ($other instanceof Throwable) {
+ $message = '. Message was: "' . $other->getMessage() . '" at'
+ . "\n" . Filter::getFilteredStacktrace($other);
+ }
+
+ return sprintf(
+ 'exception of type "%s" matches expected exception "%s"%s',
+ get_class($other),
+ $this->className,
+ $message
+ );
+ }
+
+ return sprintf(
+ 'exception of type "%s" is thrown',
+ $this->className
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php
new file mode 100644
index 000000000..b8054a949
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionCode.php
@@ -0,0 +1,67 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function sprintf;
+use Throwable;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class ExceptionCode extends Constraint
+{
+ /**
+ * @var int|string
+ */
+ private $expectedCode;
+
+ /**
+ * @param int|string $expected
+ */
+ public function __construct($expected)
+ {
+ $this->expectedCode = $expected;
+ }
+
+ public function toString(): string
+ {
+ return 'exception code is ';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param Throwable $other
+ */
+ protected function matches($other): bool
+ {
+ return (string) $other->getCode() === (string) $this->expectedCode;
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function failureDescription($other): string
+ {
+ return sprintf(
+ '%s is equal to expected exception code %s',
+ $this->exporter()->export($other->getCode()),
+ $this->exporter()->export($this->expectedCode)
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php
new file mode 100644
index 000000000..030beff98
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessage.php
@@ -0,0 +1,78 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function sprintf;
+use function strpos;
+use Throwable;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class ExceptionMessage extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $expectedMessage;
+
+ public function __construct(string $expected)
+ {
+ $this->expectedMessage = $expected;
+ }
+
+ public function toString(): string
+ {
+ if ($this->expectedMessage === '') {
+ return 'exception message is empty';
+ }
+
+ return 'exception message contains ';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param Throwable $other
+ */
+ protected function matches($other): bool
+ {
+ if ($this->expectedMessage === '') {
+ return $other->getMessage() === '';
+ }
+
+ return strpos((string) $other->getMessage(), $this->expectedMessage) !== false;
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescription($other): string
+ {
+ if ($this->expectedMessage === '') {
+ return sprintf(
+ "exception message is empty but is '%s'",
+ $other->getMessage()
+ );
+ }
+
+ return sprintf(
+ "exception message '%s' contains '%s'",
+ $other->getMessage(),
+ $this->expectedMessage
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php
new file mode 100644
index 000000000..fd0db1c8f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Exception/ExceptionMessageRegularExpression.php
@@ -0,0 +1,74 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function sprintf;
+use Exception;
+use PHPUnit\Util\RegularExpression as RegularExpressionUtil;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class ExceptionMessageRegularExpression extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $expectedMessageRegExp;
+
+ public function __construct(string $expected)
+ {
+ $this->expectedMessageRegExp = $expected;
+ }
+
+ public function toString(): string
+ {
+ return 'exception message matches ';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param \PHPUnit\Framework\Exception $other
+ *
+ * @throws \PHPUnit\Framework\Exception
+ * @throws Exception
+ */
+ protected function matches($other): bool
+ {
+ $match = RegularExpressionUtil::safeMatch($this->expectedMessageRegExp, $other->getMessage());
+
+ if ($match === false) {
+ throw new \PHPUnit\Framework\Exception(
+ "Invalid expected exception message regex given: '{$this->expectedMessageRegExp}'"
+ );
+ }
+
+ return $match === 1;
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescription($other): string
+ {
+ return sprintf(
+ "exception message '%s' matches '%s'",
+ $other->getMessage(),
+ $this->expectedMessageRegExp
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php
new file mode 100644
index 000000000..ef4b2baf0
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/DirectoryExists.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function is_dir;
+use function sprintf;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class DirectoryExists extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'directory exists';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return is_dir($other);
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescription($other): string
+ {
+ return sprintf(
+ 'directory "%s" exists',
+ $other
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php
new file mode 100644
index 000000000..41b3136e9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/FileExists.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function file_exists;
+use function sprintf;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class FileExists extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'file exists';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return file_exists($other);
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescription($other): string
+ {
+ return sprintf(
+ 'file "%s" exists',
+ $other
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php
new file mode 100644
index 000000000..e33d7e045
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsReadable.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function is_readable;
+use function sprintf;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsReadable extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is readable';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return is_readable($other);
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescription($other): string
+ {
+ return sprintf(
+ '"%s" is readable',
+ $other
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php
new file mode 100644
index 000000000..93981224a
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Filesystem/IsWritable.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function is_writable;
+use function sprintf;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsWritable extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is writable';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return is_writable($other);
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescription($other): string
+ {
+ return sprintf(
+ '"%s" is writable',
+ $other
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php
new file mode 100644
index 000000000..db84a7431
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsAnything.php
@@ -0,0 +1,51 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use PHPUnit\Framework\ExpectationFailedException;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsAnything extends Constraint
+{
+ /**
+ * Evaluates the constraint for parameter $other.
+ *
+ * If $returnResult is set to false (the default), an exception is thrown
+ * in case of a failure. null is returned otherwise.
+ *
+ * If $returnResult is true, the result of the evaluation is returned as
+ * a boolean value instead: true in case of success, false in case of a
+ * failure.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function evaluate($other, string $description = '', bool $returnResult = false): ?bool
+ {
+ return $returnResult ? true : null;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is anything';
+ }
+
+ /**
+ * Counts the number of constraint elements.
+ */
+ public function count(): int
+ {
+ return 0;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php b/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php
new file mode 100644
index 000000000..565f1a3a8
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php
@@ -0,0 +1,137 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use const PHP_FLOAT_EPSILON;
+use function abs;
+use function get_class;
+use function is_array;
+use function is_float;
+use function is_infinite;
+use function is_nan;
+use function is_object;
+use function is_string;
+use function sprintf;
+use PHPUnit\Framework\ExpectationFailedException;
+use SebastianBergmann\Comparator\ComparisonFailure;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsIdentical extends Constraint
+{
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other.
+ *
+ * If $returnResult is set to false (the default), an exception is thrown
+ * in case of a failure. null is returned otherwise.
+ *
+ * If $returnResult is true, the result of the evaluation is returned as
+ * a boolean value instead: true in case of success, false in case of a
+ * failure.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public function evaluate($other, string $description = '', bool $returnResult = false): ?bool
+ {
+ if (is_float($this->value) && is_float($other) &&
+ !is_infinite($this->value) && !is_infinite($other) &&
+ !is_nan($this->value) && !is_nan($other)) {
+ $success = abs($this->value - $other) < PHP_FLOAT_EPSILON;
+ } else {
+ $success = $this->value === $other;
+ }
+
+ if ($returnResult) {
+ return $success;
+ }
+
+ if (!$success) {
+ $f = null;
+
+ // if both values are strings, make sure a diff is generated
+ if (is_string($this->value) && is_string($other)) {
+ $f = new ComparisonFailure(
+ $this->value,
+ $other,
+ sprintf("'%s'", $this->value),
+ sprintf("'%s'", $other)
+ );
+ }
+
+ // if both values are array, make sure a diff is generated
+ if (is_array($this->value) && is_array($other)) {
+ $f = new ComparisonFailure(
+ $this->value,
+ $other,
+ $this->exporter()->export($this->value),
+ $this->exporter()->export($other)
+ );
+ }
+
+ $this->fail($other, $description, $f);
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ if (is_object($this->value)) {
+ return 'is identical to an object of class "' .
+ get_class($this->value) . '"';
+ }
+
+ return 'is identical to ' . $this->exporter()->export($this->value);
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function failureDescription($other): string
+ {
+ if (is_object($this->value) && is_object($other)) {
+ return 'two variables reference the same object';
+ }
+
+ if (is_string($this->value) && is_string($other)) {
+ return 'two strings are identical';
+ }
+
+ if (is_array($this->value) && is_array($other)) {
+ return 'two arrays are identical';
+ }
+
+ return parent::failureDescription($other);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php
new file mode 100644
index 000000000..23a4de7e9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php
@@ -0,0 +1,109 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function json_decode;
+use function sprintf;
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Util\Json;
+use SebastianBergmann\Comparator\ComparisonFailure;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class JsonMatches extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $value;
+
+ public function __construct(string $value)
+ {
+ $this->value = $value;
+ }
+
+ /**
+ * Returns a string representation of the object.
+ */
+ public function toString(): string
+ {
+ return sprintf(
+ 'matches JSON string "%s"',
+ $this->value
+ );
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * This method can be overridden to implement the evaluation algorithm.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ [$error, $recodedOther] = Json::canonicalize($other);
+
+ if ($error) {
+ return false;
+ }
+
+ [$error, $recodedValue] = Json::canonicalize($this->value);
+
+ if ($error) {
+ return false;
+ }
+
+ return $recodedOther == $recodedValue;
+ }
+
+ /**
+ * Throws an exception for the given compared value and test description.
+ *
+ * @param mixed $other evaluated value or object
+ * @param string $description Additional information about the test
+ * @param ComparisonFailure $comparisonFailure
+ *
+ * @throws \PHPUnit\Framework\Exception
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ *
+ * @psalm-return never-return
+ */
+ protected function fail($other, $description, ComparisonFailure $comparisonFailure = null): void
+ {
+ if ($comparisonFailure === null) {
+ [$error, $recodedOther] = Json::canonicalize($other);
+
+ if ($error) {
+ parent::fail($other, $description);
+ }
+
+ [$error, $recodedValue] = Json::canonicalize($this->value);
+
+ if ($error) {
+ parent::fail($other, $description);
+ }
+
+ $comparisonFailure = new ComparisonFailure(
+ json_decode($this->value),
+ json_decode($other),
+ Json::prettify($recodedValue),
+ Json::prettify($recodedOther),
+ false,
+ 'Failed asserting that two json values are equal.'
+ );
+ }
+
+ parent::fail($other, $description, $comparisonFailure);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php
new file mode 100644
index 000000000..8ded556ce
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/JsonMatchesErrorMessageProvider.php
@@ -0,0 +1,72 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use const JSON_ERROR_CTRL_CHAR;
+use const JSON_ERROR_DEPTH;
+use const JSON_ERROR_NONE;
+use const JSON_ERROR_STATE_MISMATCH;
+use const JSON_ERROR_SYNTAX;
+use const JSON_ERROR_UTF8;
+use function strtolower;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class JsonMatchesErrorMessageProvider
+{
+ /**
+ * Translates JSON error to a human readable string.
+ */
+ public static function determineJsonError(string $error, string $prefix = ''): ?string
+ {
+ switch ($error) {
+ case JSON_ERROR_NONE:
+ return null;
+ case JSON_ERROR_DEPTH:
+ return $prefix . 'Maximum stack depth exceeded';
+ case JSON_ERROR_STATE_MISMATCH:
+ return $prefix . 'Underflow or the modes mismatch';
+ case JSON_ERROR_CTRL_CHAR:
+ return $prefix . 'Unexpected control character found';
+ case JSON_ERROR_SYNTAX:
+ return $prefix . 'Syntax error, malformed JSON';
+ case JSON_ERROR_UTF8:
+ return $prefix . 'Malformed UTF-8 characters, possibly incorrectly encoded';
+
+ default:
+ return $prefix . 'Unknown error';
+ }
+ }
+
+ /**
+ * Translates a given type to a human readable message prefix.
+ */
+ public static function translateTypeToPrefix(string $type): string
+ {
+ switch (strtolower($type)) {
+ case 'expected':
+ $prefix = 'Expected value JSON decode error - ';
+
+ break;
+ case 'actual':
+ $prefix = 'Actual value JSON decode error - ';
+
+ break;
+
+ default:
+ $prefix = '';
+
+ break;
+ }
+
+ return $prefix;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php
new file mode 100644
index 000000000..9a2f32866
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsFinite.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function is_finite;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsFinite extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is finite';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return is_finite($other);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php
new file mode 100644
index 000000000..c718514c2
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsInfinite.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function is_infinite;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsInfinite extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is infinite';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return is_infinite($other);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php
new file mode 100644
index 000000000..0062c5b5c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Math/IsNan.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function is_nan;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsNan extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is nan';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return is_nan($other);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php
new file mode 100644
index 000000000..daa14027d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasAttribute.php
@@ -0,0 +1,88 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function get_class;
+use function is_object;
+use function sprintf;
+use PHPUnit\Framework\Exception;
+use ReflectionClass;
+use ReflectionException;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+class ClassHasAttribute extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $attributeName;
+
+ public function __construct(string $attributeName)
+ {
+ $this->attributeName = $attributeName;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return sprintf(
+ 'has attribute "%s"',
+ $this->attributeName
+ );
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ try {
+ return (new ReflectionClass($other))->hasProperty($this->attributeName);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ */
+ protected function failureDescription($other): string
+ {
+ return sprintf(
+ '%sclass "%s" %s',
+ is_object($other) ? 'object of ' : '',
+ is_object($other) ? get_class($other) : $other,
+ $this->toString()
+ );
+ }
+
+ protected function attributeName(): string
+ {
+ return $this->attributeName;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php
new file mode 100644
index 000000000..cacd0d752
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ClassHasStaticAttribute.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function sprintf;
+use PHPUnit\Framework\Exception;
+use ReflectionClass;
+use ReflectionException;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class ClassHasStaticAttribute extends ClassHasAttribute
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return sprintf(
+ 'has static attribute "%s"',
+ $this->attributeName()
+ );
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ try {
+ $class = new ReflectionClass($other);
+
+ if ($class->hasProperty($this->attributeName())) {
+ return $class->getProperty($this->attributeName())->isStatic();
+ }
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ return false;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php
new file mode 100644
index 000000000..30f3a330c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectEquals.php
@@ -0,0 +1,151 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function get_class;
+use function is_object;
+use PHPUnit\Framework\ActualValueIsNotAnObjectException;
+use PHPUnit\Framework\ComparisonMethodDoesNotAcceptParameterTypeException;
+use PHPUnit\Framework\ComparisonMethodDoesNotDeclareBoolReturnTypeException;
+use PHPUnit\Framework\ComparisonMethodDoesNotDeclareExactlyOneParameterException;
+use PHPUnit\Framework\ComparisonMethodDoesNotDeclareParameterTypeException;
+use PHPUnit\Framework\ComparisonMethodDoesNotExistException;
+use ReflectionNamedType;
+use ReflectionObject;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class ObjectEquals extends Constraint
+{
+ /**
+ * @var object
+ */
+ private $expected;
+
+ /**
+ * @var string
+ */
+ private $method;
+
+ public function __construct(object $object, string $method = 'equals')
+ {
+ $this->expected = $object;
+ $this->method = $method;
+ }
+
+ public function toString(): string
+ {
+ return 'two objects are equal';
+ }
+
+ /**
+ * @throws ActualValueIsNotAnObjectException
+ * @throws ComparisonMethodDoesNotAcceptParameterTypeException
+ * @throws ComparisonMethodDoesNotDeclareBoolReturnTypeException
+ * @throws ComparisonMethodDoesNotDeclareExactlyOneParameterException
+ * @throws ComparisonMethodDoesNotDeclareParameterTypeException
+ * @throws ComparisonMethodDoesNotExistException
+ */
+ protected function matches($other): bool
+ {
+ if (!is_object($other)) {
+ throw new ActualValueIsNotAnObjectException;
+ }
+
+ $object = new ReflectionObject($other);
+
+ if (!$object->hasMethod($this->method)) {
+ throw new ComparisonMethodDoesNotExistException(
+ get_class($other),
+ $this->method
+ );
+ }
+
+ /** @noinspection PhpUnhandledExceptionInspection */
+ $method = $object->getMethod($this->method);
+
+ if (!$method->hasReturnType()) {
+ throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException(
+ get_class($other),
+ $this->method
+ );
+ }
+
+ $returnType = $method->getReturnType();
+
+ if (!$returnType instanceof ReflectionNamedType) {
+ throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException(
+ get_class($other),
+ $this->method
+ );
+ }
+
+ if ($returnType->allowsNull()) {
+ throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException(
+ get_class($other),
+ $this->method
+ );
+ }
+
+ if ($returnType->getName() !== 'bool') {
+ throw new ComparisonMethodDoesNotDeclareBoolReturnTypeException(
+ get_class($other),
+ $this->method
+ );
+ }
+
+ if ($method->getNumberOfParameters() !== 1 || $method->getNumberOfRequiredParameters() !== 1) {
+ throw new ComparisonMethodDoesNotDeclareExactlyOneParameterException(
+ get_class($other),
+ $this->method
+ );
+ }
+
+ $parameter = $method->getParameters()[0];
+
+ if (!$parameter->hasType()) {
+ throw new ComparisonMethodDoesNotDeclareParameterTypeException(
+ get_class($other),
+ $this->method
+ );
+ }
+
+ $type = $parameter->getType();
+
+ if (!$type instanceof ReflectionNamedType) {
+ throw new ComparisonMethodDoesNotDeclareParameterTypeException(
+ get_class($other),
+ $this->method
+ );
+ }
+
+ $typeName = $type->getName();
+
+ if ($typeName === 'self') {
+ $typeName = get_class($other);
+ }
+
+ if (!$this->expected instanceof $typeName) {
+ throw new ComparisonMethodDoesNotAcceptParameterTypeException(
+ get_class($other),
+ $this->method,
+ get_class($this->expected)
+ );
+ }
+
+ return $other->{$this->method}($this->expected);
+ }
+
+ protected function failureDescription($other): string
+ {
+ return $this->toString();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php
new file mode 100644
index 000000000..5fbc0888c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Object/ObjectHasAttribute.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use ReflectionObject;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class ObjectHasAttribute extends ClassHasAttribute
+{
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return (new ReflectionObject($other))->hasProperty($this->attributeName());
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php
new file mode 100644
index 000000000..11c86b526
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/BinaryOperator.php
@@ -0,0 +1,148 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function array_map;
+use function array_values;
+use function count;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class BinaryOperator extends Operator
+{
+ /**
+ * @var Constraint[]
+ */
+ private $constraints = [];
+
+ public static function fromConstraints(Constraint ...$constraints): self
+ {
+ $constraint = new static;
+
+ $constraint->constraints = $constraints;
+
+ return $constraint;
+ }
+
+ /**
+ * @param mixed[] $constraints
+ */
+ public function setConstraints(array $constraints): void
+ {
+ $this->constraints = array_map(function ($constraint): Constraint
+ {
+ return $this->checkConstraint($constraint);
+ }, array_values($constraints));
+ }
+
+ /**
+ * Returns the number of operands (constraints).
+ */
+ final public function arity(): int
+ {
+ return count($this->constraints);
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ $reduced = $this->reduce();
+
+ if ($reduced !== $this) {
+ return $reduced->toString();
+ }
+
+ $text = '';
+
+ foreach ($this->constraints as $key => $constraint) {
+ $constraint = $constraint->reduce();
+
+ $text .= $this->constraintToString($constraint, $key);
+ }
+
+ return $text;
+ }
+
+ /**
+ * Counts the number of constraint elements.
+ */
+ public function count(): int
+ {
+ $count = 0;
+
+ foreach ($this->constraints as $constraint) {
+ $count += count($constraint);
+ }
+
+ return $count;
+ }
+
+ /**
+ * Returns the nested constraints.
+ */
+ final protected function constraints(): array
+ {
+ return $this->constraints;
+ }
+
+ /**
+ * Returns true if the $constraint needs to be wrapped with braces.
+ */
+ final protected function constraintNeedsParentheses(Constraint $constraint): bool
+ {
+ return $this->arity() > 1 && parent::constraintNeedsParentheses($constraint);
+ }
+
+ /**
+ * Reduces the sub-expression starting at $this by skipping degenerate
+ * sub-expression and returns first descendant constraint that starts
+ * a non-reducible sub-expression.
+ *
+ * See Constraint::reduce() for more.
+ */
+ protected function reduce(): Constraint
+ {
+ if ($this->arity() === 1 && $this->constraints[0] instanceof Operator) {
+ return $this->constraints[0]->reduce();
+ }
+
+ return parent::reduce();
+ }
+
+ /**
+ * Returns string representation of given operand in context of this operator.
+ *
+ * @param Constraint $constraint operand constraint
+ * @param int $position position of $constraint in this expression
+ */
+ private function constraintToString(Constraint $constraint, int $position): string
+ {
+ $prefix = '';
+
+ if ($position > 0) {
+ $prefix = (' ' . $this->operator() . ' ');
+ }
+
+ if ($this->constraintNeedsParentheses($constraint)) {
+ return $prefix . '( ' . $constraint->toString() . ' )';
+ }
+
+ $string = $constraint->toStringInContext($this, $position);
+
+ if ($string === '') {
+ $string = $constraint->toString();
+ }
+
+ return $prefix . $string;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php
new file mode 100644
index 000000000..a1af4dd32
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalAnd.php
@@ -0,0 +1,51 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class LogicalAnd extends BinaryOperator
+{
+ /**
+ * Returns the name of this operator.
+ */
+ public function operator(): string
+ {
+ return 'and';
+ }
+
+ /**
+ * Returns this operator's precedence.
+ *
+ * @see https://www.php.net/manual/en/language.operators.precedence.php
+ */
+ public function precedence(): int
+ {
+ return 22;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ foreach ($this->constraints() as $constraint) {
+ if (!$constraint->evaluate($other, '', true)) {
+ return false;
+ }
+ }
+
+ return [] !== $this->constraints();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php
new file mode 100644
index 000000000..7560ce2a1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalNot.php
@@ -0,0 +1,136 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function array_map;
+use function count;
+use function preg_match;
+use function preg_quote;
+use function preg_replace;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class LogicalNot extends UnaryOperator
+{
+ public static function negate(string $string): string
+ {
+ $positives = [
+ 'contains ',
+ 'exists',
+ 'has ',
+ 'is ',
+ 'are ',
+ 'matches ',
+ 'starts with ',
+ 'ends with ',
+ 'reference ',
+ 'not not ',
+ ];
+
+ $negatives = [
+ 'does not contain ',
+ 'does not exist',
+ 'does not have ',
+ 'is not ',
+ 'are not ',
+ 'does not match ',
+ 'starts not with ',
+ 'ends not with ',
+ 'don\'t reference ',
+ 'not ',
+ ];
+
+ preg_match('/(\'[\w\W]*\')([\w\W]*)("[\w\W]*")/i', $string, $matches);
+
+ $positives = array_map(static function (string $s)
+ {
+ return '/\\b' . preg_quote($s, '/') . '/';
+ }, $positives);
+
+ if (count($matches) > 0) {
+ $nonInput = $matches[2];
+
+ $negatedString = preg_replace(
+ '/' . preg_quote($nonInput, '/') . '/',
+ preg_replace(
+ $positives,
+ $negatives,
+ $nonInput
+ ),
+ $string
+ );
+ } else {
+ $negatedString = preg_replace(
+ $positives,
+ $negatives,
+ $string
+ );
+ }
+
+ return $negatedString;
+ }
+
+ /**
+ * Returns the name of this operator.
+ */
+ public function operator(): string
+ {
+ return 'not';
+ }
+
+ /**
+ * Returns this operator's precedence.
+ *
+ * @see https://www.php.net/manual/en/language.operators.precedence.php
+ */
+ public function precedence(): int
+ {
+ return 5;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return !$this->constraint()->evaluate($other, '', true);
+ }
+
+ /**
+ * Applies additional transformation to strings returned by toString() or
+ * failureDescription().
+ */
+ protected function transformString(string $string): string
+ {
+ return self::negate($string);
+ }
+
+ /**
+ * Reduces the sub-expression starting at $this by skipping degenerate
+ * sub-expression and returns first descendant constraint that starts
+ * a non-reducible sub-expression.
+ *
+ * See Constraint::reduce() for more.
+ */
+ protected function reduce(): Constraint
+ {
+ $constraint = $this->constraint();
+
+ if ($constraint instanceof self) {
+ return $constraint->constraint()->reduce();
+ }
+
+ return parent::reduce();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php
new file mode 100644
index 000000000..2932de675
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalOr.php
@@ -0,0 +1,51 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class LogicalOr extends BinaryOperator
+{
+ /**
+ * Returns the name of this operator.
+ */
+ public function operator(): string
+ {
+ return 'or';
+ }
+
+ /**
+ * Returns this operator's precedence.
+ *
+ * @see https://www.php.net/manual/en/language.operators.precedence.php
+ */
+ public function precedence(): int
+ {
+ return 24;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ public function matches($other): bool
+ {
+ foreach ($this->constraints() as $constraint) {
+ if ($constraint->evaluate($other, '', true)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php
new file mode 100644
index 000000000..fbdb479bc
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/LogicalXor.php
@@ -0,0 +1,63 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function array_reduce;
+use function array_shift;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class LogicalXor extends BinaryOperator
+{
+ /**
+ * Returns the name of this operator.
+ */
+ public function operator(): string
+ {
+ return 'xor';
+ }
+
+ /**
+ * Returns this operator's precedence.
+ *
+ * @see https://www.php.net/manual/en/language.operators.precedence.php.
+ */
+ public function precedence(): int
+ {
+ return 23;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ public function matches($other): bool
+ {
+ $constraints = $this->constraints();
+
+ $initial = array_shift($constraints);
+
+ if ($initial === null) {
+ return false;
+ }
+
+ return array_reduce(
+ $constraints,
+ static function (bool $matches, Constraint $constraint) use ($other): bool
+ {
+ return $matches xor $constraint->evaluate($other, '', true);
+ },
+ $initial->evaluate($other, '', true)
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php
new file mode 100644
index 000000000..3f51a0f40
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/Operator.php
@@ -0,0 +1,55 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class Operator extends Constraint
+{
+ /**
+ * Returns the name of this operator.
+ */
+ abstract public function operator(): string;
+
+ /**
+ * Returns this operator's precedence.
+ *
+ * @see https://www.php.net/manual/en/language.operators.precedence.php
+ */
+ abstract public function precedence(): int;
+
+ /**
+ * Returns the number of operands.
+ */
+ abstract public function arity(): int;
+
+ /**
+ * Validates $constraint argument.
+ */
+ protected function checkConstraint($constraint): Constraint
+ {
+ if (!$constraint instanceof Constraint) {
+ return new IsEqual($constraint);
+ }
+
+ return $constraint;
+ }
+
+ /**
+ * Returns true if the $constraint needs to be wrapped with braces.
+ */
+ protected function constraintNeedsParentheses(Constraint $constraint): bool
+ {
+ return $constraint instanceof self &&
+ $constraint->arity() > 1 &&
+ $this->precedence() <= $constraint->precedence();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php
new file mode 100644
index 000000000..0a7a5fa2f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Operator/UnaryOperator.php
@@ -0,0 +1,140 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function count;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class UnaryOperator extends Operator
+{
+ /**
+ * @var Constraint
+ */
+ private $constraint;
+
+ /**
+ * @param Constraint|mixed $constraint
+ */
+ public function __construct($constraint)
+ {
+ $this->constraint = $this->checkConstraint($constraint);
+ }
+
+ /**
+ * Returns the number of operands (constraints).
+ */
+ public function arity(): int
+ {
+ return 1;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ $reduced = $this->reduce();
+
+ if ($reduced !== $this) {
+ return $reduced->toString();
+ }
+
+ $constraint = $this->constraint->reduce();
+
+ if ($this->constraintNeedsParentheses($constraint)) {
+ return $this->operator() . '( ' . $constraint->toString() . ' )';
+ }
+
+ $string = $constraint->toStringInContext($this, 0);
+
+ if ($string === '') {
+ return $this->transformString($constraint->toString());
+ }
+
+ return $string;
+ }
+
+ /**
+ * Counts the number of constraint elements.
+ */
+ public function count(): int
+ {
+ return count($this->constraint);
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function failureDescription($other): string
+ {
+ $reduced = $this->reduce();
+
+ if ($reduced !== $this) {
+ return $reduced->failureDescription($other);
+ }
+
+ $constraint = $this->constraint->reduce();
+
+ if ($this->constraintNeedsParentheses($constraint)) {
+ return $this->operator() . '( ' . $constraint->failureDescription($other) . ' )';
+ }
+
+ $string = $constraint->failureDescriptionInContext($this, 0, $other);
+
+ if ($string === '') {
+ return $this->transformString($constraint->failureDescription($other));
+ }
+
+ return $string;
+ }
+
+ /**
+ * Transforms string returned by the memeber constraint's toString() or
+ * failureDescription() such that it reflects constraint's participation in
+ * this expression.
+ *
+ * The method may be overwritten in a subclass to apply default
+ * transformation in case the operand constraint does not provide its own
+ * custom strings via toStringInContext() or failureDescriptionInContext().
+ *
+ * @param string $string the string to be transformed
+ */
+ protected function transformString(string $string): string
+ {
+ return $string;
+ }
+
+ /**
+ * Provides access to $this->constraint for subclasses.
+ */
+ final protected function constraint(): Constraint
+ {
+ return $this->constraint;
+ }
+
+ /**
+ * Returns true if the $constraint needs to be wrapped with parentheses.
+ */
+ protected function constraintNeedsParentheses(Constraint $constraint): bool
+ {
+ $constraint = $constraint->reduce();
+
+ return $constraint instanceof self || parent::constraintNeedsParentheses($constraint);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php
new file mode 100644
index 000000000..97b294617
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/IsJson.php
@@ -0,0 +1,77 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function json_decode;
+use function json_last_error;
+use function sprintf;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsJson extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is valid JSON';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ if ($other === '') {
+ return false;
+ }
+
+ json_decode($other);
+
+ if (json_last_error()) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function failureDescription($other): string
+ {
+ if ($other === '') {
+ return 'an empty string is valid JSON';
+ }
+
+ json_decode($other);
+ $error = (string) JsonMatchesErrorMessageProvider::determineJsonError(
+ (string) json_last_error()
+ );
+
+ return sprintf(
+ '%s is valid JSON (%s)',
+ $this->exporter()->shortenedExport($other),
+ $error
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php
new file mode 100644
index 000000000..8e609e795
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/RegularExpression.php
@@ -0,0 +1,51 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function preg_match;
+use function sprintf;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+class RegularExpression extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $pattern;
+
+ public function __construct(string $pattern)
+ {
+ $this->pattern = $pattern;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return sprintf(
+ 'matches PCRE pattern "%s"',
+ $this->pattern
+ );
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return preg_match($this->pattern, $other) > 0;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php
new file mode 100644
index 000000000..6279f37ba
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringContains.php
@@ -0,0 +1,85 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function mb_stripos;
+use function mb_strtolower;
+use function sprintf;
+use function strpos;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class StringContains extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $string;
+
+ /**
+ * @var bool
+ */
+ private $ignoreCase;
+
+ public function __construct(string $string, bool $ignoreCase = false)
+ {
+ $this->string = $string;
+ $this->ignoreCase = $ignoreCase;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ if ($this->ignoreCase) {
+ $string = mb_strtolower($this->string, 'UTF-8');
+ } else {
+ $string = $this->string;
+ }
+
+ return sprintf(
+ 'contains "%s"',
+ $string
+ );
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ if ('' === $this->string) {
+ return true;
+ }
+
+ if ($this->ignoreCase) {
+ /*
+ * We must use the multi byte safe version so we can accurately compare non latin upper characters with
+ * their lowercase equivalents.
+ */
+ return mb_stripos($other, $this->string, 0, 'UTF-8') !== false;
+ }
+
+ /*
+ * Use the non multi byte safe functions to see if the string is contained in $other.
+ *
+ * This function is very fast and we don't care about the character position in the string.
+ *
+ * Additionally, we want this method to be binary safe so we can check if some binary data is in other binary
+ * data.
+ */
+ return strpos($other, $this->string) !== false;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php
new file mode 100644
index 000000000..bb4ce23be
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringEndsWith.php
@@ -0,0 +1,48 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function strlen;
+use function substr;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class StringEndsWith extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $suffix;
+
+ public function __construct(string $suffix)
+ {
+ $this->suffix = $suffix;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'ends with "' . $this->suffix . '"';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return substr($other, 0 - strlen($this->suffix)) === $this->suffix;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php
new file mode 100644
index 000000000..c4f7324ec
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringMatchesFormatDescription.php
@@ -0,0 +1,109 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use const DIRECTORY_SEPARATOR;
+use function explode;
+use function implode;
+use function preg_match;
+use function preg_quote;
+use function preg_replace;
+use function strtr;
+use SebastianBergmann\Diff\Differ;
+use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class StringMatchesFormatDescription extends RegularExpression
+{
+ /**
+ * @var string
+ */
+ private $string;
+
+ public function __construct(string $string)
+ {
+ parent::__construct(
+ $this->createPatternFromFormat(
+ $this->convertNewlines($string)
+ )
+ );
+
+ $this->string = $string;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return parent::matches(
+ $this->convertNewlines($other)
+ );
+ }
+
+ protected function failureDescription($other): string
+ {
+ return 'string matches format description';
+ }
+
+ protected function additionalFailureDescription($other): string
+ {
+ $from = explode("\n", $this->string);
+ $to = explode("\n", $this->convertNewlines($other));
+
+ foreach ($from as $index => $line) {
+ if (isset($to[$index]) && $line !== $to[$index]) {
+ $line = $this->createPatternFromFormat($line);
+
+ if (preg_match($line, $to[$index]) > 0) {
+ $from[$index] = $to[$index];
+ }
+ }
+ }
+
+ $this->string = implode("\n", $from);
+ $other = implode("\n", $to);
+
+ return (new Differ(new UnifiedDiffOutputBuilder("--- Expected\n+++ Actual\n")))->diff($this->string, $other);
+ }
+
+ private function createPatternFromFormat(string $string): string
+ {
+ $string = strtr(
+ preg_quote($string, '/'),
+ [
+ '%%' => '%',
+ '%e' => '\\' . DIRECTORY_SEPARATOR,
+ '%s' => '[^\r\n]+',
+ '%S' => '[^\r\n]*',
+ '%a' => '.+',
+ '%A' => '.*',
+ '%w' => '\s*',
+ '%i' => '[+-]?\d+',
+ '%d' => '\d+',
+ '%x' => '[0-9a-fA-F]+',
+ '%f' => '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?',
+ '%c' => '.',
+ ]
+ );
+
+ return '/^' . $string . '$/s';
+ }
+
+ private function convertNewlines(string $text): string
+ {
+ return preg_replace('/\r\n/', "\n", $text);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php
new file mode 100644
index 000000000..089545c12
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/String/StringStartsWith.php
@@ -0,0 +1,53 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function strlen;
+use function strpos;
+use PHPUnit\Framework\InvalidArgumentException;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class StringStartsWith extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $prefix;
+
+ public function __construct(string $prefix)
+ {
+ if (strlen($prefix) === 0) {
+ throw InvalidArgumentException::create(1, 'non-empty string');
+ }
+
+ $this->prefix = $prefix;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'starts with "' . $this->prefix . '"';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return strpos((string) $other, $this->prefix) === 0;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php
new file mode 100644
index 000000000..44cada3a7
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/ArrayHasKey.php
@@ -0,0 +1,77 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function array_key_exists;
+use function is_array;
+use ArrayAccess;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class ArrayHasKey extends Constraint
+{
+ /**
+ * @var int|string
+ */
+ private $key;
+
+ /**
+ * @param int|string $key
+ */
+ public function __construct($key)
+ {
+ $this->key = $key;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ return 'has the key ' . $this->exporter()->export($this->key);
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ if (is_array($other)) {
+ return array_key_exists($this->key, $other);
+ }
+
+ if ($other instanceof ArrayAccess) {
+ return $other->offsetExists($this->key);
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function failureDescription($other): string
+ {
+ return 'an array ' . $this->toString();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php
new file mode 100644
index 000000000..39660a985
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContains.php
@@ -0,0 +1,63 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function is_array;
+use function sprintf;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class TraversableContains extends Constraint
+{
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ return 'contains ' . $this->exporter()->export($this->value);
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function failureDescription($other): string
+ {
+ return sprintf(
+ '%s %s',
+ is_array($other) ? 'an array' : 'a traversable',
+ $this->toString()
+ );
+ }
+
+ protected function value()
+ {
+ return $this->value;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php
new file mode 100644
index 000000000..c315e709a
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsEqual.php
@@ -0,0 +1,40 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use SplObjectStorage;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class TraversableContainsEqual extends TraversableContains
+{
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ if ($other instanceof SplObjectStorage) {
+ return $other->contains($this->value());
+ }
+
+ foreach ($other as $element) {
+ /* @noinspection TypeUnsafeComparisonInspection */
+ if ($this->value() == $element) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php
new file mode 100644
index 000000000..a3437dbc9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsIdentical.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use SplObjectStorage;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class TraversableContainsIdentical extends TraversableContains
+{
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ if ($other instanceof SplObjectStorage) {
+ return $other->contains($this->value());
+ }
+
+ foreach ($other as $element) {
+ if ($this->value() === $element) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php
new file mode 100644
index 000000000..cf4a46b42
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Traversable/TraversableContainsOnly.php
@@ -0,0 +1,91 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use PHPUnit\Framework\ExpectationFailedException;
+use Traversable;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class TraversableContainsOnly extends Constraint
+{
+ /**
+ * @var Constraint
+ */
+ private $constraint;
+
+ /**
+ * @var string
+ */
+ private $type;
+
+ /**
+ * @throws \PHPUnit\Framework\Exception
+ */
+ public function __construct(string $type, bool $isNativeType = true)
+ {
+ if ($isNativeType) {
+ $this->constraint = new IsType($type);
+ } else {
+ $this->constraint = new IsInstanceOf(
+ $type
+ );
+ }
+
+ $this->type = $type;
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other.
+ *
+ * If $returnResult is set to false (the default), an exception is thrown
+ * in case of a failure. null is returned otherwise.
+ *
+ * If $returnResult is true, the result of the evaluation is returned as
+ * a boolean value instead: true in case of success, false in case of a
+ * failure.
+ *
+ * @param mixed|Traversable $other
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public function evaluate($other, string $description = '', bool $returnResult = false): ?bool
+ {
+ $success = true;
+
+ foreach ($other as $item) {
+ if (!$this->constraint->evaluate($item, '', true)) {
+ $success = false;
+
+ break;
+ }
+ }
+
+ if ($returnResult) {
+ return $success;
+ }
+
+ if (!$success) {
+ $this->fail($other, $description);
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'contains only values of type "' . $this->type . '"';
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php
new file mode 100644
index 000000000..f0fa02b99
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsInstanceOf.php
@@ -0,0 +1,87 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function sprintf;
+use ReflectionClass;
+use ReflectionException;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsInstanceOf extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $className;
+
+ public function __construct(string $className)
+ {
+ $this->className = $className;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return sprintf(
+ 'is instance of %s "%s"',
+ $this->getType(),
+ $this->className
+ );
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return $other instanceof $this->className;
+ }
+
+ /**
+ * Returns the description of the failure.
+ *
+ * The beginning of failure messages is "Failed asserting that" in most
+ * cases. This method should return the second part of that sentence.
+ *
+ * @param mixed $other evaluated value or object
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function failureDescription($other): string
+ {
+ return sprintf(
+ '%s is an instance of %s "%s"',
+ $this->exporter()->shortenedExport($other),
+ $this->getType(),
+ $this->className
+ );
+ }
+
+ private function getType(): string
+ {
+ try {
+ $reflection = new ReflectionClass($this->className);
+
+ if ($reflection->isInterface()) {
+ return 'interface';
+ }
+ } catch (ReflectionException $e) {
+ }
+
+ return 'class';
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php
new file mode 100644
index 000000000..b9fcdd7a7
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsNull.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsNull extends Constraint
+{
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return 'is null';
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ return $other === null;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php
new file mode 100644
index 000000000..5bc691d74
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Constraint/Type/IsType.php
@@ -0,0 +1,210 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Constraint;
+
+use function gettype;
+use function is_array;
+use function is_bool;
+use function is_callable;
+use function is_float;
+use function is_int;
+use function is_iterable;
+use function is_numeric;
+use function is_object;
+use function is_scalar;
+use function is_string;
+use function sprintf;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class IsType extends Constraint
+{
+ /**
+ * @var string
+ */
+ public const TYPE_ARRAY = 'array';
+
+ /**
+ * @var string
+ */
+ public const TYPE_BOOL = 'bool';
+
+ /**
+ * @var string
+ */
+ public const TYPE_FLOAT = 'float';
+
+ /**
+ * @var string
+ */
+ public const TYPE_INT = 'int';
+
+ /**
+ * @var string
+ */
+ public const TYPE_NULL = 'null';
+
+ /**
+ * @var string
+ */
+ public const TYPE_NUMERIC = 'numeric';
+
+ /**
+ * @var string
+ */
+ public const TYPE_OBJECT = 'object';
+
+ /**
+ * @var string
+ */
+ public const TYPE_RESOURCE = 'resource';
+
+ /**
+ * @var string
+ */
+ public const TYPE_CLOSED_RESOURCE = 'resource (closed)';
+
+ /**
+ * @var string
+ */
+ public const TYPE_STRING = 'string';
+
+ /**
+ * @var string
+ */
+ public const TYPE_SCALAR = 'scalar';
+
+ /**
+ * @var string
+ */
+ public const TYPE_CALLABLE = 'callable';
+
+ /**
+ * @var string
+ */
+ public const TYPE_ITERABLE = 'iterable';
+
+ /**
+ * @var array<string,bool>
+ */
+ private const KNOWN_TYPES = [
+ 'array' => true,
+ 'boolean' => true,
+ 'bool' => true,
+ 'double' => true,
+ 'float' => true,
+ 'integer' => true,
+ 'int' => true,
+ 'null' => true,
+ 'numeric' => true,
+ 'object' => true,
+ 'real' => true,
+ 'resource' => true,
+ 'resource (closed)' => true,
+ 'string' => true,
+ 'scalar' => true,
+ 'callable' => true,
+ 'iterable' => true,
+ ];
+
+ /**
+ * @var string
+ */
+ private $type;
+
+ /**
+ * @throws \PHPUnit\Framework\Exception
+ */
+ public function __construct(string $type)
+ {
+ if (!isset(self::KNOWN_TYPES[$type])) {
+ throw new \PHPUnit\Framework\Exception(
+ sprintf(
+ 'Type specified for PHPUnit\Framework\Constraint\IsType <%s> ' .
+ 'is not a valid type.',
+ $type
+ )
+ );
+ }
+
+ $this->type = $type;
+ }
+
+ /**
+ * Returns a string representation of the constraint.
+ */
+ public function toString(): string
+ {
+ return sprintf(
+ 'is of type "%s"',
+ $this->type
+ );
+ }
+
+ /**
+ * Evaluates the constraint for parameter $other. Returns true if the
+ * constraint is met, false otherwise.
+ *
+ * @param mixed $other value or object to evaluate
+ */
+ protected function matches($other): bool
+ {
+ switch ($this->type) {
+ case 'numeric':
+ return is_numeric($other);
+
+ case 'integer':
+ case 'int':
+ return is_int($other);
+
+ case 'double':
+ case 'float':
+ case 'real':
+ return is_float($other);
+
+ case 'string':
+ return is_string($other);
+
+ case 'boolean':
+ case 'bool':
+ return is_bool($other);
+
+ case 'null':
+ return null === $other;
+
+ case 'array':
+ return is_array($other);
+
+ case 'object':
+ return is_object($other);
+
+ case 'resource':
+ $type = gettype($other);
+
+ return $type === 'resource' || $type === 'resource (closed)';
+
+ case 'resource (closed)':
+ return gettype($other) === 'resource (closed)';
+
+ case 'scalar':
+ return is_scalar($other);
+
+ case 'callable':
+ return is_callable($other);
+
+ case 'iterable':
+ return is_iterable($other);
+
+ default:
+ return false;
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php b/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php
new file mode 100644
index 000000000..18b549996
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/DataProviderTestSuite.php
@@ -0,0 +1,75 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use function explode;
+use PHPUnit\Util\Test as TestUtil;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class DataProviderTestSuite extends TestSuite
+{
+ /**
+ * @var list<ExecutionOrderDependency>
+ */
+ private $dependencies = [];
+
+ /**
+ * @param list<ExecutionOrderDependency> $dependencies
+ */
+ public function setDependencies(array $dependencies): void
+ {
+ $this->dependencies = $dependencies;
+
+ foreach ($this->tests as $test) {
+ if (!$test instanceof TestCase) {
+ // @codeCoverageIgnoreStart
+ continue;
+ // @codeCoverageIgnoreStart
+ }
+ $test->setDependencies($dependencies);
+ }
+ }
+
+ /**
+ * @return list<ExecutionOrderDependency>
+ */
+ public function provides(): array
+ {
+ if ($this->providedTests === null) {
+ $this->providedTests = [new ExecutionOrderDependency($this->getName())];
+ }
+
+ return $this->providedTests;
+ }
+
+ /**
+ * @return list<ExecutionOrderDependency>
+ */
+ public function requires(): array
+ {
+ // A DataProviderTestSuite does not have to traverse its child tests
+ // as these are inherited and cannot reference dataProvider rows directly
+ return $this->dependencies;
+ }
+
+ /**
+ * Returns the size of the each test created using the data provider(s).
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function getSize(): int
+ {
+ [$className, $methodName] = explode('::', $this->getName());
+
+ return TestUtil::getSize($className, $methodName);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php b/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php
new file mode 100644
index 000000000..db62195f8
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Error/Deprecated.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Error;
+
+/**
+ * @internal
+ */
+final class Deprecated extends Error
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Error.php b/vendor/phpunit/phpunit/src/Framework/Error/Error.php
new file mode 100644
index 000000000..2990b360e
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Error/Error.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Error;
+
+use PHPUnit\Framework\Exception;
+
+/**
+ * @internal
+ */
+class Error extends Exception
+{
+ public function __construct(string $message, int $code, string $file, int $line, \Exception $previous = null)
+ {
+ parent::__construct($message, $code, $previous);
+
+ $this->file = $file;
+ $this->line = $line;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Notice.php b/vendor/phpunit/phpunit/src/Framework/Error/Notice.php
new file mode 100644
index 000000000..54e5e31ea
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Error/Notice.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Error;
+
+/**
+ * @internal
+ */
+final class Notice extends Error
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Error/Warning.php b/vendor/phpunit/phpunit/src/Framework/Error/Warning.php
new file mode 100644
index 000000000..0c0c0064f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Error/Warning.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\Error;
+
+/**
+ * @internal
+ */
+final class Warning extends Error
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/ErrorTestCase.php b/vendor/phpunit/phpunit/src/Framework/ErrorTestCase.php
new file mode 100644
index 000000000..841247d72
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/ErrorTestCase.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ErrorTestCase extends TestCase
+{
+ /**
+ * @var bool
+ */
+ protected $backupGlobals = false;
+
+ /**
+ * @var bool
+ */
+ protected $backupStaticAttributes = false;
+
+ /**
+ * @var bool
+ */
+ protected $runTestInSeparateProcess = false;
+
+ /**
+ * @var string
+ */
+ private $message;
+
+ public function __construct(string $message = '')
+ {
+ $this->message = $message;
+
+ parent::__construct('Error');
+ }
+
+ public function getMessage(): string
+ {
+ return $this->message;
+ }
+
+ /**
+ * Returns a string representation of the test case.
+ */
+ public function toString(): string
+ {
+ return 'Error';
+ }
+
+ /**
+ * @throws Exception
+ *
+ * @psalm-return never-return
+ */
+ protected function runTest(): void
+ {
+ throw new Error($this->message);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php
new file mode 100644
index 000000000..adae28294
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/ActualValueIsNotAnObjectException.php
@@ -0,0 +1,32 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use const PHP_EOL;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ActualValueIsNotAnObjectException extends Exception
+{
+ public function __construct()
+ {
+ parent::__construct(
+ 'Actual value is not an object',
+ 0,
+ null
+ );
+ }
+
+ public function __toString(): string
+ {
+ return $this->getMessage() . PHP_EOL;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php b/vendor/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php
new file mode 100644
index 000000000..0ba25286f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/AssertionFailedError.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class AssertionFailedError extends Exception implements SelfDescribing
+{
+ /**
+ * Wrapper for getMessage() which is declared as final.
+ */
+ public function toString(): string
+ {
+ return $this->getMessage();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php b/vendor/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php
new file mode 100644
index 000000000..36b072313
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/CodeCoverageException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class CodeCoverageException extends Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php
new file mode 100644
index 000000000..ebd68f34c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotAcceptParameterTypeException.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use const PHP_EOL;
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ComparisonMethodDoesNotAcceptParameterTypeException extends Exception
+{
+ public function __construct(string $className, string $methodName, string $type)
+ {
+ parent::__construct(
+ sprintf(
+ '%s is not an accepted argument type for comparison method %s::%s().',
+ $type,
+ $className,
+ $methodName
+ ),
+ 0,
+ null
+ );
+ }
+
+ public function __toString(): string
+ {
+ return $this->getMessage() . PHP_EOL;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php
new file mode 100644
index 000000000..20189cde4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareBoolReturnTypeException.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use const PHP_EOL;
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ComparisonMethodDoesNotDeclareBoolReturnTypeException extends Exception
+{
+ public function __construct(string $className, string $methodName)
+ {
+ parent::__construct(
+ sprintf(
+ 'Comparison method %s::%s() does not declare bool return type.',
+ $className,
+ $methodName
+ ),
+ 0,
+ null
+ );
+ }
+
+ public function __toString(): string
+ {
+ return $this->getMessage() . PHP_EOL;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php
new file mode 100644
index 000000000..bd09d87cc
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareExactlyOneParameterException.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use const PHP_EOL;
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ComparisonMethodDoesNotDeclareExactlyOneParameterException extends Exception
+{
+ public function __construct(string $className, string $methodName)
+ {
+ parent::__construct(
+ sprintf(
+ 'Comparison method %s::%s() does not declare exactly one parameter.',
+ $className,
+ $methodName
+ ),
+ 0,
+ null
+ );
+ }
+
+ public function __toString(): string
+ {
+ return $this->getMessage() . PHP_EOL;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php
new file mode 100644
index 000000000..9bbb112ea
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotDeclareParameterTypeException.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use const PHP_EOL;
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ComparisonMethodDoesNotDeclareParameterTypeException extends Exception
+{
+ public function __construct(string $className, string $methodName)
+ {
+ parent::__construct(
+ sprintf(
+ 'Parameter of comparison method %s::%s() does not have a declared type.',
+ $className,
+ $methodName
+ ),
+ 0,
+ null
+ );
+ }
+
+ public function __toString(): string
+ {
+ return $this->getMessage() . PHP_EOL;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php
new file mode 100644
index 000000000..ad0e2d088
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/ComparisonMethodDoesNotExistException.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use const PHP_EOL;
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ComparisonMethodDoesNotExistException extends Exception
+{
+ public function __construct(string $className, string $methodName)
+ {
+ parent::__construct(
+ sprintf(
+ 'Comparison method %s::%s() does not exist.',
+ $className,
+ $methodName
+ ),
+ 0,
+ null
+ );
+ }
+
+ public function __toString(): string
+ {
+ return $this->getMessage() . PHP_EOL;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php b/vendor/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php
new file mode 100644
index 000000000..78f89bc39
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/CoveredCodeNotExecutedException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class CoveredCodeNotExecutedException extends RiskyTestError
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/Error.php b/vendor/phpunit/phpunit/src/Framework/Exception/Error.php
new file mode 100644
index 000000000..d43e42186
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/Error.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Error extends Exception implements SelfDescribing
+{
+ /**
+ * Wrapper for getMessage() which is declared as final.
+ */
+ public function toString(): string
+ {
+ return $this->getMessage();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/Exception.php b/vendor/phpunit/phpunit/src/Framework/Exception/Exception.php
new file mode 100644
index 000000000..0b21e6de3
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/Exception.php
@@ -0,0 +1,81 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use function array_keys;
+use function get_object_vars;
+use PHPUnit\Util\Filter;
+use RuntimeException;
+use Throwable;
+
+/**
+ * Base class for all PHPUnit Framework exceptions.
+ *
+ * Ensures that exceptions thrown during a test run do not leave stray
+ * references behind.
+ *
+ * Every Exception contains a stack trace. Each stack frame contains the 'args'
+ * of the called function. The function arguments can contain references to
+ * instantiated objects. The references prevent the objects from being
+ * destructed (until test results are eventually printed), so memory cannot be
+ * freed up.
+ *
+ * With enabled process isolation, test results are serialized in the child
+ * process and unserialized in the parent process. The stack trace of Exceptions
+ * may contain objects that cannot be serialized or unserialized (e.g., PDO
+ * connections). Unserializing user-space objects from the child process into
+ * the parent would break the intended encapsulation of process isolation.
+ *
+ * @see http://fabien.potencier.org/article/9/php-serialization-stack-traces-and-exceptions
+ *
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class Exception extends RuntimeException implements \PHPUnit\Exception
+{
+ /**
+ * @var array
+ */
+ protected $serializableTrace;
+
+ public function __construct($message = '', $code = 0, Throwable $previous = null)
+ {
+ parent::__construct($message, $code, $previous);
+
+ $this->serializableTrace = $this->getTrace();
+
+ foreach (array_keys($this->serializableTrace) as $key) {
+ unset($this->serializableTrace[$key]['args']);
+ }
+ }
+
+ public function __toString(): string
+ {
+ $string = TestFailure::exceptionToString($this);
+
+ if ($trace = Filter::getFilteredStacktrace($this)) {
+ $string .= "\n" . $trace;
+ }
+
+ return $string;
+ }
+
+ public function __sleep(): array
+ {
+ return array_keys(get_object_vars($this));
+ }
+
+ /**
+ * Returns the serializable trace (without 'args').
+ */
+ public function getSerializableTrace(): array
+ {
+ return $this->serializableTrace;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php b/vendor/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php
new file mode 100644
index 000000000..b9a595a88
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/ExpectationFailedException.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use Exception;
+use SebastianBergmann\Comparator\ComparisonFailure;
+
+/**
+ * Exception for expectations which failed their check.
+ *
+ * The exception contains the error message and optionally a
+ * SebastianBergmann\Comparator\ComparisonFailure which is used to
+ * generate diff output of the failed expectations.
+ *
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ExpectationFailedException extends AssertionFailedError
+{
+ /**
+ * @var ComparisonFailure
+ */
+ protected $comparisonFailure;
+
+ public function __construct(string $message, ComparisonFailure $comparisonFailure = null, Exception $previous = null)
+ {
+ $this->comparisonFailure = $comparisonFailure;
+
+ parent::__construct($message, 0, $previous);
+ }
+
+ public function getComparisonFailure(): ?ComparisonFailure
+ {
+ return $this->comparisonFailure;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/IncompleteTestError.php b/vendor/phpunit/phpunit/src/Framework/Exception/IncompleteTestError.php
new file mode 100644
index 000000000..65f9c8bc3
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/IncompleteTestError.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class IncompleteTestError extends AssertionFailedError implements IncompleteTest
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php b/vendor/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php
new file mode 100644
index 000000000..77f580799
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/InvalidArgumentException.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use function debug_backtrace;
+use function in_array;
+use function lcfirst;
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvalidArgumentException extends Exception
+{
+ public static function create(int $argument, string $type): self
+ {
+ $stack = debug_backtrace();
+ $function = $stack[1]['function'];
+
+ if (isset($stack[1]['class'])) {
+ $function = sprintf('%s::%s', $stack[1]['class'], $stack[1]['function']);
+ }
+
+ return new self(
+ sprintf(
+ 'Argument #%d of %s() must be %s %s',
+ $argument,
+ $function,
+ in_array(lcfirst($type)[0], ['a', 'e', 'i', 'o', 'u'], true) ? 'an' : 'a',
+ $type
+ )
+ );
+ }
+
+ private function __construct(string $message = '', int $code = 0, \Exception $previous = null)
+ {
+ parent::__construct($message, $code, $previous);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php b/vendor/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php
new file mode 100644
index 000000000..ebf2994a9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/InvalidCoversTargetException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvalidCoversTargetException extends CodeCoverageException
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php b/vendor/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php
new file mode 100644
index 000000000..7e2ef24c6
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/InvalidDataProviderException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvalidDataProviderException extends Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/MissingCoversAnnotationException.php b/vendor/phpunit/phpunit/src/Framework/Exception/MissingCoversAnnotationException.php
new file mode 100644
index 000000000..567a6c4c5
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/MissingCoversAnnotationException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MissingCoversAnnotationException extends RiskyTestError
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php b/vendor/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php
new file mode 100644
index 000000000..7ef4153b0
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/NoChildTestSuiteException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class NoChildTestSuiteException extends Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/OutputError.php b/vendor/phpunit/phpunit/src/Framework/Exception/OutputError.php
new file mode 100644
index 000000000..1c8b37e56
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/OutputError.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class OutputError extends AssertionFailedError
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php b/vendor/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php
new file mode 100644
index 000000000..17126139f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/PHPTAssertionFailedError.php
@@ -0,0 +1,32 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class PHPTAssertionFailedError extends SyntheticError
+{
+ /**
+ * @var string
+ */
+ private $diff;
+
+ public function __construct(string $message, int $code, string $file, int $line, array $trace, string $diff)
+ {
+ parent::__construct($message, $code, $file, $line, $trace);
+ $this->diff = $diff;
+ }
+
+ public function getDiff(): string
+ {
+ return $this->diff;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php b/vendor/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php
new file mode 100644
index 000000000..a66552c0d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/RiskyTestError.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class RiskyTestError extends AssertionFailedError
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/SkippedTestError.php b/vendor/phpunit/phpunit/src/Framework/Exception/SkippedTestError.php
new file mode 100644
index 000000000..7d553dcf3
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/SkippedTestError.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class SkippedTestError extends AssertionFailedError implements SkippedTest
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/SkippedTestSuiteError.php b/vendor/phpunit/phpunit/src/Framework/Exception/SkippedTestSuiteError.php
new file mode 100644
index 000000000..5448508a1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/SkippedTestSuiteError.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class SkippedTestSuiteError extends AssertionFailedError implements SkippedTest
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/SyntheticError.php b/vendor/phpunit/phpunit/src/Framework/Exception/SyntheticError.php
new file mode 100644
index 000000000..c3124ba0c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/SyntheticError.php
@@ -0,0 +1,61 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class SyntheticError extends AssertionFailedError
+{
+ /**
+ * The synthetic file.
+ *
+ * @var string
+ */
+ protected $syntheticFile = '';
+
+ /**
+ * The synthetic line number.
+ *
+ * @var int
+ */
+ protected $syntheticLine = 0;
+
+ /**
+ * The synthetic trace.
+ *
+ * @var array
+ */
+ protected $syntheticTrace = [];
+
+ public function __construct(string $message, int $code, string $file, int $line, array $trace)
+ {
+ parent::__construct($message, $code);
+
+ $this->syntheticFile = $file;
+ $this->syntheticLine = $line;
+ $this->syntheticTrace = $trace;
+ }
+
+ public function getSyntheticFile(): string
+ {
+ return $this->syntheticFile;
+ }
+
+ public function getSyntheticLine(): int
+ {
+ return $this->syntheticLine;
+ }
+
+ public function getSyntheticTrace(): array
+ {
+ return $this->syntheticTrace;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/SyntheticSkippedError.php b/vendor/phpunit/phpunit/src/Framework/Exception/SyntheticSkippedError.php
new file mode 100644
index 000000000..f6e155d7b
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/SyntheticSkippedError.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class SyntheticSkippedError extends SyntheticError implements SkippedTest
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/UnintentionallyCoveredCodeError.php b/vendor/phpunit/phpunit/src/Framework/Exception/UnintentionallyCoveredCodeError.php
new file mode 100644
index 000000000..fcd1d8249
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/UnintentionallyCoveredCodeError.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class UnintentionallyCoveredCodeError extends RiskyTestError
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Exception/Warning.php b/vendor/phpunit/phpunit/src/Framework/Exception/Warning.php
new file mode 100644
index 000000000..35e94493c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Exception/Warning.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Warning extends Exception implements SelfDescribing
+{
+ /**
+ * Wrapper for getMessage() which is declared as final.
+ */
+ public function toString(): string
+ {
+ return $this->getMessage();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php b/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php
new file mode 100644
index 000000000..d1ff4abc6
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/ExceptionWrapper.php
@@ -0,0 +1,122 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use function array_keys;
+use function get_class;
+use function spl_object_hash;
+use PHPUnit\Util\Filter;
+use Throwable;
+
+/**
+ * Wraps Exceptions thrown by code under test.
+ *
+ * Re-instantiates Exceptions thrown by user-space code to retain their original
+ * class names, properties, and stack traces (but without arguments).
+ *
+ * Unlike PHPUnit\Framework\Exception, the complete stack of previous Exceptions
+ * is processed.
+ *
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ExceptionWrapper extends Exception
+{
+ /**
+ * @var string
+ */
+ protected $className;
+
+ /**
+ * @var null|ExceptionWrapper
+ */
+ protected $previous;
+
+ public function __construct(Throwable $t)
+ {
+ // PDOException::getCode() is a string.
+ // @see https://php.net/manual/en/class.pdoexception.php#95812
+ parent::__construct($t->getMessage(), (int) $t->getCode());
+
+ $this->setOriginalException($t);
+ }
+
+ public function __toString(): string
+ {
+ $string = TestFailure::exceptionToString($this);
+
+ if ($trace = Filter::getFilteredStacktrace($this)) {
+ $string .= "\n" . $trace;
+ }
+
+ if ($this->previous) {
+ $string .= "\nCaused by\n" . $this->previous;
+ }
+
+ return $string;
+ }
+
+ public function getClassName(): string
+ {
+ return $this->className;
+ }
+
+ public function getPreviousWrapped(): ?self
+ {
+ return $this->previous;
+ }
+
+ public function setClassName(string $className): void
+ {
+ $this->className = $className;
+ }
+
+ public function setOriginalException(Throwable $t): void
+ {
+ $this->originalException($t);
+
+ $this->className = get_class($t);
+ $this->file = $t->getFile();
+ $this->line = $t->getLine();
+
+ $this->serializableTrace = $t->getTrace();
+
+ foreach (array_keys($this->serializableTrace) as $key) {
+ unset($this->serializableTrace[$key]['args']);
+ }
+
+ if ($t->getPrevious()) {
+ $this->previous = new self($t->getPrevious());
+ }
+ }
+
+ public function getOriginalException(): ?Throwable
+ {
+ return $this->originalException();
+ }
+
+ /**
+ * Method to contain static originalException to exclude it from stacktrace to prevent the stacktrace contents,
+ * which can be quite big, from being garbage-collected, thus blocking memory until shutdown.
+ *
+ * Approach works both for var_dump() and var_export() and print_r().
+ */
+ private function originalException(Throwable $exceptionToStore = null): ?Throwable
+ {
+ static $originalExceptions;
+
+ $instanceId = spl_object_hash($this);
+
+ if ($exceptionToStore) {
+ $originalExceptions[$instanceId] = $exceptionToStore;
+ }
+
+ return $originalExceptions[$instanceId] ?? null;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php b/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php
new file mode 100644
index 000000000..09c343c16
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/ExecutionOrderDependency.php
@@ -0,0 +1,206 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use function array_filter;
+use function array_map;
+use function array_values;
+use function count;
+use function explode;
+use function in_array;
+use function strpos;
+use function trim;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ExecutionOrderDependency
+{
+ /**
+ * @var string
+ */
+ private $className = '';
+
+ /**
+ * @var string
+ */
+ private $methodName = '';
+
+ /**
+ * @var bool
+ */
+ private $useShallowClone = false;
+
+ /**
+ * @var bool
+ */
+ private $useDeepClone = false;
+
+ public static function createFromDependsAnnotation(string $className, string $annotation): self
+ {
+ // Split clone option and target
+ $parts = explode(' ', trim($annotation), 2);
+
+ if (count($parts) === 1) {
+ $cloneOption = '';
+ $target = $parts[0];
+ } else {
+ $cloneOption = $parts[0];
+ $target = $parts[1];
+ }
+
+ // Prefix provided class for targets assumed to be in scope
+ if ($target !== '' && strpos($target, '::') === false) {
+ $target = $className . '::' . $target;
+ }
+
+ return new self($target, null, $cloneOption);
+ }
+
+ /**
+ * @psalm-param list<ExecutionOrderDependency> $dependencies
+ *
+ * @psalm-return list<ExecutionOrderDependency>
+ */
+ public static function filterInvalid(array $dependencies): array
+ {
+ return array_values(
+ array_filter(
+ $dependencies,
+ static function (self $d)
+ {
+ return $d->isValid();
+ }
+ )
+ );
+ }
+
+ /**
+ * @psalm-param list<ExecutionOrderDependency> $existing
+ * @psalm-param list<ExecutionOrderDependency> $additional
+ *
+ * @psalm-return list<ExecutionOrderDependency>
+ */
+ public static function mergeUnique(array $existing, array $additional): array
+ {
+ $existingTargets = array_map(
+ static function ($dependency)
+ {
+ return $dependency->getTarget();
+ },
+ $existing
+ );
+
+ foreach ($additional as $dependency) {
+ if (in_array($dependency->getTarget(), $existingTargets, true)) {
+ continue;
+ }
+
+ $existingTargets[] = $dependency->getTarget();
+ $existing[] = $dependency;
+ }
+
+ return $existing;
+ }
+
+ /**
+ * @psalm-param list<ExecutionOrderDependency> $left
+ * @psalm-param list<ExecutionOrderDependency> $right
+ *
+ * @psalm-return list<ExecutionOrderDependency>
+ */
+ public static function diff(array $left, array $right): array
+ {
+ if ($right === []) {
+ return $left;
+ }
+
+ if ($left === []) {
+ return [];
+ }
+
+ $diff = [];
+ $rightTargets = array_map(
+ static function ($dependency)
+ {
+ return $dependency->getTarget();
+ },
+ $right
+ );
+
+ foreach ($left as $dependency) {
+ if (in_array($dependency->getTarget(), $rightTargets, true)) {
+ continue;
+ }
+
+ $diff[] = $dependency;
+ }
+
+ return $diff;
+ }
+
+ public function __construct(string $classOrCallableName, ?string $methodName = null, ?string $option = null)
+ {
+ if ($classOrCallableName === '') {
+ return;
+ }
+
+ if (strpos($classOrCallableName, '::') !== false) {
+ [$this->className, $this->methodName] = explode('::', $classOrCallableName);
+ } else {
+ $this->className = $classOrCallableName;
+ $this->methodName = !empty($methodName) ? $methodName : 'class';
+ }
+
+ if ($option === 'clone') {
+ $this->useDeepClone = true;
+ } elseif ($option === 'shallowClone') {
+ $this->useShallowClone = true;
+ }
+ }
+
+ public function __toString(): string
+ {
+ return $this->getTarget();
+ }
+
+ public function isValid(): bool
+ {
+ // Invalid dependencies can be declared and are skipped by the runner
+ return $this->className !== '' && $this->methodName !== '';
+ }
+
+ public function useShallowClone(): bool
+ {
+ return $this->useShallowClone;
+ }
+
+ public function useDeepClone(): bool
+ {
+ return $this->useDeepClone;
+ }
+
+ public function targetIsClass(): bool
+ {
+ return $this->methodName === 'class';
+ }
+
+ public function getTarget(): string
+ {
+ return $this->isValid()
+ ? $this->className . '::' . $this->methodName
+ : '';
+ }
+
+ public function getTargetClassName(): string
+ {
+ return $this->className;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php b/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php
new file mode 100644
index 000000000..b77b1afff
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/IncompleteTest.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface IncompleteTest extends Throwable
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php b/vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php
new file mode 100644
index 000000000..ee1e3e9fe
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/IncompleteTestCase.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class IncompleteTestCase extends TestCase
+{
+ /**
+ * @var bool
+ */
+ protected $backupGlobals = false;
+
+ /**
+ * @var bool
+ */
+ protected $backupStaticAttributes = false;
+
+ /**
+ * @var bool
+ */
+ protected $runTestInSeparateProcess = false;
+
+ /**
+ * @var string
+ */
+ private $message;
+
+ public function __construct(string $className, string $methodName, string $message = '')
+ {
+ parent::__construct($className . '::' . $methodName);
+
+ $this->message = $message;
+ }
+
+ public function getMessage(): string
+ {
+ return $this->message;
+ }
+
+ /**
+ * Returns a string representation of the test case.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ return $this->getName();
+ }
+
+ /**
+ * @throws Exception
+ */
+ protected function runTest(): void
+ {
+ $this->markTestIncomplete($this->message);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php b/vendor/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php
new file mode 100644
index 000000000..feb9cc989
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/InvalidParameterGroupException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvalidParameterGroupException extends Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Api.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Api.php
new file mode 100644
index 000000000..e2f0a2802
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Api.php
@@ -0,0 +1,97 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use PHPUnit\Framework\MockObject\Builder\InvocationMocker as InvocationMockerBuilder;
+use PHPUnit\Framework\MockObject\Rule\InvocationOrder;
+
+/**
+ * @internal This trait is not covered by the backward compatibility promise for PHPUnit
+ */
+trait Api
+{
+ /**
+ * @var ConfigurableMethod[]
+ */
+ private static $__phpunit_configurableMethods;
+
+ /**
+ * @var object
+ */
+ private $__phpunit_originalObject;
+
+ /**
+ * @var bool
+ */
+ private $__phpunit_returnValueGeneration = true;
+
+ /**
+ * @var InvocationHandler
+ */
+ private $__phpunit_invocationMocker;
+
+ /** @noinspection MagicMethodsValidityInspection */
+ public static function __phpunit_initConfigurableMethods(ConfigurableMethod ...$configurableMethods): void
+ {
+ if (isset(static::$__phpunit_configurableMethods)) {
+ throw new ConfigurableMethodsAlreadyInitializedException(
+ 'Configurable methods is already initialized and can not be reinitialized'
+ );
+ }
+
+ static::$__phpunit_configurableMethods = $configurableMethods;
+ }
+
+ /** @noinspection MagicMethodsValidityInspection */
+ public function __phpunit_setOriginalObject($originalObject): void
+ {
+ $this->__phpunit_originalObject = $originalObject;
+ }
+
+ /** @noinspection MagicMethodsValidityInspection */
+ public function __phpunit_setReturnValueGeneration(bool $returnValueGeneration): void
+ {
+ $this->__phpunit_returnValueGeneration = $returnValueGeneration;
+ }
+
+ /** @noinspection MagicMethodsValidityInspection */
+ public function __phpunit_getInvocationHandler(): InvocationHandler
+ {
+ if ($this->__phpunit_invocationMocker === null) {
+ $this->__phpunit_invocationMocker = new InvocationHandler(
+ static::$__phpunit_configurableMethods,
+ $this->__phpunit_returnValueGeneration
+ );
+ }
+
+ return $this->__phpunit_invocationMocker;
+ }
+
+ /** @noinspection MagicMethodsValidityInspection */
+ public function __phpunit_hasMatchers(): bool
+ {
+ return $this->__phpunit_getInvocationHandler()->hasMatchers();
+ }
+
+ /** @noinspection MagicMethodsValidityInspection */
+ public function __phpunit_verify(bool $unsetInvocationMocker = true): void
+ {
+ $this->__phpunit_getInvocationHandler()->verify();
+
+ if ($unsetInvocationMocker) {
+ $this->__phpunit_invocationMocker = null;
+ }
+ }
+
+ public function expects(InvocationOrder $matcher): InvocationMockerBuilder
+ {
+ return $this->__phpunit_getInvocationHandler()->expects($matcher);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Method.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Method.php
new file mode 100644
index 000000000..f6df7533c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/Method.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function call_user_func_array;
+use function func_get_args;
+use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount;
+
+/**
+ * @internal This trait is not covered by the backward compatibility promise for PHPUnit
+ */
+trait Method
+{
+ public function method()
+ {
+ $expects = $this->expects(new AnyInvokedCount);
+
+ return call_user_func_array(
+ [$expects, 'method'],
+ func_get_args()
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Api/MockedCloneMethod.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/MockedCloneMethod.php
new file mode 100644
index 000000000..91e35f937
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/MockedCloneMethod.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This trait is not covered by the backward compatibility promise for PHPUnit
+ */
+trait MockedCloneMethod
+{
+ public function __clone()
+ {
+ $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationHandler();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Api/UnmockedCloneMethod.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/UnmockedCloneMethod.php
new file mode 100644
index 000000000..3f493d203
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Api/UnmockedCloneMethod.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This trait is not covered by the backward compatibility promise for PHPUnit
+ */
+trait UnmockedCloneMethod
+{
+ public function __clone()
+ {
+ $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationHandler();
+
+ parent::__clone();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php
new file mode 100644
index 000000000..a68bfadf9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Identity.php
@@ -0,0 +1,25 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Builder;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface Identity
+{
+ /**
+ * Sets the identification of the expectation to $id.
+ *
+ * @note The identifier is unique per mock object.
+ *
+ * @param string $id unique identification of expectation
+ */
+ public function id($id);
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php
new file mode 100644
index 000000000..89b1e31ab
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationMocker.php
@@ -0,0 +1,306 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Builder;
+
+use function array_map;
+use function array_merge;
+use function count;
+use function in_array;
+use function is_string;
+use function strtolower;
+use PHPUnit\Framework\Constraint\Constraint;
+use PHPUnit\Framework\MockObject\ConfigurableMethod;
+use PHPUnit\Framework\MockObject\IncompatibleReturnValueException;
+use PHPUnit\Framework\MockObject\InvocationHandler;
+use PHPUnit\Framework\MockObject\Matcher;
+use PHPUnit\Framework\MockObject\MatcherAlreadyRegisteredException;
+use PHPUnit\Framework\MockObject\MethodCannotBeConfiguredException;
+use PHPUnit\Framework\MockObject\MethodNameAlreadyConfiguredException;
+use PHPUnit\Framework\MockObject\MethodNameNotConfiguredException;
+use PHPUnit\Framework\MockObject\MethodParametersAlreadyConfiguredException;
+use PHPUnit\Framework\MockObject\Rule;
+use PHPUnit\Framework\MockObject\Stub\ConsecutiveCalls;
+use PHPUnit\Framework\MockObject\Stub\Exception;
+use PHPUnit\Framework\MockObject\Stub\ReturnArgument;
+use PHPUnit\Framework\MockObject\Stub\ReturnCallback;
+use PHPUnit\Framework\MockObject\Stub\ReturnReference;
+use PHPUnit\Framework\MockObject\Stub\ReturnSelf;
+use PHPUnit\Framework\MockObject\Stub\ReturnStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnValueMap;
+use PHPUnit\Framework\MockObject\Stub\Stub;
+use Throwable;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvocationMocker implements InvocationStubber, MethodNameMatch
+{
+ /**
+ * @var InvocationHandler
+ */
+ private $invocationHandler;
+
+ /**
+ * @var Matcher
+ */
+ private $matcher;
+
+ /**
+ * @var ConfigurableMethod[]
+ */
+ private $configurableMethods;
+
+ public function __construct(InvocationHandler $handler, Matcher $matcher, ConfigurableMethod ...$configurableMethods)
+ {
+ $this->invocationHandler = $handler;
+ $this->matcher = $matcher;
+ $this->configurableMethods = $configurableMethods;
+ }
+
+ /**
+ * @throws MatcherAlreadyRegisteredException
+ *
+ * @return $this
+ */
+ public function id($id): self
+ {
+ $this->invocationHandler->registerMatcher($id, $this->matcher);
+
+ return $this;
+ }
+
+ /**
+ * @return $this
+ */
+ public function will(Stub $stub): Identity
+ {
+ $this->matcher->setStub($stub);
+
+ return $this;
+ }
+
+ /**
+ * @param mixed $value
+ * @param mixed[] $nextValues
+ *
+ * @throws IncompatibleReturnValueException
+ */
+ public function willReturn($value, ...$nextValues): self
+ {
+ if (count($nextValues) === 0) {
+ $this->ensureTypeOfReturnValues([$value]);
+
+ $stub = $value instanceof Stub ? $value : new ReturnStub($value);
+ } else {
+ $values = array_merge([$value], $nextValues);
+
+ $this->ensureTypeOfReturnValues($values);
+
+ $stub = new ConsecutiveCalls($values);
+ }
+
+ return $this->will($stub);
+ }
+
+ public function willReturnReference(&$reference): self
+ {
+ $stub = new ReturnReference($reference);
+
+ return $this->will($stub);
+ }
+
+ public function willReturnMap(array $valueMap): self
+ {
+ $stub = new ReturnValueMap($valueMap);
+
+ return $this->will($stub);
+ }
+
+ public function willReturnArgument($argumentIndex): self
+ {
+ $stub = new ReturnArgument($argumentIndex);
+
+ return $this->will($stub);
+ }
+
+ public function willReturnCallback($callback): self
+ {
+ $stub = new ReturnCallback($callback);
+
+ return $this->will($stub);
+ }
+
+ public function willReturnSelf(): self
+ {
+ $stub = new ReturnSelf;
+
+ return $this->will($stub);
+ }
+
+ public function willReturnOnConsecutiveCalls(...$values): self
+ {
+ $stub = new ConsecutiveCalls($values);
+
+ return $this->will($stub);
+ }
+
+ public function willThrowException(Throwable $exception): self
+ {
+ $stub = new Exception($exception);
+
+ return $this->will($stub);
+ }
+
+ /**
+ * @return $this
+ */
+ public function after($id): self
+ {
+ $this->matcher->setAfterMatchBuilderId($id);
+
+ return $this;
+ }
+
+ /**
+ * @param mixed[] $arguments
+ *
+ * @throws \PHPUnit\Framework\Exception
+ * @throws MethodNameNotConfiguredException
+ * @throws MethodParametersAlreadyConfiguredException
+ *
+ * @return $this
+ */
+ public function with(...$arguments): self
+ {
+ $this->ensureParametersCanBeConfigured();
+
+ $this->matcher->setParametersRule(new Rule\Parameters($arguments));
+
+ return $this;
+ }
+
+ /**
+ * @param array ...$arguments
+ *
+ * @throws \PHPUnit\Framework\Exception
+ * @throws MethodNameNotConfiguredException
+ * @throws MethodParametersAlreadyConfiguredException
+ *
+ * @return $this
+ */
+ public function withConsecutive(...$arguments): self
+ {
+ $this->ensureParametersCanBeConfigured();
+
+ $this->matcher->setParametersRule(new Rule\ConsecutiveParameters($arguments));
+
+ return $this;
+ }
+
+ /**
+ * @throws MethodNameNotConfiguredException
+ * @throws MethodParametersAlreadyConfiguredException
+ *
+ * @return $this
+ */
+ public function withAnyParameters(): self
+ {
+ $this->ensureParametersCanBeConfigured();
+
+ $this->matcher->setParametersRule(new Rule\AnyParameters);
+
+ return $this;
+ }
+
+ /**
+ * @param Constraint|string $constraint
+ *
+ * @throws \PHPUnit\Framework\InvalidArgumentException
+ * @throws MethodCannotBeConfiguredException
+ * @throws MethodNameAlreadyConfiguredException
+ *
+ * @return $this
+ */
+ public function method($constraint): self
+ {
+ if ($this->matcher->hasMethodNameRule()) {
+ throw new MethodNameAlreadyConfiguredException;
+ }
+
+ $configurableMethodNames = array_map(
+ static function (ConfigurableMethod $configurable)
+ {
+ return strtolower($configurable->getName());
+ },
+ $this->configurableMethods
+ );
+
+ if (is_string($constraint) && !in_array(strtolower($constraint), $configurableMethodNames, true)) {
+ throw new MethodCannotBeConfiguredException($constraint);
+ }
+
+ $this->matcher->setMethodNameRule(new Rule\MethodName($constraint));
+
+ return $this;
+ }
+
+ /**
+ * @throws MethodNameNotConfiguredException
+ * @throws MethodParametersAlreadyConfiguredException
+ */
+ private function ensureParametersCanBeConfigured(): void
+ {
+ if (!$this->matcher->hasMethodNameRule()) {
+ throw new MethodNameNotConfiguredException;
+ }
+
+ if ($this->matcher->hasParametersRule()) {
+ throw new MethodParametersAlreadyConfiguredException;
+ }
+ }
+
+ private function getConfiguredMethod(): ?ConfigurableMethod
+ {
+ $configuredMethod = null;
+
+ foreach ($this->configurableMethods as $configurableMethod) {
+ if ($this->matcher->getMethodNameRule()->matchesName($configurableMethod->getName())) {
+ if ($configuredMethod !== null) {
+ return null;
+ }
+
+ $configuredMethod = $configurableMethod;
+ }
+ }
+
+ return $configuredMethod;
+ }
+
+ /**
+ * @throws IncompatibleReturnValueException
+ */
+ private function ensureTypeOfReturnValues(array $values): void
+ {
+ $configuredMethod = $this->getConfiguredMethod();
+
+ if ($configuredMethod === null) {
+ return;
+ }
+
+ foreach ($values as $value) {
+ if (!$configuredMethod->mayReturn($value)) {
+ throw new IncompatibleReturnValueException(
+ $configuredMethod,
+ $value
+ );
+ }
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php
new file mode 100644
index 000000000..f32ff0e7c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/InvocationStubber.php
@@ -0,0 +1,65 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Builder;
+
+use PHPUnit\Framework\MockObject\Stub\Stub;
+use Throwable;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+interface InvocationStubber
+{
+ public function will(Stub $stub): Identity;
+
+ /** @return self */
+ public function willReturn($value, ...$nextValues)/*: self */;
+
+ /**
+ * @param mixed $reference
+ *
+ * @return self
+ */
+ public function willReturnReference(&$reference)/*: self */;
+
+ /**
+ * @param array<int, array<int, mixed>> $valueMap
+ *
+ * @return self
+ */
+ public function willReturnMap(array $valueMap)/*: self */;
+
+ /**
+ * @param int $argumentIndex
+ *
+ * @return self
+ */
+ public function willReturnArgument($argumentIndex)/*: self */;
+
+ /**
+ * @param callable $callback
+ *
+ * @return self
+ */
+ public function willReturnCallback($callback)/*: self */;
+
+ /** @return self */
+ public function willReturnSelf()/*: self */;
+
+ /**
+ * @param mixed $values
+ *
+ * @return self
+ */
+ public function willReturnOnConsecutiveCalls(...$values)/*: self */;
+
+ /** @return self */
+ public function willThrowException(Throwable $exception)/*: self */;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php
new file mode 100644
index 000000000..543d596cc
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/MethodNameMatch.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Builder;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface MethodNameMatch extends ParametersMatch
+{
+ /**
+ * Adds a new method name match and returns the parameter match object for
+ * further matching possibilities.
+ *
+ * @param \PHPUnit\Framework\Constraint\Constraint $constraint Constraint for matching method, if a string is passed it will use the PHPUnit_Framework_Constraint_IsEqual
+ *
+ * @return ParametersMatch
+ */
+ public function method($constraint);
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php
new file mode 100644
index 000000000..707d82551
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/ParametersMatch.php
@@ -0,0 +1,58 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Builder;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface ParametersMatch extends Stub
+{
+ /**
+ * Defines the expectation which must occur before the current is valid.
+ *
+ * @param string $id the identification of the expectation that should
+ * occur before this one
+ *
+ * @return Stub
+ */
+ public function after($id);
+
+ /**
+ * Sets the parameters to match for, each parameter to this function will
+ * be part of match. To perform specific matches or constraints create a
+ * new PHPUnit\Framework\Constraint\Constraint and use it for the parameter.
+ * If the parameter value is not a constraint it will use the
+ * PHPUnit\Framework\Constraint\IsEqual for the value.
+ *
+ * Some examples:
+ * <code>
+ * // match first parameter with value 2
+ * $b->with(2);
+ * // match first parameter with value 'smock' and second identical to 42
+ * $b->with('smock', new PHPUnit\Framework\Constraint\IsEqual(42));
+ * </code>
+ *
+ * @return ParametersMatch
+ */
+ public function with(...$arguments);
+
+ /**
+ * Sets a rule which allows any kind of parameters.
+ *
+ * Some examples:
+ * <code>
+ * // match any number of parameters
+ * $b->withAnyParameters();
+ * </code>
+ *
+ * @return ParametersMatch
+ */
+ public function withAnyParameters();
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php
new file mode 100644
index 000000000..d7cb78fc4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Builder/Stub.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Builder;
+
+use PHPUnit\Framework\MockObject\Stub\Stub as BaseStub;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface Stub extends Identity
+{
+ /**
+ * Stubs the matching method with the stub object $stub. Any invocations of
+ * the matched method will now be handled by the stub instead.
+ */
+ public function will(BaseStub $stub): Identity;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php b/vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php
new file mode 100644
index 000000000..4757dc637
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/ConfigurableMethod.php
@@ -0,0 +1,53 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use SebastianBergmann\Type\Type;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ConfigurableMethod
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var Type
+ */
+ private $returnType;
+
+ public function __construct(string $name, Type $returnType)
+ {
+ $this->name = $name;
+ $this->returnType = $returnType;
+ }
+
+ public function getName(): string
+ {
+ return $this->name;
+ }
+
+ public function mayReturn($value): bool
+ {
+ if ($value === null && $this->returnType->allowsNull()) {
+ return true;
+ }
+
+ return $this->returnType->isAssignable(Type::fromValue($value, false));
+ }
+
+ public function getReturnTypeDeclaration(): string
+ {
+ return $this->returnType->asString();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php
new file mode 100644
index 000000000..7e655e235
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/BadMethodCallException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class BadMethodCallException extends \BadMethodCallException implements Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php
new file mode 100644
index 000000000..0698870bc
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseAddMethodsException.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class CannotUseAddMethodsException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $type, string $methodName)
+ {
+ parent::__construct(
+ sprintf(
+ 'Trying to configure method "%s" with addMethods(), but it exists in class "%s". Use onlyMethods() for methods that exist in the class',
+ $methodName,
+ $type
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php
new file mode 100644
index 000000000..35a29b731
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/CannotUseOnlyMethodsException.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class CannotUseOnlyMethodsException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $type, string $methodName)
+ {
+ parent::__construct(
+ sprintf(
+ 'Trying to configure method "%s" with onlyMethods(), but it does not exist in class "%s". Use addMethods() for methods that do not exist in the class',
+ $methodName,
+ $type
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php
new file mode 100644
index 000000000..0ba9a187d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassAlreadyExistsException.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ClassAlreadyExistsException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $className)
+ {
+ parent::__construct(
+ sprintf(
+ 'Class "%s" already exists',
+ $className
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php
new file mode 100644
index 000000000..e648f0263
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ClassIsFinalException.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ClassIsFinalException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $className)
+ {
+ parent::__construct(
+ sprintf(
+ 'Class "%s" is declared "final" and cannot be doubled',
+ $className
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php
new file mode 100644
index 000000000..d12ac9973
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ConfigurableMethodsAlreadyInitializedException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ConfigurableMethodsAlreadyInitializedException extends \PHPUnit\Framework\Exception implements Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php
new file mode 100644
index 000000000..864523acb
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/DuplicateMethodException.php
@@ -0,0 +1,32 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class DuplicateMethodException extends \PHPUnit\Framework\Exception implements Exception
+{
+ /**
+ * @psalm-param list<string> $methods
+ */
+ public function __construct(array $methods)
+ {
+ parent::__construct(
+ sprintf(
+ 'Cannot double using a method list that contains duplicates: "%s" (duplicate: "%s")',
+ implode(', ', $methods),
+ implode(', ', array_unique(array_diff_assoc($methods, array_unique($methods))))
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php
new file mode 100644
index 000000000..5880bc033
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/Exception.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php
new file mode 100644
index 000000000..00febaf56
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/IncompatibleReturnValueException.php
@@ -0,0 +1,33 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class IncompatibleReturnValueException extends \PHPUnit\Framework\Exception implements Exception
+{
+ /**
+ * @param mixed $value
+ */
+ public function __construct(ConfigurableMethod $method, $value)
+ {
+ parent::__construct(
+ sprintf(
+ 'Method %s may not return value of type %s, its declared return type is "%s"',
+ $method->getName(),
+ is_object($value) ? get_class($value) : gettype($value),
+ $method->getReturnTypeDeclaration()
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php
new file mode 100644
index 000000000..d2444cf12
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/InvalidMethodNameException.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvalidMethodNameException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $method)
+ {
+ parent::__construct(
+ sprintf(
+ 'Cannot double method with invalid name "%s"',
+ $method
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php
new file mode 100644
index 000000000..c05b2bce6
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatchBuilderNotFoundException.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MatchBuilderNotFoundException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $id)
+ {
+ parent::__construct(
+ sprintf(
+ 'No builder found for match builder identification <%s>',
+ $id
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php
new file mode 100644
index 000000000..efcc13ed9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MatcherAlreadyRegisteredException.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MatcherAlreadyRegisteredException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $id)
+ {
+ parent::__construct(
+ sprintf(
+ 'Matcher with id <%s> is already registered',
+ $id
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php
new file mode 100644
index 000000000..707290439
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodCannotBeConfiguredException.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MethodCannotBeConfiguredException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $method)
+ {
+ parent::__construct(
+ sprintf(
+ 'Trying to configure method "%s" which cannot be configured because it does not exist, has not been specified, is final, or is static',
+ $method
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php
new file mode 100644
index 000000000..1e9f2c04c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameAlreadyConfiguredException.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MethodNameAlreadyConfiguredException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('Method name is already configured');
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php
new file mode 100644
index 000000000..89565b77e
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodNameNotConfiguredException.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MethodNameNotConfiguredException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('Method name is not configured');
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php
new file mode 100644
index 000000000..1609c6ffb
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/MethodParametersAlreadyConfiguredException.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MethodParametersAlreadyConfiguredException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('Method parameters already configured');
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php
new file mode 100644
index 000000000..ecb9b63cf
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/OriginalConstructorInvocationRequiredException.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class OriginalConstructorInvocationRequiredException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct('Proxying to original methods requires invoking the original constructor');
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php
new file mode 100644
index 000000000..d6319c694
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReflectionException.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use RuntimeException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ReflectionException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php
new file mode 100644
index 000000000..8121e369b
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/ReturnValueNotConfiguredException.php
@@ -0,0 +1,27 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ReturnValueNotConfiguredException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(Invocation $invocation)
+ {
+ parent::__construct(
+ sprintf(
+ 'Return value inference disabled and no expectation set up for %s::%s()',
+ $invocation->getClassName(),
+ $invocation->getMethodName()
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php
new file mode 100644
index 000000000..33b6a5be3
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/RuntimeException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class RuntimeException extends \RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php
new file mode 100644
index 000000000..98837c954
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/SoapExtensionNotAvailableException.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class SoapExtensionNotAvailableException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct()
+ {
+ parent::__construct(
+ 'The SOAP extension is required to generate a test double from WSDL'
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php
new file mode 100644
index 000000000..e124f9b18
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownClassException.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class UnknownClassException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $className)
+ {
+ parent::__construct(
+ sprintf(
+ 'Class "%s" does not exist',
+ $className
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php
new file mode 100644
index 000000000..90fc8d848
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTraitException.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class UnknownTraitException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $traitName)
+ {
+ parent::__construct(
+ sprintf(
+ 'Trait "%s" does not exist',
+ $traitName
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php
new file mode 100644
index 000000000..b1a70edd6
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Exception/UnknownTypeException.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class UnknownTypeException extends \PHPUnit\Framework\Exception implements Exception
+{
+ public function __construct(string $type)
+ {
+ parent::__construct(
+ sprintf(
+ 'Class or interface "%s" does not exist',
+ $type
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php
new file mode 100644
index 000000000..cb8531cd3
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator.php
@@ -0,0 +1,1004 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use const DIRECTORY_SEPARATOR;
+use const PHP_EOL;
+use const PHP_MAJOR_VERSION;
+use const PREG_OFFSET_CAPTURE;
+use const WSDL_CACHE_NONE;
+use function array_merge;
+use function array_pop;
+use function array_unique;
+use function class_exists;
+use function count;
+use function explode;
+use function extension_loaded;
+use function implode;
+use function in_array;
+use function interface_exists;
+use function is_array;
+use function is_object;
+use function md5;
+use function mt_rand;
+use function preg_match;
+use function preg_match_all;
+use function range;
+use function serialize;
+use function sort;
+use function sprintf;
+use function str_replace;
+use function strlen;
+use function strpos;
+use function strtolower;
+use function substr;
+use function trait_exists;
+use Doctrine\Instantiator\Exception\ExceptionInterface as InstantiatorException;
+use Doctrine\Instantiator\Instantiator;
+use Exception;
+use Iterator;
+use IteratorAggregate;
+use PHPUnit\Framework\InvalidArgumentException;
+use ReflectionClass;
+use ReflectionMethod;
+use SebastianBergmann\Template\Exception as TemplateException;
+use SebastianBergmann\Template\Template;
+use SoapClient;
+use SoapFault;
+use Throwable;
+use Traversable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Generator
+{
+ /**
+ * @var array
+ */
+ private const EXCLUDED_METHOD_NAMES = [
+ '__CLASS__' => true,
+ '__DIR__' => true,
+ '__FILE__' => true,
+ '__FUNCTION__' => true,
+ '__LINE__' => true,
+ '__METHOD__' => true,
+ '__NAMESPACE__' => true,
+ '__TRAIT__' => true,
+ '__clone' => true,
+ '__halt_compiler' => true,
+ ];
+
+ /**
+ * @var array
+ */
+ private static $cache = [];
+
+ /**
+ * @var Template[]
+ */
+ private static $templates = [];
+
+ /**
+ * Returns a mock object for the specified class.
+ *
+ * @param null|array $methods
+ *
+ * @throws \PHPUnit\Framework\InvalidArgumentException
+ * @throws ClassAlreadyExistsException
+ * @throws ClassIsFinalException
+ * @throws DuplicateMethodException
+ * @throws InvalidMethodNameException
+ * @throws OriginalConstructorInvocationRequiredException
+ * @throws ReflectionException
+ * @throws RuntimeException
+ * @throws UnknownTypeException
+ */
+ public function getMock(string $type, $methods = [], array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, bool $cloneArguments = true, bool $callOriginalMethods = false, object $proxyTarget = null, bool $allowMockingUnknownTypes = true, bool $returnValueGeneration = true): MockObject
+ {
+ if (!is_array($methods) && null !== $methods) {
+ throw InvalidArgumentException::create(2, 'array');
+ }
+
+ if ($type === 'Traversable' || $type === '\\Traversable') {
+ $type = 'Iterator';
+ }
+
+ if (!$allowMockingUnknownTypes && !class_exists($type, $callAutoload) && !interface_exists($type, $callAutoload)) {
+ throw new UnknownTypeException($type);
+ }
+
+ if (null !== $methods) {
+ foreach ($methods as $method) {
+ if (!preg_match('~[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*~', (string) $method)) {
+ throw new InvalidMethodNameException((string) $method);
+ }
+ }
+
+ if ($methods !== array_unique($methods)) {
+ throw new DuplicateMethodException($methods);
+ }
+ }
+
+ if ($mockClassName !== '' && class_exists($mockClassName, false)) {
+ try {
+ $reflector = new ReflectionClass($mockClassName);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if (!$reflector->implementsInterface(MockObject::class)) {
+ throw new ClassAlreadyExistsException($mockClassName);
+ }
+ }
+
+ if (!$callOriginalConstructor && $callOriginalMethods) {
+ throw new OriginalConstructorInvocationRequiredException;
+ }
+
+ $mock = $this->generate(
+ $type,
+ $methods,
+ $mockClassName,
+ $callOriginalClone,
+ $callAutoload,
+ $cloneArguments,
+ $callOriginalMethods
+ );
+
+ return $this->getObject(
+ $mock,
+ $type,
+ $callOriginalConstructor,
+ $callAutoload,
+ $arguments,
+ $callOriginalMethods,
+ $proxyTarget,
+ $returnValueGeneration
+ );
+ }
+
+ /**
+ * Returns a mock object for the specified abstract class with all abstract
+ * methods of the class mocked.
+ *
+ * Concrete methods to mock can be specified with the $mockedMethods parameter.
+ *
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType> $originalClassName
+ * @psalm-return MockObject&RealInstanceType
+ *
+ * @throws \PHPUnit\Framework\InvalidArgumentException
+ * @throws ClassAlreadyExistsException
+ * @throws ClassIsFinalException
+ * @throws DuplicateMethodException
+ * @throws InvalidMethodNameException
+ * @throws OriginalConstructorInvocationRequiredException
+ * @throws ReflectionException
+ * @throws RuntimeException
+ * @throws UnknownClassException
+ * @throws UnknownTypeException
+ */
+ public function getMockForAbstractClass(string $originalClassName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, array $mockedMethods = null, bool $cloneArguments = true): MockObject
+ {
+ if (class_exists($originalClassName, $callAutoload) ||
+ interface_exists($originalClassName, $callAutoload)) {
+ try {
+ $reflector = new ReflectionClass($originalClassName);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $methods = $mockedMethods;
+
+ foreach ($reflector->getMethods() as $method) {
+ if ($method->isAbstract() && !in_array($method->getName(), $methods ?? [], true)) {
+ $methods[] = $method->getName();
+ }
+ }
+
+ if (empty($methods)) {
+ $methods = null;
+ }
+
+ return $this->getMock(
+ $originalClassName,
+ $methods,
+ $arguments,
+ $mockClassName,
+ $callOriginalConstructor,
+ $callOriginalClone,
+ $callAutoload,
+ $cloneArguments
+ );
+ }
+
+ throw new UnknownClassException($originalClassName);
+ }
+
+ /**
+ * Returns a mock object for the specified trait with all abstract methods
+ * of the trait mocked. Concrete methods to mock can be specified with the
+ * `$mockedMethods` parameter.
+ *
+ * @psalm-param trait-string $traitName
+ *
+ * @throws \PHPUnit\Framework\InvalidArgumentException
+ * @throws ClassAlreadyExistsException
+ * @throws ClassIsFinalException
+ * @throws DuplicateMethodException
+ * @throws InvalidMethodNameException
+ * @throws OriginalConstructorInvocationRequiredException
+ * @throws ReflectionException
+ * @throws RuntimeException
+ * @throws UnknownClassException
+ * @throws UnknownTraitException
+ * @throws UnknownTypeException
+ */
+ public function getMockForTrait(string $traitName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, array $mockedMethods = null, bool $cloneArguments = true): MockObject
+ {
+ if (!trait_exists($traitName, $callAutoload)) {
+ throw new UnknownTraitException($traitName);
+ }
+
+ $className = $this->generateClassName(
+ $traitName,
+ '',
+ 'Trait_'
+ );
+
+ $classTemplate = $this->getTemplate('trait_class.tpl');
+
+ $classTemplate->setVar(
+ [
+ 'prologue' => 'abstract ',
+ 'class_name' => $className['className'],
+ 'trait_name' => $traitName,
+ ]
+ );
+
+ $mockTrait = new MockTrait($classTemplate->render(), $className['className']);
+ $mockTrait->generate();
+
+ return $this->getMockForAbstractClass($className['className'], $arguments, $mockClassName, $callOriginalConstructor, $callOriginalClone, $callAutoload, $mockedMethods, $cloneArguments);
+ }
+
+ /**
+ * Returns an object for the specified trait.
+ *
+ * @psalm-param trait-string $traitName
+ *
+ * @throws ReflectionException
+ * @throws RuntimeException
+ * @throws UnknownTraitException
+ */
+ public function getObjectForTrait(string $traitName, string $traitClassName = '', bool $callAutoload = true, bool $callOriginalConstructor = false, array $arguments = []): object
+ {
+ if (!trait_exists($traitName, $callAutoload)) {
+ throw new UnknownTraitException($traitName);
+ }
+
+ $className = $this->generateClassName(
+ $traitName,
+ $traitClassName,
+ 'Trait_'
+ );
+
+ $classTemplate = $this->getTemplate('trait_class.tpl');
+
+ $classTemplate->setVar(
+ [
+ 'prologue' => '',
+ 'class_name' => $className['className'],
+ 'trait_name' => $traitName,
+ ]
+ );
+
+ return $this->getObject(
+ new MockTrait(
+ $classTemplate->render(),
+ $className['className']
+ ),
+ '',
+ $callOriginalConstructor,
+ $callAutoload,
+ $arguments
+ );
+ }
+
+ /**
+ * @throws ClassIsFinalException
+ * @throws ReflectionException
+ * @throws RuntimeException
+ */
+ public function generate(string $type, array $methods = null, string $mockClassName = '', bool $callOriginalClone = true, bool $callAutoload = true, bool $cloneArguments = true, bool $callOriginalMethods = false): MockClass
+ {
+ if ($mockClassName !== '') {
+ return $this->generateMock(
+ $type,
+ $methods,
+ $mockClassName,
+ $callOriginalClone,
+ $callAutoload,
+ $cloneArguments,
+ $callOriginalMethods
+ );
+ }
+
+ $key = md5(
+ $type .
+ serialize($methods) .
+ serialize($callOriginalClone) .
+ serialize($cloneArguments) .
+ serialize($callOriginalMethods)
+ );
+
+ if (!isset(self::$cache[$key])) {
+ self::$cache[$key] = $this->generateMock(
+ $type,
+ $methods,
+ $mockClassName,
+ $callOriginalClone,
+ $callAutoload,
+ $cloneArguments,
+ $callOriginalMethods
+ );
+ }
+
+ return self::$cache[$key];
+ }
+
+ /**
+ * @throws RuntimeException
+ * @throws SoapExtensionNotAvailableException
+ */
+ public function generateClassFromWsdl(string $wsdlFile, string $className, array $methods = [], array $options = []): string
+ {
+ if (!extension_loaded('soap')) {
+ throw new SoapExtensionNotAvailableException;
+ }
+
+ $options = array_merge($options, ['cache_wsdl' => WSDL_CACHE_NONE]);
+
+ try {
+ $client = new SoapClient($wsdlFile, $options);
+ $_methods = array_unique($client->__getFunctions());
+ unset($client);
+ } catch (SoapFault $e) {
+ throw new RuntimeException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+
+ sort($_methods);
+
+ $methodTemplate = $this->getTemplate('wsdl_method.tpl');
+ $methodsBuffer = '';
+
+ foreach ($_methods as $method) {
+ preg_match_all('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*\(/', $method, $matches, PREG_OFFSET_CAPTURE);
+ $lastFunction = array_pop($matches[0]);
+ $nameStart = $lastFunction[1];
+ $nameEnd = $nameStart + strlen($lastFunction[0]) - 1;
+ $name = str_replace('(', '', $lastFunction[0]);
+
+ if (empty($methods) || in_array($name, $methods, true)) {
+ $args = explode(
+ ',',
+ str_replace(')', '', substr($method, $nameEnd + 1))
+ );
+
+ foreach (range(0, count($args) - 1) as $i) {
+ $parameterStart = strpos($args[$i], '$');
+
+ if (!$parameterStart) {
+ continue;
+ }
+
+ $args[$i] = substr($args[$i], $parameterStart);
+ }
+
+ $methodTemplate->setVar(
+ [
+ 'method_name' => $name,
+ 'arguments' => implode(', ', $args),
+ ]
+ );
+
+ $methodsBuffer .= $methodTemplate->render();
+ }
+ }
+
+ $optionsBuffer = '[';
+
+ foreach ($options as $key => $value) {
+ $optionsBuffer .= $key . ' => ' . $value;
+ }
+
+ $optionsBuffer .= ']';
+
+ $classTemplate = $this->getTemplate('wsdl_class.tpl');
+ $namespace = '';
+
+ if (strpos($className, '\\') !== false) {
+ $parts = explode('\\', $className);
+ $className = array_pop($parts);
+ $namespace = 'namespace ' . implode('\\', $parts) . ';' . "\n\n";
+ }
+
+ $classTemplate->setVar(
+ [
+ 'namespace' => $namespace,
+ 'class_name' => $className,
+ 'wsdl' => $wsdlFile,
+ 'options' => $optionsBuffer,
+ 'methods' => $methodsBuffer,
+ ]
+ );
+
+ return $classTemplate->render();
+ }
+
+ /**
+ * @throws ReflectionException
+ *
+ * @return string[]
+ */
+ public function getClassMethods(string $className): array
+ {
+ try {
+ $class = new ReflectionClass($className);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $methods = [];
+
+ foreach ($class->getMethods() as $method) {
+ if ($method->isPublic() || $method->isAbstract()) {
+ $methods[] = $method->getName();
+ }
+ }
+
+ return $methods;
+ }
+
+ /**
+ * @throws ReflectionException
+ *
+ * @return MockMethod[]
+ */
+ public function mockClassMethods(string $className, bool $callOriginalMethods, bool $cloneArguments): array
+ {
+ try {
+ $class = new ReflectionClass($className);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $methods = [];
+
+ foreach ($class->getMethods() as $method) {
+ if (($method->isPublic() || $method->isAbstract()) && $this->canMockMethod($method)) {
+ $methods[] = MockMethod::fromReflection($method, $callOriginalMethods, $cloneArguments);
+ }
+ }
+
+ return $methods;
+ }
+
+ /**
+ * @throws ReflectionException
+ *
+ * @return MockMethod[]
+ */
+ public function mockInterfaceMethods(string $interfaceName, bool $cloneArguments): array
+ {
+ try {
+ $class = new ReflectionClass($interfaceName);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $methods = [];
+
+ foreach ($class->getMethods() as $method) {
+ $methods[] = MockMethod::fromReflection($method, false, $cloneArguments);
+ }
+
+ return $methods;
+ }
+
+ /**
+ * @psalm-param class-string $interfaceName
+ *
+ * @throws ReflectionException
+ *
+ * @return ReflectionMethod[]
+ */
+ private function userDefinedInterfaceMethods(string $interfaceName): array
+ {
+ try {
+ // @codeCoverageIgnoreStart
+ $interface = new ReflectionClass($interfaceName);
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $methods = [];
+
+ foreach ($interface->getMethods() as $method) {
+ if (!$method->isUserDefined()) {
+ continue;
+ }
+
+ $methods[] = $method;
+ }
+
+ return $methods;
+ }
+
+ /**
+ * @throws ReflectionException
+ * @throws RuntimeException
+ */
+ private function getObject(MockType $mockClass, $type = '', bool $callOriginalConstructor = false, bool $callAutoload = false, array $arguments = [], bool $callOriginalMethods = false, object $proxyTarget = null, bool $returnValueGeneration = true)
+ {
+ $className = $mockClass->generate();
+
+ if ($callOriginalConstructor) {
+ if (count($arguments) === 0) {
+ $object = new $className;
+ } else {
+ try {
+ $class = new ReflectionClass($className);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $object = $class->newInstanceArgs($arguments);
+ }
+ } else {
+ try {
+ $object = (new Instantiator)->instantiate($className);
+ } catch (InstantiatorException $e) {
+ throw new RuntimeException($e->getMessage());
+ }
+ }
+
+ if ($callOriginalMethods) {
+ if (!is_object($proxyTarget)) {
+ if (count($arguments) === 0) {
+ $proxyTarget = new $type;
+ } else {
+ try {
+ $class = new ReflectionClass($type);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $proxyTarget = $class->newInstanceArgs($arguments);
+ }
+ }
+
+ $object->__phpunit_setOriginalObject($proxyTarget);
+ }
+
+ if ($object instanceof MockObject) {
+ $object->__phpunit_setReturnValueGeneration($returnValueGeneration);
+ }
+
+ return $object;
+ }
+
+ /**
+ * @throws ClassIsFinalException
+ * @throws ReflectionException
+ * @throws RuntimeException
+ */
+ private function generateMock(string $type, ?array $explicitMethods, string $mockClassName, bool $callOriginalClone, bool $callAutoload, bool $cloneArguments, bool $callOriginalMethods): MockClass
+ {
+ $classTemplate = $this->getTemplate('mocked_class.tpl');
+ $additionalInterfaces = [];
+ $mockedCloneMethod = false;
+ $unmockedCloneMethod = false;
+ $isClass = false;
+ $isInterface = false;
+ $class = null;
+ $mockMethods = new MockMethodSet;
+
+ $_mockClassName = $this->generateClassName(
+ $type,
+ $mockClassName,
+ 'Mock_'
+ );
+
+ if (class_exists($_mockClassName['fullClassName'], $callAutoload)) {
+ $isClass = true;
+ } elseif (interface_exists($_mockClassName['fullClassName'], $callAutoload)) {
+ $isInterface = true;
+ }
+
+ if (!$isClass && !$isInterface) {
+ $prologue = 'class ' . $_mockClassName['originalClassName'] . "\n{\n}\n\n";
+
+ if (!empty($_mockClassName['namespaceName'])) {
+ $prologue = 'namespace ' . $_mockClassName['namespaceName'] .
+ " {\n\n" . $prologue . "}\n\n" .
+ "namespace {\n\n";
+
+ $epilogue = "\n\n}";
+ }
+
+ $mockedCloneMethod = true;
+ } else {
+ try {
+ $class = new ReflectionClass($_mockClassName['fullClassName']);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if ($class->isFinal()) {
+ throw new ClassIsFinalException($_mockClassName['fullClassName']);
+ }
+
+ // @see https://github.com/sebastianbergmann/phpunit/issues/2995
+ if ($isInterface && $class->implementsInterface(Throwable::class)) {
+ $actualClassName = Exception::class;
+ $additionalInterfaces[] = $class->getName();
+ $isInterface = false;
+
+ try {
+ $class = new ReflectionClass($actualClassName);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ foreach ($this->userDefinedInterfaceMethods($_mockClassName['fullClassName']) as $method) {
+ $methodName = $method->getName();
+
+ if ($class->hasMethod($methodName)) {
+ try {
+ $classMethod = $class->getMethod($methodName);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if (!$this->canMockMethod($classMethod)) {
+ continue;
+ }
+ }
+
+ $mockMethods->addMethods(
+ MockMethod::fromReflection($method, $callOriginalMethods, $cloneArguments)
+ );
+ }
+
+ $_mockClassName = $this->generateClassName(
+ $actualClassName,
+ $_mockClassName['className'],
+ 'Mock_'
+ );
+ }
+
+ // @see https://github.com/sebastianbergmann/phpunit-mock-objects/issues/103
+ if ($isInterface && $class->implementsInterface(Traversable::class) &&
+ !$class->implementsInterface(Iterator::class) &&
+ !$class->implementsInterface(IteratorAggregate::class)) {
+ $additionalInterfaces[] = Iterator::class;
+
+ $mockMethods->addMethods(
+ ...$this->mockClassMethods(Iterator::class, $callOriginalMethods, $cloneArguments)
+ );
+ }
+
+ if ($class->hasMethod('__clone')) {
+ try {
+ $cloneMethod = $class->getMethod('__clone');
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if (!$cloneMethod->isFinal()) {
+ if ($callOriginalClone && !$isInterface) {
+ $unmockedCloneMethod = true;
+ } else {
+ $mockedCloneMethod = true;
+ }
+ }
+ } else {
+ $mockedCloneMethod = true;
+ }
+ }
+
+ if ($isClass && $explicitMethods === []) {
+ $mockMethods->addMethods(
+ ...$this->mockClassMethods($_mockClassName['fullClassName'], $callOriginalMethods, $cloneArguments)
+ );
+ }
+
+ if ($isInterface && ($explicitMethods === [] || $explicitMethods === null)) {
+ $mockMethods->addMethods(
+ ...$this->mockInterfaceMethods($_mockClassName['fullClassName'], $cloneArguments)
+ );
+ }
+
+ if (is_array($explicitMethods)) {
+ foreach ($explicitMethods as $methodName) {
+ if ($class !== null && $class->hasMethod($methodName)) {
+ try {
+ $method = $class->getMethod($methodName);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if ($this->canMockMethod($method)) {
+ $mockMethods->addMethods(
+ MockMethod::fromReflection($method, $callOriginalMethods, $cloneArguments)
+ );
+ }
+ } else {
+ $mockMethods->addMethods(
+ MockMethod::fromName(
+ $_mockClassName['fullClassName'],
+ $methodName,
+ $cloneArguments
+ )
+ );
+ }
+ }
+ }
+
+ $mockedMethods = '';
+ $configurable = [];
+
+ foreach ($mockMethods->asArray() as $mockMethod) {
+ $mockedMethods .= $mockMethod->generateCode();
+ $configurable[] = new ConfigurableMethod($mockMethod->getName(), $mockMethod->getReturnType());
+ }
+
+ $method = '';
+
+ if (!$mockMethods->hasMethod('method') && (!isset($class) || !$class->hasMethod('method'))) {
+ $method = PHP_EOL . ' use \PHPUnit\Framework\MockObject\Method;';
+ }
+
+ $cloneTrait = '';
+
+ if ($mockedCloneMethod) {
+ $cloneTrait = PHP_EOL . ' use \PHPUnit\Framework\MockObject\MockedCloneMethod;';
+ }
+
+ if ($unmockedCloneMethod) {
+ $cloneTrait = PHP_EOL . ' use \PHPUnit\Framework\MockObject\UnmockedCloneMethod;';
+ }
+
+ $classTemplate->setVar(
+ [
+ 'prologue' => $prologue ?? '',
+ 'epilogue' => $epilogue ?? '',
+ 'class_declaration' => $this->generateMockClassDeclaration(
+ $_mockClassName,
+ $isInterface,
+ $additionalInterfaces
+ ),
+ 'clone' => $cloneTrait,
+ 'mock_class_name' => $_mockClassName['className'],
+ 'mocked_methods' => $mockedMethods,
+ 'method' => $method,
+ ]
+ );
+
+ return new MockClass(
+ $classTemplate->render(),
+ $_mockClassName['className'],
+ $configurable
+ );
+ }
+
+ private function generateClassName(string $type, string $className, string $prefix): array
+ {
+ if ($type[0] === '\\') {
+ $type = substr($type, 1);
+ }
+
+ $classNameParts = explode('\\', $type);
+
+ if (count($classNameParts) > 1) {
+ $type = array_pop($classNameParts);
+ $namespaceName = implode('\\', $classNameParts);
+ $fullClassName = $namespaceName . '\\' . $type;
+ } else {
+ $namespaceName = '';
+ $fullClassName = $type;
+ }
+
+ if ($className === '') {
+ do {
+ $className = $prefix . $type . '_' .
+ substr(md5((string) mt_rand()), 0, 8);
+ } while (class_exists($className, false));
+ }
+
+ return [
+ 'className' => $className,
+ 'originalClassName' => $type,
+ 'fullClassName' => $fullClassName,
+ 'namespaceName' => $namespaceName,
+ ];
+ }
+
+ private function generateMockClassDeclaration(array $mockClassName, bool $isInterface, array $additionalInterfaces = []): string
+ {
+ $buffer = 'class ';
+
+ $additionalInterfaces[] = MockObject::class;
+ $interfaces = implode(', ', $additionalInterfaces);
+
+ if ($isInterface) {
+ $buffer .= sprintf(
+ '%s implements %s',
+ $mockClassName['className'],
+ $interfaces
+ );
+
+ if (!in_array($mockClassName['originalClassName'], $additionalInterfaces, true)) {
+ $buffer .= ', ';
+
+ if (!empty($mockClassName['namespaceName'])) {
+ $buffer .= $mockClassName['namespaceName'] . '\\';
+ }
+
+ $buffer .= $mockClassName['originalClassName'];
+ }
+ } else {
+ $buffer .= sprintf(
+ '%s extends %s%s implements %s',
+ $mockClassName['className'],
+ !empty($mockClassName['namespaceName']) ? $mockClassName['namespaceName'] . '\\' : '',
+ $mockClassName['originalClassName'],
+ $interfaces
+ );
+ }
+
+ return $buffer;
+ }
+
+ private function canMockMethod(ReflectionMethod $method): bool
+ {
+ return !($this->isConstructor($method) || $method->isFinal() || $method->isPrivate() || $this->isMethodNameExcluded($method->getName()));
+ }
+
+ private function isMethodNameExcluded(string $name): bool
+ {
+ return isset(self::EXCLUDED_METHOD_NAMES[$name]);
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ private function getTemplate(string $template): Template
+ {
+ $filename = __DIR__ . DIRECTORY_SEPARATOR . 'Generator' . DIRECTORY_SEPARATOR . $template;
+
+ if (!isset(self::$templates[$filename])) {
+ try {
+ self::$templates[$filename] = new Template($filename);
+ } catch (TemplateException $e) {
+ throw new RuntimeException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ }
+
+ return self::$templates[$filename];
+ }
+
+ /**
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4139#issuecomment-605409765
+ */
+ private function isConstructor(ReflectionMethod $method): bool
+ {
+ $methodName = strtolower($method->getName());
+
+ if ($methodName === '__construct') {
+ return true;
+ }
+
+ if (PHP_MAJOR_VERSION >= 8) {
+ return false;
+ }
+
+ $className = strtolower($method->getDeclaringClass()->getName());
+
+ return $methodName === $className;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/deprecation.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/deprecation.tpl
new file mode 100644
index 000000000..5bf06f52d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/deprecation.tpl
@@ -0,0 +1,2 @@
+
+ @trigger_error({deprecation}, E_USER_DEPRECATED);
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_class.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_class.tpl
new file mode 100644
index 000000000..593119fb2
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_class.tpl
@@ -0,0 +1,6 @@
+declare(strict_types=1);
+
+{prologue}{class_declaration}
+{
+ use \PHPUnit\Framework\MockObject\Api;{method}{clone}
+{mocked_methods}}{epilogue}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method.tpl
new file mode 100644
index 000000000..114ff8d0d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method.tpl
@@ -0,0 +1,22 @@
+
+ {modifier} function {reference}{method_name}({arguments_decl}){return_declaration}
+ {{deprecation}
+ $__phpunit_arguments = [{arguments_call}];
+ $__phpunit_count = func_num_args();
+
+ if ($__phpunit_count > {arguments_count}) {
+ $__phpunit_arguments_tmp = func_get_args();
+
+ for ($__phpunit_i = {arguments_count}; $__phpunit_i < $__phpunit_count; $__phpunit_i++) {
+ $__phpunit_arguments[] = $__phpunit_arguments_tmp[$__phpunit_i];
+ }
+ }
+
+ $__phpunit_result = $this->__phpunit_getInvocationHandler()->invoke(
+ new \PHPUnit\Framework\MockObject\Invocation(
+ '{class_name}', '{method_name}', $__phpunit_arguments, '{return_type}', $this, {clone_arguments}
+ )
+ );
+
+ return $__phpunit_result;
+ }
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_void.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_void.tpl
new file mode 100644
index 000000000..390202201
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_method_void.tpl
@@ -0,0 +1,20 @@
+
+ {modifier} function {reference}{method_name}({arguments_decl}){return_declaration}
+ {{deprecation}
+ $__phpunit_arguments = [{arguments_call}];
+ $__phpunit_count = func_num_args();
+
+ if ($__phpunit_count > {arguments_count}) {
+ $__phpunit_arguments_tmp = func_get_args();
+
+ for ($__phpunit_i = {arguments_count}; $__phpunit_i < $__phpunit_count; $__phpunit_i++) {
+ $__phpunit_arguments[] = $__phpunit_arguments_tmp[$__phpunit_i];
+ }
+ }
+
+ $this->__phpunit_getInvocationHandler()->invoke(
+ new \PHPUnit\Framework\MockObject\Invocation(
+ '{class_name}', '{method_name}', $__phpunit_arguments, '{return_type}', $this, {clone_arguments}
+ )
+ );
+ }
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_static_method.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_static_method.tpl
new file mode 100644
index 000000000..5e5cf23cd
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/mocked_static_method.tpl
@@ -0,0 +1,5 @@
+
+ {modifier} function {reference}{method_name}({arguments_decl}){return_declaration}
+ {
+ throw new \PHPUnit\Framework\MockObject\BadMethodCallException('Static method "{method_name}" cannot be invoked on mock object');
+ }
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method.tpl
new file mode 100644
index 000000000..91bef463d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method.tpl
@@ -0,0 +1,22 @@
+
+ {modifier} function {reference}{method_name}({arguments_decl}){return_declaration}
+ {
+ $__phpunit_arguments = [{arguments_call}];
+ $__phpunit_count = func_num_args();
+
+ if ($__phpunit_count > {arguments_count}) {
+ $__phpunit_arguments_tmp = func_get_args();
+
+ for ($__phpunit_i = {arguments_count}; $__phpunit_i < $__phpunit_count; $__phpunit_i++) {
+ $__phpunit_arguments[] = $__phpunit_arguments_tmp[$__phpunit_i];
+ }
+ }
+
+ $this->__phpunit_getInvocationHandler()->invoke(
+ new \PHPUnit\Framework\MockObject\Invocation(
+ '{class_name}', '{method_name}', $__phpunit_arguments, '{return_type}', $this, {clone_arguments}, true
+ )
+ );
+
+ return call_user_func_array(array($this->__phpunit_originalObject, "{method_name}"), $__phpunit_arguments);
+ }
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_void.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_void.tpl
new file mode 100644
index 000000000..cce198826
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/proxied_method_void.tpl
@@ -0,0 +1,22 @@
+
+ {modifier} function {reference}{method_name}({arguments_decl}){return_declaration}
+ {
+ $__phpunit_arguments = [{arguments_call}];
+ $__phpunit_count = func_num_args();
+
+ if ($__phpunit_count > {arguments_count}) {
+ $__phpunit_arguments_tmp = func_get_args();
+
+ for ($__phpunit_i = {arguments_count}; $__phpunit_i < $__phpunit_count; $__phpunit_i++) {
+ $__phpunit_arguments[] = $__phpunit_arguments_tmp[$__phpunit_i];
+ }
+ }
+
+ $this->__phpunit_getInvocationHandler()->invoke(
+ new \PHPUnit\Framework\MockObject\Invocation(
+ '{class_name}', '{method_name}', $__phpunit_arguments, '{return_type}', $this, {clone_arguments}, true
+ )
+ );
+
+ call_user_func_array(array($this->__phpunit_originalObject, "{method_name}"), $__phpunit_arguments);
+ }
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/trait_class.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/trait_class.tpl
new file mode 100644
index 000000000..a8fe470fd
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/trait_class.tpl
@@ -0,0 +1,6 @@
+declare(strict_types=1);
+
+{prologue}class {class_name}
+{
+ use {trait_name};
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/wsdl_class.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/wsdl_class.tpl
new file mode 100644
index 000000000..b3100b414
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/wsdl_class.tpl
@@ -0,0 +1,9 @@
+declare(strict_types=1);
+
+{namespace}class {class_name} extends \SoapClient
+{
+ public function __construct($wsdl, array $options)
+ {
+ parent::__construct('{wsdl}', $options);
+ }
+{methods}}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/wsdl_method.tpl b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/wsdl_method.tpl
new file mode 100644
index 000000000..bb16e763e
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Generator/wsdl_method.tpl
@@ -0,0 +1,4 @@
+
+ public function {method_name}({arguments})
+ {
+ }
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php
new file mode 100644
index 000000000..392938347
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Invocation.php
@@ -0,0 +1,254 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function array_map;
+use function explode;
+use function get_class;
+use function implode;
+use function is_object;
+use function sprintf;
+use function strpos;
+use function strtolower;
+use function substr;
+use Doctrine\Instantiator\Instantiator;
+use PHPUnit\Framework\SelfDescribing;
+use PHPUnit\Util\Type;
+use SebastianBergmann\Exporter\Exporter;
+use stdClass;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Invocation implements SelfDescribing
+{
+ /**
+ * @var string
+ */
+ private $className;
+
+ /**
+ * @var string
+ */
+ private $methodName;
+
+ /**
+ * @var array
+ */
+ private $parameters;
+
+ /**
+ * @var string
+ */
+ private $returnType;
+
+ /**
+ * @var bool
+ */
+ private $isReturnTypeNullable = false;
+
+ /**
+ * @var bool
+ */
+ private $proxiedCall;
+
+ /**
+ * @var object
+ */
+ private $object;
+
+ public function __construct(string $className, string $methodName, array $parameters, string $returnType, object $object, bool $cloneObjects = false, bool $proxiedCall = false)
+ {
+ $this->className = $className;
+ $this->methodName = $methodName;
+ $this->parameters = $parameters;
+ $this->object = $object;
+ $this->proxiedCall = $proxiedCall;
+
+ if (strtolower($methodName) === '__tostring') {
+ $returnType = 'string';
+ }
+
+ if (strpos($returnType, '?') === 0) {
+ $returnType = substr($returnType, 1);
+ $this->isReturnTypeNullable = true;
+ }
+
+ $this->returnType = $returnType;
+
+ if (!$cloneObjects) {
+ return;
+ }
+
+ foreach ($this->parameters as $key => $value) {
+ if (is_object($value)) {
+ $this->parameters[$key] = $this->cloneObject($value);
+ }
+ }
+ }
+
+ public function getClassName(): string
+ {
+ return $this->className;
+ }
+
+ public function getMethodName(): string
+ {
+ return $this->methodName;
+ }
+
+ public function getParameters(): array
+ {
+ return $this->parameters;
+ }
+
+ /**
+ * @throws RuntimeException
+ *
+ * @return mixed Mocked return value
+ */
+ public function generateReturnValue()
+ {
+ if ($this->isReturnTypeNullable || $this->proxiedCall) {
+ return null;
+ }
+
+ $union = false;
+
+ if (strpos($this->returnType, '|') !== false) {
+ $types = explode('|', $this->returnType);
+ $union = true;
+ } else {
+ $types = [$this->returnType];
+ }
+
+ $types = array_map('strtolower', $types);
+
+ if (in_array('', $types, true) ||
+ in_array('null', $types, true) ||
+ in_array('mixed', $types, true) ||
+ in_array('void', $types, true)) {
+ return null;
+ }
+
+ if (in_array('false', $types, true) ||
+ in_array('bool', $types, true)) {
+ return false;
+ }
+
+ if (in_array('float', $types, true)) {
+ return 0.0;
+ }
+
+ if (in_array('int', $types, true)) {
+ return 0;
+ }
+
+ if (in_array('string', $types, true)) {
+ return '';
+ }
+
+ if (in_array('array', $types, true)) {
+ return [];
+ }
+
+ if (in_array('static', $types, true)) {
+ try {
+ return (new Instantiator)->instantiate(get_class($this->object));
+ } catch (Throwable $t) {
+ throw new RuntimeException(
+ $t->getMessage(),
+ (int) $t->getCode(),
+ $t
+ );
+ }
+ }
+
+ if (in_array('object', $types, true)) {
+ return new stdClass;
+ }
+
+ if (in_array('callable', $types, true) ||
+ in_array('closure', $types, true)) {
+ return static function (): void
+ {
+ };
+ }
+
+ if (in_array('traversable', $types, true) ||
+ in_array('generator', $types, true) ||
+ in_array('iterable', $types, true)) {
+ $generator = static function (): \Generator
+ {
+ yield from [];
+ };
+
+ return $generator();
+ }
+
+ if (!$union) {
+ try {
+ return (new Generator)->getMock($this->returnType, [], [], '', false);
+ } catch (Throwable $t) {
+ throw new RuntimeException(
+ sprintf(
+ 'Return value for %s::%s() cannot be generated: %s',
+ $this->className,
+ $this->methodName,
+ $t->getMessage(),
+ ),
+ (int) $t->getCode(),
+ );
+ }
+ }
+
+ throw new RuntimeException(
+ sprintf(
+ 'Return value for %s::%s() cannot be generated because the declared return type is a union, please configure a return value for this method',
+ $this->className,
+ $this->methodName
+ )
+ );
+ }
+
+ public function toString(): string
+ {
+ $exporter = new Exporter;
+
+ return sprintf(
+ '%s::%s(%s)%s',
+ $this->className,
+ $this->methodName,
+ implode(
+ ', ',
+ array_map(
+ [$exporter, 'shortenedExport'],
+ $this->parameters
+ )
+ ),
+ $this->returnType ? sprintf(': %s', $this->returnType) : ''
+ );
+ }
+
+ public function getObject(): object
+ {
+ return $this->object;
+ }
+
+ private function cloneObject(object $original): object
+ {
+ if (Type::isCloneable($original)) {
+ return clone $original;
+ }
+
+ return $original;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php b/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php
new file mode 100644
index 000000000..b9d62610a
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/InvocationHandler.php
@@ -0,0 +1,186 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function strtolower;
+use Exception;
+use PHPUnit\Framework\MockObject\Builder\InvocationMocker;
+use PHPUnit\Framework\MockObject\Rule\InvocationOrder;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvocationHandler
+{
+ /**
+ * @var Matcher[]
+ */
+ private $matchers = [];
+
+ /**
+ * @var Matcher[]
+ */
+ private $matcherMap = [];
+
+ /**
+ * @var ConfigurableMethod[]
+ */
+ private $configurableMethods;
+
+ /**
+ * @var bool
+ */
+ private $returnValueGeneration;
+
+ /**
+ * @var Throwable
+ */
+ private $deferredError;
+
+ public function __construct(array $configurableMethods, bool $returnValueGeneration)
+ {
+ $this->configurableMethods = $configurableMethods;
+ $this->returnValueGeneration = $returnValueGeneration;
+ }
+
+ public function hasMatchers(): bool
+ {
+ foreach ($this->matchers as $matcher) {
+ if ($matcher->hasMatchers()) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Looks up the match builder with identification $id and returns it.
+ *
+ * @param string $id The identification of the match builder
+ */
+ public function lookupMatcher(string $id): ?Matcher
+ {
+ if (isset($this->matcherMap[$id])) {
+ return $this->matcherMap[$id];
+ }
+
+ return null;
+ }
+
+ /**
+ * Registers a matcher with the identification $id. The matcher can later be
+ * looked up using lookupMatcher() to figure out if it has been invoked.
+ *
+ * @param string $id The identification of the matcher
+ * @param Matcher $matcher The builder which is being registered
+ *
+ * @throws MatcherAlreadyRegisteredException
+ */
+ public function registerMatcher(string $id, Matcher $matcher): void
+ {
+ if (isset($this->matcherMap[$id])) {
+ throw new MatcherAlreadyRegisteredException($id);
+ }
+
+ $this->matcherMap[$id] = $matcher;
+ }
+
+ public function expects(InvocationOrder $rule): InvocationMocker
+ {
+ $matcher = new Matcher($rule);
+ $this->addMatcher($matcher);
+
+ return new InvocationMocker(
+ $this,
+ $matcher,
+ ...$this->configurableMethods
+ );
+ }
+
+ /**
+ * @throws Exception
+ * @throws RuntimeException
+ */
+ public function invoke(Invocation $invocation)
+ {
+ $exception = null;
+ $hasReturnValue = false;
+ $returnValue = null;
+
+ foreach ($this->matchers as $match) {
+ try {
+ if ($match->matches($invocation)) {
+ $value = $match->invoked($invocation);
+
+ if (!$hasReturnValue) {
+ $returnValue = $value;
+ $hasReturnValue = true;
+ }
+ }
+ } catch (Exception $e) {
+ $exception = $e;
+ }
+ }
+
+ if ($exception !== null) {
+ throw $exception;
+ }
+
+ if ($hasReturnValue) {
+ return $returnValue;
+ }
+
+ if (!$this->returnValueGeneration) {
+ $exception = new ReturnValueNotConfiguredException($invocation);
+
+ if (strtolower($invocation->getMethodName()) === '__tostring') {
+ $this->deferredError = $exception;
+
+ return '';
+ }
+
+ throw $exception;
+ }
+
+ return $invocation->generateReturnValue();
+ }
+
+ public function matches(Invocation $invocation): bool
+ {
+ foreach ($this->matchers as $matcher) {
+ if (!$matcher->matches($invocation)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * @throws Throwable
+ */
+ public function verify(): void
+ {
+ foreach ($this->matchers as $matcher) {
+ $matcher->verify();
+ }
+
+ if ($this->deferredError) {
+ throw $this->deferredError;
+ }
+ }
+
+ private function addMatcher(Matcher $matcher): void
+ {
+ $this->matchers[] = $matcher;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php
new file mode 100644
index 000000000..a0f8817bd
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Matcher.php
@@ -0,0 +1,272 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function assert;
+use function implode;
+use function sprintf;
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount;
+use PHPUnit\Framework\MockObject\Rule\AnyParameters;
+use PHPUnit\Framework\MockObject\Rule\InvocationOrder;
+use PHPUnit\Framework\MockObject\Rule\InvokedCount;
+use PHPUnit\Framework\MockObject\Rule\MethodName;
+use PHPUnit\Framework\MockObject\Rule\ParametersRule;
+use PHPUnit\Framework\MockObject\Stub\Stub;
+use PHPUnit\Framework\TestFailure;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Matcher
+{
+ /**
+ * @var InvocationOrder
+ */
+ private $invocationRule;
+
+ /**
+ * @var mixed
+ */
+ private $afterMatchBuilderId;
+
+ /**
+ * @var bool
+ */
+ private $afterMatchBuilderIsInvoked = false;
+
+ /**
+ * @var MethodName
+ */
+ private $methodNameRule;
+
+ /**
+ * @var ParametersRule
+ */
+ private $parametersRule;
+
+ /**
+ * @var Stub
+ */
+ private $stub;
+
+ public function __construct(InvocationOrder $rule)
+ {
+ $this->invocationRule = $rule;
+ }
+
+ public function hasMatchers(): bool
+ {
+ return !$this->invocationRule instanceof AnyInvokedCount;
+ }
+
+ public function hasMethodNameRule(): bool
+ {
+ return $this->methodNameRule !== null;
+ }
+
+ public function getMethodNameRule(): MethodName
+ {
+ return $this->methodNameRule;
+ }
+
+ public function setMethodNameRule(MethodName $rule): void
+ {
+ $this->methodNameRule = $rule;
+ }
+
+ public function hasParametersRule(): bool
+ {
+ return $this->parametersRule !== null;
+ }
+
+ public function setParametersRule(ParametersRule $rule): void
+ {
+ $this->parametersRule = $rule;
+ }
+
+ public function setStub(Stub $stub): void
+ {
+ $this->stub = $stub;
+ }
+
+ public function setAfterMatchBuilderId(string $id): void
+ {
+ $this->afterMatchBuilderId = $id;
+ }
+
+ /**
+ * @throws ExpectationFailedException
+ * @throws MatchBuilderNotFoundException
+ * @throws MethodNameNotConfiguredException
+ * @throws RuntimeException
+ */
+ public function invoked(Invocation $invocation)
+ {
+ if ($this->methodNameRule === null) {
+ throw new MethodNameNotConfiguredException;
+ }
+
+ if ($this->afterMatchBuilderId !== null) {
+ $matcher = $invocation->getObject()
+ ->__phpunit_getInvocationHandler()
+ ->lookupMatcher($this->afterMatchBuilderId);
+
+ if (!$matcher) {
+ throw new MatchBuilderNotFoundException($this->afterMatchBuilderId);
+ }
+
+ assert($matcher instanceof self);
+
+ if ($matcher->invocationRule->hasBeenInvoked()) {
+ $this->afterMatchBuilderIsInvoked = true;
+ }
+ }
+
+ $this->invocationRule->invoked($invocation);
+
+ try {
+ if ($this->parametersRule !== null) {
+ $this->parametersRule->apply($invocation);
+ }
+ } catch (ExpectationFailedException $e) {
+ throw new ExpectationFailedException(
+ sprintf(
+ "Expectation failed for %s when %s\n%s",
+ $this->methodNameRule->toString(),
+ $this->invocationRule->toString(),
+ $e->getMessage()
+ ),
+ $e->getComparisonFailure()
+ );
+ }
+
+ if ($this->stub) {
+ return $this->stub->invoke($invocation);
+ }
+
+ return $invocation->generateReturnValue();
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ * @throws MatchBuilderNotFoundException
+ * @throws MethodNameNotConfiguredException
+ * @throws RuntimeException
+ */
+ public function matches(Invocation $invocation): bool
+ {
+ if ($this->afterMatchBuilderId !== null) {
+ $matcher = $invocation->getObject()
+ ->__phpunit_getInvocationHandler()
+ ->lookupMatcher($this->afterMatchBuilderId);
+
+ if (!$matcher) {
+ throw new MatchBuilderNotFoundException($this->afterMatchBuilderId);
+ }
+
+ assert($matcher instanceof self);
+
+ if (!$matcher->invocationRule->hasBeenInvoked()) {
+ return false;
+ }
+ }
+
+ if ($this->methodNameRule === null) {
+ throw new MethodNameNotConfiguredException;
+ }
+
+ if (!$this->invocationRule->matches($invocation)) {
+ return false;
+ }
+
+ try {
+ if (!$this->methodNameRule->matches($invocation)) {
+ return false;
+ }
+ } catch (ExpectationFailedException $e) {
+ throw new ExpectationFailedException(
+ sprintf(
+ "Expectation failed for %s when %s\n%s",
+ $this->methodNameRule->toString(),
+ $this->invocationRule->toString(),
+ $e->getMessage()
+ ),
+ $e->getComparisonFailure()
+ );
+ }
+
+ return true;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ * @throws MethodNameNotConfiguredException
+ */
+ public function verify(): void
+ {
+ if ($this->methodNameRule === null) {
+ throw new MethodNameNotConfiguredException;
+ }
+
+ try {
+ $this->invocationRule->verify();
+
+ if ($this->parametersRule === null) {
+ $this->parametersRule = new AnyParameters;
+ }
+
+ $invocationIsAny = $this->invocationRule instanceof AnyInvokedCount;
+ $invocationIsNever = $this->invocationRule instanceof InvokedCount && $this->invocationRule->isNever();
+
+ if (!$invocationIsAny && !$invocationIsNever) {
+ $this->parametersRule->verify();
+ }
+ } catch (ExpectationFailedException $e) {
+ throw new ExpectationFailedException(
+ sprintf(
+ "Expectation failed for %s when %s.\n%s",
+ $this->methodNameRule->toString(),
+ $this->invocationRule->toString(),
+ TestFailure::exceptionToString($e)
+ )
+ );
+ }
+ }
+
+ public function toString(): string
+ {
+ $list = [];
+
+ if ($this->invocationRule !== null) {
+ $list[] = $this->invocationRule->toString();
+ }
+
+ if ($this->methodNameRule !== null) {
+ $list[] = 'where ' . $this->methodNameRule->toString();
+ }
+
+ if ($this->parametersRule !== null) {
+ $list[] = 'and ' . $this->parametersRule->toString();
+ }
+
+ if ($this->afterMatchBuilderId !== null) {
+ $list[] = 'after ' . $this->afterMatchBuilderId;
+ }
+
+ if ($this->stub !== null) {
+ $list[] = 'will ' . $this->stub->toString();
+ }
+
+ return implode(' ', $list);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php
new file mode 100644
index 000000000..3082ab384
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MethodNameConstraint.php
@@ -0,0 +1,48 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function is_string;
+use function sprintf;
+use function strtolower;
+use PHPUnit\Framework\Constraint\Constraint;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MethodNameConstraint extends Constraint
+{
+ /**
+ * @var string
+ */
+ private $methodName;
+
+ public function __construct(string $methodName)
+ {
+ $this->methodName = $methodName;
+ }
+
+ public function toString(): string
+ {
+ return sprintf(
+ 'is "%s"',
+ $this->methodName
+ );
+ }
+
+ protected function matches($other): bool
+ {
+ if (!is_string($other)) {
+ return false;
+ }
+
+ return strtolower($this->methodName) === strtolower($other);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php
new file mode 100644
index 000000000..aec32a2d4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockBuilder.php
@@ -0,0 +1,516 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function array_diff;
+use function array_merge;
+use PHPUnit\Framework\TestCase;
+use ReflectionClass;
+
+/**
+ * @psalm-template MockedType
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class MockBuilder
+{
+ /**
+ * @var TestCase
+ */
+ private $testCase;
+
+ /**
+ * @var string
+ */
+ private $type;
+
+ /**
+ * @var null|string[]
+ */
+ private $methods = [];
+
+ /**
+ * @var bool
+ */
+ private $emptyMethodsArray = false;
+
+ /**
+ * @var string
+ */
+ private $mockClassName = '';
+
+ /**
+ * @var array
+ */
+ private $constructorArgs = [];
+
+ /**
+ * @var bool
+ */
+ private $originalConstructor = true;
+
+ /**
+ * @var bool
+ */
+ private $originalClone = true;
+
+ /**
+ * @var bool
+ */
+ private $autoload = true;
+
+ /**
+ * @var bool
+ */
+ private $cloneArguments = false;
+
+ /**
+ * @var bool
+ */
+ private $callOriginalMethods = false;
+
+ /**
+ * @var ?object
+ */
+ private $proxyTarget;
+
+ /**
+ * @var bool
+ */
+ private $allowMockingUnknownTypes = true;
+
+ /**
+ * @var bool
+ */
+ private $returnValueGeneration = true;
+
+ /**
+ * @var Generator
+ */
+ private $generator;
+
+ /**
+ * @param string|string[] $type
+ *
+ * @psalm-param class-string<MockedType>|string|string[] $type
+ */
+ public function __construct(TestCase $testCase, $type)
+ {
+ $this->testCase = $testCase;
+ $this->type = $type;
+ $this->generator = new Generator;
+ }
+
+ /**
+ * Creates a mock object using a fluent interface.
+ *
+ * @throws \PHPUnit\Framework\InvalidArgumentException
+ * @throws ClassAlreadyExistsException
+ * @throws ClassIsFinalException
+ * @throws DuplicateMethodException
+ * @throws InvalidMethodNameException
+ * @throws OriginalConstructorInvocationRequiredException
+ * @throws ReflectionException
+ * @throws RuntimeException
+ * @throws UnknownTypeException
+ *
+ * @psalm-return MockObject&MockedType
+ */
+ public function getMock(): MockObject
+ {
+ $object = $this->generator->getMock(
+ $this->type,
+ !$this->emptyMethodsArray ? $this->methods : null,
+ $this->constructorArgs,
+ $this->mockClassName,
+ $this->originalConstructor,
+ $this->originalClone,
+ $this->autoload,
+ $this->cloneArguments,
+ $this->callOriginalMethods,
+ $this->proxyTarget,
+ $this->allowMockingUnknownTypes,
+ $this->returnValueGeneration
+ );
+
+ $this->testCase->registerMockObject($object);
+
+ return $object;
+ }
+
+ /**
+ * Creates a mock object for an abstract class using a fluent interface.
+ *
+ * @psalm-return MockObject&MockedType
+ *
+ * @throws \PHPUnit\Framework\Exception
+ * @throws ReflectionException
+ * @throws RuntimeException
+ */
+ public function getMockForAbstractClass(): MockObject
+ {
+ $object = $this->generator->getMockForAbstractClass(
+ $this->type,
+ $this->constructorArgs,
+ $this->mockClassName,
+ $this->originalConstructor,
+ $this->originalClone,
+ $this->autoload,
+ $this->methods,
+ $this->cloneArguments
+ );
+
+ $this->testCase->registerMockObject($object);
+
+ return $object;
+ }
+
+ /**
+ * Creates a mock object for a trait using a fluent interface.
+ *
+ * @psalm-return MockObject&MockedType
+ *
+ * @throws \PHPUnit\Framework\Exception
+ * @throws ReflectionException
+ * @throws RuntimeException
+ */
+ public function getMockForTrait(): MockObject
+ {
+ $object = $this->generator->getMockForTrait(
+ $this->type,
+ $this->constructorArgs,
+ $this->mockClassName,
+ $this->originalConstructor,
+ $this->originalClone,
+ $this->autoload,
+ $this->methods,
+ $this->cloneArguments
+ );
+
+ $this->testCase->registerMockObject($object);
+
+ return $object;
+ }
+
+ /**
+ * Specifies the subset of methods to mock. Default is to mock none of them.
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/pull/3687
+ *
+ * @return $this
+ */
+ public function setMethods(?array $methods = null): self
+ {
+ if ($methods === null) {
+ $this->methods = $methods;
+ } else {
+ $this->methods = array_merge($this->methods ?? [], $methods);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Specifies the subset of methods to mock, requiring each to exist in the class.
+ *
+ * @param string[] $methods
+ *
+ * @throws CannotUseOnlyMethodsException
+ * @throws ReflectionException
+ *
+ * @return $this
+ */
+ public function onlyMethods(array $methods): self
+ {
+ if (empty($methods)) {
+ $this->emptyMethodsArray = true;
+
+ return $this;
+ }
+
+ try {
+ $reflector = new ReflectionClass($this->type);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ foreach ($methods as $method) {
+ if (!$reflector->hasMethod($method)) {
+ throw new CannotUseOnlyMethodsException($this->type, $method);
+ }
+ }
+
+ $this->methods = array_merge($this->methods ?? [], $methods);
+
+ return $this;
+ }
+
+ /**
+ * Specifies methods that don't exist in the class which you want to mock.
+ *
+ * @param string[] $methods
+ *
+ * @throws CannotUseAddMethodsException
+ * @throws ReflectionException
+ * @throws RuntimeException
+ *
+ * @return $this
+ */
+ public function addMethods(array $methods): self
+ {
+ if (empty($methods)) {
+ $this->emptyMethodsArray = true;
+
+ return $this;
+ }
+
+ try {
+ $reflector = new ReflectionClass($this->type);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ foreach ($methods as $method) {
+ if ($reflector->hasMethod($method)) {
+ throw new CannotUseAddMethodsException($this->type, $method);
+ }
+ }
+
+ $this->methods = array_merge($this->methods ?? [], $methods);
+
+ return $this;
+ }
+
+ /**
+ * Specifies the subset of methods to not mock. Default is to mock all of them.
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/pull/3687
+ *
+ * @throws ReflectionException
+ */
+ public function setMethodsExcept(array $methods = []): self
+ {
+ return $this->setMethods(
+ array_diff(
+ $this->generator->getClassMethods($this->type),
+ $methods
+ )
+ );
+ }
+
+ /**
+ * Specifies the arguments for the constructor.
+ *
+ * @return $this
+ */
+ public function setConstructorArgs(array $args): self
+ {
+ $this->constructorArgs = $args;
+
+ return $this;
+ }
+
+ /**
+ * Specifies the name for the mock class.
+ *
+ * @return $this
+ */
+ public function setMockClassName(string $name): self
+ {
+ $this->mockClassName = $name;
+
+ return $this;
+ }
+
+ /**
+ * Disables the invocation of the original constructor.
+ *
+ * @return $this
+ */
+ public function disableOriginalConstructor(): self
+ {
+ $this->originalConstructor = false;
+
+ return $this;
+ }
+
+ /**
+ * Enables the invocation of the original constructor.
+ *
+ * @return $this
+ */
+ public function enableOriginalConstructor(): self
+ {
+ $this->originalConstructor = true;
+
+ return $this;
+ }
+
+ /**
+ * Disables the invocation of the original clone constructor.
+ *
+ * @return $this
+ */
+ public function disableOriginalClone(): self
+ {
+ $this->originalClone = false;
+
+ return $this;
+ }
+
+ /**
+ * Enables the invocation of the original clone constructor.
+ *
+ * @return $this
+ */
+ public function enableOriginalClone(): self
+ {
+ $this->originalClone = true;
+
+ return $this;
+ }
+
+ /**
+ * Disables the use of class autoloading while creating the mock object.
+ *
+ * @return $this
+ */
+ public function disableAutoload(): self
+ {
+ $this->autoload = false;
+
+ return $this;
+ }
+
+ /**
+ * Enables the use of class autoloading while creating the mock object.
+ *
+ * @return $this
+ */
+ public function enableAutoload(): self
+ {
+ $this->autoload = true;
+
+ return $this;
+ }
+
+ /**
+ * Disables the cloning of arguments passed to mocked methods.
+ *
+ * @return $this
+ */
+ public function disableArgumentCloning(): self
+ {
+ $this->cloneArguments = false;
+
+ return $this;
+ }
+
+ /**
+ * Enables the cloning of arguments passed to mocked methods.
+ *
+ * @return $this
+ */
+ public function enableArgumentCloning(): self
+ {
+ $this->cloneArguments = true;
+
+ return $this;
+ }
+
+ /**
+ * Enables the invocation of the original methods.
+ *
+ * @return $this
+ */
+ public function enableProxyingToOriginalMethods(): self
+ {
+ $this->callOriginalMethods = true;
+
+ return $this;
+ }
+
+ /**
+ * Disables the invocation of the original methods.
+ *
+ * @return $this
+ */
+ public function disableProxyingToOriginalMethods(): self
+ {
+ $this->callOriginalMethods = false;
+ $this->proxyTarget = null;
+
+ return $this;
+ }
+
+ /**
+ * Sets the proxy target.
+ *
+ * @return $this
+ */
+ public function setProxyTarget(object $object): self
+ {
+ $this->proxyTarget = $object;
+
+ return $this;
+ }
+
+ /**
+ * @return $this
+ */
+ public function allowMockingUnknownTypes(): self
+ {
+ $this->allowMockingUnknownTypes = true;
+
+ return $this;
+ }
+
+ /**
+ * @return $this
+ */
+ public function disallowMockingUnknownTypes(): self
+ {
+ $this->allowMockingUnknownTypes = false;
+
+ return $this;
+ }
+
+ /**
+ * @return $this
+ */
+ public function enableAutoReturnValueGeneration(): self
+ {
+ $this->returnValueGeneration = true;
+
+ return $this;
+ }
+
+ /**
+ * @return $this
+ */
+ public function disableAutoReturnValueGeneration(): self
+ {
+ $this->returnValueGeneration = false;
+
+ return $this;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php
new file mode 100644
index 000000000..253d78460
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockClass.php
@@ -0,0 +1,69 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function call_user_func;
+use function class_exists;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MockClass implements MockType
+{
+ /**
+ * @var string
+ */
+ private $classCode;
+
+ /**
+ * @var class-string
+ */
+ private $mockName;
+
+ /**
+ * @var ConfigurableMethod[]
+ */
+ private $configurableMethods;
+
+ /**
+ * @psalm-param class-string $mockName
+ */
+ public function __construct(string $classCode, string $mockName, array $configurableMethods)
+ {
+ $this->classCode = $classCode;
+ $this->mockName = $mockName;
+ $this->configurableMethods = $configurableMethods;
+ }
+
+ /**
+ * @psalm-return class-string
+ */
+ public function generate(): string
+ {
+ if (!class_exists($this->mockName, false)) {
+ eval($this->classCode);
+
+ call_user_func(
+ [
+ $this->mockName,
+ '__phpunit_initConfigurableMethods',
+ ],
+ ...$this->configurableMethods
+ );
+ }
+
+ return $this->mockName;
+ }
+
+ public function getClassCode(): string
+ {
+ return $this->classCode;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php
new file mode 100644
index 000000000..5e02cae5f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethod.php
@@ -0,0 +1,398 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use const DIRECTORY_SEPARATOR;
+use function implode;
+use function is_string;
+use function preg_match;
+use function preg_replace;
+use function sprintf;
+use function substr_count;
+use function trim;
+use function var_export;
+use ReflectionMethod;
+use ReflectionNamedType;
+use ReflectionParameter;
+use ReflectionUnionType;
+use SebastianBergmann\Template\Exception as TemplateException;
+use SebastianBergmann\Template\Template;
+use SebastianBergmann\Type\ReflectionMapper;
+use SebastianBergmann\Type\Type;
+use SebastianBergmann\Type\UnknownType;
+use SebastianBergmann\Type\VoidType;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MockMethod
+{
+ /**
+ * @var Template[]
+ */
+ private static $templates = [];
+
+ /**
+ * @var string
+ */
+ private $className;
+
+ /**
+ * @var string
+ */
+ private $methodName;
+
+ /**
+ * @var bool
+ */
+ private $cloneArguments;
+
+ /**
+ * @var string string
+ */
+ private $modifier;
+
+ /**
+ * @var string
+ */
+ private $argumentsForDeclaration;
+
+ /**
+ * @var string
+ */
+ private $argumentsForCall;
+
+ /**
+ * @var Type
+ */
+ private $returnType;
+
+ /**
+ * @var string
+ */
+ private $reference;
+
+ /**
+ * @var bool
+ */
+ private $callOriginalMethod;
+
+ /**
+ * @var bool
+ */
+ private $static;
+
+ /**
+ * @var ?string
+ */
+ private $deprecation;
+
+ /**
+ * @throws ReflectionException
+ * @throws RuntimeException
+ */
+ public static function fromReflection(ReflectionMethod $method, bool $callOriginalMethod, bool $cloneArguments): self
+ {
+ if ($method->isPrivate()) {
+ $modifier = 'private';
+ } elseif ($method->isProtected()) {
+ $modifier = 'protected';
+ } else {
+ $modifier = 'public';
+ }
+
+ if ($method->isStatic()) {
+ $modifier .= ' static';
+ }
+
+ if ($method->returnsReference()) {
+ $reference = '&';
+ } else {
+ $reference = '';
+ }
+
+ $docComment = $method->getDocComment();
+
+ if (is_string($docComment) &&
+ preg_match('#\*[ \t]*+@deprecated[ \t]*+(.*?)\r?+\n[ \t]*+\*(?:[ \t]*+@|/$)#s', $docComment, $deprecation)) {
+ $deprecation = trim(preg_replace('#[ \t]*\r?\n[ \t]*+\*[ \t]*+#', ' ', $deprecation[1]));
+ } else {
+ $deprecation = null;
+ }
+
+ return new self(
+ $method->getDeclaringClass()->getName(),
+ $method->getName(),
+ $cloneArguments,
+ $modifier,
+ self::getMethodParametersForDeclaration($method),
+ self::getMethodParametersForCall($method),
+ (new ReflectionMapper)->fromMethodReturnType($method),
+ $reference,
+ $callOriginalMethod,
+ $method->isStatic(),
+ $deprecation
+ );
+ }
+
+ public static function fromName(string $fullClassName, string $methodName, bool $cloneArguments): self
+ {
+ return new self(
+ $fullClassName,
+ $methodName,
+ $cloneArguments,
+ 'public',
+ '',
+ '',
+ new UnknownType,
+ '',
+ false,
+ false,
+ null
+ );
+ }
+
+ public function __construct(string $className, string $methodName, bool $cloneArguments, string $modifier, string $argumentsForDeclaration, string $argumentsForCall, Type $returnType, string $reference, bool $callOriginalMethod, bool $static, ?string $deprecation)
+ {
+ $this->className = $className;
+ $this->methodName = $methodName;
+ $this->cloneArguments = $cloneArguments;
+ $this->modifier = $modifier;
+ $this->argumentsForDeclaration = $argumentsForDeclaration;
+ $this->argumentsForCall = $argumentsForCall;
+ $this->returnType = $returnType;
+ $this->reference = $reference;
+ $this->callOriginalMethod = $callOriginalMethod;
+ $this->static = $static;
+ $this->deprecation = $deprecation;
+ }
+
+ public function getName(): string
+ {
+ return $this->methodName;
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ public function generateCode(): string
+ {
+ if ($this->static) {
+ $templateFile = 'mocked_static_method.tpl';
+ } elseif ($this->returnType instanceof VoidType) {
+ $templateFile = sprintf(
+ '%s_method_void.tpl',
+ $this->callOriginalMethod ? 'proxied' : 'mocked'
+ );
+ } else {
+ $templateFile = sprintf(
+ '%s_method.tpl',
+ $this->callOriginalMethod ? 'proxied' : 'mocked'
+ );
+ }
+
+ $deprecation = $this->deprecation;
+
+ if (null !== $this->deprecation) {
+ $deprecation = "The {$this->className}::{$this->methodName} method is deprecated ({$this->deprecation}).";
+ $deprecationTemplate = $this->getTemplate('deprecation.tpl');
+
+ $deprecationTemplate->setVar(
+ [
+ 'deprecation' => var_export($deprecation, true),
+ ]
+ );
+
+ $deprecation = $deprecationTemplate->render();
+ }
+
+ $template = $this->getTemplate($templateFile);
+
+ $template->setVar(
+ [
+ 'arguments_decl' => $this->argumentsForDeclaration,
+ 'arguments_call' => $this->argumentsForCall,
+ 'return_declaration' => !empty($this->returnType->asString()) ? (': ' . $this->returnType->asString()) : '',
+ 'return_type' => $this->returnType->asString(),
+ 'arguments_count' => !empty($this->argumentsForCall) ? substr_count($this->argumentsForCall, ',') + 1 : 0,
+ 'class_name' => $this->className,
+ 'method_name' => $this->methodName,
+ 'modifier' => $this->modifier,
+ 'reference' => $this->reference,
+ 'clone_arguments' => $this->cloneArguments ? 'true' : 'false',
+ 'deprecation' => $deprecation,
+ ]
+ );
+
+ return $template->render();
+ }
+
+ public function getReturnType(): Type
+ {
+ return $this->returnType;
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ private function getTemplate(string $template): Template
+ {
+ $filename = __DIR__ . DIRECTORY_SEPARATOR . 'Generator' . DIRECTORY_SEPARATOR . $template;
+
+ if (!isset(self::$templates[$filename])) {
+ try {
+ self::$templates[$filename] = new Template($filename);
+ } catch (TemplateException $e) {
+ throw new RuntimeException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ }
+
+ return self::$templates[$filename];
+ }
+
+ /**
+ * Returns the parameters of a function or method.
+ *
+ * @throws RuntimeException
+ */
+ private static function getMethodParametersForDeclaration(ReflectionMethod $method): string
+ {
+ $parameters = [];
+
+ foreach ($method->getParameters() as $i => $parameter) {
+ $name = '$' . $parameter->getName();
+
+ /* Note: PHP extensions may use empty names for reference arguments
+ * or "..." for methods taking a variable number of arguments.
+ */
+ if ($name === '$' || $name === '$...') {
+ $name = '$arg' . $i;
+ }
+
+ $nullable = '';
+ $default = '';
+ $reference = '';
+ $typeDeclaration = '';
+ $type = null;
+ $typeName = null;
+
+ if ($parameter->hasType()) {
+ $type = $parameter->getType();
+
+ if ($type instanceof ReflectionNamedType) {
+ $typeName = $type->getName();
+ }
+ }
+
+ if ($parameter->isVariadic()) {
+ $name = '...' . $name;
+ } elseif ($parameter->isDefaultValueAvailable()) {
+ $default = ' = ' . self::exportDefaultValue($parameter);
+ } elseif ($parameter->isOptional()) {
+ $default = ' = null';
+ }
+
+ if ($type !== null) {
+ if ($typeName !== 'mixed' && $parameter->allowsNull() && !$type instanceof ReflectionUnionType) {
+ $nullable = '?';
+ }
+
+ if ($typeName === 'self') {
+ $typeDeclaration = $method->getDeclaringClass()->getName() . ' ';
+ } elseif ($typeName !== null) {
+ $typeDeclaration = $typeName . ' ';
+ } elseif ($type instanceof ReflectionUnionType) {
+ $typeDeclaration = self::unionTypeAsString(
+ $type,
+ $method->getDeclaringClass()->getName()
+ );
+ }
+ }
+
+ if ($parameter->isPassedByReference()) {
+ $reference = '&';
+ }
+
+ $parameters[] = $nullable . $typeDeclaration . $reference . $name . $default;
+ }
+
+ return implode(', ', $parameters);
+ }
+
+ /**
+ * Returns the parameters of a function or method.
+ *
+ * @throws ReflectionException
+ */
+ private static function getMethodParametersForCall(ReflectionMethod $method): string
+ {
+ $parameters = [];
+
+ foreach ($method->getParameters() as $i => $parameter) {
+ $name = '$' . $parameter->getName();
+
+ /* Note: PHP extensions may use empty names for reference arguments
+ * or "..." for methods taking a variable number of arguments.
+ */
+ if ($name === '$' || $name === '$...') {
+ $name = '$arg' . $i;
+ }
+
+ if ($parameter->isVariadic()) {
+ continue;
+ }
+
+ if ($parameter->isPassedByReference()) {
+ $parameters[] = '&' . $name;
+ } else {
+ $parameters[] = $name;
+ }
+ }
+
+ return implode(', ', $parameters);
+ }
+
+ /**
+ * @throws ReflectionException
+ */
+ private static function exportDefaultValue(ReflectionParameter $parameter): string
+ {
+ try {
+ return (string) var_export($parameter->getDefaultValue(), true);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ private static function unionTypeAsString(ReflectionUnionType $union, string $self): string
+ {
+ $types = [];
+
+ foreach ($union->getTypes() as $type) {
+ if ((string) $type === 'self') {
+ $types[] = $self;
+ } else {
+ $types[] = $type;
+ }
+ }
+
+ return implode('|', $types) . ' ';
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php
new file mode 100644
index 000000000..1c78963c0
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockMethodSet.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function array_key_exists;
+use function array_values;
+use function strtolower;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MockMethodSet
+{
+ /**
+ * @var MockMethod[]
+ */
+ private $methods = [];
+
+ public function addMethods(MockMethod ...$methods): void
+ {
+ foreach ($methods as $method) {
+ $this->methods[strtolower($method->getName())] = $method;
+ }
+ }
+
+ /**
+ * @return MockMethod[]
+ */
+ public function asArray(): array
+ {
+ return array_values($this->methods);
+ }
+
+ public function hasMethod(string $methodName): bool
+ {
+ return array_key_exists(strtolower($methodName), $this->methods);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockObject.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockObject.php
new file mode 100644
index 000000000..094decf43
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockObject.php
@@ -0,0 +1,27 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use PHPUnit\Framework\MockObject\Builder\InvocationMocker as BuilderInvocationMocker;
+use PHPUnit\Framework\MockObject\Rule\InvocationOrder;
+
+/**
+ * @method BuilderInvocationMocker method($constraint)
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+interface MockObject extends Stub
+{
+ public function __phpunit_setOriginalObject($originalObject): void;
+
+ public function __phpunit_verify(bool $unsetInvocationMocker = true): void;
+
+ public function expects(InvocationOrder $invocationRule): BuilderInvocationMocker;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockTrait.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockTrait.php
new file mode 100644
index 000000000..7c326988f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockTrait.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use function class_exists;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MockTrait implements MockType
+{
+ /**
+ * @var string
+ */
+ private $classCode;
+
+ /**
+ * @var class-string
+ */
+ private $mockName;
+
+ /**
+ * @psalm-param class-string $mockName
+ */
+ public function __construct(string $classCode, string $mockName)
+ {
+ $this->classCode = $classCode;
+ $this->mockName = $mockName;
+ }
+
+ /**
+ * @psalm-return class-string
+ */
+ public function generate(): string
+ {
+ if (!class_exists($this->mockName, false)) {
+ eval($this->classCode);
+ }
+
+ return $this->mockName;
+ }
+
+ public function getClassCode(): string
+ {
+ return $this->classCode;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/MockType.php b/vendor/phpunit/phpunit/src/Framework/MockObject/MockType.php
new file mode 100644
index 000000000..6a03fb51a
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/MockType.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface MockType
+{
+ /**
+ * @psalm-return class-string
+ */
+ public function generate(): string;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php
new file mode 100644
index 000000000..f93e5686b
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/AnyInvokedCount.php
@@ -0,0 +1,36 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class AnyInvokedCount extends InvocationOrder
+{
+ public function toString(): string
+ {
+ return 'invoked zero or more times';
+ }
+
+ public function verify(): void
+ {
+ }
+
+ public function matches(BaseInvocation $invocation): bool
+ {
+ return true;
+ }
+
+ protected function invokedDo(BaseInvocation $invocation): void
+ {
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php
new file mode 100644
index 000000000..61de78878
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/AnyParameters.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class AnyParameters implements ParametersRule
+{
+ public function toString(): string
+ {
+ return 'with any parameters';
+ }
+
+ public function apply(BaseInvocation $invocation): void
+ {
+ }
+
+ public function verify(): void
+ {
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php
new file mode 100644
index 000000000..6025c0a16
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php
@@ -0,0 +1,130 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use function count;
+use function gettype;
+use function is_iterable;
+use function sprintf;
+use PHPUnit\Framework\Constraint\Constraint;
+use PHPUnit\Framework\Constraint\IsEqual;
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\InvalidParameterGroupException;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ConsecutiveParameters implements ParametersRule
+{
+ /**
+ * @var array
+ */
+ private $parameterGroups = [];
+
+ /**
+ * @var array
+ */
+ private $invocations = [];
+
+ /**
+ * @throws \PHPUnit\Framework\Exception
+ */
+ public function __construct(array $parameterGroups)
+ {
+ foreach ($parameterGroups as $index => $parameters) {
+ if (!is_iterable($parameters)) {
+ throw new InvalidParameterGroupException(
+ sprintf(
+ 'Parameter group #%d must be an array or Traversable, got %s',
+ $index,
+ gettype($parameters)
+ )
+ );
+ }
+
+ foreach ($parameters as $parameter) {
+ if (!$parameter instanceof Constraint) {
+ $parameter = new IsEqual($parameter);
+ }
+
+ $this->parameterGroups[$index][] = $parameter;
+ }
+ }
+ }
+
+ public function toString(): string
+ {
+ return 'with consecutive parameters';
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public function apply(BaseInvocation $invocation): void
+ {
+ $this->invocations[] = $invocation;
+ $callIndex = count($this->invocations) - 1;
+
+ $this->verifyInvocation($invocation, $callIndex);
+ }
+
+ /**
+ * @throws \PHPUnit\Framework\ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function verify(): void
+ {
+ foreach ($this->invocations as $callIndex => $invocation) {
+ $this->verifyInvocation($invocation, $callIndex);
+ }
+ }
+
+ /**
+ * Verify a single invocation.
+ *
+ * @param int $callIndex
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ private function verifyInvocation(BaseInvocation $invocation, $callIndex): void
+ {
+ if (!isset($this->parameterGroups[$callIndex])) {
+ // no parameter assertion for this call index
+ return;
+ }
+
+ $parameters = $this->parameterGroups[$callIndex];
+
+ if (count($invocation->getParameters()) < count($parameters)) {
+ throw new ExpectationFailedException(
+ sprintf(
+ 'Parameter count for invocation %s is too low.',
+ $invocation->toString()
+ )
+ );
+ }
+
+ foreach ($parameters as $i => $parameter) {
+ $parameter->evaluate(
+ $invocation->getParameters()[$i],
+ sprintf(
+ 'Parameter %s for invocation #%d %s does not match expected ' .
+ 'value.',
+ $i,
+ $callIndex,
+ $invocation->toString()
+ )
+ );
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php
new file mode 100644
index 000000000..90aa49350
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvocationOrder.php
@@ -0,0 +1,47 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use function count;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+use PHPUnit\Framework\MockObject\Verifiable;
+use PHPUnit\Framework\SelfDescribing;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class InvocationOrder implements SelfDescribing, Verifiable
+{
+ /**
+ * @var BaseInvocation[]
+ */
+ private $invocations = [];
+
+ public function getInvocationCount(): int
+ {
+ return count($this->invocations);
+ }
+
+ public function hasBeenInvoked(): bool
+ {
+ return count($this->invocations) > 0;
+ }
+
+ final public function invoked(BaseInvocation $invocation)
+ {
+ $this->invocations[] = $invocation;
+
+ return $this->invokedDo($invocation);
+ }
+
+ abstract public function matches(BaseInvocation $invocation): bool;
+
+ abstract protected function invokedDo(BaseInvocation $invocation);
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php
new file mode 100644
index 000000000..2a6625e2f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtIndex.php
@@ -0,0 +1,75 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use function sprintf;
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4297
+ * @codeCoverageIgnore
+ */
+final class InvokedAtIndex extends InvocationOrder
+{
+ /**
+ * @var int
+ */
+ private $sequenceIndex;
+
+ /**
+ * @var int
+ */
+ private $currentIndex = -1;
+
+ /**
+ * @param int $sequenceIndex
+ */
+ public function __construct($sequenceIndex)
+ {
+ $this->sequenceIndex = $sequenceIndex;
+ }
+
+ public function toString(): string
+ {
+ return 'invoked at sequence index ' . $this->sequenceIndex;
+ }
+
+ public function matches(BaseInvocation $invocation): bool
+ {
+ $this->currentIndex++;
+
+ return $this->currentIndex == $this->sequenceIndex;
+ }
+
+ /**
+ * Verifies that the current expectation is valid. If everything is OK the
+ * code should just return, if not it must throw an exception.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function verify(): void
+ {
+ if ($this->currentIndex < $this->sequenceIndex) {
+ throw new ExpectationFailedException(
+ sprintf(
+ 'The expected invocation at index %s was never reached.',
+ $this->sequenceIndex
+ )
+ );
+ }
+ }
+
+ protected function invokedDo(BaseInvocation $invocation): void
+ {
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php
new file mode 100644
index 000000000..a84aa6559
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastCount.php
@@ -0,0 +1,64 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvokedAtLeastCount extends InvocationOrder
+{
+ /**
+ * @var int
+ */
+ private $requiredInvocations;
+
+ /**
+ * @param int $requiredInvocations
+ */
+ public function __construct($requiredInvocations)
+ {
+ $this->requiredInvocations = $requiredInvocations;
+ }
+
+ public function toString(): string
+ {
+ return 'invoked at least ' . $this->requiredInvocations . ' times';
+ }
+
+ /**
+ * Verifies that the current expectation is valid. If everything is OK the
+ * code should just return, if not it must throw an exception.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function verify(): void
+ {
+ $count = $this->getInvocationCount();
+
+ if ($count < $this->requiredInvocations) {
+ throw new ExpectationFailedException(
+ 'Expected invocation at least ' . $this->requiredInvocations .
+ ' times but it occurred ' . $count . ' time(s).'
+ );
+ }
+ }
+
+ public function matches(BaseInvocation $invocation): bool
+ {
+ return true;
+ }
+
+ protected function invokedDo(BaseInvocation $invocation): void
+ {
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php
new file mode 100644
index 000000000..d0ad1f801
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtLeastOnce.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvokedAtLeastOnce extends InvocationOrder
+{
+ public function toString(): string
+ {
+ return 'invoked at least once';
+ }
+
+ /**
+ * Verifies that the current expectation is valid. If everything is OK the
+ * code should just return, if not it must throw an exception.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function verify(): void
+ {
+ $count = $this->getInvocationCount();
+
+ if ($count < 1) {
+ throw new ExpectationFailedException(
+ 'Expected invocation at least once but it never occurred.'
+ );
+ }
+ }
+
+ public function matches(BaseInvocation $invocation): bool
+ {
+ return true;
+ }
+
+ protected function invokedDo(BaseInvocation $invocation): void
+ {
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php
new file mode 100644
index 000000000..c3b815aa4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedAtMostCount.php
@@ -0,0 +1,64 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvokedAtMostCount extends InvocationOrder
+{
+ /**
+ * @var int
+ */
+ private $allowedInvocations;
+
+ /**
+ * @param int $allowedInvocations
+ */
+ public function __construct($allowedInvocations)
+ {
+ $this->allowedInvocations = $allowedInvocations;
+ }
+
+ public function toString(): string
+ {
+ return 'invoked at most ' . $this->allowedInvocations . ' times';
+ }
+
+ /**
+ * Verifies that the current expectation is valid. If everything is OK the
+ * code should just return, if not it must throw an exception.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function verify(): void
+ {
+ $count = $this->getInvocationCount();
+
+ if ($count > $this->allowedInvocations) {
+ throw new ExpectationFailedException(
+ 'Expected invocation at most ' . $this->allowedInvocations .
+ ' times but it occurred ' . $count . ' time(s).'
+ );
+ }
+ }
+
+ public function matches(BaseInvocation $invocation): bool
+ {
+ return true;
+ }
+
+ protected function invokedDo(BaseInvocation $invocation): void
+ {
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php
new file mode 100644
index 000000000..188326c91
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php
@@ -0,0 +1,102 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use function sprintf;
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvokedCount extends InvocationOrder
+{
+ /**
+ * @var int
+ */
+ private $expectedCount;
+
+ /**
+ * @param int $expectedCount
+ */
+ public function __construct($expectedCount)
+ {
+ $this->expectedCount = $expectedCount;
+ }
+
+ public function isNever(): bool
+ {
+ return $this->expectedCount === 0;
+ }
+
+ public function toString(): string
+ {
+ return 'invoked ' . $this->expectedCount . ' time(s)';
+ }
+
+ public function matches(BaseInvocation $invocation): bool
+ {
+ return true;
+ }
+
+ /**
+ * Verifies that the current expectation is valid. If everything is OK the
+ * code should just return, if not it must throw an exception.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function verify(): void
+ {
+ $count = $this->getInvocationCount();
+
+ if ($count !== $this->expectedCount) {
+ throw new ExpectationFailedException(
+ sprintf(
+ 'Method was expected to be called %d times, ' .
+ 'actually called %d times.',
+ $this->expectedCount,
+ $count
+ )
+ );
+ }
+ }
+
+ /**
+ * @throws ExpectationFailedException
+ */
+ protected function invokedDo(BaseInvocation $invocation): void
+ {
+ $count = $this->getInvocationCount();
+
+ if ($count > $this->expectedCount) {
+ $message = $invocation->toString() . ' ';
+
+ switch ($this->expectedCount) {
+ case 0:
+ $message .= 'was not expected to be called.';
+
+ break;
+
+ case 1:
+ $message .= 'was not expected to be called more than once.';
+
+ break;
+
+ default:
+ $message .= sprintf(
+ 'was not expected to be called more than %d times.',
+ $this->expectedCount
+ );
+ }
+
+ throw new ExpectationFailedException($message);
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php
new file mode 100644
index 000000000..83ba3b8da
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/MethodName.php
@@ -0,0 +1,68 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use function is_string;
+use PHPUnit\Framework\Constraint\Constraint;
+use PHPUnit\Framework\InvalidArgumentException;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+use PHPUnit\Framework\MockObject\MethodNameConstraint;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MethodName
+{
+ /**
+ * @var Constraint
+ */
+ private $constraint;
+
+ /**
+ * @param Constraint|string $constraint
+ *
+ * @throws InvalidArgumentException
+ */
+ public function __construct($constraint)
+ {
+ if (is_string($constraint)) {
+ $constraint = new MethodNameConstraint($constraint);
+ }
+
+ if (!$constraint instanceof Constraint) {
+ throw InvalidArgumentException::create(1, 'PHPUnit\Framework\Constraint\Constraint object or string');
+ }
+
+ $this->constraint = $constraint;
+ }
+
+ public function toString(): string
+ {
+ return 'method name ' . $this->constraint->toString();
+ }
+
+ /**
+ * @throws \PHPUnit\Framework\ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function matches(BaseInvocation $invocation): bool
+ {
+ return $this->matchesName($invocation->getMethodName());
+ }
+
+ /**
+ * @throws \PHPUnit\Framework\ExpectationFailedException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function matchesName(string $methodName): bool
+ {
+ return (bool) $this->constraint->evaluate($methodName, '', true);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php
new file mode 100644
index 000000000..3f1cc53ae
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/Parameters.php
@@ -0,0 +1,160 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use function count;
+use function get_class;
+use function sprintf;
+use Exception;
+use PHPUnit\Framework\Constraint\Constraint;
+use PHPUnit\Framework\Constraint\IsAnything;
+use PHPUnit\Framework\Constraint\IsEqual;
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Parameters implements ParametersRule
+{
+ /**
+ * @var Constraint[]
+ */
+ private $parameters = [];
+
+ /**
+ * @var BaseInvocation
+ */
+ private $invocation;
+
+ /**
+ * @var bool|ExpectationFailedException
+ */
+ private $parameterVerificationResult;
+
+ /**
+ * @throws \PHPUnit\Framework\Exception
+ */
+ public function __construct(array $parameters)
+ {
+ foreach ($parameters as $parameter) {
+ if (!($parameter instanceof Constraint)) {
+ $parameter = new IsEqual(
+ $parameter
+ );
+ }
+
+ $this->parameters[] = $parameter;
+ }
+ }
+
+ public function toString(): string
+ {
+ $text = 'with parameter';
+
+ foreach ($this->parameters as $index => $parameter) {
+ if ($index > 0) {
+ $text .= ' and';
+ }
+
+ $text .= ' ' . $index . ' ' . $parameter->toString();
+ }
+
+ return $text;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function apply(BaseInvocation $invocation): void
+ {
+ $this->invocation = $invocation;
+ $this->parameterVerificationResult = null;
+
+ try {
+ $this->parameterVerificationResult = $this->doVerify();
+ } catch (ExpectationFailedException $e) {
+ $this->parameterVerificationResult = $e;
+
+ throw $this->parameterVerificationResult;
+ }
+ }
+
+ /**
+ * Checks if the invocation $invocation matches the current rules. If it
+ * does the rule will get the invoked() method called which should check
+ * if an expectation is met.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ public function verify(): void
+ {
+ $this->doVerify();
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws ExpectationFailedException
+ */
+ private function doVerify(): bool
+ {
+ if (isset($this->parameterVerificationResult)) {
+ return $this->guardAgainstDuplicateEvaluationOfParameterConstraints();
+ }
+
+ if ($this->invocation === null) {
+ throw new ExpectationFailedException('Mocked method does not exist.');
+ }
+
+ if (count($this->invocation->getParameters()) < count($this->parameters)) {
+ $message = 'Parameter count for invocation %s is too low.';
+
+ // The user called `->with($this->anything())`, but may have meant
+ // `->withAnyParameters()`.
+ //
+ // @see https://github.com/sebastianbergmann/phpunit-mock-objects/issues/199
+ if (count($this->parameters) === 1 &&
+ get_class($this->parameters[0]) === IsAnything::class) {
+ $message .= "\nTo allow 0 or more parameters with any value, omit ->with() or use ->withAnyParameters() instead.";
+ }
+
+ throw new ExpectationFailedException(
+ sprintf($message, $this->invocation->toString())
+ );
+ }
+
+ foreach ($this->parameters as $i => $parameter) {
+ $parameter->evaluate(
+ $this->invocation->getParameters()[$i],
+ sprintf(
+ 'Parameter %s for invocation %s does not match expected ' .
+ 'value.',
+ $i,
+ $this->invocation->toString()
+ )
+ );
+ }
+
+ return true;
+ }
+
+ /**
+ * @throws ExpectationFailedException
+ */
+ private function guardAgainstDuplicateEvaluationOfParameterConstraints(): bool
+ {
+ if ($this->parameterVerificationResult instanceof ExpectationFailedException) {
+ throw $this->parameterVerificationResult;
+ }
+
+ return (bool) $this->parameterVerificationResult;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php
new file mode 100644
index 000000000..70c47fe32
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ParametersRule.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+use PHPUnit\Framework\MockObject\Verifiable;
+use PHPUnit\Framework\SelfDescribing;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+interface ParametersRule extends SelfDescribing, Verifiable
+{
+ /**
+ * @throws ExpectationFailedException if the invocation violates the rule
+ */
+ public function apply(BaseInvocation $invocation): void;
+
+ public function verify(): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub.php
new file mode 100644
index 000000000..2b032e2dc
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use PHPUnit\Framework\MockObject\Builder\InvocationStubber;
+
+/**
+ * @method InvocationStubber method($constraint)
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+interface Stub
+{
+ public function __phpunit_getInvocationHandler(): InvocationHandler;
+
+ public function __phpunit_hasMatchers(): bool;
+
+ public function __phpunit_setReturnValueGeneration(bool $returnValueGeneration): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php
new file mode 100644
index 000000000..0dcf386b3
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ConsecutiveCalls.php
@@ -0,0 +1,57 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Stub;
+
+use function array_shift;
+use function sprintf;
+use PHPUnit\Framework\MockObject\Invocation;
+use SebastianBergmann\Exporter\Exporter;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ConsecutiveCalls implements Stub
+{
+ /**
+ * @var array
+ */
+ private $stack;
+
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ public function __construct(array $stack)
+ {
+ $this->stack = $stack;
+ }
+
+ public function invoke(Invocation $invocation)
+ {
+ $this->value = array_shift($this->stack);
+
+ if ($this->value instanceof Stub) {
+ $this->value = $this->value->invoke($invocation);
+ }
+
+ return $this->value;
+ }
+
+ public function toString(): string
+ {
+ $exporter = new Exporter;
+
+ return sprintf(
+ 'return user-specified value %s',
+ $exporter->export($this->value)
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php
new file mode 100644
index 000000000..5d64c96a5
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Exception.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Stub;
+
+use function sprintf;
+use PHPUnit\Framework\MockObject\Invocation;
+use SebastianBergmann\Exporter\Exporter;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Exception implements Stub
+{
+ private $exception;
+
+ public function __construct(Throwable $exception)
+ {
+ $this->exception = $exception;
+ }
+
+ /**
+ * @throws Throwable
+ */
+ public function invoke(Invocation $invocation): void
+ {
+ throw $this->exception;
+ }
+
+ public function toString(): string
+ {
+ $exporter = new Exporter;
+
+ return sprintf(
+ 'raise user-specified exception %s',
+ $exporter->export($this->exception)
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php
new file mode 100644
index 000000000..c7b3f8f41
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnArgument.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Stub;
+
+use function sprintf;
+use PHPUnit\Framework\MockObject\Invocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ReturnArgument implements Stub
+{
+ /**
+ * @var int
+ */
+ private $argumentIndex;
+
+ public function __construct($argumentIndex)
+ {
+ $this->argumentIndex = $argumentIndex;
+ }
+
+ public function invoke(Invocation $invocation)
+ {
+ if (isset($invocation->getParameters()[$this->argumentIndex])) {
+ return $invocation->getParameters()[$this->argumentIndex];
+ }
+ }
+
+ public function toString(): string
+ {
+ return sprintf('return argument #%d', $this->argumentIndex);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php
new file mode 100644
index 000000000..e02181e90
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnCallback.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Stub;
+
+use function call_user_func_array;
+use function get_class;
+use function is_array;
+use function is_object;
+use function sprintf;
+use PHPUnit\Framework\MockObject\Invocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ReturnCallback implements Stub
+{
+ private $callback;
+
+ public function __construct($callback)
+ {
+ $this->callback = $callback;
+ }
+
+ public function invoke(Invocation $invocation)
+ {
+ return call_user_func_array($this->callback, $invocation->getParameters());
+ }
+
+ public function toString(): string
+ {
+ if (is_array($this->callback)) {
+ if (is_object($this->callback[0])) {
+ $class = get_class($this->callback[0]);
+ $type = '->';
+ } else {
+ $class = $this->callback[0];
+ $type = '::';
+ }
+
+ return sprintf(
+ 'return result of user defined callback %s%s%s() with the ' .
+ 'passed arguments',
+ $class,
+ $type,
+ $this->callback[1]
+ );
+ }
+
+ return 'return result of user defined callback ' . $this->callback .
+ ' with the passed arguments';
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php
new file mode 100644
index 000000000..0d288cebe
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnReference.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Stub;
+
+use function sprintf;
+use PHPUnit\Framework\MockObject\Invocation;
+use SebastianBergmann\Exporter\Exporter;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ReturnReference implements Stub
+{
+ /**
+ * @var mixed
+ */
+ private $reference;
+
+ public function __construct(&$reference)
+ {
+ $this->reference = &$reference;
+ }
+
+ public function invoke(Invocation $invocation)
+ {
+ return $this->reference;
+ }
+
+ public function toString(): string
+ {
+ $exporter = new Exporter;
+
+ return sprintf(
+ 'return user-specified reference %s',
+ $exporter->export($this->reference)
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php
new file mode 100644
index 000000000..6d2137bfb
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnSelf.php
@@ -0,0 +1,32 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Stub;
+
+use PHPUnit\Framework\MockObject\Invocation;
+use PHPUnit\Framework\MockObject\RuntimeException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ReturnSelf implements Stub
+{
+ /**
+ * @throws RuntimeException
+ */
+ public function invoke(Invocation $invocation)
+ {
+ return $invocation->getObject();
+ }
+
+ public function toString(): string
+ {
+ return 'return the current object';
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php
new file mode 100644
index 000000000..fbcd0a07a
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnStub.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Stub;
+
+use function sprintf;
+use PHPUnit\Framework\MockObject\Invocation;
+use SebastianBergmann\Exporter\Exporter;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ReturnStub implements Stub
+{
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ public function invoke(Invocation $invocation)
+ {
+ return $this->value;
+ }
+
+ public function toString(): string
+ {
+ $exporter = new Exporter;
+
+ return sprintf(
+ 'return user-specified value %s',
+ $exporter->export($this->value)
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php
new file mode 100644
index 000000000..5fcd3a09a
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/ReturnValueMap.php
@@ -0,0 +1,53 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Stub;
+
+use function array_pop;
+use function count;
+use function is_array;
+use PHPUnit\Framework\MockObject\Invocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ReturnValueMap implements Stub
+{
+ /**
+ * @var array
+ */
+ private $valueMap;
+
+ public function __construct(array $valueMap)
+ {
+ $this->valueMap = $valueMap;
+ }
+
+ public function invoke(Invocation $invocation)
+ {
+ $parameterCount = count($invocation->getParameters());
+
+ foreach ($this->valueMap as $map) {
+ if (!is_array($map) || $parameterCount !== (count($map) - 1)) {
+ continue;
+ }
+
+ $return = array_pop($map);
+
+ if ($invocation->getParameters() === $map) {
+ return $return;
+ }
+ }
+ }
+
+ public function toString(): string
+ {
+ return 'return value from a map';
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php
new file mode 100644
index 000000000..15cfce5c3
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Stub/Stub.php
@@ -0,0 +1,27 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Stub;
+
+use PHPUnit\Framework\MockObject\Invocation;
+use PHPUnit\Framework\SelfDescribing;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface Stub extends SelfDescribing
+{
+ /**
+ * Fakes the processing of the invocation $invocation by returning a
+ * specific value.
+ *
+ * @param Invocation $invocation The invocation which was mocked and matched by the current method and argument matchers
+ */
+ public function invoke(Invocation $invocation);
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Verifiable.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Verifiable.php
new file mode 100644
index 000000000..8c9a82c5a
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Verifiable.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject;
+
+use PHPUnit\Framework\ExpectationFailedException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface Verifiable
+{
+ /**
+ * Verifies that the current expectation is valid. If everything is OK the
+ * code should just return, if not it must throw an exception.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function verify(): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Reorderable.php b/vendor/phpunit/phpunit/src/Framework/Reorderable.php
new file mode 100644
index 000000000..34951f8dc
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Reorderable.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface Reorderable
+{
+ public function sortId(): string;
+
+ /**
+ * @return list<ExecutionOrderDependency>
+ */
+ public function provides(): array;
+
+ /**
+ * @return list<ExecutionOrderDependency>
+ */
+ public function requires(): array;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php b/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php
new file mode 100644
index 000000000..73034f650
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/SelfDescribing.php
@@ -0,0 +1,21 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface SelfDescribing
+{
+ /**
+ * Returns a string representation of the object.
+ */
+ public function toString(): string;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/SkippedTest.php b/vendor/phpunit/phpunit/src/Framework/SkippedTest.php
new file mode 100644
index 000000000..a12aa402d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/SkippedTest.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface SkippedTest extends Throwable
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php b/vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php
new file mode 100644
index 000000000..51c00619c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/SkippedTestCase.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class SkippedTestCase extends TestCase
+{
+ /**
+ * @var bool
+ */
+ protected $backupGlobals = false;
+
+ /**
+ * @var bool
+ */
+ protected $backupStaticAttributes = false;
+
+ /**
+ * @var bool
+ */
+ protected $runTestInSeparateProcess = false;
+
+ /**
+ * @var string
+ */
+ private $message;
+
+ public function __construct(string $className, string $methodName, string $message = '')
+ {
+ parent::__construct($className . '::' . $methodName);
+
+ $this->message = $message;
+ }
+
+ public function getMessage(): string
+ {
+ return $this->message;
+ }
+
+ /**
+ * Returns a string representation of the test case.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function toString(): string
+ {
+ return $this->getName();
+ }
+
+ /**
+ * @throws Exception
+ */
+ protected function runTest(): void
+ {
+ $this->markTestSkipped($this->message);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/Test.php b/vendor/phpunit/phpunit/src/Framework/Test.php
new file mode 100644
index 000000000..be0dcd0ef
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/Test.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use Countable;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+interface Test extends Countable
+{
+ /**
+ * Runs a test and collects its result in a TestResult instance.
+ */
+ public function run(TestResult $result = null): TestResult;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestBuilder.php b/vendor/phpunit/phpunit/src/Framework/TestBuilder.php
new file mode 100644
index 000000000..5dd91e219
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/TestBuilder.php
@@ -0,0 +1,239 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use function assert;
+use function count;
+use function get_class;
+use function sprintf;
+use function trim;
+use PHPUnit\Util\Filter;
+use PHPUnit\Util\InvalidDataSetException;
+use PHPUnit\Util\Test as TestUtil;
+use ReflectionClass;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestBuilder
+{
+ public function build(ReflectionClass $theClass, string $methodName): Test
+ {
+ $className = $theClass->getName();
+
+ if (!$theClass->isInstantiable()) {
+ return new ErrorTestCase(
+ sprintf('Cannot instantiate class "%s".', $className)
+ );
+ }
+
+ $backupSettings = TestUtil::getBackupSettings(
+ $className,
+ $methodName
+ );
+
+ $preserveGlobalState = TestUtil::getPreserveGlobalStateSettings(
+ $className,
+ $methodName
+ );
+
+ $runTestInSeparateProcess = TestUtil::getProcessIsolationSettings(
+ $className,
+ $methodName
+ );
+
+ $runClassInSeparateProcess = TestUtil::getClassProcessIsolationSettings(
+ $className,
+ $methodName
+ );
+
+ $constructor = $theClass->getConstructor();
+
+ if ($constructor === null) {
+ throw new Exception('No valid test provided.');
+ }
+
+ $parameters = $constructor->getParameters();
+
+ // TestCase() or TestCase($name)
+ if (count($parameters) < 2) {
+ $test = $this->buildTestWithoutData($className);
+ } // TestCase($name, $data)
+ else {
+ try {
+ $data = TestUtil::getProvidedData(
+ $className,
+ $methodName
+ );
+ } catch (IncompleteTestError $e) {
+ $message = sprintf(
+ "Test for %s::%s marked incomplete by data provider\n%s",
+ $className,
+ $methodName,
+ $this->throwableToString($e)
+ );
+
+ $data = new IncompleteTestCase($className, $methodName, $message);
+ } catch (SkippedTestError $e) {
+ $message = sprintf(
+ "Test for %s::%s skipped by data provider\n%s",
+ $className,
+ $methodName,
+ $this->throwableToString($e)
+ );
+
+ $data = new SkippedTestCase($className, $methodName, $message);
+ } catch (Throwable $t) {
+ $message = sprintf(
+ "The data provider specified for %s::%s is invalid.\n%s",
+ $className,
+ $methodName,
+ $this->throwableToString($t)
+ );
+
+ $data = new ErrorTestCase($message);
+ }
+
+ // Test method with @dataProvider.
+ if (isset($data)) {
+ $test = $this->buildDataProviderTestSuite(
+ $methodName,
+ $className,
+ $data,
+ $runTestInSeparateProcess,
+ $preserveGlobalState,
+ $runClassInSeparateProcess,
+ $backupSettings
+ );
+ } else {
+ $test = $this->buildTestWithoutData($className);
+ }
+ }
+
+ if ($test instanceof TestCase) {
+ $test->setName($methodName);
+ $this->configureTestCase(
+ $test,
+ $runTestInSeparateProcess,
+ $preserveGlobalState,
+ $runClassInSeparateProcess,
+ $backupSettings
+ );
+ }
+
+ return $test;
+ }
+
+ /** @psalm-param class-string $className */
+ private function buildTestWithoutData(string $className)
+ {
+ return new $className;
+ }
+
+ /** @psalm-param class-string $className */
+ private function buildDataProviderTestSuite(
+ string $methodName,
+ string $className,
+ $data,
+ bool $runTestInSeparateProcess,
+ ?bool $preserveGlobalState,
+ bool $runClassInSeparateProcess,
+ array $backupSettings
+ ): DataProviderTestSuite {
+ $dataProviderTestSuite = new DataProviderTestSuite(
+ $className . '::' . $methodName
+ );
+
+ $groups = TestUtil::getGroups($className, $methodName);
+
+ if ($data instanceof ErrorTestCase ||
+ $data instanceof SkippedTestCase ||
+ $data instanceof IncompleteTestCase) {
+ $dataProviderTestSuite->addTest($data, $groups);
+ } else {
+ foreach ($data as $_dataName => $_data) {
+ $_test = new $className($methodName, $_data, $_dataName);
+
+ assert($_test instanceof TestCase);
+
+ $this->configureTestCase(
+ $_test,
+ $runTestInSeparateProcess,
+ $preserveGlobalState,
+ $runClassInSeparateProcess,
+ $backupSettings
+ );
+
+ $dataProviderTestSuite->addTest($_test, $groups);
+ }
+ }
+
+ return $dataProviderTestSuite;
+ }
+
+ private function configureTestCase(
+ TestCase $test,
+ bool $runTestInSeparateProcess,
+ ?bool $preserveGlobalState,
+ bool $runClassInSeparateProcess,
+ array $backupSettings
+ ): void {
+ if ($runTestInSeparateProcess) {
+ $test->setRunTestInSeparateProcess(true);
+
+ if ($preserveGlobalState !== null) {
+ $test->setPreserveGlobalState($preserveGlobalState);
+ }
+ }
+
+ if ($runClassInSeparateProcess) {
+ $test->setRunClassInSeparateProcess(true);
+
+ if ($preserveGlobalState !== null) {
+ $test->setPreserveGlobalState($preserveGlobalState);
+ }
+ }
+
+ if ($backupSettings['backupGlobals'] !== null) {
+ $test->setBackupGlobals($backupSettings['backupGlobals']);
+ }
+
+ if ($backupSettings['backupStaticAttributes'] !== null) {
+ $test->setBackupStaticAttributes(
+ $backupSettings['backupStaticAttributes']
+ );
+ }
+ }
+
+ private function throwableToString(Throwable $t): string
+ {
+ $message = $t->getMessage();
+
+ if (empty(trim($message))) {
+ $message = '<no message>';
+ }
+
+ if ($t instanceof InvalidDataSetException) {
+ return sprintf(
+ "%s\n%s",
+ $message,
+ Filter::getFilteredStacktrace($t)
+ );
+ }
+
+ return sprintf(
+ "%s: %s\n%s",
+ get_class($t),
+ $message,
+ Filter::getFilteredStacktrace($t)
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestCase.php b/vendor/phpunit/phpunit/src/Framework/TestCase.php
new file mode 100644
index 000000000..f90245bd1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/TestCase.php
@@ -0,0 +1,2581 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use const LC_ALL;
+use const LC_COLLATE;
+use const LC_CTYPE;
+use const LC_MONETARY;
+use const LC_NUMERIC;
+use const LC_TIME;
+use const PATHINFO_FILENAME;
+use const PHP_EOL;
+use const PHP_URL_PATH;
+use function array_filter;
+use function array_flip;
+use function array_keys;
+use function array_merge;
+use function array_pop;
+use function array_search;
+use function array_unique;
+use function array_values;
+use function basename;
+use function call_user_func;
+use function chdir;
+use function class_exists;
+use function clearstatcache;
+use function count;
+use function debug_backtrace;
+use function defined;
+use function explode;
+use function get_class;
+use function get_include_path;
+use function getcwd;
+use function implode;
+use function in_array;
+use function ini_set;
+use function is_array;
+use function is_callable;
+use function is_int;
+use function is_object;
+use function is_string;
+use function libxml_clear_errors;
+use function method_exists;
+use function ob_end_clean;
+use function ob_get_contents;
+use function ob_get_level;
+use function ob_start;
+use function parse_url;
+use function pathinfo;
+use function preg_replace;
+use function serialize;
+use function setlocale;
+use function sprintf;
+use function strpos;
+use function substr;
+use function trim;
+use function var_export;
+use DeepCopy\DeepCopy;
+use PHPUnit\Framework\Constraint\Exception as ExceptionConstraint;
+use PHPUnit\Framework\Constraint\ExceptionCode;
+use PHPUnit\Framework\Constraint\ExceptionMessage;
+use PHPUnit\Framework\Constraint\ExceptionMessageRegularExpression;
+use PHPUnit\Framework\Constraint\LogicalOr;
+use PHPUnit\Framework\Error\Deprecated;
+use PHPUnit\Framework\Error\Error;
+use PHPUnit\Framework\Error\Notice;
+use PHPUnit\Framework\Error\Warning as WarningError;
+use PHPUnit\Framework\MockObject\Generator as MockGenerator;
+use PHPUnit\Framework\MockObject\MockBuilder;
+use PHPUnit\Framework\MockObject\MockObject;
+use PHPUnit\Framework\MockObject\Rule\AnyInvokedCount as AnyInvokedCountMatcher;
+use PHPUnit\Framework\MockObject\Rule\InvokedAtIndex as InvokedAtIndexMatcher;
+use PHPUnit\Framework\MockObject\Rule\InvokedAtLeastCount as InvokedAtLeastCountMatcher;
+use PHPUnit\Framework\MockObject\Rule\InvokedAtLeastOnce as InvokedAtLeastOnceMatcher;
+use PHPUnit\Framework\MockObject\Rule\InvokedAtMostCount as InvokedAtMostCountMatcher;
+use PHPUnit\Framework\MockObject\Rule\InvokedCount as InvokedCountMatcher;
+use PHPUnit\Framework\MockObject\Stub;
+use PHPUnit\Framework\MockObject\Stub\ConsecutiveCalls as ConsecutiveCallsStub;
+use PHPUnit\Framework\MockObject\Stub\Exception as ExceptionStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnArgument as ReturnArgumentStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnCallback as ReturnCallbackStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnSelf as ReturnSelfStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnStub;
+use PHPUnit\Framework\MockObject\Stub\ReturnValueMap as ReturnValueMapStub;
+use PHPUnit\Runner\BaseTestRunner;
+use PHPUnit\Runner\PhptTestCase;
+use PHPUnit\Util\Exception as UtilException;
+use PHPUnit\Util\GlobalState;
+use PHPUnit\Util\PHP\AbstractPhpProcess;
+use PHPUnit\Util\Test as TestUtil;
+use PHPUnit\Util\Type;
+use Prophecy\Exception\Prediction\PredictionException;
+use Prophecy\Prophecy\MethodProphecy;
+use Prophecy\Prophecy\ObjectProphecy;
+use Prophecy\Prophet;
+use ReflectionClass;
+use ReflectionException;
+use SebastianBergmann\Comparator\Comparator;
+use SebastianBergmann\Comparator\Factory as ComparatorFactory;
+use SebastianBergmann\Diff\Differ;
+use SebastianBergmann\Exporter\Exporter;
+use SebastianBergmann\GlobalState\ExcludeList;
+use SebastianBergmann\GlobalState\Restorer;
+use SebastianBergmann\GlobalState\Snapshot;
+use SebastianBergmann\ObjectEnumerator\Enumerator;
+use SebastianBergmann\Template\Template;
+use SoapClient;
+use Throwable;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class TestCase extends Assert implements Reorderable, SelfDescribing, Test
+{
+ private const LOCALE_CATEGORIES = [LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME];
+
+ /**
+ * @var ?bool
+ */
+ protected $backupGlobals;
+
+ /**
+ * @var string[]
+ */
+ protected $backupGlobalsExcludeList = [];
+
+ /**
+ * @var string[]
+ *
+ * @deprecated Use $backupGlobalsExcludeList instead
+ */
+ protected $backupGlobalsBlacklist = [];
+
+ /**
+ * @var bool
+ */
+ protected $backupStaticAttributes;
+
+ /**
+ * @var array<string,array<int,string>>
+ */
+ protected $backupStaticAttributesExcludeList = [];
+
+ /**
+ * @var array<string,array<int,string>>
+ *
+ * @deprecated Use $backupStaticAttributesExcludeList instead
+ */
+ protected $backupStaticAttributesBlacklist = [];
+
+ /**
+ * @var bool
+ */
+ protected $runTestInSeparateProcess;
+
+ /**
+ * @var bool
+ */
+ protected $preserveGlobalState = true;
+
+ /**
+ * @var list<ExecutionOrderDependency>
+ */
+ protected $providedTests = [];
+
+ /**
+ * @var bool
+ */
+ private $runClassInSeparateProcess;
+
+ /**
+ * @var bool
+ */
+ private $inIsolation = false;
+
+ /**
+ * @var array
+ */
+ private $data;
+
+ /**
+ * @var int|string
+ */
+ private $dataName;
+
+ /**
+ * @var null|string
+ */
+ private $expectedException;
+
+ /**
+ * @var null|string
+ */
+ private $expectedExceptionMessage;
+
+ /**
+ * @var null|string
+ */
+ private $expectedExceptionMessageRegExp;
+
+ /**
+ * @var null|int|string
+ */
+ private $expectedExceptionCode;
+
+ /**
+ * @var string
+ */
+ private $name = '';
+
+ /**
+ * @var list<ExecutionOrderDependency>
+ */
+ private $dependencies = [];
+
+ /**
+ * @var array
+ */
+ private $dependencyInput = [];
+
+ /**
+ * @var array<string,string>
+ */
+ private $iniSettings = [];
+
+ /**
+ * @var array
+ */
+ private $locale = [];
+
+ /**
+ * @var MockObject[]
+ */
+ private $mockObjects = [];
+
+ /**
+ * @var MockGenerator
+ */
+ private $mockObjectGenerator;
+
+ /**
+ * @var int
+ */
+ private $status = BaseTestRunner::STATUS_UNKNOWN;
+
+ /**
+ * @var string
+ */
+ private $statusMessage = '';
+
+ /**
+ * @var int
+ */
+ private $numAssertions = 0;
+
+ /**
+ * @var TestResult
+ */
+ private $result;
+
+ /**
+ * @var mixed
+ */
+ private $testResult;
+
+ /**
+ * @var string
+ */
+ private $output = '';
+
+ /**
+ * @var ?string
+ */
+ private $outputExpectedRegex;
+
+ /**
+ * @var ?string
+ */
+ private $outputExpectedString;
+
+ /**
+ * @var mixed
+ */
+ private $outputCallback = false;
+
+ /**
+ * @var bool
+ */
+ private $outputBufferingActive = false;
+
+ /**
+ * @var int
+ */
+ private $outputBufferingLevel;
+
+ /**
+ * @var bool
+ */
+ private $outputRetrievedForAssertion = false;
+
+ /**
+ * @var ?Snapshot
+ */
+ private $snapshot;
+
+ /**
+ * @var \Prophecy\Prophet
+ */
+ private $prophet;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutChangesToGlobalState = false;
+
+ /**
+ * @var bool
+ */
+ private $registerMockObjectsFromTestArgumentsRecursively = false;
+
+ /**
+ * @var string[]
+ */
+ private $warnings = [];
+
+ /**
+ * @var string[]
+ */
+ private $groups = [];
+
+ /**
+ * @var bool
+ */
+ private $doesNotPerformAssertions = false;
+
+ /**
+ * @var Comparator[]
+ */
+ private $customComparators = [];
+
+ /**
+ * @var string[]
+ */
+ private $doubledTypes = [];
+
+ /**
+ * Returns a matcher that matches when the method is executed
+ * zero or more times.
+ */
+ public static function any(): AnyInvokedCountMatcher
+ {
+ return new AnyInvokedCountMatcher;
+ }
+
+ /**
+ * Returns a matcher that matches when the method is never executed.
+ */
+ public static function never(): InvokedCountMatcher
+ {
+ return new InvokedCountMatcher(0);
+ }
+
+ /**
+ * Returns a matcher that matches when the method is executed
+ * at least N times.
+ */
+ public static function atLeast(int $requiredInvocations): InvokedAtLeastCountMatcher
+ {
+ return new InvokedAtLeastCountMatcher(
+ $requiredInvocations
+ );
+ }
+
+ /**
+ * Returns a matcher that matches when the method is executed at least once.
+ */
+ public static function atLeastOnce(): InvokedAtLeastOnceMatcher
+ {
+ return new InvokedAtLeastOnceMatcher;
+ }
+
+ /**
+ * Returns a matcher that matches when the method is executed exactly once.
+ */
+ public static function once(): InvokedCountMatcher
+ {
+ return new InvokedCountMatcher(1);
+ }
+
+ /**
+ * Returns a matcher that matches when the method is executed
+ * exactly $count times.
+ */
+ public static function exactly(int $count): InvokedCountMatcher
+ {
+ return new InvokedCountMatcher($count);
+ }
+
+ /**
+ * Returns a matcher that matches when the method is executed
+ * at most N times.
+ */
+ public static function atMost(int $allowedInvocations): InvokedAtMostCountMatcher
+ {
+ return new InvokedAtMostCountMatcher($allowedInvocations);
+ }
+
+ /**
+ * Returns a matcher that matches when the method is executed
+ * at the given index.
+ *
+ * @deprecated https://github.com/sebastianbergmann/phpunit/issues/4297
+ * @codeCoverageIgnore
+ */
+ public static function at(int $index): InvokedAtIndexMatcher
+ {
+ $stack = debug_backtrace();
+
+ while (!empty($stack)) {
+ $frame = array_pop($stack);
+
+ if (isset($frame['object']) && $frame['object'] instanceof self) {
+ $frame['object']->addWarning(
+ 'The at() matcher has been deprecated. It will be removed in PHPUnit 10. Please refactor your test to not rely on the order in which methods are invoked.'
+ );
+
+ break;
+ }
+ }
+
+ return new InvokedAtIndexMatcher($index);
+ }
+
+ public static function returnValue($value): ReturnStub
+ {
+ return new ReturnStub($value);
+ }
+
+ public static function returnValueMap(array $valueMap): ReturnValueMapStub
+ {
+ return new ReturnValueMapStub($valueMap);
+ }
+
+ public static function returnArgument(int $argumentIndex): ReturnArgumentStub
+ {
+ return new ReturnArgumentStub($argumentIndex);
+ }
+
+ public static function returnCallback($callback): ReturnCallbackStub
+ {
+ return new ReturnCallbackStub($callback);
+ }
+
+ /**
+ * Returns the current object.
+ *
+ * This method is useful when mocking a fluent interface.
+ */
+ public static function returnSelf(): ReturnSelfStub
+ {
+ return new ReturnSelfStub;
+ }
+
+ public static function throwException(Throwable $exception): ExceptionStub
+ {
+ return new ExceptionStub($exception);
+ }
+
+ public static function onConsecutiveCalls(...$args): ConsecutiveCallsStub
+ {
+ return new ConsecutiveCallsStub($args);
+ }
+
+ /**
+ * @param int|string $dataName
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function __construct(?string $name = null, array $data = [], $dataName = '')
+ {
+ if ($name !== null) {
+ $this->setName($name);
+ }
+
+ $this->data = $data;
+ $this->dataName = $dataName;
+ }
+
+ /**
+ * This method is called before the first test of this test class is run.
+ */
+ public static function setUpBeforeClass(): void
+ {
+ }
+
+ /**
+ * This method is called after the last test of this test class is run.
+ */
+ public static function tearDownAfterClass(): void
+ {
+ }
+
+ /**
+ * This method is called before each test.
+ */
+ protected function setUp(): void
+ {
+ }
+
+ /**
+ * Performs assertions shared by all tests of a test case.
+ *
+ * This method is called between setUp() and test.
+ */
+ protected function assertPreConditions(): void
+ {
+ }
+
+ /**
+ * Performs assertions shared by all tests of a test case.
+ *
+ * This method is called between test and tearDown().
+ */
+ protected function assertPostConditions(): void
+ {
+ }
+
+ /**
+ * This method is called after each test.
+ */
+ protected function tearDown(): void
+ {
+ }
+
+ /**
+ * Returns a string representation of the test case.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ */
+ public function toString(): string
+ {
+ try {
+ $class = new ReflectionClass($this);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $buffer = sprintf(
+ '%s::%s',
+ $class->name,
+ $this->getName(false)
+ );
+
+ return $buffer . $this->getDataSetAsString();
+ }
+
+ public function count(): int
+ {
+ return 1;
+ }
+
+ public function getActualOutputForAssertion(): string
+ {
+ $this->outputRetrievedForAssertion = true;
+
+ return $this->getActualOutput();
+ }
+
+ public function expectOutputRegex(string $expectedRegex): void
+ {
+ $this->outputExpectedRegex = $expectedRegex;
+ }
+
+ public function expectOutputString(string $expectedString): void
+ {
+ $this->outputExpectedString = $expectedString;
+ }
+
+ /**
+ * @psalm-param class-string<\Throwable> $exception
+ */
+ public function expectException(string $exception): void
+ {
+ // @codeCoverageIgnoreStart
+ switch ($exception) {
+ case Deprecated::class:
+ $this->addWarning('Support for using expectException() with PHPUnit\Framework\Error\Deprecated is deprecated and will be removed in PHPUnit 10. Use expectDeprecation() instead.');
+
+ break;
+
+ case Error::class:
+ $this->addWarning('Support for using expectException() with PHPUnit\Framework\Error\Error is deprecated and will be removed in PHPUnit 10. Use expectError() instead.');
+
+ break;
+
+ case Notice::class:
+ $this->addWarning('Support for using expectException() with PHPUnit\Framework\Error\Notice is deprecated and will be removed in PHPUnit 10. Use expectNotice() instead.');
+
+ break;
+
+ case WarningError::class:
+ $this->addWarning('Support for using expectException() with PHPUnit\Framework\Error\Warning is deprecated and will be removed in PHPUnit 10. Use expectWarning() instead.');
+
+ break;
+ }
+ // @codeCoverageIgnoreEnd
+
+ $this->expectedException = $exception;
+ }
+
+ /**
+ * @param int|string $code
+ */
+ public function expectExceptionCode($code): void
+ {
+ $this->expectedExceptionCode = $code;
+ }
+
+ public function expectExceptionMessage(string $message): void
+ {
+ $this->expectedExceptionMessage = $message;
+ }
+
+ public function expectExceptionMessageMatches(string $regularExpression): void
+ {
+ $this->expectedExceptionMessageRegExp = $regularExpression;
+ }
+
+ /**
+ * Sets up an expectation for an exception to be raised by the code under test.
+ * Information for expected exception class, expected exception message, and
+ * expected exception code are retrieved from a given Exception object.
+ */
+ public function expectExceptionObject(\Exception $exception): void
+ {
+ $this->expectException(get_class($exception));
+ $this->expectExceptionMessage($exception->getMessage());
+ $this->expectExceptionCode($exception->getCode());
+ }
+
+ public function expectNotToPerformAssertions(): void
+ {
+ $this->doesNotPerformAssertions = true;
+ }
+
+ public function expectDeprecation(): void
+ {
+ $this->expectedException = Deprecated::class;
+ }
+
+ public function expectDeprecationMessage(string $message): void
+ {
+ $this->expectExceptionMessage($message);
+ }
+
+ public function expectDeprecationMessageMatches(string $regularExpression): void
+ {
+ $this->expectExceptionMessageMatches($regularExpression);
+ }
+
+ public function expectNotice(): void
+ {
+ $this->expectedException = Notice::class;
+ }
+
+ public function expectNoticeMessage(string $message): void
+ {
+ $this->expectExceptionMessage($message);
+ }
+
+ public function expectNoticeMessageMatches(string $regularExpression): void
+ {
+ $this->expectExceptionMessageMatches($regularExpression);
+ }
+
+ public function expectWarning(): void
+ {
+ $this->expectedException = WarningError::class;
+ }
+
+ public function expectWarningMessage(string $message): void
+ {
+ $this->expectExceptionMessage($message);
+ }
+
+ public function expectWarningMessageMatches(string $regularExpression): void
+ {
+ $this->expectExceptionMessageMatches($regularExpression);
+ }
+
+ public function expectError(): void
+ {
+ $this->expectedException = Error::class;
+ }
+
+ public function expectErrorMessage(string $message): void
+ {
+ $this->expectExceptionMessage($message);
+ }
+
+ public function expectErrorMessageMatches(string $regularExpression): void
+ {
+ $this->expectExceptionMessageMatches($regularExpression);
+ }
+
+ public function getStatus(): int
+ {
+ return $this->status;
+ }
+
+ public function markAsRisky(): void
+ {
+ $this->status = BaseTestRunner::STATUS_RISKY;
+ }
+
+ public function getStatusMessage(): string
+ {
+ return $this->statusMessage;
+ }
+
+ public function hasFailed(): bool
+ {
+ $status = $this->getStatus();
+
+ return $status === BaseTestRunner::STATUS_FAILURE || $status === BaseTestRunner::STATUS_ERROR;
+ }
+
+ /**
+ * Runs the test case and collects the results in a TestResult object.
+ * If no TestResult object is passed a new one will be created.
+ *
+ * @throws \SebastianBergmann\CodeCoverage\InvalidArgumentException
+ * @throws \SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws CodeCoverageException
+ * @throws UtilException
+ */
+ public function run(TestResult $result = null): TestResult
+ {
+ if ($result === null) {
+ $result = $this->createResult();
+ }
+
+ if (!$this instanceof ErrorTestCase && !$this instanceof WarningTestCase) {
+ $this->setTestResultObject($result);
+ }
+
+ if (!$this instanceof ErrorTestCase &&
+ !$this instanceof WarningTestCase &&
+ !$this instanceof SkippedTestCase &&
+ !$this->handleDependencies()) {
+ return $result;
+ }
+
+ if ($this->runInSeparateProcess()) {
+ $runEntireClass = $this->runClassInSeparateProcess && !$this->runTestInSeparateProcess;
+
+ try {
+ $class = new ReflectionClass($this);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if ($runEntireClass) {
+ $template = new Template(
+ __DIR__ . '/../Util/PHP/Template/TestCaseClass.tpl'
+ );
+ } else {
+ $template = new Template(
+ __DIR__ . '/../Util/PHP/Template/TestCaseMethod.tpl'
+ );
+ }
+
+ if ($this->preserveGlobalState) {
+ $constants = GlobalState::getConstantsAsString();
+ $globals = GlobalState::getGlobalsAsString();
+ $includedFiles = GlobalState::getIncludedFilesAsString();
+ $iniSettings = GlobalState::getIniSettingsAsString();
+ } else {
+ $constants = '';
+
+ if (!empty($GLOBALS['__PHPUNIT_BOOTSTRAP'])) {
+ $globals = '$GLOBALS[\'__PHPUNIT_BOOTSTRAP\'] = ' . var_export($GLOBALS['__PHPUNIT_BOOTSTRAP'], true) . ";\n";
+ } else {
+ $globals = '';
+ }
+
+ $includedFiles = '';
+ $iniSettings = '';
+ }
+
+ $coverage = $result->getCollectCodeCoverageInformation() ? 'true' : 'false';
+ $isStrictAboutTestsThatDoNotTestAnything = $result->isStrictAboutTestsThatDoNotTestAnything() ? 'true' : 'false';
+ $isStrictAboutOutputDuringTests = $result->isStrictAboutOutputDuringTests() ? 'true' : 'false';
+ $enforcesTimeLimit = $result->enforcesTimeLimit() ? 'true' : 'false';
+ $isStrictAboutTodoAnnotatedTests = $result->isStrictAboutTodoAnnotatedTests() ? 'true' : 'false';
+ $isStrictAboutResourceUsageDuringSmallTests = $result->isStrictAboutResourceUsageDuringSmallTests() ? 'true' : 'false';
+
+ if (defined('PHPUNIT_COMPOSER_INSTALL')) {
+ $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, true);
+ } else {
+ $composerAutoload = '\'\'';
+ }
+
+ if (defined('__PHPUNIT_PHAR__')) {
+ $phar = var_export(__PHPUNIT_PHAR__, true);
+ } else {
+ $phar = '\'\'';
+ }
+
+ $codeCoverage = $result->getCodeCoverage();
+ $codeCoverageFilter = null;
+ $cachesStaticAnalysis = 'false';
+ $codeCoverageCacheDirectory = null;
+ $driverMethod = 'forLineCoverage';
+
+ if ($codeCoverage) {
+ $codeCoverageFilter = $codeCoverage->filter();
+
+ if ($codeCoverage->collectsBranchAndPathCoverage()) {
+ $driverMethod = 'forLineAndPathCoverage';
+ }
+
+ if ($codeCoverage->cachesStaticAnalysis()) {
+ $cachesStaticAnalysis = 'true';
+ $codeCoverageCacheDirectory = $codeCoverage->cacheDirectory();
+ }
+ }
+
+ $data = var_export(serialize($this->data), true);
+ $dataName = var_export($this->dataName, true);
+ $dependencyInput = var_export(serialize($this->dependencyInput), true);
+ $includePath = var_export(get_include_path(), true);
+ $codeCoverageFilter = var_export(serialize($codeCoverageFilter), true);
+ $codeCoverageCacheDirectory = var_export(serialize($codeCoverageCacheDirectory), true);
+ // must do these fixes because TestCaseMethod.tpl has unserialize('{data}') in it, and we can't break BC
+ // the lines above used to use addcslashes() rather than var_export(), which breaks null byte escape sequences
+ $data = "'." . $data . ".'";
+ $dataName = "'.(" . $dataName . ").'";
+ $dependencyInput = "'." . $dependencyInput . ".'";
+ $includePath = "'." . $includePath . ".'";
+ $codeCoverageFilter = "'." . $codeCoverageFilter . ".'";
+ $codeCoverageCacheDirectory = "'." . $codeCoverageCacheDirectory . ".'";
+
+ $configurationFilePath = $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] ?? '';
+
+ $var = [
+ 'composerAutoload' => $composerAutoload,
+ 'phar' => $phar,
+ 'filename' => $class->getFileName(),
+ 'className' => $class->getName(),
+ 'collectCodeCoverageInformation' => $coverage,
+ 'cachesStaticAnalysis' => $cachesStaticAnalysis,
+ 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory,
+ 'driverMethod' => $driverMethod,
+ 'data' => $data,
+ 'dataName' => $dataName,
+ 'dependencyInput' => $dependencyInput,
+ 'constants' => $constants,
+ 'globals' => $globals,
+ 'include_path' => $includePath,
+ 'included_files' => $includedFiles,
+ 'iniSettings' => $iniSettings,
+ 'isStrictAboutTestsThatDoNotTestAnything' => $isStrictAboutTestsThatDoNotTestAnything,
+ 'isStrictAboutOutputDuringTests' => $isStrictAboutOutputDuringTests,
+ 'enforcesTimeLimit' => $enforcesTimeLimit,
+ 'isStrictAboutTodoAnnotatedTests' => $isStrictAboutTodoAnnotatedTests,
+ 'isStrictAboutResourceUsageDuringSmallTests' => $isStrictAboutResourceUsageDuringSmallTests,
+ 'codeCoverageFilter' => $codeCoverageFilter,
+ 'configurationFilePath' => $configurationFilePath,
+ 'name' => $this->getName(false),
+ ];
+
+ if (!$runEntireClass) {
+ $var['methodName'] = $this->name;
+ }
+
+ $template->setVar($var);
+
+ $php = AbstractPhpProcess::factory();
+ $php->runTestJob($template->render(), $this, $result);
+ } else {
+ $result->run($this);
+ }
+
+ $this->result = null;
+
+ return $result;
+ }
+
+ /**
+ * Returns a builder object to create mock objects using a fluent interface.
+ *
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType> $className
+ * @psalm-return MockBuilder<RealInstanceType>
+ */
+ public function getMockBuilder(string $className): MockBuilder
+ {
+ $this->recordDoubledType($className);
+
+ return new MockBuilder($this, $className);
+ }
+
+ public function registerComparator(Comparator $comparator): void
+ {
+ ComparatorFactory::getInstance()->register($comparator);
+
+ $this->customComparators[] = $comparator;
+ }
+
+ /**
+ * @return string[]
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function doubledTypes(): array
+ {
+ return array_unique($this->doubledTypes);
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getGroups(): array
+ {
+ return $this->groups;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setGroups(array $groups): void
+ {
+ $this->groups = $groups;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getName(bool $withDataSet = true): string
+ {
+ if ($withDataSet) {
+ return $this->name . $this->getDataSetAsString(false);
+ }
+
+ return $this->name;
+ }
+
+ /**
+ * Returns the size of the test.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getSize(): int
+ {
+ return TestUtil::getSize(
+ static::class,
+ $this->getName(false)
+ );
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function hasSize(): bool
+ {
+ return $this->getSize() !== TestUtil::UNKNOWN;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function isSmall(): bool
+ {
+ return $this->getSize() === TestUtil::SMALL;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function isMedium(): bool
+ {
+ return $this->getSize() === TestUtil::MEDIUM;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function isLarge(): bool
+ {
+ return $this->getSize() === TestUtil::LARGE;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getActualOutput(): string
+ {
+ if (!$this->outputBufferingActive) {
+ return $this->output;
+ }
+
+ return (string) ob_get_contents();
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function hasOutput(): bool
+ {
+ if ($this->output === '') {
+ return false;
+ }
+
+ if ($this->hasExpectationOnOutput()) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function doesNotPerformAssertions(): bool
+ {
+ return $this->doesNotPerformAssertions;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function hasExpectationOnOutput(): bool
+ {
+ return is_string($this->outputExpectedString) || is_string($this->outputExpectedRegex) || $this->outputRetrievedForAssertion;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getExpectedException(): ?string
+ {
+ return $this->expectedException;
+ }
+
+ /**
+ * @return null|int|string
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getExpectedExceptionCode()
+ {
+ return $this->expectedExceptionCode;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getExpectedExceptionMessage(): ?string
+ {
+ return $this->expectedExceptionMessage;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getExpectedExceptionMessageRegExp(): ?string
+ {
+ return $this->expectedExceptionMessageRegExp;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setRegisterMockObjectsFromTestArgumentsRecursively(bool $flag): void
+ {
+ $this->registerMockObjectsFromTestArgumentsRecursively = $flag;
+ }
+
+ /**
+ * @throws Throwable
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function runBare(): void
+ {
+ $this->numAssertions = 0;
+
+ $this->snapshotGlobalState();
+ $this->startOutputBuffering();
+ clearstatcache();
+ $currentWorkingDirectory = getcwd();
+
+ $hookMethods = TestUtil::getHookMethods(static::class);
+
+ $hasMetRequirements = false;
+
+ try {
+ $this->checkRequirements();
+ $hasMetRequirements = true;
+
+ if ($this->inIsolation) {
+ foreach ($hookMethods['beforeClass'] as $method) {
+ $this->{$method}();
+ }
+ }
+
+ $this->setDoesNotPerformAssertionsFromAnnotation();
+
+ foreach ($hookMethods['before'] as $method) {
+ $this->{$method}();
+ }
+
+ foreach ($hookMethods['preCondition'] as $method) {
+ $this->{$method}();
+ }
+
+ $this->testResult = $this->runTest();
+ $this->verifyMockObjects();
+
+ foreach ($hookMethods['postCondition'] as $method) {
+ $this->{$method}();
+ }
+
+ if (!empty($this->warnings)) {
+ throw new Warning(
+ implode(
+ "\n",
+ array_unique($this->warnings)
+ )
+ );
+ }
+
+ $this->status = BaseTestRunner::STATUS_PASSED;
+ } catch (IncompleteTest $e) {
+ $this->status = BaseTestRunner::STATUS_INCOMPLETE;
+ $this->statusMessage = $e->getMessage();
+ } catch (SkippedTest $e) {
+ $this->status = BaseTestRunner::STATUS_SKIPPED;
+ $this->statusMessage = $e->getMessage();
+ } catch (Warning $e) {
+ $this->status = BaseTestRunner::STATUS_WARNING;
+ $this->statusMessage = $e->getMessage();
+ } catch (AssertionFailedError $e) {
+ $this->status = BaseTestRunner::STATUS_FAILURE;
+ $this->statusMessage = $e->getMessage();
+ } catch (PredictionException $e) {
+ $this->status = BaseTestRunner::STATUS_FAILURE;
+ $this->statusMessage = $e->getMessage();
+ } catch (Throwable $_e) {
+ $e = $_e;
+ $this->status = BaseTestRunner::STATUS_ERROR;
+ $this->statusMessage = $_e->getMessage();
+ }
+
+ $this->mockObjects = [];
+ $this->prophet = null;
+
+ // Tear down the fixture. An exception raised in tearDown() will be
+ // caught and passed on when no exception was raised before.
+ try {
+ if ($hasMetRequirements) {
+ foreach ($hookMethods['after'] as $method) {
+ $this->{$method}();
+ }
+
+ if ($this->inIsolation) {
+ foreach ($hookMethods['afterClass'] as $method) {
+ $this->{$method}();
+ }
+ }
+ }
+ } catch (Throwable $_e) {
+ $e = $e ?? $_e;
+ }
+
+ try {
+ $this->stopOutputBuffering();
+ } catch (RiskyTestError $_e) {
+ $e = $e ?? $_e;
+ }
+
+ if (isset($_e)) {
+ $this->status = BaseTestRunner::STATUS_ERROR;
+ $this->statusMessage = $_e->getMessage();
+ }
+
+ clearstatcache();
+
+ if ($currentWorkingDirectory !== getcwd()) {
+ chdir($currentWorkingDirectory);
+ }
+
+ $this->restoreGlobalState();
+ $this->unregisterCustomComparators();
+ $this->cleanupIniSettings();
+ $this->cleanupLocaleSettings();
+ libxml_clear_errors();
+
+ // Perform assertion on output.
+ if (!isset($e)) {
+ try {
+ if ($this->outputExpectedRegex !== null) {
+ $this->assertMatchesRegularExpression($this->outputExpectedRegex, $this->output);
+ } elseif ($this->outputExpectedString !== null) {
+ $this->assertEquals($this->outputExpectedString, $this->output);
+ }
+ } catch (Throwable $_e) {
+ $e = $_e;
+ }
+ }
+
+ // Workaround for missing "finally".
+ if (isset($e)) {
+ if ($e instanceof PredictionException) {
+ $e = new AssertionFailedError($e->getMessage());
+ }
+
+ $this->onNotSuccessfulTest($e);
+ }
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setName(string $name): void
+ {
+ $this->name = $name;
+
+ if (is_callable($this->sortId(), true)) {
+ $this->providedTests = [new ExecutionOrderDependency($this->sortId())];
+ }
+ }
+
+ /**
+ * @param list<ExecutionOrderDependency> $dependencies
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setDependencies(array $dependencies): void
+ {
+ $this->dependencies = $dependencies;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setDependencyInput(array $dependencyInput): void
+ {
+ $this->dependencyInput = $dependencyInput;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setBeStrictAboutChangesToGlobalState(?bool $beStrictAboutChangesToGlobalState): void
+ {
+ $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setBackupGlobals(?bool $backupGlobals): void
+ {
+ if ($this->backupGlobals === null && $backupGlobals !== null) {
+ $this->backupGlobals = $backupGlobals;
+ }
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setBackupStaticAttributes(?bool $backupStaticAttributes): void
+ {
+ if ($this->backupStaticAttributes === null && $backupStaticAttributes !== null) {
+ $this->backupStaticAttributes = $backupStaticAttributes;
+ }
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setRunTestInSeparateProcess(bool $runTestInSeparateProcess): void
+ {
+ if ($this->runTestInSeparateProcess === null) {
+ $this->runTestInSeparateProcess = $runTestInSeparateProcess;
+ }
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setRunClassInSeparateProcess(bool $runClassInSeparateProcess): void
+ {
+ if ($this->runClassInSeparateProcess === null) {
+ $this->runClassInSeparateProcess = $runClassInSeparateProcess;
+ }
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setPreserveGlobalState(bool $preserveGlobalState): void
+ {
+ $this->preserveGlobalState = $preserveGlobalState;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setInIsolation(bool $inIsolation): void
+ {
+ $this->inIsolation = $inIsolation;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function isInIsolation(): bool
+ {
+ return $this->inIsolation;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getResult()
+ {
+ return $this->testResult;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setResult($result): void
+ {
+ $this->testResult = $result;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setOutputCallback(callable $callback): void
+ {
+ $this->outputCallback = $callback;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getTestResultObject(): ?TestResult
+ {
+ return $this->result;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function setTestResultObject(TestResult $result): void
+ {
+ $this->result = $result;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function registerMockObject(MockObject $mockObject): void
+ {
+ $this->mockObjects[] = $mockObject;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function addToAssertionCount(int $count): void
+ {
+ $this->numAssertions += $count;
+ }
+
+ /**
+ * Returns the number of assertions performed by this test.
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getNumAssertions(): int
+ {
+ return $this->numAssertions;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function usesDataProvider(): bool
+ {
+ return !empty($this->data);
+ }
+
+ /**
+ * @return int|string
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function dataName()
+ {
+ return $this->dataName;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getDataSetAsString(bool $includeData = true): string
+ {
+ $buffer = '';
+
+ if (!empty($this->data)) {
+ if (is_int($this->dataName)) {
+ $buffer .= sprintf(' with data set #%d', $this->dataName);
+ } else {
+ $buffer .= sprintf(' with data set "%s"', $this->dataName);
+ }
+
+ if ($includeData) {
+ $exporter = new Exporter;
+
+ $buffer .= sprintf(' (%s)', $exporter->shortenedRecursiveExport($this->data));
+ }
+ }
+
+ return $buffer;
+ }
+
+ /**
+ * Gets the data set of a TestCase.
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function getProvidedData(): array
+ {
+ return $this->data;
+ }
+
+ /**
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ public function addWarning(string $warning): void
+ {
+ $this->warnings[] = $warning;
+ }
+
+ public function sortId(): string
+ {
+ $id = $this->name;
+
+ if (strpos($id, '::') === false) {
+ $id = static::class . '::' . $id;
+ }
+
+ if ($this->usesDataProvider()) {
+ $id .= $this->getDataSetAsString(false);
+ }
+
+ return $id;
+ }
+
+ /**
+ * Returns the normalized test name as class::method.
+ *
+ * @return list<ExecutionOrderDependency>
+ */
+ public function provides(): array
+ {
+ return $this->providedTests;
+ }
+
+ /**
+ * Returns a list of normalized dependency names, class::method.
+ *
+ * This list can differ from the raw dependencies as the resolver has
+ * no need for the [!][shallow]clone prefix that is filtered out
+ * during normalization.
+ *
+ * @return list<ExecutionOrderDependency>
+ */
+ public function requires(): array
+ {
+ return $this->dependencies;
+ }
+
+ /**
+ * Override to run the test and assert its state.
+ *
+ * @throws \SebastianBergmann\ObjectEnumerator\InvalidArgumentException
+ * @throws AssertionFailedError
+ * @throws Exception
+ * @throws ExpectationFailedException
+ * @throws Throwable
+ */
+ protected function runTest()
+ {
+ if (trim($this->name) === '') {
+ throw new Exception(
+ 'PHPUnit\Framework\TestCase::$name must be a non-blank string.'
+ );
+ }
+
+ $testArguments = array_merge($this->data, $this->dependencyInput);
+
+ $this->registerMockObjectsFromTestArguments($testArguments);
+
+ try {
+ $testResult = $this->{$this->name}(...array_values($testArguments));
+ } catch (Throwable $exception) {
+ if (!$this->checkExceptionExpectations($exception)) {
+ throw $exception;
+ }
+
+ if ($this->expectedException !== null) {
+ if ($this->expectedException === Error::class) {
+ $this->assertThat(
+ $exception,
+ LogicalOr::fromConstraints(
+ new ExceptionConstraint(Error::class),
+ new ExceptionConstraint(\Error::class)
+ )
+ );
+ } else {
+ $this->assertThat(
+ $exception,
+ new ExceptionConstraint(
+ $this->expectedException
+ )
+ );
+ }
+ }
+
+ if ($this->expectedExceptionMessage !== null) {
+ $this->assertThat(
+ $exception,
+ new ExceptionMessage(
+ $this->expectedExceptionMessage
+ )
+ );
+ }
+
+ if ($this->expectedExceptionMessageRegExp !== null) {
+ $this->assertThat(
+ $exception,
+ new ExceptionMessageRegularExpression(
+ $this->expectedExceptionMessageRegExp
+ )
+ );
+ }
+
+ if ($this->expectedExceptionCode !== null) {
+ $this->assertThat(
+ $exception,
+ new ExceptionCode(
+ $this->expectedExceptionCode
+ )
+ );
+ }
+
+ return;
+ }
+
+ if ($this->expectedException !== null) {
+ $this->assertThat(
+ null,
+ new ExceptionConstraint(
+ $this->expectedException
+ )
+ );
+ } elseif ($this->expectedExceptionMessage !== null) {
+ $this->numAssertions++;
+
+ throw new AssertionFailedError(
+ sprintf(
+ 'Failed asserting that exception with message "%s" is thrown',
+ $this->expectedExceptionMessage
+ )
+ );
+ } elseif ($this->expectedExceptionMessageRegExp !== null) {
+ $this->numAssertions++;
+
+ throw new AssertionFailedError(
+ sprintf(
+ 'Failed asserting that exception with message matching "%s" is thrown',
+ $this->expectedExceptionMessageRegExp
+ )
+ );
+ } elseif ($this->expectedExceptionCode !== null) {
+ $this->numAssertions++;
+
+ throw new AssertionFailedError(
+ sprintf(
+ 'Failed asserting that exception with code "%s" is thrown',
+ $this->expectedExceptionCode
+ )
+ );
+ }
+
+ return $testResult;
+ }
+
+ /**
+ * This method is a wrapper for the ini_set() function that automatically
+ * resets the modified php.ini setting to its original value after the
+ * test is run.
+ *
+ * @throws Exception
+ */
+ protected function iniSet(string $varName, string $newValue): void
+ {
+ $currentValue = ini_set($varName, $newValue);
+
+ if ($currentValue !== false) {
+ $this->iniSettings[$varName] = $currentValue;
+ } else {
+ throw new Exception(
+ sprintf(
+ 'INI setting "%s" could not be set to "%s".',
+ $varName,
+ $newValue
+ )
+ );
+ }
+ }
+
+ /**
+ * This method is a wrapper for the setlocale() function that automatically
+ * resets the locale to its original value after the test is run.
+ *
+ * @throws Exception
+ */
+ protected function setLocale(...$args): void
+ {
+ if (count($args) < 2) {
+ throw new Exception;
+ }
+
+ [$category, $locale] = $args;
+
+ if (!in_array($category, self::LOCALE_CATEGORIES, true)) {
+ throw new Exception;
+ }
+
+ if (!is_array($locale) && !is_string($locale)) {
+ throw new Exception;
+ }
+
+ $this->locale[$category] = setlocale($category, 0);
+
+ $result = setlocale(...$args);
+
+ if ($result === false) {
+ throw new Exception(
+ 'The locale functionality is not implemented on your platform, ' .
+ 'the specified locale does not exist or the category name is ' .
+ 'invalid.'
+ );
+ }
+ }
+
+ /**
+ * Makes configurable stub for the specified class.
+ *
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType> $originalClassName
+ * @psalm-return Stub&RealInstanceType
+ */
+ protected function createStub(string $originalClassName): Stub
+ {
+ return $this->createMockObject($originalClassName);
+ }
+
+ /**
+ * Returns a mock object for the specified class.
+ *
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType> $originalClassName
+ * @psalm-return MockObject&RealInstanceType
+ */
+ protected function createMock(string $originalClassName): MockObject
+ {
+ return $this->createMockObject($originalClassName);
+ }
+
+ /**
+ * Returns a configured mock object for the specified class.
+ *
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType> $originalClassName
+ * @psalm-return MockObject&RealInstanceType
+ */
+ protected function createConfiguredMock(string $originalClassName, array $configuration): MockObject
+ {
+ $o = $this->createMockObject($originalClassName);
+
+ foreach ($configuration as $method => $return) {
+ $o->method($method)->willReturn($return);
+ }
+
+ return $o;
+ }
+
+ /**
+ * Returns a partial mock object for the specified class.
+ *
+ * @param string[] $methods
+ *
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType> $originalClassName
+ * @psalm-return MockObject&RealInstanceType
+ */
+ protected function createPartialMock(string $originalClassName, array $methods): MockObject
+ {
+ try {
+ $reflector = new ReflectionClass($originalClassName);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $mockedMethodsThatDontExist = array_filter(
+ $methods,
+ static function (string $method) use ($reflector)
+ {
+ return !$reflector->hasMethod($method);
+ }
+ );
+
+ if ($mockedMethodsThatDontExist) {
+ $this->addWarning(
+ sprintf(
+ 'createPartialMock() called with method(s) %s that do not exist in %s. This will not be allowed in future versions of PHPUnit.',
+ implode(', ', $mockedMethodsThatDontExist),
+ $originalClassName
+ )
+ );
+ }
+
+ return $this->getMockBuilder($originalClassName)
+ ->disableOriginalConstructor()
+ ->disableOriginalClone()
+ ->disableArgumentCloning()
+ ->disallowMockingUnknownTypes()
+ ->setMethods(empty($methods) ? null : $methods)
+ ->getMock();
+ }
+
+ /**
+ * Returns a test proxy for the specified class.
+ *
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType> $originalClassName
+ * @psalm-return MockObject&RealInstanceType
+ */
+ protected function createTestProxy(string $originalClassName, array $constructorArguments = []): MockObject
+ {
+ return $this->getMockBuilder($originalClassName)
+ ->setConstructorArgs($constructorArguments)
+ ->enableProxyingToOriginalMethods()
+ ->getMock();
+ }
+
+ /**
+ * Mocks the specified class and returns the name of the mocked class.
+ *
+ * @param null|array $methods $methods
+ *
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType>|string $originalClassName
+ * @psalm-return class-string<MockObject&RealInstanceType>
+ */
+ protected function getMockClass(string $originalClassName, $methods = [], array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = false, bool $callOriginalClone = true, bool $callAutoload = true, bool $cloneArguments = false): string
+ {
+ $this->recordDoubledType($originalClassName);
+
+ $mock = $this->getMockObjectGenerator()->getMock(
+ $originalClassName,
+ $methods,
+ $arguments,
+ $mockClassName,
+ $callOriginalConstructor,
+ $callOriginalClone,
+ $callAutoload,
+ $cloneArguments
+ );
+
+ return get_class($mock);
+ }
+
+ /**
+ * Returns a mock object for the specified abstract class with all abstract
+ * methods of the class mocked. Concrete methods are not mocked by default.
+ * To mock concrete methods, use the 7th parameter ($mockedMethods).
+ *
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType> $originalClassName
+ * @psalm-return MockObject&RealInstanceType
+ */
+ protected function getMockForAbstractClass(string $originalClassName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, array $mockedMethods = [], bool $cloneArguments = false): MockObject
+ {
+ $this->recordDoubledType($originalClassName);
+
+ $mockObject = $this->getMockObjectGenerator()->getMockForAbstractClass(
+ $originalClassName,
+ $arguments,
+ $mockClassName,
+ $callOriginalConstructor,
+ $callOriginalClone,
+ $callAutoload,
+ $mockedMethods,
+ $cloneArguments
+ );
+
+ $this->registerMockObject($mockObject);
+
+ return $mockObject;
+ }
+
+ /**
+ * Returns a mock object based on the given WSDL file.
+ *
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType>|string $originalClassName
+ * @psalm-return MockObject&RealInstanceType
+ */
+ protected function getMockFromWsdl(string $wsdlFile, string $originalClassName = '', string $mockClassName = '', array $methods = [], bool $callOriginalConstructor = true, array $options = []): MockObject
+ {
+ $this->recordDoubledType(SoapClient::class);
+
+ if ($originalClassName === '') {
+ $fileName = pathinfo(basename(parse_url($wsdlFile, PHP_URL_PATH)), PATHINFO_FILENAME);
+ $originalClassName = preg_replace('/\W/', '', $fileName);
+ }
+
+ if (!class_exists($originalClassName)) {
+ eval(
+ $this->getMockObjectGenerator()->generateClassFromWsdl(
+ $wsdlFile,
+ $originalClassName,
+ $methods,
+ $options
+ )
+ );
+ }
+
+ $mockObject = $this->getMockObjectGenerator()->getMock(
+ $originalClassName,
+ $methods,
+ ['', $options],
+ $mockClassName,
+ $callOriginalConstructor,
+ false,
+ false
+ );
+
+ $this->registerMockObject($mockObject);
+
+ return $mockObject;
+ }
+
+ /**
+ * Returns a mock object for the specified trait with all abstract methods
+ * of the trait mocked. Concrete methods to mock can be specified with the
+ * `$mockedMethods` parameter.
+ *
+ * @psalm-param trait-string $traitName
+ */
+ protected function getMockForTrait(string $traitName, array $arguments = [], string $mockClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true, array $mockedMethods = [], bool $cloneArguments = false): MockObject
+ {
+ $this->recordDoubledType($traitName);
+
+ $mockObject = $this->getMockObjectGenerator()->getMockForTrait(
+ $traitName,
+ $arguments,
+ $mockClassName,
+ $callOriginalConstructor,
+ $callOriginalClone,
+ $callAutoload,
+ $mockedMethods,
+ $cloneArguments
+ );
+
+ $this->registerMockObject($mockObject);
+
+ return $mockObject;
+ }
+
+ /**
+ * Returns an object for the specified trait.
+ *
+ * @psalm-param trait-string $traitName
+ */
+ protected function getObjectForTrait(string $traitName, array $arguments = [], string $traitClassName = '', bool $callOriginalConstructor = true, bool $callOriginalClone = true, bool $callAutoload = true): object
+ {
+ $this->recordDoubledType($traitName);
+
+ return $this->getMockObjectGenerator()->getObjectForTrait(
+ $traitName,
+ $traitClassName,
+ $callAutoload,
+ $callOriginalConstructor,
+ $arguments
+ );
+ }
+
+ /**
+ * @throws \Prophecy\Exception\Doubler\ClassNotFoundException
+ * @throws \Prophecy\Exception\Doubler\DoubleException
+ * @throws \Prophecy\Exception\Doubler\InterfaceNotFoundException
+ *
+ * @psalm-param class-string|null $classOrInterface
+ */
+ protected function prophesize(?string $classOrInterface = null): ObjectProphecy
+ {
+ $this->addWarning('PHPUnit\Framework\TestCase::prophesize() is deprecated and will be removed in PHPUnit 10. Please use the trait provided by phpspec/prophecy-phpunit.');
+
+ if (is_string($classOrInterface)) {
+ $this->recordDoubledType($classOrInterface);
+ }
+
+ return $this->getProphet()->prophesize($classOrInterface);
+ }
+
+ /**
+ * Creates a default TestResult object.
+ *
+ * @internal This method is not covered by the backward compatibility promise for PHPUnit
+ */
+ protected function createResult(): TestResult
+ {
+ return new TestResult;
+ }
+
+ /**
+ * This method is called when a test method did not execute successfully.
+ *
+ * @throws Throwable
+ */
+ protected function onNotSuccessfulTest(Throwable $t): void
+ {
+ throw $t;
+ }
+
+ protected function recordDoubledType(string $originalClassName): void
+ {
+ $this->doubledTypes[] = $originalClassName;
+ }
+
+ /**
+ * @throws Throwable
+ */
+ private function verifyMockObjects(): void
+ {
+ foreach ($this->mockObjects as $mockObject) {
+ if ($mockObject->__phpunit_hasMatchers()) {
+ $this->numAssertions++;
+ }
+
+ $mockObject->__phpunit_verify(
+ $this->shouldInvocationMockerBeReset($mockObject)
+ );
+ }
+
+ if ($this->prophet !== null) {
+ try {
+ $this->prophet->checkPredictions();
+ } finally {
+ foreach ($this->prophet->getProphecies() as $objectProphecy) {
+ foreach ($objectProphecy->getMethodProphecies() as $methodProphecies) {
+ foreach ($methodProphecies as $methodProphecy) {
+ /* @var MethodProphecy $methodProphecy */
+ $this->numAssertions += count($methodProphecy->getCheckedPredictions());
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * @throws SkippedTestError
+ * @throws SyntheticSkippedError
+ * @throws Warning
+ */
+ private function checkRequirements(): void
+ {
+ if (!$this->name || !method_exists($this, $this->name)) {
+ return;
+ }
+
+ $missingRequirements = TestUtil::getMissingRequirements(
+ static::class,
+ $this->name
+ );
+
+ if (!empty($missingRequirements)) {
+ $this->markTestSkipped(implode(PHP_EOL, $missingRequirements));
+ }
+ }
+
+ private function handleDependencies(): bool
+ {
+ if ([] === $this->dependencies || $this->inIsolation) {
+ return true;
+ }
+
+ $passed = $this->result->passed();
+ $passedKeys = array_keys($passed);
+ $numKeys = count($passedKeys);
+
+ for ($i = 0; $i < $numKeys; $i++) {
+ $pos = strpos($passedKeys[$i], ' with data set');
+
+ if ($pos !== false) {
+ $passedKeys[$i] = substr($passedKeys[$i], 0, $pos);
+ }
+ }
+
+ $passedKeys = array_flip(array_unique($passedKeys));
+
+ foreach ($this->dependencies as $dependency) {
+ if (!$dependency->isValid()) {
+ $this->markSkippedForNotSpecifyingDependency();
+
+ return false;
+ }
+
+ if ($dependency->targetIsClass()) {
+ $dependencyClassName = $dependency->getTargetClassName();
+
+ if (array_search($dependencyClassName, $this->result->passedClasses(), true) === false) {
+ $this->markSkippedForMissingDependency($dependency);
+
+ return false;
+ }
+
+ continue;
+ }
+
+ $dependencyTarget = $dependency->getTarget();
+
+ if (!isset($passedKeys[$dependencyTarget])) {
+ if (!$this->isCallableTestMethod($dependencyTarget)) {
+ $this->markWarningForUncallableDependency($dependency);
+ } else {
+ $this->markSkippedForMissingDependency($dependency);
+ }
+
+ return false;
+ }
+
+ if (isset($passed[$dependencyTarget])) {
+ if ($passed[$dependencyTarget]['size'] != \PHPUnit\Util\Test::UNKNOWN &&
+ $this->getSize() != \PHPUnit\Util\Test::UNKNOWN &&
+ $passed[$dependencyTarget]['size'] > $this->getSize()) {
+ $this->result->addError(
+ $this,
+ new SkippedTestError(
+ 'This test depends on a test that is larger than itself.'
+ ),
+ 0
+ );
+
+ return false;
+ }
+
+ if ($dependency->useDeepClone()) {
+ $deepCopy = new DeepCopy;
+ $deepCopy->skipUncloneable(false);
+
+ $this->dependencyInput[$dependencyTarget] = $deepCopy->copy($passed[$dependencyTarget]['result']);
+ } elseif ($dependency->useShallowClone()) {
+ $this->dependencyInput[$dependencyTarget] = clone $passed[$dependencyTarget]['result'];
+ } else {
+ $this->dependencyInput[$dependencyTarget] = $passed[$dependencyTarget]['result'];
+ }
+ } else {
+ $this->dependencyInput[$dependencyTarget] = null;
+ }
+ }
+
+ return true;
+ }
+
+ private function markSkippedForNotSpecifyingDependency(): void
+ {
+ $this->status = BaseTestRunner::STATUS_SKIPPED;
+
+ $this->result->startTest($this);
+
+ $this->result->addError(
+ $this,
+ new SkippedTestError(
+ 'This method has an invalid @depends annotation.'
+ ),
+ 0
+ );
+
+ $this->result->endTest($this, 0);
+ }
+
+ private function markSkippedForMissingDependency(ExecutionOrderDependency $dependency): void
+ {
+ $this->status = BaseTestRunner::STATUS_SKIPPED;
+
+ $this->result->startTest($this);
+
+ $this->result->addError(
+ $this,
+ new SkippedTestError(
+ sprintf(
+ 'This test depends on "%s" to pass.',
+ $dependency->getTarget()
+ )
+ ),
+ 0
+ );
+
+ $this->result->endTest($this, 0);
+ }
+
+ private function markWarningForUncallableDependency(ExecutionOrderDependency $dependency): void
+ {
+ $this->status = BaseTestRunner::STATUS_WARNING;
+
+ $this->result->startTest($this);
+
+ $this->result->addWarning(
+ $this,
+ new Warning(
+ sprintf(
+ 'This test depends on "%s" which does not exist.',
+ $dependency->getTarget()
+ )
+ ),
+ 0
+ );
+
+ $this->result->endTest($this, 0);
+ }
+
+ /**
+ * Get the mock object generator, creating it if it doesn't exist.
+ */
+ private function getMockObjectGenerator(): MockGenerator
+ {
+ if ($this->mockObjectGenerator === null) {
+ $this->mockObjectGenerator = new MockGenerator;
+ }
+
+ return $this->mockObjectGenerator;
+ }
+
+ private function startOutputBuffering(): void
+ {
+ ob_start();
+
+ $this->outputBufferingActive = true;
+ $this->outputBufferingLevel = ob_get_level();
+ }
+
+ /**
+ * @throws RiskyTestError
+ */
+ private function stopOutputBuffering(): void
+ {
+ if (ob_get_level() !== $this->outputBufferingLevel) {
+ while (ob_get_level() >= $this->outputBufferingLevel) {
+ ob_end_clean();
+ }
+
+ throw new RiskyTestError(
+ 'Test code or tested code did not (only) close its own output buffers'
+ );
+ }
+
+ $this->output = ob_get_contents();
+
+ if ($this->outputCallback !== false) {
+ $this->output = (string) call_user_func($this->outputCallback, $this->output);
+ }
+
+ ob_end_clean();
+
+ $this->outputBufferingActive = false;
+ $this->outputBufferingLevel = ob_get_level();
+ }
+
+ private function snapshotGlobalState(): void
+ {
+ if ($this->runTestInSeparateProcess || $this->inIsolation ||
+ (!$this->backupGlobals && !$this->backupStaticAttributes)) {
+ return;
+ }
+
+ $this->snapshot = $this->createGlobalStateSnapshot($this->backupGlobals === true);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws RiskyTestError
+ */
+ private function restoreGlobalState(): void
+ {
+ if (!$this->snapshot instanceof Snapshot) {
+ return;
+ }
+
+ if ($this->beStrictAboutChangesToGlobalState) {
+ try {
+ $this->compareGlobalStateSnapshots(
+ $this->snapshot,
+ $this->createGlobalStateSnapshot($this->backupGlobals === true)
+ );
+ } catch (RiskyTestError $rte) {
+ // Intentionally left empty
+ }
+ }
+
+ $restorer = new Restorer;
+
+ if ($this->backupGlobals) {
+ $restorer->restoreGlobalVariables($this->snapshot);
+ }
+
+ if ($this->backupStaticAttributes) {
+ $restorer->restoreStaticAttributes($this->snapshot);
+ }
+
+ $this->snapshot = null;
+
+ if (isset($rte)) {
+ throw $rte;
+ }
+ }
+
+ private function createGlobalStateSnapshot(bool $backupGlobals): Snapshot
+ {
+ $excludeList = new ExcludeList;
+
+ foreach ($this->backupGlobalsExcludeList as $globalVariable) {
+ $excludeList->addGlobalVariable($globalVariable);
+ }
+
+ if (!empty($this->backupGlobalsBlacklist)) {
+ $this->addWarning('PHPUnit\Framework\TestCase::$backupGlobalsBlacklist is deprecated and will be removed in PHPUnit 10. Please use PHPUnit\Framework\TestCase::$backupGlobalsExcludeList instead.');
+
+ foreach ($this->backupGlobalsBlacklist as $globalVariable) {
+ $excludeList->addGlobalVariable($globalVariable);
+ }
+ }
+
+ if (!defined('PHPUNIT_TESTSUITE')) {
+ $excludeList->addClassNamePrefix('PHPUnit');
+ $excludeList->addClassNamePrefix('SebastianBergmann\CodeCoverage');
+ $excludeList->addClassNamePrefix('SebastianBergmann\FileIterator');
+ $excludeList->addClassNamePrefix('SebastianBergmann\Invoker');
+ $excludeList->addClassNamePrefix('SebastianBergmann\Template');
+ $excludeList->addClassNamePrefix('SebastianBergmann\Timer');
+ $excludeList->addClassNamePrefix('Symfony');
+ $excludeList->addClassNamePrefix('Doctrine\Instantiator');
+ $excludeList->addClassNamePrefix('Prophecy');
+ $excludeList->addStaticAttribute(ComparatorFactory::class, 'instance');
+
+ foreach ($this->backupStaticAttributesExcludeList as $class => $attributes) {
+ foreach ($attributes as $attribute) {
+ $excludeList->addStaticAttribute($class, $attribute);
+ }
+ }
+
+ if (!empty($this->backupStaticAttributesBlacklist)) {
+ $this->addWarning('PHPUnit\Framework\TestCase::$backupStaticAttributesBlacklist is deprecated and will be removed in PHPUnit 10. Please use PHPUnit\Framework\TestCase::$backupStaticAttributesExcludeList instead.');
+
+ foreach ($this->backupStaticAttributesBlacklist as $class => $attributes) {
+ foreach ($attributes as $attribute) {
+ $excludeList->addStaticAttribute($class, $attribute);
+ }
+ }
+ }
+ }
+
+ return new Snapshot(
+ $excludeList,
+ $backupGlobals,
+ (bool) $this->backupStaticAttributes,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false
+ );
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws RiskyTestError
+ */
+ private function compareGlobalStateSnapshots(Snapshot $before, Snapshot $after): void
+ {
+ $backupGlobals = $this->backupGlobals === null || $this->backupGlobals;
+
+ if ($backupGlobals) {
+ $this->compareGlobalStateSnapshotPart(
+ $before->globalVariables(),
+ $after->globalVariables(),
+ "--- Global variables before the test\n+++ Global variables after the test\n"
+ );
+
+ $this->compareGlobalStateSnapshotPart(
+ $before->superGlobalVariables(),
+ $after->superGlobalVariables(),
+ "--- Super-global variables before the test\n+++ Super-global variables after the test\n"
+ );
+ }
+
+ if ($this->backupStaticAttributes) {
+ $this->compareGlobalStateSnapshotPart(
+ $before->staticAttributes(),
+ $after->staticAttributes(),
+ "--- Static attributes before the test\n+++ Static attributes after the test\n"
+ );
+ }
+ }
+
+ /**
+ * @throws RiskyTestError
+ */
+ private function compareGlobalStateSnapshotPart(array $before, array $after, string $header): void
+ {
+ if ($before != $after) {
+ $differ = new Differ($header);
+ $exporter = new Exporter;
+
+ $diff = $differ->diff(
+ $exporter->export($before),
+ $exporter->export($after)
+ );
+
+ throw new RiskyTestError(
+ $diff
+ );
+ }
+ }
+
+ private function getProphet(): Prophet
+ {
+ if ($this->prophet === null) {
+ $this->prophet = new Prophet;
+ }
+
+ return $this->prophet;
+ }
+
+ /**
+ * @throws \SebastianBergmann\ObjectEnumerator\InvalidArgumentException
+ */
+ private function shouldInvocationMockerBeReset(MockObject $mock): bool
+ {
+ $enumerator = new Enumerator;
+
+ foreach ($enumerator->enumerate($this->dependencyInput) as $object) {
+ if ($mock === $object) {
+ return false;
+ }
+ }
+
+ if (!is_array($this->testResult) && !is_object($this->testResult)) {
+ return true;
+ }
+
+ return !in_array($mock, $enumerator->enumerate($this->testResult), true);
+ }
+
+ /**
+ * @throws \SebastianBergmann\ObjectEnumerator\InvalidArgumentException
+ * @throws \SebastianBergmann\ObjectReflector\InvalidArgumentException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ private function registerMockObjectsFromTestArguments(array $testArguments, array &$visited = []): void
+ {
+ if ($this->registerMockObjectsFromTestArgumentsRecursively) {
+ foreach ((new Enumerator)->enumerate($testArguments) as $object) {
+ if ($object instanceof MockObject) {
+ $this->registerMockObject($object);
+ }
+ }
+ } else {
+ foreach ($testArguments as $testArgument) {
+ if ($testArgument instanceof MockObject) {
+ if (Type::isCloneable($testArgument)) {
+ $testArgument = clone $testArgument;
+ }
+
+ $this->registerMockObject($testArgument);
+ } elseif (is_array($testArgument) && !in_array($testArgument, $visited, true)) {
+ $visited[] = $testArgument;
+
+ $this->registerMockObjectsFromTestArguments(
+ $testArgument,
+ $visited
+ );
+ }
+ }
+ }
+ }
+
+ private function setDoesNotPerformAssertionsFromAnnotation(): void
+ {
+ $annotations = TestUtil::parseTestMethodAnnotations(
+ static::class,
+ $this->name
+ );
+
+ if (isset($annotations['method']['doesNotPerformAssertions'])) {
+ $this->doesNotPerformAssertions = true;
+ }
+ }
+
+ private function unregisterCustomComparators(): void
+ {
+ $factory = ComparatorFactory::getInstance();
+
+ foreach ($this->customComparators as $comparator) {
+ $factory->unregister($comparator);
+ }
+
+ $this->customComparators = [];
+ }
+
+ private function cleanupIniSettings(): void
+ {
+ foreach ($this->iniSettings as $varName => $oldValue) {
+ ini_set($varName, $oldValue);
+ }
+
+ $this->iniSettings = [];
+ }
+
+ private function cleanupLocaleSettings(): void
+ {
+ foreach ($this->locale as $category => $locale) {
+ setlocale($category, $locale);
+ }
+
+ $this->locale = [];
+ }
+
+ /**
+ * @throws Exception
+ */
+ private function checkExceptionExpectations(Throwable $throwable): bool
+ {
+ $result = false;
+
+ if ($this->expectedException !== null || $this->expectedExceptionCode !== null || $this->expectedExceptionMessage !== null || $this->expectedExceptionMessageRegExp !== null) {
+ $result = true;
+ }
+
+ if ($throwable instanceof Exception) {
+ $result = false;
+ }
+
+ if (is_string($this->expectedException)) {
+ try {
+ $reflector = new ReflectionClass($this->expectedException);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if ($this->expectedException === 'PHPUnit\Framework\Exception' ||
+ $this->expectedException === '\PHPUnit\Framework\Exception' ||
+ $reflector->isSubclassOf(Exception::class)) {
+ $result = true;
+ }
+ }
+
+ return $result;
+ }
+
+ private function runInSeparateProcess(): bool
+ {
+ return ($this->runTestInSeparateProcess || $this->runClassInSeparateProcess) &&
+ !$this->inIsolation && !$this instanceof PhptTestCase;
+ }
+
+ private function isCallableTestMethod(string $dependency): bool
+ {
+ [$className, $methodName] = explode('::', $dependency);
+
+ if (!class_exists($className)) {
+ return false;
+ }
+
+ try {
+ $class = new ReflectionClass($className);
+ } catch (ReflectionException $e) {
+ return false;
+ }
+
+ if (!$class->isSubclassOf(__CLASS__)) {
+ return false;
+ }
+
+ if (!$class->hasMethod($methodName)) {
+ return false;
+ }
+
+ try {
+ $method = $class->getMethod($methodName);
+ } catch (ReflectionException $e) {
+ return false;
+ }
+
+ return TestUtil::isTestMethod($method);
+ }
+
+ /**
+ * @psalm-template RealInstanceType of object
+ * @psalm-param class-string<RealInstanceType> $originalClassName
+ * @psalm-return MockObject&RealInstanceType
+ */
+ private function createMockObject(string $originalClassName): MockObject
+ {
+ return $this->getMockBuilder($originalClassName)
+ ->disableOriginalConstructor()
+ ->disableOriginalClone()
+ ->disableArgumentCloning()
+ ->disallowMockingUnknownTypes()
+ ->getMock();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestFailure.php b/vendor/phpunit/phpunit/src/Framework/TestFailure.php
new file mode 100644
index 000000000..0764bc789
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/TestFailure.php
@@ -0,0 +1,155 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use function get_class;
+use function sprintf;
+use function trim;
+use PHPUnit\Framework\Error\Error;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestFailure
+{
+ /**
+ * @var null|Test
+ */
+ private $failedTest;
+
+ /**
+ * @var Throwable
+ */
+ private $thrownException;
+
+ /**
+ * @var string
+ */
+ private $testName;
+
+ /**
+ * Returns a description for an exception.
+ */
+ public static function exceptionToString(Throwable $e): string
+ {
+ if ($e instanceof SelfDescribing) {
+ $buffer = $e->toString();
+
+ if ($e instanceof ExpectationFailedException && $e->getComparisonFailure()) {
+ $buffer .= $e->getComparisonFailure()->getDiff();
+ }
+
+ if ($e instanceof PHPTAssertionFailedError) {
+ $buffer .= $e->getDiff();
+ }
+
+ if (!empty($buffer)) {
+ $buffer = trim($buffer) . "\n";
+ }
+
+ return $buffer;
+ }
+
+ if ($e instanceof Error) {
+ return $e->getMessage() . "\n";
+ }
+
+ if ($e instanceof ExceptionWrapper) {
+ return $e->getClassName() . ': ' . $e->getMessage() . "\n";
+ }
+
+ return get_class($e) . ': ' . $e->getMessage() . "\n";
+ }
+
+ /**
+ * Constructs a TestFailure with the given test and exception.
+ */
+ public function __construct(Test $failedTest, Throwable $t)
+ {
+ if ($failedTest instanceof SelfDescribing) {
+ $this->testName = $failedTest->toString();
+ } else {
+ $this->testName = get_class($failedTest);
+ }
+
+ if (!$failedTest instanceof TestCase || !$failedTest->isInIsolation()) {
+ $this->failedTest = $failedTest;
+ }
+
+ $this->thrownException = $t;
+ }
+
+ /**
+ * Returns a short description of the failure.
+ */
+ public function toString(): string
+ {
+ return sprintf(
+ '%s: %s',
+ $this->testName,
+ $this->thrownException->getMessage()
+ );
+ }
+
+ /**
+ * Returns a description for the thrown exception.
+ */
+ public function getExceptionAsString(): string
+ {
+ return self::exceptionToString($this->thrownException);
+ }
+
+ /**
+ * Returns the name of the failing test (including data set, if any).
+ */
+ public function getTestName(): string
+ {
+ return $this->testName;
+ }
+
+ /**
+ * Returns the failing test.
+ *
+ * Note: The test object is not set when the test is executed in process
+ * isolation.
+ *
+ * @see Exception
+ */
+ public function failedTest(): ?Test
+ {
+ return $this->failedTest;
+ }
+
+ /**
+ * Gets the thrown exception.
+ */
+ public function thrownException(): Throwable
+ {
+ return $this->thrownException;
+ }
+
+ /**
+ * Returns the exception's message.
+ */
+ public function exceptionMessage(): string
+ {
+ return $this->thrownException()->getMessage();
+ }
+
+ /**
+ * Returns true if the thrown exception
+ * is of type AssertionFailedError.
+ */
+ public function isFailure(): bool
+ {
+ return $this->thrownException() instanceof AssertionFailedError;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestListener.php b/vendor/phpunit/phpunit/src/Framework/TestListener.php
new file mode 100644
index 000000000..eade600f2
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/TestListener.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use Throwable;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @deprecated
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface TestListener
+{
+ public function addError(Test $test, Throwable $t, float $time): void;
+
+ public function addWarning(Test $test, Warning $e, float $time): void;
+
+ public function addFailure(Test $test, AssertionFailedError $e, float $time): void;
+
+ public function addIncompleteTest(Test $test, Throwable $t, float $time): void;
+
+ public function addRiskyTest(Test $test, Throwable $t, float $time): void;
+
+ public function addSkippedTest(Test $test, Throwable $t, float $time): void;
+
+ public function startTestSuite(TestSuite $suite): void;
+
+ public function endTestSuite(TestSuite $suite): void;
+
+ public function startTest(Test $test): void;
+
+ public function endTest(Test $test, float $time): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php b/vendor/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php
new file mode 100644
index 000000000..3e56708b6
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/TestListenerDefaultImplementation.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use Throwable;
+
+/**
+ * @deprecated The `TestListener` interface is deprecated
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+trait TestListenerDefaultImplementation
+{
+ public function addError(Test $test, Throwable $t, float $time): void
+ {
+ }
+
+ public function addWarning(Test $test, Warning $e, float $time): void
+ {
+ }
+
+ public function addFailure(Test $test, AssertionFailedError $e, float $time): void
+ {
+ }
+
+ public function addIncompleteTest(Test $test, Throwable $t, float $time): void
+ {
+ }
+
+ public function addRiskyTest(Test $test, Throwable $t, float $time): void
+ {
+ }
+
+ public function addSkippedTest(Test $test, Throwable $t, float $time): void
+ {
+ }
+
+ public function startTestSuite(TestSuite $suite): void
+ {
+ }
+
+ public function endTestSuite(TestSuite $suite): void
+ {
+ }
+
+ public function startTest(Test $test): void
+ {
+ }
+
+ public function endTest(Test $test, float $time): void
+ {
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestResult.php b/vendor/phpunit/phpunit/src/Framework/TestResult.php
new file mode 100644
index 000000000..99b4246cb
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/TestResult.php
@@ -0,0 +1,1318 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use const PHP_EOL;
+use function count;
+use function function_exists;
+use function get_class;
+use function sprintf;
+use function xdebug_get_monitored_functions;
+use function xdebug_is_debugger_active;
+use function xdebug_start_function_monitor;
+use function xdebug_stop_function_monitor;
+use AssertionError;
+use Countable;
+use Error;
+use PHPUnit\Util\ErrorHandler;
+use PHPUnit\Util\ExcludeList;
+use PHPUnit\Util\Printer;
+use PHPUnit\Util\Test as TestUtil;
+use ReflectionClass;
+use ReflectionException;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Exception as OriginalCodeCoverageException;
+use SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException;
+use SebastianBergmann\Invoker\Invoker;
+use SebastianBergmann\Invoker\TimeoutException;
+use SebastianBergmann\ResourceOperations\ResourceOperations;
+use SebastianBergmann\Timer\Timer;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestResult implements Countable
+{
+ /**
+ * @var array
+ */
+ private $passed = [];
+
+ /**
+ * @var array<string>
+ */
+ private $passedTestClasses = [];
+
+ /**
+ * @var bool
+ */
+ private $currentTestSuiteFailed = false;
+
+ /**
+ * @var TestFailure[]
+ */
+ private $errors = [];
+
+ /**
+ * @var TestFailure[]
+ */
+ private $failures = [];
+
+ /**
+ * @var TestFailure[]
+ */
+ private $warnings = [];
+
+ /**
+ * @var TestFailure[]
+ */
+ private $notImplemented = [];
+
+ /**
+ * @var TestFailure[]
+ */
+ private $risky = [];
+
+ /**
+ * @var TestFailure[]
+ */
+ private $skipped = [];
+
+ /**
+ * @deprecated Use the `TestHook` interfaces instead
+ *
+ * @var TestListener[]
+ */
+ private $listeners = [];
+
+ /**
+ * @var int
+ */
+ private $runTests = 0;
+
+ /**
+ * @var float
+ */
+ private $time = 0;
+
+ /**
+ * Code Coverage information.
+ *
+ * @var CodeCoverage
+ */
+ private $codeCoverage;
+
+ /**
+ * @var bool
+ */
+ private $convertDeprecationsToExceptions = false;
+
+ /**
+ * @var bool
+ */
+ private $convertErrorsToExceptions = true;
+
+ /**
+ * @var bool
+ */
+ private $convertNoticesToExceptions = true;
+
+ /**
+ * @var bool
+ */
+ private $convertWarningsToExceptions = true;
+
+ /**
+ * @var bool
+ */
+ private $stop = false;
+
+ /**
+ * @var bool
+ */
+ private $stopOnError = false;
+
+ /**
+ * @var bool
+ */
+ private $stopOnFailure = false;
+
+ /**
+ * @var bool
+ */
+ private $stopOnWarning = false;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutTestsThatDoNotTestAnything = true;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutOutputDuringTests = false;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutTodoAnnotatedTests = false;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutResourceUsageDuringSmallTests = false;
+
+ /**
+ * @var bool
+ */
+ private $enforceTimeLimit = false;
+
+ /**
+ * @var bool
+ */
+ private $forceCoversAnnotation = false;
+
+ /**
+ * @var int
+ */
+ private $timeoutForSmallTests = 1;
+
+ /**
+ * @var int
+ */
+ private $timeoutForMediumTests = 10;
+
+ /**
+ * @var int
+ */
+ private $timeoutForLargeTests = 60;
+
+ /**
+ * @var bool
+ */
+ private $stopOnRisky = false;
+
+ /**
+ * @var bool
+ */
+ private $stopOnIncomplete = false;
+
+ /**
+ * @var bool
+ */
+ private $stopOnSkipped = false;
+
+ /**
+ * @var bool
+ */
+ private $lastTestFailed = false;
+
+ /**
+ * @var int
+ */
+ private $defaultTimeLimit = 0;
+
+ /**
+ * @var bool
+ */
+ private $stopOnDefect = false;
+
+ /**
+ * @var bool
+ */
+ private $registerMockObjectsFromTestArgumentsRecursively = false;
+
+ /**
+ * @deprecated Use the `TestHook` interfaces instead
+ *
+ * @codeCoverageIgnore
+ *
+ * Registers a TestListener.
+ */
+ public function addListener(TestListener $listener): void
+ {
+ $this->listeners[] = $listener;
+ }
+
+ /**
+ * @deprecated Use the `TestHook` interfaces instead
+ *
+ * @codeCoverageIgnore
+ *
+ * Unregisters a TestListener.
+ */
+ public function removeListener(TestListener $listener): void
+ {
+ foreach ($this->listeners as $key => $_listener) {
+ if ($listener === $_listener) {
+ unset($this->listeners[$key]);
+ }
+ }
+ }
+
+ /**
+ * @deprecated Use the `TestHook` interfaces instead
+ *
+ * @codeCoverageIgnore
+ *
+ * Flushes all flushable TestListeners.
+ */
+ public function flushListeners(): void
+ {
+ foreach ($this->listeners as $listener) {
+ if ($listener instanceof Printer) {
+ $listener->flush();
+ }
+ }
+ }
+
+ /**
+ * Adds an error to the list of errors.
+ */
+ public function addError(Test $test, Throwable $t, float $time): void
+ {
+ if ($t instanceof RiskyTestError) {
+ $this->recordRisky($test, $t);
+
+ $notifyMethod = 'addRiskyTest';
+
+ if ($test instanceof TestCase) {
+ $test->markAsRisky();
+ }
+
+ if ($this->stopOnRisky || $this->stopOnDefect) {
+ $this->stop();
+ }
+ } elseif ($t instanceof IncompleteTest) {
+ $this->recordNotImplemented($test, $t);
+
+ $notifyMethod = 'addIncompleteTest';
+
+ if ($this->stopOnIncomplete) {
+ $this->stop();
+ }
+ } elseif ($t instanceof SkippedTest) {
+ $this->recordSkipped($test, $t);
+
+ $notifyMethod = 'addSkippedTest';
+
+ if ($this->stopOnSkipped) {
+ $this->stop();
+ }
+ } else {
+ $this->recordError($test, $t);
+
+ $notifyMethod = 'addError';
+
+ if ($this->stopOnError || $this->stopOnFailure) {
+ $this->stop();
+ }
+ }
+
+ // @see https://github.com/sebastianbergmann/phpunit/issues/1953
+ if ($t instanceof Error) {
+ $t = new ExceptionWrapper($t);
+ }
+
+ foreach ($this->listeners as $listener) {
+ $listener->{$notifyMethod}($test, $t, $time);
+ }
+
+ $this->lastTestFailed = true;
+ $this->time += $time;
+ }
+
+ /**
+ * Adds a warning to the list of warnings.
+ * The passed in exception caused the warning.
+ */
+ public function addWarning(Test $test, Warning $e, float $time): void
+ {
+ if ($this->stopOnWarning || $this->stopOnDefect) {
+ $this->stop();
+ }
+
+ $this->recordWarning($test, $e);
+
+ foreach ($this->listeners as $listener) {
+ $listener->addWarning($test, $e, $time);
+ }
+
+ $this->time += $time;
+ }
+
+ /**
+ * Adds a failure to the list of failures.
+ * The passed in exception caused the failure.
+ */
+ public function addFailure(Test $test, AssertionFailedError $e, float $time): void
+ {
+ if ($e instanceof RiskyTestError || $e instanceof OutputError) {
+ $this->recordRisky($test, $e);
+
+ $notifyMethod = 'addRiskyTest';
+
+ if ($test instanceof TestCase) {
+ $test->markAsRisky();
+ }
+
+ if ($this->stopOnRisky || $this->stopOnDefect) {
+ $this->stop();
+ }
+ } elseif ($e instanceof IncompleteTest) {
+ $this->recordNotImplemented($test, $e);
+
+ $notifyMethod = 'addIncompleteTest';
+
+ if ($this->stopOnIncomplete) {
+ $this->stop();
+ }
+ } elseif ($e instanceof SkippedTest) {
+ $this->recordSkipped($test, $e);
+
+ $notifyMethod = 'addSkippedTest';
+
+ if ($this->stopOnSkipped) {
+ $this->stop();
+ }
+ } else {
+ $this->failures[] = new TestFailure($test, $e);
+ $notifyMethod = 'addFailure';
+
+ if ($this->stopOnFailure || $this->stopOnDefect) {
+ $this->stop();
+ }
+ }
+
+ foreach ($this->listeners as $listener) {
+ $listener->{$notifyMethod}($test, $e, $time);
+ }
+
+ $this->lastTestFailed = true;
+ $this->time += $time;
+ }
+
+ /**
+ * Informs the result that a test suite will be started.
+ */
+ public function startTestSuite(TestSuite $suite): void
+ {
+ $this->currentTestSuiteFailed = false;
+
+ foreach ($this->listeners as $listener) {
+ $listener->startTestSuite($suite);
+ }
+ }
+
+ /**
+ * Informs the result that a test suite was completed.
+ */
+ public function endTestSuite(TestSuite $suite): void
+ {
+ if (!$this->currentTestSuiteFailed) {
+ $this->passedTestClasses[] = $suite->getName();
+ }
+
+ foreach ($this->listeners as $listener) {
+ $listener->endTestSuite($suite);
+ }
+ }
+
+ /**
+ * Informs the result that a test will be started.
+ */
+ public function startTest(Test $test): void
+ {
+ $this->lastTestFailed = false;
+ $this->runTests += count($test);
+
+ foreach ($this->listeners as $listener) {
+ $listener->startTest($test);
+ }
+ }
+
+ /**
+ * Informs the result that a test was completed.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function endTest(Test $test, float $time): void
+ {
+ foreach ($this->listeners as $listener) {
+ $listener->endTest($test, $time);
+ }
+
+ if (!$this->lastTestFailed && $test instanceof TestCase) {
+ $class = get_class($test);
+ $key = $class . '::' . $test->getName();
+
+ $this->passed[$key] = [
+ 'result' => $test->getResult(),
+ 'size' => TestUtil::getSize(
+ $class,
+ $test->getName(false)
+ ),
+ ];
+
+ $this->time += $time;
+ }
+
+ if ($this->lastTestFailed && $test instanceof TestCase) {
+ $this->currentTestSuiteFailed = true;
+ }
+ }
+
+ /**
+ * Returns true if no risky test occurred.
+ */
+ public function allHarmless(): bool
+ {
+ return $this->riskyCount() === 0;
+ }
+
+ /**
+ * Gets the number of risky tests.
+ */
+ public function riskyCount(): int
+ {
+ return count($this->risky);
+ }
+
+ /**
+ * Returns true if no incomplete test occurred.
+ */
+ public function allCompletelyImplemented(): bool
+ {
+ return $this->notImplementedCount() === 0;
+ }
+
+ /**
+ * Gets the number of incomplete tests.
+ */
+ public function notImplementedCount(): int
+ {
+ return count($this->notImplemented);
+ }
+
+ /**
+ * Returns an array of TestFailure objects for the risky tests.
+ *
+ * @return TestFailure[]
+ */
+ public function risky(): array
+ {
+ return $this->risky;
+ }
+
+ /**
+ * Returns an array of TestFailure objects for the incomplete tests.
+ *
+ * @return TestFailure[]
+ */
+ public function notImplemented(): array
+ {
+ return $this->notImplemented;
+ }
+
+ /**
+ * Returns true if no test has been skipped.
+ */
+ public function noneSkipped(): bool
+ {
+ return $this->skippedCount() === 0;
+ }
+
+ /**
+ * Gets the number of skipped tests.
+ */
+ public function skippedCount(): int
+ {
+ return count($this->skipped);
+ }
+
+ /**
+ * Returns an array of TestFailure objects for the skipped tests.
+ *
+ * @return TestFailure[]
+ */
+ public function skipped(): array
+ {
+ return $this->skipped;
+ }
+
+ /**
+ * Gets the number of detected errors.
+ */
+ public function errorCount(): int
+ {
+ return count($this->errors);
+ }
+
+ /**
+ * Returns an array of TestFailure objects for the errors.
+ *
+ * @return TestFailure[]
+ */
+ public function errors(): array
+ {
+ return $this->errors;
+ }
+
+ /**
+ * Gets the number of detected failures.
+ */
+ public function failureCount(): int
+ {
+ return count($this->failures);
+ }
+
+ /**
+ * Returns an array of TestFailure objects for the failures.
+ *
+ * @return TestFailure[]
+ */
+ public function failures(): array
+ {
+ return $this->failures;
+ }
+
+ /**
+ * Gets the number of detected warnings.
+ */
+ public function warningCount(): int
+ {
+ return count($this->warnings);
+ }
+
+ /**
+ * Returns an array of TestFailure objects for the warnings.
+ *
+ * @return TestFailure[]
+ */
+ public function warnings(): array
+ {
+ return $this->warnings;
+ }
+
+ /**
+ * Returns the names of the tests that have passed.
+ */
+ public function passed(): array
+ {
+ return $this->passed;
+ }
+
+ /**
+ * Returns the names of the TestSuites that have passed.
+ *
+ * This enables @depends-annotations for TestClassName::class
+ */
+ public function passedClasses(): array
+ {
+ return $this->passedTestClasses;
+ }
+
+ /**
+ * Returns whether code coverage information should be collected.
+ */
+ public function getCollectCodeCoverageInformation(): bool
+ {
+ return $this->codeCoverage !== null;
+ }
+
+ /**
+ * Runs a TestCase.
+ *
+ * @throws \SebastianBergmann\CodeCoverage\InvalidArgumentException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws CodeCoverageException
+ * @throws UnintentionallyCoveredCodeException
+ */
+ public function run(Test $test): void
+ {
+ Assert::resetCount();
+
+ $size = TestUtil::UNKNOWN;
+
+ if ($test instanceof TestCase) {
+ $test->setRegisterMockObjectsFromTestArgumentsRecursively(
+ $this->registerMockObjectsFromTestArgumentsRecursively
+ );
+
+ $isAnyCoverageRequired = TestUtil::requiresCodeCoverageDataCollection($test);
+ $size = $test->getSize();
+ }
+
+ $error = false;
+ $failure = false;
+ $warning = false;
+ $incomplete = false;
+ $risky = false;
+ $skipped = false;
+
+ $this->startTest($test);
+
+ if ($this->convertDeprecationsToExceptions || $this->convertErrorsToExceptions || $this->convertNoticesToExceptions || $this->convertWarningsToExceptions) {
+ $errorHandler = new ErrorHandler(
+ $this->convertDeprecationsToExceptions,
+ $this->convertErrorsToExceptions,
+ $this->convertNoticesToExceptions,
+ $this->convertWarningsToExceptions
+ );
+
+ $errorHandler->register();
+ }
+
+ $collectCodeCoverage = $this->codeCoverage !== null &&
+ !$test instanceof ErrorTestCase &&
+ !$test instanceof WarningTestCase &&
+ $isAnyCoverageRequired;
+
+ if ($collectCodeCoverage) {
+ $this->codeCoverage->start($test);
+ }
+
+ $monitorFunctions = $this->beStrictAboutResourceUsageDuringSmallTests &&
+ !$test instanceof ErrorTestCase &&
+ !$test instanceof WarningTestCase &&
+ $size === TestUtil::SMALL &&
+ function_exists('xdebug_start_function_monitor');
+
+ if ($monitorFunctions) {
+ /* @noinspection ForgottenDebugOutputInspection */
+ xdebug_start_function_monitor(ResourceOperations::getFunctions());
+ }
+
+ $timer = new Timer;
+ $timer->start();
+
+ try {
+ $invoker = new Invoker;
+
+ if (!$test instanceof ErrorTestCase &&
+ !$test instanceof WarningTestCase &&
+ $this->shouldTimeLimitBeEnforced($size) &&
+ $invoker->canInvokeWithTimeout()) {
+ switch ($size) {
+ case TestUtil::SMALL:
+ $_timeout = $this->timeoutForSmallTests;
+
+ break;
+
+ case TestUtil::MEDIUM:
+ $_timeout = $this->timeoutForMediumTests;
+
+ break;
+
+ case TestUtil::LARGE:
+ $_timeout = $this->timeoutForLargeTests;
+
+ break;
+
+ default:
+ $_timeout = $this->defaultTimeLimit;
+ }
+
+ $invoker->invoke([$test, 'runBare'], [], $_timeout);
+ } else {
+ $test->runBare();
+ }
+ } catch (TimeoutException $e) {
+ $this->addFailure(
+ $test,
+ new RiskyTestError(
+ $e->getMessage()
+ ),
+ $_timeout
+ );
+
+ $risky = true;
+ } catch (AssertionFailedError $e) {
+ $failure = true;
+
+ if ($e instanceof RiskyTestError) {
+ $risky = true;
+ } elseif ($e instanceof IncompleteTestError) {
+ $incomplete = true;
+ } elseif ($e instanceof SkippedTestError) {
+ $skipped = true;
+ }
+ } catch (AssertionError $e) {
+ $test->addToAssertionCount(1);
+
+ $failure = true;
+ $frame = $e->getTrace()[0];
+
+ $e = new AssertionFailedError(
+ sprintf(
+ '%s in %s:%s',
+ $e->getMessage(),
+ $frame['file'] ?? $e->getFile(),
+ $frame['line'] ?? $e->getLine()
+ )
+ );
+ } catch (Warning $e) {
+ $warning = true;
+ } catch (Exception $e) {
+ $error = true;
+ } catch (Throwable $e) {
+ $e = new ExceptionWrapper($e);
+ $error = true;
+ }
+
+ $time = $timer->stop()->asSeconds();
+
+ $test->addToAssertionCount(Assert::getCount());
+
+ if ($monitorFunctions) {
+ $excludeList = new ExcludeList;
+
+ /** @noinspection ForgottenDebugOutputInspection */
+ $functions = xdebug_get_monitored_functions();
+
+ /* @noinspection ForgottenDebugOutputInspection */
+ xdebug_stop_function_monitor();
+
+ foreach ($functions as $function) {
+ if (!$excludeList->isExcluded($function['filename'])) {
+ $this->addFailure(
+ $test,
+ new RiskyTestError(
+ sprintf(
+ '%s() used in %s:%s',
+ $function['function'],
+ $function['filename'],
+ $function['lineno']
+ )
+ ),
+ $time
+ );
+ }
+ }
+ }
+
+ if ($this->beStrictAboutTestsThatDoNotTestAnything &&
+ $test->getNumAssertions() === 0) {
+ $risky = true;
+ }
+
+ if ($this->forceCoversAnnotation && !$error && !$failure && !$warning && !$incomplete && !$skipped && !$risky) {
+ $annotations = TestUtil::parseTestMethodAnnotations(
+ get_class($test),
+ $test->getName(false)
+ );
+
+ if (!isset($annotations['class']['covers']) &&
+ !isset($annotations['method']['covers']) &&
+ !isset($annotations['class']['coversNothing']) &&
+ !isset($annotations['method']['coversNothing'])) {
+ $this->addFailure(
+ $test,
+ new MissingCoversAnnotationException(
+ 'This test does not have a @covers annotation but is expected to have one'
+ ),
+ $time
+ );
+
+ $risky = true;
+ }
+ }
+
+ if ($collectCodeCoverage) {
+ $append = !$risky && !$incomplete && !$skipped;
+ $linesToBeCovered = [];
+ $linesToBeUsed = [];
+
+ if ($append && $test instanceof TestCase) {
+ try {
+ $linesToBeCovered = TestUtil::getLinesToBeCovered(
+ get_class($test),
+ $test->getName(false)
+ );
+
+ $linesToBeUsed = TestUtil::getLinesToBeUsed(
+ get_class($test),
+ $test->getName(false)
+ );
+ } catch (InvalidCoversTargetException $cce) {
+ $this->addWarning(
+ $test,
+ new Warning(
+ $cce->getMessage()
+ ),
+ $time
+ );
+ }
+ }
+
+ try {
+ $this->codeCoverage->stop(
+ $append,
+ $linesToBeCovered,
+ $linesToBeUsed
+ );
+ } catch (UnintentionallyCoveredCodeException $cce) {
+ $unintentionallyCoveredCodeError = new UnintentionallyCoveredCodeError(
+ 'This test executed code that is not listed as code to be covered or used:' .
+ PHP_EOL . $cce->getMessage()
+ );
+ } catch (OriginalCodeCoverageException $cce) {
+ $error = true;
+
+ $e = $e ?? $cce;
+ }
+ }
+
+ if (isset($errorHandler)) {
+ $errorHandler->unregister();
+
+ unset($errorHandler);
+ }
+
+ if ($error) {
+ $this->addError($test, $e, $time);
+ } elseif ($failure) {
+ $this->addFailure($test, $e, $time);
+ } elseif ($warning) {
+ $this->addWarning($test, $e, $time);
+ } elseif (isset($unintentionallyCoveredCodeError)) {
+ $this->addFailure(
+ $test,
+ $unintentionallyCoveredCodeError,
+ $time
+ );
+ } elseif ($this->beStrictAboutTestsThatDoNotTestAnything &&
+ !$test->doesNotPerformAssertions() &&
+ $test->getNumAssertions() === 0) {
+ try {
+ $reflected = new ReflectionClass($test);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $name = $test->getName(false);
+
+ if ($name && $reflected->hasMethod($name)) {
+ try {
+ $reflected = $reflected->getMethod($name);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ $this->addFailure(
+ $test,
+ new RiskyTestError(
+ sprintf(
+ "This test did not perform any assertions\n\n%s:%d",
+ $reflected->getFileName(),
+ $reflected->getStartLine()
+ )
+ ),
+ $time
+ );
+ } elseif ($this->beStrictAboutTestsThatDoNotTestAnything &&
+ $test->doesNotPerformAssertions() &&
+ $test->getNumAssertions() > 0) {
+ $this->addFailure(
+ $test,
+ new RiskyTestError(
+ sprintf(
+ 'This test is annotated with "@doesNotPerformAssertions" but performed %d assertions',
+ $test->getNumAssertions()
+ )
+ ),
+ $time
+ );
+ } elseif ($this->beStrictAboutOutputDuringTests && $test->hasOutput()) {
+ $this->addFailure(
+ $test,
+ new OutputError(
+ sprintf(
+ 'This test printed output: %s',
+ $test->getActualOutput()
+ )
+ ),
+ $time
+ );
+ } elseif ($this->beStrictAboutTodoAnnotatedTests && $test instanceof TestCase) {
+ $annotations = TestUtil::parseTestMethodAnnotations(
+ get_class($test),
+ $test->getName(false)
+ );
+
+ if (isset($annotations['method']['todo'])) {
+ $this->addFailure(
+ $test,
+ new RiskyTestError(
+ 'Test method is annotated with @todo'
+ ),
+ $time
+ );
+ }
+ }
+
+ $this->endTest($test, $time);
+ }
+
+ /**
+ * Gets the number of run tests.
+ */
+ public function count(): int
+ {
+ return $this->runTests;
+ }
+
+ /**
+ * Checks whether the test run should stop.
+ */
+ public function shouldStop(): bool
+ {
+ return $this->stop;
+ }
+
+ /**
+ * Marks that the test run should stop.
+ */
+ public function stop(): void
+ {
+ $this->stop = true;
+ }
+
+ /**
+ * Returns the code coverage object.
+ */
+ public function getCodeCoverage(): ?CodeCoverage
+ {
+ return $this->codeCoverage;
+ }
+
+ /**
+ * Sets the code coverage object.
+ */
+ public function setCodeCoverage(CodeCoverage $codeCoverage): void
+ {
+ $this->codeCoverage = $codeCoverage;
+ }
+
+ /**
+ * Enables or disables the deprecation-to-exception conversion.
+ */
+ public function convertDeprecationsToExceptions(bool $flag): void
+ {
+ $this->convertDeprecationsToExceptions = $flag;
+ }
+
+ /**
+ * Returns the deprecation-to-exception conversion setting.
+ */
+ public function getConvertDeprecationsToExceptions(): bool
+ {
+ return $this->convertDeprecationsToExceptions;
+ }
+
+ /**
+ * Enables or disables the error-to-exception conversion.
+ */
+ public function convertErrorsToExceptions(bool $flag): void
+ {
+ $this->convertErrorsToExceptions = $flag;
+ }
+
+ /**
+ * Returns the error-to-exception conversion setting.
+ */
+ public function getConvertErrorsToExceptions(): bool
+ {
+ return $this->convertErrorsToExceptions;
+ }
+
+ /**
+ * Enables or disables the notice-to-exception conversion.
+ */
+ public function convertNoticesToExceptions(bool $flag): void
+ {
+ $this->convertNoticesToExceptions = $flag;
+ }
+
+ /**
+ * Returns the notice-to-exception conversion setting.
+ */
+ public function getConvertNoticesToExceptions(): bool
+ {
+ return $this->convertNoticesToExceptions;
+ }
+
+ /**
+ * Enables or disables the warning-to-exception conversion.
+ */
+ public function convertWarningsToExceptions(bool $flag): void
+ {
+ $this->convertWarningsToExceptions = $flag;
+ }
+
+ /**
+ * Returns the warning-to-exception conversion setting.
+ */
+ public function getConvertWarningsToExceptions(): bool
+ {
+ return $this->convertWarningsToExceptions;
+ }
+
+ /**
+ * Enables or disables the stopping when an error occurs.
+ */
+ public function stopOnError(bool $flag): void
+ {
+ $this->stopOnError = $flag;
+ }
+
+ /**
+ * Enables or disables the stopping when a failure occurs.
+ */
+ public function stopOnFailure(bool $flag): void
+ {
+ $this->stopOnFailure = $flag;
+ }
+
+ /**
+ * Enables or disables the stopping when a warning occurs.
+ */
+ public function stopOnWarning(bool $flag): void
+ {
+ $this->stopOnWarning = $flag;
+ }
+
+ public function beStrictAboutTestsThatDoNotTestAnything(bool $flag): void
+ {
+ $this->beStrictAboutTestsThatDoNotTestAnything = $flag;
+ }
+
+ public function isStrictAboutTestsThatDoNotTestAnything(): bool
+ {
+ return $this->beStrictAboutTestsThatDoNotTestAnything;
+ }
+
+ public function beStrictAboutOutputDuringTests(bool $flag): void
+ {
+ $this->beStrictAboutOutputDuringTests = $flag;
+ }
+
+ public function isStrictAboutOutputDuringTests(): bool
+ {
+ return $this->beStrictAboutOutputDuringTests;
+ }
+
+ public function beStrictAboutResourceUsageDuringSmallTests(bool $flag): void
+ {
+ $this->beStrictAboutResourceUsageDuringSmallTests = $flag;
+ }
+
+ public function isStrictAboutResourceUsageDuringSmallTests(): bool
+ {
+ return $this->beStrictAboutResourceUsageDuringSmallTests;
+ }
+
+ public function enforceTimeLimit(bool $flag): void
+ {
+ $this->enforceTimeLimit = $flag;
+ }
+
+ public function enforcesTimeLimit(): bool
+ {
+ return $this->enforceTimeLimit;
+ }
+
+ public function beStrictAboutTodoAnnotatedTests(bool $flag): void
+ {
+ $this->beStrictAboutTodoAnnotatedTests = $flag;
+ }
+
+ public function isStrictAboutTodoAnnotatedTests(): bool
+ {
+ return $this->beStrictAboutTodoAnnotatedTests;
+ }
+
+ public function forceCoversAnnotation(): void
+ {
+ $this->forceCoversAnnotation = true;
+ }
+
+ public function forcesCoversAnnotation(): bool
+ {
+ return $this->forceCoversAnnotation;
+ }
+
+ /**
+ * Enables or disables the stopping for risky tests.
+ */
+ public function stopOnRisky(bool $flag): void
+ {
+ $this->stopOnRisky = $flag;
+ }
+
+ /**
+ * Enables or disables the stopping for incomplete tests.
+ */
+ public function stopOnIncomplete(bool $flag): void
+ {
+ $this->stopOnIncomplete = $flag;
+ }
+
+ /**
+ * Enables or disables the stopping for skipped tests.
+ */
+ public function stopOnSkipped(bool $flag): void
+ {
+ $this->stopOnSkipped = $flag;
+ }
+
+ /**
+ * Enables or disables the stopping for defects: error, failure, warning.
+ */
+ public function stopOnDefect(bool $flag): void
+ {
+ $this->stopOnDefect = $flag;
+ }
+
+ /**
+ * Returns the time spent running the tests.
+ */
+ public function time(): float
+ {
+ return $this->time;
+ }
+
+ /**
+ * Returns whether the entire test was successful or not.
+ */
+ public function wasSuccessful(): bool
+ {
+ return $this->wasSuccessfulIgnoringWarnings() && empty($this->warnings);
+ }
+
+ public function wasSuccessfulIgnoringWarnings(): bool
+ {
+ return empty($this->errors) && empty($this->failures);
+ }
+
+ public function wasSuccessfulAndNoTestIsRiskyOrSkippedOrIncomplete(): bool
+ {
+ return $this->wasSuccessful() && $this->allHarmless() && $this->allCompletelyImplemented() && $this->noneSkipped();
+ }
+
+ /**
+ * Sets the default timeout for tests.
+ */
+ public function setDefaultTimeLimit(int $timeout): void
+ {
+ $this->defaultTimeLimit = $timeout;
+ }
+
+ /**
+ * Sets the timeout for small tests.
+ */
+ public function setTimeoutForSmallTests(int $timeout): void
+ {
+ $this->timeoutForSmallTests = $timeout;
+ }
+
+ /**
+ * Sets the timeout for medium tests.
+ */
+ public function setTimeoutForMediumTests(int $timeout): void
+ {
+ $this->timeoutForMediumTests = $timeout;
+ }
+
+ /**
+ * Sets the timeout for large tests.
+ */
+ public function setTimeoutForLargeTests(int $timeout): void
+ {
+ $this->timeoutForLargeTests = $timeout;
+ }
+
+ /**
+ * Returns the set timeout for large tests.
+ */
+ public function getTimeoutForLargeTests(): int
+ {
+ return $this->timeoutForLargeTests;
+ }
+
+ public function setRegisterMockObjectsFromTestArgumentsRecursively(bool $flag): void
+ {
+ $this->registerMockObjectsFromTestArgumentsRecursively = $flag;
+ }
+
+ private function recordError(Test $test, Throwable $t): void
+ {
+ $this->errors[] = new TestFailure($test, $t);
+ }
+
+ private function recordNotImplemented(Test $test, Throwable $t): void
+ {
+ $this->notImplemented[] = new TestFailure($test, $t);
+ }
+
+ private function recordRisky(Test $test, Throwable $t): void
+ {
+ $this->risky[] = new TestFailure($test, $t);
+ }
+
+ private function recordSkipped(Test $test, Throwable $t): void
+ {
+ $this->skipped[] = new TestFailure($test, $t);
+ }
+
+ private function recordWarning(Test $test, Throwable $t): void
+ {
+ $this->warnings[] = new TestFailure($test, $t);
+ }
+
+ private function shouldTimeLimitBeEnforced(int $size): bool
+ {
+ if (!$this->enforceTimeLimit) {
+ return false;
+ }
+
+ if (!(($this->defaultTimeLimit || $size !== TestUtil::UNKNOWN))) {
+ return false;
+ }
+
+ if (!extension_loaded('pcntl')) {
+ return false;
+ }
+
+ if (!class_exists(Invoker::class)) {
+ return false;
+ }
+
+ if (extension_loaded('xdebug') && xdebug_is_debugger_active()) {
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestSuite.php b/vendor/phpunit/phpunit/src/Framework/TestSuite.php
new file mode 100644
index 000000000..0bb81844b
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/TestSuite.php
@@ -0,0 +1,914 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use const PHP_EOL;
+use function array_keys;
+use function array_map;
+use function array_merge;
+use function array_unique;
+use function basename;
+use function call_user_func;
+use function class_exists;
+use function count;
+use function dirname;
+use function get_declared_classes;
+use function implode;
+use function is_bool;
+use function is_callable;
+use function is_file;
+use function is_object;
+use function is_string;
+use function method_exists;
+use function preg_match;
+use function preg_quote;
+use function sprintf;
+use function strpos;
+use function substr;
+use Iterator;
+use IteratorAggregate;
+use PHPUnit\Runner\BaseTestRunner;
+use PHPUnit\Runner\Filter\Factory;
+use PHPUnit\Runner\PhptTestCase;
+use PHPUnit\Util\FileLoader;
+use PHPUnit\Util\Test as TestUtil;
+use ReflectionClass;
+use ReflectionException;
+use ReflectionMethod;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class TestSuite implements IteratorAggregate, Reorderable, SelfDescribing, Test
+{
+ /**
+ * Enable or disable the backup and restoration of the $GLOBALS array.
+ *
+ * @var bool
+ */
+ protected $backupGlobals;
+
+ /**
+ * Enable or disable the backup and restoration of static attributes.
+ *
+ * @var bool
+ */
+ protected $backupStaticAttributes;
+
+ /**
+ * @var bool
+ */
+ protected $runTestInSeparateProcess = false;
+
+ /**
+ * The name of the test suite.
+ *
+ * @var string
+ */
+ protected $name = '';
+
+ /**
+ * The test groups of the test suite.
+ *
+ * @psalm-var array<string,list<Test>>
+ */
+ protected $groups = [];
+
+ /**
+ * The tests in the test suite.
+ *
+ * @var Test[]
+ */
+ protected $tests = [];
+
+ /**
+ * The number of tests in the test suite.
+ *
+ * @var int
+ */
+ protected $numTests = -1;
+
+ /**
+ * @var bool
+ */
+ protected $testCase = false;
+
+ /**
+ * @var string[]
+ */
+ protected $foundClasses = [];
+
+ /**
+ * @var null|list<ExecutionOrderDependency>
+ */
+ protected $providedTests;
+
+ /**
+ * @var null|list<ExecutionOrderDependency>
+ */
+ protected $requiredTests;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutChangesToGlobalState;
+
+ /**
+ * @var Factory
+ */
+ private $iteratorFilter;
+
+ /**
+ * @var int
+ */
+ private $declaredClassesPointer;
+
+ /**
+ * @psalm-var array<int,string>
+ */
+ private $warnings = [];
+
+ /**
+ * Constructs a new TestSuite.
+ *
+ * - PHPUnit\Framework\TestSuite() constructs an empty TestSuite.
+ *
+ * - PHPUnit\Framework\TestSuite(ReflectionClass) constructs a
+ * TestSuite from the given class.
+ *
+ * - PHPUnit\Framework\TestSuite(ReflectionClass, String)
+ * constructs a TestSuite from the given class with the given
+ * name.
+ *
+ * - PHPUnit\Framework\TestSuite(String) either constructs a
+ * TestSuite from the given class (if the passed string is the
+ * name of an existing class) or constructs an empty TestSuite
+ * with the given name.
+ *
+ * @param ReflectionClass|string $theClass
+ *
+ * @throws Exception
+ */
+ public function __construct($theClass = '', string $name = '')
+ {
+ if (!is_string($theClass) && !$theClass instanceof ReflectionClass) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'ReflectionClass object or string'
+ );
+ }
+
+ $this->declaredClassesPointer = count(get_declared_classes());
+
+ if (!$theClass instanceof ReflectionClass) {
+ if (class_exists($theClass, true)) {
+ if ($name === '') {
+ $name = $theClass;
+ }
+
+ try {
+ $theClass = new ReflectionClass($theClass);
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ } else {
+ $this->setName($theClass);
+
+ return;
+ }
+ }
+
+ if (!$theClass->isSubclassOf(TestCase::class)) {
+ $this->setName((string) $theClass);
+
+ return;
+ }
+
+ if ($name !== '') {
+ $this->setName($name);
+ } else {
+ $this->setName($theClass->getName());
+ }
+
+ $constructor = $theClass->getConstructor();
+
+ if ($constructor !== null &&
+ !$constructor->isPublic()) {
+ $this->addTest(
+ new WarningTestCase(
+ sprintf(
+ 'Class "%s" has no public constructor.',
+ $theClass->getName()
+ )
+ )
+ );
+
+ return;
+ }
+
+ foreach ($theClass->getMethods() as $method) {
+ if ($method->getDeclaringClass()->getName() === Assert::class) {
+ continue;
+ }
+
+ if ($method->getDeclaringClass()->getName() === TestCase::class) {
+ continue;
+ }
+
+ if (!TestUtil::isTestMethod($method)) {
+ continue;
+ }
+
+ $this->addTestMethod($theClass, $method);
+ }
+
+ if (empty($this->tests)) {
+ $this->addTest(
+ new WarningTestCase(
+ sprintf(
+ 'No tests found in class "%s".',
+ $theClass->getName()
+ )
+ )
+ );
+ }
+
+ $this->testCase = true;
+ }
+
+ /**
+ * Returns a string representation of the test suite.
+ */
+ public function toString(): string
+ {
+ return $this->getName();
+ }
+
+ /**
+ * Adds a test to the suite.
+ *
+ * @param array $groups
+ */
+ public function addTest(Test $test, $groups = []): void
+ {
+ try {
+ $class = new ReflectionClass($test);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if (!$class->isAbstract()) {
+ $this->tests[] = $test;
+ $this->clearCaches();
+
+ if ($test instanceof self && empty($groups)) {
+ $groups = $test->getGroups();
+ }
+
+ if ($this->containsOnlyVirtualGroups($groups)) {
+ $groups[] = 'default';
+ }
+
+ foreach ($groups as $group) {
+ if (!isset($this->groups[$group])) {
+ $this->groups[$group] = [$test];
+ } else {
+ $this->groups[$group][] = $test;
+ }
+ }
+
+ if ($test instanceof TestCase) {
+ $test->setGroups($groups);
+ }
+ }
+ }
+
+ /**
+ * Adds the tests from the given class to the suite.
+ *
+ * @psalm-param object|class-string $testClass
+ *
+ * @throws Exception
+ */
+ public function addTestSuite($testClass): void
+ {
+ if (!(is_object($testClass) || (is_string($testClass) && class_exists($testClass)))) {
+ throw InvalidArgumentException::create(
+ 1,
+ 'class name or object'
+ );
+ }
+
+ if (!is_object($testClass)) {
+ try {
+ $testClass = new ReflectionClass($testClass);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ if ($testClass instanceof self) {
+ $this->addTest($testClass);
+ } elseif ($testClass instanceof ReflectionClass) {
+ $suiteMethod = false;
+
+ if (!$testClass->isAbstract() && $testClass->hasMethod(BaseTestRunner::SUITE_METHODNAME)) {
+ try {
+ $method = $testClass->getMethod(
+ BaseTestRunner::SUITE_METHODNAME
+ );
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if ($method->isStatic()) {
+ $this->addTest(
+ $method->invoke(null, $testClass->getName())
+ );
+
+ $suiteMethod = true;
+ }
+ }
+
+ if (!$suiteMethod && !$testClass->isAbstract() && $testClass->isSubclassOf(TestCase::class)) {
+ $this->addTest(new self($testClass));
+ }
+ } else {
+ throw new Exception;
+ }
+ }
+
+ public function addWarning(string $warning): void
+ {
+ $this->warnings[] = $warning;
+ }
+
+ /**
+ * Wraps both <code>addTest()</code> and <code>addTestSuite</code>
+ * as well as the separate import statements for the user's convenience.
+ *
+ * If the named file cannot be read or there are no new tests that can be
+ * added, a <code>PHPUnit\Framework\WarningTestCase</code> will be created instead,
+ * leaving the current test run untouched.
+ *
+ * @throws Exception
+ */
+ public function addTestFile(string $filename): void
+ {
+ if (is_file($filename) && substr($filename, -5) === '.phpt') {
+ $this->addTest(new PhptTestCase($filename));
+
+ $this->declaredClassesPointer = count(get_declared_classes());
+
+ return;
+ }
+
+ $numTests = count($this->tests);
+
+ // The given file may contain further stub classes in addition to the
+ // test class itself. Figure out the actual test class.
+ $filename = FileLoader::checkAndLoad($filename);
+ $newClasses = array_slice(get_declared_classes(), $this->declaredClassesPointer);
+
+ // The diff is empty in case a parent class (with test methods) is added
+ // AFTER a child class that inherited from it. To account for that case,
+ // accumulate all discovered classes, so the parent class may be found in
+ // a later invocation.
+ if (!empty($newClasses)) {
+ // On the assumption that test classes are defined first in files,
+ // process discovered classes in approximate LIFO order, so as to
+ // avoid unnecessary reflection.
+ $this->foundClasses = array_merge($newClasses, $this->foundClasses);
+ $this->declaredClassesPointer = count(get_declared_classes());
+ }
+
+ // The test class's name must match the filename, either in full, or as
+ // a PEAR/PSR-0 prefixed short name ('NameSpace_ShortName'), or as a
+ // PSR-1 local short name ('NameSpace\ShortName'). The comparison must be
+ // anchored to prevent false-positive matches (e.g., 'OtherShortName').
+ $shortName = basename($filename, '.php');
+ $shortNameRegEx = '/(?:^|_|\\\\)' . preg_quote($shortName, '/') . '$/';
+
+ foreach ($this->foundClasses as $i => $className) {
+ if (preg_match($shortNameRegEx, $className)) {
+ try {
+ $class = new ReflectionClass($className);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if ($class->getFileName() == $filename) {
+ $newClasses = [$className];
+ unset($this->foundClasses[$i]);
+
+ break;
+ }
+ }
+ }
+
+ foreach ($newClasses as $className) {
+ try {
+ $class = new ReflectionClass($className);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if (dirname($class->getFileName()) === __DIR__) {
+ continue;
+ }
+
+ if (!$class->isAbstract()) {
+ if ($class->hasMethod(BaseTestRunner::SUITE_METHODNAME)) {
+ try {
+ $method = $class->getMethod(
+ BaseTestRunner::SUITE_METHODNAME
+ );
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if ($method->isStatic()) {
+ $this->addTest($method->invoke(null, $className));
+ }
+ } elseif ($class->implementsInterface(Test::class)) {
+ $expectedClassName = $shortName;
+
+ if (($pos = strpos($expectedClassName, '.')) !== false) {
+ $expectedClassName = substr(
+ $expectedClassName,
+ 0,
+ $pos
+ );
+ }
+
+ if ($class->getShortName() !== $expectedClassName) {
+ $this->addWarning(
+ sprintf(
+ "Test case class not matching filename is deprecated\n in %s\n Class name was '%s', expected '%s'",
+ $filename,
+ $class->getShortName(),
+ $expectedClassName
+ )
+ );
+ }
+
+ $this->addTestSuite($class);
+ }
+ }
+ }
+
+ if (count($this->tests) > ++$numTests) {
+ $this->addWarning(
+ sprintf(
+ "Multiple test case classes per file is deprecated\n in %s",
+ $filename
+ )
+ );
+ }
+
+ $this->numTests = -1;
+ }
+
+ /**
+ * Wrapper for addTestFile() that adds multiple test files.
+ *
+ * @throws Exception
+ */
+ public function addTestFiles(iterable $fileNames): void
+ {
+ foreach ($fileNames as $filename) {
+ $this->addTestFile((string) $filename);
+ }
+ }
+
+ /**
+ * Counts the number of test cases that will be run by this test.
+ *
+ * @todo refactor usage of numTests in DefaultResultPrinter
+ */
+ public function count(): int
+ {
+ $this->numTests = 0;
+
+ foreach ($this as $test) {
+ $this->numTests += count($test);
+ }
+
+ return $this->numTests;
+ }
+
+ /**
+ * Returns the name of the suite.
+ */
+ public function getName(): string
+ {
+ return $this->name;
+ }
+
+ /**
+ * Returns the test groups of the suite.
+ *
+ * @psalm-return list<string>
+ */
+ public function getGroups(): array
+ {
+ return array_map(
+ static function ($key): string
+ {
+ return (string) $key;
+ },
+ array_keys($this->groups)
+ );
+ }
+
+ public function getGroupDetails(): array
+ {
+ return $this->groups;
+ }
+
+ /**
+ * Set tests groups of the test case.
+ */
+ public function setGroupDetails(array $groups): void
+ {
+ $this->groups = $groups;
+ }
+
+ /**
+ * Runs the tests and collects their result in a TestResult.
+ *
+ * @throws \PHPUnit\Framework\CodeCoverageException
+ * @throws \SebastianBergmann\CodeCoverage\InvalidArgumentException
+ * @throws \SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Warning
+ */
+ public function run(TestResult $result = null): TestResult
+ {
+ if ($result === null) {
+ $result = $this->createResult();
+ }
+
+ if (count($this) === 0) {
+ return $result;
+ }
+
+ /** @psalm-var class-string $className */
+ $className = $this->name;
+ $hookMethods = TestUtil::getHookMethods($className);
+
+ $result->startTestSuite($this);
+
+ $test = null;
+
+ if ($this->testCase && class_exists($this->name, false)) {
+ try {
+ foreach ($hookMethods['beforeClass'] as $beforeClassMethod) {
+ if (method_exists($this->name, $beforeClassMethod)) {
+ if ($missingRequirements = TestUtil::getMissingRequirements($this->name, $beforeClassMethod)) {
+ $this->markTestSuiteSkipped(implode(PHP_EOL, $missingRequirements));
+ }
+
+ call_user_func([$this->name, $beforeClassMethod]);
+ }
+ }
+ } catch (SkippedTestSuiteError $error) {
+ foreach ($this->tests() as $test) {
+ $result->startTest($test);
+ $result->addFailure($test, $error, 0);
+ $result->endTest($test, 0);
+ }
+
+ $result->endTestSuite($this);
+
+ return $result;
+ } catch (Throwable $t) {
+ $errorAdded = false;
+
+ foreach ($this->tests() as $test) {
+ if ($result->shouldStop()) {
+ break;
+ }
+
+ $result->startTest($test);
+
+ if (!$errorAdded) {
+ $result->addError($test, $t, 0);
+
+ $errorAdded = true;
+ } else {
+ $result->addFailure(
+ $test,
+ new SkippedTestError('Test skipped because of an error in hook method'),
+ 0
+ );
+ }
+
+ $result->endTest($test, 0);
+ }
+
+ $result->endTestSuite($this);
+
+ return $result;
+ }
+ }
+
+ foreach ($this as $test) {
+ if ($result->shouldStop()) {
+ break;
+ }
+
+ if ($test instanceof TestCase || $test instanceof self) {
+ $test->setBeStrictAboutChangesToGlobalState($this->beStrictAboutChangesToGlobalState);
+ $test->setBackupGlobals($this->backupGlobals);
+ $test->setBackupStaticAttributes($this->backupStaticAttributes);
+ $test->setRunTestInSeparateProcess($this->runTestInSeparateProcess);
+ }
+
+ $test->run($result);
+ }
+
+ if ($this->testCase && class_exists($this->name, false)) {
+ foreach ($hookMethods['afterClass'] as $afterClassMethod) {
+ if (method_exists($this->name, $afterClassMethod)) {
+ try {
+ call_user_func([$this->name, $afterClassMethod]);
+ } catch (Throwable $t) {
+ $message = "Exception in {$this->name}::{$afterClassMethod}" . PHP_EOL . $t->getMessage();
+ $error = new SyntheticError($message, 0, $t->getFile(), $t->getLine(), $t->getTrace());
+
+ $placeholderTest = clone $test;
+ $placeholderTest->setName($afterClassMethod);
+
+ $result->startTest($placeholderTest);
+ $result->addFailure($placeholderTest, $error, 0);
+ $result->endTest($placeholderTest, 0);
+ }
+ }
+ }
+ }
+
+ $result->endTestSuite($this);
+
+ return $result;
+ }
+
+ public function setRunTestInSeparateProcess(bool $runTestInSeparateProcess): void
+ {
+ $this->runTestInSeparateProcess = $runTestInSeparateProcess;
+ }
+
+ public function setName(string $name): void
+ {
+ $this->name = $name;
+ }
+
+ /**
+ * Returns the tests as an enumeration.
+ *
+ * @return Test[]
+ */
+ public function tests(): array
+ {
+ return $this->tests;
+ }
+
+ /**
+ * Set tests of the test suite.
+ *
+ * @param Test[] $tests
+ */
+ public function setTests(array $tests): void
+ {
+ $this->tests = $tests;
+ }
+
+ /**
+ * Mark the test suite as skipped.
+ *
+ * @param string $message
+ *
+ * @throws SkippedTestSuiteError
+ *
+ * @psalm-return never-return
+ */
+ public function markTestSuiteSkipped($message = ''): void
+ {
+ throw new SkippedTestSuiteError($message);
+ }
+
+ /**
+ * @param bool $beStrictAboutChangesToGlobalState
+ */
+ public function setBeStrictAboutChangesToGlobalState($beStrictAboutChangesToGlobalState): void
+ {
+ if (null === $this->beStrictAboutChangesToGlobalState && is_bool($beStrictAboutChangesToGlobalState)) {
+ $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState;
+ }
+ }
+
+ /**
+ * @param bool $backupGlobals
+ */
+ public function setBackupGlobals($backupGlobals): void
+ {
+ if (null === $this->backupGlobals && is_bool($backupGlobals)) {
+ $this->backupGlobals = $backupGlobals;
+ }
+ }
+
+ /**
+ * @param bool $backupStaticAttributes
+ */
+ public function setBackupStaticAttributes($backupStaticAttributes): void
+ {
+ if (null === $this->backupStaticAttributes && is_bool($backupStaticAttributes)) {
+ $this->backupStaticAttributes = $backupStaticAttributes;
+ }
+ }
+
+ /**
+ * Returns an iterator for this test suite.
+ */
+ public function getIterator(): Iterator
+ {
+ $iterator = new TestSuiteIterator($this);
+
+ if ($this->iteratorFilter !== null) {
+ $iterator = $this->iteratorFilter->factory($iterator, $this);
+ }
+
+ return $iterator;
+ }
+
+ public function injectFilter(Factory $filter): void
+ {
+ $this->iteratorFilter = $filter;
+
+ foreach ($this as $test) {
+ if ($test instanceof self) {
+ $test->injectFilter($filter);
+ }
+ }
+ }
+
+ /**
+ * @psalm-return array<int,string>
+ */
+ public function warnings(): array
+ {
+ return array_unique($this->warnings);
+ }
+
+ /**
+ * @return list<ExecutionOrderDependency>
+ */
+ public function provides(): array
+ {
+ if ($this->providedTests === null) {
+ $this->providedTests = [];
+
+ if (is_callable($this->sortId(), true)) {
+ $this->providedTests[] = new ExecutionOrderDependency($this->sortId());
+ }
+
+ foreach ($this->tests as $test) {
+ if (!($test instanceof Reorderable)) {
+ // @codeCoverageIgnoreStart
+ continue;
+ // @codeCoverageIgnoreEnd
+ }
+ $this->providedTests = ExecutionOrderDependency::mergeUnique($this->providedTests, $test->provides());
+ }
+ }
+
+ return $this->providedTests;
+ }
+
+ /**
+ * @return list<ExecutionOrderDependency>
+ */
+ public function requires(): array
+ {
+ if ($this->requiredTests === null) {
+ $this->requiredTests = [];
+
+ foreach ($this->tests as $test) {
+ if (!($test instanceof Reorderable)) {
+ // @codeCoverageIgnoreStart
+ continue;
+ // @codeCoverageIgnoreEnd
+ }
+ $this->requiredTests = ExecutionOrderDependency::mergeUnique(
+ ExecutionOrderDependency::filterInvalid($this->requiredTests),
+ $test->requires()
+ );
+ }
+
+ $this->requiredTests = ExecutionOrderDependency::diff($this->requiredTests, $this->provides());
+ }
+
+ return $this->requiredTests;
+ }
+
+ public function sortId(): string
+ {
+ return $this->getName() . '::class';
+ }
+
+ /**
+ * Creates a default TestResult object.
+ */
+ protected function createResult(): TestResult
+ {
+ return new TestResult;
+ }
+
+ /**
+ * @throws Exception
+ */
+ protected function addTestMethod(ReflectionClass $class, ReflectionMethod $method): void
+ {
+ $methodName = $method->getName();
+
+ $test = (new TestBuilder)->build($class, $methodName);
+
+ if ($test instanceof TestCase || $test instanceof DataProviderTestSuite) {
+ $test->setDependencies(
+ TestUtil::getDependencies($class->getName(), $methodName)
+ );
+ }
+
+ $this->addTest(
+ $test,
+ TestUtil::getGroups($class->getName(), $methodName)
+ );
+ }
+
+ private function clearCaches(): void
+ {
+ $this->numTests = -1;
+ $this->providedTests = null;
+ $this->requiredTests = null;
+ }
+
+ private function containsOnlyVirtualGroups(array $groups): bool
+ {
+ foreach ($groups as $group) {
+ if (strpos($group, '__phpunit_') !== 0) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php b/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php
new file mode 100644
index 000000000..e351622f3
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php
@@ -0,0 +1,83 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+use function assert;
+use function count;
+use RecursiveIterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestSuiteIterator implements RecursiveIterator
+{
+ /**
+ * @var int
+ */
+ private $position = 0;
+
+ /**
+ * @var Test[]
+ */
+ private $tests;
+
+ public function __construct(TestSuite $testSuite)
+ {
+ $this->tests = $testSuite->tests();
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->tests);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): Test
+ {
+ return $this->tests[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+
+ /**
+ * @throws NoChildTestSuiteException
+ */
+ public function getChildren(): self
+ {
+ if (!$this->hasChildren()) {
+ throw new NoChildTestSuiteException(
+ 'The current item is not a TestSuite instance and therefore does not have any children.'
+ );
+ }
+
+ $current = $this->current();
+
+ assert($current instanceof TestSuite);
+
+ return new self($current);
+ }
+
+ public function hasChildren(): bool
+ {
+ return $this->valid() && $this->current() instanceof TestSuite;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Framework/WarningTestCase.php b/vendor/phpunit/phpunit/src/Framework/WarningTestCase.php
new file mode 100644
index 000000000..e1e41bc44
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/WarningTestCase.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class WarningTestCase extends TestCase
+{
+ /**
+ * @var bool
+ */
+ protected $backupGlobals = false;
+
+ /**
+ * @var bool
+ */
+ protected $backupStaticAttributes = false;
+
+ /**
+ * @var bool
+ */
+ protected $runTestInSeparateProcess = false;
+
+ /**
+ * @var string
+ */
+ private $message;
+
+ public function __construct(string $message = '')
+ {
+ $this->message = $message;
+
+ parent::__construct('Warning');
+ }
+
+ public function getMessage(): string
+ {
+ return $this->message;
+ }
+
+ /**
+ * Returns a string representation of the test case.
+ */
+ public function toString(): string
+ {
+ return 'Warning';
+ }
+
+ /**
+ * @throws Exception
+ *
+ * @psalm-return never-return
+ */
+ protected function runTest(): void
+ {
+ throw new Warning($this->message);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php b/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php
new file mode 100644
index 000000000..75a70ca5f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/BaseTestRunner.php
@@ -0,0 +1,161 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+use function is_dir;
+use function is_file;
+use function substr;
+use PHPUnit\Framework\Exception;
+use PHPUnit\Framework\TestSuite;
+use ReflectionClass;
+use ReflectionException;
+use SebastianBergmann\FileIterator\Facade as FileIteratorFacade;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class BaseTestRunner
+{
+ /**
+ * @var int
+ */
+ public const STATUS_UNKNOWN = -1;
+
+ /**
+ * @var int
+ */
+ public const STATUS_PASSED = 0;
+
+ /**
+ * @var int
+ */
+ public const STATUS_SKIPPED = 1;
+
+ /**
+ * @var int
+ */
+ public const STATUS_INCOMPLETE = 2;
+
+ /**
+ * @var int
+ */
+ public const STATUS_FAILURE = 3;
+
+ /**
+ * @var int
+ */
+ public const STATUS_ERROR = 4;
+
+ /**
+ * @var int
+ */
+ public const STATUS_RISKY = 5;
+
+ /**
+ * @var int
+ */
+ public const STATUS_WARNING = 6;
+
+ /**
+ * @var string
+ */
+ public const SUITE_METHODNAME = 'suite';
+
+ /**
+ * Returns the loader to be used.
+ */
+ public function getLoader(): TestSuiteLoader
+ {
+ return new StandardTestSuiteLoader;
+ }
+
+ /**
+ * Returns the Test corresponding to the given suite.
+ * This is a template method, subclasses override
+ * the runFailed() and clearStatus() methods.
+ *
+ * @param string|string[] $suffixes
+ *
+ * @throws Exception
+ */
+ public function getTest(string $suiteClassFile, $suffixes = ''): ?TestSuite
+ {
+ if (is_dir($suiteClassFile)) {
+ /** @var string[] $files */
+ $files = (new FileIteratorFacade)->getFilesAsArray(
+ $suiteClassFile,
+ $suffixes
+ );
+
+ $suite = new TestSuite($suiteClassFile);
+ $suite->addTestFiles($files);
+
+ return $suite;
+ }
+
+ if (is_file($suiteClassFile) && substr($suiteClassFile, -5, 5) === '.phpt') {
+ $suite = new TestSuite;
+ $suite->addTestFile($suiteClassFile);
+
+ return $suite;
+ }
+
+ try {
+ $testClass = $this->loadSuiteClass(
+ $suiteClassFile
+ );
+ } catch (\PHPUnit\Exception $e) {
+ $this->runFailed($e->getMessage());
+
+ return null;
+ }
+
+ try {
+ $suiteMethod = $testClass->getMethod(self::SUITE_METHODNAME);
+
+ if (!$suiteMethod->isStatic()) {
+ $this->runFailed(
+ 'suite() method must be static.'
+ );
+
+ return null;
+ }
+
+ $test = $suiteMethod->invoke(null, $testClass->getName());
+ } catch (ReflectionException $e) {
+ $test = new TestSuite($testClass);
+ }
+
+ $this->clearStatus();
+
+ return $test;
+ }
+
+ /**
+ * Returns the loaded ReflectionClass for a suite name.
+ */
+ protected function loadSuiteClass(string $suiteClassFile): ReflectionClass
+ {
+ return $this->getLoader()->load($suiteClassFile);
+ }
+
+ /**
+ * Clears the status message.
+ */
+ protected function clearStatus(): void
+ {
+ }
+
+ /**
+ * Override to define how to handle a failed loading of
+ * a test suite.
+ */
+ abstract protected function runFailed(string $message): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/DefaultTestResultCache.php b/vendor/phpunit/phpunit/src/Runner/DefaultTestResultCache.php
new file mode 100644
index 000000000..19278cc06
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/DefaultTestResultCache.php
@@ -0,0 +1,157 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+use const DIRECTORY_SEPARATOR;
+use const LOCK_EX;
+use function assert;
+use function dirname;
+use function file_get_contents;
+use function file_put_contents;
+use function in_array;
+use function is_array;
+use function is_dir;
+use function is_file;
+use function json_decode;
+use function json_encode;
+use PHPUnit\Util\Filesystem;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class DefaultTestResultCache implements TestResultCache
+{
+ /**
+ * @var int
+ */
+ private const VERSION = 1;
+
+ /**
+ * @psalm-var list<int>
+ */
+ private const ALLOWED_TEST_STATUSES = [
+ BaseTestRunner::STATUS_SKIPPED,
+ BaseTestRunner::STATUS_INCOMPLETE,
+ BaseTestRunner::STATUS_FAILURE,
+ BaseTestRunner::STATUS_ERROR,
+ BaseTestRunner::STATUS_RISKY,
+ BaseTestRunner::STATUS_WARNING,
+ ];
+
+ /**
+ * @var string
+ */
+ private const DEFAULT_RESULT_CACHE_FILENAME = '.phpunit.result.cache';
+
+ /**
+ * @var string
+ */
+ private $cacheFilename;
+
+ /**
+ * @psalm-var array<string, int>
+ */
+ private $defects = [];
+
+ /**
+ * @psalm-var array<string, float>
+ */
+ private $times = [];
+
+ public function __construct(?string $filepath = null)
+ {
+ if ($filepath !== null && is_dir($filepath)) {
+ $filepath .= DIRECTORY_SEPARATOR . self::DEFAULT_RESULT_CACHE_FILENAME;
+ }
+
+ $this->cacheFilename = $filepath ?? $_ENV['PHPUNIT_RESULT_CACHE'] ?? self::DEFAULT_RESULT_CACHE_FILENAME;
+ }
+
+ public function setState(string $testName, int $state): void
+ {
+ if (!in_array($state, self::ALLOWED_TEST_STATUSES, true)) {
+ return;
+ }
+
+ $this->defects[$testName] = $state;
+ }
+
+ public function getState(string $testName): int
+ {
+ return $this->defects[$testName] ?? BaseTestRunner::STATUS_UNKNOWN;
+ }
+
+ public function setTime(string $testName, float $time): void
+ {
+ $this->times[$testName] = $time;
+ }
+
+ public function getTime(string $testName): float
+ {
+ return $this->times[$testName] ?? 0.0;
+ }
+
+ public function load(): void
+ {
+ if (!is_file($this->cacheFilename)) {
+ return;
+ }
+
+ $data = json_decode(
+ file_get_contents($this->cacheFilename),
+ true
+ );
+
+ if ($data === null) {
+ return;
+ }
+
+ if (!isset($data['version'])) {
+ return;
+ }
+
+ if ($data['version'] !== self::VERSION) {
+ return;
+ }
+
+ assert(isset($data['defects']) && is_array($data['defects']));
+ assert(isset($data['times']) && is_array($data['times']));
+
+ $this->defects = $data['defects'];
+ $this->times = $data['times'];
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function persist(): void
+ {
+ if (!Filesystem::createDirectory(dirname($this->cacheFilename))) {
+ throw new Exception(
+ sprintf(
+ 'Cannot create directory "%s" for result cache file',
+ $this->cacheFilename
+ )
+ );
+ }
+
+ file_put_contents(
+ $this->cacheFilename,
+ json_encode(
+ [
+ 'version' => self::VERSION,
+ 'defects' => $this->defects,
+ 'times' => $this->times,
+ ]
+ ),
+ LOCK_EX
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Exception.php b/vendor/phpunit/phpunit/src/Runner/Exception.php
new file mode 100644
index 000000000..adcd11558
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Exception.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+use RuntimeException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Exception extends RuntimeException implements \PHPUnit\Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php b/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php
new file mode 100644
index 000000000..286f717ee
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Extension/ExtensionHandler.php
@@ -0,0 +1,117 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner\Extension;
+
+use function class_exists;
+use function sprintf;
+use PHPUnit\Framework\TestListener;
+use PHPUnit\Runner\Exception;
+use PHPUnit\Runner\Hook;
+use PHPUnit\TextUI\TestRunner;
+use PHPUnit\TextUI\XmlConfiguration\Extension;
+use ReflectionClass;
+use ReflectionException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ExtensionHandler
+{
+ /**
+ * @throws Exception
+ */
+ public function registerExtension(Extension $extensionConfiguration, TestRunner $runner): void
+ {
+ $extension = $this->createInstance($extensionConfiguration);
+
+ if (!$extension instanceof Hook) {
+ throw new Exception(
+ sprintf(
+ 'Class "%s" does not implement a PHPUnit\Runner\Hook interface',
+ $extensionConfiguration->className()
+ )
+ );
+ }
+
+ $runner->addExtension($extension);
+ }
+
+ /**
+ * @throws Exception
+ *
+ * @deprecated
+ */
+ public function createTestListenerInstance(Extension $listenerConfiguration): TestListener
+ {
+ $listener = $this->createInstance($listenerConfiguration);
+
+ if (!$listener instanceof TestListener) {
+ throw new Exception(
+ sprintf(
+ 'Class "%s" does not implement the PHPUnit\Framework\TestListener interface',
+ $listenerConfiguration->className()
+ )
+ );
+ }
+
+ return $listener;
+ }
+
+ /**
+ * @throws Exception
+ */
+ private function createInstance(Extension $extensionConfiguration): object
+ {
+ $this->ensureClassExists($extensionConfiguration);
+
+ try {
+ $reflector = new ReflectionClass($extensionConfiguration->className());
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+
+ if (!$extensionConfiguration->hasArguments()) {
+ return $reflector->newInstance();
+ }
+
+ return $reflector->newInstanceArgs($extensionConfiguration->arguments());
+ }
+
+ /**
+ * @throws Exception
+ */
+ private function ensureClassExists(Extension $extensionConfiguration): void
+ {
+ if (class_exists($extensionConfiguration->className(), false)) {
+ return;
+ }
+
+ if ($extensionConfiguration->hasSourceFile()) {
+ /**
+ * @noinspection PhpIncludeInspection
+ * @psalm-suppress UnresolvableInclude
+ */
+ require_once $extensionConfiguration->sourceFile();
+ }
+
+ if (!class_exists($extensionConfiguration->className())) {
+ throw new Exception(
+ sprintf(
+ 'Class "%s" does not exist',
+ $extensionConfiguration->className()
+ )
+ );
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php b/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php
new file mode 100644
index 000000000..adc4cd77c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Extension/PharLoader.php
@@ -0,0 +1,75 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner\Extension;
+
+use PharIo\Manifest\ApplicationName;
+use PharIo\Manifest\Exception as ManifestException;
+use PharIo\Manifest\ManifestLoader;
+use PharIo\Version\Version as PharIoVersion;
+use PHPUnit\Runner\Version;
+use SebastianBergmann\FileIterator\Facade as FileIteratorFacade;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class PharLoader
+{
+ /**
+ * @psalm-return array{loadedExtensions: list<string>, notLoadedExtensions: list<string>}
+ */
+ public function loadPharExtensionsInDirectory(string $directory): array
+ {
+ $loadedExtensions = [];
+ $notLoadedExtensions = [];
+
+ foreach ((new FileIteratorFacade)->getFilesAsArray($directory, '.phar') as $file) {
+ if (!is_file('phar://' . $file . '/manifest.xml')) {
+ $notLoadedExtensions[] = $file . ' is not an extension for PHPUnit';
+
+ continue;
+ }
+
+ try {
+ $applicationName = new ApplicationName('phpunit/phpunit');
+ $version = new PharIoVersion(Version::series());
+ $manifest = ManifestLoader::fromFile('phar://' . $file . '/manifest.xml');
+
+ if (!$manifest->isExtensionFor($applicationName)) {
+ $notLoadedExtensions[] = $file . ' is not an extension for PHPUnit';
+
+ continue;
+ }
+
+ if (!$manifest->isExtensionFor($applicationName, $version)) {
+ $notLoadedExtensions[] = $file . ' is not compatible with this version of PHPUnit';
+
+ continue;
+ }
+ } catch (ManifestException $e) {
+ $notLoadedExtensions[] = $file . ': ' . $e->getMessage();
+
+ continue;
+ }
+
+ /**
+ * @noinspection PhpIncludeInspection
+ * @psalm-suppress UnresolvableInclude
+ */
+ require $file;
+
+ $loadedExtensions[] = $manifest->getName()->asString() . ' ' . $manifest->getVersion()->getVersionString();
+ }
+
+ return [
+ 'loadedExtensions' => $loadedExtensions,
+ 'notLoadedExtensions' => $notLoadedExtensions,
+ ];
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php b/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php
new file mode 100644
index 000000000..4b26e5716
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Filter/ExcludeGroupFilterIterator.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner\Filter;
+
+use function in_array;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ExcludeGroupFilterIterator extends GroupFilterIterator
+{
+ protected function doAccept(string $hash): bool
+ {
+ return !in_array($hash, $this->groupTests, true);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php b/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php
new file mode 100644
index 000000000..3f79da541
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php
@@ -0,0 +1,61 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner\Filter;
+
+use function assert;
+use function sprintf;
+use FilterIterator;
+use Iterator;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Runner\Exception;
+use RecursiveFilterIterator;
+use ReflectionClass;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Factory
+{
+ /**
+ * @psalm-var array<int,array{0: \ReflectionClass, 1: array|string}>
+ */
+ private $filters = [];
+
+ /**
+ * @param array|string $args
+ *
+ * @throws Exception
+ */
+ public function addFilter(ReflectionClass $filter, $args): void
+ {
+ if (!$filter->isSubclassOf(RecursiveFilterIterator::class)) {
+ throw new Exception(
+ sprintf(
+ 'Class "%s" does not extend RecursiveFilterIterator',
+ $filter->name
+ )
+ );
+ }
+
+ $this->filters[] = [$filter, $args];
+ }
+
+ public function factory(Iterator $iterator, TestSuite $suite): FilterIterator
+ {
+ foreach ($this->filters as $filter) {
+ [$class, $args] = $filter;
+ $iterator = $class->newInstance($iterator, $args, $suite);
+ }
+
+ assert($iterator instanceof FilterIterator);
+
+ return $iterator;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php b/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php
new file mode 100644
index 000000000..42ca77a38
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Filter/GroupFilterIterator.php
@@ -0,0 +1,58 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner\Filter;
+
+use function array_map;
+use function array_merge;
+use function in_array;
+use function spl_object_hash;
+use PHPUnit\Framework\TestSuite;
+use RecursiveFilterIterator;
+use RecursiveIterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class GroupFilterIterator extends RecursiveFilterIterator
+{
+ /**
+ * @var string[]
+ */
+ protected $groupTests = [];
+
+ public function __construct(RecursiveIterator $iterator, array $groups, TestSuite $suite)
+ {
+ parent::__construct($iterator);
+
+ foreach ($suite->getGroupDetails() as $group => $tests) {
+ if (in_array((string) $group, $groups, true)) {
+ $testHashes = array_map(
+ 'spl_object_hash',
+ $tests
+ );
+
+ $this->groupTests = array_merge($this->groupTests, $testHashes);
+ }
+ }
+ }
+
+ public function accept(): bool
+ {
+ $test = $this->getInnerIterator()->current();
+
+ if ($test instanceof TestSuite) {
+ return true;
+ }
+
+ return $this->doAccept(spl_object_hash($test));
+ }
+
+ abstract protected function doAccept(string $hash);
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php b/vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php
new file mode 100644
index 000000000..0346c6013
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Filter/IncludeGroupFilterIterator.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner\Filter;
+
+use function in_array;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class IncludeGroupFilterIterator extends GroupFilterIterator
+{
+ protected function doAccept(string $hash): bool
+ {
+ return in_array($hash, $this->groupTests, true);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php b/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php
new file mode 100644
index 000000000..7057e1c47
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Filter/NameFilterIterator.php
@@ -0,0 +1,136 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner\Filter;
+
+use function end;
+use function implode;
+use function preg_match;
+use function sprintf;
+use function str_replace;
+use Exception;
+use PHPUnit\Framework\ErrorTestCase;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Framework\WarningTestCase;
+use PHPUnit\Util\RegularExpression;
+use RecursiveFilterIterator;
+use RecursiveIterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class NameFilterIterator extends RecursiveFilterIterator
+{
+ /**
+ * @var string
+ */
+ private $filter;
+
+ /**
+ * @var int
+ */
+ private $filterMin;
+
+ /**
+ * @var int
+ */
+ private $filterMax;
+
+ /**
+ * @throws Exception
+ */
+ public function __construct(RecursiveIterator $iterator, string $filter)
+ {
+ parent::__construct($iterator);
+
+ $this->setFilter($filter);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function accept(): bool
+ {
+ $test = $this->getInnerIterator()->current();
+
+ if ($test instanceof TestSuite) {
+ return true;
+ }
+
+ $tmp = \PHPUnit\Util\Test::describe($test);
+
+ if ($test instanceof ErrorTestCase || $test instanceof WarningTestCase) {
+ $name = $test->getMessage();
+ } elseif ($tmp[0] !== '') {
+ $name = implode('::', $tmp);
+ } else {
+ $name = $tmp[1];
+ }
+
+ $accepted = @preg_match($this->filter, $name, $matches);
+
+ if ($accepted && isset($this->filterMax)) {
+ $set = end($matches);
+ $accepted = $set >= $this->filterMin && $set <= $this->filterMax;
+ }
+
+ return (bool) $accepted;
+ }
+
+ /**
+ * @throws Exception
+ */
+ private function setFilter(string $filter): void
+ {
+ if (RegularExpression::safeMatch($filter, '') === false) {
+ // Handles:
+ // * testAssertEqualsSucceeds#4
+ // * testAssertEqualsSucceeds#4-8
+ if (preg_match('/^(.*?)#(\d+)(?:-(\d+))?$/', $filter, $matches)) {
+ if (isset($matches[3]) && $matches[2] < $matches[3]) {
+ $filter = sprintf(
+ '%s.*with data set #(\d+)$',
+ $matches[1]
+ );
+
+ $this->filterMin = (int) $matches[2];
+ $this->filterMax = (int) $matches[3];
+ } else {
+ $filter = sprintf(
+ '%s.*with data set #%s$',
+ $matches[1],
+ $matches[2]
+ );
+ }
+ } // Handles:
+ // * testDetermineJsonError@JSON_ERROR_NONE
+ // * testDetermineJsonError@JSON.*
+ elseif (preg_match('/^(.*?)@(.+)$/', $filter, $matches)) {
+ $filter = sprintf(
+ '%s.*with data set "%s"$',
+ $matches[1],
+ $matches[2]
+ );
+ }
+
+ // Escape delimiters in regular expression. Do NOT use preg_quote,
+ // to keep magic characters.
+ $filter = sprintf(
+ '/%s/i',
+ str_replace(
+ '/',
+ '\\/',
+ $filter
+ )
+ );
+ }
+
+ $this->filter = $filter;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php
new file mode 100644
index 000000000..432be9a93
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterIncompleteTestHook.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface AfterIncompleteTestHook extends TestHook
+{
+ public function executeAfterIncompleteTest(string $test, string $message, float $time): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php
new file mode 100644
index 000000000..eb789f264
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterLastTestHook.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface AfterLastTestHook extends Hook
+{
+ public function executeAfterLastTest(): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php
new file mode 100644
index 000000000..31cc91abf
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterRiskyTestHook.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface AfterRiskyTestHook extends TestHook
+{
+ public function executeAfterRiskyTest(string $test, string $message, float $time): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php
new file mode 100644
index 000000000..76980b3fc
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterSkippedTestHook.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface AfterSkippedTestHook extends TestHook
+{
+ public function executeAfterSkippedTest(string $test, string $message, float $time): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php
new file mode 100644
index 000000000..d0a10dd15
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterSuccessfulTestHook.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface AfterSuccessfulTestHook extends TestHook
+{
+ public function executeAfterSuccessfulTest(string $test, float $time): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php
new file mode 100644
index 000000000..12ecebd32
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestErrorHook.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface AfterTestErrorHook extends TestHook
+{
+ public function executeAfterTestError(string $test, string $message, float $time): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php
new file mode 100644
index 000000000..94b2f3004
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestFailureHook.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface AfterTestFailureHook extends TestHook
+{
+ public function executeAfterTestFailure(string $test, string $message, float $time): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php
new file mode 100644
index 000000000..3d5bcaa93
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestHook.php
@@ -0,0 +1,30 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface AfterTestHook extends TestHook
+{
+ /**
+ * This hook will fire after any test, regardless of the result.
+ *
+ * For more fine grained control, have a look at the other hooks
+ * that extend PHPUnit\Runner\Hook.
+ */
+ public function executeAfterTest(string $test, float $time): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php
new file mode 100644
index 000000000..860fcceeb
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/AfterTestWarningHook.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface AfterTestWarningHook extends TestHook
+{
+ public function executeAfterTestWarning(string $test, string $message, float $time): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php
new file mode 100644
index 000000000..feeb90fba
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/BeforeFirstTestHook.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface BeforeFirstTestHook extends Hook
+{
+ public function executeBeforeFirstTest(): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php
new file mode 100644
index 000000000..b7e0827d0
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/BeforeTestHook.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface BeforeTestHook extends TestHook
+{
+ public function executeBeforeTest(string $test): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/Hook.php b/vendor/phpunit/phpunit/src/Runner/Hook/Hook.php
new file mode 100644
index 000000000..a08dc72b0
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/Hook.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface Hook
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/TestHook.php b/vendor/phpunit/phpunit/src/Runner/Hook/TestHook.php
new file mode 100644
index 000000000..31e880e2c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/TestHook.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * This interface, as well as the associated mechanism for extending PHPUnit,
+ * will be removed in PHPUnit 10. There is no alternative available in this
+ * version of PHPUnit.
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/4676
+ */
+interface TestHook extends Hook
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php b/vendor/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php
new file mode 100644
index 000000000..60fbfba31
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Hook/TestListenerAdapter.php
@@ -0,0 +1,141 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+use PHPUnit\Framework\AssertionFailedError;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestListener;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Framework\Warning;
+use PHPUnit\Util\Test as TestUtil;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestListenerAdapter implements TestListener
+{
+ /**
+ * @var TestHook[]
+ */
+ private $hooks = [];
+
+ /**
+ * @var bool
+ */
+ private $lastTestWasNotSuccessful;
+
+ public function add(TestHook $hook): void
+ {
+ $this->hooks[] = $hook;
+ }
+
+ public function startTest(Test $test): void
+ {
+ foreach ($this->hooks as $hook) {
+ if ($hook instanceof BeforeTestHook) {
+ $hook->executeBeforeTest(TestUtil::describeAsString($test));
+ }
+ }
+
+ $this->lastTestWasNotSuccessful = false;
+ }
+
+ public function addError(Test $test, Throwable $t, float $time): void
+ {
+ foreach ($this->hooks as $hook) {
+ if ($hook instanceof AfterTestErrorHook) {
+ $hook->executeAfterTestError(TestUtil::describeAsString($test), $t->getMessage(), $time);
+ }
+ }
+
+ $this->lastTestWasNotSuccessful = true;
+ }
+
+ public function addWarning(Test $test, Warning $e, float $time): void
+ {
+ foreach ($this->hooks as $hook) {
+ if ($hook instanceof AfterTestWarningHook) {
+ $hook->executeAfterTestWarning(TestUtil::describeAsString($test), $e->getMessage(), $time);
+ }
+ }
+
+ $this->lastTestWasNotSuccessful = true;
+ }
+
+ public function addFailure(Test $test, AssertionFailedError $e, float $time): void
+ {
+ foreach ($this->hooks as $hook) {
+ if ($hook instanceof AfterTestFailureHook) {
+ $hook->executeAfterTestFailure(TestUtil::describeAsString($test), $e->getMessage(), $time);
+ }
+ }
+
+ $this->lastTestWasNotSuccessful = true;
+ }
+
+ public function addIncompleteTest(Test $test, Throwable $t, float $time): void
+ {
+ foreach ($this->hooks as $hook) {
+ if ($hook instanceof AfterIncompleteTestHook) {
+ $hook->executeAfterIncompleteTest(TestUtil::describeAsString($test), $t->getMessage(), $time);
+ }
+ }
+
+ $this->lastTestWasNotSuccessful = true;
+ }
+
+ public function addRiskyTest(Test $test, Throwable $t, float $time): void
+ {
+ foreach ($this->hooks as $hook) {
+ if ($hook instanceof AfterRiskyTestHook) {
+ $hook->executeAfterRiskyTest(TestUtil::describeAsString($test), $t->getMessage(), $time);
+ }
+ }
+
+ $this->lastTestWasNotSuccessful = true;
+ }
+
+ public function addSkippedTest(Test $test, Throwable $t, float $time): void
+ {
+ foreach ($this->hooks as $hook) {
+ if ($hook instanceof AfterSkippedTestHook) {
+ $hook->executeAfterSkippedTest(TestUtil::describeAsString($test), $t->getMessage(), $time);
+ }
+ }
+
+ $this->lastTestWasNotSuccessful = true;
+ }
+
+ public function endTest(Test $test, float $time): void
+ {
+ if (!$this->lastTestWasNotSuccessful) {
+ foreach ($this->hooks as $hook) {
+ if ($hook instanceof AfterSuccessfulTestHook) {
+ $hook->executeAfterSuccessfulTest(TestUtil::describeAsString($test), $time);
+ }
+ }
+ }
+
+ foreach ($this->hooks as $hook) {
+ if ($hook instanceof AfterTestHook) {
+ $hook->executeAfterTest(TestUtil::describeAsString($test), $time);
+ }
+ }
+ }
+
+ public function startTestSuite(TestSuite $suite): void
+ {
+ }
+
+ public function endTestSuite(TestSuite $suite): void
+ {
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/NullTestResultCache.php b/vendor/phpunit/phpunit/src/Runner/NullTestResultCache.php
new file mode 100644
index 000000000..2aa86534a
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/NullTestResultCache.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class NullTestResultCache implements TestResultCache
+{
+ public function setState(string $testName, int $state): void
+ {
+ }
+
+ public function getState(string $testName): int
+ {
+ return BaseTestRunner::STATUS_UNKNOWN;
+ }
+
+ public function setTime(string $testName, float $time): void
+ {
+ }
+
+ public function getTime(string $testName): float
+ {
+ return 0;
+ }
+
+ public function load(): void
+ {
+ }
+
+ public function persist(): void
+ {
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php b/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php
new file mode 100644
index 000000000..6590102d7
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/PhptTestCase.php
@@ -0,0 +1,864 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+use const DEBUG_BACKTRACE_IGNORE_ARGS;
+use const DIRECTORY_SEPARATOR;
+use function array_merge;
+use function basename;
+use function debug_backtrace;
+use function defined;
+use function dirname;
+use function explode;
+use function extension_loaded;
+use function file;
+use function file_get_contents;
+use function file_put_contents;
+use function is_array;
+use function is_file;
+use function is_readable;
+use function is_string;
+use function ltrim;
+use function phpversion;
+use function preg_match;
+use function preg_replace;
+use function preg_split;
+use function realpath;
+use function rtrim;
+use function sprintf;
+use function str_replace;
+use function strncasecmp;
+use function strpos;
+use function substr;
+use function trim;
+use function unlink;
+use function unserialize;
+use function var_export;
+use function version_compare;
+use PHPUnit\Framework\Assert;
+use PHPUnit\Framework\AssertionFailedError;
+use PHPUnit\Framework\ExecutionOrderDependency;
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\IncompleteTestError;
+use PHPUnit\Framework\PHPTAssertionFailedError;
+use PHPUnit\Framework\Reorderable;
+use PHPUnit\Framework\SelfDescribing;
+use PHPUnit\Framework\SkippedTestError;
+use PHPUnit\Framework\SyntheticSkippedError;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestResult;
+use PHPUnit\Util\PHP\AbstractPhpProcess;
+use SebastianBergmann\CodeCoverage\RawCodeCoverageData;
+use SebastianBergmann\Template\Template;
+use SebastianBergmann\Timer\Timer;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class PhptTestCase implements Reorderable, SelfDescribing, Test
+{
+ /**
+ * @var string
+ */
+ private $filename;
+
+ /**
+ * @var AbstractPhpProcess
+ */
+ private $phpUtil;
+
+ /**
+ * @var string
+ */
+ private $output = '';
+
+ /**
+ * Constructs a test case with the given filename.
+ *
+ * @throws Exception
+ */
+ public function __construct(string $filename, AbstractPhpProcess $phpUtil = null)
+ {
+ if (!is_file($filename)) {
+ throw new Exception(
+ sprintf(
+ 'File "%s" does not exist.',
+ $filename
+ )
+ );
+ }
+
+ $this->filename = $filename;
+ $this->phpUtil = $phpUtil ?: AbstractPhpProcess::factory();
+ }
+
+ /**
+ * Counts the number of test cases executed by run(TestResult result).
+ */
+ public function count(): int
+ {
+ return 1;
+ }
+
+ /**
+ * Runs a test and collects its result in a TestResult instance.
+ *
+ * @throws \SebastianBergmann\CodeCoverage\InvalidArgumentException
+ * @throws \SebastianBergmann\CodeCoverage\UnintentionallyCoveredCodeException
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ */
+ public function run(TestResult $result = null): TestResult
+ {
+ if ($result === null) {
+ $result = new TestResult;
+ }
+
+ try {
+ $sections = $this->parse();
+ } catch (Exception $e) {
+ $result->startTest($this);
+ $result->addFailure($this, new SkippedTestError($e->getMessage()), 0);
+ $result->endTest($this, 0);
+
+ return $result;
+ }
+
+ $code = $this->render($sections['FILE']);
+ $xfail = false;
+ $settings = $this->parseIniSection($this->settings($result->getCollectCodeCoverageInformation()));
+
+ $result->startTest($this);
+
+ if (isset($sections['INI'])) {
+ $settings = $this->parseIniSection($sections['INI'], $settings);
+ }
+
+ if (isset($sections['ENV'])) {
+ $env = $this->parseEnvSection($sections['ENV']);
+ $this->phpUtil->setEnv($env);
+ }
+
+ $this->phpUtil->setUseStderrRedirection(true);
+
+ if ($result->enforcesTimeLimit()) {
+ $this->phpUtil->setTimeout($result->getTimeoutForLargeTests());
+ }
+
+ $skip = $this->runSkip($sections, $result, $settings);
+
+ if ($skip) {
+ return $result;
+ }
+
+ if (isset($sections['XFAIL'])) {
+ $xfail = trim($sections['XFAIL']);
+ }
+
+ if (isset($sections['STDIN'])) {
+ $this->phpUtil->setStdin($sections['STDIN']);
+ }
+
+ if (isset($sections['ARGS'])) {
+ $this->phpUtil->setArgs($sections['ARGS']);
+ }
+
+ if ($result->getCollectCodeCoverageInformation()) {
+ $codeCoverageCacheDirectory = null;
+ $pathCoverage = false;
+
+ $codeCoverage = $result->getCodeCoverage();
+
+ if ($codeCoverage) {
+ if ($codeCoverage->cachesStaticAnalysis()) {
+ $codeCoverageCacheDirectory = $codeCoverage->cacheDirectory();
+ }
+
+ $pathCoverage = $codeCoverage->collectsBranchAndPathCoverage();
+ }
+
+ $this->renderForCoverage($code, $pathCoverage, $codeCoverageCacheDirectory);
+ }
+
+ $timer = new Timer;
+ $timer->start();
+
+ $jobResult = $this->phpUtil->runJob($code, $this->stringifyIni($settings));
+ $time = $timer->stop()->asSeconds();
+ $this->output = $jobResult['stdout'] ?? '';
+
+ if (isset($codeCoverage) && ($coverage = $this->cleanupForCoverage())) {
+ $codeCoverage->append($coverage, $this, true, [], []);
+ }
+
+ try {
+ $this->assertPhptExpectation($sections, $this->output);
+ } catch (AssertionFailedError $e) {
+ $failure = $e;
+
+ if ($xfail !== false) {
+ $failure = new IncompleteTestError($xfail, 0, $e);
+ } elseif ($e instanceof ExpectationFailedException) {
+ $comparisonFailure = $e->getComparisonFailure();
+
+ if ($comparisonFailure) {
+ $diff = $comparisonFailure->getDiff();
+ } else {
+ $diff = $e->getMessage();
+ }
+
+ $hint = $this->getLocationHintFromDiff($diff, $sections);
+ $trace = array_merge($hint, debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS));
+ $failure = new PHPTAssertionFailedError(
+ $e->getMessage(),
+ 0,
+ $trace[0]['file'],
+ $trace[0]['line'],
+ $trace,
+ $comparisonFailure ? $diff : ''
+ );
+ }
+
+ $result->addFailure($this, $failure, $time);
+ } catch (Throwable $t) {
+ $result->addError($this, $t, $time);
+ }
+
+ if ($xfail !== false && $result->allCompletelyImplemented()) {
+ $result->addFailure($this, new IncompleteTestError('XFAIL section but test passes'), $time);
+ }
+
+ $this->runClean($sections, $result->getCollectCodeCoverageInformation());
+
+ $result->endTest($this, $time);
+
+ return $result;
+ }
+
+ /**
+ * Returns the name of the test case.
+ */
+ public function getName(): string
+ {
+ return $this->toString();
+ }
+
+ /**
+ * Returns a string representation of the test case.
+ */
+ public function toString(): string
+ {
+ return $this->filename;
+ }
+
+ public function usesDataProvider(): bool
+ {
+ return false;
+ }
+
+ public function getNumAssertions(): int
+ {
+ return 1;
+ }
+
+ public function getActualOutput(): string
+ {
+ return $this->output;
+ }
+
+ public function hasOutput(): bool
+ {
+ return !empty($this->output);
+ }
+
+ public function sortId(): string
+ {
+ return $this->filename;
+ }
+
+ /**
+ * @return list<ExecutionOrderDependency>
+ */
+ public function provides(): array
+ {
+ return [];
+ }
+
+ /**
+ * @return list<ExecutionOrderDependency>
+ */
+ public function requires(): array
+ {
+ return [];
+ }
+
+ /**
+ * Parse --INI-- section key value pairs and return as array.
+ *
+ * @param array|string $content
+ */
+ private function parseIniSection($content, array $ini = []): array
+ {
+ if (is_string($content)) {
+ $content = explode("\n", trim($content));
+ }
+
+ foreach ($content as $setting) {
+ if (strpos($setting, '=') === false) {
+ continue;
+ }
+
+ $setting = explode('=', $setting, 2);
+ $name = trim($setting[0]);
+ $value = trim($setting[1]);
+
+ if ($name === 'extension' || $name === 'zend_extension') {
+ if (!isset($ini[$name])) {
+ $ini[$name] = [];
+ }
+
+ $ini[$name][] = $value;
+
+ continue;
+ }
+
+ $ini[$name] = $value;
+ }
+
+ return $ini;
+ }
+
+ private function parseEnvSection(string $content): array
+ {
+ $env = [];
+
+ foreach (explode("\n", trim($content)) as $e) {
+ $e = explode('=', trim($e), 2);
+
+ if (!empty($e[0]) && isset($e[1])) {
+ $env[$e[0]] = $e[1];
+ }
+ }
+
+ return $env;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ * @throws ExpectationFailedException
+ */
+ private function assertPhptExpectation(array $sections, string $output): void
+ {
+ $assertions = [
+ 'EXPECT' => 'assertEquals',
+ 'EXPECTF' => 'assertStringMatchesFormat',
+ 'EXPECTREGEX' => 'assertMatchesRegularExpression',
+ ];
+
+ $actual = preg_replace('/\r\n/', "\n", trim($output));
+
+ foreach ($assertions as $sectionName => $sectionAssertion) {
+ if (isset($sections[$sectionName])) {
+ $sectionContent = preg_replace('/\r\n/', "\n", trim($sections[$sectionName]));
+ $expected = $sectionName === 'EXPECTREGEX' ? "/{$sectionContent}/" : $sectionContent;
+
+ if ($expected === '') {
+ throw new Exception('No PHPT expectation found');
+ }
+
+ Assert::$sectionAssertion($expected, $actual);
+
+ return;
+ }
+ }
+
+ throw new Exception('No PHPT assertion found');
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ private function runSkip(array &$sections, TestResult $result, array $settings): bool
+ {
+ if (!isset($sections['SKIPIF'])) {
+ return false;
+ }
+
+ $skipif = $this->render($sections['SKIPIF']);
+ $jobResult = $this->phpUtil->runJob($skipif, $this->stringifyIni($settings));
+
+ if (!strncasecmp('skip', ltrim($jobResult['stdout']), 4)) {
+ $message = '';
+
+ if (preg_match('/^\s*skip\s*(.+)\s*/i', $jobResult['stdout'], $skipMatch)) {
+ $message = substr($skipMatch[1], 2);
+ }
+
+ $hint = $this->getLocationHint($message, $sections, 'SKIPIF');
+ $trace = array_merge($hint, debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS));
+ $result->addFailure(
+ $this,
+ new SyntheticSkippedError($message, 0, $trace[0]['file'], $trace[0]['line'], $trace),
+ 0
+ );
+ $result->endTest($this, 0);
+
+ return true;
+ }
+
+ return false;
+ }
+
+ private function runClean(array &$sections, bool $collectCoverage): void
+ {
+ $this->phpUtil->setStdin('');
+ $this->phpUtil->setArgs('');
+
+ if (isset($sections['CLEAN'])) {
+ $cleanCode = $this->render($sections['CLEAN']);
+
+ $this->phpUtil->runJob($cleanCode, $this->settings($collectCoverage));
+ }
+ }
+
+ /**
+ * @throws Exception
+ */
+ private function parse(): array
+ {
+ $sections = [];
+ $section = '';
+
+ $unsupportedSections = [
+ 'CGI',
+ 'COOKIE',
+ 'DEFLATE_POST',
+ 'EXPECTHEADERS',
+ 'EXTENSIONS',
+ 'GET',
+ 'GZIP_POST',
+ 'HEADERS',
+ 'PHPDBG',
+ 'POST',
+ 'POST_RAW',
+ 'PUT',
+ 'REDIRECTTEST',
+ 'REQUEST',
+ ];
+
+ $lineNr = 0;
+
+ foreach (file($this->filename) as $line) {
+ $lineNr++;
+
+ if (preg_match('/^--([_A-Z]+)--/', $line, $result)) {
+ $section = $result[1];
+ $sections[$section] = '';
+ $sections[$section . '_offset'] = $lineNr;
+
+ continue;
+ }
+
+ if (empty($section)) {
+ throw new Exception('Invalid PHPT file: empty section header');
+ }
+
+ $sections[$section] .= $line;
+ }
+
+ if (isset($sections['FILEEOF'])) {
+ $sections['FILE'] = rtrim($sections['FILEEOF'], "\r\n");
+ unset($sections['FILEEOF']);
+ }
+
+ $this->parseExternal($sections);
+
+ if (!$this->validate($sections)) {
+ throw new Exception('Invalid PHPT file');
+ }
+
+ foreach ($unsupportedSections as $section) {
+ if (isset($sections[$section])) {
+ throw new Exception(
+ "PHPUnit does not support PHPT {$section} sections"
+ );
+ }
+ }
+
+ return $sections;
+ }
+
+ /**
+ * @throws Exception
+ */
+ private function parseExternal(array &$sections): void
+ {
+ $allowSections = [
+ 'FILE',
+ 'EXPECT',
+ 'EXPECTF',
+ 'EXPECTREGEX',
+ ];
+ $testDirectory = dirname($this->filename) . DIRECTORY_SEPARATOR;
+
+ foreach ($allowSections as $section) {
+ if (isset($sections[$section . '_EXTERNAL'])) {
+ $externalFilename = trim($sections[$section . '_EXTERNAL']);
+
+ if (!is_file($testDirectory . $externalFilename) ||
+ !is_readable($testDirectory . $externalFilename)) {
+ throw new Exception(
+ sprintf(
+ 'Could not load --%s-- %s for PHPT file',
+ $section . '_EXTERNAL',
+ $testDirectory . $externalFilename
+ )
+ );
+ }
+
+ $sections[$section] = file_get_contents($testDirectory . $externalFilename);
+ }
+ }
+ }
+
+ private function validate(array &$sections): bool
+ {
+ $requiredSections = [
+ 'FILE',
+ [
+ 'EXPECT',
+ 'EXPECTF',
+ 'EXPECTREGEX',
+ ],
+ ];
+
+ foreach ($requiredSections as $section) {
+ if (is_array($section)) {
+ $foundSection = false;
+
+ foreach ($section as $anySection) {
+ if (isset($sections[$anySection])) {
+ $foundSection = true;
+
+ break;
+ }
+ }
+
+ if (!$foundSection) {
+ return false;
+ }
+
+ continue;
+ }
+
+ if (!isset($sections[$section])) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ private function render(string $code): string
+ {
+ return str_replace(
+ [
+ '__DIR__',
+ '__FILE__',
+ ],
+ [
+ "'" . dirname($this->filename) . "'",
+ "'" . $this->filename . "'",
+ ],
+ $code
+ );
+ }
+
+ private function getCoverageFiles(): array
+ {
+ $baseDir = dirname(realpath($this->filename)) . DIRECTORY_SEPARATOR;
+ $basename = basename($this->filename, 'phpt');
+
+ return [
+ 'coverage' => $baseDir . $basename . 'coverage',
+ 'job' => $baseDir . $basename . 'php',
+ ];
+ }
+
+ private function renderForCoverage(string &$job, bool $pathCoverage, ?string $codeCoverageCacheDirectory): void
+ {
+ $files = $this->getCoverageFiles();
+
+ $template = new Template(
+ __DIR__ . '/../Util/PHP/Template/PhptTestCase.tpl'
+ );
+
+ $composerAutoload = '\'\'';
+
+ if (defined('PHPUNIT_COMPOSER_INSTALL')) {
+ $composerAutoload = var_export(PHPUNIT_COMPOSER_INSTALL, true);
+ }
+
+ $phar = '\'\'';
+
+ if (defined('__PHPUNIT_PHAR__')) {
+ $phar = var_export(__PHPUNIT_PHAR__, true);
+ }
+
+ $globals = '';
+
+ if (!empty($GLOBALS['__PHPUNIT_BOOTSTRAP'])) {
+ $globals = '$GLOBALS[\'__PHPUNIT_BOOTSTRAP\'] = ' . var_export(
+ $GLOBALS['__PHPUNIT_BOOTSTRAP'],
+ true
+ ) . ";\n";
+ }
+
+ if ($codeCoverageCacheDirectory === null) {
+ $codeCoverageCacheDirectory = 'null';
+ } else {
+ $codeCoverageCacheDirectory = "'" . $codeCoverageCacheDirectory . "'";
+ }
+
+ $template->setVar(
+ [
+ 'composerAutoload' => $composerAutoload,
+ 'phar' => $phar,
+ 'globals' => $globals,
+ 'job' => $files['job'],
+ 'coverageFile' => $files['coverage'],
+ 'driverMethod' => $pathCoverage ? 'forLineAndPathCoverage' : 'forLineCoverage',
+ 'codeCoverageCacheDirectory' => $codeCoverageCacheDirectory,
+ ]
+ );
+
+ file_put_contents($files['job'], $job);
+
+ $job = $template->render();
+ }
+
+ private function cleanupForCoverage(): RawCodeCoverageData
+ {
+ $coverage = RawCodeCoverageData::fromXdebugWithoutPathCoverage([]);
+ $files = $this->getCoverageFiles();
+
+ if (is_file($files['coverage'])) {
+ $buffer = @file_get_contents($files['coverage']);
+
+ if ($buffer !== false) {
+ $coverage = @unserialize($buffer);
+
+ if ($coverage === false) {
+ $coverage = RawCodeCoverageData::fromXdebugWithoutPathCoverage([]);
+ }
+ }
+ }
+
+ foreach ($files as $file) {
+ @unlink($file);
+ }
+
+ return $coverage;
+ }
+
+ private function stringifyIni(array $ini): array
+ {
+ $settings = [];
+
+ foreach ($ini as $key => $value) {
+ if (is_array($value)) {
+ foreach ($value as $val) {
+ $settings[] = $key . '=' . $val;
+ }
+
+ continue;
+ }
+
+ $settings[] = $key . '=' . $value;
+ }
+
+ return $settings;
+ }
+
+ private function getLocationHintFromDiff(string $message, array $sections): array
+ {
+ $needle = '';
+ $previousLine = '';
+ $block = 'message';
+
+ foreach (preg_split('/\r\n|\r|\n/', $message) as $line) {
+ $line = trim($line);
+
+ if ($block === 'message' && $line === '--- Expected') {
+ $block = 'expected';
+ }
+
+ if ($block === 'expected' && $line === '@@ @@') {
+ $block = 'diff';
+ }
+
+ if ($block === 'diff') {
+ if (strpos($line, '+') === 0) {
+ $needle = $this->getCleanDiffLine($previousLine);
+
+ break;
+ }
+
+ if (strpos($line, '-') === 0) {
+ $needle = $this->getCleanDiffLine($line);
+
+ break;
+ }
+ }
+
+ if (!empty($line)) {
+ $previousLine = $line;
+ }
+ }
+
+ return $this->getLocationHint($needle, $sections);
+ }
+
+ private function getCleanDiffLine(string $line): string
+ {
+ if (preg_match('/^[\-+]([\'\"]?)(.*)\1$/', $line, $matches)) {
+ $line = $matches[2];
+ }
+
+ return $line;
+ }
+
+ private function getLocationHint(string $needle, array $sections, ?string $sectionName = null): array
+ {
+ $needle = trim($needle);
+
+ if (empty($needle)) {
+ return [[
+ 'file' => realpath($this->filename),
+ 'line' => 1,
+ ]];
+ }
+
+ if ($sectionName) {
+ $search = [$sectionName];
+ } else {
+ $search = [
+ // 'FILE',
+ 'EXPECT',
+ 'EXPECTF',
+ 'EXPECTREGEX',
+ ];
+ }
+
+ $sectionOffset = null;
+
+ foreach ($search as $section) {
+ if (!isset($sections[$section])) {
+ continue;
+ }
+
+ if (isset($sections[$section . '_EXTERNAL'])) {
+ $externalFile = trim($sections[$section . '_EXTERNAL']);
+
+ return [
+ [
+ 'file' => realpath(dirname($this->filename) . DIRECTORY_SEPARATOR . $externalFile),
+ 'line' => 1,
+ ],
+ [
+ 'file' => realpath($this->filename),
+ 'line' => ($sections[$section . '_EXTERNAL_offset'] ?? 0) + 1,
+ ],
+ ];
+ }
+
+ $sectionOffset = $sections[$section . '_offset'] ?? 0;
+ $offset = $sectionOffset + 1;
+
+ foreach (preg_split('/\r\n|\r|\n/', $sections[$section]) as $line) {
+ if (strpos($line, $needle) !== false) {
+ return [[
+ 'file' => realpath($this->filename),
+ 'line' => $offset,
+ ]];
+ }
+ $offset++;
+ }
+ }
+
+ if ($sectionName) {
+ // String not found in specified section, show user the start of the named section
+ return [[
+ 'file' => realpath($this->filename),
+ 'line' => $sectionOffset,
+ ]];
+ }
+
+ // No section specified, show user start of code
+ return [[
+ 'file' => realpath($this->filename),
+ 'line' => 1,
+ ]];
+ }
+
+ /**
+ * @psalm-return list<string>
+ */
+ private function settings(bool $collectCoverage): array
+ {
+ $settings = [
+ 'allow_url_fopen=1',
+ 'auto_append_file=',
+ 'auto_prepend_file=',
+ 'disable_functions=',
+ 'display_errors=1',
+ 'docref_ext=.html',
+ 'docref_root=',
+ 'error_append_string=',
+ 'error_prepend_string=',
+ 'error_reporting=-1',
+ 'html_errors=0',
+ 'log_errors=0',
+ 'open_basedir=',
+ 'output_buffering=Off',
+ 'output_handler=',
+ 'report_memleaks=0',
+ 'report_zend_debug=0',
+ ];
+
+ if (extension_loaded('pcov')) {
+ if ($collectCoverage) {
+ $settings[] = 'pcov.enabled=1';
+ } else {
+ $settings[] = 'pcov.enabled=0';
+ }
+ }
+
+ if (extension_loaded('xdebug')) {
+ if (version_compare(phpversion('xdebug'), '3', '>=')) {
+ if ($collectCoverage) {
+ $settings[] = 'xdebug.mode=coverage';
+ } else {
+ $settings[] = 'xdebug.mode=off';
+ }
+ } else {
+ $settings[] = 'xdebug.default_enable=0';
+
+ if ($collectCoverage) {
+ $settings[] = 'xdebug.coverage_enable=1';
+ }
+ }
+ }
+
+ return $settings;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/ResultCacheExtension.php b/vendor/phpunit/phpunit/src/Runner/ResultCacheExtension.php
new file mode 100644
index 000000000..31d7610e2
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/ResultCacheExtension.php
@@ -0,0 +1,110 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+use function preg_match;
+use function round;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ResultCacheExtension implements AfterIncompleteTestHook, AfterLastTestHook, AfterRiskyTestHook, AfterSkippedTestHook, AfterSuccessfulTestHook, AfterTestErrorHook, AfterTestFailureHook, AfterTestWarningHook
+{
+ /**
+ * @var TestResultCache
+ */
+ private $cache;
+
+ public function __construct(TestResultCache $cache)
+ {
+ $this->cache = $cache;
+ }
+
+ public function flush(): void
+ {
+ $this->cache->persist();
+ }
+
+ public function executeAfterSuccessfulTest(string $test, float $time): void
+ {
+ $testName = $this->getTestName($test);
+
+ $this->cache->setTime($testName, round($time, 3));
+ }
+
+ public function executeAfterIncompleteTest(string $test, string $message, float $time): void
+ {
+ $testName = $this->getTestName($test);
+
+ $this->cache->setTime($testName, round($time, 3));
+ $this->cache->setState($testName, BaseTestRunner::STATUS_INCOMPLETE);
+ }
+
+ public function executeAfterRiskyTest(string $test, string $message, float $time): void
+ {
+ $testName = $this->getTestName($test);
+
+ $this->cache->setTime($testName, round($time, 3));
+ $this->cache->setState($testName, BaseTestRunner::STATUS_RISKY);
+ }
+
+ public function executeAfterSkippedTest(string $test, string $message, float $time): void
+ {
+ $testName = $this->getTestName($test);
+
+ $this->cache->setTime($testName, round($time, 3));
+ $this->cache->setState($testName, BaseTestRunner::STATUS_SKIPPED);
+ }
+
+ public function executeAfterTestError(string $test, string $message, float $time): void
+ {
+ $testName = $this->getTestName($test);
+
+ $this->cache->setTime($testName, round($time, 3));
+ $this->cache->setState($testName, BaseTestRunner::STATUS_ERROR);
+ }
+
+ public function executeAfterTestFailure(string $test, string $message, float $time): void
+ {
+ $testName = $this->getTestName($test);
+
+ $this->cache->setTime($testName, round($time, 3));
+ $this->cache->setState($testName, BaseTestRunner::STATUS_FAILURE);
+ }
+
+ public function executeAfterTestWarning(string $test, string $message, float $time): void
+ {
+ $testName = $this->getTestName($test);
+
+ $this->cache->setTime($testName, round($time, 3));
+ $this->cache->setState($testName, BaseTestRunner::STATUS_WARNING);
+ }
+
+ public function executeAfterLastTest(): void
+ {
+ $this->flush();
+ }
+
+ /**
+ * @param string $test A long description format of the current test
+ *
+ * @return string The test name without TestSuiteClassName:: and @dataprovider details
+ */
+ private function getTestName(string $test): string
+ {
+ $matches = [];
+
+ if (preg_match('/^(?<name>\S+::\S+)(?:(?<dataname> with data set (?:#\d+|"[^"]+"))\s\()?/', $test, $matches)) {
+ $test = $matches['name'] . ($matches['dataname'] ?? '');
+ }
+
+ return $test;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php b/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php
new file mode 100644
index 000000000..f6de4e937
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php
@@ -0,0 +1,123 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+use function array_diff;
+use function array_values;
+use function basename;
+use function class_exists;
+use function get_declared_classes;
+use function sprintf;
+use function stripos;
+use function strlen;
+use function substr;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Util\FileLoader;
+use ReflectionClass;
+use ReflectionException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ *
+ * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039
+ */
+final class StandardTestSuiteLoader implements TestSuiteLoader
+{
+ /**
+ * @throws Exception
+ */
+ public function load(string $suiteClassFile): ReflectionClass
+ {
+ $suiteClassName = basename($suiteClassFile, '.php');
+ $loadedClasses = get_declared_classes();
+
+ if (!class_exists($suiteClassName, false)) {
+ /* @noinspection UnusedFunctionResultInspection */
+ FileLoader::checkAndLoad($suiteClassFile);
+
+ $loadedClasses = array_values(
+ array_diff(get_declared_classes(), $loadedClasses)
+ );
+
+ if (empty($loadedClasses)) {
+ throw $this->exceptionFor($suiteClassName, $suiteClassFile);
+ }
+ }
+
+ if (!class_exists($suiteClassName, false)) {
+ // this block will handle namespaced classes
+ $offset = 0 - strlen($suiteClassName);
+
+ foreach ($loadedClasses as $loadedClass) {
+ if (stripos(substr($loadedClass, $offset - 1), '\\' . $suiteClassName) === 0) {
+ $suiteClassName = $loadedClass;
+
+ break;
+ }
+ }
+ }
+
+ if (!class_exists($suiteClassName, false)) {
+ throw $this->exceptionFor($suiteClassName, $suiteClassFile);
+ }
+
+ try {
+ $class = new ReflectionClass($suiteClassName);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if ($class->isSubclassOf(TestCase::class) && !$class->isAbstract()) {
+ return $class;
+ }
+
+ if ($class->hasMethod('suite')) {
+ try {
+ $method = $class->getMethod('suite');
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if (!$method->isAbstract() && $method->isPublic() && $method->isStatic()) {
+ return $class;
+ }
+ }
+
+ throw $this->exceptionFor($suiteClassName, $suiteClassFile);
+ }
+
+ public function reload(ReflectionClass $aClass): ReflectionClass
+ {
+ return $aClass;
+ }
+
+ private function exceptionFor(string $className, string $filename): Exception
+ {
+ return new Exception(
+ sprintf(
+ "Class '%s' could not be found in '%s'.",
+ $className,
+ $filename
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/TestResultCache.php b/vendor/phpunit/phpunit/src/Runner/TestResultCache.php
new file mode 100644
index 000000000..69e628289
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/TestResultCache.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface TestResultCache
+{
+ public function setState(string $testName, int $state): void;
+
+ public function getState(string $testName): int;
+
+ public function setTime(string $testName, float $time): void;
+
+ public function getTime(string $testName): float;
+
+ public function load(): void;
+
+ public function persist(): void;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php b/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php
new file mode 100644
index 000000000..c9d8e01b1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/TestSuiteLoader.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+use ReflectionClass;
+
+/**
+ * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+interface TestSuiteLoader
+{
+ public function load(string $suiteClassFile): ReflectionClass;
+
+ public function reload(ReflectionClass $aClass): ReflectionClass;
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php b/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php
new file mode 100644
index 000000000..64ad845cf
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/TestSuiteSorter.php
@@ -0,0 +1,394 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+use function array_diff;
+use function array_merge;
+use function array_reverse;
+use function array_splice;
+use function count;
+use function in_array;
+use function max;
+use function shuffle;
+use function usort;
+use PHPUnit\Framework\DataProviderTestSuite;
+use PHPUnit\Framework\Reorderable;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Util\Test as TestUtil;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestSuiteSorter
+{
+ /**
+ * @var int
+ */
+ public const ORDER_DEFAULT = 0;
+
+ /**
+ * @var int
+ */
+ public const ORDER_RANDOMIZED = 1;
+
+ /**
+ * @var int
+ */
+ public const ORDER_REVERSED = 2;
+
+ /**
+ * @var int
+ */
+ public const ORDER_DEFECTS_FIRST = 3;
+
+ /**
+ * @var int
+ */
+ public const ORDER_DURATION = 4;
+
+ /**
+ * Order tests by @size annotation 'small', 'medium', 'large'.
+ *
+ * @var int
+ */
+ public const ORDER_SIZE = 5;
+
+ /**
+ * List of sorting weights for all test result codes. A higher number gives higher priority.
+ */
+ private const DEFECT_SORT_WEIGHT = [
+ BaseTestRunner::STATUS_ERROR => 6,
+ BaseTestRunner::STATUS_FAILURE => 5,
+ BaseTestRunner::STATUS_WARNING => 4,
+ BaseTestRunner::STATUS_INCOMPLETE => 3,
+ BaseTestRunner::STATUS_RISKY => 2,
+ BaseTestRunner::STATUS_SKIPPED => 1,
+ BaseTestRunner::STATUS_UNKNOWN => 0,
+ ];
+
+ private const SIZE_SORT_WEIGHT = [
+ TestUtil::SMALL => 1,
+ TestUtil::MEDIUM => 2,
+ TestUtil::LARGE => 3,
+ TestUtil::UNKNOWN => 4,
+ ];
+
+ /**
+ * @var array<string, int> Associative array of (string => DEFECT_SORT_WEIGHT) elements
+ */
+ private $defectSortOrder = [];
+
+ /**
+ * @var TestResultCache
+ */
+ private $cache;
+
+ /**
+ * @var array<string> A list of normalized names of tests before reordering
+ */
+ private $originalExecutionOrder = [];
+
+ /**
+ * @var array<string> A list of normalized names of tests affected by reordering
+ */
+ private $executionOrder = [];
+
+ public function __construct(?TestResultCache $cache = null)
+ {
+ $this->cache = $cache ?? new NullTestResultCache;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ * @throws Exception
+ */
+ public function reorderTestsInSuite(Test $suite, int $order, bool $resolveDependencies, int $orderDefects, bool $isRootTestSuite = true): void
+ {
+ $allowedOrders = [
+ self::ORDER_DEFAULT,
+ self::ORDER_REVERSED,
+ self::ORDER_RANDOMIZED,
+ self::ORDER_DURATION,
+ self::ORDER_SIZE,
+ ];
+
+ if (!in_array($order, $allowedOrders, true)) {
+ throw new Exception(
+ '$order must be one of TestSuiteSorter::ORDER_[DEFAULT|REVERSED|RANDOMIZED|DURATION|SIZE]'
+ );
+ }
+
+ $allowedOrderDefects = [
+ self::ORDER_DEFAULT,
+ self::ORDER_DEFECTS_FIRST,
+ ];
+
+ if (!in_array($orderDefects, $allowedOrderDefects, true)) {
+ throw new Exception(
+ '$orderDefects must be one of TestSuiteSorter::ORDER_DEFAULT, TestSuiteSorter::ORDER_DEFECTS_FIRST'
+ );
+ }
+
+ if ($isRootTestSuite) {
+ $this->originalExecutionOrder = $this->calculateTestExecutionOrder($suite);
+ }
+
+ if ($suite instanceof TestSuite) {
+ foreach ($suite as $_suite) {
+ $this->reorderTestsInSuite($_suite, $order, $resolveDependencies, $orderDefects, false);
+ }
+
+ if ($orderDefects === self::ORDER_DEFECTS_FIRST) {
+ $this->addSuiteToDefectSortOrder($suite);
+ }
+
+ $this->sort($suite, $order, $resolveDependencies, $orderDefects);
+ }
+
+ if ($isRootTestSuite) {
+ $this->executionOrder = $this->calculateTestExecutionOrder($suite);
+ }
+ }
+
+ public function getOriginalExecutionOrder(): array
+ {
+ return $this->originalExecutionOrder;
+ }
+
+ public function getExecutionOrder(): array
+ {
+ return $this->executionOrder;
+ }
+
+ private function sort(TestSuite $suite, int $order, bool $resolveDependencies, int $orderDefects): void
+ {
+ if (empty($suite->tests())) {
+ return;
+ }
+
+ if ($order === self::ORDER_REVERSED) {
+ $suite->setTests($this->reverse($suite->tests()));
+ } elseif ($order === self::ORDER_RANDOMIZED) {
+ $suite->setTests($this->randomize($suite->tests()));
+ } elseif ($order === self::ORDER_DURATION && $this->cache !== null) {
+ $suite->setTests($this->sortByDuration($suite->tests()));
+ } elseif ($order === self::ORDER_SIZE) {
+ $suite->setTests($this->sortBySize($suite->tests()));
+ }
+
+ if ($orderDefects === self::ORDER_DEFECTS_FIRST && $this->cache !== null) {
+ $suite->setTests($this->sortDefectsFirst($suite->tests()));
+ }
+
+ if ($resolveDependencies && !($suite instanceof DataProviderTestSuite)) {
+ /** @var TestCase[] $tests */
+ $tests = $suite->tests();
+
+ $suite->setTests($this->resolveDependencies($tests));
+ }
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ private function addSuiteToDefectSortOrder(TestSuite $suite): void
+ {
+ $max = 0;
+
+ foreach ($suite->tests() as $test) {
+ if (!$test instanceof Reorderable) {
+ continue;
+ }
+
+ if (!isset($this->defectSortOrder[$test->sortId()])) {
+ $this->defectSortOrder[$test->sortId()] = self::DEFECT_SORT_WEIGHT[$this->cache->getState($test->sortId())];
+ $max = max($max, $this->defectSortOrder[$test->sortId()]);
+ }
+ }
+
+ $this->defectSortOrder[$suite->sortId()] = $max;
+ }
+
+ private function reverse(array $tests): array
+ {
+ return array_reverse($tests);
+ }
+
+ private function randomize(array $tests): array
+ {
+ shuffle($tests);
+
+ return $tests;
+ }
+
+ private function sortDefectsFirst(array $tests): array
+ {
+ usort(
+ $tests,
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ function ($left, $right)
+ {
+ return $this->cmpDefectPriorityAndTime($left, $right);
+ }
+ );
+
+ return $tests;
+ }
+
+ private function sortByDuration(array $tests): array
+ {
+ usort(
+ $tests,
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ function ($left, $right)
+ {
+ return $this->cmpDuration($left, $right);
+ }
+ );
+
+ return $tests;
+ }
+
+ private function sortBySize(array $tests): array
+ {
+ usort(
+ $tests,
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ function ($left, $right)
+ {
+ return $this->cmpSize($left, $right);
+ }
+ );
+
+ return $tests;
+ }
+
+ /**
+ * Comparator callback function to sort tests for "reach failure as fast as possible".
+ *
+ * 1. sort tests by defect weight defined in self::DEFECT_SORT_WEIGHT
+ * 2. when tests are equally defective, sort the fastest to the front
+ * 3. do not reorder successful tests
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ private function cmpDefectPriorityAndTime(Test $a, Test $b): int
+ {
+ if (!($a instanceof Reorderable && $b instanceof Reorderable)) {
+ return 0;
+ }
+
+ $priorityA = $this->defectSortOrder[$a->sortId()] ?? 0;
+ $priorityB = $this->defectSortOrder[$b->sortId()] ?? 0;
+
+ if ($priorityB <=> $priorityA) {
+ // Sort defect weight descending
+ return $priorityB <=> $priorityA;
+ }
+
+ if ($priorityA || $priorityB) {
+ return $this->cmpDuration($a, $b);
+ }
+
+ // do not change execution order
+ return 0;
+ }
+
+ /**
+ * Compares test duration for sorting tests by duration ascending.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ private function cmpDuration(Test $a, Test $b): int
+ {
+ if (!($a instanceof Reorderable && $b instanceof Reorderable)) {
+ return 0;
+ }
+
+ return $this->cache->getTime($a->sortId()) <=> $this->cache->getTime($b->sortId());
+ }
+
+ /**
+ * Compares test size for sorting tests small->medium->large->unknown.
+ */
+ private function cmpSize(Test $a, Test $b): int
+ {
+ $sizeA = ($a instanceof TestCase || $a instanceof DataProviderTestSuite)
+ ? $a->getSize()
+ : TestUtil::UNKNOWN;
+ $sizeB = ($b instanceof TestCase || $b instanceof DataProviderTestSuite)
+ ? $b->getSize()
+ : TestUtil::UNKNOWN;
+
+ return self::SIZE_SORT_WEIGHT[$sizeA] <=> self::SIZE_SORT_WEIGHT[$sizeB];
+ }
+
+ /**
+ * Reorder Tests within a TestCase in such a way as to resolve as many dependencies as possible.
+ * The algorithm will leave the tests in original running order when it can.
+ * For more details see the documentation for test dependencies.
+ *
+ * Short description of algorithm:
+ * 1. Pick the next Test from remaining tests to be checked for dependencies.
+ * 2. If the test has no dependencies: mark done, start again from the top
+ * 3. If the test has dependencies but none left to do: mark done, start again from the top
+ * 4. When we reach the end add any leftover tests to the end. These will be marked 'skipped' during execution.
+ *
+ * @param array<DataProviderTestSuite|TestCase> $tests
+ *
+ * @return array<DataProviderTestSuite|TestCase>
+ */
+ private function resolveDependencies(array $tests): array
+ {
+ $newTestOrder = [];
+ $i = 0;
+ $provided = [];
+
+ do {
+ if ([] === array_diff($tests[$i]->requires(), $provided)) {
+ $provided = array_merge($provided, $tests[$i]->provides());
+ $newTestOrder = array_merge($newTestOrder, array_splice($tests, $i, 1));
+ $i = 0;
+ } else {
+ $i++;
+ }
+ } while (!empty($tests) && ($i < count($tests)));
+
+ return array_merge($newTestOrder, $tests);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ private function calculateTestExecutionOrder(Test $suite): array
+ {
+ $tests = [];
+
+ if ($suite instanceof TestSuite) {
+ foreach ($suite->tests() as $test) {
+ if (!$test instanceof TestSuite && $test instanceof Reorderable) {
+ $tests[] = $test->sortId();
+ } else {
+ $tests = array_merge($tests, $this->calculateTestExecutionOrder($test));
+ }
+ }
+ }
+
+ return $tests;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Runner/Version.php b/vendor/phpunit/phpunit/src/Runner/Version.php
new file mode 100644
index 000000000..4e9675209
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Runner/Version.php
@@ -0,0 +1,65 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Runner;
+
+use function array_slice;
+use function dirname;
+use function explode;
+use function implode;
+use function strpos;
+use SebastianBergmann\Version as VersionId;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class Version
+{
+ /**
+ * @var string
+ */
+ private static $pharVersion = '';
+
+ /**
+ * @var string
+ */
+ private static $version = '';
+
+ /**
+ * Returns the current version of PHPUnit.
+ */
+ public static function id(): string
+ {
+ if (self::$pharVersion !== '') {
+ return self::$pharVersion;
+ }
+
+ if (self::$version === '') {
+ self::$version = (new VersionId('9.5.16', dirname(__DIR__, 2)))->getVersion();
+ }
+
+ return self::$version;
+ }
+
+ public static function series(): string
+ {
+ if (strpos(self::id(), '-')) {
+ $version = explode('-', self::id())[0];
+ } else {
+ $version = self::id();
+ }
+
+ return implode('.', array_slice(explode('.', $version), 0, 2));
+ }
+
+ public static function getVersionString(): string
+ {
+ return 'PHPUnit ' . self::id() . ' by Sebastian Bergmann and contributors.';
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/CliArguments/Builder.php b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Builder.php
new file mode 100644
index 000000000..7d5e1b5b4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Builder.php
@@ -0,0 +1,887 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\CliArguments;
+
+use function array_map;
+use function array_merge;
+use function class_exists;
+use function explode;
+use function is_numeric;
+use function str_replace;
+use PHPUnit\Runner\TestSuiteSorter;
+use PHPUnit\TextUI\DefaultResultPrinter;
+use PHPUnit\TextUI\XmlConfiguration\Extension;
+use PHPUnit\Util\Log\TeamCity;
+use PHPUnit\Util\TestDox\CliTestDoxPrinter;
+use SebastianBergmann\CliParser\Exception as CliParserException;
+use SebastianBergmann\CliParser\Parser as CliParser;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Builder
+{
+ private const LONG_OPTIONS = [
+ 'atleast-version=',
+ 'prepend=',
+ 'bootstrap=',
+ 'cache-result',
+ 'do-not-cache-result',
+ 'cache-result-file=',
+ 'check-version',
+ 'colors==',
+ 'columns=',
+ 'configuration=',
+ 'coverage-cache=',
+ 'warm-coverage-cache',
+ 'coverage-filter=',
+ 'coverage-clover=',
+ 'coverage-cobertura=',
+ 'coverage-crap4j=',
+ 'coverage-html=',
+ 'coverage-php=',
+ 'coverage-text==',
+ 'coverage-xml=',
+ 'path-coverage',
+ 'debug',
+ 'disallow-test-output',
+ 'disallow-resource-usage',
+ 'disallow-todo-tests',
+ 'default-time-limit=',
+ 'enforce-time-limit',
+ 'exclude-group=',
+ 'extensions=',
+ 'filter=',
+ 'generate-configuration',
+ 'globals-backup',
+ 'group=',
+ 'covers=',
+ 'uses=',
+ 'help',
+ 'resolve-dependencies',
+ 'ignore-dependencies',
+ 'include-path=',
+ 'list-groups',
+ 'list-suites',
+ 'list-tests',
+ 'list-tests-xml=',
+ 'loader=',
+ 'log-junit=',
+ 'log-teamcity=',
+ 'migrate-configuration',
+ 'no-configuration',
+ 'no-coverage',
+ 'no-logging',
+ 'no-interaction',
+ 'no-extensions',
+ 'order-by=',
+ 'printer=',
+ 'process-isolation',
+ 'repeat=',
+ 'dont-report-useless-tests',
+ 'random-order',
+ 'random-order-seed=',
+ 'reverse-order',
+ 'reverse-list',
+ 'static-backup',
+ 'stderr',
+ 'stop-on-defect',
+ 'stop-on-error',
+ 'stop-on-failure',
+ 'stop-on-warning',
+ 'stop-on-incomplete',
+ 'stop-on-risky',
+ 'stop-on-skipped',
+ 'fail-on-empty-test-suite',
+ 'fail-on-incomplete',
+ 'fail-on-risky',
+ 'fail-on-skipped',
+ 'fail-on-warning',
+ 'strict-coverage',
+ 'disable-coverage-ignore',
+ 'strict-global-state',
+ 'teamcity',
+ 'testdox',
+ 'testdox-group=',
+ 'testdox-exclude-group=',
+ 'testdox-html=',
+ 'testdox-text=',
+ 'testdox-xml=',
+ 'test-suffix=',
+ 'testsuite=',
+ 'verbose',
+ 'version',
+ 'whitelist=',
+ 'dump-xdebug-filter=',
+ ];
+
+ private const SHORT_OPTIONS = 'd:c:hv';
+
+ public function fromParameters(array $parameters, array $additionalLongOptions): Configuration
+ {
+ try {
+ $options = (new CliParser)->parse(
+ $parameters,
+ self::SHORT_OPTIONS,
+ array_merge(self::LONG_OPTIONS, $additionalLongOptions)
+ );
+ } catch (CliParserException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+
+ $argument = null;
+ $atLeastVersion = null;
+ $backupGlobals = null;
+ $backupStaticAttributes = null;
+ $beStrictAboutChangesToGlobalState = null;
+ $beStrictAboutResourceUsageDuringSmallTests = null;
+ $bootstrap = null;
+ $cacheResult = null;
+ $cacheResultFile = null;
+ $checkVersion = null;
+ $colors = null;
+ $columns = null;
+ $configuration = null;
+ $coverageCacheDirectory = null;
+ $warmCoverageCache = null;
+ $coverageFilter = null;
+ $coverageClover = null;
+ $coverageCobertura = null;
+ $coverageCrap4J = null;
+ $coverageHtml = null;
+ $coveragePhp = null;
+ $coverageText = null;
+ $coverageTextShowUncoveredFiles = null;
+ $coverageTextShowOnlySummary = null;
+ $coverageXml = null;
+ $pathCoverage = null;
+ $debug = null;
+ $defaultTimeLimit = null;
+ $disableCodeCoverageIgnore = null;
+ $disallowTestOutput = null;
+ $disallowTodoAnnotatedTests = null;
+ $enforceTimeLimit = null;
+ $excludeGroups = null;
+ $executionOrder = null;
+ $executionOrderDefects = null;
+ $extensions = [];
+ $unavailableExtensions = [];
+ $failOnEmptyTestSuite = null;
+ $failOnIncomplete = null;
+ $failOnRisky = null;
+ $failOnSkipped = null;
+ $failOnWarning = null;
+ $filter = null;
+ $generateConfiguration = null;
+ $migrateConfiguration = null;
+ $groups = null;
+ $testsCovering = null;
+ $testsUsing = null;
+ $help = null;
+ $includePath = null;
+ $iniSettings = [];
+ $junitLogfile = null;
+ $listGroups = null;
+ $listSuites = null;
+ $listTests = null;
+ $listTestsXml = null;
+ $loader = null;
+ $noCoverage = null;
+ $noExtensions = null;
+ $noInteraction = null;
+ $noLogging = null;
+ $printer = null;
+ $processIsolation = null;
+ $randomOrderSeed = null;
+ $repeat = null;
+ $reportUselessTests = null;
+ $resolveDependencies = null;
+ $reverseList = null;
+ $stderr = null;
+ $strictCoverage = null;
+ $stopOnDefect = null;
+ $stopOnError = null;
+ $stopOnFailure = null;
+ $stopOnIncomplete = null;
+ $stopOnRisky = null;
+ $stopOnSkipped = null;
+ $stopOnWarning = null;
+ $teamcityLogfile = null;
+ $testdoxExcludeGroups = null;
+ $testdoxGroups = null;
+ $testdoxHtmlFile = null;
+ $testdoxTextFile = null;
+ $testdoxXmlFile = null;
+ $testSuffixes = null;
+ $testSuite = null;
+ $unrecognizedOptions = [];
+ $unrecognizedOrderBy = null;
+ $useDefaultConfiguration = null;
+ $verbose = null;
+ $version = null;
+ $xdebugFilterFile = null;
+
+ if (isset($options[1][0])) {
+ $argument = $options[1][0];
+ }
+
+ foreach ($options[0] as $option) {
+ switch ($option[0]) {
+ case '--colors':
+ $colors = $option[1] ?: DefaultResultPrinter::COLOR_AUTO;
+
+ break;
+
+ case '--bootstrap':
+ $bootstrap = $option[1];
+
+ break;
+
+ case '--cache-result':
+ $cacheResult = true;
+
+ break;
+
+ case '--do-not-cache-result':
+ $cacheResult = false;
+
+ break;
+
+ case '--cache-result-file':
+ $cacheResultFile = $option[1];
+
+ break;
+
+ case '--columns':
+ if (is_numeric($option[1])) {
+ $columns = (int) $option[1];
+ } elseif ($option[1] === 'max') {
+ $columns = 'max';
+ }
+
+ break;
+
+ case 'c':
+ case '--configuration':
+ $configuration = $option[1];
+
+ break;
+
+ case '--coverage-cache':
+ $coverageCacheDirectory = $option[1];
+
+ break;
+
+ case '--warm-coverage-cache':
+ $warmCoverageCache = true;
+
+ break;
+
+ case '--coverage-clover':
+ $coverageClover = $option[1];
+
+ break;
+
+ case '--coverage-cobertura':
+ $coverageCobertura = $option[1];
+
+ break;
+
+ case '--coverage-crap4j':
+ $coverageCrap4J = $option[1];
+
+ break;
+
+ case '--coverage-html':
+ $coverageHtml = $option[1];
+
+ break;
+
+ case '--coverage-php':
+ $coveragePhp = $option[1];
+
+ break;
+
+ case '--coverage-text':
+ if ($option[1] === null) {
+ $option[1] = 'php://stdout';
+ }
+
+ $coverageText = $option[1];
+ $coverageTextShowUncoveredFiles = false;
+ $coverageTextShowOnlySummary = false;
+
+ break;
+
+ case '--coverage-xml':
+ $coverageXml = $option[1];
+
+ break;
+
+ case '--path-coverage':
+ $pathCoverage = true;
+
+ break;
+
+ case 'd':
+ $tmp = explode('=', $option[1]);
+
+ if (isset($tmp[0])) {
+ if (isset($tmp[1])) {
+ $iniSettings[$tmp[0]] = $tmp[1];
+ } else {
+ $iniSettings[$tmp[0]] = '1';
+ }
+ }
+
+ break;
+
+ case '--debug':
+ $debug = true;
+
+ break;
+
+ case 'h':
+ case '--help':
+ $help = true;
+
+ break;
+
+ case '--filter':
+ $filter = $option[1];
+
+ break;
+
+ case '--testsuite':
+ $testSuite = $option[1];
+
+ break;
+
+ case '--generate-configuration':
+ $generateConfiguration = true;
+
+ break;
+
+ case '--migrate-configuration':
+ $migrateConfiguration = true;
+
+ break;
+
+ case '--group':
+ $groups = explode(',', $option[1]);
+
+ break;
+
+ case '--exclude-group':
+ $excludeGroups = explode(',', $option[1]);
+
+ break;
+
+ case '--covers':
+ $testsCovering = array_map('strtolower', explode(',', $option[1]));
+
+ break;
+
+ case '--uses':
+ $testsUsing = array_map('strtolower', explode(',', $option[1]));
+
+ break;
+
+ case '--test-suffix':
+ $testSuffixes = explode(',', $option[1]);
+
+ break;
+
+ case '--include-path':
+ $includePath = $option[1];
+
+ break;
+
+ case '--list-groups':
+ $listGroups = true;
+
+ break;
+
+ case '--list-suites':
+ $listSuites = true;
+
+ break;
+
+ case '--list-tests':
+ $listTests = true;
+
+ break;
+
+ case '--list-tests-xml':
+ $listTestsXml = $option[1];
+
+ break;
+
+ case '--printer':
+ $printer = $option[1];
+
+ break;
+
+ case '--loader':
+ $loader = $option[1];
+
+ break;
+
+ case '--log-junit':
+ $junitLogfile = $option[1];
+
+ break;
+
+ case '--log-teamcity':
+ $teamcityLogfile = $option[1];
+
+ break;
+
+ case '--order-by':
+ foreach (explode(',', $option[1]) as $order) {
+ switch ($order) {
+ case 'default':
+ $executionOrder = TestSuiteSorter::ORDER_DEFAULT;
+ $executionOrderDefects = TestSuiteSorter::ORDER_DEFAULT;
+ $resolveDependencies = true;
+
+ break;
+
+ case 'defects':
+ $executionOrderDefects = TestSuiteSorter::ORDER_DEFECTS_FIRST;
+
+ break;
+
+ case 'depends':
+ $resolveDependencies = true;
+
+ break;
+
+ case 'duration':
+ $executionOrder = TestSuiteSorter::ORDER_DURATION;
+
+ break;
+
+ case 'no-depends':
+ $resolveDependencies = false;
+
+ break;
+
+ case 'random':
+ $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED;
+
+ break;
+
+ case 'reverse':
+ $executionOrder = TestSuiteSorter::ORDER_REVERSED;
+
+ break;
+
+ case 'size':
+ $executionOrder = TestSuiteSorter::ORDER_SIZE;
+
+ break;
+
+ default:
+ $unrecognizedOrderBy = $order;
+ }
+ }
+
+ break;
+
+ case '--process-isolation':
+ $processIsolation = true;
+
+ break;
+
+ case '--repeat':
+ $repeat = (int) $option[1];
+
+ break;
+
+ case '--stderr':
+ $stderr = true;
+
+ break;
+
+ case '--stop-on-defect':
+ $stopOnDefect = true;
+
+ break;
+
+ case '--stop-on-error':
+ $stopOnError = true;
+
+ break;
+
+ case '--stop-on-failure':
+ $stopOnFailure = true;
+
+ break;
+
+ case '--stop-on-warning':
+ $stopOnWarning = true;
+
+ break;
+
+ case '--stop-on-incomplete':
+ $stopOnIncomplete = true;
+
+ break;
+
+ case '--stop-on-risky':
+ $stopOnRisky = true;
+
+ break;
+
+ case '--stop-on-skipped':
+ $stopOnSkipped = true;
+
+ break;
+
+ case '--fail-on-empty-test-suite':
+ $failOnEmptyTestSuite = true;
+
+ break;
+
+ case '--fail-on-incomplete':
+ $failOnIncomplete = true;
+
+ break;
+
+ case '--fail-on-risky':
+ $failOnRisky = true;
+
+ break;
+
+ case '--fail-on-skipped':
+ $failOnSkipped = true;
+
+ break;
+
+ case '--fail-on-warning':
+ $failOnWarning = true;
+
+ break;
+
+ case '--teamcity':
+ $printer = TeamCity::class;
+
+ break;
+
+ case '--testdox':
+ $printer = CliTestDoxPrinter::class;
+
+ break;
+
+ case '--testdox-group':
+ $testdoxGroups = explode(',', $option[1]);
+
+ break;
+
+ case '--testdox-exclude-group':
+ $testdoxExcludeGroups = explode(',', $option[1]);
+
+ break;
+
+ case '--testdox-html':
+ $testdoxHtmlFile = $option[1];
+
+ break;
+
+ case '--testdox-text':
+ $testdoxTextFile = $option[1];
+
+ break;
+
+ case '--testdox-xml':
+ $testdoxXmlFile = $option[1];
+
+ break;
+
+ case '--no-configuration':
+ $useDefaultConfiguration = false;
+
+ break;
+
+ case '--extensions':
+ foreach (explode(',', $option[1]) as $extensionClass) {
+ if (!class_exists($extensionClass)) {
+ $unavailableExtensions[] = $extensionClass;
+
+ continue;
+ }
+
+ $extensions[] = new Extension($extensionClass, '', []);
+ }
+
+ break;
+
+ case '--no-extensions':
+ $noExtensions = true;
+
+ break;
+
+ case '--no-coverage':
+ $noCoverage = true;
+
+ break;
+
+ case '--no-logging':
+ $noLogging = true;
+
+ break;
+
+ case '--no-interaction':
+ $noInteraction = true;
+
+ break;
+
+ case '--globals-backup':
+ $backupGlobals = true;
+
+ break;
+
+ case '--static-backup':
+ $backupStaticAttributes = true;
+
+ break;
+
+ case 'v':
+ case '--verbose':
+ $verbose = true;
+
+ break;
+
+ case '--atleast-version':
+ $atLeastVersion = $option[1];
+
+ break;
+
+ case '--version':
+ $version = true;
+
+ break;
+
+ case '--dont-report-useless-tests':
+ $reportUselessTests = false;
+
+ break;
+
+ case '--strict-coverage':
+ $strictCoverage = true;
+
+ break;
+
+ case '--disable-coverage-ignore':
+ $disableCodeCoverageIgnore = true;
+
+ break;
+
+ case '--strict-global-state':
+ $beStrictAboutChangesToGlobalState = true;
+
+ break;
+
+ case '--disallow-test-output':
+ $disallowTestOutput = true;
+
+ break;
+
+ case '--disallow-resource-usage':
+ $beStrictAboutResourceUsageDuringSmallTests = true;
+
+ break;
+
+ case '--default-time-limit':
+ $defaultTimeLimit = (int) $option[1];
+
+ break;
+
+ case '--enforce-time-limit':
+ $enforceTimeLimit = true;
+
+ break;
+
+ case '--disallow-todo-tests':
+ $disallowTodoAnnotatedTests = true;
+
+ break;
+
+ case '--reverse-list':
+ $reverseList = true;
+
+ break;
+
+ case '--check-version':
+ $checkVersion = true;
+
+ break;
+
+ case '--coverage-filter':
+ case '--whitelist':
+ if ($coverageFilter === null) {
+ $coverageFilter = [];
+ }
+
+ $coverageFilter[] = $option[1];
+
+ break;
+
+ case '--random-order':
+ $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED;
+
+ break;
+
+ case '--random-order-seed':
+ $randomOrderSeed = (int) $option[1];
+
+ break;
+
+ case '--resolve-dependencies':
+ $resolveDependencies = true;
+
+ break;
+
+ case '--ignore-dependencies':
+ $resolveDependencies = false;
+
+ break;
+
+ case '--reverse-order':
+ $executionOrder = TestSuiteSorter::ORDER_REVERSED;
+
+ break;
+
+ case '--dump-xdebug-filter':
+ $xdebugFilterFile = $option[1];
+
+ break;
+
+ default:
+ $unrecognizedOptions[str_replace('--', '', $option[0])] = $option[1];
+ }
+ }
+
+ if (empty($extensions)) {
+ $extensions = null;
+ }
+
+ if (empty($unavailableExtensions)) {
+ $unavailableExtensions = null;
+ }
+
+ if (empty($iniSettings)) {
+ $iniSettings = null;
+ }
+
+ if (empty($coverageFilter)) {
+ $coverageFilter = null;
+ }
+
+ return new Configuration(
+ $argument,
+ $atLeastVersion,
+ $backupGlobals,
+ $backupStaticAttributes,
+ $beStrictAboutChangesToGlobalState,
+ $beStrictAboutResourceUsageDuringSmallTests,
+ $bootstrap,
+ $cacheResult,
+ $cacheResultFile,
+ $checkVersion,
+ $colors,
+ $columns,
+ $configuration,
+ $coverageClover,
+ $coverageCobertura,
+ $coverageCrap4J,
+ $coverageHtml,
+ $coveragePhp,
+ $coverageText,
+ $coverageTextShowUncoveredFiles,
+ $coverageTextShowOnlySummary,
+ $coverageXml,
+ $pathCoverage,
+ $coverageCacheDirectory,
+ $warmCoverageCache,
+ $debug,
+ $defaultTimeLimit,
+ $disableCodeCoverageIgnore,
+ $disallowTestOutput,
+ $disallowTodoAnnotatedTests,
+ $enforceTimeLimit,
+ $excludeGroups,
+ $executionOrder,
+ $executionOrderDefects,
+ $extensions,
+ $unavailableExtensions,
+ $failOnEmptyTestSuite,
+ $failOnIncomplete,
+ $failOnRisky,
+ $failOnSkipped,
+ $failOnWarning,
+ $filter,
+ $generateConfiguration,
+ $migrateConfiguration,
+ $groups,
+ $testsCovering,
+ $testsUsing,
+ $help,
+ $includePath,
+ $iniSettings,
+ $junitLogfile,
+ $listGroups,
+ $listSuites,
+ $listTests,
+ $listTestsXml,
+ $loader,
+ $noCoverage,
+ $noExtensions,
+ $noInteraction,
+ $noLogging,
+ $printer,
+ $processIsolation,
+ $randomOrderSeed,
+ $repeat,
+ $reportUselessTests,
+ $resolveDependencies,
+ $reverseList,
+ $stderr,
+ $strictCoverage,
+ $stopOnDefect,
+ $stopOnError,
+ $stopOnFailure,
+ $stopOnIncomplete,
+ $stopOnRisky,
+ $stopOnSkipped,
+ $stopOnWarning,
+ $teamcityLogfile,
+ $testdoxExcludeGroups,
+ $testdoxGroups,
+ $testdoxHtmlFile,
+ $testdoxTextFile,
+ $testdoxXmlFile,
+ $testSuffixes,
+ $testSuite,
+ $unrecognizedOptions,
+ $unrecognizedOrderBy,
+ $useDefaultConfiguration,
+ $verbose,
+ $version,
+ $coverageFilter,
+ $xdebugFilterFile
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php
new file mode 100644
index 000000000..b220dd7aa
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Configuration.php
@@ -0,0 +1,2107 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\CliArguments;
+
+use PHPUnit\TextUI\XmlConfiguration\Extension;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Configuration
+{
+ /**
+ * @var ?string
+ */
+ private $argument;
+
+ /**
+ * @var ?string
+ */
+ private $atLeastVersion;
+
+ /**
+ * @var ?bool
+ */
+ private $backupGlobals;
+
+ /**
+ * @var ?bool
+ */
+ private $backupStaticAttributes;
+
+ /**
+ * @var ?bool
+ */
+ private $beStrictAboutChangesToGlobalState;
+
+ /**
+ * @var ?bool
+ */
+ private $beStrictAboutResourceUsageDuringSmallTests;
+
+ /**
+ * @var ?string
+ */
+ private $bootstrap;
+
+ /**
+ * @var ?bool
+ */
+ private $cacheResult;
+
+ /**
+ * @var ?string
+ */
+ private $cacheResultFile;
+
+ /**
+ * @var ?bool
+ */
+ private $checkVersion;
+
+ /**
+ * @var ?string
+ */
+ private $colors;
+
+ /**
+ * @var null|int|string
+ */
+ private $columns;
+
+ /**
+ * @var ?string
+ */
+ private $configuration;
+
+ /**
+ * @var null|string[]
+ */
+ private $coverageFilter;
+
+ /**
+ * @var ?string
+ */
+ private $coverageClover;
+
+ /**
+ * @var ?string
+ */
+ private $coverageCobertura;
+
+ /**
+ * @var ?string
+ */
+ private $coverageCrap4J;
+
+ /**
+ * @var ?string
+ */
+ private $coverageHtml;
+
+ /**
+ * @var ?string
+ */
+ private $coveragePhp;
+
+ /**
+ * @var ?string
+ */
+ private $coverageText;
+
+ /**
+ * @var ?bool
+ */
+ private $coverageTextShowUncoveredFiles;
+
+ /**
+ * @var ?bool
+ */
+ private $coverageTextShowOnlySummary;
+
+ /**
+ * @var ?string
+ */
+ private $coverageXml;
+
+ /**
+ * @var ?bool
+ */
+ private $pathCoverage;
+
+ /**
+ * @var ?string
+ */
+ private $coverageCacheDirectory;
+
+ /**
+ * @var ?bool
+ */
+ private $warmCoverageCache;
+
+ /**
+ * @var ?bool
+ */
+ private $debug;
+
+ /**
+ * @var ?int
+ */
+ private $defaultTimeLimit;
+
+ /**
+ * @var ?bool
+ */
+ private $disableCodeCoverageIgnore;
+
+ /**
+ * @var ?bool
+ */
+ private $disallowTestOutput;
+
+ /**
+ * @var ?bool
+ */
+ private $disallowTodoAnnotatedTests;
+
+ /**
+ * @var ?bool
+ */
+ private $enforceTimeLimit;
+
+ /**
+ * @var null|string[]
+ */
+ private $excludeGroups;
+
+ /**
+ * @var ?int
+ */
+ private $executionOrder;
+
+ /**
+ * @var ?int
+ */
+ private $executionOrderDefects;
+
+ /**
+ * @var null|Extension[]
+ */
+ private $extensions;
+
+ /**
+ * @var null|string[]
+ */
+ private $unavailableExtensions;
+
+ /**
+ * @var ?bool
+ */
+ private $failOnEmptyTestSuite;
+
+ /**
+ * @var ?bool
+ */
+ private $failOnIncomplete;
+
+ /**
+ * @var ?bool
+ */
+ private $failOnRisky;
+
+ /**
+ * @var ?bool
+ */
+ private $failOnSkipped;
+
+ /**
+ * @var ?bool
+ */
+ private $failOnWarning;
+
+ /**
+ * @var ?string
+ */
+ private $filter;
+
+ /**
+ * @var ?bool
+ */
+ private $generateConfiguration;
+
+ /**
+ * @var ?bool
+ */
+ private $migrateConfiguration;
+
+ /**
+ * @var null|string[]
+ */
+ private $groups;
+
+ /**
+ * @var null|string[]
+ */
+ private $testsCovering;
+
+ /**
+ * @var null|string[]
+ */
+ private $testsUsing;
+
+ /**
+ * @var ?bool
+ */
+ private $help;
+
+ /**
+ * @var ?string
+ */
+ private $includePath;
+
+ /**
+ * @var null|string[]
+ */
+ private $iniSettings;
+
+ /**
+ * @var ?string
+ */
+ private $junitLogfile;
+
+ /**
+ * @var ?bool
+ */
+ private $listGroups;
+
+ /**
+ * @var ?bool
+ */
+ private $listSuites;
+
+ /**
+ * @var ?bool
+ */
+ private $listTests;
+
+ /**
+ * @var ?string
+ */
+ private $listTestsXml;
+
+ /**
+ * @var ?string
+ */
+ private $loader;
+
+ /**
+ * @var ?bool
+ */
+ private $noCoverage;
+
+ /**
+ * @var ?bool
+ */
+ private $noExtensions;
+
+ /**
+ * @var ?bool
+ */
+ private $noInteraction;
+
+ /**
+ * @var ?bool
+ */
+ private $noLogging;
+
+ /**
+ * @var ?string
+ */
+ private $printer;
+
+ /**
+ * @var ?bool
+ */
+ private $processIsolation;
+
+ /**
+ * @var ?int
+ */
+ private $randomOrderSeed;
+
+ /**
+ * @var ?int
+ */
+ private $repeat;
+
+ /**
+ * @var ?bool
+ */
+ private $reportUselessTests;
+
+ /**
+ * @var ?bool
+ */
+ private $resolveDependencies;
+
+ /**
+ * @var ?bool
+ */
+ private $reverseList;
+
+ /**
+ * @var ?bool
+ */
+ private $stderr;
+
+ /**
+ * @var ?bool
+ */
+ private $strictCoverage;
+
+ /**
+ * @var ?bool
+ */
+ private $stopOnDefect;
+
+ /**
+ * @var ?bool
+ */
+ private $stopOnError;
+
+ /**
+ * @var ?bool
+ */
+ private $stopOnFailure;
+
+ /**
+ * @var ?bool
+ */
+ private $stopOnIncomplete;
+
+ /**
+ * @var ?bool
+ */
+ private $stopOnRisky;
+
+ /**
+ * @var ?bool
+ */
+ private $stopOnSkipped;
+
+ /**
+ * @var ?bool
+ */
+ private $stopOnWarning;
+
+ /**
+ * @var ?string
+ */
+ private $teamcityLogfile;
+
+ /**
+ * @var null|string[]
+ */
+ private $testdoxExcludeGroups;
+
+ /**
+ * @var null|string[]
+ */
+ private $testdoxGroups;
+
+ /**
+ * @var ?string
+ */
+ private $testdoxHtmlFile;
+
+ /**
+ * @var ?string
+ */
+ private $testdoxTextFile;
+
+ /**
+ * @var ?string
+ */
+ private $testdoxXmlFile;
+
+ /**
+ * @var null|string[]
+ */
+ private $testSuffixes;
+
+ /**
+ * @var ?string
+ */
+ private $testSuite;
+
+ /**
+ * @var string[]
+ */
+ private $unrecognizedOptions;
+
+ /**
+ * @var ?string
+ */
+ private $unrecognizedOrderBy;
+
+ /**
+ * @var ?bool
+ */
+ private $useDefaultConfiguration;
+
+ /**
+ * @var ?bool
+ */
+ private $verbose;
+
+ /**
+ * @var ?bool
+ */
+ private $version;
+
+ /**
+ * @var ?string
+ */
+ private $xdebugFilterFile;
+
+ /**
+ * @param null|int|string $columns
+ */
+ public function __construct(?string $argument, ?string $atLeastVersion, ?bool $backupGlobals, ?bool $backupStaticAttributes, ?bool $beStrictAboutChangesToGlobalState, ?bool $beStrictAboutResourceUsageDuringSmallTests, ?string $bootstrap, ?bool $cacheResult, ?string $cacheResultFile, ?bool $checkVersion, ?string $colors, $columns, ?string $configuration, ?string $coverageClover, ?string $coverageCobertura, ?string $coverageCrap4J, ?string $coverageHtml, ?string $coveragePhp, ?string $coverageText, ?bool $coverageTextShowUncoveredFiles, ?bool $coverageTextShowOnlySummary, ?string $coverageXml, ?bool $pathCoverage, ?string $coverageCacheDirectory, ?bool $warmCoverageCache, ?bool $debug, ?int $defaultTimeLimit, ?bool $disableCodeCoverageIgnore, ?bool $disallowTestOutput, ?bool $disallowTodoAnnotatedTests, ?bool $enforceTimeLimit, ?array $excludeGroups, ?int $executionOrder, ?int $executionOrderDefects, ?array $extensions, ?array $unavailableExtensions, ?bool $failOnEmptyTestSuite, ?bool $failOnIncomplete, ?bool $failOnRisky, ?bool $failOnSkipped, ?bool $failOnWarning, ?string $filter, ?bool $generateConfiguration, ?bool $migrateConfiguration, ?array $groups, ?array $testsCovering, ?array $testsUsing, ?bool $help, ?string $includePath, ?array $iniSettings, ?string $junitLogfile, ?bool $listGroups, ?bool $listSuites, ?bool $listTests, ?string $listTestsXml, ?string $loader, ?bool $noCoverage, ?bool $noExtensions, ?bool $noInteraction, ?bool $noLogging, ?string $printer, ?bool $processIsolation, ?int $randomOrderSeed, ?int $repeat, ?bool $reportUselessTests, ?bool $resolveDependencies, ?bool $reverseList, ?bool $stderr, ?bool $strictCoverage, ?bool $stopOnDefect, ?bool $stopOnError, ?bool $stopOnFailure, ?bool $stopOnIncomplete, ?bool $stopOnRisky, ?bool $stopOnSkipped, ?bool $stopOnWarning, ?string $teamcityLogfile, ?array $testdoxExcludeGroups, ?array $testdoxGroups, ?string $testdoxHtmlFile, ?string $testdoxTextFile, ?string $testdoxXmlFile, ?array $testSuffixes, ?string $testSuite, array $unrecognizedOptions, ?string $unrecognizedOrderBy, ?bool $useDefaultConfiguration, ?bool $verbose, ?bool $version, ?array $coverageFilter, ?string $xdebugFilterFile)
+ {
+ $this->argument = $argument;
+ $this->atLeastVersion = $atLeastVersion;
+ $this->backupGlobals = $backupGlobals;
+ $this->backupStaticAttributes = $backupStaticAttributes;
+ $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState;
+ $this->beStrictAboutResourceUsageDuringSmallTests = $beStrictAboutResourceUsageDuringSmallTests;
+ $this->bootstrap = $bootstrap;
+ $this->cacheResult = $cacheResult;
+ $this->cacheResultFile = $cacheResultFile;
+ $this->checkVersion = $checkVersion;
+ $this->colors = $colors;
+ $this->columns = $columns;
+ $this->configuration = $configuration;
+ $this->coverageFilter = $coverageFilter;
+ $this->coverageClover = $coverageClover;
+ $this->coverageCobertura = $coverageCobertura;
+ $this->coverageCrap4J = $coverageCrap4J;
+ $this->coverageHtml = $coverageHtml;
+ $this->coveragePhp = $coveragePhp;
+ $this->coverageText = $coverageText;
+ $this->coverageTextShowUncoveredFiles = $coverageTextShowUncoveredFiles;
+ $this->coverageTextShowOnlySummary = $coverageTextShowOnlySummary;
+ $this->coverageXml = $coverageXml;
+ $this->pathCoverage = $pathCoverage;
+ $this->coverageCacheDirectory = $coverageCacheDirectory;
+ $this->warmCoverageCache = $warmCoverageCache;
+ $this->debug = $debug;
+ $this->defaultTimeLimit = $defaultTimeLimit;
+ $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore;
+ $this->disallowTestOutput = $disallowTestOutput;
+ $this->disallowTodoAnnotatedTests = $disallowTodoAnnotatedTests;
+ $this->enforceTimeLimit = $enforceTimeLimit;
+ $this->excludeGroups = $excludeGroups;
+ $this->executionOrder = $executionOrder;
+ $this->executionOrderDefects = $executionOrderDefects;
+ $this->extensions = $extensions;
+ $this->unavailableExtensions = $unavailableExtensions;
+ $this->failOnEmptyTestSuite = $failOnEmptyTestSuite;
+ $this->failOnIncomplete = $failOnIncomplete;
+ $this->failOnRisky = $failOnRisky;
+ $this->failOnSkipped = $failOnSkipped;
+ $this->failOnWarning = $failOnWarning;
+ $this->filter = $filter;
+ $this->generateConfiguration = $generateConfiguration;
+ $this->migrateConfiguration = $migrateConfiguration;
+ $this->groups = $groups;
+ $this->testsCovering = $testsCovering;
+ $this->testsUsing = $testsUsing;
+ $this->help = $help;
+ $this->includePath = $includePath;
+ $this->iniSettings = $iniSettings;
+ $this->junitLogfile = $junitLogfile;
+ $this->listGroups = $listGroups;
+ $this->listSuites = $listSuites;
+ $this->listTests = $listTests;
+ $this->listTestsXml = $listTestsXml;
+ $this->loader = $loader;
+ $this->noCoverage = $noCoverage;
+ $this->noExtensions = $noExtensions;
+ $this->noInteraction = $noInteraction;
+ $this->noLogging = $noLogging;
+ $this->printer = $printer;
+ $this->processIsolation = $processIsolation;
+ $this->randomOrderSeed = $randomOrderSeed;
+ $this->repeat = $repeat;
+ $this->reportUselessTests = $reportUselessTests;
+ $this->resolveDependencies = $resolveDependencies;
+ $this->reverseList = $reverseList;
+ $this->stderr = $stderr;
+ $this->strictCoverage = $strictCoverage;
+ $this->stopOnDefect = $stopOnDefect;
+ $this->stopOnError = $stopOnError;
+ $this->stopOnFailure = $stopOnFailure;
+ $this->stopOnIncomplete = $stopOnIncomplete;
+ $this->stopOnRisky = $stopOnRisky;
+ $this->stopOnSkipped = $stopOnSkipped;
+ $this->stopOnWarning = $stopOnWarning;
+ $this->teamcityLogfile = $teamcityLogfile;
+ $this->testdoxExcludeGroups = $testdoxExcludeGroups;
+ $this->testdoxGroups = $testdoxGroups;
+ $this->testdoxHtmlFile = $testdoxHtmlFile;
+ $this->testdoxTextFile = $testdoxTextFile;
+ $this->testdoxXmlFile = $testdoxXmlFile;
+ $this->testSuffixes = $testSuffixes;
+ $this->testSuite = $testSuite;
+ $this->unrecognizedOptions = $unrecognizedOptions;
+ $this->unrecognizedOrderBy = $unrecognizedOrderBy;
+ $this->useDefaultConfiguration = $useDefaultConfiguration;
+ $this->verbose = $verbose;
+ $this->version = $version;
+ $this->xdebugFilterFile = $xdebugFilterFile;
+ }
+
+ public function hasArgument(): bool
+ {
+ return $this->argument !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function argument(): string
+ {
+ if ($this->argument === null) {
+ throw new Exception;
+ }
+
+ return $this->argument;
+ }
+
+ public function hasAtLeastVersion(): bool
+ {
+ return $this->atLeastVersion !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function atLeastVersion(): string
+ {
+ if ($this->atLeastVersion === null) {
+ throw new Exception;
+ }
+
+ return $this->atLeastVersion;
+ }
+
+ public function hasBackupGlobals(): bool
+ {
+ return $this->backupGlobals !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function backupGlobals(): bool
+ {
+ if ($this->backupGlobals === null) {
+ throw new Exception;
+ }
+
+ return $this->backupGlobals;
+ }
+
+ public function hasBackupStaticAttributes(): bool
+ {
+ return $this->backupStaticAttributes !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function backupStaticAttributes(): bool
+ {
+ if ($this->backupStaticAttributes === null) {
+ throw new Exception;
+ }
+
+ return $this->backupStaticAttributes;
+ }
+
+ public function hasBeStrictAboutChangesToGlobalState(): bool
+ {
+ return $this->beStrictAboutChangesToGlobalState !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function beStrictAboutChangesToGlobalState(): bool
+ {
+ if ($this->beStrictAboutChangesToGlobalState === null) {
+ throw new Exception;
+ }
+
+ return $this->beStrictAboutChangesToGlobalState;
+ }
+
+ public function hasBeStrictAboutResourceUsageDuringSmallTests(): bool
+ {
+ return $this->beStrictAboutResourceUsageDuringSmallTests !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function beStrictAboutResourceUsageDuringSmallTests(): bool
+ {
+ if ($this->beStrictAboutResourceUsageDuringSmallTests === null) {
+ throw new Exception;
+ }
+
+ return $this->beStrictAboutResourceUsageDuringSmallTests;
+ }
+
+ public function hasBootstrap(): bool
+ {
+ return $this->bootstrap !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function bootstrap(): string
+ {
+ if ($this->bootstrap === null) {
+ throw new Exception;
+ }
+
+ return $this->bootstrap;
+ }
+
+ public function hasCacheResult(): bool
+ {
+ return $this->cacheResult !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function cacheResult(): bool
+ {
+ if ($this->cacheResult === null) {
+ throw new Exception;
+ }
+
+ return $this->cacheResult;
+ }
+
+ public function hasCacheResultFile(): bool
+ {
+ return $this->cacheResultFile !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function cacheResultFile(): string
+ {
+ if ($this->cacheResultFile === null) {
+ throw new Exception;
+ }
+
+ return $this->cacheResultFile;
+ }
+
+ public function hasCheckVersion(): bool
+ {
+ return $this->checkVersion !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function checkVersion(): bool
+ {
+ if ($this->checkVersion === null) {
+ throw new Exception;
+ }
+
+ return $this->checkVersion;
+ }
+
+ public function hasColors(): bool
+ {
+ return $this->colors !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function colors(): string
+ {
+ if ($this->colors === null) {
+ throw new Exception;
+ }
+
+ return $this->colors;
+ }
+
+ public function hasColumns(): bool
+ {
+ return $this->columns !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function columns()
+ {
+ if ($this->columns === null) {
+ throw new Exception;
+ }
+
+ return $this->columns;
+ }
+
+ public function hasConfiguration(): bool
+ {
+ return $this->configuration !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function configuration(): string
+ {
+ if ($this->configuration === null) {
+ throw new Exception;
+ }
+
+ return $this->configuration;
+ }
+
+ public function hasCoverageFilter(): bool
+ {
+ return $this->coverageFilter !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coverageFilter(): array
+ {
+ if ($this->coverageFilter === null) {
+ throw new Exception;
+ }
+
+ return $this->coverageFilter;
+ }
+
+ public function hasCoverageClover(): bool
+ {
+ return $this->coverageClover !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coverageClover(): string
+ {
+ if ($this->coverageClover === null) {
+ throw new Exception;
+ }
+
+ return $this->coverageClover;
+ }
+
+ public function hasCoverageCobertura(): bool
+ {
+ return $this->coverageCobertura !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coverageCobertura(): string
+ {
+ if ($this->coverageCobertura === null) {
+ throw new Exception;
+ }
+
+ return $this->coverageCobertura;
+ }
+
+ public function hasCoverageCrap4J(): bool
+ {
+ return $this->coverageCrap4J !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coverageCrap4J(): string
+ {
+ if ($this->coverageCrap4J === null) {
+ throw new Exception;
+ }
+
+ return $this->coverageCrap4J;
+ }
+
+ public function hasCoverageHtml(): bool
+ {
+ return $this->coverageHtml !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coverageHtml(): string
+ {
+ if ($this->coverageHtml === null) {
+ throw new Exception;
+ }
+
+ return $this->coverageHtml;
+ }
+
+ public function hasCoveragePhp(): bool
+ {
+ return $this->coveragePhp !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coveragePhp(): string
+ {
+ if ($this->coveragePhp === null) {
+ throw new Exception;
+ }
+
+ return $this->coveragePhp;
+ }
+
+ public function hasCoverageText(): bool
+ {
+ return $this->coverageText !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coverageText(): string
+ {
+ if ($this->coverageText === null) {
+ throw new Exception;
+ }
+
+ return $this->coverageText;
+ }
+
+ public function hasCoverageTextShowUncoveredFiles(): bool
+ {
+ return $this->coverageTextShowUncoveredFiles !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coverageTextShowUncoveredFiles(): bool
+ {
+ if ($this->coverageTextShowUncoveredFiles === null) {
+ throw new Exception;
+ }
+
+ return $this->coverageTextShowUncoveredFiles;
+ }
+
+ public function hasCoverageTextShowOnlySummary(): bool
+ {
+ return $this->coverageTextShowOnlySummary !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coverageTextShowOnlySummary(): bool
+ {
+ if ($this->coverageTextShowOnlySummary === null) {
+ throw new Exception;
+ }
+
+ return $this->coverageTextShowOnlySummary;
+ }
+
+ public function hasCoverageXml(): bool
+ {
+ return $this->coverageXml !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coverageXml(): string
+ {
+ if ($this->coverageXml === null) {
+ throw new Exception;
+ }
+
+ return $this->coverageXml;
+ }
+
+ public function hasPathCoverage(): bool
+ {
+ return $this->pathCoverage !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function pathCoverage(): bool
+ {
+ if ($this->pathCoverage === null) {
+ throw new Exception;
+ }
+
+ return $this->pathCoverage;
+ }
+
+ public function hasCoverageCacheDirectory(): bool
+ {
+ return $this->coverageCacheDirectory !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function coverageCacheDirectory(): string
+ {
+ if ($this->coverageCacheDirectory === null) {
+ throw new Exception;
+ }
+
+ return $this->coverageCacheDirectory;
+ }
+
+ public function hasWarmCoverageCache(): bool
+ {
+ return $this->warmCoverageCache !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function warmCoverageCache(): bool
+ {
+ if ($this->warmCoverageCache === null) {
+ throw new Exception;
+ }
+
+ return $this->warmCoverageCache;
+ }
+
+ public function hasDebug(): bool
+ {
+ return $this->debug !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function debug(): bool
+ {
+ if ($this->debug === null) {
+ throw new Exception;
+ }
+
+ return $this->debug;
+ }
+
+ public function hasDefaultTimeLimit(): bool
+ {
+ return $this->defaultTimeLimit !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function defaultTimeLimit(): int
+ {
+ if ($this->defaultTimeLimit === null) {
+ throw new Exception;
+ }
+
+ return $this->defaultTimeLimit;
+ }
+
+ public function hasDisableCodeCoverageIgnore(): bool
+ {
+ return $this->disableCodeCoverageIgnore !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function disableCodeCoverageIgnore(): bool
+ {
+ if ($this->disableCodeCoverageIgnore === null) {
+ throw new Exception;
+ }
+
+ return $this->disableCodeCoverageIgnore;
+ }
+
+ public function hasDisallowTestOutput(): bool
+ {
+ return $this->disallowTestOutput !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function disallowTestOutput(): bool
+ {
+ if ($this->disallowTestOutput === null) {
+ throw new Exception;
+ }
+
+ return $this->disallowTestOutput;
+ }
+
+ public function hasDisallowTodoAnnotatedTests(): bool
+ {
+ return $this->disallowTodoAnnotatedTests !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function disallowTodoAnnotatedTests(): bool
+ {
+ if ($this->disallowTodoAnnotatedTests === null) {
+ throw new Exception;
+ }
+
+ return $this->disallowTodoAnnotatedTests;
+ }
+
+ public function hasEnforceTimeLimit(): bool
+ {
+ return $this->enforceTimeLimit !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function enforceTimeLimit(): bool
+ {
+ if ($this->enforceTimeLimit === null) {
+ throw new Exception;
+ }
+
+ return $this->enforceTimeLimit;
+ }
+
+ public function hasExcludeGroups(): bool
+ {
+ return $this->excludeGroups !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function excludeGroups(): array
+ {
+ if ($this->excludeGroups === null) {
+ throw new Exception;
+ }
+
+ return $this->excludeGroups;
+ }
+
+ public function hasExecutionOrder(): bool
+ {
+ return $this->executionOrder !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function executionOrder(): int
+ {
+ if ($this->executionOrder === null) {
+ throw new Exception;
+ }
+
+ return $this->executionOrder;
+ }
+
+ public function hasExecutionOrderDefects(): bool
+ {
+ return $this->executionOrderDefects !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function executionOrderDefects(): int
+ {
+ if ($this->executionOrderDefects === null) {
+ throw new Exception;
+ }
+
+ return $this->executionOrderDefects;
+ }
+
+ public function hasFailOnEmptyTestSuite(): bool
+ {
+ return $this->failOnEmptyTestSuite !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function failOnEmptyTestSuite(): bool
+ {
+ if ($this->failOnEmptyTestSuite === null) {
+ throw new Exception;
+ }
+
+ return $this->failOnEmptyTestSuite;
+ }
+
+ public function hasFailOnIncomplete(): bool
+ {
+ return $this->failOnIncomplete !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function failOnIncomplete(): bool
+ {
+ if ($this->failOnIncomplete === null) {
+ throw new Exception;
+ }
+
+ return $this->failOnIncomplete;
+ }
+
+ public function hasFailOnRisky(): bool
+ {
+ return $this->failOnRisky !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function failOnRisky(): bool
+ {
+ if ($this->failOnRisky === null) {
+ throw new Exception;
+ }
+
+ return $this->failOnRisky;
+ }
+
+ public function hasFailOnSkipped(): bool
+ {
+ return $this->failOnSkipped !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function failOnSkipped(): bool
+ {
+ if ($this->failOnSkipped === null) {
+ throw new Exception;
+ }
+
+ return $this->failOnSkipped;
+ }
+
+ public function hasFailOnWarning(): bool
+ {
+ return $this->failOnWarning !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function failOnWarning(): bool
+ {
+ if ($this->failOnWarning === null) {
+ throw new Exception;
+ }
+
+ return $this->failOnWarning;
+ }
+
+ public function hasFilter(): bool
+ {
+ return $this->filter !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function filter(): string
+ {
+ if ($this->filter === null) {
+ throw new Exception;
+ }
+
+ return $this->filter;
+ }
+
+ public function hasGenerateConfiguration(): bool
+ {
+ return $this->generateConfiguration !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function generateConfiguration(): bool
+ {
+ if ($this->generateConfiguration === null) {
+ throw new Exception;
+ }
+
+ return $this->generateConfiguration;
+ }
+
+ public function hasMigrateConfiguration(): bool
+ {
+ return $this->migrateConfiguration !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function migrateConfiguration(): bool
+ {
+ if ($this->migrateConfiguration === null) {
+ throw new Exception;
+ }
+
+ return $this->migrateConfiguration;
+ }
+
+ public function hasGroups(): bool
+ {
+ return $this->groups !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function groups(): array
+ {
+ if ($this->groups === null) {
+ throw new Exception;
+ }
+
+ return $this->groups;
+ }
+
+ public function hasTestsCovering(): bool
+ {
+ return $this->testsCovering !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function testsCovering(): array
+ {
+ if ($this->testsCovering === null) {
+ throw new Exception;
+ }
+
+ return $this->testsCovering;
+ }
+
+ public function hasTestsUsing(): bool
+ {
+ return $this->testsUsing !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function testsUsing(): array
+ {
+ if ($this->testsUsing === null) {
+ throw new Exception;
+ }
+
+ return $this->testsUsing;
+ }
+
+ public function hasHelp(): bool
+ {
+ return $this->help !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function help(): bool
+ {
+ if ($this->help === null) {
+ throw new Exception;
+ }
+
+ return $this->help;
+ }
+
+ public function hasIncludePath(): bool
+ {
+ return $this->includePath !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function includePath(): string
+ {
+ if ($this->includePath === null) {
+ throw new Exception;
+ }
+
+ return $this->includePath;
+ }
+
+ public function hasIniSettings(): bool
+ {
+ return $this->iniSettings !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function iniSettings(): array
+ {
+ if ($this->iniSettings === null) {
+ throw new Exception;
+ }
+
+ return $this->iniSettings;
+ }
+
+ public function hasJunitLogfile(): bool
+ {
+ return $this->junitLogfile !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function junitLogfile(): string
+ {
+ if ($this->junitLogfile === null) {
+ throw new Exception;
+ }
+
+ return $this->junitLogfile;
+ }
+
+ public function hasListGroups(): bool
+ {
+ return $this->listGroups !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function listGroups(): bool
+ {
+ if ($this->listGroups === null) {
+ throw new Exception;
+ }
+
+ return $this->listGroups;
+ }
+
+ public function hasListSuites(): bool
+ {
+ return $this->listSuites !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function listSuites(): bool
+ {
+ if ($this->listSuites === null) {
+ throw new Exception;
+ }
+
+ return $this->listSuites;
+ }
+
+ public function hasListTests(): bool
+ {
+ return $this->listTests !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function listTests(): bool
+ {
+ if ($this->listTests === null) {
+ throw new Exception;
+ }
+
+ return $this->listTests;
+ }
+
+ public function hasListTestsXml(): bool
+ {
+ return $this->listTestsXml !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function listTestsXml(): string
+ {
+ if ($this->listTestsXml === null) {
+ throw new Exception;
+ }
+
+ return $this->listTestsXml;
+ }
+
+ public function hasLoader(): bool
+ {
+ return $this->loader !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function loader(): string
+ {
+ if ($this->loader === null) {
+ throw new Exception;
+ }
+
+ return $this->loader;
+ }
+
+ public function hasNoCoverage(): bool
+ {
+ return $this->noCoverage !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function noCoverage(): bool
+ {
+ if ($this->noCoverage === null) {
+ throw new Exception;
+ }
+
+ return $this->noCoverage;
+ }
+
+ public function hasNoExtensions(): bool
+ {
+ return $this->noExtensions !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function noExtensions(): bool
+ {
+ if ($this->noExtensions === null) {
+ throw new Exception;
+ }
+
+ return $this->noExtensions;
+ }
+
+ public function hasExtensions(): bool
+ {
+ return $this->extensions !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function extensions(): array
+ {
+ if ($this->extensions === null) {
+ throw new Exception;
+ }
+
+ return $this->extensions;
+ }
+
+ public function hasUnavailableExtensions(): bool
+ {
+ return $this->unavailableExtensions !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function unavailableExtensions(): array
+ {
+ if ($this->unavailableExtensions === null) {
+ throw new Exception;
+ }
+
+ return $this->unavailableExtensions;
+ }
+
+ public function hasNoInteraction(): bool
+ {
+ return $this->noInteraction !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function noInteraction(): bool
+ {
+ if ($this->noInteraction === null) {
+ throw new Exception;
+ }
+
+ return $this->noInteraction;
+ }
+
+ public function hasNoLogging(): bool
+ {
+ return $this->noLogging !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function noLogging(): bool
+ {
+ if ($this->noLogging === null) {
+ throw new Exception;
+ }
+
+ return $this->noLogging;
+ }
+
+ public function hasPrinter(): bool
+ {
+ return $this->printer !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function printer(): string
+ {
+ if ($this->printer === null) {
+ throw new Exception;
+ }
+
+ return $this->printer;
+ }
+
+ public function hasProcessIsolation(): bool
+ {
+ return $this->processIsolation !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function processIsolation(): bool
+ {
+ if ($this->processIsolation === null) {
+ throw new Exception;
+ }
+
+ return $this->processIsolation;
+ }
+
+ public function hasRandomOrderSeed(): bool
+ {
+ return $this->randomOrderSeed !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function randomOrderSeed(): int
+ {
+ if ($this->randomOrderSeed === null) {
+ throw new Exception;
+ }
+
+ return $this->randomOrderSeed;
+ }
+
+ public function hasRepeat(): bool
+ {
+ return $this->repeat !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function repeat(): int
+ {
+ if ($this->repeat === null) {
+ throw new Exception;
+ }
+
+ return $this->repeat;
+ }
+
+ public function hasReportUselessTests(): bool
+ {
+ return $this->reportUselessTests !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function reportUselessTests(): bool
+ {
+ if ($this->reportUselessTests === null) {
+ throw new Exception;
+ }
+
+ return $this->reportUselessTests;
+ }
+
+ public function hasResolveDependencies(): bool
+ {
+ return $this->resolveDependencies !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function resolveDependencies(): bool
+ {
+ if ($this->resolveDependencies === null) {
+ throw new Exception;
+ }
+
+ return $this->resolveDependencies;
+ }
+
+ public function hasReverseList(): bool
+ {
+ return $this->reverseList !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function reverseList(): bool
+ {
+ if ($this->reverseList === null) {
+ throw new Exception;
+ }
+
+ return $this->reverseList;
+ }
+
+ public function hasStderr(): bool
+ {
+ return $this->stderr !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function stderr(): bool
+ {
+ if ($this->stderr === null) {
+ throw new Exception;
+ }
+
+ return $this->stderr;
+ }
+
+ public function hasStrictCoverage(): bool
+ {
+ return $this->strictCoverage !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function strictCoverage(): bool
+ {
+ if ($this->strictCoverage === null) {
+ throw new Exception;
+ }
+
+ return $this->strictCoverage;
+ }
+
+ public function hasStopOnDefect(): bool
+ {
+ return $this->stopOnDefect !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function stopOnDefect(): bool
+ {
+ if ($this->stopOnDefect === null) {
+ throw new Exception;
+ }
+
+ return $this->stopOnDefect;
+ }
+
+ public function hasStopOnError(): bool
+ {
+ return $this->stopOnError !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function stopOnError(): bool
+ {
+ if ($this->stopOnError === null) {
+ throw new Exception;
+ }
+
+ return $this->stopOnError;
+ }
+
+ public function hasStopOnFailure(): bool
+ {
+ return $this->stopOnFailure !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function stopOnFailure(): bool
+ {
+ if ($this->stopOnFailure === null) {
+ throw new Exception;
+ }
+
+ return $this->stopOnFailure;
+ }
+
+ public function hasStopOnIncomplete(): bool
+ {
+ return $this->stopOnIncomplete !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function stopOnIncomplete(): bool
+ {
+ if ($this->stopOnIncomplete === null) {
+ throw new Exception;
+ }
+
+ return $this->stopOnIncomplete;
+ }
+
+ public function hasStopOnRisky(): bool
+ {
+ return $this->stopOnRisky !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function stopOnRisky(): bool
+ {
+ if ($this->stopOnRisky === null) {
+ throw new Exception;
+ }
+
+ return $this->stopOnRisky;
+ }
+
+ public function hasStopOnSkipped(): bool
+ {
+ return $this->stopOnSkipped !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function stopOnSkipped(): bool
+ {
+ if ($this->stopOnSkipped === null) {
+ throw new Exception;
+ }
+
+ return $this->stopOnSkipped;
+ }
+
+ public function hasStopOnWarning(): bool
+ {
+ return $this->stopOnWarning !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function stopOnWarning(): bool
+ {
+ if ($this->stopOnWarning === null) {
+ throw new Exception;
+ }
+
+ return $this->stopOnWarning;
+ }
+
+ public function hasTeamcityLogfile(): bool
+ {
+ return $this->teamcityLogfile !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function teamcityLogfile(): string
+ {
+ if ($this->teamcityLogfile === null) {
+ throw new Exception;
+ }
+
+ return $this->teamcityLogfile;
+ }
+
+ public function hasTestdoxExcludeGroups(): bool
+ {
+ return $this->testdoxExcludeGroups !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function testdoxExcludeGroups(): array
+ {
+ if ($this->testdoxExcludeGroups === null) {
+ throw new Exception;
+ }
+
+ return $this->testdoxExcludeGroups;
+ }
+
+ public function hasTestdoxGroups(): bool
+ {
+ return $this->testdoxGroups !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function testdoxGroups(): array
+ {
+ if ($this->testdoxGroups === null) {
+ throw new Exception;
+ }
+
+ return $this->testdoxGroups;
+ }
+
+ public function hasTestdoxHtmlFile(): bool
+ {
+ return $this->testdoxHtmlFile !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function testdoxHtmlFile(): string
+ {
+ if ($this->testdoxHtmlFile === null) {
+ throw new Exception;
+ }
+
+ return $this->testdoxHtmlFile;
+ }
+
+ public function hasTestdoxTextFile(): bool
+ {
+ return $this->testdoxTextFile !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function testdoxTextFile(): string
+ {
+ if ($this->testdoxTextFile === null) {
+ throw new Exception;
+ }
+
+ return $this->testdoxTextFile;
+ }
+
+ public function hasTestdoxXmlFile(): bool
+ {
+ return $this->testdoxXmlFile !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function testdoxXmlFile(): string
+ {
+ if ($this->testdoxXmlFile === null) {
+ throw new Exception;
+ }
+
+ return $this->testdoxXmlFile;
+ }
+
+ public function hasTestSuffixes(): bool
+ {
+ return $this->testSuffixes !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function testSuffixes(): array
+ {
+ if ($this->testSuffixes === null) {
+ throw new Exception;
+ }
+
+ return $this->testSuffixes;
+ }
+
+ public function hasTestSuite(): bool
+ {
+ return $this->testSuite !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function testSuite(): string
+ {
+ if ($this->testSuite === null) {
+ throw new Exception;
+ }
+
+ return $this->testSuite;
+ }
+
+ public function unrecognizedOptions(): array
+ {
+ return $this->unrecognizedOptions;
+ }
+
+ public function hasUnrecognizedOrderBy(): bool
+ {
+ return $this->unrecognizedOrderBy !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function unrecognizedOrderBy(): string
+ {
+ if ($this->unrecognizedOrderBy === null) {
+ throw new Exception;
+ }
+
+ return $this->unrecognizedOrderBy;
+ }
+
+ public function hasUseDefaultConfiguration(): bool
+ {
+ return $this->useDefaultConfiguration !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function useDefaultConfiguration(): bool
+ {
+ if ($this->useDefaultConfiguration === null) {
+ throw new Exception;
+ }
+
+ return $this->useDefaultConfiguration;
+ }
+
+ public function hasVerbose(): bool
+ {
+ return $this->verbose !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function verbose(): bool
+ {
+ if ($this->verbose === null) {
+ throw new Exception;
+ }
+
+ return $this->verbose;
+ }
+
+ public function hasVersion(): bool
+ {
+ return $this->version !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function version(): bool
+ {
+ if ($this->version === null) {
+ throw new Exception;
+ }
+
+ return $this->version;
+ }
+
+ public function hasXdebugFilterFile(): bool
+ {
+ return $this->xdebugFilterFile !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function xdebugFilterFile(): string
+ {
+ if ($this->xdebugFilterFile === null) {
+ throw new Exception;
+ }
+
+ return $this->xdebugFilterFile;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/CliArguments/Exception.php b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Exception.php
new file mode 100644
index 000000000..dd5536eaa
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Exception.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\CliArguments;
+
+use RuntimeException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Exception extends RuntimeException implements \PHPUnit\Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php
new file mode 100644
index 000000000..9ceb8ab47
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/CliArguments/Mapper.php
@@ -0,0 +1,365 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\CliArguments;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Mapper
+{
+ /**
+ * @throws Exception
+ */
+ public function mapToLegacyArray(Configuration $arguments): array
+ {
+ $result = [
+ 'extensions' => [],
+ 'listGroups' => false,
+ 'listSuites' => false,
+ 'listTests' => false,
+ 'listTestsXml' => false,
+ 'loader' => null,
+ 'useDefaultConfiguration' => true,
+ 'loadedExtensions' => [],
+ 'unavailableExtensions' => [],
+ 'notLoadedExtensions' => [],
+ ];
+
+ if ($arguments->hasColors()) {
+ $result['colors'] = $arguments->colors();
+ }
+
+ if ($arguments->hasBootstrap()) {
+ $result['bootstrap'] = $arguments->bootstrap();
+ }
+
+ if ($arguments->hasCacheResult()) {
+ $result['cacheResult'] = $arguments->cacheResult();
+ }
+
+ if ($arguments->hasCacheResultFile()) {
+ $result['cacheResultFile'] = $arguments->cacheResultFile();
+ }
+
+ if ($arguments->hasColumns()) {
+ $result['columns'] = $arguments->columns();
+ }
+
+ if ($arguments->hasConfiguration()) {
+ $result['configuration'] = $arguments->configuration();
+ }
+
+ if ($arguments->hasCoverageCacheDirectory()) {
+ $result['coverageCacheDirectory'] = $arguments->coverageCacheDirectory();
+ }
+
+ if ($arguments->hasWarmCoverageCache()) {
+ $result['warmCoverageCache'] = $arguments->warmCoverageCache();
+ }
+
+ if ($arguments->hasCoverageClover()) {
+ $result['coverageClover'] = $arguments->coverageClover();
+ }
+
+ if ($arguments->hasCoverageCobertura()) {
+ $result['coverageCobertura'] = $arguments->coverageCobertura();
+ }
+
+ if ($arguments->hasCoverageCrap4J()) {
+ $result['coverageCrap4J'] = $arguments->coverageCrap4J();
+ }
+
+ if ($arguments->hasCoverageHtml()) {
+ $result['coverageHtml'] = $arguments->coverageHtml();
+ }
+
+ if ($arguments->hasCoveragePhp()) {
+ $result['coveragePHP'] = $arguments->coveragePhp();
+ }
+
+ if ($arguments->hasCoverageText()) {
+ $result['coverageText'] = $arguments->coverageText();
+ }
+
+ if ($arguments->hasCoverageTextShowUncoveredFiles()) {
+ $result['coverageTextShowUncoveredFiles'] = $arguments->hasCoverageTextShowUncoveredFiles();
+ }
+
+ if ($arguments->hasCoverageTextShowOnlySummary()) {
+ $result['coverageTextShowOnlySummary'] = $arguments->coverageTextShowOnlySummary();
+ }
+
+ if ($arguments->hasCoverageXml()) {
+ $result['coverageXml'] = $arguments->coverageXml();
+ }
+
+ if ($arguments->hasPathCoverage()) {
+ $result['pathCoverage'] = $arguments->pathCoverage();
+ }
+
+ if ($arguments->hasDebug()) {
+ $result['debug'] = $arguments->debug();
+ }
+
+ if ($arguments->hasHelp()) {
+ $result['help'] = $arguments->help();
+ }
+
+ if ($arguments->hasFilter()) {
+ $result['filter'] = $arguments->filter();
+ }
+
+ if ($arguments->hasTestSuite()) {
+ $result['testsuite'] = $arguments->testSuite();
+ }
+
+ if ($arguments->hasGroups()) {
+ $result['groups'] = $arguments->groups();
+ }
+
+ if ($arguments->hasExcludeGroups()) {
+ $result['excludeGroups'] = $arguments->excludeGroups();
+ }
+
+ if ($arguments->hasTestsCovering()) {
+ $result['testsCovering'] = $arguments->testsCovering();
+ }
+
+ if ($arguments->hasTestsUsing()) {
+ $result['testsUsing'] = $arguments->testsUsing();
+ }
+
+ if ($arguments->hasTestSuffixes()) {
+ $result['testSuffixes'] = $arguments->testSuffixes();
+ }
+
+ if ($arguments->hasIncludePath()) {
+ $result['includePath'] = $arguments->includePath();
+ }
+
+ if ($arguments->hasListGroups()) {
+ $result['listGroups'] = $arguments->listGroups();
+ }
+
+ if ($arguments->hasListSuites()) {
+ $result['listSuites'] = $arguments->listSuites();
+ }
+
+ if ($arguments->hasListTests()) {
+ $result['listTests'] = $arguments->listTests();
+ }
+
+ if ($arguments->hasListTestsXml()) {
+ $result['listTestsXml'] = $arguments->listTestsXml();
+ }
+
+ if ($arguments->hasPrinter()) {
+ $result['printer'] = $arguments->printer();
+ }
+
+ if ($arguments->hasLoader()) {
+ $result['loader'] = $arguments->loader();
+ }
+
+ if ($arguments->hasJunitLogfile()) {
+ $result['junitLogfile'] = $arguments->junitLogfile();
+ }
+
+ if ($arguments->hasTeamcityLogfile()) {
+ $result['teamcityLogfile'] = $arguments->teamcityLogfile();
+ }
+
+ if ($arguments->hasExecutionOrder()) {
+ $result['executionOrder'] = $arguments->executionOrder();
+ }
+
+ if ($arguments->hasExecutionOrderDefects()) {
+ $result['executionOrderDefects'] = $arguments->executionOrderDefects();
+ }
+
+ if ($arguments->hasExtensions()) {
+ $result['extensions'] = $arguments->extensions();
+ }
+
+ if ($arguments->hasUnavailableExtensions()) {
+ $result['unavailableExtensions'] = $arguments->unavailableExtensions();
+ }
+
+ if ($arguments->hasResolveDependencies()) {
+ $result['resolveDependencies'] = $arguments->resolveDependencies();
+ }
+
+ if ($arguments->hasProcessIsolation()) {
+ $result['processIsolation'] = $arguments->processIsolation();
+ }
+
+ if ($arguments->hasRepeat()) {
+ $result['repeat'] = $arguments->repeat();
+ }
+
+ if ($arguments->hasStderr()) {
+ $result['stderr'] = $arguments->stderr();
+ }
+
+ if ($arguments->hasStopOnDefect()) {
+ $result['stopOnDefect'] = $arguments->stopOnDefect();
+ }
+
+ if ($arguments->hasStopOnError()) {
+ $result['stopOnError'] = $arguments->stopOnError();
+ }
+
+ if ($arguments->hasStopOnFailure()) {
+ $result['stopOnFailure'] = $arguments->stopOnFailure();
+ }
+
+ if ($arguments->hasStopOnWarning()) {
+ $result['stopOnWarning'] = $arguments->stopOnWarning();
+ }
+
+ if ($arguments->hasStopOnIncomplete()) {
+ $result['stopOnIncomplete'] = $arguments->stopOnIncomplete();
+ }
+
+ if ($arguments->hasStopOnRisky()) {
+ $result['stopOnRisky'] = $arguments->stopOnRisky();
+ }
+
+ if ($arguments->hasStopOnSkipped()) {
+ $result['stopOnSkipped'] = $arguments->stopOnSkipped();
+ }
+
+ if ($arguments->hasFailOnEmptyTestSuite()) {
+ $result['failOnEmptyTestSuite'] = $arguments->failOnEmptyTestSuite();
+ }
+
+ if ($arguments->hasFailOnIncomplete()) {
+ $result['failOnIncomplete'] = $arguments->failOnIncomplete();
+ }
+
+ if ($arguments->hasFailOnRisky()) {
+ $result['failOnRisky'] = $arguments->failOnRisky();
+ }
+
+ if ($arguments->hasFailOnSkipped()) {
+ $result['failOnSkipped'] = $arguments->failOnSkipped();
+ }
+
+ if ($arguments->hasFailOnWarning()) {
+ $result['failOnWarning'] = $arguments->failOnWarning();
+ }
+
+ if ($arguments->hasTestdoxGroups()) {
+ $result['testdoxGroups'] = $arguments->testdoxGroups();
+ }
+
+ if ($arguments->hasTestdoxExcludeGroups()) {
+ $result['testdoxExcludeGroups'] = $arguments->testdoxExcludeGroups();
+ }
+
+ if ($arguments->hasTestdoxHtmlFile()) {
+ $result['testdoxHTMLFile'] = $arguments->testdoxHtmlFile();
+ }
+
+ if ($arguments->hasTestdoxTextFile()) {
+ $result['testdoxTextFile'] = $arguments->testdoxTextFile();
+ }
+
+ if ($arguments->hasTestdoxXmlFile()) {
+ $result['testdoxXMLFile'] = $arguments->testdoxXmlFile();
+ }
+
+ if ($arguments->hasUseDefaultConfiguration()) {
+ $result['useDefaultConfiguration'] = $arguments->useDefaultConfiguration();
+ }
+
+ if ($arguments->hasNoExtensions()) {
+ $result['noExtensions'] = $arguments->noExtensions();
+ }
+
+ if ($arguments->hasNoCoverage()) {
+ $result['noCoverage'] = $arguments->noCoverage();
+ }
+
+ if ($arguments->hasNoLogging()) {
+ $result['noLogging'] = $arguments->noLogging();
+ }
+
+ if ($arguments->hasNoInteraction()) {
+ $result['noInteraction'] = $arguments->noInteraction();
+ }
+
+ if ($arguments->hasBackupGlobals()) {
+ $result['backupGlobals'] = $arguments->backupGlobals();
+ }
+
+ if ($arguments->hasBackupStaticAttributes()) {
+ $result['backupStaticAttributes'] = $arguments->backupStaticAttributes();
+ }
+
+ if ($arguments->hasVerbose()) {
+ $result['verbose'] = $arguments->verbose();
+ }
+
+ if ($arguments->hasReportUselessTests()) {
+ $result['reportUselessTests'] = $arguments->reportUselessTests();
+ }
+
+ if ($arguments->hasStrictCoverage()) {
+ $result['strictCoverage'] = $arguments->strictCoverage();
+ }
+
+ if ($arguments->hasDisableCodeCoverageIgnore()) {
+ $result['disableCodeCoverageIgnore'] = $arguments->disableCodeCoverageIgnore();
+ }
+
+ if ($arguments->hasBeStrictAboutChangesToGlobalState()) {
+ $result['beStrictAboutChangesToGlobalState'] = $arguments->beStrictAboutChangesToGlobalState();
+ }
+
+ if ($arguments->hasDisallowTestOutput()) {
+ $result['disallowTestOutput'] = $arguments->disallowTestOutput();
+ }
+
+ if ($arguments->hasBeStrictAboutResourceUsageDuringSmallTests()) {
+ $result['beStrictAboutResourceUsageDuringSmallTests'] = $arguments->beStrictAboutResourceUsageDuringSmallTests();
+ }
+
+ if ($arguments->hasDefaultTimeLimit()) {
+ $result['defaultTimeLimit'] = $arguments->defaultTimeLimit();
+ }
+
+ if ($arguments->hasEnforceTimeLimit()) {
+ $result['enforceTimeLimit'] = $arguments->enforceTimeLimit();
+ }
+
+ if ($arguments->hasDisallowTodoAnnotatedTests()) {
+ $result['disallowTodoAnnotatedTests'] = $arguments->disallowTodoAnnotatedTests();
+ }
+
+ if ($arguments->hasReverseList()) {
+ $result['reverseList'] = $arguments->reverseList();
+ }
+
+ if ($arguments->hasCoverageFilter()) {
+ $result['coverageFilter'] = $arguments->coverageFilter();
+ }
+
+ if ($arguments->hasRandomOrderSeed()) {
+ $result['randomOrderSeed'] = $arguments->randomOrderSeed();
+ }
+
+ if ($arguments->hasXdebugFilterFile()) {
+ $result['xdebugFilterFile'] = $arguments->xdebugFilterFile();
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/Command.php b/vendor/phpunit/phpunit/src/TextUI/Command.php
new file mode 100644
index 000000000..e5dd7a01d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/Command.php
@@ -0,0 +1,903 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+use const PATH_SEPARATOR;
+use const PHP_EOL;
+use const STDIN;
+use function array_keys;
+use function assert;
+use function class_exists;
+use function copy;
+use function extension_loaded;
+use function fgets;
+use function file_get_contents;
+use function file_put_contents;
+use function get_class;
+use function getcwd;
+use function ini_get;
+use function ini_set;
+use function is_callable;
+use function is_dir;
+use function is_file;
+use function is_string;
+use function printf;
+use function realpath;
+use function sort;
+use function sprintf;
+use function stream_resolve_include_path;
+use function strpos;
+use function trim;
+use function version_compare;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Runner\Extension\PharLoader;
+use PHPUnit\Runner\StandardTestSuiteLoader;
+use PHPUnit\Runner\TestSuiteLoader;
+use PHPUnit\Runner\Version;
+use PHPUnit\TextUI\CliArguments\Builder;
+use PHPUnit\TextUI\CliArguments\Configuration;
+use PHPUnit\TextUI\CliArguments\Exception as ArgumentsException;
+use PHPUnit\TextUI\CliArguments\Mapper;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\FilterMapper;
+use PHPUnit\TextUI\XmlConfiguration\Generator;
+use PHPUnit\TextUI\XmlConfiguration\Loader;
+use PHPUnit\TextUI\XmlConfiguration\Migrator;
+use PHPUnit\TextUI\XmlConfiguration\PhpHandler;
+use PHPUnit\Util\FileLoader;
+use PHPUnit\Util\Filesystem;
+use PHPUnit\Util\Printer;
+use PHPUnit\Util\TextTestListRenderer;
+use PHPUnit\Util\Xml\SchemaDetector;
+use PHPUnit\Util\XmlTestListRenderer;
+use ReflectionClass;
+use SebastianBergmann\CodeCoverage\Filter;
+use SebastianBergmann\CodeCoverage\StaticAnalysis\CacheWarmer;
+use SebastianBergmann\Timer\Timer;
+use Throwable;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+class Command
+{
+ /**
+ * @var array<string,mixed>
+ */
+ protected $arguments = [];
+
+ /**
+ * @var array<string,mixed>
+ */
+ protected $longOptions = [];
+
+ /**
+ * @var bool
+ */
+ private $versionStringPrinted = false;
+
+ /**
+ * @psalm-var list<string>
+ */
+ private $warnings = [];
+
+ /**
+ * @throws Exception
+ */
+ public static function main(bool $exit = true): int
+ {
+ try {
+ return (new static)->run($_SERVER['argv'], $exit);
+ } catch (Throwable $t) {
+ throw new RuntimeException(
+ $t->getMessage(),
+ (int) $t->getCode(),
+ $t
+ );
+ }
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function run(array $argv, bool $exit = true): int
+ {
+ $this->handleArguments($argv);
+
+ $runner = $this->createRunner();
+
+ if ($this->arguments['test'] instanceof TestSuite) {
+ $suite = $this->arguments['test'];
+ } else {
+ $suite = $runner->getTest(
+ $this->arguments['test'],
+ $this->arguments['testSuffixes']
+ );
+ }
+
+ if ($this->arguments['listGroups']) {
+ return $this->handleListGroups($suite, $exit);
+ }
+
+ if ($this->arguments['listSuites']) {
+ return $this->handleListSuites($exit);
+ }
+
+ if ($this->arguments['listTests']) {
+ return $this->handleListTests($suite, $exit);
+ }
+
+ if ($this->arguments['listTestsXml']) {
+ return $this->handleListTestsXml($suite, $this->arguments['listTestsXml'], $exit);
+ }
+
+ unset($this->arguments['test'], $this->arguments['testFile']);
+
+ try {
+ $result = $runner->run($suite, $this->arguments, $this->warnings, $exit);
+ } catch (Throwable $t) {
+ print $t->getMessage() . PHP_EOL;
+ }
+
+ $return = TestRunner::FAILURE_EXIT;
+
+ if (isset($result) && $result->wasSuccessful()) {
+ $return = TestRunner::SUCCESS_EXIT;
+ } elseif (!isset($result) || $result->errorCount() > 0) {
+ $return = TestRunner::EXCEPTION_EXIT;
+ }
+
+ if ($exit) {
+ exit($return);
+ }
+
+ return $return;
+ }
+
+ /**
+ * Create a TestRunner, override in subclasses.
+ */
+ protected function createRunner(): TestRunner
+ {
+ return new TestRunner($this->arguments['loader']);
+ }
+
+ /**
+ * Handles the command-line arguments.
+ *
+ * A child class of PHPUnit\TextUI\Command can hook into the argument
+ * parsing by adding the switch(es) to the $longOptions array and point to a
+ * callback method that handles the switch(es) in the child class like this
+ *
+ * <code>
+ * <?php
+ * class MyCommand extends PHPUnit\TextUI\Command
+ * {
+ * public function __construct()
+ * {
+ * // my-switch won't accept a value, it's an on/off
+ * $this->longOptions['my-switch'] = 'myHandler';
+ * // my-secondswitch will accept a value - note the equals sign
+ * $this->longOptions['my-secondswitch='] = 'myOtherHandler';
+ * }
+ *
+ * // --my-switch -> myHandler()
+ * protected function myHandler()
+ * {
+ * }
+ *
+ * // --my-secondswitch foo -> myOtherHandler('foo')
+ * protected function myOtherHandler ($value)
+ * {
+ * }
+ *
+ * // You will also need this - the static keyword in the
+ * // PHPUnit\TextUI\Command will mean that it'll be
+ * // PHPUnit\TextUI\Command that gets instantiated,
+ * // not MyCommand
+ * public static function main($exit = true)
+ * {
+ * $command = new static;
+ *
+ * return $command->run($_SERVER['argv'], $exit);
+ * }
+ *
+ * }
+ * </code>
+ *
+ * @throws Exception
+ */
+ protected function handleArguments(array $argv): void
+ {
+ try {
+ $arguments = (new Builder)->fromParameters($argv, array_keys($this->longOptions));
+ } catch (ArgumentsException $e) {
+ $this->exitWithErrorMessage($e->getMessage());
+ }
+
+ assert(isset($arguments) && $arguments instanceof Configuration);
+
+ if ($arguments->hasGenerateConfiguration() && $arguments->generateConfiguration()) {
+ $this->generateConfiguration();
+ }
+
+ if ($arguments->hasAtLeastVersion()) {
+ if (version_compare(Version::id(), $arguments->atLeastVersion(), '>=')) {
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ exit(TestRunner::FAILURE_EXIT);
+ }
+
+ if ($arguments->hasVersion() && $arguments->version()) {
+ $this->printVersionString();
+
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ if ($arguments->hasCheckVersion() && $arguments->checkVersion()) {
+ $this->handleVersionCheck();
+ }
+
+ if ($arguments->hasHelp()) {
+ $this->showHelp();
+
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ if ($arguments->hasUnrecognizedOrderBy()) {
+ $this->exitWithErrorMessage(
+ sprintf(
+ 'unrecognized --order-by option: %s',
+ $arguments->unrecognizedOrderBy()
+ )
+ );
+ }
+
+ if ($arguments->hasIniSettings()) {
+ foreach ($arguments->iniSettings() as $name => $value) {
+ ini_set($name, $value);
+ }
+ }
+
+ if ($arguments->hasIncludePath()) {
+ ini_set(
+ 'include_path',
+ $arguments->includePath() . PATH_SEPARATOR . ini_get('include_path')
+ );
+ }
+
+ $this->arguments = (new Mapper)->mapToLegacyArray($arguments);
+
+ $this->handleCustomOptions($arguments->unrecognizedOptions());
+ $this->handleCustomTestSuite();
+
+ if (!isset($this->arguments['testSuffixes'])) {
+ $this->arguments['testSuffixes'] = ['Test.php', '.phpt'];
+ }
+
+ if (!isset($this->arguments['test']) && $arguments->hasArgument()) {
+ $this->arguments['test'] = realpath($arguments->argument());
+
+ if ($this->arguments['test'] === false) {
+ $this->exitWithErrorMessage(
+ sprintf(
+ 'Cannot open file "%s".',
+ $arguments->argument()
+ )
+ );
+ }
+ }
+
+ if ($this->arguments['loader'] !== null) {
+ $this->arguments['loader'] = $this->handleLoader($this->arguments['loader']);
+ }
+
+ if (isset($this->arguments['configuration'])) {
+ if (is_dir($this->arguments['configuration'])) {
+ $candidate = $this->configurationFileInDirectory($this->arguments['configuration']);
+
+ if ($candidate !== null) {
+ $this->arguments['configuration'] = $candidate;
+ }
+ }
+ } elseif ($this->arguments['useDefaultConfiguration']) {
+ $candidate = $this->configurationFileInDirectory(getcwd());
+
+ if ($candidate !== null) {
+ $this->arguments['configuration'] = $candidate;
+ }
+ }
+
+ if ($arguments->hasMigrateConfiguration() && $arguments->migrateConfiguration()) {
+ if (!isset($this->arguments['configuration'])) {
+ print 'No configuration file found to migrate.' . PHP_EOL;
+
+ exit(TestRunner::EXCEPTION_EXIT);
+ }
+
+ $this->migrateConfiguration(realpath($this->arguments['configuration']));
+ }
+
+ if (isset($this->arguments['configuration'])) {
+ try {
+ $this->arguments['configurationObject'] = (new Loader)->load($this->arguments['configuration']);
+ } catch (Throwable $e) {
+ print $e->getMessage() . PHP_EOL;
+
+ exit(TestRunner::FAILURE_EXIT);
+ }
+
+ $phpunitConfiguration = $this->arguments['configurationObject']->phpunit();
+
+ (new PhpHandler)->handle($this->arguments['configurationObject']->php());
+
+ if (isset($this->arguments['bootstrap'])) {
+ $this->handleBootstrap($this->arguments['bootstrap']);
+ } elseif ($phpunitConfiguration->hasBootstrap()) {
+ $this->handleBootstrap($phpunitConfiguration->bootstrap());
+ }
+
+ if (!isset($this->arguments['stderr'])) {
+ $this->arguments['stderr'] = $phpunitConfiguration->stderr();
+ }
+
+ if (!isset($this->arguments['noExtensions']) && $phpunitConfiguration->hasExtensionsDirectory() && extension_loaded('phar')) {
+ $result = (new PharLoader)->loadPharExtensionsInDirectory($phpunitConfiguration->extensionsDirectory());
+
+ $this->arguments['loadedExtensions'] = $result['loadedExtensions'];
+ $this->arguments['notLoadedExtensions'] = $result['notLoadedExtensions'];
+
+ unset($result);
+ }
+
+ if (!isset($this->arguments['columns'])) {
+ $this->arguments['columns'] = $phpunitConfiguration->columns();
+ }
+
+ if (!isset($this->arguments['printer']) && $phpunitConfiguration->hasPrinterClass()) {
+ $file = $phpunitConfiguration->hasPrinterFile() ? $phpunitConfiguration->printerFile() : '';
+
+ $this->arguments['printer'] = $this->handlePrinter(
+ $phpunitConfiguration->printerClass(),
+ $file
+ );
+ }
+
+ if ($phpunitConfiguration->hasTestSuiteLoaderClass()) {
+ $file = $phpunitConfiguration->hasTestSuiteLoaderFile() ? $phpunitConfiguration->testSuiteLoaderFile() : '';
+
+ $this->arguments['loader'] = $this->handleLoader(
+ $phpunitConfiguration->testSuiteLoaderClass(),
+ $file
+ );
+ }
+
+ if (!isset($this->arguments['testsuite']) && $phpunitConfiguration->hasDefaultTestSuite()) {
+ $this->arguments['testsuite'] = $phpunitConfiguration->defaultTestSuite();
+ }
+
+ if (!isset($this->arguments['test'])) {
+ try {
+ $this->arguments['test'] = (new TestSuiteMapper)->map(
+ $this->arguments['configurationObject']->testSuite(),
+ $this->arguments['testsuite'] ?? ''
+ );
+ } catch (Exception $e) {
+ $this->printVersionString();
+
+ print $e->getMessage() . PHP_EOL;
+
+ exit(TestRunner::EXCEPTION_EXIT);
+ }
+ }
+ } elseif (isset($this->arguments['bootstrap'])) {
+ $this->handleBootstrap($this->arguments['bootstrap']);
+ }
+
+ if (isset($this->arguments['printer']) && is_string($this->arguments['printer'])) {
+ $this->arguments['printer'] = $this->handlePrinter($this->arguments['printer']);
+ }
+
+ if (isset($this->arguments['configurationObject'], $this->arguments['warmCoverageCache'])) {
+ $this->handleWarmCoverageCache($this->arguments['configurationObject']);
+ }
+
+ if (!isset($this->arguments['test'])) {
+ $this->showHelp();
+
+ exit(TestRunner::EXCEPTION_EXIT);
+ }
+ }
+
+ /**
+ * Handles the loading of the PHPUnit\Runner\TestSuiteLoader implementation.
+ *
+ * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039
+ */
+ protected function handleLoader(string $loaderClass, string $loaderFile = ''): ?TestSuiteLoader
+ {
+ $this->warnings[] = 'Using a custom test suite loader is deprecated';
+
+ if (!class_exists($loaderClass, false)) {
+ if ($loaderFile == '') {
+ $loaderFile = Filesystem::classNameToFilename(
+ $loaderClass
+ );
+ }
+
+ $loaderFile = stream_resolve_include_path($loaderFile);
+
+ if ($loaderFile) {
+ /**
+ * @noinspection PhpIncludeInspection
+ * @psalm-suppress UnresolvableInclude
+ */
+ require $loaderFile;
+ }
+ }
+
+ if (class_exists($loaderClass, false)) {
+ try {
+ $class = new ReflectionClass($loaderClass);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ if ($class->implementsInterface(TestSuiteLoader::class) && $class->isInstantiable()) {
+ $object = $class->newInstance();
+
+ assert($object instanceof TestSuiteLoader);
+
+ return $object;
+ }
+ }
+
+ if ($loaderClass == StandardTestSuiteLoader::class) {
+ return null;
+ }
+
+ $this->exitWithErrorMessage(
+ sprintf(
+ 'Could not use "%s" as loader.',
+ $loaderClass
+ )
+ );
+
+ return null;
+ }
+
+ /**
+ * Handles the loading of the PHPUnit\Util\Printer implementation.
+ *
+ * @return null|Printer|string
+ */
+ protected function handlePrinter(string $printerClass, string $printerFile = '')
+ {
+ if (!class_exists($printerClass, false)) {
+ if ($printerFile === '') {
+ $printerFile = Filesystem::classNameToFilename(
+ $printerClass
+ );
+ }
+
+ $printerFile = stream_resolve_include_path($printerFile);
+
+ if ($printerFile) {
+ /**
+ * @noinspection PhpIncludeInspection
+ * @psalm-suppress UnresolvableInclude
+ */
+ require $printerFile;
+ }
+ }
+
+ if (!class_exists($printerClass)) {
+ $this->exitWithErrorMessage(
+ sprintf(
+ 'Could not use "%s" as printer: class does not exist',
+ $printerClass
+ )
+ );
+ }
+
+ try {
+ $class = new ReflectionClass($printerClass);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ // @codeCoverageIgnoreEnd
+ }
+
+ if (!$class->implementsInterface(ResultPrinter::class)) {
+ $this->exitWithErrorMessage(
+ sprintf(
+ 'Could not use "%s" as printer: class does not implement %s',
+ $printerClass,
+ ResultPrinter::class
+ )
+ );
+ }
+
+ if (!$class->isInstantiable()) {
+ $this->exitWithErrorMessage(
+ sprintf(
+ 'Could not use "%s" as printer: class cannot be instantiated',
+ $printerClass
+ )
+ );
+ }
+
+ if ($class->isSubclassOf(ResultPrinter::class)) {
+ return $printerClass;
+ }
+
+ $outputStream = isset($this->arguments['stderr']) ? 'php://stderr' : null;
+
+ return $class->newInstance($outputStream);
+ }
+
+ /**
+ * Loads a bootstrap file.
+ */
+ protected function handleBootstrap(string $filename): void
+ {
+ try {
+ FileLoader::checkAndLoad($filename);
+ } catch (Throwable $t) {
+ if ($t instanceof \PHPUnit\Exception) {
+ $this->exitWithErrorMessage($t->getMessage());
+ }
+
+ $this->exitWithErrorMessage(
+ sprintf(
+ 'Error in bootstrap script: %s:%s%s',
+ get_class($t),
+ PHP_EOL,
+ $t->getMessage()
+ )
+ );
+ }
+ }
+
+ protected function handleVersionCheck(): void
+ {
+ $this->printVersionString();
+
+ $latestVersion = file_get_contents('https://phar.phpunit.de/latest-version-of/phpunit');
+ $isOutdated = version_compare($latestVersion, Version::id(), '>');
+
+ if ($isOutdated) {
+ printf(
+ 'You are not using the latest version of PHPUnit.' . PHP_EOL .
+ 'The latest version is PHPUnit %s.' . PHP_EOL,
+ $latestVersion
+ );
+ } else {
+ print 'You are using the latest version of PHPUnit.' . PHP_EOL;
+ }
+
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ /**
+ * Show the help message.
+ */
+ protected function showHelp(): void
+ {
+ $this->printVersionString();
+ (new Help)->writeToConsole();
+ }
+
+ /**
+ * Custom callback for test suite discovery.
+ */
+ protected function handleCustomTestSuite(): void
+ {
+ }
+
+ private function printVersionString(): void
+ {
+ if ($this->versionStringPrinted) {
+ return;
+ }
+
+ print Version::getVersionString() . PHP_EOL . PHP_EOL;
+
+ $this->versionStringPrinted = true;
+ }
+
+ private function exitWithErrorMessage(string $message): void
+ {
+ $this->printVersionString();
+
+ print $message . PHP_EOL;
+
+ exit(TestRunner::FAILURE_EXIT);
+ }
+
+ private function handleListGroups(TestSuite $suite, bool $exit): int
+ {
+ $this->printVersionString();
+
+ print 'Available test group(s):' . PHP_EOL;
+
+ $groups = $suite->getGroups();
+ sort($groups);
+
+ foreach ($groups as $group) {
+ if (strpos($group, '__phpunit_') === 0) {
+ continue;
+ }
+
+ printf(
+ ' - %s' . PHP_EOL,
+ $group
+ );
+ }
+
+ if ($exit) {
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ return TestRunner::SUCCESS_EXIT;
+ }
+
+ /**
+ * @throws \PHPUnit\Framework\Exception
+ * @throws \PHPUnit\TextUI\XmlConfiguration\Exception
+ */
+ private function handleListSuites(bool $exit): int
+ {
+ $this->printVersionString();
+
+ print 'Available test suite(s):' . PHP_EOL;
+
+ foreach ($this->arguments['configurationObject']->testSuite() as $testSuite) {
+ printf(
+ ' - %s' . PHP_EOL,
+ $testSuite->name()
+ );
+ }
+
+ if ($exit) {
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ return TestRunner::SUCCESS_EXIT;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ private function handleListTests(TestSuite $suite, bool $exit): int
+ {
+ $this->printVersionString();
+
+ $renderer = new TextTestListRenderer;
+
+ print $renderer->render($suite);
+
+ if ($exit) {
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ return TestRunner::SUCCESS_EXIT;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ private function handleListTestsXml(TestSuite $suite, string $target, bool $exit): int
+ {
+ $this->printVersionString();
+
+ $renderer = new XmlTestListRenderer;
+
+ file_put_contents($target, $renderer->render($suite));
+
+ printf(
+ 'Wrote list of tests that would have been run to %s' . PHP_EOL,
+ $target
+ );
+
+ if ($exit) {
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ return TestRunner::SUCCESS_EXIT;
+ }
+
+ private function generateConfiguration(): void
+ {
+ $this->printVersionString();
+
+ print 'Generating phpunit.xml in ' . getcwd() . PHP_EOL . PHP_EOL;
+ print 'Bootstrap script (relative to path shown above; default: vendor/autoload.php): ';
+
+ $bootstrapScript = trim(fgets(STDIN));
+
+ print 'Tests directory (relative to path shown above; default: tests): ';
+
+ $testsDirectory = trim(fgets(STDIN));
+
+ print 'Source directory (relative to path shown above; default: src): ';
+
+ $src = trim(fgets(STDIN));
+
+ print 'Cache directory (relative to path shown above; default: .phpunit.cache): ';
+
+ $cacheDirectory = trim(fgets(STDIN));
+
+ if ($bootstrapScript === '') {
+ $bootstrapScript = 'vendor/autoload.php';
+ }
+
+ if ($testsDirectory === '') {
+ $testsDirectory = 'tests';
+ }
+
+ if ($src === '') {
+ $src = 'src';
+ }
+
+ if ($cacheDirectory === '') {
+ $cacheDirectory = '.phpunit.cache';
+ }
+
+ $generator = new Generator;
+
+ file_put_contents(
+ 'phpunit.xml',
+ $generator->generateDefaultConfiguration(
+ Version::series(),
+ $bootstrapScript,
+ $testsDirectory,
+ $src,
+ $cacheDirectory
+ )
+ );
+
+ print PHP_EOL . 'Generated phpunit.xml in ' . getcwd() . '.' . PHP_EOL;
+ print 'Make sure to exclude the ' . $cacheDirectory . ' directory from version control.' . PHP_EOL;
+
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ private function migrateConfiguration(string $filename): void
+ {
+ $this->printVersionString();
+
+ if (!(new SchemaDetector)->detect($filename)->detected()) {
+ print $filename . ' does not need to be migrated.' . PHP_EOL;
+
+ exit(TestRunner::EXCEPTION_EXIT);
+ }
+
+ copy($filename, $filename . '.bak');
+
+ print 'Created backup: ' . $filename . '.bak' . PHP_EOL;
+
+ try {
+ file_put_contents(
+ $filename,
+ (new Migrator)->migrate($filename)
+ );
+
+ print 'Migrated configuration: ' . $filename . PHP_EOL;
+ } catch (Throwable $t) {
+ print 'Migration failed: ' . $t->getMessage() . PHP_EOL;
+
+ exit(TestRunner::EXCEPTION_EXIT);
+ }
+
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ private function handleCustomOptions(array $unrecognizedOptions): void
+ {
+ foreach ($unrecognizedOptions as $name => $value) {
+ if (isset($this->longOptions[$name])) {
+ $handler = $this->longOptions[$name];
+ }
+
+ $name .= '=';
+
+ if (isset($this->longOptions[$name])) {
+ $handler = $this->longOptions[$name];
+ }
+
+ if (isset($handler) && is_callable([$this, $handler])) {
+ $this->{$handler}($value);
+
+ unset($handler);
+ }
+ }
+ }
+
+ private function handleWarmCoverageCache(XmlConfiguration\Configuration $configuration): void
+ {
+ $this->printVersionString();
+
+ if (isset($this->arguments['coverageCacheDirectory'])) {
+ $cacheDirectory = $this->arguments['coverageCacheDirectory'];
+ } elseif ($configuration->codeCoverage()->hasCacheDirectory()) {
+ $cacheDirectory = $configuration->codeCoverage()->cacheDirectory()->path();
+ } else {
+ print 'Cache for static analysis has not been configured' . PHP_EOL;
+
+ exit(TestRunner::EXCEPTION_EXIT);
+ }
+
+ $filter = new Filter;
+
+ if ($configuration->codeCoverage()->hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport()) {
+ (new FilterMapper)->map(
+ $filter,
+ $configuration->codeCoverage()
+ );
+ } elseif (isset($this->arguments['coverageFilter'])) {
+ if (!is_array($this->arguments['coverageFilter'])) {
+ $coverageFilterDirectories = [$this->arguments['coverageFilter']];
+ } else {
+ $coverageFilterDirectories = $this->arguments['coverageFilter'];
+ }
+
+ foreach ($coverageFilterDirectories as $coverageFilterDirectory) {
+ $filter->includeDirectory($coverageFilterDirectory);
+ }
+ } else {
+ print 'Filter for code coverage has not been configured' . PHP_EOL;
+
+ exit(TestRunner::EXCEPTION_EXIT);
+ }
+
+ $timer = new Timer;
+ $timer->start();
+
+ print 'Warming cache for static analysis ... ';
+
+ (new CacheWarmer)->warmCache(
+ $cacheDirectory,
+ !$configuration->codeCoverage()->disableCodeCoverageIgnore(),
+ $configuration->codeCoverage()->ignoreDeprecatedCodeUnits(),
+ $filter
+ );
+
+ print 'done [' . $timer->stop()->asString() . ']' . PHP_EOL;
+
+ exit(TestRunner::SUCCESS_EXIT);
+ }
+
+ private function configurationFileInDirectory(string $directory): ?string
+ {
+ $candidates = [
+ $directory . '/phpunit.xml',
+ $directory . '/phpunit.xml.dist',
+ ];
+
+ foreach ($candidates as $candidate) {
+ if (is_file($candidate)) {
+ return realpath($candidate);
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php b/vendor/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php
new file mode 100644
index 000000000..6a0ad2c79
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/DefaultResultPrinter.php
@@ -0,0 +1,592 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+use const PHP_EOL;
+use function array_map;
+use function array_reverse;
+use function count;
+use function floor;
+use function implode;
+use function in_array;
+use function is_int;
+use function max;
+use function preg_split;
+use function sprintf;
+use function str_pad;
+use function str_repeat;
+use function strlen;
+use function vsprintf;
+use PHPUnit\Framework\AssertionFailedError;
+use PHPUnit\Framework\Exception;
+use PHPUnit\Framework\InvalidArgumentException;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestFailure;
+use PHPUnit\Framework\TestResult;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Framework\Warning;
+use PHPUnit\Runner\PhptTestCase;
+use PHPUnit\Util\Color;
+use PHPUnit\Util\Printer;
+use SebastianBergmann\Environment\Console;
+use SebastianBergmann\Timer\ResourceUsageFormatter;
+use SebastianBergmann\Timer\Timer;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class DefaultResultPrinter extends Printer implements ResultPrinter
+{
+ public const EVENT_TEST_START = 0;
+
+ public const EVENT_TEST_END = 1;
+
+ public const EVENT_TESTSUITE_START = 2;
+
+ public const EVENT_TESTSUITE_END = 3;
+
+ public const COLOR_NEVER = 'never';
+
+ public const COLOR_AUTO = 'auto';
+
+ public const COLOR_ALWAYS = 'always';
+
+ public const COLOR_DEFAULT = self::COLOR_NEVER;
+
+ private const AVAILABLE_COLORS = [self::COLOR_NEVER, self::COLOR_AUTO, self::COLOR_ALWAYS];
+
+ /**
+ * @var int
+ */
+ protected $column = 0;
+
+ /**
+ * @var int
+ */
+ protected $maxColumn;
+
+ /**
+ * @var bool
+ */
+ protected $lastTestFailed = false;
+
+ /**
+ * @var int
+ */
+ protected $numAssertions = 0;
+
+ /**
+ * @var int
+ */
+ protected $numTests = -1;
+
+ /**
+ * @var int
+ */
+ protected $numTestsRun = 0;
+
+ /**
+ * @var int
+ */
+ protected $numTestsWidth;
+
+ /**
+ * @var bool
+ */
+ protected $colors = false;
+
+ /**
+ * @var bool
+ */
+ protected $debug = false;
+
+ /**
+ * @var bool
+ */
+ protected $verbose = false;
+
+ /**
+ * @var int
+ */
+ private $numberOfColumns;
+
+ /**
+ * @var bool
+ */
+ private $reverse;
+
+ /**
+ * @var bool
+ */
+ private $defectListPrinted = false;
+
+ /**
+ * @var Timer
+ */
+ private $timer;
+
+ /**
+ * Constructor.
+ *
+ * @param null|resource|string $out
+ * @param int|string $numberOfColumns
+ *
+ * @throws Exception
+ */
+ public function __construct($out = null, bool $verbose = false, string $colors = self::COLOR_DEFAULT, bool $debug = false, $numberOfColumns = 80, bool $reverse = false)
+ {
+ parent::__construct($out);
+
+ if (!in_array($colors, self::AVAILABLE_COLORS, true)) {
+ throw InvalidArgumentException::create(
+ 3,
+ vsprintf('value from "%s", "%s" or "%s"', self::AVAILABLE_COLORS)
+ );
+ }
+
+ if (!is_int($numberOfColumns) && $numberOfColumns !== 'max') {
+ throw InvalidArgumentException::create(5, 'integer or "max"');
+ }
+
+ $console = new Console;
+ $maxNumberOfColumns = $console->getNumberOfColumns();
+
+ if ($numberOfColumns === 'max' || ($numberOfColumns !== 80 && $numberOfColumns > $maxNumberOfColumns)) {
+ $numberOfColumns = $maxNumberOfColumns;
+ }
+
+ $this->numberOfColumns = $numberOfColumns;
+ $this->verbose = $verbose;
+ $this->debug = $debug;
+ $this->reverse = $reverse;
+
+ if ($colors === self::COLOR_AUTO && $console->hasColorSupport()) {
+ $this->colors = true;
+ } else {
+ $this->colors = (self::COLOR_ALWAYS === $colors);
+ }
+
+ $this->timer = new Timer;
+
+ $this->timer->start();
+ }
+
+ public function printResult(TestResult $result): void
+ {
+ $this->printHeader($result);
+ $this->printErrors($result);
+ $this->printWarnings($result);
+ $this->printFailures($result);
+ $this->printRisky($result);
+
+ if ($this->verbose) {
+ $this->printIncompletes($result);
+ $this->printSkipped($result);
+ }
+
+ $this->printFooter($result);
+ }
+
+ /**
+ * An error occurred.
+ */
+ public function addError(Test $test, Throwable $t, float $time): void
+ {
+ $this->writeProgressWithColor('fg-red, bold', 'E');
+ $this->lastTestFailed = true;
+ }
+
+ /**
+ * A failure occurred.
+ */
+ public function addFailure(Test $test, AssertionFailedError $e, float $time): void
+ {
+ $this->writeProgressWithColor('bg-red, fg-white', 'F');
+ $this->lastTestFailed = true;
+ }
+
+ /**
+ * A warning occurred.
+ */
+ public function addWarning(Test $test, Warning $e, float $time): void
+ {
+ $this->writeProgressWithColor('fg-yellow, bold', 'W');
+ $this->lastTestFailed = true;
+ }
+
+ /**
+ * Incomplete test.
+ */
+ public function addIncompleteTest(Test $test, Throwable $t, float $time): void
+ {
+ $this->writeProgressWithColor('fg-yellow, bold', 'I');
+ $this->lastTestFailed = true;
+ }
+
+ /**
+ * Risky test.
+ */
+ public function addRiskyTest(Test $test, Throwable $t, float $time): void
+ {
+ $this->writeProgressWithColor('fg-yellow, bold', 'R');
+ $this->lastTestFailed = true;
+ }
+
+ /**
+ * Skipped test.
+ */
+ public function addSkippedTest(Test $test, Throwable $t, float $time): void
+ {
+ $this->writeProgressWithColor('fg-cyan, bold', 'S');
+ $this->lastTestFailed = true;
+ }
+
+ /**
+ * A testsuite started.
+ */
+ public function startTestSuite(TestSuite $suite): void
+ {
+ if ($this->numTests == -1) {
+ $this->numTests = count($suite);
+ $this->numTestsWidth = strlen((string) $this->numTests);
+ $this->maxColumn = $this->numberOfColumns - strlen(' / (XXX%)') - (2 * $this->numTestsWidth);
+ }
+ }
+
+ /**
+ * A testsuite ended.
+ */
+ public function endTestSuite(TestSuite $suite): void
+ {
+ }
+
+ /**
+ * A test started.
+ */
+ public function startTest(Test $test): void
+ {
+ if ($this->debug) {
+ $this->write(
+ sprintf(
+ "Test '%s' started\n",
+ \PHPUnit\Util\Test::describeAsString($test)
+ )
+ );
+ }
+ }
+
+ /**
+ * A test ended.
+ */
+ public function endTest(Test $test, float $time): void
+ {
+ if ($this->debug) {
+ $this->write(
+ sprintf(
+ "Test '%s' ended\n",
+ \PHPUnit\Util\Test::describeAsString($test)
+ )
+ );
+ }
+
+ if (!$this->lastTestFailed) {
+ $this->writeProgress('.');
+ }
+
+ if ($test instanceof TestCase) {
+ $this->numAssertions += $test->getNumAssertions();
+ } elseif ($test instanceof PhptTestCase) {
+ $this->numAssertions++;
+ }
+
+ $this->lastTestFailed = false;
+
+ if ($test instanceof TestCase && !$test->hasExpectationOnOutput()) {
+ $this->write($test->getActualOutput());
+ }
+ }
+
+ protected function printDefects(array $defects, string $type): void
+ {
+ $count = count($defects);
+
+ if ($count == 0) {
+ return;
+ }
+
+ if ($this->defectListPrinted) {
+ $this->write("\n--\n\n");
+ }
+
+ $this->write(
+ sprintf(
+ "There %s %d %s%s:\n",
+ ($count == 1) ? 'was' : 'were',
+ $count,
+ $type,
+ ($count == 1) ? '' : 's'
+ )
+ );
+
+ $i = 1;
+
+ if ($this->reverse) {
+ $defects = array_reverse($defects);
+ }
+
+ foreach ($defects as $defect) {
+ $this->printDefect($defect, $i++);
+ }
+
+ $this->defectListPrinted = true;
+ }
+
+ protected function printDefect(TestFailure $defect, int $count): void
+ {
+ $this->printDefectHeader($defect, $count);
+ $this->printDefectTrace($defect);
+ }
+
+ protected function printDefectHeader(TestFailure $defect, int $count): void
+ {
+ $this->write(
+ sprintf(
+ "\n%d) %s\n",
+ $count,
+ $defect->getTestName()
+ )
+ );
+ }
+
+ protected function printDefectTrace(TestFailure $defect): void
+ {
+ $e = $defect->thrownException();
+
+ $this->write((string) $e);
+
+ while ($e = $e->getPrevious()) {
+ $this->write("\nCaused by\n" . $e);
+ }
+ }
+
+ protected function printErrors(TestResult $result): void
+ {
+ $this->printDefects($result->errors(), 'error');
+ }
+
+ protected function printFailures(TestResult $result): void
+ {
+ $this->printDefects($result->failures(), 'failure');
+ }
+
+ protected function printWarnings(TestResult $result): void
+ {
+ $this->printDefects($result->warnings(), 'warning');
+ }
+
+ protected function printIncompletes(TestResult $result): void
+ {
+ $this->printDefects($result->notImplemented(), 'incomplete test');
+ }
+
+ protected function printRisky(TestResult $result): void
+ {
+ $this->printDefects($result->risky(), 'risky test');
+ }
+
+ protected function printSkipped(TestResult $result): void
+ {
+ $this->printDefects($result->skipped(), 'skipped test');
+ }
+
+ protected function printHeader(TestResult $result): void
+ {
+ if (count($result) > 0) {
+ $this->write(PHP_EOL . PHP_EOL . (new ResourceUsageFormatter)->resourceUsage($this->timer->stop()) . PHP_EOL . PHP_EOL);
+ }
+ }
+
+ protected function printFooter(TestResult $result): void
+ {
+ if (count($result) === 0) {
+ $this->writeWithColor(
+ 'fg-black, bg-yellow',
+ 'No tests executed!'
+ );
+
+ return;
+ }
+
+ if ($result->wasSuccessfulAndNoTestIsRiskyOrSkippedOrIncomplete()) {
+ $this->writeWithColor(
+ 'fg-black, bg-green',
+ sprintf(
+ 'OK (%d test%s, %d assertion%s)',
+ count($result),
+ (count($result) === 1) ? '' : 's',
+ $this->numAssertions,
+ ($this->numAssertions === 1) ? '' : 's'
+ )
+ );
+
+ return;
+ }
+
+ $color = 'fg-black, bg-yellow';
+
+ if ($result->wasSuccessful()) {
+ if ($this->verbose || !$result->allHarmless()) {
+ $this->write("\n");
+ }
+
+ $this->writeWithColor(
+ $color,
+ 'OK, but incomplete, skipped, or risky tests!'
+ );
+ } else {
+ $this->write("\n");
+
+ if ($result->errorCount()) {
+ $color = 'fg-white, bg-red';
+
+ $this->writeWithColor(
+ $color,
+ 'ERRORS!'
+ );
+ } elseif ($result->failureCount()) {
+ $color = 'fg-white, bg-red';
+
+ $this->writeWithColor(
+ $color,
+ 'FAILURES!'
+ );
+ } elseif ($result->warningCount()) {
+ $color = 'fg-black, bg-yellow';
+
+ $this->writeWithColor(
+ $color,
+ 'WARNINGS!'
+ );
+ }
+ }
+
+ $this->writeCountString(count($result), 'Tests', $color, true);
+ $this->writeCountString($this->numAssertions, 'Assertions', $color, true);
+ $this->writeCountString($result->errorCount(), 'Errors', $color);
+ $this->writeCountString($result->failureCount(), 'Failures', $color);
+ $this->writeCountString($result->warningCount(), 'Warnings', $color);
+ $this->writeCountString($result->skippedCount(), 'Skipped', $color);
+ $this->writeCountString($result->notImplementedCount(), 'Incomplete', $color);
+ $this->writeCountString($result->riskyCount(), 'Risky', $color);
+ $this->writeWithColor($color, '.');
+ }
+
+ protected function writeProgress(string $progress): void
+ {
+ if ($this->debug) {
+ return;
+ }
+
+ $this->write($progress);
+ $this->column++;
+ $this->numTestsRun++;
+
+ if ($this->column == $this->maxColumn || $this->numTestsRun == $this->numTests) {
+ if ($this->numTestsRun == $this->numTests) {
+ $this->write(str_repeat(' ', $this->maxColumn - $this->column));
+ }
+
+ $this->write(
+ sprintf(
+ ' %' . $this->numTestsWidth . 'd / %' .
+ $this->numTestsWidth . 'd (%3s%%)',
+ $this->numTestsRun,
+ $this->numTests,
+ floor(($this->numTestsRun / $this->numTests) * 100)
+ )
+ );
+
+ if ($this->column == $this->maxColumn) {
+ $this->writeNewLine();
+ }
+ }
+ }
+
+ protected function writeNewLine(): void
+ {
+ $this->column = 0;
+ $this->write("\n");
+ }
+
+ /**
+ * Formats a buffer with a specified ANSI color sequence if colors are
+ * enabled.
+ */
+ protected function colorizeTextBox(string $color, string $buffer): string
+ {
+ if (!$this->colors) {
+ return $buffer;
+ }
+
+ $lines = preg_split('/\r\n|\r|\n/', $buffer);
+ $padding = max(array_map('\strlen', $lines));
+
+ $styledLines = [];
+
+ foreach ($lines as $line) {
+ $styledLines[] = Color::colorize($color, str_pad($line, $padding));
+ }
+
+ return implode(PHP_EOL, $styledLines);
+ }
+
+ /**
+ * Writes a buffer out with a color sequence if colors are enabled.
+ */
+ protected function writeWithColor(string $color, string $buffer, bool $lf = true): void
+ {
+ $this->write($this->colorizeTextBox($color, $buffer));
+
+ if ($lf) {
+ $this->write(PHP_EOL);
+ }
+ }
+
+ /**
+ * Writes progress with a color sequence if colors are enabled.
+ */
+ protected function writeProgressWithColor(string $color, string $buffer): void
+ {
+ $buffer = $this->colorizeTextBox($color, $buffer);
+ $this->writeProgress($buffer);
+ }
+
+ private function writeCountString(int $count, string $name, string $color, bool $always = false): void
+ {
+ static $first = true;
+
+ if ($always || $count > 0) {
+ $this->writeWithColor(
+ $color,
+ sprintf(
+ '%s%s: %d',
+ !$first ? ', ' : '',
+ $name,
+ $count
+ ),
+ false
+ );
+
+ $first = false;
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php b/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php
new file mode 100644
index 000000000..ee2ae4ffa
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/Exception/Exception.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+use Throwable;
+
+/**
+ * @internal This interface is not covered by the backward compatibility promise for PHPUnit
+ */
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php
new file mode 100644
index 000000000..74e9d25dd
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/Exception/ReflectionException.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+use RuntimeException;
+
+/**
+ * @internal This interface is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ReflectionException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php
new file mode 100644
index 000000000..790a84634
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/Exception/RuntimeException.php
@@ -0,0 +1,17 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+/**
+ * @internal This interface is not covered by the backward compatibility promise for PHPUnit
+ */
+final class RuntimeException extends \RuntimeException implements Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php
new file mode 100644
index 000000000..770ad8742
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/Exception/TestDirectoryNotFoundException.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+use function sprintf;
+use RuntimeException;
+
+/**
+ * @internal This interface is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestDirectoryNotFoundException extends RuntimeException implements Exception
+{
+ public function __construct(string $path)
+ {
+ parent::__construct(
+ sprintf(
+ 'Test directory "%s" not found',
+ $path
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php b/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php
new file mode 100644
index 000000000..7ffd2c78c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/Exception/TestFileNotFoundException.php
@@ -0,0 +1,29 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+use function sprintf;
+use RuntimeException;
+
+/**
+ * @internal This interface is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestFileNotFoundException extends RuntimeException implements Exception
+{
+ public function __construct(string $path)
+ {
+ parent::__construct(
+ sprintf(
+ 'Test file "%s" not found',
+ $path
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/Help.php b/vendor/phpunit/phpunit/src/TextUI/Help.php
new file mode 100644
index 000000000..084f2a218
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/Help.php
@@ -0,0 +1,265 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+use const PHP_EOL;
+use function count;
+use function explode;
+use function max;
+use function preg_replace_callback;
+use function str_pad;
+use function str_repeat;
+use function strlen;
+use function wordwrap;
+use PHPUnit\Util\Color;
+use SebastianBergmann\Environment\Console;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Help
+{
+ private const LEFT_MARGIN = ' ';
+
+ private const HELP_TEXT = [
+ 'Usage' => [
+ ['text' => 'phpunit [options] UnitTest.php'],
+ ['text' => 'phpunit [options] <directory>'],
+ ],
+
+ 'Code Coverage Options' => [
+ ['arg' => '--coverage-clover <file>', 'desc' => 'Generate code coverage report in Clover XML format'],
+ ['arg' => '--coverage-cobertura <file>', 'desc' => 'Generate code coverage report in Cobertura XML format'],
+ ['arg' => '--coverage-crap4j <file>', 'desc' => 'Generate code coverage report in Crap4J XML format'],
+ ['arg' => '--coverage-html <dir>', 'desc' => 'Generate code coverage report in HTML format'],
+ ['arg' => '--coverage-php <file>', 'desc' => 'Export PHP_CodeCoverage object to file'],
+ ['arg' => '--coverage-text=<file>', 'desc' => 'Generate code coverage report in text format [default: standard output]'],
+ ['arg' => '--coverage-xml <dir>', 'desc' => 'Generate code coverage report in PHPUnit XML format'],
+ ['arg' => '--coverage-cache <dir>', 'desc' => 'Cache static analysis results'],
+ ['arg' => '--warm-coverage-cache', 'desc' => 'Warm static analysis cache'],
+ ['arg' => '--coverage-filter <dir>', 'desc' => 'Include <dir> in code coverage analysis'],
+ ['arg' => '--path-coverage', 'desc' => 'Perform path coverage analysis'],
+ ['arg' => '--disable-coverage-ignore', 'desc' => 'Disable annotations for ignoring code coverage'],
+ ['arg' => '--no-coverage', 'desc' => 'Ignore code coverage configuration'],
+ ],
+
+ 'Logging Options' => [
+ ['arg' => '--log-junit <file>', 'desc' => 'Log test execution in JUnit XML format to file'],
+ ['arg' => '--log-teamcity <file>', 'desc' => 'Log test execution in TeamCity format to file'],
+ ['arg' => '--testdox-html <file>', 'desc' => 'Write agile documentation in HTML format to file'],
+ ['arg' => '--testdox-text <file>', 'desc' => 'Write agile documentation in Text format to file'],
+ ['arg' => '--testdox-xml <file>', 'desc' => 'Write agile documentation in XML format to file'],
+ ['arg' => '--reverse-list', 'desc' => 'Print defects in reverse order'],
+ ['arg' => '--no-logging', 'desc' => 'Ignore logging configuration'],
+ ],
+
+ 'Test Selection Options' => [
+ ['arg' => '--list-suites', 'desc' => 'List available test suites'],
+ ['arg' => '--testsuite <name>', 'desc' => 'Filter which testsuite to run'],
+ ['arg' => '--list-groups', 'desc' => 'List available test groups'],
+ ['arg' => '--group <name>', 'desc' => 'Only runs tests from the specified group(s)'],
+ ['arg' => '--exclude-group <name>', 'desc' => 'Exclude tests from the specified group(s)'],
+ ['arg' => '--covers <name>', 'desc' => 'Only runs tests annotated with "@covers <name>"'],
+ ['arg' => '--uses <name>', 'desc' => 'Only runs tests annotated with "@uses <name>"'],
+ ['arg' => '--list-tests', 'desc' => 'List available tests'],
+ ['arg' => '--list-tests-xml <file>', 'desc' => 'List available tests in XML format'],
+ ['arg' => '--filter <pattern>', 'desc' => 'Filter which tests to run'],
+ ['arg' => '--test-suffix <suffixes>', 'desc' => 'Only search for test in files with specified suffix(es). Default: Test.php,.phpt'],
+ ],
+
+ 'Test Execution Options' => [
+ ['arg' => '--dont-report-useless-tests', 'desc' => 'Do not report tests that do not test anything'],
+ ['arg' => '--strict-coverage', 'desc' => 'Be strict about @covers annotation usage'],
+ ['arg' => '--strict-global-state', 'desc' => 'Be strict about changes to global state'],
+ ['arg' => '--disallow-test-output', 'desc' => 'Be strict about output during tests'],
+ ['arg' => '--disallow-resource-usage', 'desc' => 'Be strict about resource usage during small tests'],
+ ['arg' => '--enforce-time-limit', 'desc' => 'Enforce time limit based on test size'],
+ ['arg' => '--default-time-limit <sec>', 'desc' => 'Timeout in seconds for tests without @small, @medium or @large'],
+ ['arg' => '--disallow-todo-tests', 'desc' => 'Disallow @todo-annotated tests'],
+ ['spacer' => ''],
+
+ ['arg' => '--process-isolation', 'desc' => 'Run each test in a separate PHP process'],
+ ['arg' => '--globals-backup', 'desc' => 'Backup and restore $GLOBALS for each test'],
+ ['arg' => '--static-backup', 'desc' => 'Backup and restore static attributes for each test'],
+ ['spacer' => ''],
+
+ ['arg' => '--colors <flag>', 'desc' => 'Use colors in output ("never", "auto" or "always")'],
+ ['arg' => '--columns <n>', 'desc' => 'Number of columns to use for progress output'],
+ ['arg' => '--columns max', 'desc' => 'Use maximum number of columns for progress output'],
+ ['arg' => '--stderr', 'desc' => 'Write to STDERR instead of STDOUT'],
+ ['arg' => '--stop-on-defect', 'desc' => 'Stop execution upon first not-passed test'],
+ ['arg' => '--stop-on-error', 'desc' => 'Stop execution upon first error'],
+ ['arg' => '--stop-on-failure', 'desc' => 'Stop execution upon first error or failure'],
+ ['arg' => '--stop-on-warning', 'desc' => 'Stop execution upon first warning'],
+ ['arg' => '--stop-on-risky', 'desc' => 'Stop execution upon first risky test'],
+ ['arg' => '--stop-on-skipped', 'desc' => 'Stop execution upon first skipped test'],
+ ['arg' => '--stop-on-incomplete', 'desc' => 'Stop execution upon first incomplete test'],
+ ['arg' => '--fail-on-incomplete', 'desc' => 'Treat incomplete tests as failures'],
+ ['arg' => '--fail-on-risky', 'desc' => 'Treat risky tests as failures'],
+ ['arg' => '--fail-on-skipped', 'desc' => 'Treat skipped tests as failures'],
+ ['arg' => '--fail-on-warning', 'desc' => 'Treat tests with warnings as failures'],
+ ['arg' => '-v|--verbose', 'desc' => 'Output more verbose information'],
+ ['arg' => '--debug', 'desc' => 'Display debugging information'],
+ ['spacer' => ''],
+
+ ['arg' => '--repeat <times>', 'desc' => 'Runs the test(s) repeatedly'],
+ ['arg' => '--teamcity', 'desc' => 'Report test execution progress in TeamCity format'],
+ ['arg' => '--testdox', 'desc' => 'Report test execution progress in TestDox format'],
+ ['arg' => '--testdox-group', 'desc' => 'Only include tests from the specified group(s)'],
+ ['arg' => '--testdox-exclude-group', 'desc' => 'Exclude tests from the specified group(s)'],
+ ['arg' => '--no-interaction', 'desc' => 'Disable TestDox progress animation'],
+ ['arg' => '--printer <printer>', 'desc' => 'TestListener implementation to use'],
+ ['spacer' => ''],
+
+ ['arg' => '--order-by <order>', 'desc' => 'Run tests in order: default|defects|duration|no-depends|random|reverse|size'],
+ ['arg' => '--random-order-seed <N>', 'desc' => 'Use a specific random seed <N> for random order'],
+ ['arg' => '--cache-result', 'desc' => 'Write test results to cache file'],
+ ['arg' => '--do-not-cache-result', 'desc' => 'Do not write test results to cache file'],
+ ],
+
+ 'Configuration Options' => [
+ ['arg' => '--prepend <file>', 'desc' => 'A PHP script that is included as early as possible'],
+ ['arg' => '--bootstrap <file>', 'desc' => 'A PHP script that is included before the tests run'],
+ ['arg' => '-c|--configuration <file>', 'desc' => 'Read configuration from XML file'],
+ ['arg' => '--no-configuration', 'desc' => 'Ignore default configuration file (phpunit.xml)'],
+ ['arg' => '--extensions <extensions>', 'desc' => 'A comma separated list of PHPUnit extensions to load'],
+ ['arg' => '--no-extensions', 'desc' => 'Do not load PHPUnit extensions'],
+ ['arg' => '--include-path <path(s)>', 'desc' => 'Prepend PHP\'s include_path with given path(s)'],
+ ['arg' => '-d <key[=value]>', 'desc' => 'Sets a php.ini value'],
+ ['arg' => '--cache-result-file <file>', 'desc' => 'Specify result cache path and filename'],
+ ['arg' => '--generate-configuration', 'desc' => 'Generate configuration file with suggested settings'],
+ ['arg' => '--migrate-configuration', 'desc' => 'Migrate configuration file to current format'],
+ ],
+
+ 'Miscellaneous Options' => [
+ ['arg' => '-h|--help', 'desc' => 'Prints this usage information'],
+ ['arg' => '--version', 'desc' => 'Prints the version and exits'],
+ ['arg' => '--atleast-version <min>', 'desc' => 'Checks that version is greater than min and exits'],
+ ['arg' => '--check-version', 'desc' => 'Check whether PHPUnit is the latest version'],
+ ],
+
+ ];
+
+ /**
+ * @var int Number of columns required to write the longest option name to the console
+ */
+ private $maxArgLength = 0;
+
+ /**
+ * @var int Number of columns left for the description field after padding and option
+ */
+ private $maxDescLength;
+
+ /**
+ * @var bool Use color highlights for sections, options and parameters
+ */
+ private $hasColor = false;
+
+ public function __construct(?int $width = null, ?bool $withColor = null)
+ {
+ if ($width === null) {
+ $width = (new Console)->getNumberOfColumns();
+ }
+
+ if ($withColor === null) {
+ $this->hasColor = (new Console)->hasColorSupport();
+ } else {
+ $this->hasColor = $withColor;
+ }
+
+ foreach (self::HELP_TEXT as $options) {
+ foreach ($options as $option) {
+ if (isset($option['arg'])) {
+ $this->maxArgLength = max($this->maxArgLength, isset($option['arg']) ? strlen($option['arg']) : 0);
+ }
+ }
+ }
+
+ $this->maxDescLength = $width - $this->maxArgLength - 4;
+ }
+
+ /**
+ * Write the help file to the CLI, adapting width and colors to the console.
+ */
+ public function writeToConsole(): void
+ {
+ if ($this->hasColor) {
+ $this->writeWithColor();
+ } else {
+ $this->writePlaintext();
+ }
+ }
+
+ private function writePlaintext(): void
+ {
+ foreach (self::HELP_TEXT as $section => $options) {
+ print "{$section}:" . PHP_EOL;
+
+ if ($section !== 'Usage') {
+ print PHP_EOL;
+ }
+
+ foreach ($options as $option) {
+ if (isset($option['spacer'])) {
+ print PHP_EOL;
+ }
+
+ if (isset($option['text'])) {
+ print self::LEFT_MARGIN . $option['text'] . PHP_EOL;
+ }
+
+ if (isset($option['arg'])) {
+ $arg = str_pad($option['arg'], $this->maxArgLength);
+ print self::LEFT_MARGIN . $arg . ' ' . $option['desc'] . PHP_EOL;
+ }
+ }
+
+ print PHP_EOL;
+ }
+ }
+
+ private function writeWithColor(): void
+ {
+ foreach (self::HELP_TEXT as $section => $options) {
+ print Color::colorize('fg-yellow', "{$section}:") . PHP_EOL;
+
+ foreach ($options as $option) {
+ if (isset($option['spacer'])) {
+ print PHP_EOL;
+ }
+
+ if (isset($option['text'])) {
+ print self::LEFT_MARGIN . $option['text'] . PHP_EOL;
+ }
+
+ if (isset($option['arg'])) {
+ $arg = Color::colorize('fg-green', str_pad($option['arg'], $this->maxArgLength));
+ $arg = preg_replace_callback(
+ '/(<[^>]+>)/',
+ static function ($matches)
+ {
+ return Color::colorize('fg-cyan', $matches[0]);
+ },
+ $arg
+ );
+ $desc = explode(PHP_EOL, wordwrap($option['desc'], $this->maxDescLength, PHP_EOL));
+
+ print self::LEFT_MARGIN . $arg . ' ' . $desc[0] . PHP_EOL;
+
+ for ($i = 1; $i < count($desc); $i++) {
+ print str_repeat(' ', $this->maxArgLength + 3) . $desc[$i] . PHP_EOL;
+ }
+ }
+ }
+
+ print PHP_EOL;
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php b/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php
new file mode 100644
index 000000000..ec89f6006
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/ResultPrinter.php
@@ -0,0 +1,23 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+use PHPUnit\Framework\TestListener;
+use PHPUnit\Framework\TestResult;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+interface ResultPrinter extends TestListener
+{
+ public function printResult(TestResult $result): void;
+
+ public function write(string $buffer): void;
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/TestRunner.php b/vendor/phpunit/phpunit/src/TextUI/TestRunner.php
new file mode 100644
index 000000000..dfda9359b
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/TestRunner.php
@@ -0,0 +1,1272 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+use const PHP_EOL;
+use const PHP_SAPI;
+use const PHP_VERSION;
+use function array_diff;
+use function array_map;
+use function array_merge;
+use function assert;
+use function class_exists;
+use function count;
+use function dirname;
+use function file_put_contents;
+use function htmlspecialchars;
+use function is_array;
+use function is_int;
+use function is_string;
+use function mt_srand;
+use function range;
+use function realpath;
+use function sprintf;
+use function time;
+use PHPUnit\Framework\Exception;
+use PHPUnit\Framework\TestResult;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Runner\AfterLastTestHook;
+use PHPUnit\Runner\BaseTestRunner;
+use PHPUnit\Runner\BeforeFirstTestHook;
+use PHPUnit\Runner\DefaultTestResultCache;
+use PHPUnit\Runner\Extension\ExtensionHandler;
+use PHPUnit\Runner\Filter\ExcludeGroupFilterIterator;
+use PHPUnit\Runner\Filter\Factory;
+use PHPUnit\Runner\Filter\IncludeGroupFilterIterator;
+use PHPUnit\Runner\Filter\NameFilterIterator;
+use PHPUnit\Runner\Hook;
+use PHPUnit\Runner\NullTestResultCache;
+use PHPUnit\Runner\ResultCacheExtension;
+use PHPUnit\Runner\StandardTestSuiteLoader;
+use PHPUnit\Runner\TestHook;
+use PHPUnit\Runner\TestListenerAdapter;
+use PHPUnit\Runner\TestSuiteLoader;
+use PHPUnit\Runner\TestSuiteSorter;
+use PHPUnit\Runner\Version;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\FilterMapper;
+use PHPUnit\TextUI\XmlConfiguration\Configuration;
+use PHPUnit\TextUI\XmlConfiguration\Loader;
+use PHPUnit\TextUI\XmlConfiguration\PhpHandler;
+use PHPUnit\Util\Filesystem;
+use PHPUnit\Util\Log\JUnit;
+use PHPUnit\Util\Log\TeamCity;
+use PHPUnit\Util\Printer;
+use PHPUnit\Util\TestDox\CliTestDoxPrinter;
+use PHPUnit\Util\TestDox\HtmlResultPrinter;
+use PHPUnit\Util\TestDox\TextResultPrinter;
+use PHPUnit\Util\TestDox\XmlResultPrinter;
+use PHPUnit\Util\XdebugFilterScriptGenerator;
+use PHPUnit\Util\Xml\SchemaDetector;
+use ReflectionClass;
+use ReflectionException;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Driver\Selector;
+use SebastianBergmann\CodeCoverage\Exception as CodeCoverageException;
+use SebastianBergmann\CodeCoverage\Filter as CodeCoverageFilter;
+use SebastianBergmann\CodeCoverage\Report\Clover as CloverReport;
+use SebastianBergmann\CodeCoverage\Report\Cobertura as CoberturaReport;
+use SebastianBergmann\CodeCoverage\Report\Crap4j as Crap4jReport;
+use SebastianBergmann\CodeCoverage\Report\Html\Facade as HtmlReport;
+use SebastianBergmann\CodeCoverage\Report\PHP as PhpReport;
+use SebastianBergmann\CodeCoverage\Report\Text as TextReport;
+use SebastianBergmann\CodeCoverage\Report\Xml\Facade as XmlReport;
+use SebastianBergmann\Comparator\Comparator;
+use SebastianBergmann\Environment\Runtime;
+use SebastianBergmann\Invoker\Invoker;
+use SebastianBergmann\Timer\Timer;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestRunner extends BaseTestRunner
+{
+ public const SUCCESS_EXIT = 0;
+
+ public const FAILURE_EXIT = 1;
+
+ public const EXCEPTION_EXIT = 2;
+
+ /**
+ * @var CodeCoverageFilter
+ */
+ private $codeCoverageFilter;
+
+ /**
+ * @var TestSuiteLoader
+ */
+ private $loader;
+
+ /**
+ * @var ResultPrinter
+ */
+ private $printer;
+
+ /**
+ * @var bool
+ */
+ private $messagePrinted = false;
+
+ /**
+ * @var Hook[]
+ */
+ private $extensions = [];
+
+ /**
+ * @var Timer
+ */
+ private $timer;
+
+ public function __construct(TestSuiteLoader $loader = null, CodeCoverageFilter $filter = null)
+ {
+ if ($filter === null) {
+ $filter = new CodeCoverageFilter;
+ }
+
+ $this->codeCoverageFilter = $filter;
+ $this->loader = $loader;
+ $this->timer = new Timer;
+ }
+
+ /**
+ * @throws \PHPUnit\Runner\Exception
+ * @throws \PHPUnit\TextUI\XmlConfiguration\Exception
+ * @throws Exception
+ */
+ public function run(TestSuite $suite, array $arguments = [], array $warnings = [], bool $exit = true): TestResult
+ {
+ if (isset($arguments['configuration'])) {
+ $GLOBALS['__PHPUNIT_CONFIGURATION_FILE'] = $arguments['configuration'];
+ }
+
+ $this->handleConfiguration($arguments);
+
+ $warnings = array_merge($warnings, $arguments['warnings']);
+
+ if (is_int($arguments['columns']) && $arguments['columns'] < 16) {
+ $arguments['columns'] = 16;
+ $tooFewColumnsRequested = true;
+ }
+
+ if (isset($arguments['bootstrap'])) {
+ $GLOBALS['__PHPUNIT_BOOTSTRAP'] = $arguments['bootstrap'];
+ }
+
+ if ($arguments['backupGlobals'] === true) {
+ $suite->setBackupGlobals(true);
+ }
+
+ if ($arguments['backupStaticAttributes'] === true) {
+ $suite->setBackupStaticAttributes(true);
+ }
+
+ if ($arguments['beStrictAboutChangesToGlobalState'] === true) {
+ $suite->setBeStrictAboutChangesToGlobalState(true);
+ }
+
+ if ($arguments['executionOrder'] === TestSuiteSorter::ORDER_RANDOMIZED) {
+ mt_srand($arguments['randomOrderSeed']);
+ }
+
+ if ($arguments['cacheResult']) {
+ if (!isset($arguments['cacheResultFile'])) {
+ if (isset($arguments['configurationObject'])) {
+ assert($arguments['configurationObject'] instanceof Configuration);
+
+ $cacheLocation = $arguments['configurationObject']->filename();
+ } else {
+ $cacheLocation = $_SERVER['PHP_SELF'];
+ }
+
+ $arguments['cacheResultFile'] = null;
+
+ $cacheResultFile = realpath($cacheLocation);
+
+ if ($cacheResultFile !== false) {
+ $arguments['cacheResultFile'] = dirname($cacheResultFile);
+ }
+ }
+
+ $cache = new DefaultTestResultCache($arguments['cacheResultFile']);
+
+ $this->addExtension(new ResultCacheExtension($cache));
+ }
+
+ if ($arguments['executionOrder'] !== TestSuiteSorter::ORDER_DEFAULT || $arguments['executionOrderDefects'] !== TestSuiteSorter::ORDER_DEFAULT || $arguments['resolveDependencies']) {
+ $cache = $cache ?? new NullTestResultCache;
+
+ $cache->load();
+
+ $sorter = new TestSuiteSorter($cache);
+
+ $sorter->reorderTestsInSuite($suite, $arguments['executionOrder'], $arguments['resolveDependencies'], $arguments['executionOrderDefects']);
+ $originalExecutionOrder = $sorter->getOriginalExecutionOrder();
+
+ unset($sorter);
+ }
+
+ if (is_int($arguments['repeat']) && $arguments['repeat'] > 0) {
+ $_suite = new TestSuite;
+
+ /* @noinspection PhpUnusedLocalVariableInspection */
+ foreach (range(1, $arguments['repeat']) as $step) {
+ $_suite->addTest($suite);
+ }
+
+ $suite = $_suite;
+
+ unset($_suite);
+ }
+
+ $result = $this->createTestResult();
+
+ $listener = new TestListenerAdapter;
+ $listenerNeeded = false;
+
+ foreach ($this->extensions as $extension) {
+ if ($extension instanceof TestHook) {
+ $listener->add($extension);
+
+ $listenerNeeded = true;
+ }
+ }
+
+ if ($listenerNeeded) {
+ $result->addListener($listener);
+ }
+
+ unset($listener, $listenerNeeded);
+
+ if ($arguments['convertDeprecationsToExceptions']) {
+ $result->convertDeprecationsToExceptions(true);
+ }
+
+ if (!$arguments['convertErrorsToExceptions']) {
+ $result->convertErrorsToExceptions(false);
+ }
+
+ if (!$arguments['convertNoticesToExceptions']) {
+ $result->convertNoticesToExceptions(false);
+ }
+
+ if (!$arguments['convertWarningsToExceptions']) {
+ $result->convertWarningsToExceptions(false);
+ }
+
+ if ($arguments['stopOnError']) {
+ $result->stopOnError(true);
+ }
+
+ if ($arguments['stopOnFailure']) {
+ $result->stopOnFailure(true);
+ }
+
+ if ($arguments['stopOnWarning']) {
+ $result->stopOnWarning(true);
+ }
+
+ if ($arguments['stopOnIncomplete']) {
+ $result->stopOnIncomplete(true);
+ }
+
+ if ($arguments['stopOnRisky']) {
+ $result->stopOnRisky(true);
+ }
+
+ if ($arguments['stopOnSkipped']) {
+ $result->stopOnSkipped(true);
+ }
+
+ if ($arguments['stopOnDefect']) {
+ $result->stopOnDefect(true);
+ }
+
+ if ($arguments['registerMockObjectsFromTestArgumentsRecursively']) {
+ $result->setRegisterMockObjectsFromTestArgumentsRecursively(true);
+ }
+
+ if ($this->printer === null) {
+ if (isset($arguments['printer'])) {
+ if ($arguments['printer'] instanceof ResultPrinter) {
+ $this->printer = $arguments['printer'];
+ } elseif (is_string($arguments['printer']) && class_exists($arguments['printer'], false)) {
+ try {
+ $reflector = new ReflectionClass($arguments['printer']);
+
+ if ($reflector->implementsInterface(ResultPrinter::class)) {
+ $this->printer = $this->createPrinter($arguments['printer'], $arguments);
+ }
+
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+ } else {
+ $this->printer = $this->createPrinter(DefaultResultPrinter::class, $arguments);
+ }
+ }
+
+ if (isset($originalExecutionOrder) && $this->printer instanceof CliTestDoxPrinter) {
+ assert($this->printer instanceof CliTestDoxPrinter);
+
+ $this->printer->setOriginalExecutionOrder($originalExecutionOrder);
+ $this->printer->setShowProgressAnimation(!$arguments['noInteraction']);
+ }
+
+ $this->printer->write(
+ Version::getVersionString() . "\n"
+ );
+
+ foreach ($arguments['listeners'] as $listener) {
+ $result->addListener($listener);
+ }
+
+ $result->addListener($this->printer);
+
+ $coverageFilterFromConfigurationFile = false;
+ $coverageFilterFromOption = false;
+ $codeCoverageReports = 0;
+
+ if (isset($arguments['testdoxHTMLFile'])) {
+ $result->addListener(
+ new HtmlResultPrinter(
+ $arguments['testdoxHTMLFile'],
+ $arguments['testdoxGroups'],
+ $arguments['testdoxExcludeGroups']
+ )
+ );
+ }
+
+ if (isset($arguments['testdoxTextFile'])) {
+ $result->addListener(
+ new TextResultPrinter(
+ $arguments['testdoxTextFile'],
+ $arguments['testdoxGroups'],
+ $arguments['testdoxExcludeGroups']
+ )
+ );
+ }
+
+ if (isset($arguments['testdoxXMLFile'])) {
+ $result->addListener(
+ new XmlResultPrinter(
+ $arguments['testdoxXMLFile']
+ )
+ );
+ }
+
+ if (isset($arguments['teamcityLogfile'])) {
+ $result->addListener(
+ new TeamCity($arguments['teamcityLogfile'])
+ );
+ }
+
+ if (isset($arguments['junitLogfile'])) {
+ $result->addListener(
+ new JUnit(
+ $arguments['junitLogfile'],
+ $arguments['reportUselessTests']
+ )
+ );
+ }
+
+ if (isset($arguments['coverageClover'])) {
+ $codeCoverageReports++;
+ }
+
+ if (isset($arguments['coverageCobertura'])) {
+ $codeCoverageReports++;
+ }
+
+ if (isset($arguments['coverageCrap4J'])) {
+ $codeCoverageReports++;
+ }
+
+ if (isset($arguments['coverageHtml'])) {
+ $codeCoverageReports++;
+ }
+
+ if (isset($arguments['coveragePHP'])) {
+ $codeCoverageReports++;
+ }
+
+ if (isset($arguments['coverageText'])) {
+ $codeCoverageReports++;
+ }
+
+ if (isset($arguments['coverageXml'])) {
+ $codeCoverageReports++;
+ }
+
+ if ($codeCoverageReports > 0 || isset($arguments['xdebugFilterFile'])) {
+ if (isset($arguments['coverageFilter'])) {
+ if (!is_array($arguments['coverageFilter'])) {
+ $coverageFilterDirectories = [$arguments['coverageFilter']];
+ } else {
+ $coverageFilterDirectories = $arguments['coverageFilter'];
+ }
+
+ foreach ($coverageFilterDirectories as $coverageFilterDirectory) {
+ $this->codeCoverageFilter->includeDirectory($coverageFilterDirectory);
+ }
+
+ $coverageFilterFromOption = true;
+ }
+
+ if (isset($arguments['configurationObject'])) {
+ assert($arguments['configurationObject'] instanceof Configuration);
+
+ $codeCoverageConfiguration = $arguments['configurationObject']->codeCoverage();
+
+ if ($codeCoverageConfiguration->hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport()) {
+ $coverageFilterFromConfigurationFile = true;
+
+ (new FilterMapper)->map(
+ $this->codeCoverageFilter,
+ $codeCoverageConfiguration
+ );
+ }
+ }
+ }
+
+ if ($codeCoverageReports > 0) {
+ try {
+ if (isset($codeCoverageConfiguration) &&
+ ($codeCoverageConfiguration->pathCoverage() || (isset($arguments['pathCoverage']) && $arguments['pathCoverage'] === true))) {
+ $codeCoverageDriver = (new Selector)->forLineAndPathCoverage($this->codeCoverageFilter);
+ } else {
+ $codeCoverageDriver = (new Selector)->forLineCoverage($this->codeCoverageFilter);
+ }
+
+ $codeCoverage = new CodeCoverage(
+ $codeCoverageDriver,
+ $this->codeCoverageFilter
+ );
+
+ if (isset($codeCoverageConfiguration) && $codeCoverageConfiguration->hasCacheDirectory()) {
+ $codeCoverage->cacheStaticAnalysis($codeCoverageConfiguration->cacheDirectory()->path());
+ }
+
+ if (isset($arguments['coverageCacheDirectory'])) {
+ $codeCoverage->cacheStaticAnalysis($arguments['coverageCacheDirectory']);
+ }
+
+ $codeCoverage->excludeSubclassesOfThisClassFromUnintentionallyCoveredCodeCheck(Comparator::class);
+
+ if ($arguments['strictCoverage']) {
+ $codeCoverage->enableCheckForUnintentionallyCoveredCode();
+ }
+
+ if (isset($arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'])) {
+ if ($arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage']) {
+ $codeCoverage->ignoreDeprecatedCode();
+ } else {
+ $codeCoverage->doNotIgnoreDeprecatedCode();
+ }
+ }
+
+ if (isset($arguments['disableCodeCoverageIgnore'])) {
+ if ($arguments['disableCodeCoverageIgnore']) {
+ $codeCoverage->disableAnnotationsForIgnoringCode();
+ } else {
+ $codeCoverage->enableAnnotationsForIgnoringCode();
+ }
+ }
+
+ if (isset($arguments['configurationObject'])) {
+ $codeCoverageConfiguration = $arguments['configurationObject']->codeCoverage();
+
+ if ($codeCoverageConfiguration->hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport()) {
+ if ($codeCoverageConfiguration->includeUncoveredFiles()) {
+ $codeCoverage->includeUncoveredFiles();
+ } else {
+ $codeCoverage->excludeUncoveredFiles();
+ }
+
+ if ($codeCoverageConfiguration->processUncoveredFiles()) {
+ $codeCoverage->processUncoveredFiles();
+ } else {
+ $codeCoverage->doNotProcessUncoveredFiles();
+ }
+ }
+ }
+
+ if ($this->codeCoverageFilter->isEmpty()) {
+ if (!$coverageFilterFromConfigurationFile && !$coverageFilterFromOption) {
+ $warnings[] = 'No filter is configured, code coverage will not be processed';
+ } else {
+ $warnings[] = 'Incorrect filter configuration, code coverage will not be processed';
+ }
+
+ unset($codeCoverage);
+ }
+ } catch (CodeCoverageException $e) {
+ $warnings[] = $e->getMessage();
+ }
+ }
+
+ if ($arguments['verbose']) {
+ if (PHP_SAPI === 'phpdbg') {
+ $this->writeMessage('Runtime', 'PHPDBG ' . PHP_VERSION);
+ } else {
+ $runtime = 'PHP ' . PHP_VERSION;
+
+ if (isset($codeCoverageDriver)) {
+ $runtime .= ' with ' . $codeCoverageDriver->nameAndVersion();
+ }
+
+ $this->writeMessage('Runtime', $runtime);
+ }
+
+ if (isset($arguments['configurationObject'])) {
+ assert($arguments['configurationObject'] instanceof Configuration);
+
+ $this->writeMessage(
+ 'Configuration',
+ $arguments['configurationObject']->filename()
+ );
+ }
+
+ foreach ($arguments['loadedExtensions'] as $extension) {
+ $this->writeMessage(
+ 'Extension',
+ $extension
+ );
+ }
+
+ foreach ($arguments['notLoadedExtensions'] as $extension) {
+ $this->writeMessage(
+ 'Extension',
+ $extension
+ );
+ }
+ }
+
+ if ($arguments['executionOrder'] === TestSuiteSorter::ORDER_RANDOMIZED) {
+ $this->writeMessage(
+ 'Random Seed',
+ (string) $arguments['randomOrderSeed']
+ );
+ }
+
+ if (isset($tooFewColumnsRequested)) {
+ $warnings[] = 'Less than 16 columns requested, number of columns set to 16';
+ }
+
+ if ((new Runtime)->discardsComments()) {
+ $warnings[] = 'opcache.save_comments=0 set; annotations will not work';
+ }
+
+ if (isset($arguments['conflictBetweenPrinterClassAndTestdox'])) {
+ $warnings[] = 'Directives printerClass and testdox are mutually exclusive';
+ }
+
+ foreach ($warnings as $warning) {
+ $this->writeMessage('Warning', $warning);
+ }
+
+ if (isset($arguments['configurationObject'])) {
+ assert($arguments['configurationObject'] instanceof Configuration);
+
+ if ($arguments['configurationObject']->hasValidationErrors()) {
+ if ((new SchemaDetector)->detect($arguments['configurationObject']->filename())->detected()) {
+ $this->writeMessage('Warning', 'Your XML configuration validates against a deprecated schema.');
+ $this->writeMessage('Suggestion', 'Migrate your XML configuration using "--migrate-configuration"!');
+ } else {
+ $this->write(
+ "\n Warning - The configuration file did not pass validation!\n The following problems have been detected:\n"
+ );
+
+ $this->write($arguments['configurationObject']->validationErrors());
+
+ $this->write("\n Test results may not be as expected.\n\n");
+ }
+ }
+ }
+
+ if (isset($arguments['xdebugFilterFile'], $codeCoverageConfiguration)) {
+ $this->write(PHP_EOL . 'Please note that --dump-xdebug-filter and --prepend are deprecated and will be removed in PHPUnit 10.' . PHP_EOL);
+
+ $script = (new XdebugFilterScriptGenerator)->generate($codeCoverageConfiguration);
+
+ if ($arguments['xdebugFilterFile'] !== 'php://stdout' && $arguments['xdebugFilterFile'] !== 'php://stderr' && !Filesystem::createDirectory(dirname($arguments['xdebugFilterFile']))) {
+ $this->write(sprintf('Cannot write Xdebug filter script to %s ' . PHP_EOL, $arguments['xdebugFilterFile']));
+
+ exit(self::EXCEPTION_EXIT);
+ }
+
+ file_put_contents($arguments['xdebugFilterFile'], $script);
+
+ $this->write(sprintf('Wrote Xdebug filter script to %s ' . PHP_EOL . PHP_EOL, $arguments['xdebugFilterFile']));
+
+ exit(self::SUCCESS_EXIT);
+ }
+
+ $this->printer->write("\n");
+
+ if (isset($codeCoverage)) {
+ $result->setCodeCoverage($codeCoverage);
+ }
+
+ $result->beStrictAboutTestsThatDoNotTestAnything($arguments['reportUselessTests']);
+ $result->beStrictAboutOutputDuringTests($arguments['disallowTestOutput']);
+ $result->beStrictAboutTodoAnnotatedTests($arguments['disallowTodoAnnotatedTests']);
+ $result->beStrictAboutResourceUsageDuringSmallTests($arguments['beStrictAboutResourceUsageDuringSmallTests']);
+
+ if ($arguments['enforceTimeLimit'] === true && !(new Invoker)->canInvokeWithTimeout()) {
+ $this->writeMessage('Error', 'PHP extension pcntl is required for enforcing time limits');
+ }
+
+ $result->enforceTimeLimit($arguments['enforceTimeLimit']);
+ $result->setDefaultTimeLimit($arguments['defaultTimeLimit']);
+ $result->setTimeoutForSmallTests($arguments['timeoutForSmallTests']);
+ $result->setTimeoutForMediumTests($arguments['timeoutForMediumTests']);
+ $result->setTimeoutForLargeTests($arguments['timeoutForLargeTests']);
+
+ if (isset($arguments['forceCoversAnnotation']) && $arguments['forceCoversAnnotation'] === true) {
+ $result->forceCoversAnnotation();
+ }
+
+ $this->processSuiteFilters($suite, $arguments);
+ $suite->setRunTestInSeparateProcess($arguments['processIsolation']);
+
+ foreach ($this->extensions as $extension) {
+ if ($extension instanceof BeforeFirstTestHook) {
+ $extension->executeBeforeFirstTest();
+ }
+ }
+
+ $testSuiteWarningsPrinted = false;
+
+ foreach ($suite->warnings() as $warning) {
+ $this->writeMessage('Warning', $warning);
+
+ $testSuiteWarningsPrinted = true;
+ }
+
+ if ($testSuiteWarningsPrinted) {
+ $this->write(PHP_EOL);
+ }
+
+ $suite->run($result);
+
+ foreach ($this->extensions as $extension) {
+ if ($extension instanceof AfterLastTestHook) {
+ $extension->executeAfterLastTest();
+ }
+ }
+
+ $result->flushListeners();
+ $this->printer->printResult($result);
+
+ if (isset($codeCoverage)) {
+ if (isset($arguments['coverageClover'])) {
+ $this->codeCoverageGenerationStart('Clover XML');
+
+ try {
+ $writer = new CloverReport;
+ $writer->process($codeCoverage, $arguments['coverageClover']);
+
+ $this->codeCoverageGenerationSucceeded();
+
+ unset($writer);
+ } catch (CodeCoverageException $e) {
+ $this->codeCoverageGenerationFailed($e);
+ }
+ }
+
+ if (isset($arguments['coverageCobertura'])) {
+ $this->codeCoverageGenerationStart('Cobertura XML');
+
+ try {
+ $writer = new CoberturaReport;
+ $writer->process($codeCoverage, $arguments['coverageCobertura']);
+
+ $this->codeCoverageGenerationSucceeded();
+
+ unset($writer);
+ } catch (CodeCoverageException $e) {
+ $this->codeCoverageGenerationFailed($e);
+ }
+ }
+
+ if (isset($arguments['coverageCrap4J'])) {
+ $this->codeCoverageGenerationStart('Crap4J XML');
+
+ try {
+ $writer = new Crap4jReport($arguments['crap4jThreshold']);
+ $writer->process($codeCoverage, $arguments['coverageCrap4J']);
+
+ $this->codeCoverageGenerationSucceeded();
+
+ unset($writer);
+ } catch (CodeCoverageException $e) {
+ $this->codeCoverageGenerationFailed($e);
+ }
+ }
+
+ if (isset($arguments['coverageHtml'])) {
+ $this->codeCoverageGenerationStart('HTML');
+
+ try {
+ $writer = new HtmlReport(
+ $arguments['reportLowUpperBound'],
+ $arguments['reportHighLowerBound'],
+ sprintf(
+ ' and <a href="https://phpunit.de/">PHPUnit %s</a>',
+ Version::id()
+ )
+ );
+
+ $writer->process($codeCoverage, $arguments['coverageHtml']);
+
+ $this->codeCoverageGenerationSucceeded();
+
+ unset($writer);
+ } catch (CodeCoverageException $e) {
+ $this->codeCoverageGenerationFailed($e);
+ }
+ }
+
+ if (isset($arguments['coveragePHP'])) {
+ $this->codeCoverageGenerationStart('PHP');
+
+ try {
+ $writer = new PhpReport;
+ $writer->process($codeCoverage, $arguments['coveragePHP']);
+
+ $this->codeCoverageGenerationSucceeded();
+
+ unset($writer);
+ } catch (CodeCoverageException $e) {
+ $this->codeCoverageGenerationFailed($e);
+ }
+ }
+
+ if (isset($arguments['coverageText'])) {
+ if ($arguments['coverageText'] === 'php://stdout') {
+ $outputStream = $this->printer;
+ $colors = $arguments['colors'] && $arguments['colors'] !== DefaultResultPrinter::COLOR_NEVER;
+ } else {
+ $outputStream = new Printer($arguments['coverageText']);
+ $colors = false;
+ }
+
+ $processor = new TextReport(
+ $arguments['reportLowUpperBound'],
+ $arguments['reportHighLowerBound'],
+ $arguments['coverageTextShowUncoveredFiles'],
+ $arguments['coverageTextShowOnlySummary']
+ );
+
+ $outputStream->write(
+ $processor->process($codeCoverage, $colors)
+ );
+ }
+
+ if (isset($arguments['coverageXml'])) {
+ $this->codeCoverageGenerationStart('PHPUnit XML');
+
+ try {
+ $writer = new XmlReport(Version::id());
+ $writer->process($codeCoverage, $arguments['coverageXml']);
+
+ $this->codeCoverageGenerationSucceeded();
+
+ unset($writer);
+ } catch (CodeCoverageException $e) {
+ $this->codeCoverageGenerationFailed($e);
+ }
+ }
+ }
+
+ if ($exit) {
+ if (isset($arguments['failOnEmptyTestSuite']) && $arguments['failOnEmptyTestSuite'] === true && count($result) === 0) {
+ exit(self::FAILURE_EXIT);
+ }
+
+ if ($result->wasSuccessfulIgnoringWarnings()) {
+ if ($arguments['failOnRisky'] && !$result->allHarmless()) {
+ exit(self::FAILURE_EXIT);
+ }
+
+ if ($arguments['failOnWarning'] && $result->warningCount() > 0) {
+ exit(self::FAILURE_EXIT);
+ }
+
+ if ($arguments['failOnIncomplete'] && $result->notImplementedCount() > 0) {
+ exit(self::FAILURE_EXIT);
+ }
+
+ if ($arguments['failOnSkipped'] && $result->skippedCount() > 0) {
+ exit(self::FAILURE_EXIT);
+ }
+
+ exit(self::SUCCESS_EXIT);
+ }
+
+ if ($result->errorCount() > 0) {
+ exit(self::EXCEPTION_EXIT);
+ }
+
+ if ($result->failureCount() > 0) {
+ exit(self::FAILURE_EXIT);
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns the loader to be used.
+ */
+ public function getLoader(): TestSuiteLoader
+ {
+ if ($this->loader === null) {
+ $this->loader = new StandardTestSuiteLoader;
+ }
+
+ return $this->loader;
+ }
+
+ public function addExtension(Hook $extension): void
+ {
+ $this->extensions[] = $extension;
+ }
+
+ /**
+ * Override to define how to handle a failed loading of
+ * a test suite.
+ */
+ protected function runFailed(string $message): void
+ {
+ $this->write($message . PHP_EOL);
+
+ exit(self::FAILURE_EXIT);
+ }
+
+ private function createTestResult(): TestResult
+ {
+ return new TestResult;
+ }
+
+ private function write(string $buffer): void
+ {
+ if (PHP_SAPI !== 'cli' && PHP_SAPI !== 'phpdbg') {
+ $buffer = htmlspecialchars($buffer);
+ }
+
+ if ($this->printer !== null) {
+ $this->printer->write($buffer);
+ } else {
+ print $buffer;
+ }
+ }
+
+ /**
+ * @throws \PHPUnit\TextUI\XmlConfiguration\Exception
+ * @throws Exception
+ */
+ private function handleConfiguration(array &$arguments): void
+ {
+ if (!isset($arguments['configurationObject']) && isset($arguments['configuration'])) {
+ $arguments['configurationObject'] = (new Loader)->load($arguments['configuration']);
+ }
+
+ if (!isset($arguments['warnings'])) {
+ $arguments['warnings'] = [];
+ }
+
+ $arguments['debug'] = $arguments['debug'] ?? false;
+ $arguments['filter'] = $arguments['filter'] ?? false;
+ $arguments['listeners'] = $arguments['listeners'] ?? [];
+
+ if (isset($arguments['configurationObject'])) {
+ (new PhpHandler)->handle($arguments['configurationObject']->php());
+
+ $codeCoverageConfiguration = $arguments['configurationObject']->codeCoverage();
+
+ if (!isset($arguments['noCoverage'])) {
+ if (!isset($arguments['coverageClover']) && $codeCoverageConfiguration->hasClover()) {
+ $arguments['coverageClover'] = $codeCoverageConfiguration->clover()->target()->path();
+ }
+
+ if (!isset($arguments['coverageCobertura']) && $codeCoverageConfiguration->hasCobertura()) {
+ $arguments['coverageCobertura'] = $codeCoverageConfiguration->cobertura()->target()->path();
+ }
+
+ if (!isset($arguments['coverageCrap4J']) && $codeCoverageConfiguration->hasCrap4j()) {
+ $arguments['coverageCrap4J'] = $codeCoverageConfiguration->crap4j()->target()->path();
+
+ if (!isset($arguments['crap4jThreshold'])) {
+ $arguments['crap4jThreshold'] = $codeCoverageConfiguration->crap4j()->threshold();
+ }
+ }
+
+ if (!isset($arguments['coverageHtml']) && $codeCoverageConfiguration->hasHtml()) {
+ $arguments['coverageHtml'] = $codeCoverageConfiguration->html()->target()->path();
+
+ if (!isset($arguments['reportLowUpperBound'])) {
+ $arguments['reportLowUpperBound'] = $codeCoverageConfiguration->html()->lowUpperBound();
+ }
+
+ if (!isset($arguments['reportHighLowerBound'])) {
+ $arguments['reportHighLowerBound'] = $codeCoverageConfiguration->html()->highLowerBound();
+ }
+ }
+
+ if (!isset($arguments['coveragePHP']) && $codeCoverageConfiguration->hasPhp()) {
+ $arguments['coveragePHP'] = $codeCoverageConfiguration->php()->target()->path();
+ }
+
+ if (!isset($arguments['coverageText']) && $codeCoverageConfiguration->hasText()) {
+ $arguments['coverageText'] = $codeCoverageConfiguration->text()->target()->path();
+ $arguments['coverageTextShowUncoveredFiles'] = $codeCoverageConfiguration->text()->showUncoveredFiles();
+ $arguments['coverageTextShowOnlySummary'] = $codeCoverageConfiguration->text()->showOnlySummary();
+ }
+
+ if (!isset($arguments['coverageXml']) && $codeCoverageConfiguration->hasXml()) {
+ $arguments['coverageXml'] = $codeCoverageConfiguration->xml()->target()->path();
+ }
+ }
+
+ $phpunitConfiguration = $arguments['configurationObject']->phpunit();
+
+ $arguments['backupGlobals'] = $arguments['backupGlobals'] ?? $phpunitConfiguration->backupGlobals();
+ $arguments['backupStaticAttributes'] = $arguments['backupStaticAttributes'] ?? $phpunitConfiguration->backupStaticAttributes();
+ $arguments['beStrictAboutChangesToGlobalState'] = $arguments['beStrictAboutChangesToGlobalState'] ?? $phpunitConfiguration->beStrictAboutChangesToGlobalState();
+ $arguments['cacheResult'] = $arguments['cacheResult'] ?? $phpunitConfiguration->cacheResult();
+ $arguments['colors'] = $arguments['colors'] ?? $phpunitConfiguration->colors();
+ $arguments['convertDeprecationsToExceptions'] = $arguments['convertDeprecationsToExceptions'] ?? $phpunitConfiguration->convertDeprecationsToExceptions();
+ $arguments['convertErrorsToExceptions'] = $arguments['convertErrorsToExceptions'] ?? $phpunitConfiguration->convertErrorsToExceptions();
+ $arguments['convertNoticesToExceptions'] = $arguments['convertNoticesToExceptions'] ?? $phpunitConfiguration->convertNoticesToExceptions();
+ $arguments['convertWarningsToExceptions'] = $arguments['convertWarningsToExceptions'] ?? $phpunitConfiguration->convertWarningsToExceptions();
+ $arguments['processIsolation'] = $arguments['processIsolation'] ?? $phpunitConfiguration->processIsolation();
+ $arguments['stopOnDefect'] = $arguments['stopOnDefect'] ?? $phpunitConfiguration->stopOnDefect();
+ $arguments['stopOnError'] = $arguments['stopOnError'] ?? $phpunitConfiguration->stopOnError();
+ $arguments['stopOnFailure'] = $arguments['stopOnFailure'] ?? $phpunitConfiguration->stopOnFailure();
+ $arguments['stopOnWarning'] = $arguments['stopOnWarning'] ?? $phpunitConfiguration->stopOnWarning();
+ $arguments['stopOnIncomplete'] = $arguments['stopOnIncomplete'] ?? $phpunitConfiguration->stopOnIncomplete();
+ $arguments['stopOnRisky'] = $arguments['stopOnRisky'] ?? $phpunitConfiguration->stopOnRisky();
+ $arguments['stopOnSkipped'] = $arguments['stopOnSkipped'] ?? $phpunitConfiguration->stopOnSkipped();
+ $arguments['failOnEmptyTestSuite'] = $arguments['failOnEmptyTestSuite'] ?? $phpunitConfiguration->failOnEmptyTestSuite();
+ $arguments['failOnIncomplete'] = $arguments['failOnIncomplete'] ?? $phpunitConfiguration->failOnIncomplete();
+ $arguments['failOnRisky'] = $arguments['failOnRisky'] ?? $phpunitConfiguration->failOnRisky();
+ $arguments['failOnSkipped'] = $arguments['failOnSkipped'] ?? $phpunitConfiguration->failOnSkipped();
+ $arguments['failOnWarning'] = $arguments['failOnWarning'] ?? $phpunitConfiguration->failOnWarning();
+ $arguments['enforceTimeLimit'] = $arguments['enforceTimeLimit'] ?? $phpunitConfiguration->enforceTimeLimit();
+ $arguments['defaultTimeLimit'] = $arguments['defaultTimeLimit'] ?? $phpunitConfiguration->defaultTimeLimit();
+ $arguments['timeoutForSmallTests'] = $arguments['timeoutForSmallTests'] ?? $phpunitConfiguration->timeoutForSmallTests();
+ $arguments['timeoutForMediumTests'] = $arguments['timeoutForMediumTests'] ?? $phpunitConfiguration->timeoutForMediumTests();
+ $arguments['timeoutForLargeTests'] = $arguments['timeoutForLargeTests'] ?? $phpunitConfiguration->timeoutForLargeTests();
+ $arguments['reportUselessTests'] = $arguments['reportUselessTests'] ?? $phpunitConfiguration->beStrictAboutTestsThatDoNotTestAnything();
+ $arguments['strictCoverage'] = $arguments['strictCoverage'] ?? $phpunitConfiguration->beStrictAboutCoversAnnotation();
+ $arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'] = $arguments['ignoreDeprecatedCodeUnitsFromCodeCoverage'] ?? $codeCoverageConfiguration->ignoreDeprecatedCodeUnits();
+ $arguments['disallowTestOutput'] = $arguments['disallowTestOutput'] ?? $phpunitConfiguration->beStrictAboutOutputDuringTests();
+ $arguments['disallowTodoAnnotatedTests'] = $arguments['disallowTodoAnnotatedTests'] ?? $phpunitConfiguration->beStrictAboutTodoAnnotatedTests();
+ $arguments['beStrictAboutResourceUsageDuringSmallTests'] = $arguments['beStrictAboutResourceUsageDuringSmallTests'] ?? $phpunitConfiguration->beStrictAboutResourceUsageDuringSmallTests();
+ $arguments['verbose'] = $arguments['verbose'] ?? $phpunitConfiguration->verbose();
+ $arguments['reverseDefectList'] = $arguments['reverseDefectList'] ?? $phpunitConfiguration->reverseDefectList();
+ $arguments['forceCoversAnnotation'] = $arguments['forceCoversAnnotation'] ?? $phpunitConfiguration->forceCoversAnnotation();
+ $arguments['disableCodeCoverageIgnore'] = $arguments['disableCodeCoverageIgnore'] ?? $codeCoverageConfiguration->disableCodeCoverageIgnore();
+ $arguments['registerMockObjectsFromTestArgumentsRecursively'] = $arguments['registerMockObjectsFromTestArgumentsRecursively'] ?? $phpunitConfiguration->registerMockObjectsFromTestArgumentsRecursively();
+ $arguments['noInteraction'] = $arguments['noInteraction'] ?? $phpunitConfiguration->noInteraction();
+ $arguments['executionOrder'] = $arguments['executionOrder'] ?? $phpunitConfiguration->executionOrder();
+ $arguments['resolveDependencies'] = $arguments['resolveDependencies'] ?? $phpunitConfiguration->resolveDependencies();
+
+ if (!isset($arguments['bootstrap']) && $phpunitConfiguration->hasBootstrap()) {
+ $arguments['bootstrap'] = $phpunitConfiguration->bootstrap();
+ }
+
+ if (!isset($arguments['cacheResultFile']) && $phpunitConfiguration->hasCacheResultFile()) {
+ $arguments['cacheResultFile'] = $phpunitConfiguration->cacheResultFile();
+ }
+
+ if (!isset($arguments['executionOrderDefects'])) {
+ $arguments['executionOrderDefects'] = $phpunitConfiguration->defectsFirst() ? TestSuiteSorter::ORDER_DEFECTS_FIRST : TestSuiteSorter::ORDER_DEFAULT;
+ }
+
+ if ($phpunitConfiguration->conflictBetweenPrinterClassAndTestdox()) {
+ $arguments['conflictBetweenPrinterClassAndTestdox'] = true;
+ }
+
+ $groupCliArgs = [];
+
+ if (!empty($arguments['groups'])) {
+ $groupCliArgs = $arguments['groups'];
+ }
+
+ $groupConfiguration = $arguments['configurationObject']->groups();
+
+ if (!isset($arguments['groups']) && $groupConfiguration->hasInclude()) {
+ $arguments['groups'] = $groupConfiguration->include()->asArrayOfStrings();
+ }
+
+ if (!isset($arguments['excludeGroups']) && $groupConfiguration->hasExclude()) {
+ $arguments['excludeGroups'] = array_diff($groupConfiguration->exclude()->asArrayOfStrings(), $groupCliArgs);
+ }
+
+ $extensionHandler = new ExtensionHandler;
+
+ foreach ($arguments['configurationObject']->extensions() as $extension) {
+ $extensionHandler->registerExtension($extension, $this);
+ }
+
+ foreach ($arguments['configurationObject']->listeners() as $listener) {
+ $arguments['listeners'][] = $extensionHandler->createTestListenerInstance($listener);
+ }
+
+ unset($extensionHandler);
+
+ foreach ($arguments['unavailableExtensions'] as $extension) {
+ $arguments['warnings'][] = sprintf(
+ 'Extension "%s" is not available',
+ $extension
+ );
+ }
+
+ $loggingConfiguration = $arguments['configurationObject']->logging();
+
+ if (!isset($arguments['noLogging'])) {
+ if ($loggingConfiguration->hasText()) {
+ $arguments['listeners'][] = new DefaultResultPrinter(
+ $loggingConfiguration->text()->target()->path(),
+ true
+ );
+ }
+
+ if (!isset($arguments['teamcityLogfile']) && $loggingConfiguration->hasTeamCity()) {
+ $arguments['teamcityLogfile'] = $loggingConfiguration->teamCity()->target()->path();
+ }
+
+ if (!isset($arguments['junitLogfile']) && $loggingConfiguration->hasJunit()) {
+ $arguments['junitLogfile'] = $loggingConfiguration->junit()->target()->path();
+ }
+
+ if (!isset($arguments['testdoxHTMLFile']) && $loggingConfiguration->hasTestDoxHtml()) {
+ $arguments['testdoxHTMLFile'] = $loggingConfiguration->testDoxHtml()->target()->path();
+ }
+
+ if (!isset($arguments['testdoxTextFile']) && $loggingConfiguration->hasTestDoxText()) {
+ $arguments['testdoxTextFile'] = $loggingConfiguration->testDoxText()->target()->path();
+ }
+
+ if (!isset($arguments['testdoxXMLFile']) && $loggingConfiguration->hasTestDoxXml()) {
+ $arguments['testdoxXMLFile'] = $loggingConfiguration->testDoxXml()->target()->path();
+ }
+ }
+
+ $testdoxGroupConfiguration = $arguments['configurationObject']->testdoxGroups();
+
+ if (!isset($arguments['testdoxGroups']) && $testdoxGroupConfiguration->hasInclude()) {
+ $arguments['testdoxGroups'] = $testdoxGroupConfiguration->include()->asArrayOfStrings();
+ }
+
+ if (!isset($arguments['testdoxExcludeGroups']) && $testdoxGroupConfiguration->hasExclude()) {
+ $arguments['testdoxExcludeGroups'] = $testdoxGroupConfiguration->exclude()->asArrayOfStrings();
+ }
+ }
+
+ $extensionHandler = new ExtensionHandler;
+
+ foreach ($arguments['extensions'] as $extension) {
+ $extensionHandler->registerExtension($extension, $this);
+ }
+
+ unset($extensionHandler);
+
+ $arguments['backupGlobals'] = $arguments['backupGlobals'] ?? null;
+ $arguments['backupStaticAttributes'] = $arguments['backupStaticAttributes'] ?? null;
+ $arguments['beStrictAboutChangesToGlobalState'] = $arguments['beStrictAboutChangesToGlobalState'] ?? null;
+ $arguments['beStrictAboutResourceUsageDuringSmallTests'] = $arguments['beStrictAboutResourceUsageDuringSmallTests'] ?? false;
+ $arguments['cacheResult'] = $arguments['cacheResult'] ?? true;
+ $arguments['colors'] = $arguments['colors'] ?? DefaultResultPrinter::COLOR_DEFAULT;
+ $arguments['columns'] = $arguments['columns'] ?? 80;
+ $arguments['convertDeprecationsToExceptions'] = $arguments['convertDeprecationsToExceptions'] ?? false;
+ $arguments['convertErrorsToExceptions'] = $arguments['convertErrorsToExceptions'] ?? true;
+ $arguments['convertNoticesToExceptions'] = $arguments['convertNoticesToExceptions'] ?? true;
+ $arguments['convertWarningsToExceptions'] = $arguments['convertWarningsToExceptions'] ?? true;
+ $arguments['crap4jThreshold'] = $arguments['crap4jThreshold'] ?? 30;
+ $arguments['disallowTestOutput'] = $arguments['disallowTestOutput'] ?? false;
+ $arguments['disallowTodoAnnotatedTests'] = $arguments['disallowTodoAnnotatedTests'] ?? false;
+ $arguments['defaultTimeLimit'] = $arguments['defaultTimeLimit'] ?? 0;
+ $arguments['enforceTimeLimit'] = $arguments['enforceTimeLimit'] ?? false;
+ $arguments['excludeGroups'] = $arguments['excludeGroups'] ?? [];
+ $arguments['executionOrder'] = $arguments['executionOrder'] ?? TestSuiteSorter::ORDER_DEFAULT;
+ $arguments['executionOrderDefects'] = $arguments['executionOrderDefects'] ?? TestSuiteSorter::ORDER_DEFAULT;
+ $arguments['failOnIncomplete'] = $arguments['failOnIncomplete'] ?? false;
+ $arguments['failOnRisky'] = $arguments['failOnRisky'] ?? false;
+ $arguments['failOnSkipped'] = $arguments['failOnSkipped'] ?? false;
+ $arguments['failOnWarning'] = $arguments['failOnWarning'] ?? false;
+ $arguments['groups'] = $arguments['groups'] ?? [];
+ $arguments['noInteraction'] = $arguments['noInteraction'] ?? false;
+ $arguments['processIsolation'] = $arguments['processIsolation'] ?? false;
+ $arguments['randomOrderSeed'] = $arguments['randomOrderSeed'] ?? time();
+ $arguments['registerMockObjectsFromTestArgumentsRecursively'] = $arguments['registerMockObjectsFromTestArgumentsRecursively'] ?? false;
+ $arguments['repeat'] = $arguments['repeat'] ?? false;
+ $arguments['reportHighLowerBound'] = $arguments['reportHighLowerBound'] ?? 90;
+ $arguments['reportLowUpperBound'] = $arguments['reportLowUpperBound'] ?? 50;
+ $arguments['reportUselessTests'] = $arguments['reportUselessTests'] ?? true;
+ $arguments['reverseList'] = $arguments['reverseList'] ?? false;
+ $arguments['resolveDependencies'] = $arguments['resolveDependencies'] ?? true;
+ $arguments['stopOnError'] = $arguments['stopOnError'] ?? false;
+ $arguments['stopOnFailure'] = $arguments['stopOnFailure'] ?? false;
+ $arguments['stopOnIncomplete'] = $arguments['stopOnIncomplete'] ?? false;
+ $arguments['stopOnRisky'] = $arguments['stopOnRisky'] ?? false;
+ $arguments['stopOnSkipped'] = $arguments['stopOnSkipped'] ?? false;
+ $arguments['stopOnWarning'] = $arguments['stopOnWarning'] ?? false;
+ $arguments['stopOnDefect'] = $arguments['stopOnDefect'] ?? false;
+ $arguments['strictCoverage'] = $arguments['strictCoverage'] ?? false;
+ $arguments['testdoxExcludeGroups'] = $arguments['testdoxExcludeGroups'] ?? [];
+ $arguments['testdoxGroups'] = $arguments['testdoxGroups'] ?? [];
+ $arguments['timeoutForLargeTests'] = $arguments['timeoutForLargeTests'] ?? 60;
+ $arguments['timeoutForMediumTests'] = $arguments['timeoutForMediumTests'] ?? 10;
+ $arguments['timeoutForSmallTests'] = $arguments['timeoutForSmallTests'] ?? 1;
+ $arguments['verbose'] = $arguments['verbose'] ?? false;
+
+ if ($arguments['reportLowUpperBound'] > $arguments['reportHighLowerBound']) {
+ $arguments['reportLowUpperBound'] = 50;
+ $arguments['reportHighLowerBound'] = 90;
+ }
+ }
+
+ private function processSuiteFilters(TestSuite $suite, array $arguments): void
+ {
+ if (!$arguments['filter'] &&
+ empty($arguments['groups']) &&
+ empty($arguments['excludeGroups']) &&
+ empty($arguments['testsCovering']) &&
+ empty($arguments['testsUsing'])) {
+ return;
+ }
+
+ $filterFactory = new Factory;
+
+ if (!empty($arguments['excludeGroups'])) {
+ $filterFactory->addFilter(
+ new ReflectionClass(ExcludeGroupFilterIterator::class),
+ $arguments['excludeGroups']
+ );
+ }
+
+ if (!empty($arguments['groups'])) {
+ $filterFactory->addFilter(
+ new ReflectionClass(IncludeGroupFilterIterator::class),
+ $arguments['groups']
+ );
+ }
+
+ if (!empty($arguments['testsCovering'])) {
+ $filterFactory->addFilter(
+ new ReflectionClass(IncludeGroupFilterIterator::class),
+ array_map(
+ static function (string $name): string
+ {
+ return '__phpunit_covers_' . $name;
+ },
+ $arguments['testsCovering']
+ )
+ );
+ }
+
+ if (!empty($arguments['testsUsing'])) {
+ $filterFactory->addFilter(
+ new ReflectionClass(IncludeGroupFilterIterator::class),
+ array_map(
+ static function (string $name): string
+ {
+ return '__phpunit_uses_' . $name;
+ },
+ $arguments['testsUsing']
+ )
+ );
+ }
+
+ if ($arguments['filter']) {
+ $filterFactory->addFilter(
+ new ReflectionClass(NameFilterIterator::class),
+ $arguments['filter']
+ );
+ }
+
+ $suite->injectFilter($filterFactory);
+ }
+
+ private function writeMessage(string $type, string $message): void
+ {
+ if (!$this->messagePrinted) {
+ $this->write("\n");
+ }
+
+ $this->write(
+ sprintf(
+ "%-15s%s\n",
+ $type . ':',
+ $message
+ )
+ );
+
+ $this->messagePrinted = true;
+ }
+
+ private function createPrinter(string $class, array $arguments): ResultPrinter
+ {
+ $object = new $class(
+ (isset($arguments['stderr']) && $arguments['stderr'] === true) ? 'php://stderr' : null,
+ $arguments['verbose'],
+ $arguments['colors'],
+ $arguments['debug'],
+ $arguments['columns'],
+ $arguments['reverseList']
+ );
+
+ assert($object instanceof ResultPrinter);
+
+ return $object;
+ }
+
+ private function codeCoverageGenerationStart(string $format): void
+ {
+ $this->printer->write(
+ sprintf(
+ "\nGenerating code coverage report in %s format ... ",
+ $format
+ )
+ );
+
+ $this->timer->start();
+ }
+
+ private function codeCoverageGenerationSucceeded(): void
+ {
+ $this->printer->write(
+ sprintf(
+ "done [%s]\n",
+ $this->timer->stop()->asString()
+ )
+ );
+ }
+
+ private function codeCoverageGenerationFailed(\Exception $e): void
+ {
+ $this->printer->write(
+ sprintf(
+ "failed [%s]\n%s\n",
+ $this->timer->stop()->asString(),
+ $e->getMessage()
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.php b/vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.php
new file mode 100644
index 000000000..8a703aeea
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/TestSuiteMapper.php
@@ -0,0 +1,103 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI;
+
+use const PHP_VERSION;
+use function explode;
+use function in_array;
+use function is_dir;
+use function is_file;
+use function strpos;
+use function version_compare;
+use PHPUnit\Framework\Exception as FrameworkException;
+use PHPUnit\Framework\TestSuite as TestSuiteObject;
+use PHPUnit\TextUI\XmlConfiguration\TestSuiteCollection;
+use SebastianBergmann\FileIterator\Facade;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestSuiteMapper
+{
+ /**
+ * @throws RuntimeException
+ * @throws TestDirectoryNotFoundException
+ * @throws TestFileNotFoundException
+ */
+ public function map(TestSuiteCollection $configuration, string $filter): TestSuiteObject
+ {
+ try {
+ $filterAsArray = $filter ? explode(',', $filter) : [];
+ $result = new TestSuiteObject;
+
+ foreach ($configuration as $testSuiteConfiguration) {
+ if (!empty($filterAsArray) && !in_array($testSuiteConfiguration->name(), $filterAsArray, true)) {
+ continue;
+ }
+
+ $testSuite = new TestSuiteObject($testSuiteConfiguration->name());
+ $testSuiteEmpty = true;
+
+ foreach ($testSuiteConfiguration->directories() as $directory) {
+ if (!version_compare(PHP_VERSION, $directory->phpVersion(), $directory->phpVersionOperator()->asString())) {
+ continue;
+ }
+
+ $exclude = [];
+
+ foreach ($testSuiteConfiguration->exclude()->asArray() as $file) {
+ $exclude[] = $file->path();
+ }
+
+ $files = (new Facade)->getFilesAsArray(
+ $directory->path(),
+ $directory->suffix(),
+ $directory->prefix(),
+ $exclude
+ );
+
+ if (!empty($files)) {
+ $testSuite->addTestFiles($files);
+
+ $testSuiteEmpty = false;
+ } elseif (strpos($directory->path(), '*') === false && !is_dir($directory->path())) {
+ throw new TestDirectoryNotFoundException($directory->path());
+ }
+ }
+
+ foreach ($testSuiteConfiguration->files() as $file) {
+ if (!is_file($file->path())) {
+ throw new TestFileNotFoundException($file->path());
+ }
+
+ if (!version_compare(PHP_VERSION, $file->phpVersion(), $file->phpVersionOperator()->asString())) {
+ continue;
+ }
+
+ $testSuite->addTestFile($file->path());
+
+ $testSuiteEmpty = false;
+ }
+
+ if (!$testSuiteEmpty) {
+ $result->addTest($testSuite);
+ }
+ }
+
+ return $result;
+ } catch (FrameworkException $e) {
+ throw new RuntimeException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php
new file mode 100644
index 000000000..33cbea321
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/CodeCoverage.php
@@ -0,0 +1,362 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage;
+
+use function count;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter\DirectoryCollection;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Clover;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Cobertura;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Crap4j;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Html;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Php;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Text;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Xml;
+use PHPUnit\TextUI\XmlConfiguration\Directory;
+use PHPUnit\TextUI\XmlConfiguration\Exception;
+use PHPUnit\TextUI\XmlConfiguration\FileCollection;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class CodeCoverage
+{
+ /**
+ * @var ?Directory
+ */
+ private $cacheDirectory;
+
+ /**
+ * @var DirectoryCollection
+ */
+ private $directories;
+
+ /**
+ * @var FileCollection
+ */
+ private $files;
+
+ /**
+ * @var DirectoryCollection
+ */
+ private $excludeDirectories;
+
+ /**
+ * @var FileCollection
+ */
+ private $excludeFiles;
+
+ /**
+ * @var bool
+ */
+ private $pathCoverage;
+
+ /**
+ * @var bool
+ */
+ private $includeUncoveredFiles;
+
+ /**
+ * @var bool
+ */
+ private $processUncoveredFiles;
+
+ /**
+ * @var bool
+ */
+ private $ignoreDeprecatedCodeUnits;
+
+ /**
+ * @var bool
+ */
+ private $disableCodeCoverageIgnore;
+
+ /**
+ * @var ?Clover
+ */
+ private $clover;
+
+ /**
+ * @var ?Cobertura
+ */
+ private $cobertura;
+
+ /**
+ * @var ?Crap4j
+ */
+ private $crap4j;
+
+ /**
+ * @var ?Html
+ */
+ private $html;
+
+ /**
+ * @var ?Php
+ */
+ private $php;
+
+ /**
+ * @var ?Text
+ */
+ private $text;
+
+ /**
+ * @var ?Xml
+ */
+ private $xml;
+
+ public function __construct(?Directory $cacheDirectory, DirectoryCollection $directories, FileCollection $files, DirectoryCollection $excludeDirectories, FileCollection $excludeFiles, bool $pathCoverage, bool $includeUncoveredFiles, bool $processUncoveredFiles, bool $ignoreDeprecatedCodeUnits, bool $disableCodeCoverageIgnore, ?Clover $clover, ?Cobertura $cobertura, ?Crap4j $crap4j, ?Html $html, ?Php $php, ?Text $text, ?Xml $xml)
+ {
+ $this->cacheDirectory = $cacheDirectory;
+ $this->directories = $directories;
+ $this->files = $files;
+ $this->excludeDirectories = $excludeDirectories;
+ $this->excludeFiles = $excludeFiles;
+ $this->pathCoverage = $pathCoverage;
+ $this->includeUncoveredFiles = $includeUncoveredFiles;
+ $this->processUncoveredFiles = $processUncoveredFiles;
+ $this->ignoreDeprecatedCodeUnits = $ignoreDeprecatedCodeUnits;
+ $this->disableCodeCoverageIgnore = $disableCodeCoverageIgnore;
+ $this->clover = $clover;
+ $this->cobertura = $cobertura;
+ $this->crap4j = $crap4j;
+ $this->html = $html;
+ $this->php = $php;
+ $this->text = $text;
+ $this->xml = $xml;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->cacheDirectory
+ */
+ public function hasCacheDirectory(): bool
+ {
+ return $this->cacheDirectory !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function cacheDirectory(): Directory
+ {
+ if (!$this->hasCacheDirectory()) {
+ throw new Exception(
+ 'No cache directory has been configured'
+ );
+ }
+
+ return $this->cacheDirectory;
+ }
+
+ public function hasNonEmptyListOfFilesToBeIncludedInCodeCoverageReport(): bool
+ {
+ return count($this->directories) > 0 || count($this->files) > 0;
+ }
+
+ public function directories(): DirectoryCollection
+ {
+ return $this->directories;
+ }
+
+ public function files(): FileCollection
+ {
+ return $this->files;
+ }
+
+ public function excludeDirectories(): DirectoryCollection
+ {
+ return $this->excludeDirectories;
+ }
+
+ public function excludeFiles(): FileCollection
+ {
+ return $this->excludeFiles;
+ }
+
+ public function pathCoverage(): bool
+ {
+ return $this->pathCoverage;
+ }
+
+ public function includeUncoveredFiles(): bool
+ {
+ return $this->includeUncoveredFiles;
+ }
+
+ public function ignoreDeprecatedCodeUnits(): bool
+ {
+ return $this->ignoreDeprecatedCodeUnits;
+ }
+
+ public function disableCodeCoverageIgnore(): bool
+ {
+ return $this->disableCodeCoverageIgnore;
+ }
+
+ public function processUncoveredFiles(): bool
+ {
+ return $this->processUncoveredFiles;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->clover
+ */
+ public function hasClover(): bool
+ {
+ return $this->clover !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function clover(): Clover
+ {
+ if (!$this->hasClover()) {
+ throw new Exception(
+ 'Code Coverage report "Clover XML" has not been configured'
+ );
+ }
+
+ return $this->clover;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->cobertura
+ */
+ public function hasCobertura(): bool
+ {
+ return $this->cobertura !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function cobertura(): Cobertura
+ {
+ if (!$this->hasCobertura()) {
+ throw new Exception(
+ 'Code Coverage report "Cobertura XML" has not been configured'
+ );
+ }
+
+ return $this->cobertura;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->crap4j
+ */
+ public function hasCrap4j(): bool
+ {
+ return $this->crap4j !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function crap4j(): Crap4j
+ {
+ if (!$this->hasCrap4j()) {
+ throw new Exception(
+ 'Code Coverage report "Crap4J" has not been configured'
+ );
+ }
+
+ return $this->crap4j;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->html
+ */
+ public function hasHtml(): bool
+ {
+ return $this->html !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function html(): Html
+ {
+ if (!$this->hasHtml()) {
+ throw new Exception(
+ 'Code Coverage report "HTML" has not been configured'
+ );
+ }
+
+ return $this->html;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->php
+ */
+ public function hasPhp(): bool
+ {
+ return $this->php !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function php(): Php
+ {
+ if (!$this->hasPhp()) {
+ throw new Exception(
+ 'Code Coverage report "PHP" has not been configured'
+ );
+ }
+
+ return $this->php;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->text
+ */
+ public function hasText(): bool
+ {
+ return $this->text !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function text(): Text
+ {
+ if (!$this->hasText()) {
+ throw new Exception(
+ 'Code Coverage report "Text" has not been configured'
+ );
+ }
+
+ return $this->text;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->xml
+ */
+ public function hasXml(): bool
+ {
+ return $this->xml !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function xml(): Xml
+ {
+ if (!$this->hasXml()) {
+ throw new Exception(
+ 'Code Coverage report "XML" has not been configured'
+ );
+ }
+
+ return $this->xml;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php
new file mode 100644
index 000000000..3bf99c39d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/Directory.php
@@ -0,0 +1,65 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Directory
+{
+ /**
+ * @var string
+ */
+ private $path;
+
+ /**
+ * @var string
+ */
+ private $prefix;
+
+ /**
+ * @var string
+ */
+ private $suffix;
+
+ /**
+ * @var string
+ */
+ private $group;
+
+ public function __construct(string $path, string $prefix, string $suffix, string $group)
+ {
+ $this->path = $path;
+ $this->prefix = $prefix;
+ $this->suffix = $suffix;
+ $this->group = $group;
+ }
+
+ public function path(): string
+ {
+ return $this->path;
+ }
+
+ public function prefix(): string
+ {
+ return $this->prefix;
+ }
+
+ public function suffix(): string
+ {
+ return $this->suffix;
+ }
+
+ public function group(): string
+ {
+ return $this->group;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php
new file mode 100644
index 000000000..803ccda20
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollection.php
@@ -0,0 +1,57 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter;
+
+use function count;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class DirectoryCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @var Directory[]
+ */
+ private $directories;
+
+ /**
+ * @param Directory[] $directories
+ */
+ public static function fromArray(array $directories): self
+ {
+ return new self(...$directories);
+ }
+
+ private function __construct(Directory ...$directories)
+ {
+ $this->directories = $directories;
+ }
+
+ /**
+ * @return Directory[]
+ */
+ public function asArray(): array
+ {
+ return $this->directories;
+ }
+
+ public function count(): int
+ {
+ return count($this->directories);
+ }
+
+ public function getIterator(): DirectoryCollectionIterator
+ {
+ return new DirectoryCollectionIterator($this);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php
new file mode 100644
index 000000000..c59a3ba99
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Filter/DirectoryCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class DirectoryCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var Directory[]
+ */
+ private $directories;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(DirectoryCollection $directories)
+ {
+ $this->directories = $directories->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->directories);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): Directory
+ {
+ return $this->directories[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php
new file mode 100644
index 000000000..102c96ebc
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/FilterMapper.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage;
+
+use SebastianBergmann\CodeCoverage\Filter;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class FilterMapper
+{
+ public function map(Filter $filter, CodeCoverage $configuration): void
+ {
+ foreach ($configuration->directories() as $directory) {
+ $filter->includeDirectory(
+ $directory->path(),
+ $directory->suffix(),
+ $directory->prefix()
+ );
+ }
+
+ foreach ($configuration->files() as $file) {
+ $filter->includeFile($file->path());
+ }
+
+ foreach ($configuration->excludeDirectories() as $directory) {
+ $filter->excludeDirectory(
+ $directory->path(),
+ $directory->suffix(),
+ $directory->prefix()
+ );
+ }
+
+ foreach ($configuration->excludeFiles() as $file) {
+ $filter->excludeFile($file->path());
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php
new file mode 100644
index 000000000..e7ff407be
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Clover.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Clover
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ public function __construct(File $target)
+ {
+ $this->target = $target;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php
new file mode 100644
index 000000000..e6ee7c9f6
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Cobertura.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Cobertura
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ public function __construct(File $target)
+ {
+ $this->target = $target;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php
new file mode 100644
index 000000000..fd4d42912
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Crap4j.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Crap4j
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ /**
+ * @var int
+ */
+ private $threshold;
+
+ public function __construct(File $target, int $threshold)
+ {
+ $this->target = $target;
+ $this->threshold = $threshold;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+
+ public function threshold(): int
+ {
+ return $this->threshold;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php
new file mode 100644
index 000000000..7084ffe5e
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Html.php
@@ -0,0 +1,56 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report;
+
+use PHPUnit\TextUI\XmlConfiguration\Directory;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Html
+{
+ /**
+ * @var Directory
+ */
+ private $target;
+
+ /**
+ * @var int
+ */
+ private $lowUpperBound;
+
+ /**
+ * @var int
+ */
+ private $highLowerBound;
+
+ public function __construct(Directory $target, int $lowUpperBound, int $highLowerBound)
+ {
+ $this->target = $target;
+ $this->lowUpperBound = $lowUpperBound;
+ $this->highLowerBound = $highLowerBound;
+ }
+
+ public function target(): Directory
+ {
+ return $this->target;
+ }
+
+ public function lowUpperBound(): int
+ {
+ return $this->lowUpperBound;
+ }
+
+ public function highLowerBound(): int
+ {
+ return $this->highLowerBound;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php
new file mode 100644
index 000000000..d86b66216
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Php.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Php
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ public function __construct(File $target)
+ {
+ $this->target = $target;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php
new file mode 100644
index 000000000..b7e9f3da3
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Text.php
@@ -0,0 +1,56 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Text
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ /**
+ * @var bool
+ */
+ private $showUncoveredFiles;
+
+ /**
+ * @var bool
+ */
+ private $showOnlySummary;
+
+ public function __construct(File $target, bool $showUncoveredFiles, bool $showOnlySummary)
+ {
+ $this->target = $target;
+ $this->showUncoveredFiles = $showUncoveredFiles;
+ $this->showOnlySummary = $showOnlySummary;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+
+ public function showUncoveredFiles(): bool
+ {
+ return $this->showUncoveredFiles;
+ }
+
+ public function showOnlySummary(): bool
+ {
+ return $this->showOnlySummary;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php
new file mode 100644
index 000000000..977685c46
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/CodeCoverage/Report/Xml.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report;
+
+use PHPUnit\TextUI\XmlConfiguration\Directory;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Xml
+{
+ /**
+ * @var Directory
+ */
+ private $target;
+
+ public function __construct(Directory $target)
+ {
+ $this->target = $target;
+ }
+
+ public function target(): Directory
+ {
+ return $this->target;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php
new file mode 100644
index 000000000..8f102e3ba
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Configuration.php
@@ -0,0 +1,151 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage;
+use PHPUnit\TextUI\XmlConfiguration\Logging\Logging;
+use PHPUnit\Util\Xml\ValidationResult;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Configuration
+{
+ /**
+ * @var string
+ */
+ private $filename;
+
+ /**
+ * @var ValidationResult
+ */
+ private $validationResult;
+
+ /**
+ * @var ExtensionCollection
+ */
+ private $extensions;
+
+ /**
+ * @var CodeCoverage
+ */
+ private $codeCoverage;
+
+ /**
+ * @var Groups
+ */
+ private $groups;
+
+ /**
+ * @var Groups
+ */
+ private $testdoxGroups;
+
+ /**
+ * @var ExtensionCollection
+ */
+ private $listeners;
+
+ /**
+ * @var Logging
+ */
+ private $logging;
+
+ /**
+ * @var Php
+ */
+ private $php;
+
+ /**
+ * @var PHPUnit
+ */
+ private $phpunit;
+
+ /**
+ * @var TestSuiteCollection
+ */
+ private $testSuite;
+
+ public function __construct(string $filename, ValidationResult $validationResult, ExtensionCollection $extensions, CodeCoverage $codeCoverage, Groups $groups, Groups $testdoxGroups, ExtensionCollection $listeners, Logging $logging, Php $php, PHPUnit $phpunit, TestSuiteCollection $testSuite)
+ {
+ $this->filename = $filename;
+ $this->validationResult = $validationResult;
+ $this->extensions = $extensions;
+ $this->codeCoverage = $codeCoverage;
+ $this->groups = $groups;
+ $this->testdoxGroups = $testdoxGroups;
+ $this->listeners = $listeners;
+ $this->logging = $logging;
+ $this->php = $php;
+ $this->phpunit = $phpunit;
+ $this->testSuite = $testSuite;
+ }
+
+ public function filename(): string
+ {
+ return $this->filename;
+ }
+
+ public function hasValidationErrors(): bool
+ {
+ return $this->validationResult->hasValidationErrors();
+ }
+
+ public function validationErrors(): string
+ {
+ return $this->validationResult->asString();
+ }
+
+ public function extensions(): ExtensionCollection
+ {
+ return $this->extensions;
+ }
+
+ public function codeCoverage(): CodeCoverage
+ {
+ return $this->codeCoverage;
+ }
+
+ public function groups(): Groups
+ {
+ return $this->groups;
+ }
+
+ public function testdoxGroups(): Groups
+ {
+ return $this->testdoxGroups;
+ }
+
+ public function listeners(): ExtensionCollection
+ {
+ return $this->listeners;
+ }
+
+ public function logging(): Logging
+ {
+ return $this->logging;
+ }
+
+ public function php(): Php
+ {
+ return $this->php;
+ }
+
+ public function phpunit(): PHPUnit
+ {
+ return $this->phpunit;
+ }
+
+ public function testSuite(): TestSuiteCollection
+ {
+ return $this->testSuite;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php
new file mode 100644
index 000000000..162b37e88
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Exception.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use RuntimeException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Exception extends RuntimeException implements \PHPUnit\Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php
new file mode 100644
index 000000000..1629603b7
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/Directory.php
@@ -0,0 +1,32 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Directory
+{
+ /**
+ * @var string
+ */
+ private $path;
+
+ public function __construct(string $path)
+ {
+ $this->path = $path;
+ }
+
+ public function path(): string
+ {
+ return $this->path;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php
new file mode 100644
index 000000000..c8ae59641
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollection.php
@@ -0,0 +1,62 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class DirectoryCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @var Directory[]
+ */
+ private $directories;
+
+ /**
+ * @param Directory[] $directories
+ */
+ public static function fromArray(array $directories): self
+ {
+ return new self(...$directories);
+ }
+
+ private function __construct(Directory ...$directories)
+ {
+ $this->directories = $directories;
+ }
+
+ /**
+ * @return Directory[]
+ */
+ public function asArray(): array
+ {
+ return $this->directories;
+ }
+
+ public function count(): int
+ {
+ return count($this->directories);
+ }
+
+ public function getIterator(): DirectoryCollectionIterator
+ {
+ return new DirectoryCollectionIterator($this);
+ }
+
+ public function isEmpty(): bool
+ {
+ return $this->count() === 0;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php
new file mode 100644
index 000000000..7f354eea5
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/DirectoryCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class DirectoryCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var Directory[]
+ */
+ private $directories;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(DirectoryCollection $directories)
+ {
+ $this->directories = $directories->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->directories);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): Directory
+ {
+ return $this->directories[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php
new file mode 100644
index 000000000..0af5000d1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/File.php
@@ -0,0 +1,32 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class File
+{
+ /**
+ * @var string
+ */
+ private $path;
+
+ public function __construct(string $path)
+ {
+ $this->path = $path;
+ }
+
+ public function path(): string
+ {
+ return $this->path;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php
new file mode 100644
index 000000000..bfc1e33e4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollection.php
@@ -0,0 +1,62 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class FileCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @var File[]
+ */
+ private $files;
+
+ /**
+ * @param File[] $files
+ */
+ public static function fromArray(array $files): self
+ {
+ return new self(...$files);
+ }
+
+ private function __construct(File ...$files)
+ {
+ $this->files = $files;
+ }
+
+ /**
+ * @return File[]
+ */
+ public function asArray(): array
+ {
+ return $this->files;
+ }
+
+ public function count(): int
+ {
+ return count($this->files);
+ }
+
+ public function getIterator(): FileCollectionIterator
+ {
+ return new FileCollectionIterator($this);
+ }
+
+ public function isEmpty(): bool
+ {
+ return $this->count() === 0;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php
new file mode 100644
index 000000000..d9bab1f8b
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Filesystem/FileCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class FileCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var File[]
+ */
+ private $files;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(FileCollection $files)
+ {
+ $this->files = $files->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->files);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): File
+ {
+ return $this->files[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php
new file mode 100644
index 000000000..cc77b1a3c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Generator.php
@@ -0,0 +1,73 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function str_replace;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Generator
+{
+ /**
+ * @var string
+ */
+ private const TEMPLATE = <<<'EOT'
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/{phpunit_version}/phpunit.xsd"
+ bootstrap="{bootstrap_script}"
+ cacheResultFile="{cache_directory}/test-results"
+ executionOrder="depends,defects"
+ forceCoversAnnotation="true"
+ beStrictAboutCoversAnnotation="true"
+ beStrictAboutOutputDuringTests="true"
+ beStrictAboutTodoAnnotatedTests="true"
+ convertDeprecationsToExceptions="true"
+ failOnRisky="true"
+ failOnWarning="true"
+ verbose="true">
+ <testsuites>
+ <testsuite name="default">
+ <directory>{tests_directory}</directory>
+ </testsuite>
+ </testsuites>
+
+ <coverage cacheDirectory="{cache_directory}/code-coverage"
+ processUncoveredFiles="true">
+ <include>
+ <directory suffix=".php">{src_directory}</directory>
+ </include>
+ </coverage>
+</phpunit>
+
+EOT;
+
+ public function generateDefaultConfiguration(string $phpunitVersion, string $bootstrapScript, string $testsDirectory, string $srcDirectory, string $cacheDirectory): string
+ {
+ return str_replace(
+ [
+ '{phpunit_version}',
+ '{bootstrap_script}',
+ '{tests_directory}',
+ '{src_directory}',
+ '{cache_directory}',
+ ],
+ [
+ $phpunitVersion,
+ $bootstrapScript,
+ $testsDirectory,
+ $srcDirectory,
+ $cacheDirectory,
+ ],
+ self::TEMPLATE
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php
new file mode 100644
index 000000000..e59844053
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Group.php
@@ -0,0 +1,32 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Group
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ public function __construct(string $name)
+ {
+ $this->name = $name;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php
new file mode 100644
index 000000000..2ad9fef68
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollection.php
@@ -0,0 +1,69 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class GroupCollection implements IteratorAggregate
+{
+ /**
+ * @var Group[]
+ */
+ private $groups;
+
+ /**
+ * @param Group[] $groups
+ */
+ public static function fromArray(array $groups): self
+ {
+ return new self(...$groups);
+ }
+
+ private function __construct(Group ...$groups)
+ {
+ $this->groups = $groups;
+ }
+
+ /**
+ * @return Group[]
+ */
+ public function asArray(): array
+ {
+ return $this->groups;
+ }
+
+ /**
+ * @return string[]
+ */
+ public function asArrayOfStrings(): array
+ {
+ $result = [];
+
+ foreach ($this->groups as $group) {
+ $result[] = $group->name();
+ }
+
+ return $result;
+ }
+
+ public function isEmpty(): bool
+ {
+ return empty($this->groups);
+ }
+
+ public function getIterator(): GroupCollectionIterator
+ {
+ return new GroupCollectionIterator($this);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php
new file mode 100644
index 000000000..0755fdac4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/GroupCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class GroupCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var Group[]
+ */
+ private $groups;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(GroupCollection $groups)
+ {
+ $this->groups = $groups->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->groups);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): Group
+ {
+ return $this->groups[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php
new file mode 100644
index 000000000..9004fe43b
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Group/Groups.php
@@ -0,0 +1,53 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Groups
+{
+ /**
+ * @var GroupCollection
+ */
+ private $include;
+
+ /**
+ * @var GroupCollection
+ */
+ private $exclude;
+
+ public function __construct(GroupCollection $include, GroupCollection $exclude)
+ {
+ $this->include = $include;
+ $this->exclude = $exclude;
+ }
+
+ public function hasInclude(): bool
+ {
+ return !$this->include->isEmpty();
+ }
+
+ public function include(): GroupCollection
+ {
+ return $this->include;
+ }
+
+ public function hasExclude(): bool
+ {
+ return !$this->exclude->isEmpty();
+ }
+
+ public function exclude(): GroupCollection
+ {
+ return $this->exclude;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php
new file mode 100644
index 000000000..d705a6056
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Loader.php
@@ -0,0 +1,1264 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use const DIRECTORY_SEPARATOR;
+use const PHP_VERSION;
+use function assert;
+use function defined;
+use function dirname;
+use function explode;
+use function is_file;
+use function is_numeric;
+use function preg_match;
+use function stream_resolve_include_path;
+use function strlen;
+use function strpos;
+use function strtolower;
+use function substr;
+use function trim;
+use DOMDocument;
+use DOMElement;
+use DOMNodeList;
+use DOMXPath;
+use PHPUnit\Runner\TestSuiteSorter;
+use PHPUnit\Runner\Version;
+use PHPUnit\TextUI\DefaultResultPrinter;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter\Directory as FilterDirectory;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Filter\DirectoryCollection as FilterDirectoryCollection;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Clover;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Cobertura;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Crap4j;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Html as CodeCoverageHtml;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Php as CodeCoveragePhp;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Text as CodeCoverageText;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\Report\Xml as CodeCoverageXml;
+use PHPUnit\TextUI\XmlConfiguration\Logging\Junit;
+use PHPUnit\TextUI\XmlConfiguration\Logging\Logging;
+use PHPUnit\TextUI\XmlConfiguration\Logging\TeamCity;
+use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Html as TestDoxHtml;
+use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Text as TestDoxText;
+use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Xml as TestDoxXml;
+use PHPUnit\TextUI\XmlConfiguration\Logging\Text;
+use PHPUnit\TextUI\XmlConfiguration\TestSuite as TestSuiteConfiguration;
+use PHPUnit\Util\TestDox\CliTestDoxPrinter;
+use PHPUnit\Util\VersionComparisonOperator;
+use PHPUnit\Util\Xml;
+use PHPUnit\Util\Xml\Exception as XmlException;
+use PHPUnit\Util\Xml\Loader as XmlLoader;
+use PHPUnit\Util\Xml\SchemaFinder;
+use PHPUnit\Util\Xml\Validator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Loader
+{
+ /**
+ * @throws Exception
+ */
+ public function load(string $filename): Configuration
+ {
+ try {
+ $document = (new XmlLoader)->loadFile($filename, false, true, true);
+ } catch (XmlException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+
+ $xpath = new DOMXPath($document);
+
+ try {
+ $xsdFilename = (new SchemaFinder)->find(Version::series());
+ } catch (XmlException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+
+ return new Configuration(
+ $filename,
+ (new Validator)->validate($document, $xsdFilename),
+ $this->extensions($filename, $xpath),
+ $this->codeCoverage($filename, $xpath, $document),
+ $this->groups($xpath),
+ $this->testdoxGroups($xpath),
+ $this->listeners($filename, $xpath),
+ $this->logging($filename, $xpath),
+ $this->php($filename, $xpath),
+ $this->phpunit($filename, $document),
+ $this->testSuite($filename, $xpath)
+ );
+ }
+
+ public function logging(string $filename, DOMXPath $xpath): Logging
+ {
+ if ($xpath->query('logging/log')->length !== 0) {
+ return $this->legacyLogging($filename, $xpath);
+ }
+
+ $junit = null;
+ $element = $this->element($xpath, 'logging/junit');
+
+ if ($element) {
+ $junit = new Junit(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ )
+ );
+ }
+
+ $text = null;
+ $element = $this->element($xpath, 'logging/text');
+
+ if ($element) {
+ $text = new Text(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ )
+ );
+ }
+
+ $teamCity = null;
+ $element = $this->element($xpath, 'logging/teamcity');
+
+ if ($element) {
+ $teamCity = new TeamCity(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ )
+ );
+ }
+
+ $testDoxHtml = null;
+ $element = $this->element($xpath, 'logging/testdoxHtml');
+
+ if ($element) {
+ $testDoxHtml = new TestDoxHtml(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ )
+ );
+ }
+
+ $testDoxText = null;
+ $element = $this->element($xpath, 'logging/testdoxText');
+
+ if ($element) {
+ $testDoxText = new TestDoxText(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ )
+ );
+ }
+
+ $testDoxXml = null;
+ $element = $this->element($xpath, 'logging/testdoxXml');
+
+ if ($element) {
+ $testDoxXml = new TestDoxXml(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ )
+ );
+ }
+
+ return new Logging(
+ $junit,
+ $text,
+ $teamCity,
+ $testDoxHtml,
+ $testDoxText,
+ $testDoxXml
+ );
+ }
+
+ public function legacyLogging(string $filename, DOMXPath $xpath): Logging
+ {
+ $junit = null;
+ $teamCity = null;
+ $testDoxHtml = null;
+ $testDoxText = null;
+ $testDoxXml = null;
+ $text = null;
+
+ foreach ($xpath->query('logging/log') as $log) {
+ assert($log instanceof DOMElement);
+
+ $type = (string) $log->getAttribute('type');
+ $target = (string) $log->getAttribute('target');
+
+ if (!$target) {
+ continue;
+ }
+
+ $target = $this->toAbsolutePath($filename, $target);
+
+ switch ($type) {
+ case 'plain':
+ $text = new Text(
+ new File($target)
+ );
+
+ break;
+
+ case 'junit':
+ $junit = new Junit(
+ new File($target)
+ );
+
+ break;
+
+ case 'teamcity':
+ $teamCity = new TeamCity(
+ new File($target)
+ );
+
+ break;
+
+ case 'testdox-html':
+ $testDoxHtml = new TestDoxHtml(
+ new File($target)
+ );
+
+ break;
+
+ case 'testdox-text':
+ $testDoxText = new TestDoxText(
+ new File($target)
+ );
+
+ break;
+
+ case 'testdox-xml':
+ $testDoxXml = new TestDoxXml(
+ new File($target)
+ );
+
+ break;
+ }
+ }
+
+ return new Logging(
+ $junit,
+ $text,
+ $teamCity,
+ $testDoxHtml,
+ $testDoxText,
+ $testDoxXml
+ );
+ }
+
+ private function extensions(string $filename, DOMXPath $xpath): ExtensionCollection
+ {
+ $extensions = [];
+
+ foreach ($xpath->query('extensions/extension') as $extension) {
+ assert($extension instanceof DOMElement);
+
+ $extensions[] = $this->getElementConfigurationParameters($filename, $extension);
+ }
+
+ return ExtensionCollection::fromArray($extensions);
+ }
+
+ private function getElementConfigurationParameters(string $filename, DOMElement $element): Extension
+ {
+ /** @psalm-var class-string $class */
+ $class = (string) $element->getAttribute('class');
+ $file = '';
+ $arguments = $this->getConfigurationArguments($filename, $element->childNodes);
+
+ if ($element->getAttribute('file')) {
+ $file = $this->toAbsolutePath(
+ $filename,
+ (string) $element->getAttribute('file'),
+ true
+ );
+ }
+
+ return new Extension($class, $file, $arguments);
+ }
+
+ private function toAbsolutePath(string $filename, string $path, bool $useIncludePath = false): string
+ {
+ $path = trim($path);
+
+ if (strpos($path, '/') === 0) {
+ return $path;
+ }
+
+ // Matches the following on Windows:
+ // - \\NetworkComputer\Path
+ // - \\.\D:
+ // - \\.\c:
+ // - C:\Windows
+ // - C:\windows
+ // - C:/windows
+ // - c:/windows
+ if (defined('PHP_WINDOWS_VERSION_BUILD') &&
+ ($path[0] === '\\' || (strlen($path) >= 3 && preg_match('#^[A-Z]\:[/\\\]#i', substr($path, 0, 3))))) {
+ return $path;
+ }
+
+ if (strpos($path, '://') !== false) {
+ return $path;
+ }
+
+ $file = dirname($filename) . DIRECTORY_SEPARATOR . $path;
+
+ if ($useIncludePath && !is_file($file)) {
+ $includePathFile = stream_resolve_include_path($path);
+
+ if ($includePathFile) {
+ $file = $includePathFile;
+ }
+ }
+
+ return $file;
+ }
+
+ private function getConfigurationArguments(string $filename, DOMNodeList $nodes): array
+ {
+ $arguments = [];
+
+ if ($nodes->length === 0) {
+ return $arguments;
+ }
+
+ foreach ($nodes as $node) {
+ if (!$node instanceof DOMElement) {
+ continue;
+ }
+
+ if ($node->tagName !== 'arguments') {
+ continue;
+ }
+
+ foreach ($node->childNodes as $argument) {
+ if (!$argument instanceof DOMElement) {
+ continue;
+ }
+
+ if ($argument->tagName === 'file' || $argument->tagName === 'directory') {
+ $arguments[] = $this->toAbsolutePath($filename, (string) $argument->textContent);
+ } else {
+ $arguments[] = Xml::xmlToVariable($argument);
+ }
+ }
+ }
+
+ return $arguments;
+ }
+
+ private function codeCoverage(string $filename, DOMXPath $xpath, DOMDocument $document): CodeCoverage
+ {
+ if ($xpath->query('filter/whitelist')->length !== 0) {
+ return $this->legacyCodeCoverage($filename, $xpath, $document);
+ }
+
+ $cacheDirectory = null;
+ $pathCoverage = false;
+ $includeUncoveredFiles = true;
+ $processUncoveredFiles = false;
+ $ignoreDeprecatedCodeUnits = false;
+ $disableCodeCoverageIgnore = false;
+
+ $element = $this->element($xpath, 'coverage');
+
+ if ($element) {
+ $cacheDirectory = $this->getStringAttribute($element, 'cacheDirectory');
+
+ if ($cacheDirectory !== null) {
+ $cacheDirectory = new Directory(
+ $this->toAbsolutePath($filename, $cacheDirectory)
+ );
+ }
+
+ $pathCoverage = $this->getBooleanAttribute(
+ $element,
+ 'pathCoverage',
+ false
+ );
+
+ $includeUncoveredFiles = $this->getBooleanAttribute(
+ $element,
+ 'includeUncoveredFiles',
+ true
+ );
+
+ $processUncoveredFiles = $this->getBooleanAttribute(
+ $element,
+ 'processUncoveredFiles',
+ false
+ );
+
+ $ignoreDeprecatedCodeUnits = $this->getBooleanAttribute(
+ $element,
+ 'ignoreDeprecatedCodeUnits',
+ false
+ );
+
+ $disableCodeCoverageIgnore = $this->getBooleanAttribute(
+ $element,
+ 'disableCodeCoverageIgnore',
+ false
+ );
+ }
+
+ $clover = null;
+ $element = $this->element($xpath, 'coverage/report/clover');
+
+ if ($element) {
+ $clover = new Clover(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ )
+ );
+ }
+
+ $cobertura = null;
+ $element = $this->element($xpath, 'coverage/report/cobertura');
+
+ if ($element) {
+ $cobertura = new Cobertura(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ )
+ );
+ }
+
+ $crap4j = null;
+ $element = $this->element($xpath, 'coverage/report/crap4j');
+
+ if ($element) {
+ $crap4j = new Crap4j(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ ),
+ $this->getIntegerAttribute($element, 'threshold', 30)
+ );
+ }
+
+ $html = null;
+ $element = $this->element($xpath, 'coverage/report/html');
+
+ if ($element) {
+ $html = new CodeCoverageHtml(
+ new Directory(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputDirectory')
+ )
+ ),
+ $this->getIntegerAttribute($element, 'lowUpperBound', 50),
+ $this->getIntegerAttribute($element, 'highLowerBound', 90)
+ );
+ }
+
+ $php = null;
+ $element = $this->element($xpath, 'coverage/report/php');
+
+ if ($element) {
+ $php = new CodeCoveragePhp(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ )
+ );
+ }
+
+ $text = null;
+ $element = $this->element($xpath, 'coverage/report/text');
+
+ if ($element) {
+ $text = new CodeCoverageText(
+ new File(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputFile')
+ )
+ ),
+ $this->getBooleanAttribute($element, 'showUncoveredFiles', false),
+ $this->getBooleanAttribute($element, 'showOnlySummary', false)
+ );
+ }
+
+ $xml = null;
+ $element = $this->element($xpath, 'coverage/report/xml');
+
+ if ($element) {
+ $xml = new CodeCoverageXml(
+ new Directory(
+ $this->toAbsolutePath(
+ $filename,
+ (string) $this->getStringAttribute($element, 'outputDirectory')
+ )
+ )
+ );
+ }
+
+ return new CodeCoverage(
+ $cacheDirectory,
+ $this->readFilterDirectories($filename, $xpath, 'coverage/include/directory'),
+ $this->readFilterFiles($filename, $xpath, 'coverage/include/file'),
+ $this->readFilterDirectories($filename, $xpath, 'coverage/exclude/directory'),
+ $this->readFilterFiles($filename, $xpath, 'coverage/exclude/file'),
+ $pathCoverage,
+ $includeUncoveredFiles,
+ $processUncoveredFiles,
+ $ignoreDeprecatedCodeUnits,
+ $disableCodeCoverageIgnore,
+ $clover,
+ $cobertura,
+ $crap4j,
+ $html,
+ $php,
+ $text,
+ $xml
+ );
+ }
+
+ /**
+ * @deprecated
+ */
+ private function legacyCodeCoverage(string $filename, DOMXPath $xpath, DOMDocument $document): CodeCoverage
+ {
+ $ignoreDeprecatedCodeUnits = $this->getBooleanAttribute(
+ $document->documentElement,
+ 'ignoreDeprecatedCodeUnitsFromCodeCoverage',
+ false
+ );
+
+ $disableCodeCoverageIgnore = $this->getBooleanAttribute(
+ $document->documentElement,
+ 'disableCodeCoverageIgnore',
+ false
+ );
+
+ $includeUncoveredFiles = true;
+ $processUncoveredFiles = false;
+
+ $element = $this->element($xpath, 'filter/whitelist');
+
+ if ($element) {
+ if ($element->hasAttribute('addUncoveredFilesFromWhitelist')) {
+ $includeUncoveredFiles = (bool) $this->getBoolean(
+ (string) $element->getAttribute('addUncoveredFilesFromWhitelist'),
+ true
+ );
+ }
+
+ if ($element->hasAttribute('processUncoveredFilesFromWhitelist')) {
+ $processUncoveredFiles = (bool) $this->getBoolean(
+ (string) $element->getAttribute('processUncoveredFilesFromWhitelist'),
+ false
+ );
+ }
+ }
+
+ $clover = null;
+ $cobertura = null;
+ $crap4j = null;
+ $html = null;
+ $php = null;
+ $text = null;
+ $xml = null;
+
+ foreach ($xpath->query('logging/log') as $log) {
+ assert($log instanceof DOMElement);
+
+ $type = (string) $log->getAttribute('type');
+ $target = (string) $log->getAttribute('target');
+
+ if (!$target) {
+ continue;
+ }
+
+ $target = $this->toAbsolutePath($filename, $target);
+
+ switch ($type) {
+ case 'coverage-clover':
+ $clover = new Clover(
+ new File($target)
+ );
+
+ break;
+
+ case 'coverage-cobertura':
+ $cobertura = new Cobertura(
+ new File($target)
+ );
+
+ break;
+
+ case 'coverage-crap4j':
+ $crap4j = new Crap4j(
+ new File($target),
+ $this->getIntegerAttribute($log, 'threshold', 30)
+ );
+
+ break;
+
+ case 'coverage-html':
+ $html = new CodeCoverageHtml(
+ new Directory($target),
+ $this->getIntegerAttribute($log, 'lowUpperBound', 50),
+ $this->getIntegerAttribute($log, 'highLowerBound', 90)
+ );
+
+ break;
+
+ case 'coverage-php':
+ $php = new CodeCoveragePhp(
+ new File($target)
+ );
+
+ break;
+
+ case 'coverage-text':
+ $text = new CodeCoverageText(
+ new File($target),
+ $this->getBooleanAttribute($log, 'showUncoveredFiles', false),
+ $this->getBooleanAttribute($log, 'showOnlySummary', false)
+ );
+
+ break;
+
+ case 'coverage-xml':
+ $xml = new CodeCoverageXml(
+ new Directory($target)
+ );
+
+ break;
+ }
+ }
+
+ return new CodeCoverage(
+ null,
+ $this->readFilterDirectories($filename, $xpath, 'filter/whitelist/directory'),
+ $this->readFilterFiles($filename, $xpath, 'filter/whitelist/file'),
+ $this->readFilterDirectories($filename, $xpath, 'filter/whitelist/exclude/directory'),
+ $this->readFilterFiles($filename, $xpath, 'filter/whitelist/exclude/file'),
+ false,
+ $includeUncoveredFiles,
+ $processUncoveredFiles,
+ $ignoreDeprecatedCodeUnits,
+ $disableCodeCoverageIgnore,
+ $clover,
+ $cobertura,
+ $crap4j,
+ $html,
+ $php,
+ $text,
+ $xml
+ );
+ }
+
+ /**
+ * If $value is 'false' or 'true', this returns the value that $value represents.
+ * Otherwise, returns $default, which may be a string in rare cases.
+ *
+ * @see \PHPUnit\TextUI\XmlConfigurationTest::testPHPConfigurationIsReadCorrectly
+ *
+ * @param bool|string $default
+ *
+ * @return bool|string
+ */
+ private function getBoolean(string $value, $default)
+ {
+ if (strtolower($value) === 'false') {
+ return false;
+ }
+
+ if (strtolower($value) === 'true') {
+ return true;
+ }
+
+ return $default;
+ }
+
+ private function readFilterDirectories(string $filename, DOMXPath $xpath, string $query): FilterDirectoryCollection
+ {
+ $directories = [];
+
+ foreach ($xpath->query($query) as $directoryNode) {
+ assert($directoryNode instanceof DOMElement);
+
+ $directoryPath = (string) $directoryNode->textContent;
+
+ if (!$directoryPath) {
+ continue;
+ }
+
+ $directories[] = new FilterDirectory(
+ $this->toAbsolutePath($filename, $directoryPath),
+ $directoryNode->hasAttribute('prefix') ? (string) $directoryNode->getAttribute('prefix') : '',
+ $directoryNode->hasAttribute('suffix') ? (string) $directoryNode->getAttribute('suffix') : '.php',
+ $directoryNode->hasAttribute('group') ? (string) $directoryNode->getAttribute('group') : 'DEFAULT'
+ );
+ }
+
+ return FilterDirectoryCollection::fromArray($directories);
+ }
+
+ private function readFilterFiles(string $filename, DOMXPath $xpath, string $query): FileCollection
+ {
+ $files = [];
+
+ foreach ($xpath->query($query) as $file) {
+ $filePath = (string) $file->textContent;
+
+ if ($filePath) {
+ $files[] = new File($this->toAbsolutePath($filename, $filePath));
+ }
+ }
+
+ return FileCollection::fromArray($files);
+ }
+
+ private function groups(DOMXPath $xpath): Groups
+ {
+ return $this->parseGroupConfiguration($xpath, 'groups');
+ }
+
+ private function testdoxGroups(DOMXPath $xpath): Groups
+ {
+ return $this->parseGroupConfiguration($xpath, 'testdoxGroups');
+ }
+
+ private function parseGroupConfiguration(DOMXPath $xpath, string $root): Groups
+ {
+ $include = [];
+ $exclude = [];
+
+ foreach ($xpath->query($root . '/include/group') as $group) {
+ $include[] = new Group((string) $group->textContent);
+ }
+
+ foreach ($xpath->query($root . '/exclude/group') as $group) {
+ $exclude[] = new Group((string) $group->textContent);
+ }
+
+ return new Groups(
+ GroupCollection::fromArray($include),
+ GroupCollection::fromArray($exclude)
+ );
+ }
+
+ private function listeners(string $filename, DOMXPath $xpath): ExtensionCollection
+ {
+ $listeners = [];
+
+ foreach ($xpath->query('listeners/listener') as $listener) {
+ assert($listener instanceof DOMElement);
+
+ $listeners[] = $this->getElementConfigurationParameters($filename, $listener);
+ }
+
+ return ExtensionCollection::fromArray($listeners);
+ }
+
+ private function getBooleanAttribute(DOMElement $element, string $attribute, bool $default): bool
+ {
+ if (!$element->hasAttribute($attribute)) {
+ return $default;
+ }
+
+ return (bool) $this->getBoolean(
+ (string) $element->getAttribute($attribute),
+ false
+ );
+ }
+
+ private function getIntegerAttribute(DOMElement $element, string $attribute, int $default): int
+ {
+ if (!$element->hasAttribute($attribute)) {
+ return $default;
+ }
+
+ return $this->getInteger(
+ (string) $element->getAttribute($attribute),
+ $default
+ );
+ }
+
+ private function getStringAttribute(DOMElement $element, string $attribute): ?string
+ {
+ if (!$element->hasAttribute($attribute)) {
+ return null;
+ }
+
+ return (string) $element->getAttribute($attribute);
+ }
+
+ private function getInteger(string $value, int $default): int
+ {
+ if (is_numeric($value)) {
+ return (int) $value;
+ }
+
+ return $default;
+ }
+
+ private function php(string $filename, DOMXPath $xpath): Php
+ {
+ $includePaths = [];
+
+ foreach ($xpath->query('php/includePath') as $includePath) {
+ $path = (string) $includePath->textContent;
+
+ if ($path) {
+ $includePaths[] = new Directory($this->toAbsolutePath($filename, $path));
+ }
+ }
+
+ $iniSettings = [];
+
+ foreach ($xpath->query('php/ini') as $ini) {
+ assert($ini instanceof DOMElement);
+
+ $iniSettings[] = new IniSetting(
+ (string) $ini->getAttribute('name'),
+ (string) $ini->getAttribute('value')
+ );
+ }
+
+ $constants = [];
+
+ foreach ($xpath->query('php/const') as $const) {
+ assert($const instanceof DOMElement);
+
+ $value = (string) $const->getAttribute('value');
+
+ $constants[] = new Constant(
+ (string) $const->getAttribute('name'),
+ $this->getBoolean($value, $value)
+ );
+ }
+
+ $variables = [
+ 'var' => [],
+ 'env' => [],
+ 'post' => [],
+ 'get' => [],
+ 'cookie' => [],
+ 'server' => [],
+ 'files' => [],
+ 'request' => [],
+ ];
+
+ foreach (['var', 'env', 'post', 'get', 'cookie', 'server', 'files', 'request'] as $array) {
+ foreach ($xpath->query('php/' . $array) as $var) {
+ assert($var instanceof DOMElement);
+
+ $name = (string) $var->getAttribute('name');
+ $value = (string) $var->getAttribute('value');
+ $force = false;
+ $verbatim = false;
+
+ if ($var->hasAttribute('force')) {
+ $force = (bool) $this->getBoolean($var->getAttribute('force'), false);
+ }
+
+ if ($var->hasAttribute('verbatim')) {
+ $verbatim = $this->getBoolean($var->getAttribute('verbatim'), false);
+ }
+
+ if (!$verbatim) {
+ $value = $this->getBoolean($value, $value);
+ }
+
+ $variables[$array][] = new Variable($name, $value, $force);
+ }
+ }
+
+ return new Php(
+ DirectoryCollection::fromArray($includePaths),
+ IniSettingCollection::fromArray($iniSettings),
+ ConstantCollection::fromArray($constants),
+ VariableCollection::fromArray($variables['var']),
+ VariableCollection::fromArray($variables['env']),
+ VariableCollection::fromArray($variables['post']),
+ VariableCollection::fromArray($variables['get']),
+ VariableCollection::fromArray($variables['cookie']),
+ VariableCollection::fromArray($variables['server']),
+ VariableCollection::fromArray($variables['files']),
+ VariableCollection::fromArray($variables['request']),
+ );
+ }
+
+ private function phpunit(string $filename, DOMDocument $document): PHPUnit
+ {
+ $executionOrder = TestSuiteSorter::ORDER_DEFAULT;
+ $defectsFirst = false;
+ $resolveDependencies = $this->getBooleanAttribute($document->documentElement, 'resolveDependencies', true);
+
+ if ($document->documentElement->hasAttribute('executionOrder')) {
+ foreach (explode(',', $document->documentElement->getAttribute('executionOrder')) as $order) {
+ switch ($order) {
+ case 'default':
+ $executionOrder = TestSuiteSorter::ORDER_DEFAULT;
+ $defectsFirst = false;
+ $resolveDependencies = true;
+
+ break;
+
+ case 'depends':
+ $resolveDependencies = true;
+
+ break;
+
+ case 'no-depends':
+ $resolveDependencies = false;
+
+ break;
+
+ case 'defects':
+ $defectsFirst = true;
+
+ break;
+
+ case 'duration':
+ $executionOrder = TestSuiteSorter::ORDER_DURATION;
+
+ break;
+
+ case 'random':
+ $executionOrder = TestSuiteSorter::ORDER_RANDOMIZED;
+
+ break;
+
+ case 'reverse':
+ $executionOrder = TestSuiteSorter::ORDER_REVERSED;
+
+ break;
+
+ case 'size':
+ $executionOrder = TestSuiteSorter::ORDER_SIZE;
+
+ break;
+ }
+ }
+ }
+
+ $printerClass = $this->getStringAttribute($document->documentElement, 'printerClass');
+ $testdox = $this->getBooleanAttribute($document->documentElement, 'testdox', false);
+ $conflictBetweenPrinterClassAndTestdox = false;
+
+ if ($testdox) {
+ if ($printerClass !== null) {
+ $conflictBetweenPrinterClassAndTestdox = true;
+ }
+
+ $printerClass = CliTestDoxPrinter::class;
+ }
+
+ $cacheResultFile = $this->getStringAttribute($document->documentElement, 'cacheResultFile');
+
+ if ($cacheResultFile !== null) {
+ $cacheResultFile = $this->toAbsolutePath($filename, $cacheResultFile);
+ }
+
+ $bootstrap = $this->getStringAttribute($document->documentElement, 'bootstrap');
+
+ if ($bootstrap !== null) {
+ $bootstrap = $this->toAbsolutePath($filename, $bootstrap);
+ }
+
+ $extensionsDirectory = $this->getStringAttribute($document->documentElement, 'extensionsDirectory');
+
+ if ($extensionsDirectory !== null) {
+ $extensionsDirectory = $this->toAbsolutePath($filename, $extensionsDirectory);
+ }
+
+ $testSuiteLoaderFile = $this->getStringAttribute($document->documentElement, 'testSuiteLoaderFile');
+
+ if ($testSuiteLoaderFile !== null) {
+ $testSuiteLoaderFile = $this->toAbsolutePath($filename, $testSuiteLoaderFile);
+ }
+
+ $printerFile = $this->getStringAttribute($document->documentElement, 'printerFile');
+
+ if ($printerFile !== null) {
+ $printerFile = $this->toAbsolutePath($filename, $printerFile);
+ }
+
+ return new PHPUnit(
+ $this->getBooleanAttribute($document->documentElement, 'cacheResult', true),
+ $cacheResultFile,
+ $this->getColumns($document),
+ $this->getColors($document),
+ $this->getBooleanAttribute($document->documentElement, 'stderr', false),
+ $this->getBooleanAttribute($document->documentElement, 'noInteraction', false),
+ $this->getBooleanAttribute($document->documentElement, 'verbose', false),
+ $this->getBooleanAttribute($document->documentElement, 'reverseDefectList', false),
+ $this->getBooleanAttribute($document->documentElement, 'convertDeprecationsToExceptions', false),
+ $this->getBooleanAttribute($document->documentElement, 'convertErrorsToExceptions', true),
+ $this->getBooleanAttribute($document->documentElement, 'convertNoticesToExceptions', true),
+ $this->getBooleanAttribute($document->documentElement, 'convertWarningsToExceptions', true),
+ $this->getBooleanAttribute($document->documentElement, 'forceCoversAnnotation', false),
+ $bootstrap,
+ $this->getBooleanAttribute($document->documentElement, 'processIsolation', false),
+ $this->getBooleanAttribute($document->documentElement, 'failOnEmptyTestSuite', false),
+ $this->getBooleanAttribute($document->documentElement, 'failOnIncomplete', false),
+ $this->getBooleanAttribute($document->documentElement, 'failOnRisky', false),
+ $this->getBooleanAttribute($document->documentElement, 'failOnSkipped', false),
+ $this->getBooleanAttribute($document->documentElement, 'failOnWarning', false),
+ $this->getBooleanAttribute($document->documentElement, 'stopOnDefect', false),
+ $this->getBooleanAttribute($document->documentElement, 'stopOnError', false),
+ $this->getBooleanAttribute($document->documentElement, 'stopOnFailure', false),
+ $this->getBooleanAttribute($document->documentElement, 'stopOnWarning', false),
+ $this->getBooleanAttribute($document->documentElement, 'stopOnIncomplete', false),
+ $this->getBooleanAttribute($document->documentElement, 'stopOnRisky', false),
+ $this->getBooleanAttribute($document->documentElement, 'stopOnSkipped', false),
+ $extensionsDirectory,
+ $this->getStringAttribute($document->documentElement, 'testSuiteLoaderClass'),
+ $testSuiteLoaderFile,
+ $printerClass,
+ $printerFile,
+ $this->getBooleanAttribute($document->documentElement, 'beStrictAboutChangesToGlobalState', false),
+ $this->getBooleanAttribute($document->documentElement, 'beStrictAboutOutputDuringTests', false),
+ $this->getBooleanAttribute($document->documentElement, 'beStrictAboutResourceUsageDuringSmallTests', false),
+ $this->getBooleanAttribute($document->documentElement, 'beStrictAboutTestsThatDoNotTestAnything', true),
+ $this->getBooleanAttribute($document->documentElement, 'beStrictAboutTodoAnnotatedTests', false),
+ $this->getBooleanAttribute($document->documentElement, 'beStrictAboutCoversAnnotation', false),
+ $this->getBooleanAttribute($document->documentElement, 'enforceTimeLimit', false),
+ $this->getIntegerAttribute($document->documentElement, 'defaultTimeLimit', 1),
+ $this->getIntegerAttribute($document->documentElement, 'timeoutForSmallTests', 1),
+ $this->getIntegerAttribute($document->documentElement, 'timeoutForMediumTests', 10),
+ $this->getIntegerAttribute($document->documentElement, 'timeoutForLargeTests', 60),
+ $this->getStringAttribute($document->documentElement, 'defaultTestSuite'),
+ $executionOrder,
+ $resolveDependencies,
+ $defectsFirst,
+ $this->getBooleanAttribute($document->documentElement, 'backupGlobals', false),
+ $this->getBooleanAttribute($document->documentElement, 'backupStaticAttributes', false),
+ $this->getBooleanAttribute($document->documentElement, 'registerMockObjectsFromTestArgumentsRecursively', false),
+ $conflictBetweenPrinterClassAndTestdox
+ );
+ }
+
+ private function getColors(DOMDocument $document): string
+ {
+ $colors = DefaultResultPrinter::COLOR_DEFAULT;
+
+ if ($document->documentElement->hasAttribute('colors')) {
+ /* only allow boolean for compatibility with previous versions
+ 'always' only allowed from command line */
+ if ($this->getBoolean($document->documentElement->getAttribute('colors'), false)) {
+ $colors = DefaultResultPrinter::COLOR_AUTO;
+ } else {
+ $colors = DefaultResultPrinter::COLOR_NEVER;
+ }
+ }
+
+ return $colors;
+ }
+
+ /**
+ * @return int|string
+ */
+ private function getColumns(DOMDocument $document)
+ {
+ $columns = 80;
+
+ if ($document->documentElement->hasAttribute('columns')) {
+ $columns = (string) $document->documentElement->getAttribute('columns');
+
+ if ($columns !== 'max') {
+ $columns = $this->getInteger($columns, 80);
+ }
+ }
+
+ return $columns;
+ }
+
+ private function testSuite(string $filename, DOMXPath $xpath): TestSuiteCollection
+ {
+ $testSuites = [];
+
+ foreach ($this->getTestSuiteElements($xpath) as $element) {
+ $exclude = [];
+
+ foreach ($element->getElementsByTagName('exclude') as $excludeNode) {
+ $excludeFile = (string) $excludeNode->textContent;
+
+ if ($excludeFile) {
+ $exclude[] = new File($this->toAbsolutePath($filename, $excludeFile));
+ }
+ }
+
+ $directories = [];
+
+ foreach ($element->getElementsByTagName('directory') as $directoryNode) {
+ assert($directoryNode instanceof DOMElement);
+
+ $directory = (string) $directoryNode->textContent;
+
+ if (empty($directory)) {
+ continue;
+ }
+
+ $prefix = '';
+
+ if ($directoryNode->hasAttribute('prefix')) {
+ $prefix = (string) $directoryNode->getAttribute('prefix');
+ }
+
+ $suffix = 'Test.php';
+
+ if ($directoryNode->hasAttribute('suffix')) {
+ $suffix = (string) $directoryNode->getAttribute('suffix');
+ }
+
+ $phpVersion = PHP_VERSION;
+
+ if ($directoryNode->hasAttribute('phpVersion')) {
+ $phpVersion = (string) $directoryNode->getAttribute('phpVersion');
+ }
+
+ $phpVersionOperator = new VersionComparisonOperator('>=');
+
+ if ($directoryNode->hasAttribute('phpVersionOperator')) {
+ $phpVersionOperator = new VersionComparisonOperator((string) $directoryNode->getAttribute('phpVersionOperator'));
+ }
+
+ $directories[] = new TestDirectory(
+ $this->toAbsolutePath($filename, $directory),
+ $prefix,
+ $suffix,
+ $phpVersion,
+ $phpVersionOperator
+ );
+ }
+
+ $files = [];
+
+ foreach ($element->getElementsByTagName('file') as $fileNode) {
+ assert($fileNode instanceof DOMElement);
+
+ $file = (string) $fileNode->textContent;
+
+ if (empty($file)) {
+ continue;
+ }
+
+ $phpVersion = PHP_VERSION;
+
+ if ($fileNode->hasAttribute('phpVersion')) {
+ $phpVersion = (string) $fileNode->getAttribute('phpVersion');
+ }
+
+ $phpVersionOperator = new VersionComparisonOperator('>=');
+
+ if ($fileNode->hasAttribute('phpVersionOperator')) {
+ $phpVersionOperator = new VersionComparisonOperator((string) $fileNode->getAttribute('phpVersionOperator'));
+ }
+
+ $files[] = new TestFile(
+ $this->toAbsolutePath($filename, $file),
+ $phpVersion,
+ $phpVersionOperator
+ );
+ }
+
+ $testSuites[] = new TestSuiteConfiguration(
+ (string) $element->getAttribute('name'),
+ TestDirectoryCollection::fromArray($directories),
+ TestFileCollection::fromArray($files),
+ FileCollection::fromArray($exclude)
+ );
+ }
+
+ return TestSuiteCollection::fromArray($testSuites);
+ }
+
+ /**
+ * @return DOMElement[]
+ */
+ private function getTestSuiteElements(DOMXPath $xpath): array
+ {
+ /** @var DOMElement[] $elements */
+ $elements = [];
+
+ $testSuiteNodes = $xpath->query('testsuites/testsuite');
+
+ if ($testSuiteNodes->length === 0) {
+ $testSuiteNodes = $xpath->query('testsuite');
+ }
+
+ if ($testSuiteNodes->length === 1) {
+ $element = $testSuiteNodes->item(0);
+
+ assert($element instanceof DOMElement);
+
+ $elements[] = $element;
+ } else {
+ foreach ($testSuiteNodes as $testSuiteNode) {
+ assert($testSuiteNode instanceof DOMElement);
+
+ $elements[] = $testSuiteNode;
+ }
+ }
+
+ return $elements;
+ }
+
+ private function element(DOMXPath $xpath, string $element): ?DOMElement
+ {
+ $nodes = $xpath->query($element);
+
+ if ($nodes->length === 1) {
+ $node = $nodes->item(0);
+
+ assert($node instanceof DOMElement);
+
+ return $node;
+ }
+
+ return null;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php
new file mode 100644
index 000000000..efde962d9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Junit.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\Logging;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Junit
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ public function __construct(File $target)
+ {
+ $this->target = $target;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php
new file mode 100644
index 000000000..cdceced50
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Logging.php
@@ -0,0 +1,146 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\Logging;
+
+use PHPUnit\TextUI\XmlConfiguration\Exception;
+use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Html as TestDoxHtml;
+use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Text as TestDoxText;
+use PHPUnit\TextUI\XmlConfiguration\Logging\TestDox\Xml as TestDoxXml;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Logging
+{
+ /**
+ * @var ?Junit
+ */
+ private $junit;
+
+ /**
+ * @var ?Text
+ */
+ private $text;
+
+ /**
+ * @var ?TeamCity
+ */
+ private $teamCity;
+
+ /**
+ * @var ?TestDoxHtml
+ */
+ private $testDoxHtml;
+
+ /**
+ * @var ?TestDoxText
+ */
+ private $testDoxText;
+
+ /**
+ * @var ?TestDoxXml
+ */
+ private $testDoxXml;
+
+ public function __construct(?Junit $junit, ?Text $text, ?TeamCity $teamCity, ?TestDoxHtml $testDoxHtml, ?TestDoxText $testDoxText, ?TestDoxXml $testDoxXml)
+ {
+ $this->junit = $junit;
+ $this->text = $text;
+ $this->teamCity = $teamCity;
+ $this->testDoxHtml = $testDoxHtml;
+ $this->testDoxText = $testDoxText;
+ $this->testDoxXml = $testDoxXml;
+ }
+
+ public function hasJunit(): bool
+ {
+ return $this->junit !== null;
+ }
+
+ public function junit(): Junit
+ {
+ if ($this->junit === null) {
+ throw new Exception('Logger "JUnit XML" is not configured');
+ }
+
+ return $this->junit;
+ }
+
+ public function hasText(): bool
+ {
+ return $this->text !== null;
+ }
+
+ public function text(): Text
+ {
+ if ($this->text === null) {
+ throw new Exception('Logger "Text" is not configured');
+ }
+
+ return $this->text;
+ }
+
+ public function hasTeamCity(): bool
+ {
+ return $this->teamCity !== null;
+ }
+
+ public function teamCity(): TeamCity
+ {
+ if ($this->teamCity === null) {
+ throw new Exception('Logger "Team City" is not configured');
+ }
+
+ return $this->teamCity;
+ }
+
+ public function hasTestDoxHtml(): bool
+ {
+ return $this->testDoxHtml !== null;
+ }
+
+ public function testDoxHtml(): TestDoxHtml
+ {
+ if ($this->testDoxHtml === null) {
+ throw new Exception('Logger "TestDox HTML" is not configured');
+ }
+
+ return $this->testDoxHtml;
+ }
+
+ public function hasTestDoxText(): bool
+ {
+ return $this->testDoxText !== null;
+ }
+
+ public function testDoxText(): TestDoxText
+ {
+ if ($this->testDoxText === null) {
+ throw new Exception('Logger "TestDox Text" is not configured');
+ }
+
+ return $this->testDoxText;
+ }
+
+ public function hasTestDoxXml(): bool
+ {
+ return $this->testDoxXml !== null;
+ }
+
+ public function testDoxXml(): TestDoxXml
+ {
+ if ($this->testDoxXml === null) {
+ throw new Exception('Logger "TestDox XML" is not configured');
+ }
+
+ return $this->testDoxXml;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php
new file mode 100644
index 000000000..03b2b56a9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TeamCity.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\Logging;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class TeamCity
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ public function __construct(File $target)
+ {
+ $this->target = $target;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php
new file mode 100644
index 000000000..310040b2e
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Html.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\Logging\TestDox;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Html
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ public function __construct(File $target)
+ {
+ $this->target = $target;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php
new file mode 100644
index 000000000..59d37e9b2
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Text.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\Logging\TestDox;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Text
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ public function __construct(File $target)
+ {
+ $this->target = $target;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php
new file mode 100644
index 000000000..b8c1576c1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/TestDox/Xml.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\Logging\TestDox;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Xml
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ public function __construct(File $target)
+ {
+ $this->target = $target;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php
new file mode 100644
index 000000000..2769ec967
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Logging/Text.php
@@ -0,0 +1,34 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration\Logging;
+
+use PHPUnit\TextUI\XmlConfiguration\File;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Text
+{
+ /**
+ * @var File
+ */
+ private $target;
+
+ public function __construct(File $target)
+ {
+ $this->target = $target;
+ }
+
+ public function target(): File
+ {
+ return $this->target;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php
new file mode 100644
index 000000000..abef49f10
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilder.php
@@ -0,0 +1,73 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function array_key_exists;
+use function sprintf;
+use function version_compare;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MigrationBuilder
+{
+ private const AVAILABLE_MIGRATIONS = [
+ '8.5' => [
+ RemoveLogTypes::class,
+ ],
+
+ '9.2' => [
+ RemoveCacheTokensAttribute::class,
+ IntroduceCoverageElement::class,
+ MoveAttributesFromRootToCoverage::class,
+ MoveAttributesFromFilterWhitelistToCoverage::class,
+ MoveWhitelistDirectoriesToCoverage::class,
+ MoveWhitelistExcludesToCoverage::class,
+ RemoveEmptyFilter::class,
+ CoverageCloverToReport::class,
+ CoverageCrap4jToReport::class,
+ CoverageHtmlToReport::class,
+ CoveragePhpToReport::class,
+ CoverageTextToReport::class,
+ CoverageXmlToReport::class,
+ ConvertLogTypes::class,
+ UpdateSchemaLocationTo93::class,
+ ],
+ ];
+
+ /**
+ * @throws MigrationBuilderException
+ */
+ public function build(string $fromVersion): array
+ {
+ if (!array_key_exists($fromVersion, self::AVAILABLE_MIGRATIONS)) {
+ throw new MigrationBuilderException(
+ sprintf(
+ 'Migration from schema version %s is not supported',
+ $fromVersion
+ )
+ );
+ }
+
+ $stack = [];
+
+ foreach (self::AVAILABLE_MIGRATIONS as $version => $migrations) {
+ if (version_compare($version, $fromVersion, '<')) {
+ continue;
+ }
+
+ foreach ($migrations as $migration) {
+ $stack[] = new $migration;
+ }
+ }
+
+ return $stack;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php
new file mode 100644
index 000000000..3d3c767af
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationBuilderException.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use RuntimeException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MigrationBuilderException extends RuntimeException implements \PHPUnit\Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php
new file mode 100644
index 000000000..f92b2db30
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/MigrationException.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use RuntimeException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MigrationException extends RuntimeException implements \PHPUnit\Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php
new file mode 100644
index 000000000..697bbe082
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/ConvertLogTypes.php
@@ -0,0 +1,53 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMDocument;
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ConvertLogTypes implements Migration
+{
+ public function migrate(DOMDocument $document): void
+ {
+ $logging = $document->getElementsByTagName('logging')->item(0);
+
+ if (!$logging instanceof DOMElement) {
+ return;
+ }
+ $types = [
+ 'junit' => 'junit',
+ 'teamcity' => 'teamcity',
+ 'testdox-html' => 'testdoxHtml',
+ 'testdox-text' => 'testdoxText',
+ 'testdox-xml' => 'testdoxXml',
+ 'plain' => 'text',
+ ];
+
+ $logNodes = [];
+
+ foreach ($logging->getElementsByTagName('log') as $logNode) {
+ if (!isset($types[$logNode->getAttribute('type')])) {
+ continue;
+ }
+
+ $logNodes[] = $logNode;
+ }
+
+ foreach ($logNodes as $oldNode) {
+ $newLogNode = $document->createElement($types[$oldNode->getAttribute('type')]);
+ $newLogNode->setAttribute('outputFile', $oldNode->getAttribute('target'));
+
+ $logging->replaceChild($newLogNode, $oldNode);
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php
new file mode 100644
index 000000000..5f1522b9c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCloverToReport.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class CoverageCloverToReport extends LogToReportMigration
+{
+ protected function forType(): string
+ {
+ return 'coverage-clover';
+ }
+
+ protected function toReportFormat(DOMElement $logNode): DOMElement
+ {
+ $clover = $logNode->ownerDocument->createElement('clover');
+ $clover->setAttribute('outputFile', $logNode->getAttribute('target'));
+
+ return $clover;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php
new file mode 100644
index 000000000..afbaaec18
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageCrap4jToReport.php
@@ -0,0 +1,33 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class CoverageCrap4jToReport extends LogToReportMigration
+{
+ protected function forType(): string
+ {
+ return 'coverage-crap4j';
+ }
+
+ protected function toReportFormat(DOMElement $logNode): DOMElement
+ {
+ $crap4j = $logNode->ownerDocument->createElement('crap4j');
+ $crap4j->setAttribute('outputFile', $logNode->getAttribute('target'));
+
+ $this->migrateAttributes($logNode, $crap4j, ['threshold']);
+
+ return $crap4j;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php
new file mode 100644
index 000000000..7e12095b4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageHtmlToReport.php
@@ -0,0 +1,33 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class CoverageHtmlToReport extends LogToReportMigration
+{
+ protected function forType(): string
+ {
+ return 'coverage-html';
+ }
+
+ protected function toReportFormat(DOMElement $logNode): DOMElement
+ {
+ $html = $logNode->ownerDocument->createElement('html');
+ $html->setAttribute('outputDirectory', $logNode->getAttribute('target'));
+
+ $this->migrateAttributes($logNode, $html, ['lowUpperBound', 'highLowerBound']);
+
+ return $html;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php
new file mode 100644
index 000000000..bfa10030b
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoveragePhpToReport.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class CoveragePhpToReport extends LogToReportMigration
+{
+ protected function forType(): string
+ {
+ return 'coverage-php';
+ }
+
+ protected function toReportFormat(DOMElement $logNode): DOMElement
+ {
+ $php = $logNode->ownerDocument->createElement('php');
+ $php->setAttribute('outputFile', $logNode->getAttribute('target'));
+
+ return $php;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php
new file mode 100644
index 000000000..063d8df0c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageTextToReport.php
@@ -0,0 +1,33 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class CoverageTextToReport extends LogToReportMigration
+{
+ protected function forType(): string
+ {
+ return 'coverage-text';
+ }
+
+ protected function toReportFormat(DOMElement $logNode): DOMElement
+ {
+ $text = $logNode->ownerDocument->createElement('text');
+ $text->setAttribute('outputFile', $logNode->getAttribute('target'));
+
+ $this->migrateAttributes($logNode, $text, ['showUncoveredFiles', 'showOnlySummary']);
+
+ return $text;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php
new file mode 100644
index 000000000..480d7777e
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/CoverageXmlToReport.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class CoverageXmlToReport extends LogToReportMigration
+{
+ protected function forType(): string
+ {
+ return 'coverage-xml';
+ }
+
+ protected function toReportFormat(DOMElement $logNode): DOMElement
+ {
+ $xml = $logNode->ownerDocument->createElement('xml');
+ $xml->setAttribute('outputDirectory', $logNode->getAttribute('target'));
+
+ return $xml;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php
new file mode 100644
index 000000000..867a84417
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/IntroduceCoverageElement.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMDocument;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class IntroduceCoverageElement implements Migration
+{
+ public function migrate(DOMDocument $document): void
+ {
+ $coverage = $document->createElement('coverage');
+
+ $document->documentElement->insertBefore(
+ $coverage,
+ $document->documentElement->firstChild
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php
new file mode 100644
index 000000000..e987308b7
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/LogToReportMigration.php
@@ -0,0 +1,79 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function sprintf;
+use DOMDocument;
+use DOMElement;
+use DOMXPath;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class LogToReportMigration implements Migration
+{
+ /**
+ * @throws MigrationException
+ */
+ public function migrate(DOMDocument $document): void
+ {
+ $coverage = $document->getElementsByTagName('coverage')->item(0);
+
+ if (!$coverage instanceof DOMElement) {
+ throw new MigrationException('Unexpected state - No coverage element');
+ }
+
+ $logNode = $this->findLogNode($document);
+
+ if ($logNode === null) {
+ return;
+ }
+
+ $reportChild = $this->toReportFormat($logNode);
+
+ $report = $coverage->getElementsByTagName('report')->item(0);
+
+ if ($report === null) {
+ $report = $coverage->appendChild($document->createElement('report'));
+ }
+
+ $report->appendChild($reportChild);
+ $logNode->parentNode->removeChild($logNode);
+ }
+
+ protected function migrateAttributes(DOMElement $src, DOMElement $dest, array $attributes): void
+ {
+ foreach ($attributes as $attr) {
+ if (!$src->hasAttribute($attr)) {
+ continue;
+ }
+
+ $dest->setAttribute($attr, $src->getAttribute($attr));
+ $src->removeAttribute($attr);
+ }
+ }
+
+ abstract protected function forType(): string;
+
+ abstract protected function toReportFormat(DOMElement $logNode): DOMElement;
+
+ private function findLogNode(DOMDocument $document): ?DOMElement
+ {
+ $logNode = (new DOMXPath($document))->query(
+ sprintf('//logging/log[@type="%s"]', $this->forType())
+ )->item(0);
+
+ if (!$logNode instanceof DOMElement) {
+ return null;
+ }
+
+ return $logNode;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php
new file mode 100644
index 000000000..fa4092a9f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/Migration.php
@@ -0,0 +1,20 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMDocument;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+interface Migration
+{
+ public function migrate(DOMDocument $document): void;
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php
new file mode 100644
index 000000000..a7aab5e51
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromFilterWhitelistToCoverage.php
@@ -0,0 +1,51 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMDocument;
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MoveAttributesFromFilterWhitelistToCoverage implements Migration
+{
+ /**
+ * @throws MigrationException
+ */
+ public function migrate(DOMDocument $document): void
+ {
+ $whitelist = $document->getElementsByTagName('whitelist')->item(0);
+
+ if (!$whitelist) {
+ return;
+ }
+
+ $coverage = $document->getElementsByTagName('coverage')->item(0);
+
+ if (!$coverage instanceof DOMElement) {
+ throw new MigrationException('Unexpected state - No coverage element');
+ }
+
+ $map = [
+ 'addUncoveredFilesFromWhitelist' => 'includeUncoveredFiles',
+ 'processUncoveredFilesFromWhitelist' => 'processUncoveredFiles',
+ ];
+
+ foreach ($map as $old => $new) {
+ if (!$whitelist->hasAttribute($old)) {
+ continue;
+ }
+
+ $coverage->setAttribute($new, $whitelist->getAttribute($old));
+ $whitelist->removeAttribute($old);
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php
new file mode 100644
index 000000000..b86b259c3
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveAttributesFromRootToCoverage.php
@@ -0,0 +1,47 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMDocument;
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MoveAttributesFromRootToCoverage implements Migration
+{
+ /**
+ * @throws MigrationException
+ */
+ public function migrate(DOMDocument $document): void
+ {
+ $map = [
+ 'disableCodeCoverageIgnore' => 'disableCodeCoverageIgnore',
+ 'ignoreDeprecatedCodeUnitsFromCodeCoverage' => 'ignoreDeprecatedCodeUnits',
+ ];
+
+ $root = $document->documentElement;
+
+ $coverage = $document->getElementsByTagName('coverage')->item(0);
+
+ if (!$coverage instanceof DOMElement) {
+ throw new MigrationException('Unexpected state - No coverage element');
+ }
+
+ foreach ($map as $old => $new) {
+ if (!$root->hasAttribute($old)) {
+ continue;
+ }
+
+ $coverage->setAttribute($new, $root->getAttribute($old));
+ $root->removeAttribute($old);
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php
new file mode 100644
index 000000000..14e6cec83
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistDirectoriesToCoverage.php
@@ -0,0 +1,49 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMDocument;
+use DOMElement;
+use PHPUnit\Util\Xml\SnapshotNodeList;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MoveWhitelistDirectoriesToCoverage implements Migration
+{
+ /**
+ * @throws MigrationException
+ */
+ public function migrate(DOMDocument $document): void
+ {
+ $whitelist = $document->getElementsByTagName('whitelist')->item(0);
+
+ if ($whitelist === null) {
+ return;
+ }
+
+ $coverage = $document->getElementsByTagName('coverage')->item(0);
+
+ if (!$coverage instanceof DOMElement) {
+ throw new MigrationException('Unexpected state - No coverage element');
+ }
+
+ $include = $document->createElement('include');
+ $coverage->appendChild($include);
+
+ foreach (SnapshotNodeList::fromNodeList($whitelist->childNodes) as $child) {
+ if (!$child instanceof DOMElement || $child->nodeName !== 'directory') {
+ continue;
+ }
+
+ $include->appendChild($child);
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php
new file mode 100644
index 000000000..d8958cf4e
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/MoveWhitelistExcludesToCoverage.php
@@ -0,0 +1,70 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMDocument;
+use DOMElement;
+use PHPUnit\Util\Xml\SnapshotNodeList;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class MoveWhitelistExcludesToCoverage implements Migration
+{
+ /**
+ * @throws MigrationException
+ */
+ public function migrate(DOMDocument $document): void
+ {
+ $whitelist = $document->getElementsByTagName('whitelist')->item(0);
+
+ if ($whitelist === null) {
+ return;
+ }
+
+ $excludeNodes = SnapshotNodeList::fromNodeList($whitelist->getElementsByTagName('exclude'));
+
+ if ($excludeNodes->count() === 0) {
+ return;
+ }
+
+ $coverage = $document->getElementsByTagName('coverage')->item(0);
+
+ if (!$coverage instanceof DOMElement) {
+ throw new MigrationException('Unexpected state - No coverage element');
+ }
+
+ $targetExclude = $coverage->getElementsByTagName('exclude')->item(0);
+
+ if ($targetExclude === null) {
+ $targetExclude = $coverage->appendChild(
+ $document->createElement('exclude')
+ );
+ }
+
+ foreach ($excludeNodes as $excludeNode) {
+ assert($excludeNode instanceof DOMElement);
+
+ foreach (SnapshotNodeList::fromNodeList($excludeNode->childNodes) as $child) {
+ if (!$child instanceof DOMElement || !in_array($child->nodeName, ['directory', 'file'], true)) {
+ continue;
+ }
+
+ $targetExclude->appendChild($child);
+ }
+
+ if ($excludeNode->getElementsByTagName('*')->count() !== 0) {
+ throw new MigrationException('Dangling child elements in exclude found.');
+ }
+
+ $whitelist->removeChild($excludeNode);
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php
new file mode 100644
index 000000000..0eec12ac1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveCacheTokensAttribute.php
@@ -0,0 +1,27 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMDocument;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class RemoveCacheTokensAttribute implements Migration
+{
+ public function migrate(DOMDocument $document): void
+ {
+ $root = $document->documentElement;
+
+ if ($root->hasAttribute('cacheTokens')) {
+ $root->removeAttribute('cacheTokens');
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php
new file mode 100644
index 000000000..8f1a6d547
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveEmptyFilter.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function sprintf;
+use DOMDocument;
+use DOMElement;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class RemoveEmptyFilter implements Migration
+{
+ /**
+ * @throws MigrationException
+ */
+ public function migrate(DOMDocument $document): void
+ {
+ $whitelist = $document->getElementsByTagName('whitelist')->item(0);
+
+ if ($whitelist instanceof DOMElement) {
+ $this->ensureEmpty($whitelist);
+ $whitelist->parentNode->removeChild($whitelist);
+ }
+
+ $filter = $document->getElementsByTagName('filter')->item(0);
+
+ if ($filter instanceof DOMElement) {
+ $this->ensureEmpty($filter);
+ $filter->parentNode->removeChild($filter);
+ }
+ }
+
+ /**
+ * @throws MigrationException
+ */
+ private function ensureEmpty(DOMElement $element): void
+ {
+ if ($element->attributes->length > 0) {
+ throw new MigrationException(sprintf('%s element has unexpected attributes', $element->nodeName));
+ }
+
+ if ($element->getElementsByTagName('*')->length > 0) {
+ throw new MigrationException(sprintf('%s element has unexpected children', $element->nodeName));
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php
new file mode 100644
index 000000000..99a762b18
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/RemoveLogTypes.php
@@ -0,0 +1,37 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMDocument;
+use DOMElement;
+use PHPUnit\Util\Xml\SnapshotNodeList;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class RemoveLogTypes implements Migration
+{
+ public function migrate(DOMDocument $document): void
+ {
+ $logging = $document->getElementsByTagName('logging')->item(0);
+
+ if (!$logging instanceof DOMElement) {
+ return;
+ }
+
+ foreach (SnapshotNodeList::fromNodeList($logging->getElementsByTagName('log')) as $logNode) {
+ switch ($logNode->getAttribute('type')) {
+ case 'json':
+ case 'tap':
+ $logging->removeChild($logNode);
+ }
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php
new file mode 100644
index 000000000..2e86ab6e9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrations/UpdateSchemaLocationTo93.php
@@ -0,0 +1,27 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use DOMDocument;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class UpdateSchemaLocationTo93 implements Migration
+{
+ public function migrate(DOMDocument $document): void
+ {
+ $document->documentElement->setAttributeNS(
+ 'http://www.w3.org/2001/XMLSchema-instance',
+ 'xsi:noNamespaceSchemaLocation',
+ 'https://schema.phpunit.de/9.3/phpunit.xsd'
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php
new file mode 100644
index 000000000..d173e7af2
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/Migration/Migrator.php
@@ -0,0 +1,57 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function sprintf;
+use PHPUnit\Util\Xml\Exception as XmlException;
+use PHPUnit\Util\Xml\Loader as XmlLoader;
+use PHPUnit\Util\Xml\SchemaDetector;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Migrator
+{
+ /**
+ * @throws Exception
+ * @throws MigrationBuilderException
+ * @throws MigrationException
+ * @throws XmlException
+ */
+ public function migrate(string $filename): string
+ {
+ $origin = (new SchemaDetector)->detect($filename);
+
+ if (!$origin->detected()) {
+ throw new Exception(
+ sprintf(
+ '"%s" is not a valid PHPUnit XML configuration file that can be migrated',
+ $filename,
+ )
+ );
+ }
+
+ $configurationDocument = (new XmlLoader)->loadFile(
+ $filename,
+ false,
+ true,
+ true
+ );
+
+ foreach ((new MigrationBuilder)->build($origin->version()) as $migration) {
+ $migration->migrate($configurationDocument);
+ }
+
+ $configurationDocument->formatOutput = true;
+ $configurationDocument->preserveWhiteSpace = false;
+
+ return $configurationDocument->saveXML();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php
new file mode 100644
index 000000000..e9b28b9e8
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Constant.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Constant
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ public function __construct(string $name, $value)
+ {
+ $this->name = $name;
+ $this->value = $value;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function value()
+ {
+ return $this->value;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php
new file mode 100644
index 000000000..51c14715f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollection.php
@@ -0,0 +1,57 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class ConstantCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @var Constant[]
+ */
+ private $constants;
+
+ /**
+ * @param Constant[] $constants
+ */
+ public static function fromArray(array $constants): self
+ {
+ return new self(...$constants);
+ }
+
+ private function __construct(Constant ...$constants)
+ {
+ $this->constants = $constants;
+ }
+
+ /**
+ * @return Constant[]
+ */
+ public function asArray(): array
+ {
+ return $this->constants;
+ }
+
+ public function count(): int
+ {
+ return count($this->constants);
+ }
+
+ public function getIterator(): ConstantCollectionIterator
+ {
+ return new ConstantCollectionIterator($this);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php
new file mode 100644
index 000000000..c1c8d834b
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/ConstantCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ConstantCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var Constant[]
+ */
+ private $constants;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(ConstantCollection $constants)
+ {
+ $this->constants = $constants->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->constants);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): Constant
+ {
+ return $this->constants[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php
new file mode 100644
index 000000000..58cf735b0
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSetting.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class IniSetting
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var string
+ */
+ private $value;
+
+ public function __construct(string $name, string $value)
+ {
+ $this->name = $name;
+ $this->value = $value;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function value(): string
+ {
+ return $this->value;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php
new file mode 100644
index 000000000..216d85aec
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollection.php
@@ -0,0 +1,57 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class IniSettingCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @var IniSetting[]
+ */
+ private $iniSettings;
+
+ /**
+ * @param IniSetting[] $iniSettings
+ */
+ public static function fromArray(array $iniSettings): self
+ {
+ return new self(...$iniSettings);
+ }
+
+ private function __construct(IniSetting ...$iniSettings)
+ {
+ $this->iniSettings = $iniSettings;
+ }
+
+ /**
+ * @return IniSetting[]
+ */
+ public function asArray(): array
+ {
+ return $this->iniSettings;
+ }
+
+ public function count(): int
+ {
+ return count($this->iniSettings);
+ }
+
+ public function getIterator(): IniSettingCollectionIterator
+ {
+ return new IniSettingCollectionIterator($this);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php
new file mode 100644
index 000000000..f31225e8f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/IniSettingCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class IniSettingCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var IniSetting[]
+ */
+ private $iniSettings;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(IniSettingCollection $iniSettings)
+ {
+ $this->iniSettings = $iniSettings->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->iniSettings);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): IniSetting
+ {
+ return $this->iniSettings[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php
new file mode 100644
index 000000000..26897e359
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Php.php
@@ -0,0 +1,142 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Php
+{
+ /**
+ * @var DirectoryCollection
+ */
+ private $includePaths;
+
+ /**
+ * @var IniSettingCollection
+ */
+ private $iniSettings;
+
+ /**
+ * @var ConstantCollection
+ */
+ private $constants;
+
+ /**
+ * @var VariableCollection
+ */
+ private $globalVariables;
+
+ /**
+ * @var VariableCollection
+ */
+ private $envVariables;
+
+ /**
+ * @var VariableCollection
+ */
+ private $postVariables;
+
+ /**
+ * @var VariableCollection
+ */
+ private $getVariables;
+
+ /**
+ * @var VariableCollection
+ */
+ private $cookieVariables;
+
+ /**
+ * @var VariableCollection
+ */
+ private $serverVariables;
+
+ /**
+ * @var VariableCollection
+ */
+ private $filesVariables;
+
+ /**
+ * @var VariableCollection
+ */
+ private $requestVariables;
+
+ public function __construct(DirectoryCollection $includePaths, IniSettingCollection $iniSettings, ConstantCollection $constants, VariableCollection $globalVariables, VariableCollection $envVariables, VariableCollection $postVariables, VariableCollection $getVariables, VariableCollection $cookieVariables, VariableCollection $serverVariables, VariableCollection $filesVariables, VariableCollection $requestVariables)
+ {
+ $this->includePaths = $includePaths;
+ $this->iniSettings = $iniSettings;
+ $this->constants = $constants;
+ $this->globalVariables = $globalVariables;
+ $this->envVariables = $envVariables;
+ $this->postVariables = $postVariables;
+ $this->getVariables = $getVariables;
+ $this->cookieVariables = $cookieVariables;
+ $this->serverVariables = $serverVariables;
+ $this->filesVariables = $filesVariables;
+ $this->requestVariables = $requestVariables;
+ }
+
+ public function includePaths(): DirectoryCollection
+ {
+ return $this->includePaths;
+ }
+
+ public function iniSettings(): IniSettingCollection
+ {
+ return $this->iniSettings;
+ }
+
+ public function constants(): ConstantCollection
+ {
+ return $this->constants;
+ }
+
+ public function globalVariables(): VariableCollection
+ {
+ return $this->globalVariables;
+ }
+
+ public function envVariables(): VariableCollection
+ {
+ return $this->envVariables;
+ }
+
+ public function postVariables(): VariableCollection
+ {
+ return $this->postVariables;
+ }
+
+ public function getVariables(): VariableCollection
+ {
+ return $this->getVariables;
+ }
+
+ public function cookieVariables(): VariableCollection
+ {
+ return $this->cookieVariables;
+ }
+
+ public function serverVariables(): VariableCollection
+ {
+ return $this->serverVariables;
+ }
+
+ public function filesVariables(): VariableCollection
+ {
+ return $this->filesVariables;
+ }
+
+ public function requestVariables(): VariableCollection
+ {
+ return $this->requestVariables;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php
new file mode 100644
index 000000000..5fb0c72b2
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/PhpHandler.php
@@ -0,0 +1,121 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use const PATH_SEPARATOR;
+use function constant;
+use function define;
+use function defined;
+use function getenv;
+use function implode;
+use function ini_get;
+use function ini_set;
+use function putenv;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class PhpHandler
+{
+ public function handle(Php $configuration): void
+ {
+ $this->handleIncludePaths($configuration->includePaths());
+ $this->handleIniSettings($configuration->iniSettings());
+ $this->handleConstants($configuration->constants());
+ $this->handleGlobalVariables($configuration->globalVariables());
+ $this->handleServerVariables($configuration->serverVariables());
+ $this->handleEnvVariables($configuration->envVariables());
+ $this->handleVariables('_POST', $configuration->postVariables());
+ $this->handleVariables('_GET', $configuration->getVariables());
+ $this->handleVariables('_COOKIE', $configuration->cookieVariables());
+ $this->handleVariables('_FILES', $configuration->filesVariables());
+ $this->handleVariables('_REQUEST', $configuration->requestVariables());
+ }
+
+ private function handleIncludePaths(DirectoryCollection $includePaths): void
+ {
+ if (!$includePaths->isEmpty()) {
+ $includePathsAsStrings = [];
+
+ foreach ($includePaths as $includePath) {
+ $includePathsAsStrings[] = $includePath->path();
+ }
+
+ ini_set(
+ 'include_path',
+ implode(PATH_SEPARATOR, $includePathsAsStrings) .
+ PATH_SEPARATOR .
+ ini_get('include_path')
+ );
+ }
+ }
+
+ private function handleIniSettings(IniSettingCollection $iniSettings): void
+ {
+ foreach ($iniSettings as $iniSetting) {
+ $value = $iniSetting->value();
+
+ if (defined($value)) {
+ $value = (string) constant($value);
+ }
+
+ ini_set($iniSetting->name(), $value);
+ }
+ }
+
+ private function handleConstants(ConstantCollection $constants): void
+ {
+ foreach ($constants as $constant) {
+ if (!defined($constant->name())) {
+ define($constant->name(), $constant->value());
+ }
+ }
+ }
+
+ private function handleGlobalVariables(VariableCollection $variables): void
+ {
+ foreach ($variables as $variable) {
+ $GLOBALS[$variable->name()] = $variable->value();
+ }
+ }
+
+ private function handleServerVariables(VariableCollection $variables): void
+ {
+ foreach ($variables as $variable) {
+ $_SERVER[$variable->name()] = $variable->value();
+ }
+ }
+
+ private function handleVariables(string $target, VariableCollection $variables): void
+ {
+ foreach ($variables as $variable) {
+ $GLOBALS[$target][$variable->name()] = $variable->value();
+ }
+ }
+
+ private function handleEnvVariables(VariableCollection $variables): void
+ {
+ foreach ($variables as $variable) {
+ $name = $variable->name();
+ $value = $variable->value();
+ $force = $variable->force();
+
+ if ($force || getenv($name) === false) {
+ putenv("{$name}={$value}");
+ }
+
+ $value = getenv($name);
+
+ if ($force || !isset($_ENV[$name])) {
+ $_ENV[$name] = $value;
+ }
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php
new file mode 100644
index 000000000..c2684e28f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/Variable.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Variable
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ /**
+ * @var bool
+ */
+ private $force;
+
+ public function __construct(string $name, $value, bool $force)
+ {
+ $this->name = $name;
+ $this->value = $value;
+ $this->force = $force;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function value()
+ {
+ return $this->value;
+ }
+
+ public function force(): bool
+ {
+ return $this->force;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php
new file mode 100644
index 000000000..e84992168
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollection.php
@@ -0,0 +1,57 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class VariableCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @var Variable[]
+ */
+ private $variables;
+
+ /**
+ * @param Variable[] $variables
+ */
+ public static function fromArray(array $variables): self
+ {
+ return new self(...$variables);
+ }
+
+ private function __construct(Variable ...$variables)
+ {
+ $this->variables = $variables;
+ }
+
+ /**
+ * @return Variable[]
+ */
+ public function asArray(): array
+ {
+ return $this->variables;
+ }
+
+ public function count(): int
+ {
+ return count($this->variables);
+ }
+
+ public function getIterator(): VariableCollectionIterator
+ {
+ return new VariableCollectionIterator($this);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php
new file mode 100644
index 000000000..3d594c1ee
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHP/VariableCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class VariableCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var Variable[]
+ */
+ private $variables;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(VariableCollection $variables)
+ {
+ $this->variables = $variables->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->variables);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): Variable
+ {
+ return $this->variables[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php
new file mode 100644
index 000000000..77c5b2d0d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/Extension.php
@@ -0,0 +1,71 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class Extension
+{
+ /**
+ * @var string
+ * @psalm-var class-string
+ */
+ private $className;
+
+ /**
+ * @var string
+ */
+ private $sourceFile;
+
+ /**
+ * @var array
+ */
+ private $arguments;
+
+ /**
+ * @psalm-param class-string $className
+ */
+ public function __construct(string $className, string $sourceFile, array $arguments)
+ {
+ $this->className = $className;
+ $this->sourceFile = $sourceFile;
+ $this->arguments = $arguments;
+ }
+
+ /**
+ * @psalm-return class-string
+ */
+ public function className(): string
+ {
+ return $this->className;
+ }
+
+ public function hasSourceFile(): bool
+ {
+ return $this->sourceFile !== '';
+ }
+
+ public function sourceFile(): string
+ {
+ return $this->sourceFile;
+ }
+
+ public function hasArguments(): bool
+ {
+ return !empty($this->arguments);
+ }
+
+ public function arguments(): array
+ {
+ return $this->arguments;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php
new file mode 100644
index 000000000..45be2eeeb
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollection.php
@@ -0,0 +1,50 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class ExtensionCollection implements IteratorAggregate
+{
+ /**
+ * @var Extension[]
+ */
+ private $extensions;
+
+ /**
+ * @param Extension[] $extensions
+ */
+ public static function fromArray(array $extensions): self
+ {
+ return new self(...$extensions);
+ }
+
+ private function __construct(Extension ...$extensions)
+ {
+ $this->extensions = $extensions;
+ }
+
+ /**
+ * @return Extension[]
+ */
+ public function asArray(): array
+ {
+ return $this->extensions;
+ }
+
+ public function getIterator(): ExtensionCollectionIterator
+ {
+ return new ExtensionCollectionIterator($this);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php
new file mode 100644
index 000000000..4bd54be49
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/ExtensionCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ExtensionCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var Extension[]
+ */
+ private $extensions;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(ExtensionCollection $extensions)
+ {
+ $this->extensions = $extensions->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->extensions);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): Extension
+ {
+ return $this->extensions[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php
new file mode 100644
index 000000000..edf298dd5
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/PHPUnit/PHPUnit.php
@@ -0,0 +1,714 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class PHPUnit
+{
+ /**
+ * @var bool
+ */
+ private $cacheResult;
+
+ /**
+ * @var ?string
+ */
+ private $cacheResultFile;
+
+ /**
+ * @var int|string
+ */
+ private $columns;
+
+ /**
+ * @var string
+ */
+ private $colors;
+
+ /**
+ * @var bool
+ */
+ private $stderr;
+
+ /**
+ * @var bool
+ */
+ private $noInteraction;
+
+ /**
+ * @var bool
+ */
+ private $verbose;
+
+ /**
+ * @var bool
+ */
+ private $reverseDefectList;
+
+ /**
+ * @var bool
+ */
+ private $convertDeprecationsToExceptions;
+
+ /**
+ * @var bool
+ */
+ private $convertErrorsToExceptions;
+
+ /**
+ * @var bool
+ */
+ private $convertNoticesToExceptions;
+
+ /**
+ * @var bool
+ */
+ private $convertWarningsToExceptions;
+
+ /**
+ * @var bool
+ */
+ private $forceCoversAnnotation;
+
+ /**
+ * @var ?string
+ */
+ private $bootstrap;
+
+ /**
+ * @var bool
+ */
+ private $processIsolation;
+
+ /**
+ * @var bool
+ */
+ private $failOnEmptyTestSuite;
+
+ /**
+ * @var bool
+ */
+ private $failOnIncomplete;
+
+ /**
+ * @var bool
+ */
+ private $failOnRisky;
+
+ /**
+ * @var bool
+ */
+ private $failOnSkipped;
+
+ /**
+ * @var bool
+ */
+ private $failOnWarning;
+
+ /**
+ * @var bool
+ */
+ private $stopOnDefect;
+
+ /**
+ * @var bool
+ */
+ private $stopOnError;
+
+ /**
+ * @var bool
+ */
+ private $stopOnFailure;
+
+ /**
+ * @var bool
+ */
+ private $stopOnWarning;
+
+ /**
+ * @var bool
+ */
+ private $stopOnIncomplete;
+
+ /**
+ * @var bool
+ */
+ private $stopOnRisky;
+
+ /**
+ * @var bool
+ */
+ private $stopOnSkipped;
+
+ /**
+ * @var ?string
+ */
+ private $extensionsDirectory;
+
+ /**
+ * @var ?string
+ *
+ * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039
+ */
+ private $testSuiteLoaderClass;
+
+ /**
+ * @var ?string
+ *
+ * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039
+ */
+ private $testSuiteLoaderFile;
+
+ /**
+ * @var ?string
+ */
+ private $printerClass;
+
+ /**
+ * @var ?string
+ */
+ private $printerFile;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutChangesToGlobalState;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutOutputDuringTests;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutResourceUsageDuringSmallTests;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutTestsThatDoNotTestAnything;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutTodoAnnotatedTests;
+
+ /**
+ * @var bool
+ */
+ private $beStrictAboutCoversAnnotation;
+
+ /**
+ * @var bool
+ */
+ private $enforceTimeLimit;
+
+ /**
+ * @var int
+ */
+ private $defaultTimeLimit;
+
+ /**
+ * @var int
+ */
+ private $timeoutForSmallTests;
+
+ /**
+ * @var int
+ */
+ private $timeoutForMediumTests;
+
+ /**
+ * @var int
+ */
+ private $timeoutForLargeTests;
+
+ /**
+ * @var ?string
+ */
+ private $defaultTestSuite;
+
+ /**
+ * @var int
+ */
+ private $executionOrder;
+
+ /**
+ * @var bool
+ */
+ private $resolveDependencies;
+
+ /**
+ * @var bool
+ */
+ private $defectsFirst;
+
+ /**
+ * @var bool
+ */
+ private $backupGlobals;
+
+ /**
+ * @var bool
+ */
+ private $backupStaticAttributes;
+
+ /**
+ * @var bool
+ */
+ private $registerMockObjectsFromTestArgumentsRecursively;
+
+ /**
+ * @var bool
+ */
+ private $conflictBetweenPrinterClassAndTestdox;
+
+ public function __construct(bool $cacheResult, ?string $cacheResultFile, $columns, string $colors, bool $stderr, bool $noInteraction, bool $verbose, bool $reverseDefectList, bool $convertDeprecationsToExceptions, bool $convertErrorsToExceptions, bool $convertNoticesToExceptions, bool $convertWarningsToExceptions, bool $forceCoversAnnotation, ?string $bootstrap, bool $processIsolation, bool $failOnEmptyTestSuite, bool $failOnIncomplete, bool $failOnRisky, bool $failOnSkipped, bool $failOnWarning, bool $stopOnDefect, bool $stopOnError, bool $stopOnFailure, bool $stopOnWarning, bool $stopOnIncomplete, bool $stopOnRisky, bool $stopOnSkipped, ?string $extensionsDirectory, ?string $testSuiteLoaderClass, ?string $testSuiteLoaderFile, ?string $printerClass, ?string $printerFile, bool $beStrictAboutChangesToGlobalState, bool $beStrictAboutOutputDuringTests, bool $beStrictAboutResourceUsageDuringSmallTests, bool $beStrictAboutTestsThatDoNotTestAnything, bool $beStrictAboutTodoAnnotatedTests, bool $beStrictAboutCoversAnnotation, bool $enforceTimeLimit, int $defaultTimeLimit, int $timeoutForSmallTests, int $timeoutForMediumTests, int $timeoutForLargeTests, ?string $defaultTestSuite, int $executionOrder, bool $resolveDependencies, bool $defectsFirst, bool $backupGlobals, bool $backupStaticAttributes, bool $registerMockObjectsFromTestArgumentsRecursively, bool $conflictBetweenPrinterClassAndTestdox)
+ {
+ $this->cacheResult = $cacheResult;
+ $this->cacheResultFile = $cacheResultFile;
+ $this->columns = $columns;
+ $this->colors = $colors;
+ $this->stderr = $stderr;
+ $this->noInteraction = $noInteraction;
+ $this->verbose = $verbose;
+ $this->reverseDefectList = $reverseDefectList;
+ $this->convertDeprecationsToExceptions = $convertDeprecationsToExceptions;
+ $this->convertErrorsToExceptions = $convertErrorsToExceptions;
+ $this->convertNoticesToExceptions = $convertNoticesToExceptions;
+ $this->convertWarningsToExceptions = $convertWarningsToExceptions;
+ $this->forceCoversAnnotation = $forceCoversAnnotation;
+ $this->bootstrap = $bootstrap;
+ $this->processIsolation = $processIsolation;
+ $this->failOnEmptyTestSuite = $failOnEmptyTestSuite;
+ $this->failOnIncomplete = $failOnIncomplete;
+ $this->failOnRisky = $failOnRisky;
+ $this->failOnSkipped = $failOnSkipped;
+ $this->failOnWarning = $failOnWarning;
+ $this->stopOnDefect = $stopOnDefect;
+ $this->stopOnError = $stopOnError;
+ $this->stopOnFailure = $stopOnFailure;
+ $this->stopOnWarning = $stopOnWarning;
+ $this->stopOnIncomplete = $stopOnIncomplete;
+ $this->stopOnRisky = $stopOnRisky;
+ $this->stopOnSkipped = $stopOnSkipped;
+ $this->extensionsDirectory = $extensionsDirectory;
+ $this->testSuiteLoaderClass = $testSuiteLoaderClass;
+ $this->testSuiteLoaderFile = $testSuiteLoaderFile;
+ $this->printerClass = $printerClass;
+ $this->printerFile = $printerFile;
+ $this->beStrictAboutChangesToGlobalState = $beStrictAboutChangesToGlobalState;
+ $this->beStrictAboutOutputDuringTests = $beStrictAboutOutputDuringTests;
+ $this->beStrictAboutResourceUsageDuringSmallTests = $beStrictAboutResourceUsageDuringSmallTests;
+ $this->beStrictAboutTestsThatDoNotTestAnything = $beStrictAboutTestsThatDoNotTestAnything;
+ $this->beStrictAboutTodoAnnotatedTests = $beStrictAboutTodoAnnotatedTests;
+ $this->beStrictAboutCoversAnnotation = $beStrictAboutCoversAnnotation;
+ $this->enforceTimeLimit = $enforceTimeLimit;
+ $this->defaultTimeLimit = $defaultTimeLimit;
+ $this->timeoutForSmallTests = $timeoutForSmallTests;
+ $this->timeoutForMediumTests = $timeoutForMediumTests;
+ $this->timeoutForLargeTests = $timeoutForLargeTests;
+ $this->defaultTestSuite = $defaultTestSuite;
+ $this->executionOrder = $executionOrder;
+ $this->resolveDependencies = $resolveDependencies;
+ $this->defectsFirst = $defectsFirst;
+ $this->backupGlobals = $backupGlobals;
+ $this->backupStaticAttributes = $backupStaticAttributes;
+ $this->registerMockObjectsFromTestArgumentsRecursively = $registerMockObjectsFromTestArgumentsRecursively;
+ $this->conflictBetweenPrinterClassAndTestdox = $conflictBetweenPrinterClassAndTestdox;
+ }
+
+ public function cacheResult(): bool
+ {
+ return $this->cacheResult;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->cacheResultFile
+ */
+ public function hasCacheResultFile(): bool
+ {
+ return $this->cacheResultFile !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function cacheResultFile(): string
+ {
+ if (!$this->hasCacheResultFile()) {
+ throw new Exception('Cache result file is not configured');
+ }
+
+ return (string) $this->cacheResultFile;
+ }
+
+ public function columns()
+ {
+ return $this->columns;
+ }
+
+ public function colors(): string
+ {
+ return $this->colors;
+ }
+
+ public function stderr(): bool
+ {
+ return $this->stderr;
+ }
+
+ public function noInteraction(): bool
+ {
+ return $this->noInteraction;
+ }
+
+ public function verbose(): bool
+ {
+ return $this->verbose;
+ }
+
+ public function reverseDefectList(): bool
+ {
+ return $this->reverseDefectList;
+ }
+
+ public function convertDeprecationsToExceptions(): bool
+ {
+ return $this->convertDeprecationsToExceptions;
+ }
+
+ public function convertErrorsToExceptions(): bool
+ {
+ return $this->convertErrorsToExceptions;
+ }
+
+ public function convertNoticesToExceptions(): bool
+ {
+ return $this->convertNoticesToExceptions;
+ }
+
+ public function convertWarningsToExceptions(): bool
+ {
+ return $this->convertWarningsToExceptions;
+ }
+
+ public function forceCoversAnnotation(): bool
+ {
+ return $this->forceCoversAnnotation;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->bootstrap
+ */
+ public function hasBootstrap(): bool
+ {
+ return $this->bootstrap !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function bootstrap(): string
+ {
+ if (!$this->hasBootstrap()) {
+ throw new Exception('Bootstrap script is not configured');
+ }
+
+ return (string) $this->bootstrap;
+ }
+
+ public function processIsolation(): bool
+ {
+ return $this->processIsolation;
+ }
+
+ public function failOnEmptyTestSuite(): bool
+ {
+ return $this->failOnEmptyTestSuite;
+ }
+
+ public function failOnIncomplete(): bool
+ {
+ return $this->failOnIncomplete;
+ }
+
+ public function failOnRisky(): bool
+ {
+ return $this->failOnRisky;
+ }
+
+ public function failOnSkipped(): bool
+ {
+ return $this->failOnSkipped;
+ }
+
+ public function failOnWarning(): bool
+ {
+ return $this->failOnWarning;
+ }
+
+ public function stopOnDefect(): bool
+ {
+ return $this->stopOnDefect;
+ }
+
+ public function stopOnError(): bool
+ {
+ return $this->stopOnError;
+ }
+
+ public function stopOnFailure(): bool
+ {
+ return $this->stopOnFailure;
+ }
+
+ public function stopOnWarning(): bool
+ {
+ return $this->stopOnWarning;
+ }
+
+ public function stopOnIncomplete(): bool
+ {
+ return $this->stopOnIncomplete;
+ }
+
+ public function stopOnRisky(): bool
+ {
+ return $this->stopOnRisky;
+ }
+
+ public function stopOnSkipped(): bool
+ {
+ return $this->stopOnSkipped;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->extensionsDirectory
+ */
+ public function hasExtensionsDirectory(): bool
+ {
+ return $this->extensionsDirectory !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function extensionsDirectory(): string
+ {
+ if (!$this->hasExtensionsDirectory()) {
+ throw new Exception('Extensions directory is not configured');
+ }
+
+ return (string) $this->extensionsDirectory;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->testSuiteLoaderClass
+ *
+ * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039
+ */
+ public function hasTestSuiteLoaderClass(): bool
+ {
+ return $this->testSuiteLoaderClass !== null;
+ }
+
+ /**
+ * @throws Exception
+ *
+ * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039
+ */
+ public function testSuiteLoaderClass(): string
+ {
+ if (!$this->hasTestSuiteLoaderClass()) {
+ throw new Exception('TestSuiteLoader class is not configured');
+ }
+
+ return (string) $this->testSuiteLoaderClass;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->testSuiteLoaderFile
+ *
+ * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039
+ */
+ public function hasTestSuiteLoaderFile(): bool
+ {
+ return $this->testSuiteLoaderFile !== null;
+ }
+
+ /**
+ * @throws Exception
+ *
+ * @deprecated see https://github.com/sebastianbergmann/phpunit/issues/4039
+ */
+ public function testSuiteLoaderFile(): string
+ {
+ if (!$this->hasTestSuiteLoaderFile()) {
+ throw new Exception('TestSuiteLoader sourcecode file is not configured');
+ }
+
+ return (string) $this->testSuiteLoaderFile;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->printerClass
+ */
+ public function hasPrinterClass(): bool
+ {
+ return $this->printerClass !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function printerClass(): string
+ {
+ if (!$this->hasPrinterClass()) {
+ throw new Exception('ResultPrinter class is not configured');
+ }
+
+ return (string) $this->printerClass;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->printerFile
+ */
+ public function hasPrinterFile(): bool
+ {
+ return $this->printerFile !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function printerFile(): string
+ {
+ if (!$this->hasPrinterFile()) {
+ throw new Exception('ResultPrinter sourcecode file is not configured');
+ }
+
+ return (string) $this->printerFile;
+ }
+
+ public function beStrictAboutChangesToGlobalState(): bool
+ {
+ return $this->beStrictAboutChangesToGlobalState;
+ }
+
+ public function beStrictAboutOutputDuringTests(): bool
+ {
+ return $this->beStrictAboutOutputDuringTests;
+ }
+
+ public function beStrictAboutResourceUsageDuringSmallTests(): bool
+ {
+ return $this->beStrictAboutResourceUsageDuringSmallTests;
+ }
+
+ public function beStrictAboutTestsThatDoNotTestAnything(): bool
+ {
+ return $this->beStrictAboutTestsThatDoNotTestAnything;
+ }
+
+ public function beStrictAboutTodoAnnotatedTests(): bool
+ {
+ return $this->beStrictAboutTodoAnnotatedTests;
+ }
+
+ public function beStrictAboutCoversAnnotation(): bool
+ {
+ return $this->beStrictAboutCoversAnnotation;
+ }
+
+ public function enforceTimeLimit(): bool
+ {
+ return $this->enforceTimeLimit;
+ }
+
+ public function defaultTimeLimit(): int
+ {
+ return $this->defaultTimeLimit;
+ }
+
+ public function timeoutForSmallTests(): int
+ {
+ return $this->timeoutForSmallTests;
+ }
+
+ public function timeoutForMediumTests(): int
+ {
+ return $this->timeoutForMediumTests;
+ }
+
+ public function timeoutForLargeTests(): int
+ {
+ return $this->timeoutForLargeTests;
+ }
+
+ /**
+ * @psalm-assert-if-true !null $this->defaultTestSuite
+ */
+ public function hasDefaultTestSuite(): bool
+ {
+ return $this->defaultTestSuite !== null;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function defaultTestSuite(): string
+ {
+ if (!$this->hasDefaultTestSuite()) {
+ throw new Exception('Default test suite is not configured');
+ }
+
+ return (string) $this->defaultTestSuite;
+ }
+
+ public function executionOrder(): int
+ {
+ return $this->executionOrder;
+ }
+
+ public function resolveDependencies(): bool
+ {
+ return $this->resolveDependencies;
+ }
+
+ public function defectsFirst(): bool
+ {
+ return $this->defectsFirst;
+ }
+
+ public function backupGlobals(): bool
+ {
+ return $this->backupGlobals;
+ }
+
+ public function backupStaticAttributes(): bool
+ {
+ return $this->backupStaticAttributes;
+ }
+
+ public function registerMockObjectsFromTestArgumentsRecursively(): bool
+ {
+ return $this->registerMockObjectsFromTestArgumentsRecursively;
+ }
+
+ public function conflictBetweenPrinterClassAndTestdox(): bool
+ {
+ return $this->conflictBetweenPrinterClassAndTestdox;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php
new file mode 100644
index 000000000..263d02ea9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectory.php
@@ -0,0 +1,78 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use PHPUnit\Util\VersionComparisonOperator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class TestDirectory
+{
+ /**
+ * @var string
+ */
+ private $path;
+
+ /**
+ * @var string
+ */
+ private $prefix;
+
+ /**
+ * @var string
+ */
+ private $suffix;
+
+ /**
+ * @var string
+ */
+ private $phpVersion;
+
+ /**
+ * @var VersionComparisonOperator
+ */
+ private $phpVersionOperator;
+
+ public function __construct(string $path, string $prefix, string $suffix, string $phpVersion, VersionComparisonOperator $phpVersionOperator)
+ {
+ $this->path = $path;
+ $this->prefix = $prefix;
+ $this->suffix = $suffix;
+ $this->phpVersion = $phpVersion;
+ $this->phpVersionOperator = $phpVersionOperator;
+ }
+
+ public function path(): string
+ {
+ return $this->path;
+ }
+
+ public function prefix(): string
+ {
+ return $this->prefix;
+ }
+
+ public function suffix(): string
+ {
+ return $this->suffix;
+ }
+
+ public function phpVersion(): string
+ {
+ return $this->phpVersion;
+ }
+
+ public function phpVersionOperator(): VersionComparisonOperator
+ {
+ return $this->phpVersionOperator;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php
new file mode 100644
index 000000000..10111af05
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollection.php
@@ -0,0 +1,62 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class TestDirectoryCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @var TestDirectory[]
+ */
+ private $directories;
+
+ /**
+ * @param TestDirectory[] $directories
+ */
+ public static function fromArray(array $directories): self
+ {
+ return new self(...$directories);
+ }
+
+ private function __construct(TestDirectory ...$directories)
+ {
+ $this->directories = $directories;
+ }
+
+ /**
+ * @return TestDirectory[]
+ */
+ public function asArray(): array
+ {
+ return $this->directories;
+ }
+
+ public function count(): int
+ {
+ return count($this->directories);
+ }
+
+ public function getIterator(): TestDirectoryCollectionIterator
+ {
+ return new TestDirectoryCollectionIterator($this);
+ }
+
+ public function isEmpty(): bool
+ {
+ return $this->count() === 0;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php
new file mode 100644
index 000000000..11a48a247
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestDirectoryCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestDirectoryCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var TestDirectory[]
+ */
+ private $directories;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(TestDirectoryCollection $directories)
+ {
+ $this->directories = $directories->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->directories);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): TestDirectory
+ {
+ return $this->directories[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php
new file mode 100644
index 000000000..2e69450c1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFile.php
@@ -0,0 +1,56 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use PHPUnit\Util\VersionComparisonOperator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class TestFile
+{
+ /**
+ * @var string
+ */
+ private $path;
+
+ /**
+ * @var string
+ */
+ private $phpVersion;
+
+ /**
+ * @var VersionComparisonOperator
+ */
+ private $phpVersionOperator;
+
+ public function __construct(string $path, string $phpVersion, VersionComparisonOperator $phpVersionOperator)
+ {
+ $this->path = $path;
+ $this->phpVersion = $phpVersion;
+ $this->phpVersionOperator = $phpVersionOperator;
+ }
+
+ public function path(): string
+ {
+ return $this->path;
+ }
+
+ public function phpVersion(): string
+ {
+ return $this->phpVersion;
+ }
+
+ public function phpVersionOperator(): VersionComparisonOperator
+ {
+ return $this->phpVersionOperator;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php
new file mode 100644
index 000000000..791ddf718
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollection.php
@@ -0,0 +1,62 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class TestFileCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @var TestFile[]
+ */
+ private $files;
+
+ /**
+ * @param TestFile[] $files
+ */
+ public static function fromArray(array $files): self
+ {
+ return new self(...$files);
+ }
+
+ private function __construct(TestFile ...$files)
+ {
+ $this->files = $files;
+ }
+
+ /**
+ * @return TestFile[]
+ */
+ public function asArray(): array
+ {
+ return $this->files;
+ }
+
+ public function count(): int
+ {
+ return count($this->files);
+ }
+
+ public function getIterator(): TestFileCollectionIterator
+ {
+ return new TestFileCollectionIterator($this);
+ }
+
+ public function isEmpty(): bool
+ {
+ return $this->count() === 0;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php
new file mode 100644
index 000000000..b44c36894
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestFileCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestFileCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var TestFile[]
+ */
+ private $files;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(TestFileCollection $files)
+ {
+ $this->files = $files->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->files);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): TestFile
+ {
+ return $this->files[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php
new file mode 100644
index 000000000..4a6098215
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuite.php
@@ -0,0 +1,65 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class TestSuite
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var TestDirectoryCollection
+ */
+ private $directories;
+
+ /**
+ * @var TestFileCollection
+ */
+ private $files;
+
+ /**
+ * @var FileCollection
+ */
+ private $exclude;
+
+ public function __construct(string $name, TestDirectoryCollection $directories, TestFileCollection $files, FileCollection $exclude)
+ {
+ $this->name = $name;
+ $this->directories = $directories;
+ $this->files = $files;
+ $this->exclude = $exclude;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function directories(): TestDirectoryCollection
+ {
+ return $this->directories;
+ }
+
+ public function files(): TestFileCollection
+ {
+ return $this->files;
+ }
+
+ public function exclude(): FileCollection
+ {
+ return $this->exclude;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php
new file mode 100644
index 000000000..124609d74
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollection.php
@@ -0,0 +1,62 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class TestSuiteCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @var TestSuite[]
+ */
+ private $testSuites;
+
+ /**
+ * @param TestSuite[] $testSuites
+ */
+ public static function fromArray(array $testSuites): self
+ {
+ return new self(...$testSuites);
+ }
+
+ private function __construct(TestSuite ...$testSuites)
+ {
+ $this->testSuites = $testSuites;
+ }
+
+ /**
+ * @return TestSuite[]
+ */
+ public function asArray(): array
+ {
+ return $this->testSuites;
+ }
+
+ public function count(): int
+ {
+ return count($this->testSuites);
+ }
+
+ public function getIterator(): TestSuiteCollectionIterator
+ {
+ return new TestSuiteCollectionIterator($this);
+ }
+
+ public function isEmpty(): bool
+ {
+ return $this->count() === 0;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php
new file mode 100644
index 000000000..33b0f8495
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/TextUI/XmlConfiguration/TestSuite/TestSuiteCollectionIterator.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\TextUI\XmlConfiguration;
+
+use function count;
+use function iterator_count;
+use Countable;
+use Iterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TestSuiteCollectionIterator implements Countable, Iterator
+{
+ /**
+ * @var TestSuite[]
+ */
+ private $testSuites;
+
+ /**
+ * @var int
+ */
+ private $position;
+
+ public function __construct(TestSuiteCollection $testSuites)
+ {
+ $this->testSuites = $testSuites->asArray();
+ }
+
+ public function count(): int
+ {
+ return iterator_count($this);
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return $this->position < count($this->testSuites);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): TestSuite
+ {
+ return $this->testSuites[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Annotation/DocBlock.php b/vendor/phpunit/phpunit/src/Util/Annotation/DocBlock.php
new file mode 100644
index 000000000..6aa069602
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Annotation/DocBlock.php
@@ -0,0 +1,551 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Annotation;
+
+use const JSON_ERROR_NONE;
+use const PREG_OFFSET_CAPTURE;
+use function array_filter;
+use function array_key_exists;
+use function array_map;
+use function array_merge;
+use function array_pop;
+use function array_slice;
+use function array_values;
+use function count;
+use function explode;
+use function file;
+use function implode;
+use function is_array;
+use function is_int;
+use function json_decode;
+use function json_last_error;
+use function json_last_error_msg;
+use function preg_match;
+use function preg_match_all;
+use function preg_replace;
+use function preg_split;
+use function realpath;
+use function rtrim;
+use function sprintf;
+use function str_replace;
+use function strlen;
+use function strpos;
+use function strtolower;
+use function substr;
+use function trim;
+use PharIo\Version\VersionConstraintParser;
+use PHPUnit\Framework\InvalidDataProviderException;
+use PHPUnit\Framework\SkippedTestError;
+use PHPUnit\Framework\Warning;
+use PHPUnit\Util\Exception;
+use PHPUnit\Util\InvalidDataSetException;
+use ReflectionClass;
+use ReflectionException;
+use ReflectionFunctionAbstract;
+use ReflectionMethod;
+use Reflector;
+use Traversable;
+
+/**
+ * This is an abstraction around a PHPUnit-specific docBlock,
+ * allowing us to ask meaningful questions about a specific
+ * reflection symbol.
+ *
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class DocBlock
+{
+ /**
+ * @todo This constant should be private (it's public because of TestTest::testGetProvidedDataRegEx)
+ */
+ public const REGEX_DATA_PROVIDER = '/@dataProvider\s+([a-zA-Z0-9._:-\\\\x7f-\xff]+)/';
+
+ private const REGEX_REQUIRES_VERSION = '/@requires\s+(?P<name>PHP(?:Unit)?)\s+(?P<operator>[<>=!]{0,2})\s*(?P<version>[\d\.-]+(dev|(RC|alpha|beta)[\d\.])?)[ \t]*\r?$/m';
+
+ private const REGEX_REQUIRES_VERSION_CONSTRAINT = '/@requires\s+(?P<name>PHP(?:Unit)?)\s+(?P<constraint>[\d\t \-.|~^]+)[ \t]*\r?$/m';
+
+ private const REGEX_REQUIRES_OS = '/@requires\s+(?P<name>OS(?:FAMILY)?)\s+(?P<value>.+?)[ \t]*\r?$/m';
+
+ private const REGEX_REQUIRES_SETTING = '/@requires\s+(?P<name>setting)\s+(?P<setting>([^ ]+?))\s*(?P<value>[\w\.-]+[\w\.]?)?[ \t]*\r?$/m';
+
+ private const REGEX_REQUIRES = '/@requires\s+(?P<name>function|extension)\s+(?P<value>([^\s<>=!]+))\s*(?P<operator>[<>=!]{0,2})\s*(?P<version>[\d\.-]+[\d\.]?)?[ \t]*\r?$/m';
+
+ private const REGEX_TEST_WITH = '/@testWith\s+/';
+
+ /** @var string */
+ private $docComment;
+
+ /** @var bool */
+ private $isMethod;
+
+ /** @var array<string, array<int, string>> pre-parsed annotations indexed by name and occurrence index */
+ private $symbolAnnotations;
+
+ /**
+ * @var null|array<string, mixed>
+ *
+ * @psalm-var null|(array{
+ * __OFFSET: array<string, int>&array{__FILE: string},
+ * setting?: array<string, string>,
+ * extension_versions?: array<string, array{version: string, operator: string}>
+ * }&array<
+ * string,
+ * string|array{version: string, operator: string}|array{constraint: string}|array<int|string, string>
+ * >)
+ */
+ private $parsedRequirements;
+
+ /** @var int */
+ private $startLine;
+
+ /** @var int */
+ private $endLine;
+
+ /** @var string */
+ private $fileName;
+
+ /** @var string */
+ private $name;
+
+ /**
+ * @var string
+ *
+ * @psalm-var class-string
+ */
+ private $className;
+
+ public static function ofClass(ReflectionClass $class): self
+ {
+ $className = $class->getName();
+
+ return new self(
+ (string) $class->getDocComment(),
+ false,
+ self::extractAnnotationsFromReflector($class),
+ $class->getStartLine(),
+ $class->getEndLine(),
+ $class->getFileName(),
+ $className,
+ $className
+ );
+ }
+
+ /**
+ * @psalm-param class-string $classNameInHierarchy
+ */
+ public static function ofMethod(ReflectionMethod $method, string $classNameInHierarchy): self
+ {
+ return new self(
+ (string) $method->getDocComment(),
+ true,
+ self::extractAnnotationsFromReflector($method),
+ $method->getStartLine(),
+ $method->getEndLine(),
+ $method->getFileName(),
+ $method->getName(),
+ $classNameInHierarchy
+ );
+ }
+
+ /**
+ * Note: we do not preserve an instance of the reflection object, since it cannot be safely (de-)serialized.
+ *
+ * @param array<string, array<int, string>> $symbolAnnotations
+ *
+ * @psalm-param class-string $className
+ */
+ private function __construct(string $docComment, bool $isMethod, array $symbolAnnotations, int $startLine, int $endLine, string $fileName, string $name, string $className)
+ {
+ $this->docComment = $docComment;
+ $this->isMethod = $isMethod;
+ $this->symbolAnnotations = $symbolAnnotations;
+ $this->startLine = $startLine;
+ $this->endLine = $endLine;
+ $this->fileName = $fileName;
+ $this->name = $name;
+ $this->className = $className;
+ }
+
+ /**
+ * @psalm-return array{
+ * __OFFSET: array<string, int>&array{__FILE: string},
+ * setting?: array<string, string>,
+ * extension_versions?: array<string, array{version: string, operator: string}>
+ * }&array<
+ * string,
+ * string|array{version: string, operator: string}|array{constraint: string}|array<int|string, string>
+ * >
+ *
+ * @throws Warning if the requirements version constraint is not well-formed
+ */
+ public function requirements(): array
+ {
+ if ($this->parsedRequirements !== null) {
+ return $this->parsedRequirements;
+ }
+
+ $offset = $this->startLine;
+ $requires = [];
+ $recordedSettings = [];
+ $extensionVersions = [];
+ $recordedOffsets = [
+ '__FILE' => realpath($this->fileName),
+ ];
+
+ // Trim docblock markers, split it into lines and rewind offset to start of docblock
+ $lines = preg_replace(['#^/\*{2}#', '#\*/$#'], '', preg_split('/\r\n|\r|\n/', $this->docComment));
+ $offset -= count($lines);
+
+ foreach ($lines as $line) {
+ if (preg_match(self::REGEX_REQUIRES_OS, $line, $matches)) {
+ $requires[$matches['name']] = $matches['value'];
+ $recordedOffsets[$matches['name']] = $offset;
+ }
+
+ if (preg_match(self::REGEX_REQUIRES_VERSION, $line, $matches)) {
+ $requires[$matches['name']] = [
+ 'version' => $matches['version'],
+ 'operator' => $matches['operator'],
+ ];
+ $recordedOffsets[$matches['name']] = $offset;
+ }
+
+ if (preg_match(self::REGEX_REQUIRES_VERSION_CONSTRAINT, $line, $matches)) {
+ if (!empty($requires[$matches['name']])) {
+ $offset++;
+
+ continue;
+ }
+
+ try {
+ $versionConstraintParser = new VersionConstraintParser;
+
+ $requires[$matches['name'] . '_constraint'] = [
+ 'constraint' => $versionConstraintParser->parse(trim($matches['constraint'])),
+ ];
+ $recordedOffsets[$matches['name'] . '_constraint'] = $offset;
+ } catch (\PharIo\Version\Exception $e) {
+ throw new Warning($e->getMessage(), $e->getCode(), $e);
+ }
+ }
+
+ if (preg_match(self::REGEX_REQUIRES_SETTING, $line, $matches)) {
+ $recordedSettings[$matches['setting']] = $matches['value'];
+ $recordedOffsets['__SETTING_' . $matches['setting']] = $offset;
+ }
+
+ if (preg_match(self::REGEX_REQUIRES, $line, $matches)) {
+ $name = $matches['name'] . 's';
+
+ if (!isset($requires[$name])) {
+ $requires[$name] = [];
+ }
+
+ $requires[$name][] = $matches['value'];
+ $recordedOffsets[$matches['name'] . '_' . $matches['value']] = $offset;
+
+ if ($name === 'extensions' && !empty($matches['version'])) {
+ $extensionVersions[$matches['value']] = [
+ 'version' => $matches['version'],
+ 'operator' => $matches['operator'],
+ ];
+ }
+ }
+
+ $offset++;
+ }
+
+ return $this->parsedRequirements = array_merge(
+ $requires,
+ ['__OFFSET' => $recordedOffsets],
+ array_filter([
+ 'setting' => $recordedSettings,
+ 'extension_versions' => $extensionVersions,
+ ])
+ );
+ }
+
+ /**
+ * Returns the provided data for a method.
+ *
+ * @throws Exception
+ */
+ public function getProvidedData(): ?array
+ {
+ /** @noinspection SuspiciousBinaryOperationInspection */
+ $data = $this->getDataFromDataProviderAnnotation($this->docComment) ?? $this->getDataFromTestWithAnnotation($this->docComment);
+
+ if ($data === null) {
+ return null;
+ }
+
+ if ($data === []) {
+ throw new SkippedTestError;
+ }
+
+ foreach ($data as $key => $value) {
+ if (!is_array($value)) {
+ throw new InvalidDataSetException(
+ sprintf(
+ 'Data set %s is invalid.',
+ is_int($key) ? '#' . $key : '"' . $key . '"'
+ )
+ );
+ }
+ }
+
+ return $data;
+ }
+
+ /**
+ * @psalm-return array<string, array{line: int, value: string}>
+ */
+ public function getInlineAnnotations(): array
+ {
+ $code = file($this->fileName);
+ $lineNumber = $this->startLine;
+ $startLine = $this->startLine - 1;
+ $endLine = $this->endLine - 1;
+ $codeLines = array_slice($code, $startLine, $endLine - $startLine + 1);
+ $annotations = [];
+
+ foreach ($codeLines as $line) {
+ if (preg_match('#/\*\*?\s*@(?P<name>[A-Za-z_-]+)(?:[ \t]+(?P<value>.*?))?[ \t]*\r?\*/$#m', $line, $matches)) {
+ $annotations[strtolower($matches['name'])] = [
+ 'line' => $lineNumber,
+ 'value' => $matches['value'],
+ ];
+ }
+
+ $lineNumber++;
+ }
+
+ return $annotations;
+ }
+
+ public function symbolAnnotations(): array
+ {
+ return $this->symbolAnnotations;
+ }
+
+ public function isHookToBeExecutedBeforeClass(): bool
+ {
+ return $this->isMethod &&
+ false !== strpos($this->docComment, '@beforeClass');
+ }
+
+ public function isHookToBeExecutedAfterClass(): bool
+ {
+ return $this->isMethod &&
+ false !== strpos($this->docComment, '@afterClass');
+ }
+
+ public function isToBeExecutedBeforeTest(): bool
+ {
+ return 1 === preg_match('/@before\b/', $this->docComment);
+ }
+
+ public function isToBeExecutedAfterTest(): bool
+ {
+ return 1 === preg_match('/@after\b/', $this->docComment);
+ }
+
+ public function isToBeExecutedAsPreCondition(): bool
+ {
+ return 1 === preg_match('/@preCondition\b/', $this->docComment);
+ }
+
+ public function isToBeExecutedAsPostCondition(): bool
+ {
+ return 1 === preg_match('/@postCondition\b/', $this->docComment);
+ }
+
+ private function getDataFromDataProviderAnnotation(string $docComment): ?array
+ {
+ $methodName = null;
+ $className = $this->className;
+
+ if ($this->isMethod) {
+ $methodName = $this->name;
+ }
+
+ if (!preg_match_all(self::REGEX_DATA_PROVIDER, $docComment, $matches)) {
+ return null;
+ }
+
+ $result = [];
+
+ foreach ($matches[1] as $match) {
+ $dataProviderMethodNameNamespace = explode('\\', $match);
+ $leaf = explode('::', array_pop($dataProviderMethodNameNamespace));
+ $dataProviderMethodName = array_pop($leaf);
+
+ if (empty($dataProviderMethodNameNamespace)) {
+ $dataProviderMethodNameNamespace = '';
+ } else {
+ $dataProviderMethodNameNamespace = implode('\\', $dataProviderMethodNameNamespace) . '\\';
+ }
+
+ if (empty($leaf)) {
+ $dataProviderClassName = $className;
+ } else {
+ /** @psalm-var class-string $dataProviderClassName */
+ $dataProviderClassName = $dataProviderMethodNameNamespace . array_pop($leaf);
+ }
+
+ try {
+ $dataProviderClass = new ReflectionClass($dataProviderClassName);
+
+ $dataProviderMethod = $dataProviderClass->getMethod(
+ $dataProviderMethodName
+ );
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ // @codeCoverageIgnoreEnd
+ }
+
+ if ($dataProviderMethod->isStatic()) {
+ $object = null;
+ } else {
+ $object = $dataProviderClass->newInstance();
+ }
+
+ if ($dataProviderMethod->getNumberOfParameters() === 0) {
+ $data = $dataProviderMethod->invoke($object);
+ } else {
+ $data = $dataProviderMethod->invoke($object, $methodName);
+ }
+
+ if ($data instanceof Traversable) {
+ $origData = $data;
+ $data = [];
+
+ foreach ($origData as $key => $value) {
+ if (is_int($key)) {
+ $data[] = $value;
+ } elseif (array_key_exists($key, $data)) {
+ throw new InvalidDataProviderException(
+ sprintf(
+ 'The key "%s" has already been defined in the data provider "%s".',
+ $key,
+ $match
+ )
+ );
+ } else {
+ $data[$key] = $value;
+ }
+ }
+ }
+
+ if (is_array($data)) {
+ $result = array_merge($result, $data);
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * @throws Exception
+ */
+ private function getDataFromTestWithAnnotation(string $docComment): ?array
+ {
+ $docComment = $this->cleanUpMultiLineAnnotation($docComment);
+
+ if (!preg_match(self::REGEX_TEST_WITH, $docComment, $matches, PREG_OFFSET_CAPTURE)) {
+ return null;
+ }
+
+ $offset = strlen($matches[0][0]) + $matches[0][1];
+ $annotationContent = substr($docComment, $offset);
+ $data = [];
+
+ foreach (explode("\n", $annotationContent) as $candidateRow) {
+ $candidateRow = trim($candidateRow);
+
+ if ($candidateRow[0] !== '[') {
+ break;
+ }
+
+ $dataSet = json_decode($candidateRow, true);
+
+ if (json_last_error() !== JSON_ERROR_NONE) {
+ throw new Exception(
+ 'The data set for the @testWith annotation cannot be parsed: ' . json_last_error_msg()
+ );
+ }
+
+ $data[] = $dataSet;
+ }
+
+ if (!$data) {
+ throw new Exception('The data set for the @testWith annotation cannot be parsed.');
+ }
+
+ return $data;
+ }
+
+ private function cleanUpMultiLineAnnotation(string $docComment): string
+ {
+ //removing initial ' * ' for docComment
+ $docComment = str_replace("\r\n", "\n", $docComment);
+ $docComment = preg_replace('/' . '\n' . '\s*' . '\*' . '\s?' . '/', "\n", $docComment);
+ $docComment = (string) substr($docComment, 0, -1);
+
+ return rtrim($docComment, "\n");
+ }
+
+ /** @return array<string, array<int, string>> */
+ private static function parseDocBlock(string $docBlock): array
+ {
+ // Strip away the docblock header and footer to ease parsing of one line annotations
+ $docBlock = (string) substr($docBlock, 3, -2);
+ $annotations = [];
+
+ if (preg_match_all('/@(?P<name>[A-Za-z_-]+)(?:[ \t]+(?P<value>.*?))?[ \t]*\r?$/m', $docBlock, $matches)) {
+ $numMatches = count($matches[0]);
+
+ for ($i = 0; $i < $numMatches; $i++) {
+ $annotations[$matches['name'][$i]][] = (string) $matches['value'][$i];
+ }
+ }
+
+ return $annotations;
+ }
+
+ /** @param ReflectionClass|ReflectionFunctionAbstract $reflector */
+ private static function extractAnnotationsFromReflector(Reflector $reflector): array
+ {
+ $annotations = [];
+
+ if ($reflector instanceof ReflectionClass) {
+ $annotations = array_merge(
+ $annotations,
+ ...array_map(
+ static function (ReflectionClass $trait): array
+ {
+ return self::parseDocBlock((string) $trait->getDocComment());
+ },
+ array_values($reflector->getTraits())
+ )
+ );
+ }
+
+ return array_merge(
+ $annotations,
+ self::parseDocBlock((string) $reflector->getDocComment())
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Annotation/Registry.php b/vendor/phpunit/phpunit/src/Util/Annotation/Registry.php
new file mode 100644
index 000000000..8df14cfc0
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Annotation/Registry.php
@@ -0,0 +1,93 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Annotation;
+
+use function array_key_exists;
+use PHPUnit\Util\Exception;
+use ReflectionClass;
+use ReflectionException;
+use ReflectionMethod;
+
+/**
+ * Reflection information, and therefore DocBlock information, is static within
+ * a single PHP process. It is therefore okay to use a Singleton registry here.
+ *
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Registry
+{
+ /** @var null|self */
+ private static $instance;
+
+ /** @var array<string, DocBlock> indexed by class name */
+ private $classDocBlocks = [];
+
+ /** @var array<string, array<string, DocBlock>> indexed by class name and method name */
+ private $methodDocBlocks = [];
+
+ public static function getInstance(): self
+ {
+ return self::$instance ?? self::$instance = new self;
+ }
+
+ private function __construct()
+ {
+ }
+
+ /**
+ * @throws Exception
+ * @psalm-param class-string $class
+ */
+ public function forClassName(string $class): DocBlock
+ {
+ if (array_key_exists($class, $this->classDocBlocks)) {
+ return $this->classDocBlocks[$class];
+ }
+
+ try {
+ $reflection = new ReflectionClass($class);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ return $this->classDocBlocks[$class] = DocBlock::ofClass($reflection);
+ }
+
+ /**
+ * @throws Exception
+ * @psalm-param class-string $classInHierarchy
+ */
+ public function forMethod(string $classInHierarchy, string $method): DocBlock
+ {
+ if (isset($this->methodDocBlocks[$classInHierarchy][$method])) {
+ return $this->methodDocBlocks[$classInHierarchy][$method];
+ }
+
+ try {
+ $reflection = new ReflectionMethod($classInHierarchy, $method);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ return $this->methodDocBlocks[$classInHierarchy][$method] = DocBlock::ofMethod($reflection, $classInHierarchy);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Blacklist.php b/vendor/phpunit/phpunit/src/Util/Blacklist.php
new file mode 100644
index 000000000..3b416e142
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Blacklist.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+/**
+ * @deprecated Use ExcludeList instead
+ *
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class Blacklist
+{
+ public static function addDirectory(string $directory): void
+ {
+ ExcludeList::addDirectory($directory);
+ }
+
+ /**
+ * @throws Exception
+ *
+ * @return string[]
+ */
+ public function getBlacklistedDirectories(): array
+ {
+ return (new ExcludeList)->getExcludedDirectories();
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function isBlacklisted(string $file): bool
+ {
+ return (new ExcludeList)->isExcluded($file);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Color.php b/vendor/phpunit/phpunit/src/Util/Color.php
new file mode 100644
index 000000000..b96eb4747
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Color.php
@@ -0,0 +1,159 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const DIRECTORY_SEPARATOR;
+use function array_keys;
+use function array_map;
+use function array_values;
+use function count;
+use function explode;
+use function implode;
+use function min;
+use function preg_replace;
+use function preg_replace_callback;
+use function sprintf;
+use function strtr;
+use function trim;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Color
+{
+ /**
+ * @var array<string,string>
+ */
+ private const WHITESPACE_MAP = [
+ ' ' => '·',
+ "\t" => '⇥',
+ ];
+
+ /**
+ * @var array<string,string>
+ */
+ private const WHITESPACE_EOL_MAP = [
+ ' ' => '·',
+ "\t" => '⇥',
+ "\n" => '↵',
+ "\r" => '⟵',
+ ];
+
+ /**
+ * @var array<string,string>
+ */
+ private static $ansiCodes = [
+ 'reset' => '0',
+ 'bold' => '1',
+ 'dim' => '2',
+ 'dim-reset' => '22',
+ 'underlined' => '4',
+ 'fg-default' => '39',
+ 'fg-black' => '30',
+ 'fg-red' => '31',
+ 'fg-green' => '32',
+ 'fg-yellow' => '33',
+ 'fg-blue' => '34',
+ 'fg-magenta' => '35',
+ 'fg-cyan' => '36',
+ 'fg-white' => '37',
+ 'bg-default' => '49',
+ 'bg-black' => '40',
+ 'bg-red' => '41',
+ 'bg-green' => '42',
+ 'bg-yellow' => '43',
+ 'bg-blue' => '44',
+ 'bg-magenta' => '45',
+ 'bg-cyan' => '46',
+ 'bg-white' => '47',
+ ];
+
+ public static function colorize(string $color, string $buffer): string
+ {
+ if (trim($buffer) === '') {
+ return $buffer;
+ }
+
+ $codes = array_map('\trim', explode(',', $color));
+ $styles = [];
+
+ foreach ($codes as $code) {
+ if (isset(self::$ansiCodes[$code])) {
+ $styles[] = self::$ansiCodes[$code] ?? '';
+ }
+ }
+
+ if (empty($styles)) {
+ return $buffer;
+ }
+
+ return self::optimizeColor(sprintf("\x1b[%sm", implode(';', $styles)) . $buffer . "\x1b[0m");
+ }
+
+ public static function colorizePath(string $path, ?string $prevPath = null, bool $colorizeFilename = false): string
+ {
+ if ($prevPath === null) {
+ $prevPath = '';
+ }
+
+ $path = explode(DIRECTORY_SEPARATOR, $path);
+ $prevPath = explode(DIRECTORY_SEPARATOR, $prevPath);
+
+ for ($i = 0; $i < min(count($path), count($prevPath)); $i++) {
+ if ($path[$i] == $prevPath[$i]) {
+ $path[$i] = self::dim($path[$i]);
+ }
+ }
+
+ if ($colorizeFilename) {
+ $last = count($path) - 1;
+ $path[$last] = preg_replace_callback(
+ '/([\-_\.]+|phpt$)/',
+ static function ($matches)
+ {
+ return self::dim($matches[0]);
+ },
+ $path[$last]
+ );
+ }
+
+ return self::optimizeColor(implode(self::dim(DIRECTORY_SEPARATOR), $path));
+ }
+
+ public static function dim(string $buffer): string
+ {
+ if (trim($buffer) === '') {
+ return $buffer;
+ }
+
+ return "\e[2m{$buffer}\e[22m";
+ }
+
+ public static function visualizeWhitespace(string $buffer, bool $visualizeEOL = false): string
+ {
+ $replaceMap = $visualizeEOL ? self::WHITESPACE_EOL_MAP : self::WHITESPACE_MAP;
+
+ return preg_replace_callback('/\s+/', static function ($matches) use ($replaceMap)
+ {
+ return self::dim(strtr($matches[0], $replaceMap));
+ }, $buffer);
+ }
+
+ private static function optimizeColor(string $buffer): string
+ {
+ $patterns = [
+ "/\e\\[22m\e\\[2m/" => '',
+ "/\e\\[([^m]*)m\e\\[([1-9][0-9;]*)m/" => "\e[$1;$2m",
+ "/(\e\\[[^m]*m)+(\e\\[0m)/" => '$2',
+ ];
+
+ return preg_replace(array_keys($patterns), array_values($patterns), $buffer);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/ErrorHandler.php b/vendor/phpunit/phpunit/src/Util/ErrorHandler.php
new file mode 100644
index 000000000..f8566347e
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/ErrorHandler.php
@@ -0,0 +1,156 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const E_DEPRECATED;
+use const E_NOTICE;
+use const E_STRICT;
+use const E_USER_DEPRECATED;
+use const E_USER_NOTICE;
+use const E_USER_WARNING;
+use const E_WARNING;
+use function error_reporting;
+use function restore_error_handler;
+use function set_error_handler;
+use PHPUnit\Framework\Error\Deprecated;
+use PHPUnit\Framework\Error\Error;
+use PHPUnit\Framework\Error\Notice;
+use PHPUnit\Framework\Error\Warning;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class ErrorHandler
+{
+ /**
+ * @var bool
+ */
+ private $convertDeprecationsToExceptions;
+
+ /**
+ * @var bool
+ */
+ private $convertErrorsToExceptions;
+
+ /**
+ * @var bool
+ */
+ private $convertNoticesToExceptions;
+
+ /**
+ * @var bool
+ */
+ private $convertWarningsToExceptions;
+
+ /**
+ * @var bool
+ */
+ private $registered = false;
+
+ public static function invokeIgnoringWarnings(callable $callable)
+ {
+ set_error_handler(
+ static function ($errorNumber, $errorString)
+ {
+ if ($errorNumber === E_WARNING) {
+ return;
+ }
+
+ return false;
+ }
+ );
+
+ $result = $callable();
+
+ restore_error_handler();
+
+ return $result;
+ }
+
+ public function __construct(bool $convertDeprecationsToExceptions, bool $convertErrorsToExceptions, bool $convertNoticesToExceptions, bool $convertWarningsToExceptions)
+ {
+ $this->convertDeprecationsToExceptions = $convertDeprecationsToExceptions;
+ $this->convertErrorsToExceptions = $convertErrorsToExceptions;
+ $this->convertNoticesToExceptions = $convertNoticesToExceptions;
+ $this->convertWarningsToExceptions = $convertWarningsToExceptions;
+ }
+
+ public function __invoke(int $errorNumber, string $errorString, string $errorFile, int $errorLine): bool
+ {
+ /*
+ * Do not raise an exception when the error suppression operator (@) was used.
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/3739
+ */
+ if (!($errorNumber & error_reporting())) {
+ return false;
+ }
+
+ switch ($errorNumber) {
+ case E_NOTICE:
+ case E_USER_NOTICE:
+ case E_STRICT:
+ if (!$this->convertNoticesToExceptions) {
+ return false;
+ }
+
+ throw new Notice($errorString, $errorNumber, $errorFile, $errorLine);
+
+ case E_WARNING:
+ case E_USER_WARNING:
+ if (!$this->convertWarningsToExceptions) {
+ return false;
+ }
+
+ throw new Warning($errorString, $errorNumber, $errorFile, $errorLine);
+
+ case E_DEPRECATED:
+ case E_USER_DEPRECATED:
+ if (!$this->convertDeprecationsToExceptions) {
+ return false;
+ }
+
+ throw new Deprecated($errorString, $errorNumber, $errorFile, $errorLine);
+
+ default:
+ if (!$this->convertErrorsToExceptions) {
+ return false;
+ }
+
+ throw new Error($errorString, $errorNumber, $errorFile, $errorLine);
+ }
+ }
+
+ public function register(): void
+ {
+ if ($this->registered) {
+ return;
+ }
+
+ $oldErrorHandler = set_error_handler($this);
+
+ if ($oldErrorHandler !== null) {
+ restore_error_handler();
+
+ return;
+ }
+
+ $this->registered = true;
+ }
+
+ public function unregister(): void
+ {
+ if (!$this->registered) {
+ return;
+ }
+
+ restore_error_handler();
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Exception.php b/vendor/phpunit/phpunit/src/Util/Exception.php
new file mode 100644
index 000000000..6bcb3d140
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Exception.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use RuntimeException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Exception extends RuntimeException implements \PHPUnit\Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Util/ExcludeList.php b/vendor/phpunit/phpunit/src/Util/ExcludeList.php
new file mode 100644
index 000000000..c7e6704a8
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/ExcludeList.php
@@ -0,0 +1,261 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const DIRECTORY_SEPARATOR;
+use function class_exists;
+use function defined;
+use function dirname;
+use function is_dir;
+use function realpath;
+use function sprintf;
+use function strpos;
+use function sys_get_temp_dir;
+use Composer\Autoload\ClassLoader;
+use DeepCopy\DeepCopy;
+use Doctrine\Instantiator\Instantiator;
+use PharIo\Manifest\Manifest;
+use PharIo\Version\Version as PharIoVersion;
+use phpDocumentor\Reflection\DocBlock;
+use phpDocumentor\Reflection\Project;
+use phpDocumentor\Reflection\Type;
+use PhpParser\Parser;
+use PHPUnit\Framework\TestCase;
+use Prophecy\Prophet;
+use ReflectionClass;
+use ReflectionException;
+use SebastianBergmann\CliParser\Parser as CliParser;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeUnit\CodeUnit;
+use SebastianBergmann\CodeUnitReverseLookup\Wizard;
+use SebastianBergmann\Comparator\Comparator;
+use SebastianBergmann\Complexity\Calculator;
+use SebastianBergmann\Diff\Diff;
+use SebastianBergmann\Environment\Runtime;
+use SebastianBergmann\Exporter\Exporter;
+use SebastianBergmann\FileIterator\Facade as FileIteratorFacade;
+use SebastianBergmann\GlobalState\Snapshot;
+use SebastianBergmann\Invoker\Invoker;
+use SebastianBergmann\LinesOfCode\Counter;
+use SebastianBergmann\ObjectEnumerator\Enumerator;
+use SebastianBergmann\RecursionContext\Context;
+use SebastianBergmann\ResourceOperations\ResourceOperations;
+use SebastianBergmann\Template\Template;
+use SebastianBergmann\Timer\Timer;
+use SebastianBergmann\Type\TypeName;
+use SebastianBergmann\Version;
+use Symfony\Polyfill\Ctype\Ctype;
+use TheSeer\Tokenizer\Tokenizer;
+use Webmozart\Assert\Assert;
+
+/**
+ * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
+ */
+final class ExcludeList
+{
+ /**
+ * @var array<string,int>
+ */
+ private const EXCLUDED_CLASS_NAMES = [
+ // composer
+ ClassLoader::class => 1,
+
+ // doctrine/instantiator
+ Instantiator::class => 1,
+
+ // myclabs/deepcopy
+ DeepCopy::class => 1,
+
+ // nikic/php-parser
+ Parser::class => 1,
+
+ // phar-io/manifest
+ Manifest::class => 1,
+
+ // phar-io/version
+ PharIoVersion::class => 1,
+
+ // phpdocumentor/reflection-common
+ Project::class => 1,
+
+ // phpdocumentor/reflection-docblock
+ DocBlock::class => 1,
+
+ // phpdocumentor/type-resolver
+ Type::class => 1,
+
+ // phpspec/prophecy
+ Prophet::class => 1,
+
+ // phpunit/phpunit
+ TestCase::class => 2,
+
+ // phpunit/php-code-coverage
+ CodeCoverage::class => 1,
+
+ // phpunit/php-file-iterator
+ FileIteratorFacade::class => 1,
+
+ // phpunit/php-invoker
+ Invoker::class => 1,
+
+ // phpunit/php-text-template
+ Template::class => 1,
+
+ // phpunit/php-timer
+ Timer::class => 1,
+
+ // sebastian/cli-parser
+ CliParser::class => 1,
+
+ // sebastian/code-unit
+ CodeUnit::class => 1,
+
+ // sebastian/code-unit-reverse-lookup
+ Wizard::class => 1,
+
+ // sebastian/comparator
+ Comparator::class => 1,
+
+ // sebastian/complexity
+ Calculator::class => 1,
+
+ // sebastian/diff
+ Diff::class => 1,
+
+ // sebastian/environment
+ Runtime::class => 1,
+
+ // sebastian/exporter
+ Exporter::class => 1,
+
+ // sebastian/global-state
+ Snapshot::class => 1,
+
+ // sebastian/lines-of-code
+ Counter::class => 1,
+
+ // sebastian/object-enumerator
+ Enumerator::class => 1,
+
+ // sebastian/recursion-context
+ Context::class => 1,
+
+ // sebastian/resource-operations
+ ResourceOperations::class => 1,
+
+ // sebastian/type
+ TypeName::class => 1,
+
+ // sebastian/version
+ Version::class => 1,
+
+ // symfony/polyfill-ctype
+ Ctype::class => 1,
+
+ // theseer/tokenizer
+ Tokenizer::class => 1,
+
+ // webmozart/assert
+ Assert::class => 1,
+ ];
+
+ /**
+ * @var string[]
+ */
+ private static $directories;
+
+ public static function addDirectory(string $directory): void
+ {
+ if (!is_dir($directory)) {
+ throw new Exception(
+ sprintf(
+ '"%s" is not a directory',
+ $directory
+ )
+ );
+ }
+
+ self::$directories[] = realpath($directory);
+ }
+
+ /**
+ * @throws Exception
+ *
+ * @return string[]
+ */
+ public function getExcludedDirectories(): array
+ {
+ $this->initialize();
+
+ return self::$directories;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function isExcluded(string $file): bool
+ {
+ if (defined('PHPUNIT_TESTSUITE')) {
+ return false;
+ }
+
+ $this->initialize();
+
+ foreach (self::$directories as $directory) {
+ if (strpos($file, $directory) === 0) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * @throws Exception
+ */
+ private function initialize(): void
+ {
+ if (self::$directories === null) {
+ self::$directories = [];
+
+ foreach (self::EXCLUDED_CLASS_NAMES as $className => $parent) {
+ if (!class_exists($className)) {
+ continue;
+ }
+
+ try {
+ $directory = (new ReflectionClass($className))->getFileName();
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ for ($i = 0; $i < $parent; $i++) {
+ $directory = dirname($directory);
+ }
+
+ self::$directories[] = $directory;
+ }
+
+ // Hide process isolation workaround on Windows.
+ if (DIRECTORY_SEPARATOR === '\\') {
+ // tempnam() prefix is limited to first 3 chars.
+ // @see https://php.net/manual/en/function.tempnam.php
+ self::$directories[] = sys_get_temp_dir() . '\\PHP';
+ }
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/FileLoader.php b/vendor/phpunit/phpunit/src/Util/FileLoader.php
new file mode 100644
index 000000000..732870723
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/FileLoader.php
@@ -0,0 +1,83 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const DIRECTORY_SEPARATOR;
+use function array_diff;
+use function array_keys;
+use function fopen;
+use function get_defined_vars;
+use function sprintf;
+use function stream_resolve_include_path;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class FileLoader
+{
+ /**
+ * Checks if a PHP sourcecode file is readable. The sourcecode file is loaded through the load() method.
+ *
+ * As a fallback, PHP looks in the directory of the file executing the stream_resolve_include_path function.
+ * We do not want to load the Test.php file here, so skip it if it found that.
+ * PHP prioritizes the include_path setting, so if the current directory is in there, it will first look in the
+ * current working directory.
+ *
+ * @throws Exception
+ */
+ public static function checkAndLoad(string $filename): string
+ {
+ $includePathFilename = stream_resolve_include_path($filename);
+
+ $localFile = __DIR__ . DIRECTORY_SEPARATOR . $filename;
+
+ if (!$includePathFilename ||
+ $includePathFilename === $localFile ||
+ !self::isReadable($includePathFilename)) {
+ throw new Exception(
+ sprintf('Cannot open file "%s".' . "\n", $filename)
+ );
+ }
+
+ self::load($includePathFilename);
+
+ return $includePathFilename;
+ }
+
+ /**
+ * Loads a PHP sourcefile.
+ */
+ public static function load(string $filename): void
+ {
+ $oldVariableNames = array_keys(get_defined_vars());
+
+ /**
+ * @noinspection PhpIncludeInspection
+ * @psalm-suppress UnresolvableInclude
+ */
+ include_once $filename;
+
+ $newVariables = get_defined_vars();
+
+ foreach (array_diff(array_keys($newVariables), $oldVariableNames) as $variableName) {
+ if ($variableName !== 'oldVariableNames') {
+ $GLOBALS[$variableName] = $newVariables[$variableName];
+ }
+ }
+ }
+
+ /**
+ * @see https://github.com/sebastianbergmann/phpunit/pull/2751
+ */
+ private static function isReadable(string $filename): bool
+ {
+ return @fopen($filename, 'r') !== false;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Filesystem.php b/vendor/phpunit/phpunit/src/Util/Filesystem.php
new file mode 100644
index 000000000..35b2690b1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Filesystem.php
@@ -0,0 +1,41 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const DIRECTORY_SEPARATOR;
+use function is_dir;
+use function mkdir;
+use function str_replace;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Filesystem
+{
+ /**
+ * Maps class names to source file names.
+ *
+ * - PEAR CS: Foo_Bar_Baz -> Foo/Bar/Baz.php
+ * - Namespace: Foo\Bar\Baz -> Foo/Bar/Baz.php
+ */
+ public static function classNameToFilename(string $className): string
+ {
+ return str_replace(
+ ['_', '\\'],
+ DIRECTORY_SEPARATOR,
+ $className
+ ) . '.php';
+ }
+
+ public static function createDirectory(string $directory): bool
+ {
+ return !(!is_dir($directory) && !@mkdir($directory, 0777, true) && !is_dir($directory));
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Filter.php b/vendor/phpunit/phpunit/src/Util/Filter.php
new file mode 100644
index 000000000..42563937d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Filter.php
@@ -0,0 +1,115 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use function array_unshift;
+use function defined;
+use function in_array;
+use function is_file;
+use function realpath;
+use function sprintf;
+use function strpos;
+use PHPUnit\Framework\Exception;
+use PHPUnit\Framework\SyntheticError;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Filter
+{
+ /**
+ * @throws Exception
+ */
+ public static function getFilteredStacktrace(Throwable $t): string
+ {
+ $filteredStacktrace = '';
+
+ if ($t instanceof SyntheticError) {
+ $eTrace = $t->getSyntheticTrace();
+ $eFile = $t->getSyntheticFile();
+ $eLine = $t->getSyntheticLine();
+ } elseif ($t instanceof Exception) {
+ $eTrace = $t->getSerializableTrace();
+ $eFile = $t->getFile();
+ $eLine = $t->getLine();
+ } else {
+ if ($t->getPrevious()) {
+ $t = $t->getPrevious();
+ }
+
+ $eTrace = $t->getTrace();
+ $eFile = $t->getFile();
+ $eLine = $t->getLine();
+ }
+
+ if (!self::frameExists($eTrace, $eFile, $eLine)) {
+ array_unshift(
+ $eTrace,
+ ['file' => $eFile, 'line' => $eLine]
+ );
+ }
+
+ $prefix = defined('__PHPUNIT_PHAR_ROOT__') ? __PHPUNIT_PHAR_ROOT__ : false;
+ $excludeList = new ExcludeList;
+
+ foreach ($eTrace as $frame) {
+ if (self::shouldPrintFrame($frame, $prefix, $excludeList)) {
+ $filteredStacktrace .= sprintf(
+ "%s:%s\n",
+ $frame['file'],
+ $frame['line'] ?? '?'
+ );
+ }
+ }
+
+ return $filteredStacktrace;
+ }
+
+ private static function shouldPrintFrame(array $frame, $prefix, ExcludeList $excludeList): bool
+ {
+ if (!isset($frame['file'])) {
+ return false;
+ }
+
+ $file = $frame['file'];
+ $fileIsNotPrefixed = $prefix === false || strpos($file, $prefix) !== 0;
+
+ // @see https://github.com/sebastianbergmann/phpunit/issues/4033
+ if (isset($GLOBALS['_SERVER']['SCRIPT_NAME'])) {
+ $script = realpath($GLOBALS['_SERVER']['SCRIPT_NAME']);
+ } else {
+ $script = '';
+ }
+
+ return is_file($file) &&
+ self::fileIsExcluded($file, $excludeList) &&
+ $fileIsNotPrefixed &&
+ $file !== $script;
+ }
+
+ private static function fileIsExcluded(string $file, ExcludeList $excludeList): bool
+ {
+ return (empty($GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST']) ||
+ !in_array($file, $GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST'], true)) &&
+ !$excludeList->isExcluded($file);
+ }
+
+ private static function frameExists(array $trace, string $file, int $line): bool
+ {
+ foreach ($trace as $frame) {
+ if (isset($frame['file'], $frame['line']) && $frame['file'] === $file && $frame['line'] === $line) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/GlobalState.php b/vendor/phpunit/phpunit/src/Util/GlobalState.php
new file mode 100644
index 000000000..cc5c22286
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/GlobalState.php
@@ -0,0 +1,203 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use function array_keys;
+use function array_reverse;
+use function array_shift;
+use function defined;
+use function get_defined_constants;
+use function get_included_files;
+use function in_array;
+use function ini_get_all;
+use function is_array;
+use function is_file;
+use function is_scalar;
+use function preg_match;
+use function serialize;
+use function sprintf;
+use function strpos;
+use function strtr;
+use function substr;
+use function var_export;
+use Closure;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class GlobalState
+{
+ /**
+ * @var string[]
+ */
+ private const SUPER_GLOBAL_ARRAYS = [
+ '_ENV',
+ '_POST',
+ '_GET',
+ '_COOKIE',
+ '_SERVER',
+ '_FILES',
+ '_REQUEST',
+ ];
+
+ /**
+ * @throws Exception
+ */
+ public static function getIncludedFilesAsString(): string
+ {
+ return self::processIncludedFilesAsString(get_included_files());
+ }
+
+ /**
+ * @param string[] $files
+ *
+ * @throws Exception
+ */
+ public static function processIncludedFilesAsString(array $files): string
+ {
+ $excludeList = new ExcludeList;
+ $prefix = false;
+ $result = '';
+
+ if (defined('__PHPUNIT_PHAR__')) {
+ $prefix = 'phar://' . __PHPUNIT_PHAR__ . '/';
+ }
+
+ // Do not process bootstrap script
+ array_shift($files);
+
+ // If bootstrap script was a Composer bin proxy, skip the second entry as well
+ if (substr(strtr($files[0], '\\', '/'), -24) === '/phpunit/phpunit/phpunit') {
+ array_shift($files);
+ }
+
+ foreach (array_reverse($files) as $file) {
+ if (!empty($GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST']) &&
+ in_array($file, $GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST'], true)) {
+ continue;
+ }
+
+ if ($prefix !== false && strpos($file, $prefix) === 0) {
+ continue;
+ }
+
+ // Skip virtual file system protocols
+ if (preg_match('/^(vfs|phpvfs[a-z0-9]+):/', $file)) {
+ continue;
+ }
+
+ if (!$excludeList->isExcluded($file) && is_file($file)) {
+ $result = 'require_once \'' . $file . "';\n" . $result;
+ }
+ }
+
+ return $result;
+ }
+
+ public static function getIniSettingsAsString(): string
+ {
+ $result = '';
+
+ foreach (ini_get_all(null, false) as $key => $value) {
+ $result .= sprintf(
+ '@ini_set(%s, %s);' . "\n",
+ self::exportVariable($key),
+ self::exportVariable((string) $value)
+ );
+ }
+
+ return $result;
+ }
+
+ public static function getConstantsAsString(): string
+ {
+ $constants = get_defined_constants(true);
+ $result = '';
+
+ if (isset($constants['user'])) {
+ foreach ($constants['user'] as $name => $value) {
+ $result .= sprintf(
+ 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n",
+ $name,
+ $name,
+ self::exportVariable($value)
+ );
+ }
+ }
+
+ return $result;
+ }
+
+ public static function getGlobalsAsString(): string
+ {
+ $result = '';
+
+ foreach (self::SUPER_GLOBAL_ARRAYS as $superGlobalArray) {
+ if (isset($GLOBALS[$superGlobalArray]) && is_array($GLOBALS[$superGlobalArray])) {
+ foreach (array_keys($GLOBALS[$superGlobalArray]) as $key) {
+ if ($GLOBALS[$superGlobalArray][$key] instanceof Closure) {
+ continue;
+ }
+
+ $result .= sprintf(
+ '$GLOBALS[\'%s\'][\'%s\'] = %s;' . "\n",
+ $superGlobalArray,
+ $key,
+ self::exportVariable($GLOBALS[$superGlobalArray][$key])
+ );
+ }
+ }
+ }
+
+ $excludeList = self::SUPER_GLOBAL_ARRAYS;
+ $excludeList[] = 'GLOBALS';
+
+ foreach (array_keys($GLOBALS) as $key) {
+ if (!$GLOBALS[$key] instanceof Closure && !in_array($key, $excludeList, true)) {
+ $result .= sprintf(
+ '$GLOBALS[\'%s\'] = %s;' . "\n",
+ $key,
+ self::exportVariable($GLOBALS[$key])
+ );
+ }
+ }
+
+ return $result;
+ }
+
+ private static function exportVariable($variable): string
+ {
+ if (is_scalar($variable) || $variable === null ||
+ (is_array($variable) && self::arrayOnlyContainsScalars($variable))) {
+ return var_export($variable, true);
+ }
+
+ return 'unserialize(' . var_export(serialize($variable), true) . ')';
+ }
+
+ private static function arrayOnlyContainsScalars(array $array): bool
+ {
+ $result = true;
+
+ foreach ($array as $element) {
+ if (is_array($element)) {
+ $result = self::arrayOnlyContainsScalars($element);
+ } elseif (!is_scalar($element) && $element !== null) {
+ $result = false;
+ }
+
+ if (!$result) {
+ break;
+ }
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/InvalidDataSetException.php b/vendor/phpunit/phpunit/src/Util/InvalidDataSetException.php
new file mode 100644
index 000000000..3493d113a
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/InvalidDataSetException.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use RuntimeException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvalidDataSetException extends RuntimeException implements \PHPUnit\Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Json.php b/vendor/phpunit/phpunit/src/Util/Json.php
new file mode 100644
index 000000000..752c1fd60
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Json.php
@@ -0,0 +1,98 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const JSON_PRETTY_PRINT;
+use const JSON_UNESCAPED_SLASHES;
+use const JSON_UNESCAPED_UNICODE;
+use function count;
+use function is_array;
+use function is_object;
+use function json_decode;
+use function json_encode;
+use function json_last_error;
+use function ksort;
+use PHPUnit\Framework\Exception;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Json
+{
+ /**
+ * Prettify json string.
+ *
+ * @throws \PHPUnit\Framework\Exception
+ */
+ public static function prettify(string $json): string
+ {
+ $decodedJson = json_decode($json, false);
+
+ if (json_last_error()) {
+ throw new Exception(
+ 'Cannot prettify invalid json'
+ );
+ }
+
+ return json_encode($decodedJson, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
+ }
+
+ /**
+ * To allow comparison of JSON strings, first process them into a consistent
+ * format so that they can be compared as strings.
+ *
+ * @return array ($error, $canonicalized_json) The $error parameter is used
+ * to indicate an error decoding the json. This is used to avoid ambiguity
+ * with JSON strings consisting entirely of 'null' or 'false'.
+ */
+ public static function canonicalize(string $json): array
+ {
+ $decodedJson = json_decode($json);
+
+ if (json_last_error()) {
+ return [true, null];
+ }
+
+ self::recursiveSort($decodedJson);
+
+ $reencodedJson = json_encode($decodedJson);
+
+ return [false, $reencodedJson];
+ }
+
+ /**
+ * JSON object keys are unordered while PHP array keys are ordered.
+ *
+ * Sort all array keys to ensure both the expected and actual values have
+ * their keys in the same order.
+ */
+ private static function recursiveSort(&$json): void
+ {
+ if (!is_array($json)) {
+ // If the object is not empty, change it to an associative array
+ // so we can sort the keys (and we will still re-encode it
+ // correctly, since PHP encodes associative arrays as JSON objects.)
+ // But EMPTY objects MUST remain empty objects. (Otherwise we will
+ // re-encode it as a JSON array rather than a JSON object.)
+ // See #2919.
+ if (is_object($json) && count((array) $json) > 0) {
+ $json = (array) $json;
+ } else {
+ return;
+ }
+ }
+
+ ksort($json);
+
+ foreach ($json as $key => &$value) {
+ self::recursiveSort($value);
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Log/JUnit.php b/vendor/phpunit/phpunit/src/Util/Log/JUnit.php
new file mode 100644
index 000000000..7a97682fc
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Log/JUnit.php
@@ -0,0 +1,424 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Log;
+
+use function class_exists;
+use function get_class;
+use function method_exists;
+use function sprintf;
+use function str_replace;
+use function trim;
+use DOMDocument;
+use DOMElement;
+use PHPUnit\Framework\AssertionFailedError;
+use PHPUnit\Framework\ExceptionWrapper;
+use PHPUnit\Framework\SelfDescribing;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestFailure;
+use PHPUnit\Framework\TestListener;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Framework\Warning;
+use PHPUnit\Util\Exception;
+use PHPUnit\Util\Filter;
+use PHPUnit\Util\Printer;
+use PHPUnit\Util\Xml;
+use ReflectionClass;
+use ReflectionException;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class JUnit extends Printer implements TestListener
+{
+ /**
+ * @var DOMDocument
+ */
+ private $document;
+
+ /**
+ * @var DOMElement
+ */
+ private $root;
+
+ /**
+ * @var bool
+ */
+ private $reportRiskyTests = false;
+
+ /**
+ * @var DOMElement[]
+ */
+ private $testSuites = [];
+
+ /**
+ * @var int[]
+ */
+ private $testSuiteTests = [0];
+
+ /**
+ * @var int[]
+ */
+ private $testSuiteAssertions = [0];
+
+ /**
+ * @var int[]
+ */
+ private $testSuiteErrors = [0];
+
+ /**
+ * @var int[]
+ */
+ private $testSuiteWarnings = [0];
+
+ /**
+ * @var int[]
+ */
+ private $testSuiteFailures = [0];
+
+ /**
+ * @var int[]
+ */
+ private $testSuiteSkipped = [0];
+
+ /**
+ * @var int[]
+ */
+ private $testSuiteTimes = [0];
+
+ /**
+ * @var int
+ */
+ private $testSuiteLevel = 0;
+
+ /**
+ * @var DOMElement
+ */
+ private $currentTestCase;
+
+ /**
+ * @param null|mixed $out
+ */
+ public function __construct($out = null, bool $reportRiskyTests = false)
+ {
+ $this->document = new DOMDocument('1.0', 'UTF-8');
+ $this->document->formatOutput = true;
+
+ $this->root = $this->document->createElement('testsuites');
+ $this->document->appendChild($this->root);
+
+ parent::__construct($out);
+
+ $this->reportRiskyTests = $reportRiskyTests;
+ }
+
+ /**
+ * Flush buffer and close output.
+ */
+ public function flush(): void
+ {
+ $this->write($this->getXML());
+
+ parent::flush();
+ }
+
+ /**
+ * An error occurred.
+ */
+ public function addError(Test $test, Throwable $t, float $time): void
+ {
+ $this->doAddFault($test, $t, 'error');
+ $this->testSuiteErrors[$this->testSuiteLevel]++;
+ }
+
+ /**
+ * A warning occurred.
+ */
+ public function addWarning(Test $test, Warning $e, float $time): void
+ {
+ $this->doAddFault($test, $e, 'warning');
+ $this->testSuiteWarnings[$this->testSuiteLevel]++;
+ }
+
+ /**
+ * A failure occurred.
+ */
+ public function addFailure(Test $test, AssertionFailedError $e, float $time): void
+ {
+ $this->doAddFault($test, $e, 'failure');
+ $this->testSuiteFailures[$this->testSuiteLevel]++;
+ }
+
+ /**
+ * Incomplete test.
+ */
+ public function addIncompleteTest(Test $test, Throwable $t, float $time): void
+ {
+ $this->doAddSkipped();
+ }
+
+ /**
+ * Risky test.
+ */
+ public function addRiskyTest(Test $test, Throwable $t, float $time): void
+ {
+ if (!$this->reportRiskyTests) {
+ return;
+ }
+
+ $this->doAddFault($test, $t, 'error');
+ $this->testSuiteErrors[$this->testSuiteLevel]++;
+ }
+
+ /**
+ * Skipped test.
+ */
+ public function addSkippedTest(Test $test, Throwable $t, float $time): void
+ {
+ $this->doAddSkipped();
+ }
+
+ /**
+ * A testsuite started.
+ */
+ public function startTestSuite(TestSuite $suite): void
+ {
+ $testSuite = $this->document->createElement('testsuite');
+ $testSuite->setAttribute('name', $suite->getName());
+
+ if (class_exists($suite->getName(), false)) {
+ try {
+ $class = new ReflectionClass($suite->getName());
+
+ $testSuite->setAttribute('file', $class->getFileName());
+ } catch (ReflectionException $e) {
+ }
+ }
+
+ if ($this->testSuiteLevel > 0) {
+ $this->testSuites[$this->testSuiteLevel]->appendChild($testSuite);
+ } else {
+ $this->root->appendChild($testSuite);
+ }
+
+ $this->testSuiteLevel++;
+ $this->testSuites[$this->testSuiteLevel] = $testSuite;
+ $this->testSuiteTests[$this->testSuiteLevel] = 0;
+ $this->testSuiteAssertions[$this->testSuiteLevel] = 0;
+ $this->testSuiteErrors[$this->testSuiteLevel] = 0;
+ $this->testSuiteWarnings[$this->testSuiteLevel] = 0;
+ $this->testSuiteFailures[$this->testSuiteLevel] = 0;
+ $this->testSuiteSkipped[$this->testSuiteLevel] = 0;
+ $this->testSuiteTimes[$this->testSuiteLevel] = 0;
+ }
+
+ /**
+ * A testsuite ended.
+ */
+ public function endTestSuite(TestSuite $suite): void
+ {
+ $this->testSuites[$this->testSuiteLevel]->setAttribute(
+ 'tests',
+ (string) $this->testSuiteTests[$this->testSuiteLevel]
+ );
+
+ $this->testSuites[$this->testSuiteLevel]->setAttribute(
+ 'assertions',
+ (string) $this->testSuiteAssertions[$this->testSuiteLevel]
+ );
+
+ $this->testSuites[$this->testSuiteLevel]->setAttribute(
+ 'errors',
+ (string) $this->testSuiteErrors[$this->testSuiteLevel]
+ );
+
+ $this->testSuites[$this->testSuiteLevel]->setAttribute(
+ 'warnings',
+ (string) $this->testSuiteWarnings[$this->testSuiteLevel]
+ );
+
+ $this->testSuites[$this->testSuiteLevel]->setAttribute(
+ 'failures',
+ (string) $this->testSuiteFailures[$this->testSuiteLevel]
+ );
+
+ $this->testSuites[$this->testSuiteLevel]->setAttribute(
+ 'skipped',
+ (string) $this->testSuiteSkipped[$this->testSuiteLevel]
+ );
+
+ $this->testSuites[$this->testSuiteLevel]->setAttribute(
+ 'time',
+ sprintf('%F', $this->testSuiteTimes[$this->testSuiteLevel])
+ );
+
+ if ($this->testSuiteLevel > 1) {
+ $this->testSuiteTests[$this->testSuiteLevel - 1] += $this->testSuiteTests[$this->testSuiteLevel];
+ $this->testSuiteAssertions[$this->testSuiteLevel - 1] += $this->testSuiteAssertions[$this->testSuiteLevel];
+ $this->testSuiteErrors[$this->testSuiteLevel - 1] += $this->testSuiteErrors[$this->testSuiteLevel];
+ $this->testSuiteWarnings[$this->testSuiteLevel - 1] += $this->testSuiteWarnings[$this->testSuiteLevel];
+ $this->testSuiteFailures[$this->testSuiteLevel - 1] += $this->testSuiteFailures[$this->testSuiteLevel];
+ $this->testSuiteSkipped[$this->testSuiteLevel - 1] += $this->testSuiteSkipped[$this->testSuiteLevel];
+ $this->testSuiteTimes[$this->testSuiteLevel - 1] += $this->testSuiteTimes[$this->testSuiteLevel];
+ }
+
+ $this->testSuiteLevel--;
+ }
+
+ /**
+ * A test started.
+ */
+ public function startTest(Test $test): void
+ {
+ $usesDataprovider = false;
+
+ if (method_exists($test, 'usesDataProvider')) {
+ $usesDataprovider = $test->usesDataProvider();
+ }
+
+ $testCase = $this->document->createElement('testcase');
+ $testCase->setAttribute('name', $test->getName());
+
+ try {
+ $class = new ReflectionClass($test);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $methodName = $test->getName(!$usesDataprovider);
+
+ if ($class->hasMethod($methodName)) {
+ try {
+ $method = $class->getMethod($methodName);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $testCase->setAttribute('class', $class->getName());
+ $testCase->setAttribute('classname', str_replace('\\', '.', $class->getName()));
+ $testCase->setAttribute('file', $class->getFileName());
+ $testCase->setAttribute('line', (string) $method->getStartLine());
+ }
+
+ $this->currentTestCase = $testCase;
+ }
+
+ /**
+ * A test ended.
+ */
+ public function endTest(Test $test, float $time): void
+ {
+ $numAssertions = 0;
+
+ if (method_exists($test, 'getNumAssertions')) {
+ $numAssertions = $test->getNumAssertions();
+ }
+
+ $this->testSuiteAssertions[$this->testSuiteLevel] += $numAssertions;
+
+ $this->currentTestCase->setAttribute(
+ 'assertions',
+ (string) $numAssertions
+ );
+
+ $this->currentTestCase->setAttribute(
+ 'time',
+ sprintf('%F', $time)
+ );
+
+ $this->testSuites[$this->testSuiteLevel]->appendChild(
+ $this->currentTestCase
+ );
+
+ $this->testSuiteTests[$this->testSuiteLevel]++;
+ $this->testSuiteTimes[$this->testSuiteLevel] += $time;
+
+ $testOutput = '';
+
+ if (method_exists($test, 'hasOutput') && method_exists($test, 'getActualOutput')) {
+ $testOutput = $test->hasOutput() ? $test->getActualOutput() : '';
+ }
+
+ if (!empty($testOutput)) {
+ $systemOut = $this->document->createElement(
+ 'system-out',
+ Xml::prepareString($testOutput)
+ );
+
+ $this->currentTestCase->appendChild($systemOut);
+ }
+
+ $this->currentTestCase = null;
+ }
+
+ /**
+ * Returns the XML as a string.
+ */
+ public function getXML(): string
+ {
+ return $this->document->saveXML();
+ }
+
+ private function doAddFault(Test $test, Throwable $t, string $type): void
+ {
+ if ($this->currentTestCase === null) {
+ return;
+ }
+
+ if ($test instanceof SelfDescribing) {
+ $buffer = $test->toString() . "\n";
+ } else {
+ $buffer = '';
+ }
+
+ $buffer .= trim(
+ TestFailure::exceptionToString($t) . "\n" .
+ Filter::getFilteredStacktrace($t)
+ );
+
+ $fault = $this->document->createElement(
+ $type,
+ Xml::prepareString($buffer)
+ );
+
+ if ($t instanceof ExceptionWrapper) {
+ $fault->setAttribute('type', $t->getClassName());
+ } else {
+ $fault->setAttribute('type', get_class($t));
+ }
+
+ $this->currentTestCase->appendChild($fault);
+ }
+
+ private function doAddSkipped(): void
+ {
+ if ($this->currentTestCase === null) {
+ return;
+ }
+
+ $skipped = $this->document->createElement('skipped');
+
+ $this->currentTestCase->appendChild($skipped);
+
+ $this->testSuiteSkipped[$this->testSuiteLevel]++;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Log/TeamCity.php b/vendor/phpunit/phpunit/src/Util/Log/TeamCity.php
new file mode 100644
index 000000000..f800ba72d
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Log/TeamCity.php
@@ -0,0 +1,383 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Log;
+
+use function class_exists;
+use function count;
+use function explode;
+use function get_class;
+use function getmypid;
+use function ini_get;
+use function is_bool;
+use function is_scalar;
+use function method_exists;
+use function print_r;
+use function round;
+use function str_replace;
+use function stripos;
+use PHPUnit\Framework\AssertionFailedError;
+use PHPUnit\Framework\ExceptionWrapper;
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestFailure;
+use PHPUnit\Framework\TestResult;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Framework\Warning;
+use PHPUnit\TextUI\DefaultResultPrinter;
+use PHPUnit\Util\Exception;
+use PHPUnit\Util\Filter;
+use ReflectionClass;
+use ReflectionException;
+use SebastianBergmann\Comparator\ComparisonFailure;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TeamCity extends DefaultResultPrinter
+{
+ /**
+ * @var bool
+ */
+ private $isSummaryTestCountPrinted = false;
+
+ /**
+ * @var string
+ */
+ private $startedTestName;
+
+ /**
+ * @var false|int
+ */
+ private $flowId;
+
+ public function printResult(TestResult $result): void
+ {
+ $this->printHeader($result);
+ $this->printFooter($result);
+ }
+
+ /**
+ * An error occurred.
+ */
+ public function addError(Test $test, Throwable $t, float $time): void
+ {
+ $this->printEvent(
+ 'testFailed',
+ [
+ 'name' => $test->getName(),
+ 'message' => self::getMessage($t),
+ 'details' => self::getDetails($t),
+ 'duration' => self::toMilliseconds($time),
+ ]
+ );
+ }
+
+ /**
+ * A warning occurred.
+ */
+ public function addWarning(Test $test, Warning $e, float $time): void
+ {
+ $this->write(self::getMessage($e) . PHP_EOL);
+ }
+
+ /**
+ * A failure occurred.
+ */
+ public function addFailure(Test $test, AssertionFailedError $e, float $time): void
+ {
+ $parameters = [
+ 'name' => $test->getName(),
+ 'message' => self::getMessage($e),
+ 'details' => self::getDetails($e),
+ 'duration' => self::toMilliseconds($time),
+ ];
+
+ if ($e instanceof ExpectationFailedException) {
+ $comparisonFailure = $e->getComparisonFailure();
+
+ if ($comparisonFailure instanceof ComparisonFailure) {
+ $expectedString = $comparisonFailure->getExpectedAsString();
+
+ if ($expectedString === null || empty($expectedString)) {
+ $expectedString = self::getPrimitiveValueAsString($comparisonFailure->getExpected());
+ }
+
+ $actualString = $comparisonFailure->getActualAsString();
+
+ if ($actualString === null || empty($actualString)) {
+ $actualString = self::getPrimitiveValueAsString($comparisonFailure->getActual());
+ }
+
+ if ($actualString !== null && $expectedString !== null) {
+ $parameters['type'] = 'comparisonFailure';
+ $parameters['actual'] = $actualString;
+ $parameters['expected'] = $expectedString;
+ }
+ }
+ }
+
+ $this->printEvent('testFailed', $parameters);
+ }
+
+ /**
+ * Incomplete test.
+ */
+ public function addIncompleteTest(Test $test, Throwable $t, float $time): void
+ {
+ $this->printIgnoredTest($test->getName(), $t, $time);
+ }
+
+ /**
+ * Risky test.
+ */
+ public function addRiskyTest(Test $test, Throwable $t, float $time): void
+ {
+ $this->addError($test, $t, $time);
+ }
+
+ /**
+ * Skipped test.
+ */
+ public function addSkippedTest(Test $test, Throwable $t, float $time): void
+ {
+ $testName = $test->getName();
+
+ if ($this->startedTestName !== $testName) {
+ $this->startTest($test);
+ $this->printIgnoredTest($testName, $t, $time);
+ $this->endTest($test, $time);
+ } else {
+ $this->printIgnoredTest($testName, $t, $time);
+ }
+ }
+
+ public function printIgnoredTest(string $testName, Throwable $t, float $time): void
+ {
+ $this->printEvent(
+ 'testIgnored',
+ [
+ 'name' => $testName,
+ 'message' => self::getMessage($t),
+ 'details' => self::getDetails($t),
+ 'duration' => self::toMilliseconds($time),
+ ]
+ );
+ }
+
+ /**
+ * A testsuite started.
+ */
+ public function startTestSuite(TestSuite $suite): void
+ {
+ if (stripos(ini_get('disable_functions'), 'getmypid') === false) {
+ $this->flowId = getmypid();
+ } else {
+ $this->flowId = false;
+ }
+
+ if (!$this->isSummaryTestCountPrinted) {
+ $this->isSummaryTestCountPrinted = true;
+
+ $this->printEvent(
+ 'testCount',
+ ['count' => count($suite)]
+ );
+ }
+
+ $suiteName = $suite->getName();
+
+ if (empty($suiteName)) {
+ return;
+ }
+
+ $parameters = ['name' => $suiteName];
+
+ if (class_exists($suiteName, false)) {
+ $fileName = self::getFileName($suiteName);
+ $parameters['locationHint'] = "php_qn://{$fileName}::\\{$suiteName}";
+ } else {
+ $split = explode('::', $suiteName);
+
+ if (count($split) === 2 && class_exists($split[0]) && method_exists($split[0], $split[1])) {
+ $fileName = self::getFileName($split[0]);
+ $parameters['locationHint'] = "php_qn://{$fileName}::\\{$suiteName}";
+ $parameters['name'] = $split[1];
+ }
+ }
+
+ $this->printEvent('testSuiteStarted', $parameters);
+ }
+
+ /**
+ * A testsuite ended.
+ */
+ public function endTestSuite(TestSuite $suite): void
+ {
+ $suiteName = $suite->getName();
+
+ if (empty($suiteName)) {
+ return;
+ }
+
+ $parameters = ['name' => $suiteName];
+
+ if (!class_exists($suiteName, false)) {
+ $split = explode('::', $suiteName);
+
+ if (count($split) === 2 && class_exists($split[0]) && method_exists($split[0], $split[1])) {
+ $parameters['name'] = $split[1];
+ }
+ }
+
+ $this->printEvent('testSuiteFinished', $parameters);
+ }
+
+ /**
+ * A test started.
+ */
+ public function startTest(Test $test): void
+ {
+ $testName = $test->getName();
+ $this->startedTestName = $testName;
+ $params = ['name' => $testName];
+
+ if ($test instanceof TestCase) {
+ $className = get_class($test);
+ $fileName = self::getFileName($className);
+ $params['locationHint'] = "php_qn://{$fileName}::\\{$className}::{$testName}";
+ }
+
+ $this->printEvent('testStarted', $params);
+ }
+
+ /**
+ * A test ended.
+ */
+ public function endTest(Test $test, float $time): void
+ {
+ parent::endTest($test, $time);
+
+ $this->printEvent(
+ 'testFinished',
+ [
+ 'name' => $test->getName(),
+ 'duration' => self::toMilliseconds($time),
+ ]
+ );
+ }
+
+ protected function writeProgress(string $progress): void
+ {
+ }
+
+ private function printEvent(string $eventName, array $params = []): void
+ {
+ $this->write("\n##teamcity[{$eventName}");
+
+ if ($this->flowId) {
+ $params['flowId'] = $this->flowId;
+ }
+
+ foreach ($params as $key => $value) {
+ $escapedValue = self::escapeValue((string) $value);
+ $this->write(" {$key}='{$escapedValue}'");
+ }
+
+ $this->write("]\n");
+ }
+
+ private static function getMessage(Throwable $t): string
+ {
+ $message = '';
+
+ if ($t instanceof ExceptionWrapper) {
+ if ($t->getClassName() !== '') {
+ $message .= $t->getClassName();
+ }
+
+ if ($message !== '' && $t->getMessage() !== '') {
+ $message .= ' : ';
+ }
+ }
+
+ return $message . $t->getMessage();
+ }
+
+ private static function getDetails(Throwable $t): string
+ {
+ $stackTrace = Filter::getFilteredStacktrace($t);
+ $previous = $t instanceof ExceptionWrapper ? $t->getPreviousWrapped() : $t->getPrevious();
+
+ while ($previous) {
+ $stackTrace .= "\nCaused by\n" .
+ TestFailure::exceptionToString($previous) . "\n" .
+ Filter::getFilteredStacktrace($previous);
+
+ $previous = $previous instanceof ExceptionWrapper ?
+ $previous->getPreviousWrapped() : $previous->getPrevious();
+ }
+
+ return ' ' . str_replace("\n", "\n ", $stackTrace);
+ }
+
+ private static function getPrimitiveValueAsString($value): ?string
+ {
+ if ($value === null) {
+ return 'null';
+ }
+
+ if (is_bool($value)) {
+ return $value ? 'true' : 'false';
+ }
+
+ if (is_scalar($value)) {
+ return print_r($value, true);
+ }
+
+ return null;
+ }
+
+ private static function escapeValue(string $text): string
+ {
+ return str_replace(
+ ['|', "'", "\n", "\r", ']', '['],
+ ['||', "|'", '|n', '|r', '|]', '|['],
+ $text
+ );
+ }
+
+ /**
+ * @param string $className
+ */
+ private static function getFileName($className): string
+ {
+ try {
+ return (new ReflectionClass($className))->getFileName();
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @param float $time microseconds
+ */
+ private static function toMilliseconds(float $time): int
+ {
+ return (int) round($time * 1000);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php b/vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php
new file mode 100644
index 000000000..8706ae1a1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/PHP/AbstractPhpProcess.php
@@ -0,0 +1,416 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\PHP;
+
+use const DIRECTORY_SEPARATOR;
+use const PHP_SAPI;
+use function array_keys;
+use function array_merge;
+use function assert;
+use function escapeshellarg;
+use function ini_get_all;
+use function restore_error_handler;
+use function set_error_handler;
+use function sprintf;
+use function str_replace;
+use function strpos;
+use function strrpos;
+use function substr;
+use function trim;
+use function unserialize;
+use __PHP_Incomplete_Class;
+use ErrorException;
+use PHPUnit\Framework\AssertionFailedError;
+use PHPUnit\Framework\Exception;
+use PHPUnit\Framework\SyntheticError;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestFailure;
+use PHPUnit\Framework\TestResult;
+use SebastianBergmann\Environment\Runtime;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class AbstractPhpProcess
+{
+ /**
+ * @var Runtime
+ */
+ protected $runtime;
+
+ /**
+ * @var bool
+ */
+ protected $stderrRedirection = false;
+
+ /**
+ * @var string
+ */
+ protected $stdin = '';
+
+ /**
+ * @var string
+ */
+ protected $args = '';
+
+ /**
+ * @var array<string, string>
+ */
+ protected $env = [];
+
+ /**
+ * @var int
+ */
+ protected $timeout = 0;
+
+ public static function factory(): self
+ {
+ if (DIRECTORY_SEPARATOR === '\\') {
+ return new WindowsPhpProcess;
+ }
+
+ return new DefaultPhpProcess;
+ }
+
+ public function __construct()
+ {
+ $this->runtime = new Runtime;
+ }
+
+ /**
+ * Defines if should use STDERR redirection or not.
+ *
+ * Then $stderrRedirection is TRUE, STDERR is redirected to STDOUT.
+ */
+ public function setUseStderrRedirection(bool $stderrRedirection): void
+ {
+ $this->stderrRedirection = $stderrRedirection;
+ }
+
+ /**
+ * Returns TRUE if uses STDERR redirection or FALSE if not.
+ */
+ public function useStderrRedirection(): bool
+ {
+ return $this->stderrRedirection;
+ }
+
+ /**
+ * Sets the input string to be sent via STDIN.
+ */
+ public function setStdin(string $stdin): void
+ {
+ $this->stdin = $stdin;
+ }
+
+ /**
+ * Returns the input string to be sent via STDIN.
+ */
+ public function getStdin(): string
+ {
+ return $this->stdin;
+ }
+
+ /**
+ * Sets the string of arguments to pass to the php job.
+ */
+ public function setArgs(string $args): void
+ {
+ $this->args = $args;
+ }
+
+ /**
+ * Returns the string of arguments to pass to the php job.
+ */
+ public function getArgs(): string
+ {
+ return $this->args;
+ }
+
+ /**
+ * Sets the array of environment variables to start the child process with.
+ *
+ * @param array<string, string> $env
+ */
+ public function setEnv(array $env): void
+ {
+ $this->env = $env;
+ }
+
+ /**
+ * Returns the array of environment variables to start the child process with.
+ */
+ public function getEnv(): array
+ {
+ return $this->env;
+ }
+
+ /**
+ * Sets the amount of seconds to wait before timing out.
+ */
+ public function setTimeout(int $timeout): void
+ {
+ $this->timeout = $timeout;
+ }
+
+ /**
+ * Returns the amount of seconds to wait before timing out.
+ */
+ public function getTimeout(): int
+ {
+ return $this->timeout;
+ }
+
+ /**
+ * Runs a single test in a separate PHP process.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function runTestJob(string $job, Test $test, TestResult $result): void
+ {
+ $result->startTest($test);
+
+ $_result = $this->runJob($job);
+
+ $this->processChildResult(
+ $test,
+ $result,
+ $_result['stdout'],
+ $_result['stderr']
+ );
+ }
+
+ /**
+ * Returns the command based into the configurations.
+ */
+ public function getCommand(array $settings, string $file = null): string
+ {
+ $command = $this->runtime->getBinary();
+
+ if ($this->runtime->hasPCOV()) {
+ $settings = array_merge(
+ $settings,
+ $this->runtime->getCurrentSettings(
+ array_keys(ini_get_all('pcov'))
+ )
+ );
+ } elseif ($this->runtime->hasXdebug()) {
+ $settings = array_merge(
+ $settings,
+ $this->runtime->getCurrentSettings(
+ array_keys(ini_get_all('xdebug'))
+ )
+ );
+ }
+
+ $command .= $this->settingsToParameters($settings);
+
+ if (PHP_SAPI === 'phpdbg') {
+ $command .= ' -qrr';
+
+ if (!$file) {
+ $command .= 's=';
+ }
+ }
+
+ if ($file) {
+ $command .= ' ' . escapeshellarg($file);
+ }
+
+ if ($this->args) {
+ if (!$file) {
+ $command .= ' --';
+ }
+ $command .= ' ' . $this->args;
+ }
+
+ if ($this->stderrRedirection) {
+ $command .= ' 2>&1';
+ }
+
+ return $command;
+ }
+
+ /**
+ * Runs a single job (PHP code) using a separate PHP process.
+ */
+ abstract public function runJob(string $job, array $settings = []): array;
+
+ protected function settingsToParameters(array $settings): string
+ {
+ $buffer = '';
+
+ foreach ($settings as $setting) {
+ $buffer .= ' -d ' . escapeshellarg($setting);
+ }
+
+ return $buffer;
+ }
+
+ /**
+ * Processes the TestResult object from an isolated process.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ private function processChildResult(Test $test, TestResult $result, string $stdout, string $stderr): void
+ {
+ $time = 0;
+
+ if (!empty($stderr)) {
+ $result->addError(
+ $test,
+ new Exception(trim($stderr)),
+ $time
+ );
+ } else {
+ set_error_handler(
+ /**
+ * @throws ErrorException
+ */
+ static function ($errno, $errstr, $errfile, $errline): void
+ {
+ throw new ErrorException($errstr, $errno, $errno, $errfile, $errline);
+ }
+ );
+
+ try {
+ if (strpos($stdout, "#!/usr/bin/env php\n") === 0) {
+ $stdout = substr($stdout, 19);
+ }
+
+ $childResult = unserialize(str_replace("#!/usr/bin/env php\n", '', $stdout));
+ restore_error_handler();
+
+ if ($childResult === false) {
+ $result->addFailure(
+ $test,
+ new AssertionFailedError('Test was run in child process and ended unexpectedly'),
+ $time
+ );
+ }
+ } catch (ErrorException $e) {
+ restore_error_handler();
+ $childResult = false;
+
+ $result->addError(
+ $test,
+ new Exception(trim($stdout), 0, $e),
+ $time
+ );
+ }
+
+ if ($childResult !== false) {
+ if (!empty($childResult['output'])) {
+ $output = $childResult['output'];
+ }
+
+ /* @var TestCase $test */
+
+ $test->setResult($childResult['testResult']);
+ $test->addToAssertionCount($childResult['numAssertions']);
+
+ $childResult = $childResult['result'];
+ assert($childResult instanceof TestResult);
+
+ if ($result->getCollectCodeCoverageInformation()) {
+ $result->getCodeCoverage()->merge(
+ $childResult->getCodeCoverage()
+ );
+ }
+
+ $time = $childResult->time();
+ $notImplemented = $childResult->notImplemented();
+ $risky = $childResult->risky();
+ $skipped = $childResult->skipped();
+ $errors = $childResult->errors();
+ $warnings = $childResult->warnings();
+ $failures = $childResult->failures();
+
+ if (!empty($notImplemented)) {
+ $result->addError(
+ $test,
+ $this->getException($notImplemented[0]),
+ $time
+ );
+ } elseif (!empty($risky)) {
+ $result->addError(
+ $test,
+ $this->getException($risky[0]),
+ $time
+ );
+ } elseif (!empty($skipped)) {
+ $result->addError(
+ $test,
+ $this->getException($skipped[0]),
+ $time
+ );
+ } elseif (!empty($errors)) {
+ $result->addError(
+ $test,
+ $this->getException($errors[0]),
+ $time
+ );
+ } elseif (!empty($warnings)) {
+ $result->addWarning(
+ $test,
+ $this->getException($warnings[0]),
+ $time
+ );
+ } elseif (!empty($failures)) {
+ $result->addFailure(
+ $test,
+ $this->getException($failures[0]),
+ $time
+ );
+ }
+ }
+ }
+
+ $result->endTest($test, $time);
+
+ if (!empty($output)) {
+ print $output;
+ }
+ }
+
+ /**
+ * Gets the thrown exception from a PHPUnit\Framework\TestFailure.
+ *
+ * @see https://github.com/sebastianbergmann/phpunit/issues/74
+ */
+ private function getException(TestFailure $error): Exception
+ {
+ $exception = $error->thrownException();
+
+ if ($exception instanceof __PHP_Incomplete_Class) {
+ $exceptionArray = [];
+
+ foreach ((array) $exception as $key => $value) {
+ $key = substr($key, strrpos($key, "\0") + 1);
+ $exceptionArray[$key] = $value;
+ }
+
+ $exception = new SyntheticError(
+ sprintf(
+ '%s: %s',
+ $exceptionArray['_PHP_Incomplete_Class_Name'],
+ $exceptionArray['message']
+ ),
+ $exceptionArray['code'],
+ $exceptionArray['file'],
+ $exceptionArray['line'],
+ $exceptionArray['trace']
+ );
+ }
+
+ return $exception;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php b/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php
new file mode 100644
index 000000000..c4dc11146
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/PHP/DefaultPhpProcess.php
@@ -0,0 +1,236 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\PHP;
+
+use function array_merge;
+use function fclose;
+use function file_put_contents;
+use function fread;
+use function fwrite;
+use function is_array;
+use function is_resource;
+use function proc_close;
+use function proc_open;
+use function proc_terminate;
+use function rewind;
+use function sprintf;
+use function stream_get_contents;
+use function stream_select;
+use function sys_get_temp_dir;
+use function tempnam;
+use function unlink;
+use PHPUnit\Framework\Exception;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class DefaultPhpProcess extends AbstractPhpProcess
+{
+ /**
+ * @var string
+ */
+ protected $tempFile;
+
+ /**
+ * Runs a single job (PHP code) using a separate PHP process.
+ *
+ * @throws Exception
+ */
+ public function runJob(string $job, array $settings = []): array
+ {
+ if ($this->stdin || $this->useTemporaryFile()) {
+ if (!($this->tempFile = tempnam(sys_get_temp_dir(), 'PHPUnit')) ||
+ file_put_contents($this->tempFile, $job) === false) {
+ throw new Exception(
+ 'Unable to write temporary file'
+ );
+ }
+
+ $job = $this->stdin;
+ }
+
+ return $this->runProcess($job, $settings);
+ }
+
+ /**
+ * Returns an array of file handles to be used in place of pipes.
+ */
+ protected function getHandles(): array
+ {
+ return [];
+ }
+
+ /**
+ * Handles creating the child process and returning the STDOUT and STDERR.
+ *
+ * @throws Exception
+ */
+ protected function runProcess(string $job, array $settings): array
+ {
+ $handles = $this->getHandles();
+
+ $env = null;
+
+ if ($this->env) {
+ $env = $_SERVER ?? [];
+ unset($env['argv'], $env['argc']);
+ $env = array_merge($env, $this->env);
+
+ foreach ($env as $envKey => $envVar) {
+ if (is_array($envVar)) {
+ unset($env[$envKey]);
+ }
+ }
+ }
+
+ $pipeSpec = [
+ 0 => $handles[0] ?? ['pipe', 'r'],
+ 1 => $handles[1] ?? ['pipe', 'w'],
+ 2 => $handles[2] ?? ['pipe', 'w'],
+ ];
+
+ $process = proc_open(
+ $this->getCommand($settings, $this->tempFile),
+ $pipeSpec,
+ $pipes,
+ null,
+ $env
+ );
+
+ if (!is_resource($process)) {
+ throw new Exception(
+ 'Unable to spawn worker process'
+ );
+ }
+
+ if ($job) {
+ $this->process($pipes[0], $job);
+ }
+
+ fclose($pipes[0]);
+
+ $stderr = $stdout = '';
+
+ if ($this->timeout) {
+ unset($pipes[0]);
+
+ while (true) {
+ $r = $pipes;
+ $w = null;
+ $e = null;
+
+ $n = @stream_select($r, $w, $e, $this->timeout);
+
+ if ($n === false) {
+ break;
+ }
+
+ if ($n === 0) {
+ proc_terminate($process, 9);
+
+ throw new Exception(
+ sprintf(
+ 'Job execution aborted after %d seconds',
+ $this->timeout
+ )
+ );
+ }
+
+ if ($n > 0) {
+ foreach ($r as $pipe) {
+ $pipeOffset = 0;
+
+ foreach ($pipes as $i => $origPipe) {
+ if ($pipe === $origPipe) {
+ $pipeOffset = $i;
+
+ break;
+ }
+ }
+
+ if (!$pipeOffset) {
+ break;
+ }
+
+ $line = fread($pipe, 8192);
+
+ if ($line === '' || $line === false) {
+ fclose($pipes[$pipeOffset]);
+
+ unset($pipes[$pipeOffset]);
+ } elseif ($pipeOffset === 1) {
+ $stdout .= $line;
+ } else {
+ $stderr .= $line;
+ }
+ }
+
+ if (empty($pipes)) {
+ break;
+ }
+ }
+ }
+ } else {
+ if (isset($pipes[1])) {
+ $stdout = stream_get_contents($pipes[1]);
+
+ fclose($pipes[1]);
+ }
+
+ if (isset($pipes[2])) {
+ $stderr = stream_get_contents($pipes[2]);
+
+ fclose($pipes[2]);
+ }
+ }
+
+ if (isset($handles[1])) {
+ rewind($handles[1]);
+
+ $stdout = stream_get_contents($handles[1]);
+
+ fclose($handles[1]);
+ }
+
+ if (isset($handles[2])) {
+ rewind($handles[2]);
+
+ $stderr = stream_get_contents($handles[2]);
+
+ fclose($handles[2]);
+ }
+
+ proc_close($process);
+
+ $this->cleanup();
+
+ return ['stdout' => $stdout, 'stderr' => $stderr];
+ }
+
+ /**
+ * @param resource $pipe
+ */
+ protected function process($pipe, string $job): void
+ {
+ fwrite($pipe, $job);
+ }
+
+ protected function cleanup(): void
+ {
+ if ($this->tempFile) {
+ unlink($this->tempFile);
+ }
+ }
+
+ protected function useTemporaryFile(): bool
+ {
+ return false;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Template/PhptTestCase.tpl b/vendor/phpunit/phpunit/src/Util/PHP/Template/PhptTestCase.tpl
new file mode 100644
index 000000000..f23a0d1ae
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/PHP/Template/PhptTestCase.tpl
@@ -0,0 +1,57 @@
+<?php
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Driver\Selector;
+use SebastianBergmann\CodeCoverage\Filter;
+
+$composerAutoload = {composerAutoload};
+$phar = {phar};
+
+ob_start();
+
+$GLOBALS['__PHPUNIT_ISOLATION_EXCLUDE_LIST'][] = '{job}';
+
+if ($composerAutoload) {
+ require_once $composerAutoload;
+
+ define('PHPUNIT_COMPOSER_INSTALL', $composerAutoload);
+} else if ($phar) {
+ require $phar;
+}
+
+{globals}
+$coverage = null;
+
+if (isset($GLOBALS['__PHPUNIT_BOOTSTRAP'])) {
+ require_once $GLOBALS['__PHPUNIT_BOOTSTRAP'];
+}
+
+if (class_exists('SebastianBergmann\CodeCoverage\CodeCoverage')) {
+ $filter = new Filter;
+
+ $coverage = new CodeCoverage(
+ (new Selector)->{driverMethod}($filter),
+ $filter
+ );
+
+ if ({codeCoverageCacheDirectory}) {
+ $coverage->cacheStaticAnalysis({codeCoverageCacheDirectory});
+ }
+
+ $coverage->start(__FILE__);
+}
+
+register_shutdown_function(
+ function() use ($coverage) {
+ $output = null;
+
+ if ($coverage) {
+ $output = $coverage->stop();
+ }
+
+ file_put_contents('{coverageFile}', serialize($output));
+ }
+);
+
+ob_end_clean();
+
+require '{job}';
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl b/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl
new file mode 100644
index 000000000..95035e505
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseClass.tpl
@@ -0,0 +1,119 @@
+<?php
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Driver\Selector;
+use PHPUnit\TextUI\XmlConfiguration\Loader;
+use PHPUnit\TextUI\XmlConfiguration\PhpHandler;
+
+if (!defined('STDOUT')) {
+ // php://stdout does not obey output buffering. Any output would break
+ // unserialization of child process results in the parent process.
+ define('STDOUT', fopen('php://temp', 'w+b'));
+ define('STDERR', fopen('php://stderr', 'wb'));
+}
+
+{iniSettings}
+ini_set('display_errors', 'stderr');
+set_include_path('{include_path}');
+
+$composerAutoload = {composerAutoload};
+$phar = {phar};
+
+ob_start();
+
+if ($composerAutoload) {
+ require_once $composerAutoload;
+ define('PHPUNIT_COMPOSER_INSTALL', $composerAutoload);
+} else if ($phar) {
+ require $phar;
+}
+
+function __phpunit_run_isolated_test()
+{
+ if (!class_exists('{className}')) {
+ require_once '{filename}';
+ }
+
+ $result = new PHPUnit\Framework\TestResult;
+
+ if ({collectCodeCoverageInformation}) {
+ $filter = unserialize('{codeCoverageFilter}');
+
+ $codeCoverage = new CodeCoverage(
+ (new Selector)->{driverMethod}($filter),
+ $filter
+ );
+
+ if ({cachesStaticAnalysis}) {
+ $codeCoverage->cacheStaticAnalysis(unserialize('{codeCoverageCacheDirectory}'));
+ }
+
+ $result->setCodeCoverage($codeCoverage);
+ }
+
+ $result->beStrictAboutTestsThatDoNotTestAnything({isStrictAboutTestsThatDoNotTestAnything});
+ $result->beStrictAboutOutputDuringTests({isStrictAboutOutputDuringTests});
+ $result->enforceTimeLimit({enforcesTimeLimit});
+ $result->beStrictAboutTodoAnnotatedTests({isStrictAboutTodoAnnotatedTests});
+ $result->beStrictAboutResourceUsageDuringSmallTests({isStrictAboutResourceUsageDuringSmallTests});
+
+ $test = new {className}('{name}', unserialize('{data}'), '{dataName}');
+ $test->setDependencyInput(unserialize('{dependencyInput}'));
+ $test->setInIsolation(TRUE);
+
+ ob_end_clean();
+ $test->run($result);
+ $output = '';
+ if (!$test->hasExpectationOnOutput()) {
+ $output = $test->getActualOutput();
+ }
+
+ ini_set('xdebug.scream', '0');
+ @rewind(STDOUT); /* @ as not every STDOUT target stream is rewindable */
+ if ($stdout = @stream_get_contents(STDOUT)) {
+ $output = $stdout . $output;
+ $streamMetaData = stream_get_meta_data(STDOUT);
+ if (!empty($streamMetaData['stream_type']) && 'STDIO' === $streamMetaData['stream_type']) {
+ @ftruncate(STDOUT, 0);
+ @rewind(STDOUT);
+ }
+ }
+
+ print serialize(
+ [
+ 'testResult' => $test->getResult(),
+ 'numAssertions' => $test->getNumAssertions(),
+ 'result' => $result,
+ 'output' => $output
+ ]
+ );
+}
+
+$configurationFilePath = '{configurationFilePath}';
+
+if ('' !== $configurationFilePath) {
+ $configuration = (new Loader)->load($configurationFilePath);
+
+ (new PhpHandler)->handle($configuration->php());
+
+ unset($configuration);
+}
+
+function __phpunit_error_handler($errno, $errstr, $errfile, $errline)
+{
+ return true;
+}
+
+set_error_handler('__phpunit_error_handler');
+
+{constants}
+{included_files}
+{globals}
+
+restore_error_handler();
+
+if (isset($GLOBALS['__PHPUNIT_BOOTSTRAP'])) {
+ require_once $GLOBALS['__PHPUNIT_BOOTSTRAP'];
+ unset($GLOBALS['__PHPUNIT_BOOTSTRAP']);
+}
+
+__phpunit_run_isolated_test();
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl b/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl
new file mode 100644
index 000000000..da824e720
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/PHP/Template/TestCaseMethod.tpl
@@ -0,0 +1,122 @@
+<?php
+use PHPUnit\Framework\TestCase;
+use SebastianBergmann\CodeCoverage\CodeCoverage;
+use SebastianBergmann\CodeCoverage\Driver\Selector;
+use PHPUnit\TextUI\XmlConfiguration\Loader;
+use PHPUnit\TextUI\XmlConfiguration\PhpHandler;
+
+if (!defined('STDOUT')) {
+ // php://stdout does not obey output buffering. Any output would break
+ // unserialization of child process results in the parent process.
+ define('STDOUT', fopen('php://temp', 'w+b'));
+ define('STDERR', fopen('php://stderr', 'wb'));
+}
+
+{iniSettings}
+ini_set('display_errors', 'stderr');
+set_include_path('{include_path}');
+
+$composerAutoload = {composerAutoload};
+$phar = {phar};
+
+ob_start();
+
+if ($composerAutoload) {
+ require_once $composerAutoload;
+ define('PHPUNIT_COMPOSER_INSTALL', $composerAutoload);
+} else if ($phar) {
+ require $phar;
+}
+
+function __phpunit_run_isolated_test()
+{
+ if (!class_exists('{className}')) {
+ require_once '{filename}';
+ }
+
+ $result = new PHPUnit\Framework\TestResult;
+
+ if ({collectCodeCoverageInformation}) {
+ $filter = unserialize('{codeCoverageFilter}');
+
+ $codeCoverage = new CodeCoverage(
+ (new Selector)->{driverMethod}($filter),
+ $filter
+ );
+
+ if ({cachesStaticAnalysis}) {
+ $codeCoverage->cacheStaticAnalysis(unserialize('{codeCoverageCacheDirectory}'));
+ }
+
+ $result->setCodeCoverage($codeCoverage);
+ }
+
+ $result->beStrictAboutTestsThatDoNotTestAnything({isStrictAboutTestsThatDoNotTestAnything});
+ $result->beStrictAboutOutputDuringTests({isStrictAboutOutputDuringTests});
+ $result->enforceTimeLimit({enforcesTimeLimit});
+ $result->beStrictAboutTodoAnnotatedTests({isStrictAboutTodoAnnotatedTests});
+ $result->beStrictAboutResourceUsageDuringSmallTests({isStrictAboutResourceUsageDuringSmallTests});
+
+ $test = new {className}('{methodName}', unserialize('{data}'), '{dataName}');
+ \assert($test instanceof TestCase);
+
+ $test->setDependencyInput(unserialize('{dependencyInput}'));
+ $test->setInIsolation(true);
+
+ ob_end_clean();
+ $test->run($result);
+ $output = '';
+ if (!$test->hasExpectationOnOutput()) {
+ $output = $test->getActualOutput();
+ }
+
+ ini_set('xdebug.scream', '0');
+ @rewind(STDOUT); /* @ as not every STDOUT target stream is rewindable */
+ if ($stdout = @stream_get_contents(STDOUT)) {
+ $output = $stdout . $output;
+ $streamMetaData = stream_get_meta_data(STDOUT);
+ if (!empty($streamMetaData['stream_type']) && 'STDIO' === $streamMetaData['stream_type']) {
+ @ftruncate(STDOUT, 0);
+ @rewind(STDOUT);
+ }
+ }
+
+ print serialize(
+ [
+ 'testResult' => $test->getResult(),
+ 'numAssertions' => $test->getNumAssertions(),
+ 'result' => $result,
+ 'output' => $output
+ ]
+ );
+}
+
+$configurationFilePath = '{configurationFilePath}';
+
+if ('' !== $configurationFilePath) {
+ $configuration = (new Loader)->load($configurationFilePath);
+
+ (new PhpHandler)->handle($configuration->php());
+
+ unset($configuration);
+}
+
+function __phpunit_error_handler($errno, $errstr, $errfile, $errline)
+{
+ return true;
+}
+
+set_error_handler('__phpunit_error_handler');
+
+{constants}
+{included_files}
+{globals}
+
+restore_error_handler();
+
+if (isset($GLOBALS['__PHPUNIT_BOOTSTRAP'])) {
+ require_once $GLOBALS['__PHPUNIT_BOOTSTRAP'];
+ unset($GLOBALS['__PHPUNIT_BOOTSTRAP']);
+}
+
+__phpunit_run_isolated_test();
diff --git a/vendor/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php b/vendor/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php
new file mode 100644
index 000000000..9ef925556
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/PHP/WindowsPhpProcess.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\PHP;
+
+use const PHP_MAJOR_VERSION;
+use function tmpfile;
+use PHPUnit\Framework\Exception;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ *
+ * @see https://bugs.php.net/bug.php?id=51800
+ */
+final class WindowsPhpProcess extends DefaultPhpProcess
+{
+ public function getCommand(array $settings, string $file = null): string
+ {
+ if (PHP_MAJOR_VERSION < 8) {
+ return '"' . parent::getCommand($settings, $file) . '"';
+ }
+
+ return parent::getCommand($settings, $file);
+ }
+
+ /**
+ * @throws Exception
+ */
+ protected function getHandles(): array
+ {
+ if (false === $stdout_handle = tmpfile()) {
+ throw new Exception(
+ 'A temporary file could not be created; verify that your TEMP environment variable is writable'
+ );
+ }
+
+ return [
+ 1 => $stdout_handle,
+ ];
+ }
+
+ protected function useTemporaryFile(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Printer.php b/vendor/phpunit/phpunit/src/Util/Printer.php
new file mode 100644
index 000000000..77b5745ad
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Printer.php
@@ -0,0 +1,116 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const ENT_COMPAT;
+use const ENT_SUBSTITUTE;
+use const PHP_SAPI;
+use function assert;
+use function count;
+use function dirname;
+use function explode;
+use function fclose;
+use function fopen;
+use function fsockopen;
+use function fwrite;
+use function htmlspecialchars;
+use function is_resource;
+use function is_string;
+use function sprintf;
+use function str_replace;
+use function strncmp;
+use function strpos;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class Printer
+{
+ /**
+ * @psalm-var closed-resource|resource
+ */
+ private $stream;
+
+ /**
+ * @var bool
+ */
+ private $isPhpStream;
+
+ /**
+ * @param null|resource|string $out
+ *
+ * @throws Exception
+ */
+ public function __construct($out = null)
+ {
+ if (is_resource($out)) {
+ $this->stream = $out;
+
+ return;
+ }
+
+ if (!is_string($out)) {
+ return;
+ }
+
+ if (strpos($out, 'socket://') === 0) {
+ $tmp = explode(':', str_replace('socket://', '', $out));
+
+ if (count($tmp) !== 2) {
+ throw new Exception(
+ sprintf(
+ '"%s" does not match "socket://hostname:port" format',
+ $out
+ )
+ );
+ }
+
+ $this->stream = fsockopen($tmp[0], (int) $tmp[1]);
+
+ return;
+ }
+
+ if (strpos($out, 'php://') === false && !Filesystem::createDirectory(dirname($out))) {
+ throw new Exception(
+ sprintf(
+ 'Directory "%s" was not created',
+ dirname($out)
+ )
+ );
+ }
+
+ $this->stream = fopen($out, 'wb');
+ $this->isPhpStream = strncmp($out, 'php://', 6) !== 0;
+ }
+
+ public function write(string $buffer): void
+ {
+ if ($this->stream) {
+ assert(is_resource($this->stream));
+
+ fwrite($this->stream, $buffer);
+ } else {
+ if (PHP_SAPI !== 'cli' && PHP_SAPI !== 'phpdbg') {
+ $buffer = htmlspecialchars($buffer, ENT_COMPAT | ENT_SUBSTITUTE);
+ }
+
+ print $buffer;
+ }
+ }
+
+ public function flush(): void
+ {
+ if ($this->stream && $this->isPhpStream) {
+ assert(is_resource($this->stream));
+
+ fclose($this->stream);
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/RegularExpression.php b/vendor/phpunit/phpunit/src/Util/RegularExpression.php
new file mode 100644
index 000000000..db1dae922
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/RegularExpression.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use function preg_match;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class RegularExpression
+{
+ /**
+ * @return false|int
+ */
+ public static function safeMatch(string $pattern, string $subject)
+ {
+ return ErrorHandler::invokeIgnoringWarnings(
+ static function () use ($pattern, $subject)
+ {
+ return preg_match($pattern, $subject);
+ }
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Test.php b/vendor/phpunit/phpunit/src/Util/Test.php
new file mode 100644
index 000000000..0778f2f52
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Test.php
@@ -0,0 +1,784 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const PHP_OS;
+use const PHP_VERSION;
+use function addcslashes;
+use function array_flip;
+use function array_key_exists;
+use function array_merge;
+use function array_unique;
+use function array_unshift;
+use function class_exists;
+use function count;
+use function explode;
+use function extension_loaded;
+use function function_exists;
+use function get_class;
+use function ini_get;
+use function interface_exists;
+use function is_array;
+use function is_int;
+use function method_exists;
+use function phpversion;
+use function preg_match;
+use function preg_replace;
+use function sprintf;
+use function strncmp;
+use function strpos;
+use function strtolower;
+use function trim;
+use function version_compare;
+use PHPUnit\Framework\Assert;
+use PHPUnit\Framework\CodeCoverageException;
+use PHPUnit\Framework\ExecutionOrderDependency;
+use PHPUnit\Framework\InvalidCoversTargetException;
+use PHPUnit\Framework\SelfDescribing;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\Warning;
+use PHPUnit\Runner\Version;
+use PHPUnit\Util\Annotation\Registry;
+use ReflectionClass;
+use ReflectionException;
+use ReflectionMethod;
+use SebastianBergmann\CodeUnit\CodeUnitCollection;
+use SebastianBergmann\CodeUnit\InvalidCodeUnitException;
+use SebastianBergmann\CodeUnit\Mapper;
+use SebastianBergmann\Environment\OperatingSystem;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Test
+{
+ /**
+ * @var int
+ */
+ public const UNKNOWN = -1;
+
+ /**
+ * @var int
+ */
+ public const SMALL = 0;
+
+ /**
+ * @var int
+ */
+ public const MEDIUM = 1;
+
+ /**
+ * @var int
+ */
+ public const LARGE = 2;
+
+ /**
+ * @var array
+ */
+ private static $hookMethods = [];
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public static function describe(\PHPUnit\Framework\Test $test): array
+ {
+ if ($test instanceof TestCase) {
+ return [get_class($test), $test->getName()];
+ }
+
+ if ($test instanceof SelfDescribing) {
+ return ['', $test->toString()];
+ }
+
+ return ['', get_class($test)];
+ }
+
+ public static function describeAsString(\PHPUnit\Framework\Test $test): string
+ {
+ if ($test instanceof SelfDescribing) {
+ return $test->toString();
+ }
+
+ return get_class($test);
+ }
+
+ /**
+ * @throws CodeCoverageException
+ *
+ * @return array|bool
+ * @psalm-param class-string $className
+ */
+ public static function getLinesToBeCovered(string $className, string $methodName)
+ {
+ $annotations = self::parseTestMethodAnnotations(
+ $className,
+ $methodName
+ );
+
+ if (!self::shouldCoversAnnotationBeUsed($annotations)) {
+ return false;
+ }
+
+ return self::getLinesToBeCoveredOrUsed($className, $methodName, 'covers');
+ }
+
+ /**
+ * Returns lines of code specified with the @uses annotation.
+ *
+ * @throws CodeCoverageException
+ * @psalm-param class-string $className
+ */
+ public static function getLinesToBeUsed(string $className, string $methodName): array
+ {
+ return self::getLinesToBeCoveredOrUsed($className, $methodName, 'uses');
+ }
+
+ public static function requiresCodeCoverageDataCollection(TestCase $test): bool
+ {
+ $annotations = self::parseTestMethodAnnotations(
+ get_class($test),
+ $test->getName(false)
+ );
+
+ // If there is no @covers annotation but a @coversNothing annotation on
+ // the test method then code coverage data does not need to be collected
+ if (isset($annotations['method']['coversNothing'])) {
+ return false;
+ }
+
+ // If there is at least one @covers annotation then
+ // code coverage data needs to be collected
+ if (isset($annotations['method']['covers'])) {
+ return true;
+ }
+
+ // If there is no @covers annotation but a @coversNothing annotation
+ // then code coverage data does not need to be collected
+ if (isset($annotations['class']['coversNothing'])) {
+ return false;
+ }
+
+ // If there is no @coversNothing annotation then
+ // code coverage data may be collected
+ return true;
+ }
+
+ /**
+ * @throws Exception
+ * @psalm-param class-string $className
+ */
+ public static function getRequirements(string $className, string $methodName): array
+ {
+ return self::mergeArraysRecursively(
+ Registry::getInstance()->forClassName($className)->requirements(),
+ Registry::getInstance()->forMethod($className, $methodName)->requirements()
+ );
+ }
+
+ /**
+ * Returns the missing requirements for a test.
+ *
+ * @throws Exception
+ * @throws Warning
+ * @psalm-param class-string $className
+ */
+ public static function getMissingRequirements(string $className, string $methodName): array
+ {
+ $required = self::getRequirements($className, $methodName);
+ $missing = [];
+ $hint = null;
+
+ if (!empty($required['PHP'])) {
+ $operator = new VersionComparisonOperator(empty($required['PHP']['operator']) ? '>=' : $required['PHP']['operator']);
+
+ if (!version_compare(PHP_VERSION, $required['PHP']['version'], $operator->asString())) {
+ $missing[] = sprintf('PHP %s %s is required.', $operator->asString(), $required['PHP']['version']);
+ $hint = 'PHP';
+ }
+ } elseif (!empty($required['PHP_constraint'])) {
+ $version = new \PharIo\Version\Version(self::sanitizeVersionNumber(PHP_VERSION));
+
+ if (!$required['PHP_constraint']['constraint']->complies($version)) {
+ $missing[] = sprintf(
+ 'PHP version does not match the required constraint %s.',
+ $required['PHP_constraint']['constraint']->asString()
+ );
+
+ $hint = 'PHP_constraint';
+ }
+ }
+
+ if (!empty($required['PHPUnit'])) {
+ $phpunitVersion = Version::id();
+
+ $operator = new VersionComparisonOperator(empty($required['PHPUnit']['operator']) ? '>=' : $required['PHPUnit']['operator']);
+
+ if (!version_compare($phpunitVersion, $required['PHPUnit']['version'], $operator->asString())) {
+ $missing[] = sprintf('PHPUnit %s %s is required.', $operator->asString(), $required['PHPUnit']['version']);
+ $hint = $hint ?? 'PHPUnit';
+ }
+ } elseif (!empty($required['PHPUnit_constraint'])) {
+ $phpunitVersion = new \PharIo\Version\Version(self::sanitizeVersionNumber(Version::id()));
+
+ if (!$required['PHPUnit_constraint']['constraint']->complies($phpunitVersion)) {
+ $missing[] = sprintf(
+ 'PHPUnit version does not match the required constraint %s.',
+ $required['PHPUnit_constraint']['constraint']->asString()
+ );
+
+ $hint = $hint ?? 'PHPUnit_constraint';
+ }
+ }
+
+ if (!empty($required['OSFAMILY']) && $required['OSFAMILY'] !== (new OperatingSystem)->getFamily()) {
+ $missing[] = sprintf('Operating system %s is required.', $required['OSFAMILY']);
+ $hint = $hint ?? 'OSFAMILY';
+ }
+
+ if (!empty($required['OS'])) {
+ $requiredOsPattern = sprintf('/%s/i', addcslashes($required['OS'], '/'));
+
+ if (!preg_match($requiredOsPattern, PHP_OS)) {
+ $missing[] = sprintf('Operating system matching %s is required.', $requiredOsPattern);
+ $hint = $hint ?? 'OS';
+ }
+ }
+
+ if (!empty($required['functions'])) {
+ foreach ($required['functions'] as $function) {
+ $pieces = explode('::', $function);
+
+ if (count($pieces) === 2 && class_exists($pieces[0]) && method_exists($pieces[0], $pieces[1])) {
+ continue;
+ }
+
+ if (function_exists($function)) {
+ continue;
+ }
+
+ $missing[] = sprintf('Function %s is required.', $function);
+ $hint = $hint ?? 'function_' . $function;
+ }
+ }
+
+ if (!empty($required['setting'])) {
+ foreach ($required['setting'] as $setting => $value) {
+ if (ini_get($setting) !== $value) {
+ $missing[] = sprintf('Setting "%s" must be "%s".', $setting, $value);
+ $hint = $hint ?? '__SETTING_' . $setting;
+ }
+ }
+ }
+
+ if (!empty($required['extensions'])) {
+ foreach ($required['extensions'] as $extension) {
+ if (isset($required['extension_versions'][$extension])) {
+ continue;
+ }
+
+ if (!extension_loaded($extension)) {
+ $missing[] = sprintf('Extension %s is required.', $extension);
+ $hint = $hint ?? 'extension_' . $extension;
+ }
+ }
+ }
+
+ if (!empty($required['extension_versions'])) {
+ foreach ($required['extension_versions'] as $extension => $req) {
+ $actualVersion = phpversion($extension);
+
+ $operator = new VersionComparisonOperator(empty($req['operator']) ? '>=' : $req['operator']);
+
+ if ($actualVersion === false || !version_compare($actualVersion, $req['version'], $operator->asString())) {
+ $missing[] = sprintf('Extension %s %s %s is required.', $extension, $operator->asString(), $req['version']);
+ $hint = $hint ?? 'extension_' . $extension;
+ }
+ }
+ }
+
+ if ($hint && isset($required['__OFFSET'])) {
+ array_unshift($missing, '__OFFSET_FILE=' . $required['__OFFSET']['__FILE']);
+ array_unshift($missing, '__OFFSET_LINE=' . ($required['__OFFSET'][$hint] ?? 1));
+ }
+
+ return $missing;
+ }
+
+ /**
+ * Returns the provided data for a method.
+ *
+ * @throws Exception
+ * @psalm-param class-string $className
+ */
+ public static function getProvidedData(string $className, string $methodName): ?array
+ {
+ return Registry::getInstance()->forMethod($className, $methodName)->getProvidedData();
+ }
+
+ /**
+ * @psalm-param class-string $className
+ */
+ public static function parseTestMethodAnnotations(string $className, ?string $methodName = ''): array
+ {
+ $registry = Registry::getInstance();
+
+ if ($methodName !== null) {
+ try {
+ return [
+ 'method' => $registry->forMethod($className, $methodName)->symbolAnnotations(),
+ 'class' => $registry->forClassName($className)->symbolAnnotations(),
+ ];
+ } catch (Exception $methodNotFound) {
+ // ignored
+ }
+ }
+
+ return [
+ 'method' => null,
+ 'class' => $registry->forClassName($className)->symbolAnnotations(),
+ ];
+ }
+
+ /**
+ * @psalm-param class-string $className
+ */
+ public static function getInlineAnnotations(string $className, string $methodName): array
+ {
+ return Registry::getInstance()->forMethod($className, $methodName)->getInlineAnnotations();
+ }
+
+ /** @psalm-param class-string $className */
+ public static function getBackupSettings(string $className, string $methodName): array
+ {
+ return [
+ 'backupGlobals' => self::getBooleanAnnotationSetting(
+ $className,
+ $methodName,
+ 'backupGlobals'
+ ),
+ 'backupStaticAttributes' => self::getBooleanAnnotationSetting(
+ $className,
+ $methodName,
+ 'backupStaticAttributes'
+ ),
+ ];
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @return ExecutionOrderDependency[]
+ */
+ public static function getDependencies(string $className, string $methodName): array
+ {
+ $annotations = self::parseTestMethodAnnotations(
+ $className,
+ $methodName
+ );
+
+ $dependsAnnotations = $annotations['class']['depends'] ?? [];
+
+ if (isset($annotations['method']['depends'])) {
+ $dependsAnnotations = array_merge(
+ $dependsAnnotations,
+ $annotations['method']['depends']
+ );
+ }
+
+ // Normalize dependency name to className::methodName
+ $dependencies = [];
+
+ foreach ($dependsAnnotations as $value) {
+ $dependencies[] = ExecutionOrderDependency::createFromDependsAnnotation($className, $value);
+ }
+
+ return array_unique($dependencies);
+ }
+
+ /** @psalm-param class-string $className */
+ public static function getGroups(string $className, ?string $methodName = ''): array
+ {
+ $annotations = self::parseTestMethodAnnotations(
+ $className,
+ $methodName
+ );
+
+ $groups = [];
+
+ if (isset($annotations['method']['author'])) {
+ $groups[] = $annotations['method']['author'];
+ } elseif (isset($annotations['class']['author'])) {
+ $groups[] = $annotations['class']['author'];
+ }
+
+ if (isset($annotations['class']['group'])) {
+ $groups[] = $annotations['class']['group'];
+ }
+
+ if (isset($annotations['method']['group'])) {
+ $groups[] = $annotations['method']['group'];
+ }
+
+ if (isset($annotations['class']['ticket'])) {
+ $groups[] = $annotations['class']['ticket'];
+ }
+
+ if (isset($annotations['method']['ticket'])) {
+ $groups[] = $annotations['method']['ticket'];
+ }
+
+ foreach (['method', 'class'] as $element) {
+ foreach (['small', 'medium', 'large'] as $size) {
+ if (isset($annotations[$element][$size])) {
+ $groups[] = [$size];
+
+ break 2;
+ }
+ }
+ }
+
+ foreach (['method', 'class'] as $element) {
+ if (isset($annotations[$element]['covers'])) {
+ foreach ($annotations[$element]['covers'] as $coversTarget) {
+ $groups[] = ['__phpunit_covers_' . self::canonicalizeName($coversTarget)];
+ }
+ }
+
+ if (isset($annotations[$element]['uses'])) {
+ foreach ($annotations[$element]['uses'] as $usesTarget) {
+ $groups[] = ['__phpunit_uses_' . self::canonicalizeName($usesTarget)];
+ }
+ }
+ }
+
+ return array_unique(array_merge([], ...$groups));
+ }
+
+ /** @psalm-param class-string $className */
+ public static function getSize(string $className, ?string $methodName): int
+ {
+ $groups = array_flip(self::getGroups($className, $methodName));
+
+ if (isset($groups['large'])) {
+ return self::LARGE;
+ }
+
+ if (isset($groups['medium'])) {
+ return self::MEDIUM;
+ }
+
+ if (isset($groups['small'])) {
+ return self::SMALL;
+ }
+
+ return self::UNKNOWN;
+ }
+
+ /** @psalm-param class-string $className */
+ public static function getProcessIsolationSettings(string $className, string $methodName): bool
+ {
+ $annotations = self::parseTestMethodAnnotations(
+ $className,
+ $methodName
+ );
+
+ return isset($annotations['class']['runTestsInSeparateProcesses']) || isset($annotations['method']['runInSeparateProcess']);
+ }
+
+ /** @psalm-param class-string $className */
+ public static function getClassProcessIsolationSettings(string $className, string $methodName): bool
+ {
+ $annotations = self::parseTestMethodAnnotations(
+ $className,
+ $methodName
+ );
+
+ return isset($annotations['class']['runClassInSeparateProcess']);
+ }
+
+ /** @psalm-param class-string $className */
+ public static function getPreserveGlobalStateSettings(string $className, string $methodName): ?bool
+ {
+ return self::getBooleanAnnotationSetting(
+ $className,
+ $methodName,
+ 'preserveGlobalState'
+ );
+ }
+
+ /** @psalm-param class-string $className */
+ public static function getHookMethods(string $className): array
+ {
+ if (!class_exists($className, false)) {
+ return self::emptyHookMethodsArray();
+ }
+
+ if (!isset(self::$hookMethods[$className])) {
+ self::$hookMethods[$className] = self::emptyHookMethodsArray();
+
+ try {
+ foreach ((new ReflectionClass($className))->getMethods() as $method) {
+ if ($method->getDeclaringClass()->getName() === Assert::class) {
+ continue;
+ }
+
+ if ($method->getDeclaringClass()->getName() === TestCase::class) {
+ continue;
+ }
+
+ $docBlock = Registry::getInstance()->forMethod($className, $method->getName());
+
+ if ($method->isStatic()) {
+ if ($docBlock->isHookToBeExecutedBeforeClass()) {
+ array_unshift(
+ self::$hookMethods[$className]['beforeClass'],
+ $method->getName()
+ );
+ }
+
+ if ($docBlock->isHookToBeExecutedAfterClass()) {
+ self::$hookMethods[$className]['afterClass'][] = $method->getName();
+ }
+ }
+
+ if ($docBlock->isToBeExecutedBeforeTest()) {
+ array_unshift(
+ self::$hookMethods[$className]['before'],
+ $method->getName()
+ );
+ }
+
+ if ($docBlock->isToBeExecutedAsPreCondition()) {
+ array_unshift(
+ self::$hookMethods[$className]['preCondition'],
+ $method->getName()
+ );
+ }
+
+ if ($docBlock->isToBeExecutedAsPostCondition()) {
+ self::$hookMethods[$className]['postCondition'][] = $method->getName();
+ }
+
+ if ($docBlock->isToBeExecutedAfterTest()) {
+ self::$hookMethods[$className]['after'][] = $method->getName();
+ }
+ }
+ } catch (ReflectionException $e) {
+ }
+ }
+
+ return self::$hookMethods[$className];
+ }
+
+ public static function isTestMethod(ReflectionMethod $method): bool
+ {
+ if (!$method->isPublic()) {
+ return false;
+ }
+
+ if (strpos($method->getName(), 'test') === 0) {
+ return true;
+ }
+
+ return array_key_exists(
+ 'test',
+ Registry::getInstance()->forMethod(
+ $method->getDeclaringClass()->getName(),
+ $method->getName()
+ )
+ ->symbolAnnotations()
+ );
+ }
+
+ /**
+ * @throws CodeCoverageException
+ * @psalm-param class-string $className
+ */
+ private static function getLinesToBeCoveredOrUsed(string $className, string $methodName, string $mode): array
+ {
+ $annotations = self::parseTestMethodAnnotations(
+ $className,
+ $methodName
+ );
+
+ $classShortcut = null;
+
+ if (!empty($annotations['class'][$mode . 'DefaultClass'])) {
+ if (count($annotations['class'][$mode . 'DefaultClass']) > 1) {
+ throw new CodeCoverageException(
+ sprintf(
+ 'More than one @%sClass annotation in class or interface "%s".',
+ $mode,
+ $className
+ )
+ );
+ }
+
+ $classShortcut = $annotations['class'][$mode . 'DefaultClass'][0];
+ }
+
+ $list = $annotations['class'][$mode] ?? [];
+
+ if (isset($annotations['method'][$mode])) {
+ $list = array_merge($list, $annotations['method'][$mode]);
+ }
+
+ $codeUnits = CodeUnitCollection::fromArray([]);
+ $mapper = new Mapper;
+
+ foreach (array_unique($list) as $element) {
+ if ($classShortcut && strncmp($element, '::', 2) === 0) {
+ $element = $classShortcut . $element;
+ }
+
+ $element = preg_replace('/[\s()]+$/', '', $element);
+ $element = explode(' ', $element);
+ $element = $element[0];
+
+ if ($mode === 'covers' && interface_exists($element)) {
+ throw new InvalidCoversTargetException(
+ sprintf(
+ 'Trying to @cover interface "%s".',
+ $element
+ )
+ );
+ }
+
+ try {
+ $codeUnits = $codeUnits->mergeWith($mapper->stringToCodeUnits($element));
+ } catch (InvalidCodeUnitException $e) {
+ throw new InvalidCoversTargetException(
+ sprintf(
+ '"@%s %s" is invalid',
+ $mode,
+ $element
+ ),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ }
+
+ return $mapper->codeUnitsToSourceLines($codeUnits);
+ }
+
+ private static function emptyHookMethodsArray(): array
+ {
+ return [
+ 'beforeClass' => ['setUpBeforeClass'],
+ 'before' => ['setUp'],
+ 'preCondition' => ['assertPreConditions'],
+ 'postCondition' => ['assertPostConditions'],
+ 'after' => ['tearDown'],
+ 'afterClass' => ['tearDownAfterClass'],
+ ];
+ }
+
+ /** @psalm-param class-string $className */
+ private static function getBooleanAnnotationSetting(string $className, ?string $methodName, string $settingName): ?bool
+ {
+ $annotations = self::parseTestMethodAnnotations(
+ $className,
+ $methodName
+ );
+
+ if (isset($annotations['method'][$settingName])) {
+ if ($annotations['method'][$settingName][0] === 'enabled') {
+ return true;
+ }
+
+ if ($annotations['method'][$settingName][0] === 'disabled') {
+ return false;
+ }
+ }
+
+ if (isset($annotations['class'][$settingName])) {
+ if ($annotations['class'][$settingName][0] === 'enabled') {
+ return true;
+ }
+
+ if ($annotations['class'][$settingName][0] === 'disabled') {
+ return false;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Trims any extensions from version string that follows after
+ * the <major>.<minor>[.<patch>] format.
+ */
+ private static function sanitizeVersionNumber(string $version)
+ {
+ return preg_replace(
+ '/^(\d+\.\d+(?:.\d+)?).*$/',
+ '$1',
+ $version
+ );
+ }
+
+ private static function shouldCoversAnnotationBeUsed(array $annotations): bool
+ {
+ if (isset($annotations['method']['coversNothing'])) {
+ return false;
+ }
+
+ if (isset($annotations['method']['covers'])) {
+ return true;
+ }
+
+ if (isset($annotations['class']['coversNothing'])) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Merge two arrays together.
+ *
+ * If an integer key exists in both arrays and preserveNumericKeys is false, the value
+ * from the second array will be appended to the first array. If both values are arrays, they
+ * are merged together, else the value of the second array overwrites the one of the first array.
+ *
+ * This implementation is copied from https://github.com/zendframework/zend-stdlib/blob/76b653c5e99b40eccf5966e3122c90615134ae46/src/ArrayUtils.php
+ *
+ * Zend Framework (http://framework.zend.com/)
+ *
+ * @see http://github.com/zendframework/zf2 for the canonical source repository
+ *
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+ private static function mergeArraysRecursively(array $a, array $b): array
+ {
+ foreach ($b as $key => $value) {
+ if (array_key_exists($key, $a)) {
+ if (is_int($key)) {
+ $a[] = $value;
+ } elseif (is_array($value) && is_array($a[$key])) {
+ $a[$key] = self::mergeArraysRecursively($a[$key], $value);
+ } else {
+ $a[$key] = $value;
+ }
+ } else {
+ $a[$key] = $value;
+ }
+ }
+
+ return $a;
+ }
+
+ private static function canonicalizeName(string $name): string
+ {
+ return strtolower(trim($name, '\\'));
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php
new file mode 100644
index 000000000..def16c398
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/TestDox/CliTestDoxPrinter.php
@@ -0,0 +1,381 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\TestDox;
+
+use const PHP_EOL;
+use function array_map;
+use function ceil;
+use function count;
+use function explode;
+use function get_class;
+use function implode;
+use function preg_match;
+use function sprintf;
+use function strlen;
+use function strpos;
+use function trim;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestResult;
+use PHPUnit\Runner\BaseTestRunner;
+use PHPUnit\Runner\PhptTestCase;
+use PHPUnit\Util\Color;
+use SebastianBergmann\Timer\ResourceUsageFormatter;
+use SebastianBergmann\Timer\Timer;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class CliTestDoxPrinter extends TestDoxPrinter
+{
+ /**
+ * The default Testdox left margin for messages is a vertical line.
+ */
+ private const PREFIX_SIMPLE = [
+ 'default' => '│',
+ 'start' => '│',
+ 'message' => '│',
+ 'diff' => '│',
+ 'trace' => '│',
+ 'last' => '│',
+ ];
+
+ /**
+ * Colored Testdox use box-drawing for a more textured map of the message.
+ */
+ private const PREFIX_DECORATED = [
+ 'default' => '│',
+ 'start' => '┐',
+ 'message' => '├',
+ 'diff' => '┊',
+ 'trace' => '╵',
+ 'last' => '┴',
+ ];
+
+ private const SPINNER_ICONS = [
+ " \e[36m◐\e[0m running tests",
+ " \e[36m◓\e[0m running tests",
+ " \e[36m◑\e[0m running tests",
+ " \e[36m◒\e[0m running tests",
+ ];
+
+ private const STATUS_STYLES = [
+ BaseTestRunner::STATUS_PASSED => [
+ 'symbol' => '✔',
+ 'color' => 'fg-green',
+ ],
+ BaseTestRunner::STATUS_ERROR => [
+ 'symbol' => '✘',
+ 'color' => 'fg-yellow',
+ 'message' => 'bg-yellow,fg-black',
+ ],
+ BaseTestRunner::STATUS_FAILURE => [
+ 'symbol' => '✘',
+ 'color' => 'fg-red',
+ 'message' => 'bg-red,fg-white',
+ ],
+ BaseTestRunner::STATUS_SKIPPED => [
+ 'symbol' => '↩',
+ 'color' => 'fg-cyan',
+ 'message' => 'fg-cyan',
+ ],
+ BaseTestRunner::STATUS_RISKY => [
+ 'symbol' => '☢',
+ 'color' => 'fg-yellow',
+ 'message' => 'fg-yellow',
+ ],
+ BaseTestRunner::STATUS_INCOMPLETE => [
+ 'symbol' => '∅',
+ 'color' => 'fg-yellow',
+ 'message' => 'fg-yellow',
+ ],
+ BaseTestRunner::STATUS_WARNING => [
+ 'symbol' => '⚠',
+ 'color' => 'fg-yellow',
+ 'message' => 'fg-yellow',
+ ],
+ BaseTestRunner::STATUS_UNKNOWN => [
+ 'symbol' => '?',
+ 'color' => 'fg-blue',
+ 'message' => 'fg-white,bg-blue',
+ ],
+ ];
+
+ /**
+ * @var int[]
+ */
+ private $nonSuccessfulTestResults = [];
+
+ /**
+ * @var Timer
+ */
+ private $timer;
+
+ /**
+ * @param null|resource|string $out
+ * @param int|string $numberOfColumns
+ *
+ * @throws \PHPUnit\Framework\Exception
+ */
+ public function __construct($out = null, bool $verbose = false, string $colors = self::COLOR_DEFAULT, bool $debug = false, $numberOfColumns = 80, bool $reverse = false)
+ {
+ parent::__construct($out, $verbose, $colors, $debug, $numberOfColumns, $reverse);
+
+ $this->timer = new Timer;
+
+ $this->timer->start();
+ }
+
+ public function printResult(TestResult $result): void
+ {
+ $this->printHeader($result);
+
+ $this->printNonSuccessfulTestsSummary($result->count());
+
+ $this->printFooter($result);
+ }
+
+ protected function printHeader(TestResult $result): void
+ {
+ $this->write("\n" . (new ResourceUsageFormatter)->resourceUsage($this->timer->stop()) . "\n\n");
+ }
+
+ protected function formatClassName(Test $test): string
+ {
+ if ($test instanceof TestCase) {
+ return $this->prettifier->prettifyTestClass(get_class($test));
+ }
+
+ return get_class($test);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function registerTestResult(Test $test, ?Throwable $t, int $status, float $time, bool $verbose): void
+ {
+ if ($status !== BaseTestRunner::STATUS_PASSED) {
+ $this->nonSuccessfulTestResults[] = $this->testIndex;
+ }
+
+ parent::registerTestResult($test, $t, $status, $time, $verbose);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function formatTestName(Test $test): string
+ {
+ if ($test instanceof TestCase) {
+ return $this->prettifier->prettifyTestCase($test);
+ }
+
+ return parent::formatTestName($test);
+ }
+
+ protected function writeTestResult(array $prevResult, array $result): void
+ {
+ // spacer line for new suite headers and after verbose messages
+ if ($prevResult['testName'] !== '' &&
+ (!empty($prevResult['message']) || $prevResult['className'] !== $result['className'])) {
+ $this->write(PHP_EOL);
+ }
+
+ // suite header
+ if ($prevResult['className'] !== $result['className']) {
+ $this->write($this->colorizeTextBox('underlined', $result['className']) . PHP_EOL);
+ }
+
+ // test result line
+ if ($this->colors && $result['className'] === PhptTestCase::class) {
+ $testName = Color::colorizePath($result['testName'], $prevResult['testName'], true);
+ } else {
+ $testName = $result['testMethod'];
+ }
+
+ $style = self::STATUS_STYLES[$result['status']];
+ $line = sprintf(
+ ' %s %s%s' . PHP_EOL,
+ $this->colorizeTextBox($style['color'], $style['symbol']),
+ $testName,
+ $this->verbose ? ' ' . $this->formatRuntime($result['time'], $style['color']) : ''
+ );
+
+ $this->write($line);
+
+ // additional information when verbose
+ $this->write($result['message']);
+ }
+
+ protected function formatThrowable(Throwable $t, ?int $status = null): string
+ {
+ return trim(\PHPUnit\Framework\TestFailure::exceptionToString($t));
+ }
+
+ protected function colorizeMessageAndDiff(string $style, string $buffer): array
+ {
+ $lines = $buffer ? array_map('\rtrim', explode(PHP_EOL, $buffer)) : [];
+ $message = [];
+ $diff = [];
+ $insideDiff = false;
+
+ foreach ($lines as $line) {
+ if ($line === '--- Expected') {
+ $insideDiff = true;
+ }
+
+ if (!$insideDiff) {
+ $message[] = $line;
+ } else {
+ if (strpos($line, '-') === 0) {
+ $line = Color::colorize('fg-red', Color::visualizeWhitespace($line, true));
+ } elseif (strpos($line, '+') === 0) {
+ $line = Color::colorize('fg-green', Color::visualizeWhitespace($line, true));
+ } elseif ($line === '@@ @@') {
+ $line = Color::colorize('fg-cyan', $line);
+ }
+ $diff[] = $line;
+ }
+ }
+ $diff = implode(PHP_EOL, $diff);
+
+ if (!empty($message)) {
+ $message = $this->colorizeTextBox($style, implode(PHP_EOL, $message));
+ }
+
+ return [$message, $diff];
+ }
+
+ protected function formatStacktrace(Throwable $t): string
+ {
+ $trace = \PHPUnit\Util\Filter::getFilteredStacktrace($t);
+
+ if (!$this->colors) {
+ return $trace;
+ }
+
+ $lines = [];
+ $prevPath = '';
+
+ foreach (explode(PHP_EOL, $trace) as $line) {
+ if (preg_match('/^(.*):(\d+)$/', $line, $matches)) {
+ $lines[] = Color::colorizePath($matches[1], $prevPath) .
+ Color::dim(':') .
+ Color::colorize('fg-blue', $matches[2]) .
+ "\n";
+ $prevPath = $matches[1];
+ } else {
+ $lines[] = $line;
+ $prevPath = '';
+ }
+ }
+
+ return implode('', $lines);
+ }
+
+ protected function formatTestResultMessage(Throwable $t, array $result, ?string $prefix = null): string
+ {
+ $message = $this->formatThrowable($t, $result['status']);
+ $diff = '';
+
+ if (!($this->verbose || $result['verbose'])) {
+ return '';
+ }
+
+ if ($message && $this->colors) {
+ $style = self::STATUS_STYLES[$result['status']]['message'] ?? '';
+ [$message, $diff] = $this->colorizeMessageAndDiff($style, $message);
+ }
+
+ if ($prefix === null || !$this->colors) {
+ $prefix = self::PREFIX_SIMPLE;
+ }
+
+ if ($this->colors) {
+ $color = self::STATUS_STYLES[$result['status']]['color'] ?? '';
+ $prefix = array_map(static function ($p) use ($color)
+ {
+ return Color::colorize($color, $p);
+ }, self::PREFIX_DECORATED);
+ }
+
+ $trace = $this->formatStacktrace($t);
+ $out = $this->prefixLines($prefix['start'], PHP_EOL) . PHP_EOL;
+
+ if ($message) {
+ $out .= $this->prefixLines($prefix['message'], $message . PHP_EOL) . PHP_EOL;
+ }
+
+ if ($diff) {
+ $out .= $this->prefixLines($prefix['diff'], $diff . PHP_EOL) . PHP_EOL;
+ }
+
+ if ($trace) {
+ if ($message || $diff) {
+ $out .= $this->prefixLines($prefix['default'], PHP_EOL) . PHP_EOL;
+ }
+ $out .= $this->prefixLines($prefix['trace'], $trace . PHP_EOL) . PHP_EOL;
+ }
+ $out .= $this->prefixLines($prefix['last'], PHP_EOL) . PHP_EOL;
+
+ return $out;
+ }
+
+ protected function drawSpinner(): void
+ {
+ if ($this->colors) {
+ $id = $this->spinState % count(self::SPINNER_ICONS);
+ $this->write(self::SPINNER_ICONS[$id]);
+ }
+ }
+
+ protected function undrawSpinner(): void
+ {
+ if ($this->colors) {
+ $id = $this->spinState % count(self::SPINNER_ICONS);
+ $this->write("\e[1K\e[" . strlen(self::SPINNER_ICONS[$id]) . 'D');
+ }
+ }
+
+ private function formatRuntime(float $time, string $color = ''): string
+ {
+ if (!$this->colors) {
+ return sprintf('[%.2f ms]', $time * 1000);
+ }
+
+ if ($time > 1) {
+ $color = 'fg-magenta';
+ }
+
+ return Color::colorize($color, ' ' . (int) ceil($time * 1000) . ' ' . Color::dim('ms'));
+ }
+
+ private function printNonSuccessfulTestsSummary(int $numberOfExecutedTests): void
+ {
+ if (empty($this->nonSuccessfulTestResults)) {
+ return;
+ }
+
+ if ((count($this->nonSuccessfulTestResults) / $numberOfExecutedTests) >= 0.7) {
+ return;
+ }
+
+ $this->write("Summary of non-successful tests:\n\n");
+
+ $prevResult = $this->getEmptyTestResult();
+
+ foreach ($this->nonSuccessfulTestResults as $testIndex) {
+ $result = $this->testResults[$testIndex];
+ $this->writeTestResult($prevResult, $result);
+ $prevResult = $result;
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php
new file mode 100644
index 000000000..013d1de81
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/TestDox/HtmlResultPrinter.php
@@ -0,0 +1,140 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\TestDox;
+
+use function sprintf;
+use PHPUnit\Framework\TestResult;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class HtmlResultPrinter extends ResultPrinter
+{
+ /**
+ * @var string
+ */
+ private const PAGE_HEADER = <<<'EOT'
+<!doctype html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8"/>
+ <title>Test Documentation</title>
+ <style>
+ body {
+ text-rendering: optimizeLegibility;
+ font-variant-ligatures: common-ligatures;
+ font-kerning: normal;
+ margin-left: 2em;
+ background-color: #ffffff;
+ color: #000000;
+ }
+
+ body > ul > li {
+ font-family: Source Serif Pro, PT Sans, Trebuchet MS, Helvetica, Arial;
+ font-size: 2em;
+ }
+
+ h2 {
+ font-family: Tahoma, Helvetica, Arial;
+ font-size: 3em;
+ }
+
+ ul {
+ list-style: none;
+ margin-bottom: 1em;
+ }
+ </style>
+ </head>
+ <body>
+EOT;
+
+ /**
+ * @var string
+ */
+ private const CLASS_HEADER = <<<'EOT'
+
+ <h2 id="%s">%s</h2>
+ <ul>
+
+EOT;
+
+ /**
+ * @var string
+ */
+ private const CLASS_FOOTER = <<<'EOT'
+ </ul>
+EOT;
+
+ /**
+ * @var string
+ */
+ private const PAGE_FOOTER = <<<'EOT'
+
+ </body>
+</html>
+EOT;
+
+ public function printResult(TestResult $result): void
+ {
+ }
+
+ /**
+ * Handler for 'start run' event.
+ */
+ protected function startRun(): void
+ {
+ $this->write(self::PAGE_HEADER);
+ }
+
+ /**
+ * Handler for 'start class' event.
+ */
+ protected function startClass(string $name): void
+ {
+ $this->write(
+ sprintf(
+ self::CLASS_HEADER,
+ $name,
+ $this->currentTestClassPrettified
+ )
+ );
+ }
+
+ /**
+ * Handler for 'on test' event.
+ */
+ protected function onTest(string $name, bool $success = true): void
+ {
+ $this->write(
+ sprintf(
+ " <li style=\"color: %s;\">%s %s</li>\n",
+ $success ? '#555753' : '#ef2929',
+ $success ? '✓' : '❌',
+ $name
+ )
+ );
+ }
+
+ /**
+ * Handler for 'end class' event.
+ */
+ protected function endClass(string $name): void
+ {
+ $this->write(self::CLASS_FOOTER);
+ }
+
+ /**
+ * Handler for 'end run' event.
+ */
+ protected function endRun(): void
+ {
+ $this->write(self::PAGE_FOOTER);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php b/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php
new file mode 100644
index 000000000..d2808a83e
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php
@@ -0,0 +1,312 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\TestDox;
+
+use function array_key_exists;
+use function array_keys;
+use function array_map;
+use function array_pop;
+use function array_values;
+use function explode;
+use function get_class;
+use function gettype;
+use function implode;
+use function in_array;
+use function is_bool;
+use function is_float;
+use function is_int;
+use function is_numeric;
+use function is_object;
+use function is_scalar;
+use function is_string;
+use function ord;
+use function preg_quote;
+use function preg_replace;
+use function range;
+use function sprintf;
+use function str_replace;
+use function strlen;
+use function strpos;
+use function strtolower;
+use function strtoupper;
+use function substr;
+use function trim;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Util\Color;
+use PHPUnit\Util\Exception as UtilException;
+use PHPUnit\Util\Test;
+use ReflectionException;
+use ReflectionMethod;
+use ReflectionObject;
+use SebastianBergmann\Exporter\Exporter;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class NamePrettifier
+{
+ /**
+ * @var string[]
+ */
+ private $strings = [];
+
+ /**
+ * @var bool
+ */
+ private $useColor;
+
+ public function __construct(bool $useColor = false)
+ {
+ $this->useColor = $useColor;
+ }
+
+ /**
+ * Prettifies the name of a test class.
+ *
+ * @psalm-param class-string $className
+ */
+ public function prettifyTestClass(string $className): string
+ {
+ try {
+ $annotations = Test::parseTestMethodAnnotations($className);
+
+ if (isset($annotations['class']['testdox'][0])) {
+ return $annotations['class']['testdox'][0];
+ }
+ } catch (UtilException $e) {
+ // ignore, determine className by parsing the provided name
+ }
+
+ $parts = explode('\\', $className);
+ $className = array_pop($parts);
+
+ if (substr($className, -1 * strlen('Test')) === 'Test') {
+ $className = substr($className, 0, strlen($className) - strlen('Test'));
+ }
+
+ if (strpos($className, 'Tests') === 0) {
+ $className = substr($className, strlen('Tests'));
+ } elseif (strpos($className, 'Test') === 0) {
+ $className = substr($className, strlen('Test'));
+ }
+
+ if (empty($className)) {
+ $className = 'UnnamedTests';
+ }
+
+ if (!empty($parts)) {
+ $parts[] = $className;
+ $fullyQualifiedName = implode('\\', $parts);
+ } else {
+ $fullyQualifiedName = $className;
+ }
+
+ $result = preg_replace('/(?<=[[:lower:]])(?=[[:upper:]])/u', ' ', $className);
+
+ if ($fullyQualifiedName !== $className) {
+ return $result . ' (' . $fullyQualifiedName . ')';
+ }
+
+ return $result;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function prettifyTestCase(TestCase $test): string
+ {
+ $annotations = Test::parseTestMethodAnnotations(
+ get_class($test),
+ $test->getName(false)
+ );
+
+ $annotationWithPlaceholders = false;
+
+ $callback = static function (string $variable): string
+ {
+ return sprintf('/%s(?=\b)/', preg_quote($variable, '/'));
+ };
+
+ if (isset($annotations['method']['testdox'][0])) {
+ $result = $annotations['method']['testdox'][0];
+
+ if (strpos($result, '$') !== false) {
+ $annotation = $annotations['method']['testdox'][0];
+ $providedData = $this->mapTestMethodParameterNamesToProvidedDataValues($test);
+ $variables = array_map($callback, array_keys($providedData));
+
+ $result = trim(preg_replace($variables, $providedData, $annotation));
+
+ $annotationWithPlaceholders = true;
+ }
+ } else {
+ $result = $this->prettifyTestMethod($test->getName(false));
+ }
+
+ if (!$annotationWithPlaceholders && $test->usesDataProvider()) {
+ $result .= $this->prettifyDataSet($test);
+ }
+
+ return $result;
+ }
+
+ public function prettifyDataSet(TestCase $test): string
+ {
+ if (!$this->useColor) {
+ return $test->getDataSetAsString(false);
+ }
+
+ if (is_int($test->dataName())) {
+ $data = Color::dim(' with data set ') . Color::colorize('fg-cyan', (string) $test->dataName());
+ } else {
+ $data = Color::dim(' with ') . Color::colorize('fg-cyan', Color::visualizeWhitespace((string) $test->dataName()));
+ }
+
+ return $data;
+ }
+
+ /**
+ * Prettifies the name of a test method.
+ */
+ public function prettifyTestMethod(string $name): string
+ {
+ $buffer = '';
+
+ if ($name === '') {
+ return $buffer;
+ }
+
+ $string = (string) preg_replace('#\d+$#', '', $name, -1, $count);
+
+ if (in_array($string, $this->strings, true)) {
+ $name = $string;
+ } elseif ($count === 0) {
+ $this->strings[] = $string;
+ }
+
+ if (strpos($name, 'test_') === 0) {
+ $name = substr($name, 5);
+ } elseif (strpos($name, 'test') === 0) {
+ $name = substr($name, 4);
+ }
+
+ if ($name === '') {
+ return $buffer;
+ }
+
+ $name[0] = strtoupper($name[0]);
+
+ if (strpos($name, '_') !== false) {
+ return trim(str_replace('_', ' ', $name));
+ }
+
+ $wasNumeric = false;
+
+ foreach (range(0, strlen($name) - 1) as $i) {
+ if ($i > 0 && ord($name[$i]) >= 65 && ord($name[$i]) <= 90) {
+ $buffer .= ' ' . strtolower($name[$i]);
+ } else {
+ $isNumeric = is_numeric($name[$i]);
+
+ if (!$wasNumeric && $isNumeric) {
+ $buffer .= ' ';
+ $wasNumeric = true;
+ }
+
+ if ($wasNumeric && !$isNumeric) {
+ $wasNumeric = false;
+ }
+
+ $buffer .= $name[$i];
+ }
+ }
+
+ return $buffer;
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ private function mapTestMethodParameterNamesToProvidedDataValues(TestCase $test): array
+ {
+ try {
+ $reflector = new ReflectionMethod(get_class($test), $test->getName(false));
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new UtilException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ $providedData = [];
+ $providedDataValues = array_values($test->getProvidedData());
+ $i = 0;
+
+ $providedData['$_dataName'] = $test->dataName();
+
+ foreach ($reflector->getParameters() as $parameter) {
+ if (!array_key_exists($i, $providedDataValues) && $parameter->isDefaultValueAvailable()) {
+ try {
+ $providedDataValues[$i] = $parameter->getDefaultValue();
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new UtilException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ $value = $providedDataValues[$i++] ?? null;
+
+ if (is_object($value)) {
+ $reflector = new ReflectionObject($value);
+
+ if ($reflector->hasMethod('__toString')) {
+ $value = (string) $value;
+ } else {
+ $value = get_class($value);
+ }
+ }
+
+ if (!is_scalar($value)) {
+ $value = gettype($value);
+ }
+
+ if (is_bool($value) || is_int($value) || is_float($value)) {
+ $value = (new Exporter)->export($value);
+ }
+
+ if (is_string($value) && $value === '') {
+ if ($this->useColor) {
+ $value = Color::colorize('dim,underlined', 'empty');
+ } else {
+ $value = "''";
+ }
+ }
+
+ $providedData['$' . $parameter->getName()] = $value;
+ }
+
+ if ($this->useColor) {
+ $providedData = array_map(static function ($value)
+ {
+ return Color::colorize('fg-cyan', Color::visualizeWhitespace((string) $value, true));
+ }, $providedData);
+ }
+
+ return $providedData;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php
new file mode 100644
index 000000000..c4b63644f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php
@@ -0,0 +1,343 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\TestDox;
+
+use function get_class;
+use function in_array;
+use PHPUnit\Framework\AssertionFailedError;
+use PHPUnit\Framework\ErrorTestCase;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Framework\Warning;
+use PHPUnit\Framework\WarningTestCase;
+use PHPUnit\Runner\BaseTestRunner;
+use PHPUnit\TextUI\ResultPrinter as ResultPrinterInterface;
+use PHPUnit\Util\Printer;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+abstract class ResultPrinter extends Printer implements ResultPrinterInterface
+{
+ /**
+ * @var NamePrettifier
+ */
+ protected $prettifier;
+
+ /**
+ * @var string
+ */
+ protected $testClass = '';
+
+ /**
+ * @var int
+ */
+ protected $testStatus;
+
+ /**
+ * @var array
+ */
+ protected $tests = [];
+
+ /**
+ * @var int
+ */
+ protected $successful = 0;
+
+ /**
+ * @var int
+ */
+ protected $warned = 0;
+
+ /**
+ * @var int
+ */
+ protected $failed = 0;
+
+ /**
+ * @var int
+ */
+ protected $risky = 0;
+
+ /**
+ * @var int
+ */
+ protected $skipped = 0;
+
+ /**
+ * @var int
+ */
+ protected $incomplete = 0;
+
+ /**
+ * @var null|string
+ */
+ protected $currentTestClassPrettified;
+
+ /**
+ * @var null|string
+ */
+ protected $currentTestMethodPrettified;
+
+ /**
+ * @var array
+ */
+ private $groups;
+
+ /**
+ * @var array
+ */
+ private $excludeGroups;
+
+ /**
+ * @param resource $out
+ *
+ * @throws \PHPUnit\Framework\Exception
+ */
+ public function __construct($out = null, array $groups = [], array $excludeGroups = [])
+ {
+ parent::__construct($out);
+
+ $this->groups = $groups;
+ $this->excludeGroups = $excludeGroups;
+
+ $this->prettifier = new NamePrettifier;
+ $this->startRun();
+ }
+
+ /**
+ * Flush buffer and close output.
+ */
+ public function flush(): void
+ {
+ $this->doEndClass();
+ $this->endRun();
+
+ parent::flush();
+ }
+
+ /**
+ * An error occurred.
+ */
+ public function addError(Test $test, Throwable $t, float $time): void
+ {
+ if (!$this->isOfInterest($test)) {
+ return;
+ }
+
+ $this->testStatus = BaseTestRunner::STATUS_ERROR;
+ $this->failed++;
+ }
+
+ /**
+ * A warning occurred.
+ */
+ public function addWarning(Test $test, Warning $e, float $time): void
+ {
+ if (!$this->isOfInterest($test)) {
+ return;
+ }
+
+ $this->testStatus = BaseTestRunner::STATUS_WARNING;
+ $this->warned++;
+ }
+
+ /**
+ * A failure occurred.
+ */
+ public function addFailure(Test $test, AssertionFailedError $e, float $time): void
+ {
+ if (!$this->isOfInterest($test)) {
+ return;
+ }
+
+ $this->testStatus = BaseTestRunner::STATUS_FAILURE;
+ $this->failed++;
+ }
+
+ /**
+ * Incomplete test.
+ */
+ public function addIncompleteTest(Test $test, Throwable $t, float $time): void
+ {
+ if (!$this->isOfInterest($test)) {
+ return;
+ }
+
+ $this->testStatus = BaseTestRunner::STATUS_INCOMPLETE;
+ $this->incomplete++;
+ }
+
+ /**
+ * Risky test.
+ */
+ public function addRiskyTest(Test $test, Throwable $t, float $time): void
+ {
+ if (!$this->isOfInterest($test)) {
+ return;
+ }
+
+ $this->testStatus = BaseTestRunner::STATUS_RISKY;
+ $this->risky++;
+ }
+
+ /**
+ * Skipped test.
+ */
+ public function addSkippedTest(Test $test, Throwable $t, float $time): void
+ {
+ if (!$this->isOfInterest($test)) {
+ return;
+ }
+
+ $this->testStatus = BaseTestRunner::STATUS_SKIPPED;
+ $this->skipped++;
+ }
+
+ /**
+ * A testsuite started.
+ */
+ public function startTestSuite(TestSuite $suite): void
+ {
+ }
+
+ /**
+ * A testsuite ended.
+ */
+ public function endTestSuite(TestSuite $suite): void
+ {
+ }
+
+ /**
+ * A test started.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function startTest(Test $test): void
+ {
+ if (!$this->isOfInterest($test)) {
+ return;
+ }
+
+ $class = get_class($test);
+
+ if ($this->testClass !== $class) {
+ if ($this->testClass !== '') {
+ $this->doEndClass();
+ }
+
+ $this->currentTestClassPrettified = $this->prettifier->prettifyTestClass($class);
+ $this->testClass = $class;
+ $this->tests = [];
+
+ $this->startClass($class);
+ }
+
+ if ($test instanceof TestCase) {
+ $this->currentTestMethodPrettified = $this->prettifier->prettifyTestCase($test);
+ }
+
+ $this->testStatus = BaseTestRunner::STATUS_PASSED;
+ }
+
+ /**
+ * A test ended.
+ */
+ public function endTest(Test $test, float $time): void
+ {
+ if (!$this->isOfInterest($test)) {
+ return;
+ }
+
+ $this->tests[] = [$this->currentTestMethodPrettified, $this->testStatus];
+
+ $this->currentTestClassPrettified = null;
+ $this->currentTestMethodPrettified = null;
+ }
+
+ protected function doEndClass(): void
+ {
+ foreach ($this->tests as $test) {
+ $this->onTest($test[0], $test[1] === BaseTestRunner::STATUS_PASSED);
+ }
+
+ $this->endClass($this->testClass);
+ }
+
+ /**
+ * Handler for 'start run' event.
+ */
+ protected function startRun(): void
+ {
+ }
+
+ /**
+ * Handler for 'start class' event.
+ */
+ protected function startClass(string $name): void
+ {
+ }
+
+ /**
+ * Handler for 'on test' event.
+ */
+ protected function onTest(string $name, bool $success = true): void
+ {
+ }
+
+ /**
+ * Handler for 'end class' event.
+ */
+ protected function endClass(string $name): void
+ {
+ }
+
+ /**
+ * Handler for 'end run' event.
+ */
+ protected function endRun(): void
+ {
+ }
+
+ private function isOfInterest(Test $test): bool
+ {
+ if (!$test instanceof TestCase) {
+ return false;
+ }
+
+ if ($test instanceof ErrorTestCase || $test instanceof WarningTestCase) {
+ return false;
+ }
+
+ if (!empty($this->groups)) {
+ foreach ($test->getGroups() as $group) {
+ if (in_array($group, $this->groups, true)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ if (!empty($this->excludeGroups)) {
+ foreach ($test->getGroups() as $group) {
+ if (in_array($group, $this->excludeGroups, true)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ return true;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php
new file mode 100644
index 000000000..bd64785c9
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/TestDox/TestDoxPrinter.php
@@ -0,0 +1,388 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\TestDox;
+
+use const PHP_EOL;
+use function array_map;
+use function get_class;
+use function implode;
+use function method_exists;
+use function preg_split;
+use function trim;
+use PHPUnit\Framework\AssertionFailedError;
+use PHPUnit\Framework\Reorderable;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestResult;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Framework\Warning;
+use PHPUnit\Runner\BaseTestRunner;
+use PHPUnit\Runner\PhptTestCase;
+use PHPUnit\TextUI\DefaultResultPrinter;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+class TestDoxPrinter extends DefaultResultPrinter
+{
+ /**
+ * @var NamePrettifier
+ */
+ protected $prettifier;
+
+ /**
+ * @var int The number of test results received from the TestRunner
+ */
+ protected $testIndex = 0;
+
+ /**
+ * @var int The number of test results already sent to the output
+ */
+ protected $testFlushIndex = 0;
+
+ /**
+ * @var array<int, array> Buffer for test results
+ */
+ protected $testResults = [];
+
+ /**
+ * @var array<string, int> Lookup table for testname to testResults[index]
+ */
+ protected $testNameResultIndex = [];
+
+ /**
+ * @var bool
+ */
+ protected $enableOutputBuffer = false;
+
+ /**
+ * @var array array<string>
+ */
+ protected $originalExecutionOrder = [];
+
+ /**
+ * @var int
+ */
+ protected $spinState = 0;
+
+ /**
+ * @var bool
+ */
+ protected $showProgress = true;
+
+ /**
+ * @param null|resource|string $out
+ * @param int|string $numberOfColumns
+ *
+ * @throws \PHPUnit\Framework\Exception
+ */
+ public function __construct($out = null, bool $verbose = false, string $colors = self::COLOR_DEFAULT, bool $debug = false, $numberOfColumns = 80, bool $reverse = false)
+ {
+ parent::__construct($out, $verbose, $colors, $debug, $numberOfColumns, $reverse);
+
+ $this->prettifier = new NamePrettifier($this->colors);
+ }
+
+ public function setOriginalExecutionOrder(array $order): void
+ {
+ $this->originalExecutionOrder = $order;
+ $this->enableOutputBuffer = !empty($order);
+ }
+
+ public function setShowProgressAnimation(bool $showProgress): void
+ {
+ $this->showProgress = $showProgress;
+ }
+
+ public function printResult(TestResult $result): void
+ {
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function endTest(Test $test, float $time): void
+ {
+ if (!$test instanceof TestCase && !$test instanceof PhptTestCase && !$test instanceof TestSuite) {
+ return;
+ }
+
+ if ($this->testHasPassed()) {
+ $this->registerTestResult($test, null, BaseTestRunner::STATUS_PASSED, $time, false);
+ }
+
+ if ($test instanceof TestCase || $test instanceof PhptTestCase) {
+ $this->testIndex++;
+ }
+
+ parent::endTest($test, $time);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function addError(Test $test, Throwable $t, float $time): void
+ {
+ $this->registerTestResult($test, $t, BaseTestRunner::STATUS_ERROR, $time, true);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function addWarning(Test $test, Warning $e, float $time): void
+ {
+ $this->registerTestResult($test, $e, BaseTestRunner::STATUS_WARNING, $time, true);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function addFailure(Test $test, AssertionFailedError $e, float $time): void
+ {
+ $this->registerTestResult($test, $e, BaseTestRunner::STATUS_FAILURE, $time, true);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function addIncompleteTest(Test $test, Throwable $t, float $time): void
+ {
+ $this->registerTestResult($test, $t, BaseTestRunner::STATUS_INCOMPLETE, $time, false);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function addRiskyTest(Test $test, Throwable $t, float $time): void
+ {
+ $this->registerTestResult($test, $t, BaseTestRunner::STATUS_RISKY, $time, false);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function addSkippedTest(Test $test, Throwable $t, float $time): void
+ {
+ $this->registerTestResult($test, $t, BaseTestRunner::STATUS_SKIPPED, $time, false);
+ }
+
+ public function writeProgress(string $progress): void
+ {
+ $this->flushOutputBuffer();
+ }
+
+ public function flush(): void
+ {
+ $this->flushOutputBuffer(true);
+ }
+
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ protected function registerTestResult(Test $test, ?Throwable $t, int $status, float $time, bool $verbose): void
+ {
+ $testName = $test instanceof Reorderable ? $test->sortId() : $test->getName();
+
+ $result = [
+ 'className' => $this->formatClassName($test),
+ 'testName' => $testName,
+ 'testMethod' => $this->formatTestName($test),
+ 'message' => '',
+ 'status' => $status,
+ 'time' => $time,
+ 'verbose' => $verbose,
+ ];
+
+ if ($t !== null) {
+ $result['message'] = $this->formatTestResultMessage($t, $result);
+ }
+
+ $this->testResults[$this->testIndex] = $result;
+ $this->testNameResultIndex[$testName] = $this->testIndex;
+ }
+
+ protected function formatTestName(Test $test): string
+ {
+ return method_exists($test, 'getName') ? $test->getName() : '';
+ }
+
+ protected function formatClassName(Test $test): string
+ {
+ return get_class($test);
+ }
+
+ protected function testHasPassed(): bool
+ {
+ if (!isset($this->testResults[$this->testIndex]['status'])) {
+ return true;
+ }
+
+ if ($this->testResults[$this->testIndex]['status'] === BaseTestRunner::STATUS_PASSED) {
+ return true;
+ }
+
+ return false;
+ }
+
+ protected function flushOutputBuffer(bool $forceFlush = false): void
+ {
+ if ($this->testFlushIndex === $this->testIndex) {
+ return;
+ }
+
+ if ($this->testFlushIndex > 0) {
+ if ($this->enableOutputBuffer &&
+ isset($this->originalExecutionOrder[$this->testFlushIndex - 1])) {
+ $prevResult = $this->getTestResultByName($this->originalExecutionOrder[$this->testFlushIndex - 1]);
+ } else {
+ $prevResult = $this->testResults[$this->testFlushIndex - 1];
+ }
+ } else {
+ $prevResult = $this->getEmptyTestResult();
+ }
+
+ if (!$this->enableOutputBuffer) {
+ $this->writeTestResult($prevResult, $this->testResults[$this->testFlushIndex++]);
+ } else {
+ do {
+ $flushed = false;
+
+ if (!$forceFlush && isset($this->originalExecutionOrder[$this->testFlushIndex])) {
+ $result = $this->getTestResultByName($this->originalExecutionOrder[$this->testFlushIndex]);
+ } else {
+ // This test(name) cannot found in original execution order,
+ // flush result to output stream right away
+ $result = $this->testResults[$this->testFlushIndex];
+ }
+
+ if (!empty($result)) {
+ $this->hideSpinner();
+ $this->writeTestResult($prevResult, $result);
+ $this->testFlushIndex++;
+ $prevResult = $result;
+ $flushed = true;
+ } else {
+ $this->showSpinner();
+ }
+ } while ($flushed && $this->testFlushIndex < $this->testIndex);
+ }
+ }
+
+ protected function showSpinner(): void
+ {
+ if (!$this->showProgress) {
+ return;
+ }
+
+ if ($this->spinState) {
+ $this->undrawSpinner();
+ }
+
+ $this->spinState++;
+ $this->drawSpinner();
+ }
+
+ protected function hideSpinner(): void
+ {
+ if (!$this->showProgress) {
+ return;
+ }
+
+ if ($this->spinState) {
+ $this->undrawSpinner();
+ }
+
+ $this->spinState = 0;
+ }
+
+ protected function drawSpinner(): void
+ {
+ // optional for CLI printers: show the user a 'buffering output' spinner
+ }
+
+ protected function undrawSpinner(): void
+ {
+ // remove the spinner from the current line
+ }
+
+ protected function writeTestResult(array $prevResult, array $result): void
+ {
+ }
+
+ protected function getEmptyTestResult(): array
+ {
+ return [
+ 'className' => '',
+ 'testName' => '',
+ 'message' => '',
+ 'failed' => '',
+ 'verbose' => '',
+ ];
+ }
+
+ protected function getTestResultByName(?string $testName): array
+ {
+ if (isset($this->testNameResultIndex[$testName])) {
+ return $this->testResults[$this->testNameResultIndex[$testName]];
+ }
+
+ return [];
+ }
+
+ protected function formatThrowable(Throwable $t, ?int $status = null): string
+ {
+ $message = trim(\PHPUnit\Framework\TestFailure::exceptionToString($t));
+
+ if ($message) {
+ $message .= PHP_EOL . PHP_EOL . $this->formatStacktrace($t);
+ } else {
+ $message = $this->formatStacktrace($t);
+ }
+
+ return $message;
+ }
+
+ protected function formatStacktrace(Throwable $t): string
+ {
+ return \PHPUnit\Util\Filter::getFilteredStacktrace($t);
+ }
+
+ protected function formatTestResultMessage(Throwable $t, array $result, string $prefix = '│'): string
+ {
+ $message = $this->formatThrowable($t, $result['status']);
+
+ if ($message === '') {
+ return '';
+ }
+
+ if (!($this->verbose || $result['verbose'])) {
+ return '';
+ }
+
+ return $this->prefixLines($prefix, $message);
+ }
+
+ protected function prefixLines(string $prefix, string $message): string
+ {
+ $message = trim($message);
+
+ return implode(
+ PHP_EOL,
+ array_map(
+ static function (string $text) use ($prefix)
+ {
+ return ' ' . $prefix . ($text ? ' ' . $text : '');
+ },
+ preg_split('/\r\n|\r|\n/', $message)
+ )
+ );
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php
new file mode 100644
index 000000000..8a1893e55
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/TestDox/TextResultPrinter.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\TestDox;
+
+use PHPUnit\Framework\TestResult;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TextResultPrinter extends ResultPrinter
+{
+ public function printResult(TestResult $result): void
+ {
+ }
+
+ /**
+ * Handler for 'start class' event.
+ */
+ protected function startClass(string $name): void
+ {
+ $this->write($this->currentTestClassPrettified . "\n");
+ }
+
+ /**
+ * Handler for 'on test' event.
+ */
+ protected function onTest(string $name, bool $success = true): void
+ {
+ if ($success) {
+ $this->write(' [x] ');
+ } else {
+ $this->write(' [ ] ');
+ }
+
+ $this->write($name . "\n");
+ }
+
+ /**
+ * Handler for 'end class' event.
+ */
+ protected function endClass(string $name): void
+ {
+ $this->write("\n");
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php b/vendor/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php
new file mode 100644
index 000000000..911604e06
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/TestDox/XmlResultPrinter.php
@@ -0,0 +1,261 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\TestDox;
+
+use function array_filter;
+use function get_class;
+use function implode;
+use function strpos;
+use DOMDocument;
+use DOMElement;
+use PHPUnit\Framework\AssertionFailedError;
+use PHPUnit\Framework\Exception;
+use PHPUnit\Framework\Test;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestListener;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Framework\Warning;
+use PHPUnit\Framework\WarningTestCase;
+use PHPUnit\Util\Printer;
+use PHPUnit\Util\Test as TestUtil;
+use ReflectionClass;
+use ReflectionException;
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class XmlResultPrinter extends Printer implements TestListener
+{
+ /**
+ * @var DOMDocument
+ */
+ private $document;
+
+ /**
+ * @var DOMElement
+ */
+ private $root;
+
+ /**
+ * @var NamePrettifier
+ */
+ private $prettifier;
+
+ /**
+ * @var null|Throwable
+ */
+ private $exception;
+
+ /**
+ * @param resource|string $out
+ *
+ * @throws Exception
+ */
+ public function __construct($out = null)
+ {
+ $this->document = new DOMDocument('1.0', 'UTF-8');
+ $this->document->formatOutput = true;
+
+ $this->root = $this->document->createElement('tests');
+ $this->document->appendChild($this->root);
+
+ $this->prettifier = new NamePrettifier;
+
+ parent::__construct($out);
+ }
+
+ /**
+ * Flush buffer and close output.
+ */
+ public function flush(): void
+ {
+ $this->write($this->document->saveXML());
+
+ parent::flush();
+ }
+
+ /**
+ * An error occurred.
+ */
+ public function addError(Test $test, Throwable $t, float $time): void
+ {
+ $this->exception = $t;
+ }
+
+ /**
+ * A warning occurred.
+ */
+ public function addWarning(Test $test, Warning $e, float $time): void
+ {
+ }
+
+ /**
+ * A failure occurred.
+ */
+ public function addFailure(Test $test, AssertionFailedError $e, float $time): void
+ {
+ $this->exception = $e;
+ }
+
+ /**
+ * Incomplete test.
+ */
+ public function addIncompleteTest(Test $test, Throwable $t, float $time): void
+ {
+ }
+
+ /**
+ * Risky test.
+ */
+ public function addRiskyTest(Test $test, Throwable $t, float $time): void
+ {
+ }
+
+ /**
+ * Skipped test.
+ */
+ public function addSkippedTest(Test $test, Throwable $t, float $time): void
+ {
+ }
+
+ /**
+ * A test suite started.
+ */
+ public function startTestSuite(TestSuite $suite): void
+ {
+ }
+
+ /**
+ * A test suite ended.
+ */
+ public function endTestSuite(TestSuite $suite): void
+ {
+ }
+
+ /**
+ * A test started.
+ */
+ public function startTest(Test $test): void
+ {
+ $this->exception = null;
+ }
+
+ /**
+ * A test ended.
+ *
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function endTest(Test $test, float $time): void
+ {
+ if (!$test instanceof TestCase || $test instanceof WarningTestCase) {
+ return;
+ }
+
+ $groups = array_filter(
+ $test->getGroups(),
+ static function ($group)
+ {
+ return !($group === 'small' || $group === 'medium' || $group === 'large' || strpos($group, '__phpunit_') === 0);
+ }
+ );
+
+ $testNode = $this->document->createElement('test');
+
+ $testNode->setAttribute('className', get_class($test));
+ $testNode->setAttribute('methodName', $test->getName());
+ $testNode->setAttribute('prettifiedClassName', $this->prettifier->prettifyTestClass(get_class($test)));
+ $testNode->setAttribute('prettifiedMethodName', $this->prettifier->prettifyTestCase($test));
+ $testNode->setAttribute('status', (string) $test->getStatus());
+ $testNode->setAttribute('time', (string) $time);
+ $testNode->setAttribute('size', (string) $test->getSize());
+ $testNode->setAttribute('groups', implode(',', $groups));
+
+ foreach ($groups as $group) {
+ $groupNode = $this->document->createElement('group');
+
+ $groupNode->setAttribute('name', $group);
+
+ $testNode->appendChild($groupNode);
+ }
+
+ $annotations = TestUtil::parseTestMethodAnnotations(
+ get_class($test),
+ $test->getName(false)
+ );
+
+ foreach (['class', 'method'] as $type) {
+ foreach ($annotations[$type] as $annotation => $values) {
+ if ($annotation !== 'covers' && $annotation !== 'uses') {
+ continue;
+ }
+
+ foreach ($values as $value) {
+ $coversNode = $this->document->createElement($annotation);
+
+ $coversNode->setAttribute('target', $value);
+
+ $testNode->appendChild($coversNode);
+ }
+ }
+ }
+
+ foreach ($test->doubledTypes() as $doubledType) {
+ $testDoubleNode = $this->document->createElement('testDouble');
+
+ $testDoubleNode->setAttribute('type', $doubledType);
+
+ $testNode->appendChild($testDoubleNode);
+ }
+
+ $inlineAnnotations = \PHPUnit\Util\Test::getInlineAnnotations(get_class($test), $test->getName(false));
+
+ if (isset($inlineAnnotations['given'], $inlineAnnotations['when'], $inlineAnnotations['then'])) {
+ $testNode->setAttribute('given', $inlineAnnotations['given']['value']);
+ $testNode->setAttribute('givenStartLine', (string) $inlineAnnotations['given']['line']);
+ $testNode->setAttribute('when', $inlineAnnotations['when']['value']);
+ $testNode->setAttribute('whenStartLine', (string) $inlineAnnotations['when']['line']);
+ $testNode->setAttribute('then', $inlineAnnotations['then']['value']);
+ $testNode->setAttribute('thenStartLine', (string) $inlineAnnotations['then']['line']);
+ }
+
+ if ($this->exception !== null) {
+ if ($this->exception instanceof Exception) {
+ $steps = $this->exception->getSerializableTrace();
+ } else {
+ $steps = $this->exception->getTrace();
+ }
+
+ try {
+ $file = (new ReflectionClass($test))->getFileName();
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ foreach ($steps as $step) {
+ if (isset($step['file']) && $step['file'] === $file) {
+ $testNode->setAttribute('exceptionLine', (string) $step['line']);
+
+ break;
+ }
+ }
+
+ $testNode->setAttribute('exceptionMessage', $this->exception->getMessage());
+ }
+
+ $this->root->appendChild($testNode);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/TextTestListRenderer.php b/vendor/phpunit/phpunit/src/Util/TextTestListRenderer.php
new file mode 100644
index 000000000..67168a67f
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/TextTestListRenderer.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const PHP_EOL;
+use function get_class;
+use function sprintf;
+use function str_replace;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Runner\PhptTestCase;
+use RecursiveIteratorIterator;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class TextTestListRenderer
+{
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function render(TestSuite $suite): string
+ {
+ $buffer = 'Available test(s):' . PHP_EOL;
+
+ foreach (new RecursiveIteratorIterator($suite->getIterator()) as $test) {
+ if ($test instanceof TestCase) {
+ $name = sprintf(
+ '%s::%s',
+ get_class($test),
+ str_replace(' with data set ', '', $test->getName())
+ );
+ } elseif ($test instanceof PhptTestCase) {
+ $name = $test->getName();
+ } else {
+ continue;
+ }
+
+ $buffer .= sprintf(
+ ' - %s' . PHP_EOL,
+ $name
+ );
+ }
+
+ return $buffer;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Type.php b/vendor/phpunit/phpunit/src/Util/Type.php
new file mode 100644
index 000000000..01a6b1931
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Type.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use Throwable;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Type
+{
+ public static function isType(string $type): bool
+ {
+ switch ($type) {
+ case 'numeric':
+ case 'integer':
+ case 'int':
+ case 'iterable':
+ case 'float':
+ case 'string':
+ case 'boolean':
+ case 'bool':
+ case 'null':
+ case 'array':
+ case 'object':
+ case 'resource':
+ case 'scalar':
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ public static function isCloneable(object $object): bool
+ {
+ try {
+ $clone = clone $object;
+ } catch (Throwable $t) {
+ return false;
+ }
+
+ return $clone instanceof $object;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/VersionComparisonOperator.php b/vendor/phpunit/phpunit/src/Util/VersionComparisonOperator.php
new file mode 100644
index 000000000..175ecd2d1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/VersionComparisonOperator.php
@@ -0,0 +1,57 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use function in_array;
+use function sprintf;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ * @psalm-immutable
+ */
+final class VersionComparisonOperator
+{
+ /**
+ * @psalm-var '<'|'lt'|'<='|'le'|'>'|'gt'|'>='|'ge'|'=='|'='|'eq'|'!='|'<>'|'ne'
+ */
+ private $operator;
+
+ public function __construct(string $operator)
+ {
+ $this->ensureOperatorIsValid($operator);
+
+ $this->operator = $operator;
+ }
+
+ /**
+ * @return '!='|'<'|'<='|'<>'|'='|'=='|'>'|'>='|'eq'|'ge'|'gt'|'le'|'lt'|'ne'
+ */
+ public function asString(): string
+ {
+ return $this->operator;
+ }
+
+ /**
+ * @throws Exception
+ *
+ * @psalm-assert '<'|'lt'|'<='|'le'|'>'|'gt'|'>='|'ge'|'=='|'='|'eq'|'!='|'<>'|'ne' $operator
+ */
+ private function ensureOperatorIsValid(string $operator): void
+ {
+ if (!in_array($operator, ['<', 'lt', '<=', 'le', '>', 'gt', '>=', 'ge', '==', '=', 'eq', '!=', '<>', 'ne'], true)) {
+ throw new Exception(
+ sprintf(
+ '"%s" is not a valid version_compare() operator',
+ $operator
+ )
+ );
+ }
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php b/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php
new file mode 100644
index 000000000..8b10d4152
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/XdebugFilterScriptGenerator.php
@@ -0,0 +1,81 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const DIRECTORY_SEPARATOR;
+use function addslashes;
+use function array_map;
+use function implode;
+use function is_string;
+use function realpath;
+use function sprintf;
+use PHPUnit\TextUI\XmlConfiguration\CodeCoverage\CodeCoverage as FilterConfiguration;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ *
+ * @deprecated
+ */
+final class XdebugFilterScriptGenerator
+{
+ public function generate(FilterConfiguration $filter): string
+ {
+ $files = array_map(
+ static function ($item)
+ {
+ return sprintf(
+ " '%s'",
+ $item
+ );
+ },
+ $this->getItems($filter)
+ );
+
+ $files = implode(",\n", $files);
+
+ return <<<EOF
+<?php declare(strict_types=1);
+if (!\\function_exists('xdebug_set_filter')) {
+ return;
+}
+
+\\xdebug_set_filter(
+ \\XDEBUG_FILTER_CODE_COVERAGE,
+ \\XDEBUG_PATH_WHITELIST,
+ [
+{$files}
+ ]
+);
+
+EOF;
+ }
+
+ private function getItems(FilterConfiguration $filter): array
+ {
+ $files = [];
+
+ foreach ($filter->directories() as $directory) {
+ $path = realpath($directory->path());
+
+ if (is_string($path)) {
+ $files[] = sprintf(
+ addslashes('%s' . DIRECTORY_SEPARATOR),
+ $path
+ );
+ }
+ }
+
+ foreach ($filter->files() as $file) {
+ $files[] = $file->path();
+ }
+
+ return $files;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml.php b/vendor/phpunit/phpunit/src/Util/Xml.php
new file mode 100644
index 000000000..0939e6c5b
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml.php
@@ -0,0 +1,193 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use const ENT_QUOTES;
+use function assert;
+use function class_exists;
+use function htmlspecialchars;
+use function mb_convert_encoding;
+use function ord;
+use function preg_replace;
+use function settype;
+use function strlen;
+use DOMCharacterData;
+use DOMDocument;
+use DOMElement;
+use DOMNode;
+use DOMText;
+use ReflectionClass;
+use ReflectionException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Xml
+{
+ /**
+ * @deprecated Only used by assertEqualXMLStructure()
+ */
+ public static function import(DOMElement $element): DOMElement
+ {
+ return (new DOMDocument)->importNode($element, true);
+ }
+
+ /**
+ * @deprecated Only used by assertEqualXMLStructure()
+ */
+ public static function removeCharacterDataNodes(DOMNode $node): void
+ {
+ if ($node->hasChildNodes()) {
+ for ($i = $node->childNodes->length - 1; $i >= 0; $i--) {
+ if (($child = $node->childNodes->item($i)) instanceof DOMCharacterData) {
+ $node->removeChild($child);
+ }
+ }
+ }
+ }
+
+ /**
+ * Escapes a string for the use in XML documents.
+ *
+ * Any Unicode character is allowed, excluding the surrogate blocks, FFFE,
+ * and FFFF (not even as character reference).
+ *
+ * @see https://www.w3.org/TR/xml/#charsets
+ */
+ public static function prepareString(string $string): string
+ {
+ return preg_replace(
+ '/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/',
+ '',
+ htmlspecialchars(
+ self::convertToUtf8($string),
+ ENT_QUOTES
+ )
+ );
+ }
+
+ /**
+ * "Convert" a DOMElement object into a PHP variable.
+ */
+ public static function xmlToVariable(DOMElement $element)
+ {
+ $variable = null;
+
+ switch ($element->tagName) {
+ case 'array':
+ $variable = [];
+
+ foreach ($element->childNodes as $entry) {
+ if (!$entry instanceof DOMElement || $entry->tagName !== 'element') {
+ continue;
+ }
+ $item = $entry->childNodes->item(0);
+
+ if ($item instanceof DOMText) {
+ $item = $entry->childNodes->item(1);
+ }
+
+ $value = self::xmlToVariable($item);
+
+ if ($entry->hasAttribute('key')) {
+ $variable[(string) $entry->getAttribute('key')] = $value;
+ } else {
+ $variable[] = $value;
+ }
+ }
+
+ break;
+
+ case 'object':
+ $className = $element->getAttribute('class');
+
+ if ($element->hasChildNodes()) {
+ $arguments = $element->childNodes->item(0)->childNodes;
+ $constructorArgs = [];
+
+ foreach ($arguments as $argument) {
+ if ($argument instanceof DOMElement) {
+ $constructorArgs[] = self::xmlToVariable($argument);
+ }
+ }
+
+ try {
+ assert(class_exists($className));
+
+ $variable = (new ReflectionClass($className))->newInstanceArgs($constructorArgs);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new Exception(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ } else {
+ $variable = new $className;
+ }
+
+ break;
+
+ case 'boolean':
+ $variable = $element->textContent === 'true';
+
+ break;
+
+ case 'integer':
+ case 'double':
+ case 'string':
+ $variable = $element->textContent;
+
+ settype($variable, $element->tagName);
+
+ break;
+ }
+
+ return $variable;
+ }
+
+ private static function convertToUtf8(string $string): string
+ {
+ if (!self::isUtf8($string)) {
+ $string = mb_convert_encoding($string, 'UTF-8');
+ }
+
+ return $string;
+ }
+
+ private static function isUtf8(string $string): bool
+ {
+ $length = strlen($string);
+
+ for ($i = 0; $i < $length; $i++) {
+ if (ord($string[$i]) < 0x80) {
+ $n = 0;
+ } elseif ((ord($string[$i]) & 0xE0) === 0xC0) {
+ $n = 1;
+ } elseif ((ord($string[$i]) & 0xF0) === 0xE0) {
+ $n = 2;
+ } elseif ((ord($string[$i]) & 0xF0) === 0xF0) {
+ $n = 3;
+ } else {
+ return false;
+ }
+
+ for ($j = 0; $j < $n; $j++) {
+ if ((++$i === $length) || ((ord($string[$i]) & 0xC0) !== 0x80)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml/Exception.php b/vendor/phpunit/phpunit/src/Util/Xml/Exception.php
new file mode 100644
index 000000000..09b73d8fa
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml/Exception.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Xml;
+
+use RuntimeException;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Exception extends RuntimeException implements \PHPUnit\Exception
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php b/vendor/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php
new file mode 100644
index 000000000..0949f5684
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml/FailedSchemaDetectionResult.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Xml;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ *
+ * @psalm-immutable
+ */
+final class FailedSchemaDetectionResult extends SchemaDetectionResult
+{
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml/Loader.php b/vendor/phpunit/phpunit/src/Util/Xml/Loader.php
new file mode 100644
index 000000000..8d43d3278
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml/Loader.php
@@ -0,0 +1,117 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Xml;
+
+use function chdir;
+use function dirname;
+use function error_reporting;
+use function file_get_contents;
+use function getcwd;
+use function libxml_get_errors;
+use function libxml_use_internal_errors;
+use function sprintf;
+use DOMDocument;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Loader
+{
+ /**
+ * @throws Exception
+ */
+ public function loadFile(string $filename, bool $isHtml = false, bool $xinclude = false, bool $strict = false): DOMDocument
+ {
+ $reporting = error_reporting(0);
+ $contents = file_get_contents($filename);
+
+ error_reporting($reporting);
+
+ if ($contents === false) {
+ throw new Exception(
+ sprintf(
+ 'Could not read "%s".',
+ $filename
+ )
+ );
+ }
+
+ return $this->load($contents, $isHtml, $filename, $xinclude, $strict);
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function load(string $actual, bool $isHtml = false, string $filename = '', bool $xinclude = false, bool $strict = false): DOMDocument
+ {
+ if ($actual === '') {
+ throw new Exception('Could not load XML from empty string');
+ }
+
+ // Required for XInclude on Windows.
+ if ($xinclude) {
+ $cwd = getcwd();
+ @chdir(dirname($filename));
+ }
+
+ $document = new DOMDocument;
+ $document->preserveWhiteSpace = false;
+
+ $internal = libxml_use_internal_errors(true);
+ $message = '';
+ $reporting = error_reporting(0);
+
+ if ($filename !== '') {
+ // Required for XInclude
+ $document->documentURI = $filename;
+ }
+
+ if ($isHtml) {
+ $loaded = $document->loadHTML($actual);
+ } else {
+ $loaded = $document->loadXML($actual);
+ }
+
+ if (!$isHtml && $xinclude) {
+ $document->xinclude();
+ }
+
+ foreach (libxml_get_errors() as $error) {
+ $message .= "\n" . $error->message;
+ }
+
+ libxml_use_internal_errors($internal);
+ error_reporting($reporting);
+
+ if (isset($cwd)) {
+ @chdir($cwd);
+ }
+
+ if ($loaded === false || ($strict && $message !== '')) {
+ if ($filename !== '') {
+ throw new Exception(
+ sprintf(
+ 'Could not load "%s".%s',
+ $filename,
+ $message !== '' ? "\n" . $message : ''
+ )
+ );
+ }
+
+ if ($message === '') {
+ $message = 'Could not load XML for unknown reason';
+ }
+
+ throw new Exception($message);
+ }
+
+ return $document;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php b/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php
new file mode 100644
index 000000000..442aae49c
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetectionResult.php
@@ -0,0 +1,31 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Xml;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ *
+ * @psalm-immutable
+ */
+abstract class SchemaDetectionResult
+{
+ public function detected(): bool
+ {
+ return false;
+ }
+
+ /**
+ * @throws Exception
+ */
+ public function version(): string
+ {
+ throw new Exception('No supported schema was detected');
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetector.php b/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetector.php
new file mode 100644
index 000000000..5864695b4
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml/SchemaDetector.php
@@ -0,0 +1,39 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Xml;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class SchemaDetector
+{
+ /**
+ * @throws Exception
+ */
+ public function detect(string $filename): SchemaDetectionResult
+ {
+ $document = (new Loader)->loadFile(
+ $filename,
+ false,
+ true,
+ true
+ );
+
+ foreach (['9.2', '8.5'] as $candidate) {
+ $schema = (new SchemaFinder)->find($candidate);
+
+ if (!(new Validator)->validate($document, $schema)->hasValidationErrors()) {
+ return new SuccessfulSchemaDetectionResult($candidate);
+ }
+ }
+
+ return new FailedSchemaDetectionResult;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml/SchemaFinder.php b/vendor/phpunit/phpunit/src/Util/Xml/SchemaFinder.php
new file mode 100644
index 000000000..1e7b73c59
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml/SchemaFinder.php
@@ -0,0 +1,53 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Xml;
+
+use function defined;
+use function is_file;
+use function sprintf;
+use PHPUnit\Runner\Version;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class SchemaFinder
+{
+ /**
+ * @throws Exception
+ */
+ public function find(string $version): string
+ {
+ if ($version === Version::series()) {
+ $filename = $this->path() . 'phpunit.xsd';
+ } else {
+ $filename = $this->path() . 'schema/' . $version . '.xsd';
+ }
+
+ if (!is_file($filename)) {
+ throw new Exception(
+ sprintf(
+ 'Schema for PHPUnit %s is not available',
+ $version
+ )
+ );
+ }
+
+ return $filename;
+ }
+
+ private function path(): string
+ {
+ if (defined('__PHPUNIT_PHAR_ROOT__')) {
+ return __PHPUNIT_PHAR_ROOT__ . '/';
+ }
+
+ return __DIR__ . '/../../../';
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php b/vendor/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php
new file mode 100644
index 000000000..fdc95abb8
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml/SnapshotNodeList.php
@@ -0,0 +1,48 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Xml;
+
+use ArrayIterator;
+use Countable;
+use DOMNode;
+use DOMNodeList;
+use IteratorAggregate;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class SnapshotNodeList implements Countable, IteratorAggregate
+{
+ /**
+ * @var DOMNode[]
+ */
+ private $nodes = [];
+
+ public static function fromNodeList(DOMNodeList $list): self
+ {
+ $snapshot = new self;
+
+ foreach ($list as $node) {
+ $snapshot->nodes[] = $node;
+ }
+
+ return $snapshot;
+ }
+
+ public function count(): int
+ {
+ return count($this->nodes);
+ }
+
+ public function getIterator(): ArrayIterator
+ {
+ return new ArrayIterator($this->nodes);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php b/vendor/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php
new file mode 100644
index 000000000..8b517e29a
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml/SuccessfulSchemaDetectionResult.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Xml;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ *
+ * @psalm-immutable
+ */
+final class SuccessfulSchemaDetectionResult extends SchemaDetectionResult
+{
+ /**
+ * @var string
+ */
+ private $version;
+
+ public function __construct(string $version)
+ {
+ $this->version = $version;
+ }
+
+ public function detected(): bool
+ {
+ return true;
+ }
+
+ public function version(): string
+ {
+ return $this->version;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml/ValidationResult.php b/vendor/phpunit/phpunit/src/Util/Xml/ValidationResult.php
new file mode 100644
index 000000000..3292267bd
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml/ValidationResult.php
@@ -0,0 +1,69 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Xml;
+
+use function sprintf;
+use function trim;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ *
+ * @psalm-immutable
+ */
+final class ValidationResult
+{
+ /**
+ * @psalm-var array<int,list<string>>
+ */
+ private $validationErrors = [];
+
+ /**
+ * @psalm-param array<int,\LibXMLError> $errors
+ */
+ public static function fromArray(array $errors): self
+ {
+ $validationErrors = [];
+
+ foreach ($errors as $error) {
+ if (!isset($validationErrors[$error->line])) {
+ $validationErrors[$error->line] = [];
+ }
+
+ $validationErrors[$error->line][] = trim($error->message);
+ }
+
+ return new self($validationErrors);
+ }
+
+ private function __construct(array $validationErrors)
+ {
+ $this->validationErrors = $validationErrors;
+ }
+
+ public function hasValidationErrors(): bool
+ {
+ return !empty($this->validationErrors);
+ }
+
+ public function asString(): string
+ {
+ $buffer = '';
+
+ foreach ($this->validationErrors as $line => $validationErrorsOnLine) {
+ $buffer .= sprintf(PHP_EOL . ' Line %d:' . PHP_EOL, $line);
+
+ foreach ($validationErrorsOnLine as $validationError) {
+ $buffer .= sprintf(' - %s' . PHP_EOL, $validationError);
+ }
+ }
+
+ return $buffer;
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/Xml/Validator.php b/vendor/phpunit/phpunit/src/Util/Xml/Validator.php
new file mode 100644
index 000000000..b3c4e05b1
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/Xml/Validator.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util\Xml;
+
+use function file_get_contents;
+use function libxml_clear_errors;
+use function libxml_get_errors;
+use function libxml_use_internal_errors;
+use DOMDocument;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class Validator
+{
+ public function validate(DOMDocument $document, string $xsdFilename): ValidationResult
+ {
+ $originalErrorHandling = libxml_use_internal_errors(true);
+
+ $document->schemaValidateSource(file_get_contents($xsdFilename));
+
+ $errors = libxml_get_errors();
+ libxml_clear_errors();
+ libxml_use_internal_errors($originalErrorHandling);
+
+ return ValidationResult::fromArray($errors);
+ }
+}
diff --git a/vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php b/vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php
new file mode 100644
index 000000000..d92e1fe26
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Util/XmlTestListRenderer.php
@@ -0,0 +1,90 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Util;
+
+use function get_class;
+use function implode;
+use function str_replace;
+use PHPUnit\Framework\TestCase;
+use PHPUnit\Framework\TestSuite;
+use PHPUnit\Runner\PhptTestCase;
+use RecursiveIteratorIterator;
+use XMLWriter;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class XmlTestListRenderer
+{
+ /**
+ * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException
+ */
+ public function render(TestSuite $suite): string
+ {
+ $writer = new XMLWriter;
+
+ $writer->openMemory();
+ $writer->setIndent(true);
+ $writer->startDocument();
+ $writer->startElement('tests');
+
+ $currentTestCase = null;
+
+ foreach (new RecursiveIteratorIterator($suite->getIterator()) as $test) {
+ if ($test instanceof TestCase) {
+ if (get_class($test) !== $currentTestCase) {
+ if ($currentTestCase !== null) {
+ $writer->endElement();
+ }
+
+ $writer->startElement('testCaseClass');
+ $writer->writeAttribute('name', get_class($test));
+
+ $currentTestCase = get_class($test);
+ }
+
+ $writer->startElement('testCaseMethod');
+ $writer->writeAttribute('name', $test->getName(false));
+ $writer->writeAttribute('groups', implode(',', $test->getGroups()));
+
+ if (!empty($test->getDataSetAsString(false))) {
+ $writer->writeAttribute(
+ 'dataSet',
+ str_replace(
+ ' with data set ',
+ '',
+ $test->getDataSetAsString(false)
+ )
+ );
+ }
+
+ $writer->endElement();
+ } elseif ($test instanceof PhptTestCase) {
+ if ($currentTestCase !== null) {
+ $writer->endElement();
+
+ $currentTestCase = null;
+ }
+
+ $writer->startElement('phptFile');
+ $writer->writeAttribute('path', $test->getName());
+ $writer->endElement();
+ }
+ }
+
+ if ($currentTestCase !== null) {
+ $writer->endElement();
+ }
+
+ $writer->endElement();
+
+ return $writer->outputMemory();
+ }
+}
diff --git a/vendor/sebastian/cli-parser/ChangeLog.md b/vendor/sebastian/cli-parser/ChangeLog.md
new file mode 100644
index 000000000..9431ec594
--- /dev/null
+++ b/vendor/sebastian/cli-parser/ChangeLog.md
@@ -0,0 +1,15 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [1.0.1] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [1.0.0] - 2020-08-12
+
+* Initial release
+
+[1.0.0]: https://github.com/sebastianbergmann/cli-parser/compare/bb7bb3297957927962b0a3335befe7b66f7462e9...1.0.0
diff --git a/vendor/sebastian/cli-parser/LICENSE b/vendor/sebastian/cli-parser/LICENSE
new file mode 100644
index 000000000..0e33c0591
--- /dev/null
+++ b/vendor/sebastian/cli-parser/LICENSE
@@ -0,0 +1,33 @@
+sebastian/cli-parser
+
+Copyright (c) 2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/cli-parser/README.md b/vendor/sebastian/cli-parser/README.md
new file mode 100644
index 000000000..39c17a72c
--- /dev/null
+++ b/vendor/sebastian/cli-parser/README.md
@@ -0,0 +1,17 @@
+# sebastian/cli-parser
+
+Library for parsing `$_SERVER['argv']`, extracted from `phpunit/phpunit`.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/cli-parser
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/cli-parser
+```
diff --git a/vendor/sebastian/cli-parser/composer.json b/vendor/sebastian/cli-parser/composer.json
new file mode 100644
index 000000000..34c376f91
--- /dev/null
+++ b/vendor/sebastian/cli-parser/composer.json
@@ -0,0 +1,41 @@
+{
+ "name": "sebastian/cli-parser",
+ "description": "Library for parsing CLI options",
+ "type": "library",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues"
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/cli-parser/infection.json b/vendor/sebastian/cli-parser/infection.json
new file mode 100644
index 000000000..09546514f
--- /dev/null
+++ b/vendor/sebastian/cli-parser/infection.json
@@ -0,0 +1,12 @@
+{
+ "source": {
+ "directories": [
+ "src"
+ ]
+ },
+ "mutators": {
+ "@default": true
+ },
+ "minMsi": 100,
+ "minCoveredMsi": 100
+}
diff --git a/vendor/sebastian/cli-parser/src/Parser.php b/vendor/sebastian/cli-parser/src/Parser.php
new file mode 100644
index 000000000..a4f728bc6
--- /dev/null
+++ b/vendor/sebastian/cli-parser/src/Parser.php
@@ -0,0 +1,204 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/cli-parser.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CliParser;
+
+use function array_map;
+use function array_merge;
+use function array_shift;
+use function array_slice;
+use function assert;
+use function count;
+use function current;
+use function explode;
+use function is_array;
+use function is_int;
+use function is_string;
+use function key;
+use function next;
+use function preg_replace;
+use function reset;
+use function sort;
+use function strlen;
+use function strpos;
+use function strstr;
+use function substr;
+
+final class Parser
+{
+ /**
+ * @psalm-param list<string> $argv
+ * @psalm-param list<string> $longOptions
+ *
+ * @throws AmbiguousOptionException
+ * @throws RequiredOptionArgumentMissingException
+ * @throws OptionDoesNotAllowArgumentException
+ * @throws UnknownOptionException
+ */
+ public function parse(array $argv, string $shortOptions, array $longOptions = null): array
+ {
+ if (empty($argv)) {
+ return [[], []];
+ }
+
+ $options = [];
+ $nonOptions = [];
+
+ if ($longOptions) {
+ sort($longOptions);
+ }
+
+ if (isset($argv[0][0]) && $argv[0][0] !== '-') {
+ array_shift($argv);
+ }
+
+ reset($argv);
+
+ $argv = array_map('trim', $argv);
+
+ while (false !== $arg = current($argv)) {
+ $i = key($argv);
+
+ assert(is_int($i));
+
+ next($argv);
+
+ if ($arg === '') {
+ continue;
+ }
+
+ if ($arg === '--') {
+ $nonOptions = array_merge($nonOptions, array_slice($argv, $i + 1));
+
+ break;
+ }
+
+ if ($arg[0] !== '-' || (strlen($arg) > 1 && $arg[1] === '-' && !$longOptions)) {
+ $nonOptions[] = $arg;
+
+ continue;
+ }
+
+ if (strlen($arg) > 1 && $arg[1] === '-' && is_array($longOptions)) {
+ $this->parseLongOption(
+ substr($arg, 2),
+ $longOptions,
+ $options,
+ $argv
+ );
+ } else {
+ $this->parseShortOption(
+ substr($arg, 1),
+ $shortOptions,
+ $options,
+ $argv
+ );
+ }
+ }
+
+ return [$options, $nonOptions];
+ }
+
+ /**
+ * @throws RequiredOptionArgumentMissingException
+ */
+ private function parseShortOption(string $arg, string $shortOptions, array &$opts, array &$args): void
+ {
+ $argLength = strlen($arg);
+
+ for ($i = 0; $i < $argLength; $i++) {
+ $option = $arg[$i];
+ $optionArgument = null;
+
+ if ($arg[$i] === ':' || ($spec = strstr($shortOptions, $option)) === false) {
+ throw new UnknownOptionException('-' . $option);
+ }
+
+ assert(is_string($spec));
+
+ if (strlen($spec) > 1 && $spec[1] === ':') {
+ if ($i + 1 < $argLength) {
+ $opts[] = [$option, substr($arg, $i + 1)];
+
+ break;
+ }
+
+ if (!(strlen($spec) > 2 && $spec[2] === ':')) {
+ $optionArgument = current($args);
+
+ if (!$optionArgument) {
+ throw new RequiredOptionArgumentMissingException('-' . $option);
+ }
+
+ assert(is_string($optionArgument));
+
+ next($args);
+ }
+ }
+
+ $opts[] = [$option, $optionArgument];
+ }
+ }
+
+ /**
+ * @psalm-param list<string> $longOptions
+ *
+ * @throws AmbiguousOptionException
+ * @throws RequiredOptionArgumentMissingException
+ * @throws OptionDoesNotAllowArgumentException
+ * @throws UnknownOptionException
+ */
+ private function parseLongOption(string $arg, array $longOptions, array &$opts, array &$args): void
+ {
+ $count = count($longOptions);
+ $list = explode('=', $arg);
+ $option = $list[0];
+ $optionArgument = null;
+
+ if (count($list) > 1) {
+ $optionArgument = $list[1];
+ }
+
+ $optionLength = strlen($option);
+
+ foreach ($longOptions as $i => $longOption) {
+ $opt_start = substr($longOption, 0, $optionLength);
+
+ if ($opt_start !== $option) {
+ continue;
+ }
+
+ $opt_rest = substr($longOption, $optionLength);
+
+ if ($opt_rest !== '' && $i + 1 < $count && $option[0] !== '=' && strpos($longOptions[$i + 1], $option) === 0) {
+ throw new AmbiguousOptionException('--' . $option);
+ }
+
+ if (substr($longOption, -1) === '=') {
+ /* @noinspection StrlenInEmptyStringCheckContextInspection */
+ if (substr($longOption, -2) !== '==' && !strlen((string) $optionArgument)) {
+ if (false === $optionArgument = current($args)) {
+ throw new RequiredOptionArgumentMissingException('--' . $option);
+ }
+
+ next($args);
+ }
+ } elseif ($optionArgument) {
+ throw new OptionDoesNotAllowArgumentException('--' . $option);
+ }
+
+ $fullOption = '--' . preg_replace('/={1,2}$/', '', $longOption);
+ $opts[] = [$fullOption, $optionArgument];
+
+ return;
+ }
+
+ throw new UnknownOptionException('--' . $option);
+ }
+}
diff --git a/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php b/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php
new file mode 100644
index 000000000..a99f63697
--- /dev/null
+++ b/vendor/sebastian/cli-parser/src/exceptions/AmbiguousOptionException.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/cli-parser.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CliParser;
+
+use function sprintf;
+use RuntimeException;
+
+final class AmbiguousOptionException extends RuntimeException implements Exception
+{
+ public function __construct(string $option)
+ {
+ parent::__construct(
+ sprintf(
+ 'Option "%s" is ambiguous',
+ $option
+ )
+ );
+ }
+}
diff --git a/vendor/sebastian/cli-parser/src/exceptions/Exception.php b/vendor/sebastian/cli-parser/src/exceptions/Exception.php
new file mode 100644
index 000000000..f35ad2457
--- /dev/null
+++ b/vendor/sebastian/cli-parser/src/exceptions/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/cli-parser.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CliParser;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php b/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php
new file mode 100644
index 000000000..0aad29ac0
--- /dev/null
+++ b/vendor/sebastian/cli-parser/src/exceptions/OptionDoesNotAllowArgumentException.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/cli-parser.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CliParser;
+
+use function sprintf;
+use RuntimeException;
+
+final class OptionDoesNotAllowArgumentException extends RuntimeException implements Exception
+{
+ public function __construct(string $option)
+ {
+ parent::__construct(
+ sprintf(
+ 'Option "%s" does not allow an argument',
+ $option
+ )
+ );
+ }
+}
diff --git a/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php b/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php
new file mode 100644
index 000000000..d2a930b62
--- /dev/null
+++ b/vendor/sebastian/cli-parser/src/exceptions/RequiredOptionArgumentMissingException.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/cli-parser.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CliParser;
+
+use function sprintf;
+use RuntimeException;
+
+final class RequiredOptionArgumentMissingException extends RuntimeException implements Exception
+{
+ public function __construct(string $option)
+ {
+ parent::__construct(
+ sprintf(
+ 'Required argument for option "%s" is missing',
+ $option
+ )
+ );
+ }
+}
diff --git a/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php b/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php
new file mode 100644
index 000000000..e98d9fd02
--- /dev/null
+++ b/vendor/sebastian/cli-parser/src/exceptions/UnknownOptionException.php
@@ -0,0 +1,26 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/cli-parser.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CliParser;
+
+use function sprintf;
+use RuntimeException;
+
+final class UnknownOptionException extends RuntimeException implements Exception
+{
+ public function __construct(string $option)
+ {
+ parent::__construct(
+ sprintf(
+ 'Unknown option "%s"',
+ $option
+ )
+ );
+ }
+}
diff --git a/vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md b/vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md
new file mode 100644
index 000000000..43a5db90d
--- /dev/null
+++ b/vendor/sebastian/code-unit-reverse-lookup/ChangeLog.md
@@ -0,0 +1,38 @@
+# Change Log
+
+All notable changes to `sebastianbergmann/code-unit-reverse-lookup` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [2.0.3] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [2.0.2] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [2.0.1] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## 2.0.0 - 2020-02-07
+
+### Removed
+
+* This component is no longer supported on PHP 5.6, PHP 7.0, PHP 7.1, and PHP 7.2
+
+## 1.0.0 - 2016-02-13
+
+### Added
+
+* Initial release
+
+[2.0.3]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/2.0.2...2.0.3
+[2.0.2]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/2.0.1...2.0.2
+[2.0.1]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/2.0.0...2.0.1
+[2.0.0]: https://github.com/sebastianbergmann/code-unit-reverse-lookup/compare/1.0.0...2.0.0
diff --git a/vendor/sebastian/code-unit-reverse-lookup/LICENSE b/vendor/sebastian/code-unit-reverse-lookup/LICENSE
new file mode 100644
index 000000000..dc4bf7019
--- /dev/null
+++ b/vendor/sebastian/code-unit-reverse-lookup/LICENSE
@@ -0,0 +1,33 @@
+code-unit-reverse-lookup
+
+Copyright (c) 2016-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/code-unit-reverse-lookup/README.md b/vendor/sebastian/code-unit-reverse-lookup/README.md
new file mode 100644
index 000000000..1c0ca235e
--- /dev/null
+++ b/vendor/sebastian/code-unit-reverse-lookup/README.md
@@ -0,0 +1,20 @@
+# sebastian/code-unit-reverse-lookup
+
+[![CI Status](https://github.com/sebastianbergmann/code-unit-reverse-lookup/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/code-unit-reverse-lookup/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/code-unit-reverse-lookup/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/code-unit-reverse-lookup)
+
+Looks up which function or method a line of code belongs to.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/code-unit-reverse-lookup
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/code-unit-reverse-lookup
+```
diff --git a/vendor/sebastian/code-unit-reverse-lookup/composer.json b/vendor/sebastian/code-unit-reverse-lookup/composer.json
new file mode 100644
index 000000000..cff96167a
--- /dev/null
+++ b/vendor/sebastian/code-unit-reverse-lookup/composer.json
@@ -0,0 +1,36 @@
+{
+ "name": "sebastian/code-unit-reverse-lookup",
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "prefer-stable": true,
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php b/vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php
new file mode 100644
index 000000000..35de53981
--- /dev/null
+++ b/vendor/sebastian/code-unit-reverse-lookup/src/Wizard.php
@@ -0,0 +1,125 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit-reverse-lookup.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnitReverseLookup;
+
+use function array_merge;
+use function assert;
+use function get_declared_classes;
+use function get_declared_traits;
+use function get_defined_functions;
+use function is_array;
+use function range;
+use ReflectionClass;
+use ReflectionFunction;
+use ReflectionFunctionAbstract;
+use ReflectionMethod;
+
+/**
+ * @since Class available since Release 1.0.0
+ */
+class Wizard
+{
+ /**
+ * @var array
+ */
+ private $lookupTable = [];
+
+ /**
+ * @var array
+ */
+ private $processedClasses = [];
+
+ /**
+ * @var array
+ */
+ private $processedFunctions = [];
+
+ /**
+ * @param string $filename
+ * @param int $lineNumber
+ *
+ * @return string
+ */
+ public function lookup($filename, $lineNumber)
+ {
+ if (!isset($this->lookupTable[$filename][$lineNumber])) {
+ $this->updateLookupTable();
+ }
+
+ if (isset($this->lookupTable[$filename][$lineNumber])) {
+ return $this->lookupTable[$filename][$lineNumber];
+ }
+
+ return $filename . ':' . $lineNumber;
+ }
+
+ private function updateLookupTable(): void
+ {
+ $this->processClassesAndTraits();
+ $this->processFunctions();
+ }
+
+ private function processClassesAndTraits(): void
+ {
+ $classes = get_declared_classes();
+ $traits = get_declared_traits();
+
+ assert(is_array($classes));
+ assert(is_array($traits));
+
+ foreach (array_merge($classes, $traits) as $classOrTrait) {
+ if (isset($this->processedClasses[$classOrTrait])) {
+ continue;
+ }
+
+ $reflector = new ReflectionClass($classOrTrait);
+
+ foreach ($reflector->getMethods() as $method) {
+ $this->processFunctionOrMethod($method);
+ }
+
+ $this->processedClasses[$classOrTrait] = true;
+ }
+ }
+
+ private function processFunctions(): void
+ {
+ foreach (get_defined_functions()['user'] as $function) {
+ if (isset($this->processedFunctions[$function])) {
+ continue;
+ }
+
+ $this->processFunctionOrMethod(new ReflectionFunction($function));
+
+ $this->processedFunctions[$function] = true;
+ }
+ }
+
+ private function processFunctionOrMethod(ReflectionFunctionAbstract $functionOrMethod): void
+ {
+ if ($functionOrMethod->isInternal()) {
+ return;
+ }
+
+ $name = $functionOrMethod->getName();
+
+ if ($functionOrMethod instanceof ReflectionMethod) {
+ $name = $functionOrMethod->getDeclaringClass()->getName() . '::' . $name;
+ }
+
+ if (!isset($this->lookupTable[$functionOrMethod->getFileName()])) {
+ $this->lookupTable[$functionOrMethod->getFileName()] = [];
+ }
+
+ foreach (range($functionOrMethod->getStartLine(), $functionOrMethod->getEndLine()) as $line) {
+ $this->lookupTable[$functionOrMethod->getFileName()][$line] = $name;
+ }
+ }
+}
diff --git a/vendor/sebastian/code-unit/.psalm/baseline.xml b/vendor/sebastian/code-unit/.psalm/baseline.xml
new file mode 100644
index 000000000..e44889190
--- /dev/null
+++ b/vendor/sebastian/code-unit/.psalm/baseline.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44">
+ <file src="src/Mapper.php">
+ <ArgumentTypeCoercion occurrences="16">
+ <code>$firstPart</code>
+ <code>$firstPart</code>
+ <code>$firstPart</code>
+ <code>$firstPart</code>
+ <code>$firstPart</code>
+ <code>$firstPart</code>
+ <code>$firstPart</code>
+ <code>$firstPart</code>
+ <code>$firstPart</code>
+ <code>$secondPart</code>
+ <code>$unit</code>
+ <code>$unit</code>
+ <code>$unit</code>
+ <code>$unit</code>
+ <code>$unit</code>
+ <code>$unit</code>
+ </ArgumentTypeCoercion>
+ </file>
+</files>
diff --git a/vendor/sebastian/code-unit/.psalm/config.xml b/vendor/sebastian/code-unit/.psalm/config.xml
new file mode 100644
index 000000000..a39e9a4c3
--- /dev/null
+++ b/vendor/sebastian/code-unit/.psalm/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<psalm
+ totallyTyped="true"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ resolveFromConfigFile="false"
+ errorBaseline=".psalm/baseline.xml"
+>
+ <projectFiles>
+ <directory name="src" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+</psalm>
diff --git a/vendor/sebastian/code-unit/ChangeLog.md b/vendor/sebastian/code-unit/ChangeLog.md
new file mode 100644
index 000000000..0978e651e
--- /dev/null
+++ b/vendor/sebastian/code-unit/ChangeLog.md
@@ -0,0 +1,65 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [1.0.8] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\CodeUnit\Exception` now correctly extends `\Throwable`
+
+## [1.0.7] - 2020-10-02
+
+### Fixed
+
+* `SebastianBergmann\CodeUnit\Mapper::stringToCodeUnits()` no longer attempts to create `CodeUnit` objects for code units that are not declared in userland
+
+## [1.0.6] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [1.0.5] - 2020-06-26
+
+### Fixed
+
+* [#3](https://github.com/sebastianbergmann/code-unit/issues/3): Regression in 1.0.4
+
+## [1.0.4] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [1.0.3] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## [1.0.2] - 2020-04-30
+
+### Fixed
+
+* `Mapper::stringToCodeUnits()` raised the wrong exception for `Class::method` when a class named `Class` exists but does not have a method named `method`
+
+## [1.0.1] - 2020-04-27
+
+### Fixed
+
+* [#2](https://github.com/sebastianbergmann/code-unit/issues/2): `Mapper::stringToCodeUnits()` breaks when `ClassName<extended>` is used for class that extends built-in class
+
+## [1.0.0] - 2020-03-30
+
+* Initial release
+
+[1.0.8]: https://github.com/sebastianbergmann/code-unit/compare/1.0.7...1.0.8
+[1.0.7]: https://github.com/sebastianbergmann/code-unit/compare/1.0.6...1.0.7
+[1.0.6]: https://github.com/sebastianbergmann/code-unit/compare/1.0.5...1.0.6
+[1.0.5]: https://github.com/sebastianbergmann/code-unit/compare/1.0.4...1.0.5
+[1.0.4]: https://github.com/sebastianbergmann/code-unit/compare/1.0.3...1.0.4
+[1.0.3]: https://github.com/sebastianbergmann/code-unit/compare/1.0.2...1.0.3
+[1.0.2]: https://github.com/sebastianbergmann/code-unit/compare/1.0.1...1.0.2
+[1.0.1]: https://github.com/sebastianbergmann/code-unit/compare/1.0.0...1.0.1
+[1.0.0]: https://github.com/sebastianbergmann/code-unit/compare/530c3900e5db9bcb8516da545bef0d62536cedaa...1.0.0
diff --git a/vendor/sebastian/code-unit/LICENSE b/vendor/sebastian/code-unit/LICENSE
new file mode 100644
index 000000000..b99bc8ac4
--- /dev/null
+++ b/vendor/sebastian/code-unit/LICENSE
@@ -0,0 +1,33 @@
+sebastian/code-unit
+
+Copyright (c) 2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/code-unit/README.md b/vendor/sebastian/code-unit/README.md
new file mode 100644
index 000000000..d20227a9b
--- /dev/null
+++ b/vendor/sebastian/code-unit/README.md
@@ -0,0 +1,17 @@
+# sebastian/code-unit
+
+Collection of value objects that represent the PHP code units.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/code-unit
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/code-unit
+```
diff --git a/vendor/sebastian/code-unit/composer.json b/vendor/sebastian/code-unit/composer.json
new file mode 100644
index 000000000..5b86ec589
--- /dev/null
+++ b/vendor/sebastian/code-unit/composer.json
@@ -0,0 +1,50 @@
+{
+ "name": "sebastian/code-unit",
+ "description": "Collection of value objects that represent the PHP code units",
+ "type": "library",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues"
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/_fixture"
+ ],
+ "files": [
+ "tests/_fixture/file_with_multiple_code_units.php",
+ "tests/_fixture/function.php"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/ClassMethodUnit.php b/vendor/sebastian/code-unit/src/ClassMethodUnit.php
new file mode 100644
index 000000000..f9ddac29e
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/ClassMethodUnit.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+/**
+ * @psalm-immutable
+ */
+final class ClassMethodUnit extends CodeUnit
+{
+ /**
+ * @psalm-assert-if-true ClassMethodUnit $this
+ */
+ public function isClassMethod(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/ClassUnit.php b/vendor/sebastian/code-unit/src/ClassUnit.php
new file mode 100644
index 000000000..3ba0ee661
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/ClassUnit.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+/**
+ * @psalm-immutable
+ */
+final class ClassUnit extends CodeUnit
+{
+ /**
+ * @psalm-assert-if-true ClassUnit $this
+ */
+ public function isClass(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/CodeUnit.php b/vendor/sebastian/code-unit/src/CodeUnit.php
new file mode 100644
index 000000000..9e5cceb35
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/CodeUnit.php
@@ -0,0 +1,445 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+use function range;
+use function sprintf;
+use ReflectionClass;
+use ReflectionFunction;
+use ReflectionMethod;
+
+/**
+ * @psalm-immutable
+ */
+abstract class CodeUnit
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var string
+ */
+ private $sourceFileName;
+
+ /**
+ * @var array
+ * @psalm-var list<int>
+ */
+ private $sourceLines;
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws InvalidCodeUnitException
+ * @throws ReflectionException
+ */
+ public static function forClass(string $className): ClassUnit
+ {
+ self::ensureUserDefinedClass($className);
+
+ $reflector = self::reflectorForClass($className);
+
+ return new ClassUnit(
+ $className,
+ $reflector->getFileName(),
+ range(
+ $reflector->getStartLine(),
+ $reflector->getEndLine()
+ )
+ );
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws InvalidCodeUnitException
+ * @throws ReflectionException
+ */
+ public static function forClassMethod(string $className, string $methodName): ClassMethodUnit
+ {
+ self::ensureUserDefinedClass($className);
+
+ $reflector = self::reflectorForClassMethod($className, $methodName);
+
+ return new ClassMethodUnit(
+ $className . '::' . $methodName,
+ $reflector->getFileName(),
+ range(
+ $reflector->getStartLine(),
+ $reflector->getEndLine()
+ )
+ );
+ }
+
+ /**
+ * @psalm-param class-string $interfaceName
+ *
+ * @throws InvalidCodeUnitException
+ * @throws ReflectionException
+ */
+ public static function forInterface(string $interfaceName): InterfaceUnit
+ {
+ self::ensureUserDefinedInterface($interfaceName);
+
+ $reflector = self::reflectorForClass($interfaceName);
+
+ return new InterfaceUnit(
+ $interfaceName,
+ $reflector->getFileName(),
+ range(
+ $reflector->getStartLine(),
+ $reflector->getEndLine()
+ )
+ );
+ }
+
+ /**
+ * @psalm-param class-string $interfaceName
+ *
+ * @throws InvalidCodeUnitException
+ * @throws ReflectionException
+ */
+ public static function forInterfaceMethod(string $interfaceName, string $methodName): InterfaceMethodUnit
+ {
+ self::ensureUserDefinedInterface($interfaceName);
+
+ $reflector = self::reflectorForClassMethod($interfaceName, $methodName);
+
+ return new InterfaceMethodUnit(
+ $interfaceName . '::' . $methodName,
+ $reflector->getFileName(),
+ range(
+ $reflector->getStartLine(),
+ $reflector->getEndLine()
+ )
+ );
+ }
+
+ /**
+ * @psalm-param class-string $traitName
+ *
+ * @throws InvalidCodeUnitException
+ * @throws ReflectionException
+ */
+ public static function forTrait(string $traitName): TraitUnit
+ {
+ self::ensureUserDefinedTrait($traitName);
+
+ $reflector = self::reflectorForClass($traitName);
+
+ return new TraitUnit(
+ $traitName,
+ $reflector->getFileName(),
+ range(
+ $reflector->getStartLine(),
+ $reflector->getEndLine()
+ )
+ );
+ }
+
+ /**
+ * @psalm-param class-string $traitName
+ *
+ * @throws InvalidCodeUnitException
+ * @throws ReflectionException
+ */
+ public static function forTraitMethod(string $traitName, string $methodName): TraitMethodUnit
+ {
+ self::ensureUserDefinedTrait($traitName);
+
+ $reflector = self::reflectorForClassMethod($traitName, $methodName);
+
+ return new TraitMethodUnit(
+ $traitName . '::' . $methodName,
+ $reflector->getFileName(),
+ range(
+ $reflector->getStartLine(),
+ $reflector->getEndLine()
+ )
+ );
+ }
+
+ /**
+ * @psalm-param callable-string $functionName
+ *
+ * @throws InvalidCodeUnitException
+ * @throws ReflectionException
+ */
+ public static function forFunction(string $functionName): FunctionUnit
+ {
+ $reflector = self::reflectorForFunction($functionName);
+
+ if (!$reflector->isUserDefined()) {
+ throw new InvalidCodeUnitException(
+ sprintf(
+ '"%s" is not a user-defined function',
+ $functionName
+ )
+ );
+ }
+
+ return new FunctionUnit(
+ $functionName,
+ $reflector->getFileName(),
+ range(
+ $reflector->getStartLine(),
+ $reflector->getEndLine()
+ )
+ );
+ }
+
+ /**
+ * @psalm-param list<int> $sourceLines
+ */
+ private function __construct(string $name, string $sourceFileName, array $sourceLines)
+ {
+ $this->name = $name;
+ $this->sourceFileName = $sourceFileName;
+ $this->sourceLines = $sourceLines;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function sourceFileName(): string
+ {
+ return $this->sourceFileName;
+ }
+
+ /**
+ * @psalm-return list<int>
+ */
+ public function sourceLines(): array
+ {
+ return $this->sourceLines;
+ }
+
+ public function isClass(): bool
+ {
+ return false;
+ }
+
+ public function isClassMethod(): bool
+ {
+ return false;
+ }
+
+ public function isInterface(): bool
+ {
+ return false;
+ }
+
+ public function isInterfaceMethod(): bool
+ {
+ return false;
+ }
+
+ public function isTrait(): bool
+ {
+ return false;
+ }
+
+ public function isTraitMethod(): bool
+ {
+ return false;
+ }
+
+ public function isFunction(): bool
+ {
+ return false;
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws InvalidCodeUnitException
+ */
+ private static function ensureUserDefinedClass(string $className): void
+ {
+ try {
+ $reflector = new ReflectionClass($className);
+
+ if ($reflector->isInterface()) {
+ throw new InvalidCodeUnitException(
+ sprintf(
+ '"%s" is an interface and not a class',
+ $className
+ )
+ );
+ }
+
+ if ($reflector->isTrait()) {
+ throw new InvalidCodeUnitException(
+ sprintf(
+ '"%s" is a trait and not a class',
+ $className
+ )
+ );
+ }
+
+ if (!$reflector->isUserDefined()) {
+ throw new InvalidCodeUnitException(
+ sprintf(
+ '"%s" is not a user-defined class',
+ $className
+ )
+ );
+ }
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @psalm-param class-string $interfaceName
+ *
+ * @throws InvalidCodeUnitException
+ */
+ private static function ensureUserDefinedInterface(string $interfaceName): void
+ {
+ try {
+ $reflector = new ReflectionClass($interfaceName);
+
+ if (!$reflector->isInterface()) {
+ throw new InvalidCodeUnitException(
+ sprintf(
+ '"%s" is not an interface',
+ $interfaceName
+ )
+ );
+ }
+
+ if (!$reflector->isUserDefined()) {
+ throw new InvalidCodeUnitException(
+ sprintf(
+ '"%s" is not a user-defined interface',
+ $interfaceName
+ )
+ );
+ }
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @psalm-param class-string $traitName
+ *
+ * @throws InvalidCodeUnitException
+ */
+ private static function ensureUserDefinedTrait(string $traitName): void
+ {
+ try {
+ $reflector = new ReflectionClass($traitName);
+
+ if (!$reflector->isTrait()) {
+ throw new InvalidCodeUnitException(
+ sprintf(
+ '"%s" is not a trait',
+ $traitName
+ )
+ );
+ }
+
+ // @codeCoverageIgnoreStart
+ if (!$reflector->isUserDefined()) {
+ throw new InvalidCodeUnitException(
+ sprintf(
+ '"%s" is not a user-defined trait',
+ $traitName
+ )
+ );
+ }
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private static function reflectorForClass(string $className): ReflectionClass
+ {
+ try {
+ return new ReflectionClass($className);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private static function reflectorForClassMethod(string $className, string $methodName): ReflectionMethod
+ {
+ try {
+ return new ReflectionMethod($className, $methodName);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @psalm-param callable-string $functionName
+ *
+ * @throws ReflectionException
+ */
+ private static function reflectorForFunction(string $functionName): ReflectionFunction
+ {
+ try {
+ return new ReflectionFunction($functionName);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/CodeUnitCollection.php b/vendor/sebastian/code-unit/src/CodeUnitCollection.php
new file mode 100644
index 000000000..f53db8a12
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/CodeUnitCollection.php
@@ -0,0 +1,84 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+use function array_merge;
+use function count;
+use Countable;
+use IteratorAggregate;
+
+final class CodeUnitCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @psalm-var list<CodeUnit>
+ */
+ private $codeUnits = [];
+
+ /**
+ * @psalm-param list<CodeUnit> $items
+ */
+ public static function fromArray(array $items): self
+ {
+ $collection = new self;
+
+ foreach ($items as $item) {
+ $collection->add($item);
+ }
+
+ return $collection;
+ }
+
+ public static function fromList(CodeUnit ...$items): self
+ {
+ return self::fromArray($items);
+ }
+
+ private function __construct()
+ {
+ }
+
+ /**
+ * @psalm-return list<CodeUnit>
+ */
+ public function asArray(): array
+ {
+ return $this->codeUnits;
+ }
+
+ public function getIterator(): CodeUnitCollectionIterator
+ {
+ return new CodeUnitCollectionIterator($this);
+ }
+
+ public function count(): int
+ {
+ return count($this->codeUnits);
+ }
+
+ public function isEmpty(): bool
+ {
+ return empty($this->codeUnits);
+ }
+
+ public function mergeWith(self $other): self
+ {
+ return self::fromArray(
+ array_merge(
+ $this->asArray(),
+ $other->asArray()
+ )
+ );
+ }
+
+ private function add(CodeUnit $item): void
+ {
+ $this->codeUnits[] = $item;
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php b/vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php
new file mode 100644
index 000000000..bdc86d888
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/CodeUnitCollectionIterator.php
@@ -0,0 +1,55 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+use Iterator;
+
+final class CodeUnitCollectionIterator implements Iterator
+{
+ /**
+ * @psalm-var list<CodeUnit>
+ */
+ private $codeUnits;
+
+ /**
+ * @var int
+ */
+ private $position = 0;
+
+ public function __construct(CodeUnitCollection $collection)
+ {
+ $this->codeUnits = $collection->asArray();
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return isset($this->codeUnits[$this->position]);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): CodeUnit
+ {
+ return $this->codeUnits[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/FunctionUnit.php b/vendor/sebastian/code-unit/src/FunctionUnit.php
new file mode 100644
index 000000000..df76cf195
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/FunctionUnit.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+/**
+ * @psalm-immutable
+ */
+final class FunctionUnit extends CodeUnit
+{
+ /**
+ * @psalm-assert-if-true FunctionUnit $this
+ */
+ public function isFunction(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/InterfaceMethodUnit.php b/vendor/sebastian/code-unit/src/InterfaceMethodUnit.php
new file mode 100644
index 000000000..fcd44f41a
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/InterfaceMethodUnit.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+/**
+ * @psalm-immutable
+ */
+final class InterfaceMethodUnit extends CodeUnit
+{
+ /**
+ * @psalm-assert-if-true InterfaceMethod $this
+ */
+ public function isInterfaceMethod(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/InterfaceUnit.php b/vendor/sebastian/code-unit/src/InterfaceUnit.php
new file mode 100644
index 000000000..5cf585bfd
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/InterfaceUnit.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+/**
+ * @psalm-immutable
+ */
+final class InterfaceUnit extends CodeUnit
+{
+ /**
+ * @psalm-assert-if-true InterfaceUnit $this
+ */
+ public function isInterface(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/Mapper.php b/vendor/sebastian/code-unit/src/Mapper.php
new file mode 100644
index 000000000..a72b3b0dd
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/Mapper.php
@@ -0,0 +1,414 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+use function array_keys;
+use function array_merge;
+use function array_unique;
+use function array_values;
+use function class_exists;
+use function explode;
+use function function_exists;
+use function interface_exists;
+use function ksort;
+use function method_exists;
+use function sort;
+use function sprintf;
+use function str_replace;
+use function strpos;
+use function trait_exists;
+use ReflectionClass;
+use ReflectionFunction;
+use ReflectionMethod;
+
+final class Mapper
+{
+ /**
+ * @psalm-return array<string,list<int>>
+ */
+ public function codeUnitsToSourceLines(CodeUnitCollection $codeUnits): array
+ {
+ $result = [];
+
+ foreach ($codeUnits as $codeUnit) {
+ $sourceFileName = $codeUnit->sourceFileName();
+
+ if (!isset($result[$sourceFileName])) {
+ $result[$sourceFileName] = [];
+ }
+
+ $result[$sourceFileName] = array_merge($result[$sourceFileName], $codeUnit->sourceLines());
+ }
+
+ foreach (array_keys($result) as $sourceFileName) {
+ $result[$sourceFileName] = array_values(array_unique($result[$sourceFileName]));
+
+ sort($result[$sourceFileName]);
+ }
+
+ ksort($result);
+
+ return $result;
+ }
+
+ /**
+ * @throws InvalidCodeUnitException
+ * @throws ReflectionException
+ */
+ public function stringToCodeUnits(string $unit): CodeUnitCollection
+ {
+ if (strpos($unit, '::') !== false) {
+ [$firstPart, $secondPart] = explode('::', $unit);
+
+ if (empty($firstPart) && $this->isUserDefinedFunction($secondPart)) {
+ return CodeUnitCollection::fromList(CodeUnit::forFunction($secondPart));
+ }
+
+ if ($this->isUserDefinedClass($firstPart)) {
+ if ($secondPart === '<public>') {
+ return $this->publicMethodsOfClass($firstPart);
+ }
+
+ if ($secondPart === '<!public>') {
+ return $this->protectedAndPrivateMethodsOfClass($firstPart);
+ }
+
+ if ($secondPart === '<protected>') {
+ return $this->protectedMethodsOfClass($firstPart);
+ }
+
+ if ($secondPart === '<!protected>') {
+ return $this->publicAndPrivateMethodsOfClass($firstPart);
+ }
+
+ if ($secondPart === '<private>') {
+ return $this->privateMethodsOfClass($firstPart);
+ }
+
+ if ($secondPart === '<!private>') {
+ return $this->publicAndProtectedMethodsOfClass($firstPart);
+ }
+
+ if ($this->isUserDefinedMethod($firstPart, $secondPart)) {
+ return CodeUnitCollection::fromList(CodeUnit::forClassMethod($firstPart, $secondPart));
+ }
+ }
+
+ if ($this->isUserDefinedInterface($firstPart)) {
+ return CodeUnitCollection::fromList(CodeUnit::forInterfaceMethod($firstPart, $secondPart));
+ }
+
+ if ($this->isUserDefinedTrait($firstPart)) {
+ return CodeUnitCollection::fromList(CodeUnit::forTraitMethod($firstPart, $secondPart));
+ }
+ } else {
+ if ($this->isUserDefinedClass($unit)) {
+ $units = [CodeUnit::forClass($unit)];
+
+ foreach ($this->reflectorForClass($unit)->getTraits() as $trait) {
+ if (!$trait->isUserDefined()) {
+ // @codeCoverageIgnoreStart
+ continue;
+ // @codeCoverageIgnoreEnd
+ }
+
+ $units[] = CodeUnit::forTrait($trait->getName());
+ }
+
+ return CodeUnitCollection::fromArray($units);
+ }
+
+ if ($this->isUserDefinedInterface($unit)) {
+ return CodeUnitCollection::fromList(CodeUnit::forInterface($unit));
+ }
+
+ if ($this->isUserDefinedTrait($unit)) {
+ return CodeUnitCollection::fromList(CodeUnit::forTrait($unit));
+ }
+
+ if ($this->isUserDefinedFunction($unit)) {
+ return CodeUnitCollection::fromList(CodeUnit::forFunction($unit));
+ }
+
+ $unit = str_replace('<extended>', '', $unit);
+
+ if ($this->isUserDefinedClass($unit)) {
+ return $this->classAndParentClassesAndTraits($unit);
+ }
+ }
+
+ throw new InvalidCodeUnitException(
+ sprintf(
+ '"%s" is not a valid code unit',
+ $unit
+ )
+ );
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private function publicMethodsOfClass(string $className): CodeUnitCollection
+ {
+ return $this->methodsOfClass($className, ReflectionMethod::IS_PUBLIC);
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private function publicAndProtectedMethodsOfClass(string $className): CodeUnitCollection
+ {
+ return $this->methodsOfClass($className, ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED);
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private function publicAndPrivateMethodsOfClass(string $className): CodeUnitCollection
+ {
+ return $this->methodsOfClass($className, ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PRIVATE);
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private function protectedMethodsOfClass(string $className): CodeUnitCollection
+ {
+ return $this->methodsOfClass($className, ReflectionMethod::IS_PROTECTED);
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private function protectedAndPrivateMethodsOfClass(string $className): CodeUnitCollection
+ {
+ return $this->methodsOfClass($className, ReflectionMethod::IS_PROTECTED | ReflectionMethod::IS_PRIVATE);
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private function privateMethodsOfClass(string $className): CodeUnitCollection
+ {
+ return $this->methodsOfClass($className, ReflectionMethod::IS_PRIVATE);
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private function methodsOfClass(string $className, int $filter): CodeUnitCollection
+ {
+ $units = [];
+
+ foreach ($this->reflectorForClass($className)->getMethods($filter) as $method) {
+ if (!$method->isUserDefined()) {
+ continue;
+ }
+
+ $units[] = CodeUnit::forClassMethod($className, $method->getName());
+ }
+
+ return CodeUnitCollection::fromArray($units);
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private function classAndParentClassesAndTraits(string $className): CodeUnitCollection
+ {
+ $units = [CodeUnit::forClass($className)];
+
+ $reflector = $this->reflectorForClass($className);
+
+ foreach ($this->reflectorForClass($className)->getTraits() as $trait) {
+ if (!$trait->isUserDefined()) {
+ // @codeCoverageIgnoreStart
+ continue;
+ // @codeCoverageIgnoreEnd
+ }
+
+ $units[] = CodeUnit::forTrait($trait->getName());
+ }
+
+ while ($reflector = $reflector->getParentClass()) {
+ if (!$reflector->isUserDefined()) {
+ break;
+ }
+
+ $units[] = CodeUnit::forClass($reflector->getName());
+
+ foreach ($reflector->getTraits() as $trait) {
+ if (!$trait->isUserDefined()) {
+ // @codeCoverageIgnoreStart
+ continue;
+ // @codeCoverageIgnoreEnd
+ }
+
+ $units[] = CodeUnit::forTrait($trait->getName());
+ }
+ }
+
+ return CodeUnitCollection::fromArray($units);
+ }
+
+ /**
+ * @psalm-param class-string $className
+ *
+ * @throws ReflectionException
+ */
+ private function reflectorForClass(string $className): ReflectionClass
+ {
+ try {
+ return new ReflectionClass($className);
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @throws ReflectionException
+ */
+ private function isUserDefinedFunction(string $functionName): bool
+ {
+ if (!function_exists($functionName)) {
+ return false;
+ }
+
+ try {
+ return (new ReflectionFunction($functionName))->isUserDefined();
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @throws ReflectionException
+ */
+ private function isUserDefinedClass(string $className): bool
+ {
+ if (!class_exists($className)) {
+ return false;
+ }
+
+ try {
+ return (new ReflectionClass($className))->isUserDefined();
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @throws ReflectionException
+ */
+ private function isUserDefinedInterface(string $interfaceName): bool
+ {
+ if (!interface_exists($interfaceName)) {
+ return false;
+ }
+
+ try {
+ return (new ReflectionClass($interfaceName))->isUserDefined();
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @throws ReflectionException
+ */
+ private function isUserDefinedTrait(string $traitName): bool
+ {
+ if (!trait_exists($traitName)) {
+ return false;
+ }
+
+ try {
+ return (new ReflectionClass($traitName))->isUserDefined();
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @throws ReflectionException
+ */
+ private function isUserDefinedMethod(string $className, string $methodName): bool
+ {
+ if (!class_exists($className)) {
+ // @codeCoverageIgnoreStart
+ return false;
+ // @codeCoverageIgnoreEnd
+ }
+
+ if (!method_exists($className, $methodName)) {
+ // @codeCoverageIgnoreStart
+ return false;
+ // @codeCoverageIgnoreEnd
+ }
+
+ try {
+ return (new ReflectionMethod($className, $methodName))->isUserDefined();
+ // @codeCoverageIgnoreStart
+ } catch (\ReflectionException $e) {
+ throw new ReflectionException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/TraitMethodUnit.php b/vendor/sebastian/code-unit/src/TraitMethodUnit.php
new file mode 100644
index 000000000..a58f7249f
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/TraitMethodUnit.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+/**
+ * @psalm-immutable
+ */
+final class TraitMethodUnit extends CodeUnit
+{
+ /**
+ * @psalm-assert-if-true TraitMethodUnit $this
+ */
+ public function isTraitMethod(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/TraitUnit.php b/vendor/sebastian/code-unit/src/TraitUnit.php
new file mode 100644
index 000000000..abddfc112
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/TraitUnit.php
@@ -0,0 +1,24 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+/**
+ * @psalm-immutable
+ */
+final class TraitUnit extends CodeUnit
+{
+ /**
+ * @psalm-assert-if-true TraitUnit $this
+ */
+ public function isTrait(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/sebastian/code-unit/src/exceptions/Exception.php b/vendor/sebastian/code-unit/src/exceptions/Exception.php
new file mode 100644
index 000000000..74d0eeef8
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/exceptions/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php b/vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php
new file mode 100644
index 000000000..60a3da82b
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/exceptions/InvalidCodeUnitException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+use RuntimeException;
+
+final class InvalidCodeUnitException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/sebastian/code-unit/src/exceptions/NoTraitException.php b/vendor/sebastian/code-unit/src/exceptions/NoTraitException.php
new file mode 100644
index 000000000..e9b9b9c7a
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/exceptions/NoTraitException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+use RuntimeException;
+
+final class NoTraitException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/sebastian/code-unit/src/exceptions/ReflectionException.php b/vendor/sebastian/code-unit/src/exceptions/ReflectionException.php
new file mode 100644
index 000000000..232012783
--- /dev/null
+++ b/vendor/sebastian/code-unit/src/exceptions/ReflectionException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/code-unit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\CodeUnit;
+
+use RuntimeException;
+
+final class ReflectionException extends RuntimeException implements Exception
+{
+}
diff --git a/vendor/sebastian/comparator/ChangeLog.md b/vendor/sebastian/comparator/ChangeLog.md
new file mode 100644
index 000000000..64c0251c1
--- /dev/null
+++ b/vendor/sebastian/comparator/ChangeLog.md
@@ -0,0 +1,108 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [4.0.6] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\Comparator\Exception` now correctly extends `\Throwable`
+
+## [4.0.5] - 2020-09-30
+
+### Fixed
+
+* [#89](https://github.com/sebastianbergmann/comparator/pull/89): Handle PHP 8 `ValueError`
+
+## [4.0.4] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [4.0.3] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [4.0.2] - 2020-06-15
+
+### Fixed
+
+* [#85](https://github.com/sebastianbergmann/comparator/issues/85): Version 4.0.1 breaks backward compatibility
+
+## [4.0.1] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## [4.0.0] - 2020-02-07
+
+### Removed
+
+* Removed support for PHP 7.1 and PHP 7.2
+
+## [3.0.2] - 2018-07-12
+
+### Changed
+
+* By default, `MockObjectComparator` is now tried before all other (default) comparators
+
+## [3.0.1] - 2018-06-14
+
+### Fixed
+
+* [#53](https://github.com/sebastianbergmann/comparator/pull/53): `DOMNodeComparator` ignores `$ignoreCase` parameter
+* [#58](https://github.com/sebastianbergmann/comparator/pull/58): `ScalarComparator` does not handle extremely ugly string comparison edge cases
+
+## [3.0.0] - 2018-04-18
+
+### Fixed
+
+* Fixed [#48](https://github.com/sebastianbergmann/comparator/issues/48): `DateTimeComparator` does not support fractional second deltas
+
+### Removed
+
+* Removed support for PHP 7.0
+
+## [2.1.3] - 2018-02-01
+
+### Changed
+
+* This component is now compatible with version 3 of `sebastian/diff`
+
+## [2.1.2] - 2018-01-12
+
+### Fixed
+
+* Fix comparison of `DateTimeImmutable` objects
+
+## [2.1.1] - 2017-12-22
+
+### Fixed
+
+* Fixed [phpunit/#2923](https://github.com/sebastianbergmann/phpunit/issues/2923): Unexpected failed date matching
+
+## [2.1.0] - 2017-11-03
+
+### Added
+
+* Added `SebastianBergmann\Comparator\Factory::reset()` to unregister all non-default comparators
+* Added support for `phpunit/phpunit-mock-objects` version `^5.0`
+
+[4.0.6]: https://github.com/sebastianbergmann/comparator/compare/4.0.5...4.0.6
+[4.0.5]: https://github.com/sebastianbergmann/comparator/compare/4.0.4...4.0.5
+[4.0.4]: https://github.com/sebastianbergmann/comparator/compare/4.0.3...4.0.4
+[4.0.3]: https://github.com/sebastianbergmann/comparator/compare/4.0.2...4.0.3
+[4.0.2]: https://github.com/sebastianbergmann/comparator/compare/4.0.1...4.0.2
+[4.0.1]: https://github.com/sebastianbergmann/comparator/compare/4.0.0...4.0.1
+[4.0.0]: https://github.com/sebastianbergmann/comparator/compare/3.0.2...4.0.0
+[3.0.2]: https://github.com/sebastianbergmann/comparator/compare/3.0.1...3.0.2
+[3.0.1]: https://github.com/sebastianbergmann/comparator/compare/3.0.0...3.0.1
+[3.0.0]: https://github.com/sebastianbergmann/comparator/compare/2.1.3...3.0.0
+[2.1.3]: https://github.com/sebastianbergmann/comparator/compare/2.1.2...2.1.3
+[2.1.2]: https://github.com/sebastianbergmann/comparator/compare/2.1.1...2.1.2
+[2.1.1]: https://github.com/sebastianbergmann/comparator/compare/2.1.0...2.1.1
+[2.1.0]: https://github.com/sebastianbergmann/comparator/compare/2.0.2...2.1.0
diff --git a/vendor/sebastian/comparator/LICENSE b/vendor/sebastian/comparator/LICENSE
new file mode 100644
index 000000000..6ad70cbaf
--- /dev/null
+++ b/vendor/sebastian/comparator/LICENSE
@@ -0,0 +1,33 @@
+Comparator
+
+Copyright (c) 2002-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/comparator/README.md b/vendor/sebastian/comparator/README.md
new file mode 100644
index 000000000..f6002db65
--- /dev/null
+++ b/vendor/sebastian/comparator/README.md
@@ -0,0 +1,41 @@
+# sebastian/comparator
+
+[![CI Status](https://github.com/sebastianbergmann/comparator/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/comparator/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/comparator/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/comparator)
+
+This component provides the functionality to compare PHP values for equality.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/comparator
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/comparator
+```
+
+## Usage
+
+```php
+<?php
+use SebastianBergmann\Comparator\Factory;
+use SebastianBergmann\Comparator\ComparisonFailure;
+
+$date1 = new DateTime('2013-03-29 04:13:35', new DateTimeZone('America/New_York'));
+$date2 = new DateTime('2013-03-29 03:13:35', new DateTimeZone('America/Chicago'));
+
+$factory = new Factory;
+$comparator = $factory->getComparatorFor($date1, $date2);
+
+try {
+ $comparator->assertEquals($date1, $date2);
+ print "Dates match";
+} catch (ComparisonFailure $failure) {
+ print "Dates don't match";
+}
+```
diff --git a/vendor/sebastian/comparator/composer.json b/vendor/sebastian/comparator/composer.json
new file mode 100644
index 000000000..b758e03c9
--- /dev/null
+++ b/vendor/sebastian/comparator/composer.json
@@ -0,0 +1,57 @@
+{
+ "name": "sebastian/comparator",
+ "description": "Provides the functionality to compare PHP values for equality",
+ "keywords": ["comparator","compare","equality"],
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "[email protected]"
+ }
+ ],
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/_fixture"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ }
+}
+
diff --git a/vendor/sebastian/comparator/src/ArrayComparator.php b/vendor/sebastian/comparator/src/ArrayComparator.php
new file mode 100644
index 000000000..5d9fbce6e
--- /dev/null
+++ b/vendor/sebastian/comparator/src/ArrayComparator.php
@@ -0,0 +1,141 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use function array_key_exists;
+use function is_array;
+use function sort;
+use function sprintf;
+use function str_replace;
+use function trim;
+
+/**
+ * Compares arrays for equality.
+ *
+ * Arrays are equal if they contain the same key-value pairs.
+ * The order of the keys does not matter.
+ * The types of key-value pairs do not matter.
+ */
+class ArrayComparator extends Comparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ return is_array($expected) && is_array($actual);
+ }
+
+ /**
+ * Asserts that two arrays are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ * @param array $processed List of already processed elements (used to prevent infinite recursion)
+ *
+ * @throws ComparisonFailure
+ */
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = [])/*: void*/
+ {
+ if ($canonicalize) {
+ sort($expected);
+ sort($actual);
+ }
+
+ $remaining = $actual;
+ $actualAsString = "Array (\n";
+ $expectedAsString = "Array (\n";
+ $equal = true;
+
+ foreach ($expected as $key => $value) {
+ unset($remaining[$key]);
+
+ if (!array_key_exists($key, $actual)) {
+ $expectedAsString .= sprintf(
+ " %s => %s\n",
+ $this->exporter->export($key),
+ $this->exporter->shortenedExport($value)
+ );
+
+ $equal = false;
+
+ continue;
+ }
+
+ try {
+ $comparator = $this->factory->getComparatorFor($value, $actual[$key]);
+ $comparator->assertEquals($value, $actual[$key], $delta, $canonicalize, $ignoreCase, $processed);
+
+ $expectedAsString .= sprintf(
+ " %s => %s\n",
+ $this->exporter->export($key),
+ $this->exporter->shortenedExport($value)
+ );
+
+ $actualAsString .= sprintf(
+ " %s => %s\n",
+ $this->exporter->export($key),
+ $this->exporter->shortenedExport($actual[$key])
+ );
+ } catch (ComparisonFailure $e) {
+ $expectedAsString .= sprintf(
+ " %s => %s\n",
+ $this->exporter->export($key),
+ $e->getExpectedAsString() ? $this->indent($e->getExpectedAsString()) : $this->exporter->shortenedExport($e->getExpected())
+ );
+
+ $actualAsString .= sprintf(
+ " %s => %s\n",
+ $this->exporter->export($key),
+ $e->getActualAsString() ? $this->indent($e->getActualAsString()) : $this->exporter->shortenedExport($e->getActual())
+ );
+
+ $equal = false;
+ }
+ }
+
+ foreach ($remaining as $key => $value) {
+ $actualAsString .= sprintf(
+ " %s => %s\n",
+ $this->exporter->export($key),
+ $this->exporter->shortenedExport($value)
+ );
+
+ $equal = false;
+ }
+
+ $expectedAsString .= ')';
+ $actualAsString .= ')';
+
+ if (!$equal) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $expectedAsString,
+ $actualAsString,
+ false,
+ 'Failed asserting that two arrays are equal.'
+ );
+ }
+ }
+
+ protected function indent($lines)
+ {
+ return trim(str_replace("\n", "\n ", $lines));
+ }
+}
diff --git a/vendor/sebastian/comparator/src/Comparator.php b/vendor/sebastian/comparator/src/Comparator.php
new file mode 100644
index 000000000..e1906c167
--- /dev/null
+++ b/vendor/sebastian/comparator/src/Comparator.php
@@ -0,0 +1,61 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use SebastianBergmann\Exporter\Exporter;
+
+/**
+ * Abstract base class for comparators which compare values for equality.
+ */
+abstract class Comparator
+{
+ /**
+ * @var Factory
+ */
+ protected $factory;
+
+ /**
+ * @var Exporter
+ */
+ protected $exporter;
+
+ public function __construct()
+ {
+ $this->exporter = new Exporter;
+ }
+
+ public function setFactory(Factory $factory)/*: void*/
+ {
+ $this->factory = $factory;
+ }
+
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ abstract public function accepts($expected, $actual);
+
+ /**
+ * Asserts that two values are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ *
+ * @throws ComparisonFailure
+ */
+ abstract public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false);
+}
diff --git a/vendor/sebastian/comparator/src/ComparisonFailure.php b/vendor/sebastian/comparator/src/ComparisonFailure.php
new file mode 100644
index 000000000..857314daa
--- /dev/null
+++ b/vendor/sebastian/comparator/src/ComparisonFailure.php
@@ -0,0 +1,129 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use RuntimeException;
+use SebastianBergmann\Diff\Differ;
+use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder;
+
+/**
+ * Thrown when an assertion for string equality failed.
+ */
+class ComparisonFailure extends RuntimeException
+{
+ /**
+ * Expected value of the retrieval which does not match $actual.
+ *
+ * @var mixed
+ */
+ protected $expected;
+
+ /**
+ * Actually retrieved value which does not match $expected.
+ *
+ * @var mixed
+ */
+ protected $actual;
+
+ /**
+ * The string representation of the expected value.
+ *
+ * @var string
+ */
+ protected $expectedAsString;
+
+ /**
+ * The string representation of the actual value.
+ *
+ * @var string
+ */
+ protected $actualAsString;
+
+ /**
+ * @var bool
+ */
+ protected $identical;
+
+ /**
+ * Optional message which is placed in front of the first line
+ * returned by toString().
+ *
+ * @var string
+ */
+ protected $message;
+
+ /**
+ * Initialises with the expected value and the actual value.
+ *
+ * @param mixed $expected expected value retrieved
+ * @param mixed $actual actual value retrieved
+ * @param string $expectedAsString
+ * @param string $actualAsString
+ * @param bool $identical
+ * @param string $message a string which is prefixed on all returned lines
+ * in the difference output
+ */
+ public function __construct($expected, $actual, $expectedAsString, $actualAsString, $identical = false, $message = '')
+ {
+ $this->expected = $expected;
+ $this->actual = $actual;
+ $this->expectedAsString = $expectedAsString;
+ $this->actualAsString = $actualAsString;
+ $this->message = $message;
+ }
+
+ public function getActual()
+ {
+ return $this->actual;
+ }
+
+ public function getExpected()
+ {
+ return $this->expected;
+ }
+
+ /**
+ * @return string
+ */
+ public function getActualAsString()
+ {
+ return $this->actualAsString;
+ }
+
+ /**
+ * @return string
+ */
+ public function getExpectedAsString()
+ {
+ return $this->expectedAsString;
+ }
+
+ /**
+ * @return string
+ */
+ public function getDiff()
+ {
+ if (!$this->actualAsString && !$this->expectedAsString) {
+ return '';
+ }
+
+ $differ = new Differ(new UnifiedDiffOutputBuilder("\n--- Expected\n+++ Actual\n"));
+
+ return $differ->diff($this->expectedAsString, $this->actualAsString);
+ }
+
+ /**
+ * @return string
+ */
+ public function toString()
+ {
+ return $this->message . $this->getDiff();
+ }
+}
diff --git a/vendor/sebastian/comparator/src/DOMNodeComparator.php b/vendor/sebastian/comparator/src/DOMNodeComparator.php
new file mode 100644
index 000000000..5bf854eae
--- /dev/null
+++ b/vendor/sebastian/comparator/src/DOMNodeComparator.php
@@ -0,0 +1,93 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use function sprintf;
+use function strtolower;
+use DOMDocument;
+use DOMNode;
+use ValueError;
+
+/**
+ * Compares DOMNode instances for equality.
+ */
+class DOMNodeComparator extends ObjectComparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ return $expected instanceof DOMNode && $actual instanceof DOMNode;
+ }
+
+ /**
+ * Asserts that two values are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ * @param array $processed List of already processed elements (used to prevent infinite recursion)
+ *
+ * @throws ComparisonFailure
+ */
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = [])/*: void*/
+ {
+ $expectedAsString = $this->nodeToText($expected, true, $ignoreCase);
+ $actualAsString = $this->nodeToText($actual, true, $ignoreCase);
+
+ if ($expectedAsString !== $actualAsString) {
+ $type = $expected instanceof DOMDocument ? 'documents' : 'nodes';
+
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $expectedAsString,
+ $actualAsString,
+ false,
+ sprintf("Failed asserting that two DOM %s are equal.\n", $type)
+ );
+ }
+ }
+
+ /**
+ * Returns the normalized, whitespace-cleaned, and indented textual
+ * representation of a DOMNode.
+ */
+ private function nodeToText(DOMNode $node, bool $canonicalize, bool $ignoreCase): string
+ {
+ if ($canonicalize) {
+ $document = new DOMDocument;
+
+ try {
+ @$document->loadXML($node->C14N());
+ } catch (ValueError $e) {
+ }
+
+ $node = $document;
+ }
+
+ $document = $node instanceof DOMDocument ? $node : $node->ownerDocument;
+
+ $document->formatOutput = true;
+ $document->normalizeDocument();
+
+ $text = $node instanceof DOMDocument ? $node->saveXML() : $document->saveXML($node);
+
+ return $ignoreCase ? strtolower($text) : $text;
+ }
+}
diff --git a/vendor/sebastian/comparator/src/DateTimeComparator.php b/vendor/sebastian/comparator/src/DateTimeComparator.php
new file mode 100644
index 000000000..0a303b623
--- /dev/null
+++ b/vendor/sebastian/comparator/src/DateTimeComparator.php
@@ -0,0 +1,95 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use function abs;
+use function floor;
+use function sprintf;
+use DateInterval;
+use DateTime;
+use DateTimeInterface;
+use DateTimeZone;
+use Exception;
+
+/**
+ * Compares DateTimeInterface instances for equality.
+ */
+class DateTimeComparator extends ObjectComparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ return ($expected instanceof DateTime || $expected instanceof DateTimeInterface) &&
+ ($actual instanceof DateTime || $actual instanceof DateTimeInterface);
+ }
+
+ /**
+ * Asserts that two values are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ * @param array $processed List of already processed elements (used to prevent infinite recursion)
+ *
+ * @throws Exception
+ * @throws ComparisonFailure
+ */
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = [])/*: void*/
+ {
+ /** @var DateTimeInterface $expected */
+ /** @var DateTimeInterface $actual */
+ $absDelta = abs($delta);
+ $delta = new DateInterval(sprintf('PT%dS', $absDelta));
+ $delta->f = $absDelta - floor($absDelta);
+
+ $actualClone = (clone $actual)
+ ->setTimezone(new DateTimeZone('UTC'));
+
+ $expectedLower = (clone $expected)
+ ->setTimezone(new DateTimeZone('UTC'))
+ ->sub($delta);
+
+ $expectedUpper = (clone $expected)
+ ->setTimezone(new DateTimeZone('UTC'))
+ ->add($delta);
+
+ if ($actualClone < $expectedLower || $actualClone > $expectedUpper) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->dateTimeToString($expected),
+ $this->dateTimeToString($actual),
+ false,
+ 'Failed asserting that two DateTime objects are equal.'
+ );
+ }
+ }
+
+ /**
+ * Returns an ISO 8601 formatted string representation of a datetime or
+ * 'Invalid DateTimeInterface object' if the provided DateTimeInterface was not properly
+ * initialized.
+ */
+ private function dateTimeToString(DateTimeInterface $datetime): string
+ {
+ $string = $datetime->format('Y-m-d\TH:i:s.uO');
+
+ return $string ?: 'Invalid DateTimeInterface object';
+ }
+}
diff --git a/vendor/sebastian/comparator/src/DoubleComparator.php b/vendor/sebastian/comparator/src/DoubleComparator.php
new file mode 100644
index 000000000..d90b9e06b
--- /dev/null
+++ b/vendor/sebastian/comparator/src/DoubleComparator.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use function is_float;
+use function is_numeric;
+
+/**
+ * Compares doubles for equality.
+ */
+class DoubleComparator extends NumericComparator
+{
+ /**
+ * Smallest value available in PHP.
+ *
+ * @var float
+ */
+ public const EPSILON = 0.0000000001;
+
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ return (is_float($expected) || is_float($actual)) && is_numeric($expected) && is_numeric($actual);
+ }
+
+ /**
+ * Asserts that two values are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ *
+ * @throws ComparisonFailure
+ */
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/
+ {
+ if ($delta == 0) {
+ $delta = self::EPSILON;
+ }
+
+ parent::assertEquals($expected, $actual, $delta, $canonicalize, $ignoreCase);
+ }
+}
diff --git a/vendor/sebastian/comparator/src/ExceptionComparator.php b/vendor/sebastian/comparator/src/ExceptionComparator.php
new file mode 100644
index 000000000..1fc0174ef
--- /dev/null
+++ b/vendor/sebastian/comparator/src/ExceptionComparator.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use Exception;
+
+/**
+ * Compares Exception instances for equality.
+ */
+class ExceptionComparator extends ObjectComparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ return $expected instanceof Exception && $actual instanceof Exception;
+ }
+
+ /**
+ * Converts an object to an array containing all of its private, protected
+ * and public properties.
+ *
+ * @param object $object
+ *
+ * @return array
+ */
+ protected function toArray($object)
+ {
+ $array = parent::toArray($object);
+
+ unset(
+ $array['file'],
+ $array['line'],
+ $array['trace'],
+ $array['string'],
+ $array['xdebug_message']
+ );
+
+ return $array;
+ }
+}
diff --git a/vendor/sebastian/comparator/src/Factory.php b/vendor/sebastian/comparator/src/Factory.php
new file mode 100644
index 000000000..5b16366f0
--- /dev/null
+++ b/vendor/sebastian/comparator/src/Factory.php
@@ -0,0 +1,142 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use function array_unshift;
+
+/**
+ * Factory for comparators which compare values for equality.
+ */
+class Factory
+{
+ /**
+ * @var Factory
+ */
+ private static $instance;
+
+ /**
+ * @var Comparator[]
+ */
+ private $customComparators = [];
+
+ /**
+ * @var Comparator[]
+ */
+ private $defaultComparators = [];
+
+ /**
+ * @return Factory
+ */
+ public static function getInstance()
+ {
+ if (self::$instance === null) {
+ self::$instance = new self; // @codeCoverageIgnore
+ }
+
+ return self::$instance;
+ }
+
+ /**
+ * Constructs a new factory.
+ */
+ public function __construct()
+ {
+ $this->registerDefaultComparators();
+ }
+
+ /**
+ * Returns the correct comparator for comparing two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return Comparator
+ */
+ public function getComparatorFor($expected, $actual)
+ {
+ foreach ($this->customComparators as $comparator) {
+ if ($comparator->accepts($expected, $actual)) {
+ return $comparator;
+ }
+ }
+
+ foreach ($this->defaultComparators as $comparator) {
+ if ($comparator->accepts($expected, $actual)) {
+ return $comparator;
+ }
+ }
+
+ throw new RuntimeException('No suitable Comparator implementation found');
+ }
+
+ /**
+ * Registers a new comparator.
+ *
+ * This comparator will be returned by getComparatorFor() if its accept() method
+ * returns TRUE for the compared values. It has higher priority than the
+ * existing comparators, meaning that its accept() method will be invoked
+ * before those of the other comparators.
+ *
+ * @param Comparator $comparator The comparator to be registered
+ */
+ public function register(Comparator $comparator)/*: void*/
+ {
+ array_unshift($this->customComparators, $comparator);
+
+ $comparator->setFactory($this);
+ }
+
+ /**
+ * Unregisters a comparator.
+ *
+ * This comparator will no longer be considered by getComparatorFor().
+ *
+ * @param Comparator $comparator The comparator to be unregistered
+ */
+ public function unregister(Comparator $comparator)/*: void*/
+ {
+ foreach ($this->customComparators as $key => $_comparator) {
+ if ($comparator === $_comparator) {
+ unset($this->customComparators[$key]);
+ }
+ }
+ }
+
+ /**
+ * Unregisters all non-default comparators.
+ */
+ public function reset()/*: void*/
+ {
+ $this->customComparators = [];
+ }
+
+ private function registerDefaultComparators(): void
+ {
+ $this->registerDefaultComparator(new MockObjectComparator);
+ $this->registerDefaultComparator(new DateTimeComparator);
+ $this->registerDefaultComparator(new DOMNodeComparator);
+ $this->registerDefaultComparator(new SplObjectStorageComparator);
+ $this->registerDefaultComparator(new ExceptionComparator);
+ $this->registerDefaultComparator(new ObjectComparator);
+ $this->registerDefaultComparator(new ResourceComparator);
+ $this->registerDefaultComparator(new ArrayComparator);
+ $this->registerDefaultComparator(new DoubleComparator);
+ $this->registerDefaultComparator(new NumericComparator);
+ $this->registerDefaultComparator(new ScalarComparator);
+ $this->registerDefaultComparator(new TypeComparator);
+ }
+
+ private function registerDefaultComparator(Comparator $comparator): void
+ {
+ $this->defaultComparators[] = $comparator;
+
+ $comparator->setFactory($this);
+ }
+}
diff --git a/vendor/sebastian/comparator/src/MockObjectComparator.php b/vendor/sebastian/comparator/src/MockObjectComparator.php
new file mode 100644
index 000000000..cb6703161
--- /dev/null
+++ b/vendor/sebastian/comparator/src/MockObjectComparator.php
@@ -0,0 +1,48 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use PHPUnit\Framework\MockObject\MockObject;
+
+/**
+ * Compares PHPUnit\Framework\MockObject\MockObject instances for equality.
+ */
+class MockObjectComparator extends ObjectComparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ return $expected instanceof MockObject && $actual instanceof MockObject;
+ }
+
+ /**
+ * Converts an object to an array containing all of its private, protected
+ * and public properties.
+ *
+ * @param object $object
+ *
+ * @return array
+ */
+ protected function toArray($object)
+ {
+ $array = parent::toArray($object);
+
+ unset($array['__phpunit_invocationMocker']);
+
+ return $array;
+ }
+}
diff --git a/vendor/sebastian/comparator/src/NumericComparator.php b/vendor/sebastian/comparator/src/NumericComparator.php
new file mode 100644
index 000000000..12e6721d6
--- /dev/null
+++ b/vendor/sebastian/comparator/src/NumericComparator.php
@@ -0,0 +1,86 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use function abs;
+use function is_float;
+use function is_infinite;
+use function is_nan;
+use function is_numeric;
+use function is_string;
+use function sprintf;
+
+/**
+ * Compares numerical values for equality.
+ */
+class NumericComparator extends ScalarComparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ // all numerical values, but not if one of them is a double
+ // or both of them are strings
+ return is_numeric($expected) && is_numeric($actual) &&
+ !(is_float($expected) || is_float($actual)) &&
+ !(is_string($expected) && is_string($actual));
+ }
+
+ /**
+ * Asserts that two values are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ *
+ * @throws ComparisonFailure
+ */
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/
+ {
+ if ($this->isInfinite($actual) && $this->isInfinite($expected)) {
+ return;
+ }
+
+ if (($this->isInfinite($actual) xor $this->isInfinite($expected)) ||
+ ($this->isNan($actual) || $this->isNan($expected)) ||
+ abs($actual - $expected) > $delta) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ '',
+ '',
+ false,
+ sprintf(
+ 'Failed asserting that %s matches expected %s.',
+ $this->exporter->export($actual),
+ $this->exporter->export($expected)
+ )
+ );
+ }
+ }
+
+ private function isInfinite($value): bool
+ {
+ return is_float($value) && is_infinite($value);
+ }
+
+ private function isNan($value): bool
+ {
+ return is_float($value) && is_nan($value);
+ }
+}
diff --git a/vendor/sebastian/comparator/src/ObjectComparator.php b/vendor/sebastian/comparator/src/ObjectComparator.php
new file mode 100644
index 000000000..9380ba150
--- /dev/null
+++ b/vendor/sebastian/comparator/src/ObjectComparator.php
@@ -0,0 +1,112 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use function get_class;
+use function in_array;
+use function is_object;
+use function sprintf;
+use function substr_replace;
+
+/**
+ * Compares objects for equality.
+ */
+class ObjectComparator extends ArrayComparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ return is_object($expected) && is_object($actual);
+ }
+
+ /**
+ * Asserts that two values are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ * @param array $processed List of already processed elements (used to prevent infinite recursion)
+ *
+ * @throws ComparisonFailure
+ */
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = [])/*: void*/
+ {
+ if (get_class($actual) !== get_class($expected)) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->exporter->export($expected),
+ $this->exporter->export($actual),
+ false,
+ sprintf(
+ '%s is not instance of expected class "%s".',
+ $this->exporter->export($actual),
+ get_class($expected)
+ )
+ );
+ }
+
+ // don't compare twice to allow for cyclic dependencies
+ if (in_array([$actual, $expected], $processed, true) ||
+ in_array([$expected, $actual], $processed, true)) {
+ return;
+ }
+
+ $processed[] = [$actual, $expected];
+
+ // don't compare objects if they are identical
+ // this helps to avoid the error "maximum function nesting level reached"
+ // CAUTION: this conditional clause is not tested
+ if ($actual !== $expected) {
+ try {
+ parent::assertEquals(
+ $this->toArray($expected),
+ $this->toArray($actual),
+ $delta,
+ $canonicalize,
+ $ignoreCase,
+ $processed
+ );
+ } catch (ComparisonFailure $e) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ // replace "Array" with "MyClass object"
+ substr_replace($e->getExpectedAsString(), get_class($expected) . ' Object', 0, 5),
+ substr_replace($e->getActualAsString(), get_class($actual) . ' Object', 0, 5),
+ false,
+ 'Failed asserting that two objects are equal.'
+ );
+ }
+ }
+ }
+
+ /**
+ * Converts an object to an array containing all of its private, protected
+ * and public properties.
+ *
+ * @param object $object
+ *
+ * @return array
+ */
+ protected function toArray($object)
+ {
+ return $this->exporter->toArray($object);
+ }
+}
diff --git a/vendor/sebastian/comparator/src/ResourceComparator.php b/vendor/sebastian/comparator/src/ResourceComparator.php
new file mode 100644
index 000000000..7822598b1
--- /dev/null
+++ b/vendor/sebastian/comparator/src/ResourceComparator.php
@@ -0,0 +1,54 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use function is_resource;
+
+/**
+ * Compares resources for equality.
+ */
+class ResourceComparator extends Comparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ return is_resource($expected) && is_resource($actual);
+ }
+
+ /**
+ * Asserts that two values are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ *
+ * @throws ComparisonFailure
+ */
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/
+ {
+ if ($actual != $expected) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->exporter->export($expected),
+ $this->exporter->export($actual)
+ );
+ }
+ }
+}
diff --git a/vendor/sebastian/comparator/src/ScalarComparator.php b/vendor/sebastian/comparator/src/ScalarComparator.php
new file mode 100644
index 000000000..08ded922b
--- /dev/null
+++ b/vendor/sebastian/comparator/src/ScalarComparator.php
@@ -0,0 +1,98 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use function is_object;
+use function is_scalar;
+use function is_string;
+use function method_exists;
+use function sprintf;
+use function strtolower;
+
+/**
+ * Compares scalar or NULL values for equality.
+ */
+class ScalarComparator extends Comparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ *
+ * @since Method available since Release 3.6.0
+ */
+ public function accepts($expected, $actual)
+ {
+ return ((is_scalar($expected) xor null === $expected) &&
+ (is_scalar($actual) xor null === $actual))
+ // allow comparison between strings and objects featuring __toString()
+ || (is_string($expected) && is_object($actual) && method_exists($actual, '__toString'))
+ || (is_object($expected) && method_exists($expected, '__toString') && is_string($actual));
+ }
+
+ /**
+ * Asserts that two values are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ *
+ * @throws ComparisonFailure
+ */
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/
+ {
+ $expectedToCompare = $expected;
+ $actualToCompare = $actual;
+
+ // always compare as strings to avoid strange behaviour
+ // otherwise 0 == 'Foobar'
+ if (is_string($expected) || is_string($actual)) {
+ $expectedToCompare = (string) $expectedToCompare;
+ $actualToCompare = (string) $actualToCompare;
+
+ if ($ignoreCase) {
+ $expectedToCompare = strtolower($expectedToCompare);
+ $actualToCompare = strtolower($actualToCompare);
+ }
+ }
+
+ if ($expectedToCompare !== $actualToCompare && is_string($expected) && is_string($actual)) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->exporter->export($expected),
+ $this->exporter->export($actual),
+ false,
+ 'Failed asserting that two strings are equal.'
+ );
+ }
+
+ if ($expectedToCompare != $actualToCompare) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ // no diff is required
+ '',
+ '',
+ false,
+ sprintf(
+ 'Failed asserting that %s matches expected %s.',
+ $this->exporter->export($actual),
+ $this->exporter->export($expected)
+ )
+ );
+ }
+ }
+}
diff --git a/vendor/sebastian/comparator/src/SplObjectStorageComparator.php b/vendor/sebastian/comparator/src/SplObjectStorageComparator.php
new file mode 100644
index 000000000..d9b6f541a
--- /dev/null
+++ b/vendor/sebastian/comparator/src/SplObjectStorageComparator.php
@@ -0,0 +1,71 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use SplObjectStorage;
+
+/**
+ * Compares \SplObjectStorage instances for equality.
+ */
+class SplObjectStorageComparator extends Comparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ return $expected instanceof SplObjectStorage && $actual instanceof SplObjectStorage;
+ }
+
+ /**
+ * Asserts that two values are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ *
+ * @throws ComparisonFailure
+ */
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/
+ {
+ foreach ($actual as $object) {
+ if (!$expected->contains($object)) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->exporter->export($expected),
+ $this->exporter->export($actual),
+ false,
+ 'Failed asserting that two objects are equal.'
+ );
+ }
+ }
+
+ foreach ($expected as $object) {
+ if (!$actual->contains($object)) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->exporter->export($expected),
+ $this->exporter->export($actual),
+ false,
+ 'Failed asserting that two objects are equal.'
+ );
+ }
+ }
+ }
+}
diff --git a/vendor/sebastian/comparator/src/TypeComparator.php b/vendor/sebastian/comparator/src/TypeComparator.php
new file mode 100644
index 000000000..b0d38d72e
--- /dev/null
+++ b/vendor/sebastian/comparator/src/TypeComparator.php
@@ -0,0 +1,62 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use function gettype;
+use function sprintf;
+
+/**
+ * Compares values for type equality.
+ */
+class TypeComparator extends Comparator
+{
+ /**
+ * Returns whether the comparator can compare two values.
+ *
+ * @param mixed $expected The first value to compare
+ * @param mixed $actual The second value to compare
+ *
+ * @return bool
+ */
+ public function accepts($expected, $actual)
+ {
+ return true;
+ }
+
+ /**
+ * Asserts that two values are equal.
+ *
+ * @param mixed $expected First value to compare
+ * @param mixed $actual Second value to compare
+ * @param float $delta Allowed numerical distance between two values to consider them equal
+ * @param bool $canonicalize Arrays are sorted before comparison when set to true
+ * @param bool $ignoreCase Case is ignored when set to true
+ *
+ * @throws ComparisonFailure
+ */
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)/*: void*/
+ {
+ if (gettype($expected) != gettype($actual)) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ // we don't need a diff
+ '',
+ '',
+ false,
+ sprintf(
+ '%s does not match expected type "%s".',
+ $this->exporter->shortenedExport($actual),
+ gettype($expected)
+ )
+ );
+ }
+ }
+}
diff --git a/vendor/sebastian/comparator/src/exceptions/Exception.php b/vendor/sebastian/comparator/src/exceptions/Exception.php
new file mode 100644
index 000000000..8975aaf1b
--- /dev/null
+++ b/vendor/sebastian/comparator/src/exceptions/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/comparator/src/exceptions/RuntimeException.php b/vendor/sebastian/comparator/src/exceptions/RuntimeException.php
new file mode 100644
index 000000000..ca726084a
--- /dev/null
+++ b/vendor/sebastian/comparator/src/exceptions/RuntimeException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/comparator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Comparator;
+
+final class RuntimeException extends \RuntimeException implements Exception
+{
+}
diff --git a/vendor/sebastian/complexity/.psalm/baseline.xml b/vendor/sebastian/complexity/.psalm/baseline.xml
new file mode 100644
index 000000000..77e688e07
--- /dev/null
+++ b/vendor/sebastian/complexity/.psalm/baseline.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44"/>
diff --git a/vendor/sebastian/complexity/.psalm/config.xml b/vendor/sebastian/complexity/.psalm/config.xml
new file mode 100644
index 000000000..8172fe15a
--- /dev/null
+++ b/vendor/sebastian/complexity/.psalm/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<psalm
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ resolveFromConfigFile="false"
+ errorBaseline=".psalm/baseline.xml"
+ totallyTyped="true"
+>
+ <projectFiles>
+ <directory name="src" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+</psalm>
diff --git a/vendor/sebastian/complexity/ChangeLog.md b/vendor/sebastian/complexity/ChangeLog.md
new file mode 100644
index 000000000..cb93ff620
--- /dev/null
+++ b/vendor/sebastian/complexity/ChangeLog.md
@@ -0,0 +1,30 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [2.0.2] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\Complexity\Exception` now correctly extends `\Throwable`
+
+## [2.0.1] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [2.0.0] - 2020-07-25
+
+### Removed
+
+* The `ParentConnectingVisitor` has been removed (it should have been marked as `@internal`)
+
+## [1.0.0] - 2020-07-22
+
+* Initial release
+
+[2.0.2]: https://github.com/sebastianbergmann/complexity/compare/2.0.1...2.0.2
+[2.0.1]: https://github.com/sebastianbergmann/complexity/compare/2.0.0...2.0.1
+[2.0.0]: https://github.com/sebastianbergmann/complexity/compare/1.0.0...2.0.0
+[1.0.0]: https://github.com/sebastianbergmann/complexity/compare/70ee0ad32d9e2be3f85beffa3e2eb474193f2487...1.0.0
diff --git a/vendor/sebastian/complexity/LICENSE b/vendor/sebastian/complexity/LICENSE
new file mode 100644
index 000000000..5f818df69
--- /dev/null
+++ b/vendor/sebastian/complexity/LICENSE
@@ -0,0 +1,33 @@
+sebastian/complexity
+
+Copyright (c) 2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/complexity/README.md b/vendor/sebastian/complexity/README.md
new file mode 100644
index 000000000..5f53b0b5d
--- /dev/null
+++ b/vendor/sebastian/complexity/README.md
@@ -0,0 +1,22 @@
+# sebastian/complexity
+
+Library for calculating the complexity of PHP code units.
+
+[![Latest Stable Version](https://img.shields.io/packagist/v/sebastian/complexity.svg?style=flat-square)](https://packagist.org/packages/sebastian/complexity)
+[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.3-8892BF.svg?style=flat-square)](https://php.net/)
+[![CI Status](https://github.com/sebastianbergmann/complexity/workflows/CI/badge.svg?branch=master&event=push)](https://phpunit.de/build-status.html)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/complexity/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/complexity)
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/complexity
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/complexity
+```
diff --git a/vendor/sebastian/complexity/composer.json b/vendor/sebastian/complexity/composer.json
new file mode 100644
index 000000000..7aa38314e
--- /dev/null
+++ b/vendor/sebastian/complexity/composer.json
@@ -0,0 +1,41 @@
+{
+ "name": "sebastian/complexity",
+ "description": "Library for calculating the complexity of PHP code units",
+ "type": "library",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues"
+ },
+ "require": {
+ "php": ">=7.3",
+ "nikic/php-parser": "^4.7"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/complexity/src/Calculator.php b/vendor/sebastian/complexity/src/Calculator.php
new file mode 100644
index 000000000..9abdcd169
--- /dev/null
+++ b/vendor/sebastian/complexity/src/Calculator.php
@@ -0,0 +1,88 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/complexity.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Complexity;
+
+use PhpParser\Error;
+use PhpParser\Lexer;
+use PhpParser\Node;
+use PhpParser\NodeTraverser;
+use PhpParser\NodeVisitor\NameResolver;
+use PhpParser\NodeVisitor\ParentConnectingVisitor;
+use PhpParser\Parser;
+use PhpParser\ParserFactory;
+
+final class Calculator
+{
+ /**
+ * @throws RuntimeException
+ */
+ public function calculateForSourceFile(string $sourceFile): ComplexityCollection
+ {
+ return $this->calculateForSourceString(file_get_contents($sourceFile));
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ public function calculateForSourceString(string $source): ComplexityCollection
+ {
+ try {
+ $nodes = $this->parser()->parse($source);
+
+ assert($nodes !== null);
+
+ return $this->calculateForAbstractSyntaxTree($nodes);
+
+ // @codeCoverageIgnoreStart
+ } catch (Error $error) {
+ throw new RuntimeException(
+ $error->getMessage(),
+ (int) $error->getCode(),
+ $error
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @param Node[] $nodes
+ *
+ * @throws RuntimeException
+ */
+ public function calculateForAbstractSyntaxTree(array $nodes): ComplexityCollection
+ {
+ $traverser = new NodeTraverser;
+ $complexityCalculatingVisitor = new ComplexityCalculatingVisitor(true);
+
+ $traverser->addVisitor(new NameResolver);
+ $traverser->addVisitor(new ParentConnectingVisitor);
+ $traverser->addVisitor($complexityCalculatingVisitor);
+
+ try {
+ /* @noinspection UnusedFunctionResultInspection */
+ $traverser->traverse($nodes);
+ // @codeCoverageIgnoreStart
+ } catch (Error $error) {
+ throw new RuntimeException(
+ $error->getMessage(),
+ (int) $error->getCode(),
+ $error
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ return $complexityCalculatingVisitor->result();
+ }
+
+ private function parser(): Parser
+ {
+ return (new ParserFactory)->create(ParserFactory::PREFER_PHP7, new Lexer);
+ }
+}
diff --git a/vendor/sebastian/complexity/src/Complexity/Complexity.php b/vendor/sebastian/complexity/src/Complexity/Complexity.php
new file mode 100644
index 000000000..dc6708dde
--- /dev/null
+++ b/vendor/sebastian/complexity/src/Complexity/Complexity.php
@@ -0,0 +1,42 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/complexity.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Complexity;
+
+/**
+ * @psalm-immutable
+ */
+final class Complexity
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var int
+ */
+ private $cyclomaticComplexity;
+
+ public function __construct(string $name, int $cyclomaticComplexity)
+ {
+ $this->name = $name;
+ $this->cyclomaticComplexity = $cyclomaticComplexity;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function cyclomaticComplexity(): int
+ {
+ return $this->cyclomaticComplexity;
+ }
+}
diff --git a/vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php b/vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php
new file mode 100644
index 000000000..ccbddbf77
--- /dev/null
+++ b/vendor/sebastian/complexity/src/Complexity/ComplexityCollection.php
@@ -0,0 +1,72 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/complexity.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Complexity;
+
+use function count;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * @psalm-immutable
+ */
+final class ComplexityCollection implements Countable, IteratorAggregate
+{
+ /**
+ * @psalm-var list<Complexity>
+ */
+ private $items = [];
+
+ public static function fromList(Complexity ...$items): self
+ {
+ return new self($items);
+ }
+
+ /**
+ * @psalm-param list<Complexity> $items
+ */
+ private function __construct(array $items)
+ {
+ $this->items = $items;
+ }
+
+ /**
+ * @psalm-return list<Complexity>
+ */
+ public function asArray(): array
+ {
+ return $this->items;
+ }
+
+ public function getIterator(): ComplexityCollectionIterator
+ {
+ return new ComplexityCollectionIterator($this);
+ }
+
+ public function count(): int
+ {
+ return count($this->items);
+ }
+
+ public function isEmpty(): bool
+ {
+ return empty($this->items);
+ }
+
+ public function cyclomaticComplexity(): int
+ {
+ $cyclomaticComplexity = 0;
+
+ foreach ($this as $item) {
+ $cyclomaticComplexity += $item->cyclomaticComplexity();
+ }
+
+ return $cyclomaticComplexity;
+ }
+}
diff --git a/vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php b/vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php
new file mode 100644
index 000000000..ec39e199f
--- /dev/null
+++ b/vendor/sebastian/complexity/src/Complexity/ComplexityCollectionIterator.php
@@ -0,0 +1,55 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/complexity.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Complexity;
+
+use Iterator;
+
+final class ComplexityCollectionIterator implements Iterator
+{
+ /**
+ * @psalm-var list<Complexity>
+ */
+ private $items;
+
+ /**
+ * @var int
+ */
+ private $position = 0;
+
+ public function __construct(ComplexityCollection $items)
+ {
+ $this->items = $items->asArray();
+ }
+
+ public function rewind(): void
+ {
+ $this->position = 0;
+ }
+
+ public function valid(): bool
+ {
+ return isset($this->items[$this->position]);
+ }
+
+ public function key(): int
+ {
+ return $this->position;
+ }
+
+ public function current(): Complexity
+ {
+ return $this->items[$this->position];
+ }
+
+ public function next(): void
+ {
+ $this->position++;
+ }
+}
diff --git a/vendor/sebastian/complexity/src/Exception/Exception.php b/vendor/sebastian/complexity/src/Exception/Exception.php
new file mode 100644
index 000000000..897ecdcf7
--- /dev/null
+++ b/vendor/sebastian/complexity/src/Exception/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/complexity.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Complexity;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/complexity/src/Exception/RuntimeException.php b/vendor/sebastian/complexity/src/Exception/RuntimeException.php
new file mode 100644
index 000000000..6c68a6f0f
--- /dev/null
+++ b/vendor/sebastian/complexity/src/Exception/RuntimeException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/complexity.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Complexity;
+
+final class RuntimeException extends \RuntimeException implements Exception
+{
+}
diff --git a/vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php b/vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php
new file mode 100644
index 000000000..b69f2b09f
--- /dev/null
+++ b/vendor/sebastian/complexity/src/Visitor/ComplexityCalculatingVisitor.php
@@ -0,0 +1,109 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/complexity.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Complexity;
+
+use function assert;
+use function is_array;
+use PhpParser\Node;
+use PhpParser\Node\Name;
+use PhpParser\Node\Stmt;
+use PhpParser\Node\Stmt\Class_;
+use PhpParser\Node\Stmt\ClassMethod;
+use PhpParser\Node\Stmt\Function_;
+use PhpParser\Node\Stmt\Trait_;
+use PhpParser\NodeTraverser;
+use PhpParser\NodeVisitorAbstract;
+
+final class ComplexityCalculatingVisitor extends NodeVisitorAbstract
+{
+ /**
+ * @psalm-var list<Complexity>
+ */
+ private $result = [];
+
+ /**
+ * @var bool
+ */
+ private $shortCircuitTraversal;
+
+ public function __construct(bool $shortCircuitTraversal)
+ {
+ $this->shortCircuitTraversal = $shortCircuitTraversal;
+ }
+
+ public function enterNode(Node $node): ?int
+ {
+ if (!$node instanceof ClassMethod && !$node instanceof Function_) {
+ return null;
+ }
+
+ if ($node instanceof ClassMethod) {
+ $name = $this->classMethodName($node);
+ } else {
+ $name = $this->functionName($node);
+ }
+
+ $statements = $node->getStmts();
+
+ assert(is_array($statements));
+
+ $this->result[] = new Complexity(
+ $name,
+ $this->cyclomaticComplexity($statements)
+ );
+
+ if ($this->shortCircuitTraversal) {
+ return NodeTraverser::DONT_TRAVERSE_CHILDREN;
+ }
+
+ return null;
+ }
+
+ public function result(): ComplexityCollection
+ {
+ return ComplexityCollection::fromList(...$this->result);
+ }
+
+ /**
+ * @param Stmt[] $statements
+ */
+ private function cyclomaticComplexity(array $statements): int
+ {
+ $traverser = new NodeTraverser;
+
+ $cyclomaticComplexityCalculatingVisitor = new CyclomaticComplexityCalculatingVisitor;
+
+ $traverser->addVisitor($cyclomaticComplexityCalculatingVisitor);
+
+ /* @noinspection UnusedFunctionResultInspection */
+ $traverser->traverse($statements);
+
+ return $cyclomaticComplexityCalculatingVisitor->cyclomaticComplexity();
+ }
+
+ private function classMethodName(ClassMethod $node): string
+ {
+ $parent = $node->getAttribute('parent');
+
+ assert($parent instanceof Class_ || $parent instanceof Trait_);
+ assert(isset($parent->namespacedName));
+ assert($parent->namespacedName instanceof Name);
+
+ return $parent->namespacedName->toString() . '::' . $node->name->toString();
+ }
+
+ private function functionName(Function_ $node): string
+ {
+ assert(isset($node->namespacedName));
+ assert($node->namespacedName instanceof Name);
+
+ return $node->namespacedName->toString();
+ }
+}
diff --git a/vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php b/vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php
new file mode 100644
index 000000000..d4430876d
--- /dev/null
+++ b/vendor/sebastian/complexity/src/Visitor/CyclomaticComplexityCalculatingVisitor.php
@@ -0,0 +1,59 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/complexity.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Complexity;
+
+use function get_class;
+use PhpParser\Node;
+use PhpParser\Node\Expr\BinaryOp\BooleanAnd;
+use PhpParser\Node\Expr\BinaryOp\BooleanOr;
+use PhpParser\Node\Expr\BinaryOp\LogicalAnd;
+use PhpParser\Node\Expr\BinaryOp\LogicalOr;
+use PhpParser\Node\Expr\Ternary;
+use PhpParser\Node\Stmt\Case_;
+use PhpParser\Node\Stmt\Catch_;
+use PhpParser\Node\Stmt\ElseIf_;
+use PhpParser\Node\Stmt\For_;
+use PhpParser\Node\Stmt\Foreach_;
+use PhpParser\Node\Stmt\If_;
+use PhpParser\Node\Stmt\While_;
+use PhpParser\NodeVisitorAbstract;
+
+final class CyclomaticComplexityCalculatingVisitor extends NodeVisitorAbstract
+{
+ /**
+ * @var int
+ */
+ private $cyclomaticComplexity = 1;
+
+ public function enterNode(Node $node): void
+ {
+ /* @noinspection GetClassMissUseInspection */
+ switch (get_class($node)) {
+ case BooleanAnd::class:
+ case BooleanOr::class:
+ case Case_::class:
+ case Catch_::class:
+ case ElseIf_::class:
+ case For_::class:
+ case Foreach_::class:
+ case If_::class:
+ case LogicalAnd::class:
+ case LogicalOr::class:
+ case Ternary::class:
+ case While_::class:
+ $this->cyclomaticComplexity++;
+ }
+ }
+
+ public function cyclomaticComplexity(): int
+ {
+ return $this->cyclomaticComplexity;
+ }
+}
diff --git a/vendor/sebastian/diff/ChangeLog.md b/vendor/sebastian/diff/ChangeLog.md
new file mode 100644
index 000000000..9bdcc5b6d
--- /dev/null
+++ b/vendor/sebastian/diff/ChangeLog.md
@@ -0,0 +1,88 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [4.0.4] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\Diff\Exception` now correctly extends `\Throwable`
+
+## [4.0.3] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [4.0.2] - 2020-06-30
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [4.0.1] - 2020-05-08
+
+### Fixed
+
+* [#99](https://github.com/sebastianbergmann/diff/pull/99): Regression in unified diff output of identical strings
+
+## [4.0.0] - 2020-02-07
+
+### Removed
+
+* Removed support for PHP 7.1 and PHP 7.2
+
+## [3.0.2] - 2019-02-04
+
+### Changed
+
+* `Chunk::setLines()` now ensures that the `$lines` array only contains `Line` objects
+
+## [3.0.1] - 2018-06-10
+
+### Fixed
+
+* Removed `"minimum-stability": "dev",` from `composer.json`
+
+## [3.0.0] - 2018-02-01
+
+* The `StrictUnifiedDiffOutputBuilder` implementation of the `DiffOutputBuilderInterface` was added
+
+### Changed
+
+* The default `DiffOutputBuilderInterface` implementation now generates context lines (unchanged lines)
+
+### Removed
+
+* Removed support for PHP 7.0
+
+### Fixed
+
+* [#70](https://github.com/sebastianbergmann/diff/issues/70): Diffing of arrays no longer works
+
+## [2.0.1] - 2017-08-03
+
+### Fixed
+
+* [#66](https://github.com/sebastianbergmann/diff/pull/66): Restored backwards compatibility for PHPUnit 6.1.4, 6.2.0, 6.2.1, 6.2.2, and 6.2.3
+
+## [2.0.0] - 2017-07-11 [YANKED]
+
+### Added
+
+* [#64](https://github.com/sebastianbergmann/diff/pull/64): Show line numbers for chunks of a diff
+
+### Removed
+
+* This component is no longer supported on PHP 5.6
+
+[4.0.4]: https://github.com/sebastianbergmann/diff/compare/4.0.3...4.0.4
+[4.0.3]: https://github.com/sebastianbergmann/diff/compare/4.0.2...4.0.3
+[4.0.2]: https://github.com/sebastianbergmann/diff/compare/4.0.1...4.0.2
+[4.0.1]: https://github.com/sebastianbergmann/diff/compare/4.0.0...4.0.1
+[4.0.0]: https://github.com/sebastianbergmann/diff/compare/3.0.2...4.0.0
+[3.0.2]: https://github.com/sebastianbergmann/diff/compare/3.0.1...3.0.2
+[3.0.1]: https://github.com/sebastianbergmann/diff/compare/3.0.0...3.0.1
+[3.0.0]: https://github.com/sebastianbergmann/diff/compare/2.0...3.0.0
+[2.0.1]: https://github.com/sebastianbergmann/diff/compare/c341c98ce083db77f896a0aa64f5ee7652915970...2.0.1
+[2.0.0]: https://github.com/sebastianbergmann/diff/compare/1.4...c341c98ce083db77f896a0aa64f5ee7652915970
diff --git a/vendor/sebastian/diff/LICENSE b/vendor/sebastian/diff/LICENSE
new file mode 100644
index 000000000..f22f31cf0
--- /dev/null
+++ b/vendor/sebastian/diff/LICENSE
@@ -0,0 +1,33 @@
+sebastian/diff
+
+Copyright (c) 2002-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/diff/README.md b/vendor/sebastian/diff/README.md
new file mode 100644
index 000000000..734b852de
--- /dev/null
+++ b/vendor/sebastian/diff/README.md
@@ -0,0 +1,202 @@
+# sebastian/diff
+
+[![CI Status](https://github.com/sebastianbergmann/diff/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/diff/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/diff/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/diff)
+
+Diff implementation for PHP, factored out of PHPUnit into a stand-alone component.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/diff
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/diff
+```
+
+### Usage
+
+#### Generating diff
+
+The `Differ` class can be used to generate a textual representation of the difference between two strings:
+
+```php
+<?php
+use SebastianBergmann\Diff\Differ;
+
+$differ = new Differ;
+print $differ->diff('foo', 'bar');
+```
+
+The code above yields the output below:
+```diff
+--- Original
++++ New
+@@ @@
+-foo
++bar
+```
+
+There are three output builders available in this package:
+
+#### UnifiedDiffOutputBuilder
+
+This is default builder, which generates the output close to udiff and is used by PHPUnit.
+
+```php
+<?php
+
+use SebastianBergmann\Diff\Differ;
+use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder;
+
+$builder = new UnifiedDiffOutputBuilder(
+ "--- Original\n+++ New\n", // custom header
+ false // do not add line numbers to the diff
+);
+
+$differ = new Differ($builder);
+print $differ->diff('foo', 'bar');
+```
+
+#### StrictUnifiedDiffOutputBuilder
+
+Generates (strict) Unified diff's (unidiffs) with hunks,
+similar to `diff -u` and compatible with `patch` and `git apply`.
+
+```php
+<?php
+
+use SebastianBergmann\Diff\Differ;
+use SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder;
+
+$builder = new StrictUnifiedDiffOutputBuilder([
+ 'collapseRanges' => true, // ranges of length one are rendered with the trailing `,1`
+ 'commonLineThreshold' => 6, // number of same lines before ending a new hunk and creating a new one (if needed)
+ 'contextLines' => 3, // like `diff: -u, -U NUM, --unified[=NUM]`, for patch/git apply compatibility best to keep at least @ 3
+ 'fromFile' => null,
+ 'fromFileDate' => null,
+ 'toFile' => null,
+ 'toFileDate' => null,
+]);
+
+$differ = new Differ($builder);
+print $differ->diff('foo', 'bar');
+```
+
+#### DiffOnlyOutputBuilder
+
+Output only the lines that differ.
+
+```php
+<?php
+
+use SebastianBergmann\Diff\Differ;
+use SebastianBergmann\Diff\Output\DiffOnlyOutputBuilder;
+
+$builder = new DiffOnlyOutputBuilder(
+ "--- Original\n+++ New\n"
+);
+
+$differ = new Differ($builder);
+print $differ->diff('foo', 'bar');
+```
+
+#### DiffOutputBuilderInterface
+
+You can pass any output builder to the `Differ` class as longs as it implements the `DiffOutputBuilderInterface`.
+
+#### Parsing diff
+
+The `Parser` class can be used to parse a unified diff into an object graph:
+
+```php
+use SebastianBergmann\Diff\Parser;
+use SebastianBergmann\Git;
+
+$git = new Git('/usr/local/src/money');
+
+$diff = $git->getDiff(
+ '948a1a07768d8edd10dcefa8315c1cbeffb31833',
+ 'c07a373d2399f3e686234c4f7f088d635eb9641b'
+);
+
+$parser = new Parser;
+
+print_r($parser->parse($diff));
+```
+
+The code above yields the output below:
+
+ Array
+ (
+ [0] => SebastianBergmann\Diff\Diff Object
+ (
+ [from:SebastianBergmann\Diff\Diff:private] => a/tests/MoneyTest.php
+ [to:SebastianBergmann\Diff\Diff:private] => b/tests/MoneyTest.php
+ [chunks:SebastianBergmann\Diff\Diff:private] => Array
+ (
+ [0] => SebastianBergmann\Diff\Chunk Object
+ (
+ [start:SebastianBergmann\Diff\Chunk:private] => 87
+ [startRange:SebastianBergmann\Diff\Chunk:private] => 7
+ [end:SebastianBergmann\Diff\Chunk:private] => 87
+ [endRange:SebastianBergmann\Diff\Chunk:private] => 7
+ [lines:SebastianBergmann\Diff\Chunk:private] => Array
+ (
+ [0] => SebastianBergmann\Diff\Line Object
+ (
+ [type:SebastianBergmann\Diff\Line:private] => 3
+ [content:SebastianBergmann\Diff\Line:private] => * @covers SebastianBergmann\Money\Money::add
+ )
+
+ [1] => SebastianBergmann\Diff\Line Object
+ (
+ [type:SebastianBergmann\Diff\Line:private] => 3
+ [content:SebastianBergmann\Diff\Line:private] => * @covers SebastianBergmann\Money\Money::newMoney
+ )
+
+ [2] => SebastianBergmann\Diff\Line Object
+ (
+ [type:SebastianBergmann\Diff\Line:private] => 3
+ [content:SebastianBergmann\Diff\Line:private] => */
+ )
+
+ [3] => SebastianBergmann\Diff\Line Object
+ (
+ [type:SebastianBergmann\Diff\Line:private] => 2
+ [content:SebastianBergmann\Diff\Line:private] => public function testAnotherMoneyWithSameCurrencyObjectCanBeAdded()
+ )
+
+ [4] => SebastianBergmann\Diff\Line Object
+ (
+ [type:SebastianBergmann\Diff\Line:private] => 1
+ [content:SebastianBergmann\Diff\Line:private] => public function testAnotherMoneyObjectWithSameCurrencyCanBeAdded()
+ )
+
+ [5] => SebastianBergmann\Diff\Line Object
+ (
+ [type:SebastianBergmann\Diff\Line:private] => 3
+ [content:SebastianBergmann\Diff\Line:private] => {
+ )
+
+ [6] => SebastianBergmann\Diff\Line Object
+ (
+ [type:SebastianBergmann\Diff\Line:private] => 3
+ [content:SebastianBergmann\Diff\Line:private] => $a = new Money(1, new Currency('EUR'));
+ )
+
+ [7] => SebastianBergmann\Diff\Line Object
+ (
+ [type:SebastianBergmann\Diff\Line:private] => 3
+ [content:SebastianBergmann\Diff\Line:private] => $b = new Money(2, new Currency('EUR'));
+ )
+ )
+ )
+ )
+ )
+ )
diff --git a/vendor/sebastian/diff/composer.json b/vendor/sebastian/diff/composer.json
new file mode 100644
index 000000000..cf92202ba
--- /dev/null
+++ b/vendor/sebastian/diff/composer.json
@@ -0,0 +1,47 @@
+{
+ "name": "sebastian/diff",
+ "description": "Diff implementation",
+ "keywords": ["diff", "udiff", "unidiff", "unified diff"],
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "[email protected]"
+ }
+ ],
+ "prefer-stable": true,
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/diff/src/Chunk.php b/vendor/sebastian/diff/src/Chunk.php
new file mode 100644
index 000000000..16ae34f41
--- /dev/null
+++ b/vendor/sebastian/diff/src/Chunk.php
@@ -0,0 +1,89 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+final class Chunk
+{
+ /**
+ * @var int
+ */
+ private $start;
+
+ /**
+ * @var int
+ */
+ private $startRange;
+
+ /**
+ * @var int
+ */
+ private $end;
+
+ /**
+ * @var int
+ */
+ private $endRange;
+
+ /**
+ * @var Line[]
+ */
+ private $lines;
+
+ public function __construct(int $start = 0, int $startRange = 1, int $end = 0, int $endRange = 1, array $lines = [])
+ {
+ $this->start = $start;
+ $this->startRange = $startRange;
+ $this->end = $end;
+ $this->endRange = $endRange;
+ $this->lines = $lines;
+ }
+
+ public function getStart(): int
+ {
+ return $this->start;
+ }
+
+ public function getStartRange(): int
+ {
+ return $this->startRange;
+ }
+
+ public function getEnd(): int
+ {
+ return $this->end;
+ }
+
+ public function getEndRange(): int
+ {
+ return $this->endRange;
+ }
+
+ /**
+ * @return Line[]
+ */
+ public function getLines(): array
+ {
+ return $this->lines;
+ }
+
+ /**
+ * @param Line[] $lines
+ */
+ public function setLines(array $lines): void
+ {
+ foreach ($lines as $line) {
+ if (!$line instanceof Line) {
+ throw new InvalidArgumentException;
+ }
+ }
+
+ $this->lines = $lines;
+ }
+}
diff --git a/vendor/sebastian/diff/src/Diff.php b/vendor/sebastian/diff/src/Diff.php
new file mode 100644
index 000000000..17b2084f9
--- /dev/null
+++ b/vendor/sebastian/diff/src/Diff.php
@@ -0,0 +1,64 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+final class Diff
+{
+ /**
+ * @var string
+ */
+ private $from;
+
+ /**
+ * @var string
+ */
+ private $to;
+
+ /**
+ * @var Chunk[]
+ */
+ private $chunks;
+
+ /**
+ * @param Chunk[] $chunks
+ */
+ public function __construct(string $from, string $to, array $chunks = [])
+ {
+ $this->from = $from;
+ $this->to = $to;
+ $this->chunks = $chunks;
+ }
+
+ public function getFrom(): string
+ {
+ return $this->from;
+ }
+
+ public function getTo(): string
+ {
+ return $this->to;
+ }
+
+ /**
+ * @return Chunk[]
+ */
+ public function getChunks(): array
+ {
+ return $this->chunks;
+ }
+
+ /**
+ * @param Chunk[] $chunks
+ */
+ public function setChunks(array $chunks): void
+ {
+ $this->chunks = $chunks;
+ }
+}
diff --git a/vendor/sebastian/diff/src/Differ.php b/vendor/sebastian/diff/src/Differ.php
new file mode 100644
index 000000000..5a4d9d102
--- /dev/null
+++ b/vendor/sebastian/diff/src/Differ.php
@@ -0,0 +1,327 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+use const PHP_INT_SIZE;
+use const PREG_SPLIT_DELIM_CAPTURE;
+use const PREG_SPLIT_NO_EMPTY;
+use function array_shift;
+use function array_unshift;
+use function array_values;
+use function count;
+use function current;
+use function end;
+use function get_class;
+use function gettype;
+use function is_array;
+use function is_object;
+use function is_string;
+use function key;
+use function min;
+use function preg_split;
+use function prev;
+use function reset;
+use function sprintf;
+use function substr;
+use SebastianBergmann\Diff\Output\DiffOutputBuilderInterface;
+use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder;
+
+final class Differ
+{
+ public const OLD = 0;
+
+ public const ADDED = 1;
+
+ public const REMOVED = 2;
+
+ public const DIFF_LINE_END_WARNING = 3;
+
+ public const NO_LINE_END_EOF_WARNING = 4;
+
+ /**
+ * @var DiffOutputBuilderInterface
+ */
+ private $outputBuilder;
+
+ /**
+ * @param DiffOutputBuilderInterface $outputBuilder
+ *
+ * @throws InvalidArgumentException
+ */
+ public function __construct($outputBuilder = null)
+ {
+ if ($outputBuilder instanceof DiffOutputBuilderInterface) {
+ $this->outputBuilder = $outputBuilder;
+ } elseif (null === $outputBuilder) {
+ $this->outputBuilder = new UnifiedDiffOutputBuilder;
+ } elseif (is_string($outputBuilder)) {
+ // PHPUnit 6.1.4, 6.2.0, 6.2.1, 6.2.2, and 6.2.3 support
+ // @see https://github.com/sebastianbergmann/phpunit/issues/2734#issuecomment-314514056
+ // @deprecated
+ $this->outputBuilder = new UnifiedDiffOutputBuilder($outputBuilder);
+ } else {
+ throw new InvalidArgumentException(
+ sprintf(
+ 'Expected builder to be an instance of DiffOutputBuilderInterface, <null> or a string, got %s.',
+ is_object($outputBuilder) ? 'instance of "' . get_class($outputBuilder) . '"' : gettype($outputBuilder) . ' "' . $outputBuilder . '"'
+ )
+ );
+ }
+ }
+
+ /**
+ * Returns the diff between two arrays or strings as string.
+ *
+ * @param array|string $from
+ * @param array|string $to
+ */
+ public function diff($from, $to, LongestCommonSubsequenceCalculator $lcs = null): string
+ {
+ $diff = $this->diffToArray(
+ $this->normalizeDiffInput($from),
+ $this->normalizeDiffInput($to),
+ $lcs
+ );
+
+ return $this->outputBuilder->getDiff($diff);
+ }
+
+ /**
+ * Returns the diff between two arrays or strings as array.
+ *
+ * Each array element contains two elements:
+ * - [0] => mixed $token
+ * - [1] => 2|1|0
+ *
+ * - 2: REMOVED: $token was removed from $from
+ * - 1: ADDED: $token was added to $from
+ * - 0: OLD: $token is not changed in $to
+ *
+ * @param array|string $from
+ * @param array|string $to
+ * @param LongestCommonSubsequenceCalculator $lcs
+ */
+ public function diffToArray($from, $to, LongestCommonSubsequenceCalculator $lcs = null): array
+ {
+ if (is_string($from)) {
+ $from = $this->splitStringByLines($from);
+ } elseif (!is_array($from)) {
+ throw new InvalidArgumentException('"from" must be an array or string.');
+ }
+
+ if (is_string($to)) {
+ $to = $this->splitStringByLines($to);
+ } elseif (!is_array($to)) {
+ throw new InvalidArgumentException('"to" must be an array or string.');
+ }
+
+ [$from, $to, $start, $end] = self::getArrayDiffParted($from, $to);
+
+ if ($lcs === null) {
+ $lcs = $this->selectLcsImplementation($from, $to);
+ }
+
+ $common = $lcs->calculate(array_values($from), array_values($to));
+ $diff = [];
+
+ foreach ($start as $token) {
+ $diff[] = [$token, self::OLD];
+ }
+
+ reset($from);
+ reset($to);
+
+ foreach ($common as $token) {
+ while (($fromToken = reset($from)) !== $token) {
+ $diff[] = [array_shift($from), self::REMOVED];
+ }
+
+ while (($toToken = reset($to)) !== $token) {
+ $diff[] = [array_shift($to), self::ADDED];
+ }
+
+ $diff[] = [$token, self::OLD];
+
+ array_shift($from);
+ array_shift($to);
+ }
+
+ while (($token = array_shift($from)) !== null) {
+ $diff[] = [$token, self::REMOVED];
+ }
+
+ while (($token = array_shift($to)) !== null) {
+ $diff[] = [$token, self::ADDED];
+ }
+
+ foreach ($end as $token) {
+ $diff[] = [$token, self::OLD];
+ }
+
+ if ($this->detectUnmatchedLineEndings($diff)) {
+ array_unshift($diff, ["#Warning: Strings contain different line endings!\n", self::DIFF_LINE_END_WARNING]);
+ }
+
+ return $diff;
+ }
+
+ /**
+ * Casts variable to string if it is not a string or array.
+ *
+ * @return array|string
+ */
+ private function normalizeDiffInput($input)
+ {
+ if (!is_array($input) && !is_string($input)) {
+ return (string) $input;
+ }
+
+ return $input;
+ }
+
+ /**
+ * Checks if input is string, if so it will split it line-by-line.
+ */
+ private function splitStringByLines(string $input): array
+ {
+ return preg_split('/(.*\R)/', $input, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
+ }
+
+ private function selectLcsImplementation(array $from, array $to): LongestCommonSubsequenceCalculator
+ {
+ // We do not want to use the time-efficient implementation if its memory
+ // footprint will probably exceed this value. Note that the footprint
+ // calculation is only an estimation for the matrix and the LCS method
+ // will typically allocate a bit more memory than this.
+ $memoryLimit = 100 * 1024 * 1024;
+
+ if ($this->calculateEstimatedFootprint($from, $to) > $memoryLimit) {
+ return new MemoryEfficientLongestCommonSubsequenceCalculator;
+ }
+
+ return new TimeEfficientLongestCommonSubsequenceCalculator;
+ }
+
+ /**
+ * Calculates the estimated memory footprint for the DP-based method.
+ *
+ * @return float|int
+ */
+ private function calculateEstimatedFootprint(array $from, array $to)
+ {
+ $itemSize = PHP_INT_SIZE === 4 ? 76 : 144;
+
+ return $itemSize * min(count($from), count($to)) ** 2;
+ }
+
+ /**
+ * Returns true if line ends don't match in a diff.
+ */
+ private function detectUnmatchedLineEndings(array $diff): bool
+ {
+ $newLineBreaks = ['' => true];
+ $oldLineBreaks = ['' => true];
+
+ foreach ($diff as $entry) {
+ if (self::OLD === $entry[1]) {
+ $ln = $this->getLinebreak($entry[0]);
+ $oldLineBreaks[$ln] = true;
+ $newLineBreaks[$ln] = true;
+ } elseif (self::ADDED === $entry[1]) {
+ $newLineBreaks[$this->getLinebreak($entry[0])] = true;
+ } elseif (self::REMOVED === $entry[1]) {
+ $oldLineBreaks[$this->getLinebreak($entry[0])] = true;
+ }
+ }
+
+ // if either input or output is a single line without breaks than no warning should be raised
+ if (['' => true] === $newLineBreaks || ['' => true] === $oldLineBreaks) {
+ return false;
+ }
+
+ // two way compare
+ foreach ($newLineBreaks as $break => $set) {
+ if (!isset($oldLineBreaks[$break])) {
+ return true;
+ }
+ }
+
+ foreach ($oldLineBreaks as $break => $set) {
+ if (!isset($newLineBreaks[$break])) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private function getLinebreak($line): string
+ {
+ if (!is_string($line)) {
+ return '';
+ }
+
+ $lc = substr($line, -1);
+
+ if ("\r" === $lc) {
+ return "\r";
+ }
+
+ if ("\n" !== $lc) {
+ return '';
+ }
+
+ if ("\r\n" === substr($line, -2)) {
+ return "\r\n";
+ }
+
+ return "\n";
+ }
+
+ private static function getArrayDiffParted(array &$from, array &$to): array
+ {
+ $start = [];
+ $end = [];
+
+ reset($to);
+
+ foreach ($from as $k => $v) {
+ $toK = key($to);
+
+ if ($toK === $k && $v === $to[$k]) {
+ $start[$k] = $v;
+
+ unset($from[$k], $to[$k]);
+ } else {
+ break;
+ }
+ }
+
+ end($from);
+ end($to);
+
+ do {
+ $fromK = key($from);
+ $toK = key($to);
+
+ if (null === $fromK || null === $toK || current($from) !== current($to)) {
+ break;
+ }
+
+ prev($from);
+ prev($to);
+
+ $end = [$fromK => $from[$fromK]] + $end;
+ unset($from[$fromK], $to[$toK]);
+ } while (true);
+
+ return [$from, $to, $start, $end];
+ }
+}
diff --git a/vendor/sebastian/diff/src/Exception/ConfigurationException.php b/vendor/sebastian/diff/src/Exception/ConfigurationException.php
new file mode 100644
index 000000000..b767b2194
--- /dev/null
+++ b/vendor/sebastian/diff/src/Exception/ConfigurationException.php
@@ -0,0 +1,38 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+use function get_class;
+use function gettype;
+use function is_object;
+use function sprintf;
+use Exception;
+
+final class ConfigurationException extends InvalidArgumentException
+{
+ public function __construct(
+ string $option,
+ string $expected,
+ $value,
+ int $code = 0,
+ Exception $previous = null
+ ) {
+ parent::__construct(
+ sprintf(
+ 'Option "%s" must be %s, got "%s".',
+ $option,
+ $expected,
+ is_object($value) ? get_class($value) : (null === $value ? '<null>' : gettype($value) . '#' . $value)
+ ),
+ $code,
+ $previous
+ );
+ }
+}
diff --git a/vendor/sebastian/diff/src/Exception/Exception.php b/vendor/sebastian/diff/src/Exception/Exception.php
new file mode 100644
index 000000000..e20d32036
--- /dev/null
+++ b/vendor/sebastian/diff/src/Exception/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/diff/src/Exception/InvalidArgumentException.php b/vendor/sebastian/diff/src/Exception/InvalidArgumentException.php
new file mode 100644
index 000000000..846ac3fbd
--- /dev/null
+++ b/vendor/sebastian/diff/src/Exception/InvalidArgumentException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+class InvalidArgumentException extends \InvalidArgumentException implements Exception
+{
+}
diff --git a/vendor/sebastian/diff/src/Line.php b/vendor/sebastian/diff/src/Line.php
new file mode 100644
index 000000000..3596ed264
--- /dev/null
+++ b/vendor/sebastian/diff/src/Line.php
@@ -0,0 +1,45 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+final class Line
+{
+ public const ADDED = 1;
+
+ public const REMOVED = 2;
+
+ public const UNCHANGED = 3;
+
+ /**
+ * @var int
+ */
+ private $type;
+
+ /**
+ * @var string
+ */
+ private $content;
+
+ public function __construct(int $type = self::UNCHANGED, string $content = '')
+ {
+ $this->type = $type;
+ $this->content = $content;
+ }
+
+ public function getContent(): string
+ {
+ return $this->content;
+ }
+
+ public function getType(): int
+ {
+ return $this->type;
+ }
+}
diff --git a/vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php b/vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php
new file mode 100644
index 000000000..dea8fe1cb
--- /dev/null
+++ b/vendor/sebastian/diff/src/LongestCommonSubsequenceCalculator.php
@@ -0,0 +1,18 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+interface LongestCommonSubsequenceCalculator
+{
+ /**
+ * Calculates the longest common subsequence of two arrays.
+ */
+ public function calculate(array $from, array $to): array;
+}
diff --git a/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php b/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php
new file mode 100644
index 000000000..0b626eaff
--- /dev/null
+++ b/vendor/sebastian/diff/src/MemoryEfficientLongestCommonSubsequenceCalculator.php
@@ -0,0 +1,88 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+use function array_fill;
+use function array_merge;
+use function array_reverse;
+use function array_slice;
+use function count;
+use function in_array;
+use function max;
+
+final class MemoryEfficientLongestCommonSubsequenceCalculator implements LongestCommonSubsequenceCalculator
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function calculate(array $from, array $to): array
+ {
+ $cFrom = count($from);
+ $cTo = count($to);
+
+ if ($cFrom === 0) {
+ return [];
+ }
+
+ if ($cFrom === 1) {
+ if (in_array($from[0], $to, true)) {
+ return [$from[0]];
+ }
+
+ return [];
+ }
+
+ $i = (int) ($cFrom / 2);
+ $fromStart = array_slice($from, 0, $i);
+ $fromEnd = array_slice($from, $i);
+ $llB = $this->length($fromStart, $to);
+ $llE = $this->length(array_reverse($fromEnd), array_reverse($to));
+ $jMax = 0;
+ $max = 0;
+
+ for ($j = 0; $j <= $cTo; $j++) {
+ $m = $llB[$j] + $llE[$cTo - $j];
+
+ if ($m >= $max) {
+ $max = $m;
+ $jMax = $j;
+ }
+ }
+
+ $toStart = array_slice($to, 0, $jMax);
+ $toEnd = array_slice($to, $jMax);
+
+ return array_merge(
+ $this->calculate($fromStart, $toStart),
+ $this->calculate($fromEnd, $toEnd)
+ );
+ }
+
+ private function length(array $from, array $to): array
+ {
+ $current = array_fill(0, count($to) + 1, 0);
+ $cFrom = count($from);
+ $cTo = count($to);
+
+ for ($i = 0; $i < $cFrom; $i++) {
+ $prev = $current;
+
+ for ($j = 0; $j < $cTo; $j++) {
+ if ($from[$i] === $to[$j]) {
+ $current[$j + 1] = $prev[$j] + 1;
+ } else {
+ $current[$j + 1] = max($current[$j], $prev[$j + 1]);
+ }
+ }
+ }
+
+ return $current;
+ }
+}
diff --git a/vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php b/vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php
new file mode 100644
index 000000000..e55757c38
--- /dev/null
+++ b/vendor/sebastian/diff/src/Output/AbstractChunkOutputBuilder.php
@@ -0,0 +1,52 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff\Output;
+
+use function count;
+
+abstract class AbstractChunkOutputBuilder implements DiffOutputBuilderInterface
+{
+ /**
+ * Takes input of the diff array and returns the common parts.
+ * Iterates through diff line by line.
+ */
+ protected function getCommonChunks(array $diff, int $lineThreshold = 5): array
+ {
+ $diffSize = count($diff);
+ $capturing = false;
+ $chunkStart = 0;
+ $chunkSize = 0;
+ $commonChunks = [];
+
+ for ($i = 0; $i < $diffSize; ++$i) {
+ if ($diff[$i][1] === 0 /* OLD */) {
+ if ($capturing === false) {
+ $capturing = true;
+ $chunkStart = $i;
+ $chunkSize = 0;
+ } else {
+ ++$chunkSize;
+ }
+ } elseif ($capturing !== false) {
+ if ($chunkSize >= $lineThreshold) {
+ $commonChunks[$chunkStart] = $chunkStart + $chunkSize;
+ }
+
+ $capturing = false;
+ }
+ }
+
+ if ($capturing !== false && $chunkSize >= $lineThreshold) {
+ $commonChunks[$chunkStart] = $chunkStart + $chunkSize;
+ }
+
+ return $commonChunks;
+ }
+}
diff --git a/vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php b/vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php
new file mode 100644
index 000000000..f79a935cb
--- /dev/null
+++ b/vendor/sebastian/diff/src/Output/DiffOnlyOutputBuilder.php
@@ -0,0 +1,72 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff\Output;
+
+use function fclose;
+use function fopen;
+use function fwrite;
+use function stream_get_contents;
+use function substr;
+use SebastianBergmann\Diff\Differ;
+
+/**
+ * Builds a diff string representation in a loose unified diff format
+ * listing only changes lines. Does not include line numbers.
+ */
+final class DiffOnlyOutputBuilder implements DiffOutputBuilderInterface
+{
+ /**
+ * @var string
+ */
+ private $header;
+
+ public function __construct(string $header = "--- Original\n+++ New\n")
+ {
+ $this->header = $header;
+ }
+
+ public function getDiff(array $diff): string
+ {
+ $buffer = fopen('php://memory', 'r+b');
+
+ if ('' !== $this->header) {
+ fwrite($buffer, $this->header);
+
+ if ("\n" !== substr($this->header, -1, 1)) {
+ fwrite($buffer, "\n");
+ }
+ }
+
+ foreach ($diff as $diffEntry) {
+ if ($diffEntry[1] === Differ::ADDED) {
+ fwrite($buffer, '+' . $diffEntry[0]);
+ } elseif ($diffEntry[1] === Differ::REMOVED) {
+ fwrite($buffer, '-' . $diffEntry[0]);
+ } elseif ($diffEntry[1] === Differ::DIFF_LINE_END_WARNING) {
+ fwrite($buffer, ' ' . $diffEntry[0]);
+
+ continue; // Warnings should not be tested for line break, it will always be there
+ } else { /* Not changed (old) 0 */
+ continue; // we didn't write the non changs line, so do not add a line break either
+ }
+
+ $lc = substr($diffEntry[0], -1);
+
+ if ($lc !== "\n" && $lc !== "\r") {
+ fwrite($buffer, "\n"); // \No newline at end of file
+ }
+ }
+
+ $diff = stream_get_contents($buffer, -1, 0);
+ fclose($buffer);
+
+ return $diff;
+ }
+}
diff --git a/vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php b/vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php
new file mode 100644
index 000000000..0e18f9f2e
--- /dev/null
+++ b/vendor/sebastian/diff/src/Output/DiffOutputBuilderInterface.php
@@ -0,0 +1,19 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff\Output;
+
+/**
+ * Defines how an output builder should take a generated
+ * diff array and return a string representation of that diff.
+ */
+interface DiffOutputBuilderInterface
+{
+ public function getDiff(array $diff): string;
+}
diff --git a/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php b/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php
new file mode 100644
index 000000000..9c55ab2aa
--- /dev/null
+++ b/vendor/sebastian/diff/src/Output/StrictUnifiedDiffOutputBuilder.php
@@ -0,0 +1,338 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff\Output;
+
+use function array_merge;
+use function array_splice;
+use function count;
+use function fclose;
+use function fopen;
+use function fwrite;
+use function is_bool;
+use function is_int;
+use function is_string;
+use function max;
+use function min;
+use function sprintf;
+use function stream_get_contents;
+use function substr;
+use SebastianBergmann\Diff\ConfigurationException;
+use SebastianBergmann\Diff\Differ;
+
+/**
+ * Strict Unified diff output builder.
+ *
+ * Generates (strict) Unified diff's (unidiffs) with hunks.
+ */
+final class StrictUnifiedDiffOutputBuilder implements DiffOutputBuilderInterface
+{
+ private static $default = [
+ 'collapseRanges' => true, // ranges of length one are rendered with the trailing `,1`
+ 'commonLineThreshold' => 6, // number of same lines before ending a new hunk and creating a new one (if needed)
+ 'contextLines' => 3, // like `diff: -u, -U NUM, --unified[=NUM]`, for patch/git apply compatibility best to keep at least @ 3
+ 'fromFile' => null,
+ 'fromFileDate' => null,
+ 'toFile' => null,
+ 'toFileDate' => null,
+ ];
+
+ /**
+ * @var bool
+ */
+ private $changed;
+
+ /**
+ * @var bool
+ */
+ private $collapseRanges;
+
+ /**
+ * @var int >= 0
+ */
+ private $commonLineThreshold;
+
+ /**
+ * @var string
+ */
+ private $header;
+
+ /**
+ * @var int >= 0
+ */
+ private $contextLines;
+
+ public function __construct(array $options = [])
+ {
+ $options = array_merge(self::$default, $options);
+
+ if (!is_bool($options['collapseRanges'])) {
+ throw new ConfigurationException('collapseRanges', 'a bool', $options['collapseRanges']);
+ }
+
+ if (!is_int($options['contextLines']) || $options['contextLines'] < 0) {
+ throw new ConfigurationException('contextLines', 'an int >= 0', $options['contextLines']);
+ }
+
+ if (!is_int($options['commonLineThreshold']) || $options['commonLineThreshold'] <= 0) {
+ throw new ConfigurationException('commonLineThreshold', 'an int > 0', $options['commonLineThreshold']);
+ }
+
+ $this->assertString($options, 'fromFile');
+ $this->assertString($options, 'toFile');
+ $this->assertStringOrNull($options, 'fromFileDate');
+ $this->assertStringOrNull($options, 'toFileDate');
+
+ $this->header = sprintf(
+ "--- %s%s\n+++ %s%s\n",
+ $options['fromFile'],
+ null === $options['fromFileDate'] ? '' : "\t" . $options['fromFileDate'],
+ $options['toFile'],
+ null === $options['toFileDate'] ? '' : "\t" . $options['toFileDate']
+ );
+
+ $this->collapseRanges = $options['collapseRanges'];
+ $this->commonLineThreshold = $options['commonLineThreshold'];
+ $this->contextLines = $options['contextLines'];
+ }
+
+ public function getDiff(array $diff): string
+ {
+ if (0 === count($diff)) {
+ return '';
+ }
+
+ $this->changed = false;
+
+ $buffer = fopen('php://memory', 'r+b');
+ fwrite($buffer, $this->header);
+
+ $this->writeDiffHunks($buffer, $diff);
+
+ if (!$this->changed) {
+ fclose($buffer);
+
+ return '';
+ }
+
+ $diff = stream_get_contents($buffer, -1, 0);
+
+ fclose($buffer);
+
+ // If the last char is not a linebreak: add it.
+ // This might happen when both the `from` and `to` do not have a trailing linebreak
+ $last = substr($diff, -1);
+
+ return "\n" !== $last && "\r" !== $last
+ ? $diff . "\n"
+ : $diff;
+ }
+
+ private function writeDiffHunks($output, array $diff): void
+ {
+ // detect "No newline at end of file" and insert into `$diff` if needed
+
+ $upperLimit = count($diff);
+
+ if (0 === $diff[$upperLimit - 1][1]) {
+ $lc = substr($diff[$upperLimit - 1][0], -1);
+
+ if ("\n" !== $lc) {
+ array_splice($diff, $upperLimit, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]);
+ }
+ } else {
+ // search back for the last `+` and `-` line,
+ // check if has trailing linebreak, else add under it warning under it
+ $toFind = [1 => true, 2 => true];
+
+ for ($i = $upperLimit - 1; $i >= 0; --$i) {
+ if (isset($toFind[$diff[$i][1]])) {
+ unset($toFind[$diff[$i][1]]);
+ $lc = substr($diff[$i][0], -1);
+
+ if ("\n" !== $lc) {
+ array_splice($diff, $i + 1, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]);
+ }
+
+ if (!count($toFind)) {
+ break;
+ }
+ }
+ }
+ }
+
+ // write hunks to output buffer
+
+ $cutOff = max($this->commonLineThreshold, $this->contextLines);
+ $hunkCapture = false;
+ $sameCount = $toRange = $fromRange = 0;
+ $toStart = $fromStart = 1;
+ $i = 0;
+
+ /** @var int $i */
+ foreach ($diff as $i => $entry) {
+ if (0 === $entry[1]) { // same
+ if (false === $hunkCapture) {
+ ++$fromStart;
+ ++$toStart;
+
+ continue;
+ }
+
+ ++$sameCount;
+ ++$toRange;
+ ++$fromRange;
+
+ if ($sameCount === $cutOff) {
+ $contextStartOffset = ($hunkCapture - $this->contextLines) < 0
+ ? $hunkCapture
+ : $this->contextLines;
+
+ // note: $contextEndOffset = $this->contextLines;
+ //
+ // because we never go beyond the end of the diff.
+ // with the cutoff/contextlines here the follow is never true;
+ //
+ // if ($i - $cutOff + $this->contextLines + 1 > \count($diff)) {
+ // $contextEndOffset = count($diff) - 1;
+ // }
+ //
+ // ; that would be true for a trailing incomplete hunk case which is dealt with after this loop
+
+ $this->writeHunk(
+ $diff,
+ $hunkCapture - $contextStartOffset,
+ $i - $cutOff + $this->contextLines + 1,
+ $fromStart - $contextStartOffset,
+ $fromRange - $cutOff + $contextStartOffset + $this->contextLines,
+ $toStart - $contextStartOffset,
+ $toRange - $cutOff + $contextStartOffset + $this->contextLines,
+ $output
+ );
+
+ $fromStart += $fromRange;
+ $toStart += $toRange;
+
+ $hunkCapture = false;
+ $sameCount = $toRange = $fromRange = 0;
+ }
+
+ continue;
+ }
+
+ $sameCount = 0;
+
+ if ($entry[1] === Differ::NO_LINE_END_EOF_WARNING) {
+ continue;
+ }
+
+ $this->changed = true;
+
+ if (false === $hunkCapture) {
+ $hunkCapture = $i;
+ }
+
+ if (Differ::ADDED === $entry[1]) { // added
+ ++$toRange;
+ }
+
+ if (Differ::REMOVED === $entry[1]) { // removed
+ ++$fromRange;
+ }
+ }
+
+ if (false === $hunkCapture) {
+ return;
+ }
+
+ // we end here when cutoff (commonLineThreshold) was not reached, but we where capturing a hunk,
+ // do not render hunk till end automatically because the number of context lines might be less than the commonLineThreshold
+
+ $contextStartOffset = $hunkCapture - $this->contextLines < 0
+ ? $hunkCapture
+ : $this->contextLines;
+
+ // prevent trying to write out more common lines than there are in the diff _and_
+ // do not write more than configured through the context lines
+ $contextEndOffset = min($sameCount, $this->contextLines);
+
+ $fromRange -= $sameCount;
+ $toRange -= $sameCount;
+
+ $this->writeHunk(
+ $diff,
+ $hunkCapture - $contextStartOffset,
+ $i - $sameCount + $contextEndOffset + 1,
+ $fromStart - $contextStartOffset,
+ $fromRange + $contextStartOffset + $contextEndOffset,
+ $toStart - $contextStartOffset,
+ $toRange + $contextStartOffset + $contextEndOffset,
+ $output
+ );
+ }
+
+ private function writeHunk(
+ array $diff,
+ int $diffStartIndex,
+ int $diffEndIndex,
+ int $fromStart,
+ int $fromRange,
+ int $toStart,
+ int $toRange,
+ $output
+ ): void {
+ fwrite($output, '@@ -' . $fromStart);
+
+ if (!$this->collapseRanges || 1 !== $fromRange) {
+ fwrite($output, ',' . $fromRange);
+ }
+
+ fwrite($output, ' +' . $toStart);
+
+ if (!$this->collapseRanges || 1 !== $toRange) {
+ fwrite($output, ',' . $toRange);
+ }
+
+ fwrite($output, " @@\n");
+
+ for ($i = $diffStartIndex; $i < $diffEndIndex; ++$i) {
+ if ($diff[$i][1] === Differ::ADDED) {
+ $this->changed = true;
+ fwrite($output, '+' . $diff[$i][0]);
+ } elseif ($diff[$i][1] === Differ::REMOVED) {
+ $this->changed = true;
+ fwrite($output, '-' . $diff[$i][0]);
+ } elseif ($diff[$i][1] === Differ::OLD) {
+ fwrite($output, ' ' . $diff[$i][0]);
+ } elseif ($diff[$i][1] === Differ::NO_LINE_END_EOF_WARNING) {
+ $this->changed = true;
+ fwrite($output, $diff[$i][0]);
+ }
+ //} elseif ($diff[$i][1] === Differ::DIFF_LINE_END_WARNING) { // custom comment inserted by PHPUnit/diff package
+ // skip
+ //} else {
+ // unknown/invalid
+ //}
+ }
+ }
+
+ private function assertString(array $options, string $option): void
+ {
+ if (!is_string($options[$option])) {
+ throw new ConfigurationException($option, 'a string', $options[$option]);
+ }
+ }
+
+ private function assertStringOrNull(array $options, string $option): void
+ {
+ if (null !== $options[$option] && !is_string($options[$option])) {
+ throw new ConfigurationException($option, 'a string or <null>', $options[$option]);
+ }
+ }
+}
diff --git a/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php b/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php
new file mode 100644
index 000000000..8aae64504
--- /dev/null
+++ b/vendor/sebastian/diff/src/Output/UnifiedDiffOutputBuilder.php
@@ -0,0 +1,272 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff\Output;
+
+use function array_splice;
+use function count;
+use function fclose;
+use function fopen;
+use function fwrite;
+use function max;
+use function min;
+use function stream_get_contents;
+use function strlen;
+use function substr;
+use SebastianBergmann\Diff\Differ;
+
+/**
+ * Builds a diff string representation in unified diff format in chunks.
+ */
+final class UnifiedDiffOutputBuilder extends AbstractChunkOutputBuilder
+{
+ /**
+ * @var bool
+ */
+ private $collapseRanges = true;
+
+ /**
+ * @var int >= 0
+ */
+ private $commonLineThreshold = 6;
+
+ /**
+ * @var int >= 0
+ */
+ private $contextLines = 3;
+
+ /**
+ * @var string
+ */
+ private $header;
+
+ /**
+ * @var bool
+ */
+ private $addLineNumbers;
+
+ public function __construct(string $header = "--- Original\n+++ New\n", bool $addLineNumbers = false)
+ {
+ $this->header = $header;
+ $this->addLineNumbers = $addLineNumbers;
+ }
+
+ public function getDiff(array $diff): string
+ {
+ $buffer = fopen('php://memory', 'r+b');
+
+ if ('' !== $this->header) {
+ fwrite($buffer, $this->header);
+
+ if ("\n" !== substr($this->header, -1, 1)) {
+ fwrite($buffer, "\n");
+ }
+ }
+
+ if (0 !== count($diff)) {
+ $this->writeDiffHunks($buffer, $diff);
+ }
+
+ $diff = stream_get_contents($buffer, -1, 0);
+
+ fclose($buffer);
+
+ // If the diff is non-empty and last char is not a linebreak: add it.
+ // This might happen when both the `from` and `to` do not have a trailing linebreak
+ $last = substr($diff, -1);
+
+ return 0 !== strlen($diff) && "\n" !== $last && "\r" !== $last
+ ? $diff . "\n"
+ : $diff;
+ }
+
+ private function writeDiffHunks($output, array $diff): void
+ {
+ // detect "No newline at end of file" and insert into `$diff` if needed
+
+ $upperLimit = count($diff);
+
+ if (0 === $diff[$upperLimit - 1][1]) {
+ $lc = substr($diff[$upperLimit - 1][0], -1);
+
+ if ("\n" !== $lc) {
+ array_splice($diff, $upperLimit, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]);
+ }
+ } else {
+ // search back for the last `+` and `-` line,
+ // check if has trailing linebreak, else add under it warning under it
+ $toFind = [1 => true, 2 => true];
+
+ for ($i = $upperLimit - 1; $i >= 0; --$i) {
+ if (isset($toFind[$diff[$i][1]])) {
+ unset($toFind[$diff[$i][1]]);
+ $lc = substr($diff[$i][0], -1);
+
+ if ("\n" !== $lc) {
+ array_splice($diff, $i + 1, 0, [["\n\\ No newline at end of file\n", Differ::NO_LINE_END_EOF_WARNING]]);
+ }
+
+ if (!count($toFind)) {
+ break;
+ }
+ }
+ }
+ }
+
+ // write hunks to output buffer
+
+ $cutOff = max($this->commonLineThreshold, $this->contextLines);
+ $hunkCapture = false;
+ $sameCount = $toRange = $fromRange = 0;
+ $toStart = $fromStart = 1;
+ $i = 0;
+
+ /** @var int $i */
+ foreach ($diff as $i => $entry) {
+ if (0 === $entry[1]) { // same
+ if (false === $hunkCapture) {
+ ++$fromStart;
+ ++$toStart;
+
+ continue;
+ }
+
+ ++$sameCount;
+ ++$toRange;
+ ++$fromRange;
+
+ if ($sameCount === $cutOff) {
+ $contextStartOffset = ($hunkCapture - $this->contextLines) < 0
+ ? $hunkCapture
+ : $this->contextLines;
+
+ // note: $contextEndOffset = $this->contextLines;
+ //
+ // because we never go beyond the end of the diff.
+ // with the cutoff/contextlines here the follow is never true;
+ //
+ // if ($i - $cutOff + $this->contextLines + 1 > \count($diff)) {
+ // $contextEndOffset = count($diff) - 1;
+ // }
+ //
+ // ; that would be true for a trailing incomplete hunk case which is dealt with after this loop
+
+ $this->writeHunk(
+ $diff,
+ $hunkCapture - $contextStartOffset,
+ $i - $cutOff + $this->contextLines + 1,
+ $fromStart - $contextStartOffset,
+ $fromRange - $cutOff + $contextStartOffset + $this->contextLines,
+ $toStart - $contextStartOffset,
+ $toRange - $cutOff + $contextStartOffset + $this->contextLines,
+ $output
+ );
+
+ $fromStart += $fromRange;
+ $toStart += $toRange;
+
+ $hunkCapture = false;
+ $sameCount = $toRange = $fromRange = 0;
+ }
+
+ continue;
+ }
+
+ $sameCount = 0;
+
+ if ($entry[1] === Differ::NO_LINE_END_EOF_WARNING) {
+ continue;
+ }
+
+ if (false === $hunkCapture) {
+ $hunkCapture = $i;
+ }
+
+ if (Differ::ADDED === $entry[1]) {
+ ++$toRange;
+ }
+
+ if (Differ::REMOVED === $entry[1]) {
+ ++$fromRange;
+ }
+ }
+
+ if (false === $hunkCapture) {
+ return;
+ }
+
+ // we end here when cutoff (commonLineThreshold) was not reached, but we where capturing a hunk,
+ // do not render hunk till end automatically because the number of context lines might be less than the commonLineThreshold
+
+ $contextStartOffset = $hunkCapture - $this->contextLines < 0
+ ? $hunkCapture
+ : $this->contextLines;
+
+ // prevent trying to write out more common lines than there are in the diff _and_
+ // do not write more than configured through the context lines
+ $contextEndOffset = min($sameCount, $this->contextLines);
+
+ $fromRange -= $sameCount;
+ $toRange -= $sameCount;
+
+ $this->writeHunk(
+ $diff,
+ $hunkCapture - $contextStartOffset,
+ $i - $sameCount + $contextEndOffset + 1,
+ $fromStart - $contextStartOffset,
+ $fromRange + $contextStartOffset + $contextEndOffset,
+ $toStart - $contextStartOffset,
+ $toRange + $contextStartOffset + $contextEndOffset,
+ $output
+ );
+ }
+
+ private function writeHunk(
+ array $diff,
+ int $diffStartIndex,
+ int $diffEndIndex,
+ int $fromStart,
+ int $fromRange,
+ int $toStart,
+ int $toRange,
+ $output
+ ): void {
+ if ($this->addLineNumbers) {
+ fwrite($output, '@@ -' . $fromStart);
+
+ if (!$this->collapseRanges || 1 !== $fromRange) {
+ fwrite($output, ',' . $fromRange);
+ }
+
+ fwrite($output, ' +' . $toStart);
+
+ if (!$this->collapseRanges || 1 !== $toRange) {
+ fwrite($output, ',' . $toRange);
+ }
+
+ fwrite($output, " @@\n");
+ } else {
+ fwrite($output, "@@ @@\n");
+ }
+
+ for ($i = $diffStartIndex; $i < $diffEndIndex; ++$i) {
+ if ($diff[$i][1] === Differ::ADDED) {
+ fwrite($output, '+' . $diff[$i][0]);
+ } elseif ($diff[$i][1] === Differ::REMOVED) {
+ fwrite($output, '-' . $diff[$i][0]);
+ } elseif ($diff[$i][1] === Differ::OLD) {
+ fwrite($output, ' ' . $diff[$i][0]);
+ } elseif ($diff[$i][1] === Differ::NO_LINE_END_EOF_WARNING) {
+ fwrite($output, "\n"); // $diff[$i][0]
+ } else { /* Not changed (old) Differ::OLD or Warning Differ::DIFF_LINE_END_WARNING */
+ fwrite($output, ' ' . $diff[$i][0]);
+ }
+ }
+ }
+}
diff --git a/vendor/sebastian/diff/src/Parser.php b/vendor/sebastian/diff/src/Parser.php
new file mode 100644
index 000000000..cc9e38871
--- /dev/null
+++ b/vendor/sebastian/diff/src/Parser.php
@@ -0,0 +1,110 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+use function array_pop;
+use function count;
+use function max;
+use function preg_match;
+use function preg_split;
+
+/**
+ * Unified diff parser.
+ */
+final class Parser
+{
+ /**
+ * @return Diff[]
+ */
+ public function parse(string $string): array
+ {
+ $lines = preg_split('(\r\n|\r|\n)', $string);
+
+ if (!empty($lines) && $lines[count($lines) - 1] === '') {
+ array_pop($lines);
+ }
+
+ $lineCount = count($lines);
+ $diffs = [];
+ $diff = null;
+ $collected = [];
+
+ for ($i = 0; $i < $lineCount; ++$i) {
+ if (preg_match('#^---\h+"?(?P<file>[^\\v\\t"]+)#', $lines[$i], $fromMatch) &&
+ preg_match('#^\\+\\+\\+\\h+"?(?P<file>[^\\v\\t"]+)#', $lines[$i + 1], $toMatch)) {
+ if ($diff !== null) {
+ $this->parseFileDiff($diff, $collected);
+
+ $diffs[] = $diff;
+ $collected = [];
+ }
+
+ $diff = new Diff($fromMatch['file'], $toMatch['file']);
+
+ ++$i;
+ } else {
+ if (preg_match('/^(?:diff --git |index [\da-f\.]+|[+-]{3} [ab])/', $lines[$i])) {
+ continue;
+ }
+
+ $collected[] = $lines[$i];
+ }
+ }
+
+ if ($diff !== null && count($collected)) {
+ $this->parseFileDiff($diff, $collected);
+
+ $diffs[] = $diff;
+ }
+
+ return $diffs;
+ }
+
+ private function parseFileDiff(Diff $diff, array $lines): void
+ {
+ $chunks = [];
+ $chunk = null;
+ $diffLines = [];
+
+ foreach ($lines as $line) {
+ if (preg_match('/^@@\s+-(?P<start>\d+)(?:,\s*(?P<startrange>\d+))?\s+\+(?P<end>\d+)(?:,\s*(?P<endrange>\d+))?\s+@@/', $line, $match)) {
+ $chunk = new Chunk(
+ (int) $match['start'],
+ isset($match['startrange']) ? max(1, (int) $match['startrange']) : 1,
+ (int) $match['end'],
+ isset($match['endrange']) ? max(1, (int) $match['endrange']) : 1
+ );
+
+ $chunks[] = $chunk;
+ $diffLines = [];
+
+ continue;
+ }
+
+ if (preg_match('/^(?P<type>[+ -])?(?P<line>.*)/', $line, $match)) {
+ $type = Line::UNCHANGED;
+
+ if ($match['type'] === '+') {
+ $type = Line::ADDED;
+ } elseif ($match['type'] === '-') {
+ $type = Line::REMOVED;
+ }
+
+ $diffLines[] = new Line($type, $match['line']);
+
+ if (null !== $chunk) {
+ $chunk->setLines($diffLines);
+ }
+ }
+ }
+
+ $diff->setChunks($chunks);
+ }
+}
diff --git a/vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php b/vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php
new file mode 100644
index 000000000..fd19cac76
--- /dev/null
+++ b/vendor/sebastian/diff/src/TimeEfficientLongestCommonSubsequenceCalculator.php
@@ -0,0 +1,70 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/diff.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Diff;
+
+use function array_reverse;
+use function count;
+use function max;
+use SplFixedArray;
+
+final class TimeEfficientLongestCommonSubsequenceCalculator implements LongestCommonSubsequenceCalculator
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function calculate(array $from, array $to): array
+ {
+ $common = [];
+ $fromLength = count($from);
+ $toLength = count($to);
+ $width = $fromLength + 1;
+ $matrix = new SplFixedArray($width * ($toLength + 1));
+
+ for ($i = 0; $i <= $fromLength; ++$i) {
+ $matrix[$i] = 0;
+ }
+
+ for ($j = 0; $j <= $toLength; ++$j) {
+ $matrix[$j * $width] = 0;
+ }
+
+ for ($i = 1; $i <= $fromLength; ++$i) {
+ for ($j = 1; $j <= $toLength; ++$j) {
+ $o = ($j * $width) + $i;
+ $matrix[$o] = max(
+ $matrix[$o - 1],
+ $matrix[$o - $width],
+ $from[$i - 1] === $to[$j - 1] ? $matrix[$o - $width - 1] + 1 : 0
+ );
+ }
+ }
+
+ $i = $fromLength;
+ $j = $toLength;
+
+ while ($i > 0 && $j > 0) {
+ if ($from[$i - 1] === $to[$j - 1]) {
+ $common[] = $from[$i - 1];
+ --$i;
+ --$j;
+ } else {
+ $o = ($j * $width) + $i;
+
+ if ($matrix[$o - $width] > $matrix[$o - 1]) {
+ --$j;
+ } else {
+ --$i;
+ }
+ }
+ }
+
+ return array_reverse($common);
+ }
+}
diff --git a/vendor/sebastian/environment/ChangeLog.md b/vendor/sebastian/environment/ChangeLog.md
new file mode 100644
index 000000000..67daf0356
--- /dev/null
+++ b/vendor/sebastian/environment/ChangeLog.md
@@ -0,0 +1,169 @@
+# Changes in sebastianbergmann/environment
+
+All notable changes in `sebastianbergmann/environment` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [5.1.3] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [5.1.2] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [5.1.1] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## [5.1.0] - 2020-04-14
+
+### Added
+
+* `Runtime::performsJustInTimeCompilation()` returns `true` if PHP 8's JIT is active, `false` otherwise
+
+## [5.0.2] - 2020-03-31
+
+### Fixed
+
+* [#55](https://github.com/sebastianbergmann/environment/issues/55): `stty` command is executed even if no tty is available
+
+## [5.0.1] - 2020-02-19
+
+### Changed
+
+* `Runtime::getNameWithVersionAndCodeCoverageDriver()` now prioritizes PCOV over Xdebug when both extensions are loaded (just like php-code-coverage does)
+
+## [5.0.0] - 2020-02-07
+
+### Removed
+
+* This component is no longer supported on PHP 7.1 and PHP 7.2
+
+## [4.2.3] - 2019-11-20
+
+### Changed
+
+* [#50](https://github.com/sebastianbergmann/environment/pull/50): Windows improvements to console capabilities
+
+### Fixed
+
+* [#49](https://github.com/sebastianbergmann/environment/issues/49): Detection how OpCache handles docblocks does not work correctly when PHPDBG is used
+
+## [4.2.2] - 2019-05-05
+
+### Fixed
+
+* [#44](https://github.com/sebastianbergmann/environment/pull/44): `TypeError` in `Console::getNumberOfColumnsInteractive()`
+
+## [4.2.1] - 2019-04-25
+
+### Fixed
+
+* Fixed an issue in `Runtime::getCurrentSettings()`
+
+## [4.2.0] - 2019-04-25
+
+### Added
+
+* [#36](https://github.com/sebastianbergmann/environment/pull/36): `Runtime::getCurrentSettings()`
+
+## [4.1.0] - 2019-02-01
+
+### Added
+
+* Implemented `Runtime::getNameWithVersionAndCodeCoverageDriver()` method
+* [#34](https://github.com/sebastianbergmann/environment/pull/34): Support for PCOV extension
+
+## [4.0.2] - 2019-01-28
+
+### Fixed
+
+* [#33](https://github.com/sebastianbergmann/environment/issues/33): `Runtime::discardsComments()` returns true too eagerly
+
+### Removed
+
+* Removed support for Zend Optimizer+ in `Runtime::discardsComments()`
+
+## [4.0.1] - 2018-11-25
+
+### Fixed
+
+* [#31](https://github.com/sebastianbergmann/environment/issues/31): Regressions in `Console` class
+
+## [4.0.0] - 2018-10-23 [YANKED]
+
+### Fixed
+
+* [#25](https://github.com/sebastianbergmann/environment/pull/25): `Console::hasColorSupport()` does not work on Windows
+
+### Removed
+
+* This component is no longer supported on PHP 7.0
+
+## [3.1.0] - 2017-07-01
+
+### Added
+
+* [#21](https://github.com/sebastianbergmann/environment/issues/21): Equivalent of `PHP_OS_FAMILY` (for PHP < 7.2)
+
+## [3.0.4] - 2017-06-20
+
+### Fixed
+
+* [#20](https://github.com/sebastianbergmann/environment/pull/20): PHP 7 mode of HHVM not forced
+
+## [3.0.3] - 2017-05-18
+
+### Fixed
+
+* [#18](https://github.com/sebastianbergmann/environment/issues/18): `Uncaught TypeError: preg_match() expects parameter 2 to be string, null given`
+
+## [3.0.2] - 2017-04-21
+
+### Fixed
+
+* [#17](https://github.com/sebastianbergmann/environment/issues/17): `Uncaught TypeError: trim() expects parameter 1 to be string, boolean given`
+
+## [3.0.1] - 2017-04-21
+
+### Fixed
+
+* Fixed inverted logic in `Runtime::discardsComments()`
+
+## [3.0.0] - 2017-04-21
+
+### Added
+
+* Implemented `Runtime::discardsComments()` for querying whether the PHP runtime discards annotations
+
+### Removed
+
+* This component is no longer supported on PHP 5.6
+
+[5.1.3]: https://github.com/sebastianbergmann/environment/compare/5.1.2...5.1.3
+[5.1.2]: https://github.com/sebastianbergmann/environment/compare/5.1.1...5.1.2
+[5.1.1]: https://github.com/sebastianbergmann/environment/compare/5.1.0...5.1.1
+[5.1.0]: https://github.com/sebastianbergmann/environment/compare/5.0.2...5.1.0
+[5.0.2]: https://github.com/sebastianbergmann/environment/compare/5.0.1...5.0.2
+[5.0.1]: https://github.com/sebastianbergmann/environment/compare/5.0.0...5.0.1
+[5.0.0]: https://github.com/sebastianbergmann/environment/compare/4.2.3...5.0.0
+[4.2.3]: https://github.com/sebastianbergmann/environment/compare/4.2.2...4.2.3
+[4.2.2]: https://github.com/sebastianbergmann/environment/compare/4.2.1...4.2.2
+[4.2.1]: https://github.com/sebastianbergmann/environment/compare/4.2.0...4.2.1
+[4.2.0]: https://github.com/sebastianbergmann/environment/compare/4.1.0...4.2.0
+[4.1.0]: https://github.com/sebastianbergmann/environment/compare/4.0.2...4.1.0
+[4.0.2]: https://github.com/sebastianbergmann/environment/compare/4.0.1...4.0.2
+[4.0.1]: https://github.com/sebastianbergmann/environment/compare/66691f8e2dc4641909166b275a9a4f45c0e89092...4.0.1
+[4.0.0]: https://github.com/sebastianbergmann/environment/compare/3.1.0...66691f8e2dc4641909166b275a9a4f45c0e89092
+[3.1.0]: https://github.com/sebastianbergmann/environment/compare/3.0...3.1.0
+[3.0.4]: https://github.com/sebastianbergmann/environment/compare/3.0.3...3.0.4
+[3.0.3]: https://github.com/sebastianbergmann/environment/compare/3.0.2...3.0.3
+[3.0.2]: https://github.com/sebastianbergmann/environment/compare/3.0.1...3.0.2
+[3.0.1]: https://github.com/sebastianbergmann/environment/compare/3.0.0...3.0.1
+[3.0.0]: https://github.com/sebastianbergmann/environment/compare/2.0...3.0.0
+
diff --git a/vendor/sebastian/environment/LICENSE b/vendor/sebastian/environment/LICENSE
new file mode 100644
index 000000000..c58093991
--- /dev/null
+++ b/vendor/sebastian/environment/LICENSE
@@ -0,0 +1,33 @@
+sebastian/environment
+
+Copyright (c) 2014-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/environment/README.md b/vendor/sebastian/environment/README.md
new file mode 100644
index 000000000..24a9831e4
--- /dev/null
+++ b/vendor/sebastian/environment/README.md
@@ -0,0 +1,22 @@
+# sebastian/environment
+
+[![Latest Stable Version](https://img.shields.io/packagist/v/sebastian/environment.svg?style=flat-square)](https://packagist.org/packages/sebastian/environment)
+[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.1-8892BF.svg?style=flat-square)](https://php.net/)
+[![CI Status](https://github.com/sebastianbergmann/environment/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/environment/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/environment/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/environment)
+
+This component provides functionality that helps writing PHP code that has runtime-specific (PHP / HHVM) execution paths.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/environment
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/environment
+```
diff --git a/vendor/sebastian/environment/composer.json b/vendor/sebastian/environment/composer.json
new file mode 100644
index 000000000..d50dcfd78
--- /dev/null
+++ b/vendor/sebastian/environment/composer.json
@@ -0,0 +1,40 @@
+{
+ "name": "sebastian/environment",
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "keywords": ["environment","hhvm","xdebug"],
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/environment/src/Console.php b/vendor/sebastian/environment/src/Console.php
new file mode 100644
index 000000000..c4a2348f0
--- /dev/null
+++ b/vendor/sebastian/environment/src/Console.php
@@ -0,0 +1,189 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/environment.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Environment;
+
+use const DIRECTORY_SEPARATOR;
+use const STDIN;
+use const STDOUT;
+use function defined;
+use function fclose;
+use function fstat;
+use function function_exists;
+use function getenv;
+use function is_resource;
+use function is_string;
+use function posix_isatty;
+use function preg_match;
+use function proc_close;
+use function proc_open;
+use function sapi_windows_vt100_support;
+use function shell_exec;
+use function stream_get_contents;
+use function stream_isatty;
+use function trim;
+
+final class Console
+{
+ /**
+ * @var int
+ */
+ public const STDIN = 0;
+
+ /**
+ * @var int
+ */
+ public const STDOUT = 1;
+
+ /**
+ * @var int
+ */
+ public const STDERR = 2;
+
+ /**
+ * Returns true if STDOUT supports colorization.
+ *
+ * This code has been copied and adapted from
+ * Symfony\Component\Console\Output\StreamOutput.
+ */
+ public function hasColorSupport(): bool
+ {
+ if ('Hyper' === getenv('TERM_PROGRAM')) {
+ return true;
+ }
+
+ if ($this->isWindows()) {
+ // @codeCoverageIgnoreStart
+ return (defined('STDOUT') && function_exists('sapi_windows_vt100_support') && @sapi_windows_vt100_support(STDOUT))
+ || false !== getenv('ANSICON')
+ || 'ON' === getenv('ConEmuANSI')
+ || 'xterm' === getenv('TERM');
+ // @codeCoverageIgnoreEnd
+ }
+
+ if (!defined('STDOUT')) {
+ // @codeCoverageIgnoreStart
+ return false;
+ // @codeCoverageIgnoreEnd
+ }
+
+ return $this->isInteractive(STDOUT);
+ }
+
+ /**
+ * Returns the number of columns of the terminal.
+ *
+ * @codeCoverageIgnore
+ */
+ public function getNumberOfColumns(): int
+ {
+ if (!$this->isInteractive(defined('STDIN') ? STDIN : self::STDIN)) {
+ return 80;
+ }
+
+ if ($this->isWindows()) {
+ return $this->getNumberOfColumnsWindows();
+ }
+
+ return $this->getNumberOfColumnsInteractive();
+ }
+
+ /**
+ * Returns if the file descriptor is an interactive terminal or not.
+ *
+ * Normally, we want to use a resource as a parameter, yet sadly it's not always awailable,
+ * eg when running code in interactive console (`php -a`), STDIN/STDOUT/STDERR constants are not defined.
+ *
+ * @param int|resource $fileDescriptor
+ */
+ public function isInteractive($fileDescriptor = self::STDOUT): bool
+ {
+ if (is_resource($fileDescriptor)) {
+ // These functions require a descriptor that is a real resource, not a numeric ID of it
+ if (function_exists('stream_isatty') && @stream_isatty($fileDescriptor)) {
+ return true;
+ }
+
+ // Check if formatted mode is S_IFCHR
+ if (function_exists('fstat') && @stream_isatty($fileDescriptor)) {
+ $stat = @fstat(STDOUT);
+
+ return $stat ? 0020000 === ($stat['mode'] & 0170000) : false;
+ }
+
+ return false;
+ }
+
+ return function_exists('posix_isatty') && @posix_isatty($fileDescriptor);
+ }
+
+ private function isWindows(): bool
+ {
+ return DIRECTORY_SEPARATOR === '\\';
+ }
+
+ /**
+ * @codeCoverageIgnore
+ */
+ private function getNumberOfColumnsInteractive(): int
+ {
+ if (function_exists('shell_exec') && preg_match('#\d+ (\d+)#', shell_exec('stty size') ?: '', $match) === 1) {
+ if ((int) $match[1] > 0) {
+ return (int) $match[1];
+ }
+ }
+
+ if (function_exists('shell_exec') && preg_match('#columns = (\d+);#', shell_exec('stty') ?: '', $match) === 1) {
+ if ((int) $match[1] > 0) {
+ return (int) $match[1];
+ }
+ }
+
+ return 80;
+ }
+
+ /**
+ * @codeCoverageIgnore
+ */
+ private function getNumberOfColumnsWindows(): int
+ {
+ $ansicon = getenv('ANSICON');
+ $columns = 80;
+
+ if (is_string($ansicon) && preg_match('/^(\d+)x\d+ \(\d+x(\d+)\)$/', trim($ansicon), $matches)) {
+ $columns = (int) $matches[1];
+ } elseif (function_exists('proc_open')) {
+ $process = proc_open(
+ 'mode CON',
+ [
+ 1 => ['pipe', 'w'],
+ 2 => ['pipe', 'w'],
+ ],
+ $pipes,
+ null,
+ null,
+ ['suppress_errors' => true]
+ );
+
+ if (is_resource($process)) {
+ $info = stream_get_contents($pipes[1]);
+
+ fclose($pipes[1]);
+ fclose($pipes[2]);
+ proc_close($process);
+
+ if (preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) {
+ $columns = (int) $matches[2];
+ }
+ }
+ }
+
+ return $columns - 1;
+ }
+}
diff --git a/vendor/sebastian/environment/src/OperatingSystem.php b/vendor/sebastian/environment/src/OperatingSystem.php
new file mode 100644
index 000000000..1f3ebca7c
--- /dev/null
+++ b/vendor/sebastian/environment/src/OperatingSystem.php
@@ -0,0 +1,53 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/environment.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Environment;
+
+use const DIRECTORY_SEPARATOR;
+use const PHP_OS;
+use const PHP_OS_FAMILY;
+use function defined;
+
+final class OperatingSystem
+{
+ /**
+ * Returns PHP_OS_FAMILY (if defined (which it is on PHP >= 7.2)).
+ * Returns a string (compatible with PHP_OS_FAMILY) derived from PHP_OS otherwise.
+ */
+ public function getFamily(): string
+ {
+ if (defined('PHP_OS_FAMILY')) {
+ return PHP_OS_FAMILY;
+ }
+
+ if (DIRECTORY_SEPARATOR === '\\') {
+ return 'Windows';
+ }
+
+ switch (PHP_OS) {
+ case 'Darwin':
+ return 'Darwin';
+
+ case 'DragonFly':
+ case 'FreeBSD':
+ case 'NetBSD':
+ case 'OpenBSD':
+ return 'BSD';
+
+ case 'Linux':
+ return 'Linux';
+
+ case 'SunOS':
+ return 'Solaris';
+
+ default:
+ return 'Unknown';
+ }
+ }
+}
diff --git a/vendor/sebastian/environment/src/Runtime.php b/vendor/sebastian/environment/src/Runtime.php
new file mode 100644
index 000000000..311aefcb6
--- /dev/null
+++ b/vendor/sebastian/environment/src/Runtime.php
@@ -0,0 +1,317 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/environment.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Environment;
+
+use const PHP_BINARY;
+use const PHP_BINDIR;
+use const PHP_MAJOR_VERSION;
+use const PHP_SAPI;
+use const PHP_VERSION;
+use function array_map;
+use function array_merge;
+use function defined;
+use function escapeshellarg;
+use function explode;
+use function extension_loaded;
+use function getenv;
+use function ini_get;
+use function is_readable;
+use function parse_ini_file;
+use function php_ini_loaded_file;
+use function php_ini_scanned_files;
+use function phpversion;
+use function sprintf;
+use function strpos;
+
+/**
+ * Utility class for HHVM/PHP environment handling.
+ */
+final class Runtime
+{
+ /**
+ * @var string
+ */
+ private static $binary;
+
+ /**
+ * Returns true when Xdebug or PCOV is available or
+ * the runtime used is PHPDBG.
+ */
+ public function canCollectCodeCoverage(): bool
+ {
+ return $this->hasXdebug() || $this->hasPCOV() || $this->hasPHPDBGCodeCoverage();
+ }
+
+ /**
+ * Returns true when Zend OPcache is loaded, enabled,
+ * and is configured to discard comments.
+ */
+ public function discardsComments(): bool
+ {
+ if (!$this->isOpcacheActive()) {
+ return false;
+ }
+
+ if (ini_get('opcache.save_comments') !== '0') {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns true when Zend OPcache is loaded, enabled,
+ * and is configured to perform just-in-time compilation.
+ */
+ public function performsJustInTimeCompilation(): bool
+ {
+ if (PHP_MAJOR_VERSION < 8) {
+ return false;
+ }
+
+ if (!$this->isOpcacheActive()) {
+ return false;
+ }
+
+ if (strpos(ini_get('opcache.jit'), '0') === 0) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns the path to the binary of the current runtime.
+ * Appends ' --php' to the path when the runtime is HHVM.
+ */
+ public function getBinary(): string
+ {
+ // HHVM
+ if (self::$binary === null && $this->isHHVM()) {
+ // @codeCoverageIgnoreStart
+ if ((self::$binary = getenv('PHP_BINARY')) === false) {
+ self::$binary = PHP_BINARY;
+ }
+
+ self::$binary = escapeshellarg(self::$binary) . ' --php' .
+ ' -d hhvm.php7.all=1';
+ // @codeCoverageIgnoreEnd
+ }
+
+ if (self::$binary === null && PHP_BINARY !== '') {
+ self::$binary = escapeshellarg(PHP_BINARY);
+ }
+
+ if (self::$binary === null) {
+ // @codeCoverageIgnoreStart
+ $possibleBinaryLocations = [
+ PHP_BINDIR . '/php',
+ PHP_BINDIR . '/php-cli.exe',
+ PHP_BINDIR . '/php.exe',
+ ];
+
+ foreach ($possibleBinaryLocations as $binary) {
+ if (is_readable($binary)) {
+ self::$binary = escapeshellarg($binary);
+
+ break;
+ }
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ if (self::$binary === null) {
+ // @codeCoverageIgnoreStart
+ self::$binary = 'php';
+ // @codeCoverageIgnoreEnd
+ }
+
+ return self::$binary;
+ }
+
+ public function getNameWithVersion(): string
+ {
+ return $this->getName() . ' ' . $this->getVersion();
+ }
+
+ public function getNameWithVersionAndCodeCoverageDriver(): string
+ {
+ if (!$this->canCollectCodeCoverage() || $this->hasPHPDBGCodeCoverage()) {
+ return $this->getNameWithVersion();
+ }
+
+ if ($this->hasPCOV()) {
+ return sprintf(
+ '%s with PCOV %s',
+ $this->getNameWithVersion(),
+ phpversion('pcov')
+ );
+ }
+
+ if ($this->hasXdebug()) {
+ return sprintf(
+ '%s with Xdebug %s',
+ $this->getNameWithVersion(),
+ phpversion('xdebug')
+ );
+ }
+ }
+
+ public function getName(): string
+ {
+ if ($this->isHHVM()) {
+ // @codeCoverageIgnoreStart
+ return 'HHVM';
+ // @codeCoverageIgnoreEnd
+ }
+
+ if ($this->isPHPDBG()) {
+ // @codeCoverageIgnoreStart
+ return 'PHPDBG';
+ // @codeCoverageIgnoreEnd
+ }
+
+ return 'PHP';
+ }
+
+ public function getVendorUrl(): string
+ {
+ if ($this->isHHVM()) {
+ // @codeCoverageIgnoreStart
+ return 'http://hhvm.com/';
+ // @codeCoverageIgnoreEnd
+ }
+
+ return 'https://secure.php.net/';
+ }
+
+ public function getVersion(): string
+ {
+ if ($this->isHHVM()) {
+ // @codeCoverageIgnoreStart
+ return HHVM_VERSION;
+ // @codeCoverageIgnoreEnd
+ }
+
+ return PHP_VERSION;
+ }
+
+ /**
+ * Returns true when the runtime used is PHP and Xdebug is loaded.
+ */
+ public function hasXdebug(): bool
+ {
+ return ($this->isPHP() || $this->isHHVM()) && extension_loaded('xdebug');
+ }
+
+ /**
+ * Returns true when the runtime used is HHVM.
+ */
+ public function isHHVM(): bool
+ {
+ return defined('HHVM_VERSION');
+ }
+
+ /**
+ * Returns true when the runtime used is PHP without the PHPDBG SAPI.
+ */
+ public function isPHP(): bool
+ {
+ return !$this->isHHVM() && !$this->isPHPDBG();
+ }
+
+ /**
+ * Returns true when the runtime used is PHP with the PHPDBG SAPI.
+ */
+ public function isPHPDBG(): bool
+ {
+ return PHP_SAPI === 'phpdbg' && !$this->isHHVM();
+ }
+
+ /**
+ * Returns true when the runtime used is PHP with the PHPDBG SAPI
+ * and the phpdbg_*_oplog() functions are available (PHP >= 7.0).
+ */
+ public function hasPHPDBGCodeCoverage(): bool
+ {
+ return $this->isPHPDBG();
+ }
+
+ /**
+ * Returns true when the runtime used is PHP with PCOV loaded and enabled.
+ */
+ public function hasPCOV(): bool
+ {
+ return $this->isPHP() && extension_loaded('pcov') && ini_get('pcov.enabled');
+ }
+
+ /**
+ * Parses the loaded php.ini file (if any) as well as all
+ * additional php.ini files from the additional ini dir for
+ * a list of all configuration settings loaded from files
+ * at startup. Then checks for each php.ini setting passed
+ * via the `$values` parameter whether this setting has
+ * been changed at runtime. Returns an array of strings
+ * where each string has the format `key=value` denoting
+ * the name of a changed php.ini setting with its new value.
+ *
+ * @return string[]
+ */
+ public function getCurrentSettings(array $values): array
+ {
+ $diff = [];
+ $files = [];
+
+ if ($file = php_ini_loaded_file()) {
+ $files[] = $file;
+ }
+
+ if ($scanned = php_ini_scanned_files()) {
+ $files = array_merge(
+ $files,
+ array_map(
+ 'trim',
+ explode(",\n", $scanned)
+ )
+ );
+ }
+
+ foreach ($files as $ini) {
+ $config = parse_ini_file($ini, true);
+
+ foreach ($values as $value) {
+ $set = ini_get($value);
+
+ if (isset($config[$value]) && $set != $config[$value]) {
+ $diff[] = sprintf('%s=%s', $value, $set);
+ }
+ }
+ }
+
+ return $diff;
+ }
+
+ private function isOpcacheActive(): bool
+ {
+ if (!extension_loaded('Zend OPcache')) {
+ return false;
+ }
+
+ if ((PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') && ini_get('opcache.enable_cli') === '1') {
+ return true;
+ }
+
+ if (PHP_SAPI !== 'cli' && PHP_SAPI !== 'phpdbg' && ini_get('opcache.enable') === '1') {
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/sebastian/exporter/ChangeLog.md b/vendor/sebastian/exporter/ChangeLog.md
new file mode 100644
index 000000000..c691e81ab
--- /dev/null
+++ b/vendor/sebastian/exporter/ChangeLog.md
@@ -0,0 +1,64 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [4.0.4] - 2021-11-11
+
+### Changed
+
+* [#37](https://github.com/sebastianbergmann/exporter/pull/37): Improve export of closed resources
+
+## [4.0.3] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [4.0.2] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [4.0.1] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## [4.0.0] - 2020-02-07
+
+### Removed
+
+* This component is no longer supported on PHP 7.0, PHP 7.1, and PHP 7.2
+
+## [3.1.4] - 2021-11-11
+
+### Changed
+
+* [#38](https://github.com/sebastianbergmann/exporter/pull/38): Improve export of closed resources
+
+## [3.1.3] - 2020-11-30
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.0` to `>=7.0`
+
+## [3.1.2] - 2019-09-14
+
+### Fixed
+
+* [#29](https://github.com/sebastianbergmann/exporter/pull/29): Second parameter for `str_repeat()` must be an integer
+
+### Removed
+
+* Remove HHVM-specific code that is no longer needed
+
+[4.0.4]: https://github.com/sebastianbergmann/exporter/compare/4.0.3...4.0.4
+[4.0.3]: https://github.com/sebastianbergmann/exporter/compare/4.0.2...4.0.3
+[4.0.2]: https://github.com/sebastianbergmann/exporter/compare/4.0.1...4.0.2
+[4.0.1]: https://github.com/sebastianbergmann/exporter/compare/4.0.0...4.0.1
+[4.0.0]: https://github.com/sebastianbergmann/exporter/compare/3.1.2...4.0.0
+[3.1.4]: https://github.com/sebastianbergmann/exporter/compare/3.1.3...3.1.4
+[3.1.3]: https://github.com/sebastianbergmann/exporter/compare/3.1.2...3.1.3
+[3.1.2]: https://github.com/sebastianbergmann/exporter/compare/3.1.1...3.1.2
diff --git a/vendor/sebastian/exporter/LICENSE b/vendor/sebastian/exporter/LICENSE
new file mode 100644
index 000000000..26dc7feca
--- /dev/null
+++ b/vendor/sebastian/exporter/LICENSE
@@ -0,0 +1,33 @@
+Exporter
+
+Copyright (c) 2002-2021, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/exporter/README.md b/vendor/sebastian/exporter/README.md
new file mode 100644
index 000000000..ed8719f56
--- /dev/null
+++ b/vendor/sebastian/exporter/README.md
@@ -0,0 +1,174 @@
+# sebastian/exporter
+
+[![CI Status](https://github.com/sebastianbergmann/exporter/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/exporter/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/exporter/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/exporter)
+
+This component provides the functionality to export PHP variables for visualization.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/exporter
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/exporter
+```
+
+## Usage
+
+Exporting:
+
+```php
+<?php
+use SebastianBergmann\Exporter\Exporter;
+
+$exporter = new Exporter;
+
+/*
+Exception Object &0000000078de0f0d000000002003a261 (
+ 'message' => ''
+ 'string' => ''
+ 'code' => 0
+ 'file' => '/home/sebastianbergmann/test.php'
+ 'line' => 34
+ 'previous' => null
+)
+*/
+
+print $exporter->export(new Exception);
+```
+
+## Data Types
+
+Exporting simple types:
+
+```php
+<?php
+use SebastianBergmann\Exporter\Exporter;
+
+$exporter = new Exporter;
+
+// 46
+print $exporter->export(46);
+
+// 4.0
+print $exporter->export(4.0);
+
+// 'hello, world!'
+print $exporter->export('hello, world!');
+
+// false
+print $exporter->export(false);
+
+// NAN
+print $exporter->export(acos(8));
+
+// -INF
+print $exporter->export(log(0));
+
+// null
+print $exporter->export(null);
+
+// resource(13) of type (stream)
+print $exporter->export(fopen('php://stderr', 'w'));
+
+// Binary String: 0x000102030405
+print $exporter->export(chr(0) . chr(1) . chr(2) . chr(3) . chr(4) . chr(5));
+```
+
+Exporting complex types:
+
+```php
+<?php
+use SebastianBergmann\Exporter\Exporter;
+
+$exporter = new Exporter;
+
+/*
+Array &0 (
+ 0 => Array &1 (
+ 0 => 1
+ 1 => 2
+ 2 => 3
+ )
+ 1 => Array &2 (
+ 0 => ''
+ 1 => 0
+ 2 => false
+ )
+)
+*/
+
+print $exporter->export(array(array(1,2,3), array("",0,FALSE)));
+
+/*
+Array &0 (
+ 'self' => Array &1 (
+ 'self' => Array &1
+ )
+)
+*/
+
+$array = array();
+$array['self'] = &$array;
+print $exporter->export($array);
+
+/*
+stdClass Object &0000000003a66dcc0000000025e723e2 (
+ 'self' => stdClass Object &0000000003a66dcc0000000025e723e2
+)
+*/
+
+$obj = new stdClass();
+$obj->self = $obj;
+print $exporter->export($obj);
+```
+
+Compact exports:
+
+```php
+<?php
+use SebastianBergmann\Exporter\Exporter;
+
+$exporter = new Exporter;
+
+// Array ()
+print $exporter->shortenedExport(array());
+
+// Array (...)
+print $exporter->shortenedExport(array(1,2,3,4,5));
+
+// stdClass Object ()
+print $exporter->shortenedExport(new stdClass);
+
+// Exception Object (...)
+print $exporter->shortenedExport(new Exception);
+
+// this\nis\na\nsuper\nlong\nstring\nt...\nspace
+print $exporter->shortenedExport(
+<<<LONG_STRING
+this
+is
+a
+super
+long
+string
+that
+wraps
+a
+lot
+and
+eats
+up
+a
+lot
+of
+space
+LONG_STRING
+);
+```
diff --git a/vendor/sebastian/exporter/composer.json b/vendor/sebastian/exporter/composer.json
new file mode 100644
index 000000000..baa958443
--- /dev/null
+++ b/vendor/sebastian/exporter/composer.json
@@ -0,0 +1,56 @@
+{
+ "name": "sebastian/exporter",
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "keywords": ["exporter","export"],
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "[email protected]"
+ }
+ ],
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "ext-mbstring": "*"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ }
+}
+
diff --git a/vendor/sebastian/exporter/src/Exporter.php b/vendor/sebastian/exporter/src/Exporter.php
new file mode 100644
index 000000000..692a0b21f
--- /dev/null
+++ b/vendor/sebastian/exporter/src/Exporter.php
@@ -0,0 +1,330 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/exporter.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Exporter;
+
+use function bin2hex;
+use function count;
+use function function_exists;
+use function get_class;
+use function get_resource_type;
+use function gettype;
+use function implode;
+use function is_array;
+use function is_float;
+use function is_object;
+use function is_resource;
+use function is_string;
+use function mb_strlen;
+use function mb_substr;
+use function preg_match;
+use function spl_object_hash;
+use function sprintf;
+use function str_repeat;
+use function str_replace;
+use function strlen;
+use function substr;
+use function var_export;
+use SebastianBergmann\RecursionContext\Context;
+use SplObjectStorage;
+
+/**
+ * A nifty utility for visualizing PHP variables.
+ *
+ * <code>
+ * <?php
+ * use SebastianBergmann\Exporter\Exporter;
+ *
+ * $exporter = new Exporter;
+ * print $exporter->export(new Exception);
+ * </code>
+ */
+class Exporter
+{
+ /**
+ * Exports a value as a string.
+ *
+ * The output of this method is similar to the output of print_r(), but
+ * improved in various aspects:
+ *
+ * - NULL is rendered as "null" (instead of "")
+ * - TRUE is rendered as "true" (instead of "1")
+ * - FALSE is rendered as "false" (instead of "")
+ * - Strings are always quoted with single quotes
+ * - Carriage returns and newlines are normalized to \n
+ * - Recursion and repeated rendering is treated properly
+ *
+ * @param int $indentation The indentation level of the 2nd+ line
+ *
+ * @return string
+ */
+ public function export($value, $indentation = 0)
+ {
+ return $this->recursiveExport($value, $indentation);
+ }
+
+ /**
+ * @param array<mixed> $data
+ * @param Context $context
+ *
+ * @return string
+ */
+ public function shortenedRecursiveExport(&$data, Context $context = null)
+ {
+ $result = [];
+ $exporter = new self();
+
+ if (!$context) {
+ $context = new Context;
+ }
+
+ $array = $data;
+ $context->add($data);
+
+ foreach ($array as $key => $value) {
+ if (is_array($value)) {
+ if ($context->contains($data[$key]) !== false) {
+ $result[] = '*RECURSION*';
+ } else {
+ $result[] = sprintf(
+ 'array(%s)',
+ $this->shortenedRecursiveExport($data[$key], $context)
+ );
+ }
+ } else {
+ $result[] = $exporter->shortenedExport($value);
+ }
+ }
+
+ return implode(', ', $result);
+ }
+
+ /**
+ * Exports a value into a single-line string.
+ *
+ * The output of this method is similar to the output of
+ * SebastianBergmann\Exporter\Exporter::export().
+ *
+ * Newlines are replaced by the visible string '\n'.
+ * Contents of arrays and objects (if any) are replaced by '...'.
+ *
+ * @return string
+ *
+ * @see SebastianBergmann\Exporter\Exporter::export
+ */
+ public function shortenedExport($value)
+ {
+ if (is_string($value)) {
+ $string = str_replace("\n", '', $this->export($value));
+
+ if (function_exists('mb_strlen')) {
+ if (mb_strlen($string) > 40) {
+ $string = mb_substr($string, 0, 30) . '...' . mb_substr($string, -7);
+ }
+ } else {
+ if (strlen($string) > 40) {
+ $string = substr($string, 0, 30) . '...' . substr($string, -7);
+ }
+ }
+
+ return $string;
+ }
+
+ if (is_object($value)) {
+ return sprintf(
+ '%s Object (%s)',
+ get_class($value),
+ count($this->toArray($value)) > 0 ? '...' : ''
+ );
+ }
+
+ if (is_array($value)) {
+ return sprintf(
+ 'Array (%s)',
+ count($value) > 0 ? '...' : ''
+ );
+ }
+
+ return $this->export($value);
+ }
+
+ /**
+ * Converts an object to an array containing all of its private, protected
+ * and public properties.
+ *
+ * @return array
+ */
+ public function toArray($value)
+ {
+ if (!is_object($value)) {
+ return (array) $value;
+ }
+
+ $array = [];
+
+ foreach ((array) $value as $key => $val) {
+ // Exception traces commonly reference hundreds to thousands of
+ // objects currently loaded in memory. Including them in the result
+ // has a severe negative performance impact.
+ if ("\0Error\0trace" === $key || "\0Exception\0trace" === $key) {
+ continue;
+ }
+
+ // properties are transformed to keys in the following way:
+ // private $property => "\0Classname\0property"
+ // protected $property => "\0*\0property"
+ // public $property => "property"
+ if (preg_match('/^\0.+\0(.+)$/', (string) $key, $matches)) {
+ $key = $matches[1];
+ }
+
+ // See https://github.com/php/php-src/commit/5721132
+ if ($key === "\0gcdata") {
+ continue;
+ }
+
+ $array[$key] = $val;
+ }
+
+ // Some internal classes like SplObjectStorage don't work with the
+ // above (fast) mechanism nor with reflection in Zend.
+ // Format the output similarly to print_r() in this case
+ if ($value instanceof SplObjectStorage) {
+ foreach ($value as $key => $val) {
+ $array[spl_object_hash($val)] = [
+ 'obj' => $val,
+ 'inf' => $value->getInfo(),
+ ];
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Recursive implementation of export.
+ *
+ * @param mixed $value The value to export
+ * @param int $indentation The indentation level of the 2nd+ line
+ * @param \SebastianBergmann\RecursionContext\Context $processed Previously processed objects
+ *
+ * @return string
+ *
+ * @see SebastianBergmann\Exporter\Exporter::export
+ */
+ protected function recursiveExport(&$value, $indentation, $processed = null)
+ {
+ if ($value === null) {
+ return 'null';
+ }
+
+ if ($value === true) {
+ return 'true';
+ }
+
+ if ($value === false) {
+ return 'false';
+ }
+
+ if (is_float($value) && (float) ((int) $value) === $value) {
+ return "{$value}.0";
+ }
+
+ if (gettype($value) === 'resource (closed)') {
+ return 'resource (closed)';
+ }
+
+ if (is_resource($value)) {
+ return sprintf(
+ 'resource(%d) of type (%s)',
+ $value,
+ get_resource_type($value)
+ );
+ }
+
+ if (is_string($value)) {
+ // Match for most non printable chars somewhat taking multibyte chars into account
+ if (preg_match('/[^\x09-\x0d\x1b\x20-\xff]/', $value)) {
+ return 'Binary String: 0x' . bin2hex($value);
+ }
+
+ return "'" .
+ str_replace(
+ '<lf>',
+ "\n",
+ str_replace(
+ ["\r\n", "\n\r", "\r", "\n"],
+ ['\r\n<lf>', '\n\r<lf>', '\r<lf>', '\n<lf>'],
+ $value
+ )
+ ) .
+ "'";
+ }
+
+ $whitespace = str_repeat(' ', 4 * $indentation);
+
+ if (!$processed) {
+ $processed = new Context;
+ }
+
+ if (is_array($value)) {
+ if (($key = $processed->contains($value)) !== false) {
+ return 'Array &' . $key;
+ }
+
+ $array = $value;
+ $key = $processed->add($value);
+ $values = '';
+
+ if (count($array) > 0) {
+ foreach ($array as $k => $v) {
+ $values .= sprintf(
+ '%s %s => %s' . "\n",
+ $whitespace,
+ $this->recursiveExport($k, $indentation),
+ $this->recursiveExport($value[$k], $indentation + 1, $processed)
+ );
+ }
+
+ $values = "\n" . $values . $whitespace;
+ }
+
+ return sprintf('Array &%s (%s)', $key, $values);
+ }
+
+ if (is_object($value)) {
+ $class = get_class($value);
+
+ if ($hash = $processed->contains($value)) {
+ return sprintf('%s Object &%s', $class, $hash);
+ }
+
+ $hash = $processed->add($value);
+ $values = '';
+ $array = $this->toArray($value);
+
+ if (count($array) > 0) {
+ foreach ($array as $k => $v) {
+ $values .= sprintf(
+ '%s %s => %s' . "\n",
+ $whitespace,
+ $this->recursiveExport($k, $indentation),
+ $this->recursiveExport($v, $indentation + 1, $processed)
+ );
+ }
+
+ $values = "\n" . $values . $whitespace;
+ }
+
+ return sprintf('%s Object &%s (%s)', $class, $hash, $values);
+ }
+
+ return var_export($value, true);
+ }
+}
diff --git a/vendor/sebastian/global-state/ChangeLog.md b/vendor/sebastian/global-state/ChangeLog.md
new file mode 100644
index 000000000..a27a5cf16
--- /dev/null
+++ b/vendor/sebastian/global-state/ChangeLog.md
@@ -0,0 +1,79 @@
+# Changes in sebastian/global-state
+
+All notable changes in `sebastian/global-state` are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [5.0.5] - 2022-02-14
+
+### Fixed
+
+* [#34](https://github.com/sebastianbergmann/global-state/pull/34): Uninitialised typed static properties are not handled correctly
+
+## [5.0.4] - 2022-02-10
+
+### Fixed
+
+* The `$includeTraits` parameter of `SebastianBergmann\GlobalState\Snapshot::__construct()` is not respected
+
+## [5.0.3] - 2021-06-11
+
+### Changed
+
+* `SebastianBergmann\GlobalState\CodeExporter::globalVariables()` now generates code that is compatible with PHP 8.1
+
+## [5.0.2] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\GlobalState\Exception` now correctly extends `\Throwable`
+
+## [5.0.1] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [5.0.0] - 2020-08-07
+
+### Changed
+
+* The `SebastianBergmann\GlobalState\Blacklist` class has been renamed to `SebastianBergmann\GlobalState\ExcludeList`
+
+## [4.0.0] - 2020-02-07
+
+### Removed
+
+* This component is no longer supported on PHP 7.2
+
+## [3.0.2] - 2022-02-10
+
+### Fixed
+
+* The `$includeTraits` parameter of `SebastianBergmann\GlobalState\Snapshot::__construct()` is not respected
+
+## [3.0.1] - 2020-11-30
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.2` to `>=7.2`
+
+## [3.0.0] - 2019-02-01
+
+### Changed
+
+* `Snapshot::canBeSerialized()` now recursively checks arrays and object graphs for variables that cannot be serialized
+
+### Removed
+
+* This component is no longer supported on PHP 7.0 and PHP 7.1
+
+[5.0.5]: https://github.com/sebastianbergmann/global-state/compare/5.0.4...5.0.5
+[5.0.4]: https://github.com/sebastianbergmann/global-state/compare/5.0.3...5.0.4
+[5.0.3]: https://github.com/sebastianbergmann/global-state/compare/5.0.2...5.0.3
+[5.0.2]: https://github.com/sebastianbergmann/global-state/compare/5.0.1...5.0.2
+[5.0.1]: https://github.com/sebastianbergmann/global-state/compare/5.0.0...5.0.1
+[5.0.0]: https://github.com/sebastianbergmann/global-state/compare/4.0.0...5.0.0
+[4.0.0]: https://github.com/sebastianbergmann/global-state/compare/3.0.2...4.0.0
+[3.0.2]: https://github.com/sebastianbergmann/phpunit/compare/3.0.1...3.0.2
+[3.0.1]: https://github.com/sebastianbergmann/phpunit/compare/3.0.0...3.0.1
+[3.0.0]: https://github.com/sebastianbergmann/phpunit/compare/2.0.0...3.0.0
+
diff --git a/vendor/sebastian/global-state/LICENSE b/vendor/sebastian/global-state/LICENSE
new file mode 100644
index 000000000..240190bd3
--- /dev/null
+++ b/vendor/sebastian/global-state/LICENSE
@@ -0,0 +1,33 @@
+sebastian/global-state
+
+Copyright (c) 2001-2022, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/global-state/README.md b/vendor/sebastian/global-state/README.md
new file mode 100644
index 000000000..af15bedde
--- /dev/null
+++ b/vendor/sebastian/global-state/README.md
@@ -0,0 +1,20 @@
+# sebastian/global-state
+
+[![CI Status](https://github.com/sebastianbergmann/global-state/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/global-state/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/global-state/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/global-state)
+
+Snapshotting of global state, factored out of PHPUnit into a stand-alone component.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/global-state
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/global-state
+```
diff --git a/vendor/sebastian/global-state/composer.json b/vendor/sebastian/global-state/composer.json
new file mode 100644
index 000000000..0fef446a6
--- /dev/null
+++ b/vendor/sebastian/global-state/composer.json
@@ -0,0 +1,51 @@
+{
+ "name": "sebastian/global-state",
+ "description": "Snapshotting of global state",
+ "keywords": ["global state"],
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "prefer-stable": true,
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/_fixture/"
+ ],
+ "files": [
+ "tests/_fixture/SnapshotFunctions.php"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/global-state/src/CodeExporter.php b/vendor/sebastian/global-state/src/CodeExporter.php
new file mode 100644
index 000000000..71cdbf504
--- /dev/null
+++ b/vendor/sebastian/global-state/src/CodeExporter.php
@@ -0,0 +1,109 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/global-state.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\GlobalState;
+
+use const PHP_EOL;
+use function is_array;
+use function is_scalar;
+use function serialize;
+use function sprintf;
+use function var_export;
+
+/**
+ * Exports parts of a Snapshot as PHP code.
+ */
+final class CodeExporter
+{
+ public function constants(Snapshot $snapshot): string
+ {
+ $result = '';
+
+ foreach ($snapshot->constants() as $name => $value) {
+ $result .= sprintf(
+ 'if (!defined(\'%s\')) define(\'%s\', %s);' . "\n",
+ $name,
+ $name,
+ $this->exportVariable($value)
+ );
+ }
+
+ return $result;
+ }
+
+ public function globalVariables(Snapshot $snapshot): string
+ {
+ $result = <<<'EOT'
+call_user_func(
+ function ()
+ {
+ foreach (array_keys($GLOBALS) as $key) {
+ unset($GLOBALS[$key]);
+ }
+ }
+);
+
+
+EOT;
+
+ foreach ($snapshot->globalVariables() as $name => $value) {
+ $result .= sprintf(
+ '$GLOBALS[%s] = %s;' . PHP_EOL,
+ $this->exportVariable($name),
+ $this->exportVariable($value)
+ );
+ }
+
+ return $result;
+ }
+
+ public function iniSettings(Snapshot $snapshot): string
+ {
+ $result = '';
+
+ foreach ($snapshot->iniSettings() as $key => $value) {
+ $result .= sprintf(
+ '@ini_set(%s, %s);' . "\n",
+ $this->exportVariable($key),
+ $this->exportVariable($value)
+ );
+ }
+
+ return $result;
+ }
+
+ private function exportVariable($variable): string
+ {
+ if (is_scalar($variable) || null === $variable ||
+ (is_array($variable) && $this->arrayOnlyContainsScalars($variable))) {
+ return var_export($variable, true);
+ }
+
+ return 'unserialize(' . var_export(serialize($variable), true) . ')';
+ }
+
+ private function arrayOnlyContainsScalars(array $array): bool
+ {
+ $result = true;
+
+ foreach ($array as $element) {
+ if (is_array($element)) {
+ $result = $this->arrayOnlyContainsScalars($element);
+ } elseif (!is_scalar($element) && null !== $element) {
+ $result = false;
+ }
+
+ if ($result === false) {
+ break;
+ }
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/sebastian/global-state/src/ExcludeList.php b/vendor/sebastian/global-state/src/ExcludeList.php
new file mode 100644
index 000000000..5631f1186
--- /dev/null
+++ b/vendor/sebastian/global-state/src/ExcludeList.php
@@ -0,0 +1,119 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/global-state.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\GlobalState;
+
+use function in_array;
+use function strpos;
+use ReflectionClass;
+
+final class ExcludeList
+{
+ /**
+ * @var array
+ */
+ private $globalVariables = [];
+
+ /**
+ * @var string[]
+ */
+ private $classes = [];
+
+ /**
+ * @var string[]
+ */
+ private $classNamePrefixes = [];
+
+ /**
+ * @var string[]
+ */
+ private $parentClasses = [];
+
+ /**
+ * @var string[]
+ */
+ private $interfaces = [];
+
+ /**
+ * @var array
+ */
+ private $staticAttributes = [];
+
+ public function addGlobalVariable(string $variableName): void
+ {
+ $this->globalVariables[$variableName] = true;
+ }
+
+ public function addClass(string $className): void
+ {
+ $this->classes[] = $className;
+ }
+
+ public function addSubclassesOf(string $className): void
+ {
+ $this->parentClasses[] = $className;
+ }
+
+ public function addImplementorsOf(string $interfaceName): void
+ {
+ $this->interfaces[] = $interfaceName;
+ }
+
+ public function addClassNamePrefix(string $classNamePrefix): void
+ {
+ $this->classNamePrefixes[] = $classNamePrefix;
+ }
+
+ public function addStaticAttribute(string $className, string $attributeName): void
+ {
+ if (!isset($this->staticAttributes[$className])) {
+ $this->staticAttributes[$className] = [];
+ }
+
+ $this->staticAttributes[$className][$attributeName] = true;
+ }
+
+ public function isGlobalVariableExcluded(string $variableName): bool
+ {
+ return isset($this->globalVariables[$variableName]);
+ }
+
+ public function isStaticAttributeExcluded(string $className, string $attributeName): bool
+ {
+ if (in_array($className, $this->classes, true)) {
+ return true;
+ }
+
+ foreach ($this->classNamePrefixes as $prefix) {
+ if (strpos($className, $prefix) === 0) {
+ return true;
+ }
+ }
+
+ $class = new ReflectionClass($className);
+
+ foreach ($this->parentClasses as $type) {
+ if ($class->isSubclassOf($type)) {
+ return true;
+ }
+ }
+
+ foreach ($this->interfaces as $type) {
+ if ($class->implementsInterface($type)) {
+ return true;
+ }
+ }
+
+ if (isset($this->staticAttributes[$className][$attributeName])) {
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/sebastian/global-state/src/Restorer.php b/vendor/sebastian/global-state/src/Restorer.php
new file mode 100644
index 000000000..1633fcc11
--- /dev/null
+++ b/vendor/sebastian/global-state/src/Restorer.php
@@ -0,0 +1,143 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/global-state.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\GlobalState;
+
+use function array_diff;
+use function array_key_exists;
+use function array_keys;
+use function array_merge;
+use function function_exists;
+use function get_defined_functions;
+use function in_array;
+use function is_array;
+use ReflectionClass;
+use ReflectionProperty;
+
+/**
+ * Restorer of snapshots of global state.
+ */
+class Restorer
+{
+ /**
+ * Deletes function definitions that are not defined in a snapshot.
+ *
+ * @throws RuntimeException when the uopz_delete() function is not available
+ *
+ * @see https://github.com/krakjoe/uopz
+ */
+ public function restoreFunctions(Snapshot $snapshot): void
+ {
+ if (!function_exists('uopz_delete')) {
+ throw new RuntimeException('The uopz_delete() function is required for this operation');
+ }
+
+ $functions = get_defined_functions();
+
+ foreach (array_diff($functions['user'], $snapshot->functions()) as $function) {
+ uopz_delete($function);
+ }
+ }
+
+ /**
+ * Restores all global and super-global variables from a snapshot.
+ */
+ public function restoreGlobalVariables(Snapshot $snapshot): void
+ {
+ $superGlobalArrays = $snapshot->superGlobalArrays();
+
+ foreach ($superGlobalArrays as $superGlobalArray) {
+ $this->restoreSuperGlobalArray($snapshot, $superGlobalArray);
+ }
+
+ $globalVariables = $snapshot->globalVariables();
+
+ foreach (array_keys($GLOBALS) as $key) {
+ if ($key !== 'GLOBALS' &&
+ !in_array($key, $superGlobalArrays, true) &&
+ !$snapshot->excludeList()->isGlobalVariableExcluded($key)) {
+ if (array_key_exists($key, $globalVariables)) {
+ $GLOBALS[$key] = $globalVariables[$key];
+ } else {
+ unset($GLOBALS[$key]);
+ }
+ }
+ }
+ }
+
+ /**
+ * Restores all static attributes in user-defined classes from this snapshot.
+ */
+ public function restoreStaticAttributes(Snapshot $snapshot): void
+ {
+ $current = new Snapshot($snapshot->excludeList(), false, false, false, false, true, false, false, false, false);
+ $newClasses = array_diff($current->classes(), $snapshot->classes());
+
+ unset($current);
+
+ foreach ($snapshot->staticAttributes() as $className => $staticAttributes) {
+ foreach ($staticAttributes as $name => $value) {
+ $reflector = new ReflectionProperty($className, $name);
+ $reflector->setAccessible(true);
+ $reflector->setValue($value);
+ }
+ }
+
+ foreach ($newClasses as $className) {
+ $class = new ReflectionClass($className);
+ $defaults = $class->getDefaultProperties();
+
+ foreach ($class->getProperties() as $attribute) {
+ if (!$attribute->isStatic()) {
+ continue;
+ }
+
+ $name = $attribute->getName();
+
+ if ($snapshot->excludeList()->isStaticAttributeExcluded($className, $name)) {
+ continue;
+ }
+
+ if (!isset($defaults[$name])) {
+ continue;
+ }
+
+ $attribute->setAccessible(true);
+ $attribute->setValue($defaults[$name]);
+ }
+ }
+ }
+
+ /**
+ * Restores a super-global variable array from this snapshot.
+ */
+ private function restoreSuperGlobalArray(Snapshot $snapshot, string $superGlobalArray): void
+ {
+ $superGlobalVariables = $snapshot->superGlobalVariables();
+
+ if (isset($GLOBALS[$superGlobalArray]) &&
+ is_array($GLOBALS[$superGlobalArray]) &&
+ isset($superGlobalVariables[$superGlobalArray])) {
+ $keys = array_keys(
+ array_merge(
+ $GLOBALS[$superGlobalArray],
+ $superGlobalVariables[$superGlobalArray]
+ )
+ );
+
+ foreach ($keys as $key) {
+ if (isset($superGlobalVariables[$superGlobalArray][$key])) {
+ $GLOBALS[$superGlobalArray][$key] = $superGlobalVariables[$superGlobalArray][$key];
+ } else {
+ unset($GLOBALS[$superGlobalArray][$key]);
+ }
+ }
+ }
+ }
+}
diff --git a/vendor/sebastian/global-state/src/Snapshot.php b/vendor/sebastian/global-state/src/Snapshot.php
new file mode 100644
index 000000000..e33264eb0
--- /dev/null
+++ b/vendor/sebastian/global-state/src/Snapshot.php
@@ -0,0 +1,443 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/global-state.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\GlobalState;
+
+use const PHP_VERSION_ID;
+use function array_keys;
+use function array_merge;
+use function array_reverse;
+use function func_get_args;
+use function get_declared_classes;
+use function get_declared_interfaces;
+use function get_declared_traits;
+use function get_defined_constants;
+use function get_defined_functions;
+use function get_included_files;
+use function in_array;
+use function ini_get_all;
+use function is_array;
+use function is_object;
+use function is_resource;
+use function is_scalar;
+use function serialize;
+use function unserialize;
+use ReflectionClass;
+use SebastianBergmann\ObjectReflector\ObjectReflector;
+use SebastianBergmann\RecursionContext\Context;
+use Throwable;
+
+/**
+ * A snapshot of global state.
+ */
+class Snapshot
+{
+ /**
+ * @var ExcludeList
+ */
+ private $excludeList;
+
+ /**
+ * @var array
+ */
+ private $globalVariables = [];
+
+ /**
+ * @var array
+ */
+ private $superGlobalArrays = [];
+
+ /**
+ * @var array
+ */
+ private $superGlobalVariables = [];
+
+ /**
+ * @var array
+ */
+ private $staticAttributes = [];
+
+ /**
+ * @var array
+ */
+ private $iniSettings = [];
+
+ /**
+ * @var array
+ */
+ private $includedFiles = [];
+
+ /**
+ * @var array
+ */
+ private $constants = [];
+
+ /**
+ * @var array
+ */
+ private $functions = [];
+
+ /**
+ * @var array
+ */
+ private $interfaces = [];
+
+ /**
+ * @var array
+ */
+ private $classes = [];
+
+ /**
+ * @var array
+ */
+ private $traits = [];
+
+ /**
+ * Creates a snapshot of the current global state.
+ */
+ public function __construct(ExcludeList $excludeList = null, bool $includeGlobalVariables = true, bool $includeStaticAttributes = true, bool $includeConstants = true, bool $includeFunctions = true, bool $includeClasses = true, bool $includeInterfaces = true, bool $includeTraits = true, bool $includeIniSettings = true, bool $includeIncludedFiles = true)
+ {
+ $this->excludeList = $excludeList ?: new ExcludeList;
+
+ if ($includeConstants) {
+ $this->snapshotConstants();
+ }
+
+ if ($includeFunctions) {
+ $this->snapshotFunctions();
+ }
+
+ if ($includeClasses || $includeStaticAttributes) {
+ $this->snapshotClasses();
+ }
+
+ if ($includeInterfaces) {
+ $this->snapshotInterfaces();
+ }
+
+ if ($includeGlobalVariables) {
+ $this->setupSuperGlobalArrays();
+ $this->snapshotGlobals();
+ }
+
+ if ($includeStaticAttributes) {
+ $this->snapshotStaticAttributes();
+ }
+
+ if ($includeIniSettings) {
+ $this->iniSettings = ini_get_all(null, false);
+ }
+
+ if ($includeIncludedFiles) {
+ $this->includedFiles = get_included_files();
+ }
+
+ if ($includeTraits) {
+ $this->traits = get_declared_traits();
+ }
+ }
+
+ public function excludeList(): ExcludeList
+ {
+ return $this->excludeList;
+ }
+
+ public function globalVariables(): array
+ {
+ return $this->globalVariables;
+ }
+
+ public function superGlobalVariables(): array
+ {
+ return $this->superGlobalVariables;
+ }
+
+ public function superGlobalArrays(): array
+ {
+ return $this->superGlobalArrays;
+ }
+
+ public function staticAttributes(): array
+ {
+ return $this->staticAttributes;
+ }
+
+ public function iniSettings(): array
+ {
+ return $this->iniSettings;
+ }
+
+ public function includedFiles(): array
+ {
+ return $this->includedFiles;
+ }
+
+ public function constants(): array
+ {
+ return $this->constants;
+ }
+
+ public function functions(): array
+ {
+ return $this->functions;
+ }
+
+ public function interfaces(): array
+ {
+ return $this->interfaces;
+ }
+
+ public function classes(): array
+ {
+ return $this->classes;
+ }
+
+ public function traits(): array
+ {
+ return $this->traits;
+ }
+
+ /**
+ * Creates a snapshot user-defined constants.
+ */
+ private function snapshotConstants(): void
+ {
+ $constants = get_defined_constants(true);
+
+ if (isset($constants['user'])) {
+ $this->constants = $constants['user'];
+ }
+ }
+
+ /**
+ * Creates a snapshot user-defined functions.
+ */
+ private function snapshotFunctions(): void
+ {
+ $functions = get_defined_functions();
+
+ $this->functions = $functions['user'];
+ }
+
+ /**
+ * Creates a snapshot user-defined classes.
+ */
+ private function snapshotClasses(): void
+ {
+ foreach (array_reverse(get_declared_classes()) as $className) {
+ $class = new ReflectionClass($className);
+
+ if (!$class->isUserDefined()) {
+ break;
+ }
+
+ $this->classes[] = $className;
+ }
+
+ $this->classes = array_reverse($this->classes);
+ }
+
+ /**
+ * Creates a snapshot user-defined interfaces.
+ */
+ private function snapshotInterfaces(): void
+ {
+ foreach (array_reverse(get_declared_interfaces()) as $interfaceName) {
+ $class = new ReflectionClass($interfaceName);
+
+ if (!$class->isUserDefined()) {
+ break;
+ }
+
+ $this->interfaces[] = $interfaceName;
+ }
+
+ $this->interfaces = array_reverse($this->interfaces);
+ }
+
+ /**
+ * Creates a snapshot of all global and super-global variables.
+ */
+ private function snapshotGlobals(): void
+ {
+ $superGlobalArrays = $this->superGlobalArrays();
+
+ foreach ($superGlobalArrays as $superGlobalArray) {
+ $this->snapshotSuperGlobalArray($superGlobalArray);
+ }
+
+ foreach (array_keys($GLOBALS) as $key) {
+ if ($key !== 'GLOBALS' &&
+ !in_array($key, $superGlobalArrays, true) &&
+ $this->canBeSerialized($GLOBALS[$key]) &&
+ !$this->excludeList->isGlobalVariableExcluded($key)) {
+ /* @noinspection UnserializeExploitsInspection */
+ $this->globalVariables[$key] = unserialize(serialize($GLOBALS[$key]));
+ }
+ }
+ }
+
+ /**
+ * Creates a snapshot a super-global variable array.
+ */
+ private function snapshotSuperGlobalArray(string $superGlobalArray): void
+ {
+ $this->superGlobalVariables[$superGlobalArray] = [];
+
+ if (isset($GLOBALS[$superGlobalArray]) && is_array($GLOBALS[$superGlobalArray])) {
+ foreach ($GLOBALS[$superGlobalArray] as $key => $value) {
+ /* @noinspection UnserializeExploitsInspection */
+ $this->superGlobalVariables[$superGlobalArray][$key] = unserialize(serialize($value));
+ }
+ }
+ }
+
+ /**
+ * Creates a snapshot of all static attributes in user-defined classes.
+ */
+ private function snapshotStaticAttributes(): void
+ {
+ foreach ($this->classes as $className) {
+ $class = new ReflectionClass($className);
+ $snapshot = [];
+
+ foreach ($class->getProperties() as $attribute) {
+ if ($attribute->isStatic()) {
+ $name = $attribute->getName();
+
+ if ($this->excludeList->isStaticAttributeExcluded($className, $name)) {
+ continue;
+ }
+
+ $attribute->setAccessible(true);
+
+ if (PHP_VERSION_ID >= 70400 && !$attribute->isInitialized()) {
+ continue;
+ }
+
+ $value = $attribute->getValue();
+
+ if ($this->canBeSerialized($value)) {
+ /* @noinspection UnserializeExploitsInspection */
+ $snapshot[$name] = unserialize(serialize($value));
+ }
+ }
+ }
+
+ if (!empty($snapshot)) {
+ $this->staticAttributes[$className] = $snapshot;
+ }
+ }
+ }
+
+ /**
+ * Returns a list of all super-global variable arrays.
+ */
+ private function setupSuperGlobalArrays(): void
+ {
+ $this->superGlobalArrays = [
+ '_ENV',
+ '_POST',
+ '_GET',
+ '_COOKIE',
+ '_SERVER',
+ '_FILES',
+ '_REQUEST',
+ ];
+ }
+
+ private function canBeSerialized($variable): bool
+ {
+ if (is_scalar($variable) || $variable === null) {
+ return true;
+ }
+
+ if (is_resource($variable)) {
+ return false;
+ }
+
+ foreach ($this->enumerateObjectsAndResources($variable) as $value) {
+ if (is_resource($value)) {
+ return false;
+ }
+
+ if (is_object($value)) {
+ $class = new ReflectionClass($value);
+
+ if ($class->isAnonymous()) {
+ return false;
+ }
+
+ try {
+ @serialize($value);
+ } catch (Throwable $t) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ private function enumerateObjectsAndResources($variable): array
+ {
+ if (isset(func_get_args()[1])) {
+ $processed = func_get_args()[1];
+ } else {
+ $processed = new Context;
+ }
+
+ $result = [];
+
+ if ($processed->contains($variable)) {
+ return $result;
+ }
+
+ $array = $variable;
+ $processed->add($variable);
+
+ if (is_array($variable)) {
+ foreach ($array as $element) {
+ if (!is_array($element) && !is_object($element) && !is_resource($element)) {
+ continue;
+ }
+
+ if (!is_resource($element)) {
+ /** @noinspection SlowArrayOperationsInLoopInspection */
+ $result = array_merge(
+ $result,
+ $this->enumerateObjectsAndResources($element, $processed)
+ );
+ } else {
+ $result[] = $element;
+ }
+ }
+ } else {
+ $result[] = $variable;
+
+ foreach ((new ObjectReflector)->getAttributes($variable) as $value) {
+ if (!is_array($value) && !is_object($value) && !is_resource($value)) {
+ continue;
+ }
+
+ if (!is_resource($value)) {
+ /** @noinspection SlowArrayOperationsInLoopInspection */
+ $result = array_merge(
+ $result,
+ $this->enumerateObjectsAndResources($value, $processed)
+ );
+ } else {
+ $result[] = $value;
+ }
+ }
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/sebastian/global-state/src/exceptions/Exception.php b/vendor/sebastian/global-state/src/exceptions/Exception.php
new file mode 100644
index 000000000..94432008e
--- /dev/null
+++ b/vendor/sebastian/global-state/src/exceptions/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/global-state.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\GlobalState;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/global-state/src/exceptions/RuntimeException.php b/vendor/sebastian/global-state/src/exceptions/RuntimeException.php
new file mode 100644
index 000000000..79f02a114
--- /dev/null
+++ b/vendor/sebastian/global-state/src/exceptions/RuntimeException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/global-state.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\GlobalState;
+
+final class RuntimeException extends \RuntimeException implements Exception
+{
+}
diff --git a/vendor/sebastian/lines-of-code/.psalm/baseline.xml b/vendor/sebastian/lines-of-code/.psalm/baseline.xml
new file mode 100644
index 000000000..77e688e07
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/.psalm/baseline.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44"/>
diff --git a/vendor/sebastian/lines-of-code/.psalm/config.xml b/vendor/sebastian/lines-of-code/.psalm/config.xml
new file mode 100644
index 000000000..15abef058
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/.psalm/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<psalm
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ resolveFromConfigFile="false"
+ totallyTyped="true"
+ errorBaseline=".psalm/baseline.xml"
+>
+ <projectFiles>
+ <directory name="src" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+</psalm>
diff --git a/vendor/sebastian/lines-of-code/ChangeLog.md b/vendor/sebastian/lines-of-code/ChangeLog.md
new file mode 100644
index 000000000..39bcaad49
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/ChangeLog.md
@@ -0,0 +1,34 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [1.0.3] - 2020-11-28
+
+### Fixed
+
+* Files that do not contain a newline were not handled correctly
+
+### Changed
+
+* A line of code is no longer considered to be a Logical Line of Code if it does not contain an `Expr` node
+
+## [1.0.2] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\LinesOfCode\Exception` now correctly extends `\Throwable`
+
+## [1.0.1] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [1.0.0] - 2020-07-22
+
+* Initial release
+
+[1.0.3]: https://github.com/sebastianbergmann/lines-of-code/compare/1.0.2...1.0.3
+[1.0.2]: https://github.com/sebastianbergmann/lines-of-code/compare/1.0.1...1.0.2
+[1.0.1]: https://github.com/sebastianbergmann/lines-of-code/compare/1.0.0...1.0.1
+[1.0.0]: https://github.com/sebastianbergmann/lines-of-code/compare/f959e71f00e591288acc024afe9cb966c6cf9bd6...1.0.0
diff --git a/vendor/sebastian/lines-of-code/LICENSE b/vendor/sebastian/lines-of-code/LICENSE
new file mode 100644
index 000000000..d170181fa
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/LICENSE
@@ -0,0 +1,33 @@
+sebastian/lines-of-code
+
+Copyright (c) 2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/lines-of-code/README.md b/vendor/sebastian/lines-of-code/README.md
new file mode 100644
index 000000000..9457ef5a7
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/README.md
@@ -0,0 +1,22 @@
+# sebastian/lines-of-code
+
+Library for counting the lines of code in PHP source code.
+
+[![Latest Stable Version](https://img.shields.io/packagist/v/sebastian/lines-of-code.svg?style=flat-square)](https://packagist.org/packages/sebastian/lines-of-code)
+[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.3-8892BF.svg?style=flat-square)](https://php.net/)
+[![CI Status](https://github.com/sebastianbergmann/lines-of-code/workflows/CI/badge.svg?branch=master&event=push)](https://phpunit.de/build-status.html)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/lines-of-code/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/lines-of-code)
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/lines-of-code
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/lines-of-code
+```
diff --git a/vendor/sebastian/lines-of-code/composer.json b/vendor/sebastian/lines-of-code/composer.json
new file mode 100644
index 000000000..95bb9e363
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/composer.json
@@ -0,0 +1,42 @@
+{
+ "name": "sebastian/lines-of-code",
+ "description": "Library for counting the lines of code in PHP source code",
+ "type": "library",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues"
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3",
+ "nikic/php-parser": "^4.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/lines-of-code/src/Counter.php b/vendor/sebastian/lines-of-code/src/Counter.php
new file mode 100644
index 000000000..cfe5e20a7
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/src/Counter.php
@@ -0,0 +1,91 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/lines-of-code.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\LinesOfCode;
+
+use function substr_count;
+use PhpParser\Error;
+use PhpParser\Lexer;
+use PhpParser\Node;
+use PhpParser\NodeTraverser;
+use PhpParser\Parser;
+use PhpParser\ParserFactory;
+
+final class Counter
+{
+ /**
+ * @throws RuntimeException
+ */
+ public function countInSourceFile(string $sourceFile): LinesOfCode
+ {
+ return $this->countInSourceString(file_get_contents($sourceFile));
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ public function countInSourceString(string $source): LinesOfCode
+ {
+ $linesOfCode = substr_count($source, "\n");
+
+ if ($linesOfCode === 0 && !empty($source)) {
+ $linesOfCode = 1;
+ }
+
+ try {
+ $nodes = $this->parser()->parse($source);
+
+ assert($nodes !== null);
+
+ return $this->countInAbstractSyntaxTree($linesOfCode, $nodes);
+
+ // @codeCoverageIgnoreStart
+ } catch (Error $error) {
+ throw new RuntimeException(
+ $error->getMessage(),
+ (int) $error->getCode(),
+ $error
+ );
+ }
+ // @codeCoverageIgnoreEnd
+ }
+
+ /**
+ * @param Node[] $nodes
+ *
+ * @throws RuntimeException
+ */
+ public function countInAbstractSyntaxTree(int $linesOfCode, array $nodes): LinesOfCode
+ {
+ $traverser = new NodeTraverser;
+ $visitor = new LineCountingVisitor($linesOfCode);
+
+ $traverser->addVisitor($visitor);
+
+ try {
+ /* @noinspection UnusedFunctionResultInspection */
+ $traverser->traverse($nodes);
+ // @codeCoverageIgnoreStart
+ } catch (Error $error) {
+ throw new RuntimeException(
+ $error->getMessage(),
+ (int) $error->getCode(),
+ $error
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ return $visitor->result();
+ }
+
+ private function parser(): Parser
+ {
+ return (new ParserFactory)->create(ParserFactory::PREFER_PHP7, new Lexer);
+ }
+}
diff --git a/vendor/sebastian/lines-of-code/src/Exception/Exception.php b/vendor/sebastian/lines-of-code/src/Exception/Exception.php
new file mode 100644
index 000000000..11d543aa7
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/src/Exception/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/lines-of-code.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\LinesOfCode;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php b/vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php
new file mode 100644
index 000000000..46a5c1b1f
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/src/Exception/IllogicalValuesException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/lines-of-code.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\LinesOfCode;
+
+use LogicException;
+
+final class IllogicalValuesException extends LogicException implements Exception
+{
+}
diff --git a/vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php b/vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php
new file mode 100644
index 000000000..40d27e1f0
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/src/Exception/NegativeValueException.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/lines-of-code.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\LinesOfCode;
+
+use InvalidArgumentException;
+
+final class NegativeValueException extends InvalidArgumentException implements Exception
+{
+}
diff --git a/vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php b/vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php
new file mode 100644
index 000000000..4e6d66d0d
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/src/Exception/RuntimeException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/lines-of-code.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\LinesOfCode;
+
+final class RuntimeException extends \RuntimeException implements Exception
+{
+}
diff --git a/vendor/sebastian/lines-of-code/src/LineCountingVisitor.php b/vendor/sebastian/lines-of-code/src/LineCountingVisitor.php
new file mode 100644
index 000000000..ff433b2fc
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/src/LineCountingVisitor.php
@@ -0,0 +1,82 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/lines-of-code.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\LinesOfCode;
+
+use function array_merge;
+use function array_unique;
+use function count;
+use PhpParser\Comment;
+use PhpParser\Node;
+use PhpParser\Node\Expr;
+use PhpParser\NodeVisitorAbstract;
+
+final class LineCountingVisitor extends NodeVisitorAbstract
+{
+ /**
+ * @var int
+ */
+ private $linesOfCode;
+
+ /**
+ * @var Comment[]
+ */
+ private $comments = [];
+
+ /**
+ * @var int[]
+ */
+ private $linesWithStatements = [];
+
+ public function __construct(int $linesOfCode)
+ {
+ $this->linesOfCode = $linesOfCode;
+ }
+
+ public function enterNode(Node $node): void
+ {
+ $this->comments = array_merge($this->comments, $node->getComments());
+
+ if (!$node instanceof Expr) {
+ return;
+ }
+
+ $this->linesWithStatements[] = $node->getStartLine();
+ }
+
+ public function result(): LinesOfCode
+ {
+ $commentLinesOfCode = 0;
+
+ foreach ($this->comments() as $comment) {
+ $commentLinesOfCode += ($comment->getEndLine() - $comment->getStartLine() + 1);
+ }
+
+ return new LinesOfCode(
+ $this->linesOfCode,
+ $commentLinesOfCode,
+ $this->linesOfCode - $commentLinesOfCode,
+ count(array_unique($this->linesWithStatements))
+ );
+ }
+
+ /**
+ * @return Comment[]
+ */
+ private function comments(): array
+ {
+ $comments = [];
+
+ foreach ($this->comments as $comment) {
+ $comments[$comment->getStartLine() . '_' . $comment->getStartTokenPos() . '_' . $comment->getEndLine() . '_' . $comment->getEndTokenPos()] = $comment;
+ }
+
+ return $comments;
+ }
+}
diff --git a/vendor/sebastian/lines-of-code/src/LinesOfCode.php b/vendor/sebastian/lines-of-code/src/LinesOfCode.php
new file mode 100644
index 000000000..41829981a
--- /dev/null
+++ b/vendor/sebastian/lines-of-code/src/LinesOfCode.php
@@ -0,0 +1,98 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/lines-of-code.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\LinesOfCode;
+
+/**
+ * @psalm-immutable
+ */
+final class LinesOfCode
+{
+ /**
+ * @var int
+ */
+ private $linesOfCode;
+
+ /**
+ * @var int
+ */
+ private $commentLinesOfCode;
+
+ /**
+ * @var int
+ */
+ private $nonCommentLinesOfCode;
+
+ /**
+ * @var int
+ */
+ private $logicalLinesOfCode;
+
+ /**
+ * @throws IllogicalValuesException
+ * @throws NegativeValueException
+ */
+ public function __construct(int $linesOfCode, int $commentLinesOfCode, int $nonCommentLinesOfCode, int $logicalLinesOfCode)
+ {
+ if ($linesOfCode < 0) {
+ throw new NegativeValueException('$linesOfCode must not be negative');
+ }
+
+ if ($commentLinesOfCode < 0) {
+ throw new NegativeValueException('$commentLinesOfCode must not be negative');
+ }
+
+ if ($nonCommentLinesOfCode < 0) {
+ throw new NegativeValueException('$nonCommentLinesOfCode must not be negative');
+ }
+
+ if ($logicalLinesOfCode < 0) {
+ throw new NegativeValueException('$logicalLinesOfCode must not be negative');
+ }
+
+ if ($linesOfCode - $commentLinesOfCode !== $nonCommentLinesOfCode) {
+ throw new IllogicalValuesException('$linesOfCode !== $commentLinesOfCode + $nonCommentLinesOfCode');
+ }
+
+ $this->linesOfCode = $linesOfCode;
+ $this->commentLinesOfCode = $commentLinesOfCode;
+ $this->nonCommentLinesOfCode = $nonCommentLinesOfCode;
+ $this->logicalLinesOfCode = $logicalLinesOfCode;
+ }
+
+ public function linesOfCode(): int
+ {
+ return $this->linesOfCode;
+ }
+
+ public function commentLinesOfCode(): int
+ {
+ return $this->commentLinesOfCode;
+ }
+
+ public function nonCommentLinesOfCode(): int
+ {
+ return $this->nonCommentLinesOfCode;
+ }
+
+ public function logicalLinesOfCode(): int
+ {
+ return $this->logicalLinesOfCode;
+ }
+
+ public function plus(self $other): self
+ {
+ return new self(
+ $this->linesOfCode() + $other->linesOfCode(),
+ $this->commentLinesOfCode() + $other->commentLinesOfCode(),
+ $this->nonCommentLinesOfCode() + $other->nonCommentLinesOfCode(),
+ $this->logicalLinesOfCode() + $other->logicalLinesOfCode(),
+ );
+ }
+}
diff --git a/vendor/sebastian/object-enumerator/.psalm/baseline.xml b/vendor/sebastian/object-enumerator/.psalm/baseline.xml
new file mode 100644
index 000000000..180b3f803
--- /dev/null
+++ b/vendor/sebastian/object-enumerator/.psalm/baseline.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44">
+ <file src="src/Enumerator.php">
+ <DocblockTypeContradiction occurrences="2">
+ <code>!is_array($variable) &amp;&amp; !is_object($variable)</code>
+ <code>is_object($variable)</code>
+ </DocblockTypeContradiction>
+ </file>
+</files>
diff --git a/vendor/sebastian/object-enumerator/.psalm/config.xml b/vendor/sebastian/object-enumerator/.psalm/config.xml
new file mode 100644
index 000000000..2a4b16f22
--- /dev/null
+++ b/vendor/sebastian/object-enumerator/.psalm/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<psalm
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ resolveFromConfigFile="false"
+ totallyTyped="false"
+ errorBaseline=".psalm/baseline.xml"
+>
+ <projectFiles>
+ <directory name="src" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+</psalm>
diff --git a/vendor/sebastian/object-enumerator/ChangeLog.md b/vendor/sebastian/object-enumerator/ChangeLog.md
new file mode 100644
index 000000000..886554189
--- /dev/null
+++ b/vendor/sebastian/object-enumerator/ChangeLog.md
@@ -0,0 +1,88 @@
+# Change Log
+
+All notable changes to `sebastianbergmann/object-enumerator` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [4.0.4] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\ObjectEnumerator\Exception` now correctly extends `\Throwable`
+
+## [4.0.3] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [4.0.2] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [4.0.1] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## [4.0.0] - 2020-02-07
+
+### Removed
+
+* This component is no longer supported on PHP 7.0, PHP 7.1, and PHP 7.2
+
+## [3.0.3] - 2017-08-03
+
+### Changed
+
+* Bumped required version of `sebastian/object-reflector`
+
+## [3.0.2] - 2017-03-12
+
+### Changed
+
+* `sebastian/object-reflector` is now a dependency
+
+## [3.0.1] - 2017-03-12
+
+### Fixed
+
+* Objects aggregated in inherited attributes are not enumerated
+
+## [3.0.0] - 2017-03-03
+
+### Removed
+
+* This component is no longer supported on PHP 5.6
+
+## [2.0.1] - 2017-02-18
+
+### Fixed
+
+* Fixed [#2](https://github.com/sebastianbergmann/phpunit/pull/2): Exceptions in `ReflectionProperty::getValue()` are not handled
+
+## [2.0.0] - 2016-11-19
+
+### Changed
+
+* This component is now compatible with `sebastian/recursion-context: ~1.0.4`
+
+## 1.0.0 - 2016-02-04
+
+### Added
+
+* Initial release
+
+[4.0.4]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.3...4.0.4
+[4.0.3]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.2...4.0.3
+[4.0.2]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.1...4.0.2
+[4.0.1]: https://github.com/sebastianbergmann/object-enumerator/compare/4.0.0...4.0.1
+[4.0.0]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.3...4.0.0
+[3.0.3]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.2...3.0.3
+[3.0.2]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.1...3.0.2
+[3.0.1]: https://github.com/sebastianbergmann/object-enumerator/compare/3.0.0...3.0.1
+[3.0.0]: https://github.com/sebastianbergmann/object-enumerator/compare/2.0...3.0.0
+[2.0.1]: https://github.com/sebastianbergmann/object-enumerator/compare/2.0.0...2.0.1
+[2.0.0]: https://github.com/sebastianbergmann/object-enumerator/compare/1.0...2.0.0
+
diff --git a/vendor/sebastian/object-enumerator/LICENSE b/vendor/sebastian/object-enumerator/LICENSE
new file mode 100644
index 000000000..1389ad396
--- /dev/null
+++ b/vendor/sebastian/object-enumerator/LICENSE
@@ -0,0 +1,33 @@
+Object Enumerator
+
+Copyright (c) 2016-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/object-enumerator/README.md b/vendor/sebastian/object-enumerator/README.md
new file mode 100644
index 000000000..afca0177b
--- /dev/null
+++ b/vendor/sebastian/object-enumerator/README.md
@@ -0,0 +1,20 @@
+# sebastian/object-enumerator
+
+[![CI Status](https://github.com/sebastianbergmann/object-enumerator/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/object-enumerator/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/object-enumerator/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/object-enumerator)
+
+Traverses array structures and object graphs to enumerate all referenced objects.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/object-enumerator
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/object-enumerator
+```
diff --git a/vendor/sebastian/object-enumerator/composer.json b/vendor/sebastian/object-enumerator/composer.json
new file mode 100644
index 000000000..d68a21330
--- /dev/null
+++ b/vendor/sebastian/object-enumerator/composer.json
@@ -0,0 +1,43 @@
+{
+ "name": "sebastian/object-enumerator",
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "prefer-stable": true,
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/_fixture/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/object-enumerator/phpunit.xml b/vendor/sebastian/object-enumerator/phpunit.xml
new file mode 100644
index 000000000..7be976b13
--- /dev/null
+++ b/vendor/sebastian/object-enumerator/phpunit.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
+ bootstrap="vendor/autoload.php"
+ executionOrder="depends,defects"
+ forceCoversAnnotation="true"
+ beStrictAboutCoversAnnotation="true"
+ beStrictAboutOutputDuringTests="true"
+ beStrictAboutTodoAnnotatedTests="true"
+ failOnRisky="true"
+ failOnWarning="true"
+ verbose="true">
+ <testsuites>
+ <testsuite name="default">
+ <directory suffix="Test.php">tests</directory>
+ </testsuite>
+ </testsuites>
+
+ <coverage processUncoveredFiles="true">
+ <include>
+ <directory suffix=".php">src</directory>
+ </include>
+ </coverage>
+</phpunit>
diff --git a/vendor/sebastian/object-enumerator/src/Enumerator.php b/vendor/sebastian/object-enumerator/src/Enumerator.php
new file mode 100644
index 000000000..de75d17c5
--- /dev/null
+++ b/vendor/sebastian/object-enumerator/src/Enumerator.php
@@ -0,0 +1,88 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/object-enumerator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\ObjectEnumerator;
+
+use function array_merge;
+use function func_get_args;
+use function is_array;
+use function is_object;
+use SebastianBergmann\ObjectReflector\ObjectReflector;
+use SebastianBergmann\RecursionContext\Context;
+
+/**
+ * Traverses array structures and object graphs
+ * to enumerate all referenced objects.
+ */
+class Enumerator
+{
+ /**
+ * Returns an array of all objects referenced either
+ * directly or indirectly by a variable.
+ *
+ * @param array|object $variable
+ *
+ * @return object[]
+ */
+ public function enumerate($variable)
+ {
+ if (!is_array($variable) && !is_object($variable)) {
+ throw new InvalidArgumentException;
+ }
+
+ if (isset(func_get_args()[1])) {
+ if (!func_get_args()[1] instanceof Context) {
+ throw new InvalidArgumentException;
+ }
+
+ $processed = func_get_args()[1];
+ } else {
+ $processed = new Context;
+ }
+
+ $objects = [];
+
+ if ($processed->contains($variable)) {
+ return $objects;
+ }
+
+ $array = $variable;
+ $processed->add($variable);
+
+ if (is_array($variable)) {
+ foreach ($array as $element) {
+ if (!is_array($element) && !is_object($element)) {
+ continue;
+ }
+
+ $objects = array_merge(
+ $objects,
+ $this->enumerate($element, $processed)
+ );
+ }
+ } else {
+ $objects[] = $variable;
+
+ $reflector = new ObjectReflector;
+
+ foreach ($reflector->getAttributes($variable) as $value) {
+ if (!is_array($value) && !is_object($value)) {
+ continue;
+ }
+
+ $objects = array_merge(
+ $objects,
+ $this->enumerate($value, $processed)
+ );
+ }
+ }
+
+ return $objects;
+ }
+}
diff --git a/vendor/sebastian/object-enumerator/src/Exception.php b/vendor/sebastian/object-enumerator/src/Exception.php
new file mode 100644
index 000000000..2f09d70aa
--- /dev/null
+++ b/vendor/sebastian/object-enumerator/src/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/object-enumerator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\ObjectEnumerator;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/object-enumerator/src/InvalidArgumentException.php b/vendor/sebastian/object-enumerator/src/InvalidArgumentException.php
new file mode 100644
index 000000000..ce2037cdb
--- /dev/null
+++ b/vendor/sebastian/object-enumerator/src/InvalidArgumentException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/object-enumerator.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\ObjectEnumerator;
+
+class InvalidArgumentException extends \InvalidArgumentException implements Exception
+{
+}
diff --git a/vendor/sebastian/object-reflector/.psalm/baseline.xml b/vendor/sebastian/object-reflector/.psalm/baseline.xml
new file mode 100644
index 000000000..965c12757
--- /dev/null
+++ b/vendor/sebastian/object-reflector/.psalm/baseline.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44">
+ <file src="src/ObjectReflector.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>is_object($object)</code>
+ </DocblockTypeContradiction>
+ </file>
+</files>
diff --git a/vendor/sebastian/object-reflector/.psalm/config.xml b/vendor/sebastian/object-reflector/.psalm/config.xml
new file mode 100644
index 000000000..2a4b16f22
--- /dev/null
+++ b/vendor/sebastian/object-reflector/.psalm/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<psalm
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ resolveFromConfigFile="false"
+ totallyTyped="false"
+ errorBaseline=".psalm/baseline.xml"
+>
+ <projectFiles>
+ <directory name="src" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+</psalm>
diff --git a/vendor/sebastian/object-reflector/ChangeLog.md b/vendor/sebastian/object-reflector/ChangeLog.md
new file mode 100644
index 000000000..7fa62e90f
--- /dev/null
+++ b/vendor/sebastian/object-reflector/ChangeLog.md
@@ -0,0 +1,55 @@
+# Change Log
+
+All notable changes to `sebastianbergmann/object-reflector` are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [2.0.4] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\ObjectReflector\Exception` now correctly extends `\Throwable`
+
+## [2.0.3] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [2.0.2] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [2.0.1] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## [2.0.0] - 2020-02-07
+
+### Removed
+
+* This component is no longer supported on PHP 7.0, PHP 7.1, and PHP 7.2
+
+## [1.1.1] - 2017-03-29
+
+* Fixed [#1](https://github.com/sebastianbergmann/object-reflector/issues/1): Attributes with non-string names are not handled correctly
+
+## [1.1.0] - 2017-03-16
+
+### Changed
+
+* Changed implementation of `ObjectReflector::getattributes()` to use `(array)` cast instead of `ReflectionObject`
+
+## 1.0.0 - 2017-03-12
+
+* Initial release
+
+[2.0.4]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.3...2.0.4
+[2.0.3]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.2...2.0.3
+[2.0.2]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.1...2.0.2
+[2.0.1]: https://github.com/sebastianbergmann/object-reflector/compare/2.0.0...2.0.1
+[2.0.0]: https://github.com/sebastianbergmann/object-reflector/compare/1.1.1...2.0.0
+[1.1.1]: https://github.com/sebastianbergmann/object-reflector/compare/1.1.0...1.1.1
+[1.1.0]: https://github.com/sebastianbergmann/object-reflector/compare/1.0.0...1.1.0
diff --git a/vendor/sebastian/object-reflector/LICENSE b/vendor/sebastian/object-reflector/LICENSE
new file mode 100644
index 000000000..a80c16192
--- /dev/null
+++ b/vendor/sebastian/object-reflector/LICENSE
@@ -0,0 +1,33 @@
+Object Reflector
+
+Copyright (c) 2017-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/object-reflector/README.md b/vendor/sebastian/object-reflector/README.md
new file mode 100644
index 000000000..b7d5ae95f
--- /dev/null
+++ b/vendor/sebastian/object-reflector/README.md
@@ -0,0 +1,20 @@
+# sebastian/object-reflector
+
+[![CI Status](https://github.com/sebastianbergmann/object-reflector/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/object-reflector/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/object-reflector/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/object-reflector)
+
+Allows reflection of object attributes, including inherited and non-public ones.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/object-reflector
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/object-reflector
+```
diff --git a/vendor/sebastian/object-reflector/composer.json b/vendor/sebastian/object-reflector/composer.json
new file mode 100644
index 000000000..36a337885
--- /dev/null
+++ b/vendor/sebastian/object-reflector/composer.json
@@ -0,0 +1,41 @@
+{
+ "name": "sebastian/object-reflector",
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "prefer-stable": true,
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/_fixture/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/object-reflector/src/Exception.php b/vendor/sebastian/object-reflector/src/Exception.php
new file mode 100644
index 000000000..36f8efeca
--- /dev/null
+++ b/vendor/sebastian/object-reflector/src/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/object-reflector.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\ObjectReflector;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/object-reflector/src/InvalidArgumentException.php b/vendor/sebastian/object-reflector/src/InvalidArgumentException.php
new file mode 100644
index 000000000..34b4cca19
--- /dev/null
+++ b/vendor/sebastian/object-reflector/src/InvalidArgumentException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/object-reflector.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\ObjectReflector;
+
+class InvalidArgumentException extends \InvalidArgumentException implements Exception
+{
+}
diff --git a/vendor/sebastian/object-reflector/src/ObjectReflector.php b/vendor/sebastian/object-reflector/src/ObjectReflector.php
new file mode 100644
index 000000000..4abb5f55f
--- /dev/null
+++ b/vendor/sebastian/object-reflector/src/ObjectReflector.php
@@ -0,0 +1,51 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/object-reflector.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\ObjectReflector;
+
+use function count;
+use function explode;
+use function get_class;
+use function is_object;
+
+class ObjectReflector
+{
+ /**
+ * @param object $object
+ *
+ * @throws InvalidArgumentException
+ */
+ public function getAttributes($object): array
+ {
+ if (!is_object($object)) {
+ throw new InvalidArgumentException;
+ }
+
+ $attributes = [];
+ $className = get_class($object);
+
+ foreach ((array) $object as $name => $value) {
+ $name = explode("\0", (string) $name);
+
+ if (count($name) === 1) {
+ $name = $name[0];
+ } else {
+ if ($name[1] !== $className) {
+ $name = $name[1] . '::' . $name[2];
+ } else {
+ $name = $name[2];
+ }
+ }
+
+ $attributes[$name] = $value;
+ }
+
+ return $attributes;
+ }
+}
diff --git a/vendor/sebastian/recursion-context/.psalm/baseline.xml b/vendor/sebastian/recursion-context/.psalm/baseline.xml
new file mode 100644
index 000000000..b946db1a5
--- /dev/null
+++ b/vendor/sebastian/recursion-context/.psalm/baseline.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.0.1@b1e2e30026936ef8d5bf6a354d1c3959b6231f44">
+ <file src="src/Context.php">
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>is_array($array)</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+</files>
diff --git a/vendor/sebastian/recursion-context/.psalm/config.xml b/vendor/sebastian/recursion-context/.psalm/config.xml
new file mode 100644
index 000000000..2a4b16f22
--- /dev/null
+++ b/vendor/sebastian/recursion-context/.psalm/config.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<psalm
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ resolveFromConfigFile="false"
+ totallyTyped="false"
+ errorBaseline=".psalm/baseline.xml"
+>
+ <projectFiles>
+ <directory name="src" />
+ <ignoreFiles>
+ <directory name="vendor" />
+ </ignoreFiles>
+ </projectFiles>
+</psalm>
diff --git a/vendor/sebastian/recursion-context/ChangeLog.md b/vendor/sebastian/recursion-context/ChangeLog.md
new file mode 100644
index 000000000..2fbacc2c3
--- /dev/null
+++ b/vendor/sebastian/recursion-context/ChangeLog.md
@@ -0,0 +1,33 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [4.0.4] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\RecursionContext\Exception` now correctly extends `\Throwable`
+
+## [4.0.3] - 2020-09-28
+
+### Changed
+
+* [#21](https://github.com/sebastianbergmann/recursion-context/pull/21): Add type annotations for in/out parameters
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [4.0.2] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [4.0.1] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+[4.0.4]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.3...4.0.4
+[4.0.3]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.2...4.0.3
+[4.0.2]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.1...4.0.2
+[4.0.1]: https://github.com/sebastianbergmann/recursion-context/compare/4.0.0...4.0.1
diff --git a/vendor/sebastian/recursion-context/LICENSE b/vendor/sebastian/recursion-context/LICENSE
new file mode 100644
index 000000000..0faffbbb2
--- /dev/null
+++ b/vendor/sebastian/recursion-context/LICENSE
@@ -0,0 +1,33 @@
+Recursion Context
+
+Copyright (c) 2002-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/recursion-context/README.md b/vendor/sebastian/recursion-context/README.md
new file mode 100644
index 000000000..8e4d2a084
--- /dev/null
+++ b/vendor/sebastian/recursion-context/README.md
@@ -0,0 +1,18 @@
+# sebastian/recursion-context
+
+[![CI Status](https://github.com/sebastianbergmann/recursion-context/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/recursion-context/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/recursion-context/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/recursion-context)
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/recursion-context
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/recursion-context
+```
diff --git a/vendor/sebastian/recursion-context/composer.json b/vendor/sebastian/recursion-context/composer.json
new file mode 100644
index 000000000..8a5408232
--- /dev/null
+++ b/vendor/sebastian/recursion-context/composer.json
@@ -0,0 +1,44 @@
+{
+ "name": "sebastian/recursion-context",
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "[email protected]"
+ }
+ ],
+ "prefer-stable": true,
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/recursion-context/src/Context.php b/vendor/sebastian/recursion-context/src/Context.php
new file mode 100644
index 000000000..87fe7b04f
--- /dev/null
+++ b/vendor/sebastian/recursion-context/src/Context.php
@@ -0,0 +1,186 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of the Recursion Context package.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\RecursionContext;
+
+use const PHP_INT_MAX;
+use const PHP_INT_MIN;
+use function array_pop;
+use function array_slice;
+use function count;
+use function is_array;
+use function is_object;
+use function random_int;
+use function spl_object_hash;
+use SplObjectStorage;
+
+/**
+ * A context containing previously processed arrays and objects
+ * when recursively processing a value.
+ */
+final class Context
+{
+ /**
+ * @var array[]
+ */
+ private $arrays;
+
+ /**
+ * @var SplObjectStorage
+ */
+ private $objects;
+
+ /**
+ * Initialises the context.
+ */
+ public function __construct()
+ {
+ $this->arrays = [];
+ $this->objects = new SplObjectStorage;
+ }
+
+ /**
+ * @codeCoverageIgnore
+ */
+ public function __destruct()
+ {
+ foreach ($this->arrays as &$array) {
+ if (is_array($array)) {
+ array_pop($array);
+ array_pop($array);
+ }
+ }
+ }
+
+ /**
+ * Adds a value to the context.
+ *
+ * @param array|object $value the value to add
+ *
+ * @throws InvalidArgumentException Thrown if $value is not an array or object
+ *
+ * @return bool|int|string the ID of the stored value, either as a string or integer
+ *
+ * @psalm-template T
+ * @psalm-param T $value
+ * @param-out T $value
+ */
+ public function add(&$value)
+ {
+ if (is_array($value)) {
+ return $this->addArray($value);
+ }
+
+ if (is_object($value)) {
+ return $this->addObject($value);
+ }
+
+ throw new InvalidArgumentException(
+ 'Only arrays and objects are supported'
+ );
+ }
+
+ /**
+ * Checks if the given value exists within the context.
+ *
+ * @param array|object $value the value to check
+ *
+ * @throws InvalidArgumentException Thrown if $value is not an array or object
+ *
+ * @return false|int|string the string or integer ID of the stored value if it has already been seen, or false if the value is not stored
+ *
+ * @psalm-template T
+ * @psalm-param T $value
+ * @param-out T $value
+ */
+ public function contains(&$value)
+ {
+ if (is_array($value)) {
+ return $this->containsArray($value);
+ }
+
+ if (is_object($value)) {
+ return $this->containsObject($value);
+ }
+
+ throw new InvalidArgumentException(
+ 'Only arrays and objects are supported'
+ );
+ }
+
+ /**
+ * @return bool|int
+ */
+ private function addArray(array &$array)
+ {
+ $key = $this->containsArray($array);
+
+ if ($key !== false) {
+ return $key;
+ }
+
+ $key = count($this->arrays);
+ $this->arrays[] = &$array;
+
+ if (!isset($array[PHP_INT_MAX]) && !isset($array[PHP_INT_MAX - 1])) {
+ $array[] = $key;
+ $array[] = $this->objects;
+ } else { /* cover the improbable case too */
+ do {
+ $key = random_int(PHP_INT_MIN, PHP_INT_MAX);
+ } while (isset($array[$key]));
+
+ $array[$key] = $key;
+
+ do {
+ $key = random_int(PHP_INT_MIN, PHP_INT_MAX);
+ } while (isset($array[$key]));
+
+ $array[$key] = $this->objects;
+ }
+
+ return $key;
+ }
+
+ /**
+ * @param object $object
+ */
+ private function addObject($object): string
+ {
+ if (!$this->objects->contains($object)) {
+ $this->objects->attach($object);
+ }
+
+ return spl_object_hash($object);
+ }
+
+ /**
+ * @return false|int
+ */
+ private function containsArray(array &$array)
+ {
+ $end = array_slice($array, -2);
+
+ return isset($end[1]) && $end[1] === $this->objects ? $end[0] : false;
+ }
+
+ /**
+ * @param object $value
+ *
+ * @return false|string
+ */
+ private function containsObject($value)
+ {
+ if ($this->objects->contains($value)) {
+ return spl_object_hash($value);
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/sebastian/recursion-context/src/Exception.php b/vendor/sebastian/recursion-context/src/Exception.php
new file mode 100644
index 000000000..e3a9c017d
--- /dev/null
+++ b/vendor/sebastian/recursion-context/src/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of the Recursion Context package.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\RecursionContext;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/recursion-context/src/InvalidArgumentException.php b/vendor/sebastian/recursion-context/src/InvalidArgumentException.php
new file mode 100644
index 000000000..627c8bdf4
--- /dev/null
+++ b/vendor/sebastian/recursion-context/src/InvalidArgumentException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of the Recursion Context package.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\RecursionContext;
+
+final class InvalidArgumentException extends \InvalidArgumentException implements Exception
+{
+}
diff --git a/vendor/sebastian/resource-operations/.gitattributes b/vendor/sebastian/resource-operations/.gitattributes
new file mode 100644
index 000000000..85e55ebca
--- /dev/null
+++ b/vendor/sebastian/resource-operations/.gitattributes
@@ -0,0 +1,7 @@
+/.github export-ignore
+/.php_cs.dist export-ignore
+/build.xml export-ignore
+/phpunit.xml export-ignore
+/tests export-ignore
+
+*.php diff=php
diff --git a/vendor/sebastian/resource-operations/.gitignore b/vendor/sebastian/resource-operations/.gitignore
new file mode 100644
index 000000000..a086c7819
--- /dev/null
+++ b/vendor/sebastian/resource-operations/.gitignore
@@ -0,0 +1,6 @@
+/.idea
+/.php_cs.cache
+/build/FunctionSignatureMap.php
+/composer.lock
+/vendor
+/.phpunit.result.cache
diff --git a/vendor/sebastian/resource-operations/ChangeLog.md b/vendor/sebastian/resource-operations/ChangeLog.md
new file mode 100644
index 000000000..e6dc73922
--- /dev/null
+++ b/vendor/sebastian/resource-operations/ChangeLog.md
@@ -0,0 +1,54 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [3.0.3] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [3.0.2] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [3.0.1] - 2020-06-15
+
+### Changed
+
+* Tests etc. are now ignored for archive exports
+
+## [3.0.0] - 2020-02-07
+
+### Removed
+
+* This component is no longer supported on PHP 7.1 and PHP 7.2
+
+## [2.0.1] - 2018-10-04
+
+### Fixed
+
+* Functions and methods with nullable parameters of type `resource` are now also considered
+
+## [2.0.0] - 2018-09-27
+
+### Changed
+
+* [FunctionSignatureMap.php](https://raw.githubusercontent.com/phan/phan/master/src/Phan/Language/Internal/FunctionSignatureMap.php) from `phan/phan` is now used instead of [arginfo.php](https://raw.githubusercontent.com/rlerdorf/phan/master/includes/arginfo.php) from `rlerdorf/phan`
+
+### Removed
+
+* This component is no longer supported on PHP 5.6 and PHP 7.0
+
+## 1.0.0 - 2015-07-28
+
+* Initial release
+
+[3.0.3]: https://github.com/sebastianbergmann/comparator/resource-operations/3.0.2...3.0.3
+[3.0.2]: https://github.com/sebastianbergmann/comparator/resource-operations/3.0.1...3.0.2
+[3.0.1]: https://github.com/sebastianbergmann/comparator/resource-operations/3.0.0...3.0.1
+[3.0.0]: https://github.com/sebastianbergmann/comparator/resource-operations/2.0.1...3.0.0
+[2.0.1]: https://github.com/sebastianbergmann/comparator/resource-operations/2.0.0...2.0.1
+[2.0.0]: https://github.com/sebastianbergmann/comparator/resource-operations/1.0.0...2.0.0
diff --git a/vendor/sebastian/resource-operations/LICENSE b/vendor/sebastian/resource-operations/LICENSE
new file mode 100644
index 000000000..dccd6b074
--- /dev/null
+++ b/vendor/sebastian/resource-operations/LICENSE
@@ -0,0 +1,33 @@
+Resource Operations
+
+Copyright (c) 2015-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/resource-operations/README.md b/vendor/sebastian/resource-operations/README.md
new file mode 100644
index 000000000..88b05ccb6
--- /dev/null
+++ b/vendor/sebastian/resource-operations/README.md
@@ -0,0 +1,14 @@
+# Resource Operations
+
+Provides a list of PHP built-in functions that operate on resources.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+ composer require sebastian/resource-operations
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+ composer require --dev sebastian/resource-operations
+
diff --git a/vendor/sebastian/resource-operations/build/generate.php b/vendor/sebastian/resource-operations/build/generate.php
new file mode 100644
index 000000000..0354dc45f
--- /dev/null
+++ b/vendor/sebastian/resource-operations/build/generate.php
@@ -0,0 +1,65 @@
+#!/usr/bin/env php
+<?php declare(strict_types=1);
+/*
+ * This file is part of resource-operations.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+$functions = require __DIR__ . '/FunctionSignatureMap.php';
+$resourceFunctions = [];
+
+foreach ($functions as $function => $arguments) {
+ foreach ($arguments as $argument) {
+ if (strpos($argument, '?') === 0) {
+ $argument = substr($argument, 1);
+ }
+
+ if ($argument === 'resource') {
+ $resourceFunctions[] = explode('\'', $function)[0];
+ }
+ }
+}
+
+$resourceFunctions = array_unique($resourceFunctions);
+sort($resourceFunctions);
+
+$buffer = <<<EOT
+<?php declare(strict_types=1);
+/*
+ * This file is part of resource-operations.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\ResourceOperations;
+
+final class ResourceOperations
+{
+ /**
+ * @return string[]
+ */
+ public static function getFunctions(): array
+ {
+ return [
+
+EOT;
+
+foreach ($resourceFunctions as $function) {
+ $buffer .= sprintf(" '%s',\n", $function);
+}
+
+$buffer .= <<< EOT
+ ];
+ }
+}
+
+EOT;
+
+file_put_contents(__DIR__ . '/../src/ResourceOperations.php', $buffer);
+
diff --git a/vendor/sebastian/resource-operations/composer.json b/vendor/sebastian/resource-operations/composer.json
new file mode 100644
index 000000000..870be3c12
--- /dev/null
+++ b/vendor/sebastian/resource-operations/composer.json
@@ -0,0 +1,37 @@
+{
+ "name": "sebastian/resource-operations",
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]"
+ }
+ ],
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ }
+}
+
diff --git a/vendor/sebastian/resource-operations/src/ResourceOperations.php b/vendor/sebastian/resource-operations/src/ResourceOperations.php
new file mode 100644
index 000000000..f3911f36c
--- /dev/null
+++ b/vendor/sebastian/resource-operations/src/ResourceOperations.php
@@ -0,0 +1,2232 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of resource-operations.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\ResourceOperations;
+
+final class ResourceOperations
+{
+ /**
+ * @return string[]
+ */
+ public static function getFunctions(): array
+ {
+ return [
+ 'Directory::close',
+ 'Directory::read',
+ 'Directory::rewind',
+ 'DirectoryIterator::openFile',
+ 'FilesystemIterator::openFile',
+ 'Gmagick::readimagefile',
+ 'HttpResponse::getRequestBodyStream',
+ 'HttpResponse::getStream',
+ 'HttpResponse::setStream',
+ 'Imagick::pingImageFile',
+ 'Imagick::readImageFile',
+ 'Imagick::writeImageFile',
+ 'Imagick::writeImagesFile',
+ 'MongoGridFSCursor::__construct',
+ 'MongoGridFSFile::getResource',
+ 'MysqlndUhConnection::stmtInit',
+ 'MysqlndUhConnection::storeResult',
+ 'MysqlndUhConnection::useResult',
+ 'PDF_activate_item',
+ 'PDF_add_launchlink',
+ 'PDF_add_locallink',
+ 'PDF_add_nameddest',
+ 'PDF_add_note',
+ 'PDF_add_pdflink',
+ 'PDF_add_table_cell',
+ 'PDF_add_textflow',
+ 'PDF_add_thumbnail',
+ 'PDF_add_weblink',
+ 'PDF_arc',
+ 'PDF_arcn',
+ 'PDF_attach_file',
+ 'PDF_begin_document',
+ 'PDF_begin_font',
+ 'PDF_begin_glyph',
+ 'PDF_begin_item',
+ 'PDF_begin_layer',
+ 'PDF_begin_page',
+ 'PDF_begin_page_ext',
+ 'PDF_begin_pattern',
+ 'PDF_begin_template',
+ 'PDF_begin_template_ext',
+ 'PDF_circle',
+ 'PDF_clip',
+ 'PDF_close',
+ 'PDF_close_image',
+ 'PDF_close_pdi',
+ 'PDF_close_pdi_page',
+ 'PDF_closepath',
+ 'PDF_closepath_fill_stroke',
+ 'PDF_closepath_stroke',
+ 'PDF_concat',
+ 'PDF_continue_text',
+ 'PDF_create_3dview',
+ 'PDF_create_action',
+ 'PDF_create_annotation',
+ 'PDF_create_bookmark',
+ 'PDF_create_field',
+ 'PDF_create_fieldgroup',
+ 'PDF_create_gstate',
+ 'PDF_create_pvf',
+ 'PDF_create_textflow',
+ 'PDF_curveto',
+ 'PDF_define_layer',
+ 'PDF_delete',
+ 'PDF_delete_pvf',
+ 'PDF_delete_table',
+ 'PDF_delete_textflow',
+ 'PDF_encoding_set_char',
+ 'PDF_end_document',
+ 'PDF_end_font',
+ 'PDF_end_glyph',
+ 'PDF_end_item',
+ 'PDF_end_layer',
+ 'PDF_end_page',
+ 'PDF_end_page_ext',
+ 'PDF_end_pattern',
+ 'PDF_end_template',
+ 'PDF_endpath',
+ 'PDF_fill',
+ 'PDF_fill_imageblock',
+ 'PDF_fill_pdfblock',
+ 'PDF_fill_stroke',
+ 'PDF_fill_textblock',
+ 'PDF_findfont',
+ 'PDF_fit_image',
+ 'PDF_fit_pdi_page',
+ 'PDF_fit_table',
+ 'PDF_fit_textflow',
+ 'PDF_fit_textline',
+ 'PDF_get_apiname',
+ 'PDF_get_buffer',
+ 'PDF_get_errmsg',
+ 'PDF_get_errnum',
+ 'PDF_get_parameter',
+ 'PDF_get_pdi_parameter',
+ 'PDF_get_pdi_value',
+ 'PDF_get_value',
+ 'PDF_info_font',
+ 'PDF_info_matchbox',
+ 'PDF_info_table',
+ 'PDF_info_textflow',
+ 'PDF_info_textline',
+ 'PDF_initgraphics',
+ 'PDF_lineto',
+ 'PDF_load_3ddata',
+ 'PDF_load_font',
+ 'PDF_load_iccprofile',
+ 'PDF_load_image',
+ 'PDF_makespotcolor',
+ 'PDF_moveto',
+ 'PDF_new',
+ 'PDF_open_ccitt',
+ 'PDF_open_file',
+ 'PDF_open_image',
+ 'PDF_open_image_file',
+ 'PDF_open_memory_image',
+ 'PDF_open_pdi',
+ 'PDF_open_pdi_document',
+ 'PDF_open_pdi_page',
+ 'PDF_pcos_get_number',
+ 'PDF_pcos_get_stream',
+ 'PDF_pcos_get_string',
+ 'PDF_place_image',
+ 'PDF_place_pdi_page',
+ 'PDF_process_pdi',
+ 'PDF_rect',
+ 'PDF_restore',
+ 'PDF_resume_page',
+ 'PDF_rotate',
+ 'PDF_save',
+ 'PDF_scale',
+ 'PDF_set_border_color',
+ 'PDF_set_border_dash',
+ 'PDF_set_border_style',
+ 'PDF_set_gstate',
+ 'PDF_set_info',
+ 'PDF_set_layer_dependency',
+ 'PDF_set_parameter',
+ 'PDF_set_text_pos',
+ 'PDF_set_value',
+ 'PDF_setcolor',
+ 'PDF_setdash',
+ 'PDF_setdashpattern',
+ 'PDF_setflat',
+ 'PDF_setfont',
+ 'PDF_setgray',
+ 'PDF_setgray_fill',
+ 'PDF_setgray_stroke',
+ 'PDF_setlinecap',
+ 'PDF_setlinejoin',
+ 'PDF_setlinewidth',
+ 'PDF_setmatrix',
+ 'PDF_setmiterlimit',
+ 'PDF_setrgbcolor',
+ 'PDF_setrgbcolor_fill',
+ 'PDF_setrgbcolor_stroke',
+ 'PDF_shading',
+ 'PDF_shading_pattern',
+ 'PDF_shfill',
+ 'PDF_show',
+ 'PDF_show_boxed',
+ 'PDF_show_xy',
+ 'PDF_skew',
+ 'PDF_stringwidth',
+ 'PDF_stroke',
+ 'PDF_suspend_page',
+ 'PDF_translate',
+ 'PDF_utf16_to_utf8',
+ 'PDF_utf32_to_utf16',
+ 'PDF_utf8_to_utf16',
+ 'PDO::pgsqlLOBOpen',
+ 'RarEntry::getStream',
+ 'SQLite3::openBlob',
+ 'SWFMovie::saveToFile',
+ 'SplFileInfo::openFile',
+ 'SplFileObject::openFile',
+ 'SplTempFileObject::openFile',
+ 'V8Js::compileString',
+ 'V8Js::executeScript',
+ 'Vtiful\Kernel\Excel::setColumn',
+ 'Vtiful\Kernel\Excel::setRow',
+ 'Vtiful\Kernel\Format::align',
+ 'Vtiful\Kernel\Format::bold',
+ 'Vtiful\Kernel\Format::italic',
+ 'Vtiful\Kernel\Format::underline',
+ 'XMLWriter::openMemory',
+ 'XMLWriter::openURI',
+ 'ZipArchive::getStream',
+ 'Zookeeper::setLogStream',
+ 'apc_bin_dumpfile',
+ 'apc_bin_loadfile',
+ 'bbcode_add_element',
+ 'bbcode_add_smiley',
+ 'bbcode_create',
+ 'bbcode_destroy',
+ 'bbcode_parse',
+ 'bbcode_set_arg_parser',
+ 'bbcode_set_flags',
+ 'bcompiler_read',
+ 'bcompiler_write_class',
+ 'bcompiler_write_constant',
+ 'bcompiler_write_exe_footer',
+ 'bcompiler_write_file',
+ 'bcompiler_write_footer',
+ 'bcompiler_write_function',
+ 'bcompiler_write_functions_from_file',
+ 'bcompiler_write_header',
+ 'bcompiler_write_included_filename',
+ 'bzclose',
+ 'bzerrno',
+ 'bzerror',
+ 'bzerrstr',
+ 'bzflush',
+ 'bzopen',
+ 'bzread',
+ 'bzwrite',
+ 'cairo_surface_write_to_png',
+ 'closedir',
+ 'copy',
+ 'crack_closedict',
+ 'crack_opendict',
+ 'cubrid_bind',
+ 'cubrid_close_prepare',
+ 'cubrid_close_request',
+ 'cubrid_col_get',
+ 'cubrid_col_size',
+ 'cubrid_column_names',
+ 'cubrid_column_types',
+ 'cubrid_commit',
+ 'cubrid_connect',
+ 'cubrid_connect_with_url',
+ 'cubrid_current_oid',
+ 'cubrid_db_parameter',
+ 'cubrid_disconnect',
+ 'cubrid_drop',
+ 'cubrid_fetch',
+ 'cubrid_free_result',
+ 'cubrid_get',
+ 'cubrid_get_autocommit',
+ 'cubrid_get_charset',
+ 'cubrid_get_class_name',
+ 'cubrid_get_db_parameter',
+ 'cubrid_get_query_timeout',
+ 'cubrid_get_server_info',
+ 'cubrid_insert_id',
+ 'cubrid_is_instance',
+ 'cubrid_lob2_bind',
+ 'cubrid_lob2_close',
+ 'cubrid_lob2_export',
+ 'cubrid_lob2_import',
+ 'cubrid_lob2_new',
+ 'cubrid_lob2_read',
+ 'cubrid_lob2_seek',
+ 'cubrid_lob2_seek64',
+ 'cubrid_lob2_size',
+ 'cubrid_lob2_size64',
+ 'cubrid_lob2_tell',
+ 'cubrid_lob2_tell64',
+ 'cubrid_lob2_write',
+ 'cubrid_lob_export',
+ 'cubrid_lob_get',
+ 'cubrid_lob_send',
+ 'cubrid_lob_size',
+ 'cubrid_lock_read',
+ 'cubrid_lock_write',
+ 'cubrid_move_cursor',
+ 'cubrid_next_result',
+ 'cubrid_num_cols',
+ 'cubrid_num_rows',
+ 'cubrid_pconnect',
+ 'cubrid_pconnect_with_url',
+ 'cubrid_prepare',
+ 'cubrid_put',
+ 'cubrid_query',
+ 'cubrid_rollback',
+ 'cubrid_schema',
+ 'cubrid_seq_add',
+ 'cubrid_seq_drop',
+ 'cubrid_seq_insert',
+ 'cubrid_seq_put',
+ 'cubrid_set_add',
+ 'cubrid_set_autocommit',
+ 'cubrid_set_db_parameter',
+ 'cubrid_set_drop',
+ 'cubrid_set_query_timeout',
+ 'cubrid_unbuffered_query',
+ 'curl_close',
+ 'curl_copy_handle',
+ 'curl_errno',
+ 'curl_error',
+ 'curl_escape',
+ 'curl_exec',
+ 'curl_getinfo',
+ 'curl_multi_add_handle',
+ 'curl_multi_close',
+ 'curl_multi_errno',
+ 'curl_multi_exec',
+ 'curl_multi_getcontent',
+ 'curl_multi_info_read',
+ 'curl_multi_remove_handle',
+ 'curl_multi_select',
+ 'curl_multi_setopt',
+ 'curl_pause',
+ 'curl_reset',
+ 'curl_setopt',
+ 'curl_setopt_array',
+ 'curl_share_close',
+ 'curl_share_errno',
+ 'curl_share_init',
+ 'curl_share_setopt',
+ 'curl_unescape',
+ 'cyrus_authenticate',
+ 'cyrus_bind',
+ 'cyrus_close',
+ 'cyrus_connect',
+ 'cyrus_query',
+ 'cyrus_unbind',
+ 'db2_autocommit',
+ 'db2_bind_param',
+ 'db2_client_info',
+ 'db2_close',
+ 'db2_column_privileges',
+ 'db2_columns',
+ 'db2_commit',
+ 'db2_conn_error',
+ 'db2_conn_errormsg',
+ 'db2_connect',
+ 'db2_cursor_type',
+ 'db2_exec',
+ 'db2_execute',
+ 'db2_fetch_array',
+ 'db2_fetch_assoc',
+ 'db2_fetch_both',
+ 'db2_fetch_object',
+ 'db2_fetch_row',
+ 'db2_field_display_size',
+ 'db2_field_name',
+ 'db2_field_num',
+ 'db2_field_precision',
+ 'db2_field_scale',
+ 'db2_field_type',
+ 'db2_field_width',
+ 'db2_foreign_keys',
+ 'db2_free_result',
+ 'db2_free_stmt',
+ 'db2_get_option',
+ 'db2_last_insert_id',
+ 'db2_lob_read',
+ 'db2_next_result',
+ 'db2_num_fields',
+ 'db2_num_rows',
+ 'db2_pclose',
+ 'db2_pconnect',
+ 'db2_prepare',
+ 'db2_primary_keys',
+ 'db2_procedure_columns',
+ 'db2_procedures',
+ 'db2_result',
+ 'db2_rollback',
+ 'db2_server_info',
+ 'db2_set_option',
+ 'db2_special_columns',
+ 'db2_statistics',
+ 'db2_stmt_error',
+ 'db2_stmt_errormsg',
+ 'db2_table_privileges',
+ 'db2_tables',
+ 'dba_close',
+ 'dba_delete',
+ 'dba_exists',
+ 'dba_fetch',
+ 'dba_firstkey',
+ 'dba_insert',
+ 'dba_nextkey',
+ 'dba_open',
+ 'dba_optimize',
+ 'dba_popen',
+ 'dba_replace',
+ 'dba_sync',
+ 'dbplus_add',
+ 'dbplus_aql',
+ 'dbplus_close',
+ 'dbplus_curr',
+ 'dbplus_find',
+ 'dbplus_first',
+ 'dbplus_flush',
+ 'dbplus_freelock',
+ 'dbplus_freerlocks',
+ 'dbplus_getlock',
+ 'dbplus_getunique',
+ 'dbplus_info',
+ 'dbplus_last',
+ 'dbplus_lockrel',
+ 'dbplus_next',
+ 'dbplus_open',
+ 'dbplus_prev',
+ 'dbplus_rchperm',
+ 'dbplus_rcreate',
+ 'dbplus_rcrtexact',
+ 'dbplus_rcrtlike',
+ 'dbplus_restorepos',
+ 'dbplus_rkeys',
+ 'dbplus_ropen',
+ 'dbplus_rquery',
+ 'dbplus_rrename',
+ 'dbplus_rsecindex',
+ 'dbplus_runlink',
+ 'dbplus_rzap',
+ 'dbplus_savepos',
+ 'dbplus_setindex',
+ 'dbplus_setindexbynumber',
+ 'dbplus_sql',
+ 'dbplus_tremove',
+ 'dbplus_undo',
+ 'dbplus_undoprepare',
+ 'dbplus_unlockrel',
+ 'dbplus_unselect',
+ 'dbplus_update',
+ 'dbplus_xlockrel',
+ 'dbplus_xunlockrel',
+ 'deflate_add',
+ 'dio_close',
+ 'dio_fcntl',
+ 'dio_open',
+ 'dio_read',
+ 'dio_seek',
+ 'dio_stat',
+ 'dio_tcsetattr',
+ 'dio_truncate',
+ 'dio_write',
+ 'dir',
+ 'eio_busy',
+ 'eio_cancel',
+ 'eio_chmod',
+ 'eio_chown',
+ 'eio_close',
+ 'eio_custom',
+ 'eio_dup2',
+ 'eio_fallocate',
+ 'eio_fchmod',
+ 'eio_fchown',
+ 'eio_fdatasync',
+ 'eio_fstat',
+ 'eio_fstatvfs',
+ 'eio_fsync',
+ 'eio_ftruncate',
+ 'eio_futime',
+ 'eio_get_last_error',
+ 'eio_grp',
+ 'eio_grp_add',
+ 'eio_grp_cancel',
+ 'eio_grp_limit',
+ 'eio_link',
+ 'eio_lstat',
+ 'eio_mkdir',
+ 'eio_mknod',
+ 'eio_nop',
+ 'eio_open',
+ 'eio_read',
+ 'eio_readahead',
+ 'eio_readdir',
+ 'eio_readlink',
+ 'eio_realpath',
+ 'eio_rename',
+ 'eio_rmdir',
+ 'eio_seek',
+ 'eio_sendfile',
+ 'eio_stat',
+ 'eio_statvfs',
+ 'eio_symlink',
+ 'eio_sync',
+ 'eio_sync_file_range',
+ 'eio_syncfs',
+ 'eio_truncate',
+ 'eio_unlink',
+ 'eio_utime',
+ 'eio_write',
+ 'enchant_broker_describe',
+ 'enchant_broker_dict_exists',
+ 'enchant_broker_free',
+ 'enchant_broker_free_dict',
+ 'enchant_broker_get_dict_path',
+ 'enchant_broker_get_error',
+ 'enchant_broker_init',
+ 'enchant_broker_list_dicts',
+ 'enchant_broker_request_dict',
+ 'enchant_broker_request_pwl_dict',
+ 'enchant_broker_set_dict_path',
+ 'enchant_broker_set_ordering',
+ 'enchant_dict_add_to_personal',
+ 'enchant_dict_add_to_session',
+ 'enchant_dict_check',
+ 'enchant_dict_describe',
+ 'enchant_dict_get_error',
+ 'enchant_dict_is_in_session',
+ 'enchant_dict_quick_check',
+ 'enchant_dict_store_replacement',
+ 'enchant_dict_suggest',
+ 'event_add',
+ 'event_base_free',
+ 'event_base_loop',
+ 'event_base_loopbreak',
+ 'event_base_loopexit',
+ 'event_base_new',
+ 'event_base_priority_init',
+ 'event_base_reinit',
+ 'event_base_set',
+ 'event_buffer_base_set',
+ 'event_buffer_disable',
+ 'event_buffer_enable',
+ 'event_buffer_fd_set',
+ 'event_buffer_free',
+ 'event_buffer_new',
+ 'event_buffer_priority_set',
+ 'event_buffer_read',
+ 'event_buffer_set_callback',
+ 'event_buffer_timeout_set',
+ 'event_buffer_watermark_set',
+ 'event_buffer_write',
+ 'event_del',
+ 'event_free',
+ 'event_new',
+ 'event_priority_set',
+ 'event_set',
+ 'event_timer_add',
+ 'event_timer_del',
+ 'event_timer_pending',
+ 'event_timer_set',
+ 'expect_expectl',
+ 'expect_popen',
+ 'fam_cancel_monitor',
+ 'fam_close',
+ 'fam_monitor_collection',
+ 'fam_monitor_directory',
+ 'fam_monitor_file',
+ 'fam_next_event',
+ 'fam_open',
+ 'fam_pending',
+ 'fam_resume_monitor',
+ 'fam_suspend_monitor',
+ 'fann_cascadetrain_on_data',
+ 'fann_cascadetrain_on_file',
+ 'fann_clear_scaling_params',
+ 'fann_copy',
+ 'fann_create_from_file',
+ 'fann_create_shortcut_array',
+ 'fann_create_standard',
+ 'fann_create_standard_array',
+ 'fann_create_train',
+ 'fann_create_train_from_callback',
+ 'fann_descale_input',
+ 'fann_descale_output',
+ 'fann_descale_train',
+ 'fann_destroy',
+ 'fann_destroy_train',
+ 'fann_duplicate_train_data',
+ 'fann_get_MSE',
+ 'fann_get_activation_function',
+ 'fann_get_activation_steepness',
+ 'fann_get_bias_array',
+ 'fann_get_bit_fail',
+ 'fann_get_bit_fail_limit',
+ 'fann_get_cascade_activation_functions',
+ 'fann_get_cascade_activation_functions_count',
+ 'fann_get_cascade_activation_steepnesses',
+ 'fann_get_cascade_activation_steepnesses_count',
+ 'fann_get_cascade_candidate_change_fraction',
+ 'fann_get_cascade_candidate_limit',
+ 'fann_get_cascade_candidate_stagnation_epochs',
+ 'fann_get_cascade_max_cand_epochs',
+ 'fann_get_cascade_max_out_epochs',
+ 'fann_get_cascade_min_cand_epochs',
+ 'fann_get_cascade_min_out_epochs',
+ 'fann_get_cascade_num_candidate_groups',
+ 'fann_get_cascade_num_candidates',
+ 'fann_get_cascade_output_change_fraction',
+ 'fann_get_cascade_output_stagnation_epochs',
+ 'fann_get_cascade_weight_multiplier',
+ 'fann_get_connection_array',
+ 'fann_get_connection_rate',
+ 'fann_get_errno',
+ 'fann_get_errstr',
+ 'fann_get_layer_array',
+ 'fann_get_learning_momentum',
+ 'fann_get_learning_rate',
+ 'fann_get_network_type',
+ 'fann_get_num_input',
+ 'fann_get_num_layers',
+ 'fann_get_num_output',
+ 'fann_get_quickprop_decay',
+ 'fann_get_quickprop_mu',
+ 'fann_get_rprop_decrease_factor',
+ 'fann_get_rprop_delta_max',
+ 'fann_get_rprop_delta_min',
+ 'fann_get_rprop_delta_zero',
+ 'fann_get_rprop_increase_factor',
+ 'fann_get_sarprop_step_error_shift',
+ 'fann_get_sarprop_step_error_threshold_factor',
+ 'fann_get_sarprop_temperature',
+ 'fann_get_sarprop_weight_decay_shift',
+ 'fann_get_total_connections',
+ 'fann_get_total_neurons',
+ 'fann_get_train_error_function',
+ 'fann_get_train_stop_function',
+ 'fann_get_training_algorithm',
+ 'fann_init_weights',
+ 'fann_length_train_data',
+ 'fann_merge_train_data',
+ 'fann_num_input_train_data',
+ 'fann_num_output_train_data',
+ 'fann_randomize_weights',
+ 'fann_read_train_from_file',
+ 'fann_reset_errno',
+ 'fann_reset_errstr',
+ 'fann_run',
+ 'fann_save',
+ 'fann_save_train',
+ 'fann_scale_input',
+ 'fann_scale_input_train_data',
+ 'fann_scale_output',
+ 'fann_scale_output_train_data',
+ 'fann_scale_train',
+ 'fann_scale_train_data',
+ 'fann_set_activation_function',
+ 'fann_set_activation_function_hidden',
+ 'fann_set_activation_function_layer',
+ 'fann_set_activation_function_output',
+ 'fann_set_activation_steepness',
+ 'fann_set_activation_steepness_hidden',
+ 'fann_set_activation_steepness_layer',
+ 'fann_set_activation_steepness_output',
+ 'fann_set_bit_fail_limit',
+ 'fann_set_callback',
+ 'fann_set_cascade_activation_functions',
+ 'fann_set_cascade_activation_steepnesses',
+ 'fann_set_cascade_candidate_change_fraction',
+ 'fann_set_cascade_candidate_limit',
+ 'fann_set_cascade_candidate_stagnation_epochs',
+ 'fann_set_cascade_max_cand_epochs',
+ 'fann_set_cascade_max_out_epochs',
+ 'fann_set_cascade_min_cand_epochs',
+ 'fann_set_cascade_min_out_epochs',
+ 'fann_set_cascade_num_candidate_groups',
+ 'fann_set_cascade_output_change_fraction',
+ 'fann_set_cascade_output_stagnation_epochs',
+ 'fann_set_cascade_weight_multiplier',
+ 'fann_set_error_log',
+ 'fann_set_input_scaling_params',
+ 'fann_set_learning_momentum',
+ 'fann_set_learning_rate',
+ 'fann_set_output_scaling_params',
+ 'fann_set_quickprop_decay',
+ 'fann_set_quickprop_mu',
+ 'fann_set_rprop_decrease_factor',
+ 'fann_set_rprop_delta_max',
+ 'fann_set_rprop_delta_min',
+ 'fann_set_rprop_delta_zero',
+ 'fann_set_rprop_increase_factor',
+ 'fann_set_sarprop_step_error_shift',
+ 'fann_set_sarprop_step_error_threshold_factor',
+ 'fann_set_sarprop_temperature',
+ 'fann_set_sarprop_weight_decay_shift',
+ 'fann_set_scaling_params',
+ 'fann_set_train_error_function',
+ 'fann_set_train_stop_function',
+ 'fann_set_training_algorithm',
+ 'fann_set_weight',
+ 'fann_set_weight_array',
+ 'fann_shuffle_train_data',
+ 'fann_subset_train_data',
+ 'fann_test',
+ 'fann_test_data',
+ 'fann_train',
+ 'fann_train_epoch',
+ 'fann_train_on_data',
+ 'fann_train_on_file',
+ 'fbsql_affected_rows',
+ 'fbsql_autocommit',
+ 'fbsql_blob_size',
+ 'fbsql_change_user',
+ 'fbsql_clob_size',
+ 'fbsql_close',
+ 'fbsql_commit',
+ 'fbsql_connect',
+ 'fbsql_create_blob',
+ 'fbsql_create_clob',
+ 'fbsql_create_db',
+ 'fbsql_data_seek',
+ 'fbsql_database',
+ 'fbsql_database_password',
+ 'fbsql_db_query',
+ 'fbsql_db_status',
+ 'fbsql_drop_db',
+ 'fbsql_errno',
+ 'fbsql_error',
+ 'fbsql_fetch_array',
+ 'fbsql_fetch_assoc',
+ 'fbsql_fetch_field',
+ 'fbsql_fetch_lengths',
+ 'fbsql_fetch_object',
+ 'fbsql_fetch_row',
+ 'fbsql_field_flags',
+ 'fbsql_field_len',
+ 'fbsql_field_name',
+ 'fbsql_field_seek',
+ 'fbsql_field_table',
+ 'fbsql_field_type',
+ 'fbsql_free_result',
+ 'fbsql_get_autostart_info',
+ 'fbsql_hostname',
+ 'fbsql_insert_id',
+ 'fbsql_list_dbs',
+ 'fbsql_list_fields',
+ 'fbsql_list_tables',
+ 'fbsql_next_result',
+ 'fbsql_num_fields',
+ 'fbsql_num_rows',
+ 'fbsql_password',
+ 'fbsql_pconnect',
+ 'fbsql_query',
+ 'fbsql_read_blob',
+ 'fbsql_read_clob',
+ 'fbsql_result',
+ 'fbsql_rollback',
+ 'fbsql_rows_fetched',
+ 'fbsql_select_db',
+ 'fbsql_set_characterset',
+ 'fbsql_set_lob_mode',
+ 'fbsql_set_password',
+ 'fbsql_set_transaction',
+ 'fbsql_start_db',
+ 'fbsql_stop_db',
+ 'fbsql_table_name',
+ 'fbsql_username',
+ 'fclose',
+ 'fdf_add_doc_javascript',
+ 'fdf_add_template',
+ 'fdf_close',
+ 'fdf_create',
+ 'fdf_enum_values',
+ 'fdf_get_ap',
+ 'fdf_get_attachment',
+ 'fdf_get_encoding',
+ 'fdf_get_file',
+ 'fdf_get_flags',
+ 'fdf_get_opt',
+ 'fdf_get_status',
+ 'fdf_get_value',
+ 'fdf_get_version',
+ 'fdf_next_field_name',
+ 'fdf_open',
+ 'fdf_open_string',
+ 'fdf_remove_item',
+ 'fdf_save',
+ 'fdf_save_string',
+ 'fdf_set_ap',
+ 'fdf_set_encoding',
+ 'fdf_set_file',
+ 'fdf_set_flags',
+ 'fdf_set_javascript_action',
+ 'fdf_set_on_import_javascript',
+ 'fdf_set_opt',
+ 'fdf_set_status',
+ 'fdf_set_submit_form_action',
+ 'fdf_set_target_frame',
+ 'fdf_set_value',
+ 'fdf_set_version',
+ 'feof',
+ 'fflush',
+ 'ffmpeg_frame::__construct',
+ 'ffmpeg_frame::toGDImage',
+ 'fgetc',
+ 'fgetcsv',
+ 'fgets',
+ 'fgetss',
+ 'file',
+ 'file_get_contents',
+ 'file_put_contents',
+ 'finfo::buffer',
+ 'finfo::file',
+ 'finfo_buffer',
+ 'finfo_close',
+ 'finfo_file',
+ 'finfo_open',
+ 'finfo_set_flags',
+ 'flock',
+ 'fopen',
+ 'fpassthru',
+ 'fprintf',
+ 'fputcsv',
+ 'fputs',
+ 'fread',
+ 'fscanf',
+ 'fseek',
+ 'fstat',
+ 'ftell',
+ 'ftp_alloc',
+ 'ftp_append',
+ 'ftp_cdup',
+ 'ftp_chdir',
+ 'ftp_chmod',
+ 'ftp_close',
+ 'ftp_delete',
+ 'ftp_exec',
+ 'ftp_fget',
+ 'ftp_fput',
+ 'ftp_get',
+ 'ftp_get_option',
+ 'ftp_login',
+ 'ftp_mdtm',
+ 'ftp_mkdir',
+ 'ftp_mlsd',
+ 'ftp_nb_continue',
+ 'ftp_nb_fget',
+ 'ftp_nb_fput',
+ 'ftp_nb_get',
+ 'ftp_nb_put',
+ 'ftp_nlist',
+ 'ftp_pasv',
+ 'ftp_put',
+ 'ftp_pwd',
+ 'ftp_quit',
+ 'ftp_raw',
+ 'ftp_rawlist',
+ 'ftp_rename',
+ 'ftp_rmdir',
+ 'ftp_set_option',
+ 'ftp_site',
+ 'ftp_size',
+ 'ftp_systype',
+ 'ftruncate',
+ 'fwrite',
+ 'get_resource_type',
+ 'gmp_div',
+ 'gnupg::init',
+ 'gnupg_adddecryptkey',
+ 'gnupg_addencryptkey',
+ 'gnupg_addsignkey',
+ 'gnupg_cleardecryptkeys',
+ 'gnupg_clearencryptkeys',
+ 'gnupg_clearsignkeys',
+ 'gnupg_decrypt',
+ 'gnupg_decryptverify',
+ 'gnupg_encrypt',
+ 'gnupg_encryptsign',
+ 'gnupg_export',
+ 'gnupg_geterror',
+ 'gnupg_getprotocol',
+ 'gnupg_import',
+ 'gnupg_init',
+ 'gnupg_keyinfo',
+ 'gnupg_setarmor',
+ 'gnupg_seterrormode',
+ 'gnupg_setsignmode',
+ 'gnupg_sign',
+ 'gnupg_verify',
+ 'gupnp_context_get_host_ip',
+ 'gupnp_context_get_port',
+ 'gupnp_context_get_subscription_timeout',
+ 'gupnp_context_host_path',
+ 'gupnp_context_new',
+ 'gupnp_context_set_subscription_timeout',
+ 'gupnp_context_timeout_add',
+ 'gupnp_context_unhost_path',
+ 'gupnp_control_point_browse_start',
+ 'gupnp_control_point_browse_stop',
+ 'gupnp_control_point_callback_set',
+ 'gupnp_control_point_new',
+ 'gupnp_device_action_callback_set',
+ 'gupnp_device_info_get',
+ 'gupnp_device_info_get_service',
+ 'gupnp_root_device_get_available',
+ 'gupnp_root_device_get_relative_location',
+ 'gupnp_root_device_new',
+ 'gupnp_root_device_set_available',
+ 'gupnp_root_device_start',
+ 'gupnp_root_device_stop',
+ 'gupnp_service_action_get',
+ 'gupnp_service_action_return',
+ 'gupnp_service_action_return_error',
+ 'gupnp_service_action_set',
+ 'gupnp_service_freeze_notify',
+ 'gupnp_service_info_get',
+ 'gupnp_service_info_get_introspection',
+ 'gupnp_service_introspection_get_state_variable',
+ 'gupnp_service_notify',
+ 'gupnp_service_proxy_action_get',
+ 'gupnp_service_proxy_action_set',
+ 'gupnp_service_proxy_add_notify',
+ 'gupnp_service_proxy_callback_set',
+ 'gupnp_service_proxy_get_subscribed',
+ 'gupnp_service_proxy_remove_notify',
+ 'gupnp_service_proxy_send_action',
+ 'gupnp_service_proxy_set_subscribed',
+ 'gupnp_service_thaw_notify',
+ 'gzclose',
+ 'gzeof',
+ 'gzgetc',
+ 'gzgets',
+ 'gzgetss',
+ 'gzpassthru',
+ 'gzputs',
+ 'gzread',
+ 'gzrewind',
+ 'gzseek',
+ 'gztell',
+ 'gzwrite',
+ 'hash_update_stream',
+ 'http\Env\Response::send',
+ 'http_get_request_body_stream',
+ 'ibase_add_user',
+ 'ibase_affected_rows',
+ 'ibase_backup',
+ 'ibase_blob_add',
+ 'ibase_blob_cancel',
+ 'ibase_blob_close',
+ 'ibase_blob_create',
+ 'ibase_blob_get',
+ 'ibase_blob_open',
+ 'ibase_close',
+ 'ibase_commit',
+ 'ibase_commit_ret',
+ 'ibase_connect',
+ 'ibase_db_info',
+ 'ibase_delete_user',
+ 'ibase_drop_db',
+ 'ibase_execute',
+ 'ibase_fetch_assoc',
+ 'ibase_fetch_object',
+ 'ibase_fetch_row',
+ 'ibase_field_info',
+ 'ibase_free_event_handler',
+ 'ibase_free_query',
+ 'ibase_free_result',
+ 'ibase_gen_id',
+ 'ibase_maintain_db',
+ 'ibase_modify_user',
+ 'ibase_name_result',
+ 'ibase_num_fields',
+ 'ibase_num_params',
+ 'ibase_param_info',
+ 'ibase_pconnect',
+ 'ibase_prepare',
+ 'ibase_query',
+ 'ibase_restore',
+ 'ibase_rollback',
+ 'ibase_rollback_ret',
+ 'ibase_server_info',
+ 'ibase_service_attach',
+ 'ibase_service_detach',
+ 'ibase_set_event_handler',
+ 'ibase_trans',
+ 'ifx_affected_rows',
+ 'ifx_close',
+ 'ifx_connect',
+ 'ifx_do',
+ 'ifx_error',
+ 'ifx_fetch_row',
+ 'ifx_fieldproperties',
+ 'ifx_fieldtypes',
+ 'ifx_free_result',
+ 'ifx_getsqlca',
+ 'ifx_htmltbl_result',
+ 'ifx_num_fields',
+ 'ifx_num_rows',
+ 'ifx_pconnect',
+ 'ifx_prepare',
+ 'ifx_query',
+ 'image2wbmp',
+ 'imageaffine',
+ 'imagealphablending',
+ 'imageantialias',
+ 'imagearc',
+ 'imagebmp',
+ 'imagechar',
+ 'imagecharup',
+ 'imagecolorallocate',
+ 'imagecolorallocatealpha',
+ 'imagecolorat',
+ 'imagecolorclosest',
+ 'imagecolorclosestalpha',
+ 'imagecolorclosesthwb',
+ 'imagecolordeallocate',
+ 'imagecolorexact',
+ 'imagecolorexactalpha',
+ 'imagecolormatch',
+ 'imagecolorresolve',
+ 'imagecolorresolvealpha',
+ 'imagecolorset',
+ 'imagecolorsforindex',
+ 'imagecolorstotal',
+ 'imagecolortransparent',
+ 'imageconvolution',
+ 'imagecopy',
+ 'imagecopymerge',
+ 'imagecopymergegray',
+ 'imagecopyresampled',
+ 'imagecopyresized',
+ 'imagecrop',
+ 'imagecropauto',
+ 'imagedashedline',
+ 'imagedestroy',
+ 'imageellipse',
+ 'imagefill',
+ 'imagefilledarc',
+ 'imagefilledellipse',
+ 'imagefilledpolygon',
+ 'imagefilledrectangle',
+ 'imagefilltoborder',
+ 'imagefilter',
+ 'imageflip',
+ 'imagefttext',
+ 'imagegammacorrect',
+ 'imagegd',
+ 'imagegd2',
+ 'imagegetclip',
+ 'imagegif',
+ 'imagegrabscreen',
+ 'imagegrabwindow',
+ 'imageinterlace',
+ 'imageistruecolor',
+ 'imagejpeg',
+ 'imagelayereffect',
+ 'imageline',
+ 'imageopenpolygon',
+ 'imagepalettecopy',
+ 'imagepalettetotruecolor',
+ 'imagepng',
+ 'imagepolygon',
+ 'imagepsencodefont',
+ 'imagepsextendfont',
+ 'imagepsfreefont',
+ 'imagepsloadfont',
+ 'imagepsslantfont',
+ 'imagepstext',
+ 'imagerectangle',
+ 'imageresolution',
+ 'imagerotate',
+ 'imagesavealpha',
+ 'imagescale',
+ 'imagesetbrush',
+ 'imagesetclip',
+ 'imagesetinterpolation',
+ 'imagesetpixel',
+ 'imagesetstyle',
+ 'imagesetthickness',
+ 'imagesettile',
+ 'imagestring',
+ 'imagestringup',
+ 'imagesx',
+ 'imagesy',
+ 'imagetruecolortopalette',
+ 'imagettftext',
+ 'imagewbmp',
+ 'imagewebp',
+ 'imagexbm',
+ 'imap_append',
+ 'imap_body',
+ 'imap_bodystruct',
+ 'imap_check',
+ 'imap_clearflag_full',
+ 'imap_close',
+ 'imap_create',
+ 'imap_createmailbox',
+ 'imap_delete',
+ 'imap_deletemailbox',
+ 'imap_expunge',
+ 'imap_fetch_overview',
+ 'imap_fetchbody',
+ 'imap_fetchheader',
+ 'imap_fetchmime',
+ 'imap_fetchstructure',
+ 'imap_fetchtext',
+ 'imap_gc',
+ 'imap_get_quota',
+ 'imap_get_quotaroot',
+ 'imap_getacl',
+ 'imap_getmailboxes',
+ 'imap_getsubscribed',
+ 'imap_header',
+ 'imap_headerinfo',
+ 'imap_headers',
+ 'imap_list',
+ 'imap_listmailbox',
+ 'imap_listscan',
+ 'imap_listsubscribed',
+ 'imap_lsub',
+ 'imap_mail_copy',
+ 'imap_mail_move',
+ 'imap_mailboxmsginfo',
+ 'imap_msgno',
+ 'imap_num_msg',
+ 'imap_num_recent',
+ 'imap_ping',
+ 'imap_rename',
+ 'imap_renamemailbox',
+ 'imap_reopen',
+ 'imap_savebody',
+ 'imap_scan',
+ 'imap_scanmailbox',
+ 'imap_search',
+ 'imap_set_quota',
+ 'imap_setacl',
+ 'imap_setflag_full',
+ 'imap_sort',
+ 'imap_status',
+ 'imap_subscribe',
+ 'imap_thread',
+ 'imap_uid',
+ 'imap_undelete',
+ 'imap_unsubscribe',
+ 'inflate_add',
+ 'inflate_get_read_len',
+ 'inflate_get_status',
+ 'ingres_autocommit',
+ 'ingres_autocommit_state',
+ 'ingres_charset',
+ 'ingres_close',
+ 'ingres_commit',
+ 'ingres_connect',
+ 'ingres_cursor',
+ 'ingres_errno',
+ 'ingres_error',
+ 'ingres_errsqlstate',
+ 'ingres_escape_string',
+ 'ingres_execute',
+ 'ingres_fetch_array',
+ 'ingres_fetch_assoc',
+ 'ingres_fetch_object',
+ 'ingres_fetch_proc_return',
+ 'ingres_fetch_row',
+ 'ingres_field_length',
+ 'ingres_field_name',
+ 'ingres_field_nullable',
+ 'ingres_field_precision',
+ 'ingres_field_scale',
+ 'ingres_field_type',
+ 'ingres_free_result',
+ 'ingres_next_error',
+ 'ingres_num_fields',
+ 'ingres_num_rows',
+ 'ingres_pconnect',
+ 'ingres_prepare',
+ 'ingres_query',
+ 'ingres_result_seek',
+ 'ingres_rollback',
+ 'ingres_set_environment',
+ 'ingres_unbuffered_query',
+ 'inotify_add_watch',
+ 'inotify_init',
+ 'inotify_queue_len',
+ 'inotify_read',
+ 'inotify_rm_watch',
+ 'kadm5_chpass_principal',
+ 'kadm5_create_principal',
+ 'kadm5_delete_principal',
+ 'kadm5_destroy',
+ 'kadm5_flush',
+ 'kadm5_get_policies',
+ 'kadm5_get_principal',
+ 'kadm5_get_principals',
+ 'kadm5_init_with_password',
+ 'kadm5_modify_principal',
+ 'ldap_add',
+ 'ldap_bind',
+ 'ldap_close',
+ 'ldap_compare',
+ 'ldap_control_paged_result',
+ 'ldap_control_paged_result_response',
+ 'ldap_count_entries',
+ 'ldap_delete',
+ 'ldap_errno',
+ 'ldap_error',
+ 'ldap_exop',
+ 'ldap_exop_passwd',
+ 'ldap_exop_refresh',
+ 'ldap_exop_whoami',
+ 'ldap_first_attribute',
+ 'ldap_first_entry',
+ 'ldap_first_reference',
+ 'ldap_free_result',
+ 'ldap_get_attributes',
+ 'ldap_get_dn',
+ 'ldap_get_entries',
+ 'ldap_get_option',
+ 'ldap_get_values',
+ 'ldap_get_values_len',
+ 'ldap_mod_add',
+ 'ldap_mod_del',
+ 'ldap_mod_replace',
+ 'ldap_modify',
+ 'ldap_modify_batch',
+ 'ldap_next_attribute',
+ 'ldap_next_entry',
+ 'ldap_next_reference',
+ 'ldap_parse_exop',
+ 'ldap_parse_reference',
+ 'ldap_parse_result',
+ 'ldap_rename',
+ 'ldap_sasl_bind',
+ 'ldap_set_option',
+ 'ldap_set_rebind_proc',
+ 'ldap_sort',
+ 'ldap_start_tls',
+ 'ldap_unbind',
+ 'libxml_set_streams_context',
+ 'm_checkstatus',
+ 'm_completeauthorizations',
+ 'm_connect',
+ 'm_connectionerror',
+ 'm_deletetrans',
+ 'm_destroyconn',
+ 'm_getcell',
+ 'm_getcellbynum',
+ 'm_getcommadelimited',
+ 'm_getheader',
+ 'm_initconn',
+ 'm_iscommadelimited',
+ 'm_maxconntimeout',
+ 'm_monitor',
+ 'm_numcolumns',
+ 'm_numrows',
+ 'm_parsecommadelimited',
+ 'm_responsekeys',
+ 'm_responseparam',
+ 'm_returnstatus',
+ 'm_setblocking',
+ 'm_setdropfile',
+ 'm_setip',
+ 'm_setssl',
+ 'm_setssl_cafile',
+ 'm_setssl_files',
+ 'm_settimeout',
+ 'm_transactionssent',
+ 'm_transinqueue',
+ 'm_transkeyval',
+ 'm_transnew',
+ 'm_transsend',
+ 'm_validateidentifier',
+ 'm_verifyconnection',
+ 'm_verifysslcert',
+ 'mailparse_determine_best_xfer_encoding',
+ 'mailparse_msg_create',
+ 'mailparse_msg_extract_part',
+ 'mailparse_msg_extract_part_file',
+ 'mailparse_msg_extract_whole_part_file',
+ 'mailparse_msg_free',
+ 'mailparse_msg_get_part',
+ 'mailparse_msg_get_part_data',
+ 'mailparse_msg_get_structure',
+ 'mailparse_msg_parse',
+ 'mailparse_msg_parse_file',
+ 'mailparse_stream_encode',
+ 'mailparse_uudecode_all',
+ 'maxdb::use_result',
+ 'maxdb_affected_rows',
+ 'maxdb_connect',
+ 'maxdb_disable_rpl_parse',
+ 'maxdb_dump_debug_info',
+ 'maxdb_embedded_connect',
+ 'maxdb_enable_reads_from_master',
+ 'maxdb_enable_rpl_parse',
+ 'maxdb_errno',
+ 'maxdb_error',
+ 'maxdb_fetch_lengths',
+ 'maxdb_field_tell',
+ 'maxdb_get_host_info',
+ 'maxdb_get_proto_info',
+ 'maxdb_get_server_info',
+ 'maxdb_get_server_version',
+ 'maxdb_info',
+ 'maxdb_init',
+ 'maxdb_insert_id',
+ 'maxdb_master_query',
+ 'maxdb_more_results',
+ 'maxdb_next_result',
+ 'maxdb_num_fields',
+ 'maxdb_num_rows',
+ 'maxdb_rpl_parse_enabled',
+ 'maxdb_rpl_probe',
+ 'maxdb_select_db',
+ 'maxdb_sqlstate',
+ 'maxdb_stmt::result_metadata',
+ 'maxdb_stmt_affected_rows',
+ 'maxdb_stmt_errno',
+ 'maxdb_stmt_error',
+ 'maxdb_stmt_num_rows',
+ 'maxdb_stmt_param_count',
+ 'maxdb_stmt_result_metadata',
+ 'maxdb_stmt_sqlstate',
+ 'maxdb_thread_id',
+ 'maxdb_use_result',
+ 'maxdb_warning_count',
+ 'mcrypt_enc_get_algorithms_name',
+ 'mcrypt_enc_get_block_size',
+ 'mcrypt_enc_get_iv_size',
+ 'mcrypt_enc_get_key_size',
+ 'mcrypt_enc_get_modes_name',
+ 'mcrypt_enc_get_supported_key_sizes',
+ 'mcrypt_enc_is_block_algorithm',
+ 'mcrypt_enc_is_block_algorithm_mode',
+ 'mcrypt_enc_is_block_mode',
+ 'mcrypt_enc_self_test',
+ 'mcrypt_generic',
+ 'mcrypt_generic_deinit',
+ 'mcrypt_generic_end',
+ 'mcrypt_generic_init',
+ 'mcrypt_module_close',
+ 'mcrypt_module_open',
+ 'mdecrypt_generic',
+ 'mkdir',
+ 'mqseries_back',
+ 'mqseries_begin',
+ 'mqseries_close',
+ 'mqseries_cmit',
+ 'mqseries_conn',
+ 'mqseries_connx',
+ 'mqseries_disc',
+ 'mqseries_get',
+ 'mqseries_inq',
+ 'mqseries_open',
+ 'mqseries_put',
+ 'mqseries_put1',
+ 'mqseries_set',
+ 'msg_get_queue',
+ 'msg_receive',
+ 'msg_remove_queue',
+ 'msg_send',
+ 'msg_set_queue',
+ 'msg_stat_queue',
+ 'msql_affected_rows',
+ 'msql_close',
+ 'msql_connect',
+ 'msql_create_db',
+ 'msql_data_seek',
+ 'msql_db_query',
+ 'msql_drop_db',
+ 'msql_fetch_array',
+ 'msql_fetch_field',
+ 'msql_fetch_object',
+ 'msql_fetch_row',
+ 'msql_field_flags',
+ 'msql_field_len',
+ 'msql_field_name',
+ 'msql_field_seek',
+ 'msql_field_table',
+ 'msql_field_type',
+ 'msql_free_result',
+ 'msql_list_dbs',
+ 'msql_list_fields',
+ 'msql_list_tables',
+ 'msql_num_fields',
+ 'msql_num_rows',
+ 'msql_pconnect',
+ 'msql_query',
+ 'msql_result',
+ 'msql_select_db',
+ 'mssql_bind',
+ 'mssql_close',
+ 'mssql_connect',
+ 'mssql_data_seek',
+ 'mssql_execute',
+ 'mssql_fetch_array',
+ 'mssql_fetch_assoc',
+ 'mssql_fetch_batch',
+ 'mssql_fetch_field',
+ 'mssql_fetch_object',
+ 'mssql_fetch_row',
+ 'mssql_field_length',
+ 'mssql_field_name',
+ 'mssql_field_seek',
+ 'mssql_field_type',
+ 'mssql_free_result',
+ 'mssql_free_statement',
+ 'mssql_init',
+ 'mssql_next_result',
+ 'mssql_num_fields',
+ 'mssql_num_rows',
+ 'mssql_pconnect',
+ 'mssql_query',
+ 'mssql_result',
+ 'mssql_rows_affected',
+ 'mssql_select_db',
+ 'mysql_affected_rows',
+ 'mysql_client_encoding',
+ 'mysql_close',
+ 'mysql_connect',
+ 'mysql_create_db',
+ 'mysql_data_seek',
+ 'mysql_db_name',
+ 'mysql_db_query',
+ 'mysql_drop_db',
+ 'mysql_errno',
+ 'mysql_error',
+ 'mysql_fetch_array',
+ 'mysql_fetch_assoc',
+ 'mysql_fetch_field',
+ 'mysql_fetch_lengths',
+ 'mysql_fetch_object',
+ 'mysql_fetch_row',
+ 'mysql_field_flags',
+ 'mysql_field_len',
+ 'mysql_field_name',
+ 'mysql_field_seek',
+ 'mysql_field_table',
+ 'mysql_field_type',
+ 'mysql_free_result',
+ 'mysql_get_host_info',
+ 'mysql_get_proto_info',
+ 'mysql_get_server_info',
+ 'mysql_info',
+ 'mysql_insert_id',
+ 'mysql_list_dbs',
+ 'mysql_list_fields',
+ 'mysql_list_processes',
+ 'mysql_list_tables',
+ 'mysql_num_fields',
+ 'mysql_num_rows',
+ 'mysql_pconnect',
+ 'mysql_ping',
+ 'mysql_query',
+ 'mysql_real_escape_string',
+ 'mysql_result',
+ 'mysql_select_db',
+ 'mysql_set_charset',
+ 'mysql_stat',
+ 'mysql_tablename',
+ 'mysql_thread_id',
+ 'mysql_unbuffered_query',
+ 'mysqlnd_uh_convert_to_mysqlnd',
+ 'ncurses_bottom_panel',
+ 'ncurses_del_panel',
+ 'ncurses_delwin',
+ 'ncurses_getmaxyx',
+ 'ncurses_getyx',
+ 'ncurses_hide_panel',
+ 'ncurses_keypad',
+ 'ncurses_meta',
+ 'ncurses_move_panel',
+ 'ncurses_mvwaddstr',
+ 'ncurses_new_panel',
+ 'ncurses_newpad',
+ 'ncurses_newwin',
+ 'ncurses_panel_above',
+ 'ncurses_panel_below',
+ 'ncurses_panel_window',
+ 'ncurses_pnoutrefresh',
+ 'ncurses_prefresh',
+ 'ncurses_replace_panel',
+ 'ncurses_show_panel',
+ 'ncurses_top_panel',
+ 'ncurses_waddch',
+ 'ncurses_waddstr',
+ 'ncurses_wattroff',
+ 'ncurses_wattron',
+ 'ncurses_wattrset',
+ 'ncurses_wborder',
+ 'ncurses_wclear',
+ 'ncurses_wcolor_set',
+ 'ncurses_werase',
+ 'ncurses_wgetch',
+ 'ncurses_whline',
+ 'ncurses_wmouse_trafo',
+ 'ncurses_wmove',
+ 'ncurses_wnoutrefresh',
+ 'ncurses_wrefresh',
+ 'ncurses_wstandend',
+ 'ncurses_wstandout',
+ 'ncurses_wvline',
+ 'newt_button',
+ 'newt_button_bar',
+ 'newt_checkbox',
+ 'newt_checkbox_get_value',
+ 'newt_checkbox_set_flags',
+ 'newt_checkbox_set_value',
+ 'newt_checkbox_tree',
+ 'newt_checkbox_tree_add_item',
+ 'newt_checkbox_tree_find_item',
+ 'newt_checkbox_tree_get_current',
+ 'newt_checkbox_tree_get_entry_value',
+ 'newt_checkbox_tree_get_multi_selection',
+ 'newt_checkbox_tree_get_selection',
+ 'newt_checkbox_tree_multi',
+ 'newt_checkbox_tree_set_current',
+ 'newt_checkbox_tree_set_entry',
+ 'newt_checkbox_tree_set_entry_value',
+ 'newt_checkbox_tree_set_width',
+ 'newt_compact_button',
+ 'newt_component_add_callback',
+ 'newt_component_takes_focus',
+ 'newt_create_grid',
+ 'newt_draw_form',
+ 'newt_entry',
+ 'newt_entry_get_value',
+ 'newt_entry_set',
+ 'newt_entry_set_filter',
+ 'newt_entry_set_flags',
+ 'newt_form',
+ 'newt_form_add_component',
+ 'newt_form_add_components',
+ 'newt_form_add_hot_key',
+ 'newt_form_destroy',
+ 'newt_form_get_current',
+ 'newt_form_run',
+ 'newt_form_set_background',
+ 'newt_form_set_height',
+ 'newt_form_set_size',
+ 'newt_form_set_timer',
+ 'newt_form_set_width',
+ 'newt_form_watch_fd',
+ 'newt_grid_add_components_to_form',
+ 'newt_grid_basic_window',
+ 'newt_grid_free',
+ 'newt_grid_get_size',
+ 'newt_grid_h_close_stacked',
+ 'newt_grid_h_stacked',
+ 'newt_grid_place',
+ 'newt_grid_set_field',
+ 'newt_grid_simple_window',
+ 'newt_grid_v_close_stacked',
+ 'newt_grid_v_stacked',
+ 'newt_grid_wrapped_window',
+ 'newt_grid_wrapped_window_at',
+ 'newt_label',
+ 'newt_label_set_text',
+ 'newt_listbox',
+ 'newt_listbox_append_entry',
+ 'newt_listbox_clear',
+ 'newt_listbox_clear_selection',
+ 'newt_listbox_delete_entry',
+ 'newt_listbox_get_current',
+ 'newt_listbox_get_selection',
+ 'newt_listbox_insert_entry',
+ 'newt_listbox_item_count',
+ 'newt_listbox_select_item',
+ 'newt_listbox_set_current',
+ 'newt_listbox_set_current_by_key',
+ 'newt_listbox_set_data',
+ 'newt_listbox_set_entry',
+ 'newt_listbox_set_width',
+ 'newt_listitem',
+ 'newt_listitem_get_data',
+ 'newt_listitem_set',
+ 'newt_radio_get_current',
+ 'newt_radiobutton',
+ 'newt_run_form',
+ 'newt_scale',
+ 'newt_scale_set',
+ 'newt_scrollbar_set',
+ 'newt_textbox',
+ 'newt_textbox_get_num_lines',
+ 'newt_textbox_reflowed',
+ 'newt_textbox_set_height',
+ 'newt_textbox_set_text',
+ 'newt_vertical_scrollbar',
+ 'oci_bind_array_by_name',
+ 'oci_bind_by_name',
+ 'oci_cancel',
+ 'oci_close',
+ 'oci_commit',
+ 'oci_connect',
+ 'oci_define_by_name',
+ 'oci_error',
+ 'oci_execute',
+ 'oci_fetch',
+ 'oci_fetch_all',
+ 'oci_fetch_array',
+ 'oci_fetch_assoc',
+ 'oci_fetch_object',
+ 'oci_fetch_row',
+ 'oci_field_is_null',
+ 'oci_field_name',
+ 'oci_field_precision',
+ 'oci_field_scale',
+ 'oci_field_size',
+ 'oci_field_type',
+ 'oci_field_type_raw',
+ 'oci_free_cursor',
+ 'oci_free_statement',
+ 'oci_get_implicit_resultset',
+ 'oci_new_collection',
+ 'oci_new_connect',
+ 'oci_new_cursor',
+ 'oci_new_descriptor',
+ 'oci_num_fields',
+ 'oci_num_rows',
+ 'oci_parse',
+ 'oci_pconnect',
+ 'oci_register_taf_callback',
+ 'oci_result',
+ 'oci_rollback',
+ 'oci_server_version',
+ 'oci_set_action',
+ 'oci_set_client_identifier',
+ 'oci_set_client_info',
+ 'oci_set_module_name',
+ 'oci_set_prefetch',
+ 'oci_statement_type',
+ 'oci_unregister_taf_callback',
+ 'odbc_autocommit',
+ 'odbc_close',
+ 'odbc_columnprivileges',
+ 'odbc_columns',
+ 'odbc_commit',
+ 'odbc_connect',
+ 'odbc_cursor',
+ 'odbc_data_source',
+ 'odbc_do',
+ 'odbc_error',
+ 'odbc_errormsg',
+ 'odbc_exec',
+ 'odbc_execute',
+ 'odbc_fetch_array',
+ 'odbc_fetch_into',
+ 'odbc_fetch_row',
+ 'odbc_field_len',
+ 'odbc_field_name',
+ 'odbc_field_num',
+ 'odbc_field_precision',
+ 'odbc_field_scale',
+ 'odbc_field_type',
+ 'odbc_foreignkeys',
+ 'odbc_free_result',
+ 'odbc_gettypeinfo',
+ 'odbc_next_result',
+ 'odbc_num_fields',
+ 'odbc_num_rows',
+ 'odbc_pconnect',
+ 'odbc_prepare',
+ 'odbc_primarykeys',
+ 'odbc_procedurecolumns',
+ 'odbc_procedures',
+ 'odbc_result',
+ 'odbc_result_all',
+ 'odbc_rollback',
+ 'odbc_setoption',
+ 'odbc_specialcolumns',
+ 'odbc_statistics',
+ 'odbc_tableprivileges',
+ 'odbc_tables',
+ 'openal_buffer_create',
+ 'openal_buffer_data',
+ 'openal_buffer_destroy',
+ 'openal_buffer_get',
+ 'openal_buffer_loadwav',
+ 'openal_context_create',
+ 'openal_context_current',
+ 'openal_context_destroy',
+ 'openal_context_process',
+ 'openal_context_suspend',
+ 'openal_device_close',
+ 'openal_device_open',
+ 'openal_source_create',
+ 'openal_source_destroy',
+ 'openal_source_get',
+ 'openal_source_pause',
+ 'openal_source_play',
+ 'openal_source_rewind',
+ 'openal_source_set',
+ 'openal_source_stop',
+ 'openal_stream',
+ 'opendir',
+ 'openssl_csr_new',
+ 'openssl_dh_compute_key',
+ 'openssl_free_key',
+ 'openssl_pkey_export',
+ 'openssl_pkey_free',
+ 'openssl_pkey_get_details',
+ 'openssl_spki_new',
+ 'openssl_x509_free',
+ 'pclose',
+ 'pfsockopen',
+ 'pg_affected_rows',
+ 'pg_cancel_query',
+ 'pg_client_encoding',
+ 'pg_close',
+ 'pg_connect_poll',
+ 'pg_connection_busy',
+ 'pg_connection_reset',
+ 'pg_connection_status',
+ 'pg_consume_input',
+ 'pg_convert',
+ 'pg_copy_from',
+ 'pg_copy_to',
+ 'pg_dbname',
+ 'pg_delete',
+ 'pg_end_copy',
+ 'pg_escape_bytea',
+ 'pg_escape_identifier',
+ 'pg_escape_literal',
+ 'pg_escape_string',
+ 'pg_execute',
+ 'pg_fetch_all',
+ 'pg_fetch_all_columns',
+ 'pg_fetch_array',
+ 'pg_fetch_assoc',
+ 'pg_fetch_row',
+ 'pg_field_name',
+ 'pg_field_num',
+ 'pg_field_size',
+ 'pg_field_table',
+ 'pg_field_type',
+ 'pg_field_type_oid',
+ 'pg_flush',
+ 'pg_free_result',
+ 'pg_get_notify',
+ 'pg_get_pid',
+ 'pg_get_result',
+ 'pg_host',
+ 'pg_insert',
+ 'pg_last_error',
+ 'pg_last_notice',
+ 'pg_last_oid',
+ 'pg_lo_close',
+ 'pg_lo_create',
+ 'pg_lo_export',
+ 'pg_lo_import',
+ 'pg_lo_open',
+ 'pg_lo_read',
+ 'pg_lo_read_all',
+ 'pg_lo_seek',
+ 'pg_lo_tell',
+ 'pg_lo_truncate',
+ 'pg_lo_unlink',
+ 'pg_lo_write',
+ 'pg_meta_data',
+ 'pg_num_fields',
+ 'pg_num_rows',
+ 'pg_options',
+ 'pg_parameter_status',
+ 'pg_ping',
+ 'pg_port',
+ 'pg_prepare',
+ 'pg_put_line',
+ 'pg_query',
+ 'pg_query_params',
+ 'pg_result_error',
+ 'pg_result_error_field',
+ 'pg_result_seek',
+ 'pg_result_status',
+ 'pg_select',
+ 'pg_send_execute',
+ 'pg_send_prepare',
+ 'pg_send_query',
+ 'pg_send_query_params',
+ 'pg_set_client_encoding',
+ 'pg_set_error_verbosity',
+ 'pg_socket',
+ 'pg_trace',
+ 'pg_transaction_status',
+ 'pg_tty',
+ 'pg_untrace',
+ 'pg_update',
+ 'pg_version',
+ 'php_user_filter::filter',
+ 'proc_close',
+ 'proc_get_status',
+ 'proc_terminate',
+ 'ps_add_bookmark',
+ 'ps_add_launchlink',
+ 'ps_add_locallink',
+ 'ps_add_note',
+ 'ps_add_pdflink',
+ 'ps_add_weblink',
+ 'ps_arc',
+ 'ps_arcn',
+ 'ps_begin_page',
+ 'ps_begin_pattern',
+ 'ps_begin_template',
+ 'ps_circle',
+ 'ps_clip',
+ 'ps_close',
+ 'ps_close_image',
+ 'ps_closepath',
+ 'ps_closepath_stroke',
+ 'ps_continue_text',
+ 'ps_curveto',
+ 'ps_delete',
+ 'ps_end_page',
+ 'ps_end_pattern',
+ 'ps_end_template',
+ 'ps_fill',
+ 'ps_fill_stroke',
+ 'ps_findfont',
+ 'ps_get_buffer',
+ 'ps_get_parameter',
+ 'ps_get_value',
+ 'ps_hyphenate',
+ 'ps_include_file',
+ 'ps_lineto',
+ 'ps_makespotcolor',
+ 'ps_moveto',
+ 'ps_new',
+ 'ps_open_file',
+ 'ps_open_image',
+ 'ps_open_image_file',
+ 'ps_open_memory_image',
+ 'ps_place_image',
+ 'ps_rect',
+ 'ps_restore',
+ 'ps_rotate',
+ 'ps_save',
+ 'ps_scale',
+ 'ps_set_border_color',
+ 'ps_set_border_dash',
+ 'ps_set_border_style',
+ 'ps_set_info',
+ 'ps_set_parameter',
+ 'ps_set_text_pos',
+ 'ps_set_value',
+ 'ps_setcolor',
+ 'ps_setdash',
+ 'ps_setflat',
+ 'ps_setfont',
+ 'ps_setgray',
+ 'ps_setlinecap',
+ 'ps_setlinejoin',
+ 'ps_setlinewidth',
+ 'ps_setmiterlimit',
+ 'ps_setoverprintmode',
+ 'ps_setpolydash',
+ 'ps_shading',
+ 'ps_shading_pattern',
+ 'ps_shfill',
+ 'ps_show',
+ 'ps_show2',
+ 'ps_show_boxed',
+ 'ps_show_xy',
+ 'ps_show_xy2',
+ 'ps_string_geometry',
+ 'ps_stringwidth',
+ 'ps_stroke',
+ 'ps_symbol',
+ 'ps_symbol_name',
+ 'ps_symbol_width',
+ 'ps_translate',
+ 'px_close',
+ 'px_create_fp',
+ 'px_date2string',
+ 'px_delete',
+ 'px_delete_record',
+ 'px_get_field',
+ 'px_get_info',
+ 'px_get_parameter',
+ 'px_get_record',
+ 'px_get_schema',
+ 'px_get_value',
+ 'px_insert_record',
+ 'px_new',
+ 'px_numfields',
+ 'px_numrecords',
+ 'px_open_fp',
+ 'px_put_record',
+ 'px_retrieve_record',
+ 'px_set_blob_file',
+ 'px_set_parameter',
+ 'px_set_tablename',
+ 'px_set_targetencoding',
+ 'px_set_value',
+ 'px_timestamp2string',
+ 'px_update_record',
+ 'radius_acct_open',
+ 'radius_add_server',
+ 'radius_auth_open',
+ 'radius_close',
+ 'radius_config',
+ 'radius_create_request',
+ 'radius_demangle',
+ 'radius_demangle_mppe_key',
+ 'radius_get_attr',
+ 'radius_put_addr',
+ 'radius_put_attr',
+ 'radius_put_int',
+ 'radius_put_string',
+ 'radius_put_vendor_addr',
+ 'radius_put_vendor_attr',
+ 'radius_put_vendor_int',
+ 'radius_put_vendor_string',
+ 'radius_request_authenticator',
+ 'radius_salt_encrypt_attr',
+ 'radius_send_request',
+ 'radius_server_secret',
+ 'radius_strerror',
+ 'readdir',
+ 'readfile',
+ 'recode_file',
+ 'rename',
+ 'rewind',
+ 'rewinddir',
+ 'rmdir',
+ 'rpm_close',
+ 'rpm_get_tag',
+ 'rpm_open',
+ 'sapi_windows_vt100_support',
+ 'scandir',
+ 'sem_acquire',
+ 'sem_get',
+ 'sem_release',
+ 'sem_remove',
+ 'set_file_buffer',
+ 'shm_attach',
+ 'shm_detach',
+ 'shm_get_var',
+ 'shm_has_var',
+ 'shm_put_var',
+ 'shm_remove',
+ 'shm_remove_var',
+ 'shmop_close',
+ 'shmop_delete',
+ 'shmop_open',
+ 'shmop_read',
+ 'shmop_size',
+ 'shmop_write',
+ 'socket_accept',
+ 'socket_addrinfo_bind',
+ 'socket_addrinfo_connect',
+ 'socket_addrinfo_explain',
+ 'socket_bind',
+ 'socket_clear_error',
+ 'socket_close',
+ 'socket_connect',
+ 'socket_export_stream',
+ 'socket_get_option',
+ 'socket_get_status',
+ 'socket_getopt',
+ 'socket_getpeername',
+ 'socket_getsockname',
+ 'socket_import_stream',
+ 'socket_last_error',
+ 'socket_listen',
+ 'socket_read',
+ 'socket_recv',
+ 'socket_recvfrom',
+ 'socket_recvmsg',
+ 'socket_send',
+ 'socket_sendmsg',
+ 'socket_sendto',
+ 'socket_set_block',
+ 'socket_set_blocking',
+ 'socket_set_nonblock',
+ 'socket_set_option',
+ 'socket_set_timeout',
+ 'socket_shutdown',
+ 'socket_write',
+ 'sqlite_close',
+ 'sqlite_fetch_string',
+ 'sqlite_has_more',
+ 'sqlite_open',
+ 'sqlite_popen',
+ 'sqlsrv_begin_transaction',
+ 'sqlsrv_cancel',
+ 'sqlsrv_client_info',
+ 'sqlsrv_close',
+ 'sqlsrv_commit',
+ 'sqlsrv_connect',
+ 'sqlsrv_execute',
+ 'sqlsrv_fetch',
+ 'sqlsrv_fetch_array',
+ 'sqlsrv_fetch_object',
+ 'sqlsrv_field_metadata',
+ 'sqlsrv_free_stmt',
+ 'sqlsrv_get_field',
+ 'sqlsrv_has_rows',
+ 'sqlsrv_next_result',
+ 'sqlsrv_num_fields',
+ 'sqlsrv_num_rows',
+ 'sqlsrv_prepare',
+ 'sqlsrv_query',
+ 'sqlsrv_rollback',
+ 'sqlsrv_rows_affected',
+ 'sqlsrv_send_stream_data',
+ 'sqlsrv_server_info',
+ 'ssh2_auth_agent',
+ 'ssh2_auth_hostbased_file',
+ 'ssh2_auth_none',
+ 'ssh2_auth_password',
+ 'ssh2_auth_pubkey_file',
+ 'ssh2_disconnect',
+ 'ssh2_exec',
+ 'ssh2_fetch_stream',
+ 'ssh2_fingerprint',
+ 'ssh2_methods_negotiated',
+ 'ssh2_publickey_add',
+ 'ssh2_publickey_init',
+ 'ssh2_publickey_list',
+ 'ssh2_publickey_remove',
+ 'ssh2_scp_recv',
+ 'ssh2_scp_send',
+ 'ssh2_sftp',
+ 'ssh2_sftp_chmod',
+ 'ssh2_sftp_lstat',
+ 'ssh2_sftp_mkdir',
+ 'ssh2_sftp_readlink',
+ 'ssh2_sftp_realpath',
+ 'ssh2_sftp_rename',
+ 'ssh2_sftp_rmdir',
+ 'ssh2_sftp_stat',
+ 'ssh2_sftp_symlink',
+ 'ssh2_sftp_unlink',
+ 'ssh2_shell',
+ 'ssh2_tunnel',
+ 'stomp_connect',
+ 'streamWrapper::stream_cast',
+ 'stream_bucket_append',
+ 'stream_bucket_make_writeable',
+ 'stream_bucket_new',
+ 'stream_bucket_prepend',
+ 'stream_context_create',
+ 'stream_context_get_default',
+ 'stream_context_get_options',
+ 'stream_context_get_params',
+ 'stream_context_set_default',
+ 'stream_context_set_params',
+ 'stream_copy_to_stream',
+ 'stream_encoding',
+ 'stream_filter_append',
+ 'stream_filter_prepend',
+ 'stream_filter_remove',
+ 'stream_get_contents',
+ 'stream_get_line',
+ 'stream_get_meta_data',
+ 'stream_isatty',
+ 'stream_set_blocking',
+ 'stream_set_chunk_size',
+ 'stream_set_read_buffer',
+ 'stream_set_timeout',
+ 'stream_set_write_buffer',
+ 'stream_socket_accept',
+ 'stream_socket_client',
+ 'stream_socket_enable_crypto',
+ 'stream_socket_get_name',
+ 'stream_socket_recvfrom',
+ 'stream_socket_sendto',
+ 'stream_socket_server',
+ 'stream_socket_shutdown',
+ 'stream_supports_lock',
+ 'svn_fs_abort_txn',
+ 'svn_fs_apply_text',
+ 'svn_fs_begin_txn2',
+ 'svn_fs_change_node_prop',
+ 'svn_fs_check_path',
+ 'svn_fs_contents_changed',
+ 'svn_fs_copy',
+ 'svn_fs_delete',
+ 'svn_fs_dir_entries',
+ 'svn_fs_file_contents',
+ 'svn_fs_file_length',
+ 'svn_fs_is_dir',
+ 'svn_fs_is_file',
+ 'svn_fs_make_dir',
+ 'svn_fs_make_file',
+ 'svn_fs_node_created_rev',
+ 'svn_fs_node_prop',
+ 'svn_fs_props_changed',
+ 'svn_fs_revision_prop',
+ 'svn_fs_revision_root',
+ 'svn_fs_txn_root',
+ 'svn_fs_youngest_rev',
+ 'svn_repos_create',
+ 'svn_repos_fs',
+ 'svn_repos_fs_begin_txn_for_commit',
+ 'svn_repos_fs_commit_txn',
+ 'svn_repos_open',
+ 'sybase_affected_rows',
+ 'sybase_close',
+ 'sybase_connect',
+ 'sybase_data_seek',
+ 'sybase_fetch_array',
+ 'sybase_fetch_assoc',
+ 'sybase_fetch_field',
+ 'sybase_fetch_object',
+ 'sybase_fetch_row',
+ 'sybase_field_seek',
+ 'sybase_free_result',
+ 'sybase_num_fields',
+ 'sybase_num_rows',
+ 'sybase_pconnect',
+ 'sybase_query',
+ 'sybase_result',
+ 'sybase_select_db',
+ 'sybase_set_message_handler',
+ 'sybase_unbuffered_query',
+ 'tmpfile',
+ 'udm_add_search_limit',
+ 'udm_alloc_agent',
+ 'udm_alloc_agent_array',
+ 'udm_cat_list',
+ 'udm_cat_path',
+ 'udm_check_charset',
+ 'udm_clear_search_limits',
+ 'udm_crc32',
+ 'udm_errno',
+ 'udm_error',
+ 'udm_find',
+ 'udm_free_agent',
+ 'udm_free_res',
+ 'udm_get_doc_count',
+ 'udm_get_res_field',
+ 'udm_get_res_param',
+ 'udm_hash32',
+ 'udm_load_ispell_data',
+ 'udm_set_agent_param',
+ 'unlink',
+ 'vfprintf',
+ 'w32api_init_dtype',
+ 'wddx_add_vars',
+ 'wddx_packet_end',
+ 'wddx_packet_start',
+ 'xml_get_current_byte_index',
+ 'xml_get_current_column_number',
+ 'xml_get_current_line_number',
+ 'xml_get_error_code',
+ 'xml_parse',
+ 'xml_parse_into_struct',
+ 'xml_parser_create',
+ 'xml_parser_create_ns',
+ 'xml_parser_free',
+ 'xml_parser_get_option',
+ 'xml_parser_set_option',
+ 'xml_set_character_data_handler',
+ 'xml_set_default_handler',
+ 'xml_set_element_handler',
+ 'xml_set_end_namespace_decl_handler',
+ 'xml_set_external_entity_ref_handler',
+ 'xml_set_notation_decl_handler',
+ 'xml_set_object',
+ 'xml_set_processing_instruction_handler',
+ 'xml_set_start_namespace_decl_handler',
+ 'xml_set_unparsed_entity_decl_handler',
+ 'xmlrpc_server_add_introspection_data',
+ 'xmlrpc_server_call_method',
+ 'xmlrpc_server_create',
+ 'xmlrpc_server_destroy',
+ 'xmlrpc_server_register_introspection_callback',
+ 'xmlrpc_server_register_method',
+ 'xmlwriter_end_attribute',
+ 'xmlwriter_end_cdata',
+ 'xmlwriter_end_comment',
+ 'xmlwriter_end_document',
+ 'xmlwriter_end_dtd',
+ 'xmlwriter_end_dtd_attlist',
+ 'xmlwriter_end_dtd_element',
+ 'xmlwriter_end_dtd_entity',
+ 'xmlwriter_end_element',
+ 'xmlwriter_end_pi',
+ 'xmlwriter_flush',
+ 'xmlwriter_full_end_element',
+ 'xmlwriter_open_memory',
+ 'xmlwriter_open_uri',
+ 'xmlwriter_output_memory',
+ 'xmlwriter_set_indent',
+ 'xmlwriter_set_indent_string',
+ 'xmlwriter_start_attribute',
+ 'xmlwriter_start_attribute_ns',
+ 'xmlwriter_start_cdata',
+ 'xmlwriter_start_comment',
+ 'xmlwriter_start_document',
+ 'xmlwriter_start_dtd',
+ 'xmlwriter_start_dtd_attlist',
+ 'xmlwriter_start_dtd_element',
+ 'xmlwriter_start_dtd_entity',
+ 'xmlwriter_start_element',
+ 'xmlwriter_start_element_ns',
+ 'xmlwriter_start_pi',
+ 'xmlwriter_text',
+ 'xmlwriter_write_attribute',
+ 'xmlwriter_write_attribute_ns',
+ 'xmlwriter_write_cdata',
+ 'xmlwriter_write_comment',
+ 'xmlwriter_write_dtd',
+ 'xmlwriter_write_dtd_attlist',
+ 'xmlwriter_write_dtd_element',
+ 'xmlwriter_write_dtd_entity',
+ 'xmlwriter_write_element',
+ 'xmlwriter_write_element_ns',
+ 'xmlwriter_write_pi',
+ 'xmlwriter_write_raw',
+ 'xslt_create',
+ 'yaz_addinfo',
+ 'yaz_ccl_conf',
+ 'yaz_ccl_parse',
+ 'yaz_close',
+ 'yaz_database',
+ 'yaz_element',
+ 'yaz_errno',
+ 'yaz_error',
+ 'yaz_es',
+ 'yaz_es_result',
+ 'yaz_get_option',
+ 'yaz_hits',
+ 'yaz_itemorder',
+ 'yaz_present',
+ 'yaz_range',
+ 'yaz_record',
+ 'yaz_scan',
+ 'yaz_scan_result',
+ 'yaz_schema',
+ 'yaz_search',
+ 'yaz_sort',
+ 'yaz_syntax',
+ 'zip_close',
+ 'zip_entry_close',
+ 'zip_entry_compressedsize',
+ 'zip_entry_compressionmethod',
+ 'zip_entry_filesize',
+ 'zip_entry_name',
+ 'zip_entry_open',
+ 'zip_entry_read',
+ 'zip_open',
+ 'zip_read',
+ ];
+ }
+}
diff --git a/vendor/sebastian/type/ChangeLog.md b/vendor/sebastian/type/ChangeLog.md
new file mode 100644
index 000000000..73837bde5
--- /dev/null
+++ b/vendor/sebastian/type/ChangeLog.md
@@ -0,0 +1,123 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+## [2.3.4] - 2021-06-15
+
+* Fixed regression introduced in 2.3.3
+
+## [2.3.3] - 2021-06-15 [YANKED]
+
+### Fixed
+
+* [#15](https://github.com/sebastianbergmann/type/issues/15): "false" pseudo type is not handled properly
+
+## [2.3.2] - 2021-06-04
+
+### Fixed
+
+* Fixed handling of tentatively declared return types
+
+## [2.3.1] - 2020-10-26
+
+### Fixed
+
+* `SebastianBergmann\Type\Exception` now correctly extends `\Throwable`
+
+## [2.3.0] - 2020-10-06
+
+### Added
+
+* [#14](https://github.com/sebastianbergmann/type/issues/14): Support for `static` return type that is introduced in PHP 8
+
+## [2.2.2] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [2.2.1] - 2020-07-05
+
+### Fixed
+
+* Fixed handling of `mixed` type in `ReflectionMapper::fromMethodReturnType()`
+
+## [2.2.0] - 2020-07-05
+
+### Added
+
+* Added `MixedType` object for representing PHP 8's `mixed` type
+
+## [2.1.1] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [2.1.0] - 2020-06-01
+
+### Added
+
+* Added `UnionType` object for representing PHP 8's Union Types
+* Added `ReflectionMapper::fromMethodReturnType()` for mapping `\ReflectionMethod::getReturnType()` to a `Type` object
+* Added `Type::name()` for retrieving the name of a type
+* Added `Type::asString()` for retrieving a textual representation of a type
+
+### Changed
+
+* Deprecated `Type::getReturnTypeDeclaration()` (use `Type::asString()` instead and prefix its result with `': '`)
+* Deprecated `TypeName::getNamespaceName()` (use `TypeName::namespaceName()` instead)
+* Deprecated `TypeName::getSimpleName()` (use `TypeName::simpleName()` instead)
+* Deprecated `TypeName::getQualifiedName()` (use `TypeName::qualifiedName()` instead)
+
+## [2.0.0] - 2020-02-07
+
+### Removed
+
+* This component is no longer supported on PHP 7.2
+
+## [1.1.3] - 2019-07-02
+
+### Fixed
+
+* Fixed class name comparison in `ObjectType` to be case-insensitive
+
+## [1.1.2] - 2019-06-19
+
+### Fixed
+
+* Fixed handling of `object` type
+
+## [1.1.1] - 2019-06-08
+
+### Fixed
+
+* Fixed autoloading of `callback_function.php` fixture file
+
+## [1.1.0] - 2019-06-07
+
+### Added
+
+* Added support for `callable` type
+* Added support for `iterable` type
+
+## [1.0.0] - 2019-06-06
+
+* Initial release based on [code contributed by Michel Hartmann to PHPUnit](https://github.com/sebastianbergmann/phpunit/pull/3673)
+
+[2.3.4]: https://github.com/sebastianbergmann/type/compare/ca39369c41313ed12c071ed38ecda8fcdb248859...2.3.4
+[2.3.3]: https://github.com/sebastianbergmann/type/compare/2.3.2...ca39369c41313ed12c071ed38ecda8fcdb248859
+[2.3.2]: https://github.com/sebastianbergmann/type/compare/2.3.1...2.3.2
+[2.3.1]: https://github.com/sebastianbergmann/type/compare/2.3.0...2.3.1
+[2.3.0]: https://github.com/sebastianbergmann/type/compare/2.2.2...2.3.0
+[2.2.2]: https://github.com/sebastianbergmann/type/compare/2.2.1...2.2.2
+[2.2.1]: https://github.com/sebastianbergmann/type/compare/2.2.0...2.2.1
+[2.2.0]: https://github.com/sebastianbergmann/type/compare/2.1.1...2.2.0
+[2.1.1]: https://github.com/sebastianbergmann/type/compare/2.1.0...2.1.1
+[2.1.0]: https://github.com/sebastianbergmann/type/compare/2.0.0...2.1.0
+[2.0.0]: https://github.com/sebastianbergmann/type/compare/1.1.3...2.0.0
+[1.1.3]: https://github.com/sebastianbergmann/type/compare/1.1.2...1.1.3
+[1.1.2]: https://github.com/sebastianbergmann/type/compare/1.1.1...1.1.2
+[1.1.1]: https://github.com/sebastianbergmann/type/compare/1.1.0...1.1.1
+[1.1.0]: https://github.com/sebastianbergmann/type/compare/1.0.0...1.1.0
+[1.0.0]: https://github.com/sebastianbergmann/type/compare/ff74aa41746bd8d10e931843ebf37d42da513ede...1.0.0
diff --git a/vendor/sebastian/type/LICENSE b/vendor/sebastian/type/LICENSE
new file mode 100644
index 000000000..b840591a9
--- /dev/null
+++ b/vendor/sebastian/type/LICENSE
@@ -0,0 +1,33 @@
+sebastian/type
+
+Copyright (c) 2019-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/type/README.md b/vendor/sebastian/type/README.md
new file mode 100644
index 000000000..1036ce7a7
--- /dev/null
+++ b/vendor/sebastian/type/README.md
@@ -0,0 +1,20 @@
+# sebastian/type
+
+[![CI Status](https://github.com/sebastianbergmann/type/workflows/CI/badge.svg)](https://github.com/sebastianbergmann/type/actions)
+[![Type Coverage](https://shepherd.dev/github/sebastianbergmann/type/coverage.svg)](https://shepherd.dev/github/sebastianbergmann/type)
+
+Collection of value objects that represent the types of the PHP type system.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+```
+composer require sebastian/type
+```
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+```
+composer require --dev sebastian/type
+```
diff --git a/vendor/sebastian/type/composer.json b/vendor/sebastian/type/composer.json
new file mode 100644
index 000000000..b02d8e92a
--- /dev/null
+++ b/vendor/sebastian/type/composer.json
@@ -0,0 +1,49 @@
+{
+ "name": "sebastian/type",
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "type": "library",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues"
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "autoload-dev": {
+ "classmap": [
+ "tests/_fixture"
+ ],
+ "files": [
+ "tests/_fixture/callback_function.php"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/type/src/CallableType.php b/vendor/sebastian/type/src/CallableType.php
new file mode 100644
index 000000000..026762eaf
--- /dev/null
+++ b/vendor/sebastian/type/src/CallableType.php
@@ -0,0 +1,197 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+use function assert;
+use function class_exists;
+use function count;
+use function explode;
+use function function_exists;
+use function is_array;
+use function is_object;
+use function is_string;
+use function strpos;
+use Closure;
+use ReflectionClass;
+use ReflectionException;
+use ReflectionObject;
+
+final class CallableType extends Type
+{
+ /**
+ * @var bool
+ */
+ private $allowsNull;
+
+ public function __construct(bool $nullable)
+ {
+ $this->allowsNull = $nullable;
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ public function isAssignable(Type $other): bool
+ {
+ if ($this->allowsNull && $other instanceof NullType) {
+ return true;
+ }
+
+ if ($other instanceof self) {
+ return true;
+ }
+
+ if ($other instanceof ObjectType) {
+ if ($this->isClosure($other)) {
+ return true;
+ }
+
+ if ($this->hasInvokeMethod($other)) {
+ return true;
+ }
+ }
+
+ if ($other instanceof SimpleType) {
+ if ($this->isFunction($other)) {
+ return true;
+ }
+
+ if ($this->isClassCallback($other)) {
+ return true;
+ }
+
+ if ($this->isObjectCallback($other)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public function name(): string
+ {
+ return 'callable';
+ }
+
+ public function allowsNull(): bool
+ {
+ return $this->allowsNull;
+ }
+
+ private function isClosure(ObjectType $type): bool
+ {
+ return !$type->className()->isNamespaced() && $type->className()->simpleName() === Closure::class;
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ private function hasInvokeMethod(ObjectType $type): bool
+ {
+ $className = $type->className()->qualifiedName();
+ assert(class_exists($className));
+
+ try {
+ $class = new ReflectionClass($className);
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new RuntimeException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ // @codeCoverageIgnoreEnd
+ }
+
+ if ($class->hasMethod('__invoke')) {
+ return true;
+ }
+
+ return false;
+ }
+
+ private function isFunction(SimpleType $type): bool
+ {
+ if (!is_string($type->value())) {
+ return false;
+ }
+
+ return function_exists($type->value());
+ }
+
+ private function isObjectCallback(SimpleType $type): bool
+ {
+ if (!is_array($type->value())) {
+ return false;
+ }
+
+ if (count($type->value()) !== 2) {
+ return false;
+ }
+
+ if (!is_object($type->value()[0]) || !is_string($type->value()[1])) {
+ return false;
+ }
+
+ [$object, $methodName] = $type->value();
+
+ return (new ReflectionObject($object))->hasMethod($methodName);
+ }
+
+ private function isClassCallback(SimpleType $type): bool
+ {
+ if (!is_string($type->value()) && !is_array($type->value())) {
+ return false;
+ }
+
+ if (is_string($type->value())) {
+ if (strpos($type->value(), '::') === false) {
+ return false;
+ }
+
+ [$className, $methodName] = explode('::', $type->value());
+ }
+
+ if (is_array($type->value())) {
+ if (count($type->value()) !== 2) {
+ return false;
+ }
+
+ if (!is_string($type->value()[0]) || !is_string($type->value()[1])) {
+ return false;
+ }
+
+ [$className, $methodName] = $type->value();
+ }
+
+ assert(isset($className) && is_string($className) && class_exists($className));
+ assert(isset($methodName) && is_string($methodName));
+
+ try {
+ $class = new ReflectionClass($className);
+
+ if ($class->hasMethod($methodName)) {
+ $method = $class->getMethod($methodName);
+
+ return $method->isPublic() && $method->isStatic();
+ }
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new RuntimeException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ // @codeCoverageIgnoreEnd
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/sebastian/type/src/FalseType.php b/vendor/sebastian/type/src/FalseType.php
new file mode 100644
index 000000000..425f363c0
--- /dev/null
+++ b/vendor/sebastian/type/src/FalseType.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+final class FalseType extends Type
+{
+ public function isAssignable(Type $other): bool
+ {
+ if ($other instanceof self) {
+ return true;
+ }
+
+ return $other instanceof SimpleType &&
+ $other->name() === 'bool' &&
+ $other->value() === false;
+ }
+
+ public function name(): string
+ {
+ return 'false';
+ }
+
+ public function allowsNull(): bool
+ {
+ return false;
+ }
+
+ /**
+ * @deprecated
+ *
+ * @codeCoverageIgnore
+ *
+ * @throws LogicException
+ */
+ public function getReturnTypeDeclaration(): string
+ {
+ throw new LogicException;
+ }
+}
diff --git a/vendor/sebastian/type/src/GenericObjectType.php b/vendor/sebastian/type/src/GenericObjectType.php
new file mode 100644
index 000000000..6871008bd
--- /dev/null
+++ b/vendor/sebastian/type/src/GenericObjectType.php
@@ -0,0 +1,46 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+final class GenericObjectType extends Type
+{
+ /**
+ * @var bool
+ */
+ private $allowsNull;
+
+ public function __construct(bool $nullable)
+ {
+ $this->allowsNull = $nullable;
+ }
+
+ public function isAssignable(Type $other): bool
+ {
+ if ($this->allowsNull && $other instanceof NullType) {
+ return true;
+ }
+
+ if (!$other instanceof ObjectType) {
+ return false;
+ }
+
+ return true;
+ }
+
+ public function name(): string
+ {
+ return 'object';
+ }
+
+ public function allowsNull(): bool
+ {
+ return $this->allowsNull;
+ }
+}
diff --git a/vendor/sebastian/type/src/IterableType.php b/vendor/sebastian/type/src/IterableType.php
new file mode 100644
index 000000000..c5bc6627b
--- /dev/null
+++ b/vendor/sebastian/type/src/IterableType.php
@@ -0,0 +1,76 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+use function assert;
+use function class_exists;
+use function is_iterable;
+use ReflectionClass;
+use ReflectionException;
+
+final class IterableType extends Type
+{
+ /**
+ * @var bool
+ */
+ private $allowsNull;
+
+ public function __construct(bool $nullable)
+ {
+ $this->allowsNull = $nullable;
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ public function isAssignable(Type $other): bool
+ {
+ if ($this->allowsNull && $other instanceof NullType) {
+ return true;
+ }
+
+ if ($other instanceof self) {
+ return true;
+ }
+
+ if ($other instanceof SimpleType) {
+ return is_iterable($other->value());
+ }
+
+ if ($other instanceof ObjectType) {
+ $className = $other->className()->qualifiedName();
+ assert(class_exists($className));
+
+ try {
+ return (new ReflectionClass($className))->isIterable();
+ // @codeCoverageIgnoreStart
+ } catch (ReflectionException $e) {
+ throw new RuntimeException(
+ $e->getMessage(),
+ (int) $e->getCode(),
+ $e
+ );
+ // @codeCoverageIgnoreEnd
+ }
+ }
+
+ return false;
+ }
+
+ public function name(): string
+ {
+ return 'iterable';
+ }
+
+ public function allowsNull(): bool
+ {
+ return $this->allowsNull;
+ }
+}
diff --git a/vendor/sebastian/type/src/MixedType.php b/vendor/sebastian/type/src/MixedType.php
new file mode 100644
index 000000000..7ad9191da
--- /dev/null
+++ b/vendor/sebastian/type/src/MixedType.php
@@ -0,0 +1,33 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+final class MixedType extends Type
+{
+ public function isAssignable(Type $other): bool
+ {
+ return !$other instanceof VoidType;
+ }
+
+ public function asString(): string
+ {
+ return 'mixed';
+ }
+
+ public function name(): string
+ {
+ return 'mixed';
+ }
+
+ public function allowsNull(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/sebastian/type/src/NullType.php b/vendor/sebastian/type/src/NullType.php
new file mode 100644
index 000000000..8481fceb8
--- /dev/null
+++ b/vendor/sebastian/type/src/NullType.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+final class NullType extends Type
+{
+ public function isAssignable(Type $other): bool
+ {
+ return !($other instanceof VoidType);
+ }
+
+ public function name(): string
+ {
+ return 'null';
+ }
+
+ public function asString(): string
+ {
+ return 'null';
+ }
+
+ /**
+ * @deprecated
+ *
+ * @codeCoverageIgnore
+ */
+ public function getReturnTypeDeclaration(): string
+ {
+ return '';
+ }
+
+ public function allowsNull(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/sebastian/type/src/ObjectType.php b/vendor/sebastian/type/src/ObjectType.php
new file mode 100644
index 000000000..c71273cb4
--- /dev/null
+++ b/vendor/sebastian/type/src/ObjectType.php
@@ -0,0 +1,66 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+use function is_subclass_of;
+use function strcasecmp;
+
+final class ObjectType extends Type
+{
+ /**
+ * @var TypeName
+ */
+ private $className;
+
+ /**
+ * @var bool
+ */
+ private $allowsNull;
+
+ public function __construct(TypeName $className, bool $allowsNull)
+ {
+ $this->className = $className;
+ $this->allowsNull = $allowsNull;
+ }
+
+ public function isAssignable(Type $other): bool
+ {
+ if ($this->allowsNull && $other instanceof NullType) {
+ return true;
+ }
+
+ if ($other instanceof self) {
+ if (0 === strcasecmp($this->className->qualifiedName(), $other->className->qualifiedName())) {
+ return true;
+ }
+
+ if (is_subclass_of($other->className->qualifiedName(), $this->className->qualifiedName(), true)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public function name(): string
+ {
+ return $this->className->qualifiedName();
+ }
+
+ public function allowsNull(): bool
+ {
+ return $this->allowsNull;
+ }
+
+ public function className(): TypeName
+ {
+ return $this->className;
+ }
+}
diff --git a/vendor/sebastian/type/src/ReflectionMapper.php b/vendor/sebastian/type/src/ReflectionMapper.php
new file mode 100644
index 000000000..db9baf425
--- /dev/null
+++ b/vendor/sebastian/type/src/ReflectionMapper.php
@@ -0,0 +1,123 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+use function assert;
+use function sprintf;
+use ReflectionMethod;
+use ReflectionNamedType;
+use ReflectionType;
+use ReflectionUnionType;
+
+final class ReflectionMapper
+{
+ public function fromMethodReturnType(ReflectionMethod $method): Type
+ {
+ if (!$this->reflectionMethodHasReturnType($method)) {
+ return new UnknownType;
+ }
+
+ $returnType = $this->reflectionMethodGetReturnType($method);
+
+ assert($returnType instanceof ReflectionNamedType || $returnType instanceof ReflectionUnionType);
+
+ if ($returnType instanceof ReflectionNamedType) {
+ if ($returnType->getName() === 'self') {
+ return ObjectType::fromName(
+ $method->getDeclaringClass()->getName(),
+ $returnType->allowsNull()
+ );
+ }
+
+ if ($returnType->getName() === 'static') {
+ return new StaticType(
+ TypeName::fromReflection($method->getDeclaringClass()),
+ $returnType->allowsNull()
+ );
+ }
+
+ if ($returnType->getName() === 'mixed') {
+ return new MixedType;
+ }
+
+ if ($returnType->getName() === 'parent') {
+ $parentClass = $method->getDeclaringClass()->getParentClass();
+
+ // @codeCoverageIgnoreStart
+ if ($parentClass === false) {
+ throw new RuntimeException(
+ sprintf(
+ '%s::%s() has a "parent" return type declaration but %s does not have a parent class',
+ $method->getDeclaringClass()->getName(),
+ $method->getName(),
+ $method->getDeclaringClass()->getName()
+ )
+ );
+ }
+ // @codeCoverageIgnoreEnd
+
+ return ObjectType::fromName(
+ $parentClass->getName(),
+ $returnType->allowsNull()
+ );
+ }
+
+ return Type::fromName(
+ $returnType->getName(),
+ $returnType->allowsNull()
+ );
+ }
+
+ assert($returnType instanceof ReflectionUnionType);
+
+ $types = [];
+
+ foreach ($returnType->getTypes() as $type) {
+ assert($type instanceof ReflectionNamedType);
+
+ if ($type->getName() === 'self') {
+ $types[] = ObjectType::fromName(
+ $method->getDeclaringClass()->getName(),
+ false
+ );
+ } else {
+ $types[] = Type::fromName($type->getName(), false);
+ }
+ }
+
+ return new UnionType(...$types);
+ }
+
+ private function reflectionMethodHasReturnType(ReflectionMethod $method): bool
+ {
+ if ($method->hasReturnType()) {
+ return true;
+ }
+
+ if (!method_exists($method, 'hasTentativeReturnType')) {
+ return false;
+ }
+
+ return $method->hasTentativeReturnType();
+ }
+
+ private function reflectionMethodGetReturnType(ReflectionMethod $method): ?ReflectionType
+ {
+ if ($method->hasReturnType()) {
+ return $method->getReturnType();
+ }
+
+ if (!method_exists($method, 'getTentativeReturnType')) {
+ return null;
+ }
+
+ return $method->getTentativeReturnType();
+ }
+}
diff --git a/vendor/sebastian/type/src/SimpleType.php b/vendor/sebastian/type/src/SimpleType.php
new file mode 100644
index 000000000..8bf0bf7df
--- /dev/null
+++ b/vendor/sebastian/type/src/SimpleType.php
@@ -0,0 +1,92 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+use function strtolower;
+
+final class SimpleType extends Type
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var bool
+ */
+ private $allowsNull;
+
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ public function __construct(string $name, bool $nullable, $value = null)
+ {
+ $this->name = $this->normalize($name);
+ $this->allowsNull = $nullable;
+ $this->value = $value;
+ }
+
+ public function isAssignable(Type $other): bool
+ {
+ if ($this->allowsNull && $other instanceof NullType) {
+ return true;
+ }
+
+ if ($this->name === 'bool' && $other->name() === 'false') {
+ return true;
+ }
+
+ if ($other instanceof self) {
+ return $this->name === $other->name;
+ }
+
+ return false;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function allowsNull(): bool
+ {
+ return $this->allowsNull;
+ }
+
+ public function value()
+ {
+ return $this->value;
+ }
+
+ private function normalize(string $name): string
+ {
+ $name = strtolower($name);
+
+ switch ($name) {
+ case 'boolean':
+ return 'bool';
+
+ case 'real':
+ case 'double':
+ return 'float';
+
+ case 'integer':
+ return 'int';
+
+ case '[]':
+ return 'array';
+
+ default:
+ return $name;
+ }
+ }
+}
diff --git a/vendor/sebastian/type/src/StaticType.php b/vendor/sebastian/type/src/StaticType.php
new file mode 100644
index 000000000..6833094d1
--- /dev/null
+++ b/vendor/sebastian/type/src/StaticType.php
@@ -0,0 +1,60 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+final class StaticType extends Type
+{
+ /**
+ * @var TypeName
+ */
+ private $className;
+
+ /**
+ * @var bool
+ */
+ private $allowsNull;
+
+ public function __construct(TypeName $className, bool $allowsNull)
+ {
+ $this->className = $className;
+ $this->allowsNull = $allowsNull;
+ }
+
+ public function isAssignable(Type $other): bool
+ {
+ if ($this->allowsNull && $other instanceof NullType) {
+ return true;
+ }
+
+ if (!$other instanceof ObjectType) {
+ return false;
+ }
+
+ if (0 === strcasecmp($this->className->qualifiedName(), $other->className()->qualifiedName())) {
+ return true;
+ }
+
+ if (is_subclass_of($other->className()->qualifiedName(), $this->className->qualifiedName(), true)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ public function name(): string
+ {
+ return 'static';
+ }
+
+ public function allowsNull(): bool
+ {
+ return $this->allowsNull;
+ }
+}
diff --git a/vendor/sebastian/type/src/Type.php b/vendor/sebastian/type/src/Type.php
new file mode 100644
index 000000000..679223d96
--- /dev/null
+++ b/vendor/sebastian/type/src/Type.php
@@ -0,0 +1,101 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+use function get_class;
+use function gettype;
+use function strtolower;
+
+abstract class Type
+{
+ public static function fromValue($value, bool $allowsNull): self
+ {
+ if ($value === false) {
+ return new FalseType;
+ }
+
+ $typeName = gettype($value);
+
+ if ($typeName === 'object') {
+ return new ObjectType(TypeName::fromQualifiedName(get_class($value)), $allowsNull);
+ }
+
+ $type = self::fromName($typeName, $allowsNull);
+
+ if ($type instanceof SimpleType) {
+ $type = new SimpleType($typeName, $allowsNull, $value);
+ }
+
+ return $type;
+ }
+
+ public static function fromName(string $typeName, bool $allowsNull): self
+ {
+ switch (strtolower($typeName)) {
+ case 'callable':
+ return new CallableType($allowsNull);
+
+ case 'false':
+ return new FalseType;
+
+ case 'iterable':
+ return new IterableType($allowsNull);
+
+ case 'null':
+ return new NullType;
+
+ case 'object':
+ return new GenericObjectType($allowsNull);
+
+ case 'unknown type':
+ return new UnknownType;
+
+ case 'void':
+ return new VoidType;
+
+ case 'array':
+ case 'bool':
+ case 'boolean':
+ case 'double':
+ case 'float':
+ case 'int':
+ case 'integer':
+ case 'real':
+ case 'resource':
+ case 'resource (closed)':
+ case 'string':
+ return new SimpleType($typeName, $allowsNull);
+
+ default:
+ return new ObjectType(TypeName::fromQualifiedName($typeName), $allowsNull);
+ }
+ }
+
+ public function asString(): string
+ {
+ return ($this->allowsNull() ? '?' : '') . $this->name();
+ }
+
+ /**
+ * @deprecated
+ *
+ * @codeCoverageIgnore
+ */
+ public function getReturnTypeDeclaration(): string
+ {
+ return ': ' . $this->asString();
+ }
+
+ abstract public function isAssignable(Type $other): bool;
+
+ abstract public function name(): string;
+
+ abstract public function allowsNull(): bool;
+}
diff --git a/vendor/sebastian/type/src/TypeName.php b/vendor/sebastian/type/src/TypeName.php
new file mode 100644
index 000000000..b076e89e0
--- /dev/null
+++ b/vendor/sebastian/type/src/TypeName.php
@@ -0,0 +1,113 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+use function array_pop;
+use function explode;
+use function implode;
+use function substr;
+use ReflectionClass;
+
+final class TypeName
+{
+ /**
+ * @var ?string
+ */
+ private $namespaceName;
+
+ /**
+ * @var string
+ */
+ private $simpleName;
+
+ public static function fromQualifiedName(string $fullClassName): self
+ {
+ if ($fullClassName[0] === '\\') {
+ $fullClassName = substr($fullClassName, 1);
+ }
+
+ $classNameParts = explode('\\', $fullClassName);
+
+ $simpleName = array_pop($classNameParts);
+ $namespaceName = implode('\\', $classNameParts);
+
+ return new self($namespaceName, $simpleName);
+ }
+
+ public static function fromReflection(ReflectionClass $type): self
+ {
+ return new self(
+ $type->getNamespaceName(),
+ $type->getShortName()
+ );
+ }
+
+ public function __construct(?string $namespaceName, string $simpleName)
+ {
+ if ($namespaceName === '') {
+ $namespaceName = null;
+ }
+
+ $this->namespaceName = $namespaceName;
+ $this->simpleName = $simpleName;
+ }
+
+ public function namespaceName(): ?string
+ {
+ return $this->namespaceName;
+ }
+
+ public function simpleName(): string
+ {
+ return $this->simpleName;
+ }
+
+ public function qualifiedName(): string
+ {
+ return $this->namespaceName === null
+ ? $this->simpleName
+ : $this->namespaceName . '\\' . $this->simpleName;
+ }
+
+ /**
+ * @deprecated Use namespaceName() instead
+ *
+ * @codeCoverageIgnore
+ */
+ public function getNamespaceName(): ?string
+ {
+ return $this->namespaceName();
+ }
+
+ /**
+ * @deprecated Use simpleName() instead
+ *
+ * @codeCoverageIgnore
+ */
+ public function getSimpleName(): string
+ {
+ return $this->simpleName();
+ }
+
+ /**
+ * @deprecated Use qualifiedName() instead
+ *
+ * @codeCoverageIgnore
+ */
+ public function getQualifiedName(): string
+ {
+ return $this->qualifiedName();
+ }
+
+ public function isNamespaced(): bool
+ {
+ return $this->namespaceName !== null;
+ }
+}
diff --git a/vendor/sebastian/type/src/UnionType.php b/vendor/sebastian/type/src/UnionType.php
new file mode 100644
index 000000000..10c4a49b5
--- /dev/null
+++ b/vendor/sebastian/type/src/UnionType.php
@@ -0,0 +1,115 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+use function count;
+use function implode;
+use function sort;
+
+final class UnionType extends Type
+{
+ /**
+ * @psalm-var list<Type>
+ */
+ private $types;
+
+ /**
+ * @throws RuntimeException
+ */
+ public function __construct(Type ...$types)
+ {
+ $this->ensureMinimumOfTwoTypes(...$types);
+ $this->ensureOnlyValidTypes(...$types);
+
+ $this->types = $types;
+ }
+
+ public function isAssignable(Type $other): bool
+ {
+ foreach ($this->types as $type) {
+ if ($type->isAssignable($other)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public function asString(): string
+ {
+ return $this->name();
+ }
+
+ /**
+ * @deprecated
+ *
+ * @codeCoverageIgnore
+ */
+ public function getReturnTypeDeclaration(): string
+ {
+ return ': ' . $this->name();
+ }
+
+ public function name(): string
+ {
+ $types = [];
+
+ foreach ($this->types as $type) {
+ $types[] = $type->name();
+ }
+
+ sort($types);
+
+ return implode('|', $types);
+ }
+
+ public function allowsNull(): bool
+ {
+ foreach ($this->types as $type) {
+ if ($type instanceof NullType) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ private function ensureMinimumOfTwoTypes(Type ...$types): void
+ {
+ if (count($types) < 2) {
+ throw new RuntimeException(
+ 'A union type must be composed of at least two types'
+ );
+ }
+ }
+
+ /**
+ * @throws RuntimeException
+ */
+ private function ensureOnlyValidTypes(Type ...$types): void
+ {
+ foreach ($types as $type) {
+ if ($type instanceof UnknownType) {
+ throw new RuntimeException(
+ 'A union type must not be composed of an unknown type'
+ );
+ }
+
+ if ($type instanceof VoidType) {
+ throw new RuntimeException(
+ 'A union type must not be composed of a void type'
+ );
+ }
+ }
+ }
+}
diff --git a/vendor/sebastian/type/src/UnknownType.php b/vendor/sebastian/type/src/UnknownType.php
new file mode 100644
index 000000000..dde4c6788
--- /dev/null
+++ b/vendor/sebastian/type/src/UnknownType.php
@@ -0,0 +1,43 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+final class UnknownType extends Type
+{
+ public function isAssignable(Type $other): bool
+ {
+ return true;
+ }
+
+ public function name(): string
+ {
+ return 'unknown type';
+ }
+
+ public function asString(): string
+ {
+ return '';
+ }
+
+ /**
+ * @deprecated
+ *
+ * @codeCoverageIgnore
+ */
+ public function getReturnTypeDeclaration(): string
+ {
+ return '';
+ }
+
+ public function allowsNull(): bool
+ {
+ return true;
+ }
+}
diff --git a/vendor/sebastian/type/src/VoidType.php b/vendor/sebastian/type/src/VoidType.php
new file mode 100644
index 000000000..18c017564
--- /dev/null
+++ b/vendor/sebastian/type/src/VoidType.php
@@ -0,0 +1,28 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+final class VoidType extends Type
+{
+ public function isAssignable(Type $other): bool
+ {
+ return $other instanceof self;
+ }
+
+ public function name(): string
+ {
+ return 'void';
+ }
+
+ public function allowsNull(): bool
+ {
+ return false;
+ }
+}
diff --git a/vendor/sebastian/type/src/exception/Exception.php b/vendor/sebastian/type/src/exception/Exception.php
new file mode 100644
index 000000000..e0e7ee579
--- /dev/null
+++ b/vendor/sebastian/type/src/exception/Exception.php
@@ -0,0 +1,16 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+use Throwable;
+
+interface Exception extends Throwable
+{
+}
diff --git a/vendor/sebastian/type/src/exception/LogicException.php b/vendor/sebastian/type/src/exception/LogicException.php
new file mode 100644
index 000000000..243582166
--- /dev/null
+++ b/vendor/sebastian/type/src/exception/LogicException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+final class LogicException extends \LogicException implements Exception
+{
+}
diff --git a/vendor/sebastian/type/src/exception/RuntimeException.php b/vendor/sebastian/type/src/exception/RuntimeException.php
new file mode 100644
index 000000000..4dfea6a6a
--- /dev/null
+++ b/vendor/sebastian/type/src/exception/RuntimeException.php
@@ -0,0 +1,14 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of sebastian/type.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace SebastianBergmann\Type;
+
+final class RuntimeException extends \RuntimeException implements Exception
+{
+}
diff --git a/vendor/sebastian/version/.gitattributes b/vendor/sebastian/version/.gitattributes
new file mode 100644
index 000000000..54b895305
--- /dev/null
+++ b/vendor/sebastian/version/.gitattributes
@@ -0,0 +1,4 @@
+/.github export-ignore
+/.php_cs.dist export-ignore
+
+*.php diff=php
diff --git a/vendor/sebastian/version/.gitignore b/vendor/sebastian/version/.gitignore
new file mode 100644
index 000000000..ff5ec9a0e
--- /dev/null
+++ b/vendor/sebastian/version/.gitignore
@@ -0,0 +1,2 @@
+/.php_cs.cache
+/.idea
diff --git a/vendor/sebastian/version/ChangeLog.md b/vendor/sebastian/version/ChangeLog.md
new file mode 100644
index 000000000..10fd9a1a5
--- /dev/null
+++ b/vendor/sebastian/version/ChangeLog.md
@@ -0,0 +1,25 @@
+# ChangeLog
+
+All notable changes are documented in this file using the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
+
+## [3.0.2] - 2020-09-28
+
+### Changed
+
+* Changed PHP version constraint in `composer.json` from `^7.3 || ^8.0` to `>=7.3`
+
+## [3.0.1] - 2020-06-26
+
+### Added
+
+* This component is now supported on PHP 8
+
+## [3.0.0] - 2020-01-21
+
+### Removed
+
+* This component is no longer supported on PHP 7.1 and PHP 7.2
+
+[3.0.2]: https://github.com/sebastianbergmann/version/compare/3.0.1...3.0.2
+[3.0.1]: https://github.com/sebastianbergmann/version/compare/3.0.0...3.0.1
+[3.0.0]: https://github.com/sebastianbergmann/version/compare/2.0.1...3.0.0
diff --git a/vendor/sebastian/version/LICENSE b/vendor/sebastian/version/LICENSE
new file mode 100644
index 000000000..aa6bca299
--- /dev/null
+++ b/vendor/sebastian/version/LICENSE
@@ -0,0 +1,33 @@
+Version
+
+Copyright (c) 2013-2020, Sebastian Bergmann <[email protected]>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ * Neither the name of Sebastian Bergmann nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/sebastian/version/README.md b/vendor/sebastian/version/README.md
new file mode 100644
index 000000000..2864c8126
--- /dev/null
+++ b/vendor/sebastian/version/README.md
@@ -0,0 +1,43 @@
+# Version
+
+**Version** is a library that helps with managing the version number of Git-hosted PHP projects.
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+ composer require sebastian/version
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+ composer require --dev sebastian/version
+
+## Usage
+
+The constructor of the `SebastianBergmann\Version` class expects two parameters:
+
+* `$release` is the version number of the latest release (`X.Y.Z`, for instance) or the name of the release series (`X.Y`) when no release has been made from that branch / for that release series yet.
+* `$path` is the path to the directory (or a subdirectory thereof) where the sourcecode of the project can be found. Simply passing `__DIR__` here usually suffices.
+
+Apart from the constructor, the `SebastianBergmann\Version` class has a single public method: `getVersion()`.
+
+Here is a contrived example that shows the basic usage:
+
+ <?php
+ $version = new SebastianBergmann\Version(
+ '3.7.10', '/usr/local/src/phpunit'
+ );
+
+ var_dump($version->getVersion());
+ ?>
+
+ string(18) "3.7.10-17-g00f3408"
+
+When a new release is prepared, the string that is passed to the constructor as the first argument needs to be updated.
+
+### How SebastianBergmann\Version::getVersion() works
+
+* If `$path` is not (part of) a Git repository and `$release` is in `X.Y.Z` format then `$release` is returned as-is.
+* If `$path` is not (part of) a Git repository and `$release` is in `X.Y` format then `$release` is returned suffixed with `-dev`.
+* If `$path` is (part of) a Git repository and `$release` is in `X.Y.Z` format then the output of `git describe --tags` is returned as-is.
+* If `$path` is (part of) a Git repository and `$release` is in `X.Y` format then a string is returned that begins with `X.Y` and ends with information from `git describe --tags`.
diff --git a/vendor/sebastian/version/composer.json b/vendor/sebastian/version/composer.json
new file mode 100644
index 000000000..e76dbf412
--- /dev/null
+++ b/vendor/sebastian/version/composer.json
@@ -0,0 +1,37 @@
+{
+ "name": "sebastian/version",
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "[email protected]",
+ "role": "lead"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3.0"
+ },
+ "optimize-autoloader": true,
+ "sort-packages": true
+ },
+ "prefer-stable": true,
+ "require": {
+ "php": ">=7.3"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ }
+}
diff --git a/vendor/sebastian/version/src/Version.php b/vendor/sebastian/version/src/Version.php
new file mode 100644
index 000000000..53ae7894e
--- /dev/null
+++ b/vendor/sebastian/version/src/Version.php
@@ -0,0 +1,97 @@
+<?php
+/*
+ * This file is part of sebastian/version.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann;
+
+final class Version
+{
+ /**
+ * @var string
+ */
+ private $path;
+
+ /**
+ * @var string
+ */
+ private $release;
+
+ /**
+ * @var string
+ */
+ private $version;
+
+ public function __construct(string $release, string $path)
+ {
+ $this->release = $release;
+ $this->path = $path;
+ }
+
+ public function getVersion(): string
+ {
+ if ($this->version === null) {
+ if (\substr_count($this->release, '.') + 1 === 3) {
+ $this->version = $this->release;
+ } else {
+ $this->version = $this->release . '-dev';
+ }
+
+ $git = $this->getGitInformation($this->path);
+
+ if ($git) {
+ if (\substr_count($this->release, '.') + 1 === 3) {
+ $this->version = $git;
+ } else {
+ $git = \explode('-', $git);
+
+ $this->version = $this->release . '-' . \end($git);
+ }
+ }
+ }
+
+ return $this->version;
+ }
+
+ /**
+ * @return bool|string
+ */
+ private function getGitInformation(string $path)
+ {
+ if (!\is_dir($path . DIRECTORY_SEPARATOR . '.git')) {
+ return false;
+ }
+
+ $process = \proc_open(
+ 'git describe --tags',
+ [
+ 1 => ['pipe', 'w'],
+ 2 => ['pipe', 'w'],
+ ],
+ $pipes,
+ $path
+ );
+
+ if (!\is_resource($process)) {
+ return false;
+ }
+
+ $result = \trim(\stream_get_contents($pipes[1]));
+
+ \fclose($pipes[1]);
+ \fclose($pipes[2]);
+
+ $returnCode = \proc_close($process);
+
+ if ($returnCode !== 0) {
+ return false;
+ }
+
+ return $result;
+ }
+}
diff --git a/vendor/symfony/polyfill-ctype/Ctype.php b/vendor/symfony/polyfill-ctype/Ctype.php
new file mode 100644
index 000000000..ba75a2c95
--- /dev/null
+++ b/vendor/symfony/polyfill-ctype/Ctype.php
@@ -0,0 +1,232 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Ctype;
+
+/**
+ * Ctype implementation through regex.
+ *
+ * @internal
+ *
+ * @author Gert de Pagter <[email protected]>
+ */
+final class Ctype
+{
+ /**
+ * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise.
+ *
+ * @see https://php.net/ctype-alnum
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_alnum($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text);
+ }
+
+ /**
+ * Returns TRUE if every character in text is a letter, FALSE otherwise.
+ *
+ * @see https://php.net/ctype-alpha
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_alpha($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text);
+ }
+
+ /**
+ * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise.
+ *
+ * @see https://php.net/ctype-cntrl
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_cntrl($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text);
+ }
+
+ /**
+ * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise.
+ *
+ * @see https://php.net/ctype-digit
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_digit($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text);
+ }
+
+ /**
+ * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise.
+ *
+ * @see https://php.net/ctype-graph
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_graph($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text);
+ }
+
+ /**
+ * Returns TRUE if every character in text is a lowercase letter.
+ *
+ * @see https://php.net/ctype-lower
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_lower($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text);
+ }
+
+ /**
+ * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all.
+ *
+ * @see https://php.net/ctype-print
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_print($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text);
+ }
+
+ /**
+ * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise.
+ *
+ * @see https://php.net/ctype-punct
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_punct($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text);
+ }
+
+ /**
+ * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters.
+ *
+ * @see https://php.net/ctype-space
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_space($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text);
+ }
+
+ /**
+ * Returns TRUE if every character in text is an uppercase letter.
+ *
+ * @see https://php.net/ctype-upper
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_upper($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text);
+ }
+
+ /**
+ * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise.
+ *
+ * @see https://php.net/ctype-xdigit
+ *
+ * @param mixed $text
+ *
+ * @return bool
+ */
+ public static function ctype_xdigit($text)
+ {
+ $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__);
+
+ return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text);
+ }
+
+ /**
+ * Converts integers to their char versions according to normal ctype behaviour, if needed.
+ *
+ * If an integer between -128 and 255 inclusive is provided,
+ * it is interpreted as the ASCII value of a single character
+ * (negative values have 256 added in order to allow characters in the Extended ASCII range).
+ * Any other integer is interpreted as a string containing the decimal digits of the integer.
+ *
+ * @param mixed $int
+ * @param string $function
+ *
+ * @return mixed
+ */
+ private static function convert_int_to_char_for_ctype($int, $function)
+ {
+ if (!\is_int($int)) {
+ return $int;
+ }
+
+ if ($int < -128 || $int > 255) {
+ return (string) $int;
+ }
+
+ if (\PHP_VERSION_ID >= 80100) {
+ @trigger_error($function.'(): Argument of type int will be interpreted as string in the future', \E_USER_DEPRECATED);
+ }
+
+ if ($int < 0) {
+ $int += 256;
+ }
+
+ return \chr($int);
+ }
+}
diff --git a/vendor/symfony/polyfill-ctype/LICENSE b/vendor/symfony/polyfill-ctype/LICENSE
new file mode 100644
index 000000000..3f853aaf3
--- /dev/null
+++ b/vendor/symfony/polyfill-ctype/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2018-2019 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/vendor/symfony/polyfill-ctype/README.md b/vendor/symfony/polyfill-ctype/README.md
new file mode 100644
index 000000000..8add1ab00
--- /dev/null
+++ b/vendor/symfony/polyfill-ctype/README.md
@@ -0,0 +1,12 @@
+Symfony Polyfill / Ctype
+========================
+
+This component provides `ctype_*` functions to users who run php versions without the ctype extension.
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/vendor/symfony/polyfill-ctype/bootstrap.php b/vendor/symfony/polyfill-ctype/bootstrap.php
new file mode 100644
index 000000000..d54524b31
--- /dev/null
+++ b/vendor/symfony/polyfill-ctype/bootstrap.php
@@ -0,0 +1,50 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Ctype as p;
+
+if (\PHP_VERSION_ID >= 80000) {
+ return require __DIR__.'/bootstrap80.php';
+}
+
+if (!function_exists('ctype_alnum')) {
+ function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); }
+}
+if (!function_exists('ctype_alpha')) {
+ function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); }
+}
+if (!function_exists('ctype_cntrl')) {
+ function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); }
+}
+if (!function_exists('ctype_digit')) {
+ function ctype_digit($text) { return p\Ctype::ctype_digit($text); }
+}
+if (!function_exists('ctype_graph')) {
+ function ctype_graph($text) { return p\Ctype::ctype_graph($text); }
+}
+if (!function_exists('ctype_lower')) {
+ function ctype_lower($text) { return p\Ctype::ctype_lower($text); }
+}
+if (!function_exists('ctype_print')) {
+ function ctype_print($text) { return p\Ctype::ctype_print($text); }
+}
+if (!function_exists('ctype_punct')) {
+ function ctype_punct($text) { return p\Ctype::ctype_punct($text); }
+}
+if (!function_exists('ctype_space')) {
+ function ctype_space($text) { return p\Ctype::ctype_space($text); }
+}
+if (!function_exists('ctype_upper')) {
+ function ctype_upper($text) { return p\Ctype::ctype_upper($text); }
+}
+if (!function_exists('ctype_xdigit')) {
+ function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); }
+}
diff --git a/vendor/symfony/polyfill-ctype/bootstrap80.php b/vendor/symfony/polyfill-ctype/bootstrap80.php
new file mode 100644
index 000000000..ab2f8611d
--- /dev/null
+++ b/vendor/symfony/polyfill-ctype/bootstrap80.php
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Ctype as p;
+
+if (!function_exists('ctype_alnum')) {
+ function ctype_alnum(mixed $text): bool { return p\Ctype::ctype_alnum($text); }
+}
+if (!function_exists('ctype_alpha')) {
+ function ctype_alpha(mixed $text): bool { return p\Ctype::ctype_alpha($text); }
+}
+if (!function_exists('ctype_cntrl')) {
+ function ctype_cntrl(mixed $text): bool { return p\Ctype::ctype_cntrl($text); }
+}
+if (!function_exists('ctype_digit')) {
+ function ctype_digit(mixed $text): bool { return p\Ctype::ctype_digit($text); }
+}
+if (!function_exists('ctype_graph')) {
+ function ctype_graph(mixed $text): bool { return p\Ctype::ctype_graph($text); }
+}
+if (!function_exists('ctype_lower')) {
+ function ctype_lower(mixed $text): bool { return p\Ctype::ctype_lower($text); }
+}
+if (!function_exists('ctype_print')) {
+ function ctype_print(mixed $text): bool { return p\Ctype::ctype_print($text); }
+}
+if (!function_exists('ctype_punct')) {
+ function ctype_punct(mixed $text): bool { return p\Ctype::ctype_punct($text); }
+}
+if (!function_exists('ctype_space')) {
+ function ctype_space(mixed $text): bool { return p\Ctype::ctype_space($text); }
+}
+if (!function_exists('ctype_upper')) {
+ function ctype_upper(mixed $text): bool { return p\Ctype::ctype_upper($text); }
+}
+if (!function_exists('ctype_xdigit')) {
+ function ctype_xdigit(mixed $text): bool { return p\Ctype::ctype_xdigit($text); }
+}
diff --git a/vendor/symfony/polyfill-ctype/composer.json b/vendor/symfony/polyfill-ctype/composer.json
new file mode 100644
index 000000000..ccb8e5703
--- /dev/null
+++ b/vendor/symfony/polyfill-ctype/composer.json
@@ -0,0 +1,41 @@
+{
+ "name": "symfony/polyfill-ctype",
+ "type": "library",
+ "description": "Symfony polyfill for ctype functions",
+ "keywords": ["polyfill", "compatibility", "portable", "ctype"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" },
+ "files": [ "bootstrap.php" ]
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ }
+}
diff --git a/vendor/theseer/tokenizer/.php_cs.dist b/vendor/theseer/tokenizer/.php_cs.dist
new file mode 100644
index 000000000..8ac26d096
--- /dev/null
+++ b/vendor/theseer/tokenizer/.php_cs.dist
@@ -0,0 +1,213 @@
+<?php
+
+require __DIR__ . '/tools/php-cs-fixer.d/PhpdocSingleLineVarFixer.php';
+
+return PhpCsFixer\Config::create()
+ ->registerCustomFixers([
+ new \PharIo\CSFixer\PhpdocSingleLineVarFixer()
+ ])
+ ->setRiskyAllowed(true)
+ ->setRules(
+ [
+ 'PharIo/phpdoc_single_line_var_fixer' => true,
+
+ 'align_multiline_comment' => true,
+ 'array_indentation' => true,
+ 'array_syntax' => ['syntax' => 'short'],
+ 'binary_operator_spaces' => [
+ 'operators' => [
+ '=' => 'align_single_space_minimal',
+ '=>' => 'align',
+ ],
+ ],
+ 'blank_line_after_namespace' => true,
+ 'blank_line_after_opening_tag' => false,
+ 'blank_line_before_statement' => [
+ 'statements' => [
+ 'break',
+ 'continue',
+ 'declare',
+ 'do',
+ 'for',
+ 'foreach',
+ 'if',
+ 'include',
+ 'include_once',
+ 'require',
+ 'require_once',
+ 'return',
+ 'switch',
+ 'throw',
+ 'try',
+ 'while',
+ 'yield',
+ ],
+ ],
+ 'braces' => [
+ 'allow_single_line_closure' => false,
+ 'position_after_anonymous_constructs' => 'same',
+ 'position_after_control_structures' => 'same',
+ 'position_after_functions_and_oop_constructs' => 'same'
+ ],
+ 'cast_spaces' => ['space' => 'none'],
+
+ // This fixer removes the blank line at class start, no way to disable that, so we disable the fixer :(
+ //'class_attributes_separation' => ['elements' => ['const', 'method', 'property']],
+
+ 'combine_consecutive_issets' => true,
+ 'combine_consecutive_unsets' => true,
+ 'compact_nullable_typehint' => true,
+ 'concat_space' => ['spacing' => 'one'],
+ 'date_time_immutable' => true,
+ 'declare_equal_normalize' => ['space' => 'single'],
+ 'declare_strict_types' => true,
+ 'dir_constant' => true,
+ 'elseif' => true,
+ 'encoding' => true,
+ 'full_opening_tag' => true,
+ 'fully_qualified_strict_types' => true,
+ 'function_declaration' => [
+ 'closure_function_spacing' => 'one'
+ ],
+ 'header_comment' => false,
+ 'indentation_type' => true,
+ 'is_null' => true,
+ 'line_ending' => true,
+ 'list_syntax' => ['syntax' => 'short'],
+ 'logical_operators' => true,
+ 'lowercase_cast' => true,
+ 'lowercase_constants' => true,
+ 'lowercase_keywords' => true,
+ 'lowercase_static_reference' => true,
+ 'magic_constant_casing' => true,
+ 'method_argument_space' => ['ensure_fully_multiline' => true],
+ 'modernize_types_casting' => true,
+ 'multiline_comment_opening_closing' => true,
+ 'multiline_whitespace_before_semicolons' => true,
+ 'native_constant_invocation' => true,
+ 'native_function_casing' => true,
+ 'native_function_invocation' => true,
+ 'new_with_braces' => false,
+ 'no_alias_functions' => true,
+ 'no_alternative_syntax' => true,
+ 'no_blank_lines_after_class_opening' => false,
+ 'no_blank_lines_after_phpdoc' => true,
+ 'no_blank_lines_before_namespace' => true,
+ 'no_closing_tag' => true,
+ 'no_empty_comment' => true,
+ 'no_empty_phpdoc' => true,
+ 'no_empty_statement' => true,
+ 'no_extra_blank_lines' => true,
+ 'no_homoglyph_names' => true,
+ 'no_leading_import_slash' => true,
+ 'no_leading_namespace_whitespace' => true,
+ 'no_mixed_echo_print' => ['use' => 'print'],
+ 'no_multiline_whitespace_around_double_arrow' => true,
+ 'no_null_property_initialization' => true,
+ 'no_php4_constructor' => true,
+ 'no_short_bool_cast' => true,
+ 'no_short_echo_tag' => true,
+ 'no_singleline_whitespace_before_semicolons' => true,
+ 'no_spaces_after_function_name' => true,
+ 'no_spaces_inside_parenthesis' => true,
+ 'no_superfluous_elseif' => true,
+ 'no_superfluous_phpdoc_tags' => true,
+ 'no_trailing_comma_in_list_call' => true,
+ 'no_trailing_comma_in_singleline_array' => true,
+ 'no_trailing_whitespace' => true,
+ 'no_trailing_whitespace_in_comment' => true,
+ 'no_unneeded_control_parentheses' => false,
+ 'no_unneeded_curly_braces' => false,
+ 'no_unneeded_final_method' => true,
+ 'no_unreachable_default_argument_value' => true,
+ 'no_unset_on_property' => true,
+ 'no_unused_imports' => true,
+ 'no_useless_else' => true,
+ 'no_useless_return' => true,
+ 'no_whitespace_before_comma_in_array' => true,
+ 'no_whitespace_in_blank_line' => true,
+ 'non_printable_character' => true,
+ 'normalize_index_brace' => true,
+ 'object_operator_without_whitespace' => true,
+ 'ordered_class_elements' => [
+ 'order' => [
+ 'use_trait',
+ 'constant_public',
+ 'constant_protected',
+ 'constant_private',
+ 'property_public_static',
+ 'property_protected_static',
+ 'property_private_static',
+ 'property_public',
+ 'property_protected',
+ 'property_private',
+ 'method_public_static',
+ 'construct',
+ 'destruct',
+ 'magic',
+ 'phpunit',
+ 'method_public',
+ 'method_protected',
+ 'method_private',
+ 'method_protected_static',
+ 'method_private_static',
+ ],
+ ],
+ 'ordered_imports' => true,
+ 'phpdoc_add_missing_param_annotation' => true,
+ 'phpdoc_align' => true,
+ 'phpdoc_annotation_without_dot' => true,
+ 'phpdoc_indent' => true,
+ 'phpdoc_no_access' => true,
+ 'phpdoc_no_empty_return' => true,
+ 'phpdoc_no_package' => true,
+ 'phpdoc_order' => true,
+ 'phpdoc_return_self_reference' => true,
+ 'phpdoc_scalar' => true,
+ 'phpdoc_separation' => true,
+ 'phpdoc_single_line_var_spacing' => true,
+ 'phpdoc_to_comment' => false,
+ 'phpdoc_trim' => true,
+ 'phpdoc_trim_consecutive_blank_line_separation' => true,
+ 'phpdoc_types' => ['groups' => ['simple', 'meta']],
+ 'phpdoc_types_order' => true,
+ 'phpdoc_to_return_type' => true,
+ 'phpdoc_var_without_name' => true,
+ 'pow_to_exponentiation' => true,
+ 'protected_to_private' => true,
+ 'return_assignment' => true,
+ 'return_type_declaration' => ['space_before' => 'none'],
+ 'self_accessor' => false,
+ 'semicolon_after_instruction' => true,
+ 'set_type_to_cast' => true,
+ 'short_scalar_cast' => true,
+ 'simplified_null_return' => true,
+ 'single_blank_line_at_eof' => true,
+ 'single_import_per_statement' => true,
+ 'single_line_after_imports' => true,
+ 'single_quote' => true,
+ 'standardize_not_equals' => true,
+ 'ternary_to_null_coalescing' => true,
+ 'trailing_comma_in_multiline_array' => false,
+ 'trim_array_spaces' => true,
+ 'unary_operator_spaces' => true,
+ 'visibility_required' => [
+ 'elements' => [
+ 'const',
+ 'method',
+ 'property',
+ ],
+ ],
+ 'void_return' => true,
+ 'whitespace_after_comma_in_array' => true,
+ 'yoda_style' => false
+ ]
+ )
+ ->setFinder(
+ PhpCsFixer\Finder::create()
+ ->files()
+ ->in(__DIR__ . '/src')
+ ->in(__DIR__ . '/tests')
+ ->notName('*.phpt')
+ ->notName('autoload.php')
+ );
diff --git a/vendor/theseer/tokenizer/CHANGELOG.md b/vendor/theseer/tokenizer/CHANGELOG.md
new file mode 100644
index 000000000..1eff3830d
--- /dev/null
+++ b/vendor/theseer/tokenizer/CHANGELOG.md
@@ -0,0 +1,71 @@
+# Changelog
+
+All notable changes to Tokenizer are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.
+
+
+## [1.2.1] - 2021-07-28
+
+### Fixed
+
+* [#13](https://github.com/theseer/tokenizer/issues/13): Fatal error when tokenizing files that contain only a single empty line
+
+
+## [1.2.0] - 2020-07-13
+
+This release is now PHP 8.0 compliant.
+
+### Fixed
+
+* Whitespace handling in general (only noticable in the intermediate `TokenCollection`) is now consitent
+
+### Changed
+
+* Updated `Tokenizer` to deal with changed whitespace handling in PHP 8.0
+ The XMLSerializer was unaffected.
+
+
+## [1.1.3] - 2019-06-14
+
+### Changed
+
+* Ensure XMLSerializer can deal with empty token collections
+
+### Fixed
+
+* [#2](https://github.com/theseer/tokenizer/issues/2): Fatal error in infection / phpunit
+
+
+## [1.1.2] - 2019-04-04
+
+### Changed
+
+* Reverted PHPUnit 8 test update to stay PHP 7.0 compliant
+
+
+## [1.1.1] - 2019-04-03
+
+### Fixed
+
+* [#1](https://github.com/theseer/tokenizer/issues/1): Empty file causes invalid array read
+
+### Changed
+
+* Tests should now be PHPUnit 8 compliant
+
+
+## [1.1.0] - 2017-04-07
+
+### Added
+
+* Allow use of custom namespace for XML serialization
+
+
+## [1.0.0] - 2017-04-05
+
+Initial Release
+
+[1.1.3]: https://github.com/theseer/tokenizer/compare/1.1.2...1.1.3
+[1.1.2]: https://github.com/theseer/tokenizer/compare/1.1.1...1.1.2
+[1.1.1]: https://github.com/theseer/tokenizer/compare/1.1.0...1.1.1
+[1.1.0]: https://github.com/theseer/tokenizer/compare/1.0.0...1.1.0
+[1.0.0]: https://github.com/theseer/tokenizer/compare/b2493e57de80c1b7414219b28503fa5c6b4d0a98...1.0.0
diff --git a/vendor/theseer/tokenizer/LICENSE b/vendor/theseer/tokenizer/LICENSE
new file mode 100644
index 000000000..e9694ad61
--- /dev/null
+++ b/vendor/theseer/tokenizer/LICENSE
@@ -0,0 +1,30 @@
+Tokenizer
+
+Copyright (c) 2017 Arne Blankerts <[email protected]> and contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the name of Arne Blankerts nor the names of contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/theseer/tokenizer/README.md b/vendor/theseer/tokenizer/README.md
new file mode 100644
index 000000000..e91ed8917
--- /dev/null
+++ b/vendor/theseer/tokenizer/README.md
@@ -0,0 +1,50 @@
+# Tokenizer
+
+A small library for converting tokenized PHP source code into XML.
+
+[![Test](https://github.com/theseer/tokenizer/actions/workflows/ci.yml/badge.svg)](https://github.com/theseer/tokenizer/actions/workflows/ci.yml)
+[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/theseer/tokenizer/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/theseer/tokenizer/?branch=master)
+[![Code Coverage](https://scrutinizer-ci.com/g/theseer/tokenizer/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/theseer/tokenizer/?branch=master)
+[![Build Status](https://scrutinizer-ci.com/g/theseer/tokenizer/badges/build.png?b=master)](https://scrutinizer-ci.com/g/theseer/tokenizer/build-status/master)
+
+## Installation
+
+You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
+
+ composer require theseer/tokenizer
+
+If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
+
+ composer require --dev theseer/tokenizer
+
+## Usage examples
+
+```php
+$tokenizer = new TheSeer\Tokenizer\Tokenizer();
+$tokens = $tokenizer->parse(file_get_contents(__DIR__ . '/src/XMLSerializer.php'));
+
+$serializer = new TheSeer\Tokenizer\XMLSerializer();
+$xml = $serializer->toXML($tokens);
+
+echo $xml;
+```
+
+The generated XML structure looks something like this:
+
+```xml
+<?xml version="1.0"?>
+<source xmlns="https://github.com/theseer/tokenizer">
+ <line no="1">
+ <token name="T_OPEN_TAG">&lt;?php </token>
+ <token name="T_DECLARE">declare</token>
+ <token name="T_OPEN_BRACKET">(</token>
+ <token name="T_STRING">strict_types</token>
+ <token name="T_WHITESPACE"> </token>
+ <token name="T_EQUAL">=</token>
+ <token name="T_WHITESPACE"> </token>
+ <token name="T_LNUMBER">1</token>
+ <token name="T_CLOSE_BRACKET">)</token>
+ <token name="T_SEMICOLON">;</token>
+ </line>
+</source>
+```
diff --git a/vendor/theseer/tokenizer/composer.json b/vendor/theseer/tokenizer/composer.json
new file mode 100644
index 000000000..3f452a9fc
--- /dev/null
+++ b/vendor/theseer/tokenizer/composer.json
@@ -0,0 +1,27 @@
+{
+ "name": "theseer/tokenizer",
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "[email protected]",
+ "role": "Developer"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues"
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "ext-xmlwriter": "*",
+ "ext-dom": "*",
+ "ext-tokenizer": "*"
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ }
+}
+
diff --git a/vendor/theseer/tokenizer/composer.lock b/vendor/theseer/tokenizer/composer.lock
new file mode 100644
index 000000000..07fba9b50
--- /dev/null
+++ b/vendor/theseer/tokenizer/composer.lock
@@ -0,0 +1,22 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "b010f1b3d9d47d431ee1cb54ac1de755",
+ "packages": [],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7.2 || ^8.0",
+ "ext-xmlwriter": "*",
+ "ext-dom": "*",
+ "ext-tokenizer": "*"
+ },
+ "platform-dev": []
+}
diff --git a/vendor/theseer/tokenizer/src/Exception.php b/vendor/theseer/tokenizer/src/Exception.php
new file mode 100644
index 000000000..71fc117a5
--- /dev/null
+++ b/vendor/theseer/tokenizer/src/Exception.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace TheSeer\Tokenizer;
+
+class Exception extends \Exception {
+}
diff --git a/vendor/theseer/tokenizer/src/NamespaceUri.php b/vendor/theseer/tokenizer/src/NamespaceUri.php
new file mode 100644
index 000000000..14e9f0c8c
--- /dev/null
+++ b/vendor/theseer/tokenizer/src/NamespaceUri.php
@@ -0,0 +1,25 @@
+<?php declare(strict_types = 1);
+namespace TheSeer\Tokenizer;
+
+class NamespaceUri {
+
+ /** @var string */
+ private $value;
+
+ public function __construct(string $value) {
+ $this->ensureValidUri($value);
+ $this->value = $value;
+ }
+
+ public function asString(): string {
+ return $this->value;
+ }
+
+ private function ensureValidUri($value): void {
+ if (\strpos($value, ':') === false) {
+ throw new NamespaceUriException(
+ \sprintf("Namespace URI '%s' must contain at least one colon", $value)
+ );
+ }
+ }
+}
diff --git a/vendor/theseer/tokenizer/src/NamespaceUriException.php b/vendor/theseer/tokenizer/src/NamespaceUriException.php
new file mode 100644
index 000000000..ab1c48d29
--- /dev/null
+++ b/vendor/theseer/tokenizer/src/NamespaceUriException.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace TheSeer\Tokenizer;
+
+class NamespaceUriException extends Exception {
+}
diff --git a/vendor/theseer/tokenizer/src/Token.php b/vendor/theseer/tokenizer/src/Token.php
new file mode 100644
index 000000000..ffcbe4009
--- /dev/null
+++ b/vendor/theseer/tokenizer/src/Token.php
@@ -0,0 +1,35 @@
+<?php declare(strict_types = 1);
+namespace TheSeer\Tokenizer;
+
+class Token {
+
+ /** @var int */
+ private $line;
+
+ /** @var string */
+ private $name;
+
+ /** @var string */
+ private $value;
+
+ /**
+ * Token constructor.
+ */
+ public function __construct(int $line, string $name, string $value) {
+ $this->line = $line;
+ $this->name = $name;
+ $this->value = $value;
+ }
+
+ public function getLine(): int {
+ return $this->line;
+ }
+
+ public function getName(): string {
+ return $this->name;
+ }
+
+ public function getValue(): string {
+ return $this->value;
+ }
+}
diff --git a/vendor/theseer/tokenizer/src/TokenCollection.php b/vendor/theseer/tokenizer/src/TokenCollection.php
new file mode 100644
index 000000000..e5e6e401c
--- /dev/null
+++ b/vendor/theseer/tokenizer/src/TokenCollection.php
@@ -0,0 +1,93 @@
+<?php declare(strict_types = 1);
+namespace TheSeer\Tokenizer;
+
+class TokenCollection implements \ArrayAccess, \Iterator, \Countable {
+
+ /** @var Token[] */
+ private $tokens = [];
+
+ /** @var int */
+ private $pos;
+
+ public function addToken(Token $token): void {
+ $this->tokens[] = $token;
+ }
+
+ public function current(): Token {
+ return \current($this->tokens);
+ }
+
+ public function key(): int {
+ return \key($this->tokens);
+ }
+
+ public function next(): void {
+ \next($this->tokens);
+ $this->pos++;
+ }
+
+ public function valid(): bool {
+ return $this->count() > $this->pos;
+ }
+
+ public function rewind(): void {
+ \reset($this->tokens);
+ $this->pos = 0;
+ }
+
+ public function count(): int {
+ return \count($this->tokens);
+ }
+
+ public function offsetExists($offset): bool {
+ return isset($this->tokens[$offset]);
+ }
+
+ /**
+ * @throws TokenCollectionException
+ */
+ public function offsetGet($offset): Token {
+ if (!$this->offsetExists($offset)) {
+ throw new TokenCollectionException(
+ \sprintf('No Token at offest %s', $offset)
+ );
+ }
+
+ return $this->tokens[$offset];
+ }
+
+ /**
+ * @param Token $value
+ *
+ * @throws TokenCollectionException
+ */
+ public function offsetSet($offset, $value): void {
+ if (!\is_int($offset)) {
+ $type = \gettype($offset);
+
+ throw new TokenCollectionException(
+ \sprintf(
+ 'Offset must be of type integer, %s given',
+ $type === 'object' ? \get_class($value) : $type
+ )
+ );
+ }
+
+ if (!$value instanceof Token) {
+ $type = \gettype($value);
+
+ throw new TokenCollectionException(
+ \sprintf(
+ 'Value must be of type %s, %s given',
+ Token::class,
+ $type === 'object' ? \get_class($value) : $type
+ )
+ );
+ }
+ $this->tokens[$offset] = $value;
+ }
+
+ public function offsetUnset($offset): void {
+ unset($this->tokens[$offset]);
+ }
+}
diff --git a/vendor/theseer/tokenizer/src/TokenCollectionException.php b/vendor/theseer/tokenizer/src/TokenCollectionException.php
new file mode 100644
index 000000000..4291ce0c4
--- /dev/null
+++ b/vendor/theseer/tokenizer/src/TokenCollectionException.php
@@ -0,0 +1,5 @@
+<?php declare(strict_types = 1);
+namespace TheSeer\Tokenizer;
+
+class TokenCollectionException extends Exception {
+}
diff --git a/vendor/theseer/tokenizer/src/Tokenizer.php b/vendor/theseer/tokenizer/src/Tokenizer.php
new file mode 100644
index 000000000..f582d9587
--- /dev/null
+++ b/vendor/theseer/tokenizer/src/Tokenizer.php
@@ -0,0 +1,142 @@
+<?php declare(strict_types = 1);
+namespace TheSeer\Tokenizer;
+
+class Tokenizer {
+
+ /**
+ * Token Map for "non-tokens"
+ *
+ * @var array
+ */
+ private $map = [
+ '(' => 'T_OPEN_BRACKET',
+ ')' => 'T_CLOSE_BRACKET',
+ '[' => 'T_OPEN_SQUARE',
+ ']' => 'T_CLOSE_SQUARE',
+ '{' => 'T_OPEN_CURLY',
+ '}' => 'T_CLOSE_CURLY',
+ ';' => 'T_SEMICOLON',
+ '.' => 'T_DOT',
+ ',' => 'T_COMMA',
+ '=' => 'T_EQUAL',
+ '<' => 'T_LT',
+ '>' => 'T_GT',
+ '+' => 'T_PLUS',
+ '-' => 'T_MINUS',
+ '*' => 'T_MULT',
+ '/' => 'T_DIV',
+ '?' => 'T_QUESTION_MARK',
+ '!' => 'T_EXCLAMATION_MARK',
+ ':' => 'T_COLON',
+ '"' => 'T_DOUBLE_QUOTES',
+ '@' => 'T_AT',
+ '&' => 'T_AMPERSAND',
+ '%' => 'T_PERCENT',
+ '|' => 'T_PIPE',
+ '$' => 'T_DOLLAR',
+ '^' => 'T_CARET',
+ '~' => 'T_TILDE',
+ '`' => 'T_BACKTICK'
+ ];
+
+ public function parse(string $source): TokenCollection {
+ $result = new TokenCollection();
+
+ if ($source === '') {
+ return $result;
+ }
+
+ $tokens = \token_get_all($source);
+
+ $lastToken = new Token(
+ $tokens[0][2],
+ 'Placeholder',
+ ''
+ );
+
+ foreach ($tokens as $pos => $tok) {
+ if (\is_string($tok)) {
+ $token = new Token(
+ $lastToken->getLine(),
+ $this->map[$tok],
+ $tok
+ );
+ $result->addToken($token);
+ $lastToken = $token;
+
+ continue;
+ }
+
+ $line = $tok[2];
+ $values = \preg_split('/\R+/Uu', $tok[1]);
+
+ foreach ($values as $v) {
+ $token = new Token(
+ $line,
+ \token_name($tok[0]),
+ $v
+ );
+ $lastToken = $token;
+ $line++;
+
+ if ($v === '') {
+ continue;
+ }
+
+ $result->addToken($token);
+ }
+ }
+
+ return $this->fillBlanks($result, $lastToken->getLine());
+ }
+
+ private function fillBlanks(TokenCollection $tokens, int $maxLine): TokenCollection {
+ $prev = new Token(
+ 0,
+ 'Placeholder',
+ ''
+ );
+
+ $final = new TokenCollection();
+
+ foreach ($tokens as $token) {
+ if ($prev === null) {
+ $final->addToken($token);
+ $prev = $token;
+
+ continue;
+ }
+
+ $gap = $token->getLine() - $prev->getLine();
+
+ while ($gap > 1) {
+ $linebreak = new Token(
+ $prev->getLine() + 1,
+ 'T_WHITESPACE',
+ ''
+ );
+ $final->addToken($linebreak);
+ $prev = $linebreak;
+ $gap--;
+ }
+
+ $final->addToken($token);
+ $prev = $token;
+ }
+
+ $gap = $maxLine - $prev->getLine();
+
+ while ($gap > 0) {
+ $linebreak = new Token(
+ $prev->getLine() + 1,
+ 'T_WHITESPACE',
+ ''
+ );
+ $final->addToken($linebreak);
+ $prev = $linebreak;
+ $gap--;
+ }
+
+ return $final;
+ }
+}
diff --git a/vendor/theseer/tokenizer/src/XMLSerializer.php b/vendor/theseer/tokenizer/src/XMLSerializer.php
new file mode 100644
index 000000000..e67a7fe8b
--- /dev/null
+++ b/vendor/theseer/tokenizer/src/XMLSerializer.php
@@ -0,0 +1,79 @@
+<?php declare(strict_types = 1);
+namespace TheSeer\Tokenizer;
+
+use DOMDocument;
+
+class XMLSerializer {
+
+ /** @var \XMLWriter */
+ private $writer;
+
+ /** @var Token */
+ private $previousToken;
+
+ /** @var NamespaceUri */
+ private $xmlns;
+
+ /**
+ * XMLSerializer constructor.
+ *
+ * @param NamespaceUri $xmlns
+ */
+ public function __construct(NamespaceUri $xmlns = null) {
+ if ($xmlns === null) {
+ $xmlns = new NamespaceUri('https://github.com/theseer/tokenizer');
+ }
+ $this->xmlns = $xmlns;
+ }
+
+ public function toDom(TokenCollection $tokens): DOMDocument {
+ $dom = new DOMDocument();
+ $dom->preserveWhiteSpace = false;
+ $dom->loadXML($this->toXML($tokens));
+
+ return $dom;
+ }
+
+ public function toXML(TokenCollection $tokens): string {
+ $this->writer = new \XMLWriter();
+ $this->writer->openMemory();
+ $this->writer->setIndent(true);
+ $this->writer->startDocument();
+ $this->writer->startElement('source');
+ $this->writer->writeAttribute('xmlns', $this->xmlns->asString());
+
+ if (\count($tokens) > 0) {
+ $this->writer->startElement('line');
+ $this->writer->writeAttribute('no', '1');
+
+ $this->previousToken = $tokens[0];
+
+ foreach ($tokens as $token) {
+ $this->addToken($token);
+ }
+ }
+
+ $this->writer->endElement();
+ $this->writer->endElement();
+ $this->writer->endDocument();
+
+ return $this->writer->outputMemory();
+ }
+
+ private function addToken(Token $token): void {
+ if ($this->previousToken->getLine() < $token->getLine()) {
+ $this->writer->endElement();
+
+ $this->writer->startElement('line');
+ $this->writer->writeAttribute('no', (string)$token->getLine());
+ $this->previousToken = $token;
+ }
+
+ if ($token->getValue() !== '') {
+ $this->writer->startElement('token');
+ $this->writer->writeAttribute('name', $token->getName());
+ $this->writer->writeRaw(\htmlspecialchars($token->getValue(), \ENT_NOQUOTES | \ENT_DISALLOWED | \ENT_XML1));
+ $this->writer->endElement();
+ }
+ }
+}
diff --git a/vendor/webmozart/assert/.editorconfig b/vendor/webmozart/assert/.editorconfig
new file mode 100644
index 000000000..384453bfb
--- /dev/null
+++ b/vendor/webmozart/assert/.editorconfig
@@ -0,0 +1,12 @@
+root = true
+
+[*]
+charset=utf-8
+end_of_line=lf
+trim_trailing_whitespace=true
+insert_final_newline=true
+indent_style=space
+indent_size=4
+
+[*.yml]
+indent_size=2
diff --git a/vendor/webmozart/assert/.github/workflows/ci.yaml b/vendor/webmozart/assert/.github/workflows/ci.yaml
new file mode 100644
index 000000000..636fc5ab5
--- /dev/null
+++ b/vendor/webmozart/assert/.github/workflows/ci.yaml
@@ -0,0 +1,120 @@
+# https://docs.github.com/en/actions
+
+name: "CI"
+
+on:
+ pull_request: ~
+ push:
+ branches:
+ - "master"
+
+env:
+ COMPOSER_ROOT_VERSION: 1.99
+
+jobs:
+ coding-standards:
+ name: "Coding Standards"
+
+ runs-on: "ubuntu-latest"
+
+ steps:
+ - name: "Checkout"
+ uses: "actions/[email protected]"
+
+ - name: "Install PHP"
+ uses: "shivammathur/[email protected]"
+ with:
+ coverage: "none"
+ extensions: "mbstring"
+ php-version: "7.4"
+ tools: "composer-normalize"
+
+ - name: "Validate composer.json"
+ run: "composer validate --strict"
+
+ - name: "Normalize composer.json"
+ run: "composer-normalize --dry-run"
+
+ - name: "PHP-CS-Fixer"
+ uses: "docker://oskarstark/php-cs-fixer-ga:2.18.0"
+ with:
+ args: "--dry-run --diff-format udiff"
+
+ static-code-analysis:
+ name: "Static Code Analysis"
+
+ runs-on: "ubuntu-latest"
+
+ steps:
+ - name: "Checkout"
+ uses: "actions/[email protected]"
+
+ - name: "Install PHP"
+ uses: "shivammathur/[email protected]"
+ with:
+ coverage: "none"
+ extensions: "mbstring"
+ php-version: "7.4"
+
+ - name: "Install dependencies with composer"
+ run: "composer update --no-interaction --no-progress && composer i --working-dir=ci"
+
+ - name: "Run vimeo/psalm"
+ run: "ci/vendor/bin/psalm --threads=4"
+
+ tests:
+ name: "Tests"
+
+ runs-on: "ubuntu-latest"
+
+ strategy:
+ matrix:
+ php-version:
+ - "7.2"
+ - "7.3"
+ - "7.4"
+ - "8.0"
+
+ steps:
+ - name: "Checkout"
+ uses: "actions/[email protected]"
+
+ - name: "Install PHP"
+ uses: "shivammathur/[email protected]"
+ with:
+ coverage: "none"
+ extensions: "mbstring"
+ php-version: "${{ matrix.php-version }}"
+
+ - name: "Install dependencies with composer"
+ run: "composer update --no-interaction --no-progress"
+
+ - name: "Run unit tests"
+ run: "vendor/bin/phpunit"
+
+ windows-tests:
+ name: "Windows tests"
+
+ runs-on: "windows-latest"
+
+ strategy:
+ matrix:
+ php-version:
+ - "7.4"
+
+ steps:
+ - name: "Checkout"
+ uses: "actions/[email protected]"
+
+ - name: "Install PHP"
+ uses: "shivammathur/[email protected]"
+ with:
+ coverage: "none"
+ extensions: "mbstring"
+ php-version: "${{ matrix.php-version }}"
+
+ - name: "Install dependencies with composer"
+ run: "composer update --no-interaction --no-progress"
+
+ - name: "Run unit tests"
+ run: "vendor/bin/phpunit tests/AssertTest.php"
diff --git a/vendor/webmozart/assert/.php_cs b/vendor/webmozart/assert/.php_cs
new file mode 100644
index 000000000..f7afd3ed7
--- /dev/null
+++ b/vendor/webmozart/assert/.php_cs
@@ -0,0 +1,24 @@
+<?php
+
+$finder = PhpCsFixer\Finder::create()
+ ->in(__DIR__.'/src')
+ ->in(__DIR__.'/tests')
+;
+
+return PhpCsFixer\Config::create()
+ ->setRiskyAllowed(true)
+ ->setRules([
+ '@PSR2' => true,
+ '@Symfony' => true,
+ 'ordered_imports' => true,
+ 'array_syntax' => ['syntax' => 'long'],
+ 'no_superfluous_phpdoc_tags' => false,
+ 'phpdoc_annotation_without_dot' => false,
+ 'phpdoc_types_order' => false,
+ 'phpdoc_summary' => false,
+ 'phpdoc_to_comment' => false,
+ 'phpdoc_align' => false,
+ 'yoda_style' => false,
+ ])
+ ->setFinder($finder)
+;
diff --git a/vendor/webmozart/assert/CHANGELOG.md b/vendor/webmozart/assert/CHANGELOG.md
new file mode 100644
index 000000000..8629248bb
--- /dev/null
+++ b/vendor/webmozart/assert/CHANGELOG.md
@@ -0,0 +1,190 @@
+Changelog
+=========
+
+## UNRELEASED
+
+## 1.10.0
+
+### Added
+
+* On invalid assertion, we throw a `Webmozart\Assert\InvalidArgumentException`
+* Added `Assert::positiveInteger()`
+
+### Changed
+
+* Using a trait with real implementations of `all*()` and `nullOr*()` methods to improve psalm compatibility.
+
+### Removed
+
+* Support for PHP <7.2
+
+## 1.9.1
+
+## Fixed
+
+* provisional support for PHP 8.0
+
+## 1.9.0
+
+* added better Psalm support for `all*` & `nullOr*` methods
+* These methods are now understood by Psalm through a mixin. You may need a newer version of Psalm in order to use this
+* added `@psalm-pure` annotation to `Assert::notFalse()`
+* added more `@psalm-assert` annotations where appropriate
+
+## Changed
+
+* the `all*` & `nullOr*` methods are now declared on an interface, instead of `@method` annotations.
+This interface is linked to the `Assert` class with a `@mixin` annotation. Most IDE's have supported this
+for a long time, and you should not lose any autocompletion capabilities. PHPStan has supported this since
+version `0.12.20`. This package is marked incompatible (with a composer conflict) with phpstan version prior to that.
+If you do not use PHPStan than this does not matter.
+
+## 1.8.0
+
+### Added
+
+* added `Assert::notStartsWith()`
+* added `Assert::notEndsWith()`
+* added `Assert::inArray()`
+* added `@psalm-pure` annotations to pure assertions
+
+### Fixed
+
+* Exception messages of comparisons between `DateTime(Immutable)` objects now display their date & time.
+* Custom Exception messages for `Assert::count()` now use the values to render the exception message.
+
+## 1.7.0 (2020-02-14)
+
+### Added
+
+* added `Assert::notFalse()`
+* added `Assert::isAOf()`
+* added `Assert::isAnyOf()`
+* added `Assert::isNotA()`
+
+## 1.6.0 (2019-11-24)
+
+### Added
+
+* added `Assert::validArrayKey()`
+* added `Assert::isNonEmptyList()`
+* added `Assert::isNonEmptyMap()`
+* added `@throws InvalidArgumentException` annotations to all methods that throw.
+* added `@psalm-assert` for the list type to the `isList` assertion.
+
+### Fixed
+
+* `ResourceBundle` & `SimpleXMLElement` now pass the `isCountable` assertions.
+They are countable, without implementing the `Countable` interface.
+* The doc block of `range` now has the proper variables.
+* An empty array will now pass `isList` and `isMap`. As it is a valid form of both.
+If a non-empty variant is needed, use `isNonEmptyList` or `isNonEmptyMap`.
+
+### Changed
+
+* Removed some `@psalm-assert` annotations, that were 'side effect' assertions See:
+ * [#144](https://github.com/webmozart/assert/pull/144)
+ * [#145](https://github.com/webmozart/assert/issues/145)
+ * [#146](https://github.com/webmozart/assert/pull/146)
+ * [#150](https://github.com/webmozart/assert/pull/150)
+* If you use Psalm, the minimum version needed is `3.6.0`. Which is enforced through a composer conflict.
+If you don't use Psalm, then this has no impact.
+
+## 1.5.0 (2019-08-24)
+
+### Added
+
+* added `Assert::uniqueValues()`
+* added `Assert::unicodeLetters()`
+* added: `Assert::email()`
+* added support for [Psalm](https://github.com/vimeo/psalm), by adding `@psalm-assert` annotations where appropriate.
+
+### Fixed
+
+* `Assert::endsWith()` would not give the correct result when dealing with a multibyte suffix.
+* `Assert::length(), minLength, maxLength, lengthBetween` would not give the correct result when dealing with multibyte characters.
+
+**NOTE**: These 2 changes may break your assertions if you relied on the fact that multibyte characters didn't behave correctly.
+
+### Changed
+
+* The names of some variables have been updated to better reflect what they are.
+* All function calls are now in their FQN form, slightly increasing performance.
+* Tests are now properly ran against HHVM-3.30 and PHP nightly.
+
+### Deprecation
+
+* deprecated `Assert::isTraversable()` in favor of `Assert::isIterable()`
+ * This was already done in 1.3.0, but it was only done through a silenced `trigger_error`. It is now annotated as well.
+
+## 1.4.0 (2018-12-25)
+
+### Added
+
+* added `Assert::ip()`
+* added `Assert::ipv4()`
+* added `Assert::ipv6()`
+* added `Assert::notRegex()`
+* added `Assert::interfaceExists()`
+* added `Assert::isList()`
+* added `Assert::isMap()`
+* added polyfill for ctype
+
+### Fixed
+
+* Special case when comparing objects implementing `__toString()`
+
+## 1.3.0 (2018-01-29)
+
+### Added
+
+* added `Assert::minCount()`
+* added `Assert::maxCount()`
+* added `Assert::countBetween()`
+* added `Assert::isCountable()`
+* added `Assert::notWhitespaceOnly()`
+* added `Assert::natural()`
+* added `Assert::notContains()`
+* added `Assert::isArrayAccessible()`
+* added `Assert::isInstanceOfAny()`
+* added `Assert::isIterable()`
+
+### Fixed
+
+* `stringNotEmpty` will no longer report "0" is an empty string
+
+### Deprecation
+
+* deprecated `Assert::isTraversable()` in favor of `Assert::isIterable()`
+
+## 1.2.0 (2016-11-23)
+
+ * added `Assert::throws()`
+ * added `Assert::count()`
+ * added extension point `Assert::reportInvalidArgument()` for custom subclasses
+
+## 1.1.0 (2016-08-09)
+
+ * added `Assert::object()`
+ * added `Assert::propertyExists()`
+ * added `Assert::propertyNotExists()`
+ * added `Assert::methodExists()`
+ * added `Assert::methodNotExists()`
+ * added `Assert::uuid()`
+
+## 1.0.2 (2015-08-24)
+
+ * integrated Style CI
+ * add tests for minimum package dependencies on Travis CI
+
+## 1.0.1 (2015-05-12)
+
+ * added support for PHP 5.3.3
+
+## 1.0.0 (2015-05-12)
+
+ * first stable release
+
+## 1.0.0-beta (2015-03-19)
+
+ * first beta release
diff --git a/vendor/webmozart/assert/LICENSE b/vendor/webmozart/assert/LICENSE
new file mode 100644
index 000000000..9e2e3075e
--- /dev/null
+++ b/vendor/webmozart/assert/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Bernhard Schussek
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/webmozart/assert/README.md b/vendor/webmozart/assert/README.md
new file mode 100644
index 000000000..b85d59817
--- /dev/null
+++ b/vendor/webmozart/assert/README.md
@@ -0,0 +1,287 @@
+Webmozart Assert
+================
+
+[![Latest Stable Version](https://poser.pugx.org/webmozart/assert/v/stable.svg)](https://packagist.org/packages/webmozart/assert)
+[![Total Downloads](https://poser.pugx.org/webmozart/assert/downloads.svg)](https://packagist.org/packages/webmozart/assert)
+
+This library contains efficient assertions to test the input and output of
+your methods. With these assertions, you can greatly reduce the amount of coding
+needed to write a safe implementation.
+
+All assertions in the [`Assert`] class throw an `Webmozart\Assert\InvalidArgumentException` if
+they fail.
+
+FAQ
+---
+
+**What's the difference to [beberlei/assert]?**
+
+This library is heavily inspired by Benjamin Eberlei's wonderful [assert package],
+but fixes a usability issue with error messages that can't be fixed there without
+breaking backwards compatibility.
+
+This package features usable error messages by default. However, you can also
+easily write custom error messages:
+
+```
+Assert::string($path, 'The path is expected to be a string. Got: %s');
+```
+
+In [beberlei/assert], the ordering of the `%s` placeholders is different for
+every assertion. This package, on the contrary, provides consistent placeholder
+ordering for all assertions:
+
+* `%s`: The tested value as string, e.g. `"/foo/bar"`.
+* `%2$s`, `%3$s`, ...: Additional assertion-specific values, e.g. the
+ minimum/maximum length, allowed values, etc.
+
+Check the source code of the assertions to find out details about the additional
+available placeholders.
+
+Installation
+------------
+
+Use [Composer] to install the package:
+
+```
+$ composer require webmozart/assert
+```
+
+Example
+-------
+
+```php
+use Webmozart\Assert\Assert;
+
+class Employee
+{
+ public function __construct($id)
+ {
+ Assert::integer($id, 'The employee ID must be an integer. Got: %s');
+ Assert::greaterThan($id, 0, 'The employee ID must be a positive integer. Got: %s');
+ }
+}
+```
+
+If you create an employee with an invalid ID, an exception is thrown:
+
+```php
+new Employee('foobar');
+// => Webmozart\Assert\InvalidArgumentException:
+// The employee ID must be an integer. Got: string
+
+new Employee(-10);
+// => Webmozart\Assert\InvalidArgumentException:
+// The employee ID must be a positive integer. Got: -10
+```
+
+Assertions
+----------
+
+The [`Assert`] class provides the following assertions:
+
+### Type Assertions
+
+Method | Description
+-------------------------------------------------------- | --------------------------------------------------
+`string($value, $message = '')` | Check that a value is a string
+`stringNotEmpty($value, $message = '')` | Check that a value is a non-empty string
+`integer($value, $message = '')` | Check that a value is an integer
+`integerish($value, $message = '')` | Check that a value casts to an integer
+`positiveInteger($value, $message = '')` | Check that a value is a positive (non-zero) integer
+`float($value, $message = '')` | Check that a value is a float
+`numeric($value, $message = '')` | Check that a value is numeric
+`natural($value, $message= ''')` | Check that a value is a non-negative integer
+`boolean($value, $message = '')` | Check that a value is a boolean
+`scalar($value, $message = '')` | Check that a value is a scalar
+`object($value, $message = '')` | Check that a value is an object
+`resource($value, $type = null, $message = '')` | Check that a value is a resource
+`isCallable($value, $message = '')` | Check that a value is a callable
+`isArray($value, $message = '')` | Check that a value is an array
+`isTraversable($value, $message = '')` (deprecated) | Check that a value is an array or a `\Traversable`
+`isIterable($value, $message = '')` | Check that a value is an array or a `\Traversable`
+`isCountable($value, $message = '')` | Check that a value is an array or a `\Countable`
+`isInstanceOf($value, $class, $message = '')` | Check that a value is an `instanceof` a class
+`isInstanceOfAny($value, array $classes, $message = '')` | Check that a value is an `instanceof` at least one class on the array of classes
+`notInstanceOf($value, $class, $message = '')` | Check that a value is not an `instanceof` a class
+`isAOf($value, $class, $message = '')` | Check that a value is of the class or has one of its parents
+`isAnyOf($value, array $classes, $message = '')` | Check that a value is of at least one of the classes or has one of its parents
+`isNotA($value, $class, $message = '')` | Check that a value is not of the class or has not one of its parents
+`isArrayAccessible($value, $message = '')` | Check that a value can be accessed as an array
+`uniqueValues($values, $message = '')` | Check that the given array contains unique values
+
+### Comparison Assertions
+
+Method | Description
+----------------------------------------------- | ------------------------------------------------------------------
+`true($value, $message = '')` | Check that a value is `true`
+`false($value, $message = '')` | Check that a value is `false`
+`notFalse($value, $message = '')` | Check that a value is not `false`
+`null($value, $message = '')` | Check that a value is `null`
+`notNull($value, $message = '')` | Check that a value is not `null`
+`isEmpty($value, $message = '')` | Check that a value is `empty()`
+`notEmpty($value, $message = '')` | Check that a value is not `empty()`
+`eq($value, $value2, $message = '')` | Check that a value equals another (`==`)
+`notEq($value, $value2, $message = '')` | Check that a value does not equal another (`!=`)
+`same($value, $value2, $message = '')` | Check that a value is identical to another (`===`)
+`notSame($value, $value2, $message = '')` | Check that a value is not identical to another (`!==`)
+`greaterThan($value, $value2, $message = '')` | Check that a value is greater than another
+`greaterThanEq($value, $value2, $message = '')` | Check that a value is greater than or equal to another
+`lessThan($value, $value2, $message = '')` | Check that a value is less than another
+`lessThanEq($value, $value2, $message = '')` | Check that a value is less than or equal to another
+`range($value, $min, $max, $message = '')` | Check that a value is within a range
+`inArray($value, array $values, $message = '')` | Check that a value is one of a list of values
+`oneOf($value, array $values, $message = '')` | Check that a value is one of a list of values (alias of `inArray`)
+
+### String Assertions
+
+You should check that a value is a string with `Assert::string()` before making
+any of the following assertions.
+
+Method | Description
+--------------------------------------------------- | -----------------------------------------------------------------
+`contains($value, $subString, $message = '')` | Check that a string contains a substring
+`notContains($value, $subString, $message = '')` | Check that a string does not contain a substring
+`startsWith($value, $prefix, $message = '')` | Check that a string has a prefix
+`notStartsWith($value, $prefix, $message = '')` | Check that a string does not have a prefix
+`startsWithLetter($value, $message = '')` | Check that a string starts with a letter
+`endsWith($value, $suffix, $message = '')` | Check that a string has a suffix
+`notEndsWith($value, $suffix, $message = '')` | Check that a string does not have a suffix
+`regex($value, $pattern, $message = '')` | Check that a string matches a regular expression
+`notRegex($value, $pattern, $message = '')` | Check that a string does not match a regular expression
+`unicodeLetters($value, $message = '')` | Check that a string contains Unicode letters only
+`alpha($value, $message = '')` | Check that a string contains letters only
+`digits($value, $message = '')` | Check that a string contains digits only
+`alnum($value, $message = '')` | Check that a string contains letters and digits only
+`lower($value, $message = '')` | Check that a string contains lowercase characters only
+`upper($value, $message = '')` | Check that a string contains uppercase characters only
+`length($value, $length, $message = '')` | Check that a string has a certain number of characters
+`minLength($value, $min, $message = '')` | Check that a string has at least a certain number of characters
+`maxLength($value, $max, $message = '')` | Check that a string has at most a certain number of characters
+`lengthBetween($value, $min, $max, $message = '')` | Check that a string has a length in the given range
+`uuid($value, $message = '')` | Check that a string is a valid UUID
+`ip($value, $message = '')` | Check that a string is a valid IP (either IPv4 or IPv6)
+`ipv4($value, $message = '')` | Check that a string is a valid IPv4
+`ipv6($value, $message = '')` | Check that a string is a valid IPv6
+`email($value, $message = '')` | Check that a string is a valid e-mail address
+`notWhitespaceOnly($value, $message = '')` | Check that a string contains at least one non-whitespace character
+
+### File Assertions
+
+Method | Description
+----------------------------------- | --------------------------------------------------
+`fileExists($value, $message = '')` | Check that a value is an existing path
+`file($value, $message = '')` | Check that a value is an existing file
+`directory($value, $message = '')` | Check that a value is an existing directory
+`readable($value, $message = '')` | Check that a value is a readable path
+`writable($value, $message = '')` | Check that a value is a writable path
+
+### Object Assertions
+
+Method | Description
+----------------------------------------------------- | --------------------------------------------------
+`classExists($value, $message = '')` | Check that a value is an existing class name
+`subclassOf($value, $class, $message = '')` | Check that a class is a subclass of another
+`interfaceExists($value, $message = '')` | Check that a value is an existing interface name
+`implementsInterface($value, $class, $message = '')` | Check that a class implements an interface
+`propertyExists($value, $property, $message = '')` | Check that a property exists in a class/object
+`propertyNotExists($value, $property, $message = '')` | Check that a property does not exist in a class/object
+`methodExists($value, $method, $message = '')` | Check that a method exists in a class/object
+`methodNotExists($value, $method, $message = '')` | Check that a method does not exist in a class/object
+
+### Array Assertions
+
+Method | Description
+-------------------------------------------------- | ------------------------------------------------------------------
+`keyExists($array, $key, $message = '')` | Check that a key exists in an array
+`keyNotExists($array, $key, $message = '')` | Check that a key does not exist in an array
+`validArrayKey($key, $message = '')` | Check that a value is a valid array key (int or string)
+`count($array, $number, $message = '')` | Check that an array contains a specific number of elements
+`minCount($array, $min, $message = '')` | Check that an array contains at least a certain number of elements
+`maxCount($array, $max, $message = '')` | Check that an array contains at most a certain number of elements
+`countBetween($array, $min, $max, $message = '')` | Check that an array has a count in the given range
+`isList($array, $message = '')` | Check that an array is a non-associative list
+`isNonEmptyList($array, $message = '')` | Check that an array is a non-associative list, and not empty
+`isMap($array, $message = '')` | Check that an array is associative and has strings as keys
+`isNonEmptyMap($array, $message = '')` | Check that an array is associative and has strings as keys, and is not empty
+
+### Function Assertions
+
+Method | Description
+------------------------------------------- | -----------------------------------------------------------------------------------------------------
+`throws($closure, $class, $message = '')` | Check that a function throws a certain exception. Subclasses of the exception class will be accepted.
+
+### Collection Assertions
+
+All of the above assertions can be prefixed with `all*()` to test the contents
+of an array or a `\Traversable`:
+
+```php
+Assert::allIsInstanceOf($employees, 'Acme\Employee');
+```
+
+### Nullable Assertions
+
+All of the above assertions can be prefixed with `nullOr*()` to run the
+assertion only if it the value is not `null`:
+
+```php
+Assert::nullOrString($middleName, 'The middle name must be a string or null. Got: %s');
+```
+
+### Extending Assert
+
+The `Assert` class comes with a few methods, which can be overridden to change the class behaviour. You can also extend it to
+add your own assertions.
+
+#### Overriding methods
+
+Overriding the following methods in your assertion class allows you to change the behaviour of the assertions:
+
+* `public static function __callStatic($name, $arguments)`
+ * This method is used to 'create' the `nullOr` and `all` versions of the assertions.
+* `protected static function valueToString($value)`
+ * This method is used for error messages, to convert the value to a string value for displaying. You could use this for representing a value object with a `__toString` method for example.
+* `protected static function typeToString($value)`
+ * This method is used for error messages, to convert the a value to a string representing its type.
+* `protected static function strlen($value)`
+ * This method is used to calculate string length for relevant methods, using the `mb_strlen` if available and useful.
+* `protected static function reportInvalidArgument($message)`
+ * This method is called when an assertion fails, with the specified error message. Here you can throw your own exception, or log something.
+
+## Static analysis support
+
+Where applicable, assertion functions are annotated to support Psalm's
+[Assertion syntax](https://psalm.dev/docs/annotating_code/assertion_syntax/).
+A dedicated [PHPStan Plugin](https://github.com/phpstan/phpstan-webmozart-assert) is
+required for proper type support.
+
+Authors
+-------
+
+* [Bernhard Schussek] a.k.a. [@webmozart]
+* [The Community Contributors]
+
+Contribute
+----------
+
+Contributions to the package are always welcome!
+
+* Report any bugs or issues you find on the [issue tracker].
+* You can grab the source code at the package's [Git repository].
+
+License
+-------
+
+All contents of this package are licensed under the [MIT license].
+
+[beberlei/assert]: https://github.com/beberlei/assert
+[assert package]: https://github.com/beberlei/assert
+[Composer]: https://getcomposer.org
+[Bernhard Schussek]: https://webmozarts.com
+[The Community Contributors]: https://github.com/webmozart/assert/graphs/contributors
+[issue tracker]: https://github.com/webmozart/assert/issues
+[Git repository]: https://github.com/webmozart/assert
+[@webmozart]: https://twitter.com/webmozart
+[MIT license]: LICENSE
+[`Assert`]: src/Assert.php
diff --git a/vendor/webmozart/assert/composer.json b/vendor/webmozart/assert/composer.json
new file mode 100644
index 000000000..cfae60e5c
--- /dev/null
+++ b/vendor/webmozart/assert/composer.json
@@ -0,0 +1,43 @@
+{
+ "name": "webmozart/assert",
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "[email protected]"
+ }
+ ],
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Webmozart\\Assert\\Tests\\": "tests/",
+ "Webmozart\\Assert\\Bin\\": "bin/src"
+ }
+ }
+}
diff --git a/vendor/webmozart/assert/psalm.xml b/vendor/webmozart/assert/psalm.xml
new file mode 100644
index 000000000..9a4300819
--- /dev/null
+++ b/vendor/webmozart/assert/psalm.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<psalm
+ totallyTyped="true"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config ci/vendor/vimeo/psalm/config.xsd"
+ phpVersion="7.3"
+>
+ <projectFiles>
+ <directory name="bin" />
+ <directory name="tests/static-analysis" />
+ </projectFiles>
+
+</psalm>
diff --git a/vendor/webmozart/assert/src/Assert.php b/vendor/webmozart/assert/src/Assert.php
new file mode 100644
index 000000000..e0fbabc86
--- /dev/null
+++ b/vendor/webmozart/assert/src/Assert.php
@@ -0,0 +1,2066 @@
+<?php
+
+/*
+ * This file is part of the webmozart/assert package.
+ *
+ * (c) Bernhard Schussek <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Webmozart\Assert;
+
+use ArrayAccess;
+use BadMethodCallException;
+use Closure;
+use Countable;
+use DateTime;
+use DateTimeImmutable;
+use Exception;
+use ResourceBundle;
+use SimpleXMLElement;
+use Throwable;
+use Traversable;
+
+/**
+ * Efficient assertions to validate the input/output of your methods.
+ *
+ * @since 1.0
+ *
+ * @author Bernhard Schussek <[email protected]>
+ */
+class Assert
+{
+ use Mixin;
+
+ /**
+ * @psalm-pure
+ * @psalm-assert string $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function string($value, $message = '')
+ {
+ if (!\is_string($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a string. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert non-empty-string $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function stringNotEmpty($value, $message = '')
+ {
+ static::string($value, $message);
+ static::notEq($value, '', $message);
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert int $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function integer($value, $message = '')
+ {
+ if (!\is_int($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an integer. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert numeric $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function integerish($value, $message = '')
+ {
+ if (!\is_numeric($value) || $value != (int) $value) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an integerish value. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert positive-int $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function positiveInteger($value, $message = '')
+ {
+ if (!(\is_int($value) && $value > 0)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a positive integer. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert float $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function float($value, $message = '')
+ {
+ if (!\is_float($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a float. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert numeric $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function numeric($value, $message = '')
+ {
+ if (!\is_numeric($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a numeric. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert positive-int|0 $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function natural($value, $message = '')
+ {
+ if (!\is_int($value) || $value < 0) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a non-negative integer. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert bool $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function boolean($value, $message = '')
+ {
+ if (!\is_bool($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a boolean. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert scalar $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function scalar($value, $message = '')
+ {
+ if (!\is_scalar($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a scalar. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert object $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function object($value, $message = '')
+ {
+ if (!\is_object($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an object. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert resource $value
+ *
+ * @param mixed $value
+ * @param string|null $type type of resource this should be. @see https://www.php.net/manual/en/function.get-resource-type.php
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function resource($value, $type = null, $message = '')
+ {
+ if (!\is_resource($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a resource. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+
+ if ($type && $type !== \get_resource_type($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a resource of type %2$s. Got: %s',
+ static::typeToString($value),
+ $type
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert callable $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isCallable($value, $message = '')
+ {
+ if (!\is_callable($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a callable. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert array $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isArray($value, $message = '')
+ {
+ if (!\is_array($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an array. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable $value
+ *
+ * @deprecated use "isIterable" or "isInstanceOf" instead
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isTraversable($value, $message = '')
+ {
+ @\trigger_error(
+ \sprintf(
+ 'The "%s" assertion is deprecated. You should stop using it, as it will soon be removed in 2.0 version. Use "isIterable" or "isInstanceOf" instead.',
+ __METHOD__
+ ),
+ \E_USER_DEPRECATED
+ );
+
+ if (!\is_array($value) && !($value instanceof Traversable)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a traversable. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert array|ArrayAccess $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isArrayAccessible($value, $message = '')
+ {
+ if (!\is_array($value) && !($value instanceof ArrayAccess)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an array accessible. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert countable $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isCountable($value, $message = '')
+ {
+ if (
+ !\is_array($value)
+ && !($value instanceof Countable)
+ && !($value instanceof ResourceBundle)
+ && !($value instanceof SimpleXMLElement)
+ ) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a countable. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isIterable($value, $message = '')
+ {
+ if (!\is_array($value) && !($value instanceof Traversable)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an iterable. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ * @psalm-assert ExpectedType $value
+ *
+ * @param mixed $value
+ * @param string|object $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isInstanceOf($value, $class, $message = '')
+ {
+ if (!($value instanceof $class)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an instance of %2$s. Got: %s',
+ static::typeToString($value),
+ $class
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ * @psalm-assert !ExpectedType $value
+ *
+ * @param mixed $value
+ * @param string|object $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notInstanceOf($value, $class, $message = '')
+ {
+ if ($value instanceof $class) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an instance other than %2$s. Got: %s',
+ static::typeToString($value),
+ $class
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param array<class-string> $classes
+ *
+ * @param mixed $value
+ * @param array<object|string> $classes
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isInstanceOfAny($value, array $classes, $message = '')
+ {
+ foreach ($classes as $class) {
+ if ($value instanceof $class) {
+ return;
+ }
+ }
+
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an instance of any of %2$s. Got: %s',
+ static::typeToString($value),
+ \implode(', ', \array_map(array('static', 'valueToString'), $classes))
+ ));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ * @psalm-assert ExpectedType|class-string<ExpectedType> $value
+ *
+ * @param object|string $value
+ * @param string $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isAOf($value, $class, $message = '')
+ {
+ static::string($class, 'Expected class as a string. Got: %s');
+
+ if (!\is_a($value, $class, \is_string($value))) {
+ static::reportInvalidArgument(sprintf(
+ $message ?: 'Expected an instance of this class or to this class among his parents %2$s. Got: %s',
+ static::typeToString($value),
+ $class
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template UnexpectedType of object
+ * @psalm-param class-string<UnexpectedType> $class
+ * @psalm-assert !UnexpectedType $value
+ * @psalm-assert !class-string<UnexpectedType> $value
+ *
+ * @param object|string $value
+ * @param string $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isNotA($value, $class, $message = '')
+ {
+ static::string($class, 'Expected class as a string. Got: %s');
+
+ if (\is_a($value, $class, \is_string($value))) {
+ static::reportInvalidArgument(sprintf(
+ $message ?: 'Expected an instance of this class or to this class among his parents other than %2$s. Got: %s',
+ static::typeToString($value),
+ $class
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param array<class-string> $classes
+ *
+ * @param object|string $value
+ * @param string[] $classes
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isAnyOf($value, array $classes, $message = '')
+ {
+ foreach ($classes as $class) {
+ static::string($class, 'Expected class as a string. Got: %s');
+
+ if (\is_a($value, $class, \is_string($value))) {
+ return;
+ }
+ }
+
+ static::reportInvalidArgument(sprintf(
+ $message ?: 'Expected an any of instance of this class or to this class among his parents other than %2$s. Got: %s',
+ static::typeToString($value),
+ \implode(', ', \array_map(array('static', 'valueToString'), $classes))
+ ));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert empty $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isEmpty($value, $message = '')
+ {
+ if (!empty($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an empty value. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert !empty $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notEmpty($value, $message = '')
+ {
+ if (empty($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a non-empty value. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function null($value, $message = '')
+ {
+ if (null !== $value) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected null. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert !null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notNull($value, $message = '')
+ {
+ if (null === $value) {
+ static::reportInvalidArgument(
+ $message ?: 'Expected a value other than null.'
+ );
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert true $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function true($value, $message = '')
+ {
+ if (true !== $value) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to be true. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert false $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function false($value, $message = '')
+ {
+ if (false !== $value) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to be false. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert !false $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notFalse($value, $message = '')
+ {
+ if (false === $value) {
+ static::reportInvalidArgument(
+ $message ?: 'Expected a value other than false.'
+ );
+ }
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function ip($value, $message = '')
+ {
+ if (false === \filter_var($value, \FILTER_VALIDATE_IP)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to be an IP. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function ipv4($value, $message = '')
+ {
+ if (false === \filter_var($value, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV4)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to be an IPv4. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function ipv6($value, $message = '')
+ {
+ if (false === \filter_var($value, \FILTER_VALIDATE_IP, \FILTER_FLAG_IPV6)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to be an IPv6. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function email($value, $message = '')
+ {
+ if (false === \filter_var($value, FILTER_VALIDATE_EMAIL)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to be a valid e-mail address. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * Does non strict comparisons on the items, so ['3', 3] will not pass the assertion.
+ *
+ * @param array $values
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function uniqueValues(array $values, $message = '')
+ {
+ $allValues = \count($values);
+ $uniqueValues = \count(\array_unique($values));
+
+ if ($allValues !== $uniqueValues) {
+ $difference = $allValues - $uniqueValues;
+
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an array of unique values, but %s of them %s duplicated',
+ $difference,
+ (1 === $difference ? 'is' : 'are')
+ ));
+ }
+ }
+
+ /**
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function eq($value, $expect, $message = '')
+ {
+ if ($expect != $value) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value equal to %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($expect)
+ ));
+ }
+ }
+
+ /**
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notEq($value, $expect, $message = '')
+ {
+ if ($expect == $value) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a different value than %s.',
+ static::valueToString($expect)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function same($value, $expect, $message = '')
+ {
+ if ($expect !== $value) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value identical to %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($expect)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notSame($value, $expect, $message = '')
+ {
+ if ($expect === $value) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value not identical to %s.',
+ static::valueToString($expect)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function greaterThan($value, $limit, $message = '')
+ {
+ if ($value <= $limit) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value greater than %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($limit)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function greaterThanEq($value, $limit, $message = '')
+ {
+ if ($value < $limit) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value greater than or equal to %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($limit)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function lessThan($value, $limit, $message = '')
+ {
+ if ($value >= $limit) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value less than %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($limit)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function lessThanEq($value, $limit, $message = '')
+ {
+ if ($value > $limit) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value less than or equal to %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($limit)
+ ));
+ }
+ }
+
+ /**
+ * Inclusive range, so Assert::(3, 3, 5) passes.
+ *
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $min
+ * @param mixed $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function range($value, $min, $max, $message = '')
+ {
+ if ($value < $min || $value > $max) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value between %2$s and %3$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($min),
+ static::valueToString($max)
+ ));
+ }
+ }
+
+ /**
+ * A more human-readable alias of Assert::inArray().
+ *
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param array $values
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function oneOf($value, array $values, $message = '')
+ {
+ static::inArray($value, $values, $message);
+ }
+
+ /**
+ * Does strict comparison, so Assert::inArray(3, ['3']) does not pass the assertion.
+ *
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param array $values
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function inArray($value, array $values, $message = '')
+ {
+ if (!\in_array($value, $values, true)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected one of: %2$s. Got: %s',
+ static::valueToString($value),
+ \implode(', ', \array_map(array('static', 'valueToString'), $values))
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $subString
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function contains($value, $subString, $message = '')
+ {
+ if (false === \strpos($value, $subString)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($subString)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $subString
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notContains($value, $subString, $message = '')
+ {
+ if (false !== \strpos($value, $subString)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: '%2$s was not expected to be contained in a value. Got: %s',
+ static::valueToString($value),
+ static::valueToString($subString)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notWhitespaceOnly($value, $message = '')
+ {
+ if (\preg_match('/^\s*$/', $value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a non-whitespace string. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $prefix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function startsWith($value, $prefix, $message = '')
+ {
+ if (0 !== \strpos($value, $prefix)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to start with %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($prefix)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $prefix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notStartsWith($value, $prefix, $message = '')
+ {
+ if (0 === \strpos($value, $prefix)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value not to start with %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($prefix)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function startsWithLetter($value, $message = '')
+ {
+ static::string($value);
+
+ $valid = isset($value[0]);
+
+ if ($valid) {
+ $locale = \setlocale(LC_CTYPE, 0);
+ \setlocale(LC_CTYPE, 'C');
+ $valid = \ctype_alpha($value[0]);
+ \setlocale(LC_CTYPE, $locale);
+ }
+
+ if (!$valid) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to start with a letter. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $suffix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function endsWith($value, $suffix, $message = '')
+ {
+ if ($suffix !== \substr($value, -\strlen($suffix))) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to end with %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($suffix)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $suffix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notEndsWith($value, $suffix, $message = '')
+ {
+ if ($suffix === \substr($value, -\strlen($suffix))) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value not to end with %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($suffix)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $pattern
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function regex($value, $pattern, $message = '')
+ {
+ if (!\preg_match($pattern, $value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'The value %s does not match the expected pattern.',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $pattern
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function notRegex($value, $pattern, $message = '')
+ {
+ if (\preg_match($pattern, $value, $matches, PREG_OFFSET_CAPTURE)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'The value %s matches the pattern %s (at offset %d).',
+ static::valueToString($value),
+ static::valueToString($pattern),
+ $matches[0][1]
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function unicodeLetters($value, $message = '')
+ {
+ static::string($value);
+
+ if (!\preg_match('/^\p{L}+$/u', $value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain only Unicode letters. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function alpha($value, $message = '')
+ {
+ static::string($value);
+
+ $locale = \setlocale(LC_CTYPE, 0);
+ \setlocale(LC_CTYPE, 'C');
+ $valid = !\ctype_alpha($value);
+ \setlocale(LC_CTYPE, $locale);
+
+ if ($valid) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain only letters. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function digits($value, $message = '')
+ {
+ $locale = \setlocale(LC_CTYPE, 0);
+ \setlocale(LC_CTYPE, 'C');
+ $valid = !\ctype_digit($value);
+ \setlocale(LC_CTYPE, $locale);
+
+ if ($valid) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain digits only. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function alnum($value, $message = '')
+ {
+ $locale = \setlocale(LC_CTYPE, 0);
+ \setlocale(LC_CTYPE, 'C');
+ $valid = !\ctype_alnum($value);
+ \setlocale(LC_CTYPE, $locale);
+
+ if ($valid) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain letters and digits only. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert lowercase-string $value
+ *
+ * @param string $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function lower($value, $message = '')
+ {
+ $locale = \setlocale(LC_CTYPE, 0);
+ \setlocale(LC_CTYPE, 'C');
+ $valid = !\ctype_lower($value);
+ \setlocale(LC_CTYPE, $locale);
+
+ if ($valid) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain lowercase characters only. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert !lowercase-string $value
+ *
+ * @param string $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function upper($value, $message = '')
+ {
+ $locale = \setlocale(LC_CTYPE, 0);
+ \setlocale(LC_CTYPE, 'C');
+ $valid = !\ctype_upper($value);
+ \setlocale(LC_CTYPE, $locale);
+
+ if ($valid) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain uppercase characters only. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param int $length
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function length($value, $length, $message = '')
+ {
+ if ($length !== static::strlen($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain %2$s characters. Got: %s',
+ static::valueToString($value),
+ $length
+ ));
+ }
+ }
+
+ /**
+ * Inclusive min.
+ *
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param int|float $min
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function minLength($value, $min, $message = '')
+ {
+ if (static::strlen($value) < $min) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain at least %2$s characters. Got: %s',
+ static::valueToString($value),
+ $min
+ ));
+ }
+ }
+
+ /**
+ * Inclusive max.
+ *
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function maxLength($value, $max, $message = '')
+ {
+ if (static::strlen($value) > $max) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain at most %2$s characters. Got: %s',
+ static::valueToString($value),
+ $max
+ ));
+ }
+ }
+
+ /**
+ * Inclusive , so Assert::lengthBetween('asd', 3, 5); passes the assertion.
+ *
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param int|float $min
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function lengthBetween($value, $min, $max, $message = '')
+ {
+ $length = static::strlen($value);
+
+ if ($length < $min || $length > $max) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a value to contain between %2$s and %3$s characters. Got: %s',
+ static::valueToString($value),
+ $min,
+ $max
+ ));
+ }
+ }
+
+ /**
+ * Will also pass if $value is a directory, use Assert::file() instead if you need to be sure it is a file.
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function fileExists($value, $message = '')
+ {
+ static::string($value);
+
+ if (!\file_exists($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'The file %s does not exist.',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function file($value, $message = '')
+ {
+ static::fileExists($value, $message);
+
+ if (!\is_file($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'The path %s is not a file.',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function directory($value, $message = '')
+ {
+ static::fileExists($value, $message);
+
+ if (!\is_dir($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'The path %s is no directory.',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @param string $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function readable($value, $message = '')
+ {
+ if (!\is_readable($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'The path %s is not readable.',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @param string $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function writable($value, $message = '')
+ {
+ if (!\is_writable($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'The path %s is not writable.',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-assert class-string $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function classExists($value, $message = '')
+ {
+ if (!\class_exists($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an existing class name. Got: %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ * @psalm-assert class-string<ExpectedType>|ExpectedType $value
+ *
+ * @param mixed $value
+ * @param string|object $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function subclassOf($value, $class, $message = '')
+ {
+ if (!\is_subclass_of($value, $class)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected a sub-class of %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($class)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-assert class-string $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function interfaceExists($value, $message = '')
+ {
+ if (!\interface_exists($value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an existing interface name. got %s',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $interface
+ * @psalm-assert class-string<ExpectedType> $value
+ *
+ * @param mixed $value
+ * @param mixed $interface
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function implementsInterface($value, $interface, $message = '')
+ {
+ if (!\in_array($interface, \class_implements($value))) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an implementation of %2$s. Got: %s',
+ static::valueToString($value),
+ static::valueToString($interface)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param class-string|object $classOrObject
+ *
+ * @param string|object $classOrObject
+ * @param mixed $property
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function propertyExists($classOrObject, $property, $message = '')
+ {
+ if (!\property_exists($classOrObject, $property)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected the property %s to exist.',
+ static::valueToString($property)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param class-string|object $classOrObject
+ *
+ * @param string|object $classOrObject
+ * @param mixed $property
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function propertyNotExists($classOrObject, $property, $message = '')
+ {
+ if (\property_exists($classOrObject, $property)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected the property %s to not exist.',
+ static::valueToString($property)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param class-string|object $classOrObject
+ *
+ * @param string|object $classOrObject
+ * @param mixed $method
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function methodExists($classOrObject, $method, $message = '')
+ {
+ if (!(\is_string($classOrObject) || \is_object($classOrObject)) || !\method_exists($classOrObject, $method)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected the method %s to exist.',
+ static::valueToString($method)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param class-string|object $classOrObject
+ *
+ * @param string|object $classOrObject
+ * @param mixed $method
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function methodNotExists($classOrObject, $method, $message = '')
+ {
+ if ((\is_string($classOrObject) || \is_object($classOrObject)) && \method_exists($classOrObject, $method)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected the method %s to not exist.',
+ static::valueToString($method)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param array $array
+ * @param string|int $key
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function keyExists($array, $key, $message = '')
+ {
+ if (!(isset($array[$key]) || \array_key_exists($key, $array))) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected the key %s to exist.',
+ static::valueToString($key)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param array $array
+ * @param string|int $key
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function keyNotExists($array, $key, $message = '')
+ {
+ if (isset($array[$key]) || \array_key_exists($key, $array)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected the key %s to not exist.',
+ static::valueToString($key)
+ ));
+ }
+ }
+
+ /**
+ * Checks if a value is a valid array key (int or string).
+ *
+ * @psalm-pure
+ * @psalm-assert array-key $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function validArrayKey($value, $message = '')
+ {
+ if (!(\is_int($value) || \is_string($value))) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected string or integer. Got: %s',
+ static::typeToString($value)
+ ));
+ }
+ }
+
+ /**
+ * Does not check if $array is countable, this can generate a warning on php versions after 7.2.
+ *
+ * @param Countable|array $array
+ * @param int $number
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function count($array, $number, $message = '')
+ {
+ static::eq(
+ \count($array),
+ $number,
+ \sprintf(
+ $message ?: 'Expected an array to contain %d elements. Got: %d.',
+ $number,
+ \count($array)
+ )
+ );
+ }
+
+ /**
+ * Does not check if $array is countable, this can generate a warning on php versions after 7.2.
+ *
+ * @param Countable|array $array
+ * @param int|float $min
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function minCount($array, $min, $message = '')
+ {
+ if (\count($array) < $min) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an array to contain at least %2$d elements. Got: %d',
+ \count($array),
+ $min
+ ));
+ }
+ }
+
+ /**
+ * Does not check if $array is countable, this can generate a warning on php versions after 7.2.
+ *
+ * @param Countable|array $array
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function maxCount($array, $max, $message = '')
+ {
+ if (\count($array) > $max) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an array to contain at most %2$d elements. Got: %d',
+ \count($array),
+ $max
+ ));
+ }
+ }
+
+ /**
+ * Does not check if $array is countable, this can generate a warning on php versions after 7.2.
+ *
+ * @param Countable|array $array
+ * @param int|float $min
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function countBetween($array, $min, $max, $message = '')
+ {
+ $count = \count($array);
+
+ if ($count < $min || $count > $max) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Expected an array to contain between %2$d and %3$d elements. Got: %d',
+ $count,
+ $min,
+ $max
+ ));
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert list $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isList($array, $message = '')
+ {
+ if (!\is_array($array) || $array !== \array_values($array)) {
+ static::reportInvalidArgument(
+ $message ?: 'Expected list - non-associative array.'
+ );
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert non-empty-list $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isNonEmptyList($array, $message = '')
+ {
+ static::isList($array, $message);
+ static::notEmpty($array, $message);
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template T
+ * @psalm-param mixed|array<T> $array
+ * @psalm-assert array<string, T> $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isMap($array, $message = '')
+ {
+ if (
+ !\is_array($array) ||
+ \array_keys($array) !== \array_filter(\array_keys($array), '\is_string')
+ ) {
+ static::reportInvalidArgument(
+ $message ?: 'Expected map - associative array with string keys.'
+ );
+ }
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template T
+ * @psalm-param mixed|array<T> $array
+ * @psalm-assert array<string, T> $array
+ * @psalm-assert !empty $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function isNonEmptyMap($array, $message = '')
+ {
+ static::isMap($array, $message);
+ static::notEmpty($array, $message);
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function uuid($value, $message = '')
+ {
+ $value = \str_replace(array('urn:', 'uuid:', '{', '}'), '', $value);
+
+ // The nil UUID is special form of UUID that is specified to have all
+ // 128 bits set to zero.
+ if ('00000000-0000-0000-0000-000000000000' === $value) {
+ return;
+ }
+
+ if (!\preg_match('/^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/', $value)) {
+ static::reportInvalidArgument(\sprintf(
+ $message ?: 'Value %s is not a valid UUID.',
+ static::valueToString($value)
+ ));
+ }
+ }
+
+ /**
+ * @psalm-param class-string<Throwable> $class
+ *
+ * @param Closure $expression
+ * @param string $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function throws(Closure $expression, $class = 'Exception', $message = '')
+ {
+ static::string($class);
+
+ $actual = 'none';
+
+ try {
+ $expression();
+ } catch (Exception $e) {
+ $actual = \get_class($e);
+ if ($e instanceof $class) {
+ return;
+ }
+ } catch (Throwable $e) {
+ $actual = \get_class($e);
+ if ($e instanceof $class) {
+ return;
+ }
+ }
+
+ static::reportInvalidArgument($message ?: \sprintf(
+ 'Expected to throw "%s", got "%s"',
+ $class,
+ $actual
+ ));
+ }
+
+ /**
+ * @throws BadMethodCallException
+ */
+ public static function __callStatic($name, $arguments)
+ {
+ if ('nullOr' === \substr($name, 0, 6)) {
+ if (null !== $arguments[0]) {
+ $method = \lcfirst(\substr($name, 6));
+ \call_user_func_array(array('static', $method), $arguments);
+ }
+
+ return;
+ }
+
+ if ('all' === \substr($name, 0, 3)) {
+ static::isIterable($arguments[0]);
+
+ $method = \lcfirst(\substr($name, 3));
+ $args = $arguments;
+
+ foreach ($arguments[0] as $entry) {
+ $args[0] = $entry;
+
+ \call_user_func_array(array('static', $method), $args);
+ }
+
+ return;
+ }
+
+ throw new BadMethodCallException('No such method: '.$name);
+ }
+
+ /**
+ * @param mixed $value
+ *
+ * @return string
+ */
+ protected static function valueToString($value)
+ {
+ if (null === $value) {
+ return 'null';
+ }
+
+ if (true === $value) {
+ return 'true';
+ }
+
+ if (false === $value) {
+ return 'false';
+ }
+
+ if (\is_array($value)) {
+ return 'array';
+ }
+
+ if (\is_object($value)) {
+ if (\method_exists($value, '__toString')) {
+ return \get_class($value).': '.self::valueToString($value->__toString());
+ }
+
+ if ($value instanceof DateTime || $value instanceof DateTimeImmutable) {
+ return \get_class($value).': '.self::valueToString($value->format('c'));
+ }
+
+ return \get_class($value);
+ }
+
+ if (\is_resource($value)) {
+ return 'resource';
+ }
+
+ if (\is_string($value)) {
+ return '"'.$value.'"';
+ }
+
+ return (string) $value;
+ }
+
+ /**
+ * @param mixed $value
+ *
+ * @return string
+ */
+ protected static function typeToString($value)
+ {
+ return \is_object($value) ? \get_class($value) : \gettype($value);
+ }
+
+ protected static function strlen($value)
+ {
+ if (!\function_exists('mb_detect_encoding')) {
+ return \strlen($value);
+ }
+
+ if (false === $encoding = \mb_detect_encoding($value)) {
+ return \strlen($value);
+ }
+
+ return \mb_strlen($value, $encoding);
+ }
+
+ /**
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @psalm-pure this method is not supposed to perform side-effects
+ */
+ protected static function reportInvalidArgument($message)
+ {
+ throw new InvalidArgumentException($message);
+ }
+
+ private function __construct()
+ {
+ }
+}
diff --git a/vendor/webmozart/assert/src/InvalidArgumentException.php b/vendor/webmozart/assert/src/InvalidArgumentException.php
new file mode 100644
index 000000000..9d95a58c5
--- /dev/null
+++ b/vendor/webmozart/assert/src/InvalidArgumentException.php
@@ -0,0 +1,16 @@
+<?php
+
+/*
+ * This file is part of the webmozart/assert package.
+ *
+ * (c) Bernhard Schussek <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Webmozart\Assert;
+
+class InvalidArgumentException extends \InvalidArgumentException
+{
+}
diff --git a/vendor/webmozart/assert/src/Mixin.php b/vendor/webmozart/assert/src/Mixin.php
new file mode 100644
index 000000000..5e98823d4
--- /dev/null
+++ b/vendor/webmozart/assert/src/Mixin.php
@@ -0,0 +1,2916 @@
+<?php
+
+/**
+ * provides type inference and auto-completion for magic static methods of Assert.
+ */
+
+namespace Webmozart\Assert;
+
+use ArrayAccess;
+use Closure;
+use Countable;
+use Throwable;
+
+/**
+ * This trait aids static analysis tooling in introspecting assertion magic methods.
+ * Do not use this trait directly: it will change, and is not designed for reuse.
+ */
+trait Mixin
+{
+ /**
+ * @psalm-pure
+ * @psalm-assert string|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrString($value, $message = '')
+ {
+ static::__callStatic('nullOrString', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<string> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allString($value, $message = '')
+ {
+ static::__callStatic('allString', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert non-empty-string|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrStringNotEmpty($value, $message = '')
+ {
+ static::__callStatic('nullOrStringNotEmpty', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<non-empty-string> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allStringNotEmpty($value, $message = '')
+ {
+ static::__callStatic('allStringNotEmpty', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert int|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrInteger($value, $message = '')
+ {
+ static::__callStatic('nullOrInteger', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<int> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allInteger($value, $message = '')
+ {
+ static::__callStatic('allInteger', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert numeric|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIntegerish($value, $message = '')
+ {
+ static::__callStatic('nullOrIntegerish', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<numeric> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIntegerish($value, $message = '')
+ {
+ static::__callStatic('allIntegerish', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert positive-int|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrPositiveInteger($value, $message = '')
+ {
+ static::__callStatic('nullOrPositiveInteger', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<positive-int> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allPositiveInteger($value, $message = '')
+ {
+ static::__callStatic('allPositiveInteger', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert float|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrFloat($value, $message = '')
+ {
+ static::__callStatic('nullOrFloat', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<float> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allFloat($value, $message = '')
+ {
+ static::__callStatic('allFloat', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert numeric|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNumeric($value, $message = '')
+ {
+ static::__callStatic('nullOrNumeric', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<numeric> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNumeric($value, $message = '')
+ {
+ static::__callStatic('allNumeric', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert positive-int|0|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNatural($value, $message = '')
+ {
+ static::__callStatic('nullOrNatural', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<positive-int|0> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNatural($value, $message = '')
+ {
+ static::__callStatic('allNatural', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert bool|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrBoolean($value, $message = '')
+ {
+ static::__callStatic('nullOrBoolean', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<bool> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allBoolean($value, $message = '')
+ {
+ static::__callStatic('allBoolean', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert scalar|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrScalar($value, $message = '')
+ {
+ static::__callStatic('nullOrScalar', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<scalar> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allScalar($value, $message = '')
+ {
+ static::__callStatic('allScalar', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert object|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrObject($value, $message = '')
+ {
+ static::__callStatic('nullOrObject', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<object> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allObject($value, $message = '')
+ {
+ static::__callStatic('allObject', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert resource|null $value
+ *
+ * @param mixed $value
+ * @param string|null $type type of resource this should be. @see https://www.php.net/manual/en/function.get-resource-type.php
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrResource($value, $type = null, $message = '')
+ {
+ static::__callStatic('nullOrResource', array($value, $type, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<resource> $value
+ *
+ * @param mixed $value
+ * @param string|null $type type of resource this should be. @see https://www.php.net/manual/en/function.get-resource-type.php
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allResource($value, $type = null, $message = '')
+ {
+ static::__callStatic('allResource', array($value, $type, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert callable|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsCallable($value, $message = '')
+ {
+ static::__callStatic('nullOrIsCallable', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<callable> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsCallable($value, $message = '')
+ {
+ static::__callStatic('allIsCallable', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert array|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsArray($value, $message = '')
+ {
+ static::__callStatic('nullOrIsArray', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<array> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsArray($value, $message = '')
+ {
+ static::__callStatic('allIsArray', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable|null $value
+ *
+ * @deprecated use "isIterable" or "isInstanceOf" instead
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsTraversable($value, $message = '')
+ {
+ static::__callStatic('nullOrIsTraversable', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<iterable> $value
+ *
+ * @deprecated use "isIterable" or "isInstanceOf" instead
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsTraversable($value, $message = '')
+ {
+ static::__callStatic('allIsTraversable', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert array|ArrayAccess|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsArrayAccessible($value, $message = '')
+ {
+ static::__callStatic('nullOrIsArrayAccessible', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<array|ArrayAccess> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsArrayAccessible($value, $message = '')
+ {
+ static::__callStatic('allIsArrayAccessible', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert countable|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsCountable($value, $message = '')
+ {
+ static::__callStatic('nullOrIsCountable', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<countable> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsCountable($value, $message = '')
+ {
+ static::__callStatic('allIsCountable', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsIterable($value, $message = '')
+ {
+ static::__callStatic('nullOrIsIterable', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<iterable> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsIterable($value, $message = '')
+ {
+ static::__callStatic('allIsIterable', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ * @psalm-assert ExpectedType|null $value
+ *
+ * @param mixed $value
+ * @param string|object $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsInstanceOf($value, $class, $message = '')
+ {
+ static::__callStatic('nullOrIsInstanceOf', array($value, $class, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ * @psalm-assert iterable<ExpectedType> $value
+ *
+ * @param mixed $value
+ * @param string|object $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsInstanceOf($value, $class, $message = '')
+ {
+ static::__callStatic('allIsInstanceOf', array($value, $class, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ *
+ * @param mixed $value
+ * @param string|object $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNotInstanceOf($value, $class, $message = '')
+ {
+ static::__callStatic('nullOrNotInstanceOf', array($value, $class, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ *
+ * @param mixed $value
+ * @param string|object $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotInstanceOf($value, $class, $message = '')
+ {
+ static::__callStatic('allNotInstanceOf', array($value, $class, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param array<class-string> $classes
+ *
+ * @param mixed $value
+ * @param array<object|string> $classes
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsInstanceOfAny($value, $classes, $message = '')
+ {
+ static::__callStatic('nullOrIsInstanceOfAny', array($value, $classes, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param array<class-string> $classes
+ *
+ * @param mixed $value
+ * @param array<object|string> $classes
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsInstanceOfAny($value, $classes, $message = '')
+ {
+ static::__callStatic('allIsInstanceOfAny', array($value, $classes, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ * @psalm-assert ExpectedType|class-string<ExpectedType>|null $value
+ *
+ * @param object|string|null $value
+ * @param string $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsAOf($value, $class, $message = '')
+ {
+ static::__callStatic('nullOrIsAOf', array($value, $class, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ * @psalm-assert iterable<ExpectedType|class-string<ExpectedType>> $value
+ *
+ * @param iterable<object|string> $value
+ * @param string $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsAOf($value, $class, $message = '')
+ {
+ static::__callStatic('allIsAOf', array($value, $class, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template UnexpectedType of object
+ * @psalm-param class-string<UnexpectedType> $class
+ *
+ * @param object|string|null $value
+ * @param string $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsNotA($value, $class, $message = '')
+ {
+ static::__callStatic('nullOrIsNotA', array($value, $class, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template UnexpectedType of object
+ * @psalm-param class-string<UnexpectedType> $class
+ *
+ * @param iterable<object|string> $value
+ * @param string $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsNotA($value, $class, $message = '')
+ {
+ static::__callStatic('allIsNotA', array($value, $class, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param array<class-string> $classes
+ *
+ * @param object|string|null $value
+ * @param string[] $classes
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsAnyOf($value, $classes, $message = '')
+ {
+ static::__callStatic('nullOrIsAnyOf', array($value, $classes, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param array<class-string> $classes
+ *
+ * @param iterable<object|string> $value
+ * @param string[] $classes
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsAnyOf($value, $classes, $message = '')
+ {
+ static::__callStatic('allIsAnyOf', array($value, $classes, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert empty $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsEmpty($value, $message = '')
+ {
+ static::__callStatic('nullOrIsEmpty', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<empty> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsEmpty($value, $message = '')
+ {
+ static::__callStatic('allIsEmpty', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNotEmpty($value, $message = '')
+ {
+ static::__callStatic('nullOrNotEmpty', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotEmpty($value, $message = '')
+ {
+ static::__callStatic('allNotEmpty', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<null> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNull($value, $message = '')
+ {
+ static::__callStatic('allNull', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotNull($value, $message = '')
+ {
+ static::__callStatic('allNotNull', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert true|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrTrue($value, $message = '')
+ {
+ static::__callStatic('nullOrTrue', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<true> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allTrue($value, $message = '')
+ {
+ static::__callStatic('allTrue', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert false|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrFalse($value, $message = '')
+ {
+ static::__callStatic('nullOrFalse', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<false> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allFalse($value, $message = '')
+ {
+ static::__callStatic('allFalse', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNotFalse($value, $message = '')
+ {
+ static::__callStatic('nullOrNotFalse', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotFalse($value, $message = '')
+ {
+ static::__callStatic('allNotFalse', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIp($value, $message = '')
+ {
+ static::__callStatic('nullOrIp', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIp($value, $message = '')
+ {
+ static::__callStatic('allIp', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIpv4($value, $message = '')
+ {
+ static::__callStatic('nullOrIpv4', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIpv4($value, $message = '')
+ {
+ static::__callStatic('allIpv4', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIpv6($value, $message = '')
+ {
+ static::__callStatic('nullOrIpv6', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIpv6($value, $message = '')
+ {
+ static::__callStatic('allIpv6', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrEmail($value, $message = '')
+ {
+ static::__callStatic('nullOrEmail', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allEmail($value, $message = '')
+ {
+ static::__callStatic('allEmail', array($value, $message));
+ }
+
+ /**
+ * @param array|null $values
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrUniqueValues($values, $message = '')
+ {
+ static::__callStatic('nullOrUniqueValues', array($values, $message));
+ }
+
+ /**
+ * @param iterable<array> $values
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allUniqueValues($values, $message = '')
+ {
+ static::__callStatic('allUniqueValues', array($values, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrEq($value, $expect, $message = '')
+ {
+ static::__callStatic('nullOrEq', array($value, $expect, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allEq($value, $expect, $message = '')
+ {
+ static::__callStatic('allEq', array($value, $expect, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNotEq($value, $expect, $message = '')
+ {
+ static::__callStatic('nullOrNotEq', array($value, $expect, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotEq($value, $expect, $message = '')
+ {
+ static::__callStatic('allNotEq', array($value, $expect, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrSame($value, $expect, $message = '')
+ {
+ static::__callStatic('nullOrSame', array($value, $expect, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allSame($value, $expect, $message = '')
+ {
+ static::__callStatic('allSame', array($value, $expect, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNotSame($value, $expect, $message = '')
+ {
+ static::__callStatic('nullOrNotSame', array($value, $expect, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $expect
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotSame($value, $expect, $message = '')
+ {
+ static::__callStatic('allNotSame', array($value, $expect, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrGreaterThan($value, $limit, $message = '')
+ {
+ static::__callStatic('nullOrGreaterThan', array($value, $limit, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allGreaterThan($value, $limit, $message = '')
+ {
+ static::__callStatic('allGreaterThan', array($value, $limit, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrGreaterThanEq($value, $limit, $message = '')
+ {
+ static::__callStatic('nullOrGreaterThanEq', array($value, $limit, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allGreaterThanEq($value, $limit, $message = '')
+ {
+ static::__callStatic('allGreaterThanEq', array($value, $limit, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrLessThan($value, $limit, $message = '')
+ {
+ static::__callStatic('nullOrLessThan', array($value, $limit, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allLessThan($value, $limit, $message = '')
+ {
+ static::__callStatic('allLessThan', array($value, $limit, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrLessThanEq($value, $limit, $message = '')
+ {
+ static::__callStatic('nullOrLessThanEq', array($value, $limit, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $limit
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allLessThanEq($value, $limit, $message = '')
+ {
+ static::__callStatic('allLessThanEq', array($value, $limit, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $min
+ * @param mixed $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrRange($value, $min, $max, $message = '')
+ {
+ static::__callStatic('nullOrRange', array($value, $min, $max, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param mixed $min
+ * @param mixed $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allRange($value, $min, $max, $message = '')
+ {
+ static::__callStatic('allRange', array($value, $min, $max, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param array $values
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrOneOf($value, $values, $message = '')
+ {
+ static::__callStatic('nullOrOneOf', array($value, $values, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param array $values
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allOneOf($value, $values, $message = '')
+ {
+ static::__callStatic('allOneOf', array($value, $values, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param array $values
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrInArray($value, $values, $message = '')
+ {
+ static::__callStatic('nullOrInArray', array($value, $values, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param array $values
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allInArray($value, $values, $message = '')
+ {
+ static::__callStatic('allInArray', array($value, $values, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $subString
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrContains($value, $subString, $message = '')
+ {
+ static::__callStatic('nullOrContains', array($value, $subString, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $subString
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allContains($value, $subString, $message = '')
+ {
+ static::__callStatic('allContains', array($value, $subString, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $subString
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNotContains($value, $subString, $message = '')
+ {
+ static::__callStatic('nullOrNotContains', array($value, $subString, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $subString
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotContains($value, $subString, $message = '')
+ {
+ static::__callStatic('allNotContains', array($value, $subString, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNotWhitespaceOnly($value, $message = '')
+ {
+ static::__callStatic('nullOrNotWhitespaceOnly', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotWhitespaceOnly($value, $message = '')
+ {
+ static::__callStatic('allNotWhitespaceOnly', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $prefix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrStartsWith($value, $prefix, $message = '')
+ {
+ static::__callStatic('nullOrStartsWith', array($value, $prefix, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $prefix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allStartsWith($value, $prefix, $message = '')
+ {
+ static::__callStatic('allStartsWith', array($value, $prefix, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $prefix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNotStartsWith($value, $prefix, $message = '')
+ {
+ static::__callStatic('nullOrNotStartsWith', array($value, $prefix, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $prefix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotStartsWith($value, $prefix, $message = '')
+ {
+ static::__callStatic('allNotStartsWith', array($value, $prefix, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrStartsWithLetter($value, $message = '')
+ {
+ static::__callStatic('nullOrStartsWithLetter', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allStartsWithLetter($value, $message = '')
+ {
+ static::__callStatic('allStartsWithLetter', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $suffix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrEndsWith($value, $suffix, $message = '')
+ {
+ static::__callStatic('nullOrEndsWith', array($value, $suffix, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $suffix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allEndsWith($value, $suffix, $message = '')
+ {
+ static::__callStatic('allEndsWith', array($value, $suffix, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $suffix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNotEndsWith($value, $suffix, $message = '')
+ {
+ static::__callStatic('nullOrNotEndsWith', array($value, $suffix, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $suffix
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotEndsWith($value, $suffix, $message = '')
+ {
+ static::__callStatic('allNotEndsWith', array($value, $suffix, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $pattern
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrRegex($value, $pattern, $message = '')
+ {
+ static::__callStatic('nullOrRegex', array($value, $pattern, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $pattern
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allRegex($value, $pattern, $message = '')
+ {
+ static::__callStatic('allRegex', array($value, $pattern, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $pattern
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrNotRegex($value, $pattern, $message = '')
+ {
+ static::__callStatic('nullOrNotRegex', array($value, $pattern, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $pattern
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allNotRegex($value, $pattern, $message = '')
+ {
+ static::__callStatic('allNotRegex', array($value, $pattern, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrUnicodeLetters($value, $message = '')
+ {
+ static::__callStatic('nullOrUnicodeLetters', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allUnicodeLetters($value, $message = '')
+ {
+ static::__callStatic('allUnicodeLetters', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrAlpha($value, $message = '')
+ {
+ static::__callStatic('nullOrAlpha', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allAlpha($value, $message = '')
+ {
+ static::__callStatic('allAlpha', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrDigits($value, $message = '')
+ {
+ static::__callStatic('nullOrDigits', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allDigits($value, $message = '')
+ {
+ static::__callStatic('allDigits', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrAlnum($value, $message = '')
+ {
+ static::__callStatic('nullOrAlnum', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allAlnum($value, $message = '')
+ {
+ static::__callStatic('allAlnum', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert lowercase-string|null $value
+ *
+ * @param string|null $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrLower($value, $message = '')
+ {
+ static::__callStatic('nullOrLower', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<lowercase-string> $value
+ *
+ * @param iterable<string> $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allLower($value, $message = '')
+ {
+ static::__callStatic('allLower', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrUpper($value, $message = '')
+ {
+ static::__callStatic('nullOrUpper', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allUpper($value, $message = '')
+ {
+ static::__callStatic('allUpper', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param int $length
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrLength($value, $length, $message = '')
+ {
+ static::__callStatic('nullOrLength', array($value, $length, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param int $length
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allLength($value, $length, $message = '')
+ {
+ static::__callStatic('allLength', array($value, $length, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param int|float $min
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrMinLength($value, $min, $message = '')
+ {
+ static::__callStatic('nullOrMinLength', array($value, $min, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param int|float $min
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allMinLength($value, $min, $message = '')
+ {
+ static::__callStatic('allMinLength', array($value, $min, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrMaxLength($value, $max, $message = '')
+ {
+ static::__callStatic('nullOrMaxLength', array($value, $max, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allMaxLength($value, $max, $message = '')
+ {
+ static::__callStatic('allMaxLength', array($value, $max, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param int|float $min
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrLengthBetween($value, $min, $max, $message = '')
+ {
+ static::__callStatic('nullOrLengthBetween', array($value, $min, $max, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param int|float $min
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allLengthBetween($value, $min, $max, $message = '')
+ {
+ static::__callStatic('allLengthBetween', array($value, $min, $max, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrFileExists($value, $message = '')
+ {
+ static::__callStatic('nullOrFileExists', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allFileExists($value, $message = '')
+ {
+ static::__callStatic('allFileExists', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrFile($value, $message = '')
+ {
+ static::__callStatic('nullOrFile', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allFile($value, $message = '')
+ {
+ static::__callStatic('allFile', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrDirectory($value, $message = '')
+ {
+ static::__callStatic('nullOrDirectory', array($value, $message));
+ }
+
+ /**
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allDirectory($value, $message = '')
+ {
+ static::__callStatic('allDirectory', array($value, $message));
+ }
+
+ /**
+ * @param string|null $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrReadable($value, $message = '')
+ {
+ static::__callStatic('nullOrReadable', array($value, $message));
+ }
+
+ /**
+ * @param iterable<string> $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allReadable($value, $message = '')
+ {
+ static::__callStatic('allReadable', array($value, $message));
+ }
+
+ /**
+ * @param string|null $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrWritable($value, $message = '')
+ {
+ static::__callStatic('nullOrWritable', array($value, $message));
+ }
+
+ /**
+ * @param iterable<string> $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allWritable($value, $message = '')
+ {
+ static::__callStatic('allWritable', array($value, $message));
+ }
+
+ /**
+ * @psalm-assert class-string|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrClassExists($value, $message = '')
+ {
+ static::__callStatic('nullOrClassExists', array($value, $message));
+ }
+
+ /**
+ * @psalm-assert iterable<class-string> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allClassExists($value, $message = '')
+ {
+ static::__callStatic('allClassExists', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ * @psalm-assert class-string<ExpectedType>|ExpectedType|null $value
+ *
+ * @param mixed $value
+ * @param string|object $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrSubclassOf($value, $class, $message = '')
+ {
+ static::__callStatic('nullOrSubclassOf', array($value, $class, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $class
+ * @psalm-assert iterable<class-string<ExpectedType>|ExpectedType> $value
+ *
+ * @param mixed $value
+ * @param string|object $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allSubclassOf($value, $class, $message = '')
+ {
+ static::__callStatic('allSubclassOf', array($value, $class, $message));
+ }
+
+ /**
+ * @psalm-assert class-string|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrInterfaceExists($value, $message = '')
+ {
+ static::__callStatic('nullOrInterfaceExists', array($value, $message));
+ }
+
+ /**
+ * @psalm-assert iterable<class-string> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allInterfaceExists($value, $message = '')
+ {
+ static::__callStatic('allInterfaceExists', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $interface
+ * @psalm-assert class-string<ExpectedType>|null $value
+ *
+ * @param mixed $value
+ * @param mixed $interface
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrImplementsInterface($value, $interface, $message = '')
+ {
+ static::__callStatic('nullOrImplementsInterface', array($value, $interface, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template ExpectedType of object
+ * @psalm-param class-string<ExpectedType> $interface
+ * @psalm-assert iterable<class-string<ExpectedType>> $value
+ *
+ * @param mixed $value
+ * @param mixed $interface
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allImplementsInterface($value, $interface, $message = '')
+ {
+ static::__callStatic('allImplementsInterface', array($value, $interface, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param class-string|object|null $classOrObject
+ *
+ * @param string|object|null $classOrObject
+ * @param mixed $property
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrPropertyExists($classOrObject, $property, $message = '')
+ {
+ static::__callStatic('nullOrPropertyExists', array($classOrObject, $property, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param iterable<class-string|object> $classOrObject
+ *
+ * @param iterable<string|object> $classOrObject
+ * @param mixed $property
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allPropertyExists($classOrObject, $property, $message = '')
+ {
+ static::__callStatic('allPropertyExists', array($classOrObject, $property, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param class-string|object|null $classOrObject
+ *
+ * @param string|object|null $classOrObject
+ * @param mixed $property
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrPropertyNotExists($classOrObject, $property, $message = '')
+ {
+ static::__callStatic('nullOrPropertyNotExists', array($classOrObject, $property, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param iterable<class-string|object> $classOrObject
+ *
+ * @param iterable<string|object> $classOrObject
+ * @param mixed $property
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allPropertyNotExists($classOrObject, $property, $message = '')
+ {
+ static::__callStatic('allPropertyNotExists', array($classOrObject, $property, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param class-string|object|null $classOrObject
+ *
+ * @param string|object|null $classOrObject
+ * @param mixed $method
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrMethodExists($classOrObject, $method, $message = '')
+ {
+ static::__callStatic('nullOrMethodExists', array($classOrObject, $method, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param iterable<class-string|object> $classOrObject
+ *
+ * @param iterable<string|object> $classOrObject
+ * @param mixed $method
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allMethodExists($classOrObject, $method, $message = '')
+ {
+ static::__callStatic('allMethodExists', array($classOrObject, $method, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param class-string|object|null $classOrObject
+ *
+ * @param string|object|null $classOrObject
+ * @param mixed $method
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrMethodNotExists($classOrObject, $method, $message = '')
+ {
+ static::__callStatic('nullOrMethodNotExists', array($classOrObject, $method, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-param iterable<class-string|object> $classOrObject
+ *
+ * @param iterable<string|object> $classOrObject
+ * @param mixed $method
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allMethodNotExists($classOrObject, $method, $message = '')
+ {
+ static::__callStatic('allMethodNotExists', array($classOrObject, $method, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param array|null $array
+ * @param string|int $key
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrKeyExists($array, $key, $message = '')
+ {
+ static::__callStatic('nullOrKeyExists', array($array, $key, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<array> $array
+ * @param string|int $key
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allKeyExists($array, $key, $message = '')
+ {
+ static::__callStatic('allKeyExists', array($array, $key, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param array|null $array
+ * @param string|int $key
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrKeyNotExists($array, $key, $message = '')
+ {
+ static::__callStatic('nullOrKeyNotExists', array($array, $key, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<array> $array
+ * @param string|int $key
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allKeyNotExists($array, $key, $message = '')
+ {
+ static::__callStatic('allKeyNotExists', array($array, $key, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert array-key|null $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrValidArrayKey($value, $message = '')
+ {
+ static::__callStatic('nullOrValidArrayKey', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<array-key> $value
+ *
+ * @param mixed $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allValidArrayKey($value, $message = '')
+ {
+ static::__callStatic('allValidArrayKey', array($value, $message));
+ }
+
+ /**
+ * @param Countable|array|null $array
+ * @param int $number
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrCount($array, $number, $message = '')
+ {
+ static::__callStatic('nullOrCount', array($array, $number, $message));
+ }
+
+ /**
+ * @param iterable<Countable|array> $array
+ * @param int $number
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allCount($array, $number, $message = '')
+ {
+ static::__callStatic('allCount', array($array, $number, $message));
+ }
+
+ /**
+ * @param Countable|array|null $array
+ * @param int|float $min
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrMinCount($array, $min, $message = '')
+ {
+ static::__callStatic('nullOrMinCount', array($array, $min, $message));
+ }
+
+ /**
+ * @param iterable<Countable|array> $array
+ * @param int|float $min
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allMinCount($array, $min, $message = '')
+ {
+ static::__callStatic('allMinCount', array($array, $min, $message));
+ }
+
+ /**
+ * @param Countable|array|null $array
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrMaxCount($array, $max, $message = '')
+ {
+ static::__callStatic('nullOrMaxCount', array($array, $max, $message));
+ }
+
+ /**
+ * @param iterable<Countable|array> $array
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allMaxCount($array, $max, $message = '')
+ {
+ static::__callStatic('allMaxCount', array($array, $max, $message));
+ }
+
+ /**
+ * @param Countable|array|null $array
+ * @param int|float $min
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrCountBetween($array, $min, $max, $message = '')
+ {
+ static::__callStatic('nullOrCountBetween', array($array, $min, $max, $message));
+ }
+
+ /**
+ * @param iterable<Countable|array> $array
+ * @param int|float $min
+ * @param int|float $max
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allCountBetween($array, $min, $max, $message = '')
+ {
+ static::__callStatic('allCountBetween', array($array, $min, $max, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert list|null $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsList($array, $message = '')
+ {
+ static::__callStatic('nullOrIsList', array($array, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<list> $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsList($array, $message = '')
+ {
+ static::__callStatic('allIsList', array($array, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert non-empty-list|null $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsNonEmptyList($array, $message = '')
+ {
+ static::__callStatic('nullOrIsNonEmptyList', array($array, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-assert iterable<non-empty-list> $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsNonEmptyList($array, $message = '')
+ {
+ static::__callStatic('allIsNonEmptyList', array($array, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template T
+ * @psalm-param mixed|array<T>|null $array
+ * @psalm-assert array<string, T>|null $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsMap($array, $message = '')
+ {
+ static::__callStatic('nullOrIsMap', array($array, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template T
+ * @psalm-param iterable<mixed|array<T>> $array
+ * @psalm-assert iterable<array<string, T>> $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsMap($array, $message = '')
+ {
+ static::__callStatic('allIsMap', array($array, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template T
+ * @psalm-param mixed|array<T>|null $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrIsNonEmptyMap($array, $message = '')
+ {
+ static::__callStatic('nullOrIsNonEmptyMap', array($array, $message));
+ }
+
+ /**
+ * @psalm-pure
+ * @psalm-template T
+ * @psalm-param iterable<mixed|array<T>> $array
+ *
+ * @param mixed $array
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allIsNonEmptyMap($array, $message = '')
+ {
+ static::__callStatic('allIsNonEmptyMap', array($array, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param string|null $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrUuid($value, $message = '')
+ {
+ static::__callStatic('nullOrUuid', array($value, $message));
+ }
+
+ /**
+ * @psalm-pure
+ *
+ * @param iterable<string> $value
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allUuid($value, $message = '')
+ {
+ static::__callStatic('allUuid', array($value, $message));
+ }
+
+ /**
+ * @psalm-param class-string<Throwable> $class
+ *
+ * @param Closure|null $expression
+ * @param string $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function nullOrThrows($expression, $class = 'Exception', $message = '')
+ {
+ static::__callStatic('nullOrThrows', array($expression, $class, $message));
+ }
+
+ /**
+ * @psalm-param class-string<Throwable> $class
+ *
+ * @param iterable<Closure> $expression
+ * @param string $class
+ * @param string $message
+ *
+ * @throws InvalidArgumentException
+ *
+ * @return void
+ */
+ public static function allThrows($expression, $class = 'Exception', $message = '')
+ {
+ static::__callStatic('allThrows', array($expression, $class, $message));
+ }
+}